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

: CMS138FHIRTobaccoScrnCessation - XML Representation

Draft as of 2026-09-19

Raw xml | Download


<Library xmlns="http://hl7.org/fhir">
  <id value="CMS138FHIRTobaccoScrnCessation"/>
  <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 CMS138FHIRTobaccoScrnCessation 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

codesystem &quot;CPT&quot;: 'http://www.ama-assn.org/go/cpt'
codesystem &quot;ICD10CM&quot;: 'http://hl7.org/fhir/sid/icd-10-cm'
codesystem &quot;TaskCode&quot;: 'http://hl7.org/fhir/CodeSystem/task-code'

valueset &quot;Annual Wellness Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1240'
valueset &quot;Home Healthcare Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016'
valueset &quot;Nutrition Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1006'
valueset &quot;Occupational Therapy Evaluation&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1011'
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;Ophthalmological Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1285'
valueset &quot;Physical Therapy Evaluation&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1022'
valueset &quot;Preventive Care Services Established Office Visit, 18 and Up&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025'
valueset &quot;Preventive Care Services Group Counseling&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1027'
valueset &quot;Preventive Care Services Individual Counseling&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1026'
valueset &quot;Preventive Care Services Initial Office Visit, 18 and Up&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023'
valueset &quot;Preventive Care Services, Initial Office Visit, 0 to 17&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1022'
valueset &quot;Preventive Care, Established Office Visit, 0 to 17&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1024'
valueset &quot;Psych Visit Diagnostic Evaluation&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1492'
valueset &quot;Psych Visit Psychotherapy&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1496'
valueset &quot;Psychoanalysis&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1141'
valueset &quot;Speech and Hearing Evaluation&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1530'
valueset &quot;Telephone Visits&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080'
valueset &quot;Tobacco Non User&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1189'
valueset &quot;Tobacco Use Cessation Counseling&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.509'
valueset &quot;Tobacco Use Cessation Pharmacotherapy&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1190'
valueset &quot;Tobacco Use Screening&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1278'
valueset &quot;Tobacco User&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1170'
valueset &quot;Virtual Encounter&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089'

code &quot;Health behavior assessment, or re-assessment (ie, health-focused clinical interview, behavioral observations, clinical decision making)&quot;: '96156' from &quot;CPT&quot; display 'Health behavior assessment, or re-assessment (ie, health-focused clinical interview, behavioral observations, clinical decision making)'
code &quot;Health behavior intervention, individual, face-to-face; initial 30 minutes&quot;: '96158' from &quot;CPT&quot; display 'Health behavior intervention, individual, face-to-face; initial 30 minutes'
code &quot;Postoperative follow-up visit, normally included in the surgical package, to indicate that an evaluation and management service was performed during a postoperative period for a reason(s) related to the original procedure&quot;: '99024' from &quot;CPT&quot; display 'Postoperative follow-up visit, normally included in the surgical package, to indicate that an evaluation and management service was performed during a postoperative period for a reason(s) related to the original procedure'
code &quot;Tobacco abuse counseling&quot;: 'Z71.6' from &quot;ICD10CM&quot; display 'Tobacco abuse counseling'
code &quot;Unlisted preventive medicine service&quot;: '99429' from &quot;CPT&quot; display 'Unlisted preventive medicine service'
code &quot;fulfill&quot;: 'fulfill' from &quot;TaskCode&quot; display 'Fulfill the focal request'

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;Denominator 1&quot;:
  &quot;Initial Population&quot;

define &quot;Denominator 2&quot;:
  &quot;Initial Population&quot;
    and &quot;Most Recent Tobacco Use Screening Indicates Tobacco User&quot; is not null

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

define &quot;Initial Population&quot;:
  AgeInYearsAt(date from start of &quot;Measurement Period&quot;) &gt;= 12
    and ( Count(&quot;Qualifying Visit During Measurement Period&quot;) &gt;= 2
        or exists &quot;Preventive Visit During Measurement Period&quot;
    )

define &quot;Numerator 1&quot;:
  &quot;Most Recent Tobacco Use Screening Indicates Tobacco Non User&quot; is not null
    or &quot;Most Recent Tobacco Use Screening Indicates Tobacco User&quot; is not null

define &quot;Numerator 2&quot;:
  exists &quot;Tobacco Cessation Counseling Given&quot;
    or exists &quot;Tobacco Cessation Pharmacotherapy Ordered&quot;
    or exists &quot;Active Pharmacotherapy for Tobacco Cessation&quot;

define &quot;Numerator 3&quot;:
  &quot;Most Recent Tobacco Use Screening Indicates Tobacco Non User&quot; is not null
    or ( &quot;Most Recent Tobacco Use Screening Indicates Tobacco User&quot; is not null
        and ( exists &quot;Tobacco Cessation Counseling Given&quot;
            or exists &quot;Tobacco Cessation Pharmacotherapy Ordered&quot;
            or exists &quot;Active Pharmacotherapy for Tobacco Cessation&quot;
        )
    )

define &quot;Most Recent Tobacco Use Screening Indicates Tobacco Non User&quot;:
  ( Last((([USCore.SmokingStatusProfile]).isObservationSmokingStatus()) TobaccoUseScreening
      where TobaccoUseScreening.effective.toInterval() during day of &quot;Measurement Period&quot;
      sort by start of effective.toInterval()
  ) ) MostRecentTobaccoUseScreening
    where MostRecentTobaccoUseScreening.value as CodeableConcept in &quot;Tobacco Non User&quot;

define &quot;Active Pharmacotherapy for Tobacco Cessation&quot;:
  ( ( [MedicationRequest: &quot;Tobacco Use Cessation Pharmacotherapy&quot;] ).isMedicationActive ( ) ) TakingCessationPharmacotherapy
    where TakingCessationPharmacotherapy.medicationRequestPeriod ( ) during day of Interval[start of &quot;Measurement Period&quot; - 6 months, end of &quot;Measurement Period&quot;]

define &quot;Most Recent Tobacco Use Screening Indicates Tobacco User&quot;:
  ( Last((([USCore.SmokingStatusProfile]).isObservationSmokingStatus()) TobaccoUseScreening
      where TobaccoUseScreening.effective.toInterval() during day of &quot;Measurement Period&quot;
      sort by start of effective.toInterval()
  ) ) MostRecentTobaccoUseScreening
    where MostRecentTobaccoUseScreening.value as CodeableConcept in &quot;Tobacco User&quot;

define &quot;Tobacco Cessation Pharmacotherapy Ordered&quot;:
  ( ( [MedicationRequest: &quot;Tobacco Use Cessation Pharmacotherapy&quot;] ).isMedicationOrder ( ) ) CessationPharmacotherapyOrdered
    where CessationPharmacotherapyOrdered.authoredOn during day of Interval[start of &quot;Measurement Period&quot; - 6 months, end of &quot;Measurement Period&quot;]
      and not exists ( [TaskRejected] TaskReject
          where TaskReject.focus.references ( CessationPharmacotherapyOrdered )
            and TaskReject.code ~ &quot;fulfill&quot;
      )

define &quot;Tobacco Cessation Counseling Given&quot;:
  ( ( ( [Procedure: &quot;Tobacco Use Cessation Counseling&quot;] ).isInterventionPerformed ( ) ) TobaccoCessationCounseling
      where TobaccoCessationCounseling.performed.toInterval ( ) during day of Interval[start of &quot;Measurement Period&quot; - 6 months, end of &quot;Measurement Period&quot;]
  )
    union ( // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)
        // Original:
        //   [ConditionProblemsHealthConcerns: &quot;Tobacco abuse counseling&quot;]
        //     union [ConditionEncounterDiagnosis: &quot;Tobacco abuse counseling&quot;]
        ( ( [FHIR.Condition: &quot;Tobacco abuse counseling&quot;] ).verified ( ) ) TobaccoCounseling
        where TobaccoCounseling.prevalenceInterval ( ) starts during day of Interval[start of &quot;Measurement Period&quot; - 6 months, end of &quot;Measurement Period&quot;]
    )

define &quot;Preventive Visit During Measurement Period&quot;:
  ( ( [Encounter: &quot;Annual Wellness Visit&quot;]
      union [Encounter: &quot;Preventive Care Services Established Office Visit, 18 and Up&quot;]
      union [Encounter: &quot;Preventive Care Services Initial Office Visit, 18 and Up&quot;]
      union [Encounter: &quot;Preventive Care, Established Office Visit, 0 to 17&quot;]
      union [Encounter: &quot;Preventive Care Services, Initial Office Visit, 0 to 17&quot;]
      union [Encounter: &quot;Preventive Care Services Group Counseling&quot;]
      union [Encounter: &quot;Preventive Care Services Individual Counseling&quot;]
      union ( [Encounter] E
          where exists ( ( E.type ) T
              where T ~ &quot;Unlisted preventive medicine service&quot;
          )
      )
      union ( [Encounter] E
          where exists ( ( E.type ) T
              where T ~ &quot;Postoperative follow-up visit, normally included in the surgical package, to indicate that an evaluation and management service was performed during a postoperative period for a reason(s) related to the original procedure&quot;
          )
      )
      union [Encounter: &quot;Nutrition Services&quot;]
  ).isEncounterPerformed ( ) ) PreventiveEncounter
    where PreventiveEncounter.period during day of &quot;Measurement Period&quot;

define &quot;Qualifying Visit During Measurement Period&quot;:
  ( ( ( [Encounter] E
        where exists ( ( E.type ) T
            where T ~ &quot;Health behavior intervention, individual, face-to-face; initial 30 minutes&quot;
        )
    )
      union ( [Encounter] E
          where exists ( ( E.type ) T
              where T ~ &quot;Health behavior assessment, or re-assessment (ie, health-focused clinical interview, behavioral observations, clinical decision making)&quot;
          )
      )
      union [Encounter: &quot;Home Healthcare Services&quot;]
      union [Encounter: &quot;Occupational Therapy Evaluation&quot;]
      union [Encounter: &quot;Office Visit&quot;]
      union [Encounter: &quot;Ophthalmological Services&quot;]
      union [Encounter: &quot;Physical Therapy Evaluation&quot;]
      union [Encounter: &quot;Psych Visit Diagnostic Evaluation&quot;]
      union [Encounter: &quot;Psych Visit Psychotherapy&quot;]
      union [Encounter: &quot;Psychoanalysis&quot;]
      union [Encounter: &quot;Speech and Hearing Evaluation&quot;]
      union [Encounter: &quot;Telephone Visits&quot;]
      union [Encounter: &quot;Virtual Encounter&quot;]
  ).isEncounterPerformed ( ) ) OfficeBasedEncounter
    where OfficeBasedEncounter.period during day of &quot;Measurement Period&quot;

define &quot;Denominator Exclusions&quot;:
  Hospice.&quot;Has Hospice Services&quot;

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;</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/CMS138FHIRTobaccoScrnCessation"/>
  <version value="1.1.000"/>
  <name value="CMS138FHIRTobaccoScrnCessation"/>
  <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="LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVMxMzhGSElSVG9iYWNjb1Njcm5DZXNzYXRpb24gdmVyc2lvbiAnMS4xLjAwMCcKCnVzaW5nIFVTUXVhbGl0eUNvcmUgdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcKdXNpbmcgVVNDb3JlIHZlcnNpb24gJzYuMS4wLWRlcml2ZWQnCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIGhsNy5maGlyLnV2LmNxbC5GSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScgY2FsbGVkIEZISVJIZWxwZXJzCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJDb21tb24gdmVyc2lvbiAnMi4wLjAnIGNhbGxlZCBGSElSQ29tbW9uCmluY2x1ZGUgaGw3LmZoaXIudXMuY3FsLkN1bXVsYXRpdmVNZWRpY2F0aW9uRHVyYXRpb24gdmVyc2lvbiAnMi4wLjAtYmFsbG90JyBjYWxsZWQgQ01ECmluY2x1ZGUgaGw3LmZoaXIudXMuY3FsLlVTQ29yZUNvbW1vbiB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBVU0NvcmVDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlRWxlbWVudHMgdmVyc2lvbiAnMi4wLjAtYmFsbG90JyBjYWxsZWQgVVNDb3JlRWxlbWVudHMKCmluY2x1ZGUgSG9zcGljZSB2ZXJzaW9uICc3LjEuMDAwJyBjYWxsZWQgSG9zcGljZQppbmNsdWRlIENRTUNvbW1vbiB2ZXJzaW9uICc1LjEuMDAwJyBjYWxsZWQgQ1FNQ29tbW9uCmluY2x1ZGUgVVNRdWFsaXR5Q29yZUNvbW1vbiB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJyBjYWxsZWQgVVNRdWFsaXR5Q29yZUNvbW1vbgppbmNsdWRlIFN1cHBsZW1lbnRhbERhdGFFbGVtZW50cyB2ZXJzaW9uICc2LjEuMDAwJyBjYWxsZWQgU0RFCmluY2x1ZGUgU3RhdHVzIHZlcnNpb24gJzIuMS4wMDAnIGNhbGxlZCBTdGF0dXMKCmNvZGVzeXN0ZW0gIkNQVCI6ICdodHRwOi8vd3d3LmFtYS1hc3NuLm9yZy9nby9jcHQnCmNvZGVzeXN0ZW0gIklDRDEwQ00iOiAnaHR0cDovL2hsNy5vcmcvZmhpci9zaWQvaWNkLTEwLWNtJwpjb2Rlc3lzdGVtICJUYXNrQ29kZSI6ICdodHRwOi8vaGw3Lm9yZy9maGlyL0NvZGVTeXN0ZW0vdGFzay1jb2RlJwoKdmFsdWVzZXQgIkFubnVhbCBXZWxsbmVzcyBWaXNpdCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4xMjQwJwp2YWx1ZXNldCAiSG9tZSBIZWFsdGhjYXJlIFNlcnZpY2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDE2Jwp2YWx1ZXNldCAiTnV0cml0aW9uIFNlcnZpY2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMDYnCnZhbHVlc2V0ICJPY2N1cGF0aW9uYWwgVGhlcmFweSBFdmFsdWF0aW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjEwMTEnCnZhbHVlc2V0ICJPZmZpY2UgVmlzaXQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwMDEnCnZhbHVlc2V0ICJPcGh0aGFsbW9sb2dpY2FsIFNlcnZpY2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjEyODUnCnZhbHVlc2V0ICJQaHlzaWNhbCBUaGVyYXB5IEV2YWx1YXRpb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNTI2LjMuMTAyMicKdmFsdWVzZXQgIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcyBFc3RhYmxpc2hlZCBPZmZpY2UgVmlzaXQsIDE4IGFuZCBVcCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAyNScKdmFsdWVzZXQgIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcyBHcm91cCBDb3Vuc2VsaW5nIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDI3Jwp2YWx1ZXNldCAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzIEluZGl2aWR1YWwgQ291bnNlbGluZyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAyNicKdmFsdWVzZXQgIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcyBJbml0aWFsIE9mZmljZSBWaXNpdCwgMTggYW5kIFVwIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDIzJwp2YWx1ZXNldCAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzLCBJbml0aWFsIE9mZmljZSBWaXNpdCwgMCB0byAxNyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDEuMTIuMTAyMicKdmFsdWVzZXQgIlByZXZlbnRpdmUgQ2FyZSwgRXN0YWJsaXNoZWQgT2ZmaWNlIFZpc2l0LCAwIHRvIDE3IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDI0Jwp2YWx1ZXNldCAiUHN5Y2ggVmlzaXQgRGlhZ25vc3RpYyBFdmFsdWF0aW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjE0OTInCnZhbHVlc2V0ICJQc3ljaCBWaXNpdCBQc3ljaG90aGVyYXB5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjE0OTYnCnZhbHVlc2V0ICJQc3ljaG9hbmFseXNpcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4xMTQxJwp2YWx1ZXNldCAiU3BlZWNoIGFuZCBIZWFyaW5nIEV2YWx1YXRpb24iOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNTI2LjMuMTUzMCcKdmFsdWVzZXQgIlRlbGVwaG9uZSBWaXNpdHMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwODAnCnZhbHVlc2V0ICJUb2JhY2NvIE5vbiBVc2VyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjExODknCnZhbHVlc2V0ICJUb2JhY2NvIFVzZSBDZXNzYXRpb24gQ291bnNlbGluZyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy41MDknCnZhbHVlc2V0ICJUb2JhY2NvIFVzZSBDZXNzYXRpb24gUGhhcm1hY290aGVyYXB5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjUyNi4zLjExOTAnCnZhbHVlc2V0ICJUb2JhY2NvIFVzZSBTY3JlZW5pbmciOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNTI2LjMuMTI3OCcKdmFsdWVzZXQgIlRvYmFjY28gVXNlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy41MjYuMy4xMTcwJwp2YWx1ZXNldCAiVmlydHVhbCBFbmNvdW50ZXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNDY0LjEwMDMuMTAxLjEyLjEwODknCgpjb2RlICJIZWFsdGggYmVoYXZpb3IgYXNzZXNzbWVudCwgb3IgcmUtYXNzZXNzbWVudCAoaWUsIGhlYWx0aC1mb2N1c2VkIGNsaW5pY2FsIGludGVydmlldywgYmVoYXZpb3JhbCBvYnNlcnZhdGlvbnMsIGNsaW5pY2FsIGRlY2lzaW9uIG1ha2luZykiOiAnOTYxNTYnIGZyb20gIkNQVCIgZGlzcGxheSAnSGVhbHRoIGJlaGF2aW9yIGFzc2Vzc21lbnQsIG9yIHJlLWFzc2Vzc21lbnQgKGllLCBoZWFsdGgtZm9jdXNlZCBjbGluaWNhbCBpbnRlcnZpZXcsIGJlaGF2aW9yYWwgb2JzZXJ2YXRpb25zLCBjbGluaWNhbCBkZWNpc2lvbiBtYWtpbmcpJwpjb2RlICJIZWFsdGggYmVoYXZpb3IgaW50ZXJ2ZW50aW9uLCBpbmRpdmlkdWFsLCBmYWNlLXRvLWZhY2U7IGluaXRpYWwgMzAgbWludXRlcyI6ICc5NjE1OCcgZnJvbSAiQ1BUIiBkaXNwbGF5ICdIZWFsdGggYmVoYXZpb3IgaW50ZXJ2ZW50aW9uLCBpbmRpdmlkdWFsLCBmYWNlLXRvLWZhY2U7IGluaXRpYWwgMzAgbWludXRlcycKY29kZSAiUG9zdG9wZXJhdGl2ZSBmb2xsb3ctdXAgdmlzaXQsIG5vcm1hbGx5IGluY2x1ZGVkIGluIHRoZSBzdXJnaWNhbCBwYWNrYWdlLCB0byBpbmRpY2F0ZSB0aGF0IGFuIGV2YWx1YXRpb24gYW5kIG1hbmFnZW1lbnQgc2VydmljZSB3YXMgcGVyZm9ybWVkIGR1cmluZyBhIHBvc3RvcGVyYXRpdmUgcGVyaW9kIGZvciBhIHJlYXNvbihzKSByZWxhdGVkIHRvIHRoZSBvcmlnaW5hbCBwcm9jZWR1cmUiOiAnOTkwMjQnIGZyb20gIkNQVCIgZGlzcGxheSAnUG9zdG9wZXJhdGl2ZSBmb2xsb3ctdXAgdmlzaXQsIG5vcm1hbGx5IGluY2x1ZGVkIGluIHRoZSBzdXJnaWNhbCBwYWNrYWdlLCB0byBpbmRpY2F0ZSB0aGF0IGFuIGV2YWx1YXRpb24gYW5kIG1hbmFnZW1lbnQgc2VydmljZSB3YXMgcGVyZm9ybWVkIGR1cmluZyBhIHBvc3RvcGVyYXRpdmUgcGVyaW9kIGZvciBhIHJlYXNvbihzKSByZWxhdGVkIHRvIHRoZSBvcmlnaW5hbCBwcm9jZWR1cmUnCmNvZGUgIlRvYmFjY28gYWJ1c2UgY291bnNlbGluZyI6ICdaNzEuNicgZnJvbSAiSUNEMTBDTSIgZGlzcGxheSAnVG9iYWNjbyBhYnVzZSBjb3Vuc2VsaW5nJwpjb2RlICJVbmxpc3RlZCBwcmV2ZW50aXZlIG1lZGljaW5lIHNlcnZpY2UiOiAnOTk0MjknIGZyb20gIkNQVCIgZGlzcGxheSAnVW5saXN0ZWQgcHJldmVudGl2ZSBtZWRpY2luZSBzZXJ2aWNlJwpjb2RlICJmdWxmaWxsIjogJ2Z1bGZpbGwnIGZyb20gIlRhc2tDb2RlIiBkaXNwbGF5ICdGdWxmaWxsIHRoZSBmb2NhbCByZXF1ZXN0JwoKcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGVUaW1lPgogIGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjYtMDEtMDFUMDA6MDA6MDAuMDAwWiwgQDIwMjctMDEtMDFUMDA6MDA6MDAuMDAwWikKCmNvbnRleHQgUGF0aWVudAoKZGVmaW5lICJEZW5vbWluYXRvciAxIjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIgoKZGVmaW5lICJEZW5vbWluYXRvciAyIjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIgogICAgYW5kICJNb3N0IFJlY2VudCBUb2JhY2NvIFVzZSBTY3JlZW5pbmcgSW5kaWNhdGVzIFRvYmFjY28gVXNlciIgaXMgbm90IG51bGwKCmRlZmluZSAiRGVub21pbmF0b3IgMyI6CiAgIkluaXRpYWwgUG9wdWxhdGlvbiIKCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIjoKICBBZ2VJblllYXJzQXQoZGF0ZSBmcm9tIHN0YXJ0IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiKSA+PSAxMgogICAgYW5kICggQ291bnQoIlF1YWxpZnlpbmcgVmlzaXQgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCIpID49IDIKICAgICAgICBvciBleGlzdHMgIlByZXZlbnRpdmUgVmlzaXQgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCIKICAgICkKCmRlZmluZSAiTnVtZXJhdG9yIDEiOgogICJNb3N0IFJlY2VudCBUb2JhY2NvIFVzZSBTY3JlZW5pbmcgSW5kaWNhdGVzIFRvYmFjY28gTm9uIFVzZXIiIGlzIG5vdCBudWxsCiAgICBvciAiTW9zdCBSZWNlbnQgVG9iYWNjbyBVc2UgU2NyZWVuaW5nIEluZGljYXRlcyBUb2JhY2NvIFVzZXIiIGlzIG5vdCBudWxsCgpkZWZpbmUgIk51bWVyYXRvciAyIjoKICBleGlzdHMgIlRvYmFjY28gQ2Vzc2F0aW9uIENvdW5zZWxpbmcgR2l2ZW4iCiAgICBvciBleGlzdHMgIlRvYmFjY28gQ2Vzc2F0aW9uIFBoYXJtYWNvdGhlcmFweSBPcmRlcmVkIgogICAgb3IgZXhpc3RzICJBY3RpdmUgUGhhcm1hY290aGVyYXB5IGZvciBUb2JhY2NvIENlc3NhdGlvbiIKCmRlZmluZSAiTnVtZXJhdG9yIDMiOgogICJNb3N0IFJlY2VudCBUb2JhY2NvIFVzZSBTY3JlZW5pbmcgSW5kaWNhdGVzIFRvYmFjY28gTm9uIFVzZXIiIGlzIG5vdCBudWxsCiAgICBvciAoICJNb3N0IFJlY2VudCBUb2JhY2NvIFVzZSBTY3JlZW5pbmcgSW5kaWNhdGVzIFRvYmFjY28gVXNlciIgaXMgbm90IG51bGwKICAgICAgICBhbmQgKCBleGlzdHMgIlRvYmFjY28gQ2Vzc2F0aW9uIENvdW5zZWxpbmcgR2l2ZW4iCiAgICAgICAgICAgIG9yIGV4aXN0cyAiVG9iYWNjbyBDZXNzYXRpb24gUGhhcm1hY290aGVyYXB5IE9yZGVyZWQiCiAgICAgICAgICAgIG9yIGV4aXN0cyAiQWN0aXZlIFBoYXJtYWNvdGhlcmFweSBmb3IgVG9iYWNjbyBDZXNzYXRpb24iCiAgICAgICAgKQogICAgKQoKZGVmaW5lICJNb3N0IFJlY2VudCBUb2JhY2NvIFVzZSBTY3JlZW5pbmcgSW5kaWNhdGVzIFRvYmFjY28gTm9uIFVzZXIiOgogICggTGFzdCgoKFtVU0NvcmUuU21va2luZ1N0YXR1c1Byb2ZpbGVdKS5pc09ic2VydmF0aW9uU21va2luZ1N0YXR1cygpKSBUb2JhY2NvVXNlU2NyZWVuaW5nCiAgICAgIHdoZXJlIFRvYmFjY29Vc2VTY3JlZW5pbmcuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSBkdXJpbmcgZGF5IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgICAgIHNvcnQgYnkgc3RhcnQgb2YgZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKQogICkgKSBNb3N0UmVjZW50VG9iYWNjb1VzZVNjcmVlbmluZwogICAgd2hlcmUgTW9zdFJlY2VudFRvYmFjY29Vc2VTY3JlZW5pbmcudmFsdWUgYXMgQ29kZWFibGVDb25jZXB0IGluICJUb2JhY2NvIE5vbiBVc2VyIgoKZGVmaW5lICJBY3RpdmUgUGhhcm1hY290aGVyYXB5IGZvciBUb2JhY2NvIENlc3NhdGlvbiI6CiAgKCAoIFtNZWRpY2F0aW9uUmVxdWVzdDogIlRvYmFjY28gVXNlIENlc3NhdGlvbiBQaGFybWFjb3RoZXJhcHkiXSApLmlzTWVkaWNhdGlvbkFjdGl2ZSAoICkgKSBUYWtpbmdDZXNzYXRpb25QaGFybWFjb3RoZXJhcHkKICAgIHdoZXJlIFRha2luZ0Nlc3NhdGlvblBoYXJtYWNvdGhlcmFweS5tZWRpY2F0aW9uUmVxdWVzdFBlcmlvZCAoICkgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFtzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIiAtIDYgbW9udGhzLCBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCJdCgpkZWZpbmUgIk1vc3QgUmVjZW50IFRvYmFjY28gVXNlIFNjcmVlbmluZyBJbmRpY2F0ZXMgVG9iYWNjbyBVc2VyIjoKICAoIExhc3QoKChbVVNDb3JlLlNtb2tpbmdTdGF0dXNQcm9maWxlXSkuaXNPYnNlcnZhdGlvblNtb2tpbmdTdGF0dXMoKSkgVG9iYWNjb1VzZVNjcmVlbmluZwogICAgICB3aGVyZSBUb2JhY2NvVXNlU2NyZWVuaW5nLmVmZmVjdGl2ZS50b0ludGVydmFsKCkgZHVyaW5nIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICAgICBzb3J0IGJ5IHN0YXJ0IG9mIGVmZmVjdGl2ZS50b0ludGVydmFsKCkKICApICkgTW9zdFJlY2VudFRvYmFjY29Vc2VTY3JlZW5pbmcKICAgIHdoZXJlIE1vc3RSZWNlbnRUb2JhY2NvVXNlU2NyZWVuaW5nLnZhbHVlIGFzIENvZGVhYmxlQ29uY2VwdCBpbiAiVG9iYWNjbyBVc2VyIgoKZGVmaW5lICJUb2JhY2NvIENlc3NhdGlvbiBQaGFybWFjb3RoZXJhcHkgT3JkZXJlZCI6CiAgKCAoIFtNZWRpY2F0aW9uUmVxdWVzdDogIlRvYmFjY28gVXNlIENlc3NhdGlvbiBQaGFybWFjb3RoZXJhcHkiXSApLmlzTWVkaWNhdGlvbk9yZGVyICggKSApIENlc3NhdGlvblBoYXJtYWNvdGhlcmFweU9yZGVyZWQKICAgIHdoZXJlIENlc3NhdGlvblBoYXJtYWNvdGhlcmFweU9yZGVyZWQuYXV0aG9yZWRPbiBkdXJpbmcgZGF5IG9mIEludGVydmFsW3N0YXJ0IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiIC0gNiBtb250aHMsIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIl0KICAgICAgYW5kIG5vdCBleGlzdHMgKCBbVGFza1JlamVjdGVkXSBUYXNrUmVqZWN0CiAgICAgICAgICB3aGVyZSBUYXNrUmVqZWN0LmZvY3VzLnJlZmVyZW5jZXMgKCBDZXNzYXRpb25QaGFybWFjb3RoZXJhcHlPcmRlcmVkICkKICAgICAgICAgICAgYW5kIFRhc2tSZWplY3QuY29kZSB+ICJmdWxmaWxsIgogICAgICApCgpkZWZpbmUgIlRvYmFjY28gQ2Vzc2F0aW9uIENvdW5zZWxpbmcgR2l2ZW4iOgogICggKCAoIFtQcm9jZWR1cmU6ICJUb2JhY2NvIFVzZSBDZXNzYXRpb24gQ291bnNlbGluZyJdICkuaXNJbnRlcnZlbnRpb25QZXJmb3JtZWQgKCApICkgVG9iYWNjb0Nlc3NhdGlvbkNvdW5zZWxpbmcKICAgICAgd2hlcmUgVG9iYWNjb0Nlc3NhdGlvbkNvdW5zZWxpbmcucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIGR1cmluZyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIgLSA2IG1vbnRocywgZW5kIG9mICJNZWFzdXJlbWVudCBQZXJpb2QiXQogICkKICAgIHVuaW9uICggLy8gW0UtMTNdIGJhc2UgRkhJUi5Db25kaXRpb24gcmV0cmlldmUgKGRlZmVjdC10cmFja2luZy9lbmdpbmUtaXNzdWVzLm1kIEUtMTMpCiAgICAgICAgLy8gT3JpZ2luYWw6CiAgICAgICAgLy8gICBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIlRvYmFjY28gYWJ1c2UgY291bnNlbGluZyJdCiAgICAgICAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJUb2JhY2NvIGFidXNlIGNvdW5zZWxpbmciXQogICAgICAgICggKCBbRkhJUi5Db25kaXRpb246ICJUb2JhY2NvIGFidXNlIGNvdW5zZWxpbmciXSApLnZlcmlmaWVkICggKSApIFRvYmFjY29Db3Vuc2VsaW5nCiAgICAgICAgd2hlcmUgVG9iYWNjb0NvdW5zZWxpbmcucHJldmFsZW5jZUludGVydmFsICggKSBzdGFydHMgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFtzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIiAtIDYgbW9udGhzLCBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCJdCiAgICApCgpkZWZpbmUgIlByZXZlbnRpdmUgVmlzaXQgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCI6CiAgKCAoIFtFbmNvdW50ZXI6ICJBbm51YWwgV2VsbG5lc3MgVmlzaXQiXQogICAgICB1bmlvbiBbRW5jb3VudGVyOiAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzIEVzdGFibGlzaGVkIE9mZmljZSBWaXNpdCwgMTggYW5kIFVwIl0KICAgICAgdW5pb24gW0VuY291bnRlcjogIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcyBJbml0aWFsIE9mZmljZSBWaXNpdCwgMTggYW5kIFVwIl0KICAgICAgdW5pb24gW0VuY291bnRlcjogIlByZXZlbnRpdmUgQ2FyZSwgRXN0YWJsaXNoZWQgT2ZmaWNlIFZpc2l0LCAwIHRvIDE3Il0KICAgICAgdW5pb24gW0VuY291bnRlcjogIlByZXZlbnRpdmUgQ2FyZSBTZXJ2aWNlcywgSW5pdGlhbCBPZmZpY2UgVmlzaXQsIDAgdG8gMTciXQogICAgICB1bmlvbiBbRW5jb3VudGVyOiAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzIEdyb3VwIENvdW5zZWxpbmciXQogICAgICB1bmlvbiBbRW5jb3VudGVyOiAiUHJldmVudGl2ZSBDYXJlIFNlcnZpY2VzIEluZGl2aWR1YWwgQ291bnNlbGluZyJdCiAgICAgIHVuaW9uICggW0VuY291bnRlcl0gRQogICAgICAgICAgd2hlcmUgZXhpc3RzICggKCBFLnR5cGUgKSBUCiAgICAgICAgICAgICAgd2hlcmUgVCB+ICJVbmxpc3RlZCBwcmV2ZW50aXZlIG1lZGljaW5lIHNlcnZpY2UiCiAgICAgICAgICApCiAgICAgICkKICAgICAgdW5pb24gKCBbRW5jb3VudGVyXSBFCiAgICAgICAgICB3aGVyZSBleGlzdHMgKCAoIEUudHlwZSApIFQKICAgICAgICAgICAgICB3aGVyZSBUIH4gIlBvc3RvcGVyYXRpdmUgZm9sbG93LXVwIHZpc2l0LCBub3JtYWxseSBpbmNsdWRlZCBpbiB0aGUgc3VyZ2ljYWwgcGFja2FnZSwgdG8gaW5kaWNhdGUgdGhhdCBhbiBldmFsdWF0aW9uIGFuZCBtYW5hZ2VtZW50IHNlcnZpY2Ugd2FzIHBlcmZvcm1lZCBkdXJpbmcgYSBwb3N0b3BlcmF0aXZlIHBlcmlvZCBmb3IgYSByZWFzb24ocykgcmVsYXRlZCB0byB0aGUgb3JpZ2luYWwgcHJvY2VkdXJlIgogICAgICAgICAgKQogICAgICApCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJOdXRyaXRpb24gU2VydmljZXMiXQogICkuaXNFbmNvdW50ZXJQZXJmb3JtZWQgKCApICkgUHJldmVudGl2ZUVuY291bnRlcgogICAgd2hlcmUgUHJldmVudGl2ZUVuY291bnRlci5wZXJpb2QgZHVyaW5nIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJRdWFsaWZ5aW5nIFZpc2l0IER1cmluZyBNZWFzdXJlbWVudCBQZXJpb2QiOgogICggKCAoIFtFbmNvdW50ZXJdIEUKICAgICAgICB3aGVyZSBleGlzdHMgKCAoIEUudHlwZSApIFQKICAgICAgICAgICAgd2hlcmUgVCB+ICJIZWFsdGggYmVoYXZpb3IgaW50ZXJ2ZW50aW9uLCBpbmRpdmlkdWFsLCBmYWNlLXRvLWZhY2U7IGluaXRpYWwgMzAgbWludXRlcyIKICAgICAgICApCiAgICApCiAgICAgIHVuaW9uICggW0VuY291bnRlcl0gRQogICAgICAgICAgd2hlcmUgZXhpc3RzICggKCBFLnR5cGUgKSBUCiAgICAgICAgICAgICAgd2hlcmUgVCB+ICJIZWFsdGggYmVoYXZpb3IgYXNzZXNzbWVudCwgb3IgcmUtYXNzZXNzbWVudCAoaWUsIGhlYWx0aC1mb2N1c2VkIGNsaW5pY2FsIGludGVydmlldywgYmVoYXZpb3JhbCBvYnNlcnZhdGlvbnMsIGNsaW5pY2FsIGRlY2lzaW9uIG1ha2luZykiCiAgICAgICAgICApCiAgICAgICkKICAgICAgdW5pb24gW0VuY291bnRlcjogIkhvbWUgSGVhbHRoY2FyZSBTZXJ2aWNlcyJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJPY2N1cGF0aW9uYWwgVGhlcmFweSBFdmFsdWF0aW9uIl0KICAgICAgdW5pb24gW0VuY291bnRlcjogIk9mZmljZSBWaXNpdCJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJPcGh0aGFsbW9sb2dpY2FsIFNlcnZpY2VzIl0KICAgICAgdW5pb24gW0VuY291bnRlcjogIlBoeXNpY2FsIFRoZXJhcHkgRXZhbHVhdGlvbiJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQc3ljaCBWaXNpdCBEaWFnbm9zdGljIEV2YWx1YXRpb24iXQogICAgICB1bmlvbiBbRW5jb3VudGVyOiAiUHN5Y2ggVmlzaXQgUHN5Y2hvdGhlcmFweSJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJQc3ljaG9hbmFseXNpcyJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJTcGVlY2ggYW5kIEhlYXJpbmcgRXZhbHVhdGlvbiJdCiAgICAgIHVuaW9uIFtFbmNvdW50ZXI6ICJUZWxlcGhvbmUgVmlzaXRzIl0KICAgICAgdW5pb24gW0VuY291bnRlcjogIlZpcnR1YWwgRW5jb3VudGVyIl0KICApLmlzRW5jb3VudGVyUGVyZm9ybWVkICggKSApIE9mZmljZUJhc2VkRW5jb3VudGVyCiAgICB3aGVyZSBPZmZpY2VCYXNlZEVuY291bnRlci5wZXJpb2QgZHVyaW5nIGRheSBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJEZW5vbWluYXRvciBFeGNsdXNpb25zIjoKICBIb3NwaWNlLiJIYXMgSG9zcGljZSBTZXJ2aWNlcyIKCmRlZmluZSAiU0RFIEV0aG5pY2l0eSI6CiAgU0RFLiJTREUgRXRobmljaXR5IgoKZGVmaW5lICJTREUgUGF5ZXIiOgogIFNERS4iU0RFIFBheWVyIgoKZGVmaW5lICJTREUgUmFjZSI6CiAgU0RFLiJTREUgUmFjZSIKCmRlZmluZSAiU0RFIFNleCI6CiAgU0RFLiJTREUgU2V4Ig=="/>
    <url
         value="https://madie.cms.gov/Library-CMS138FHIRTobaccoScrnCessation.cql"/>
  </content>
</Library>