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" : "CMS347FHIRStatinPreventionTxCVD",
"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\">1.1.000</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 CMS347FHIRStatinPreventionTxCVD version '1.1.000'\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.CumulativeMedicationDuration version '2.0.0-ballot' called CMD\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 USQualityCoreCommon version '0.1.0-cibuild' called USQualityCoreCommon\ninclude SupplementalDataElements version '6.1.000' called SDE\ninclude Status version '2.1.000' called Status\ninclude Hospice version '7.1.000' called Hospice\ninclude PalliativeCare version '2.1.000' called PalliativeCare\n\ncodesystem "ICD10CM": 'http://hl7.org/fhir/sid/icd-10-cm'\ncodesystem "LOINC": 'http://loinc.org'\n\nvalueset "Annual Wellness Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1240'\nvalueset "Atherosclerosis and Peripheral Arterial Disease": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.21'\nvalueset "Breastfeeding": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.73'\nvalueset "CABG Surgeries": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.694'\nvalueset "CABG or PCI Procedure": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1138.566'\nvalueset "Carotid Intervention": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.204'\nvalueset "Cerebrovascular Disease Stroke or TIA": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.44'\nvalueset "Diabetes": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.103.12.1001'\nvalueset "End Stage Renal Disease": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.353'\nvalueset "Familial Hypercholesterolemia": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.100'\nvalueset "Hepatitis A": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1024'\nvalueset "Hepatitis B": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.67.1.101.1.269'\nvalueset "High Intensity Statin Therapy": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1572'\nvalueset "Ischemic Heart Disease or Other Related Diagnoses": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.46'\nvalueset "LDL Cholesterol": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1573'\nvalueset "Liver Disease": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.42'\nvalueset "Low Intensity Statin Therapy": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1574'\nvalueset "Medical Reason": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1007'\nvalueset "Moderate Intensity Statin Therapy": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1575'\nvalueset "Myocardial Infarction": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1108.101'\nvalueset "Office Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'\nvalueset "Outpatient Consultation": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008'\nvalueset "Outpatient Encounters for Preventive Care": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1576'\nvalueset "PCI": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.67'\nvalueset "Preventive Care Services Established Office Visit, 18 and Up": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025'\nvalueset "Preventive Care Services Individual Counseling": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1026'\nvalueset "Preventive Care Services Initial Office Visit, 18 and Up": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023'\nvalueset "Preventive Care Services Other": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.11.1150'\nvalueset "Rhabdomyolysis": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.102'\nvalueset "Stable and Unstable Angina": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1047.47'\nvalueset "Statin Allergen": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1110.42'\nvalueset "Statin Associated Muscle Symptoms": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1108.85'\nvalueset "Telemedicine Services": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1248.276'\n\ncode "Cardiovascular disease 10Y risk [Likelihood]": '99055-6' from "LOINC" display 'Cardiovascular disease 10Y risk [Likelihood]'\ncode "Cardiovascular disease 10Y risk [Likelihood] ACC-AHA Pooled Cohort by Goff 2013": '79423-0' from "LOINC" display 'Cardiovascular disease 10Y risk [Likelihood] ACC-AHA Pooled Cohort by Goff 2013'\ncode "Subsequent non-ST elevation (NSTEMI) myocardial infarction": 'I22.2' from "ICD10CM" display 'Subsequent non-ST elevation (NSTEMI) myocardial infarction'\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 1":\n exists "ASCVD Diagnosis or Procedure before End of Measurement Period"\n and exists "Qualifying Encounter During Day of Measurement Period"\n\ndefine "Initial Population 2":\n "Patients Aged 20 to 75 with LDL Cholesterol Result Greater than or Equal to 190 or Hypercholesterolemia without ASCVD"\n and exists "Qualifying Encounter During Day of Measurement Period"\n\ndefine "Initial Population 3":\n "Patients Aged 40 to 75 Years with Diabetes without ASCVD or LDL Greater than 190 or Hypercholesterolemia"\n and exists "Qualifying Encounter During Day of Measurement Period"\n\ndefine "Initial Population 4":\n "Patients Age 40 to 75 Years and have a 10 Year CVD Risk of High without ASCVD and High LDL and Diabetes"\n and exists "Qualifying Encounter During Day of Measurement Period"\n\ndefine "Denominator 1":\n "Initial Population 1"\n\ndefine "Denominator 2":\n "Initial Population 2"\n\ndefine "Denominator 3":\n "Initial Population 3"\n\ndefine "Denominator 4":\n "Initial Population 4"\n\ndefine "Denominator Exclusions":\n // [E-13] base FHIR.Condition retrieve: sibling-profile union -> Choice<...> cannot widen to\n // FHIR.Condition for .prevalenceInterval()/.isVerified() (defect-tracking/engine-issues.md E-13).\n // Original:\n // exists ( ( [ConditionProblemsHealthConcerns: "Breastfeeding"]\n // union [ConditionProblemsHealthConcerns: "Rhabdomyolysis"]\n // union [ConditionEncounterDiagnosis: "Breastfeeding"]\n // union [ConditionEncounterDiagnosis: "Rhabdomyolysis"] ) ExclusionDiagnosis\n exists ( ( [FHIR.Condition: "Breastfeeding"]\n union [FHIR.Condition: "Rhabdomyolysis"] ) ExclusionDiagnosis\n where ExclusionDiagnosis.prevalenceInterval ( ) overlaps day of "Measurement Period"\n and ExclusionDiagnosis.isVerified ( )\n )\n\ndefine "Denominator Exceptions":\n "Has Allergy to Statin"\n or Hospice."Has Hospice Services"\n or PalliativeCare."Has Palliative Care in the Measurement Period"\n or "Has Hepatitis or Liver Disease Diagnosis"\n or "Has Statin Associated Muscle Symptoms"\n or "Has ESRD Diagnosis"\n or "Has Adverse Reaction to Statin"\n or "Has Medical Reason for Not Ordering Statin Therapy"\n\ndefine "Numerator":\n exists "Statin Therapy Ordered during Measurement Period"\n or exists "Medication Active during the Measurement Period"\n\ndefine "ASCVD Diagnosis or Procedure before End of Measurement Period":\n ( ( [ConditionProblemsHealthConcerns: "Myocardial Infarction"]\n union [ConditionProblemsHealthConcerns: "Subsequent non-ST elevation (NSTEMI) myocardial infarction"]\n union [ConditionProblemsHealthConcerns: "Cerebrovascular Disease Stroke or TIA"]\n union [ConditionProblemsHealthConcerns: "Atherosclerosis and Peripheral Arterial Disease"]\n union [ConditionProblemsHealthConcerns: "Ischemic Heart Disease or Other Related Diagnoses"]\n union [ConditionProblemsHealthConcerns: "Stable and Unstable Angina"] ) ASCVDDiagnosis\n where ASCVDDiagnosis.prevalenceInterval ( ) starts on or before day of end of "Measurement Period"\n and ASCVDDiagnosis.isVerified ( )\n )\n union ( ( [Procedure: "PCI"]\n union [Procedure: "CABG Surgeries"]\n union [Procedure: "Carotid Intervention"]\n union [Procedure: "CABG or PCI Procedure"] ) ASCVDProcedure\n where ASCVDProcedure.performed.toInterval ( ) starts on or before day of end of "Measurement Period"\n and ASCVDProcedure.status = 'completed'\n )\n\ndefine "Has Adverse Reaction to Statin":\n exists ( [AdverseEvent: "Statin Allergen"] StatinReaction\n where Coalesce(StatinReaction.date, StatinReaction.recordedDate) during day of "Measurement Period"\n )\n\ndefine "Has Allergy to Statin":\n exists ( [AllergyIntolerance: "Statin Allergen"] StatinAllergy\n where StatinAllergy.prevalenceInterval ( ) overlaps day of "Measurement Period"\n and StatinAllergy.clinicalStatus ~ FHIRCommon."allergy-active"\n )\n\ndefine "Has Diabetes Diagnosis":\n exists ( [ConditionProblemsHealthConcerns: "Diabetes"] DiabetesDiagnosis\n where DiabetesDiagnosis.prevalenceInterval ( ) overlaps day of "Measurement Period"\n and DiabetesDiagnosis.isVerified ( )\n )\n\ndefine "Has ESRD Diagnosis":\n exists ( [ConditionProblemsHealthConcerns: "End Stage Renal Disease"] ESRD\n where ESRD.prevalenceInterval ( ) overlaps day of "Measurement Period"\n and ESRD.isVerified ( )\n )\n\ndefine "Has Hepatitis or Liver Disease Diagnosis":\n exists ( ( [ConditionProblemsHealthConcerns: "Hepatitis A"]\n union [ConditionProblemsHealthConcerns: "Hepatitis B"]\n union [ConditionProblemsHealthConcerns: "Liver Disease"] ) HepatitisLiverDisease\n where HepatitisLiverDisease.prevalenceInterval ( ) overlaps day of "Measurement Period"\n and HepatitisLiverDisease.isVerified ( )\n )\n\ndefine "Has Medical Reason for Not Ordering Statin Therapy":\n exists ( ( [MedicationNotRequested: "Low Intensity Statin Therapy"]\n union [MedicationNotRequested: "Moderate Intensity Statin Therapy"]\n union [MedicationNotRequested: "High Intensity Statin Therapy"] ) NoStatinTherapyOrdered\n with "Qualifying Encounter During Day of Measurement Period" QualifyingEncounter\n such that NoStatinTherapyOrdered.authoredOn during day of QualifyingEncounter.period\n and NoStatinTherapyOrdered.status in { 'active', 'completed' }\n and NoStatinTherapyOrdered.reasonCode in "Medical Reason"\n )\n\ndefine "Has Statin Associated Muscle Symptoms":\n exists ( [ConditionProblemsHealthConcerns: "Statin Associated Muscle Symptoms"] StatinMuscleSymptom\n where StatinMuscleSymptom.prevalenceInterval ( ) overlaps day of "Measurement Period"\n and StatinMuscleSymptom.isVerified ( )\n )\n\ndefine "Hypercholesterolemia Diagnosis":\n ( [ConditionProblemsHealthConcerns: "Familial Hypercholesterolemia"] Hypercholesterolemia\n where Hypercholesterolemia.prevalenceInterval ( ) starts on or before day of end of "Measurement Period"\n and Hypercholesterolemia.isVerified ( )\n )\n\ndefine "LDL Result Greater Than or Equal To 190":\n [LaboratoryResultObservation: "LDL Cholesterol"] LDL190\n where LDL190.value as Quantity >= 190 'mg/dL'\n and LDL190.effective.toInterval ( ) starts on or before day of end of "Measurement Period"\n and LDL190.status in { 'final', 'amended', 'corrected', 'appended' }\n\ndefine "Medication Active during the Measurement Period":\n ( [MedicationRequest: "Low Intensity Statin Therapy"]\n union [MedicationRequest: "Moderate Intensity Statin Therapy"]\n union [MedicationRequest: "High Intensity Statin Therapy"] ) ActiveStatin\n where ActiveStatin.medicationRequestPeriod ( ) overlaps day of "Measurement Period"\n and ActiveStatin.status in { 'active', 'completed' }\n\ndefine "Patients Aged 20 to 75 with LDL Cholesterol Result Greater than or Equal to 190 or Hypercholesterolemia without ASCVD":\n "Patients Aged 20 to 75 at Start of Measurement Period"\n and exists ( "LDL Result Greater Than or Equal To 190"\n union "Hypercholesterolemia Diagnosis"\n )\n and not exists ( "ASCVD Diagnosis or Procedure before End of Measurement Period" )\n\ndefine "Patients Aged 20 to 75 at Start of Measurement Period":\n AgeInYearsAt(date from start of "Measurement Period") in Interval[20, 75]\n\ndefine "Patients Aged 40 to 75 Years with Diabetes without ASCVD or LDL Greater than 190 or Hypercholesterolemia":\n AgeInYearsAt(date from start of "Measurement Period") in Interval[40, 75]\n and "Has Diabetes Diagnosis"\n and ( not exists "ASCVD Diagnosis or Procedure before End of Measurement Period"\n and not exists "LDL Result Greater Than or Equal To 190"\n and not exists "Hypercholesterolemia Diagnosis"\n )\n\ndefine "Patients Age 40 to 75 Years and have a 10 Year CVD Risk of High without ASCVD and High LDL and Diabetes":\n AgeInYearsAt(date from start of "Measurement Period") in Interval[40, 75]\n and "Ten Year CVD Risk is High"\n and not ( exists "ASCVD Diagnosis or Procedure before End of Measurement Period"\n or exists "Hypercholesterolemia Diagnosis"\n or exists "LDL Result Greater Than or Equal To 190"\n or "Has Diabetes Diagnosis"\n )\n\ndefine "Qualifying Encounter During Day of Measurement Period":\n ( [Encounter: "Annual Wellness Visit"]\n union [Encounter: "Office Visit"]\n union [Encounter: "Outpatient Consultation"]\n union [Encounter: "Outpatient Encounters for Preventive Care"]\n union [Encounter: "Preventive Care Services Established Office Visit, 18 and Up"]\n union [Encounter: "Preventive Care Services Individual Counseling"]\n union [Encounter: "Preventive Care Services Initial Office Visit, 18 and Up"]\n union [Encounter: "Preventive Care Services Other"]\n union [Encounter: "Telemedicine Services"] ) QualifyingEncounter\n where QualifyingEncounter.period during day of "Measurement Period"\n and QualifyingEncounter.status = 'finished'\n\ndefine "Statin Therapy Ordered during Measurement Period":\n ( [MedicationRequest: "Low Intensity Statin Therapy"]\n union [MedicationRequest: "Moderate Intensity Statin Therapy"]\n union [MedicationRequest: "High Intensity Statin Therapy"] ) StatinRequest\n where StatinRequest.authoredOn during day of "Measurement Period"\n and StatinRequest.status in { 'active', 'completed' }\n and StatinRequest.intent in { 'order', 'original-order', 'reflex-order', 'filter-order', 'instance-order' }\n\ndefine "Ten Year CVD Risk is High":\n exists ( ( [ObservationScreeningAssessment: "Cardiovascular disease 10Y risk [Likelihood]"]\n union [ObservationScreeningAssessment: "Cardiovascular disease 10Y risk [Likelihood] ACC-AHA Pooled Cohort by Goff 2013"] ) AtRiskCVD\n where AtRiskCVD.value as Quantity >= 20 '%'\n and AtRiskCVD.effective.toInterval ( ) during day of "Measurement Period"\n and AtRiskCVD.status in { 'final', 'amended', 'corrected' }\n )\n\ndefine fluent function isVerified(condition Choice<ConditionEncounterDiagnosis, ConditionProblemsHealthConcerns>):\n condition.verificationStatus is not null implies ( condition.verificationStatus ~ Status."confirmed"\n or condition.verificationStatus ~ Status."unconfirmed"\n or condition.verificationStatus ~ Status."provisional"\n or condition.verificationStatus ~ Status."differential"\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/CMS347FHIRStatinPreventionTxCVD",
"version" : "1.1.000",
"name" : "CMS347FHIRStatinPreventionTxCVD",
"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" : "LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVMzNDdGSElSU3RhdGluUHJldmVudGlvblR4Q1ZEIHZlcnNpb24gJzEuMS4wMDAnCgp1c2luZyBVU1F1YWxpdHlDb3JlIHZlcnNpb24gJzAuMS4wLWNpYnVpbGQnCnVzaW5nIFVTQ29yZSB2ZXJzaW9uICc2LjEuMC1kZXJpdmVkJwp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBobDcuZmhpci51di5jcWwuRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnIGNhbGxlZCBGSElSSGVscGVycwppbmNsdWRlIGhsNy5maGlyLnV2LmNxbC5GSElSQ29tbW9uIHZlcnNpb24gJzIuMC4wJyBjYWxsZWQgRkhJUkNvbW1vbgppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5DdW11bGF0aXZlTWVkaWNhdGlvbkR1cmF0aW9uIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIENNRAppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5VU0NvcmVDb21tb24gdmVyc2lvbiAnMi4wLjAtYmFsbG90JyBjYWxsZWQgVVNDb3JlQ29tbW9uCmluY2x1ZGUgaGw3LmZoaXIudXMuY3FsLlVTQ29yZUVsZW1lbnRzIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIFVTQ29yZUVsZW1lbnRzCgppbmNsdWRlIFVTUXVhbGl0eUNvcmVDb21tb24gdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcgY2FsbGVkIFVTUXVhbGl0eUNvcmVDb21tb24KaW5jbHVkZSBTdXBwbGVtZW50YWxEYXRhRWxlbWVudHMgdmVyc2lvbiAnNi4xLjAwMCcgY2FsbGVkIFNERQppbmNsdWRlIFN0YXR1cyB2ZXJzaW9uICcyLjEuMDAwJyBjYWxsZWQgU3RhdHVzCmluY2x1ZGUgSG9zcGljZSB2ZXJzaW9uICc3LjEuMDAwJyBjYWxsZWQgSG9zcGljZQppbmNsdWRlIFBhbGxpYXRpdmVDYXJlIHZlcnNpb24gJzIuMS4wMDAnIGNhbGxlZCBQYWxsaWF0aXZlQ2FyZQoKY29kZXN5c3RlbSAiSUNEMTBDTSI6ICdodHRwOi8vaGw3Lm9yZy9maGlyL3NpZC9pY2QtMTAtY20nCmNvZGVzeXN0ZW0gIkxPSU5DIjogJ2h0dHA6Ly9sb2luYy5vcmcnCgp2YWx1ZXNldCAiQW5udWFsIFdlbGxuZXNzIFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjEyNDAnCnZhbHVlc2V0ICJBdGhlcm9zY2xlcm9zaXMgYW5kIFBlcmlwaGVyYWwgQXJ0ZXJpYWwgRGlzZWFzZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwNDcuMjEnCnZhbHVlc2V0ICJCcmVhc3RmZWVkaW5nIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTA0Ny43MycKdmFsdWVzZXQgIkNBQkcgU3VyZ2VyaWVzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjY2Ni41LjY5NCcKdmFsdWVzZXQgIkNBQkcgb3IgUENJIFByb2NlZHVyZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExMzguNTY2Jwp2YWx1ZXNldCAiQ2Fyb3RpZCBJbnRlcnZlbnRpb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMTE3LjEuNy4xLjIwNCcKdmFsdWVzZXQgIkNlcmVicm92YXNjdWxhciBEaXNlYXNlIFN0cm9rZSBvciBUSUEiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ3LjQ0Jwp2YWx1ZXNldCAiRGlhYmV0ZXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAzLjEyLjEwMDEnCnZhbHVlc2V0ICJFbmQgU3RhZ2UgUmVuYWwgRGlzZWFzZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4zNTMnCnZhbHVlc2V0ICJGYW1pbGlhbCBIeXBlcmNob2xlc3Rlcm9sZW1pYSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwNDcuMTAwJwp2YWx1ZXNldCAiSGVwYXRpdGlzIEEiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTEwLjEyLjEwMjQnCnZhbHVlc2V0ICJIZXBhdGl0aXMgQiI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy42Ny4xLjEwMS4xLjI2OScKdmFsdWVzZXQgIkhpZ2ggSW50ZW5zaXR5IFN0YXRpbiBUaGVyYXB5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjE1NzInCnZhbHVlc2V0ICJJc2NoZW1pYyBIZWFydCBEaXNlYXNlIG9yIE90aGVyIFJlbGF0ZWQgRGlhZ25vc2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTA0Ny40NicKdmFsdWVzZXQgIkxETCBDaG9sZXN0ZXJvbCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4xNTczJwp2YWx1ZXNldCAiTGl2ZXIgRGlzZWFzZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwNDcuNDInCnZhbHVlc2V0ICJMb3cgSW50ZW5zaXR5IFN0YXRpbiBUaGVyYXB5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjE1NzQnCnZhbHVlc2V0ICJNZWRpY2FsIFJlYXNvbiI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4xMDA3Jwp2YWx1ZXNldCAiTW9kZXJhdGUgSW50ZW5zaXR5IFN0YXRpbiBUaGVyYXB5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjE1NzUnCnZhbHVlc2V0ICJNeW9jYXJkaWFsIEluZmFyY3Rpb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTA4LjEwMScKdmFsdWVzZXQgIk9mZmljZSBWaXNpdCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAwMScKdmFsdWVzZXQgIk91dHBhdGllbnQgQ29uc3VsdGF0aW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDA4Jwp2YWx1ZXNldCAiT3V0cGF0aWVudCBFbmNvdW50ZXJzIGZvciBQcmV2ZW50aXZlIENhcmUiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNTI2LjMuMTU3NicKdmFsdWVzZXQgIlBDSSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwNDUuNjcnCnZhbHVlc2V0ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMgRXN0YWJsaXNoZWQgT2ZmaWNlIFZpc2l0LCAxOCBhbmQgVXAiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMjUnCnZhbHVlc2V0ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMgSW5kaXZpZHVhbCBDb3Vuc2VsaW5nIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDI2Jwp2YWx1ZXNldCAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzIEluaXRpYWwgT2ZmaWNlIFZpc2l0LCAxOCBhbmQgVXAiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMjMnCnZhbHVlc2V0ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMgT3RoZXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjExLjExNTAnCnZhbHVlc2V0ICJSaGFiZG9teW9seXNpcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwNDcuMTAyJwp2YWx1ZXNldCAiU3RhYmxlIGFuZCBVbnN0YWJsZSBBbmdpbmEiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ3LjQ3Jwp2YWx1ZXNldCAiU3RhdGluIEFsbGVyZ2VuIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTExMC40MicKdmFsdWVzZXQgIlN0YXRpbiBBc3NvY2lhdGVkIE11c2NsZSBTeW1wdG9tcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExMDguODUnCnZhbHVlc2V0ICJUZWxlbWVkaWNpbmUgU2VydmljZXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMjQ4LjI3NicKCmNvZGUgIkNhcmRpb3Zhc2N1bGFyIGRpc2Vhc2UgMTBZIHJpc2sgW0xpa2VsaWhvb2RdIjogJzk5MDU1LTYnIGZyb20gIkxPSU5DIiBkaXNwbGF5ICdDYXJkaW92YXNjdWxhciBkaXNlYXNlIDEwWSByaXNrIFtMaWtlbGlob29kXScKY29kZSAiQ2FyZGlvdmFzY3VsYXIgZGlzZWFzZSAxMFkgcmlzayBbTGlrZWxpaG9vZF0gQUNDLUFIQSBQb29sZWQgQ29ob3J0IGJ5IEdvZmYgMjAxMyI6ICc3OTQyMy0wJyBmcm9tICJMT0lOQyIgZGlzcGxheSAnQ2FyZGlvdmFzY3VsYXIgZGlzZWFzZSAxMFkgcmlzayBbTGlrZWxpaG9vZF0gQUNDLUFIQSBQb29sZWQgQ29ob3J0IGJ5IEdvZmYgMjAxMycKY29kZSAiU3Vic2VxdWVudCBub24tU1QgZWxldmF0aW9uIChOU1RFTUkpIG15b2NhcmRpYWwgaW5mYXJjdGlvbiI6ICdJMjIuMicgZnJvbSAiSUNEMTBDTSIgZGlzcGxheSAnU3Vic2VxdWVudCBub24tU1QgZWxldmF0aW9uIChOU1RFTUkpIG15b2NhcmRpYWwgaW5mYXJjdGlvbicKCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiBJbnRlcnZhbDxEYXRlVGltZT4KICBkZWZhdWx0IEludGVydmFsW0AyMDI2LTAxLTAxVDAwOjAwOjAwLjAwMFosIEAyMDI3LTAxLTAxVDAwOjAwOjAwLjAwMFopCgpjb250ZXh0IFBhdGllbnQKCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIDEiOgogIGV4aXN0cyAiQVNDVkQgRGlhZ25vc2lzIG9yIFByb2NlZHVyZSBiZWZvcmUgRW5kIG9mIE1lYXN1cmVtZW50IFBlcmlvZCIKICAgIGFuZCBleGlzdHMgIlF1YWxpZnlpbmcgRW5jb3VudGVyIER1cmluZyBEYXkgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24gMiI6CiAgIlBhdGllbnRzIEFnZWQgMjAgdG8gNzUgd2l0aCBMREwgQ2hvbGVzdGVyb2wgUmVzdWx0IEdyZWF0ZXIgdGhhbiBvciBFcXVhbCB0byAxOTAgb3IgSHlwZXJjaG9sZXN0ZXJvbGVtaWEgd2l0aG91dCBBU0NWRCIKICAgIGFuZCBleGlzdHMgIlF1YWxpZnlpbmcgRW5jb3VudGVyIER1cmluZyBEYXkgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24gMyI6CiAgIlBhdGllbnRzIEFnZWQgNDAgdG8gNzUgWWVhcnMgd2l0aCBEaWFiZXRlcyB3aXRob3V0IEFTQ1ZEIG9yIExETCBHcmVhdGVyIHRoYW4gMTkwIG9yIEh5cGVyY2hvbGVzdGVyb2xlbWlhIgogICAgYW5kIGV4aXN0cyAiUXVhbGlmeWluZyBFbmNvdW50ZXIgRHVyaW5nIERheSBvZiBNZWFzdXJlbWVudCBQZXJpb2QiCgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiA0IjoKICAiUGF0aWVudHMgQWdlIDQwIHRvIDc1IFllYXJzIGFuZCBoYXZlIGEgMTAgWWVhciBDVkQgUmlzayBvZiBIaWdoIHdpdGhvdXQgQVNDVkQgYW5kIEhpZ2ggTERMIGFuZCBEaWFiZXRlcyIKICAgIGFuZCBleGlzdHMgIlF1YWxpZnlpbmcgRW5jb3VudGVyIER1cmluZyBEYXkgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJEZW5vbWluYXRvciAxIjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIDEiCgpkZWZpbmUgIkRlbm9taW5hdG9yIDIiOgogICJJbml0aWFsIFBvcHVsYXRpb24gMiIKCmRlZmluZSAiRGVub21pbmF0b3IgMyI6CiAgIkluaXRpYWwgUG9wdWxhdGlvbiAzIgoKZGVmaW5lICJEZW5vbWluYXRvciA0IjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIDQiCgpkZWZpbmUgIkRlbm9taW5hdG9yIEV4Y2x1c2lvbnMiOgogIC8vIFtFLTEzXSBiYXNlIEZISVIuQ29uZGl0aW9uIHJldHJpZXZlOiBzaWJsaW5nLXByb2ZpbGUgdW5pb24gLT4gQ2hvaWNlPC4uLj4gY2Fubm90IHdpZGVuIHRvCiAgLy8gRkhJUi5Db25kaXRpb24gZm9yIC5wcmV2YWxlbmNlSW50ZXJ2YWwoKS8uaXNWZXJpZmllZCgpIChkZWZlY3QtdHJhY2tpbmcvZW5naW5lLWlzc3Vlcy5tZCBFLTEzKS4KICAvLyBPcmlnaW5hbDoKICAvLyAgIGV4aXN0cyAoICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJCcmVhc3RmZWVkaW5nIl0KICAvLyAgICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIlJoYWJkb215b2x5c2lzIl0KICAvLyAgICAgICB1bmlvbiBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiQnJlYXN0ZmVlZGluZyJdCiAgLy8gICAgICAgdW5pb24gW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIlJoYWJkb215b2x5c2lzIl0gKSBFeGNsdXNpb25EaWFnbm9zaXMKICBleGlzdHMgKCAoIFtGSElSLkNvbmRpdGlvbjogIkJyZWFzdGZlZWRpbmciXQogICAgICB1bmlvbiBbRkhJUi5Db25kaXRpb246ICJSaGFiZG9teW9seXNpcyJdICkgRXhjbHVzaW9uRGlhZ25vc2lzCiAgICAgIHdoZXJlIEV4Y2x1c2lvbkRpYWdub3Npcy5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICAgIGFuZCBFeGNsdXNpb25EaWFnbm9zaXMuaXNWZXJpZmllZCAoICkKICApCgpkZWZpbmUgIkRlbm9taW5hdG9yIEV4Y2VwdGlvbnMiOgogICJIYXMgQWxsZXJneSB0byBTdGF0aW4iCiAgICBvciBIb3NwaWNlLiJIYXMgSG9zcGljZSBTZXJ2aWNlcyIKICAgIG9yIFBhbGxpYXRpdmVDYXJlLiJIYXMgUGFsbGlhdGl2ZSBDYXJlIGluIHRoZSBNZWFzdXJlbWVudCBQZXJpb2QiCiAgICBvciAiSGFzIEhlcGF0aXRpcyBvciBMaXZlciBEaXNlYXNlIERpYWdub3NpcyIKICAgIG9yICJIYXMgU3RhdGluIEFzc29jaWF0ZWQgTXVzY2xlIFN5bXB0b21zIgogICAgb3IgIkhhcyBFU1JEIERpYWdub3NpcyIKICAgIG9yICJIYXMgQWR2ZXJzZSBSZWFjdGlvbiB0byBTdGF0aW4iCiAgICBvciAiSGFzIE1lZGljYWwgUmVhc29uIGZvciBOb3QgT3JkZXJpbmcgU3RhdGluIFRoZXJhcHkiCgpkZWZpbmUgIk51bWVyYXRvciI6CiAgZXhpc3RzICJTdGF0aW4gVGhlcmFweSBPcmRlcmVkIGR1cmluZyBNZWFzdXJlbWVudCBQZXJpb2QiCiAgICBvciBleGlzdHMgIk1lZGljYXRpb24gQWN0aXZlIGR1cmluZyB0aGUgTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJBU0NWRCBEaWFnbm9zaXMgb3IgUHJvY2VkdXJlIGJlZm9yZSBFbmQgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIjoKICAoICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJNeW9jYXJkaWFsIEluZmFyY3Rpb24iXQogICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIlN1YnNlcXVlbnQgbm9uLVNUIGVsZXZhdGlvbiAoTlNURU1JKSBteW9jYXJkaWFsIGluZmFyY3Rpb24iXQogICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkNlcmVicm92YXNjdWxhciBEaXNlYXNlIFN0cm9rZSBvciBUSUEiXQogICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkF0aGVyb3NjbGVyb3NpcyBhbmQgUGVyaXBoZXJhbCBBcnRlcmlhbCBEaXNlYXNlIl0KICAgICAgdW5pb24gW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJJc2NoZW1pYyBIZWFydCBEaXNlYXNlIG9yIE90aGVyIFJlbGF0ZWQgRGlhZ25vc2VzIl0KICAgICAgdW5pb24gW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJTdGFibGUgYW5kIFVuc3RhYmxlIEFuZ2luYSJdICkgQVNDVkREaWFnbm9zaXMKICAgICAgd2hlcmUgQVNDVkREaWFnbm9zaXMucHJldmFsZW5jZUludGVydmFsICggKSBzdGFydHMgb24gb3IgYmVmb3JlIGRheSBvZiBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgICBhbmQgQVNDVkREaWFnbm9zaXMuaXNWZXJpZmllZCAoICkKICApCiAgICB1bmlvbiAoICggW1Byb2NlZHVyZTogIlBDSSJdCiAgICAgICAgdW5pb24gW1Byb2NlZHVyZTogIkNBQkcgU3VyZ2VyaWVzIl0KICAgICAgICB1bmlvbiBbUHJvY2VkdXJlOiAiQ2Fyb3RpZCBJbnRlcnZlbnRpb24iXQogICAgICAgIHVuaW9uIFtQcm9jZWR1cmU6ICJDQUJHIG9yIFBDSSBQcm9jZWR1cmUiXSApIEFTQ1ZEUHJvY2VkdXJlCiAgICAgICAgd2hlcmUgQVNDVkRQcm9jZWR1cmUucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIHN0YXJ0cyBvbiBvciBiZWZvcmUgZGF5IG9mIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICAgICAgYW5kIEFTQ1ZEUHJvY2VkdXJlLnN0YXR1cyA9ICdjb21wbGV0ZWQnCiAgICApCgpkZWZpbmUgIkhhcyBBZHZlcnNlIFJlYWN0aW9uIHRvIFN0YXRpbiI6CiAgZXhpc3RzICggW0FkdmVyc2VFdmVudDogIlN0YXRpbiBBbGxlcmdlbiJdIFN0YXRpblJlYWN0aW9uCiAgICAgIHdoZXJlIENvYWxlc2NlKFN0YXRpblJlYWN0aW9uLmRhdGUsIFN0YXRpblJlYWN0aW9uLnJlY29yZGVkRGF0ZSkgZHVyaW5nIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICkKCmRlZmluZSAiSGFzIEFsbGVyZ3kgdG8gU3RhdGluIjoKICBleGlzdHMgKCBbQWxsZXJneUludG9sZXJhbmNlOiAiU3RhdGluIEFsbGVyZ2VuIl0gU3RhdGluQWxsZXJneQogICAgICB3aGVyZSBTdGF0aW5BbGxlcmd5LnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgICAgYW5kIFN0YXRpbkFsbGVyZ3kuY2xpbmljYWxTdGF0dXMgfiBGSElSQ29tbW9uLiJhbGxlcmd5LWFjdGl2ZSIKICApCgpkZWZpbmUgIkhhcyBEaWFiZXRlcyBEaWFnbm9zaXMiOgogIGV4aXN0cyAoIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiRGlhYmV0ZXMiXSBEaWFiZXRlc0RpYWdub3NpcwogICAgICB3aGVyZSBEaWFiZXRlc0RpYWdub3Npcy5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICAgIGFuZCBEaWFiZXRlc0RpYWdub3Npcy5pc1ZlcmlmaWVkICggKQogICkKCmRlZmluZSAiSGFzIEVTUkQgRGlhZ25vc2lzIjoKICBleGlzdHMgKCBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkVuZCBTdGFnZSBSZW5hbCBEaXNlYXNlIl0gRVNSRAogICAgICB3aGVyZSBFU1JELnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgICAgYW5kIEVTUkQuaXNWZXJpZmllZCAoICkKICApCgpkZWZpbmUgIkhhcyBIZXBhdGl0aXMgb3IgTGl2ZXIgRGlzZWFzZSBEaWFnbm9zaXMiOgogIGV4aXN0cyAoICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJIZXBhdGl0aXMgQSJdCiAgICAgIHVuaW9uIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiSGVwYXRpdGlzIEIiXQogICAgICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkxpdmVyIERpc2Vhc2UiXSApIEhlcGF0aXRpc0xpdmVyRGlzZWFzZQogICAgICB3aGVyZSBIZXBhdGl0aXNMaXZlckRpc2Vhc2UucHJldmFsZW5jZUludGVydmFsICggKSBvdmVybGFwcyBkYXkgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgICBhbmQgSGVwYXRpdGlzTGl2ZXJEaXNlYXNlLmlzVmVyaWZpZWQgKCApCiAgKQoKZGVmaW5lICJIYXMgTWVkaWNhbCBSZWFzb24gZm9yIE5vdCBPcmRlcmluZyBTdGF0aW4gVGhlcmFweSI6CiAgZXhpc3RzICggKCBbTWVkaWNhdGlvbk5vdFJlcXVlc3RlZDogIkxvdyBJbnRlbnNpdHkgU3RhdGluIFRoZXJhcHkiXQogICAgICB1bmlvbiBbTWVkaWNhdGlvbk5vdFJlcXVlc3RlZDogIk1vZGVyYXRlIEludGVuc2l0eSBTdGF0aW4gVGhlcmFweSJdCiAgICAgIHVuaW9uIFtNZWRpY2F0aW9uTm90UmVxdWVzdGVkOiAiSGlnaCBJbnRlbnNpdHkgU3RhdGluIFRoZXJhcHkiXSApIE5vU3RhdGluVGhlcmFweU9yZGVyZWQKICAgICAgd2l0aCAiUXVhbGlmeWluZyBFbmNvdW50ZXIgRHVyaW5nIERheSBvZiBNZWFzdXJlbWVudCBQZXJpb2QiIFF1YWxpZnlpbmdFbmNvdW50ZXIKICAgICAgICBzdWNoIHRoYXQgTm9TdGF0aW5UaGVyYXB5T3JkZXJlZC5hdXRob3JlZE9uIGR1cmluZyBkYXkgb2YgUXVhbGlmeWluZ0VuY291bnRlci5wZXJpb2QKICAgICAgICAgIGFuZCBOb1N0YXRpblRoZXJhcHlPcmRlcmVkLnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CiAgICAgICAgICBhbmQgTm9TdGF0aW5UaGVyYXB5T3JkZXJlZC5yZWFzb25Db2RlIGluICJNZWRpY2FsIFJlYXNvbiIKICApCgpkZWZpbmUgIkhhcyBTdGF0aW4gQXNzb2NpYXRlZCBNdXNjbGUgU3ltcHRvbXMiOgogIGV4aXN0cyAoIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiU3RhdGluIEFzc29jaWF0ZWQgTXVzY2xlIFN5bXB0b21zIl0gU3RhdGluTXVzY2xlU3ltcHRvbQogICAgICB3aGVyZSBTdGF0aW5NdXNjbGVTeW1wdG9tLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgICAgYW5kIFN0YXRpbk11c2NsZVN5bXB0b20uaXNWZXJpZmllZCAoICkKICApCgpkZWZpbmUgIkh5cGVyY2hvbGVzdGVyb2xlbWlhIERpYWdub3NpcyI6CiAgKCBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkZhbWlsaWFsIEh5cGVyY2hvbGVzdGVyb2xlbWlhIl0gSHlwZXJjaG9sZXN0ZXJvbGVtaWEKICAgICAgd2hlcmUgSHlwZXJjaG9sZXN0ZXJvbGVtaWEucHJldmFsZW5jZUludGVydmFsICggKSBzdGFydHMgb24gb3IgYmVmb3JlIGRheSBvZiBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgICBhbmQgSHlwZXJjaG9sZXN0ZXJvbGVtaWEuaXNWZXJpZmllZCAoICkKICApCgpkZWZpbmUgIkxETCBSZXN1bHQgR3JlYXRlciBUaGFuIG9yIEVxdWFsIFRvIDE5MCI6CiAgW0xhYm9yYXRvcnlSZXN1bHRPYnNlcnZhdGlvbjogIkxETCBDaG9sZXN0ZXJvbCJdIExETDE5MAogICAgd2hlcmUgTERMMTkwLnZhbHVlIGFzIFF1YW50aXR5ID49IDE5MCAnbWcvZEwnCiAgICAgIGFuZCBMREwxOTAuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApIHN0YXJ0cyBvbiBvciBiZWZvcmUgZGF5IG9mIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICBhbmQgTERMMTkwLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcsICdhcHBlbmRlZCcgfQoKZGVmaW5lICJNZWRpY2F0aW9uIEFjdGl2ZSBkdXJpbmcgdGhlIE1lYXN1cmVtZW50IFBlcmlvZCI6CiAgKCBbTWVkaWNhdGlvblJlcXVlc3Q6ICJMb3cgSW50ZW5zaXR5IFN0YXRpbiBUaGVyYXB5Il0KICAgIHVuaW9uIFtNZWRpY2F0aW9uUmVxdWVzdDogIk1vZGVyYXRlIEludGVuc2l0eSBTdGF0aW4gVGhlcmFweSJdCiAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJIaWdoIEludGVuc2l0eSBTdGF0aW4gVGhlcmFweSJdICkgQWN0aXZlU3RhdGluCiAgICB3aGVyZSBBY3RpdmVTdGF0aW4ubWVkaWNhdGlvblJlcXVlc3RQZXJpb2QgKCApIG92ZXJsYXBzIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICBhbmQgQWN0aXZlU3RhdGluLnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CgpkZWZpbmUgIlBhdGllbnRzIEFnZWQgMjAgdG8gNzUgd2l0aCBMREwgQ2hvbGVzdGVyb2wgUmVzdWx0IEdyZWF0ZXIgdGhhbiBvciBFcXVhbCB0byAxOTAgb3IgSHlwZXJjaG9sZXN0ZXJvbGVtaWEgd2l0aG91dCBBU0NWRCI6CiAgIlBhdGllbnRzIEFnZWQgMjAgdG8gNzUgYXQgU3RhcnQgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgYW5kIGV4aXN0cyAoICJMREwgUmVzdWx0IEdyZWF0ZXIgVGhhbiBvciBFcXVhbCBUbyAxOTAiCiAgICAgICAgdW5pb24gIkh5cGVyY2hvbGVzdGVyb2xlbWlhIERpYWdub3NpcyIKICAgICkKICAgIGFuZCBub3QgZXhpc3RzICggIkFTQ1ZEIERpYWdub3NpcyBvciBQcm9jZWR1cmUgYmVmb3JlIEVuZCBvZiBNZWFzdXJlbWVudCBQZXJpb2QiICkKCmRlZmluZSAiUGF0aWVudHMgQWdlZCAyMCB0byA3NSBhdCBTdGFydCBvZiBNZWFzdXJlbWVudCBQZXJpb2QiOgogIEFnZUluWWVhcnNBdChkYXRlIGZyb20gc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIpIGluIEludGVydmFsWzIwLCA3NV0KCmRlZmluZSAiUGF0aWVudHMgQWdlZCA0MCB0byA3NSBZZWFycyB3aXRoIERpYWJldGVzIHdpdGhvdXQgQVNDVkQgb3IgTERMIEdyZWF0ZXIgdGhhbiAxOTAgb3IgSHlwZXJjaG9sZXN0ZXJvbGVtaWEiOgogIEFnZUluWWVhcnNBdChkYXRlIGZyb20gc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIpIGluIEludGVydmFsWzQwLCA3NV0KICAgIGFuZCAiSGFzIERpYWJldGVzIERpYWdub3NpcyIKICAgIGFuZCAoIG5vdCBleGlzdHMgIkFTQ1ZEIERpYWdub3NpcyBvciBQcm9jZWR1cmUgYmVmb3JlIEVuZCBvZiBNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgICAgYW5kIG5vdCBleGlzdHMgIkxETCBSZXN1bHQgR3JlYXRlciBUaGFuIG9yIEVxdWFsIFRvIDE5MCIKICAgICAgICBhbmQgbm90IGV4aXN0cyAiSHlwZXJjaG9sZXN0ZXJvbGVtaWEgRGlhZ25vc2lzIgogICAgKQoKZGVmaW5lICJQYXRpZW50cyBBZ2UgNDAgdG8gNzUgWWVhcnMgYW5kIGhhdmUgYSAxMCBZZWFyIENWRCBSaXNrIG9mIEhpZ2ggd2l0aG91dCBBU0NWRCBhbmQgSGlnaCBMREwgYW5kIERpYWJldGVzIjoKICBBZ2VJblllYXJzQXQoZGF0ZSBmcm9tIHN0YXJ0IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiKSBpbiBJbnRlcnZhbFs0MCwgNzVdCiAgICBhbmQgIlRlbiBZZWFyIENWRCBSaXNrIGlzIEhpZ2giCiAgICBhbmQgbm90ICggZXhpc3RzICJBU0NWRCBEaWFnbm9zaXMgb3IgUHJvY2VkdXJlIGJlZm9yZSBFbmQgb2YgTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICAgIG9yIGV4aXN0cyAiSHlwZXJjaG9sZXN0ZXJvbGVtaWEgRGlhZ25vc2lzIgogICAgICAgIG9yIGV4aXN0cyAiTERMIFJlc3VsdCBHcmVhdGVyIFRoYW4gb3IgRXF1YWwgVG8gMTkwIgogICAgICAgIG9yICJIYXMgRGlhYmV0ZXMgRGlhZ25vc2lzIgogICAgKQoKZGVmaW5lICJRdWFsaWZ5aW5nIEVuY291bnRlciBEdXJpbmcgRGF5IG9mIE1lYXN1cmVtZW50IFBlcmlvZCI6CiAgKCBbRW5jb3VudGVyOiAiQW5udWFsIFdlbGxuZXNzIFZpc2l0Il0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJPZmZpY2UgVmlzaXQiXQogICAgdW5pb24gW0VuY291bnRlcjogIk91dHBhdGllbnQgQ29uc3VsdGF0aW9uIl0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJPdXRwYXRpZW50IEVuY291bnRlcnMgZm9yIFByZXZlbnRpdmUgQ2FyZSJdCiAgICB1bmlvbiBbRW5jb3VudGVyOiAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzIEVzdGFibGlzaGVkIE9mZmljZSBWaXNpdCwgMTggYW5kIFVwIl0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMgSW5kaXZpZHVhbCBDb3Vuc2VsaW5nIl0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQcmV2ZW50aXZlIENhcmUgU2VydmljZXMgSW5pdGlhbCBPZmZpY2UgVmlzaXQsIDE4IGFuZCBVcCJdCiAgICB1bmlvbiBbRW5jb3VudGVyOiAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzIE90aGVyIl0KICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJUZWxlbWVkaWNpbmUgU2VydmljZXMiXSApIFF1YWxpZnlpbmdFbmNvdW50ZXIKICAgIHdoZXJlIFF1YWxpZnlpbmdFbmNvdW50ZXIucGVyaW9kIGR1cmluZyBkYXkgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgYW5kIFF1YWxpZnlpbmdFbmNvdW50ZXIuc3RhdHVzID0gJ2ZpbmlzaGVkJwoKZGVmaW5lICJTdGF0aW4gVGhlcmFweSBPcmRlcmVkIGR1cmluZyBNZWFzdXJlbWVudCBQZXJpb2QiOgogICggW01lZGljYXRpb25SZXF1ZXN0OiAiTG93IEludGVuc2l0eSBTdGF0aW4gVGhlcmFweSJdCiAgICB1bmlvbiBbTWVkaWNhdGlvblJlcXVlc3Q6ICJNb2RlcmF0ZSBJbnRlbnNpdHkgU3RhdGluIFRoZXJhcHkiXQogICAgdW5pb24gW01lZGljYXRpb25SZXF1ZXN0OiAiSGlnaCBJbnRlbnNpdHkgU3RhdGluIFRoZXJhcHkiXSApIFN0YXRpblJlcXVlc3QKICAgIHdoZXJlIFN0YXRpblJlcXVlc3QuYXV0aG9yZWRPbiBkdXJpbmcgZGF5IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgIGFuZCBTdGF0aW5SZXF1ZXN0LnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CiAgICAgIGFuZCBTdGF0aW5SZXF1ZXN0LmludGVudCBpbiB7ICdvcmRlcicsICdvcmlnaW5hbC1vcmRlcicsICdyZWZsZXgtb3JkZXInLCAnZmlsdGVyLW9yZGVyJywgJ2luc3RhbmNlLW9yZGVyJyB9CgpkZWZpbmUgIlRlbiBZZWFyIENWRCBSaXNrIGlzIEhpZ2giOgogIGV4aXN0cyAoICggW09ic2VydmF0aW9uU2NyZWVuaW5nQXNzZXNzbWVudDogIkNhcmRpb3Zhc2N1bGFyIGRpc2Vhc2UgMTBZIHJpc2sgW0xpa2VsaWhvb2RdIl0KICAgICAgdW5pb24gW09ic2VydmF0aW9uU2NyZWVuaW5nQXNzZXNzbWVudDogIkNhcmRpb3Zhc2N1bGFyIGRpc2Vhc2UgMTBZIHJpc2sgW0xpa2VsaWhvb2RdIEFDQy1BSEEgUG9vbGVkIENvaG9ydCBieSBHb2ZmIDIwMTMiXSApIEF0Umlza0NWRAogICAgICB3aGVyZSBBdFJpc2tDVkQudmFsdWUgYXMgUXVhbnRpdHkgPj0gMjAgJyUnCiAgICAgICAgYW5kIEF0Umlza0NWRC5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkgZHVyaW5nIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICAgIGFuZCBBdFJpc2tDVkQuc3RhdHVzIGluIHsgJ2ZpbmFsJywgJ2FtZW5kZWQnLCAnY29ycmVjdGVkJyB9CiAgKQoKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc1ZlcmlmaWVkKGNvbmRpdGlvbiBDaG9pY2U8Q29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzLCBDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zPik6CiAgY29uZGl0aW9uLnZlcmlmaWNhdGlvblN0YXR1cyBpcyBub3QgbnVsbCBpbXBsaWVzICggY29uZGl0aW9uLnZlcmlmaWNhdGlvblN0YXR1cyB+IFN0YXR1cy4iY29uZmlybWVkIgogICAgICBvciBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIH4gU3RhdHVzLiJ1bmNvbmZpcm1lZCIKICAgICAgb3IgY29uZGl0aW9uLnZlcmlmaWNhdGlvblN0YXR1cyB+IFN0YXR1cy4icHJvdmlzaW9uYWwiCiAgICAgIG9yIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgfiBTdGF0dXMuImRpZmZlcmVudGlhbCIKICApCgpkZWZpbmUgIlNERSBFdGhuaWNpdHkiOgogIFNERS4iU0RFIEV0aG5pY2l0eSIKCmRlZmluZSAiU0RFIFBheWVyIjoKICBTREUuIlNERSBQYXllciIKCmRlZmluZSAiU0RFIFJhY2UiOgogIFNERS4iU0RFIFJhY2UiCgpkZWZpbmUgIlNERSBTZXgiOgogIFNERS4iU0RFIFNleCI=",
"url" : "https://madie.cms.gov/Library-CMS347FHIRStatinPreventionTxCVD.cql"
}
]
}