@polymorphism-tech/morph-spec 4.2.0 → 4.3.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/bin/morph-spec.js +283 -8
- package/bin/validate.js +4 -4
- package/docs/{v3.0 → next-generation}/AGENTS.md +1 -1
- package/docs/next-generation/CONTEXT-OPTIMIZATION.md +267 -0
- package/docs/next-generation/EXECUTION-FLOW.md +274 -0
- package/docs/next-generation/META-PROMPTS.md +235 -0
- package/docs/next-generation/MIGRATION-GUIDE.md +253 -0
- package/docs/next-generation/THREAD-MANAGEMENT.md +240 -0
- package/package.json +5 -5
- package/src/commands/agents/agents-fuse.js +96 -0
- package/src/commands/agents/micro-agent.js +112 -0
- package/src/commands/agents/spawn-team.js +69 -4
- package/src/commands/agents/squad-template.js +146 -0
- package/src/commands/analytics/analytics.js +176 -0
- package/src/commands/context/context-prime.js +63 -0
- package/src/commands/context/core-four.js +54 -0
- package/src/commands/mcp/mcp.js +102 -0
- package/src/commands/project/detect-agents.js +1 -1
- package/src/commands/project/doctor.js +573 -356
- package/src/commands/project/init.js +1 -1
- package/src/commands/project/update.js +1 -1
- package/src/commands/state/advance-phase.js +433 -416
- package/src/commands/templates/template-render.js +80 -1
- package/src/commands/threads/thread-template.js +103 -0
- package/src/commands/threads/threads.js +261 -0
- package/src/commands/trust/trust.js +205 -0
- package/src/{orchestrator.js → core/orchestrator.js} +8 -8
- package/src/core/state/state-manager.js +18 -2
- package/src/core/workflows/workflow-detector.js +100 -2
- package/src/lib/agents/micro-agent-factory.js +161 -0
- package/src/lib/analytics/analytics-engine.js +345 -0
- package/src/lib/checkpoints/checkpoint-hooks.js +293 -258
- package/src/lib/context/context-bundler.js +240 -0
- package/src/lib/context/context-optimizer.js +212 -0
- package/src/lib/context/context-tracker.js +273 -0
- package/src/lib/context/core-four-tracker.js +201 -0
- package/src/lib/context/mcp-optimizer.js +200 -0
- package/src/lib/execution/fusion-executor.js +304 -0
- package/src/lib/execution/parallel-executor.js +270 -0
- package/src/lib/generators/context-generator.js +3 -3
- package/src/lib/generators/recap-generator.js +2 -2
- package/src/lib/hooks/hook-executor.js +169 -0
- package/src/lib/hooks/stop-hook-executor.js +286 -0
- package/src/lib/hops/hop-composer.js +221 -0
- package/src/lib/threads/thread-coordinator.js +238 -0
- package/src/lib/threads/thread-manager.js +317 -0
- package/src/lib/tracking/artifact-trail.js +202 -0
- package/src/lib/trust/trust-manager.js +269 -0
- package/src/lib/validators/design-system/design-system-validator.js +2 -2
- package/src/lib/validators/validation-runner.js +6 -6
- package/stacks/blazor-azure/.morph/config/agents.json +72 -3
- package/stacks/nextjs-supabase/.morph/config/agents.json +3 -3
- package/CLAUDE.md +0 -993
- package/docs/llm-interaction-config.md +0 -735
- package/docs/v3.0/EXECUTION-FLOW.md +0 -1304
- package/src/commands/utils/migrate-state.js +0 -158
- package/src/commands/utils/upgrade.js +0 -346
- package/src/lib/validators/architecture-validator.js +0 -60
- package/src/lib/validators/content-validator.js +0 -164
- package/src/lib/validators/package-validator.js +0 -61
- package/src/lib/validators/ui-contrast-validator.js +0 -44
- package/stacks/blazor-azure/.claude/commands/morph-apply.md +0 -221
- package/stacks/blazor-azure/.claude/commands/morph-archive.md +0 -79
- package/stacks/blazor-azure/.claude/commands/morph-deploy.md +0 -529
- package/stacks/blazor-azure/.claude/commands/morph-infra.md +0 -209
- package/stacks/blazor-azure/.claude/commands/morph-preflight.md +0 -227
- package/stacks/blazor-azure/.claude/commands/morph-proposal.md +0 -122
- package/stacks/blazor-azure/.claude/commands/morph-status.md +0 -86
- package/stacks/blazor-azure/.claude/commands/morph-troubleshoot.md +0 -122
- package/stacks/blazor-azure/.claude/skills/level-0-meta/README.md +0 -7
- package/stacks/blazor-azure/.claude/skills/level-0-meta/code-review.md +0 -226
- package/stacks/blazor-azure/.claude/skills/level-0-meta/morph-checklist.md +0 -117
- package/stacks/blazor-azure/.claude/skills/level-0-meta/simulation-checklist.md +0 -77
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/README.md +0 -7
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/morph-replicate.md +0 -213
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/phase-clarify.md +0 -131
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/phase-design.md +0 -213
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/phase-setup.md +0 -106
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/phase-tasks.md +0 -164
- package/stacks/blazor-azure/.claude/skills/level-1-workflows/phase-uiux.md +0 -169
- package/stacks/blazor-azure/.claude/skills/level-2-domains/README.md +0 -14
- package/stacks/blazor-azure/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +0 -192
- package/stacks/blazor-azure/.claude/skills/level-2-domains/architecture/po-pm-advisor.md +0 -197
- package/stacks/blazor-azure/.claude/skills/level-2-domains/architecture/prompt-engineer.md +0 -189
- package/stacks/blazor-azure/.claude/skills/level-2-domains/architecture/seo-growth-hacker.md +0 -320
- package/stacks/blazor-azure/.claude/skills/level-2-domains/architecture/standards-architect.md +0 -156
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/api-designer.md +0 -59
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/dotnet-senior.md +0 -77
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ef-modeler.md +0 -58
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/hangfire-orchestrator.md +0 -126
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ms-agent-expert.md +0 -45
- package/stacks/blazor-azure/.claude/skills/level-2-domains/frontend/blazor-builder.md +0 -210
- package/stacks/blazor-azure/.claude/skills/level-2-domains/frontend/nextjs-expert.md +0 -154
- package/stacks/blazor-azure/.claude/skills/level-2-domains/frontend/ui-ux-designer.md +0 -191
- package/stacks/blazor-azure/.claude/skills/level-2-domains/infrastructure/azure-architect.md +0 -142
- package/stacks/blazor-azure/.claude/skills/level-2-domains/infrastructure/azure-deploy-specialist.md +0 -699
- package/stacks/blazor-azure/.claude/skills/level-2-domains/infrastructure/bicep-architect.md +0 -126
- package/stacks/blazor-azure/.claude/skills/level-2-domains/infrastructure/container-specialist.md +0 -131
- package/stacks/blazor-azure/.claude/skills/level-2-domains/infrastructure/devops-engineer.md +0 -119
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/asaas-financial.md +0 -130
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/azure-identity.md +0 -142
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/clerk-auth.md +0 -108
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/hangfire-orchestrator.md +0 -64
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/resend-email.md +0 -119
- package/stacks/blazor-azure/.claude/skills/level-2-domains/quality/code-analyzer.md +0 -235
- package/stacks/blazor-azure/.claude/skills/level-2-domains/quality/testing-specialist.md +0 -126
- package/stacks/blazor-azure/.claude/skills/level-3-technologies/README.md +0 -7
- package/stacks/blazor-azure/.claude/skills/level-4-patterns/README.md +0 -7
- package/stacks/blazor-azure/.morph/archive/.gitkeep +0 -25
- package/stacks/blazor-azure/.morph/features/.gitkeep +0 -25
- package/stacks/blazor-azure/.morph/schemas/agent.schema.json +0 -296
- package/stacks/blazor-azure/.morph/schemas/tasks.schema.json +0 -220
- package/stacks/blazor-azure/.morph/specs/.gitkeep +0 -20
- package/stacks/blazor-azure/.morph/test-infra/example.bicep +0 -59
- package/stacks/nextjs-supabase/.claude/commands/morph-apply.md +0 -221
- package/stacks/nextjs-supabase/.claude/commands/morph-archive.md +0 -79
- package/stacks/nextjs-supabase/.claude/commands/morph-deploy.md +0 -529
- package/stacks/nextjs-supabase/.claude/commands/morph-infra.md +0 -209
- package/stacks/nextjs-supabase/.claude/commands/morph-preflight.md +0 -227
- package/stacks/nextjs-supabase/.claude/commands/morph-proposal.md +0 -122
- package/stacks/nextjs-supabase/.claude/commands/morph-status.md +0 -86
- package/stacks/nextjs-supabase/.claude/commands/morph-troubleshoot.md +0 -122
- package/stacks/nextjs-supabase/.claude/settings.local.json +0 -6
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/backend/dotnet-supabase.md +0 -244
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/frontend/nextjs-supabase.md +0 -335
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/infrastructure/easypanel-deployer.md +0 -189
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/integrations/supabase-expert.md +0 -50
- /package/docs/{v3.0 → next-generation}/ANALYSIS.md +0 -0
- /package/docs/{v3.0 → next-generation}/ARCHITECTURE.md +0 -0
- /package/docs/{v3.0 → next-generation}/FEATURES.md +0 -0
- /package/docs/{v3.0 → next-generation}/README.md +0 -0
- /package/docs/{v3.0 → next-generation}/ROADMAP.md +0 -0
package/stacks/nextjs-supabase/.claude/skills/level-2-domains/infrastructure/easypanel-deployer.md
DELETED
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
# EasyPanel Deployer
|
|
2
|
-
|
|
3
|
-
> **Layer:** 2 | **Load:** on-keyword | **Keywords:** easypanel, deploy, docker, ssl, domain, vps, container
|
|
4
|
-
|
|
5
|
-
## Identity
|
|
6
|
-
|
|
7
|
-
Infrastructure and deployment specialist for EasyPanel on VPS. Builds multi-stage Dockerfiles for .NET API and Next.js frontend, configures GitHub integration for auto-deploy, manages SSL certificates, and sets up health check endpoints.
|
|
8
|
-
|
|
9
|
-
## Domains
|
|
10
|
-
|
|
11
|
-
- deployment
|
|
12
|
-
- docker
|
|
13
|
-
- ssl
|
|
14
|
-
- monitoring
|
|
15
|
-
|
|
16
|
-
## Standards
|
|
17
|
-
|
|
18
|
-
- architecture.md -- Layer separation reflected in Docker build stages
|
|
19
|
-
- coding.md -- Health check endpoint patterns
|
|
20
|
-
|
|
21
|
-
## Patterns
|
|
22
|
-
|
|
23
|
-
### Dockerfile Multi-Stage (.NET API)
|
|
24
|
-
|
|
25
|
-
```dockerfile
|
|
26
|
-
# Stage 1: Build
|
|
27
|
-
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
|
|
28
|
-
WORKDIR /src
|
|
29
|
-
COPY *.csproj .
|
|
30
|
-
RUN dotnet restore
|
|
31
|
-
COPY . .
|
|
32
|
-
RUN dotnet publish -c Release -o /app/publish --no-restore
|
|
33
|
-
|
|
34
|
-
# Stage 2: Runtime
|
|
35
|
-
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
|
|
36
|
-
WORKDIR /app
|
|
37
|
-
COPY --from=build /app/publish .
|
|
38
|
-
ENV ASPNETCORE_URLS=http://+:8080
|
|
39
|
-
ENV ASPNETCORE_ENVIRONMENT=Production
|
|
40
|
-
EXPOSE 8080
|
|
41
|
-
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
|
|
42
|
-
CMD curl -f http://localhost:8080/health || exit 1
|
|
43
|
-
ENTRYPOINT ["dotnet", "Api.dll"]
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
### Dockerfile Multi-Stage (Next.js)
|
|
47
|
-
|
|
48
|
-
```dockerfile
|
|
49
|
-
# Stage 1: Dependencies
|
|
50
|
-
FROM node:22-alpine AS deps
|
|
51
|
-
WORKDIR /app
|
|
52
|
-
COPY package.json package-lock.json ./
|
|
53
|
-
RUN npm ci --omit=dev
|
|
54
|
-
|
|
55
|
-
# Stage 2: Build
|
|
56
|
-
FROM node:22-alpine AS builder
|
|
57
|
-
WORKDIR /app
|
|
58
|
-
COPY --from=deps /app/node_modules ./node_modules
|
|
59
|
-
COPY . .
|
|
60
|
-
ENV NEXT_TELEMETRY_DISABLED=1
|
|
61
|
-
RUN npm run build
|
|
62
|
-
|
|
63
|
-
# Stage 3: Runtime
|
|
64
|
-
FROM node:22-alpine AS runner
|
|
65
|
-
WORKDIR /app
|
|
66
|
-
ENV NODE_ENV=production
|
|
67
|
-
ENV NEXT_TELEMETRY_DISABLED=1
|
|
68
|
-
RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 nextjs
|
|
69
|
-
COPY --from=builder /app/public ./public
|
|
70
|
-
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
|
|
71
|
-
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
|
|
72
|
-
USER nextjs
|
|
73
|
-
EXPOSE 3000
|
|
74
|
-
ENV PORT=3000
|
|
75
|
-
ENV HOSTNAME="0.0.0.0"
|
|
76
|
-
CMD ["node", "server.js"]
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### EasyPanel GitHub Integration
|
|
80
|
-
|
|
81
|
-
```yaml
|
|
82
|
-
# EasyPanel service configuration (via UI or API)
|
|
83
|
-
# 1. Connect GitHub repository
|
|
84
|
-
# 2. Configure build settings:
|
|
85
|
-
Service:
|
|
86
|
-
name: my-app-api
|
|
87
|
-
source: github
|
|
88
|
-
repository: org/repo
|
|
89
|
-
branch: main
|
|
90
|
-
dockerfile: ./backend/Dockerfile
|
|
91
|
-
port: 8080
|
|
92
|
-
env:
|
|
93
|
-
- SUPABASE_URL=https://xxx.supabase.co
|
|
94
|
-
- SUPABASE_SERVICE_KEY=${SECRET}
|
|
95
|
-
- ASPNETCORE_ENVIRONMENT=Production
|
|
96
|
-
|
|
97
|
-
# Auto-deploy: triggers on push to configured branch
|
|
98
|
-
# Rollback: EasyPanel keeps previous image for instant rollback
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### SSL Setup
|
|
102
|
-
|
|
103
|
-
```
|
|
104
|
-
# EasyPanel handles SSL automatically via Let's Encrypt
|
|
105
|
-
# Configuration steps:
|
|
106
|
-
# 1. Add custom domain in EasyPanel service settings
|
|
107
|
-
# 2. Point DNS A record to VPS IP
|
|
108
|
-
# 3. EasyPanel auto-provisions SSL certificate
|
|
109
|
-
# 4. Auto-renewal handled by EasyPanel
|
|
110
|
-
|
|
111
|
-
# Force HTTPS redirect (handled by EasyPanel reverse proxy)
|
|
112
|
-
# No application-level SSL configuration needed
|
|
113
|
-
|
|
114
|
-
# Multi-domain setup:
|
|
115
|
-
# - api.myapp.com -> API service (port 8080)
|
|
116
|
-
# - myapp.com -> Web service (port 3000)
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### Health Checks
|
|
120
|
-
|
|
121
|
-
```csharp
|
|
122
|
-
// .NET API health check endpoint
|
|
123
|
-
// Program.cs
|
|
124
|
-
builder.Services.AddHealthChecks()
|
|
125
|
-
.AddNpgSql(connectionString, name: "supabase-db")
|
|
126
|
-
.AddUrlGroup(new Uri($"{supabaseUrl}/rest/v1/"), name: "supabase-api");
|
|
127
|
-
|
|
128
|
-
app.MapHealthChecks("/health", new HealthCheckOptions
|
|
129
|
-
{
|
|
130
|
-
ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
app.MapGet("/health/ready", () => Results.Ok(new { status = "ready", timestamp = DateTime.UtcNow }));
|
|
134
|
-
app.MapGet("/health/live", () => Results.Ok(new { status = "alive" }));
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
```typescript
|
|
138
|
-
// Next.js health check (app/api/health/route.ts)
|
|
139
|
-
export async function GET() {
|
|
140
|
-
return Response.json({
|
|
141
|
-
status: "healthy",
|
|
142
|
-
timestamp: new Date().toISOString(),
|
|
143
|
-
version: process.env.npm_package_version ?? "unknown",
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### Docker Compose (Local Development)
|
|
149
|
-
|
|
150
|
-
```yaml
|
|
151
|
-
services:
|
|
152
|
-
api:
|
|
153
|
-
build:
|
|
154
|
-
context: ./backend
|
|
155
|
-
dockerfile: Dockerfile
|
|
156
|
-
ports: ["8080:8080"]
|
|
157
|
-
environment:
|
|
158
|
-
- SUPABASE_URL=http://supabase-kong:8000
|
|
159
|
-
- SUPABASE_SERVICE_KEY=${SERVICE_ROLE_KEY}
|
|
160
|
-
- ASPNETCORE_ENVIRONMENT=Development
|
|
161
|
-
depends_on: [supabase-db]
|
|
162
|
-
|
|
163
|
-
web:
|
|
164
|
-
build:
|
|
165
|
-
context: ./frontend
|
|
166
|
-
dockerfile: Dockerfile
|
|
167
|
-
ports: ["3000:3000"]
|
|
168
|
-
environment:
|
|
169
|
-
- NEXT_PUBLIC_SUPABASE_URL=http://localhost:54321
|
|
170
|
-
- NEXT_PUBLIC_SUPABASE_ANON_KEY=${ANON_KEY}
|
|
171
|
-
- NEXT_PUBLIC_API_URL=http://localhost:8080
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
## Checklist
|
|
175
|
-
|
|
176
|
-
- [ ] Dockerfiles use multi-stage builds (small final images)
|
|
177
|
-
- [ ] Next.js uses standalone output mode
|
|
178
|
-
- [ ] .dockerignore excludes node_modules, .next, .git, .env*
|
|
179
|
-
- [ ] Health check endpoints configured
|
|
180
|
-
- [ ] Environment variables set in EasyPanel (not hardcoded)
|
|
181
|
-
- [ ] SSL certificates provisioned via EasyPanel
|
|
182
|
-
- [ ] DNS records point to VPS IP
|
|
183
|
-
- [ ] Auto-deploy configured on main branch
|
|
184
|
-
- [ ] Resource limits set (CPU/memory) in EasyPanel
|
|
185
|
-
- [ ] Logs accessible via EasyPanel dashboard
|
|
186
|
-
|
|
187
|
-
---
|
|
188
|
-
|
|
189
|
-
*MORPH-SPEC by Polymorphism Tech*
|
package/stacks/nextjs-supabase/.claude/skills/level-2-domains/integrations/supabase-expert.md
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# Supabase Expert
|
|
2
|
-
|
|
3
|
-
> **Layer:** 2 | **Load:** on-keyword | **Keywords:** supabase, postgres, rls, auth, storage, realtime, pgvector, migration
|
|
4
|
-
|
|
5
|
-
## Identity
|
|
6
|
-
|
|
7
|
-
Supabase platform specialist. Designs PostgreSQL schemas, RLS policies, Auth flows, Storage buckets, pgvector embeddings.
|
|
8
|
-
|
|
9
|
-
## Knowledge Base (Consult These)
|
|
10
|
-
|
|
11
|
-
- `framework/standards/infrastructure/supabase/rls.md` - RLS policies, security patterns
|
|
12
|
-
- `framework/standards/infrastructure/supabase/auth.md` - Auth providers, triggers, profiles
|
|
13
|
-
- `framework/standards/infrastructure/supabase/storage.md` - Buckets, file policies, MIME types
|
|
14
|
-
- `framework/standards/infrastructure/supabase/pgvector.md` - Vector indexes, similarity search
|
|
15
|
-
- `framework/standards/backend/database/postgresql/database.md` - PostgreSQL schema design
|
|
16
|
-
|
|
17
|
-
## Responsibilities
|
|
18
|
-
|
|
19
|
-
- Design schemas following PostgreSQL naming (snake_case per postgresql/database.md)
|
|
20
|
-
- Create RLS policies per security patterns in rls.md
|
|
21
|
-
- Configure Auth triggers per auth.md signup patterns
|
|
22
|
-
- Set up Storage buckets with policies per storage.md
|
|
23
|
-
- Implement pgvector indexes per pgvector.md (HNSW vs IVFFlat)
|
|
24
|
-
|
|
25
|
-
## Prompt Template
|
|
26
|
-
|
|
27
|
-
When working on Supabase tasks:
|
|
28
|
-
1. Consult `rls.md` for all table policies (enable RLS, create policies for SELECT/INSERT/UPDATE/DELETE)
|
|
29
|
-
2. Follow `auth.md` for signup triggers and profile creation
|
|
30
|
-
3. Use `storage.md` for bucket configuration (size limits, MIME types, folder structure)
|
|
31
|
-
4. Apply `pgvector.md` for embedding indexes and similarity search functions
|
|
32
|
-
5. ALWAYS use snake_case for table/column names (PostgreSQL convention)
|
|
33
|
-
|
|
34
|
-
## When to Use
|
|
35
|
-
|
|
36
|
-
- Database schema design
|
|
37
|
-
- RLS policy creation/audit
|
|
38
|
-
- Supabase Auth configuration
|
|
39
|
-
- Vector search implementation
|
|
40
|
-
- PostgreSQL migrations
|
|
41
|
-
|
|
42
|
-
## Collaborates With
|
|
43
|
-
|
|
44
|
-
- nextjs-senior - Frontend integration
|
|
45
|
-
- api-designer - Backend API contracts
|
|
46
|
-
- dotnet-senior - .NET backend integration
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
*MORPH-SPEC by Polymorphism Tech*
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|