WHO Immunization Implementation Guide
0.2.0 - ci-build
WHO Immunization Implementation Guide, published by WHO. This guide is not an authorized publication; it is the continuous build for version 0.2.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-immunizations/tree/costateixeira-update-readme and changes regularly. See the Directory of published versions
| Draft as of 2025-07-02 |
{
"resourceType" : "Library",
"id" : "IMMZD18SMeaslesSupplementaryLogic",
"meta" : {
"profile" : [
🔗 "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"🔗 ,
"http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"🔗 ,
"http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"🔗 ,
"http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"
]
},
"text" : {
"status" : "extensions",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n<div>\n <table class=\"grid dict\">\n \n \n <tr>\n <th scope=\"row\"><b>Title: </b></th>\n <td style=\"padding-left: 4px;\">IMMZD18SMeaslesSupplementaryLogic</td>\n </tr>\n \n\n \n \n <tr>\n <th scope=\"row\"><b>Id: </b></th>\n <td style=\"padding-left: 4px;\">IMMZD18SMeaslesSupplementaryLogic</td>\n </tr>\n \n\n \n \n <tr>\n <th scope=\"row\"><b>Version: </b></th>\n <td style=\"padding-left: 4px;\">0.2.0</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Url: </b></th>\n <td style=\"padding-left: 4px;\"><a href=\"Library-IMMZD18SMeaslesSupplementaryLogic.html\">IMMZD18SMeaslesSupplementaryLogic</a></td>\n </tr>\n \n\n \n\n \n\n \n <tr>\n <th scope=\"row\"><b>Status: </b></th>\n <td style=\"padding-left: 4px;\">draft</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Experimental: </b></th>\n <td style=\"padding-left: 4px;\">true</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Type: </b></th>\n <td style=\"padding-left: 4px;\">\n \n \n \n <p style=\"margin-bottom: 5px;\">\n <b>system: </b> <span><a href=\"http://terminology.hl7.org/6.0.2/CodeSystem-library-type.html\">http://terminology.hl7.org/CodeSystem/library-type</a></span>\n </p>\n \n \n <p style=\"margin-bottom: 5px;\">\n <b>code: </b> <span>logic-library</span>\n </p>\n \n \n \n \n \n </td>\n </tr>\n \n\n \n\n \n <tr>\n <th scope=\"row\"><b>Date: </b></th>\n <td style=\"padding-left: 4px;\">2025-07-02 07:24:46+0000</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Publisher: </b></th>\n <td style=\"padding-left: 4px;\">WHO</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Description: </b></th>\n <td style=\"padding-left: 4px;\"><div><p>This library defines decision support logic for the IMMZ.D18.S.Measles.Supplementary dose schedule table in the Immunization CPG</p>\n</div></td>\n </tr>\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n <tr>\n <th scope=\"row\"><b>Related Artifacts: </b></th>\n <td style=\"padding-left: 4px;\">\n \n \n \n <p><b>Dependencies</b></p>\n <ul>\n \n <li><a href=\"Library-IMMZD2DTMeaslesEncounterElements.html\">IMMZD2DTMeaslesEncounterElements</a></li>\n \n </ul>\n \n \n \n \n \n </td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Parameters: </b></th>\n <td style=\"padding-left: 4px;\">\n <table class=\"grid-dict\">\n <tr><th><b>Name</b></th><th><b>Type</b></th><th><b>Min</b></th><th><b>Max</b></th><th><b>In/Out</b></th></tr>\n \n <tr><th>Today</th><th>date</th><th>0</th><th>1</th><th>In</th></tr>\n \n <tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>MCV supplementary dose was administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Measles-containing vaccine (MCV) supplementary dose</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Measles-containing vaccine (MCV) supplementary dose Due Date</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Measles-containing vaccine (MCV) supplementary dose Create</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Measles-containing vaccine (MCV) supplementary dose Overdue</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Measles-containing vaccine (MCV) supplementary dose Expiration</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>\n \n <tr><th>Test Validation</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>\n \n </table>\n </td>\n </tr>\n \n\n \n\n \n \n <tr>\n <td colspan=\"2\">\n <table>\n <tr><th><a id=\"cql-content\"><b>Content: </b></a> text/cql</th></tr>\n <tr><td><pre><code class=\"language-cql\">\n/*\n * Library: IMMZD18SMeaslesSupplementaryLogic (IMMZ.D18.S.Measles.Supplementary dose schedule)\n * Schedule Table: Measles supplementary dose schedule\n */\nlibrary IMMZD18SMeaslesSupplementaryLogic\n\nusing FHIR version '4.0.1'\ninclude FHIRHelpers version '4.0.1'\n\ninclude IMMZD2DTMeaslesEncounterElements called Encounter\n\nparameter Today Date default Today()\n\ncontext Patient\n\n\n/*\n@output: Measles-containing vaccine (MCV) supplementary dose\n@description: Provision of a MCV supplementary dose\n@trigger: Routine measles immunization schedule is complete\n"Completed the primary vaccination series" = TRUE (where "Vaccine type" = "Measles-containing vaccines") AND Member States defined logic for supplementary dose applied\n@triggerDate: "Date when the primary vaccination series was completed"\n*/\ndefine "Measles-containing vaccine (MCV) supplementary dose":\n not "MCV supplementary dose was administered" and Encounter."Measles routine immunization schedule is complete"\n\n/*\n@output: Measles-containing vaccine (MCV) supplementary dose Create\n@create: Child is due for a MCV supplementary dose if child is HIV-positive, on antiretroviral therapy (ART) and immune reconstitution has been achieved.\n*/\ndefine "Measles-containing vaccine (MCV) supplementary dose Create":\n if "Measles-containing vaccine (MCV) supplementary dose" \n then 'Child is due for a MCV supplementary dose if child is HIV-positive, on antiretroviral therapy (ART) and immune reconstitution has been achieved.' + '\nDue Date: ' + ToString("Measles-containing vaccine (MCV) supplementary dose Due Date")\n else ''\n\n/*\n@dynamicValue: Measles-containing vaccine (MCV) supplementary dose Due Date\n@pseudocode: "Date when the primary vaccination series completed" + 4 weeks\n*/\ndefine "Measles-containing vaccine (MCV) supplementary dose Due Date":\n if "Measles-containing vaccine (MCV) supplementary dose" then Encounter."Date when the primary vaccination series completed" + 4 weeks\n else null\n\n/*\n@dynamicValue: Measles-containing vaccine (MCV) supplementary dose Overdue\n@pseudocode: To be determined by Member States; however, there is no recommended overdue date and individuals are always eligible to be vaccinated.\n*/\ndefine "Measles-containing vaccine (MCV) supplementary dose Overdue":\n null\n\n/*\n@dynamicValue: Measles-containing vaccine (MCV) supplementary dose Expiration\n@pseudocode: To be determined by Member States; however, there is no recommended expiration date and individuals are always eligible to be vaccinated.\n*/\ndefine "Measles-containing vaccine (MCV) supplementary dose Expiration":\n null\n\n/*\n@complete: MCV supplementary dose was administered\n@pseudocode: Count of vaccines administered (where "Vaccine type" = "Measles-containing vaccines" and "Type of dose" = "Supplementary dose") = 1\n*/\ndefine "MCV supplementary dose was administered":\n Encounter."Measles supplementary dose was administered"\n\n\n/*\n@test: Test expected results based on example patients\n*/\ndefine "Test Validation":\n case\n when Patient.id = '47.PS2' then "Measles-containing vaccine (MCV) supplementary dose"\n when Patient.id = '47.D1' then not "Measles-containing vaccine (MCV) supplementary dose"\n else 'No test case set'\n end\n</code></pre></td></tr>\n </table>\n </td>\n </tr>\n \n \n \n \n \n <tr>\n <td colspan=\"2\">\n <table>\n <tr><th><b>Content: </b> application/elm+xml</th></tr>\n <tr><td><pre><code>Encoded data (29804 characters)</code></pre></td></tr>\n </table>\n </td>\n </tr>\n \n \n </table>\n</div>\n</div>"
},
"extension" : [
{
"url" : "http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability",
"valueCode" : "computable"
}
],
"url" : "http://smart.who.int/immunizations/Library/IMMZD18SMeaslesSupplementaryLogic",
"version" : "0.2.0",
"name" : "IMMZD18SMeaslesSupplementaryLogic",
"title" : "IMMZD18SMeaslesSupplementaryLogic",
"status" : "draft",
"experimental" : true,
"type" : {
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/library-type",
"code" : "logic-library"
}
]
},
"date" : "2025-07-02T07:24:46+00:00",
"publisher" : "WHO",
"contact" : [
{
"name" : "WHO",
"telecom" : [
{
"system" : "url",
"value" : "http://who.int"
}
]
}
],
"description" : "This library defines decision support logic for the IMMZ.D18.S.Measles.Supplementary dose schedule table in the Immunization CPG",
"relatedArtifact" : [
{
"type" : "depends-on",
"display" : "Library Encounter",
"resource" : "http://smart.who.int/immunizations/Library/IMMZD2DTMeaslesEncounterElements"
}
],
"parameter" : [
{
"name" : "Today",
"use" : "in",
"min" : 0,
"max" : "1",
"type" : "date"
},
{
"name" : "Patient",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "Patient"
},
{
"name" : "MCV supplementary dose was administered",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Measles-containing vaccine (MCV) supplementary dose",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "boolean"
},
{
"name" : "Measles-containing vaccine (MCV) supplementary dose Due Date",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "date"
},
{
"name" : "Measles-containing vaccine (MCV) supplementary dose Create",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "string"
},
{
"name" : "Measles-containing vaccine (MCV) supplementary dose Overdue",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "Resource"
},
{
"name" : "Measles-containing vaccine (MCV) supplementary dose Expiration",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "Resource"
},
{
"name" : "Test Validation",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "Resource"
}
],
"content" : [
{
"contentType" : "text/cql",
"data" : "Ci8qCiAqIExpYnJhcnk6IElNTVpEMThTTWVhc2xlc1N1cHBsZW1lbnRhcnlMb2dpYyAoSU1NWi5EMTguUy5NZWFzbGVzLlN1cHBsZW1lbnRhcnkgZG9zZSBzY2hlZHVsZSkKICogU2NoZWR1bGUgVGFibGU6IE1lYXNsZXMgc3VwcGxlbWVudGFyeSBkb3NlIHNjaGVkdWxlCiAqLwpsaWJyYXJ5IElNTVpEMThTTWVhc2xlc1N1cHBsZW1lbnRhcnlMb2dpYwoKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgSU1NWkQyRFRNZWFzbGVzRW5jb3VudGVyRWxlbWVudHMgY2FsbGVkIEVuY291bnRlcgoKcGFyYW1ldGVyIFRvZGF5IERhdGUgZGVmYXVsdCBUb2RheSgpCgpjb250ZXh0IFBhdGllbnQKCgovKgpAb3V0cHV0OiBNZWFzbGVzLWNvbnRhaW5pbmcgdmFjY2luZSAoTUNWKSBzdXBwbGVtZW50YXJ5IGRvc2UKQGRlc2NyaXB0aW9uOiBQcm92aXNpb24gb2YgYSBNQ1Ygc3VwcGxlbWVudGFyeSBkb3NlCkB0cmlnZ2VyOiBSb3V0aW5lIG1lYXNsZXMgaW1tdW5pemF0aW9uIHNjaGVkdWxlIGlzIGNvbXBsZXRlCiJDb21wbGV0ZWQgdGhlIHByaW1hcnkgdmFjY2luYXRpb24gc2VyaWVzIiA9IFRSVUUgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIk1lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lcyIpIEFORCBNZW1iZXIgU3RhdGVzIGRlZmluZWQgbG9naWMgZm9yIHN1cHBsZW1lbnRhcnkgZG9zZSBhcHBsaWVkCkB0cmlnZ2VyRGF0ZTogIkRhdGUgd2hlbiB0aGUgcHJpbWFyeSB2YWNjaW5hdGlvbiBzZXJpZXMgd2FzICBjb21wbGV0ZWQiCiovCmRlZmluZSAiTWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmUgKE1DVikgc3VwcGxlbWVudGFyeSBkb3NlIjoKICBub3QgIk1DViBzdXBwbGVtZW50YXJ5IGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCIgYW5kIEVuY291bnRlci4iTWVhc2xlcyByb3V0aW5lIGltbXVuaXphdGlvbiBzY2hlZHVsZSBpcyBjb21wbGV0ZSIKCi8qCkBvdXRwdXQ6IE1lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSBDcmVhdGUKQGNyZWF0ZTogQ2hpbGQgaXMgZHVlIGZvciBhIE1DViBzdXBwbGVtZW50YXJ5IGRvc2UgaWYgY2hpbGQgaXMgSElWLXBvc2l0aXZlLCBvbiBhbnRpcmV0cm92aXJhbCB0aGVyYXB5IChBUlQpIGFuZCBpbW11bmUgcmVjb25zdGl0dXRpb24gaGFzIGJlZW4gYWNoaWV2ZWQuCiovCmRlZmluZSAiTWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmUgKE1DVikgc3VwcGxlbWVudGFyeSBkb3NlIENyZWF0ZSI6CiAgaWYgIk1lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSIgCiAgdGhlbiAnQ2hpbGQgaXMgZHVlIGZvciBhIE1DViBzdXBwbGVtZW50YXJ5IGRvc2UgaWYgY2hpbGQgaXMgSElWLXBvc2l0aXZlLCBvbiBhbnRpcmV0cm92aXJhbCB0aGVyYXB5IChBUlQpIGFuZCBpbW11bmUgcmVjb25zdGl0dXRpb24gaGFzIGJlZW4gYWNoaWV2ZWQuJyArICcKRHVlIERhdGU6ICcgKyBUb1N0cmluZygiTWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmUgKE1DVikgc3VwcGxlbWVudGFyeSBkb3NlIER1ZSBEYXRlIikKICBlbHNlICcnCgovKgpAZHluYW1pY1ZhbHVlOiBNZWFzbGVzLWNvbnRhaW5pbmcgdmFjY2luZSAoTUNWKSBzdXBwbGVtZW50YXJ5IGRvc2UgRHVlIERhdGUKQHBzZXVkb2NvZGU6ICJEYXRlIHdoZW4gdGhlIHByaW1hcnkgdmFjY2luYXRpb24gc2VyaWVzIGNvbXBsZXRlZCIgKyA0IHdlZWtzCiovCmRlZmluZSAiTWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmUgKE1DVikgc3VwcGxlbWVudGFyeSBkb3NlIER1ZSBEYXRlIjoKICBpZiAiTWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmUgKE1DVikgc3VwcGxlbWVudGFyeSBkb3NlIiB0aGVuIEVuY291bnRlci4iRGF0ZSB3aGVuIHRoZSBwcmltYXJ5IHZhY2NpbmF0aW9uIHNlcmllcyBjb21wbGV0ZWQiICsgNCB3ZWVrcwogIGVsc2UgbnVsbAoKLyoKQGR5bmFtaWNWYWx1ZTogTWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmUgKE1DVikgc3VwcGxlbWVudGFyeSBkb3NlIE92ZXJkdWUKQHBzZXVkb2NvZGU6IFRvIGJlIGRldGVybWluZWQgYnkgTWVtYmVyIFN0YXRlczsgaG93ZXZlciwgdGhlcmUgaXMgbm8gcmVjb21tZW5kZWQgb3ZlcmR1ZSBkYXRlIGFuZCBpbmRpdmlkdWFscyBhcmUgYWx3YXlzIGVsaWdpYmxlIHRvIGJlIHZhY2NpbmF0ZWQuCiovCmRlZmluZSAiTWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmUgKE1DVikgc3VwcGxlbWVudGFyeSBkb3NlIE92ZXJkdWUiOgogIG51bGwKCi8qCkBkeW5hbWljVmFsdWU6IE1lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSBFeHBpcmF0aW9uCkBwc2V1ZG9jb2RlOiBUbyBiZSBkZXRlcm1pbmVkIGJ5IE1lbWJlciBTdGF0ZXM7IGhvd2V2ZXIsIHRoZXJlIGlzIG5vIHJlY29tbWVuZGVkIGV4cGlyYXRpb24gZGF0ZSBhbmQgaW5kaXZpZHVhbHMgYXJlIGFsd2F5cyBlbGlnaWJsZSB0byBiZSB2YWNjaW5hdGVkLgoqLwpkZWZpbmUgIk1lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSBFeHBpcmF0aW9uIjoKICBudWxsCgovKgpAY29tcGxldGU6IE1DViBzdXBwbGVtZW50YXJ5IGRvc2Ugd2FzIGFkbWluaXN0ZXJlZApAcHNldWRvY29kZTogQ291bnQgb2YgdmFjY2luZXMgYWRtaW5pc3RlcmVkICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJNZWFzbGVzLWNvbnRhaW5pbmcgdmFjY2luZXMiIGFuZCAiVHlwZSBvZiBkb3NlIiA9ICJTdXBwbGVtZW50YXJ5IGRvc2UiKSA9IDEKKi8KZGVmaW5lICJNQ1Ygc3VwcGxlbWVudGFyeSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiOgogIEVuY291bnRlci4iTWVhc2xlcyBzdXBwbGVtZW50YXJ5IGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCIKCgovKgpAdGVzdDogVGVzdCBleHBlY3RlZCByZXN1bHRzIGJhc2VkIG9uIGV4YW1wbGUgcGF0aWVudHMKKi8KZGVmaW5lICJUZXN0IFZhbGlkYXRpb24iOgogIGNhc2UKICAgIHdoZW4gUGF0aWVudC5pZCA9ICc0Ny5QUzInIHRoZW4gIk1lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSIKICAgIHdoZW4gUGF0aWVudC5pZCA9ICc0Ny5EMScgdGhlbiBub3QgIk1lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSIKICAgIGVsc2UgJ05vIHRlc3QgY2FzZSBzZXQnCiAgZW5kCg=="
},
{
"contentType" : "application/elm+xml",
"data" : "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxpYnJhcnkgeG1sbnM9InVybjpobDctb3JnOmVsbTpyMSIgeG1sbnM6dD0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpmaGlyPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB4bWxuczpxZG00Mz0idXJuOmhlYWx0aGl0LWdvdjpxZG06djRfMyIgeG1sbnM6cWRtNTM9InVybjpoZWFsdGhpdC1nb3Y6cWRtOnY1XzMiIHhtbG5zOmE9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSIgbG9jYWxJZD0iMCI+CiAgIDxhbm5vdGF0aW9uIHRyYW5zbGF0b3JPcHRpb25zPSJFbmFibGVBbm5vdGF0aW9ucyxFbmFibGVMb2NhdG9ycyxEaXNhYmxlTGlzdERlbW90aW9uLERpc2FibGVMaXN0UHJvbW90aW9uIiBzaWduYXR1cmVMZXZlbD0iT3ZlcmxvYWRzIiB4c2k6dHlwZT0iYTpDcWxUb0VsbUluZm8iLz4KICAgPGFubm90YXRpb24gbWVzc2FnZT0iQW4gb3BlcmFuZCBpZGVudGlmaWVyIFtyZWZlcmVuY2VdIGlzIGhpZGluZyBhbm90aGVyIGlkZW50aWZpZXIgb2YgdGhlIHNhbWUgbmFtZS4iIGVycm9yVHlwZT0ic2VtYW50aWMiIGVycm9yU2V2ZXJpdHk9Indhcm5pbmciIHhzaTp0eXBlPSJhOkNxbFRvRWxtRXJyb3IiLz4KICAgPGFubm90YXRpb24gbWVzc2FnZT0iQW4gb3BlcmFuZCBpZGVudGlmaWVyIFtyZWZlcmVuY2VdIGlzIGhpZGluZyBhbm90aGVyIGlkZW50aWZpZXIgb2YgdGhlIHNhbWUgbmFtZS4iIGVycm9yVHlwZT0ic2VtYW50aWMiIGVycm9yU2V2ZXJpdHk9Indhcm5pbmciIHhzaTp0eXBlPSJhOkNxbFRvRWxtRXJyb3IiLz4KICAgPGFubm90YXRpb24gbWVzc2FnZT0iQW4gb3BlcmFuZCBpZGVudGlmaWVyIFtyZWZlcmVuY2VdIGlzIGhpZGluZyBhbm90aGVyIGlkZW50aWZpZXIgb2YgdGhlIHNhbWUgbmFtZS4iIGVycm9yVHlwZT0ic2VtYW50aWMiIGVycm9yU2V2ZXJpdHk9Indhcm5pbmciIHhzaTp0eXBlPSJhOkNxbFRvRWxtRXJyb3IiLz4KICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgIDxhOnMgcj0iMjY5Ij4KICAgICAgICAgPGE6cz4vKgogKiBMaWJyYXJ5OiBJTU1aRDE4U01lYXNsZXNTdXBwbGVtZW50YXJ5TG9naWMgKElNTVouRDE4LlMuTWVhc2xlcy5TdXBwbGVtZW50YXJ5IGRvc2Ugc2NoZWR1bGUpCiAqIFNjaGVkdWxlIFRhYmxlOiBNZWFzbGVzIHN1cHBsZW1lbnRhcnkgZG9zZSBzY2hlZHVsZQogKi8KbGlicmFyeSBJTU1aRDE4U01lYXNsZXNTdXBwbGVtZW50YXJ5TG9naWM8L2E6cz4KICAgICAgPC9hOnM+CiAgIDwvYW5ub3RhdGlvbj4KICAgPGlkZW50aWZpZXIgaWQ9IklNTVpEMThTTWVhc2xlc1N1cHBsZW1lbnRhcnlMb2dpYyIgc3lzdGVtPSJodHRwOi8vc21hcnQud2hvLmludC9pbW11bml6YXRpb25zIi8+CiAgIDxzY2hlbWFJZGVudGlmaWVyIGlkPSJ1cm46aGw3LW9yZzplbG0iIHZlcnNpb249InIxIi8+CiAgIDx1c2luZ3M+CiAgICAgIDxkZWYgbG9jYWxJZD0iMSIgbG9jYWxJZGVudGlmaWVyPSJTeXN0ZW0iIHVyaT0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIi8+CiAgICAgIDxkZWYgbG9jYWxJZD0iMjA2IiBsb2NhdG9yPSI4OjEtODoyNiIgbG9jYWxJZGVudGlmaWVyPSJGSElSIiB1cmk9Imh0dHA6Ly9obDcub3JnL2ZoaXIiIHZlcnNpb249IjQuMC4xIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMjA2Ij4KICAgICAgICAgICAgICAgPGE6cz51c2luZyA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiB2ZXJzaW9uICc0LjAuMSc8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgIDwvdXNpbmdzPgogICA8aW5jbHVkZXM+CiAgICAgIDxkZWYgbG9jYWxJZD0iMjA3IiBsb2NhdG9yPSI5OjEtOTozNSIgbG9jYWxJZGVudGlmaWVyPSJGSElSSGVscGVycyIgcGF0aD0iaHR0cDovL2hsNy5vcmcvZmhpci9GSElSSGVscGVycyIgdmVyc2lvbj0iNC4wLjEiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIyMDciPgogICAgICAgICAgICAgICA8YTpzPmluY2x1ZGUgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+RkhJUkhlbHBlcnM8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IHZlcnNpb24gJzQuMC4xJzwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIyMDgiIGxvY2F0b3I9IjExOjEtMTE6NTciIGxvY2FsSWRlbnRpZmllcj0iRW5jb3VudGVyIiBwYXRoPSJodHRwOi8vc21hcnQud2hvLmludC9pbW11bml6YXRpb25zL0lNTVpEMkRUTWVhc2xlc0VuY291bnRlckVsZW1lbnRzIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMjA4Ij4KICAgICAgICAgICAgICAgPGE6cz5pbmNsdWRlIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPklNTVpEMkRUTWVhc2xlc0VuY291bnRlckVsZW1lbnRzPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiBjYWxsZWQgRW5jb3VudGVyPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICA8L2luY2x1ZGVzPgogICA8cGFyYW1ldGVycz4KICAgICAgPGRlZiBsb2NhbElkPSIyMDkiIGxvY2F0b3I9IjEzOjEtMTM6MzYiIG5hbWU9IlRvZGF5IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMjA5Ij4KICAgICAgICAgICAgICAgPGE6cz5wYXJhbWV0ZXIgVG9kYXkgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iMjEzIj4KICAgICAgICAgICAgICAgICAgPGE6cz5EYXRlPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiBkZWZhdWx0IDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjIxMiI+CiAgICAgICAgICAgICAgICAgIDxhOnM+VG9kYXkoKTwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGRlZmF1bHQgbG9jYWxJZD0iMjEyIiBsb2NhdG9yPSIxMzozMC0xMzozNiIgeHNpOnR5cGU9IlRvZGF5Ii8+CiAgICAgICAgIDxwYXJhbWV0ZXJUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjIxMyIgbG9jYXRvcj0iMTM6MTctMTM6MjAiIG5hbWU9InQ6RGF0ZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICA8L2RlZj4KICAgPC9wYXJhbWV0ZXJzPgogICA8Y29udGV4dHM+CiAgICAgIDxkZWYgbG9jYWxJZD0iMjE3IiBsb2NhdG9yPSIxNToxLTE1OjE1IiBuYW1lPSJQYXRpZW50Ii8+CiAgIDwvY29udGV4dHM+CiAgIDxzdGF0ZW1lbnRzPgogICAgICA8ZGVmIGxvY2FsSWQ9IjIxNSIgbG9jYXRvcj0iMTU6MS0xNToxNSIgbmFtZT0iUGF0aWVudCIgY29udGV4dD0iUGF0aWVudCI+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjIxNiIgeHNpOnR5cGU9IlNpbmdsZXRvbkZyb20iPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyMTQiIGxvY2F0b3I9IjE1OjEtMTU6MTUiIGRhdGFUeXBlPSJmaGlyOlBhdGllbnQiIHRlbXBsYXRlSWQ9Imh0dHA6Ly9obDcub3JnL2ZoaXIvU3RydWN0dXJlRGVmaW5pdGlvbi9QYXRpZW50IiB4c2k6dHlwZT0iUmV0cmlldmUiLz4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIyMjMiIGxvY2F0b3I9IjY0OjEtNjU6NTciIG5hbWU9Ik1DViBzdXBwbGVtZW50YXJ5IGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTp0IG5hbWU9ImNvbXBsZXRlIiB2YWx1ZT0iTUNWIHN1cHBsZW1lbnRhcnkgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIi8+CiAgICAgICAgICAgIDxhOnQgbmFtZT0icHNldWRvY29kZSIgdmFsdWU9IiZxdW90O1ZhY2NpbmUgdHlwZSZxdW90OyA9ICZxdW90O01lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lcyZxdW90OyBhbmQgJnF1b3Q7VHlwZSBvZiBkb3NlJnF1b3Q7ID0gJnF1b3Q7U3VwcGxlbWVudGFyeSBkb3NlJnF1b3Q7KSA9IDEiLz4KICAgICAgICAgICAgPGE6cyByPSIyMjMiPgogICAgICAgICAgICAgICA8YTpzPi8qCkBjb21wbGV0ZTogTUNWIHN1cHBsZW1lbnRhcnkgZG9zZSB3YXMgYWRtaW5pc3RlcmVkCkBwc2V1ZG9jb2RlOiBDb3VudCBvZiB2YWNjaW5lcyBhZG1pbmlzdGVyZWQgKHdoZXJlICZxdW90O1ZhY2NpbmUgdHlwZSZxdW90OyA9ICZxdW90O01lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lcyZxdW90OyBhbmQgJnF1b3Q7VHlwZSBvZiBkb3NlJnF1b3Q7ID0gJnF1b3Q7U3VwcGxlbWVudGFyeSBkb3NlJnF1b3Q7KSA9IDEKKi8KZGVmaW5lICZxdW90O01DViBzdXBwbGVtZW50YXJ5IGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCZxdW90OzoKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIyMjUiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjIyNCI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+RW5jb3VudGVyPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMjUiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O01lYXNsZXMgc3VwcGxlbWVudGFyeSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyMjUiIGxvY2F0b3I9IjY1OjMtNjU6NTciIG5hbWU9Ik1lYXNsZXMgc3VwcGxlbWVudGFyeSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiIGxpYnJhcnlOYW1lPSJFbmNvdW50ZXIiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjIxOSIgbG9jYXRvcj0iMjU6MS0yNjoxMTMiIG5hbWU9Ik1lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTp0IG5hbWU9Im91dHB1dCIgdmFsdWU9Ik1lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSIvPgogICAgICAgICAgICA8YTp0IG5hbWU9ImRlc2NyaXB0aW9uIiB2YWx1ZT0iUHJvdmlzaW9uIG9mIGEgTUNWIHN1cHBsZW1lbnRhcnkgZG9zZSIvPgogICAgICAgICAgICA8YTp0IG5hbWU9InRyaWdnZXIiIHZhbHVlPSImcXVvdDtDb21wbGV0ZWQgdGhlIHByaW1hcnkgdmFjY2luYXRpb24gc2VyaWVzJnF1b3Q7ID0gVFJVRSAod2hlcmUgJnF1b3Q7VmFjY2luZSB0eXBlJnF1b3Q7ID0gJnF1b3Q7TWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmVzJnF1b3Q7KSBBTkQgTWVtYmVyIFN0YXRlcyBkZWZpbmVkIGxvZ2ljIGZvciBzdXBwbGVtZW50YXJ5IGRvc2UgYXBwbGllZCIvPgogICAgICAgICAgICA8YTp0IG5hbWU9InRyaWdnZXJEYXRlIiB2YWx1ZT0iJnF1b3Q7RGF0ZSB3aGVuIHRoZSBwcmltYXJ5IHZhY2NpbmF0aW9uIHNlcmllcyB3YXMgIGNvbXBsZXRlZCZxdW90OyIvPgogICAgICAgICAgICA8YTpzIHI9IjIxOSI+CiAgICAgICAgICAgICAgIDxhOnM+LyoKQG91dHB1dDogTWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmUgKE1DVikgc3VwcGxlbWVudGFyeSBkb3NlCkBkZXNjcmlwdGlvbjogUHJvdmlzaW9uIG9mIGEgTUNWIHN1cHBsZW1lbnRhcnkgZG9zZQpAdHJpZ2dlcjogUm91dGluZSBtZWFzbGVzIGltbXVuaXphdGlvbiBzY2hlZHVsZSBpcyBjb21wbGV0ZQomcXVvdDtDb21wbGV0ZWQgdGhlIHByaW1hcnkgdmFjY2luYXRpb24gc2VyaWVzJnF1b3Q7ID0gVFJVRSAod2hlcmUgJnF1b3Q7VmFjY2luZSB0eXBlJnF1b3Q7ID0gJnF1b3Q7TWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmVzJnF1b3Q7KSBBTkQgTWVtYmVyIFN0YXRlcyBkZWZpbmVkIGxvZ2ljIGZvciBzdXBwbGVtZW50YXJ5IGRvc2UgYXBwbGllZApAdHJpZ2dlckRhdGU6ICZxdW90O0RhdGUgd2hlbiB0aGUgcHJpbWFyeSB2YWNjaW5hdGlvbiBzZXJpZXMgd2FzICBjb21wbGV0ZWQmcXVvdDsKKi8KZGVmaW5lICZxdW90O01lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSZxdW90OzoKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIyMjAiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjIyMSI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+bm90IDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIyNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7TUNWIHN1cHBsZW1lbnRhcnkgZG9zZSB3YXMgYWRtaW5pc3RlcmVkJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4gYW5kIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjIyOCI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjI3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5FbmNvdW50ZXI8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIyOCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7TWVhc2xlcyByb3V0aW5lIGltbXVuaXphdGlvbiBzY2hlZHVsZSBpcyBjb21wbGV0ZSZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyMjAiIGxvY2F0b3I9IjI2OjMtMjY6MTEzIiB4c2k6dHlwZT0iQW5kIj4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjIxIiBsb2NhdG9yPSIyNjozLTI2OjQ3IiB4c2k6dHlwZT0iTm90Ij4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjI2IiBsb2NhdG9yPSIyNjo3LTI2OjQ3IiBuYW1lPSJNQ1Ygc3VwcGxlbWVudGFyeSBkb3NlIHdhcyBhZG1pbmlzdGVyZWQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjI4IiBsb2NhdG9yPSIyNjo1My0yNjoxMTMiIG5hbWU9Ik1lYXNsZXMgcm91dGluZSBpbW11bml6YXRpb24gc2NoZWR1bGUgaXMgY29tcGxldGUiIGxpYnJhcnlOYW1lPSJFbmNvdW50ZXIiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMjQxIiBsb2NhdG9yPSI0MjoxLTQ0OjExIiBuYW1lPSJNZWFzbGVzLWNvbnRhaW5pbmcgdmFjY2luZSAoTUNWKSBzdXBwbGVtZW50YXJ5IGRvc2UgRHVlIERhdGUiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6dCBuYW1lPSJkeW5hbWljVmFsdWUiIHZhbHVlPSJNZWFzbGVzLWNvbnRhaW5pbmcgdmFjY2luZSAoTUNWKSBzdXBwbGVtZW50YXJ5IGRvc2UgRHVlIERhdGUiLz4KICAgICAgICAgICAgPGE6dCBuYW1lPSJwc2V1ZG9jb2RlIiB2YWx1ZT0iJnF1b3Q7RGF0ZSB3aGVuIHRoZSBwcmltYXJ5IHZhY2NpbmF0aW9uIHNlcmllcyBjb21wbGV0ZWQmcXVvdDsgKyA0IHdlZWtzIi8+CiAgICAgICAgICAgIDxhOnMgcj0iMjQxIj4KICAgICAgICAgICAgICAgPGE6cz4vKgpAZHluYW1pY1ZhbHVlOiBNZWFzbGVzLWNvbnRhaW5pbmcgdmFjY2luZSAoTUNWKSBzdXBwbGVtZW50YXJ5IGRvc2UgRHVlIERhdGUKQHBzZXVkb2NvZGU6ICZxdW90O0RhdGUgd2hlbiB0aGUgcHJpbWFyeSB2YWNjaW5hdGlvbiBzZXJpZXMgY29tcGxldGVkJnF1b3Q7ICsgNCB3ZWVrcwoqLwpkZWZpbmUgJnF1b3Q7TWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmUgKE1DVikgc3VwcGxlbWVudGFyeSBkb3NlIER1ZSBEYXRlJnF1b3Q7OgogIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjI0MiI+CiAgICAgICAgICAgICAgICAgIDxhOnM+aWYgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjQzIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtNZWFzbGVzLWNvbnRhaW5pbmcgdmFjY2luZSAoTUNWKSBzdXBwbGVtZW50YXJ5IGRvc2UmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+IHRoZW4gPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjQ0Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNDYiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI0NSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+RW5jb3VudGVyPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNDYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0RhdGUgd2hlbiB0aGUgcHJpbWFyeSB2YWNjaW5hdGlvbiBzZXJpZXMgY29tcGxldGVkJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4gKyA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNDciPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPjQgd2Vla3M8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjI1MCI+CiAgZWxzZSBudWxsPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyNDIiIGxvY2F0b3I9IjQzOjMtNDQ6MTEiIHhzaTp0eXBlPSJJZiI+CiAgICAgICAgICAgIDxjb25kaXRpb24gbG9jYWxJZD0iMjQzIiBsb2NhdG9yPSI0Mzo2LTQzOjU4IiBuYW1lPSJNZWFzbGVzLWNvbnRhaW5pbmcgdmFjY2luZSAoTUNWKSBzdXBwbGVtZW50YXJ5IGRvc2UiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgIDx0aGVuIGxvY2FsSWQ9IjI0NCIgbG9jYXRvcj0iNDM6NjUtNDM6MTM2IiB4c2k6dHlwZT0iQWRkIj4KICAgICAgICAgICAgICAgPHNpZ25hdHVyZSBsb2NhbElkPSIyNDgiIG5hbWU9InQ6RGF0ZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICA8c2lnbmF0dXJlIGxvY2FsSWQ9IjI0OSIgbmFtZT0idDpRdWFudGl0eSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyNDYiIGxvY2F0b3I9IjQzOjY1LTQzOjEyNiIgbmFtZT0iRGF0ZSB3aGVuIHRoZSBwcmltYXJ5IHZhY2NpbmF0aW9uIHNlcmllcyBjb21wbGV0ZWQiIGxpYnJhcnlOYW1lPSJFbmNvdW50ZXIiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjI0NyIgbG9jYXRvcj0iNDM6MTMwLTQzOjEzNiIgdmFsdWU9IjQiIHVuaXQ9IndlZWtzIiB4c2k6dHlwZT0iUXVhbnRpdHkiLz4KICAgICAgICAgICAgPC90aGVuPgogICAgICAgICAgICA8ZWxzZSBsb2NhbElkPSIyNTEiIGFzVHlwZT0idDpEYXRlIiB4c2k6dHlwZT0iQXMiPgogICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyNTAiIGxvY2F0b3I9IjQ0OjgtNDQ6MTEiIHhzaTp0eXBlPSJOdWxsIi8+CiAgICAgICAgICAgIDwvZWxzZT4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIyMzAiIGxvY2F0b3I9IjMyOjEtMzY6OSIgbmFtZT0iTWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmUgKE1DVikgc3VwcGxlbWVudGFyeSBkb3NlIENyZWF0ZSIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTp0IG5hbWU9Im91dHB1dCIgdmFsdWU9Ik1lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSBDcmVhdGUiLz4KICAgICAgICAgICAgPGE6dCBuYW1lPSJjcmVhdGUiIHZhbHVlPSJDaGlsZCBpcyBkdWUgZm9yIGEgTUNWIHN1cHBsZW1lbnRhcnkgZG9zZSBpZiBjaGlsZCBpcyBISVYtcG9zaXRpdmUsIG9uIGFudGlyZXRyb3ZpcmFsIHRoZXJhcHkgKEFSVCkgYW5kIGltbXVuZSByZWNvbnN0aXR1dGlvbiBoYXMgYmVlbiBhY2hpZXZlZC4iLz4KICAgICAgICAgICAgPGE6cyByPSIyMzAiPgogICAgICAgICAgICAgICA8YTpzPi8qCkBvdXRwdXQ6IE1lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSBDcmVhdGUKQGNyZWF0ZTogQ2hpbGQgaXMgZHVlIGZvciBhIE1DViBzdXBwbGVtZW50YXJ5IGRvc2UgaWYgY2hpbGQgaXMgSElWLXBvc2l0aXZlLCBvbiBhbnRpcmV0cm92aXJhbCB0aGVyYXB5IChBUlQpIGFuZCBpbW11bmUgcmVjb25zdGl0dXRpb24gaGFzIGJlZW4gYWNoaWV2ZWQuCiovCmRlZmluZSAmcXVvdDtNZWFzbGVzLWNvbnRhaW5pbmcgdmFjY2luZSAoTUNWKSBzdXBwbGVtZW50YXJ5IGRvc2UgQ3JlYXRlJnF1b3Q7OgogIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjIzMSI+CiAgICAgICAgICAgICAgICAgIDxhOnM+aWYgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjMyIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtNZWFzbGVzLWNvbnRhaW5pbmcgdmFjY2luZSAoTUNWKSBzdXBwbGVtZW50YXJ5IGRvc2UmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+IAogIHRoZW4gPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjYwIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMzkiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIzNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+J0NoaWxkIGlzIGR1ZSBmb3IgYSBNQ1Ygc3VwcGxlbWVudGFyeSBkb3NlIGlmIGNoaWxkIGlzIEhJVi1wb3NpdGl2ZSwgb24gYW50aXJldHJvdmlyYWwgdGhlcmFweSAoQVJUKSBhbmQgaW1tdW5lIHJlY29uc3RpdHV0aW9uIGhhcyBiZWVuIGFjaGlldmVkLic8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+ICsgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjM2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4nCkR1ZSBEYXRlOiAnPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4gKyA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNTYiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPlRvU3RyaW5nKDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI1MiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7TWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmUgKE1DVikgc3VwcGxlbWVudGFyeSBkb3NlIER1ZSBEYXRlJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPik8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPgogIGVsc2UgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjYxIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4nJzwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjIzMSIgbG9jYXRvcj0iMzM6My0zNjo5IiB4c2k6dHlwZT0iSWYiPgogICAgICAgICAgICA8Y29uZGl0aW9uIGxvY2FsSWQ9IjIzMiIgbG9jYXRvcj0iMzM6Ni0zMzo1OCIgbmFtZT0iTWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmUgKE1DVikgc3VwcGxlbWVudGFyeSBkb3NlIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICA8dGhlbiBsb2NhbElkPSIyNjAiIGxvY2F0b3I9IjM0OjgtMzU6ODYiIHhzaTp0eXBlPSJDb25jYXRlbmF0ZSI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjIzOSIgbG9jYXRvcj0iMzQ6OC0zNDoxNjkiIHhzaTp0eXBlPSJDb25jYXRlbmF0ZSI+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjIzNSIgbG9jYXRvcj0iMzQ6OC0zNDoxNTMiIHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSJDaGlsZCBpcyBkdWUgZm9yIGEgTUNWIHN1cHBsZW1lbnRhcnkgZG9zZSBpZiBjaGlsZCBpcyBISVYtcG9zaXRpdmUsIG9uIGFudGlyZXRyb3ZpcmFsIHRoZXJhcHkgKEFSVCkgYW5kIGltbXVuZSByZWNvbnN0aXR1dGlvbiBoYXMgYmVlbiBhY2hpZXZlZC4iIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjIzNiIgbG9jYXRvcj0iMzQ6MTU3LTM0OjE2OSIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9IiYjeGE7RHVlIERhdGU6ICIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyNTYiIGxvY2F0b3I9IjM1OjE1LTM1Ojg2IiB4c2k6dHlwZT0iVG9TdHJpbmciPgogICAgICAgICAgICAgICAgICA8c2lnbmF0dXJlIGxvY2FsSWQ9IjI1NyIgbmFtZT0idDpEYXRlIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjI1MiIgbG9jYXRvcj0iMzU6MjQtMzU6ODUiIG5hbWU9Ik1lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSBEdWUgRGF0ZSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L3RoZW4+CiAgICAgICAgICAgIDxlbHNlIGxvY2FsSWQ9IjI2MSIgbG9jYXRvcj0iMzY6OC0zNjo5IiB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0iIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjI2MyIgbG9jYXRvcj0iNTA6MS01MTo2IiBuYW1lPSJNZWFzbGVzLWNvbnRhaW5pbmcgdmFjY2luZSAoTUNWKSBzdXBwbGVtZW50YXJ5IGRvc2UgT3ZlcmR1ZSIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTp0IG5hbWU9ImR5bmFtaWNWYWx1ZSIgdmFsdWU9Ik1lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSBPdmVyZHVlIi8+CiAgICAgICAgICAgIDxhOnQgbmFtZT0icHNldWRvY29kZSIgdmFsdWU9IlRvIGJlIGRldGVybWluZWQgYnkgTWVtYmVyIFN0YXRlczsgaG93ZXZlciwgdGhlcmUgaXMgbm8gcmVjb21tZW5kZWQgb3ZlcmR1ZSBkYXRlIGFuZCBpbmRpdmlkdWFscyBhcmUgYWx3YXlzIGVsaWdpYmxlIHRvIGJlIHZhY2NpbmF0ZWQuIi8+CiAgICAgICAgICAgIDxhOnMgcj0iMjYzIj4KICAgICAgICAgICAgICAgPGE6cyByPSIyNjQiPi8qCkBkeW5hbWljVmFsdWU6IE1lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSBPdmVyZHVlCkBwc2V1ZG9jb2RlOiBUbyBiZSBkZXRlcm1pbmVkIGJ5IE1lbWJlciBTdGF0ZXM7IGhvd2V2ZXIsIHRoZXJlIGlzIG5vIHJlY29tbWVuZGVkIG92ZXJkdWUgZGF0ZSBhbmQgaW5kaXZpZHVhbHMgYXJlIGFsd2F5cyBlbGlnaWJsZSB0byBiZSB2YWNjaW5hdGVkLgoqLwpkZWZpbmUgJnF1b3Q7TWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmUgKE1DVikgc3VwcGxlbWVudGFyeSBkb3NlIE92ZXJkdWUmcXVvdDs6CiAgbnVsbDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIyNjQiIGxvY2F0b3I9IjUxOjMtNTE6NiIgeHNpOnR5cGU9Ik51bGwiLz4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMjY2IiBsb2NhdG9yPSI1NzoxLTU4OjYiIG5hbWU9Ik1lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSBFeHBpcmF0aW9uIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnQgbmFtZT0iZHluYW1pY1ZhbHVlIiB2YWx1ZT0iTWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmUgKE1DVikgc3VwcGxlbWVudGFyeSBkb3NlIEV4cGlyYXRpb24iLz4KICAgICAgICAgICAgPGE6dCBuYW1lPSJwc2V1ZG9jb2RlIiB2YWx1ZT0iVG8gYmUgZGV0ZXJtaW5lZCBieSBNZW1iZXIgU3RhdGVzOyBob3dldmVyLCB0aGVyZSBpcyBubyByZWNvbW1lbmRlZCBleHBpcmF0aW9uIGRhdGUgYW5kIGluZGl2aWR1YWxzIGFyZSBhbHdheXMgZWxpZ2libGUgdG8gYmUgdmFjY2luYXRlZC4iLz4KICAgICAgICAgICAgPGE6cyByPSIyNjYiPgogICAgICAgICAgICAgICA8YTpzIHI9IjI2NyI+LyoKQGR5bmFtaWNWYWx1ZTogTWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmUgKE1DVikgc3VwcGxlbWVudGFyeSBkb3NlIEV4cGlyYXRpb24KQHBzZXVkb2NvZGU6IFRvIGJlIGRldGVybWluZWQgYnkgTWVtYmVyIFN0YXRlczsgaG93ZXZlciwgdGhlcmUgaXMgbm8gcmVjb21tZW5kZWQgZXhwaXJhdGlvbiBkYXRlIGFuZCBpbmRpdmlkdWFscyBhcmUgYWx3YXlzIGVsaWdpYmxlIHRvIGJlIHZhY2NpbmF0ZWQuCiovCmRlZmluZSAmcXVvdDtNZWFzbGVzLWNvbnRhaW5pbmcgdmFjY2luZSAoTUNWKSBzdXBwbGVtZW50YXJ5IGRvc2UgRXhwaXJhdGlvbiZxdW90OzoKICBudWxsPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjI2NyIgbG9jYXRvcj0iNTg6My01ODo2IiB4c2k6dHlwZT0iTnVsbCIvPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIyNjkiIGxvY2F0b3I9IjcxOjEtNzY6NSIgbmFtZT0iVGVzdCBWYWxpZGF0aW9uIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnQgbmFtZT0idGVzdCIgdmFsdWU9IlRlc3QgZXhwZWN0ZWQgcmVzdWx0cyBiYXNlZCBvbiBleGFtcGxlIHBhdGllbnRzIi8+CiAgICAgICAgICAgIDxhOnMgcj0iMjY5Ij4KICAgICAgICAgICAgICAgPGE6cz4vKgpAdGVzdDogVGVzdCBleHBlY3RlZCByZXN1bHRzIGJhc2VkIG9uIGV4YW1wbGUgcGF0aWVudHMKKi8KZGVmaW5lICZxdW90O1Rlc3QgVmFsaWRhdGlvbiZxdW90OzoKICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIyNzAiPgogICAgICAgICAgICAgICAgICA8YTpzPmNhc2UKICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjI3MSI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+d2hlbiA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNzIiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI3NCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjczIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5QYXRpZW50PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNzQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmlkPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gPSA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNzUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPic0Ny5QUzInPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4gdGhlbiA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyODAiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O01lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+CiAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyODEiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPndoZW4gPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjgyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyODQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjI4MyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+UGF0aWVudDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjg0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5pZDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+ID0gPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjg1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4nNDcuRDEnPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4gdGhlbiA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyOTAiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPm5vdCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyOTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O01lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPgogICAgZWxzZSA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyOTIiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPidObyB0ZXN0IGNhc2Ugc2V0JzwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4KICBlbmQ8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjI3MCIgbG9jYXRvcj0iNzI6My03Njo1IiB4c2k6dHlwZT0iQ2FzZSI+CiAgICAgICAgICAgIDxjYXNlSXRlbSBsb2NhbElkPSIyNzEiIGxvY2F0b3I9IjczOjUtNzM6ODkiPgogICAgICAgICAgICAgICA8d2hlbiBsb2NhbElkPSIyNzIiIGxvY2F0b3I9IjczOjEwLTczOjMwIiB4c2k6dHlwZT0iRXF1YWwiPgogICAgICAgICAgICAgICAgICA8c2lnbmF0dXJlIGxvY2FsSWQ9IjI3OCIgbmFtZT0idDpTdHJpbmciIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgICAgICAgPHNpZ25hdHVyZSBsb2NhbElkPSIyNzkiIG5hbWU9InQ6U3RyaW5nIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjI3NiIgbmFtZT0iVG9TdHJpbmciIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgPHNpZ25hdHVyZSBsb2NhbElkPSIyNzciIG5hbWU9ImZoaXI6c3RyaW5nIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjI3NCIgbG9jYXRvcj0iNzM6MTAtNzM6MTkiIHBhdGg9ImlkIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjI3MyIgbG9jYXRvcj0iNzM6MTAtNzM6MTYiIG5hbWU9IlBhdGllbnQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyNzUiIGxvY2F0b3I9IjczOjIzLTczOjMwIiB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0iNDcuUFMyIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8L3doZW4+CiAgICAgICAgICAgICAgIDx0aGVuIGxvY2FsSWQ9IjI5MyIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjgwIiBsb2NhdG9yPSI3MzozNy03Mzo4OSIgbmFtZT0iTWVhc2xlcy1jb250YWluaW5nIHZhY2NpbmUgKE1DVikgc3VwcGxlbWVudGFyeSBkb3NlIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICA8YXNUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjI5NCIgeHNpOnR5cGU9IkNob2ljZVR5cGVTcGVjaWZpZXIiPgogICAgICAgICAgICAgICAgICAgICA8Y2hvaWNlIGxvY2FsSWQ9IjI5NSIgbmFtZT0idDpCb29sZWFuIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgICAgIDxjaG9pY2UgbG9jYWxJZD0iMjk2IiBuYW1lPSJ0OlN0cmluZyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICAgICA8L2FzVHlwZVNwZWNpZmllcj4KICAgICAgICAgICAgICAgPC90aGVuPgogICAgICAgICAgICA8L2Nhc2VJdGVtPgogICAgICAgICAgICA8Y2FzZUl0ZW0gbG9jYWxJZD0iMjgxIiBsb2NhdG9yPSI3NDo1LTc0OjkyIj4KICAgICAgICAgICAgICAgPHdoZW4gbG9jYWxJZD0iMjgyIiBsb2NhdG9yPSI3NDoxMC03NDoyOSIgeHNpOnR5cGU9IkVxdWFsIj4KICAgICAgICAgICAgICAgICAgPHNpZ25hdHVyZSBsb2NhbElkPSIyODgiIG5hbWU9InQ6U3RyaW5nIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgIDxzaWduYXR1cmUgbG9jYWxJZD0iMjg5IiBuYW1lPSJ0OlN0cmluZyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyODYiIG5hbWU9IlRvU3RyaW5nIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgIDxzaWduYXR1cmUgbG9jYWxJZD0iMjg3IiBuYW1lPSJmaGlyOnN0cmluZyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIyODQiIGxvY2F0b3I9Ijc0OjEwLTc0OjE5IiBwYXRoPSJpZCIgeHNpOnR5cGU9IlByb3BlcnR5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSIyODMiIGxvY2F0b3I9Ijc0OjEwLTc0OjE2IiBuYW1lPSJQYXRpZW50IiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjg1IiBsb2NhdG9yPSI3NDoyMy03NDoyOSIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9IjQ3LkQxIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8L3doZW4+CiAgICAgICAgICAgICAgIDx0aGVuIGxvY2FsSWQ9IjI5NyIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjkwIiBsb2NhdG9yPSI3NDozNi03NDo5MiIgeHNpOnR5cGU9Ik5vdCI+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjI5MSIgbG9jYXRvcj0iNzQ6NDAtNzQ6OTIiIG5hbWU9Ik1lYXNsZXMtY29udGFpbmluZyB2YWNjaW5lIChNQ1YpIHN1cHBsZW1lbnRhcnkgZG9zZSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8YXNUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjI5OCIgeHNpOnR5cGU9IkNob2ljZVR5cGVTcGVjaWZpZXIiPgogICAgICAgICAgICAgICAgICAgICA8Y2hvaWNlIGxvY2FsSWQ9IjI5OSIgbmFtZT0idDpCb29sZWFuIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgICAgIDxjaG9pY2UgbG9jYWxJZD0iMzAwIiBuYW1lPSJ0OlN0cmluZyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICAgICA8L2FzVHlwZVNwZWNpZmllcj4KICAgICAgICAgICAgICAgPC90aGVuPgogICAgICAgICAgICA8L2Nhc2VJdGVtPgogICAgICAgICAgICA8ZWxzZSBsb2NhbElkPSIzMDEiIHhzaTp0eXBlPSJBcyI+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjI5MiIgbG9jYXRvcj0iNzU6MTAtNzU6MjciIHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSJObyB0ZXN0IGNhc2Ugc2V0IiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8YXNUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjMwMiIgeHNpOnR5cGU9IkNob2ljZVR5cGVTcGVjaWZpZXIiPgogICAgICAgICAgICAgICAgICA8Y2hvaWNlIGxvY2FsSWQ9IjMwMyIgbmFtZT0idDpCb29sZWFuIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgIDxjaG9pY2UgbG9jYWxJZD0iMzA0IiBuYW1lPSJ0OlN0cmluZyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICA8L2FzVHlwZVNwZWNpZmllcj4KICAgICAgICAgICAgPC9lbHNlPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICA8L3N0YXRlbWVudHM+CjwvbGlicmFyeT4K"
}
]
}