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 |
<Library xmlns="http://hl7.org/fhir">
<id value="CMS137FHIRSUDTxInitEngagement"/>
<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 CMS137FHIRSUDTxInitEngagement 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.CumulativeMedicationDuration version '2.0.0-ballot' called CMD
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 Hospice version '7.1.000' called Hospice
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
valueset "Detoxification Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1059'
valueset "Discharge Services Hospital Inpatient": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1007'
valueset "Discharge Services Hospital Inpatient Same Day Discharge": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1006'
valueset "Emergency Department Evaluation and Management Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1010'
valueset "Initial Hospital Inpatient Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1004'
valueset "Office Visit": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001'
valueset "Psych Visit Psychotherapy": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1496'
valueset "Substance Use Disorder": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.106.12.1001'
valueset "Substance Use Disorder Long Acting Medication": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1149'
valueset "Substance Use Disorder Long Acting Medication Administration": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1156'
valueset "Substance Use Disorder Short Acting Medication": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1150'
valueset "Substance Use Disorder Short Acting Medication Administration": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1157'
valueset "Substance Use Disorder Treatment": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.106.12.1005'
valueset "Telephone Visits": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080'
valueset "Virtual Encounter": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089'
parameter "Measurement Period" Interval<DateTime>
default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)
context Patient
define "Initial Population":
AgeInYearsAt(date from start of "Measurement Period") >= 13
and "First SUD Episode During Measurement Period" is not null
and not exists "History of SUD Diagnosis or Treatment"
define "First SUD Episode During Measurement Period":
First(("Qualifying Encounters") ValidEncounters
with(([ConditionEncounterDiagnosis: "Substance Use Disorder"]).verified()) SUDDiagnosis
such that ValidEncounters.period during "Measurement Period"
and SUDDiagnosis.prevalenceInterval ( ) starts during ValidEncounters.period
and SUDDiagnosis.prevalenceInterval ( ) starts 47 days or more before day of
end of "Measurement Period"
return {
ValidEncounterDate: date from start of ValidEncounters.period,
ValidEncounter: ValidEncounters
}
sort by ValidEncounterDate
).ValidEncounter
define "Qualifying Encounters":
( [Encounter: "Office Visit"]
union [Encounter: "Emergency Department Evaluation and Management Visit"]
union [Encounter: "Detoxification Visit"]
union [Encounter: "Initial Hospital Inpatient Visit"]
union [Encounter: "Discharge Services Hospital Inpatient Same Day Discharge"]
union [Encounter: "Discharge Services Hospital Inpatient"]
union [Encounter: "Telephone Visits"]
union [Encounter: "Virtual Encounter"]
).isEncounterPerformed ( )
define "History of SUD Diagnosis or Treatment":
( ( ( [Procedure: "Substance Use Disorder Treatment"]
union [Procedure: "Psych Visit Psychotherapy"]
union [Procedure: "Substance Use Disorder Long Acting Medication Administration"]
union [Procedure: "Substance Use Disorder Short Acting Medication Administration"]
).isInterventionPerformed ( ) ) Interventions
with "First SUD Episode During Measurement Period" FirstSUDEpisode
such that Interventions.performed.toInterval ( ) starts 60 days or less before day of date from start of FirstSUDEpisode.period
)
union ( ( ( "Qualifying Encounters"
except "Emergency Department or Detoxification Visit" ) QualifyingEncounter
where QualifyingEncounter.encounterDiagnosis ( ).code in "Substance Use Disorder" ) SUDEncounterDx
with "First SUD Episode During Measurement Period" FirstSUDEpisode
such that SUDEncounterDx.period starts 60 days or less before day of date from start of FirstSUDEpisode.period
)
union ( ( ( [MedicationRequest: "Substance Use Disorder Long Acting Medication"]
union [MedicationRequest: "Substance Use Disorder Short Acting Medication"]
).isMedicationOrder ( ) ) SUDMedication
with "First SUD Episode During Measurement Period" FirstSUDEpisode
such that SUDMedication.authoredOn 60 days or less before day of date from start of FirstSUDEpisode.period
)
define "Emergency Department or Detoxification Visit":
( [Encounter: "Emergency Department Evaluation and Management Visit"]
union [Encounter: "Detoxification Visit"]
).isEncounterPerformed ( )
define "Denominator":
"Initial Population"
define "Denominator Exclusions":
Hospice."Has Hospice Services"
define "Numerator 1":
exists "Treatment Initiation With Non Medication Intervention Dates"
or exists "Treatment Initiation With Medication Order Dates"
define "Treatment Initiation With Non Medication Intervention Dates":
( "Psychosocial Visit" PsychosocialVisitProcedure
let treatmentDate: date from start of PsychosocialVisitProcedure.performed.toInterval ( )
with "First SUD Episode During Measurement Period" FirstSUDEpisode
such that treatmentDate during Interval[date from start of FirstSUDEpisode.period, date from start of FirstSUDEpisode.period + 14 days )
and PsychosocialVisitProcedure.id !~ FirstSUDEpisode.id
return all treatmentDate
)
union ( "Psychosocial Visit" PsychosocialVisitEncounter
let treatmentDate: date from start of PsychosocialVisitEncounter.period
with "First SUD Episode During Measurement Period" FirstSUDEpisode
such that treatmentDate during Interval[date from start of FirstSUDEpisode.period, date from start of FirstSUDEpisode.period + 14 days )
and PsychosocialVisitEncounter.id !~ FirstSUDEpisode.id
return all treatmentDate
)
define "Psychosocial Visit":
( ( [Procedure: "Substance Use Disorder Treatment"]
union [Procedure: "Psych Visit Psychotherapy"]
).isInterventionPerformed ( )
)
union ( ( [Encounter: "Telephone Visits"]
union [Encounter: "Virtual Encounter"]
).isEncounterPerformed ( ) ) TelehealthEncounter
where TelehealthEncounter.encounterDiagnosis ( ).code in "Substance Use Disorder"
define "Treatment Initiation With Medication Order Dates":
( ( ( [MedicationRequest: "Substance Use Disorder Short Acting Medication"]
union [MedicationRequest: "Substance Use Disorder Long Acting Medication"]
).isMedicationOrder ( ) ) SUDMedication
let treatmentDate: date from start of SUDMedication.authoredOn.toInterval ( )
with "First SUD Episode During Measurement Period" FirstSUDEpisode
such that treatmentDate during Interval[date from start of FirstSUDEpisode.period, date from start of FirstSUDEpisode.period + 14 days )
return all treatmentDate
)
union ( ( ( [Procedure: "Substance Use Disorder Short Acting Medication Administration"]
union [Procedure: "Substance Use Disorder Long Acting Medication Administration"]
).isProcedurePerformed ( ) ) SUDMedAdministration
let treatmentDate: date from start of SUDMedAdministration.performed.toInterval ( )
with "First SUD Episode During Measurement Period" FirstSUDEpisode
such that treatmentDate during Interval[date from start of FirstSUDEpisode.period, date from start of FirstSUDEpisode.period + 14 days )
return all treatmentDate
)
define "Has Two or More Treatment Engagements With Short Acting Medication or Non Medication Intervention":
Count((("Psychosocial Visit"
union(([Procedure: "Substance Use Disorder Short Acting Medication Administration"]).isProcedurePerformed())) ShortActingTreatment
with(Min("Treatment Initiation With Non Medication Intervention Dates"
union "Treatment Initiation With Medication Order Dates"
)) InitiationTreatmentDate
such that date from start of ShortActingTreatment.performed.toInterval() 34 days or less after InitiationTreatmentDate
or date from start of ShortActingTreatment.period 34 days or less after InitiationTreatmentDate
return all ShortActingTreatment
)
union((([MedicationRequest: "Substance Use Disorder Short Acting Medication"]).isMedicationOrder()) ShortActingMedOrder
with(Min("Treatment Initiation With Non Medication Intervention Dates"
union "Treatment Initiation With Medication Order Dates"
)) InitiationTreatmentDate
such that date from start of ShortActingMedOrder.authoredOn.toInterval() 34 days or less after InitiationTreatmentDate
return all ShortActingMedOrder
)
) >= 2
define "Numerator 2":
"Has Treatment Engagement With Long Acting Medication"
or "Has Two or More Treatment Engagements With Short Acting Medication or Non Medication Intervention"
define "Has Treatment Engagement With Long Acting Medication":
exists ( ( ( ( [MedicationRequest: "Substance Use Disorder Long Acting Medication"] ).isMedicationOrder ( ) ) LongActingMedOrder
with ( Min("Treatment Initiation With Non Medication Intervention Dates"
union "Treatment Initiation With Medication Order Dates"
) ) InitiationTreatmentDate
such that date from start of LongActingMedOrder.authoredOn.toInterval ( ) 34 days or less after InitiationTreatmentDate
)
union ( ( ( [Procedure: "Substance Use Disorder Long Acting Medication Administration"] ).isProcedurePerformed ( ) ) LongActingTreatment
with ( Min("Treatment Initiation With Non Medication Intervention Dates"
union "Treatment Initiation With Medication Order Dates"
) ) InitiationTreatmentDate
such that date from start of LongActingTreatment.performed.toInterval ( ) 34 days or less after InitiationTreatmentDate
)
)
define "SDE Ethnicity":
SDE."SDE Ethnicity"
define "SDE Payer":
SDE."SDE Payer"
define "SDE Race":
SDE."SDE Race"
define "SDE Sex":
SDE."SDE Sex"
define "Stratification 1":
AgeInYearsAt(date from start of "Measurement Period") in Interval[13, 17]
define "Stratification 2":
AgeInYearsAt(date from start of "Measurement Period") in Interval[18, 64]
define "Stratification 3":
AgeInYearsAt(date from start of "Measurement Period") >= 65</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/CMS137FHIRSUDTxInitEngagement"/>
<version value="1.1.000"/>
<name value="CMS137FHIRSUDTxInitEngagement"/>
<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="LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVMxMzdGSElSU1VEVHhJbml0RW5nYWdlbWVudCB2ZXJzaW9uICcxLjEuMDAwJwoKdXNpbmcgVVNRdWFsaXR5Q29yZSB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJwp1c2luZyBVU0NvcmUgdmVyc2lvbiAnNi4xLjAtZGVyaXZlZCcKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBobDcuZmhpci51di5jcWwuRkhJUkNvbW1vbiB2ZXJzaW9uICcyLjAuMCcgY2FsbGVkIEZISVJDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuQ3VtdWxhdGl2ZU1lZGljYXRpb25EdXJhdGlvbiB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBDTUQKaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlQ29tbW9uIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIFVTQ29yZUNvbW1vbgppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5VU0NvcmVFbGVtZW50cyB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBVU0NvcmVFbGVtZW50cwoKaW5jbHVkZSBIb3NwaWNlIHZlcnNpb24gJzcuMS4wMDAnIGNhbGxlZCBIb3NwaWNlCmluY2x1ZGUgQ1FNQ29tbW9uIHZlcnNpb24gJzUuMS4wMDAnIGNhbGxlZCBDUU1Db21tb24KaW5jbHVkZSBVU1F1YWxpdHlDb3JlQ29tbW9uIHZlcnNpb24gJzAuMS4wLWNpYnVpbGQnIGNhbGxlZCBVU1F1YWxpdHlDb3JlQ29tbW9uCmluY2x1ZGUgU3VwcGxlbWVudGFsRGF0YUVsZW1lbnRzIHZlcnNpb24gJzYuMS4wMDAnIGNhbGxlZCBTREUKaW5jbHVkZSBTdGF0dXMgdmVyc2lvbiAnMi4xLjAwMCcgY2FsbGVkIFN0YXR1cwoKdmFsdWVzZXQgIkRldG94aWZpY2F0aW9uIFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDU5Jwp2YWx1ZXNldCAiRGlzY2hhcmdlIFNlcnZpY2VzIEhvc3BpdGFsIElucGF0aWVudCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAwNycKdmFsdWVzZXQgIkRpc2NoYXJnZSBTZXJ2aWNlcyBIb3NwaXRhbCBJbnBhdGllbnQgU2FtZSBEYXkgRGlzY2hhcmdlIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDA2Jwp2YWx1ZXNldCAiRW1lcmdlbmN5IERlcGFydG1lbnQgRXZhbHVhdGlvbiBhbmQgTWFuYWdlbWVudCBWaXNpdCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAxMCcKdmFsdWVzZXQgIkluaXRpYWwgSG9zcGl0YWwgSW5wYXRpZW50IFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDA0Jwp2YWx1ZXNldCAiT2ZmaWNlIFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDAxJwp2YWx1ZXNldCAiUHN5Y2ggVmlzaXQgUHN5Y2hvdGhlcmFweSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4xNDk2Jwp2YWx1ZXNldCAiU3Vic3RhbmNlIFVzZSBEaXNvcmRlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDYuMTIuMTAwMScKdmFsdWVzZXQgIlN1YnN0YW5jZSBVc2UgRGlzb3JkZXIgTG9uZyBBY3RpbmcgTWVkaWNhdGlvbiI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMTQ5Jwp2YWx1ZXNldCAiU3Vic3RhbmNlIFVzZSBEaXNvcmRlciBMb25nIEFjdGluZyBNZWRpY2F0aW9uIEFkbWluaXN0cmF0aW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExNTYnCnZhbHVlc2V0ICJTdWJzdGFuY2UgVXNlIERpc29yZGVyIFNob3J0IEFjdGluZyBNZWRpY2F0aW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExNTAnCnZhbHVlc2V0ICJTdWJzdGFuY2UgVXNlIERpc29yZGVyIFNob3J0IEFjdGluZyBNZWRpY2F0aW9uIEFkbWluaXN0cmF0aW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExNTcnCnZhbHVlc2V0ICJTdWJzdGFuY2UgVXNlIERpc29yZGVyIFRyZWF0bWVudCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDYuMTIuMTAwNScKdmFsdWVzZXQgIlRlbGVwaG9uZSBWaXNpdHMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwODAnCnZhbHVlc2V0ICJWaXJ0dWFsIEVuY291bnRlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTA4OScKCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiBJbnRlcnZhbDxEYXRlVGltZT4KICBkZWZhdWx0IEludGVydmFsW0AyMDI2LTAxLTAxVDAwOjAwOjAwLjAwMFosIEAyMDI3LTAxLTAxVDAwOjAwOjAwLjAwMFopCgpjb250ZXh0IFBhdGllbnQKCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIjoKICBBZ2VJblllYXJzQXQoZGF0ZSBmcm9tIHN0YXJ0IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiKSA+PSAxMwogICAgYW5kICJGaXJzdCBTVUQgRXBpc29kZSBEdXJpbmcgTWVhc3VyZW1lbnQgUGVyaW9kIiBpcyBub3QgbnVsbAogICAgYW5kIG5vdCBleGlzdHMgIkhpc3Rvcnkgb2YgU1VEIERpYWdub3NpcyBvciBUcmVhdG1lbnQiCgpkZWZpbmUgIkZpcnN0IFNVRCBFcGlzb2RlIER1cmluZyBNZWFzdXJlbWVudCBQZXJpb2QiOgogIEZpcnN0KCgiUXVhbGlmeWluZyBFbmNvdW50ZXJzIikgVmFsaWRFbmNvdW50ZXJzCiAgICAgIHdpdGgoKFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJTdWJzdGFuY2UgVXNlIERpc29yZGVyIl0pLnZlcmlmaWVkKCkpIFNVRERpYWdub3NpcwogICAgICAgIHN1Y2ggdGhhdCBWYWxpZEVuY291bnRlcnMucGVyaW9kIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICAgICAgYW5kIFNVRERpYWdub3Npcy5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIHN0YXJ0cyBkdXJpbmcgVmFsaWRFbmNvdW50ZXJzLnBlcmlvZAogICAgICAgICAgYW5kIFNVRERpYWdub3Npcy5wcmV2YWxlbmNlSW50ZXJ2YWwgKCApIHN0YXJ0cyA0NyBkYXlzIG9yIG1vcmUgYmVmb3JlIGRheSBvZiAKICAgICAgICAgIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICByZXR1cm4gewogICAgICAgIFZhbGlkRW5jb3VudGVyRGF0ZTogZGF0ZSBmcm9tIHN0YXJ0IG9mIFZhbGlkRW5jb3VudGVycy5wZXJpb2QsCiAgICAgICAgVmFsaWRFbmNvdW50ZXI6IFZhbGlkRW5jb3VudGVycwogICAgICB9CiAgICAgIHNvcnQgYnkgVmFsaWRFbmNvdW50ZXJEYXRlCiAgKS5WYWxpZEVuY291bnRlcgoKZGVmaW5lICJRdWFsaWZ5aW5nIEVuY291bnRlcnMiOgogICggW0VuY291bnRlcjogIk9mZmljZSBWaXNpdCJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBFdmFsdWF0aW9uIGFuZCBNYW5hZ2VtZW50IFZpc2l0Il0KICAgICAgdW5pb24gW0VuY291bnRlcjogIkRldG94aWZpY2F0aW9uIFZpc2l0Il0KICAgICAgdW5pb24gW0VuY291bnRlcjogIkluaXRpYWwgSG9zcGl0YWwgSW5wYXRpZW50IFZpc2l0Il0KICAgICAgdW5pb24gW0VuY291bnRlcjogIkRpc2NoYXJnZSBTZXJ2aWNlcyBIb3NwaXRhbCBJbnBhdGllbnQgU2FtZSBEYXkgRGlzY2hhcmdlIl0KICAgICAgdW5pb24gW0VuY291bnRlcjogIkRpc2NoYXJnZSBTZXJ2aWNlcyBIb3NwaXRhbCBJbnBhdGllbnQiXQogICAgICB1bmlvbiBbRW5jb3VudGVyOiAiVGVsZXBob25lIFZpc2l0cyJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJWaXJ0dWFsIEVuY291bnRlciJdCiAgKS5pc0VuY291bnRlclBlcmZvcm1lZCAoICkKCmRlZmluZSAiSGlzdG9yeSBvZiBTVUQgRGlhZ25vc2lzIG9yIFRyZWF0bWVudCI6CiAgKCAoICggW1Byb2NlZHVyZTogIlN1YnN0YW5jZSBVc2UgRGlzb3JkZXIgVHJlYXRtZW50Il0KICAgICAgICB1bmlvbiBbUHJvY2VkdXJlOiAiUHN5Y2ggVmlzaXQgUHN5Y2hvdGhlcmFweSJdCiAgICAgICAgdW5pb24gW1Byb2NlZHVyZTogIlN1YnN0YW5jZSBVc2UgRGlzb3JkZXIgTG9uZyBBY3RpbmcgTWVkaWNhdGlvbiBBZG1pbmlzdHJhdGlvbiJdCiAgICAgICAgdW5pb24gW1Byb2NlZHVyZTogIlN1YnN0YW5jZSBVc2UgRGlzb3JkZXIgU2hvcnQgQWN0aW5nIE1lZGljYXRpb24gQWRtaW5pc3RyYXRpb24iXQogICAgKS5pc0ludGVydmVudGlvblBlcmZvcm1lZCAoICkgKSBJbnRlcnZlbnRpb25zCiAgICAgIHdpdGggIkZpcnN0IFNVRCBFcGlzb2RlIER1cmluZyBNZWFzdXJlbWVudCBQZXJpb2QiIEZpcnN0U1VERXBpc29kZQogICAgICAgIHN1Y2ggdGhhdCBJbnRlcnZlbnRpb25zLnBlcmZvcm1lZC50b0ludGVydmFsICggKSBzdGFydHMgNjAgZGF5cyBvciBsZXNzIGJlZm9yZSBkYXkgb2YgZGF0ZSBmcm9tIHN0YXJ0IG9mIEZpcnN0U1VERXBpc29kZS5wZXJpb2QKICApCiAgICB1bmlvbiAoICggKCAiUXVhbGlmeWluZyBFbmNvdW50ZXJzIgogICAgICAgIGV4Y2VwdCAiRW1lcmdlbmN5IERlcGFydG1lbnQgb3IgRGV0b3hpZmljYXRpb24gVmlzaXQiICkgUXVhbGlmeWluZ0VuY291bnRlcgogICAgICAgIHdoZXJlIFF1YWxpZnlpbmdFbmNvdW50ZXIuZW5jb3VudGVyRGlhZ25vc2lzICggKS5jb2RlIGluICJTdWJzdGFuY2UgVXNlIERpc29yZGVyIiApIFNVREVuY291bnRlckR4CiAgICAgICAgd2l0aCAiRmlyc3QgU1VEIEVwaXNvZGUgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCIgRmlyc3RTVURFcGlzb2RlCiAgICAgICAgICBzdWNoIHRoYXQgU1VERW5jb3VudGVyRHgucGVyaW9kIHN0YXJ0cyA2MCBkYXlzIG9yIGxlc3MgYmVmb3JlIGRheSBvZiBkYXRlIGZyb20gc3RhcnQgb2YgRmlyc3RTVURFcGlzb2RlLnBlcmlvZAogICAgKQogICAgdW5pb24gKCAoICggW01lZGljYXRpb25SZXF1ZXN0OiAiU3Vic3RhbmNlIFVzZSBEaXNvcmRlciBMb25nIEFjdGluZyBNZWRpY2F0aW9uIl0KICAgICAgICAgIHVuaW9uIFtNZWRpY2F0aW9uUmVxdWVzdDogIlN1YnN0YW5jZSBVc2UgRGlzb3JkZXIgU2hvcnQgQWN0aW5nIE1lZGljYXRpb24iXQogICAgICApLmlzTWVkaWNhdGlvbk9yZGVyICggKSApIFNVRE1lZGljYXRpb24KICAgICAgICB3aXRoICJGaXJzdCBTVUQgRXBpc29kZSBEdXJpbmcgTWVhc3VyZW1lbnQgUGVyaW9kIiBGaXJzdFNVREVwaXNvZGUKICAgICAgICAgIHN1Y2ggdGhhdCBTVURNZWRpY2F0aW9uLmF1dGhvcmVkT24gNjAgZGF5cyBvciBsZXNzIGJlZm9yZSBkYXkgb2YgZGF0ZSBmcm9tIHN0YXJ0IG9mIEZpcnN0U1VERXBpc29kZS5wZXJpb2QKICAgICkKCmRlZmluZSAiRW1lcmdlbmN5IERlcGFydG1lbnQgb3IgRGV0b3hpZmljYXRpb24gVmlzaXQiOgogICggW0VuY291bnRlcjogIkVtZXJnZW5jeSBEZXBhcnRtZW50IEV2YWx1YXRpb24gYW5kIE1hbmFnZW1lbnQgVmlzaXQiXQogICAgICB1bmlvbiBbRW5jb3VudGVyOiAiRGV0b3hpZmljYXRpb24gVmlzaXQiXQogICkuaXNFbmNvdW50ZXJQZXJmb3JtZWQgKCApCgpkZWZpbmUgIkRlbm9taW5hdG9yIjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIgoKZGVmaW5lICJEZW5vbWluYXRvciBFeGNsdXNpb25zIjoKICBIb3NwaWNlLiJIYXMgSG9zcGljZSBTZXJ2aWNlcyIKCmRlZmluZSAiTnVtZXJhdG9yIDEiOgogIGV4aXN0cyAiVHJlYXRtZW50IEluaXRpYXRpb24gV2l0aCBOb24gTWVkaWNhdGlvbiBJbnRlcnZlbnRpb24gRGF0ZXMiCiAgICBvciBleGlzdHMgIlRyZWF0bWVudCBJbml0aWF0aW9uIFdpdGggTWVkaWNhdGlvbiBPcmRlciBEYXRlcyIKCmRlZmluZSAiVHJlYXRtZW50IEluaXRpYXRpb24gV2l0aCBOb24gTWVkaWNhdGlvbiBJbnRlcnZlbnRpb24gRGF0ZXMiOgogICggIlBzeWNob3NvY2lhbCBWaXNpdCIgUHN5Y2hvc29jaWFsVmlzaXRQcm9jZWR1cmUKICAgICAgbGV0IHRyZWF0bWVudERhdGU6IGRhdGUgZnJvbSBzdGFydCBvZiBQc3ljaG9zb2NpYWxWaXNpdFByb2NlZHVyZS5wZXJmb3JtZWQudG9JbnRlcnZhbCAoICkKICAgICAgd2l0aCAiRmlyc3QgU1VEIEVwaXNvZGUgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCIgRmlyc3RTVURFcGlzb2RlCiAgICAgICAgc3VjaCB0aGF0IHRyZWF0bWVudERhdGUgZHVyaW5nIEludGVydmFsW2RhdGUgZnJvbSBzdGFydCBvZiBGaXJzdFNVREVwaXNvZGUucGVyaW9kLCBkYXRlIGZyb20gc3RhcnQgb2YgRmlyc3RTVURFcGlzb2RlLnBlcmlvZCArIDE0IGRheXMgKQogICAgICAgICAgYW5kIFBzeWNob3NvY2lhbFZpc2l0UHJvY2VkdXJlLmlkICF+IEZpcnN0U1VERXBpc29kZS5pZAogICAgICByZXR1cm4gYWxsIHRyZWF0bWVudERhdGUKICApCiAgICB1bmlvbiAoICJQc3ljaG9zb2NpYWwgVmlzaXQiIFBzeWNob3NvY2lhbFZpc2l0RW5jb3VudGVyCiAgICAgICAgbGV0IHRyZWF0bWVudERhdGU6IGRhdGUgZnJvbSBzdGFydCBvZiBQc3ljaG9zb2NpYWxWaXNpdEVuY291bnRlci5wZXJpb2QKICAgICAgICB3aXRoICJGaXJzdCBTVUQgRXBpc29kZSBEdXJpbmcgTWVhc3VyZW1lbnQgUGVyaW9kIiBGaXJzdFNVREVwaXNvZGUKICAgICAgICAgIHN1Y2ggdGhhdCB0cmVhdG1lbnREYXRlIGR1cmluZyBJbnRlcnZhbFtkYXRlIGZyb20gc3RhcnQgb2YgRmlyc3RTVURFcGlzb2RlLnBlcmlvZCwgZGF0ZSBmcm9tIHN0YXJ0IG9mIEZpcnN0U1VERXBpc29kZS5wZXJpb2QgKyAxNCBkYXlzICkKICAgICAgICAgICAgYW5kIFBzeWNob3NvY2lhbFZpc2l0RW5jb3VudGVyLmlkICF+IEZpcnN0U1VERXBpc29kZS5pZAogICAgICAgIHJldHVybiBhbGwgdHJlYXRtZW50RGF0ZQogICAgKQoKZGVmaW5lICJQc3ljaG9zb2NpYWwgVmlzaXQiOgogICggKCBbUHJvY2VkdXJlOiAiU3Vic3RhbmNlIFVzZSBEaXNvcmRlciBUcmVhdG1lbnQiXQogICAgICAgIHVuaW9uIFtQcm9jZWR1cmU6ICJQc3ljaCBWaXNpdCBQc3ljaG90aGVyYXB5Il0KICAgICkuaXNJbnRlcnZlbnRpb25QZXJmb3JtZWQgKCApCiAgKQogICAgdW5pb24gKCAoIFtFbmNvdW50ZXI6ICJUZWxlcGhvbmUgVmlzaXRzIl0KICAgICAgICB1bmlvbiBbRW5jb3VudGVyOiAiVmlydHVhbCBFbmNvdW50ZXIiXQogICAgKS5pc0VuY291bnRlclBlcmZvcm1lZCAoICkgKSBUZWxlaGVhbHRoRW5jb3VudGVyCiAgICAgIHdoZXJlIFRlbGVoZWFsdGhFbmNvdW50ZXIuZW5jb3VudGVyRGlhZ25vc2lzICggKS5jb2RlIGluICJTdWJzdGFuY2UgVXNlIERpc29yZGVyIgoKZGVmaW5lICJUcmVhdG1lbnQgSW5pdGlhdGlvbiBXaXRoIE1lZGljYXRpb24gT3JkZXIgRGF0ZXMiOgogICggKCAoIFtNZWRpY2F0aW9uUmVxdWVzdDogIlN1YnN0YW5jZSBVc2UgRGlzb3JkZXIgU2hvcnQgQWN0aW5nIE1lZGljYXRpb24iXQogICAgICAgIHVuaW9uIFtNZWRpY2F0aW9uUmVxdWVzdDogIlN1YnN0YW5jZSBVc2UgRGlzb3JkZXIgTG9uZyBBY3RpbmcgTWVkaWNhdGlvbiJdCiAgICApLmlzTWVkaWNhdGlvbk9yZGVyICggKSApIFNVRE1lZGljYXRpb24KICAgICAgbGV0IHRyZWF0bWVudERhdGU6IGRhdGUgZnJvbSBzdGFydCBvZiBTVURNZWRpY2F0aW9uLmF1dGhvcmVkT24udG9JbnRlcnZhbCAoICkKICAgICAgd2l0aCAiRmlyc3QgU1VEIEVwaXNvZGUgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCIgRmlyc3RTVURFcGlzb2RlCiAgICAgICAgc3VjaCB0aGF0IHRyZWF0bWVudERhdGUgZHVyaW5nIEludGVydmFsW2RhdGUgZnJvbSBzdGFydCBvZiBGaXJzdFNVREVwaXNvZGUucGVyaW9kLCBkYXRlIGZyb20gc3RhcnQgb2YgRmlyc3RTVURFcGlzb2RlLnBlcmlvZCArIDE0IGRheXMgKQogICAgICByZXR1cm4gYWxsIHRyZWF0bWVudERhdGUKICApCiAgICB1bmlvbiAoICggKCBbUHJvY2VkdXJlOiAiU3Vic3RhbmNlIFVzZSBEaXNvcmRlciBTaG9ydCBBY3RpbmcgTWVkaWNhdGlvbiBBZG1pbmlzdHJhdGlvbiJdCiAgICAgICAgICB1bmlvbiBbUHJvY2VkdXJlOiAiU3Vic3RhbmNlIFVzZSBEaXNvcmRlciBMb25nIEFjdGluZyBNZWRpY2F0aW9uIEFkbWluaXN0cmF0aW9uIl0KICAgICAgKS5pc1Byb2NlZHVyZVBlcmZvcm1lZCAoICkgKSBTVURNZWRBZG1pbmlzdHJhdGlvbgogICAgICAgIGxldCB0cmVhdG1lbnREYXRlOiBkYXRlIGZyb20gc3RhcnQgb2YgU1VETWVkQWRtaW5pc3RyYXRpb24ucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApCiAgICAgICAgd2l0aCAiRmlyc3QgU1VEIEVwaXNvZGUgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCIgRmlyc3RTVURFcGlzb2RlCiAgICAgICAgICBzdWNoIHRoYXQgdHJlYXRtZW50RGF0ZSBkdXJpbmcgSW50ZXJ2YWxbZGF0ZSBmcm9tIHN0YXJ0IG9mIEZpcnN0U1VERXBpc29kZS5wZXJpb2QsIGRhdGUgZnJvbSBzdGFydCBvZiBGaXJzdFNVREVwaXNvZGUucGVyaW9kICsgMTQgZGF5cyApCiAgICAgICAgcmV0dXJuIGFsbCB0cmVhdG1lbnREYXRlCiAgICApCgpkZWZpbmUgIkhhcyBUd28gb3IgTW9yZSBUcmVhdG1lbnQgRW5nYWdlbWVudHMgV2l0aCBTaG9ydCBBY3RpbmcgTWVkaWNhdGlvbiBvciBOb24gTWVkaWNhdGlvbiBJbnRlcnZlbnRpb24iOgogIENvdW50KCgoIlBzeWNob3NvY2lhbCBWaXNpdCIKICAgICAgICB1bmlvbigoW1Byb2NlZHVyZTogIlN1YnN0YW5jZSBVc2UgRGlzb3JkZXIgU2hvcnQgQWN0aW5nIE1lZGljYXRpb24gQWRtaW5pc3RyYXRpb24iXSkuaXNQcm9jZWR1cmVQZXJmb3JtZWQoKSkpIFNob3J0QWN0aW5nVHJlYXRtZW50CiAgICAgICAgd2l0aChNaW4oIlRyZWF0bWVudCBJbml0aWF0aW9uIFdpdGggTm9uIE1lZGljYXRpb24gSW50ZXJ2ZW50aW9uIERhdGVzIgogICAgICAgICAgICB1bmlvbiAiVHJlYXRtZW50IEluaXRpYXRpb24gV2l0aCBNZWRpY2F0aW9uIE9yZGVyIERhdGVzIgogICAgICAgICkpIEluaXRpYXRpb25UcmVhdG1lbnREYXRlCiAgICAgICAgICBzdWNoIHRoYXQgZGF0ZSBmcm9tIHN0YXJ0IG9mIFNob3J0QWN0aW5nVHJlYXRtZW50LnBlcmZvcm1lZC50b0ludGVydmFsKCkgMzQgZGF5cyBvciBsZXNzIGFmdGVyIEluaXRpYXRpb25UcmVhdG1lbnREYXRlCiAgICAgICAgICAgIG9yIGRhdGUgZnJvbSBzdGFydCBvZiBTaG9ydEFjdGluZ1RyZWF0bWVudC5wZXJpb2QgMzQgZGF5cyBvciBsZXNzIGFmdGVyIEluaXRpYXRpb25UcmVhdG1lbnREYXRlCiAgICAgICAgcmV0dXJuIGFsbCBTaG9ydEFjdGluZ1RyZWF0bWVudAogICAgKQogICAgICB1bmlvbigoKFtNZWRpY2F0aW9uUmVxdWVzdDogIlN1YnN0YW5jZSBVc2UgRGlzb3JkZXIgU2hvcnQgQWN0aW5nIE1lZGljYXRpb24iXSkuaXNNZWRpY2F0aW9uT3JkZXIoKSkgU2hvcnRBY3RpbmdNZWRPcmRlcgogICAgICAgICAgd2l0aChNaW4oIlRyZWF0bWVudCBJbml0aWF0aW9uIFdpdGggTm9uIE1lZGljYXRpb24gSW50ZXJ2ZW50aW9uIERhdGVzIgogICAgICAgICAgICAgIHVuaW9uICJUcmVhdG1lbnQgSW5pdGlhdGlvbiBXaXRoIE1lZGljYXRpb24gT3JkZXIgRGF0ZXMiCiAgICAgICAgICApKSBJbml0aWF0aW9uVHJlYXRtZW50RGF0ZQogICAgICAgICAgICBzdWNoIHRoYXQgZGF0ZSBmcm9tIHN0YXJ0IG9mIFNob3J0QWN0aW5nTWVkT3JkZXIuYXV0aG9yZWRPbi50b0ludGVydmFsKCkgMzQgZGF5cyBvciBsZXNzIGFmdGVyIEluaXRpYXRpb25UcmVhdG1lbnREYXRlCiAgICAgICAgICByZXR1cm4gYWxsIFNob3J0QWN0aW5nTWVkT3JkZXIKICAgICAgKQogICkgPj0gMgoKZGVmaW5lICJOdW1lcmF0b3IgMiI6CiAgIkhhcyBUcmVhdG1lbnQgRW5nYWdlbWVudCBXaXRoIExvbmcgQWN0aW5nIE1lZGljYXRpb24iCiAgICBvciAiSGFzIFR3byBvciBNb3JlIFRyZWF0bWVudCBFbmdhZ2VtZW50cyBXaXRoIFNob3J0IEFjdGluZyBNZWRpY2F0aW9uIG9yIE5vbiBNZWRpY2F0aW9uIEludGVydmVudGlvbiIKCmRlZmluZSAiSGFzIFRyZWF0bWVudCBFbmdhZ2VtZW50IFdpdGggTG9uZyBBY3RpbmcgTWVkaWNhdGlvbiI6CiAgZXhpc3RzICggKCAoICggW01lZGljYXRpb25SZXF1ZXN0OiAiU3Vic3RhbmNlIFVzZSBEaXNvcmRlciBMb25nIEFjdGluZyBNZWRpY2F0aW9uIl0gKS5pc01lZGljYXRpb25PcmRlciAoICkgKSBMb25nQWN0aW5nTWVkT3JkZXIKICAgICAgICB3aXRoICggTWluKCJUcmVhdG1lbnQgSW5pdGlhdGlvbiBXaXRoIE5vbiBNZWRpY2F0aW9uIEludGVydmVudGlvbiBEYXRlcyIKICAgICAgICAgICAgdW5pb24gIlRyZWF0bWVudCBJbml0aWF0aW9uIFdpdGggTWVkaWNhdGlvbiBPcmRlciBEYXRlcyIKICAgICAgICApICkgSW5pdGlhdGlvblRyZWF0bWVudERhdGUKICAgICAgICAgIHN1Y2ggdGhhdCBkYXRlIGZyb20gc3RhcnQgb2YgTG9uZ0FjdGluZ01lZE9yZGVyLmF1dGhvcmVkT24udG9JbnRlcnZhbCAoICkgMzQgZGF5cyBvciBsZXNzIGFmdGVyIEluaXRpYXRpb25UcmVhdG1lbnREYXRlCiAgICApCiAgICAgIHVuaW9uICggKCAoIFtQcm9jZWR1cmU6ICJTdWJzdGFuY2UgVXNlIERpc29yZGVyIExvbmcgQWN0aW5nIE1lZGljYXRpb24gQWRtaW5pc3RyYXRpb24iXSApLmlzUHJvY2VkdXJlUGVyZm9ybWVkICggKSApIExvbmdBY3RpbmdUcmVhdG1lbnQKICAgICAgICAgIHdpdGggKCBNaW4oIlRyZWF0bWVudCBJbml0aWF0aW9uIFdpdGggTm9uIE1lZGljYXRpb24gSW50ZXJ2ZW50aW9uIERhdGVzIgogICAgICAgICAgICAgIHVuaW9uICJUcmVhdG1lbnQgSW5pdGlhdGlvbiBXaXRoIE1lZGljYXRpb24gT3JkZXIgRGF0ZXMiCiAgICAgICAgICApICkgSW5pdGlhdGlvblRyZWF0bWVudERhdGUKICAgICAgICAgICAgc3VjaCB0aGF0IGRhdGUgZnJvbSBzdGFydCBvZiBMb25nQWN0aW5nVHJlYXRtZW50LnBlcmZvcm1lZC50b0ludGVydmFsICggKSAzNCBkYXlzIG9yIGxlc3MgYWZ0ZXIgSW5pdGlhdGlvblRyZWF0bWVudERhdGUKICAgICAgKQogICkKCmRlZmluZSAiU0RFIEV0aG5pY2l0eSI6CiAgU0RFLiJTREUgRXRobmljaXR5IgoKZGVmaW5lICJTREUgUGF5ZXIiOgogIFNERS4iU0RFIFBheWVyIgoKZGVmaW5lICJTREUgUmFjZSI6CiAgU0RFLiJTREUgUmFjZSIKCmRlZmluZSAiU0RFIFNleCI6CiAgU0RFLiJTREUgU2V4IgoKZGVmaW5lICJTdHJhdGlmaWNhdGlvbiAxIjoKICBBZ2VJblllYXJzQXQoZGF0ZSBmcm9tIHN0YXJ0IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiKSBpbiBJbnRlcnZhbFsxMywgMTddCgpkZWZpbmUgIlN0cmF0aWZpY2F0aW9uIDIiOgogIEFnZUluWWVhcnNBdChkYXRlIGZyb20gc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIpIGluIEludGVydmFsWzE4LCA2NF0KCmRlZmluZSAiU3RyYXRpZmljYXRpb24gMyI6CiAgQWdlSW5ZZWFyc0F0KGRhdGUgZnJvbSBzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIikgPj0gNjU="/>
<url
value="https://madie.cms.gov/Library-CMS137FHIRSUDTxInitEngagement.cql"/>
</content>
</Library>