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" : "CMS1173FHIRDiagnosticDelayVTE",
"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 CMS1173FHIRDiagnosticDelayVTE 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.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'\ncodesystem "SNOMEDCT": 'http://snomed.info/sct'\n\nvalueset "Anticoagulant Medications": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1206.19'\nvalueset "Encounter Inpatient": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'\nvalueset "Ethnicity": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837'\nvalueset "Hospice Care Ambulatory": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1108.15'\nvalueset "Hospice Diagnosis": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1165'\nvalueset "Hospice Encounter": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1003'\nvalueset "Imaging Related to VTE": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1206.47'\nvalueset "Office Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'\nvalueset "Outpatient Encounter": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1087'\nvalueset "Palliative Care Diagnosis": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1167'\nvalueset "Palliative Care Encounter": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1090'\nvalueset "Palliative Care Intervention": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1135'\nvalueset "VTE Diagnoses": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1206.49'\nvalueset "VTE Symptoms": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1206.51'\n\ncode "Discharge to healthcare facility for hospice care (procedure)": '428371000124100' from "SNOMEDCT" display 'Discharge to healthcare facility for hospice care (procedure)'\ncode "Discharge to home for hospice care (procedure)": '428361000124107' from "SNOMEDCT" display 'Discharge to home for hospice care (procedure)'\ncode "Hospice care [Minimum Data Set]": '45755-6' from "LOINC" display 'Hospice care [Minimum Data Set]'\ncode "Yes (qualifier value)": '373066001' from "SNOMEDCT" display 'Yes (qualifier value)'\ncode "Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)": '71007-9' from "LOINC" display 'Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)'\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 /***\n * Includes all Qualified VTE Encounters in which the patient was aged 18 or older at the start of the qualified VTE encounter.\n ***/\n \n "Qualified VTE Encounters During Measurement Period" QualifiedEncounter\n where AgeInYearsAt(date from start of QualifiedEncounter.period) >= 18\n\ndefine "Denominator":\n "Initial Population"\n\ndefine "Denominator Exclusions":\n "Qualified VTE Encounter With Hospice Services Within Previous 90 Days"\n union "Qualified VTE Encounter With Palliative Care Within Previous 90 Days"\n union "Qualified VTE Encounter With Other Qualified VTE Encounter Documented Within Previous 6 Months"\n\ndefine "Numerator":\n /***\n * Includes all qualified VTE encounters in which the VTE diagnosis started greater than 24 hours after a qualifying PCP visit.\n ****/\n \n "Qualifying Delayed VTE Encounter"\n\ndefine "Qualifying Performed Encounters":\n ( ["Encounter": "Office Visit"]\n union ["Encounter": "Outpatient Encounter"]\n union ["Encounter": "Encounter Inpatient"] ) Encounter\n where Encounter.status = 'finished'\n and Encounter.period starts during day of Interval[start of "Measurement Period" - 180 days, end of "Measurement Period"]\n\ndefine "Qualifying Performed PCP Visits":\n ( ["Encounter": "Outpatient Encounter"]\n union ["Encounter": "Office Visit"] ) PCPVisit\n where PCPVisit.status = 'finished'\n and PCPVisit.period ends during day of Interval[start of "Measurement Period" - 210 days, end of "Measurement Period"]\n\ndefine "Qualifying Performed PCP Visits With VTE Symptom":\n "Qualifying Performed PCP Visits" IndexPCPVisit\n where IndexPCPVisit.reasonCode in "VTE Symptoms"\n or exists ( [ConditionEncounterDiagnosis: "VTE Symptoms"] VTESymptomCondition\n where VTESymptomCondition.isVerified ( )\n and IndexPCPVisit.reasonReference.references ( VTESymptomCondition )\n )\n\ndefine "Qualifying Performed VTE Encounters":\n "Qualifying Performed Encounters" VTEEncounter\n where VTEEncounter.reasonCode in "VTE Diagnoses"\n or exists ( [ConditionEncounterDiagnosis: "VTE Diagnoses"] VTECondition\n where VTECondition.isConfirmedCondition ( )\n and VTEEncounter.reasonReference.references ( VTECondition )\n )\n\ndefine "Qualifying VTE Imaging Diagnostic Report":\n ["DiagnosticReportNote": "Imaging Related to VTE"] VTEDiagnosticReport\n where VTEDiagnosticReport.status in { 'final', 'amended', 'corrected' }\n\ndefine "AntiCoagulant Therapy Ordered":\n ["MedicationRequest": "Anticoagulant Medications"] AntiCoagulant\n where AntiCoagulant.status in { 'active', 'completed' }\n and AntiCoagulant.intent = 'order'\n\ndefine "Qualified VTE Encounters":\n from\n "Qualifying Performed VTE Encounters" VTEEncounter,\n "Qualifying Performed PCP Visits With VTE Symptom" IndexPCP,\n "Qualifying VTE Imaging Diagnostic Report" VTEStudy,\n "AntiCoagulant Therapy Ordered" AntiCoagulantOrdered\n where VTEStudy.effective.toInterval ( ) starts during day of VTEEncounter.period\n and ( AntiCoagulantOrdered.authoredOn 12 hours or less before start of VTEStudy.effective.toInterval ( )\n or AntiCoagulantOrdered.authoredOn 12 hours or less after start of VTEStudy.effective.toInterval ( )\n )\n and IndexPCP.period starts 30 days or less on or before start of VTEStudy.effective.toInterval ( )\n return VTEEncounter\n\ndefine "Qualified VTE Encounters During Measurement Period":\n "Qualified VTE Encounters" QualifiedVTEEncounter\n where QualifiedVTEEncounter.period starts during day of "Measurement Period"\n\ndefine "Qualifying Delayed VTE Encounter":\n "Qualified VTE Encounters During Measurement Period" DelayedVTEEncounter\n with "Qualifying Performed PCP Visits With VTE Symptom" IndexPCPVisit\n such that DelayedVTEEncounter.period starts during day of Interval[end of IndexPCPVisit.period + 2 day, end of IndexPCPVisit.period + 30 days]\n\ndefine "Qualified VTE Encounter With Hospice Services Within Previous 90 Days":\n from\n "Qualified VTE Encounters" QualifiedVTEEncounter\n let NinetyDaysBeforeVTEEncounter: Interval[start of QualifiedVTEEncounter.period - 90 days, end of QualifiedVTEEncounter.period]\n where exists ( ["Encounter": "Encounter Inpatient"] InpatientEncounter\n where ( InpatientEncounter.hospitalization.dischargeDisposition ~ "Discharge to home for hospice care (procedure)"\n or InpatientEncounter.hospitalization.dischargeDisposition ~ "Discharge to healthcare facility for hospice care (procedure)"\n )\n and InpatientEncounter.period ends during day of NinetyDaysBeforeVTEEncounter\n and InpatientEncounter.status = 'finished'\n )\n or exists ( ["Encounter": "Hospice Encounter"] HospiceEncounter\n where HospiceEncounter.period overlaps day of NinetyDaysBeforeVTEEncounter\n )\n or exists ( ( [ObservationScreeningAssessment: "Hospice care [Minimum Data Set]"] ) HospiceAssessment\n where HospiceAssessment.value ~ "Yes (qualifier value)"\n and HospiceAssessment.effective.toInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter\n )\n or exists ( ( [ServiceRequest: "Hospice Care Ambulatory"] ) HospiceOrder\n where HospiceOrder.authoredOn during day of NinetyDaysBeforeVTEEncounter\n and HospiceOrder.status in { 'active', 'completed' }\n )\n or exists ( ( [Procedure: "Hospice Care Ambulatory"] ) HospicePerformed\n where HospicePerformed.performed.toInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter\n )\n or exists ( ( [ConditionEncounterDiagnosis: "Hospice Diagnosis"] ) HospiceCareDiagnosis\n where HospiceCareDiagnosis.prevalenceInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter\n and HospiceCareDiagnosis.isVerified ( )\n )\n or exists ( ( [ConditionProblemsHealthConcerns: "Hospice Diagnosis"] ) HospiceCareConcern\n where HospiceCareConcern.prevalenceInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter\n and HospiceCareConcern.isVerified ( )\n )\n\ndefine "Qualified VTE Encounter With Palliative Care Within Previous 90 Days":\n from\n "Qualified VTE Encounters" QualifiedVTEEncounter\n let NinetyDaysBeforeVTEEncounter: Interval[start of QualifiedVTEEncounter.period - 90 days, end of QualifiedVTEEncounter.period]\n where exists ( ( [ObservationScreeningAssessment: "Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)"] ) PalliativeAssessment\n where PalliativeAssessment.effective.toInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter\n and PalliativeAssessment.status in { 'final', 'amended', 'corrected' }\n )\n or exists ( ( ( [ConditionEncounterDiagnosis: "Palliative Care Diagnosis"] ) ) PalliativeCareDiagnosis\n where PalliativeCareDiagnosis.prevalenceInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter\n and PalliativeCareDiagnosis.isVerified ( )\n )\n or exists ( ( [ConditionProblemsHealthConcerns: "Palliative Care Diagnosis"] ) PalliativeCareConcern\n where PalliativeCareConcern.prevalenceInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter\n and PalliativeCareConcern.isVerified ( )\n )\n or exists ( ( [Encounter: "Palliative Care Encounter"] ) PalliativeEncounter\n where PalliativeEncounter.period overlaps day of NinetyDaysBeforeVTEEncounter\n )\n or exists ( ( [Procedure: "Palliative Care Intervention"] ) PalliativeIntervention\n where PalliativeIntervention.performed.toInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter\n )\n\ndefine "Qualified VTE Encounter With Other Qualified VTE Encounter Documented Within Previous 6 Months":\n "Qualified VTE Encounters" CurrentQualifiedVTE\n with "Qualified VTE Encounters" PreviousQualifiedVTE\n such that PreviousQualifiedVTE.period starts 6 months or less before start of CurrentQualifiedVTE.period\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"\n \n/*\n@description: Returns true if the given condition either has no verification status or has a verification status of confirmed, unconfirmed, provisional, or differential\n*/\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\n/*\n\n/*\n@description: Returns true if the given Condition is confirmed\n*/\n\n\ndefine fluent function isConfirmedCondition(condition ConditionEncounterDiagnosis):\n condition.verificationStatus ~ Status."confirmed"</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/CMS1173FHIRDiagnosticDelayVTE",
"version" : "1.1.000",
"name" : "CMS1173FHIRDiagnosticDelayVTE",
"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" : "LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVMxMTczRkhJUkRpYWdub3N0aWNEZWxheVZURSB2ZXJzaW9uICcxLjEuMDAwJwoKdXNpbmcgVVNRdWFsaXR5Q29yZSB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJwp1c2luZyBVU0NvcmUgdmVyc2lvbiAnNi4xLjAtZGVyaXZlZCcKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBobDcuZmhpci51di5jcWwuRkhJUkNvbW1vbiB2ZXJzaW9uICcyLjAuMCcgY2FsbGVkIEZISVJDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlQ29tbW9uIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIFVTQ29yZUNvbW1vbgppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5VU0NvcmVFbGVtZW50cyB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBVU0NvcmVFbGVtZW50cwoKaW5jbHVkZSBDUU1Db21tb24gdmVyc2lvbiAnNS4xLjAwMCcgY2FsbGVkIENRTUNvbW1vbgppbmNsdWRlIFVTUXVhbGl0eUNvcmVDb21tb24gdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcgY2FsbGVkIFVTUXVhbGl0eUNvcmVDb21tb24KaW5jbHVkZSBTdXBwbGVtZW50YWxEYXRhRWxlbWVudHMgdmVyc2lvbiAnNi4xLjAwMCcgY2FsbGVkIFNERQppbmNsdWRlIFN0YXR1cyB2ZXJzaW9uICcyLjEuMDAwJyBjYWxsZWQgU3RhdHVzCgpjb2Rlc3lzdGVtICJMT0lOQyI6ICdodHRwOi8vbG9pbmMub3JnJwpjb2Rlc3lzdGVtICJTTk9NRURDVCI6ICdodHRwOi8vc25vbWVkLmluZm8vc2N0JwoKdmFsdWVzZXQgIkFudGljb2FndWxhbnQgTWVkaWNhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMjA2LjE5Jwp2YWx1ZXNldCAiRW5jb3VudGVyIElucGF0aWVudCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy42NjYuNS4zMDcnCnZhbHVlc2V0ICJFdGhuaWNpdHkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTE0MjIyLjQuMTEuODM3Jwp2YWx1ZXNldCAiSG9zcGljZSBDYXJlIEFtYnVsYXRvcnkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTA4LjE1Jwp2YWx1ZXNldCAiSG9zcGljZSBEaWFnbm9zaXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTE2NScKdmFsdWVzZXQgIkhvc3BpY2UgRW5jb3VudGVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMDMnCnZhbHVlc2V0ICJJbWFnaW5nIFJlbGF0ZWQgdG8gVlRFIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTIwNi40NycKdmFsdWVzZXQgIk9mZmljZSBWaXNpdCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAwMScKdmFsdWVzZXQgIk91dHBhdGllbnQgRW5jb3VudGVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDg3Jwp2YWx1ZXNldCAiUGFsbGlhdGl2ZSBDYXJlIERpYWdub3NpcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTY3Jwp2YWx1ZXNldCAiUGFsbGlhdGl2ZSBDYXJlIEVuY291bnRlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTA5MCcKdmFsdWVzZXQgIlBhbGxpYXRpdmUgQ2FyZSBJbnRlcnZlbnRpb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTk4LjEyLjExMzUnCnZhbHVlc2V0ICJWVEUgRGlhZ25vc2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTIwNi40OScKdmFsdWVzZXQgIlZURSBTeW1wdG9tcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEyMDYuNTEnCgpjb2RlICJEaXNjaGFyZ2UgdG8gaGVhbHRoY2FyZSBmYWNpbGl0eSBmb3IgaG9zcGljZSBjYXJlIChwcm9jZWR1cmUpIjogJzQyODM3MTAwMDEyNDEwMCcgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ0Rpc2NoYXJnZSB0byBoZWFsdGhjYXJlIGZhY2lsaXR5IGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSknCmNvZGUgIkRpc2NoYXJnZSB0byBob21lIGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSkiOiAnNDI4MzYxMDAwMTI0MTA3JyBmcm9tICJTTk9NRURDVCIgZGlzcGxheSAnRGlzY2hhcmdlIHRvIGhvbWUgZm9yIGhvc3BpY2UgY2FyZSAocHJvY2VkdXJlKScKY29kZSAiSG9zcGljZSBjYXJlIFtNaW5pbXVtIERhdGEgU2V0XSI6ICc0NTc1NS02JyBmcm9tICJMT0lOQyIgZGlzcGxheSAnSG9zcGljZSBjYXJlIFtNaW5pbXVtIERhdGEgU2V0XScKY29kZSAiWWVzIChxdWFsaWZpZXIgdmFsdWUpIjogJzM3MzA2NjAwMScgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ1llcyAocXVhbGlmaWVyIHZhbHVlKScKY29kZSAiRnVuY3Rpb25hbCBBc3Nlc3NtZW50IG9mIENocm9uaWMgSWxsbmVzcyBUaGVyYXB5IC0gUGFsbGlhdGl2ZSBDYXJlIFF1ZXN0aW9ubmFpcmUgKEZBQ0lULVBhbCkiOiAnNzEwMDctOScgZnJvbSAiTE9JTkMiIGRpc3BsYXkgJ0Z1bmN0aW9uYWwgQXNzZXNzbWVudCBvZiBDaHJvbmljIElsbG5lc3MgVGhlcmFweSAtIFBhbGxpYXRpdmUgQ2FyZSBRdWVzdGlvbm5haXJlIChGQUNJVC1QYWwpJwoKcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGVUaW1lPgogIGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjYtMDEtMDFUMDA6MDA6MDAuMDAwWiwgQDIwMjctMDEtMDFUMDA6MDA6MDAuMDAwWikKCmNvbnRleHQgUGF0aWVudAoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogICAgLyoqKgogICAgKiBJbmNsdWRlcyBhbGwgUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIGluIHdoaWNoIHRoZSBwYXRpZW50IHdhcyBhZ2VkIDE4IG9yIG9sZGVyIGF0IHRoZSBzdGFydCBvZiB0aGUgcXVhbGlmaWVkIFZURSBlbmNvdW50ZXIuCiAgICAqKiovCiAgCiAgIlF1YWxpZmllZCBWVEUgRW5jb3VudGVycyBEdXJpbmcgTWVhc3VyZW1lbnQgUGVyaW9kIiBRdWFsaWZpZWRFbmNvdW50ZXIKICAgIHdoZXJlIEFnZUluWWVhcnNBdChkYXRlIGZyb20gc3RhcnQgb2YgUXVhbGlmaWVkRW5jb3VudGVyLnBlcmlvZCkgPj0gMTgKCmRlZmluZSAiRGVub21pbmF0b3IiOgogICJJbml0aWFsIFBvcHVsYXRpb24iCgpkZWZpbmUgIkRlbm9taW5hdG9yIEV4Y2x1c2lvbnMiOgogICJRdWFsaWZpZWQgVlRFIEVuY291bnRlciBXaXRoIEhvc3BpY2UgU2VydmljZXMgV2l0aGluIFByZXZpb3VzIDkwIERheXMiCiAgICB1bmlvbiAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXIgV2l0aCBQYWxsaWF0aXZlIENhcmUgV2l0aGluIFByZXZpb3VzIDkwIERheXMiCiAgICB1bmlvbiAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXIgV2l0aCBPdGhlciBRdWFsaWZpZWQgVlRFIEVuY291bnRlciBEb2N1bWVudGVkIFdpdGhpbiBQcmV2aW91cyA2IE1vbnRocyIKCmRlZmluZSAiTnVtZXJhdG9yIjoKICAgIC8qKioKICAgICogSW5jbHVkZXMgYWxsIHF1YWxpZmllZCBWVEUgZW5jb3VudGVycyBpbiB3aGljaCB0aGUgVlRFIGRpYWdub3NpcyBzdGFydGVkIGdyZWF0ZXIgdGhhbiAyNCBob3VycyBhZnRlciBhIHF1YWxpZnlpbmcgUENQIHZpc2l0LgogICAgKioqKi8KICAKICAiUXVhbGlmeWluZyBEZWxheWVkIFZURSBFbmNvdW50ZXIiCgpkZWZpbmUgIlF1YWxpZnlpbmcgUGVyZm9ybWVkIEVuY291bnRlcnMiOgogICggWyJFbmNvdW50ZXIiOiAiT2ZmaWNlIFZpc2l0Il0KICAgIHVuaW9uIFsiRW5jb3VudGVyIjogIk91dHBhdGllbnQgRW5jb3VudGVyIl0KICAgIHVuaW9uIFsiRW5jb3VudGVyIjogIkVuY291bnRlciBJbnBhdGllbnQiXSApIEVuY291bnRlcgogICAgd2hlcmUgRW5jb3VudGVyLnN0YXR1cyA9ICdmaW5pc2hlZCcKICAgICAgYW5kIEVuY291bnRlci5wZXJpb2Qgc3RhcnRzIGR1cmluZyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIgLSAxODAgZGF5cywgZW5kIG9mICJNZWFzdXJlbWVudCBQZXJpb2QiXQoKZGVmaW5lICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBQQ1AgVmlzaXRzIjoKICAoIFsiRW5jb3VudGVyIjogIk91dHBhdGllbnQgRW5jb3VudGVyIl0KICAgIHVuaW9uIFsiRW5jb3VudGVyIjogIk9mZmljZSBWaXNpdCJdICkgUENQVmlzaXQKICAgIHdoZXJlIFBDUFZpc2l0LnN0YXR1cyA9ICdmaW5pc2hlZCcKICAgICAgYW5kIFBDUFZpc2l0LnBlcmlvZCBlbmRzIGR1cmluZyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIgLSAyMTAgZGF5cywgZW5kIG9mICJNZWFzdXJlbWVudCBQZXJpb2QiXQoKZGVmaW5lICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBQQ1AgVmlzaXRzIFdpdGggVlRFIFN5bXB0b20iOgogICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBQQ1AgVmlzaXRzIiBJbmRleFBDUFZpc2l0CiAgICB3aGVyZSBJbmRleFBDUFZpc2l0LnJlYXNvbkNvZGUgaW4gIlZURSBTeW1wdG9tcyIKICAgICAgb3IgZXhpc3RzICggW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIlZURSBTeW1wdG9tcyJdIFZURVN5bXB0b21Db25kaXRpb24KICAgICAgICAgIHdoZXJlIFZURVN5bXB0b21Db25kaXRpb24uaXNWZXJpZmllZCAoICkKICAgICAgICAgICAgYW5kIEluZGV4UENQVmlzaXQucmVhc29uUmVmZXJlbmNlLnJlZmVyZW5jZXMgKCBWVEVTeW1wdG9tQ29uZGl0aW9uICkKICAgICAgKQoKZGVmaW5lICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBWVEUgRW5jb3VudGVycyI6CiAgIlF1YWxpZnlpbmcgUGVyZm9ybWVkIEVuY291bnRlcnMiIFZURUVuY291bnRlcgogICAgd2hlcmUgVlRFRW5jb3VudGVyLnJlYXNvbkNvZGUgaW4gIlZURSBEaWFnbm9zZXMiCiAgICAgIG9yIGV4aXN0cyAoIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJWVEUgRGlhZ25vc2VzIl0gVlRFQ29uZGl0aW9uCiAgICAgICAgICB3aGVyZSBWVEVDb25kaXRpb24uaXNDb25maXJtZWRDb25kaXRpb24gKCApCiAgICAgICAgICAgIGFuZCBWVEVFbmNvdW50ZXIucmVhc29uUmVmZXJlbmNlLnJlZmVyZW5jZXMgKCBWVEVDb25kaXRpb24gKQogICAgICApCgpkZWZpbmUgIlF1YWxpZnlpbmcgVlRFIEltYWdpbmcgRGlhZ25vc3RpYyBSZXBvcnQiOgogIFsiRGlhZ25vc3RpY1JlcG9ydE5vdGUiOiAiSW1hZ2luZyBSZWxhdGVkIHRvIFZURSJdIFZURURpYWdub3N0aWNSZXBvcnQKICAgIHdoZXJlIFZURURpYWdub3N0aWNSZXBvcnQuc3RhdHVzIGluIHsgJ2ZpbmFsJywgJ2FtZW5kZWQnLCAnY29ycmVjdGVkJyB9CgpkZWZpbmUgIkFudGlDb2FndWxhbnQgVGhlcmFweSBPcmRlcmVkIjoKICBbIk1lZGljYXRpb25SZXF1ZXN0IjogIkFudGljb2FndWxhbnQgTWVkaWNhdGlvbnMiXSBBbnRpQ29hZ3VsYW50CiAgICB3aGVyZSBBbnRpQ29hZ3VsYW50LnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CiAgICAgIGFuZCBBbnRpQ29hZ3VsYW50LmludGVudCA9ICdvcmRlcicKCmRlZmluZSAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIjoKICBmcm9tCiAgICAiUXVhbGlmeWluZyBQZXJmb3JtZWQgVlRFIEVuY291bnRlcnMiIFZURUVuY291bnRlciwKICAgICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBQQ1AgVmlzaXRzIFdpdGggVlRFIFN5bXB0b20iIEluZGV4UENQLAogICAgIlF1YWxpZnlpbmcgVlRFIEltYWdpbmcgRGlhZ25vc3RpYyBSZXBvcnQiIFZURVN0dWR5LAogICAgIkFudGlDb2FndWxhbnQgVGhlcmFweSBPcmRlcmVkIiBBbnRpQ29hZ3VsYW50T3JkZXJlZAogICAgd2hlcmUgVlRFU3R1ZHkuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApIHN0YXJ0cyBkdXJpbmcgZGF5IG9mIFZURUVuY291bnRlci5wZXJpb2QKICAgICAgYW5kICggQW50aUNvYWd1bGFudE9yZGVyZWQuYXV0aG9yZWRPbiAxMiBob3VycyBvciBsZXNzIGJlZm9yZSBzdGFydCBvZiBWVEVTdHVkeS5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkKICAgICAgICAgb3IgQW50aUNvYWd1bGFudE9yZGVyZWQuYXV0aG9yZWRPbiAxMiBob3VycyBvciBsZXNzIGFmdGVyIHN0YXJ0IG9mIFZURVN0dWR5LmVmZmVjdGl2ZS50b0ludGVydmFsICggKQogICAgICApCiAgICAgIGFuZCBJbmRleFBDUC5wZXJpb2Qgc3RhcnRzIDMwIGRheXMgb3IgbGVzcyBvbiBvciBiZWZvcmUgc3RhcnQgb2YgVlRFU3R1ZHkuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApCiAgICByZXR1cm4gVlRFRW5jb3VudGVyCgpkZWZpbmUgIlF1YWxpZmllZCBWVEUgRW5jb3VudGVycyBEdXJpbmcgTWVhc3VyZW1lbnQgUGVyaW9kIjoKICAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIKICAgIHdoZXJlIFF1YWxpZmllZFZURUVuY291bnRlci5wZXJpb2Qgc3RhcnRzIGR1cmluZyBkYXkgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKCmRlZmluZSAiUXVhbGlmeWluZyBEZWxheWVkIFZURSBFbmNvdW50ZXIiOgogICJRdWFsaWZpZWQgVlRFIEVuY291bnRlcnMgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCIgRGVsYXllZFZURUVuY291bnRlcgogICAgd2l0aCAiUXVhbGlmeWluZyBQZXJmb3JtZWQgUENQIFZpc2l0cyBXaXRoIFZURSBTeW1wdG9tIiBJbmRleFBDUFZpc2l0CiAgICAgIHN1Y2ggdGhhdCBEZWxheWVkVlRFRW5jb3VudGVyLnBlcmlvZCBzdGFydHMgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFtlbmQgb2YgSW5kZXhQQ1BWaXNpdC5wZXJpb2QgKyAyIGRheSwgZW5kIG9mIEluZGV4UENQVmlzaXQucGVyaW9kICsgMzAgZGF5c10KCmRlZmluZSAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXIgV2l0aCBIb3NwaWNlIFNlcnZpY2VzIFdpdGhpbiBQcmV2aW91cyA5MCBEYXlzIjoKICBmcm9tCiAgICAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIKICAgIGxldCBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyOiBJbnRlcnZhbFtzdGFydCBvZiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIucGVyaW9kIC0gOTAgZGF5cywgZW5kIG9mIFF1YWxpZmllZFZURUVuY291bnRlci5wZXJpb2RdCiAgICB3aGVyZSBleGlzdHMgKCBbIkVuY291bnRlciI6ICJFbmNvdW50ZXIgSW5wYXRpZW50Il0gSW5wYXRpZW50RW5jb3VudGVyCiAgICAgICAgd2hlcmUgKCBJbnBhdGllbnRFbmNvdW50ZXIuaG9zcGl0YWxpemF0aW9uLmRpc2NoYXJnZURpc3Bvc2l0aW9uIH4gIkRpc2NoYXJnZSB0byBob21lIGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSkiCiAgICAgICAgICAgIG9yIElucGF0aWVudEVuY291bnRlci5ob3NwaXRhbGl6YXRpb24uZGlzY2hhcmdlRGlzcG9zaXRpb24gfiAiRGlzY2hhcmdlIHRvIGhlYWx0aGNhcmUgZmFjaWxpdHkgZm9yIGhvc3BpY2UgY2FyZSAocHJvY2VkdXJlKSIKICAgICAgICApCiAgICAgICAgICBhbmQgSW5wYXRpZW50RW5jb3VudGVyLnBlcmlvZCBlbmRzIGR1cmluZyBkYXkgb2YgTmluZXR5RGF5c0JlZm9yZVZURUVuY291bnRlcgogICAgICAgICAgYW5kIElucGF0aWVudEVuY291bnRlci5zdGF0dXMgPSAnZmluaXNoZWQnCiAgICApCiAgICAgIG9yIGV4aXN0cyAoIFsiRW5jb3VudGVyIjogIkhvc3BpY2UgRW5jb3VudGVyIl0gSG9zcGljZUVuY291bnRlcgogICAgICAgICAgd2hlcmUgSG9zcGljZUVuY291bnRlci5wZXJpb2Qgb3ZlcmxhcHMgZGF5IG9mIE5pbmV0eURheXNCZWZvcmVWVEVFbmNvdW50ZXIKICAgICAgKQogICAgICBvciBleGlzdHMgKCAoIFtPYnNlcnZhdGlvblNjcmVlbmluZ0Fzc2Vzc21lbnQ6ICJIb3NwaWNlIGNhcmUgW01pbmltdW0gRGF0YSBTZXRdIl0gKSBIb3NwaWNlQXNzZXNzbWVudAogICAgICAgICAgd2hlcmUgSG9zcGljZUFzc2Vzc21lbnQudmFsdWUgfiAiWWVzIChxdWFsaWZpZXIgdmFsdWUpIgogICAgICAgICAgICBhbmQgSG9zcGljZUFzc2Vzc21lbnQuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyCiAgICAgICkKICAgICAgb3IgZXhpc3RzICggKCBbU2VydmljZVJlcXVlc3Q6ICJIb3NwaWNlIENhcmUgQW1idWxhdG9yeSJdICkgSG9zcGljZU9yZGVyCiAgICAgICAgICB3aGVyZSBIb3NwaWNlT3JkZXIuYXV0aG9yZWRPbiBkdXJpbmcgZGF5IG9mIE5pbmV0eURheXNCZWZvcmVWVEVFbmNvdW50ZXIKICAgICAgICAgICAgYW5kIEhvc3BpY2VPcmRlci5zdGF0dXMgaW4geyAnYWN0aXZlJywgJ2NvbXBsZXRlZCcgfQogICAgICApCiAgICAgIG9yIGV4aXN0cyAoICggW1Byb2NlZHVyZTogIkhvc3BpY2UgQ2FyZSBBbWJ1bGF0b3J5Il0gKSBIb3NwaWNlUGVyZm9ybWVkCiAgICAgICAgICB3aGVyZSBIb3NwaWNlUGVyZm9ybWVkLnBlcmZvcm1lZC50b0ludGVydmFsICggKSBvdmVybGFwcyBkYXkgb2YgTmluZXR5RGF5c0JlZm9yZVZURUVuY291bnRlcgogICAgICApCiAgICAgIG9yIGV4aXN0cyAoICggW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIkhvc3BpY2UgRGlhZ25vc2lzIl0gKSBIb3NwaWNlQ2FyZURpYWdub3NpcwogICAgICAgICAgd2hlcmUgSG9zcGljZUNhcmVEaWFnbm9zaXMucHJldmFsZW5jZUludGVydmFsICggKSBvdmVybGFwcyBkYXkgb2YgTmluZXR5RGF5c0JlZm9yZVZURUVuY291bnRlcgogICAgICAgICAgICBhbmQgSG9zcGljZUNhcmVEaWFnbm9zaXMuaXNWZXJpZmllZCAoICkKICAgICAgKQogICAgICBvciBleGlzdHMgKCAoIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiSG9zcGljZSBEaWFnbm9zaXMiXSApIEhvc3BpY2VDYXJlQ29uY2VybgogICAgICAgICAgd2hlcmUgSG9zcGljZUNhcmVDb25jZXJuLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mIE5pbmV0eURheXNCZWZvcmVWVEVFbmNvdW50ZXIKICAgICAgICAgICAgYW5kIEhvc3BpY2VDYXJlQ29uY2Vybi5pc1ZlcmlmaWVkICggKQogICAgICApCgpkZWZpbmUgIlF1YWxpZmllZCBWVEUgRW5jb3VudGVyIFdpdGggUGFsbGlhdGl2ZSBDYXJlIFdpdGhpbiBQcmV2aW91cyA5MCBEYXlzIjoKICBmcm9tCiAgICAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIKICAgIGxldCBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyOiBJbnRlcnZhbFtzdGFydCBvZiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIucGVyaW9kIC0gOTAgZGF5cywgZW5kIG9mIFF1YWxpZmllZFZURUVuY291bnRlci5wZXJpb2RdCiAgICB3aGVyZSBleGlzdHMgKCAoIFtPYnNlcnZhdGlvblNjcmVlbmluZ0Fzc2Vzc21lbnQ6ICJGdW5jdGlvbmFsIEFzc2Vzc21lbnQgb2YgQ2hyb25pYyBJbGxuZXNzIFRoZXJhcHkgLSBQYWxsaWF0aXZlIENhcmUgUXVlc3Rpb25uYWlyZSAoRkFDSVQtUGFsKSJdICkgUGFsbGlhdGl2ZUFzc2Vzc21lbnQKICAgICAgICB3aGVyZSBQYWxsaWF0aXZlQXNzZXNzbWVudC5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mIE5pbmV0eURheXNCZWZvcmVWVEVFbmNvdW50ZXIKICAgICAgICAgIGFuZCBQYWxsaWF0aXZlQXNzZXNzbWVudC5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICAgICkKICAgICAgb3IgZXhpc3RzICggKCAoIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJQYWxsaWF0aXZlIENhcmUgRGlhZ25vc2lzIl0gKSApIFBhbGxpYXRpdmVDYXJlRGlhZ25vc2lzCiAgICAgICAgICB3aGVyZSBQYWxsaWF0aXZlQ2FyZURpYWdub3Npcy5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyCiAgICAgICAgICAgIGFuZCBQYWxsaWF0aXZlQ2FyZURpYWdub3Npcy5pc1ZlcmlmaWVkICggKQogICAgICApCiAgICAgIG9yIGV4aXN0cyAoICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJQYWxsaWF0aXZlIENhcmUgRGlhZ25vc2lzIl0gKSBQYWxsaWF0aXZlQ2FyZUNvbmNlcm4KICAgICAgICAgIHdoZXJlIFBhbGxpYXRpdmVDYXJlQ29uY2Vybi5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyCiAgICAgICAgICAgIGFuZCBQYWxsaWF0aXZlQ2FyZUNvbmNlcm4uaXNWZXJpZmllZCAoICkKICAgICAgKQogICAgICBvciBleGlzdHMgKCAoIFtFbmNvdW50ZXI6ICJQYWxsaWF0aXZlIENhcmUgRW5jb3VudGVyIl0gKSBQYWxsaWF0aXZlRW5jb3VudGVyCiAgICAgICAgICB3aGVyZSBQYWxsaWF0aXZlRW5jb3VudGVyLnBlcmlvZCBvdmVybGFwcyBkYXkgb2YgTmluZXR5RGF5c0JlZm9yZVZURUVuY291bnRlcgogICAgICApCiAgICAgIG9yIGV4aXN0cyAoICggW1Byb2NlZHVyZTogIlBhbGxpYXRpdmUgQ2FyZSBJbnRlcnZlbnRpb24iXSApIFBhbGxpYXRpdmVJbnRlcnZlbnRpb24KICAgICAgICAgIHdoZXJlIFBhbGxpYXRpdmVJbnRlcnZlbnRpb24ucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyCiAgICAgICkKCmRlZmluZSAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXIgV2l0aCBPdGhlciBRdWFsaWZpZWQgVlRFIEVuY291bnRlciBEb2N1bWVudGVkIFdpdGhpbiBQcmV2aW91cyA2IE1vbnRocyI6CiAgIlF1YWxpZmllZCBWVEUgRW5jb3VudGVycyIgQ3VycmVudFF1YWxpZmllZFZURQogICAgd2l0aCAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIiBQcmV2aW91c1F1YWxpZmllZFZURQogICAgICBzdWNoIHRoYXQgUHJldmlvdXNRdWFsaWZpZWRWVEUucGVyaW9kIHN0YXJ0cyA2IG1vbnRocyBvciBsZXNzIGJlZm9yZSBzdGFydCBvZiBDdXJyZW50UXVhbGlmaWVkVlRFLnBlcmlvZAoKZGVmaW5lICJTREUgRXRobmljaXR5IjoKICBTREUuIlNERSBFdGhuaWNpdHkiCgpkZWZpbmUgIlNERSBQYXllciI6CiAgU0RFLiJTREUgUGF5ZXIiCgpkZWZpbmUgIlNERSBSYWNlIjoKICBTREUuIlNERSBSYWNlIgoKZGVmaW5lICJTREUgU2V4IjoKICBTREUuIlNERSBTZXgiCiAgCi8qCkBkZXNjcmlwdGlvbjogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBjb25kaXRpb24gZWl0aGVyIGhhcyBubyB2ZXJpZmljYXRpb24gc3RhdHVzIG9yIGhhcyBhIHZlcmlmaWNhdGlvbiBzdGF0dXMgb2YgY29uZmlybWVkLCB1bmNvbmZpcm1lZCwgcHJvdmlzaW9uYWwsIG9yIGRpZmZlcmVudGlhbAoqLwoKCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gaXNWZXJpZmllZChjb25kaXRpb24gQ2hvaWNlPENvbmRpdGlvbkVuY291bnRlckRpYWdub3NpcywgQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJucz4pOgogIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgaXMgbm90IG51bGwgaW1wbGllcyAoIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgfiBTdGF0dXMuImNvbmZpcm1lZCIKICAgICAgb3IgY29uZGl0aW9uLnZlcmlmaWNhdGlvblN0YXR1cyB+IFN0YXR1cy4idW5jb25maXJtZWQiCiAgICAgIG9yIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgfiBTdGF0dXMuInByb3Zpc2lvbmFsIgogICAgICBvciBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIH4gU3RhdHVzLiJkaWZmZXJlbnRpYWwiCiAgKQoKLyoKCi8qCkBkZXNjcmlwdGlvbjogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBDb25kaXRpb24gaXMgY29uZmlybWVkCiovCgoKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc0NvbmZpcm1lZENvbmRpdGlvbihjb25kaXRpb24gQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzKToKICBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIH4gU3RhdHVzLiJjb25maXJtZWQi",
"url" : "https://madie.cms.gov/Library-CMS1173FHIRDiagnosticDelayVTE.cql"
}
]
}