Quality Measure Implementation Guide
1.0.0-ballot - ballot International flag

Quality Measure Implementation Guide, published by HL7 International / Clinical Quality Information. This guide is not an authorized publication; it is the continuous build for version 1.0.0-ballot built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/cqf-measures/ and changes regularly. See the Directory of published versions

: Example Computable Library - JSON Representation

Active as of 2019-09-03

Raw json | Download

{
  "resourceType" : "Library",
  "id" : "EXMComputableLibrary",
  "meta" : {
    "profile" : [
      🔗 "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"🔗 ,
      "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"🔗 ,
      "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"
    ]
  },
  "text" : {
    "status" : "extensions",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n<div>\n    <table class=\"grid dict\">\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Title: </b></th>\n            <td style=\"padding-left: 4px;\">Example Computable Library</td>\n        </tr>\n        \n\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Id: </b></th>\n            <td style=\"padding-left: 4px;\">EXMComputableLibrary</td>\n        </tr>\n        \n\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Version: </b></th>\n            <td style=\"padding-left: 4px;\">2.0.0</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Url: </b></th>\n            <td style=\"padding-left: 4px;\"><a href=\"Library-EXMComputableLibrary.html\">Example Computable Library</a></td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\">\n                <b>\n                    \n                        Official\n                    \n                </b>\n            </th>\n            <td style=\"padding-left: 4px;\">\n                \n                <p style=\"margin-bottom: 5px;\">\n                    <span>EXMComputableLogic</span>\n                </p>\n                \n            </td>\n        </tr>\n        \n\n        \n\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Experimental: </b></th>\n            <td style=\"padding-left: 4px;\">true</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Type: </b></th>\n            <td style=\"padding-left: 4px;\">\n                \n                    \n                        \n                        <p style=\"margin-bottom: 5px;\">\n                            <b>system: </b> <span><a href=\"http://terminology.hl7.org/5.5.0/CodeSystem-library-type.html\">http://terminology.hl7.org/CodeSystem/library-type</a></span>\n                        </p>\n                        \n                        \n                        <p style=\"margin-bottom: 5px;\">\n                            <b>code: </b> <span>logic-library</span>\n                        </p>\n                        \n                        \n                    \n                \n                \n            </td>\n        </tr>\n        \n\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Date: </b></th>\n            <td style=\"padding-left: 4px;\">2019-09-03</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Publisher: </b></th>\n            <td style=\"padding-left: 4px;\">HL7 International / Clinical Quality Information</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Description: </b></th>\n            <td style=\"padding-left: 4px;\"><div><p>This library is used as an example in the FHIR Quality Measure Implementation Guide</p>\n</div></td>\n        </tr>\n        \n\n        \n\n        \n\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Jurisdiction: </b></th>\n            <td style=\"padding-left: 4px;\">001</td>\n        </tr>\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Approval Date: </b></th>\n            <td style=\"padding-left: 4px;\">2019-08-03</td>\n        </tr>\n        \n\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Related Artifacts: </b></th>\n            <td style=\"padding-left: 4px;\">\n                \n                \n                \n                <p><b>Dependencies</b></p>\n                <ul>\n                  \n                    <li><code>http://fhir.org/guides/common/Library/FHIR-ModelInfo|4.0.1</code></li>\n                  \n                    <li><code>http://fhir.org/guides/common/Library/FHIRHelpers|4.0.1</code></li>\n                  \n                    <li><a href=\"http://terminology.hl7.org/5.5.0/CodeSystem-diagnosis-role.html\">Diagnosis Role</a></li>\n                  \n                    <li><code>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292</code></li>\n                  \n                    <li><code>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.299</code></li>\n                  \n                    <li><code>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.126</code></li>\n                  \n                    <li><code>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1</code></li>\n                  \n                    <li><code>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.836</code></li>\n                  \n                    <li><code>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837</code></li>\n                  \n                    <li><code>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591</code></li>\n                  \n                </ul>\n                \n                \n                \n                \n                \n            </td>\n        </tr>\n        \n\n        \n        <tr>\n          <th scope=\"row\"><b>Parameters: </b></th>\n          <td style=\"padding-left: 4px;\">\n            <table class=\"grid-dict\">\n              <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>\n              \n                <tr><th>Measurement Period</th><th>Period</th><th>0</th><th>1</th><th>In</th></tr>\n              \n                <tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n                <tr><th>Inpatient Encounter</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>\n              \n                <tr><th>Initial Population</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>\n              \n                <tr><th>Measure Population</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>\n              \n                <tr><th>Stratifier 1</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>\n              \n                <tr><th>Stratifier 2</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>\n              \n                <tr><th>Stratifier 3</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>\n              \n                <tr><th>Stratifier 4</th><th>Encounter</th><th>0</th><th>*</th><th>Out</th></tr>\n              \n                <tr><th>SDE Ethnicity</th><th>Coding</th><th>0</th><th>*</th><th>Out</th></tr>\n              \n                <tr><th>SDE Payer</th><th>Resource</th><th>0</th><th>*</th><th>Out</th></tr>\n              \n                <tr><th>SDE Race</th><th>Coding</th><th>0</th><th>*</th><th>Out</th></tr>\n              \n                <tr><th>SDE Sex</th><th>Coding</th><th>0</th><th>1</th><th>Out</th></tr>\n              \n            </table>\n          </td>\n        </tr>\n        \n\n        \n        <tr>\n          <th scope=\"row\"><b>Data Requirements:</b></th>\n          <td style=\"padding-left: 4px;\">\n            <table class=\"grid-dict\">\n              <tr><th><b>Type</b></th><th><b>Profile</b></th><th><b>MS</b></th><th><b>Code Filter</b></th></tr>\n              \n                <tr>\n                  <th>Encounter</th>\n                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>\n                  <th/>\n                  <th>\n                    \n                  </th>\n                </tr>\n              \n                <tr>\n                  <th>Encounter</th>\n                  <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>\n                  <th/>\n                  <th>\n                    \n                      <b>code filter: </b>\n                      \n                      <br/>\n                      \n                      \n                      <span style=\"padding-left: 4px;\">\n                          <b>path: </b><span>type</span>\n                      </span>\n                      \n                      <br/>\n                      \n                      \n                      \n                      <span style=\"padding-left: 4px;\">\n                          <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292</span>\n                      </span>\n                      \n                      \n                    \n                  </th>\n                </tr>\n              \n                <tr>\n                  <th>Condition</th>\n                  <th>http://hl7.org/fhir/StructureDefinition/Condition</th>\n                  <th/>\n                  <th>\n                    \n                      <b>code filter: </b>\n                      \n                      <br/>\n                      \n                      \n                      <span style=\"padding-left: 4px;\">\n                          <b>path: </b><span>id</span>\n                      </span>\n                      \n                      \n                      \n                      \n                    \n                  </th>\n                </tr>\n              \n                <tr>\n                  <th>Coverage</th>\n                  <th>http://hl7.org/fhir/StructureDefinition/Coverage</th>\n                  <th/>\n                  <th>\n                    \n                      <b>code filter: </b>\n                      \n                      <br/>\n                      \n                      \n                      <span style=\"padding-left: 4px;\">\n                          <b>path: </b><span>type</span>\n                      </span>\n                      \n                      <br/>\n                      \n                      \n                      \n                      <span style=\"padding-left: 4px;\">\n                          <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591</span>\n                      </span>\n                      \n                      \n                    \n                  </th>\n                </tr>\n              \n            </table>\n          </td>\n        </tr>\n        \n\n        \n        \n        <tr>\n          <td colspan=\"2\">\n            <table>\n              <tr><th><a id=\"cql-content\"><b>Content: </b></a> text/cql</th></tr>\n              <tr><td><pre><code class=\"language-cql\">library EXMComputableLibrary version '2.0.0'\r\n\r\n/*\r\nThis example is purely for illustration purposes to show how all the elements of a\r\nFHIR-based quality measure are represented. It is intentionally simplified to show\r\nspecific aspects of a measure, and is not intended as an example of a clinically\r\nmeaningful measure.\r\n*/\r\n\r\n/*\r\nNOTE: This is the same library as EXMLogic, being used to illustrate the different flavors of profiles:\r\n* Computable: Focusing on computable/design-time aspects\r\n* Executable: Focusing on run-time aspects\r\n* Publishable: Focusing on knowledge management aspects\r\n*/\r\n\r\nusing FHIR version '4.0.1'\r\n\r\ninclude FHIRHelpers version '4.0.1' called FHIRHelpers\r\n\r\ncodesystem &quot;Diagnosis Role&quot;: 'http://terminology.hl7.org/CodeSystem/diagnosis-role'\r\n\r\nvalueset &quot;Emergency Department Visit&quot; : 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292'\r\nvalueset &quot;Psychiatric/Mental Health Patient&quot; : 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.299'\r\nvalueset &quot;Hospital Settings&quot; : 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.126'\r\n\r\nvalueset &quot;ONC Administrative Sex&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1'\r\nvalueset &quot;Race&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.836'\r\nvalueset &quot;Ethnicity&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837'\r\nvalueset &quot;Payer&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591'\r\n\r\ncode &quot;Billing&quot;: 'billing' from &quot;Diagnosis Role&quot; display 'Billing'\r\n\r\nparameter &quot;Measurement Period&quot; Interval&lt;DateTime&gt;\r\n\r\ncontext Patient\r\n\r\ndefine &quot;Initial Population&quot; :\r\n  &quot;Inpatient Encounter&quot; Encounter\r\n\r\ndefine &quot;Measure Population&quot; :\r\n  &quot;Initial Population&quot;\r\n\r\ndefine function &quot;Measure Observation&quot; (Encounter &quot;Encounter&quot; ) :\r\n  duration in minutes of &quot;Related ED Visit&quot;(Encounter).period\r\n\r\ndefine &quot;Stratifier 1&quot; :\r\n  &quot;Inpatient Encounter&quot; Encounter\r\n    where not (PrincipalDiagnosis(Encounter).code in &quot;Psychiatric/Mental Health Patient&quot;)\r\n\r\ndefine &quot;Stratifier 2&quot; :\r\n  &quot;Inpatient Encounter&quot; Encounter\r\n    where PrincipalDiagnosis(Encounter).code in &quot;Psychiatric/Mental Health Patient&quot;\r\n\r\ndefine &quot;Stratifier 3&quot; :\r\n  &quot;Inpatient Encounter&quot; Encounter\r\n    where PrincipalDiagnosis(Encounter) is null\r\n\r\ndefine &quot;Stratifier 4&quot; :\r\n  &quot;Inpatient Encounter&quot; Encounter\r\n    where PrincipalDiagnosis(Encounter) is null\r\n\r\ndefine &quot;Inpatient Encounter&quot; :\r\n  [&quot;Encounter&quot;] Encounter\r\n    where LengthInDays(Encounter.period) &lt;= 120\r\n      and Encounter.period ends during &quot;Measurement Period&quot;\r\n\r\ndefine function &quot;PrincipalDiagnosis&quot;(Encounter Encounter):\r\n\t(singleton from (Encounter.diagnosis D where D.use ~ ToConcept(&quot;Billing&quot;) and D.rank.value = 1)) PD\r\n\t\treturn singleton from ([Condition: id in &quot;GetId&quot;(PD.condition.reference)])\r\n\r\ndefine function &quot;LengthInDays&quot;(Value Interval&lt;DateTime&gt;):\r\n\tdifference in days between start of Value and end of Value\r\n\r\ndefine function &quot;GetId&quot;(uri String):\r\n\tLast(Split(uri, '/'))\r\n\r\n//Measure Observation\r\ndefine function &quot;Related ED Visit&quot; (Encounter &quot;Encounter&quot; ) :\r\n  Last([&quot;Encounter&quot; : &quot;Emergency Department Visit&quot;] ED\r\n    where ED.status = 'finished'\r\n      and ED.period ends 1 hour or less before start of Encounter.period\r\n    sort by start of period )\r\n\r\ndefine &quot;SDE Ethnicity&quot;:\r\n  (flatten (\r\n    Patient.extension Extension\r\n      where Extension.url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity'\r\n        return Extension.extension\r\n  )) E\r\n    where E.url = 'ombCategory'\r\n      or E.url = 'detailed'\r\n    return E.value as Coding\r\n\r\ndefine &quot;SDE Payer&quot;:\r\n    [Coverage: type in &quot;Payer&quot;] Payer\r\n      return {\r\n        code: Payer.type,\r\n        period: Payer.period\r\n      }\r\n\r\ndefine &quot;SDE Race&quot;:\r\n  (flatten (\r\n    Patient.extension Extension\r\n      where Extension.url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race'\r\n        return Extension.extension\r\n  )) E\r\n    where E.url = 'ombCategory'\r\n      or E.url = 'detailed'\r\n    return E.value as Coding\r\n\r\ndefine &quot;SDE Sex&quot;:\r\n  case\r\n    when Patient.gender = 'male' then Code { code: 'M', system: 'http://hl7.org/fhir/v3/AdministrativeGender', display: 'Male' }\r\n    when Patient.gender = 'female' then Code { code: 'F', system: 'http://hl7.org/fhir/v3/AdministrativeGender', display: 'Female' }\r\n    else null\r\n  end\r\n</code></pre></td></tr>\n            </table>\n          </td>\n        </tr>\n        \n        \n        \n    </table>\n</div>\n</div>"
  },
  "extension" : [
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg",
      "valueCode" : "cqi"
    }
  ],
  "url" : "http://hl7.org/fhir/uv/cqfmeasures/Library/EXMComputableLibrary",
  "identifier" : [
    {
      "use" : "official",
      "system" : "http://example.org/fhir/cqi/ecqm/Library/Identifier",
      "value" : "EXMComputableLogic"
    }
  ],
  "version" : "2.0.0",
  "name" : "EXMComputableLibrary",
  "title" : "Example Computable Library",
  "status" : "active",
  "experimental" : true,
  "type" : {
    "coding" : [
      {
        "system" : "http://terminology.hl7.org/CodeSystem/library-type",
        "code" : "logic-library"
      }
    ]
  },
  "date" : "2019-09-03",
  "publisher" : "HL7 International / Clinical Quality Information",
  "contact" : [
    {
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://www.hl7.org/Special/committees/cqi"
        }
      ]
    }
  ],
  "description" : "This library is used as an example in the FHIR Quality Measure Implementation Guide",
  "jurisdiction" : [
    {
      "coding" : [
        {
          "system" : "http://unstats.un.org/unsd/methods/m49/m49.htm",
          "code" : "001"
        }
      ]
    }
  ],
  "approvalDate" : "2019-08-03",
  "lastReviewDate" : "2019-08-03",
  "relatedArtifact" : [
    {
      "type" : "depends-on",
      "resource" : "http://fhir.org/guides/common/Library/FHIR-ModelInfo|4.0.1"
    },
    {
      "type" : "depends-on",
      "resource" : "http://fhir.org/guides/common/Library/FHIRHelpers|4.0.1"
    },
    {
      "type" : "depends-on",
      "resource" : "http://terminology.hl7.org/CodeSystem/diagnosis-role"
    },
    {
      "type" : "depends-on",
      "resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"
    },
    {
      "type" : "depends-on",
      "resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.299"
    },
    {
      "type" : "depends-on",
      "resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.126"
    },
    {
      "type" : "depends-on",
      "resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1"
    },
    {
      "type" : "depends-on",
      "resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.836"
    },
    {
      "type" : "depends-on",
      "resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837"
    },
    {
      "type" : "depends-on",
      "resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591"
    }
  ],
  "parameter" : [
    {
      "name" : "Measurement Period",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "type" : "Period"
    },
    {
      "name" : "Patient",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "Patient"
    },
    {
      "name" : "Inpatient Encounter",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Encounter"
    },
    {
      "name" : "Initial Population",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Encounter"
    },
    {
      "name" : "Measure Population",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Encounter"
    },
    {
      "name" : "Stratifier 1",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Encounter"
    },
    {
      "name" : "Stratifier 2",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Encounter"
    },
    {
      "name" : "Stratifier 3",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Encounter"
    },
    {
      "name" : "Stratifier 4",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Encounter"
    },
    {
      "name" : "SDE Ethnicity",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Coding"
    },
    {
      "name" : "SDE Payer",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Resource"
    },
    {
      "name" : "SDE Race",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "type" : "Coding"
    },
    {
      "name" : "SDE Sex",
      "use" : "out",
      "min" : 0,
      "max" : "1",
      "type" : "Coding"
    }
  ],
  "dataRequirement" : [
    {
      "type" : "Encounter",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Encounter"
      ]
    },
    {
      "type" : "Encounter",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Encounter"
      ],
      "codeFilter" : [
        {
          "path" : "type",
          "valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"
        }
      ]
    },
    {
      "type" : "Condition",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Condition"
      ],
      "codeFilter" : [
        {
          "path" : "id"
        }
      ]
    },
    {
      "type" : "Coverage",
      "profile" : [
        🔗 "http://hl7.org/fhir/StructureDefinition/Coverage"
      ],
      "codeFilter" : [
        {
          "path" : "type",
          "valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591"
        }
      ]
    }
  ],
  "content" : [
    {
      "contentType" : "text/cql",
      "language" : "AllLanguages",
      "data" : "bGlicmFyeSBFWE1Db21wdXRhYmxlTGlicmFyeSB2ZXJzaW9uICcyLjAuMCcNCg0KLyoNClRoaXMgZXhhbXBsZSBpcyBwdXJlbHkgZm9yIGlsbHVzdHJhdGlvbiBwdXJwb3NlcyB0byBzaG93IGhvdyBhbGwgdGhlIGVsZW1lbnRzIG9mIGENCkZISVItYmFzZWQgcXVhbGl0eSBtZWFzdXJlIGFyZSByZXByZXNlbnRlZC4gSXQgaXMgaW50ZW50aW9uYWxseSBzaW1wbGlmaWVkIHRvIHNob3cNCnNwZWNpZmljIGFzcGVjdHMgb2YgYSBtZWFzdXJlLCBhbmQgaXMgbm90IGludGVuZGVkIGFzIGFuIGV4YW1wbGUgb2YgYSBjbGluaWNhbGx5DQptZWFuaW5nZnVsIG1lYXN1cmUuDQoqLw0KDQovKg0KTk9URTogVGhpcyBpcyB0aGUgc2FtZSBsaWJyYXJ5IGFzIEVYTUxvZ2ljLCBiZWluZyB1c2VkIHRvIGlsbHVzdHJhdGUgdGhlIGRpZmZlcmVudCBmbGF2b3JzIG9mIHByb2ZpbGVzOg0KKiBDb21wdXRhYmxlOiBGb2N1c2luZyBvbiBjb21wdXRhYmxlL2Rlc2lnbi10aW1lIGFzcGVjdHMNCiogRXhlY3V0YWJsZTogRm9jdXNpbmcgb24gcnVuLXRpbWUgYXNwZWN0cw0KKiBQdWJsaXNoYWJsZTogRm9jdXNpbmcgb24ga25vd2xlZGdlIG1hbmFnZW1lbnQgYXNwZWN0cw0KKi8NCg0KdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScNCg0KaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScgY2FsbGVkIEZISVJIZWxwZXJzDQoNCmNvZGVzeXN0ZW0gIkRpYWdub3NpcyBSb2xlIjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vZGlhZ25vc2lzLXJvbGUnDQoNCnZhbHVlc2V0ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBWaXNpdCIgOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMTE3LjEuNy4xLjI5MicNCnZhbHVlc2V0ICJQc3ljaGlhdHJpYy9NZW50YWwgSGVhbHRoIFBhdGllbnQiIDogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjExNy4xLjcuMS4yOTknDQp2YWx1ZXNldCAiSG9zcGl0YWwgU2V0dGluZ3MiIDogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTExMS4xMjYnDQoNCnZhbHVlc2V0ICJPTkMgQWRtaW5pc3RyYXRpdmUgU2V4IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMScNCnZhbHVlc2V0ICJSYWNlIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExNDIyMi40LjExLjgzNicNCnZhbHVlc2V0ICJFdGhuaWNpdHkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTE0MjIyLjQuMTEuODM3Jw0KdmFsdWVzZXQgIlBheWVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExNDIyMi40LjExLjM1OTEnDQoNCmNvZGUgIkJpbGxpbmciOiAnYmlsbGluZycgZnJvbSAiRGlhZ25vc2lzIFJvbGUiIGRpc3BsYXkgJ0JpbGxpbmcnDQoNCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiBJbnRlcnZhbDxEYXRlVGltZT4NCg0KY29udGV4dCBQYXRpZW50DQoNCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIiA6DQogICJJbnBhdGllbnQgRW5jb3VudGVyIiBFbmNvdW50ZXINCg0KZGVmaW5lICJNZWFzdXJlIFBvcHVsYXRpb24iIDoNCiAgIkluaXRpYWwgUG9wdWxhdGlvbiINCg0KZGVmaW5lIGZ1bmN0aW9uICJNZWFzdXJlIE9ic2VydmF0aW9uIiAoRW5jb3VudGVyICJFbmNvdW50ZXIiICkgOg0KICBkdXJhdGlvbiBpbiBtaW51dGVzIG9mICJSZWxhdGVkIEVEIFZpc2l0IihFbmNvdW50ZXIpLnBlcmlvZA0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgMSIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgbm90IChQcmluY2lwYWxEaWFnbm9zaXMoRW5jb3VudGVyKS5jb2RlIGluICJQc3ljaGlhdHJpYy9NZW50YWwgSGVhbHRoIFBhdGllbnQiKQ0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgMiIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgUHJpbmNpcGFsRGlhZ25vc2lzKEVuY291bnRlcikuY29kZSBpbiAiUHN5Y2hpYXRyaWMvTWVudGFsIEhlYWx0aCBQYXRpZW50Ig0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgMyIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgUHJpbmNpcGFsRGlhZ25vc2lzKEVuY291bnRlcikgaXMgbnVsbA0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgNCIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgUHJpbmNpcGFsRGlhZ25vc2lzKEVuY291bnRlcikgaXMgbnVsbA0KDQpkZWZpbmUgIklucGF0aWVudCBFbmNvdW50ZXIiIDoNCiAgWyJFbmNvdW50ZXIiXSBFbmNvdW50ZXINCiAgICB3aGVyZSBMZW5ndGhJbkRheXMoRW5jb3VudGVyLnBlcmlvZCkgPD0gMTIwDQogICAgICBhbmQgRW5jb3VudGVyLnBlcmlvZCBlbmRzIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIg0KDQpkZWZpbmUgZnVuY3Rpb24gIlByaW5jaXBhbERpYWdub3NpcyIoRW5jb3VudGVyIEVuY291bnRlcik6DQoJKHNpbmdsZXRvbiBmcm9tIChFbmNvdW50ZXIuZGlhZ25vc2lzIEQgd2hlcmUgRC51c2UgfiBUb0NvbmNlcHQoIkJpbGxpbmciKSBhbmQgRC5yYW5rLnZhbHVlID0gMSkpIFBEDQoJCXJldHVybiBzaW5nbGV0b24gZnJvbSAoW0NvbmRpdGlvbjogaWQgaW4gIkdldElkIihQRC5jb25kaXRpb24ucmVmZXJlbmNlKV0pDQoNCmRlZmluZSBmdW5jdGlvbiAiTGVuZ3RoSW5EYXlzIihWYWx1ZSBJbnRlcnZhbDxEYXRlVGltZT4pOg0KCWRpZmZlcmVuY2UgaW4gZGF5cyBiZXR3ZWVuIHN0YXJ0IG9mIFZhbHVlIGFuZCBlbmQgb2YgVmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uICJHZXRJZCIodXJpIFN0cmluZyk6DQoJTGFzdChTcGxpdCh1cmksICcvJykpDQoNCi8vTWVhc3VyZSBPYnNlcnZhdGlvbg0KZGVmaW5lIGZ1bmN0aW9uICJSZWxhdGVkIEVEIFZpc2l0IiAoRW5jb3VudGVyICJFbmNvdW50ZXIiICkgOg0KICBMYXN0KFsiRW5jb3VudGVyIiA6ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBWaXNpdCJdIEVEDQogICAgd2hlcmUgRUQuc3RhdHVzID0gJ2ZpbmlzaGVkJw0KICAgICAgYW5kIEVELnBlcmlvZCBlbmRzIDEgaG91ciBvciBsZXNzIGJlZm9yZSBzdGFydCBvZiBFbmNvdW50ZXIucGVyaW9kDQogICAgc29ydCBieSBzdGFydCBvZiBwZXJpb2QgKQ0KDQpkZWZpbmUgIlNERSBFdGhuaWNpdHkiOg0KICAoZmxhdHRlbiAoDQogICAgUGF0aWVudC5leHRlbnNpb24gRXh0ZW5zaW9uDQogICAgICB3aGVyZSBFeHRlbnNpb24udXJsID0gJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY29yZS9TdHJ1Y3R1cmVEZWZpbml0aW9uL3VzLWNvcmUtZXRobmljaXR5Jw0KICAgICAgICByZXR1cm4gRXh0ZW5zaW9uLmV4dGVuc2lvbg0KICApKSBFDQogICAgd2hlcmUgRS51cmwgPSAnb21iQ2F0ZWdvcnknDQogICAgICBvciBFLnVybCA9ICdkZXRhaWxlZCcNCiAgICByZXR1cm4gRS52YWx1ZSBhcyBDb2RpbmcNCg0KZGVmaW5lICJTREUgUGF5ZXIiOg0KICAgIFtDb3ZlcmFnZTogdHlwZSBpbiAiUGF5ZXIiXSBQYXllcg0KICAgICAgcmV0dXJuIHsNCiAgICAgICAgY29kZTogUGF5ZXIudHlwZSwNCiAgICAgICAgcGVyaW9kOiBQYXllci5wZXJpb2QNCiAgICAgIH0NCg0KZGVmaW5lICJTREUgUmFjZSI6DQogIChmbGF0dGVuICgNCiAgICBQYXRpZW50LmV4dGVuc2lvbiBFeHRlbnNpb24NCiAgICAgIHdoZXJlIEV4dGVuc2lvbi51cmwgPSAnaHR0cDovL2hsNy5vcmcvZmhpci91cy9jb3JlL1N0cnVjdHVyZURlZmluaXRpb24vdXMtY29yZS1yYWNlJw0KICAgICAgICByZXR1cm4gRXh0ZW5zaW9uLmV4dGVuc2lvbg0KICApKSBFDQogICAgd2hlcmUgRS51cmwgPSAnb21iQ2F0ZWdvcnknDQogICAgICBvciBFLnVybCA9ICdkZXRhaWxlZCcNCiAgICByZXR1cm4gRS52YWx1ZSBhcyBDb2RpbmcNCg0KZGVmaW5lICJTREUgU2V4IjoNCiAgY2FzZQ0KICAgIHdoZW4gUGF0aWVudC5nZW5kZXIgPSAnbWFsZScgdGhlbiBDb2RlIHsgY29kZTogJ00nLCBzeXN0ZW06ICdodHRwOi8vaGw3Lm9yZy9maGlyL3YzL0FkbWluaXN0cmF0aXZlR2VuZGVyJywgZGlzcGxheTogJ01hbGUnIH0NCiAgICB3aGVuIFBhdGllbnQuZ2VuZGVyID0gJ2ZlbWFsZScgdGhlbiBDb2RlIHsgY29kZTogJ0YnLCBzeXN0ZW06ICdodHRwOi8vaGw3Lm9yZy9maGlyL3YzL0FkbWluaXN0cmF0aXZlR2VuZGVyJywgZGlzcGxheTogJ0ZlbWFsZScgfQ0KICAgIGVsc2UgbnVsbA0KICBlbmQNCg=="
    }
  ]
}