WHO Immunization Implementation Guide
1.0.0 - release
WHO Immunization Implementation Guide, published by WHO. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-immunizations/tree/132/merge and changes regularly. See the Directory of published versions
| Draft as of 2026-03-31 |
<Library xmlns="http://hl7.org/fhir">
<id value="IMMZD18SHib3DosesWithBoosterDoseLogic"/>
<meta>
<profile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"/>
<profile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"/>
<profile
value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"/>
<profile
value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"/>
</meta>
<text>
<status value="extensions"/>
<div xmlns="http://www.w3.org/1999/xhtml">
<div>
<table class="grid dict">
<tr>
<th scope="row"><b>Title: </b></th>
<td style="padding-left: 4px;">IMMZD18SHib3DosesWithBoosterDoseLogic</td>
</tr>
<tr>
<th scope="row"><b>Id: </b></th>
<td style="padding-left: 4px;">IMMZD18SHib3DosesWithBoosterDoseLogic</td>
</tr>
<tr>
<th scope="row"><b>Version: </b></th>
<td style="padding-left: 4px;">1.0.0</td>
</tr>
<tr>
<th scope="row"><b>Url: </b></th>
<td style="padding-left: 4px;"><a href="Library-IMMZD18SHib3DosesWithBoosterDoseLogic.html">IMMZD18SHib3DosesWithBoosterDoseLogic</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-03-31 13:54:17+0000</td>
</tr>
<tr>
<th scope="row"><b>Publisher: </b></th>
<td style="padding-left: 4px;">WHO</td>
</tr>
<tr>
<th scope="row"><b>Description: </b></th>
<td style="padding-left: 4px;"><div><p>This library defines decision support logic for the IMMZ.D18.S.Hib.3 doses with booster dose schedule table in the Immunization CPG</p>
</div></td>
</tr>
<tr>
<th scope="row"><b>Related Artifacts: </b></th>
<td style="padding-left: 4px;">
<p><b>Dependencies</b></p>
<ul>
<li><a href="Library-WHOCommon.html">WHOCommon</a></li>
<li><a href="Library-IMMZCommon.html">IMMZCommon</a></li>
<li><a href="Library-IMMZConcepts.html">IMMZConcepts</a></li>
<li><a href="Library-IMMZEncounterElements.html">IMMZEncounterElements</a></li>
<li><a href="Library-IMMZD2DTHibEncounterElements.html">IMMZD2DTHibEncounterElements</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>Today</th><th>date</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>Haemophilus influenzae type b (Hib) dose 1 Expiration</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Haemophilus influenzae type b (Hib) dose 1</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Haemophilus influenzae type b (Hib) dose 1 Due Date</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Haemophilus influenzae type b (Hib) dose 1 Create</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Haemophilus influenzae type b (Hib) dose 1 Overdue</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>First Hib dose from the primary series was administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Second Hib dose from the primary series was administered</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Hib dose 2 Expiration</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Hib dose 2</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Hib dose 2 Due Date</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Hib dose 2 Create</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Hib dose 2 Overdue</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Third Hib dose from the primary series was administered. The primary series has been completed</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Hib dose 3 Expiration</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Hib dose 3</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Hib dose 3 Due Date</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Hib dose 3 Create</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Hib dose 3 Overdue</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>One Hib booster dose was administered. Hib immunization schedule has been completed</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Hib booster dose Expiration</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Hib booster dose</th><th>boolean</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Hib booster dose Due Date</th><th>date</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Hib booster dose Create</th><th>string</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Hib booster dose Overdue</th><th>Resource</th><th>0</th><th>1</th><th>Out</th></tr>
<tr><th>Test Validation</th><th>Resource</th><th>0</th><th>1</th><th>Out</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: IMMZD18SHib3DosesWithBoosterDoseLogic (IMMZ.D18.S.Hib.3 doses with booster dose schedule)
* Schedule Table: 3 primary doses with a booster dose (3p+1) schedule
*/
library IMMZD18SHib3DosesWithBoosterDoseLogic
using FHIR version '4.0.1'
include FHIRHelpers version '4.0.1'
include WHOCommon called WC
include IMMZCommon called Common
include IMMZConcepts called Concepts
include IMMZEncounterElements called IE
include IMMZD2DTHibEncounterElements called Encounter
parameter Today Date default Today()
context Patient
/*
@output: Haemophilus influenzae type b (Hib) dose 1
@description: Provision of the Hib dose 1
@trigger: Child's birth
@pseudo:
@triggerDate: "Date of birth"
*/
define "Haemophilus influenzae type b (Hib) dose 1":
Encounter."No Hib primary series doses were administered"
and "Haemophilus influenzae type b (Hib) dose 1 Expiration" after day of Today
/*
@output: Haemophilus influenzae type b (Hib) dose 1 Create
@create: Immunization should start from 6 weeks of age, or as early as possible thereafter. Hib-containing vaccine is not required for healthy children aged over 5 years.
*/
define "Haemophilus influenzae type b (Hib) dose 1 Create":
if "Haemophilus influenzae type b (Hib) dose 1"
then 'Immunization should start from 6 weeks of age, or as early as possible thereafter. Hib-containing vaccine is not required for healthy children aged over 5 years.' + '
Due Date: ' + ToString("Haemophilus influenzae type b (Hib) dose 1 Due Date") + '
Expiration: ' + ToString("Haemophilus influenzae type b (Hib) dose 1 Expiration")
else ''
/*
@dynamicValue: Haemophilus influenzae type b (Hib) dose 1 Due Date
@pseudocode: "Date of birth" + 6 weeks
*/
define "Haemophilus influenzae type b (Hib) dose 1 Due Date":
if "Haemophilus influenzae type b (Hib) dose 1" then Patient.birthDate + 6 weeks
else null
/*
@dynamicValue: Haemophilus influenzae type b (Hib) dose 1 Overdue
@pseudocode: To be determined by Member States
*/
define "Haemophilus influenzae type b (Hib) dose 1 Overdue":
null
/*
@dynamicValue: Haemophilus influenzae type b (Hib) dose 1 Expiration
@pseudocode: "Date of birth" + 6 years
*/
define "Haemophilus influenzae type b (Hib) dose 1 Expiration":
Patient.birthDate + 6 years
/*
@complete: First Hib dose from the primary series was administered
@pseudocode: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose"= "Primary series") = 1
The primary series has been completed for delayed start
"Completed the primary vaccination series" = TRUE (where "Vaccine type" = "Hib-containing vaccines")
*/
define "First Hib dose from the primary series was administered":
Encounter."One Hib primary series dose was administered"
/*
@output: Hib dose 2
@description: Provision of the Hib dose 2
@trigger: First Hib dose from the primary series was administered to the client within 1 year of age. Client's age is less than 5 years
@pseudo: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose" = "Primary series") = 1 AND "Date and time of vaccination" (where "Vaccine type"= "Hib-containing vaccines" and "Dose number" = 1) − "Date of birth" < 1 year AND Today's date − "Date of birth" ≤ 5 years
@triggerDate: "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines")
*/
define "Hib dose 2":
"First Hib dose from the primary series was administered"
and Encounter."Client's age was less than 1 year when first Hib dose was administered"
and Encounter."Client's age is between 6 weeks and 5 years"
and not "Second Hib dose from the primary series was administered"
and "Hib dose 2 Expiration" after day of Today
/*
@output: Hib dose 2 Create
@create: Hib dose 2 should be provided if the client was given the previous dose more than 4 weeks ago and the first Hib dose was received by the time the child turned 1 year old
*/
define "Hib dose 2 Create":
if "Hib dose 2"
then 'Hib dose 2 should be provided if the client was given the previous dose more than 4 weeks ago and the first Hib dose was received by the time the child turned 1 year old' + '
Due Date: ' + ToString("Hib dose 2 Due Date") + '
Expiration: ' + ToString("Hib dose 2 Expiration")
else ''
/*
@dynamicValue: Hib dose 2 Due Date
@pseudocode: "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines") + 4 weeks
*/
define "Hib dose 2 Due Date":
if "Hib dose 2" then Encounter."Date of Latest Hib Dose" + 4 weeks
else null
/*
@dynamicValue: Hib dose 2 Overdue
@pseudocode: To be determined by Member States
*/
define "Hib dose 2 Overdue":
null
/*
@dynamicValue: Hib dose 2 Expiration
@pseudocode: "Date of birth" + 6 years
*/
define "Hib dose 2 Expiration":
Patient.birthDate + 6 years
/*
@complete: Second Hib dose from the primary series was administered
@pseudocode: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose"= "Primary series") = 2
*/
define "Second Hib dose from the primary series was administered":
Encounter."Two Hib primary series doses were administered"
/*
@output: Hib dose 3
@description: Provision of the Hib dose 3
@trigger: Second Hib dose from the primary series was administered. Client's age is less than 5 years
@pseudo: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose"= "Primary series") = 2 AND Today's date − "Date of birth" ≤ 5 years
@triggerDate: Latest "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines")
*/
define "Hib dose 3":
"Second Hib dose from the primary series was administered"
and Encounter."Client's age is between 6 weeks and 5 years"
and not "Third Hib dose from the primary series was administered. The primary series has been completed"
and "Hib dose 3 Expiration" after day of Today
/*
@output: Hib dose 3 Create
@create: Hib dose 3 should be provided if the client was given the previous dose more than 4 weeks ago and the first Hib dose was received by the time the child turned 1 year old
*/
define "Hib dose 3 Create":
if "Hib dose 3"
then 'Hib dose 3 should be provided if the client was given the previous dose more than 4 weeks ago and the first Hib dose was received by the time the child turned 1 year old' + '
Due Date: ' + ToString("Hib dose 3 Due Date") + '
Expiration: ' + ToString("Hib dose 3 Expiration")
else ''
/*
@dynamicValue: Hib dose 3 Due Date
@pseudocode: Latest "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines") + 4 weeks
*/
define "Hib dose 3 Due Date":
if "Hib dose 3" then Encounter."Date of Latest Hib Dose" + 4 weeks
else null
/*
@dynamicValue: Hib dose 3 Overdue
@pseudocode: To be determined by Member States
*/
define "Hib dose 3 Overdue":
null
/*
@dynamicValue: Hib dose 3 Expiration
@pseudocode: "Date of birth" + 6 years
*/
define "Hib dose 3 Expiration":
Patient.birthDate + 6 years
/*
@complete: Third Hib dose from the primary series was administered. The primary series has been completed
@pseudocode: "Completed the primary vaccination series" = TRUE (where "Vaccine type" = "Hib-containing vaccines")
*/
define "Third Hib dose from the primary series was administered. The primary series has been completed":
Encounter."Three Hib primary series doses were administered"
/*
@output: Hib booster dose
@description: Provision of the Hib booster dose
@trigger: Third Hib dose from the primary series was administered. Child's age is less than 5 years
@pseudo: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose"= "Primary series") = 3 AND Today's date − "Date of birth" ≤ 5 years
@triggerDate: Latest "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines")
*/
define "Hib booster dose":
"Third Hib dose from the primary series was administered. The primary series has been completed"
and Encounter."Client's age is between 6 weeks and 5 years"
and not "One Hib booster dose was administered. Hib immunization schedule has been completed"
and "Hib booster dose Expiration" after day of Today
/*
@output: Hib booster dose Create
@create: Hib booster dose should be provided if the client was given the previous dose more than 6 months ago and the first Hib dose was received by the time the child turned 1 year old
*/
define "Hib booster dose Create":
if "Hib booster dose"
then 'Hib booster dose should be provided if the client was given the previous dose more than 6 months ago and the first Hib dose was received by the time the child turned 1 year old' + '
Due Date: ' + ToString("Hib booster dose Due Date") + '
Expiration: ' + ToString("Hib booster dose Expiration")
else ''
/*
@dynamicValue: Hib booster dose Due Date
@pseudocode: Latest "Date and time of vaccination" (where "Vaccine type" = "Hib-containing vaccines") + 6 months
*/
define "Hib booster dose Due Date":
if "Hib booster dose" then Encounter."Date of Latest Hib Dose" + 6 months
else null
/*
@dynamicValue: Hib booster dose Overdue
@pseudocode: To be determined by Member States
*/
define "Hib booster dose Overdue":
null
/*
@dynamicValue: Hib booster dose Expiration
@pseudocode: "Date of birth" + 6 years
*/
define "Hib booster dose Expiration":
Patient.birthDate + 6 years
/*
@complete: One Hib booster dose was administered. Hib immunization schedule has been completed
@pseudocode: Count of vaccines administered (where "Vaccine type" = "Hib-containing vaccines" and "Type of dose"= "Booster dose") = 1
*/
define "One Hib booster dose was administered. Hib immunization schedule has been completed":
Encounter."One Hib booster dose was administered"
/*
@test: Test expected results based on example patients
*/
define "Test Validation":
case
when Patient.id = 'Hib24.1' then "Haemophilus influenzae type b (Hib) dose 1"
when Patient.id = 'Hib25.2' then "Haemophilus influenzae type b (Hib) dose 1"
when Patient.id = 'Hib26.4' then "Hib dose 2"
when Patient.id = 'Hib27.4' then "Hib dose 2"
when Patient.id = 'Hib28.3' then "First Hib dose from the primary series was administered" and not "Hib dose 2"
when Patient.id = 'Hib29.3' then "Hib dose 3"
when Patient.id = 'Hib30.3' then "Hib dose 3"
when Patient.id = 'Hib31.4' then "Hib booster dose"
when Patient.id = 'Hib32.4' then "Hib booster dose"
when Patient.id = 'Hib33.2' then "One Hib booster dose was administered. Hib immunization schedule has been completed"
when Patient.id = 'Hib34.1' then not "Haemophilus influenzae type b (Hib) dose 1"
else 'No test case set'
end
</code></pre></td></tr>
</table>
</td>
</tr>
</table>
</div>
</div>
</text>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability">
<valueCode value="computable"/>
</extension>
<url
value="http://smart.who.int/immunizations/Library/IMMZD18SHib3DosesWithBoosterDoseLogic"/>
<version value="1.0.0"/>
<name value="IMMZD18SHib3DosesWithBoosterDoseLogic"/>
<title value="IMMZD18SHib3DosesWithBoosterDoseLogic"/>
<status value="draft"/>
<experimental value="false"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/library-type"/>
<code value="logic-library"/>
</coding>
</type>
<date value="2026-03-31T13:54:17+00:00"/>
<publisher value="WHO"/>
<contact>
<name value="WHO"/>
<telecom>
<system value="url"/>
<value value="http://who.int"/>
</telecom>
</contact>
<description
value="This library defines decision support logic for the IMMZ.D18.S.Hib.3 doses with booster dose schedule table in the Immunization CPG"/>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library WC"/>
<resource value="http://smart.who.int/immunizations/Library/WHOCommon"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library Common"/>
<resource value="http://smart.who.int/immunizations/Library/IMMZCommon"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library Concepts"/>
<resource
value="http://smart.who.int/immunizations/Library/IMMZConcepts"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library IE"/>
<resource
value="http://smart.who.int/immunizations/Library/IMMZEncounterElements"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library Encounter"/>
<resource
value="http://smart.who.int/immunizations/Library/IMMZD2DTHibEncounterElements"/>
</relatedArtifact>
<parameter>
<name value="Today"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name value="Patient"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Patient"/>
</parameter>
<parameter>
<name value="Haemophilus influenzae type b (Hib) dose 1 Expiration"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name value="Haemophilus influenzae type b (Hib) dose 1"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Haemophilus influenzae type b (Hib) dose 1 Due Date"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name value="Haemophilus influenzae type b (Hib) dose 1 Create"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="string"/>
</parameter>
<parameter>
<name value="Haemophilus influenzae type b (Hib) dose 1 Overdue"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Resource"/>
</parameter>
<parameter>
<name value="First Hib dose from the primary series was administered"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Second Hib dose from the primary series was administered"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Hib dose 2 Expiration"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name value="Hib dose 2"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Hib dose 2 Due Date"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name value="Hib dose 2 Create"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="string"/>
</parameter>
<parameter>
<name value="Hib dose 2 Overdue"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Resource"/>
</parameter>
<parameter>
<name
value="Third Hib dose from the primary series was administered. The primary series has been completed"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Hib dose 3 Expiration"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name value="Hib dose 3"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Hib dose 3 Due Date"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name value="Hib dose 3 Create"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="string"/>
</parameter>
<parameter>
<name value="Hib dose 3 Overdue"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Resource"/>
</parameter>
<parameter>
<name
value="One Hib booster dose was administered. Hib immunization schedule has been completed"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Hib booster dose Expiration"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name value="Hib booster dose"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Hib booster dose Due Date"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name value="Hib booster dose Create"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="string"/>
</parameter>
<parameter>
<name value="Hib booster dose Overdue"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Resource"/>
</parameter>
<parameter>
<name value="Test Validation"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="Resource"/>
</parameter>
<content>
<contentType value="text/cql"/>
<data
value="LyoKICogTGlicmFyeTogSU1NWkQxOFNIaWIzRG9zZXNXaXRoQm9vc3RlckRvc2VMb2dpYyAoSU1NWi5EMTguUy5IaWIuMyBkb3NlcyB3aXRoIGJvb3N0ZXIgZG9zZSBzY2hlZHVsZSkKICogU2NoZWR1bGUgVGFibGU6IDMgcHJpbWFyeSBkb3NlcyB3aXRoIGEgYm9vc3RlciBkb3NlICgzcCsxKSBzY2hlZHVsZQogKi8KbGlicmFyeSBJTU1aRDE4U0hpYjNEb3Nlc1dpdGhCb29zdGVyRG9zZUxvZ2ljCgp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBXSE9Db21tb24gY2FsbGVkIFdDCgppbmNsdWRlIElNTVpDb21tb24gY2FsbGVkIENvbW1vbgppbmNsdWRlIElNTVpDb25jZXB0cyBjYWxsZWQgQ29uY2VwdHMKCmluY2x1ZGUgSU1NWkVuY291bnRlckVsZW1lbnRzIGNhbGxlZCBJRQppbmNsdWRlIElNTVpEMkRUSGliRW5jb3VudGVyRWxlbWVudHMgY2FsbGVkIEVuY291bnRlcgoKcGFyYW1ldGVyIFRvZGF5IERhdGUgZGVmYXVsdCBUb2RheSgpCgoKY29udGV4dCBQYXRpZW50CgoKLyoKQG91dHB1dDogSGFlbW9waGlsdXMgaW5mbHVlbnphZSB0eXBlIGIgKEhpYikgZG9zZSAxCkBkZXNjcmlwdGlvbjogUHJvdmlzaW9uIG9mIHRoZSBIaWIgZG9zZSAxCkB0cmlnZ2VyOiBDaGlsZCdzIGJpcnRoCkBwc2V1ZG86IApAdHJpZ2dlckRhdGU6ICJEYXRlIG9mIGJpcnRoIgoqLwpkZWZpbmUgIkhhZW1vcGhpbHVzIGluZmx1ZW56YWUgdHlwZSBiIChIaWIpIGRvc2UgMSI6CiAgRW5jb3VudGVyLiJObyBIaWIgcHJpbWFyeSBzZXJpZXMgZG9zZXMgd2VyZSBhZG1pbmlzdGVyZWQiCiAgYW5kICJIYWVtb3BoaWx1cyBpbmZsdWVuemFlIHR5cGUgYiAoSGliKSBkb3NlIDEgRXhwaXJhdGlvbiIgYWZ0ZXIgZGF5IG9mIFRvZGF5CgoKLyoKQG91dHB1dDogSGFlbW9waGlsdXMgaW5mbHVlbnphZSB0eXBlIGIgKEhpYikgZG9zZSAxIENyZWF0ZQpAY3JlYXRlOiBJbW11bml6YXRpb24gc2hvdWxkIHN0YXJ0IGZyb20gNiB3ZWVrcyBvZiBhZ2UsIG9yIGFzIGVhcmx5IGFzIHBvc3NpYmxlIHRoZXJlYWZ0ZXIuIEhpYi1jb250YWluaW5nIHZhY2NpbmUgaXMgbm90IHJlcXVpcmVkIGZvciBoZWFsdGh5IGNoaWxkcmVuIGFnZWQgb3ZlciA1IHllYXJzLgoqLwpkZWZpbmUgIkhhZW1vcGhpbHVzIGluZmx1ZW56YWUgdHlwZSBiIChIaWIpIGRvc2UgMSBDcmVhdGUiOgogIGlmICJIYWVtb3BoaWx1cyBpbmZsdWVuemFlIHR5cGUgYiAoSGliKSBkb3NlIDEiCiAgdGhlbiAnSW1tdW5pemF0aW9uIHNob3VsZCBzdGFydCBmcm9tIDYgd2Vla3Mgb2YgYWdlLCBvciBhcyBlYXJseSBhcyBwb3NzaWJsZSB0aGVyZWFmdGVyLiBIaWItY29udGFpbmluZyB2YWNjaW5lIGlzIG5vdCByZXF1aXJlZCBmb3IgaGVhbHRoeSBjaGlsZHJlbiBhZ2VkIG92ZXIgNSB5ZWFycy4nICsgJwpEdWUgRGF0ZTogJyArIFRvU3RyaW5nKCJIYWVtb3BoaWx1cyBpbmZsdWVuemFlIHR5cGUgYiAoSGliKSBkb3NlIDEgRHVlIERhdGUiKSArICcKRXhwaXJhdGlvbjogJyArIFRvU3RyaW5nKCJIYWVtb3BoaWx1cyBpbmZsdWVuemFlIHR5cGUgYiAoSGliKSBkb3NlIDEgRXhwaXJhdGlvbiIpCiAgZWxzZSAnJwoKCi8qCkBkeW5hbWljVmFsdWU6IEhhZW1vcGhpbHVzIGluZmx1ZW56YWUgdHlwZSBiIChIaWIpIGRvc2UgMSBEdWUgRGF0ZQpAcHNldWRvY29kZTogIkRhdGUgb2YgYmlydGgiICsgNiB3ZWVrcwoqLwpkZWZpbmUgIkhhZW1vcGhpbHVzIGluZmx1ZW56YWUgdHlwZSBiIChIaWIpIGRvc2UgMSBEdWUgRGF0ZSI6CiAgaWYgIkhhZW1vcGhpbHVzIGluZmx1ZW56YWUgdHlwZSBiIChIaWIpIGRvc2UgMSIgdGhlbiBQYXRpZW50LmJpcnRoRGF0ZSArIDYgd2Vla3MKICBlbHNlIG51bGwKCgovKgpAZHluYW1pY1ZhbHVlOiBIYWVtb3BoaWx1cyBpbmZsdWVuemFlIHR5cGUgYiAoSGliKSBkb3NlIDEgT3ZlcmR1ZQpAcHNldWRvY29kZTogVG8gYmUgZGV0ZXJtaW5lZCBieSBNZW1iZXIgU3RhdGVzCiovCmRlZmluZSAiSGFlbW9waGlsdXMgaW5mbHVlbnphZSB0eXBlIGIgKEhpYikgZG9zZSAxIE92ZXJkdWUiOgogIG51bGwKCgovKgpAZHluYW1pY1ZhbHVlOiBIYWVtb3BoaWx1cyBpbmZsdWVuemFlIHR5cGUgYiAoSGliKSBkb3NlIDEgRXhwaXJhdGlvbgpAcHNldWRvY29kZTogIkRhdGUgb2YgYmlydGgiICsgNiB5ZWFycwoqLwpkZWZpbmUgIkhhZW1vcGhpbHVzIGluZmx1ZW56YWUgdHlwZSBiIChIaWIpIGRvc2UgMSBFeHBpcmF0aW9uIjoKICBQYXRpZW50LmJpcnRoRGF0ZSArIDYgeWVhcnMKCiAgCi8qCkBjb21wbGV0ZTogRmlyc3QgSGliIGRvc2UgZnJvbSB0aGUgcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZApAcHNldWRvY29kZTogQ291bnQgb2YgdmFjY2luZXMgYWRtaW5pc3RlcmVkICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJIaWItY29udGFpbmluZyB2YWNjaW5lcyIgYW5kICJUeXBlIG9mIGRvc2UiPSAiUHJpbWFyeSBzZXJpZXMiKSA9IDEKVGhlIHByaW1hcnkgc2VyaWVzIGhhcyBiZWVuIGNvbXBsZXRlZCBmb3IgZGVsYXllZCBzdGFydAoiQ29tcGxldGVkIHRoZSBwcmltYXJ5IHZhY2NpbmF0aW9uIHNlcmllcyIgPSBUUlVFICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJIaWItY29udGFpbmluZyB2YWNjaW5lcyIpCiovCmRlZmluZSAiRmlyc3QgSGliIGRvc2UgZnJvbSB0aGUgcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZCI6CiAgRW5jb3VudGVyLiJPbmUgSGliIHByaW1hcnkgc2VyaWVzIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZCIKCgoKLyoKQG91dHB1dDogSGliIGRvc2UgMgpAZGVzY3JpcHRpb246IFByb3Zpc2lvbiBvZiB0aGUgSGliIGRvc2UgMgpAdHJpZ2dlcjogRmlyc3QgSGliIGRvc2UgZnJvbSB0aGUgcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZCB0byB0aGUgY2xpZW50IHdpdGhpbiAxIHllYXIgb2YgYWdlLiBDbGllbnQncyBhZ2UgaXMgbGVzcyB0aGFuIDUgeWVhcnMKQHBzZXVkbzogQ291bnQgb2YgdmFjY2luZXMgYWRtaW5pc3RlcmVkICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJIaWItY29udGFpbmluZyB2YWNjaW5lcyIgYW5kICJUeXBlIG9mIGRvc2UiID0gIlByaW1hcnkgc2VyaWVzIikgPSAxIEFORCAiRGF0ZSBhbmQgdGltZSBvZiB2YWNjaW5hdGlvbiIgKHdoZXJlICJWYWNjaW5lIHR5cGUiPSAiSGliLWNvbnRhaW5pbmcgdmFjY2luZXMiIGFuZCAiRG9zZSBudW1iZXIiID0gMSkg4oiSICJEYXRlIG9mIGJpcnRoIiA8IDEgeWVhciBBTkQgVG9kYXkncyBkYXRlIOKIkiAiRGF0ZSBvZiBiaXJ0aCIg4omkIDUgeWVhcnMKQHRyaWdnZXJEYXRlOiAiRGF0ZSBhbmQgdGltZSBvZiB2YWNjaW5hdGlvbiIgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkhpYi1jb250YWluaW5nIHZhY2NpbmVzIikKKi8KZGVmaW5lICJIaWIgZG9zZSAyIjoKICAiRmlyc3QgSGliIGRvc2UgZnJvbSB0aGUgcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZCIKICBhbmQgRW5jb3VudGVyLiJDbGllbnQncyBhZ2Ugd2FzIGxlc3MgdGhhbiAxIHllYXIgd2hlbiBmaXJzdCBIaWIgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIgogIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIGFnZSBpcyBiZXR3ZWVuIDYgd2Vla3MgYW5kIDUgeWVhcnMiCiAgYW5kIG5vdCAiU2Vjb25kIEhpYiBkb3NlIGZyb20gdGhlIHByaW1hcnkgc2VyaWVzIHdhcyBhZG1pbmlzdGVyZWQiCiAgYW5kICJIaWIgZG9zZSAyIEV4cGlyYXRpb24iIGFmdGVyIGRheSBvZiBUb2RheQoKCi8qCkBvdXRwdXQ6IEhpYiBkb3NlIDIgQ3JlYXRlCkBjcmVhdGU6IEhpYiBkb3NlIDIgc2hvdWxkIGJlIHByb3ZpZGVkIGlmIHRoZSBjbGllbnQgd2FzIGdpdmVuIHRoZSBwcmV2aW91cyBkb3NlIG1vcmUgdGhhbiA0IHdlZWtzIGFnbyBhbmQgdGhlIGZpcnN0IEhpYiBkb3NlIHdhcyByZWNlaXZlZCBieSB0aGUgdGltZSB0aGUgY2hpbGQgdHVybmVkIDEgeWVhciBvbGQKKi8KZGVmaW5lICJIaWIgZG9zZSAyIENyZWF0ZSI6CiAgaWYgIkhpYiBkb3NlIDIiCiAgdGhlbiAnSGliIGRvc2UgMiBzaG91bGQgYmUgcHJvdmlkZWQgaWYgdGhlIGNsaWVudCB3YXMgZ2l2ZW4gdGhlIHByZXZpb3VzIGRvc2UgbW9yZSB0aGFuIDQgd2Vla3MgYWdvIGFuZCB0aGUgZmlyc3QgSGliIGRvc2Ugd2FzIHJlY2VpdmVkIGJ5IHRoZSB0aW1lIHRoZSBjaGlsZCB0dXJuZWQgMSB5ZWFyIG9sZCcgKyAnCkR1ZSBEYXRlOiAnICsgVG9TdHJpbmcoIkhpYiBkb3NlIDIgRHVlIERhdGUiKSArICcKRXhwaXJhdGlvbjogJyArIFRvU3RyaW5nKCJIaWIgZG9zZSAyIEV4cGlyYXRpb24iKQogIGVsc2UgJycKCgovKgpAZHluYW1pY1ZhbHVlOiBIaWIgZG9zZSAyIER1ZSBEYXRlCkBwc2V1ZG9jb2RlOiAiRGF0ZSBhbmQgdGltZSBvZiB2YWNjaW5hdGlvbiIgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkhpYi1jb250YWluaW5nIHZhY2NpbmVzIikgKyA0IHdlZWtzCiovCmRlZmluZSAiSGliIGRvc2UgMiBEdWUgRGF0ZSI6CiAgaWYgIkhpYiBkb3NlIDIiIHRoZW4gRW5jb3VudGVyLiJEYXRlIG9mIExhdGVzdCBIaWIgRG9zZSIgKyA0IHdlZWtzCiAgZWxzZSBudWxsCgoKLyoKQGR5bmFtaWNWYWx1ZTogSGliIGRvc2UgMiBPdmVyZHVlCkBwc2V1ZG9jb2RlOiBUbyBiZSBkZXRlcm1pbmVkIGJ5IE1lbWJlciBTdGF0ZXMKKi8KZGVmaW5lICJIaWIgZG9zZSAyIE92ZXJkdWUiOgogIG51bGwKCgovKgpAZHluYW1pY1ZhbHVlOiBIaWIgZG9zZSAyIEV4cGlyYXRpb24KQHBzZXVkb2NvZGU6ICJEYXRlIG9mIGJpcnRoIiArIDYgeWVhcnMKKi8KZGVmaW5lICJIaWIgZG9zZSAyIEV4cGlyYXRpb24iOgogIFBhdGllbnQuYmlydGhEYXRlICsgNiB5ZWFycwoKICAKLyoKQGNvbXBsZXRlOiBTZWNvbmQgSGliIGRvc2UgZnJvbSB0aGUgcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZApAcHNldWRvY29kZTogQ291bnQgb2YgdmFjY2luZXMgYWRtaW5pc3RlcmVkICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJIaWItY29udGFpbmluZyB2YWNjaW5lcyIgYW5kICJUeXBlIG9mIGRvc2UiPSAiUHJpbWFyeSBzZXJpZXMiKSA9IDIKKi8KZGVmaW5lICJTZWNvbmQgSGliIGRvc2UgZnJvbSB0aGUgcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZCI6CiAgRW5jb3VudGVyLiJUd28gSGliIHByaW1hcnkgc2VyaWVzIGRvc2VzIHdlcmUgYWRtaW5pc3RlcmVkIgoKCgovKgpAb3V0cHV0OiBIaWIgZG9zZSAzCkBkZXNjcmlwdGlvbjogUHJvdmlzaW9uIG9mIHRoZSBIaWIgZG9zZSAzCkB0cmlnZ2VyOiBTZWNvbmQgSGliIGRvc2UgZnJvbSB0aGUgcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZC4gQ2xpZW50J3MgYWdlIGlzIGxlc3MgdGhhbiA1IHllYXJzCkBwc2V1ZG86IENvdW50IG9mIHZhY2NpbmVzIGFkbWluaXN0ZXJlZCAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiSGliLWNvbnRhaW5pbmcgdmFjY2luZXMiIGFuZCAiVHlwZSBvZiBkb3NlIj0gIlByaW1hcnkgc2VyaWVzIikgPSAyIEFORCBUb2RheSdzIGRhdGUg4oiSICJEYXRlIG9mIGJpcnRoIiDiiaQgNSB5ZWFycwpAdHJpZ2dlckRhdGU6IExhdGVzdCAiRGF0ZSBhbmQgdGltZSBvZiB2YWNjaW5hdGlvbiIgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkhpYi1jb250YWluaW5nIHZhY2NpbmVzIikKKi8KZGVmaW5lICJIaWIgZG9zZSAzIjoKICAiU2Vjb25kIEhpYiBkb3NlIGZyb20gdGhlIHByaW1hcnkgc2VyaWVzIHdhcyBhZG1pbmlzdGVyZWQiCiAgYW5kIEVuY291bnRlci4iQ2xpZW50J3MgYWdlIGlzIGJldHdlZW4gNiB3ZWVrcyBhbmQgNSB5ZWFycyIKICBhbmQgbm90ICJUaGlyZCBIaWIgZG9zZSBmcm9tIHRoZSBwcmltYXJ5IHNlcmllcyB3YXMgYWRtaW5pc3RlcmVkLiBUaGUgcHJpbWFyeSBzZXJpZXMgaGFzIGJlZW4gY29tcGxldGVkIgogIGFuZCAiSGliIGRvc2UgMyBFeHBpcmF0aW9uIiBhZnRlciBkYXkgb2YgVG9kYXkKCgovKgpAb3V0cHV0OiBIaWIgZG9zZSAzIENyZWF0ZQpAY3JlYXRlOiBIaWIgZG9zZSAzIHNob3VsZCBiZSBwcm92aWRlZCBpZiB0aGUgY2xpZW50IHdhcyBnaXZlbiB0aGUgcHJldmlvdXMgZG9zZSBtb3JlIHRoYW4gNCB3ZWVrcyBhZ28gYW5kIHRoZSBmaXJzdCBIaWIgZG9zZSB3YXMgcmVjZWl2ZWQgYnkgdGhlIHRpbWUgdGhlIGNoaWxkIHR1cm5lZCAxIHllYXIgb2xkCiovCmRlZmluZSAiSGliIGRvc2UgMyBDcmVhdGUiOgogIGlmICJIaWIgZG9zZSAzIgogIHRoZW4gJ0hpYiBkb3NlIDMgc2hvdWxkIGJlIHByb3ZpZGVkIGlmIHRoZSBjbGllbnQgd2FzIGdpdmVuIHRoZSBwcmV2aW91cyBkb3NlIG1vcmUgdGhhbiA0IHdlZWtzIGFnbyBhbmQgdGhlIGZpcnN0IEhpYiBkb3NlIHdhcyByZWNlaXZlZCBieSB0aGUgdGltZSB0aGUgY2hpbGQgdHVybmVkIDEgeWVhciBvbGQnICsgJwpEdWUgRGF0ZTogJyArIFRvU3RyaW5nKCJIaWIgZG9zZSAzIER1ZSBEYXRlIikgKyAnCkV4cGlyYXRpb246ICcgKyBUb1N0cmluZygiSGliIGRvc2UgMyBFeHBpcmF0aW9uIikKICBlbHNlICcnCgoKLyoKQGR5bmFtaWNWYWx1ZTogSGliIGRvc2UgMyBEdWUgRGF0ZQpAcHNldWRvY29kZTogTGF0ZXN0ICJEYXRlIGFuZCB0aW1lIG9mIHZhY2NpbmF0aW9uIiAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiSGliLWNvbnRhaW5pbmcgdmFjY2luZXMiKSArIDQgd2Vla3MKKi8KZGVmaW5lICJIaWIgZG9zZSAzIER1ZSBEYXRlIjoKICBpZiAiSGliIGRvc2UgMyIgdGhlbiBFbmNvdW50ZXIuIkRhdGUgb2YgTGF0ZXN0IEhpYiBEb3NlIiArIDQgd2Vla3MKICBlbHNlIG51bGwKCgovKgpAZHluYW1pY1ZhbHVlOiBIaWIgZG9zZSAzIE92ZXJkdWUKQHBzZXVkb2NvZGU6IFRvIGJlIGRldGVybWluZWQgYnkgTWVtYmVyIFN0YXRlcwoqLwpkZWZpbmUgIkhpYiBkb3NlIDMgT3ZlcmR1ZSI6CiAgbnVsbAoKCi8qCkBkeW5hbWljVmFsdWU6IEhpYiBkb3NlIDMgRXhwaXJhdGlvbgpAcHNldWRvY29kZTogIkRhdGUgb2YgYmlydGgiICsgNiB5ZWFycwoqLwpkZWZpbmUgIkhpYiBkb3NlIDMgRXhwaXJhdGlvbiI6CiAgUGF0aWVudC5iaXJ0aERhdGUgKyA2IHllYXJzCgogIAovKgpAY29tcGxldGU6IFRoaXJkIEhpYiBkb3NlIGZyb20gdGhlIHByaW1hcnkgc2VyaWVzIHdhcyBhZG1pbmlzdGVyZWQuIFRoZSBwcmltYXJ5IHNlcmllcyBoYXMgYmVlbiBjb21wbGV0ZWQKQHBzZXVkb2NvZGU6ICJDb21wbGV0ZWQgdGhlIHByaW1hcnkgdmFjY2luYXRpb24gc2VyaWVzIiA9IFRSVUUgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkhpYi1jb250YWluaW5nIHZhY2NpbmVzIikKKi8KZGVmaW5lICJUaGlyZCBIaWIgZG9zZSBmcm9tIHRoZSBwcmltYXJ5IHNlcmllcyB3YXMgYWRtaW5pc3RlcmVkLiBUaGUgcHJpbWFyeSBzZXJpZXMgaGFzIGJlZW4gY29tcGxldGVkIjoKICBFbmNvdW50ZXIuIlRocmVlIEhpYiBwcmltYXJ5IHNlcmllcyBkb3NlcyB3ZXJlIGFkbWluaXN0ZXJlZCIKCgoKLyoKQG91dHB1dDogSGliIGJvb3N0ZXIgZG9zZQpAZGVzY3JpcHRpb246IFByb3Zpc2lvbiBvZiB0aGUgSGliIGJvb3N0ZXIgZG9zZQpAdHJpZ2dlcjogVGhpcmQgSGliIGRvc2UgZnJvbSB0aGUgcHJpbWFyeSBzZXJpZXMgd2FzIGFkbWluaXN0ZXJlZC4gQ2hpbGQncyBhZ2UgaXMgbGVzcyB0aGFuIDUgeWVhcnMKQHBzZXVkbzogQ291bnQgb2YgdmFjY2luZXMgYWRtaW5pc3RlcmVkICh3aGVyZSAiVmFjY2luZSB0eXBlIiA9ICJIaWItY29udGFpbmluZyB2YWNjaW5lcyIgYW5kICJUeXBlIG9mIGRvc2UiPSAiUHJpbWFyeSBzZXJpZXMiKSA9IDMgQU5EIFRvZGF5J3MgZGF0ZSDiiJIgIkRhdGUgb2YgYmlydGgiIOKJpCA1IHllYXJzCkB0cmlnZ2VyRGF0ZTogTGF0ZXN0ICJEYXRlIGFuZCB0aW1lIG9mIHZhY2NpbmF0aW9uIiAod2hlcmUgIlZhY2NpbmUgdHlwZSIgPSAiSGliLWNvbnRhaW5pbmcgdmFjY2luZXMiKQoqLwpkZWZpbmUgIkhpYiBib29zdGVyIGRvc2UiOgogICJUaGlyZCBIaWIgZG9zZSBmcm9tIHRoZSBwcmltYXJ5IHNlcmllcyB3YXMgYWRtaW5pc3RlcmVkLiBUaGUgcHJpbWFyeSBzZXJpZXMgaGFzIGJlZW4gY29tcGxldGVkIgogIGFuZCBFbmNvdW50ZXIuIkNsaWVudCdzIGFnZSBpcyBiZXR3ZWVuIDYgd2Vla3MgYW5kIDUgeWVhcnMiCiAgYW5kIG5vdCAiT25lIEhpYiBib29zdGVyIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZC4gSGliIGltbXVuaXphdGlvbiBzY2hlZHVsZSBoYXMgYmVlbiBjb21wbGV0ZWQiCiAgYW5kICJIaWIgYm9vc3RlciBkb3NlIEV4cGlyYXRpb24iIGFmdGVyIGRheSBvZiBUb2RheQoKCi8qCkBvdXRwdXQ6IEhpYiBib29zdGVyIGRvc2UgQ3JlYXRlCkBjcmVhdGU6IEhpYiBib29zdGVyIGRvc2Ugc2hvdWxkIGJlIHByb3ZpZGVkIGlmIHRoZSBjbGllbnQgd2FzIGdpdmVuIHRoZSBwcmV2aW91cyBkb3NlIG1vcmUgdGhhbiA2IG1vbnRocyBhZ28gYW5kIHRoZSBmaXJzdCBIaWIgZG9zZSB3YXMgcmVjZWl2ZWQgYnkgdGhlIHRpbWUgdGhlIGNoaWxkIHR1cm5lZCAxIHllYXIgb2xkCiovCmRlZmluZSAiSGliIGJvb3N0ZXIgZG9zZSBDcmVhdGUiOgogIGlmICJIaWIgYm9vc3RlciBkb3NlIgogIHRoZW4gJ0hpYiBib29zdGVyIGRvc2Ugc2hvdWxkIGJlIHByb3ZpZGVkIGlmIHRoZSBjbGllbnQgd2FzIGdpdmVuIHRoZSBwcmV2aW91cyBkb3NlIG1vcmUgdGhhbiA2IG1vbnRocyBhZ28gYW5kIHRoZSBmaXJzdCBIaWIgZG9zZSB3YXMgcmVjZWl2ZWQgYnkgdGhlIHRpbWUgdGhlIGNoaWxkIHR1cm5lZCAxIHllYXIgb2xkJyArICcKRHVlIERhdGU6ICcgKyBUb1N0cmluZygiSGliIGJvb3N0ZXIgZG9zZSBEdWUgRGF0ZSIpICsgJwpFeHBpcmF0aW9uOiAnICsgVG9TdHJpbmcoIkhpYiBib29zdGVyIGRvc2UgRXhwaXJhdGlvbiIpCiAgZWxzZSAnJwoKCi8qCkBkeW5hbWljVmFsdWU6IEhpYiBib29zdGVyIGRvc2UgRHVlIERhdGUKQHBzZXVkb2NvZGU6IExhdGVzdCAiRGF0ZSBhbmQgdGltZSBvZiB2YWNjaW5hdGlvbiIgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkhpYi1jb250YWluaW5nIHZhY2NpbmVzIikgKyA2IG1vbnRocwoqLwpkZWZpbmUgIkhpYiBib29zdGVyIGRvc2UgRHVlIERhdGUiOgogIGlmICJIaWIgYm9vc3RlciBkb3NlIiB0aGVuIEVuY291bnRlci4iRGF0ZSBvZiBMYXRlc3QgSGliIERvc2UiICsgNiBtb250aHMKICBlbHNlIG51bGwKCgovKgpAZHluYW1pY1ZhbHVlOiBIaWIgYm9vc3RlciBkb3NlIE92ZXJkdWUKQHBzZXVkb2NvZGU6IFRvIGJlIGRldGVybWluZWQgYnkgTWVtYmVyIFN0YXRlcwoqLwpkZWZpbmUgIkhpYiBib29zdGVyIGRvc2UgT3ZlcmR1ZSI6CiAgbnVsbAoKCi8qCkBkeW5hbWljVmFsdWU6IEhpYiBib29zdGVyIGRvc2UgRXhwaXJhdGlvbgpAcHNldWRvY29kZTogIkRhdGUgb2YgYmlydGgiICsgNiB5ZWFycwoqLwpkZWZpbmUgIkhpYiBib29zdGVyIGRvc2UgRXhwaXJhdGlvbiI6CiAgUGF0aWVudC5iaXJ0aERhdGUgKyA2IHllYXJzCgogIAovKgpAY29tcGxldGU6IE9uZSBIaWIgYm9vc3RlciBkb3NlIHdhcyBhZG1pbmlzdGVyZWQuIEhpYiBpbW11bml6YXRpb24gc2NoZWR1bGUgaGFzIGJlZW4gY29tcGxldGVkCkBwc2V1ZG9jb2RlOiBDb3VudCBvZiB2YWNjaW5lcyBhZG1pbmlzdGVyZWQgKHdoZXJlICJWYWNjaW5lIHR5cGUiID0gIkhpYi1jb250YWluaW5nIHZhY2NpbmVzIiBhbmQgIlR5cGUgb2YgZG9zZSI9ICJCb29zdGVyIGRvc2UiKSA9IDEKKi8KZGVmaW5lICJPbmUgSGliIGJvb3N0ZXIgZG9zZSB3YXMgYWRtaW5pc3RlcmVkLiBIaWIgaW1tdW5pemF0aW9uIHNjaGVkdWxlIGhhcyBiZWVuIGNvbXBsZXRlZCI6CiAgRW5jb3VudGVyLiJPbmUgSGliIGJvb3N0ZXIgZG9zZSB3YXMgYWRtaW5pc3RlcmVkIgoKCgovKgpAdGVzdDogVGVzdCBleHBlY3RlZCByZXN1bHRzIGJhc2VkIG9uIGV4YW1wbGUgcGF0aWVudHMKKi8KZGVmaW5lICJUZXN0IFZhbGlkYXRpb24iOgogIGNhc2UKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdIaWIyNC4xJyB0aGVuICJIYWVtb3BoaWx1cyBpbmZsdWVuemFlIHR5cGUgYiAoSGliKSBkb3NlIDEiCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnSGliMjUuMicgdGhlbiAiSGFlbW9waGlsdXMgaW5mbHVlbnphZSB0eXBlIGIgKEhpYikgZG9zZSAxIgogICAgd2hlbiBQYXRpZW50LmlkID0gJ0hpYjI2LjQnIHRoZW4gIkhpYiBkb3NlIDIiCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnSGliMjcuNCcgdGhlbiAiSGliIGRvc2UgMiIKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdIaWIyOC4zJyB0aGVuICJGaXJzdCBIaWIgZG9zZSBmcm9tIHRoZSBwcmltYXJ5IHNlcmllcyB3YXMgYWRtaW5pc3RlcmVkIiBhbmQgbm90ICJIaWIgZG9zZSAyIgogICAgd2hlbiBQYXRpZW50LmlkID0gJ0hpYjI5LjMnIHRoZW4gIkhpYiBkb3NlIDMiCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnSGliMzAuMycgdGhlbiAiSGliIGRvc2UgMyIKICAgIHdoZW4gUGF0aWVudC5pZCA9ICdIaWIzMS40JyB0aGVuICJIaWIgYm9vc3RlciBkb3NlIgogICAgd2hlbiBQYXRpZW50LmlkID0gJ0hpYjMyLjQnIHRoZW4gIkhpYiBib29zdGVyIGRvc2UiCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnSGliMzMuMicgdGhlbiAiT25lIEhpYiBib29zdGVyIGRvc2Ugd2FzIGFkbWluaXN0ZXJlZC4gSGliIGltbXVuaXphdGlvbiBzY2hlZHVsZSBoYXMgYmVlbiBjb21wbGV0ZWQiCiAgICB3aGVuIFBhdGllbnQuaWQgPSAnSGliMzQuMScgdGhlbiBub3QgIkhhZW1vcGhpbHVzIGluZmx1ZW56YWUgdHlwZSBiIChIaWIpIGRvc2UgMSIKICAgIGVsc2UgJ05vIHRlc3QgY2FzZSBzZXQnCiAgZW5kCg=="/>
</content>
</Library>