Draft dQM CMS Content Implementation Guide
2025.1.0 - CI Build
Draft dQM CMS Content Implementation Guide, published by cqframework. This guide is not an authorized publication; it is the continuous build for version 2025.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/cqframework/dqm-content-cms-2025/ and changes regularly. See the Directory of published versions
| Draft as of 2026-09-19 |
{
"resourceType" : "Library",
"id" : "CMSFHIR844HybridHospitalWideMortality",
"text" : {
"status" : "extensions",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n <table class=\"narrative-table\">\n <tbody>\n<tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\"><a name=\"metadata\"> </a>Metadata</th>\n\n\n</tr>\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Version</th>\n\n\n\n<td class=\"content-container\">0.6.001</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Status</th>\n\n\n\n<td class=\"content-container\">Draft</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Type</th>\n\n\n\n<td class=\"content-container\">\n <a href=\"http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html\">http://terminology.hl7.org/CodeSystem/library-type</a>#logic-library\n\n\n</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\"><a name=\"parameters\"> </a>Parameters</th>\n\n\n</tr>\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Parameter</th>\n\n\n\n<td class=\"content-container\">None</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n <tr>\n\n\n<th colspan=\"2\" scope=\"row\" class=\"row-header\">Library Content</th>\n\n\n</tr>\n \n \n <tr>\n <th scope=\"row\" class=\"row-header\">CQL Content</th>\n <td>\n <a name=\"cql-content\"> </a>\n <pre style=\"border: none;\" class=\"content-container highlight language-cql\"><code class=\"language-cql\">/*\nNOTE: For use by March 2026 US Realm Connectathon participants for internal use only. Not for use or distribution in commercial products.\n*/\nlibrary CMSFHIR844HybridHospitalWideMortality version '0.6.001'\n\nusing USQualityCore version '0.1.0-cibuild'\nusing USCore version '6.1.0-derived'\nusing FHIR version '4.0.1'\n\ninclude hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' called FHIRHelpers\ninclude hl7.fhir.uv.cql.FHIRCommon version '2.0.0' called FHIRCommon\ninclude hl7.fhir.us.cql.USCoreCommon version '2.0.0-ballot' called USCoreCommon\ninclude hl7.fhir.us.cql.USCoreElements version '2.0.0-ballot' called USCoreElements\n\ninclude CQMCommon version '5.1.000' called CQMCommon\ninclude USQualityCoreCommon version '0.1.0-cibuild' called USQualityCoreCommon\ninclude SupplementalDataElements version '6.1.000' called SDE\ninclude Status version '2.1.000' called Status\n\ncodesystem "LOINC": 'http://loinc.org'\n\nvalueset "Bicarbonate lab test": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.139'\nvalueset "Creatinine lab test": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.2363'\nvalueset "Emergency Department Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292'\nvalueset "Encounter Inpatient": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'\nvalueset "Hematocrit lab test": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.114'\nvalueset "Medicare Advantage payer": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1104.12'\nvalueset "Medicare FFS payer": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1104.10'\nvalueset "Non Invasive Oxygen Therapy by Nasal Cannula or Mask": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1248.209'\nvalueset "Non Invasive Oxygen Therapy Device Codes": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.57'\nvalueset "Oxygen Saturation by Pulse Oximetry": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.151'\nvalueset "Platelet count lab test": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.127'\nvalueset "Sodium lab test": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.119'\nvalueset "White blood cells count lab test": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.129'\n\ncode "Systolic blood pressure": '8480-6' from "LOINC" display 'Systolic BP'\n\nparameter "Measurement Period" Interval<DateTime>\n default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)\n\ncontext Patient\n\ndefine "Initial Population":\n "Inpatient Encounters"\n\ndefine "Inpatient Encounters":\n [Encounter: "Encounter Inpatient"] EncounterInpatient\n with ( [Coverage: "Medicare FFS payer"]\n union [Coverage: "Medicare Advantage payer"] ) MedicarePayer\n such that ( EncounterInpatient.hospitalizationWithObservationAndOutpatientSurgeryService ( ).lengthInDays ( ) ) < 365\n and EncounterInpatient.status = 'finished'\n and AgeInYearsAt(date from start of EncounterInpatient.period) in Interval[65, 94]\n and EncounterInpatient.period ends during day of "Measurement Period"\n\ndefine "SDE Encounter With First Body Temperature":\n "Inpatient Encounters" EncounterInpatient\n let FirstTemperature: First([USCore.BodyTemperatureProfile] Temperature\n where Temperature.effective.earliest() during EncounterInpatient.hospitalizationWithObservationAndOutpatientSurgeryService()\n and Temperature.status in { 'final', 'amended', 'corrected' }\n and Temperature.value is not null\n sort by effective.earliest()\n )\n return {\n EncounterId: EncounterInpatient.id,\n FirstTemperatureResult: FirstTemperature.value as Quantity,\n Timing: FirstTemperature.effective.earliest ( )\n }\n\ndefine "SDE Encounter With First Heart Rate":\n "Inpatient Encounters" EncounterInpatient\n let FirstHeartRate: First([USCore.HeartRateProfile] HeartRate\n where HeartRate.effective.earliest() during EncounterInpatient.hospitalizationWithObservationAndOutpatientSurgeryService()\n and HeartRate.status in { 'final', 'amended', 'corrected' }\n and HeartRate.value is not null\n sort by effective.earliest()\n )\n return {\n EncounterId: EncounterInpatient.id,\n FirstHeartRateResult: FirstHeartRate.value as Quantity,\n Timing: FirstHeartRate.effective.earliest ( )\n }\n\ndefine "SDE Encounter With First Oxygen Saturation":\n "Inpatient Encounters" EncounterInpatient\n let FirstOxygenSat: First(["USCore.PulseOximetryProfile": "Oxygen Saturation by Pulse Oximetry"] O2Saturation\n where O2Saturation.effective.earliest() during EncounterInpatient.hospitalizationWithObservationAndOutpatientSurgeryService()\n and O2Saturation.status in { 'final', 'amended', 'corrected' }\n and O2Saturation.value is not null\n sort by effective.earliest()\n )\n return {\n EncounterId: EncounterInpatient.id,\n FirstOxygenSatResult: FirstOxygenSat.value as Quantity,\n Timing: FirstOxygenSat.effective.earliest ( )\n }\n\ndefine "SDE Encounter With First Systolic Blood Pressure":\n "Inpatient Encounters" EncounterInpatient\n let FirstSystolicBP: First(["USCore.BloodPressureProfile"] BP\n where BP.effective.earliest() during EncounterInpatient.hospitalizationWithObservationAndOutpatientSurgeryService()\n and BP.status in { 'final', 'amended', 'corrected' }\n and BP.component.value is not null\n sort by effective.earliest()\n )\n return {\n EncounterId: EncounterInpatient.id,\n FirstSBPResult: FirstSystolicBP.component C\n where C.code ~ "Systolic blood pressure"\n return C.value as Quantity,\n Timing: FirstSystolicBP.effective.earliest ( )\n }\n\ndefine "SDE Encounter With First Bicarbonate Lab Test":\n "Inpatient Encounters" EncounterInpatient\n let FirstBicarbonateLab: First(["LaboratoryResultObservation": "Bicarbonate lab test"] BicarbonateLab\n where BicarbonateLab.effective.earliest() during EncounterInpatient.hospitalizationWithObservationAndOutpatientSurgeryService()\n and BicarbonateLab.status in { 'final', 'amended', 'corrected' }\n and BicarbonateLab.value is not null\n sort by effective.earliest()\n )\n return {\n EncounterId: EncounterInpatient.id,\n FirstBicarbonateResult: FirstBicarbonateLab.value as Quantity,\n Timing: FirstBicarbonateLab.issued\n }\n\ndefine "SDE Encounter With First Creatinine Lab Test":\n "Inpatient Encounters" EncounterInpatient\n let FirstCreatinineLab: First(["LaboratoryResultObservation": "Creatinine lab test"] CreatinineLab\n where CreatinineLab.effective.earliest() during EncounterInpatient.hospitalizationWithObservationAndOutpatientSurgeryService()\n and CreatinineLab.status in { 'final', 'amended', 'corrected' }\n and CreatinineLab.value is not null\n sort by effective.earliest()\n )\n return {\n EncounterId: EncounterInpatient.id,\n FirstCreatinineResult: FirstCreatinineLab.value as Quantity,\n Timing: FirstCreatinineLab.issued\n }\n\ndefine "SDE Encounter With First Hematocrit Lab Test":\n "Inpatient Encounters" EncounterInpatient\n let FirstHematocritLab: First(["LaboratoryResultObservation": "Hematocrit lab test"] HematocritLab\n where HematocritLab.effective.earliest() during EncounterInpatient.hospitalizationWithObservationAndOutpatientSurgeryService()\n and HematocritLab.status in { 'final', 'amended', 'corrected' }\n and HematocritLab.value is not null\n sort by effective.earliest()\n )\n return {\n EncounterId: EncounterInpatient.id,\n FirstHematocritResult: FirstHematocritLab.value as Quantity,\n Timing: FirstHematocritLab.issued\n }\n\ndefine "SDE Encounter With First Platelet Lab Test":\n "Inpatient Encounters" EncounterInpatient\n let FirstPlateletLab: First(["LaboratoryResultObservation": "Platelet count lab test"] PlateletLab\n where PlateletLab.effective.earliest() during EncounterInpatient.hospitalizationWithObservationAndOutpatientSurgeryService()\n and PlateletLab.status in { 'final', 'amended', 'corrected' }\n and PlateletLab.value is not null\n sort by effective.earliest()\n )\n return {\n EncounterId: EncounterInpatient.id,\n FirstPlateletResult: FirstPlateletLab.value as Quantity,\n Timing: FirstPlateletLab.issued\n }\n\ndefine "SDE Encounter With First Sodium Lab Test":\n "Inpatient Encounters" EncounterInpatient\n let FirstSodiumLab: First(["LaboratoryResultObservation": "Sodium lab test"] SodiumLab\n where SodiumLab.effective.earliest() during EncounterInpatient.hospitalizationWithObservationAndOutpatientSurgeryService()\n and SodiumLab.status in { 'final', 'amended', 'corrected' }\n and SodiumLab.value is not null\n sort by effective.earliest()\n )\n return {\n EncounterId: EncounterInpatient.id,\n FirstSodiumResult: FirstSodiumLab.value as Quantity,\n Timing: FirstSodiumLab.issued\n }\n\ndefine "SDE Encounter With First White Blood Cells Lab Test":\n "Inpatient Encounters" EncounterInpatient\n let FirstWhiteBloodCellLab: First(["LaboratoryResultObservation": "White blood cells count lab test"] WhiteBloodCellLab\n where WhiteBloodCellLab.effective.earliest() during EncounterInpatient.hospitalizationWithObservationAndOutpatientSurgeryService()\n and WhiteBloodCellLab.status in { 'final', 'amended', 'corrected' }\n and WhiteBloodCellLab.value is not null\n sort by effective.earliest()\n )\n return {\n EncounterId: EncounterInpatient.id,\n FirstWhiteBloodCellResult: FirstWhiteBloodCellLab.value as Quantity,\n Timing: FirstWhiteBloodCellLab.issued\n }\n\ndefine "SDE Encounter With Oxygen 60 Minutes Or Less Prior To ED Admission Or During ED":\n "Initial Population" EncounterInpatient\n where exists ( ( [ServiceRequest: "Non Invasive Oxygen Therapy by Nasal Cannula or Mask"]\n union [ServiceRequest: "Non Invasive Oxygen Therapy Device Codes"] ) OxygenTherapyOrder\n where ( OxygenTherapyOrder.authoredOn during EncounterInpatient.edVisit ( ).period\n or OxygenTherapyOrder.authoredOn 60 minutes or less before or on start of EncounterInpatient.edVisit ( ).period\n )\n and OxygenTherapyOrder.status in { 'active', 'completed' }\n and OxygenTherapyOrder.intent = 'order'\n return {\n EncounterId: EncounterInpatient.id,\n OrderStatus: OxygenTherapyOrder.status,\n OrderTiming: OxygenTherapyOrder.authoredOn\n }\n )\n or exists ( [Procedure: "Non Invasive Oxygen Therapy by Nasal Cannula or Mask"] OxygenAdminInterv\n where ( OxygenAdminInterv.performed.toInterval ( ) starts during EncounterInpatient.edVisit ( ).period\n or OxygenAdminInterv.performed.toInterval ( ) 60 minutes or less before or on start of EncounterInpatient.edVisit ( ).period\n )\n and OxygenAdminInterv.status = 'completed'\n return {\n EncounterId: EncounterInpatient.id,\n EDEncounterTiming: EncounterInpatient.edVisit ( ).period,\n PerformedStatus: OxygenAdminInterv.status,\n PerformedTiming: OxygenAdminInterv.performed.toInterval ( )\n }\n )\n\ndefine "SDE Ethnicity":\n SDE."SDE Ethnicity"\n\ndefine "SDE Payer":\n SDE."SDE Payer"\n\ndefine "SDE Race":\n SDE."SDE Race"\n\ndefine "SDE Sex":\n SDE."SDE Sex"</code></pre>\n </td>\n </tr>\n \n \n\n\n\n<tr>\n <th colspan=\"2\" scope=\"row\" class=\"row-header\">Generated using version 0.5.6 of the sample-content-ig Liquid templates</th>\n</tr>\n\n </tbody>\n </table>\n</div>"
},
"extension" : [
{
"url" : "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-softwaresystem",
"valueReference" : {
"reference" : "Device/cqf-tooling"
}
}
],
"url" : "https://madie.cms.gov/Library/CMSFHIR844HybridHospitalWideMortality",
"version" : "0.6.001",
"name" : "CMSFHIR844HybridHospitalWideMortality",
"status" : "draft",
"type" : {
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/library-type",
"code" : "logic-library"
}
]
},
"date" : "2026-09-19T16:31:14+00:00",
"content" : [
{
"contentType" : "text/cql",
"data" : "LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVNGSElSODQ0SHlicmlkSG9zcGl0YWxXaWRlTW9ydGFsaXR5IHZlcnNpb24gJzAuNi4wMDEnCgp1c2luZyBVU1F1YWxpdHlDb3JlIHZlcnNpb24gJzAuMS4wLWNpYnVpbGQnCnVzaW5nIFVTQ29yZSB2ZXJzaW9uICc2LjEuMC1kZXJpdmVkJwp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBobDcuZmhpci51di5jcWwuRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnIGNhbGxlZCBGSElSSGVscGVycwppbmNsdWRlIGhsNy5maGlyLnV2LmNxbC5GSElSQ29tbW9uIHZlcnNpb24gJzIuMC4wJyBjYWxsZWQgRkhJUkNvbW1vbgppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5VU0NvcmVDb21tb24gdmVyc2lvbiAnMi4wLjAtYmFsbG90JyBjYWxsZWQgVVNDb3JlQ29tbW9uCmluY2x1ZGUgaGw3LmZoaXIudXMuY3FsLlVTQ29yZUVsZW1lbnRzIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIFVTQ29yZUVsZW1lbnRzCgppbmNsdWRlIENRTUNvbW1vbiB2ZXJzaW9uICc1LjEuMDAwJyBjYWxsZWQgQ1FNQ29tbW9uCmluY2x1ZGUgVVNRdWFsaXR5Q29yZUNvbW1vbiB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJyBjYWxsZWQgVVNRdWFsaXR5Q29yZUNvbW1vbgppbmNsdWRlIFN1cHBsZW1lbnRhbERhdGFFbGVtZW50cyB2ZXJzaW9uICc2LjEuMDAwJyBjYWxsZWQgU0RFCmluY2x1ZGUgU3RhdHVzIHZlcnNpb24gJzIuMS4wMDAnIGNhbGxlZCBTdGF0dXMKCmNvZGVzeXN0ZW0gIkxPSU5DIjogJ2h0dHA6Ly9sb2luYy5vcmcnCgp2YWx1ZXNldCAiQmljYXJib25hdGUgbGFiIHRlc3QiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ1LjEzOScKdmFsdWVzZXQgIkNyZWF0aW5pbmUgbGFiIHRlc3QiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNjY2LjUuMjM2MycKdmFsdWVzZXQgIkVtZXJnZW5jeSBEZXBhcnRtZW50IFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjExNy4xLjcuMS4yOTInCnZhbHVlc2V0ICJFbmNvdW50ZXIgSW5wYXRpZW50IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjY2Ni41LjMwNycKdmFsdWVzZXQgIkhlbWF0b2NyaXQgbGFiIHRlc3QiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ1LjExNCcKdmFsdWVzZXQgIk1lZGljYXJlIEFkdmFudGFnZSBwYXllciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExMDQuMTInCnZhbHVlc2V0ICJNZWRpY2FyZSBGRlMgcGF5ZXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTA0LjEwJwp2YWx1ZXNldCAiTm9uIEludmFzaXZlIE94eWdlbiBUaGVyYXB5IGJ5IE5hc2FsIENhbm51bGEgb3IgTWFzayI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEyNDguMjA5Jwp2YWx1ZXNldCAiTm9uIEludmFzaXZlIE94eWdlbiBUaGVyYXB5IERldmljZSBDb2RlcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExNzAuNTcnCnZhbHVlc2V0ICJPeHlnZW4gU2F0dXJhdGlvbiBieSBQdWxzZSBPeGltZXRyeSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwNDUuMTUxJwp2YWx1ZXNldCAiUGxhdGVsZXQgY291bnQgbGFiIHRlc3QiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ1LjEyNycKdmFsdWVzZXQgIlNvZGl1bSBsYWIgdGVzdCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwNDUuMTE5Jwp2YWx1ZXNldCAiV2hpdGUgYmxvb2QgY2VsbHMgY291bnQgbGFiIHRlc3QiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ1LjEyOScKCmNvZGUgIlN5c3RvbGljIGJsb29kIHByZXNzdXJlIjogJzg0ODAtNicgZnJvbSAiTE9JTkMiIGRpc3BsYXkgJ1N5c3RvbGljIEJQJwoKcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGVUaW1lPgogIGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjYtMDEtMDFUMDA6MDA6MDAuMDAwWiwgQDIwMjctMDEtMDFUMDA6MDA6MDAuMDAwWikKCmNvbnRleHQgUGF0aWVudAoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogICJJbnBhdGllbnQgRW5jb3VudGVycyIKCmRlZmluZSAiSW5wYXRpZW50IEVuY291bnRlcnMiOgogIFtFbmNvdW50ZXI6ICJFbmNvdW50ZXIgSW5wYXRpZW50Il0gRW5jb3VudGVySW5wYXRpZW50CiAgICB3aXRoICggW0NvdmVyYWdlOiAiTWVkaWNhcmUgRkZTIHBheWVyIl0KICAgICAgdW5pb24gW0NvdmVyYWdlOiAiTWVkaWNhcmUgQWR2YW50YWdlIHBheWVyIl0gKSBNZWRpY2FyZVBheWVyCiAgICAgIHN1Y2ggdGhhdCAoIEVuY291bnRlcklucGF0aWVudC5ob3NwaXRhbGl6YXRpb25XaXRoT2JzZXJ2YXRpb25BbmRPdXRwYXRpZW50U3VyZ2VyeVNlcnZpY2UgKCApLmxlbmd0aEluRGF5cyAoICkgKSA8IDM2NQogICAgICAgIGFuZCBFbmNvdW50ZXJJbnBhdGllbnQuc3RhdHVzID0gJ2ZpbmlzaGVkJwogICAgICAgIGFuZCBBZ2VJblllYXJzQXQoZGF0ZSBmcm9tIHN0YXJ0IG9mIEVuY291bnRlcklucGF0aWVudC5wZXJpb2QpIGluIEludGVydmFsWzY1LCA5NF0KICAgICAgICBhbmQgRW5jb3VudGVySW5wYXRpZW50LnBlcmlvZCBlbmRzIGR1cmluZyBkYXkgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKCmRlZmluZSAiU0RFIEVuY291bnRlciBXaXRoIEZpcnN0IEJvZHkgVGVtcGVyYXR1cmUiOgogICJJbnBhdGllbnQgRW5jb3VudGVycyIgRW5jb3VudGVySW5wYXRpZW50CiAgICBsZXQgRmlyc3RUZW1wZXJhdHVyZTogRmlyc3QoW1VTQ29yZS5Cb2R5VGVtcGVyYXR1cmVQcm9maWxlXSBUZW1wZXJhdHVyZQogICAgICAgIHdoZXJlIFRlbXBlcmF0dXJlLmVmZmVjdGl2ZS5lYXJsaWVzdCgpIGR1cmluZyBFbmNvdW50ZXJJbnBhdGllbnQuaG9zcGl0YWxpemF0aW9uV2l0aE9ic2VydmF0aW9uQW5kT3V0cGF0aWVudFN1cmdlcnlTZXJ2aWNlKCkKICAgICAgICAgIGFuZCBUZW1wZXJhdHVyZS5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICAgICAgICAgIGFuZCBUZW1wZXJhdHVyZS52YWx1ZSBpcyBub3QgbnVsbAogICAgICAgIHNvcnQgYnkgZWZmZWN0aXZlLmVhcmxpZXN0KCkKICAgICkKICAgIHJldHVybiB7CiAgICAgIEVuY291bnRlcklkOiBFbmNvdW50ZXJJbnBhdGllbnQuaWQsCiAgICAgIEZpcnN0VGVtcGVyYXR1cmVSZXN1bHQ6IEZpcnN0VGVtcGVyYXR1cmUudmFsdWUgYXMgUXVhbnRpdHksCiAgICAgIFRpbWluZzogRmlyc3RUZW1wZXJhdHVyZS5lZmZlY3RpdmUuZWFybGllc3QgKCApCiAgICB9CgpkZWZpbmUgIlNERSBFbmNvdW50ZXIgV2l0aCBGaXJzdCBIZWFydCBSYXRlIjoKICAiSW5wYXRpZW50IEVuY291bnRlcnMiIEVuY291bnRlcklucGF0aWVudAogICAgbGV0IEZpcnN0SGVhcnRSYXRlOiBGaXJzdChbVVNDb3JlLkhlYXJ0UmF0ZVByb2ZpbGVdIEhlYXJ0UmF0ZQogICAgICAgIHdoZXJlIEhlYXJ0UmF0ZS5lZmZlY3RpdmUuZWFybGllc3QoKSBkdXJpbmcgRW5jb3VudGVySW5wYXRpZW50Lmhvc3BpdGFsaXphdGlvbldpdGhPYnNlcnZhdGlvbkFuZE91dHBhdGllbnRTdXJnZXJ5U2VydmljZSgpCiAgICAgICAgICBhbmQgSGVhcnRSYXRlLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICAgICAgICAgYW5kIEhlYXJ0UmF0ZS52YWx1ZSBpcyBub3QgbnVsbAogICAgICAgIHNvcnQgYnkgZWZmZWN0aXZlLmVhcmxpZXN0KCkKICAgICkKICAgIHJldHVybiB7CiAgICAgIEVuY291bnRlcklkOiBFbmNvdW50ZXJJbnBhdGllbnQuaWQsCiAgICAgIEZpcnN0SGVhcnRSYXRlUmVzdWx0OiBGaXJzdEhlYXJ0UmF0ZS52YWx1ZSBhcyBRdWFudGl0eSwKICAgICAgVGltaW5nOiBGaXJzdEhlYXJ0UmF0ZS5lZmZlY3RpdmUuZWFybGllc3QgKCApCiAgICB9CgpkZWZpbmUgIlNERSBFbmNvdW50ZXIgV2l0aCBGaXJzdCBPeHlnZW4gU2F0dXJhdGlvbiI6CiAgIklucGF0aWVudCBFbmNvdW50ZXJzIiBFbmNvdW50ZXJJbnBhdGllbnQKICAgIGxldCBGaXJzdE94eWdlblNhdDogRmlyc3QoWyJVU0NvcmUuUHVsc2VPeGltZXRyeVByb2ZpbGUiOiAiT3h5Z2VuIFNhdHVyYXRpb24gYnkgUHVsc2UgT3hpbWV0cnkiXSBPMlNhdHVyYXRpb24KICAgICAgICB3aGVyZSBPMlNhdHVyYXRpb24uZWZmZWN0aXZlLmVhcmxpZXN0KCkgZHVyaW5nIEVuY291bnRlcklucGF0aWVudC5ob3NwaXRhbGl6YXRpb25XaXRoT2JzZXJ2YXRpb25BbmRPdXRwYXRpZW50U3VyZ2VyeVNlcnZpY2UoKQogICAgICAgICAgYW5kIE8yU2F0dXJhdGlvbi5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICAgICAgICAgIGFuZCBPMlNhdHVyYXRpb24udmFsdWUgaXMgbm90IG51bGwKICAgICAgICBzb3J0IGJ5IGVmZmVjdGl2ZS5lYXJsaWVzdCgpCiAgICApCiAgICByZXR1cm4gewogICAgICBFbmNvdW50ZXJJZDogRW5jb3VudGVySW5wYXRpZW50LmlkLAogICAgICBGaXJzdE94eWdlblNhdFJlc3VsdDogRmlyc3RPeHlnZW5TYXQudmFsdWUgYXMgUXVhbnRpdHksCiAgICAgIFRpbWluZzogRmlyc3RPeHlnZW5TYXQuZWZmZWN0aXZlLmVhcmxpZXN0ICggKQogICAgfQoKZGVmaW5lICJTREUgRW5jb3VudGVyIFdpdGggRmlyc3QgU3lzdG9saWMgQmxvb2QgUHJlc3N1cmUiOgogICJJbnBhdGllbnQgRW5jb3VudGVycyIgRW5jb3VudGVySW5wYXRpZW50CiAgICBsZXQgRmlyc3RTeXN0b2xpY0JQOiBGaXJzdChbIlVTQ29yZS5CbG9vZFByZXNzdXJlUHJvZmlsZSJdIEJQCiAgICAgICAgd2hlcmUgQlAuZWZmZWN0aXZlLmVhcmxpZXN0KCkgZHVyaW5nIEVuY291bnRlcklucGF0aWVudC5ob3NwaXRhbGl6YXRpb25XaXRoT2JzZXJ2YXRpb25BbmRPdXRwYXRpZW50U3VyZ2VyeVNlcnZpY2UoKQogICAgICAgICAgYW5kIEJQLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICAgICAgICAgYW5kIEJQLmNvbXBvbmVudC52YWx1ZSBpcyBub3QgbnVsbAogICAgICAgIHNvcnQgYnkgZWZmZWN0aXZlLmVhcmxpZXN0KCkKICAgICkKICAgIHJldHVybiB7CiAgICAgIEVuY291bnRlcklkOiBFbmNvdW50ZXJJbnBhdGllbnQuaWQsCiAgICAgIEZpcnN0U0JQUmVzdWx0OiBGaXJzdFN5c3RvbGljQlAuY29tcG9uZW50IEMKICAgICAgICB3aGVyZSBDLmNvZGUgfiAiU3lzdG9saWMgYmxvb2QgcHJlc3N1cmUiCiAgICAgICAgcmV0dXJuIEMudmFsdWUgYXMgUXVhbnRpdHksCiAgICAgIFRpbWluZzogRmlyc3RTeXN0b2xpY0JQLmVmZmVjdGl2ZS5lYXJsaWVzdCAoICkKICAgIH0KCmRlZmluZSAiU0RFIEVuY291bnRlciBXaXRoIEZpcnN0IEJpY2FyYm9uYXRlIExhYiBUZXN0IjoKICAiSW5wYXRpZW50IEVuY291bnRlcnMiIEVuY291bnRlcklucGF0aWVudAogICAgbGV0IEZpcnN0QmljYXJib25hdGVMYWI6IEZpcnN0KFsiTGFib3JhdG9yeVJlc3VsdE9ic2VydmF0aW9uIjogIkJpY2FyYm9uYXRlIGxhYiB0ZXN0Il0gQmljYXJib25hdGVMYWIKICAgICAgICB3aGVyZSBCaWNhcmJvbmF0ZUxhYi5lZmZlY3RpdmUuZWFybGllc3QoKSBkdXJpbmcgRW5jb3VudGVySW5wYXRpZW50Lmhvc3BpdGFsaXphdGlvbldpdGhPYnNlcnZhdGlvbkFuZE91dHBhdGllbnRTdXJnZXJ5U2VydmljZSgpCiAgICAgICAgICBhbmQgQmljYXJib25hdGVMYWIuc3RhdHVzIGluIHsgJ2ZpbmFsJywgJ2FtZW5kZWQnLCAnY29ycmVjdGVkJyB9CiAgICAgICAgICBhbmQgQmljYXJib25hdGVMYWIudmFsdWUgaXMgbm90IG51bGwKICAgICAgICBzb3J0IGJ5IGVmZmVjdGl2ZS5lYXJsaWVzdCgpCiAgICApCiAgICByZXR1cm4gewogICAgICBFbmNvdW50ZXJJZDogRW5jb3VudGVySW5wYXRpZW50LmlkLAogICAgICBGaXJzdEJpY2FyYm9uYXRlUmVzdWx0OiBGaXJzdEJpY2FyYm9uYXRlTGFiLnZhbHVlIGFzIFF1YW50aXR5LAogICAgICBUaW1pbmc6IEZpcnN0QmljYXJib25hdGVMYWIuaXNzdWVkCiAgICB9CgpkZWZpbmUgIlNERSBFbmNvdW50ZXIgV2l0aCBGaXJzdCBDcmVhdGluaW5lIExhYiBUZXN0IjoKICAiSW5wYXRpZW50IEVuY291bnRlcnMiIEVuY291bnRlcklucGF0aWVudAogICAgbGV0IEZpcnN0Q3JlYXRpbmluZUxhYjogRmlyc3QoWyJMYWJvcmF0b3J5UmVzdWx0T2JzZXJ2YXRpb24iOiAiQ3JlYXRpbmluZSBsYWIgdGVzdCJdIENyZWF0aW5pbmVMYWIKICAgICAgICB3aGVyZSBDcmVhdGluaW5lTGFiLmVmZmVjdGl2ZS5lYXJsaWVzdCgpIGR1cmluZyBFbmNvdW50ZXJJbnBhdGllbnQuaG9zcGl0YWxpemF0aW9uV2l0aE9ic2VydmF0aW9uQW5kT3V0cGF0aWVudFN1cmdlcnlTZXJ2aWNlKCkKICAgICAgICAgIGFuZCBDcmVhdGluaW5lTGFiLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICAgICAgICAgYW5kIENyZWF0aW5pbmVMYWIudmFsdWUgaXMgbm90IG51bGwKICAgICAgICBzb3J0IGJ5IGVmZmVjdGl2ZS5lYXJsaWVzdCgpCiAgICApCiAgICByZXR1cm4gewogICAgICBFbmNvdW50ZXJJZDogRW5jb3VudGVySW5wYXRpZW50LmlkLAogICAgICBGaXJzdENyZWF0aW5pbmVSZXN1bHQ6IEZpcnN0Q3JlYXRpbmluZUxhYi52YWx1ZSBhcyBRdWFudGl0eSwKICAgICAgVGltaW5nOiBGaXJzdENyZWF0aW5pbmVMYWIuaXNzdWVkCiAgICB9CgpkZWZpbmUgIlNERSBFbmNvdW50ZXIgV2l0aCBGaXJzdCBIZW1hdG9jcml0IExhYiBUZXN0IjoKICAiSW5wYXRpZW50IEVuY291bnRlcnMiIEVuY291bnRlcklucGF0aWVudAogICAgbGV0IEZpcnN0SGVtYXRvY3JpdExhYjogRmlyc3QoWyJMYWJvcmF0b3J5UmVzdWx0T2JzZXJ2YXRpb24iOiAiSGVtYXRvY3JpdCBsYWIgdGVzdCJdIEhlbWF0b2NyaXRMYWIKICAgICAgICB3aGVyZSBIZW1hdG9jcml0TGFiLmVmZmVjdGl2ZS5lYXJsaWVzdCgpIGR1cmluZyBFbmNvdW50ZXJJbnBhdGllbnQuaG9zcGl0YWxpemF0aW9uV2l0aE9ic2VydmF0aW9uQW5kT3V0cGF0aWVudFN1cmdlcnlTZXJ2aWNlKCkKICAgICAgICAgIGFuZCBIZW1hdG9jcml0TGFiLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICAgICAgICAgYW5kIEhlbWF0b2NyaXRMYWIudmFsdWUgaXMgbm90IG51bGwKICAgICAgICBzb3J0IGJ5IGVmZmVjdGl2ZS5lYXJsaWVzdCgpCiAgICApCiAgICByZXR1cm4gewogICAgICBFbmNvdW50ZXJJZDogRW5jb3VudGVySW5wYXRpZW50LmlkLAogICAgICBGaXJzdEhlbWF0b2NyaXRSZXN1bHQ6IEZpcnN0SGVtYXRvY3JpdExhYi52YWx1ZSBhcyBRdWFudGl0eSwKICAgICAgVGltaW5nOiBGaXJzdEhlbWF0b2NyaXRMYWIuaXNzdWVkCiAgICB9CgpkZWZpbmUgIlNERSBFbmNvdW50ZXIgV2l0aCBGaXJzdCBQbGF0ZWxldCBMYWIgVGVzdCI6CiAgIklucGF0aWVudCBFbmNvdW50ZXJzIiBFbmNvdW50ZXJJbnBhdGllbnQKICAgIGxldCBGaXJzdFBsYXRlbGV0TGFiOiBGaXJzdChbIkxhYm9yYXRvcnlSZXN1bHRPYnNlcnZhdGlvbiI6ICJQbGF0ZWxldCBjb3VudCBsYWIgdGVzdCJdIFBsYXRlbGV0TGFiCiAgICAgICAgd2hlcmUgUGxhdGVsZXRMYWIuZWZmZWN0aXZlLmVhcmxpZXN0KCkgZHVyaW5nIEVuY291bnRlcklucGF0aWVudC5ob3NwaXRhbGl6YXRpb25XaXRoT2JzZXJ2YXRpb25BbmRPdXRwYXRpZW50U3VyZ2VyeVNlcnZpY2UoKQogICAgICAgICAgYW5kIFBsYXRlbGV0TGFiLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICAgICAgICAgYW5kIFBsYXRlbGV0TGFiLnZhbHVlIGlzIG5vdCBudWxsCiAgICAgICAgc29ydCBieSBlZmZlY3RpdmUuZWFybGllc3QoKQogICAgKQogICAgcmV0dXJuIHsKICAgICAgRW5jb3VudGVySWQ6IEVuY291bnRlcklucGF0aWVudC5pZCwKICAgICAgRmlyc3RQbGF0ZWxldFJlc3VsdDogRmlyc3RQbGF0ZWxldExhYi52YWx1ZSBhcyBRdWFudGl0eSwKICAgICAgVGltaW5nOiBGaXJzdFBsYXRlbGV0TGFiLmlzc3VlZAogICAgfQoKZGVmaW5lICJTREUgRW5jb3VudGVyIFdpdGggRmlyc3QgU29kaXVtIExhYiBUZXN0IjoKICAiSW5wYXRpZW50IEVuY291bnRlcnMiIEVuY291bnRlcklucGF0aWVudAogICAgbGV0IEZpcnN0U29kaXVtTGFiOiBGaXJzdChbIkxhYm9yYXRvcnlSZXN1bHRPYnNlcnZhdGlvbiI6ICJTb2RpdW0gbGFiIHRlc3QiXSBTb2RpdW1MYWIKICAgICAgICB3aGVyZSBTb2RpdW1MYWIuZWZmZWN0aXZlLmVhcmxpZXN0KCkgZHVyaW5nIEVuY291bnRlcklucGF0aWVudC5ob3NwaXRhbGl6YXRpb25XaXRoT2JzZXJ2YXRpb25BbmRPdXRwYXRpZW50U3VyZ2VyeVNlcnZpY2UoKQogICAgICAgICAgYW5kIFNvZGl1bUxhYi5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICAgICAgICAgIGFuZCBTb2RpdW1MYWIudmFsdWUgaXMgbm90IG51bGwKICAgICAgICBzb3J0IGJ5IGVmZmVjdGl2ZS5lYXJsaWVzdCgpCiAgICApCiAgICByZXR1cm4gewogICAgICBFbmNvdW50ZXJJZDogRW5jb3VudGVySW5wYXRpZW50LmlkLAogICAgICBGaXJzdFNvZGl1bVJlc3VsdDogRmlyc3RTb2RpdW1MYWIudmFsdWUgYXMgUXVhbnRpdHksCiAgICAgIFRpbWluZzogRmlyc3RTb2RpdW1MYWIuaXNzdWVkCiAgICB9CgpkZWZpbmUgIlNERSBFbmNvdW50ZXIgV2l0aCBGaXJzdCBXaGl0ZSBCbG9vZCBDZWxscyBMYWIgVGVzdCI6CiAgIklucGF0aWVudCBFbmNvdW50ZXJzIiBFbmNvdW50ZXJJbnBhdGllbnQKICAgIGxldCBGaXJzdFdoaXRlQmxvb2RDZWxsTGFiOiBGaXJzdChbIkxhYm9yYXRvcnlSZXN1bHRPYnNlcnZhdGlvbiI6ICJXaGl0ZSBibG9vZCBjZWxscyBjb3VudCBsYWIgdGVzdCJdIFdoaXRlQmxvb2RDZWxsTGFiCiAgICAgICAgd2hlcmUgV2hpdGVCbG9vZENlbGxMYWIuZWZmZWN0aXZlLmVhcmxpZXN0KCkgZHVyaW5nIEVuY291bnRlcklucGF0aWVudC5ob3NwaXRhbGl6YXRpb25XaXRoT2JzZXJ2YXRpb25BbmRPdXRwYXRpZW50U3VyZ2VyeVNlcnZpY2UoKQogICAgICAgICAgYW5kIFdoaXRlQmxvb2RDZWxsTGFiLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICAgICAgICAgYW5kIFdoaXRlQmxvb2RDZWxsTGFiLnZhbHVlIGlzIG5vdCBudWxsCiAgICAgICAgc29ydCBieSBlZmZlY3RpdmUuZWFybGllc3QoKQogICAgKQogICAgcmV0dXJuIHsKICAgICAgRW5jb3VudGVySWQ6IEVuY291bnRlcklucGF0aWVudC5pZCwKICAgICAgRmlyc3RXaGl0ZUJsb29kQ2VsbFJlc3VsdDogRmlyc3RXaGl0ZUJsb29kQ2VsbExhYi52YWx1ZSBhcyBRdWFudGl0eSwKICAgICAgVGltaW5nOiBGaXJzdFdoaXRlQmxvb2RDZWxsTGFiLmlzc3VlZAogICAgfQoKZGVmaW5lICJTREUgRW5jb3VudGVyIFdpdGggT3h5Z2VuIDYwIE1pbnV0ZXMgT3IgTGVzcyBQcmlvciBUbyBFRCBBZG1pc3Npb24gT3IgRHVyaW5nIEVEIjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBFbmNvdW50ZXJJbnBhdGllbnQKICAgIHdoZXJlIGV4aXN0cyAoICggW1NlcnZpY2VSZXF1ZXN0OiAiTm9uIEludmFzaXZlIE94eWdlbiBUaGVyYXB5IGJ5IE5hc2FsIENhbm51bGEgb3IgTWFzayJdCiAgICAgICAgdW5pb24gW1NlcnZpY2VSZXF1ZXN0OiAiTm9uIEludmFzaXZlIE94eWdlbiBUaGVyYXB5IERldmljZSBDb2RlcyJdICkgT3h5Z2VuVGhlcmFweU9yZGVyCiAgICAgICAgd2hlcmUgKCBPeHlnZW5UaGVyYXB5T3JkZXIuYXV0aG9yZWRPbiBkdXJpbmcgRW5jb3VudGVySW5wYXRpZW50LmVkVmlzaXQgKCApLnBlcmlvZAogICAgICAgICAgICBvciBPeHlnZW5UaGVyYXB5T3JkZXIuYXV0aG9yZWRPbiA2MCBtaW51dGVzIG9yIGxlc3MgYmVmb3JlIG9yIG9uIHN0YXJ0IG9mIEVuY291bnRlcklucGF0aWVudC5lZFZpc2l0ICggKS5wZXJpb2QKICAgICAgICApCiAgICAgICAgICBhbmQgT3h5Z2VuVGhlcmFweU9yZGVyLnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CiAgICAgICAgICBhbmQgT3h5Z2VuVGhlcmFweU9yZGVyLmludGVudCA9ICdvcmRlcicKICAgICAgICByZXR1cm4gewogICAgICAgICAgRW5jb3VudGVySWQ6IEVuY291bnRlcklucGF0aWVudC5pZCwKICAgICAgICAgIE9yZGVyU3RhdHVzOiBPeHlnZW5UaGVyYXB5T3JkZXIuc3RhdHVzLAogICAgICAgICAgT3JkZXJUaW1pbmc6IE94eWdlblRoZXJhcHlPcmRlci5hdXRob3JlZE9uCiAgICAgICAgfQogICAgKQogICAgICBvciBleGlzdHMgKCBbUHJvY2VkdXJlOiAiTm9uIEludmFzaXZlIE94eWdlbiBUaGVyYXB5IGJ5IE5hc2FsIENhbm51bGEgb3IgTWFzayJdIE94eWdlbkFkbWluSW50ZXJ2CiAgICAgICAgICB3aGVyZSAoIE94eWdlbkFkbWluSW50ZXJ2LnBlcmZvcm1lZC50b0ludGVydmFsICggKSBzdGFydHMgZHVyaW5nIEVuY291bnRlcklucGF0aWVudC5lZFZpc2l0ICggKS5wZXJpb2QKICAgICAgICAgICAgICBvciBPeHlnZW5BZG1pbkludGVydi5wZXJmb3JtZWQudG9JbnRlcnZhbCAoICkgNjAgbWludXRlcyBvciBsZXNzIGJlZm9yZSBvciBvbiBzdGFydCBvZiBFbmNvdW50ZXJJbnBhdGllbnQuZWRWaXNpdCAoICkucGVyaW9kCiAgICAgICAgICApCiAgICAgICAgICAgIGFuZCBPeHlnZW5BZG1pbkludGVydi5zdGF0dXMgPSAnY29tcGxldGVkJwogICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgRW5jb3VudGVySWQ6IEVuY291bnRlcklucGF0aWVudC5pZCwKICAgICAgICAgICAgRURFbmNvdW50ZXJUaW1pbmc6IEVuY291bnRlcklucGF0aWVudC5lZFZpc2l0ICggKS5wZXJpb2QsCiAgICAgICAgICAgIFBlcmZvcm1lZFN0YXR1czogT3h5Z2VuQWRtaW5JbnRlcnYuc3RhdHVzLAogICAgICAgICAgICBQZXJmb3JtZWRUaW1pbmc6IE94eWdlbkFkbWluSW50ZXJ2LnBlcmZvcm1lZC50b0ludGVydmFsICggKQogICAgICAgICAgfQogICAgICApCgpkZWZpbmUgIlNERSBFdGhuaWNpdHkiOgogIFNERS4iU0RFIEV0aG5pY2l0eSIKCmRlZmluZSAiU0RFIFBheWVyIjoKICBTREUuIlNERSBQYXllciIKCmRlZmluZSAiU0RFIFJhY2UiOgogIFNERS4iU0RFIFJhY2UiCgpkZWZpbmUgIlNERSBTZXgiOgogIFNERS4iU0RFIFNleCI=",
"url" : "https://madie.cms.gov/Library-CMSFHIR844HybridHospitalWideMortality.cql"
}
]
}