Corner Lasers
Meng ToCommunityCreated by Meng To
- Skill
- Content generator
- Design and creative
- MIT
- Medium risk
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured approach to designing corner-anchored laser effects. It focuses on creating thin, sharp beams that originate from a single, high-intensity emitter point at a corner or edge. By emphasizing volumetric lighting, bloom, and color-coordinated atmospheric glow, the skill ensures that the resulting visual is immersive and elegant rather than flat or chaotic.
What it does
- Defines the geometric structure for corner-anchored laser beams.
- Provides guidance on achieving a white-hot emitter hotspot with surrounding bloom.
- Instructs on integrating atmospheric glow and fog for spatial depth.
- Offers tuning parameters for beam thickness, count, and color palette alignment.
- Establishes best practices for restrained, subtle motion effects.
When to use it
- When you need to create a cinematic laser effect anchored to a corner or edge.
- When designing portal seams or geometric room corner accents.
- When you want to add depth to a UI or visual composition using volumetric light.
- When you need to ensure laser effects match the primary accent colors of a design.
Advantages
- Ensures visual consistency by deriving colors from the design's existing palette.
- Promotes a clean, professional aesthetic through precise, thin-line rendering.
- Adds spatial depth to flat designs using atmospheric glow and bloom.
- Prevents common design pitfalls like overly thick lines or disconnected fog effects.
Usage examples
- “Create a corner-anchored laser composition for a dark-themed dashboard using a neon green accent color.”
- The agent generates a design with two thin, sharp green laser beams originating from the top-right corner, featuring a bright white-hot emitter and a soft green atmospheric haze.
- “How should I adjust the atmosphere for a corner laser effect?”
- The agent provides instructions on tuning the bloom radius, fog density, and vignette strength to ensure the corner remains luminous without washing out the surrounding interface.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/mengto/corner-lasers/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip corner-lasers.zip -d .agents/skills
Documentation by Meng To
Corner Lasers Skill
Use When
Create a corner-anchored laser composition with thin beams, a bright emitter node, bloom, and atmospheric glow or fog.
Workflow
Scope
Apply this only to corner-based laser beam compositions, not to generic centered lasers, particle scenes, or unrelated motion systems.
Use it when the design needs beams that originate from or converge at a corner or edge junction, with a strong cinematic emitter point.
Visual target
Create two or three thin laser beams that meet at a bright corner emitter, then extend outward along different directions like a geometric room corner or portal seam.
Keep the beam lines narrow and sharp with a white-hot center, a restrained halo, and strong bloom concentrated around the corner junction.
Let the surrounding atmosphere glow softly from the emitter so the corner feels illuminated by volumetric haze rather than flat lines on a dark background.
Use the design's primary color or strongest accent color for the halo and atmospheric tint instead of hardcoding blue, while keeping the brightest beam core near white.
Implementation guidance
Prefer raw WebGL shader treatment or equivalent effect logic when the output supports it.
Anchor the composition to an off-center corner point and derive multiple beam directions from that point rather than placing unrelated separate lines.
Use signed-distance or line-distance logic so each beam stays thin, crisp, and continuous.
Add a concentrated bloom or energy flare at the corner emitter where the beams meet; that hotspot should be the brightest point in the composition.
Add subtle atmospheric glow, fog, or light diffusion around the beams so the effect feels immersive and spatial, not flat.
Motion should stay restrained: slow pulsing, faint traveling energy, or gentle shimmer is good; chaotic flicker is not.
Tuning knobs
Corner position: move the emitter point inward from the edge or corner to frame the composition.
Beam count and angle: use two or three rays with clear directional contrast.
Beam thickness: keep the core thin and tune the outer glow separately so the lasers stay elegant.
Color: derive halo and haze tint from the active design accent color.
Atmosphere: adjust bloom radius, fog density, falloff, and vignette strength so the corner stays luminous without washing out the UI.
Avoid
Thick neon bars that lose the precision of laser lines.
Full-screen fog with no localized relationship to the corner emitter.
Hardcoding a cold blue palette when the design clearly uses another primary color.
Symmetrical centered compositions when the goal is an off-axis corner beam effect.
Files
- ATTRIBUTION.mdAdded by AutoGineer848 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md2.8 KiB
- demo/PROMPT.md3.3 KiB
- demo/assets/page-01-2f563338-39fa-47ea-9761-658d4f3f84db-800w.jpg74.8 KiB
- demo/assets/page-02-fa51902b-c2a4-4c33-a96e-a8f1ef67edc6-800w.jpg17.4 KiB
- demo/assets/page-03-724142aa-44a6-48d3-9cf3-761e00d05b78-1600w.jpg966.2 KiB
- demo/assets/source-preview.jpg75.8 KiB
- demo/index.html59.5 KiB
- demo/preview.jpg57.3 KiB
- demo/source.json3.9 KiB
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+IGNoYXJhY3Rlci5jaGFyQ29kZUF0KDApKTsKICAgICAgY29uc3Qgb2JqZWN0VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbYnl0ZXNdLCB7IHR5cGU6IGFzc2V0LmNvbnRlbnRUeXBlIHx8ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIH0pKTsKICAgICAgb2JqZWN0VXJscy5wdXNoKG9iamVjdFVybCk7CiAgICAgIHJlcGxhY2VtZW50cy5wdXNoKFthc3NldC5maWxlLCBvYmplY3RVcmxdKTsKICAgIH0KICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIqIikpIHsKICAgICAgZm9yIChjb25zdCBuYW1lIG9mIFsic3JjIiwgInBvc3RlciIsICJzcmNzZXQiLCAic3R5bGUiXSkgewogICAgICAgIGNvbnN0IHZhbHVlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUobmFtZSk7CiAgICAgICAgaWYgKHZhbHVlKSBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCByZXBsYWNlQWxsKHZhbHVlLCByZXBsYWNlbWVudHMpKTsKICAgICAgfQogICAgfQogICAgZm9yIChjb25zdCBzdHlsZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpKSB7CiAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gcmVwbGFjZUFsbChzdHlsZS50ZXh0Q29udGVudCwgcmVwbGFjZW1lbnRzKTsKICAgIH0KICB9KTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLCAoKSA9PiB7CiAgICBmb3IgKGNvbnN0IG9iamVjdFVybCBvZiBvYmplY3RVcmxzKSBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVybCk7CiAgfSwgeyBvbmNlOiB0cnVlIH0pOwp9KSgpOwo8L3NjcmlwdD4KCjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4KICAgIDx0aXRsZT5BdXJhIHwgU3VwZXJpbnRlbGxpZ2VuY2UgZm9yIEJpb2xvZ3k8L3RpdGxlPgogICAgCiAgICA8IS0tIEZvbnRzIC0tPgogICAgPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tIj4KICAgIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbSIgY3Jvc3NvcmlnaW4+CiAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRAMzAwOzQwMDs1MDA7NjAwJmZhbWlseT1KZXRCcmFpbnMrTW9ubzp3Z2h0QDQwMDs1MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgogICAgCiAgICA8IS0tIERlcGVuZGVuY2llcyAtLT4KICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9hc3NldHMvcnVudGltZS9ydW50aW1lLWNjYzg4OTRiMzQxOC1ydW50aW1lLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9hc3NldHMvcnVudGltZS9ydW50aW1lLTE2M2ViZDA4N2NmYy1pY29uaWZ5LWljb24tbWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9hc3NldHMvcnVudGltZS9ydW50aW1lLTAyNzA1MWVmZmE0Ny1nc2FwLW1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vYXNzZXRzL3J1bnRpbWUvcnVudGltZS02ODljYThkZGE0NGMtc2Nyb2xsdHJpZ2dlci1taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Fzc2V0cy9ydW50aW1lL3J1bnRpbWUtMjUwMjNiNTIxZDc3LXRocmVlLW1pbi5qcyI+PC9zY3JpcHQ+CgogICAgPHNjcmlwdD4KICAgICAgICB0YWlsd2luZC5jb25maWcgPSB7CiAgICAgICAgICAgIHRoZW1lOiB7CiAgICAgICAgICAgICAgICBleHRlbmQ6IHsKICAgICAgICAgICAgICAgICAgICBmb250RmFtaWx5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNhbnM6IFsnSW50ZXInLCAnc2Fucy1zZXJpZiddLAogICAgICAgICAgICAgICAgICAgICAgICBtb25vOiBbJ0pldEJyYWlucyBNb25vJywgJ21vbm9zcGFjZSddLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY29sb3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6ICcjMDUwNTA3JywKICAgICAgICAgICAgICAgICAgICAgICAgc3VyZmFjZTogJyMxODE4MUInLAogICAgICAgICAgICAgICAgICAgICAgICBhY2NlbnQ6ICcjRkY1QTFGJywKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICA8L3NjcmlwdD4KPC9oZWFkPgo8Ym9keSBjbGFzcz0iYmctYmFzZSB0ZXh0LXppbmMtMjAwIGZvbnQtc2FucyBvdmVyZmxvdy14LWhpZGRlbiBzZWxlY3Rpb246YmctYWNjZW50IHNlbGVjdGlvbjp0ZXh0LXdoaXRlIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KHJnYmEoMjU1LDI1NSwyNTUsMC4wMykgMXB4LCB0cmFuc3BhcmVudCAwKTsgYmFja2dyb3VuZC1zaXplOiAzMnB4IDMycHg7Ij4KCiAgICA8IS0tIFdlYkdMIEJhY2tncm91bmQgLS0+CiAgICA8ZGl2IGlkPSJ3ZWJnbC1jb250YWluZXIiIGNsYXNzPSJmaXhlZCBpbnNldC0wIHotWy0xXSBwb2ludGVyLWV2ZW50cy1ub25lIG1peC1ibGVuZC1zY3JlZW4gb3BhY2l0eS02MCI+PC9kaXY+CgogICAgPCEtLSBBbWJpZW50IEdvZCBSYXlzIC0tPgogICAgPGRpdiBjbGFzcz0iZml4ZWQgdG9wLVstMTAlXSBsZWZ0LVstMTAlXSB3LVs1MDBweF0gaC1bNTAwcHhdIHJvdW5kZWQtZnVsbCBtaXgtYmxlbmQtc2NyZWVuIHBvaW50ZXItZXZlbnRzLW5vbmUiIHN0eWxlPSJiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKDI1NSw5MCwzMSwwLjE1KSAwJSwgcmdiYSgwLDAsMCwwKSA3MCUpOyBmaWx0ZXI6IGJsdXIoMTMwcHgpOyI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJmaXhlZCBib3R0b20tWzEwJV0gcmlnaHQtWy0xMCVdIHctWzYwMHB4XSBoLVs2MDBweF0gcm91bmRlZC1mdWxsIG1peC1ibGVuZC1zY3JlZW4gcG9pbnRlci1ldmVudHMtbm9uZSIgc3R5bGU9ImJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoNDUsMjEyLDE5MSwwLjEpIDAlLCByZ2JhKDAsMCwwLDApIDcwJSk7IGZpbHRlcjogYmx1cigxMzBweCk7Ij48L2Rpdj4KCiAgICA8IS0tIEdsb2JhbCBUZWNobmljYWwgRnJhbWV3b3JrIC0tPgogICAgPGRpdiBjbGFzcz0icmVsYXRpdmUgbWF4LXctWzEyMDBweF0gbXgtYXV0byBtaW4taC1zY3JlZW4iPgogICAgICAgIAogICAgICAgIDwhLS0gRnJhbWUgTGluZXMgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgdG9wLVstMTAwdmhdIGJvdHRvbS1bLTEwMHZoXSBsZWZ0LTAgdy1weCBiZy13aGl0ZS9bMC4wNF0gcG9pbnRlci1ldmVudHMtbm9uZSB6LTAiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIHRvcC1bLTEwMHZoXSBib3R0b20tWy0xMDB2aF0gcmlnaHQtMCB3LXB4IGJnLXdoaXRlL1swLjA0XSBwb2ludGVyLWV2ZW50cy1ub25lIHotMCI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgdG9wLVstMTAwdmhdIGJvdHRvbS1bLTEwMHZoXSBsZWZ0LTEvMiB3LXB4IGJnLXdoaXRlL1swLjAyXSBwb2ludGVyLWV2ZW50cy1ub25lIHotMCI+PC9kaXY+CiAgICAgICAgCiAgICAgICAgPCEtLSBDb3JuZXIgTm9kZXMgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgdG9wLVs4MHB4XSBsZWZ0LVstM3B4XSB3LVs2cHhdIGgtWzZweF0gYmctd2hpdGUgYm9yZGVyIGJvcmRlci16aW5jLTQwMCB6LTIwIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSB0b3AtWzgwcHhdIHJpZ2h0LVstM3B4XSB3LVs2cHhdIGgtWzZweF0gYmctd2hpdGUgYm9yZGVyIGJvcmRlci16aW5jLTQwMCB6LTIwIj48L2Rpdj4KICAgICAgICAKICAgICAgICA8IS0tIEwtQnJhY2tldHMgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgdG9wLVs4MHB4XSBsZWZ0LVstMXB4XSB3LVsxNnB4XSBoLXB4IGJnLXdoaXRlLzIwIHotMTAiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIHRvcC1bODBweF0gbGVmdC1bLTFweF0gdy1weCBoLVsxNnB4XSBiZy13aGl0ZS8yMCB6LTEwIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSB0b3AtWzgwcHhdIHJpZ2h0LVstMXB4XSB3LVsxNnB4XSBoLXB4IGJnLXdoaXRlLzIwIHotMTAgb3JpZ2luLXJpZ2h0IiBzdHlsZT0idHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xNXB4KTsiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIHRvcC1bODBweF0gcmlnaHQtWy0xcHhdIHctcHggaC1bMTZweF0gYmctd2hpdGUvMjAgei0xMCI+PC9kaXY+CgogICAgICAgIDwhLS0gTmF2aWdhdGlvbiAtLT4KICAgICAgICA8aGVhZGVyIGNsYXNzPSJyZWxhdGl2ZSB6LTUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC04IHB5LTYgYm9yZGVyLWIgYm9yZGVyLXdoaXRlL1swLjA0XSBtdC1bODBweF0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTYgaC02IHJvdW5kZWQgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS16aW5jLTcwMCB0by1ibGFjayBwLVsxcHhdIHNoYWRvdy1bMF8ycHhfNHB4X3JnYmEoMCwwLDAsMC41KV0iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctZnVsbCBoLWZ1bGwgYmctc3VyZmFjZSByb3VuZGVkLXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIiBzdHlsZT0iYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LDAuMSk7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy0yIGgtMiByb3VuZGVkLWZ1bGwgYmctYWNjZW50IiBzdHlsZT0iYm94LXNoYWRvdzogMCAwIDEwcHggcmdiYSgyNTUsOTAsMzEsMC42KTsiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9udC1tZWRpdW0gdGV4dC1zbSB0cmFja2luZy13aWRlIHRleHQtd2hpdGUiPkF1cmEuPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC04Ij4KICAgICAgICAgICAgICAgIDxuYXYgY2xhc3M9ImhpZGRlbiBtZDpmbGV4IGdhcC02IHRleHQteHMgZm9udC1tb25vIHRyYWNraW5nLXdpZGVzdCB1cHBlcmNhc2UgdGV4dC16aW5jLTUwMCI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMzAwIj5BcmNoaXRlY3R1cmU8L2E+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMzAwIj5UZWxlbWV0cnk8L2E+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMzAwIj5Qcm90b2NvbHM8L2E+CiAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPCEtLSBDbGlwcGVkIERpYWdvbmFsIEJ1dHRvbiAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InJlbGF0aXZlIHB4LTUgcHktMiB0ZXh0LXhzIGZvbnQtbW9ubyB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IHRleHQtd2hpdGUgZ3JvdXAgb3ZlcmZsb3ctaGlkZGVuIiBzdHlsZT0iY2xpcC1wYXRoOiBwb2x5Z29uKDEwcHggMCwgMTAwJSAwLCAxMDAlIGNhbGMoMTAwJSAtIDEwcHgpLCBjYWxjKDEwMCUgLSAxMHB4KSAxMDAlLCAwIDEwMCUsIDAgMTBweCk7Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSBpbnNldC0wIGJnLXN1cmZhY2UgYm9yZGVyIGJvcmRlci13aGl0ZS8xMCB6LTAiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGluc2V0LTAgYmctZ3JhZGllbnQtdG8tciBmcm9tLWFjY2VudC8yMCB0by10cmFuc3BhcmVudCBvcGFjaXR5LTAgZ3JvdXAtaG92ZXI6b3BhY2l0eS0xMDAgdHJhbnNpdGlvbi1vcGFjaXR5IHotMCBkdXJhdGlvbi01MDAiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJyZWxhdGl2ZSB6LTEwIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIj4KICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZQogICAgICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249InNvbGFyOmFycm93LXJpZ2h0LWxpbmVhciI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvaGVhZGVyPgoKICAgICAgICA8IS0tIE1haW4gQ29udGVudCAtLT4KICAgICAgICA8bWFpbj4KICAgICAgICAgICAgPCEtLSBIZXJvIC8gU3BsaXQgTGF5b3V0IC0tPgogICAgICAgICAgICA8c2VjdGlvbiBpZD0iaGVyby1zZWN0aW9uIiBjbGFzcz0icmVsYXRpdmUgcHQtMjQgcGItMzIgcHgtOCBmbGV4IGZsZXgtY29sIGxnOmZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtMTIgYm9yZGVyLWIgYm9yZGVyLXdoaXRlL1swLjA0XSI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwhLS0gTGVmdDogRWRpdG9yaWFsIFR5cG9ncmFwaHkgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LWZ1bGwgbGc6dy01LzEyIHotMjAgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWItNiBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyB0ZXh0LVsxMHB4XSBmb250LW1vbm8gdHJhY2tpbmctWzAuMTVlbV0gdXBwZXJjYXNlIHRleHQtemluYy01MDAgYm9yZGVyIGJvcmRlci13aGl0ZS81IHJvdW5kZWQtZnVsbCBweC0zIHB5LTEgdy1tYXgiIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2JhKDI0LDI0LDI3LDAuNCk7IGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ3LTEuNSBoLTEuNSByb3VuZGVkLWZ1bGwgYmctYWNjZW50IGFuaW1hdGUtcHVsc2UiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtIHYyLjQgT25saW5lCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzcz0idGV4dC01eGwgbWQ6dGV4dC02eGwgbGc6dGV4dC03eGwgZm9udC1saWdodCB0cmFja2luZy10aWdodCB0ZXh0LXdoaXRlIGxlYWRpbmctWzEuMDVdIG1iLTgiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ib3ZlcmZsb3ctaGlkZGVuIGJsb2NrIHBiLTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJldmVhbC13b3JkIGlubGluZS1ibG9jayIgc3R5bGU9InRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTsiPlN5bnRoZXNpemU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im92ZXJmbG93LWhpZGRlbiBibG9jayBwYi0yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJyZXZlYWwtd29yZCBpbmxpbmUtYmxvY2sgdGV4dC16aW5jLTUwMCIgc3R5bGU9InRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTsiPnlvdXIgYmlvbG9naWNhbDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ib3ZlcmZsb3ctaGlkZGVuIGJsb2NrIHBiLTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJldmVhbC13b3JkIGlubGluZS1ibG9jayIgc3R5bGU9InRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTsiPnRlbGVtZXRyeS48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2gxPgoKICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1zbSB0ZXh0LXppbmMtNDAwIGZvbnQtbGlnaHQgbWF4LXctc20gbGVhZGluZy1yZWxheGVkIG1iLTEwIGJvcmRlci1sIGJvcmRlci13aGl0ZS8xMCBwbC00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgQXVyYSBtYXBzIHlvdXIgYmxvb2R3b3JrLCBkaWV0LCBhbmQgcGh5c2lvbG9naWNhbCB2YXJpYW5jZSBpbnRvIGEgdW5pZmllZCBtYWNoaW5lLWxlYXJuaW5nIG1vZGVsLCBnZW5lcmF0aW5nIHByZWNpc2UgcHJvdG9jb2xzIGZvciBwaHlzaWNhbCBvcHRpbWl6YXRpb24uCiAgICAgICAgICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgICAgICAgICA8IS0tIFNrZXVvbW9ycGhpYyBQcmltYXJ5IEFjdGlvbiAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InB4LTYgcHktMyByb3VuZGVkIHRleHQtc20gdGV4dC13aGl0ZSBmb250LW1lZGl1bSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiByZWxhdGl2ZSBncm91cCIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsICMzZjNmNDYgMCUsICMxODE4MWIgMTAwJSk7IGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwwLjEpLCAwIDRweCAxMnB4IHJnYmEoMCwwLDAsMC41KTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgaW5zZXQtMCByb3VuZGVkIGJvcmRlciBib3JkZXItd2hpdGUvNSBwb2ludGVyLWV2ZW50cy1ub25lIGdyb3VwLWhvdmVyOmJvcmRlci13aGl0ZS8xMCB0cmFuc2l0aW9uLWNvbG9ycyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25uZWN0IEhlYWx0aCBEYXRhCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGZsZXgtY29sIGdhcC0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LVsxMHB4XSBmb250LW1vbm8gdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0Ij5MYXRlbmN5PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQteHMgZm9udC1tb25vIHRleHQtYWNjZW50Ij4xMm1zPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQ6IDNEIFBlcnNwZWN0aXZlIERhc2hib2FyZCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctZnVsbCBsZzp3LTcvMTIgaC1bNjAwcHhdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHotMTAiIHN0eWxlPSJwZXJzcGVjdGl2ZTogMjAwMHB4OyI+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGFzaC1wbGFuZSIgY2xhc3M9InctWzkwJV0gbWF4LXctWzU0MHB4XSBoLVs3MjBweF0gcm91bmRlZC14bCByZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4gZmxleCBmbGV4LWNvbCIgCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0idHJhbnNmb3JtOiByb3RhdGVYKDM4ZGVnKSByb3RhdGVZKC0xMmRlZykgcm90YXRlWigxOGRlZykgc2NhbGUoMC45NSk7IHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7IGJhY2tncm91bmQ6IHJnYmEoMjAsMjAsMjIsMC42NSk7IGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMnB4KTsgYm94LXNoYWRvdzogMCA0MHB4IDgwcHggLTIwcHggcmdiYSgwLDAsMCwwLjgpLCAwIDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwwLjA1KSwgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LDAuMSk7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRGFzaGJvYXJkIEhlYWRlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaC0xNCBib3JkZXItYiBib3JkZXItd2hpdGUvWzAuMDRdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC02IGJnLWJsYWNrLzIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTIgaC0yIHJvdW5kZWQtZnVsbCBiZy1hY2NlbnQiIHN0eWxlPSJib3gtc2hhZG93OiAwIDAgOHB4IHJnYmEoMjU1LDkwLDMxLDAuNSk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1bMTBweF0gZm9udC1tb25vIHRleHQtd2hpdGUgdHJhY2tpbmctd2lkZXN0IHVwcGVyY2FzZSI+TGl2ZSBBbmFseXNpczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBdmF0YXIgdXNpbmcgQXVyYSBhc3NldCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMvcGFnZS0wMS0yZjU2MzMzOC0zOWZhLTQ3ZWEtOTc2MS02NThkNGYzZjg0ZGItODAwdy5qcGciIGFsdD0iVXNlciBQcm9maWxlIiBjbGFzcz0idy03IGgtNyByb3VuZGVkLWZ1bGwgb2JqZWN0LWNvdmVyIGJvcmRlciBib3JkZXItd2hpdGUvMTAiIHN0eWxlPSJmaWx0ZXI6IGdyYXlzY2FsZSgxMDAlKSBjb250cmFzdCgxLjIpOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEYXNoYm9hcmQgQm9keSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleC0xIHAtNiBmbGV4IGZsZXgtY29sIGdhcC00IG92ZXJmbG93LWhpZGRlbiByZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJhY2tncm91bmQgR3JpZCBpbnNpZGUgZGFzaGJvYXJkIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgaW5zZXQtMCBvcGFjaXR5LTEwIHBvaW50ZXItZXZlbnRzLW5vbmUiIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsMjU1LDI1NSwwLjIpIDFweCwgdHJhbnNwYXJlbnQgMXB4KSwgbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKDI1NSwyNTUsMjU1LDAuMikgMXB4LCB0cmFuc3BhcmVudCAxcHgpOyBiYWNrZ3JvdW5kLXNpemU6IDIwcHggMjBweDsiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRGlhbCBGb2NhbCBFbGVtZW50IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB5LTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctNDggaC00OCByb3VuZGVkLWZ1bGwgcmVsYXRpdmUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIiIHN0eWxlPSJiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwyNTUsMjU1LDAuMDIpLCByZ2JhKDAsMCwwLDAuNCkpOyBib3gtc2hhZG93OiBpbnNldCAwIDJweCA0cHggcmdiYSgwLDAsMCwwLjUpLCBpbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwwLjA1KSwgMCAwIDQwcHggcmdiYSgyNTUsOTAsMzEsMC4wNSk7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSb3RhdGluZyB0aWNrIHJpbmcgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9ImFic29sdXRlIGluc2V0LTAgdy1mdWxsIGgtZnVsbCBhbmltYXRlLVtzcGluXzIwc19saW5lYXJfaW5maW5pdGVdIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI0NiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZ2JhKDI1NSwyNTUsMjU1LDAuMSkiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWRhc2hhcnJheT0iMiA0IiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iYWJzb2x1dGUgaW5zZXQtMCB3LWZ1bGwgaC1mdWxsIGFuaW1hdGUtW3NwaW5fMzBzX2xpbmVhcl9pbmZpbml0ZV9yZXZlcnNlXSIgdmlld0JveD0iMCAwIDEwMCAxMDAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNDIiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmdiYSgyNTUsOTAsMzEsMC4zKSIgc3Ryb2tlLXdpZHRoPSIwLjUiIHN0cm9rZS1kYXNoYXJyYXk9IjEgOCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciByZWxhdGl2ZSB6LTEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtM3hsIGZvbnQtbGlnaHQgdGV4dC13aGl0ZSB0cmFja2luZy10aWdodCBtYi0xIj45OC40PHNwYW4gY2xhc3M9InRleHQtc20gdGV4dC16aW5jLTUwMCI+JTwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtWzlweF0gZm9udC1tb25vIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QgdGV4dC1hY2NlbnQiPk1ldGFib2xpYyBTY29yZTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSW5uZXIgZ2xvdyBzcGhlcmUgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGluc2V0LTEwIHJvdW5kZWQtZnVsbCBiZy1hY2NlbnQvNSBibHVyLXhsIHBvaW50ZXItZXZlbnRzLW5vbmUiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBNZXRyaWNzIENhcmRzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBncmlkLWNvbHMtMiBnYXAtMyByZWxhdGl2ZSB6LTEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENhcmQgMSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwLTQgcm91bmRlZC1sZyBiZy1ibGFjay80MCBib3JkZXIgYm9yZGVyLXdoaXRlLzUgcmVsYXRpdmUgZ3JvdXAiIHN0eWxlPSJib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsMC4wNSk7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1bMTBweF0gZm9udC1tb25vIHRleHQtemluYy01MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCBtYi0zIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3J0aXNvbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzb2xhcjpncmFwaC11cC1saW5lYXIiIGNsYXNzPSJ0ZXh0LWFjY2VudCI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LXhsIGZvbnQtbGlnaHQgdGV4dC13aGl0ZSI+MTIuNCA8c3BhbiBjbGFzcz0idGV4dC1bMTBweF0gdGV4dC16aW5jLTYwMCI+dWcvZEw8L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCBoLTAuNSBiZy1hY2NlbnQvMjAgdy1mdWxsIHJvdW5kZWQtYi1sZyBvdmVyZmxvdy1oaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaC1mdWxsIGJnLWFjY2VudCB3LVs2MCVdIHNoYWRvdy1bMF8wXzhweF9yZ2JhKDI1NSw5MCwzMSwwLjgpXSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ2FyZCAyIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InAtNCByb3VuZGVkLWxnIGJnLWJsYWNrLzQwIGJvcmRlciBib3JkZXItd2hpdGUvNSByZWxhdGl2ZSBncm91cCIgc3R5bGU9ImJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwwLjA1KTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LVsxMHB4XSBmb250LW1vbm8gdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IG1iLTMgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY292ZXJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249InNvbGFyOm1vb24tc2xlZXAtbGluZWFyIiBjbGFzcz0idGV4dC13aGl0ZS80MCI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LXhsIGZvbnQtbGlnaHQgdGV4dC13aGl0ZSI+T3B0aW1hbDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgaC0wLjUgYmctZW1lcmFsZC01MDAvMjAgdy1mdWxsIHJvdW5kZWQtYi1sZyBvdmVyZmxvdy1oaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaC1mdWxsIGJnLWVtZXJhbGQtNTAwIHctWzkwJV0gc2hhZG93LVswXzBfOHB4X3JnYmEoMTYsMTg1LDEyOSwwLjgpXSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDb250cm9scyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im10LTIgcC00IHJvdW5kZWQtbGcgYmctYmxhY2svNDAgYm9yZGVyIGJvcmRlci13aGl0ZS81IiBzdHlsZT0iYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LDAuMDUpOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyB0ZXh0LXppbmMtNDAwIj5Db250aW51b3VzIFN5bmM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEN1c3RvbSBTa2V1b21vcnBoaWMgVG9nZ2xlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTEwIGgtNSByb3VuZGVkLWZ1bGwgYmctYmxhY2sgcmVsYXRpdmUgY3Vyc29yLXBvaW50ZXIiIHN0eWxlPSJib3gtc2hhZG93OiBpbnNldCAwIDJweCA0cHggcmdiYSgwLDAsMCwxKSwgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LDAuMDUpOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSByaWdodC0wLjUgdG9wLTAuNSB3LTQgaC00IHJvdW5kZWQtZnVsbCBiZy1hY2NlbnQgdHJhbnNpdGlvbi1hbGwiIHN0eWxlPSJib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLDAsMCwwLjgpLCBpbnNldCAwIDFweCAxcHggcmdiYSgyNTUsMjU1LDI1NSwwLjQpLCAwIDAgMTBweCByZ2JhKDI1NSw5MCwzMSwwLjQpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFjZS15LTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtWzEwcHhdIGZvbnQtbW9ubyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QiPk5NTiBEb3NhZ2U8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1bMTBweF0gZm9udC1tb25vIHRleHQtd2hpdGUiPjUwMG1nPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDdXN0b20gU2xpZGVyIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LWZ1bGwgaC0xLjUgYmctYmxhY2sgcm91bmRlZC1mdWxsIHJlbGF0aXZlIiBzdHlsZT0iYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsMSksIDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwwLjA1KTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgbGVmdC0wIHRvcC0wIGgtZnVsbCBiZy16aW5jLTYwMCByb3VuZGVkLWZ1bGwgdy1bNDAlXSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSBsZWZ0LVs0MCVdIHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiAtdHJhbnNsYXRlLXgtMS8yIHctMyBoLTMgcm91bmRlZC1mdWxsIGJnLXppbmMtMzAwIGJvcmRlciBib3JkZXItYmxhY2sgY3Vyc29yLXBvaW50ZXIiIHN0eWxlPSJib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLDAsMCwwLjUpLCBpbnNldCAwIDFweCAxcHggcmdiYSgyNTUsMjU1LDI1NSwwLjgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gR3JhZGllbnQgU2hlbGwgSGlnaGxpZ2h0IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgaW5zZXQtMCByb3VuZGVkLXhsIHBvaW50ZXItZXZlbnRzLW5vbmUgei0yMCIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LDI1NSwyNTUsMC4xKSAwJSwgdHJhbnNwYXJlbnQgMjAlLCB0cmFuc3BhcmVudCA4MCUsIHJnYmEoMjU1LDkwLDMxLDAuMDUpIDEwMCUpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgICAgIDwhLS0gTWFycXVlZSBSb3cgLS0+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJib3JkZXItYiBib3JkZXItd2hpdGUvWzAuMDRdIHB5LTQgb3ZlcmZsb3ctaGlkZGVuIHJlbGF0aXZlIGZsZXgiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgbGVmdC0wIHRvcC0wIGJvdHRvbS0wIHctMjQgYmctZ3JhZGllbnQtdG8tciBmcm9tLWJhc2UgdG8tdHJhbnNwYXJlbnQgei0xMCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSByaWdodC0wIHRvcC0wIGJvdHRvbS0wIHctMjQgYmctZ3JhZGllbnQtdG8tbCBmcm9tLWJhc2UgdG8tdHJhbnNwYXJlbnQgei0xMCI+PC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggZ2FwLTE2IGFuaW1hdGUtW21hcnF1ZWVfMjBzX2xpbmVhcl9pbmZpbml0ZV0gd2hpdGVzcGFjZS1ub3dyYXAgb3BhY2l0eS00MCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBSZXBlYXRlZCBpdGVtcyBmb3Igc2VhbWxlc3MgbG9vcCAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGdhcC0xNiBpdGVtcy1jZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyBmb250LW1vbm8gdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCB0ZXh0LXdoaXRlIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIj48aWNvbmlmeS1pY29uIGljb249InNvbGFyOmRuYS1saW5lYXIiPjwvaWNvbmlmeS1pY29uPiBHZW5vbWljIFByb2ZpbGluZzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQteHMgZm9udC1tb25vIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QgdGV4dC16aW5jLTUwMCI+wrc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXhzIGZvbnQtbW9ubyB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IHRleHQtd2hpdGUgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIiPjxpY29uaWZ5LWljb24gaWNvbj0ic29sYXI6cHVsc2UtbGluZWFyIj48L2ljb25pZnktaWNvbj4gSFJWIEFuYWx5dGljczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQteHMgZm9udC1tb25vIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QgdGV4dC16aW5jLTUwMCI+wrc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXhzIGZvbnQtbW9ubyB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IHRleHQtd2hpdGUgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIiPjxpY29uaWZ5LWljb24gaWNvbj0ic29sYXI6dGVzdC10dWJlLWxpbmVhciI+PC9pY29uaWZ5LWljb24+IEJsb29kIE1hcmtlcnM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXhzIGZvbnQtbW9ubyB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IHRleHQtemluYy01MDAiPsK3PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyBmb250LW1vbm8gdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCB0ZXh0LXdoaXRlIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIj48aWNvbmlmeS1pY29uIGljb249InNvbGFyOm1vb24tc3RhcnMtbGluZWFyIj48L2ljb25pZnktaWNvbj4gU2xlZXAgU3RhZ2luZzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQteHMgZm9udC1tb25vIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QgdGV4dC16aW5jLTUwMCI+wrc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBnYXAtMTYgaXRlbXMtY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQteHMgZm9udC1tb25vIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QgdGV4dC13aGl0ZSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiI+PGljb25pZnktaWNvbiBpY29uPSJzb2xhcjpkbmEtbGluZWFyIj48L2ljb25pZnktaWNvbj4gR2Vub21pYyBQcm9maWxpbmc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXhzIGZvbnQtbW9ubyB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IHRleHQtemluYy01MDAiPsK3PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyBmb250LW1vbm8gdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCB0ZXh0LXdoaXRlIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIj48aWNvbmlmeS1pY29uIGljb249InNvbGFyOnB1bHNlLWxpbmVhciI+PC9pY29uaWZ5LWljb24+IEhSViBBbmFseXRpY3M8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXhzIGZvbnQtbW9ubyB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IHRleHQtemluYy01MDAiPsK3PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyBmb250LW1vbm8gdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCB0ZXh0LXdoaXRlIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIj48aWNvbmlmeS1pY29uIGljb249InNvbGFyOnRlc3QtdHViZS1saW5lYXIiPjwvaWNvbmlmeS1pY29uPiBCbG9vZCBNYXJrZXJzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyBmb250LW1vbm8gdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCB0ZXh0LXppbmMtNTAwIj7Ctzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQteHMgZm9udC1tb25vIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QgdGV4dC13aGl0ZSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiI+PGljb25pZnktaWNvbiBpY29uPSJzb2xhcjptb29uLXN0YXJzLWxpbmVhciI+PC9pY29uaWZ5LWljb24+IFNsZWVwIFN0YWdpbmc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXhzIGZvbnQtbW9ubyB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IHRleHQtemluYy01MDAiPsK3PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgICAgIDwhLS0gTmVzdGVkIENvbnRhaW5lciBBZ2VuY3kgU2VjdGlvbiAtLT4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InB5LTMyIHB4LTggcmVsYXRpdmUgYm9yZGVyLWIgYm9yZGVyLXdoaXRlL1swLjA0XSI+CiAgICAgICAgICAgICAgICA8IS0tIFNlY3Rpb24gSGVhZGVyIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF4LXcteGwgbWItMTYiPgogICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGV4dC0zeGwgZm9udC1saWdodCB0ZXh0LXdoaXRlIHRyYWNraW5nLXRpZ2h0IG1iLTQiPlByZWNpc2lvbiBjYWxpYnJhdGlvbiA8YnI+Zm9yIGh1bWFuIHBlcmZvcm1hbmNlLjwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtc20gdGV4dC16aW5jLTQwMCBsZWFkaW5nLXJlbGF4ZWQgZm9udC1saWdodCI+V2UgcmVwbGFjZSBnZW5lcmFsaXplZCBoZWFsdGggYWR2aWNlIHdpdGggZGV0ZXJtaW5pc3RpYyBtb2RlbHMuIEJ5IGNvbnN0YW50bHkgYW5hbHl6aW5nIHlvdXIgcGh5c2lvbG9naWNhbCBvdXRwdXRzLCBBdXJhIGNhbGlicmF0ZXMgeW91ciBpbnB1dHPigJRkaWV0LCBzdXBwbGVtZW50cywgYW5kIGV4ZXJ0aW9uLjwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gT3V0ZXIgU2hlbGwgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LWZ1bGwgcm91bmRlZC0yeGwgcC0xIG1kOnAtMiByZWxhdGl2ZSBiZy1ncmFkaWVudC10by1iIGZyb20td2hpdGUvMTAgdG8tdHJhbnNwYXJlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gSW5uZXIgU2hlbGwgQ29udGFpbmVyIC0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctZnVsbCBiZy1zdXJmYWNlIHJvdW5kZWQteGwgb3ZlcmZsb3ctaGlkZGVuIGJvcmRlciBib3JkZXItd2hpdGUvNSBwLTggcmVsYXRpdmUgZmxleCBmbGV4LWNvbCBtZDpmbGV4LXJvdyBnYXAtOCIgc3R5bGU9ImJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwwLjA1KSwgMCAyNHB4IDQ4cHggLTEycHggcmdiYSgwLDAsMCwwLjgpOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIExlZnQgSW1hZ2UgRnJhbWUgKEF1cmEgQWJzdHJhY3QpIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LWZ1bGwgbWQ6dy0xLzIgaC1bNDAwcHhdIHJvdW5kZWQtbGcgcmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuIGJnLWJsYWNrIGJvcmRlciBib3JkZXItd2hpdGUvNSIgc3R5bGU9ImNsaXAtcGF0aDogcG9seWdvbigwIDAsIDEwMCUgMCwgMTAwJSBjYWxjKDEwMCUgLSAzMHB4KSwgY2FsYygxMDAlIC0gMzBweCkgMTAwJSwgMCAxMDAlKTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9wYWdlLTAyLWZhNTE5MDJiLWMyYTQtNGMzMy1hOTZlLWE4ZjFlZjY3ZWRjNi04MDB3LmpwZyIgYWx0PSJEYXRhIEFic3RyYWN0IiBjbGFzcz0idy1mdWxsIGgtZnVsbCBvYmplY3QtY292ZXIgb3BhY2l0eS02MCBtaXgtYmxlbmQtc2NyZWVuIGdyYXlzY2FsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSBpbnNldC0wIGJvcmRlciBib3JkZXItd2hpdGUvMTAgcG9pbnRlci1ldmVudHMtbm9uZSBtaXgtYmxlbmQtb3ZlcmxheSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gT3ZlcmxheSBVSSBvbiBJbWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGJvdHRvbS02IGxlZnQtNiByaWdodC02Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZy1ibGFjay82MCBiYWNrZHJvcC1ibHVyLW1kIGJvcmRlciBib3JkZXItd2hpdGUvMTAgcm91bmRlZCBwLTQgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBmbGV4LWNvbCBnYXAtMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1bMTBweF0gZm9udC1tb25vIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QgdGV4dC16aW5jLTQwMCI+RGF0YSBQb29sPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtc20gZm9udC1tZWRpdW0gdGV4dC13aGl0ZSI+NC4yTSBEYXRhIFBvaW50czwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ic29sYXI6Y2hhcnQtc3F1YXJlLWxpbmVhciIgY2xhc3M9InRleHQteGwgdGV4dC1hY2NlbnQiPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSaWdodCBDb250ZW50IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LWZ1bGwgbWQ6dy0xLzIgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBzcGFjZS15LTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZlYXR1cmUgSXRlbSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdyb3VwIGN1cnNvci1wb2ludGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGV4dC1sZyBmb250LWxpZ2h0IHRleHQtd2hpdGUgZ3JvdXAtaG92ZXI6dGV4dC1hY2NlbnQgdHJhbnNpdGlvbi1jb2xvcnMiPkNvbnRpbnVvdXMgQmxvb2QgQW5hbHlzaXM8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1bMTBweF0gZm9udC1tb25vIHRleHQtemluYy01MDAgdXBwZXJjYXNlIj5Nb2R1bGUgMDE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQteHMgdGV4dC16aW5jLTQwMCBmb250LWxpZ2h0IGxlYWRpbmctcmVsYXhlZCI+SW50ZWdyYXRlIHF1YXJ0ZXJseSBsYWIgcGFuZWxzIG9yIGNvbm5lY3QgcmVhbC10aW1lIGJpb21hcmtlciBwYXRjaGVzLiBBdXJhIGRldGVjdHMgc3ViLWNsaW5pY2FsIGRlZmljaWVuY2llcyBiZWZvcmUgdGhleSBtYW5pZmVzdCBhcyBzeW1wdG9tcy48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaC1weCB3LWZ1bGwgYmctd2hpdGUvWzAuMDRdIG10LTYgZ3JvdXAtaG92ZXI6Ymctd2hpdGUvMTAgdHJhbnNpdGlvbi1jb2xvcnMiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGZWF0dXJlIEl0ZW0gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJncm91cCBjdXJzb3ItcG9pbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRleHQtbGcgZm9udC1saWdodCB0ZXh0LXdoaXRlIGdyb3VwLWhvdmVyOnRleHQtYWNjZW50IHRyYW5zaXRpb24tY29sb3JzIj5EeW5hbWljIFN1cHBsZW1lbnRhdGlvbjwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LVsxMHB4XSBmb250LW1vbm8gdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UiPk1vZHVsZSAwMjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC14cyB0ZXh0LXppbmMtNDAwIGZvbnQtbGlnaHQgbGVhZGluZy1yZWxheGVkIj5TdG9wIGd1ZXNzaW5nIGRvc2FnZXMuIFRoZSBzeXN0ZW0gZm9ybXVsYXRlcyBkYWlseSBzdXBwbGVtZW50IHN0YWNrcyBiYXNlZCBvbiB5b3VyIGN1cnJlbnQgcmVjb3Zlcnkgc3RhdGUsIGNvcnRpc29sIGN1cnZlLCBhbmQgbWljcm9udXRyaWVudCBidXJuIHJhdGUuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImgtcHggdy1mdWxsIGJnLXdoaXRlL1swLjA0XSBtdC02IGdyb3VwLWhvdmVyOmJnLXdoaXRlLzEwIHRyYW5zaXRpb24tY29sb3JzIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZlYXR1cmUgSXRlbSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJncm91cCBjdXJzb3ItcG9pbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRleHQtbGcgZm9udC1saWdodCB0ZXh0LXdoaXRlIGdyb3VwLWhvdmVyOnRleHQtYWNjZW50IHRyYW5zaXRpb24tY29sb3JzIj5OdXRyaWVudCBQYXJ0aXRpb25pbmc8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1bMTBweF0gZm9udC1tb25vIHRleHQtemluYy01MDAgdXBwZXJjYXNlIj5Nb2R1bGUgMDM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQteHMgdGV4dC16aW5jLTQwMCBmb250LWxpZ2h0IGxlYWRpbmctcmVsYXhlZCI+TWFjcm8tbnV0cmllbnQgdGltaW5nIGFsZ29yaXRobXMgYWRqdXN0IHRvIHlvdXIgZGFpbHkgcGh5c2ljYWwgb3V0cHV0IGFuZCBnbHljZW1pYyByZXNwb25zZXMsIG9wdGltaXppbmcgaW5zdWxpbiBzZW5zaXRpdml0eS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgICAgIDwhLS0gVGVjaG5pY2FsIEFyY2hpdGVjdHVyZSBTZWN0aW9uIChTcGxpdCBMYXlvdXQpIC0tPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icHktMzIgcHgtOCByZWxhdGl2ZSBmbGV4IGZsZXgtY29sIGxnOmZsZXgtcm93IGdhcC0wIj4KICAgICAgICAgICAgICAgIDwhLS0gTGVmdCBQYW5lbCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctZnVsbCBsZzp3LTEvMiBsZzpwci0xNiBmbGV4IGZsZXgtY29sIGJvcmRlci1iIGxnOmJvcmRlci1iLTAgbGc6Ym9yZGVyLXIgYm9yZGVyLXdoaXRlL1swLjA0XSBwYi0xNiBsZzpwYi0wIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBtYi04Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy1bM3B4XSBoLVsxMnB4XSBiZy1hY2NlbnQiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1bMTBweF0gZm9udC1tb25vIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QgdGV4dC16aW5jLTUwMCI+QXJjaGl0ZWN0dXJlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGV4dC0zeGwgZm9udC1saWdodCB0ZXh0LXdoaXRlIHRyYWNraW5nLXRpZ2h0IG1iLTYiPkRlc2lnbmVkIGxpa2UgPGJyPmluc3RydW1lbnRhdGlvbi48L2gyPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXNtIHRleHQtemluYy00MDAgZm9udC1saWdodCBsZWFkaW5nLXJlbGF4ZWQgbWItMTIgbWF4LXctc20iPgogICAgICAgICAgICAgICAgICAgICAgICBBdXJhIGlzbid0IGEgbGlmZXN0eWxlIGFwcC4gSXQncyBhIHRlY2huaWNhbCBkYXNoYm9hcmQgZm9yIHlvdXIgYm9keSwgYnVpbHQgd2l0aCB0aGUgcHJlY2lzaW9uIG9mIGZpbmFuY2lhbCBvciBhZXJvc3BhY2Ugc29mdHdhcmUuIAogICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgICAgICAgICAgPCEtLSBTa2V1b21vcnBoaWMgRGF0YSBDYXJkIC0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im10LWF1dG8gYm9yZGVyIGJvcmRlci13aGl0ZS81IHJvdW5kZWQtbGcgYmctYmxhY2svNTAgcC02IHJlbGF0aXZlIG92ZXJmbG93LWhpZGRlbiIgc3R5bGU9ImJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwwLjAyKSwgMCAxMHB4IDMwcHggcmdiYSgwLDAsMCwwLjUpOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIHJpZ2h0LTAgdG9wLTAgdy0zMiBoLTMyIGJnLWFjY2VudC81IHJvdW5kZWQtZnVsbCBibHVyLTJ4bCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWVuZCBqdXN0aWZ5LWJldHdlZW4gbWItNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtWzEwcHhdIGZvbnQtbW9ubyB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IHRleHQtemluYy01MDAgbWItMSI+Q29tcHV0ZSBMb2FkPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC0yeGwgZm9udC1saWdodCB0ZXh0LXdoaXRlIj40Mi44PHNwYW4gY2xhc3M9InRleHQtc20gdGV4dC16aW5jLTYwMCI+VEZMT1BTPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LXhzIHRleHQtYWNjZW50IGZvbnQtbW9ubyI+UnVubmluZzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRmF1eCBHcmFwaCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy1mdWxsIGgtMTIgZmxleCBpdGVtcy1lbmQgZ2FwLTEgb3BhY2l0eS01MCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LWZ1bGwgYmctemluYy04MDAgcm91bmRlZC10LXNtIiBzdHlsZT0iaGVpZ2h0OiAyMCUiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy1mdWxsIGJnLXppbmMtODAwIHJvdW5kZWQtdC1zbSIgc3R5bGU9ImhlaWdodDogMzAlIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctZnVsbCBiZy16aW5jLTgwMCByb3VuZGVkLXQtc20iIHN0eWxlPSJoZWlnaHQ6IDUwJSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LWZ1bGwgYmctemluYy04MDAgcm91bmRlZC10LXNtIiBzdHlsZT0iaGVpZ2h0OiA0MCUiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy1mdWxsIGJnLXppbmMtODAwIHJvdW5kZWQtdC1zbSIgc3R5bGU9ImhlaWdodDogNzAlIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctZnVsbCBiZy1hY2NlbnQgcm91bmRlZC10LXNtIHNoYWRvdy1bMF8wXzhweF9yZ2JhKDI1NSw5MCwzMSwwLjUpXSIgc3R5bGU9ImhlaWdodDogOTAlIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctZnVsbCBiZy16aW5jLTgwMCByb3VuZGVkLXQtc20iIHN0eWxlPSJoZWlnaHQ6IDYwJSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBSaWdodCBQYW5lbCAoQXVyYSBBcmNoaXRlY3R1cmUgSW1hZ2UpIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy1mdWxsIGxnOnctMS8yIGxnOnBsLTE2IHB0LTE2IGxnOnB0LTAgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy1mdWxsIGgtWzUwMHB4XSByZWxhdGl2ZSByb3VuZGVkLWxnIG92ZXJmbG93LWhpZGRlbiBib3JkZXIgYm9yZGVyLXdoaXRlLzEwIiBzdHlsZT0iYm94LXNoYWRvdzogMCAyMHB4IDQwcHggcmdiYSgwLDAsMCwwLjgpOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMvcGFnZS0wMy03MjQxNDJhYS00NGE2LTQ4ZDMtOWNmMy03NjFlMDBkMDViNzgtMTYwMHcuanBnIiBhbHQ9IkF1cmEgQXJjaGl0ZWN0dXJlIEZhY2lsaXR5IiBjbGFzcz0idy1mdWxsIGgtZnVsbCBvYmplY3QtY292ZXIgZ3JheXNjYWxlIG9wYWNpdHktODAgbWl4LWJsZW5kLWxpZ2h0ZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBIVUQgRWxlbWVudHMgb3ZlciBpbWFnZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgdG9wLTQgbGVmdC00IHRleHQtWzEwcHhdIGZvbnQtbW9ubyB0ZXh0LXdoaXRlLzUwIHRyYWNraW5nLXdpZGVzdCB1cHBlcmNhc2UiPkNhbSAwNCAvIFNlcnZlciBSYWNrPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGJvdHRvbS00IHJpZ2h0LTQgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InctMiBoLTIgcm91bmRlZC1mdWxsIGJnLWFjY2VudCBhbmltYXRlLXB1bHNlIHNoYWRvdy1bMF8wXzhweF9yZ2JhKDI1NSw5MCwzMSwwLjgpXSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtWzEwcHhdIGZvbnQtbW9ubyB0ZXh0LXdoaXRlIHRyYWNraW5nLXdpZGVzdCB1cHBlcmNhc2UiPlNlY3VyZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ3Jvc3NoYWlycyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzIgdy04IGgtOCBwb2ludGVyLWV2ZW50cy1ub25lIG9wYWNpdHktMzAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgdG9wLTAgYm90dG9tLTAgbGVmdC0xLzIgdy1weCBiZy13aGl0ZSAtdHJhbnNsYXRlLXgtMS8yIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGxlZnQtMCByaWdodC0wIHRvcC0xLzIgaC1weCBiZy13aGl0ZSAtdHJhbnNsYXRlLXktMS8yIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwvbWFpbj4KCiAgICAgICAgPCEtLSBGb290ZXIgLS0+CiAgICAgICAgPGZvb3RlciBjbGFzcz0icHktMTIgcHgtOCBmbGV4IGZsZXgtY29sIG1kOmZsZXgtcm93IGl0ZW1zLXN0YXJ0IG1kOml0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyLXQgYm9yZGVyLXdoaXRlL1swLjA0XSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggZmxleC1jb2wgZ2FwLTIgbWItOCBtZDptYi0wIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTQgaC00IHJvdW5kZWQgYmctemluYy04MDAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTEuNSBoLTEuNSByb3VuZGVkLWZ1bGwgYmctYWNjZW50Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZm9udC1tZWRpdW0gdGV4dC14cyB0cmFja2luZy13aWRlIHRleHQtd2hpdGUiPkF1cmEgU3lzdGVtcyBJbmMuPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LVsxMHB4XSBmb250LW1vbm8gdGV4dC16aW5jLTYwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0Ij7CqSAyMDI0IC8gQ2xhc3NpZmllZDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggZ2FwLTggdGV4dC1bMTBweF0gZm9udC1tb25vIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QgdGV4dC16aW5jLTUwMCI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyI+TWFuaWZlc3RvPC9hPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPlByaXZhY3k8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyI+VGVybWluYWw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZm9vdGVyPgoKICAgIDwvZGl2PiA8IS0tIEVuZCBHbG9iYWwgRnJhbWV3b3JrIC0tPgoKICAgIDxzdHlsZT4KICAgICAgICAvKiBDU1MgVXRpbGl0aWVzIGZvciBzcGVjaWZpY3Mgbm90IGVhc2lseSBpbmxpbmUtYWJsZSAqLwogICAgICAgIEBrZXlmcmFtZXMgbWFycXVlZSB7CiAgICAgICAgICAgIDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOyB9CiAgICAgICAgICAgIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7IH0KICAgICAgICB9CiAgICAgICAgLyogSGlkZSBzY3JvbGxiYXIgZm9yIGNsZWFuIGFlc3RoZXRpYyAqLwogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgICAgICB3aWR0aDogNnB4OwogICAgICAgIH0KICAgICAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzA1MDUwNzsKICAgICAgICB9CiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMxODE4MUI7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICB9CiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMzZjNmNDY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2NyaXB0PgogICAgICAgIC8vIC0tLSBHU0FQIEFuaW1hdGlvbnMgLS0tCiAgICAgICAgZ3NhcC5yZWdpc3RlclBsdWdpbihTY3JvbGxUcmlnZ2VyKTsKCiAgICAgICAgLy8gTWFza2VkIEhlYWRsaW5lIFJldmVhbCBvbiBMb2FkCiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7CiAgICAgICAgICAgIGdzYXAudG8oJy5yZXZlYWwtd29yZCcsIHsKICAgICAgICAgICAgICAgIHk6ICcwJScsCiAgICAgICAgICAgICAgICBzdGFnZ2VyOiAwLjE1LAogICAgICAgICAgICAgICAgZHVyYXRpb246IDEuNCwKICAgICAgICAgICAgICAgIGVhc2U6ICdwb3dlcjQub3V0JywKICAgICAgICAgICAgICAgIGRlbGF5OiAwLjIKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIDNEIERhc2hib2FyZCBQZXJzcGVjdGl2ZSBTY3JvbGwgU3luYwogICAgICAgIGdzYXAudG8oJyNkYXNoLXBsYW5lJywgewogICAgICAgICAgICByb3RhdGVYOiAwLAogICAgICAgICAgICByb3RhdGVZOiAwLAogICAgICAgICAgICByb3RhdGVaOiAwLAogICAgICAgICAgICBzY2FsZTogMSwKICAgICAgICAgICAgZWFzZTogIm5vbmUiLCAvLyBMaW5lYXIgZm9yIHNjcnViCiAgICAgICAgICAgIHNjcm9sbFRyaWdnZXI6IHsKICAgICAgICAgICAgICAgIHRyaWdnZXI6ICcjaGVyby1zZWN0aW9uJywKICAgICAgICAgICAgICAgIHN0YXJ0OiAidG9wIHRvcCIsCiAgICAgICAgICAgICAgICBlbmQ6ICJib3R0b20gY2VudGVyIiwKICAgICAgICAgICAgICAgIHNjcnViOiAxCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgLy8gLS0tIFdlYkdMIFRocmVlLmpzIEJhY2tncm91bmQgKFNraWxsIEludGVudCkgLS0tCiAgICAgICAgY29uc3QgaW5pdFdlYkdMID0gKCkgPT4gewogICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2ViZ2wtY29udGFpbmVyJyk7CiAgICAgICAgICAgIGNvbnN0IHNjZW5lID0gbmV3IFRIUkVFLlNjZW5lKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBDYW1lcmEKICAgICAgICAgICAgY29uc3QgY2FtZXJhID0gbmV3IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhKDQ1LCB3aW5kb3cuaW5uZXJXaWR0aCAvIHdpbmRvdy5pbm5lckhlaWdodCwgMC4xLCAxMDApOwogICAgICAgICAgICBjYW1lcmEucG9zaXRpb24ueiA9IDU7CiAgICAgICAgICAgIC8vIERlc2t0b3Agb2Zmc2V0CiAgICAgICAgICAgIGlmKHdpbmRvdy5pbm5lcldpZHRoID4gMTAyNCkgY2FtZXJhLnBvc2l0aW9uLnggPSAxLjU7CgogICAgICAgICAgICAvLyBSZW5kZXJlcgogICAgICAgICAgICBjb25zdCByZW5kZXJlciA9IG5ldyBUSFJFRS5XZWJHTFJlbmRlcmVyKHsgYW50aWFsaWFzOiB0cnVlLCBhbHBoYTogdHJ1ZSB9KTsKICAgICAgICAgICAgcmVuZGVyZXIuc2V0U2l6ZSh3aW5kb3cuaW5uZXJXaWR0aCwgd2luZG93LmlubmVySGVpZ2h0KTsKICAgICAgICAgICAgcmVuZGVyZXIuc2V0UGl4ZWxSYXRpbyhNYXRoLm1pbih3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbywgMikpOwogICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQocmVuZGVyZXIuZG9tRWxlbWVudCk7CgogICAgICAgICAgICAvLyBGb2cgdG8gbWF0Y2ggYmFja2dyb3VuZCAjMDUwNTA3CiAgICAgICAgICAgIHNjZW5lLmZvZyA9IG5ldyBUSFJFRS5Gb2coMHgwNTA1MDcsIDMsIDgpOwoKICAgICAgICAgICAgLy8gR2VvbWV0cnkKICAgICAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgVEhSRUUuU3BoZXJlR2VvbWV0cnkoMS44LCAxMjgsIDEyOCk7CgogICAgICAgICAgICAvLyBTaGFkZXJzCiAgICAgICAgICAgIGNvbnN0IHZlcnRleFNoYWRlciA9IGAKICAgICAgICAgICAgICAgIHVuaWZvcm0gZmxvYXQgdVRpbWU7CiAgICAgICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdlV2OwogICAgICAgICAgICAgICAgdmFyeWluZyB2ZWMzIHZOb3JtYWw7CiAgICAgICAgICAgICAgICB2YXJ5aW5nIHZlYzMgdlBvc2l0aW9uOwoKICAgICAgICAgICAgICAgIC8vIDNEIFNpbXBsZXggTm9pc2UgRnVuY3Rpb24gKEFzaGltYSBBcnRzKQogICAgICAgICAgICAgICAgdmVjMyBtb2QyODkodmVjMyB4KSB7IHJldHVybiB4IC0gZmxvb3IoeCAqICgxLjAgLyAyODkuMCkpICogMjg5LjA7IH0KICAgICAgICAgICAgICAgIHZlYzQgbW9kMjg5KHZlYzQgeCkgeyByZXR1cm4geCAtIGZsb29yKHggKiAoMS4wIC8gMjg5LjApKSAqIDI4OS4wOyB9CiAgICAgICAgICAgICAgICB2ZWM0IHBlcm11dGUodmVjNCB4KSB7IHJldHVybiBtb2QyODkoKCh4KjM0LjApKzEuMCkqeCk7IH0KICAgICAgICAgICAgICAgIHZlYzQgdGF5bG9ySW52U3FydCh2ZWM0IHIpIHsgcmV0dXJuIDEuNzkyODQyOTE0MDAxNTkgLSAwLjg1MzczNDcyMDk1MzE0ICogcjsgfQogICAgICAgICAgICAgICAgZmxvYXQgc25vaXNlKHZlYzMgdikgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlYzIgQyA9IHZlYzIoMS4wLzYuMCwgMS4wLzMuMCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjNCBEID0gdmVjNCgwLjAsIDAuNSwgMS4wLCAyLjApOwogICAgICAgICAgICAgICAgICAgIHZlYzMgaSAgPSBmbG9vcih2ICsgZG90KHYsIEMueXl5KSk7CiAgICAgICAgICAgICAgICAgICAgdmVjMyB4MCA9IHYgLSBpICsgZG90KGksIEMueHh4KTsKICAgICAgICAgICAgICAgICAgICB2ZWMzIGcgPSBzdGVwKHgwLnl6eCwgeDAueHl6KTsKICAgICAgICAgICAgICAgICAgICB2ZWMzIGwgPSAxLjAgLSBnOwogICAgICAgICAgICAgICAgICAgIHZlYzMgaTEgPSBtaW4oIGcueHl6LCBsLnp4eSApOwogICAgICAgICAgICAgICAgICAgIHZlYzMgaTIgPSBtYXgoIGcueHl6LCBsLnp4eSApOwogICAgICAgICAgICAgICAgICAgIHZlYzMgeDEgPSB4MCAtIGkxICsgQy54eHg7CiAgICAgICAgICAgICAgICAgICAgdmVjMyB4MiA9IHgwIC0gaTIgKyBDLnl5eTsKICAgICAgICAgICAgICAgICAgICB2ZWMzIHgzID0geDAgLSBELnl5eTsKICAgICAgICAgICAgICAgICAgICBpID0gbW9kMjg5KGkpOwogICAgICAgICAgICAgICAgICAgIHZlYzQgcCA9IHBlcm11dGUoIHBlcm11dGUoIHBlcm11dGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS56ICsgdmVjNCgwLjAsIGkxLnosIGkyLnosIDEuMCApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBpLnkgKyB2ZWM0KDAuMCwgaTEueSwgaTIueSwgMS4wICkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGkueCArIHZlYzQoMC4wLCBpMS54LCBpMi54LCAxLjAgKSk7CiAgICAgICAgICAgICAgICAgICAgZmxvYXQgbl8gPSAwLjE0Mjg1NzE0Mjg1NzsKICAgICAgICAgICAgICAgICAgICB2ZWMzIG5zID0gbl8gKiBELnd5eiAtIEQueHp4OwogICAgICAgICAgICAgICAgICAgIHZlYzQgaiA9IHAgLSA0OS4wICogZmxvb3IocCAqIG5zLnogKiBucy56KTsKICAgICAgICAgICAgICAgICAgICB2ZWM0IHhfID0gZmxvb3IoaiAqIG5zLnopOwogICAgICAgICAgICAgICAgICAgIHZlYzQgeV8gPSBmbG9vcihqIC0gNy4wICogeF8gKTsKICAgICAgICAgICAgICAgICAgICB2ZWM0IHggPSB4XyAqbnMueCArIG5zLnl5eXk7CiAgICAgICAgICAgICAgICAgICAgdmVjNCB5ID0geV8gKm5zLnggKyBucy55eXl5OwogICAgICAgICAgICAgICAgICAgIHZlYzQgaCA9IDEuMCAtIGFicyh4KSAtIGFicyh5KTsKICAgICAgICAgICAgICAgICAgICB2ZWM0IGIwID0gdmVjNCggeC54eSwgeS54eSApOwogICAgICAgICAgICAgICAgICAgIHZlYzQgYjEgPSB2ZWM0KCB4Lnp3LCB5Lnp3ICk7CiAgICAgICAgICAgICAgICAgICAgdmVjNCBzMCA9IGZsb29yKGIwKSoyLjAgKyAxLjA7CiAgICAgICAgICAgICAgICAgICAgdmVjNCBzMSA9IGZsb29yKGIxKSoyLjAgKyAxLjA7CiAgICAgICAgICAgICAgICAgICAgdmVjNCBzaCA9IC1zdGVwKGgsIHZlYzQoMC4wKSk7CiAgICAgICAgICAgICAgICAgICAgdmVjNCBhMCA9IGIwLnh6eXcgKyBzMC54enl3KnNoLnh4eXk7CiAgICAgICAgICAgICAgICAgICAgdmVjNCBhMSA9IGIxLnh6eXcgKyBzMS54enl3KnNoLnp6d3c7CiAgICAgICAgICAgICAgICAgICAgdmVjMyBwMCA9IHZlYzMoYTAueHksaC54KTsKICAgICAgICAgICAgICAgICAgICB2ZWMzIHAxID0gdmVjMyhhMC56dyxoLnkpOwogICAgICAgICAgICAgICAgICAgIHZlYzMgcDIgPSB2ZWMzKGExLnh5LGgueik7CiAgICAgICAgICAgICAgICAgICAgdmVjMyBwMyA9IHZlYzMoYTEuencsaC53KTsKICAgICAgICAgICAgICAgICAgICB2ZWM0IG5vcm0gPSB0YXlsb3JJbnZTcXJ0KHZlYzQoZG90KHAwLHAwKSwgZG90KHAxLHAxKSwgZG90KHAyLCBwMiksIGRvdChwMyxwMykpKTsKICAgICAgICAgICAgICAgICAgICBwMCAqPSBub3JtLng7CiAgICAgICAgICAgICAgICAgICAgcDEgKj0gbm9ybS55OwogICAgICAgICAgICAgICAgICAgIHAyICo9IG5vcm0uejsKICAgICAgICAgICAgICAgICAgICBwMyAqPSBub3JtLnc7CiAgICAgICAgICAgICAgICAgICAgdmVjNCBtID0gbWF4KDAuNiAtIHZlYzQoZG90KHgwLHgwKSwgZG90KHgxLHgxKSwgZG90KHgyLHgyKSwgZG90KHgzLHgzKSksIDAuMCk7CiAgICAgICAgICAgICAgICAgICAgbSA9IG0gKiBtOwogICAgICAgICAgICAgICAgICAgIHJldHVybiA0Mi4wICogZG90KCBtKm0sIHZlYzQoIGRvdChwMCx4MCksIGRvdChwMSx4MSksIGRvdChwMix4MiksIGRvdChwMyx4MykgKSApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZvaWQgbWFpbigpIHsKICAgICAgICAgICAgICAgICAgICB2VXYgPSB1djsKICAgICAgICAgICAgICAgICAgICB2Tm9ybWFsID0gbm9ybWFsOwogICAgICAgICAgICAgICAgICAgIC8vIE5vaXNlIGRpc3BsYWNlbWVudAogICAgICAgICAgICAgICAgICAgIGZsb2F0IG5vaXNlID0gc25vaXNlKHZlYzMocG9zaXRpb24ueCAqIDEuMiArIHVUaW1lICogMC4xNSwgcG9zaXRpb24ueSAqIDEuMiwgcG9zaXRpb24ueiAqIDEuMikpOwogICAgICAgICAgICAgICAgICAgIHZlYzMgbmV3UG9zaXRpb24gPSBwb3NpdGlvbiArIG5vcm1hbCAqIChub2lzZSAqIDAuMjUpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHZQb3NpdGlvbiA9IChtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KG5ld1Bvc2l0aW9uLCAxLjApKS54eXo7CiAgICAgICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmVjNCh2UG9zaXRpb24sIDEuMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGA7CgogICAgICAgICAgICBjb25zdCBmcmFnbWVudFNoYWRlciA9IGAKICAgICAgICAgICAgICAgIHZhcnlpbmcgdmVjMyB2Tm9ybWFsOwogICAgICAgICAgICAgICAgdmFyeWluZyB2ZWMzIHZQb3NpdGlvbjsKCiAgICAgICAgICAgICAgICAvLyBDb2xvciBwYWxldHRlIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICB2ZWMzIHBhbGV0dGUoIGluIGZsb2F0IHQsIGluIHZlYzMgYSwgaW4gdmVjMyBiLCBpbiB2ZWMzIGMsIGluIHZlYzMgZCApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSArIGIqY29zKCA2LjI4MzE4KihjKnQrZCkgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2b2lkIG1haW4oKSB7CiAgICAgICAgICAgICAgICAgICAgdmVjMyBub3JtYWwgPSBub3JtYWxpemUodk5vcm1hbCk7CiAgICAgICAgICAgICAgICAgICAgdmVjMyB2aWV3RGlyID0gbm9ybWFsaXplKC12UG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIC8vIEZyZXNuZWwgY2FsY3VsYXRpb24KICAgICAgICAgICAgICAgICAgICBmbG9hdCBmcmVzbmVsID0gcG93KDEuMCAtIGNsYW1wKGRvdCh2aWV3RGlyLCBub3JtYWwpLCAwLjAsIDEuMCksIDIuNSk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgLy8gQmFzZSBjb2xvciBtYXBwaW5nIChUZWFscywgZ3JlZW5zLCBzb2Z0IGJsdWVzKQogICAgICAgICAgICAgICAgICAgIHZlYzMgcENvbG9yID0gcGFsZXR0ZShmcmVzbmVsLCB2ZWMzKDAuMSwgMC40LCAwLjMpLCB2ZWMzKDAuMiwgMC41LCAwLjQpLCB2ZWMzKDEuMCksIHZlYzMoMC4wLCAwLjMzLCAwLjY3KSk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgLy8gTWl4IGRhcmsgY29yZSB3aXRoIGx1bWlub3VzIGVkZ2VzCiAgICAgICAgICAgICAgICAgICAgdmVjMyBmaW5hbENvbG9yID0gbWl4KHZlYzMoMC4wMSwgMC4wMSwgMC4wMiksIHBDb2xvciwgZnJlc25lbCAqIDEuNSk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChmaW5hbENvbG9yLCAwLjgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBgOwoKICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWwgPSBuZXcgVEhSRUUuU2hhZGVyTWF0ZXJpYWwoewogICAgICAgICAgICAgICAgdmVydGV4U2hhZGVyLAogICAgICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXIsCiAgICAgICAgICAgICAgICB1bmlmb3JtczogewogICAgICAgICAgICAgICAgICAgIHVUaW1lOiB7IHZhbHVlOiAwIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudDogdHJ1ZSwKICAgICAgICAgICAgICAgIHdpcmVmcmFtZTogZmFsc2UKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBjb25zdCBtZXNoID0gbmV3IFRIUkVFLk1lc2goZ2VvbWV0cnksIG1hdGVyaWFsKTsKICAgICAgICAgICAgc2NlbmUuYWRkKG1lc2gpOwoKICAgICAgICAgICAgLy8gSW50ZXJhY3Rpb24KICAgICAgICAgICAgbGV0IG1vdXNlWCA9IDA7CiAgICAgICAgICAgIGxldCBtb3VzZVkgPSAwOwogICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCAoZSkgPT4gewogICAgICAgICAgICAgICAgbW91c2VYID0gKGUuY2xpZW50WCAvIHdpbmRvdy5pbm5lcldpZHRoKSAqIDIgLSAxOwogICAgICAgICAgICAgICAgbW91c2VZID0gLShlLmNsaWVudFkgLyB3aW5kb3cuaW5uZXJIZWlnaHQpICogMiArIDE7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gQW5pbWF0aW9uIExvb3AKICAgICAgICAgICAgY29uc3QgY2xvY2sgPSBuZXcgVEhSRUUuQ2xvY2soKTsKICAgICAgICAgICAgY29uc3QgdGljayA9ICgpID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IGVsYXBzZWRUaW1lID0gY2xvY2suZ2V0RWxhcHNlZFRpbWUoKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gVXBkYXRlIHVuaWZvcm0KICAgICAgICAgICAgICAgIG1hdGVyaWFsLnVuaWZvcm1zLnVUaW1lLnZhbHVlID0gZWxhcHNlZFRpbWU7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIEJyZWF0aGluZyBwdWxzZQogICAgICAgICAgICAgICAgbWVzaC5wb3NpdGlvbi55ID0gTWF0aC5zaW4oZWxhcHNlZFRpbWUgKiAwLjMpICogMC4xOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBQb2ludGVyIFBhcmFsbGF4CiAgICAgICAgICAgICAgICBtZXNoLnJvdGF0aW9uLnggKz0gKG1vdXNlWSAqIDAuMSAtIG1lc2gucm90YXRpb24ueCkgKiAwLjA1OwogICAgICAgICAgICAgICAgbWVzaC5yb3RhdGlvbi55ICs9IChtb3VzZVggKiAwLjEgLSBtZXNoLnJvdGF0aW9uLnkpICogMC4wNTsKCiAgICAgICAgICAgICAgICAvLyBTY3JvbGwgU3luYwogICAgICAgICAgICAgICAgY29uc3Qgc2Nyb2xsWSA9IHdpbmRvdy5zY3JvbGxZOwogICAgICAgICAgICAgICAgbWVzaC5wb3NpdGlvbi56ID0gLShzY3JvbGxZICogMC4wMDEpOwoKICAgICAgICAgICAgICAgIHJlbmRlcmVyLnJlbmRlcihzY2VuZSwgY2FtZXJhKTsKICAgICAgICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljayk7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICB0aWNrKCk7CgogICAgICAgICAgICAvLyBSZXNpemUKICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHsKICAgICAgICAgICAgICAgIGNhbWVyYS5hc3BlY3QgPSB3aW5kb3cuaW5uZXJXaWR0aCAvIHdpbmRvdy5pbm5lckhlaWdodDsKICAgICAgICAgICAgICAgIGlmKHdpbmRvdy5pbm5lcldpZHRoID4gMTAyNCkgewogICAgICAgICAgICAgICAgICAgIGNhbWVyYS5wb3NpdGlvbi54ID0gMS41OwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjYW1lcmEucG9zaXRpb24ueCA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpOwogICAgICAgICAgICAgICAgcmVuZGVyZXIuc2V0U2l6ZSh3aW5kb3cuaW5uZXJXaWR0aCwgd2luZG93LmlubmVySGVpZ2h0KTsKICAgICAgICAgICAgICAgIHJlbmRlcmVyLnNldFBpeGVsUmF0aW8oTWF0aC5taW4od2luZG93LmRldmljZVBpeGVsUmF0aW8sIDIpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfTsKCiAgICAgICAgaW5pdFdlYkdMKCk7CiAgICA8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==";
const assetFiles = ["assets/page-01-2f563338-39fa-47ea-9761-658d4f3f84db-800w.jpg","assets/page-02-fa51902b-c2a4-4c33-a96e-a8f1ef67edc6-800w.jpg","assets/page-03-724142aa-44a6-48d3-9cf3-761e00d05b78-1600w.jpg"];
const runtimeFiles = ["../../../../assets/runtime/runtime-027051effa47-gsap-min.js","../../../../assets/runtime/runtime-163ebd087cfc-iconify-icon-min.js","../../../../assets/runtime/runtime-25023b521d77-three-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.
Needs: Needs Node.js
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/corner-lasers · 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 corner-lasers.zip