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

: AHAOverall - JSON Representation

Active as of 2025-08-22

Raw json | Download

{
  "resourceType" : "Library",
  "id" : "AHAOverall",
  "meta" : {
    "profile" : [
      🔗 "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"🔗 ,
      "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-computablelibrary"🔗 ,
      "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"🔗 ,
      "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-executablelibrary"🔗 ,
      "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"🔗 ,
      "http://hl7.org/fhir/uv/cql/StructureDefinition/elm-json-library"🔗 ,
      "http://hl7.org/fhir/uv/cql/StructureDefinition/elm-xml-library"
    ]
  },
  "language" : "en",
  "text" : {
    "status" : "extensions",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\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<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Title</th>\n\n\n\n<td class=\"content-container\">AHAOverall</td>\n\n\n</tr>\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\">5.1.000</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<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Topic</th>\n\n\n\n<td class=\"content-container\">FHIR\n</td>\n\n\n</tr>\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Topic</th>\n\n\n\n<td class=\"content-container\">CQL\n</td>\n\n\n</tr>\n\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Steward (Publisher)</th>\n\n\n\n<td class=\"content-container\">Telligen</td>\n\n\n</tr>\n\n\n\n\n\n\n\n<tr>\n\n\n<th scope=\"row\" class=\"row-header\">Description</th>\n\n\n\n<td class=\"content-container\"><div><p>This version of the AHAOverall library is patterned after HFCommonDefinitionsQDM library version '3.0.000'</p>\n</div></td>\n\n\n</tr>\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 AHAOverall version '5.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 USQualityCoreCommon version '0.1.0-cibuild' called USQualityCoreCommon\n\ncodesystem &quot;SNOMEDCT&quot;: 'http://snomed.info/sct'\n\nvalueset &quot;Care Services in Long Term Residential Facility&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1014'\nvalueset &quot;Ejection Fraction&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1134'\nvalueset &quot;Heart Failure&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.376'\nvalueset &quot;Heart Transplant&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1178.33'\nvalueset &quot;Heart Transplant Complications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1178.56'\nvalueset &quot;Home Healthcare Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016'\nvalueset &quot;Left Ventricular Assist Device Complications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1178.58'\nvalueset &quot;Left Ventricular Assist Device Placement&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1178.61'\nvalueset &quot;Moderate or Severe&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1092'\nvalueset &quot;Moderate or Severe LVSD&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1090'\nvalueset &quot;Nursing Facility Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1012'\nvalueset &quot;Office Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'\nvalueset &quot;Outpatient Consultation&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008'\nvalueset &quot;Patient Provider Interaction&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1012'\n\ncode &quot;Left ventricular systolic dysfunction (disorder)&quot;: '134401001' from &quot;SNOMEDCT&quot; display 'Left ventricular systolic dysfunction (disorder)'\n\nparameter &quot;Measurement Period&quot; Interval&lt;DateTime&gt;\n  default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)\n\ncontext Patient\n\n/*\n@description: Returns certain finished encounter types that overlap a Heart Failure condition and are during the measurement period: \n                * care services in long term residential facility (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1014)\n                * home healthcare services (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016)\n                * nursing facility visits (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1012)\n                * office visits (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001)\n                * outpatient consultation (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008)\n*/\ndefine &quot;Heart Failure Outpatient Encounter&quot;:\n  &quot;Outpatient Encounter&quot; QualifyingEncounter\n    with ( [Condition: &quot;Heart Failure&quot;] ) HeartFailure\n      such that HeartFailure.prevalenceInterval ( ) overlaps day of QualifyingEncounter.period\n        and HeartFailure.isVerified ( )\n    where QualifyingEncounter.period during day of &quot;Measurement Period&quot;\n      and QualifyingEncounter.isEncounterFinished ( )\n\ndefine &quot;Outpatient Encounter&quot;:\n  ( [Encounter: &quot;Care Services in Long Term Residential Facility&quot;]\n      union [Encounter: &quot;Home Healthcare Services&quot;]\n      union [Encounter: &quot;Nursing Facility Visit&quot;]\n      union [Encounter: &quot;Office Visit&quot;]\n      union [Encounter: &quot;Outpatient Consultation&quot;]\n  ) \n\n/*\n@description: Returns true if patient has confirmed heart transplant complications that start before the end of a heart failure outpatient encounter with history of moderate or severe LVSD \n*/\ndefine &quot;Has Heart Transplant Complications&quot;:\n  exists ( ( [Condition: &quot;Heart Transplant Complications&quot;] ) HeartTransplantComplications\n      let diagnosisStart: Coalesce(start of HeartTransplantComplications.prevalenceInterval(), HeartTransplantComplications.recordedDate)\n      with &quot;Heart Failure Outpatient Encounter with History of Moderate or Severe LVSD&quot; ModerateOrSevereLVSDHFOutpatientEncounter\n        such that date from diagnosisStart on or before date from end of ModerateOrSevereLVSDHFOutpatientEncounter.period\n      where HeartTransplantComplications.isVerified ( )\n  )\n\n/*\n@description: Returns true if patient has a completed LVAD placement that starts before the end of a heart failure outpatient encounter with history of moderate or severe LVSD\n*/\ndefine &quot;Has Left Ventricular Assist Device&quot;:\n  exists ( [Procedure: &quot;Left Ventricular Assist Device Placement&quot;] LVADPlacement\n      with &quot;Heart Failure Outpatient Encounter with History of Moderate or Severe LVSD&quot; ModerateOrSevereLVSDHFOutpatientEncounter\n        such that LVADPlacement.performed.toInterval ( ) starts before day of end of ModerateOrSevereLVSDHFOutpatientEncounter.period\n      where LVADPlacement.status = 'completed'\n  )\n\n/*\n@description: Returns true if patient has active LVAD complications that start before the end of a heart failure outpatient encounter with history of moderate or severe LVSD\n*/\ndefine &quot;Has Left Ventricular Assist Device Complications&quot;:\n  exists ( ( [Condition: &quot;Left Ventricular Assist Device Complications&quot;] ) LVADComplications\n      let diagnosisStart: Coalesce(start of LVADComplications.prevalenceInterval(), LVADComplications.recordedDate)\n      with &quot;Heart Failure Outpatient Encounter with History of Moderate or Severe LVSD&quot; ModerateOrSevereLVSDHFOutpatientEncounter\n        such that date from diagnosisStart on or before date from end of ModerateOrSevereLVSDHFOutpatientEncounter.period\n      where LVADComplications.isVerified ( )\n  )             \n\n/*\n@description: Returns certain finished encounter types that occurred during the measurement period: \n                * office visits (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001)\n                * outpatient consultation (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008)\n                * nursing facility visits (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1012)\n                * care services in long term residential facility (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1014)\n                * home healthcare services (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016)\n                * patient provider interactions (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1012) \n*/\ndefine &quot;Qualifying Outpatient Encounter During Measurement Period&quot;:\n  &quot;Outpatient Encounter or Patient Provider Interaction&quot; ValidEncounter\n    where ValidEncounter.period during day of &quot;Measurement Period&quot;\n      and ValidEncounter.isEncounterFinished ( )\n\ndefine &quot;Outpatient Encounter or Patient Provider Interaction&quot;:\n  &quot;Outpatient Encounter&quot;\n    union [Encounter: &quot;Patient Provider Interaction&quot;]\n\n/*\n@description: Returns completed heart tansplant procedures that start before the end of a heart failure outpatient encounter with history of moderate or severe LVSD\n*/\ndefine &quot;Has Heart Transplant&quot;:\n  exists ( [Procedure: &quot;Heart Transplant&quot;] HeartTransplant\n      with &quot;Heart Failure Outpatient Encounter with History of Moderate or Severe LVSD&quot; ModerateOrSevereLVSDHFOutpatientEncounter\n        such that HeartTransplant.performed.toInterval ( ) starts before end of ModerateOrSevereLVSDHFOutpatientEncounter.period\n      where HeartTransplant.status = 'completed'\n  )\n\n/*\n@description: Returns heart failure outpatient encounters that start before the end of a moderate or severe LVSD finding\n*/\ndefine &quot;Heart Failure Outpatient Encounter with History of Moderate or Severe LVSD&quot;:\n  &quot;Heart Failure Outpatient Encounter&quot; HFOutpatientEncounter\n    with &quot;Moderate or Severe LVSD Findings&quot; LVSDFindings\n      such that Coalesce(LVSDFindings.prevalenceInterval(), LVSDFindings.effective.toInterval()) starts before end of HFOutpatientEncounter.period \n\n/*\n@description: Returns a union  of the following:\n                * Observations where the final, amended or correction ejection fraction result is &lt;= 40\n                * Moderate or Severe LVSD conditions where the diagnosis has been confirmed as active\n*/\ndefine &quot;Moderate or Severe LVSD Findings&quot;:\n  ( [ObservationClinicalResult: &quot;Ejection Fraction&quot;] EjectionFraction\n      where EjectionFraction.value as Quantity &lt;= 40 '%'\n        and EjectionFraction.status in { 'final', 'amended', 'corrected' }\n  )\n    union ( ( ( [Condition: &quot;Moderate or Severe LVSD&quot;] )\n      union ( ( [Condition: &quot;Left ventricular systolic dysfunction (disorder)&quot;] ) LVSDDiagnosis\n        where LVSDDiagnosis.severity in &quot;Moderate or Severe&quot;\n      ) ) ModerateOrSevereLVSD\n      where ModerateOrSevereLVSD.isVerified ( )\n    ) \n\n/*\n@description: Returns true if the patient meets the following criteria:\n                * 18 years of age or older,\n                * Has two Qualifying Outpatient Encounters During Measurement Period\n                * Has a Heart Failure Outpatient Encounter\n*/\ndefine &quot;Is Adult With Two Qualifying Outpatient Encounters and One Heart Failure Outpatient Encounter During the Measurement Period&quot;:\n  AgeInYearsAt(date from start of &quot;Measurement Period&quot;) &gt;= 18\n    and exists ( &quot;Qualifying Outpatient Encounter During Measurement Period&quot; Encounter1\n        with &quot;Qualifying Outpatient Encounter During Measurement Period&quot; Encounter2\n          such that Encounter2.id !~ Encounter1.id\n    )\n    and exists &quot;Heart Failure Outpatient Encounter&quot;   \n\n\n/*\n@description: Returns true if the given Encounter is finished\n*/\ndefine fluent function isEncounterFinished(Encounter Encounter):\n  Encounter.status = 'finished'\n\n/*\n@description: Returns true if the given MedicationRequest is ordered during the heart failure outpatient encounter with history of moderate or severe LVSD at any point\n*/\ndefine fluent function isOrderedDuringHeartFailureOutpatientEncounter(MedicationRequest MedicationRequest):\n  exists ( &quot;Heart Failure Outpatient Encounter with History of Moderate or Severe LVSD&quot; ModerateOrSevereLVSDHFOutpatientEncounter\n      where MedicationRequest.authoredOn during day of ModerateOrSevereLVSDHFOutpatientEncounter.period\n        and MedicationRequest.status in { 'active', 'completed' }\n        and MedicationRequest.intent in { 'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order' }\n        and not exists ( [&quot;TaskRejected&quot;] TaskReject\n            where TaskReject.focus.references ( MedicationRequest )\n              and TaskReject.code ~ USQualityCoreCommon.&quot;Fulfill&quot;\n        )\n  )\n\n/*\n@description: Returns true if the given MedicationNotRequested overlaps after the day of the heart failure outpatient encounter with history of moderate or severe LVSD\n*/\ndefine fluent function isMedicationNotRequestedOrderedDuringHeartFailureOutpatientEncounter(MedicationRequest MedicationNotRequested):\n  exists ( &quot;Heart Failure Outpatient Encounter with History of Moderate or Severe LVSD&quot; ModerateOrSevereLVSDHFOutpatientEncounter\n      where MedicationRequest.authoredOn during day of ModerateOrSevereLVSDHFOutpatientEncounter.period\n        and MedicationRequest.status in { 'completed', 'active' }\n        and MedicationRequest.intent in { 'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order' }\n        and not exists ( [&quot;TaskRejected&quot;] TaskReject\n            where TaskReject.focus.references ( MedicationRequest )\n              and TaskReject.code ~ USQualityCoreCommon.&quot;Fulfill&quot;\n        )\n  )\n\n/*\n@description: Returns true if the given Condition overlaps the heart failure outpatient encounter with history of moderate or severe LVSD at any point\n*/\ndefine fluent function overlapsHeartFailureOutpatientEncounter(Condition USQualityCore.ConditionEncounterDiagnosis):\n  exists ( &quot;Heart Failure Outpatient Encounter with History of Moderate or Severe LVSD&quot; ModerateOrSevereLVSDHFOutpatientEncounter\n      where Condition.prevalenceInterval ( ) overlaps day of ModerateOrSevereLVSDHFOutpatientEncounter.period\n        and Condition.isVerified ( )\n  )\n\n/*\n@overloaded\n@description: Returns true if the given Condition overlaps after the day of the heart failure outpatient encounter with history of moderate or severe LVSD\n*/\ndefine fluent function overlapsAfterHeartFailureOutpatientEncounter(Condition USQualityCore.ConditionEncounterDiagnosis):\n  exists ( &quot;Heart Failure Outpatient Encounter with History of Moderate or Severe LVSD&quot; ModerateOrSevereLVSDHFOutpatientEncounter\n      where Condition.prevalenceInterval ( ) overlaps after day of ModerateOrSevereLVSDHFOutpatientEncounter.period\n        and Condition.isVerified ( )\n  )\n\n/*\n@overloaded\n@description: Returns true if the given Procedure overlaps after the day of the heart failure outpatient encounter with history of moderate or severe LVSD\n*/\ndefine fluent function overlapsAfterHeartFailureOutpatientEncounter(Procedure Procedure):\n  exists ( &quot;Heart Failure Outpatient Encounter with History of Moderate or Severe LVSD&quot; ModerateOrSevereLVSDHFOutpatientEncounter\n      where Procedure.performed.toInterval ( ) overlaps after day of ModerateOrSevereLVSDHFOutpatientEncounter.period\n        and Procedure.status = 'completed'\n  )\n\n/*\n@overloaded\n@description: Returns true if the given AllergyIntolerance overlaps after the day of the heart failure outpatient encounter with history of moderate or severe LVSD\n*/\ndefine fluent function overlapsAfterHeartFailureOutpatientEncounter(AllergyIntolerance AllergyIntolerance):\n  exists ( &quot;Heart Failure Outpatient Encounter with History of Moderate or Severe LVSD&quot; ModerateOrSevereLVSDHFOutpatientEncounter\n      where Interval[start of AllergyIntolerance.prevalenceInterval ( ), AllergyIntolerance.lastOccurrence]overlaps after day of ModerateOrSevereLVSDHFOutpatientEncounter.period\n        and AllergyIntolerance.isVerified ( )\n  )\n          \n/*\n@overloaded\n@description: Returns true if the given MedicationRequest overlaps after the day of the heart failure outpatient encounter with history of moderate or severe LVSD\n*/\ndefine fluent function overlapsAfterHeartFailureOutpatientEncounter(MedicationRequest MedicationRequest):\n  exists ( &quot;Heart Failure Outpatient Encounter with History of Moderate or Severe LVSD&quot; ModerateOrSevereLVSDHFOutpatientEncounter\n      where First((collapse(MedicationRequest.dosageInstruction.timing.repeat.bounds DoseTime\n            return TimingBoundToInterval(MedicationRequest.authoredOn, DoseTime)\n        )) DrugPeriods\n          sort by start of $this\n      ) overlaps after day of ModerateOrSevereLVSDHFOutpatientEncounter.period\n        and MedicationRequest.status in { 'active', 'completed' }\n        and MedicationRequest.intent in { 'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order' }\n        and not exists ( [&quot;TaskRejected&quot;] TaskReject\n            where TaskReject.focus.references ( MedicationRequest )\n              and TaskReject.code ~ USQualityCoreCommon.&quot;Fulfill&quot;\n        )\n  )\n\n/*\n@overloaded\n@description: Returns true if the given HeartRateObservation overlaps after the day of the heart failure outpatient encounter with history of moderate or severe LVSD\n*/\ndefine fluent function overlapsAfterHeartFailureOutpatientEncounter(HeartRateObservation USCore.HeartRateProfile):\n  exists ( &quot;Heart Failure Outpatient Encounter with History of Moderate or Severe LVSD&quot; ModerateOrSevereLVSDHFOutpatientEncounter\n      where HeartRateObservation.effective.toInterval ( ) overlaps after day of ModerateOrSevereLVSDHFOutpatientEncounter.period\n        and HeartRateObservation.status in { 'final', 'amended', 'corrected' }\n  )\n\n/*\n@description: Converts the possible representations of the timing bound to an interval using the given date as an anchor for durations\n*/ \ndefine function TimingBoundToInterval(startDate System.DateTime, choice Choice&lt;FHIR.Duration, FHIR.Range, FHIR.Period&gt;):\n  case\n    when choice is FHIR.Period then\n        choice as FHIR.Period\n    when choice is FHIR.Range then\n        Interval[startDate + (choice.low as Quantity), startDate + (choice.high as Quantity)]\n    when choice is FHIR.Duration then\n        Interval[startDate, startDate + (choice as FHIR.Duration))\n    else\n\t\tnull as Interval&lt;DateTime&gt;\n\tend</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/AHAOverall",
  "version" : "5.1.000",
  "name" : "AHAOverall",
  "title" : "AHAOverall",
  "status" : "active",
  "experimental" : false,
  "type" : {
    "coding" : [
      {
        "system" : "http://terminology.hl7.org/CodeSystem/library-type",
        "code" : "logic-library"
      }
    ]
  },
  "date" : "2025-08-22T19:19:03+00:00",
  "publisher" : "Telligen",
  "description" : "This version of the AHAOverall library is patterned after HFCommonDefinitionsQDM library version '3.0.000'",
  "topic" : [
    {
      "text" : "FHIR"
    },
    {
      "text" : "CQL"
    }
  ],
  "content" : [
    {
      "contentType" : "text/cql",
      "data" : "LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBBSEFPdmVyYWxsIHZlcnNpb24gJzUuMS4wMDAnCgp1c2luZyBVU1F1YWxpdHlDb3JlIHZlcnNpb24gJzAuMS4wLWNpYnVpbGQnCnVzaW5nIFVTQ29yZSB2ZXJzaW9uICc2LjEuMC1kZXJpdmVkJwp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBobDcuZmhpci51di5jcWwuRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnIGNhbGxlZCBGSElSSGVscGVycwppbmNsdWRlIGhsNy5maGlyLnV2LmNxbC5GSElSQ29tbW9uIHZlcnNpb24gJzIuMC4wJyBjYWxsZWQgRkhJUkNvbW1vbgppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5VU0NvcmVDb21tb24gdmVyc2lvbiAnMi4wLjAtYmFsbG90JyBjYWxsZWQgVVNDb3JlQ29tbW9uCmluY2x1ZGUgaGw3LmZoaXIudXMuY3FsLlVTQ29yZUVsZW1lbnRzIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIFVTQ29yZUVsZW1lbnRzCgppbmNsdWRlIFVTUXVhbGl0eUNvcmVDb21tb24gdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcgY2FsbGVkIFVTUXVhbGl0eUNvcmVDb21tb24KCmNvZGVzeXN0ZW0gIlNOT01FRENUIjogJ2h0dHA6Ly9zbm9tZWQuaW5mby9zY3QnCgp2YWx1ZXNldCAiQ2FyZSBTZXJ2aWNlcyBpbiBMb25nIFRlcm0gUmVzaWRlbnRpYWwgRmFjaWxpdHkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMTQnCnZhbHVlc2V0ICJFamVjdGlvbiBGcmFjdGlvbiI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4xMTM0Jwp2YWx1ZXNldCAiSGVhcnQgRmFpbHVyZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4zNzYnCnZhbHVlc2V0ICJIZWFydCBUcmFuc3BsYW50IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTE3OC4zMycKdmFsdWVzZXQgIkhlYXJ0IFRyYW5zcGxhbnQgQ29tcGxpY2F0aW9ucyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExNzguNTYnCnZhbHVlc2V0ICJIb21lIEhlYWx0aGNhcmUgU2VydmljZXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMTYnCnZhbHVlc2V0ICJMZWZ0IFZlbnRyaWN1bGFyIEFzc2lzdCBEZXZpY2UgQ29tcGxpY2F0aW9ucyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExNzguNTgnCnZhbHVlc2V0ICJMZWZ0IFZlbnRyaWN1bGFyIEFzc2lzdCBEZXZpY2UgUGxhY2VtZW50IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTE3OC42MScKdmFsdWVzZXQgIk1vZGVyYXRlIG9yIFNldmVyZSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4xMDkyJwp2YWx1ZXNldCAiTW9kZXJhdGUgb3IgU2V2ZXJlIExWU0QiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNTI2LjMuMTA5MCcKdmFsdWVzZXQgIk51cnNpbmcgRmFjaWxpdHkgVmlzaXQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMTInCnZhbHVlc2V0ICJPZmZpY2UgVmlzaXQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMDEnCnZhbHVlc2V0ICJPdXRwYXRpZW50IENvbnN1bHRhdGlvbiI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAwOCcKdmFsdWVzZXQgIlBhdGllbnQgUHJvdmlkZXIgSW50ZXJhY3Rpb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNTI2LjMuMTAxMicKCmNvZGUgIkxlZnQgdmVudHJpY3VsYXIgc3lzdG9saWMgZHlzZnVuY3Rpb24gKGRpc29yZGVyKSI6ICcxMzQ0MDEwMDEnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdMZWZ0IHZlbnRyaWN1bGFyIHN5c3RvbGljIGR5c2Z1bmN0aW9uIChkaXNvcmRlciknCgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZVRpbWU+CiAgZGVmYXVsdCBJbnRlcnZhbFtAMjAyNi0wMS0wMVQwMDowMDowMC4wMDBaLCBAMjAyNy0wMS0wMVQwMDowMDowMC4wMDBaKQoKY29udGV4dCBQYXRpZW50CgovKgpAZGVzY3JpcHRpb246IFJldHVybnMgY2VydGFpbiBmaW5pc2hlZCBlbmNvdW50ZXIgdHlwZXMgdGhhdCBvdmVybGFwIGEgSGVhcnQgRmFpbHVyZSBjb25kaXRpb24gYW5kIGFyZSBkdXJpbmcgdGhlIG1lYXN1cmVtZW50IHBlcmlvZDogCiAgICAgICAgICAgICAgICAqIGNhcmUgc2VydmljZXMgaW4gbG9uZyB0ZXJtIHJlc2lkZW50aWFsIGZhY2lsaXR5IChodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAxNCkKICAgICAgICAgICAgICAgICogaG9tZSBoZWFsdGhjYXJlIHNlcnZpY2VzIChodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAxNikKICAgICAgICAgICAgICAgICogbnVyc2luZyBmYWNpbGl0eSB2aXNpdHMgKGh0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDEyKQogICAgICAgICAgICAgICAgKiBvZmZpY2UgdmlzaXRzIChodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAwMSkKICAgICAgICAgICAgICAgICogb3V0cGF0aWVudCBjb25zdWx0YXRpb24gKGh0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDA4KQoqLwpkZWZpbmUgIkhlYXJ0IEZhaWx1cmUgT3V0cGF0aWVudCBFbmNvdW50ZXIiOgogICJPdXRwYXRpZW50IEVuY291bnRlciIgUXVhbGlmeWluZ0VuY291bnRlcgogICAgd2l0aCAoIFtDb25kaXRpb246ICJIZWFydCBGYWlsdXJlIl0gKSBIZWFydEZhaWx1cmUKICAgICAgc3VjaCB0aGF0IEhlYXJ0RmFpbHVyZS5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBRdWFsaWZ5aW5nRW5jb3VudGVyLnBlcmlvZAogICAgICAgIGFuZCBIZWFydEZhaWx1cmUuaXNWZXJpZmllZCAoICkKICAgIHdoZXJlIFF1YWxpZnlpbmdFbmNvdW50ZXIucGVyaW9kIGR1cmluZyBkYXkgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgYW5kIFF1YWxpZnlpbmdFbmNvdW50ZXIuaXNFbmNvdW50ZXJGaW5pc2hlZCAoICkKCmRlZmluZSAiT3V0cGF0aWVudCBFbmNvdW50ZXIiOgogICggW0VuY291bnRlcjogIkNhcmUgU2VydmljZXMgaW4gTG9uZyBUZXJtIFJlc2lkZW50aWFsIEZhY2lsaXR5Il0KICAgICAgdW5pb24gW0VuY291bnRlcjogIkhvbWUgSGVhbHRoY2FyZSBTZXJ2aWNlcyJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJOdXJzaW5nIEZhY2lsaXR5IFZpc2l0Il0KICAgICAgdW5pb24gW0VuY291bnRlcjogIk9mZmljZSBWaXNpdCJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJPdXRwYXRpZW50IENvbnN1bHRhdGlvbiJdCiAgKSAKCi8qCkBkZXNjcmlwdGlvbjogUmV0dXJucyB0cnVlIGlmIHBhdGllbnQgaGFzIGNvbmZpcm1lZCBoZWFydCB0cmFuc3BsYW50IGNvbXBsaWNhdGlvbnMgdGhhdCBzdGFydCBiZWZvcmUgdGhlIGVuZCBvZiBhIGhlYXJ0IGZhaWx1cmUgb3V0cGF0aWVudCBlbmNvdW50ZXIgd2l0aCBoaXN0b3J5IG9mIG1vZGVyYXRlIG9yIHNldmVyZSBMVlNEIAoqLwpkZWZpbmUgIkhhcyBIZWFydCBUcmFuc3BsYW50IENvbXBsaWNhdGlvbnMiOgogIGV4aXN0cyAoICggW0NvbmRpdGlvbjogIkhlYXJ0IFRyYW5zcGxhbnQgQ29tcGxpY2F0aW9ucyJdICkgSGVhcnRUcmFuc3BsYW50Q29tcGxpY2F0aW9ucwogICAgICBsZXQgZGlhZ25vc2lzU3RhcnQ6IENvYWxlc2NlKHN0YXJ0IG9mIEhlYXJ0VHJhbnNwbGFudENvbXBsaWNhdGlvbnMucHJldmFsZW5jZUludGVydmFsKCksIEhlYXJ0VHJhbnNwbGFudENvbXBsaWNhdGlvbnMucmVjb3JkZWREYXRlKQogICAgICB3aXRoICJIZWFydCBGYWlsdXJlIE91dHBhdGllbnQgRW5jb3VudGVyIHdpdGggSGlzdG9yeSBvZiBNb2RlcmF0ZSBvciBTZXZlcmUgTFZTRCIgTW9kZXJhdGVPclNldmVyZUxWU0RIRk91dHBhdGllbnRFbmNvdW50ZXIKICAgICAgICBzdWNoIHRoYXQgZGF0ZSBmcm9tIGRpYWdub3Npc1N0YXJ0IG9uIG9yIGJlZm9yZSBkYXRlIGZyb20gZW5kIG9mIE1vZGVyYXRlT3JTZXZlcmVMVlNESEZPdXRwYXRpZW50RW5jb3VudGVyLnBlcmlvZAogICAgICB3aGVyZSBIZWFydFRyYW5zcGxhbnRDb21wbGljYXRpb25zLmlzVmVyaWZpZWQgKCApCiAgKQoKLyoKQGRlc2NyaXB0aW9uOiBSZXR1cm5zIHRydWUgaWYgcGF0aWVudCBoYXMgYSBjb21wbGV0ZWQgTFZBRCBwbGFjZW1lbnQgdGhhdCBzdGFydHMgYmVmb3JlIHRoZSBlbmQgb2YgYSBoZWFydCBmYWlsdXJlIG91dHBhdGllbnQgZW5jb3VudGVyIHdpdGggaGlzdG9yeSBvZiBtb2RlcmF0ZSBvciBzZXZlcmUgTFZTRAoqLwpkZWZpbmUgIkhhcyBMZWZ0IFZlbnRyaWN1bGFyIEFzc2lzdCBEZXZpY2UiOgogIGV4aXN0cyAoIFtQcm9jZWR1cmU6ICJMZWZ0IFZlbnRyaWN1bGFyIEFzc2lzdCBEZXZpY2UgUGxhY2VtZW50Il0gTFZBRFBsYWNlbWVudAogICAgICB3aXRoICJIZWFydCBGYWlsdXJlIE91dHBhdGllbnQgRW5jb3VudGVyIHdpdGggSGlzdG9yeSBvZiBNb2RlcmF0ZSBvciBTZXZlcmUgTFZTRCIgTW9kZXJhdGVPclNldmVyZUxWU0RIRk91dHBhdGllbnRFbmNvdW50ZXIKICAgICAgICBzdWNoIHRoYXQgTFZBRFBsYWNlbWVudC5wZXJmb3JtZWQudG9JbnRlcnZhbCAoICkgc3RhcnRzIGJlZm9yZSBkYXkgb2YgZW5kIG9mIE1vZGVyYXRlT3JTZXZlcmVMVlNESEZPdXRwYXRpZW50RW5jb3VudGVyLnBlcmlvZAogICAgICB3aGVyZSBMVkFEUGxhY2VtZW50LnN0YXR1cyA9ICdjb21wbGV0ZWQnCiAgKQoKLyoKQGRlc2NyaXB0aW9uOiBSZXR1cm5zIHRydWUgaWYgcGF0aWVudCBoYXMgYWN0aXZlIExWQUQgY29tcGxpY2F0aW9ucyB0aGF0IHN0YXJ0IGJlZm9yZSB0aGUgZW5kIG9mIGEgaGVhcnQgZmFpbHVyZSBvdXRwYXRpZW50IGVuY291bnRlciB3aXRoIGhpc3Rvcnkgb2YgbW9kZXJhdGUgb3Igc2V2ZXJlIExWU0QKKi8KZGVmaW5lICJIYXMgTGVmdCBWZW50cmljdWxhciBBc3Npc3QgRGV2aWNlIENvbXBsaWNhdGlvbnMiOgogIGV4aXN0cyAoICggW0NvbmRpdGlvbjogIkxlZnQgVmVudHJpY3VsYXIgQXNzaXN0IERldmljZSBDb21wbGljYXRpb25zIl0gKSBMVkFEQ29tcGxpY2F0aW9ucwogICAgICBsZXQgZGlhZ25vc2lzU3RhcnQ6IENvYWxlc2NlKHN0YXJ0IG9mIExWQURDb21wbGljYXRpb25zLnByZXZhbGVuY2VJbnRlcnZhbCgpLCBMVkFEQ29tcGxpY2F0aW9ucy5yZWNvcmRlZERhdGUpCiAgICAgIHdpdGggIkhlYXJ0IEZhaWx1cmUgT3V0cGF0aWVudCBFbmNvdW50ZXIgd2l0aCBIaXN0b3J5IG9mIE1vZGVyYXRlIG9yIFNldmVyZSBMVlNEIiBNb2RlcmF0ZU9yU2V2ZXJlTFZTREhGT3V0cGF0aWVudEVuY291bnRlcgogICAgICAgIHN1Y2ggdGhhdCBkYXRlIGZyb20gZGlhZ25vc2lzU3RhcnQgb24gb3IgYmVmb3JlIGRhdGUgZnJvbSBlbmQgb2YgTW9kZXJhdGVPclNldmVyZUxWU0RIRk91dHBhdGllbnRFbmNvdW50ZXIucGVyaW9kCiAgICAgIHdoZXJlIExWQURDb21wbGljYXRpb25zLmlzVmVyaWZpZWQgKCApCiAgKSAgICAgICAgICAgICAKCi8qCkBkZXNjcmlwdGlvbjogUmV0dXJucyBjZXJ0YWluIGZpbmlzaGVkIGVuY291bnRlciB0eXBlcyB0aGF0IG9jY3VycmVkIGR1cmluZyB0aGUgbWVhc3VyZW1lbnQgcGVyaW9kOiAKICAgICAgICAgICAgICAgICogb2ZmaWNlIHZpc2l0cyAoaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMDEpCiAgICAgICAgICAgICAgICAqIG91dHBhdGllbnQgY29uc3VsdGF0aW9uIChodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAwOCkKICAgICAgICAgICAgICAgICogbnVyc2luZyBmYWNpbGl0eSB2aXNpdHMgKGh0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDEyKQogICAgICAgICAgICAgICAgKiBjYXJlIHNlcnZpY2VzIGluIGxvbmcgdGVybSByZXNpZGVudGlhbCBmYWNpbGl0eSAoaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMTQpCiAgICAgICAgICAgICAgICAqIGhvbWUgaGVhbHRoY2FyZSBzZXJ2aWNlcyAoaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMTYpCiAgICAgICAgICAgICAgICAqIHBhdGllbnQgcHJvdmlkZXIgaW50ZXJhY3Rpb25zIChodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4xMDEyKSAKKi8KZGVmaW5lICJRdWFsaWZ5aW5nIE91dHBhdGllbnQgRW5jb3VudGVyIER1cmluZyBNZWFzdXJlbWVudCBQZXJpb2QiOgogICJPdXRwYXRpZW50IEVuY291bnRlciBvciBQYXRpZW50IFByb3ZpZGVyIEludGVyYWN0aW9uIiBWYWxpZEVuY291bnRlcgogICAgd2hlcmUgVmFsaWRFbmNvdW50ZXIucGVyaW9kIGR1cmluZyBkYXkgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKICAgICAgYW5kIFZhbGlkRW5jb3VudGVyLmlzRW5jb3VudGVyRmluaXNoZWQgKCApCgpkZWZpbmUgIk91dHBhdGllbnQgRW5jb3VudGVyIG9yIFBhdGllbnQgUHJvdmlkZXIgSW50ZXJhY3Rpb24iOgogICJPdXRwYXRpZW50IEVuY291bnRlciIKICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQYXRpZW50IFByb3ZpZGVyIEludGVyYWN0aW9uIl0KCi8qCkBkZXNjcmlwdGlvbjogUmV0dXJucyBjb21wbGV0ZWQgaGVhcnQgdGFuc3BsYW50IHByb2NlZHVyZXMgdGhhdCBzdGFydCBiZWZvcmUgdGhlIGVuZCBvZiBhIGhlYXJ0IGZhaWx1cmUgb3V0cGF0aWVudCBlbmNvdW50ZXIgd2l0aCBoaXN0b3J5IG9mIG1vZGVyYXRlIG9yIHNldmVyZSBMVlNECiovCmRlZmluZSAiSGFzIEhlYXJ0IFRyYW5zcGxhbnQiOgogIGV4aXN0cyAoIFtQcm9jZWR1cmU6ICJIZWFydCBUcmFuc3BsYW50Il0gSGVhcnRUcmFuc3BsYW50CiAgICAgIHdpdGggIkhlYXJ0IEZhaWx1cmUgT3V0cGF0aWVudCBFbmNvdW50ZXIgd2l0aCBIaXN0b3J5IG9mIE1vZGVyYXRlIG9yIFNldmVyZSBMVlNEIiBNb2RlcmF0ZU9yU2V2ZXJlTFZTREhGT3V0cGF0aWVudEVuY291bnRlcgogICAgICAgIHN1Y2ggdGhhdCBIZWFydFRyYW5zcGxhbnQucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIHN0YXJ0cyBiZWZvcmUgZW5kIG9mIE1vZGVyYXRlT3JTZXZlcmVMVlNESEZPdXRwYXRpZW50RW5jb3VudGVyLnBlcmlvZAogICAgICB3aGVyZSBIZWFydFRyYW5zcGxhbnQuc3RhdHVzID0gJ2NvbXBsZXRlZCcKICApCgovKgpAZGVzY3JpcHRpb246IFJldHVybnMgaGVhcnQgZmFpbHVyZSBvdXRwYXRpZW50IGVuY291bnRlcnMgdGhhdCBzdGFydCBiZWZvcmUgdGhlIGVuZCBvZiBhIG1vZGVyYXRlIG9yIHNldmVyZSBMVlNEIGZpbmRpbmcKKi8KZGVmaW5lICJIZWFydCBGYWlsdXJlIE91dHBhdGllbnQgRW5jb3VudGVyIHdpdGggSGlzdG9yeSBvZiBNb2RlcmF0ZSBvciBTZXZlcmUgTFZTRCI6CiAgIkhlYXJ0IEZhaWx1cmUgT3V0cGF0aWVudCBFbmNvdW50ZXIiIEhGT3V0cGF0aWVudEVuY291bnRlcgogICAgd2l0aCAiTW9kZXJhdGUgb3IgU2V2ZXJlIExWU0QgRmluZGluZ3MiIExWU0RGaW5kaW5ncwogICAgICBzdWNoIHRoYXQgQ29hbGVzY2UoTFZTREZpbmRpbmdzLnByZXZhbGVuY2VJbnRlcnZhbCgpLCBMVlNERmluZGluZ3MuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSkgc3RhcnRzIGJlZm9yZSBlbmQgb2YgSEZPdXRwYXRpZW50RW5jb3VudGVyLnBlcmlvZCAKCi8qCkBkZXNjcmlwdGlvbjogUmV0dXJucyBhIHVuaW9uICBvZiB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgKiBPYnNlcnZhdGlvbnMgd2hlcmUgdGhlIGZpbmFsLCBhbWVuZGVkIG9yIGNvcnJlY3Rpb24gZWplY3Rpb24gZnJhY3Rpb24gcmVzdWx0IGlzIDw9IDQwCiAgICAgICAgICAgICAgICAqIE1vZGVyYXRlIG9yIFNldmVyZSBMVlNEIGNvbmRpdGlvbnMgd2hlcmUgdGhlIGRpYWdub3NpcyBoYXMgYmVlbiBjb25maXJtZWQgYXMgYWN0aXZlCiovCmRlZmluZSAiTW9kZXJhdGUgb3IgU2V2ZXJlIExWU0QgRmluZGluZ3MiOgogICggW09ic2VydmF0aW9uQ2xpbmljYWxSZXN1bHQ6ICJFamVjdGlvbiBGcmFjdGlvbiJdIEVqZWN0aW9uRnJhY3Rpb24KICAgICAgd2hlcmUgRWplY3Rpb25GcmFjdGlvbi52YWx1ZSBhcyBRdWFudGl0eSA8PSA0MCAnJScKICAgICAgICBhbmQgRWplY3Rpb25GcmFjdGlvbi5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICApCiAgICB1bmlvbiAoICggKCBbQ29uZGl0aW9uOiAiTW9kZXJhdGUgb3IgU2V2ZXJlIExWU0QiXSApCiAgICAgIHVuaW9uICggKCBbQ29uZGl0aW9uOiAiTGVmdCB2ZW50cmljdWxhciBzeXN0b2xpYyBkeXNmdW5jdGlvbiAoZGlzb3JkZXIpIl0gKSBMVlNERGlhZ25vc2lzCiAgICAgICAgd2hlcmUgTFZTRERpYWdub3Npcy5zZXZlcml0eSBpbiAiTW9kZXJhdGUgb3IgU2V2ZXJlIgogICAgICApICkgTW9kZXJhdGVPclNldmVyZUxWU0QKICAgICAgd2hlcmUgTW9kZXJhdGVPclNldmVyZUxWU0QuaXNWZXJpZmllZCAoICkKICAgICkgCgovKgpAZGVzY3JpcHRpb246IFJldHVybnMgdHJ1ZSBpZiB0aGUgcGF0aWVudCBtZWV0cyB0aGUgZm9sbG93aW5nIGNyaXRlcmlhOgogICAgICAgICAgICAgICAgKiAxOCB5ZWFycyBvZiBhZ2Ugb3Igb2xkZXIsCiAgICAgICAgICAgICAgICAqIEhhcyB0d28gUXVhbGlmeWluZyBPdXRwYXRpZW50IEVuY291bnRlcnMgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZAogICAgICAgICAgICAgICAgKiBIYXMgYSBIZWFydCBGYWlsdXJlIE91dHBhdGllbnQgRW5jb3VudGVyCiovCmRlZmluZSAiSXMgQWR1bHQgV2l0aCBUd28gUXVhbGlmeWluZyBPdXRwYXRpZW50IEVuY291bnRlcnMgYW5kIE9uZSBIZWFydCBGYWlsdXJlIE91dHBhdGllbnQgRW5jb3VudGVyIER1cmluZyB0aGUgTWVhc3VyZW1lbnQgUGVyaW9kIjoKICBBZ2VJblllYXJzQXQoZGF0ZSBmcm9tIHN0YXJ0IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiKSA+PSAxOAogICAgYW5kIGV4aXN0cyAoICJRdWFsaWZ5aW5nIE91dHBhdGllbnQgRW5jb3VudGVyIER1cmluZyBNZWFzdXJlbWVudCBQZXJpb2QiIEVuY291bnRlcjEKICAgICAgICB3aXRoICJRdWFsaWZ5aW5nIE91dHBhdGllbnQgRW5jb3VudGVyIER1cmluZyBNZWFzdXJlbWVudCBQZXJpb2QiIEVuY291bnRlcjIKICAgICAgICAgIHN1Y2ggdGhhdCBFbmNvdW50ZXIyLmlkICF+IEVuY291bnRlcjEuaWQKICAgICkKICAgIGFuZCBleGlzdHMgIkhlYXJ0IEZhaWx1cmUgT3V0cGF0aWVudCBFbmNvdW50ZXIiICAgCgoKLyoKQGRlc2NyaXB0aW9uOiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIEVuY291bnRlciBpcyBmaW5pc2hlZAoqLwpkZWZpbmUgZmx1ZW50IGZ1bmN0aW9uIGlzRW5jb3VudGVyRmluaXNoZWQoRW5jb3VudGVyIEVuY291bnRlcik6CiAgRW5jb3VudGVyLnN0YXR1cyA9ICdmaW5pc2hlZCcKCi8qCkBkZXNjcmlwdGlvbjogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBNZWRpY2F0aW9uUmVxdWVzdCBpcyBvcmRlcmVkIGR1cmluZyB0aGUgaGVhcnQgZmFpbHVyZSBvdXRwYXRpZW50IGVuY291bnRlciB3aXRoIGhpc3Rvcnkgb2YgbW9kZXJhdGUgb3Igc2V2ZXJlIExWU0QgYXQgYW55IHBvaW50CiovCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gaXNPcmRlcmVkRHVyaW5nSGVhcnRGYWlsdXJlT3V0cGF0aWVudEVuY291bnRlcihNZWRpY2F0aW9uUmVxdWVzdCBNZWRpY2F0aW9uUmVxdWVzdCk6CiAgZXhpc3RzICggIkhlYXJ0IEZhaWx1cmUgT3V0cGF0aWVudCBFbmNvdW50ZXIgd2l0aCBIaXN0b3J5IG9mIE1vZGVyYXRlIG9yIFNldmVyZSBMVlNEIiBNb2RlcmF0ZU9yU2V2ZXJlTFZTREhGT3V0cGF0aWVudEVuY291bnRlcgogICAgICB3aGVyZSBNZWRpY2F0aW9uUmVxdWVzdC5hdXRob3JlZE9uIGR1cmluZyBkYXkgb2YgTW9kZXJhdGVPclNldmVyZUxWU0RIRk91dHBhdGllbnRFbmNvdW50ZXIucGVyaW9kCiAgICAgICAgYW5kIE1lZGljYXRpb25SZXF1ZXN0LnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CiAgICAgICAgYW5kIE1lZGljYXRpb25SZXF1ZXN0LmludGVudCBpbiB7ICdvcmRlcicsICdvcmlnaW5hbC1vcmRlcicsICdyZWZsZXgtb3JkZXInLCAnZmlsbGVyLW9yZGVyJywgJ2luc3RhbmNlLW9yZGVyJyB9CiAgICAgICAgYW5kIG5vdCBleGlzdHMgKCBbIlRhc2tSZWplY3RlZCJdIFRhc2tSZWplY3QKICAgICAgICAgICAgd2hlcmUgVGFza1JlamVjdC5mb2N1cy5yZWZlcmVuY2VzICggTWVkaWNhdGlvblJlcXVlc3QgKQogICAgICAgICAgICAgIGFuZCBUYXNrUmVqZWN0LmNvZGUgfiBVU1F1YWxpdHlDb3JlQ29tbW9uLiJGdWxmaWxsIgogICAgICAgICkKICApCgovKgpAZGVzY3JpcHRpb246IFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gTWVkaWNhdGlvbk5vdFJlcXVlc3RlZCBvdmVybGFwcyBhZnRlciB0aGUgZGF5IG9mIHRoZSBoZWFydCBmYWlsdXJlIG91dHBhdGllbnQgZW5jb3VudGVyIHdpdGggaGlzdG9yeSBvZiBtb2RlcmF0ZSBvciBzZXZlcmUgTFZTRAoqLwpkZWZpbmUgZmx1ZW50IGZ1bmN0aW9uIGlzTWVkaWNhdGlvbk5vdFJlcXVlc3RlZE9yZGVyZWREdXJpbmdIZWFydEZhaWx1cmVPdXRwYXRpZW50RW5jb3VudGVyKE1lZGljYXRpb25SZXF1ZXN0IE1lZGljYXRpb25Ob3RSZXF1ZXN0ZWQpOgogIGV4aXN0cyAoICJIZWFydCBGYWlsdXJlIE91dHBhdGllbnQgRW5jb3VudGVyIHdpdGggSGlzdG9yeSBvZiBNb2RlcmF0ZSBvciBTZXZlcmUgTFZTRCIgTW9kZXJhdGVPclNldmVyZUxWU0RIRk91dHBhdGllbnRFbmNvdW50ZXIKICAgICAgd2hlcmUgTWVkaWNhdGlvblJlcXVlc3QuYXV0aG9yZWRPbiBkdXJpbmcgZGF5IG9mIE1vZGVyYXRlT3JTZXZlcmVMVlNESEZPdXRwYXRpZW50RW5jb3VudGVyLnBlcmlvZAogICAgICAgIGFuZCBNZWRpY2F0aW9uUmVxdWVzdC5zdGF0dXMgaW4geyAnY29tcGxldGVkJywgJ2FjdGl2ZScgfQogICAgICAgIGFuZCBNZWRpY2F0aW9uUmVxdWVzdC5pbnRlbnQgaW4geyAnb3JkZXInLCAnb3JpZ2luYWwtb3JkZXInLCAncmVmbGV4LW9yZGVyJywgJ2ZpbGxlci1vcmRlcicsICdpbnN0YW5jZS1vcmRlcicgfQogICAgICAgIGFuZCBub3QgZXhpc3RzICggWyJUYXNrUmVqZWN0ZWQiXSBUYXNrUmVqZWN0CiAgICAgICAgICAgIHdoZXJlIFRhc2tSZWplY3QuZm9jdXMucmVmZXJlbmNlcyAoIE1lZGljYXRpb25SZXF1ZXN0ICkKICAgICAgICAgICAgICBhbmQgVGFza1JlamVjdC5jb2RlIH4gVVNRdWFsaXR5Q29yZUNvbW1vbi4iRnVsZmlsbCIKICAgICAgICApCiAgKQoKLyoKQGRlc2NyaXB0aW9uOiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIENvbmRpdGlvbiBvdmVybGFwcyB0aGUgaGVhcnQgZmFpbHVyZSBvdXRwYXRpZW50IGVuY291bnRlciB3aXRoIGhpc3Rvcnkgb2YgbW9kZXJhdGUgb3Igc2V2ZXJlIExWU0QgYXQgYW55IHBvaW50CiovCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gb3ZlcmxhcHNIZWFydEZhaWx1cmVPdXRwYXRpZW50RW5jb3VudGVyKENvbmRpdGlvbiBVU1F1YWxpdHlDb3JlLkNvbmRpdGlvbkVuY291bnRlckRpYWdub3Npcyk6CiAgZXhpc3RzICggIkhlYXJ0IEZhaWx1cmUgT3V0cGF0aWVudCBFbmNvdW50ZXIgd2l0aCBIaXN0b3J5IG9mIE1vZGVyYXRlIG9yIFNldmVyZSBMVlNEIiBNb2RlcmF0ZU9yU2V2ZXJlTFZTREhGT3V0cGF0aWVudEVuY291bnRlcgogICAgICB3aGVyZSBDb25kaXRpb24ucHJldmFsZW5jZUludGVydmFsICggKSBvdmVybGFwcyBkYXkgb2YgTW9kZXJhdGVPclNldmVyZUxWU0RIRk91dHBhdGllbnRFbmNvdW50ZXIucGVyaW9kCiAgICAgICAgYW5kIENvbmRpdGlvbi5pc1ZlcmlmaWVkICggKQogICkKCi8qCkBvdmVybG9hZGVkCkBkZXNjcmlwdGlvbjogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBDb25kaXRpb24gb3ZlcmxhcHMgYWZ0ZXIgdGhlIGRheSBvZiB0aGUgaGVhcnQgZmFpbHVyZSBvdXRwYXRpZW50IGVuY291bnRlciB3aXRoIGhpc3Rvcnkgb2YgbW9kZXJhdGUgb3Igc2V2ZXJlIExWU0QKKi8KZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBvdmVybGFwc0FmdGVySGVhcnRGYWlsdXJlT3V0cGF0aWVudEVuY291bnRlcihDb25kaXRpb24gVVNRdWFsaXR5Q29yZS5Db25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXMpOgogIGV4aXN0cyAoICJIZWFydCBGYWlsdXJlIE91dHBhdGllbnQgRW5jb3VudGVyIHdpdGggSGlzdG9yeSBvZiBNb2RlcmF0ZSBvciBTZXZlcmUgTFZTRCIgTW9kZXJhdGVPclNldmVyZUxWU0RIRk91dHBhdGllbnRFbmNvdW50ZXIKICAgICAgd2hlcmUgQ29uZGl0aW9uLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgYWZ0ZXIgZGF5IG9mIE1vZGVyYXRlT3JTZXZlcmVMVlNESEZPdXRwYXRpZW50RW5jb3VudGVyLnBlcmlvZAogICAgICAgIGFuZCBDb25kaXRpb24uaXNWZXJpZmllZCAoICkKICApCgovKgpAb3ZlcmxvYWRlZApAZGVzY3JpcHRpb246IFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gUHJvY2VkdXJlIG92ZXJsYXBzIGFmdGVyIHRoZSBkYXkgb2YgdGhlIGhlYXJ0IGZhaWx1cmUgb3V0cGF0aWVudCBlbmNvdW50ZXIgd2l0aCBoaXN0b3J5IG9mIG1vZGVyYXRlIG9yIHNldmVyZSBMVlNECiovCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gb3ZlcmxhcHNBZnRlckhlYXJ0RmFpbHVyZU91dHBhdGllbnRFbmNvdW50ZXIoUHJvY2VkdXJlIFByb2NlZHVyZSk6CiAgZXhpc3RzICggIkhlYXJ0IEZhaWx1cmUgT3V0cGF0aWVudCBFbmNvdW50ZXIgd2l0aCBIaXN0b3J5IG9mIE1vZGVyYXRlIG9yIFNldmVyZSBMVlNEIiBNb2RlcmF0ZU9yU2V2ZXJlTFZTREhGT3V0cGF0aWVudEVuY291bnRlcgogICAgICB3aGVyZSBQcm9jZWR1cmUucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGFmdGVyIGRheSBvZiBNb2RlcmF0ZU9yU2V2ZXJlTFZTREhGT3V0cGF0aWVudEVuY291bnRlci5wZXJpb2QKICAgICAgICBhbmQgUHJvY2VkdXJlLnN0YXR1cyA9ICdjb21wbGV0ZWQnCiAgKQoKLyoKQG92ZXJsb2FkZWQKQGRlc2NyaXB0aW9uOiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIEFsbGVyZ3lJbnRvbGVyYW5jZSBvdmVybGFwcyBhZnRlciB0aGUgZGF5IG9mIHRoZSBoZWFydCBmYWlsdXJlIG91dHBhdGllbnQgZW5jb3VudGVyIHdpdGggaGlzdG9yeSBvZiBtb2RlcmF0ZSBvciBzZXZlcmUgTFZTRAoqLwpkZWZpbmUgZmx1ZW50IGZ1bmN0aW9uIG92ZXJsYXBzQWZ0ZXJIZWFydEZhaWx1cmVPdXRwYXRpZW50RW5jb3VudGVyKEFsbGVyZ3lJbnRvbGVyYW5jZSBBbGxlcmd5SW50b2xlcmFuY2UpOgogIGV4aXN0cyAoICJIZWFydCBGYWlsdXJlIE91dHBhdGllbnQgRW5jb3VudGVyIHdpdGggSGlzdG9yeSBvZiBNb2RlcmF0ZSBvciBTZXZlcmUgTFZTRCIgTW9kZXJhdGVPclNldmVyZUxWU0RIRk91dHBhdGllbnRFbmNvdW50ZXIKICAgICAgd2hlcmUgSW50ZXJ2YWxbc3RhcnQgb2YgQWxsZXJneUludG9sZXJhbmNlLnByZXZhbGVuY2VJbnRlcnZhbCAoICksIEFsbGVyZ3lJbnRvbGVyYW5jZS5sYXN0T2NjdXJyZW5jZV1vdmVybGFwcyBhZnRlciBkYXkgb2YgTW9kZXJhdGVPclNldmVyZUxWU0RIRk91dHBhdGllbnRFbmNvdW50ZXIucGVyaW9kCiAgICAgICAgYW5kIEFsbGVyZ3lJbnRvbGVyYW5jZS5pc1ZlcmlmaWVkICggKQogICkKICAgICAgICAgIAovKgpAb3ZlcmxvYWRlZApAZGVzY3JpcHRpb246IFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gTWVkaWNhdGlvblJlcXVlc3Qgb3ZlcmxhcHMgYWZ0ZXIgdGhlIGRheSBvZiB0aGUgaGVhcnQgZmFpbHVyZSBvdXRwYXRpZW50IGVuY291bnRlciB3aXRoIGhpc3Rvcnkgb2YgbW9kZXJhdGUgb3Igc2V2ZXJlIExWU0QKKi8KZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBvdmVybGFwc0FmdGVySGVhcnRGYWlsdXJlT3V0cGF0aWVudEVuY291bnRlcihNZWRpY2F0aW9uUmVxdWVzdCBNZWRpY2F0aW9uUmVxdWVzdCk6CiAgZXhpc3RzICggIkhlYXJ0IEZhaWx1cmUgT3V0cGF0aWVudCBFbmNvdW50ZXIgd2l0aCBIaXN0b3J5IG9mIE1vZGVyYXRlIG9yIFNldmVyZSBMVlNEIiBNb2RlcmF0ZU9yU2V2ZXJlTFZTREhGT3V0cGF0aWVudEVuY291bnRlcgogICAgICB3aGVyZSBGaXJzdCgoY29sbGFwc2UoTWVkaWNhdGlvblJlcXVlc3QuZG9zYWdlSW5zdHJ1Y3Rpb24udGltaW5nLnJlcGVhdC5ib3VuZHMgRG9zZVRpbWUKICAgICAgICAgICAgcmV0dXJuIFRpbWluZ0JvdW5kVG9JbnRlcnZhbChNZWRpY2F0aW9uUmVxdWVzdC5hdXRob3JlZE9uLCBEb3NlVGltZSkKICAgICAgICApKSBEcnVnUGVyaW9kcwogICAgICAgICAgc29ydCBieSBzdGFydCBvZiAkdGhpcwogICAgICApIG92ZXJsYXBzIGFmdGVyIGRheSBvZiBNb2RlcmF0ZU9yU2V2ZXJlTFZTREhGT3V0cGF0aWVudEVuY291bnRlci5wZXJpb2QKICAgICAgICBhbmQgTWVkaWNhdGlvblJlcXVlc3Quc3RhdHVzIGluIHsgJ2FjdGl2ZScsICdjb21wbGV0ZWQnIH0KICAgICAgICBhbmQgTWVkaWNhdGlvblJlcXVlc3QuaW50ZW50IGluIHsgJ29yZGVyJywgJ29yaWdpbmFsLW9yZGVyJywgJ3JlZmxleC1vcmRlcicsICdmaWxsZXItb3JkZXInLCAnaW5zdGFuY2Utb3JkZXInIH0KICAgICAgICBhbmQgbm90IGV4aXN0cyAoIFsiVGFza1JlamVjdGVkIl0gVGFza1JlamVjdAogICAgICAgICAgICB3aGVyZSBUYXNrUmVqZWN0LmZvY3VzLnJlZmVyZW5jZXMgKCBNZWRpY2F0aW9uUmVxdWVzdCApCiAgICAgICAgICAgICAgYW5kIFRhc2tSZWplY3QuY29kZSB+IFVTUXVhbGl0eUNvcmVDb21tb24uIkZ1bGZpbGwiCiAgICAgICAgKQogICkKCi8qCkBvdmVybG9hZGVkCkBkZXNjcmlwdGlvbjogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBIZWFydFJhdGVPYnNlcnZhdGlvbiBvdmVybGFwcyBhZnRlciB0aGUgZGF5IG9mIHRoZSBoZWFydCBmYWlsdXJlIG91dHBhdGllbnQgZW5jb3VudGVyIHdpdGggaGlzdG9yeSBvZiBtb2RlcmF0ZSBvciBzZXZlcmUgTFZTRAoqLwpkZWZpbmUgZmx1ZW50IGZ1bmN0aW9uIG92ZXJsYXBzQWZ0ZXJIZWFydEZhaWx1cmVPdXRwYXRpZW50RW5jb3VudGVyKEhlYXJ0UmF0ZU9ic2VydmF0aW9uIFVTQ29yZS5IZWFydFJhdGVQcm9maWxlKToKICBleGlzdHMgKCAiSGVhcnQgRmFpbHVyZSBPdXRwYXRpZW50IEVuY291bnRlciB3aXRoIEhpc3Rvcnkgb2YgTW9kZXJhdGUgb3IgU2V2ZXJlIExWU0QiIE1vZGVyYXRlT3JTZXZlcmVMVlNESEZPdXRwYXRpZW50RW5jb3VudGVyCiAgICAgIHdoZXJlIEhlYXJ0UmF0ZU9ic2VydmF0aW9uLmVmZmVjdGl2ZS50b0ludGVydmFsICggKSBvdmVybGFwcyBhZnRlciBkYXkgb2YgTW9kZXJhdGVPclNldmVyZUxWU0RIRk91dHBhdGllbnRFbmNvdW50ZXIucGVyaW9kCiAgICAgICAgYW5kIEhlYXJ0UmF0ZU9ic2VydmF0aW9uLnN0YXR1cyBpbiB7ICdmaW5hbCcsICdhbWVuZGVkJywgJ2NvcnJlY3RlZCcgfQogICkKCi8qCkBkZXNjcmlwdGlvbjogQ29udmVydHMgdGhlIHBvc3NpYmxlIHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgdGltaW5nIGJvdW5kIHRvIGFuIGludGVydmFsIHVzaW5nIHRoZSBnaXZlbiBkYXRlIGFzIGFuIGFuY2hvciBmb3IgZHVyYXRpb25zCiovIApkZWZpbmUgZnVuY3Rpb24gVGltaW5nQm91bmRUb0ludGVydmFsKHN0YXJ0RGF0ZSBTeXN0ZW0uRGF0ZVRpbWUsIGNob2ljZSBDaG9pY2U8RkhJUi5EdXJhdGlvbiwgRkhJUi5SYW5nZSwgRkhJUi5QZXJpb2Q+KToKICBjYXNlCiAgICB3aGVuIGNob2ljZSBpcyBGSElSLlBlcmlvZCB0aGVuCiAgICAgICAgY2hvaWNlIGFzIEZISVIuUGVyaW9kCiAgICB3aGVuIGNob2ljZSBpcyBGSElSLlJhbmdlIHRoZW4KICAgICAgICBJbnRlcnZhbFtzdGFydERhdGUgKyAoY2hvaWNlLmxvdyBhcyBRdWFudGl0eSksIHN0YXJ0RGF0ZSArIChjaG9pY2UuaGlnaCBhcyBRdWFudGl0eSldCiAgICB3aGVuIGNob2ljZSBpcyBGSElSLkR1cmF0aW9uIHRoZW4KICAgICAgICBJbnRlcnZhbFtzdGFydERhdGUsIHN0YXJ0RGF0ZSArIChjaG9pY2UgYXMgRkhJUi5EdXJhdGlvbikpCiAgICBlbHNlCgkJbnVsbCBhcyBJbnRlcnZhbDxEYXRlVGltZT4KCWVuZA==",
      "url" : "https://madie.cms.gov/Library-AHAOverall.cql"
    }
  ]
}