dQM CMS Content Implementation Guide
2026.1.0 - CI Build
dQM CMS Content Implementation Guide, published by cqframework. This guide is not an authorized publication; it is the continuous build for version 2026.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/cqframework/dqm-content-cms-2026/ and changes regularly. See the Directory of published versions
| Page standards status: Informative | Maturity Level: 1 |
<Library xmlns="http://hl7.org/fhir">
<id value="BreastCancerScreeningDQMDraft"/>
<text>
<status value="extensions"/>
<div xmlns="http://www.w3.org/1999/xhtml"><p><b style="color: maroon">Exception generating Narrative: Malformed XHTML: Found "</code>" expecting "</FHIR.ExplanationOfBenefit>" at line 422 column 8</b></p></div>
</text>
<extension
url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm">
<valueInteger value="1"/>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/structuredefinition-wg">
<valueCode value="cds"/>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status">
<valueCode value="informative"/>
</extension>
<url value="https://madie.cms.gov/Library/BreastCancerScreeningDQMDraft"/>
<version value="2026.1.0"/>
<name value="BreastCancerScreeningDQMDraft"/>
<title value="Breast Cancer Screening DQM Draft"/>
<status value="active"/>
<experimental value="false"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/library-type"/>
<code value="logic-library"/>
</coding>
</type>
<date value="2026-06-16T17:19:32+00:00"/>
<description value="BreastCancerScreeningDQMDraft logic."/>
<topic>
<text value="FHIR"/>
</topic>
<topic>
<text value="CQL"/>
</topic>
<content>
<contentType value="text/cql"/>
<data
value="LyoKTk9URTogRm9yIHVzZSBieSBKYW51YXJ5IDIwMjYgQ29ubmVjdGF0aG9uIHBhcnRpY2lwYW50cyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuIE5vdCBmb3IgdXNlIG9yIGRpc3RyaWJ1dGlvbiBpbiBjb21tZXJjaWFsIHByb2R1Y3RzLgoqLwpsaWJyYXJ5IEJyZWFzdENhbmNlclNjcmVlbmluZ0RRTURyYWZ0IHZlcnNpb24gJzEuMC4wMDAnCgp1c2luZyBVU1F1YWxpdHlDb3JlIHZlcnNpb24gJzAuNS4wJwp1c2luZyBVU0NvcmUgdmVyc2lvbiAnNi4xLjAtZGVyaXZlZCcKdXNpbmcgQzRCQiB2ZXJzaW9uICcyLjEuMScKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBobDcuZmhpci51di5jcWwuRkhJUkNvbW1vbiB2ZXJzaW9uICcyLjAuMCcgY2FsbGVkIEZISVJDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlQ29tbW9uIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIFVTQ29tbW9uCmluY2x1ZGUgZmhpci5vbmMuInVzLXF1YWxpdHktY29yZSIuVVNRdWFsaXR5Q29yZUNvbW1vbiB2ZXJzaW9uICcwLjUuMCcgY2FsbGVkIFVTUUNvbW1vbgoKaW5jbHVkZSBBZHVsdE91dHBhdGllbnRFbmNvdW50ZXJzIHZlcnNpb24gJzUuMS4wMDAnIGNhbGxlZCBBZHVsdE91dHBhdGllbnRFbmNvdW50ZXJzCmluY2x1ZGUgQWR2YW5jZWRJbGxuZXNzYW5kRnJhaWx0eSB2ZXJzaW9uICcyLjEuMDAwJyBjYWxsZWQgQUlGcmFpbExUQ0YKaW5jbHVkZSBIb3NwaWNlIHZlcnNpb24gJzcuMS4wMDAnIGNhbGxlZCBIb3NwaWNlCmluY2x1ZGUgUGFsbGlhdGl2ZUNhcmUgdmVyc2lvbiAnMi4xLjAwMCcgY2FsbGVkIFBhbGxpYXRpdmVDYXJlCmluY2x1ZGUgU3RhdHVzIHZlcnNpb24gJzIuMS4wMDAnIGNhbGxlZCBTdGF0dXMKaW5jbHVkZSBTdXBwbGVtZW50YWxEYXRhRWxlbWVudHMgdmVyc2lvbiAnNi4xLjAwMCcgY2FsbGVkIFNERQoKY29kZXN5c3RlbSAiQ2xhaW1UeXBlQ29kZXMiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS9jbGFpbS10eXBlJwpjb2Rlc3lzdGVtICJTTk9NRURDVCI6ICdodHRwOi8vc25vbWVkLmluZm8vc2N0JwoKdmFsdWVzZXQgIkJpbGF0ZXJhbCBNYXN0ZWN0b215IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjE5OC4xMi4xMDA1Jwp2YWx1ZXNldCAiSGlzdG9yeSBvZiBiaWxhdGVyYWwgbWFzdGVjdG9teSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xOTguMTIuMTA2OCcKdmFsdWVzZXQgIk1hbW1vZ3JhcGh5IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwOC4xMi4xMDE4Jwp2YWx1ZXNldCAiU3RhdHVzIFBvc3QgTGVmdCBNYXN0ZWN0b215IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjE5OC4xMi4xMDY5Jwp2YWx1ZXNldCAiU3RhdHVzIFBvc3QgUmlnaHQgTWFzdGVjdG9teSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xOTguMTIuMTA3MCcKdmFsdWVzZXQgIlVuaWxhdGVyYWwgTWFzdGVjdG9teSBMZWZ0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjE5OC4xMi4xMTMzJwp2YWx1ZXNldCAiVW5pbGF0ZXJhbCBNYXN0ZWN0b215IFJpZ2h0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjE5OC4xMi4xMTM0Jwp2YWx1ZXNldCAiVW5pbGF0ZXJhbCBNYXN0ZWN0b215IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEyODUnCnZhbHVlc2V0ICJIQ1BDUyBNYW1tb2dyYW0gQ29kZXMiOiAnaHR0cHM6Ly9jbXMubWFkaWUuZ292L1ZhbHVlU2V0L0hDUENTLU1hbW1vZ3JhbS1Db2RlcycKCmNvZGUgIkZlbWFsZSAoZmluZGluZykiOiAnMjQ4MTUyMDAyJyBmcm9tICJTTk9NRURDVCIgZGlzcGxheSAnRmVtYWxlIChmaW5kaW5nKScKY29kZSAiRW50aXJlIGxlZnQgYnJlYXN0IChib2R5IHN0cnVjdHVyZSkiOiAnMzYxNzE2MDA2JyBmcm9tICJTTk9NRURDVCIgZGlzcGxheSAnRW50aXJlIGxlZnQgYnJlYXN0IChib2R5IHN0cnVjdHVyZSknCmNvZGUgIkVudGlyZSByaWdodCBicmVhc3QgKGJvZHkgc3RydWN0dXJlKSI6ICczNjE3MTUwMDUnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdFbnRpcmUgcmlnaHQgYnJlYXN0IChib2R5IHN0cnVjdHVyZSknCmNvZGUgImluc3RpdHV0aW9uYWwiOiAnSW5zdGl0dXRpb25hbCcgZnJvbSAiQ2xhaW1UeXBlQ29kZXMiCmNvZGUgInByb2Zlc3Npb25hbCI6ICdQcm9mZXNzaW9uYWwnIGZyb20gIkNsYWltVHlwZUNvZGVzIgoKcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGVUaW1lPgogIGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjYtMDEtMDFUMDA6MDA6MDAsIEAyMDI2LTEyLTMxVDIzOjU5OjU5XQoKY29udGV4dCBQYXRpZW50CgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiI6CiAgQWdlSW5ZZWFyc0F0KGRhdGUgZnJvbSAKICAgIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICkgaW4gSW50ZXJ2YWxbNDIsIDc0XQogICAgYW5kIFBhdGllbnQuc2V4KCkudmFsdWUgPSAnMjQ4MTUyMDAyJwogICAgYW5kIGV4aXN0cyBBZHVsdE91dHBhdGllbnRFbmNvdW50ZXJzLiJRdWFsaWZ5aW5nIEVuY291bnRlcnMiCgpkZWZpbmUgIkRlbm9taW5hdG9yIjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIgoKZGVmaW5lICJEZW5vbWluYXRvciBFeGNsdXNpb25zIjoKICAiSXMgZGVjZWFzZWQgZHVyaW5nIG1lYXN1cmVtZW50IHBlcmlvZCIKICAgIG9yIEhvc3BpY2UuIkhhcyBIb3NwaWNlIFNlcnZpY2VzIgogICAgb3IgKCAoIGV4aXN0cyAoICJSaWdodCBNYXN0ZWN0b215IERpYWdub3NpcyIgKQogICAgICAgICAgb3IgZXhpc3RzICggIlJpZ2h0IE1hc3RlY3RvbXkgUHJvY2VkdXJlIiApCiAgICAgICkKICAgICAgICBhbmQgKCBleGlzdHMgKCAiTGVmdCBNYXN0ZWN0b215IERpYWdub3NpcyIgKQogICAgICAgICAgICBvciBleGlzdHMgKCAiTGVmdCBNYXN0ZWN0b215IFByb2NlZHVyZSIgKQogICAgICAgICkKICAgICkKICAgIG9yIGV4aXN0cyAiQmlsYXRlcmFsIE1hc3RlY3RvbXkgRGlhZ25vc2lzIgogICAgb3IgZXhpc3RzICJCaWxhdGVyYWwgTWFzdGVjdG9teSBQcm9jZWR1cmUiCiAgICBvciBBSUZyYWlsTFRDRi4iSXMgQWdlIDY2IG9yIE9sZGVyIHdpdGggQWR2YW5jZWQgSWxsbmVzcyBhbmQgRnJhaWx0eSIKICAgIG9yIEFJRnJhaWxMVENGLiJJcyBBZ2UgNjYgb3IgT2xkZXIgTGl2aW5nIExvbmcgVGVybSBpbiBhIE51cnNpbmcgSG9tZSIKICAgIG9yIFBhbGxpYXRpdmVDYXJlLiJIYXMgUGFsbGlhdGl2ZSBDYXJlIGluIHRoZSBNZWFzdXJlbWVudCBQZXJpb2QiCgogZGVmaW5lICJJcyBkZWNlYXNlZCBkdXJpbmcgbWVhc3VyZW1lbnQgcGVyaW9kIjoKICAgICBQYXRpZW50LiJEZWNlYXNlZCBkdXJpbmciKCJNZWFzdXJlbWVudCBQZXJpb2QiKQoKIGRlZmluZSBmbHVlbnQgZnVuY3Rpb24gIkRlY2Vhc2VkIGR1cmluZyIocGF0aWVudCBGSElSLlBhdGllbnQsIGR1cmluZ1BlcmlvZCBJbnRlcnZhbDxTeXN0ZW0uRGF0ZVRpbWU+KToKICAgICBpZiBwYXRpZW50IGlzIG51bGwgb3IgZHVyaW5nUGVyaW9kIGlzIG51bGwgb3IgcGF0aWVudC5kZWNlYXNlZCBpcyBudWxsIHRoZW4gZmFsc2UKICAgICBlbHNlIAogICAgICAgICBwYXRpZW50LiJEZWNlYXNlZCBkYXRlIigpIGR1cmluZyBkYXkgb2YgZHVyaW5nUGVyaW9kCgpkZWZpbmUgZmx1ZW50IGZ1bmN0aW9uICJEZWNlYXNlZCBkYXRlIihwYXRpZW50IEZISVIuUGF0aWVudCk6CiAgICAgaWYgcGF0aWVudCBpcyBudWxsIHRoZW4gbnVsbAogICAgIGVsc2UgCiAgICAgICAgIGlmIHBhdGllbnQuZGVjZWFzZWQgaXMgbnVsbCB0aGVuIG51bGwKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2FzZSAKICAgICAgICAgICAgICAgICB3aGVuIHBhdGllbnQuZGVjZWFzZWQgaXMgRkhJUi5kYXRlVGltZSB0aGVuIAogICAgICAgICAgICAgICAgICAgICBkYXRlIGZyb20gKHBhdGllbnQuZGVjZWFzZWQgYXMgRkhJUi5kYXRlVGltZSkKICAgICAgICAgICAgICAgICBlbHNlIE1lc3NhZ2UobnVsbCwgdHJ1ZSwgJ0JyZWFzdENhbmNlclNjcmVlbmluZ0RRTURyYWZ0LkRlY2Vhc2VkRGF0ZS5Ob3RTdXBwb3J0ZWQnLCAnRXJyb3InLCAnQ2Fubm90IGRldGVybWluZSBkZWNlYXNlZCBkYXRlIGJlY2F1c2UgZGVjZWFzZWQgaXMgc3BlY2lmaWVkIGFzIGEgYm9vbGVhbicpCiAgICAgICAgICAgICBlbmQKCmRlZmluZSAiUmlnaHQgTWFzdGVjdG9teSBEaWFnbm9zaXMiOgogICggKFtDb25kaXRpb246ICJTdGF0dXMgUG9zdCBSaWdodCBNYXN0ZWN0b215Il0pLnZlcmlmaWVkICggKSApIFJpZ2h0TWFzdGVjdG9teQogICAgd2hlcmUgUmlnaHRNYXN0ZWN0b215LnByZXZhbGVuY2VJbnRlcnZhbCAoICkgc3RhcnRzIG9uIG9yIGJlZm9yZSBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKCmRlZmluZSAiUmlnaHQgTWFzdGVjdG9teSBQcm9jZWR1cmUiOgogICggKCBbVVNRdWFsaXR5Q29yZS5Qcm9jZWR1cmU6ICJVbmlsYXRlcmFsIE1hc3RlY3RvbXkgUmlnaHQiXQogIHVuaW9uIFtVU1F1YWxpdHlDb3JlLlByb2NlZHVyZTogIlVuaWxhdGVyYWwgTWFzdGVjdG9teSJdIFVuaWxhdGVyYWxNYXN0ZWN0b215UHJvY2VkdXJlIAogIHdoZXJlIGV4aXN0cyBVbmlsYXRlcmFsTWFzdGVjdG9teVByb2NlZHVyZS5ib2R5U2l0ZSBTIHdoZXJlIFMgfiAiRW50aXJlIHJpZ2h0IGJyZWFzdCAoYm9keSBzdHJ1Y3R1cmUpIiAKICApLmlzUHJvY2VkdXJlUGVyZm9ybWVkICggKSApIFVuaWxhdGVyYWxNYXN0ZWN0b215UmlnaHRQZXJmb3JtZWQKICAgIHdoZXJlIFVuaWxhdGVyYWxNYXN0ZWN0b215UmlnaHRQZXJmb3JtZWQucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIGVuZHMgb24gb3IgYmVmb3JlIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJMZWZ0IE1hc3RlY3RvbXkgRGlhZ25vc2lzIjoKICAoICggW0NvbmRpdGlvbjogIlN0YXR1cyBQb3N0IExlZnQgTWFzdGVjdG9teSJdICkudmVyaWZpZWQgKCApICkgTGVmdE1hc3RlY3RvbXkKICAgIHdoZXJlIExlZnRNYXN0ZWN0b215LnByZXZhbGVuY2VJbnRlcnZhbCAoICkgc3RhcnRzIG9uIG9yIGJlZm9yZSBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKCmRlZmluZSAiTGVmdCBNYXN0ZWN0b215IFByb2NlZHVyZSI6CiAgKCAoIFtVU1F1YWxpdHlDb3JlLlByb2NlZHVyZTogIlVuaWxhdGVyYWwgTWFzdGVjdG9teSBMZWZ0Il0gCiAgICAgICAgdW5pb24gW1VTUXVhbGl0eUNvcmUuUHJvY2VkdXJlOiAiVW5pbGF0ZXJhbCBNYXN0ZWN0b215Il0gVW5pbGF0ZXJhbE1hc3RlY3RvbXlQcm9jZWR1cmUKICAgICAgICB3aGVyZSBleGlzdHMgVW5pbGF0ZXJhbE1hc3RlY3RvbXlQcm9jZWR1cmUuYm9keVNpdGUgUyB3aGVyZSBTIH4gIkVudGlyZSBsZWZ0IGJyZWFzdCAoYm9keSBzdHJ1Y3R1cmUpIgogICkuaXNQcm9jZWR1cmVQZXJmb3JtZWQgKCApICkgVW5pbGF0ZXJhbE1hc3RlY3RvbXlMZWZ0UGVyZm9ybWVkCiAgICB3aGVyZSBVbmlsYXRlcmFsTWFzdGVjdG9teUxlZnRQZXJmb3JtZWQucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIGVuZHMgb24gb3IgYmVmb3JlIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJCaWxhdGVyYWwgTWFzdGVjdG9teSBEaWFnbm9zaXMiOgogICggKCBbQ29uZGl0aW9uOiAiSGlzdG9yeSBvZiBiaWxhdGVyYWwgbWFzdGVjdG9teSJdICkudmVyaWZpZWQgKCApICkgQmlsYXRlcmFsTWFzdGVjdG9teUhpc3RvcnkKICAgIHdoZXJlIEJpbGF0ZXJhbE1hc3RlY3RvbXlIaXN0b3J5LnByZXZhbGVuY2VJbnRlcnZhbCAoICkgc3RhcnRzIG9uIG9yIGJlZm9yZSBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKCmRlZmluZSAiQmlsYXRlcmFsIE1hc3RlY3RvbXkgUHJvY2VkdXJlIjoKICAoICggW1VTUXVhbGl0eUNvcmUuUHJvY2VkdXJlOiAiQmlsYXRlcmFsIE1hc3RlY3RvbXkiXSApLmlzUHJvY2VkdXJlUGVyZm9ybWVkICggKSApIEJpbGF0ZXJhbE1hc3RlY3RvbXlQZXJmb3JtZWQKICAgIHdoZXJlIEJpbGF0ZXJhbE1hc3RlY3RvbXlQZXJmb3JtZWQucGVyZm9ybWVkLnRvSW50ZXJ2YWwgKCApIGVuZHMgb24gb3IgYmVmb3JlIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJOdW1lcmF0b3IiOgpleGlzdHMgIk1hbW1vZ3JhcGh5IE9ic2VydmF0aW9uIgogIG9yIGV4aXN0cyAiTWFtbW9ncmFwaHkgQ2xhaW0iCiAgb3IgZXhpc3RzICJNYW1tb2dyYXBoeSBFT0IiCiAgICAKLy9NYW1tb2dyYXBoeSBPYnNlcnZhdGlvbgpkZWZpbmUgIk1hbW1vZ3JhcGh5IE9ic2VydmF0aW9uIjoKICAgICAoICggW09ic2VydmF0aW9uQ2xpbmljYWxSZXN1bHQ6IGNvZGUgaW4gIk1hbW1vZ3JhcGh5Il0gKS5pc0RpYWdub3N0aWNTdHVkeVBlcmZvcm1lZCAoICkgKSBNYW1tb2dyYW0KICAgIHdoZXJlIE1hbW1vZ3JhbS5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkgZW5kcyBkdXJpbmcgZGF5IG9mIEludGVydmFsWyJPY3RvYmVyIDEgVHdvIFllYXJzIFByaW9yIHRvIHRoZSBNZWFzdXJlbWVudCBQZXJpb2QiLCBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCJdIAoKZGVmaW5lICJPY3RvYmVyIDEgVHdvIFllYXJzIFByaW9yIHRvIHRoZSBNZWFzdXJlbWVudCBQZXJpb2QiOgogIERhdGVUaW1lKCh5ZWFyIGZyb20gc3RhcnQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIgLSAyKSwgMTAsIDEsIDAsIDAsIDAsIDAsIDApCgovL01hbW1vZ3JhcGh5IENsYWltCmRlZmluZSAiTWFtbW9ncmFwaHkgQ2xhaW0iOgooW0NsYWltXSkuIldpdGggbWFtbW9ncmFwaHkgZHVyaW5nIigKICAgICAgICBJbnRlcnZhbFtkYXRlIGZyb20gIk9jdG9iZXIgMSBUd28gWWVhcnMgUHJpb3IgdG8gdGhlIE1lYXN1cmVtZW50IFBlcmlvZCIsIGRhdGUgZnJvbSBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCJdKQoKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiAiV2l0aCBtYW1tb2dyYXBoeSBkdXJpbmciKAogICAgY2xhaW1zIExpc3Q8RkhJUi5DbGFpbT4sCiAgICBkdXJpbmdQZXJpb2QgSW50ZXJ2YWw8U3lzdGVtLkRhdGU+Cik6CiAgICBpZiBkdXJpbmdQZXJpb2QgaXMgbnVsbCB0aGVuIG51bGwKICAgIGVsc2UKICAgICAgICBjbGFpbXMKICAgICAgICAgICAgLiJXaXRoIHByb2R1Y3Qgb3Igc2VydmljZSBkdXJpbmciKAogICAgICAgICAgICAgICAgIkhDUENTIE1hbW1vZ3JhbSBDb2RlcyIsCiAgICAgICAgICAgICAgICBkdXJpbmdQZXJpb2QKICAgICAgICAgICAgKQoKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiAiV2l0aCBwcm9kdWN0IG9yIHNlcnZpY2UgZHVyaW5nIigKICAgIGNsYWltcyBMaXN0PEZISVIuQ2xhaW0+LCAKICAgIHByb2R1Y3RPclNlcnZpY2VDb2RlcyBTeXN0ZW0uVmFsdWVTZXQsIAogICAgZHVyaW5nUGVyaW9kIEludGVydmFsPERhdGU+Cik6CiAgICBpZiBkdXJpbmdQZXJpb2QgaXMgbnVsbCB0aGVuIG51bGwKICAgIGVsc2UgCiAgICAgICAgKGNsYWltcy4iUHJvZmVzc2lvbmFsIG9yIGluc3RpdHV0aW9uYWwiKCkpIHNpbmdsZUNsYWltCiAgICAgICAgd2l0aCAoCiAgICAgICAgICAgIHNpbmdsZUNsYWltLml0ZW0KICAgICAgICAgICAgICAgIC4iU3RhcnRzIGR1cmluZyIoZHVyaW5nUGVyaW9kKQogICAgICAgICkgaXRlbQogICAgICAgIHN1Y2ggdGhhdCBpdGVtLiJIYXMgcHJvZHVjdCBvciBzZXJ2aWNlIihwcm9kdWN0T3JTZXJ2aWNlQ29kZXMpCgpkZWZpbmUgZmx1ZW50IGZ1bmN0aW9uICJIYXMgcHJvZHVjdCBvciBzZXJ2aWNlIihpdGVtIEZISVIuQ2xhaW0uSXRlbSwgY29kZXMgU3lzdGVtLlZhbHVlU2V0KToKICAgIGlmIGl0ZW0gaXMgbnVsbCBvciBpdGVtLnByb2R1Y3RPclNlcnZpY2UgaXMgbnVsbCB0aGVuIGZhbHNlCiAgICBlbHNlIAogICAgICAgIGl0ZW0ucHJvZHVjdE9yU2VydmljZSBpbiBjb2RlcwoKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiAiUHJvZmVzc2lvbmFsIG9yIGluc3RpdHV0aW9uYWwiKGNsYWltcyBMaXN0PEZISVIuQ2xhaW0+KToKICAgIChjbGFpbXMpIGNsYWltCiAgICAgIHdoZXJlIGNsYWltLnR5cGUgfiAiaW5zdGl0dXRpb25hbCIKICAgICAgICBvciBjbGFpbS50eXBlIH4gInByb2Zlc3Npb25hbCIKCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gIlN0YXJ0cyBkdXJpbmciKGl0ZW1zIExpc3Q8RkhJUi5DbGFpbS5JdGVtPiwgaW50ZXJ2YWwgSW50ZXJ2YWw8RGF0ZT4pOgogICAgaWYgaW50ZXJ2YWwgaXMgbnVsbCB0aGVuIG51bGwKICAgIGVsc2UgCiAgICAgICAgKGl0ZW1zKSBpdGVtCiAgICAgICAgd2hlcmUgaXRlbS4iU2VydmljZWQiKCkgc3RhcnRzIGR1cmluZyBpbnRlcnZhbAoKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiAiU2VydmljZWQiKGl0ZW0gRkhJUi5DbGFpbS5JdGVtKToKICAgIGlmIGl0ZW0gaXMgbnVsbCBvciBpdGVtLnNlcnZpY2VkIGlzIG51bGwgdGhlbiBudWxsCiAgICBlbHNlIAogICAgICAgIGNhc2UgCiAgICAgICAgICAgIHdoZW4gaXRlbS5zZXJ2aWNlZCBpcyBGSElSLmRhdGUgdGhlbiAKICAgICAgICAgICAgICAgIChpdGVtLnNlcnZpY2VkIGFzIEZISVIuZGF0ZSkuIlNlcnZpY2VkIGludGVybmFsIigpCiAgICAgICAgICAgIHdoZW4gaXRlbS5zZXJ2aWNlZCBpcyBGSElSLlBlcmlvZCB0aGVuIAogICAgICAgICAgICAgICAgKGl0ZW0uc2VydmljZWQgYXMgRkhJUi5QZXJpb2QpLiJUbyBkYXRlIGludGVydmFsIigpCiAgICAgICAgICAgIGVsc2UgbnVsbAogICAgICAgIGVuZAoKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiAiU2VydmljZWQgaW50ZXJuYWwiKHNlcnZpY2VkIEZISVIuZGF0ZSk6CiAgICBpZiBzZXJ2aWNlZCBpcyBudWxsIHRoZW4gbnVsbAogICAgZWxzZSAKICAgICAgICBJbnRlcnZhbFtGSElSSGVscGVycy5Ub0RhdGUoc2VydmljZWQpLCBGSElSSGVscGVycy5Ub0RhdGUoc2VydmljZWQpXQoKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiAiVG8gZGF0ZSBpbnRlcnZhbCIocGVyaW9kIEZISVIuUGVyaW9kKToKICAgIGlmIHBlcmlvZCBpcyBudWxsIHRoZW4gbnVsbAogICAgZWxzZSAKICAgICAgICBJbnRlcnZhbFtkYXRlIGZyb20gcGVyaW9kLnN0YXJ0LCBkYXRlIGZyb20gcGVyaW9kLmVuZF0KCi8vTWFtbW9ncmFwaHkgRU9CCmRlZmluZSAiTWFtbW9ncmFwaHkgRU9CIjoKKFtFeHBsYW5hdGlvbk9mQmVuZWZpdF0pLiJXaXRoIG1hbW1vZ3JhcGh5IGR1cmluZyIoCiAgICAgICAgSW50ZXJ2YWxbZGF0ZSBmcm9tICJPY3RvYmVyIDEgVHdvIFllYXJzIFByaW9yIHRvIHRoZSBNZWFzdXJlbWVudCBQZXJpb2QiLCBkYXRlIGZyb20gZW5kIG9mICJNZWFzdXJlbWVudCBQZXJpb2QiXSkKCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gIldpdGggbWFtbW9ncmFwaHkgZHVyaW5nIigKICAgIGVvYnMgTGlzdDxGSElSLkV4cGxhbmF0aW9uT2ZCZW5lZml0PiwKICAgIGR1cmluZ1BlcmlvZCBJbnRlcnZhbDxTeXN0ZW0uRGF0ZT4KKToKICAgIGlmIGR1cmluZ1BlcmlvZCBpcyBudWxsIHRoZW4gbnVsbAogICAgZWxzZQogICAgICAgIGVvYnMKICAgICAgICAgICAgLiJXaXRoIHByb2R1Y3Qgb3Igc2VydmljZSBkdXJpbmciKAogICAgICAgICAgICAgICAgIkhDUENTIE1hbW1vZ3JhbSBDb2RlcyIsCiAgICAgICAgICAgICAgICBkdXJpbmdQZXJpb2QKICAgICAgICAgICAgKQoKZGVmaW5lIGZsdWVudCBmdW5jdGlvbiAiV2l0aCBwcm9kdWN0IG9yIHNlcnZpY2UgZHVyaW5nIigKICAgIGVvYnMgTGlzdDxGSElSLkV4cGxhbmF0aW9uT2ZCZW5lZml0PiwgCiAgICBwcm9kdWN0T3JTZXJ2aWNlQ29kZXMgU3lzdGVtLlZhbHVlU2V0LCAKICAgIGR1cmluZ1BlcmlvZCBJbnRlcnZhbDxEYXRlPgopOgogICAgaWYgZHVyaW5nUGVyaW9kIGlzIG51bGwgdGhlbiBudWxsCiAgICBlbHNlIAogICAgICAgICggZW9icy4iUHJvZmVzc2lvbmFsIG9yIGluc3RpdHV0aW9uYWwiKCkgKSBzaW5nbGVFb2IKICAgICAgICB3aXRoICgKICAgICAgICAgICAgc2luZ2xlRW9iLml0ZW0KICAgICAgICAgICAgICAgIC4iRHVyaW5nIihkdXJpbmdQZXJpb2QpCiAgICAgICAgKSBpdGVtCiAgICAgICAgc3VjaCB0aGF0IGl0ZW0uIkhhcyBwcm9kdWN0IG9yIHNlcnZpY2UiKHByb2R1Y3RPclNlcnZpY2VDb2RlcykKCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gIkR1cmluZyIoaXRlbXMgTGlzdDxGSElSLkV4cGxhbmF0aW9uT2ZCZW5lZml0Lkl0ZW0+LCBpbnRlcnZhbCBJbnRlcnZhbDxEYXRlPik6CiAgICBpZiBpbnRlcnZhbCBpcyBudWxsIHRoZW4gbnVsbAogICAgZWxzZSAKICAgICAgICAoaXRlbXMpIGl0ZW0KICAgICAgICB3aGVyZSBpdGVtLiJTZXJ2aWNlZCIoKSBvdmVybGFwcyBpbnRlcnZhbCAKCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gIlNlcnZpY2VkIihpdGVtIEZISVIuRXhwbGFuYXRpb25PZkJlbmVmaXQuSXRlbSk6CiAgICBpZiBpdGVtIGlzIG51bGwgb3IgaXRlbS5zZXJ2aWNlZCBpcyBudWxsIHRoZW4gbnVsbAogICAgZWxzZSAKICAgICAgICBjYXNlIAogICAgICAgICAgICB3aGVuIGl0ZW0uc2VydmljZWQgaXMgRkhJUi5kYXRlIHRoZW4gCiAgICAgICAgICAgICAgICAoaXRlbS5zZXJ2aWNlZCBhcyBGSElSLmRhdGUpLiJTZXJ2aWNlZCBpbnRlcm5hbCIoKQogICAgICAgICAgICB3aGVuIGl0ZW0uc2VydmljZWQgaXMgRkhJUi5QZXJpb2QgdGhlbiAKICAgICAgICAgICAgICAgIChpdGVtLnNlcnZpY2VkIGFzIEZISVIuUGVyaW9kKS4iVG8gZGF0ZSBpbnRlcnZhbCIoKQogICAgICAgICAgICBlbHNlIG51bGwKICAgICAgICBlbmQKCmRlZmluZSBmbHVlbnQgZnVuY3Rpb24gIkhhcyBwcm9kdWN0IG9yIHNlcnZpY2UiKGl0ZW0gRkhJUi5FeHBsYW5hdGlvbk9mQmVuZWZpdC5JdGVtLCBjb2RlcyBTeXN0ZW0uVmFsdWVTZXQpOgogICAgaWYgaXRlbSBpcyBudWxsIG9yIGl0ZW0ucHJvZHVjdE9yU2VydmljZSBpcyBudWxsIHRoZW4gZmFsc2UKICAgIGVsc2UgCiAgICAgICAgaXRlbS5wcm9kdWN0T3JTZXJ2aWNlIGluIGNvZGVzCgpkZWZpbmUgZmx1ZW50IGZ1bmN0aW9uICJQcm9mZXNzaW9uYWwgb3IgaW5zdGl0dXRpb25hbCIoZW9icyBMaXN0PEZISVIuRXhwbGFuYXRpb25PZkJlbmVmaXQ+KTogCiAgICAoZW9icykgZW9iCiAgICAgIHdoZXJlIGVvYi50eXBlIH4gImluc3RpdHV0aW9uYWwiCiAgICAgICAgb3IgZW9iLnR5cGUgfiAicHJvZmVzc2lvbmFsIgoKZGVmaW5lICJTREUgRXRobmljaXR5IjoKICBTREUuIlNERSBFdGhuaWNpdHkiCgpkZWZpbmUgIlNERSBQYXllciI6CiAgU0RFLiJTREUgUGF5ZXIiCgpkZWZpbmUgIlNERSBSYWNlIjoKICBTREUuIlNERSBSYWNlIgoKZGVmaW5lICJTREUgU2V4IjoKICBTREUuIlNERSBTZXgiCgpkZWZpbmUgIlN0cmF0aWZpY2F0aW9uIDEiOgogIEFnZUluWWVhcnNBdChkYXRlIGZyb20gCiAgICBlbmQgb2YgIk1lYXN1cmVtZW50IFBlcmlvZCIKICApIGluIEludGVydmFsWzQyLCA1MV0KCmRlZmluZSAiU3RyYXRpZmljYXRpb24gMiI6CiAgQWdlSW5ZZWFyc0F0KGRhdGUgZnJvbSAKICAgIGVuZCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICkgaW4gSW50ZXJ2YWxbNTIsIDc0XQo="/>
</content>
</Library>