@kheleshikhi/studio-agent 0.8.0 → 0.9.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.
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ import { episodeTimeline, type Episode, type EpisodeShot, type ShotKeyInputs } from "./episode.js";
2
+ import { type Encoder, type RenderRecipe } from "./video.js";
3
+ /** What identity resolution found for one shot (everything but recipe, profile and encoder). */
4
+ export type ResolvedShot = {
5
+ sources: ShotKeyInputs["sources"];
6
+ dependency_digests: ShotKeyInputs["dependency_digests"];
7
+ audio_sha256: ShotKeyInputs["audio_sha256"];
8
+ /** Free-form identity detail for the manifest (revisions, manifests, notes). */
9
+ identity: Record<string, unknown>;
10
+ /** Opaque data the renderer needs (the candidate source, for instance). */
11
+ render?: unknown;
12
+ };
13
+ export type RenderedShot = {
14
+ output: string;
15
+ manifest: string;
16
+ };
17
+ export type EpisodeDeps = {
18
+ encoder: Encoder;
19
+ runtimeFingerprint: string | null;
20
+ resolveShot: (shot: EpisodeShot) => Promise<ResolvedShot>;
21
+ /** Render one shot into `destination` (a fresh directory); return its video.mp4 and render.json. */
22
+ renderShot: (shot: EpisodeShot, recipe: RenderRecipe, resolved: ResolvedShot, destination: string) => Promise<RenderedShot>;
23
+ log?: (message: string) => void;
24
+ };
25
+ export type EpisodeOptions = {
26
+ episode: Episode;
27
+ /** Relative audio paths resolve against this directory (the episode.json's). */
28
+ baseDirectory: string;
29
+ out: string;
30
+ cache: string;
31
+ workers: number;
32
+ deps: EpisodeDeps;
33
+ };
34
+ export declare function sha256File(file: string): Promise<string | null>;
35
+ export type EpisodeProbe = {
36
+ frames: number;
37
+ width: number;
38
+ height: number;
39
+ video_codec: string;
40
+ audio_codec: string | null;
41
+ duration: number;
42
+ video_duration: number | null;
43
+ audio_duration: number | null;
44
+ video_start: number | null;
45
+ audio_start: number | null;
46
+ pix_fmt: string;
47
+ };
48
+ /** Count frames and read both streams' start and duration. */
49
+ export declare function probeEpisodeFile(encoder: Encoder, file: string): Promise<EpisodeProbe | null>;
50
+ export type ShotPlan = {
51
+ id: string;
52
+ index: number;
53
+ subject: string;
54
+ key: string;
55
+ frames: number;
56
+ offset_seconds: number;
57
+ duration_seconds: number;
58
+ cache: "valid" | "missing" | "invalid";
59
+ cache_reason?: string;
60
+ inputs: ShotKeyInputs;
61
+ identity: Record<string, unknown>;
62
+ };
63
+ export type ShotOutcome = ShotPlan & {
64
+ state: "reused" | "rendered" | "failed" | "not_started";
65
+ video?: string;
66
+ render_json?: string;
67
+ video_sha256?: string;
68
+ render_seconds?: number;
69
+ error?: {
70
+ code: string;
71
+ message: string;
72
+ stage: string;
73
+ };
74
+ };
75
+ /** Resolve, key and check every shot against the cache. No rendering. */
76
+ export declare function planEpisode(options: EpisodeOptions): Promise<{
77
+ shots: ShotPlan[];
78
+ timeline: ReturnType<typeof episodeTimeline>;
79
+ }>;
80
+ export type EpisodeResult = {
81
+ ok: boolean;
82
+ output?: string;
83
+ srt?: string;
84
+ manifest: string;
85
+ state: string;
86
+ shots: ShotOutcome[];
87
+ reused: number;
88
+ rendered: number;
89
+ failed: number;
90
+ qc?: Array<{
91
+ check: string;
92
+ pass: boolean;
93
+ detail: string;
94
+ }>;
95
+ timings: Record<string, number>;
96
+ };
97
+ /**
98
+ * Render (or reuse) every shot, then assemble. A failed shot stops new
99
+ * renders; shots already rendered stay in the cache, so a retry reuses them
100
+ * and starts at the failed shot.
101
+ */
102
+ export declare function renderEpisode(options: EpisodeOptions): Promise<EpisodeResult>;
103
+ type AudioFile = {
104
+ path: string;
105
+ sha256: string;
106
+ };
107
+ /** Every episode audio file, resolved and hashed (narration, music, effects). */
108
+ export declare function episodeAudioFiles(options: EpisodeOptions): Promise<Map<string, AudioFile>>;
109
+ export {};
@@ -0,0 +1,381 @@
1
+ /**
2
+ * The episode runner: validate -> resolve each shot's identity -> key ->
3
+ * reuse or render -> verify -> assemble -> QC. See episode.ts for the
4
+ * contract. Rendering and identity resolution are injected, so the runner is
5
+ * the same for the CLI (daemon render jobs, real Chrome) and for tests
6
+ * (synthetic shots), and resume-after-failure is a property of the cache,
7
+ * not of a separate code path.
8
+ */
9
+ import { spawn } from "node:child_process";
10
+ import { createHash, randomBytes } from "node:crypto";
11
+ import { access, copyFile, mkdir, readFile, rename, rm, stat, writeFile } from "node:fs/promises";
12
+ import path from "node:path";
13
+ import { CliError } from "./types.js";
14
+ import { anchoredSeconds, assemblyKey, checkCachedShot, concatArguments, concatList, copyVideoArguments, crossfadeArguments, encoderSettings, EPISODE_MANIFEST_KIND, episodeCues, episodeMixArguments, episodeTimeline, loudnessApplyArguments, loudnessMeasureArguments, loudnessCorrectionArguments, loudnormRange, muxArguments, nearestOnset, onsets, parseEbur128, parseLoudnorm, qcChecks, SHOT_CACHE_KIND, shotCacheKey, shotRecipe, toSrt, videoSegments, } from "./episode.js";
15
+ import { MIX_SAMPLE_RATE } from "./video.js";
16
+ function execute(command, args) {
17
+ return new Promise((resolve, reject) => {
18
+ const child = spawn(command, args, { stdio: ["ignore", "pipe", "pipe"] });
19
+ let stdout = "";
20
+ let stderr = "";
21
+ child.stdout.on("data", (chunk) => { stdout += chunk; if (stdout.length > 4_000_000)
22
+ stdout = stdout.slice(-2_000_000); });
23
+ child.stderr.on("data", (chunk) => { stderr += chunk; if (stderr.length > 4_000_000)
24
+ stderr = stderr.slice(-2_000_000); });
25
+ child.on("error", reject);
26
+ child.on("close", (code) => resolve({ code: code ?? 1, stdout, stderr }));
27
+ });
28
+ }
29
+ async function ffmpeg(encoder, args, stage) {
30
+ const result = await execute(encoder.ffmpeg, args);
31
+ if (result.code !== 0)
32
+ throw new CliError(`FFmpeg failed at ${stage}.`, "EPISODE_ASSEMBLY_FAILED", 1, { stage, stderr: result.stderr.slice(-1500) });
33
+ return result;
34
+ }
35
+ export async function sha256File(file) {
36
+ try {
37
+ return createHash("sha256").update(await readFile(file)).digest("hex");
38
+ }
39
+ catch {
40
+ return null;
41
+ }
42
+ }
43
+ /** Count frames and read both streams' start and duration. */
44
+ export async function probeEpisodeFile(encoder, file) {
45
+ const result = await execute(encoder.ffprobe, ["-v", "error", "-count_frames", "-show_streams", "-show_format", "-of", "json", file]);
46
+ if (result.code !== 0)
47
+ return null;
48
+ try {
49
+ const document = JSON.parse(result.stdout);
50
+ const video = document.streams.find((stream) => stream.codec_type === "video");
51
+ const audio = document.streams.find((stream) => stream.codec_type === "audio");
52
+ if (!video)
53
+ return null;
54
+ const num = (value) => value === undefined || value === null || value === "N/A" ? null : Number(value);
55
+ return {
56
+ frames: Number(video.nb_read_frames ?? video.nb_frames), width: Number(video.width), height: Number(video.height),
57
+ video_codec: String(video.codec_name), audio_codec: audio ? String(audio.codec_name) : null, duration: Number(document.format.duration),
58
+ video_duration: num(video.duration), audio_duration: audio ? num(audio.duration) : null,
59
+ video_start: num(video.start_time), audio_start: audio ? num(audio.start_time) : null, pix_fmt: String(video.pix_fmt),
60
+ };
61
+ }
62
+ catch {
63
+ return null;
64
+ }
65
+ }
66
+ async function readJson(file) {
67
+ try {
68
+ return JSON.parse(await readFile(file, "utf8"));
69
+ }
70
+ catch {
71
+ return null;
72
+ }
73
+ }
74
+ async function exists(file) {
75
+ return access(file).then(() => true, () => false);
76
+ }
77
+ /** Resolve, key and check every shot against the cache. No rendering. */
78
+ export async function planEpisode(options) {
79
+ const { episode, deps } = options;
80
+ const timeline = episodeTimeline(episode);
81
+ const encoder = encoderSettings(episode, deps.encoder.version);
82
+ const shots = [];
83
+ for (const [index, shot] of episode.shots.entries()) {
84
+ const resolved = await deps.resolveShot(shot);
85
+ const recipe = shotRecipe(episode, shot);
86
+ const inputs = {
87
+ subject: shot.subject, recipe,
88
+ sources: resolved.sources, dependency_digests: resolved.dependency_digests,
89
+ runtime_fingerprint: deps.runtimeFingerprint, audio_sha256: resolved.audio_sha256,
90
+ profile: { profile: episode.output.profile, width: episode.output.width, height: episode.output.height, fps: episode.output.fps },
91
+ encoder,
92
+ };
93
+ const key = shotCacheKey(inputs);
94
+ const timing = timeline.shots[index];
95
+ const directory = path.join(options.cache, key);
96
+ const record = await readJson(path.join(directory, "shot.json"));
97
+ let cache = "missing";
98
+ let reason;
99
+ if (record) {
100
+ const video = path.join(directory, "video.mp4");
101
+ const digest = await sha256File(video);
102
+ const probed = digest ? await probeEpisodeFile(deps.encoder, video) : null;
103
+ const check = checkCachedShot(record, key, timing.frames, digest, probed?.frames ?? null);
104
+ cache = check.valid ? "valid" : "invalid";
105
+ if (!check.valid)
106
+ reason = check.reason;
107
+ }
108
+ shots.push({ id: shot.id, index, subject: shot.subject, key, frames: timing.frames, offset_seconds: timing.offset_seconds,
109
+ duration_seconds: timing.duration_seconds, cache, ...(reason ? { cache_reason: reason } : {}), inputs, identity: { ...resolved.identity } });
110
+ // Keep the renderer's data for this run only (never written out).
111
+ resolvedForRender.set(`${options.out}\0${shot.id}`, resolved);
112
+ }
113
+ return { shots, timeline };
114
+ }
115
+ const resolvedForRender = new Map();
116
+ async function renderOne(options, plan, shot) {
117
+ const { deps } = options;
118
+ const resolved = resolvedForRender.get(`${options.out}\0${shot.id}`);
119
+ if (!resolved)
120
+ throw new CliError(`Shot ${shot.id} was not planned.`, "EPISODE_INTERNAL", 1);
121
+ const destination = path.join(options.cache, `.partial-${plan.key.slice(0, 16)}-${randomBytes(4).toString("hex")}`);
122
+ await mkdir(destination, { recursive: true });
123
+ const started = Date.now();
124
+ try {
125
+ deps.log?.(`shot ${shot.id}: rendering ${plan.frames} frames (key ${plan.key.slice(0, 12)})`);
126
+ const rendered = await deps.renderShot(shot, plan.inputs.recipe, resolved, destination);
127
+ // Verify before the shot enters the cache: frames, size, codecs, audio.
128
+ const probed = await probeEpisodeFile(deps.encoder, rendered.output);
129
+ if (!probed || probed.frames !== plan.frames || probed.width !== plan.inputs.profile.width || probed.height !== plan.inputs.profile.height ||
130
+ probed.video_codec !== "h264" || probed.audio_codec !== "aac") {
131
+ throw new CliError(`Shot ${shot.id} did not verify: ${JSON.stringify(probed)}`, "EPISODE_SHOT_VERIFY_FAILED", 1, { stage: "verify", probe: probed });
132
+ }
133
+ const final = path.join(options.cache, plan.key);
134
+ const video = path.join(destination, "video.mp4");
135
+ if (path.resolve(rendered.output) !== path.resolve(video))
136
+ await copyFile(rendered.output, video);
137
+ if (path.resolve(rendered.manifest) !== path.resolve(path.join(destination, "render.json")))
138
+ await copyFile(rendered.manifest, path.join(destination, "render.json"));
139
+ const digest = await sha256File(video);
140
+ const record = {
141
+ kind: SHOT_CACHE_KIND, key: plan.key, shot: shot.id, inputs: plan.inputs, video_sha256: digest, frames: probed.frames,
142
+ bytes: (await stat(video)).size, created_at: new Date().toISOString(), canonical: false,
143
+ };
144
+ await writeFile(path.join(destination, "shot.json"), `${JSON.stringify(record, null, 2)}\n`);
145
+ for (const leftover of ["frames", "audio", "audio-mix.wav", "mounted.png"])
146
+ await rm(path.join(destination, leftover), { recursive: true, force: true });
147
+ await rm(final, { recursive: true, force: true });
148
+ await rename(destination, final);
149
+ return { ...plan, state: "rendered", video: path.join(final, "video.mp4"), render_json: path.join(final, "render.json"),
150
+ video_sha256: digest, render_seconds: (Date.now() - started) / 1000 };
151
+ }
152
+ catch (error) {
153
+ await rm(destination, { recursive: true, force: true }).catch(() => undefined);
154
+ const failure = error instanceof CliError ? error : new CliError(String(error), "EPISODE_SHOT_FAILED");
155
+ const details = failure.details && typeof failure.details === "object" ? failure.details : {};
156
+ return { ...plan, state: "failed", render_seconds: (Date.now() - started) / 1000,
157
+ error: { code: failure.code, message: failure.message, stage: typeof details.stage === "string" ? details.stage : "render" } };
158
+ }
159
+ }
160
+ async function writeState(options, shots, assembly) {
161
+ const file = path.join(options.out, "episode-state.json");
162
+ await mkdir(options.out, { recursive: true });
163
+ await writeFile(file, `${JSON.stringify({
164
+ kind: "kheleshikhi.episode-state.v1", episode: options.episode.id, updated_at: new Date().toISOString(), cache: options.cache,
165
+ shots: shots.map((shot) => ({ id: shot.id, key: shot.key, state: shot.state, ...(shot.error ? { error: shot.error } : {}) })),
166
+ assembly,
167
+ }, null, 2)}\n`);
168
+ return file;
169
+ }
170
+ /**
171
+ * Render (or reuse) every shot, then assemble. A failed shot stops new
172
+ * renders; shots already rendered stay in the cache, so a retry reuses them
173
+ * and starts at the failed shot.
174
+ */
175
+ export async function renderEpisode(options) {
176
+ const { episode, deps } = options;
177
+ const started = Date.now();
178
+ await mkdir(options.cache, { recursive: true });
179
+ await mkdir(options.out, { recursive: true });
180
+ const audioFiles = await episodeAudioFiles(options);
181
+ const planned = await planEpisode(options);
182
+ const planSeconds = (Date.now() - started) / 1000;
183
+ const outcomes = planned.shots.map((plan) => plan.cache === "valid"
184
+ ? { ...plan, state: "reused", video: path.join(options.cache, plan.key, "video.mp4"), render_json: path.join(options.cache, plan.key, "render.json") }
185
+ : { ...plan, state: "not_started" });
186
+ for (const outcome of outcomes)
187
+ if (outcome.state === "reused")
188
+ deps.log?.(`shot ${outcome.id}: reused ${outcome.key.slice(0, 12)}`);
189
+ const pending = outcomes.filter((outcome) => outcome.state === "not_started").map((outcome) => outcome.index);
190
+ const renderStarted = Date.now();
191
+ let failed = false;
192
+ let cursor = 0;
193
+ const worker = async () => {
194
+ while (!failed && cursor < pending.length) {
195
+ const index = pending[cursor++];
196
+ const outcome = await renderOne(options, outcomes[index], episode.shots[index]);
197
+ outcomes[index] = outcome;
198
+ if (outcome.state === "failed")
199
+ failed = true;
200
+ await writeState(options, outcomes, { state: "waiting" });
201
+ }
202
+ };
203
+ await Promise.all(Array.from({ length: Math.max(1, Math.min(options.workers, pending.length || 1)) }, worker));
204
+ const renderSeconds = (Date.now() - renderStarted) / 1000;
205
+ const manifestPath = path.join(options.out, "episode.json");
206
+ const failures = outcomes.filter((outcome) => outcome.state === "failed");
207
+ if (failures.length) {
208
+ const state = await writeState(options, outcomes, { state: "not_started", reason: "a shot failed" });
209
+ const first = failures[0];
210
+ throw new CliError(`Shot ${first.id} failed at ${first.error.stage}: ${first.error.message}`, "EPISODE_SHOT_FAILED", 1, {
211
+ shot: first.id, stage: first.error.stage, code: first.error.code, state,
212
+ reusable: outcomes.filter((outcome) => outcome.state === "reused" || outcome.state === "rendered").map((outcome) => outcome.id),
213
+ not_started: outcomes.filter((outcome) => outcome.state === "not_started").map((outcome) => outcome.id),
214
+ retry: "Run the same command again: valid shots are reused and rendering resumes at the failed shot.",
215
+ });
216
+ }
217
+ const assemblyStarted = Date.now();
218
+ const assembled = await assemble(options, outcomes, planned.timeline, audioFiles);
219
+ const assemblySeconds = (Date.now() - assemblyStarted) / 1000;
220
+ const timings = { plan_seconds: planSeconds, render_seconds: renderSeconds, assembly_seconds: assemblySeconds, total_seconds: (Date.now() - started) / 1000 };
221
+ const manifest = {
222
+ kind: EPISODE_MANIFEST_KIND, canonical: false, certification_evidence: false,
223
+ note: "A presentation derivative assembled from shot renders. Scenes, Experiences and Components stay the authority; nothing here changes or certifies them.",
224
+ episode: { id: episode.id, title: episode.title, context: episode.context, output: episode.output },
225
+ total_frames: planned.timeline.total_frames, total_seconds: planned.timeline.total_seconds,
226
+ shots: outcomes.map((outcome) => ({
227
+ id: outcome.id, subject: outcome.subject, key: outcome.key, cache: outcome.state, frames: outcome.frames,
228
+ offset_seconds: outcome.offset_seconds, duration_seconds: outcome.duration_seconds, video_sha256: outcome.video_sha256 ?? null,
229
+ render_json: outcome.render_json, render_seconds: outcome.render_seconds ?? null, inputs: outcome.inputs, identity: outcome.identity,
230
+ })),
231
+ audio: Object.fromEntries([...audioFiles].map(([id, file]) => [id, { file: path.relative(options.out, file.path), sha256: file.sha256 }])),
232
+ ...assembled.manifest,
233
+ timings,
234
+ rendered_at: new Date().toISOString(),
235
+ };
236
+ await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`);
237
+ await writeFile(path.join(options.out, "qc.json"), `${JSON.stringify({ kind: "kheleshikhi.episode-qc.v1", episode: episode.id, output_sha256: assembled.sha256, checks: assembled.qc }, null, 2)}\n`);
238
+ const state = await writeState(options, outcomes, { state: assembled.qc.every((check) => check.pass) ? "completed" : "qc_failed", output: assembled.output, sha256: assembled.sha256 });
239
+ return {
240
+ ok: assembled.qc.every((check) => check.pass), output: assembled.output, srt: assembled.srt, manifest: manifestPath, state,
241
+ shots: outcomes, reused: outcomes.filter((item) => item.state === "reused").length,
242
+ rendered: outcomes.filter((item) => item.state === "rendered").length, failed: 0, qc: assembled.qc, timings,
243
+ };
244
+ }
245
+ /** Every episode audio file, resolved and hashed (narration, music, effects). */
246
+ export async function episodeAudioFiles(options) {
247
+ const files = new Map();
248
+ for (const item of [...options.episode.audio.narration, ...options.episode.audio.music, ...options.episode.audio.sfx]) {
249
+ const file = path.resolve(options.baseDirectory, item.file);
250
+ const digest = await sha256File(file);
251
+ if (!digest)
252
+ throw new CliError(`Audio ${item.id} is missing: ${file}`, "EPISODE_AUDIO_MISSING", 2, { id: item.id, file });
253
+ files.set(item.id, { path: file, sha256: digest });
254
+ }
255
+ return files;
256
+ }
257
+ async function assemble(options, shots, timeline, audioFiles) {
258
+ const { episode, deps } = options;
259
+ const { encoder } = deps;
260
+ const work = path.join(options.out, "work");
261
+ await rm(work, { recursive: true, force: true });
262
+ await mkdir(work, { recursive: true });
263
+ const total = timeline.total_frames;
264
+ const totalSamples = Math.round((total * MIX_SAMPLE_RATE) / episode.output.fps);
265
+ const key = assemblyKey(episode, shots.map((shot) => shot.key), Object.fromEntries([...audioFiles].map(([id, file]) => [id, file.sha256])));
266
+ const output = path.join(options.out, `${episode.id}.mp4`);
267
+ const srtPath = path.join(options.out, `${episode.id}.srt`);
268
+ const steps = {};
269
+ const stepTimes = {};
270
+ const timed = async (name, args) => {
271
+ const begin = Date.now();
272
+ steps[name] = args.map((value) => value.startsWith(options.out) ? path.relative(options.out, value) : value);
273
+ const result = await ffmpeg(encoder, args, name);
274
+ stepTimes[name] = (stepTimes[name] ?? 0) + (Date.now() - begin) / 1000;
275
+ return result;
276
+ };
277
+ // 1. Picture: copy every shot outside a crossfade run; re-encode only the runs.
278
+ const segments = videoSegments(episode);
279
+ const segmentFiles = [];
280
+ for (const [position, segment] of segments.entries()) {
281
+ if (segment.kind === "copy") {
282
+ for (const index of segment.shots) {
283
+ const file = path.join(work, `shot-${String(index).padStart(3, "0")}.mp4`);
284
+ await timed(`copy_${shots[index].id}`, copyVideoArguments(shots[index].video, file));
285
+ segmentFiles.push(file);
286
+ }
287
+ }
288
+ else {
289
+ const file = path.join(work, `crossfade-${String(position).padStart(3, "0")}.mp4`);
290
+ await timed(`crossfade_${segment.shots.map((index) => shots[index].id).join("_")}`, crossfadeArguments(episode, timeline, segment.shots, segment.shots.map((index) => shots[index].video), file));
291
+ segmentFiles.push(file);
292
+ }
293
+ }
294
+ const list = path.join(work, "concat.txt");
295
+ await writeFile(list, concatList(segmentFiles));
296
+ const picture = path.join(work, "picture.mp4");
297
+ await timed("concat", concatArguments(list, picture, total));
298
+ // 2. One episode audio mix: shot sounds + effects, narration, ducked music.
299
+ const shotInputs = [];
300
+ episode.shots.forEach((shot, index) => {
301
+ if (shot.audio !== "scene" || shot.sound_volume === 0)
302
+ return;
303
+ const timing = timeline.shots[index];
304
+ const next = timeline.shots[index + 1];
305
+ shotInputs.push({ file: shots[index].video, at_seconds: timing.offset_seconds, volume: shot.sound_volume, length_seconds: timing.duration_seconds,
306
+ ...(timing.overlap_frames ? { fade_in: timing.overlap_frames / episode.output.fps } : {}),
307
+ ...(next?.overlap_frames ? { fade_out: next.overlap_frames / episode.output.fps } : {}) });
308
+ });
309
+ for (const item of episode.audio.sfx) {
310
+ shotInputs.push({ file: audioFiles.get(item.id).path, at_seconds: anchoredSeconds(timeline, item.at, item.shot), volume: item.volume, length_seconds: null });
311
+ }
312
+ const narration = episode.audio.narration.map((item) => ({
313
+ file: audioFiles.get(item.id).path, at_seconds: anchoredSeconds(timeline, item.at, item.shot), volume: item.volume, length_seconds: null,
314
+ }));
315
+ const music = episode.audio.music.map((item) => {
316
+ const at = anchoredSeconds(timeline, item.at, item.shot);
317
+ const end = Math.min(item.end ?? timeline.total_seconds, timeline.total_seconds);
318
+ return { file: audioFiles.get(item.id).path, at_seconds: at, volume: item.volume, loop: item.loop, length_seconds: Math.max(0, end - at), duck: item.duck };
319
+ });
320
+ const mixFile = path.join(work, "mix.wav");
321
+ const narrationFile = path.join(work, "narration.wav");
322
+ await timed("mix", episodeMixArguments({ shots: shotInputs, narration, music, total_samples: totalSamples, output: mixFile,
323
+ ...(narration.length ? { narrationOutput: narrationFile } : {}) }));
324
+ // 3. Two-pass loudness normalisation to the target, exact sample count.
325
+ const target = episode.output.loudness;
326
+ const measuredRun = await execute(encoder.ffmpeg, loudnessMeasureArguments(mixFile, target));
327
+ const measured = parseLoudnorm(measuredRun.stderr);
328
+ let normalised = path.join(work, "episode-audio.wav");
329
+ await timed("loudnorm", loudnessApplyArguments(mixFile, target, measured, totalSamples, normalised));
330
+ const afterNormalisation = parseEbur128((await execute(encoder.ffmpeg, ["-hide_banner", "-nostats", "-i", normalised, "-af", "ebur128=peak=true", "-f", "null", "-"])).stderr);
331
+ const correctionArgs = loudnessCorrectionArguments(normalised, target, afterNormalisation.integrated, totalSamples, path.join(work, "episode-audio-corrected.wav"));
332
+ if (correctionArgs) {
333
+ await timed("loudness_correction", correctionArgs);
334
+ normalised = path.join(work, "episode-audio-corrected.wav");
335
+ }
336
+ // 4. Mux: picture copied, audio encoded once.
337
+ const partial = path.join(options.out, `${episode.id}.partial.mp4`);
338
+ await timed("mux", muxArguments(picture, normalised, episode, total, partial));
339
+ // 5. Subtitles from the manifest.
340
+ const cues = episodeCues(episode, timeline);
341
+ await writeFile(srtPath, toSrt(cues));
342
+ // 6. QC on the final file.
343
+ const probed = await probeEpisodeFile(encoder, partial);
344
+ if (!probed)
345
+ throw new CliError("The assembled episode does not probe.", "EPISODE_ASSEMBLY_FAILED", 1, { stage: "qc" });
346
+ const ebur = await execute(encoder.ffmpeg, ["-hide_banner", "-nostats", "-i", partial, "-map", "0:a:0", "-af", "ebur128=peak=true", "-f", "null", "-"]);
347
+ const loudness = parseEbur128(ebur.stderr);
348
+ let narrationOnsets = [];
349
+ if (narration.length) {
350
+ const silence = await execute(encoder.ffmpeg, ["-hide_banner", "-nostats", "-i", narrationFile, "-af", "silencedetect=noise=-45dB:d=0.05", "-f", "null", "-"]);
351
+ const found = onsets(silence.stderr);
352
+ narrationOnsets = episode.audio.narration.map((item) => {
353
+ const expected = anchoredSeconds(timeline, item.at, item.shot);
354
+ return { id: item.id, expected, observed: nearestOnset(found, expected) };
355
+ });
356
+ }
357
+ const qc = qcChecks({ expected_frames: total, fps: episode.output.fps, width: episode.output.width, height: episode.output.height,
358
+ probe: probed, loudness, target, narration_onsets: narrationOnsets });
359
+ await rename(partial, output);
360
+ const sha256 = await sha256File(output);
361
+ const bytes = (await stat(output)).size;
362
+ if (!(await exists(output)))
363
+ throw new CliError("The assembled episode vanished.", "EPISODE_ASSEMBLY_FAILED", 1);
364
+ await rm(work, { recursive: true, force: true });
365
+ return {
366
+ output, srt: srtPath, sha256: sha256, qc,
367
+ manifest: {
368
+ assembly_key: key,
369
+ output: { file: path.basename(output), sha256, bytes, probe: probed },
370
+ subtitles: { file: path.basename(srtPath), cues },
371
+ segments: segments.map((segment) => ({ kind: segment.kind, shots: segment.shots.map((index) => shots[index].id) })),
372
+ loudness: { target, measured_before: measured, lra_used: loudnormRange(target, measured), after_loudnorm: afterNormalisation,
373
+ corrected: correctionArgs !== null, final: loudness,
374
+ method: "two-pass loudnorm (measure, then linear normalisation with the measured values; LRA widened to the mix's own range so it stays linear), then a gain-plus-limiter correction only if still > 0.5 LU off" },
375
+ narration_onsets: narrationOnsets,
376
+ ffmpeg: { version: encoder.version, steps, step_seconds: stepTimes },
377
+ qc,
378
+ },
379
+ };
380
+ }
381
+ //# sourceMappingURL=episode-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"episode-runner.js","sourceRoot":"","sources":["../src/episode-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EACL,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EACnI,qBAAqB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,sBAAsB,EAAE,wBAAwB,EAC1H,2BAA2B,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,GAEvL,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAmC,MAAM,YAAY,CAAC;AAoC9E,SAAS,OAAO,CAAC,OAAe,EAAE,IAAc;IAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1E,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS;YAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3H,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS;YAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3H,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,OAAgB,EAAE,IAAc,EAAE,KAAa;IACnE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,KAAK,GAAG,EAAE,yBAAyB,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrJ,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,IAAI,CAAC;QAAC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AACxG,CAAC;AAOD,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAgB,EAAE,IAAY;IACnE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACtI,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAyE,CAAC;QACnH,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC;QAC/E,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC;QAC/E,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,GAAG,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChH,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YACjH,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;YACvI,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;YACvF,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;SACtH,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAC1B,CAAC;AAaD,KAAK,UAAU,QAAQ,CAAC,IAAY;IAClC,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AACjF,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAuB;IACvD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAClC,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,MAAM,GAAkB;YAC5B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM;YAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;YAC1E,mBAAmB,EAAE,IAAI,CAAC,kBAAkB,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY;YACjF,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;YACjI,OAAO;SACR,CAAC;QACF,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;QACjE,IAAI,KAAK,GAAsB,SAAS,CAAC;QACzC,IAAI,MAA0B,CAAC;QAC/B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3E,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;YAC1F,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,KAAK;gBAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc;YACvH,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/I,kEAAkE;QAClE,iBAAiB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAwB,CAAC;AAE1D,KAAK,UAAU,SAAS,CAAC,OAAuB,EAAE,IAAc,EAAE,IAAiB;IACjF,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACrE,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,QAAQ,CAAC,QAAQ,IAAI,CAAC,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAC7F,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpH,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,IAAI,CAAC,EAAE,eAAe,IAAI,CAAC,MAAM,gBAAgB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9F,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QACxF,wEAAwE;QACxE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;YACtI,MAAM,CAAC,WAAW,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YAClE,MAAM,IAAI,QAAQ,CAAC,QAAQ,IAAI,CAAC,EAAE,oBAAoB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,4BAA4B,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACvJ,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAClG,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YAAE,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;QACtK,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,MAAM,GAAoB;YAC9B,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,MAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM;YACtH,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK;SACxF,CAAC;QACF,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7F,KAAK,MAAM,QAAQ,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,CAAC;YAAE,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzJ,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACjC,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC;YACrH,YAAY,EAAE,MAAO,EAAE,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;IAC3E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,KAAK,YAAY,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC,CAAC;QACvG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAkC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzH,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI;YAC9E,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;IACnI,CAAC;AACH,CAAC;AAWD,KAAK,UAAU,UAAU,CAAC,OAAuB,EAAE,KAAoB,EAAE,QAAiC;IACxG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IAC1D,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACtC,IAAI,EAAE,8BAA8B,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;QAC7H,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7H,QAAQ;KACT,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACjB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAuB;IACzD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;IAClD,MAAM,QAAQ,GAAkB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO;QAChF,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE;QACtJ,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;IACvC,KAAK,MAAM,OAAO,IAAI,QAAQ;QAAE,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ;YAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,OAAO,CAAC,EAAE,YAAY,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACrI,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9G,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACjC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,OAAO,CAAC,MAAM,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAChF,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;YAC1B,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ;gBAAE,MAAM,GAAG,IAAI,CAAC;YAC9C,MAAM,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC;IACF,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/G,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,GAAG,IAAI,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;IAC1E,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;QACrG,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC,EAAE,cAAc,KAAK,CAAC,KAAM,CAAC,KAAK,KAAK,KAAK,CAAC,KAAM,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE;YACxH,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,KAAM,CAAC,IAAI,EAAE,KAAK;YACzE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/H,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YACvG,KAAK,EAAE,8FAA8F;SACtG,CAAC,CAAC;IACL,CAAC;IACD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAClF,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC,GAAG,IAAI,CAAC;IAC9D,MAAM,OAAO,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;IAC9J,MAAM,QAAQ,GAAG;QACf,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK;QAC5E,IAAI,EAAE,uJAAuJ;QAC7J,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;QACnG,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,aAAa;QAC1F,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAChC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM;YACxG,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;YAC9H,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ;SACrI,CAAC,CAAC;QACH,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1I,GAAG,SAAS,CAAC,QAAQ;QACrB,OAAO;QACP,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC;IACF,MAAM,SAAS,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACxE,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,aAAa,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACtM,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACxL,OAAO;QACL,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK;QAC1H,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,MAAM;QAClF,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO;KAC5G,CAAC;AACJ,CAAC;AAID,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAuB;IAC7D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACtH,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,QAAQ,CAAC,SAAS,IAAI,CAAC,EAAE,gBAAgB,IAAI,EAAE,EAAE,uBAAuB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3H,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,OAAuB,EAAE,KAAoB,EAAE,QAA4C,EAAE,UAAkC;IACrJ,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAClC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC;IACpC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,eAAe,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5I,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,KAAK,GAA6B,EAAE,CAAC;IAC3C,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,KAAK,EAAE,IAAY,EAAE,IAAc,EAAE,EAAE;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7G,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACjD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;QACvE,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,gFAAgF;IAChF,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACrD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC3E,MAAM,KAAK,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAM,EAAE,IAAI,CAAC,CAAC,CAAC;gBACtF,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACnF,MAAM,KAAK,CAAC,aAAa,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAChF,kBAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YACjH,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC3C,MAAM,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC/C,MAAM,KAAK,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAE7D,4EAA4E;IAC5E,MAAM,UAAU,GAAe,EAAE,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpC,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC;YAAE,OAAO;QAC9D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACvC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAM,EAAE,UAAU,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,gBAAgB;YAChJ,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzF,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;IACH,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACrC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IACjK,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI;KAC1I,CAAC,CAAC,CAAC;IACJ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7C,MAAM,EAAE,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;QACjF,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/J,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACvD,MAAM,KAAK,CAAC,KAAK,EAAE,mBAAmB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO;QACxH,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEtE,wEAAwE;IACxE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;IACvC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7F,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IACtD,MAAM,KAAK,CAAC,UAAU,EAAE,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IACrG,MAAM,kBAAkB,GAAG,YAAY,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/K,MAAM,cAAc,GAAG,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,kBAAkB,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC,CAAC;IACpK,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,KAAK,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC;QACnD,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC;IAC9D,CAAC;IAED,8CAA8C;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;IACpE,MAAM,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/E,kCAAkC;IAClC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtC,2BAA2B;IAC3B,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,QAAQ,CAAC,uCAAuC,EAAE,yBAAyB,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IACxJ,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,eAAe,GAAqE,EAAE,CAAC;IAC3F,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,kCAAkC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/J,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrC,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACrD,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;QAC/H,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC,CAAC;IACxE,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,iCAAiC,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC;IACjH,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,OAAO;QACL,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAO,EAAE,EAAE;QACzC,QAAQ,EAAE;YACR,YAAY,EAAE,GAAG;YACjB,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;YACrE,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE;YACjD,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACnH,QAAQ,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,EAAE,kBAAkB;gBAC1H,SAAS,EAAE,cAAc,KAAK,IAAI,EAAE,KAAK,EAAE,QAAQ;gBACnD,MAAM,EAAE,wMAAwM,EAAE;YACpN,gBAAgB,EAAE,eAAe;YACjC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE;YACpE,EAAE;SACH;KACF,CAAC;AACJ,CAAC"}