xbintsc 0.1.0
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/LICENSE +21 -0
- package/README.md +191 -0
- package/bin/xbintsc.js +26 -0
- package/dist/src/ast/factory.d.ts +11 -0
- package/dist/src/ast/factory.js +36 -0
- package/dist/src/ast/factory.js.map +1 -0
- package/dist/src/ast/nodes.d.ts +848 -0
- package/dist/src/ast/nodes.js +247 -0
- package/dist/src/ast/nodes.js.map +1 -0
- package/dist/src/ast/visitor.d.ts +18 -0
- package/dist/src/ast/visitor.js +52 -0
- package/dist/src/ast/visitor.js.map +1 -0
- package/dist/src/binder/binder.d.ts +82 -0
- package/dist/src/binder/binder.js +443 -0
- package/dist/src/binder/binder.js.map +1 -0
- package/dist/src/cli/main.d.ts +16 -0
- package/dist/src/cli/main.js +191 -0
- package/dist/src/cli/main.js.map +1 -0
- package/dist/src/codegen/llvm.d.ts +31 -0
- package/dist/src/codegen/llvm.js +1178 -0
- package/dist/src/codegen/llvm.js.map +1 -0
- package/dist/src/codegen/values.d.ts +23 -0
- package/dist/src/codegen/values.js +32 -0
- package/dist/src/codegen/values.js.map +1 -0
- package/dist/src/diagnostics/diagnostic.d.ts +69 -0
- package/dist/src/diagnostics/diagnostic.js +104 -0
- package/dist/src/diagnostics/diagnostic.js.map +1 -0
- package/dist/src/diagnostics/source.d.ts +43 -0
- package/dist/src/diagnostics/source.js +73 -0
- package/dist/src/diagnostics/source.js.map +1 -0
- package/dist/src/driver/cache.d.ts +37 -0
- package/dist/src/driver/cache.js +82 -0
- package/dist/src/driver/cache.js.map +1 -0
- package/dist/src/driver/compiler.d.ts +41 -0
- package/dist/src/driver/compiler.js +128 -0
- package/dist/src/driver/compiler.js.map +1 -0
- package/dist/src/driver/index.d.ts +4 -0
- package/dist/src/driver/index.js +5 -0
- package/dist/src/driver/index.js.map +1 -0
- package/dist/src/driver/paths.d.ts +4 -0
- package/dist/src/driver/paths.js +22 -0
- package/dist/src/driver/paths.js.map +1 -0
- package/dist/src/driver/toolchain.d.ts +43 -0
- package/dist/src/driver/toolchain.js +76 -0
- package/dist/src/driver/toolchain.js.map +1 -0
- package/dist/src/extensions/node.d.ts +9 -0
- package/dist/src/extensions/node.js +20 -0
- package/dist/src/extensions/node.js.map +1 -0
- package/dist/src/extensions/registry.d.ts +45 -0
- package/dist/src/extensions/registry.js +76 -0
- package/dist/src/extensions/registry.js.map +1 -0
- package/dist/src/index.d.ts +18 -0
- package/dist/src/index.js +19 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lexer/scanner.d.ts +48 -0
- package/dist/src/lexer/scanner.js +650 -0
- package/dist/src/lexer/scanner.js.map +1 -0
- package/dist/src/lexer/token.d.ts +170 -0
- package/dist/src/lexer/token.js +250 -0
- package/dist/src/lexer/token.js.map +1 -0
- package/dist/src/parser/parser.d.ts +127 -0
- package/dist/src/parser/parser.js +2334 -0
- package/dist/src/parser/parser.js.map +1 -0
- package/dist/tests/binder/binder.test.d.ts +1 -0
- package/dist/tests/binder/binder.test.js +89 -0
- package/dist/tests/binder/binder.test.js.map +1 -0
- package/dist/tests/cli/main.test.d.ts +1 -0
- package/dist/tests/cli/main.test.js +68 -0
- package/dist/tests/cli/main.test.js.map +1 -0
- package/dist/tests/cli/process.test.d.ts +9 -0
- package/dist/tests/cli/process.test.js +57 -0
- package/dist/tests/cli/process.test.js.map +1 -0
- package/dist/tests/codegen/llvm.test.d.ts +1 -0
- package/dist/tests/codegen/llvm.test.js +93 -0
- package/dist/tests/codegen/llvm.test.js.map +1 -0
- package/dist/tests/driver/cache.test.d.ts +1 -0
- package/dist/tests/driver/cache.test.js +66 -0
- package/dist/tests/driver/cache.test.js.map +1 -0
- package/dist/tests/driver/compiler.test.d.ts +1 -0
- package/dist/tests/driver/compiler.test.js +80 -0
- package/dist/tests/driver/compiler.test.js.map +1 -0
- package/dist/tests/driver/toolchain.test.d.ts +1 -0
- package/dist/tests/driver/toolchain.test.js +60 -0
- package/dist/tests/driver/toolchain.test.js.map +1 -0
- package/dist/tests/e2e/compile.test.d.ts +5 -0
- package/dist/tests/e2e/compile.test.js +93 -0
- package/dist/tests/e2e/compile.test.js.map +1 -0
- package/dist/tests/extensions/registry.test.d.ts +1 -0
- package/dist/tests/extensions/registry.test.js +47 -0
- package/dist/tests/extensions/registry.test.js.map +1 -0
- package/dist/tests/helpers.d.ts +23 -0
- package/dist/tests/helpers.js +41 -0
- package/dist/tests/helpers.js.map +1 -0
- package/dist/tests/lexer/scanner.test.d.ts +1 -0
- package/dist/tests/lexer/scanner.test.js +95 -0
- package/dist/tests/lexer/scanner.test.js.map +1 -0
- package/dist/tests/parser/parser.test.d.ts +1 -0
- package/dist/tests/parser/parser.test.js +137 -0
- package/dist/tests/parser/parser.test.js.map +1 -0
- package/package.json +49 -0
- package/runtime/ext_node.c +42 -0
- package/runtime/rt.h +177 -0
- package/runtime/xt_runtime.c +682 -0
- package/scripts/build-runtime.mjs +34 -0
- package/src/ast/factory.ts +37 -0
- package/src/ast/nodes.ts +1111 -0
- package/src/ast/visitor.ts +60 -0
- package/src/binder/binder.ts +549 -0
- package/src/cli/main.ts +210 -0
- package/src/codegen/llvm.ts +1324 -0
- package/src/codegen/values.ts +36 -0
- package/src/diagnostics/diagnostic.ts +132 -0
- package/src/diagnostics/source.ts +97 -0
- package/src/driver/cache.ts +96 -0
- package/src/driver/compiler.ts +197 -0
- package/src/driver/index.ts +4 -0
- package/src/driver/paths.ts +24 -0
- package/src/driver/toolchain.ts +103 -0
- package/src/extensions/node.ts +23 -0
- package/src/extensions/registry.ts +101 -0
- package/src/index.ts +33 -0
- package/src/lexer/scanner.ts +650 -0
- package/src/lexer/token.ts +266 -0
- package/src/parser/parser.ts +2396 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/parser/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAS,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,UAAU,EACV,YAAY,GAiEb,MAAM,iBAAiB,CAAC;AAEzB;;;;;;GAMG;AACH,MAAM,OAAO,MAAM;IACA,OAAO,CAAU;IACjB,WAAW,CAAgB;IAC3B,MAAM,CAAa;IAC5B,MAAM,CAAU;IAChB,KAAK,GAAG,CAAC,CAAC;IAClB,+EAA+E;IACvE,WAAW,GAAG,CAAC,CAAC;IACxB,2EAA2E;IACnE,QAAQ,GAAG,CAAC,CAAC;IAErB,YAAY,MAAkB,EAAE,WAA0B;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,4EAA4E;IAE5E,IAAY,KAAK;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACK,EAAE,CAAC,IAAe;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC,IAAI,KAAK,IAAI,CAAC;IAChD,CAAC;IAEO,OAAO,CAAC,CAAS,EAAE,IAAe;QACxC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;IACzC,CAAC;IAEO,SAAS,CAAC,CAAS;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC;IACtC,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,aAAa,CAAC,IAAe,EAAE,OAAgB;QACrD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,CACR,cAAc,CAAC,aAAa,EAC5B,OAAO,IAAI,aAAa,IAAI,gBAAgB,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EACjF,IAAI,CAAC,KAAK,CACX,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,IAAoB,EAAE,OAAe,EAAE,QAAe,IAAI,CAAC,KAAK;QAC5E,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpG,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC;YAAE,MAAM,IAAI,gBAAgB,EAAE,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACK,QAAQ,CAAI,EAAW;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,MAAqB,CAAC;QAC1B,IAAI,EAAE,GAAG,KAAK,CAAC;QACf,IAAI,CAAC;YACH,MAAM,GAAG,EAAE,EAAE,CAAC;YACd,EAAE,GAAG,IAAI,CAAC;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,gBAAgB,CAAC;gBAAE,MAAM,KAAK,CAAC;QACxD,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,gBAAgB,CAAC,KAAY;QACnC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QACrD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,SAAS,CAAC;YACzB,KAAK,SAAS,CAAC,gBAAgB,CAAC;YAChC,KAAK,SAAS,CAAC,WAAW,CAAC;YAC3B,KAAK,SAAS,CAAC,WAAW,CAAC;YAC3B,KAAK,SAAS,CAAC,UAAU,CAAC;YAC1B,KAAK,SAAS,CAAC,UAAU,CAAC;YAC1B,KAAK,SAAS,CAAC,YAAY;gBACzB,OAAO,IAAI,CAAC;YACd;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,aAAa,GAAG,KAAK;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC3F,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QAC/F,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,kBAAkB,EAAE,kCAAkC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QAC7G,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACzD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAC5G,CAAC;IAEO,mBAAmB;QACzB,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAAE,OAAO;QACtC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC;IAEO,kBAAkB;QACxB,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;IACzG,CAAC;IAEO,kBAAkB,CAAI,KAAgB,EAAE,YAAqB;QACnE,MAAM,KAAK,GAAQ,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YAClE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAC1C,MAAM;YACX,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4EAA4E;IAE5E,eAAe;QACb,MAAM,UAAU,GAAgB,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACxC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACxC,IAAI,SAAS;gBAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;gBAC7B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,qBAAqB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChG,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,UAAU;YAC3B,UAAU;YACV,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;SAC7B,CAAC;IACJ,CAAC;IAED,4EAA4E;IAEpE,iBAAiB;QACvB,MAAM,SAAS,GAAe,EAAE,CAAC;QACjC,SAAS,CAAC;YACR,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC7B,IAAI,YAAsC,CAAC;YAC3C,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,SAAS,CAAC,aAAa;oBAC1B,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;oBACnC,MAAM;gBACR,KAAK,SAAS,CAAC,cAAc;oBAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;wBAC1F,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC;oBACtC,CAAC;oBACD,MAAM;gBACR,KAAK,SAAS,CAAC,cAAc;oBAC3B,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC;oBACpC,MAAM;gBACR,KAAK,SAAS,CAAC,eAAe;oBAC5B,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC;oBACrC,MAAM;gBACR,KAAK,SAAS,CAAC,aAAa;oBAC1B,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;oBACnC,MAAM;gBACR,KAAK,SAAS,CAAC,cAAc;oBAC3B,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC;oBACpC,MAAM;gBACR,KAAK,SAAS,CAAC,gBAAgB;oBAC7B,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC;oBACtC,MAAM;gBACR,KAAK,SAAS,CAAC,aAAa;oBAC1B,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;oBACnC,MAAM;gBACR,KAAK,SAAS,CAAC,eAAe;oBAC5B,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC;oBACrC,MAAM;gBACR,KAAK,SAAS,CAAC,YAAY;oBACzB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,mBAAmB;wBAAE,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC;oBAC9E,MAAM;gBACR;oBACE,MAAM;YACV,CAAC;YACD,IAAI,CAAC,YAAY;gBAAE,MAAM;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,WAAW,CAAC,SAA8B,EAAE,IAAkB;QACpE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,4EAA4E;IAEpE,cAAc;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,SAAS;gBACtB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3B,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzB,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC3B,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAe,CAAC;YACtF,CAAC;YACD,KAAK,SAAS,CAAC,UAAU,CAAC;YAC1B,KAAK,SAAS,CAAC,UAAU,CAAC;YAC1B,KAAK,SAAS,CAAC,YAAY;gBACzB,OAAO,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACzC,KAAK,SAAS,CAAC,eAAe;gBAC5B,OAAO,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;YAC3C,KAAK,SAAS,CAAC,YAAY;gBACzB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC;oBACzF,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC1C,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;gBACjD,CAAC;gBACD,MAAM;YACR,KAAK,SAAS,CAAC,YAAY;gBACzB,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;YACxC,KAAK,SAAS,CAAC,SAAS;gBACtB,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjC,KAAK,SAAS,CAAC,YAAY;gBACzB,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACpC,KAAK,SAAS,CAAC,SAAS;gBACtB,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjC,KAAK,SAAS,CAAC,UAAU;gBACvB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAClC,KAAK,SAAS,CAAC,aAAa;gBAC1B,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACrC,KAAK,SAAS,CAAC,YAAY;gBACzB,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACpC,KAAK,SAAS,CAAC,eAAe;gBAC5B,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACvC,KAAK,SAAS,CAAC,YAAY;gBACzB,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACpC,KAAK,SAAS,CAAC,UAAU;gBACvB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAClC,KAAK,SAAS,CAAC,aAAa;gBAC1B,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACrC,KAAK,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAe,CAAC;YACzF,CAAC;YACD,KAAK,SAAS,CAAC,aAAa;gBAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC;oBAAE,MAAM;gBAClF,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACvC,KAAK,SAAS,CAAC,aAAa;gBAC1B,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACvC,KAAK,SAAS,CAAC,gBAAgB;gBAC7B,OAAO,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;YAC5C,KAAK,SAAS,CAAC,WAAW;gBACxB,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;gBACxF,MAAM;YACR,KAAK,SAAS,CAAC,WAAW;gBACxB,OAAO,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;YACvC,KAAK,SAAS,CAAC,gBAAgB,CAAC;YAChC,KAAK,SAAS,CAAC,aAAa;gBAC1B,OAAO,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACzC,KAAK,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAC;YACrD,CAAC;YACD;gBACE,MAAM;QACV,CAAC;QACD,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACzC,CAAC;IAEO,2BAA2B,CAAC,SAAqB;QACvD,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACxB,KAAK,SAAS,CAAC,eAAe;gBAC5B,OAAO,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;YAClD,KAAK,SAAS,CAAC,YAAY;gBACzB,OAAO,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;YAC/C,KAAK,SAAS,CAAC,gBAAgB;gBAC7B,OAAO,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;YACnD,KAAK,SAAS,CAAC,WAAW;gBACxB,OAAO,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;YACnD,KAAK,SAAS,CAAC,WAAW;gBACxB,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAC9C,KAAK,SAAS,CAAC,gBAAgB,CAAC;YAChC,KAAK,SAAS,CAAC,aAAa;gBAC1B,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;YAChD;gBACE,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,UAAU,GAAgB,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACxC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAChC,IAAI,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;gBAC7B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,qBAAqB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChG,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACnF,CAAC;IAEO,sBAAsB,CAAC,SAAqB;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACrD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;IAChI,CAAC;IAEO,4BAA4B;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACjC,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAClI,MAAM,YAAY,GAA0B,EAAE,CAAC;QAC/C,GAAG,CAAC;YACF,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;QACrD,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;QACvD,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,uBAAuB;YACxC,YAAY;YACZ,eAAe;YACf,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,EAAE,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG;SAC/D,CAAC;IACJ,CAAC;IAEO,wBAAwB;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACpC,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,IAA0B,CAAC;QAC/B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,WAAmC,CAAC;QACxC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,WAAW,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjD,CAAC;QACD,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,mBAAmB;YACpC,IAAI;YACJ,WAAW;YACX,IAAI;YACJ,WAAW;YACX,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG;SAC/C,CAAC;IACJ,CAAC;IAEO,gBAAgB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAG,CAAC;QAC7C,IAAI,aAAoC,CAAC;QACzC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACxC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC;IACxI,CAAC;IAEO,mBAAmB;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;QAC/D,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAG,CAAC;QACzC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAe,CAAC;IAC3G,CAAC;IAEO,gBAAgB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAG,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAe,CAAC;IACpG,CAAC;IAEO,iBAAiB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QAC7D,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAExC,IAAI,WAA6D,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;gBACtG,WAAW,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACpD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAG,CAAC;YACzC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,WAAW,EAAE,WAAY,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC;QACzI,CAAC;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAG,CAAC;YACzC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,WAAW,EAAE,WAAY,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC;QAC1H,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,SAAiC,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;YAAE,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACtE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,WAAmC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC;YAAE,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACzE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAG,CAAC;QACzC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC;IACtH,CAAC;IAEO,oBAAoB;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;QAChE,IAAI,UAAkC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAAE,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,KAAK,GAAG,CAAC,EAAe,CAAC;IACjH,CAAC;IAEO,mBAAmB;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;QAC/D,IAAI,KAA6B,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;YAAE,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAChG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,KAAK,GAAG,CAAC,EAAe,CAAC;IACtG,CAAC;IAEO,sBAAsB;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC;QAClE,IAAI,KAA6B,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;YAAE,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAChG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,KAAK,GAAG,CAAC,EAAe,CAAC;IACzG,CAAC;IAEO,mBAAmB;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAe,CAAC;IAClG,CAAC;IAEO,iBAAiB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,WAAoC,CAAC;QACzC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;YAC1C,IAAI,QAAgC,CAAC;YACrC,IAAI,IAA0B,CAAC;YAC/B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBAClC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC1B,CAAC;gBACD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,WAAW,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3G,CAAC;QACD,IAAI,YAA+B,CAAC;QACpC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,IAAI,WAAW,EAAE,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;IACnJ,CAAC;IAEO,oBAAoB;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;QAChE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,OAAO,GAAmC,EAAE,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;gBACzC,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC9C,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACpC,MAAM,UAAU,GAAgB,EAAE,CAAC;gBACnC,OACE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC;oBAC/B,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC;oBAClC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC;oBAC9B,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAC7B,CAAC;oBACD,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;oBAChC,IAAI,CAAC;wBAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC5B,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7K,CAAC;iBAAM,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;gBAC5C,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACpC,MAAM,UAAU,GAAgB,EAAE,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC1G,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;oBAChC,IAAI,CAAC;wBAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC5B,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC,CAAC;YACjJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,qBAAqB,IAAI,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;gBACnG,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAC1F,CAAC;IAEO,wBAAwB;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;IAC5G,CAAC;IAED,4EAA4E;IAEpE,wBAAwB,CAAC,SAAqB;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC;QAClE,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,KAAK,IAAI,SAAS,CAAC,SAAS,CAAC;QAC/B,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC;YAAE,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC;QAC9E,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC;YAAE,KAAK,IAAI,SAAS,CAAC,OAAO,CAAC;QAClF,IAAI,IAA4B,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACjG,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,IAAI,UAAgC,CAAC;QACrC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,IAAuB,CAAC;QAC5B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;;YACtD,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,mBAAmB;YACpC,IAAI;YACJ,SAAS;YACT,cAAc;YACd,UAAU;YACV,UAAU;YACV,IAAI;YACJ,KAAK;YACL,KAAK;YACL,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU,EAAE,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,KAAK;SACrF,CAAC;IACJ,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,MAAM,GAA+B,EAAE,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACpC,IAAI,UAAgC,CAAC;YACrC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,CAAC;YACD,IAAI,WAAiC,CAAC;YACtC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,UAAU,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5K,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAC1C,MAAM;QACb,CAAC;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4EAA4E;IACpE,gBAAgB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,sBAAsB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,iCAAiC,EAAE,CAAC;YAClH,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;gBACxB,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,sBAAsB;gBAC5E,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC;gBACtB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzB,mBAAmB,EAAE,KAAK;aAC3B,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3C,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,cAAc,GAAG,IAAI,CAAC;YACxB,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACpC,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,aAAa,GAAG,IAAI,CAAC;YACvB,CAAC;YACD,IAAI,IAA0B,CAAC;YAC/B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1B,CAAC;YACD,IAAI,WAAmC,CAAC;YACxC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,WAAW,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjD,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACtK,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAC1C,MAAM;QACb,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;YACrC,IAAI,SAAiC,CAAC;YACtC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC;gBAAE,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAChH,IAAI,aAAmC,CAAC;YACxC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,CAAC;YACD,MAAM,IAAI,GAAe,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC;YAC1J,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC;QAC/H,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACvC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC;QAC3I,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAEO,qBAAqB,CAAC,SAAqB;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;QAC/D,IAAI,IAA4B,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACjH,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAChC,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC;IAC1J,CAAC;IAEO,oBAAoB;QAC1B,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACjF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,MAAM,SAAS,GAA6B,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;YAC/G,MAAM,KAAK,GAAkC,EAAE,CAAC;YAChD,GAAG,CAAC;gBACF,MAAM,UAAU,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACtD,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,2BAA2B,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;YACxL,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACvD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACjJ,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACxC,IAAI,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,iBAAiB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,IAAI,IAAuB,CAAC;YAC5B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;gBAAE,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;;gBACtD,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,IAAI,GAA2B,EAAE,IAAI,EAAE,UAAU,CAAC,sBAAsB,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACjJ,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,KAAK,IAAI,SAAS,CAAC,SAAS,CAAC;QAC/B,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC;YAAE,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC;QAC9E,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACtC,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,gBAAgB,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,IAAI,UAAgC,CAAC;YACrC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACtC,CAAC;YACD,IAAI,IAAuB,CAAC;YAC5B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;gBAAE,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;;gBACtD,IAAI,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAsB;gBAChC,IAAI,EAAE,UAAU,CAAC,iBAAiB;gBAClC,IAAI;gBACJ,SAAS;gBACT,cAAc;gBACd,UAAU;gBACV,UAAU;gBACV,IAAI;gBACJ,KAAK;gBACL,QAAQ,EAAE,aAAa;gBACvB,KAAK;gBACL,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG;aAC9C,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,IAA0B,CAAC;QAC/B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,WAAmC,CAAC;QACxC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,WAAW,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAwB;YACpC,IAAI,EAAE,UAAU,CAAC,mBAAmB;YACpC,IAAI;YACJ,SAAS;YACT,aAAa;YACb,gBAAgB;YAChB,IAAI;YACJ,WAAW;YACX,KAAK;YACL,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG;SAC/C,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,iBAAiB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,aAAa,EAAE,CAAC;YAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QACrJ,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,cAAc,EAAE,CAAC;YAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QACpI,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAC9C,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,iBAAiB,EAAE,sDAAsD,CAAC,CAAC;YACrG,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/F,CAAC;QACD,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACpC,CAAC;IAEO,yBAAyB,CAAC,SAAqB;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,oBAAoB,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACjK,CAAC;IAEO,yBAAyB,CAAC,SAAqB;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,oBAAoB,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IAChH,CAAC;IAEO,oBAAoB,CAAC,SAAqB;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACpC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5C,IAAI,WAAmC,CAAC;YACxC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,WAAW,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;YAC/I,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAC1C,MAAM;QACb,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAC/F,CAAC;IAEO,sBAAsB,CAAC,SAAqB;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;QACrC,IAAI,IAAgC,CAAC;QACrC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,IAAI,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QACrJ,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,IAAuB,CAAC;QAC5B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;;YACtD,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1G,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACtC,IAAI,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,eAAe;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACzD,IAAI,aAAa;YAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChE,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,IAAI,UAAgC,CAAC;YACrC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,CAAC;YACD,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAe,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;YAC5F,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC;QACxJ,CAAC;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACtC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,UAAU,GAAgB,EAAE,CAAC;YACnC,IAAI,EAAE,GAAG,IAAI,CAAC;YACd,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzC,IAAI,IAA0B,CAAC;gBAC/B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC1B,CAAC;;oBAAM,EAAE,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;gBAC3C,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;YAC9L,CAAC;YAAC,MAAM,CAAC;gBACP,EAAE,GAAG,KAAK,CAAC;YACb,CAAC;YACD,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;YACrF,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACtC,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,IAAI,UAAgC,CAAC;YACrC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,CAAC;YACD,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAoB,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACxK,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,IAA0B,CAAC;QAC/B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAsB,EAAE,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACzJ,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,qBAAqB;QAC3B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IACjF,CAAC;IAED,4EAA4E;IAEpE,sBAAsB;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;QAChE,IAAI,YAAsC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACrC,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC;gBAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC;oBACzG,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,UAAU,GAAG,IAAI,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,IAAI,IAA4B,CAAC;YACjC,IAAI,aAAyD,CAAC;YAC9D,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAClC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;YACjD,CAAC;YACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBACxC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBACtC,aAAa,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;YAC3G,CAAC;iBAAM,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxC,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3C,CAAC;YACD,YAAY,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,WAAW,EAAE,CAAC;QAC7J,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAChE,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,UAAU,GAAsC,EAAE,CAAC;QACzD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;YACtG,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvE,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACrC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACpC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBAC/D,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBACxF,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;oBAC1C,MAAM;YACb,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,eAAe,CAAC,GAAG,EAAE,CAAC;IAC5H,CAAC;IAEO,iBAAiB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAsB,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACnC,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzC,IAAI,YAAoC,CAAC;YACzC,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,YAAY,GAAG,KAAK,CAAC;gBACrB,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACpC,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACrH,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAC1C,MAAM;QACb,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACxF,CAAC;IAEO,sBAAsB;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;QAChE,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,MAAM,UAAU,GAAqB,EAAE,IAAI,EAAE,UAAU,CAAC,gBAAgB,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;YACzI,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACjH,OAAO,IAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5I,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACpD,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,MAAM,UAAU,GAAqB,EAAE,IAAI,EAAE,UAAU,CAAC,gBAAgB,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;YAC1I,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,MAA8B,CAAC;YACnC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACtC,CAAC;YACD,IAAI,eAA0C,CAAC;YAC/C,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAClE,CAAC;YACD,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,MAAM,IAAI,GAAsB;gBAC9B,IAAI,EAAE,UAAU,CAAC,iBAAiB;gBAClC,SAAS,EAAE,EAAE;gBACb,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;gBAC3H,eAAe;gBACf,UAAU,EAAE,KAAK;gBACjB,KAAK;gBACL,GAAG,EAAE,eAAe,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,IAAI,KAAK;aAClD,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC9C,IAAI,eAA0C,CAAC;YAC/C,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC;oBAAE,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACxG,CAAC;YACD,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,MAAM,IAAI,GAAsB,EAAE,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,CAAC;YAC5M,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3C,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9G,OAAO,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;IAEO,iBAAiB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAsB,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACnC,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzC,IAAI,YAAoC,CAAC;YACzC,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,YAAY,GAAG,KAAK,CAAC;gBACrB,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACpC,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACrH,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAC1C,MAAM;QACb,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACxF,CAAC;IAEO,sBAAsB,CAAC,KAAY;QACzC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACrJ,CAAC;IAED,4EAA4E;IAEpE,SAAS;QACf,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjH,CAAC;IAEO,YAAY,CAAC,KAAwE;QAC3F,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,4EAA4E;IAE5E,eAAe,CAAC,IAAI,GAAG,KAAK;QAC1B,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEO,yBAAyB,CAAC,IAAI,GAAG,KAAK;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3C,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QAExB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,uBAAuB,EAAE,2BAA2B,EAAE,KAAK,CAAC,CAAC;YACzF,CAAC;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG;gBACjB,IAAI,EAAE,UAAU,CAAC,gBAAgB;gBACjC,IAAI;gBACJ,QAAQ,EAAE,EAAE;gBACZ,KAAK;gBACL,aAAa,EAAE,KAAK;gBACpB,KAAK;gBACL,GAAG,EAAE,KAAK,CAAC,GAAG;aACgB,CAAC;YACjC,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,qBAAqB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC;YAC9E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;gBAAE,KAAK,GAAG,IAAI,CAAC;QACrF,CAAC;QACD,IAAI,KAAK;YAAE,MAAM,GAAG,CAAC,CAAC;QACtB,MAAM,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,eAAe,IAAI,CAAC;YAAE,MAAM,GAAG,eAAe,CAAC;QAEnD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,UAAU,GAAG,CAAC;gBAAE,OAAO,SAAS,CAAC;YACrC,IAAI,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;gBACxD,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;gBACjD,IAAI,UAAU,GAAG,CAAC;oBAAE,OAAO,SAAS,CAAC;YACvC,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,iBAAiB;gBAAE,OAAO,SAAS,CAAC;QACxF,CAAC;aAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,iBAAiB;gBAAE,OAAO,SAAS,CAAC;QACxF,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC;QAC3B,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,IAAI,UAAuB,CAAC;QAC5B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACxC,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACpJ,CAAC;QACD,IAAI,UAAgC,CAAC;QACrC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAChD,MAAM,IAAI,GAAuB,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACrH,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACnI,CAAC;IAEO,wBAAwB,CAAC,MAAc;QAC7C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ;YAAE,OAAO,CAAC,CAAC,CAAC;QAClE,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,MAAM,GAAI,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ;gBAAE,KAAK,EAAE,CAAC;iBACtC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC;gBAC1C,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,KAAK,CAAC;oBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,sBAAsB,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,iCAAiC,EAAE,CAAC;gBACjH,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7D,IAAI,KAAK,IAAI,CAAC;oBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;gBAC1C,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,MAAc;QACtC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,MAAM,GAAI,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS;gBAAE,KAAK,EAAE,CAAC;iBACvC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;gBACzC,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,KAAK,CAAC;oBAAE,OAAO,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,UAAkB;QACvC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,UAAU,GAAI,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS;gBAAE,KAAK,EAAE,CAAC;iBAC7G,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU;gBAAE,KAAK,EAAE,CAAC;iBACrH,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,iBAAiB,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;iBACpE,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAEO,0BAA0B,CAAC,IAAa;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAClD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,IAAI,GAA0B,EAAE,IAAI,EAAE,UAAU,CAAC,qBAAqB,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC;YAC1I,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,qBAAqB,CAAC,aAAqB,EAAE,IAAa;QAChE,IAAI,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACvC,SAAS,CAAC;YACR,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,uEAAuE;YACvE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,gBAAgB,EAAE,CAAC;gBACpF,IAAI,aAAa,GAAG,aAAa;oBAAE,MAAM;gBACzC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC9B,IAAI;oBACF,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS;wBAChC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;wBAC7F,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;gBACzG,SAAS;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,IAAI,IAAI;gBAAE,MAAM;YACtD,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,EAAE;gBAAE,MAAM;YACf,MAAM,UAAU,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,UAAU,GAAG,aAAa;gBAAE,MAAM;YACtC,MAAM,OAAO,GAAG,EAAE,KAAK,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;YAC7E,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACxD,MAAM,MAAM,GAAqB,EAAE,IAAI,EAAE,UAAU,CAAC,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YAC3J,IAAI,GAAG,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,oBAAoB;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,MAAM,KAAK,mBAAmB,CAAC,KAAK,EAAE,CAAC;gBACzC,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC/C,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;YACnG,CAAC;YACD,IAAI,MAAM,KAAK,mBAAmB,CAAC,MAAM,EAAE,CAAC;gBAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC/C,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,gBAAgB,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;YACpG,CAAC;YACD,IAAI,MAAM,KAAK,mBAAmB,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC/C,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;YAClG,CAAC;YACD,IAAI,MAAM,KAAK,mBAAmB,CAAC,MAAM,EAAE,CAAC;gBAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC/C,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,gBAAgB,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;YACpG,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5C,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;QACrH,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,YAAY,EAAE,CAAC;YAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,UAAkC,CAAC;YACvC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;gBAClG,UAAU,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAChD,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3H,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAa,GAAG,EAAE;gBAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC/C,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;YACtG,CAAC,CAAC,CAAC;YACH,IAAI,SAAS;gBAAE,OAAO,SAAS,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACvC,CAAC;IAEO,sBAAsB;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAC7G,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC;YACrH,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,sBAAsB,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3G,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,2BAA2B;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC7G,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAEO,kBAAkB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAChD,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;IACtJ,CAAC;IAEO,yBAAyB;QAC/B,IAAI,UAAU,GAAe,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC3D,SAAS,CAAC;YACR,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7D,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;gBACzD,UAAU,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,uBAAuB,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YAChK,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,sBAAsB;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAmB,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBACxJ,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,SAAS,CAAC,aAAa;gBAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACpI,KAAK,SAAS,CAAC,aAAa;gBAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,SAAS,CAAC,WAAW;gBACxB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAA2B,CAAC;YACpH,KAAK,SAAS,CAAC,YAAY;gBACzB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAA2B,CAAC;YACtH,KAAK,SAAS,CAAC,WAAW;gBACxB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YAC9E,KAAK,SAAS,CAAC,gBAAgB;gBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,gBAAgB,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACnF,KAAK,SAAS,CAAC,WAAW;gBACxB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YAC9E,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACvD,MAAM,KAAK,GAA4B,EAAE,IAAI,EAAE,UAAU,CAAC,uBAAuB,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBACpI,OAAO,KAAK,CAAC;YACf,CAAC;YACD,KAAK,SAAS,CAAC,WAAW;gBACxB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAClC,KAAK,SAAS,CAAC,SAAS;gBACtB,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACnC,KAAK,SAAS,CAAC,eAAe;gBAC5B,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACxC,KAAK,SAAS,CAAC,YAAY;gBACzB,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACrC,KAAK,SAAS,CAAC,YAAY;gBACzB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,mBAAmB;oBAAE,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAChI,MAAM;YACR,KAAK,SAAS,CAAC,QAAQ,CAAC;YACxB,KAAK,SAAS,CAAC,YAAY,CAAC;YAC5B,KAAK,SAAS,CAAC,6BAA6B;gBAC1C,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACrC,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACvC;gBACE,MAAM;QACV,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,qBAAqB,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QAC7F,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACzD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAC9F,CAAC;IAEO,sBAAsB,CAAC,IAAgB;QAC7C,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,SAAS,CAAC;YACR,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC;gBACzE,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;gBAClD,SAAS;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC;gBACzC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;gBACzD,UAAU,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,uBAAuB,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC9J,SAAS;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;gBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAmB,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxM,UAAU,GAAG,IAAI,CAAC;gBAClB,SAAS;YACX,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACtC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAa,GAAG,EAAE;oBAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAChD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;wBAAE,MAAM,IAAI,gBAAgB,EAAE,CAAC;oBAChE,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;oBACnC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClL,CAAC,CAAC,CAAC;gBACH,IAAI,IAAI,EAAE,CAAC;oBACT,UAAU,GAAG,IAAI,CAAC;oBAClB,SAAS;gBACX,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,6BAA6B,CAAC,EAAE,CAAC;gBACvH,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC7C,UAAU,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,wBAAwB,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;gBAClI,SAAS;YACX,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,IAA2B,EAAE,QAAgB;QAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC;IAChD,CAAC;IAEO,mBAAmB,CAAC,UAAsB;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,WAAW,CAAC;QACtD,IAAI,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACnC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAChL,CAAC;QACD,IAAI,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACzD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,uBAAuB,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QACzJ,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,wBAAwB,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3H,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,IAAI,GAAiB,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;gBACrC,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACpD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;YACxF,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAC1C,MAAM;QACb,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,iBAAiB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACzE,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,mDAAmD;gBACnD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBACrG,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;gBACrC,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5F,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAC1C,MAAM;QACb,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACzD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,sBAAsB,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAClG,CAAC;IAEO,kBAAkB;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,UAAU,GAA+B,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;gBACrC,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACpD,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;YAC9F,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACtC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;oBACrD,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC3G,CAAC;qBAAM,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACvE,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrF,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC1C,IAAI,UAAgC,CAAC;oBACrC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;wBACjB,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;oBACtC,CAAC;oBACD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC/B,MAAM,EAAE,GAAuB,EAAE,IAAI,EAAE,UAAU,CAAC,kBAAkB,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;oBAClK,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACxG,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,UAAU,EAAE,CAAC;oBAC/C,MAAM,SAAS,GAAgC,EAAE,IAAI,EAAE,UAAU,CAAC,2BAA2B,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC5H,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,+BAA+B,CAAC,CAAC;oBAC5E,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAC1C,MAAM;QACb,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,uBAAuB,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACrG,CAAC;IAEO,uBAAuB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC;QAClE,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,KAAK,IAAI,SAAS,CAAC,SAAS,CAAC;QAC/B,CAAC;QACD,IAAI,IAA4B,CAAC;QACjC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACjE,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,IAAI,UAAgC,CAAC;QACrC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,kBAAkB,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IAClI,CAAC;IAEO,oBAAoB;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;QAC/D,IAAI,IAA4B,CAAC;QACjC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACjE,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC;IAC9I,CAAC;IAEO,oBAAoB;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9B,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,6BAA6B,EAAE,CAAC;YAChE,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,6BAA6B,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAgC,CAAC;QACtM,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC3C,oEAAoE;YACpE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACf,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACrC,CAAC;QAAI,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,KAAK,GAAmB,EAAE,CAAC;QACjC,SAAS,CAAC;YACR,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,oBAAoB,EAAE,6CAA6C,CAAC,CAAC;gBAC/F,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACzG,CAAC;YACD,yEAAyE;YACzE,uEAAuE;YACvE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACpC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACf,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;YAChC,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,CAAC,6BAA6B,EAAE,CAAC;gBAClE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnK,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC;YAC3G,CAAC;YACD,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,CAAC,YAAY,EAAE,CAAC;gBACjD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpK,SAAS;YACX,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,oBAAoB,EAAE,+BAA+B,EAAE,YAAY,CAAC,CAAC;YAC/F,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC;QAC3G,CAAC;IACH,CAAC;IAEO,sBAAsB;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QACxB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;YACpB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChB,OAAO,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACpC,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YACD,IAAI,EAAE,KAAK,GAAG;gBAAE,OAAO,GAAG,IAAI,CAAC;iBAC1B,IAAI,EAAE,KAAK,GAAG;gBAAE,OAAO,GAAG,KAAK,CAAC;iBAChC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO;gBAAE,MAAM;iBAClC,IAAI,EAAE,KAAK,IAAI;gBAAE,MAAM;YAC5B,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,EAAE,iCAAiC,CAAC,CAAC;YAC/E,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,wBAAwB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QACrI,CAAC;QACD,CAAC,EAAE,CAAC;QACJ,MAAM,UAAU,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC;YAAE,CAAC,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,wBAAwB,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IACrI,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,KAAK,GAAe,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACxE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAC1C,MAAM;QACb,CAAC;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4EAA4E;IAE5E,SAAS;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC;QACtH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,cAAc;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,OAAO;YAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,KAAK,GAAe,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,GAAG,EAAE,CAAC;IACzF,CAAC;IAEO,qBAAqB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,OAAO;YAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QAChD,MAAM,KAAK,GAAe,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,GAAG,EAAE,CAAC;IAChG,CAAC;IAEO,yBAAyB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAC9C,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QACrG,CAAC;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAC9C,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QACtG,CAAC;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAC9C,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QACxG,CAAC;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACpC,IAAI,UAAgC,CAAC;YACrC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,CAAC;YACD,MAAM,aAAa,GAA6B,EAAE,IAAI,EAAE,UAAU,CAAC,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACrK,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC;QACtF,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACjC,CAAC;IAEO,gBAAgB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACnC,SAAS,CAAC;YACR,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;oBACpC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBAC/B,IAAI,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBAClF,CAAC;qBAAM,CAAC;oBACN,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;oBACzD,IAAI,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBACpG,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpE,qDAAqD;YACvD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,gBAAgB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,UAAU;gBACvB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACpE,KAAK,SAAS,CAAC,cAAc;gBAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACxE,KAAK,SAAS,CAAC,aAAa;gBAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACvE,KAAK,SAAS,CAAC,aAAa;gBAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACvE,KAAK,SAAS,CAAC,aAAa;gBAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACvE,KAAK,SAAS,CAAC,cAAc;gBAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACxE,KAAK,SAAS,CAAC,aAAa;gBAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACvE,KAAK,SAAS,CAAC,WAAW;gBACxB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACrE,KAAK,SAAS,CAAC,gBAAgB;gBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YAC1E,KAAK,SAAS,CAAC,WAAW;gBACxB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACrE,KAAK,SAAS,CAAC,YAAY;gBACzB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACtE,KAAK,SAAS,CAAC,aAAa;gBAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACvE,KAAK,SAAS,CAAC,WAAW;gBACxB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACrE,KAAK,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBACxC,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/F,CAAC;YACD,KAAK,SAAS,CAAC,SAAS;gBACtB,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjC,KAAK,SAAS,CAAC,WAAW;gBACxB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/B,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC7C,IAAI,UAAU,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,iBAAiB,EAAE,CAAC;oBAC3F,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAClC,CAAC;gBACD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACvD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YAC7E,CAAC;YACD,KAAK,SAAS,CAAC,QAAQ;gBACrB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAClC,KAAK,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;YACD,KAAK,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;gBACnD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YAC1E,CAAC;YACD,KAAK,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAmB,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC9I,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YAC1E,CAAC;YACD,KAAK,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAmB,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBACrG,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YAC1E,CAAC;YACD,KAAK,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAmB,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBACvG,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YAC1E,CAAC;YACD,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;gBACrB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;gBACzD,MAAM,OAAO,GAAmB,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;gBAC/I,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YACxE,CAAC;YACD,KAAK,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC7B,wDAAwD;gBACxD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;oBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC;wBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;oBACvD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBAC3C,CAAC;gBACD,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC7B,CAAC;gBACD,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,EAAyB,CAAC;YACjH,CAAC;YACD;gBACE,MAAM;QACV,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACpI,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,iBAAiB,EAAE,8BAA8B,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QACxG,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACzD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACpE,CAAC;IAEO,eAAe,CAAC,aAAkC,EAAE,QAAgB;QAC1E,OAAO,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC;IAClE,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,GAAyD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5F,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzC,IAAI,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QAC5F,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,iBAAiB,CAAC,aAAsB;QAC9C,MAAM,KAAK,GAAG,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAChD,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;IAC/G,CAAC;IAEO,cAAc;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACzE,IAAI,OAAiB,CAAC;YACtB,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;gBACzC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC9B,OAAO,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;YACjF,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,CAAC;YACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC;gBACjC,OAAO,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;YACxF,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;gBAC1C,MAAM;QACb,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACzD,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACrF,CAAC;IAEO,gBAAgB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,sCAAsC;QACtC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,MAAM,GAAG,CAAC,CAAC;YACX,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;oBACnD,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;oBACrD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;oBAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;oBACpC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;oBACxC,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBAClC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;oBAC3C,IAAI,aAAa,GAAwB,KAAK,CAAC;oBAC/C,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAChC,IAAI,CAAC,SAAS,EAAE,CAAC;wBACjB,aAAa,GAAG,IAAI,CAAC;oBACvB,CAAC;yBAAM,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;wBACnC,IAAI,CAAC,SAAS,EAAE,CAAC;wBACjB,IAAI,CAAC,SAAS,EAAE,CAAC;wBACjB,aAAa,GAAG,GAAG,CAAC;oBACtB,CAAC;yBAAM,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;wBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;wBACjB,IAAI,CAAC,SAAS,EAAE,CAAC;wBACjB,aAAa,GAAG,GAAG,CAAC;oBACtB,CAAC;oBACD,IAAI,IAA0B,CAAC;oBAC/B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;wBACjB,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBAC1B,CAAC;oBACD,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;oBACvD,MAAM,aAAa,GAA6B,EAAE,IAAI,EAAE,UAAU,CAAC,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;oBACxJ,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBACtI,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACjF,CAAC;CACF;AAED,SAAS,wBAAwB,CAAC,IAAgB;IAChD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,UAAU,CAAC,aAAa;YAC3B,OAAO,IAAI,CAAC;QACd,KAAK,UAAU,CAAC,cAAc;YAC5B,OAAO,IAAI,CAAC;QACd,KAAK,UAAU,CAAC,UAAU;YACxB,OAAO,IAAI,CAAC;QACd;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAkB;IAC1C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,UAAU,CAAC,UAAU,CAAC;QAC3B,KAAK,UAAU,CAAC,iBAAiB;YAC/B,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,KAAK,UAAU,CAAC,aAAa;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,KAAK,UAAU,CAAC,cAAc;YAC5B,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAgB;IAC1C,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,UAAU;QACnC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,wBAAwB;QACjD,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,uBAAuB;QAChD,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,uBAAuB,CACjD,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAe;IACzC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS,CAAC,MAAM;YACnB,OAAO,kBAAkB,CAAC,MAAM,CAAC;QACnC,KAAK,SAAS,CAAC,UAAU;YACvB,OAAO,kBAAkB,CAAC,SAAS,CAAC;QACtC,KAAK,SAAS,CAAC,WAAW;YACxB,OAAO,kBAAkB,CAAC,cAAc,CAAC;QAC3C,KAAK,SAAS,CAAC,cAAc;YAC3B,OAAO,kBAAkB,CAAC,cAAc,CAAC;QAC3C,KAAK,SAAS,CAAC,WAAW;YACxB,OAAO,kBAAkB,CAAC,YAAY,CAAC;QACzC,KAAK,SAAS,CAAC,aAAa;YAC1B,OAAO,kBAAkB,CAAC,eAAe,CAAC;QAC5C,KAAK,SAAS,CAAC,sBAAsB;YACnC,OAAO,kBAAkB,CAAC,cAAc,CAAC;QAC3C,KAAK,SAAS,CAAC,sBAAsB;YACnC,OAAO,kBAAkB,CAAC,sBAAsB,CAAC;QACnD,KAAK,SAAS,CAAC,4BAA4B;YACzC,OAAO,kBAAkB,CAAC,4BAA4B,CAAC;QACzD,KAAK,SAAS,CAAC,uCAAuC;YACpD,OAAO,kBAAkB,CAAC,uCAAuC,CAAC;QACpE,KAAK,SAAS,CAAC,eAAe;YAC5B,OAAO,kBAAkB,CAAC,eAAe,CAAC;QAC5C,KAAK,SAAS,CAAC,SAAS;YACtB,OAAO,kBAAkB,CAAC,SAAS,CAAC;QACtC,KAAK,SAAS,CAAC,WAAW;YACxB,OAAO,kBAAkB,CAAC,WAAW,CAAC;QACxC,KAAK,SAAS,CAAC,wBAAwB;YACrC,OAAO,kBAAkB,CAAC,wBAAwB,CAAC;QACrD,KAAK,SAAS,CAAC,YAAY;YACzB,OAAO,kBAAkB,CAAC,YAAY,CAAC;QACzC,KAAK,SAAS,CAAC,sBAAsB;YACnC,OAAO,kBAAkB,CAAC,sBAAsB,CAAC;QACnD;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,SAAS,cAAc,CAAC,IAAe;IACrC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS,CAAC,IAAI;YACjB,OAAO,cAAc,CAAC,GAAG,CAAC;QAC5B,KAAK,SAAS,CAAC,KAAK;YAClB,OAAO,cAAc,CAAC,QAAQ,CAAC;QACjC,KAAK,SAAS,CAAC,QAAQ;YACrB,OAAO,cAAc,CAAC,QAAQ,CAAC;QACjC,KAAK,SAAS,CAAC,KAAK;YAClB,OAAO,cAAc,CAAC,MAAM,CAAC;QAC/B,KAAK,SAAS,CAAC,OAAO;YACpB,OAAO,cAAc,CAAC,SAAS,CAAC;QAClC,KAAK,SAAS,CAAC,gBAAgB;YAC7B,OAAO,cAAc,CAAC,QAAQ,CAAC;QACjC,KAAK,SAAS,CAAC,QAAQ;YACrB,OAAO,cAAc,CAAC,QAAQ,CAAC;QACjC,KAAK,SAAS,CAAC,cAAc;YAC3B,OAAO,cAAc,CAAC,cAAc,CAAC;QACvC,KAAK,SAAS,CAAC,WAAW;YACxB,OAAO,cAAc,CAAC,WAAW,CAAC;QACpC,KAAK,SAAS,CAAC,iBAAiB;YAC9B,OAAO,cAAc,CAAC,iBAAiB,CAAC;QAC1C,KAAK,SAAS,CAAC,YAAY;YACzB,OAAO,cAAc,CAAC,YAAY,CAAC;QACrC,KAAK,SAAS,CAAC,iBAAiB;YAC9B,OAAO,cAAc,CAAC,iBAAiB,CAAC;QAC1C,KAAK,SAAS,CAAC,kBAAkB;YAC/B,OAAO,cAAc,CAAC,kBAAkB,CAAC;QAC3C,KAAK,SAAS,CAAC,uBAAuB;YACpC,OAAO,cAAc,CAAC,uBAAuB,CAAC;QAChD,KAAK,SAAS,CAAC,kBAAkB;YAC/B,OAAO,cAAc,CAAC,kBAAkB,CAAC;QAC3C,KAAK,SAAS,CAAC,MAAM;YACnB,OAAO,cAAc,CAAC,MAAM,CAAC;QAC/B,KAAK,SAAS,CAAC,gBAAgB;YAC7B,OAAO,cAAc,CAAC,gBAAgB,CAAC;QACzC,KAAK,SAAS,CAAC,SAAS;YACtB,OAAO,cAAc,CAAC,SAAS,CAAC;QAClC,KAAK,SAAS,CAAC,GAAG;YAChB,OAAO,cAAc,CAAC,GAAG,CAAC;QAC5B,KAAK,SAAS,CAAC,KAAK;YAClB,OAAO,cAAc,CAAC,KAAK,CAAC;QAC9B,KAAK,SAAS,CAAC,gBAAgB;YAC7B,OAAO,cAAc,CAAC,gBAAgB,CAAC;QACzC,KAAK,SAAS,CAAC,sBAAsB;YACnC,OAAO,cAAc,CAAC,sBAAsB,CAAC;QAC/C,KAAK,SAAS,CAAC,iCAAiC;YAC9C,OAAO,cAAc,CAAC,iCAAiC,CAAC;QAC1D,KAAK,SAAS,CAAC,SAAS;YACtB,OAAO,cAAc,CAAC,EAAE,CAAC;QAC3B,KAAK,SAAS,CAAC,iBAAiB;YAC9B,OAAO,cAAc,CAAC,UAAU,CAAC;QACnC;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAkB;IAC1C,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,cAAc,CAAC,gBAAgB;YAClC,OAAO,CAAC,CAAC;QACX,KAAK,cAAc,CAAC,MAAM;YACxB,OAAO,CAAC,CAAC;QACX,KAAK,cAAc,CAAC,kBAAkB;YACpC,OAAO,CAAC,CAAC;QACX,KAAK,cAAc,CAAC,GAAG;YACrB,OAAO,CAAC,CAAC;QACX,KAAK,cAAc,CAAC,KAAK;YACvB,OAAO,CAAC,CAAC;QACX,KAAK,cAAc,CAAC,SAAS;YAC3B,OAAO,CAAC,CAAC;QACX,KAAK,cAAc,CAAC,YAAY,CAAC;QACjC,KAAK,cAAc,CAAC,iBAAiB,CAAC;QACtC,KAAK,cAAc,CAAC,kBAAkB,CAAC;QACvC,KAAK,cAAc,CAAC,uBAAuB;YACzC,OAAO,CAAC,CAAC;QACX,KAAK,cAAc,CAAC,QAAQ,CAAC;QAC7B,KAAK,cAAc,CAAC,cAAc,CAAC;QACnC,KAAK,cAAc,CAAC,WAAW,CAAC;QAChC,KAAK,cAAc,CAAC,iBAAiB,CAAC;QACtC,KAAK,cAAc,CAAC,EAAE,CAAC;QACvB,KAAK,cAAc,CAAC,UAAU;YAC5B,OAAO,CAAC,CAAC;QACX,KAAK,cAAc,CAAC,gBAAgB,CAAC;QACrC,KAAK,cAAc,CAAC,sBAAsB,CAAC;QAC3C,KAAK,cAAc,CAAC,iCAAiC;YACnD,OAAO,CAAC,CAAC;QACX,KAAK,cAAc,CAAC,GAAG,CAAC;QACxB,KAAK,cAAc,CAAC,QAAQ;YAC1B,OAAO,EAAE,CAAC;QACZ,KAAK,cAAc,CAAC,QAAQ,CAAC;QAC7B,KAAK,cAAc,CAAC,MAAM,CAAC;QAC3B,KAAK,cAAc,CAAC,SAAS;YAC3B,OAAO,EAAE,CAAC;QACZ,KAAK,cAAc,CAAC,QAAQ;YAC1B,OAAO,EAAE,CAAC;QACZ;YACE,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAe;IAC1C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS,CAAC,IAAI;YACjB,OAAO,mBAAmB,CAAC,IAAI,CAAC;QAClC,KAAK,SAAS,CAAC,KAAK;YAClB,OAAO,mBAAmB,CAAC,KAAK,CAAC;QACnC,KAAK,SAAS,CAAC,KAAK;YAClB,OAAO,mBAAmB,CAAC,KAAK,CAAC;QACnC,KAAK,SAAS,CAAC,WAAW;YACxB,OAAO,mBAAmB,CAAC,WAAW,CAAC;QACzC,KAAK,SAAS,CAAC,aAAa;YAC1B,OAAO,mBAAmB,CAAC,MAAM,CAAC;QACpC,KAAK,SAAS,CAAC,WAAW;YACxB,OAAO,mBAAmB,CAAC,IAAI,CAAC;QAClC,KAAK,SAAS,CAAC,aAAa;YAC1B,OAAO,mBAAmB,CAAC,MAAM,CAAC;QACpC,KAAK,SAAS,CAAC,QAAQ;YACrB,OAAO,mBAAmB,CAAC,QAAQ,CAAC;QACtC,KAAK,SAAS,CAAC,UAAU;YACvB,OAAO,mBAAmB,CAAC,UAAU,CAAC;QACxC,KAAK,SAAS,CAAC,YAAY;YACzB,OAAO,mBAAmB,CAAC,KAAK,CAAC;QACnC;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,gBAAiB,SAAQ,KAAK;IAClC;QACE,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { bindSource } from "../helpers.js";
|
|
3
|
+
import { SymbolKind } from "../../src/binder/binder.js";
|
|
4
|
+
describe("binder", () => {
|
|
5
|
+
it("records the module function and static topology", () => {
|
|
6
|
+
const { result } = bindSource("function f() {}\nconst x = 1;");
|
|
7
|
+
expect(result.moduleFunction.isModule).toBe(true);
|
|
8
|
+
expect(result.functions).toHaveLength(2);
|
|
9
|
+
expect(result.functions.map((fn) => fn.name)).toEqual(["(module)", "f"]);
|
|
10
|
+
});
|
|
11
|
+
it("classifies symbol kinds", () => {
|
|
12
|
+
const { result } = bindSource("var a = 1; let b = 2; const c = 3; function d() {}");
|
|
13
|
+
const moduleScope = result.moduleFunction.scope;
|
|
14
|
+
expect(moduleScope.symbols.get("a")?.kind).toBe(SymbolKind.Var);
|
|
15
|
+
expect(moduleScope.symbols.get("b")?.kind).toBe(SymbolKind.Let);
|
|
16
|
+
expect(moduleScope.symbols.get("c")?.kind).toBe(SymbolKind.Const);
|
|
17
|
+
expect(moduleScope.symbols.get("d")?.kind).toBe(SymbolKind.Function);
|
|
18
|
+
});
|
|
19
|
+
it("marks const bindings immutable", () => {
|
|
20
|
+
const { result } = bindSource("const a = 1; let b = 2;");
|
|
21
|
+
const scope = result.moduleFunction.scope;
|
|
22
|
+
expect(scope.symbols.get("a")?.mutable).toBe(false);
|
|
23
|
+
expect(scope.symbols.get("b")?.mutable).toBe(true);
|
|
24
|
+
});
|
|
25
|
+
it("hoists var and function declarations to the function scope", () => {
|
|
26
|
+
const { result } = bindSource("function outer() {\n {\n var hoisted = 1;\n function inner() {}\n }\n}");
|
|
27
|
+
const outer = result.functions.find((fn) => fn.name === "outer");
|
|
28
|
+
const names = outer.locals.map((symbol) => symbol.name);
|
|
29
|
+
expect(names).toContain("hoisted");
|
|
30
|
+
expect(names).toContain("inner");
|
|
31
|
+
});
|
|
32
|
+
it("keeps let/const inside their block scope", () => {
|
|
33
|
+
const { result } = bindSource("function outer() { { let hidden = 1; } }");
|
|
34
|
+
const outer = result.functions.find((fn) => fn.name === "outer");
|
|
35
|
+
expect(outer.scope.symbols.has("hidden")).toBe(false);
|
|
36
|
+
const declaresHidden = [...result.scopes.values()].some((scope) => scope.symbols.has("hidden"));
|
|
37
|
+
expect(declaresHidden).toBe(true);
|
|
38
|
+
expect(result.scopes.size).toBeGreaterThanOrEqual(3);
|
|
39
|
+
});
|
|
40
|
+
it("resolves identifiers to their declarations", () => {
|
|
41
|
+
const { result } = bindSource("const value = 1; function get() { return value; }");
|
|
42
|
+
const get = result.functions.find((fn) => fn.name === "get");
|
|
43
|
+
const returnStatement = get.node.body.statements[0];
|
|
44
|
+
const reference = returnStatement.expression;
|
|
45
|
+
expect(result.symbolOfIdentifier.get(reference)?.name).toBe("value");
|
|
46
|
+
});
|
|
47
|
+
it("does not capture module-level functions as values", () => {
|
|
48
|
+
const { result } = bindSource("function fib(n) { return fib(n - 1); }");
|
|
49
|
+
const fib = result.functions.find((fn) => fn.name === "fib");
|
|
50
|
+
expect(fib.captures).toHaveLength(0);
|
|
51
|
+
});
|
|
52
|
+
it("marks captured variables and threads them through intermediate closures", () => {
|
|
53
|
+
const { result } = bindSource("function outer() { let count = 0; const middle = () => () => count; return middle; }");
|
|
54
|
+
const outer = result.functions.find((fn) => fn.name === "outer");
|
|
55
|
+
const arrows = result.functions.filter((fn) => fn.isArrow);
|
|
56
|
+
expect(arrows).toHaveLength(2);
|
|
57
|
+
// The middle arrow captures `count` only because the inner arrow needs it.
|
|
58
|
+
for (const arrow of arrows) {
|
|
59
|
+
expect(arrow.captures.map((symbol) => symbol.name)).toContain("count");
|
|
60
|
+
}
|
|
61
|
+
const count = outer.locals.find((symbol) => symbol.name === "count");
|
|
62
|
+
expect(count.captured).toBe(true);
|
|
63
|
+
expect(count.boxed).toBe(true);
|
|
64
|
+
});
|
|
65
|
+
it("assigns stable capture indices", () => {
|
|
66
|
+
const { result } = bindSource("function outer() { let a = 1; let b = 2; return () => a + b; }");
|
|
67
|
+
const arrow = result.functions.find((fn) => fn.isArrow);
|
|
68
|
+
expect(arrow.captures).toHaveLength(2);
|
|
69
|
+
expect(arrow.captureIndex.get(arrow.captures[0].id)).toBe(0);
|
|
70
|
+
expect(arrow.captureIndex.get(arrow.captures[1].id)).toBe(1);
|
|
71
|
+
});
|
|
72
|
+
it("maps function nodes back to FunctionInfo", () => {
|
|
73
|
+
const { result } = bindSource("function declared() {}\nconst arrow = () => 1;");
|
|
74
|
+
const moduleFunction = result.moduleFunction;
|
|
75
|
+
const declaration = moduleFunction.node.statements[0];
|
|
76
|
+
expect(result.functionOfNode.get(declaration)?.name).toBe("declared");
|
|
77
|
+
});
|
|
78
|
+
it("registers parameters as local symbols", () => {
|
|
79
|
+
const { result } = bindSource("function add(a, b) { return a + b; }");
|
|
80
|
+
const add = result.functions.find((fn) => fn.name === "add");
|
|
81
|
+
expect(add.params.map((symbol) => symbol.name)).toEqual(["a", "b"]);
|
|
82
|
+
expect(add.locals.map((symbol) => symbol.name)).toEqual(["a", "b"]);
|
|
83
|
+
});
|
|
84
|
+
it("tracks unresolved identifier references", () => {
|
|
85
|
+
const { result } = bindSource("missingName;");
|
|
86
|
+
expect(result.unresolved.map((identifier) => identifier.text)).toContain("missingName");
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=binder.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binder.test.js","sourceRoot":"","sources":["../../../tests/binder/binder.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
5
|
+
import { run } from "../../src/cli/main.js";
|
|
6
|
+
const directories = [];
|
|
7
|
+
function temporaryDirectory() {
|
|
8
|
+
const directory = mkdtempSync(join(tmpdir(), "xbintsc-cli-"));
|
|
9
|
+
directories.push(directory);
|
|
10
|
+
return directory;
|
|
11
|
+
}
|
|
12
|
+
function capture() {
|
|
13
|
+
const out = [];
|
|
14
|
+
const err = [];
|
|
15
|
+
return { io: { stdout: (text) => out.push(text), stderr: (text) => err.push(text) }, out, err };
|
|
16
|
+
}
|
|
17
|
+
afterEach(() => {
|
|
18
|
+
while (directories.length > 0)
|
|
19
|
+
rmSync(directories.pop(), { recursive: true, force: true });
|
|
20
|
+
});
|
|
21
|
+
describe("cli", () => {
|
|
22
|
+
it("prints help with no arguments", () => {
|
|
23
|
+
const { io, out } = capture();
|
|
24
|
+
expect(run([], io)).toBe(0);
|
|
25
|
+
expect(out.join("")).toContain("Usage:");
|
|
26
|
+
});
|
|
27
|
+
it("prints the version", () => {
|
|
28
|
+
const { io, out } = capture();
|
|
29
|
+
expect(run(["version"], io)).toBe(0);
|
|
30
|
+
expect(out.join("")).toMatch(/xbintsc \d+\.\d+\.\d+/);
|
|
31
|
+
});
|
|
32
|
+
it("rejects unknown commands", () => {
|
|
33
|
+
const { io, err } = capture();
|
|
34
|
+
expect(run(["frobnicate"], io)).toBe(1);
|
|
35
|
+
expect(err.join("")).toContain("unknown command");
|
|
36
|
+
});
|
|
37
|
+
it("requires a file for build and run", () => {
|
|
38
|
+
const { io, err } = capture();
|
|
39
|
+
expect(run(["build"], io)).toBe(1);
|
|
40
|
+
expect(err.join("")).toContain("requires a source file");
|
|
41
|
+
});
|
|
42
|
+
it("emits LLVM IR for a source file", () => {
|
|
43
|
+
const directory = temporaryDirectory();
|
|
44
|
+
const entry = join(directory, "program.ts");
|
|
45
|
+
writeFileSync(entry, "console.log(1 + 1);");
|
|
46
|
+
const { io, out } = capture();
|
|
47
|
+
expect(run(["emit", entry], io)).toBe(0);
|
|
48
|
+
const ir = out.join("");
|
|
49
|
+
expect(ir).toContain("define i32 @main");
|
|
50
|
+
expect(ir).toContain("@xt_add");
|
|
51
|
+
});
|
|
52
|
+
it("surfaces parse errors from emit", () => {
|
|
53
|
+
const directory = temporaryDirectory();
|
|
54
|
+
const entry = join(directory, "bad.ts");
|
|
55
|
+
writeFileSync(entry, "const = ;");
|
|
56
|
+
const { io, err } = capture();
|
|
57
|
+
expect(run(["emit", entry], io)).toBe(1);
|
|
58
|
+
expect(err.join("")).toContain("error TS");
|
|
59
|
+
});
|
|
60
|
+
it("rejects unknown extensions", () => {
|
|
61
|
+
const directory = temporaryDirectory();
|
|
62
|
+
const entry = join(directory, "program.ts");
|
|
63
|
+
writeFileSync(entry, "console.log(1);");
|
|
64
|
+
const { io } = capture();
|
|
65
|
+
expect(() => run(["emit", entry, "--ext", "nope"], io)).toThrow(/Unknown extension/);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=main.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.test.js","sourceRoot":"","sources":["../../../tests/cli/main.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runs the CLI as a real child process.
|
|
3
|
+
*
|
|
4
|
+
* This guards a class of bug that only shows up off the developer's machine:
|
|
5
|
+
* whether `bin`/`main` actually dispatches `run()` when the file is executed as
|
|
6
|
+
* the program entry point (the previous string-built `file://` comparison never
|
|
7
|
+
* matched on Windows, so `xbintsc build` silently did nothing).
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runs the CLI as a real child process.
|
|
3
|
+
*
|
|
4
|
+
* This guards a class of bug that only shows up off the developer's machine:
|
|
5
|
+
* whether `bin`/`main` actually dispatches `run()` when the file is executed as
|
|
6
|
+
* the program entry point (the previous string-built `file://` comparison never
|
|
7
|
+
* matched on Windows, so `xbintsc build` silently did nothing).
|
|
8
|
+
*/
|
|
9
|
+
import { spawnSync } from "node:child_process";
|
|
10
|
+
import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
11
|
+
import { tmpdir } from "node:os";
|
|
12
|
+
import { join, resolve } from "node:path";
|
|
13
|
+
import { fileURLToPath } from "node:url";
|
|
14
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
15
|
+
const projectRoot = resolve(fileURLToPath(new URL("../..", import.meta.url)));
|
|
16
|
+
const cliEntry = join(projectRoot, "src", "cli", "main.ts");
|
|
17
|
+
const directories = [];
|
|
18
|
+
function temporaryDirectory() {
|
|
19
|
+
const directory = mkdtempSync(join(tmpdir(), "xbintsc-process-"));
|
|
20
|
+
directories.push(directory);
|
|
21
|
+
return directory;
|
|
22
|
+
}
|
|
23
|
+
function runCli(args) {
|
|
24
|
+
const result = spawnSync(process.execPath, ["--import", "tsx", cliEntry, ...args], {
|
|
25
|
+
cwd: projectRoot,
|
|
26
|
+
encoding: "utf8",
|
|
27
|
+
});
|
|
28
|
+
return { status: result.status, stdout: result.stdout ?? "", stderr: result.stderr ?? "" };
|
|
29
|
+
}
|
|
30
|
+
afterEach(() => {
|
|
31
|
+
while (directories.length > 0)
|
|
32
|
+
rmSync(directories.pop(), { recursive: true, force: true });
|
|
33
|
+
});
|
|
34
|
+
describe("cli process entry point", () => {
|
|
35
|
+
it("actually runs when invoked as the entry point", () => {
|
|
36
|
+
const { status, stdout } = runCli(["version"]);
|
|
37
|
+
expect(status).toBe(0);
|
|
38
|
+
expect(stdout).toMatch(/xbintsc \d+\.\d+\.\d+/);
|
|
39
|
+
});
|
|
40
|
+
it("emits IR to stdout", () => {
|
|
41
|
+
const directory = temporaryDirectory();
|
|
42
|
+
const entry = join(directory, "main.ts");
|
|
43
|
+
writeFileSync(entry, "console.log(1 + 1);");
|
|
44
|
+
const { status, stdout } = runCli(["emit", entry]);
|
|
45
|
+
expect(status).toBe(0);
|
|
46
|
+
expect(stdout).toContain("define i32 @main");
|
|
47
|
+
});
|
|
48
|
+
it("exits non-zero with diagnostics for invalid input", () => {
|
|
49
|
+
const directory = temporaryDirectory();
|
|
50
|
+
const entry = join(directory, "bad.ts");
|
|
51
|
+
writeFileSync(entry, "const = ;");
|
|
52
|
+
const { status, stderr } = runCli(["emit", entry]);
|
|
53
|
+
expect(status).toBe(1);
|
|
54
|
+
expect(stderr).toContain("error TS");
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=process.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.test.js","sourceRoot":"","sources":["../../../tests/cli/process.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { compileToIr } from "../helpers.js";
|
|
3
|
+
import { numberLiteral } from "../../src/codegen/values.js";
|
|
4
|
+
import { createDefaultRegistry } from "../../src/extensions/registry.js";
|
|
5
|
+
import { nodeExtension } from "../../src/extensions/node.js";
|
|
6
|
+
function defineNames(ir) {
|
|
7
|
+
return [...ir.matchAll(/^define i64 @([A-Za-z0-9_.]+)/gm)].map((match) => match[1]);
|
|
8
|
+
}
|
|
9
|
+
describe("codegen", () => {
|
|
10
|
+
it("emits a module with a C entry point", () => {
|
|
11
|
+
const { ir, diagnostics } = compileToIr("console.log(1);");
|
|
12
|
+
expect(diagnostics.filter((d) => d.category === "error")).toHaveLength(0);
|
|
13
|
+
expect(ir).toContain("define i32 @main");
|
|
14
|
+
expect(ir).toMatch(/declare i64 @xt_add/);
|
|
15
|
+
});
|
|
16
|
+
it("defines the module function plus one LLVM function per user function", () => {
|
|
17
|
+
const { ir } = compileToIr("function a() {}\nfunction b() {}\nconst c = () => 1;");
|
|
18
|
+
const names = defineNames(ir);
|
|
19
|
+
expect(names).toHaveLength(4);
|
|
20
|
+
expect(names[0]).toBe("xt_module");
|
|
21
|
+
expect(new Set(names).size).toBe(names.length);
|
|
22
|
+
});
|
|
23
|
+
it("emits numeric constants using the NaN-boxed bit pattern", () => {
|
|
24
|
+
const { ir } = compileToIr("const x = 42;");
|
|
25
|
+
expect(ir).toContain(numberLiteral(42));
|
|
26
|
+
});
|
|
27
|
+
it("emits string literals as private globals and allocates them at runtime", () => {
|
|
28
|
+
const { ir } = compileToIr('console.log("hello");');
|
|
29
|
+
expect(ir).toContain('@.str.0 = private unnamed_addr constant');
|
|
30
|
+
expect(ir).toMatch(/call i64 @xt_string_new\(i8\* @\.str\.0, i64 5\)/);
|
|
31
|
+
});
|
|
32
|
+
it("escapes non-ASCII bytes in string constants", () => {
|
|
33
|
+
const { ir } = compileToIr('console.log("héllo→");');
|
|
34
|
+
expect(ir).toContain("\\C3\\A9");
|
|
35
|
+
expect(ir).toContain("\\E2\\86\\92");
|
|
36
|
+
});
|
|
37
|
+
it("lowers arithmetic to runtime helpers", () => {
|
|
38
|
+
const { ir } = compileToIr("const x = a + b * c;");
|
|
39
|
+
expect(ir).toContain("@xt_mul");
|
|
40
|
+
expect(ir).toContain("@xt_add");
|
|
41
|
+
});
|
|
42
|
+
it("lowers comparisons and logical operators", () => {
|
|
43
|
+
const { ir } = compileToIr("const x = a < b && c;");
|
|
44
|
+
expect(ir).toContain("@xt_lt");
|
|
45
|
+
expect(ir).toContain("@xt_truthy");
|
|
46
|
+
});
|
|
47
|
+
it("uses explicit basic blocks for conditionals", () => {
|
|
48
|
+
const { ir } = compileToIr("if (a) { b(); } else { c(); }");
|
|
49
|
+
expect(ir).toMatch(/if\.then/);
|
|
50
|
+
expect(ir).toMatch(/if\.else/);
|
|
51
|
+
expect(ir).toMatch(/if\.end/);
|
|
52
|
+
});
|
|
53
|
+
it("lowers while loops with cond/body/end blocks", () => {
|
|
54
|
+
const { ir } = compileToIr("while (a) { b(); }");
|
|
55
|
+
expect(ir).toMatch(/while\.cond/);
|
|
56
|
+
expect(ir).toMatch(/while\.body/);
|
|
57
|
+
expect(ir).toMatch(/while\.end/);
|
|
58
|
+
});
|
|
59
|
+
it("allocates locals with alloca and promotes reads/writes through slots", () => {
|
|
60
|
+
const { ir } = compileToIr("let x = 1; x = 2; console.log(x);");
|
|
61
|
+
expect(ir).toContain("alloca i64");
|
|
62
|
+
expect(ir).toContain("store i64");
|
|
63
|
+
expect(ir).toContain("load i64");
|
|
64
|
+
});
|
|
65
|
+
it("passes closures an environment and reads captures from it", () => {
|
|
66
|
+
const { ir } = compileToIr("function outer() { let c = 1; return () => c; }");
|
|
67
|
+
expect(ir).toContain("@xt_box_new");
|
|
68
|
+
expect(ir).toContain("@xt_closure_new");
|
|
69
|
+
expect(ir).toContain("@xt_closure_env");
|
|
70
|
+
});
|
|
71
|
+
it("routes console.log through the runtime", () => {
|
|
72
|
+
const { ir } = compileToIr("console.log(1, 2);");
|
|
73
|
+
expect(ir).toContain("@xt_console_log");
|
|
74
|
+
});
|
|
75
|
+
it("builds object and array literals through runtime constructors", () => {
|
|
76
|
+
const { ir } = compileToIr("const o = { a: 1 };\nconst a = [1, 2];");
|
|
77
|
+
expect(ir).toContain("@xt_object_new");
|
|
78
|
+
expect(ir).toContain("@xt_object_set");
|
|
79
|
+
expect(ir).toContain("@xt_array_new");
|
|
80
|
+
expect(ir).toContain("@xt_array_push");
|
|
81
|
+
});
|
|
82
|
+
it("calls extension builtins with the uniform argv ABI", () => {
|
|
83
|
+
const registry = createDefaultRegistry().register(nodeExtension);
|
|
84
|
+
const { ir } = compileToIr('readFileSync("f.txt");', registry);
|
|
85
|
+
expect(ir).toContain("declare i64 @xt_node_read_text_file(i32, i64*)");
|
|
86
|
+
expect(ir).toMatch(/call i64 @xt_node_read_text_file\(i32 \d+, i64\* %\w+\)/);
|
|
87
|
+
});
|
|
88
|
+
it("reports unsupported syntax instead of crashing", () => {
|
|
89
|
+
const { diagnostics } = compileToIr("class Foo {}");
|
|
90
|
+
expect(diagnostics.some((d) => d.category === "error")).toBe(true);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
//# sourceMappingURL=llvm.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llvm.test.js","sourceRoot":"","sources":["../../../tests/codegen/llvm.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|