DZRobo commited on
Commit
ccadebd
Β·
unverified Β·
1 Parent(s): 6cce3ef

Add MagicLatentAdapter node (experimental support FLUX/Qwen models) (#10)

Browse files

Introduces MagicLatentAdapter (experimental support FLUX/Qwen models) for generating or adapting latents to match model expectations. Adds mask alignment utilities to CADE nodes for robust mask blending, improves Gaussian blur to support 5D tensors, and updates preset defaults for improved results. Documentation and workflow updated to reflect new node and features.

README.md CHANGED
@@ -164,14 +164,19 @@ MagicNodes/
164
  β”‚ β”‚ β”œβ”€ mg_controlfusion_easy.py
165
  β”‚ β”‚ └─ mg_supersimple_easy.py
166
  β”‚ β”‚ └─ preset_loader.py
167
- β”‚ └─ hard/
168
- β”‚ β”œβ”€ mg_cade25.py
169
- β”‚ β”œβ”€ mg_controlfusion.py
170
- β”‚ β”œβ”€ mg_tde2.py
171
- β”‚ β”œβ”€ mg_upscale_module.py
172
- β”‚ β”œβ”€ mg_ids.py
173
- β”‚ └─ mg_zesmart_sampler_v1_1.py
174
- β”‚
 
 
 
 
 
175
  β”œβ”€ pressets/
176
  β”‚ β”œβ”€ mg_cade25.cfg
177
  β”‚ └─ mg_controlfusion.cfg
@@ -240,7 +245,14 @@ Depth models (Depth Anything v2)
240
  - Keep dimensions multiples of 8; recommended starting sizes around ~672x944 (other aspect ratios work). With SuperSimple’s default scale, step 4 lands near ~3688x5192.
241
  - `mix_image=True` encodes the provided image via VAE and adds noise: a soft way to keep global structure while allowing refinement downstream.
242
  - For run-to-run comparability, hold your sampler seed fixed (in SuperSimple/CADE). SeedLatent itself does not expose a seed; variation is primarily controlled by the sampler seed.
243
- - Batch friendly: `batch_size>1` produces independent latents of the chosen size.
 
 
 
 
 
 
 
244
 
245
  ## Dependencies (Why These Packages)
246
  - transformers β€” used by CADE for CLIPSeg (CIDAS/clipseg-rd64-refined) to build text‑driven masks (e.g., face/hands). If missing, CLIPSeg is disabled gracefully.
 
164
  β”‚ β”‚ β”œβ”€ mg_controlfusion_easy.py
165
  β”‚ β”‚ └─ mg_supersimple_easy.py
166
  β”‚ β”‚ └─ preset_loader.py
167
+ β”‚ β”œβ”€ hard/
168
+ β”‚ β”‚ β”œβ”€ mg_cade25.py
169
+ β”‚ β”‚ β”œβ”€ mg_controlfusion.py
170
+ β”‚ β”‚ β”œβ”€ mg_tde2.py
171
+ β”‚ β”‚ β”œβ”€ mg_upscale_module.py
172
+ β”‚ β”‚ β”œβ”€ mg_ids.py
173
+ β”‚ β”‚ └─ mg_zesmart_sampler_v1_1.py
174
+ β”‚ β”‚
175
+ β”‚ β”œβ”€ mg_combinode.py
176
+ β”‚ β”œβ”€ mg_latent_adapter.py
177
+ β”‚ β”œβ”€ mg_sagpu_attention.py
178
+ β”‚ └─ mg_seed_latent.py
179
+ β”‚
180
  β”œβ”€ pressets/
181
  β”‚ β”œβ”€ mg_cade25.cfg
182
  β”‚ └─ mg_controlfusion.cfg
 
245
  - Keep dimensions multiples of 8; recommended starting sizes around ~672x944 (other aspect ratios work). With SuperSimple’s default scale, step 4 lands near ~3688x5192.
246
  - `mix_image=True` encodes the provided image via VAE and adds noise: a soft way to keep global structure while allowing refinement downstream.
247
  - For run-to-run comparability, hold your sampler seed fixed (in SuperSimple/CADE). SeedLatent itself does not expose a seed; variation is primarily controlled by the sampler seed.
248
+ - Batch friendly: `batch_size>1` produces independent latents of the chosen size.
249
+
250
+ ### Magic Latent Adapter (mg_latent_adapter.py) !experimental!
251
+ - Purpose: small adapter node that generates or adapts a `LATENT` to match the target model’s latent format (channels and dimensions), including 5D layouts (`NCDHW`) when required. Two modes: `generate` (make a fresh latent aligned to VAE stride) and `adapt` (reshape/channel‑match an existing latent).
252
+ - How it works: relies on Comfy’s `fix_empty_latent_channels` and reads the model’s `latent_format` to adjust channel count; aligns spatial size to VAE stride; handles 4D (`NCHW`) and 5D (`NCDHW`).
253
+ - Experimental: added to ease early, experimental support for FLUX/Qwen‑like models by reducing shape/dimension friction. Still evolving; treat as opt‑in.
254
+ - Usage: place before CADE/your sampler. In `generate` mode you can also enable image mixing via VAE; in `adapt` mode feed any upstream `LATENT` and the current `MODEL`. A simple family switch (`auto / SD / SDXL / FLUX`) controls stride fallback when VAE isn’t provided.
255
+ - Notes: quality with FLUX/Qwen models also depends on using the proper text encoders/conditioning nodes for those families; this adapter only solves latent shapes, not conditioning mismatches.
256
 
257
  ## Dependencies (Why These Packages)
258
  - transformers β€” used by CADE for CLIPSeg (CIDAS/clipseg-rd64-refined) to build text‑driven masks (e.g., face/hands). If missing, CLIPSeg is disabled gracefully.
__init__.py CHANGED
@@ -25,6 +25,7 @@ from .mod.hard.mg_cade25 import ComfyAdaptiveDetailEnhancer25
25
  from .mod.hard.mg_ids import IntelligentDetailStabilizer
26
  from .mod.mg_seed_latent import MagicSeedLatent
27
  from .mod.mg_sagpu_attention import PatchSageAttention
 
28
  from .mod.hard.mg_controlfusion import MG_ControlFusion
29
  from .mod.hard.mg_zesmart_sampler_v1_1 import MG_ZeSmartSampler
30
  from .mod.easy.mg_cade25_easy import CADEEasyUI as ComfyAdaptiveDetailEnhancer25_Easy
@@ -59,6 +60,7 @@ NODE_CLASS_MAPPINGS = {
59
  "MagicNodesCombiNode": MagicNodesCombiNode,
60
  "MagicSeedLatent": MagicSeedLatent,
61
  "PatchSageAttention": PatchSageAttention,
 
62
  "MagicUpscaleModule": MagicUpscaleModule,
63
  "ComfyAdaptiveDetailEnhancer25": ComfyAdaptiveDetailEnhancer25,
64
  "IntelligentDetailStabilizer": IntelligentDetailStabilizer,
@@ -73,8 +75,8 @@ NODE_CLASS_MAPPINGS = {
73
  NODE_DISPLAY_NAME_MAPPINGS = {
74
  "MagicNodesCombiNode": "MG_CombiNode",
75
  "MagicSeedLatent": "MG_SeedLatent",
76
- # TDE removed from this build
77
  "PatchSageAttention": "MG_AccelAttention",
 
78
  "ComfyAdaptiveDetailEnhancer25": "MG_CADE 2.5",
79
  "MG_ControlFusion": "MG_ControlFusion",
80
  "MG_ZeSmartSampler": "MG_ZeSmartSampler",
 
25
  from .mod.hard.mg_ids import IntelligentDetailStabilizer
26
  from .mod.mg_seed_latent import MagicSeedLatent
27
  from .mod.mg_sagpu_attention import PatchSageAttention
28
+ from .mod.mg_latent_adapter import MagicLatentAdapter
29
  from .mod.hard.mg_controlfusion import MG_ControlFusion
30
  from .mod.hard.mg_zesmart_sampler_v1_1 import MG_ZeSmartSampler
31
  from .mod.easy.mg_cade25_easy import CADEEasyUI as ComfyAdaptiveDetailEnhancer25_Easy
 
60
  "MagicNodesCombiNode": MagicNodesCombiNode,
61
  "MagicSeedLatent": MagicSeedLatent,
62
  "PatchSageAttention": PatchSageAttention,
63
+ "MagicLatentAdapter": MagicLatentAdapter, # experimental
64
  "MagicUpscaleModule": MagicUpscaleModule,
65
  "ComfyAdaptiveDetailEnhancer25": ComfyAdaptiveDetailEnhancer25,
66
  "IntelligentDetailStabilizer": IntelligentDetailStabilizer,
 
75
  NODE_DISPLAY_NAME_MAPPINGS = {
76
  "MagicNodesCombiNode": "MG_CombiNode",
77
  "MagicSeedLatent": "MG_SeedLatent",
 
78
  "PatchSageAttention": "MG_AccelAttention",
79
+ "MagicLatentAdapter": "MG_LatentAdapter", # experimental
80
  "ComfyAdaptiveDetailEnhancer25": "MG_CADE 2.5",
81
  "MG_ControlFusion": "MG_ControlFusion",
82
  "MG_ZeSmartSampler": "MG_ZeSmartSampler",
mod/easy/mg_cade25_easy.py CHANGED
@@ -236,6 +236,12 @@ def _clipseg_build_mask(image_bhwc: torch.Tensor,
236
  # Prepare preview image (CPU PIL)
237
  target = int(max(16, min(1024, preview)))
238
  img = image_bhwc.detach().to('cpu')
 
 
 
 
 
 
239
  B, H, W, C = img.shape
240
  x = img[0].movedim(-1, 0).unsqueeze(0) # 1,C,H,W
241
  x = F.interpolate(x, size=(target, target), mode='bilinear', align_corners=False)
@@ -1157,17 +1163,31 @@ def _soft_symmetry_blend(image_bhwc: torch.Tensor,
1157
 
1158
 
1159
  def _gaussian_blur_nchw(x: torch.Tensor, sigma: float = 1.0, radius: int = 1) -> torch.Tensor:
1160
- """Lightweight depthwise Gaussian blur for NCHW tensors.
1161
  Uses reflect padding and a normalized kernel built by _gaussian_kernel.
1162
  """
1163
  if radius <= 0:
1164
  return x
1165
  ksz = radius * 2 + 1
1166
  kernel = _gaussian_kernel(ksz, sigma, device=x.device).to(dtype=x.dtype)
1167
- kernel = kernel.repeat(x.shape[1], 1, 1).unsqueeze(1) # [C,1,K,K]
1168
- x_pad = F.pad(x, (radius, radius, radius, radius), mode='reflect')
1169
- y = F.conv2d(x_pad, kernel, padding=0, groups=x.shape[1])
1170
- return y
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1171
 
1172
 
1173
  def _letterbox_nchw(x: torch.Tensor, target: int, pad_val: float = 114.0 / 255.0) -> torch.Tensor:
@@ -1452,6 +1472,8 @@ def _wrap_model_with_guidance(model, guidance_mode: str, rescale_multiplier: flo
1452
 
1453
  m.set_model_sampler_cfg_function(cfg_func, disable_cfg1_optimization=True)
1454
 
 
 
1455
  # Optional directional post-mix (Muse Blend), global, no ONNX
1456
  if bool(mahiro_plus_enable):
1457
  s_clamp = float(max(0.0, min(1.0, mahiro_plus_strength)))
@@ -1736,6 +1758,38 @@ def _build_cf_edge_mask_from_step(image_bhwc: torch.Tensor, preset_step: str) ->
1736
  return ed.unsqueeze(0).unsqueeze(-1)
1737
  except Exception:
1738
  return None
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1739
  def _mask_dilate(mask_bhw1: torch.Tensor, k: int = 3) -> torch.Tensor:
1740
  if k <= 1:
1741
  return mask_bhw1
@@ -2124,9 +2178,13 @@ class ComfyAdaptiveDetailEnhancer25:
2124
  try:
2125
  cmask = _clipseg_build_mask(image, clipseg_text, int(clipseg_preview), float(clipseg_threshold), float(clipseg_blur), int(clipseg_dilate), float(clipseg_gain), None, None, float(clipseg_ref_threshold))
2126
  if cmask is not None:
 
 
 
2127
  if pre_mask is None:
2128
  pre_mask = cmask
2129
  else:
 
2130
  if clipseg_blend == "replace":
2131
  pre_mask = cmask
2132
  elif clipseg_blend == "intersect":
@@ -2147,6 +2205,8 @@ class ComfyAdaptiveDetailEnhancer25:
2147
  except Exception:
2148
  emask = None
2149
  if emask is not None:
 
 
2150
  pre_mask = emask if pre_mask is None else (1.0 - (1.0 - pre_mask) * (1.0 - emask)).clamp(0, 1)
2151
  if pre_mask is not None:
2152
  onnx_mask_last = pre_mask
@@ -2271,6 +2331,7 @@ class ComfyAdaptiveDetailEnhancer25:
2271
  if onnx_mask_last is None:
2272
  onnx_mask_last = em2
2273
  else:
 
2274
  onnx_mask_last = (1.0 - (1.0 - onnx_mask_last) * (1.0 - em2)).clamp(0, 1)
2275
  om = onnx_mask_last.movedim(-1, 1)
2276
  area = float(om.mean().item())
@@ -2293,8 +2354,10 @@ class ComfyAdaptiveDetailEnhancer25:
2293
  if clipseg_blend == "replace":
2294
  fused = cmask
2295
  elif clipseg_blend == "intersect":
 
2296
  fused = (onnx_mask_last * cmask).clamp(0, 1)
2297
  else:
 
2298
  fused = (1.0 - (1.0 - onnx_mask_last) * (1.0 - cmask)).clamp(0, 1)
2299
  onnx_mask_last = fused
2300
  om = fused.movedim(-1, 1)
@@ -2470,7 +2533,16 @@ class ComfyAdaptiveDetailEnhancer25:
2470
  model_management.throw_exception_if_processing_interrupted()
2471
 
2472
  if bool(latent_compare):
2473
- latent_diff = current_latent["samples"] - prev_samples
 
 
 
 
 
 
 
 
 
2474
  rms = torch.sqrt(torch.mean(latent_diff * latent_diff))
2475
  drift = float(rms.item())
2476
  if drift > float(threshold):
 
236
  # Prepare preview image (CPU PIL)
237
  target = int(max(16, min(1024, preview)))
238
  img = image_bhwc.detach().to('cpu')
239
+ if img.ndim == 5:
240
+ # squeeze depth if present
241
+ if img.shape[1] == 1:
242
+ img = img[:, 0]
243
+ else:
244
+ img = img[:, 0]
245
  B, H, W, C = img.shape
246
  x = img[0].movedim(-1, 0).unsqueeze(0) # 1,C,H,W
247
  x = F.interpolate(x, size=(target, target), mode='bilinear', align_corners=False)
 
1163
 
1164
 
1165
  def _gaussian_blur_nchw(x: torch.Tensor, sigma: float = 1.0, radius: int = 1) -> torch.Tensor:
1166
+ """Lightweight depthwise Gaussian blur for NCHW or NCDHW tensors.
1167
  Uses reflect padding and a normalized kernel built by _gaussian_kernel.
1168
  """
1169
  if radius <= 0:
1170
  return x
1171
  ksz = radius * 2 + 1
1172
  kernel = _gaussian_kernel(ksz, sigma, device=x.device).to(dtype=x.dtype)
1173
+ # Support 5D by folding depth into batch
1174
+ if x.ndim == 5:
1175
+ b, c, d, h, w = x.shape
1176
+ x2 = x.permute(0, 2, 1, 3, 4).reshape(b * d, c, h, w)
1177
+ k = kernel.repeat(c, 1, 1).unsqueeze(1) # [C,1,K,K]
1178
+ x_pad = F.pad(x2, (radius, radius, radius, radius), mode='reflect')
1179
+ y2 = F.conv2d(x_pad, k, padding=0, groups=c)
1180
+ y = y2.reshape(b, d, c, h, w).permute(0, 2, 1, 3, 4)
1181
+ return y
1182
+ # 4D path
1183
+ if x.ndim == 4:
1184
+ b, c, h, w = x.shape
1185
+ k = kernel.repeat(c, 1, 1).unsqueeze(1) # [C,1,K,K]
1186
+ x_pad = F.pad(x, (radius, radius, radius, radius), mode='reflect')
1187
+ y = F.conv2d(x_pad, k, padding=0, groups=c)
1188
+ return y
1189
+ # Fallback: return input if unexpected dims
1190
+ return x
1191
 
1192
 
1193
  def _letterbox_nchw(x: torch.Tensor, target: int, pad_val: float = 114.0 / 255.0) -> torch.Tensor:
 
1472
 
1473
  m.set_model_sampler_cfg_function(cfg_func, disable_cfg1_optimization=True)
1474
 
1475
+ # Note: ControlNet class-label injection wrapper removed to keep CADE neutral.
1476
+
1477
  # Optional directional post-mix (Muse Blend), global, no ONNX
1478
  if bool(mahiro_plus_enable):
1479
  s_clamp = float(max(0.0, min(1.0, mahiro_plus_strength)))
 
1758
  return ed.unsqueeze(0).unsqueeze(-1)
1759
  except Exception:
1760
  return None
1761
+
1762
+ def _mask_to_like(mask_bhw1: torch.Tensor, like_bhwc: torch.Tensor) -> torch.Tensor:
1763
+ try:
1764
+ if mask_bhw1 is None or like_bhwc is None:
1765
+ return mask_bhw1
1766
+ if mask_bhw1.ndim != 4 or like_bhwc.ndim != 4:
1767
+ return mask_bhw1
1768
+ _, Ht, Wt, _ = like_bhwc.shape
1769
+ _, Hm, Wm, C = mask_bhw1.shape
1770
+ if (Hm, Wm) == (Ht, Wt):
1771
+ return mask_bhw1
1772
+ m = mask_bhw1.movedim(-1, 1)
1773
+ m = F.interpolate(m, size=(Ht, Wt), mode='bilinear', align_corners=False)
1774
+ return m.movedim(1, -1).clamp(0, 1)
1775
+ except Exception:
1776
+ return mask_bhw1
1777
+
1778
+ def _align_mask_pair(a_bhw1: torch.Tensor, b_bhw1: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor]:
1779
+ try:
1780
+ if a_bhw1 is None or b_bhw1 is None:
1781
+ return a_bhw1, b_bhw1
1782
+ if a_bhw1.ndim != 4 or b_bhw1.ndim != 4:
1783
+ return a_bhw1, b_bhw1
1784
+ _, Ha, Wa, Ca = a_bhw1.shape
1785
+ _, Hb, Wb, Cb = b_bhw1.shape
1786
+ if (Ha, Wa) == (Hb, Wb):
1787
+ return a_bhw1, b_bhw1
1788
+ m = b_bhw1.movedim(-1, 1)
1789
+ m = F.interpolate(m, size=(Ha, Wa), mode='bilinear', align_corners=False)
1790
+ return a_bhw1, m.movedim(1, -1).clamp(0, 1)
1791
+ except Exception:
1792
+ return a_bhw1, b_bhw1
1793
  def _mask_dilate(mask_bhw1: torch.Tensor, k: int = 3) -> torch.Tensor:
1794
  if k <= 1:
1795
  return mask_bhw1
 
2178
  try:
2179
  cmask = _clipseg_build_mask(image, clipseg_text, int(clipseg_preview), float(clipseg_threshold), float(clipseg_blur), int(clipseg_dilate), float(clipseg_gain), None, None, float(clipseg_ref_threshold))
2180
  if cmask is not None:
2181
+ if pre_mask is not None:
2182
+ pre_mask = _mask_to_like(pre_mask, image)
2183
+ cmask = _mask_to_like(cmask, image)
2184
  if pre_mask is None:
2185
  pre_mask = cmask
2186
  else:
2187
+ pre_mask, cmask = _align_mask_pair(pre_mask, cmask)
2188
  if clipseg_blend == "replace":
2189
  pre_mask = cmask
2190
  elif clipseg_blend == "intersect":
 
2205
  except Exception:
2206
  emask = None
2207
  if emask is not None:
2208
+ if pre_mask is not None:
2209
+ pre_mask, emask = _align_mask_pair(pre_mask, emask)
2210
  pre_mask = emask if pre_mask is None else (1.0 - (1.0 - pre_mask) * (1.0 - emask)).clamp(0, 1)
2211
  if pre_mask is not None:
2212
  onnx_mask_last = pre_mask
 
2331
  if onnx_mask_last is None:
2332
  onnx_mask_last = em2
2333
  else:
2334
+ onnx_mask_last, em2 = _align_mask_pair(onnx_mask_last, em2)
2335
  onnx_mask_last = (1.0 - (1.0 - onnx_mask_last) * (1.0 - em2)).clamp(0, 1)
2336
  om = onnx_mask_last.movedim(-1, 1)
2337
  area = float(om.mean().item())
 
2354
  if clipseg_blend == "replace":
2355
  fused = cmask
2356
  elif clipseg_blend == "intersect":
2357
+ onnx_mask_last, cmask = _align_mask_pair(onnx_mask_last, cmask)
2358
  fused = (onnx_mask_last * cmask).clamp(0, 1)
2359
  else:
2360
+ onnx_mask_last, cmask = _align_mask_pair(onnx_mask_last, cmask)
2361
  fused = (1.0 - (1.0 - onnx_mask_last) * (1.0 - cmask)).clamp(0, 1)
2362
  onnx_mask_last = fused
2363
  om = fused.movedim(-1, 1)
 
2533
  model_management.throw_exception_if_processing_interrupted()
2534
 
2535
  if bool(latent_compare):
2536
+ _cur = current_latent["samples"]
2537
+ _prev = prev_samples
2538
+ try:
2539
+ if _prev.device != _cur.device:
2540
+ _prev = _prev.to(_cur.device)
2541
+ if _prev.dtype != _cur.dtype:
2542
+ _prev = _prev.to(dtype=_cur.dtype)
2543
+ except Exception:
2544
+ pass
2545
+ latent_diff = _cur - _prev
2546
  rms = torch.sqrt(torch.mean(latent_diff * latent_diff))
2547
  drift = float(rms.item())
2548
  if drift > float(threshold):
mod/hard/mg_cade25.py CHANGED
@@ -97,6 +97,12 @@ def _clipseg_build_mask(image_bhwc: torch.Tensor,
97
  # Prepare preview image (CPU PIL)
98
  target = int(max(16, min(1024, preview)))
99
  img = image_bhwc.detach().to('cpu')
 
 
 
 
 
 
100
  B, H, W, C = img.shape
101
  x = img[0].movedim(-1, 0).unsqueeze(0) # 1,C,H,W
102
  x = F.interpolate(x, size=(target, target), mode='bilinear', align_corners=False)
@@ -172,6 +178,40 @@ def _np_to_mask_tensor(np_map: np.ndarray, out_h: int, out_w: int, device, dtype
172
  return t.clamp(0, 1)
173
 
174
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
  # --- Firefly/Hot-pixel remover (image space, BHWC in 0..1) ---
176
  def _median_pool3x3_bhwc(img_bhwc: torch.Tensor) -> torch.Tensor:
177
  B, H, W, C = img_bhwc.shape
@@ -773,17 +813,31 @@ def _clip_cosine_distance(a: torch.Tensor, b: torch.Tensor) -> float:
773
 
774
 
775
  def _gaussian_blur_nchw(x: torch.Tensor, sigma: float = 1.0, radius: int = 1) -> torch.Tensor:
776
- """Lightweight depthwise Gaussian blur for NCHW tensors.
777
  Uses reflect padding and a normalized kernel built by _gaussian_kernel.
778
  """
779
  if radius <= 0:
780
  return x
781
  ksz = radius * 2 + 1
782
  kernel = _gaussian_kernel(ksz, sigma, device=x.device).to(dtype=x.dtype)
783
- kernel = kernel.repeat(x.shape[1], 1, 1).unsqueeze(1) # [C,1,K,K]
784
- x_pad = F.pad(x, (radius, radius, radius, radius), mode='reflect')
785
- y = F.conv2d(x_pad, kernel, padding=0, groups=x.shape[1])
786
- return y
 
 
 
 
 
 
 
 
 
 
 
 
 
 
787
 
788
 
789
  def _letterbox_nchw(x: torch.Tensor, target: int, pad_val: float = 114.0 / 255.0) -> torch.Tensor:
@@ -1074,6 +1128,8 @@ def _wrap_model_with_guidance(model, guidance_mode: str, rescale_multiplier: flo
1074
 
1075
  m.set_model_sampler_cfg_function(cfg_func, disable_cfg1_optimization=True)
1076
 
 
 
1077
  # Optional directional post-mix inspired by Mahiro (global, no ONNX)
1078
  if bool(mahiro_plus_enable):
1079
  s_clamp = float(max(0.0, min(1.0, mahiro_plus_strength)))
@@ -1511,6 +1567,7 @@ class ComfyAdaptiveDetailEnhancer25:
1511
  if pre_mask is None:
1512
  pre_mask = cmask
1513
  else:
 
1514
  if clipseg_blend == "replace":
1515
  pre_mask = cmask
1516
  elif clipseg_blend == "intersect":
@@ -1586,6 +1643,7 @@ class ComfyAdaptiveDetailEnhancer25:
1586
  if mask_last is None:
1587
  fused = cmask
1588
  else:
 
1589
  if clipseg_blend == "replace":
1590
  fused = cmask
1591
  elif clipseg_blend == "intersect":
@@ -1668,7 +1726,16 @@ class ComfyAdaptiveDetailEnhancer25:
1668
  model_management.throw_exception_if_processing_interrupted()
1669
 
1670
  if bool(latent_compare):
1671
- latent_diff = current_latent["samples"] - prev_samples
 
 
 
 
 
 
 
 
 
1672
  rms = torch.sqrt(torch.mean(latent_diff * latent_diff))
1673
  drift = float(rms.item())
1674
  if drift > float(threshold):
 
97
  # Prepare preview image (CPU PIL)
98
  target = int(max(16, min(1024, preview)))
99
  img = image_bhwc.detach().to('cpu')
100
+ if img.ndim == 5:
101
+ # squeeze depth if present
102
+ if img.shape[1] == 1:
103
+ img = img[:, 0]
104
+ else:
105
+ img = img[:, 0]
106
  B, H, W, C = img.shape
107
  x = img[0].movedim(-1, 0).unsqueeze(0) # 1,C,H,W
108
  x = F.interpolate(x, size=(target, target), mode='bilinear', align_corners=False)
 
178
  return t.clamp(0, 1)
179
 
180
 
181
+ def _mask_to_like(mask_bhw1: torch.Tensor, like_bhwc: torch.Tensor) -> torch.Tensor:
182
+ try:
183
+ if mask_bhw1 is None or like_bhwc is None:
184
+ return mask_bhw1
185
+ if mask_bhw1.ndim != 4 or like_bhwc.ndim != 4:
186
+ return mask_bhw1
187
+ _, Ht, Wt, _ = like_bhwc.shape
188
+ _, Hm, Wm, _ = mask_bhw1.shape
189
+ if (Hm, Wm) == (Ht, Wt):
190
+ return mask_bhw1
191
+ m = mask_bhw1.movedim(-1, 1)
192
+ m = F.interpolate(m, size=(Ht, Wt), mode='bilinear', align_corners=False)
193
+ return m.movedim(1, -1).clamp(0, 1)
194
+ except Exception:
195
+ return mask_bhw1
196
+
197
+
198
+ def _align_mask_pair(a_bhw1: torch.Tensor, b_bhw1: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor]:
199
+ try:
200
+ if a_bhw1 is None or b_bhw1 is None:
201
+ return a_bhw1, b_bhw1
202
+ if a_bhw1.ndim != 4 or b_bhw1.ndim != 4:
203
+ return a_bhw1, b_bhw1
204
+ _, Ha, Wa, _ = a_bhw1.shape
205
+ _, Hb, Wb, _ = b_bhw1.shape
206
+ if (Ha, Wa) == (Hb, Wb):
207
+ return a_bhw1, b_bhw1
208
+ m = b_bhw1.movedim(-1, 1)
209
+ m = F.interpolate(m, size=(Ha, Wa), mode='bilinear', align_corners=False)
210
+ return a_bhw1, m.movedim(1, -1).clamp(0, 1)
211
+ except Exception:
212
+ return a_bhw1, b_bhw1
213
+
214
+
215
  # --- Firefly/Hot-pixel remover (image space, BHWC in 0..1) ---
216
  def _median_pool3x3_bhwc(img_bhwc: torch.Tensor) -> torch.Tensor:
217
  B, H, W, C = img_bhwc.shape
 
813
 
814
 
815
  def _gaussian_blur_nchw(x: torch.Tensor, sigma: float = 1.0, radius: int = 1) -> torch.Tensor:
816
+ """Lightweight depthwise Gaussian blur for NCHW or NCDHW tensors.
817
  Uses reflect padding and a normalized kernel built by _gaussian_kernel.
818
  """
819
  if radius <= 0:
820
  return x
821
  ksz = radius * 2 + 1
822
  kernel = _gaussian_kernel(ksz, sigma, device=x.device).to(dtype=x.dtype)
823
+ # Support 5D by folding depth into batch
824
+ if x.ndim == 5:
825
+ b, c, d, h, w = x.shape
826
+ x2 = x.permute(0, 2, 1, 3, 4).reshape(b * d, c, h, w)
827
+ k = kernel.repeat(c, 1, 1).unsqueeze(1) # [C,1,K,K]
828
+ x_pad = F.pad(x2, (radius, radius, radius, radius), mode='reflect')
829
+ y2 = F.conv2d(x_pad, k, padding=0, groups=c)
830
+ y = y2.reshape(b, d, c, h, w).permute(0, 2, 1, 3, 4)
831
+ return y
832
+ # 4D path
833
+ if x.ndim == 4:
834
+ b, c, h, w = x.shape
835
+ k = kernel.repeat(c, 1, 1).unsqueeze(1) # [C,1,K,K]
836
+ x_pad = F.pad(x, (radius, radius, radius, radius), mode='reflect')
837
+ y = F.conv2d(x_pad, k, padding=0, groups=c)
838
+ return y
839
+ # Fallback: return input if unexpected dims
840
+ return x
841
 
842
 
843
  def _letterbox_nchw(x: torch.Tensor, target: int, pad_val: float = 114.0 / 255.0) -> torch.Tensor:
 
1128
 
1129
  m.set_model_sampler_cfg_function(cfg_func, disable_cfg1_optimization=True)
1130
 
1131
+ # Note: ControlNet class-label injection wrapper removed to keep CADE neutral.
1132
+
1133
  # Optional directional post-mix inspired by Mahiro (global, no ONNX)
1134
  if bool(mahiro_plus_enable):
1135
  s_clamp = float(max(0.0, min(1.0, mahiro_plus_strength)))
 
1567
  if pre_mask is None:
1568
  pre_mask = cmask
1569
  else:
1570
+ pre_mask, cmask = _align_mask_pair(pre_mask, cmask)
1571
  if clipseg_blend == "replace":
1572
  pre_mask = cmask
1573
  elif clipseg_blend == "intersect":
 
1643
  if mask_last is None:
1644
  fused = cmask
1645
  else:
1646
+ mask_last, cmask = _align_mask_pair(mask_last, cmask)
1647
  if clipseg_blend == "replace":
1648
  fused = cmask
1649
  elif clipseg_blend == "intersect":
 
1726
  model_management.throw_exception_if_processing_interrupted()
1727
 
1728
  if bool(latent_compare):
1729
+ _cur = current_latent["samples"]
1730
+ _prev = prev_samples
1731
+ try:
1732
+ if _prev.device != _cur.device:
1733
+ _prev = _prev.to(_cur.device)
1734
+ if _prev.dtype != _cur.dtype:
1735
+ _prev = _prev.to(dtype=_cur.dtype)
1736
+ except Exception:
1737
+ pass
1738
+ latent_diff = _cur - _prev
1739
  rms = torch.sqrt(torch.mean(latent_diff * latent_diff))
1740
  drift = float(rms.item())
1741
  if drift > float(threshold):
mod/mg_latent_adapter.py ADDED
@@ -0,0 +1,234 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ MagicLatentAdapter: two-in-one latent adapter for ComfyUI.
3
+
4
+ - Mode "generate": creates a latent of appropriate grid size for the target model
5
+ (optionally mixing an input image via VAE), then adapts channels.
6
+ - Mode "adapt": takes an incoming LATENT and adapts channel count to match the model.
7
+
8
+ Family switch: "auto / SD / SDXL / FLUX" influences only stride fallback when VAE
9
+ is not provided. In AUTO we query VAE stride if possible and fall back to 8.
10
+
11
+ No file re-encodings are performed; all code is ASCII/English as requested.
12
+ """
13
+
14
+ from __future__ import annotations
15
+
16
+ import torch
17
+ import torch.nn.functional as F
18
+
19
+ import comfy.sample as _sample
20
+
21
+
22
+ class MagicLatentAdapter:
23
+ """Generate or adapt a LATENT to fit the target model's expectations."""
24
+
25
+ @classmethod
26
+ def INPUT_TYPES(cls):
27
+ return {
28
+ "required": {
29
+ "model": ("MODEL", {}),
30
+ "mode": (["generate", "adapt"], {"default": "generate"}),
31
+ "family": (["auto", "SD", "SDXL", "FLUX"], {"default": "auto"}),
32
+
33
+ # Generation params (ignored in adapt mode)
34
+ "width": ("INT", {"default": 512, "min": 8, "max": 8192, "step": 8}),
35
+ "height": ("INT", {"default": 512, "min": 8, "max": 8192, "step": 8}),
36
+ "batch_size": ("INT", {"default": 1, "min": 1, "max": 64}),
37
+ "sigma": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 10.0, "step": 0.1}),
38
+ "bias": ("FLOAT", {"default": 0.0, "min": -10.0, "max": 10.0, "step": 0.1}),
39
+ "mix_image": ("BOOLEAN", {"default": False}),
40
+ },
41
+ "optional": {
42
+ # For adapt mode
43
+ "latent": ("LATENT", {}),
44
+ # For image mixing in generate mode
45
+ "vae": ("VAE", {}),
46
+ "image": ("IMAGE", {}),
47
+ },
48
+ }
49
+
50
+ RETURN_TYPES = ("LATENT",)
51
+ RETURN_NAMES = ("LATENT",)
52
+ FUNCTION = "run"
53
+ CATEGORY = "MagicNodes"
54
+
55
+ @staticmethod
56
+ def _detect_stride(vae, family: str) -> int:
57
+ # Prefer VAE stride if available
58
+ if vae is not None:
59
+ try:
60
+ s = int(vae.spacial_compression_decode())
61
+ if s > 0:
62
+ return s
63
+ except Exception:
64
+ pass
65
+ # Fallback per-family (conservative)
66
+ fam = (family or "auto").lower()
67
+ if fam in ("sd", "sdxl", "flux"):
68
+ return 8
69
+ return 8 # sensible default
70
+
71
+ @staticmethod
72
+ def _latent_format(model) -> tuple[int, int]:
73
+ """Return (channels, dimensions) from model.latent_format.
74
+ dimensions: 2 -> NCHW, 3 -> NCDHW.
75
+ """
76
+ try:
77
+ lf = model.get_model_object("latent_format")
78
+ ch = int(getattr(lf, "latent_channels", 4))
79
+ dims = int(getattr(lf, "latent_dimensions", 2))
80
+ if dims not in (2, 3):
81
+ dims = 2
82
+ return ch, dims
83
+ except Exception:
84
+ return 4, 2
85
+
86
+ @staticmethod
87
+ def _adapt_channels(model, z: torch.Tensor, preserve_zero: bool = False) -> torch.Tensor:
88
+ """Adapts channel count and dims to the model's latent_format.
89
+ If preserve_zero and the latent is all zeros, pad with zeros instead of noise.
90
+ """
91
+ target_c, target_dims = MagicLatentAdapter._latent_format(model)
92
+
93
+ # First, let Comfy add depth dim for empty latents when needed
94
+ try:
95
+ z = _sample.fix_empty_latent_channels(model, z)
96
+ except Exception:
97
+ pass
98
+
99
+ # Align dimensions
100
+ if target_dims == 3 and z.ndim == 4:
101
+ z = z.unsqueeze(2) # N C 1 H W
102
+ elif target_dims == 2 and z.ndim == 5:
103
+ if z.shape[2] == 1:
104
+ z = z.squeeze(2)
105
+ else:
106
+ z = z[:, :, :1].squeeze(2)
107
+
108
+ # Align channels
109
+ if z.ndim == 4:
110
+ B, C, H, W = z.shape
111
+ if C == target_c:
112
+ return z
113
+ if C > target_c:
114
+ return z[:, :target_c]
115
+ dev, dt = z.device, z.dtype
116
+ if preserve_zero and torch.count_nonzero(z) == 0:
117
+ pad = torch.zeros(B, target_c - C, H, W, device=dev, dtype=dt)
118
+ else:
119
+ pad = torch.randn(B, target_c - C, H, W, device=dev, dtype=dt)
120
+ return torch.cat([z, pad], dim=1)
121
+ elif z.ndim == 5:
122
+ B, C, D, H, W = z.shape
123
+ if C == target_c:
124
+ return z
125
+ if C > target_c:
126
+ return z[:, :target_c]
127
+ dev, dt = z.device, z.dtype
128
+ if preserve_zero and torch.count_nonzero(z) == 0:
129
+ pad = torch.zeros(B, target_c - C, D, H, W, device=dev, dtype=dt)
130
+ else:
131
+ pad = torch.randn(B, target_c - C, D, H, W, device=dev, dtype=dt)
132
+ return torch.cat([z, pad], dim=1)
133
+ else:
134
+ return z
135
+
136
+ @staticmethod
137
+ def _mix_image_into_latent(vae, image_bhwc: torch.Tensor, z: torch.Tensor) -> torch.Tensor:
138
+ if vae is None or image_bhwc is None:
139
+ return z
140
+ try:
141
+ # Align image spatial to VAE grid by padding (mirror) if needed
142
+ try:
143
+ stride = int(vae.spacial_compression_decode())
144
+ except Exception:
145
+ stride = 8
146
+ h, w = image_bhwc.shape[1:3]
147
+ def _align_up(x, s):
148
+ return int(((x + s - 1) // s) * s)
149
+ Ht, Wt = _align_up(h, stride), _align_up(w, stride)
150
+ x = image_bhwc
151
+ if (Ht != h) or (Wt != w):
152
+ pad_h = Ht - h
153
+ pad_w = Wt - w
154
+ x_nchw = x.movedim(-1, 1)
155
+ x_nchw = F.pad(x_nchw, (0, pad_w, 0, pad_h), mode='replicate')
156
+ x = x_nchw.movedim(1, -1)
157
+ enc = vae.encode(x[:, :, :, :3])
158
+ # If batch mismatches, use first encoding and tile
159
+ while enc.ndim < z.ndim:
160
+ enc = enc.unsqueeze(2) # add depth dim if needed
161
+ while enc.ndim > z.ndim:
162
+ # reduce extra depth dims
163
+ if enc.ndim == 5 and enc.shape[2] == 1:
164
+ enc = enc.squeeze(2)
165
+ else:
166
+ enc = enc[(slice(None), slice(None)) + (slice(0,1),) * (enc.ndim-2)]
167
+ if enc.ndim == 5:
168
+ enc = enc.squeeze(2)
169
+ if enc.shape[0] != z.shape[0]:
170
+ enc = enc[:1]
171
+ enc = enc.repeat(z.shape[0], *([1] * (enc.ndim - 1)))
172
+ # Resize spatial if needed (nearest)
173
+ if enc.ndim == 4:
174
+ if enc.shape[2:] != z.shape[2:]:
175
+ enc = F.interpolate(enc, size=z.shape[2:], mode="nearest")
176
+ elif enc.ndim == 5:
177
+ if enc.shape[2:] != z.shape[2:]:
178
+ enc = F.interpolate(enc, size=z.shape[2:], mode="nearest")
179
+ # Channel adapt for mixing safety
180
+ if enc.shape[1] != z.shape[1]:
181
+ cmin = min(enc.shape[1], z.shape[1])
182
+ enc = enc[:, :cmin]
183
+ z = z[:, :cmin]
184
+ return enc + z
185
+ except Exception:
186
+ return z
187
+
188
+ def run(
189
+ self,
190
+ model,
191
+ mode: str,
192
+ family: str,
193
+ width: int,
194
+ height: int,
195
+ batch_size: int,
196
+ sigma: float,
197
+ bias: float,
198
+ mix_image: bool = False,
199
+ latent=None,
200
+ vae=None,
201
+ image=None,
202
+ ):
203
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
204
+
205
+ if mode == "adapt":
206
+ if latent is None or "samples" not in latent:
207
+ # Produce an empty latent matching model's latent_format
208
+ stride = self._detect_stride(vae, family)
209
+ h8, w8 = max(1, height // stride), max(1, width // stride)
210
+ target_c, target_dims = self._latent_format(model)
211
+ if target_dims == 3:
212
+ z = torch.zeros(batch_size, target_c, 1, h8, w8, device=device)
213
+ else:
214
+ z = torch.zeros(batch_size, target_c, h8, w8, device=device)
215
+ else:
216
+ z = latent["samples"].to(device)
217
+ z = self._adapt_channels(model, z, preserve_zero=True)
218
+ return ({"samples": z},)
219
+
220
+ # generate
221
+ stride = self._detect_stride(vae, family)
222
+ h8, w8 = max(1, height // stride), max(1, width // stride)
223
+ target_c, target_dims = self._latent_format(model)
224
+ if target_dims == 3:
225
+ z = torch.randn(batch_size, target_c, 1, h8, w8, device=device) * float(sigma) + float(bias)
226
+ else:
227
+ z = torch.randn(batch_size, target_c, h8, w8, device=device) * float(sigma) + float(bias)
228
+ if mix_image and (vae is not None) and (image is not None):
229
+ # image is BHWC 0..1
230
+ img = image.to(device)
231
+ z = self._mix_image_into_latent(vae, img, z)
232
+ # Final channel adaptation
233
+ z = self._adapt_channels(model, z, preserve_zero=False)
234
+ return ({"samples": z},)
pressets/mg_cade25.cfg CHANGED
@@ -353,9 +353,9 @@ kv_min_tokens: 256
353
  seed: 0
354
  control_after_generate: randomize
355
  steps: 25
356
- cfg: 7.0
357
  #0.75
358
- denoise: 0.55
359
  sampler_name: ddim
360
  scheduler: MGHybrid
361
  iterations: 2
 
353
  seed: 0
354
  control_after_generate: randomize
355
  steps: 25
356
+ cfg: 6.0
357
  #0.75
358
+ denoise: 0.35
359
  sampler_name: ddim
360
  scheduler: MGHybrid
361
  iterations: 2
workflows/mg_Easy-Workflow.json CHANGED
@@ -1 +1 @@
1
- {"id":"ab14c37a-6cec-41cf-899a-b499539f5b8b","revision":0,"last_node_id":58,"last_link_id":152,"nodes":[{"id":33,"type":"PreviewImage","pos":[934.524998846107,827.6679009139978],"size":[454.34515960057956,487.52469509807827],"flags":{},"order":24,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":142}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":16,"type":"PreviewImage","pos":[1500.7861350427,834.011023145272],"size":[454.34515960057956,487.52469509807827],"flags":{},"order":25,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":22}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":7,"type":"SaveImage","pos":[2796.435012229308,813.9383242288463],"size":[645.60324992196,715.7559184038435],"flags":{},"order":35,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":48},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{},"widgets_values":["ComfyUI"]},{"id":26,"type":"PreviewImage","pos":[2402.088511427638,-384.4257289383634],"size":[204.34144162678967,246],"flags":{},"order":32,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":41}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":45,"type":"PreviewImage","pos":[2134.6382392169603,-384.3467464741332],"size":[204.34144162678967,246],"flags":{},"order":29,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":123}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":44,"type":"MG_ControlFusion_Easy","pos":[2230.0043967143683,-89.74152781984677],"size":[270,258],"flags":{},"order":26,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":110},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":119},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":120},{"localized_name":"control_net","name":"control_net","type":"CONTROL_NET","link":146},{"localized_name":"vae","name":"vae","type":"VAE","link":134},{"localized_name":"preset_step","name":"preset_step","type":"COMBO","widget":{"name":"preset_step"},"link":null},{"localized_name":"custom","name":"custom","type":"BOOLEAN","widget":{"name":"custom"},"link":null},{"localized_name":"enable_depth","name":"enable_depth","type":"BOOLEAN","widget":{"name":"enable_depth"},"link":null},{"localized_name":"enable_pyra","name":"enable_pyra","type":"BOOLEAN","widget":{"name":"enable_pyra"},"link":null},{"localized_name":"edge_alpha","name":"edge_alpha","type":"FLOAT","widget":{"name":"edge_alpha"},"link":null},{"localized_name":"blend_factor","name":"blend_factor","type":"FLOAT","widget":{"name":"blend_factor"},"link":null}],"outputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":[115,122]},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":[116,121]},{"localized_name":"Mask_Preview","name":"Mask_Preview","type":"IMAGE","links":[123]}],"properties":{"Node name for S&R":"MG_ControlFusion_Easy"},"widgets_values":["Step 3",false,true,true,1,0.02]},{"id":42,"type":"PreviewImage","pos":[2869.9561925844105,-392.07761053265784],"size":[204.34144162678967,246],"flags":{},"order":34,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":90}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":31,"type":"PreviewImage","pos":[3124.9260576007664,-392.6557805266826],"size":[204.34144162678967,246],"flags":{},"order":36,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":46}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":41,"type":"MG_ControlFusion_Easy","pos":[2963.5735553194004,-88.49280600871076],"size":[270,258],"flags":{},"order":31,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":85},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":122},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":121},{"localized_name":"control_net","name":"control_net","type":"CONTROL_NET","link":148},{"localized_name":"vae","name":"vae","type":"VAE","link":133},{"localized_name":"preset_step","name":"preset_step","type":"COMBO","widget":{"name":"preset_step"},"link":null},{"localized_name":"custom","name":"custom","type":"BOOLEAN","widget":{"name":"custom"},"link":null},{"localized_name":"enable_depth","name":"enable_depth","type":"BOOLEAN","widget":{"name":"enable_depth"},"link":null},{"localized_name":"enable_pyra","name":"enable_pyra","type":"BOOLEAN","widget":{"name":"enable_pyra"},"link":null},{"localized_name":"edge_alpha","name":"edge_alpha","type":"FLOAT","widget":{"name":"edge_alpha"},"link":null},{"localized_name":"blend_factor","name":"blend_factor","type":"FLOAT","widget":{"name":"blend_factor"},"link":null}],"outputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":[86]},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":[87]},{"localized_name":"Mask_Preview","name":"Mask_Preview","type":"IMAGE","links":[90]}],"properties":{"Node name for S&R":"MG_ControlFusion_Easy"},"widgets_values":["Step 4",false,true,true,1,0.02]},{"id":43,"type":"MG_ControlFusion_Easy","pos":[1591.642692427568,-97.88472358998305],"size":[270,258],"flags":{},"order":19,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":97},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":102},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":103},{"localized_name":"control_net","name":"control_net","type":"CONTROL_NET","link":144},{"localized_name":"vae","name":"vae","type":"VAE","link":135},{"localized_name":"preset_step","name":"preset_step","type":"COMBO","widget":{"name":"preset_step"},"link":null},{"localized_name":"custom","name":"custom","type":"BOOLEAN","widget":{"name":"custom"},"link":null},{"localized_name":"enable_depth","name":"enable_depth","type":"BOOLEAN","widget":{"name":"enable_depth"},"link":null},{"localized_name":"enable_pyra","name":"enable_pyra","type":"BOOLEAN","widget":{"name":"enable_pyra"},"link":null},{"localized_name":"edge_alpha","name":"edge_alpha","type":"FLOAT","widget":{"name":"edge_alpha"},"link":null},{"localized_name":"blend_factor","name":"blend_factor","type":"FLOAT","widget":{"name":"blend_factor"},"link":null}],"outputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":[107,119]},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":[106,120]},{"localized_name":"Mask_Preview","name":"Mask_Preview","type":"IMAGE","links":[124]}],"properties":{"Node name for S&R":"MG_ControlFusion_Easy"},"widgets_values":["Step 2",false,true,true,1,0.02]},{"id":15,"type":"PreviewImage","pos":[1735.1930557379187,-393.0297689400224],"size":[204.34144162678967,246],"flags":{},"order":27,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":21}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":46,"type":"PreviewImage","pos":[1507.7533042139721,-396.74243519648866],"size":[204.34144162678967,246],"flags":{},"order":23,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":124}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":10,"type":"Note","pos":[-144.73815950276332,524.3438860412525],"size":[210,135.28179391870685],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[],"title":"Positive","properties":{},"widgets_values":["---->"],"color":"#232","bgcolor":"#353"},{"id":8,"type":"Note","pos":[-136.6498868216612,934.3499360344714],"size":[213.5817209730206,155.86666460906906],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[],"title":"Negative","properties":{},"widgets_values":["---->\n\n(super-wrong:1) - it's a trigger negative prompt for 'mg_7lambda_negative'"],"color":"#322","bgcolor":"#533"},{"id":53,"type":"Reroute","pos":[990.3715999390612,503.0075133219898],"size":[75,26],"flags":{},"order":20,"mode":0,"inputs":[{"name":"","type":"*","link":141}],"outputs":[{"name":"","type":"IMAGE","links":[142]}],"properties":{"showOutputText":false,"horizontal":false}},{"id":3,"type":"MagicSeedLatent","pos":[629.902126183393,-182.7453558545654],"size":[270,198],"flags":{},"order":9,"mode":0,"inputs":[{"localized_name":"vae","name":"vae","shape":7,"type":"VAE","link":2},{"localized_name":"image","name":"image","shape":7,"type":"IMAGE","link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"batch_size","name":"batch_size","type":"INT","widget":{"name":"batch_size"},"link":null},{"localized_name":"sigma","name":"sigma","type":"FLOAT","widget":{"name":"sigma"},"link":null},{"localized_name":"bias","name":"bias","type":"FLOAT","widget":{"name":"bias"},"link":null},{"localized_name":"mix_image","name":"mix_image","type":"BOOLEAN","widget":{"name":"mix_image"},"link":null}],"outputs":[{"localized_name":"LATENT","name":"LATENT","type":"LATENT","links":[19]}],"properties":{"Node name for S&R":"MagicSeedLatent"},"widgets_values":[672,944,1,0.8,0.5,false],"color":"#323","bgcolor":"#535"},{"id":4,"type":"ControlNetLoader","pos":[1106.8272213312625,465.13839701649334],"size":[271.9963341032716,58],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"control_net_name","name":"control_net_name","type":"COMBO","widget":{"name":"control_net_name"},"link":null}],"outputs":[{"label":"CONTROL_NET","localized_name":"CONTROL_NET","name":"CONTROL_NET","type":"CONTROL_NET","slot_index":0,"links":[143]}],"properties":{"Node name for S&R":"ControlNetLoader","models":[{"name":"control_v11p_sd15_scribble_fp16.safetensors","url":"https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_scribble_fp16.safetensors?download=true","directory":"controlnet"}]},"widgets_values":["diffusers_xl_depth_full.safetensors"],"color":"#233","bgcolor":"#355"},{"id":5,"type":"CLIPVisionLoader","pos":[1107.383961736022,356.1351441545039],"size":[267.557917518395,58],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"clip_name","name":"clip_name","type":"COMBO","widget":{"name":"clip_name"},"link":null}],"outputs":[{"localized_name":"CLIP_VISION","name":"CLIP_VISION","type":"CLIP_VISION","links":[17,92]}],"properties":{"Node name for S&R":"CLIPVisionLoader"},"widgets_values":["open_clip_model(NS).safetensors"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":49,"type":"Reroute","pos":[2127.6689254267244,589.457535723742],"size":[75,26],"flags":{},"order":15,"mode":0,"inputs":[{"name":"","type":"*","link":129}],"outputs":[{"name":"","type":"VAE","links":[130,131,134]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#432","bgcolor":"#653"},{"id":47,"type":"Reroute","pos":[2126.2268260656597,621.1837216671687],"size":[75,26],"flags":{},"order":12,"mode":0,"inputs":[{"name":"","type":"*","link":125}],"outputs":[{"name":"","type":"CLIP_VISION","links":[126,127]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#2a363b","bgcolor":"#3f5159"},{"id":55,"type":"Reroute","pos":[2125.520836752072,649.1034792254129],"size":[75,26],"flags":{},"order":11,"mode":0,"inputs":[{"name":"","type":"*","link":145}],"outputs":[{"name":"","type":"CONTROL_NET","links":[146,147]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#233","bgcolor":"#355"},{"id":52,"type":"Reroute","pos":[2847.2765065980852,559.1734491413802],"size":[75,26],"flags":{},"order":18,"mode":0,"inputs":[{"name":"","type":"*","link":139}],"outputs":[{"name":"","type":"MODEL","links":[140]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#223","bgcolor":"#335"},{"id":50,"type":"Reroute","pos":[2847.276506598083,593.7838338069366],"size":[75,26],"flags":{},"order":21,"mode":0,"inputs":[{"name":"","type":"*","link":131}],"outputs":[{"name":"","type":"VAE","links":[132,133]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#432","bgcolor":"#653"},{"id":48,"type":"Reroute","pos":[2847.2765065980825,624.0679203892983],"size":[75,26],"flags":{},"order":17,"mode":0,"inputs":[{"name":"","type":"*","link":127}],"outputs":[{"name":"","type":"CLIP_VISION","links":[128]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#2a363b","bgcolor":"#3f5159"},{"id":56,"type":"Reroute","pos":[2843.686318562366,656.3139760307369],"size":[75,26],"flags":{},"order":16,"mode":0,"inputs":[{"name":"","type":"*","link":147}],"outputs":[{"name":"","type":"CONTROL_NET","links":[148]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#233","bgcolor":"#355"},{"id":19,"type":"Reroute","pos":[1498.7055053565248,550.5312952244669],"size":[75,26],"flags":{},"order":7,"mode":0,"inputs":[{"name":"","type":"*","link":150}],"outputs":[{"name":"","type":"MODEL","links":[136,137]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#223","bgcolor":"#335"},{"id":20,"type":"Reroute","pos":[1500.2829216438683,587.3239702140152],"size":[75,26],"flags":{},"order":10,"mode":0,"inputs":[{"name":"","type":"*","link":31}],"outputs":[{"name":"","type":"VAE","links":[32,129,135]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#432","bgcolor":"#653"},{"id":17,"type":"Reroute","pos":[1500.0465475793615,619.3098903755488],"size":[75,26],"flags":{},"order":6,"mode":0,"inputs":[{"name":"","type":"*","link":92}],"outputs":[{"name":"","type":"CLIP_VISION","links":[28,125]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#2a363b","bgcolor":"#3f5159"},{"id":54,"type":"Reroute","pos":[1500.2152857001722,653.5359574268514],"size":[75,26],"flags":{},"order":5,"mode":0,"inputs":[{"name":"","type":"*","link":143}],"outputs":[{"name":"","type":"CONTROL_NET","links":[144,145]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#233","bgcolor":"#355"},{"id":51,"type":"Reroute","pos":[2129.1110247877914,554.8471510581859],"size":[75,26],"flags":{},"order":13,"mode":0,"inputs":[{"name":"","type":"*","link":137}],"outputs":[{"name":"","type":"MODEL","links":[138,139]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#223","bgcolor":"#335"},{"id":24,"type":"ComfyAdaptiveDetailEnhancer25_Easy","pos":[2216.167965338495,236.13994164208663],"size":[304.44140625,394],"flags":{},"order":28,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":138},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":115},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":116},{"localized_name":"vae","name":"vae","type":"VAE","link":130},{"localized_name":"latent","name":"latent","type":"LATENT","link":62},{"localized_name":"reference_image","name":"reference_image","shape":7,"type":"IMAGE","link":66},{"localized_name":"clip_vision","name":"clip_vision","shape":7,"type":"CLIP_VISION","link":126},{"localized_name":"preset_step","name":"preset_step","type":"COMBO","widget":{"name":"preset_step"},"link":null},{"localized_name":"custom","name":"custom","type":"BOOLEAN","widget":{"name":"custom"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"cfg","name":"cfg","type":"FLOAT","widget":{"name":"cfg"},"link":null},{"localized_name":"denoise","name":"denoise","type":"FLOAT","widget":{"name":"denoise"},"link":null},{"localized_name":"sampler_name","name":"sampler_name","type":"COMBO","widget":{"name":"sampler_name"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"clipseg_text","name":"clipseg_text","shape":7,"type":"STRING","widget":{"name":"clipseg_text"},"link":null}],"outputs":[{"localized_name":"LATENT","name":"LATENT","type":"LATENT","links":[61]},{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[40,65,85]},{"localized_name":"mask_preview","name":"mask_preview","type":"IMAGE","links":[41]}],"properties":{"Node name for S&R":"ComfyAdaptiveDetailEnhancer25_Easy"},"widgets_values":["Step 3",false,0,"fixed",30,7,0.55,"ddim","MGHybrid","hand, feet, face"]},{"id":25,"type":"PreviewImage","pos":[2076.6050781706476,818.6164042016213],"size":[607.2076918734667,715.3763941463438],"flags":{},"order":30,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":40}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":29,"type":"ComfyAdaptiveDetailEnhancer25_Easy","pos":[2947.1571822581677,229.68250150174998],"size":[304.44140625,394],"flags":{},"order":33,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":140},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":86},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":87},{"localized_name":"vae","name":"vae","type":"VAE","link":132},{"localized_name":"latent","name":"latent","type":"LATENT","link":61},{"localized_name":"reference_image","name":"reference_image","shape":7,"type":"IMAGE","link":65},{"localized_name":"clip_vision","name":"clip_vision","shape":7,"type":"CLIP_VISION","link":128},{"localized_name":"preset_step","name":"preset_step","type":"COMBO","widget":{"name":"preset_step"},"link":null},{"localized_name":"custom","name":"custom","type":"BOOLEAN","widget":{"name":"custom"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"cfg","name":"cfg","type":"FLOAT","widget":{"name":"cfg"},"link":null},{"localized_name":"denoise","name":"denoise","type":"FLOAT","widget":{"name":"denoise"},"link":null},{"localized_name":"sampler_name","name":"sampler_name","type":"COMBO","widget":{"name":"sampler_name"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"clipseg_text","name":"clipseg_text","shape":7,"type":"STRING","widget":{"name":"clipseg_text"},"link":null}],"outputs":[{"localized_name":"LATENT","name":"LATENT","type":"LATENT","links":null},{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[48]},{"localized_name":"mask_preview","name":"mask_preview","type":"IMAGE","links":[46]}],"properties":{"Node name for S&R":"ComfyAdaptiveDetailEnhancer25_Easy"},"widgets_values":["Step 4",false,0,"fixed",30,7,0.45,"ddim","MGHybrid","hand, feet, face"]},{"id":11,"type":"ComfyAdaptiveDetailEnhancer25_Easy","pos":[1572.9731847035082,222.56018167321056],"size":[304.44140625,394],"flags":{},"order":22,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":136},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":107},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":106},{"localized_name":"vae","name":"vae","type":"VAE","link":32},{"localized_name":"latent","name":"latent","type":"LATENT","link":37},{"localized_name":"reference_image","name":"reference_image","shape":7,"type":"IMAGE","link":24},{"localized_name":"clip_vision","name":"clip_vision","shape":7,"type":"CLIP_VISION","link":28},{"localized_name":"preset_step","name":"preset_step","type":"COMBO","widget":{"name":"preset_step"},"link":null},{"localized_name":"custom","name":"custom","type":"BOOLEAN","widget":{"name":"custom"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"cfg","name":"cfg","type":"FLOAT","widget":{"name":"cfg"},"link":null},{"localized_name":"denoise","name":"denoise","type":"FLOAT","widget":{"name":"denoise"},"link":null},{"localized_name":"sampler_name","name":"sampler_name","type":"COMBO","widget":{"name":"sampler_name"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"clipseg_text","name":"clipseg_text","shape":7,"type":"STRING","widget":{"name":"clipseg_text"},"link":null}],"outputs":[{"localized_name":"LATENT","name":"LATENT","type":"LATENT","links":[62]},{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[22,66,110]},{"localized_name":"mask_preview","name":"mask_preview","type":"IMAGE","links":[21]}],"properties":{"Node name for S&R":"ComfyAdaptiveDetailEnhancer25_Easy"},"widgets_values":["Step 2",false,0,"fixed",30,7,0.65,"ddim","MGHybrid","hand, feet, face"]},{"id":14,"type":"ComfyAdaptiveDetailEnhancer25_Easy","pos":[1028.7352577781799,-254.68484251639404],"size":[304.44140625,394],"flags":{},"order":14,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":152},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":13},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":14},{"localized_name":"vae","name":"vae","type":"VAE","link":15},{"localized_name":"latent","name":"latent","type":"LATENT","link":19},{"localized_name":"reference_image","name":"reference_image","shape":7,"type":"IMAGE","link":null},{"localized_name":"clip_vision","name":"clip_vision","shape":7,"type":"CLIP_VISION","link":17},{"localized_name":"preset_step","name":"preset_step","type":"COMBO","widget":{"name":"preset_step"},"link":null},{"localized_name":"custom","name":"custom","type":"BOOLEAN","widget":{"name":"custom"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"cfg","name":"cfg","type":"FLOAT","widget":{"name":"cfg"},"link":null},{"localized_name":"denoise","name":"denoise","type":"FLOAT","widget":{"name":"denoise"},"link":null},{"localized_name":"sampler_name","name":"sampler_name","type":"COMBO","widget":{"name":"sampler_name"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"clipseg_text","name":"clipseg_text","shape":7,"type":"STRING","widget":{"name":"clipseg_text"},"link":null}],"outputs":[{"localized_name":"LATENT","name":"LATENT","type":"LATENT","links":[37]},{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[24,97,141]},{"localized_name":"mask_preview","name":"mask_preview","type":"IMAGE","links":[]}],"properties":{"Node name for S&R":"ComfyAdaptiveDetailEnhancer25_Easy"},"widgets_values":["Step 1",false,0,"fixed",30,7,0.9999,"ddim","MGHybrid","hand, feet, face"]},{"id":58,"type":"PatchSageAttention","pos":[627.8244030121156,-297.19892309893845],"size":[270,58],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":151},{"localized_name":"sage_attention","name":"sage_attention","type":"COMBO","widget":{"name":"sage_attention"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[152]}],"properties":{"Node name for S&R":"PatchSageAttention"},"widgets_values":["auto_quality"],"color":"#223","bgcolor":"#335"},{"id":2,"type":"MagicNodesCombiNode","pos":[93.09648271877055,-350.9065523480804],"size":[439.3682369626521,1874.7812342789503],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"model_in","name":"model_in","shape":7,"type":"MODEL","link":null},{"localized_name":"clip_in","name":"clip_in","shape":7,"type":"CLIP","link":null},{"localized_name":"vae_in","name":"vae_in","shape":7,"type":"VAE","link":null},{"localized_name":"positive_in","name":"positive_in","shape":7,"type":"CONDITIONING","link":null},{"localized_name":"negative_in","name":"negative_in","shape":7,"type":"CONDITIONING","link":null},{"localized_name":"use_checkpoint","name":"use_checkpoint","type":"BOOLEAN","widget":{"name":"use_checkpoint"},"link":null},{"localized_name":"checkpoint","name":"checkpoint","type":"COMBO","widget":{"name":"checkpoint"},"link":null},{"localized_name":"clear_cache","name":"clear_cache","type":"BOOLEAN","widget":{"name":"clear_cache"},"link":null},{"localized_name":"use_lora_1","name":"use_lora_1","type":"BOOLEAN","widget":{"name":"use_lora_1"},"link":null},{"localized_name":"lora_1","name":"lora_1","type":"COMBO","widget":{"name":"lora_1"},"link":null},{"localized_name":"strength_model_1","name":"strength_model_1","type":"FLOAT","widget":{"name":"strength_model_1"},"link":null},{"localized_name":"strength_clip_1","name":"strength_clip_1","type":"FLOAT","widget":{"name":"strength_clip_1"},"link":null},{"localized_name":"use_lora_2","name":"use_lora_2","type":"BOOLEAN","widget":{"name":"use_lora_2"},"link":null},{"localized_name":"lora_2","name":"lora_2","type":"COMBO","widget":{"name":"lora_2"},"link":null},{"localized_name":"strength_model_2","name":"strength_model_2","type":"FLOAT","widget":{"name":"strength_model_2"},"link":null},{"localized_name":"strength_clip_2","name":"strength_clip_2","type":"FLOAT","widget":{"name":"strength_clip_2"},"link":null},{"localized_name":"use_lora_3","name":"use_lora_3","type":"BOOLEAN","widget":{"name":"use_lora_3"},"link":null},{"localized_name":"lora_3","name":"lora_3","type":"COMBO","widget":{"name":"lora_3"},"link":null},{"localized_name":"strength_model_3","name":"strength_model_3","type":"FLOAT","widget":{"name":"strength_model_3"},"link":null},{"localized_name":"strength_clip_3","name":"strength_clip_3","type":"FLOAT","widget":{"name":"strength_clip_3"},"link":null},{"localized_name":"use_lora_4","name":"use_lora_4","type":"BOOLEAN","widget":{"name":"use_lora_4"},"link":null},{"localized_name":"lora_4","name":"lora_4","type":"COMBO","widget":{"name":"lora_4"},"link":null},{"localized_name":"strength_model_4","name":"strength_model_4","type":"FLOAT","widget":{"name":"strength_model_4"},"link":null},{"localized_name":"strength_clip_4","name":"strength_clip_4","type":"FLOAT","widget":{"name":"strength_clip_4"},"link":null},{"localized_name":"use_lora_5","name":"use_lora_5","type":"BOOLEAN","widget":{"name":"use_lora_5"},"link":null},{"localized_name":"lora_5","name":"lora_5","type":"COMBO","widget":{"name":"lora_5"},"link":null},{"localized_name":"strength_model_5","name":"strength_model_5","type":"FLOAT","widget":{"name":"strength_model_5"},"link":null},{"localized_name":"strength_clip_5","name":"strength_clip_5","type":"FLOAT","widget":{"name":"strength_clip_5"},"link":null},{"localized_name":"use_lora_6","name":"use_lora_6","type":"BOOLEAN","widget":{"name":"use_lora_6"},"link":null},{"localized_name":"lora_6","name":"lora_6","type":"COMBO","widget":{"name":"lora_6"},"link":null},{"localized_name":"strength_model_6","name":"strength_model_6","type":"FLOAT","widget":{"name":"strength_model_6"},"link":null},{"localized_name":"strength_clip_6","name":"strength_clip_6","type":"FLOAT","widget":{"name":"strength_clip_6"},"link":null},{"localized_name":"positive_prompt","name":"positive_prompt","shape":7,"type":"STRING","widget":{"name":"positive_prompt"},"link":null},{"localized_name":"negative_prompt","name":"negative_prompt","shape":7,"type":"STRING","widget":{"name":"negative_prompt"},"link":null},{"localized_name":"clip_set_last_layer_positive","name":"clip_set_last_layer_positive","shape":7,"type":"INT","widget":{"name":"clip_set_last_layer_positive"},"link":null},{"localized_name":"clip_set_last_layer_negative","name":"clip_set_last_layer_negative","shape":7,"type":"INT","widget":{"name":"clip_set_last_layer_negative"},"link":null},{"localized_name":"recipe_slot","name":"recipe_slot","shape":7,"type":"COMBO","widget":{"name":"recipe_slot"},"link":null},{"localized_name":"recipe_save","name":"recipe_save","shape":7,"type":"BOOLEAN","widget":{"name":"recipe_save"},"link":null},{"localized_name":"recipe_use","name":"recipe_use","shape":7,"type":"BOOLEAN","widget":{"name":"recipe_use"},"link":null},{"localized_name":"standard_pipeline","name":"standard_pipeline","shape":7,"type":"BOOLEAN","widget":{"name":"standard_pipeline"},"link":null},{"localized_name":"clip_lora_pos_gain","name":"clip_lora_pos_gain","shape":7,"type":"FLOAT","widget":{"name":"clip_lora_pos_gain"},"link":null},{"localized_name":"clip_lora_neg_gain","name":"clip_lora_neg_gain","shape":7,"type":"FLOAT","widget":{"name":"clip_lora_neg_gain"},"link":null},{"localized_name":"dynamic_pos","name":"dynamic_pos","shape":7,"type":"BOOLEAN","widget":{"name":"dynamic_pos"},"link":null},{"localized_name":"dynamic_neg","name":"dynamic_neg","shape":7,"type":"BOOLEAN","widget":{"name":"dynamic_neg"},"link":null},{"localized_name":"dyn_seed","name":"dyn_seed","shape":7,"type":"INT","widget":{"name":"dyn_seed"},"link":null},{"localized_name":"dynamic_break_freeze","name":"dynamic_break_freeze","shape":7,"type":"BOOLEAN","widget":{"name":"dynamic_break_freeze"},"link":null},{"localized_name":"show_expanded_prompts","name":"show_expanded_prompts","shape":7,"type":"BOOLEAN","widget":{"name":"show_expanded_prompts"},"link":null},{"localized_name":"save_expanded_prompts","name":"save_expanded_prompts","shape":7,"type":"BOOLEAN","widget":{"name":"save_expanded_prompts"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[150,151]},{"localized_name":"CLIP","name":"CLIP","type":"CLIP","links":null},{"localized_name":"Positive","name":"Positive","type":"CONDITIONING","links":[13,102]},{"localized_name":"Negative","name":"Negative","type":"CONDITIONING","links":[14,103]},{"localized_name":"VAE","name":"VAE","type":"VAE","links":[2,15,31]}],"properties":{"Node name for S&R":"MagicNodesCombiNode"},"widgets_values":[true,"None",true,false,"None",-1,0.2,false,"None",0,0,false,"None",0,0,false,"None",0,0,false,"None",0,0,false,"None",false,false,"(correct human anatomy:1).\n(masterwork:1), very aesthetic, super detailed, newest, masterpiece, amazing quality, highres, sharpen image, best quality.\n25yrs 1woman, necklace, earnings, jewelry, wrist jewelry, ponytail hair, blue hair, blue eyes, yellow kimono with floral print, holds a large pillow, purple pillow, smile, 2 hands.\nFront view, Bedroom","(super-wrong:1), wrong, worst, mistake, (anatomically incorrect human:1), wrong geometry\n(six fingers:1), pixelated,\n(bad hands:1), deformed nails, (fused fingers), (incorrecting hold in hand:1), bad fingers\nugly, (bad anatomy), junior artist, beginner's drawing, bad composition, loose, underpainting, muddy colors, broken symmetry, unclear focal point, blurry details, incorrect perspective, shaky outlines, uneven lines,\n(unsharpen eyes:1), imperfect eyes, skewed eyes, unnatural face, unnatural body, extra limb, missing limbs, distorted eyelashes, misplaced pupils, noisly eyes, long neck,\nobject clipping, clothing clipping, object intersection, unrealistic overlap, geometry intersection,\ntext, typo, signature, watermarks on image, error",-2,-2,"Off",false,false,false,0.92,1,false,false,0,false,false,false]}],"links":[[2,2,4,3,0,"VAE"],[13,2,2,14,1,"CONDITIONING"],[14,2,3,14,2,"CONDITIONING"],[15,2,4,14,3,"VAE"],[17,5,0,14,6,"CLIP_VISION"],[19,3,0,14,4,"LATENT"],[21,11,2,15,0,"IMAGE"],[22,11,1,16,0,"IMAGE"],[24,14,1,11,5,"IMAGE"],[28,17,0,11,6,"CLIP_VISION"],[31,2,4,20,0,"*"],[32,20,0,11,3,"VAE"],[37,14,0,11,4,"LATENT"],[40,24,1,25,0,"IMAGE"],[41,24,2,26,0,"IMAGE"],[46,29,2,31,0,"IMAGE"],[48,29,1,7,0,"IMAGE"],[61,24,0,29,4,"LATENT"],[62,11,0,24,4,"LATENT"],[65,24,1,29,5,"IMAGE"],[66,11,1,24,5,"IMAGE"],[85,24,1,41,0,"IMAGE"],[86,41,0,29,1,"CONDITIONING"],[87,41,1,29,2,"CONDITIONING"],[90,41,2,42,0,"IMAGE"],[92,5,0,17,0,"*"],[97,14,1,43,0,"IMAGE"],[102,2,2,43,1,"CONDITIONING"],[103,2,3,43,2,"CONDITIONING"],[106,43,1,11,2,"CONDITIONING"],[107,43,0,11,1,"CONDITIONING"],[110,11,1,44,0,"IMAGE"],[115,44,0,24,1,"CONDITIONING"],[116,44,1,24,2,"CONDITIONING"],[119,43,0,44,1,"CONDITIONING"],[120,43,1,44,2,"CONDITIONING"],[121,44,1,41,2,"CONDITIONING"],[122,44,0,41,1,"CONDITIONING"],[123,44,2,45,0,"IMAGE"],[124,43,2,46,0,"IMAGE"],[125,17,0,47,0,"*"],[126,47,0,24,6,"CLIP_VISION"],[127,47,0,48,0,"*"],[128,48,0,29,6,"CLIP_VISION"],[129,20,0,49,0,"*"],[130,49,0,24,3,"VAE"],[131,49,0,50,0,"*"],[132,50,0,29,3,"VAE"],[133,50,0,41,4,"VAE"],[134,49,0,44,4,"VAE"],[135,20,0,43,4,"VAE"],[136,19,0,11,0,"MODEL"],[137,19,0,51,0,"*"],[138,51,0,24,0,"MODEL"],[139,51,0,52,0,"*"],[140,52,0,29,0,"MODEL"],[141,14,1,53,0,"*"],[142,53,0,33,0,"IMAGE"],[143,4,0,54,0,"*"],[144,54,0,43,3,"CONTROL_NET"],[145,54,0,55,0,"*"],[146,55,0,44,3,"CONTROL_NET"],[147,55,0,56,0,"*"],[148,56,0,41,3,"CONTROL_NET"],[150,2,0,19,0,"*"],[151,2,0,58,0,"MODEL"],[152,58,0,14,0,"MODEL"]],"groups":[{"id":1,"title":"Step1 - Pre-warm","bounding":[985.2202161884722,-368.00948371274734,405.87327906278074,908.4829257340471],"color":"#a1309b","font_size":22,"flags":{}},{"id":2,"title":"Step2 - warming","bounding":[1491.7975585478357,-546.9292924524468,464.03429546870484,1238.2310938486526],"color":"#b58b2a","font_size":22,"flags":{}},{"id":3,"title":"Step3 - Pre-ready","bounding":[2110.501998988056,-553.0885338063888,518.639493048679,1245.9769642733752],"color":"#3f789e","font_size":22,"flags":{}},{"id":4,"title":"Step4 - High-res","bounding":[2836.675702344997,-548.5808647096898,526.8246054854121,1235.0376260654407],"color":"#8A8","font_size":22,"flags":{}},{"id":5,"title":"1 - Pre-warm","bounding":[912.8922171272666,734.9178623674503,505.331679024805,647.6692243308507],"color":"#a1309b","font_size":22,"flags":{}},{"id":6,"title":"2 - warming","bounding":[1478.1593316885921,734.6063030539617,505.331679024805,647.6692243308507],"color":"#b58b2a","font_size":22,"flags":{}},{"id":7,"title":"3 - Pre-ready","bounding":[2040.803574403982,730.9381266791784,683.3155821674318,849.0584001035625],"color":"#3f789e","font_size":22,"flags":{}},{"id":8,"title":"Step4 - High-res","bounding":[2771.933529470263,732.683066906069,700.3585746163794,850.3693995227123],"color":"#8A8","font_size":22,"flags":{}}],"config":{},"extra":{"ds":{"scale":1.1167815779424886,"offset":[205.33901426105587,523.8684695773068]}},"version":0.4}
 
1
+ {"id":"ab14c37a-6cec-41cf-899a-b499539f5b8b","revision":0,"last_node_id":58,"last_link_id":154,"nodes":[{"id":33,"type":"PreviewImage","pos":[934.524998846107,827.6679009139978],"size":[454.34515960057956,487.52469509807827],"flags":{},"order":24,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":142}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":16,"type":"PreviewImage","pos":[1500.7861350427,834.011023145272],"size":[454.34515960057956,487.52469509807827],"flags":{},"order":25,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":22}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":7,"type":"SaveImage","pos":[2796.435012229308,813.9383242288463],"size":[645.60324992196,715.7559184038435],"flags":{},"order":35,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":48},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{},"widgets_values":["ComfyUI"]},{"id":26,"type":"PreviewImage","pos":[2402.088511427638,-384.4257289383634],"size":[204.34144162678967,246],"flags":{},"order":32,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":41}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":45,"type":"PreviewImage","pos":[2134.6382392169603,-384.3467464741332],"size":[204.34144162678967,246],"flags":{},"order":29,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":123}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":44,"type":"MG_ControlFusion_Easy","pos":[2230.0043967143683,-89.74152781984677],"size":[270,258],"flags":{},"order":26,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":110},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":119},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":120},{"localized_name":"control_net","name":"control_net","type":"CONTROL_NET","link":146},{"localized_name":"vae","name":"vae","type":"VAE","link":134},{"localized_name":"preset_step","name":"preset_step","type":"COMBO","widget":{"name":"preset_step"},"link":null},{"localized_name":"custom","name":"custom","type":"BOOLEAN","widget":{"name":"custom"},"link":null},{"localized_name":"enable_depth","name":"enable_depth","type":"BOOLEAN","widget":{"name":"enable_depth"},"link":null},{"localized_name":"enable_pyra","name":"enable_pyra","type":"BOOLEAN","widget":{"name":"enable_pyra"},"link":null},{"localized_name":"edge_alpha","name":"edge_alpha","type":"FLOAT","widget":{"name":"edge_alpha"},"link":null},{"localized_name":"blend_factor","name":"blend_factor","type":"FLOAT","widget":{"name":"blend_factor"},"link":null}],"outputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":[115,122]},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":[116,121]},{"localized_name":"Mask_Preview","name":"Mask_Preview","type":"IMAGE","links":[123]}],"properties":{"Node name for S&R":"MG_ControlFusion_Easy"},"widgets_values":["Step 3",false,true,true,1,0.02]},{"id":42,"type":"PreviewImage","pos":[2869.9561925844105,-392.07761053265784],"size":[204.34144162678967,246],"flags":{},"order":34,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":90}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":31,"type":"PreviewImage","pos":[3124.9260576007664,-392.6557805266826],"size":[204.34144162678967,246],"flags":{},"order":36,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":46}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":41,"type":"MG_ControlFusion_Easy","pos":[2963.5735553194004,-88.49280600871076],"size":[270,258],"flags":{},"order":31,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":85},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":122},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":121},{"localized_name":"control_net","name":"control_net","type":"CONTROL_NET","link":148},{"localized_name":"vae","name":"vae","type":"VAE","link":133},{"localized_name":"preset_step","name":"preset_step","type":"COMBO","widget":{"name":"preset_step"},"link":null},{"localized_name":"custom","name":"custom","type":"BOOLEAN","widget":{"name":"custom"},"link":null},{"localized_name":"enable_depth","name":"enable_depth","type":"BOOLEAN","widget":{"name":"enable_depth"},"link":null},{"localized_name":"enable_pyra","name":"enable_pyra","type":"BOOLEAN","widget":{"name":"enable_pyra"},"link":null},{"localized_name":"edge_alpha","name":"edge_alpha","type":"FLOAT","widget":{"name":"edge_alpha"},"link":null},{"localized_name":"blend_factor","name":"blend_factor","type":"FLOAT","widget":{"name":"blend_factor"},"link":null}],"outputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":[86]},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":[87]},{"localized_name":"Mask_Preview","name":"Mask_Preview","type":"IMAGE","links":[90]}],"properties":{"Node name for S&R":"MG_ControlFusion_Easy"},"widgets_values":["Step 4",false,true,true,1,0.02]},{"id":43,"type":"MG_ControlFusion_Easy","pos":[1591.642692427568,-97.88472358998305],"size":[270,258],"flags":{},"order":18,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":97},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":102},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":103},{"localized_name":"control_net","name":"control_net","type":"CONTROL_NET","link":144},{"localized_name":"vae","name":"vae","type":"VAE","link":135},{"localized_name":"preset_step","name":"preset_step","type":"COMBO","widget":{"name":"preset_step"},"link":null},{"localized_name":"custom","name":"custom","type":"BOOLEAN","widget":{"name":"custom"},"link":null},{"localized_name":"enable_depth","name":"enable_depth","type":"BOOLEAN","widget":{"name":"enable_depth"},"link":null},{"localized_name":"enable_pyra","name":"enable_pyra","type":"BOOLEAN","widget":{"name":"enable_pyra"},"link":null},{"localized_name":"edge_alpha","name":"edge_alpha","type":"FLOAT","widget":{"name":"edge_alpha"},"link":null},{"localized_name":"blend_factor","name":"blend_factor","type":"FLOAT","widget":{"name":"blend_factor"},"link":null}],"outputs":[{"localized_name":"positive","name":"positive","type":"CONDITIONING","links":[107,119]},{"localized_name":"negative","name":"negative","type":"CONDITIONING","links":[106,120]},{"localized_name":"Mask_Preview","name":"Mask_Preview","type":"IMAGE","links":[124]}],"properties":{"Node name for S&R":"MG_ControlFusion_Easy"},"widgets_values":["Step 2",false,true,true,1,0.02]},{"id":15,"type":"PreviewImage","pos":[1735.1930557379187,-393.0297689400224],"size":[204.34144162678967,246],"flags":{},"order":27,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":21}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":46,"type":"PreviewImage","pos":[1507.7533042139721,-396.74243519648866],"size":[204.34144162678967,246],"flags":{},"order":23,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":124}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":10,"type":"Note","pos":[-144.73815950276332,524.3438860412525],"size":[210,135.28179391870685],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[],"title":"Positive","properties":{},"widgets_values":["---->"],"color":"#232","bgcolor":"#353"},{"id":8,"type":"Note","pos":[-136.6498868216612,934.3499360344714],"size":[213.5817209730206,155.86666460906906],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[],"title":"Negative","properties":{},"widgets_values":["---->\n\n(super-wrong:1) - it's a trigger negative prompt for 'mg_7lambda_negative'"],"color":"#322","bgcolor":"#533"},{"id":53,"type":"Reroute","pos":[990.3715999390612,503.0075133219898],"size":[75,26],"flags":{},"order":19,"mode":0,"inputs":[{"name":"","type":"*","link":141}],"outputs":[{"name":"","type":"IMAGE","links":[142]}],"properties":{"showOutputText":false,"horizontal":false}},{"id":3,"type":"MagicSeedLatent","pos":[629.902126183393,-182.7453558545654],"size":[270,198],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"vae","name":"vae","shape":7,"type":"VAE","link":2},{"localized_name":"image","name":"image","shape":7,"type":"IMAGE","link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"batch_size","name":"batch_size","type":"INT","widget":{"name":"batch_size"},"link":null},{"localized_name":"sigma","name":"sigma","type":"FLOAT","widget":{"name":"sigma"},"link":null},{"localized_name":"bias","name":"bias","type":"FLOAT","widget":{"name":"bias"},"link":null},{"localized_name":"mix_image","name":"mix_image","type":"BOOLEAN","widget":{"name":"mix_image"},"link":null}],"outputs":[{"localized_name":"LATENT","name":"LATENT","type":"LATENT","links":[19]}],"properties":{"Node name for S&R":"MagicSeedLatent"},"widgets_values":[672,944,1,0.8,0.5,false],"color":"#323","bgcolor":"#535"},{"id":4,"type":"ControlNetLoader","pos":[1106.8272213312625,465.13839701649334],"size":[271.9963341032716,58],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"control_net_name","name":"control_net_name","type":"COMBO","widget":{"name":"control_net_name"},"link":null}],"outputs":[{"label":"CONTROL_NET","localized_name":"CONTROL_NET","name":"CONTROL_NET","type":"CONTROL_NET","slot_index":0,"links":[143]}],"properties":{"Node name for S&R":"ControlNetLoader","models":[{"name":"control_v11p_sd15_scribble_fp16.safetensors","url":"https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_scribble_fp16.safetensors?download=true","directory":"controlnet"}]},"widgets_values":["diffusers_xl_depth_full.safetensors"],"color":"#233","bgcolor":"#355"},{"id":5,"type":"CLIPVisionLoader","pos":[1107.383961736022,356.1351441545039],"size":[267.557917518395,58],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"clip_name","name":"clip_name","type":"COMBO","widget":{"name":"clip_name"},"link":null}],"outputs":[{"localized_name":"CLIP_VISION","name":"CLIP_VISION","type":"CLIP_VISION","links":[17,92]}],"properties":{"Node name for S&R":"CLIPVisionLoader"},"widgets_values":["open_clip_model(NS).safetensors"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":49,"type":"Reroute","pos":[2127.6689254267244,589.457535723742],"size":[75,26],"flags":{},"order":14,"mode":0,"inputs":[{"name":"","type":"*","link":129}],"outputs":[{"name":"","type":"VAE","links":[130,131,134]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#432","bgcolor":"#653"},{"id":47,"type":"Reroute","pos":[2126.2268260656597,621.1837216671687],"size":[75,26],"flags":{},"order":11,"mode":0,"inputs":[{"name":"","type":"*","link":125}],"outputs":[{"name":"","type":"CLIP_VISION","links":[126,127]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#2a363b","bgcolor":"#3f5159"},{"id":55,"type":"Reroute","pos":[2125.520836752072,649.1034792254129],"size":[75,26],"flags":{},"order":10,"mode":0,"inputs":[{"name":"","type":"*","link":145}],"outputs":[{"name":"","type":"CONTROL_NET","links":[146,147]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#233","bgcolor":"#355"},{"id":52,"type":"Reroute","pos":[2847.2765065980852,559.1734491413802],"size":[75,26],"flags":{},"order":21,"mode":0,"inputs":[{"name":"","type":"*","link":139}],"outputs":[{"name":"","type":"MODEL","links":[140]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#223","bgcolor":"#335"},{"id":50,"type":"Reroute","pos":[2847.276506598083,593.7838338069366],"size":[75,26],"flags":{},"order":20,"mode":0,"inputs":[{"name":"","type":"*","link":131}],"outputs":[{"name":"","type":"VAE","links":[132,133]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#432","bgcolor":"#653"},{"id":48,"type":"Reroute","pos":[2847.2765065980825,624.0679203892983],"size":[75,26],"flags":{},"order":16,"mode":0,"inputs":[{"name":"","type":"*","link":127}],"outputs":[{"name":"","type":"CLIP_VISION","links":[128]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#2a363b","bgcolor":"#3f5159"},{"id":56,"type":"Reroute","pos":[2843.686318562366,656.3139760307369],"size":[75,26],"flags":{},"order":15,"mode":0,"inputs":[{"name":"","type":"*","link":147}],"outputs":[{"name":"","type":"CONTROL_NET","links":[148]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#233","bgcolor":"#355"},{"id":20,"type":"Reroute","pos":[1500.2829216438683,587.3239702140152],"size":[75,26],"flags":{},"order":9,"mode":0,"inputs":[{"name":"","type":"*","link":31}],"outputs":[{"name":"","type":"VAE","links":[32,129,135]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#432","bgcolor":"#653"},{"id":17,"type":"Reroute","pos":[1500.0465475793615,619.3098903755488],"size":[75,26],"flags":{},"order":6,"mode":0,"inputs":[{"name":"","type":"*","link":92}],"outputs":[{"name":"","type":"CLIP_VISION","links":[28,125]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#2a363b","bgcolor":"#3f5159"},{"id":54,"type":"Reroute","pos":[1500.2152857001722,653.5359574268514],"size":[75,26],"flags":{},"order":5,"mode":0,"inputs":[{"name":"","type":"*","link":143}],"outputs":[{"name":"","type":"CONTROL_NET","links":[144,145]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#233","bgcolor":"#355"},{"id":51,"type":"Reroute","pos":[2129.1110247877914,554.8471510581859],"size":[75,26],"flags":{},"order":17,"mode":0,"inputs":[{"name":"","type":"*","link":154}],"outputs":[{"name":"","type":"MODEL","links":[138,139]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#223","bgcolor":"#335"},{"id":24,"type":"ComfyAdaptiveDetailEnhancer25_Easy","pos":[2216.167965338495,236.13994164208663],"size":[304.44140625,394],"flags":{},"order":28,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":138},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":115},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":116},{"localized_name":"vae","name":"vae","type":"VAE","link":130},{"localized_name":"latent","name":"latent","type":"LATENT","link":62},{"localized_name":"reference_image","name":"reference_image","shape":7,"type":"IMAGE","link":66},{"localized_name":"clip_vision","name":"clip_vision","shape":7,"type":"CLIP_VISION","link":126},{"localized_name":"preset_step","name":"preset_step","type":"COMBO","widget":{"name":"preset_step"},"link":null},{"localized_name":"custom","name":"custom","type":"BOOLEAN","widget":{"name":"custom"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"cfg","name":"cfg","type":"FLOAT","widget":{"name":"cfg"},"link":null},{"localized_name":"denoise","name":"denoise","type":"FLOAT","widget":{"name":"denoise"},"link":null},{"localized_name":"sampler_name","name":"sampler_name","type":"COMBO","widget":{"name":"sampler_name"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"clipseg_text","name":"clipseg_text","shape":7,"type":"STRING","widget":{"name":"clipseg_text"},"link":null}],"outputs":[{"localized_name":"LATENT","name":"LATENT","type":"LATENT","links":[61]},{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[40,65,85]},{"localized_name":"mask_preview","name":"mask_preview","type":"IMAGE","links":[41]}],"properties":{"Node name for S&R":"ComfyAdaptiveDetailEnhancer25_Easy"},"widgets_values":["Step 3",false,0,"fixed",30,7,0.55,"ddim","MGHybrid","hand, feet, face"]},{"id":25,"type":"PreviewImage","pos":[2076.6050781706476,818.6164042016213],"size":[607.2076918734667,715.3763941463438],"flags":{},"order":30,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":40}],"outputs":[],"properties":{"Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":29,"type":"ComfyAdaptiveDetailEnhancer25_Easy","pos":[2947.1571822581677,229.68250150174998],"size":[304.44140625,394],"flags":{},"order":33,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":140},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":86},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":87},{"localized_name":"vae","name":"vae","type":"VAE","link":132},{"localized_name":"latent","name":"latent","type":"LATENT","link":61},{"localized_name":"reference_image","name":"reference_image","shape":7,"type":"IMAGE","link":65},{"localized_name":"clip_vision","name":"clip_vision","shape":7,"type":"CLIP_VISION","link":128},{"localized_name":"preset_step","name":"preset_step","type":"COMBO","widget":{"name":"preset_step"},"link":null},{"localized_name":"custom","name":"custom","type":"BOOLEAN","widget":{"name":"custom"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"cfg","name":"cfg","type":"FLOAT","widget":{"name":"cfg"},"link":null},{"localized_name":"denoise","name":"denoise","type":"FLOAT","widget":{"name":"denoise"},"link":null},{"localized_name":"sampler_name","name":"sampler_name","type":"COMBO","widget":{"name":"sampler_name"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"clipseg_text","name":"clipseg_text","shape":7,"type":"STRING","widget":{"name":"clipseg_text"},"link":null}],"outputs":[{"localized_name":"LATENT","name":"LATENT","type":"LATENT","links":null},{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[48]},{"localized_name":"mask_preview","name":"mask_preview","type":"IMAGE","links":[46]}],"properties":{"Node name for S&R":"ComfyAdaptiveDetailEnhancer25_Easy"},"widgets_values":["Step 4",false,0,"fixed",30,7,0.45,"ddim","MGHybrid","hand, feet, face"]},{"id":14,"type":"ComfyAdaptiveDetailEnhancer25_Easy","pos":[1028.7352577781799,-254.68484251639404],"size":[304.44140625,394],"flags":{},"order":13,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":152},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":13},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":14},{"localized_name":"vae","name":"vae","type":"VAE","link":15},{"localized_name":"latent","name":"latent","type":"LATENT","link":19},{"localized_name":"reference_image","name":"reference_image","shape":7,"type":"IMAGE","link":null},{"localized_name":"clip_vision","name":"clip_vision","shape":7,"type":"CLIP_VISION","link":17},{"localized_name":"preset_step","name":"preset_step","type":"COMBO","widget":{"name":"preset_step"},"link":null},{"localized_name":"custom","name":"custom","type":"BOOLEAN","widget":{"name":"custom"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"cfg","name":"cfg","type":"FLOAT","widget":{"name":"cfg"},"link":null},{"localized_name":"denoise","name":"denoise","type":"FLOAT","widget":{"name":"denoise"},"link":null},{"localized_name":"sampler_name","name":"sampler_name","type":"COMBO","widget":{"name":"sampler_name"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"clipseg_text","name":"clipseg_text","shape":7,"type":"STRING","widget":{"name":"clipseg_text"},"link":null}],"outputs":[{"localized_name":"LATENT","name":"LATENT","type":"LATENT","links":[37]},{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[24,97,141]},{"localized_name":"mask_preview","name":"mask_preview","type":"IMAGE","links":[]}],"properties":{"Node name for S&R":"ComfyAdaptiveDetailEnhancer25_Easy"},"widgets_values":["Step 1",false,0,"fixed",30,7,0.9999,"ddim","MGHybrid","hand, feet, face"]},{"id":2,"type":"MagicNodesCombiNode","pos":[93.09648271877055,-350.9065523480804],"size":[439.3682369626521,1874.7812342789503],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"model_in","name":"model_in","shape":7,"type":"MODEL","link":null},{"localized_name":"clip_in","name":"clip_in","shape":7,"type":"CLIP","link":null},{"localized_name":"vae_in","name":"vae_in","shape":7,"type":"VAE","link":null},{"localized_name":"positive_in","name":"positive_in","shape":7,"type":"CONDITIONING","link":null},{"localized_name":"negative_in","name":"negative_in","shape":7,"type":"CONDITIONING","link":null},{"localized_name":"use_checkpoint","name":"use_checkpoint","type":"BOOLEAN","widget":{"name":"use_checkpoint"},"link":null},{"localized_name":"checkpoint","name":"checkpoint","type":"COMBO","widget":{"name":"checkpoint"},"link":null},{"localized_name":"clear_cache","name":"clear_cache","type":"BOOLEAN","widget":{"name":"clear_cache"},"link":null},{"localized_name":"use_lora_1","name":"use_lora_1","type":"BOOLEAN","widget":{"name":"use_lora_1"},"link":null},{"localized_name":"lora_1","name":"lora_1","type":"COMBO","widget":{"name":"lora_1"},"link":null},{"localized_name":"strength_model_1","name":"strength_model_1","type":"FLOAT","widget":{"name":"strength_model_1"},"link":null},{"localized_name":"strength_clip_1","name":"strength_clip_1","type":"FLOAT","widget":{"name":"strength_clip_1"},"link":null},{"localized_name":"use_lora_2","name":"use_lora_2","type":"BOOLEAN","widget":{"name":"use_lora_2"},"link":null},{"localized_name":"lora_2","name":"lora_2","type":"COMBO","widget":{"name":"lora_2"},"link":null},{"localized_name":"strength_model_2","name":"strength_model_2","type":"FLOAT","widget":{"name":"strength_model_2"},"link":null},{"localized_name":"strength_clip_2","name":"strength_clip_2","type":"FLOAT","widget":{"name":"strength_clip_2"},"link":null},{"localized_name":"use_lora_3","name":"use_lora_3","type":"BOOLEAN","widget":{"name":"use_lora_3"},"link":null},{"localized_name":"lora_3","name":"lora_3","type":"COMBO","widget":{"name":"lora_3"},"link":null},{"localized_name":"strength_model_3","name":"strength_model_3","type":"FLOAT","widget":{"name":"strength_model_3"},"link":null},{"localized_name":"strength_clip_3","name":"strength_clip_3","type":"FLOAT","widget":{"name":"strength_clip_3"},"link":null},{"localized_name":"use_lora_4","name":"use_lora_4","type":"BOOLEAN","widget":{"name":"use_lora_4"},"link":null},{"localized_name":"lora_4","name":"lora_4","type":"COMBO","widget":{"name":"lora_4"},"link":null},{"localized_name":"strength_model_4","name":"strength_model_4","type":"FLOAT","widget":{"name":"strength_model_4"},"link":null},{"localized_name":"strength_clip_4","name":"strength_clip_4","type":"FLOAT","widget":{"name":"strength_clip_4"},"link":null},{"localized_name":"use_lora_5","name":"use_lora_5","type":"BOOLEAN","widget":{"name":"use_lora_5"},"link":null},{"localized_name":"lora_5","name":"lora_5","type":"COMBO","widget":{"name":"lora_5"},"link":null},{"localized_name":"strength_model_5","name":"strength_model_5","type":"FLOAT","widget":{"name":"strength_model_5"},"link":null},{"localized_name":"strength_clip_5","name":"strength_clip_5","type":"FLOAT","widget":{"name":"strength_clip_5"},"link":null},{"localized_name":"use_lora_6","name":"use_lora_6","type":"BOOLEAN","widget":{"name":"use_lora_6"},"link":null},{"localized_name":"lora_6","name":"lora_6","type":"COMBO","widget":{"name":"lora_6"},"link":null},{"localized_name":"strength_model_6","name":"strength_model_6","type":"FLOAT","widget":{"name":"strength_model_6"},"link":null},{"localized_name":"strength_clip_6","name":"strength_clip_6","type":"FLOAT","widget":{"name":"strength_clip_6"},"link":null},{"localized_name":"positive_prompt","name":"positive_prompt","shape":7,"type":"STRING","widget":{"name":"positive_prompt"},"link":null},{"localized_name":"negative_prompt","name":"negative_prompt","shape":7,"type":"STRING","widget":{"name":"negative_prompt"},"link":null},{"localized_name":"clip_set_last_layer_positive","name":"clip_set_last_layer_positive","shape":7,"type":"INT","widget":{"name":"clip_set_last_layer_positive"},"link":null},{"localized_name":"clip_set_last_layer_negative","name":"clip_set_last_layer_negative","shape":7,"type":"INT","widget":{"name":"clip_set_last_layer_negative"},"link":null},{"localized_name":"recipe_slot","name":"recipe_slot","shape":7,"type":"COMBO","widget":{"name":"recipe_slot"},"link":null},{"localized_name":"recipe_save","name":"recipe_save","shape":7,"type":"BOOLEAN","widget":{"name":"recipe_save"},"link":null},{"localized_name":"recipe_use","name":"recipe_use","shape":7,"type":"BOOLEAN","widget":{"name":"recipe_use"},"link":null},{"localized_name":"standard_pipeline","name":"standard_pipeline","shape":7,"type":"BOOLEAN","widget":{"name":"standard_pipeline"},"link":null},{"localized_name":"clip_lora_pos_gain","name":"clip_lora_pos_gain","shape":7,"type":"FLOAT","widget":{"name":"clip_lora_pos_gain"},"link":null},{"localized_name":"clip_lora_neg_gain","name":"clip_lora_neg_gain","shape":7,"type":"FLOAT","widget":{"name":"clip_lora_neg_gain"},"link":null},{"localized_name":"dynamic_pos","name":"dynamic_pos","shape":7,"type":"BOOLEAN","widget":{"name":"dynamic_pos"},"link":null},{"localized_name":"dynamic_neg","name":"dynamic_neg","shape":7,"type":"BOOLEAN","widget":{"name":"dynamic_neg"},"link":null},{"localized_name":"dyn_seed","name":"dyn_seed","shape":7,"type":"INT","widget":{"name":"dyn_seed"},"link":null},{"localized_name":"dynamic_break_freeze","name":"dynamic_break_freeze","shape":7,"type":"BOOLEAN","widget":{"name":"dynamic_break_freeze"},"link":null},{"localized_name":"show_expanded_prompts","name":"show_expanded_prompts","shape":7,"type":"BOOLEAN","widget":{"name":"show_expanded_prompts"},"link":null},{"localized_name":"save_expanded_prompts","name":"save_expanded_prompts","shape":7,"type":"BOOLEAN","widget":{"name":"save_expanded_prompts"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[151]},{"localized_name":"CLIP","name":"CLIP","type":"CLIP","links":null},{"localized_name":"Positive","name":"Positive","type":"CONDITIONING","links":[13,102]},{"localized_name":"Negative","name":"Negative","type":"CONDITIONING","links":[14,103]},{"localized_name":"VAE","name":"VAE","type":"VAE","links":[2,15,31]}],"properties":{"Node name for S&R":"MagicNodesCombiNode"},"widgets_values":[true,"None",true,false,"None",-1,0.2,false,"None",0,0,false,"None",0,0,false,"None",0,0,false,"None",0,0,false,"None",false,false,"(correct human anatomy:1).\n(masterwork:1), very aesthetic, super detailed, newest, masterpiece, amazing quality, highres, sharpen image, best quality.\n25yrs 1woman, necklace, earnings, jewelry, wrist jewelry, ponytail hair, blue hair, blue eyes, yellow kimono with floral print, holds a large pillow, purple pillow, smile, 2 hands.\nFront view, Bedroom","(super-wrong:1), wrong, worst, mistake, (anatomically incorrect human:1), wrong geometry\n(six fingers:1), pixelated,\n(bad hands:1), deformed nails, (fused fingers), (incorrecting hold in hand:1), bad fingers\nugly, (bad anatomy), junior artist, beginner's drawing, bad composition, loose, underpainting, muddy colors, broken symmetry, unclear focal point, blurry details, incorrect perspective, shaky outlines, uneven lines,\n(unsharpen eyes:1), imperfect eyes, skewed eyes, unnatural face, unnatural body, extra limb, missing limbs, distorted eyelashes, misplaced pupils, noisly eyes, long neck,\nobject clipping, clothing clipping, object intersection, unrealistic overlap, geometry intersection,\ntext, typo, signature, watermarks on image, error",-2,-2,"Off",false,false,false,0.92,1,false,false,0,false,false,false]},{"id":11,"type":"ComfyAdaptiveDetailEnhancer25_Easy","pos":[1572.9731847035082,222.56018167321056],"size":[304.44140625,394],"flags":{},"order":22,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":136},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":107},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":106},{"localized_name":"vae","name":"vae","type":"VAE","link":32},{"localized_name":"latent","name":"latent","type":"LATENT","link":37},{"localized_name":"reference_image","name":"reference_image","shape":7,"type":"IMAGE","link":24},{"localized_name":"clip_vision","name":"clip_vision","shape":7,"type":"CLIP_VISION","link":28},{"localized_name":"preset_step","name":"preset_step","type":"COMBO","widget":{"name":"preset_step"},"link":null},{"localized_name":"custom","name":"custom","type":"BOOLEAN","widget":{"name":"custom"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"cfg","name":"cfg","type":"FLOAT","widget":{"name":"cfg"},"link":null},{"localized_name":"denoise","name":"denoise","type":"FLOAT","widget":{"name":"denoise"},"link":null},{"localized_name":"sampler_name","name":"sampler_name","type":"COMBO","widget":{"name":"sampler_name"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"clipseg_text","name":"clipseg_text","shape":7,"type":"STRING","widget":{"name":"clipseg_text"},"link":null}],"outputs":[{"localized_name":"LATENT","name":"LATENT","type":"LATENT","links":[62]},{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[22,66,110]},{"localized_name":"mask_preview","name":"mask_preview","type":"IMAGE","links":[21]}],"properties":{"Node name for S&R":"ComfyAdaptiveDetailEnhancer25_Easy"},"widgets_values":["Step 2",false,0,"fixed",30,7,0.65,"ddim","MGHybrid","hand, feet, face"]},{"id":58,"type":"PatchSageAttention","pos":[629.2665023731814,-313.0620160706534],"size":[270,58],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":151},{"localized_name":"sage_attention","name":"sage_attention","type":"COMBO","widget":{"name":"sage_attention"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[152,153]}],"properties":{"Node name for S&R":"PatchSageAttention"},"widgets_values":["auto_quality"],"color":"#223","bgcolor":"#335"},{"id":19,"type":"Reroute","pos":[1498.7055053565248,550.5312952244669],"size":[75,26],"flags":{},"order":12,"mode":0,"inputs":[{"name":"","type":"*","link":153}],"outputs":[{"name":"","type":"MODEL","links":[136,154]}],"properties":{"showOutputText":false,"horizontal":false},"color":"#223","bgcolor":"#335"}],"links":[[2,2,4,3,0,"VAE"],[13,2,2,14,1,"CONDITIONING"],[14,2,3,14,2,"CONDITIONING"],[15,2,4,14,3,"VAE"],[17,5,0,14,6,"CLIP_VISION"],[19,3,0,14,4,"LATENT"],[21,11,2,15,0,"IMAGE"],[22,11,1,16,0,"IMAGE"],[24,14,1,11,5,"IMAGE"],[28,17,0,11,6,"CLIP_VISION"],[31,2,4,20,0,"*"],[32,20,0,11,3,"VAE"],[37,14,0,11,4,"LATENT"],[40,24,1,25,0,"IMAGE"],[41,24,2,26,0,"IMAGE"],[46,29,2,31,0,"IMAGE"],[48,29,1,7,0,"IMAGE"],[61,24,0,29,4,"LATENT"],[62,11,0,24,4,"LATENT"],[65,24,1,29,5,"IMAGE"],[66,11,1,24,5,"IMAGE"],[85,24,1,41,0,"IMAGE"],[86,41,0,29,1,"CONDITIONING"],[87,41,1,29,2,"CONDITIONING"],[90,41,2,42,0,"IMAGE"],[92,5,0,17,0,"*"],[97,14,1,43,0,"IMAGE"],[102,2,2,43,1,"CONDITIONING"],[103,2,3,43,2,"CONDITIONING"],[106,43,1,11,2,"CONDITIONING"],[107,43,0,11,1,"CONDITIONING"],[110,11,1,44,0,"IMAGE"],[115,44,0,24,1,"CONDITIONING"],[116,44,1,24,2,"CONDITIONING"],[119,43,0,44,1,"CONDITIONING"],[120,43,1,44,2,"CONDITIONING"],[121,44,1,41,2,"CONDITIONING"],[122,44,0,41,1,"CONDITIONING"],[123,44,2,45,0,"IMAGE"],[124,43,2,46,0,"IMAGE"],[125,17,0,47,0,"*"],[126,47,0,24,6,"CLIP_VISION"],[127,47,0,48,0,"*"],[128,48,0,29,6,"CLIP_VISION"],[129,20,0,49,0,"*"],[130,49,0,24,3,"VAE"],[131,49,0,50,0,"*"],[132,50,0,29,3,"VAE"],[133,50,0,41,4,"VAE"],[134,49,0,44,4,"VAE"],[135,20,0,43,4,"VAE"],[136,19,0,11,0,"MODEL"],[138,51,0,24,0,"MODEL"],[139,51,0,52,0,"*"],[140,52,0,29,0,"MODEL"],[141,14,1,53,0,"*"],[142,53,0,33,0,"IMAGE"],[143,4,0,54,0,"*"],[144,54,0,43,3,"CONTROL_NET"],[145,54,0,55,0,"*"],[146,55,0,44,3,"CONTROL_NET"],[147,55,0,56,0,"*"],[148,56,0,41,3,"CONTROL_NET"],[151,2,0,58,0,"MODEL"],[152,58,0,14,0,"MODEL"],[153,58,0,19,0,"*"],[154,19,0,51,0,"*"]],"groups":[{"id":1,"title":"Step1 - Pre-warm","bounding":[985.2202161884722,-368.00948371274734,405.87327906278074,908.4829257340471],"color":"#a1309b","font_size":22,"flags":{}},{"id":2,"title":"Step2 - warming","bounding":[1491.7975585478357,-546.9292924524468,464.03429546870484,1238.2310938486526],"color":"#b58b2a","font_size":22,"flags":{}},{"id":3,"title":"Step3 - Pre-ready","bounding":[2110.501998988056,-553.0885338063888,518.639493048679,1245.9769642733752],"color":"#3f789e","font_size":22,"flags":{}},{"id":4,"title":"Step4 - High-res","bounding":[2836.675702344997,-548.5808647096898,526.8246054854121,1235.0376260654407],"color":"#8A8","font_size":22,"flags":{}},{"id":5,"title":"1 - Pre-warm","bounding":[912.8922171272666,734.9178623674503,505.331679024805,647.6692243308507],"color":"#a1309b","font_size":22,"flags":{}},{"id":6,"title":"2 - warming","bounding":[1478.1593316885921,734.6063030539617,505.331679024805,647.6692243308507],"color":"#b58b2a","font_size":22,"flags":{}},{"id":7,"title":"3 - Pre-ready","bounding":[2040.803574403982,730.9381266791784,683.3155821674318,849.0584001035625],"color":"#3f789e","font_size":22,"flags":{}},{"id":8,"title":"Step4 - High-res","bounding":[2771.933529470263,732.683066906069,700.3585746163794,850.3693995227123],"color":"#8A8","font_size":22,"flags":{}}],"config":{},"extra":{"ds":{"scale":0.520986848192444,"offset":[-849.9895713451045,843.6031894061216]}},"version":0.4}