{
  "id": "2f1c7a84-91d2-4c6e-bb18-7a3e5c0d4411",
  "revision": 1,
  "last_node_id": 45,
  "last_link_id": 31,
  "nodes": [
    {
      "id": 2,
      "type": "CheckpointLoaderSimple",
      "pos": [
        245.0,
        90
      ],
      "size": [
        340,
        120
      ],
      "flags": {},
      "order": 0,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "ckpt_name",
          "name": "ckpt_name",
          "type": "COMBO",
          "widget": {
            "name": "ckpt_name"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "MODEL",
          "name": "MODEL",
          "type": "MODEL",
          "slot_index": 0,
          "links": [
            1
          ]
        },
        {
          "localized_name": "CLIP",
          "name": "CLIP",
          "type": "CLIP",
          "slot_index": 1,
          "links": [
            3,
            4
          ]
        },
        {
          "localized_name": "VAE",
          "name": "VAE",
          "type": "VAE",
          "slot_index": 2,
          "links": [
            2
          ]
        }
      ],
      "title": "1.01 RealVisXL V4.0 Lightning (Baked VAE)",
      "properties": {
        "Node name for S&R": "CheckpointLoaderSimple"
      },
      "widgets_values": [
        "RealVisXL_V4.0_Lightning.safetensors"
      ],
      "widgets_values_named": {
        "ckpt_name": "RealVisXL_V4.0_Lightning.safetensors"
      }
    },
    {
      "id": 3,
      "type": "SeamlessTile",
      "pos": [
        960.0,
        90
      ],
      "size": [
        340,
        160
      ],
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "model",
          "name": "model",
          "type": "MODEL",
          "link": 1
        },
        {
          "localized_name": "tiling",
          "name": "tiling",
          "type": "COMBO",
          "widget": {
            "name": "tiling"
          },
          "link": null
        },
        {
          "localized_name": "copy_model",
          "name": "copy_model",
          "type": "COMBO",
          "widget": {
            "name": "copy_model"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "MODEL",
          "name": "MODEL",
          "type": "MODEL",
          "slot_index": 0,
          "links": [
            5,
            14
          ]
        }
      ],
      "title": "2.01 Circular convolution in both axes",
      "properties": {
        "Node name for S&R": "SeamlessTile"
      },
      "widgets_values": [
        "enable",
        "Make a copy"
      ],
      "widgets_values_named": {
        "tiling": "enable",
        "copy_model": "Make a copy"
      }
    },
    {
      "id": 4,
      "type": "MakeCircularVAE",
      "pos": [
        960.0,
        304.0
      ],
      "size": [
        340,
        160
      ],
      "flags": {},
      "order": 6,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "vae",
          "name": "vae",
          "type": "VAE",
          "link": 2
        },
        {
          "localized_name": "tiling",
          "name": "tiling",
          "type": "COMBO",
          "widget": {
            "name": "tiling"
          },
          "link": null
        },
        {
          "localized_name": "copy_vae",
          "name": "copy_vae",
          "type": "COMBO",
          "widget": {
            "name": "copy_vae"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "VAE",
          "name": "VAE",
          "type": "VAE",
          "slot_index": 0,
          "links": [
            10,
            13,
            19
          ]
        }
      ],
      "title": "2.02 Circular encoder / decoder padding",
      "properties": {
        "Node name for S&R": "MakeCircularVAE"
      },
      "widgets_values": [
        "enable",
        "Make a copy"
      ],
      "widgets_values_named": {
        "tiling": "enable",
        "copy_vae": "Make a copy"
      }
    },
    {
      "id": 5,
      "type": "CLIPTextEncode",
      "pos": [
        1457.23,
        130
      ],
      "size": [
        437.03,
        328
      ],
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "clip",
          "name": "clip",
          "type": "CLIP",
          "link": 3
        },
        {
          "localized_name": "text",
          "name": "text",
          "type": "STRING",
          "widget": {
            "name": "text"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "CONDITIONING",
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "slot_index": 0,
          "links": [
            6,
            15
          ]
        }
      ],
      "title": "3.01 Fabrication brief (bold motifs, open connected ground)",
      "properties": {
        "Node name for S&R": "CLIPTextEncode"
      },
      "widgets_values": [
        "Seamless guipure lace panel, bold floral lace motifs linked by thick connecting bars into one continuous lace web, chunky openwork, rounded holes pierced through the petals and leaves, scalloped organic edges, heavy cutwork lace, wide smooth strands of even thickness, allover coverage continuing across every edge, flat solid black on pure white, maximum contrast, orthographic flat artwork"
      ],
      "widgets_values_named": {
        "text": "Seamless guipure lace panel, bold floral lace motifs linked by thick connecting bars into one continuous lace web, chunky openwork, rounded holes pierced through the petals and leaves, scalloped organic edges, heavy cutwork lace, wide smooth strands of even thickness, allover coverage continuing across every edge, flat solid black on pure white, maximum contrast, orthographic flat artwork"
      }
    },
    {
      "id": 6,
      "type": "CLIPTextEncode",
      "pos": [
        1457.23,
        558.0
      ],
      "size": [
        437.03,
        328
      ],
      "flags": {},
      "order": 5,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "clip",
          "name": "clip",
          "type": "CLIP",
          "link": 4
        },
        {
          "localized_name": "text",
          "name": "text",
          "type": "STRING",
          "widget": {
            "name": "text"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "CONDITIONING",
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "slot_index": 0,
          "links": [
            7,
            16
          ]
        }
      ],
      "title": "3.02 Exclude dense filigree and thin lines",
      "properties": {
        "Node name for S&R": "CLIPTextEncode"
      },
      "widgets_values": [
        "fine thin lines, hairline threads, delicate filigree, tulle net, fine mesh, cobweb, hatching, pencil sketch, outline only, thin wiry stems, large solid filled areas, blank background, tiny scattered specks, speckles, noise, grey, gradient, shading, centered bouquet, symmetrical wreath, regular grid, mockup, garment, fabric folds, border, frame, text, photo"
      ],
      "widgets_values_named": {
        "text": "fine thin lines, hairline threads, delicate filigree, tulle net, fine mesh, cobweb, hatching, pencil sketch, outline only, thin wiry stems, large solid filled areas, blank background, tiny scattered specks, speckles, noise, grey, gradient, shading, centered bouquet, symmetrical wreath, regular grid, mockup, garment, fabric folds, border, frame, text, photo"
      }
    },
    {
      "id": 7,
      "type": "EmptyLatentImage",
      "pos": [
        2060.0,
        598
      ],
      "size": [
        362.67,
        118
      ],
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [
        {
          "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
        }
      ],
      "outputs": [
        {
          "localized_name": "LATENT",
          "name": "LATENT",
          "type": "LATENT",
          "slot_index": 0,
          "links": [
            8
          ]
        }
      ],
      "title": "4.01 One repeat tile at 2048 (4x the motif count)",
      "properties": {
        "Node name for S&R": "EmptyLatentImage"
      },
      "widgets_values": [
        2048,
        2048,
        1
      ],
      "widgets_values_named": {
        "width": 2048,
        "height": 2048,
        "batch_size": 1
      }
    },
    {
      "id": 8,
      "type": "KSampler",
      "pos": [
        2490.0,
        172
      ],
      "size": [
        340,
        266
      ],
      "flags": {},
      "order": 7,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "model",
          "name": "model",
          "type": "MODEL",
          "link": 5
        },
        {
          "localized_name": "positive",
          "name": "positive",
          "type": "CONDITIONING",
          "link": 6
        },
        {
          "localized_name": "negative",
          "name": "negative",
          "type": "CONDITIONING",
          "link": 7
        },
        {
          "localized_name": "latent_image",
          "name": "latent_image",
          "type": "LATENT",
          "link": 8
        },
        {
          "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": "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": "denoise",
          "name": "denoise",
          "type": "FLOAT",
          "widget": {
            "name": "denoise"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "LATENT",
          "name": "LATENT",
          "type": "LATENT",
          "slot_index": 0,
          "links": [
            9
          ]
        }
      ],
      "title": "4.02 Base pass",
      "properties": {
        "Node name for S&R": "KSampler"
      },
      "widgets_values": [
        981732,
        "increment",
        28,
        6,
        "dpmpp_2m",
        "karras",
        1
      ],
      "widgets_values_named": {
        "seed": 981732,
        "control_after_generate": "increment",
        "steps": 28,
        "cfg": 6,
        "sampler_name": "dpmpp_2m",
        "scheduler": "karras",
        "denoise": 1
      }
    },
    {
      "id": 9,
      "type": "VAEDecode",
      "pos": [
        2982.32,
        90
      ],
      "size": [
        340,
        100
      ],
      "flags": {},
      "order": 8,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "samples",
          "name": "samples",
          "type": "LATENT",
          "link": 9
        },
        {
          "localized_name": "vae",
          "name": "vae",
          "type": "VAE",
          "link": 10
        }
      ],
      "outputs": [
        {
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE",
          "slot_index": 0,
          "links": [
            11
          ]
        }
      ],
      "title": "5.01 Decode base tile",
      "properties": {
        "Node name for S&R": "VAEDecode"
      }
    },
    {
      "id": 10,
      "type": "OffsetImage",
      "pos": [
        2982.32,
        248.0
      ],
      "size": [
        340,
        114
      ],
      "flags": {},
      "order": 9,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "pixels",
          "name": "pixels",
          "type": "IMAGE",
          "link": 11
        },
        {
          "localized_name": "x_percent",
          "name": "x_percent",
          "type": "FLOAT",
          "widget": {
            "name": "x_percent"
          },
          "link": null
        },
        {
          "localized_name": "y_percent",
          "name": "y_percent",
          "type": "FLOAT",
          "widget": {
            "name": "y_percent"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE",
          "slot_index": 0,
          "links": [
            12
          ]
        }
      ],
      "title": "5.02 Shift left half right, right half left",
      "properties": {
        "Node name for S&R": "OffsetImage"
      },
      "widgets_values": [
        50,
        50
      ],
      "widgets_values_named": {
        "x_percent": 50,
        "y_percent": 50
      }
    },
    {
      "id": 16,
      "type": "VAEEncode",
      "pos": [
        2982.32,
        420.0
      ],
      "size": [
        340,
        100
      ],
      "flags": {},
      "order": 10,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "pixels",
          "name": "pixels",
          "type": "IMAGE",
          "link": 12
        },
        {
          "localized_name": "vae",
          "name": "vae",
          "type": "VAE",
          "link": 13
        }
      ],
      "outputs": [
        {
          "localized_name": "LATENT",
          "name": "LATENT",
          "type": "LATENT",
          "slot_index": 0,
          "links": [
            17
          ]
        }
      ],
      "title": "5.03 Re-encode the shifted tile",
      "properties": {
        "Node name for S&R": "VAEEncode"
      }
    },
    {
      "id": 17,
      "type": "KSampler",
      "pos": [
        3363.48,
        90
      ],
      "size": [
        375.36,
        266
      ],
      "flags": {},
      "order": 11,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "model",
          "name": "model",
          "type": "MODEL",
          "link": 14
        },
        {
          "localized_name": "positive",
          "name": "positive",
          "type": "CONDITIONING",
          "link": 15
        },
        {
          "localized_name": "negative",
          "name": "negative",
          "type": "CONDITIONING",
          "link": 16
        },
        {
          "localized_name": "latent_image",
          "name": "latent_image",
          "type": "LATENT",
          "link": 17
        },
        {
          "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": "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": "denoise",
          "name": "denoise",
          "type": "FLOAT",
          "widget": {
            "name": "denoise"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "LATENT",
          "name": "LATENT",
          "type": "LATENT",
          "slot_index": 0,
          "links": [
            18
          ]
        }
      ],
      "title": "5.04 Redraw detail where the tile edges used to be",
      "properties": {
        "Node name for S&R": "KSampler"
      },
      "widgets_values": [
        981733,
        "increment",
        28,
        6,
        "dpmpp_2m",
        "karras",
        0.45
      ],
      "widgets_values_named": {
        "seed": 981733,
        "control_after_generate": "increment",
        "steps": 28,
        "cfg": 6,
        "sampler_name": "dpmpp_2m",
        "scheduler": "karras",
        "denoise": 0.45
      }
    },
    {
      "id": 18,
      "type": "VAEDecode",
      "pos": [
        3363.48,
        420.0
      ],
      "size": [
        375.36,
        100
      ],
      "flags": {},
      "order": 12,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "samples",
          "name": "samples",
          "type": "LATENT",
          "link": 18
        },
        {
          "localized_name": "vae",
          "name": "vae",
          "type": "VAE",
          "link": 19
        }
      ],
      "outputs": [
        {
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE",
          "slot_index": 0,
          "links": [
            20,
            21
          ]
        }
      ],
      "title": "5.05 Decode final tile",
      "properties": {
        "Node name for S&R": "VAEDecode"
      }
    },
    {
      "id": 19,
      "type": "ImageToMask",
      "pos": [
        3900.0,
        90
      ],
      "size": [
        340,
        100
      ],
      "flags": {},
      "order": 14,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "image",
          "name": "image",
          "type": "IMAGE",
          "link": 21
        },
        {
          "localized_name": "channel",
          "name": "channel",
          "type": "COMBO",
          "widget": {
            "name": "channel"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "MASK",
          "name": "MASK",
          "type": "MASK",
          "slot_index": 0,
          "links": [
            22
          ]
        }
      ],
      "title": "6.01 Read luminance",
      "properties": {
        "Node name for S&R": "ImageToMask"
      },
      "widgets_values": [
        "red"
      ],
      "widgets_values_named": {
        "channel": "red"
      }
    },
    {
      "id": 20,
      "type": "ThresholdMask",
      "pos": [
        3900.0,
        246.67
      ],
      "size": [
        340,
        100
      ],
      "flags": {},
      "order": 16,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "mask",
          "name": "mask",
          "type": "MASK",
          "link": 22
        },
        {
          "localized_name": "value",
          "name": "value",
          "type": "FLOAT",
          "widget": {
            "name": "value"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "MASK",
          "name": "MASK",
          "type": "MASK",
          "slot_index": 0,
          "links": [
            23
          ]
        }
      ],
      "title": "6.02 Hard black / white cut",
      "properties": {
        "Node name for S&R": "ThresholdMask"
      },
      "widgets_values": [
        0.5
      ],
      "widgets_values_named": {
        "value": 0.5
      }
    },
    {
      "id": 28,
      "type": "GrowMask",
      "pos": [
        3900.0,
        403.33
      ],
      "size": [
        340,
        110
      ],
      "flags": {},
      "order": 18,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "mask",
          "name": "mask",
          "type": "MASK",
          "link": 23
        },
        {
          "localized_name": "expand",
          "name": "expand",
          "type": "INT",
          "widget": {
            "name": "expand"
          },
          "link": null
        },
        {
          "localized_name": "tapered_corners",
          "name": "tapered_corners",
          "type": "BOOLEAN",
          "widget": {
            "name": "tapered_corners"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "MASK",
          "name": "MASK",
          "type": "MASK",
          "slot_index": 0,
          "links": [
            31
          ]
        }
      ],
      "title": "6.03 Thicken strands to a printable width",
      "properties": {
        "Node name for S&R": "GrowMask"
      },
      "widgets_values": [
        2,
        true
      ],
      "widgets_values_named": {
        "expand": 2,
        "tapered_corners": true
      }
    },
    {
      "id": 21,
      "type": "MaskToImage",
      "pos": [
        3900.0,
        570.0
      ],
      "size": [
        340,
        100
      ],
      "flags": {},
      "order": 19,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "mask",
          "name": "mask",
          "type": "MASK",
          "link": 31
        }
      ],
      "outputs": [
        {
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE",
          "slot_index": 0,
          "links": [
            24
          ]
        }
      ],
      "title": "6.04 Silhouette image",
      "properties": {
        "Node name for S&R": "MaskToImage"
      }
    },
    {
      "id": 22,
      "type": "RepeatImageBatch",
      "pos": [
        4372.59,
        90
      ],
      "size": [
        340,
        100
      ],
      "flags": {},
      "order": 13,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "image",
          "name": "image",
          "type": "IMAGE",
          "link": 20
        },
        {
          "localized_name": "amount",
          "name": "amount",
          "type": "INT",
          "widget": {
            "name": "amount"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE",
          "slot_index": 0,
          "links": [
            25
          ]
        }
      ],
      "title": "7.01 How many tiles (total)",
      "properties": {
        "Node name for S&R": "RepeatImageBatch"
      },
      "widgets_values": [
        1
      ],
      "widgets_values_named": {
        "amount": 1
      }
    },
    {
      "id": 23,
      "type": "CR Image Grid Panel",
      "pos": [
        4372.59,
        240.5
      ],
      "size": [
        340,
        254
      ],
      "flags": {},
      "order": 15,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "images",
          "name": "images",
          "type": "IMAGE",
          "link": 25
        },
        {
          "localized_name": "border_thickness",
          "name": "border_thickness",
          "type": "INT",
          "widget": {
            "name": "border_thickness"
          },
          "link": null
        },
        {
          "localized_name": "border_color",
          "name": "border_color",
          "type": "COMBO",
          "widget": {
            "name": "border_color"
          },
          "link": null
        },
        {
          "localized_name": "outline_thickness",
          "name": "outline_thickness",
          "type": "INT",
          "widget": {
            "name": "outline_thickness"
          },
          "link": null
        },
        {
          "localized_name": "outline_color",
          "name": "outline_color",
          "type": "COMBO",
          "widget": {
            "name": "outline_color"
          },
          "link": null
        },
        {
          "localized_name": "max_columns",
          "name": "max_columns",
          "type": "INT",
          "widget": {
            "name": "max_columns"
          },
          "link": null
        },
        {
          "localized_name": "border_color_hex",
          "name": "border_color_hex",
          "shape": 7,
          "type": "STRING",
          "widget": {
            "name": "border_color_hex"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "image",
          "name": "image",
          "type": "IMAGE",
          "slot_index": 0,
          "links": [
            26
          ]
        },
        {
          "localized_name": "show_help",
          "name": "show_help",
          "type": "STRING",
          "slot_index": 1,
          "links": []
        }
      ],
      "title": "7.02 Lay them out (columns)",
      "properties": {
        "Node name for S&R": "CR Image Grid Panel"
      },
      "widgets_values": [
        0,
        "black",
        0,
        "black",
        1,
        "#000000"
      ],
      "widgets_values_named": {
        "border_thickness": 0,
        "border_color": "black",
        "outline_thickness": 0,
        "outline_color": "black",
        "max_columns": 1,
        "border_color_hex": "#000000"
      }
    },
    {
      "id": 24,
      "type": "RepeatImageBatch",
      "pos": [
        4372.59,
        545.0
      ],
      "size": [
        340,
        100
      ],
      "flags": {},
      "order": 20,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "image",
          "name": "image",
          "type": "IMAGE",
          "link": 24
        },
        {
          "localized_name": "amount",
          "name": "amount",
          "type": "INT",
          "widget": {
            "name": "amount"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE",
          "slot_index": 0,
          "links": [
            27
          ]
        }
      ],
      "title": "7.03 How many tiles (total)",
      "properties": {
        "Node name for S&R": "RepeatImageBatch"
      },
      "widgets_values": [
        1
      ],
      "widgets_values_named": {
        "amount": 1
      }
    },
    {
      "id": 25,
      "type": "CR Image Grid Panel",
      "pos": [
        4372.59,
        695.5
      ],
      "size": [
        340,
        254
      ],
      "flags": {},
      "order": 21,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "images",
          "name": "images",
          "type": "IMAGE",
          "link": 27
        },
        {
          "localized_name": "border_thickness",
          "name": "border_thickness",
          "type": "INT",
          "widget": {
            "name": "border_thickness"
          },
          "link": null
        },
        {
          "localized_name": "border_color",
          "name": "border_color",
          "type": "COMBO",
          "widget": {
            "name": "border_color"
          },
          "link": null
        },
        {
          "localized_name": "outline_thickness",
          "name": "outline_thickness",
          "type": "INT",
          "widget": {
            "name": "outline_thickness"
          },
          "link": null
        },
        {
          "localized_name": "outline_color",
          "name": "outline_color",
          "type": "COMBO",
          "widget": {
            "name": "outline_color"
          },
          "link": null
        },
        {
          "localized_name": "max_columns",
          "name": "max_columns",
          "type": "INT",
          "widget": {
            "name": "max_columns"
          },
          "link": null
        },
        {
          "localized_name": "border_color_hex",
          "name": "border_color_hex",
          "shape": 7,
          "type": "STRING",
          "widget": {
            "name": "border_color_hex"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "image",
          "name": "image",
          "type": "IMAGE",
          "slot_index": 0,
          "links": [
            28,
            29
          ]
        },
        {
          "localized_name": "show_help",
          "name": "show_help",
          "type": "STRING",
          "slot_index": 1,
          "links": []
        }
      ],
      "title": "7.04 Lay them out (columns)",
      "properties": {
        "Node name for S&R": "CR Image Grid Panel"
      },
      "widgets_values": [
        0,
        "black",
        0,
        "black",
        1,
        "#000000"
      ],
      "widgets_values_named": {
        "border_thickness": 0,
        "border_color": "black",
        "outline_thickness": 0,
        "outline_color": "black",
        "max_columns": 1,
        "border_color_hex": "#000000"
      }
    },
    {
      "id": 13,
      "type": "SaveImage",
      "pos": [
        4835.68,
        90
      ],
      "size": [
        380,
        420
      ],
      "flags": {},
      "order": 17,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "images",
          "name": "images",
          "type": "IMAGE",
          "link": 26
        },
        {
          "localized_name": "filename_prefix",
          "name": "filename_prefix",
          "type": "STRING",
          "widget": {
            "name": "filename_prefix"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "images",
          "name": "images",
          "type": "IMAGE",
          "links": null
        }
      ],
      "title": "7.01 Save Tile",
      "properties": {
        "Node name for S&R": "SaveImage"
      },
      "widgets_values": [
        "Sketch_B_Tile"
      ],
      "widgets_values_named": {
        "filename_prefix": "Sketch_B_Tile"
      }
    },
    {
      "id": 26,
      "type": "ImageInvert",
      "pos": [
        4372.59,
        1000.0
      ],
      "size": [
        340,
        100
      ],
      "flags": {},
      "order": 23,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "image",
          "name": "image",
          "type": "IMAGE",
          "link": 29
        }
      ],
      "outputs": [
        {
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE",
          "slot_index": 0,
          "links": [
            30
          ]
        }
      ],
      "title": "7.05 Negative space as ink (for tracing)",
      "properties": {
        "Node name for S&R": "ImageInvert"
      }
    },
    {
      "id": 27,
      "type": "SaveImage",
      "pos": [
        4835.68,
        1030.0
      ],
      "size": [
        380,
        420
      ],
      "flags": {},
      "order": 24,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "images",
          "name": "images",
          "type": "IMAGE",
          "link": 30
        },
        {
          "localized_name": "filename_prefix",
          "name": "filename_prefix",
          "type": "STRING",
          "widget": {
            "name": "filename_prefix"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "images",
          "name": "images",
          "type": "IMAGE",
          "links": null
        }
      ],
      "title": "8.03 Save Negative_Space",
      "properties": {
        "Node name for S&R": "SaveImage"
      },
      "widgets_values": [
        "Sketch_B_NegativeSpace"
      ],
      "widgets_values_named": {
        "filename_prefix": "Sketch_B_NegativeSpace"
      }
    },
    {
      "id": 14,
      "type": "SaveImage",
      "pos": [
        4835.68,
        560.0
      ],
      "size": [
        380,
        420
      ],
      "flags": {},
      "order": 22,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "images",
          "name": "images",
          "type": "IMAGE",
          "link": 28
        },
        {
          "localized_name": "filename_prefix",
          "name": "filename_prefix",
          "type": "STRING",
          "widget": {
            "name": "filename_prefix"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "images",
          "name": "images",
          "type": "IMAGE",
          "links": null
        }
      ],
      "title": "7.02 Save Silhouette (3D pattern source)",
      "properties": {
        "Node name for S&R": "SaveImage"
      },
      "widgets_values": [
        "Sketch_B_Silhouette"
      ],
      "widgets_values_named": {
        "filename_prefix": "Sketch_B_Silhouette"
      }
    },
    {
      "id": 45,
      "type": "MarkdownNote",
      "pos": [
        -610,
        90
      ],
      "size": [
        640,
        420
      ],
      "flags": {
        "collapsed": false
      },
      "order": 25,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "properties": {},
      "title": "README",
      "widgets_values": [
        "## What this workflow does\nCreate a repeating, high-contrast lace/openwork silhouette and inspect its repeated structure.\n\n## How to use it\nEdit the fabrication brief, generate the tile, inspect the silhouette and edge/repeat checks, then save the version you want to develop further. This visual design still needs fabrication checks.\n\n## Inspect and save\nFollow the existing saved-output nodes. Change one creative variable at a time so you can understand what changed. Generated views and 3D surfaces are proposals, not proof of real construction."
      ],
      "color": "#343a3a",
      "bgcolor": "#202626"
    },
    {
      "id": 44,
      "type": "MarkdownNote",
      "pos": [
        -610,
        570
      ],
      "size": [
        640,
        640
      ],
      "flags": {
        "collapsed": false
      },
      "order": 2,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "Model Information",
      "properties": {},
      "widgets_values": [
        "# Models you need\n\nThis workflow needs 1 model file. Download each one, then move it from your **Downloads** folder into the folder shown.\n\n## Step 1 - Find your ComfyUI `models` folder\n\nEvery file below goes into a sub-folder of `ComfyUI/models/`. Where that folder is depends on how you installed ComfyUI:\n\n- **ComfyUI Desktop app:** click the menu (top-left) > **Desktop Settings** > **Storage**. Under **Shared Models**, click the folder icon next to the directory marked **Primary**. That opens your `models` folder.\n- **Windows portable (zip) version:** `ComfyUI_windows_portable/ComfyUI/models/`\n- **Manual / git install:** the `models` folder inside the `ComfyUI` folder you cloned.\n\nInside `models` you will find sub-folders such as `unet`, `vae`, `checkpoints` and `loras`. If a sub-folder named below does not exist, create it (the name must match exactly).\n\n## Step 2 - Download each file and move it into place\n\n**1. RealVisXL V4.0 Lightning - the image model (SDXL checkpoint)**\n- Download: [RealVisXL_V4.0_Lightning.safetensors](https://huggingface.co/SG161222/RealVisXL_V4.0_Lightning)\n- Move it to: `ComfyUI/models/checkpoints/`\n- Tip: On the model page open **Files and versions** and download only this file.\n- Licence: CreativeML Open RAIL++-M.\n\nWhen you are done, your folders should look like this:\n\n```text\nComfyUI/\n└── models/\n    └── checkpoints/\n        └── RealVisXL_V4.0_Lightning.safetensors\n```\n\n## Step 3 - Let ComfyUI find the files\n\n1. Restart ComfyUI, or click on the empty canvas and press **R** to refresh the model lists.\n2. Check each loader node in the workflow: the file name shown must match the file you downloaded. If a loader shows a red outline or \"value not in list\", click the file name and pick the file from the list.\n3. If a node itself is red or missing, open the **Manager** and click **Install Missing Custom Nodes**, then restart ComfyUI.\n\n**Licences:** each model has its own licence - read it on the model page before you download. Several models here are for non-commercial use only. Model files are not included with these workflows.\n\n## ComfyUI references\n- [ComfyUI update guide](https://docs.comfy.org/installation/update_comfyui)\n- [ComfyUI runtime issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- [ComfyUI frontend issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- [Workflow template issues](https://github.com/Comfy-Org/workflow_templates/issues)"
      ],
      "widgets_values_named": {
        "text": "# Models you need\n\nThis workflow needs 1 model file. Download each one, then move it from your **Downloads** folder into the folder shown.\n\n## Step 1 - Find your ComfyUI `models` folder\n\nEvery file below goes into a sub-folder of `ComfyUI/models/`. Where that folder is depends on how you installed ComfyUI:\n\n- **ComfyUI Desktop app:** click the menu (top-left) > **Desktop Settings** > **Storage**. Under **Shared Models**, click the folder icon next to the directory marked **Primary**. That opens your `models` folder.\n- **Windows portable (zip) version:** `ComfyUI_windows_portable/ComfyUI/models/`\n- **Manual / git install:** the `models` folder inside the `ComfyUI` folder you cloned.\n\nInside `models` you will find sub-folders such as `unet`, `vae`, `checkpoints` and `loras`. If a sub-folder named below does not exist, create it (the name must match exactly).\n\n## Step 2 - Download each file and move it into place\n\n**1. RealVisXL V4.0 Lightning - the image model (SDXL checkpoint)**\n- Download: [RealVisXL_V4.0_Lightning.safetensors](https://huggingface.co/SG161222/RealVisXL_V4.0_Lightning)\n- Move it to: `ComfyUI/models/checkpoints/`\n- Tip: On the model page open **Files and versions** and download only this file.\n- Licence: CreativeML Open RAIL++-M.\n\nWhen you are done, your folders should look like this:\n\n```text\nComfyUI/\n└── models/\n    └── checkpoints/\n        └── RealVisXL_V4.0_Lightning.safetensors\n```\n\n## Step 3 - Let ComfyUI find the files\n\n1. Restart ComfyUI, or click on the empty canvas and press **R** to refresh the model lists.\n2. Check each loader node in the workflow: the file name shown must match the file you downloaded. If a loader shows a red outline or \"value not in list\", click the file name and pick the file from the list.\n3. If a node itself is red or missing, open the **Manager** and click **Install Missing Custom Nodes**, then restart ComfyUI.\n\n**Licences:** each model has its own licence - read it on the model page before you download. Several models here are for non-commercial use only. Model files are not included with these workflows.\n\n## ComfyUI references\n- [ComfyUI update guide](https://docs.comfy.org/installation/update_comfyui)\n- [ComfyUI runtime issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- [ComfyUI frontend issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- [Workflow template issues](https://github.com/Comfy-Org/workflow_templates/issues)"
      },
      "color": "#373044",
      "bgcolor": "#241f30"
    }
  ],
  "links": [
    [
      1,
      2,
      0,
      3,
      0,
      "MODEL"
    ],
    [
      2,
      2,
      2,
      4,
      0,
      "VAE"
    ],
    [
      3,
      2,
      1,
      5,
      0,
      "CLIP"
    ],
    [
      4,
      2,
      1,
      6,
      0,
      "CLIP"
    ],
    [
      5,
      3,
      0,
      8,
      0,
      "MODEL"
    ],
    [
      6,
      5,
      0,
      8,
      1,
      "CONDITIONING"
    ],
    [
      7,
      6,
      0,
      8,
      2,
      "CONDITIONING"
    ],
    [
      8,
      7,
      0,
      8,
      3,
      "LATENT"
    ],
    [
      9,
      8,
      0,
      9,
      0,
      "LATENT"
    ],
    [
      10,
      4,
      0,
      9,
      1,
      "VAE"
    ],
    [
      11,
      9,
      0,
      10,
      0,
      "IMAGE"
    ],
    [
      12,
      10,
      0,
      16,
      0,
      "IMAGE"
    ],
    [
      13,
      4,
      0,
      16,
      1,
      "VAE"
    ],
    [
      14,
      3,
      0,
      17,
      0,
      "MODEL"
    ],
    [
      15,
      5,
      0,
      17,
      1,
      "CONDITIONING"
    ],
    [
      16,
      6,
      0,
      17,
      2,
      "CONDITIONING"
    ],
    [
      17,
      16,
      0,
      17,
      3,
      "LATENT"
    ],
    [
      18,
      17,
      0,
      18,
      0,
      "LATENT"
    ],
    [
      19,
      4,
      0,
      18,
      1,
      "VAE"
    ],
    [
      20,
      18,
      0,
      22,
      0,
      "IMAGE"
    ],
    [
      21,
      18,
      0,
      19,
      0,
      "IMAGE"
    ],
    [
      22,
      19,
      0,
      20,
      0,
      "MASK"
    ],
    [
      23,
      20,
      0,
      28,
      0,
      "MASK"
    ],
    [
      24,
      21,
      0,
      24,
      0,
      "IMAGE"
    ],
    [
      25,
      22,
      0,
      23,
      0,
      "IMAGE"
    ],
    [
      26,
      23,
      0,
      13,
      0,
      "IMAGE"
    ],
    [
      27,
      24,
      0,
      25,
      0,
      "IMAGE"
    ],
    [
      28,
      25,
      0,
      14,
      0,
      "IMAGE"
    ],
    [
      29,
      25,
      0,
      26,
      0,
      "IMAGE"
    ],
    [
      30,
      26,
      0,
      27,
      0,
      "IMAGE"
    ],
    [
      31,
      28,
      0,
      21,
      0,
      "MASK"
    ]
  ],
  "groups": [
    {
      "id": 1,
      "title": "1. MODEL",
      "bounding": [
        0,
        0,
        830,
        290
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 2,
      "title": "2. SEAMLESS TILE SETUP",
      "bounding": [
        920,
        0,
        420,
        550
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 3,
      "title": "3. FABRICATION PROMPT",
      "bounding": [
        1430,
        0,
        500,
        926
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 4,
      "title": "4. GENERATE 2048 TILE",
      "bounding": [
        2020,
        0,
        850,
        798
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 5,
      "title": "5. OFFSET SHIFT + REFINE",
      "bounding": [
        2960,
        0,
        810,
        620
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 6,
      "title": "6. SILHOUETTE",
      "bounding": [
        3860,
        0,
        420,
        740
      ],
      "color": "#697d65",
      "flags": {}
    },
    {
      "id": 7,
      "title": "7. TILE COUNT",
      "bounding": [
        4330,
        0,
        425.1857142857134,
        1145.2
      ],
      "color": "#697d65",
      "flags": {}
    },
    {
      "id": 8,
      "title": "8. SAVE",
      "bounding": [
        4800,
        0,
        451.3571428571422,
        1522.2714285714285
      ],
      "color": "#3f789e",
      "flags": {}
    }
  ],
  "config": {},
  "extra": {
    "ds": {
      "scale": 0.5785123966942148,
      "offset": [
        -1881.413889664054,
        408.87532252871097
      ]
    },
    "links_render_mode": 2,
    "fashion_library": {
      "task": "Generate a dense 2048 seamless lace tile and a hard black/white silhouette of it for 3D pattern work.",
      "variant": null,
      "status": "quality validation pending",
      "sources": [
        "https://github.com/spinagon/ComfyUI-seamless-tiling",
        "https://huggingface.co/SG161222/RealVisXL_V4.0_Lightning"
      ]
    }
  },
  "version": 0.4
}