@penclipai/server 2026.704.0 → 2026.714.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/adapters/index.d.ts +1 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/process/execute.d.ts.map +1 -1
- package/dist/adapters/process/execute.js +1 -0
- package/dist/adapters/process/execute.js.map +1 -1
- package/dist/adapters/registry.d.ts.map +1 -1
- package/dist/adapters/registry.js +79 -51
- package/dist/adapters/registry.js.map +1 -1
- package/dist/adapters/utils.d.ts +5 -0
- package/dist/adapters/utils.d.ts.map +1 -1
- package/dist/adapters/utils.js.map +1 -1
- package/dist/agent-auth-jwt.d.ts +5 -1
- package/dist/agent-auth-jwt.d.ts.map +1 -1
- package/dist/agent-auth-jwt.js +72 -20
- package/dist/agent-auth-jwt.js.map +1 -1
- package/dist/app.d.ts +2 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +10 -0
- package/dist/app.js.map +1 -1
- package/dist/built-ins/agents/reflection-coach/AGENTS.md +47 -0
- package/dist/built-ins/agents/reflection-coach/routines/recent-agent-reflection.md +77 -0
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -2
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +208 -116
- package/dist/index.js.map +1 -1
- package/dist/middleware/api-compression.d.ts +8 -0
- package/dist/middleware/api-compression.d.ts.map +1 -0
- package/dist/middleware/api-compression.js +207 -0
- package/dist/middleware/api-compression.js.map +1 -0
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +130 -3
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/error-handler.d.ts.map +1 -1
- package/dist/middleware/error-handler.js +27 -0
- package/dist/middleware/error-handler.js.map +1 -1
- package/dist/onboarding-assets/default/AGENTS.md +1 -0
- package/dist/redaction.d.ts.map +1 -1
- package/dist/redaction.js +11 -0
- package/dist/redaction.js.map +1 -1
- package/dist/routes/access.d.ts.map +1 -1
- package/dist/routes/access.js +4 -3
- package/dist/routes/access.js.map +1 -1
- package/dist/routes/adapters.d.ts.map +1 -1
- package/dist/routes/adapters.js +2 -0
- package/dist/routes/adapters.js.map +1 -1
- package/dist/routes/agents.d.ts.map +1 -1
- package/dist/routes/agents.js +222 -87
- package/dist/routes/agents.js.map +1 -1
- package/dist/routes/attention.d.ts +3 -0
- package/dist/routes/attention.d.ts.map +1 -0
- package/dist/routes/attention.js +24 -0
- package/dist/routes/attention.js.map +1 -0
- package/dist/routes/authz.d.ts.map +1 -1
- package/dist/routes/authz.js +29 -1
- package/dist/routes/authz.js.map +1 -1
- package/dist/routes/board-chat.d.ts.map +1 -1
- package/dist/routes/board-chat.js +4 -1
- package/dist/routes/board-chat.js.map +1 -1
- package/dist/routes/built-in-agents.d.ts +3 -0
- package/dist/routes/built-in-agents.d.ts.map +1 -0
- package/dist/routes/built-in-agents.js +267 -0
- package/dist/routes/built-in-agents.js.map +1 -0
- package/dist/routes/cases.d.ts +46 -0
- package/dist/routes/cases.d.ts.map +1 -0
- package/dist/routes/cases.js +1395 -0
- package/dist/routes/cases.js.map +1 -0
- package/dist/routes/companies.d.ts.map +1 -1
- package/dist/routes/companies.js +4 -1
- package/dist/routes/companies.js.map +1 -1
- package/dist/routes/company-skills.d.ts.map +1 -1
- package/dist/routes/company-skills.js +453 -33
- package/dist/routes/company-skills.js.map +1 -1
- package/dist/routes/environments.d.ts.map +1 -1
- package/dist/routes/environments.js +71 -8
- package/dist/routes/environments.js.map +1 -1
- package/dist/routes/execution-workspaces.d.ts.map +1 -1
- package/dist/routes/execution-workspaces.js +89 -3
- package/dist/routes/execution-workspaces.js.map +1 -1
- package/dist/routes/health.d.ts +2 -0
- package/dist/routes/health.d.ts.map +1 -1
- package/dist/routes/health.js +30 -0
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/inbox-dismissals.d.ts.map +1 -1
- package/dist/routes/inbox-dismissals.js +80 -19
- package/dist/routes/inbox-dismissals.js.map +1 -1
- package/dist/routes/index.d.ts +2 -0
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +2 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/issues.d.ts +25 -0
- package/dist/routes/issues.d.ts.map +1 -1
- package/dist/routes/issues.js +1455 -46
- package/dist/routes/issues.js.map +1 -1
- package/dist/routes/openapi.d.ts.map +1 -1
- package/dist/routes/openapi.js +448 -11
- package/dist/routes/openapi.js.map +1 -1
- package/dist/routes/pipelines.js +2 -2
- package/dist/routes/pipelines.js.map +1 -1
- package/dist/routes/resource-memberships.d.ts.map +1 -1
- package/dist/routes/resource-memberships.js +13 -5
- package/dist/routes/resource-memberships.js.map +1 -1
- package/dist/routes/secrets.d.ts.map +1 -1
- package/dist/routes/secrets.js +261 -1
- package/dist/routes/secrets.js.map +1 -1
- package/dist/routes/sidebar-badges.d.ts.map +1 -1
- package/dist/routes/sidebar-badges.js +18 -2
- package/dist/routes/sidebar-badges.js.map +1 -1
- package/dist/routes/user-profiles.d.ts.map +1 -1
- package/dist/routes/user-profiles.js +5 -4
- package/dist/routes/user-profiles.js.map +1 -1
- package/dist/server-info.d.ts +2 -0
- package/dist/server-info.d.ts.map +1 -1
- package/dist/server-info.js +20 -5
- package/dist/server-info.js.map +1 -1
- package/dist/services/access.d.ts +4 -4
- package/dist/services/access.d.ts.map +1 -1
- package/dist/services/activity.d.ts +3 -3
- package/dist/services/activity.d.ts.map +1 -1
- package/dist/services/activity.js +5 -4
- package/dist/services/activity.js.map +1 -1
- package/dist/services/adapter-registry-bootstrap.reconcile.test.js +1 -0
- package/dist/services/adapter-registry-bootstrap.reconcile.test.js.map +1 -1
- package/dist/services/agent-secret-bindings.d.ts +15 -0
- package/dist/services/agent-secret-bindings.d.ts.map +1 -1
- package/dist/services/agent-secret-bindings.js +43 -0
- package/dist/services/agent-secret-bindings.js.map +1 -1
- package/dist/services/agents.d.ts +194 -133
- package/dist/services/agents.d.ts.map +1 -1
- package/dist/services/agents.js +107 -4
- package/dist/services/agents.js.map +1 -1
- package/dist/services/approvals.d.ts +10 -10
- package/dist/services/approvals.d.ts.map +1 -1
- package/dist/services/approvals.js +9 -1
- package/dist/services/approvals.js.map +1 -1
- package/dist/services/assets.d.ts +5 -5
- package/dist/services/attention.d.ts +11 -0
- package/dist/services/attention.d.ts.map +1 -0
- package/dist/services/attention.js +1024 -0
- package/dist/services/attention.js.map +1 -0
- package/dist/services/authorization.d.ts +15 -2
- package/dist/services/authorization.d.ts.map +1 -1
- package/dist/services/authorization.js +324 -8
- package/dist/services/authorization.js.map +1 -1
- package/dist/services/board-auth.d.ts +2 -2
- package/dist/services/budgets.d.ts.map +1 -1
- package/dist/services/budgets.js +8 -7
- package/dist/services/budgets.js.map +1 -1
- package/dist/services/built-in-agent-metadata.d.ts +9 -0
- package/dist/services/built-in-agent-metadata.d.ts.map +1 -0
- package/dist/services/built-in-agent-metadata.js +39 -0
- package/dist/services/built-in-agent-metadata.js.map +1 -0
- package/dist/services/built-in-agents.d.ts +394 -0
- package/dist/services/built-in-agents.d.ts.map +1 -0
- package/dist/services/built-in-agents.js +1426 -0
- package/dist/services/built-in-agents.js.map +1 -0
- package/dist/services/change-consent-gate.d.ts +18 -0
- package/dist/services/change-consent-gate.d.ts.map +1 -0
- package/dist/services/change-consent-gate.js +170 -0
- package/dist/services/change-consent-gate.js.map +1 -0
- package/dist/services/companies.d.ts +14 -8
- package/dist/services/companies.d.ts.map +1 -1
- package/dist/services/companies.js +6 -1
- package/dist/services/companies.js.map +1 -1
- package/dist/services/company-artifacts.d.ts +4 -1
- package/dist/services/company-artifacts.d.ts.map +1 -1
- package/dist/services/company-artifacts.js +9 -1
- package/dist/services/company-artifacts.js.map +1 -1
- package/dist/services/company-member-roles.d.ts.map +1 -1
- package/dist/services/company-member-roles.js +2 -0
- package/dist/services/company-member-roles.js.map +1 -1
- package/dist/services/company-portability.d.ts +1 -1
- package/dist/services/company-portability.d.ts.map +1 -1
- package/dist/services/company-portability.js +113 -8
- package/dist/services/company-portability.js.map +1 -1
- package/dist/services/company-search.d.ts.map +1 -1
- package/dist/services/company-search.js +843 -294
- package/dist/services/company-search.js.map +1 -1
- package/dist/services/company-skills.d.ts +64 -3
- package/dist/services/company-skills.d.ts.map +1 -1
- package/dist/services/company-skills.js +1205 -20
- package/dist/services/company-skills.js.map +1 -1
- package/dist/services/costs.d.ts +9 -8
- package/dist/services/costs.d.ts.map +1 -1
- package/dist/services/costs.js +9 -2
- package/dist/services/costs.js.map +1 -1
- package/dist/services/dashboard.d.ts +2 -0
- package/dist/services/dashboard.d.ts.map +1 -1
- package/dist/services/dashboard.js +60 -17
- package/dist/services/dashboard.js.map +1 -1
- package/dist/services/database-backup-health.d.ts +34 -0
- package/dist/services/database-backup-health.d.ts.map +1 -0
- package/dist/services/database-backup-health.js +104 -0
- package/dist/services/database-backup-health.js.map +1 -0
- package/dist/services/document-annotations.d.ts +169 -1
- package/dist/services/document-annotations.d.ts.map +1 -1
- package/dist/services/document-annotations.js +272 -1
- package/dist/services/document-annotations.js.map +1 -1
- package/dist/services/documents.d.ts +368 -0
- package/dist/services/documents.d.ts.map +1 -1
- package/dist/services/documents.js +2 -2
- package/dist/services/documents.js.map +1 -1
- package/dist/services/environment-config.d.ts.map +1 -1
- package/dist/services/environment-config.js +6 -0
- package/dist/services/environment-config.js.map +1 -1
- package/dist/services/environment-custom-image-runtime.d.ts +28 -0
- package/dist/services/environment-custom-image-runtime.d.ts.map +1 -1
- package/dist/services/environment-custom-image-runtime.js +106 -7
- package/dist/services/environment-custom-image-runtime.js.map +1 -1
- package/dist/services/environment-custom-images.d.ts +31 -1
- package/dist/services/environment-custom-images.d.ts.map +1 -1
- package/dist/services/environment-custom-images.js +110 -4
- package/dist/services/environment-custom-images.js.map +1 -1
- package/dist/services/environment-execution-target.d.ts.map +1 -1
- package/dist/services/environment-execution-target.js +1 -3
- package/dist/services/environment-execution-target.js.map +1 -1
- package/dist/services/environment-probe.d.ts +1 -0
- package/dist/services/environment-probe.d.ts.map +1 -1
- package/dist/services/environment-probe.js +99 -5
- package/dist/services/environment-probe.js.map +1 -1
- package/dist/services/environments.d.ts +3 -1
- package/dist/services/environments.d.ts.map +1 -1
- package/dist/services/environments.js +98 -3
- package/dist/services/environments.js.map +1 -1
- package/dist/services/execution-workspace-policy.d.ts +29 -3
- package/dist/services/execution-workspace-policy.d.ts.map +1 -1
- package/dist/services/execution-workspace-policy.js +44 -1
- package/dist/services/execution-workspace-policy.js.map +1 -1
- package/dist/services/execution-workspaces.d.ts +64 -1
- package/dist/services/execution-workspaces.d.ts.map +1 -1
- package/dist/services/execution-workspaces.js +634 -3
- package/dist/services/execution-workspaces.js.map +1 -1
- package/dist/services/external-objects.d.ts +26 -26
- package/dist/services/feedback.d.ts +2 -2
- package/dist/services/finance.d.ts +5 -5
- package/dist/services/goals.d.ts +8 -8
- package/dist/services/heartbeat-stop-metadata.d.ts +2 -2
- package/dist/services/heartbeat-stop-metadata.d.ts.map +1 -1
- package/dist/services/heartbeat-stop-metadata.js +4 -0
- package/dist/services/heartbeat-stop-metadata.js.map +1 -1
- package/dist/services/heartbeat-stop-metadata.test.js +9 -0
- package/dist/services/heartbeat-stop-metadata.test.js.map +1 -1
- package/dist/services/heartbeat.d.ts +133 -28
- package/dist/services/heartbeat.d.ts.map +1 -1
- package/dist/services/heartbeat.js +1963 -239
- package/dist/services/heartbeat.js.map +1 -1
- package/dist/services/inbox-dismissals.d.ts +26 -0
- package/dist/services/inbox-dismissals.d.ts.map +1 -1
- package/dist/services/inbox-dismissals.js +33 -18
- package/dist/services/inbox-dismissals.js.map +1 -1
- package/dist/services/index.d.ts +3 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +3 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/instance-settings.d.ts +25 -1
- package/dist/services/instance-settings.d.ts.map +1 -1
- package/dist/services/instance-settings.js +103 -5
- package/dist/services/instance-settings.js.map +1 -1
- package/dist/services/issue-continuation-summary.js +1 -1
- package/dist/services/issue-continuation-summary.js.map +1 -1
- package/dist/services/issue-recovery-actions.d.ts +3 -0
- package/dist/services/issue-recovery-actions.d.ts.map +1 -1
- package/dist/services/issue-recovery-actions.js +9 -0
- package/dist/services/issue-recovery-actions.js.map +1 -1
- package/dist/services/issue-rewake-throttle.d.ts +92 -0
- package/dist/services/issue-rewake-throttle.d.ts.map +1 -0
- package/dist/services/issue-rewake-throttle.js +139 -0
- package/dist/services/issue-rewake-throttle.js.map +1 -0
- package/dist/services/issue-thread-interactions.d.ts +8 -1
- package/dist/services/issue-thread-interactions.d.ts.map +1 -1
- package/dist/services/issue-thread-interactions.js +231 -16
- package/dist/services/issue-thread-interactions.js.map +1 -1
- package/dist/services/issue-visibility.d.ts +4 -0
- package/dist/services/issue-visibility.d.ts.map +1 -0
- package/dist/services/issue-visibility.js +9 -0
- package/dist/services/issue-visibility.js.map +1 -0
- package/dist/services/issues.d.ts +225 -105
- package/dist/services/issues.d.ts.map +1 -1
- package/dist/services/issues.js +540 -18
- package/dist/services/issues.js.map +1 -1
- package/dist/services/local-service-supervisor.d.ts +3 -0
- package/dist/services/local-service-supervisor.d.ts.map +1 -1
- package/dist/services/local-service-supervisor.js +51 -0
- package/dist/services/local-service-supervisor.js.map +1 -1
- package/dist/services/pipeline-case-outputs.d.ts.map +1 -1
- package/dist/services/pipeline-case-outputs.js +2 -1
- package/dist/services/pipeline-case-outputs.js.map +1 -1
- package/dist/services/pipelines-aggregation.d.ts.map +1 -1
- package/dist/services/pipelines-aggregation.js +3 -2
- package/dist/services/pipelines-aggregation.js.map +1 -1
- package/dist/services/pipelines.d.ts +165 -165
- package/dist/services/pipelines.d.ts.map +1 -1
- package/dist/services/pipelines.js +6 -4
- package/dist/services/pipelines.js.map +1 -1
- package/dist/services/plugin-database.d.ts +2 -2
- package/dist/services/plugin-environment-driver.d.ts +1 -1
- package/dist/services/plugin-host-services.d.ts.map +1 -1
- package/dist/services/plugin-host-services.js +3 -1
- package/dist/services/plugin-host-services.js.map +1 -1
- package/dist/services/plugin-managed-routines.d.ts +1 -0
- package/dist/services/plugin-managed-routines.d.ts.map +1 -1
- package/dist/services/plugin-registry.d.ts +21 -21
- package/dist/services/productivity-review.d.ts +1 -0
- package/dist/services/productivity-review.d.ts.map +1 -1
- package/dist/services/productivity-review.js +6 -5
- package/dist/services/productivity-review.js.map +1 -1
- package/dist/services/projects.d.ts +9 -9
- package/dist/services/recovery/service.d.ts +82 -54
- package/dist/services/recovery/service.d.ts.map +1 -1
- package/dist/services/recovery/service.js +200 -35
- package/dist/services/recovery/service.js.map +1 -1
- package/dist/services/recovery/successful-run-handoff.d.ts +1 -0
- package/dist/services/recovery/successful-run-handoff.d.ts.map +1 -1
- package/dist/services/recovery/successful-run-handoff.js +2 -0
- package/dist/services/recovery/successful-run-handoff.js.map +1 -1
- package/dist/services/recovery/successful-run-handoff.test.js +20 -0
- package/dist/services/recovery/successful-run-handoff.test.js.map +1 -1
- package/dist/services/resource-memberships.d.ts +13 -10
- package/dist/services/resource-memberships.d.ts.map +1 -1
- package/dist/services/resource-memberships.js +89 -20
- package/dist/services/resource-memberships.js.map +1 -1
- package/dist/services/responsible-user-denial-run-outcomes.d.ts +60 -0
- package/dist/services/responsible-user-denial-run-outcomes.d.ts.map +1 -0
- package/dist/services/responsible-user-denial-run-outcomes.js +56 -0
- package/dist/services/responsible-user-denial-run-outcomes.js.map +1 -0
- package/dist/services/responsible-user-denial-run-outcomes.test.d.ts +2 -0
- package/dist/services/responsible-user-denial-run-outcomes.test.d.ts.map +1 -0
- package/dist/services/responsible-user-denial-run-outcomes.test.js +75 -0
- package/dist/services/responsible-user-denial-run-outcomes.test.js.map +1 -0
- package/dist/services/routines.d.ts +30 -8
- package/dist/services/routines.d.ts.map +1 -1
- package/dist/services/routines.js +241 -18
- package/dist/services/routines.js.map +1 -1
- package/dist/services/run-liveness.d.ts.map +1 -1
- package/dist/services/run-liveness.js +21 -0
- package/dist/services/run-liveness.js.map +1 -1
- package/dist/services/run-log-store.d.ts +1 -0
- package/dist/services/run-log-store.d.ts.map +1 -1
- package/dist/services/run-log-store.js +4 -0
- package/dist/services/run-log-store.js.map +1 -1
- package/dist/services/run-scratch.d.ts +42 -0
- package/dist/services/run-scratch.d.ts.map +1 -0
- package/dist/services/run-scratch.js +111 -0
- package/dist/services/run-scratch.js.map +1 -0
- package/dist/services/run-scratch.test.d.ts +2 -0
- package/dist/services/run-scratch.test.d.ts.map +1 -0
- package/dist/services/run-scratch.test.js +98 -0
- package/dist/services/run-scratch.test.js.map +1 -0
- package/dist/services/secrets.d.ts +1261 -64
- package/dist/services/secrets.d.ts.map +1 -1
- package/dist/services/secrets.js +1089 -96
- package/dist/services/secrets.js.map +1 -1
- package/dist/services/task-watchdogs.d.ts +1 -0
- package/dist/services/task-watchdogs.d.ts.map +1 -1
- package/dist/services/task-watchdogs.js +78 -9
- package/dist/services/task-watchdogs.js.map +1 -1
- package/dist/services/work-timeline.d.ts.map +1 -1
- package/dist/services/work-timeline.js +34 -2
- package/dist/services/work-timeline.js.map +1 -1
- package/dist/services/workspace-runtime-read-model.d.ts +30 -29
- package/dist/services/workspace-runtime-read-model.d.ts.map +1 -1
- package/dist/services/workspace-runtime-read-model.js.map +1 -1
- package/dist/services/workspace-runtime.d.ts +59 -13
- package/dist/services/workspace-runtime.d.ts.map +1 -1
- package/dist/services/workspace-runtime.js +1121 -102
- package/dist/services/workspace-runtime.js.map +1 -1
- package/dist/skills-catalog/catalog/bundled/paperclip-operations/reflection-coach/SKILL.md +202 -0
- package/dist/skills-catalog/catalog/bundled/product/paperclip-capsules/SKILL.md +1 -1
- package/dist/skills-catalog/catalog/bundled/product/wireframe/SKILL.md +1 -1
- package/dist/skills-catalog/catalog/optional/content/release-announcement/SKILL.md +90 -0
- package/dist/skills-catalog/catalog/optional/finance/ramp/SKILL.md +98 -0
- package/dist/skills-catalog/generated/catalog.json +84 -12
- package/dist/ui-branding.d.ts +7 -0
- package/dist/ui-branding.d.ts.map +1 -1
- package/dist/ui-branding.js +8 -2
- package/dist/ui-branding.js.map +1 -1
- package/dist/version.d.ts +14 -0
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +114 -3
- package/dist/version.js.map +1 -1
- package/package.json +19 -20
- package/skills/paperclip/SKILL.md +45 -10
- package/skills/paperclip/references/api-reference.md +246 -1
- package/skills/paperclip/references/cases.md +295 -0
- package/skills/paperclip/references/company-skills.md +1 -1
- package/skills/paperclip-board/SKILL.md +3 -4
- package/skills/paperclip-converting-plans-to-tasks/SKILL.md +3 -7
- package/skills/para-memory-files/SKILL.md +3 -7
- package/ui-dist/assets/{abnfDiagram-VRR7QNED-BsFz2IiG.js → abnfDiagram-VRR7QNED-Dtgfy1PK.js} +1 -1
- package/ui-dist/assets/{arc-HZhAwbOs.js → arc-BGdvNvs8.js} +1 -1
- package/ui-dist/assets/{architectureDiagram-ZJ3FMSHR-BteMjuOn.js → architectureDiagram-ZJ3FMSHR-CK19SQDx.js} +1 -1
- package/ui-dist/assets/{blockDiagram-677ZJIJ3-Iq66uZjf.js → blockDiagram-677ZJIJ3-Kh4N3XG4.js} +1 -1
- package/ui-dist/assets/{browser-ponyfill-BBsuyZJt.js → browser-ponyfill-B3hXtEFW.js} +1 -1
- package/ui-dist/assets/{c4Diagram-LMCZKHZV-_nlglj7I.js → c4Diagram-LMCZKHZV-CBHpGrgU.js} +1 -1
- package/ui-dist/assets/channel-4fjB8e8N.js +1 -0
- package/ui-dist/assets/{chunk-2Q5K7J3B-Cvz7WwSQ.js → chunk-2Q5K7J3B-BdHbqi7k.js} +1 -1
- package/ui-dist/assets/{chunk-32BRIVSS-LLubniCS.js → chunk-32BRIVSS-DxtzZzpt.js} +1 -1
- package/ui-dist/assets/{chunk-5VM5RSS4-BOst5hcr.js → chunk-5VM5RSS4-DMKxBbgu.js} +1 -1
- package/ui-dist/assets/{chunk-EX3LRPZG-D5WNShVm.js → chunk-EX3LRPZG-BaIOPi4v.js} +1 -1
- package/ui-dist/assets/{chunk-JWPE2WC7-CA07x4av.js → chunk-JWPE2WC7-DGo3MPmr.js} +1 -1
- package/ui-dist/assets/{chunk-MOJQB5TN-Clfi83rK.js → chunk-MOJQB5TN-BEhQg0uD.js} +1 -1
- package/ui-dist/assets/{chunk-RYQCIY6F-BhZ6p7YJ.js → chunk-RYQCIY6F-HPJ6zRpJ.js} +1 -1
- package/ui-dist/assets/{chunk-V7JOEXUC-CdexJGoV.js → chunk-V7JOEXUC-Bl_6cAJD.js} +1 -1
- package/ui-dist/assets/{chunk-VR4S4FIN-8vjmBhr1.js → chunk-VR4S4FIN-KMjgGCsw.js} +1 -1
- package/ui-dist/assets/{chunk-XXDRQBXY-CqmCaplj.js → chunk-XXDRQBXY-oWGAIKjr.js} +1 -1
- package/ui-dist/assets/classDiagram-OUVF2IWQ-CTXxO5l9.js +1 -0
- package/ui-dist/assets/classDiagram-v2-EOCWNBFH-CTXxO5l9.js +1 -0
- package/ui-dist/assets/{cose-bilkent-JH36ORCC-CY-zAygY.js → cose-bilkent-JH36ORCC-Ckqse1pH.js} +1 -1
- package/ui-dist/assets/{cynefin-VYW2F7L2-BQSQ1HKr.js → cynefin-VYW2F7L2-DfZ8Hzqi.js} +1 -1
- package/ui-dist/assets/{cynefinDiagram-TSTJHNR4-NJCuFrZL.js → cynefinDiagram-TSTJHNR4-BkDQo9oi.js} +1 -1
- package/ui-dist/assets/{dagre-VKFMJZFB-DAUPIc8g.js → dagre-VKFMJZFB-ClghXQ6E.js} +1 -1
- package/ui-dist/assets/{diagram-FQU43EPY-DvMwJlCi.js → diagram-FQU43EPY-D5a0CwpV.js} +1 -1
- package/ui-dist/assets/{diagram-G47NLZAW-DPY0Jz_y.js → diagram-G47NLZAW-hVjYR_xl.js} +1 -1
- package/ui-dist/assets/{diagram-NH7WQ7WH-BpopeEhp.js → diagram-NH7WQ7WH-BlDPgD5Z.js} +1 -1
- package/ui-dist/assets/{diagram-OA4YK3LP-Qpu05z9X.js → diagram-OA4YK3LP-D0iZKIS3.js} +1 -1
- package/ui-dist/assets/{diagram-WEI45ONY-DHnvw9XU.js → diagram-WEI45ONY-m6hrfD0J.js} +1 -1
- package/ui-dist/assets/{ebnfDiagram-CCIWWBDH-D61S54_7.js → ebnfDiagram-CCIWWBDH-D4SQYLod.js} +1 -1
- package/ui-dist/assets/{erDiagram-Q63AITRT-pplAN_x2.js → erDiagram-Q63AITRT-Byzb6-I5.js} +1 -1
- package/ui-dist/assets/{flowDiagram-23GEKE2U-BaBcbyDq.js → flowDiagram-23GEKE2U-CaTUkFO6.js} +1 -1
- package/ui-dist/assets/{ganttDiagram-NO4QXBWP-BOJSII2b.js → ganttDiagram-NO4QXBWP-DmdMQ3ES.js} +1 -1
- package/ui-dist/assets/{gitGraphDiagram-IHSO6WYX-aYAaO4a2.js → gitGraphDiagram-IHSO6WYX-Bt-1g2CS.js} +1 -1
- package/ui-dist/assets/{index-CZxYajxF.js → index-2Dk9yO0W.js} +1 -1
- package/ui-dist/assets/{index-B8H0SHw1.js → index-8jLpgFNU.js} +1 -1
- package/ui-dist/assets/{index-3EKATXgc.js → index-AP_iimxs.js} +1 -1
- package/ui-dist/assets/{index-C2JgdjPa.js → index-BNJasQY9.js} +1 -1
- package/ui-dist/assets/{index-BaiskB3o.js → index-BO-aNmyX.js} +1 -1
- package/ui-dist/assets/{index-B5YenxAQ.js → index-BPCzCn1Y.js} +1 -1
- package/ui-dist/assets/{index-Da2kqT1M.js → index-BSLnLTb2.js} +1 -1
- package/ui-dist/assets/{index-By0oeEvz.js → index-CCZ2qgHN.js} +1 -1
- package/ui-dist/assets/{index-bUFCSEgv.js → index-CLZXR1k9.js} +1 -1
- package/ui-dist/assets/{index-CJlw4l9L.js → index-CTNfrE1s.js} +1 -1
- package/ui-dist/assets/{index-TmpY6Xh_.js → index-ChNd25s7.js} +1 -1
- package/ui-dist/assets/{index-BRgdHUNR.js → index-CjHiMOEO.js} +1 -1
- package/ui-dist/assets/{index-DrL6pHSJ.js → index-CmeJQpXZ.js} +1 -1
- package/ui-dist/assets/index-CyuYtn7U.css +1 -0
- package/ui-dist/assets/{index-CKKytnOd.js → index-CzZjM8eh.js} +1 -1
- package/ui-dist/assets/{index-Dceamza_.js → index-D-6T0Aft.js} +1 -1
- package/ui-dist/assets/{index-CjDqB1SX.js → index-DG_7V1pG.js} +1 -1
- package/ui-dist/assets/index-DIKcgxCt.js +676 -0
- package/ui-dist/assets/{index-BKVeJ3Jh.js → index-DiUerHmi.js} +1 -1
- package/ui-dist/assets/{index-C-nKjFZh.js → index-NZ7v5Fc2.js} +1 -1
- package/ui-dist/assets/{index-CvPPuNs1.js → index-Py70EvBg.js} +1 -1
- package/ui-dist/assets/{index-LHkZdu0h.js → index-R3aYn0qM.js} +1 -1
- package/ui-dist/assets/{index-BT8b79Bd.js → index-YXpm7gW-.js} +1 -1
- package/ui-dist/assets/{index-CemenVOf.js → index-n4q3gzki.js} +1 -1
- package/ui-dist/assets/{index-D3ODiUup.js → index-vlZ3GoYY.js} +1 -1
- package/ui-dist/assets/{infoDiagram-FWYZ7A6U-C7_90qGq.js → infoDiagram-FWYZ7A6U-jdi5ciVg.js} +1 -1
- package/ui-dist/assets/{ishikawaDiagram-FXEZZL3T-T-nPPdTt.js → ishikawaDiagram-FXEZZL3T-CMz5VvYp.js} +1 -1
- package/ui-dist/assets/{journeyDiagram-5HDEW3XC-C3hqQN0R.js → journeyDiagram-5HDEW3XC-DK6dk2R-.js} +1 -1
- package/ui-dist/assets/{kanban-definition-HUTT4EX6-CPoD9DUm.js → kanban-definition-HUTT4EX6-DX5cZL-D.js} +1 -1
- package/ui-dist/assets/{linear-D-S8yr3Z.js → linear-CI96ABKp.js} +1 -1
- package/ui-dist/assets/{mermaid.core-DhvH8shK.js → mermaid.core-DnsEVfbd.js} +4 -4
- package/ui-dist/assets/{mindmap-definition-LN4V7U3C-CxCIKrKo.js → mindmap-definition-LN4V7U3C-BdDCY7hf.js} +1 -1
- package/ui-dist/assets/{pegDiagram-2B236MQR-D4G-PC6N.js → pegDiagram-2B236MQR-DuY4TF-f.js} +1 -1
- package/ui-dist/assets/{pieDiagram-ENE6RG2P-N4X8UvqY.js → pieDiagram-ENE6RG2P-bgFw7dm3.js} +1 -1
- package/ui-dist/assets/{quadrantDiagram-ABIIQ3AL-CZohoDln.js → quadrantDiagram-ABIIQ3AL-BCZVWyWS.js} +1 -1
- package/ui-dist/assets/{railroadDiagram-RFXS5EU6-fMGQVhwF.js → railroadDiagram-RFXS5EU6-D9V5_Cgc.js} +1 -1
- package/ui-dist/assets/{requirementDiagram-TGXJPOKE-CK0IuUmk.js → requirementDiagram-TGXJPOKE-CItsya2r.js} +1 -1
- package/ui-dist/assets/{sankeyDiagram-HTMAVEWB-pSfb3CqG.js → sankeyDiagram-HTMAVEWB-Cz9IHsZO.js} +1 -1
- package/ui-dist/assets/{sequenceDiagram-DBY2YBRQ-CbhkqIeq.js → sequenceDiagram-DBY2YBRQ-hMSqTiwK.js} +1 -1
- package/ui-dist/assets/{sizeCapture-X5ZJPWSS-B6vqqPx-.js → sizeCapture-X5ZJPWSS-0g9M5wMf.js} +1 -1
- package/ui-dist/assets/{stateDiagram-2N3HPSRC-DIJf9h5C.js → stateDiagram-2N3HPSRC-F8_YhgWl.js} +1 -1
- package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-fZImUBtq.js +1 -0
- package/ui-dist/assets/{swimlanes-5IMT3BWC-DIX_LV8O.js → swimlanes-5IMT3BWC-CCZqPbpE.js} +2 -2
- package/ui-dist/assets/swimlanesDiagram-G3AALYLV-9C1UT51R.js +8 -0
- package/ui-dist/assets/{timeline-definition-FHXFAJF6-CD-Pxb_g.js → timeline-definition-FHXFAJF6-BeUIr18x.js} +1 -1
- package/ui-dist/assets/{vennDiagram-L72KCM5P-BAZsWL0R.js → vennDiagram-L72KCM5P-D3d5h_G4.js} +1 -1
- package/ui-dist/assets/{wardleyDiagram-EHGQE667-CnNyfwX5.js → wardleyDiagram-EHGQE667-Bzt-As9A.js} +1 -1
- package/ui-dist/assets/{xychartDiagram-FW5EYKEG-j9YgsD3Y.js → xychartDiagram-FW5EYKEG-C2mly0xf.js} +1 -1
- package/ui-dist/fonts/InterVariable-Italic.woff2 +0 -0
- package/ui-dist/fonts/InterVariable.woff2 +0 -0
- package/ui-dist/fonts/NOTICE.md +17 -0
- package/ui-dist/index.html +2 -2
- package/ui-dist/locales/en/common.json +1142 -5
- package/ui-dist/locales/zh-CN/common.json +1140 -3
- package/ui-dist/assets/channel-CsiI2LYw.js +0 -1
- package/ui-dist/assets/classDiagram-OUVF2IWQ-CBn1Jqo8.js +0 -1
- package/ui-dist/assets/classDiagram-v2-EOCWNBFH-CBn1Jqo8.js +0 -1
- package/ui-dist/assets/index-BsL8K1vL.css +0 -1
- package/ui-dist/assets/index-D__fTsb2.js +0 -643
- package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-DpwLD7YL.js +0 -1
- package/ui-dist/assets/swimlanesDiagram-G3AALYLV-Cklauutg.js +0 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attention.js","sourceRoot":"","sources":["../../src/services/attention.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElG,OAAO,EACL,MAAM,EACN,SAAS,EACT,MAAM,EACN,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,MAAM,EACN,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAaxD,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,MAAM,sBAAsB,GAA0B;IACpD,UAAU;IACV,0BAA0B;IAC1B,cAAc;IACd,iBAAiB;IACjB,qBAAqB;IACrB,mBAAmB;IACnB,QAAQ;IACR,YAAY;IACZ,cAAc;IACd,mBAAmB;CACpB,CAAC;AAEF,MAAM,aAAa,GAAsC;IACvD,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,GAAG,EAAE,CAAC;CACP,CAAC;AAEF,MAAM,WAAW,GAAwC;IACvD,UAAU,EAAE,CAAC;IACb,eAAe,EAAE,CAAC;IAClB,iBAAiB,EAAE,CAAC;IACpB,YAAY,EAAE,CAAC;IACf,iBAAiB,EAAE,CAAC;IACpB,QAAQ,EAAE,CAAC;IACX,wBAAwB,EAAE,CAAC;IAC3B,MAAM,EAAE,CAAC;IACT,mBAAmB,EAAE,CAAC;IACtB,YAAY,EAAE,CAAC;CAChB,CAAC;AAEF,MAAM,4BAA4B,GAAG,CAAC,SAAS,CAAU,CAAC;AAC1D,MAAM,sBAAsB,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAU,CAAC;AAChE,MAAM,0BAA0B,GAAG,CAAC,MAAM,EAAE,OAAO,CAAU,CAAC;AAC9D,MAAM,qCAAqC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAU,CAAC;AAC7E,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAU,CAAC;AAC7D,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAyC7B,SAAS,WAAW;IAClB,OAAO,MAAM,CAAC,WAAW,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAwC,CAAC;AACpH,CAAC;AAED,SAAS,KAAK,CAAC,KAAuC;IACpD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,OAAO,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACrF,CAAC;AAED,SAAS,SAAS,CAAC,KAAuC;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IACrB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IACvC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,oBAAoB,CAC3B,cAAmD,EACnD,YAAoB,EACpB,UAAkB,EAClB,GAAW;IAEX,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACnD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnF,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,KAAK,QAAQ;QAC1C,CAAC,CAAC,SAAS,CAAC,YAAY,IAAI,IAAI,IAAI,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,GAAG;QAC3E,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC;IAE9D,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,WAAW;QACX,YAAY;QACZ,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,KAAK;SACT,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC;SAC/B,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;SAC3B,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC;SACrC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC;SACvC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC;SAC1B,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,OAAO,CAAC,KAAc,EAAE,SAAS,GAAG,qBAAqB;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,OAAO,CAAC;IAChD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;AACxE,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAgC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7G,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgC;IAC5D,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,IAAI,KAAK,gBAAgB,IAAI,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC;AACnE,CAAC;AAED,SAAS,YAAY,CAAC,KAAyC;IAC7D,OAAO;QACL,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,IAAI;QAC/B,SAAS,EAAE,KAAK,EAAE,SAAS,IAAI,IAAI;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,QAAqD,EAAE,OAAkC;IAC5G,OAAO,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB,EAAE,MAA8B;IACrE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,OAAgC;IACpE,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,YAAY,EAAE,IAAI;QAClB,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,iBAAiB,CAAC;QACtF,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAM1B;IACC,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACjF,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI;YACtC,SAAS,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,IAAI,MAAM;YAC9C,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC1G,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrE,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,aAAa,EAAE,SAAS,CAAC,MAAM;YAC/B,iBAAiB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;YACnD,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7D,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,SAAS,EAAE,KAAK,CAAC,MAAM;YACvB,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;YAC3C,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,+BAA+B,EAAE,CAAC;QACnD,OAAO;YACL,IAAI,EAAE,uBAAuB;YAC7B,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM;YACpD,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC5C,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;QAC3C,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM;YAChD,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC5C,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;QAC7E,YAAY,EAAE,KAAK;QACnB,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,MAAc,EAAE,KAAiD;IAClF,OAAO,IAAI,MAAM,WAAW,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;AAC7D,CAAC;AAED,SAAS,YAAY,CAAC,MAAc,EAAE,KAAsB;IAC1D,OAAO;QACL,IAAI,EAAE,OAAO;QACb,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;QAC9B,QAAQ,EAAE;YACR,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,UAA+B,EAAE,QAAgB;IAC/D,OAAO,GAAG,UAAU,IAAI,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,aAAa,CAAC,GAAG,KAA8B;IACtD,OAAO,KAAK,CAAC;AACf,CAAC;AAQD,SAAS,UAAU,CAAC,KAA+B;IACjD,OAAO;QACL,GAAG,KAAK;QACR,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;QAC5C,YAAY,EAAE,aAAa,KAAK,CAAC,QAAQ,EAAE;QAC3C,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;QAClC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;QAC5B,IAAI,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAmB,EAAE,KAAoB;IACtE,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1E,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpC,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClF,IAAI,YAAY,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC;IAC5C,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAChF,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC;IACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,eAAe,CAAC,IAAmB,EAAE,KAAoB;IAChE,OAAO,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAChE,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,OAAgC;IACnE,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,sBAAsB;YACzB,OAAO,wBAAwB,CAAC;QAClC,KAAK,+BAA+B;YAClC,OAAO,kCAAkC,CAAC;QAC5C,KAAK,oBAAoB;YACvB,OAAO,wBAAwB,CAAC;QAClC,KAAK,eAAe;YAClB,OAAO,iCAAiC,CAAC;QAC3C,KAAK,uBAAuB;YAC1B,OAAO,+BAA+B,CAAC;QACzC;YACE,OAAO,8BAA8B,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,OAAgC;IACtE,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;QAClC,OAAO,aAAa,CAAC;YACnB,EAAE,EAAE,SAAS;YACb,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,0CAA0C;SACxD,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,KAAK,sBAAsB,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE;YACvF,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE;YAC5B,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,WAAW,GAAG,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE;YACvF,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE;YAC5B,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,aAAa,CAClB;YACE,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE,kCAAkC;SAChD,EACD;YACE,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE,mCAAmC;SACjD,CACF,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAClB;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,iCAAiC;KAC/C,EACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,oEAAoE;KAClF,CACF,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,cAAsB,EAAE,WAAmB;IACxE,OAAO,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,EAAM,EAAE,SAAiB;IACpD,MAAM,GAAG,GAAG,MAAM,EAAE;SACjB,MAAM,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC;SAC9C,IAAI,CAAC,SAAS,CAAC;SACf,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;SAClC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IACnC,OAAO,GAAG,EAAE,WAAW,IAAI,KAAK,CAAC;AACnC,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,EAAM,EAAE,SAAiB,EAAE,MAAiC;IACxF,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,GAAG,EAA0B,CAAC;IACtD,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,MAAM,CAAC;QACN,OAAO,EAAE,eAAe,CAAC,OAAO;QAChC,IAAI,EAAE,eAAe,CAAC,IAAI;QAC1B,WAAW,EAAE,eAAe,CAAC,WAAW;QACxC,YAAY,EAAE,eAAe,CAAC,YAAY;KAC3C,CAAC;SACD,IAAI,CAAC,eAAe,CAAC;SACrB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5F,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE;YAC7C,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;SAC/B,CAAC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,EAAM,EAAE,SAAiB,EAAE,QAA0C;IAClG,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,GAAG,EAA2B,CAAC;IAChE,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,MAAM,CAAC;QACN,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,QAAQ,CAAC,EAAE;QACtB,WAAW,EAAE,QAAQ,CAAC,IAAI;QAC1B,YAAY,EAAE,QAAQ,CAAC,KAAK;QAC5B,WAAW,EAAE,QAAQ,CAAC,IAAI;QAC1B,WAAW,EAAE,iBAAiB,CAAC,EAAE;QACjC,aAAa,EAAE,iBAAiB,CAAC,IAAI;KACtC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC;SACZ,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;SAC7F,QAAQ,CAAC,iBAAiB,EAAE,GAAG,CAC9B,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,EAAE,CAAC,EACnD,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAC3C,CAAC;SACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;YACxC,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,cAAc,EAAE,GAAG,CAAC,cAAc;YAClC,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,OAAO,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC1C,EAAE,EAAE,GAAG,CAAC,SAAS;gBACjB,IAAI,EAAE,GAAG,CAAC,WAAW;gBACrB,MAAM,EAAE,mBAAmB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,SAAS,CAAC;gBAC3D,KAAK,EAAE,GAAG,CAAC,YAAY;gBACvB,IAAI,EAAE,GAAG,CAAC,WAAW;aACtB,CAAC,CAAC,CAAC,IAAI;YACR,SAAS,EAAE,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;gBAChD,EAAE,EAAE,GAAG,CAAC,WAAW;gBACnB,IAAI,EAAE,GAAG,CAAC,aAAa;aACxB,CAAC,CAAC,CAAC,IAAI;SACT,CAAC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,EAAM,EAAE,SAAiB,EAAE,QAA0C;IAChG,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,GAAG,EAAkC,CAAC;IACvE,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,MAAM,CAAC;QACN,OAAO,EAAE,gBAAgB,CAAC,OAAO;QACjC,OAAO,EAAE,gBAAgB,CAAC,OAAO;QACjC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;KAC1C,CAAC;SACD,IAAI,CAAC,gBAAgB,CAAC;SACtB,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;SAC1D,KAAK,CAAC,GAAG,CACR,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,EACzC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EAC/B,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,EACtC,GAAG,CAAA,GAAG,MAAM,CAAC,WAAW,iBAAiB,CAC1C,CAAC;SACD,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;IAErG,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkC,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,MAAM,CAAC,MAAM,IAAI,kBAAkB;YAAE,SAAS;QAClD,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAC,CAAC;QACzE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,EAAM,EAAE,SAAiB,EAAE,QAA0C;IAClG,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,GAAG,EAA+B,CAAC;IACpE,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,MAAM,CAAC;QACN,OAAO,EAAE,cAAc,CAAC,OAAO;QAC/B,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,IAAI,EAAE,SAAS,CAAC,UAAU;KAC3B,CAAC;SACD,IAAI,CAAC,cAAc,CAAC;SACpB,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;SACjE,KAAK,CAAC,GAAG,CACR,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,EACvC,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,EAClC,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,EAC9B,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CACrC,CAAC,CAAC;IACL,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,EAAM,EAAE,SAAiB,EAAE,eAAiD;IAC1G,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,GAAG,EAAgC,CAAC;IACrE,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,MAAM,CAAC;QACN,cAAc,EAAE,cAAc,CAAC,cAAc;QAC7C,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;SACD,IAAI,CAAC,cAAc,CAAC;SACpB,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;SACxD,KAAK,CAAC,GAAG,CACR,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,EACvC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EAC/B,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,EACjC,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,GAAG,CAAC,EAC3C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CACxB,CAAC;SACD,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;IACtG,MAAM,GAAG,GAAG,IAAI,GAAG,EAAgC,CAAC;IACpD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CAAC,eAA+C;IACrE,MAAM,OAAO,GAAG,eAAe,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,CAAC;IACpE,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAM;IACrC,OAAO;QACL,IAAI,EAAE,KAAK,EAAE,SAAiB,EAAE,UAAgC,EAAE,EAA0B,EAAE;YAC5F,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACvE,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,KAAK,IAAI,CAAC;YAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,SAAS,GAAoB,EAAE,CAAC;YAEtC,MAAM,GAAG,GAAG,CAAC,IAAmB,EAAE,EAAE;gBAClC,MAAM,SAAS,GAAG,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBAC5F,IAAI,CAAC,gBAAgB,IAAI,SAAS,EAAE,QAAQ;oBAAE,OAAO;gBACrD,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YACzC,CAAC,CAAC;YAEF,MAAM,gBAAgB,GAAG,MAAM,EAAE;iBAC9B,MAAM,CAAC;gBACN,EAAE,EAAE,SAAS,CAAC,EAAE;gBAChB,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;gBAChD,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;gBAC9C,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,SAAS,EAAE,SAAS,CAAC,SAAS;aAC/B,CAAC;iBACD,IAAI,CAAC,SAAS,CAAC;iBACf,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;iBAC/E,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YAE1D,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;gBACxC,MAAM,QAAQ,GAAG,YAAY,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAC3C,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC7D,GAAG,CAAC,UAAU,CAAC;oBACb,SAAS;oBACT,UAAU,EAAE,UAAU;oBACtB,OAAO,EAAE;wBACP,IAAI,EAAE,UAAU;wBAChB,EAAE,EAAE,QAAQ,CAAC,EAAE;wBACf,SAAS;wBACT,KAAK;wBACL,UAAU,EAAE,IAAI;wBAChB,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,IAAI,EAAE,IAAI,MAAM,cAAc,QAAQ,CAAC,EAAE,EAAE;wBAC3C,QAAQ,EAAE;4BACR,IAAI,EAAE,QAAQ,CAAC,IAAI;4BACnB,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;4BAC/C,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;yBAC9C;qBACF;oBACD,MAAM,EAAE,uCAAuC;oBAC/C,aAAa,EAAE,aAAa,CAC1B,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,sBAAsB,EAAE,EACxE,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE,EACrE,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,oCAAoC,EAAE,CACzG;oBACD,gBAAgB,EAAE,QAAQ,CAAC,IAAI,KAAK,wBAAwB;oBAC5D,SAAS,EAAE,8BAA8B;oBACzC,QAAQ,EAAE,iCAAiC;oBAC3C,QAAQ;oBACR,QAAQ,EAAE,QAAQ;oBAClB,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACrC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACpC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACpC,YAAY,EAAE,IAAI;oBAClB,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC;iBACxD,CAAC,CAAC,CAAC;YACN,CAAC;YAED,MAAM,eAAe,GAAG,MAAM,EAAE;iBAC7B,MAAM,CAAC;gBACN,EAAE,EAAE,uBAAuB,CAAC,EAAE;gBAC9B,OAAO,EAAE,uBAAuB,CAAC,OAAO;gBACxC,IAAI,EAAE,uBAAuB,CAAC,IAAI;gBAClC,MAAM,EAAE,uBAAuB,CAAC,MAAM;gBACtC,KAAK,EAAE,uBAAuB,CAAC,KAAK;gBACpC,OAAO,EAAE,uBAAuB,CAAC,OAAO;gBACxC,OAAO,EAAE,uBAAuB,CAAC,OAAO;gBACxC,SAAS,EAAE,uBAAuB,CAAC,SAAS;gBAC5C,SAAS,EAAE,uBAAuB,CAAC,SAAS;aAC7C,CAAC;iBACD,IAAI,CAAC,uBAAuB,CAAC;iBAC7B,KAAK,CAAC,GAAG,CACR,EAAE,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,CAAC,EAChD,OAAO,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,GAAG,4BAA4B,CAAC,CAAC,CAC3E,CAAC;iBACD,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC;YACtF,MAAM,mBAAmB,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5G,MAAM,mBAAmB,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1G,MAAM,0BAA0B,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAEnH,KAAK,MAAM,WAAW,IAAI,eAAe,EAAE,CAAC;gBAC1C,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;gBACnE,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAChD,MAAM,MAAM,GAAG,iBAAiB,CAAC;oBAC/B,IAAI,EAAE,WAAW,CAAC,IAAI;oBACtB,OAAO;oBACP,KAAK;oBACL,YAAY,EAAE,0BAA0B,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI;oBACzE,MAAM,EAAE,WAAW,CAAC,mBAAmB,EAAE,WAAW,CAAC,OAAO,CAAC;iBAC9D,CAAC,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,KAAK,eAAe,CAAC;gBACrD,MAAM,QAAQ,GAAG,eAAe,WAAW,CAAC,EAAE,EAAE,CAAC;gBACjD,GAAG,CAAC,UAAU,CAAC;oBACb,SAAS;oBACT,UAAU,EAAE,0BAA0B;oBACtC,OAAO,EAAE;wBACP,IAAI,EAAE,aAAa;wBACnB,EAAE,EAAE,WAAW,CAAC,EAAE;wBAClB,SAAS;wBACT,KAAK,EAAE,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,mBAAmB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,OAAO,IAAI,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;wBAChJ,UAAU,EAAE,IAAI;wBAChB,MAAM,EAAE,WAAW,CAAC,MAAM;wBAC1B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,gBAAgB,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;wBAChF,QAAQ,EAAE;4BACR,IAAI,EAAE,WAAW,CAAC,IAAI;4BACtB,OAAO,EAAE,WAAW,CAAC,OAAO;4BAC5B,YAAY;4BACZ,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;yBAChD;qBACF;oBACD,MAAM,EAAE,GAAG,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB;oBACnE,aAAa,EAAE,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC;oBAC1D,gBAAgB,EAAE,IAAI;oBACtB,SAAS,EAAE,8CAA8C;oBACzD,QAAQ,EAAE,wDAAwD;oBAClE,QAAQ;oBACR,QAAQ,EAAE,QAAQ;oBAClB,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;oBACxC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;oBACvC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;oBACvC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;oBACxD,GAAG,YAAY,CAAC,KAAK,CAAC;oBACtB,MAAM;iBACP,CAAC,CAAC,CAAC;YACN,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,EAAE;iBAC1B,MAAM,CAAC;gBACN,EAAE,EAAE,YAAY,CAAC,EAAE;gBACnB,WAAW,EAAE,YAAY,CAAC,WAAW;gBACrC,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;gBAC/C,oBAAoB,EAAE,YAAY,CAAC,oBAAoB;gBACvD,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,WAAW,EAAE,YAAY,CAAC,WAAW;gBACrC,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,SAAS,EAAE,YAAY,CAAC,SAAS;aAClC,CAAC;iBACD,IAAI,CAAC,YAAY,CAAC;iBAClB,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;iBACzD,KAAK,CAAC,GAAG,CACR,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,EACrC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAChC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAC5C,CAAC;iBACD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;YAEhE,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,KAAK,OAAO;oBACxC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,oBAAoB;oBACxC,CAAC,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,gBAAgB,IAAI,oBAAoB,CAAC;gBAC/E,MAAM,QAAQ,GAAG,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;gBACnC,GAAG,CAAC,UAAU,CAAC;oBACb,SAAS;oBACT,UAAU,EAAE,cAAc;oBAC1B,OAAO,EAAE;wBACP,IAAI,EAAE,cAAc;wBACpB,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,SAAS;wBACT,KAAK,EAAE,KAAK;wBACZ,UAAU,EAAE,IAAI;wBAChB,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,IAAI,EAAE,IAAI,MAAM,kBAAkB;wBAClC,QAAQ,EAAE;4BACR,WAAW,EAAE,IAAI,CAAC,WAAW;4BAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;4BACvC,WAAW,EAAE,IAAI,CAAC,WAAW;yBAC9B;qBACF;oBACD,MAAM,EAAE,mCAAmC;oBAC3C,aAAa,EAAE,aAAa,CAC1B,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,4BAA4B,EAAE,EAC9E,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAC5E;oBACD,gBAAgB,EAAE,IAAI;oBACtB,SAAS,EAAE,2CAA2C;oBACtD,QAAQ,EAAE,uCAAuC;oBACjD,QAAQ;oBACR,QAAQ,EAAE,QAAQ;oBAClB,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;oBACjC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;oBAChC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;oBAChC,YAAY,EAAE,IAAI;oBAClB,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC;iBACjC,CAAC,CAAC,CAAC;YACN,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,EAAE;iBAC1B,MAAM,EAAE;iBACR,IAAI,CAAC,oBAAoB,CAAC;iBAC1B,KAAK,CAAC,GAAG,CACR,EAAE,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,EAC7C,OAAO,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,GAAG,sBAAsB,CAAC,CAAC,EACjE,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,GAAG,0BAA0B,CAAC,CAAC,CACzE,CAAC;iBACD,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;YAChF,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAC5C,EAAE,EACF,SAAS,EACT,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CACxE,CAAC;YACF,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;YAE1G,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;gBACpC,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;gBACzE,MAAM,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC/G,MAAM,QAAQ,GAAG,YAAY,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACjH,GAAG,CAAC,UAAU,CAAC;oBACb,SAAS;oBACT,UAAU,EAAE,iBAAiB;oBAC7B,OAAO,EAAE;wBACP,IAAI,EAAE,iBAAiB;wBACvB,EAAE,EAAE,QAAQ,CAAC,EAAE;wBACf,SAAS;wBACT,KAAK,EAAE,QAAQ,CAAC,UAAU;wBAC1B,UAAU,EAAE,IAAI;wBAChB,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;wBAC5G,QAAQ,EAAE;4BACR,IAAI,EAAE,QAAQ,CAAC,IAAI;4BACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;4BACrB,SAAS,EAAE,QAAQ,CAAC,SAAS;4BAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW;4BACjC,aAAa,EAAE,QAAQ,CAAC,aAAa;4BACrC,eAAe,EAAE,QAAQ,CAAC,eAAe;yBAC1C;qBACF;oBACD,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,WAAW;wBACrC,CAAC,CAAC,6CAA6C;wBAC/C,CAAC,CAAC,+CAA+C;oBACnD,aAAa,EAAE,aAAa,CAC1B,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,8BAA8B,EAAE,EAChF,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,qCAAqC,EAAE,EACzF,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAC9E;oBACD,gBAAgB,EAAE,KAAK;oBACvB,SAAS,EAAE,4FAA4F;oBACvG,QAAQ,EAAE,iFAAiF;oBAC3F,QAAQ;oBACR,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;oBAC7D,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACrC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACpC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACpC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;oBACpE,GAAG,YAAY,CAAC,WAAW,CAAC;oBAC5B,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;iBAClG,CAAC,CAAC,CAAC;YACN,CAAC;YAED,MAAM,gBAAgB,GAAG,MAAM,EAAE;iBAC9B,MAAM,CAAC;gBACN,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;gBAC3C,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC;iBACD,IAAI,CAAC,MAAM,CAAC;iBACZ,KAAK,CAAC,GAAG,CACR,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EAC/B,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,+BAA+B,CAAC,EACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EACvB,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,EAChC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,qCAAqC,CAAC,CAAC,CACtE,CAAC;iBACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YACpD,MAAM,qBAAqB,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChH,MAAM,qBAAqB,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1G,MAAM,oBAAoB,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAEvG,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;gBACtC,MAAM,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACzD,IAAI,CAAC,WAAW;oBAAE,SAAS;gBAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBAChG,MAAM,QAAQ,GAAG,uBAAuB,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACnG,GAAG,CAAC,UAAU,CAAC;oBACb,SAAS;oBACT,UAAU,EAAE,qBAAqB;oBACjC,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC;oBAC1C,MAAM,EAAE,mDAAmD;oBAC3D,aAAa,EAAE,aAAa,CAC1B,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,uCAAuC,EAAE,EACzF,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,8BAA8B,EAAE,EAChF,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,mCAAmC,EAAE,CACxF;oBACD,gBAAgB,EAAE,KAAK;oBACvB,SAAS,EAAE,0DAA0D;oBACrE,QAAQ,EAAE,iEAAiE;oBAC3E,QAAQ;oBACR,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;oBACtG,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;oBACnC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;oBAClC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;oBAClC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;oBACpE,GAAG,YAAY,CAAC,WAAW,CAAC;oBAC5B,MAAM,EAAE,aAAa,CAAC,WAAW,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;iBACxG,CAAC,CAAC,CAAC;YACN,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5G,MAAM,qBAAqB,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3G,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YACnG,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YACrG,KAAK,MAAM,KAAK,IAAI,aAAmL,EAAE,CAAC;gBACxM,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;gBAChD,IAAI,gBAAgB,EAAE,KAAK,KAAK,SAAS;oBAAE,SAAS;gBACpD,MAAM,YAAY,GAAG,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;gBACjE,MAAM,eAAe,GAAG,YAAY,IAAI,KAAK,CAAC;gBAC9C,MAAM,MAAM,GAAG,gBAAgB,CAAC,8BAA8B,IAAI,gBAAgB,CAAC,uBAAuB,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3I,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gBACpG,MAAM,QAAQ,GAAG,WAAW,KAAK,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC;gBACjD,GAAG,CAAC,UAAU,CAAC;oBACb,SAAS;oBACT,UAAU,EAAE,mBAAmB;oBAC/B,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC;oBAC9C,MAAM,EAAE,2FAA2F;oBACnG,aAAa,EAAE,aAAa,CAC1B,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,6CAA6C,EAAE,EAC/F,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,6CAA6C,EAAE,EACjG,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAClF;oBACD,gBAAgB,EAAE,KAAK;oBACvB,SAAS,EAAE,sDAAsD;oBACjE,QAAQ,EAAE,wEAAwE;oBAClF,QAAQ;oBACR,QAAQ,EAAE,MAAM;oBAChB,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;oBAClC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;oBACjC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;oBACjC,YAAY,EAAE,IAAI;oBAClB,GAAG,YAAY,CAAC,YAAY,CAAC;oBAC7B,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE;iBAC3F,CAAC,CAAC,CAAC;YACN,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,EAAE;iBACxB,MAAM,CAAC;gBACN,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC;iBACD,IAAI,CAAC,MAAM,CAAC;iBACZ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACpG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YACpD,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvD,MAAM,yBAAyB,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC;gBAC3D,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,MAAM,EAAE;qBACP,MAAM,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC;qBACrE,IAAI,CAAC,cAAc,CAAC;qBACpB,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;qBACjE,KAAK,CAAC,GAAG,CACR,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,EACvC,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,EAClC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,EAC/C,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAChC,CAAC,CAAC;YACP,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAChH,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;YAC5E,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;YAE1E,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,wBAAwB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBAC9D,MAAM,kBAAkB,GAAG,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC;gBACzF,MAAM,mBAAmB,GAAG,kBAAkB,EAAE,IAAI,KAAK,MAAM,CAAC;gBAChE,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;gBAC1E,IAAI,CAAC,mBAAmB,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,iBAAiB;oBAAE,SAAS;gBACnF,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC5C,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,MAAM,QAAQ,GAAG,UAAU,MAAM,CAAC,EAAE,EAAE,CAAC;gBACvC,GAAG,CAAC,UAAU,CAAC;oBACb,SAAS;oBACT,UAAU,EAAE,QAAQ;oBACpB,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;oBACpC,MAAM,EAAE,iBAAiB;wBACvB,CAAC,CAAC,oDAAoD;wBACtD,CAAC,CAAC,mBAAmB;4BACnB,CAAC,CAAC,qEAAqE;4BACvE,CAAC,CAAC,4CAA4C;oBAClD,aAAa,EAAE,aAAa,CAC1B,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,2CAA2C,EAAE,EAC7F,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,0DAA0D,EAAE,CAC7H;oBACD,gBAAgB,EAAE,KAAK;oBACvB,SAAS,EAAE,mGAAmG;oBAC9G,QAAQ,EAAE,2DAA2D;oBACrE,QAAQ;oBACR,QAAQ,EAAE,QAAQ;oBAClB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;oBACnC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;oBAClC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;oBAClC,YAAY,EAAE,IAAI;oBAClB,GAAG,YAAY,CAAC,KAAK,CAAC;oBACtB,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;iBAC5E,CAAC,CAAC,CAAC;YACN,CAAC;YAED,MAAM,gBAAgB,GAAG,MAAM,EAAE;iBAC9B,MAAM,CAAC;gBACN,EAAE,EAAE,aAAa,CAAC,EAAE;gBACpB,SAAS,EAAE,aAAa,CAAC,SAAS;gBAClC,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,SAAS,EAAE,MAAM,CAAC,IAAI;gBACtB,MAAM,EAAE,aAAa,CAAC,MAAM;gBAC5B,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,SAAS,EAAE,aAAa,CAAC,SAAS;gBAClC,eAAe,EAAE,aAAa,CAAC,eAAe;gBAC9C,SAAS,EAAE,aAAa,CAAC,SAAS;gBAClC,SAAS,EAAE,aAAa,CAAC,SAAS;gBAClC,UAAU,EAAE,aAAa,CAAC,UAAU;gBACpC,iBAAiB,EAAE,kBAAkB,CAAC,OAAO;aAC9C,CAAC;iBACD,IAAI,CAAC,aAAa,CAAC;iBACnB,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;iBACvD,SAAS,CAAC,kBAAkB,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;iBAC7E,KAAK,CAAC,GAAG,CACR,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,EACtC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EAC/B,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,EACzC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,EACvD,EAAE,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,EAC3C,EAAE,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,EAC7C,GAAG,CAAA,GAAG,kBAAkB,CAAC,OAAO,kCAAkC,CACnE,CAAC;iBACD,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;YAEvE,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAA6C,CAAC;YACpF,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;gBACnC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAAE,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACnF,CAAC;YACD,MAAM,UAAU,GAAG,CAAC,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC,CAAC;YACxD,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;YACpF,MAAM,cAAc,GAAG,MAAM,eAAe,CAC1C,EAAE,EACF,SAAS,EACT,cAAc,CACf,CAAC;YACF,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;YAC1E,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1E,MAAM,wBAAwB,GAAG,UAAU,CAAC,MAAM,CAAc,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC9E,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,SAAS,GAAG,MAAM;oBAAE,OAAO,GAAG,CAAC,SAAS,CAAC;gBAC5D,OAAO,MAAM,CAAC;YAChB,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAgB,CAAC;YACxD,IAAI,wBAAwB,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1D,MAAM,SAAS,GAAG,MAAM,EAAE;qBACvB,MAAM,CAAC;oBACN,OAAO,EAAE,aAAa,CAAC,OAAO;oBAC9B,SAAS,EAAE,aAAa,CAAC,SAAS;oBAClC,eAAe,EAAE,aAAa,CAAC,eAAe;iBAC/C,CAAC;qBACD,IAAI,CAAC,aAAa,CAAC;qBACnB,KAAK,CAAC,GAAG,CACR,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,EACtC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC,EAC9C,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,wBAAwB,CAAC,CACtD,CAAC,CAAC;gBACL,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACjC,MAAM,WAAW,GAAG,GAAG,QAAQ,CAAC,OAAO,IAAI,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC5F,MAAM,eAAe,GAAG,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;oBACjE,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC,SAAS,GAAG,eAAe,EAAE,CAAC;wBAC7D,uBAAuB,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;oBAC/D,CAAC;gBACH,CAAC;YACH,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBACpD,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;gBACjD,MAAM,WAAW,GAAG,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACpG,IAAI,WAAW;oBAAE,SAAS;gBAE1B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBACnE,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,EAAE,EAAE,CAAC;gBACjC,GAAG,CAAC,UAAU,CAAC;oBACb,SAAS;oBACT,UAAU,EAAE,YAAY;oBACxB,OAAO,EAAE;wBACP,IAAI,EAAE,KAAK;wBACX,EAAE,EAAE,GAAG,CAAC,EAAE;wBACV,SAAS;wBACT,KAAK,EAAE,GAAG,GAAG,CAAC,SAAS,QAAQ,GAAG,CAAC,MAAM,EAAE;wBAC3C,UAAU,EAAE,IAAI;wBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,IAAI,EAAE,IAAI,MAAM,WAAW,GAAG,CAAC,OAAO,SAAS,GAAG,CAAC,EAAE,EAAE;wBACvD,QAAQ,EAAE;4BACR,OAAO,EAAE,GAAG,CAAC,OAAO;4BACpB,SAAS,EAAE,GAAG,CAAC,SAAS;4BACxB,OAAO;4BACP,SAAS,EAAE,GAAG,CAAC,SAAS;4BACxB,KAAK,EAAE,GAAG,CAAC,KAAK;4BAChB,oBAAoB,EAAE,GAAG,CAAC,iBAAiB;yBAC5C;qBACF;oBACD,MAAM,EAAE,oDAAoD;oBAC5D,aAAa,EAAE,aAAa,CAC1B,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,gCAAgC,EAAE,EAC9E,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,iCAAiC,EAAE,EACrF,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,wCAAwC,EAAE,CAC3F;oBACD,gBAAgB,EAAE,IAAI;oBACtB,SAAS,EAAE,4EAA4E;oBACvF,QAAQ,EAAE,2EAA2E;oBACrF,QAAQ;oBACR,QAAQ,EAAE,MAAM;oBAChB,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC;oBACnE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;oBAC/B,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;oBAC/B,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;oBACxD,GAAG,YAAY,CAAC,KAAK,CAAC;oBACtB,MAAM,EAAE;wBACN,IAAI,EAAE,YAAY;wBAClB,SAAS,EAAE,GAAG,CAAC,SAAS;wBACxB,oBAAoB,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,iBAAiB,IAAI,GAAG,CAAC,SAAS,CAAC;wBAClF,MAAM,EAAE,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC;qBAC7C;iBACF,CAAC,CAAC,CAAC;YACN,CAAC;YAED,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACnE,KAAK,MAAM,QAAQ,IAAI,cAAc,CAAC,eAAe,EAAE,CAAC;gBACtD,MAAM,eAAe,GAAG,qBAAqB,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAC7F,IAAI,QAAQ,CAAC,aAAa,KAAK,MAAM,IAAI,eAAe,GAAG,EAAE;oBAAE,SAAS;gBACxE,MAAM,QAAQ,GAAG,UAAU,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;gBACxG,GAAG,CAAC,UAAU,CAAC;oBACb,SAAS;oBACT,UAAU,EAAE,cAAc;oBAC1B,OAAO,EAAE;wBACP,IAAI,EAAE,iBAAiB;wBACvB,EAAE,EAAE,QAAQ,CAAC,EAAE;wBACf,SAAS;wBACT,KAAK,EAAE,GAAG,QAAQ,CAAC,SAAS,WAAW,QAAQ,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE;wBACpG,UAAU,EAAE,IAAI;wBAChB,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,IAAI,EAAE,IAAI,MAAM,QAAQ;wBACxB,QAAQ,EAAE;4BACR,QAAQ,EAAE,QAAQ,CAAC,QAAQ;4BAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;4BAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO;4BACzB,aAAa,EAAE,QAAQ,CAAC,aAAa;4BACrC,cAAc,EAAE,QAAQ,CAAC,cAAc;4BACvC,WAAW,EAAE,QAAQ,CAAC,WAAW;4BACjC,eAAe;4BACf,UAAU,EAAE,QAAQ,CAAC,UAAU;4BAC/B,cAAc,EAAE,QAAQ,CAAC,cAAc;yBACxC;qBACF;oBACD,MAAM,EAAE,QAAQ,CAAC,aAAa,KAAK,MAAM;wBACvC,CAAC,CAAC,+BAA+B;wBACjC,CAAC,CAAC,2CAA2C;oBAC/C,aAAa,EAAE,aAAa,CAC1B,EAAE,EAAE,EAAE,yBAAyB,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,0CAA0C,EAAE,EACjH,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,2CAA2C,EAAE,CACtG;oBACD,gBAAgB,EAAE,IAAI;oBACtB,SAAS,EAAE,4EAA4E;oBACvF,QAAQ,EAAE,2CAA2C;oBACrD,QAAQ;oBACR,QAAQ,EAAE,QAAQ,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;oBAC/D,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACrC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACpC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACpC,YAAY,EAAE,IAAI;oBAClB,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,eAAe;wBACf,cAAc,EAAE,QAAQ,CAAC,cAAc;wBACvC,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,MAAM,EAAE,EAAE;qBACX;iBACF,CAAC,CAAC,CAAC;YACN,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,EAAE;iBAC3B,MAAM,CAAC;gBACN,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC;iBACD,IAAI,CAAC,MAAM,CAAC;iBACZ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;iBACvE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAEpD,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,eAAe,KAAK,CAAC,EAAE,EAAE,CAAC;gBAC3C,GAAG,CAAC,UAAU,CAAC;oBACb,SAAS;oBACT,UAAU,EAAE,mBAAmB;oBAC/B,OAAO,EAAE;wBACP,IAAI,EAAE,OAAO;wBACb,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,SAAS;wBACT,KAAK,EAAE,KAAK,CAAC,IAAI;wBACjB,UAAU,EAAE,IAAI;wBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,IAAI,EAAE,IAAI,MAAM,WAAW,KAAK,CAAC,EAAE,EAAE;wBACrC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;qBAC/D;oBACD,MAAM,EAAE,kEAAkE;oBAC1E,aAAa,EAAE,aAAa,CAC1B,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,0BAA0B,EAAE,EAC5E,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE,CACxE;oBACD,gBAAgB,EAAE,IAAI;oBACtB,SAAS,EAAE,yBAAyB;oBACpC,QAAQ,EAAE,oDAAoD;oBAC9D,QAAQ;oBACR,QAAQ,EAAE,MAAM;oBAChB,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;oBAClC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;oBACjC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;oBACjC,YAAY,EAAE,IAAI;oBAClB,MAAM,EAAE;wBACN,IAAI,EAAE,aAAa;wBACnB,SAAS,EAAE,KAAK,CAAC,IAAI;wBACrB,oBAAoB,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;wBAChD,MAAM,EAAE,EAAE;qBACX;iBACF,CAAC,CAAC,CAAC;YACN,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;YACjD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9E,CAAC;YAED,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;iBAChC,IAAI,CAAC,qBAAqB,CAAC;iBAC3B,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACxD,MAAM,kBAAkB,GAAG,WAAW,EAAE,CAAC;YACzC,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEnE,OAAO;gBACL,SAAS;gBACT,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACrC,UAAU,EAAE,KAAK,CAAC,MAAM;gBACxB,kBAAkB;gBAClB,KAAK;aACN,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -9,15 +9,22 @@ export type AuthorizationActor = {
|
|
|
9
9
|
membershipRole?: string | null;
|
|
10
10
|
status?: string;
|
|
11
11
|
}>;
|
|
12
|
+
onBehalfOfMemberships?: Array<{
|
|
13
|
+
companyId: string;
|
|
14
|
+
membershipRole?: string | null;
|
|
15
|
+
status?: string;
|
|
16
|
+
}>;
|
|
12
17
|
isInstanceAdmin?: boolean;
|
|
18
|
+
ignoreInstanceAdmin?: boolean;
|
|
13
19
|
agentId?: string | null;
|
|
14
20
|
companyId?: string | null;
|
|
15
21
|
keyId?: string | null;
|
|
16
22
|
keyScope?: AgentApiKeyScope | null;
|
|
17
23
|
runId?: string | null;
|
|
24
|
+
onBehalfOfUserId?: string | null;
|
|
18
25
|
source?: "local_implicit" | "session" | "board_key" | "agent_key" | "agent_jwt" | "cloud_tenant" | "none";
|
|
19
26
|
};
|
|
20
|
-
export type AuthorizationAction = PermissionKey | "agent_config:read" | "agent_config:update" | "agent:read" | "agent:wake" | "company_scope:read" | "issue:comment" | "issue:mutate" | "issue:read" | "project:read" | "runtime:manage" | "secrets:read";
|
|
27
|
+
export type AuthorizationAction = PermissionKey | "agent_config:read" | "agent_config:update" | "skill_config:update" | "agent:read" | "agent:wake" | "company_scope:read" | "issue:comment" | "issue:mutate" | "issue:read" | "project:read" | "runtime:manage" | "secrets:read";
|
|
21
28
|
export type AuthorizationResource = {
|
|
22
29
|
type: "company";
|
|
23
30
|
companyId: string;
|
|
@@ -45,7 +52,8 @@ export type AuthorizationDecision = {
|
|
|
45
52
|
allowed: boolean;
|
|
46
53
|
action: AuthorizationAction;
|
|
47
54
|
explanation: string;
|
|
48
|
-
|
|
55
|
+
code?: "RESPONSIBLE_USER_UNAUTHORIZED" | "RESPONSIBLE_USER_UNAVAILABLE";
|
|
56
|
+
reason: "allow_low_trust_boundary" | "allow_local_board" | "allow_instance_admin" | "allow_explicit_grant" | "allow_direct_change" | "allow_consented_change" | "allow_legacy_agent_creator" | "allow_issue_mention_grant" | "allow_self" | "allow_company_agent" | "allow_company_member" | "allow_simple_company_member" | "allow_manager_chain" | "deny_unauthenticated" | "deny_company_boundary" | "deny_missing_membership" | "deny_missing_grant" | "deny_missing_consent" | "deny_no_grant" | "deny_policy_restricted" | "deny_low_trust_boundary" | "deny_scope" | "deny_unsupported_action";
|
|
49
57
|
grant?: {
|
|
50
58
|
principalType: PrincipalType;
|
|
51
59
|
principalId: string;
|
|
@@ -56,6 +64,11 @@ export type AuthorizationDecision = {
|
|
|
56
64
|
type PrincipalGrantDecision = AuthorizationDecision & {
|
|
57
65
|
grant?: NonNullable<AuthorizationDecision["grant"]>;
|
|
58
66
|
};
|
|
67
|
+
export declare function responsibleUserAuthzShadowMode(): boolean;
|
|
68
|
+
export declare function authorizationDeniedDetails(decision: AuthorizationDecision): {
|
|
69
|
+
reason: "allow_low_trust_boundary" | "allow_local_board" | "allow_instance_admin" | "allow_explicit_grant" | "allow_direct_change" | "allow_consented_change" | "allow_legacy_agent_creator" | "allow_issue_mention_grant" | "allow_self" | "allow_company_agent" | "allow_company_member" | "allow_simple_company_member" | "allow_manager_chain" | "deny_unauthenticated" | "deny_company_boundary" | "deny_missing_membership" | "deny_missing_grant" | "deny_missing_consent" | "deny_no_grant" | "deny_policy_restricted" | "deny_low_trust_boundary" | "deny_scope" | "deny_unsupported_action";
|
|
70
|
+
code?: "RESPONSIBLE_USER_UNAUTHORIZED" | "RESPONSIBLE_USER_UNAVAILABLE" | undefined;
|
|
71
|
+
};
|
|
59
72
|
export declare function authorizationService(db: Db): {
|
|
60
73
|
decide: (input: {
|
|
61
74
|
actor: AuthorizationActor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../src/services/authorization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../src/services/authorization.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { and, eq, inArray, isNull, sql } from "drizzle-orm";
|
|
2
|
-
import { agents, companyMemberships, heartbeatRuns, instanceUserRoles, issueComments, issues, principalPermissionGrants, projects, } from "@penclipai/db";
|
|
2
|
+
import { agents, authUsers, companyMemberships, heartbeatRuns, instanceUserRoles, issueComments, issues, principalPermissionGrants, projects, } from "@penclipai/db";
|
|
3
3
|
import { LOW_TRUST_REVIEW_PRESET, extractAgentMentionIds } from "@penclipai/shared";
|
|
4
4
|
import { LOW_TRUST_ISSUE_ANCESTRY_MAX_DEPTH, isIssueWithinLowTrustBoundary, resolveCoreTrustPreset, } from "./trust-preset-resolver.js";
|
|
5
5
|
import { logger } from "../middleware/logger.js";
|
|
@@ -7,8 +7,9 @@ function companyIdForResource(resource) {
|
|
|
7
7
|
return resource.companyId;
|
|
8
8
|
}
|
|
9
9
|
function permissionForAction(action) {
|
|
10
|
-
if (action === "agent_config:read" || action === "agent_config:update")
|
|
11
|
-
return
|
|
10
|
+
if (action === "agent_config:read" || action === "agent_config:update" || action === "skill_config:update") {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
12
13
|
if (action === "agent:read" ||
|
|
13
14
|
action === "agent:wake" ||
|
|
14
15
|
action === "company_scope:read" ||
|
|
@@ -228,6 +229,37 @@ function allow(input) {
|
|
|
228
229
|
function deny(input) {
|
|
229
230
|
return { ...input, allowed: false };
|
|
230
231
|
}
|
|
232
|
+
const responsibleUserSnapshotCache = new Map();
|
|
233
|
+
function responsibleUserSnapshotTtlMs() {
|
|
234
|
+
const raw = process.env.PAPERCLIP_RESPONSIBLE_USER_AUTHZ_CACHE_TTL_MS?.trim();
|
|
235
|
+
if (!raw)
|
|
236
|
+
return 5_000;
|
|
237
|
+
const parsed = Number(raw);
|
|
238
|
+
return Number.isFinite(parsed) && parsed >= 0 ? parsed : 5_000;
|
|
239
|
+
}
|
|
240
|
+
export function responsibleUserAuthzShadowMode() {
|
|
241
|
+
const mode = process.env.PAPERCLIP_RESPONSIBLE_USER_AUTHZ_MODE?.trim().toLowerCase();
|
|
242
|
+
const shadow = process.env.PAPERCLIP_RESPONSIBLE_USER_AUTHZ_SHADOW?.trim().toLowerCase();
|
|
243
|
+
return mode === "shadow" || shadow === "1" || shadow === "true" || shadow === "yes";
|
|
244
|
+
}
|
|
245
|
+
function activeActorMembership(memberships, companyId) {
|
|
246
|
+
return memberships?.find((membership) => membership.companyId === companyId && membership.status === "active") ?? null;
|
|
247
|
+
}
|
|
248
|
+
function activeResponsibleUserCanAuthorizeIssueAction(action, membership) {
|
|
249
|
+
return Boolean(membership &&
|
|
250
|
+
membership.status === "active" &&
|
|
251
|
+
membership.membershipRole !== "viewer" &&
|
|
252
|
+
(action === "issue:comment" || action === "issue:mutate"));
|
|
253
|
+
}
|
|
254
|
+
function scopeBoolean(scope, key) {
|
|
255
|
+
return scope?.[key] === true;
|
|
256
|
+
}
|
|
257
|
+
export function authorizationDeniedDetails(decision) {
|
|
258
|
+
return {
|
|
259
|
+
...(decision.code ? { code: decision.code } : {}),
|
|
260
|
+
reason: decision.reason,
|
|
261
|
+
};
|
|
262
|
+
}
|
|
231
263
|
export function authorizationService(db) {
|
|
232
264
|
async function isInstanceAdmin(userId) {
|
|
233
265
|
if (!userId)
|
|
@@ -248,6 +280,67 @@ export function authorizationService(db) {
|
|
|
248
280
|
.where(and(eq(companyMemberships.companyId, companyId), eq(companyMemberships.principalType, principalType), eq(companyMemberships.principalId, principalId), eq(companyMemberships.status, "active")))
|
|
249
281
|
.then((rows) => rows[0] ?? null);
|
|
250
282
|
}
|
|
283
|
+
async function loadResponsibleUserSnapshot(companyId, userId) {
|
|
284
|
+
const [user, membership] = await Promise.all([
|
|
285
|
+
db
|
|
286
|
+
.select({ id: authUsers.id })
|
|
287
|
+
.from(authUsers)
|
|
288
|
+
.where(eq(authUsers.id, userId))
|
|
289
|
+
.then((rows) => rows[0] ?? null),
|
|
290
|
+
db
|
|
291
|
+
.select({
|
|
292
|
+
companyId: companyMemberships.companyId,
|
|
293
|
+
membershipRole: companyMemberships.membershipRole,
|
|
294
|
+
status: companyMemberships.status,
|
|
295
|
+
})
|
|
296
|
+
.from(companyMemberships)
|
|
297
|
+
.where(and(eq(companyMemberships.companyId, companyId), eq(companyMemberships.principalType, "user"), eq(companyMemberships.principalId, userId), eq(companyMemberships.status, "active")))
|
|
298
|
+
.then((rows) => rows[0] ?? null),
|
|
299
|
+
]);
|
|
300
|
+
return {
|
|
301
|
+
userId,
|
|
302
|
+
companyId,
|
|
303
|
+
userExists: Boolean(user),
|
|
304
|
+
activeMembership: user ? membership : null,
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
function getResponsibleUserSnapshot(input) {
|
|
308
|
+
const actorWithMemo = input.actor;
|
|
309
|
+
const key = `${input.companyId}:${input.userId}`;
|
|
310
|
+
actorWithMemo.__responsibleUserSnapshotMemo ??= new Map();
|
|
311
|
+
const requestMemo = actorWithMemo.__responsibleUserSnapshotMemo.get(key);
|
|
312
|
+
if (requestMemo)
|
|
313
|
+
return requestMemo;
|
|
314
|
+
const actorMembership = activeActorMembership(input.actor.onBehalfOfMemberships, input.companyId);
|
|
315
|
+
if (actorMembership) {
|
|
316
|
+
const promise = Promise.resolve({
|
|
317
|
+
userId: input.userId,
|
|
318
|
+
companyId: input.companyId,
|
|
319
|
+
userExists: true,
|
|
320
|
+
activeMembership: actorMembership,
|
|
321
|
+
});
|
|
322
|
+
actorWithMemo.__responsibleUserSnapshotMemo.set(key, promise);
|
|
323
|
+
return promise;
|
|
324
|
+
}
|
|
325
|
+
const now = Date.now();
|
|
326
|
+
const cached = responsibleUserSnapshotCache.get(key);
|
|
327
|
+
if (cached && cached.expiresAt > now) {
|
|
328
|
+
actorWithMemo.__responsibleUserSnapshotMemo.set(key, cached.promise);
|
|
329
|
+
return cached.promise;
|
|
330
|
+
}
|
|
331
|
+
const ttlMs = responsibleUserSnapshotTtlMs();
|
|
332
|
+
const promise = loadResponsibleUserSnapshot(input.companyId, input.userId);
|
|
333
|
+
if (ttlMs > 0) {
|
|
334
|
+
responsibleUserSnapshotCache.set(key, { expiresAt: now + ttlMs, promise });
|
|
335
|
+
promise.catch(() => {
|
|
336
|
+
if (responsibleUserSnapshotCache.get(key)?.promise === promise) {
|
|
337
|
+
responsibleUserSnapshotCache.delete(key);
|
|
338
|
+
}
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
actorWithMemo.__responsibleUserSnapshotMemo.set(key, promise);
|
|
342
|
+
return promise;
|
|
343
|
+
}
|
|
251
344
|
async function findGrant(companyId, principalType, principalId, permissionKey) {
|
|
252
345
|
return db
|
|
253
346
|
.select()
|
|
@@ -485,6 +578,9 @@ export function authorizationService(db) {
|
|
|
485
578
|
explanation,
|
|
486
579
|
});
|
|
487
580
|
if (input.action === "company_scope:read" ||
|
|
581
|
+
input.action === "agent_config:read" ||
|
|
582
|
+
input.action === "agent_config:update" ||
|
|
583
|
+
input.action === "skill_config:update" ||
|
|
488
584
|
input.action === "runtime:manage" ||
|
|
489
585
|
input.action === "secrets:read") {
|
|
490
586
|
return lowTrustDeny(`${LOW_TRUST_REVIEW_PRESET} agents cannot use company-wide or privileged ${input.action} APIs by default.`);
|
|
@@ -638,6 +734,36 @@ export function authorizationService(db) {
|
|
|
638
734
|
}
|
|
639
735
|
return denyBridge("Task bridge key cannot use this API action.");
|
|
640
736
|
}
|
|
737
|
+
function decideSkillTestAccess(input) {
|
|
738
|
+
const denySkillTest = (explanation) => deny({
|
|
739
|
+
action: input.action,
|
|
740
|
+
reason: "deny_scope",
|
|
741
|
+
explanation,
|
|
742
|
+
});
|
|
743
|
+
const allowSkillTest = (explanation) => allow({
|
|
744
|
+
action: input.action,
|
|
745
|
+
reason: "allow_explicit_grant",
|
|
746
|
+
explanation,
|
|
747
|
+
});
|
|
748
|
+
if (input.action === "company_scope:read" ||
|
|
749
|
+
input.action === "agent:read" ||
|
|
750
|
+
input.action === "agent:wake" ||
|
|
751
|
+
input.action === "project:read" ||
|
|
752
|
+
input.action === "runtime:manage" ||
|
|
753
|
+
input.action === "secrets:read" ||
|
|
754
|
+
input.action === "tasks:assign") {
|
|
755
|
+
return denySkillTest("Skill-test run tokens cannot use company-wide, peer-agent, project, runtime, secret, or task-create APIs.");
|
|
756
|
+
}
|
|
757
|
+
if (input.action === "issue:read" || input.action === "issue:comment" || input.action === "issue:mutate") {
|
|
758
|
+
if (input.resource.type !== "issue") {
|
|
759
|
+
return denySkillTest("Skill-test issue access requires an issue resource.");
|
|
760
|
+
}
|
|
761
|
+
return input.resource.issueId === input.scope.issueId
|
|
762
|
+
? allowSkillTest("Allowed for the scoped skill-test issue.")
|
|
763
|
+
: denySkillTest("Skill-test run token can only access its own harness issue.");
|
|
764
|
+
}
|
|
765
|
+
return denySkillTest("Skill-test run token cannot use this API action.");
|
|
766
|
+
}
|
|
641
767
|
async function assignmentTargetIsInCompany(resource) {
|
|
642
768
|
if (resource.type !== "issue")
|
|
643
769
|
return true;
|
|
@@ -738,7 +864,7 @@ export function authorizationService(db) {
|
|
|
738
864
|
explanation: "Allowed by a mention-scoped issue comment grant.",
|
|
739
865
|
});
|
|
740
866
|
}
|
|
741
|
-
async function
|
|
867
|
+
async function decideBase(input) {
|
|
742
868
|
const permissionKey = permissionForAction(input.action);
|
|
743
869
|
const companyId = companyIdForResource(input.resource);
|
|
744
870
|
async function decideWithTaskAssignmentGrants(principalType, principalId) {
|
|
@@ -764,6 +890,86 @@ export function authorizationService(db) {
|
|
|
764
890
|
return scopedDecision;
|
|
765
891
|
return broadDecision;
|
|
766
892
|
}
|
|
893
|
+
async function decideWithAgentConfigReadGrant(principalType, principalId) {
|
|
894
|
+
const configureDecision = await decidePrincipalGrant({
|
|
895
|
+
companyId,
|
|
896
|
+
principalType,
|
|
897
|
+
principalId,
|
|
898
|
+
action: input.action,
|
|
899
|
+
permissionKey: "agents:configure",
|
|
900
|
+
scope: input.scope,
|
|
901
|
+
});
|
|
902
|
+
if (configureDecision.allowed || configureDecision.reason === "deny_missing_membership") {
|
|
903
|
+
return configureDecision;
|
|
904
|
+
}
|
|
905
|
+
const suggestDecision = await decidePrincipalGrant({
|
|
906
|
+
companyId,
|
|
907
|
+
principalType,
|
|
908
|
+
principalId,
|
|
909
|
+
action: input.action,
|
|
910
|
+
permissionKey: "agents:suggest-changes",
|
|
911
|
+
scope: input.scope,
|
|
912
|
+
});
|
|
913
|
+
if (suggestDecision.allowed || suggestDecision.reason === "deny_missing_grant") {
|
|
914
|
+
return suggestDecision;
|
|
915
|
+
}
|
|
916
|
+
return configureDecision;
|
|
917
|
+
}
|
|
918
|
+
async function decideWithProtectedChangeGrants(principalType, principalId, keys) {
|
|
919
|
+
const directDecision = await decidePrincipalGrant({
|
|
920
|
+
companyId,
|
|
921
|
+
principalType,
|
|
922
|
+
principalId,
|
|
923
|
+
action: input.action,
|
|
924
|
+
permissionKey: keys.direct,
|
|
925
|
+
scope: input.scope,
|
|
926
|
+
});
|
|
927
|
+
if (directDecision.allowed) {
|
|
928
|
+
return allow({
|
|
929
|
+
action: input.action,
|
|
930
|
+
reason: "allow_direct_change",
|
|
931
|
+
explanation: `Allowed by direct change permission ${keys.direct}.`,
|
|
932
|
+
grant: directDecision.grant,
|
|
933
|
+
});
|
|
934
|
+
}
|
|
935
|
+
if (directDecision.reason === "deny_missing_membership")
|
|
936
|
+
return directDecision;
|
|
937
|
+
const suggestDecision = await decidePrincipalGrant({
|
|
938
|
+
companyId,
|
|
939
|
+
principalType,
|
|
940
|
+
principalId,
|
|
941
|
+
action: input.action,
|
|
942
|
+
permissionKey: keys.suggest,
|
|
943
|
+
scope: input.scope,
|
|
944
|
+
});
|
|
945
|
+
if (suggestDecision.allowed) {
|
|
946
|
+
if (scopeBoolean(input.scope, "consentedChange")) {
|
|
947
|
+
return allow({
|
|
948
|
+
action: input.action,
|
|
949
|
+
reason: "allow_consented_change",
|
|
950
|
+
explanation: `Allowed by suggest permission ${keys.suggest} after accepted change consent.`,
|
|
951
|
+
grant: suggestDecision.grant,
|
|
952
|
+
});
|
|
953
|
+
}
|
|
954
|
+
return deny({
|
|
955
|
+
action: input.action,
|
|
956
|
+
reason: "deny_missing_consent",
|
|
957
|
+
explanation: `Permission ${keys.suggest} requires accepted change consent before applying this mutation.`,
|
|
958
|
+
grant: suggestDecision.grant,
|
|
959
|
+
});
|
|
960
|
+
}
|
|
961
|
+
if (suggestDecision.reason === "deny_missing_membership")
|
|
962
|
+
return suggestDecision;
|
|
963
|
+
if (directDecision.reason === "deny_scope")
|
|
964
|
+
return directDecision;
|
|
965
|
+
if (suggestDecision.reason === "deny_scope")
|
|
966
|
+
return suggestDecision;
|
|
967
|
+
return deny({
|
|
968
|
+
action: input.action,
|
|
969
|
+
reason: "deny_no_grant",
|
|
970
|
+
explanation: `Missing permission: ${keys.direct} or ${keys.suggest}.`,
|
|
971
|
+
});
|
|
972
|
+
}
|
|
767
973
|
async function denyForAssignmentPolicyIfNeeded(policyEffect) {
|
|
768
974
|
if (policyEffect.kind === "none" || policyEffect.kind === "restricted")
|
|
769
975
|
return null;
|
|
@@ -801,7 +1007,8 @@ export function authorizationService(db) {
|
|
|
801
1007
|
// cloud_tenant actors are company-scoped by contract and must never be
|
|
802
1008
|
// elevated — not even via stale instance_admin rows left behind by
|
|
803
1009
|
// deployments that ran the pre-hardening cloud_tenant path.
|
|
804
|
-
if (input.actor.
|
|
1010
|
+
if (!input.actor.ignoreInstanceAdmin &&
|
|
1011
|
+
input.actor.source !== "cloud_tenant" &&
|
|
805
1012
|
(input.actor.isInstanceAdmin || await isInstanceAdmin(input.actor.userId))) {
|
|
806
1013
|
return allow({
|
|
807
1014
|
action: input.action,
|
|
@@ -912,6 +1119,21 @@ export function authorizationService(db) {
|
|
|
912
1119
|
return denyRestrictedAssignmentPolicy(policyEffect);
|
|
913
1120
|
return grantDecision;
|
|
914
1121
|
}
|
|
1122
|
+
if (input.action === "agent_config:read") {
|
|
1123
|
+
return decideWithAgentConfigReadGrant("user", input.actor.userId);
|
|
1124
|
+
}
|
|
1125
|
+
if (input.action === "agent_config:update") {
|
|
1126
|
+
return decideWithProtectedChangeGrants("user", input.actor.userId, {
|
|
1127
|
+
direct: "agents:configure",
|
|
1128
|
+
suggest: "agents:suggest-changes",
|
|
1129
|
+
});
|
|
1130
|
+
}
|
|
1131
|
+
if (input.action === "skill_config:update") {
|
|
1132
|
+
return decideWithProtectedChangeGrants("user", input.actor.userId, {
|
|
1133
|
+
direct: "skills:create",
|
|
1134
|
+
suggest: "skills:suggest-changes",
|
|
1135
|
+
});
|
|
1136
|
+
}
|
|
915
1137
|
return decidePrincipalGrant({
|
|
916
1138
|
companyId,
|
|
917
1139
|
principalType: "user",
|
|
@@ -944,6 +1166,15 @@ export function authorizationService(db) {
|
|
|
944
1166
|
explanation: "Actor agent was not found in the target company.",
|
|
945
1167
|
});
|
|
946
1168
|
}
|
|
1169
|
+
if (input.actor.keyScope?.kind === "skill_test") {
|
|
1170
|
+
const skillTestDecision = decideSkillTestAccess({
|
|
1171
|
+
action: input.action,
|
|
1172
|
+
resource: input.resource,
|
|
1173
|
+
scope: input.actor.keyScope,
|
|
1174
|
+
});
|
|
1175
|
+
if (skillTestDecision)
|
|
1176
|
+
return skillTestDecision;
|
|
1177
|
+
}
|
|
947
1178
|
if (input.actor.source === "agent_key" && input.actor.keyScope?.kind === "task_bridge") {
|
|
948
1179
|
const keyId = input.actor.keyId ?? null;
|
|
949
1180
|
if (!keyId) {
|
|
@@ -1068,13 +1299,36 @@ export function authorizationService(db) {
|
|
|
1068
1299
|
}
|
|
1069
1300
|
if (input.action === "agent_config:update" &&
|
|
1070
1301
|
input.resource.type === "agent" &&
|
|
1071
|
-
input.resource.agentId === actorAgentId
|
|
1302
|
+
input.resource.agentId === actorAgentId &&
|
|
1303
|
+
!scopeBoolean(input.scope, "requiresChangeGrant")) {
|
|
1072
1304
|
return allow({
|
|
1073
1305
|
action: input.action,
|
|
1074
1306
|
reason: "allow_self",
|
|
1075
1307
|
explanation: "Allowed because the actor is updating its own agent configuration.",
|
|
1076
1308
|
});
|
|
1077
1309
|
}
|
|
1310
|
+
if (input.action === "agent_config:read") {
|
|
1311
|
+
if (input.resource.type === "agent" && input.resource.agentId === actorAgentId) {
|
|
1312
|
+
return allow({
|
|
1313
|
+
action: input.action,
|
|
1314
|
+
reason: "allow_self",
|
|
1315
|
+
explanation: "Allowed because the actor is reading its own agent configuration.",
|
|
1316
|
+
});
|
|
1317
|
+
}
|
|
1318
|
+
return decideWithAgentConfigReadGrant("agent", actorAgentId);
|
|
1319
|
+
}
|
|
1320
|
+
if (input.action === "agent_config:update") {
|
|
1321
|
+
return decideWithProtectedChangeGrants("agent", actorAgentId, {
|
|
1322
|
+
direct: "agents:configure",
|
|
1323
|
+
suggest: "agents:suggest-changes",
|
|
1324
|
+
});
|
|
1325
|
+
}
|
|
1326
|
+
if (input.action === "skill_config:update") {
|
|
1327
|
+
return decideWithProtectedChangeGrants("agent", actorAgentId, {
|
|
1328
|
+
direct: "skills:create",
|
|
1329
|
+
suggest: "skills:suggest-changes",
|
|
1330
|
+
});
|
|
1331
|
+
}
|
|
1078
1332
|
if (permissionKey) {
|
|
1079
1333
|
const grantDecision = await decidePrincipalGrant({
|
|
1080
1334
|
companyId,
|
|
@@ -1088,8 +1342,6 @@ export function authorizationService(db) {
|
|
|
1088
1342
|
return grantDecision;
|
|
1089
1343
|
}
|
|
1090
1344
|
if ((input.action === "agents:create" ||
|
|
1091
|
-
input.action === "agent_config:read" ||
|
|
1092
|
-
input.action === "agent_config:update" ||
|
|
1093
1345
|
input.action === "tasks:manage_active_checkouts") &&
|
|
1094
1346
|
canCreateAgentsLegacy(actorAgent)) {
|
|
1095
1347
|
return allow({
|
|
@@ -1116,6 +1368,70 @@ export function authorizationService(db) {
|
|
|
1116
1368
|
: `No agent permission mapping exists for ${input.action}.`,
|
|
1117
1369
|
});
|
|
1118
1370
|
}
|
|
1371
|
+
async function applyResponsibleUserIntersection(input, agentDecision) {
|
|
1372
|
+
const responsibleUserId = input.actor.onBehalfOfUserId?.trim();
|
|
1373
|
+
if (input.actor.type !== "agent" || !responsibleUserId || !agentDecision.allowed) {
|
|
1374
|
+
return agentDecision;
|
|
1375
|
+
}
|
|
1376
|
+
const companyId = companyIdForResource(input.resource);
|
|
1377
|
+
const snapshot = await getResponsibleUserSnapshot({
|
|
1378
|
+
actor: input.actor,
|
|
1379
|
+
companyId,
|
|
1380
|
+
userId: responsibleUserId,
|
|
1381
|
+
});
|
|
1382
|
+
const denyCode = snapshot.userExists && snapshot.activeMembership
|
|
1383
|
+
? "RESPONSIBLE_USER_UNAUTHORIZED"
|
|
1384
|
+
: "RESPONSIBLE_USER_UNAVAILABLE";
|
|
1385
|
+
const userDecision = snapshot.userExists && snapshot.activeMembership
|
|
1386
|
+
? await decideBase({
|
|
1387
|
+
...input,
|
|
1388
|
+
actor: {
|
|
1389
|
+
type: "board",
|
|
1390
|
+
userId: responsibleUserId,
|
|
1391
|
+
companyIds: [companyId],
|
|
1392
|
+
memberships: [snapshot.activeMembership],
|
|
1393
|
+
isInstanceAdmin: false,
|
|
1394
|
+
ignoreInstanceAdmin: true,
|
|
1395
|
+
source: "session",
|
|
1396
|
+
},
|
|
1397
|
+
})
|
|
1398
|
+
: deny({
|
|
1399
|
+
action: input.action,
|
|
1400
|
+
reason: "deny_missing_membership",
|
|
1401
|
+
explanation: `Responsible user ${responsibleUserId} is unavailable for company ${companyId}.`,
|
|
1402
|
+
});
|
|
1403
|
+
if (!userDecision.allowed &&
|
|
1404
|
+
userDecision.reason === "deny_unsupported_action" &&
|
|
1405
|
+
activeResponsibleUserCanAuthorizeIssueAction(input.action, snapshot.activeMembership)) {
|
|
1406
|
+
return agentDecision;
|
|
1407
|
+
}
|
|
1408
|
+
if (userDecision.allowed)
|
|
1409
|
+
return agentDecision;
|
|
1410
|
+
const denied = deny({
|
|
1411
|
+
action: input.action,
|
|
1412
|
+
reason: userDecision.reason,
|
|
1413
|
+
code: denyCode,
|
|
1414
|
+
explanation: denyCode === "RESPONSIBLE_USER_UNAVAILABLE"
|
|
1415
|
+
? `Responsible user ${responsibleUserId} is unavailable for company ${companyId}.`
|
|
1416
|
+
: `Responsible user ${responsibleUserId} is not authorized for ${input.action}: ${userDecision.explanation}`,
|
|
1417
|
+
grant: userDecision.grant,
|
|
1418
|
+
});
|
|
1419
|
+
logger.warn({
|
|
1420
|
+
authzMode: responsibleUserAuthzShadowMode() ? "shadow" : "enforce",
|
|
1421
|
+
code: denied.code,
|
|
1422
|
+
reason: userDecision.reason,
|
|
1423
|
+
action: input.action,
|
|
1424
|
+
resourceType: input.resource.type,
|
|
1425
|
+
companyId,
|
|
1426
|
+
actorAgentId: input.actor.agentId ?? null,
|
|
1427
|
+
responsibleUserId,
|
|
1428
|
+
}, "responsible-user authorization intersection denied");
|
|
1429
|
+
return responsibleUserAuthzShadowMode() ? agentDecision : denied;
|
|
1430
|
+
}
|
|
1431
|
+
async function decide(input) {
|
|
1432
|
+
const agentDecision = await decideBase(input);
|
|
1433
|
+
return applyResponsibleUserIntersection(input, agentDecision);
|
|
1434
|
+
}
|
|
1119
1435
|
return {
|
|
1120
1436
|
decide,
|
|
1121
1437
|
decidePrincipalGrant,
|