<?xml version="1.0" encoding="UTF-8"?>

<Library xmlns="http://hl7.org/fhir">
  <id value="CMS1173FHIRDiagnosticDelayVTE"/>
  <text>
    <status value="extensions"/><div xmlns="http://www.w3.org/1999/xhtml">
  <table class="narrative-table">
    <tbody>
<tr>


<th colspan="2" scope="row" class="row-header"><a name="metadata"> </a>Metadata</th>


</tr>







<tr>


<th scope="row" class="row-header">Version</th>



<td class="content-container">1.1.000</td>


</tr>
















<tr>


<th scope="row" class="row-header">Status</th>



<td class="content-container">Draft</td>


</tr>







































<tr>


<th scope="row" class="row-header">Type</th>



<td class="content-container">
    <a href="http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a>#logic-library


</td>


</tr>













<tr>


<th colspan="2" scope="row" class="row-header"><a name="parameters"> </a>Parameters</th>


</tr>


<tr>


<th scope="row" class="row-header">Parameter</th>



<td class="content-container">None</td>


</tr>








  <tr>


<th colspan="2" scope="row" class="row-header">Library Content</th>


</tr>
  
    
    <tr>
      <th scope="row" class="row-header">CQL Content</th>
      <td>
        <a name="cql-content"> </a>
        <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">/*
NOTE: For use by March 2026 US Realm Connectathon participants for internal use only. Not for use or distribution in commercial products.
*/
library CMS1173FHIRDiagnosticDelayVTE version '1.1.000'

using USQualityCore version '0.1.0-cibuild'
using USCore version '6.1.0-derived'
using FHIR version '4.0.1'

include hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' called FHIRHelpers
include hl7.fhir.uv.cql.FHIRCommon version '2.0.0' called FHIRCommon
include hl7.fhir.us.cql.USCoreCommon version '2.0.0-ballot' called USCoreCommon
include hl7.fhir.us.cql.USCoreElements version '2.0.0-ballot' called USCoreElements

include CQMCommon version '5.1.000' called CQMCommon
include USQualityCoreCommon version '0.1.0-cibuild' called USQualityCoreCommon
include SupplementalDataElements version '6.1.000' called SDE
include Status version '2.1.000' called Status

codesystem &quot;LOINC&quot;: 'http://loinc.org'
codesystem &quot;SNOMEDCT&quot;: 'http://snomed.info/sct'

valueset &quot;Anticoagulant Medications&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1206.19'
valueset &quot;Encounter Inpatient&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'
valueset &quot;Ethnicity&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837'
valueset &quot;Hospice Care Ambulatory&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1108.15'
valueset &quot;Hospice Diagnosis&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1165'
valueset &quot;Hospice Encounter&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1003'
valueset &quot;Imaging Related to VTE&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1206.47'
valueset &quot;Office Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'
valueset &quot;Outpatient Encounter&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1087'
valueset &quot;Palliative Care Diagnosis&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1167'
valueset &quot;Palliative Care Encounter&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1090'
valueset &quot;Palliative Care Intervention&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1135'
valueset &quot;VTE Diagnoses&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1206.49'
valueset &quot;VTE Symptoms&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1206.51'

code &quot;Discharge to healthcare facility for hospice care (procedure)&quot;: '428371000124100' from &quot;SNOMEDCT&quot; display 'Discharge to healthcare facility for hospice care (procedure)'
code &quot;Discharge to home for hospice care (procedure)&quot;: '428361000124107' from &quot;SNOMEDCT&quot; display 'Discharge to home for hospice care (procedure)'
code &quot;Hospice care [Minimum Data Set]&quot;: '45755-6' from &quot;LOINC&quot; display 'Hospice care [Minimum Data Set]'
code &quot;Yes (qualifier value)&quot;: '373066001' from &quot;SNOMEDCT&quot; display 'Yes (qualifier value)'
code &quot;Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)&quot;: '71007-9' from &quot;LOINC&quot; display 'Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)'

parameter &quot;Measurement Period&quot; Interval&lt;DateTime&gt;
  default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)

context Patient

define &quot;Initial Population&quot;:
    /***
    * Includes all Qualified VTE Encounters in which the patient was aged 18 or older at the start of the qualified VTE encounter.
    ***/
  
  &quot;Qualified VTE Encounters During Measurement Period&quot; QualifiedEncounter
    where AgeInYearsAt(date from start of QualifiedEncounter.period) &gt;= 18

define &quot;Denominator&quot;:
  &quot;Initial Population&quot;

define &quot;Denominator Exclusions&quot;:
  &quot;Qualified VTE Encounter With Hospice Services Within Previous 90 Days&quot;
    union &quot;Qualified VTE Encounter With Palliative Care Within Previous 90 Days&quot;
    union &quot;Qualified VTE Encounter With Other Qualified VTE Encounter Documented Within Previous 6 Months&quot;

define &quot;Numerator&quot;:
    /***
    * Includes all qualified VTE encounters in which the VTE diagnosis started greater than 24 hours after a qualifying PCP visit.
    ****/
  
  &quot;Qualifying Delayed VTE Encounter&quot;

define &quot;Qualifying Performed Encounters&quot;:
  ( [&quot;Encounter&quot;: &quot;Office Visit&quot;]
    union [&quot;Encounter&quot;: &quot;Outpatient Encounter&quot;]
    union [&quot;Encounter&quot;: &quot;Encounter Inpatient&quot;] ) Encounter
    where Encounter.status = 'finished'
      and Encounter.period starts during day of Interval[start of &quot;Measurement Period&quot; - 180 days, end of &quot;Measurement Period&quot;]

define &quot;Qualifying Performed PCP Visits&quot;:
  ( [&quot;Encounter&quot;: &quot;Outpatient Encounter&quot;]
    union [&quot;Encounter&quot;: &quot;Office Visit&quot;] ) PCPVisit
    where PCPVisit.status = 'finished'
      and PCPVisit.period ends during day of Interval[start of &quot;Measurement Period&quot; - 210 days, end of &quot;Measurement Period&quot;]

define &quot;Qualifying Performed PCP Visits With VTE Symptom&quot;:
  &quot;Qualifying Performed PCP Visits&quot; IndexPCPVisit
    where IndexPCPVisit.reasonCode in &quot;VTE Symptoms&quot;
      or exists ( [ConditionEncounterDiagnosis: &quot;VTE Symptoms&quot;] VTESymptomCondition
          where VTESymptomCondition.isVerified ( )
            and IndexPCPVisit.reasonReference.references ( VTESymptomCondition )
      )

define &quot;Qualifying Performed VTE Encounters&quot;:
  &quot;Qualifying Performed Encounters&quot; VTEEncounter
    where VTEEncounter.reasonCode in &quot;VTE Diagnoses&quot;
      or exists ( [ConditionEncounterDiagnosis: &quot;VTE Diagnoses&quot;] VTECondition
          where VTECondition.isConfirmedCondition ( )
            and VTEEncounter.reasonReference.references ( VTECondition )
      )

define &quot;Qualifying VTE Imaging Diagnostic Report&quot;:
  [&quot;DiagnosticReportNote&quot;: &quot;Imaging Related to VTE&quot;] VTEDiagnosticReport
    where VTEDiagnosticReport.status in { 'final', 'amended', 'corrected' }

define &quot;AntiCoagulant Therapy Ordered&quot;:
  [&quot;MedicationRequest&quot;: &quot;Anticoagulant Medications&quot;] AntiCoagulant
    where AntiCoagulant.status in { 'active', 'completed' }
      and AntiCoagulant.intent = 'order'

define &quot;Qualified VTE Encounters&quot;:
  from
    &quot;Qualifying Performed VTE Encounters&quot; VTEEncounter,
    &quot;Qualifying Performed PCP Visits With VTE Symptom&quot; IndexPCP,
    &quot;Qualifying VTE Imaging Diagnostic Report&quot; VTEStudy,
    &quot;AntiCoagulant Therapy Ordered&quot; AntiCoagulantOrdered
    where VTEStudy.effective.toInterval ( ) starts during day of VTEEncounter.period
      and ( AntiCoagulantOrdered.authoredOn 12 hours or less before start of VTEStudy.effective.toInterval ( )
         or AntiCoagulantOrdered.authoredOn 12 hours or less after start of VTEStudy.effective.toInterval ( )
      )
      and IndexPCP.period starts 30 days or less on or before start of VTEStudy.effective.toInterval ( )
    return VTEEncounter

define &quot;Qualified VTE Encounters During Measurement Period&quot;:
  &quot;Qualified VTE Encounters&quot; QualifiedVTEEncounter
    where QualifiedVTEEncounter.period starts during day of &quot;Measurement Period&quot;

define &quot;Qualifying Delayed VTE Encounter&quot;:
  &quot;Qualified VTE Encounters During Measurement Period&quot; DelayedVTEEncounter
    with &quot;Qualifying Performed PCP Visits With VTE Symptom&quot; IndexPCPVisit
      such that DelayedVTEEncounter.period starts during day of Interval[end of IndexPCPVisit.period + 2 day, end of IndexPCPVisit.period + 30 days]

define &quot;Qualified VTE Encounter With Hospice Services Within Previous 90 Days&quot;:
  from
    &quot;Qualified VTE Encounters&quot; QualifiedVTEEncounter
    let NinetyDaysBeforeVTEEncounter: Interval[start of QualifiedVTEEncounter.period - 90 days, end of QualifiedVTEEncounter.period]
    where exists ( [&quot;Encounter&quot;: &quot;Encounter Inpatient&quot;] InpatientEncounter
        where ( InpatientEncounter.hospitalization.dischargeDisposition ~ &quot;Discharge to home for hospice care (procedure)&quot;
            or InpatientEncounter.hospitalization.dischargeDisposition ~ &quot;Discharge to healthcare facility for hospice care (procedure)&quot;
        )
          and InpatientEncounter.period ends during day of NinetyDaysBeforeVTEEncounter
          and InpatientEncounter.status = 'finished'
    )
      or exists ( [&quot;Encounter&quot;: &quot;Hospice Encounter&quot;] HospiceEncounter
          where HospiceEncounter.period overlaps day of NinetyDaysBeforeVTEEncounter
      )
      or exists ( ( [ObservationScreeningAssessment: &quot;Hospice care [Minimum Data Set]&quot;] ) HospiceAssessment
          where HospiceAssessment.value ~ &quot;Yes (qualifier value)&quot;
            and HospiceAssessment.effective.toInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter
      )
      or exists ( ( [ServiceRequest: &quot;Hospice Care Ambulatory&quot;] ) HospiceOrder
          where HospiceOrder.authoredOn during day of NinetyDaysBeforeVTEEncounter
            and HospiceOrder.status in { 'active', 'completed' }
      )
      or exists ( ( [Procedure: &quot;Hospice Care Ambulatory&quot;] ) HospicePerformed
          where HospicePerformed.performed.toInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter
      )
      or exists ( ( [ConditionEncounterDiagnosis: &quot;Hospice Diagnosis&quot;] ) HospiceCareDiagnosis
          where HospiceCareDiagnosis.prevalenceInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter
            and HospiceCareDiagnosis.isVerified ( )
      )
      or exists ( ( [ConditionProblemsHealthConcerns: &quot;Hospice Diagnosis&quot;] ) HospiceCareConcern
          where HospiceCareConcern.prevalenceInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter
            and HospiceCareConcern.isVerified ( )
      )

define &quot;Qualified VTE Encounter With Palliative Care Within Previous 90 Days&quot;:
  from
    &quot;Qualified VTE Encounters&quot; QualifiedVTEEncounter
    let NinetyDaysBeforeVTEEncounter: Interval[start of QualifiedVTEEncounter.period - 90 days, end of QualifiedVTEEncounter.period]
    where exists ( ( [ObservationScreeningAssessment: &quot;Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)&quot;] ) PalliativeAssessment
        where PalliativeAssessment.effective.toInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter
          and PalliativeAssessment.status in { 'final', 'amended', 'corrected' }
    )
      or exists ( ( ( [ConditionEncounterDiagnosis: &quot;Palliative Care Diagnosis&quot;] ) ) PalliativeCareDiagnosis
          where PalliativeCareDiagnosis.prevalenceInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter
            and PalliativeCareDiagnosis.isVerified ( )
      )
      or exists ( ( [ConditionProblemsHealthConcerns: &quot;Palliative Care Diagnosis&quot;] ) PalliativeCareConcern
          where PalliativeCareConcern.prevalenceInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter
            and PalliativeCareConcern.isVerified ( )
      )
      or exists ( ( [Encounter: &quot;Palliative Care Encounter&quot;] ) PalliativeEncounter
          where PalliativeEncounter.period overlaps day of NinetyDaysBeforeVTEEncounter
      )
      or exists ( ( [Procedure: &quot;Palliative Care Intervention&quot;] ) PalliativeIntervention
          where PalliativeIntervention.performed.toInterval ( ) overlaps day of NinetyDaysBeforeVTEEncounter
      )

define &quot;Qualified VTE Encounter With Other Qualified VTE Encounter Documented Within Previous 6 Months&quot;:
  &quot;Qualified VTE Encounters&quot; CurrentQualifiedVTE
    with &quot;Qualified VTE Encounters&quot; PreviousQualifiedVTE
      such that PreviousQualifiedVTE.period starts 6 months or less before start of CurrentQualifiedVTE.period

define &quot;SDE Ethnicity&quot;:
  SDE.&quot;SDE Ethnicity&quot;

define &quot;SDE Payer&quot;:
  SDE.&quot;SDE Payer&quot;

define &quot;SDE Race&quot;:
  SDE.&quot;SDE Race&quot;

define &quot;SDE Sex&quot;:
  SDE.&quot;SDE Sex&quot;
  
/*
@description: Returns true if the given condition either has no verification status or has a verification status of confirmed, unconfirmed, provisional, or differential
*/


define fluent function isVerified(condition Choice&lt;ConditionEncounterDiagnosis, ConditionProblemsHealthConcerns&gt;):
  condition.verificationStatus is not null implies ( condition.verificationStatus ~ Status.&quot;confirmed&quot;
      or condition.verificationStatus ~ Status.&quot;unconfirmed&quot;
      or condition.verificationStatus ~ Status.&quot;provisional&quot;
      or condition.verificationStatus ~ Status.&quot;differential&quot;
  )

/*

/*
@description: Returns true if the given Condition is confirmed
*/


define fluent function isConfirmedCondition(condition ConditionEncounterDiagnosis):
  condition.verificationStatus ~ Status.&quot;confirmed&quot;</code></pre>
      </td>
    </tr>
    
  



<tr>
  <th colspan="2" scope="row" class="row-header">Generated using version 0.5.6 of the sample-content-ig Liquid templates</th>
</tr>

    </tbody>
  </table>
</div>
  </text>
  <extension url="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-softwaresystem">
    <valueReference>
      <reference value="Device/cqf-tooling"/>
    </valueReference>
  </extension>
  <url value="https://madie.cms.gov/Library/CMS1173FHIRDiagnosticDelayVTE"/>
  <version value="1.1.000"/>
  <name value="CMS1173FHIRDiagnosticDelayVTE"/>
  <status value="draft"/>
  <type>
    <coding>
      <system value="http://terminology.hl7.org/CodeSystem/library-type"/>
      <code value="logic-library"/>
    </coding>
  </type>
  <date value="2026-09-19T16:31:14+00:00"/>
  <content>
    <contentType value="text/cql"/>
    <data value="LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVMxMTczRkhJUkRpYWdub3N0aWNEZWxheVZURSB2ZXJzaW9uICcxLjEuMDAwJwoKdXNpbmcgVVNRdWFsaXR5Q29yZSB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJwp1c2luZyBVU0NvcmUgdmVyc2lvbiAnNi4xLjAtZGVyaXZlZCcKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBobDcuZmhpci51di5jcWwuRkhJUkNvbW1vbiB2ZXJzaW9uICcyLjAuMCcgY2FsbGVkIEZISVJDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlQ29tbW9uIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIFVTQ29yZUNvbW1vbgppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5VU0NvcmVFbGVtZW50cyB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBVU0NvcmVFbGVtZW50cwoKaW5jbHVkZSBDUU1Db21tb24gdmVyc2lvbiAnNS4xLjAwMCcgY2FsbGVkIENRTUNvbW1vbgppbmNsdWRlIFVTUXVhbGl0eUNvcmVDb21tb24gdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcgY2FsbGVkIFVTUXVhbGl0eUNvcmVDb21tb24KaW5jbHVkZSBTdXBwbGVtZW50YWxEYXRhRWxlbWVudHMgdmVyc2lvbiAnNi4xLjAwMCcgY2FsbGVkIFNERQppbmNsdWRlIFN0YXR1cyB2ZXJzaW9uICcyLjEuMDAwJyBjYWxsZWQgU3RhdHVzCgpjb2Rlc3lzdGVtICJMT0lOQyI6ICdodHRwOi8vbG9pbmMub3JnJwpjb2Rlc3lzdGVtICJTTk9NRURDVCI6ICdodHRwOi8vc25vbWVkLmluZm8vc2N0JwoKdmFsdWVzZXQgIkFudGljb2FndWxhbnQgTWVkaWNhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMjA2LjE5Jwp2YWx1ZXNldCAiRW5jb3VudGVyIElucGF0aWVudCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy42NjYuNS4zMDcnCnZhbHVlc2V0ICJFdGhuaWNpdHkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTE0MjIyLjQuMTEuODM3Jwp2YWx1ZXNldCAiSG9zcGljZSBDYXJlIEFtYnVsYXRvcnkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMTA4LjE1Jwp2YWx1ZXNldCAiSG9zcGljZSBEaWFnbm9zaXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTE2NScKdmFsdWVzZXQgIkhvc3BpY2UgRW5jb3VudGVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMDMnCnZhbHVlc2V0ICJJbWFnaW5nIFJlbGF0ZWQgdG8gVlRFIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTIwNi40NycKdmFsdWVzZXQgIk9mZmljZSBWaXNpdCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAwMScKdmFsdWVzZXQgIk91dHBhdGllbnQgRW5jb3VudGVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDg3Jwp2YWx1ZXNldCAiUGFsbGlhdGl2ZSBDYXJlIERpYWdub3NpcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTY3Jwp2YWx1ZXNldCAiUGFsbGlhdGl2ZSBDYXJlIEVuY291bnRlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTA5MCcKdmFsdWVzZXQgIlBhbGxpYXRpdmUgQ2FyZSBJbnRlcnZlbnRpb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTk4LjEyLjExMzUnCnZhbHVlc2V0ICJWVEUgRGlhZ25vc2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTIwNi40OScKdmFsdWVzZXQgIlZURSBTeW1wdG9tcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEyMDYuNTEnCgpjb2RlICJEaXNjaGFyZ2UgdG8gaGVhbHRoY2FyZSBmYWNpbGl0eSBmb3IgaG9zcGljZSBjYXJlIChwcm9jZWR1cmUpIjogJzQyODM3MTAwMDEyNDEwMCcgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ0Rpc2NoYXJnZSB0byBoZWFsdGhjYXJlIGZhY2lsaXR5IGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSknCmNvZGUgIkRpc2NoYXJnZSB0byBob21lIGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSkiOiAnNDI4MzYxMDAwMTI0MTA3JyBmcm9tICJTTk9NRURDVCIgZGlzcGxheSAnRGlzY2hhcmdlIHRvIGhvbWUgZm9yIGhvc3BpY2UgY2FyZSAocHJvY2VkdXJlKScKY29kZSAiSG9zcGljZSBjYXJlIFtNaW5pbXVtIERhdGEgU2V0XSI6ICc0NTc1NS02JyBmcm9tICJMT0lOQyIgZGlzcGxheSAnSG9zcGljZSBjYXJlIFtNaW5pbXVtIERhdGEgU2V0XScKY29kZSAiWWVzIChxdWFsaWZpZXIgdmFsdWUpIjogJzM3MzA2NjAwMScgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ1llcyAocXVhbGlmaWVyIHZhbHVlKScKY29kZSAiRnVuY3Rpb25hbCBBc3Nlc3NtZW50IG9mIENocm9uaWMgSWxsbmVzcyBUaGVyYXB5IC0gUGFsbGlhdGl2ZSBDYXJlIFF1ZXN0aW9ubmFpcmUgKEZBQ0lULVBhbCkiOiAnNzEwMDctOScgZnJvbSAiTE9JTkMiIGRpc3BsYXkgJ0Z1bmN0aW9uYWwgQXNzZXNzbWVudCBvZiBDaHJvbmljIElsbG5lc3MgVGhlcmFweSAtIFBhbGxpYXRpdmUgQ2FyZSBRdWVzdGlvbm5haXJlIChGQUNJVC1QYWwpJwoKcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGVUaW1lPgogIGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjYtMDEtMDFUMDA6MDA6MDAuMDAwWiwgQDIwMjctMDEtMDFUMDA6MDA6MDAuMDAwWikKCmNvbnRleHQgUGF0aWVudAoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogICAgLyoqKgogICAgKiBJbmNsdWRlcyBhbGwgUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIGluIHdoaWNoIHRoZSBwYXRpZW50IHdhcyBhZ2VkIDE4IG9yIG9sZGVyIGF0IHRoZSBzdGFydCBvZiB0aGUgcXVhbGlmaWVkIFZURSBlbmNvdW50ZXIuCiAgICAqKiovCiAgCiAgIlF1YWxpZmllZCBWVEUgRW5jb3VudGVycyBEdXJpbmcgTWVhc3VyZW1lbnQgUGVyaW9kIiBRdWFsaWZpZWRFbmNvdW50ZXIKICAgIHdoZXJlIEFnZUluWWVhcnNBdChkYXRlIGZyb20gc3RhcnQgb2YgUXVhbGlmaWVkRW5jb3VudGVyLnBlcmlvZCkgPj0gMTgKCmRlZmluZSAiRGVub21pbmF0b3IiOgogICJJbml0aWFsIFBvcHVsYXRpb24iCgpkZWZpbmUgIkRlbm9taW5hdG9yIEV4Y2x1c2lvbnMiOgogICJRdWFsaWZpZWQgVlRFIEVuY291bnRlciBXaXRoIEhvc3BpY2UgU2VydmljZXMgV2l0aGluIFByZXZpb3VzIDkwIERheXMiCiAgICB1bmlvbiAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXIgV2l0aCBQYWxsaWF0aXZlIENhcmUgV2l0aGluIFByZXZpb3VzIDkwIERheXMiCiAgICB1bmlvbiAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXIgV2l0aCBPdGhlciBRdWFsaWZpZWQgVlRFIEVuY291bnRlciBEb2N1bWVudGVkIFdpdGhpbiBQcmV2aW91cyA2IE1vbnRocyIKCmRlZmluZSAiTnVtZXJhdG9yIjoKICAgIC8qKioKICAgICogSW5jbHVkZXMgYWxsIHF1YWxpZmllZCBWVEUgZW5jb3VudGVycyBpbiB3aGljaCB0aGUgVlRFIGRpYWdub3NpcyBzdGFydGVkIGdyZWF0ZXIgdGhhbiAyNCBob3VycyBhZnRlciBhIHF1YWxpZnlpbmcgUENQIHZpc2l0LgogICAgKioqKi8KICAKICAiUXVhbGlmeWluZyBEZWxheWVkIFZURSBFbmNvdW50ZXIiCgpkZWZpbmUgIlF1YWxpZnlpbmcgUGVyZm9ybWVkIEVuY291bnRlcnMiOgogICggWyJFbmNvdW50ZXIiOiAiT2ZmaWNlIFZpc2l0Il0KICAgIHVuaW9uIFsiRW5jb3VudGVyIjogIk91dHBhdGllbnQgRW5jb3VudGVyIl0KICAgIHVuaW9uIFsiRW5jb3VudGVyIjogIkVuY291bnRlciBJbnBhdGllbnQiXSApIEVuY291bnRlcgogICAgd2hlcmUgRW5jb3VudGVyLnN0YXR1cyA9ICdmaW5pc2hlZCcKICAgICAgYW5kIEVuY291bnRlci5wZXJpb2Qgc3RhcnRzIGR1cmluZyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIgLSAxODAgZGF5cywgZW5kIG9mICJNZWFzdXJlbWVudCBQZXJpb2QiXQoKZGVmaW5lICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBQQ1AgVmlzaXRzIjoKICAoIFsiRW5jb3VudGVyIjogIk91dHBhdGllbnQgRW5jb3VudGVyIl0KICAgIHVuaW9uIFsiRW5jb3VudGVyIjogIk9mZmljZSBWaXNpdCJdICkgUENQVmlzaXQKICAgIHdoZXJlIFBDUFZpc2l0LnN0YXR1cyA9ICdmaW5pc2hlZCcKICAgICAgYW5kIFBDUFZpc2l0LnBlcmlvZCBlbmRzIGR1cmluZyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIgLSAyMTAgZGF5cywgZW5kIG9mICJNZWFzdXJlbWVudCBQZXJpb2QiXQoKZGVmaW5lICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBQQ1AgVmlzaXRzIFdpdGggVlRFIFN5bXB0b20iOgogICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBQQ1AgVmlzaXRzIiBJbmRleFBDUFZpc2l0CiAgICB3aGVyZSBJbmRleFBDUFZpc2l0LnJlYXNvbkNvZGUgaW4gIlZURSBTeW1wdG9tcyIKICAgICAgb3IgZXhpc3RzICggW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIlZURSBTeW1wdG9tcyJdIFZURVN5bXB0b21Db25kaXRpb24KICAgICAgICAgIHdoZXJlIFZURVN5bXB0b21Db25kaXRpb24uaXNWZXJpZmllZCAoICkKICAgICAgICAgICAgYW5kIEluZGV4UENQVmlzaXQucmVhc29uUmVmZXJlbmNlLnJlZmVyZW5jZXMgKCBWVEVTeW1wdG9tQ29uZGl0aW9uICkKICAgICAgKQoKZGVmaW5lICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBWVEUgRW5jb3VudGVycyI6CiAgIlF1YWxpZnlpbmcgUGVyZm9ybWVkIEVuY291bnRlcnMiIFZURUVuY291bnRlcgogICAgd2hlcmUgVlRFRW5jb3VudGVyLnJlYXNvbkNvZGUgaW4gIlZURSBEaWFnbm9zZXMiCiAgICAgIG9yIGV4aXN0cyAoIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJWVEUgRGlhZ25vc2VzIl0gVlRFQ29uZGl0aW9uCiAgICAgICAgICB3aGVyZSBWVEVDb25kaXRpb24uaXNDb25maXJtZWRDb25kaXRpb24gKCApCiAgICAgICAgICAgIGFuZCBWVEVFbmNvdW50ZXIucmVhc29uUmVmZXJlbmNlLnJlZmVyZW5jZXMgKCBWVEVDb25kaXRpb24gKQogICAgICApCgpkZWZpbmUgIlF1YWxpZnlpbmcgVlRFIEltYWdpbmcgRGlhZ25vc3RpYyBSZXBvcnQiOgogIFsiRGlhZ25vc3RpY1JlcG9ydE5vdGUiOiAiSW1hZ2luZyBSZWxhdGVkIHRvIFZURSJdIFZURURpYWdub3N0aWNSZXBvcnQKICAgIHdoZXJlIFZURURpYWdub3N0aWNSZXBvcnQuc3RhdHVzIGluIHsgJ2ZpbmFsJywgJ2FtZW5kZWQnLCAnY29ycmVjdGVkJyB9CgpkZWZpbmUgIkFudGlDb2FndWxhbnQgVGhlcmFweSBPcmRlcmVkIjoKICBbIk1lZGljYXRpb25SZXF1ZXN0IjogIkFudGljb2FndWxhbnQgTWVkaWNhdGlvbnMiXSBBbnRpQ29hZ3VsYW50CiAgICB3aGVyZSBBbnRpQ29hZ3VsYW50LnN0YXR1cyBpbiB7ICdhY3RpdmUnLCAnY29tcGxldGVkJyB9CiAgICAgIGFuZCBBbnRpQ29hZ3VsYW50LmludGVudCA9ICdvcmRlcicKCmRlZmluZSAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIjoKICBmcm9tCiAgICAiUXVhbGlmeWluZyBQZXJmb3JtZWQgVlRFIEVuY291bnRlcnMiIFZURUVuY291bnRlciwKICAgICJRdWFsaWZ5aW5nIFBlcmZvcm1lZCBQQ1AgVmlzaXRzIFdpdGggVlRFIFN5bXB0b20iIEluZGV4UENQLAogICAgIlF1YWxpZnlpbmcgVlRFIEltYWdpbmcgRGlhZ25vc3RpYyBSZXBvcnQiIFZURVN0dWR5LAogICAgIkFudGlDb2FndWxhbnQgVGhlcmFweSBPcmRlcmVkIiBBbnRpQ29hZ3VsYW50T3JkZXJlZAogICAgd2hlcmUgVlRFU3R1ZHkuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApIHN0YXJ0cyBkdXJpbmcgZGF5IG9mIFZURUVuY291bnRlci5wZXJpb2QKICAgICAgYW5kICggQW50aUNvYWd1bGFudE9yZGVyZWQuYXV0aG9yZWRPbiAxMiBob3VycyBvciBsZXNzIGJlZm9yZSBzdGFydCBvZiBWVEVTdHVkeS5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkKICAgICAgICAgb3IgQW50aUNvYWd1bGFudE9yZGVyZWQuYXV0aG9yZWRPbiAxMiBob3VycyBvciBsZXNzIGFmdGVyIHN0YXJ0IG9mIFZURVN0dWR5LmVmZmVjdGl2ZS50b0ludGVydmFsICggKQogICAgICApCiAgICAgIGFuZCBJbmRleFBDUC5wZXJpb2Qgc3RhcnRzIDMwIGRheXMgb3IgbGVzcyBvbiBvciBiZWZvcmUgc3RhcnQgb2YgVlRFU3R1ZHkuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApCiAgICByZXR1cm4gVlRFRW5jb3VudGVyCgpkZWZpbmUgIlF1YWxpZmllZCBWVEUgRW5jb3VudGVycyBEdXJpbmcgTWVhc3VyZW1lbnQgUGVyaW9kIjoKICAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIKICAgIHdoZXJlIFF1YWxpZmllZFZURUVuY291bnRlci5wZXJpb2Qgc3RhcnRzIGR1cmluZyBkYXkgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKCmRlZmluZSAiUXVhbGlmeWluZyBEZWxheWVkIFZURSBFbmNvdW50ZXIiOgogICJRdWFsaWZpZWQgVlRFIEVuY291bnRlcnMgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCIgRGVsYXllZFZURUVuY291bnRlcgogICAgd2l0aCAiUXVhbGlmeWluZyBQZXJmb3JtZWQgUENQIFZpc2l0cyBXaXRoIFZURSBTeW1wdG9tIiBJbmRleFBDUFZpc2l0CiAgICAgIHN1Y2ggdGhhdCBEZWxheWVkVlRFRW5jb3VudGVyLnBlcmlvZCBzdGFydHMgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFtlbmQgb2YgSW5kZXhQQ1BWaXNpdC5wZXJpb2QgKyAyIGRheSwgZW5kIG9mIEluZGV4UENQVmlzaXQucGVyaW9kICsgMzAgZGF5c10KCmRlZmluZSAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXIgV2l0aCBIb3NwaWNlIFNlcnZpY2VzIFdpdGhpbiBQcmV2aW91cyA5MCBEYXlzIjoKICBmcm9tCiAgICAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIKICAgIGxldCBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyOiBJbnRlcnZhbFtzdGFydCBvZiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIucGVyaW9kIC0gOTAgZGF5cywgZW5kIG9mIFF1YWxpZmllZFZURUVuY291bnRlci5wZXJpb2RdCiAgICB3aGVyZSBleGlzdHMgKCBbIkVuY291bnRlciI6ICJFbmNvdW50ZXIgSW5wYXRpZW50Il0gSW5wYXRpZW50RW5jb3VudGVyCiAgICAgICAgd2hlcmUgKCBJbnBhdGllbnRFbmNvdW50ZXIuaG9zcGl0YWxpemF0aW9uLmRpc2NoYXJnZURpc3Bvc2l0aW9uIH4gIkRpc2NoYXJnZSB0byBob21lIGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSkiCiAgICAgICAgICAgIG9yIElucGF0aWVudEVuY291bnRlci5ob3NwaXRhbGl6YXRpb24uZGlzY2hhcmdlRGlzcG9zaXRpb24gfiAiRGlzY2hhcmdlIHRvIGhlYWx0aGNhcmUgZmFjaWxpdHkgZm9yIGhvc3BpY2UgY2FyZSAocHJvY2VkdXJlKSIKICAgICAgICApCiAgICAgICAgICBhbmQgSW5wYXRpZW50RW5jb3VudGVyLnBlcmlvZCBlbmRzIGR1cmluZyBkYXkgb2YgTmluZXR5RGF5c0JlZm9yZVZURUVuY291bnRlcgogICAgICAgICAgYW5kIElucGF0aWVudEVuY291bnRlci5zdGF0dXMgPSAnZmluaXNoZWQnCiAgICApCiAgICAgIG9yIGV4aXN0cyAoIFsiRW5jb3VudGVyIjogIkhvc3BpY2UgRW5jb3VudGVyIl0gSG9zcGljZUVuY291bnRlcgogICAgICAgICAgd2hlcmUgSG9zcGljZUVuY291bnRlci5wZXJpb2Qgb3ZlcmxhcHMgZGF5IG9mIE5pbmV0eURheXNCZWZvcmVWVEVFbmNvdW50ZXIKICAgICAgKQogICAgICBvciBleGlzdHMgKCAoIFtPYnNlcnZhdGlvblNjcmVlbmluZ0Fzc2Vzc21lbnQ6ICJIb3NwaWNlIGNhcmUgW01pbmltdW0gRGF0YSBTZXRdIl0gKSBIb3NwaWNlQXNzZXNzbWVudAogICAgICAgICAgd2hlcmUgSG9zcGljZUFzc2Vzc21lbnQudmFsdWUgfiAiWWVzIChxdWFsaWZpZXIgdmFsdWUpIgogICAgICAgICAgICBhbmQgSG9zcGljZUFzc2Vzc21lbnQuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyCiAgICAgICkKICAgICAgb3IgZXhpc3RzICggKCBbU2VydmljZVJlcXVlc3Q6ICJIb3NwaWNlIENhcmUgQW1idWxhdG9yeSJdICkgSG9zcGljZU9yZGVyCiAgICAgICAgICB3aGVyZSBIb3NwaWNlT3JkZXIuYXV0aG9yZWRPbiBkdXJpbmcgZGF5IG9mIE5pbmV0eURheXNCZWZvcmVWVEVFbmNvdW50ZXIKICAgICAgICAgICAgYW5kIEhvc3BpY2VPcmRlci5zdGF0dXMgaW4geyAnYWN0aXZlJywgJ2NvbXBsZXRlZCcgfQogICAgICApCiAgICAgIG9yIGV4aXN0cyAoICggW1Byb2NlZHVyZTogIkhvc3BpY2UgQ2FyZSBBbWJ1bGF0b3J5Il0gKSBIb3NwaWNlUGVyZm9ybWVkCiAgICAgICAgICB3aGVyZSBIb3NwaWNlUGVyZm9ybWVkLnBlcmZvcm1lZC50b0ludGVydmFsICggKSBvdmVybGFwcyBkYXkgb2YgTmluZXR5RGF5c0JlZm9yZVZURUVuY291bnRlcgogICAgICApCiAgICAgIG9yIGV4aXN0cyAoICggW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIkhvc3BpY2UgRGlhZ25vc2lzIl0gKSBIb3NwaWNlQ2FyZURpYWdub3NpcwogICAgICAgICAgd2hlcmUgSG9zcGljZUNhcmVEaWFnbm9zaXMucHJldmFsZW5jZUludGVydmFsICggKSBvdmVybGFwcyBkYXkgb2YgTmluZXR5RGF5c0JlZm9yZVZURUVuY291bnRlcgogICAgICAgICAgICBhbmQgSG9zcGljZUNhcmVEaWFnbm9zaXMuaXNWZXJpZmllZCAoICkKICAgICAgKQogICAgICBvciBleGlzdHMgKCAoIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiSG9zcGljZSBEaWFnbm9zaXMiXSApIEhvc3BpY2VDYXJlQ29uY2VybgogICAgICAgICAgd2hlcmUgSG9zcGljZUNhcmVDb25jZXJuLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mIE5pbmV0eURheXNCZWZvcmVWVEVFbmNvdW50ZXIKICAgICAgICAgICAgYW5kIEhvc3BpY2VDYXJlQ29uY2Vybi5pc1ZlcmlmaWVkICggKQogICAgICApCgpkZWZpbmUgIlF1YWxpZmllZCBWVEUgRW5jb3VudGVyIFdpdGggUGFsbGlhdGl2ZSBDYXJlIFdpdGhpbiBQcmV2aW91cyA5MCBEYXlzIjoKICBmcm9tCiAgICAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIKICAgIGxldCBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyOiBJbnRlcnZhbFtzdGFydCBvZiBRdWFsaWZpZWRWVEVFbmNvdW50ZXIucGVyaW9kIC0gOTAgZGF5cywgZW5kIG9mIFF1YWxpZmllZFZURUVuY291bnRlci5wZXJpb2RdCiAgICB3aGVyZSBleGlzdHMgKCAoIFtPYnNlcnZhdGlvblNjcmVlbmluZ0Fzc2Vzc21lbnQ6ICJGdW5jdGlvbmFsIEFzc2Vzc21lbnQgb2YgQ2hyb25pYyBJbGxuZXNzIFRoZXJhcHkgLSBQYWxsaWF0aXZlIENhcmUgUXVlc3Rpb25uYWlyZSAoRkFDSVQtUGFsKSJdICkgUGFsbGlhdGl2ZUFzc2Vzc21lbnQKICAgICAgICB3aGVyZSBQYWxsaWF0aXZlQXNzZXNzbWVudC5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mIE5pbmV0eURheXNCZWZvcmVWVEVFbmNvdW50ZXIKICAgICAgICAgIGFuZCBQYWxsaWF0aXZlQXNzZXNzbWVudC5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICAgICkKICAgICAgb3IgZXhpc3RzICggKCAoIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJQYWxsaWF0aXZlIENhcmUgRGlhZ25vc2lzIl0gKSApIFBhbGxpYXRpdmVDYXJlRGlhZ25vc2lzCiAgICAgICAgICB3aGVyZSBQYWxsaWF0aXZlQ2FyZURpYWdub3Npcy5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyCiAgICAgICAgICAgIGFuZCBQYWxsaWF0aXZlQ2FyZURpYWdub3Npcy5pc1ZlcmlmaWVkICggKQogICAgICApCiAgICAgIG9yIGV4aXN0cyAoICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJQYWxsaWF0aXZlIENhcmUgRGlhZ25vc2lzIl0gKSBQYWxsaWF0aXZlQ2FyZUNvbmNlcm4KICAgICAgICAgIHdoZXJlIFBhbGxpYXRpdmVDYXJlQ29uY2Vybi5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyCiAgICAgICAgICAgIGFuZCBQYWxsaWF0aXZlQ2FyZUNvbmNlcm4uaXNWZXJpZmllZCAoICkKICAgICAgKQogICAgICBvciBleGlzdHMgKCAoIFtFbmNvdW50ZXI6ICJQYWxsaWF0aXZlIENhcmUgRW5jb3VudGVyIl0gKSBQYWxsaWF0aXZlRW5jb3VudGVyCiAgICAgICAgICB3aGVyZSBQYWxsaWF0aXZlRW5jb3VudGVyLnBlcmlvZCBvdmVybGFwcyBkYXkgb2YgTmluZXR5RGF5c0JlZm9yZVZURUVuY291bnRlcgogICAgICApCiAgICAgIG9yIGV4aXN0cyAoICggW1Byb2NlZHVyZTogIlBhbGxpYXRpdmUgQ2FyZSBJbnRlcnZlbnRpb24iXSApIFBhbGxpYXRpdmVJbnRlcnZlbnRpb24KICAgICAgICAgIHdoZXJlIFBhbGxpYXRpdmVJbnRlcnZlbnRpb24ucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBOaW5ldHlEYXlzQmVmb3JlVlRFRW5jb3VudGVyCiAgICAgICkKCmRlZmluZSAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXIgV2l0aCBPdGhlciBRdWFsaWZpZWQgVlRFIEVuY291bnRlciBEb2N1bWVudGVkIFdpdGhpbiBQcmV2aW91cyA2IE1vbnRocyI6CiAgIlF1YWxpZmllZCBWVEUgRW5jb3VudGVycyIgQ3VycmVudFF1YWxpZmllZFZURQogICAgd2l0aCAiUXVhbGlmaWVkIFZURSBFbmNvdW50ZXJzIiBQcmV2aW91c1F1YWxpZmllZFZURQogICAgICBzdWNoIHRoYXQgUHJldmlvdXNRdWFsaWZpZWRWVEUucGVyaW9kIHN0YXJ0cyA2IG1vbnRocyBvciBsZXNzIGJlZm9yZSBzdGFydCBvZiBDdXJyZW50UXVhbGlmaWVkVlRFLnBlcmlvZAoKZGVmaW5lICJTREUgRXRobmljaXR5IjoKICBTREUuIlNERSBFdGhuaWNpdHkiCgpkZWZpbmUgIlNERSBQYXllciI6CiAgU0RFLiJTREUgUGF5ZXIiCgpkZWZpbmUgIlNERSBSYWNlIjoKICBTREUuIlNERSBSYWNlIgoKZGVmaW5lICJTREUgU2V4IjoKICBTREUuIlNERSBTZXgiCiAgCi8qCkBkZXNjcmlwdGlvbjogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBjb25kaXRpb24gZWl0aGVyIGhhcyBubyB2ZXJpZmljYXRpb24gc3RhdHVzIG9yIGhhcyBhIHZlcmlmaWNhdGlvbiBzdGF0dXMgb2YgY29uZmlybWVkLCB1bmNvbmZpcm1lZCwgcHJvdmlzaW9uYWwsIG9yIGRpZmZlcmVudGlhbAoqLwoKCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gaXNWZXJpZmllZChjb25kaXRpb24gQ2hvaWNlPENvbmRpdGlvbkVuY291bnRlckRpYWdub3NpcywgQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJucz4pOgogIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgaXMgbm90IG51bGwgaW1wbGllcyAoIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgfiBTdGF0dXMuImNvbmZpcm1lZCIKICAgICAgb3IgY29uZGl0aW9uLnZlcmlmaWNhdGlvblN0YXR1cyB+IFN0YXR1cy4idW5jb25maXJtZWQiCiAgICAgIG9yIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgfiBTdGF0dXMuInByb3Zpc2lvbmFsIgogICAgICBvciBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIH4gU3RhdHVzLiJkaWZmZXJlbnRpYWwiCiAgKQoKLyoKCi8qCkBkZXNjcmlwdGlvbjogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBDb25kaXRpb24gaXMgY29uZmlybWVkCiovCgoKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiBpc0NvbmZpcm1lZENvbmRpdGlvbihjb25kaXRpb24gQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzKToKICBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIH4gU3RhdHVzLiJjb25maXJtZWQi"/>
    <url value="https://madie.cms.gov/Library-CMS1173FHIRDiagnosticDelayVTE.cql"/>
  </content>
</Library>