@synth-deploy/server 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/dist/agent/debrief-retention.d.ts +12 -0
- package/dist/agent/debrief-retention.d.ts.map +1 -0
- package/dist/agent/debrief-retention.js +27 -0
- package/dist/agent/debrief-retention.js.map +1 -0
- package/dist/agent/envoy-client.d.ts +216 -0
- package/dist/agent/envoy-client.d.ts.map +1 -0
- package/dist/agent/envoy-client.js +266 -0
- package/dist/agent/envoy-client.js.map +1 -0
- package/dist/agent/envoy-registry.d.ts +102 -0
- package/dist/agent/envoy-registry.d.ts.map +1 -0
- package/dist/agent/envoy-registry.js +319 -0
- package/dist/agent/envoy-registry.js.map +1 -0
- package/dist/agent/health-checker.d.ts +39 -0
- package/dist/agent/health-checker.d.ts.map +1 -0
- package/dist/agent/health-checker.js +49 -0
- package/dist/agent/health-checker.js.map +1 -0
- package/dist/agent/mcp-client-manager.d.ts +36 -0
- package/dist/agent/mcp-client-manager.d.ts.map +1 -0
- package/dist/agent/mcp-client-manager.js +106 -0
- package/dist/agent/mcp-client-manager.js.map +1 -0
- package/dist/agent/stale-deployment-detector.d.ts +15 -0
- package/dist/agent/stale-deployment-detector.d.ts.map +1 -0
- package/dist/agent/stale-deployment-detector.js +50 -0
- package/dist/agent/stale-deployment-detector.js.map +1 -0
- package/dist/agent/step-runner.d.ts +31 -0
- package/dist/agent/step-runner.d.ts.map +1 -0
- package/dist/agent/step-runner.js +80 -0
- package/dist/agent/step-runner.js.map +1 -0
- package/dist/agent/synth-agent.d.ts +168 -0
- package/dist/agent/synth-agent.d.ts.map +1 -0
- package/dist/agent/synth-agent.js +1195 -0
- package/dist/agent/synth-agent.js.map +1 -0
- package/dist/api/agent.d.ts +36 -0
- package/dist/api/agent.d.ts.map +1 -0
- package/dist/api/agent.js +867 -0
- package/dist/api/agent.js.map +1 -0
- package/dist/api/api-keys.d.ts +4 -0
- package/dist/api/api-keys.d.ts.map +1 -0
- package/dist/api/api-keys.js +118 -0
- package/dist/api/api-keys.js.map +1 -0
- package/dist/api/artifacts.d.ts +5 -0
- package/dist/api/artifacts.d.ts.map +1 -0
- package/dist/api/artifacts.js +142 -0
- package/dist/api/artifacts.js.map +1 -0
- package/dist/api/auth.d.ts +4 -0
- package/dist/api/auth.d.ts.map +1 -0
- package/dist/api/auth.js +280 -0
- package/dist/api/auth.js.map +1 -0
- package/dist/api/deployments.d.ts +11 -0
- package/dist/api/deployments.d.ts.map +1 -0
- package/dist/api/deployments.js +1098 -0
- package/dist/api/deployments.js.map +1 -0
- package/dist/api/environments.d.ts +5 -0
- package/dist/api/environments.d.ts.map +1 -0
- package/dist/api/environments.js +69 -0
- package/dist/api/environments.js.map +1 -0
- package/dist/api/envoy-reports.d.ts +17 -0
- package/dist/api/envoy-reports.d.ts.map +1 -0
- package/dist/api/envoy-reports.js +138 -0
- package/dist/api/envoy-reports.js.map +1 -0
- package/dist/api/envoys.d.ts +5 -0
- package/dist/api/envoys.d.ts.map +1 -0
- package/dist/api/envoys.js +192 -0
- package/dist/api/envoys.js.map +1 -0
- package/dist/api/fleet.d.ts +11 -0
- package/dist/api/fleet.d.ts.map +1 -0
- package/dist/api/fleet.js +394 -0
- package/dist/api/fleet.js.map +1 -0
- package/dist/api/graph.d.ts +8 -0
- package/dist/api/graph.d.ts.map +1 -0
- package/dist/api/graph.js +355 -0
- package/dist/api/graph.js.map +1 -0
- package/dist/api/health.d.ts +20 -0
- package/dist/api/health.d.ts.map +1 -0
- package/dist/api/health.js +248 -0
- package/dist/api/health.js.map +1 -0
- package/dist/api/idp-schemas.d.ts +41 -0
- package/dist/api/idp-schemas.d.ts.map +1 -0
- package/dist/api/idp-schemas.js +17 -0
- package/dist/api/idp-schemas.js.map +1 -0
- package/dist/api/idp.d.ts +6 -0
- package/dist/api/idp.d.ts.map +1 -0
- package/dist/api/idp.js +620 -0
- package/dist/api/idp.js.map +1 -0
- package/dist/api/intake.d.ts +10 -0
- package/dist/api/intake.d.ts.map +1 -0
- package/dist/api/intake.js +418 -0
- package/dist/api/intake.js.map +1 -0
- package/dist/api/partitions.d.ts +5 -0
- package/dist/api/partitions.d.ts.map +1 -0
- package/dist/api/partitions.js +113 -0
- package/dist/api/partitions.js.map +1 -0
- package/dist/api/progress-event-store.d.ts +62 -0
- package/dist/api/progress-event-store.d.ts.map +1 -0
- package/dist/api/progress-event-store.js +118 -0
- package/dist/api/progress-event-store.js.map +1 -0
- package/dist/api/schemas.d.ts +1000 -0
- package/dist/api/schemas.d.ts.map +1 -0
- package/dist/api/schemas.js +328 -0
- package/dist/api/schemas.js.map +1 -0
- package/dist/api/security-boundaries.d.ts +4 -0
- package/dist/api/security-boundaries.d.ts.map +1 -0
- package/dist/api/security-boundaries.js +32 -0
- package/dist/api/security-boundaries.js.map +1 -0
- package/dist/api/settings.d.ts +4 -0
- package/dist/api/settings.d.ts.map +1 -0
- package/dist/api/settings.js +99 -0
- package/dist/api/settings.js.map +1 -0
- package/dist/api/system.d.ts +75 -0
- package/dist/api/system.d.ts.map +1 -0
- package/dist/api/system.js +558 -0
- package/dist/api/system.js.map +1 -0
- package/dist/api/telemetry.d.ts +4 -0
- package/dist/api/telemetry.d.ts.map +1 -0
- package/dist/api/telemetry.js +24 -0
- package/dist/api/telemetry.js.map +1 -0
- package/dist/api/users.d.ts +4 -0
- package/dist/api/users.d.ts.map +1 -0
- package/dist/api/users.js +173 -0
- package/dist/api/users.js.map +1 -0
- package/dist/archive-unpacker.d.ts +24 -0
- package/dist/archive-unpacker.d.ts.map +1 -0
- package/dist/archive-unpacker.js +239 -0
- package/dist/archive-unpacker.js.map +1 -0
- package/dist/artifact-analyzer.d.ts +59 -0
- package/dist/artifact-analyzer.d.ts.map +1 -0
- package/dist/artifact-analyzer.js +334 -0
- package/dist/artifact-analyzer.js.map +1 -0
- package/dist/auth/idp/index.d.ts +9 -0
- package/dist/auth/idp/index.d.ts.map +1 -0
- package/dist/auth/idp/index.js +5 -0
- package/dist/auth/idp/index.js.map +1 -0
- package/dist/auth/idp/ldap.d.ts +56 -0
- package/dist/auth/idp/ldap.d.ts.map +1 -0
- package/dist/auth/idp/ldap.js +276 -0
- package/dist/auth/idp/ldap.js.map +1 -0
- package/dist/auth/idp/oidc.d.ts +27 -0
- package/dist/auth/idp/oidc.d.ts.map +1 -0
- package/dist/auth/idp/oidc.js +97 -0
- package/dist/auth/idp/oidc.js.map +1 -0
- package/dist/auth/idp/role-mapping.d.ts +9 -0
- package/dist/auth/idp/role-mapping.d.ts.map +1 -0
- package/dist/auth/idp/role-mapping.js +16 -0
- package/dist/auth/idp/role-mapping.js.map +1 -0
- package/dist/auth/idp/saml.d.ts +40 -0
- package/dist/auth/idp/saml.d.ts.map +1 -0
- package/dist/auth/idp/saml.js +117 -0
- package/dist/auth/idp/saml.js.map +1 -0
- package/dist/auth/idp/types.d.ts +23 -0
- package/dist/auth/idp/types.d.ts.map +1 -0
- package/dist/auth/idp/types.js +2 -0
- package/dist/auth/idp/types.js.map +1 -0
- package/dist/fleet/fleet-executor.d.ts +35 -0
- package/dist/fleet/fleet-executor.d.ts.map +1 -0
- package/dist/fleet/fleet-executor.js +228 -0
- package/dist/fleet/fleet-executor.js.map +1 -0
- package/dist/fleet/fleet-store.d.ts +13 -0
- package/dist/fleet/fleet-store.d.ts.map +1 -0
- package/dist/fleet/fleet-store.js +13 -0
- package/dist/fleet/fleet-store.js.map +1 -0
- package/dist/fleet/index.d.ts +5 -0
- package/dist/fleet/index.d.ts.map +1 -0
- package/dist/fleet/index.js +4 -0
- package/dist/fleet/index.js.map +1 -0
- package/dist/fleet/representative-selector.d.ts +15 -0
- package/dist/fleet/representative-selector.d.ts.map +1 -0
- package/dist/fleet/representative-selector.js +71 -0
- package/dist/fleet/representative-selector.js.map +1 -0
- package/dist/graph/graph-executor.d.ts +36 -0
- package/dist/graph/graph-executor.d.ts.map +1 -0
- package/dist/graph/graph-executor.js +348 -0
- package/dist/graph/graph-executor.js.map +1 -0
- package/dist/graph/graph-inference.d.ts +22 -0
- package/dist/graph/graph-inference.d.ts.map +1 -0
- package/dist/graph/graph-inference.js +149 -0
- package/dist/graph/graph-inference.js.map +1 -0
- package/dist/graph/graph-store.d.ts +12 -0
- package/dist/graph/graph-store.d.ts.map +1 -0
- package/dist/graph/graph-store.js +61 -0
- package/dist/graph/graph-store.js.map +1 -0
- package/dist/graph/index.d.ts +5 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +4 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +837 -0
- package/dist/index.js.map +1 -0
- package/dist/intake/index.d.ts +6 -0
- package/dist/intake/index.d.ts.map +1 -0
- package/dist/intake/index.js +5 -0
- package/dist/intake/index.js.map +1 -0
- package/dist/intake/intake-processor.d.ts +17 -0
- package/dist/intake/intake-processor.d.ts.map +1 -0
- package/dist/intake/intake-processor.js +99 -0
- package/dist/intake/intake-processor.js.map +1 -0
- package/dist/intake/intake-store.d.ts +7 -0
- package/dist/intake/intake-store.d.ts.map +1 -0
- package/dist/intake/intake-store.js +7 -0
- package/dist/intake/intake-store.js.map +1 -0
- package/dist/intake/registry-poller.d.ts +41 -0
- package/dist/intake/registry-poller.d.ts.map +1 -0
- package/dist/intake/registry-poller.js +202 -0
- package/dist/intake/registry-poller.js.map +1 -0
- package/dist/intake/webhook-handlers.d.ts +37 -0
- package/dist/intake/webhook-handlers.d.ts.map +1 -0
- package/dist/intake/webhook-handlers.js +268 -0
- package/dist/intake/webhook-handlers.js.map +1 -0
- package/dist/logger.d.ts +5 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +15 -0
- package/dist/logger.js.map +1 -0
- package/dist/mcp/resources.d.ts +9 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +72 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/server.d.ts +15 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +20 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +9 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +88 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/middleware/auth.d.ts +29 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +76 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/permissions.d.ts +13 -0
- package/dist/middleware/permissions.d.ts.map +1 -0
- package/dist/middleware/permissions.js +32 -0
- package/dist/middleware/permissions.js.map +1 -0
- package/dist/pattern-store.d.ts +104 -0
- package/dist/pattern-store.d.ts.map +1 -0
- package/dist/pattern-store.js +299 -0
- package/dist/pattern-store.js.map +1 -0
- package/package.json +54 -0
- package/src/agent/debrief-retention.ts +44 -0
- package/src/agent/envoy-client.ts +474 -0
- package/src/agent/envoy-registry.ts +384 -0
- package/src/agent/health-checker.ts +70 -0
- package/src/agent/mcp-client-manager.ts +131 -0
- package/src/agent/stale-deployment-detector.ts +79 -0
- package/src/agent/step-runner.ts +124 -0
- package/src/agent/synth-agent.ts +1567 -0
- package/src/api/agent.ts +1075 -0
- package/src/api/api-keys.ts +129 -0
- package/src/api/artifacts.ts +194 -0
- package/src/api/auth.ts +320 -0
- package/src/api/deployments.ts +1347 -0
- package/src/api/environments.ts +97 -0
- package/src/api/envoy-reports.ts +159 -0
- package/src/api/envoys.ts +237 -0
- package/src/api/fleet.ts +510 -0
- package/src/api/graph.ts +516 -0
- package/src/api/health.ts +311 -0
- package/src/api/idp-schemas.ts +19 -0
- package/src/api/idp.ts +735 -0
- package/src/api/intake.ts +537 -0
- package/src/api/partitions.ts +147 -0
- package/src/api/progress-event-store.ts +153 -0
- package/src/api/schemas.ts +376 -0
- package/src/api/security-boundaries.ts +54 -0
- package/src/api/settings.ts +118 -0
- package/src/api/system.ts +704 -0
- package/src/api/telemetry.ts +32 -0
- package/src/api/users.ts +210 -0
- package/src/archive-unpacker.ts +271 -0
- package/src/artifact-analyzer.ts +438 -0
- package/src/auth/idp/index.ts +8 -0
- package/src/auth/idp/ldap.ts +340 -0
- package/src/auth/idp/oidc.ts +117 -0
- package/src/auth/idp/role-mapping.ts +22 -0
- package/src/auth/idp/saml.ts +148 -0
- package/src/auth/idp/types.ts +22 -0
- package/src/fleet/fleet-executor.ts +309 -0
- package/src/fleet/fleet-store.ts +13 -0
- package/src/fleet/index.ts +4 -0
- package/src/fleet/representative-selector.ts +83 -0
- package/src/graph/graph-executor.ts +446 -0
- package/src/graph/graph-inference.ts +184 -0
- package/src/graph/graph-store.ts +75 -0
- package/src/graph/index.ts +4 -0
- package/src/index.ts +916 -0
- package/src/intake/index.ts +5 -0
- package/src/intake/intake-processor.ts +111 -0
- package/src/intake/intake-store.ts +7 -0
- package/src/intake/registry-poller.ts +230 -0
- package/src/intake/webhook-handlers.ts +328 -0
- package/src/logger.ts +19 -0
- package/src/mcp/resources.ts +98 -0
- package/src/mcp/server.ts +34 -0
- package/src/mcp/tools.ts +117 -0
- package/src/middleware/auth.ts +103 -0
- package/src/middleware/permissions.ts +35 -0
- package/src/pattern-store.ts +409 -0
- package/tests/agent-mode.test.ts +536 -0
- package/tests/api-handlers.test.ts +1245 -0
- package/tests/archive-unpacker.test.ts +179 -0
- package/tests/artifact-analyzer.test.ts +240 -0
- package/tests/auth-middleware.test.ts +189 -0
- package/tests/decision-diary.test.ts +957 -0
- package/tests/diary-reader.test.ts +782 -0
- package/tests/envoy-client.test.ts +342 -0
- package/tests/envoy-reports.test.ts +156 -0
- package/tests/mcp-tools.test.ts +213 -0
- package/tests/orchestration.test.ts +536 -0
- package/tests/partition-deletion.test.ts +143 -0
- package/tests/partition-isolation.test.ts +830 -0
- package/tests/pattern-store.test.ts +371 -0
- package/tests/rbac-enforcement.test.ts +409 -0
- package/tests/ssrf-validation.test.ts +56 -0
- package/tests/stale-deployment.test.ts +85 -0
- package/tests/step-runner.test.ts +308 -0
- package/tests/ui-journey.test.ts +330 -0
- package/tsconfig.json +11 -0
- package/vitest.config.ts +27 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/api/deployments.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAEjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,EAC1B,gBAAgB,EAChB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,GAAoB,EACpB,WAA6B,EAC7B,OAAsC,EACtC,UAA2B,EAC3B,YAA+B,EAC/B,aAA6B,EAC7B,QAAwB,EACxB,SAA0B,EAC1B,aAAkC,EAClC,WAAyB,EACzB,aAA6B,EAC7B,GAAe;IAEf,mCAAmC;IACnC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC9G,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;QAEjF,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,UAAU,EAAE,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,6EAA6E;QAC7E,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,IAAI,aAAa,IAAI,CAAC,WAAW,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,aAAa,EAAE,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,iCAAiC;QACjC,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,IAAI,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,WAAW,EAAE,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,6BAA6B;QAC7B,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,IAAI,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,2FAA2F;QAC3F,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,aAAa,GAAG,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;QACjD,MAAM,QAAQ,GAA2B,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;QAE1E,MAAM,UAAU,GAAG;YACjB,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;YACvB,UAAU;YACV,aAAa;YACb,WAAW;YACX,OAAO,EAAE,WAAW,EAAE,EAAE;YACxB,OAAO,EAAE,OAAO,IAAI,EAAE;YACtB,MAAM,EAAE,SAAkB;YAC1B,SAAS,EAAE,QAAQ;YACnB,eAAe,EAAE,EAAc;YAC/B,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QAEF,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,WAAW,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAEjN,6DAA6D;QAC7D,4EAA4E;QAC5E,yDAAyD;QACzD,IAAI,aAAa,EAAE,CAAC;YAClB,mFAAmF;YACnF,MAAM,aAAa,GAAG,WAAW;mBAC5B,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;mBAC9E,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAE7B,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,cAAc,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC1D,MAAM,sBAAsB,GAAG,WAAW;oBACxC,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE;oBAClF,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;gBAElF,cAAc,CAAC,WAAW,CAAC;oBACzB,YAAY,EAAE,UAAU,CAAC,EAAE;oBAC3B,QAAQ,EAAE;wBACR,EAAE,EAAE,QAAQ,CAAC,EAAE;wBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,QAAQ,EAAE;4BACR,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;4BAClC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY;4BAC5C,yBAAyB,EAAE,QAAQ,CAAC,QAAQ,CAAC,yBAAyB;4BACtE,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC,gBAAgB;4BACpD,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU;yBACzC;qBACF;oBACD,WAAW,EAAE,sBAAsB;oBACnC,SAAS,EAAE,SAAS;wBAClB,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE;wBAC5E,CAAC,CAAC,SAAS;oBACb,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,iBAAiB,EAAE,QAAQ;iBAC5B,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;oBACjB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBAC3C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;wBAAE,OAAO;oBAE7C,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;oBACvB,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;oBACvC,GAAG,CAAC,OAAO,GAAG,aAAa,CAAC,EAAE,CAAC;oBAE/B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBACnB,qFAAqF;wBACrF,GAAG,CAAC,MAAM,GAAG,QAA6B,CAAC;wBAC3C,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,IAAI,yDAAyD,CAAC;wBACpG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAEtB,OAAO,CAAC,MAAM,CAAC;4BACb,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;4BACpC,YAAY,EAAE,GAAG,CAAC,EAAE;4BACpB,KAAK,EAAE,OAAO;4BACd,YAAY,EAAE,iBAAyE;4BACvF,QAAQ,EAAE,gEAAgE;4BAC1E,SAAS,EAAE,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS;4BACtD,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;yBAC3F,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,kDAAkD;wBAClD,GAAG,CAAC,MAAM,GAAG,mBAAwC,CAAC;wBACtD,GAAG,CAAC,cAAc,GAAG,qBAAqB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;wBACvF,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAEtB,OAAO,CAAC,MAAM,CAAC;4BACb,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;4BACpC,YAAY,EAAE,GAAG,CAAC,EAAE;4BACpB,KAAK,EAAE,OAAO;4BACd,YAAY,EAAE,iBAAyE;4BACvF,QAAQ,EAAE,kCAAkC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ;4BAC5E,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;4BAChC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;yBACjG,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACf,sEAAsE;oBACtE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBAC3C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;wBAAE,OAAO;oBAE7C,GAAG,CAAC,MAAM,GAAG,QAA6B,CAAC;oBAC3C,GAAG,CAAC,aAAa,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC;oBAC3E,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAEtB,OAAO,CAAC,MAAM,CAAC;wBACb,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;wBACpC,YAAY,EAAE,GAAG,CAAC,EAAE;wBACpB,KAAK,EAAE,QAAQ;wBACf,YAAY,EAAE,oBAA4E;wBAC1F,QAAQ,EAAE,uBAAuB;wBACjC,SAAS,EAAE,GAAG,CAAC,aAAc;wBAC7B,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE;qBACjE,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,uBAAuB;IACvB,GAAG,CAAC,GAAG,CAA6B,sBAAsB,EAAE,EAAE,UAAU,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC3I,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,OAAO;YACL,UAAU;YACV,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;SAChD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,GAAG,CAAC,GAAG,CAA6B,gCAAgC,EAAE,EAAE,UAAU,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACrJ,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAC5E,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACjC,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC;QAC3C,MAAM,aAAa,GAAG,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC;QAC9C,MAAM,QAAQ,GAAG,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,eAAe,CAAC;QAE7E,OAAO;YACL,eAAe;YACf,aAAa;YACb,QAAQ;YACR,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;SACrF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpG,MAAM,OAAO,GAAG,yBAAyB,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAEjF,IAAI,IAAI,CAAC;QACT,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,GAAG,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,UAAU,EAAE,CAAC;YACtB,IAAI,GAAG,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,yEAAyE;IACzE,GAAG,CAAC,IAAI,CACN,2BAA2B,EAC3B,EAAE,UAAU,EAAE,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,EAAE,EACxD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACtG,CAAC;QAED,IAAK,UAAU,CAAC,MAAiB,KAAK,SAAS,IAAK,UAAU,CAAC,MAAiB,KAAK,UAAU,EAAE,CAAC;YAChG,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yCAAyC,UAAU,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC;QACjH,CAAC;QAED,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACnC,UAAU,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QACnD,UAAU,CAAC,MAAM,GAAG,mBAA+C,CAAC;QAEpE,kDAAkD;QAClD,UAAU,CAAC,cAAc,GAAG,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAE3E,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7B,OAAO,CAAC,MAAM,CAAC;YACb,WAAW,EAAE,UAAU,CAAC,WAAW,IAAI,IAAI;YAC3C,YAAY,EAAE,UAAU,CAAC,EAAE;YAC3B,KAAK,EAAE,OAAO;YACd,YAAY,EAAE,iBAAyE;YACvF,QAAQ,EAAE,kCAAkC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ;YACjF,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS;YACrC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;SACtD,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC,CACF,CAAC;IAEF,4BAA4B;IAC5B,GAAG,CAAC,IAAI,CACN,8BAA8B,EAC9B,EAAE,UAAU,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,EAAE,EACzD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,IAAK,UAAU,CAAC,MAAiB,KAAK,mBAAmB,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iCAAiC,UAAU,CAAC,MAAM,wCAAwC,EAAE,CAAC,CAAC;QACvI,CAAC;QAED,+BAA+B;QAC/B,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QAC/C,UAAU,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QACnC,UAAU,CAAC,MAAM,GAAG,UAAsC,CAAC;QAC3D,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QAE9D,6BAA6B;QAC7B,OAAO,CAAC,MAAM,CAAC;YACb,WAAW,EAAE,UAAU,CAAC,WAAW,IAAI,IAAI;YAC3C,YAAY,EAAE,UAAU,CAAC,EAAE;YAC3B,KAAK,EAAE,QAAQ;YACf,YAAY,EAAE,QAAQ;YACtB,QAAQ,EAAE,0BAA0B,KAAK,EAAE;YAC3C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa;gBAClC,CAAC,CAAC,gCAAgC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;gBAC7D,CAAC,CAAC,gCAAgC;YACpC,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;YAC9B,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK;SAC3B,CAAC,CAAC;QACH,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACrK,SAAS,CAAC,MAAM,CAAC;YACf,KAAK;YACL,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,+BAA+B;YACvG,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE;YACjD,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa;gBAChC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;gBAC9C,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;SAC1D,CAAC,CAAC;QAEH,gDAAgD;QAChD,IAAI,WAAW,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC;YAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,oBAAoB,UAAU,EAAE,CAAC;YACnF,MAAM,mBAAmB,GAAG,GAAG,SAAS,oBAAoB,UAAU,CAAC,EAAE,WAAW,CAAC;YACrF,MAAM,aAAa,GAAG,aAAa,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;YAExF,UAAU,CAAC,MAAM,GAAG,SAAqC,CAAC;YAC1D,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE7B,qEAAqE;YACrE,WAAW,CAAC,mBAAmB,CAAC;gBAC9B,YAAY,EAAE,UAAU,CAAC,EAAE;gBAC3B,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,YAAY,EAAE,UAAU,CAAC,YAAY;gBACrC,YAAY,EAAE,QAAQ,EAAE,IAAI,IAAI,SAAS;gBACzC,YAAY,EAAE,QAAQ,EAAE,IAAI,IAAI,SAAS;gBACzC,aAAa,EAAE,UAAU,CAAC,aAAa,IAAI,EAAE;gBAC7C,mBAAmB;gBACnB,aAAa;aACd,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACf,6CAA6C;gBAC7C,UAAU,CAAC,MAAM,GAAG,QAAoC,CAAC;gBACzD,UAAU,CAAC,aAAa,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC;gBAC5F,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAE7B,OAAO,CAAC,MAAM,CAAC;oBACb,WAAW,EAAE,UAAU,CAAC,WAAW,IAAI,IAAI;oBAC3C,YAAY,EAAE,UAAU,CAAC,EAAE;oBAC3B,KAAK,EAAE,QAAQ;oBACf,YAAY,EAAE,oBAA4E;oBAC1F,QAAQ,EAAE,2CAA2C;oBACrD,SAAS,EAAE,UAAU,CAAC,aAAc;oBACpC,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,aAAa,EAAE;iBAC7C,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC,CACF,CAAC;IAEF,2BAA2B;IAC3B,GAAG,CAAC,IAAI,CACN,6BAA6B,EAC7B,EAAE,UAAU,EAAE,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,EAAE,EACxD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,IAAK,UAAU,CAAC,MAAiB,KAAK,mBAAmB,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,UAAU,CAAC,MAAM,wCAAwC,EAAE,CAAC,CAAC;QACtI,CAAC;QAED,0DAA0D;QAC1D,UAAU,CAAC,MAAM,GAAG,UAAsC,CAAC;QAC3D,UAAU,CAAC,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QAChD,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,WAAW,CAAC;QAEnD,8BAA8B;QAC9B,OAAO,CAAC,MAAM,CAAC;YACb,WAAW,EAAE,UAAU,CAAC,WAAW,IAAI,IAAI;YAC3C,YAAY,EAAE,UAAU,CAAC,EAAE;YAC3B,KAAK,EAAE,QAAQ;YACf,YAAY,EAAE,QAAQ;YACtB,QAAQ,EAAE,0BAA0B;YACpC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;YAC7B,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;YACvC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK;SAC3B,CAAC,CAAC;QACH,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEvJ,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC,CACF,CAAC;IAEF,8DAA8D;IAC9D,GAAG,CAAC,IAAI,CACN,6BAA6B,EAC7B,EAAE,UAAU,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,EAAE,EACzD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,MAAM,GAAG,0BAA0B,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,IAAK,UAAU,CAAC,MAAiB,KAAK,mBAAmB,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,UAAU,CAAC,MAAM,wCAAwC,EAAE,CAAC,CAAC;QACtI,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,iDAAiD;QACjD,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;oBACtB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBAC5B,KAAK,EAAE,uCAAuC;wBAC9C,UAAU,EAAE,UAAU,CAAC,UAAU;qBAClC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,6DAA6D;YAC/D,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACnC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9F,CAAC;iBAAM,IAAI,CAAC,GAAG,EAAE,CAAC;gBAChB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAChG,CAAC;iBAAM,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;gBACzG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvG,IAAI,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;oBACxC,SAAS,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC5C,SAAS,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,oBAAoB,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;YAC/C,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,CAAC,CAAC,qEAAqE,CAAC;QAE1E,sBAAsB;QACtB,UAAU,CAAC,IAAI,GAAG;YAChB,GAAG,UAAU,CAAC,IAAI;YAClB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;YACxB,oBAAoB;SACrB,CAAC;QACF,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,WAAW,CAAC;QAEnD,iCAAiC;QACjC,OAAO,CAAC,MAAM,CAAC;YACb,WAAW,EAAE,UAAU,CAAC,WAAW,IAAI,IAAI;YAC3C,YAAY,EAAE,UAAU,CAAC,EAAE;YAC3B,KAAK,EAAE,QAAQ;YACf,YAAY,EAAE,mBAA2E;YACzF,QAAQ,EAAE,+BAA+B,KAAK,EAAE;YAChD,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;YAC7B,OAAO,EAAE;gBACP,UAAU,EAAE,KAAK;gBACjB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;gBACnC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;aAC3B;YACD,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK;SAC3B,CAAC,CAAC;QACH,SAAS,CAAC,MAAM,CAAC;YACf,KAAK;YACL,MAAM,EAAE,qBAAyE;YACjF,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE;YACjD,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;SAC7E,CAAC,CAAC;QACH,SAAS,CAAC,MAAM,CAAC;YACf,KAAK;YACL,MAAM,EAAE,iCAAiC;YACzC,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE;YACjD,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE;SACzG,CAAC,CAAC;QAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC,CACF,CAAC;IAEF,4EAA4E;IAC5E,GAAG,CAAC,IAAI,CACN,6BAA6B,EAC7B,EAAE,UAAU,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,EAAE,EACzD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,IAAK,UAAU,CAAC,MAAiB,KAAK,mBAAmB,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,UAAU,CAAC,MAAM,wCAAwC,EAAE,CAAC,CAAC;QACtI,CAAC;QAED,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC3F,CAAC;QAED,MAAM,WAAW,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtG,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9F,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7G,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,gEAAgE;QAChE,MAAM,2BAA2B,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACvE,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,2BAA2B,CAAC,0BAA0B,CAAC;gBAC9E,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;gBAC9B,gBAAgB,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC3D,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,MAAM,EAAE,CAAC,CAAC,MAAM;iBACjB,CAAC,CAAC;gBACH,YAAY,EAAE,QAAQ,EAAE,IAAI,IAAI,SAAS;gBACzC,eAAe,EAAE,WAAW,EAAE,IAAI,IAAI,SAAS;aAChD,CAAC,CAAC;YACH,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACpC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACnC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;YACnF,CAAC;YACD,kDAAkD;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,6EAA6E;QAC/E,CAAC;QAED,UAAU,CAAC,MAAM,GAAG,UAAsC,CAAC;QAC3D,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,cAAc,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC1D,MAAM,sBAAsB,GAAG,WAAW;YACxC,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE;YAClF,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QAElF,IAAI,MAA8D,CAAC;QACnE,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC;gBACxC,YAAY;gBACZ,QAAQ,EAAE;oBACR,EAAE,EAAE,QAAQ,CAAC,EAAE;oBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,QAAQ,EAAE;wBACR,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;wBAClC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY;wBAC5C,yBAAyB,EAAE,QAAQ,CAAC,QAAQ,CAAC,yBAAyB;wBACtE,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC,gBAAgB;wBACpD,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU;qBACzC;iBACF;gBACD,WAAW,EAAE,sBAAsB;gBACnC,SAAS,EAAE,SAAS;oBAClB,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE;oBAC5E,CAAC,CAAC,SAAS;gBACb,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,iBAAiB,EAAE,UAAU,CAAC,SAAS;gBACvC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;aACzC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1C,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,MAAM,GAAG,mBAAwC,CAAC;gBACtD,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACrG,CAAC;QAED,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACvB,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACvC,GAAG,CAAC,cAAc,GAAG,qBAAqB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACvF,GAAG,CAAC,MAAM,GAAG,mBAAwC,CAAC;QACtD,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEtB,OAAO,CAAC,MAAM,CAAC;YACb,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;YACpC,YAAY,EAAE,GAAG,CAAC,EAAE;YACpB,KAAK,EAAE,OAAO;YACd,YAAY,EAAE,iBAAyE;YACvF,QAAQ,EAAE,wCAAwC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,SAAS;YACnF,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;YAChC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;SACtH,CAAC,CAAC;QAEH,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC,CACF,CAAC;IAEF,uDAAuD;IACvD,GAAG,CAAC,GAAG,CACL,8BAA8B,EAC9B,EAAE,UAAU,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,EAAE,EACtD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAEzE,+FAA+F;QAC/F,MAAM,sBAAsB,GAAG,UAAU,CAAC,aAAa;YACrD,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,UAAU,CAAC,aAAa,EAAE,kBAAkB,CAAC;YAC9E,CAAC,CAAC,CAAC,CAAC;QAEN,gEAAgE;QAChE,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO;YAC7C,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAC/B,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,OAAO,EAClB,aAAa,CACd,CAAC,MAAM,GAAG,CAAC;YACd,CAAC,CAAC,KAAK,CAAC;QAEV,kEAAkE;QAClE,MAAM,sBAAsB,GAAG,UAAU,CAAC,aAAa;YACrD,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE;iBACf,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,aAAa,KAAK,UAAU,CAAC,aAAa;gBAC5C,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE;gBACtB,CAAE,CAAC,CAAC,MAAiB,KAAK,SAAS,IAAK,CAAC,CAAC,MAAiB,KAAK,UAAU,IAAK,CAAC,CAAC,MAAiB,KAAK,mBAAmB,CAAC,CAC9H;iBACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,CAAC,CAAC,EAAE,CAAC;QAEP,+CAA+C;QAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa;YACzC,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,UAAU,CAAC,aAAa,CAAC;YAC/D,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,mBAAmB,GAAG,UAAU,IAAI,UAAU,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE;YACvE,CAAC,CAAC;gBACE,EAAE,EAAE,UAAU,CAAC,EAAE;gBACjB,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,WAAW,EAAE,UAAU,CAAC,WAAW;aACpC;YACH,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,UAAU,GAAyB;YACvC,sBAAsB;YACtB,oBAAoB;YACpB,sBAAsB;YACtB,mBAAmB;SACpB,CAAC;QAEF,OAAO;YACL,UAAU;YACV,cAAc,EAAE,UAAU,CAAC,cAAc,IAAI,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC;SAC5F,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,oEAAoE;IACpE,yDAAyD;IACzD,GAAG,CAAC,IAAI,CACN,4CAA4C,EAC5C,EAAE,UAAU,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,EAAE,EACzD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,MAAgB,CAAC,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,KAAK,EAAE,mDAAmD,UAAU,CAAC,MAAM,wCAAwC;aACpH,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,+BAA+B;QAC/B,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO;YACpC,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;YACxC,CAAC,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7B,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8CAA8C,EAAE,CAAC,CAAC;QAC3F,CAAC;QAED,MAAM,WAAW,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtG,gFAAgF;QAChF,MAAM,cAAc,GAMf,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjD,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,SAAS;YAChG,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,EAAE;YACzF,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK;SAC5B,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,WAAoB;SAC7B,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,MAAM,cAAc,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,mBAAmB,CAAC;gBAC5D,YAAY,EAAE,UAAU,CAAC,EAAE;gBAC3B,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,QAAQ,EAAE;wBACR,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;wBAClC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY;wBAC5C,yBAAyB,EAAE,QAAQ,CAAC,QAAQ,CAAC,yBAAyB;wBACtE,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC,gBAAgB;wBACpD,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU;qBACzC;iBACF;gBACD,WAAW,EAAE;oBACX,EAAE,EAAE,UAAU,CAAC,aAAa,IAAI,EAAE;oBAClC,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,UAAU,CAAC,aAAa,IAAI,SAAS;iBACjE;gBACD,cAAc;gBACd,iBAAiB,EAAE,UAAU,CAAC,SAAS;gBACvC,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,aAAa,EAAE,UAAU,CAAC,aAAa,IAAI,SAAS;aACrD,CAAC,CAAC;YAEH,sDAAsD;YACtD,UAAU,CAAC,YAAY,GAAG,YAAY,CAAC;YACvC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE7B,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,WAAW,CAAC;YAEnD,OAAO,CAAC,MAAM,CAAC;gBACb,WAAW,EAAE,UAAU,CAAC,WAAW,IAAI,IAAI;gBAC3C,YAAY,EAAE,UAAU,CAAC,EAAE;gBAC3B,KAAK,EAAE,QAAQ;gBACf,YAAY,EAAE,iBAAyE;gBACvF,QAAQ,EAAE,6CAA6C,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE;gBAC7F,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,OAAO,EAAE;oBACP,WAAW,EAAE,KAAK;oBAClB,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM;oBACpC,OAAO,EAAE,WAAW,CAAC,EAAE;oBACvB,gBAAgB,EAAE,UAAU,CAAC,MAAM;iBACpC;gBACD,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK;aAC3B,CAAC,CAAC;YACH,SAAS,CAAC,MAAM,CAAC;gBACf,KAAK;gBACL,MAAM,EAAE,oCAAwF;gBAChG,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE;gBACjD,OAAO,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE;aAClD,CAAC,CAAC;YAEH,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,KAAK,EAAE,kCAAkC;gBACzC,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aAC1D,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CACF,CAAC;IAEF,qEAAqE;IACrE,GAAG,CAAC,IAAI,CACN,uCAAuC,EACvC,EAAE,UAAU,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,EAAE,EACzD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gDAAgD,EAAE,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,MAAgB,CAAC,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,KAAK,EAAE,8CAA8C,UAAU,CAAC,MAAM,UAAU;aACjF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO;YACpC,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;YACxC,CAAC,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7B,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,WAAW,CAAC;QACnD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC;QAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,oBAAoB,UAAU,EAAE,CAAC;QACnF,MAAM,mBAAmB,GAAG,GAAG,SAAS,oBAAoB,UAAU,CAAC,EAAE,WAAW,CAAC;QAErF,UAAU,CAAC,MAAM,GAAG,SAAqC,CAAC;QAC1D,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7B,OAAO,CAAC,MAAM,CAAC;YACb,WAAW,EAAE,UAAU,CAAC,WAAW,IAAI,IAAI;YAC3C,YAAY,EAAE,UAAU,CAAC,EAAE;YAC3B,KAAK,EAAE,QAAQ;YACf,YAAY,EAAE,oBAA4E;YAC1F,QAAQ,EAAE,oCAAoC,QAAQ,EAAE,IAAI,IAAI,UAAU,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO,EAAE;YAC9G,SAAS,EAAE,yBAAyB,KAAK,eAAe,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,oBAAoB;YAChH,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE;YAChF,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK;SAC3B,CAAC,CAAC;QACH,SAAS,CAAC,MAAM,CAAC;YACf,KAAK;YACL,MAAM,EAAE,8BAAkF;YAC1F,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE;YACjD,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE;SAC7D,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAExD,gFAAgF;QAChF,0FAA0F;QAC1F,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC;QAEvE,cAAc,CAAC,mBAAmB,CAAC;YACjC,YAAY,EAAE,UAAU,CAAC,EAAE;YAC3B,IAAI,EAAE,UAAU,CAAC,YAAY;YAC7B,YAAY,EAAE,SAAS;YACvB,YAAY,EAAE,QAAQ,EAAE,IAAI,IAAI,SAAS;YACzC,YAAY,EAAE,QAAQ,EAAE,IAAI,IAAI,SAAS;YACzC,aAAa,EAAE,UAAU,CAAC,aAAa,IAAI,EAAE;YAC7C,mBAAmB;YACnB,aAAa,EAAE,WAAW,CAAC,KAAK;SACjC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACjB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,GAAG;gBAAE,OAAO;YAEjB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,aAAkC,CAAC,CAAC,CAAC,QAA6B,CAAC;YACjG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,2BAA2B,CAAC;YAC1E,CAAC;YACD,GAAG,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;YAC7B,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEtB,OAAO,CAAC,MAAM,CAAC;gBACb,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;gBACpC,YAAY,EAAE,GAAG,CAAC,EAAE;gBACpB,KAAK,EAAE,QAAQ;gBACf,YAAY,EAAE,oBAA4E;gBAC1F,QAAQ,EAAE,MAAM,CAAC,OAAO;oBACtB,CAAC,CAAC,uCAAuC,QAAQ,EAAE,IAAI,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,OAAO,EAAE;oBAC3F,CAAC,CAAC,uBAAuB,QAAQ,EAAE,IAAI,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,OAAO,EAAE;gBAC7E,SAAS,EAAE,MAAM,CAAC,OAAO;oBACvB,CAAC,CAAC,2CAA2C;oBAC7C,CAAC,CAAC,oBAAoB,MAAM,CAAC,aAAa,EAAE;gBAC9C,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE;aAC1E,CAAC,CAAC;QACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,GAAG;gBAAE,OAAO;YAEjB,GAAG,CAAC,MAAM,GAAG,QAA6B,CAAC;YAC3C,GAAG,CAAC,aAAa,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC;YAC9F,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC,CACF,CAAC;IAEF,oFAAoF;IACpF,GAAG,CAAC,IAAI,CACN,4BAA4B,EAC5B,EAAE,UAAU,EAAE,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,EAAE,EACxD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,0DAA0D;QAC1D,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,MAAM,GAA8B,MAAM,CAAC;QAC/C,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC;YACvB,aAAa,EAAE,CAAC;YAChB,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,aAAa,EAAE,CAAC,CAAC,kCAAkC;QAEnD,iCAAiC;QACjC,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACvF,CAAC;QAED,2DAA2D;QAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9F,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAC7F,CAAC;QAED,yDAAyD;QACzD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtF,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACzF,CAAC;QAED,qDAAqD;QACrD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,0DAA0D;QAC1D,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,aAAa,GAAG,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;QACjD,MAAM,QAAQ,GAA2B,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;QAE1E,MAAM,UAAU,GAAG;YACjB,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;YACvB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,WAAW,EAAE,EAAE;YACxB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,MAAM,EAAE,SAAkB;YAC1B,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,MAAM,CAAC,EAAE;YAClB,eAAe,EAAE,EAAc;YAC/B,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QAEF,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,WAAW,CAAC;QACnD,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAE5Q,6BAA6B;QAC7B,OAAO,CAAC,MAAM,CAAC;YACb,WAAW,EAAE,UAAU,CAAC,WAAW,IAAI,IAAI;YAC3C,YAAY,EAAE,UAAU,CAAC,EAAE;YAC3B,KAAK,EAAE,QAAQ;YACf,YAAY,EAAE,QAAQ;YACtB,QAAQ,EAAE,uBAAuB,MAAM,CAAC,EAAE,cAAc,aAAa,GAAG;YACxE,SAAS,EAAE,sCAAsC,MAAM,CAAC,EAAE,uDAAuD;YACjH,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;YACrD,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK;SAC3B,CAAC,CAAC;QAEH,0DAA0D;QAC1D,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,aAAa,GAAG,WAAW;mBAC5B,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;mBAC9E,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAE7B,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,cAAc,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC1D,MAAM,sBAAsB,GAAG,WAAW;oBACxC,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE;oBAClF,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;gBAElF,cAAc,CAAC,WAAW,CAAC;oBACzB,YAAY,EAAE,UAAU,CAAC,EAAE;oBAC3B,QAAQ,EAAE;wBACR,EAAE,EAAE,QAAQ,CAAC,EAAE;wBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,QAAQ,EAAE;4BACR,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;4BAClC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY;4BAC5C,yBAAyB,EAAE,QAAQ,CAAC,QAAQ,CAAC,yBAAyB;4BACtE,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC,gBAAgB;4BACpD,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU;yBACzC;qBACF;oBACD,WAAW,EAAE,sBAAsB;oBACnC,SAAS,EAAE,SAAS;wBAClB,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE;wBAC5E,CAAC,CAAC,SAAS;oBACb,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,iBAAiB,EAAE,QAAQ;iBAC5B,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;oBACjB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBAC3C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;wBAAE,OAAO;oBAE7C,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;oBACvB,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;oBACvC,GAAG,CAAC,OAAO,GAAG,aAAa,CAAC,EAAE,CAAC;oBAE/B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBACnB,GAAG,CAAC,MAAM,GAAG,QAA6B,CAAC;wBAC3C,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,IAAI,yDAAyD,CAAC;wBACpG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAEtB,OAAO,CAAC,MAAM,CAAC;4BACb,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;4BACpC,YAAY,EAAE,GAAG,CAAC,EAAE;4BACpB,KAAK,EAAE,OAAO;4BACd,YAAY,EAAE,iBAAyE;4BACvF,QAAQ,EAAE,gEAAgE;4BAC1E,SAAS,EAAE,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS;4BACtD,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;yBAC3F,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,MAAM,GAAG,mBAAwC,CAAC;wBACtD,GAAG,CAAC,cAAc,GAAG,qBAAqB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;wBACvF,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAEtB,OAAO,CAAC,MAAM,CAAC;4BACb,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;4BACpC,YAAY,EAAE,GAAG,CAAC,EAAE;4BACpB,KAAK,EAAE,OAAO;4BACd,YAAY,EAAE,iBAAyE;4BACvF,QAAQ,EAAE,kCAAkC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ;4BAC5E,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;4BAChC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;yBACjG,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACf,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBAC3C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;wBAAE,OAAO;oBAE7C,GAAG,CAAC,MAAM,GAAG,QAA6B,CAAC;oBAC3C,GAAG,CAAC,aAAa,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC;oBAC3E,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAEtB,OAAO,CAAC,MAAM,CAAC;wBACb,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;wBACpC,YAAY,EAAE,GAAG,CAAC,EAAE;wBACpB,KAAK,EAAE,QAAQ;wBACf,YAAY,EAAE,oBAA4E;wBAC1F,QAAQ,EAAE,uBAAuB;wBACjC,SAAS,EAAE,GAAG,CAAC,aAAc;wBAC7B,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE;qBACjE,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;IAC9F,CAAC,CACF,CAAC;IAEF,4BAA4B;IAC5B,GAAG,CAAC,GAAG,CACL,iCAAiC,EACjC,EAAE,UAAU,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,EAAE,EACtD,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QAC1E,OAAO;YACL,UAAU;YACV,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC,aAAa,EAAE,CAAC;SACnF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,iFAAiF;IACjF,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChG,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAEjF,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC;QAExB,yBAAyB;QACzB,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,CAAC;QAED,oDAAoD;QACpD,IAAI,OAAkD,CAAC;QACvD,IAAI,WAAW,IAAI,YAAY,EAAE,CAAC;YAChC,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,MAAM,CAClD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,YAAY,CACvC,CAAC;QACJ,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACvB,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,YAAuD,CAAC,CAAC;QACvF,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAC9E,wDAAwD;IACxD,8EAA8E;IAE9E,2EAA2E;IAC3E,GAAG,CAAC,IAAI,CACN,+BAA+B,EAC/B,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,4DAA4D;QAC5D,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAW,CAAC;YACnE,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5E,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACrG,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;QAE1B,wDAAwD;QACxD,IAAI,KAAK,CAAC,YAAY,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gDAAgD,EAAE,CAAC,CAAC;QAC7F,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC,CACF,CAAC;IAEF,mEAAmE;IACnE,wEAAwE;IACxE,GAAG,CAAC,GAAG,CACL,6BAA6B,EAC7B,EAAE,UAAU,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,EAAE,EACtD,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACjB,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,kEAAkE;QAClE,KAAK,CAAC,MAAM,EAAE,CAAC;QAEf,kBAAkB;QAClB,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACvB,cAAc,EAAE,mBAAmB;YACnC,eAAe,EAAE,UAAU;YAC3B,YAAY,EAAE,YAAY;YAC1B,mBAAmB,EAAE,IAAI;SAC1B,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAEvC,4DAA4D;QAC5D,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpF,iFAAiF;QACjF,MAAM,QAAQ,GAAG,WAAW;YAC1B,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC;YACzD,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzE,CAAC;QAED,sEAAsE;QACtE,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChD,IAAI,SAAS,EAAE,IAAI,KAAK,sBAAsB,EAAE,CAAC;YAC/C,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,CAAC,KAA0D,EAAE,EAAE;YAC9E,IAAI,CAAC;gBACH,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAEvE,6CAA6C;gBAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;oBAC1C,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBAClB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,iCAAiC;gBACjC,aAAc,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACxD,CAAC;QACH,CAAC,CAAC;QAEF,aAAa,CAAC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAElD,gCAAgC;QAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC3B,aAAc,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAE9E,SAAS,qBAAqB,CAC5B,UAAmD,EACnD,KAAuB,EACvB,UAAmB;IAEnB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,OAAO,GAA0B,SAAS,CAAC;IAE/C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAEzE,2CAA2C;IAC3C,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,KAAK,CAAC,qBAAqB,CAC5C,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,OAAO,EAClB,aAAa,CACd,CAAC;QACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,GAAG,SAAS,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CACrC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,aAAa,KAAK,UAAU,CAAC,aAAa;YAC5C,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE;YACtB,CAAE,CAAC,CAAC,MAAiB,KAAK,SAAS,IAAK,CAAC,CAAC,MAAiB,KAAK,UAAU,CAAC,CAC9E,CAAC;QACF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,GAAG,MAAM,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,uDAAuD,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,WAAW,GAAG,UAAU,CAAC,aAAa;QAC1C,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAC,aAAa,EAAE,kBAAkB,CAAC;QACxE,CAAC,CAAC,CAAC,CAAC;IACN,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,GAAG,SAAS,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,8BAA8B,WAAW,8BAA8B,CAAC,CAAC;IACxF,CAAC;IAED,+BAA+B;IAC/B,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa;QACzC,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,aAAa,CAAC;QACzD,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,UAAU,IAAI,UAAU,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,EAAE,CAAC;QAClD,IAAK,UAAU,CAAC,MAAiB,KAAK,QAAQ,IAAK,UAAU,CAAC,MAAiB,KAAK,aAAa,EAAE,CAAC;YAClG,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,GAAG,SAAS,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,uCAAuC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3E,CAAC;aAAM,IAAK,UAAU,CAAC,MAAiB,KAAK,WAAW,EAAE,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,UAAU,GAA0C;QACxD,OAAO,EAAE,oEAAoE;QAC7E,OAAO,EAAE,iEAAiE;QAC1E,IAAI,EAAE,0DAA0D;KACjE,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FastifyInstance } from "fastify";
|
|
2
|
+
import type { IEnvironmentStore, ITelemetryStore } from "@synth-deploy/core";
|
|
3
|
+
import type { DeploymentStore } from "../agent/synth-agent.js";
|
|
4
|
+
export declare function registerEnvironmentRoutes(app: FastifyInstance, environments: IEnvironmentStore, deployments: DeploymentStore, telemetry: ITelemetryStore): void;
|
|
5
|
+
//# sourceMappingURL=environments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environments.d.ts","sourceRoot":"","sources":["../../src/api/environments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAkB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG7F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,eAAe,EACpB,YAAY,EAAE,iBAAiB,EAC/B,WAAW,EAAE,eAAe,EAC5B,SAAS,EAAE,eAAe,GACzB,IAAI,CAqFN"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { CreateEnvironmentSchema, UpdateEnvironmentSchema } from "./schemas.js";
|
|
2
|
+
import { requirePermission } from "../middleware/permissions.js";
|
|
3
|
+
export function registerEnvironmentRoutes(app, environments, deployments, telemetry) {
|
|
4
|
+
// List all environments
|
|
5
|
+
app.get("/api/environments", { preHandler: [requirePermission("environment.view")] }, async () => {
|
|
6
|
+
return { environments: environments.list() };
|
|
7
|
+
});
|
|
8
|
+
// Create an environment
|
|
9
|
+
app.post("/api/environments", { preHandler: [requirePermission("environment.create")] }, async (request, reply) => {
|
|
10
|
+
const parsed = CreateEnvironmentSchema.safeParse(request.body);
|
|
11
|
+
if (!parsed.success) {
|
|
12
|
+
return reply.status(400).send({ error: "Invalid input", details: parsed.error.format() });
|
|
13
|
+
}
|
|
14
|
+
const environment = environments.create(parsed.data.name.trim(), parsed.data.variables ?? {});
|
|
15
|
+
telemetry.record({ actor: (request.user?.email) ?? "anonymous", action: "environment.created", target: { type: "environment", id: environment.id }, details: { name: parsed.data.name } });
|
|
16
|
+
return reply.status(201).send({ environment });
|
|
17
|
+
});
|
|
18
|
+
// Get environment by ID
|
|
19
|
+
app.get("/api/environments/:id", { preHandler: [requirePermission("environment.view")] }, async (request, reply) => {
|
|
20
|
+
const environment = environments.get(request.params.id);
|
|
21
|
+
if (!environment) {
|
|
22
|
+
return reply.status(404).send({ error: "Environment not found" });
|
|
23
|
+
}
|
|
24
|
+
return { environment };
|
|
25
|
+
});
|
|
26
|
+
// Update environment
|
|
27
|
+
app.put("/api/environments/:id", { preHandler: [requirePermission("environment.update")] }, async (request, reply) => {
|
|
28
|
+
const parsed = UpdateEnvironmentSchema.safeParse(request.body);
|
|
29
|
+
if (!parsed.success) {
|
|
30
|
+
return reply.status(400).send({ error: "Invalid input", details: parsed.error.format() });
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const environment = environments.update(request.params.id, {
|
|
34
|
+
name: parsed.data.name?.trim(),
|
|
35
|
+
variables: parsed.data.variables,
|
|
36
|
+
});
|
|
37
|
+
telemetry.record({ actor: (request.user?.email) ?? "anonymous", action: "environment.updated", target: { type: "environment", id: request.params.id }, details: { name: parsed.data.name } });
|
|
38
|
+
return { environment };
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
if (err instanceof Error && err.message.toLowerCase().includes("not found")) {
|
|
42
|
+
return reply.status(404).send({ error: "Environment not found" });
|
|
43
|
+
}
|
|
44
|
+
app.log.error(err, "Failed to update environment");
|
|
45
|
+
return reply.status(500).send({ error: "Internal server error" });
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
// Delete environment (with linked-operations safety check)
|
|
49
|
+
app.delete("/api/environments/:id", { preHandler: [requirePermission("environment.delete")] }, async (request, reply) => {
|
|
50
|
+
const envId = request.params.id;
|
|
51
|
+
const env = environments.get(envId);
|
|
52
|
+
if (!env) {
|
|
53
|
+
return reply.status(404).send({ error: "Environment not found" });
|
|
54
|
+
}
|
|
55
|
+
// Check if any deployments reference this environment
|
|
56
|
+
const linkedDeployments = deployments
|
|
57
|
+
.list()
|
|
58
|
+
.filter((d) => d.environmentId === envId);
|
|
59
|
+
if (linkedDeployments.length > 0) {
|
|
60
|
+
return reply.status(409).send({
|
|
61
|
+
error: `Environment has ${linkedDeployments.length} deployment(s). Cannot delete an environment with deployment history.`,
|
|
62
|
+
deploymentCount: linkedDeployments.length,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
environments.delete(envId);
|
|
66
|
+
return { deleted: true };
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=environments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environments.js","sourceRoot":"","sources":["../../src/api/environments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { FastifyInstance } from "fastify";
|
|
2
|
+
import type { DebriefWriter } from "@synth-deploy/core";
|
|
3
|
+
import type { DeploymentStore } from "../agent/synth-agent.js";
|
|
4
|
+
import type { EnvoyRegistry } from "../agent/envoy-registry.js";
|
|
5
|
+
/**
|
|
6
|
+
* Endpoint for Envoys to push reports back to Command.
|
|
7
|
+
*
|
|
8
|
+
* When a Envoy completes a deployment (success or failure), it pushes
|
|
9
|
+
* a report containing its full debrief entries. Command ingests these
|
|
10
|
+
* into its own debrief so there is one unified Debrief that contains
|
|
11
|
+
* both Command's orchestration decisions and the Envoy's execution
|
|
12
|
+
* decisions.
|
|
13
|
+
*
|
|
14
|
+
* This is the Envoy->Command direction of bidirectional communication.
|
|
15
|
+
*/
|
|
16
|
+
export declare function registerEnvoyReportRoutes(app: FastifyInstance, debrief: DebriefWriter, deployments: DeploymentStore, registry: EnvoyRegistry): void;
|
|
17
|
+
//# sourceMappingURL=envoy-reports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envoy-reports.d.ts","sourceRoot":"","sources":["../../src/api/envoy-reports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AA6ChE;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,eAAe,EAC5B,QAAQ,EAAE,aAAa,GACtB,IAAI,CA4FN"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { DecisionTypeEnum } from "@synth-deploy/core";
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Schema — validates incoming Envoy reports
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
const DebriefEntrySchema = z.object({
|
|
7
|
+
id: z.string(),
|
|
8
|
+
timestamp: z.string(),
|
|
9
|
+
partitionId: z.string().nullable(),
|
|
10
|
+
deploymentId: z.string().nullable(),
|
|
11
|
+
agent: z.enum(["server", "envoy"]),
|
|
12
|
+
decisionType: DecisionTypeEnum,
|
|
13
|
+
decision: z.string(),
|
|
14
|
+
reasoning: z.string(),
|
|
15
|
+
context: z.record(z.unknown()),
|
|
16
|
+
});
|
|
17
|
+
const EnvoyReportSchema = z.object({
|
|
18
|
+
type: z.literal("deployment-result"),
|
|
19
|
+
envoyId: z.string(),
|
|
20
|
+
deploymentId: z.string(),
|
|
21
|
+
success: z.boolean(),
|
|
22
|
+
failureReason: z.string().nullable(),
|
|
23
|
+
debriefEntries: z.array(DebriefEntrySchema),
|
|
24
|
+
summary: z.object({
|
|
25
|
+
artifacts: z.array(z.string()),
|
|
26
|
+
workspacePath: z.string(),
|
|
27
|
+
executionDurationMs: z.number(),
|
|
28
|
+
totalDurationMs: z.number(),
|
|
29
|
+
verificationPassed: z.boolean(),
|
|
30
|
+
verificationChecks: z.array(z.object({
|
|
31
|
+
name: z.string(),
|
|
32
|
+
passed: z.boolean(),
|
|
33
|
+
detail: z.string(),
|
|
34
|
+
})),
|
|
35
|
+
}),
|
|
36
|
+
});
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Route registration
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
/**
|
|
41
|
+
* Endpoint for Envoys to push reports back to Command.
|
|
42
|
+
*
|
|
43
|
+
* When a Envoy completes a deployment (success or failure), it pushes
|
|
44
|
+
* a report containing its full debrief entries. Command ingests these
|
|
45
|
+
* into its own debrief so there is one unified Debrief that contains
|
|
46
|
+
* both Command's orchestration decisions and the Envoy's execution
|
|
47
|
+
* decisions.
|
|
48
|
+
*
|
|
49
|
+
* This is the Envoy->Command direction of bidirectional communication.
|
|
50
|
+
*/
|
|
51
|
+
export function registerEnvoyReportRoutes(app, debrief, deployments, registry) {
|
|
52
|
+
app.post("/api/envoy/report", async (request, reply) => {
|
|
53
|
+
const authHeader = (request.headers.authorization ?? "");
|
|
54
|
+
const token = authHeader.startsWith("Bearer ") ? authHeader.slice(7) : null;
|
|
55
|
+
if (!token || !registry.validateToken(token)) {
|
|
56
|
+
return reply.status(401).send({ error: "Invalid or missing envoy token" });
|
|
57
|
+
}
|
|
58
|
+
const parsed = EnvoyReportSchema.safeParse(request.body);
|
|
59
|
+
if (!parsed.success) {
|
|
60
|
+
return reply.status(400).send({
|
|
61
|
+
error: "Invalid Envoy report",
|
|
62
|
+
details: parsed.error.format(),
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
const report = parsed.data;
|
|
66
|
+
// Validate partition boundary: each debrief entry's deploymentId must
|
|
67
|
+
// belong to the claimed partitionId. Reject cross-partition reports.
|
|
68
|
+
for (const entry of report.debriefEntries) {
|
|
69
|
+
if (entry.deploymentId && entry.partitionId) {
|
|
70
|
+
const deployment = deployments.get(entry.deploymentId);
|
|
71
|
+
if (!deployment || deployment.partitionId !== entry.partitionId) {
|
|
72
|
+
debrief.record({
|
|
73
|
+
partitionId: entry.partitionId,
|
|
74
|
+
deploymentId: entry.deploymentId,
|
|
75
|
+
agent: "server",
|
|
76
|
+
decisionType: "system",
|
|
77
|
+
decision: "Rejected Envoy report: partition boundary violation",
|
|
78
|
+
reasoning: `Deployment ${entry.deploymentId} does not belong to partition ${entry.partitionId}. Report from envoy ${report.envoyId} rejected.`,
|
|
79
|
+
context: { envoyId: report.envoyId, reportedPartitionId: entry.partitionId },
|
|
80
|
+
});
|
|
81
|
+
return reply.status(403).send({
|
|
82
|
+
error: "Partition boundary violation",
|
|
83
|
+
detail: `Deployment ${entry.deploymentId} does not belong to partition ${entry.partitionId}`,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
let ingested = 0;
|
|
89
|
+
// Ingest each Envoy debrief entry into Command's debrief.
|
|
90
|
+
// We re-record them (rather than inserting raw) so Command's debrief
|
|
91
|
+
// assigns its own IDs and timestamps. The original Envoy entry data
|
|
92
|
+
// is preserved in the context field for traceability.
|
|
93
|
+
for (const entry of report.debriefEntries) {
|
|
94
|
+
debrief.record({
|
|
95
|
+
partitionId: entry.partitionId,
|
|
96
|
+
deploymentId: entry.deploymentId,
|
|
97
|
+
agent: entry.agent,
|
|
98
|
+
decisionType: entry.decisionType,
|
|
99
|
+
decision: entry.decision,
|
|
100
|
+
reasoning: entry.reasoning,
|
|
101
|
+
context: {
|
|
102
|
+
...entry.context,
|
|
103
|
+
_envoyReport: {
|
|
104
|
+
envoyId: report.envoyId,
|
|
105
|
+
originalEntryId: entry.id,
|
|
106
|
+
originalTimestamp: entry.timestamp,
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
ingested++;
|
|
111
|
+
}
|
|
112
|
+
// Update deployment status based on the result
|
|
113
|
+
const deployment = deployments.get(report.deploymentId);
|
|
114
|
+
if (deployment && deployment.status === "running") {
|
|
115
|
+
let finalStatus;
|
|
116
|
+
if (report.success) {
|
|
117
|
+
finalStatus = "succeeded";
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
const hadRollback = report.debriefEntries.some((e) => e.decisionType === "rollback-execution");
|
|
121
|
+
finalStatus = (hadRollback ? "rolled_back" : "failed");
|
|
122
|
+
}
|
|
123
|
+
deployment.status = finalStatus;
|
|
124
|
+
if (!report.success && report.failureReason) {
|
|
125
|
+
deployment.failureReason = report.failureReason;
|
|
126
|
+
}
|
|
127
|
+
deployment.completedAt = new Date();
|
|
128
|
+
deployments.save(deployment);
|
|
129
|
+
}
|
|
130
|
+
return reply.status(200).send({
|
|
131
|
+
accepted: true,
|
|
132
|
+
deploymentId: report.deploymentId,
|
|
133
|
+
envoyId: report.envoyId,
|
|
134
|
+
entriesIngested: ingested,
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=envoy-reports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envoy-reports.js","sourceRoot":"","sources":["../../src/api/envoy-reports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAKtD,8EAA8E;AAC9E,4CAA4C;AAC5C,8EAA8E;AAE9E,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClC,YAAY,EAAE,gBAAgB;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;QACzB,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE;QAC/B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;QAC3B,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE;QAC/B,kBAAkB,EAAE,CAAC,CAAC,KAAK,CACzB,CAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;YACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,CAAC,CACH;KACF,CAAC;CACH,CAAC,CAAC;AAEH,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yBAAyB,CACvC,GAAoB,EACpB,OAAsB,EACtB,WAA4B,EAC5B,QAAuB;IAEvB,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACrD,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAW,CAAC;QACnE,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5E,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,KAAK,EAAE,sBAAsB;gBAC7B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;aAC/B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;QAE3B,sEAAsE;QACtE,qEAAqE;QACrE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC5C,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACvD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;oBAChE,OAAO,CAAC,MAAM,CAAC;wBACb,WAAW,EAAE,KAAK,CAAC,WAAW;wBAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;wBAChC,KAAK,EAAE,QAAQ;wBACf,YAAY,EAAE,QAAQ;wBACtB,QAAQ,EAAE,qDAAqD;wBAC/D,SAAS,EAAE,cAAc,KAAK,CAAC,YAAY,iCAAiC,KAAK,CAAC,WAAW,uBAAuB,MAAM,CAAC,OAAO,YAAY;wBAC9I,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,CAAC,WAAW,EAAE;qBAC7E,CAAC,CAAC;oBACH,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBAC5B,KAAK,EAAE,8BAA8B;wBACrC,MAAM,EAAE,cAAc,KAAK,CAAC,YAAY,iCAAiC,KAAK,CAAC,WAAW,EAAE;qBAC7F,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,0DAA0D;QAC1D,qEAAqE;QACrE,oEAAoE;QACpE,sDAAsD;QACtD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1C,OAAO,CAAC,MAAM,CAAC;gBACb,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,KAAK,EAAE,KAAK,CAAC,KAA2B;gBACxC,YAAY,EAAE,KAAK,CAAC,YAA4B;gBAChD,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,OAAO,EAAE;oBACP,GAAG,KAAK,CAAC,OAAO;oBAChB,YAAY,EAAE;wBACZ,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,eAAe,EAAE,KAAK,CAAC,EAAE;wBACzB,iBAAiB,EAAE,KAAK,CAAC,SAAS;qBACnC;iBACF;aACF,CAAC,CAAC;YACH,QAAQ,EAAE,CAAC;QACb,CAAC;QAED,+CAA+C;QAC/C,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAClD,IAAI,WAAqC,CAAC;YAC1C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,WAAW,GAAG,WAAuC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,oBAAoB,CAAC,CAAC;gBAC/F,WAAW,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAA6B,CAAC;YACrF,CAAC;YACD,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBAC5C,UAAU,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;YAClD,CAAC;YACD,UAAU,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;YACpC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC5B,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,eAAe,EAAE,QAAQ;SAC1B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FastifyInstance } from "fastify";
|
|
2
|
+
import type { ISettingsStore, ITelemetryStore, IDeploymentStore, DebriefReader } from "@synth-deploy/core";
|
|
3
|
+
import type { EnvoyRegistry } from "../agent/envoy-registry.js";
|
|
4
|
+
export declare function registerEnvoyRoutes(app: FastifyInstance, settings: ISettingsStore, registry: EnvoyRegistry, telemetry: ITelemetryStore, deployments: IDeploymentStore, debrief: DebriefReader): void;
|
|
5
|
+
//# sourceMappingURL=envoys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envoys.d.ts","sourceRoot":"","sources":["../../src/api/envoys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAIhE,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,gBAAgB,EAC7B,OAAO,EAAE,aAAa,GACrB,IAAI,CA+NN"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { requirePermission } from "../middleware/permissions.js";
|
|
2
|
+
import { getMaxEnvoys, EditionError } from "@synth-deploy/core";
|
|
3
|
+
export function registerEnvoyRoutes(app, settings, registry, telemetry, deployments, debrief) {
|
|
4
|
+
// List all registered Envoys (cached data — no live probe)
|
|
5
|
+
app.get("/api/envoys", { preHandler: [requirePermission("envoy.view")] }, async () => {
|
|
6
|
+
let entries = registry.listEntries();
|
|
7
|
+
// Also include the legacy settings-based default envoy if no registry entries
|
|
8
|
+
if (entries.length === 0) {
|
|
9
|
+
const envoyConfig = settings.get().envoy;
|
|
10
|
+
if (envoyConfig?.url) {
|
|
11
|
+
const legacy = registry.register({
|
|
12
|
+
name: "default",
|
|
13
|
+
url: envoyConfig.url,
|
|
14
|
+
});
|
|
15
|
+
const entry = registry.get(legacy.id);
|
|
16
|
+
if (entry)
|
|
17
|
+
entries = [entry];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
envoys: entries.map((e) => ({
|
|
22
|
+
id: e.id,
|
|
23
|
+
name: e.name,
|
|
24
|
+
url: e.url,
|
|
25
|
+
health: e.health,
|
|
26
|
+
hostname: e.hostname,
|
|
27
|
+
os: e.os,
|
|
28
|
+
lastSeen: e.lastSeen,
|
|
29
|
+
summary: e.summary,
|
|
30
|
+
readiness: e.readiness,
|
|
31
|
+
assignedEnvironments: e.assignedEnvironments,
|
|
32
|
+
assignedPartitions: e.assignedPartitions,
|
|
33
|
+
})),
|
|
34
|
+
};
|
|
35
|
+
});
|
|
36
|
+
// Register a new Envoy
|
|
37
|
+
app.post("/api/envoys", { preHandler: [requirePermission("envoy.register")] }, async (request, reply) => {
|
|
38
|
+
const body = request.body;
|
|
39
|
+
if (!body.name || !body.url) {
|
|
40
|
+
return reply.status(400).send({ error: "name and url are required" });
|
|
41
|
+
}
|
|
42
|
+
// Enforce envoy count limit (Community: 10, Enterprise: license value)
|
|
43
|
+
const maxEnvoys = getMaxEnvoys();
|
|
44
|
+
if (maxEnvoys > 0 && registry.listEntries().length >= maxEnvoys) {
|
|
45
|
+
throw new EditionError("unlimited-envoys");
|
|
46
|
+
}
|
|
47
|
+
const registration = registry.register({
|
|
48
|
+
name: body.name,
|
|
49
|
+
url: body.url,
|
|
50
|
+
assignedEnvironments: body.assignedEnvironments,
|
|
51
|
+
assignedPartitions: body.assignedPartitions,
|
|
52
|
+
});
|
|
53
|
+
// Probe health immediately after registration
|
|
54
|
+
const entry = await registry.probe(registration.id);
|
|
55
|
+
telemetry.record({ actor: (request.user?.email) ?? "anonymous", action: "envoy.registered", target: { type: "envoy", id: registration.id }, details: { name: body.name, url: body.url } });
|
|
56
|
+
return reply.status(201).send({
|
|
57
|
+
envoy: {
|
|
58
|
+
id: registration.id,
|
|
59
|
+
name: registration.name,
|
|
60
|
+
url: registration.url,
|
|
61
|
+
token: registration.token,
|
|
62
|
+
assignedEnvironments: registration.assignedEnvironments,
|
|
63
|
+
assignedPartitions: registration.assignedPartitions,
|
|
64
|
+
registeredAt: registration.registeredAt,
|
|
65
|
+
health: entry?.health ?? "Unreachable",
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
// Get a specific Envoy's cached status (instant, no live probe)
|
|
70
|
+
app.get("/api/envoys/:id/health", { preHandler: [requirePermission("envoy.view")] }, async (request, reply) => {
|
|
71
|
+
const { id } = request.params;
|
|
72
|
+
const entry = registry.get(id);
|
|
73
|
+
if (!entry) {
|
|
74
|
+
return reply.status(404).send({ error: "Envoy not found" });
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
envoy: {
|
|
78
|
+
id: entry.id,
|
|
79
|
+
name: entry.name,
|
|
80
|
+
url: entry.url,
|
|
81
|
+
health: entry.health,
|
|
82
|
+
hostname: entry.hostname,
|
|
83
|
+
os: entry.os,
|
|
84
|
+
lastSeen: entry.lastSeen,
|
|
85
|
+
summary: entry.summary,
|
|
86
|
+
readiness: entry.readiness,
|
|
87
|
+
assignedEnvironments: entry.assignedEnvironments,
|
|
88
|
+
assignedPartitions: entry.assignedPartitions,
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
});
|
|
92
|
+
// Update an Envoy's configuration
|
|
93
|
+
app.put("/api/envoys/:id", { preHandler: [requirePermission("envoy.configure")] }, async (request, reply) => {
|
|
94
|
+
const { id } = request.params;
|
|
95
|
+
const body = request.body;
|
|
96
|
+
const existing = registry.get(id);
|
|
97
|
+
const updated = registry.update(id, body);
|
|
98
|
+
if (!updated) {
|
|
99
|
+
return reply.status(404).send({ error: "Envoy not found" });
|
|
100
|
+
}
|
|
101
|
+
const actor = (request.user?.email) ?? "anonymous";
|
|
102
|
+
if (body.assignedEnvironments !== undefined && existing) {
|
|
103
|
+
const prev = new Set(existing.assignedEnvironments);
|
|
104
|
+
const next = new Set(body.assignedEnvironments);
|
|
105
|
+
for (const envId of next) {
|
|
106
|
+
if (!prev.has(envId))
|
|
107
|
+
telemetry.record({ actor, action: "envoy.connection.added", target: { type: "envoy", id }, details: { connectionType: "environment", targetId: envId } });
|
|
108
|
+
}
|
|
109
|
+
for (const envId of prev) {
|
|
110
|
+
if (!next.has(envId))
|
|
111
|
+
telemetry.record({ actor, action: "envoy.connection.removed", target: { type: "envoy", id }, details: { connectionType: "environment", targetId: envId } });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (body.assignedPartitions !== undefined && existing) {
|
|
115
|
+
const prev = new Set(existing.assignedPartitions);
|
|
116
|
+
const next = new Set(body.assignedPartitions);
|
|
117
|
+
for (const partId of next) {
|
|
118
|
+
if (!prev.has(partId))
|
|
119
|
+
telemetry.record({ actor, action: "envoy.connection.added", target: { type: "envoy", id }, details: { connectionType: "partition", targetId: partId } });
|
|
120
|
+
}
|
|
121
|
+
for (const partId of prev) {
|
|
122
|
+
if (!next.has(partId))
|
|
123
|
+
telemetry.record({ actor, action: "envoy.connection.removed", target: { type: "envoy", id }, details: { connectionType: "partition", targetId: partId } });
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
envoy: {
|
|
128
|
+
id: updated.id,
|
|
129
|
+
name: updated.name,
|
|
130
|
+
url: updated.url,
|
|
131
|
+
assignedEnvironments: updated.assignedEnvironments,
|
|
132
|
+
assignedPartitions: updated.assignedPartitions,
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
});
|
|
136
|
+
// Deregister an Envoy
|
|
137
|
+
app.delete("/api/envoys/:id", { preHandler: [requirePermission("envoy.configure")] }, async (request, reply) => {
|
|
138
|
+
const { id } = request.params;
|
|
139
|
+
const removed = registry.deregister(id);
|
|
140
|
+
if (!removed) {
|
|
141
|
+
return reply.status(404).send({ error: "Envoy not found" });
|
|
142
|
+
}
|
|
143
|
+
return reply.status(204).send();
|
|
144
|
+
});
|
|
145
|
+
// Rotate an Envoy's token
|
|
146
|
+
app.post("/api/envoys/:id/rotate-token", { preHandler: [requirePermission("envoy.configure")] }, async (request, reply) => {
|
|
147
|
+
const { id } = request.params;
|
|
148
|
+
const newToken = registry.rotateToken(id);
|
|
149
|
+
if (!newToken) {
|
|
150
|
+
return reply.status(404).send({ error: "Envoy not found" });
|
|
151
|
+
}
|
|
152
|
+
return { token: newToken };
|
|
153
|
+
});
|
|
154
|
+
// Get accumulated knowledge for an Envoy — system observations from environment scans
|
|
155
|
+
app.get("/api/envoys/:id/knowledge", { preHandler: [requirePermission("envoy.view")] }, async (request, reply) => {
|
|
156
|
+
const { id } = request.params;
|
|
157
|
+
const entry = registry.get(id);
|
|
158
|
+
if (!entry) {
|
|
159
|
+
return reply.status(404).send({ error: "Envoy not found" });
|
|
160
|
+
}
|
|
161
|
+
const envoyDeployments = deployments.list().filter((d) => d.envoyId === id);
|
|
162
|
+
const observations = [];
|
|
163
|
+
for (const d of envoyDeployments) {
|
|
164
|
+
const entries = debrief.getByDeployment(d.id);
|
|
165
|
+
for (const e of entries) {
|
|
166
|
+
if (e.decisionType === "environment-scan") {
|
|
167
|
+
observations.push({ id: e.id, timestamp: e.timestamp.toISOString(), text: e.reasoning || e.decision });
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Sort newest first, cap at 20
|
|
172
|
+
observations.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
173
|
+
return { knowledge: observations.slice(0, 20) };
|
|
174
|
+
});
|
|
175
|
+
// Validate an Envoy token (used by Envoy report endpoint)
|
|
176
|
+
app.post("/api/envoys/validate-token", async (request, reply) => {
|
|
177
|
+
const body = request.body;
|
|
178
|
+
if (!body.token) {
|
|
179
|
+
return reply.status(400).send({ error: "token is required" });
|
|
180
|
+
}
|
|
181
|
+
const envoy = registry.validateToken(body.token);
|
|
182
|
+
if (!envoy) {
|
|
183
|
+
return reply.status(401).send({ error: "Invalid token" });
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
valid: true,
|
|
187
|
+
envoyId: envoy.id,
|
|
188
|
+
envoyName: envoy.name,
|
|
189
|
+
};
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=envoys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envoys.js","sourceRoot":"","sources":["../../src/api/envoys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { FastifyInstance } from "fastify";
|
|
2
|
+
import type { IDeploymentStore, DebriefWriter } from "@synth-deploy/core";
|
|
3
|
+
import type { EnvoyRegistry } from "../agent/envoy-registry.js";
|
|
4
|
+
import type { FleetDeploymentStore } from "../fleet/fleet-store.js";
|
|
5
|
+
import type { FleetExecutor } from "../fleet/fleet-executor.js";
|
|
6
|
+
/**
|
|
7
|
+
* REST API routes for fleet (large-scale) deployments.
|
|
8
|
+
* Provides create, list, get, approve, execute, pause, and resume endpoints.
|
|
9
|
+
*/
|
|
10
|
+
export declare function registerFleetRoutes(app: FastifyInstance, fleetStore: FleetDeploymentStore, envoyRegistry: EnvoyRegistry, deploymentStore: IDeploymentStore, fleetExecutor: FleetExecutor, debrief: DebriefWriter): void;
|
|
11
|
+
//# sourceMappingURL=fleet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet.d.ts","sourceRoot":"","sources":["../../src/api/fleet.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAA8C,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACtH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,4BAA4B,CAAC;AAIpF;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,eAAe,EACpB,UAAU,EAAE,oBAAoB,EAChC,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,gBAAgB,EACjC,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,aAAa,GACrB,IAAI,CAyeN"}
|