This page is part of the Quality Measure STU2 for FHIR R4 Implementation Guide (v2.0.0: STU 2) based on FHIR R4. The current version which supercedes this version is 3.0.0. For a full list of available versions, see the Directory of published versions
{ "resourceType" : "Library", "id" : "EXMComputableLibrary", "meta" : { "profile" : [ "http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/computable-library-cqfm" ] }, "text" : { "status" : "extensions", "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\r\n <table class=\"grid dict\">\r\n \r\n <tr>\r\n <th scope=\"row\"><b>Id: </b></th>\r\n <td style=\"padding-left: 25px;\">EXMComputableLibrary</td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Url: </b></th>\r\n <td style=\"padding-left: 25px;\">http://hl7.org/fhir/us/cqfmeasures/Library/EXMComputableLibrary</td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Version: </b></th>\r\n <td style=\"padding-left: 25px;\">2.0.0</td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Identifier: </b></th>\r\n <td style=\"padding-left: 25px;\">\r\n \r\n \r\n <p style=\"margin-bottom: 5px;\">\r\n <b>value: </b> <span>EXMComputableLogic</span>\r\n </p>\r\n \r\n </td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Name: </b></th>\r\n <td style=\"padding-left: 25px;\">EXMComputableLibrary</td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Title: </b></th>\r\n <td style=\"padding-left: 25px;\">Example Computable Library</td>\r\n </tr>\r\n \r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Status: </b></th>\r\n <td style=\"padding-left: 25px;\">active</td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Experimental: </b></th>\r\n <td style=\"padding-left: 25px;\">true</td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Type: </b></th>\r\n <td style=\"padding-left: 25px;\">\r\n \r\n \r\n \r\n <p style=\"margin-bottom: 5px;\">\r\n <b>system: </b> <span>http://terminology.hl7.org/CodeSystem/library-type</span>\r\n </p>\r\n \r\n \r\n <p style=\"margin-bottom: 5px;\">\r\n <b>code: </b> <span>logic-library</span>\r\n </p>\r\n \r\n \r\n \r\n \r\n \r\n </td>\r\n </tr>\r\n \r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Date: </b></th>\r\n <td style=\"padding-left: 25px;\">2019-09-03</td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Publisher: </b></th>\r\n <td style=\"padding-left: 25px;\">Health Level 7 International - Clinical Quality Information Work Group</td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Description: </b></th>\r\n <td style=\"padding-left: 25px;\">This library is used as an example in the FHIR Quality Measure Implementation Guide</td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Use Context: </b></th>\r\n <td style=\"padding-left: 25px;\">\r\n <table class=\"grid-dict\">\r\n <tr><th><b>code</b></th><th><b>value</b></th></tr>\r\n \r\n <tr>\r\n <td>program</td>\r\n <td>eh-cah</td>\r\n </tr>\r\n \r\n </table>\r\n </td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Jurisdiction: </b></th>\r\n <td style=\"padding-left: 25px;\">US</td>\r\n </tr>\r\n \r\n \r\n \r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Approval Date: </b></th>\r\n <td style=\"padding-left: 25px;\">2019-08-03</td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Last Review Date: </b></th>\r\n <td style=\"padding-left: 25px;\">2019-08-03</td>\r\n </tr>\r\n \r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Related Artifacts: </b></th>\r\n <td style=\"padding-left: 25px;\">\r\n <table class=\"grid-dict\">\r\n <tr><th><b>Type</b></th><th><b>Resource</b></th></tr>\r\n \r\n <tr><td>depends-on</td><td>http://hl7.org/fhir/Library/FHIR-ModelInfo|4.0.1</td></tr>\r\n \r\n <tr><td>depends-on</td><td>http://hl7.org/fhir/Library/FHIRHelpers|4.0.1</td></tr>\r\n \r\n <tr><td>depends-on</td><td>http://terminology.hl7.org/CodeSystem/diagnosis-role</td></tr>\r\n \r\n <tr><td>depends-on</td><td>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292</td></tr>\r\n \r\n <tr><td>depends-on</td><td>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.299</td></tr>\r\n \r\n <tr><td>depends-on</td><td>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.126</td></tr>\r\n \r\n <tr><td>depends-on</td><td>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1</td></tr>\r\n \r\n <tr><td>depends-on</td><td>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.836</td></tr>\r\n \r\n <tr><td>depends-on</td><td>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837</td></tr>\r\n \r\n <tr><td>depends-on</td><td>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591</td></tr>\r\n \r\n </table>\r\n </td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Parameters: </b></th>\r\n <td style=\"padding-left: 25px;\">\r\n <table class=\"grid-dict\">\r\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>\r\n \r\n <tr><th>Measurement Period</th><th>Period</th><th>0</th><th>1</th><th>in</th></tr>\r\n \r\n <tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>out</th></tr>\r\n \r\n <tr><th>Inpatient Encounter</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr>\r\n \r\n <tr><th>Initial Population</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr>\r\n \r\n <tr><th>Measure Population</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr>\r\n \r\n <tr><th>Stratifier 1</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr>\r\n \r\n <tr><th>Stratifier 2</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr>\r\n \r\n <tr><th>Stratifier 3</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr>\r\n \r\n <tr><th>Stratifier 4</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr>\r\n \r\n <tr><th>SDE Ethnicity</th><th>Coding</th><th>0</th><th>*</th><th>out</th></tr>\r\n \r\n <tr><th>SDE Payer</th><th>Any</th><th>0</th><th>*</th><th>out</th></tr>\r\n \r\n <tr><th>SDE Race</th><th>Coding</th><th>0</th><th>*</th><th>out</th></tr>\r\n \r\n <tr><th>SDE Sex</th><th>Coding</th><th>0</th><th>1</th><th>out</th></tr>\r\n \r\n </table>\r\n </td>\r\n </tr>\r\n \r\n \r\n <tr>\r\n <th scope=\"row\"><b>Data Requirements:</b></th>\r\n <td style=\"padding-left: 25px;\">\r\n <table class=\"grid-dict\">\r\n <tr><th><b>Type</b></th><th><b>Profile</b></th><th><b>MS</b></th><th><b>Code Filter</b></th></tr>\r\n \r\n <tr>\r\n <th>Encounter</th>\r\n <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>\r\n <th></th>\r\n <th>\r\n \r\n </th>\r\n </tr>\r\n \r\n <tr>\r\n <th>Encounter</th>\r\n <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>\r\n <th></th>\r\n <th>\r\n \r\n <p style=\"margin-bottom: 5px;\">\r\n <b>code filter: </b>\r\n \r\n <br/>\r\n \r\n \r\n <span style=\"padding-left: 25px;\">\r\n <b>path: </b><span>type</span>\r\n </span>\r\n \r\n <br/>\r\n \r\n \r\n \r\n <span style=\"padding-left: 25px;\">\r\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>\r\n </span>\r\n \r\n \r\n </p>\r\n \r\n </th>\r\n </tr>\r\n \r\n <tr>\r\n <th>Condition</th>\r\n <th>http://hl7.org/fhir/StructureDefinition/Condition</th>\r\n <th></th>\r\n <th>\r\n \r\n <p style=\"margin-bottom: 5px;\">\r\n <b>code filter: </b>\r\n \r\n <br/>\r\n \r\n \r\n <span style=\"padding-left: 25px;\">\r\n <b>path: </b><span>id</span>\r\n </span>\r\n \r\n \r\n \r\n \r\n </p>\r\n \r\n </th>\r\n </tr>\r\n \r\n <tr>\r\n <th>Coverage</th>\r\n <th>http://hl7.org/fhir/StructureDefinition/Coverage</th>\r\n <th></th>\r\n <th>\r\n \r\n <p style=\"margin-bottom: 5px;\">\r\n <b>code filter: </b>\r\n \r\n <br/>\r\n \r\n \r\n <span style=\"padding-left: 25px;\">\r\n <b>path: </b><span>type</span>\r\n </span>\r\n \r\n <br/>\r\n \r\n \r\n \r\n <span style=\"padding-left: 25px;\">\r\n <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591</span>\r\n </span>\r\n \r\n \r\n </p>\r\n \r\n </th>\r\n </tr>\r\n \r\n </table>\r\n </td>\r\n </tr>\r\n \r\n \r\n \r\n <tr>\r\n <table>\r\n <tr><th><a id=\"cql-content\"><b>Content: </b></a> text/cql</th></tr>\r\n <tr><td><pre><code>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 \"Diagnosis Role\": 'http://terminology.hl7.org/CodeSystem/diagnosis-role'\r\n\r\nvalueset \"Emergency Department Visit\" : 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292'\r\nvalueset \"Psychiatric/Mental Health Patient\" : 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.299'\r\nvalueset \"Hospital Settings\" : 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.126'\r\n\r\nvalueset \"ONC Administrative Sex\": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1'\r\nvalueset \"Race\": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.836'\r\nvalueset \"Ethnicity\": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837'\r\nvalueset \"Payer\": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591'\r\n\r\ncode \"Billing\": 'billing' from \"Diagnosis Role\" display 'Billing'\r\n\r\nparameter \"Measurement Period\" Interval<DateTime>\r\n\r\ncontext Patient\r\n\r\ndefine \"Initial Population\" :\r\n \"Inpatient Encounter\" Encounter\r\n\r\ndefine \"Measure Population\" :\r\n \"Initial Population\"\r\n\r\ndefine function \"Measure Observation\" (Encounter \"Encounter\" ) :\r\n duration in minutes of \"Related ED Visit\"(Encounter).period\r\n\r\ndefine \"Stratifier 1\" :\r\n \"Inpatient Encounter\" Encounter\r\n where not (PrincipalDiagnosis(Encounter).code in \"Psychiatric/Mental Health Patient\")\r\n\r\ndefine \"Stratifier 2\" :\r\n \"Inpatient Encounter\" Encounter\r\n where PrincipalDiagnosis(Encounter).code in \"Psychiatric/Mental Health Patient\"\r\n\r\ndefine \"Stratifier 3\" :\r\n \"Inpatient Encounter\" Encounter\r\n where PrincipalDiagnosis(Encounter) is null\r\n\r\ndefine \"Stratifier 4\" :\r\n \"Inpatient Encounter\" Encounter\r\n where PrincipalDiagnosis(Encounter) is null\r\n\r\ndefine \"Inpatient Encounter\" :\r\n [\"Encounter\"] Encounter\r\n where LengthInDays(Encounter.period) <= 120\r\n and Encounter.period ends during \"Measurement Period\"\r\n\r\ndefine function \"PrincipalDiagnosis\"(Encounter Encounter):\r\n\t(singleton from (Encounter.diagnosis D where D.use ~ ToConcept(\"Billing\") and D.rank.value = 1)) PD\r\n\t\treturn singleton from ([Condition: id in \"GetId\"(PD.condition.reference)])\r\n\r\ndefine function \"LengthInDays\"(Value Interval<DateTime>):\r\n\tdifference in days between start of Value and end of Value\r\n\r\ndefine function \"GetId\"(uri String):\r\n\tLast(Split(uri, '/'))\r\n\r\n//Measure Observation\r\ndefine function \"Related ED Visit\" (Encounter \"Encounter\" ) :\r\n Last([\"Encounter\" : \"Emergency Department Visit\"] 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 \"SDE Ethnicity\":\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 \"SDE Payer\":\r\n [Coverage: type in \"Payer\"] Payer\r\n return {\r\n code: Payer.type,\r\n period: Payer.period\r\n }\r\n\r\ndefine \"SDE Race\":\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 \"SDE Sex\":\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>\r\n </table>\r\n </tr>\r\n \r\n \r\n \r\n </table>\r\n</div>" }, "url" : "http://hl7.org/fhir/us/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" : "Health Level 7 International - Clinical Quality Information Work Group", "contact" : [ { "telecom" : [ { "system" : "url", "value" : "http://www.hl7.org/Special/committees/cqi/index.cfm" } ] } ], "description" : "This library is used as an example in the FHIR Quality Measure Implementation Guide", "useContext" : [ { "code" : { "system" : "http://terminology.hl7.org/CodeSystem/usage-context-type", "code" : "program" }, "valueCodeableConcept" : { "coding" : [ { "system" : "http://hl7.org/fhir/us/cqfmeasures/CodeSystem/quality-programs", "code" : "eh-cah", "display" : "EH/CAH" } ] } } ], "jurisdiction" : [ { "coding" : [ { "system" : "urn:iso:std:iso:3166", "code" : "US", "display" : "United States of America" } ] } ], "approvalDate" : "2019-08-03", "lastReviewDate" : "2019-08-03", "relatedArtifact" : [ { "type" : "depends-on", "resource" : "http://hl7.org/fhir/Library/FHIR-ModelInfo|4.0.1" }, { "type" : "depends-on", "resource" : "http://hl7.org/fhir/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" : "Any" }, { "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", "data" : "bGlicmFyeSBFWE1Db21wdXRhYmxlTGlicmFyeSB2ZXJzaW9uICcyLjAuMCcNCg0KLyoNClRoaXMgZXhhbXBsZSBpcyBwdXJlbHkgZm9yIGlsbHVzdHJhdGlvbiBwdXJwb3NlcyB0byBzaG93IGhvdyBhbGwgdGhlIGVsZW1lbnRzIG9mIGENCkZISVItYmFzZWQgcXVhbGl0eSBtZWFzdXJlIGFyZSByZXByZXNlbnRlZC4gSXQgaXMgaW50ZW50aW9uYWxseSBzaW1wbGlmaWVkIHRvIHNob3cNCnNwZWNpZmljIGFzcGVjdHMgb2YgYSBtZWFzdXJlLCBhbmQgaXMgbm90IGludGVuZGVkIGFzIGFuIGV4YW1wbGUgb2YgYSBjbGluaWNhbGx5DQptZWFuaW5nZnVsIG1lYXN1cmUuDQoqLw0KDQovKg0KTk9URTogVGhpcyBpcyB0aGUgc2FtZSBsaWJyYXJ5IGFzIEVYTUxvZ2ljLCBiZWluZyB1c2VkIHRvIGlsbHVzdHJhdGUgdGhlIGRpZmZlcmVudCBmbGF2b3JzIG9mIHByb2ZpbGVzOg0KKiBDb21wdXRhYmxlOiBGb2N1c2luZyBvbiBjb21wdXRhYmxlL2Rlc2lnbi10aW1lIGFzcGVjdHMNCiogRXhlY3V0YWJsZTogRm9jdXNpbmcgb24gcnVuLXRpbWUgYXNwZWN0cw0KKiBQdWJsaXNoYWJsZTogRm9jdXNpbmcgb24ga25vd2xlZGdlIG1hbmFnZW1lbnQgYXNwZWN0cw0KKi8NCg0KdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScNCg0KaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScgY2FsbGVkIEZISVJIZWxwZXJzDQoNCmNvZGVzeXN0ZW0gIkRpYWdub3NpcyBSb2xlIjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vZGlhZ25vc2lzLXJvbGUnDQoNCnZhbHVlc2V0ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBWaXNpdCIgOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMTE3LjEuNy4xLjI5MicNCnZhbHVlc2V0ICJQc3ljaGlhdHJpYy9NZW50YWwgSGVhbHRoIFBhdGllbnQiIDogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjExNy4xLjcuMS4yOTknDQp2YWx1ZXNldCAiSG9zcGl0YWwgU2V0dGluZ3MiIDogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTExMS4xMjYnDQoNCnZhbHVlc2V0ICJPTkMgQWRtaW5pc3RyYXRpdmUgU2V4IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMScNCnZhbHVlc2V0ICJSYWNlIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExNDIyMi40LjExLjgzNicNCnZhbHVlc2V0ICJFdGhuaWNpdHkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTE0MjIyLjQuMTEuODM3Jw0KdmFsdWVzZXQgIlBheWVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExNDIyMi40LjExLjM1OTEnDQoNCmNvZGUgIkJpbGxpbmciOiAnYmlsbGluZycgZnJvbSAiRGlhZ25vc2lzIFJvbGUiIGRpc3BsYXkgJ0JpbGxpbmcnDQoNCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiBJbnRlcnZhbDxEYXRlVGltZT4NCg0KY29udGV4dCBQYXRpZW50DQoNCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIiA6DQogICJJbnBhdGllbnQgRW5jb3VudGVyIiBFbmNvdW50ZXINCg0KZGVmaW5lICJNZWFzdXJlIFBvcHVsYXRpb24iIDoNCiAgIkluaXRpYWwgUG9wdWxhdGlvbiINCg0KZGVmaW5lIGZ1bmN0aW9uICJNZWFzdXJlIE9ic2VydmF0aW9uIiAoRW5jb3VudGVyICJFbmNvdW50ZXIiICkgOg0KICBkdXJhdGlvbiBpbiBtaW51dGVzIG9mICJSZWxhdGVkIEVEIFZpc2l0IihFbmNvdW50ZXIpLnBlcmlvZA0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgMSIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgbm90IChQcmluY2lwYWxEaWFnbm9zaXMoRW5jb3VudGVyKS5jb2RlIGluICJQc3ljaGlhdHJpYy9NZW50YWwgSGVhbHRoIFBhdGllbnQiKQ0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgMiIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgUHJpbmNpcGFsRGlhZ25vc2lzKEVuY291bnRlcikuY29kZSBpbiAiUHN5Y2hpYXRyaWMvTWVudGFsIEhlYWx0aCBQYXRpZW50Ig0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgMyIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgUHJpbmNpcGFsRGlhZ25vc2lzKEVuY291bnRlcikgaXMgbnVsbA0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgNCIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgUHJpbmNpcGFsRGlhZ25vc2lzKEVuY291bnRlcikgaXMgbnVsbA0KDQpkZWZpbmUgIklucGF0aWVudCBFbmNvdW50ZXIiIDoNCiAgWyJFbmNvdW50ZXIiXSBFbmNvdW50ZXINCiAgICB3aGVyZSBMZW5ndGhJbkRheXMoRW5jb3VudGVyLnBlcmlvZCkgPD0gMTIwDQogICAgICBhbmQgRW5jb3VudGVyLnBlcmlvZCBlbmRzIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIg0KDQpkZWZpbmUgZnVuY3Rpb24gIlByaW5jaXBhbERpYWdub3NpcyIoRW5jb3VudGVyIEVuY291bnRlcik6DQoJKHNpbmdsZXRvbiBmcm9tIChFbmNvdW50ZXIuZGlhZ25vc2lzIEQgd2hlcmUgRC51c2UgfiBUb0NvbmNlcHQoIkJpbGxpbmciKSBhbmQgRC5yYW5rLnZhbHVlID0gMSkpIFBEDQoJCXJldHVybiBzaW5nbGV0b24gZnJvbSAoW0NvbmRpdGlvbjogaWQgaW4gIkdldElkIihQRC5jb25kaXRpb24ucmVmZXJlbmNlKV0pDQoNCmRlZmluZSBmdW5jdGlvbiAiTGVuZ3RoSW5EYXlzIihWYWx1ZSBJbnRlcnZhbDxEYXRlVGltZT4pOg0KCWRpZmZlcmVuY2UgaW4gZGF5cyBiZXR3ZWVuIHN0YXJ0IG9mIFZhbHVlIGFuZCBlbmQgb2YgVmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uICJHZXRJZCIodXJpIFN0cmluZyk6DQoJTGFzdChTcGxpdCh1cmksICcvJykpDQoNCi8vTWVhc3VyZSBPYnNlcnZhdGlvbg0KZGVmaW5lIGZ1bmN0aW9uICJSZWxhdGVkIEVEIFZpc2l0IiAoRW5jb3VudGVyICJFbmNvdW50ZXIiICkgOg0KICBMYXN0KFsiRW5jb3VudGVyIiA6ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBWaXNpdCJdIEVEDQogICAgd2hlcmUgRUQuc3RhdHVzID0gJ2ZpbmlzaGVkJw0KICAgICAgYW5kIEVELnBlcmlvZCBlbmRzIDEgaG91ciBvciBsZXNzIGJlZm9yZSBzdGFydCBvZiBFbmNvdW50ZXIucGVyaW9kDQogICAgc29ydCBieSBzdGFydCBvZiBwZXJpb2QgKQ0KDQpkZWZpbmUgIlNERSBFdGhuaWNpdHkiOg0KICAoZmxhdHRlbiAoDQogICAgUGF0aWVudC5leHRlbnNpb24gRXh0ZW5zaW9uDQogICAgICB3aGVyZSBFeHRlbnNpb24udXJsID0gJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY29yZS9TdHJ1Y3R1cmVEZWZpbml0aW9uL3VzLWNvcmUtZXRobmljaXR5Jw0KICAgICAgICByZXR1cm4gRXh0ZW5zaW9uLmV4dGVuc2lvbg0KICApKSBFDQogICAgd2hlcmUgRS51cmwgPSAnb21iQ2F0ZWdvcnknDQogICAgICBvciBFLnVybCA9ICdkZXRhaWxlZCcNCiAgICByZXR1cm4gRS52YWx1ZSBhcyBDb2RpbmcNCg0KZGVmaW5lICJTREUgUGF5ZXIiOg0KICAgIFtDb3ZlcmFnZTogdHlwZSBpbiAiUGF5ZXIiXSBQYXllcg0KICAgICAgcmV0dXJuIHsNCiAgICAgICAgY29kZTogUGF5ZXIudHlwZSwNCiAgICAgICAgcGVyaW9kOiBQYXllci5wZXJpb2QNCiAgICAgIH0NCg0KZGVmaW5lICJTREUgUmFjZSI6DQogIChmbGF0dGVuICgNCiAgICBQYXRpZW50LmV4dGVuc2lvbiBFeHRlbnNpb24NCiAgICAgIHdoZXJlIEV4dGVuc2lvbi51cmwgPSAnaHR0cDovL2hsNy5vcmcvZmhpci91cy9jb3JlL1N0cnVjdHVyZURlZmluaXRpb24vdXMtY29yZS1yYWNlJw0KICAgICAgICByZXR1cm4gRXh0ZW5zaW9uLmV4dGVuc2lvbg0KICApKSBFDQogICAgd2hlcmUgRS51cmwgPSAnb21iQ2F0ZWdvcnknDQogICAgICBvciBFLnVybCA9ICdkZXRhaWxlZCcNCiAgICByZXR1cm4gRS52YWx1ZSBhcyBDb2RpbmcNCg0KZGVmaW5lICJTREUgU2V4IjoNCiAgY2FzZQ0KICAgIHdoZW4gUGF0aWVudC5nZW5kZXIgPSAnbWFsZScgdGhlbiBDb2RlIHsgY29kZTogJ00nLCBzeXN0ZW06ICdodHRwOi8vaGw3Lm9yZy9maGlyL3YzL0FkbWluaXN0cmF0aXZlR2VuZGVyJywgZGlzcGxheTogJ01hbGUnIH0NCiAgICB3aGVuIFBhdGllbnQuZ2VuZGVyID0gJ2ZlbWFsZScgdGhlbiBDb2RlIHsgY29kZTogJ0YnLCBzeXN0ZW06ICdodHRwOi8vaGw3Lm9yZy9maGlyL3YzL0FkbWluaXN0cmF0aXZlR2VuZGVyJywgZGlzcGxheTogJ0ZlbWFsZScgfQ0KICAgIGVsc2UgbnVsbA0KICBlbmQNCg==" } ] }