-
Notifications
You must be signed in to change notification settings - Fork 294
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Knowledge Manager uses the name instead of URL to fetch resources #2490
Comments
Hi I've gone through the cc: @pld @ndegwamartin @MJ1998 |
Hey Benjamin, while I am catching up with KM clear steps to reproduce this issue will be very helpful. It's easier to follow along the error and understand code better. Requesting to add steps to reproduce. Thanks. |
It could be reproduced with any plan-def that has a nested plan-def if a nested plan-def URL ends with the name with any matching library resource name then the end result would be conflicted. Here is the following plan-def that I'm using and it's crashing with the class cast exception with all 3 nested plan-def. {
"resourceType": "PlanDefinition",
"id": "IMMZDTUmbrella",
"meta": {
"profile": [
"http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-strategydefinition"
]
},
"url": "http://smart.who.int/ig/smart-immunizations/PlanDefinition/IMMZDTUmbrella",
"title": "IMMZ.DT.Umbrella",
"description": "If the child or patient has not been given MCV1 (at 9 months) and MCV2 (between 15-18 months) vaccination",
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/plan-definition-type",
"code": "workflow-definition"
}
]
},
"extension": [
{
"url": "http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeCapability",
"valueCode": "computable"
}
],
"version": "0.1.0",
"name": "IMMZDTUmbrella",
"status": "draft",
"experimental": false,
"publisher": "World Health Organization (WHO)",
"action": [
{
"title": "Check Immunizations",
"description": "Check immunization plan definitions to see what is required.",
"code": [
{
"coding": [
{
"code": "dispense-medications",
"system": "http://hl7.org/fhir/uv/cpg/CodeSystem/cpg-common-process-cs"
}
]
}
],
"selectionBehavior": "all",
"action": [
{
"title": "Immunize patient for Measles Dose 0",
"description": "Provide measles immunization MCV0",
"code": [
{
"coding": [
{
"code": "dispense-medications",
"system": "http://hl7.org/fhir/uv/cpg/CodeSystem/cpg-common-process-cs"
}
]
}
],
"selectionBehavior": "all",
"definitionCanonical": "http://smart.who.int/ig/smart-immunizations/PlanDefinition/IMMZD2DTMeaslesDose0"
},
{
"title": "Immunize patient for Measles",
"description": "Provide measles immunization",
"code": [
{
"coding": [
{
"code": "dispense-medications",
"system": "http://hl7.org/fhir/uv/cpg/CodeSystem/cpg-common-process-cs"
}
]
}
],
"selectionBehavior": "all",
"definitionCanonical": "http://smart.who.int/ig/smart-immunizations/PlanDefinition/IMMZD2DTMeaslesHighTx"
},
{
"title": "Immunize patient for Measles supplementary dose",
"description": "Provide measles supplementary dose immunization",
"code": [
{
"coding": [
{
"code": "dispense-medications",
"system": "http://hl7.org/fhir/uv/cpg/CodeSystem/cpg-common-process-cs"
}
]
}
],
"selectionBehavior": "all",
"definitionCanonical": "http://smart.who.int/ig/smart-immunizations/PlanDefinition/IMMZD2DTMeaslesSupp"
}
]
}
]
} |
hi @MJ1998 any update on this? thank you! |
Which KnowledgeManager.install API are you using ? |
using |
No I mean which install API? There are 3 install APIs in KnowledgeManager class to add resources to knowledge database. |
android-fhir/knowledge/src/main/java/com/google/android/fhir/knowledge/KnowledgeManager.kt Line 117 in 6ff0643
but i think we don't have an issue with install because we have all the resources in KM db |
Ok I think I got the issue without replicating. |
@syedowaisali Did you try the above PR ? |
@MJ1998 I tested it with a test you on your branch and the resources are loading as expected but the test was also working fine without the change that we have in this PR. I think that's not a problem but I'm not sure at this moment and I'm also trying to find out the root cause of this bug. cc: @dubdabasoduba |
Can you share your test ? I might be able to help point out.. |
@Test
fun `check nested plan-def are readable`() = runTest {
val npmPackage = FhirNpmPackage("measles", "0.1.0")
val root = File(javaClass.getResource("/measles")!!.file)
knowledgeManager.install(npmPackage, root)
assertThat(knowledgeManager.loadResources(resourceType = "Library", name = "IMMZD2DTMeaslesDose0")).isNotNull()
assertThat(knowledgeManager.loadResources(resourceType = "Library", name = "IMMZD2DTMeaslesHighTx")).isNotNull()
assertThat(knowledgeManager.loadResources(resourceType = "Library", name = "IMMZD2DTMeaslesSupp")).isNotNull()
assertThat(knowledgeManager.loadResources(resourceType = "PlanDefinition", url = "http://smart.who.int/ig/smart-immunizations/PlanDefinition/IMMZD2DTMeaslesDose0")).isNotNull()
assertThat(knowledgeManager.loadResources(resourceType = "PlanDefinition", url = "http://smart.who.int/ig/smart-immunizations/PlanDefinition/IMMZD2DTMeaslesHighTx")).isNotNull()
assertThat(knowledgeManager.loadResources(resourceType = "PlanDefinition", url = "http://smart.who.int/ig/smart-immunizations/PlanDefinition/IMMZD2DTMeaslesSupp")).isNotNull()
assertThat(knowledgeManager.loadResources(resourceType = "PlanDefinition",name = "IMMZDTUmbrella",)).isNotNull()
} @Test
fun searchByUrl() = runBlockingOnWorkerThread {
loadFile("/measles/Library-IMMZD2DTMeaslesDose0.json", ::importToFhirEngine)
loadFile("/measles/PlanDefinition-IMMZD2DTMeaslesDose0.json", ::importToFhirEngine)
val searchParams = Searches.byUrl("http://smart.who.int/ig/smart-immunizations/PlanDefinition/IMMZD2DTMeaslesDose0")
val repo = FhirEngineRepository(fhirContext, fhirEngine)
assertThat(
repo.search(Bundle::class.java, PlanDefinition::class.java, searchParams)?.entryFirstRep?.resource
).isInstanceOf(PlanDefinition::class.java)
} @MJ1998 Both tests are working fine but I think we have a different issue that needs to be investigated I"m unable to debug on because the breakpoint gets stuck. cc: @dubdabasoduba |
Are you saying you have a different issue in fhircore ? |
maybe but until we completely debug the code on our side. cc: @dubdabasoduba |
I think I know what might be causing an error. There is another bug in the KM where loading by Url "AND Version" causes problem. Try the current PR. |
{
"resourceType": "PlanDefinition",
"id": "IMMZD5DTMeasles",
"meta": {
"profile": [
"http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-recommendationdefinition"
]
},
"url": "http://smart.who.int/ig/smart-immunizations/PlanDefinition/IMMZD5DTMeasles",
"title": "IMMZ.D5.DT.Measles",
"description": "Check contraindications for Measles vaccine",
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/plan-definition-type",
"code": "eca-rule"
}
]
},
"library": [
"http://smart.who.int/ig/smart-immunizations/Library/IMMZD5DTMeasles"
],
"extension": [
{
"url": "http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeCapability",
"valueCode": "computable"
}
],
"version": "0.1.0",
"name": "IMMZD5DTMeasles",
"status": "draft",
"experimental": false,
"publisher": "World Health Organization (WHO)",
"action": [
{
"title": "Send Guidance for the patient regarding MCV contraindication.",
"description": "Show Guidance for the patient regarding MCV contraindication.",
"condition": [
{
"kind": "applicability",
"expression": {
"description": "Guidance",
"language": "text/cql-identifier",
"expression": "Guidance"
}
}
],
"definitionCanonical": "http://smart.who.int/ig/smart-immunizations/ActivityDefinition/IMMZD2DTCR",
"dynamicValue": [
{
"path": "status",
"expression": {
"language": "text/cql-expression",
"expression": "'active'"
}
},
{
"path": "payload.contentAttachment.title",
"expression": {
"language": "text/cql-identifier",
"expression": "Guidance"
}
},
{
"path": "payload.contentAttachment.language",
"expression": {
"language": "text/cql-expression",
"expression": "'en-US'"
}
},
{
"path": "payload.contentAttachment.contentType",
"expression": {
"language": "text/cql-expression",
"expression": "'text/plain'"
}
},
{
"path": "category.coding",
"expression": {
"description": "Category of communication",
"language": "text/cql-expression",
"expression": "Code { system: 'http://terminology.hl7.org/CodeSystem/communication-category', code: 'alert' }"
}
},
{
"path": "priority",
"expression": {
"description": "Alert priority",
"language": "text/cql-expression",
"expression": "Code { system: 'http://hl7.org/fhir/request-priority', code: 'routine' }"
}
}
]
},
{
"title": "Check Contraindication for Measles Immunization",
"description": "Contraindication for measles immunization",
"type": {
"coding": [
{
"code": "update",
"system": "http://terminology.hl7.org/CodeSystem/action-type"
}
]
},
"condition": [
{
"kind": "applicability",
"expression": {
"description": "Measles vaccination contraindicated",
"language": "text/cql-identifier",
"expression": "Measles vaccination contraindicated"
}
}
],
"definitionCanonical": "http://smart.who.int/ig/smart-immunizations/ActivityDefinition/IMMZD5DTMeaslesMR",
"dynamicValue": [
{
"path": "id",
"expression": {
"description": "Draft Medication Request ID for MCV dose",
"language": "text/cql-identifier",
"expression": "Draft Medication Request ID for MCV dose"
}
}
]
}
]
}
|
{
"resourceType": "Library",
"id": "IMMZD5DTMeasles",
"text": {
"status": "generated",
"div": "<div xmlns=\"http://www.w3.org/1999/xhtml\"><h2>Related Artifacts</h2><table class=\"grid\"><tr><td>depends-on</td><td>FHIR model information</td><td><code>http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1</code></td></tr><tr><td>depends-on</td><td>Library FHIRHelpers</td><td><code>http://smart.who.int/ig/smart-immunizations/Library/FHIRHelpers|4.0.1</code></td></tr><tr><td>depends-on</td><td>Library IMMZCom</td><td><a href=\"Library-IMMZCommon.html\">IMMZCommon</a></td></tr><tr><td>depends-on</td><td>Library IMMZc</td><td><a href=\"Library-IMMZConcepts.html\">IMMZConcepts</a></td></tr><tr><td>depends-on</td><td>Library IMMZCon</td><td><a href=\"Library-IMMZConfig.html\">IMMZConfig</a></td></tr><tr><td>depends-on</td><td>Library IMMZvl</td><td><a href=\"Library-IMMZVaccineLibrary.html\">IMMZVaccineLibrary</a></td></tr><tr><td>depends-on</td><td>Library FC</td><td><a href=\"Library-FHIRCommon.html\">FHIRCommon</a></td></tr><tr><td>depends-on</td><td>Library input</td><td><a href=\"Library-IMMZD2DTMeaslesInput.html\">IMMZD2DTMeaslesInput</a></td></tr><tr><td>depends-on</td><td>Library Wcon</td><td><a href=\"Library-WHOConcepts.html\">WHOConcepts</a></td></tr><tr><td>depends-on</td><td>Code system IMMZ.D</td><td><a href=\"CodeSystem-IMMZ.D.html\">IMMZ.D CodeSystem for Data Elements</a></td></tr><tr><td>depends-on</td><td>Value set MCV Vaccine</td><td><a href=\"ValueSet-IMMZ.Z.DE9.html\">IMMZ.Z.DE9 ValueSet for Measles Vaccines</a></td></tr><tr><td>depends-on</td><td>Value set Pregnancy Status Pregnant</td><td><a href=\"ValueSet-pregnancystatus-values.html\">Pregnancy status values</a></td></tr></table><h2>Parameters</h2><table class=\"grid\"><tr><td>Patient</td><td>out</td><td>0</td><td>1</td><td>Patient</td></tr><tr><td>Draft Medication Request for MCV dose</td><td>out</td><td>0</td><td>*</td><td>MedicationRequest</td></tr><tr><td>Draft Medication Request ID for MCV dose</td><td>out</td><td>0</td><td>1</td><td>id</td></tr><tr><td>Measles vaccination contraindicated Case 1</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr><tr><td>Measles vaccination contraindicated Case 2</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr><tr><td>Measles vaccination contraindicated</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr><tr><td>Measles vaccination contraindicated Guidance</td><td>out</td><td>0</td><td>1</td><td>string</td></tr><tr><td>Clinical judgement required Case 1</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr><tr><td>Clinical judgement required Case 2</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr><tr><td>Clinical judgement required Case 3</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr><tr><td>Clinical judgement required</td><td>out</td><td>0</td><td>1</td><td>boolean</td></tr><tr><td>Clinical judgement required Guidance</td><td>out</td><td>0</td><td>1</td><td>string</td></tr><tr><td>Guidance</td><td>out</td><td>0</td><td>1</td><td>string</td></tr></table><h2>Data Requirements</h2><table class=\"grid\"><tr><td colspan=\"2\"><b>Type</b>: <a href=\"http://hl7.org/fhir/R4/patient.html\">Patient</a> (<a href=\"http://hl7.org/fhir/R4/patient.html\">Patient</a>)</td></tr></table><table class=\"grid\"><tr><td colspan=\"2\"><b>Type</b>: <a href=\"http://hl7.org/fhir/R4/medicationrequest.html\">MedicationRequest</a> (<a href=\"http://hl7.org/fhir/R4/medicationrequest.html\">MedicationRequest</a>)</td></tr><tr style=\"background-color: #efefef\"><td>Filter</td><td>Value</td></tr><tr><td>medication</td><td>In ValueSet <a href=\"ValueSet-IMMZ.Z.DE9.html\">IMMZ.Z.DE9 ValueSet for Measles Vaccines</a></td></tr></table><table class=\"grid\"><tr><td colspan=\"2\"><b>Type</b>: <a href=\"http://hl7.org/fhir/R4/observation.html\">Observation</a> (<a href=\"http://hl7.org/fhir/R4/observation.html\">Observation</a>)</td></tr></table><table class=\"grid\"><tr><td colspan=\"2\"><b>Type</b>: <a href=\"http://hl7.org/fhir/R4/condition.html\">Condition</a> (<a href=\"http://hl7.org/fhir/R4/condition.html\">Condition</a>)</td></tr></table><table class=\"grid\"><tr><td colspan=\"2\"><b>Type</b>: <a href=\"http://hl7.org/fhir/R4/condition.html\">Condition</a> (<a href=\"http://hl7.org/fhir/R4/condition.html\">Condition</a>)</td></tr><tr style=\"background-color: #efefef\"><td>Filter</td><td>Value</td></tr><tr><td>code</td><td>One of these codes: <a href=\"CodeSystem-IMMZ.D.html#IMMZ.D-DE165\">IMMZ.D CodeSystem for Data Elements</a> DE165: Severely immunosuppressed</td></tr></table><table class=\"grid\"><tr><td colspan=\"2\"><b>Type</b>: <a href=\"http://hl7.org/fhir/R4/condition.html\">Condition</a> (<a href=\"http://hl7.org/fhir/R4/condition.html\">Condition</a>)</td></tr><tr style=\"background-color: #efefef\"><td>Filter</td><td>Value</td></tr><tr><td>code</td><td>One of these codes: <a href=\"CodeSystem-IMMZ.D.html#IMMZ.D-DE166\">IMMZ.D CodeSystem for Data Elements</a> DE166: History of anaphylactic reactions</td></tr></table><table class=\"grid\"><tr><td colspan=\"2\"><b>Type</b>: <a href=\"http://hl7.org/fhir/R4/condition.html\">Condition</a> (<a href=\"http://hl7.org/fhir/R4/condition.html\">Condition</a>)</td></tr><tr style=\"background-color: #efefef\"><td>Filter</td><td>Value</td></tr><tr><td>code</td><td>One of these codes: <a href=\"CodeSystem-IMMZ.D.html#IMMZ.D-DE167\">IMMZ.D CodeSystem for Data Elements</a> DE167: Severe allergic reactions</td></tr></table><table class=\"grid\"><tr><td colspan=\"2\"><b>Type</b>: <a href=\"http://hl7.org/fhir/R4/condition.html\">Condition</a> (<a href=\"http://hl7.org/fhir/R4/condition.html\">Condition</a>)</td></tr><tr style=\"background-color: #efefef\"><td>Filter</td><td>Value</td></tr><tr><td>code</td><td>One of these codes: <a href=\"CodeSystem-IMMZ.D.html#IMMZ.D-DE168\">IMMZ.D CodeSystem for Data Elements</a> DE168: Symptomatic HIV infection</td></tr></table><h2>Contents</h2><p><code>text/cql</code></p><pre><code class=\"language-sql\">/*\n * Library: IMMZD5DTMeasles (IMMZ.D5.DT.Measles contraindications)\n * Rule: Check for contraindications before administering the vaccine(s) due\t\u00a0\t\u00a0\t\u00a0 \n * Trigger: IMMZ.D5 Determine vaccine(s) to be administered based on contraindications\n */\nlibrary IMMZD5DTMeasles\n// Start Skeleton CQL\nusing FHIR version '4.0.1'\ninclude FHIRHelpers version '4.0.1'\ninclude IMMZCommon called IMMZCom\ninclude IMMZConcepts called IMMZc\ninclude IMMZConfig called IMMZCon\ninclude IMMZVaccineLibrary called IMMZvl\ninclude FHIRCommon called FC\ninclude IMMZD2DTMeaslesInput called input\n\n// End Skeleton CQL\ncontext Patient\n\n/*\n@internal: Draft Medication Request for MCV dose\n*/\ndefine "Draft Medication Request for MCV dose":\n\t[MedicationRequest: IMMZc."MCV Vaccine"] MR where MR.status = 'draft' and MR.intent = 'proposal'\n\tsort by date from (authoredOn as FHIR.dateTime) desc\n\n/*\n@dynamicValue: Draft Medication Request ID for MCV dose\n*/\ndefine "Draft Medication Request ID for MCV dose":\n\tFirst("Draft Medication Request for MCV dose").id\n\n/*\n@dynamicValue: Guidance\n*/\ndefine "Guidance":\n\tCombine( { \n\t\tif "Measles vaccination contraindicated" then "Measles vaccination contraindicated Guidance" else '',\n\t\tif "Clinical judgement required" then "Clinical judgement required Guidance" else ''\n\t}, ' ' )\n\n/*\n@output: Measles vaccination contraindicated Case 1\n@pseudocode: "Immunization recommendation status" = 'Contraindicated'\n*/\ndefine "Measles vaccination contraindicated Case 1":\n\tinput."The client is pregnant"\n\n/*\n@output: Measles vaccination contraindicated Case 2\n@pseudocode: "Immunization recommendation status" = 'Contraindicated'\n*/\ndefine "Measles vaccination contraindicated Case 2":\n\tinput."The client is severely immunosuppressed"\n\n/*\n@output: Measles vaccination contraindicated\n@pseudocode: "Immunization recommendation status" = 'Contraindicated'\n*/\ndefine "Measles vaccination contraindicated":\n\t"Measles vaccination contraindicated Case 1" or "Measles vaccination contraindicated Case 2"\n\n/*\n@output: Measles vaccination contraindicated Guidance\n@guidance: Do not vaccinate due to a contraindication: client is pregnant.\n@guidance: Do not vaccinate due to a contraindication: client is severely immunosuppressed.\n*/\ndefine "Measles vaccination contraindicated Guidance":\n\tCombine( {\n\t\tif "Measles vaccination contraindicated Case 1" then 'Do not vaccinate due to a contraindication: client is pregnant.' else '',\n\t\tif "Measles vaccination contraindicated Case 2" then 'Do not vaccinate due to a contraindication: client is severely immunosuppressed.' else ''\n\t}, ' ' )\n\n/*\n@output: Clinical judgement required Case 1\n@pseudocode: Immunization recommendation status = 'Further evaluation needed'"\n*/\ndefine "Clinical judgement required Case 1":\n\tinput."The client has history of anaphylactic reactions"\n\n/*\n@output: Clinical judgement required Case 2\n@pseudocode: Immunization recommendation status = 'Further evaluation needed'"\n*/\ndefine "Clinical judgement required Case 2":\n\tinput."The client has history of severe allergic reactions"\n\n/*\n@output: Clinical judgement required Case 3\n@pseudocode: Immunization recommendation status = 'Further evaluation needed'"\n*/\ndefine "Clinical judgement required Case 3":\ninput."The client has a symptomatic HIV infection"\n\n/*\n@output: Clinical judgement required\n@pseudocode: Immunization recommendation status = 'Further evaluation needed'"\n*/\ndefine "Clinical judgement required":\n\t"Clinical judgement required Case 1"\n\tor "Clinical judgement required Case 2"\n\tor "Clinical judgement required Case 3"\n\n/*\n@output: Clinical judgement required Guidance\n@guidance: Check if previous anaphylactic reaction refers to components of the vaccine (e.g. neomycin or gelatin)\n@guidance: Check if previous severe reaction refers to components of the vaccine (e.g. neomycin or gelatin) \n@guidance: Vaccination may be considered if the client is not severely immunosuppressed\n*/\ndefine "Clinical judgement required Guidance":\n\tCombine( {\n\t\tif "Clinical judgement required Case 1" then 'Check if previous anaphylactic reaction refers to components of the vaccine (e.g. neomycin or gelatin)' else '',\n\t\tif "Clinical judgement required Case 2" then 'Check if previous severe reaction refers to components of the vaccine (e.g. neomycin or gelatin)' else '',\n\t\tif "Clinical judgement required Case 3" then 'Vaccination may be considered if the client is not severely immunosuppressed' else ''\n\t}, ' ' )\n</code></pre><p><code>Content not shown - (</code><code>application/elm+xml</code>, size = 33Kb )</p><p><code>Content not shown - (</code><code>application/elm+json</code>, size = 57Kb )</p></div>"
},
"extension": [
{
"url": "http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-softwaresystem",
"valueReference": {
"reference": "Device/cqf-tooling"
}
}
],
"url": "http://smart.who.int/ig/smart-immunizations/Library/IMMZD5DTMeasles",
"version": "0.1.0",
"name": "IMMZD5DTMeasles",
"status": "draft",
"date": "2024-05-21T19:04:16+05:00",
"publisher": "World Health Organization (WHO)",
"contact": [
{
"name": "World Health Organization (WHO)",
"telecom": [
{
"system": "url",
"value": "https://www.who.int"
}
]
}
],
"jurisdiction": [
{
"coding": [
{
"system": "http://unstats.un.org/unsd/methods/m49/m49.htm",
"code": "001"
}
]
}
],
"relatedArtifact": [
{
"type": "depends-on",
"display": "FHIR model information",
"resource": "http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1"
},
{
"type": "depends-on",
"display": "Library FHIRHelpers",
"resource": "http://smart.who.int/ig/smart-immunizations/Library/FHIRHelpers|4.0.1"
},
{
"type": "depends-on",
"display": "Library IMMZCom",
"resource": "http://smart.who.int/ig/smart-immunizations/Library/IMMZCommon"
},
{
"type": "depends-on",
"display": "Library IMMZc",
"resource": "http://smart.who.int/ig/smart-immunizations/Library/IMMZConcepts"
},
{
"type": "depends-on",
"display": "Library IMMZCon",
"resource": "http://smart.who.int/ig/smart-immunizations/Library/IMMZConfig"
},
{
"type": "depends-on",
"display": "Library IMMZvl",
"resource": "http://smart.who.int/ig/smart-immunizations/Library/IMMZVaccineLibrary"
},
{
"type": "depends-on",
"display": "Library FC",
"resource": "http://smart.who.int/ig/smart-immunizations/Library/FHIRCommon"
},
{
"type": "depends-on",
"display": "Library input",
"resource": "http://smart.who.int/ig/smart-immunizations/Library/IMMZD2DTMeaslesInput"
},
{
"type": "depends-on",
"display": "Library Wcon",
"resource": "http://smart.who.int/ig/smart-immunizations/Library/WHOConcepts"
},
{
"type": "depends-on",
"display": "Code system IMMZ.D",
"resource": "http://smart.who.int/ig/smart-immunizations/CodeSystem/IMMZ.D"
},
{
"type": "depends-on",
"display": "Value set MCV Vaccine",
"resource": "http://smart.who.int/ig/smart-immunizations/ValueSet/IMMZ.Z.DE9"
},
{
"type": "depends-on",
"display": "Value set Pregnancy Status Pregnant",
"resource": "http://fhir.org/guides/who/core/ValueSet/pregnancystatus-values"
}
],
"parameter": [
{
"name": "Patient",
"use": "out",
"min": 0,
"max": "1",
"type": "Patient"
},
{
"name": "Draft Medication Request for MCV dose",
"use": "out",
"min": 0,
"max": "*",
"type": "MedicationRequest"
},
{
"name": "Draft Medication Request ID for MCV dose",
"use": "out",
"min": 0,
"max": "1",
"type": "id"
},
{
"name": "Measles vaccination contraindicated Case 1",
"use": "out",
"min": 0,
"max": "1",
"type": "boolean"
},
{
"name": "Measles vaccination contraindicated Case 2",
"use": "out",
"min": 0,
"max": "1",
"type": "boolean"
},
{
"name": "Measles vaccination contraindicated",
"use": "out",
"min": 0,
"max": "1",
"type": "boolean"
},
{
"name": "Measles vaccination contraindicated Guidance",
"use": "out",
"min": 0,
"max": "1",
"type": "string"
},
{
"name": "Clinical judgement required Case 1",
"use": "out",
"min": 0,
"max": "1",
"type": "boolean"
},
{
"name": "Clinical judgement required Case 2",
"use": "out",
"min": 0,
"max": "1",
"type": "boolean"
},
{
"name": "Clinical judgement required Case 3",
"use": "out",
"min": 0,
"max": "1",
"type": "boolean"
},
{
"name": "Clinical judgement required",
"use": "out",
"min": 0,
"max": "1",
"type": "boolean"
},
{
"name": "Clinical judgement required Guidance",
"use": "out",
"min": 0,
"max": "1",
"type": "string"
},
{
"name": "Guidance",
"use": "out",
"min": 0,
"max": "1",
"type": "string"
}
],
"dataRequirement": [
{
"type": "Patient",
"profile": [
"http://hl7.org/fhir/StructureDefinition/Patient"
]
},
{
"type": "MedicationRequest",
"profile": [
"http://hl7.org/fhir/StructureDefinition/MedicationRequest"
],
"mustSupport": [
"medication"
],
"codeFilter": [
{
"path": "medication",
"valueSet": "http://smart.who.int/ig/smart-immunizations/ValueSet/IMMZ.Z.DE9"
}
]
},
{
"type": "Observation",
"profile": [
"http://hl7.org/fhir/StructureDefinition/Observation"
],
"mustSupport": [
"value"
]
},
{
"type": "Condition",
"profile": [
"http://hl7.org/fhir/StructureDefinition/Condition"
],
"mustSupport": [
"code"
]
},
{
"type": "Condition",
"profile": [
"http://hl7.org/fhir/StructureDefinition/Condition"
],
"mustSupport": [
"code"
],
"codeFilter": [
{
"path": "code",
"code": [
{
"system": "http://smart.who.int/ig/smart-immunizations/CodeSystem/IMMZ.D",
"code": "DE165",
"display": "Severely immunosuppressed"
}
]
}
]
},
{
"type": "Condition",
"profile": [
"http://hl7.org/fhir/StructureDefinition/Condition"
],
"mustSupport": [
"code"
],
"codeFilter": [
{
"path": "code",
"code": [
{
"system": "http://smart.who.int/ig/smart-immunizations/CodeSystem/IMMZ.D",
"code": "DE166",
"display": "History of anaphylactic reactions"
}
]
}
]
},
{
"type": "Condition",
"profile": [
"http://hl7.org/fhir/StructureDefinition/Condition"
],
"mustSupport": [
"code"
],
"codeFilter": [
{
"path": "code",
"code": [
{
"system": "http://smart.who.int/ig/smart-immunizations/CodeSystem/IMMZ.D",
"code": "DE167",
"display": "Severe allergic reactions"
}
]
}
]
},
{
"type": "Condition",
"profile": [
"http://hl7.org/fhir/StructureDefinition/Condition"
],
"mustSupport": [
"code"
],
"codeFilter": [
{
"path": "code",
"code": [
{
"system": "http://smart.who.int/ig/smart-immunizations/CodeSystem/IMMZ.D",
"code": "DE168",
"display": "Symptomatic HIV infection"
}
]
}
]
}
],
"content": [
{
"contentType": "text/cql",
"data": "LyoKICogTGlicmFyeTogSU1NWkQ1RFRNZWFzbGVzIChJTU1aLkQ1LkRULk1lYXNsZXMgY29udHJhaW5kaWNhdGlvbnMpCiAqIFJ1bGU6IENoZWNrIGZvciBjb250cmFpbmRpY2F0aW9ucyBiZWZvcmUgYWRtaW5pc3RlcmluZyB0aGUgdmFjY2luZShzKSBkdWUJwqAJwqAJwqAgCiAqIFRyaWdnZXI6IElNTVouRDUgRGV0ZXJtaW5lIHZhY2NpbmUocykgdG8gYmUgYWRtaW5pc3RlcmVkIGJhc2VkIG9uIGNvbnRyYWluZGljYXRpb25zCiAqLwpsaWJyYXJ5IElNTVpENURUTWVhc2xlcwovLyBTdGFydCBTa2VsZXRvbiBDUUwKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScKaW5jbHVkZSBJTU1aQ29tbW9uIGNhbGxlZCBJTU1aQ29tCmluY2x1ZGUgSU1NWkNvbmNlcHRzIGNhbGxlZCBJTU1aYwppbmNsdWRlIElNTVpDb25maWcgY2FsbGVkIElNTVpDb24KaW5jbHVkZSBJTU1aVmFjY2luZUxpYnJhcnkgY2FsbGVkIElNTVp2bAppbmNsdWRlIEZISVJDb21tb24gY2FsbGVkIEZDCmluY2x1ZGUgSU1NWkQyRFRNZWFzbGVzSW5wdXQgY2FsbGVkIGlucHV0CgovLyBFbmQgU2tlbGV0b24gQ1FMCmNvbnRleHQgUGF0aWVudAoKLyoKQGludGVybmFsOiBEcmFmdCBNZWRpY2F0aW9uIFJlcXVlc3QgZm9yIE1DViBkb3NlCiovCmRlZmluZSAiRHJhZnQgTWVkaWNhdGlvbiBSZXF1ZXN0IGZvciBNQ1YgZG9zZSI6CglbTWVkaWNhdGlvblJlcXVlc3Q6IElNTVpjLiJNQ1YgVmFjY2luZSJdIE1SIHdoZXJlIE1SLnN0YXR1cyA9ICdkcmFmdCcgYW5kIE1SLmludGVudCA9ICdwcm9wb3NhbCcKCXNvcnQgYnkgZGF0ZSBmcm9tIChhdXRob3JlZE9uIGFzIEZISVIuZGF0ZVRpbWUpIGRlc2MKCi8qCkBkeW5hbWljVmFsdWU6IERyYWZ0IE1lZGljYXRpb24gUmVxdWVzdCBJRCBmb3IgTUNWIGRvc2UKKi8KZGVmaW5lICJEcmFmdCBNZWRpY2F0aW9uIFJlcXVlc3QgSUQgZm9yIE1DViBkb3NlIjoKCUZpcnN0KCJEcmFmdCBNZWRpY2F0aW9uIFJlcXVlc3QgZm9yIE1DViBkb3NlIikuaWQKCi8qCkBkeW5hbWljVmFsdWU6IEd1aWRhbmNlCiovCmRlZmluZSAiR3VpZGFuY2UiOgoJQ29tYmluZSggeyAKCQlpZiAiTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQiIHRoZW4gIk1lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkIEd1aWRhbmNlIiBlbHNlICcnLAoJCWlmICJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQiIHRoZW4gIkNsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBHdWlkYW5jZSIgZWxzZSAnJwoJfSwgJyAnICkKCi8qCkBvdXRwdXQ6IE1lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkIENhc2UgMQpAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gJ0NvbnRyYWluZGljYXRlZCcKKi8KZGVmaW5lICJNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZCBDYXNlIDEiOgoJaW5wdXQuIlRoZSBjbGllbnQgaXMgcHJlZ25hbnQiCgovKgpAb3V0cHV0OiBNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZCBDYXNlIDIKQHBzZXVkb2NvZGU6ICJJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzIiA9ICdDb250cmFpbmRpY2F0ZWQnCiovCmRlZmluZSAiTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAyIjoKCWlucHV0LiJUaGUgY2xpZW50IGlzIHNldmVyZWx5IGltbXVub3N1cHByZXNzZWQiCgovKgpAb3V0cHV0OiBNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZApAcHNldWRvY29kZTogIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMiID0gJ0NvbnRyYWluZGljYXRlZCcKKi8KZGVmaW5lICJNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZCI6CgkiTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAxIiBvciAiTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAyIgoKLyoKQG91dHB1dDogTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgR3VpZGFuY2UKQGd1aWRhbmNlOiBEbyBub3QgdmFjY2luYXRlIGR1ZSB0byBhIGNvbnRyYWluZGljYXRpb246IGNsaWVudCBpcyBwcmVnbmFudC4KQGd1aWRhbmNlOiBEbyBub3QgdmFjY2luYXRlIGR1ZSB0byBhIGNvbnRyYWluZGljYXRpb246IGNsaWVudCBpcyBzZXZlcmVseSBpbW11bm9zdXBwcmVzc2VkLgoqLwpkZWZpbmUgIk1lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkIEd1aWRhbmNlIjoKCUNvbWJpbmUoIHsKCQlpZiAiTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAxIiB0aGVuICdEbyBub3QgdmFjY2luYXRlIGR1ZSB0byBhIGNvbnRyYWluZGljYXRpb246IGNsaWVudCBpcyBwcmVnbmFudC4nIGVsc2UgJycsCgkJaWYgIk1lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkIENhc2UgMiIgdGhlbiAnRG8gbm90IHZhY2NpbmF0ZSBkdWUgdG8gYSBjb250cmFpbmRpY2F0aW9uOiBjbGllbnQgaXMgc2V2ZXJlbHkgaW1tdW5vc3VwcHJlc3NlZC4nIGVsc2UgJycKCX0sICcgJyApCgovKgpAb3V0cHV0OiBDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAxCkBwc2V1ZG9jb2RlOiBJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzID0gJ0Z1cnRoZXIgZXZhbHVhdGlvbiBuZWVkZWQnIgoqLwpkZWZpbmUgIkNsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDEiOgoJaW5wdXQuIlRoZSBjbGllbnQgaGFzIGhpc3Rvcnkgb2YgYW5hcGh5bGFjdGljIHJlYWN0aW9ucyIKCi8qCkBvdXRwdXQ6IENsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDIKQHBzZXVkb2NvZGU6IEltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMgPSAnRnVydGhlciBldmFsdWF0aW9uIG5lZWRlZCciCiovCmRlZmluZSAiQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMiI6CglpbnB1dC4iVGhlIGNsaWVudCBoYXMgaGlzdG9yeSBvZiBzZXZlcmUgYWxsZXJnaWMgcmVhY3Rpb25zIgoKLyoKQG91dHB1dDogQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMwpAcHNldWRvY29kZTogSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyA9ICdGdXJ0aGVyIGV2YWx1YXRpb24gbmVlZGVkJyIKKi8KZGVmaW5lICJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAzIjoKaW5wdXQuIlRoZSBjbGllbnQgaGFzIGEgc3ltcHRvbWF0aWMgSElWIGluZmVjdGlvbiIKCi8qCkBvdXRwdXQ6IENsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZApAcHNldWRvY29kZTogSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyA9ICdGdXJ0aGVyIGV2YWx1YXRpb24gbmVlZGVkJyIKKi8KZGVmaW5lICJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQiOgoJIkNsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDEiCglvciAiQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMiIKCW9yICJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAzIgoKLyoKQG91dHB1dDogQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIEd1aWRhbmNlCkBndWlkYW5jZTogQ2hlY2sgaWYgcHJldmlvdXMgYW5hcGh5bGFjdGljIHJlYWN0aW9uIHJlZmVycyB0byBjb21wb25lbnRzIG9mIHRoZSB2YWNjaW5lIChlLmcuIG5lb215Y2luIG9yIGdlbGF0aW4pCkBndWlkYW5jZTogQ2hlY2sgaWYgcHJldmlvdXMgc2V2ZXJlIHJlYWN0aW9uIHJlZmVycyB0byBjb21wb25lbnRzIG9mIHRoZSB2YWNjaW5lIChlLmcuIG5lb215Y2luIG9yIGdlbGF0aW4pIApAZ3VpZGFuY2U6IFZhY2NpbmF0aW9uIG1heSBiZSBjb25zaWRlcmVkIGlmIHRoZSBjbGllbnQgaXMgbm90IHNldmVyZWx5IGltbXVub3N1cHByZXNzZWQKKi8KZGVmaW5lICJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgR3VpZGFuY2UiOgoJQ29tYmluZSggewoJCWlmICJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAxIiB0aGVuICdDaGVjayBpZiBwcmV2aW91cyBhbmFwaHlsYWN0aWMgcmVhY3Rpb24gcmVmZXJzIHRvIGNvbXBvbmVudHMgb2YgdGhlIHZhY2NpbmUgKGUuZy4gbmVvbXljaW4gb3IgZ2VsYXRpbiknIGVsc2UgJycsCgkJaWYgIkNsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDIiIHRoZW4gJ0NoZWNrIGlmIHByZXZpb3VzIHNldmVyZSByZWFjdGlvbiByZWZlcnMgdG8gY29tcG9uZW50cyBvZiB0aGUgdmFjY2luZSAoZS5nLiBuZW9teWNpbiBvciBnZWxhdGluKScgZWxzZSAnJywKCQlpZiAiQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMyIgdGhlbiAnVmFjY2luYXRpb24gbWF5IGJlIGNvbnNpZGVyZWQgaWYgdGhlIGNsaWVudCBpcyBub3Qgc2V2ZXJlbHkgaW1tdW5vc3VwcHJlc3NlZCcgZWxzZSAnJwoJfSwgJyAnICkK"
},
{
"contentType": "application/elm+xml",
"data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGxpYnJhcnkgeG1sbnM9InVybjpobDctb3JnOmVsbTpyMSIgeG1sbnM6dD0idXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczpmaGlyPSJodHRwOi8vaGw3Lm9yZy9maGlyIiB4bWxuczpxZG00Mz0idXJuOmhlYWx0aGl0LWdvdjpxZG06djRfMyIgeG1sbnM6cWRtNTM9InVybjpoZWFsdGhpdC1nb3Y6cWRtOnY1XzMiIHhtbG5zOmE9InVybjpobDctb3JnOmNxbC1hbm5vdGF0aW9uczpyMSI+CiAgIDxhbm5vdGF0aW9uIHRyYW5zbGF0b3JWZXJzaW9uPSIyLjcuMCIgdHJhbnNsYXRvck9wdGlvbnM9IkVuYWJsZUFubm90YXRpb25zLEVuYWJsZUxvY2F0b3JzLERpc2FibGVMaXN0RGVtb3Rpb24sRGlzYWJsZUxpc3RQcm9tb3Rpb24iIHhzaTp0eXBlPSJhOkNxbFRvRWxtSW5mbyIvPgogICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgPGE6cyByPSI4OSI+CiAgICAgICAgIDxhOnM+LyoKICogTGlicmFyeTogSU1NWkQ1RFRNZWFzbGVzIChJTU1aLkQ1LkRULk1lYXNsZXMgY29udHJhaW5kaWNhdGlvbnMpCiAqIFJ1bGU6IENoZWNrIGZvciBjb250cmFpbmRpY2F0aW9ucyBiZWZvcmUgYWRtaW5pc3RlcmluZyB0aGUgdmFjY2luZShzKSBkdWUJwqAJwqAJwqAgCiAqIFRyaWdnZXI6IElNTVouRDUgRGV0ZXJtaW5lIHZhY2NpbmUocykgdG8gYmUgYWRtaW5pc3RlcmVkIGJhc2VkIG9uIGNvbnRyYWluZGljYXRpb25zCiAqLwpsaWJyYXJ5IElNTVpENURUTWVhc2xlczwvYTpzPgogICAgICA8L2E6cz4KICAgPC9hbm5vdGF0aW9uPgogICA8aWRlbnRpZmllciBpZD0iSU1NWkQ1RFRNZWFzbGVzIiBzeXN0ZW09Imh0dHA6Ly9zbWFydC53aG8uaW50L2lnL3NtYXJ0LWltbXVuaXphdGlvbnMiLz4KICAgPHNjaGVtYUlkZW50aWZpZXIgaWQ9InVybjpobDctb3JnOmVsbSIgdmVyc2lvbj0icjEiLz4KICAgPHVzaW5ncz4KICAgICAgPGRlZiBsb2NhbElkZW50aWZpZXI9IlN5c3RlbSIgdXJpPSJ1cm46aGw3LW9yZzplbG0tdHlwZXM6cjEiLz4KICAgICAgPGRlZiBsb2NhbElkPSIxIiBsb2NhdG9yPSI4OjEtODoyNiIgbG9jYWxJZGVudGlmaWVyPSJGSElSIiB1cmk9Imh0dHA6Ly9obDcub3JnL2ZoaXIiIHZlcnNpb249IjQuMC4xIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMSI+CiAgICAgICAgICAgICAgIDxhOnM+Ly8gU3RhcnQgU2tlbGV0b24gQ1FMCnVzaW5nIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPkZISVI8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IHZlcnNpb24gJzQuMC4xJzwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgPC91c2luZ3M+CiAgIDxpbmNsdWRlcz4KICAgICAgPGRlZiBsb2NhbElkPSIyIiBsb2NhdG9yPSI5OjEtOTozNSIgbG9jYWxJZGVudGlmaWVyPSJGSElSSGVscGVycyIgcGF0aD0iaHR0cDovL3NtYXJ0Lndoby5pbnQvaWcvc21hcnQtaW1tdW5pemF0aW9ucy9GSElSSGVscGVycyIgdmVyc2lvbj0iNC4wLjEiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIyIj4KICAgICAgICAgICAgICAgPGE6cz5pbmNsdWRlIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPkZISVJIZWxwZXJzPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiB2ZXJzaW9uICc0LjAuMSc8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMyIgbG9jYXRvcj0iMTA6MS0xMDozMyIgbG9jYWxJZGVudGlmaWVyPSJJTU1aQ29tIiBwYXRoPSJodHRwOi8vc21hcnQud2hvLmludC9pZy9zbWFydC1pbW11bml6YXRpb25zL0lNTVpDb21tb24iPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIzIj4KICAgICAgICAgICAgICAgPGE6cz5pbmNsdWRlIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPgogICAgICAgICAgICAgICAgICA8YTpzPklNTVpDb21tb248L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IGNhbGxlZCBJTU1aQ29tPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjQiIGxvY2F0b3I9IjExOjEtMTE6MzMiIGxvY2FsSWRlbnRpZmllcj0iSU1NWmMiIHBhdGg9Imh0dHA6Ly9zbWFydC53aG8uaW50L2lnL3NtYXJ0LWltbXVuaXphdGlvbnMvSU1NWkNvbmNlcHRzIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iNCI+CiAgICAgICAgICAgICAgIDxhOnM+aW5jbHVkZSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5JTU1aQ29uY2VwdHM8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IGNhbGxlZCBJTU1aYzwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI1IiBsb2NhdG9yPSIxMjoxLTEyOjMzIiBsb2NhbElkZW50aWZpZXI9IklNTVpDb24iIHBhdGg9Imh0dHA6Ly9zbWFydC53aG8uaW50L2lnL3NtYXJ0LWltbXVuaXphdGlvbnMvSU1NWkNvbmZpZyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjUiPgogICAgICAgICAgICAgICA8YTpzPmluY2x1ZGUgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+SU1NWkNvbmZpZzwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4gY2FsbGVkIElNTVpDb248L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iNiIgbG9jYXRvcj0iMTM6MS0xMzo0MCIgbG9jYWxJZGVudGlmaWVyPSJJTU1admwiIHBhdGg9Imh0dHA6Ly9zbWFydC53aG8uaW50L2lnL3NtYXJ0LWltbXVuaXphdGlvbnMvSU1NWlZhY2NpbmVMaWJyYXJ5Ij4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iNiI+CiAgICAgICAgICAgICAgIDxhOnM+aW5jbHVkZSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5JTU1aVmFjY2luZUxpYnJhcnk8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IGNhbGxlZCBJTU1admw8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iNyIgbG9jYXRvcj0iMTQ6MS0xNDoyOCIgbG9jYWxJZGVudGlmaWVyPSJGQyIgcGF0aD0iaHR0cDovL3NtYXJ0Lndoby5pbnQvaWcvc21hcnQtaW1tdW5pemF0aW9ucy9GSElSQ29tbW9uIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iNyI+CiAgICAgICAgICAgICAgIDxhOnM+aW5jbHVkZSA8L2E6cz4KICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgPGE6cz5GSElSQ29tbW9uPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8YTpzPiBjYWxsZWQgRkM8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iOCIgbG9jYXRvcj0iMTU6MS0xNTo0MSIgbG9jYWxJZGVudGlmaWVyPSJpbnB1dCIgcGF0aD0iaHR0cDovL3NtYXJ0Lndoby5pbnQvaWcvc21hcnQtaW1tdW5pemF0aW9ucy9JTU1aRDJEVE1lYXNsZXNJbnB1dCI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjgiPgogICAgICAgICAgICAgICA8YTpzPmluY2x1ZGUgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+SU1NWkQyRFRNZWFzbGVzSW5wdXQ8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnM+IGNhbGxlZCBpbnB1dDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICA8L2RlZj4KICAgPC9pbmNsdWRlcz4KICAgPHN0YXRlbWVudHM+CiAgICAgIDxkZWYgbG9jYXRvcj0iMTg6MS0xODoxNSIgbmFtZT0iUGF0aWVudCIgY29udGV4dD0iUGF0aWVudCI+CiAgICAgICAgIDxleHByZXNzaW9uIHhzaTp0eXBlPSJTaW5nbGV0b25Gcm9tIj4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYXRvcj0iMTg6MS0xODoxNSIgZGF0YVR5cGU9ImZoaXI6UGF0aWVudCIgdGVtcGxhdGVJZD0iaHR0cDovL2hsNy5vcmcvZmhpci9TdHJ1Y3R1cmVEZWZpbml0aW9uL1BhdGllbnQiIHhzaTp0eXBlPSJSZXRyaWV2ZSIvPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjI3IiBsb2NhdG9yPSIyMzoxLTI1OjUzIiBuYW1lPSJEcmFmdCBNZWRpY2F0aW9uIFJlcXVlc3QgZm9yIE1DViBkb3NlIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMjciPgogICAgICAgICAgICAgICA8YTpzPi8qCkBpbnRlcm5hbDogRHJhZnQgTWVkaWNhdGlvbiBSZXF1ZXN0IGZvciBNQ1YgZG9zZQoqLwpkZWZpbmUgJnF1b3Q7RHJhZnQgTWVkaWNhdGlvbiBSZXF1ZXN0IGZvciBNQ1YgZG9zZSZxdW90OzoKCTwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjI2Ij4KICAgICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+W01lZGljYXRpb25SZXF1ZXN0OiA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5JTU1aYy4mcXVvdDtNQ1YgVmFjY2luZSZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5dPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gTVI8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPiA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIxOSI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+d2hlcmUgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTkiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPk1SPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+c3RhdHVzPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gPSA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+J2RyYWZ0JzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IGFuZCA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIxOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjE1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5NUjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmludGVudDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+ID0gPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMTciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPidwcm9wb3NhbCc8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+Cgk8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNSI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+c29ydCBieSA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyNCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmRhdGUgZnJvbSA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+KDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjIyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSIyMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+YXV0aG9yZWRPbjwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gYXMgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPkZISVIuZGF0ZVRpbWU8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPik8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiBkZXNjPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjI2IiBsb2NhdG9yPSIyNDoyLTI1OjUzIiB4c2k6dHlwZT0iUXVlcnkiPgogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjEwIiBsb2NhdG9yPSIyNDoyLTI0OjQ0IiBhbGlhcz0iTVIiPgogICAgICAgICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI5IiBsb2NhdG9yPSIyNDoyLTI0OjQxIiB4c2k6dHlwZT0iVW5pb24iPgogICAgICAgICAgICAgICAgICA8c2lnbmF0dXJlIHhzaTp0eXBlPSJMaXN0VHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgICAgICAgICAgIDxlbGVtZW50VHlwZSBuYW1lPSJmaGlyOk1lZGljYXRpb25SZXF1ZXN0IiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgIDwvc2lnbmF0dXJlPgogICAgICAgICAgICAgICAgICA8c2lnbmF0dXJlIHhzaTp0eXBlPSJMaXN0VHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgICAgICAgICAgIDxlbGVtZW50VHlwZSBuYW1lPSJmaGlyOk1lZGljYXRpb25SZXF1ZXN0IiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgIDwvc2lnbmF0dXJlPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBkYXRhVHlwZT0iZmhpcjpNZWRpY2F0aW9uUmVxdWVzdCIgdGVtcGxhdGVJZD0iaHR0cDovL2hsNy5vcmcvZmhpci9TdHJ1Y3R1cmVEZWZpbml0aW9uL01lZGljYXRpb25SZXF1ZXN0IiBjb2RlUHJvcGVydHk9Im1lZGljYXRpb24iIGNvZGVDb21wYXJhdG9yPSJpbiIgeHNpOnR5cGU9IlJldHJpZXZlIj4KICAgICAgICAgICAgICAgICAgICAgPGNvZGVzIGxvY2F0b3I9IjI0OjIyLTI0OjQwIiBuYW1lPSJNQ1YgVmFjY2luZSIgbGlicmFyeU5hbWU9IklNTVpjIiB4c2k6dHlwZT0iVmFsdWVTZXRSZWYiLz4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhdG9yPSIyNDoyLTI0OjQxIiBkYXRhVHlwZT0iZmhpcjpNZWRpY2F0aW9uUmVxdWVzdCIgdGVtcGxhdGVJZD0iaHR0cDovL2hsNy5vcmcvZmhpci9TdHJ1Y3R1cmVEZWZpbml0aW9uL01lZGljYXRpb25SZXF1ZXN0IiBjb2RlUHJvcGVydHk9Im1lZGljYXRpb24iIGNvZGVDb21wYXJhdG9yPSJpbiIgeHNpOnR5cGU9IlJldHJpZXZlIj4KICAgICAgICAgICAgICAgICAgICAgPGNvZGVzIGxvY2F0b3I9IjI0OjIyLTI0OjQwIiBuYW1lPSJNQ1YgVmFjY2luZSIgbGlicmFyeU5hbWU9IklNTVpjIiB4c2k6dHlwZT0iVmFsdWVTZXRSZWYiLz4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgICAgICAgIDwvc291cmNlPgogICAgICAgICAgICA8d2hlcmUgbG9jYWxJZD0iMTkiIGxvY2F0b3I9IjI0OjQ2LTI0Ojk3IiB4c2k6dHlwZT0iQW5kIj4KICAgICAgICAgICAgICAgPHNpZ25hdHVyZSBuYW1lPSJ0OkJvb2xlYW4iIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgICAgPHNpZ25hdHVyZSBuYW1lPSJ0OkJvb2xlYW4iIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMTQiIGxvY2F0b3I9IjI0OjUyLTI0OjcwIiB4c2k6dHlwZT0iRXF1YWwiPgogICAgICAgICAgICAgICAgICA8c2lnbmF0dXJlIG5hbWU9InQ6U3RyaW5nIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgIDxzaWduYXR1cmUgbmFtZT0idDpTdHJpbmciIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbmFtZT0iVG9TdHJpbmciIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgPHNpZ25hdHVyZSBuYW1lPSJmaGlyOk1lZGljYXRpb25SZXF1ZXN0U3RhdHVzIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjEyIiBsb2NhdG9yPSIyNDo1Mi0yNDo2MCIgcGF0aD0ic3RhdHVzIiBzY29wZT0iTVIiIHhzaTp0eXBlPSJQcm9wZXJ0eSIvPgogICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjEzIiBsb2NhdG9yPSIyNDo2NC0yNDo3MCIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9ImRyYWZ0IiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjE4IiBsb2NhdG9yPSIyNDo3Ni0yNDo5NyIgeHNpOnR5cGU9IkVxdWFsIj4KICAgICAgICAgICAgICAgICAgPHNpZ25hdHVyZSBuYW1lPSJ0OlN0cmluZyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICAgICA8c2lnbmF0dXJlIG5hbWU9InQ6U3RyaW5nIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvU3RyaW5nIiBsaWJyYXJ5TmFtZT0iRkhJUkhlbHBlcnMiIHhzaTp0eXBlPSJGdW5jdGlvblJlZiI+CiAgICAgICAgICAgICAgICAgICAgIDxzaWduYXR1cmUgbmFtZT0iZmhpcjpNZWRpY2F0aW9uUmVxdWVzdEludGVudCIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIxNiIgbG9jYXRvcj0iMjQ6NzYtMjQ6ODQiIHBhdGg9ImludGVudCIgc2NvcGU9Ik1SIiB4c2k6dHlwZT0iUHJvcGVydHkiLz4KICAgICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSIxNyIgbG9jYXRvcj0iMjQ6ODgtMjQ6OTciIHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSJwcm9wb3NhbCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8L3doZXJlPgogICAgICAgICAgICA8c29ydCBsb2NhbElkPSIyNSIgbG9jYXRvcj0iMjU6Mi0yNTo1MyI+CiAgICAgICAgICAgICAgIDxieSBsb2NhbElkPSIyNCIgbG9jYXRvcj0iMjU6MTAtMjU6NTMiIGRpcmVjdGlvbj0iZGVzYyIgeHNpOnR5cGU9IkJ5RXhwcmVzc2lvbiI+CiAgICAgICAgICAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjIzIiBsb2NhdG9yPSIyNToxMC0yNTo0OCIgeHNpOnR5cGU9IkRhdGVGcm9tIj4KICAgICAgICAgICAgICAgICAgICAgPHNpZ25hdHVyZSBuYW1lPSJ0OkRhdGVUaW1lIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIG5hbWU9IlRvRGF0ZVRpbWUiIGxpYnJhcnlOYW1lPSJGSElSSGVscGVycyIgeHNpOnR5cGU9IkZ1bmN0aW9uUmVmIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNpZ25hdHVyZSBuYW1lPSJmaGlyOmRhdGVUaW1lIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjIyIiBsb2NhdG9yPSIyNToyMC0yNTo0OCIgc3RyaWN0PSJmYWxzZSIgeHNpOnR5cGU9IkFzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iMjAiIGxvY2F0b3I9IjI1OjIxLTI1OjMwIiBuYW1lPSJhdXRob3JlZE9uIiB4c2k6dHlwZT0iSWRlbnRpZmllclJlZiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YXNUeXBlU3BlY2lmaWVyIGxvY2FsSWQ9IjIxIiBsb2NhdG9yPSIyNTozNS0yNTo0NyIgbmFtZT0iZmhpcjpkYXRlVGltZSIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L29wZXJhbmQ+CiAgICAgICAgICAgICAgICAgICAgIDwvb3BlcmFuZD4KICAgICAgICAgICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICAgICAgICAgICA8L2J5PgogICAgICAgICAgICA8L3NvcnQ+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iMzEiIGxvY2F0b3I9IjMwOjEtMzE6NTAiIG5hbWU9IkRyYWZ0IE1lZGljYXRpb24gUmVxdWVzdCBJRCBmb3IgTUNWIGRvc2UiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIzMSI+CiAgICAgICAgICAgICAgIDxhOnM+LyoKQGR5bmFtaWNWYWx1ZTogRHJhZnQgTWVkaWNhdGlvbiBSZXF1ZXN0IElEIGZvciBNQ1YgZG9zZQoqLwpkZWZpbmUgJnF1b3Q7RHJhZnQgTWVkaWNhdGlvbiBSZXF1ZXN0IElEIGZvciBNQ1YgZG9zZSZxdW90OzoKCTwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjMwIj4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIyOSI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+Rmlyc3QoPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMjgiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0RyYWZ0IE1lZGljYXRpb24gUmVxdWVzdCBmb3IgTUNWIGRvc2UmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+KTwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzAiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPmlkPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iMzAiIGxvY2F0b3I9IjMxOjItMzE6NTAiIHBhdGg9ImlkIiB4c2k6dHlwZT0iUHJvcGVydHkiPgogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjI5IiBsb2NhdG9yPSIzMToyLTMxOjQ3IiB4c2k6dHlwZT0iRmlyc3QiPgogICAgICAgICAgICAgICA8c2lnbmF0dXJlIHhzaTp0eXBlPSJMaXN0VHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgICAgICAgIDxlbGVtZW50VHlwZSBuYW1lPSJmaGlyOk1lZGljYXRpb25SZXF1ZXN0IiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgICAgIDwvc2lnbmF0dXJlPgogICAgICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjI4IiBsb2NhdG9yPSIzMTo4LTMxOjQ2IiBuYW1lPSJEcmFmdCBNZWRpY2F0aW9uIFJlcXVlc3QgZm9yIE1DViBkb3NlIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSIzNCIgbG9jYXRvcj0iNDY6MS00NzozMSIgbmFtZT0iTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAxIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iMzQiPgogICAgICAgICAgICAgICA8YTpzPi8qCkBvdXRwdXQ6IE1lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkIENhc2UgMQpAcHNldWRvY29kZTogJnF1b3Q7SW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyZxdW90OyA9ICdDb250cmFpbmRpY2F0ZWQnCiovCmRlZmluZSAmcXVvdDtNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZCBDYXNlIDEmcXVvdDs6Cgk8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSIzMyI+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iMzIiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPmlucHV0PC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPi48L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzMyI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7VGhlIGNsaWVudCBpcyBwcmVnbmFudCZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjMzIiBsb2NhdG9yPSI0NzoyLTQ3OjMxIiBuYW1lPSJUaGUgY2xpZW50IGlzIHByZWduYW50IiBsaWJyYXJ5TmFtZT0iaW5wdXQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjM4IiBsb2NhdG9yPSI1MzoxLTU0OjQ4IiBuYW1lPSJNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZCBDYXNlIDIiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSIzOCI+CiAgICAgICAgICAgICAgIDxhOnM+LyoKQG91dHB1dDogTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAyCkBwc2V1ZG9jb2RlOiAmcXVvdDtJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzJnF1b3Q7ID0gJ0NvbnRyYWluZGljYXRlZCcKKi8KZGVmaW5lICZxdW90O01lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkIENhc2UgMiZxdW90OzoKCTwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjM3Ij4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNiI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+aW5wdXQ8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjM3Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtUaGUgY2xpZW50IGlzIHNldmVyZWx5IGltbXVub3N1cHByZXNzZWQmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSIzNyIgbG9jYXRvcj0iNTQ6Mi01NDo0OCIgbmFtZT0iVGhlIGNsaWVudCBpcyBzZXZlcmVseSBpbW11bm9zdXBwcmVzc2VkIiBsaWJyYXJ5TmFtZT0iaW5wdXQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjQxIiBsb2NhdG9yPSI2MDoxLTYxOjkzIiBuYW1lPSJNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZCIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjQxIj4KICAgICAgICAgICAgICAgPGE6cz4vKgpAb3V0cHV0OiBNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZApAcHNldWRvY29kZTogJnF1b3Q7SW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyZxdW90OyA9ICdDb250cmFpbmRpY2F0ZWQnCiovCmRlZmluZSAmcXVvdDtNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZCZxdW90OzoKCTwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjQwIj4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzNSI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7TWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAxJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPiBvciA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSIzOSI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7TWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAyJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNDAiIGxvY2F0b3I9IjYxOjItNjE6OTMiIHhzaTp0eXBlPSJPciI+CiAgICAgICAgICAgIDxzaWduYXR1cmUgbmFtZT0idDpCb29sZWFuIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgIDxzaWduYXR1cmUgbmFtZT0idDpCb29sZWFuIiB4c2k6dHlwZT0iTmFtZWRUeXBlU3BlY2lmaWVyIi8+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjM1IiBsb2NhdG9yPSI2MToyLTYxOjQ1IiBuYW1lPSJNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZCBDYXNlIDEiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgIDxvcGVyYW5kIGxvY2FsSWQ9IjM5IiBsb2NhdG9yPSI2MTo1MC02MTo5MyIgbmFtZT0iTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAyIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjU0IiBsb2NhdG9yPSI2ODoxLTcyOjkiIG5hbWU9Ik1lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkIEd1aWRhbmNlIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iNTQiPgogICAgICAgICAgICAgICA8YTpzPi8qCkBvdXRwdXQ6IE1lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkIEd1aWRhbmNlCkBndWlkYW5jZTogRG8gbm90IHZhY2NpbmF0ZSBkdWUgdG8gYSBjb250cmFpbmRpY2F0aW9uOiBjbGllbnQgaXMgcHJlZ25hbnQuCkBndWlkYW5jZTogRG8gbm90IHZhY2NpbmF0ZSBkdWUgdG8gYSBjb250cmFpbmRpY2F0aW9uOiBjbGllbnQgaXMgc2V2ZXJlbHkgaW1tdW5vc3VwcHJlc3NlZC4KKi8KZGVmaW5lICZxdW90O01lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkIEd1aWRhbmNlJnF1b3Q7OgoJPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iNTMiPgogICAgICAgICAgICAgICAgICA8YTpzPkNvbWJpbmUoIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjUxIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz57CgkJPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDYiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmlmIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZCBDYXNlIDEmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IHRoZW4gPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPidEbyBub3QgdmFjY2luYXRlIGR1ZSB0byBhIGNvbnRyYWluZGljYXRpb246IGNsaWVudCBpcyBwcmVnbmFudC4nPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiBlbHNlIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4nJzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LAoJCTwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjUwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5pZiA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI0NyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7TWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAyJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiB0aGVuIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4nRG8gbm90IHZhY2NpbmF0ZSBkdWUgdG8gYSBjb250cmFpbmRpY2F0aW9uOiBjbGllbnQgaXMgc2V2ZXJlbHkgaW1tdW5vc3VwcHJlc3NlZC4nPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiBlbHNlIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjQ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4nJzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+Cgl9PC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPiwgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTIiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPicgJzwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4gKTwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNTMiIGxvY2F0b3I9IjY5OjItNzI6OSIgeHNpOnR5cGU9IkNvbWJpbmUiPgogICAgICAgICAgICA8c2lnbmF0dXJlIHhzaTp0eXBlPSJMaXN0VHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgICAgIDxlbGVtZW50VHlwZSBuYW1lPSJ0OlN0cmluZyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICA8L3NpZ25hdHVyZT4KICAgICAgICAgICAgPHNpZ25hdHVyZSBuYW1lPSJ0OlN0cmluZyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjUxIiBsb2NhdG9yPSI2OToxMS03MjoyIiB4c2k6dHlwZT0iTGlzdCI+CiAgICAgICAgICAgICAgIDxlbGVtZW50IGxvY2FsSWQ9IjQ2IiBsb2NhdG9yPSI3MDozLTcwOjEyOCIgeHNpOnR5cGU9IklmIj4KICAgICAgICAgICAgICAgICAgPGNvbmRpdGlvbiBsb2NhbElkPSI0MyIgbG9jYXRvcj0iNzA6Ni03MDo0OSIgbmFtZT0iTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAxIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICA8dGhlbiBsb2NhbElkPSI0NCIgbG9jYXRvcj0iNzA6NTYtNzA6MTIwIiB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0iRG8gbm90IHZhY2NpbmF0ZSBkdWUgdG8gYSBjb250cmFpbmRpY2F0aW9uOiBjbGllbnQgaXMgcHJlZ25hbnQuIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICAgICA8ZWxzZSBsb2NhbElkPSI0NSIgbG9jYXRvcj0iNzA6MTI3LTcwOjEyOCIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9IiIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPC9lbGVtZW50PgogICAgICAgICAgICAgICA8ZWxlbWVudCBsb2NhbElkPSI1MCIgbG9jYXRvcj0iNzE6My03MToxNDUiIHhzaTp0eXBlPSJJZiI+CiAgICAgICAgICAgICAgICAgIDxjb25kaXRpb24gbG9jYWxJZD0iNDciIGxvY2F0b3I9IjcxOjYtNzE6NDkiIG5hbWU9Ik1lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkIENhc2UgMiIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgPHRoZW4gbG9jYWxJZD0iNDgiIGxvY2F0b3I9IjcxOjU2LTcxOjEzNyIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9IkRvIG5vdCB2YWNjaW5hdGUgZHVlIHRvIGEgY29udHJhaW5kaWNhdGlvbjogY2xpZW50IGlzIHNldmVyZWx5IGltbXVub3N1cHByZXNzZWQuIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICAgICA8ZWxzZSBsb2NhbElkPSI0OSIgbG9jYXRvcj0iNzE6MTQ0LTcxOjE0NSIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9IiIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPC9lbGVtZW50PgogICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgPHNlcGFyYXRvciBsb2NhbElkPSI1MiIgbG9jYXRvcj0iNzI6NS03Mjo3IiB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0iICIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgPC9leHByZXNzaW9uPgogICAgICA8L2RlZj4KICAgICAgPGRlZiBsb2NhbElkPSI2MCIgbG9jYXRvcj0iNzg6MS03OTo1NyIgbmFtZT0iQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMSIgY29udGV4dD0iUGF0aWVudCIgYWNjZXNzTGV2ZWw9IlB1YmxpYyI+CiAgICAgICAgIDxhbm5vdGF0aW9uIHhzaTp0eXBlPSJhOkFubm90YXRpb24iPgogICAgICAgICAgICA8YTpzIHI9IjYwIj4KICAgICAgICAgICAgICAgPGE6cz4vKgpAb3V0cHV0OiBDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAxCkBwc2V1ZG9jb2RlOiBJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzID0gJ0Z1cnRoZXIgZXZhbHVhdGlvbiBuZWVkZWQnJnF1b3Q7CiovCmRlZmluZSAmcXVvdDtDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAxJnF1b3Q7OgoJPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iNTkiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjU4Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz5pbnB1dDwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4uPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNTkiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O1RoZSBjbGllbnQgaGFzIGhpc3Rvcnkgb2YgYW5hcGh5bGFjdGljIHJlYWN0aW9ucyZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgIDwvYTpzPgogICAgICAgICA8L2Fubm90YXRpb24+CiAgICAgICAgIDxleHByZXNzaW9uIGxvY2FsSWQ9IjU5IiBsb2NhdG9yPSI3OToyLTc5OjU3IiBuYW1lPSJUaGUgY2xpZW50IGhhcyBoaXN0b3J5IG9mIGFuYXBoeWxhY3RpYyByZWFjdGlvbnMiIGxpYnJhcnlOYW1lPSJpbnB1dCIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgPC9kZWY+CiAgICAgIDxkZWYgbG9jYWxJZD0iNjQiIGxvY2F0b3I9Ijg1OjEtODY6NjAiIG5hbWU9IkNsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDIiIGNvbnRleHQ9IlBhdGllbnQiIGFjY2Vzc0xldmVsPSJQdWJsaWMiPgogICAgICAgICA8YW5ub3RhdGlvbiB4c2k6dHlwZT0iYTpBbm5vdGF0aW9uIj4KICAgICAgICAgICAgPGE6cyByPSI2NCI+CiAgICAgICAgICAgICAgIDxhOnM+LyoKQG91dHB1dDogQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMgpAcHNldWRvY29kZTogSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyA9ICdGdXJ0aGVyIGV2YWx1YXRpb24gbmVlZGVkJyZxdW90OwoqLwpkZWZpbmUgJnF1b3Q7Q2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMiZxdW90OzoKCTwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjYzIj4KICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MiI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+aW5wdXQ8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjYzIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtUaGUgY2xpZW50IGhhcyBoaXN0b3J5IG9mIHNldmVyZSBhbGxlcmdpYyByZWFjdGlvbnMmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI2MyIgbG9jYXRvcj0iODY6Mi04Njo2MCIgbmFtZT0iVGhlIGNsaWVudCBoYXMgaGlzdG9yeSBvZiBzZXZlcmUgYWxsZXJnaWMgcmVhY3Rpb25zIiBsaWJyYXJ5TmFtZT0iaW5wdXQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjY5IiBsb2NhdG9yPSI5MjoxLTkzOjUwIiBuYW1lPSJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAzIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iNjkiPgogICAgICAgICAgICAgICA8YTpzPi8qCkBvdXRwdXQ6IENsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDMKQHBzZXVkb2NvZGU6IEltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMgPSAnRnVydGhlciBldmFsdWF0aW9uIG5lZWRlZCcmcXVvdDsKKi8KZGVmaW5lICZxdW90O0NsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDMmcXVvdDs6CjwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9IjY4Ij4KICAgICAgICAgICAgICAgICAgPGE6cyByPSI2NyI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+aW5wdXQ8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+LjwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjY4Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtUaGUgY2xpZW50IGhhcyBhIHN5bXB0b21hdGljIEhJViBpbmZlY3Rpb24mcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI2OCIgbG9jYXRvcj0iOTM6MS05Mzo1MCIgbmFtZT0iVGhlIGNsaWVudCBoYXMgYSBzeW1wdG9tYXRpYyBISVYgaW5mZWN0aW9uIiBsaWJyYXJ5TmFtZT0iaW5wdXQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9IjcyIiBsb2NhdG9yPSI5OToxLTEwMjo0MCIgbmFtZT0iQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iNzIiPgogICAgICAgICAgICAgICA8YTpzPi8qCkBvdXRwdXQ6IENsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZApAcHNldWRvY29kZTogSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyA9ICdGdXJ0aGVyIGV2YWx1YXRpb24gbmVlZGVkJyZxdW90OwoqLwpkZWZpbmUgJnF1b3Q7Q2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkJnF1b3Q7OgoJPC9hOnM+CiAgICAgICAgICAgICAgIDxhOnMgcj0iNzEiPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjY2Ij4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI2MSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7Q2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMSZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4KCW9yIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjY1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAyJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4KCW9yIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzIHI9IjcwIj4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAzJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iNzEiIGxvY2F0b3I9IjEwMDoyLTEwMjo0MCIgeHNpOnR5cGU9Ik9yIj4KICAgICAgICAgICAgPHNpZ25hdHVyZSBuYW1lPSJ0OkJvb2xlYW4iIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgPHNpZ25hdHVyZSBuYW1lPSJ0OkJvb2xlYW4iIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNjYiIGxvY2F0b3I9IjEwMDoyLTEwMTo0MCIgeHNpOnR5cGU9Ik9yIj4KICAgICAgICAgICAgICAgPHNpZ25hdHVyZSBuYW1lPSJ0OkJvb2xlYW4iIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgICAgPHNpZ25hdHVyZSBuYW1lPSJ0OkJvb2xlYW4iIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNjEiIGxvY2F0b3I9IjEwMDoyLTEwMDozNyIgbmFtZT0iQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMSIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgPG9wZXJhbmQgbG9jYWxJZD0iNjUiIGxvY2F0b3I9IjEwMTo1LTEwMTo0MCIgbmFtZT0iQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMiIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgPC9vcGVyYW5kPgogICAgICAgICAgICA8b3BlcmFuZCBsb2NhbElkPSI3MCIgbG9jYXRvcj0iMTAyOjUtMTAyOjQwIiBuYW1lPSJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAzIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9Ijg5IiBsb2NhdG9yPSIxMTA6MS0xMTU6OSIgbmFtZT0iQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIEd1aWRhbmNlIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iODkiPgogICAgICAgICAgICAgICA8YTpzPi8qCkBvdXRwdXQ6IENsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBHdWlkYW5jZQpAZ3VpZGFuY2U6IENoZWNrIGlmIHByZXZpb3VzIGFuYXBoeWxhY3RpYyByZWFjdGlvbiByZWZlcnMgdG8gY29tcG9uZW50cyBvZiB0aGUgdmFjY2luZSAoZS5nLiBuZW9teWNpbiBvciBnZWxhdGluKQpAZ3VpZGFuY2U6IENoZWNrIGlmIHByZXZpb3VzIHNldmVyZSByZWFjdGlvbiByZWZlcnMgdG8gY29tcG9uZW50cyBvZiB0aGUgdmFjY2luZSAoZS5nLiBuZW9teWNpbiBvciBnZWxhdGluKSAKQGd1aWRhbmNlOiBWYWNjaW5hdGlvbiBtYXkgYmUgY29uc2lkZXJlZCBpZiB0aGUgY2xpZW50IGlzIG5vdCBzZXZlcmVseSBpbW11bm9zdXBwcmVzc2VkCiovCmRlZmluZSAmcXVvdDtDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgR3VpZGFuY2UmcXVvdDs6Cgk8L2E6cz4KICAgICAgICAgICAgICAgPGE6cyByPSI4OCI+CiAgICAgICAgICAgICAgICAgIDxhOnM+Q29tYmluZSggPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODYiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPnsKCQk8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3NyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+aWYgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0NsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDEmcXVvdDs8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IHRoZW4gPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPidDaGVjayBpZiBwcmV2aW91cyBhbmFwaHlsYWN0aWMgcmVhY3Rpb24gcmVmZXJzIHRvIGNvbXBvbmVudHMgb2YgdGhlIHZhY2NpbmUgKGUuZy4gbmVvbXljaW4gb3IgZ2VsYXRpbiknPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiBlbHNlIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9Ijc2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4nJzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+LAoJCTwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjgxIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz5pZiA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3OCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7Q2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMiZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gdGhlbiA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI3OSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+J0NoZWNrIGlmIHByZXZpb3VzIHNldmVyZSByZWFjdGlvbiByZWZlcnMgdG8gY29tcG9uZW50cyBvZiB0aGUgdmFjY2luZSAoZS5nLiBuZW9teWNpbiBvciBnZWxhdGluKSc8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IGVsc2UgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPicnPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4sCgkJPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPmlmIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjgyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAzJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiB0aGVuIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjgzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4nVmFjY2luYXRpb24gbWF5IGJlIGNvbnNpZGVyZWQgaWYgdGhlIGNsaWVudCBpcyBub3Qgc2V2ZXJlbHkgaW1tdW5vc3VwcHJlc3NlZCc8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+IGVsc2UgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iODQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPicnPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cz4KCX08L2E6cz4KICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnM+LCA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSI4NyI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+JyAnPC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPiApPC9hOnM+CiAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICA8L2E6cz4KICAgICAgICAgPC9hbm5vdGF0aW9uPgogICAgICAgICA8ZXhwcmVzc2lvbiBsb2NhbElkPSI4OCIgbG9jYXRvcj0iMTExOjItMTE1OjkiIHhzaTp0eXBlPSJDb21iaW5lIj4KICAgICAgICAgICAgPHNpZ25hdHVyZSB4c2k6dHlwZT0iTGlzdFR5cGVTcGVjaWZpZXIiPgogICAgICAgICAgICAgICA8ZWxlbWVudFR5cGUgbmFtZT0idDpTdHJpbmciIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgPC9zaWduYXR1cmU+CiAgICAgICAgICAgIDxzaWduYXR1cmUgbmFtZT0idDpTdHJpbmciIHhzaTp0eXBlPSJOYW1lZFR5cGVTcGVjaWZpZXIiLz4KICAgICAgICAgICAgPHNvdXJjZSBsb2NhbElkPSI4NiIgbG9jYXRvcj0iMTExOjExLTExNToyIiB4c2k6dHlwZT0iTGlzdCI+CiAgICAgICAgICAgICAgIDxlbGVtZW50IGxvY2FsSWQ9Ijc3IiBsb2NhdG9yPSIxMTI6My0xMTI6MTU5IiB4c2k6dHlwZT0iSWYiPgogICAgICAgICAgICAgICAgICA8Y29uZGl0aW9uIGxvY2FsSWQ9Ijc0IiBsb2NhdG9yPSIxMTI6Ni0xMTI6NDEiIG5hbWU9IkNsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDEiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgIDx0aGVuIGxvY2FsSWQ9Ijc1IiBsb2NhdG9yPSIxMTI6NDgtMTEyOjE1MSIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9IkNoZWNrIGlmIHByZXZpb3VzIGFuYXBoeWxhY3RpYyByZWFjdGlvbiByZWZlcnMgdG8gY29tcG9uZW50cyBvZiB0aGUgdmFjY2luZSAoZS5nLiBuZW9teWNpbiBvciBnZWxhdGluKSIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgPGVsc2UgbG9jYWxJZD0iNzYiIGxvY2F0b3I9IjExMjoxNTgtMTEyOjE1OSIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9IiIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPC9lbGVtZW50PgogICAgICAgICAgICAgICA8ZWxlbWVudCBsb2NhbElkPSI4MSIgbG9jYXRvcj0iMTEzOjMtMTEzOjE1MyIgeHNpOnR5cGU9IklmIj4KICAgICAgICAgICAgICAgICAgPGNvbmRpdGlvbiBsb2NhbElkPSI3OCIgbG9jYXRvcj0iMTEzOjYtMTEzOjQxIiBuYW1lPSJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAyIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICA8dGhlbiBsb2NhbElkPSI3OSIgbG9jYXRvcj0iMTEzOjQ4LTExMzoxNDUiIHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSJDaGVjayBpZiBwcmV2aW91cyBzZXZlcmUgcmVhY3Rpb24gcmVmZXJzIHRvIGNvbXBvbmVudHMgb2YgdGhlIHZhY2NpbmUgKGUuZy4gbmVvbXljaW4gb3IgZ2VsYXRpbikiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgICAgIDxlbHNlIGxvY2FsSWQ9IjgwIiBsb2NhdG9yPSIxMTM6MTUyLTExMzoxNTMiIHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSIiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDwvZWxlbWVudD4KICAgICAgICAgICAgICAgPGVsZW1lbnQgbG9jYWxJZD0iODUiIGxvY2F0b3I9IjExNDozLTExNDoxMzMiIHhzaTp0eXBlPSJJZiI+CiAgICAgICAgICAgICAgICAgIDxjb25kaXRpb24gbG9jYWxJZD0iODIiIGxvY2F0b3I9IjExNDo2LTExNDo0MSIgbmFtZT0iQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMyIgeHNpOnR5cGU9IkV4cHJlc3Npb25SZWYiLz4KICAgICAgICAgICAgICAgICAgPHRoZW4gbG9jYWxJZD0iODMiIGxvY2F0b3I9IjExNDo0OC0xMTQ6MTI1IiB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0iVmFjY2luYXRpb24gbWF5IGJlIGNvbnNpZGVyZWQgaWYgdGhlIGNsaWVudCBpcyBub3Qgc2V2ZXJlbHkgaW1tdW5vc3VwcHJlc3NlZCIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgICAgPGVsc2UgbG9jYWxJZD0iODQiIGxvY2F0b3I9IjExNDoxMzItMTE0OjEzMyIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9IiIgeHNpOnR5cGU9IkxpdGVyYWwiLz4KICAgICAgICAgICAgICAgPC9lbGVtZW50PgogICAgICAgICAgICA8L3NvdXJjZT4KICAgICAgICAgICAgPHNlcGFyYXRvciBsb2NhbElkPSI4NyIgbG9jYXRvcj0iMTE1OjUtMTE1OjciIHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSIgIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICA8L2V4cHJlc3Npb24+CiAgICAgIDwvZGVmPgogICAgICA8ZGVmIGxvY2FsSWQ9Ijk2IiBsb2NhdG9yPSIzNjoxLTQwOjkiIG5hbWU9Ikd1aWRhbmNlIiBjb250ZXh0PSJQYXRpZW50IiBhY2Nlc3NMZXZlbD0iUHVibGljIj4KICAgICAgICAgPGFubm90YXRpb24geHNpOnR5cGU9ImE6QW5ub3RhdGlvbiI+CiAgICAgICAgICAgIDxhOnMgcj0iOTYiPgogICAgICAgICAgICAgICA8YTpzPi8qCkBkeW5hbWljVmFsdWU6IEd1aWRhbmNlCiovCmRlZmluZSAmcXVvdDtHdWlkYW5jZSZxdW90OzoKCTwvYTpzPgogICAgICAgICAgICAgICA8YTpzIHI9Ijk1Ij4KICAgICAgICAgICAgICAgICAgPGE6cz5Db21iaW5lKCA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cyByPSI5MyI+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+eyAKCQk8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+aWYgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNDIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O01lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiB0aGVuIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjU1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4mcXVvdDtNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZCBHdWlkYW5jZSZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gZWxzZSA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI1NiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+Jyc8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICA8YTpzPiwKCQk8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI5MiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+aWYgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhOnMgcj0iNzMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiZxdW90O0NsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCZxdW90OzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4gdGhlbiA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgICAgPGE6cyByPSI5MCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhOnM+JnF1b3Q7Q2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIEd1aWRhbmNlJnF1b3Q7PC9hOnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzPiBlbHNlIDwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8YTpzIHI9IjkxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE6cz4nJzwvYTpzPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgICAgICAgICAgICAgIDxhOnM+Cgl9PC9hOnM+CiAgICAgICAgICAgICAgICAgIDwvYTpzPgogICAgICAgICAgICAgICAgICA8YTpzPiwgPC9hOnM+CiAgICAgICAgICAgICAgICAgIDxhOnMgcj0iOTQiPgogICAgICAgICAgICAgICAgICAgICA8YTpzPicgJzwvYTpzPgogICAgICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgICAgICAgPGE6cz4gKTwvYTpzPgogICAgICAgICAgICAgICA8L2E6cz4KICAgICAgICAgICAgPC9hOnM+CiAgICAgICAgIDwvYW5ub3RhdGlvbj4KICAgICAgICAgPGV4cHJlc3Npb24gbG9jYWxJZD0iOTUiIGxvY2F0b3I9IjM3OjItNDA6OSIgeHNpOnR5cGU9IkNvbWJpbmUiPgogICAgICAgICAgICA8c2lnbmF0dXJlIHhzaTp0eXBlPSJMaXN0VHlwZVNwZWNpZmllciI+CiAgICAgICAgICAgICAgIDxlbGVtZW50VHlwZSBuYW1lPSJ0OlN0cmluZyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICA8L3NpZ25hdHVyZT4KICAgICAgICAgICAgPHNpZ25hdHVyZSBuYW1lPSJ0OlN0cmluZyIgeHNpOnR5cGU9Ik5hbWVkVHlwZVNwZWNpZmllciIvPgogICAgICAgICAgICA8c291cmNlIGxvY2FsSWQ9IjkzIiBsb2NhdG9yPSIzNzoxMS00MDoyIiB4c2k6dHlwZT0iTGlzdCI+CiAgICAgICAgICAgICAgIDxlbGVtZW50IGxvY2FsSWQ9IjU3IiBsb2NhdG9yPSIzODozLTM4OjEwMiIgeHNpOnR5cGU9IklmIj4KICAgICAgICAgICAgICAgICAgPGNvbmRpdGlvbiBsb2NhbElkPSI0MiIgbG9jYXRvcj0iMzg6Ni0zODo0MiIgbmFtZT0iTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgIDx0aGVuIGxvY2FsSWQ9IjU1IiBsb2NhdG9yPSIzODo0OS0zODo5NCIgbmFtZT0iTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgR3VpZGFuY2UiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgIDxlbHNlIGxvY2FsSWQ9IjU2IiBsb2NhdG9yPSIzODoxMDEtMzg6MTAyIiB2YWx1ZVR5cGU9InQ6U3RyaW5nIiB2YWx1ZT0iIiB4c2k6dHlwZT0iTGl0ZXJhbCIvPgogICAgICAgICAgICAgICA8L2VsZW1lbnQ+CiAgICAgICAgICAgICAgIDxlbGVtZW50IGxvY2FsSWQ9IjkyIiBsb2NhdG9yPSIzOTozLTM5Ojg2IiB4c2k6dHlwZT0iSWYiPgogICAgICAgICAgICAgICAgICA8Y29uZGl0aW9uIGxvY2FsSWQ9IjczIiBsb2NhdG9yPSIzOTo2LTM5OjM0IiBuYW1lPSJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQiIHhzaTp0eXBlPSJFeHByZXNzaW9uUmVmIi8+CiAgICAgICAgICAgICAgICAgIDx0aGVuIGxvY2FsSWQ9IjkwIiBsb2NhdG9yPSIzOTo0MS0zOTo3OCIgbmFtZT0iQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIEd1aWRhbmNlIiB4c2k6dHlwZT0iRXhwcmVzc2lvblJlZiIvPgogICAgICAgICAgICAgICAgICA8ZWxzZSBsb2NhbElkPSI5MSIgbG9jYXRvcj0iMzk6ODUtMzk6ODYiIHZhbHVlVHlwZT0idDpTdHJpbmciIHZhbHVlPSIiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgICAgICAgIDwvZWxlbWVudD4KICAgICAgICAgICAgPC9zb3VyY2U+CiAgICAgICAgICAgIDxzZXBhcmF0b3IgbG9jYWxJZD0iOTQiIGxvY2F0b3I9IjQwOjUtNDA6NyIgdmFsdWVUeXBlPSJ0OlN0cmluZyIgdmFsdWU9IiAiIHhzaTp0eXBlPSJMaXRlcmFsIi8+CiAgICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9kZWY+CiAgIDwvc3RhdGVtZW50cz4KPC9saWJyYXJ5Pgo="
},
{
"contentType": "application/elm+json",
"data": "ewogICAibGlicmFyeSIgOiB7CiAgICAgICJhbm5vdGF0aW9uIiA6IFsgewogICAgICAgICAidHJhbnNsYXRvclZlcnNpb24iIDogIjIuNy4wIiwKICAgICAgICAgInRyYW5zbGF0b3JPcHRpb25zIiA6ICJFbmFibGVBbm5vdGF0aW9ucyxFbmFibGVMb2NhdG9ycyxEaXNhYmxlTGlzdERlbW90aW9uLERpc2FibGVMaXN0UHJvbW90aW9uIiwKICAgICAgICAgInR5cGUiIDogIkNxbFRvRWxtSW5mbyIKICAgICAgfSwgewogICAgICAgICAidHlwZSIgOiAiQW5ub3RhdGlvbiIsCiAgICAgICAgICJzIiA6IHsKICAgICAgICAgICAgInIiIDogIjg5IiwKICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIvKlxuICogTGlicmFyeTogSU1NWkQ1RFRNZWFzbGVzIChJTU1aLkQ1LkRULk1lYXNsZXMgY29udHJhaW5kaWNhdGlvbnMpXG4gKiBSdWxlOiBDaGVjayBmb3IgY29udHJhaW5kaWNhdGlvbnMgYmVmb3JlIGFkbWluaXN0ZXJpbmcgdGhlIHZhY2NpbmUocykgZHVlXHTCoFx0wqBcdMKgIFxuICogVHJpZ2dlcjogSU1NWi5ENSBEZXRlcm1pbmUgdmFjY2luZShzKSB0byBiZSBhZG1pbmlzdGVyZWQgYmFzZWQgb24gY29udHJhaW5kaWNhdGlvbnNcbiAqL1xuIiwibGlicmFyeSBJTU1aRDVEVE1lYXNsZXMiIF0KICAgICAgICAgICAgfSBdCiAgICAgICAgIH0KICAgICAgfSBdLAogICAgICAiaWRlbnRpZmllciIgOiB7CiAgICAgICAgICJpZCIgOiAiSU1NWkQ1RFRNZWFzbGVzIiwKICAgICAgICAgInN5c3RlbSIgOiAiaHR0cDovL3NtYXJ0Lndoby5pbnQvaWcvc21hcnQtaW1tdW5pemF0aW9ucyIKICAgICAgfSwKICAgICAgInNjaGVtYUlkZW50aWZpZXIiIDogewogICAgICAgICAiaWQiIDogInVybjpobDctb3JnOmVsbSIsCiAgICAgICAgICJ2ZXJzaW9uIiA6ICJyMSIKICAgICAgfSwKICAgICAgInVzaW5ncyIgOiB7CiAgICAgICAgICJkZWYiIDogWyB7CiAgICAgICAgICAgICJsb2NhbElkZW50aWZpZXIiIDogIlN5c3RlbSIsCiAgICAgICAgICAgICJ1cmkiIDogInVybjpobDctb3JnOmVsbS10eXBlczpyMSIKICAgICAgICAgfSwgewogICAgICAgICAgICAibG9jYWxJZCIgOiAiMSIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICI4OjEtODoyNiIsCiAgICAgICAgICAgICJsb2NhbElkZW50aWZpZXIiIDogIkZISVIiLAogICAgICAgICAgICAidXJpIiA6ICJodHRwOi8vaGw3Lm9yZy9maGlyIiwKICAgICAgICAgICAgInZlcnNpb24iIDogIjQuMC4xIiwKICAgICAgICAgICAgImFubm90YXRpb24iIDogWyB7CiAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbm5vdGF0aW9uIiwKICAgICAgICAgICAgICAgInMiIDogewogICAgICAgICAgICAgICAgICAiciIgOiAiMSIsCiAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiLy8gU3RhcnQgU2tlbGV0b24gQ1FMXG4iLCJ1c2luZyAiIF0KICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIkZISVIiIF0KICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIiB2ZXJzaW9uICIsIic0LjAuMSciIF0KICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBdCiAgICAgICAgIH0gXQogICAgICB9LAogICAgICAiaW5jbHVkZXMiIDogewogICAgICAgICAiZGVmIiA6IFsgewogICAgICAgICAgICAibG9jYWxJZCIgOiAiMiIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICI5OjEtOTozNSIsCiAgICAgICAgICAgICJsb2NhbElkZW50aWZpZXIiIDogIkZISVJIZWxwZXJzIiwKICAgICAgICAgICAgInBhdGgiIDogImh0dHA6Ly9zbWFydC53aG8uaW50L2lnL3NtYXJ0LWltbXVuaXphdGlvbnMvRkhJUkhlbHBlcnMiLAogICAgICAgICAgICAidmVyc2lvbiIgOiAiNC4wLjEiLAogICAgICAgICAgICAiYW5ub3RhdGlvbiIgOiBbIHsKICAgICAgICAgICAgICAgInR5cGUiIDogIkFubm90YXRpb24iLAogICAgICAgICAgICAgICAicyIgOiB7CiAgICAgICAgICAgICAgICAgICJyIiA6ICIyIiwKICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIiLCJpbmNsdWRlICIgXQogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiRkhJUkhlbHBlcnMiIF0KICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIiB2ZXJzaW9uICIsIic0LjAuMSciIF0KICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBdCiAgICAgICAgIH0sIHsKICAgICAgICAgICAgImxvY2FsSWQiIDogIjMiLAogICAgICAgICAgICAibG9jYXRvciIgOiAiMTA6MS0xMDozMyIsCiAgICAgICAgICAgICJsb2NhbElkZW50aWZpZXIiIDogIklNTVpDb20iLAogICAgICAgICAgICAicGF0aCIgOiAiaHR0cDovL3NtYXJ0Lndoby5pbnQvaWcvc21hcnQtaW1tdW5pemF0aW9ucy9JTU1aQ29tbW9uIiwKICAgICAgICAgICAgImFubm90YXRpb24iIDogWyB7CiAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbm5vdGF0aW9uIiwKICAgICAgICAgICAgICAgInMiIDogewogICAgICAgICAgICAgICAgICAiciIgOiAiMyIsCiAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiIiwiaW5jbHVkZSAiIF0KICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIklNTVpDb21tb24iIF0KICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIiBjYWxsZWQgIiwiSU1NWkNvbSIgXQogICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IF0KICAgICAgICAgfSwgewogICAgICAgICAgICAibG9jYWxJZCIgOiAiNCIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxMToxLTExOjMzIiwKICAgICAgICAgICAgImxvY2FsSWRlbnRpZmllciIgOiAiSU1NWmMiLAogICAgICAgICAgICAicGF0aCIgOiAiaHR0cDovL3NtYXJ0Lndoby5pbnQvaWcvc21hcnQtaW1tdW5pemF0aW9ucy9JTU1aQ29uY2VwdHMiLAogICAgICAgICAgICAiYW5ub3RhdGlvbiIgOiBbIHsKICAgICAgICAgICAgICAgInR5cGUiIDogIkFubm90YXRpb24iLAogICAgICAgICAgICAgICAicyIgOiB7CiAgICAgICAgICAgICAgICAgICJyIiA6ICI0IiwKICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIiLCJpbmNsdWRlICIgXQogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiSU1NWkNvbmNlcHRzIiBdCiAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIgY2FsbGVkICIsIklNTVpjIiBdCiAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gXQogICAgICAgICB9LCB7CiAgICAgICAgICAgICJsb2NhbElkIiA6ICI1IiwKICAgICAgICAgICAgImxvY2F0b3IiIDogIjEyOjEtMTI6MzMiLAogICAgICAgICAgICAibG9jYWxJZGVudGlmaWVyIiA6ICJJTU1aQ29uIiwKICAgICAgICAgICAgInBhdGgiIDogImh0dHA6Ly9zbWFydC53aG8uaW50L2lnL3NtYXJ0LWltbXVuaXphdGlvbnMvSU1NWkNvbmZpZyIsCiAgICAgICAgICAgICJhbm5vdGF0aW9uIiA6IFsgewogICAgICAgICAgICAgICAidHlwZSIgOiAiQW5ub3RhdGlvbiIsCiAgICAgICAgICAgICAgICJzIiA6IHsKICAgICAgICAgICAgICAgICAgInIiIDogIjUiLAogICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIiIsImluY2x1ZGUgIiBdCiAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJJTU1aQ29uZmlnIiBdCiAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIgY2FsbGVkICIsIklNTVpDb24iIF0KICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBdCiAgICAgICAgIH0sIHsKICAgICAgICAgICAgImxvY2FsSWQiIDogIjYiLAogICAgICAgICAgICAibG9jYXRvciIgOiAiMTM6MS0xMzo0MCIsCiAgICAgICAgICAgICJsb2NhbElkZW50aWZpZXIiIDogIklNTVp2bCIsCiAgICAgICAgICAgICJwYXRoIiA6ICJodHRwOi8vc21hcnQud2hvLmludC9pZy9zbWFydC1pbW11bml6YXRpb25zL0lNTVpWYWNjaW5lTGlicmFyeSIsCiAgICAgICAgICAgICJhbm5vdGF0aW9uIiA6IFsgewogICAgICAgICAgICAgICAidHlwZSIgOiAiQW5ub3RhdGlvbiIsCiAgICAgICAgICAgICAgICJzIiA6IHsKICAgICAgICAgICAgICAgICAgInIiIDogIjYiLAogICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIiIsImluY2x1ZGUgIiBdCiAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJJTU1aVmFjY2luZUxpYnJhcnkiIF0KICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIiBjYWxsZWQgIiwiSU1NWnZsIiBdCiAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gXQogICAgICAgICB9LCB7CiAgICAgICAgICAgICJsb2NhbElkIiA6ICI3IiwKICAgICAgICAgICAgImxvY2F0b3IiIDogIjE0OjEtMTQ6MjgiLAogICAgICAgICAgICAibG9jYWxJZGVudGlmaWVyIiA6ICJGQyIsCiAgICAgICAgICAgICJwYXRoIiA6ICJodHRwOi8vc21hcnQud2hvLmludC9pZy9zbWFydC1pbW11bml6YXRpb25zL0ZISVJDb21tb24iLAogICAgICAgICAgICAiYW5ub3RhdGlvbiIgOiBbIHsKICAgICAgICAgICAgICAgInR5cGUiIDogIkFubm90YXRpb24iLAogICAgICAgICAgICAgICAicyIgOiB7CiAgICAgICAgICAgICAgICAgICJyIiA6ICI3IiwKICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIiLCJpbmNsdWRlICIgXQogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiRkhJUkNvbW1vbiIgXQogICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiIGNhbGxlZCAiLCJGQyIgXQogICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IF0KICAgICAgICAgfSwgewogICAgICAgICAgICAibG9jYWxJZCIgOiAiOCIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxNToxLTE1OjQxIiwKICAgICAgICAgICAgImxvY2FsSWRlbnRpZmllciIgOiAiaW5wdXQiLAogICAgICAgICAgICAicGF0aCIgOiAiaHR0cDovL3NtYXJ0Lndoby5pbnQvaWcvc21hcnQtaW1tdW5pemF0aW9ucy9JTU1aRDJEVE1lYXNsZXNJbnB1dCIsCiAgICAgICAgICAgICJhbm5vdGF0aW9uIiA6IFsgewogICAgICAgICAgICAgICAidHlwZSIgOiAiQW5ub3RhdGlvbiIsCiAgICAgICAgICAgICAgICJzIiA6IHsKICAgICAgICAgICAgICAgICAgInIiIDogIjgiLAogICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIiIsImluY2x1ZGUgIiBdCiAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJJTU1aRDJEVE1lYXNsZXNJbnB1dCIgXQogICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiIGNhbGxlZCAiLCJpbnB1dCIgXQogICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IF0KICAgICAgICAgfSBdCiAgICAgIH0sCiAgICAgICJzdGF0ZW1lbnRzIiA6IHsKICAgICAgICAgImRlZiIgOiBbIHsKICAgICAgICAgICAgImxvY2F0b3IiIDogIjE4OjEtMTg6MTUiLAogICAgICAgICAgICAibmFtZSIgOiAiUGF0aWVudCIsCiAgICAgICAgICAgICJjb250ZXh0IiA6ICJQYXRpZW50IiwKICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAidHlwZSIgOiAiU2luZ2xldG9uRnJvbSIsCiAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjE4OjEtMTg6MTUiLAogICAgICAgICAgICAgICAgICAiZGF0YVR5cGUiIDogIntodHRwOi8vaGw3Lm9yZy9maGlyfVBhdGllbnQiLAogICAgICAgICAgICAgICAgICAidGVtcGxhdGVJZCIgOiAiaHR0cDovL2hsNy5vcmcvZmhpci9TdHJ1Y3R1cmVEZWZpbml0aW9uL1BhdGllbnQiLAogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiUmV0cmlldmUiCiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICB9LCB7CiAgICAgICAgICAgICJsb2NhbElkIiA6ICIyNyIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyMzoxLTI1OjUzIiwKICAgICAgICAgICAgIm5hbWUiIDogIkRyYWZ0IE1lZGljYXRpb24gUmVxdWVzdCBmb3IgTUNWIGRvc2UiLAogICAgICAgICAgICAiY29udGV4dCIgOiAiUGF0aWVudCIsCiAgICAgICAgICAgICJhY2Nlc3NMZXZlbCIgOiAiUHVibGljIiwKICAgICAgICAgICAgImFubm90YXRpb24iIDogWyB7CiAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbm5vdGF0aW9uIiwKICAgICAgICAgICAgICAgInMiIDogewogICAgICAgICAgICAgICAgICAiciIgOiAiMjciLAogICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIi8qXG5AaW50ZXJuYWw6IERyYWZ0IE1lZGljYXRpb24gUmVxdWVzdCBmb3IgTUNWIGRvc2VcbiovXG4iLCJkZWZpbmUgIiwiXCJEcmFmdCBNZWRpY2F0aW9uIFJlcXVlc3QgZm9yIE1DViBkb3NlXCIiLCI6XG5cdCIgXQogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIyNiIsCiAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjEwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJbIiwiTWVkaWNhdGlvblJlcXVlc3QiLCI6ICIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiSU1NWmMiLCIuIiwiXCJNQ1YgVmFjY2luZVwiIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJdIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiICIsIk1SIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiICIgXQogICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIxOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAid2hlcmUgIiBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjE5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIxNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjExIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJNUiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiLiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIxMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAic3RhdHVzIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiICIsIj0iLCIgIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjEzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICInZHJhZnQnIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiIGFuZCAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMTgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjE2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIxNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiTVIiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIi4iIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMTYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgImludGVudCIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIiAiLCI9IiwiICIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIxNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiJ3Byb3Bvc2FsJyIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiXG5cdCIgXQogICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIyNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAic29ydCBieSAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJkYXRlIGZyb20gIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIoIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIyMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiYXV0aG9yZWRPbiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiIGFzICIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIyMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiRkhJUiIsIi4iLCJkYXRlVGltZSIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIikiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIgZGVzYyIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjI2IiwKICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjI0OjItMjU6NTMiLAogICAgICAgICAgICAgICAidHlwZSIgOiAiUXVlcnkiLAogICAgICAgICAgICAgICAic291cmNlIiA6IFsgewogICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMTAiLAogICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjQ6Mi0yNDo0NCIsCiAgICAgICAgICAgICAgICAgICJhbGlhcyIgOiAiTVIiLAogICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICI5IiwKICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjI0OjItMjQ6NDEiLAogICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiVW5pb24iLAogICAgICAgICAgICAgICAgICAgICAic2lnbmF0dXJlIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTGlzdFR5cGVTcGVjaWZpZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TWVkaWNhdGlvblJlcXVlc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTmFtZWRUeXBlU3BlY2lmaWVyIgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkxpc3RUeXBlU3BlY2lmaWVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIntodHRwOi8vaGw3Lm9yZy9maGlyfU1lZGljYXRpb25SZXF1ZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAiZGF0YVR5cGUiIDogIntodHRwOi8vaGw3Lm9yZy9maGlyfU1lZGljYXRpb25SZXF1ZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInRlbXBsYXRlSWQiIDogImh0dHA6Ly9obDcub3JnL2ZoaXIvU3RydWN0dXJlRGVmaW5pdGlvbi9NZWRpY2F0aW9uUmVxdWVzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJjb2RlUHJvcGVydHkiIDogIm1lZGljYXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAiY29kZUNvbXBhcmF0b3IiIDogImluIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlJldHJpZXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgImNvZGVzIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjI0OjIyLTI0OjQwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIk1DViBWYWNjaW5lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpYnJhcnlOYW1lIiA6ICJJTU1aYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJWYWx1ZVNldFJlZiIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyNDoyLTI0OjQxIiwKICAgICAgICAgICAgICAgICAgICAgICAgImRhdGFUeXBlIiA6ICJ7aHR0cDovL2hsNy5vcmcvZmhpcn1NZWRpY2F0aW9uUmVxdWVzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0ZW1wbGF0ZUlkIiA6ICJodHRwOi8vaGw3Lm9yZy9maGlyL1N0cnVjdHVyZURlZmluaXRpb24vTWVkaWNhdGlvblJlcXVlc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAiY29kZVByb3BlcnR5IiA6ICJtZWRpY2F0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgImNvZGVDb21wYXJhdG9yIiA6ICJpbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJSZXRyaWV2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJjb2RlcyIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyNDoyMi0yNDo0MCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJNQ1YgVmFjY2luZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWJyYXJ5TmFtZSIgOiAiSU1NWmMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiVmFsdWVTZXRSZWYiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAicmVsYXRpb25zaGlwIiA6IFsgXSwKICAgICAgICAgICAgICAgIndoZXJlIiA6IHsKICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjE5IiwKICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjI0OjQ2LTI0Ojk3IiwKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFuZCIsCiAgICAgICAgICAgICAgICAgICJzaWduYXR1cmUiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUJvb2xlYW4iLAogICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTmFtZWRUeXBlU3BlY2lmaWVyIgogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUJvb2xlYW4iLAogICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTmFtZWRUeXBlU3BlY2lmaWVyIgogICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMTQiLAogICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjQ6NTItMjQ6NzAiLAogICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiRXF1YWwiLAogICAgICAgICAgICAgICAgICAgICAic2lnbmF0dXJlIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTmFtZWRUeXBlU3BlY2lmaWVyIgogICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJOYW1lZFR5cGVTcGVjaWZpZXIiCiAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgIm9wZXJhbmQiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJUb1N0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJsaWJyYXJ5TmFtZSIgOiAiRkhJUkhlbHBlcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiRnVuY3Rpb25SZWYiLAogICAgICAgICAgICAgICAgICAgICAgICAic2lnbmF0dXJlIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TWVkaWNhdGlvblJlcXVlc3RTdGF0dXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTmFtZWRUeXBlU3BlY2lmaWVyIgogICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjQ6NTItMjQ6NjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0aCIgOiAic3RhdHVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3BlIiA6ICJNUiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJQcm9wZXJ0eSIKICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjEzIiwKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjI0OjY0LTI0OjcwIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlVHlwZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogImRyYWZ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkxpdGVyYWwiCiAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICIxOCIsCiAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyNDo3Ni0yNDo5NyIsCiAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJFcXVhbCIsCiAgICAgICAgICAgICAgICAgICAgICJzaWduYXR1cmUiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJOYW1lZFR5cGVTcGVjaWZpZXIiCiAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIKICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIlRvU3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgImxpYnJhcnlOYW1lIiA6ICJGSElSSGVscGVycyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJGdW5jdGlvblJlZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYXR1cmUiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7aHR0cDovL2hsNy5vcmcvZmhpcn1NZWRpY2F0aW9uUmVxdWVzdEludGVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJOYW1lZFR5cGVTcGVjaWZpZXIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhbmQiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICIxNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyNDo3Ni0yNDo4NCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIiA6ICJpbnRlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiIDogIk1SIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIlByb3BlcnR5IgogICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMTciLAogICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjQ6ODgtMjQ6OTciLAogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVUeXBlIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAicHJvcG9zYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTGl0ZXJhbCIKICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAic29ydCIgOiB7CiAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICIyNSIsCiAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIyNToyLTI1OjUzIiwKICAgICAgICAgICAgICAgICAgImJ5IiA6IFsgewogICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMjQiLAogICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjU6MTAtMjU6NTMiLAogICAgICAgICAgICAgICAgICAgICAiZGlyZWN0aW9uIiA6ICJkZXNjIiwKICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkJ5RXhwcmVzc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjI1OjEwLTI1OjQ4IiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkRhdGVGcm9tIiwKICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hdHVyZSIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9RGF0ZVRpbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTmFtZWRUeXBlU3BlY2lmaWVyIgogICAgICAgICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIlRvRGF0ZVRpbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAibGlicmFyeU5hbWUiIDogIkZISVJIZWxwZXJzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkZ1bmN0aW9uUmVmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hdHVyZSIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIntodHRwOi8vaGw3Lm9yZy9maGlyfWRhdGVUaW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAib3BlcmFuZCIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjI1OjIwLTI1OjQ4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmljdCIgOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkFzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhbmQiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMjU6MjEtMjU6MzAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiYXV0aG9yZWRPbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJJZGVudGlmaWVyUmVmIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNUeXBlU3BlY2lmaWVyIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjI1OjM1LTI1OjQ3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIntodHRwOi8vaGw3Lm9yZy9maGlyfWRhdGVUaW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgfSwgewogICAgICAgICAgICAibG9jYWxJZCIgOiAiMzEiLAogICAgICAgICAgICAibG9jYXRvciIgOiAiMzA6MS0zMTo1MCIsCiAgICAgICAgICAgICJuYW1lIiA6ICJEcmFmdCBNZWRpY2F0aW9uIFJlcXVlc3QgSUQgZm9yIE1DViBkb3NlIiwKICAgICAgICAgICAgImNvbnRleHQiIDogIlBhdGllbnQiLAogICAgICAgICAgICAiYWNjZXNzTGV2ZWwiIDogIlB1YmxpYyIsCiAgICAgICAgICAgICJhbm5vdGF0aW9uIiA6IFsgewogICAgICAgICAgICAgICAidHlwZSIgOiAiQW5ub3RhdGlvbiIsCiAgICAgICAgICAgICAgICJzIiA6IHsKICAgICAgICAgICAgICAgICAgInIiIDogIjMxIiwKICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIvKlxuQGR5bmFtaWNWYWx1ZTogRHJhZnQgTWVkaWNhdGlvbiBSZXF1ZXN0IElEIGZvciBNQ1YgZG9zZVxuKi9cbiIsImRlZmluZSAiLCJcIkRyYWZ0IE1lZGljYXRpb24gUmVxdWVzdCBJRCBmb3IgTUNWIGRvc2VcIiIsIjpcblx0IiBdCiAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgInIiIDogIjMwIiwKICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIyOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiRmlyc3QiLCIoIiBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJcIkRyYWZ0IE1lZGljYXRpb24gUmVxdWVzdCBmb3IgTUNWIGRvc2VcIiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiKSIgXQogICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiLiIgXQogICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIzMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiaWQiIF0KICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjMwIiwKICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjMxOjItMzE6NTAiLAogICAgICAgICAgICAgICAicGF0aCIgOiAiaWQiLAogICAgICAgICAgICAgICAidHlwZSIgOiAiUHJvcGVydHkiLAogICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjI5IiwKICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjMxOjItMzE6NDciLAogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiRmlyc3QiLAogICAgICAgICAgICAgICAgICAic2lnbmF0dXJlIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTGlzdFR5cGVTcGVjaWZpZXIiLAogICAgICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TWVkaWNhdGlvblJlcXVlc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTmFtZWRUeXBlU3BlY2lmaWVyIgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgICAgInNvdXJjZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICIyOCIsCiAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIzMTo4LTMxOjQ2IiwKICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIkRyYWZ0IE1lZGljYXRpb24gUmVxdWVzdCBmb3IgTUNWIGRvc2UiLAogICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiRXhwcmVzc2lvblJlZiIKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgfSwgewogICAgICAgICAgICAibG9jYWxJZCIgOiAiMzQiLAogICAgICAgICAgICAibG9jYXRvciIgOiAiNDY6MS00NzozMSIsCiAgICAgICAgICAgICJuYW1lIiA6ICJNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZCBDYXNlIDEiLAogICAgICAgICAgICAiY29udGV4dCIgOiAiUGF0aWVudCIsCiAgICAgICAgICAgICJhY2Nlc3NMZXZlbCIgOiAiUHVibGljIiwKICAgICAgICAgICAgImFubm90YXRpb24iIDogWyB7CiAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbm5vdGF0aW9uIiwKICAgICAgICAgICAgICAgInMiIDogewogICAgICAgICAgICAgICAgICAiciIgOiAiMzQiLAogICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIi8qXG5Ab3V0cHV0OiBNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZCBDYXNlIDFcbkBwc2V1ZG9jb2RlOiBcIkltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXNcIiA9ICdDb250cmFpbmRpY2F0ZWQnXG4qL1xuIiwiZGVmaW5lICIsIlwiTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAxXCIiLCI6XG5cdCIgXQogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIzMyIsCiAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzIiLAogICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgImlucHV0IiBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjMzIiwKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJcIlRoZSBjbGllbnQgaXMgcHJlZ25hbnRcIiIgXQogICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMzMiLAogICAgICAgICAgICAgICAibG9jYXRvciIgOiAiNDc6Mi00NzozMSIsCiAgICAgICAgICAgICAgICJuYW1lIiA6ICJUaGUgY2xpZW50IGlzIHByZWduYW50IiwKICAgICAgICAgICAgICAgImxpYnJhcnlOYW1lIiA6ICJpbnB1dCIsCiAgICAgICAgICAgICAgICJ0eXBlIiA6ICJFeHByZXNzaW9uUmVmIgogICAgICAgICAgICB9CiAgICAgICAgIH0sIHsKICAgICAgICAgICAgImxvY2FsSWQiIDogIjM4IiwKICAgICAgICAgICAgImxvY2F0b3IiIDogIjUzOjEtNTQ6NDgiLAogICAgICAgICAgICAibmFtZSIgOiAiTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAyIiwKICAgICAgICAgICAgImNvbnRleHQiIDogIlBhdGllbnQiLAogICAgICAgICAgICAiYWNjZXNzTGV2ZWwiIDogIlB1YmxpYyIsCiAgICAgICAgICAgICJhbm5vdGF0aW9uIiA6IFsgewogICAgICAgICAgICAgICAidHlwZSIgOiAiQW5ub3RhdGlvbiIsCiAgICAgICAgICAgICAgICJzIiA6IHsKICAgICAgICAgICAgICAgICAgInIiIDogIjM4IiwKICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIvKlxuQG91dHB1dDogTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAyXG5AcHNldWRvY29kZTogXCJJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzXCIgPSAnQ29udHJhaW5kaWNhdGVkJ1xuKi9cbiIsImRlZmluZSAiLCJcIk1lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkIENhc2UgMlwiIiwiOlxuXHQiIF0KICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzciLAogICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjM2IiwKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJpbnB1dCIgXQogICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiLiIgXQogICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICIzNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiXCJUaGUgY2xpZW50IGlzIHNldmVyZWx5IGltbXVub3N1cHByZXNzZWRcIiIgXQogICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiMzciLAogICAgICAgICAgICAgICAibG9jYXRvciIgOiAiNTQ6Mi01NDo0OCIsCiAgICAgICAgICAgICAgICJuYW1lIiA6ICJUaGUgY2xpZW50IGlzIHNldmVyZWx5IGltbXVub3N1cHByZXNzZWQiLAogICAgICAgICAgICAgICAibGlicmFyeU5hbWUiIDogImlucHV0IiwKICAgICAgICAgICAgICAgInR5cGUiIDogIkV4cHJlc3Npb25SZWYiCiAgICAgICAgICAgIH0KICAgICAgICAgfSwgewogICAgICAgICAgICAibG9jYWxJZCIgOiAiNDEiLAogICAgICAgICAgICAibG9jYXRvciIgOiAiNjA6MS02MTo5MyIsCiAgICAgICAgICAgICJuYW1lIiA6ICJNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZCIsCiAgICAgICAgICAgICJjb250ZXh0IiA6ICJQYXRpZW50IiwKICAgICAgICAgICAgImFjY2Vzc0xldmVsIiA6ICJQdWJsaWMiLAogICAgICAgICAgICAiYW5ub3RhdGlvbiIgOiBbIHsKICAgICAgICAgICAgICAgInR5cGUiIDogIkFubm90YXRpb24iLAogICAgICAgICAgICAgICAicyIgOiB7CiAgICAgICAgICAgICAgICAgICJyIiA6ICI0MSIsCiAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiLypcbkBvdXRwdXQ6IE1lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkXG5AcHNldWRvY29kZTogXCJJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzXCIgPSAnQ29udHJhaW5kaWNhdGVkJ1xuKi9cbiIsImRlZmluZSAiLCJcIk1lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkXCIiLCI6XG5cdCIgXQogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI0MCIsCiAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzUiLAogICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIlwiTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAxXCIiIF0KICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIiBvciAiIF0KICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiMzkiLAogICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIlwiTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAyXCIiIF0KICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjQwIiwKICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjYxOjItNjE6OTMiLAogICAgICAgICAgICAgICAidHlwZSIgOiAiT3IiLAogICAgICAgICAgICAgICAic2lnbmF0dXJlIiA6IFsgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1Cb29sZWFuIiwKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIKICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1Cb29sZWFuIiwKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIKICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAib3BlcmFuZCIgOiBbIHsKICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjM1IiwKICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjYxOjItNjE6NDUiLAogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAxIiwKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkV4cHJlc3Npb25SZWYiCiAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjM5IiwKICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjYxOjUwLTYxOjkzIiwKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIk1lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkIENhc2UgMiIsCiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJFeHByZXNzaW9uUmVmIgogICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgfQogICAgICAgICB9LCB7CiAgICAgICAgICAgICJsb2NhbElkIiA6ICI1NCIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICI2ODoxLTcyOjkiLAogICAgICAgICAgICAibmFtZSIgOiAiTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgR3VpZGFuY2UiLAogICAgICAgICAgICAiY29udGV4dCIgOiAiUGF0aWVudCIsCiAgICAgICAgICAgICJhY2Nlc3NMZXZlbCIgOiAiUHVibGljIiwKICAgICAgICAgICAgImFubm90YXRpb24iIDogWyB7CiAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbm5vdGF0aW9uIiwKICAgICAgICAgICAgICAgInMiIDogewogICAgICAgICAgICAgICAgICAiciIgOiAiNTQiLAogICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIi8qXG5Ab3V0cHV0OiBNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZCBHdWlkYW5jZVxuQGd1aWRhbmNlOiBEbyBub3QgdmFjY2luYXRlIGR1ZSB0byBhIGNvbnRyYWluZGljYXRpb246IGNsaWVudCBpcyBwcmVnbmFudC5cbkBndWlkYW5jZTogRG8gbm90IHZhY2NpbmF0ZSBkdWUgdG8gYSBjb250cmFpbmRpY2F0aW9uOiBjbGllbnQgaXMgc2V2ZXJlbHkgaW1tdW5vc3VwcHJlc3NlZC5cbiovXG4iLCJkZWZpbmUgIiwiXCJNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZCBHdWlkYW5jZVwiIiwiOlxuXHQiIF0KICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAiciIgOiAiNTMiLAogICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIkNvbWJpbmUiLCIoICIgXQogICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI1MSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAie1xuXHRcdCIgXQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI0NiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiaWYgIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjQzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJcIk1lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkIENhc2UgMVwiIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIgdGhlbiAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNDQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIidEbyBub3QgdmFjY2luYXRlIGR1ZSB0byBhIGNvbnRyYWluZGljYXRpb246IGNsaWVudCBpcyBwcmVnbmFudC4nIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIgZWxzZSAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIicnIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiLFxuXHRcdCIgXQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI1MCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiaWYgIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjQ3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJcIk1lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkIENhc2UgMlwiIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIgdGhlbiAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNDgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIidEbyBub3QgdmFjY2luYXRlIGR1ZSB0byBhIGNvbnRyYWluZGljYXRpb246IGNsaWVudCBpcyBzZXZlcmVseSBpbW11bm9zdXBwcmVzc2VkLiciIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIiBlbHNlICIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI0OSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiJyciIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJcblx0fSIgXQogICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiLCAiIF0KICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNTIiLAogICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIicgJyIgXQogICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiICkiIF0KICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNTMiLAogICAgICAgICAgICAgICAibG9jYXRvciIgOiAiNjk6Mi03Mjo5IiwKICAgICAgICAgICAgICAgInR5cGUiIDogIkNvbWJpbmUiLAogICAgICAgICAgICAgICAic2lnbmF0dXJlIiA6IFsgewogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTGlzdFR5cGVTcGVjaWZpZXIiLAogICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiIDogewogICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLAogICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTmFtZWRUeXBlU3BlY2lmaWVyIgogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIKICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjUxIiwKICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjY5OjExLTcyOjIiLAogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTGlzdCIsCiAgICAgICAgICAgICAgICAgICJlbGVtZW50IiA6IFsgewogICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNDYiLAogICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiNzA6My03MDoxMjgiLAogICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiSWYiLAogICAgICAgICAgICAgICAgICAgICAiY29uZGl0aW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjQzIiwKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjcwOjYtNzA6NDkiLAogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgQ2FzZSAxIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkV4cHJlc3Npb25SZWYiCiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICJ0aGVuIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjQ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjcwOjU2LTcwOjEyMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZVR5cGUiIDogInt1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJEbyBub3QgdmFjY2luYXRlIGR1ZSB0byBhIGNvbnRyYWluZGljYXRpb246IGNsaWVudCBpcyBwcmVnbmFudC4iLAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTGl0ZXJhbCIKICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgImVsc2UiIDogewogICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNDUiLAogICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiNzA6MTI3LTcwOjEyOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZVR5cGUiIDogInt1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTGl0ZXJhbCIKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICI1MCIsCiAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICI3MTozLTcxOjE0NSIsCiAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJJZiIsCiAgICAgICAgICAgICAgICAgICAgICJjb25kaXRpb24iIDogewogICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNDciLAogICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiNzE6Ni03MTo0OSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZCBDYXNlIDIiLAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiRXhwcmVzc2lvblJlZiIKICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgInRoZW4iIDogewogICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNDgiLAogICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiNzE6NTYtNzE6MTM3IiwKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlVHlwZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogIkRvIG5vdCB2YWNjaW5hdGUgZHVlIHRvIGEgY29udHJhaW5kaWNhdGlvbjogY2xpZW50IGlzIHNldmVyZWx5IGltbXVub3N1cHByZXNzZWQuIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkxpdGVyYWwiCiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICJlbHNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjQ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjcxOjE0NC03MToxNDUiLAogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVUeXBlIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkxpdGVyYWwiCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICJzZXBhcmF0b3IiIDogewogICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNTIiLAogICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiNzI6NS03Mjo3IiwKICAgICAgICAgICAgICAgICAgInZhbHVlVHlwZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLAogICAgICAgICAgICAgICAgICAidmFsdWUiIDogIiAiLAogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTGl0ZXJhbCIKICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgIH0sIHsKICAgICAgICAgICAgImxvY2FsSWQiIDogIjYwIiwKICAgICAgICAgICAgImxvY2F0b3IiIDogIjc4OjEtNzk6NTciLAogICAgICAgICAgICAibmFtZSIgOiAiQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMSIsCiAgICAgICAgICAgICJjb250ZXh0IiA6ICJQYXRpZW50IiwKICAgICAgICAgICAgImFjY2Vzc0xldmVsIiA6ICJQdWJsaWMiLAogICAgICAgICAgICAiYW5ub3RhdGlvbiIgOiBbIHsKICAgICAgICAgICAgICAgInR5cGUiIDogIkFubm90YXRpb24iLAogICAgICAgICAgICAgICAicyIgOiB7CiAgICAgICAgICAgICAgICAgICJyIiA6ICI2MCIsCiAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiLypcbkBvdXRwdXQ6IENsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDFcbkBwc2V1ZG9jb2RlOiBJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzID0gJ0Z1cnRoZXIgZXZhbHVhdGlvbiBuZWVkZWQnXCJcbiovXG4iLCJkZWZpbmUgIiwiXCJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAxXCIiLCI6XG5cdCIgXQogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI1OSIsCiAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNTgiLAogICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgImlucHV0IiBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjU5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJcIlRoZSBjbGllbnQgaGFzIGhpc3Rvcnkgb2YgYW5hcGh5bGFjdGljIHJlYWN0aW9uc1wiIiBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICI1OSIsCiAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICI3OToyLTc5OjU3IiwKICAgICAgICAgICAgICAgIm5hbWUiIDogIlRoZSBjbGllbnQgaGFzIGhpc3Rvcnkgb2YgYW5hcGh5bGFjdGljIHJlYWN0aW9ucyIsCiAgICAgICAgICAgICAgICJsaWJyYXJ5TmFtZSIgOiAiaW5wdXQiLAogICAgICAgICAgICAgICAidHlwZSIgOiAiRXhwcmVzc2lvblJlZiIKICAgICAgICAgICAgfQogICAgICAgICB9LCB7CiAgICAgICAgICAgICJsb2NhbElkIiA6ICI2NCIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICI4NToxLTg2OjYwIiwKICAgICAgICAgICAgIm5hbWUiIDogIkNsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDIiLAogICAgICAgICAgICAiY29udGV4dCIgOiAiUGF0aWVudCIsCiAgICAgICAgICAgICJhY2Nlc3NMZXZlbCIgOiAiUHVibGljIiwKICAgICAgICAgICAgImFubm90YXRpb24iIDogWyB7CiAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbm5vdGF0aW9uIiwKICAgICAgICAgICAgICAgInMiIDogewogICAgICAgICAgICAgICAgICAiciIgOiAiNjQiLAogICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIi8qXG5Ab3V0cHV0OiBDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAyXG5AcHNldWRvY29kZTogSW1tdW5pemF0aW9uIHJlY29tbWVuZGF0aW9uIHN0YXR1cyA9ICdGdXJ0aGVyIGV2YWx1YXRpb24gbmVlZGVkJ1wiXG4qL1xuIiwiZGVmaW5lICIsIlwiQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMlwiIiwiOlxuXHQiIF0KICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAiciIgOiAiNjMiLAogICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjYyIiwKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJpbnB1dCIgXQogICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiLiIgXQogICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI2MyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiXCJUaGUgY2xpZW50IGhhcyBoaXN0b3J5IG9mIHNldmVyZSBhbGxlcmdpYyByZWFjdGlvbnNcIiIgXQogICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgImV4cHJlc3Npb24iIDogewogICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNjMiLAogICAgICAgICAgICAgICAibG9jYXRvciIgOiAiODY6Mi04Njo2MCIsCiAgICAgICAgICAgICAgICJuYW1lIiA6ICJUaGUgY2xpZW50IGhhcyBoaXN0b3J5IG9mIHNldmVyZSBhbGxlcmdpYyByZWFjdGlvbnMiLAogICAgICAgICAgICAgICAibGlicmFyeU5hbWUiIDogImlucHV0IiwKICAgICAgICAgICAgICAgInR5cGUiIDogIkV4cHJlc3Npb25SZWYiCiAgICAgICAgICAgIH0KICAgICAgICAgfSwgewogICAgICAgICAgICAibG9jYWxJZCIgOiAiNjkiLAogICAgICAgICAgICAibG9jYXRvciIgOiAiOTI6MS05Mzo1MCIsCiAgICAgICAgICAgICJuYW1lIiA6ICJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAzIiwKICAgICAgICAgICAgImNvbnRleHQiIDogIlBhdGllbnQiLAogICAgICAgICAgICAiYWNjZXNzTGV2ZWwiIDogIlB1YmxpYyIsCiAgICAgICAgICAgICJhbm5vdGF0aW9uIiA6IFsgewogICAgICAgICAgICAgICAidHlwZSIgOiAiQW5ub3RhdGlvbiIsCiAgICAgICAgICAgICAgICJzIiA6IHsKICAgICAgICAgICAgICAgICAgInIiIDogIjY5IiwKICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIvKlxuQG91dHB1dDogQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgM1xuQHBzZXVkb2NvZGU6IEltbXVuaXphdGlvbiByZWNvbW1lbmRhdGlvbiBzdGF0dXMgPSAnRnVydGhlciBldmFsdWF0aW9uIG5lZWRlZCdcIlxuKi9cbiIsImRlZmluZSAiLCJcIkNsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDNcIiIsIjpcbiIgXQogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI2OCIsCiAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNjciLAogICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgImlucHV0IiBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIuIiBdCiAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjY4IiwKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJcIlRoZSBjbGllbnQgaGFzIGEgc3ltcHRvbWF0aWMgSElWIGluZmVjdGlvblwiIiBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICI2OCIsCiAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICI5MzoxLTkzOjUwIiwKICAgICAgICAgICAgICAgIm5hbWUiIDogIlRoZSBjbGllbnQgaGFzIGEgc3ltcHRvbWF0aWMgSElWIGluZmVjdGlvbiIsCiAgICAgICAgICAgICAgICJsaWJyYXJ5TmFtZSIgOiAiaW5wdXQiLAogICAgICAgICAgICAgICAidHlwZSIgOiAiRXhwcmVzc2lvblJlZiIKICAgICAgICAgICAgfQogICAgICAgICB9LCB7CiAgICAgICAgICAgICJsb2NhbElkIiA6ICI3MiIsCiAgICAgICAgICAgICJsb2NhdG9yIiA6ICI5OToxLTEwMjo0MCIsCiAgICAgICAgICAgICJuYW1lIiA6ICJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQiLAogICAgICAgICAgICAiY29udGV4dCIgOiAiUGF0aWVudCIsCiAgICAgICAgICAgICJhY2Nlc3NMZXZlbCIgOiAiUHVibGljIiwKICAgICAgICAgICAgImFubm90YXRpb24iIDogWyB7CiAgICAgICAgICAgICAgICJ0eXBlIiA6ICJBbm5vdGF0aW9uIiwKICAgICAgICAgICAgICAgInMiIDogewogICAgICAgICAgICAgICAgICAiciIgOiAiNzIiLAogICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIi8qXG5Ab3V0cHV0OiBDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWRcbkBwc2V1ZG9jb2RlOiBJbW11bml6YXRpb24gcmVjb21tZW5kYXRpb24gc3RhdHVzID0gJ0Z1cnRoZXIgZXZhbHVhdGlvbiBuZWVkZWQnXCJcbiovXG4iLCJkZWZpbmUgIiwiXCJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWRcIiIsIjpcblx0IiBdCiAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgInIiIDogIjcxIiwKICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI2NiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIlwiQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMVwiIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJcblx0b3IgIiBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjY1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJcIkNsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDJcIiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIlxuXHRvciAiIF0KICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNzAiLAogICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIlwiQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgM1wiIiBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAiZXhwcmVzc2lvbiIgOiB7CiAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICI3MSIsCiAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxMDA6Mi0xMDI6NDAiLAogICAgICAgICAgICAgICAidHlwZSIgOiAiT3IiLAogICAgICAgICAgICAgICAic2lnbmF0dXJlIiA6IFsgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1Cb29sZWFuIiwKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIKICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1Cb29sZWFuIiwKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIKICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAib3BlcmFuZCIgOiBbIHsKICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjY2IiwKICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjEwMDoyLTEwMTo0MCIsCiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJPciIsCiAgICAgICAgICAgICAgICAgICJzaWduYXR1cmUiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUJvb2xlYW4iLAogICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTmFtZWRUeXBlU3BlY2lmaWVyIgogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUJvb2xlYW4iLAogICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTmFtZWRUeXBlU3BlY2lmaWVyIgogICAgICAgICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICAgICAgICJvcGVyYW5kIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNjEiLAogICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTAwOjItMTAwOjM3IiwKICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIkNsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDEiLAogICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiRXhwcmVzc2lvblJlZiIKICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNjUiLAogICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTAxOjUtMTAxOjQwIiwKICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIkNsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDIiLAogICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiRXhwcmVzc2lvblJlZiIKICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjcwIiwKICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjEwMjo1LTEwMjo0MCIsCiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAzIiwKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkV4cHJlc3Npb25SZWYiCiAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICB9CiAgICAgICAgIH0sIHsKICAgICAgICAgICAgImxvY2FsSWQiIDogIjg5IiwKICAgICAgICAgICAgImxvY2F0b3IiIDogIjExMDoxLTExNTo5IiwKICAgICAgICAgICAgIm5hbWUiIDogIkNsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBHdWlkYW5jZSIsCiAgICAgICAgICAgICJjb250ZXh0IiA6ICJQYXRpZW50IiwKICAgICAgICAgICAgImFjY2Vzc0xldmVsIiA6ICJQdWJsaWMiLAogICAgICAgICAgICAiYW5ub3RhdGlvbiIgOiBbIHsKICAgICAgICAgICAgICAgInR5cGUiIDogIkFubm90YXRpb24iLAogICAgICAgICAgICAgICAicyIgOiB7CiAgICAgICAgICAgICAgICAgICJyIiA6ICI4OSIsCiAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiLypcbkBvdXRwdXQ6IENsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBHdWlkYW5jZVxuQGd1aWRhbmNlOiBDaGVjayBpZiBwcmV2aW91cyBhbmFwaHlsYWN0aWMgcmVhY3Rpb24gcmVmZXJzIHRvIGNvbXBvbmVudHMgb2YgdGhlIHZhY2NpbmUgKGUuZy4gbmVvbXljaW4gb3IgZ2VsYXRpbilcbkBndWlkYW5jZTogQ2hlY2sgaWYgcHJldmlvdXMgc2V2ZXJlIHJlYWN0aW9uIHJlZmVycyB0byBjb21wb25lbnRzIG9mIHRoZSB2YWNjaW5lIChlLmcuIG5lb215Y2luIG9yIGdlbGF0aW4pIFxuQGd1aWRhbmNlOiBWYWNjaW5hdGlvbiBtYXkgYmUgY29uc2lkZXJlZCBpZiB0aGUgY2xpZW50IGlzIG5vdCBzZXZlcmVseSBpbW11bm9zdXBwcmVzc2VkXG4qL1xuIiwiZGVmaW5lICIsIlwiQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIEd1aWRhbmNlXCIiLCI6XG5cdCIgXQogICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI4OCIsCiAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiQ29tYmluZSIsIiggIiBdCiAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjg2IiwKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJ7XG5cdFx0IiBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjc3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJpZiAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIlwiQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMVwiIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIgdGhlbiAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNzUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIidDaGVjayBpZiBwcmV2aW91cyBhbmFwaHlsYWN0aWMgcmVhY3Rpb24gcmVmZXJzIHRvIGNvbXBvbmVudHMgb2YgdGhlIHZhY2NpbmUgKGUuZy4gbmVvbXljaW4gb3IgZ2VsYXRpbiknIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIgZWxzZSAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNzYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIicnIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiLFxuXHRcdCIgXQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI4MSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiaWYgIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjc4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJcIkNsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDJcIiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiIHRoZW4gIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjc5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICInQ2hlY2sgaWYgcHJldmlvdXMgc2V2ZXJlIHJlYWN0aW9uIHJlZmVycyB0byBjb21wb25lbnRzIG9mIHRoZSB2YWNjaW5lIChlLmcuIG5lb215Y2luIG9yIGdlbGF0aW4pJyIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiIGVsc2UgIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjgwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICInJyIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIixcblx0XHQiIF0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiODUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgImlmICIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI4MiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiXCJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAzXCIiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIiB0aGVuICIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI4MyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiJ1ZhY2NpbmF0aW9uIG1heSBiZSBjb25zaWRlcmVkIGlmIHRoZSBjbGllbnQgaXMgbm90IHNldmVyZWx5IGltbXVub3N1cHByZXNzZWQnIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIgZWxzZSAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiODQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIicnIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiXG5cdH0iIF0KICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIiwgIiBdCiAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjg3IiwKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICInICciIF0KICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIiApIiBdCiAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjg4IiwKICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjExMToyLTExNTo5IiwKICAgICAgICAgICAgICAgInR5cGUiIDogIkNvbWJpbmUiLAogICAgICAgICAgICAgICAic2lnbmF0dXJlIiA6IFsgewogICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTGlzdFR5cGVTcGVjaWZpZXIiLAogICAgICAgICAgICAgICAgICAiZWxlbWVudFR5cGUiIDogewogICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLAogICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTmFtZWRUeXBlU3BlY2lmaWVyIgogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIKICAgICAgICAgICAgICAgfSBdLAogICAgICAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjg2IiwKICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjExMToxMS0xMTU6MiIsCiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJMaXN0IiwKICAgICAgICAgICAgICAgICAgImVsZW1lbnQiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICI3NyIsCiAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxMTI6My0xMTI6MTU5IiwKICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIklmIiwKICAgICAgICAgICAgICAgICAgICAgImNvbmRpdGlvbiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICI3NCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxMTI6Ni0xMTI6NDEiLAogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIENhc2UgMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJFeHByZXNzaW9uUmVmIgogICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAidGhlbiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICI3NSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxMTI6NDgtMTEyOjE1MSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZVR5cGUiIDogInt1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6ICJDaGVjayBpZiBwcmV2aW91cyBhbmFwaHlsYWN0aWMgcmVhY3Rpb24gcmVmZXJzIHRvIGNvbXBvbmVudHMgb2YgdGhlIHZhY2NpbmUgKGUuZy4gbmVvbXljaW4gb3IgZ2VsYXRpbikiLAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiTGl0ZXJhbCIKICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgImVsc2UiIDogewogICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNzYiLAogICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTEyOjE1OC0xMTI6MTU5IiwKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlVHlwZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJMaXRlcmFsIgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjgxIiwKICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjExMzozLTExMzoxNTMiLAogICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiSWYiLAogICAgICAgICAgICAgICAgICAgICAiY29uZGl0aW9uIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjc4IiwKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjExMzo2LTExMzo0MSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQgQ2FzZSAyIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkV4cHJlc3Npb25SZWYiCiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICJ0aGVuIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjc5IiwKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjExMzo0OC0xMTM6MTQ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlVHlwZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogIkNoZWNrIGlmIHByZXZpb3VzIHNldmVyZSByZWFjdGlvbiByZWZlcnMgdG8gY29tcG9uZW50cyBvZiB0aGUgdmFjY2luZSAoZS5nLiBuZW9teWNpbiBvciBnZWxhdGluKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJMaXRlcmFsIgogICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAiZWxzZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICI4MCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxMTM6MTUyLTExMzoxNTMiLAogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVUeXBlIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkxpdGVyYWwiCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiODUiLAogICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTE0OjMtMTE0OjEzMyIsCiAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJJZiIsCiAgICAgICAgICAgICAgICAgICAgICJjb25kaXRpb24iIDogewogICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiODIiLAogICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTE0OjYtMTE0OjQxIiwKICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIkNsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBDYXNlIDMiLAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiRXhwcmVzc2lvblJlZiIKICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgInRoZW4iIDogewogICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiODMiLAogICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTE0OjQ4LTExNDoxMjUiLAogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVUeXBlIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiVmFjY2luYXRpb24gbWF5IGJlIGNvbnNpZGVyZWQgaWYgdGhlIGNsaWVudCBpcyBub3Qgc2V2ZXJlbHkgaW1tdW5vc3VwcHJlc3NlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJMaXRlcmFsIgogICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAiZWxzZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICI4NCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIxMTQ6MTMyLTExNDoxMzMiLAogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVUeXBlIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkxpdGVyYWwiCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICJzZXBhcmF0b3IiIDogewogICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiODciLAogICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMTE1OjUtMTE1OjciLAogICAgICAgICAgICAgICAgICAidmFsdWVUeXBlIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsCiAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiICIsCiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJMaXRlcmFsIgogICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgfSwgewogICAgICAgICAgICAibG9jYWxJZCIgOiAiOTYiLAogICAgICAgICAgICAibG9jYXRvciIgOiAiMzY6MS00MDo5IiwKICAgICAgICAgICAgIm5hbWUiIDogIkd1aWRhbmNlIiwKICAgICAgICAgICAgImNvbnRleHQiIDogIlBhdGllbnQiLAogICAgICAgICAgICAiYWNjZXNzTGV2ZWwiIDogIlB1YmxpYyIsCiAgICAgICAgICAgICJhbm5vdGF0aW9uIiA6IFsgewogICAgICAgICAgICAgICAidHlwZSIgOiAiQW5ub3RhdGlvbiIsCiAgICAgICAgICAgICAgICJzIiA6IHsKICAgICAgICAgICAgICAgICAgInIiIDogIjk2IiwKICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIvKlxuQGR5bmFtaWNWYWx1ZTogR3VpZGFuY2VcbiovXG4iLCJkZWZpbmUgIiwiXCJHdWlkYW5jZVwiIiwiOlxuXHQiIF0KICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAiciIgOiAiOTUiLAogICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIkNvbWJpbmUiLCIoICIgXQogICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI5MyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAieyBcblx0XHQiIF0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNTciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgImlmICIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI0MiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiXCJNZWFzbGVzIHZhY2NpbmF0aW9uIGNvbnRyYWluZGljYXRlZFwiIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIgdGhlbiAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiNTUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIlwiTWVhc2xlcyB2YWNjaW5hdGlvbiBjb250cmFpbmRpY2F0ZWQgR3VpZGFuY2VcIiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiIGVsc2UgIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjU2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICInJyIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIixcblx0XHQiIF0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiOTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgImlmICIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiA6ICI3MyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzIiA6IFsgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiXCJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWRcIiIgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiIHRoZW4gIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjkwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICJcIkNsaW5pY2FsIGp1ZGdlbWVudCByZXF1aXJlZCBHdWlkYW5jZVwiIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICIgZWxzZSAiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiciIgOiAiOTEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIicnIiBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogWyAiXG5cdH0iIF0KICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIiwgIiBdCiAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgInIiIDogIjk0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInMiIDogWyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiBbICInICciIF0KICAgICAgICAgICAgICAgICAgICAgICAgfSBdCiAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiA6IFsgIiApIiBdCiAgICAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICAgICB9IF0KICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IF0sCiAgICAgICAgICAgICJleHByZXNzaW9uIiA6IHsKICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjk1IiwKICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjM3OjItNDA6OSIsCiAgICAgICAgICAgICAgICJ0eXBlIiA6ICJDb21iaW5lIiwKICAgICAgICAgICAgICAgInNpZ25hdHVyZSIgOiBbIHsKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkxpc3RUeXBlU3BlY2lmaWVyIiwKICAgICAgICAgICAgICAgICAgImVsZW1lbnRUeXBlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInt1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIk5hbWVkVHlwZVNwZWNpZmllciIKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsCiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJOYW1lZFR5cGVTcGVjaWZpZXIiCiAgICAgICAgICAgICAgIH0gXSwKICAgICAgICAgICAgICAgInNvdXJjZSIgOiB7CiAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICI5MyIsCiAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIzNzoxMS00MDoyIiwKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkxpc3QiLAogICAgICAgICAgICAgICAgICAiZWxlbWVudCIgOiBbIHsKICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjU3IiwKICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjM4OjMtMzg6MTAyIiwKICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIklmIiwKICAgICAgICAgICAgICAgICAgICAgImNvbmRpdGlvbiIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhbElkIiA6ICI0MiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhdG9yIiA6ICIzODo2LTM4OjQyIiwKICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIk1lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkV4cHJlc3Npb25SZWYiCiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICJ0aGVuIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjU1IiwKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjM4OjQ5LTM4Ojk0IiwKICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIk1lYXNsZXMgdmFjY2luYXRpb24gY29udHJhaW5kaWNhdGVkIEd1aWRhbmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkV4cHJlc3Npb25SZWYiCiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICJlbHNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjU2IiwKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjM4OjEwMS0zODoxMDIiLAogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVUeXBlIiA6ICJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkxpdGVyYWwiCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiOTIiLAogICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMzk6My0zOTo4NiIsCiAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJJZiIsCiAgICAgICAgICAgICAgICAgICAgICJjb25kaXRpb24iIDogewogICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiNzMiLAogICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMzk6Ni0zOTozNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJDbGluaWNhbCBqdWRnZW1lbnQgcmVxdWlyZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiRXhwcmVzc2lvblJlZiIKICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgInRoZW4iIDogewogICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxJZCIgOiAiOTAiLAogICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRvciIgOiAiMzk6NDEtMzk6NzgiLAogICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIgOiAiQ2xpbmljYWwganVkZ2VtZW50IHJlcXVpcmVkIEd1aWRhbmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkV4cHJlc3Npb25SZWYiCiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICJlbHNlIiA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjkxIiwKICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjM5Ojg1LTM5Ojg2IiwKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlVHlwZSIgOiAie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiIDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJMaXRlcmFsIgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0gXQogICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAic2VwYXJhdG9yIiA6IHsKICAgICAgICAgICAgICAgICAgImxvY2FsSWQiIDogIjk0IiwKICAgICAgICAgICAgICAgICAgImxvY2F0b3IiIDogIjQwOjUtNDA6NyIsCiAgICAgICAgICAgICAgICAgICJ2YWx1ZVR5cGUiIDogInt1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwKICAgICAgICAgICAgICAgICAgInZhbHVlIiA6ICIgIiwKICAgICAgICAgICAgICAgICAgInR5cGUiIDogIkxpdGVyYWwiCiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICB9IF0KICAgICAgfQogICB9Cn0="
}
]
} |
@jingtang10 I have updated the JSON versions of the 2 files |
test is still working fine if we install and try to load the resource with same name. @Test
fun `check same name resources conflicts`() = runTest {
val npmPackage = FhirNpmPackage("measles", "0.1.0")
val root = File(javaClass.getResource("/measles")!!.file)
knowledgeManager.install(npmPackage, root)
assertThat(knowledgeManager.loadResources(resourceType = "Library", name = "IMMZD2DTMeaslesDose0").first()).isInstanceOf(Library::class.java)
assertThat(knowledgeManager.loadResources(resourceType = "PlanDefinition", name = "IMMZD2DTMeaslesDose0").first()).isInstanceOf(PlanDefinition::class.java)
} cc: @ndegwamartin |
As per our discussions on the smart guidelines call, and as per this discussion https://chat.fhir.org/#narrow/stream/310477-who-smart-guidelines/topic/Library.20and.20PD.20with.20the.20same.20name, I think we're saying that we should not try to resolve resources by id or name. Instead, knowlege resources always be resolved by canonical url with an optional version. @dubdabasoduba we discussed this on chat and he thinks this is ok. I think what this means is that I'll refactor the KM API and this ticket will be subsequently obsolete/resolved. Is this ok with everyone? |
For completeness, I've done some investigations around this, it appears that the issue had to do with the way we were writing the physical files to the device (Also explains why it was not reproducible in the unit tests which was using a different datastore). To illustrate see the screenshot below, taken before the fix when I do a search by name on the knowledge DB: Notice that it returns the two different resource types The query executed by the KnowledgeDao's @Query("SELECT * from ResourceMetadataEntity WHERE resourceType = :resourceType AND url = :url")
internal abstract suspend fun getResourceWithUrl( Inline with previous conversation above and the CRMI documentation here about the uniqueness of names within a canonical base and resource type we've saved the physical resource files grouped within directories corresponding to the resource type . So performing the same query above we now get this. This issue should now be resolved on our end. Recommendation Here's a snippet of the fix, the API could look like: fun writeToFile(resource: Resource): File {
val fileName =
if (resource is MetadataResource && resource.name != null) {
resource.name
} else {
resource.idElement.idPart
}
return File(context.filesDir, "${resource.resourceType}/${fileName}.json").apply {
this.parentFile?.mkdirs()
writeText(jsonParser.encodeResourceToString(resource))
}
}
Perhaps it could be further wrapped into an API that combines both install and writeToFile e.g. |
Thanks for the investigation @ndegwamartin! Actually #2634 ameliorates the problem by making it very explict that the index function does not copy files any more. And agreed with you - we should introduce an |
Describe the bug
@jingtang10 @MJ1998 @aditya-07 QQ, is my assumption that Knowledge Manager searches for resources using the URLs right? If yes, I think we have a bug where it is searching by name.
We have a situation where a Library and PlanDefinition have the same name.
If the KM fetches the resource by the name it ends up with 2 results and always picks the first item.
https://github.com/WorldHealthOrganization/smart-immunizations/blob/cleanup/input/fsh/plandefinitions/IMMZD5DTMeasles.fsh and https://github.com/WorldHealthOrganization/smart-immunizations/blob/cleanup/input/cql/IMMZD5DTMeasles.cql will end up having the same "name"
The text was updated successfully, but these errors were encountered: