• <samp id="ossg8"></samp>
    <tbody id="ossg8"><nobr id="ossg8"></nobr></tbody>
    <menuitem id="ossg8"><strong id="ossg8"></strong></menuitem>
  • <samp id="ossg8"></samp>
    <menuitem id="ossg8"><strong id="ossg8"></strong></menuitem>
  • <menuitem id="ossg8"><ins id="ossg8"></ins></menuitem>

  • <tbody id="ossg8"><nobr id="ossg8"></nobr></tbody>
    <menuitem id="ossg8"></menuitem>

        CDC National Healthcare Safety Network (NHSN) Digital Quality Measures (dQM) Content Package IG
        2.0.0 - Release 2 US

        This page is part of the NHSN Digital Quality Measures (dQM) Content Package Implementation Guide (v2.0.0: Release) based on FHIR (HL7? FHIR? Standard) R4. This is the current published version. For a full list of available versions, see the Directory of published versions

        : NHSN Acute Care Hospital Monthly Initial Population Library - XML Representation

        Page standards status: Trial-use Maturity Level: 2

        Raw xml | Download

        
        <Library xmlns="http://hl7.org/fhir">
          <id value="NHSNAcuteCareHospitalMonthlyInitialPopulation"/>
          <text>
            <status value="extensions"/>
            <div xmlns="http://www.w3.org/1999/xhtml">
        <div>
            <table class="grid dict">
                
                
        
                
                
                <tr>
                    <th scope="row"><b>Id: </b></th>
                    <td style="padding-left: 4px;">NHSNAcuteCareHospitalMonthlyInitialPopulation</td>
                </tr>
                
        
                
                
                <tr>
                    <th scope="row"><b>Version: </b></th>
                    <td style="padding-left: 4px;">2.0.0</td>
                </tr>
                
        
                
                <tr>
                    <th scope="row"><b>Url: </b></th>
                    <td style="padding-left: 4px;"><a href="Library-NHSNAcuteCareHospitalMonthlyInitialPopulation.html">NHSNAcuteCareHospitalMonthlyInitialPopulation</a></td>
                </tr>
                
        
                
        
                
        
                
                <tr>
                    <th scope="row"><b>Status: </b></th>
                    <td style="padding-left: 4px;">draft</td>
                </tr>
                
        
                
        
                
                <tr>
                    <th scope="row"><b>Type: </b></th>
                    <td style="padding-left: 4px;">
                        
                            
                                
                                <p style="margin-bottom: 5px;">
                                    <b>system: </b> <span><a href="http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a></span>
                                </p>
                                
                                
                                <p style="margin-bottom: 5px;">
                                    <b>code: </b> <span>logic-library</span>
                                </p>
                                
                                
                            
                        
                        
                    </td>
                </tr>
                
        
                
        
                
                <tr>
                    <th scope="row"><b>Date: </b></th>
                    <td style="padding-left: 4px;">2026-05-15 17:27:39-0400</td>
                </tr>
                
        
                
                <tr>
                    <th scope="row"><b>Publisher: </b></th>
                    <td style="padding-left: 4px;">CDC National Healthcare Safety Network (NHSN)</td>
                </tr>
                
        
                
        
                
        
                
        
                
        
                
                <tr>
                    <th scope="row"><b>Jurisdiction: </b></th>
                    <td style="padding-left: 4px;">US</td>
                </tr>
                
        
                
        
                
        
                
        
                
        
                
        
                
        
                
                <tr>
                    <th scope="row"><b>Related Artifacts: </b></th>
                    <td style="padding-left: 4px;">
                        
                        
                        
                        <p><b>Dependencies</b></p>
                        <ul>
                          
                            <li><code>http://www.cy118119.com/nhsn/fhirportal/dqm/ig/Library/FHIRHelpers|4.0.2</code></li>
                          
                            <li><code>http://www.cy118119.com/nhsn/fhirportal/dqm/ig/Library/NHSNHelpers|0.0.002</code></li>
                          
                            <li><code>http://www.cy118119.com/nhsn/fhirportal/dqm/ig/Library/SharedResourceCreation|0.1.010</code></li>
                          
                            <li><a href="http://terminology.hl7.org/7.1.0/CodeSystem-v3-ActCode.html">ActCode</a> version: 10.0.0</li>
                          
                            <li><a href="http://terminology.hl7.org/7.1.0/CodeSystem-observation-category.html">Observation Category Codes</a> version: 2.0.0</li>
                          
                            <li><a href="http://terminology.hl7.org/6.5.0/CodeSystem-v3-loinc.html">Logical Observation Identifiers, Names and Codes (LOINC)</a></li>
                          
                            <li><a href="http://terminology.hl7.org/7.1.0/CodeSystem-v2-0074.html">diagnosticServiceSectionId</a> version: 3.0.0</li>
                          
                            <li><a href="http://terminology.hl7.org/7.1.0/CodeSystem-condition-category.html">Condition Category Codes</a> version: 2.0.0</li>
                          
                            <li><a href="http://hl7.org/fhir/us/core/STU6.1/CodeSystem-condition-category.html">US Core Condition Category Extension Codes</a> version: 6.1.0</li>
                          
                            <li><a href="http://terminology.hl7.org/7.1.0/CodeSystem-condition-clinical.html">Condition Clinical Status Codes</a> version: 3.0.0</li>
                          
                            <li><a href="http://hl7.org/fhir/R4/codesystem-snomedct.html">SNOMED CT (all versions)</a></li>
                          
                            <li><a href="http://terminology.hl7.org/7.1.0/CodeSystem-medicationrequest-category.html">MedicationRequest Category Codes</a> version: 2.0.0</li>
                          
                            <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1046.265/expansion">Inpatient, Emergency, and Observation Locations</a></li>
                          
                            <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.117.1.7.1.292/expansion">Emergency Department Visit</a></li>
                          
                            <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113883.3.666.5.307/expansion">Encounter Inpatient</a></li>
                          
                            <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1111.143/expansion">Observation Services</a></li>
                          
                            <li><a href="https://vsac.nlm.nih.gov/valueset/2.16.840.1.113762.1.4.1046.274/expansion">NHSN Inpatient Encounter Class Codes</a></li>
                          
                        </ul>
                        
                        
                        
                        
                        
                    </td>
                </tr>
                
        
                
                <tr>
                  <th scope="row"><b>Parameters: </b></th>
                  <td style="padding-left: 4px;">
                    <table class="grid-dict">
                      <tr><th><b>Name</b></th><th><b>Type</b></th><th><b>Min</b></th><th><b>Max</b></th><th><b>In/Out</b></th></tr>
                      
                        <tr><th>Measurement Period</th><th>Period</th><th>0</th><th>1</th><th>In</th></tr>
                      
                        <tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>
                      
                        <tr><th>Qualifying Encounters During Measurement Period</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>Encounters</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>Encounters with Patient Hospital Locations</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>Initial Population</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>Conditions</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>DiagnosticReports</th><th>DiagnosticReport</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>Observations</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>Get Locations from IP Encounters in Measurement Period</th><th>Location</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE Medication Request</th><th>MedicationRequest</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE Medication Administration</th><th>MedicationAdministration</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>Medication IDs</th><th>string</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE Condition</th><th>Condition</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE Coverage</th><th>Coverage</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE Device</th><th>Device</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE DiagnosticReport Lab</th><th>DiagnosticReport</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE DiagnosticReport Note</th><th>DiagnosticReport</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE Encounter</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE IP Encounters</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE Location</th><th>Location</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE Medication</th><th>Medication</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE Observation Lab Category</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE Observation Vital Signs Category</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE Observation Category</th><th>Observation</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE Procedure</th><th>Procedure</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE Specimen</th><th>Specimen</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE Service Request</th><th>ServiceRequest</th><th>0</th><th>*</th><th>Out</th></tr>
                      
                        <tr><th>SDE Minimal Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>
                      
                    </table>
                  </td>
                </tr>
                
        
                
                <tr>
                  <th scope="row"><b>Data Requirements:</b></th>
                  <td style="padding-left: 4px;">
                    <table class="grid-dict">
                      <tr><th><b>Type</b></th><th><b>Profile</b></th><th><b>MS</b></th><th><b>Code Filter</b></th></tr>
                      
                        <tr>
                          <th>Patient</th>
                          <th>http://hl7.org/fhir/StructureDefinition/Patient</th>
                          <th/>
                          <th>
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>Encounter</th>
                          <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                          <th>;;;;;;;;;;;;;;;</th>
                          <th>
                            
                              <b>code filter: </b>
                              
                              <br/>
                              
                              
                              <span style="padding-left: 4px;">
                                  <b>path: </b><span>type</span>
                              </span>
                              
                              <br/>
                              
                              
                              
                              <span style="padding-left: 4px;">
                                  <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307</span>
                              </span>
                              
                              
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>Encounter</th>
                          <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                          <th>;;;;;;;;;;;;;;;</th>
                          <th>
                            
                              <b>code filter: </b>
                              
                              <br/>
                              
                              
                              <span style="padding-left: 4px;">
                                  <b>path: </b><span>type</span>
                              </span>
                              
                              <br/>
                              
                              
                              
                              <span style="padding-left: 4px;">
                                  <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292</span>
                              </span>
                              
                              
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>Encounter</th>
                          <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                          <th>;;;;;;;;;;;;;;;</th>
                          <th>
                            
                              <b>code filter: </b>
                              
                              <br/>
                              
                              
                              <span style="padding-left: 4px;">
                                  <b>path: </b><span>type</span>
                              </span>
                              
                              <br/>
                              
                              
                              
                              <span style="padding-left: 4px;">
                                  <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143</span>
                              </span>
                              
                              
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>Encounter</th>
                          <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                          <th>;;;;;;;;;;;;;;;</th>
                          <th>
                            
                              <b>code filter: </b>
                              
                              <br/>
                              
                              
                              <span style="padding-left: 4px;">
                                  <b>path: </b><span>class</span>
                              </span>
                              
                              <br/>
                              
                              
                              
                              <span style="padding-left: 4px;">
                                  <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274</span>
                              </span>
                              
                              
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>Encounter</th>
                          <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                          <th>;;;;;;;;;;;;;;;</th>
                          <th>
                            
                              <b>code filter: </b>
                              
                              <br/>
                              
                              
                              <span style="padding-left: 4px;">
                                  <b>path: </b><span>class</span>
                              </span>
                              
                              <br/>
                              
                              
                              
                              
                                  
                                  <p style="margin-bottom: 5px;">
                                      <b>system: </b> <span><a href="http://terminology.hl7.org/7.1.0/CodeSystem-v3-ActCode.html">http://terminology.hl7.org/CodeSystem/v3-ActCode</a></span>
                                  </p>
                                  
                                  
                                  <p style="margin-bottom: 5px;">
                                      <b>code: </b> <span>EMER</span>
                                  </p>
                                  
                                  
                                  <p style="margin-bottom: 5px;">
                                      <b>display: </b> <span>emergency</span>
                                  </p>
                                  
                              
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>Encounter</th>
                          <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                          <th>;;;;;;;;;;;;;;;</th>
                          <th>
                            
                              <b>code filter: </b>
                              
                              <br/>
                              
                              
                              <span style="padding-left: 4px;">
                                  <b>path: </b><span>class</span>
                              </span>
                              
                              <br/>
                              
                              
                              
                              
                                  
                                  <p style="margin-bottom: 5px;">
                                      <b>system: </b> <span><a href="http://terminology.hl7.org/7.1.0/CodeSystem-v3-ActCode.html">http://terminology.hl7.org/CodeSystem/v3-ActCode</a></span>
                                  </p>
                                  
                                  
                                  <p style="margin-bottom: 5px;">
                                      <b>code: </b> <span>OBSENC</span>
                                  </p>
                                  
                                  
                                  <p style="margin-bottom: 5px;">
                                      <b>display: </b> <span>observation encounter</span>
                                  </p>
                                  
                              
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>Encounter</th>
                          <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>
                          <th>;;;;;;;;;;;;;;;</th>
                          <th>
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>Condition</th>
                          <th>http://hl7.org/fhir/StructureDefinition/Condition</th>
                          <th>;;;;;;;;;;;;</th>
                          <th>
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>DiagnosticReport</th>
                          <th>http://hl7.org/fhir/StructureDefinition/DiagnosticReport</th>
                          <th>;;;;;;;;;;;;;;</th>
                          <th>
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>Observation</th>
                          <th>http://hl7.org/fhir/StructureDefinition/Observation</th>
                          <th>;;;;;;;;;;;;;;;;;;;;</th>
                          <th>
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>MedicationRequest</th>
                          <th>http://hl7.org/fhir/StructureDefinition/MedicationRequest</th>
                          <th>;;;;;;;;;;;;;;;;;;;;;</th>
                          <th>
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>MedicationAdministration</th>
                          <th>http://hl7.org/fhir/StructureDefinition/MedicationAdministration</th>
                          <th>;;;;;;;;;;;;;;;;;;;;</th>
                          <th>
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>Coverage</th>
                          <th>http://hl7.org/fhir/StructureDefinition/Coverage</th>
                          <th>;;;;;;;</th>
                          <th>
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>Device</th>
                          <th>http://hl7.org/fhir/StructureDefinition/Device</th>
                          <th>;;;;;;;;;;;</th>
                          <th>
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>Medication</th>
                          <th>http://hl7.org/fhir/StructureDefinition/Medication</th>
                          <th>;</th>
                          <th>
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>Procedure</th>
                          <th>http://hl7.org/fhir/StructureDefinition/Procedure</th>
                          <th>;;;;;;;;;;;;;</th>
                          <th>
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>Specimen</th>
                          <th>http://hl7.org/fhir/StructureDefinition/Specimen</th>
                          <th>;;;;;;;;;;;;</th>
                          <th>
                            
                          </th>
                        </tr>
                      
                        <tr>
                          <th>ServiceRequest</th>
                          <th>http://hl7.org/fhir/StructureDefinition/ServiceRequest</th>
                          <th>;;;;;;;;;;;;;;;;</th>
                          <th>
                            
                          </th>
                        </tr>
                      
                    </table>
                  </td>
                </tr>
                
        
                
                
                <tr>
                  <td colspan="2">
                    <table>
                      <tr><th><a id="cql-content"><b>Content: </b></a> text/cql</th></tr>
                      <tr><td><pre><code class="language-cql">library NHSNAcuteCareHospitalMonthlyInitialPopulation version '2.0.0'
        
        using FHIR version '4.0.1'
        
        include FHIRHelpers version '4.0.2' called FHIRHelpers
        include NHSNHelpers version '0.0.002' called NHSNHelpers
        include SharedResourceCreation version '0.1.010' called SharedResource
        
        codesystem &quot;ActCode&quot;: 'http://terminology.hl7.org/CodeSystem/v3-ActCode'
        codesystem &quot;Observation Category&quot;: 'http://terminology.hl7.org/CodeSystem/observation-category'
        codesystem &quot;LOINC&quot;: 'http://loinc.org' 
        codesystem &quot;V2-0074&quot;: 'http://terminology.hl7.org/CodeSystem/v2-0074'
        codesystem &quot;Condition Category&quot;: 'http://terminology.hl7.org/CodeSystem/condition-category'
        codesystem &quot;US Core Condition Category&quot;: 'http://hl7.org/fhir/us/core/CodeSystem/condition-category'
        codesystem &quot;Condition Clinical Status&quot;: 'http://terminology.hl7.org/CodeSystem/condition-clinical'
        codesystem &quot;SNOMEDCT&quot;: 'http://snomed.info/sct'
        codesystem &quot;MedicationRequest Category&quot;: 'http://terminology.hl7.org/CodeSystem/medicationrequest-category'
        
        valueset &quot;Inpatient, Emergency, and Observation Locations&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.265'
        valueset &quot;Emergency Department Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292'
        valueset &quot;Encounter Inpatient&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'
        valueset &quot;Observation Services&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143'
        valueset &quot;NHSN Inpatient Encounter Class Codes&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274'
        
        //code for Observation Category
        code &quot;laboratory&quot;: 'laboratory' from &quot;Observation Category&quot; display 'Laboratory'
        code &quot;social-history&quot;: 'social-history' from &quot;Observation Category&quot; display 'Social History'
        code &quot;vital-signs&quot;: 'vital-signs' from &quot;Observation Category&quot; display 'Vital Signs'
        code &quot;imaging&quot;: 'imaging' from &quot;Observation Category&quot; display 'Imaging'
        code &quot;procedure&quot;: 'procedure' from &quot;Observation Category&quot; display 'Procedure'
        code &quot;survey&quot;: 'survey' from &quot;Observation Category&quot; display 'Survey'
        
        //code for Condition category
        //code &quot;problem-list-item&quot;: 'problem-list-item' from &quot;Condition Category&quot; display 'Problem List Item'
        code &quot;encounter-diagnosis&quot;: 'encounter-diagnosis' from &quot;Condition Category&quot; display 'Encounter Diagnosis'
        //code &quot;health-concern&quot;: 'health-concern' from &quot;US Core Condition Category&quot; display 'Health Concern'
        
        //code for Diagnostic Report Category
        code &quot;LAB&quot;: 'LAB' from &quot;V2-0074&quot; display 'Laboratory'
        code &quot;Radiology&quot;: 'LP29684-5' from &quot;LOINC&quot; display 'Radiology'
        code &quot;Pathology&quot;: 'LP7839-6' from &quot;LOINC&quot; display 'Pathology'
        code &quot;Cardiology&quot;: 'LP29708-2' from &quot;LOINC&quot; display 'Cardiology'
        
        //code for Emergency Encounter Class
        code &quot;emergency&quot;: 'EMER' from &quot;ActCode&quot; display 'emergency'
        code &quot;observation encounter&quot;: 'OBSENC' from &quot;ActCode&quot; display 'observation encounter'
        
        //code for Condition clinicalStatus
        code &quot;active&quot;: 'active' from &quot;Condition Clinical Status&quot; display 'active'
        
        //code for Procedure category
        code &quot;Surgical procedure&quot;: '387713003' from &quot;SNOMEDCT&quot; display 'Surgical procedure'
        //code &quot;Diagnostic procedure&quot;: '103693007' from &quot;SNOMEDCT&quot; display 'Diagnostic procedure' Code deprecated in SNOMED version 2023-09-01
        code &quot;Diagnostic intent (qualifier value)&quot;: '261004008' from &quot;SNOMEDCT&quot; display 'Diagnostic intent'
        
        //code for MedicationRequest category
        code &quot;inpatient&quot;: 'inpatient' from &quot;MedicationRequest Category&quot; display 'Inpatient'
        code &quot;outpatient&quot;: 'outpatient' from &quot;MedicationRequest Category&quot; display 'Outpatient'
        
        //code for ServiceRequest category (also uses Surgical procedure from Procedure categories)
        code &quot;Laboratory procedure&quot;: '108252007' from &quot;SNOMEDCT&quot; display 'Laboratory procedure'
        code &quot;Imaging&quot;: '363679005' from &quot;SNOMEDCT&quot; display 'Imaging'
        
        parameter &quot;Measurement Period&quot; 
            default Interval[@2022-01-01T00:00:00.0, @2022-01-31T23:59:59.0)
        
        context Patient 
        
        define &quot;Qualifying Encounters During Measurement Period&quot;:
         ( [Encounter: &quot;Encounter Inpatient&quot;]
          union [Encounter: &quot;Emergency Department Visit&quot;]
          union [Encounter: &quot;Observation Services&quot;]
          union [Encounter: class in &quot;NHSN Inpatient Encounter Class Codes&quot;]
          union [Encounter: class ~ &quot;emergency&quot;]
          union [Encounter: class ~ &quot;observation encounter&quot;]) QualifyingEncounters
          where QualifyingEncounters.status in {'in-progress', 'finished', 'triaged', 'onleave', 'entered-in-error'}
            and QualifyingEncounters.period overlaps &quot;Measurement Period&quot; 
        
        define &quot;Encounters with Patient Hospital Locations&quot;:
          &quot;Encounters&quot; Encounters
          where exists(
            Encounters.location EncounterLocation
            where NHSNHelpers.GetLocation(EncounterLocation.location).type in &quot;Inpatient, Emergency, and Observation Locations&quot;
              and EncounterLocation.period overlaps Encounters.period
          )
          and Encounters.status in {'in-progress', 'finished', 'triaged', 'onleave', 'entered-in-error'}
          and Encounters.period overlaps &quot;Measurement Period&quot;
        
        define &quot;Initial Population&quot;:
          &quot;Qualifying Encounters During Measurement Period&quot;
          union &quot;Encounters with Patient Hospital Locations&quot;
        
        define &quot;Encounters&quot;:
          [Encounter]
        
        define &quot;Conditions&quot;:
          [Condition]
        
        define &quot;DiagnosticReports&quot;:
          [DiagnosticReport]
        
        define &quot;Observations&quot;:
          [Observation]
        
        define &quot;Get Locations from IP Encounters in Measurement Period&quot;:
          flatten(&quot;Initial Population&quot; IP
          let locationElements: IP.location
          return
            locationElements LE
            let locationReference: LE.location
            return NHSNHelpers.GetLocation(locationReference))
        
        define &quot;Medication IDs&quot;:
          (&quot;SDE Medication Request&quot;
          union &quot;SDE Medication Administration&quot;) MedReqOrAdmin
          where MedReqOrAdmin.medication is FHIR.Reference
            and exists(&quot;Initial Population&quot;) //No longer need to check for timing here because it's checked in SDE Medication Request/Administriation
          return NHSNHelpers.GetId(MedReqOrAdmin.medication.reference)
        
        //============================================================================
        //Supplemental Data Element
        //When FHIR.canonical value is present, US Core 3.1.1 profiles are used
        //When FHIR.canonical value is not present, FHIR Base profiles are used
        //============================================================================
        define &quot;SDE Condition&quot;:
          &quot;Conditions&quot; Conditions 
            where exists(
            &quot;Initial Population&quot; IP
        //Check for Problem List Conditions that were recorded before or during IP 
             where 
              (exists(IP.diagnosis Diagnoses
                  where NHSNHelpers.GetId(Diagnoses.condition.reference) = Conditions.id
                )
                or NHSNHelpers.GetId(Conditions.encounter.reference) = IP.id
              )
              and exists (Conditions.category categories
                where categories ~ &quot;encounter-diagnosis&quot;
            )
          )
          return ConditionResource(Conditions,
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-condition'}},
           {&quot;encounter-diagnosis&quot;})
        
        define &quot;SDE Coverage&quot;: 
        	[Coverage] Coverages
          where exists(
            &quot;Initial Population&quot; IP
            where Coverages.period overlaps IP.period)
          return CoverageResource(Coverages,
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-coverage'}})
        
        define &quot;SDE Device&quot;:
          [Device] Devices 
          where exists(&quot;Initial Population&quot;)
          return DeviceResource(Devices,
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-device'}})
        
        //This block collects all DiagnosticReport resources while also marking Lab and Note DiagnosticReports with the appropriate profiles
        //#Start DiagnosticReport block
        define &quot;SDE DiagnosticReport Lab&quot;:
          &quot;DiagnosticReports&quot; DiagnosticReports
          where (exists(DiagnosticReports.category Category where Category ~ &quot;LAB&quot;)
            and exists(
              &quot;Initial Population&quot; IP
              where NHSNHelpers.&quot;Normalize Interval&quot;(DiagnosticReports.effective) overlaps IP.period))
          return DiagnosticReportLabResource(DiagnosticReports,
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-diagnosticreport-lab'}},
          {&quot;LAB&quot;, &quot;Radiology&quot;, &quot;Pathology&quot;, &quot;Cardiology&quot;})
         
        define &quot;SDE DiagnosticReport Note&quot;:
          &quot;DiagnosticReports&quot; DiagnosticReports
          where ((exists(DiagnosticReports.category Category where Category ~ &quot;Radiology&quot;))
            or exists((DiagnosticReports.category Category where Category ~ &quot;Pathology&quot;))
            or exists((DiagnosticReports.category Category where Category ~ &quot;Cardiology&quot;)))
            and exists(
              &quot;Initial Population&quot; IP
              where NHSNHelpers.&quot;Normalize Interval&quot;(DiagnosticReports.effective) overlaps IP.period)
          return DiagnosticReportResource(DiagnosticReports,
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-diagnosticreport-note'}},
          {&quot;Radiology&quot;, &quot;Pathology&quot;, &quot;Cardiology&quot;, &quot;LAB&quot;})
        //#End DiagnosticReport block
        
        define &quot;SDE Encounter&quot;: 
          &quot;Encounters&quot; Encounters
          where not CheckIP(Encounters)
          and exists(
            &quot;Initial Population&quot; IP
            where Encounters.period overlaps IP.period)
          return EncounterResource(Encounters,
          {FHIR.canonical{value: 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter'}})
        
        define &quot;SDE IP Encounters&quot;:
          &quot;Initial Population&quot; IP
          return EncounterResource(IP, 
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-encounter'}})
        
        define &quot;SDE Location&quot;:
          &quot;Get Locations from IP Encounters in Measurement Period&quot; Locations
          where exists(&quot;Initial Population&quot;)
          and Locations is not null
          return LocationResource(Locations,
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-location'}})
         
        define &quot;SDE Medication Administration&quot;:
          [MedicationAdministration] MedicationAdministrations 
          where exists(
            &quot;Initial Population&quot; IP
            where NHSNHelpers.&quot;Normalize Interval&quot;(MedicationAdministrations.effective) overlaps IP.period)
          return MedicationAdministrationResource(MedicationAdministrations,
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-medicationadministration'}},
          {&quot;inpatient&quot;, &quot;outpatient&quot;})
         
        define &quot;SDE Medication Request&quot;:
          [MedicationRequest] MedicationRequests 
          where exists(
            &quot;Initial Population&quot; IP
            where MedicationRequests.authoredOn during IP.period)
          return MedicationRequestResource(MedicationRequests,
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-medicationrequest'}},
          {&quot;inpatient&quot;, &quot;outpatient&quot;})
          
        define &quot;SDE Medication&quot;:
          [Medication] Medications
          where Medications.id in &quot;Medication IDs&quot;
          return SharedResource.MedicationResource(Medications,
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-medication'}})
        
        define &quot;SDE Observation Lab Category&quot;:
          &quot;Observations&quot; Observations 
          where (exists(Observations.category Category where Category ~ &quot;laboratory&quot;))
            and exists(
              &quot;Initial Population&quot; IP
              where NHSNHelpers.&quot;Normalize Interval&quot;(Observations.effective) overlaps IP.period)
          return ObservationLabResource(Observations,
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-observation-lab'}},
          {&quot;imaging&quot;, &quot;procedure&quot;, &quot;vital-signs&quot;, &quot;laboratory&quot;})
        
        //Vital Signs Observation has its own profile in FHIR Base
        define &quot;SDE Observation Vital Signs Category&quot;:
          &quot;Observations&quot; Observations 
          where (exists(Observations.category Category where Category ~ &quot;vital-signs&quot;))
            and exists(
              &quot;Initial Population&quot; IP
              where NHSNHelpers.&quot;Normalize Interval&quot;(Observations.effective) overlaps IP.period)
          return ObservationVitalSignsResource(Observations,
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-observation-vitals'}},
          {&quot;imaging&quot;, &quot;procedure&quot;, &quot;vital-signs&quot;, &quot;laboratory&quot;})
        
        //Defaulting to base FHIR profile as there are no individual profiles in US Core 3.1.1 that cover these Observation categories
        define &quot;SDE Observation Category&quot;:
          &quot;Observations&quot; Observations 
          where (/*(exists(Observations.category Category where Category ~ &quot;social-history&quot;))
            or (exists(Observations.category Category where Category ~ &quot;survey&quot;))
            or */(exists(Observations.category Category where Category ~ &quot;imaging&quot;))
            or (exists(Observations.category Category where Category ~ &quot;procedure&quot;)))
            and exists(
              &quot;Initial Population&quot; IP
              where NHSNHelpers.&quot;Normalize Interval&quot;(Observations.effective) overlaps IP.period)
          return ObservationResource(Observations,
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-observation'}},
          {&quot;imaging&quot;, &quot;procedure&quot;, &quot;vital-signs&quot;, &quot;laboratory&quot;})
        
        define &quot;SDE Procedure&quot;:
          [Procedure] Procedures 
          where exists(
            &quot;Initial Population&quot; IP
            where NHSNHelpers.&quot;Normalize Interval&quot;(Procedures.performed) overlaps IP.period)
             return ProcedureResource(Procedures,
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-procedure'}},
          {&quot;Surgical procedure&quot;, &quot;Diagnostic intent (qualifier value)&quot;})
        
        define &quot;SDE Specimen&quot;:
          [Specimen] Specimens
          where exists(
            &quot;Initial Population&quot; IP
            where NHSNHelpers.&quot;Normalize Interval&quot;(Specimens.collection.collected) overlaps IP.period
          )
          return SpecimenResource(Specimens,
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-specimen'}})
        
        define &quot;SDE Service Request&quot;:
          [ServiceRequest] ServiceRequests
          where exists(&quot;Initial Population&quot; IP
            where ServiceRequests.authoredOn during IP.period)
          return ServiceRequestResource(ServiceRequests,
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/ach-monthly-servicerequest'}},
          {&quot;Laboratory procedure&quot;, &quot;Surgical procedure&quot;, &quot;Imaging&quot;})
        
        define &quot;SDE Minimal Patient&quot;:
          Patient p
          return SharedResource.PatientResource(p,
          {FHIR.canonical{value: 'http://www.cy118119.com/nhsn/fhirportal/dqm/ig/StructureDefinition/cross-measure-patient'}})
        
        //
        //Functions
        //
        define function &quot;CheckIP&quot;(encounter Encounter):
          exists(&quot;Initial Population&quot; IP
          where encounter.id = IP.id)
        
        define function &quot;GetMedicationFrom&quot;(choice Choice&lt;FHIR.CodeableConcept, FHIR.Reference&gt;):
          case
            when choice is FHIR.Reference then
              GetMedication(choice as FHIR.Reference)
            else
              null
          end
        
        define function &quot;GetMedication&quot;(reference Reference):
          singleton from (
            [Medication] Medications
            where Medications.id = NHSNHelpers.GetId(reference.reference)
          )
        
        define function &quot;GetCondition&quot;(reference Reference):
          singleton from (
            &quot;Conditions&quot; Conditions
            where Conditions.id = NHSNHelpers.GetId(reference.reference)
          )
        
        define function &quot;GetEncounter&quot;(reference Reference):
          singleton from (
            &quot;Encounters&quot; Encounters
            where Encounters.id = NHSNHelpers.GetId(reference.reference)
          )
        
        define function RemoveUnaccepted(codes List&lt;FHIR.CodeableConcept&gt;, accepted List&lt;System.Code&gt;):
          codes c
          where exists(
            accepted a
            where c ~ a
          )
        
        define function FilterCodeableConcepts(codes List&lt;FHIR.CodeableConcept&gt;, accepted List&lt;System.Code&gt;):
          if Count(accepted) &gt; 0
            then RemoveUnaccepted(codes, accepted)
          else codes    
        
        //
        //Measure Specific Resource Creation Functions
        //
        
        define function ConditionResource(condition Condition, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
          condition c
          return Condition{
            id: FHIR.id {value: 'LCR-' + c.id},
            meta: SharedResource.MetaElement(c, profileURLs),
            extension: c.extension,
            clinicalStatus: c.clinicalStatus,
            verificationStatus: c.verificationStatus,
            category: FilterCodeableConcepts(c.category, acceptedCategories),
            code: c.code,
            subject: c.subject,
            encounter: c.encounter,
            onset: c.onset,
            abatement: c.abatement,
            recordedDate: c.recordedDate
          }
        
        define function CoverageResource(coverage Coverage, profileURLs List&lt;FHIR.canonical&gt;):
          coverage c
          return Coverage{
            id: FHIR.id{value: 'LCR-' + c.id},
            meta: SharedResource.MetaElement(c, profileURLs),
            extension: c.extension,
            status: c.status,
            type: c.type,
            beneficiary: c.beneficiary,
            period: c.period,
            payor: c.payor
          }
        
        define function DeviceResource(device Device, profileURLs List&lt;FHIR.canonical&gt;):
          device d
          return Device{
            id: FHIR.id{value: 'LCR-' + d.id},
            meta: SharedResource.MetaElement(d, profileURLs),
            extension: d.extension,
            status: d.status,
            expirationDate: d.expirationDate,
            lotNumber: d.lotNumber,
            serialNumber: d.serialNumber,
            modelNumber: d.modelNumber,
            partNumber: d.partNumber,
            type: d.type,
            patient: d.patient,
            parent: d.parent
          }
        
        define function DiagnosticReportCoding(coding List&lt;Coding&gt;):
          coding c
          return Coding{
            system: c.system,
            version: c.version,
            code: c.code,
            display: c.display
          }
        
        define function DiagnosticReportCategory(category List&lt;CodeableConcept&gt;):
          category c
          return CodeableConcept{
            coding: DiagnosticReportCoding(c.coding)
          }
        
        define function DiagnosticReportLabResource(diagnosticReport DiagnosticReport, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
          diagnosticReport d
          return DiagnosticReport{
            id: FHIR.id{value: 'LCR-' + d.id},
            meta: SharedResource.MetaElement(d, profileURLs),
            extension: d.extension,
            basedOn: d.basedOn,
            status: d.status,
            category: FilterCodeableConcepts(DiagnosticReportCategory(d.category), acceptedCategories),
            code: d.code,
            subject: d.subject,
            encounter: d.encounter,
            effective: d.effective,
            issued: d.issued,
            specimen: d.specimen,
            result: d.result,
            conclusion: d.conclusion,
            conclusionCode: d.conclusionCode
          }
        
        define function DiagnosticReportResource(diagnosticReport DiagnosticReport, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
          diagnosticReport d
          return DiagnosticReport{
            id: FHIR.id{value: 'LCR-' + d.id},
            meta: SharedResource.MetaElement(d, profileURLs),
            extension: d.extension,
            basedOn: d.basedOn,
            status: d.status,
            category: FilterCodeableConcepts(d.category, acceptedCategories),
            code: d.code,
            subject: d.subject,
            encounter: d.encounter,
            effective: d.effective,
            issued: d.issued,
            specimen: d.specimen,
            result: d.result,
            conclusion: d.conclusion,
            conclusionCode: d.conclusionCode
          }
        
        define function EncounterHospitalization(hospitalization FHIR.Encounter.Hospitalization):
          hospitalization h
          return FHIR.Encounter.Hospitalization{
            extension: h.extension,
            origin: h.origin,
            admitSource: h.admitSource,
            reAdmission: h.reAdmission,
            dietPreference: h.dietPreference,
            dischargeDisposition: h.dischargeDisposition
          }
        
        define function EncounterResource(encounter Encounter, profileURLs List&lt;FHIR.canonical&gt;):
          encounter e
          return Encounter{
            id: FHIR.id{value: 'LCR-' + e.id},
            meta: SharedResource.MetaElement(e, profileURLs),
            extension: e.extension,
            identifier: SharedResource.EncounterIdentifier(e.identifier),
            status: e.status,
            statusHistory: SharedResource.EncounterStatusHistory(e.statusHistory),
            class: e.class,
            classHistory: SharedResource.EncounterClassHistory(e.classHistory),
            type: e.type,
            subject: e.subject,
            period: e.period,
            reasonCode: e.reasonCode,
            diagnosis: SharedResource.EncounterDiagnosis(e.diagnosis),
            hospitalization: EncounterHospitalization(e.hospitalization),
            location: SharedResource.EncounterLocation(e.location),
            partOf: e.partOf
          }
        
        define function LocationResource(location Location, profileURLs List&lt;FHIR.canonical&gt;):
          location l
          return Location{
            id: FHIR.id {value: 'LCR-' + l.id},
            meta: SharedResource.MetaElement(l, profileURLs),
            extension: l.extension,
            status: l.status,
            name: l.name,
            alias: l.alias,
            type: l.type,
            physicalType: l.physicalType,
            managingOrganization: l.managingOrganization,
            partOf: l.partOf
          }
        
        define function MedicationRequestRepeat(repeat FHIR.Timing.Repeat):
          repeat r
          return FHIR.Timing.Repeat{
            bounds: r.bounds,
            count: r.count,
            countMax: r.countMax,
            &quot;duration&quot;: r.&quot;duration&quot;,
            durationMax: r.durationMax,
            durationUnit: r.durationUnit,
            frequency: r.frequency,
            frequencyMax: r.frequencyMax,
            period: r.period,
            periodMax: r.periodMax,
            periodUnit: r.periodUnit,
            dayOfWeek: r.dayOfWeek,
            timeOfDay: r.timeOfDay,
            &quot;when&quot;: r.&quot;when&quot;,
            offset: r.offset
          }
        
        define function MedicationRequestTiming(timing FHIR.Timing):
          timing t
          return FHIR.Timing{
            event: t.event,
            repeat: MedicationRequestRepeat(t.repeat),
            code: t.code
          }
        
        define function MedicationRequestDosageInstruction(dosageInstruction List&lt;FHIR.Dosage&gt;):
          dosageInstruction dI
          return FHIR.Dosage{
            text: dI.text,
            patientInstruction: dI.patientInstruction,
            timing: MedicationRequestTiming(dI.timing),
            asNeeded: dI.asNeeded,
            site: dI.site,
            route: dI.route,
            method: dI.method,
            doseAndRate: SharedResource.MedicationRequestDoseAndRate(dI.doseAndRate)
          }
        
        define function MedicationRequestResource(medicationRequest MedicationRequest, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
          medicationRequest m
          return MedicationRequest{
            id: FHIR.id {value: 'LCR-' + m.id},
            meta: SharedResource.MetaElement(medicationRequest, profileURLs),
            extension: m.extension,
            status: m.status,
            statusReason: m.statusReason,
            intent: m.intent,
            category: FilterCodeableConcepts(m.category, acceptedCategories),
            priority: m.priority,
            doNotPerform: m.doNotPerform,
            reported: m.reported,
            medication: m.medication,
            subject: m.subject,
            encounter: m.encounter,
            authoredOn: m.authoredOn,
            requester: m.requester,
            recorder: m.recorder,
            reasonCode: m.reasonCode,
            reasonReference: m.reasonReference,
            instantiatesCanonical: m.instantiatesCanonical,
            instantiatesUri: m.instantiatesUri,
            courseOfTherapyType: m.courseOfTherapyType,
            dosageInstruction: SharedResource.MedicationRequestDosageInstruction(m.dosageInstruction)
          }
        
          define function MedicationAdministrationResource(medicationAdministration MedicationAdministration, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
          medicationAdministration m
          return MedicationAdministration{
            id: FHIR.id {value: 'LCR-' + m.id},
            meta: SharedResource.MetaElement(m, profileURLs),
            extension: m.extension,
            instantiates: m.instantiates,
            partOf: m.partOf,
            status: m.status,
            statusReason: m.statusReason,
            category: FilterCodeableConcepts({m.category}, acceptedCategories)[0],
            medication: m.medication,
            subject: m.subject,
            context: m.context,
            supportingInformation: m.supportingInformation,
            effective: m.effective,
            performer: SharedResource.MedicationAdministrationPerformer(m.performer),
            reasonCode: m.reasonCode,
            reasonReference: m.reasonReference,
            request: m.request,
            device: m.device,
            note: m.note,
            dosage: SharedResource.MedicationAdministrationDosage(m.dosage),
            eventHistory: m.eventHistory
          }
        
        define function ObservationLabReferenceRange(referenceRange List&lt;FHIR.Observation.ReferenceRange&gt;):
          referenceRange rR
          return FHIR.Observation.ReferenceRange{
            low: rR.low,
            high: rR.high,
            type: rR.type,
            appliesTo: rR.appliesTo,
            age: rR.age
          }
        
        define function ObservationLabCoding(coding List&lt;Coding&gt;):
          coding c
          return Coding{
            system: c.system,
            version: c.version,
            code: c.code,
            display: c.display,
            userSelected: c.userSelected
          }
        
        define function ObservationLabCategory(category List&lt;CodeableConcept&gt;):
          category c
          return CodeableConcept{
            coding: ObservationLabCoding(c.coding),
            text: c.text
          }
        
        define function ObservationLabResource(observation Observation, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
          observation o
          return Observation{
            id: FHIR.id {value: 'LCR-' + o.id},
            meta: SharedResource.MetaElement(o, profileURLs),
            extension: o.extension,
            partOf: o.partOf,
            status: o.status,
            category: FilterCodeableConcepts(ObservationLabCategory(o.category), acceptedCategories),
            code: o.code,
            subject: o.subject,
            encounter: o.encounter,
            effective: o.effective,
            issued: o.issued,
            value: o.value,
            dataAbsentReason: o.dataAbsentReason,
            interpretation: o.interpretation,
            bodySite: o.bodySite,
            method: o.method,
            specimen: o.specimen,
            referenceRange: ObservationLabReferenceRange(o.referenceRange),
            hasMember: o.hasMember,
            derivedFrom: o.derivedFrom,
            component: SharedResource.ObservationComponent(o.component)
          }
        
        define function ObservationReferenceRange(referenceRange List&lt;FHIR.Observation.ReferenceRange&gt;):
          referenceRange rR
          return FHIR.Observation.ReferenceRange{
            low: rR.low,
            high: rR.high,
            type: rR.type,
            appliesTo: rR.appliesTo,
            age: rR.age
          }
        
        define function ObservationResource(observation Observation, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
          observation o
          return Observation{
            id: FHIR.id {value: 'LCR-' + o.id},
            meta: SharedResource.MetaElement(o, profileURLs),
            extension: o.extension,
            partOf: o.partOf,
            status: o.status,
            category: FilterCodeableConcepts(o.category, acceptedCategories),
            code: o.code,
            subject: o.subject,
            encounter: o.encounter,
            effective: o.effective,
            issued: o.issued,
            value: o.value,
            dataAbsentReason: o.dataAbsentReason,
            interpretation: o.interpretation,
            bodySite: o.bodySite,
            method: o.method,
            specimen: o.specimen,
            referenceRange: ObservationReferenceRange(o.referenceRange),
            hasMember: o.hasMember,
            derivedFrom: o.derivedFrom,
            component: SharedResource.ObservationComponent(o.component)
          }
        
        define function ObservationVitalSignsCoding(coding List&lt;Coding&gt;):
          coding c
          return Coding{
            system: c.system,
            version: c.version,
            code: c.code,
            display: c.display,
            userSelected: c.userSelected
          }
        
        define function ObservationVitalSignsCategory(category List&lt;CodeableConcept&gt;):
          category c
          return CodeableConcept{
            coding: ObservationVitalSignsCoding(c.coding),
            text: c.text
          }
        
        define function ObservationVitalSignsComponent(component List&lt;FHIR.Observation.Component&gt;):
          component c
          return FHIR.Observation.Component{
            code: c.code,
            value: c.value,
            dataAbsentReason: c.dataAbsentReason,
            interpretation: c.interpretation,
            referenceRange: SharedResource.ObservationReferenceRange(c.referenceRange)
          }
        
        define function ObservationVitalSignsReferenceRange(referenceRange List&lt;FHIR.Observation.ReferenceRange&gt;):
          referenceRange rR
          return FHIR.Observation.ReferenceRange{
            low: rR.low,
            high: rR.high,
            type: rR.type,
            appliesTo: rR.appliesTo,
            age: rR.age
          }
        
        define function ObservationVitalSignsResource(observation Observation, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
          observation o
          return Observation{
            id: FHIR.id {value: 'LCR-' + o.id},
            meta: SharedResource.MetaElement(o, profileURLs),
            extension: o.extension,
            partOf: o.partOf,
            status: o.status,
            category: FilterCodeableConcepts(ObservationVitalSignsCategory(o.category), acceptedCategories),
            code: o.code,
            subject: o.subject,
            encounter: o.encounter,
            effective: o.effective,
            issued: o.issued,
            value: o.value,
            dataAbsentReason: o.dataAbsentReason,
            interpretation: o.interpretation,
            bodySite: o.bodySite,
            method: o.method,
            specimen: o.specimen,
            referenceRange: ObservationVitalSignsReferenceRange(o.referenceRange),
            hasMember: o.hasMember,
            derivedFrom: o.derivedFrom,
            component: ObservationVitalSignsComponent(o.component)
          }
        
         define function &quot;GetProcedureExtensions&quot;(domainResource DomainResource):
          domainResource.extension E
            where E.url != 'http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-recorded'
             return E
         
        define function ProcedureResource(procedure Procedure, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
          procedure p
          return Procedure{
            id: FHIR.id {value: 'LCR-' + p.id},
            meta: SharedResource.MetaElement(p, profileURLs),
            extension: GetProcedureExtensions(p), 
            basedOn: p.basedOn,
            partOf: p.partOf,
            status: p.status,
            category: FilterCodeableConcepts({p.category}, acceptedCategories)[0],
            code: p.code,
            subject: p.subject,
            encounter: p.encounter,
            performed: p.performed,
            location: p.location,
            reasonCode: p.reasonCode,
            reasonReference: p.reasonReference,
            bodySite: p.bodySite
          }
        
          define function ServiceRequestResource(serviceRequest ServiceRequest, profileURLs List&lt;FHIR.canonical&gt;, acceptedCategories List&lt;System.Code&gt;):
          serviceRequest sR
          return ServiceRequest{
            id: FHIR.id {value: 'LCR-' + sR.id},
            meta: SharedResource.MetaElement(sR, profileURLs),
            extension: sR.extension,
            basedOn: sR.basedOn,
            status: sR.status,
            intent: sR.intent,
            category: FilterCodeableConcepts(sR.category, acceptedCategories),
            priority: sR.priority,
            doNotPerform: sR.doNotPerform,
            code: sR.code,
            quantity: sR.quantity,
            subject: sR.subject,
            encounter: sR.encounter,
            occurrence: sR.occurrence,
            asNeeded: sR.asNeeded,
            authoredOn: sR.authoredOn,
            specimen: sR.specimen
          }
        
          define function SpecimenCollection(collection FHIR.Specimen.Collection):
          collection c
          return FHIR.Specimen.Collection{
            collector: c.collector,
            collected: c.collected,
            quantity: c.quantity,
            bodySite: c.bodySite
          }
        
          define function SpecimenResource(specimen Specimen, profileURLs List&lt;FHIR.canonical&gt;):
          specimen s
          return Specimen{
            id: FHIR.id {value: 'LCR-' + s.id},
            meta: SharedResource.MetaElement(s, profileURLs),
            extension: s.extension,
            identifier: s.identifier,
            accessionIdentifier: s.accessionIdentifier,
            status: s.status,
            type: s.type,
            subject: s.subject,
            parent: s.parent,
            request: s.request,
            collection: SpecimenCollection(s.collection),
            note: s.note
          }</code></pre></td></tr>
                    </table>
                  </td>
                </tr>
                
                
                
            </table>
        </div>
        </div>
          </text>
          <contained>
            <Parameters>
              <id value="options"/>
              <parameter>
                <name value="translatorVersion"/>
                <valueString value="3.27.0"/>
              </parameter>
              <parameter>
                <name value="option"/>
                <valueString value="EnableDateRangeOptimization"/>
              </parameter>
              <parameter>
                <name value="option"/>
                <valueString value="EnableAnnotations"/>
              </parameter>
              <parameter>
                <name value="option"/>
                <valueString value="EnableLocators"/>
              </parameter>
              <parameter>
                <name value="option"/>
                <valueString value="DisableListDemotion"/>
              </parameter>
              <parameter>
                <name value="option"/>
                <valueString value="DisableListPromotion"/>
              </parameter>
              <parameter>
                <name value="analyzeDataRequirements"/>
                <valueBoolean value="false"/>
              </parameter>
              <parameter>
                <name value="collapseDataRequirements"/>
                <valueBoolean value="true"/>
              </parameter>
              <parameter>
                <name value="compatibilityLevel"/>
                <valueString value="1.5"/>
              </parameter>
              <parameter>
                <name value="enableCqlOnly"/>
                <valueBoolean value="false"/>
              </parameter>
              <parameter>
                <name value="errorLevel"/>
                <valueString value="Info"/>
              </parameter>
              <parameter>
                <name value="signatureLevel"/>
                <valueString value="Overloads"/>
              </parameter>
              <parameter>
                <name value="validateUnits"/>
                <valueBoolean value="true"/>
              </parameter>
              <parameter>
                <name value="verifyOnly"/>
                <valueBoolean value="false"/>
              </parameter>
            </Parameters>
          </contained>
          <extension url="http://hl7.org/fhir/StructureDefinition/cqf-cqlOptions">
            <valueReference>
              <reference value="#options"/>
            </valueReference>
          </extension>
          <url
               value="http://www.cy118119.com/nhsn/fhirportal/dqm/ig/Library/NHSNAcuteCareHospitalMonthlyInitialPopulation"/>
          <version value="2.0.0"/>
          <name value="NHSNAcuteCareHospitalMonthlyInitialPopulation"/>
          <status value="draft"/>
          <type>
            <coding>
              <system value="http://terminology.hl7.org/CodeSystem/library-type"/>
              <code value="logic-library"/>
            </coding>
          </type>
          <date value="2026-05-15T17:27:39-04:00"/>
          <publisher value="CDC National Healthcare Safety Network (NHSN)"/>
          <contact>
            <name value="CDC National Healthcare Safety Network (NHSN)"/>
            <telecom>
              <system value="url"/>
              <value value="http://www.cy118119.com/nhsn"/>
            </telecom>
            <telecom>
              <system value="email"/>
              <value value="nhsn@cdc.gov"/>
            </telecom>
          </contact>
          <jurisdiction>
            <coding>
              <system value="urn:iso:std:iso:3166"/>
              <code value="US"/>
            </coding>
          </jurisdiction>
          <relatedArtifact>
            <type value="depends-on"/>
            <display value="Library FHIRHelpers"/>
            <resource
                      value="http://www.cy118119.com/nhsn/fhirportal/dqm/ig/Library/FHIRHelpers|4.0.2"/>
          </relatedArtifact>
          <relatedArtifact>
            <type value="depends-on"/>
            <display value="Library NHSNHelpers"/>
            <resource
                      value="http://www.cy118119.com/nhsn/fhirportal/dqm/ig/Library/NHSNHelpers|0.0.002"/>
          </relatedArtifact>
          <relatedArtifact>
            <type value="depends-on"/>
            <display value="Library SharedResource"/>
            <resource
                      value="http://www.cy118119.com/nhsn/fhirportal/dqm/ig/Library/SharedResourceCreation|0.1.010"/>
          </relatedArtifact>
          <relatedArtifact>
            <type value="depends-on"/>
            <display value="Code system ActCode"/>
            <resource
                      value="http://terminology.hl7.org/CodeSystem/v3-ActCode|10.0.0"/>
          </relatedArtifact>
          <relatedArtifact>
            <type value="depends-on"/>
            <display value="Code system Observation Category"/>
            <resource
                      value="http://terminology.hl7.org/CodeSystem/observation-category|2.0.0"/>
          </relatedArtifact>
          <relatedArtifact>
            <type value="depends-on"/>
            <display value="Code system LOINC"/>
            <resource value="http://loinc.org"/>
          </relatedArtifact>
          <relatedArtifact>
            <type value="depends-on"/>
            <display value="Code system V2-0074"/>
            <resource value="http://terminology.hl7.org/CodeSystem/v2-0074|3.0.0"/>
          </relatedArtifact>
          <relatedArtifact>
            <type value="depends-on"/>
            <display value="Code system Condition Category"/>
            <resource
                      value="http://terminology.hl7.org/CodeSystem/condition-category|2.0.0"/>
          </relatedArtifact>
          <relatedArtifact>
            <type value="depends-on"/>
            <display value="Code system US Core Condition Category"/>
            <resource
                      value="http://hl7.org/fhir/us/core/CodeSystem/condition-category|6.1.0"/>
          </relatedArtifact>
          <relatedArtifact>
            <type value="depends-on"/>
            <display value="Code system Condition Clinical Status"/>
            <resource
                      value="http://terminology.hl7.org/CodeSystem/condition-clinical|3.0.0"/>
          </relatedArtifact>
          <relatedArtifact>
            <type value="depends-on"/>
            <display value="Code system SNOMEDCT"/>
            <resource value="http://snomed.info/sct"/>
          </relatedArtifact>
          <relatedArtifact>
            <type value="depends-on"/>
            <display value="Code system MedicationRequest Category"/>
            <resource
                      value="http://terminology.hl7.org/CodeSystem/medicationrequest-category|2.0.0"/>
          </relatedArtifact>
          <relatedArtifact>
            <type value="depends-on"/>
            <display
                     value="Value set Inpatient, Emergency, and Observation Locations"/>
            <resource
                      value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.265"/>
          </relatedArtifact>
          <relatedArtifact>
            <type value="depends-on"/>
            <display value="Value set Emergency Department Visit"/>
            <resource
                      value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"/>
          </relatedArtifact>
          <relatedArtifact>
            <type value="depends-on"/>
            <display value="Value set Encounter Inpatient"/>
            <resource
                      value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"/>
          </relatedArtifact>
          <relatedArtifact>
            <type value="depends-on"/>
            <display value="Value set Observation Services"/>
            <resource
                      value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143"/>
          </relatedArtifact>
          <relatedArtifact>
            <type value="depends-on"/>
            <display value="Value set NHSN Inpatient Encounter Class Codes"/>
            <resource
                      value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274"/>
          </relatedArtifact>
          <parameter>
            <name value="Measurement Period"/>
            <use value="in"/>
            <min value="0"/>
            <max value="1"/>
            <type value="Period"/>
          </parameter>
          <parameter>
            <name value="Patient"/>
            <use value="out"/>
            <min value="0"/>
            <max value="1"/>
            <type value="Patient"/>
          </parameter>
          <parameter>
            <name value="Qualifying Encounters During Measurement Period"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Encounter"/>
          </parameter>
          <parameter>
            <name value="Encounters"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Encounter"/>
          </parameter>
          <parameter>
            <name value="Encounters with Patient Hospital Locations"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Encounter"/>
          </parameter>
          <parameter>
            <name value="Initial Population"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Encounter"/>
          </parameter>
          <parameter>
            <name value="Conditions"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Condition"/>
          </parameter>
          <parameter>
            <name value="DiagnosticReports"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="DiagnosticReport"/>
          </parameter>
          <parameter>
            <name value="Observations"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Observation"/>
          </parameter>
          <parameter>
            <name value="Get Locations from IP Encounters in Measurement Period"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Location"/>
          </parameter>
          <parameter>
            <name value="SDE Medication Request"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="MedicationRequest"/>
          </parameter>
          <parameter>
            <name value="SDE Medication Administration"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="MedicationAdministration"/>
          </parameter>
          <parameter>
            <name value="Medication IDs"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="string"/>
          </parameter>
          <parameter>
            <name value="SDE Condition"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Condition"/>
          </parameter>
          <parameter>
            <name value="SDE Coverage"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Coverage"/>
          </parameter>
          <parameter>
            <name value="SDE Device"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Device"/>
          </parameter>
          <parameter>
            <name value="SDE DiagnosticReport Lab"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="DiagnosticReport"/>
          </parameter>
          <parameter>
            <name value="SDE DiagnosticReport Note"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="DiagnosticReport"/>
          </parameter>
          <parameter>
            <name value="SDE Encounter"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Encounter"/>
          </parameter>
          <parameter>
            <name value="SDE IP Encounters"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Encounter"/>
          </parameter>
          <parameter>
            <name value="SDE Location"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Location"/>
          </parameter>
          <parameter>
            <name value="SDE Medication"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Medication"/>
          </parameter>
          <parameter>
            <name value="SDE Observation Lab Category"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Observation"/>
          </parameter>
          <parameter>
            <name value="SDE Observation Vital Signs Category"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Observation"/>
          </parameter>
          <parameter>
            <name value="SDE Observation Category"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Observation"/>
          </parameter>
          <parameter>
            <name value="SDE Procedure"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Procedure"/>
          </parameter>
          <parameter>
            <name value="SDE Specimen"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="Specimen"/>
          </parameter>
          <parameter>
            <name value="SDE Service Request"/>
            <use value="out"/>
            <min value="0"/>
            <max value="*"/>
            <type value="ServiceRequest"/>
          </parameter>
          <parameter>
            <name value="SDE Minimal Patient"/>
            <use value="out"/>
            <min value="0"/>
            <max value="1"/>
            <type value="Patient"/>
          </parameter>
          <dataRequirement>
            <type value="Patient"/>
            <profile value="http://hl7.org/fhir/StructureDefinition/Patient"/>
          </dataRequirement>
          <dataRequirement>
            <type value="Encounter"/>
            <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
            <mustSupport value="type"/>
            <mustSupport value="status"/>
            <mustSupport value="period"/>
            <mustSupport value="location"/>
            <mustSupport value="diagnosis"/>
            <mustSupport value="id"/>
            <mustSupport value="extension"/>
            <mustSupport value="identifier"/>
            <mustSupport value="statusHistory"/>
            <mustSupport value="class"/>
            <mustSupport value="classHistory"/>
            <mustSupport value="subject"/>
            <mustSupport value="reasonCode"/>
            <mustSupport value="hospitalization"/>
            <mustSupport value="partOf"/>
            <codeFilter>
              <path value="type"/>
              <valueSet
                        value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"/>
            </codeFilter>
          </dataRequirement>
          <dataRequirement>
            <type value="Encounter"/>
            <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
            <mustSupport value="type"/>
            <mustSupport value="status"/>
            <mustSupport value="period"/>
            <mustSupport value="location"/>
            <mustSupport value="diagnosis"/>
            <mustSupport value="id"/>
            <mustSupport value="extension"/>
            <mustSupport value="identifier"/>
            <mustSupport value="statusHistory"/>
            <mustSupport value="class"/>
            <mustSupport value="classHistory"/>
            <mustSupport value="subject"/>
            <mustSupport value="reasonCode"/>
            <mustSupport value="hospitalization"/>
            <mustSupport value="partOf"/>
            <codeFilter>
              <path value="type"/>
              <valueSet
                        value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"/>
            </codeFilter>
          </dataRequirement>
          <dataRequirement>
            <type value="Encounter"/>
            <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
            <mustSupport value="type"/>
            <mustSupport value="status"/>
            <mustSupport value="period"/>
            <mustSupport value="location"/>
            <mustSupport value="diagnosis"/>
            <mustSupport value="id"/>
            <mustSupport value="extension"/>
            <mustSupport value="identifier"/>
            <mustSupport value="statusHistory"/>
            <mustSupport value="class"/>
            <mustSupport value="classHistory"/>
            <mustSupport value="subject"/>
            <mustSupport value="reasonCode"/>
            <mustSupport value="hospitalization"/>
            <mustSupport value="partOf"/>
            <codeFilter>
              <path value="type"/>
              <valueSet
                        value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143"/>
            </codeFilter>
          </dataRequirement>
          <dataRequirement>
            <type value="Encounter"/>
            <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
            <mustSupport value="class"/>
            <mustSupport value="status"/>
            <mustSupport value="period"/>
            <mustSupport value="location"/>
            <mustSupport value="diagnosis"/>
            <mustSupport value="id"/>
            <mustSupport value="extension"/>
            <mustSupport value="identifier"/>
            <mustSupport value="statusHistory"/>
            <mustSupport value="classHistory"/>
            <mustSupport value="type"/>
            <mustSupport value="subject"/>
            <mustSupport value="reasonCode"/>
            <mustSupport value="hospitalization"/>
            <mustSupport value="partOf"/>
            <codeFilter>
              <path value="class"/>
              <valueSet
                        value="http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274"/>
            </codeFilter>
          </dataRequirement>
          <dataRequirement>
            <type value="Encounter"/>
            <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
            <mustSupport value="class"/>
            <mustSupport value="status"/>
            <mustSupport value="period"/>
            <mustSupport value="location"/>
            <mustSupport value="diagnosis"/>
            <mustSupport value="id"/>
            <mustSupport value="extension"/>
            <mustSupport value="identifier"/>
            <mustSupport value="statusHistory"/>
            <mustSupport value="classHistory"/>
            <mustSupport value="type"/>
            <mustSupport value="subject"/>
            <mustSupport value="reasonCode"/>
            <mustSupport value="hospitalization"/>
            <mustSupport value="partOf"/>
            <codeFilter>
              <path value="class"/>
              <code>
                <system value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
                <code value="EMER"/>
                <display value="emergency"/>
              </code>
            </codeFilter>
          </dataRequirement>
          <dataRequirement>
            <type value="Encounter"/>
            <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
            <mustSupport value="class"/>
            <mustSupport value="status"/>
            <mustSupport value="period"/>
            <mustSupport value="location"/>
            <mustSupport value="diagnosis"/>
            <mustSupport value="id"/>
            <mustSupport value="extension"/>
            <mustSupport value="identifier"/>
            <mustSupport value="statusHistory"/>
            <mustSupport value="classHistory"/>
            <mustSupport value="type"/>
            <mustSupport value="subject"/>
            <mustSupport value="reasonCode"/>
            <mustSupport value="hospitalization"/>
            <mustSupport value="partOf"/>
            <codeFilter>
              <path value="class"/>
              <code>
                <system value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
                <code value="OBSENC"/>
                <display value="observation encounter"/>
              </code>
            </codeFilter>
          </dataRequirement>
          <dataRequirement>
            <type value="Encounter"/>
            <profile value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
            <mustSupport value="status"/>
            <mustSupport value="period"/>
            <mustSupport value="location"/>
            <mustSupport value="diagnosis"/>
            <mustSupport value="id"/>
            <mustSupport value="extension"/>
            <mustSupport value="identifier"/>
            <mustSupport value="statusHistory"/>
            <mustSupport value="class"/>
            <mustSupport value="classHistory"/>
            <mustSupport value="type"/>
            <mustSupport value="subject"/>
            <mustSupport value="reasonCode"/>
            <mustSupport value="hospitalization"/>
            <mustSupport value="partOf"/>
          </dataRequirement>
          <dataRequirement>
            <type value="Condition"/>
            <profile value="http://hl7.org/fhir/StructureDefinition/Condition"/>
            <mustSupport value="id"/>
            <mustSupport value="extension"/>
            <mustSupport value="clinicalStatus"/>
            <mustSupport value="verificationStatus"/>
            <mustSupport value="category"/>
            <mustSupport value="code"/>
            <mustSupport value="subject"/>
            <mustSupport value="encounter"/>
            <mustSupport value="onset"/>
            <mustSupport value="abatement"/>
            <mustSupport value="recordedDate"/>
            <mustSupport value="encounter.reference"/>
          </dataRequirement>
          <dataRequirement>
            <type value="DiagnosticReport"/>
            <profile
                     value="http://hl7.org/fhir/StructureDefinition/DiagnosticReport"/>
            <mustSupport value="id"/>
            <mustSupport value="extension"/>
            <mustSupport value="basedOn"/>
            <mustSupport value="status"/>
            <mustSupport value="category"/>
            <mustSupport value="code"/>
            <mustSupport value="subject"/>
            <mustSupport value="encounter"/>
            <mustSupport value="effective"/>
            <mustSupport value="issued"/>
            <mustSupport value="specimen"/>
            <mustSupport value="result"/>
            <mustSupport value="conclusion"/>
            <mustSupport value="conclusionCode"/>
          </dataRequirement>
          <dataRequirement>
            <type value="Observation"/>
            <profile value="http://hl7.org/fhir/StructureDefinition/Observation"/>
            <mustSupport value="id"/>
            <mustSupport value="extension"/>
            <mustSupport value="partOf"/>
            <mustSupport value="status"/>
            <mustSupport value="category"/>
            <mustSupport value="code"/>
            <mustSupport value="subject"/>
            <mustSupport value="encounter"/>
            <mustSupport value="effective"/>
            <mustSupport value="issued"/>
            <mustSupport value="value"/>
            <mustSupport value="dataAbsentReason"/>
            <mustSupport value="interpretation"/>
            <mustSupport value="bodySite"/>
            <mustSupport value="method"/>
            <mustSupport value="specimen"/>
            <mustSupport value="referenceRange"/>
            <mustSupport value="hasMember"/>
            <mustSupport value="derivedFrom"/>
            <mustSupport value="component"/>
          </dataRequirement>
          <dataRequirement>
            <type value="MedicationRequest"/>
            <profile
                     value="http://hl7.org/fhir/StructureDefinition/MedicationRequest"/>
            <mustSupport value="authoredOn"/>
            <mustSupport value="id"/>
            <mustSupport value="extension"/>
            <mustSupport value="status"/>
            <mustSupport value="statusReason"/>
            <mustSupport value="intent"/>
            <mustSupport value="category"/>
            <mustSupport value="priority"/>
            <mustSupport value="doNotPerform"/>
            <mustSupport value="reported"/>
            <mustSupport value="medication"/>
            <mustSupport value="subject"/>
            <mustSupport value="encounter"/>
            <mustSupport value="requester"/>
            <mustSupport value="recorder"/>
            <mustSupport value="reasonCode"/>
            <mustSupport value="reasonReference"/>
            <mustSupport value="instantiatesCanonical"/>
            <mustSupport value="instantiatesUri"/>
            <mustSupport value="courseOfTherapyType"/>
            <mustSupport value="dosageInstruction"/>
          </dataRequirement>
          <dataRequirement>
            <type value="MedicationAdministration"/>
            <profile
                     value="http://hl7.org/fhir/StructureDefinition/MedicationAdministration"/>
            <mustSupport value="effective"/>
            <mustSupport value="id"/>
            <mustSupport value="extension"/>
            <mustSupport value="instantiates"/>
            <mustSupport value="partOf"/>
            <mustSupport value="status"/>
            <mustSupport value="statusReason"/>
            <mustSupport value="category"/>
            <mustSupport value="medication"/>
            <mustSupport value="subject"/>
            <mustSupport value="context"/>
            <mustSupport value="supportingInformation"/>
            <mustSupport value="performer"/>
            <mustSupport value="reasonCode"/>
            <mustSupport value="reasonReference"/>
            <mustSupport value="request"/>
            <mustSupport value="device"/>
            <mustSupport value="note"/>
            <mustSupport value="dosage"/>
            <mustSupport value="eventHistory"/>
          </dataRequirement>
          <dataRequirement>
            <type value="Coverage"/>
            <profile value="http://hl7.org/fhir/StructureDefinition/Coverage"/>
            <mustSupport value="period"/>
            <mustSupport value="id"/>
            <mustSupport value="extension"/>
            <mustSupport value="status"/>
            <mustSupport value="type"/>
            <mustSupport value="beneficiary"/>
            <mustSupport value="payor"/>
          </dataRequirement>
          <dataRequirement>
            <type value="Device"/>
            <profile value="http://hl7.org/fhir/StructureDefinition/Device"/>
            <mustSupport value="id"/>
            <mustSupport value="extension"/>
            <mustSupport value="status"/>
            <mustSupport value="expirationDate"/>
            <mustSupport value="lotNumber"/>
            <mustSupport value="serialNumber"/>
            <mustSupport value="modelNumber"/>
            <mustSupport value="partNumber"/>
            <mustSupport value="type"/>
            <mustSupport value="patient"/>
            <mustSupport value="parent"/>
          </dataRequirement>
          <dataRequirement>
            <type value="Medication"/>
            <profile value="http://hl7.org/fhir/StructureDefinition/Medication"/>
            <mustSupport value="id"/>
          </dataRequirement>
          <dataRequirement>
            <type value="Procedure"/>
            <profile value="http://hl7.org/fhir/StructureDefinition/Procedure"/>
            <mustSupport value="performed"/>
            <mustSupport value="id"/>
            <mustSupport value="basedOn"/>
            <mustSupport value="partOf"/>
            <mustSupport value="status"/>
            <mustSupport value="category"/>
            <mustSupport value="code"/>
            <mustSupport value="subject"/>
            <mustSupport value="encounter"/>
            <mustSupport value="location"/>
            <mustSupport value="reasonCode"/>
            <mustSupport value="reasonReference"/>
            <mustSupport value="bodySite"/>
          </dataRequirement>
          <dataRequirement>
            <type value="Specimen"/>
            <profile value="http://hl7.org/fhir/StructureDefinition/Specimen"/>
            <mustSupport value="collection"/>
            <mustSupport value="collection.collected"/>
            <mustSupport value="id"/>
            <mustSupport value="extension"/>
            <mustSupport value="identifier"/>
            <mustSupport value="accessionIdentifier"/>
            <mustSupport value="status"/>
            <mustSupport value="type"/>
            <mustSupport value="subject"/>
            <mustSupport value="parent"/>
            <mustSupport value="request"/>
            <mustSupport value="note"/>
          </dataRequirement>
          <dataRequirement>
            <type value="ServiceRequest"/>
            <profile value="http://hl7.org/fhir/StructureDefinition/ServiceRequest"/>
            <mustSupport value="authoredOn"/>
            <mustSupport value="id"/>
            <mustSupport value="extension"/>
            <mustSupport value="basedOn"/>
            <mustSupport value="status"/>
            <mustSupport value="intent"/>
            <mustSupport value="category"/>
            <mustSupport value="priority"/>
            <mustSupport value="doNotPerform"/>
            <mustSupport value="code"/>
            <mustSupport value="quantity"/>
            <mustSupport value="subject"/>
            <mustSupport value="encounter"/>
            <mustSupport value="occurrence"/>
            <mustSupport value="asNeeded"/>
            <mustSupport value="specimen"/>
          </dataRequirement>
          <content>
            <contentType value="text/cql"/>
            <data
                  value="bGlicmFyeSBOSFNOQWN1dGVDYXJlSG9zcGl0YWxNb250aGx5SW5pdGlhbFBvcHVsYXRpb24gdmVyc2lvbiAnMi4wLjAnDQoNCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnDQoNCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjInIGNhbGxlZCBGSElSSGVscGVycw0KaW5jbHVkZSBOSFNOSGVscGVycyB2ZXJzaW9uICcwLjAuMDAyJyBjYWxsZWQgTkhTTkhlbHBlcnMNCmluY2x1ZGUgU2hhcmVkUmVzb3VyY2VDcmVhdGlvbiB2ZXJzaW9uICcwLjEuMDEwJyBjYWxsZWQgU2hhcmVkUmVzb3VyY2UNCg0KY29kZXN5c3RlbSAiQWN0Q29kZSI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL3YzLUFjdENvZGUnDQpjb2Rlc3lzdGVtICJPYnNlcnZhdGlvbiBDYXRlZ29yeSI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL29ic2VydmF0aW9uLWNhdGVnb3J5Jw0KY29kZXN5c3RlbSAiTE9JTkMiOiAnaHR0cDovL2xvaW5jLm9yZycgDQpjb2Rlc3lzdGVtICJWMi0wMDc0IjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vdjItMDA3NCcNCmNvZGVzeXN0ZW0gIkNvbmRpdGlvbiBDYXRlZ29yeSI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL2NvbmRpdGlvbi1jYXRlZ29yeScNCmNvZGVzeXN0ZW0gIlVTIENvcmUgQ29uZGl0aW9uIENhdGVnb3J5IjogJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY29yZS9Db2RlU3lzdGVtL2NvbmRpdGlvbi1jYXRlZ29yeScNCmNvZGVzeXN0ZW0gIkNvbmRpdGlvbiBDbGluaWNhbCBTdGF0dXMiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS9jb25kaXRpb24tY2xpbmljYWwnDQpjb2Rlc3lzdGVtICJTTk9NRURDVCI6ICdodHRwOi8vc25vbWVkLmluZm8vc2N0Jw0KY29kZXN5c3RlbSAiTWVkaWNhdGlvblJlcXVlc3QgQ2F0ZWdvcnkiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS9tZWRpY2F0aW9ucmVxdWVzdC1jYXRlZ29yeScNCg0KdmFsdWVzZXQgIklucGF0aWVudCwgRW1lcmdlbmN5LCBhbmQgT2JzZXJ2YXRpb24gTG9jYXRpb25zIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTA0Ni4yNjUnDQp2YWx1ZXNldCAiRW1lcmdlbmN5IERlcGFydG1lbnQgVmlzaXQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMTE3LjEuNy4xLjI5MicNCnZhbHVlc2V0ICJFbmNvdW50ZXIgSW5wYXRpZW50IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjY2Ni41LjMwNycNCnZhbHVlc2V0ICJPYnNlcnZhdGlvbiBTZXJ2aWNlcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjExMTEuMTQzJw0KdmFsdWVzZXQgIk5IU04gSW5wYXRpZW50IEVuY291bnRlciBDbGFzcyBDb2RlcyI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwNDYuMjc0Jw0KDQovL2NvZGUgZm9yIE9ic2VydmF0aW9uIENhdGVnb3J5DQpjb2RlICJsYWJvcmF0b3J5IjogJ2xhYm9yYXRvcnknIGZyb20gIk9ic2VydmF0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdMYWJvcmF0b3J5Jw0KY29kZSAic29jaWFsLWhpc3RvcnkiOiAnc29jaWFsLWhpc3RvcnknIGZyb20gIk9ic2VydmF0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdTb2NpYWwgSGlzdG9yeScNCmNvZGUgInZpdGFsLXNpZ25zIjogJ3ZpdGFsLXNpZ25zJyBmcm9tICJPYnNlcnZhdGlvbiBDYXRlZ29yeSIgZGlzcGxheSAnVml0YWwgU2lnbnMnDQpjb2RlICJpbWFnaW5nIjogJ2ltYWdpbmcnIGZyb20gIk9ic2VydmF0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdJbWFnaW5nJw0KY29kZSAicHJvY2VkdXJlIjogJ3Byb2NlZHVyZScgZnJvbSAiT2JzZXJ2YXRpb24gQ2F0ZWdvcnkiIGRpc3BsYXkgJ1Byb2NlZHVyZScNCmNvZGUgInN1cnZleSI6ICdzdXJ2ZXknIGZyb20gIk9ic2VydmF0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdTdXJ2ZXknDQoNCi8vY29kZSBmb3IgQ29uZGl0aW9uIGNhdGVnb3J5DQovL2NvZGUgInByb2JsZW0tbGlzdC1pdGVtIjogJ3Byb2JsZW0tbGlzdC1pdGVtJyBmcm9tICJDb25kaXRpb24gQ2F0ZWdvcnkiIGRpc3BsYXkgJ1Byb2JsZW0gTGlzdCBJdGVtJw0KY29kZSAiZW5jb3VudGVyLWRpYWdub3NpcyI6ICdlbmNvdW50ZXItZGlhZ25vc2lzJyBmcm9tICJDb25kaXRpb24gQ2F0ZWdvcnkiIGRpc3BsYXkgJ0VuY291bnRlciBEaWFnbm9zaXMnDQovL2NvZGUgImhlYWx0aC1jb25jZXJuIjogJ2hlYWx0aC1jb25jZXJuJyBmcm9tICJVUyBDb3JlIENvbmRpdGlvbiBDYXRlZ29yeSIgZGlzcGxheSAnSGVhbHRoIENvbmNlcm4nDQoNCi8vY29kZSBmb3IgRGlhZ25vc3RpYyBSZXBvcnQgQ2F0ZWdvcnkNCmNvZGUgIkxBQiI6ICdMQUInIGZyb20gIlYyLTAwNzQiIGRpc3BsYXkgJ0xhYm9yYXRvcnknDQpjb2RlICJSYWRpb2xvZ3kiOiAnTFAyOTY4NC01JyBmcm9tICJMT0lOQyIgZGlzcGxheSAnUmFkaW9sb2d5Jw0KY29kZSAiUGF0aG9sb2d5IjogJ0xQNzgzOS02JyBmcm9tICJMT0lOQyIgZGlzcGxheSAnUGF0aG9sb2d5Jw0KY29kZSAiQ2FyZGlvbG9neSI6ICdMUDI5NzA4LTInIGZyb20gIkxPSU5DIiBkaXNwbGF5ICdDYXJkaW9sb2d5Jw0KDQovL2NvZGUgZm9yIEVtZXJnZW5jeSBFbmNvdW50ZXIgQ2xhc3MNCmNvZGUgImVtZXJnZW5jeSI6ICdFTUVSJyBmcm9tICJBY3RDb2RlIiBkaXNwbGF5ICdlbWVyZ2VuY3knDQpjb2RlICJvYnNlcnZhdGlvbiBlbmNvdW50ZXIiOiAnT0JTRU5DJyBmcm9tICJBY3RDb2RlIiBkaXNwbGF5ICdvYnNlcnZhdGlvbiBlbmNvdW50ZXInDQoNCi8vY29kZSBmb3IgQ29uZGl0aW9uIGNsaW5pY2FsU3RhdHVzDQpjb2RlICJhY3RpdmUiOiAnYWN0aXZlJyBmcm9tICJDb25kaXRpb24gQ2xpbmljYWwgU3RhdHVzIiBkaXNwbGF5ICdhY3RpdmUnDQoNCi8vY29kZSBmb3IgUHJvY2VkdXJlIGNhdGVnb3J5DQpjb2RlICJTdXJnaWNhbCBwcm9jZWR1cmUiOiAnMzg3NzEzMDAzJyBmcm9tICJTTk9NRURDVCIgZGlzcGxheSAnU3VyZ2ljYWwgcHJvY2VkdXJlJw0KLy9jb2RlICJEaWFnbm9zdGljIHByb2NlZHVyZSI6ICcxMDM2OTMwMDcnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdEaWFnbm9zdGljIHByb2NlZHVyZScgQ29kZSBkZXByZWNhdGVkIGluIFNOT01FRCB2ZXJzaW9uIDIwMjMtMDktMDENCmNvZGUgIkRpYWdub3N0aWMgaW50ZW50IChxdWFsaWZpZXIgdmFsdWUpIjogJzI2MTAwNDAwOCcgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ0RpYWdub3N0aWMgaW50ZW50Jw0KDQovL2NvZGUgZm9yIE1lZGljYXRpb25SZXF1ZXN0IGNhdGVnb3J5DQpjb2RlICJpbnBhdGllbnQiOiAnaW5wYXRpZW50JyBmcm9tICJNZWRpY2F0aW9uUmVxdWVzdCBDYXRlZ29yeSIgZGlzcGxheSAnSW5wYXRpZW50Jw0KY29kZSAib3V0cGF0aWVudCI6ICdvdXRwYXRpZW50JyBmcm9tICJNZWRpY2F0aW9uUmVxdWVzdCBDYXRlZ29yeSIgZGlzcGxheSAnT3V0cGF0aWVudCcNCg0KLy9jb2RlIGZvciBTZXJ2aWNlUmVxdWVzdCBjYXRlZ29yeSAoYWxzbyB1c2VzIFN1cmdpY2FsIHByb2NlZHVyZSBmcm9tIFByb2NlZHVyZSBjYXRlZ29yaWVzKQ0KY29kZSAiTGFib3JhdG9yeSBwcm9jZWR1cmUiOiAnMTA4MjUyMDA3JyBmcm9tICJTTk9NRURDVCIgZGlzcGxheSAnTGFib3JhdG9yeSBwcm9jZWR1cmUnDQpjb2RlICJJbWFnaW5nIjogJzM2MzY3OTAwNScgZnJvbSAiU05PTUVEQ1QiIGRpc3BsYXkgJ0ltYWdpbmcnDQoNCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiANCiAgICBkZWZhdWx0IEludGVydmFsW0AyMDIyLTAxLTAxVDAwOjAwOjAwLjAsIEAyMDIyLTAxLTMxVDIzOjU5OjU5LjApDQoNCmNvbnRleHQgUGF0aWVudCANCg0KZGVmaW5lICJRdWFsaWZ5aW5nIEVuY291bnRlcnMgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCI6DQogKCBbRW5jb3VudGVyOiAiRW5jb3VudGVyIElucGF0aWVudCJdDQogIHVuaW9uIFtFbmNvdW50ZXI6ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBWaXNpdCJdDQogIHVuaW9uIFtFbmNvdW50ZXI6ICJPYnNlcnZhdGlvbiBTZXJ2aWNlcyJdDQogIHVuaW9uIFtFbmNvdW50ZXI6IGNsYXNzIGluICJOSFNOIElucGF0aWVudCBFbmNvdW50ZXIgQ2xhc3MgQ29kZXMiXQ0KICB1bmlvbiBbRW5jb3VudGVyOiBjbGFzcyB+ICJlbWVyZ2VuY3kiXQ0KICB1bmlvbiBbRW5jb3VudGVyOiBjbGFzcyB+ICJvYnNlcnZhdGlvbiBlbmNvdW50ZXIiXSkgUXVhbGlmeWluZ0VuY291bnRlcnMNCiAgd2hlcmUgUXVhbGlmeWluZ0VuY291bnRlcnMuc3RhdHVzIGluIHsnaW4tcHJvZ3Jlc3MnLCAnZmluaXNoZWQnLCAndHJpYWdlZCcsICdvbmxlYXZlJywgJ2VudGVyZWQtaW4tZXJyb3InfQ0KICAgIGFuZCBRdWFsaWZ5aW5nRW5jb3VudGVycy5wZXJpb2Qgb3ZlcmxhcHMgIk1lYXN1cmVtZW50IFBlcmlvZCIgDQoNCmRlZmluZSAiRW5jb3VudGVycyB3aXRoIFBhdGllbnQgSG9zcGl0YWwgTG9jYXRpb25zIjoNCiAgIkVuY291bnRlcnMiIEVuY291bnRlcnMNCiAgd2hlcmUgZXhpc3RzKA0KICAgIEVuY291bnRlcnMubG9jYXRpb24gRW5jb3VudGVyTG9jYXRpb24NCiAgICB3aGVyZSBOSFNOSGVscGVycy5HZXRMb2NhdGlvbihFbmNvdW50ZXJMb2NhdGlvbi5sb2NhdGlvbikudHlwZSBpbiAiSW5wYXRpZW50LCBFbWVyZ2VuY3ksIGFuZCBPYnNlcnZhdGlvbiBMb2NhdGlvbnMiDQogICAgICBhbmQgRW5jb3VudGVyTG9jYXRpb24ucGVyaW9kIG92ZXJsYXBzIEVuY291bnRlcnMucGVyaW9kDQogICkNCiAgYW5kIEVuY291bnRlcnMuc3RhdHVzIGluIHsnaW4tcHJvZ3Jlc3MnLCAnZmluaXNoZWQnLCAndHJpYWdlZCcsICdvbmxlYXZlJywgJ2VudGVyZWQtaW4tZXJyb3InfQ0KICBhbmQgRW5jb3VudGVycy5wZXJpb2Qgb3ZlcmxhcHMgIk1lYXN1cmVtZW50IFBlcmlvZCINCg0KZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOg0KICAiUXVhbGlmeWluZyBFbmNvdW50ZXJzIER1cmluZyBNZWFzdXJlbWVudCBQZXJpb2QiDQogIHVuaW9uICJFbmNvdW50ZXJzIHdpdGggUGF0aWVudCBIb3NwaXRhbCBMb2NhdGlvbnMiDQoNCmRlZmluZSAiRW5jb3VudGVycyI6DQogIFtFbmNvdW50ZXJdDQoNCmRlZmluZSAiQ29uZGl0aW9ucyI6DQogIFtDb25kaXRpb25dDQoNCmRlZmluZSAiRGlhZ25vc3RpY1JlcG9ydHMiOg0KICBbRGlhZ25vc3RpY1JlcG9ydF0NCg0KZGVmaW5lICJPYnNlcnZhdGlvbnMiOg0KICBbT2JzZXJ2YXRpb25dDQoNCmRlZmluZSAiR2V0IExvY2F0aW9ucyBmcm9tIElQIEVuY291bnRlcnMgaW4gTWVhc3VyZW1lbnQgUGVyaW9kIjoNCiAgZmxhdHRlbigiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUA0KICBsZXQgbG9jYXRpb25FbGVtZW50czogSVAubG9jYXRpb24NCiAgcmV0dXJuDQogICAgbG9jYXRpb25FbGVtZW50cyBMRQ0KICAgIGxldCBsb2NhdGlvblJlZmVyZW5jZTogTEUubG9jYXRpb24NCiAgICByZXR1cm4gTkhTTkhlbHBlcnMuR2V0TG9jYXRpb24obG9jYXRpb25SZWZlcmVuY2UpKQ0KDQpkZWZpbmUgIk1lZGljYXRpb24gSURzIjoNCiAgKCJTREUgTWVkaWNhdGlvbiBSZXF1ZXN0Ig0KICB1bmlvbiAiU0RFIE1lZGljYXRpb24gQWRtaW5pc3RyYXRpb24iKSBNZWRSZXFPckFkbWluDQogIHdoZXJlIE1lZFJlcU9yQWRtaW4ubWVkaWNhdGlvbiBpcyBGSElSLlJlZmVyZW5jZQ0KICAgIGFuZCBleGlzdHMoIkluaXRpYWwgUG9wdWxhdGlvbiIpIC8vTm8gbG9uZ2VyIG5lZWQgdG8gY2hlY2sgZm9yIHRpbWluZyBoZXJlIGJlY2F1c2UgaXQncyBjaGVja2VkIGluIFNERSBNZWRpY2F0aW9uIFJlcXVlc3QvQWRtaW5pc3RyaWF0aW9uDQogIHJldHVybiBOSFNOSGVscGVycy5HZXRJZChNZWRSZXFPckFkbWluLm1lZGljYXRpb24ucmVmZXJlbmNlKQ0KDQovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi8vU3VwcGxlbWVudGFsIERhdGEgRWxlbWVudA0KLy9XaGVuIEZISVIuY2Fub25pY2FsIHZhbHVlIGlzIHByZXNlbnQsIFVTIENvcmUgMy4xLjEgcHJvZmlsZXMgYXJlIHVzZWQNCi8vV2hlbiBGSElSLmNhbm9uaWNhbCB2YWx1ZSBpcyBub3QgcHJlc2VudCwgRkhJUiBCYXNlIHByb2ZpbGVzIGFyZSB1c2VkDQovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCmRlZmluZSAiU0RFIENvbmRpdGlvbiI6DQogICJDb25kaXRpb25zIiBDb25kaXRpb25zIA0KICAgIHdoZXJlIGV4aXN0cygNCiAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUA0KLy9DaGVjayBmb3IgUHJvYmxlbSBMaXN0IENvbmRpdGlvbnMgdGhhdCB3ZXJlIHJlY29yZGVkIGJlZm9yZSBvciBkdXJpbmcgSVAgDQogICAgIHdoZXJlIA0KICAgICAgKGV4aXN0cyhJUC5kaWFnbm9zaXMgRGlhZ25vc2VzDQogICAgICAgICAgd2hlcmUgTkhTTkhlbHBlcnMuR2V0SWQoRGlhZ25vc2VzLmNvbmRpdGlvbi5yZWZlcmVuY2UpID0gQ29uZGl0aW9ucy5pZA0KICAgICAgICApDQogICAgICAgIG9yIE5IU05IZWxwZXJzLkdldElkKENvbmRpdGlvbnMuZW5jb3VudGVyLnJlZmVyZW5jZSkgPSBJUC5pZA0KICAgICAgKQ0KICAgICAgYW5kIGV4aXN0cyAoQ29uZGl0aW9ucy5jYXRlZ29yeSBjYXRlZ29yaWVzDQogICAgICAgIHdoZXJlIGNhdGVnb3JpZXMgfiAiZW5jb3VudGVyLWRpYWdub3NpcyINCiAgICApDQogICkNCiAgcmV0dXJuIENvbmRpdGlvblJlc291cmNlKENvbmRpdGlvbnMsDQogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktY29uZGl0aW9uJ319LA0KICAgeyJlbmNvdW50ZXItZGlhZ25vc2lzIn0pDQoNCmRlZmluZSAiU0RFIENvdmVyYWdlIjogDQoJW0NvdmVyYWdlXSBDb3ZlcmFnZXMNCiAgd2hlcmUgZXhpc3RzKA0KICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQDQogICAgd2hlcmUgQ292ZXJhZ2VzLnBlcmlvZCBvdmVybGFwcyBJUC5wZXJpb2QpDQogIHJldHVybiBDb3ZlcmFnZVJlc291cmNlKENvdmVyYWdlcywNCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1jb3ZlcmFnZSd9fSkNCg0KZGVmaW5lICJTREUgRGV2aWNlIjoNCiAgW0RldmljZV0gRGV2aWNlcyANCiAgd2hlcmUgZXhpc3RzKCJJbml0aWFsIFBvcHVsYXRpb24iKQ0KICByZXR1cm4gRGV2aWNlUmVzb3VyY2UoRGV2aWNlcywNCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1kZXZpY2UnfX0pDQoNCi8vVGhpcyBibG9jayBjb2xsZWN0cyBhbGwgRGlhZ25vc3RpY1JlcG9ydCByZXNvdXJjZXMgd2hpbGUgYWxzbyBtYXJraW5nIExhYiBhbmQgTm90ZSBEaWFnbm9zdGljUmVwb3J0cyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBwcm9maWxlcw0KLy8jU3RhcnQgRGlhZ25vc3RpY1JlcG9ydCBibG9jaw0KZGVmaW5lICJTREUgRGlhZ25vc3RpY1JlcG9ydCBMYWIiOg0KICAiRGlhZ25vc3RpY1JlcG9ydHMiIERpYWdub3N0aWNSZXBvcnRzDQogIHdoZXJlIChleGlzdHMoRGlhZ25vc3RpY1JlcG9ydHMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAiTEFCIikNCiAgICBhbmQgZXhpc3RzKA0KICAgICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVANCiAgICAgIHdoZXJlIE5IU05IZWxwZXJzLiJOb3JtYWxpemUgSW50ZXJ2YWwiKERpYWdub3N0aWNSZXBvcnRzLmVmZmVjdGl2ZSkgb3ZlcmxhcHMgSVAucGVyaW9kKSkNCiAgcmV0dXJuIERpYWdub3N0aWNSZXBvcnRMYWJSZXNvdXJjZShEaWFnbm9zdGljUmVwb3J0cywNCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1kaWFnbm9zdGljcmVwb3J0LWxhYid9fSwNCiAgeyJMQUIiLCAiUmFkaW9sb2d5IiwgIlBhdGhvbG9neSIsICJDYXJkaW9sb2d5In0pDQogDQpkZWZpbmUgIlNERSBEaWFnbm9zdGljUmVwb3J0IE5vdGUiOg0KICAiRGlhZ25vc3RpY1JlcG9ydHMiIERpYWdub3N0aWNSZXBvcnRzDQogIHdoZXJlICgoZXhpc3RzKERpYWdub3N0aWNSZXBvcnRzLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gIlJhZGlvbG9neSIpKQ0KICAgIG9yIGV4aXN0cygoRGlhZ25vc3RpY1JlcG9ydHMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAiUGF0aG9sb2d5IikpDQogICAgb3IgZXhpc3RzKChEaWFnbm9zdGljUmVwb3J0cy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJDYXJkaW9sb2d5IikpKQ0KICAgIGFuZCBleGlzdHMoDQogICAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUA0KICAgICAgd2hlcmUgTkhTTkhlbHBlcnMuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoRGlhZ25vc3RpY1JlcG9ydHMuZWZmZWN0aXZlKSBvdmVybGFwcyBJUC5wZXJpb2QpDQogIHJldHVybiBEaWFnbm9zdGljUmVwb3J0UmVzb3VyY2UoRGlhZ25vc3RpY1JlcG9ydHMsDQogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktZGlhZ25vc3RpY3JlcG9ydC1ub3RlJ319LA0KICB7IlJhZGlvbG9neSIsICJQYXRob2xvZ3kiLCAiQ2FyZGlvbG9neSIsICJMQUIifSkNCi8vI0VuZCBEaWFnbm9zdGljUmVwb3J0IGJsb2NrDQoNCmRlZmluZSAiU0RFIEVuY291bnRlciI6IA0KICAiRW5jb3VudGVycyIgRW5jb3VudGVycw0KICB3aGVyZSBub3QgQ2hlY2tJUChFbmNvdW50ZXJzKQ0KICBhbmQgZXhpc3RzKA0KICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQDQogICAgd2hlcmUgRW5jb3VudGVycy5wZXJpb2Qgb3ZlcmxhcHMgSVAucGVyaW9kKQ0KICByZXR1cm4gRW5jb3VudGVyUmVzb3VyY2UoRW5jb3VudGVycywNCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL2hsNy5vcmcvZmhpci91cy9jb3JlL1N0cnVjdHVyZURlZmluaXRpb24vdXMtY29yZS1lbmNvdW50ZXInfX0pDQoNCmRlZmluZSAiU0RFIElQIEVuY291bnRlcnMiOg0KICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUA0KICByZXR1cm4gRW5jb3VudGVyUmVzb3VyY2UoSVAsIA0KICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LWVuY291bnRlcid9fSkNCg0KZGVmaW5lICJTREUgTG9jYXRpb24iOg0KICAiR2V0IExvY2F0aW9ucyBmcm9tIElQIEVuY291bnRlcnMgaW4gTWVhc3VyZW1lbnQgUGVyaW9kIiBMb2NhdGlvbnMNCiAgd2hlcmUgZXhpc3RzKCJJbml0aWFsIFBvcHVsYXRpb24iKQ0KICBhbmQgTG9jYXRpb25zIGlzIG5vdCBudWxsDQogIHJldHVybiBMb2NhdGlvblJlc291cmNlKExvY2F0aW9ucywNCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1sb2NhdGlvbid9fSkNCiANCmRlZmluZSAiU0RFIE1lZGljYXRpb24gQWRtaW5pc3RyYXRpb24iOg0KICBbTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uXSBNZWRpY2F0aW9uQWRtaW5pc3RyYXRpb25zIA0KICB3aGVyZSBleGlzdHMoDQogICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVANCiAgICB3aGVyZSBOSFNOSGVscGVycy4iTm9ybWFsaXplIEludGVydmFsIihNZWRpY2F0aW9uQWRtaW5pc3RyYXRpb25zLmVmZmVjdGl2ZSkgb3ZlcmxhcHMgSVAucGVyaW9kKQ0KICByZXR1cm4gTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uUmVzb3VyY2UoTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9ucywNCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1tZWRpY2F0aW9uYWRtaW5pc3RyYXRpb24nfX0sDQogIHsiaW5wYXRpZW50IiwgIm91dHBhdGllbnQifSkNCiANCmRlZmluZSAiU0RFIE1lZGljYXRpb24gUmVxdWVzdCI6DQogIFtNZWRpY2F0aW9uUmVxdWVzdF0gTWVkaWNhdGlvblJlcXVlc3RzIA0KICB3aGVyZSBleGlzdHMoDQogICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVANCiAgICB3aGVyZSBNZWRpY2F0aW9uUmVxdWVzdHMuYXV0aG9yZWRPbiBkdXJpbmcgSVAucGVyaW9kKQ0KICByZXR1cm4gTWVkaWNhdGlvblJlcXVlc3RSZXNvdXJjZShNZWRpY2F0aW9uUmVxdWVzdHMsDQogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktbWVkaWNhdGlvbnJlcXVlc3QnfX0sDQogIHsiaW5wYXRpZW50IiwgIm91dHBhdGllbnQifSkNCiAgDQpkZWZpbmUgIlNERSBNZWRpY2F0aW9uIjoNCiAgW01lZGljYXRpb25dIE1lZGljYXRpb25zDQogIHdoZXJlIE1lZGljYXRpb25zLmlkIGluICJNZWRpY2F0aW9uIElEcyINCiAgcmV0dXJuIFNoYXJlZFJlc291cmNlLk1lZGljYXRpb25SZXNvdXJjZShNZWRpY2F0aW9ucywNCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1tZWRpY2F0aW9uJ319KQ0KDQpkZWZpbmUgIlNERSBPYnNlcnZhdGlvbiBMYWIgQ2F0ZWdvcnkiOg0KICAiT2JzZXJ2YXRpb25zIiBPYnNlcnZhdGlvbnMgDQogIHdoZXJlIChleGlzdHMoT2JzZXJ2YXRpb25zLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gImxhYm9yYXRvcnkiKSkNCiAgICBhbmQgZXhpc3RzKA0KICAgICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVANCiAgICAgIHdoZXJlIE5IU05IZWxwZXJzLiJOb3JtYWxpemUgSW50ZXJ2YWwiKE9ic2VydmF0aW9ucy5lZmZlY3RpdmUpIG92ZXJsYXBzIElQLnBlcmlvZCkNCiAgcmV0dXJuIE9ic2VydmF0aW9uTGFiUmVzb3VyY2UoT2JzZXJ2YXRpb25zLA0KICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LW9ic2VydmF0aW9uLWxhYid9fSwNCiAgeyJpbWFnaW5nIiwgInByb2NlZHVyZSIsICJ2aXRhbC1zaWducyIsICJsYWJvcmF0b3J5In0pDQoNCi8vVml0YWwgU2lnbnMgT2JzZXJ2YXRpb24gaGFzIGl0cyBvd24gcHJvZmlsZSBpbiBGSElSIEJhc2UNCmRlZmluZSAiU0RFIE9ic2VydmF0aW9uIFZpdGFsIFNpZ25zIENhdGVnb3J5IjoNCiAgIk9ic2VydmF0aW9ucyIgT2JzZXJ2YXRpb25zIA0KICB3aGVyZSAoZXhpc3RzKE9ic2VydmF0aW9ucy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJ2aXRhbC1zaWducyIpKQ0KICAgIGFuZCBleGlzdHMoDQogICAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUA0KICAgICAgd2hlcmUgTkhTTkhlbHBlcnMuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoT2JzZXJ2YXRpb25zLmVmZmVjdGl2ZSkgb3ZlcmxhcHMgSVAucGVyaW9kKQ0KICByZXR1cm4gT2JzZXJ2YXRpb25WaXRhbFNpZ25zUmVzb3VyY2UoT2JzZXJ2YXRpb25zLA0KICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1tb250aGx5LW9ic2VydmF0aW9uLXZpdGFscyd9fSwNCiAgeyJpbWFnaW5nIiwgInByb2NlZHVyZSIsICJ2aXRhbC1zaWducyIsICJsYWJvcmF0b3J5In0pDQoNCi8vRGVmYXVsdGluZyB0byBiYXNlIEZISVIgcHJvZmlsZSBhcyB0aGVyZSBhcmUgbm8gaW5kaXZpZHVhbCBwcm9maWxlcyBpbiBVUyBDb3JlIDMuMS4xIHRoYXQgY292ZXIgdGhlc2UgT2JzZXJ2YXRpb24gY2F0ZWdvcmllcw0KZGVmaW5lICJTREUgT2JzZXJ2YXRpb24gQ2F0ZWdvcnkiOg0KICAiT2JzZXJ2YXRpb25zIiBPYnNlcnZhdGlvbnMgDQogIHdoZXJlICgvKihleGlzdHMoT2JzZXJ2YXRpb25zLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gInNvY2lhbC1oaXN0b3J5IikpDQogICAgb3IgKGV4aXN0cyhPYnNlcnZhdGlvbnMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAic3VydmV5IikpDQogICAgb3IgKi8oZXhpc3RzKE9ic2VydmF0aW9ucy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJpbWFnaW5nIikpDQogICAgb3IgKGV4aXN0cyhPYnNlcnZhdGlvbnMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAicHJvY2VkdXJlIikpKQ0KICAgIGFuZCBleGlzdHMoDQogICAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUA0KICAgICAgd2hlcmUgTkhTTkhlbHBlcnMuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoT2JzZXJ2YXRpb25zLmVmZmVjdGl2ZSkgb3ZlcmxhcHMgSVAucGVyaW9kKQ0KICByZXR1cm4gT2JzZXJ2YXRpb25SZXNvdXJjZShPYnNlcnZhdGlvbnMsDQogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktb2JzZXJ2YXRpb24nfX0sDQogIHsiaW1hZ2luZyIsICJwcm9jZWR1cmUiLCAidml0YWwtc2lnbnMiLCAibGFib3JhdG9yeSJ9KQ0KDQpkZWZpbmUgIlNERSBQcm9jZWR1cmUiOg0KICBbUHJvY2VkdXJlXSBQcm9jZWR1cmVzIA0KICB3aGVyZSBleGlzdHMoDQogICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVANCiAgICB3aGVyZSBOSFNOSGVscGVycy4iTm9ybWFsaXplIEludGVydmFsIihQcm9jZWR1cmVzLnBlcmZvcm1lZCkgb3ZlcmxhcHMgSVAucGVyaW9kKQ0KICAgICByZXR1cm4gUHJvY2VkdXJlUmVzb3VyY2UoUHJvY2VkdXJlcywNCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1wcm9jZWR1cmUnfX0sDQogIHsiU3VyZ2ljYWwgcHJvY2VkdXJlIiwgIkRpYWdub3N0aWMgaW50ZW50IChxdWFsaWZpZXIgdmFsdWUpIn0pDQoNCmRlZmluZSAiU0RFIFNwZWNpbWVuIjoNCiAgW1NwZWNpbWVuXSBTcGVjaW1lbnMNCiAgd2hlcmUgZXhpc3RzKA0KICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQDQogICAgd2hlcmUgTkhTTkhlbHBlcnMuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoU3BlY2ltZW5zLmNvbGxlY3Rpb24uY29sbGVjdGVkKSBvdmVybGFwcyBJUC5wZXJpb2QNCiAgKQ0KICByZXR1cm4gU3BlY2ltZW5SZXNvdXJjZShTcGVjaW1lbnMsDQogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly93d3cuY2RjLmdvdi9uaHNuL2ZoaXJwb3J0YWwvZHFtL2lnL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1vbnRobHktc3BlY2ltZW4nfX0pDQoNCmRlZmluZSAiU0RFIFNlcnZpY2UgUmVxdWVzdCI6DQogIFtTZXJ2aWNlUmVxdWVzdF0gU2VydmljZVJlcXVlc3RzDQogIHdoZXJlIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUA0KICAgIHdoZXJlIFNlcnZpY2VSZXF1ZXN0cy5hdXRob3JlZE9uIGR1cmluZyBJUC5wZXJpb2QpDQogIHJldHVybiBTZXJ2aWNlUmVxdWVzdFJlc291cmNlKFNlcnZpY2VSZXF1ZXN0cywNCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL3d3dy5jZGMuZ292L25oc24vZmhpcnBvcnRhbC9kcW0vaWcvU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtbW9udGhseS1zZXJ2aWNlcmVxdWVzdCd9fSwNCiAgeyJMYWJvcmF0b3J5IHByb2NlZHVyZSIsICJTdXJnaWNhbCBwcm9jZWR1cmUiLCAiSW1hZ2luZyJ9KQ0KDQpkZWZpbmUgIlNERSBNaW5pbWFsIFBhdGllbnQiOg0KICBQYXRpZW50IHANCiAgcmV0dXJuIFNoYXJlZFJlc291cmNlLlBhdGllbnRSZXNvdXJjZShwLA0KICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vd3d3LmNkYy5nb3Yvbmhzbi9maGlycG9ydGFsL2RxbS9pZy9TdHJ1Y3R1cmVEZWZpbml0aW9uL2Nyb3NzLW1lYXN1cmUtcGF0aWVudCd9fSkNCg0KLy8NCi8vRnVuY3Rpb25zDQovLw0KZGVmaW5lIGZ1bmN0aW9uICJDaGVja0lQIihlbmNvdW50ZXIgRW5jb3VudGVyKToNCiAgZXhpc3RzKCJJbml0aWFsIFBvcHVsYXRpb24iIElQDQogIHdoZXJlIGVuY291bnRlci5pZCA9IElQLmlkKQ0KDQpkZWZpbmUgZnVuY3Rpb24gIkdldE1lZGljYXRpb25Gcm9tIihjaG9pY2UgQ2hvaWNlPEZISVIuQ29kZWFibGVDb25jZXB0LCBGSElSLlJlZmVyZW5jZT4pOg0KICBjYXNlDQogICAgd2hlbiBjaG9pY2UgaXMgRkhJUi5SZWZlcmVuY2UgdGhlbg0KICAgICAgR2V0TWVkaWNhdGlvbihjaG9pY2UgYXMgRkhJUi5SZWZlcmVuY2UpDQogICAgZWxzZQ0KICAgICAgbnVsbA0KICBlbmQNCg0KZGVmaW5lIGZ1bmN0aW9uICJHZXRNZWRpY2F0aW9uIihyZWZlcmVuY2UgUmVmZXJlbmNlKToNCiAgc2luZ2xldG9uIGZyb20gKA0KICAgIFtNZWRpY2F0aW9uXSBNZWRpY2F0aW9ucw0KICAgIHdoZXJlIE1lZGljYXRpb25zLmlkID0gTkhTTkhlbHBlcnMuR2V0SWQocmVmZXJlbmNlLnJlZmVyZW5jZSkNCiAgKQ0KDQpkZWZpbmUgZnVuY3Rpb24gIkdldENvbmRpdGlvbiIocmVmZXJlbmNlIFJlZmVyZW5jZSk6DQogIHNpbmdsZXRvbiBmcm9tICgNCiAgICAiQ29uZGl0aW9ucyIgQ29uZGl0aW9ucw0KICAgIHdoZXJlIENvbmRpdGlvbnMuaWQgPSBOSFNOSGVscGVycy5HZXRJZChyZWZlcmVuY2UucmVmZXJlbmNlKQ0KICApDQoNCmRlZmluZSBmdW5jdGlvbiAiR2V0RW5jb3VudGVyIihyZWZlcmVuY2UgUmVmZXJlbmNlKToNCiAgc2luZ2xldG9uIGZyb20gKA0KICAgICJFbmNvdW50ZXJzIiBFbmNvdW50ZXJzDQogICAgd2hlcmUgRW5jb3VudGVycy5pZCA9IE5IU05IZWxwZXJzLkdldElkKHJlZmVyZW5jZS5yZWZlcmVuY2UpDQogICkNCg0KZGVmaW5lIGZ1bmN0aW9uIFJlbW92ZVVuYWNjZXB0ZWQoY29kZXMgTGlzdDxGSElSLkNvZGVhYmxlQ29uY2VwdD4sIGFjY2VwdGVkIExpc3Q8U3lzdGVtLkNvZGU+KToNCiAgY29kZXMgYw0KICB3aGVyZSBleGlzdHMoDQogICAgYWNjZXB0ZWQgYQ0KICAgIHdoZXJlIGMgfiBhDQogICkNCg0KZGVmaW5lIGZ1bmN0aW9uIEZpbHRlckNvZGVhYmxlQ29uY2VwdHMoY29kZXMgTGlzdDxGSElSLkNvZGVhYmxlQ29uY2VwdD4sIGFjY2VwdGVkIExpc3Q8U3lzdGVtLkNvZGU+KToNCiAgaWYgQ291bnQoYWNjZXB0ZWQpID4gMA0KICAgIHRoZW4gUmVtb3ZlVW5hY2NlcHRlZChjb2RlcywgYWNjZXB0ZWQpDQogIGVsc2UgY29kZXMgICAgDQoNCi8vDQovL01lYXN1cmUgU3BlY2lmaWMgUmVzb3VyY2UgQ3JlYXRpb24gRnVuY3Rpb25zDQovLw0KDQpkZWZpbmUgZnVuY3Rpb24gQ29uZGl0aW9uUmVzb3VyY2UoY29uZGl0aW9uIENvbmRpdGlvbiwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4sIGFjY2VwdGVkQ2F0ZWdvcmllcyBMaXN0PFN5c3RlbS5Db2RlPik6DQogIGNvbmRpdGlvbiBjDQogIHJldHVybiBDb25kaXRpb257DQogICAgaWQ6IEZISVIuaWQge3ZhbHVlOiAnTENSLScgKyBjLmlkfSwNCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChjLCBwcm9maWxlVVJMcyksDQogICAgZXh0ZW5zaW9uOiBjLmV4dGVuc2lvbiwNCiAgICBjbGluaWNhbFN0YXR1czogYy5jbGluaWNhbFN0YXR1cywNCiAgICB2ZXJpZmljYXRpb25TdGF0dXM6IGMudmVyaWZpY2F0aW9uU3RhdHVzLA0KICAgIGNhdGVnb3J5OiBGaWx0ZXJDb2RlYWJsZUNvbmNlcHRzKGMuY2F0ZWdvcnksIGFjY2VwdGVkQ2F0ZWdvcmllcyksDQogICAgY29kZTogYy5jb2RlLA0KICAgIHN1YmplY3Q6IGMuc3ViamVjdCwNCiAgICBlbmNvdW50ZXI6IGMuZW5jb3VudGVyLA0KICAgIG9uc2V0OiBjLm9uc2V0LA0KICAgIGFiYXRlbWVudDogYy5hYmF0ZW1lbnQsDQogICAgcmVjb3JkZWREYXRlOiBjLnJlY29yZGVkRGF0ZQ0KICB9DQoNCmRlZmluZSBmdW5jdGlvbiBDb3ZlcmFnZVJlc291cmNlKGNvdmVyYWdlIENvdmVyYWdlLCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPik6DQogIGNvdmVyYWdlIGMNCiAgcmV0dXJuIENvdmVyYWdlew0KICAgIGlkOiBGSElSLmlke3ZhbHVlOiAnTENSLScgKyBjLmlkfSwNCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChjLCBwcm9maWxlVVJMcyksDQogICAgZXh0ZW5zaW9uOiBjLmV4dGVuc2lvbiwNCiAgICBzdGF0dXM6IGMuc3RhdHVzLA0KICAgIHR5cGU6IGMudHlwZSwNCiAgICBiZW5lZmljaWFyeTogYy5iZW5lZmljaWFyeSwNCiAgICBwZXJpb2Q6IGMucGVyaW9kLA0KICAgIHBheW9yOiBjLnBheW9yDQogIH0NCg0KZGVmaW5lIGZ1bmN0aW9uIERldmljZVJlc291cmNlKGRldmljZSBEZXZpY2UsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+KToNCiAgZGV2aWNlIGQNCiAgcmV0dXJuIERldmljZXsNCiAgICBpZDogRkhJUi5pZHt2YWx1ZTogJ0xDUi0nICsgZC5pZH0sDQogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQoZCwgcHJvZmlsZVVSTHMpLA0KICAgIGV4dGVuc2lvbjogZC5leHRlbnNpb24sDQogICAgc3RhdHVzOiBkLnN0YXR1cywNCiAgICBleHBpcmF0aW9uRGF0ZTogZC5leHBpcmF0aW9uRGF0ZSwNCiAgICBsb3ROdW1iZXI6IGQubG90TnVtYmVyLA0KICAgIHNlcmlhbE51bWJlcjogZC5zZXJpYWxOdW1iZXIsDQogICAgbW9kZWxOdW1iZXI6IGQubW9kZWxOdW1iZXIsDQogICAgcGFydE51bWJlcjogZC5wYXJ0TnVtYmVyLA0KICAgIHR5cGU6IGQudHlwZSwNCiAgICBwYXRpZW50OiBkLnBhdGllbnQsDQogICAgcGFyZW50OiBkLnBhcmVudA0KICB9DQoNCmRlZmluZSBmdW5jdGlvbiBEaWFnbm9zdGljUmVwb3J0Q29kaW5nKGNvZGluZyBMaXN0PENvZGluZz4pOg0KICBjb2RpbmcgYw0KICByZXR1cm4gQ29kaW5new0KICAgIHN5c3RlbTogYy5zeXN0ZW0sDQogICAgdmVyc2lvbjogYy52ZXJzaW9uLA0KICAgIGNvZGU6IGMuY29kZSwNCiAgICBkaXNwbGF5OiBjLmRpc3BsYXkNCiAgfQ0KDQpkZWZpbmUgZnVuY3Rpb24gRGlhZ25vc3RpY1JlcG9ydENhdGVnb3J5KGNhdGVnb3J5IExpc3Q8Q29kZWFibGVDb25jZXB0Pik6DQogIGNhdGVnb3J5IGMNCiAgcmV0dXJuIENvZGVhYmxlQ29uY2VwdHsNCiAgICBjb2Rpbmc6IERpYWdub3N0aWNSZXBvcnRDb2RpbmcoYy5jb2RpbmcpDQogIH0NCg0KZGVmaW5lIGZ1bmN0aW9uIERpYWdub3N0aWNSZXBvcnRMYWJSZXNvdXJjZShkaWFnbm9zdGljUmVwb3J0IERpYWdub3N0aWNSZXBvcnQsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+LCBhY2NlcHRlZENhdGVnb3JpZXMgTGlzdDxTeXN0ZW0uQ29kZT4pOg0KICBkaWFnbm9zdGljUmVwb3J0IGQNCiAgcmV0dXJuIERpYWdub3N0aWNSZXBvcnR7DQogICAgaWQ6IEZISVIuaWR7dmFsdWU6ICdMQ1ItJyArIGQuaWR9LA0KICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KGQsIHByb2ZpbGVVUkxzKSwNCiAgICBleHRlbnNpb246IGQuZXh0ZW5zaW9uLA0KICAgIGJhc2VkT246IGQuYmFzZWRPbiwNCiAgICBzdGF0dXM6IGQuc3RhdHVzLA0KICAgIGNhdGVnb3J5OiBGaWx0ZXJDb2RlYWJsZUNvbmNlcHRzKERpYWdub3N0aWNSZXBvcnRDYXRlZ29yeShkLmNhdGVnb3J5KSwgYWNjZXB0ZWRDYXRlZ29yaWVzKSwNCiAgICBjb2RlOiBkLmNvZGUsDQogICAgc3ViamVjdDogZC5zdWJqZWN0LA0KICAgIGVuY291bnRlcjogZC5lbmNvdW50ZXIsDQogICAgZWZmZWN0aXZlOiBkLmVmZmVjdGl2ZSwNCiAgICBpc3N1ZWQ6IGQuaXNzdWVkLA0KICAgIHNwZWNpbWVuOiBkLnNwZWNpbWVuLA0KICAgIHJlc3VsdDogZC5yZXN1bHQsDQogICAgY29uY2x1c2lvbjogZC5jb25jbHVzaW9uLA0KICAgIGNvbmNsdXNpb25Db2RlOiBkLmNvbmNsdXNpb25Db2RlDQogIH0NCg0KZGVmaW5lIGZ1bmN0aW9uIERpYWdub3N0aWNSZXBvcnRSZXNvdXJjZShkaWFnbm9zdGljUmVwb3J0IERpYWdub3N0aWNSZXBvcnQsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+LCBhY2NlcHRlZENhdGVnb3JpZXMgTGlzdDxTeXN0ZW0uQ29kZT4pOg0KICBkaWFnbm9zdGljUmVwb3J0IGQNCiAgcmV0dXJuIERpYWdub3N0aWNSZXBvcnR7DQogICAgaWQ6IEZISVIuaWR7dmFsdWU6ICdMQ1ItJyArIGQuaWR9LA0KICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KGQsIHByb2ZpbGVVUkxzKSwNCiAgICBleHRlbnNpb246IGQuZXh0ZW5zaW9uLA0KICAgIGJhc2VkT246IGQuYmFzZWRPbiwNCiAgICBzdGF0dXM6IGQuc3RhdHVzLA0KICAgIGNhdGVnb3J5OiBGaWx0ZXJDb2RlYWJsZUNvbmNlcHRzKGQuY2F0ZWdvcnksIGFjY2VwdGVkQ2F0ZWdvcmllcyksDQogICAgY29kZTogZC5jb2RlLA0KICAgIHN1YmplY3Q6IGQuc3ViamVjdCwNCiAgICBlbmNvdW50ZXI6IGQuZW5jb3VudGVyLA0KICAgIGVmZmVjdGl2ZTogZC5lZmZlY3RpdmUsDQogICAgaXNzdWVkOiBkLmlzc3VlZCwNCiAgICBzcGVjaW1lbjogZC5zcGVjaW1lbiwNCiAgICByZXN1bHQ6IGQucmVzdWx0LA0KICAgIGNvbmNsdXNpb246IGQuY29uY2x1c2lvbiwNCiAgICBjb25jbHVzaW9uQ29kZTogZC5jb25jbHVzaW9uQ29kZQ0KICB9DQoNCmRlZmluZSBmdW5jdGlvbiBFbmNvdW50ZXJIb3NwaXRhbGl6YXRpb24oaG9zcGl0YWxpemF0aW9uIEZISVIuRW5jb3VudGVyLkhvc3BpdGFsaXphdGlvbik6DQogIGhvc3BpdGFsaXphdGlvbiBoDQogIHJldHVybiBGSElSLkVuY291bnRlci5Ib3NwaXRhbGl6YXRpb257DQogICAgZXh0ZW5zaW9uOiBoLmV4dGVuc2lvbiwNCiAgICBvcmlnaW46IGgub3JpZ2luLA0KICAgIGFkbWl0U291cmNlOiBoLmFkbWl0U291cmNlLA0KICAgIHJlQWRtaXNzaW9uOiBoLnJlQWRtaXNzaW9uLA0KICAgIGRpZXRQcmVmZXJlbmNlOiBoLmRpZXRQcmVmZXJlbmNlLA0KICAgIGRpc2NoYXJnZURpc3Bvc2l0aW9uOiBoLmRpc2NoYXJnZURpc3Bvc2l0aW9uDQogIH0NCg0KZGVmaW5lIGZ1bmN0aW9uIEVuY291bnRlclJlc291cmNlKGVuY291bnRlciBFbmNvdW50ZXIsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+KToNCiAgZW5jb3VudGVyIGUNCiAgcmV0dXJuIEVuY291bnRlcnsNCiAgICBpZDogRkhJUi5pZHt2YWx1ZTogJ0xDUi0nICsgZS5pZH0sDQogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQoZSwgcHJvZmlsZVVSTHMpLA0KICAgIGV4dGVuc2lvbjogZS5leHRlbnNpb24sDQogICAgaWRlbnRpZmllcjogU2hhcmVkUmVzb3VyY2UuRW5jb3VudGVySWRlbnRpZmllcihlLmlkZW50aWZpZXIpLA0KICAgIHN0YXR1czogZS5zdGF0dXMsDQogICAgc3RhdHVzSGlzdG9yeTogU2hhcmVkUmVzb3VyY2UuRW5jb3VudGVyU3RhdHVzSGlzdG9yeShlLnN0YXR1c0hpc3RvcnkpLA0KICAgIGNsYXNzOiBlLmNsYXNzLA0KICAgIGNsYXNzSGlzdG9yeTogU2hhcmVkUmVzb3VyY2UuRW5jb3VudGVyQ2xhc3NIaXN0b3J5KGUuY2xhc3NIaXN0b3J5KSwNCiAgICB0eXBlOiBlLnR5cGUsDQogICAgc3ViamVjdDogZS5zdWJqZWN0LA0KICAgIHBlcmlvZDogZS5wZXJpb2QsDQogICAgcmVhc29uQ29kZTogZS5yZWFzb25Db2RlLA0KICAgIGRpYWdub3NpczogU2hhcmVkUmVzb3VyY2UuRW5jb3VudGVyRGlhZ25vc2lzKGUuZGlhZ25vc2lzKSwNCiAgICBob3NwaXRhbGl6YXRpb246IEVuY291bnRlckhvc3BpdGFsaXphdGlvbihlLmhvc3BpdGFsaXphdGlvbiksDQogICAgbG9jYXRpb246IFNoYXJlZFJlc291cmNlLkVuY291bnRlckxvY2F0aW9uKGUubG9jYXRpb24pLA0KICAgIHBhcnRPZjogZS5wYXJ0T2YNCiAgfQ0KDQpkZWZpbmUgZnVuY3Rpb24gTG9jYXRpb25SZXNvdXJjZShsb2NhdGlvbiBMb2NhdGlvbiwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4pOg0KICBsb2NhdGlvbiBsDQogIHJldHVybiBMb2NhdGlvbnsNCiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIGwuaWR9LA0KICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KGwsIHByb2ZpbGVVUkxzKSwNCiAgICBleHRlbnNpb246IGwuZXh0ZW5zaW9uLA0KICAgIHN0YXR1czogbC5zdGF0dXMsDQogICAgbmFtZTogbC5uYW1lLA0KICAgIGFsaWFzOiBsLmFsaWFzLA0KICAgIHR5cGU6IGwudHlwZSwNCiAgICBwaHlzaWNhbFR5cGU6IGwucGh5c2ljYWxUeXBlLA0KICAgIG1hbmFnaW5nT3JnYW5pemF0aW9uOiBsLm1hbmFnaW5nT3JnYW5pemF0aW9uLA0KICAgIHBhcnRPZjogbC5wYXJ0T2YNCiAgfQ0KDQpkZWZpbmUgZnVuY3Rpb24gTWVkaWNhdGlvblJlcXVlc3RSZXBlYXQocmVwZWF0IEZISVIuVGltaW5nLlJlcGVhdCk6DQogIHJlcGVhdCByDQogIHJldHVybiBGSElSLlRpbWluZy5SZXBlYXR7DQogICAgYm91bmRzOiByLmJvdW5kcywNCiAgICBjb3VudDogci5jb3VudCwNCiAgICBjb3VudE1heDogci5jb3VudE1heCwNCiAgICAiZHVyYXRpb24iOiByLiJkdXJhdGlvbiIsDQogICAgZHVyYXRpb25NYXg6IHIuZHVyYXRpb25NYXgsDQogICAgZHVyYXRpb25Vbml0OiByLmR1cmF0aW9uVW5pdCwNCiAgICBmcmVxdWVuY3k6IHIuZnJlcXVlbmN5LA0KICAgIGZyZXF1ZW5jeU1heDogci5mcmVxdWVuY3lNYXgsDQogICAgcGVyaW9kOiByLnBlcmlvZCwNCiAgICBwZXJpb2RNYXg6IHIucGVyaW9kTWF4LA0KICAgIHBlcmlvZFVuaXQ6IHIucGVyaW9kVW5pdCwNCiAgICBkYXlPZldlZWs6IHIuZGF5T2ZXZWVrLA0KICAgIHRpbWVPZkRheTogci50aW1lT2ZEYXksDQogICAgIndoZW4iOiByLiJ3aGVuIiwNCiAgICBvZmZzZXQ6IHIub2Zmc2V0DQogIH0NCg0KZGVmaW5lIGZ1bmN0aW9uIE1lZGljYXRpb25SZXF1ZXN0VGltaW5nKHRpbWluZyBGSElSLlRpbWluZyk6DQogIHRpbWluZyB0DQogIHJldHVybiBGSElSLlRpbWluZ3sNCiAgICBldmVudDogdC5ldmVudCwNCiAgICByZXBlYXQ6IE1lZGljYXRpb25SZXF1ZXN0UmVwZWF0KHQucmVwZWF0KSwNCiAgICBjb2RlOiB0LmNvZGUNCiAgfQ0KDQpkZWZpbmUgZnVuY3Rpb24gTWVkaWNhdGlvblJlcXVlc3REb3NhZ2VJbnN0cnVjdGlvbihkb3NhZ2VJbnN0cnVjdGlvbiBMaXN0PEZISVIuRG9zYWdlPik6DQogIGRvc2FnZUluc3RydWN0aW9uIGRJDQogIHJldHVybiBGSElSLkRvc2FnZXsNCiAgICB0ZXh0OiBkSS50ZXh0LA0KICAgIHBhdGllbnRJbnN0cnVjdGlvbjogZEkucGF0aWVudEluc3RydWN0aW9uLA0KICAgIHRpbWluZzogTWVkaWNhdGlvblJlcXVlc3RUaW1pbmcoZEkudGltaW5nKSwNCiAgICBhc05lZWRlZDogZEkuYXNOZWVkZWQsDQogICAgc2l0ZTogZEkuc2l0ZSwNCiAgICByb3V0ZTogZEkucm91dGUsDQogICAgbWV0aG9kOiBkSS5tZXRob2QsDQogICAgZG9zZUFuZFJhdGU6IFNoYXJlZFJlc291cmNlLk1lZGljYXRpb25SZXF1ZXN0RG9zZUFuZFJhdGUoZEkuZG9zZUFuZFJhdGUpDQogIH0NCg0KZGVmaW5lIGZ1bmN0aW9uIE1lZGljYXRpb25SZXF1ZXN0UmVzb3VyY2UobWVkaWNhdGlvblJlcXVlc3QgTWVkaWNhdGlvblJlcXVlc3QsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+LCBhY2NlcHRlZENhdGVnb3JpZXMgTGlzdDxTeXN0ZW0uQ29kZT4pOg0KICBtZWRpY2F0aW9uUmVxdWVzdCBtDQogIHJldHVybiBNZWRpY2F0aW9uUmVxdWVzdHsNCiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIG0uaWR9LA0KICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KG1lZGljYXRpb25SZXF1ZXN0LCBwcm9maWxlVVJMcyksDQogICAgZXh0ZW5zaW9uOiBtLmV4dGVuc2lvbiwNCiAgICBzdGF0dXM6IG0uc3RhdHVzLA0KICAgIHN0YXR1c1JlYXNvbjogbS5zdGF0dXNSZWFzb24sDQogICAgaW50ZW50OiBtLmludGVudCwNCiAgICBjYXRlZ29yeTogRmlsdGVyQ29kZWFibGVDb25jZXB0cyhtLmNhdGVnb3J5LCBhY2NlcHRlZENhdGVnb3JpZXMpLA0KICAgIHByaW9yaXR5OiBtLnByaW9yaXR5LA0KICAgIGRvTm90UGVyZm9ybTogbS5kb05vdFBlcmZvcm0sDQogICAgcmVwb3J0ZWQ6IG0ucmVwb3J0ZWQsDQogICAgbWVkaWNhdGlvbjogbS5tZWRpY2F0aW9uLA0KICAgIHN1YmplY3Q6IG0uc3ViamVjdCwNCiAgICBlbmNvdW50ZXI6IG0uZW5jb3VudGVyLA0KICAgIGF1dGhvcmVkT246IG0uYXV0aG9yZWRPbiwNCiAgICByZXF1ZXN0ZXI6IG0ucmVxdWVzdGVyLA0KICAgIHJlY29yZGVyOiBtLnJlY29yZGVyLA0KICAgIHJlYXNvbkNvZGU6IG0ucmVhc29uQ29kZSwNCiAgICByZWFzb25SZWZlcmVuY2U6IG0ucmVhc29uUmVmZXJlbmNlLA0KICAgIGluc3RhbnRpYXRlc0Nhbm9uaWNhbDogbS5pbnN0YW50aWF0ZXNDYW5vbmljYWwsDQogICAgaW5zdGFudGlhdGVzVXJpOiBtLmluc3RhbnRpYXRlc1VyaSwNCiAgICBjb3Vyc2VPZlRoZXJhcHlUeXBlOiBtLmNvdXJzZU9mVGhlcmFweVR5cGUsDQogICAgZG9zYWdlSW5zdHJ1Y3Rpb246IFNoYXJlZFJlc291cmNlLk1lZGljYXRpb25SZXF1ZXN0RG9zYWdlSW5zdHJ1Y3Rpb24obS5kb3NhZ2VJbnN0cnVjdGlvbikNCiAgfQ0KDQogIGRlZmluZSBmdW5jdGlvbiBNZWRpY2F0aW9uQWRtaW5pc3RyYXRpb25SZXNvdXJjZShtZWRpY2F0aW9uQWRtaW5pc3RyYXRpb24gTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uLCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPiwgYWNjZXB0ZWRDYXRlZ29yaWVzIExpc3Q8U3lzdGVtLkNvZGU+KToNCiAgbWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uIG0NCiAgcmV0dXJuIE1lZGljYXRpb25BZG1pbmlzdHJhdGlvbnsNCiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIG0uaWR9LA0KICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KG0sIHByb2ZpbGVVUkxzKSwNCiAgICBleHRlbnNpb246IG0uZXh0ZW5zaW9uLA0KICAgIGluc3RhbnRpYXRlczogbS5pbnN0YW50aWF0ZXMsDQogICAgcGFydE9mOiBtLnBhcnRPZiwNCiAgICBzdGF0dXM6IG0uc3RhdHVzLA0KICAgIHN0YXR1c1JlYXNvbjogbS5zdGF0dXNSZWFzb24sDQogICAgY2F0ZWdvcnk6IEZpbHRlckNvZGVhYmxlQ29uY2VwdHMoe20uY2F0ZWdvcnl9LCBhY2NlcHRlZENhdGVnb3JpZXMpWzBdLA0KICAgIG1lZGljYXRpb246IG0ubWVkaWNhdGlvbiwNCiAgICBzdWJqZWN0OiBtLnN1YmplY3QsDQogICAgY29udGV4dDogbS5jb250ZXh0LA0KICAgIHN1cHBvcnRpbmdJbmZvcm1hdGlvbjogbS5zdXBwb3J0aW5nSW5mb3JtYXRpb24sDQogICAgZWZmZWN0aXZlOiBtLmVmZmVjdGl2ZSwNCiAgICBwZXJmb3JtZXI6IFNoYXJlZFJlc291cmNlLk1lZGljYXRpb25BZG1pbmlzdHJhdGlvblBlcmZvcm1lcihtLnBlcmZvcm1lciksDQogICAgcmVhc29uQ29kZTogbS5yZWFzb25Db2RlLA0KICAgIHJlYXNvblJlZmVyZW5jZTogbS5yZWFzb25SZWZlcmVuY2UsDQogICAgcmVxdWVzdDogbS5yZXF1ZXN0LA0KICAgIGRldmljZTogbS5kZXZpY2UsDQogICAgbm90ZTogbS5ub3RlLA0KICAgIGRvc2FnZTogU2hhcmVkUmVzb3VyY2UuTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uRG9zYWdlKG0uZG9zYWdlKSwNCiAgICBldmVudEhpc3Rvcnk6IG0uZXZlbnRIaXN0b3J5DQogIH0NCg0KZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uTGFiUmVmZXJlbmNlUmFuZ2UocmVmZXJlbmNlUmFuZ2UgTGlzdDxGSElSLk9ic2VydmF0aW9uLlJlZmVyZW5jZVJhbmdlPik6DQogIHJlZmVyZW5jZVJhbmdlIHJSDQogIHJldHVybiBGSElSLk9ic2VydmF0aW9uLlJlZmVyZW5jZVJhbmdlew0KICAgIGxvdzogclIubG93LA0KICAgIGhpZ2g6IHJSLmhpZ2gsDQogICAgdHlwZTogclIudHlwZSwNCiAgICBhcHBsaWVzVG86IHJSLmFwcGxpZXNUbywNCiAgICBhZ2U6IHJSLmFnZQ0KICB9DQoNCmRlZmluZSBmdW5jdGlvbiBPYnNlcnZhdGlvbkxhYkNvZGluZyhjb2RpbmcgTGlzdDxDb2Rpbmc+KToNCiAgY29kaW5nIGMNCiAgcmV0dXJuIENvZGluZ3sNCiAgICBzeXN0ZW06IGMuc3lzdGVtLA0KICAgIHZlcnNpb246IGMudmVyc2lvbiwNCiAgICBjb2RlOiBjLmNvZGUsDQogICAgZGlzcGxheTogYy5kaXNwbGF5LA0KICAgIHVzZXJTZWxlY3RlZDogYy51c2VyU2VsZWN0ZWQNCiAgfQ0KDQpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25MYWJDYXRlZ29yeShjYXRlZ29yeSBMaXN0PENvZGVhYmxlQ29uY2VwdD4pOg0KICBjYXRlZ29yeSBjDQogIHJldHVybiBDb2RlYWJsZUNvbmNlcHR7DQogICAgY29kaW5nOiBPYnNlcnZhdGlvbkxhYkNvZGluZyhjLmNvZGluZyksDQogICAgdGV4dDogYy50ZXh0DQogIH0NCg0KZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uTGFiUmVzb3VyY2Uob2JzZXJ2YXRpb24gT2JzZXJ2YXRpb24sIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+LCBhY2NlcHRlZENhdGVnb3JpZXMgTGlzdDxTeXN0ZW0uQ29kZT4pOg0KICBvYnNlcnZhdGlvbiBvDQogIHJldHVybiBPYnNlcnZhdGlvbnsNCiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIG8uaWR9LA0KICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KG8sIHByb2ZpbGVVUkxzKSwNCiAgICBleHRlbnNpb246IG8uZXh0ZW5zaW9uLA0KICAgIHBhcnRPZjogby5wYXJ0T2YsDQogICAgc3RhdHVzOiBvLnN0YXR1cywNCiAgICBjYXRlZ29yeTogRmlsdGVyQ29kZWFibGVDb25jZXB0cyhPYnNlcnZhdGlvbkxhYkNhdGVnb3J5KG8uY2F0ZWdvcnkpLCBhY2NlcHRlZENhdGVnb3JpZXMpLA0KICAgIGNvZGU6IG8uY29kZSwNCiAgICBzdWJqZWN0OiBvLnN1YmplY3QsDQogICAgZW5jb3VudGVyOiBvLmVuY291bnRlciwNCiAgICBlZmZlY3RpdmU6IG8uZWZmZWN0aXZlLA0KICAgIGlzc3VlZDogby5pc3N1ZWQsDQogICAgdmFsdWU6IG8udmFsdWUsDQogICAgZGF0YUFic2VudFJlYXNvbjogby5kYXRhQWJzZW50UmVhc29uLA0KICAgIGludGVycHJldGF0aW9uOiBvLmludGVycHJldGF0aW9uLA0KICAgIGJvZHlTaXRlOiBvLmJvZHlTaXRlLA0KICAgIG1ldGhvZDogby5tZXRob2QsDQogICAgc3BlY2ltZW46IG8uc3BlY2ltZW4sDQogICAgcmVmZXJlbmNlUmFuZ2U6IE9ic2VydmF0aW9uTGFiUmVmZXJlbmNlUmFuZ2Uoby5yZWZlcmVuY2VSYW5nZSksDQogICAgaGFzTWVtYmVyOiBvLmhhc01lbWJlciwNCiAgICBkZXJpdmVkRnJvbTogby5kZXJpdmVkRnJvbSwNCiAgICBjb21wb25lbnQ6IFNoYXJlZFJlc291cmNlLk9ic2VydmF0aW9uQ29tcG9uZW50KG8uY29tcG9uZW50KQ0KICB9DQoNCmRlZmluZSBmdW5jdGlvbiBPYnNlcnZhdGlvblJlZmVyZW5jZVJhbmdlKHJlZmVyZW5jZVJhbmdlIExpc3Q8RkhJUi5PYnNlcnZhdGlvbi5SZWZlcmVuY2VSYW5nZT4pOg0KICByZWZlcmVuY2VSYW5nZSByUg0KICByZXR1cm4gRkhJUi5PYnNlcnZhdGlvbi5SZWZlcmVuY2VSYW5nZXsNCiAgICBsb3c6IHJSLmxvdywNCiAgICBoaWdoOiByUi5oaWdoLA0KICAgIHR5cGU6IHJSLnR5cGUsDQogICAgYXBwbGllc1RvOiByUi5hcHBsaWVzVG8sDQogICAgYWdlOiByUi5hZ2UNCiAgfQ0KDQpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25SZXNvdXJjZShvYnNlcnZhdGlvbiBPYnNlcnZhdGlvbiwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4sIGFjY2VwdGVkQ2F0ZWdvcmllcyBMaXN0PFN5c3RlbS5Db2RlPik6DQogIG9ic2VydmF0aW9uIG8NCiAgcmV0dXJuIE9ic2VydmF0aW9uew0KICAgIGlkOiBGSElSLmlkIHt2YWx1ZTogJ0xDUi0nICsgby5pZH0sDQogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQobywgcHJvZmlsZVVSTHMpLA0KICAgIGV4dGVuc2lvbjogby5leHRlbnNpb24sDQogICAgcGFydE9mOiBvLnBhcnRPZiwNCiAgICBzdGF0dXM6IG8uc3RhdHVzLA0KICAgIGNhdGVnb3J5OiBGaWx0ZXJDb2RlYWJsZUNvbmNlcHRzKG8uY2F0ZWdvcnksIGFjY2VwdGVkQ2F0ZWdvcmllcyksDQogICAgY29kZTogby5jb2RlLA0KICAgIHN1YmplY3Q6IG8uc3ViamVjdCwNCiAgICBlbmNvdW50ZXI6IG8uZW5jb3VudGVyLA0KICAgIGVmZmVjdGl2ZTogby5lZmZlY3RpdmUsDQogICAgaXNzdWVkOiBvLmlzc3VlZCwNCiAgICB2YWx1ZTogby52YWx1ZSwNCiAgICBkYXRhQWJzZW50UmVhc29uOiBvLmRhdGFBYnNlbnRSZWFzb24sDQogICAgaW50ZXJwcmV0YXRpb246IG8uaW50ZXJwcmV0YXRpb24sDQogICAgYm9keVNpdGU6IG8uYm9keVNpdGUsDQogICAgbWV0aG9kOiBvLm1ldGhvZCwNCiAgICBzcGVjaW1lbjogby5zcGVjaW1lbiwNCiAgICByZWZlcmVuY2VSYW5nZTogT2JzZXJ2YXRpb25SZWZlcmVuY2VSYW5nZShvLnJlZmVyZW5jZVJhbmdlKSwNCiAgICBoYXNNZW1iZXI6IG8uaGFzTWVtYmVyLA0KICAgIGRlcml2ZWRGcm9tOiBvLmRlcml2ZWRGcm9tLA0KICAgIGNvbXBvbmVudDogU2hhcmVkUmVzb3VyY2UuT2JzZXJ2YXRpb25Db21wb25lbnQoby5jb21wb25lbnQpDQogIH0NCg0KZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uVml0YWxTaWduc0NvZGluZyhjb2RpbmcgTGlzdDxDb2Rpbmc+KToNCiAgY29kaW5nIGMNCiAgcmV0dXJuIENvZGluZ3sNCiAgICBzeXN0ZW06IGMuc3lzdGVtLA0KICAgIHZlcnNpb246IGMudmVyc2lvbiwNCiAgICBjb2RlOiBjLmNvZGUsDQogICAgZGlzcGxheTogYy5kaXNwbGF5LA0KICAgIHVzZXJTZWxlY3RlZDogYy51c2VyU2VsZWN0ZWQNCiAgfQ0KDQpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25WaXRhbFNpZ25zQ2F0ZWdvcnkoY2F0ZWdvcnkgTGlzdDxDb2RlYWJsZUNvbmNlcHQ+KToNCiAgY2F0ZWdvcnkgYw0KICByZXR1cm4gQ29kZWFibGVDb25jZXB0ew0KICAgIGNvZGluZzogT2JzZXJ2YXRpb25WaXRhbFNpZ25zQ29kaW5nKGMuY29kaW5nKSwNCiAgICB0ZXh0OiBjLnRleHQNCiAgfQ0KDQpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25WaXRhbFNpZ25zQ29tcG9uZW50KGNvbXBvbmVudCBMaXN0PEZISVIuT2JzZXJ2YXRpb24uQ29tcG9uZW50Pik6DQogIGNvbXBvbmVudCBjDQogIHJldHVybiBGSElSLk9ic2VydmF0aW9uLkNvbXBvbmVudHsNCiAgICBjb2RlOiBjLmNvZGUsDQogICAgdmFsdWU6IGMudmFsdWUsDQogICAgZGF0YUFic2VudFJlYXNvbjogYy5kYXRhQWJzZW50UmVhc29uLA0KICAgIGludGVycHJldGF0aW9uOiBjLmludGVycHJldGF0aW9uLA0KICAgIHJlZmVyZW5jZVJhbmdlOiBTaGFyZWRSZXNvdXJjZS5PYnNlcnZhdGlvblJlZmVyZW5jZVJhbmdlKGMucmVmZXJlbmNlUmFuZ2UpDQogIH0NCg0KZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uVml0YWxTaWduc1JlZmVyZW5jZVJhbmdlKHJlZmVyZW5jZVJhbmdlIExpc3Q8RkhJUi5PYnNlcnZhdGlvbi5SZWZlcmVuY2VSYW5nZT4pOg0KICByZWZlcmVuY2VSYW5nZSByUg0KICByZXR1cm4gRkhJUi5PYnNlcnZhdGlvbi5SZWZlcmVuY2VSYW5nZXsNCiAgICBsb3c6IHJSLmxvdywNCiAgICBoaWdoOiByUi5oaWdoLA0KICAgIHR5cGU6IHJSLnR5cGUsDQogICAgYXBwbGllc1RvOiByUi5hcHBsaWVzVG8sDQogICAgYWdlOiByUi5hZ2UNCiAgfQ0KDQpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25WaXRhbFNpZ25zUmVzb3VyY2Uob2JzZXJ2YXRpb24gT2JzZXJ2YXRpb24sIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+LCBhY2NlcHRlZENhdGVnb3JpZXMgTGlzdDxTeXN0ZW0uQ29kZT4pOg0KICBvYnNlcnZhdGlvbiBvDQogIHJldHVybiBPYnNlcnZhdGlvbnsNCiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIG8uaWR9LA0KICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KG8sIHByb2ZpbGVVUkxzKSwNCiAgICBleHRlbnNpb246IG8uZXh0ZW5zaW9uLA0KICAgIHBhcnRPZjogby5wYXJ0T2YsDQogICAgc3RhdHVzOiBvLnN0YXR1cywNCiAgICBjYXRlZ29yeTogRmlsdGVyQ29kZWFibGVDb25jZXB0cyhPYnNlcnZhdGlvblZpdGFsU2lnbnNDYXRlZ29yeShvLmNhdGVnb3J5KSwgYWNjZXB0ZWRDYXRlZ29yaWVzKSwNCiAgICBjb2RlOiBvLmNvZGUsDQogICAgc3ViamVjdDogby5zdWJqZWN0LA0KICAgIGVuY291bnRlcjogby5lbmNvdW50ZXIsDQogICAgZWZmZWN0aXZlOiBvLmVmZmVjdGl2ZSwNCiAgICBpc3N1ZWQ6IG8uaXNzdWVkLA0KICAgIHZhbHVlOiBvLnZhbHVlLA0KICAgIGRhdGFBYnNlbnRSZWFzb246IG8uZGF0YUFic2VudFJlYXNvbiwNCiAgICBpbnRlcnByZXRhdGlvbjogby5pbnRlcnByZXRhdGlvbiwNCiAgICBib2R5U2l0ZTogby5ib2R5U2l0ZSwNCiAgICBtZXRob2Q6IG8ubWV0aG9kLA0KICAgIHNwZWNpbWVuOiBvLnNwZWNpbWVuLA0KICAgIHJlZmVyZW5jZVJhbmdlOiBPYnNlcnZhdGlvblZpdGFsU2lnbnNSZWZlcmVuY2VSYW5nZShvLnJlZmVyZW5jZVJhbmdlKSwNCiAgICBoYXNNZW1iZXI6IG8uaGFzTWVtYmVyLA0KICAgIGRlcml2ZWRGcm9tOiBvLmRlcml2ZWRGcm9tLA0KICAgIGNvbXBvbmVudDogT2JzZXJ2YXRpb25WaXRhbFNpZ25zQ29tcG9uZW50KG8uY29tcG9uZW50KQ0KICB9DQoNCiBkZWZpbmUgZnVuY3Rpb24gIkdldFByb2NlZHVyZUV4dGVuc2lvbnMiKGRvbWFpblJlc291cmNlIERvbWFpblJlc291cmNlKToNCiAgZG9tYWluUmVzb3VyY2UuZXh0ZW5zaW9uIEUNCiAgICB3aGVyZSBFLnVybCAhPSAnaHR0cDovL2hsNy5vcmcvZmhpci91cy9xaWNvcmUvU3RydWN0dXJlRGVmaW5pdGlvbi9xaWNvcmUtcmVjb3JkZWQnDQogICAgIHJldHVybiBFDQogDQpkZWZpbmUgZnVuY3Rpb24gUHJvY2VkdXJlUmVzb3VyY2UocHJvY2VkdXJlIFByb2NlZHVyZSwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4sIGFjY2VwdGVkQ2F0ZWdvcmllcyBMaXN0PFN5c3RlbS5Db2RlPik6DQogIHByb2NlZHVyZSBwDQogIHJldHVybiBQcm9jZWR1cmV7DQogICAgaWQ6IEZISVIuaWQge3ZhbHVlOiAnTENSLScgKyBwLmlkfSwNCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChwLCBwcm9maWxlVVJMcyksDQogICAgZXh0ZW5zaW9uOiBHZXRQcm9jZWR1cmVFeHRlbnNpb25zKHApLCANCiAgICBiYXNlZE9uOiBwLmJhc2VkT24sDQogICAgcGFydE9mOiBwLnBhcnRPZiwNCiAgICBzdGF0dXM6IHAuc3RhdHVzLA0KICAgIGNhdGVnb3J5OiBGaWx0ZXJDb2RlYWJsZUNvbmNlcHRzKHtwLmNhdGVnb3J5fSwgYWNjZXB0ZWRDYXRlZ29yaWVzKVswXSwNCiAgICBjb2RlOiBwLmNvZGUsDQogICAgc3ViamVjdDogcC5zdWJqZWN0LA0KICAgIGVuY291bnRlcjogcC5lbmNvdW50ZXIsDQogICAgcGVyZm9ybWVkOiBwLnBlcmZvcm1lZCwNCiAgICBsb2NhdGlvbjogcC5sb2NhdGlvbiwNCiAgICByZWFzb25Db2RlOiBwLnJlYXNvbkNvZGUsDQogICAgcmVhc29uUmVmZXJlbmNlOiBwLnJlYXNvblJlZmVyZW5jZSwNCiAgICBib2R5U2l0ZTogcC5ib2R5U2l0ZQ0KICB9DQoNCiAgZGVmaW5lIGZ1bmN0aW9uIFNlcnZpY2VSZXF1ZXN0UmVzb3VyY2Uoc2VydmljZVJlcXVlc3QgU2VydmljZVJlcXVlc3QsIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+LCBhY2NlcHRlZENhdGVnb3JpZXMgTGlzdDxTeXN0ZW0uQ29kZT4pOg0KICBzZXJ2aWNlUmVxdWVzdCBzUg0KICByZXR1cm4gU2VydmljZVJlcXVlc3R7DQogICAgaWQ6IEZISVIuaWQge3ZhbHVlOiAnTENSLScgKyBzUi5pZH0sDQogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQoc1IsIHByb2ZpbGVVUkxzKSwNCiAgICBleHRlbnNpb246IHNSLmV4dGVuc2lvbiwNCiAgICBiYXNlZE9uOiBzUi5iYXNlZE9uLA0KICAgIHN0YXR1czogc1Iuc3RhdHVzLA0KICAgIGludGVudDogc1IuaW50ZW50LA0KICAgIGNhdGVnb3J5OiBGaWx0ZXJDb2RlYWJsZUNvbmNlcHRzKHNSLmNhdGVnb3J5LCBhY2NlcHRlZENhdGVnb3JpZXMpLA0KICAgIHByaW9yaXR5OiBzUi5wcmlvcml0eSwNCiAgICBkb05vdFBlcmZvcm06IHNSLmRvTm90UGVyZm9ybSwNCiAgICBjb2RlOiBzUi5jb2RlLA0KICAgIHF1YW50aXR5OiBzUi5xdWFudGl0eSwNCiAgICBzdWJqZWN0OiBzUi5zdWJqZWN0LA0KICAgIGVuY291bnRlcjogc1IuZW5jb3VudGVyLA0KICAgIG9jY3VycmVuY2U6IHNSLm9jY3VycmVuY2UsDQogICAgYXNOZWVkZWQ6IHNSLmFzTmVlZGVkLA0KICAgIGF1dGhvcmVkT246IHNSLmF1dGhvcmVkT24sDQogICAgc3BlY2ltZW46IHNSLnNwZWNpbWVuDQogIH0NCg0KICBkZWZpbmUgZnVuY3Rpb24gU3BlY2ltZW5Db2xsZWN0aW9uKGNvbGxlY3Rpb24gRkhJUi5TcGVjaW1lbi5Db2xsZWN0aW9uKToNCiAgY29sbGVjdGlvbiBjDQogIHJldHVybiBGSElSLlNwZWNpbWVuLkNvbGxlY3Rpb257DQogICAgY29sbGVjdG9yOiBjLmNvbGxlY3RvciwNCiAgICBjb2xsZWN0ZWQ6IGMuY29sbGVjdGVkLA0KICAgIHF1YW50aXR5OiBjLnF1YW50aXR5LA0KICAgIGJvZHlTaXRlOiBjLmJvZHlTaXRlDQogIH0NCg0KICBkZWZpbmUgZnVuY3Rpb24gU3BlY2ltZW5SZXNvdXJjZShzcGVjaW1lbiBTcGVjaW1lbiwgcHJvZmlsZVVSTHMgTGlzdDxGSElSLmNhbm9uaWNhbD4pOg0KICBzcGVjaW1lbiBzDQogIHJldHVybiBTcGVjaW1lbnsNCiAgICBpZDogRkhJUi5pZCB7dmFsdWU6ICdMQ1ItJyArIHMuaWR9LA0KICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KHMsIHByb2ZpbGVVUkxzKSwNCiAgICBleHRlbnNpb246IHMuZXh0ZW5zaW9uLA0KICAgIGlkZW50aWZpZXI6IHMuaWRlbnRpZmllciwNCiAgICBhY2Nlc3Npb25JZGVudGlmaWVyOiBzLmFjY2Vzc2lvbklkZW50aWZpZXIsDQogICAgc3RhdHVzOiBzLnN0YXR1cywNCiAgICB0eXBlOiBzLnR5cGUsDQogICAgc3ViamVjdDogcy5zdWJqZWN0LA0KICAgIHBhcmVudDogcy5wYXJlbnQsDQogICAgcmVxdWVzdDogcy5yZXF1ZXN0LA0KICAgIGNvbGxlY3Rpb246IFNwZWNpbWVuQ29sbGVjdGlvbihzLmNvbGxlY3Rpb24pLA0KICAgIG5vdGU6IHMubm90ZQ0KICB9"/>
            <url
                 value="http://www.cy118119.com/nhsn/fhirportal/dqm/ig/NHSNAcuteCareHospitalMonthlyInitialPopulation.cql"/>
          </content>
        </Library>

        国产精品久久久久久一级毛片