Generated banner for Image First Grid Layout
Generated logo for Image First Grid Layout

Image First Grid Layout

Meng ToCommunityCreated by Meng To

  • Skill
  • Guidelines
  • Design and creative
  • MIT
  • Medium risk

From the author

Create an image-led grid design system with full-bleed photography, structural guide lines, anchored content blocks, and restrained technical overlays.
— the description by Meng To

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

The Image First Grid Layout skill provides a structured approach to designing web experiences where photography or cinematic media serves as the primary stage. It focuses on balancing visual impact with functional UI by using full-bleed imagery, precise structural guide lines, and anchored content blocks. The system emphasizes a restrained aesthetic, utilizing tonal vignettes and subtle technical overlays to maintain readability while ensuring the media remains the dominant element of the composition.

What it does

  • Defines a grid-based system for layering content over full-bleed imagery.
  • Provides patterns for anchored content blocks, such as headlines, CTAs, and secondary metrics.
  • Suggests visual treatments like gradient washes and tonal vignettes for text readability.
  • Outlines the use of structural elements like vertical rails and corner markers to organize the layout.
  • Recommends motion patterns like slow drifts and masked reveals to enhance the cinematic feel.
  • Specifies a restrained color palette and typography style to complement photographic backgrounds.

When to use it

  • When designing hero sections that require a dominant, immersive photographic or cinematic visual.
  • When you need to organize content precisely over an image without using standard stacked marketing sections.
  • When building a product-grade interface that requires a balance between aesthetic impact and structural order.
  • When you want to introduce subtle technical atmosphere, such as faint WebGL lines or additive streaks, to a design.

Advantages

  • Ensures the visual media remains the focal point of the user experience.
  • Provides a clear, intentional structure through visible grid rails and markers.
  • Maintains text readability over complex imagery using measured gradient and overlay techniques.
  • Promotes a cohesive, premium aesthetic through restrained color and typography choices.
  • Prevents visual clutter by anchoring content rather than centering it.

Usage examples

“Design a hero section for a luxury architectural firm using the image-first grid layout.”
The agent will generate a layout plan featuring a full-bleed architectural image, vertical guide rails, and bottom-anchored text blocks with a subtle dark gradient for readability.
“How should I arrange secondary content cards over a cinematic background image?”
The agent will advise using lightly framed, transparent, or low-fill cards that sit on the grid without heavy container chrome to avoid obscuring the image.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/mengto/image-first-grid-layout/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip image-first-grid-layout.zip -d .agents/skills

Documentation by Meng To

Image First Grid Layout Skill

Use When

  • Create an image-led grid design system with full-bleed photography, structural guide lines, anchored content blocks, and restrained technical overlays.

Workflow

Scope

  • Apply this as a full design-system direction across hero image treatment, layout grid, overlay framing, typography, supporting cards, and motion.

  • Use it when the experience should feel led by a dominant photographic or cinematic visual field, with content arranged as precise overlay blocks rather than stacked marketing sections.

  • This is not a gallery layout and not plain editorial minimalism. The image should act as the stage, while the grid and content overlays give it product-grade structure.

Visual target

  • Build the page around a large immersive background image or media surface that fills most or all of the viewport.

  • Add dark gradient washes, directional overlays, or tonal vignettes so text remains readable while the image still feels present and expansive.

  • Use visible structural lines such as outer rails, center guides, and small corner markers to impose order on top of the image field.

  • Anchor the main content low in the viewport or along a deliberate edge so the image retains dominance instead of being crowded by centered UI.

  • Keep the palette restrained and image-responsive: use neutrals, whites, smoke grays, and one subtle accent derived from the image or brand when needed.

Implementation guidance

  • Prefer a full-screen or large-stage hero with the background image treated as a foundational layer, not a small card or thumbnail.

  • Overlay the image with a measured grid system using vertical container lines, subtle framing guides, or a split-column scaffold that remains visible but quiet.

  • Place the primary headline and CTA group in one anchored grid column, then use a secondary box for quote, proof, metric, or supporting narrative in another.

  • Supporting cards should feel lightly framed and transparent or low-fill, so they sit on top of the image instead of fighting it with heavy container chrome.

  • Introduce subtle technical atmosphere when useful, such as faint WebGL lines, additive streaks, slow background motion, or minimal parallax over the image plane.

  • Typography should stay clean and premium: confident sans-serif headlines, soft low-contrast body copy, and restrained micro-labels or nav text.

  • Motion should emphasize reveal and drift rather than busy interaction, using masked text entrances, slow line movement, and gentle hover sweeps.

  • Full-bleed landscape or architectural image with layered left-to-right and bottom-up dark gradients for readability.

  • Vertical guide rails with tiny square markers or subtle boundary points running through the stage.

  • Bottom-anchored hero copy paired with a secondary quote, testimonial, or metric box floating in an adjacent grid lane.

  • Sparse top navigation with a light transparent shell so the image remains the main event.

  • Faint WebGL or canvas line field drifting over the image in screen or additive blend mode.

  • Buttons that use translucent dark fills, thin borders, and small moving highlight sweeps instead of loud color blocks.

Tuning knobs

  • Image dominance: let the media occupy nearly the whole experience, then scale content density around it rather than the other way around.

  • Overlay darkness: adjust gradient strength until readability is strong without flattening the image.

  • Grid visibility: make the rails and markers just visible enough to feel intentional, not heavy enough to distract from the photography.

  • Technical atmosphere: add or remove subtle animated lines or glow depending on how product-like versus purely cinematic the page should feel.

  • Content anchoring: shift copy and secondary boxes left, right, or lower in the viewport to preserve strong negative space.

Avoid

  • Turning the image into a decorative background behind a conventional centered SaaS layout.

  • Overfilling the viewport with cards, widgets, or text that erase the image-first composition.

  • Bright multi-color accents that break the calm, cinematic tone of the stage.

  • Heavy solid containers that sever the relationship between the overlays and the underlying image.

  • Treating the grid as invisible; the structure should quietly organize the composition.

Files

demo/index.html

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="neuform-sandboxed-demo" content="1">
  <meta http-equiv="Content-Security-Policy" content="default-src 'none'; connect-src 'self'; frame-src 'self'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; base-uri 'none'; form-action 'none'; object-src 'none'">
  <title>Sandboxed Neuform demo</title>
  <style>
    html, body, iframe { width: 100%; height: 100%; margin: 0; border: 0; }
    body { overflow: hidden; background: #0b0b0b; }
    iframe { display: block; background: white; }
    .error { box-sizing: border-box; min-height: 100%; padding: 32px; color: #fff; font: 16px/1.5 system-ui, sans-serif; }
  </style>
</head>
<body>
  <iframe id="neuform-demo" title="Sandboxed Neuform design demo" sandbox="allow-scripts" referrerpolicy="no-referrer"></iframe>
  <script>
    const encodedHtml = "PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIiBjbGFzcz0ic2Nyb2xsLXNtb290aCI+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIgY29udGVudD0iZGVmYXVsdC1zcmMgJ25vbmUnOyBiYXNlLXVyaSAnbm9uZSc7IGNvbm5lY3Qtc3JjICdub25lJzsgZm9udC1zcmMgZGF0YTogaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbTsgZm9ybS1hY3Rpb24gJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBpbWctc3JjIGJsb2I6OyBtZWRpYS1zcmMgYmxvYjo7IG5hdmlnYXRlLXRvICdub25lJzsgb2JqZWN0LXNyYyAnbm9uZSc7IHNjcmlwdC1zcmMgJ3Vuc2FmZS1pbmxpbmUnIF9fTkVVRk9STV9SVU5USU1FX1NPVVJDRVNfXzsgc3R5bGUtc3JjICd1bnNhZmUtaW5saW5lJyBodHRwczovL2FwaS5mb250c2hhcmUuY29tIGh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb207IHdvcmtlci1zcmMgJ25vbmUnIj4KPHNjcmlwdCBkYXRhLW5ldWZvcm0tYXNzZXQtYm9vdHN0cmFwPgooKCkgPT4gewogIGxldCByZWNlaXZlZCA9IGZhbHNlOwogIGNvbnN0IG9iamVjdFVybHMgPSBbXTsKICBjb25zdCByZXBsYWNlQWxsID0gKHZhbHVlLCByZXBsYWNlbWVudHMpID0+IHsKICAgIGxldCBuZXh0ID0gU3RyaW5nKHZhbHVlIHx8ICIiKTsKICAgIGZvciAoY29uc3QgW2ZpbGUsIG9iamVjdFVybF0gb2YgcmVwbGFjZW1lbnRzKSBuZXh0ID0gbmV4dC5zcGxpdChmaWxlKS5qb2luKG9iamVjdFVybCk7CiAgICByZXR1cm4gbmV4dDsKICB9OwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICBpZiAocmVjZWl2ZWQgfHwgZXZlbnQuc291cmNlICE9PSBwYXJlbnQgfHwgZXZlbnQuZGF0YT8udHlwZSAhPT0gIm5ldWZvcm0tYXNzZXRzLXYxIikgcmV0dXJuOwogICAgcmVjZWl2ZWQgPSB0cnVlOwogICAgY29uc3QgcmVwbGFjZW1lbnRzID0gW107CiAgICBmb3IgKGNvbnN0IGFzc2V0IG9mIGV2ZW50LmRhdGEuYXNzZXRzIHx8IFtdKSB7CiAgICAgIGlmICghYXNzZXQgfHwgdHlwZW9mIGFzc2V0LmZpbGUgIT09ICJzdHJpbmciIHx8IHR5cGVvZiBhc3NldC5iYXNlNjQgIT09ICJzdHJpbmciKSBjb250aW51ZTsKICAgICAgY29uc3QgYmluYXJ5ID0gYXRvYihhc3NldC5iYXNlNjQpOwogICAgICBjb25zdCBieXRlcyA9IFVpbnQ4QXJyYXkuZnJvbShiaW5hcnksIChjaGFyYWN0ZXIpID0+IGNoYXJhY3Rlci5jaGFyQ29kZUF0KDApKTsKICAgICAgY29uc3Qgb2JqZWN0VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbYnl0ZXNdLCB7IHR5cGU6IGFzc2V0LmNvbnRlbnRUeXBlIHx8ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIH0pKTsKICAgICAgb2JqZWN0VXJscy5wdXNoKG9iamVjdFVybCk7CiAgICAgIHJlcGxhY2VtZW50cy5wdXNoKFthc3NldC5maWxlLCBvYmplY3RVcmxdKTsKICAgIH0KICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIqIikpIHsKICAgICAgZm9yIChjb25zdCBuYW1lIG9mIFsic3JjIiwgInBvc3RlciIsICJzcmNzZXQiLCAic3R5bGUiXSkgewogICAgICAgIGNvbnN0IHZhbHVlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUobmFtZSk7CiAgICAgICAgaWYgKHZhbHVlKSBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCByZXBsYWNlQWxsKHZhbHVlLCByZXBsYWNlbWVudHMpKTsKICAgICAgfQogICAgfQogICAgZm9yIChjb25zdCBzdHlsZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpKSB7CiAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gcmVwbGFjZUFsbChzdHlsZS50ZXh0Q29udGVudCwgcmVwbGFjZW1lbnRzKTsKICAgIH0KICB9KTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLCAoKSA9PiB7CiAgICBmb3IgKGNvbnN0IG9iamVjdFVybCBvZiBvYmplY3RVcmxzKSBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVybCk7CiAgfSwgeyBvbmNlOiB0cnVlIH0pOwp9KSgpOwo8L3NjcmlwdD4KCjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4KICAgIDx0aXRsZT5LaXdpIEZsb3JhbCB8IEFydGlzYW4gQm90YW5pY2FsIERlc2lnbjwvdGl0bGU+CiAgICAKICAgIDwhLS0gRm9udHMgLS0+CiAgICA8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20iPgogICAgPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tIiBjcm9zc29yaWdpbj4KICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9SW50ZXI6d2dodEAzMDA7NDAwOzUwMCZmYW1pbHk9UGxheWZhaXIrRGlzcGxheTppdGFsLHdnaHRAMCw0MDA7MCw1MDA7MSw0MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgogICAgCiAgICA8IS0tIFRhaWx3aW5kIENTUyAtLT4KICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9hc3NldHMvcnVudGltZS9ydW50aW1lLWNjYzg4OTRiMzQxOC1ydW50aW1lLmpzIj48L3NjcmlwdD4KICAgIAogICAgPCEtLSBUYWlsd2luZCBDb25maWcgZm9yIHNwZWNpZmljIGZvbnQgZmFtaWxpZXMgLS0+CiAgICA8c2NyaXB0PgogICAgICAgIHRhaWx3aW5kLmNvbmZpZyA9IHsKICAgICAgICAgICAgdGhlbWU6IHsKICAgICAgICAgICAgICAgIGV4dGVuZDogewogICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2FuczogWydJbnRlcicsICdzYW5zLXNlcmlmJ10sCiAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlmOiBbJyJQbGF5ZmFpciBEaXNwbGF5IicsICdzZXJpZiddLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY29sb3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5kOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZzogJyNGNkY1RjInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJyMxQzIwMUMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0ZWQ6ICcjNzY3ODczJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcms6ICcjMUIyNDFBJywKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIDwvc2NyaXB0PgoKICAgIDwhLS0gSWNvbmlmeSAtLT4KICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9hc3NldHMvcnVudGltZS9ydW50aW1lLTE2M2ViZDA4N2NmYy1pY29uaWZ5LWljb24tbWluLmpzIj48L3NjcmlwdD4KCiAgICA8IS0tIEdTQVAgLS0+CiAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vYXNzZXRzL3J1bnRpbWUvcnVudGltZS0wMjcwNTFlZmZhNDctZ3NhcC1taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Fzc2V0cy9ydW50aW1lL3J1bnRpbWUtNjg5Y2E4ZGRhNDRjLXNjcm9sbHRyaWdnZXItbWluLmpzIj48L3NjcmlwdD4KPC9oZWFkPgo8Ym9keSBjbGFzcz0iYmctYnJhbmQtYmcgdGV4dC1icmFuZC10ZXh0IGZvbnQtc2FucyBhbnRpYWxpYXNlZCBvdmVyZmxvdy14LWhpZGRlbiBzZWxlY3Rpb246YmctYnJhbmQtZGFyayBzZWxlY3Rpb246dGV4dC13aGl0ZSI+CgogICAgPCEtLSBDb250YWluZXIgTGluZXMgV3JhcHBlciAtLT4KICAgIDxkaXYgY2xhc3M9InJlbGF0aXZlIG1heC13LVsxNDAwcHhdIG14LWF1dG8gYm9yZGVyLXggYm9yZGVyLWJsYWNrLzUgbWluLWgtc2NyZWVuIGZsZXggZmxleC1jb2wgYmctYnJhbmQtYmciPgogICAgICAgIAogICAgICAgIDwhLS0gQ29ybmVyIE1hcmtlcnMgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgdG9wLTAgLWxlZnQtWzNweF0gdy1bNXB4XSBoLVs1cHhdIGJvcmRlciBib3JkZXItYmxhY2svMTUgYmctYnJhbmQtYmcgei01MCI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgdG9wLTAgLXJpZ2h0LVszcHhdIHctWzVweF0gaC1bNXB4XSBib3JkZXIgYm9yZGVyLWJsYWNrLzE1IGJnLWJyYW5kLWJnIHotNTAiPjwvZGl2PgoKICAgICAgICA8IS0tIElNQUdFIEZJUlNUIEdSSUQgSEVSTyAtLT4KICAgICAgICA8bWFpbiBjbGFzcz0icmVsYXRpdmUgdy1mdWxsIGgtWzk1dmhdIG1pbi1oLVs3MDBweF0gZmxleCBmbGV4LWNvbCBib3JkZXItYiBib3JkZXItYmxhY2svNSBvdmVyZmxvdy1oaWRkZW4iPgogICAgICAgICAgICA8IS0tIEltbWVyc2l2ZSBCYWNrZ3JvdW5kIC0tPgogICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzL3BhZ2UtMDEtNjU2OTVmODAtMjNmOS00NmVlLTg0ODctY2JiNmM5M2NjNDhiLTM4NDB3LndlYnAiIGFsdD0iQm90YW5pY2FsIGVsZWdhbmNlIiBjbGFzcz0iYWJzb2x1dGUgaW5zZXQtMCB3LWZ1bGwgaC1mdWxsIG9iamVjdC1jb3ZlciBvYmplY3QtdG9wIHNjYWxlLTEwNSIgc3R5bGU9InRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7Ij4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gRGFyayBHcmFkaWVudCBXYXNoZXMgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGluc2V0LTAiIHN0eWxlPSJiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDEwLDEyLDEwLDAuOTUpIDAlLCByZ2JhKDEwLDEyLDEwLDAuNCkgNDAlLCByZ2JhKDEwLDEyLDEwLDAuMSkgMTAwJSk7Ij48L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gVmlzaWJsZSBHcmlkIExpbmVzIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSBpbnNldC0wIGZsZXgganVzdGlmeS1iZXR3ZWVuIHB4LTYgbWQ6cHgtMTIgcG9pbnRlci1ldmVudHMtbm9uZSB6LTAgb3BhY2l0eS0yMCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LVsxcHhdIGgtZnVsbCBiZy13aGl0ZSI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LVsxcHhdIGgtZnVsbCBiZy13aGl0ZSBoaWRkZW4gbWQ6YmxvY2siPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy1bMXB4XSBoLWZ1bGwgYmctd2hpdGUgaGlkZGVuIGxnOmJsb2NrIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctWzFweF0gaC1mdWxsIGJnLXdoaXRlIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIEhlYWRlciAoRmxvYXRpbmcgb3ZlciBJbWFnZSkgLS0+CiAgICAgICAgICAgIDxoZWFkZXIgY2xhc3M9InctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNiBweS04IG1kOnB4LTEyIHJlbGF0aXZlIHotMjAgdGV4dC13aGl0ZS85MCI+CiAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPSJoaWRkZW4gbWQ6ZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTggdGV4dC1zbSBmb250LWxpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyI+Q29sbGVjdGlvbnM8L2E+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPlBoaWxvc29waHk8L2E+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPkpvdXJuYWw8L2E+CiAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImFic29sdXRlIGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC14bCBmb250LXNlcmlmIHRyYWNraW5nLXRpZ2h0IHRleHQtd2hpdGUiPgogICAgICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ic29sYXI6bGVhZi1saW5lLWR1b3RvbmUiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgc3Ryb2tlLXdpZHRoPSIxLjUiPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICAgICAgICAgIEtJV0kgRkxPUkFMCiAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTYgdGV4dC1zbSBmb250LWxpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iaGlkZGVuIG1kOmJsb2NrIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPkxvZ2luPC9hPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU2tldW9tb3JwaGljIEJ1dHRvbiAtLT4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0idGV4dC13aGl0ZSBweC01IHB5LTIuNSByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdHJhbnNpdGlvbi1hbGwiIHN0eWxlPSJiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDI1NSwyNTUsMjU1LDAuMTUpIDAlLCByZ2JhKDI1NSwyNTUsMjU1LDAuMDUpIDEwMCUpOyBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgyNTUsMjU1LDI1NSwwLjIpLCBpbnNldCAwIC0xcHggMXB4IHJnYmEoMCwwLDAsMC4zKSwgMCA0cHggMTJweCByZ2JhKDAsMCwwLDAuMik7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xKTsiPgogICAgICAgICAgICAgICAgICAgICAgICBPcmRlciBOb3cKICAgICAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzb2xhcjphcnJvdy1yaWdodC1saW5lYXIiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvaGVhZGVyPgoKICAgICAgICAgICAgPCEtLSBCb3R0b20gQW5jaG9yZWQgR3JpZCBDb250ZW50IC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWxhdGl2ZSBmbGV4LWdyb3cgZmxleCBpdGVtcy1lbmQgcGItMTYgcHgtNiBtZDpweC0xMiB6LTEwIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTEyIGdhcC04IHctZnVsbCBpdGVtcy1lbmQiPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1kOmNvbC1zcGFuLTggbGc6Y29sLXNwYW4tNyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC02IHRleHQtd2hpdGUvNTAgbWItOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249InNvbGFyOnN0YXItZmFsbC1saW5lYXIiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyB0cmFja2luZy13aWRlc3QgdXBwZXJjYXNlIGZvbnQtbm9ybWFsIj5Wb2d1ZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXhzIHRyYWNraW5nLXdpZGVzdCB1cHBlcmNhc2UgZm9udC1ub3JtYWwiPktpbmZvbGs8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyB0cmFja2luZy13aWRlc3QgdXBwZXJjYXNlIGZvbnQtbm9ybWFsIj5DZXJlYWw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9ImZvbnQtc2VyaWYgdGV4dC01eGwgbWQ6dGV4dC03eGwgbGc6dGV4dC1bNS41cmVtXSBsZWFkaW5nLVsxLjA1XSB0cmFja2luZy10aWdodCB0ZXh0LXdoaXRlIHJldmVhbC10ZXh0IGRyb3Atc2hhZG93LWxnIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFydGlzYW4gRmxvcmlzdHJ5IGZvciBNZWFuaW5nZnVsIE1vbWVudHMKICAgICAgICAgICAgICAgICAgICAgICAgPC9oMT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWQ6Y29sLXNwYW4tNCBsZzpjb2wtc3Bhbi00IGxnOmNvbC1zdGFydC05IGZsZXggZmxleC1jb2wganVzdGlmeS1lbmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRyYW5zbHVjZW50IEdyaWQgQm94IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZy13aGl0ZS81IGJhY2tkcm9wLWJsdXItbWQgcC1bMXB4XSByb3VuZGVkLTJ4bCIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHJnYmEoMjU1LDI1NSwyNTUsMC4yKSAwJSwgcmdiYSgyNTUsMjU1LDI1NSwwLjAyKSAxMDAlKTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmctYmxhY2svNDAgcm91bmRlZC1bY2FsYygxcmVtLTFweCldIHAtNiBtZDpwLTggZmxleCBmbGV4LWNvbCBnYXAtNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtc20gdGV4dC13aGl0ZS84MCBmb250LWxpZ2h0IGxlYWRpbmctcmVsYXhlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1cmF0ZWQgYm90YW5pY2FsIGFycmFuZ2VtZW50cyBkZXNpZ25lZCB0byBlbGV2YXRlIHlvdXIgc3BhY2UgYW5kIG9wdGltaXplIGVtb3Rpb25hbCB3ZWxsLWJlaW5nLiBObyBzeW50aGV0aWMgZmlsbGVycy4gUHVyZSBuYXR1cmFsIGJlYXV0eS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ3JvdXAgYm9yZGVyLWIgYm9yZGVyLXdoaXRlLzIwIHBiLTIgdGV4dC13aGl0ZSBob3Zlcjpib3JkZXItd2hpdGUvNjAgdHJhbnNpdGlvbi1jb2xvcnMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1zbSBmb250LW5vcm1hbCI+VmlldyBDb2xsZWN0aW9uczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzb2xhcjphcnJvdy1yaWdodC11cC1saW5lYXIiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgY2xhc3M9Imdyb3VwLWhvdmVyOnRyYW5zbGF0ZS14LTEgZ3JvdXAtaG92ZXI6LXRyYW5zbGF0ZS15LTEgdHJhbnNpdGlvbi10cmFuc2Zvcm0iPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L21haW4+CgogICAgICAgIDwhLS0gU1BMSVQgTEFZT1VUIFNFQ1RJT046IFBoaWxvc29waHkgLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InctZnVsbCBib3JkZXItYiBib3JkZXItYmxhY2svNSBmbGV4IGZsZXgtY29sIG1kOmZsZXgtcm93IGJnLWJyYW5kLWJnIHJlbGF0aXZlIHotMTAiPgogICAgICAgICAgICA8IS0tIExlZnQgUGFuZWw6IFRlY2huaWNhbC9FZGl0b3JpYWwgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InctZnVsbCBtZDp3LTEvMiBwLTggbWQ6cC0xNiBsZzpwLTI0IGJvcmRlci1iIG1kOmJvcmRlci1iLTAgbWQ6Ym9yZGVyLXIgYm9yZGVyLWJsYWNrLzUgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4iPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNCBtYi0xNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctMiBoLTIgYmctYnJhbmQtdGV4dCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXhzIGZvbnQtbW9ubyB0cmFja2luZy13aWRlc3QgdXBwZXJjYXNlIHRleHQtYnJhbmQtbXV0ZWQiPjAxIC8vIEFyY2hpdGVjdHVyZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRleHQtNHhsIG1kOnRleHQtNXhsIGZvbnQtc2VyaWYgdHJhY2tpbmctdGlnaHQgdGV4dC1icmFuZC10ZXh0IG1iLTggcmV2ZWFsLXRleHQgbGVhZGluZy1bMS4xXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIEVuZ2luZWVyZWQgQm90YW5pY2FsIEVsZWdhbmNlLgogICAgICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtYmFzZSB0ZXh0LWJyYW5kLW11dGVkIGZvbnQtbGlnaHQgbGVhZGluZy1yZWxheGVkIG1iLTEyIG1heC13LW1kIj4KICAgICAgICAgICAgICAgICAgICAgICAgRXZlcnkgc3RlbSBpcyBzZWxlY3RlZCB0aHJvdWdoIGEgcmlnb3JvdXMgYm90YW5pY2FsIHByb3RvY29sLCBlbnN1cmluZyBzcGF0aWFsIGhhcm1vbnkgYW5kIHN1c3RhaW5lZCB2aXRhbGl0eS4gV2UgYnJpZGdlIHRoZSBnYXAgYmV0d2VlbiBvcmdhbmljIHVucHJlZGljdGFiaWxpdHkgYW5kIGFyY2hpdGVjdHVyYWwgcHJlY2lzaW9uLgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gU2tldW9tb3JwaGljIFNwZWMgQ2FyZCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InAtWzFweF0gcm91bmRlZC1bMS41cmVtXSBtdC0xMiBtZDptdC0yNCBtYXgtdy1zbSIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHJnYmEoMCwwLDAsMC4wOCkgMCUsIHJnYmEoMCwwLDAsMC4wMSkgMTAwJSk7Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3VuZGVkLVtjYWxjKDEuNXJlbS0xcHgpXSBwLTYgcmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuIiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI0ZGRkZGRiAwJSwgI0Y4RjdGNCAxMDAlKTsgYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IHJnYmEoMjU1LDI1NSwyNTUsMSksIGluc2V0IDAgLTFweCAycHggcmdiYSgwLDAsMCwwLjAzKSwgMCA4cHggMjBweCByZ2JhKDAsMCwwLDAuMDMpOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSGlnaGxpZ2h0IEVkZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIHRvcC0wIGxlZnQtMCB3LWZ1bGwgaC1bMXB4XSBiZy1ncmFkaWVudC10by1yIGZyb20tdHJhbnNwYXJlbnQgdmlhLXdoaXRlIHRvLXRyYW5zcGFyZW50IG9wYWNpdHktODAiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIG1iLTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LXNtIGZvbnQtbm9ybWFsIHRleHQtYnJhbmQtdGV4dCB0cmFja2luZy10aWdodCI+U3VzdGFpbmFibGUgU291cmNpbmc8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzb2xhcjpsZWFmLWxpbmVhciIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBjbGFzcz0idGV4dC1icmFuZC1tdXRlZCI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC14cyB0ZXh0LWJyYW5kLW11dGVkIGZvbnQtbGlnaHQgbGVhZGluZy1yZWxheGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdCBwYXJ0bmVyc2hpcHMgd2l0aCByZWdlbmVyYXRpdmUgbWljcm8tZmFybXMgZ3VhcmFudGVlIHplcm8gc3ludGhldGljIGludGVyZmVyZW5jZSwgbWF4aW1pemluZyB2YXNlIGxpZmUgb3JnYW5pY2FsbHkuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gUmlnaHQgUGFuZWw6IEltbWVyc2l2ZSBNZWRpYSAmIFNwZWNzIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LWZ1bGwgbWQ6dy0xLzIgcmVsYXRpdmUgYmctWyMxNTE5MTRdIG1pbi1oLVs1MDBweF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC04IG1kOnAtMTYgb3ZlcmZsb3ctaGlkZGVuIj4KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMvcGFnZS0wMi03MjQxNDJhYS00NGE2LTQ4ZDMtOWNmMy03NjFlMDBkMDViNzgtMTYwMHcuanBnIiBhbHQ9IkFyY2hpdGVjdHVyYWwgU3RydWN0dXJlIiBjbGFzcz0iYWJzb2x1dGUgaW5zZXQtMCB3LWZ1bGwgaC1mdWxsIG9iamVjdC1jb3ZlciBvcGFjaXR5LTUwIG1peC1ibGVuZC1sdW1pbm9zaXR5Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGluc2V0LTAgYmctZ3JhZGllbnQtdG8tYiBmcm9tLXRyYW5zcGFyZW50IHRvLVsjMTUxOTE0XS84MCI+PC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwhLS0gU3BlYyBUYWJsZSBPdmVybGFpZCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlbGF0aXZlIHotMTAgdy1mdWxsIG1heC13LW1kIGJnLWJsYWNrLzIwIGJhY2tkcm9wLWJsdXItbWQgYm9yZGVyIGJvcmRlci13aGl0ZS8xMCByb3VuZGVkLTJ4bCBwLTgiPgogICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGV4dC1sZyBmb250LXNlcmlmIHRyYWNraW5nLXRpZ2h0IHRleHQtd2hpdGUgbWItNiI+VGVjaG5pY2FsIFBhcmFtZXRlcnM8L2gzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYWNlLXktNCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWVuZCBib3JkZXItYiBib3JkZXItd2hpdGUvMTAgcGItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyBmb250LW1vbm8gdGV4dC13aGl0ZS81MCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0Ij5Tb3VyY2luZyBSYWRpdXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1zbSBmb250LWxpZ2h0IHRleHQtd2hpdGUiPlVuZGVyIDUwIE1pbGVzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtZW5kIGJvcmRlci1iIGJvcmRlci13aGl0ZS8xMCBwYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXhzIGZvbnQtbW9ubyB0ZXh0LXdoaXRlLzUwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QiPlByZXNlcnZhdGlvbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXNtIGZvbnQtbGlnaHQgdGV4dC13aGl0ZSI+Q2xpbWF0ZS1TZWFsZWQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1lbmQgYm9yZGVyLWIgYm9yZGVyLXdoaXRlLzEwIHBiLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQteHMgZm9udC1tb25vIHRleHQtd2hpdGUvNTAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCI+Q3VyYXRpb24gVGltZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXNtIGZvbnQtbGlnaHQgdGV4dC13aGl0ZSI+NDggSG91cnM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPCEtLSBDb2xsZWN0aW9uczogMyBDb2x1bW4gR3JpZCAtLT4KICAgICAgICA8bWFpbiBjbGFzcz0idy1mdWxsIHB0LTI0IHBiLTMyIHB4LTYgbWQ6cHgtMTIgYmctYnJhbmQtYmcgcmVsYXRpdmUgei0xMCBib3JkZXItYiBib3JkZXItYmxhY2svNSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIHRleHQtY2VudGVyIG1iLTE2Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQteHMgZm9udC1tb25vIHRyYWNraW5nLXdpZGVzdCB1cHBlcmNhc2UgdGV4dC1icmFuZC1tdXRlZCBtYi00Ij4wMiAvLyBUaGUgQ29sbGVjdGlvbnM8L2Rpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0iZm9udC1zZXJpZiB0ZXh0LTR4bCBtZDp0ZXh0LTV4bCB0cmFja2luZy10aWdodCB0ZXh0LWJyYW5kLXRleHQgcmV2ZWFsLXRleHQiPgogICAgICAgICAgICAgICAgICAgIEN1cmF0ZWQgQXJyYW5nZW1lbnRzCiAgICAgICAgICAgICAgICA8L2gyPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InctZnVsbCBncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0zIGdhcC02IHRleHQtbGVmdCI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwhLS0gQ2FyZCAxOiBJbWFnZSAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImgtWzUwMHB4XSBtZDpoLVs2MDBweF0gcm91bmRlZC1bMnJlbV0gb3ZlcmZsb3ctaGlkZGVuIHJlbGF0aXZlIGdyb3VwIHNoYWRvdy1zbSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9wYWdlLTAzLTQ3MzQyNTlhLWJhZDctNDIyZi05ODFlLWNlMDFlNzkxODRmMi0xNjAwdy5qcGciIGFsdD0iQWJzdHJhY3QgZmxvcmFsIGludGVycHJldGF0aW9uIiBjbGFzcz0idy1mdWxsIGgtZnVsbCBvYmplY3QtY292ZXIgZ3JvdXAtaG92ZXI6c2NhbGUtMTA1IHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTEwMDAgZWFzZS1vdXQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGJvdHRvbS02IGxlZnQtNiBiZy13aGl0ZS8yMCBiYWNrZHJvcC1ibHVyLW1kIHB4LTQgcHktMiByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci13aGl0ZS8zMCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXdoaXRlIHRleHQteHMgZm9udC1saWdodCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ic29sYXI6c3VuLTItbGluZWFyIiB3aWR0aD0iMTQiIGhlaWdodD0iMTQiPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICAgICAgICAgICAgICBNb3JuaW5nIEhhcnZlc3QKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gQ2FyZCAyOiBIaWdobHkgU2tldW9tb3JwaGljIFVJIENhcmQgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoLVs1MDBweF0gbWQ6aC1bNjAwcHhdIHJvdW5kZWQtWzJyZW1dIHJlbGF0aXZlIHotMTAgcC1bMXB4XSIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHJnYmEoMCwwLDAsMC4xKSAwJSwgcmdiYSgwLDAsMCwwLjAxKSAxMDAlKTsiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gTGF5ZXJlZCBkZXB0aCBjb250YWluZXIgLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm91bmRlZC1bY2FsYygycmVtLTFweCldIGgtZnVsbCBwLTggZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gcmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuIiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI0ZGRkZGRiAwJSwgI0Y1RjRGMSAxMDAlKTsgYm94LXNoYWRvdzogaW5zZXQgMCAycHggM3B4IHJnYmEoMjU1LDI1NSwyNTUsMSksIGluc2V0IDAgLTJweCA2cHggcmdiYSgwLDAsMCwwLjAzKSwgMCAxMHB4IDMwcHggcmdiYSgwLDAsMCwwLjA1KTsiPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTa2V1b21vcnBoaWMgVG9wIEhpZ2hsaWdodCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHctZnVsbCBoLVsxcHhdIGJnLWdyYWRpZW50LXRvLXIgZnJvbS10cmFuc3BhcmVudCB2aWEtd2hpdGUgdG8tdHJhbnNwYXJlbnQgb3BhY2l0eS04MCI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgbWItOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy0xMiBoLTEyIHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJyYW5kLWRhcmsiIHN0eWxlPSJiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjRjZGNUYyIDAlLCAjRUJFOUU0IDEwMCUpOyBib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgyNTUsMjU1LDI1NSwwLjkpLCAwIDJweCA0cHggcmdiYSgwLDAsMCwwLjA1KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjAzKTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249InNvbGFyOmJveC1saW5lYXIiIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMiI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idy0xMCBoLTEwIHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJyYW5kLW11dGVkIGhvdmVyOnRleHQtcmVkLTUwMCB0cmFuc2l0aW9uLWNvbG9ycyIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsICNGRkZGRkYgMCUsICNGNkY1RjIgMTAwJSk7IGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDI1NSwyNTUsMjU1LDEpLCAwIDJweCA1cHggcmdiYSgwLDAsMCwwLjA0KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjAyKTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249InNvbGFyOmhlYXJ0LWxpbmVhciIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIj48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0ZXh0LTJ4bCBmb250LXNlcmlmIHRyYWNraW5nLXRpZ2h0IHRleHQtYnJhbmQtdGV4dCBtYi0zIGRyb3Atc2hhZG93LVswXzFweF8xcHhfcmdiYSgyNTUsMjU1LDI1NSwxKV0iPlRoZSBFdGhlcmVhbCBCb3VxdWV0PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXNtIHRleHQtYnJhbmQtbXV0ZWQgZm9udC1saWdodCBsZWFkaW5nLXJlbGF4ZWQiPlJpY2ggaW4gdGV4dHVyYWwgZGl2ZXJzaXR5IGZvciBzcGF0aWFsIGJhbGFuY2UuIEVuZ2luZWVyZWQgdG8gZXZvbHZlIGdyYWNlZnVsbHkgb3ZlciBpdHMgbGlmZXNwYW4uPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYWNlLXktNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1lbmQgYm9yZGVyLWIgYm9yZGVyLWJsYWNrLzUgcGItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQteHMgZm9udC1tb25vIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QgdGV4dC1icmFuZC1tdXRlZC83MCI+TG9uZ2V2aXR5PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXNtIGZvbnQtbGlnaHQgdGV4dC1icmFuZC10ZXh0IGRyb3Atc2hhZG93LVswXzFweF8wX3JnYmEoMjU1LDI1NSwyNTUsMC44KV0iPjEwLTE0IGRheXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWVuZCBib3JkZXItYiBib3JkZXItYmxhY2svNSBwYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyBmb250LW1vbm8gdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCB0ZXh0LWJyYW5kLW11dGVkLzcwIj5TY2VudCBQcm9maWxlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXNtIGZvbnQtbGlnaHQgdGV4dC1icmFuZC10ZXh0IGRyb3Atc2hhZG93LVswXzFweF8wX3JnYmEoMjU1LDI1NSwyNTUsMC44KV0iPlN1YnRsZSBKYXNtaW5lPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1lbmQgYm9yZGVyLWIgYm9yZGVyLWJsYWNrLzUgcGItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQteHMgZm9udC1tb25vIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QgdGV4dC1icmFuZC1tdXRlZC83MCI+VmFzZSBMaWZlIFNldHVwPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXNtIGZvbnQtbGlnaHQgdGV4dC1icmFuZC10ZXh0IGRyb3Atc2hhZG93LVswXzFweF8wX3JnYmEoMjU1LDI1NSwyNTUsMC44KV0iPlByZS10cmltbWVkPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBDYXJkIDM6IEltYWdlIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaC1bNTAwcHhdIG1kOmgtWzYwMHB4XSByb3VuZGVkLVsycmVtXSBvdmVyZmxvdy1oaWRkZW4gcmVsYXRpdmUgZ3JvdXAgc2hhZG93LXNtIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzL3BhZ2UtMDQtMDA1NjAwZTUtZjZhYi00ZTU5LWJjODYtZWFlYjAyNzk3ZGZhLTE2MDB3LmpwZyIgYWx0PSJCb3RhbmljYWwgYXJjaGl0ZWN0dXJlIiBjbGFzcz0idy1mdWxsIGgtZnVsbCBvYmplY3QtY292ZXIgZ3JvdXAtaG92ZXI6c2NhbGUtMTA1IHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTEwMDAgZWFzZS1vdXQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGluc2V0LTAiIHN0eWxlPSJiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDI3LDM2LDI2LDAuOCkgMCUsIHRyYW5zcGFyZW50IDYwJSk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSBib3R0b20tOCBsZWZ0LTggcmlnaHQtOCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXdoaXRlIHRleHQteGwgZm9udC1zZXJpZiB0cmFja2luZy10aWdodCBsZWFkaW5nLXNudWciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGxldGUgbmF0dXJhbCBlbGVnYW5jZSBzb3VyY2VkIGRpcmVjdGx5IGZyb20gc3VzdGFpbmFibGUgZ3Jvd2Vycy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L21haW4+CgogICAgICAgIDwhLS0gUXVvdGUgU2VjdGlvbiAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0idy1mdWxsIGJnLXdoaXRlIHB5LTMyIG1kOnB5LTQ4IGJvcmRlci1iIGJvcmRlci1ibGFjay81IHJlbGF0aXZlIG92ZXJmbG93LWhpZGRlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGluc2V0LTAgZmxleCBqdXN0aWZ5LWNlbnRlciBwb2ludGVyLWV2ZW50cy1ub25lIG9wYWNpdHktWzAuMDNdIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctWzFweF0gaC1mdWxsIGJnLWJsYWNrIG14LTEwIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctWzFweF0gaC1mdWxsIGJnLWJsYWNrIG14LTEwIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYXgtdy00eGwgbXgtYXV0byBweC02IHRleHQtY2VudGVyIHJlbGF0aXZlIHotMTAiPgogICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzb2xhcjpxdW90ZS1yaWdodC1saW5lYXIiIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgY2xhc3M9InRleHQtYnJhbmQtbXV0ZWQvMjAgbWItOCBteC1hdXRvIGJsb2NrIj48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0iZm9udC1zZXJpZiB0ZXh0LTN4bCBtZDp0ZXh0LTV4bCBsZzp0ZXh0LTZ4bCB0cmFja2luZy10aWdodCBsZWFkaW5nLXRpZ2h0IHRleHQtYnJhbmQtdGV4dCByZXZlYWwtdGV4dCI+CiAgICAgICAgICAgICAgICAgICAgIkEgc3lzdGVtaWMgcHJvdG9jb2wgZW5naW5lZXJlZCB0byByZXN0b3JlIHNwYXRpYWwgaGFybW9ueSBhbmQgZGVsaXZlciBzdXN0YWluZWQgdml0YWxpdHkgd2l0aG91dCBzeW50aGV0aWMgY29tcHJvbWlzZS4iCiAgICAgICAgICAgICAgICA8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDwhLS0gU2xpZGVyIFNlY3Rpb24gLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InctZnVsbCBwdC0yNCBwYi0zMiBweC02IG1kOnB4LTEyIGJnLWJyYW5kLWJnIHJlbGF0aXZlIGJvcmRlci1iIGJvcmRlci1ibGFjay81Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1lbmQganVzdGlmeS1iZXR3ZWVuIG1iLTEyIj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC14cyBmb250LW1vbm8gdHJhY2tpbmctd2lkZXN0IHVwcGVyY2FzZSB0ZXh0LWJyYW5kLW11dGVkIG1iLTIiPjAzIC8vIENvbXBvbmVudHM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9ImZvbnQtc2VyaWYgdGV4dC0zeGwgbWQ6dGV4dC00eGwgdHJhY2tpbmctdGlnaHQgdGV4dC1icmFuZC10ZXh0Ij5Db3JlIEJvdGFuaWNhbHM8L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoaWRkZW4gbWQ6ZmxleCBnYXAtMyI+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idy0xMiBoLTEyIHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJyYW5kLXRleHQgdHJhbnNpdGlvbi1hbGwgaG92ZXI6LXRyYW5zbGF0ZS15LTAuNSIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsICNGRkZGRkYgMCUsICNGNkY1RjIgMTAwJSk7IGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDI1NSwyNTUsMjU1LDEpLCAwIDRweCAxMHB4IHJnYmEoMCwwLDAsMC4wNSk7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4wMyk7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzb2xhcjphcnJvdy1sZWZ0LWxpbmVhciIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIj48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ3LTEyIGgtMTIgcm91bmRlZC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYnJhbmQtdGV4dCB0cmFuc2l0aW9uLWFsbCBob3ZlcjotdHJhbnNsYXRlLXktMC41IiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI0ZGRkZGRiAwJSwgI0Y2RjVGMiAxMDAlKTsgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMjU1LDI1NSwyNTUsMSksIDAgNHB4IDEwcHggcmdiYSgwLDAsMCwwLjA1KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjAzKTsiPgogICAgICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249InNvbGFyOmFycm93LXJpZ2h0LWxpbmVhciIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIj48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggZ2FwLTYgb3ZlcmZsb3cteC1hdXRvIHBiLTggc25hcC14IHNuYXAtbWFuZGF0b3J5IHNjcm9sbGJhci1oaWRlIiBzdHlsZT0ic2Nyb2xsYmFyLXdpZHRoOiBub25lOyI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pbi13LVszMDBweF0gbWQ6bWluLXctWzM4MHB4XSBzbmFwLXN0YXJ0IGZsZXggZmxleC1jb2wgZ2FwLTUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFzcGVjdC1bNC81XSByb3VuZGVkLVsycmVtXSBvdmVyZmxvdy1oaWRkZW4gcC0yIiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI0ZGRkZGRiAwJSwgI0Y4RjdGNCAxMDAlKTsgYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IHJnYmEoMjU1LDI1NSwyNTUsMSksIDAgOHB4IDIwcHggcmdiYSgwLDAsMCwwLjA0KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjAyKTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9wYWdlLTAyLTcyNDE0MmFhLTQ0YTYtNDhkMy05Y2YzLTc2MWUwMGQwNWI3OC0xNjAwdy5qcGciIGFsdD0iU3RydWN0dXJlIiBjbGFzcz0idy1mdWxsIGgtZnVsbCBvYmplY3QtY292ZXIgcm91bmRlZC1bMS41cmVtXSI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHgtMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1iYXNlIGZvbnQtbm9ybWFsIHRleHQtYnJhbmQtdGV4dCB0cmFja2luZy10aWdodCI+U3RydWN0dXJhbCBTdGVtczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtYnJhbmQtbXV0ZWQgbXQtMSBmb250LWxpZ2h0Ij5Gb3VuZGF0aW9uIEFyY2hpdGVjdHVyZTwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pbi13LVszMDBweF0gbWQ6bWluLXctWzM4MHB4XSBzbmFwLXN0YXJ0IGZsZXggZmxleC1jb2wgZ2FwLTUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFzcGVjdC1bNC81XSByb3VuZGVkLVsycmVtXSBvdmVyZmxvdy1oaWRkZW4gcC0yIiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI0ZGRkZGRiAwJSwgI0Y4RjdGNCAxMDAlKTsgYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IHJnYmEoMjU1LDI1NSwyNTUsMSksIDAgOHB4IDIwcHggcmdiYSgwLDAsMCwwLjA0KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjAyKTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9wYWdlLTA0LTAwNTYwMGU1LWY2YWItNGU1OS1iYzg2LWVhZWIwMjc5N2RmYS0xNjAwdy5qcGciIGFsdD0iTHVzaCIgY2xhc3M9InctZnVsbCBoLWZ1bGwgb2JqZWN0LWNvdmVyIHJvdW5kZWQtWzEuNXJlbV0iPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InB4LTIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtYmFzZSBmb250LW5vcm1hbCB0ZXh0LWJyYW5kLXRleHQgdHJhY2tpbmctdGlnaHQiPlZlcmRhbnQgRm9saWFnZTwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtYnJhbmQtbXV0ZWQgbXQtMSBmb250LWxpZ2h0Ij5TcGF0aWFsIFZvbHVtZTwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pbi13LVszMDBweF0gbWQ6bWluLXctWzM4MHB4XSBzbmFwLXN0YXJ0IGZsZXggZmxleC1jb2wgZ2FwLTUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFzcGVjdC1bNC81XSByb3VuZGVkLVsycmVtXSBvdmVyZmxvdy1oaWRkZW4gcC0yIiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI0ZGRkZGRiAwJSwgI0Y4RjdGNCAxMDAlKTsgYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IHJnYmEoMjU1LDI1NSwyNTUsMSksIDAgOHB4IDIwcHggcmdiYSgwLDAsMCwwLjA0KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjAyKTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9wYWdlLTA1LWU1MzQzNTRkLWM1ZjItNDM5OS1hMWQ5LTJmNTAzMzhlOGM0Ny0xNjAwdy5qcGciIGFsdD0iRmxvdyIgY2xhc3M9InctZnVsbCBoLWZ1bGwgb2JqZWN0LWNvdmVyIHJvdW5kZWQtWzEuNXJlbV0iPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InB4LTIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtYmFzZSBmb250LW5vcm1hbCB0ZXh0LWJyYW5kLXRleHQgdHJhY2tpbmctdGlnaHQiPlN0YXRlbWVudCBCbG9vbXM8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC14cyB0ZXh0LWJyYW5kLW11dGVkIG10LTEgZm9udC1saWdodCI+VmlzdWFsIEZvY2FsIFBvaW50PC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pbi13LVszMDBweF0gbWQ6bWluLXctWzM4MHB4XSBzbmFwLXN0YXJ0IGZsZXggZmxleC1jb2wgZ2FwLTUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFzcGVjdC1bNC81XSByb3VuZGVkLVsycmVtXSBvdmVyZmxvdy1oaWRkZW4gcC0yIiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI0ZGRkZGRiAwJSwgI0Y4RjdGNCAxMDAlKTsgYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IHJnYmEoMjU1LDI1NSwyNTUsMSksIDAgOHB4IDIwcHggcmdiYSgwLDAsMCwwLjA0KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjAyKTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9wYWdlLTA2LWZiNjQxNWZkLWJmNGQtNGNjZi04ZTlkLTdhYjQ0NWU5OTIwNy0xNjAwdy5qcGciIGFsdD0iQWNjZW50IiBjbGFzcz0idy1mdWxsIGgtZnVsbCBvYmplY3QtY292ZXIgcm91bmRlZC1bMS41cmVtXSI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHgtMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1iYXNlIGZvbnQtbm9ybWFsIHRleHQtYnJhbmQtdGV4dCB0cmFja2luZy10aWdodCI+VGV4dHVyYWwgQWNjZW50czwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtYnJhbmQtbXV0ZWQgbXQtMSBmb250LWxpZ2h0Ij5NaWNybyBEZXRhaWxzPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDwhLS0gTFVYVVJJT1VTIEZPT1RFUiAtLT4KICAgICAgICA8Zm9vdGVyIGNsYXNzPSJ3LWZ1bGwgYmctYnJhbmQtZGFyayB0ZXh0LXdoaXRlIHB0LTI0IHBiLTEyIHB4LTYgbWQ6cHgtMTIgcmVsYXRpdmUgZmxleC1ncm93IGZsZXggZmxleC1jb2wganVzdGlmeS1lbmQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGdhcC0xNiBtYi0yNCI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LTJ4bCBmb250LXNlcmlmIHRyYWNraW5nLXRpZ2h0IHRleHQtd2hpdGUgbWItOCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ic29sYXI6bGVhZi1saW5lLWR1b3RvbmUiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCIgc3Ryb2tlLXdpZHRoPSIxLjUiPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICAgICAgICAgICAgICBLSVdJIEZMT1JBTAogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1zbSB0ZXh0LXdoaXRlLzUwIGZvbnQtbGlnaHQgbWF4LXctc20gbGVhZGluZy1yZWxheGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgUmVkZWZpbmluZyBib3RhbmljYWwgaW50ZWdyYXRpb24gZm9yIG1vZGVybiBzcGFjZXMuIEVuZ2luZWVyZWQgbmF0dXJlIHdpdGhvdXQgY29tcHJvbWlzZS4KICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBncmlkLWNvbHMtMiBnYXAtOCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LXhzIGZvbnQtbW9ubyB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IHRleHQtd2hpdGUvNDAgbWItNiI+SW5kZXg8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InNwYWNlLXktNCB0ZXh0LXNtIGZvbnQtbGlnaHQgdGV4dC13aGl0ZS84MCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyIgY2xhc3M9ImhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPkNvbGxlY3Rpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyIgY2xhc3M9ImhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPlBoaWxvc29waHk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIiBjbGFzcz0iaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyI+U291cmNpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIiBjbGFzcz0iaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyI+Sm91cm5hbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC14cyBmb250LW1vbm8gdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCB0ZXh0LXdoaXRlLzQwIG1iLTYiPkNvbm5lY3Q8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InNwYWNlLXktNCB0ZXh0LXNtIGZvbnQtbGlnaHQgdGV4dC13aGl0ZS84MCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyIgY2xhc3M9ImhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPkluc3RhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiIGNsYXNzPSJob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIj5QaW50ZXJlc3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIiBjbGFzcz0iaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyI+Q29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBmbGV4LWNvbCBtZDpmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHB0LTggYm9yZGVyLXQgYm9yZGVyLXdoaXRlLzEwIHRleHQteHMgZm9udC1tb25vIHRleHQtd2hpdGUvMzAiPgogICAgICAgICAgICAgICAgPHA+JmNvcHk7IDIwMjQgS2l3aSBGbG9yYWwgU3lzdGVtLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggZ2FwLTYgbXQtNCBtZDptdC0wIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iaG92ZXI6dGV4dC13aGl0ZS82MCB0cmFuc2l0aW9uLWNvbG9ycyI+UHJpdmFjeTwvYT4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iaG92ZXI6dGV4dC13aGl0ZS82MCB0cmFuc2l0aW9uLWNvbG9ycyI+VGVybXM8L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb290ZXI+CgogICAgICAgIDwhLS0gQm90dG9tIENvcm5lciBNYXJrZXJzIC0tPgogICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGJvdHRvbS0wIC1sZWZ0LVszcHhdIHctWzVweF0gaC1bNXB4XSBib3JkZXIgYm9yZGVyLWJsYWNrLzE1IGJnLWJyYW5kLWJnIHotNTAiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGJvdHRvbS0wIC1yaWdodC1bM3B4XSB3LVs1cHhdIGgtWzVweF0gYm9yZGVyIGJvcmRlci1ibGFjay8xNSBiZy1icmFuZC1iZyB6LTUwIj48L2Rpdj4KICAgIDwvZGl2PgoKICAgIDwhLS0gV2ViR0wgJiBHU0FQIEFuaW1hdGlvbiBMb2dpYyAtLT4KICAgIDxzY3JpcHQ+CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsICgpID0+IHsKICAgICAgICAgICAgZ3NhcC5yZWdpc3RlclBsdWdpbihTY3JvbGxUcmlnZ2VyKTsKCiAgICAgICAgICAgIGNvbnN0IHNldHVwVGV4dFJldmVhbCA9ICgpID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHJldmVhbEVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnJldmVhbC10ZXh0Jyk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHJldmVhbEVsZW1lbnRzLmZvckVhY2goZWwgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHQgPSBlbC5pbm5lclRleHQ7CiAgICAgICAgICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gJyc7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd29yZHMgPSB0ZXh0LnNwbGl0KCcgJyk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgd29yZHMuZm9yRWFjaCh3b3JkID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFza0RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgbWFza0Rpdi5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1mbGV4JzsKICAgICAgICAgICAgICAgICAgICAgICAgbWFza0Rpdi5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nOwogICAgICAgICAgICAgICAgICAgICAgICBtYXNrRGl2LnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAndG9wJzsKICAgICAgICAgICAgICAgICAgICAgICAgbWFza0Rpdi5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMC4yNWVtJzsKICAgICAgICAgICAgICAgICAgICAgICAgbWFza0Rpdi5zdHlsZS5wYWRkaW5nQm90dG9tID0gJzAuMWVtJzsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlubmVyU3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJTcGFuLmlubmVyVGV4dCA9IHdvcmQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyU3Bhbi5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7CiAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyU3Bhbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWSgxMTAlKSByb3RhdGUoNGRlZyknOwogICAgICAgICAgICAgICAgICAgICAgICBpbm5lclNwYW4uc3R5bGUudHJhbnNmb3JtT3JpZ2luID0gJ3RvcCBsZWZ0JzsKICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJTcGFuLmNsYXNzTGlzdC5hZGQoJ3JldmVhbC13b3JkLWlubmVyJyk7CgogICAgICAgICAgICAgICAgICAgICAgICBtYXNrRGl2LmFwcGVuZENoaWxkKGlubmVyU3Bhbik7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsLmFwcGVuZENoaWxkKG1hc2tEaXYpOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICBnc2FwLnRvKGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZXZlYWwtd29yZC1pbm5lcicpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHk6ICcwJScsCiAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDEuMiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcjogMC4wMywKICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogJ3Bvd2VyNC5vdXQnLAogICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUcmlnZ2VyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyOiBlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiAndG9wIDkwJScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVBY3Rpb25zOiAncGxheSBub25lIG5vbmUgcmV2ZXJzZScKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICBzZXRUaW1lb3V0KHNldHVwVGV4dFJldmVhbCwgMTAwKTsKICAgICAgICB9KTsKICAgIDwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K";
    const assetFiles = ["assets/page-01-65695f80-23f9-46ee-8487-cbb6c93cc48b-3840w.webp","assets/page-02-724142aa-44a6-48d3-9cf3-761e00d05b78-1600w.jpg","assets/page-03-4734259a-bad7-422f-981e-ce01e79184f2-1600w.jpg","assets/page-04-005600e5-f6ab-4e59-bc86-eaeb02797dfa-1600w.jpg","assets/page-05-e534354d-c5f2-4399-a1d9-2f50338e8c47-1600w.jpg","assets/page-06-fb6415fd-bf4d-4ccf-8e9d-7ab445e99207-1600w.jpg"];
    const runtimeFiles = ["../../../../assets/runtime/runtime-027051effa47-gsap-min.js","../../../../assets/runtime/runtime-163ebd087cfc-iconify-icon-min.js","../../../../assets/runtime/runtime-689ca8dda44c-scrolltrigger-min.js","../../../../assets/runtime/runtime-ccc8894b3418-runtime.js"];
    const frame = document.getElementById("neuform-demo");
    const decodeBytes = (value) => Uint8Array.from(atob(value), (character) => character.charCodeAt(0));
    const decode = (value) => new TextDecoder().decode(decodeBytes(value));
    const encodeBytes = (bytes) => {
      let binary = "";
      for (let index = 0; index < bytes.length; index += 32768) {
        binary += String.fromCharCode(...bytes.subarray(index, index + 32768));
      }
      return btoa(binary);
    };
    const mediaTypes = {
      avif: "image/avif",
      gif: "image/gif",
      jpg: "image/jpeg",
      jpeg: "image/jpeg",
      mp4: "video/mp4",
      png: "image/png",
      webm: "video/webm",
      webp: "image/webp"
    };
    const loadAsset = async (file) => {
      const response = await fetch(file, { cache: "no-store", credentials: "omit", redirect: "error" });
      if (!response.ok) throw new Error("Could not load local demo asset: " + file);
      const extension = file.split(".").pop().toLowerCase();
      const contentType = mediaTypes[extension] || "application/octet-stream";
      const bytes = new Uint8Array(await response.arrayBuffer());
      return { base64: encodeBytes(bytes), contentType, file, kind: "asset" };
    };
    Promise.allSettled(assetFiles.map(loadAsset)).then((results) => {
      const runtimeSources = runtimeFiles.map((file) => new URL(file, location.href).href).join(" ");
      const source = decode(encodedHtml).replace("__NEUFORM_RUNTIME_SOURCES__", runtimeSources);
      const mediaAssets = [];
      for (const result of results) {
        if (result.status !== "fulfilled") continue;
        mediaAssets.push(result.value);
      }
      frame.addEventListener("load", () => {
        frame.contentWindow.postMessage({ type: "neuform-assets-v1", assets: mediaAssets }, "*");
      }, { once: true });
      frame.srcdoc = source;
    }).catch((error) => {
      document.body.innerHTML = '<div class="error">Unable to load this sandboxed demo.</div>';
      console.error(error);
    });
  </script>
</body>
</html>

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

What our scanner noticed· Medium risk

  • Large base64-encoded blobs

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
Meng To
Publisher
Meng To (Community)
Source
MengTo/Skills · agent-skills/web-design/image-first-grid-layout · commit 5ea1661
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Meng To.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download image-first-grid-layout.zip