{"id":4608,"date":"2026-03-30T10:34:24","date_gmt":"2026-03-30T02:34:24","guid":{"rendered":"https:\/\/belirollforming.com\/?p=4608"},"modified":"2026-04-03T18:34:22","modified_gmt":"2026-04-03T10:34:22","slug":"precio-de-la-maquina-perfiladora","status":"publish","type":"post","link":"https:\/\/belirollforming.com\/es\/precio-de-la-maquina-perfiladora\/","title":{"rendered":"Precio de la m\u00e1quina perfiladora: 7 secretos definitivos para 2026"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">A <strong>roll forming machine price<\/strong> usually runs from $20,000 to over $200,000 in 2026. The final cost depends heavily on metal thickness, part shape, machine speed, and extra tools. Believe Industry Company is a top global exporter based in Wuxi, China. With 15+ years of expert machine manufacturing experience, and a massive team of 80+ engineers, we offer the best quality and value for your factory.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Knowing the exact <strong>roll forming machine price<\/strong> is very important for your business. It helps you set your factory budget. It also helps you see your true profit over time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In 2026, new tech is changing the metal world. Because of this, prices go up and down. If you want to <a href=\"https:\/\/belirollforming.com\/buy-a-roll-forming-machine\/\" target=\"_blank\" data-type=\"post\" data-id=\"462\" rel=\"noreferrer noopener\">buy a roll forming machine<\/a>, you need to know exactly what changes the cost. You do not want to pay too much. You also do not want a cheap machine that breaks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here are the 7 ultimate secrets about the <strong>roll forming machine price<\/strong> today.<\/p>\n\n\n\n<h2 id=\"1-part-shape-and-design-the-flower-pattern\" class=\"wp-block-heading\">1. Part Shape and Design (The Flower Pattern)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The shape of your metal product is the biggest cost factor. Simple shapes cost less to make. Complex shapes cost more. Engineers use a drawing called a &#8220;flower pattern&#8221; to design the machine.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Simple Shapes:<\/strong> Flat panels need fewer bending steps.<\/li>\n\n\n\n<li><strong>Complex Shapes:<\/strong> Detailed parts need many bending steps to fold the metal slowly.<\/li>\n\n\n\n<li><strong>More Rollers:<\/strong> More steps mean you need more roller stations.<\/li>\n\n\n\n<li><strong>Larger Machine:<\/strong> More rollers make the machine longer and heavier. This raises the total <strong>roll forming machine price<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h3 id=\"cost-impact-table\" class=\"wp-block-heading\">Cost Impact Table<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Profile Type<\/strong><\/td><td><strong>Roller Stations Needed<\/strong><\/td><td><strong>Cost Impact<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong>Simple Flat Panel<\/strong><\/td><td>10 to 14 Stations<\/td><td><strong>Low<\/strong><\/td><\/tr><tr><td><strong>Standard C Purlin<\/strong><\/td><td>14 to 18 Stations<\/td><td><strong>Medium<\/strong><\/td><\/tr><tr><td><strong>Complex Car Part<\/strong><\/td><td>20 to 30+ Stations<\/td><td><strong>High<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 id=\"2-metal-type-and-thickness\" class=\"wp-block-heading\">2. Metal Type and Thickness<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The metal you use changes the <strong>roll forming machine price<\/strong> a lot. Metal thickness and hardness matter.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Thin Metal:<\/strong> Aluminum is easy to bend. It does not need a huge motor.<\/li>\n\n\n\n<li><strong>Thick Metal:<\/strong> High-strength steel is very hard to bend.<\/li>\n\n\n\n<li><strong>Strong Frames:<\/strong> Hard metals need heavy-duty machine frames.<\/li>\n\n\n\n<li><strong>Tough Rollers:<\/strong> They also need tough rollers made of special tool steel like D2 or Cr12MoV.<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Expert Tip:<\/strong> Upgrading to a heavy-duty frame will raise your initial cost. But it will stop the machine from breaking when bending thick steel. This saves you money later!<\/p>\n<\/blockquote>\n\n\n\n<h2 id=\"3-machine-speed-and-cutting-systems\" class=\"wp-block-heading\">3. Machine Speed and Cutting Systems<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Time is money. High-volume factories need fast machines. Fast machines make more parts in a day. But they cost more to buy upfront.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Standard Speed:<\/strong> A normal machine runs at 15 meters per minute.<\/li>\n\n\n\n<li><strong>High Speed:<\/strong> A fast machine can run at 40 meters per minute or more.<\/li>\n\n\n\n<li><strong>Better Motors:<\/strong> Fast machines need strong, precise servo motors.<\/li>\n\n\n\n<li><strong>Flying Shears:<\/strong> Fast lines need flying shears. This tool cuts the metal while it is still moving, so the machine never stops.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">These fast parts increase the <strong>roll forming machine price<\/strong>. However, you can make more products to sell. You can see this great tech in our <a href=\"https:\/\/belirollforming.com\/high-volume-roll-forming\/\" target=\"_blank\" data-type=\"post\" data-id=\"3394\" rel=\"noreferrer noopener\">high volume roll forming<\/a> setups.<\/p>\n\n\n\n<h2 id=\"4-smart-computer-controls-plc\" class=\"wp-block-heading\">4. Smart Computer Controls (PLC)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Modern machines use smart computer brains. These are called Programmable Logic Controllers (PLCs). PLCs run the machine for you automatically.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Fewer Mistakes:<\/strong> Good PLCs stop human errors and save raw metal.<\/li>\n\n\n\n<li><strong>Fast Changes:<\/strong> They allow you to change part sizes quickly with a touch screen.<\/li>\n\n\n\n<li><strong>Data Tracking:<\/strong> They track your daily factory output and warn you if parts need oil.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Smart controls raise the upfront <strong>roll forming machine price<\/strong>. However, they save you a lot of labor money over time because you need fewer workers.<\/p>\n\n\n\n<h2 id=\"5-extra-tools-and-parts\" class=\"wp-block-heading\">5. Extra Tools and Parts<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A basic machine only bends metal. But a real factory line needs more tools to run well and safely.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong><a href=\"https:\/\/belirollforming.com\/product\/5-ton-hydraulic-uncoiler\/\" data-type=\"product\" data-id=\"1840\">Uncoiler<\/a>:<\/strong> You need this machine at the start to hold the heavy steel roll.<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/belirollforming.com\/essential-punch-press-for-roll-forming\/\" data-type=\"post\" data-id=\"3130\">Punch Press<\/a>:<\/strong> You need this unit to punch holes or slots in the metal before it bends.<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/belirollforming.com\/roll-forming-machine-components\/\" data-type=\"post\" data-id=\"1812\">Auto-Stacker<\/a>:<\/strong> You need this table at the end to pack the finished parts neatly.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Adding these extra tools makes the whole line cost more. To see how all these parts work together in a factory, read our <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/belirollforming.com\/roll-forming-machine\/\">comprehensive analysis of roll forming machine<\/a> setups<sup><\/sup><\/p>\n\n\n\n<h2 id=\"6-shipping-and-setup-costs\" class=\"wp-block-heading\">6. Shipping and Setup Costs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ou must pay to move the machine from the builder to your factory. Do not forget this step when planning your budget! It is a big part of the final <strong>roll forming machine price<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Sea Freight:<\/strong> Shipping large machines across the ocean changes in cost often.<\/li>\n\n\n\n<li><strong>Taxes:<\/strong> You must pay import taxes and border fees.<\/li>\n\n\n\n<li><strong>Labor:<\/strong> You must pay for expert workers to set up the machine in your building.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Believe Industry Company helps you ship from Wuxi, China to anywhere in the world safely. We work hard to keep your total <strong>roll forming machine price<\/strong> fair and clear.<\/p>\n\n\n\n<h2 id=\"7-hidden-factory-costs-and-quality\" class=\"wp-block-heading\">7. Hidden Factory Costs and Quality<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Do not just buy the cheapest machine you find. A cheap machine is a bad deal. Cheap machines break often and halt your work.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Bad Rollers:<\/strong> Cheap rollers wear out fast. They will scratch and ruin your good metal.<\/li>\n\n\n\n<li><strong>Weak Motors:<\/strong> Small motors slow down your work and burn out quickly.<\/li>\n\n\n\n<li><strong>Wasted Steel:<\/strong> Bad cuts and bad bending waste expensive metal.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Learn how to avoid the <a href=\"https:\/\/belirollforming.com\/hidden-costs-of-roll-forming-machinery\/\" target=\"_blank\" data-type=\"post\" data-id=\"2412\" rel=\"noreferrer noopener\">hidden costs of roll forming machinery<\/a>. Good machines save you money over many years.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you look closely at the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/believeindustry.company\/roll-forming-machine-cost\/\">roll forming machine cost<\/a> details<sup><\/sup>, you will see that quality matters. A good machine runs smoothly for years. It does not waste metal. Wasting metal costs a lot of money. You can learn more about metal forming trends at authoritative sites like <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/www.thefabricator.com\/\">The Fabricator<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Understanding the <strong>roll forming machine price<\/strong> helps your business grow safely. Take your time. Pick a machine that fits your needs perfectly.<\/p>\n\n\n\n<h2 id=\"simple-2026-cost-calculator\" class=\"wp-block-heading\">Simple 2026 Cost Calculator<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use this simple web tool to guess your total starting cost based on standard 2026 prices.<\/p>\n\n\n\n<meta charset=\"UTF-8\">\n    <title>Beli RollForming &#8211; Engineering Configurator<\/title>\n    <style>\n        body { font-family: 'Segoe UI', Tahoma, sans-serif; background: #f0f2f5; padding: 20px; line-height: 1.6; }\n        .calc-card { background: #fff; max-width: 850px; margin: auto; padding: 40px; border-radius: 12px; box-shadow: 0 10px 30px rgba(0,0,0,0.1); }\n        \n        h2 { color: #1a3a5f; text-align: ; margin-bottom: 30px; border-bottom: 3px solid #d32f2f; padding-bottom: 15px; text-transform: uppercase; letter-spacing: 1px;}\n        \n        .section-header { color: #d32f2f; font-weight: bold; text-transform: uppercase; font-size: 0.9em; margin-top: 35px; letter-spacing: 1.2px; border-left: 4px solid #d32f2f; padding-left: 12px; }\n        .intro-text { font-size: 0.92em; color: #555; margin: 10px 0 20px 0; background: #f8fafc; padding: 15px; border-radius: 6px; border: 1px solid #edf2f7; }\n\n        .preset-container { display: flex; gap: 10px; margin-bottom: 25px; flex-wrap: wrap; }\n        .preset-btn { background: #fff; border: 1px solid #cbd5e0; padding: 10px 20px; border-radius: 6px; cursor: pointer; font-size: 0.85em; font-weight: 600; transition: all 0.3s ease; }\n        .preset-btn:hover { background: #1a3a5f; color: white; border-color: #1a3a5f; transform: translateY(-2px); }\n\n        .input-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 25px; }\n        label { display: block; font-weight: 700; color: #2d3748; font-size: 0.85em; margin-bottom: 8px; }\n        input, select { width: 100%; padding: 12px; border: 1px solid #cbd5e0; border-radius: 6px; box-sizing: border-box; background: #fff; font-size: 14px; }\n        \n        button.main-calc { width: 100%; background: #d32f2f; color: white; border: none; padding: 20px; border-radius: 6px; cursor: pointer; font-size: 1.1em; font-weight: bold; text-transform: uppercase; letter-spacing: 1px; margin-top: 40px; transition: background 0.3s; }\n        button.main-calc:hover { background: #b71c1c; }\n\n        .results { margin-top: 40px; display: none; background: #1a3a5f; color: #fff; padding: 35px; border-radius: 10px; }\n        .res-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 20px; text-align: center; }\n        .res-val { display: block; font-size: 2.2em; font-weight: bold; color: #f1c40f; }\n        .res-lab { font-size: 0.75em; text-transform: uppercase; color: #cbd5e0; font-weight: 800; letter-spacing: 1.5px; margin-bottom: 5px; }\n        .cost-note { font-size: 12px; color: #cbd5e0; margin-top: 20px; text-align: center; font-style: italic; border-top: 1px solid rgba(255,255,255,0.1); padding-top: 15px; }\n        \n        .footer-info { text-align: center; margin-top: 15px; font-size: 11px; }\n    <\/style>\n\n\n\n<div class=\"calc-card\">\n    <h2>Machine Engineering Configurator<\/h2>\n\n    <div class=\"section-header\">Select Machine Application<\/div>\n    <div class=\"intro-text\">\n        Choose a preset profile to load industry-standard parameters. These templates provide a baseline for <strong>Total Bend Angles<\/strong> and <strong>Profile Depth<\/strong> commonly found in global construction standards.\n    <\/div>\n    <div class=\"preset-container\">\n        <button class=\"preset-btn\" onclick=\"setPreset(360, 50)\">C-Purlin<\/button>\n        <button class=\"preset-btn\" onclick=\"setPreset(540, 80)\">Sigma Section<\/button>\n        <button class=\"preset-btn\" onclick=\"setPreset(180, 25)\">U-Channel<\/button>\n        <button class=\"preset-btn\" onclick=\"setPreset(540, 40)\">Omega \/ Hat Channel<\/button>\n    <\/div>\n\n    <div class=\"section-header\">1. Material Specification Analysis<\/div>\n    <div class=\"intro-text\">\n        <strong>Material Thickness<\/strong> and <strong>Yield Strength<\/strong> determine the mechanical resistance. Higher yield materials (G550) require specialized shaft diameters and larger motor torque to ensure precision without springback.\n    <\/div>\n    <div class=\"input-grid\">\n        <div>\n            <label>Material Thickness (mm)<\/label>\n            <input type=\"number\" id=\"t\" value=\"2.0\" step=\"0.1\">\n        <\/div>\n        <div>\n            <label>Steel Yield Strength (MPa)<\/label>\n            <select id=\"yield\">\n                <option value=\"235\">235 MPa (Mild Steel)<\/option>\n                <option value=\"345\" selected=\"\">345 MPa (Standard \/ Q345)<\/option>\n                <option value=\"550\">550 MPa (High Tensile)<\/option>\n            <\/select>\n        <\/div>\n    <\/div>\n\n    <div class=\"section-header\">2. Profile Geometry &amp; Complexity<\/div>\n    <div class=\"intro-text\">\n        <strong>Total Bend Angles<\/strong> represent the cumulative work required. <strong>Profile Depth<\/strong> is critical; deeper walls require more transition stations to prevent material stress and edge waves (oil canning).\n    <\/div>\n    <div class=\"input-grid\">\n        <div>\n            <label>Total Bend Angles (\u00b0)<\/label>\n            <input type=\"number\" id=\"angles\" value=\"360\">\n        <\/div>\n        <div>\n            <label>Profile Depth (mm)<\/label>\n            <input type=\"number\" id=\"depth\" value=\"50\">\n        <\/div>\n    <\/div>\n\n    <div class=\"section-header\">3. Performance &amp; Output Settings<\/div>\n    <div class=\"intro-text\">\n        <strong>Line Speed<\/strong> scales the motor requirement. The <strong>Forming Gradation<\/strong> level determines how many degrees of bend occur per station; smoother gradation results in superior surface finish and stability.\n    <\/div>\n    <div class=\"input-grid\">\n        <div>\n            <label>Production Speed (m\/min)<\/label>\n            <input type=\"number\" id=\"speed\" value=\"15\">\n        <\/div>\n        <div>\n            <label>Precision Gradation<\/label>\n            <select id=\"maxPass\">\n                <option value=\"15\">Standard (Efficient)<\/option>\n                <option value=\"12\" selected=\"\">Smooth (Balanced Quality)<\/option>\n                <option value=\"8\">Precision (High Complexity)<\/option>\n            <\/select>\n        <\/div>\n    <\/div>\n\n    <div class=\"section-header\">4. Logistics &amp; Setup Options<\/div>\n    <div class=\"intro-text\">\n        Include the estimated <strong>Shipping Cost<\/strong> and onsite <strong>Setup Cost<\/strong> to generate a fully comprehensive turnkey budgetary estimate.\n    <\/div>\n    <div class=\"input-grid\">\n        <div>\n            <label>Estimated Shipping Cost ($)<\/label>\n            <input type=\"number\" id=\"shipping\" value=\"5000\" step=\"500\">\n        <\/div>\n        <div>\n            <label>Estimated Setup Cost ($)<\/label>\n            <input type=\"number\" id=\"setup\" value=\"3500\" step=\"500\">\n        <\/div>\n    <\/div>\n\n    <button class=\"main-calc\" onclick=\"calculateMachine()\">Generate Technical Report<\/button>\n\n    <div id=\"results\" class=\"results\">\n        <div class=\"res-grid\">\n            <div>\n                <span class=\"res-lab\">Forming Stations<\/span>\n                <span id=\"outN\" class=\"res-val\">0<\/span>\n            <\/div>\n            <div>\n                <span class=\"res-lab\">Main Motor Power<\/span>\n                <span id=\"outKW\" class=\"res-val\">0 kW<\/span>\n            <\/div>\n            <div>\n                <span class=\"res-lab\">Total Estimated Cost<\/span>\n                <span id=\"outCost\" class=\"res-val\">$0<\/span>\n            <\/div>\n        <\/div>\n        <div class=\"cost-note\">\n            *Budgetary range includes the forming unit, drive system, shipping, and setup. Final pricing depends heavily on automation options, cutting systems, and material handling solutions.\n        <\/div>\n        <div class=\"footer-info\">\n            <strong>Believe Industry Company<\/strong> | <a href=\"http:\/\/www.belirollforming.com\" rel=\"nofollow\">http:\/\/www.belirollforming.com<\/a> | <a href=\"mailto:info@belirollforming.com\">info@belirollforming.com<\/a>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script>\n    function setPreset(angles, depth) {\n        document.getElementById('angles').value = angles;\n        document.getElementById('depth').value = depth;\n    }\n\n    function calculateMachine() {\n        \/\/ Material & Profile Inputs\n        const t = parseFloat(document.getElementById('t').value);\n        const sy = parseFloat(document.getElementById('yield').value);\n        const angles = parseFloat(document.getElementById('angles').value);\n        const depth = parseFloat(document.getElementById('depth').value);\n        \n        \/\/ Performance Inputs\n        const v = parseFloat(document.getElementById('speed').value);\n        const maxPass = parseFloat(document.getElementById('maxPass').value);\n\n        \/\/ Additional Costs Inputs\n        const shipping = parseFloat(document.getElementById('shipping').value) || 0;\n        const setup = parseFloat(document.getElementById('setup').value) || 0;\n\n        \/\/ Station Calculation\n        let nBase = Math.ceil(angles \/ maxPass) + 2;\n        if (depth > 70) nBase += 2; \n        const totalN = Math.max(4, nBase); \n\n        \/\/ Motor Power Calculation\n        const depthFactor = 1 + (depth \/ 200);\n        const rawKW = (0.00018 * sy * (t * t) * v * (totalN \/ 10) * depthFactor) \/ 0.85;\n        const motors = [0.75, 1.5, 2.2, 3.7, 5.5, 7.5, 11, 15, 18.5, 22, 30, 37, 45, 55, 75];\n        const suggestedKW = motors.find(m => m >= rawKW) || rawKW;\n\n        \/\/ Base Machine Cost Calculation\n        const baseStationCost = 2400; \n        const powerCostFactor = 500;  \n        let machineCost = (totalN * baseStationCost) + (suggestedKW * powerCostFactor);\n        \n        \/\/ Apply variance strictly to the machine cost, then add fixed shipping\/setup\n        const machineLow = Math.round((machineCost * 0.9) \/ 500) * 500;\n        const machineHigh = Math.round((machineCost * 1.1) \/ 500) * 500;\n\n        const totalLowRange = machineLow + shipping + setup;\n        const totalHighRange = machineHigh + shipping + setup;\n\n        \/\/ Output to UI\n        document.getElementById('outN').innerText = totalN;\n        document.getElementById('outKW').innerText = suggestedKW.toFixed(1) + \" kW\";\n        document.getElementById('outCost').innerText = \"$\" + totalLowRange.toLocaleString() + \" - \" + totalHighRange.toLocaleString();\n        \n        document.getElementById('results').style.display = 'block';\n    }\n<\/script>\n\n\n\n<h2 id=\"frequently-asked-questions\" class=\"wp-block-heading\">Frequently Asked Questions<\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1774837400172\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>How does my metal choice change the machine price?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>The metal you bend changes the cost of the machine rollers.<br \/><strong>Soft Metals:<\/strong> Aluminum and thin copper use standard steel rollers.<br \/><strong>Hard Metals:<\/strong> High-strength steel needs premium rollers. These are made of tough D2 or Cr12MoV tool steel. Premium rollers cost more upfront. However, they do not crack or wear out when bending hard steel.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1774837413888\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>Are there hidden fees when importing a machine?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>The base price covers the machine itself. But you must plan for other costs.<br \/>You must pay for sea shipping.<br \/>You must pay port fees and import taxes.<br \/>You must pay for factory setup. To protect your budget, read our guide on the <a href=\"https:\/\/belirollforming.com\/hidden-costs-of-roll-forming-machinery\/\" target=\"_blank\" data-type=\"post\" data-id=\"2412\" rel=\"noreferrer noopener\">hidden costs of roll forming machi<\/a><\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1774837451112\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>Does a custom metal shape cost more to build?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>es. Standard shapes (like basic roof panels) have set designs. A brand-new, custom shape is different. Our team of 80+ engineers must draw a new &#8220;flower pattern&#8221; from scratch. This custom math and engineering takes more time. This will increase the final price.<br \/><strong>How long does a new roll forming machine last?<\/strong> A high-quality machine from Believe Industry Company can run heavy jobs for 15 to 20 years. To get the best lifespan, you must take care of it.<br \/>Clean the rollers daily.<br \/>Oil the moving parts often.<br \/>Check the motors for heat. Good upkeep saves you money. Learn more about simple <a href=\"https:\/\/belirollforming.com\/roll-forming-preventative-maintenance\/\" target=\"_blank\" rel=\"noreferrer noopener\">roll forming preventative maintenance<\/a>.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1774837465226\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>Do I really need an automated stacker?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>You do not <em>need<\/em> one, but it is a very smart upgrade for fast lines.<br \/><strong>Basic Setup:<\/strong> The machine drops parts onto a table. Workers stack them by hand.<br \/><strong>Auto-Stacker:<\/strong> A robot table catches and stacks the parts perfectly. An auto-stacker raises the starting price. But, it cuts your labor costs because you need fewer workers on the floor.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1774837483000\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>Can I test the machine before I pay the final bill?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes! We test every machine at our factory in Wuxi, China.<br \/>We load your actual steel coil into the machine.<br \/>We run the machine at full speed.<br \/>We measure the finished parts to make sure they are perfect. We only ship the machine to you after it passes these strict tests.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1774837517736\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>What is the normal roll forming machine price?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Prices change a lot based on features. A simple machine costs around $20,000 to $30,000. A huge, fast machine line can easily cost over $200,000.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1774837523476\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>Why are Chinese machines cheaper?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Factories in China, like Believe Industry Company in Wuxi, make parts very fast. They buy strong steel in huge amounts. This makes the overall cost much lower for you.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1774837561948\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>Can I get a custom machine just for my parts?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes! Believe Industry Company makes custom machines all the time. Our expert engineers design the machine rollers to fit your exact metal shapes perfectly.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n<h2 id=\"conclusion\" class=\"wp-block-heading\"><strong>Conclusion<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Finding the best <strong>roll forming machine price<\/strong> takes time and smart planning. You must look closely at the shape of your metal parts and the factory speed you need. A cheap machine might cost you more later if it breaks down often. A good machine runs fast, stays strong, and saves your metal from waste. With 15+ years of expert work and over 80 expert engineers, Believe Industry Company is here to help you win in the market.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ready to upgrade your factory line? Contact BELI&#8217;s engineering team today for a free, custom quote! Reach out to us via WhatsApp at <a href=\"https:\/\/wa.me\/+8618616927760\" target=\"_blank\" rel=\"noopener\">+8618616927760<\/a> or send us an <a href=\"mailto:enquiry@believeindustry.com\">email<\/a>.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A roll forming machine price usually runs from $20,000 to over $200,000 in 2026. The final cost depends heavily on metal thickness, part shape, machine speed, and extra tools. Believe Industry Company is a top global exporter based in Wuxi, China. With 15+ years of expert machine manufacturing experience, and a massive team of 80+ [&hellip;]<\/p>\n","protected":false},"author":136317769,"featured_media":4622,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_angie_page":false,"_gspb_post_css":"","_crdt_document":"{\"document\":\"AAAH0L2hwQ2SBq8FCLIBvOUHAREuAgECCgEAShICAQIKAkIBAEpUpg0BAgoCQgEASgCKBgECCgJCAQBKALwMAQIKAkIBAEoAjgMBAgoCQgEASgCwAQECCgJCAQBKAJQGAQIKAQBKEgIBAgoCQkoAnAIBAgoCQkoAlAMBAgoCQkoArAIBAgoCQkrwCKwNAQIKAkIBAEoAOAECCgEDSgAaAQIKAkIBAEoAjAEBAgoCQgEASgCABAECCgEAShICAQIKAkJKALwCAQIKAkJKAKACAQIKAkJKAKgCAQIKAkJK2AiADAECCgEAShICAQIKAkIBAEpUoAYBAgoCQgEASgCeAQECCgJCAQBKAJwEAQIKAQBKEgIBAgoCQkoAsAIBAgoCQkoAugIBAgoCQkoAsgIBAgoCQkrwCJwNAQIKAkIBAEoAqAoBAgoCQgEASgCWAQECCgJCAQBKALIEAQIKAQBKEgIBAgoCQkoAsgIBAgoCQkoAkAMBAgoCQkrWBrAJAQIKAkIBAEoAnAUBAgoCQgEASgCGAQECCgJCAQBKAJoDAQIKAQFKFAIBAgoCQkoApgYBAgoCQkoAggcBAgoCQkr+DaYUAQIKAkIBAEoAnAkBAgoCQgEASgCMAQECCgJCAQBKAJQGAQIKAQBKEgIBAgoCQkoAjAMBAgoCQkoAlgIBAgoCQkr2BYYJAQIKAkIBAEoAgAYBAgoCQgEASgCcAQECCgJCAQBKAI4EAQIKAQBKEgIBAgoCQkoAngMBAgoCQkoAugIBAgoCQkrsBpoJAQIKAkIBAEoApggBAgoCQgEASgC+DwECCgJCAQBKAJAFAQIKAkIBAEoAjAEBAgoCQgEASgCIAwECCgBKABIBAgoCQgEASgCKAQECCgEGSgAgAQIKAkIBAEoAjAEBAgoCQgEASgCKDgECCgJCAQBKAMMGKAMnAAQAJwAEACcAKAYnACgVJwAHACgDJwAoACcAKAAnAAcAKAMnAQQAKAInAIcAKAMnAQQAKAInAIcAKAMnAQQAKAInAIcAKAMnAQQAKAInAIcAKAMnAQQAKAInAIcAKAMnAQQAKAInAIcAKAMnACgCJwAHACgDJwEEACgAJwCHACgDJwEEACgAJwCHACgDJwEEACgAJwCHACgDJwEEACgAJwCHACgDJwEEACgCJwCHACgDJwAoACcAKAMnAIcAKAMnAQQAKAInAIcAKAMnAQQAKAInAIcAKAMnACgCJwAHACgDJwEEACgAJwCHACgDJwEEACgAJwCHACgDJwEEACgAJwCHACgDJwEEACgAJwCHACgDJwAoACcAKAAnAAcAKAMnAQQAKAInAIcAKAMnAQQAKAInAIcAKAMnAQQAKAInAIcAKAMnACgCJwAHACgDJwEEACgAJwCHACgDJwEEACgAJwCHACgDJwEEACgAJwCHACgDJwEEACgAJwCHACgDJwEEACgCJwCHACgDJwEEACgCJwCHACgDJwEEACgCJwCHACgDJwAoAicABwAoAycBBAAoACcAhwAoAycBBAAoACcAhwAoAycBBAAoACcAhwAoAycBBAAoAicAhwAoAycBBAAoAicAhwAoAycBBAAoAicAhwAoAycAKAMnAAcAKAMnAQQAKAAnAIcAKAMnAQQAKAAnAIcAKAMnAQQAKAAnAIcAKAMnAQQAKAInAIcAKAMnAQQAKAInAIcAKAMnAQQAKAInAIcAKAMnACgCJwAHACgDJwEEACgAJwCHACgDJwEEACgAJwCHACgDJwEEACgAJwCHACgDJwEEACgCJwCHACgDJwEEACgCJwCHACgDJwEEACgCJwCHACgDJwAoAicABwAoAycBBAAoACcAhwAoAycBBAAoACcAhwAoAycBBAAoACcAhwAoAycBBAAoAicAhwAoAycBBAAoAicAhwAoAycBBAAoAicAhwAoAycBBAAoAicAhwAoAycBBAAoAicAhwAoAycAKAEnAIcAKAMnAQQAKAInAIcAKAMnACgIJwCHACgDJwEEACgCJwCHACgDJwEEACgCJwCHACgDJwEEACgCJ6n1AobvAnN0YXRldmVyc2lvbmRvY3VtZW50ZGF0ZWRvY3VtZW50c2x1Z2RvY3VtZW50c3RhdHVzZG9jdW1lbnR0aXRsZVJvbGwgRm9ybWluZyBNYWNoaW5lIFByaWNlOiA3IEJlc3QgVWx0aW1hdGUgMjAyNiBTZWNyZXRzZG9jdW1lbnRjb250ZW50PCEtLSB3cDpxdW90ZSAtLT4KPGJsb2NrcXVvdGUgY2xhc3M9IndwLWJsb2NrLXF1b3RlIj48IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+QSA8c3Ryb25nPnJvbGwgZm9ybWluZyBtYWNoaW5lIHByaWNlPC9zdHJvbmc+IHVzdWFsbHkgcnVucyBmcm9tICQyMCwwMDAgdG8gb3ZlciAkMjAwLDAwMCBpbiAyMDI2LiBUaGUgZmluYWwgY29zdCBkZXBlbmRzIGhlYXZpbHkgb24gbWV0YWwgdGhpY2tuZXNzLCBwYXJ0IHNoYXBlLCBtYWNoaW5lIHNwZWVkLCBhbmQgZXh0cmEgdG9vbHMuIEJlbGlldmUgSW5kdXN0cnkgQ29tcGFueSBpcyBhIHRvcCBnbG9iYWwgZXhwb3J0ZXIgYmFzZWQgaW4gV3V4aSwgQ2hpbmEuIFdpdGggMTUrIHllYXJzIG9mIGV4cGVydCBtYWNoaW5lIG1hbnVmYWN0dXJpbmcgZXhwZXJpZW5jZSwgYW5kIGEgbWFzc2l2ZSB0ZWFtIG9mIDgwKyBlbmdpbmVlcnMsIHdlIG9mZmVyIHRoZSBiZXN0IHF1YWxpdHkgYW5kIHZhbHVlIGZvciB5b3VyIGZhY3RvcnkuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+PC9ibG9ja3F1b3RlPgo8IS0tIC93cDpxdW90ZSAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Lbm93aW5nIHRoZSBleGFjdCA8c3Ryb25nPnJvbGwgZm9ybWluZyBtYWNoaW5lIHByaWNlPC9zdHJvbmc+IGlzIHZlcnkgaW1wb3J0YW50IGZvciB5b3VyIGJ1c2luZXNzLiBJdCBoZWxwcyB5b3Ugc2V0IHlvdXIgZmFjdG9yeSBidWRnZXQuIEl0IGFsc28gaGVscHMgeW91IHNlZSB5b3VyIHRydWUgcHJvZml0IG92ZXIgdGltZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5JbiAyMDI2LCBuZXcgdGVjaCBpcyBjaGFuZ2luZyB0aGUgbWV0YWwgd29ybGQuIEJlY2F1c2Ugb2YgdGhpcywgcHJpY2VzIGdvIHVwIGFuZCBkb3duLiBJZiB5b3Ugd2FudCB0byA8YSBocmVmPSJodHRwczovL2JlbGlyb2xsZm9ybWluZy5jb20vYnV5LWEtcm9sbC1mb3JtaW5nLW1hY2hpbmUvIiB0YXJnZXQ9Il9ibGFuayIgZGF0YS10eXBlPSJwb3N0IiBkYXRhLWlkPSI0NjIiIHJlbD0ibm9yZWZlcnJlciBub29wZW5lciI+YnV5IGEgcm9sbCBmb3JtaW5nIG1hY2hpbmU8L2E+LCB5b3UgbmVlZCB0byBrbm93IGV4YWN0bHkgd2hhdCBjaGFuZ2VzIHRoZSBjb3N0LiBZb3UgZG8gbm90IHdhbnQgdG8gcGF5IHRvbyBtdWNoLiBZb3UgYWxzbyBkbyBub3Qgd2FudCBhIGNoZWFwIG1hY2hpbmUgdGhhdCBicmVha3MuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+SGVyZSBhcmUgdGhlIDcgdWx0aW1hdGUgc2VjcmV0cyBhYm91dCB0aGUgPHN0cm9uZz5yb2xsIGZvcm1pbmcgbWFjaGluZSBwcmljZTwvc3Ryb25nPiB0b2RheS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImFuY2hvciI6IjEtcGFydC1zaGFwZS1hbmQtZGVzaWduLXRoZS1mbG93ZXItcGF0dGVybiJ9IC0tPgo8aDIgaWQ9IjEtcGFydC1zaGFwZS1hbmQtZGVzaWduLXRoZS1mbG93ZXItcGF0dGVybiIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjEuIFBhcnQgU2hhcGUgYW5kIERlc2lnbiAoVGhlIEZsb3dlciBQYXR0ZXJuKTwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhlIHNoYXBlIG9mIHlvdXIgbWV0YWwgcHJvZHVjdCBpcyB0aGUgYmlnZ2VzdCBjb3N0IGZhY3Rvci4gU2ltcGxlIHNoYXBlcyBjb3N0IGxlc3MgdG8gbWFrZS4gQ29tcGxleCBzaGFwZXMgY29zdCBtb3JlLiBFbmdpbmVlcnMgdXNlIGEgZHJhd2luZyBjYWxsZWQgYSAiZmxvd2VyIHBhdHRlcm4iIHRvIGRlc2lnbiB0aGUgbWFjaGluZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6bGlzdCAtLT4KPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij48IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPjxzdHJvbmc+U2ltcGxlIFNoYXBlczo8L3N0cm9uZz4gRmxhdCBwYW5lbHMgbmVlZCBmZXdlciBiZW5kaW5nIHN0ZXBzLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+PHN0cm9uZz5Db21wbGV4IFNoYXBlczo8L3N0cm9uZz4gRGV0YWlsZWQgcGFydHMgbmVlZCBtYW55IGJlbmRpbmcgc3RlcHMgdG8gZm9sZCB0aGUgbWV0YWwgc2xvd2x5LjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+PHN0cm9uZz5Nb3JlIFJvbGxlcnM6PC9zdHJvbmc+IE1vcmUgc3RlcHMgbWVhbiB5b3UgbmVlZCBtb3JlIHJvbGxlciBzdGF0aW9ucy48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPjxzdHJvbmc+TGFyZ2VyIE1hY2hpbmU6PC9zdHJvbmc+IE1vcmUgcm9sbGVycyBtYWtlIHRoZSBtYWNoaW5lIGxvbmdlciBhbmQgaGVhdmllci4gVGhpcyByYWlzZXMgdGhlIHRvdGFsIDxzdHJvbmc+cm9sbCBmb3JtaW5nIG1hY2hpbmUgcHJpY2U8L3N0cm9uZz4uPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPjwvdWw+CjwhLS0gL3dwOmxpc3QgLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6MywiYW5jaG9yIjoiY29zdC1pbXBhY3QtdGFibGUifSAtLT4KPGgzIGlkPSJjb3N0LWltcGFjdC10YWJsZSIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPkNvc3QgSW1wYWN0IFRhYmxlPC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6dGFibGUgLS0+CjxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLXRhYmxlIj48dGFibGUgY2xhc3M9Imhhcy1maXhlZC1sYXlvdXQiPjx0aGVhZD48dHI+PHRkPjxzdHJvbmc+UHJvZmlsZSBUeXBlPC9zdHJvbmc+PC90ZD48dGQ+PHN0cm9uZz5Sb2xsZXIgU3RhdGlvbnMgTmVlZGVkPC9zdHJvbmc+PC90ZD48dGQ+PHN0cm9uZz5Db3N0IEltcGFjdDwvc3Ryb25nPjwvdGQ+PC90cj48L3RoZWFkPjx0Ym9keT48dHI+PHRkPjxzdHJvbmc+U2ltcGxlIEZsYXQgUGFuZWw8L3N0cm9uZz48L3RkPjx0ZD4xMCB0byAxNCBTdGF0aW9uczwvdGQ+PHRkPjxzdHJvbmc+TG93PC9zdHJvbmc+PC90ZD48L3RyPjx0cj48dGQ+PHN0cm9uZz5TdGFuZGFyZCBDIFB1cmxpbjwvc3Ryb25nPjwvdGQ+PHRkPjE0IHRvIDE4IFN0YXRpb25zPC90ZD48dGQ+PHN0cm9uZz5NZWRpdW08L3N0cm9uZz48L3RkPjwvdHI+PHRyPjx0ZD48c3Ryb25nPkNvbXBsZXggQ2FyIFBhcnQ8L3N0cm9uZz48L3RkPjx0ZD4yMCB0byAzMCsgU3RhdGlvbnM8L3RkPjx0ZD48c3Ryb25nPkhpZ2g8L3N0cm9uZz48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvZmlndXJlPgo8IS0tIC93cDp0YWJsZSAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImFuY2hvciI6IjItbWV0YWwtdHlwZS1hbmQtdGhpY2tuZXNzIn0gLS0+CjxoMiBpZD0iMi1tZXRhbC10eXBlLWFuZC10aGlja25lc3MiIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj4yLiBNZXRhbCBUeXBlIGFuZCBUaGlja25lc3M8L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZSBtZXRhbCB5b3UgdXNlIGNoYW5nZXMgdGhlIDxzdHJvbmc+cm9sbCBmb3JtaW5nIG1hY2hpbmUgcHJpY2U8L3N0cm9uZz4gYSBsb3QuIE1ldGFsIHRoaWNrbmVzcyBhbmQgaGFyZG5lc3MgbWF0dGVyLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpsaXN0IC0tPgo8dWwgY2xhc3M9IndwLWJsb2NrLWxpc3QiPjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+PHN0cm9uZz5UaGluIE1ldGFsOjwvc3Ryb25nPiBBbHVtaW51bSBpcyBlYXN5IHRvIGJlbmQuIEl0IGRvZXMgbm90IG5lZWQgYSBodWdlIG1vdG9yLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+PHN0cm9uZz5UaGljayBNZXRhbDo8L3N0cm9uZz4gSGlnaC1zdHJlbmd0aCBzdGVlbCBpcyB2ZXJ5IGhhcmQgdG8gYmVuZC48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPjxzdHJvbmc+U3Ryb25nIEZyYW1lczo8L3N0cm9uZz4gSGFyZCBtZXRhbHMgbmVlZCBoZWF2eS1kdXR5IG1hY2hpbmUgZnJhbWVzLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+PHN0cm9uZz5Ub3VnaCBSb2xsZXJzOjwvc3Ryb25nPiBUaGV5IGFsc28gbmVlZCB0b3VnaCByb2xsZXJzIG1hZGUgb2Ygc3BlY2lhbCB0b29sIHN0ZWVsIGxpa2UgRDIgb3IgQ3IxMk1vVi48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+PC91bD4KPCEtLSAvd3A6bGlzdCAtLT4KCjwhLS0gd3A6cXVvdGUgLS0+CjxibG9ja3F1b3RlIGNsYXNzPSJ3cC1ibG9jay1xdW90ZSI+PCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPjxzdHJvbmc+RXhwZXJ0IFRpcDo8L3N0cm9uZz4gVXBncmFkaW5nIHRvIGEgaGVhdnktZHV0eSBmcmFtZSB3aWxsIHJhaXNlIHlvdXIgaW5pdGlhbCBjb3N0LiBCdXQgaXQgd2lsbCBzdG9wIHRoZSBtYWNoaW5lIGZyb20gYnJlYWtpbmcgd2hlbiBiZW5kaW5nIHRoaWNrIHN0ZWVsLiBUaGlzIHNhdmVzIHlvdSBtb25leSBsYXRlciE8L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT48L2Jsb2NrcXVvdGU+CjwhLS0gL3dwOnF1b3RlIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsiYW5jaG9yIjoiMy1tYWNoaW5lLXNwZWVkLWFuZC1jdXR0aW5nLXN5c3RlbXMifSAtLT4KPGgyIGlkPSIzLW1hY2hpbmUtc3BlZWQtYW5kLWN1dHRpbmctc3lzdGVtcyIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjMuIE1hY2hpbmUgU3BlZWQgYW5kIEN1dHRpbmcgU3lzdGVtczwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGltZSBpcyBtb25leS4gSGlnaC12b2x1bWUgZmFjdG9yaWVzIG5lZWQgZmFzdCBtYWNoaW5lcy4gRmFzdCBtYWNoaW5lcyBtYWtlIG1vcmUgcGFydHMgaW4gYSBkYXkuIEJ1dCB0aGV5IGNvc3QgbW9yZSB0byBidXkgdXBmcm9udC48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6bGlzdCAtLT4KPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij48IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPjxzdHJvbmc+U3RhbmRhcmQgU3BlZWQ6PC9zdHJvbmc+IEEgbm9ybWFsIG1hY2hpbmUgcnVucyBhdCAxNSBtZXRlcnMgcGVyIG1pbnV0ZS48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPjxzdHJvbmc+SGlnaCBTcGVlZDo8L3N0cm9uZz4gQSBmYXN0IG1hY2hpbmUgY2FuIHJ1biBhdCA0MCBtZXRlcnMgcGVyIG1pbnV0ZSBvciBtb3JlLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+PHN0cm9uZz5CZXR0ZXIgTW90b3JzOjwvc3Ryb25nPiBGYXN0IG1hY2hpbmVzIG5lZWQgc3Ryb25nLCBwcmVjaXNlIHNlcnZvIG1vdG9ycy48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPjxzdHJvbmc+Rmx5aW5nIFNoZWFyczo8L3N0cm9uZz4gRmFzdCBsaW5lcyBuZWVkIGZseWluZyBzaGVhcnMuIFRoaXMgdG9vbCBjdXRzIHRoZSBtZXRhbCB3aGlsZSBpdCBpcyBzdGlsbCBtb3ZpbmcsIHNvIHRoZSBtYWNoaW5lIG5ldmVyIHN0b3BzLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT48L3VsPgo8IS0tIC93cDpsaXN0IC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZXNlIGZhc3QgcGFydHMgaW5jcmVhc2UgdGhlIDxzdHJvbmc+cm9sbCBmb3JtaW5nIG1hY2hpbmUgcHJpY2U8L3N0cm9uZz4uIEhvd2V2ZXIsIHlvdSBjYW4gbWFrZSBtb3JlIHByb2R1Y3RzIHRvIHNlbGwuIFlvdSBjYW4gc2VlIHRoaXMgZ3JlYXQgdGVjaCBpbiBvdXIgPGEgaHJlZj0iaHR0cHM6Ly9iZWxpcm9sbGZvcm1pbmcuY29tL2hpZ2gtdm9sdW1lLXJvbGwtZm9ybWluZy8iIHRhcmdldD0iX2JsYW5rIiBkYXRhLXR5cGU9InBvc3QiIGRhdGEtaWQ9IjMzOTQiIHJlbD0ibm9yZWZlcnJlciBub29wZW5lciI+aGlnaCB2b2x1bWUgcm9sbCBmb3JtaW5nPC9hPiBzZXR1cHMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJhbmNob3IiOiI0LXNtYXJ0LWNvbXB1dGVyLWNvbnRyb2xzLXBsYyJ9IC0tPgo8aDIgaWQ9IjQtc21hcnQtY29tcHV0ZXItY29udHJvbHMtcGxjIiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+NC4gU21hcnQgQ29tcHV0ZXIgQ29udHJvbHMgKFBMQyk8L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPk1vZGVybiBtYWNoaW5lcyB1c2Ugc21hcnQgY29tcHV0ZXIgYnJhaW5zLiBUaGVzZSBhcmUgY2FsbGVkIFByb2dyYW1tYWJsZSBMb2dpYyBDb250cm9sbGVycyAoUExDcykuIFBMQ3MgcnVuIHRoZSBtYWNoaW5lIGZvciB5b3UgYXV0b21hdGljYWxseS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6bGlzdCAtLT4KPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij48IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPjxzdHJvbmc+RmV3ZXIgTWlzdGFrZXM6PC9zdHJvbmc+IEdvb2QgUExDcyBzdG9wIGh1bWFuIGVycm9ycyBhbmQgc2F2ZSByYXcgbWV0YWwuPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT48c3Ryb25nPkZhc3QgQ2hhbmdlczo8L3N0cm9uZz4gVGhleSBhbGxvdyB5b3UgdG8gY2hhbmdlIHBhcnQgc2l6ZXMgcXVpY2tseSB3aXRoIGEgdG91Y2ggc2NyZWVuLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+PHN0cm9uZz5EYXRhIFRyYWNraW5nOjwvc3Ryb25nPiBUaGV5IHRyYWNrIHlvdXIgZGFpbHkgZmFjdG9yeSBvdXRwdXQgYW5kIHdhcm4geW91IGlmIHBhcnRzIG5lZWQgb2lsLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT48L3VsPgo8IS0tIC93cDpsaXN0IC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlNtYXJ0IGNvbnRyb2xzIHJhaXNlIHRoZSB1cGZyb250IDxzdHJvbmc+cm9sbCBmb3JtaW5nIG1hY2hpbmUgcHJpY2U8L3N0cm9uZz4uIEhvd2V2ZXIsIHRoZXkgc2F2ZSB5b3UgYSBsb3Qgb2YgbGFib3IgbW9uZXkgb3ZlciB0aW1lIGJlY2F1c2UgeW91IG5lZWQgZmV3ZXIgd29ya2Vycy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImFuY2hvciI6IjUtZXh0cmEtdG9vbHMtYW5kLXBhcnRzIn0gLS0+CjxoMiBpZD0iNS1leHRyYS10b29scy1hbmQtcGFydHMiIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj41LiBFeHRyYSBUb29scyBhbmQgUGFydHM8L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkEgYmFzaWMgbWFjaGluZSBvbmx5IGJlbmRzIG1ldGFsLiBCdXQgYSByZWFsIGZhY3RvcnkgbGluZSBuZWVkcyBtb3JlIHRvb2xzIHRvIHJ1biB3ZWxsIGFuZCBzYWZlbHkuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmxpc3QgeyJvcmRlcmVkIjp0cnVlLCJzdGFydCI6MX0gLS0+CjxvbCBzdGFydD0iMSIgY2xhc3M9IndwLWJsb2NrLWxpc3QiPjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+PHN0cm9uZz48YSBocmVmPSJodHRwczovL2JlbGlyb2xsZm9ybWluZy5jb20vcHJvZHVjdC81LXRvbi1oeWRyYXVsaWMtdW5jb2lsZXIvIiBkYXRhLXR5cGU9InByb2R1Y3QiIGRhdGEtaWQ9IjE4NDAiPlVuY29pbGVyPC9hPjo8L3N0cm9uZz4gWW91IG5lZWQgdGhpcyBtYWNoaW5lIGF0IHRoZSBzdGFydCB0byBob2xkIHRoZSBoZWF2eSBzdGVlbCByb2xsLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+PHN0cm9uZz48YSBocmVmPSJodHRwczovL2JlbGlyb2xsZm9ybWluZy5jb20vZXNzZW50aWFsLXB1bmNoLXByZXNzLWZvci1yb2xsLWZvcm1pbmcvIiBkYXRhLXR5cGU9InBvc3QiIGRhdGEtaWQ9IjMxMzAiPlB1bmNoIFByZXNzPC9hPjo8L3N0cm9uZz4gWW91IG5lZWQgdGhpcyB1bml0IHRvIHB1bmNoIGhvbGVzIG9yIHNsb3RzIGluIHRoZSBtZXRhbCBiZWZvcmUgaXQgYmVuZHMuPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT48c3Ryb25nPjxhIGhyZWY9Imh0dHBzOi8vYmVsaXJvbGxmb3JtaW5nLmNvbS9yb2xsLWZvcm1pbmctbWFjaGluZS1jb21wb25lbnRzLyIgZGF0YS10eXBlPSJwb3N0IiBkYXRhLWlkPSIxODEyIj5BdXRvLVN0YWNrZXI8L2E+Ojwvc3Ryb25nPiBZb3UgbmVlZCB0aGlzIHRhYmxlIGF0IHRoZSBlbmQgdG8gcGFjayB0aGUgZmluaXNoZWQgcGFydHMgbmVhdGx5LjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT48L29sPgo8IS0tIC93cDpsaXN0IC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkFkZGluZyB0aGVzZSBleHRyYSB0b29scyBtYWtlcyB0aGUgd2hvbGUgbGluZSBjb3N0IG1vcmUuIFRvIHNlZSBob3cgYWxsIHRoZXNlIHBhcnRzIHdvcmsgdG9nZXRoZXIgaW4gYSBmYWN0b3J5LCByZWFkIG91ciA8YSB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub3JlZmVycmVyIG5vb3BlbmVyIiBocmVmPSJodHRwczovL2JlbGlyb2xsZm9ybWluZy5jb20vcm9sbC1mb3JtaW5nLW1hY2hpbmUvIj5jb21wcmVoZW5zaXZlIGFuYWx5c2lzIG9mIHJvbGwgZm9ybWluZyBtYWNoaW5lPC9hPiBzZXR1cHM8c3VwPjwvc3VwPjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsiYW5jaG9yIjoiNi1zaGlwcGluZy1hbmQtc2V0dXAtY29zdHMifSAtLT4KPGgyIGlkPSI2LXNoaXBwaW5nLWFuZC1zZXR1cC1jb3N0cyIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjYuIFNoaXBwaW5nIGFuZCBTZXR1cCBDb3N0czwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+b3UgbXVzdCBwYXkgdG8gbW92ZSB0aGUgbWFjaGluZSBmcm9tIHRoZSBidWlsZGVyIHRvIHlvdXIgZmFjdG9yeS4gRG8gbm90IGZvcmdldCB0aGlzIHN0ZXAgd2hlbiBwbGFubmluZyB5b3VyIGJ1ZGdldCEgSXQgaXMgYSBiaWcgcGFydCBvZiB0aGUgZmluYWwgPHN0cm9uZz5yb2xsIGZvcm1pbmcgbWFjaGluZSBwcmljZTwvc3Ryb25nPi48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6bGlzdCAtLT4KPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij48IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPjxzdHJvbmc+U2VhIEZyZWlnaHQ6PC9zdHJvbmc+IFNoaXBwaW5nIGxhcmdlIG1hY2hpbmVzIGFjcm9zcyB0aGUgb2NlYW4gY2hhbmdlcyBpbiBjb3N0IG9mdGVuLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+PHN0cm9uZz5UYXhlczo8L3N0cm9uZz4gWW91IG11c3QgcGF5IGltcG9ydCB0YXhlcyBhbmQgYm9yZGVyIGZlZXMuPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT48c3Ryb25nPkxhYm9yOjwvc3Ryb25nPiBZb3UgbXVzdCBwYXkgZm9yIGV4cGVydCB3b3JrZXJzIHRvIHNldCB1cCB0aGUgbWFjaGluZSBpbiB5b3VyIGJ1aWxkaW5nLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT48L3VsPgo8IS0tIC93cDpsaXN0IC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkJlbGlldmUgSW5kdXN0cnkgQ29tcGFueSBoZWxwcyB5b3Ugc2hpcCBmcm9tIFd1eGksIENoaW5hIHRvIGFueXdoZXJlIGluIHRoZSB3b3JsZCBzYWZlbHkuIFdlIHdvcmsgaGFyZCB0byBrZWVwIHlvdXIgdG90YWwgPHN0cm9uZz5yb2xsIGZvcm1pbmcgbWFjaGluZSBwcmljZTwvc3Ryb25nPiBmYWlyIGFuZCBjbGVhci48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImFuY2hvciI6IjctaGlkZGVuLWZhY3RvcnktY29zdHMtYW5kLXF1YWxpdHkifSAtLT4KPGgyIGlkPSI3LWhpZGRlbi1mYWN0b3J5LWNvc3RzLWFuZC1xdWFsaXR5IiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+Ny4gSGlkZGVuIEZhY3RvcnkgQ29zdHMgYW5kIFF1YWxpdHk8L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkRvIG5vdCBqdXN0IGJ1eSB0aGUgY2hlYXBlc3QgbWFjaGluZSB5b3UgZmluZC4gQSBjaGVhcCBtYWNoaW5lIGlzIGEgYmFkIGRlYWwuIENoZWFwIG1hY2hpbmVzIGJyZWFrIG9mdGVuIGFuZCBoYWx0IHlvdXIgd29yay48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6bGlzdCAtLT4KPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij48IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPjxzdHJvbmc+QmFkIFJvbGxlcnM6PC9zdHJvbmc+IENoZWFwIHJvbGxlcnMgd2VhciBvdXQgZmFzdC4gVGhleSB3aWxsIHNjcmF0Y2ggYW5kIHJ1aW4geW91ciBnb29kIG1ldGFsLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+PHN0cm9uZz5XZWFrIE1vdG9yczo8L3N0cm9uZz4gU21hbGwgbW90b3JzIHNsb3cgZG93biB5b3VyIHdvcmsgYW5kIGJ1cm4gb3V0IHF1aWNrbHkuPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT48c3Ryb25nPldhc3RlZCBTdGVlbDo8L3N0cm9uZz4gQmFkIGN1dHMgYW5kIGJhZCBiZW5kaW5nIHdhc3RlIGV4cGVuc2l2ZSBtZXRhbC48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+PC91bD4KPCEtLSAvd3A6bGlzdCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5MZWFybiBob3cgdG8gYXZvaWQgdGhlIDxhIGhyZWY9Imh0dHBzOi8vYmVsaXJvbGxmb3JtaW5nLmNvbS9oaWRkZW4tY29zdHMtb2Ytcm9sbC1mb3JtaW5nLW1hY2hpbmVyeS8iIHRhcmdldD0iX2JsYW5rIiBkYXRhLXR5cGU9InBvc3QiIGRhdGEtaWQ9IjI0MTIiIHJlbD0ibm9yZWZlcnJlciBub29wZW5lciI+aGlkZGVuIGNvc3RzIG9mIHJvbGwgZm9ybWluZyBtYWNoaW5lcnk8L2E+LiBHb29kIG1hY2hpbmVzIHNhdmUgeW91IG1vbmV5IG92ZXIgbWFueSB5ZWFycy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5JZiB5b3UgbG9vayBjbG9zZWx5IGF0IHRoZSA8YSB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub3JlZmVycmVyIG5vb3BlbmVyIiBocmVmPSJodHRwczovL2JlbGlldmVpbmR1c3RyeS5jb21wYW55L3JvbGwtZm9ybWluZy1tYWNoaW5lLWNvc3QvIj5yb2xsIGZvcm1pbmcgbWFjaGluZSBjb3N0PC9hPiBkZXRhaWxzPHN1cD48L3N1cD4sIHlvdSB3aWxsIHNlZSB0aGF0IHF1YWxpdHkgbWF0dGVycy4gQSBnb29kIG1hY2hpbmUgcnVucyBzbW9vdGhseSBmb3IgeWVhcnMuIEl0IGRvZXMgbm90IHdhc3RlIG1ldGFsLiBXYXN0aW5nIG1ldGFsIGNvc3RzIGEgbG90IG9mIG1vbmV5LiBZb3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQgbWV0YWwgZm9ybWluZyB0cmVuZHMgYXQgYXV0aG9yaXRhdGl2ZSBzaXRlcyBsaWtlIDxhIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vcmVmZXJyZXIgbm9vcGVuZXIiIGhyZWY9Imh0dHBzOi8vd3d3LnRoZWZhYnJpY2F0b3IuY29tLyI+VGhlIEZhYnJpY2F0b3I8L2E+LjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlVuZGVyc3RhbmRpbmcgdGhlIDxzdHJvbmc+cm9sbCBmb3JtaW5nIG1hY2hpbmUgcHJpY2U8L3N0cm9uZz4gaGVscHMgeW91ciBidXNpbmVzcyBncm93IHNhZmVseS4gVGFrZSB5b3VyIHRpbWUuIFBpY2sgYSBtYWNoaW5lIHRoYXQgZml0cyB5b3VyIG5lZWRzIHBlcmZlY3RseS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImFuY2hvciI6InNpbXBsZS0yMDI2LWNvc3QtY2FsY3VsYXRvciJ9IC0tPgo8aDIgaWQ9InNpbXBsZS0yMDI2LWNvc3QtY2FsY3VsYXRvciIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPlNpbXBsZSAyMDI2IENvc3QgQ2FsY3VsYXRvcjwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VXNlIHRoaXMgc2ltcGxlIHdlYiB0b29sIHRvIGd1ZXNzIHlvdXIgdG90YWwgc3RhcnRpbmcgY29zdCBiYXNlZCBvbiBzdGFuZGFyZCAyMDI2IHByaWNlcy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aHRtbCAtLT4KPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogICAgPHRpdGxlPkJlbGkgUm9sbEZvcm1pbmcgLSBFbmdpbmVlcmluZyBDb25maWd1cmF0b3I8L3RpdGxlPgogICAgPHN0eWxlPgogICAgICAgIGJvZHkgeyBmb250LWZhbWlseTogJ1NlZ29lIFVJJywgVGFob21hLCBzYW5zLXNlcmlmOyBiYWNrZ3JvdW5kOiAjZjBmMmY1OyBwYWRkaW5nOiAyMHB4OyBsaW5lLWhlaWdodDogMS42OyB9CiAgICAgICAgLmNhbGMtY2FyZCB7IGJhY2tncm91bmQ6ICNmZmY7IG1heC13aWR0aDogODUwcHg7IG1hcmdpbjogYXV0bzsgcGFkZGluZzogNDBweDsgYm9yZGVyLXJhZGl1czogMTJweDsgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgwLDAsMCwwLjEpOyB9CiAgICAgICAgCiAgICAgICAgaDIgeyBjb2xvcjogIzFhM2E1ZjsgdGV4dC1hbGlnbjogOyBtYXJnaW4tYm90dG9tOiAzMHB4OyBib3JkZXItYm90dG9tOiAzcHggc29saWQgI2QzMmYyZjsgcGFkZGluZy1ib3R0b206IDE1cHg7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOiAxcHg7fQogICAgICAgIAogICAgICAgIC5zZWN0aW9uLWhlYWRlciB7IGNvbG9yOiAjZDMyZjJmOyBmb250LXdlaWdodDogYm9sZDsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgZm9udC1zaXplOiAwLjllbTsgbWFyZ2luLXRvcDogMzVweDsgbGV0dGVyLXNwYWNpbmc6IDEuMnB4OyBib3JkZXItbGVmdDogNHB4IHNvbGlkICNkMzJmMmY7IHBhZGRpbmctbGVmdDogMTJweDsgfQogICAgICAgIC5pbnRyby10ZXh0IHsgZm9udC1zaXplOiAwLjkyZW07IGNvbG9yOiAjNTU1OyBtYXJnaW46IDEwcHggMCAyMHB4IDA7IGJhY2tncm91bmQ6ICNmOGZhZmM7IHBhZGRpbmc6IDE1cHg7IGJvcmRlci1yYWRpdXM6IDZweDsgYm9yZGVyOiAxcHggc29saWQgI2VkZjJmNzsgfQoKICAgICAgICAucHJlc2V0LWNvbnRhaW5lciB7IGRpc3BsYXk6IGZsZXg7IGdhcDogMTBweDsgbWFyZ2luLWJvdHRvbTogMjVweDsgZmxleC13cmFwOiB3cmFwOyB9CiAgICAgICAgLnByZXNldC1idG4geyBiYWNrZ3JvdW5kOiAjZmZmOyBib3JkZXI6IDFweCBzb2xpZCAjY2JkNWUwOyBwYWRkaW5nOiAxMHB4IDIwcHg7IGJvcmRlci1yYWRpdXM6IDZweDsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDAuODVlbTsgZm9udC13ZWlnaHQ6IDYwMDsgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsgfQogICAgICAgIC5wcmVzZXQtYnRuOmhvdmVyIHsgYmFja2dyb3VuZDogIzFhM2E1ZjsgY29sb3I6IHdoaXRlOyBib3JkZXItY29sb3I6ICMxYTNhNWY7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsgfQoKICAgICAgICAuaW5wdXQtZ3JpZCB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsgZ2FwOiAyNXB4OyB9CiAgICAgICAgbGFiZWwgeyBkaXNwbGF5OiBibG9jazsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6ICMyZDM3NDg7IGZvbnQtc2l6ZTogMC44NWVtOyBtYXJnaW4tYm90dG9tOiA4cHg7IH0KICAgICAgICBpbnB1dCwgc2VsZWN0IHsgd2lkdGg6IDEwMCU7IHBhZGRpbmc6IDEycHg7IGJvcmRlcjogMXB4IHNvbGlkICNjYmQ1ZTA7IGJvcmRlci1yYWRpdXM6IDZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgYmFja2dyb3VuZDogI2ZmZjsgZm9udC1zaXplOiAxNHB4OyB9CiAgICAgICAgCiAgICAgICAgYnV0dG9uLm1haW4tY2FsYyB7IHdpZHRoOiAxMDAlOyBiYWNrZ3JvdW5kOiAjZDMyZjJmOyBjb2xvcjogd2hpdGU7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMjBweDsgYm9yZGVyLXJhZGl1czogNnB4OyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMS4xZW07IGZvbnQtd2VpZ2h0OiBib2xkOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW4tdG9wOiA0MHB4OyB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuM3M7IH0KICAgICAgICBidXR0b24ubWFpbi1jYWxjOmhvdmVyIHsgYmFja2dyb3VuZDogI2I3MWMxYzsgfQoKICAgICAgICAucmVzdWx0cyB7IG1hcmdpbi10b3A6IDQwcHg7IGRpc3BsYXk6IG5vbmU7IGJhY2tncm91bmQ6ICMxYTNhNWY7IGNvbG9yOiAjZmZmOyBwYWRkaW5nOiAzNXB4OyBib3JkZXItcmFkaXVzOiAxMHB4OyB9CiAgICAgICAgLnJlcy1ncmlkIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyIDFmcjsgZ2FwOiAyMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KICAgICAgICAucmVzLXZhbCB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IDIuMmVtOyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICNmMWM0MGY7IH0KICAgICAgICAucmVzLWxhYiB7IGZvbnQtc2l6ZTogMC43NWVtOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBjb2xvcjogI2NiZDVlMDsgZm9udC13ZWlnaHQ6IDgwMDsgbGV0dGVyLXNwYWNpbmc6IDEuNXB4OyBtYXJnaW4tYm90dG9tOiA1cHg7IH0KICAgICAgICAuY29zdC1ub3RlIHsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogI2NiZDVlMDsgbWFyZ2luLXRvcDogMjBweDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXN0eWxlOiBpdGFsaWM7IGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMSk7IHBhZGRpbmctdG9wOiAxNXB4OyB9CiAgICAgICAgCiAgICAgICAgLmZvb3Rlci1pbmZvIHsgdGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOiAxNXB4OyBmb250LXNpemU6IDExcHg7IH0KICAgIDwvc3R5bGU+CgoKCjxkaXYgY2xhc3M9ImNhbGMtY2FyZCI+CiAgICA8aDI+TWFjaGluZSBFbmdpbmVlcmluZyBDb25maWd1cmF0b3I8L2gyPgoKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24taGVhZGVyIj5TZWxlY3QgTWFjaGluZSBBcHBsaWNhdGlvbjwvZGl2PgogICAgPGRpdiBjbGFzcz0iaW50cm8tdGV4dCI+CiAgICAgICAgQ2hvb3NlIGEgcHJlc2V0IHByb2ZpbGUgdG8gbG9hZCBpbmR1c3RyeS1zdGFuZGFyZCBwYXJhbWV0ZXJzLiBUaGVzZSB0ZW1wbGF0ZXMgcHJvdmlkZSBhIGJhc2VsaW5lIGZvciA8c3Ryb25nPlRvdGFsIEJlbmQgQW5nbGVzPC9zdHJvbmc+IGFuZCA8c3Ryb25nPlByb2ZpbGUgRGVwdGg8L3N0cm9uZz4gY29tbW9ubHkgZm91bmQgaW4gZ2xvYmFsIGNvbnN0cnVjdGlvbiBzdGFuZGFyZHMuCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InByZXNldC1jb250YWluZXIiPgogICAgICAgIDxidXR0b24gY2xhc3M9InByZXNldC1idG4iIG9uY2xpY2s9InNldFByZXNldCgzNjAsIDUwKSI+Qy1QdXJsaW48L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJwcmVzZXQtYnRuIiBvbmNsaWNrPSJzZXRQcmVzZXQoNTQwLCA4MCkiPlNpZ21hIFNlY3Rpb248L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJwcmVzZXQtYnRuIiBvbmNsaWNrPSJzZXRQcmVzZXQoMTgwLCAyNSkiPlUtQ2hhbm5lbDwvYnV0dG9uPgogICAgICAgIDxidXR0b24gY2xhc3M9InByZXNldC1idG4iIG9uY2xpY2s9InNldFByZXNldCg1NDAsIDQwKSI+T21lZ2EgLyBIYXQgQ2hhbm5lbDwvYnV0dG9uPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1oZWFkZXIiPjEuIE1hdGVyaWFsIFNwZWNpZmljYXRpb24gQW5hbHlzaXM8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImludHJvLXRleHQiPgogICAgICAgIDxzdHJvbmc+TWF0ZXJpYWwgVGhpY2tuZXNzPC9zdHJvbmc+IGFuZCA8c3Ryb25nPllpZWxkIFN0cmVuZ3RoPC9zdHJvbmc+IGRldGVybWluZSB0aGUgbWVjaGFuaWNhbCByZXNpc3RhbmNlLiBIaWdoZXIgeWllbGQgbWF0ZXJpYWxzIChHNTUwKSByZXF1aXJlIHNwZWNpYWxpemVkIHNoYWZ0IGRpYW1ldGVycyBhbmQgbGFyZ2VyIG1vdG9yIHRvcnF1ZSB0byBlbnN1cmUgcHJlY2lzaW9uIHdpdGhvdXQgc3ByaW5nYmFjay4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iaW5wdXQtZ3JpZCI+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGxhYmVsPk1hdGVyaWFsIFRoaWNrbmVzcyAobW0pPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9InQiIHZhbHVlPSIyLjAiIHN0ZXA9IjAuMSI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGxhYmVsPlN0ZWVsIFlpZWxkIFN0cmVuZ3RoIChNUGEpPC9sYWJlbD4KICAgICAgICAgICAgPHNlbGVjdCBpZD0ieWllbGQiPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMjM1Ij4yMzUgTVBhIChNaWxkIFN0ZWVsKTwvb3B0aW9uPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMzQ1IiBzZWxlY3RlZD0iIj4zNDUgTVBhIChTdGFuZGFyZCAvIFEzNDUpPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI1NTAiPjU1MCBNUGEgKEhpZ2ggVGVuc2lsZSk8L29wdGlvbj4KICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWhlYWRlciI+Mi4gUHJvZmlsZSBHZW9tZXRyeSAmYW1wOyBDb21wbGV4aXR5PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJpbnRyby10ZXh0Ij4KICAgICAgICA8c3Ryb25nPlRvdGFsIEJlbmQgQW5nbGVzPC9zdHJvbmc+IHJlcHJlc2VudCB0aGUgY3VtdWxhdGl2ZSB3b3JrIHJlcXVpcmVkLiA8c3Ryb25nPlByb2ZpbGUgRGVwdGg8L3N0cm9uZz4gaXMgY3JpdGljYWw7IGRlZXBlciB3YWxscyByZXF1aXJlIG1vcmUgdHJhbnNpdGlvbiBzdGF0aW9ucyB0byBwcmV2ZW50IG1hdGVyaWFsIHN0cmVzcyBhbmQgZWRnZSB3YXZlcyAob2lsIGNhbm5pbmcpLgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJpbnB1dC1ncmlkIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgICA8bGFiZWw+VG90YWwgQmVuZCBBbmdsZXMgKMKwKTwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSJhbmdsZXMiIHZhbHVlPSIzNjAiPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxsYWJlbD5Qcm9maWxlIERlcHRoIChtbSk8L2xhYmVsPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0iZGVwdGgiIHZhbHVlPSI1MCI+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWhlYWRlciI+My4gUGVyZm9ybWFuY2UgJmFtcDsgT3V0cHV0IFNldHRpbmdzPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJpbnRyby10ZXh0Ij4KICAgICAgICA8c3Ryb25nPkxpbmUgU3BlZWQ8L3N0cm9uZz4gc2NhbGVzIHRoZSBtb3RvciByZXF1aXJlbWVudC4gVGhlIDxzdHJvbmc+Rm9ybWluZyBHcmFkYXRpb248L3N0cm9uZz4gbGV2ZWwgZGV0ZXJtaW5lcyBob3cgbWFueSBkZWdyZWVzIG9mIGJlbmQgb2NjdXIgcGVyIHN0YXRpb247IHNtb290aGVyIGdyYWRhdGlvbiByZXN1bHRzIGluIHN1cGVyaW9yIHN1cmZhY2UgZmluaXNoIGFuZCBzdGFiaWxpdHkuCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyaWQiPgogICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxsYWJlbD5Qcm9kdWN0aW9uIFNwZWVkIChtL21pbik8L2xhYmVsPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0ic3BlZWQiIHZhbHVlPSIxNSI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGxhYmVsPlByZWNpc2lvbiBHcmFkYXRpb248L2xhYmVsPgogICAgICAgICAgICA8c2VsZWN0IGlkPSJtYXhQYXNzIj4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjE1Ij5TdGFuZGFyZCAoRWZmaWNpZW50KTwvb3B0aW9uPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTIiIHNlbGVjdGVkPSIiPlNtb290aCAoQmFsYW5jZWQgUXVhbGl0eSk8L29wdGlvbj4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjgiPlByZWNpc2lvbiAoSGlnaCBDb21wbGV4aXR5KTwvb3B0aW9uPgogICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24taGVhZGVyIj40LiBMb2dpc3RpY3MgJmFtcDsgU2V0dXAgT3B0aW9uczwvZGl2PgogICAgPGRpdiBjbGFzcz0iaW50cm8tdGV4dCI+CiAgICAgICAgSW5jbHVkZSB0aGUgZXN0aW1hdGVkIDxzdHJvbmc+U2hpcHBpbmcgQ29zdDwvc3Ryb25nPiBhbmQgb25zaXRlIDxzdHJvbmc+U2V0dXAgQ29zdDwvc3Ryb25nPiB0byBnZW5lcmF0ZSBhIGZ1bGx5IGNvbXByZWhlbnNpdmUgdHVybmtleSBidWRnZXRhcnkgZXN0aW1hdGUuCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyaWQiPgogICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxsYWJlbD5Fc3RpbWF0ZWQgU2hpcHBpbmcgQ29zdCAoJCk8L2xhYmVsPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0ic2hpcHBpbmciIHZhbHVlPSI1MDAwIiBzdGVwPSI1MDAiPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxsYWJlbD5Fc3RpbWF0ZWQgU2V0dXAgQ29zdCAoJCk8L2xhYmVsPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0ic2V0dXAiIHZhbHVlPSIzNTAwIiBzdGVwPSI1MDAiPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGJ1dHRvbiBjbGFzcz0ibWFpbi1jYWxjIiBvbmNsaWNrPSJjYWxjdWxhdGVNYWNoaW5lKCkiPkdlbmVyYXRlIFRlY2huaWNhbCBSZXBvcnQ8L2J1dHRvbj4KCiAgICA8ZGl2IGlkPSJyZXN1bHRzIiBjbGFzcz0icmVzdWx0cyI+CiAgICAgICAgPGRpdiBjbGFzcz0icmVzLWdyaWQiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJlcy1sYWIiPkZvcm1pbmcgU3RhdGlvbnM8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBpZD0ib3V0TiIgY2xhc3M9InJlcy12YWwiPjA8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJlcy1sYWIiPk1haW4gTW90b3IgUG93ZXI8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBpZD0ib3V0S1ciIGNsYXNzPSJyZXMtdmFsIj4wIGtXPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJyZXMtbGFiIj5Ub3RhbCBFc3RpbWF0ZWQgQ29zdDwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJvdXRDb3N0IiBjbGFzcz0icmVzLXZhbCI+JDA8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNvc3Qtbm90ZSI+CiAgICAgICAgICAgICpCdWRnZXRhcnkgcmFuZ2UgaW5jbHVkZXMgdGhlIGZvcm1pbmcgdW5pdCwgZHJpdmUgc3lzdGVtLCBzaGlwcGluZywgYW5kIHNldHVwLiBGaW5hbCBwcmljaW5nIGRlcGVuZHMgaGVhdmlseSBvbiBhdXRvbWF0aW9uIG9wdGlvbnMsIGN1dHRpbmcgc3lzdGVtcywgYW5kIG1hdGVyaWFsIGhhbmRsaW5nIHNvbHV0aW9ucy4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItaW5mbyI+CiAgICAgICAgICAgIDxzdHJvbmc+QmVsaWV2ZSBJbmR1c3RyeSBDb21wYW55PC9zdHJvbmc+IHwgd3d3LmJlbGlyb2xsZm9ybWluZy5jb20gfCBpbmZvQGJlbGlyb2xsZm9ybWluZy5jb20KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KCjxzY3JpcHQ+CiAgICBmdW5jdGlvbiBzZXRQcmVzZXQoYW5nbGVzLCBkZXB0aCkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbmdsZXMnKS52YWx1ZSA9IGFuZ2xlczsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVwdGgnKS52YWx1ZSA9IGRlcHRoOwogICAgfQoKICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZU1hY2hpbmUoKSB7CiAgICAgICAgLy8gTWF0ZXJpYWwgJiBQcm9maWxlIElucHV0cwogICAgICAgIGNvbnN0IHQgPSBwYXJzZUZsb2F0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0JykudmFsdWUpOwogICAgICAgIGNvbnN0IHN5ID0gcGFyc2VGbG9hdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneWllbGQnKS52YWx1ZSk7CiAgICAgICAgY29uc3QgYW5nbGVzID0gcGFyc2VGbG9hdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5nbGVzJykudmFsdWUpOwogICAgICAgIGNvbnN0IGRlcHRoID0gcGFyc2VGbG9hdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVwdGgnKS52YWx1ZSk7CiAgICAgICAgCiAgICAgICAgLy8gUGVyZm9ybWFuY2UgSW5wdXRzCiAgICAgICAgY29uc3QgdiA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwZWVkJykudmFsdWUpOwogICAgICAgIGNvbnN0IG1heFBhc3MgPSBwYXJzZUZsb2F0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYXhQYXNzJykudmFsdWUpOwoKICAgICAgICAvLyBBZGRpdGlvbmFsIENvc3RzIElucHV0cwogICAgICAgIGNvbnN0IHNoaXBwaW5nID0gcGFyc2VGbG9hdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hpcHBpbmcnKS52YWx1ZSkgfHwgMDsKICAgICAgICBjb25zdCBzZXR1cCA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NldHVwJykudmFsdWUpIHx8IDA7CgogICAgICAgIC8vIFN0YXRpb24gQ2FsY3VsYXRpb24KICAgICAgICBsZXQgbkJhc2UgPSBNYXRoLmNlaWwoYW5nbGVzIC8gbWF4UGFzcykgKyAyOwogICAgICAgIGlmIChkZXB0aCA+IDcwKSBuQmFzZSArPSAyOyAKICAgICAgICBjb25zdCB0b3RhbE4gPSBNYXRoLm1heCg0LCBuQmFzZSk7IAoKICAgICAgICAvLyBNb3RvciBQb3dlciBDYWxjdWxhdGlvbgogICAgICAgIGNvbnN0IGRlcHRoRmFjdG9yID0gMSArIChkZXB0aCAvIDIwMCk7CiAgICAgICAgY29uc3QgcmF3S1cgPSAoMC4wMDAxOCAqIHN5ICogKHQgKiB0KSAqIHYgKiAodG90YWxOIC8gMTApICogZGVwdGhGYWN0b3IpIC8gMC44NTsKICAgICAgICBjb25zdCBtb3RvcnMgPSBbMC43NSwgMS41LCAyLjIsIDMuNywgNS41LCA3LjUsIDExLCAxNSwgMTguNSwgMjIsIDMwLCAzNywgNDUsIDU1LCA3NV07CiAgICAgICAgY29uc3Qgc3VnZ2VzdGVkS1cgPSBtb3RvcnMuZmluZChtID0+IG0gPj0gcmF3S1cpIHx8IHJhd0tXOwoKICAgICAgICAvLyBCYXNlIE1hY2hpbmUgQ29zdCBDYWxjdWxhdGlvbgogICAgICAgIGNvbnN0IGJhc2VTdGF0aW9uQ29zdCA9IDI0MDA7IAogICAgICAgIGNvbnN0IHBvd2VyQ29zdEZhY3RvciA9IDUwMDsgIAogICAgICAgIGxldCBtYWNoaW5lQ29zdCA9ICh0b3RhbE4gKiBiYXNlU3RhdGlvbkNvc3QpICsgKHN1Z2dlc3RlZEtXICogcG93ZXJDb3N0RmFjdG9yKTsKICAgICAgICAKICAgICAgICAvLyBBcHBseSB2YXJpYW5jZSBzdHJpY3RseSB0byB0aGUgbWFjaGluZSBjb3N0LCB0aGVuIGFkZCBmaXhlZCBzaGlwcGluZy9zZXR1cAogICAgICAgIGNvbnN0IG1hY2hpbmVMb3cgPSBNYXRoLnJvdW5kKChtYWNoaW5lQ29zdCAqIDAuOSkgLyA1MDApICogNTAwOwogICAgICAgIGNvbnN0IG1hY2hpbmVIaWdoID0gTWF0aC5yb3VuZCgobWFjaGluZUNvc3QgKiAxLjEpIC8gNTAwKSAqIDUwMDsKCiAgICAgICAgY29uc3QgdG90YWxMb3dSYW5nZSA9IG1hY2hpbmVMb3cgKyBzaGlwcGluZyArIHNldHVwOwogICAgICAgIGNvbnN0IHRvdGFsSGlnaFJhbmdlID0gbWFjaGluZUhpZ2ggKyBzaGlwcGluZyArIHNldHVwOwoKICAgICAgICAvLyBPdXRwdXQgdG8gVUkKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3V0TicpLmlubmVyVGV4dCA9IHRvdGFsTjsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3V0S1cnKS5pbm5lclRleHQgPSBzdWdnZXN0ZWRLVy50b0ZpeGVkKDEpICsgIiBrVyI7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ291dENvc3QnKS5pbm5lclRleHQgPSAiJCIgKyB0b3RhbExvd1JhbmdlLnRvTG9jYWxlU3RyaW5nKCkgKyAiIC0gIiArIHRvdGFsSGlnaFJhbmdlLnRvTG9jYWxlU3RyaW5nKCk7CiAgICAgICAgCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHMnKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgIH0KPC9zY3JpcHQ+CjwhLS0gL3dwOmh0bWwgLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJhbmNob3IiOiJmcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucyJ9IC0tPgo8aDIgaWQ9ImZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zIiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+RnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnM8L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpyYW5rLW1hdGgvZmFxLWJsb2NrIHsicXVlc3Rpb25zIjpbeyJpZCI6ImZhcS1xdWVzdGlvbi0xNzc0ODM3NDAwMTcyIiwidGl0bGUiOiJcdTAwM2NzdHJvbmdcdTAwM2VIb3cgZG9lcyBteSBtZXRhbCBjaG9pY2UgY2hhbmdlIHRoZSBtYWNoaW5lIHByaWNlP1x1MDAzYy9zdHJvbmdcdTAwM2UiLCJjb250ZW50IjoiVGhlIG1ldGFsIHlvdSBiZW5kIGNoYW5nZXMgdGhlIGNvc3Qgb2YgdGhlIG1hY2hpbmUgcm9sbGVycy5cdTAwM2Niclx1MDAzZVx1MDAzY3N0cm9uZ1x1MDAzZVNvZnQgTWV0YWxzOlx1MDAzYy9zdHJvbmdcdTAwM2UgQWx1bWludW0gYW5kIHRoaW4gY29wcGVyIHVzZSBzdGFuZGFyZCBzdGVlbCByb2xsZXJzLlx1MDAzY2JyXHUwMDNlXHUwMDNjc3Ryb25nXHUwMDNlSGFyZCBNZXRhbHM6XHUwMDNjL3N0cm9uZ1x1MDAzZSBIaWdoLXN0cmVuZ3RoIHN0ZWVsIG5lZWRzIHByZW1pdW0gcm9sbGVycy4gVGhlc2UgYXJlIG1hZGUgb2YgdG91Z2ggRDIgb3IgQ3IxMk1vViB0b29sIHN0ZWVsLiBQcmVtaXVtIHJvbGxlcnMgY29zdCBtb3JlIHVwZnJvbnQuIEhvd2V2ZXIsIHRoZXkgZG8gbm90IGNyYWNrIG9yIHdlYXIgb3V0IHdoZW4gYmVuZGluZyBoYXJkIHN0ZWVsLiIsInZpc2libGUiOnRydWV9LHsiaWQiOiJmYXEtcXVlc3Rpb24tMTc3NDgzNzQxMzg4OCIsInRpdGxlIjoiXHUwMDNjc3Ryb25nXHUwMDNlQXJlIHRoZXJlIGhpZGRlbiBmZWVzIHdoZW4gaW1wb3J0aW5nIGEgbWFjaGluZT9cdTAwM2Mvc3Ryb25nXHUwMDNlIiwiY29udGVudCI6IlRoZSBiYXNlIHByaWNlIGNvdmVycyB0aGUgbWFjaGluZSBpdHNlbGYuIEJ1dCB5b3UgbXVzdCBwbGFuIGZvciBvdGhlciBjb3N0cy5cdTAwM2Niclx1MDAzZVlvdSBtdXN0IHBheSBmb3Igc2VhIHNoaXBwaW5nLlx1MDAzY2JyXHUwMDNlWW91IG11c3QgcGF5IHBvcnQgZmVlcyBhbmQgaW1wb3J0IHRheGVzLlx1MDAzY2JyXHUwMDNlWW91IG11c3QgcGF5IGZvciBmYWN0b3J5IHNldHVwLiBUbyBwcm90ZWN0IHlvdXIgYnVkZ2V0LCByZWFkIG91ciBndWlkZSBvbiB0aGUgXHUwMDNjYSBocmVmPVx1MDAyMmh0dHBzOi8vYmVsaXJvbGxmb3JtaW5nLmNvbS9oaWRkZW4tY29zdHMtb2Ytcm9sbC1mb3JtaW5nLW1hY2hpbmVyeS9cdTAwMjIgdGFyZ2V0PVx1MDAyMl9ibGFua1x1MDAyMiBkYXRhLXR5cGU9XHUwMDIycG9zdFx1MDAyMiBkYXRhLWlkPVx1MDAyMjI0MTJcdTAwMjIgcmVsPVx1MDAyMm5vcmVmZXJyZXIgbm9vcGVuZXJcdTAwMjJcdTAwM2VoaWRkZW4gY29zdHMgb2Ygcm9sbCBmb3JtaW5nIG1hY2hpXHUwMDNjL2FcdTAwM2UiLCJ2aXNpYmxlIjp0cnVlfSx7ImlkIjoiZmFxLXF1ZXN0aW9uLTE3NzQ4Mzc0NTExMTIiLCJ0aXRsZSI6Ilx1MDAzY3N0cm9uZ1x1MDAzZURvZXMgYSBjdXN0b20gbWV0YWwgc2hhcGUgY29zdCBtb3JlIHRvIGJ1aWxkP1x1MDAzYy9zdHJvbmdcdTAwM2UiLCJjb250ZW50IjoiZXMuIFN0YW5kYXJkIHNoYXBlcyAobGlrZSBiYXNpYyByb29mIHBhbmVscykgaGF2ZSBzZXQgZGVzaWducy4gQSBicmFuZC1uZXcsIGN1c3RvbSBzaGFwZSBpcyBkaWZmZXJlbnQuIE91ciB0ZWFtIG9mIDgwKyBlbmdpbmVlcnMgbXVzdCBkcmF3IGEgbmV3IFx1MDAyMmZsb3dlciBwYXR0ZXJuXHUwMDIyIGZyb20gc2NyYXRjaC4gVGhpcyBjdXN0b20gbWF0aCBhbmQgZW5naW5lZXJpbmcgdGFrZXMgbW9yZSB0aW1lLiBUaGlzIHdpbGwgaW5jcmVhc2UgdGhlIGZpbmFsIHByaWNlLlx1MDAzY2JyXHUwMDNlXHUwMDNjc3Ryb25nXHUwMDNlSG93IGxvbmcgZG9lcyBhIG5ldyByb2xsIGZvcm1pbmcgbWFjaGluZSBsYXN0P1x1MDAzYy9zdHJvbmdcdTAwM2UgQSBoaWdoLXF1YWxpdHkgbWFjaGluZSBmcm9tIEJlbGlldmUgSW5kdXN0cnkgQ29tcGFueSBjYW4gcnVuIGhlYXZ5IGpvYnMgZm9yIDE1IHRvIDIwIHllYXJzLiBUbyBnZXQgdGhlIGJlc3QgbGlmZXNwYW4sIHlvdSBtdXN0IHRha2UgY2FyZSBvZiBpdC5cdTAwM2Niclx1MDAzZUNsZWFuIHRoZSByb2xsZXJzIGRhaWx5Llx1MDAzY2JyXHUwMDNlT2lsIHRoZSBtb3ZpbmcgcGFydHMgb2Z0ZW4uXHUwMDNjYnJcdTAwM2VDaGVjayB0aGUgbW90b3JzIGZvciBoZWF0LiBHb29kIHVwa2VlcCBzYXZlcyB5b3UgbW9uZXkuIExlYXJuIG1vcmUgYWJvdXQgc2ltcGxlIFx1MDAzY2EgaHJlZj1cdTAwMjJodHRwczovL2JlbGlyb2xsZm9ybWluZy5jb20vcm9sbC1mb3JtaW5nLXByZXZlbnRhdGl2ZS1tYWludGVuYW5jZS9cdTAwMjIgdGFyZ2V0PVx1MDAyMl9ibGFua1x1MDAyMiByZWw9XHUwMDIybm9yZWZlcnJlciBub29wZW5lclx1MDAyMlx1MDAzZXJvbGwgZm9ybWluZyBwcmV2ZW50YXRpdmUgbWFpbnRlbmFuY2VcdTAwM2MvYVx1MDAzZS4iLCJ2aXNpYmxlIjp0cnVlfSx7ImlkIjoiZmFxLXF1ZXN0aW9uLTE3NzQ4Mzc0NjUyMjYiLCJ0aXRsZSI6Ilx1MDAzY3N0cm9uZ1x1MDAzZURvIEkgcmVhbGx5IG5lZWQgYW4gYXV0b21hdGVkIHN0YWNrZXI\/XHUwMDNjL3N0cm9uZ1x1MDAzZSIsImNvbnRlbnQiOiJZb3UgZG8gbm90IFx1MDAzY2VtXHUwMDNlbmVlZFx1MDAzYy9lbVx1MDAzZSBvbmUsIGJ1dCBpdCBpcyBhIHZlcnkgc21hcnQgdXBncmFkZSBmb3IgZmFzdCBsaW5lcy5cdTAwM2Niclx1MDAzZVx1MDAzY3N0cm9uZ1x1MDAzZUJhc2ljIFNldHVwOlx1MDAzYy9zdHJvbmdcdTAwM2UgVGhlIG1hY2hpbmUgZHJvcHMgcGFydHMgb250byBhIHRhYmxlLiBXb3JrZXJzIHN0YWNrIHRoZW0gYnkgaGFuZC5cdTAwM2Niclx1MDAzZVx1MDAzY3N0cm9uZ1x1MDAzZUF1dG8tU3RhY2tlcjpcdTAwM2Mvc3Ryb25nXHUwMDNlIEEgcm9ib3QgdGFibGUgY2F0Y2hlcyBhbmQgc3RhY2tzIHRoZSBwYXJ0cyBwZXJmZWN0bHkuIEFuIGF1dG8tc3RhY2tlciByYWlzZXMgdGhlIHN0YXJ0aW5nIHByaWNlLiBCdXQsIGl0IGN1dHMgeW91ciBsYWJvciBjb3N0cyBiZWNhdXNlIHlvdSBuZWVkIGZld2VyIHdvcmtlcnMgb24gdGhlIGZsb29yLiIsInZpc2libGUiOnRydWV9LHsiaWQiOiJmYXEtcXVlc3Rpb24tMTc3NDgzNzQ4MzAwMCIsInRpdGxlIjoiXHUwMDNjc3Ryb25nXHUwMDNlQ2FuIEkgdGVzdCB0aGUgbWFjaGluZSBiZWZvcmUgSSBwYXkgdGhlIGZpbmFsIGJpbGw\/XHUwMDNjL3N0cm9uZ1x1MDAzZSIsImNvbnRlbnQiOiJZZXMhIFdlIHRlc3QgZXZlcnkgbWFjaGluZSBhdCBvdXIgZmFjdG9yeSBpbiBXdXhpLCBDaGluYS5cdTAwM2Niclx1MDAzZVdlIGxvYWQgeW91ciBhY3R1YWwgc3RlZWwgY29pbCBpbnRvIHRoZSBtYWNoaW5lLlx1MDAzY2JyXHUwMDNlV2UgcnVuIHRoZSBtYWNoaW5lIGF0IGZ1bGwgc3BlZWQuXHUwMDNjYnJcdTAwM2VXZSBtZWFzdXJlIHRoZSBmaW5pc2hlZCBwYXJ0cyB0byBtYWtlIHN1cmUgdGhleSBhcmUgcGVyZmVjdC4gV2Ugb25seSBzaGlwIHRoZSBtYWNoaW5lIHRvIHlvdSBhZnRlciBpdCBwYXNzZXMgdGhlc2Ugc3RyaWN0IHRlc3RzLiIsInZpc2libGUiOnRydWV9LHsiaWQiOiJmYXEtcXVlc3Rpb24tMTc3NDgzNzUxNzczNiIsInRpdGxlIjoiXHUwMDNjc3Ryb25nXHUwMDNlV2hhdCBpcyB0aGUgbm9ybWFsIHJvbGwgZm9ybWluZyBtYWNoaW5lIHByaWNlP1x1MDAzYy9zdHJvbmdcdTAwM2UiLCJjb250ZW50IjoiUHJpY2VzIGNoYW5nZSBhIGxvdCBiYXNlZCBvbiBmZWF0dXJlcy4gQSBzaW1wbGUgbWFjaGluZSBjb3N0cyBhcm91bmQgJDIwLDAwMCB0byAkMzAsMDAwLiBBIGh1Z2UsIGZhc3QgbWFjaGluZSBsaW5lIGNhbiBlYXNpbHkgY29zdCBvdmVyICQyMDAsMDAwLiIsInZpc2libGUiOnRydWV9LHsiaWQiOiJmYXEtcXVlc3Rpb24tMTc3NDgzNzUyMzQ3NiIsInRpdGxlIjoiXHUwMDNjc3Ryb25nXHUwMDNlV2h5IGFyZSBDaGluZXNlIG1hY2hpbmVzIGNoZWFwZXI\/XHUwMDNjL3N0cm9uZ1x1MDAzZSIsImNvbnRlbnQiOiJGYWN0b3JpZXMgaW4gQ2hpbmEsIGxpa2UgQmVsaWV2ZSBJbmR1c3RyeSBDb21wYW55IGluIFd1eGksIG1ha2UgcGFydHMgdmVyeSBmYXN0LiBUaGV5IGJ1eSBzdHJvbmcgc3RlZWwgaW4gaHVnZSBhbW91bnRzLiBUaGlzIG1ha2VzIHRoZSBvdmVyYWxsIGNvc3QgbXVjaCBsb3dlciBmb3IgeW91LiIsInZpc2libGUiOnRydWV9LHsiaWQiOiJmYXEtcXVlc3Rpb24tMTc3NDgzNzU2MTk0OCIsInRpdGxlIjoiXHUwMDNjc3Ryb25nXHUwMDNlQ2FuIEkgZ2V0IGEgY3VzdG9tIG1hY2hpbmUganVzdCBmb3IgbXkgcGFydHM\/XHUwMDNjL3N0cm9uZ1x1MDAzZSIsImNvbnRlbnQiOiJZZXMhIEJlbGlldmUgSW5kdXN0cnkgQ29tcGFueSBtYWtlcyBjdXN0b20gbWFjaGluZXMgYWxsIHRoZSB0aW1lLiBPdXIgZXhwZXJ0IGVuZ2luZWVycyBkZXNpZ24gdGhlIG1hY2hpbmUgcm9sbGVycyB0byBmaXQgeW91ciBleGFjdCBtZXRhbCBzaGFwZXMgcGVyZmVjdGx5LiIsInZpc2libGUiOnRydWV9XX0gLS0+CjxkaXYgY2xhc3M9IndwLWJsb2NrLXJhbmstbWF0aC1mYXEtYmxvY2siPjxkaXYgY2xhc3M9InJhbmstbWF0aC1mYXEtaXRlbSI+PGgzIGNsYXNzPSJyYW5rLW1hdGgtcXVlc3Rpb24iPjxzdHJvbmc+SG93IGRvZXMgbXkgbWV0YWwgY2hvaWNlIGNoYW5nZSB0aGUgbWFjaGluZSBwcmljZT88L3N0cm9uZz48L2gzPjxkaXYgY2xhc3M9InJhbmstbWF0aC1hbnN3ZXIiPlRoZSBtZXRhbCB5b3UgYmVuZCBjaGFuZ2VzIHRoZSBjb3N0IG9mIHRoZSBtYWNoaW5lIHJvbGxlcnMuPGJyPjxzdHJvbmc+U29mdCBNZXRhbHM6PC9zdHJvbmc+IEFsdW1pbnVtIGFuZCB0aGluIGNvcHBlciB1c2Ugc3RhbmRhcmQgc3RlZWwgcm9sbGVycy48YnI+PHN0cm9uZz5IYXJkIE1ldGFsczo8L3N0cm9uZz4gSGlnaC1zdHJlbmd0aCBzdGVlbCBuZWVkcyBwcmVtaXVtIHJvbGxlcnMuIFRoZXNlIGFyZSBtYWRlIG9mIHRvdWdoIEQyIG9yIENyMTJNb1YgdG9vbCBzdGVlbC4gUHJlbWl1bSByb2xsZXJzIGNvc3QgbW9yZSB1cGZyb250LiBIb3dldmVyLCB0aGV5IGRvIG5vdCBjcmFjayBvciB3ZWFyIG91dCB3aGVuIGJlbmRpbmcgaGFyZCBzdGVlbC48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJyYW5rLW1hdGgtZmFxLWl0ZW0iPjxoMyBjbGFzcz0icmFuay1tYXRoLXF1ZXN0aW9uIj48c3Ryb25nPkFyZSB0aGVyZSBoaWRkZW4gZmVlcyB3aGVuIGltcG9ydGluZyBhIG1hY2hpbmU\/PC9zdHJvbmc+PC9oMz48ZGl2IGNsYXNzPSJyYW5rLW1hdGgtYW5zd2VyIj5UaGUgYmFzZSBwcmljZSBjb3ZlcnMgdGhlIG1hY2hpbmUgaXRzZWxmLiBCdXQgeW91IG11c3QgcGxhbiBmb3Igb3RoZXIgY29zdHMuPGJyPllvdSBtdXN0IHBheSBmb3Igc2VhIHNoaXBwaW5nLjxicj5Zb3UgbXVzdCBwYXkgcG9ydCBmZWVzIGFuZCBpbXBvcnQgdGF4ZXMuPGJyPllvdSBtdXN0IHBheSBmb3IgZmFjdG9yeSBzZXR1cC4gVG8gcHJvdGVjdCB5b3VyIGJ1ZGdldCwgcmVhZCBvdXIgZ3VpZGUgb24gdGhlIDxhIGhyZWY9Imh0dHBzOi8vYmVsaXJvbGxmb3JtaW5nLmNvbS9oaWRkZW4tY29zdHMtb2Ytcm9sbC1mb3JtaW5nLW1hY2hpbmVyeS8iIHRhcmdldD0iX2JsYW5rIiBkYXRhLXR5cGU9InBvc3QiIGRhdGEtaWQ9IjI0MTIiIHJlbD0ibm9yZWZlcnJlciBub29wZW5lciI+aGlkZGVuIGNvc3RzIG9mIHJvbGwgZm9ybWluZyBtYWNoaTwvYT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJyYW5rLW1hdGgtZmFxLWl0ZW0iPjxoMyBjbGFzcz0icmFuay1tYXRoLXF1ZXN0aW9uIj48c3Ryb25nPkRvZXMgYSBjdXN0b20gbWV0YWwgc2hhcGUgY29zdCBtb3JlIHRvIGJ1aWxkPzwvc3Ryb25nPjwvaDM+PGRpdiBjbGFzcz0icmFuay1tYXRoLWFuc3dlciI+ZXMuIFN0YW5kYXJkIHNoYXBlcyAobGlrZSBiYXNpYyByb29mIHBhbmVscykgaGF2ZSBzZXQgZGVzaWducy4gQSBicmFuZC1uZXcsIGN1c3RvbSBzaGFwZSBpcyBkaWZmZXJlbnQuIE91ciB0ZWFtIG9mIDgwKyBlbmdpbmVlcnMgbXVzdCBkcmF3IGEgbmV3ICJmbG93ZXIgcGF0dGVybiIgZnJvbSBzY3JhdGNoLiBUaGlzIGN1c3RvbSBtYXRoIGFuZCBlbmdpbmVlcmluZyB0YWtlcyBtb3JlIHRpbWUuIFRoaXMgd2lsbCBpbmNyZWFzZSB0aGUgZmluYWwgcHJpY2UuPGJyPjxzdHJvbmc+SG93IGxvbmcgZG9lcyBhIG5ldyByb2xsIGZvcm1pbmcgbWFjaGluZSBsYXN0Pzwvc3Ryb25nPiBBIGhpZ2gtcXVhbGl0eSBtYWNoaW5lIGZyb20gQmVsaWV2ZSBJbmR1c3RyeSBDb21wYW55IGNhbiBydW4gaGVhdnkgam9icyBmb3IgMTUgdG8gMjAgeWVhcnMuIFRvIGdldCB0aGUgYmVzdCBsaWZlc3BhbiwgeW91IG11c3QgdGFrZSBjYXJlIG9mIGl0Ljxicj5DbGVhbiB0aGUgcm9sbGVycyBkYWlseS48YnI+T2lsIHRoZSBtb3ZpbmcgcGFydHMgb2Z0ZW4uPGJyPkNoZWNrIHRoZSBtb3RvcnMgZm9yIGhlYXQuIEdvb2QgdXBrZWVwIHNhdmVzIHlvdSBtb25leS4gTGVhcm4gbW9yZSBhYm91dCBzaW1wbGUgPGEgaHJlZj0iaHR0cHM6Ly9iZWxpcm9sbGZvcm1pbmcuY29tL3JvbGwtZm9ybWluZy1wcmV2ZW50YXRpdmUtbWFpbnRlbmFuY2UvIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub3JlZmVycmVyIG5vb3BlbmVyIj5yb2xsIGZvcm1pbmcgcHJldmVudGF0aXZlIG1haW50ZW5hbmNlPC9hPi48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJyYW5rLW1hdGgtZmFxLWl0ZW0iPjxoMyBjbGFzcz0icmFuay1tYXRoLXF1ZXN0aW9uIj48c3Ryb25nPkRvIEkgcmVhbGx5IG5lZWQgYW4gYXV0b21hdGVkIHN0YWNrZXI\/PC9zdHJvbmc+PC9oMz48ZGl2IGNsYXNzPSJyYW5rLW1hdGgtYW5zd2VyIj5Zb3UgZG8gbm90IDxlbT5uZWVkPC9lbT4gb25lLCBidXQgaXQgaXMgYSB2ZXJ5IHNtYXJ0IHVwZ3JhZGUgZm9yIGZhc3QgbGluZXMuPGJyPjxzdHJvbmc+QmFzaWMgU2V0dXA6PC9zdHJvbmc+IFRoZSBtYWNoaW5lIGRyb3BzIHBhcnRzIG9udG8gYSB0YWJsZS4gV29ya2VycyBzdGFjayB0aGVtIGJ5IGhhbmQuPGJyPjxzdHJvbmc+QXV0by1TdGFja2VyOjwvc3Ryb25nPiBBIHJvYm90IHRhYmxlIGNhdGNoZXMgYW5kIHN0YWNrcyB0aGUgcGFydHMgcGVyZmVjdGx5LiBBbiBhdXRvLXN0YWNrZXIgcmFpc2VzIHRoZSBzdGFydGluZyBwcmljZS4gQnV0LCBpdCBjdXRzIHlvdXIgbGFib3IgY29zdHMgYmVjYXVzZSB5b3UgbmVlZCBmZXdlciB3b3JrZXJzIG9uIHRoZSBmbG9vci48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJyYW5rLW1hdGgtZmFxLWl0ZW0iPjxoMyBjbGFzcz0icmFuay1tYXRoLXF1ZXN0aW9uIj48c3Ryb25nPkNhbiBJIHRlc3QgdGhlIG1hY2hpbmUgYmVmb3JlIEkgcGF5IHRoZSBmaW5hbCBiaWxsPzwvc3Ryb25nPjwvaDM+PGRpdiBjbGFzcz0icmFuay1tYXRoLWFuc3dlciI+WWVzISBXZSB0ZXN0IGV2ZXJ5IG1hY2hpbmUgYXQgb3VyIGZhY3RvcnkgaW4gV3V4aSwgQ2hpbmEuPGJyPldlIGxvYWQgeW91ciBhY3R1YWwgc3RlZWwgY29pbCBpbnRvIHRoZSBtYWNoaW5lLjxicj5XZSBydW4gdGhlIG1hY2hpbmUgYXQgZnVsbCBzcGVlZC48YnI+V2UgbWVhc3VyZSB0aGUgZmluaXNoZWQgcGFydHMgdG8gbWFrZSBzdXJlIHRoZXkgYXJlIHBlcmZlY3QuIFdlIG9ubHkgc2hpcCB0aGUgbWFjaGluZSB0byB5b3UgYWZ0ZXIgaXQgcGFzc2VzIHRoZXNlIHN0cmljdCB0ZXN0cy48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJyYW5rLW1hdGgtZmFxLWl0ZW0iPjxoMyBjbGFzcz0icmFuay1tYXRoLXF1ZXN0aW9uIj48c3Ryb25nPldoYXQgaXMgdGhlIG5vcm1hbCByb2xsIGZvcm1pbmcgbWFjaGluZSBwcmljZT88L3N0cm9uZz48L2gzPjxkaXYgY2xhc3M9InJhbmstbWF0aC1hbnN3ZXIiPlByaWNlcyBjaGFuZ2UgYSBsb3QgYmFzZWQgb24gZmVhdHVyZXMuIEEgc2ltcGxlIG1hY2hpbmUgY29zdHMgYXJvdW5kICQyMCwwMDAgdG8gJDMwLDAwMC4gQSBodWdlLCBmYXN0IG1hY2hpbmUgbGluZSBjYW4gZWFzaWx5IGNvc3Qgb3ZlciAkMjAwLDAwMC48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJyYW5rLW1hdGgtZmFxLWl0ZW0iPjxoMyBjbGFzcz0icmFuay1tYXRoLXF1ZXN0aW9uIj48c3Ryb25nPldoeSBhcmUgQ2hpbmVzZSBtYWNoaW5lcyBjaGVhcGVyPzwvc3Ryb25nPjwvaDM+PGRpdiBjbGFzcz0icmFuay1tYXRoLWFuc3dlciI+RmFjdG9yaWVzIGluIENoaW5hLCBsaWtlIEJlbGlldmUgSW5kdXN0cnkgQ29tcGFueSBpbiBXdXhpLCBtYWtlIHBhcnRzIHZlcnkgZmFzdC4gVGhleSBidXkgc3Ryb25nIHN0ZWVsIGluIGh1Z2UgYW1vdW50cy4gVGhpcyBtYWtlcyB0aGUgb3ZlcmFsbCBjb3N0IG11Y2ggbG93ZXIgZm9yIHlvdS48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJyYW5rLW1hdGgtZmFxLWl0ZW0iPjxoMyBjbGFzcz0icmFuay1tYXRoLXF1ZXN0aW9uIj48c3Ryb25nPkNhbiBJIGdldCBhIGN1c3RvbSBtYWNoaW5lIGp1c3QgZm9yIG15IHBhcnRzPzwvc3Ryb25nPjwvaDM+PGRpdiBjbGFzcz0icmFuay1tYXRoLWFuc3dlciI+WWVzISBCZWxpZXZlIEluZHVzdHJ5IENvbXBhbnkgbWFrZXMgY3VzdG9tIG1hY2hpbmVzIGFsbCB0aGUgdGltZS4gT3VyIGV4cGVydCBlbmdpbmVlcnMgZGVzaWduIHRoZSBtYWNoaW5lIHJvbGxlcnMgdG8gZml0IHlvdXIgZXhhY3QgbWV0YWwgc2hhcGVzIHBlcmZlY3RseS48L2Rpdj48L2Rpdj48L2Rpdj4KPCEtLSAvd3A6cmFuay1tYXRoL2ZhcS1ibG9jayAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImFuY2hvciI6ImNvbmNsdXNpb24ifSAtLT4KPGgyIGlkPSJjb25jbHVzaW9uIiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5Db25jbHVzaW9uPC9zdHJvbmc+PC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5GaW5kaW5nIHRoZSBiZXN0IDxzdHJvbmc+cm9sbCBmb3JtaW5nIG1hY2hpbmUgcHJpY2U8L3N0cm9uZz4gdGFrZXMgdGltZSBhbmQgc21hcnQgcGxhbm5pbmcuIFlvdSBtdXN0IGxvb2sgY2xvc2VseSBhdCB0aGUgc2hhcGUgb2YgeW91ciBtZXRhbCBwYXJ0cyBhbmQgdGhlIGZhY3Rvcnkgc3BlZWQgeW91IG5lZWQuIEEgY2hlYXAgbWFjaGluZSBtaWdodCBjb3N0IHlvdSBtb3JlIGxhdGVyIGlmIGl0IGJyZWFrcyBkb3duIG9mdGVuLiBBIGdvb2QgbWFjaGluZSBydW5zIGZhc3QsIHN0YXlzIHN0cm9uZywgYW5kIHNhdmVzIHlvdXIgbWV0YWwgZnJvbSB3YXN0ZS4gV2l0aCAxNSsgeWVhcnMgb2YgZXhwZXJ0IHdvcmsgYW5kIG92ZXIgODAgZXhwZXJ0IGVuZ2luZWVycywgQmVsaWV2ZSBJbmR1c3RyeSBDb21wYW55IGlzIGhlcmUgdG8gaGVscCB5b3Ugd2luIGluIHRoZSBtYXJrZXQuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+PHN0cm9uZz5SZWFkeSB0byB1cGdyYWRlIHlvdXIgZmFjdG9yeSBsaW5lPyBDb250YWN0IEJFTEkncyBlbmdpbmVlcmluZyB0ZWFtIHRvZGF5IGZvciBhIGZyZWUsIGN1c3RvbSBxdW90ZSEgUmVhY2ggb3V0IHRvIHVzIHZpYSBXaGF0c0FwcCBhdCA8YSBocmVmPSJodHRwczovL3dhLm1lLys4NjE4NjE2OTI3NzYwIj4rODYxODYxNjkyNzc2MDwvYT4gb3Igc2VuZCB1cyBhbiA8YSBocmVmPSJtYWlsdG86ZW5xdWlyeUBiZWxpZXZlaW5kdXN0cnkuY29tIj5lbWFpbDwvYT4uPC9zdHJvbmc+PC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+ZG9jdW1lbnRleGNlcnB0ZG9jdW1lbnRhdXRob3Jkb2N1bWVudGZlYXR1cmVkX21lZGlhZG9jdW1lbnRjb21tZW50X3N0YXR1c2RvY3VtZW50cGluZ19zdGF0dXNkb2N1bWVudHN0aWNreWRvY3VtZW50dGVtcGxhdGVkb2N1bWVudGZvcm1hdGRvY3VtZW50bWV0YV9hbmdpZV9wYWdlX2dzcGJfcG9zdF9jc3NqZXRwYWNrX3Bvc3Rfd2FzX2V2ZXJfcHVibGlzaGVkX2pldHBhY2tfbmV3c2xldHRlcl9hY2Nlc3NfamV0cGFja19kb250X2VtYWlsX3Bvc3RfdG9fc3Vic19qZXRwYWNrX25ld3NsZXR0ZXJfdGllcl9pZF9qZXRwYWNrX21lbWJlcnNoaXBzX2NvbnRhaW5zX3BheXdhbGxlZF9jb250ZW50cGFnZV9idWlsZGVyX2pldHBhY2tfbWVtYmVyc2hpcHNfY29udGFpbnNfcGFpZF9jb250ZW50Zm9vdG5vdGVzamV0cGFja19wdWJsaWNpemVfbWVzc2FnZWpldHBhY2tfcHVibGljaXplX2ZlYXR1cmVfZW5hYmxlZGpldHBhY2tfc29jaWFsX3Bvc3RfYWxyZWFkeV9zaGFyZWRqZXRwYWNrX3NvY2lhbF9vcHRpb25zX3dwYXNfY3VzdG9taXplX3Blcl9uZXR3b3JrX2VsZW1lbnRvcl9lZGl0X21vZGVfZWxlbWVudG9yX3RlbXBsYXRlX3R5cGVfZWxlbWVudG9yX2RhdGFfZWxlbWVudG9yX3BhZ2Vfc2V0dGluZ3NfZWxlbWVudG9yX2NvbmRpdGlvbnNkb2N1bWVudGNhdGVnb3JpZXNkb2N1bWVudHRhZ3Nkb2N1bWVudGJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzdmFsdWVjaXRhdGlvblRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50QSA8c3Ryb25nPnJvbGwgZm9ybWluZyBtYWNoaW5lIHByaWNlPC9zdHJvbmc+IHVzdWFsbHkgcnVucyBmcm9tICQyMCwwMDAgdG8gb3ZlciAkMjAwLDAwMCBpbiAyMDI2LiBUaGUgZmluYWwgY29zdCBkZXBlbmRzIGhlYXZpbHkgb24gbWV0YWwgdGhpY2tuZXNzLCBwYXJ0IHNoYXBlLCBtYWNoaW5lIHNwZWVkLCBhbmQgZXh0cmEgdG9vbHMuIEJlbGlldmUgSW5kdXN0cnkgQ29tcGFueSBpcyBhIHRvcCBnbG9iYWwgZXhwb3J0ZXIgYmFzZWQgaW4gV3V4aSwgQ2hpbmEuIFdpdGggMTUrIHllYXJzIG9mIGV4cGVydCBtYWNoaW5lIG1hbnVmYWN0dXJpbmcgZXhwZXJpZW5jZSwgYW5kIGEgbWFzc2l2ZSB0ZWFtIG9mIDgwKyBlbmdpbmVlcnMsIHdlIG9mZmVyIHRoZSBiZXN0IHF1YWxpdHkgYW5kIHZhbHVlIGZvciB5b3VyIGZhY3RvcnkuZHJvcENhcHBsYWNlaG9sZGVyVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRLbm93aW5nIHRoZSBleGFjdCA8c3Ryb25nPnJvbGwgZm9ybWluZyBtYWNoaW5lIHByaWNlPC9zdHJvbmc+IGlzIHZlcnkgaW1wb3J0YW50IGZvciB5b3VyIGJ1c2luZXNzLiBJdCBoZWxwcyB5b3Ugc2V0IHlvdXIgZmFjdG9yeSBidWRnZXQuIEl0IGFsc28gaGVscHMgeW91IHNlZSB5b3VyIHRydWUgcHJvZml0IG92ZXIgdGltZS5kcm9wQ2FwcGxhY2Vob2xkZXJUcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEluIDIwMjYsIG5ldyB0ZWNoIGlzIGNoYW5naW5nIHRoZSBtZXRhbCB3b3JsZC4gQmVjYXVzZSBvZiB0aGlzLCBwcmljZXMgZ28gdXAgYW5kIGRvd24uIElmIHlvdSB3YW50IHRvIDxhIGhyZWY9Imh0dHBzOi8vYmVsaXJvbGxmb3JtaW5nLmNvbS9idXktYS1yb2xsLWZvcm1pbmctbWFjaGluZS8iIHRhcmdldD0iX2JsYW5rIiBkYXRhLXR5cGU9InBvc3QiIGRhdGEtaWQ9IjQ2MiIgcmVsPSJub3JlZmVycmVyIG5vb3BlbmVyIj5idXkgYSByb2xsIGZvcm1pbmcgbWFjaGluZTwvYT4sIHlvdSBuZWVkIHRvIGtub3cgZXhhY3RseSB3aGF0IGNoYW5nZXMgdGhlIGNvc3QuIFlvdSBkbyBub3Qgd2FudCB0byBwYXkgdG9vIG11Y2guIFlvdSBhbHNvIGRvIG5vdCB3YW50IGEgY2hlYXAgbWFjaGluZSB0aGF0IGJyZWFrcy5kcm9wQ2FwcGxhY2Vob2xkZXJUcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEhlcmUgYXJlIHRoZSA3IHVsdGltYXRlIHNlY3JldHMgYWJvdXQgdGhlIDxzdHJvbmc+cm9sbCBmb3JtaW5nIG1hY2hpbmUgcHJpY2U8L3N0cm9uZz4gdG9kYXkuZHJvcENhcHBsYWNlaG9sZGVyVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQxLiBQYXJ0IFNoYXBlIGFuZCBEZXNpZ24gKFRoZSBGbG93ZXIgUGF0dGVybilsZXZlbGFuY2hvclRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50VGhlIHNoYXBlIG9mIHlvdXIgbWV0YWwgcHJvZHVjdCBpcyB0aGUgYmlnZ2VzdCBjb3N0IGZhY3Rvci4gU2ltcGxlIHNoYXBlcyBjb3N0IGxlc3MgdG8gbWFrZS4gQ29tcGxleCBzaGFwZXMgY29zdCBtb3JlLiBFbmdpbmVlcnMgdXNlIGEgZHJhd2luZyBjYWxsZWQgYSAiZmxvd2VyIHBhdHRlcm4iIHRvIGRlc2lnbiB0aGUgbWFjaGluZS5kcm9wQ2FwcGxhY2Vob2xkZXJUcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzb3JkZXJlZHZhbHVlc1RycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5TaW1wbGUgU2hhcGVzOjwvc3Ryb25nPiBGbGF0IHBhbmVscyBuZWVkIGZld2VyIGJlbmRpbmcgc3RlcHMuVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPkNvbXBsZXggU2hhcGVzOjwvc3Ryb25nPiBEZXRhaWxlZCBwYXJ0cyBuZWVkIG1hbnkgYmVuZGluZyBzdGVwcyB0byBmb2xkIHRoZSBtZXRhbCBzbG93bHkuVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPk1vcmUgUm9sbGVyczo8L3N0cm9uZz4gTW9yZSBzdGVwcyBtZWFuIHlvdSBuZWVkIG1vcmUgcm9sbGVyIHN0YXRpb25zLlRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5MYXJnZXIgTWFjaGluZTo8L3N0cm9uZz4gTW9yZSByb2xsZXJzIG1ha2UgdGhlIG1hY2hpbmUgbG9uZ2VyIGFuZCBoZWF2aWVyLiBUaGlzIHJhaXNlcyB0aGUgdG90YWwgPHN0cm9uZz5yb2xsIGZvcm1pbmcgbWFjaGluZSBwcmljZTwvc3Ryb25nPi5UcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudENvc3QgSW1wYWN0IFRhYmxlbGV2ZWxhbmNob3JUcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzaGFzRml4ZWRMYXlvdXRjYXB0aW9uaGVhZGJvZHlmb290VHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQyLiBNZXRhbCBUeXBlIGFuZCBUaGlja25lc3NsZXZlbGFuY2hvclRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50VGhlIG1ldGFsIHlvdSB1c2UgY2hhbmdlcyB0aGUgPHN0cm9uZz5yb2xsIGZvcm1pbmcgbWFjaGluZSBwcmljZTwvc3Ryb25nPiBhIGxvdC4gTWV0YWwgdGhpY2tuZXNzIGFuZCBoYXJkbmVzcyBtYXR0ZXIuZHJvcENhcHBsYWNlaG9sZGVyVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc29yZGVyZWR2YWx1ZXNUcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+VGhpbiBNZXRhbDo8L3N0cm9uZz4gQWx1bWludW0gaXMgZWFzeSB0byBiZW5kLiBJdCBkb2VzIG5vdCBuZWVkIGEgaHVnZSBtb3Rvci5UcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+VGhpY2sgTWV0YWw6PC9zdHJvbmc+IEhpZ2gtc3RyZW5ndGggc3RlZWwgaXMgdmVyeSBoYXJkIHRvIGJlbmQuVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPlN0cm9uZyBGcmFtZXM6PC9zdHJvbmc+IEhhcmQgbWV0YWxzIG5lZWQgaGVhdnktZHV0eSBtYWNoaW5lIGZyYW1lcy5UcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+VG91Z2ggUm9sbGVyczo8L3N0cm9uZz4gVGhleSBhbHNvIG5lZWQgdG91Z2ggcm9sbGVycyBtYWRlIG9mIHNwZWNpYWwgdG9vbCBzdGVlbCBsaWtlIEQyIG9yIENyMTJNb1YuVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc3ZhbHVlY2l0YXRpb25UcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+RXhwZXJ0IFRpcDo8L3N0cm9uZz4gVXBncmFkaW5nIHRvIGEgaGVhdnktZHV0eSBmcmFtZSB3aWxsIHJhaXNlIHlvdXIgaW5pdGlhbCBjb3N0LiBCdXQgaXQgd2lsbCBzdG9wIHRoZSBtYWNoaW5lIGZyb20gYnJlYWtpbmcgd2hlbiBiZW5kaW5nIHRoaWNrIHN0ZWVsLiBUaGlzIHNhdmVzIHlvdSBtb25leSBsYXRlciFkcm9wQ2FwcGxhY2Vob2xkZXJUcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDMuIE1hY2hpbmUgU3BlZWQgYW5kIEN1dHRpbmcgU3lzdGVtc2xldmVsYW5jaG9yVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaW1lIGlzIG1vbmV5LiBIaWdoLXZvbHVtZSBmYWN0b3JpZXMgbmVlZCBmYXN0IG1hY2hpbmVzLiBGYXN0IG1hY2hpbmVzIG1ha2UgbW9yZSBwYXJ0cyBpbiBhIGRheS4gQnV0IHRoZXkgY29zdCBtb3JlIHRvIGJ1eSB1cGZyb250LmRyb3BDYXBwbGFjZWhvbGRlclRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNvcmRlcmVkdmFsdWVzVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPlN0YW5kYXJkIFNwZWVkOjwvc3Ryb25nPiBBIG5vcm1hbCBtYWNoaW5lIHJ1bnMgYXQgMTUgbWV0ZXJzIHBlciBtaW51dGUuVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPkhpZ2ggU3BlZWQ6PC9zdHJvbmc+IEEgZmFzdCBtYWNoaW5lIGNhbiBydW4gYXQgNDAgbWV0ZXJzIHBlciBtaW51dGUgb3IgbW9yZS5UcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+QmV0dGVyIE1vdG9yczo8L3N0cm9uZz4gRmFzdCBtYWNoaW5lcyBuZWVkIHN0cm9uZywgcHJlY2lzZSBzZXJ2byBtb3RvcnMuVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPkZseWluZyBTaGVhcnM6PC9zdHJvbmc+IEZhc3QgbGluZXMgbmVlZCBmbHlpbmcgc2hlYXJzLiBUaGlzIHRvb2wgY3V0cyB0aGUgbWV0YWwgd2hpbGUgaXQgaXMgc3RpbGwgbW92aW5nLCBzbyB0aGUgbWFjaGluZSBuZXZlciBzdG9wcy5UcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudFRoZXNlIGZhc3QgcGFydHMgaW5jcmVhc2UgdGhlIDxzdHJvbmc+cm9sbCBmb3JtaW5nIG1hY2hpbmUgcHJpY2U8L3N0cm9uZz4uIEhvd2V2ZXIsIHlvdSBjYW4gbWFrZSBtb3JlIHByb2R1Y3RzIHRvIHNlbGwuIFlvdSBjYW4gc2VlIHRoaXMgZ3JlYXQgdGVjaCBpbiBvdXIgPGEgaHJlZj0iaHR0cHM6Ly9iZWxpcm9sbGZvcm1pbmcuY29tL2hpZ2gtdm9sdW1lLXJvbGwtZm9ybWluZy8iIHRhcmdldD0iX2JsYW5rIiBkYXRhLXR5cGU9InBvc3QiIGRhdGEtaWQ9IjMzOTQiIHJlbD0ibm9yZWZlcnJlciBub29wZW5lciI+aGlnaCB2b2x1bWUgcm9sbCBmb3JtaW5nPC9hPiBzZXR1cHMuZHJvcENhcHBsYWNlaG9sZGVyVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ0LiBTbWFydCBDb21wdXRlciBDb250cm9scyAoUExDKWxldmVsYW5jaG9yVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRNb2Rlcm4gbWFjaGluZXMgdXNlIHNtYXJ0IGNvbXB1dGVyIGJyYWlucy4gVGhlc2UgYXJlIGNhbGxlZCBQcm9ncmFtbWFibGUgTG9naWMgQ29udHJvbGxlcnMgKFBMQ3MpLiBQTENzIHJ1biB0aGUgbWFjaGluZSBmb3IgeW91IGF1dG9tYXRpY2FsbHkuZHJvcENhcHBsYWNlaG9sZGVyVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc29yZGVyZWR2YWx1ZXNUcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+RmV3ZXIgTWlzdGFrZXM6PC9zdHJvbmc+IEdvb2QgUExDcyBzdG9wIGh1bWFuIGVycm9ycyBhbmQgc2F2ZSByYXcgbWV0YWwuVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPkZhc3QgQ2hhbmdlczo8L3N0cm9uZz4gVGhleSBhbGxvdyB5b3UgdG8gY2hhbmdlIHBhcnQgc2l6ZXMgcXVpY2tseSB3aXRoIGEgdG91Y2ggc2NyZWVuLlRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5EYXRhIFRyYWNraW5nOjwvc3Ryb25nPiBUaGV5IHRyYWNrIHlvdXIgZGFpbHkgZmFjdG9yeSBvdXRwdXQgYW5kIHdhcm4geW91IGlmIHBhcnRzIG5lZWQgb2lsLlRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50U21hcnQgY29udHJvbHMgcmFpc2UgdGhlIHVwZnJvbnQgPHN0cm9uZz5yb2xsIGZvcm1pbmcgbWFjaGluZSBwcmljZTwvc3Ryb25nPi4gSG93ZXZlciwgdGhleSBzYXZlIHlvdSBhIGxvdCBvZiBsYWJvciBtb25leSBvdmVyIHRpbWUgYmVjYXVzZSB5b3UgbmVlZCBmZXdlciB3b3JrZXJzLmRyb3BDYXBwbGFjZWhvbGRlclRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50NS4gRXh0cmEgVG9vbHMgYW5kIFBhcnRzbGV2ZWxhbmNob3JUcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEEgYmFzaWMgbWFjaGluZSBvbmx5IGJlbmRzIG1ldGFsLiBCdXQgYSByZWFsIGZhY3RvcnkgbGluZSBuZWVkcyBtb3JlIHRvb2xzIHRvIHJ1biB3ZWxsIGFuZCBzYWZlbHkuZHJvcENhcHBsYWNlaG9sZGVyVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc29yZGVyZWR2YWx1ZXNzdGFydFRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz48YSBocmVmPSJodHRwczovL2JlbGlyb2xsZm9ybWluZy5jb20vcHJvZHVjdC81LXRvbi1oeWRyYXVsaWMtdW5jb2lsZXIvIiBkYXRhLXR5cGU9InByb2R1Y3QiIGRhdGEtaWQ9IjE4NDAiPlVuY29pbGVyPC9hPjo8L3N0cm9uZz4gWW91IG5lZWQgdGhpcyBtYWNoaW5lIGF0IHRoZSBzdGFydCB0byBob2xkIHRoZSBoZWF2eSBzdGVlbCByb2xsLlRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz48YSBocmVmPSJodHRwczovL2JlbGlyb2xsZm9ybWluZy5jb20vZXNzZW50aWFsLXB1bmNoLXByZXNzLWZvci1yb2xsLWZvcm1pbmcvIiBkYXRhLXR5cGU9InBvc3QiIGRhdGEtaWQ9IjMxMzAiPlB1bmNoIFByZXNzPC9hPjo8L3N0cm9uZz4gWW91IG5lZWQgdGhpcyB1bml0IHRvIHB1bmNoIGhvbGVzIG9yIHNsb3RzIGluIHRoZSBtZXRhbCBiZWZvcmUgaXQgYmVuZHMuVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPjxhIGhyZWY9Imh0dHBzOi8vYmVsaXJvbGxmb3JtaW5nLmNvbS9yb2xsLWZvcm1pbmctbWFjaGluZS1jb21wb25lbnRzLyIgZGF0YS10eXBlPSJwb3N0IiBkYXRhLWlkPSIxODEyIj5BdXRvLVN0YWNrZXI8L2E+Ojwvc3Ryb25nPiBZb3UgbmVlZCB0aGlzIHRhYmxlIGF0IHRoZSBlbmQgdG8gcGFjayB0aGUgZmluaXNoZWQgcGFydHMgbmVhdGx5LlRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50QWRkaW5nIHRoZXNlIGV4dHJhIHRvb2xzIG1ha2VzIHRoZSB3aG9sZSBsaW5lIGNvc3QgbW9yZS4gVG8gc2VlIGhvdyBhbGwgdGhlc2UgcGFydHMgd29yayB0b2dldGhlciBpbiBhIGZhY3RvcnksIHJlYWQgb3VyIDxhIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vcmVmZXJyZXIgbm9vcGVuZXIiIGhyZWY9Imh0dHBzOi8vYmVsaXJvbGxmb3JtaW5nLmNvbS9yb2xsLWZvcm1pbmctbWFjaGluZS8iPmNvbXByZWhlbnNpdmUgYW5hbHlzaXMgb2Ygcm9sbCBmb3JtaW5nIG1hY2hpbmU8L2E+IHNldHVwczxzdXA+PC9zdXA+ZHJvcENhcHBsYWNlaG9sZGVyVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ2LiBTaGlwcGluZyBhbmQgU2V0dXAgQ29zdHNsZXZlbGFuY2hvclRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50b3UgbXVzdCBwYXkgdG8gbW92ZSB0aGUgbWFjaGluZSBmcm9tIHRoZSBidWlsZGVyIHRvIHlvdXIgZmFjdG9yeS4gRG8gbm90IGZvcmdldCB0aGlzIHN0ZXAgd2hlbiBwbGFubmluZyB5b3VyIGJ1ZGdldCEgSXQgaXMgYSBiaWcgcGFydCBvZiB0aGUgZmluYWwgPHN0cm9uZz5yb2xsIGZvcm1pbmcgbWFjaGluZSBwcmljZTwvc3Ryb25nPi5kcm9wQ2FwcGxhY2Vob2xkZXJUcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzb3JkZXJlZHZhbHVlc1RycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5TZWEgRnJlaWdodDo8L3N0cm9uZz4gU2hpcHBpbmcgbGFyZ2UgbWFjaGluZXMgYWNyb3NzIHRoZSBvY2VhbiBjaGFuZ2VzIGluIGNvc3Qgb2Z0ZW4uVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPlRheGVzOjwvc3Ryb25nPiBZb3UgbXVzdCBwYXkgaW1wb3J0IHRheGVzIGFuZCBib3JkZXIgZmVlcy5UcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+TGFib3I6PC9zdHJvbmc+IFlvdSBtdXN0IHBheSBmb3IgZXhwZXJ0IHdvcmtlcnMgdG8gc2V0IHVwIHRoZSBtYWNoaW5lIGluIHlvdXIgYnVpbGRpbmcuVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRCZWxpZXZlIEluZHVzdHJ5IENvbXBhbnkgaGVscHMgeW91IHNoaXAgZnJvbSBXdXhpLCBDaGluYSB0byBhbnl3aGVyZSBpbiB0aGUgd29ybGQgc2FmZWx5LiBXZSB3b3JrIGhhcmQgdG8ga2VlcCB5b3VyIHRvdGFsIDxzdHJvbmc+cm9sbCBmb3JtaW5nIG1hY2hpbmUgcHJpY2U8L3N0cm9uZz4gZmFpciBhbmQgY2xlYXIuZHJvcENhcHBsYWNlaG9sZGVyVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ3LiBIaWRkZW4gRmFjdG9yeSBDb3N0cyBhbmQgUXVhbGl0eWxldmVsYW5jaG9yVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnREbyBub3QganVzdCBidXkgdGhlIGNoZWFwZXN0IG1hY2hpbmUgeW91IGZpbmQuIEEgY2hlYXAgbWFjaGluZSBpcyBhIGJhZCBkZWFsLiBDaGVhcCBtYWNoaW5lcyBicmVhayBvZnRlbiBhbmQgaGFsdCB5b3VyIHdvcmsuZHJvcENhcHBsYWNlaG9sZGVyVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc29yZGVyZWR2YWx1ZXNUcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+QmFkIFJvbGxlcnM6PC9zdHJvbmc+IENoZWFwIHJvbGxlcnMgd2VhciBvdXQgZmFzdC4gVGhleSB3aWxsIHNjcmF0Y2ggYW5kIHJ1aW4geW91ciBnb29kIG1ldGFsLlRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5XZWFrIE1vdG9yczo8L3N0cm9uZz4gU21hbGwgbW90b3JzIHNsb3cgZG93biB5b3VyIHdvcmsgYW5kIGJ1cm4gb3V0IHF1aWNrbHkuVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPldhc3RlZCBTdGVlbDo8L3N0cm9uZz4gQmFkIGN1dHMgYW5kIGJhZCBiZW5kaW5nIHdhc3RlIGV4cGVuc2l2ZSBtZXRhbC5UcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudExlYXJuIGhvdyB0byBhdm9pZCB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9iZWxpcm9sbGZvcm1pbmcuY29tL2hpZGRlbi1jb3N0cy1vZi1yb2xsLWZvcm1pbmctbWFjaGluZXJ5LyIgdGFyZ2V0PSJfYmxhbmsiIGRhdGEtdHlwZT0icG9zdCIgZGF0YS1pZD0iMjQxMiIgcmVsPSJub3JlZmVycmVyIG5vb3BlbmVyIj5oaWRkZW4gY29zdHMgb2Ygcm9sbCBmb3JtaW5nIG1hY2hpbmVyeTwvYT4uIEdvb2QgbWFjaGluZXMgc2F2ZSB5b3UgbW9uZXkgb3ZlciBtYW55IHllYXJzLmRyb3BDYXBwbGFjZWhvbGRlclRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50SWYgeW91IGxvb2sgY2xvc2VseSBhdCB0aGUgPGEgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9yZWZlcnJlciBub29wZW5lciIgaHJlZj0iaHR0cHM6Ly9iZWxpZXZlaW5kdXN0cnkuY29tcGFueS9yb2xsLWZvcm1pbmctbWFjaGluZS1jb3N0LyI+cm9sbCBmb3JtaW5nIG1hY2hpbmUgY29zdDwvYT4gZGV0YWlsczxzdXA+PC9zdXA+LCB5b3Ugd2lsbCBzZWUgdGhhdCBxdWFsaXR5IG1hdHRlcnMuIEEgZ29vZCBtYWNoaW5lIHJ1bnMgc21vb3RobHkgZm9yIHllYXJzLiBJdCBkb2VzIG5vdCB3YXN0ZSBtZXRhbC4gV2FzdGluZyBtZXRhbCBjb3N0cyBhIGxvdCBvZiBtb25leS4gWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IG1ldGFsIGZvcm1pbmcgdHJlbmRzIGF0IGF1dGhvcml0YXRpdmUgc2l0ZXMgbGlrZSA8YSB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub3JlZmVycmVyIG5vb3BlbmVyIiBocmVmPSJodHRwczovL3d3dy50aGVmYWJyaWNhdG9yLmNvbS8iPlRoZSBGYWJyaWNhdG9yPC9hPi5kcm9wQ2FwcGxhY2Vob2xkZXJUcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudFVuZGVyc3RhbmRpbmcgdGhlIDxzdHJvbmc+cm9sbCBmb3JtaW5nIG1hY2hpbmUgcHJpY2U8L3N0cm9uZz4gaGVscHMgeW91ciBidXNpbmVzcyBncm93IHNhZmVseS4gVGFrZSB5b3VyIHRpbWUuIFBpY2sgYSBtYWNoaW5lIHRoYXQgZml0cyB5b3VyIG5lZWRzIHBlcmZlY3RseS5kcm9wQ2FwcGxhY2Vob2xkZXJUcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudFNpbXBsZSAyMDI2IENvc3QgQ2FsY3VsYXRvcmxldmVsYW5jaG9yVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRVc2UgdGhpcyBzaW1wbGUgd2ViIHRvb2wgdG8gZ3Vlc3MgeW91ciB0b3RhbCBzdGFydGluZyBjb3N0IGJhc2VkIG9uIHN0YW5kYXJkIDIwMjYgcHJpY2VzLmRyb3BDYXBwbGFjZWhvbGRlclRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50VHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRGcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9uc2xldmVsYW5jaG9yVHJwQ29udGVudFJlc3RyaWN0aW9uaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2xpc3RTdHlsZXRpdGxlV3JhcHBlcnNpemVTbHVncXVlc3Rpb25zbGlzdENzc0NsYXNzZXN0aXRsZUNzc0NsYXNzZXNjb250ZW50Q3NzQ2xhc3Nlc3RleHRBbGlnblRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5Db25jbHVzaW9uPC9zdHJvbmc+bGV2ZWxhbmNob3JUcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudEZpbmRpbmcgdGhlIGJlc3QgPHN0cm9uZz5yb2xsIGZvcm1pbmcgbWFjaGluZSBwcmljZTwvc3Ryb25nPiB0YWtlcyB0aW1lIGFuZCBzbWFydCBwbGFubmluZy4gWW91IG11c3QgbG9vayBjbG9zZWx5IGF0IHRoZSBzaGFwZSBvZiB5b3VyIG1ldGFsIHBhcnRzIGFuZCB0aGUgZmFjdG9yeSBzcGVlZCB5b3UgbmVlZC4gQSBjaGVhcCBtYWNoaW5lIG1pZ2h0IGNvc3QgeW91IG1vcmUgbGF0ZXIgaWYgaXQgYnJlYWtzIGRvd24gb2Z0ZW4uIEEgZ29vZCBtYWNoaW5lIHJ1bnMgZmFzdCwgc3RheXMgc3Ryb25nLCBhbmQgc2F2ZXMgeW91ciBtZXRhbCBmcm9tIHdhc3RlLiBXaXRoIDE1KyB5ZWFycyBvZiBleHBlcnQgd29yayBhbmQgb3ZlciA4MCBleHBlcnQgZW5naW5lZXJzLCBCZWxpZXZlIEluZHVzdHJ5IENvbXBhbnkgaXMgaGVyZSB0byBoZWxwIHlvdSB3aW4gaW4gdGhlIG1hcmtldC5kcm9wQ2FwcGxhY2Vob2xkZXJUcnBDb250ZW50UmVzdHJpY3Rpb25pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+UmVhZHkgdG8gdXBncmFkZSB5b3VyIGZhY3RvcnkgbGluZT8gQ29udGFjdCBCRUxJJ3MgZW5naW5lZXJpbmcgdGVhbSB0b2RheSBmb3IgYSBmcmVlLCBjdXN0b20gcXVvdGUhIFJlYWNoIG91dCB0byB1cyB2aWEgV2hhdHNBcHAgYXQgPGEgaHJlZj0iaHR0cHM6Ly93YS5tZS8rODYxODYxNjkyNzc2MCI+Kzg2MTg2MTY5Mjc3NjA8L2E+IG9yIHNlbmQgdXMgYW4gPGEgaHJlZj0ibWFpbHRvOmVucXVpcnlAYmVsaWV2ZWluZHVzdHJ5LmNvbSI+ZW1haWw8L2E+Ljwvc3Ryb25nPmRyb3BDYXBwbGFjZWhvbGRlclRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzBQcIBAgECAYIBTgIB7XyAwgHCAYIDggOCAsIBkgBBggECw4fGiAbLwwqCRkhIhYbFBgPGBUICggECAYIBw8ECgUIFQsIBw8ECgeeBgcLFQsIBw8ECge6AgcLFQsIBw8ECgeTBgcLFQsIBw8ECgecAQcLFQsIBw8ECgctBQYVCwgHDwQKB78CBwsVCwgHDwQKBwYVCwgHDwQKB4UBFQsIBw8ECgehARULCAcPBAoHjQEVCwgHDwQKB5UCFQsIBw8ECgcRBQYVCwgHDwQKDgdEARULCAcPBAoHGwUGFQsIBw8ECge1AQcLFQsIBw8ECgcGFQsIBw8ECgeVARULCAcPBAoHhwEVCwgHDwQKB4sBFQsIBw8ECgerARULCAcPBAoFCBULCAcPBAoHuwIHCxULCAcPBAoHJAUGFQsIBw8ECgeDAgcLFQsIBw8ECgcGFQsIBw8ECgePARULCAcPBAoHlAEVCwgHDwQKB5ABFQsIBw8ECgeNAhULCAcPBAoHiQUHCxULCAcPBAoHIAUGFQsIBw8ECgeOAgcLFQsIBw8ECgcGFQsIBw8ECgeQARULCAcPBAoHnwEVCwgHDwQKB6QBFQsIBw8ECgejAgcLFQsIBw8ECgcYBQYVCwgHDwQKB6IBBwsVCwgHDwQKBwYFFQsIBw8ECgeKAxULCAcPBAoHmAMVCwgHDwQKB4sDFQsIBw8ECgejBAcLFQsIBw8ECgcbBQYVCwgHDwQKB78CBwsVCwgHDwQKBwYVCwgHDwQKB50BFQsIBw8ECgeCARULCAcPBAoHnwEVCwgHDwQKB7UCBwsVCwgHDwQKByMFBhULCAcPBAoHvAEHCxULCAcPBAoHBhULCAcPBAoHpgEVCwgHDwQKB5QBFQsIBw8ECgeOARULCAcPBAoHiAQHCxULCAcPBAoHtAcHCxULCAcPBAoHnQIHCxULCAcPBAoHGwUGFQsIBw8ECgeZAQcLFQsIBw8ECgcVCwgHDwQKBxoFBhULCAcPBAoJDAgJDg8RCRULCAcPBAoHGwUGFQsIBw8ECge6BgcLFQsIBw8ECgeUBAcLFQsPAQQAAAEAAAABCAATAQIAjwJCAQEAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQAAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAABBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQAAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQAAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQAAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQAAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAABBAAIAQQAAQQACAEEAAgBBAAIAA0HYAwGlBgB9AXcTMjAyNi0wMy0zMFQxMDozNDoyNHcacm9sbC1mb3JtaW5nLW1hY2hpbmUtcHJpY2V3B3B1Ymxpc2h9ia2AggF9jkh3BG9wZW53BG9wZW55dwB3CHN0YW5kYXJkeXcAeXcAeX0AeXcAeXcAdwB4eHYCGGltYWdlX2dlbmVyYXRvcl9zZXR0aW5nc3YECHRlbXBsYXRldwdoaWdod2F5EGRlZmF1bHRfaW1hZ2VfaWR9AARmb250dwAHZW5hYmxlZHkHdmVyc2lvbn0CeXcAdwB3AH51AHUBfQF1AHckZjAyOTJkOTYtOGIzYi00MDkwLTljNDMtZTJhZmI3ZjE3YTVjeHcwPGJsb2NrcXVvdGUgY2xhc3M9IndwLWJsb2NrLXF1b3RlIj48L2Jsb2NrcXVvdGU+dwpjb3JlL3F1b3RldwB2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyQ0ZDM4NTIyYS01MmRmLTRkMzItOTA3My03NWJlMmYwMzNhMWV4d6UDPHA+QSA8c3Ryb25nPnJvbGwgZm9ybWluZyBtYWNoaW5lIHByaWNlPC9zdHJvbmc+IHVzdWFsbHkgcnVucyBmcm9tICQyMCwwMDAgdG8gb3ZlciAkMjAwLDAwMCBpbiAyMDI2LiBUaGUgZmluYWwgY29zdCBkZXBlbmRzIGhlYXZpbHkgb24gbWV0YWwgdGhpY2tuZXNzLCBwYXJ0IHNoYXBlLCBtYWNoaW5lIHNwZWVkLCBhbmQgZXh0cmEgdG9vbHMuIEJlbGlldmUgSW5kdXN0cnkgQ29tcGFueSBpcyBhIHRvcCBnbG9iYWwgZXhwb3J0ZXIgYmFzZWQgaW4gV3V4aSwgQ2hpbmEuIFdpdGggMTUrIHllYXJzIG9mIGV4cGVydCBtYWNoaW5lIG1hbnVmYWN0dXJpbmcgZXhwZXJpZW5jZSwgYW5kIGEgbWFzc2l2ZSB0ZWFtIG9mIDgwKyBlbmdpbmVlcnMsIHdlIG9mZmVyIHRoZSBiZXN0IHF1YWxpdHkgYW5kIHZhbHVlIGZvciB5b3VyIGZhY3RvcnkuPC9wPncOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyQ3NGMzZjU1MC0wZTkzLTQwMDQtOTE4Ni1lM2VlODUxN2Q1YTJ4d8EBPHA+S25vd2luZyB0aGUgZXhhY3QgPHN0cm9uZz5yb2xsIGZvcm1pbmcgbWFjaGluZSBwcmljZTwvc3Ryb25nPiBpcyB2ZXJ5IGltcG9ydGFudCBmb3IgeW91ciBidXNpbmVzcy4gSXQgaGVscHMgeW91IHNldCB5b3VyIGZhY3RvcnkgYnVkZ2V0LiBJdCBhbHNvIGhlbHBzIHlvdSBzZWUgeW91ciB0cnVlIHByb2ZpdCBvdmVyIHRpbWUuPC9wPncOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyRmZjMyY2QzYS1kYmIwLTQ1M2EtYjMwNS0xY2Y1ZjZiNjAxZWR4d5oDPHA+SW4gMjAyNiwgbmV3IHRlY2ggaXMgY2hhbmdpbmcgdGhlIG1ldGFsIHdvcmxkLiBCZWNhdXNlIG9mIHRoaXMsIHByaWNlcyBnbyB1cCBhbmQgZG93bi4gSWYgeW91IHdhbnQgdG8gPGEgaHJlZj0iaHR0cHM6Ly9iZWxpcm9sbGZvcm1pbmcuY29tL2J1eS1hLXJvbGwtZm9ybWluZy1tYWNoaW5lLyIgdGFyZ2V0PSJfYmxhbmsiIGRhdGEtdHlwZT0icG9zdCIgZGF0YS1pZD0iNDYyIiByZWw9Im5vcmVmZXJyZXIgbm9vcGVuZXIiPmJ1eSBhIHJvbGwgZm9ybWluZyBtYWNoaW5lPC9hPiwgeW91IG5lZWQgdG8ga25vdyBleGFjdGx5IHdoYXQgY2hhbmdlcyB0aGUgY29zdC4gWW91IGRvIG5vdCB3YW50IHRvIHBheSB0b28gbXVjaC4gWW91IGFsc28gZG8gbm90IHdhbnQgYSBjaGVhcCBtYWNoaW5lIHRoYXQgYnJlYWtzLjwvcD53DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHckMjVmNzQ4NzktNmUzYy00ODllLWFhNGYtNDEyNTMwYmI0NjRmeHdjPHA+SGVyZSBhcmUgdGhlIDcgdWx0aW1hdGUgc2VjcmV0cyBhYm91dCB0aGUgPHN0cm9uZz5yb2xsIGZvcm1pbmcgbWFjaGluZSBwcmljZTwvc3Ryb25nPiB0b2RheS48L3A+dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDJlZDRmYWE1LWIyNTUtNGFiYS05MmQ2LWZhZjViZTA0MmMxOXh3fzxoMiBpZD0iMS1wYXJ0LXNoYXBlLWFuZC1kZXNpZ24tdGhlLWZsb3dlci1wYXR0ZXJuIiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+MS4gUGFydCBTaGFwZSBhbmQgRGVzaWduIChUaGUgRmxvd2VyIFBhdHRlcm4pPC9oMj53DGNvcmUvaGVhZGluZ30CdyoxLXBhcnQtc2hhcGUtYW5kLWRlc2lnbi10aGUtZmxvd2VyLXBhdHRlcm52AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyQ5ZDU4MmRmNy0yZTkyLTRkNWYtYjM4ZS0wY2UyY2U2MGUwZGV4d8YBPHA+VGhlIHNoYXBlIG9mIHlvdXIgbWV0YWwgcHJvZHVjdCBpcyB0aGUgYmlnZ2VzdCBjb3N0IGZhY3Rvci4gU2ltcGxlIHNoYXBlcyBjb3N0IGxlc3MgdG8gbWFrZS4gQ29tcGxleCBzaGFwZXMgY29zdCBtb3JlLiBFbmdpbmVlcnMgdXNlIGEgZHJhd2luZyBjYWxsZWQgYSAiZmxvd2VyIHBhdHRlcm4iIHRvIGRlc2lnbiB0aGUgbWFjaGluZS48L3A+dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDEyM2Y1YWNkLWViNDgtNDRjMi1iYzA4LTBiMTc5Njg2ZDMxN3h3JTx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+CgoKCgoKPC91bD53CWNvcmUvbGlzdHl3AHYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JGEyMDhjM2I5LTFmYzgtNDgxZS1iYmRjLTM3ZWJhOGRhODgzZHh3TjxsaT48c3Ryb25nPlNpbXBsZSBTaGFwZXM6PC9zdHJvbmc+IEZsYXQgcGFuZWxzIG5lZWQgZmV3ZXIgYmVuZGluZyBzdGVwcy48L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyQ5MjhiZDQzZS0zZjE0LTRlMDEtOTdiOC03YTM1NjQyOWU2ZWJ4d2o8bGk+PHN0cm9uZz5Db21wbGV4IFNoYXBlczo8L3N0cm9uZz4gRGV0YWlsZWQgcGFydHMgbmVlZCBtYW55IGJlbmRpbmcgc3RlcHMgdG8gZm9sZCB0aGUgbWV0YWwgc2xvd2x5LjwvbGk+dw5jb3JlL2xpc3QtaXRlbXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JGIyYjYwMDdjLWVhNjktNGZmNC1hMTNkLTVhZjA4ZjE3OTlhNHh3VjxsaT48c3Ryb25nPk1vcmUgUm9sbGVyczo8L3N0cm9uZz4gTW9yZSBzdGVwcyBtZWFuIHlvdSBuZWVkIG1vcmUgcm9sbGVyIHN0YXRpb25zLjwvbGk+dw5jb3JlL2xpc3QtaXRlbXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JGM4YzQyMzEyLWRlNDEtNDRjZS05YjU0LTFjOTA3MTNiOWU4Y3h3ngE8bGk+PHN0cm9uZz5MYXJnZXIgTWFjaGluZTo8L3N0cm9uZz4gTW9yZSByb2xsZXJzIG1ha2UgdGhlIG1hY2hpbmUgbG9uZ2VyIGFuZCBoZWF2aWVyLiBUaGlzIHJhaXNlcyB0aGUgdG90YWwgPHN0cm9uZz5yb2xsIGZvcm1pbmcgbWFjaGluZSBwcmljZTwvc3Ryb25nPi48L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyQ2YjhhYzllOS05ZmQyLTQwOTYtYWYzMy0xNzZlNDY5ZmU0M2J4d0o8aDMgaWQ9ImNvc3QtaW1wYWN0LXRhYmxlIiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+Q29zdCBJbXBhY3QgVGFibGU8L2gzPncMY29yZS9oZWFkaW5nfQN3EWNvc3QtaW1wYWN0LXRhYmxldgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHckYjhjMWE5ZDMtNGIzNy00YmZkLWJkOGYtNDY5NGRkZTEyOTNheHe3BDxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLXRhYmxlIj48dGFibGUgY2xhc3M9Imhhcy1maXhlZC1sYXlvdXQiPjx0aGVhZD48dHI+PHRkPjxzdHJvbmc+UHJvZmlsZSBUeXBlPC9zdHJvbmc+PC90ZD48dGQ+PHN0cm9uZz5Sb2xsZXIgU3RhdGlvbnMgTmVlZGVkPC9zdHJvbmc+PC90ZD48dGQ+PHN0cm9uZz5Db3N0IEltcGFjdDwvc3Ryb25nPjwvdGQ+PC90cj48L3RoZWFkPjx0Ym9keT48dHI+PHRkPjxzdHJvbmc+U2ltcGxlIEZsYXQgUGFuZWw8L3N0cm9uZz48L3RkPjx0ZD4xMCB0byAxNCBTdGF0aW9uczwvdGQ+PHRkPjxzdHJvbmc+TG93PC9zdHJvbmc+PC90ZD48L3RyPjx0cj48dGQ+PHN0cm9uZz5TdGFuZGFyZCBDIFB1cmxpbjwvc3Ryb25nPjwvdGQ+PHRkPjE0IHRvIDE4IFN0YXRpb25zPC90ZD48dGQ+PHN0cm9uZz5NZWRpdW08L3N0cm9uZz48L3RkPjwvdHI+PHRyPjx0ZD48c3Ryb25nPkNvbXBsZXggQ2FyIFBhcnQ8L3N0cm9uZz48L3RkPjx0ZD4yMCB0byAzMCsgU3RhdGlvbnM8L3RkPjx0ZD48c3Ryb25nPkhpZ2g8L3N0cm9uZz48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvZmlndXJlPncKY29yZS90YWJsZXh1AXYBBWNlbGxzdQN2Bgdjb250ZW50dx08c3Ryb25nPlByb2ZpbGUgVHlwZTwvc3Ryb25nPgN0YWd3AnRkBXNjb3BlfwVhbGlnbn8HY29sc3Bhbn8Hcm93c3Bhbn92Bgdjb250ZW50dyc8c3Ryb25nPlJvbGxlciBTdGF0aW9ucyBOZWVkZWQ8L3N0cm9uZz4DdGFndwJ0ZAVzY29wZX8FYWxpZ25\/B2NvbHNwYW5\/B3Jvd3NwYW5\/dgYHY29udGVudHccPHN0cm9uZz5Db3N0IEltcGFjdDwvc3Ryb25nPgN0YWd3AnRkBXNjb3BlfwVhbGlnbn8HY29sc3Bhbn8Hcm93c3Bhbn91A3YBBWNlbGxzdQN2Bgdjb250ZW50dyI8c3Ryb25nPlNpbXBsZSBGbGF0IFBhbmVsPC9zdHJvbmc+A3RhZ3cCdGQFc2NvcGV\/BWFsaWdufwdjb2xzcGFufwdyb3dzcGFuf3YGB2NvbnRlbnR3ETEwIHRvIDE0IFN0YXRpb25zA3RhZ3cCdGQFc2NvcGV\/BWFsaWdufwdjb2xzcGFufwdyb3dzcGFuf3YGB2NvbnRlbnR3FDxzdHJvbmc+TG93PC9zdHJvbmc+A3RhZ3cCdGQFc2NvcGV\/BWFsaWdufwdjb2xzcGFufwdyb3dzcGFuf3YBBWNlbGxzdQN2Bgdjb250ZW50dyI8c3Ryb25nPlN0YW5kYXJkIEMgUHVybGluPC9zdHJvbmc+A3RhZ3cCdGQFc2NvcGV\/BWFsaWdufwdjb2xzcGFufwdyb3dzcGFuf3YGB2NvbnRlbnR3ETE0IHRvIDE4IFN0YXRpb25zA3RhZ3cCdGQFc2NvcGV\/BWFsaWdufwdjb2xzcGFufwdyb3dzcGFuf3YGB2NvbnRlbnR3FzxzdHJvbmc+TWVkaXVtPC9zdHJvbmc+A3RhZ3cCdGQFc2NvcGV\/BWFsaWdufwdjb2xzcGFufwdyb3dzcGFuf3YBBWNlbGxzdQN2Bgdjb250ZW50dyE8c3Ryb25nPkNvbXBsZXggQ2FyIFBhcnQ8L3N0cm9uZz4DdGFndwJ0ZAVzY29wZX8FYWxpZ25\/B2NvbHNwYW5\/B3Jvd3NwYW5\/dgYHY29udGVudHcSMjAgdG8gMzArIFN0YXRpb25zA3RhZ3cCdGQFc2NvcGV\/BWFsaWdufwdjb2xzcGFufwdyb3dzcGFuf3YGB2NvbnRlbnR3FTxzdHJvbmc+SGlnaDwvc3Ryb25nPgN0YWd3AnRkBXNjb3BlfwVhbGlnbn8HY29sc3Bhbn8Hcm93c3Bhbn91AHYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDc0ZjMwZjllLWJjMjMtNDdiYy1hOWQ1LTE5MjA4ZTRiY2E2OXh3XTxoMiBpZD0iMi1tZXRhbC10eXBlLWFuZC10aGlja25lc3MiIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj4yLiBNZXRhbCBUeXBlIGFuZCBUaGlja25lc3M8L2gyPncMY29yZS9oZWFkaW5nfQJ3GjItbWV0YWwtdHlwZS1hbmQtdGhpY2tuZXNzdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHckODEzZjMyODQtYmIyNS00Yjk1LWJkYmUtMzM3NDM4NmZmYWM5eHd8PHA+VGhlIG1ldGFsIHlvdSB1c2UgY2hhbmdlcyB0aGUgPHN0cm9uZz5yb2xsIGZvcm1pbmcgbWFjaGluZSBwcmljZTwvc3Ryb25nPiBhIGxvdC4gTWV0YWwgdGhpY2tuZXNzIGFuZCBoYXJkbmVzcyBtYXR0ZXIuPC9wPncOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyRiYmE2OTUyZC05YmYwLTRiYWMtOTRjOC0wNjEyMjQzMjg0NTN4dyU8dWwgY2xhc3M9IndwLWJsb2NrLWxpc3QiPgoKCgoKCjwvdWw+dwljb3JlL2xpc3R5dwB2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyRhYTVkZWQ3Zi1kMmE3LTRlM2UtYmZjNy05OTk5Mzc3NGNlMTB4d148bGk+PHN0cm9uZz5UaGluIE1ldGFsOjwvc3Ryb25nPiBBbHVtaW51bSBpcyBlYXN5IHRvIGJlbmQuIEl0IGRvZXMgbm90IG5lZWQgYSBodWdlIG1vdG9yLjwvbGk+dw5jb3JlL2xpc3QtaXRlbXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDNhMjRmMmQ5LTQwNjgtNDU3ZS04NWViLTI1N2RhZDNhYWM3YXh3UDxsaT48c3Ryb25nPlRoaWNrIE1ldGFsOjwvc3Ryb25nPiBIaWdoLXN0cmVuZ3RoIHN0ZWVsIGlzIHZlcnkgaGFyZCB0byBiZW5kLjwvbGk+dw5jb3JlL2xpc3QtaXRlbXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDcxYTRiM2QxLTk5ZjQtNDYxOS05NTYxLWIxMmU5Mzk0MzZlNXh3VDxsaT48c3Ryb25nPlN0cm9uZyBGcmFtZXM6PC9zdHJvbmc+IEhhcmQgbWV0YWxzIG5lZWQgaGVhdnktZHV0eSBtYWNoaW5lIGZyYW1lcy48L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyRmMmUyMTdlMC03OTMyLTQwZWUtOTc2Mi01YWI4MjYzYmZiMTV4d3Q8bGk+PHN0cm9uZz5Ub3VnaCBSb2xsZXJzOjwvc3Ryb25nPiBUaGV5IGFsc28gbmVlZCB0b3VnaCByb2xsZXJzIG1hZGUgb2Ygc3BlY2lhbCB0b29sIHN0ZWVsIGxpa2UgRDIgb3IgQ3IxMk1vVi48L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyRlOWJkOGZmZS1jMzE1LTRjNzMtYTJkZS1mMTQwYjkzYWUwMjR4dzA8YmxvY2txdW90ZSBjbGFzcz0id3AtYmxvY2stcXVvdGUiPjwvYmxvY2txdW90ZT53CmNvcmUvcXVvdGV3AHYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDM5YWNkZWRhLWMyNzktNGE3Zi1hNzBhLTE3M2JkMGIyMmVhYXh3wgE8cD48c3Ryb25nPkV4cGVydCBUaXA6PC9zdHJvbmc+IFVwZ3JhZGluZyB0byBhIGhlYXZ5LWR1dHkgZnJhbWUgd2lsbCByYWlzZSB5b3VyIGluaXRpYWwgY29zdC4gQnV0IGl0IHdpbGwgc3RvcCB0aGUgbWFjaGluZSBmcm9tIGJyZWFraW5nIHdoZW4gYmVuZGluZyB0aGljayBzdGVlbC4gVGhpcyBzYXZlcyB5b3UgbW9uZXkgbGF0ZXIhPC9wPncOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyRiZGEwOTliNC02NDE5LTQ2ZDgtOTQ4YS1jNWEwOWY1NzA3ZDN4d288aDIgaWQ9IjMtbWFjaGluZS1zcGVlZC1hbmQtY3V0dGluZy1zeXN0ZW1zIiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+My4gTWFjaGluZSBTcGVlZCBhbmQgQ3V0dGluZyBTeXN0ZW1zPC9oMj53DGNvcmUvaGVhZGluZ30CdyMzLW1hY2hpbmUtc3BlZWQtYW5kLWN1dHRpbmctc3lzdGVtc3YDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDkzNTMwMGNlLWFlN2UtNDFhMi05NjViLWY4NzA3YTY3MzdlZXh3igE8cD5UaW1lIGlzIG1vbmV5LiBIaWdoLXZvbHVtZSBmYWN0b3JpZXMgbmVlZCBmYXN0IG1hY2hpbmVzLiBGYXN0IG1hY2hpbmVzIG1ha2UgbW9yZSBwYXJ0cyBpbiBhIGRheS4gQnV0IHRoZXkgY29zdCBtb3JlIHRvIGJ1eSB1cGZyb250LjwvcD53DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHckMjMzNTA5Y2YtOTk0ZC00YTU2LTk1MTQtNWExN2RiMjliODk1eHclPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij4KCgoKCgo8L3VsPncJY29yZS9saXN0eXcAdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHckNjU2MTZlMmUtZjgyMi00ZWY2LWFjMGMtZTZkMzMwZTMyMTkzeHdYPGxpPjxzdHJvbmc+U3RhbmRhcmQgU3BlZWQ6PC9zdHJvbmc+IEEgbm9ybWFsIG1hY2hpbmUgcnVucyBhdCAxNSBtZXRlcnMgcGVyIG1pbnV0ZS48L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyRmNzhiNDlhZi01NTRjLTRjOGQtYmE0ZC00MGNkMWM2ODY1Y2F4d108bGk+PHN0cm9uZz5IaWdoIFNwZWVkOjwvc3Ryb25nPiBBIGZhc3QgbWFjaGluZSBjYW4gcnVuIGF0IDQwIG1ldGVycyBwZXIgbWludXRlIG9yIG1vcmUuPC9saT53DmNvcmUvbGlzdC1pdGVtdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHckY2Y1NzM0MmUtOTI2ZS00MDQ2LWI5YzgtY2NhM2EyNTc0MzRleHdZPGxpPjxzdHJvbmc+QmV0dGVyIE1vdG9yczo8L3N0cm9uZz4gRmFzdCBtYWNoaW5lcyBuZWVkIHN0cm9uZywgcHJlY2lzZSBzZXJ2byBtb3RvcnMuPC9saT53DmNvcmUvbGlzdC1pdGVtdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHckYzdlMzliNTAtYWE4My00MDgwLTk0NzQtYTEyNmQ1NzU2OGE4eHeWATxsaT48c3Ryb25nPkZseWluZyBTaGVhcnM6PC9zdHJvbmc+IEZhc3QgbGluZXMgbmVlZCBmbHlpbmcgc2hlYXJzLiBUaGlzIHRvb2wgY3V0cyB0aGUgbWV0YWwgd2hpbGUgaXQgaXMgc3RpbGwgbW92aW5nLCBzbyB0aGUgbWFjaGluZSBuZXZlciBzdG9wcy48L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyRhMmVjMDgyMy04NmY3LTQyNDUtYTM0MC0yY2Y3OTc5YjExZDJ4d9ACPHA+VGhlc2UgZmFzdCBwYXJ0cyBpbmNyZWFzZSB0aGUgPHN0cm9uZz5yb2xsIGZvcm1pbmcgbWFjaGluZSBwcmljZTwvc3Ryb25nPi4gSG93ZXZlciwgeW91IGNhbiBtYWtlIG1vcmUgcHJvZHVjdHMgdG8gc2VsbC4gWW91IGNhbiBzZWUgdGhpcyBncmVhdCB0ZWNoIGluIG91ciA8YSBocmVmPSJodHRwczovL2JlbGlyb2xsZm9ybWluZy5jb20vaGlnaC12b2x1bWUtcm9sbC1mb3JtaW5nLyIgdGFyZ2V0PSJfYmxhbmsiIGRhdGEtdHlwZT0icG9zdCIgZGF0YS1pZD0iMzM5NCIgcmVsPSJub3JlZmVycmVyIG5vb3BlbmVyIj5oaWdoIHZvbHVtZSByb2xsIGZvcm1pbmc8L2E+IHNldHVwcy48L3A+dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JGMwYzYzYjI1LTQ3YzAtNDc2Ni04MjI4LWRiMDJjNDFkNmI0Ynh3ZTxoMiBpZD0iNC1zbWFydC1jb21wdXRlci1jb250cm9scy1wbGMiIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj40LiBTbWFydCBDb21wdXRlciBDb250cm9scyAoUExDKTwvaDI+dwxjb3JlL2hlYWRpbmd9AncdNC1zbWFydC1jb21wdXRlci1jb250cm9scy1wbGN2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyQzZWQ2YzlhMS03MzEyLTRmZDktYmNmYS03ZTc0NmNhOTM3YjR4d5UBPHA+TW9kZXJuIG1hY2hpbmVzIHVzZSBzbWFydCBjb21wdXRlciBicmFpbnMuIFRoZXNlIGFyZSBjYWxsZWQgUHJvZ3JhbW1hYmxlIExvZ2ljIENvbnRyb2xsZXJzIChQTENzKS4gUExDcyBydW4gdGhlIG1hY2hpbmUgZm9yIHlvdSBhdXRvbWF0aWNhbGx5LjwvcD53DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHckODcwYTFhYjgtZmEwZi00NWRkLWE2NTgtMzNjY2RlNGI4ZGM5eHcjPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij4KCgoKPC91bD53CWNvcmUvbGlzdHl3AHYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDdhZGM3MGNmLTNmMzktNDQ2NS1iNjRhLTcyM2I2MmM4YmNkOXh3WTxsaT48c3Ryb25nPkZld2VyIE1pc3Rha2VzOjwvc3Ryb25nPiBHb29kIFBMQ3Mgc3RvcCBodW1hbiBlcnJvcnMgYW5kIHNhdmUgcmF3IG1ldGFsLjwvbGk+dw5jb3JlL2xpc3QtaXRlbXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDU0NTIxOWFmLTNiM2ItNDQzNy1hYTgyLTI3NGIyNDU0MTVhM3h3aDxsaT48c3Ryb25nPkZhc3QgQ2hhbmdlczo8L3N0cm9uZz4gVGhleSBhbGxvdyB5b3UgdG8gY2hhbmdlIHBhcnQgc2l6ZXMgcXVpY2tseSB3aXRoIGEgdG91Y2ggc2NyZWVuLjwvbGk+dw5jb3JlL2xpc3QtaXRlbXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JGUyYTViZDYyLTQ4ODctNGY4Yi1hYmU4LWNmN2I5YjU1NDlmNnh3bTxsaT48c3Ryb25nPkRhdGEgVHJhY2tpbmc6PC9zdHJvbmc+IFRoZXkgdHJhY2sgeW91ciBkYWlseSBmYWN0b3J5IG91dHB1dCBhbmQgd2FybiB5b3UgaWYgcGFydHMgbmVlZCBvaWwuPC9saT53DmNvcmUvbGlzdC1pdGVtdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHckOTJmN2ViMWYtNjAwNS00Yzk4LThjYWEtZTQxN2JmNDg0MzljeHeqATxwPlNtYXJ0IGNvbnRyb2xzIHJhaXNlIHRoZSB1cGZyb250IDxzdHJvbmc+cm9sbCBmb3JtaW5nIG1hY2hpbmUgcHJpY2U8L3N0cm9uZz4uIEhvd2V2ZXIsIHRoZXkgc2F2ZSB5b3UgYSBsb3Qgb2YgbGFib3IgbW9uZXkgb3ZlciB0aW1lIGJlY2F1c2UgeW91IG5lZWQgZmV3ZXIgd29ya2Vycy48L3A+dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JGUxZWY5NWU4LThhZmItNDY1Mi1iZGI5LTFlNWNlZWFlNTZhNHh3VzxoMiBpZD0iNS1leHRyYS10b29scy1hbmQtcGFydHMiIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj41LiBFeHRyYSBUb29scyBhbmQgUGFydHM8L2gyPncMY29yZS9oZWFkaW5nfQJ3FzUtZXh0cmEtdG9vbHMtYW5kLXBhcnRzdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHckYTYwZTNkYTEtNDQ4MS00MDEzLTg3ZGQtMWJlNTk5ZWZjMmMzeHdpPHA+QSBiYXNpYyBtYWNoaW5lIG9ubHkgYmVuZHMgbWV0YWwuIEJ1dCBhIHJlYWwgZmFjdG9yeSBsaW5lIG5lZWRzIG1vcmUgdG9vbHMgdG8gcnVuIHdlbGwgYW5kIHNhZmVseS48L3A+dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDc2M2ZhMjdhLWU5NzctNDU2YS04MTkwLTI2MDc5MDNiN2JlMHh3LTxvbCBzdGFydD0iMSIgY2xhc3M9IndwLWJsb2NrLWxpc3QiPgoKCgo8L29sPncJY29yZS9saXN0eHcAfQF2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyQ3MzY3MDljYy04OTJjLTQ4NWEtOGU0NC1kZDc1NDk3Njg5Njl4d9MBPGxpPjxzdHJvbmc+PGEgaHJlZj0iaHR0cHM6Ly9iZWxpcm9sbGZvcm1pbmcuY29tL3Byb2R1Y3QvNS10b24taHlkcmF1bGljLXVuY29pbGVyLyIgZGF0YS10eXBlPSJwcm9kdWN0IiBkYXRhLWlkPSIxODQwIj5VbmNvaWxlcjwvYT46PC9zdHJvbmc+IFlvdSBuZWVkIHRoaXMgbWFjaGluZSBhdCB0aGUgc3RhcnQgdG8gaG9sZCB0aGUgaGVhdnkgc3RlZWwgcm9sbC48L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyQwMzYzZTIxYi0wYjNkLTQzMDEtYmUzOC1lOWEyYmM4YzQ1Y2V4d+EBPGxpPjxzdHJvbmc+PGEgaHJlZj0iaHR0cHM6Ly9iZWxpcm9sbGZvcm1pbmcuY29tL2Vzc2VudGlhbC1wdW5jaC1wcmVzcy1mb3Itcm9sbC1mb3JtaW5nLyIgZGF0YS10eXBlPSJwb3N0IiBkYXRhLWlkPSIzMTMwIj5QdW5jaCBQcmVzczwvYT46PC9zdHJvbmc+IFlvdSBuZWVkIHRoaXMgdW5pdCB0byBwdW5jaCBob2xlcyBvciBzbG90cyBpbiB0aGUgbWV0YWwgYmVmb3JlIGl0IGJlbmRzLjwvbGk+dw5jb3JlL2xpc3QtaXRlbXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDY1NzBmMDVjLTJmZmYtNGVhMC05ZDFjLTVjMzcwNTVmZWRlN3h31AE8bGk+PHN0cm9uZz48YSBocmVmPSJodHRwczovL2JlbGlyb2xsZm9ybWluZy5jb20vcm9sbC1mb3JtaW5nLW1hY2hpbmUtY29tcG9uZW50cy8iIGRhdGEtdHlwZT0icG9zdCIgZGF0YS1pZD0iMTgxMiI+QXV0by1TdGFja2VyPC9hPjo8L3N0cm9uZz4gWW91IG5lZWQgdGhpcyB0YWJsZSBhdCB0aGUgZW5kIHRvIHBhY2sgdGhlIGZpbmlzaGVkIHBhcnRzIG5lYXRseS48L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyQ2ZjY1ZjZiZi1mYTViLTQxOGQtODY1YS05ZDA2YTFmNjljMTB4d6oCPHA+QWRkaW5nIHRoZXNlIGV4dHJhIHRvb2xzIG1ha2VzIHRoZSB3aG9sZSBsaW5lIGNvc3QgbW9yZS4gVG8gc2VlIGhvdyBhbGwgdGhlc2UgcGFydHMgd29yayB0b2dldGhlciBpbiBhIGZhY3RvcnksIHJlYWQgb3VyIDxhIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vcmVmZXJyZXIgbm9vcGVuZXIiIGhyZWY9Imh0dHBzOi8vYmVsaXJvbGxmb3JtaW5nLmNvbS9yb2xsLWZvcm1pbmctbWFjaGluZS8iPmNvbXByZWhlbnNpdmUgYW5hbHlzaXMgb2Ygcm9sbCBmb3JtaW5nIG1hY2hpbmU8L2E+IHNldHVwczxzdXA+PC9zdXA+PC9wPncOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyRiNjc2YWFmNi00Zjg5LTQxYzEtOTM5Yy03ZTMwZGMzMGM3MWF4d108aDIgaWQ9IjYtc2hpcHBpbmctYW5kLXNldHVwLWNvc3RzIiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+Ni4gU2hpcHBpbmcgYW5kIFNldHVwIENvc3RzPC9oMj53DGNvcmUvaGVhZGluZ30Cdxo2LXNoaXBwaW5nLWFuZC1zZXR1cC1jb3N0c3YDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDA1NWVjNWZkLWE1MDItNDU3Ny04NTM2LTMyYTQ1NTYyMmU3ZHh3xgE8cD5vdSBtdXN0IHBheSB0byBtb3ZlIHRoZSBtYWNoaW5lIGZyb20gdGhlIGJ1aWxkZXIgdG8geW91ciBmYWN0b3J5LiBEbyBub3QgZm9yZ2V0IHRoaXMgc3RlcCB3aGVuIHBsYW5uaW5nIHlvdXIgYnVkZ2V0ISBJdCBpcyBhIGJpZyBwYXJ0IG9mIHRoZSBmaW5hbCA8c3Ryb25nPnJvbGwgZm9ybWluZyBtYWNoaW5lIHByaWNlPC9zdHJvbmc+LjwvcD53DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHckZWQ2OTNiYWItNzk1NS00ZTRiLThjNTEtYzEzZmUxNGQ4YjkxeHcjPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij4KCgoKPC91bD53CWNvcmUvbGlzdHl3AHYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JGUwNDg2NTQ4LWM5NDUtNDg5Zi04NzMwLWE1ODE2NTYwYmE2NHh3ZjxsaT48c3Ryb25nPlNlYSBGcmVpZ2h0Ojwvc3Ryb25nPiBTaGlwcGluZyBsYXJnZSBtYWNoaW5lcyBhY3Jvc3MgdGhlIG9jZWFuIGNoYW5nZXMgaW4gY29zdCBvZnRlbi48L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyRmMTZiMjFlNS03OTc0LTRhZTktYjI2My1iZTg2NjFkN2RjNjB4d0s8bGk+PHN0cm9uZz5UYXhlczo8L3N0cm9uZz4gWW91IG11c3QgcGF5IGltcG9ydCB0YXhlcyBhbmQgYm9yZGVyIGZlZXMuPC9saT53DmNvcmUvbGlzdC1pdGVtdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHckNTI5N2Q1NDMtNmY4NS00Zjk2LThkODMtODUxNGU1NjE5ZmRmeHdoPGxpPjxzdHJvbmc+TGFib3I6PC9zdHJvbmc+IFlvdSBtdXN0IHBheSBmb3IgZXhwZXJ0IHdvcmtlcnMgdG8gc2V0IHVwIHRoZSBtYWNoaW5lIGluIHlvdXIgYnVpbGRpbmcuPC9saT53DmNvcmUvbGlzdC1pdGVtdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHckMWQxZGJjYjEtNzJlMi00MDk0LWFjODEtOTkxMzc0M2RiZjQ5eHe8ATxwPkJlbGlldmUgSW5kdXN0cnkgQ29tcGFueSBoZWxwcyB5b3Ugc2hpcCBmcm9tIFd1eGksIENoaW5hIHRvIGFueXdoZXJlIGluIHRoZSB3b3JsZCBzYWZlbHkuIFdlIHdvcmsgaGFyZCB0byBrZWVwIHlvdXIgdG90YWwgPHN0cm9uZz5yb2xsIGZvcm1pbmcgbWFjaGluZSBwcmljZTwvc3Ryb25nPiBmYWlyIGFuZCBjbGVhci48L3A+dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDUyOTJjZjU2LWUwYzMtNDUwMC1iODVmLTkxNjVkYzFhYTYxMXh3bTxoMiBpZD0iNy1oaWRkZW4tZmFjdG9yeS1jb3N0cy1hbmQtcXVhbGl0eSIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjcuIEhpZGRlbiBGYWN0b3J5IENvc3RzIGFuZCBRdWFsaXR5PC9oMj53DGNvcmUvaGVhZGluZ30CdyI3LWhpZGRlbi1mYWN0b3J5LWNvc3RzLWFuZC1xdWFsaXR5dgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHckNWEyZGFiMjUtNjRkMC00Y2E3LTkyMDYtYTlhYTNiYmQ0NzhmeHeDATxwPkRvIG5vdCBqdXN0IGJ1eSB0aGUgY2hlYXBlc3QgbWFjaGluZSB5b3UgZmluZC4gQSBjaGVhcCBtYWNoaW5lIGlzIGEgYmFkIGRlYWwuIENoZWFwIG1hY2hpbmVzIGJyZWFrIG9mdGVuIGFuZCBoYWx0IHlvdXIgd29yay48L3A+dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDUzNmVkMDg1LWU3OTgtNGJjZS05Y2U4LTU4Zjc5Mzc0YTNjZHh3Izx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+CgoKCjwvdWw+dwljb3JlL2xpc3R5dwB2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyRjNzM4ZDg4Yy02MjI0LTQwYWEtOWE1Yy0wYzU5NWI1ZWVlMmV4d288bGk+PHN0cm9uZz5CYWQgUm9sbGVyczo8L3N0cm9uZz4gQ2hlYXAgcm9sbGVycyB3ZWFyIG91dCBmYXN0LiBUaGV5IHdpbGwgc2NyYXRjaCBhbmQgcnVpbiB5b3VyIGdvb2QgbWV0YWwuPC9saT53DmNvcmUvbGlzdC1pdGVtdgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHckYTU1OTEzN2QtNjQwOS00MGMwLTkwYWItOGYyN2RhNGQyNjdheHddPGxpPjxzdHJvbmc+V2VhayBNb3RvcnM6PC9zdHJvbmc+IFNtYWxsIG1vdG9ycyBzbG93IGRvd24geW91ciB3b3JrIGFuZCBidXJuIG91dCBxdWlja2x5LjwvbGk+dw5jb3JlL2xpc3QtaXRlbXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDQ2ZjE0NDVmLTBhMWUtNDA4YS05MDJjLTlhOTI2Yjc5ZmIzMXh3VzxsaT48c3Ryb25nPldhc3RlZCBTdGVlbDo8L3N0cm9uZz4gQmFkIGN1dHMgYW5kIGJhZCBiZW5kaW5nIHdhc3RlIGV4cGVuc2l2ZSBtZXRhbC48L2xpPncOY29yZS9saXN0LWl0ZW12AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyRlMWMxMDI3Zi1mMWQyLTRkMTEtYjY3Ni0yYWY3ZmVjMjg4NGZ4d48CPHA+TGVhcm4gaG93IHRvIGF2b2lkIHRoZSA8YSBocmVmPSJodHRwczovL2JlbGlyb2xsZm9ybWluZy5jb20vaGlkZGVuLWNvc3RzLW9mLXJvbGwtZm9ybWluZy1tYWNoaW5lcnkvIiB0YXJnZXQ9Il9ibGFuayIgZGF0YS10eXBlPSJwb3N0IiBkYXRhLWlkPSIyNDEyIiByZWw9Im5vcmVmZXJyZXIgbm9vcGVuZXIiPmhpZGRlbiBjb3N0cyBvZiByb2xsIGZvcm1pbmcgbWFjaGluZXJ5PC9hPi4gR29vZCBtYWNoaW5lcyBzYXZlIHlvdSBtb25leSBvdmVyIG1hbnkgeWVhcnMuPC9wPncOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyQ1YjZlMmMyNS1lZTE5LTRmZDMtOGM5My04NmJlODUzNmRkYzl4d\/sDPHA+SWYgeW91IGxvb2sgY2xvc2VseSBhdCB0aGUgPGEgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9yZWZlcnJlciBub29wZW5lciIgaHJlZj0iaHR0cHM6Ly9iZWxpZXZlaW5kdXN0cnkuY29tcGFueS9yb2xsLWZvcm1pbmctbWFjaGluZS1jb3N0LyI+cm9sbCBmb3JtaW5nIG1hY2hpbmUgY29zdDwvYT4gZGV0YWlsczxzdXA+PC9zdXA+LCB5b3Ugd2lsbCBzZWUgdGhhdCBxdWFsaXR5IG1hdHRlcnMuIEEgZ29vZCBtYWNoaW5lIHJ1bnMgc21vb3RobHkgZm9yIHllYXJzLiBJdCBkb2VzIG5vdCB3YXN0ZSBtZXRhbC4gV2FzdGluZyBtZXRhbCBjb3N0cyBhIGxvdCBvZiBtb25leS4gWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IG1ldGFsIGZvcm1pbmcgdHJlbmRzIGF0IGF1dGhvcml0YXRpdmUgc2l0ZXMgbGlrZSA8YSB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub3JlZmVycmVyIG5vb3BlbmVyIiBocmVmPSJodHRwczovL3d3dy50aGVmYWJyaWNhdG9yLmNvbS8iPlRoZSBGYWJyaWNhdG9yPC9hPi48L3A+dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDY0M2E4YjVlLWE0NWItNGY5My04OGQ2LTBlNjFjZDc1Y2QyZnh3pAE8cD5VbmRlcnN0YW5kaW5nIHRoZSA8c3Ryb25nPnJvbGwgZm9ybWluZyBtYWNoaW5lIHByaWNlPC9zdHJvbmc+IGhlbHBzIHlvdXIgYnVzaW5lc3MgZ3JvdyBzYWZlbHkuIFRha2UgeW91ciB0aW1lLiBQaWNrIGEgbWFjaGluZSB0aGF0IGZpdHMgeW91ciBuZWVkcyBwZXJmZWN0bHkuPC9wPncOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyRiN2E0OTllZS1iYjlmLTQyMTMtYmU3NC04M2U3ZWM1MjRiYTl4d148aDIgaWQ9InNpbXBsZS0yMDI2LWNvc3QtY2FsY3VsYXRvciIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPlNpbXBsZSAyMDI2IENvc3QgQ2FsY3VsYXRvcjwvaDI+dwxjb3JlL2hlYWRpbmd9Ancbc2ltcGxlLTIwMjYtY29zdC1jYWxjdWxhdG9ydgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueHckN2M1OGJiOWEtZTBiNi00NmI2LWExY2QtOWU3ZjIyZDEyYWRleHdgPHA+VXNlIHRoaXMgc2ltcGxlIHdlYiB0b29sIHRvIGd1ZXNzIHlvdXIgdG90YWwgc3RhcnRpbmcgY29zdCBiYXNlZCBvbiBzdGFuZGFyZCAyMDI2IHByaWNlcy48L3A+dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JGM3YzY0NjQ4LTcxNmQtNDVlMC1hYjM5LTNiOTI3NWQxYTFjY3h3y048bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8dGl0bGU+QmVsaSBSb2xsRm9ybWluZyAtIEVuZ2luZWVyaW5nIENvbmZpZ3VyYXRvcjwvdGl0bGU+CiAgICA8c3R5bGU+CiAgICAgICAgYm9keSB7IGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUknLCBUYWhvbWEsIHNhbnMtc2VyaWY7IGJhY2tncm91bmQ6ICNmMGYyZjU7IHBhZGRpbmc6IDIwcHg7IGxpbmUtaGVpZ2h0OiAxLjY7IH0KICAgICAgICAuY2FsYy1jYXJkIHsgYmFja2dyb3VuZDogI2ZmZjsgbWF4LXdpZHRoOiA4NTBweDsgbWFyZ2luOiBhdXRvOyBwYWRkaW5nOiA0MHB4OyBib3JkZXItcmFkaXVzOiAxMnB4OyBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDAsMCwwLDAuMSk7IH0KICAgICAgICAKICAgICAgICBoMiB7IGNvbG9yOiAjMWEzYTVmOyB0ZXh0LWFsaWduOiA7IG1hcmdpbi1ib3R0b206IDMwcHg7IGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAjZDMyZjJmOyBwYWRkaW5nLWJvdHRvbTogMTVweDsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgbGV0dGVyLXNwYWNpbmc6IDFweDt9CiAgICAgICAgCiAgICAgICAgLnNlY3Rpb24taGVhZGVyIHsgY29sb3I6ICNkMzJmMmY7IGZvbnQtd2VpZ2h0OiBib2xkOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBmb250LXNpemU6IDAuOWVtOyBtYXJnaW4tdG9wOiAzNXB4OyBsZXR0ZXItc3BhY2luZzogMS4ycHg7IGJvcmRlci1sZWZ0OiA0cHggc29saWQgI2QzMmYyZjsgcGFkZGluZy1sZWZ0OiAxMnB4OyB9CiAgICAgICAgLmludHJvLXRleHQgeyBmb250LXNpemU6IDAuOTJlbTsgY29sb3I6ICM1NTU7IG1hcmdpbjogMTBweCAwIDIwcHggMDsgYmFja2dyb3VuZDogI2Y4ZmFmYzsgcGFkZGluZzogMTVweDsgYm9yZGVyLXJhZGl1czogNnB4OyBib3JkZXI6IDFweCBzb2xpZCAjZWRmMmY3OyB9CgogICAgICAgIC5wcmVzZXQtY29udGFpbmVyIHsgZGlzcGxheTogZmxleDsgZ2FwOiAxMHB4OyBtYXJnaW4tYm90dG9tOiAyNXB4OyBmbGV4LXdyYXA6IHdyYXA7IH0KICAgICAgICAucHJlc2V0LWJ0biB7IGJhY2tncm91bmQ6ICNmZmY7IGJvcmRlcjogMXB4IHNvbGlkICNjYmQ1ZTA7IHBhZGRpbmc6IDEwcHggMjBweDsgYm9yZGVyLXJhZGl1czogNnB4OyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtc2l6ZTogMC44NWVtOyBmb250LXdlaWdodDogNjAwOyB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOyB9CiAgICAgICAgLnByZXNldC1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOiAjMWEzYTVmOyBjb2xvcjogd2hpdGU7IGJvcmRlci1jb2xvcjogIzFhM2E1ZjsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOyB9CgogICAgICAgIC5pbnB1dC1ncmlkIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOyBnYXA6IDI1cHg7IH0KICAgICAgICBsYWJlbCB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogIzJkMzc0ODsgZm9udC1zaXplOiAwLjg1ZW07IG1hcmdpbi1ib3R0b206IDhweDsgfQogICAgICAgIGlucHV0LCBzZWxlY3QgeyB3aWR0aDogMTAwJTsgcGFkZGluZzogMTJweDsgYm9yZGVyOiAxcHggc29saWQgI2NiZDVlMDsgYm9yZGVyLXJhZGl1czogNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBiYWNrZ3JvdW5kOiAjZmZmOyBmb250LXNpemU6IDE0cHg7IH0KICAgICAgICAKICAgICAgICBidXR0b24ubWFpbi1jYWxjIHsgd2lkdGg6IDEwMCU7IGJhY2tncm91bmQ6ICNkMzJmMmY7IGNvbG9yOiB3aGl0ZTsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAyMHB4OyBib3JkZXItcmFkaXVzOiA2cHg7IGN1cnNvcjogcG9pbnRlcjsgZm9udC1zaXplOiAxLjFlbTsgZm9udC13ZWlnaHQ6IGJvbGQ7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbi10b3A6IDQwcHg7IHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4zczsgfQogICAgICAgIGJ1dHRvbi5tYWluLWNhbGM6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjYjcxYzFjOyB9CgogICAgICAgIC5yZXN1bHRzIHsgbWFyZ2luLXRvcDogNDBweDsgZGlzcGxheTogbm9uZTsgYmFja2dyb3VuZDogIzFhM2E1ZjsgY29sb3I6ICNmZmY7IHBhZGRpbmc6IDM1cHg7IGJvcmRlci1yYWRpdXM6IDEwcHg7IH0KICAgICAgICAucmVzLWdyaWQgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnIgMWZyOyBnYXA6IDIwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsgfQogICAgICAgIC5yZXMtdmFsIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMi4yZW07IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogI2YxYzQwZjsgfQogICAgICAgIC5yZXMtbGFiIHsgZm9udC1zaXplOiAwLjc1ZW07IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGNvbG9yOiAjY2JkNWUwOyBmb250LXdlaWdodDogODAwOyBsZXR0ZXItc3BhY2luZzogMS41cHg7IG1hcmdpbi1ib3R0b206IDVweDsgfQogICAgICAgIC5jb3N0LW5vdGUgeyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAjY2JkNWUwOyBtYXJnaW4tdG9wOiAyMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtc3R5bGU6IGl0YWxpYzsgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xKTsgcGFkZGluZy10b3A6IDE1cHg7IH0KICAgICAgICAKICAgICAgICAuZm9vdGVyLWluZm8geyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6IDE1cHg7IGZvbnQtc2l6ZTogMTFweDsgfQogICAgPC9zdHlsZT4KCgoKPGRpdiBjbGFzcz0iY2FsYy1jYXJkIj4KICAgIDxoMj5NYWNoaW5lIEVuZ2luZWVyaW5nIENvbmZpZ3VyYXRvcjwvaDI+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1oZWFkZXIiPlNlbGVjdCBNYWNoaW5lIEFwcGxpY2F0aW9uPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJpbnRyby10ZXh0Ij4KICAgICAgICBDaG9vc2UgYSBwcmVzZXQgcHJvZmlsZSB0byBsb2FkIGluZHVzdHJ5LXN0YW5kYXJkIHBhcmFtZXRlcnMuIFRoZXNlIHRlbXBsYXRlcyBwcm92aWRlIGEgYmFzZWxpbmUgZm9yIDxzdHJvbmc+VG90YWwgQmVuZCBBbmdsZXM8L3N0cm9uZz4gYW5kIDxzdHJvbmc+UHJvZmlsZSBEZXB0aDwvc3Ryb25nPiBjb21tb25seSBmb3VuZCBpbiBnbG9iYWwgY29uc3RydWN0aW9uIHN0YW5kYXJkcy4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJlc2V0LWNvbnRhaW5lciI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0icHJlc2V0LWJ0biIgb25jbGljaz0ic2V0UHJlc2V0KDM2MCwgNTApIj5DLVB1cmxpbjwvYnV0dG9uPgogICAgICAgIDxidXR0b24gY2xhc3M9InByZXNldC1idG4iIG9uY2xpY2s9InNldFByZXNldCg1NDAsIDgwKSI+U2lnbWEgU2VjdGlvbjwvYnV0dG9uPgogICAgICAgIDxidXR0b24gY2xhc3M9InByZXNldC1idG4iIG9uY2xpY2s9InNldFByZXNldCgxODAsIDI1KSI+VS1DaGFubmVsPC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0icHJlc2V0LWJ0biIgb25jbGljaz0ic2V0UHJlc2V0KDU0MCwgNDApIj5PbWVnYSAvIEhhdCBDaGFubmVsPC9idXR0b24+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWhlYWRlciI+MS4gTWF0ZXJpYWwgU3BlY2lmaWNhdGlvbiBBbmFseXNpczwvZGl2PgogICAgPGRpdiBjbGFzcz0iaW50cm8tdGV4dCI+CiAgICAgICAgPHN0cm9uZz5NYXRlcmlhbCBUaGlja25lc3M8L3N0cm9uZz4gYW5kIDxzdHJvbmc+WWllbGQgU3RyZW5ndGg8L3N0cm9uZz4gZGV0ZXJtaW5lIHRoZSBtZWNoYW5pY2FsIHJlc2lzdGFuY2UuIEhpZ2hlciB5aWVsZCBtYXRlcmlhbHMgKEc1NTApIHJlcXVpcmUgc3BlY2lhbGl6ZWQgc2hhZnQgZGlhbWV0ZXJzIGFuZCBsYXJnZXIgbW90b3IgdG9ycXVlIHRvIGVuc3VyZSBwcmVjaXNpb24gd2l0aG91dCBzcHJpbmdiYWNrLgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJpbnB1dC1ncmlkIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgICA8bGFiZWw+TWF0ZXJpYWwgVGhpY2tuZXNzIChtbSk8L2xhYmVsPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0idCIgdmFsdWU9IjIuMCIgc3RlcD0iMC4xIj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2PgogICAgICAgICAgICA8bGFiZWw+U3RlZWwgWWllbGQgU3RyZW5ndGggKE1QYSk8L2xhYmVsPgogICAgICAgICAgICA8c2VsZWN0IGlkPSJ5aWVsZCI+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyMzUiPjIzNSBNUGEgKE1pbGQgU3RlZWwpPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIzNDUiIHNlbGVjdGVkPSIiPjM0NSBNUGEgKFN0YW5kYXJkIC8gUTM0NSk8L29wdGlvbj4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjU1MCI+NTUwIE1QYSAoSGlnaCBUZW5zaWxlKTwvb3B0aW9uPgogICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24taGVhZGVyIj4yLiBQcm9maWxlIEdlb21ldHJ5ICZhbXA7IENvbXBsZXhpdHk8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImludHJvLXRleHQiPgogICAgICAgIDxzdHJvbmc+VG90YWwgQmVuZCBBbmdsZXM8L3N0cm9uZz4gcmVwcmVzZW50IHRoZSBjdW11bGF0aXZlIHdvcmsgcmVxdWlyZWQuIDxzdHJvbmc+UHJvZmlsZSBEZXB0aDwvc3Ryb25nPiBpcyBjcml0aWNhbDsgZGVlcGVyIHdhbGxzIHJlcXVpcmUgbW9yZSB0cmFuc2l0aW9uIHN0YXRpb25zIHRvIHByZXZlbnQgbWF0ZXJpYWwgc3RyZXNzIGFuZCBlZGdlIHdhdmVzIChvaWwgY2FubmluZykuCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyaWQiPgogICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxsYWJlbD5Ub3RhbCBCZW5kIEFuZ2xlcyAowrApPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9ImFuZ2xlcyIgdmFsdWU9IjM2MCI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGxhYmVsPlByb2ZpbGUgRGVwdGggKG1tKTwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSJkZXB0aCIgdmFsdWU9IjUwIj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24taGVhZGVyIj4zLiBQZXJmb3JtYW5jZSAmYW1wOyBPdXRwdXQgU2V0dGluZ3M8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImludHJvLXRleHQiPgogICAgICAgIDxzdHJvbmc+TGluZSBTcGVlZDwvc3Ryb25nPiBzY2FsZXMgdGhlIG1vdG9yIHJlcXVpcmVtZW50LiBUaGUgPHN0cm9uZz5Gb3JtaW5nIEdyYWRhdGlvbjwvc3Ryb25nPiBsZXZlbCBkZXRlcm1pbmVzIGhvdyBtYW55IGRlZ3JlZXMgb2YgYmVuZCBvY2N1ciBwZXIgc3RhdGlvbjsgc21vb3RoZXIgZ3JhZGF0aW9uIHJlc3VsdHMgaW4gc3VwZXJpb3Igc3VyZmFjZSBmaW5pc2ggYW5kIHN0YWJpbGl0eS4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iaW5wdXQtZ3JpZCI+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGxhYmVsPlByb2R1Y3Rpb24gU3BlZWQgKG0vbWluKTwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSJzcGVlZCIgdmFsdWU9IjE1Ij4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2PgogICAgICAgICAgICA8bGFiZWw+UHJlY2lzaW9uIEdyYWRhdGlvbjwvbGFiZWw+CiAgICAgICAgICAgIDxzZWxlY3QgaWQ9Im1heFBhc3MiPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMTUiPlN0YW5kYXJkIChFZmZpY2llbnQpPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxMiIgc2VsZWN0ZWQ9IiI+U21vb3RoIChCYWxhbmNlZCBRdWFsaXR5KTwvb3B0aW9uPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iOCI+UHJlY2lzaW9uIChIaWdoIENvbXBsZXhpdHkpPC9vcHRpb24+CiAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1oZWFkZXIiPjQuIExvZ2lzdGljcyAmYW1wOyBTZXR1cCBPcHRpb25zPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJpbnRyby10ZXh0Ij4KICAgICAgICBJbmNsdWRlIHRoZSBlc3RpbWF0ZWQgPHN0cm9uZz5TaGlwcGluZyBDb3N0PC9zdHJvbmc+IGFuZCBvbnNpdGUgPHN0cm9uZz5TZXR1cCBDb3N0PC9zdHJvbmc+IHRvIGdlbmVyYXRlIGEgZnVsbHkgY29tcHJlaGVuc2l2ZSB0dXJua2V5IGJ1ZGdldGFyeSBlc3RpbWF0ZS4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iaW5wdXQtZ3JpZCI+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGxhYmVsPkVzdGltYXRlZCBTaGlwcGluZyBDb3N0ICgkKTwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSJzaGlwcGluZyIgdmFsdWU9IjUwMDAiIHN0ZXA9IjUwMCI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGxhYmVsPkVzdGltYXRlZCBTZXR1cCBDb3N0ICgkKTwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSJzZXR1cCIgdmFsdWU9IjM1MDAiIHN0ZXA9IjUwMCI+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8YnV0dG9uIGNsYXNzPSJtYWluLWNhbGMiIG9uY2xpY2s9ImNhbGN1bGF0ZU1hY2hpbmUoKSI+R2VuZXJhdGUgVGVjaG5pY2FsIFJlcG9ydDwvYnV0dG9uPgoKICAgIDxkaXYgaWQ9InJlc3VsdHMiIGNsYXNzPSJyZXN1bHRzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJyZXMtZ3JpZCI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icmVzLWxhYiI+Rm9ybWluZyBTdGF0aW9uczwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJvdXROIiBjbGFzcz0icmVzLXZhbCI+MDwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icmVzLWxhYiI+TWFpbiBNb3RvciBQb3dlcjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJvdXRLVyIgY2xhc3M9InJlcy12YWwiPjAga1c8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJlcy1sYWIiPlRvdGFsIEVzdGltYXRlZCBDb3N0PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im91dENvc3QiIGNsYXNzPSJyZXMtdmFsIj4kMDwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY29zdC1ub3RlIj4KICAgICAgICAgICAgKkJ1ZGdldGFyeSByYW5nZSBpbmNsdWRlcyB0aGUgZm9ybWluZyB1bml0LCBkcml2ZSBzeXN0ZW0sIHNoaXBwaW5nLCBhbmQgc2V0dXAuIEZpbmFsIHByaWNpbmcgZGVwZW5kcyBoZWF2aWx5IG9uIGF1dG9tYXRpb24gb3B0aW9ucywgY3V0dGluZyBzeXN0ZW1zLCBhbmQgbWF0ZXJpYWwgaGFuZGxpbmcgc29sdXRpb25zLgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1pbmZvIj4KICAgICAgICAgICAgPHN0cm9uZz5CZWxpZXZlIEluZHVzdHJ5IENvbXBhbnk8L3N0cm9uZz4gfCB3d3cuYmVsaXJvbGxmb3JtaW5nLmNvbSB8IGluZm9AYmVsaXJvbGxmb3JtaW5nLmNvbQogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgoKPHNjcmlwdD4KICAgIGZ1bmN0aW9uIHNldFByZXNldChhbmdsZXMsIGRlcHRoKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FuZ2xlcycpLnZhbHVlID0gYW5nbGVzOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXB0aCcpLnZhbHVlID0gZGVwdGg7CiAgICB9CgogICAgZnVuY3Rpb24gY2FsY3VsYXRlTWFjaGluZSgpIHsKICAgICAgICAvLyBNYXRlcmlhbCAmIFByb2ZpbGUgSW5wdXRzCiAgICAgICAgY29uc3QgdCA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3QnKS52YWx1ZSk7CiAgICAgICAgY29uc3Qgc3kgPSBwYXJzZUZsb2F0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd5aWVsZCcpLnZhbHVlKTsKICAgICAgICBjb25zdCBhbmdsZXMgPSBwYXJzZUZsb2F0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbmdsZXMnKS52YWx1ZSk7CiAgICAgICAgY29uc3QgZGVwdGggPSBwYXJzZUZsb2F0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXB0aCcpLnZhbHVlKTsKICAgICAgICAKICAgICAgICAvLyBQZXJmb3JtYW5jZSBJbnB1dHMKICAgICAgICBjb25zdCB2ID0gcGFyc2VGbG9hdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BlZWQnKS52YWx1ZSk7CiAgICAgICAgY29uc3QgbWF4UGFzcyA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21heFBhc3MnKS52YWx1ZSk7CgogICAgICAgIC8vIEFkZGl0aW9uYWwgQ29zdHMgSW5wdXRzCiAgICAgICAgY29uc3Qgc2hpcHBpbmcgPSBwYXJzZUZsb2F0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaGlwcGluZycpLnZhbHVlKSB8fCAwOwogICAgICAgIGNvbnN0IHNldHVwID0gcGFyc2VGbG9hdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2V0dXAnKS52YWx1ZSkgfHwgMDsKCiAgICAgICAgLy8gU3RhdGlvbiBDYWxjdWxhdGlvbgogICAgICAgIGxldCBuQmFzZSA9IE1hdGguY2VpbChhbmdsZXMgLyBtYXhQYXNzKSArIDI7CiAgICAgICAgaWYgKGRlcHRoID4gNzApIG5CYXNlICs9IDI7IAogICAgICAgIGNvbnN0IHRvdGFsTiA9IE1hdGgubWF4KDQsIG5CYXNlKTsgCgogICAgICAgIC8vIE1vdG9yIFBvd2VyIENhbGN1bGF0aW9uCiAgICAgICAgY29uc3QgZGVwdGhGYWN0b3IgPSAxICsgKGRlcHRoIC8gMjAwKTsKICAgICAgICBjb25zdCByYXdLVyA9ICgwLjAwMDE4ICogc3kgKiAodCAqIHQpICogdiAqICh0b3RhbE4gLyAxMCkgKiBkZXB0aEZhY3RvcikgLyAwLjg1OwogICAgICAgIGNvbnN0IG1vdG9ycyA9IFswLjc1LCAxLjUsIDIuMiwgMy43LCA1LjUsIDcuNSwgMTEsIDE1LCAxOC41LCAyMiwgMzAsIDM3LCA0NSwgNTUsIDc1XTsKICAgICAgICBjb25zdCBzdWdnZXN0ZWRLVyA9IG1vdG9ycy5maW5kKG0gPT4gbSA+PSByYXdLVykgfHwgcmF3S1c7CgogICAgICAgIC8vIEJhc2UgTWFjaGluZSBDb3N0IENhbGN1bGF0aW9uCiAgICAgICAgY29uc3QgYmFzZVN0YXRpb25Db3N0ID0gMjQwMDsgCiAgICAgICAgY29uc3QgcG93ZXJDb3N0RmFjdG9yID0gNTAwOyAgCiAgICAgICAgbGV0IG1hY2hpbmVDb3N0ID0gKHRvdGFsTiAqIGJhc2VTdGF0aW9uQ29zdCkgKyAoc3VnZ2VzdGVkS1cgKiBwb3dlckNvc3RGYWN0b3IpOwogICAgICAgIAogICAgICAgIC8vIEFwcGx5IHZhcmlhbmNlIHN0cmljdGx5IHRvIHRoZSBtYWNoaW5lIGNvc3QsIHRoZW4gYWRkIGZpeGVkIHNoaXBwaW5nL3NldHVwCiAgICAgICAgY29uc3QgbWFjaGluZUxvdyA9IE1hdGgucm91bmQoKG1hY2hpbmVDb3N0ICogMC45KSAvIDUwMCkgKiA1MDA7CiAgICAgICAgY29uc3QgbWFjaGluZUhpZ2ggPSBNYXRoLnJvdW5kKChtYWNoaW5lQ29zdCAqIDEuMSkgLyA1MDApICogNTAwOwoKICAgICAgICBjb25zdCB0b3RhbExvd1JhbmdlID0gbWFjaGluZUxvdyArIHNoaXBwaW5nICsgc2V0dXA7CiAgICAgICAgY29uc3QgdG90YWxIaWdoUmFuZ2UgPSBtYWNoaW5lSGlnaCArIHNoaXBwaW5nICsgc2V0dXA7CgogICAgICAgIC8vIE91dHB1dCB0byBVSQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdXROJykuaW5uZXJUZXh0ID0gdG90YWxOOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdXRLVycpLmlubmVyVGV4dCA9IHN1Z2dlc3RlZEtXLnRvRml4ZWQoMSkgKyAiIGtXIjsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3V0Q29zdCcpLmlubmVyVGV4dCA9ICIkIiArIHRvdGFsTG93UmFuZ2UudG9Mb2NhbGVTdHJpbmcoKSArICIgLSAiICsgdG90YWxIaWdoUmFuZ2UudG9Mb2NhbGVTdHJpbmcoKTsKICAgICAgICAKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0cycpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgfQo8L3NjcmlwdD53CWNvcmUvaHRtbHfLTjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgIDx0aXRsZT5CZWxpIFJvbGxGb3JtaW5nIC0gRW5naW5lZXJpbmcgQ29uZmlndXJhdG9yPC90aXRsZT4KICAgIDxzdHlsZT4KICAgICAgICBib2R5IHsgZm9udC1mYW1pbHk6ICdTZWdvZSBVSScsIFRhaG9tYSwgc2Fucy1zZXJpZjsgYmFja2dyb3VuZDogI2YwZjJmNTsgcGFkZGluZzogMjBweDsgbGluZS1oZWlnaHQ6IDEuNjsgfQogICAgICAgIC5jYWxjLWNhcmQgeyBiYWNrZ3JvdW5kOiAjZmZmOyBtYXgtd2lkdGg6IDg1MHB4OyBtYXJnaW46IGF1dG87IHBhZGRpbmc6IDQwcHg7IGJvcmRlci1yYWRpdXM6IDEycHg7IGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMCwwLDAsMC4xKTsgfQogICAgICAgIAogICAgICAgIGgyIHsgY29sb3I6ICMxYTNhNWY7IHRleHQtYWxpZ246IDsgbWFyZ2luLWJvdHRvbTogMzBweDsgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICNkMzJmMmY7IHBhZGRpbmctYm90dG9tOiAxNXB4OyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBsZXR0ZXItc3BhY2luZzogMXB4O30KICAgICAgICAKICAgICAgICAuc2VjdGlvbi1oZWFkZXIgeyBjb2xvcjogI2QzMmYyZjsgZm9udC13ZWlnaHQ6IGJvbGQ7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGZvbnQtc2l6ZTogMC45ZW07IG1hcmdpbi10b3A6IDM1cHg7IGxldHRlci1zcGFjaW5nOiAxLjJweDsgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjZDMyZjJmOyBwYWRkaW5nLWxlZnQ6IDEycHg7IH0KICAgICAgICAuaW50cm8tdGV4dCB7IGZvbnQtc2l6ZTogMC45MmVtOyBjb2xvcjogIzU1NTsgbWFyZ2luOiAxMHB4IDAgMjBweCAwOyBiYWNrZ3JvdW5kOiAjZjhmYWZjOyBwYWRkaW5nOiAxNXB4OyBib3JkZXItcmFkaXVzOiA2cHg7IGJvcmRlcjogMXB4IHNvbGlkICNlZGYyZjc7IH0KCiAgICAgICAgLnByZXNldC1jb250YWluZXIgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDEwcHg7IG1hcmdpbi1ib3R0b206IDI1cHg7IGZsZXgtd3JhcDogd3JhcDsgfQogICAgICAgIC5wcmVzZXQtYnRuIHsgYmFja2dyb3VuZDogI2ZmZjsgYm9yZGVyOiAxcHggc29saWQgI2NiZDVlMDsgcGFkZGluZzogMTBweCAyMHB4OyBib3JkZXItcmFkaXVzOiA2cHg7IGN1cnNvcjogcG9pbnRlcjsgZm9udC1zaXplOiAwLjg1ZW07IGZvbnQtd2VpZ2h0OiA2MDA7IHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7IH0KICAgICAgICAucHJlc2V0LWJ0bjpob3ZlciB7IGJhY2tncm91bmQ6ICMxYTNhNWY7IGNvbG9yOiB3aGl0ZTsgYm9yZGVyLWNvbG9yOiAjMWEzYTVmOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7IH0KCiAgICAgICAgLmlucHV0LWdyaWQgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7IGdhcDogMjVweDsgfQogICAgICAgIGxhYmVsIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiAjMmQzNzQ4OyBmb250LXNpemU6IDAuODVlbTsgbWFyZ2luLWJvdHRvbTogOHB4OyB9CiAgICAgICAgaW5wdXQsIHNlbGVjdCB7IHdpZHRoOiAxMDAlOyBwYWRkaW5nOiAxMnB4OyBib3JkZXI6IDFweCBzb2xpZCAjY2JkNWUwOyBib3JkZXItcmFkaXVzOiA2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJhY2tncm91bmQ6ICNmZmY7IGZvbnQtc2l6ZTogMTRweDsgfQogICAgICAgIAogICAgICAgIGJ1dHRvbi5tYWluLWNhbGMgeyB3aWR0aDogMTAwJTsgYmFja2dyb3VuZDogI2QzMmYyZjsgY29sb3I6IHdoaXRlOyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDIwcHg7IGJvcmRlci1yYWRpdXM6IDZweDsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDEuMWVtOyBmb250LXdlaWdodDogYm9sZDsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luLXRvcDogNDBweDsgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjNzOyB9CiAgICAgICAgYnV0dG9uLm1haW4tY2FsYzpob3ZlciB7IGJhY2tncm91bmQ6ICNiNzFjMWM7IH0KCiAgICAgICAgLnJlc3VsdHMgeyBtYXJnaW4tdG9wOiA0MHB4OyBkaXNwbGF5OiBub25lOyBiYWNrZ3JvdW5kOiAjMWEzYTVmOyBjb2xvcjogI2ZmZjsgcGFkZGluZzogMzVweDsgYm9yZGVyLXJhZGl1czogMTBweDsgfQogICAgICAgIC5yZXMtZ3JpZCB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmciAxZnI7IGdhcDogMjBweDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiAgICAgICAgLnJlcy12YWwgeyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAyLjJlbTsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjZjFjNDBmOyB9CiAgICAgICAgLnJlcy1sYWIgeyBmb250LXNpemU6IDAuNzVlbTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgY29sb3I6ICNjYmQ1ZTA7IGZvbnQtd2VpZ2h0OiA4MDA7IGxldHRlci1zcGFjaW5nOiAxLjVweDsgbWFyZ2luLWJvdHRvbTogNXB4OyB9CiAgICAgICAgLmNvc3Qtbm90ZSB7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICNjYmQ1ZTA7IG1hcmdpbi10b3A6IDIwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zdHlsZTogaXRhbGljOyBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEpOyBwYWRkaW5nLXRvcDogMTVweDsgfQogICAgICAgIAogICAgICAgIC5mb290ZXItaW5mbyB7IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luLXRvcDogMTVweDsgZm9udC1zaXplOiAxMXB4OyB9CiAgICA8L3N0eWxlPgoKCgo8ZGl2IGNsYXNzPSJjYWxjLWNhcmQiPgogICAgPGgyPk1hY2hpbmUgRW5naW5lZXJpbmcgQ29uZmlndXJhdG9yPC9oMj4KCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWhlYWRlciI+U2VsZWN0IE1hY2hpbmUgQXBwbGljYXRpb248L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImludHJvLXRleHQiPgogICAgICAgIENob29zZSBhIHByZXNldCBwcm9maWxlIHRvIGxvYWQgaW5kdXN0cnktc3RhbmRhcmQgcGFyYW1ldGVycy4gVGhlc2UgdGVtcGxhdGVzIHByb3ZpZGUgYSBiYXNlbGluZSBmb3IgPHN0cm9uZz5Ub3RhbCBCZW5kIEFuZ2xlczwvc3Ryb25nPiBhbmQgPHN0cm9uZz5Qcm9maWxlIERlcHRoPC9zdHJvbmc+IGNvbW1vbmx5IGZvdW5kIGluIGdsb2JhbCBjb25zdHJ1Y3Rpb24gc3RhbmRhcmRzLgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmVzZXQtY29udGFpbmVyIj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJwcmVzZXQtYnRuIiBvbmNsaWNrPSJzZXRQcmVzZXQoMzYwLCA1MCkiPkMtUHVybGluPC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0icHJlc2V0LWJ0biIgb25jbGljaz0ic2V0UHJlc2V0KDU0MCwgODApIj5TaWdtYSBTZWN0aW9uPC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0icHJlc2V0LWJ0biIgb25jbGljaz0ic2V0UHJlc2V0KDE4MCwgMjUpIj5VLUNoYW5uZWw8L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJwcmVzZXQtYnRuIiBvbmNsaWNrPSJzZXRQcmVzZXQoNTQwLCA0MCkiPk9tZWdhIC8gSGF0IENoYW5uZWw8L2J1dHRvbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNlY3Rpb24taGVhZGVyIj4xLiBNYXRlcmlhbCBTcGVjaWZpY2F0aW9uIEFuYWx5c2lzPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJpbnRyby10ZXh0Ij4KICAgICAgICA8c3Ryb25nPk1hdGVyaWFsIFRoaWNrbmVzczwvc3Ryb25nPiBhbmQgPHN0cm9uZz5ZaWVsZCBTdHJlbmd0aDwvc3Ryb25nPiBkZXRlcm1pbmUgdGhlIG1lY2hhbmljYWwgcmVzaXN0YW5jZS4gSGlnaGVyIHlpZWxkIG1hdGVyaWFscyAoRzU1MCkgcmVxdWlyZSBzcGVjaWFsaXplZCBzaGFmdCBkaWFtZXRlcnMgYW5kIGxhcmdlciBtb3RvciB0b3JxdWUgdG8gZW5zdXJlIHByZWNpc2lvbiB3aXRob3V0IHNwcmluZ2JhY2suCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyaWQiPgogICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxsYWJlbD5NYXRlcmlhbCBUaGlja25lc3MgKG1tKTwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSJ0IiB2YWx1ZT0iMi4wIiBzdGVwPSIwLjEiPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxsYWJlbD5TdGVlbCBZaWVsZCBTdHJlbmd0aCAoTVBhKTwvbGFiZWw+CiAgICAgICAgICAgIDxzZWxlY3QgaWQ9InlpZWxkIj4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIzNSI+MjM1IE1QYSAoTWlsZCBTdGVlbCk8L29wdGlvbj4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjM0NSIgc2VsZWN0ZWQ9IiI+MzQ1IE1QYSAoU3RhbmRhcmQgLyBRMzQ1KTwvb3B0aW9uPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNTUwIj41NTAgTVBhIChIaWdoIFRlbnNpbGUpPC9vcHRpb24+CiAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1oZWFkZXIiPjIuIFByb2ZpbGUgR2VvbWV0cnkgJmFtcDsgQ29tcGxleGl0eTwvZGl2PgogICAgPGRpdiBjbGFzcz0iaW50cm8tdGV4dCI+CiAgICAgICAgPHN0cm9uZz5Ub3RhbCBCZW5kIEFuZ2xlczwvc3Ryb25nPiByZXByZXNlbnQgdGhlIGN1bXVsYXRpdmUgd29yayByZXF1aXJlZC4gPHN0cm9uZz5Qcm9maWxlIERlcHRoPC9zdHJvbmc+IGlzIGNyaXRpY2FsOyBkZWVwZXIgd2FsbHMgcmVxdWlyZSBtb3JlIHRyYW5zaXRpb24gc3RhdGlvbnMgdG8gcHJldmVudCBtYXRlcmlhbCBzdHJlc3MgYW5kIGVkZ2Ugd2F2ZXMgKG9pbCBjYW5uaW5nKS4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iaW5wdXQtZ3JpZCI+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGxhYmVsPlRvdGFsIEJlbmQgQW5nbGVzICjCsCk8L2xhYmVsPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0iYW5nbGVzIiB2YWx1ZT0iMzYwIj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2PgogICAgICAgICAgICA8bGFiZWw+UHJvZmlsZSBEZXB0aCAobW0pPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9ImRlcHRoIiB2YWx1ZT0iNTAiPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1oZWFkZXIiPjMuIFBlcmZvcm1hbmNlICZhbXA7IE91dHB1dCBTZXR0aW5nczwvZGl2PgogICAgPGRpdiBjbGFzcz0iaW50cm8tdGV4dCI+CiAgICAgICAgPHN0cm9uZz5MaW5lIFNwZWVkPC9zdHJvbmc+IHNjYWxlcyB0aGUgbW90b3IgcmVxdWlyZW1lbnQuIFRoZSA8c3Ryb25nPkZvcm1pbmcgR3JhZGF0aW9uPC9zdHJvbmc+IGxldmVsIGRldGVybWluZXMgaG93IG1hbnkgZGVncmVlcyBvZiBiZW5kIG9jY3VyIHBlciBzdGF0aW9uOyBzbW9vdGhlciBncmFkYXRpb24gcmVzdWx0cyBpbiBzdXBlcmlvciBzdXJmYWNlIGZpbmlzaCBhbmQgc3RhYmlsaXR5LgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJpbnB1dC1ncmlkIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgICA8bGFiZWw+UHJvZHVjdGlvbiBTcGVlZCAobS9taW4pPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9InNwZWVkIiB2YWx1ZT0iMTUiPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxsYWJlbD5QcmVjaXNpb24gR3JhZGF0aW9uPC9sYWJlbD4KICAgICAgICAgICAgPHNlbGVjdCBpZD0ibWF4UGFzcyI+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxNSI+U3RhbmRhcmQgKEVmZmljaWVudCk8L29wdGlvbj4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEyIiBzZWxlY3RlZD0iIj5TbW9vdGggKEJhbGFuY2VkIFF1YWxpdHkpPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI4Ij5QcmVjaXNpb24gKEhpZ2ggQ29tcGxleGl0eSk8L29wdGlvbj4KICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWhlYWRlciI+NC4gTG9naXN0aWNzICZhbXA7IFNldHVwIE9wdGlvbnM8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImludHJvLXRleHQiPgogICAgICAgIEluY2x1ZGUgdGhlIGVzdGltYXRlZCA8c3Ryb25nPlNoaXBwaW5nIENvc3Q8L3N0cm9uZz4gYW5kIG9uc2l0ZSA8c3Ryb25nPlNldHVwIENvc3Q8L3N0cm9uZz4gdG8gZ2VuZXJhdGUgYSBmdWxseSBjb21wcmVoZW5zaXZlIHR1cm5rZXkgYnVkZ2V0YXJ5IGVzdGltYXRlLgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJpbnB1dC1ncmlkIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgICA8bGFiZWw+RXN0aW1hdGVkIFNoaXBwaW5nIENvc3QgKCQpPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9InNoaXBwaW5nIiB2YWx1ZT0iNTAwMCIgc3RlcD0iNTAwIj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2PgogICAgICAgICAgICA8bGFiZWw+RXN0aW1hdGVkIFNldHVwIENvc3QgKCQpPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9InNldHVwIiB2YWx1ZT0iMzUwMCIgc3RlcD0iNTAwIj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxidXR0b24gY2xhc3M9Im1haW4tY2FsYyIgb25jbGljaz0iY2FsY3VsYXRlTWFjaGluZSgpIj5HZW5lcmF0ZSBUZWNobmljYWwgUmVwb3J0PC9idXR0b24+CgogICAgPGRpdiBpZD0icmVzdWx0cyIgY2xhc3M9InJlc3VsdHMiPgogICAgICAgIDxkaXYgY2xhc3M9InJlcy1ncmlkIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJyZXMtbGFiIj5Gb3JtaW5nIFN0YXRpb25zPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im91dE4iIGNsYXNzPSJyZXMtdmFsIj4wPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJyZXMtbGFiIj5NYWluIE1vdG9yIFBvd2VyPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im91dEtXIiBjbGFzcz0icmVzLXZhbCI+MCBrVzwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icmVzLWxhYiI+VG90YWwgRXN0aW1hdGVkIENvc3Q8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBpZD0ib3V0Q29zdCIgY2xhc3M9InJlcy12YWwiPiQwPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb3N0LW5vdGUiPgogICAgICAgICAgICAqQnVkZ2V0YXJ5IHJhbmdlIGluY2x1ZGVzIHRoZSBmb3JtaW5nIHVuaXQsIGRyaXZlIHN5c3RlbSwgc2hpcHBpbmcsIGFuZCBzZXR1cC4gRmluYWwgcHJpY2luZyBkZXBlbmRzIGhlYXZpbHkgb24gYXV0b21hdGlvbiBvcHRpb25zLCBjdXR0aW5nIHN5c3RlbXMsIGFuZCBtYXRlcmlhbCBoYW5kbGluZyBzb2x1dGlvbnMuCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWluZm8iPgogICAgICAgICAgICA8c3Ryb25nPkJlbGlldmUgSW5kdXN0cnkgQ29tcGFueTwvc3Ryb25nPiB8IHd3dy5iZWxpcm9sbGZvcm1pbmcuY29tIHwgaW5mb0BiZWxpcm9sbGZvcm1pbmcuY29tCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8c2NyaXB0PgogICAgZnVuY3Rpb24gc2V0UHJlc2V0KGFuZ2xlcywgZGVwdGgpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5nbGVzJykudmFsdWUgPSBhbmdsZXM7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RlcHRoJykudmFsdWUgPSBkZXB0aDsKICAgIH0KCiAgICBmdW5jdGlvbiBjYWxjdWxhdGVNYWNoaW5lKCkgewogICAgICAgIC8vIE1hdGVyaWFsICYgUHJvZmlsZSBJbnB1dHMKICAgICAgICBjb25zdCB0ID0gcGFyc2VGbG9hdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndCcpLnZhbHVlKTsKICAgICAgICBjb25zdCBzeSA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3lpZWxkJykudmFsdWUpOwogICAgICAgIGNvbnN0IGFuZ2xlcyA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FuZ2xlcycpLnZhbHVlKTsKICAgICAgICBjb25zdCBkZXB0aCA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RlcHRoJykudmFsdWUpOwogICAgICAgIAogICAgICAgIC8vIFBlcmZvcm1hbmNlIElucHV0cwogICAgICAgIGNvbnN0IHYgPSBwYXJzZUZsb2F0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGVlZCcpLnZhbHVlKTsKICAgICAgICBjb25zdCBtYXhQYXNzID0gcGFyc2VGbG9hdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWF4UGFzcycpLnZhbHVlKTsKCiAgICAgICAgLy8gQWRkaXRpb25hbCBDb3N0cyBJbnB1dHMKICAgICAgICBjb25zdCBzaGlwcGluZyA9IHBhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NoaXBwaW5nJykudmFsdWUpIHx8IDA7CiAgICAgICAgY29uc3Qgc2V0dXAgPSBwYXJzZUZsb2F0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZXR1cCcpLnZhbHVlKSB8fCAwOwoKICAgICAgICAvLyBTdGF0aW9uIENhbGN1bGF0aW9uCiAgICAgICAgbGV0IG5CYXNlID0gTWF0aC5jZWlsKGFuZ2xlcyAvIG1heFBhc3MpICsgMjsKICAgICAgICBpZiAoZGVwdGggPiA3MCkgbkJhc2UgKz0gMjsgCiAgICAgICAgY29uc3QgdG90YWxOID0gTWF0aC5tYXgoNCwgbkJhc2UpOyAKCiAgICAgICAgLy8gTW90b3IgUG93ZXIgQ2FsY3VsYXRpb24KICAgICAgICBjb25zdCBkZXB0aEZhY3RvciA9IDEgKyAoZGVwdGggLyAyMDApOwogICAgICAgIGNvbnN0IHJhd0tXID0gKDAuMDAwMTggKiBzeSAqICh0ICogdCkgKiB2ICogKHRvdGFsTiAvIDEwKSAqIGRlcHRoRmFjdG9yKSAvIDAuODU7CiAgICAgICAgY29uc3QgbW90b3JzID0gWzAuNzUsIDEuNSwgMi4yLCAzLjcsIDUuNSwgNy41LCAxMSwgMTUsIDE4LjUsIDIyLCAzMCwgMzcsIDQ1LCA1NSwgNzVdOwogICAgICAgIGNvbnN0IHN1Z2dlc3RlZEtXID0gbW90b3JzLmZpbmQobSA9PiBtID49IHJhd0tXKSB8fCByYXdLVzsKCiAgICAgICAgLy8gQmFzZSBNYWNoaW5lIENvc3QgQ2FsY3VsYXRpb24KICAgICAgICBjb25zdCBiYXNlU3RhdGlvbkNvc3QgPSAyNDAwOyAKICAgICAgICBjb25zdCBwb3dlckNvc3RGYWN0b3IgPSA1MDA7ICAKICAgICAgICBsZXQgbWFjaGluZUNvc3QgPSAodG90YWxOICogYmFzZVN0YXRpb25Db3N0KSArIChzdWdnZXN0ZWRLVyAqIHBvd2VyQ29zdEZhY3Rvcik7CiAgICAgICAgCiAgICAgICAgLy8gQXBwbHkgdmFyaWFuY2Ugc3RyaWN0bHkgdG8gdGhlIG1hY2hpbmUgY29zdCwgdGhlbiBhZGQgZml4ZWQgc2hpcHBpbmcvc2V0dXAKICAgICAgICBjb25zdCBtYWNoaW5lTG93ID0gTWF0aC5yb3VuZCgobWFjaGluZUNvc3QgKiAwLjkpIC8gNTAwKSAqIDUwMDsKICAgICAgICBjb25zdCBtYWNoaW5lSGlnaCA9IE1hdGgucm91bmQoKG1hY2hpbmVDb3N0ICogMS4xKSAvIDUwMCkgKiA1MDA7CgogICAgICAgIGNvbnN0IHRvdGFsTG93UmFuZ2UgPSBtYWNoaW5lTG93ICsgc2hpcHBpbmcgKyBzZXR1cDsKICAgICAgICBjb25zdCB0b3RhbEhpZ2hSYW5nZSA9IG1hY2hpbmVIaWdoICsgc2hpcHBpbmcgKyBzZXR1cDsKCiAgICAgICAgLy8gT3V0cHV0IHRvIFVJCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ291dE4nKS5pbm5lclRleHQgPSB0b3RhbE47CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ291dEtXJykuaW5uZXJUZXh0ID0gc3VnZ2VzdGVkS1cudG9GaXhlZCgxKSArICIga1ciOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdXRDb3N0JykuaW5uZXJUZXh0ID0gIiQiICsgdG90YWxMb3dSYW5nZS50b0xvY2FsZVN0cmluZygpICsgIiAtICIgKyB0b3RhbEhpZ2hSYW5nZS50b0xvY2FsZVN0cmluZygpOwogICAgICAgIAogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICB9Cjwvc2NyaXB0PnYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JGEyZThhNjAyLTkzOWYtNDlhMS1iODhmLTA4NTkwYzI0MzY5NHh3XDxoMiBpZD0iZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnMiIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5GcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9uczwvaDI+dwxjb3JlL2hlYWRpbmd9AncaZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnN2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyQ5NzhlNzYxZS02YTkxLTQzYzAtYWZiMS04ZDZjYTEzNzA3YTh4d5UgPGRpdiBjbGFzcz0id3AtYmxvY2stcmFuay1tYXRoLWZhcS1ibG9jayI+PGRpdiBjbGFzcz0icmFuay1tYXRoLWZhcS1pdGVtIj48aDMgY2xhc3M9InJhbmstbWF0aC1xdWVzdGlvbiI+PHN0cm9uZz5Ib3cgZG9lcyBteSBtZXRhbCBjaG9pY2UgY2hhbmdlIHRoZSBtYWNoaW5lIHByaWNlPzwvc3Ryb25nPjwvaDM+PGRpdiBjbGFzcz0icmFuay1tYXRoLWFuc3dlciI+VGhlIG1ldGFsIHlvdSBiZW5kIGNoYW5nZXMgdGhlIGNvc3Qgb2YgdGhlIG1hY2hpbmUgcm9sbGVycy48YnI+PHN0cm9uZz5Tb2Z0IE1ldGFsczo8L3N0cm9uZz4gQWx1bWludW0gYW5kIHRoaW4gY29wcGVyIHVzZSBzdGFuZGFyZCBzdGVlbCByb2xsZXJzLjxicj48c3Ryb25nPkhhcmQgTWV0YWxzOjwvc3Ryb25nPiBIaWdoLXN0cmVuZ3RoIHN0ZWVsIG5lZWRzIHByZW1pdW0gcm9sbGVycy4gVGhlc2UgYXJlIG1hZGUgb2YgdG91Z2ggRDIgb3IgQ3IxMk1vViB0b29sIHN0ZWVsLiBQcmVtaXVtIHJvbGxlcnMgY29zdCBtb3JlIHVwZnJvbnQuIEhvd2V2ZXIsIHRoZXkgZG8gbm90IGNyYWNrIG9yIHdlYXIgb3V0IHdoZW4gYmVuZGluZyBoYXJkIHN0ZWVsLjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InJhbmstbWF0aC1mYXEtaXRlbSI+PGgzIGNsYXNzPSJyYW5rLW1hdGgtcXVlc3Rpb24iPjxzdHJvbmc+QXJlIHRoZXJlIGhpZGRlbiBmZWVzIHdoZW4gaW1wb3J0aW5nIGEgbWFjaGluZT88L3N0cm9uZz48L2gzPjxkaXYgY2xhc3M9InJhbmstbWF0aC1hbnN3ZXIiPlRoZSBiYXNlIHByaWNlIGNvdmVycyB0aGUgbWFjaGluZSBpdHNlbGYuIEJ1dCB5b3UgbXVzdCBwbGFuIGZvciBvdGhlciBjb3N0cy48YnI+WW91IG11c3QgcGF5IGZvciBzZWEgc2hpcHBpbmcuPGJyPllvdSBtdXN0IHBheSBwb3J0IGZlZXMgYW5kIGltcG9ydCB0YXhlcy48YnI+WW91IG11c3QgcGF5IGZvciBmYWN0b3J5IHNldHVwLiBUbyBwcm90ZWN0IHlvdXIgYnVkZ2V0LCByZWFkIG91ciBndWlkZSBvbiB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9iZWxpcm9sbGZvcm1pbmcuY29tL2hpZGRlbi1jb3N0cy1vZi1yb2xsLWZvcm1pbmctbWFjaGluZXJ5LyIgdGFyZ2V0PSJfYmxhbmsiIGRhdGEtdHlwZT0icG9zdCIgZGF0YS1pZD0iMjQxMiIgcmVsPSJub3JlZmVycmVyIG5vb3BlbmVyIj5oaWRkZW4gY29zdHMgb2Ygcm9sbCBmb3JtaW5nIG1hY2hpPC9hPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InJhbmstbWF0aC1mYXEtaXRlbSI+PGgzIGNsYXNzPSJyYW5rLW1hdGgtcXVlc3Rpb24iPjxzdHJvbmc+RG9lcyBhIGN1c3RvbSBtZXRhbCBzaGFwZSBjb3N0IG1vcmUgdG8gYnVpbGQ\/PC9zdHJvbmc+PC9oMz48ZGl2IGNsYXNzPSJyYW5rLW1hdGgtYW5zd2VyIj5lcy4gU3RhbmRhcmQgc2hhcGVzIChsaWtlIGJhc2ljIHJvb2YgcGFuZWxzKSBoYXZlIHNldCBkZXNpZ25zLiBBIGJyYW5kLW5ldywgY3VzdG9tIHNoYXBlIGlzIGRpZmZlcmVudC4gT3VyIHRlYW0gb2YgODArIGVuZ2luZWVycyBtdXN0IGRyYXcgYSBuZXcgImZsb3dlciBwYXR0ZXJuIiBmcm9tIHNjcmF0Y2guIFRoaXMgY3VzdG9tIG1hdGggYW5kIGVuZ2luZWVyaW5nIHRha2VzIG1vcmUgdGltZS4gVGhpcyB3aWxsIGluY3JlYXNlIHRoZSBmaW5hbCBwcmljZS48YnI+PHN0cm9uZz5Ib3cgbG9uZyBkb2VzIGEgbmV3IHJvbGwgZm9ybWluZyBtYWNoaW5lIGxhc3Q\/PC9zdHJvbmc+IEEgaGlnaC1xdWFsaXR5IG1hY2hpbmUgZnJvbSBCZWxpZXZlIEluZHVzdHJ5IENvbXBhbnkgY2FuIHJ1biBoZWF2eSBqb2JzIGZvciAxNSB0byAyMCB5ZWFycy4gVG8gZ2V0IHRoZSBiZXN0IGxpZmVzcGFuLCB5b3UgbXVzdCB0YWtlIGNhcmUgb2YgaXQuPGJyPkNsZWFuIHRoZSByb2xsZXJzIGRhaWx5Ljxicj5PaWwgdGhlIG1vdmluZyBwYXJ0cyBvZnRlbi48YnI+Q2hlY2sgdGhlIG1vdG9ycyBmb3IgaGVhdC4gR29vZCB1cGtlZXAgc2F2ZXMgeW91IG1vbmV5LiBMZWFybiBtb3JlIGFib3V0IHNpbXBsZSA8YSBocmVmPSJodHRwczovL2JlbGlyb2xsZm9ybWluZy5jb20vcm9sbC1mb3JtaW5nLXByZXZlbnRhdGl2ZS1tYWludGVuYW5jZS8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vcmVmZXJyZXIgbm9vcGVuZXIiPnJvbGwgZm9ybWluZyBwcmV2ZW50YXRpdmUgbWFpbnRlbmFuY2U8L2E+LjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InJhbmstbWF0aC1mYXEtaXRlbSI+PGgzIGNsYXNzPSJyYW5rLW1hdGgtcXVlc3Rpb24iPjxzdHJvbmc+RG8gSSByZWFsbHkgbmVlZCBhbiBhdXRvbWF0ZWQgc3RhY2tlcj88L3N0cm9uZz48L2gzPjxkaXYgY2xhc3M9InJhbmstbWF0aC1hbnN3ZXIiPllvdSBkbyBub3QgPGVtPm5lZWQ8L2VtPiBvbmUsIGJ1dCBpdCBpcyBhIHZlcnkgc21hcnQgdXBncmFkZSBmb3IgZmFzdCBsaW5lcy48YnI+PHN0cm9uZz5CYXNpYyBTZXR1cDo8L3N0cm9uZz4gVGhlIG1hY2hpbmUgZHJvcHMgcGFydHMgb250byBhIHRhYmxlLiBXb3JrZXJzIHN0YWNrIHRoZW0gYnkgaGFuZC48YnI+PHN0cm9uZz5BdXRvLVN0YWNrZXI6PC9zdHJvbmc+IEEgcm9ib3QgdGFibGUgY2F0Y2hlcyBhbmQgc3RhY2tzIHRoZSBwYXJ0cyBwZXJmZWN0bHkuIEFuIGF1dG8tc3RhY2tlciByYWlzZXMgdGhlIHN0YXJ0aW5nIHByaWNlLiBCdXQsIGl0IGN1dHMgeW91ciBsYWJvciBjb3N0cyBiZWNhdXNlIHlvdSBuZWVkIGZld2VyIHdvcmtlcnMgb24gdGhlIGZsb29yLjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InJhbmstbWF0aC1mYXEtaXRlbSI+PGgzIGNsYXNzPSJyYW5rLW1hdGgtcXVlc3Rpb24iPjxzdHJvbmc+Q2FuIEkgdGVzdCB0aGUgbWFjaGluZSBiZWZvcmUgSSBwYXkgdGhlIGZpbmFsIGJpbGw\/PC9zdHJvbmc+PC9oMz48ZGl2IGNsYXNzPSJyYW5rLW1hdGgtYW5zd2VyIj5ZZXMhIFdlIHRlc3QgZXZlcnkgbWFjaGluZSBhdCBvdXIgZmFjdG9yeSBpbiBXdXhpLCBDaGluYS48YnI+V2UgbG9hZCB5b3VyIGFjdHVhbCBzdGVlbCBjb2lsIGludG8gdGhlIG1hY2hpbmUuPGJyPldlIHJ1biB0aGUgbWFjaGluZSBhdCBmdWxsIHNwZWVkLjxicj5XZSBtZWFzdXJlIHRoZSBmaW5pc2hlZCBwYXJ0cyB0byBtYWtlIHN1cmUgdGhleSBhcmUgcGVyZmVjdC4gV2Ugb25seSBzaGlwIHRoZSBtYWNoaW5lIHRvIHlvdSBhZnRlciBpdCBwYXNzZXMgdGhlc2Ugc3RyaWN0IHRlc3RzLjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InJhbmstbWF0aC1mYXEtaXRlbSI+PGgzIGNsYXNzPSJyYW5rLW1hdGgtcXVlc3Rpb24iPjxzdHJvbmc+V2hhdCBpcyB0aGUgbm9ybWFsIHJvbGwgZm9ybWluZyBtYWNoaW5lIHByaWNlPzwvc3Ryb25nPjwvaDM+PGRpdiBjbGFzcz0icmFuay1tYXRoLWFuc3dlciI+UHJpY2VzIGNoYW5nZSBhIGxvdCBiYXNlZCBvbiBmZWF0dXJlcy4gQSBzaW1wbGUgbWFjaGluZSBjb3N0cyBhcm91bmQgJDIwLDAwMCB0byAkMzAsMDAwLiBBIGh1Z2UsIGZhc3QgbWFjaGluZSBsaW5lIGNhbiBlYXNpbHkgY29zdCBvdmVyICQyMDAsMDAwLjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InJhbmstbWF0aC1mYXEtaXRlbSI+PGgzIGNsYXNzPSJyYW5rLW1hdGgtcXVlc3Rpb24iPjxzdHJvbmc+V2h5IGFyZSBDaGluZXNlIG1hY2hpbmVzIGNoZWFwZXI\/PC9zdHJvbmc+PC9oMz48ZGl2IGNsYXNzPSJyYW5rLW1hdGgtYW5zd2VyIj5GYWN0b3JpZXMgaW4gQ2hpbmEsIGxpa2UgQmVsaWV2ZSBJbmR1c3RyeSBDb21wYW55IGluIFd1eGksIG1ha2UgcGFydHMgdmVyeSBmYXN0LiBUaGV5IGJ1eSBzdHJvbmcgc3RlZWwgaW4gaHVnZSBhbW91bnRzLiBUaGlzIG1ha2VzIHRoZSBvdmVyYWxsIGNvc3QgbXVjaCBsb3dlciBmb3IgeW91LjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InJhbmstbWF0aC1mYXEtaXRlbSI+PGgzIGNsYXNzPSJyYW5rLW1hdGgtcXVlc3Rpb24iPjxzdHJvbmc+Q2FuIEkgZ2V0IGEgY3VzdG9tIG1hY2hpbmUganVzdCBmb3IgbXkgcGFydHM\/PC9zdHJvbmc+PC9oMz48ZGl2IGNsYXNzPSJyYW5rLW1hdGgtYW5zd2VyIj5ZZXMhIEJlbGlldmUgSW5kdXN0cnkgQ29tcGFueSBtYWtlcyBjdXN0b20gbWFjaGluZXMgYWxsIHRoZSB0aW1lLiBPdXIgZXhwZXJ0IGVuZ2luZWVycyBkZXNpZ24gdGhlIG1hY2hpbmUgcm9sbGVycyB0byBmaXQgeW91ciBleGFjdCBtZXRhbCBzaGFwZXMgcGVyZmVjdGx5LjwvZGl2PjwvZGl2PjwvZGl2PncTcmFuay1tYXRoL2ZhcS1ibG9ja3cAdwJoM3cJdGh1bWJuYWlsdQh2BAJpZHcaZmFxLXF1ZXN0aW9uLTE3NzQ4Mzc0MDAxNzIFdGl0bGV3QzxzdHJvbmc+SG93IGRvZXMgbXkgbWV0YWwgY2hvaWNlIGNoYW5nZSB0aGUgbWFjaGluZSBwcmljZT88L3N0cm9uZz4HY29udGVudHfyAlRoZSBtZXRhbCB5b3UgYmVuZCBjaGFuZ2VzIHRoZSBjb3N0IG9mIHRoZSBtYWNoaW5lIHJvbGxlcnMuPGJyPjxzdHJvbmc+U29mdCBNZXRhbHM6PC9zdHJvbmc+IEFsdW1pbnVtIGFuZCB0aGluIGNvcHBlciB1c2Ugc3RhbmRhcmQgc3RlZWwgcm9sbGVycy48YnI+PHN0cm9uZz5IYXJkIE1ldGFsczo8L3N0cm9uZz4gSGlnaC1zdHJlbmd0aCBzdGVlbCBuZWVkcyBwcmVtaXVtIHJvbGxlcnMuIFRoZXNlIGFyZSBtYWRlIG9mIHRvdWdoIEQyIG9yIENyMTJNb1YgdG9vbCBzdGVlbC4gUHJlbWl1bSByb2xsZXJzIGNvc3QgbW9yZSB1cGZyb250LiBIb3dldmVyLCB0aGV5IGRvIG5vdCBjcmFjayBvciB3ZWFyIG91dCB3aGVuIGJlbmRpbmcgaGFyZCBzdGVlbC4HdmlzaWJsZXh2BAJpZHcaZmFxLXF1ZXN0aW9uLTE3NzQ4Mzc0MTM4ODgFdGl0bGV3QDxzdHJvbmc+QXJlIHRoZXJlIGhpZGRlbiBmZWVzIHdoZW4gaW1wb3J0aW5nIGEgbWFjaGluZT88L3N0cm9uZz4HY29udGVudHeqA1RoZSBiYXNlIHByaWNlIGNvdmVycyB0aGUgbWFjaGluZSBpdHNlbGYuIEJ1dCB5b3UgbXVzdCBwbGFuIGZvciBvdGhlciBjb3N0cy48YnI+WW91IG11c3QgcGF5IGZvciBzZWEgc2hpcHBpbmcuPGJyPllvdSBtdXN0IHBheSBwb3J0IGZlZXMgYW5kIGltcG9ydCB0YXhlcy48YnI+WW91IG11c3QgcGF5IGZvciBmYWN0b3J5IHNldHVwLiBUbyBwcm90ZWN0IHlvdXIgYnVkZ2V0LCByZWFkIG91ciBndWlkZSBvbiB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9iZWxpcm9sbGZvcm1pbmcuY29tL2hpZGRlbi1jb3N0cy1vZi1yb2xsLWZvcm1pbmctbWFjaGluZXJ5LyIgdGFyZ2V0PSJfYmxhbmsiIGRhdGEtdHlwZT0icG9zdCIgZGF0YS1pZD0iMjQxMiIgcmVsPSJub3JlZmVycmVyIG5vb3BlbmVyIj5oaWRkZW4gY29zdHMgb2Ygcm9sbCBmb3JtaW5nIG1hY2hpPC9hPgd2aXNpYmxleHYEAmlkdxpmYXEtcXVlc3Rpb24tMTc3NDgzNzQ1MTExMgV0aXRsZXc+PHN0cm9uZz5Eb2VzIGEgY3VzdG9tIG1ldGFsIHNoYXBlIGNvc3QgbW9yZSB0byBidWlsZD88L3N0cm9uZz4HY29udGVudHeIBmVzLiBTdGFuZGFyZCBzaGFwZXMgKGxpa2UgYmFzaWMgcm9vZiBwYW5lbHMpIGhhdmUgc2V0IGRlc2lnbnMuIEEgYnJhbmQtbmV3LCBjdXN0b20gc2hhcGUgaXMgZGlmZmVyZW50LiBPdXIgdGVhbSBvZiA4MCsgZW5naW5lZXJzIG11c3QgZHJhdyBhIG5ldyAiZmxvd2VyIHBhdHRlcm4iIGZyb20gc2NyYXRjaC4gVGhpcyBjdXN0b20gbWF0aCBhbmQgZW5naW5lZXJpbmcgdGFrZXMgbW9yZSB0aW1lLiBUaGlzIHdpbGwgaW5jcmVhc2UgdGhlIGZpbmFsIHByaWNlLjxicj48c3Ryb25nPkhvdyBsb25nIGRvZXMgYSBuZXcgcm9sbCBmb3JtaW5nIG1hY2hpbmUgbGFzdD88L3N0cm9uZz4gQSBoaWdoLXF1YWxpdHkgbWFjaGluZSBmcm9tIEJlbGlldmUgSW5kdXN0cnkgQ29tcGFueSBjYW4gcnVuIGhlYXZ5IGpvYnMgZm9yIDE1IHRvIDIwIHllYXJzLiBUbyBnZXQgdGhlIGJlc3QgbGlmZXNwYW4sIHlvdSBtdXN0IHRha2UgY2FyZSBvZiBpdC48YnI+Q2xlYW4gdGhlIHJvbGxlcnMgZGFpbHkuPGJyPk9pbCB0aGUgbW92aW5nIHBhcnRzIG9mdGVuLjxicj5DaGVjayB0aGUgbW90b3JzIGZvciBoZWF0LiBHb29kIHVwa2VlcCBzYXZlcyB5b3UgbW9uZXkuIExlYXJuIG1vcmUgYWJvdXQgc2ltcGxlIDxhIGhyZWY9Imh0dHBzOi8vYmVsaXJvbGxmb3JtaW5nLmNvbS9yb2xsLWZvcm1pbmctcHJldmVudGF0aXZlLW1haW50ZW5hbmNlLyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9yZWZlcnJlciBub29wZW5lciI+cm9sbCBmb3JtaW5nIHByZXZlbnRhdGl2ZSBtYWludGVuYW5jZTwvYT4uB3Zpc2libGV4dgQCaWR3GmZhcS1xdWVzdGlvbi0xNzc0ODM3NDY1MjI2BXRpdGxldzc8c3Ryb25nPkRvIEkgcmVhbGx5IG5lZWQgYW4gYXV0b21hdGVkIHN0YWNrZXI\/PC9zdHJvbmc+B2NvbnRlbnR3\/QJZb3UgZG8gbm90IDxlbT5uZWVkPC9lbT4gb25lLCBidXQgaXQgaXMgYSB2ZXJ5IHNtYXJ0IHVwZ3JhZGUgZm9yIGZhc3QgbGluZXMuPGJyPjxzdHJvbmc+QmFzaWMgU2V0dXA6PC9zdHJvbmc+IFRoZSBtYWNoaW5lIGRyb3BzIHBhcnRzIG9udG8gYSB0YWJsZS4gV29ya2VycyBzdGFjayB0aGVtIGJ5IGhhbmQuPGJyPjxzdHJvbmc+QXV0by1TdGFja2VyOjwvc3Ryb25nPiBBIHJvYm90IHRhYmxlIGNhdGNoZXMgYW5kIHN0YWNrcyB0aGUgcGFydHMgcGVyZmVjdGx5LiBBbiBhdXRvLXN0YWNrZXIgcmFpc2VzIHRoZSBzdGFydGluZyBwcmljZS4gQnV0LCBpdCBjdXRzIHlvdXIgbGFib3IgY29zdHMgYmVjYXVzZSB5b3UgbmVlZCBmZXdlciB3b3JrZXJzIG9uIHRoZSBmbG9vci4HdmlzaWJsZXh2BAJpZHcaZmFxLXF1ZXN0aW9uLTE3NzQ4Mzc0ODMwMDAFdGl0bGV3RDxzdHJvbmc+Q2FuIEkgdGVzdCB0aGUgbWFjaGluZSBiZWZvcmUgSSBwYXkgdGhlIGZpbmFsIGJpbGw\/PC9zdHJvbmc+B2NvbnRlbnR3lgJZZXMhIFdlIHRlc3QgZXZlcnkgbWFjaGluZSBhdCBvdXIgZmFjdG9yeSBpbiBXdXhpLCBDaGluYS48YnI+V2UgbG9hZCB5b3VyIGFjdHVhbCBzdGVlbCBjb2lsIGludG8gdGhlIG1hY2hpbmUuPGJyPldlIHJ1biB0aGUgbWFjaGluZSBhdCBmdWxsIHNwZWVkLjxicj5XZSBtZWFzdXJlIHRoZSBmaW5pc2hlZCBwYXJ0cyB0byBtYWtlIHN1cmUgdGhleSBhcmUgcGVyZmVjdC4gV2Ugb25seSBzaGlwIHRoZSBtYWNoaW5lIHRvIHlvdSBhZnRlciBpdCBwYXNzZXMgdGhlc2Ugc3RyaWN0IHRlc3RzLgd2aXNpYmxleHYEAmlkdxpmYXEtcXVlc3Rpb24tMTc3NDgzNzUxNzczNgV0aXRsZXc\/PHN0cm9uZz5XaGF0IGlzIHRoZSBub3JtYWwgcm9sbCBmb3JtaW5nIG1hY2hpbmUgcHJpY2U\/PC9zdHJvbmc+B2NvbnRlbnR3kQFQcmljZXMgY2hhbmdlIGEgbG90IGJhc2VkIG9uIGZlYXR1cmVzLiBBIHNpbXBsZSBtYWNoaW5lIGNvc3RzIGFyb3VuZCAkMjAsMDAwIHRvICQzMCwwMDAuIEEgaHVnZSwgZmFzdCBtYWNoaW5lIGxpbmUgY2FuIGVhc2lseSBjb3N0IG92ZXIgJDIwMCwwMDAuB3Zpc2libGV4dgQCaWR3GmZhcS1xdWVzdGlvbi0xNzc0ODM3NTIzNDc2BXRpdGxldzI8c3Ryb25nPldoeSBhcmUgQ2hpbmVzZSBtYWNoaW5lcyBjaGVhcGVyPzwvc3Ryb25nPgdjb250ZW50d6cBRmFjdG9yaWVzIGluIENoaW5hLCBsaWtlIEJlbGlldmUgSW5kdXN0cnkgQ29tcGFueSBpbiBXdXhpLCBtYWtlIHBhcnRzIHZlcnkgZmFzdC4gVGhleSBidXkgc3Ryb25nIHN0ZWVsIGluIGh1Z2UgYW1vdW50cy4gVGhpcyBtYWtlcyB0aGUgb3ZlcmFsbCBjb3N0IG11Y2ggbG93ZXIgZm9yIHlvdS4HdmlzaWJsZXh2BAJpZHcaZmFxLXF1ZXN0aW9uLTE3NzQ4Mzc1NjE5NDgFdGl0bGV3PjxzdHJvbmc+Q2FuIEkgZ2V0IGEgY3VzdG9tIG1hY2hpbmUganVzdCBmb3IgbXkgcGFydHM\/PC9zdHJvbmc+B2NvbnRlbnR3mwFZZXMhIEJlbGlldmUgSW5kdXN0cnkgQ29tcGFueSBtYWtlcyBjdXN0b20gbWFjaGluZXMgYWxsIHRoZSB0aW1lLiBPdXIgZXhwZXJ0IGVuZ2luZWVycyBkZXNpZ24gdGhlIG1hY2hpbmUgcm9sbGVycyB0byBmaXQgeW91ciBleGFjdCBtZXRhbCBzaGFwZXMgcGVyZmVjdGx5Lgd2aXNpYmxleHcAdwB3AHcEbGVmdHYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDQyZGYyOWM4LTJlYjMtNDY4Zi1hYjQ5LTdhMzZmOWNkNzgxY3h3TTxoMiBpZD0iY29uY2x1c2lvbiIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+Q29uY2x1c2lvbjwvc3Ryb25nPjwvaDI+dwxjb3JlL2hlYWRpbmd9AncKY29uY2x1c2lvbnYDEHJlc3RyaWN0aW9uX3R5cGV3B2V4Y2x1ZGUSc2VsZWN0ZWRfbGFuZ3VhZ2VzdQAKcGFuZWxfb3Blbnh3JDVjMWYyNjNmLTllZTMtNGZjZC1hMzMzLTA1YzFiZjQ3MDY4NHh3wQM8cD5GaW5kaW5nIHRoZSBiZXN0IDxzdHJvbmc+cm9sbCBmb3JtaW5nIG1hY2hpbmUgcHJpY2U8L3N0cm9uZz4gdGFrZXMgdGltZSBhbmQgc21hcnQgcGxhbm5pbmcuIFlvdSBtdXN0IGxvb2sgY2xvc2VseSBhdCB0aGUgc2hhcGUgb2YgeW91ciBtZXRhbCBwYXJ0cyBhbmQgdGhlIGZhY3Rvcnkgc3BlZWQgeW91IG5lZWQuIEEgY2hlYXAgbWFjaGluZSBtaWdodCBjb3N0IHlvdSBtb3JlIGxhdGVyIGlmIGl0IGJyZWFrcyBkb3duIG9mdGVuLiBBIGdvb2QgbWFjaGluZSBydW5zIGZhc3QsIHN0YXlzIHN0cm9uZywgYW5kIHNhdmVzIHlvdXIgbWV0YWwgZnJvbSB3YXN0ZS4gV2l0aCAxNSsgeWVhcnMgb2YgZXhwZXJ0IHdvcmsgYW5kIG92ZXIgODAgZXhwZXJ0IGVuZ2luZWVycywgQmVsaWV2ZSBJbmR1c3RyeSBDb21wYW55IGlzIGhlcmUgdG8gaGVscCB5b3Ugd2luIGluIHRoZSBtYXJrZXQuPC9wPncOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyQ1ZjIxMWYwYi0zNDczLTRjMGMtYTAzMy1mNmI2NTFhODA1YTV4d5sCPHA+PHN0cm9uZz5SZWFkeSB0byB1cGdyYWRlIHlvdXIgZmFjdG9yeSBsaW5lPyBDb250YWN0IEJFTEkncyBlbmdpbmVlcmluZyB0ZWFtIHRvZGF5IGZvciBhIGZyZWUsIGN1c3RvbSBxdW90ZSEgUmVhY2ggb3V0IHRvIHVzIHZpYSBXaGF0c0FwcCBhdCA8YSBocmVmPSJodHRwczovL3dhLm1lLys4NjE4NjE2OTI3NzYwIj4rODYxODYxNjkyNzc2MDwvYT4gb3Igc2VuZCB1cyBhbiA8YSBocmVmPSJtYWlsdG86ZW5xdWlyeUBiZWxpZXZlaW5kdXN0cnkuY29tIj5lbWFpbDwvYT4uPC9zdHJvbmc+PC9wPncOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54AA==\",\"updateId\":525923807}","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"page_builder":"","_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false},"categories":[1],"tags":[],"class_list":["post-4608","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/03\/roll-forming-machine-price.webp?fit=2816%2C1536&ssl=1","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pgM2Nx-1ck","jetpack-related-posts":[{"id":5057,"url":"https:\/\/belirollforming.com\/es\/material-handling-industry-roll-forming-machines\/","url_meta":{"origin":4608,"position":0},"title":"Material Handling Industry Roll Forming Machines: Ultimate guides 2026","author":"Believe Industry Company","date":"enero 15, 2026","format":false,"excerpt":"\ud83d\udca1What are Material handling industry roll forming machines? \ud83d\udca1 Material handling industry roll forming machines are heavy-duty factory systems used to make strong storage racks, upright columns, and beams for warehouses. Global buyers trust Believe Industry Company. We are located in Wuxi, China. We have over 15 years of expert\u2026","rel":"","context":"En \u00abApplication\u00bb","block_context":{"text":"Application","link":"https:\/\/belirollforming.com\/es\/categoria\/solicitud\/"},"img":{"alt_text":"Material Handling Industry Roll Forming Machines","src":"https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/04\/Welded-Upright-Frame-Roll-Former-Machine_resize.webp?fit=1200%2C900&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/04\/Welded-Upright-Frame-Roll-Former-Machine_resize.webp?fit=1200%2C900&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/04\/Welded-Upright-Frame-Roll-Former-Machine_resize.webp?fit=1200%2C900&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/04\/Welded-Upright-Frame-Roll-Former-Machine_resize.webp?fit=1200%2C900&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/04\/Welded-Upright-Frame-Roll-Former-Machine_resize.webp?fit=1200%2C900&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":4285,"url":"https:\/\/belirollforming.com\/es\/usa-roofing-profit-calculator-2026\/","url_meta":{"origin":4608,"position":1},"title":"The 2026 USA Roofing Profit Calculator: Strategies to Double Your Manufacturing Margins","author":"Believe Industry Company","date":"marzo 18, 2026","format":false,"excerpt":"A USA Roofing Profit Calculator is a vital tool for 2026 contractors to determine net earnings by subtracting material costs ($2.10\u2013$6.00\/sq. ft.), labor, and 25% overhead from contract totals. By switching from pre-formed panels to in-house Beli Rollforming, contractors use the calculator to visualize a 40% margin increase, primarily driven\u2026","rel":"","context":"En \u00abApplication\u00bb","block_context":{"text":"Application","link":"https:\/\/belirollforming.com\/es\/categoria\/solicitud\/"},"img":{"alt_text":"USA Roofing Profit Calculator","src":"https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/03\/usa-roofing-profit-calculator-beli-2026.webp?fit=1200%2C655&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/03\/usa-roofing-profit-calculator-beli-2026.webp?fit=1200%2C655&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/03\/usa-roofing-profit-calculator-beli-2026.webp?fit=1200%2C655&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/03\/usa-roofing-profit-calculator-beli-2026.webp?fit=1200%2C655&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/03\/usa-roofing-profit-calculator-beli-2026.webp?fit=1200%2C655&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":5025,"url":"https:\/\/belirollforming.com\/es\/top-roll-forming-machine-manufacturers-in-china\/","url_meta":{"origin":4608,"position":2},"title":"Top roll forming machine manufacturers in China: 5 Best Secrets","author":"Believe Industry Company","date":"abril 1, 2026","format":false,"excerpt":"When searching for the top roll forming machine manufacturers in China, buyers must focus on five key secrets: machine strength, integrated solutions, after-sales service, advanced software, and custom design skills. Believe Industry Company leads the top 5 elite builders in Wuxi, China, with over 15 years of experience. The top\u2026","rel":"","context":"Entrada similar","block_context":{"text":"Entrada similar","link":""},"img":{"alt_text":"Top roll forming machine manufacturers in China","src":"https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/04\/Top-roll-forming-machine-manufacturers-in-China-1.webp?fit=1200%2C655&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/04\/Top-roll-forming-machine-manufacturers-in-China-1.webp?fit=1200%2C655&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/04\/Top-roll-forming-machine-manufacturers-in-China-1.webp?fit=1200%2C655&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/04\/Top-roll-forming-machine-manufacturers-in-China-1.webp?fit=1200%2C655&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/04\/Top-roll-forming-machine-manufacturers-in-China-1.webp?fit=1200%2C655&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":4509,"url":"https:\/\/belirollforming.com\/es\/cable-tray-roll-forming-machine-manufacturer\/","url_meta":{"origin":4608,"position":3},"title":"Cable Tray Roll Forming Machine Manufacturer: 6 High-Speed Hacks","author":"Believe Industry Company","date":"noviembre 12, 2025","format":false,"excerpt":"A cable tray roll forming machine manufacturer designs and builds heavy-duty equipment directly in their own factory for electrical support systems. Believe Industry Company is a direct manufacturer located in Wuxi, China, with over 15 years of expertise and 80+ engineers. We build high-speed, precision lines featuring D2 tool steel\u2026","rel":"","context":"En \u00abApplication\u00bb","block_context":{"text":"Application","link":"https:\/\/belirollforming.com\/es\/categoria\/solicitud\/"},"img":{"alt_text":"Cable Tray Roll Forming Machine Manufacturer: 6 High-Speed Hacks","src":"https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/03\/cable-tray-roll-forming-machine-manufacturer.webp?fit=1200%2C900&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/03\/cable-tray-roll-forming-machine-manufacturer.webp?fit=1200%2C900&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/03\/cable-tray-roll-forming-machine-manufacturer.webp?fit=1200%2C900&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/03\/cable-tray-roll-forming-machine-manufacturer.webp?fit=1200%2C900&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/03\/cable-tray-roll-forming-machine-manufacturer.webp?fit=1200%2C900&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":4524,"url":"https:\/\/belirollforming.com\/es\/strut-channel-roll-forming-machine-manufacturer\/","url_meta":{"origin":4608,"position":4},"title":"Strut Channel Roll Forming Machine Manufacturer: 7 Pro Tips","author":"Believe Industry Company","date":"diciembre 25, 2025","format":false,"excerpt":"A strut channel roll forming machine manufacturer designs and builds heavy-duty industrial equipment to produce metal framing systems. Believe Industry Company, a global exporter located in Wuxi, China, offers over 15 years of experience and a dedicated team of 80+ engineers. We deliver high-speed metal forming lines featuring integrated 3-in-1\u2026","rel":"","context":"En \u00abApplication\u00bb","block_context":{"text":"Application","link":"https:\/\/belirollforming.com\/es\/categoria\/solicitud\/"},"img":{"alt_text":"Strut Channel Roll Forming Machine Manufacturer: 7 Pro Tips","src":"https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/03\/Strut-Channel-Roll-Forming-Machine-Manufacturer.webp?fit=1200%2C900&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/03\/Strut-Channel-Roll-Forming-Machine-Manufacturer.webp?fit=1200%2C900&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/03\/Strut-Channel-Roll-Forming-Machine-Manufacturer.webp?fit=1200%2C900&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/03\/Strut-Channel-Roll-Forming-Machine-Manufacturer.webp?fit=1200%2C900&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2026\/03\/Strut-Channel-Roll-Forming-Machine-Manufacturer.webp?fit=1200%2C900&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":3599,"url":"https:\/\/belirollforming.com\/es\/mercados-globales-de-maquinas-perfiladoras-personalizadas-2025\/","url_meta":{"origin":4608,"position":5},"title":"El auge de las m\u00e1quinas perfiladoras personalizadas en los mercados globales en 2025: c\u00f3mo alcanzar una eficiencia de 5 estrellas","author":"Believe Industry Company","date":"noviembre 24, 2025","format":false,"excerpt":"The New Era of Manufacturing with the Custom Roll Forming Machine The manufacturing landscape is undergoing a seismic shift, and at the heart of this transformation is the custom roll forming machine. As we move into 2025, the demand for precision, speed, and adaptability has never been higher. Manufacturers are\u2026","rel":"","context":"En \u00abInformation\u00bb","block_context":{"text":"Information","link":"https:\/\/belirollforming.com\/es\/categoria\/informacion\/"},"img":{"alt_text":"custom roll forming machine","src":"https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2025\/11\/custom-roll-forming-machine.jpg?fit=1200%2C829&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2025\/11\/custom-roll-forming-machine.jpg?fit=1200%2C829&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2025\/11\/custom-roll-forming-machine.jpg?fit=1200%2C829&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2025\/11\/custom-roll-forming-machine.jpg?fit=1200%2C829&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/belirollforming.com\/wp-content\/uploads\/2025\/11\/custom-roll-forming-machine.jpg?fit=1200%2C829&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/belirollforming.com\/es\/wp-json\/wp\/v2\/posts\/4608","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/belirollforming.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/belirollforming.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/belirollforming.com\/es\/wp-json\/wp\/v2\/users\/136317769"}],"replies":[{"embeddable":true,"href":"https:\/\/belirollforming.com\/es\/wp-json\/wp\/v2\/comments?post=4608"}],"version-history":[{"count":16,"href":"https:\/\/belirollforming.com\/es\/wp-json\/wp\/v2\/posts\/4608\/revisions"}],"predecessor-version":[{"id":5079,"href":"https:\/\/belirollforming.com\/es\/wp-json\/wp\/v2\/posts\/4608\/revisions\/5079"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/belirollforming.com\/es\/wp-json\/wp\/v2\/media\/4622"}],"wp:attachment":[{"href":"https:\/\/belirollforming.com\/es\/wp-json\/wp\/v2\/media?parent=4608"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/belirollforming.com\/es\/wp-json\/wp\/v2\/categories?post=4608"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/belirollforming.com\/es\/wp-json\/wp\/v2\/tags?post=4608"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}