WHO SMART Guidelines - HIV
0.3.0 - ci-build
WHO SMART Guidelines - HIV - Local Development build (v0.3.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
Draft as of 2024-12-06 |
{
"resourceType" : "Library",
"id" : "HIVIND92Logic",
"meta" : {
"profile" : [
🔗 "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"🔗 ,
"http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"🔗 ,
"http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"🔗 ,
"http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"
]
},
"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;\">HIV.IND.92 Logic</td>\n </tr>\n \n\n \n \n <tr>\n <th scope=\"row\"><b>Id: </b></th>\n <td style=\"padding-left: 4px;\">HIVIND92Logic</td>\n </tr>\n \n\n \n \n <tr>\n <th scope=\"row\"><b>Version: </b></th>\n <td style=\"padding-left: 4px;\">0.3.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-HIVIND92Logic.html\">HIV.IND.92 Logic</a></td>\n </tr>\n \n\n \n\n \n\n \n <tr>\n <th scope=\"row\"><b>Status: </b></th>\n <td style=\"padding-left: 4px;\">draft</td>\n </tr>\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://hl7.org/fhir/R4/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;\">2024-12-06 22:28:12+0000</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Publisher: </b></th>\n <td style=\"padding-left: 4px;\">WHO</td>\n </tr>\n \n\n \n <tr>\n <th scope=\"row\"><b>Description: </b></th>\n <td style=\"padding-left: 4px;\"><div><p>% of people living with HIV and co-infected with HCV who were confirmed to be cured of HCV during the reporting period</p>\n</div></td>\n </tr>\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\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\">/**\n * Library: HIV.IND.92 Logic\n * Ref No: HEP.7\n * Short Name: HCV cured among people living with HIV\n *\n * Definition: % of people living with HIV and co-infected with HCV who were confirmed to be cured of HCV during the reporting period\n *\n * Numerator: Number of people living with HIV diagnosed with HCV infection who have completed HCV treatment and had a sustained virological response (SVR). SVR is assessed by a viral load measurement 12–24 weeks after the end of treatment.\n * Numerator Calculation: COUNT of clients with "HIV status"='HIV-positive' with "HCV treatment completion date" in the reporting period AND with "HCV viral load test date" is BETWEEN '12, 24' weeks after "HCV treatment completion date" AND "HCV viral load test result"='Not detected'\n * Numerator Exclusions: \n *\n * Denominator: Number of people living with HIV and co-infected with HCV who completed HCV treatment and were assessed for sustained virological response\n * Denominator Calculation: COUNT of clients with "HIV status"='HIV-positive' with "HCV treatment completion date" in the reporting period AND with "HCV viral load test date" is BETWEEN '12, 24' weeks after "HCV treatment completion date"\n * Denominator Exclusions: \n *\n * Disaggregations:\n * •\u00a0Gender (female, male, other*) \n * • Age (15–19, 20–24, 25–29, 30–49, 50+ years) \n * •\u00a0Key populations (men who have sex with men, people living in prisons and other closed settings, people who inject drugs, sex workers, trans and gender diverse people)** \n * •\u00a0Cities and other administrative regions of epidemiologic importance \n * •\u00a0Medicine type (interferon or direct acting antivirals)\n *\n * Disaggregation Elements: Gender | Age | Key population member type | HCV medicine type\n *\n * Numerator and Denominator Elements:\n * HCV treatment completion date \n * HCV viral load test date \n * HCV viral load test result \n * HIV status\n *\n * Reference: Consolidated guidelines on person-centred HIV strategic information: strengthening routine data for impact. Geneva: World Health Organization; 2022\n * \n * Data Concepts:\n * HIV.A.DE17: Age | Calculated age (number of years) of the client based on date of birth\n * HIV.A.DE18: Gender* | Gender of the client*\n * HIV.A.DE19: Female | Client identifies as female\n * HIV.A.DE20: Male | Client identifies as male\n * HIV.A.DE21: Transgender male | Client identifies as transgender male\n * HIV.A.DE22: Transgender female | Client identifies as transgender female\n * HIV.A.DE23: Other | Additional category\n * HIV.B.DE50: Key population member type* | The type of key population that the client is included in\n * HIV.B.DE51: Sex worker | Client is a sex worker\n * HIV.B.DE52: Men who have sex with men | Client is a man who has sex with men\n * HIV.B.DE53: Trans and gender-diverse people | Client identifies as trans and gender-diverse\n * HIV.B.DE54: People who inject drugs | Client is a person who injects drugs\n * HIV.B.DE55: People living in prisons and other closed settings | Client lives in a prison or another closed setting\n * HIV.B.DE115: HIV status | HIV status reported after applying the national HIV testing algorithm. No single HIV test can provide an HIV-positive diagnosis.\n * HIV.B.DE116: HIV-positive | Client is HIV-positive\n * HIV.B.DE117: HIV-negative | Client is HIV-negative\n * HIV.B.DE118: Unknown | Client has unknown HIV status\n * HIV.D.DE176: HCV treatment completion date | Date when client completed treatment for hepatitis C virus (HCV)\n * HIV.D.DE178: HCV viral load test date | Hepatitis C viral load test date\n * HIV.D.DE179: HCV viral load test result | Hepatitis C viral load test result (qualitative)\n * HIV.D.DE180: Detected | HCV was detected\n * HIV.D.DE181: Not detected | HCV was not detected\n * HIV.D.DE182: HCV medicine type | Type of medicine client is prescribed\n * HIV.D.DE183: Interferon | Client is prescribed interferon\n * HIV.D.DE184: Direct acting antivirals | Client is prescribed direct acting antivirals\n * HIV.E.DE114: Key population member type* | The type of key population that the infant's mother is included in\n * HIV.E.DE115: Sex worker | Infant's mother is a sex worker\n * HIV.E.DE116: People who inject drugs | Infant's mother is a person who injects drugs\n * HIV.E.DE117: Trans and gender-diverse people | Infant's mother identifies as trans and gender-diverse\n * HIV.E.DE118: People living in prisons and other closed setting | Infant's mother is in a prison or closed setting\n * HIV.G.DE47: HCV viral load test date | Hepatitis C viral load test date\n * HIV.G.DE48: HCV viral load test result | Hepatitis C viral load test result (qualitative)\n * HIV.G.DE49: Detected | HCV was detected\n * HIV.G.DE50: Not detected | HCV was not detected\n *\n * Additional Context\n * - what it measures: Measures how many are cured among all those who completed treatment.\n * - rationale: Short courses of HCV treatment with direct acting antivirals (DAAs) lead to cure in >90% of patients and reduce mortality. Information on sustained viral response (cure) for HCV will measure treatment effectiveness and provide an incentive system, for example, cure certificates.\n * - method: Programme records, cohort studies, patient monitoring tools (electronic or paper), EMR/ electronic information systems, combined with best estimates for the population with no viral load data\n * \n * Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm\n */\n\n/*\n * Profiles:\n * - HivStatus\n * - HcvTreatment\n * - HcvViralLoadResult\n */\n \nlibrary HIVIND92Logic\n\n// Included Libraries\nusing FHIR version '4.0.1'\n\ninclude HIVCommon version '0.0.1' called HIC\ninclude FHIRHelpers version '4.0.1'\n\ninclude WHOCommon called WCom\ninclude HIVElements called HE\ninclude HIVIndicatorElements called HIE\ninclude HIVConfig called Config\n\n// Indicator Definition\nparameter "Measurement Period" Interval<Date> default Interval[@2023-01-01, @2023-01-30]\n\ncontext Patient\n/* Populations */\n\n/*\n *Initial Population\n */\n\ndefine "Initial Population":\n true\n\n/**\n * Numerator\n * \n * Definition: Number of people living with HIV diagnosed with HCV infection who have completed HCV treatment and had a sustained virological response (SVR). SVR is assessed by a viral load measurement 12–24 weeks after the end of treatment.\n * Calculation: COUNT of clients with "HIV status"='HIV-positive' with "HCV treatment completion date" in the reporting period AND with "HCV viral load test date" is BETWEEN '12, 24' weeks after "HCV treatment completion date" AND "HCV viral load test result"='Not detected'\n */\n\ndefine "Numerator":\n HIE."Has HIV-positive Status" and\n exists(HIE."HCV treatment completion date" d) and\n exists(\n HE."Not detected D.DE181" O \n with HE."HCV viral load test date D.DE178" P\n such that O.partOf.references(P) and (weeks between end of P.performed.toInterval() and date from end of Last(HE."HCV treatment completion date").effective.toInterval()> 12 weeks) and \n (weeks between end of P.performed.toInterval() and date from end of Last(HE."HCV treatment completion date").effective.toInterval()< 24 weeks)\n )\n\n\n/**\n * Denominator\n *\n * Definition: Number of people living with HIV and co-infected with HCV who completed HCV treatment and were assessed for sustained virological response\n * Calculation: COUNT of clients with "HIV status"='HIV-positive' with "HCV treatment completion date" in the reporting period AND with "HCV viral load test date" is BETWEEN '12, 24' weeks after "HCV treatment completion date"\n */\n\ndefine "Denominator":\n HIE."Has HIV-positive Status" and\n exists(HE."Positive D.DE171" G\n with HE."HCV test date D.DE169" P\n such that G.partOf.references(P) and P.performed.toInterval() during "Measurement Period") and\n HIE."HCV treatment completion date" and\n exists(\n HE."HCV viral load test date D.DE178" P\n where (weeks between end of P.performed.toInterval() and date from end of Last(HE."HCV treatment completion date").effective.toInterval()> 12 weeks) and \n (weeks between end of P.performed.toInterval() and date from end of Last(HE."HCV treatment completion date").effective.toInterval()< 24 weeks)\n )\n \n\n/* end Populations */\n\n\n/*\n * Disaggregators\n */\n\ndefine "Administrative Gender Stratifier":\n\tHIE."By Administrative Gender Stratifier"\n\ndefine "Age Stratifier":\n\tHIE."By Age Stratifier 2"\n\ndefine "Geographic Region Stratifier":\n\tHIE."By Geographic Region Stratifier"\n\ndefine "patientGroups Stratifier":\n\tHIE."patientGroups"\n\ndefine "By HCV medicine type Stratifier":\n\tHIE."By HCV medicine type Stratifier"\n\n\ndefine "Stratification":\n HIE."By Administrative Gender Stratifier".code \n + ':' + HIE."By Age Stratifier 2"\n+ ':' + HIE."By Geographic Region Stratifier"\n+ Combine(HIE.patientGroups, ':')\n+ HIE."By HCV medicine type Stratifier".code </code></pre></td></tr>\n </table>\n </td>\n </tr>\n \n \n \n \n \n <tr>\n <td colspan=\"2\">\n <table>\n <tr><th><b>Content: </b> application/elm+xml</th></tr>\n <tr><td><pre><code/></pre></td></tr>\n </table>\n </td>\n </tr>\n \n \n </table>\n</div>\n</div>"
},
"extension" : [
{
"url" : "http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability",
"valueCode" : "computable"
}
],
"url" : "http://smart.who.int/hiv/Library/HIVIND92Logic",
"version" : "0.3.0",
"name" : "HIVIND92Logic",
"title" : "HIV.IND.92 Logic",
"status" : "draft",
"experimental" : true,
"type" : {
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/library-type",
"code" : "logic-library"
}
]
},
"date" : "2024-12-06T22:28:12+00:00",
"publisher" : "WHO",
"contact" : [
{
"name" : "WHO",
"telecom" : [
{
"system" : "url",
"value" : "http://who.int"
}
]
}
],
"description" : "% of people living with HIV and co-infected with HCV who were confirmed to be cured of HCV during the reporting period",
"content" : [
{
"contentType" : "text/cql",
"data" : "LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuOTIgTG9naWMKICogUmVmIE5vOiBIRVAuNwogKiBTaG9ydCBOYW1lOiBIQ1YgY3VyZWQgYW1vbmcgcGVvcGxlIGxpdmluZyB3aXRoIEhJVgogKgogKiBEZWZpbml0aW9uOiAlIG9mIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgYW5kIGNvLWluZmVjdGVkIHdpdGggSENWIHdobyB3ZXJlIGNvbmZpcm1lZCB0byBiZSBjdXJlZCBvZiBIQ1YgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqCiAqIE51bWVyYXRvcjogTnVtYmVyIG9mIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgZGlhZ25vc2VkIHdpdGggSENWIGluZmVjdGlvbiB3aG8gaGF2ZSBjb21wbGV0ZWQgSENWIHRyZWF0bWVudCBhbmQgaGFkIGEgc3VzdGFpbmVkIHZpcm9sb2dpY2FsIHJlc3BvbnNlIChTVlIpLiBTVlIgaXMgYXNzZXNzZWQgYnkgYSB2aXJhbCBsb2FkIG1lYXN1cmVtZW50IDEy4oCTMjQgd2Vla3MgYWZ0ZXIgdGhlIGVuZCBvZiB0cmVhdG1lbnQuCiAqIE51bWVyYXRvciBDYWxjdWxhdGlvbjogQ09VTlQgb2YgY2xpZW50cyB3aXRoICJISVYgc3RhdHVzIj0nSElWLXBvc2l0aXZlJyB3aXRoICJIQ1YgdHJlYXRtZW50IGNvbXBsZXRpb24gZGF0ZSIgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QgQU5EIHdpdGggIkhDViB2aXJhbCBsb2FkIHRlc3QgZGF0ZSIgaXMgQkVUV0VFTiAnMTIsIDI0JyB3ZWVrcyBhZnRlciAiSENWIHRyZWF0bWVudCBjb21wbGV0aW9uIGRhdGUiIEFORCAiSENWIHZpcmFsIGxvYWQgdGVzdCByZXN1bHQiPSdOb3QgZGV0ZWN0ZWQnCiAqIE51bWVyYXRvciBFeGNsdXNpb25zOiAKICoKICogRGVub21pbmF0b3I6IE51bWJlciBvZiBwZW9wbGUgbGl2aW5nIHdpdGggSElWIGFuZCBjby1pbmZlY3RlZCB3aXRoIEhDViB3aG8gY29tcGxldGVkIEhDViB0cmVhdG1lbnQgYW5kIHdlcmUgYXNzZXNzZWQgZm9yIHN1c3RhaW5lZCB2aXJvbG9naWNhbCByZXNwb25zZQogKiBEZW5vbWluYXRvciBDYWxjdWxhdGlvbjogQ09VTlQgb2YgY2xpZW50cyB3aXRoICJISVYgc3RhdHVzIj0nSElWLXBvc2l0aXZlJyB3aXRoICJIQ1YgdHJlYXRtZW50IGNvbXBsZXRpb24gZGF0ZSIgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QgQU5EIHdpdGggIkhDViB2aXJhbCBsb2FkIHRlc3QgZGF0ZSIgaXMgQkVUV0VFTiAnMTIsIDI0JyB3ZWVrcyBhZnRlciAiSENWIHRyZWF0bWVudCBjb21wbGV0aW9uIGRhdGUiCiAqIERlbm9taW5hdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEaXNhZ2dyZWdhdGlvbnM6CiAqIOKAosKgR2VuZGVyIChmZW1hbGUsIG1hbGUsIG90aGVyKikgCiAqICDigKIgQWdlICgxNeKAkzE5LCAyMOKAkzI0LCAyNeKAkzI5LCAzMOKAkzQ5LCA1MCsgeWVhcnMpIAogKiAg4oCiwqBLZXkgcG9wdWxhdGlvbnMgKG1lbiB3aG8gaGF2ZSBzZXggd2l0aCBtZW4sIHBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmdzLCBwZW9wbGUgd2hvIGluamVjdCBkcnVncywgc2V4IHdvcmtlcnMsIHRyYW5zIGFuZCBnZW5kZXIgZGl2ZXJzZSBwZW9wbGUpKiogCiAqICDigKLCoENpdGllcyBhbmQgb3RoZXIgYWRtaW5pc3RyYXRpdmUgcmVnaW9ucyBvZiBlcGlkZW1pb2xvZ2ljIGltcG9ydGFuY2UgCiAqICDigKLCoE1lZGljaW5lIHR5cGUgKGludGVyZmVyb24gb3IgZGlyZWN0IGFjdGluZyBhbnRpdmlyYWxzKQogKgogKiBEaXNhZ2dyZWdhdGlvbiBFbGVtZW50czogR2VuZGVyIHwgQWdlIHwgS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUgfCBIQ1YgbWVkaWNpbmUgdHlwZQogKgogKiBOdW1lcmF0b3IgYW5kIERlbm9taW5hdG9yIEVsZW1lbnRzOgogKiBIQ1YgdHJlYXRtZW50IGNvbXBsZXRpb24gZGF0ZSAKICogIEhDViB2aXJhbCBsb2FkIHRlc3QgZGF0ZSAKICogIEhDViB2aXJhbCBsb2FkIHRlc3QgcmVzdWx0IAogKiAgSElWIHN0YXR1cwogKgogKiBSZWZlcmVuY2U6IENvbnNvbGlkYXRlZCBndWlkZWxpbmVzIG9uIHBlcnNvbi1jZW50cmVkIEhJViBzdHJhdGVnaWMgaW5mb3JtYXRpb246IHN0cmVuZ3RoZW5pbmcgcm91dGluZSBkYXRhIGZvciBpbXBhY3QuIEdlbmV2YTogV29ybGQgSGVhbHRoIE9yZ2FuaXphdGlvbjsgMjAyMgogKiAKICogRGF0YSBDb25jZXB0czoKICogSElWLkEuREUxNzogQWdlIHwgQ2FsY3VsYXRlZCBhZ2UgKG51bWJlciBvZiB5ZWFycykgb2YgdGhlIGNsaWVudCBiYXNlZCBvbiBkYXRlIG9mIGJpcnRoCiAqIEhJVi5BLkRFMTg6IEdlbmRlciogfCBHZW5kZXIgb2YgdGhlIGNsaWVudCoKICogSElWLkEuREUxOTogRmVtYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgZmVtYWxlCiAqIEhJVi5BLkRFMjA6IE1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyBtYWxlCiAqIEhJVi5BLkRFMjE6IFRyYW5zZ2VuZGVyIG1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyB0cmFuc2dlbmRlciBtYWxlCiAqIEhJVi5BLkRFMjI6IFRyYW5zZ2VuZGVyIGZlbWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zZ2VuZGVyIGZlbWFsZQogKiBISVYuQS5ERTIzOiBPdGhlciB8IEFkZGl0aW9uYWwgY2F0ZWdvcnkKICogSElWLkIuREU1MDogS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUqIHwgVGhlIHR5cGUgb2Yga2V5IHBvcHVsYXRpb24gdGhhdCB0aGUgY2xpZW50IGlzIGluY2x1ZGVkIGluCiAqIEhJVi5CLkRFNTE6IFNleCB3b3JrZXIgfCBDbGllbnQgaXMgYSBzZXggd29ya2VyCiAqIEhJVi5CLkRFNTI6IE1lbiB3aG8gaGF2ZSBzZXggd2l0aCBtZW4gfCBDbGllbnQgaXMgYSBtYW4gd2hvIGhhcyBzZXggd2l0aCBtZW4KICogSElWLkIuREU1MzogVHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlIHBlb3BsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zIGFuZCBnZW5kZXItZGl2ZXJzZQogKiBISVYuQi5ERTU0OiBQZW9wbGUgd2hvIGluamVjdCBkcnVncyB8IENsaWVudCBpcyBhIHBlcnNvbiB3aG8gaW5qZWN0cyBkcnVncwogKiBISVYuQi5ERTU1OiBQZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5ncyB8IENsaWVudCBsaXZlcyBpbiBhIHByaXNvbiBvciBhbm90aGVyIGNsb3NlZCBzZXR0aW5nCiAqIEhJVi5CLkRFMTE1OiBISVYgc3RhdHVzIHwgSElWIHN0YXR1cyByZXBvcnRlZCBhZnRlciBhcHBseWluZyB0aGUgbmF0aW9uYWwgSElWIHRlc3RpbmcgYWxnb3JpdGhtLiBObyBzaW5nbGUgSElWIHRlc3QgY2FuIHByb3ZpZGUgYW4gSElWLXBvc2l0aXZlIGRpYWdub3Npcy4KICogSElWLkIuREUxMTY6IEhJVi1wb3NpdGl2ZSB8IENsaWVudCBpcyBISVYtcG9zaXRpdmUKICogSElWLkIuREUxMTc6IEhJVi1uZWdhdGl2ZSB8IENsaWVudCBpcyBISVYtbmVnYXRpdmUKICogSElWLkIuREUxMTg6IFVua25vd24gfCBDbGllbnQgaGFzIHVua25vd24gSElWIHN0YXR1cwogKiBISVYuRC5ERTE3NjogSENWIHRyZWF0bWVudCBjb21wbGV0aW9uIGRhdGUgfCBEYXRlIHdoZW4gY2xpZW50IGNvbXBsZXRlZCB0cmVhdG1lbnQgZm9yIGhlcGF0aXRpcyBDIHZpcnVzIChIQ1YpCiAqIEhJVi5ELkRFMTc4OiBIQ1YgdmlyYWwgbG9hZCB0ZXN0IGRhdGUgfCBIZXBhdGl0aXMgQyB2aXJhbCBsb2FkIHRlc3QgZGF0ZQogKiBISVYuRC5ERTE3OTogSENWIHZpcmFsIGxvYWQgdGVzdCByZXN1bHQgfCBIZXBhdGl0aXMgQyB2aXJhbCBsb2FkIHRlc3QgcmVzdWx0IChxdWFsaXRhdGl2ZSkKICogSElWLkQuREUxODA6IERldGVjdGVkIHwgSENWIHdhcyBkZXRlY3RlZAogKiBISVYuRC5ERTE4MTogTm90IGRldGVjdGVkIHwgSENWIHdhcyBub3QgZGV0ZWN0ZWQKICogSElWLkQuREUxODI6IEhDViBtZWRpY2luZSB0eXBlIHwgVHlwZSBvZiBtZWRpY2luZSBjbGllbnQgaXMgcHJlc2NyaWJlZAogKiBISVYuRC5ERTE4MzogSW50ZXJmZXJvbiB8IENsaWVudCBpcyBwcmVzY3JpYmVkIGludGVyZmVyb24KICogSElWLkQuREUxODQ6IERpcmVjdCBhY3RpbmcgYW50aXZpcmFscyB8IENsaWVudCBpcyBwcmVzY3JpYmVkIGRpcmVjdCBhY3RpbmcgYW50aXZpcmFscwogKiBISVYuRS5ERTExNDogS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUqIHwgVGhlIHR5cGUgb2Yga2V5IHBvcHVsYXRpb24gdGhhdCB0aGUgaW5mYW50J3MgbW90aGVyIGlzIGluY2x1ZGVkIGluCiAqIEhJVi5FLkRFMTE1OiBTZXggd29ya2VyIHwgSW5mYW50J3MgbW90aGVyIGlzIGEgc2V4IHdvcmtlcgogKiBISVYuRS5ERTExNjogUGVvcGxlIHdobyBpbmplY3QgZHJ1Z3MgfCBJbmZhbnQncyBtb3RoZXIgaXMgYSBwZXJzb24gd2hvIGluamVjdHMgZHJ1Z3MKICogSElWLkUuREUxMTc6IFRyYW5zIGFuZCBnZW5kZXItZGl2ZXJzZSBwZW9wbGUgfCBJbmZhbnQncyBtb3RoZXIgaWRlbnRpZmllcyBhcyB0cmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UKICogSElWLkUuREUxMTg6IFBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmcgfCBJbmZhbnQncyBtb3RoZXIgaXMgaW4gYSBwcmlzb24gb3IgY2xvc2VkIHNldHRpbmcKICogSElWLkcuREU0NzogSENWIHZpcmFsIGxvYWQgdGVzdCBkYXRlIHwgSGVwYXRpdGlzIEMgdmlyYWwgbG9hZCB0ZXN0IGRhdGUKICogSElWLkcuREU0ODogSENWIHZpcmFsIGxvYWQgdGVzdCByZXN1bHQgfCBIZXBhdGl0aXMgQyB2aXJhbCBsb2FkIHRlc3QgcmVzdWx0IChxdWFsaXRhdGl2ZSkKICogSElWLkcuREU0OTogRGV0ZWN0ZWQgfCBIQ1Ygd2FzIGRldGVjdGVkCiAqIEhJVi5HLkRFNTA6IE5vdCBkZXRlY3RlZCB8IEhDViB3YXMgbm90IGRldGVjdGVkCiAqCiAqIEFkZGl0aW9uYWwgQ29udGV4dAogKiAtIHdoYXQgaXQgbWVhc3VyZXM6IE1lYXN1cmVzIGhvdyBtYW55IGFyZSBjdXJlZCBhbW9uZyBhbGwgdGhvc2Ugd2hvIGNvbXBsZXRlZCB0cmVhdG1lbnQuCiAqIC0gcmF0aW9uYWxlOiBTaG9ydCBjb3Vyc2VzIG9mIEhDViB0cmVhdG1lbnQgd2l0aCBkaXJlY3QgYWN0aW5nIGFudGl2aXJhbHMgKERBQXMpIGxlYWQgdG8gY3VyZSBpbiA+OTAlIG9mIHBhdGllbnRzIGFuZCByZWR1Y2UgbW9ydGFsaXR5LiBJbmZvcm1hdGlvbiBvbiBzdXN0YWluZWQgdmlyYWwgcmVzcG9uc2UgKGN1cmUpIGZvciBIQ1Ygd2lsbCBtZWFzdXJlIHRyZWF0bWVudCBlZmZlY3RpdmVuZXNzIGFuZCBwcm92aWRlIGFuIGluY2VudGl2ZSBzeXN0ZW0sIGZvciBleGFtcGxlLCBjdXJlIGNlcnRpZmljYXRlcy4KICogLSBtZXRob2Q6IFByb2dyYW1tZSByZWNvcmRzLCBjb2hvcnQgc3R1ZGllcywgcGF0aWVudCBtb25pdG9yaW5nIHRvb2xzIChlbGVjdHJvbmljIG9yIHBhcGVyKSwgRU1SLyBlbGVjdHJvbmljIGluZm9ybWF0aW9uIHN5c3RlbXMsIGNvbWJpbmVkIHdpdGggYmVzdCBlc3RpbWF0ZXMgZm9yIHRoZSBwb3B1bGF0aW9uIHdpdGggbm8gdmlyYWwgbG9hZCBkYXRhCiAqIAogKiBTdWdnZXN0ZWQgU2NvcmluZyBNZXRob2Q6IHByb3BvcnRpb24gfCBodHRwOi8vaGw3Lm9yZy9maGlyL3VzL2NxZm1lYXN1cmVzL1N0cnVjdHVyZURlZmluaXRpb24vcHJvcG9ydGlvbi1tZWFzdXJlLWNxZm0KICovCgovKgogKiBQcm9maWxlczoKICogLSBIaXZTdGF0dXMKICogLSBIY3ZUcmVhdG1lbnQKICogLSBIY3ZWaXJhbExvYWRSZXN1bHQKICovCiAKbGlicmFyeSBISVZJTkQ5MkxvZ2ljCgovLyBJbmNsdWRlZCBMaWJyYXJpZXMKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgSElWQ29tbW9uIHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0NvbQppbmNsdWRlIEhJVkVsZW1lbnRzIGNhbGxlZCBIRQppbmNsdWRlIEhJVkluZGljYXRvckVsZW1lbnRzIGNhbGxlZCBISUUKaW5jbHVkZSBISVZDb25maWcgY2FsbGVkIENvbmZpZwoKLy8gSW5kaWNhdG9yIERlZmluaXRpb24KcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGU+IGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjMtMDEtMDEsIEAyMDIzLTAxLTMwXQoKY29udGV4dCBQYXRpZW50Ci8qIFBvcHVsYXRpb25zICovCgovKgogKkluaXRpYWwgUG9wdWxhdGlvbgogKi8KCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIjoKICB0cnVlCgovKioKICogTnVtZXJhdG9yCiAqIAogKiBEZWZpbml0aW9uOiBOdW1iZXIgb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViBkaWFnbm9zZWQgd2l0aCBIQ1YgaW5mZWN0aW9uIHdobyBoYXZlIGNvbXBsZXRlZCBIQ1YgdHJlYXRtZW50IGFuZCBoYWQgYSBzdXN0YWluZWQgdmlyb2xvZ2ljYWwgcmVzcG9uc2UgKFNWUikuIFNWUiBpcyBhc3Nlc3NlZCBieSBhIHZpcmFsIGxvYWQgbWVhc3VyZW1lbnQgMTLigJMyNCB3ZWVrcyBhZnRlciB0aGUgZW5kIG9mIHRyZWF0bWVudC4KICogQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgd2l0aCAiSENWIHRyZWF0bWVudCBjb21wbGV0aW9uIGRhdGUiIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCB3aXRoICJIQ1YgdmlyYWwgbG9hZCB0ZXN0IGRhdGUiIGlzIEJFVFdFRU4gJzEyLCAyNCcgd2Vla3MgYWZ0ZXIgIkhDViB0cmVhdG1lbnQgY29tcGxldGlvbiBkYXRlIiBBTkQgIkhDViB2aXJhbCBsb2FkIHRlc3QgcmVzdWx0Ij0nTm90IGRldGVjdGVkJwogKi8KCmRlZmluZSAiTnVtZXJhdG9yIjoKICBISUUuIkhhcyBISVYtcG9zaXRpdmUgU3RhdHVzIiBhbmQKICBleGlzdHMoSElFLiJIQ1YgdHJlYXRtZW50IGNvbXBsZXRpb24gZGF0ZSIgZCkgYW5kCiAgZXhpc3RzKAogICAgSEUuIk5vdCBkZXRlY3RlZCBELkRFMTgxIiBPIAogICAgd2l0aCBIRS4iSENWIHZpcmFsIGxvYWQgdGVzdCBkYXRlIEQuREUxNzgiIFAKICAgIHN1Y2ggdGhhdCBPLnBhcnRPZi5yZWZlcmVuY2VzKFApIGFuZCAod2Vla3MgYmV0d2VlbiBlbmQgb2YgUC5wZXJmb3JtZWQudG9JbnRlcnZhbCgpIGFuZCBkYXRlIGZyb20gZW5kIG9mIExhc3QoSEUuIkhDViB0cmVhdG1lbnQgY29tcGxldGlvbiBkYXRlIikuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKT4gMTIgd2Vla3MpIGFuZCAKICAgICh3ZWVrcyBiZXR3ZWVuIGVuZCBvZiBQLnBlcmZvcm1lZC50b0ludGVydmFsKCkgYW5kIGRhdGUgZnJvbSBlbmQgb2YgTGFzdChIRS4iSENWIHRyZWF0bWVudCBjb21wbGV0aW9uIGRhdGUiKS5lZmZlY3RpdmUudG9JbnRlcnZhbCgpPCAyNCB3ZWVrcykKICApCgoKLyoqCiAqIERlbm9taW5hdG9yCiAqCiAqIERlZmluaXRpb246IE51bWJlciBvZiBwZW9wbGUgbGl2aW5nIHdpdGggSElWIGFuZCBjby1pbmZlY3RlZCB3aXRoIEhDViB3aG8gY29tcGxldGVkIEhDViB0cmVhdG1lbnQgYW5kIHdlcmUgYXNzZXNzZWQgZm9yIHN1c3RhaW5lZCB2aXJvbG9naWNhbCByZXNwb25zZQogKiBDYWxjdWxhdGlvbjogQ09VTlQgb2YgY2xpZW50cyB3aXRoICJISVYgc3RhdHVzIj0nSElWLXBvc2l0aXZlJyB3aXRoICJIQ1YgdHJlYXRtZW50IGNvbXBsZXRpb24gZGF0ZSIgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QgQU5EIHdpdGggIkhDViB2aXJhbCBsb2FkIHRlc3QgZGF0ZSIgaXMgQkVUV0VFTiAnMTIsIDI0JyB3ZWVrcyBhZnRlciAiSENWIHRyZWF0bWVudCBjb21wbGV0aW9uIGRhdGUiCiAqLwoKZGVmaW5lICJEZW5vbWluYXRvciI6CiAgSElFLiJIYXMgSElWLXBvc2l0aXZlIFN0YXR1cyIgYW5kCiAgZXhpc3RzKEhFLiJQb3NpdGl2ZSBELkRFMTcxIiBHCiAgd2l0aCBIRS4iSENWIHRlc3QgZGF0ZSBELkRFMTY5IiBQCiAgc3VjaCB0aGF0IEcucGFydE9mLnJlZmVyZW5jZXMoUCkgYW5kIFAucGVyZm9ybWVkLnRvSW50ZXJ2YWwoKSBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCIpIGFuZAogIEhJRS4iSENWIHRyZWF0bWVudCBjb21wbGV0aW9uIGRhdGUiIGFuZAogIGV4aXN0cygKICAgIEhFLiJIQ1YgdmlyYWwgbG9hZCB0ZXN0IGRhdGUgRC5ERTE3OCIgUAogICAgd2hlcmUgKHdlZWtzIGJldHdlZW4gZW5kIG9mIFAucGVyZm9ybWVkLnRvSW50ZXJ2YWwoKSBhbmQgZGF0ZSBmcm9tIGVuZCBvZiBMYXN0KEhFLiJIQ1YgdHJlYXRtZW50IGNvbXBsZXRpb24gZGF0ZSIpLmVmZmVjdGl2ZS50b0ludGVydmFsKCk+IDEyIHdlZWtzKSBhbmQgCiAgICAod2Vla3MgYmV0d2VlbiBlbmQgb2YgUC5wZXJmb3JtZWQudG9JbnRlcnZhbCgpIGFuZCBkYXRlIGZyb20gZW5kIG9mIExhc3QoSEUuIkhDViB0cmVhdG1lbnQgY29tcGxldGlvbiBkYXRlIikuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKTwgMjQgd2Vla3MpCiAgKQogICAgCgovKiBlbmQgUG9wdWxhdGlvbnMgKi8KCgovKgogKiBEaXNhZ2dyZWdhdG9ycwogKi8KCmRlZmluZSAiQWRtaW5pc3RyYXRpdmUgR2VuZGVyIFN0cmF0aWZpZXIiOgoJSElFLiJCeSBBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciIKCmRlZmluZSAiQWdlIFN0cmF0aWZpZXIiOgoJSElFLiJCeSBBZ2UgU3RyYXRpZmllciAyIgoKZGVmaW5lICJHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIjoKCUhJRS4iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciIKCmRlZmluZSAicGF0aWVudEdyb3VwcyBTdHJhdGlmaWVyIjoKCUhJRS4icGF0aWVudEdyb3VwcyIKCmRlZmluZSAiQnkgSENWIG1lZGljaW5lIHR5cGUgU3RyYXRpZmllciI6CglISUUuIkJ5IEhDViBtZWRpY2luZSB0eXBlIFN0cmF0aWZpZXIiCgoKZGVmaW5lICJTdHJhdGlmaWNhdGlvbiI6CiBISUUuIkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIi5jb2RlIAogICsgJzonICsgSElFLiJCeSBBZ2UgU3RyYXRpZmllciAyIgorICc6JyArIEhJRS4iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciIKKyBDb21iaW5lKEhJRS5wYXRpZW50R3JvdXBzLCAnOicpCisgSElFLiJCeSBIQ1YgbWVkaWNpbmUgdHlwZSBTdHJhdGlmaWVyIi5jb2RlIA=="
},
{
"contentType" : "application/elm+xml"
}
]
}