diff --git a/.gitignore b/.gitignore index 409a8867..23372bd2 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ logs/ node_modules/ dist/ .idea/ -.DS_Store \ No newline at end of file +.DS_Store +tingo_db/ diff --git a/env.json b/env.json index ded511b2..d08a95ef 100644 --- a/env.json +++ b/env.json @@ -13,7 +13,7 @@ }, "WHITELIST": { "type": "string", - "default": "http://localhost" + "default": "http://localhost, http://localhost:3005" }, "LOGGING_LEVEL": { "type": "string", @@ -30,5 +30,9 @@ "AUTH_SERVER_URI": { "type": "string", "default": "http://localhost:8090" + }, + "VSAC_KEY": { + "type": "string", + "default": "changeMe" } } diff --git a/patches/@projecttacoma+node-fhir-server-core+2.2.8.patch b/patches/@projecttacoma+node-fhir-server-core+2.2.8.patch new file mode 100644 index 00000000..8895b539 --- /dev/null +++ b/patches/@projecttacoma+node-fhir-server-core+2.2.8.patch @@ -0,0 +1,16 @@ +diff --git a/node_modules/@projecttacoma/node-fhir-server-core/dist/server/resources/4_0_0/schemas/datarequirement.js b/node_modules/@projecttacoma/node-fhir-server-core/dist/server/resources/4_0_0/schemas/datarequirement.js +index ef49581..6868203 100644 +--- a/node_modules/@projecttacoma/node-fhir-server-core/dist/server/resources/4_0_0/schemas/datarequirement.js ++++ b/node_modules/@projecttacoma/node-fhir-server-core/dist/server/resources/4_0_0/schemas/datarequirement.js +@@ -152,9 +152,9 @@ module.exports = class DataRequirement { + return; + } + +- let Element = require('./element.js'); ++ let CodeFilter = require('./datarequirementcodefilter.js'); + +- this.__data.codeFilter = Array.isArray(value) ? value.map(v => new Element(v)) : [new Element(value)]; ++ this.__data.codeFilter = Array.isArray(value) ? value.map(v => new CodeFilter(v)) : [new CodeFilter(value)]; + } + }); + Object.defineProperty(this, 'dateFilter', { diff --git a/src/cds-library/CRD-DTR/IPledge/R4/files/IPledgePrepopulation-0.1.0.cql b/src/cds-library/CRD-DTR/IPledge/R4/files/IPledgePrepopulation-0.1.0.cql new file mode 100644 index 00000000..4960e2fe --- /dev/null +++ b/src/cds-library/CRD-DTR/IPledge/R4/files/IPledgePrepopulation-0.1.0.cql @@ -0,0 +1,10 @@ +library IPledgePrepopulation version '0.1.0' +using FHIR version '4.0.0' +include FHIRHelpers version '4.0.0' called FHIRHelpers +include CDS_Connect_Commons_for_FHIRv400 version '1.0.2' called CDS +include DTRHelpers version '0.1.0' called DTR + +codesystem "ICD-10-CM": 'http://hl7.org/fhir/sid/icd-10-cm' +codesystem "LOINC": 'http://loinc.org' +codesystem "SNOMED-CT": 'http://snomed.info/sct' +codesystem "RXNORM": 'http://www.nlm.nih.gov/research/umls/rxnorm' diff --git a/src/cds-library/CRD-DTR/IPledge/R4/files/IPledgePrescriberEnrollmentPrepopulation-0.1.0.cql b/src/cds-library/CRD-DTR/IPledge/R4/files/IPledgePrescriberEnrollmentPrepopulation-0.1.0.cql new file mode 100644 index 00000000..6e6b1afb --- /dev/null +++ b/src/cds-library/CRD-DTR/IPledge/R4/files/IPledgePrescriberEnrollmentPrepopulation-0.1.0.cql @@ -0,0 +1,51 @@ +library IPledgePrescriberEnrollmentPrepopulation version '0.1.0' +using FHIR version '4.0.0' +include FHIRHelpers version '4.0.0' called FHIRHelpers + +codesystem "ICD-10-CM": 'http://hl7.org/fhir/sid/icd-10-cm' +codesystem "LOINC": 'http://loinc.org' +codesystem "SNOMED-CT": 'http://snomed.info/sct' +codesystem "RXNORM": 'http://www.nlm.nih.gov/research/umls/rxnorm' + +code "Oncologist":'394592004' from "SNOMED-CT" + +parameter device_request DeviceRequest +parameter service_request ServiceRequest +parameter medication_request MedicationRequest + +context Patient + +define Today: Today() + +define "SigningProviderReference": Coalesce(device_request.performer.reference.value, service_request.performer.reference.value, medication_request.requester.reference.value) +// Get Practitioner +define OrderingProvider: singleton from ( + [Practitioner] practitioner + where ('Practitioner/' + practitioner.id) = SigningProviderReference) + +define Qualifications: singleton from ( + "OrderingProvider".qualification[0].code.coding[0].code.value) + +define Credentials: {Qualifications} + +define PractitionerRole: singleton from ( + [PractitionerRole] prole + where (prole.practitioner.reference.value) = SigningProviderReference) + +define Specialty: FHIRHelpers.ToConcept("PractitionerRole".specialty[0] as FHIR.CodeableConcept).codes + +define PreferredCommunication: {(singleton from ( + "OrderingProvider".telecom telecom where telecom.rank.value = 1)).system.value} + +define OrgName: ([Organization] org).name.value + +define MD: (singleton from ( + "OrderingProvider".identifier identifier + where identifier.type.coding[0].code = 'MD')).value.value + +define ValidIPledgeCredentials: + from "OrderingProvider".qualification qualification + where qualification.identifier.system.value = 'http://www.nlm.nih.gov/research/umls/rxnorm' and qualification.identifier.value.value = '6064' + +define ThirdPartyCredentials: ValidIPledgeCredentials[0].code.text.value +define ThirdPartyIssuer: ValidIPledgeCredentials[0].issuer.display.value \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/IPledge/R4/files/IPledgeRule-0.1.0.cql b/src/cds-library/CRD-DTR/IPledge/R4/files/IPledgeRule-0.1.0.cql new file mode 100644 index 00000000..9ecc441a --- /dev/null +++ b/src/cds-library/CRD-DTR/IPledge/R4/files/IPledgeRule-0.1.0.cql @@ -0,0 +1,45 @@ +library IPledgeRule version '0.1.0' +using FHIR version '4.0.0' +include FHIRHelpers version '4.0.0' called FHIRHelpers + + +parameter Patient Patient +parameter medication_request MedicationRequest +parameter medication_dispense MedicationDispense +parameter medication_statement MedicationStatement + +define RULE_APPLIES: + true + +define PRIORAUTH_REQUIRED: + false + +define DOCUMENTATION_REQUIRED: + true + +define RESULT_InfoLink: + 'https://www.accessdata.fda.gov/drugsatfda_docs/rems/Isotretinoin_2021_10_8_REMS_Document.pdf' + +define INFO_PATIENT_FactSheet: + 'https://www.accessdata.fda.gov/drugsatfda_docs/rems/Isotretinoin_2021_10_8_Fact_Sheet.pdf' + +define INFO_PATIENT_GuideForPatientsWhoCanGetPregnant: + 'https://www.accessdata.fda.gov/drugsatfda_docs/rems/Isotretinoin_2021_10_8_Guide_for_Patients_Who_Can_Get_pregnant.pdf' +define INFO_PATIENT_ContraceptiveCounselingGuide: + 'https://www.accessdata.fda.gov/drugsatfda_docs/rems/Isotretinoin_2021_10_8_Contraception_Counseling_Guide.pdf' +define INFO_PRESCRIBER_PrescriberGuide: + 'https://www.accessdata.fda.gov/drugsatfda_docs/rems/Isotretinoin_2021_10_8_Prescriber_Guide.pdf' +define INFO_PRESCRIBER_ComprehensionQuestions: + 'https://www.accessdata.fda.gov/drugsatfda_docs/rems/Isotretinoin_2021_10_8_Comprehension_Questions.pdf' + +define RESULT_QuestionnaireOrderUri: + 'Questionnaire/IPledgeRemsPatientEnrollment' + +define RESULT_QuestionnairePrescriberEnrollmentUri: + 'Questionnaire/IPledgeRemsPrescriberEnrollmentForm' + +define RESULT_requestId: + medication_request + +define RESULT_dispense: + medication_dispense \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/IPledge/R4/resources/Library-R4-IPledge-prepopulation.json b/src/cds-library/CRD-DTR/IPledge/R4/resources/Library-R4-IPledge-prepopulation.json new file mode 100644 index 00000000..85880ef1 --- /dev/null +++ b/src/cds-library/CRD-DTR/IPledge/R4/resources/Library-R4-IPledge-prepopulation.json @@ -0,0 +1,99 @@ +{ + "resourceType": "Library", + "id": "IPledge-prepopulation", + "url": "http://hl7.org/fhir/us/davinci-dtr/Library/IPledge-prepopulation", + "name": "IPledge-prepopulation", + "version": "0.1.0", + "title": "IPledge Prepopulation", + "status": "draft", + "type": { + "coding": [ + { + "code": "logic-library" + } + ] + }, + "relatedArtifact": [ + { + "type": "depends-on", + "resource": "Library/FHIRHelpers-4.0.0" + }, + { + "type": "depends-on", + "resource": "Library/CDS_Connect_Commons_for_FHIRv400" + }, + { + "type": "depends-on", + "resource": "Library/DTRHelpers" + } + ], + "dataRequirement": [ + { + "type": "Condition", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.81" + } + ] + }, + { + "type": "Condition", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.198" + } + ] + }, + { + "type": "Procedure", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.90" + } + ] + }, + { + "type": "MedicationRequest", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.192" + } + ] + }, + { + "type": "MedicationRequest", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.193" + } + ] + }, + { + "type": "Observation" + }, + { + "type": "MedicationStatement", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.197" + } + ] + } + ], + "content": [ + { + "contentType": "text/cql", + "data": "bGlicmFyeSBJUGxlZGdlUHJlcG9wdWxhdGlvbiAgdmVyc2lvbiAnMC4xLjAnCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjAnCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjAnIGNhbGxlZCBGSElSSGVscGVycwppbmNsdWRlIENEU19Db25uZWN0X0NvbW1vbnNfZm9yX0ZISVJ2NDAwIHZlcnNpb24gJzEuMC4yJyBjYWxsZWQgQ0RTCmluY2x1ZGUgRFRSSGVscGVycyB2ZXJzaW9uICcwLjEuMCcgY2FsbGVkIERUUgoKY29kZXN5c3RlbSAiSUNELTEwLUNNIjogJ2h0dHA6Ly9obDcub3JnL2ZoaXIvc2lkL2ljZC0xMC1jbScKY29kZXN5c3RlbSAiTE9JTkMiOiAnaHR0cDovL2xvaW5jLm9yZycKY29kZXN5c3RlbSAiU05PTUVELUNUIjogJ2h0dHA6Ly9zbm9tZWQuaW5mby9zY3QnCmNvZGVzeXN0ZW0gIlJYTk9STSI6ICdodHRwOi8vd3d3Lm5sbS5uaWguZ292L3Jlc2VhcmNoL3VtbHMvcnhub3JtJwo=" + }, + { + "contentType": "application/elm+json", + "data": "eyJsaWJyYXJ5Ijp7ImFubm90YXRpb24iOlt7InRyYW5zbGF0b3JPcHRpb25zIjoiIiwidHlwZSI6IkNxbFRvRWxtSW5mbyJ9LHsibGlicmFyeUlkIjoiSVBsZWRnZVByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjo0LCJzdGFydENoYXIiOjEsImVuZExpbmUiOjQsImVuZENoYXIiOjY3LCJtZXNzYWdlIjoiQ291bGQgbm90IGxvYWQgc291cmNlIGZvciBsaWJyYXJ5IENEU19Db25uZWN0X0NvbW1vbnNfZm9yX0ZISVJ2NDAwLiIsImVycm9yVHlwZSI6ImluY2x1ZGUiLCJlcnJvclNldmVyaXR5IjoiZXJyb3IiLCJ0YXJnZXRJbmNsdWRlTGlicmFyeUlkIjoiQ0RTX0Nvbm5lY3RfQ29tbW9uc19mb3JfRkhJUnY0MDAiLCJ0YXJnZXRJbmNsdWRlTGlicmFyeVZlcnNpb25JZCI6IjEuMC4yIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IklQbGVkZ2VQcmVwb3B1bGF0aW9uIiwibGlicmFyeVZlcnNpb24iOiIwLjEuMCIsInN0YXJ0TGluZSI6NSwic3RhcnRDaGFyIjoxLCJlbmRMaW5lIjo1LCJlbmRDaGFyIjo0NSwibWVzc2FnZSI6IkNvdWxkIG5vdCBsb2FkIHNvdXJjZSBmb3IgbGlicmFyeSBEVFJIZWxwZXJzLiIsImVycm9yVHlwZSI6ImluY2x1ZGUiLCJlcnJvclNldmVyaXR5IjoiZXJyb3IiLCJ0YXJnZXRJbmNsdWRlTGlicmFyeUlkIjoiRFRSSGVscGVycyIsInRhcmdldEluY2x1ZGVMaWJyYXJ5VmVyc2lvbklkIjoiMC4xLjAiLCJ0eXBlIjoiQ3FsVG9FbG1FcnJvciJ9XSwiaWRlbnRpZmllciI6eyJpZCI6IklQbGVkZ2VQcmVwb3B1bGF0aW9uIiwidmVyc2lvbiI6IjAuMS4wIn0sInNjaGVtYUlkZW50aWZpZXIiOnsiaWQiOiJ1cm46aGw3LW9yZzplbG0iLCJ2ZXJzaW9uIjoicjEifSwidXNpbmdzIjp7ImRlZiI6W3sibG9jYWxJZGVudGlmaWVyIjoiU3lzdGVtIiwidXJpIjoidXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIn0seyJsb2NhbElkZW50aWZpZXIiOiJGSElSIiwidXJpIjoiaHR0cDovL2hsNy5vcmcvZmhpciIsInZlcnNpb24iOiI0LjAuMCJ9XX0sImluY2x1ZGVzIjp7ImRlZiI6W3sibG9jYWxJZGVudGlmaWVyIjoiRkhJUkhlbHBlcnMiLCJwYXRoIjoiRkhJUkhlbHBlcnMiLCJ2ZXJzaW9uIjoiNC4wLjAifV19LCJjb2RlU3lzdGVtcyI6eyJkZWYiOlt7Im5hbWUiOiJJQ0QtMTAtQ00iLCJpZCI6Imh0dHA6Ly9obDcub3JnL2ZoaXIvc2lkL2ljZC0xMC1jbSIsImFjY2Vzc0xldmVsIjoiUHVibGljIn0seyJuYW1lIjoiTE9JTkMiLCJpZCI6Imh0dHA6Ly9sb2luYy5vcmciLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyJ9LHsibmFtZSI6IlNOT01FRC1DVCIsImlkIjoiaHR0cDovL3Nub21lZC5pbmZvL3NjdCIsImFjY2Vzc0xldmVsIjoiUHVibGljIn0seyJuYW1lIjoiUlhOT1JNIiwiaWQiOiJodHRwOi8vd3d3Lm5sbS5uaWguZ292L3Jlc2VhcmNoL3VtbHMvcnhub3JtIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMifV19fX0=" + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/IPledge/R4/resources/Library-R4-IPledgePrescriberEnrollment-prepopulation.json b/src/cds-library/CRD-DTR/IPledge/R4/resources/Library-R4-IPledgePrescriberEnrollment-prepopulation.json new file mode 100644 index 00000000..23c1e32d --- /dev/null +++ b/src/cds-library/CRD-DTR/IPledge/R4/resources/Library-R4-IPledgePrescriberEnrollment-prepopulation.json @@ -0,0 +1,113 @@ +{ + "resourceType": "Library", + "id": "IPledgePrescriberEnrollment-prepopulation", + "url": "http://hl7.org/fhir/us/davinci-dtr/Library/IPledgePrescriberEnrollment-prepopulation", + "name": "IPledgePrescriberEnrollment-prepopulation", + "version": "0.1.0", + "title": "IPledgePrescriberEnrollment Prepopulation", + "status": "draft", + "type": { + "coding": [ + { + "code": "logic-library" + } + ] + }, + "relatedArtifact": [ + { + "type": "depends-on", + "resource": "Library/FHIRHelpers-4.0.0" + }, + { + "type": "depends-on", + "resource": "Library/CDS_Connect_Commons_for_FHIRv400" + }, + { + "type": "depends-on", + "resource": "Library/DTRHelpers" + } + ], + "dataRequirement": [ + { + "type": "Condition", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.81" + } + ] + }, + { + "type": "Condition", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.198" + } + ] + }, + { + "type": "Procedure", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.90" + } + ] + }, + { + "type": "MedicationRequest", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.192" + } + ] + }, + { + "type": "MedicationRequest", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.193" + } + ] + }, + { + "type": "Observation" + }, + { + "type": "MedicationStatement", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.197" + } + ] + }, + { + "type": "Practitioner" + }, + { + "type": "PractitionerRole", + "subjectCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/ValueSet/subject-type", + "code": "Practitioner" + } + ] + } + } + ], + "content": [ + { + "contentType": "text/cql", + "data": "bGlicmFyeSBJUGxlZGdlUHJlc2NyaWJlckVucm9sbG1lbnRQcmVwb3B1bGF0aW9uICB2ZXJzaW9uICcwLjEuMCcKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMCcKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMCcgY2FsbGVkIEZISVJIZWxwZXJzCgpjb2Rlc3lzdGVtICJJQ0QtMTAtQ00iOiAnaHR0cDovL2hsNy5vcmcvZmhpci9zaWQvaWNkLTEwLWNtJwpjb2Rlc3lzdGVtICJMT0lOQyI6ICdodHRwOi8vbG9pbmMub3JnJwpjb2Rlc3lzdGVtICJTTk9NRUQtQ1QiOiAnaHR0cDovL3Nub21lZC5pbmZvL3NjdCcKY29kZXN5c3RlbSAiUlhOT1JNIjogJ2h0dHA6Ly93d3cubmxtLm5paC5nb3YvcmVzZWFyY2gvdW1scy9yeG5vcm0nCgpjb2RlICJPbmNvbG9naXN0IjonMzk0NTkyMDA0JyBmcm9tICJTTk9NRUQtQ1QiCgpwYXJhbWV0ZXIgZGV2aWNlX3JlcXVlc3QgRGV2aWNlUmVxdWVzdApwYXJhbWV0ZXIgc2VydmljZV9yZXF1ZXN0IFNlcnZpY2VSZXF1ZXN0CnBhcmFtZXRlciBtZWRpY2F0aW9uX3JlcXVlc3QgTWVkaWNhdGlvblJlcXVlc3QKCmNvbnRleHQgUGF0aWVudAoKZGVmaW5lIFRvZGF5OiBUb2RheSgpCgpkZWZpbmUgIlNpZ25pbmdQcm92aWRlclJlZmVyZW5jZSI6IENvYWxlc2NlKGRldmljZV9yZXF1ZXN0LnBlcmZvcm1lci5yZWZlcmVuY2UudmFsdWUsIHNlcnZpY2VfcmVxdWVzdC5wZXJmb3JtZXIucmVmZXJlbmNlLnZhbHVlLCBtZWRpY2F0aW9uX3JlcXVlc3QucmVxdWVzdGVyLnJlZmVyZW5jZS52YWx1ZSkKLy8gR2V0IFByYWN0aXRpb25lcgpkZWZpbmUgT3JkZXJpbmdQcm92aWRlcjogc2luZ2xldG9uIGZyb20gKAogIFtQcmFjdGl0aW9uZXJdIHByYWN0aXRpb25lcgogICAgd2hlcmUgKCdQcmFjdGl0aW9uZXIvJyArIHByYWN0aXRpb25lci5pZCkgPSAgU2lnbmluZ1Byb3ZpZGVyUmVmZXJlbmNlKQoKZGVmaW5lIFF1YWxpZmljYXRpb25zOiBzaW5nbGV0b24gZnJvbSAoCiAgICAiT3JkZXJpbmdQcm92aWRlciIucXVhbGlmaWNhdGlvblswXS5jb2RlLmNvZGluZ1swXS5jb2RlLnZhbHVlKQoKZGVmaW5lIENyZWRlbnRpYWxzOiB7UXVhbGlmaWNhdGlvbnN9CgpkZWZpbmUgUHJhY3RpdGlvbmVyUm9sZTogc2luZ2xldG9uIGZyb20gKAogIFtQcmFjdGl0aW9uZXJSb2xlXSBwcm9sZQogICAgd2hlcmUgKHByb2xlLnByYWN0aXRpb25lci5yZWZlcmVuY2UudmFsdWUpID0gU2lnbmluZ1Byb3ZpZGVyUmVmZXJlbmNlKQoKZGVmaW5lIFNwZWNpYWx0eTogIEZISVJIZWxwZXJzLlRvQ29uY2VwdCgiUHJhY3RpdGlvbmVyUm9sZSIuc3BlY2lhbHR5WzBdIGFzIEZISVIuQ29kZWFibGVDb25jZXB0KS5jb2RlcwoKZGVmaW5lIFByZWZlcnJlZENvbW11bmljYXRpb246IHsoc2luZ2xldG9uIGZyb20gKAogICJPcmRlcmluZ1Byb3ZpZGVyIi50ZWxlY29tIHRlbGVjb20gd2hlcmUgdGVsZWNvbS5yYW5rLnZhbHVlID0gMSkpLnN5c3RlbS52YWx1ZX0KCmRlZmluZSBPcmdOYW1lOiAoW09yZ2FuaXphdGlvbl0gb3JnKS5uYW1lLnZhbHVlCgpkZWZpbmUgTUQ6IChzaW5nbGV0b24gZnJvbSAoCiAgIk9yZGVyaW5nUHJvdmlkZXIiLmlkZW50aWZpZXIgaWRlbnRpZmllcgogICAgd2hlcmUgaWRlbnRpZmllci50eXBlLmNvZGluZ1swXS5jb2RlID0gJ01EJykpLnZhbHVlLnZhbHVlCgpkZWZpbmUgVmFsaWRJUGxlZGdlQ3JlZGVudGlhbHM6IAogIGZyb20gIk9yZGVyaW5nUHJvdmlkZXIiLnF1YWxpZmljYXRpb24gcXVhbGlmaWNhdGlvbiAKICAgIHdoZXJlIHF1YWxpZmljYXRpb24uaWRlbnRpZmllci5zeXN0ZW0udmFsdWUgPSAnaHR0cDovL3d3dy5ubG0ubmloLmdvdi9yZXNlYXJjaC91bWxzL3J4bm9ybScgYW5kIHF1YWxpZmljYXRpb24uaWRlbnRpZmllci52YWx1ZS52YWx1ZSA9ICc2MDY0JwoKZGVmaW5lIFRoaXJkUGFydHlDcmVkZW50aWFsczogVmFsaWRJUGxlZGdlQ3JlZGVudGlhbHNbMF0uY29kZS50ZXh0LnZhbHVlCmRlZmluZSBUaGlyZFBhcnR5SXNzdWVyOiBWYWxpZElQbGVkZ2VDcmVkZW50aWFsc1swXS5pc3N1ZXIuZGlzcGxheS52YWx1ZQ==" + }, + { + "contentType": "application/elm+json", + "data": "eyJsaWJyYXJ5Ijp7ImFubm90YXRpb24iOlt7InRyYW5zbGF0b3JPcHRpb25zIjoiIiwidHlwZSI6IkNxbFRvRWxtSW5mbyJ9LHsibGlicmFyeUlkIjoiSVBsZWRnZVByZXNjcmliZXJFbnJvbGxtZW50UHJlcG9wdWxhdGlvbiIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjIwLCJzdGFydENoYXIiOjEyMywiZW5kTGluZSI6MjAsImVuZENoYXIiOjEyNywibWVzc2FnZSI6Ikxpc3QtdmFsdWVkIGV4cHJlc3Npb24gd2FzIGRlbW90ZWQgdG8gYSBzaW5nbGV0b24uIiwiZXJyb3JUeXBlIjoic2VtYW50aWMiLCJlcnJvclNldmVyaXR5Ijoid2FybmluZyIsInR5cGUiOiJDcWxUb0VsbUVycm9yIn0seyJsaWJyYXJ5SWQiOiJJUGxlZGdlUHJlc2NyaWJlckVucm9sbG1lbnRQcmVwb3B1bGF0aW9uIiwibGlicmFyeVZlcnNpb24iOiIwLjEuMCIsInN0YXJ0TGluZSI6MjAsInN0YXJ0Q2hhciI6MTIzLCJlbmRMaW5lIjoyMCwiZW5kQ2hhciI6MTI3LCJtZXNzYWdlIjoiTGlzdC12YWx1ZWQgZXhwcmVzc2lvbiB3YXMgZGVtb3RlZCB0byBhIHNpbmdsZXRvbi4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJ3YXJuaW5nIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IklQbGVkZ2VQcmVzY3JpYmVyRW5yb2xsbWVudFByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjo0OCwic3RhcnRDaGFyIjo0MywiZW5kTGluZSI6NDgsImVuZENoYXIiOjQ3LCJtZXNzYWdlIjoiTGlzdC12YWx1ZWQgZXhwcmVzc2lvbiB3YXMgZGVtb3RlZCB0byBhIHNpbmdsZXRvbi4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJ3YXJuaW5nIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IklQbGVkZ2VQcmVzY3JpYmVyRW5yb2xsbWVudFByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjo0OCwic3RhcnRDaGFyIjoxMzIsImVuZExpbmUiOjQ4LCJlbmRDaGFyIjoxMzYsIm1lc3NhZ2UiOiJMaXN0LXZhbHVlZCBleHByZXNzaW9uIHdhcyBkZW1vdGVkIHRvIGEgc2luZ2xldG9uLiIsImVycm9yVHlwZSI6InNlbWFudGljIiwiZXJyb3JTZXZlcml0eSI6Indhcm5pbmciLCJ0eXBlIjoiQ3FsVG9FbG1FcnJvciJ9XSwiaWRlbnRpZmllciI6eyJpZCI6IklQbGVkZ2VQcmVzY3JpYmVyRW5yb2xsbWVudFByZXBvcHVsYXRpb24iLCJ2ZXJzaW9uIjoiMC4xLjAifSwic2NoZW1hSWRlbnRpZmllciI6eyJpZCI6InVybjpobDctb3JnOmVsbSIsInZlcnNpb24iOiJyMSJ9LCJ1c2luZ3MiOnsiZGVmIjpbeyJsb2NhbElkZW50aWZpZXIiOiJTeXN0ZW0iLCJ1cmkiOiJ1cm46aGw3LW9yZzplbG0tdHlwZXM6cjEifSx7ImxvY2FsSWRlbnRpZmllciI6IkZISVIiLCJ1cmkiOiJodHRwOi8vaGw3Lm9yZy9maGlyIiwidmVyc2lvbiI6IjQuMC4wIn1dfSwiaW5jbHVkZXMiOnsiZGVmIjpbeyJsb2NhbElkZW50aWZpZXIiOiJGSElSSGVscGVycyIsInBhdGgiOiJGSElSSGVscGVycyIsInZlcnNpb24iOiI0LjAuMCJ9XX0sInBhcmFtZXRlcnMiOnsiZGVmIjpbeyJuYW1lIjoiZGV2aWNlX3JlcXVlc3QiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInBhcmFtZXRlclR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfURldmljZVJlcXVlc3QiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19LHsibmFtZSI6InNlcnZpY2VfcmVxdWVzdCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwicGFyYW1ldGVyVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9U2VydmljZVJlcXVlc3QiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19LHsibmFtZSI6Im1lZGljYXRpb25fcmVxdWVzdCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwicGFyYW1ldGVyVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TWVkaWNhdGlvblJlcXVlc3QiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0sImNvZGVTeXN0ZW1zIjp7ImRlZiI6W3sibmFtZSI6IklDRC0xMC1DTSIsImlkIjoiaHR0cDovL2hsNy5vcmcvZmhpci9zaWQvaWNkLTEwLWNtIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMifSx7Im5hbWUiOiJMT0lOQyIsImlkIjoiaHR0cDovL2xvaW5jLm9yZyIsImFjY2Vzc0xldmVsIjoiUHVibGljIn0seyJuYW1lIjoiU05PTUVELUNUIiwiaWQiOiJodHRwOi8vc25vbWVkLmluZm8vc2N0IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMifSx7Im5hbWUiOiJSWE5PUk0iLCJpZCI6Imh0dHA6Ly93d3cubmxtLm5paC5nb3YvcmVzZWFyY2gvdW1scy9yeG5vcm0iLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyJ9XX0sImNvZGVzIjp7ImRlZiI6W3sibmFtZSI6Ik9uY29sb2dpc3QiLCJpZCI6IjM5NDU5MjAwNCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiY29kZVN5c3RlbSI6eyJuYW1lIjoiU05PTUVELUNUIn19XX0sImNvbnRleHRzIjp7ImRlZiI6W3sibmFtZSI6IlBhdGllbnQifV19LCJzdGF0ZW1lbnRzIjp7ImRlZiI6W3sibmFtZSI6IlBhdGllbnQiLCJjb250ZXh0IjoiUGF0aWVudCIsImV4cHJlc3Npb24iOnsidHlwZSI6IlNpbmdsZXRvbkZyb20iLCJvcGVyYW5kIjp7ImRhdGFUeXBlIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UGF0aWVudCIsInR5cGUiOiJSZXRyaWV2ZSJ9fX0seyJuYW1lIjoiVG9kYXkiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiVG9kYXkifX0seyJuYW1lIjoiU2lnbmluZ1Byb3ZpZGVyUmVmZXJlbmNlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IkNvYWxlc2NlIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJyZWZlcmVuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InBlcmZvcm1lciIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiZGV2aWNlX3JlcXVlc3QiLCJ0eXBlIjoiUGFyYW1ldGVyUmVmIn19fX0seyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IiR0aGlzIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJwZXJmb3JtZXIiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InNlcnZpY2VfcmVxdWVzdCIsInR5cGUiOiJQYXJhbWV0ZXJSZWYifX19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6InJlZmVyZW5jZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoicmVmZXJlbmNlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19fV0sIndoZXJlIjp7InR5cGUiOiJOb3QiLCJvcGVyYW5kIjp7InR5cGUiOiJJc051bGwiLCJvcGVyYW5kIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX19LHsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJyZWZlcmVuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InJlcXVlc3RlciIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoibWVkaWNhdGlvbl9yZXF1ZXN0IiwidHlwZSI6IlBhcmFtZXRlclJlZiJ9fX19XX19LHsibmFtZSI6Ik9yZGVyaW5nUHJvdmlkZXIiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6InByYWN0aXRpb25lciIsImV4cHJlc3Npb24iOnsiZGF0YVR5cGUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1QcmFjdGl0aW9uZXIiLCJ0eXBlIjoiUmV0cmlldmUifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiUHJhY3RpdGlvbmVyLyIsInR5cGUiOiJMaXRlcmFsIn0seyJuYW1lIjoiVG9TdHJpbmciLCJsaWJyYXJ5TmFtZSI6IkZISVJIZWxwZXJzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sicGF0aCI6ImlkIiwic2NvcGUiOiJwcmFjdGl0aW9uZXIiLCJ0eXBlIjoiUHJvcGVydHkifV19XX0seyJuYW1lIjoiU2lnbmluZ1Byb3ZpZGVyUmVmZXJlbmNlIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifV19fX19LHsibmFtZSI6IlF1YWxpZmljYXRpb25zIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IlNpbmdsZXRvbkZyb20iLCJvcGVyYW5kIjp7InR5cGUiOiJUb0xpc3QiLCJvcGVyYW5kIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoiY29kZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJ0eXBlIjoiSW5kZXhlciIsIm9wZXJhbmQiOlt7InBhdGgiOiJjb2RpbmciLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImNvZGUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsidHlwZSI6IkluZGV4ZXIiLCJvcGVyYW5kIjpbeyJwYXRoIjoicXVhbGlmaWNhdGlvbiIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlciIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIiwidmFsdWUiOiIwIiwidHlwZSI6IkxpdGVyYWwifV19fX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLCJ2YWx1ZSI6IjAiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19fX19fSx7Im5hbWUiOiJDcmVkZW50aWFscyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJMaXN0IiwiZWxlbWVudCI6W3sibmFtZSI6IlF1YWxpZmljYXRpb25zIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifV19fSx7Im5hbWUiOiJQcmFjdGl0aW9uZXJSb2xlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IlNpbmdsZXRvbkZyb20iLCJvcGVyYW5kIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJwcm9sZSIsImV4cHJlc3Npb24iOnsiZGF0YVR5cGUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1QcmFjdGl0aW9uZXJSb2xlIiwidHlwZSI6IlJldHJpZXZlIn19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJyZWZlcmVuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InByYWN0aXRpb25lciIsInNjb3BlIjoicHJvbGUiLCJ0eXBlIjoiUHJvcGVydHkifX19LHsibmFtZSI6IlNpZ25pbmdQcm92aWRlclJlZmVyZW5jZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn1dfX19fSx7Im5hbWUiOiJTcGVjaWFsdHkiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoiY29kZXMiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IlRvQ29uY2VwdCIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InR5cGUiOiJJbmRleGVyIiwib3BlcmFuZCI6W3sicGF0aCI6InNwZWNpYWx0eSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiUHJhY3RpdGlvbmVyUm9sZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIiwidmFsdWUiOiIwIiwidHlwZSI6IkxpdGVyYWwifV19LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUNvZGVhYmxlQ29uY2VwdCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfX19LHsibmFtZSI6IlByZWZlcnJlZENvbW11bmljYXRpb24iLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTGlzdCIsImVsZW1lbnQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3lzdGVtIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InR5cGUiOiJTaW5nbGV0b25Gcm9tIiwib3BlcmFuZCI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoidGVsZWNvbSIsImV4cHJlc3Npb24iOnsicGF0aCI6InRlbGVjb20iLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6Ik9yZGVyaW5nUHJvdmlkZXIiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9fX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InJhbmsiLCJzY29wZSI6InRlbGVjb20iLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLCJ2YWx1ZSI6IjEiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19fX19XX19LHsibmFtZSI6Ik9yZ05hbWUiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiIkdGhpcyIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6Im9yZyIsImV4cHJlc3Npb24iOnsiZGF0YVR5cGUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Pcmdhbml6YXRpb24iLCJ0eXBlIjoiUmV0cmlldmUifX1dLCJyZWxhdGlvbnNoaXAiOltdfX1dLCJ3aGVyZSI6eyJ0eXBlIjoiTm90Iiwib3BlcmFuZCI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJwYXRoIjoibmFtZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoibmFtZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fX1dLCJ3aGVyZSI6eyJ0eXBlIjoiTm90Iiwib3BlcmFuZCI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX0sInJldHVybiI6eyJkaXN0aW5jdCI6ZmFsc2UsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19fSx7Im5hbWUiOiJNRCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsidHlwZSI6IlNpbmdsZXRvbkZyb20iLCJvcGVyYW5kIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJpZGVudGlmaWVyIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoiaWRlbnRpZmllciIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlciIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJFcXVhbCIsIm9wZXJhbmQiOlt7Im5hbWUiOiJUb1N0cmluZyIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJwYXRoIjoiY29kZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJ0eXBlIjoiSW5kZXhlciIsIm9wZXJhbmQiOlt7InBhdGgiOiJjb2RpbmciLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InR5cGUiLCJzY29wZSI6ImlkZW50aWZpZXIiLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLCJ2YWx1ZSI6IjAiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19XX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiTUQiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19fX19fSx7Im5hbWUiOiJWYWxpZElQbGVkZ2VDcmVkZW50aWFscyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJxdWFsaWZpY2F0aW9uIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoicXVhbGlmaWNhdGlvbiIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlciIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJBbmQiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IiR0aGlzIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJpZGVudGlmaWVyIiwic2NvcGUiOiJxdWFsaWZpY2F0aW9uIiwidHlwZSI6IlByb3BlcnR5In19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6InN5c3RlbSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoic3lzdGVtIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19fV0sIndoZXJlIjp7InR5cGUiOiJOb3QiLCJvcGVyYW5kIjp7InR5cGUiOiJJc051bGwiLCJvcGVyYW5kIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6Imh0dHA6Ly93d3cubmxtLm5paC5nb3YvcmVzZWFyY2gvdW1scy9yeG5vcm0iLCJ0eXBlIjoiTGl0ZXJhbCJ9XX0seyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IiR0aGlzIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJpZGVudGlmaWVyIiwic2NvcGUiOiJxdWFsaWZpY2F0aW9uIiwidHlwZSI6IlByb3BlcnR5In19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19LCJyZXR1cm4iOnsiZGlzdGluY3QiOmZhbHNlLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fX1dLCJ3aGVyZSI6eyJ0eXBlIjoiTm90Iiwib3BlcmFuZCI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX0sInJldHVybiI6eyJkaXN0aW5jdCI6ZmFsc2UsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19fSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiI2MDY0IiwidHlwZSI6IkxpdGVyYWwifV19XX19fSx7Im5hbWUiOiJUaGlyZFBhcnR5Q3JlZGVudGlhbHMiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InRleHQiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImNvZGUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsidHlwZSI6IkluZGV4ZXIiLCJvcGVyYW5kIjpbeyJuYW1lIjoiVmFsaWRJUGxlZGdlQ3JlZGVudGlhbHMiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIiwidmFsdWUiOiIwIiwidHlwZSI6IkxpdGVyYWwifV19fX19fSx7Im5hbWUiOiJUaGlyZFBhcnR5SXNzdWVyIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJkaXNwbGF5IiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJpc3N1ZXIiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsidHlwZSI6IkluZGV4ZXIiLCJvcGVyYW5kIjpbeyJuYW1lIjoiVmFsaWRJUGxlZGdlQ3JlZGVudGlhbHMiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIiwidmFsdWUiOiIwIiwidHlwZSI6IkxpdGVyYWwifV19fX19fV19fX0=" + } + ] + } \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/IPledge/R4/resources/Questionnaire-R4-IPledge.json b/src/cds-library/CRD-DTR/IPledge/R4/resources/Questionnaire-R4-IPledge.json new file mode 100644 index 00000000..e98d8807 --- /dev/null +++ b/src/cds-library/CRD-DTR/IPledge/R4/resources/Questionnaire-R4-IPledge.json @@ -0,0 +1,723 @@ +{ + "resourceType": "Questionnaire", + "id": "IPledgeRemsPatientEnrollment", + "name": "IPledgeRemsPatientEnrollment", + "title": "IPledge Rems Patient Enrollment", + "status": "draft", + "subjectType": [ + "Patient" + ], + "date": "2020-05-20", + "publisher": "Da Vinci DTR", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/IPledge-prepopulation" + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicPatientInfo-prepopulation" + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicPractitionerInfo-prepopulation" + } + ], + "item": [ + { + "linkId": "1", + "type": "group", + "text": "Determine Patient Category", + "item": [ + { + "linkId": "1.1", + "text": "Before enrolling your patient in the iPLEDGE REMS, you must determine if this is a patient who can become pregnant. In the iPLEDGE REMS, the definition of a patient who can become pregnant is: • A patient who has not had a hysterectomy and/or bilateral oophorectomy • The patient is not post-menopausal • A patient who has not yet started menstruating • A patient who has had a tubal sterilization • A transgender male with viable female reproductive organs", + "type": "display" + }, + { + "linkId": "1.2", + "text": "Determine patient category", + "type": "group", + "item": [ + { + "linkId": "1.2.1", + "text": "Patient who can get pregnant", + "type": "boolean", + "initial": [ + { + "valueBoolean": false + } + ], + "required": true + } + ] + } + ] + }, + { + "linkId": "2", + "type": "group", + "text": "Pregnancy Test Results", + "item": [ + { + "linkId": "2.1", + "text": "Enter in-office test results", + "type": "display" + }, + { + "linkId": "2.2", + "text": "In office pregnancy test result", + "type": "choice", + "required": true, + "answerOption": [ + { + "valueCoding": { + "code": "77386006", + "system": "http://snomed.info/sct", + "display": "In-office pregnancy test is positive" + } + }, + { + "valueCoding": { + "code": "60001007", + "system": "http://snomed.info/sct", + "display": "In-office pregnancy test is negative" + } + } + ] + }, + { + "linkId": "2.3", + "text": "Date of in-office positive or negative pregnancy test (MM/DD/YYYY)", + "type": "date", + "required": true + } + ], + "enableWhen": [ + { + "question": "1.2.1", + "operator": "=", + "answerBoolean": true + } + ] + }, + { + "linkId": "3", + "type": "group", + "text": "Determine Risk Category", + "item": [ + { + "linkId": "3.1", + "text": "You have indicated that this patient is a patient who cannot become pregnant. The questions that follow will assign a risk category for this patient, based on the reproductive potential according to the requirements of the iPLEDGE REMS. All patients who cannot get pregnant are considered patients who can get pregnant unless one or more of the following applies: 1. Patient is cisgender male (born a male, aka cis-male) 2. Patient has had a hysterectomy 3. Patient has had a bilateral oophorectomy 4. Patient is post-menopausal", + "type": "display" + }, + { + "linkId": "3.2", + "text": "Please note that the following conditions DO NOT qualify a patient to be moved from the patient who can become pregnant risk category • Tubal sterilization • Male vasectomy • Abstinence • Patient has not had a first menstrual period (pre-menarche) • Patient is currently in menopause (but not yet post-menopausal)", + "type": "display" + }, + { + "linkId": "3.3", + "text": "Please acknowledge your understanding of the qualification criteria as presented in order to proceed with assigning a risk category for this patient.", + "type": "boolean" + } + ], + "enableWhen": [ + { + "question": "1.2.1", + "operator": "=", + "answerBoolean": false + } + ] + }, + { + "linkId": "4", + "type": "group", + "text": "Confirm Risk Category", + "item": [ + { + "linkId": "4.1", + "text": "Is the patient cisgender male (born a male, aka cis-male)", + "type": "boolean", + "required": true + }, + { + "linkId": "4.2", + "text": "Has the patient had a hysterectomy?", + "type": "boolean", + "required": true + }, + { + "linkId": "4.3", + "text": "Has the patient had a bilateral oophorectomy?", + "type": "boolean", + "required": true + }, + { + "linkId": "4.4", + "text": "For the iPLEDGE REMS, a patient is considered post-menopausal upon cessation of previously occurring menses as a result of ovarian failure with documentation of hormonal deficiency by a certified healthcare provider (i.e., spontaneous menopause). Hormonal deficiency should be properly documented in the case of spontaneous menopause as follows: 1. If age > 54 years and with absence of normal menses: serum FSH (Follicle Stimulating Hormone) level elevated to within the post-menopausal range based on the laboratory reference range where the hormonal assay is performed 2. If age < 54 years and with the absence of normal menses: negative serum or urine -hCG with concurrently elevated serum FSH (Follicle Stimulating Hormone) level in the post-menopausal, depressed estradiol (E2) level in the post-menopausal range, and absent serum progesterone level, based on the laboratory reference ranges where the hormonal assay is performed.", + "type": "display" + }, + { + "linkId": "4.5", + "text": "Using the definition above, is the patient post-menopausal?", + "type": "boolean", + "required": true + } + ], + "enableWhen": [ + { + "question": "1.2.1", + "operator": "=", + "answerBoolean": false + } + ] + }, + { + "linkId": "5", + "type": "group", + "text": "Enter Patient Information", + "item": [ + { + "linkId": "5.1", + "text": "First Name", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".FirstName" + } + } + ] + }, + { + "linkId": "5.2", + "text": "Middle Initial", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".MiddleInitial" + } + } + ] + }, + { + "linkId": "5.3", + "text": "Last Name", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".LastName" + } + } + ] + }, + { + "linkId": "5.4", + "text": "Address Line 1", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".Line" + } + } + ] + }, + { + "linkId": "5.5", + "text": "Address Line 2", + "type": "string", + "required": false + }, + { + "linkId": "5.6", + "text": "City", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".City" + } + } + ] + }, + { + "linkId": "5.7", + "text": "State", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".State" + } + } + ] + }, + { + "linkId": "5.8", + "text": "Zip", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".Zip" + } + } + ] + }, + { + "linkId": "5.9", + "text": "Mobile Phone Number", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".Phone" + } + } + ] + }, + { + "linkId": "5.10", + "text": "E-mail", + "type": "string", + "required": true + }, + { + "linkId": "5.11", + "text": "Date of Birth", + "type": "date", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".DateOfBirth" + } + } + ] + }, + { + "linkId": "5.12", + "text": "Preferred Method of Communication", + "type": "choice", + "required": true, + "answerOption": [ + { + "valueCoding": { + "code": "email", + "system": "http://hl7.org/fhir/contact-point-system", + "display": "Email" + } + }, + { + "valueCoding": { + "code": "sms", + "system": "http://hl7.org/fhir/contact-point-system", + "display": "Text Message" + } + } + ] + } + ] + }, + { + "linkId": "6", + "type": "group", + "text": "Informed Consent (For All Patients)", + "item": [ + { + "linkId": "6.1", + "text": "To be completed by the patient (and parent or guardian if the patient is under age 18) and signed by the doctor. Read each item below and check the box provided if you understand each item and agree to follow your doctor's instructions. A parent or guardian of a patient under age 18 must also read and understand each item before signing the agreement. Do not sign this agreement, and do not take isotretinoin if there is anything that you do not understand about all the information you have received about using isotretinoin.", + "type": "display" + }, + { + "linkId": "6.2", + "text": "1. I understand that isotretinoin is a medicine used in patients 12 years of age and older, who are not pregnant for the treatment of severe nodular acne that cannot be cleared up by any other acne treatments, including antibiotics. In severe nodular acne, many red, swollen, tender lumps form in the skin. If untreated, severe nodular acne can lead to permanent scars.", + "type": "boolean", + "required": true + }, + { + "linkId": "6.3", + "text": "2. My doctor has told me about my choices for treating my acne", + "type": "boolean", + "required": true + }, + { + "linkId": "6.4", + "text": "3. I understand that there are serious side effects that may happen while I am taking isotretinoin. These have been explained to me. These side effects include serious birth defects in babies of pregnant patients. [Note: There is a second informed consent about birth defects (for patients who can get pregnant)].", + "type": "boolean", + "required": true + }, + { + "linkId": "6.5", + "text": "4. I understand that some patients while taking isotretinoin or soon after stopping isotetrinoin, have become depressed or developed other serious mental problems. Symptoms of depression include sad, anxious or empty mood, irritability, acting on dangerous impulses, anger, loss of pleasure or interest in social or sport activities, sleeping too much or too little, changes in weight or appetite, school or work performance going down, or trouble concentrating. Some patients taking isotretinoin have had thoughts about hurting themselves or putting an end to their own lives (suicidal thoughts). Some people tried to end their own lives, and some people have ended their own lives. There were reports that some of these people did not appear depressed. There have been reports of patients on isotretinoin becoming aggressive or violent. Some people have had other signs of depression while taking isotretinoin (see #7).", + "type": "boolean", + "required": true + }, + { + "linkId": "6.6", + "text": "5. Before I start taking isotretinoin, I agree to tell my doctor if I have ever had symptoms of depression (see #7), been psychotic, attempted suicide, had any other mental problems, or take medicine for any of these problems. Being psychotic means having a loss of contact with reality, such as hearing voices or seeing things that are not there.", + "type": "boolean", + "required": true + }, + { + "linkId": "6.7", + "text": "6. Before I start taking isotretinoin, I agree to tell my doctor if, to the best of my knowledge, anyone in my family has ever had symptoms of depression, been psychotic, attempted suicide, or had any other serious mental problems.", + "type": "boolean", + "required": true + }, + { + "linkId": "6.8", + "text": "7. Once I start taking isotretinoin, I agree to stop using isotretinoin and tell my doctor right away if any of the following signs and symptoms of depression or psychosis happen. • Start to feel sad or have crying spells • Lose interest in activities I once enjoyed • Sleep too much or have trouble sleeping • Become more irritable, angry, or aggressive than usual (for example, temper outbursts, thoughts of violence) • Have a change in my appetite or body weight • Have trouble concentrating • Withdraw from my friends or family • Feel like I have no energy • Have feelings of worthlessness or guilt • Start having thoughts about hurting myself or taking my own life (suicidal thoughts) • Start acting on dangerous impulses • Start seeing or hearing things that are not real", + "type": "boolean", + "required": true + }, + { + "linkId": "6.9", + "text": "8. I agree to return to see my doctor every month I take isotretinoin to get a new prescription for isotretinoin, to check my progress, and to check for signs of side effects.", + "type": "boolean", + "required": true + }, + { + "linkId": "6.10", + "text": "9. Isotretinoin wil be prescribed just for me - I will not share isotretinoin with other people because it may cause serious side effects, including birth defects.", + "type": "boolean", + "required": true + }, + { + "linkId": "6.11", + "text": "10. I will not give blood while taking isotretinoin or for 1 moth after I stop taking isotretinoin. I understand that if someone who is pregnant gets my donated blood, their baby may be exposed to isotretinoin and may be born with serious birth defects.", + "type": "boolean", + "required": true + }, + { + "linkId": "6.12", + "text": "11. I have read the iPLEDGE REMS Fact Sheet and other materials my provider provided me containing important safety information about isotretinoin. I understand all the information I received.", + "type": "boolean", + "required": true + }, + { + "linkId": "6.13", + "text": "12. My doctor and I have decided I should take isotretinoin. I understand that I must be qualified in the iPLEDGE REMS to have my prescription filled each month. I understand that I can stop taking isotretinoin at any time. I agree to tell my doctor if I stop taking isotretinoin.", + "type": "boolean", + "required": true + } + ] + }, + { + "linkId": "7", + "type": "group", + "text": "Informed Consent About Birth Defects (For Patients Who Can Get Pregnant)", + "item": [ + { + "linkId": "7.1", + "text": "About Birth Defects (for patients who can get pregnant): To be completed by the patient (and their parent or guardian if the patient is under age 18) and signed by their doctor. Read each item below and check in the box provided to show that you understand each item and agree to follow your doctor's instructions. Do not sign this consent, and do not take isotretinoin if there is anything that you do not understand. A parent or guardian of a minor patient (under 18) must also read and check each item before signing the consent.", + "type": "display" + }, + { + "linkId": "7.2", + "text": "1. I understand that there is a very high chance that my unborn baby could have life-threatening birth defects if I am pregnant or become pregnant while taking isotretinoin. This can happen with any amount and even if take for short periods of time. This is why I must not be pregnant while taking isotretinoin.", + "type": "boolean", + "required": true + }, + { + "linkId": "7.3", + "text": "2. I understand that I must not get pregnant one month before, during the entire time of my treatment, and for one month after the end of my treatment with isotretinoin.", + "type": "boolean", + "required": true + }, + { + "linkId": "7.4", + "text": "3. I understand that I must completely avoid having any sexual contact (penis-vaginal) with a partner who could get me pregnant, or I must use two separate effective forms of birth control (contraception) at the same time. The only exceptions are if I have had any surgery to remove the uterus (a hysterectomy) or both of my ovaries (bilateral oophorectomy), or my doctor has medically confirmed that I am post-menopausal.", + "type": "boolean", + "required": true + }, + { + "linkId": "7.5", + "text": "4. I understand that hormonal birth control products are among the most effective forms of birth control. Combination birth control pills and other hormonal products include skin patches, shots, under-the-skin implants, vaginal rings, and intrauterine devices (IUDs). Any method of birth control can fail. That is why I must use two different birth control forms at the same time, starting one month before, during, and for one month after stopping therapy every time I have sexual contact (penis-vaginal) with a partner who could get me pregnant, even if one of the forms I choose is hormonal birth control.", + "type": "boolean", + "required": true + }, + { + "linkId": "7.6", + "text": "5. I understand that the following are effective forms of birth control:", + "type": "boolean", + "required": true, + "item": [ + { + "linkId": "7.6.1", + "text": "Primary forms: • tying my tubes (tubal sterilization) • male vasectomy • intrauterine device • hormonal (combination birth control pills, skin patches, shots, under-the-skin implants, or vaginal rings)", + "type": "display" + }, + { + "linkId": "7.6.2", + "text": "Secondary forms, barrier: • male latex condom with or without spermicide • diaphragm with spermicide • cervical cap with spermicide", + "type": "display" + }, + { + "linkId": "7.6.3", + "text": "Other: • vaginal sponge (contains spermicide)", + "type": "display" + }, + { + "linkId": "7.6.4", + "text": "A diaphragm and cervical cap must each be used with spermicide, a special cream that kills sperm. I understand that at least one of my two forms of birth control must be a primary method.", + "type": "display" + } + ] + }, + { + "linkId": "7.7", + "text": "6. I will talk to my doctor about any medicines, including herbal products I plan to take during my isotretinoin treatment, because hormonal birth control forms may not work if I am taking certain medicines or herbal products.", + "type": "boolean", + "required": true + }, + { + "linkId": "7.8", + "text": "7. I may receive a free birth control counseling session from a doctor or other family planning expert. My isotretinoin doctor can give me an iPLEDGE REMS Contraception Counseling Guide for this free consultation.", + "type": "boolean", + "required": true + }, + { + "linkId": "7.9", + "text": "8. I must begin using the birth control forms I have chosen as described above at least one month before I start taking isotretinoin.", + "type": "boolean", + "required": true + }, + { + "linkId": "7.10", + "text": "9. I cannot get my first prescription for isotretinoin unless my doctor has told me that I have two negative pregnancy test results. The first pregnancy test should be done when my doctor decides to prescribe isotretinoin. The second pregnancy test must be done in a lab during the first 5 days of my menstrual period right before starting isotretinoin therapy treatment, or as instructed by my doctor. I will then have one pregnancy test; in a lab: • every month during treatment • at the end of treatment • and 1 month after stopping treatment. I must not start taking isotretinoin until I am sure that I am not pregnant, have negative results from two pregnancy tests, and the second test has been done in a lab.", + "type": "boolean", + "required": true + }, + { + "linkId": "7.11", + "text": "10. I have read and understand the materials my doctor has provided to me, including the iPLEDGE REMS Guide for Patients who Can Get Pregnant and iPLEDGE REMS Fact Sheet. I have received information on emergency birth control.", + "type": "boolean", + "required": true + }, + { + "linkId": "7.12", + "text": "11. I must stop taking isotretinoin right away and call my doctor if I get pregnant, miss my expected menstrual period, stop using birth control, or have sexual contact (penis-vaginal) with a partner who could get me pregnant, without using my two birth control forms at any time.", + "type": "boolean", + "required": true + }, + { + "linkId": "7.13", + "text": "12. My doctor provided me with information about the purpose and importance of providing information to the iPLEDGE REMS should I become pregnant while taking isotretinoin or within one month of the last dose. I understand that if I become pregnant, information about my pregnancy, my health, and my baby's health may be shared with the makers of isotretinoin, authorized parties who maintain the iPLEDGE REMS for the makers of isotretinoin, and government health regulatory authorities.", + "type": "boolean", + "required": true + }, + { + "linkId": "7.14", + "text": "13. I understand that being qualified to receive isotretinoin in the iPLEDGE REMS means that I: • have had two negative urine or blood pregnancy tests before receiving the first isotretinoin prescription. The second test must be done in a lab. I must have a negative result from a urine or blood pregnancy test done in a lab repeated each month before I receive another isotretinoin prescription • have chosen and agreed to use two forms of effective birth control at the same time. At least one method must be a primary method of birth control unless I have chosen never to have sexual contact (penis-vaginal) with a partner who could get me pregnant (abstinence), or I have undergone a hysterectomy or bilateral oophorectomy, or I have been medically confirmed to be post-menopausal. I must use two forms of birth control for at least one month before I start isotretinoin therapy. I must receive counseling, repeated on a monthly basis, about birth control and behaviors associated with an increased risk of pregnancy • have signed an Informed Consent For Patients Who Can Get Pregnant (for patients who can get pregnant) that contains warnings about the chance of possible birth defects if I am pregnant or becoming pregnant and my unborn baby is exposed to isotretinoin • have been informed of and understand the purpose and importance of providing information to the iPLEDGE REMS should I become pregnant while taking isotretinoin or within 1 month of the last dose • have interacted with the iPLEDGE REMS before starting isotretinoin and on a monthly basis to answer questions on the program requirements and to enter my two chosen forms of birth control", + "type": "boolean", + "required": true + }, + { + "linkId": "7.15", + "text": "14. My doctor has answered all my questions about isotretinoin, and I understand that it is my responsibility not to get pregnant one month before, during isotretinoin treatment, or for one month after I stop taking isotretinoin.", + "type": "boolean", + "required": true + } + + ], + "enableWhen": [ + { + "question": "1.2.1", + "operator": "=", + "answerBoolean": true + } + ] + }, + { + "linkId": "8", + "type": "group", + "text": "Patient Attestation", + "item": [ + { + "linkId": "8.1", + "text": "Patient Attestation", + "type": "choice", + "required": true, + "answerOption": [ + { + "valueString": "Patient Attestation" + }, + { + "valueString": "Parent or Guardian Attestation" + } + ] + }, + { + "linkId": "8.2", + "text": "I now allow my doctor to begin my treatment with isotretinoin.", + "type": "display" + }, + { + "linkId": "8.3", + "text": "Patient Initials", + "type": "string", + "required": true + }, + { + "linkId": "8.4", + "text": "Patient Name", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".FullName" + } + } + ] + }, + { + "linkId": "8.5", + "text": "Patient Signature", + "type": "string", + "required": true + }, + { + "linkId": "8.6", + "text": "I authorize the above signature to be the legally binding equivalent of my handwritten signature.", + "type": "display" + } + ] + }, + { + "linkId": "9", + "type": "group", + "text": "Patient Counseling", + "item": [ + { + "linkId": "9.1", + "text": "I have counseled this patient on the following: • Requirement to use 2 effective forms of birth control together correctly all the time • Drug should not be shared with anyone, even any drug remaining after treatment • Blood should not be donated while taking isotretinoin • Patient REMS requirements", + "type": "boolean", + "required": true, + "enableWhen": [ + { + "question": "1.2.1", + "operator": "=", + "answerBoolean": true + } + ] + }, + { + "linkId": "9.2", + "text": "I have counseled this patient on the following: • Drug should not be shared with anyone, even any drug remaining after treatment • Blood should not be donated while taking isotretinoin • Patient REMS requirements", + "type": "boolean", + "required": true, + "enableWhen": [ + { + "question": "1.2.1", + "operator": "=", + "answerBoolean": false + } + ] + }, + { + "linkId": "9.3", + "text": "I have prescribed (maximum) 30-day supply of isotretinoin", + "type": "boolean", + "required": true, + "enableWhen": [ + { + "question": "1.2.1", + "operator": "=", + "answerBoolean": false + } + ] + }, + { + "linkId": "9.4", + "text": "In my opinion, this patient understands and is capable of complying with the requirements of the iPLEDGE REMS", + "type": "boolean", + "required": true + }, + { + "linkId": "9.5", + "text": "I have: • fully explained to the patient, the nature and purpose of isotretinoin treatment, including its benefits and risks to patients who can get pregnant • provided the patient with the appropriate educational materials, such as the iPLEDGE REMS Fact Sheet and asked the patient if there are any questions regarding treatment with isotretinoin • answered those questions to the best of my ability", + "type": "display", + "enableWhen": [ + { + "question": "1.2.1", + "operator": "=", + "answerBoolean": true + } + ] + }, + { + "linkId": "9.6", + "text": "I have: • fully explained to the patient, the nature and purpose of isotretinoin treatment, including its benefits and risks • provided the patient with the appropriate educational materials, such as the iPLEDGE REMS Fact Sheet and asked the patient if there are any questions regarding treatment with isotretinoin • answered those questions to the best of my ability", + "type": "display", + "enableWhen": [ + { + "question": "1.2.1", + "operator": "=", + "answerBoolean": false + } + ] + }, + { + "linkId": "9.7", + "text": "Doctor Name", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".FullName" + } + } + ] + }, + { + "linkId": "9.8", + "text": "Doctor Signature", + "type": "string", + "required": true + }, + { + "linkId": "9.9", + "text": "I authorize the above signature to be the legally binding equivalent to my handwritten signature.", + "type": "display" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/IPledge/R4/resources/Questionnaire-R4-PrescriberEnrollment-IPledge.json b/src/cds-library/CRD-DTR/IPledge/R4/resources/Questionnaire-R4-PrescriberEnrollment-IPledge.json new file mode 100644 index 00000000..1ef581e3 --- /dev/null +++ b/src/cds-library/CRD-DTR/IPledge/R4/resources/Questionnaire-R4-PrescriberEnrollment-IPledge.json @@ -0,0 +1,421 @@ +{ + "resourceType": "Questionnaire", + "id": "IPledgeRemsPrescriberEnrollmentForm", + "name": "IPledgeRemsPrescriberEnrollmentForm", + "title": "IPledge Rems Prescriber Enrollment Form", + "status": "draft", + "subjectType": [ + "Practitioner" + ], + "date": "2022-05-28", + "publisher": "FDA-REMS", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/IPledgePrescriberEnrollment-prepopulation" + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicPractitionerInfo-prepopulation" + } + ], + "item": [ + { + "linkId": "1", + "type": "group", + "text": "Prescriber Information", + "item": [ + { + "linkId": "1.1", + "text": "Attention: This enrollment page is for licensed prescribers only. If you are a patient, you must be enrolled in iPLEDGE REMS by your prescriber. The iPLEDGE REMS will require prescribers to provide a National Provider Identifier (NPI). If your NPI is not on file with the iPLEDGE REMS, you will be prompted to enter your NPI upon first log-in to the iPLEDGE REMS. Failure to supply this identifier may result in your patients' prescriptions not being authorized for dispensing.", + "type": "display" + }, + { + "linkId": "1.2", + "text": "NPI Number", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".NPI" + } + } + ] + }, + { + "linkId": "1.3", + "text": "First Name", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".FirstName" + } + } + ] + }, + { + "linkId": "1.4", + "text": "MI", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".MiddleInitial" + } + } + ] + }, + { + "linkId": "1.5", + "text": "Last Name", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".LastName" + } + } + ] + }, + { + "linkId": "1.6", + "text": "Suffix", + "type": "open-choice", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"IPledgePrescriberEnrollmentPrepopulation\".Credentials" + } + } + ], + "answerOption": [ + { + "valueCoding": { + "code": "MD", + "system": "http://terminology.hl7.org/CodeSystem/v2-0360|2.7", + "display": "MD" + } + }, + { + "valueCoding": { + "code": "DO", + "system": "http://terminology.hl7.org/CodeSystem/v2-0360|2.7", + "display": "DO" + } + }, + { + "valueCoding": { + "code": "NP", + "system": "http://terminology.hl7.org/CodeSystem/v2-0360|2.7", + "display": "NP" + } + }, + { + "valueCoding": { + "code": "PA", + "system": "http://terminology.hl7.org/CodeSystem/v2-0360|2.7", + "display": "PA" + } + }, + { + "valueCoding": { + "code": "Other", + "display": "Other" + } + } + ] + }, + { + "linkId": "1.7", + "text": "Specialty", + "type": "open-choice", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"IPledgePrescriberEnrollmentPrepopulation\".Specialty" + } + } + ] + }, + { + "linkId": "1.8", + "text": "Practice Name", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"IPledgePrescriberEnrollmentPrepopulation\".OrgName" + } + } + ] + }, + { + "linkId": "1.9", + "text": "Address Line 1", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Line" + } + } + ] + }, + { + "linkId": "1.10", + "text": "Address Line 2", + "type": "string", + "required": false + }, + { + "linkId": "1.11", + "text": "City", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".City" + } + } + ] + }, + { + "linkId": "1.12", + "text": "State", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".State" + } + } + ] + }, + { + "linkId": "1.13", + "text": "Zip", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Zip" + } + } + ] + }, + { + "linkId": "1.14", + "text": "Phone Number", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Phone" + } + } + ] + }, + { + "linkId": "1.15", + "text": "Ext", + "type": "string", + "required": false + }, + { + "linkId": "1.16", + "text": "Fax Number", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Fax" + } + } + ] + }, + { + "linkId": "1.17", + "text": "Email", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Email" + } + } + ] + }, + { + "linkId": "1.18", + "text": "Preferred Method of Communication", + "type": "choice", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"IPledgePrescriberEnrollmentPrepopulation\".PreferredCommunication" + } + } + ], + "answerOption": [ + { + "valueCoding": { + "code": "email", + "system": "http://hl7.org/fhir/contact-point-system", + "display": "Email" + } + }, + { + "valueCoding": { + "code": "phone", + "system": "http://hl7.org/fhir/contact-point-system", + "display": "Phone" + } + } + ] + } + ] + }, + { + "linkId": "2", + "type": "group", + "text": "Prescriber Certification (if applicable)", + "item": [ + { + "linkId": "2.1", + "text": "Prescriber Certification Type", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"IPledgePrescriberEnrollmentPrepopulation\".ThirdPartyCredentials" + } + } + ] + }, + { + "linkId": "2.2", + "text": "Prescriber Certification Issuer", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"IPledgePrescriberEnrollmentPrepopulation\".ThirdPartyIssuer" + } + } + ] + } + ] + }, + { + "linkId": "3", + "type": "group", + "text": "Prescriber Attestation", + "item": [ + { + "linkId": "3.1", + "text": "Prescribers can only activate their enrollment by affirming that they meet requirements and will comply with all iPLEDGE REMS requirements by attesting to the following points:", + "type": "display" + }, + { + "linkId": "3.2", + "text": "I know the risk and severity of fetal injury/birth defects from isotretinoin.", + "type": "display" + }, + { + "linkId": "3.3", + "text": "I know the risk factors for unplanned pregnancy and the effective measures for avoidance of unplanned pregnancy.", + "type": "display" + }, + { + "linkId": "3.4", + "text": "I have the expertise to provide the patient with detailed pregnancy prevention counseling, or I will refer the patient to an expert for such counseling, reimbursed by the manufacturer.", + "type": "display" + }, + { + "linkId": "3.5", + "text": "I will comply with the iPLEDGE REMS requirements described in the booklet, iPLEDGE REMS Prescriber Guide.", + "type": "display" + }, + { + "linkId": "3.6", + "text": "Before beginning treatment of patients who can become pregnant with isotretinoin, and on a monthly basis, the patient will be counseled to avoid pregnancy by using two forms of contraception simultaneously and continuously for at least one month prior to initiation of isotretinoin treatment, during isotretinoin treatment and for one month after discontinuing isotretinoin treatment, unless the patient commits to continuous abstinence, not having any sexual contact with a partner that could result in pregnancy.", + "type": "display" + }, + { + "linkId": "3.7", + "text": "I will not prescribe isotretinoin to any patient who can become pregnant until verifying the patient has a negative screening pregnancy test and monthly CLIA-certified (Clinical Laboratory Improvement Amendment) pregnancy tests. Patients should have a pregnancy test at the completion of the entire course of isotretinoin and another pregnancy test one month later.", + "type": "display" + }, + { + "linkId": "3.8", + "text": "I will report any pregnancy case that I become aware of while the patient who can become pregnant is on isotretinoin or one month after the last dose to the pregnancy registry.", + "type": "display" + }, + { + "linkId": "3.9", + "type": "choice", + "answerOption": [ + { + "valueString": "I attest to the statements above" + }, + { + "valueString": "I do not attest to the statements above" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/IPledge/TopicMetadata.json b/src/cds-library/CRD-DTR/IPledge/TopicMetadata.json new file mode 100644 index 00000000..a6d33c1f --- /dev/null +++ b/src/cds-library/CRD-DTR/IPledge/TopicMetadata.json @@ -0,0 +1,17 @@ +{ + "topic": "IPledge", + "payers": [ + "cms" + ], + "mappings": [ + { + "codeSystem": "rxnorm", + "codes":[ + "6064" + ] + } + ], + "fhirVersions": [ + "R4" + ] +} diff --git a/src/cds-library/CRD-DTR/Shared/R4/files/BasicClinicalInfoPrepopulation-0.1.0.cql b/src/cds-library/CRD-DTR/Shared/R4/files/BasicClinicalInfoPrepopulation-0.1.0.cql new file mode 100644 index 00000000..e56f617b --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/files/BasicClinicalInfoPrepopulation-0.1.0.cql @@ -0,0 +1,156 @@ +library BasicClinicalInfoPrepopulation version '0.1.0' +using FHIR version '4.0.0' +include FHIRHelpers version '4.0.0' called FHIRHelpers + +codesystem "HL7-V2-0136": 'http://terminology.hl7.org/CodeSystem/v2-0136' + +code "Yes": 'Y' from "HL7-V2-0136" display 'Yes' +code "No": 'N' from "HL7-V2-0136" display 'No' + +parameter device_request DeviceRequest +parameter service_request ServiceRequest +parameter medication_request MedicationRequest + +context Patient + +define "Today": Today() + +define "OrderingProviderReference": Coalesce(device_request.performer.reference.value, service_request.performer.reference.value, medication_request.performer.reference.value) +define "OrderingProvider": singleton from ( + [Practitioner] practitioner + where ('Practitioner/' + practitioner.id) = "OrderingProviderReference") + +define "RequestEncounterReference": Coalesce(device_request.encounter.reference.value, service_request.encounter.reference.value, medication_request.encounter.reference.value) +define "RequestEncounter": + [Encounter] E + where 'Encounter/'+ E.id = "RequestEncounterReference" + +define "RequestEncounterDate": + if exists("RequestEncounter") then "RequestEncounter".period.start.value + else null + +define "RequestEncounterParticipants": "RequestEncounter".participant +define "RequestEncounterFirstParticipantReference": + if exists("RequestEncounterParticipants") + then "RequestEncounterParticipants"[0].individual.reference.value + else null + +define "IsEncounterProviderSameAsOrderingProvider": "OrderingProviderReference" = "RequestEncounterFirstParticipantReference" + +define "OrderingProviderName": singleton from ( + ("OrderingProvider".name name where name.use.value = 'official') + union + "OrderingProvider".name) + +// Get Practitioner's Name elements +define "OrderingProviderLastName": "OrderingProviderName".family.value +define "OrderingProviderMiddleInitial": GetMiddleInitials("OrderingProviderName") +define "OrderingProviderFirstName": "OrderingProviderName".given[0].value +define "OrderingProviderFullName": + "OrderingProviderFirstName" + ' ' + "OrderingProviderMiddleInitial" + ' ' + "OrderingProviderLastName" + +// Get Practitioner's NPI +define "OrderingProviderNPI": (singleton from ( + "OrderingProvider".identifier identifier + where identifier.system.value = 'http://hl7.org/fhir/sid/us-npi')).value.value + +// Encounter provider's information +define "EncounterProviderLastName": + if "IsEncounterProviderSameAsOrderingProvider" then "OrderingProviderLastName" + else null + +define "EncounterProviderMiddleInitial": + if "IsEncounterProviderSameAsOrderingProvider" then "OrderingProviderMiddleInitial" + else null + +define "EncounterProviderFirstName": + if "IsEncounterProviderSameAsOrderingProvider" then "OrderingProviderFirstName" + else null + +define "EncounterProviderFullName": + if "IsEncounterProviderSameAsOrderingProvider" then "OrderingProviderFullName" + else null + +define "EncounterProviderNPI": + if "IsEncounterProviderSameAsOrderingProvider" then "OrderingProviderNPI" + else null + +define function GetMiddleInitials(name FHIR.HumanName): + Substring(Combine((name.given given return Substring(given.value,0,1)),', '),3) + + +/* This is a work around to prepopulate with Yes answer for Yes/No question. + The blocking issue is that when LHC form control merge Questionnaire (the compiled static form) + and QuestionnaireResponse (the CQL expression results) to create a form representation, + the initial value in Questionnaire are ingored. + So we cannot use Questionnaire initial to setup the default value. +*/ +define AnswerYes: "Yes" +define AnswerNo: "No" + +define Allergies: + CodesFromAllergies(ConfirmedAllergies([AllergyIntolerance])) + +define function CodesFromAllergies(AllergyList List): + distinct(flatten( + AllergyList C + let AllergyCodings: + (C.code.coding) CODING where CODING.system.value in { + 'http://www.nlm.nih.gov/research/umls/rxnorm' + } + return FHIRHelpers.ToCode(CODING) + return AllergyCodings + )) + +define function ConfirmedAllergies(AllergyList List): + AllergyList C where C.verificationStatus.coding.code = 'confirmed' + +define "AllDiagnoses": ActiveConfirmedDiagnoses([Condition]) + +define function ActiveConfirmedDiagnoses(CondList List): + distinct( + flatten( + CondList C + let DiagnosesCodings: + (C.code.coding) CODING where CODING.system.value in { + 'http://hl7.org/fhir/sid/icd-10', + 'http://hl7.org/fhir/sid/icd-10-cm', + 'http://snomed.info/sct' + } + return FHIRHelpers.ToCode(CODING) + where C.verificationStatus.coding.code = 'confirmed' + and C.clinicalStatus.coding.code in {'active', 'relapse'} + and exists(DiagnosesCodings) + return DiagnosesCodings + ) + ) +define "AllProcedures": ProcedureCoding([Procedure]) +define function ProcedureCoding(ProcedureList List): + distinct( + flatten( + ProcedureList P + let ProcedureCodings: + (P.code.coding) CODING + return FHIRHelpers.ToCode(CODING) + return ProcedureCodings + ) + ) + + define "True": true + + define "MedicationTupleList": GetMedicationsTupleList([MedicationStatement]) + define function GetMedicationsTupleList(MedStatementList List): + distinct( + flatten( + MedStatementList MedStatement + let MedicationList: + (MedStatement.medication.coding) CODING + return Tuple { + RxNorm: FHIRHelpers.ToCode(CODING).display + '-' + FHIRHelpers.ToCode(CODING).code , + Description: FHIRHelpers.ToCode(CODING).display + } + return MedicationList + ) + ) + + diff --git a/src/cds-library/CRD-DTR/Shared/R4/files/BasicPatientInfoPrepopulation-0.2.0.cql b/src/cds-library/CRD-DTR/Shared/R4/files/BasicPatientInfoPrepopulation-0.2.0.cql new file mode 100644 index 00000000..64f91c3e --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/files/BasicPatientInfoPrepopulation-0.2.0.cql @@ -0,0 +1,47 @@ +library BasicPatientInfoPrepopulation version '0.2.0' +using FHIR version '4.0.0' +include FHIRHelpers version '4.0.0' called FHIRHelpers + +parameter device_request DeviceRequest +parameter service_request ServiceRequest +parameter medication_request MedicationRequest + +context Patient + +define function GetMiddleInitials(name FHIR.HumanName): + Substring(Combine((name.given given return Substring(given.value,0,1)),', '),3) + +define Today: Today() + +// Grab patient FHIR HumanName +define Name: singleton from (Patient.name name where name.use.value = 'official') + +// Extract useful name elements +define LastName: "Name".family.value +define MiddleInitial: GetMiddleInitials("Name") +define FirstName: "Name".given[0].value + +define FullName: + Coalesce("FirstName" + ' ' + "MiddleInitial" + ' ' + "LastName", "FirstName" + ' ' + "LastName") + +define Gender: Patient.gender.value +define DateOfBirth: Patient.birthDate.value + +define "RequestCoverage": Coalesce(device_request.insurance, service_request.insurance, medication_request.insurance) + +define CoverageResource: singleton from ( + [Coverage] coverage + // pull coverage resource id from the device request insurance extension + where ('Coverage/' + coverage.id) = RequestCoverage[0].reference.value) + +define MedicareId: "CoverageResource".subscriberId.value + +// Get Patient home address +define HomeAddress: singleton from (Patient.address address where address.use.value = 'home') +define Line: HomeAddress.line[0].value +define City: HomeAddress.city.value +define State: HomeAddress.state.value +define Zip: HomeAddress.postalCode.value + +define Telecom: Coalesce( Patient.telecom telecom where telecom.system.value = 'phone' ) +define Phone: Telecom.value.value diff --git a/src/cds-library/CRD-DTR/Shared/R4/files/BasicPractitionerInfoPrepopulation-0.1.0.cql b/src/cds-library/CRD-DTR/Shared/R4/files/BasicPractitionerInfoPrepopulation-0.1.0.cql new file mode 100644 index 00000000..0bff2c34 --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/files/BasicPractitionerInfoPrepopulation-0.1.0.cql @@ -0,0 +1,57 @@ +library BasicPractitionerInfoPrepopulation version '0.1.0' +using FHIR version '4.0.0' +include FHIRHelpers version '4.0.0' called FHIRHelpers + +parameter device_request DeviceRequest +parameter service_request ServiceRequest +parameter medication_request MedicationRequest + +context Patient + +define function GetMiddleInitials(name FHIR.HumanName): + Substring(Combine((name.given given return Substring(given.value,0,1)),', '),3) + +define Today: Today() + +define "SigningProviderReference": Coalesce(device_request.performer.reference.value, service_request.performer.reference.value, medication_request.requester.reference.value) +// Get Practitioner +define OrderingProvider: singleton from ( + [Practitioner] practitioner + where ('Practitioner/' + practitioner.id) = SigningProviderReference) + +// Get Practitioner's Name +define Name: singleton from ( + ("OrderingProvider".name name where name.use.value = 'official') + union + "OrderingProvider".name) + +// Get Practitioner's Name elements +define LastName: "Name".family.value +define MiddleInitial: GetMiddleInitials("Name") +define FirstName: "Name".given[0].value +define FullName: + Coalesce("FirstName" + ' ' + "MiddleInitial" + ' ' + "LastName", "FirstName" + ' ' + "LastName") + +// Get Practitioner's NPI +define NPI: (singleton from ( + "OrderingProvider".identifier identifier + where identifier.system.value = 'http://hl7.org/fhir/sid/us-npi')).value.value + +define Address: singleton from ( + ("OrderingProvider".address address where address.use.value = 'postal' or address.use.value = 'work') + union + "OrderingProvider".address) + +define Line: "Address".line.value +define City: "Address".city.value +define State: "Address".state.value +define Zip: "Address".postalCode.value + +define Phone: (singleton from ( + "OrderingProvider".telecom telecom where telecom.system.value = 'phone')).value.value + +define Email: (singleton from ( + "OrderingProvider".telecom telecom where telecom.system.value = 'email')).value.value + +define Fax: (singleton from ( + "OrderingProvider".telecom telecom where telecom.system.value = 'fax')).value.value \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/files/CDS_Connect_Commons_for_FHIRv400-1.0.2.cql b/src/cds-library/CRD-DTR/Shared/R4/files/CDS_Connect_Commons_for_FHIRv400-1.0.2.cql new file mode 100644 index 00000000..8b176ad4 --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/files/CDS_Connect_Commons_for_FHIRv400-1.0.2.cql @@ -0,0 +1,584 @@ +// CDS Connect Commons for FHIRv400 +// Change log: +// - 1.0.1 +// - Fix logic for ActiveOrRecurring to use equivalence matching (instead of "in" +// which uses equality matching) +// - Add back ...ByConcept functions for backwards compatibility w/ libraries that +// might expect them +// - Consider effectiveInstant in ObservationLookBack +// - 1.0.2 +// - Add functions for the Immunization resource +// - Add functions for the Device resource +library CDS_Connect_Commons_for_FHIRv400 version '1.0.2' + +using FHIR version '4.0.0' + +// Include the FHIRHelpers library for simplifying interacton w/ the FHIR data model +include FHIRHelpers version '4.0.0' called FHIRHelpers + +codesystem "AIVERSTATUS": 'http://terminology.hl7.org/CodeSystem/allergyintolerance-verification' +codesystem "AICLINSTATUS": 'http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical' +codesystem "CONDVERSTATUS": 'http://terminology.hl7.org/CodeSystem/condition-ver-status' +codesystem "CONDCLINSTATUS": 'http://terminology.hl7.org/CodeSystem/condition-clinical' +code "AllergyIntolerance Confirmed code": 'confirmed' from "AIVERSTATUS" display 'Confirmed' +code "AllergyIntolerance Active code": 'active' from "AICLINSTATUS" display 'Active' +code "Condition Confirmed code": 'confirmed' from "CONDVERSTATUS" display 'Confirmed' +code "Condition Active code": 'active' from "CONDCLINSTATUS" display 'Active' +code "Condition Recurrence code": 'recurrence' from "CONDCLINSTATUS" display 'Recurrence' +code "Condition Relapse code": 'relapse' from "CONDCLINSTATUS" display 'Relapse' +concept "AllergyIntolerance Confirmed": { "AllergyIntolerance Confirmed code" } display 'Confirmed' +concept "AllergyIntolerance Active": { "AllergyIntolerance Active code" } display 'Active' +concept "Condition Confirmed": { "Condition Confirmed code" } display 'Confirmed' +concept "Condition Active": { "Condition Active code" } display 'Active' +concept "Condition Recurrence": { "Condition Recurrence code" } display 'Recurrence' +concept "Condition Relapse": { "Condition Relapse code" } display 'Relapse' + +// -------------------------------------------------- GENERAL --------------------------------------------------------- + +/** + * Converts a FHIR Period to a CQL Interval. FHIRHelpers provides a function for this, but + * FHIRHelpers provides several overloads of the ToInterval function, and the JavaScript CQL + * Execution Framework apparently does not handle this correctly. Creating uniquely named + * functions here ensures safe execution. + * @param period - a FHIR Period + * @returns {System.Interval} a CQL Interval or null if null was passed in + */ +define function PeriodToInterval(period FHIR.Period): + if period is null then + null + else + Interval[period."start".value, period."end".value] + +/** + * Converts a FHIR Range to a CQL Interval. FHIRHelpers provides a function for this, but + * FHIRHelpers provides several overloads of the ToInterval function, and the JavaScript CQL + * Execution Framework apparently does not handle this correctly. Creating uniquely named + * functions here ensures safe execution. + * @param range - a FHIR Range + * @returns {System.Interval} a CQL Interval or null if null was passed in + */ +define function RangeToInterval(range FHIR.Range): + if range is null then + null + else + Interval[FHIRHelpers.ToQuantity(range.low), FHIRHelpers.ToQuantity(range.high)] + +// -------------------------------------------------- OBSERVATIONS ----------------------------------------------------- + +/** + * Filters Observations by a concept rather than by a ValueSet. In CQL 1.3, this is built into the retrieve, + * but for backwards compatibility, we keep this query where clause as an option. + * @param Koncept - the concept to filter on (intentionally mispelled to avoid naming clashes) + * @returns {List} a list of Observations matching the concept, or null if null was passed in + */ +define function ObservationsByConcept(Koncept System.Concept): + [Observation] O where FHIRHelpers.ToConcept(O.code) ~ Koncept + +/** + * Observations that are complete and verified. In FHIR R4, there are three statuses that indicate this state: 'final', + * 'corrected', and 'amended'. + * @see http://hl7.org/fhir/R4/valueset-observation-status.html + * @param ObsList - a list of Observations + * @returns {List} a list of verified Observations, or null if null was passed in + */ +define function Verified(ObsList List): + ObsList O where O.status.value in {'final', 'corrected', 'amended'} + +/** + * Observations that have quantity values recorded in the requested unit. + * @param ObsList - a list of Observations + * @param Unit - the unit to require in the Observations quantity value + * @returns {List} a list of Observations with the required unit, or null if null was passed in + */ +define function WithUnit(ObsList List, Unit String): + ObsList O + where (O.value as FHIR.Quantity).unit.value = Unit or (O.value as FHIR.Quantity).code.value = Unit + +/** + * Observations with an effective or issued date in the specified "look back" period. For example, LDL-C Tests in the + * last 6 years. + * TODO: Rename to LookBack once the execution engine supports overloaded functions. + * @param ObsList - a list of Observations + * @returns {List} a list of Observations with effective or issued date specified lookback period, or null + * if null was passed in + */ +define function ObservationLookBack(ObsList List, LookBack System.Quantity): + ObsList O + let LookBackInterval: Interval[Now() - LookBack, Now()] + where (O.effective as FHIR.dateTime).value in LookBackInterval + or (O.effective as FHIR.instant).value in LookBackInterval + or PeriodToInterval(O.effective as FHIR.Period) overlaps LookBackInterval + or O.issued.value in LookBackInterval + +/** + * The most recent observation. For each Observation, this algorithm will use the Coalesce function, which uses the + * first non-null date value from these fields: effectiveDateTime, effectiveInstant, effectivePeriod.end, + * effectivePeriod.start, issued. The found date will be used to compare Observations and determine the most recent + * one. NOTE: We can't use FindDate because it appears that the execution engine may have problems sorting by the + * result of a function. + * @param ObsList - a list of Observations + * @returns {Observation} the most recent Observation from the list, or null if null was passed in + */ +define function MostRecent(ObsList List): + Last(ObsList O sort by Coalesce( + (effective as FHIR.dateTime).value, + (effective as FHIR.instant).value, + (effective as FHIR.Period)."end".value, + (effective as FHIR.Period)."start".value, + issued.value) + ) + +/** + * Extracts the quantity value from an Observation, returning it as a CQL Quantity + * @param Obs - an observation + * @returns {System.Quantity} the Observation's value as a quantity, or null if there is no quantity value + */ +define function QuantityValue(Obs Observation): + FHIRHelpers.ToQuantity(Obs.value as FHIR.Quantity) + +/** + * Extracts the CodeableConcept value from an Observation, returning it as a CQL Concept + * @param Obs - an observation + * @returns {System.Concept} the Observation's value as a concept, or null if there is no CodeabeConcept value + */ +define function ConceptValue(Obs Observation): + FHIRHelpers.ToConcept(Obs.value as FHIR.CodeableConcept) + +/** + * Finds the first non-null meaningful date that can be associated with this Observation. This will look through the + * following fields in the following order: effectiveDateTime, effectiveInstant, effectivePeriod.end, + * effectivePeriod.start, issued. + * @param Obs - an Observation + * @returns {System.DateTime} the first non-null meaningful date, or null if non is found + */ +define function FindDate(Obs Observation): + Coalesce( + (Obs.effective as FHIR.dateTime).value, + (Obs.effective as FHIR.instant).value, + (Obs.effective as FHIR.Period)."end".value, + (Obs.effective as FHIR.Period)."start".value, + Obs.issued.value + ) + +/** + * The highest observation. + * The value will be used to compare Observations and determine the highest one. + * @param ObsList - a list of Observations + * @returns {System.Quantity} the quantity with the highest value from the list, or null if null was passed in + */ +define function HighestObservation(ObsList List): + Max(ObsList O return FHIRHelpers.ToQuantity(O.value as FHIR.Quantity)) + + +// -------------------------------------------------- CONDITIONS ------------------------------------------------------- + +/** + * Filters Conditions by a concept rather than by a ValueSet. In CQL 1.3, this is built into the retrieve, + * but for backwards compatibility, we keep this query where clause as an option. + * @param Koncept - the concept to filter on (intentionally mispelled to avoid naming clashes) + * @returns {List} a list of Conditions matching the concept, or null if null was passed in + */ +define function ConditionsByConcept(Koncept System.Concept): + [Condition] C where FHIRHelpers.ToConcept(C.code) ~ Koncept + +/** + * Conditions that are confirmed. In FHIR R4, this is reflected by verificationStatus: 'confirmed'. + * @see http://hl7.org/fhir/R4/valueset-condition-ver-status.html + * @param CondList - a list of Conditions + * @returns {List} a list of confirmed Conditions, or null if null was passed in + */ +define function Confirmed(CondList List): + CondList C where C.verificationStatus ~ "Condition Confirmed" + +/** + * Conditions that are active. In FHIR R4, this is reflected by clinicalStatus: 'active' and the absence of any + * abatement information (i.e., if it abated, it is no longer active). + * TODO: Rename to Active once the execution engine supports overloaded functions. + * @see http://hl7.org/fhir/R4/valueset-condition-clinical.html + * @param CondList - a list of Conditions + * @returns {List} a list of active Conditions, or null if null was passed in + */ +define function ActiveCondition(CondList List): + CondList C + where C.clinicalStatus ~ "Condition Active" + and C.abatement is null + +/** + * Conditions that are active or recurring. In FHIR R4, this is reflected by clinicalStatus: 'active', 'recurrence', or + * 'relapse'. We do not check for null abatement information because it may have dates from when the now recurring + * condition initially went into remission. + * @see http://hl7.org/fhir/R4/valueset-condition-clinical.html + * @param CondList - a list of Conditions + * @returns {List} a list of active or recurring Conditions, or null if null was passed in + */ +define function ActiveOrRecurring(CondList List): + CondList C + where C.clinicalStatus ~ "Condition Active" + or C.clinicalStatus ~ "Condition Recurrence" + or C.clinicalStatus ~ "Condition Relapse" + +/** + * Conditions with an onset or recorded date in the specified "look back" period. For example, pregnancy in + * the last 42 weeks. + * TODO: Rename to LookBack once the execution engine supports overloaded functions. + * @param CondList - a list of Conditions + * @returns {List} a list of Conditions with onset or recorded date specified lookback period, or null + * if null was passed in + */ +define function ConditionLookBack(CondList List, LookBack System.Quantity): + CondList C + let LookBackInterval: Interval[Now() - LookBack, Now()] + where (C.onset as FHIR.dateTime).value in LookBackInterval + or PeriodToInterval(C.onset as FHIR.Period) overlaps LookBackInterval + or C.recordedDate.value in LookBackInterval + +/** + * The most recent condition. For each Condition, this algorithm will use the Coalesce function, which uses the + * first non-null result from these fields: onsetDateTime, onsetPeriod.end, onsetPeriod.start, assertedDate. + * The found date will be used to compare Conditions and determine the most recent one. + * @param CondList - a list of Conditions + * @returns {Condition} the most recent Condition from the list, or null if null was passed in + */ +define function MostRecentCondition(CondList List): + Last(CondList C sort by Coalesce( + (onset as FHIR.dateTime).value, + (onset as FHIR.Period)."end".value, + (onset as FHIR.Period)."start".value, + recordedDate.value) + ) + + // -------------------------------------------------- PROCEDURES ------------------------------------------------------ + + /** + * Filters Procedures by a concept rather than by a ValueSet. In CQL 1.3, this is built into the retrieve, + * but for backwards compatibility, we keep this query where clause as an option. + * @param Koncept - the concept to filter on (intentionally mispelled to avoid naming clashes) + * @returns {List} a list of Procedures matching the concept, or null if null was passed in + */ + define function ProceduresByConcept(Koncept System.Concept): + [Procedure] P where FHIRHelpers.ToConcept(P.code) ~ Koncept + +/** + * Procedures that are completed. In FHIR R4, this is reflected by status: 'completed'. + * @see http://hl7.org/fhir/R4/valueset-event-status.html + * @param ProcList - a list of Procedures + * @returns {List} a list of completed Procedures, or null if null was passed in + */ +define function Completed(ProcList List): + ProcList P + where P.status.value = 'completed' + +/** + * Procedures that are in progress. In FHIR R4, this is reflected by status: 'in-progress'. + * @see http://hl7.org/fhir/R4/valueset-event-status.html + * @param ProcList - a list of Procedures + * @returns {List} a list of completed Procedures, or null if null was passed in + */ +define function ProcedureInProgress(ProcList List): + ProcList P + where P.status.value = 'in-progress' + +/** + * Procedures that actually happened or are happening. In FHIR R4, there are a few properties that negate the + * procedure, most notably when status is 'preparation', 'not-done', 'entered-in-error', or 'unknown'. + * @see http://hl7.org/fhir/R4/valueset-event-status.html + * @param ProcList - a list of Procedures + * @returns {List} a list of Procedures that actually happened or are happening, or null if null was passed in + */ +define function ProcedurePerformance(ProcList List): + ProcList P + where not (P.status.value in {'preparation', 'not-done', 'entered-in-error', 'unknown'}) + +/** + * Procedures performed in the specified "look back" period. For example, PCIs performed in the + * past 2 weeks. + * TODO: Rename to LookBack once the execution engine supports overloaded functions. + * @param ProcList - a list of Procedures + * @param LookBack - the lookback period for when the procedure was performed + * @returns {List} a list of Procedures performed in the look back period, or null if null + * was passed in + */ +define function ProcedureLookBack(ProcList List, LookBack System.Quantity): + ProcList P + let LookBackInterval: Interval[Now() - LookBack, Now()] + where (P.performed as FHIR.dateTime).value in LookBackInterval + or PeriodToInterval(P.performed as FHIR.Period) overlaps LookBackInterval + +/** + * The most recent procedure. For each Procedure, this algorithm will use the Coalesce function, which returns the + * first non-null result from these fields: performedDateTime, performedPeriod.end, performedPeriod.start. + * The found date will be used to compare Procedures and determine the most recent one. + * @param ProcList - a list of Procedures + * @returns {Procedure} the most recent Procedure from the list, or null if null was passed in + */ +define function MostRecentProcedure(ProcList List): + Last(ProcList P sort by Coalesce( + (performed as FHIR.dateTime).value, + (performed as FHIR.Period)."end".value, + (performed as FHIR.Period)."start".value) + ) + +// ----------------------------------------------- SERVICEREQUESTS ----------------------------------------------------- + +// NOTE: In FHIR R4, ProcedureRequest and ReferralRequest are replaced by ServiceRequest + +/** + * ServiceRequests that are active or completed. In FHIR R4, this is reflected by the corresponding + * status values. + * @see http://hl7.org/fhir/R4/valueset-request-status.html + * @param ServiceRequestList - a list of ServiceRequests + * @returns {List} a list of accepted, in-progress, or completed ProcedureRequests, + * or null if null was passed in + */ +define function ServiceRequestActiveOrCompleted(ServiceRequestList List): + ServiceRequestList S + where S.status.value in List{'active', 'completed'} + +/** + * ServiceRequests ordered in the specified "look back" period. For example, PCIs ordered in the + * past 2 weeks. + * TODO: Rename to LookBack once the execution engine supports overloaded functions. + * @param ServiceRequestList - a list of ServiceRequests + * @param LookBack - the lookback period for when the service was ordered + * @returns {List} a list of ServiceRequests ordered in the look back period, or null if null + * was passed in + */ +define function ServiceRequestLookBack(ServiceRequestList List, LookBack System.Quantity): + ServiceRequestList S + where S.authoredOn.value in Interval[Now() - LookBack, Now()] + +// -------------------------------------------------- MEDICATIONS ------------------------------------------------------ + +/** + * Filters MedicationStatements by a concept rather than by a ValueSet. In CQL 1.3, this is built into the retrieve, + * but for backwards compatibility, we keep this query where clause as an option. + * @param Koncept - the concept to filter on (intentionally mispelled to avoid naming clashes) + * @returns {List} a list of MedicationStatement matching the concept, or null if null was passed in + */ +define function MedicationStatementsByConcept(Koncept System.Concept): + [MedicationStatement] M where FHIRHelpers.ToConcept(M.medication as FHIR.CodeableConcept) ~ Koncept + +/** + * Filters MedicationRequests by a concept rather than by a ValueSet. In CQL 1.3, this is built into the retrieve, + * but for backwards compatibility, we keep this query where clause as an option. + * @param Koncept - the concept to filter on (intentionally mispelled to avoid naming clashes) + * @returns {List} a list of MedicationRequests matching the concept, or null if null was passed in + */ +define function MedicationRequestsByConcept(Koncept System.Concept): + [MedicationRequest] M where FHIRHelpers.ToConcept(M.medication as FHIR.CodeableConcept) ~ Koncept + +/** + * Medications that are active, according to a statement, but not necessarily verified via a prescription. For example, + * medications that a patient has self-reported to be taking. This may, however, also represent medications that are + * expected to be active after providing a prescription (e.g., clinician-reported). In FHIR R4, this is reflected by + * MedicationStatement with status 'active' and no end date or an end date in the future. + * TODO: Rename to Active once the execution engine supports overloaded functions. + * @see http://hl7.org/fhir/R4/valueset-medication-statement-status.html + * @param MedList - a list of MedicationStatements + * @returns {List} a list of active medication statements, or null if null was passed in + */ +define function ActiveMedicationStatement(MedList List): + MedList M + let EffectivePeriod: PeriodToInterval(M.effective as FHIR.Period) + where M.status.value = 'active' + and (end of EffectivePeriod is null or end of EffectivePeriod after Now()) + +/** +* Medication requests that are active. In FHIR R4, this is reflected by MedicationRequest with status 'active'. +* Note that in R4, the MedicationRequest Boundaries and Relationships now says: "When reporting on the usage of +* a medication by a patient, the MedicationStatement resource should be used." It also indicates that: +* "A medication statement is not a part of the prescribe->dispense->administer sequence but is a report that +* such a sequence (or at least a part of it) did take place resulting in a belief that the patient has received +* a particular medication." In this regard, MedicationStatement is more appropriate as an indication of an actually +* active medication, although it's not clear if vendors really will automatically create MedicationStatements in +* these cases or not. Until we know, MedicationRequest may be the best proxy we have for an active medication. +* TODO: Should the "intent" field be considered (e.g., is it still active if intent is "proposal" or "plan")? +* TODO: Rename to Active once the execution engine supports overloaded functions. +* @see http://hl7.org/fhir/R4/valueset-medicationrequest-status.html +* @param MedList - a list of MedicationRequests +* @returns {List} a list of active medication requests, or null if null was passed in +*/ +define function ActiveMedicationRequest(MedList List): + MedList M where M.status.value = 'active' + +/** +* Medication requests that are active or completed, according to a prescription. In FHIR R4, this is reflected by MedicationRequest +* with status 'active' or 'completed'. See the note above (in ActiveMedicationRequest) for more nuance regarding MedicationRequest +* vs. MedicationStatement. +* @see http://hl7.org/fhir/R4/valueset-medicationrequest-status.html +* @param MedList - a list of MedicationRequests +* @returns {List} a list of active medication requests, or null if null was passed in +*/ +define function ActiveOrCompletedMedicationRequest(MedList List): + MedList M + where M.status.value = 'active' + or M.status.value = 'completed' + +/** + * Medications that are active or completed, according to a statement, but not necessarily verified via a prescription. + * For example, medications that a patient has self-reported to be taking. This may, however, also represent + * medications that are expected to be active after providing a prescription (e.g., clinician-reported). In FHIR R4, + * this is reflected by MedicationStatement with status 'active' or 'completed'. + * TODO: Rename to ActiveOrCompleted once the execution engine supports overloaded functions. + * @see http://hl7.org/fhir/R4/valueset-medication-statement-status.html + * @param MedList - a list of MedicationStatements + * @returns {List} a list of active or completed medication statements, or null if null was passed + * in + */ +define function ActiveOrCompletedMedicationStatement(MedList List): + MedList M + where M.status.value = 'active' + or M.status.value = 'completed' + +/** +* Medication requests that are active, completed, or stopped, according to a prescription. In FHIR R4, this is +* reflected by MedicationRequest with status 'active', 'completed', or 'stopped'. See the note above +* (in ActiveMedicationRequest) for more nuance regarding MedicationRequest vs. MedicationStatement. +* @see http://hl7.org/fhir/R4/valueset-medicationrequest-status.html +* @param MedList - a list of MedicationOrders +* @returns {List} a list of active medication requests, or null if null was passed in +*/ +define function ActiveCompletedOrStoppedMedicationRequest(MedList List): + MedList M + where M.status.value = 'active' + or M.status.value = 'completed' + or M.status.value = 'stopped' + +/** +* Medication requests that are issued in the specified "look back" period. +* TODO: Rename to LookBack once the execution engine supports overloaded functions. +* @param MedList - a list of Medications +* @param LookBack - the lookback period for when the medication was prescribed +* @returns {List} a list of Medications prescribed in the look back period, or null if null +* was passed in +*/ +define function MedicationRequestLookBack(MedList List, LookBack System.Quantity): + MedList M + let LookBackInterval: Interval[Now() - LookBack, Now()] + where M.authoredOn.value in LookBackInterval + // DSTU2 also checked the dateEnded property of MedicationOrder, but this doesn't exist for MedicationRequest +/** +* Medication Statements that are issued in the specified "look back" period. +* TODO: Rename to LookBack once the execution engine supports overloaded functions. +* @param MedList - a list of Medications +* @param LookBack - the lookback period for when the medication was prescribed +* @returns {List} a list of Medications prescribed in the look back period, or null if null +* was passed in +*/ +define function MedicationStatementLookBack(MedList List, LookBack System.Quantity): + MedList M + let LookBackInterval: Interval[Now() - LookBack, Now()] + where (M.effective as FHIR.dateTime).value in LookBackInterval + or PeriodToInterval(M.effective as FHIR.Period) overlaps LookBackInterval +// -------------------------------------------------- ENCOUNTERS ------------------------------------------------------ +/** + * Filters Encounters by a concept rather than by a ValueSet. In CQL 1.3, this is built into the retrieve, + * but for backwards compatibility, we keep this query where clause as an option. + * @param Koncept - the concept to filter on (intentionally mispelled to avoid naming clashes) + * @returns {List} a list of Encounters matching the concept, or null if null was passed in + */ +define function EncountersByConcept(Koncept System.Concept): + [Encounter] E where exists( (E.type) ET where FHIRHelpers.ToConcept(ET) ~ Koncept ) +/** + * Encounters that are in progress. In FHIR R4, this is reflected by status: 'in-progress'. + * @see http://hl7.org/fhir/R4/valueset-encounter-status.html + * @param EncList - a list of Encounters + * @returns {List} a list of in progress encounters, or null if null was passed in + */ +define function InProgress(EncList List): + EncList E + where E.status.value = 'in-progress' +// -------------------------------------------------- ALLERGY INTOLERANCES ------------------------------------------------------ +/** + * Filters AllergyIntolerances by a concept rather than by a ValueSet. In CQL 1.3, this is built into the retrieve, + * but for backwards compatibility, we keep this query where clause as an option. + * @param Koncept - the concept to filter on (intentionally mispelled to avoid naming clashes) + * @returns {List} a list of Allergy Intolerances matching the concept, or null if null was passed in + */ +define function AllergyIntolerancesByConcept(Koncept System.Concept): + [AllergyIntolerance] A where FHIRHelpers.ToConcept(A.code) ~ Koncept +/** +* AllergyIntolerances that are active or confirmed. In FHIR STU3, this is reflected by AllergyIntolerance +* with clinicalStatus 'active' or verificationStatus 'confirmed' +* @see https://www.hl7.org/fhir/R4/valueset-allergy-clinical-status.html +* @see https://www.hl7.org/fhir/R4/valueset-allergy-verification-status.html +* @param AllergyIntolList - a list of AllergyIntolerances +* @returns {List} a list of active or confirmed allergy intolerances, or null if null was passed in +*/ +define function ActiveOrConfirmedAllergyIntolerance(AllergyIntolList List): + AllergyIntolList A + where A.clinicalStatus ~ "AllergyIntolerance Active" + or A.verificationStatus ~ "AllergyIntolerance Confirmed" +// -------------------------------------------------------- GOALS ------------------------------------------------------ +/** + * Goals with a start, target, or status date in the specified "look back" period. For example, Pain Management Goals + * in the last 2 years. + * TODO: Rename to LookBack once the execution engine supports overloaded functions. + * @param GoalList - a list of Goals + * @returns {List} a list of Goals with a start, target, or status date in the specified lookback period, or null + * if null was passed in + */ +define function GoalLookBack(GoalList List, LookBack System.Quantity): + GoalList G + let LookBackInterval: Interval[Now() - LookBack, Now()], + StartDate: (G.start as FHIR.date).value, + StatusDate: G.statusDate.value, + TargetDates: (G.target) T return (T.due as FHIR.date).value, + TargetQuantities: (G.target) T return FHIRHelpers.ToQuantity(T.due as FHIR.Duration) + where StartDate in LookBackInterval + or StatusDate in LookBackInterval + or exists(TargetDates TD where TD in LookBackInterval) + or exists(TargetQuantities TQ where (StartDate + TQ) in LookBackInterval) +// -------------------------------------------------- Immunizations ---------------------------------------------------- + /** + * Filters Immunizations by a concept rather than by a ValueSet. + * @param Koncept - the concept to filter on (intentionally mispelled to avoid naming clashes) + * @returns {List} a list of Immunizations matching the concept, or null if null was passed in + */ + define function ImmunizationsByConcept(Koncept System.Concept): + [Immunization] I where FHIRHelpers.ToConcept(I.vaccineCode) ~ Koncept +/** + * Immunizations that are completed. In FHIR R4, this is reflected by status: 'completed'. + * @see http://hl7.org/fhir/R4/valueset-immunization-status.html + * @param ImmunizationList - a list of Immunizations + * @returns {List} a list of completed Immunizations, or null if null was passed in + */ +define function CompletedImmunization(ImmunizationList List): + ImmunizationList I + where I.status.value = 'completed' +/** + * Immunizations given in the specified "look back" period. + * TODO: Rename to LookBack once the execution engine supports overloaded functions. + * @param ImmunizationList - a list of Immunizations + * @param LookBack - the lookback period for when the immunization was given + * @returns {List} a list of Immunizations given in the look back period, or null if null + * was passed in + */ +define function ImmunizationLookBack(ImmunizationList List, LookBack System.Quantity): + ImmunizationList I + let LookBackInterval: Interval[Now() - LookBack, Now()] + where (I.occurrence as FHIR.dateTime).value in LookBackInterval +/** + * The most recent Immunization. + * @param ImmunizationList - a list of Immunizations + * @returns {Immunization} the most recent Immunization from the list, or null if null was passed in + */ +define function MostRecentImmunization(ImmunizationList List): + Last(ImmunizationList I sort by (occurrence as FHIR.dateTime).value) +// ----------------------------------------------------- Devices ------------------------------------------------------- + /** + * Filters Devices by a concept rather than by a ValueSet. + * @param Koncept - the concept to filter on (intentionally mispelled to avoid naming clashes) + * @returns {List} a list of Devices matching the concept, or null if null was passed in + */ + define function DevicesByConcept(Koncept System.Concept): + [Device] D where FHIRHelpers.ToConcept(D.type) ~ Koncept +/** + * Devices that are active. In FHIR R4, this is reflected by status: 'active'. + * @see http://hl7.org/fhir/R4/valueset-device-status.html + * @param DeviceList - a list of Devices + * @returns {List} a list of active Devices, or null if null was passed in + */ +define function ActiveDevice(DeviceList List): + DeviceList D + where D.status.value = 'active' \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/files/DTRHelpers-0.1.0.cql b/src/cds-library/CRD-DTR/Shared/R4/files/DTRHelpers-0.1.0.cql new file mode 100644 index 00000000..f9577ce5 --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/files/DTRHelpers-0.1.0.cql @@ -0,0 +1,109 @@ +library DTRHelpers version '0.1.0' +using FHIR version '4.0.0' +include FHIRHelpers version '4.0.0' called FHIRHelpers +include CDS_Connect_Commons_for_FHIRv400 version '1.0.2' called CDS + +context Patient + +// -------------------------------------------------- CONDITIONS ----------------------------------------------------- + +// Returns formatted relvant diagnoses codes from a list of conditions +// Use Case: Retrieve DeviceRequest relevant diagnoses +define function CodesFromConditions(CondList List): + distinct(flatten( + CondList C + let DiagnosesCodings: + (C.code.coding) CODING where CODING.system.value in { + 'http://hl7.org/fhir/sid/icd-10', + 'http://hl7.org/fhir/sid/icd-10-cm', + 'http://snomed.info/sct' + } + return FHIRHelpers.ToCode(CODING) + return DiagnosesCodings + )) + +// Returns the first chronologically recorded condition of a ConditionList +// Use Case: Access earlierst condition from a list +define function FirstDateConditionRecorded(ConditionList List): + First(ConditionList C sort by FHIRHelpers."ToDateTime"(recordedDate)) + +// -------------------------------------------------- OBSERVATIONS ----------------------------------------------------- + +// Returns the Observation with the lowest value from an ObservationList +// Use Case: Finding the lowest numerical lab result +define function LowestObservation(ObsList List): + Min(ObsList O return FHIRHelpers.ToQuantity(O.value as Quantity)) + +// Returns the numerical value of an Observation, without a unit +// Use Case: Displaying only the numerical part of a lab result +define function GetObservationValue(Obs Observation): + NullSafeToQuantityWithoutUnit(cast Obs.value as Quantity) + +// Retrieve the numerical value of a FHIR quantity, without units +// Use Case: Helper function for GetObservationValue() +define function NullSafeToQuantityWithoutUnit(Qty FHIR.Quantity): + if Qty is not null then Qty.value.value + else null + +// -------------------------------------------------- ENCOUNTERS ----------------------------------------------------- + +// Takes in a list of encounters and a lookback period, and returns a subset of that list containing encounters occuring during that lookback period. +// Use Case: Retrieve encounters that occur during a recent time period +define function EncounterLookBack(EncounterList List, LookBack System.Quantity): + EncounterList E + let LookBackInterval: Interval[Now() - LookBack, Now()] + where (cast E.period.start as dateTime).value in LookBackInterval + or CDS.PeriodToInterval(cast E.period as Period) overlaps LookBackInterval + +// Returns formatted codings from a list of Encounters +// Use Case: Query relevant Encounters +define function ConvertEncounterDetails(EncounterList List): + distinct( + flatten( + EncounterList E + let EncounterCodings: + (E.type.coding) CODING + return Tuple { + code: CODING.code.value, + system: CODING.system.value, + display: CODING.display.value, + periodStart: E.period.start.value, + encounterReason: E.reasonCode[0].coding.display.value, + type: 'encounter' + } + return EncounterCodings + ) + ) + + // -------------------------------------------------- PROCEDURES ----------------------------------------------------- +// Returns formatted codings from a list of Procedures +// Use Case: Query relevant procedures for a MedicationRequest +define function ProcedureCoding(ProcedureList List): + distinct( + flatten( + ProcedureList P + let DiagnosesCodings: + (P.code.coding) CODING + return Tuple { + code: CODING.code.value, + system: CODING.system.value, + display: CODING.display.value + } + return DiagnosesCodings + ) + ) + +// Returns formatted codings from a list of Procedures +// Use Case: Query relevant procedures for a MedicationRequest + define function CodesFromProcedures(ProcedureList List): + distinct(flatten( + ProcedureList P + let DiagnosesCodings: + (P.code.coding) CODING where CODING.system.value in { + 'http://hl7.org/fhir/sid/icd-10', + 'http://hl7.org/fhir/sid/icd-10-cm', + 'http://snomed.info/sct' + } + return FHIRHelpers.ToCode(CODING) + return DiagnosesCodings + )) \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/files/FHIRHelpers-4.0.0.cql b/src/cds-library/CRD-DTR/Shared/R4/files/FHIRHelpers-4.0.0.cql new file mode 100644 index 00000000..fe086bec --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/files/FHIRHelpers-4.0.0.cql @@ -0,0 +1,270 @@ +library FHIRHelpers version '4.0.0' + +using FHIR version '4.0.0' + +define function ToInterval(period FHIR.Period): + if period is null then + null + else + Interval[period."start".value, period."end".value] + +define function ToQuantity(quantity FHIR.Quantity): + if quantity is null then + null + else + System.Quantity { value: quantity.value.value, unit: quantity.unit.value } + +define function ToInterval(range FHIR.Range): + if range is null then + null + else + Interval[ToQuantity(range.low), ToQuantity(range.high)] + +define function ToCode(coding FHIR.Coding): + if coding is null then + null + else + System.Code { + code: coding.code.value, + system: coding.system.value, + version: coding.version.value, + display: coding.display.value + } + +define function ToConcept(concept FHIR.CodeableConcept): + if concept is null then + null + else + System.Concept { + codes: concept.coding C return ToCode(C), + display: concept.text.value + } + +define function ToString(value FHIR.uuid): value.value +define function ToString(value FHIR.TestScriptRequestMethodCode): value.value +define function ToString(value FHIR.SortDirection): value.value +define function ToString(value FHIR.BiologicallyDerivedProductStatus): value.value +define function ToString(value FHIR.UnitsOfTime): value.value +define function ToString(value FHIR.AddressType): value.value +define function ToString(value FHIR.AllergyIntoleranceCategory): value.value +define function ToString(value FHIR.IssueSeverity): value.value +define function ToString(value FHIR.CareTeamStatus): value.value +define function ToString(value FHIR.EncounterStatus): value.value +define function ToString(value FHIR.StructureDefinitionKind): value.value +define function ToString(value FHIR.PublicationStatus): value.value +define function ToString(value FHIR.FHIRVersion): value.value +define function ToString(value FHIR.CarePlanActivityKind): value.value +define function ToString(value FHIR.StructureMapSourceListMode): value.value +define function ToString(value FHIR.RequestStatus): value.value +define function ToString(value FHIR.strandType): value.value +define function ToString(value FHIR.QuestionnaireResponseStatus): value.value +define function ToString(value FHIR.SearchComparator): value.value +define function ToString(value FHIR.ChargeItemStatus): value.value +define function ToString(value FHIR.ActionParticipantType): value.value +define function ToString(value FHIR.AllergyIntoleranceType): value.value +define function ToString(value FHIR.CarePlanActivityStatus): value.value +define function ToString(value FHIR.InvoiceStatus): value.value +define function ToString(value FHIR.ClaimProcessingCodes): value.value +define function ToString(value FHIR.RequestResourceType): value.value +define function ToString(value FHIR.ParticipationStatus): value.value +define function ToString(value FHIR.DeviceNameType): value.value +define function ToString(value FHIR.DocumentMode): value.value +define function ToString(value FHIR.AssertionOperatorType): value.value +define function ToString(value FHIR.DaysOfWeek): value.value +define function ToString(value FHIR.IssueType): value.value +define function ToString(value FHIR.canonical): value.value +define function ToString(value FHIR.StructureMapContextType): value.value +define function ToString(value FHIR.FamilyHistoryStatus): value.value +define function ToString(value FHIR.status): value.value +define function ToString(value FHIR.ExtensionContextType): value.value +define function ToString(value FHIR.AssertionResponseTypes): value.value +define function ToString(value FHIR.RequestIntent): value.value +define function ToString(value FHIR.string): value.value +define function ToString(value FHIR.ActionRequiredBehavior): value.value +define function ToString(value FHIR.GraphCompartmentUse): value.value +define function ToString(value FHIR.orientationType): value.value +define function ToString(value FHIR.AccountStatus): value.value +define function ToString(value FHIR.IdentifierUse): value.value +define function ToString(value FHIR.StructureMapTargetListMode): value.value +define function ToString(value FHIR.ExposureState): value.value +define function ToString(value FHIR.TestReportParticipantType): value.value +define function ToString(value FHIR.BindingStrength): value.value +define function ToString(value FHIR.RequestPriority): value.value +define function ToString(value FHIR.ParticipantRequired): value.value +define function ToString(value FHIR.XPathUsageType): value.value +define function ToString(value FHIR.id): value.value +define function ToString(value FHIR.FilterOperator): value.value +define function ToString(value FHIR.NamingSystemType): value.value +define function ToString(value FHIR.ContractResourceStatusCodes): value.value +define function ToString(value FHIR.ResearchSubjectStatus): value.value +define function ToString(value FHIR.StructureMapTransform): value.value +define function ToString(value FHIR.ResponseType): value.value +define function ToDecimal(value FHIR.decimal): value.value +define function ToString(value FHIR.AggregationMode): value.value +define function ToString(value FHIR.sequenceType): value.value +define function ToString(value FHIR.SystemRestfulInteraction): value.value +define function ToString(value FHIR.AdverseEventActuality): value.value +define function ToString(value FHIR.SubscriptionChannelType): value.value +define function ToString(value FHIR.AssertionDirectionType): value.value +define function ToString(value FHIR.CarePlanIntent): value.value +define function ToString(value FHIR.AllergyIntoleranceCriticality): value.value +define function ToString(value FHIR.PropertyRepresentation): value.value +define function ToString(value FHIR.TriggerType): value.value +define function ToString(value FHIR.CompositionStatus): value.value +define function ToString(value FHIR.AppointmentStatus): value.value +define function ToString(value FHIR.MessageSignificanceCategory): value.value +define function ToString(value FHIR.ListMode): value.value +define function ToString(value FHIR.ResearchElementType): value.value +define function ToString(value FHIR.ObservationStatus): value.value +define function ToString(value FHIR.ResourceType): value.value +define function ToBoolean(value FHIR.boolean): value.value +define function ToString(value FHIR.StructureMapGroupTypeMode): value.value +define function ToString(value FHIR.SupplyRequestStatus): value.value +define function ToString(value FHIR.EncounterLocationStatus): value.value +define function ToString(value FHIR.ConditionalDeleteStatus): value.value +define function ToString(value FHIR.url): value.value +define function ToString(value FHIR.uri): value.value +define function ToString(value FHIR.Use): value.value +define function ToString(value FHIR.MedicationRequestStatus): value.value +define function ToString(value FHIR.IdentityAssuranceLevel): value.value +define function ToString(value FHIR.DeviceMetricColor): value.value +define function ToTime(value FHIR.time): value.value +define function ToString(value FHIR.ConditionalReadStatus): value.value +define function ToString(value FHIR.AllergyIntoleranceSeverity): value.value +define function ToString(value FHIR.FinancialResourceStatusCodes): value.value +define function ToString(value FHIR.OperationKind): value.value +define function ToString(value FHIR.SubscriptionStatus): value.value +define function ToString(value FHIR.GoalLifecycleStatus): value.value +define function ToString(value FHIR.ObservationDataType): value.value +define function ToString(value FHIR.DocumentReferenceStatus): value.value +define function ToString(value FHIR.repositoryType): value.value +define function ToString(value FHIR.LocationStatus): value.value +define function ToString(value FHIR.NoteType): value.value +define function ToString(value FHIR.TestReportStatus): value.value +define function ToString(value FHIR.CodeSystemContentMode): value.value +define function ToString(value FHIR.FHIRDeviceStatus): value.value +define function ToString(value FHIR.ContactPointSystem): value.value +define function ToString(value FHIR.SlotStatus): value.value +define function ToString(value FHIR.PropertyType): value.value +define function ToString(value FHIR.TypeDerivationRule): value.value +define function ToString(value FHIR.GuidanceResponseStatus): value.value +define function ToString(value FHIR.RelatedArtifactType): value.value +define function ToString(value FHIR.oid): value.value +define function ToString(value FHIR.CompartmentType): value.value +define function ToString(value FHIR.MedicationRequestIntent): value.value +define function ToString(value FHIR.InvoicePriceComponentType): value.value +define function ToString(value FHIR.DeviceMetricCalibrationState): value.value +define function ToString(value FHIR.GroupType): value.value +define function ToString(value FHIR.EnableWhenBehavior): value.value +define function ToString(value FHIR.TaskIntent): value.value +define function ToString(value FHIR.ImmunizationEvaluationStatusCodes): value.value +define function ToString(value FHIR.ExampleScenarioActorType): value.value +define function ToString(value FHIR.ProvenanceEntityRole): value.value +define function ToString(value FHIR.SpecimenStatus): value.value +define function ToString(value FHIR.RestfulCapabilityMode): value.value +define function ToString(value FHIR.DetectedIssueSeverity): value.value +define function ToString(value FHIR.VisionEyes): value.value +define function ToString(value FHIR.ConsentDataMeaning): value.value +define function ToString(value FHIR.messageheaderResponseRequest): value.value +define function ToString(value FHIR.GuidePageGeneration): value.value +define function ToString(value FHIR.DocumentRelationshipType): value.value +define function ToString(value FHIR.VariableType): value.value +define function ToString(value FHIR.TestReportResult): value.value +define function ToString(value FHIR.ConceptMapGroupUnmappedMode): value.value +define function ToDateTime(value FHIR.instant): value.value +define function ToDateTime(value FHIR.dateTime): value.value +define function ToDate(value FHIR.date): value.value +define function ToInteger(value FHIR.positiveInt): value.value +define function ToString(value FHIR.ClinicalImpressionStatus): value.value +define function ToString(value FHIR.EligibilityResponsePurpose): value.value +define function ToString(value FHIR.NarrativeStatus): value.value +define function ToString(value FHIR.ImagingStudyStatus): value.value +define function ToString(value FHIR.EndpointStatus): value.value +define function ToString(value FHIR.BiologicallyDerivedProductCategory): value.value +define function ToString(value FHIR.ResourceVersionPolicy): value.value +define function ToString(value FHIR.ActionCardinalityBehavior): value.value +define function ToString(value FHIR.GroupMeasure): value.value +define function ToString(value FHIR.NamingSystemIdentifierType): value.value +define function ToString(value FHIR.ImmunizationStatusCodes): value.value +define function ToString(value FHIR.MedicationStatusCodes): value.value +define function ToString(value FHIR.DiscriminatorType): value.value +define function ToString(value FHIR.StructureMapInputMode): value.value +define function ToString(value FHIR.LinkageType): value.value +define function ToString(value FHIR.ReferenceHandlingPolicy): value.value +define function ToString(value FHIR.ResearchStudyStatus): value.value +define function ToString(value FHIR.AuditEventOutcome): value.value +define function ToString(value FHIR.SpecimenContainedPreference): value.value +define function ToString(value FHIR.ActionRelationshipType): value.value +define function ToString(value FHIR.ConstraintSeverity): value.value +define function ToString(value FHIR.EventCapabilityMode): value.value +define function ToString(value FHIR.CodeSearchSupport): value.value +define function ToString(value FHIR.ObservationRangeCategory): value.value +define function ToString(value FHIR.UDIEntryType): value.value +define function ToString(value FHIR.DeviceMetricCategory): value.value +define function ToString(value FHIR.TestReportActionResult): value.value +define function ToString(value FHIR.CapabilityStatementKind): value.value +define function ToString(value FHIR.EventTiming): value.value +define function ToString(value FHIR.SearchParamType): value.value +define function ToString(value FHIR.ActionGroupingBehavior): value.value +define function ToString(value FHIR.StructureMapModelMode): value.value +define function ToString(value FHIR.TaskStatus): value.value +define function ToString(value FHIR.BiologicallyDerivedProductStorageScale): value.value +define function ToString(value FHIR.GraphCompartmentRule): value.value +define function ToString(value FHIR.SlicingRules): value.value +define function ToString(value FHIR.ExplanationOfBenefitStatus): value.value +define function ToString(value FHIR.GuideParameterCode): value.value +define function ToString(value FHIR.CatalogEntryRelationType): value.value +define function ToString(value FHIR.LinkType): value.value +define function ToString(value FHIR.ConceptMapEquivalence): value.value +define function ToString(value FHIR.AuditEventAction): value.value +define function ToString(value FHIR.SearchModifierCode): value.value +define function ToString(value FHIR.EventStatus): value.value +define function ToString(value FHIR.OperationParameterUse): value.value +define function ToString(value FHIR.ConsentProvisionType): value.value +define function ToString(value FHIR.ActionConditionKind): value.value +define function ToString(value FHIR.qualityType): value.value +define function ToString(value FHIR.AdministrativeGender): value.value +define function ToString(value FHIR.QuestionnaireItemType): value.value +define function ToString(value FHIR.DeviceMetricCalibrationType): value.value +define function ToString(value FHIR.EvidenceVariableType): value.value +define function ToString(value FHIR.code): value.value +define function ToString(value FHIR.ActionSelectionBehavior): value.value +define function ToString(value FHIR.SupplyDeliveryStatus): value.value +define function ToString(value FHIR.DiagnosticReportStatus): value.value +define function ToString(value FHIR.FlagStatus): value.value +define function ToString(value FHIR.SPDXLicense): value.value +define function ToString(value FHIR.ListStatus): value.value +define function ToString(value FHIR.base64Binary): value.value +define function ToString(value FHIR.DeviceUseStatementStatus): value.value +define function ToString(value FHIR.AuditEventAgentNetworkType): value.value +define function ToString(value FHIR.ExpressionLanguage): value.value +define function ToString(value FHIR.AddressUse): value.value +define function ToString(value FHIR.ContactPointUse): value.value +define function ToString(value FHIR.DeviceMetricOperationalStatus): value.value +define function ToString(value FHIR.ContributorType): value.value +define function ToString(value FHIR.ReferenceVersionRules): value.value +define function ToString(value FHIR.MeasureReportStatus): value.value +define function ToString(value FHIR.SearchEntryMode): value.value +define function ToInteger(value FHIR.unsignedInt): value.value +define function ToString(value FHIR.NameUse): value.value +define function ToString(value FHIR.LocationMode): value.value +define function ToInteger(value FHIR.integer): value.value +define function ToString(value FHIR.FHIRSubstanceStatus): value.value +define function ToString(value FHIR.QuestionnaireItemOperator): value.value +define function ToString(value FHIR.HTTPVerb): value.value +define function ToString(value FHIR.EpisodeOfCareStatus): value.value +define function ToString(value FHIR.RemittanceOutcome): value.value +define function ToString(value FHIR.markdown): value.value +define function ToString(value FHIR.EligibilityRequestPurpose): value.value +define function ToString(value FHIR.QuantityComparator): value.value +define function ToString(value FHIR.MeasureReportType): value.value +define function ToString(value FHIR.ActionPrecheckBehavior): value.value +define function ToString(value FHIR.SampledDataDataType): value.value +define function ToString(value FHIR.CompositionAttestationMode): value.value +define function ToString(value FHIR.TypeRestfulInteraction): value.value +define function ToString(value FHIR.CodeSystemHierarchyMeaning): value.value +define function ToString(value FHIR.vConfidentialityClassification): value.value +define function ToString(value FHIR.ContractResourcePublicationStatusCodes): value.value +define function ToString(value FHIR.VisionBase): value.value +define function ToString(value FHIR.BundleType): value.value + diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-BasicClinicalInfo-prepopulation.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-BasicClinicalInfo-prepopulation.json new file mode 100644 index 00000000..3b04eb6a --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-BasicClinicalInfo-prepopulation.json @@ -0,0 +1,40 @@ +{ + "resourceType": "Library", + "id": "BasicClinicalInfo-prepopulation", + "url": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicClinicalInfo-prepopulation", + "name": "BasicClinicalInfo-prepopulation", + "version": "0.1.0", + "title": "Basic Clinical Info FHIR R4", + "status": "draft", + "type": { + "coding": [ + { + "code": "logic-library" + } + ] + }, + "relatedArtifact": [ + { + "type": "depends-on", + "resource": "Library/FHIRHelpers-4.0.0" + } + ], + "dataRequirement": [ + { "type": "Condition" }, + { "type": "Encounter" }, + { "type": "Practitioner" }, + { "type": "AllergyIntolerance" }, + { "type": "Procedure" }, + { "type": "MedicationStatement" } + ], + "content": [ + { + "contentType": "text/cql", + "data": "bGlicmFyeSBCYXNpY0NsaW5pY2FsSW5mb1ByZXBvcHVsYXRpb24gdmVyc2lvbiAnMC4xLjAnCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjAnCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjAnIGNhbGxlZCBGSElSSGVscGVycwoKY29kZXN5c3RlbSAiSEw3LVYyLTAxMzYiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS92Mi0wMTM2JyAKCmNvZGUgIlllcyI6ICdZJyBmcm9tICJITDctVjItMDEzNiIgZGlzcGxheSAnWWVzJwpjb2RlICJObyI6ICdOJyBmcm9tICJITDctVjItMDEzNiIgZGlzcGxheSAnTm8nCgpwYXJhbWV0ZXIgZGV2aWNlX3JlcXVlc3QgRGV2aWNlUmVxdWVzdApwYXJhbWV0ZXIgc2VydmljZV9yZXF1ZXN0IFNlcnZpY2VSZXF1ZXN0CnBhcmFtZXRlciBtZWRpY2F0aW9uX3JlcXVlc3QgTWVkaWNhdGlvblJlcXVlc3QKCmNvbnRleHQgUGF0aWVudAoKZGVmaW5lICJUb2RheSI6IFRvZGF5KCkKCmRlZmluZSAiT3JkZXJpbmdQcm92aWRlclJlZmVyZW5jZSI6IENvYWxlc2NlKGRldmljZV9yZXF1ZXN0LnBlcmZvcm1lci5yZWZlcmVuY2UudmFsdWUsIHNlcnZpY2VfcmVxdWVzdC5wZXJmb3JtZXIucmVmZXJlbmNlLnZhbHVlLCBtZWRpY2F0aW9uX3JlcXVlc3QucGVyZm9ybWVyLnJlZmVyZW5jZS52YWx1ZSkKZGVmaW5lICJPcmRlcmluZ1Byb3ZpZGVyIjogc2luZ2xldG9uIGZyb20gKAogIFtQcmFjdGl0aW9uZXJdIHByYWN0aXRpb25lcgogICAgd2hlcmUgKCdQcmFjdGl0aW9uZXIvJyArIHByYWN0aXRpb25lci5pZCkgPSAiT3JkZXJpbmdQcm92aWRlclJlZmVyZW5jZSIpCgpkZWZpbmUgIlJlcXVlc3RFbmNvdW50ZXJSZWZlcmVuY2UiOiBDb2FsZXNjZShkZXZpY2VfcmVxdWVzdC5lbmNvdW50ZXIucmVmZXJlbmNlLnZhbHVlLCBzZXJ2aWNlX3JlcXVlc3QuZW5jb3VudGVyLnJlZmVyZW5jZS52YWx1ZSwgbWVkaWNhdGlvbl9yZXF1ZXN0LmVuY291bnRlci5yZWZlcmVuY2UudmFsdWUpCmRlZmluZSAiUmVxdWVzdEVuY291bnRlciI6IAogIFtFbmNvdW50ZXJdIEUKICB3aGVyZSAnRW5jb3VudGVyLycrIEUuaWQgPSAiUmVxdWVzdEVuY291bnRlclJlZmVyZW5jZSIKCmRlZmluZSAiUmVxdWVzdEVuY291bnRlckRhdGUiOgogIGlmIGV4aXN0cygiUmVxdWVzdEVuY291bnRlciIpIHRoZW4gIlJlcXVlc3RFbmNvdW50ZXIiLnBlcmlvZC5zdGFydC52YWx1ZQogIGVsc2UgbnVsbAoKZGVmaW5lICJSZXF1ZXN0RW5jb3VudGVyUGFydGljaXBhbnRzIjogIlJlcXVlc3RFbmNvdW50ZXIiLnBhcnRpY2lwYW50CmRlZmluZSAiUmVxdWVzdEVuY291bnRlckZpcnN0UGFydGljaXBhbnRSZWZlcmVuY2UiOiAKICBpZiBleGlzdHMoIlJlcXVlc3RFbmNvdW50ZXJQYXJ0aWNpcGFudHMiKQogICAgdGhlbiAiUmVxdWVzdEVuY291bnRlclBhcnRpY2lwYW50cyJbMF0uaW5kaXZpZHVhbC5yZWZlcmVuY2UudmFsdWUKICBlbHNlIG51bGwgIAoKZGVmaW5lICJJc0VuY291bnRlclByb3ZpZGVyU2FtZUFzT3JkZXJpbmdQcm92aWRlciI6ICJPcmRlcmluZ1Byb3ZpZGVyUmVmZXJlbmNlIiA9ICJSZXF1ZXN0RW5jb3VudGVyRmlyc3RQYXJ0aWNpcGFudFJlZmVyZW5jZSIKCmRlZmluZSAiT3JkZXJpbmdQcm92aWRlck5hbWUiOiBzaW5nbGV0b24gZnJvbSAoCiAgKCJPcmRlcmluZ1Byb3ZpZGVyIi5uYW1lIG5hbWUgd2hlcmUgbmFtZS51c2UudmFsdWUgPSAnb2ZmaWNpYWwnKSAKICB1bmlvbiAKICAiT3JkZXJpbmdQcm92aWRlciIubmFtZSkKCi8vIEdldCBQcmFjdGl0aW9uZXIncyBOYW1lIGVsZW1lbnRzCmRlZmluZSAiT3JkZXJpbmdQcm92aWRlckxhc3ROYW1lIjogIk9yZGVyaW5nUHJvdmlkZXJOYW1lIi5mYW1pbHkudmFsdWUKZGVmaW5lICJPcmRlcmluZ1Byb3ZpZGVyTWlkZGxlSW5pdGlhbCI6IEdldE1pZGRsZUluaXRpYWxzKCJPcmRlcmluZ1Byb3ZpZGVyTmFtZSIpCmRlZmluZSAiT3JkZXJpbmdQcm92aWRlckZpcnN0TmFtZSI6ICJPcmRlcmluZ1Byb3ZpZGVyTmFtZSIuZ2l2ZW5bMF0udmFsdWUKZGVmaW5lICJPcmRlcmluZ1Byb3ZpZGVyRnVsbE5hbWUiOgogICJPcmRlcmluZ1Byb3ZpZGVyRmlyc3ROYW1lIiArICcgJyArICJPcmRlcmluZ1Byb3ZpZGVyTWlkZGxlSW5pdGlhbCIgKyAnICcgKyAiT3JkZXJpbmdQcm92aWRlckxhc3ROYW1lIgoKLy8gR2V0IFByYWN0aXRpb25lcidzIE5QSQpkZWZpbmUgIk9yZGVyaW5nUHJvdmlkZXJOUEkiOiAoc2luZ2xldG9uIGZyb20gKAogICJPcmRlcmluZ1Byb3ZpZGVyIi5pZGVudGlmaWVyIGlkZW50aWZpZXIKICAgIHdoZXJlIGlkZW50aWZpZXIuc3lzdGVtLnZhbHVlID0gJ2h0dHA6Ly9obDcub3JnL2ZoaXIvc2lkL3VzLW5waScpKS52YWx1ZS52YWx1ZQoKLy8gRW5jb3VudGVyIHByb3ZpZGVyJ3MgaW5mb3JtYXRpb24KZGVmaW5lICJFbmNvdW50ZXJQcm92aWRlckxhc3ROYW1lIjogCiAgaWYgIklzRW5jb3VudGVyUHJvdmlkZXJTYW1lQXNPcmRlcmluZ1Byb3ZpZGVyIiB0aGVuICJPcmRlcmluZ1Byb3ZpZGVyTGFzdE5hbWUiCiAgZWxzZSBudWxsCgpkZWZpbmUgIkVuY291bnRlclByb3ZpZGVyTWlkZGxlSW5pdGlhbCI6IAogIGlmICJJc0VuY291bnRlclByb3ZpZGVyU2FtZUFzT3JkZXJpbmdQcm92aWRlciIgdGhlbiAiT3JkZXJpbmdQcm92aWRlck1pZGRsZUluaXRpYWwiCiAgZWxzZSBudWxsCgpkZWZpbmUgIkVuY291bnRlclByb3ZpZGVyRmlyc3ROYW1lIjogCiAgaWYgIklzRW5jb3VudGVyUHJvdmlkZXJTYW1lQXNPcmRlcmluZ1Byb3ZpZGVyIiB0aGVuICJPcmRlcmluZ1Byb3ZpZGVyRmlyc3ROYW1lIgogIGVsc2UgbnVsbAoKZGVmaW5lICJFbmNvdW50ZXJQcm92aWRlckZ1bGxOYW1lIjogCiAgaWYgIklzRW5jb3VudGVyUHJvdmlkZXJTYW1lQXNPcmRlcmluZ1Byb3ZpZGVyIiB0aGVuICJPcmRlcmluZ1Byb3ZpZGVyRnVsbE5hbWUiCiAgZWxzZSBudWxsCgpkZWZpbmUgIkVuY291bnRlclByb3ZpZGVyTlBJIjoKICBpZiAiSXNFbmNvdW50ZXJQcm92aWRlclNhbWVBc09yZGVyaW5nUHJvdmlkZXIiIHRoZW4gIk9yZGVyaW5nUHJvdmlkZXJOUEkiCiAgZWxzZSBudWxsCgpkZWZpbmUgZnVuY3Rpb24gR2V0TWlkZGxlSW5pdGlhbHMobmFtZSBGSElSLkh1bWFuTmFtZSk6CiAgU3Vic3RyaW5nKENvbWJpbmUoKG5hbWUuZ2l2ZW4gZ2l2ZW4gcmV0dXJuIFN1YnN0cmluZyhnaXZlbi52YWx1ZSwwLDEpKSwnLCAnKSwzKQoKIAovKiBUaGlzIGlzIGEgd29yayBhcm91bmQgdG8gcHJlcG9wdWxhdGUgd2l0aCBZZXMgYW5zd2VyIGZvciBZZXMvTm8gcXVlc3Rpb24uCiAgIFRoZSBibG9ja2luZyBpc3N1ZSBpcyB0aGF0IHdoZW4gTEhDIGZvcm0gY29udHJvbCBtZXJnZSBRdWVzdGlvbm5haXJlICh0aGUgY29tcGlsZWQgc3RhdGljIGZvcm0pCiAgIGFuZCBRdWVzdGlvbm5haXJlUmVzcG9uc2UgKHRoZSBDUUwgZXhwcmVzc2lvbiByZXN1bHRzKSB0byBjcmVhdGUgYSBmb3JtIHJlcHJlc2VudGF0aW9uLCAKICAgdGhlIGluaXRpYWwgdmFsdWUgaW4gUXVlc3Rpb25uYWlyZSBhcmUgaW5nb3JlZC4gCiAgIFNvIHdlIGNhbm5vdCB1c2UgUXVlc3Rpb25uYWlyZSBpbml0aWFsIHRvIHNldHVwIHRoZSBkZWZhdWx0IHZhbHVlLiAKKi8KZGVmaW5lIEFuc3dlclllczogIlllcyIKZGVmaW5lIEFuc3dlck5vOiAiTm8iCgpkZWZpbmUgQWxsZXJnaWVzOgogIENvZGVzRnJvbUFsbGVyZ2llcyhDb25maXJtZWRBbGxlcmdpZXMoW0FsbGVyZ3lJbnRvbGVyYW5jZV0pKQoKZGVmaW5lIGZ1bmN0aW9uIENvZGVzRnJvbUFsbGVyZ2llcyhBbGxlcmd5TGlzdCBMaXN0PEFsbGVyZ3lJbnRvbGVyYW5jZT4pOgogIGRpc3RpbmN0KGZsYXR0ZW4oCiAgICBBbGxlcmd5TGlzdCBDCiAgICAgIGxldCBBbGxlcmd5Q29kaW5nczoKICAgICAgICAgIChDLmNvZGUuY29kaW5nKSBDT0RJTkcgd2hlcmUgQ09ESU5HLnN5c3RlbS52YWx1ZSBpbiB7CiAgICAgICAgICAgICdodHRwOi8vd3d3Lm5sbS5uaWguZ292L3Jlc2VhcmNoL3VtbHMvcnhub3JtJwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIEZISVJIZWxwZXJzLlRvQ29kZShDT0RJTkcpCiAgICAgIHJldHVybiBBbGxlcmd5Q29kaW5ncwogICkpCgpkZWZpbmUgZnVuY3Rpb24gQ29uZmlybWVkQWxsZXJnaWVzKEFsbGVyZ3lMaXN0IExpc3Q8QWxsZXJneUludG9sZXJhbmNlPik6CiAgQWxsZXJneUxpc3QgQyB3aGVyZSBDLnZlcmlmaWNhdGlvblN0YXR1cy5jb2RpbmcuY29kZSA9ICdjb25maXJtZWQnCgpkZWZpbmUgIkFsbERpYWdub3NlcyI6IEFjdGl2ZUNvbmZpcm1lZERpYWdub3NlcyhbQ29uZGl0aW9uXSkKCmRlZmluZSBmdW5jdGlvbiBBY3RpdmVDb25maXJtZWREaWFnbm9zZXMoQ29uZExpc3QgTGlzdDxGSElSLkNvbmRpdGlvbj4pOgogIGRpc3RpbmN0KAogICAgZmxhdHRlbigKICAgICAgQ29uZExpc3QgQwogICAgICAgIGxldCBEaWFnbm9zZXNDb2RpbmdzOgogICAgICAgICAgKEMuY29kZS5jb2RpbmcpIENPRElORyB3aGVyZSBDT0RJTkcuc3lzdGVtLnZhbHVlIGluIHsKICAgICAgICAgICAgJ2h0dHA6Ly9obDcub3JnL2ZoaXIvc2lkL2ljZC0xMCcsCiAgICAgICAgICAgICdodHRwOi8vaGw3Lm9yZy9maGlyL3NpZC9pY2QtMTAtY20nLAogICAgICAgICAgICAnaHR0cDovL3Nub21lZC5pbmZvL3NjdCcKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBGSElSSGVscGVycy5Ub0NvZGUoQ09ESU5HKQogICAgICAgIHdoZXJlIEMudmVyaWZpY2F0aW9uU3RhdHVzLmNvZGluZy5jb2RlID0gJ2NvbmZpcm1lZCcKICAgICAgICAgIGFuZCBDLmNsaW5pY2FsU3RhdHVzLmNvZGluZy5jb2RlIGluIHsnYWN0aXZlJywgJ3JlbGFwc2UnfQogICAgICAgICAgYW5kIGV4aXN0cyhEaWFnbm9zZXNDb2RpbmdzKQogICAgICAgIHJldHVybiBEaWFnbm9zZXNDb2RpbmdzCiAgICApCiAgKSAgCmRlZmluZSAiQWxsUHJvY2VkdXJlcyI6IFByb2NlZHVyZUNvZGluZyhbUHJvY2VkdXJlXSkKZGVmaW5lIGZ1bmN0aW9uIFByb2NlZHVyZUNvZGluZyhQcm9jZWR1cmVMaXN0IExpc3Q8RkhJUi5Qcm9jZWR1cmU+KToKICBkaXN0aW5jdCgKICAgIGZsYXR0ZW4oCiAgICAgIFByb2NlZHVyZUxpc3QgUAogICAgICAgIGxldCBQcm9jZWR1cmVDb2RpbmdzOgogICAgICAgICAgKFAuY29kZS5jb2RpbmcpIENPRElORyAKICAgICAgICAgIHJldHVybiBGSElSSGVscGVycy5Ub0NvZGUoQ09ESU5HKQogICAgICAgIHJldHVybiBQcm9jZWR1cmVDb2RpbmdzCiAgICApCiAgKQoKICBkZWZpbmUgIlRydWUiOiB0cnVlCgogZGVmaW5lICJNZWRpY2F0aW9uVHVwbGVMaXN0IjogR2V0TWVkaWNhdGlvbnNUdXBsZUxpc3QoW01lZGljYXRpb25TdGF0ZW1lbnRdKQogZGVmaW5lIGZ1bmN0aW9uIEdldE1lZGljYXRpb25zVHVwbGVMaXN0KE1lZFN0YXRlbWVudExpc3QgTGlzdDxNZWRpY2F0aW9uU3RhdGVtZW50Pik6CiAgICBkaXN0aW5jdCgKICAgICAgZmxhdHRlbigKICAgICAgICBNZWRTdGF0ZW1lbnRMaXN0IE1lZFN0YXRlbWVudAogICAgICAgICAgbGV0IE1lZGljYXRpb25MaXN0OgogICAgICAgICAgICAoTWVkU3RhdGVtZW50Lm1lZGljYXRpb24uY29kaW5nKSBDT0RJTkcKICAgICAgICAgICAgcmV0dXJuIFR1cGxlIHsKICAgICAgICAgICAgICBSeE5vcm06IEZISVJIZWxwZXJzLlRvQ29kZShDT0RJTkcpLmRpc3BsYXkgKyAnLScgKyBGSElSSGVscGVycy5Ub0NvZGUoQ09ESU5HKS5jb2RlICwKICAgICAgICAgICAgICBEZXNjcmlwdGlvbjogRkhJUkhlbHBlcnMuVG9Db2RlKENPRElORykuZGlzcGxheQogICAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gTWVkaWNhdGlvbkxpc3QgIAogICAgICApCiAgICApICAgCgoK" + }, + { + "contentType": "application/elm+json", + "data": "eyJsaWJyYXJ5Ijp7ImFubm90YXRpb24iOlt7InRyYW5zbGF0b3JPcHRpb25zIjoiIiwidHlwZSI6IkNxbFRvRWxtSW5mbyJ9LHsibGlicmFyeUlkIjoiQmFzaWNDbGluaWNhbEluZm9QcmVwb3B1bGF0aW9uIiwibGlicmFyeVZlcnNpb24iOiIwLjEuMCIsInN0YXJ0TGluZSI6MTgsInN0YXJ0Q2hhciI6MTI0LCJlbmRMaW5lIjoxOCwiZW5kQ2hhciI6MTI4LCJtZXNzYWdlIjoiTGlzdC12YWx1ZWQgZXhwcmVzc2lvbiB3YXMgZGVtb3RlZCB0byBhIHNpbmdsZXRvbi4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJ3YXJuaW5nIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IkJhc2ljQ2xpbmljYWxJbmZvUHJlcG9wdWxhdGlvbiIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjE4LCJzdGFydENoYXIiOjEyNCwiZW5kTGluZSI6MTgsImVuZENoYXIiOjEyOCwibWVzc2FnZSI6Ikxpc3QtdmFsdWVkIGV4cHJlc3Npb24gd2FzIGRlbW90ZWQgdG8gYSBzaW5nbGV0b24uIiwiZXJyb3JUeXBlIjoic2VtYW50aWMiLCJlcnJvclNldmVyaXR5Ijoid2FybmluZyIsInR5cGUiOiJDcWxUb0VsbUVycm9yIn0seyJsaWJyYXJ5SWQiOiJCYXNpY0NsaW5pY2FsSW5mb1ByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjoxMDYsInN0YXJ0Q2hhciI6NTEsImVuZExpbmUiOjEwNiwiZW5kQ2hhciI6NTQsIm1lc3NhZ2UiOiJMaXN0LXZhbHVlZCBleHByZXNzaW9uIHdhcyBkZW1vdGVkIHRvIGEgc2luZ2xldG9uLiIsImVycm9yVHlwZSI6InNlbWFudGljIiwiZXJyb3JTZXZlcml0eSI6Indhcm5pbmciLCJ0eXBlIjoiQ3FsVG9FbG1FcnJvciJ9LHsibGlicmFyeUlkIjoiQmFzaWNDbGluaWNhbEluZm9QcmVwb3B1bGF0aW9uIiwibGlicmFyeVZlcnNpb24iOiIwLjEuMCIsInN0YXJ0TGluZSI6MTIxLCJzdGFydENoYXIiOjQzLCJlbmRMaW5lIjoxMjEsImVuZENoYXIiOjQ2LCJtZXNzYWdlIjoiTGlzdC12YWx1ZWQgZXhwcmVzc2lvbiB3YXMgZGVtb3RlZCB0byBhIHNpbmdsZXRvbi4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJ3YXJuaW5nIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IkJhc2ljQ2xpbmljYWxJbmZvUHJlcG9wdWxhdGlvbiIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjEyMiwic3RhcnRDaGFyIjozOSwiZW5kTGluZSI6MTIyLCJlbmRDaGFyIjo0MiwibWVzc2FnZSI6Ikxpc3QtdmFsdWVkIGV4cHJlc3Npb24gd2FzIGRlbW90ZWQgdG8gYSBzaW5nbGV0b24uIiwiZXJyb3JUeXBlIjoic2VtYW50aWMiLCJlcnJvclNldmVyaXR5Ijoid2FybmluZyIsInR5cGUiOiJDcWxUb0VsbUVycm9yIn1dLCJpZGVudGlmaWVyIjp7ImlkIjoiQmFzaWNDbGluaWNhbEluZm9QcmVwb3B1bGF0aW9uIiwidmVyc2lvbiI6IjAuMS4wIn0sInNjaGVtYUlkZW50aWZpZXIiOnsiaWQiOiJ1cm46aGw3LW9yZzplbG0iLCJ2ZXJzaW9uIjoicjEifSwidXNpbmdzIjp7ImRlZiI6W3sibG9jYWxJZGVudGlmaWVyIjoiU3lzdGVtIiwidXJpIjoidXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIn0seyJsb2NhbElkZW50aWZpZXIiOiJGSElSIiwidXJpIjoiaHR0cDovL2hsNy5vcmcvZmhpciIsInZlcnNpb24iOiI0LjAuMCJ9XX0sImluY2x1ZGVzIjp7ImRlZiI6W3sibG9jYWxJZGVudGlmaWVyIjoiRkhJUkhlbHBlcnMiLCJwYXRoIjoiRkhJUkhlbHBlcnMiLCJ2ZXJzaW9uIjoiNC4wLjAifV19LCJwYXJhbWV0ZXJzIjp7ImRlZiI6W3sibmFtZSI6ImRldmljZV9yZXF1ZXN0IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJwYXJhbWV0ZXJUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1EZXZpY2VSZXF1ZXN0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fSx7Im5hbWUiOiJzZXJ2aWNlX3JlcXVlc3QiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInBhcmFtZXRlclR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVNlcnZpY2VSZXF1ZXN0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fSx7Im5hbWUiOiJtZWRpY2F0aW9uX3JlcXVlc3QiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInBhcmFtZXRlclR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU1lZGljYXRpb25SZXF1ZXN0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LCJjb2RlU3lzdGVtcyI6eyJkZWYiOlt7Im5hbWUiOiJITDctVjItMDEzNiIsImlkIjoiaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS92Mi0wMTM2IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMifV19LCJjb2RlcyI6eyJkZWYiOlt7Im5hbWUiOiJZZXMiLCJpZCI6IlkiLCJkaXNwbGF5IjoiWWVzIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJjb2RlU3lzdGVtIjp7Im5hbWUiOiJITDctVjItMDEzNiJ9fSx7Im5hbWUiOiJObyIsImlkIjoiTiIsImRpc3BsYXkiOiJObyIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiY29kZVN5c3RlbSI6eyJuYW1lIjoiSEw3LVYyLTAxMzYifX1dfSwiY29udGV4dHMiOnsiZGVmIjpbeyJuYW1lIjoiUGF0aWVudCJ9XX0sInN0YXRlbWVudHMiOnsiZGVmIjpbeyJuYW1lIjoiUGF0aWVudCIsImNvbnRleHQiOiJQYXRpZW50IiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsiZGF0YVR5cGUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1QYXRpZW50IiwidHlwZSI6IlJldHJpZXZlIn19fSx7Im5hbWUiOiJUb2RheSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJUb2RheSJ9fSx7Im5hbWUiOiJPcmRlcmluZ1Byb3ZpZGVyUmVmZXJlbmNlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IkNvYWxlc2NlIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJyZWZlcmVuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InBlcmZvcm1lciIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiZGV2aWNlX3JlcXVlc3QiLCJ0eXBlIjoiUGFyYW1ldGVyUmVmIn19fX0seyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IiR0aGlzIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJwZXJmb3JtZXIiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InNlcnZpY2VfcmVxdWVzdCIsInR5cGUiOiJQYXJhbWV0ZXJSZWYifX19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6InJlZmVyZW5jZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoicmVmZXJlbmNlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19fV0sIndoZXJlIjp7InR5cGUiOiJOb3QiLCJvcGVyYW5kIjp7InR5cGUiOiJJc051bGwiLCJvcGVyYW5kIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX19LHsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJyZWZlcmVuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InBlcmZvcm1lciIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoibWVkaWNhdGlvbl9yZXF1ZXN0IiwidHlwZSI6IlBhcmFtZXRlclJlZiJ9fX19XX19LHsibmFtZSI6Ik9yZGVyaW5nUHJvdmlkZXIiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6InByYWN0aXRpb25lciIsImV4cHJlc3Npb24iOnsiZGF0YVR5cGUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1QcmFjdGl0aW9uZXIiLCJ0eXBlIjoiUmV0cmlldmUifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiUHJhY3RpdGlvbmVyLyIsInR5cGUiOiJMaXRlcmFsIn0seyJuYW1lIjoiVG9TdHJpbmciLCJsaWJyYXJ5TmFtZSI6IkZISVJIZWxwZXJzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sicGF0aCI6ImlkIiwic2NvcGUiOiJwcmFjdGl0aW9uZXIiLCJ0eXBlIjoiUHJvcGVydHkifV19XX0seyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlclJlZmVyZW5jZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn1dfX19fSx7Im5hbWUiOiJSZXF1ZXN0RW5jb3VudGVyUmVmZXJlbmNlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IkNvYWxlc2NlIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJyZWZlcmVuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImVuY291bnRlciIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiZGV2aWNlX3JlcXVlc3QiLCJ0eXBlIjoiUGFyYW1ldGVyUmVmIn19fX0seyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InJlZmVyZW5jZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoiZW5jb3VudGVyIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJzZXJ2aWNlX3JlcXVlc3QiLCJ0eXBlIjoiUGFyYW1ldGVyUmVmIn19fX0seyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InJlZmVyZW5jZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoiZW5jb3VudGVyIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJtZWRpY2F0aW9uX3JlcXVlc3QiLCJ0eXBlIjoiUGFyYW1ldGVyUmVmIn19fX1dfX0seyJuYW1lIjoiUmVxdWVzdEVuY291bnRlciIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJFIiwiZXhwcmVzc2lvbiI6eyJkYXRhVHlwZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUVuY291bnRlciIsInR5cGUiOiJSZXRyaWV2ZSJ9fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJFcXVhbCIsIm9wZXJhbmQiOlt7InR5cGUiOiJDb25jYXRlbmF0ZSIsIm9wZXJhbmQiOlt7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJFbmNvdW50ZXIvIiwidHlwZSI6IkxpdGVyYWwifSx7Im5hbWUiOiJUb1N0cmluZyIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJwYXRoIjoiaWQiLCJzY29wZSI6IkUiLCJ0eXBlIjoiUHJvcGVydHkifV19XX0seyJuYW1lIjoiUmVxdWVzdEVuY291bnRlclJlZmVyZW5jZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn1dfX19LHsibmFtZSI6IlJlcXVlc3RFbmNvdW50ZXJEYXRlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IklmIiwiY29uZGl0aW9uIjp7InR5cGUiOiJFeGlzdHMiLCJvcGVyYW5kIjp7Im5hbWUiOiJSZXF1ZXN0RW5jb3VudGVyIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifX0sInRoZW4iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IiR0aGlzIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiIkdGhpcyIsImV4cHJlc3Npb24iOnsibmFtZSI6IlJlcXVlc3RFbmNvdW50ZXIiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9fV0sIndoZXJlIjp7InR5cGUiOiJOb3QiLCJvcGVyYW5kIjp7InR5cGUiOiJJc051bGwiLCJvcGVyYW5kIjp7InBhdGgiOiJwZXJpb2QiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX0sInJldHVybiI6eyJkaXN0aW5jdCI6ZmFsc2UsImV4cHJlc3Npb24iOnsicGF0aCI6InBlcmlvZCIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fX1dLCJ3aGVyZSI6eyJ0eXBlIjoiTm90Iiwib3BlcmFuZCI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJwYXRoIjoic3RhcnQiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX0sInJldHVybiI6eyJkaXN0aW5jdCI6ZmFsc2UsImV4cHJlc3Npb24iOnsicGF0aCI6InN0YXJ0IiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19fV0sIndoZXJlIjp7InR5cGUiOiJOb3QiLCJvcGVyYW5kIjp7InR5cGUiOiJJc051bGwiLCJvcGVyYW5kIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX0sImVsc2UiOnsidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJ0eXBlIjoiTnVsbCJ9LCJhc1R5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9RGF0ZVRpbWUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fX19LHsibmFtZSI6IlJlcXVlc3RFbmNvdW50ZXJQYXJ0aWNpcGFudHMiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiRmxhdHRlbiIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IiR0aGlzIiwiZXhwcmVzc2lvbiI6eyJuYW1lIjoiUmVxdWVzdEVuY291bnRlciIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6InBhcnRpY2lwYW50IiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19LCJyZXR1cm4iOnsiZGlzdGluY3QiOmZhbHNlLCJleHByZXNzaW9uIjp7InBhdGgiOiJwYXJ0aWNpcGFudCIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fX19LHsibmFtZSI6IlJlcXVlc3RFbmNvdW50ZXJGaXJzdFBhcnRpY2lwYW50UmVmZXJlbmNlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IklmIiwiY29uZGl0aW9uIjp7InR5cGUiOiJFeGlzdHMiLCJvcGVyYW5kIjp7Im5hbWUiOiJSZXF1ZXN0RW5jb3VudGVyUGFydGljaXBhbnRzIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifX0sInRoZW4iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJyZWZlcmVuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImluZGl2aWR1YWwiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsidHlwZSI6IkluZGV4ZXIiLCJvcGVyYW5kIjpbeyJuYW1lIjoiUmVxdWVzdEVuY291bnRlclBhcnRpY2lwYW50cyIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLCJ2YWx1ZSI6IjAiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19fX0sImVsc2UiOnsiYXNUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InR5cGUiOiJOdWxsIn19fX0seyJuYW1lIjoiSXNFbmNvdW50ZXJQcm92aWRlclNhbWVBc09yZGVyaW5nUHJvdmlkZXIiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlclJlZmVyZW5jZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn0seyJuYW1lIjoiUmVxdWVzdEVuY291bnRlckZpcnN0UGFydGljaXBhbnRSZWZlcmVuY2UiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9XX19LHsibmFtZSI6Ik9yZGVyaW5nUHJvdmlkZXJOYW1lIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IlNpbmdsZXRvbkZyb20iLCJvcGVyYW5kIjp7InR5cGUiOiJVbmlvbiIsIm9wZXJhbmQiOlt7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJuYW1lIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoibmFtZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlciIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJFcXVhbCIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoidXNlIiwic2NvcGUiOiJuYW1lIiwidHlwZSI6IlByb3BlcnR5In19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6Im9mZmljaWFsIiwidHlwZSI6IkxpdGVyYWwifV19fSx7InBhdGgiOiJuYW1lIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJPcmRlcmluZ1Byb3ZpZGVyIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifX1dfX19LHsibmFtZSI6Ik9yZGVyaW5nUHJvdmlkZXJMYXN0TmFtZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoiZmFtaWx5IiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJPcmRlcmluZ1Byb3ZpZGVyTmFtZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fX0seyJuYW1lIjoiR2V0TWlkZGxlSW5pdGlhbHMiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiU3Vic3RyaW5nIiwic3RyaW5nVG9TdWIiOnsidHlwZSI6IkNvbWJpbmUiLCJzb3VyY2UiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6ImdpdmVuIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoiZ2l2ZW4iLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6Im5hbWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fX1dLCJyZWxhdGlvbnNoaXAiOltdLCJyZXR1cm4iOnsiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiU3Vic3RyaW5nIiwic3RyaW5nVG9TdWIiOnsicGF0aCI6InZhbHVlIiwic2NvcGUiOiJnaXZlbiIsInR5cGUiOiJQcm9wZXJ0eSJ9LCJzdGFydEluZGV4Ijp7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9SW50ZWdlciIsInZhbHVlIjoiMCIsInR5cGUiOiJMaXRlcmFsIn0sImxlbmd0aCI6eyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLCJ2YWx1ZSI6IjEiLCJ0eXBlIjoiTGl0ZXJhbCJ9fX19LCJzZXBhcmF0b3IiOnsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6IiwgIiwidHlwZSI6IkxpdGVyYWwifX0sInN0YXJ0SW5kZXgiOnsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIiwidmFsdWUiOiIzIiwidHlwZSI6IkxpdGVyYWwifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJuYW1lIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUh1bWFuTmFtZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJPcmRlcmluZ1Byb3ZpZGVyTWlkZGxlSW5pdGlhbCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJHZXRNaWRkbGVJbml0aWFscyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7Im5hbWUiOiJPcmRlcmluZ1Byb3ZpZGVyTmFtZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn1dfX0seyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlckZpcnN0TmFtZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJ0eXBlIjoiSW5kZXhlciIsIm9wZXJhbmQiOlt7InBhdGgiOiJnaXZlbiIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlck5hbWUiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9fSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9SW50ZWdlciIsInZhbHVlIjoiMCIsInR5cGUiOiJMaXRlcmFsIn1dfX19LHsibmFtZSI6Ik9yZGVyaW5nUHJvdmlkZXJGdWxsTmFtZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJDb25jYXRlbmF0ZSIsIm9wZXJhbmQiOlt7InR5cGUiOiJDb25jYXRlbmF0ZSIsIm9wZXJhbmQiOlt7InR5cGUiOiJDb25jYXRlbmF0ZSIsIm9wZXJhbmQiOlt7InR5cGUiOiJDb25jYXRlbmF0ZSIsIm9wZXJhbmQiOlt7Im5hbWUiOiJPcmRlcmluZ1Byb3ZpZGVyRmlyc3ROYW1lIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiIgIiwidHlwZSI6IkxpdGVyYWwifV19LHsibmFtZSI6Ik9yZGVyaW5nUHJvdmlkZXJNaWRkbGVJbml0aWFsIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifV19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6IiAiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX0seyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlckxhc3ROYW1lIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifV19fSx7Im5hbWUiOiJPcmRlcmluZ1Byb3ZpZGVyTlBJIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6ImlkZW50aWZpZXIiLCJleHByZXNzaW9uIjp7InBhdGgiOiJpZGVudGlmaWVyIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJPcmRlcmluZ1Byb3ZpZGVyIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifX19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJzeXN0ZW0iLCJzY29wZSI6ImlkZW50aWZpZXIiLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiaHR0cDovL2hsNy5vcmcvZmhpci9zaWQvdXMtbnBpIiwidHlwZSI6IkxpdGVyYWwifV19fX19fX0seyJuYW1lIjoiRW5jb3VudGVyUHJvdmlkZXJMYXN0TmFtZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJJZiIsImNvbmRpdGlvbiI6eyJuYW1lIjoiSXNFbmNvdW50ZXJQcm92aWRlclNhbWVBc09yZGVyaW5nUHJvdmlkZXIiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9LCJ0aGVuIjp7Im5hbWUiOiJPcmRlcmluZ1Byb3ZpZGVyTGFzdE5hbWUiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9LCJlbHNlIjp7ImFzVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJ0eXBlIjoiTnVsbCJ9fX19LHsibmFtZSI6IkVuY291bnRlclByb3ZpZGVyTWlkZGxlSW5pdGlhbCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJJZiIsImNvbmRpdGlvbiI6eyJuYW1lIjoiSXNFbmNvdW50ZXJQcm92aWRlclNhbWVBc09yZGVyaW5nUHJvdmlkZXIiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9LCJ0aGVuIjp7Im5hbWUiOiJPcmRlcmluZ1Byb3ZpZGVyTWlkZGxlSW5pdGlhbCIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn0sImVsc2UiOnsiYXNUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InR5cGUiOiJOdWxsIn19fX0seyJuYW1lIjoiRW5jb3VudGVyUHJvdmlkZXJGaXJzdE5hbWUiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiSWYiLCJjb25kaXRpb24iOnsibmFtZSI6IklzRW5jb3VudGVyUHJvdmlkZXJTYW1lQXNPcmRlcmluZ1Byb3ZpZGVyIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifSwidGhlbiI6eyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlckZpcnN0TmFtZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn0sImVsc2UiOnsiYXNUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InR5cGUiOiJOdWxsIn19fX0seyJuYW1lIjoiRW5jb3VudGVyUHJvdmlkZXJGdWxsTmFtZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJJZiIsImNvbmRpdGlvbiI6eyJuYW1lIjoiSXNFbmNvdW50ZXJQcm92aWRlclNhbWVBc09yZGVyaW5nUHJvdmlkZXIiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9LCJ0aGVuIjp7Im5hbWUiOiJPcmRlcmluZ1Byb3ZpZGVyRnVsbE5hbWUiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9LCJlbHNlIjp7ImFzVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJ0eXBlIjoiTnVsbCJ9fX19LHsibmFtZSI6IkVuY291bnRlclByb3ZpZGVyTlBJIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IklmIiwiY29uZGl0aW9uIjp7Im5hbWUiOiJJc0VuY291bnRlclByb3ZpZGVyU2FtZUFzT3JkZXJpbmdQcm92aWRlciIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn0sInRoZW4iOnsibmFtZSI6Ik9yZGVyaW5nUHJvdmlkZXJOUEkiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9LCJlbHNlIjp7ImFzVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJ0eXBlIjoiTnVsbCJ9fX19LHsibmFtZSI6IkFuc3dlclllcyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJZZXMiLCJ0eXBlIjoiQ29kZVJlZiJ9fSx7Im5hbWUiOiJBbnN3ZXJObyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJObyIsInR5cGUiOiJDb2RlUmVmIn19LHsibmFtZSI6IkNvbmZpcm1lZEFsbGVyZ2llcyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJDIiwiZXhwcmVzc2lvbiI6eyJuYW1lIjoiQWxsZXJneUxpc3QiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJFcXVhbCIsIm9wZXJhbmQiOlt7Im5hbWUiOiJUb1N0cmluZyIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IiR0aGlzIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoiY29kaW5nIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJ2ZXJpZmljYXRpb25TdGF0dXMiLCJzY29wZSI6IkMiLCJ0eXBlIjoiUHJvcGVydHkifX19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6ImNvZGUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX0sInJldHVybiI6eyJkaXN0aW5jdCI6ZmFsc2UsImV4cHJlc3Npb24iOnsicGF0aCI6ImNvZGUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX19XX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiY29uZmlybWVkIiwidHlwZSI6IkxpdGVyYWwifV19fSwib3BlcmFuZCI6W3sibmFtZSI6IkFsbGVyZ3lMaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUFsbGVyZ3lJbnRvbGVyYW5jZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19XX0seyJuYW1lIjoiQ29kZXNGcm9tQWxsZXJnaWVzIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IkRpc3RpbmN0Iiwib3BlcmFuZCI6eyJ0eXBlIjoiRmxhdHRlbiIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IkMiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJBbGxlcmd5TGlzdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19XSwibGV0IjpbeyJpZGVudGlmaWVyIjoiQWxsZXJneUNvZGluZ3MiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJDT0RJTkciLCJleHByZXNzaW9uIjp7InBhdGgiOiJjb2RpbmciLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImNvZGUiLCJzY29wZSI6IkMiLCJ0eXBlIjoiUHJvcGVydHkifX19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkluIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJzeXN0ZW0iLCJzY29wZSI6IkNPRElORyIsInR5cGUiOiJQcm9wZXJ0eSJ9fSx7InR5cGUiOiJMaXN0IiwiZWxlbWVudCI6W3sidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6Imh0dHA6Ly93d3cubmxtLm5paC5nb3YvcmVzZWFyY2gvdW1scy9yeG5vcm0iLCJ0eXBlIjoiTGl0ZXJhbCJ9XX1dfSwicmV0dXJuIjp7ImV4cHJlc3Npb24iOnsibmFtZSI6IlRvQ29kZSIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJuYW1lIjoiQ09ESU5HIiwidHlwZSI6IkFsaWFzUmVmIn1dfX19fV0sInJlbGF0aW9uc2hpcCI6W10sInJldHVybiI6eyJleHByZXNzaW9uIjp7Im5hbWUiOiJBbGxlcmd5Q29kaW5ncyIsInR5cGUiOiJRdWVyeUxldFJlZiJ9fX19fSwib3BlcmFuZCI6W3sibmFtZSI6IkFsbGVyZ3lMaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUFsbGVyZ3lJbnRvbGVyYW5jZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19XX0seyJuYW1lIjoiQWxsZXJnaWVzIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsibmFtZSI6IkNvZGVzRnJvbUFsbGVyZ2llcyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7Im5hbWUiOiJDb25maXJtZWRBbGxlcmdpZXMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJkYXRhVHlwZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUFsbGVyZ3lJbnRvbGVyYW5jZSIsInR5cGUiOiJSZXRyaWV2ZSJ9XX1dfX0seyJuYW1lIjoiQWN0aXZlQ29uZmlybWVkRGlhZ25vc2VzIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IkRpc3RpbmN0Iiwib3BlcmFuZCI6eyJ0eXBlIjoiRmxhdHRlbiIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IkMiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJDb25kTGlzdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19XSwibGV0IjpbeyJpZGVudGlmaWVyIjoiRGlhZ25vc2VzQ29kaW5ncyIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IkNPRElORyIsImV4cHJlc3Npb24iOnsicGF0aCI6ImNvZGluZyIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoiY29kZSIsInNjb3BlIjoiQyIsInR5cGUiOiJQcm9wZXJ0eSJ9fX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiSW4iLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InN5c3RlbSIsInNjb3BlIjoiQ09ESU5HIiwidHlwZSI6IlByb3BlcnR5In19LHsidHlwZSI6Ikxpc3QiLCJlbGVtZW50IjpbeyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiaHR0cDovL2hsNy5vcmcvZmhpci9zaWQvaWNkLTEwIiwidHlwZSI6IkxpdGVyYWwifSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJodHRwOi8vaGw3Lm9yZy9maGlyL3NpZC9pY2QtMTAtY20iLCJ0eXBlIjoiTGl0ZXJhbCJ9LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6Imh0dHA6Ly9zbm9tZWQuaW5mby9zY3QiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX1dfSwicmV0dXJuIjp7ImV4cHJlc3Npb24iOnsibmFtZSI6IlRvQ29kZSIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJuYW1lIjoiQ09ESU5HIiwidHlwZSI6IkFsaWFzUmVmIn1dfX19fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJBbmQiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiQW5kIiwib3BlcmFuZCI6W3sidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sibmFtZSI6IlRvU3RyaW5nIiwibGlicmFyeU5hbWUiOiJGSElSSGVscGVycyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7InR5cGUiOiJTaW5nbGV0b25Gcm9tIiwib3BlcmFuZCI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJjb2RpbmciLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InZlcmlmaWNhdGlvblN0YXR1cyIsInNjb3BlIjoiQyIsInR5cGUiOiJQcm9wZXJ0eSJ9fX1dLCJ3aGVyZSI6eyJ0eXBlIjoiTm90Iiwib3BlcmFuZCI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJwYXRoIjoiY29kZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoiY29kZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fX1dfSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJjb25maXJtZWQiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX0seyJ0eXBlIjoiSW4iLCJvcGVyYW5kIjpbeyJuYW1lIjoiVG9TdHJpbmciLCJsaWJyYXJ5TmFtZSI6IkZISVJIZWxwZXJzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sidHlwZSI6IlNpbmdsZXRvbkZyb20iLCJvcGVyYW5kIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiIkdGhpcyIsImV4cHJlc3Npb24iOnsicGF0aCI6ImNvZGluZyIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoiY2xpbmljYWxTdGF0dXMiLCJzY29wZSI6IkMiLCJ0eXBlIjoiUHJvcGVydHkifX19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6ImNvZGUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX0sInJldHVybiI6eyJkaXN0aW5jdCI6ZmFsc2UsImV4cHJlc3Npb24iOnsicGF0aCI6ImNvZGUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX19XX0seyJ0eXBlIjoiTGlzdCIsImVsZW1lbnQiOlt7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJhY3RpdmUiLCJ0eXBlIjoiTGl0ZXJhbCJ9LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6InJlbGFwc2UiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX1dfV19LHsidHlwZSI6IkV4aXN0cyIsIm9wZXJhbmQiOnsibmFtZSI6IkRpYWdub3Nlc0NvZGluZ3MiLCJ0eXBlIjoiUXVlcnlMZXRSZWYifX1dfSwicmV0dXJuIjp7ImV4cHJlc3Npb24iOnsibmFtZSI6IkRpYWdub3Nlc0NvZGluZ3MiLCJ0eXBlIjoiUXVlcnlMZXRSZWYifX19fX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJDb25kTGlzdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJMaXN0VHlwZVNwZWNpZmllciIsImVsZW1lbnRUeXBlIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db25kaXRpb24iLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fV19LHsibmFtZSI6IkFsbERpYWdub3NlcyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJBY3RpdmVDb25maXJtZWREaWFnbm9zZXMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJkYXRhVHlwZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUNvbmRpdGlvbiIsInR5cGUiOiJSZXRyaWV2ZSJ9XX19LHsibmFtZSI6IlByb2NlZHVyZUNvZGluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJEaXN0aW5jdCIsIm9wZXJhbmQiOnsidHlwZSI6IkZsYXR0ZW4iLCJvcGVyYW5kIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJQIiwiZXhwcmVzc2lvbiI6eyJuYW1lIjoiUHJvY2VkdXJlTGlzdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19XSwibGV0IjpbeyJpZGVudGlmaWVyIjoiUHJvY2VkdXJlQ29kaW5ncyIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IkNPRElORyIsImV4cHJlc3Npb24iOnsicGF0aCI6ImNvZGluZyIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoiY29kZSIsInNjb3BlIjoiUCIsInR5cGUiOiJQcm9wZXJ0eSJ9fX1dLCJyZWxhdGlvbnNoaXAiOltdLCJyZXR1cm4iOnsiZXhwcmVzc2lvbiI6eyJuYW1lIjoiVG9Db2RlIiwibGlicmFyeU5hbWUiOiJGSElSSGVscGVycyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7Im5hbWUiOiJDT0RJTkciLCJ0eXBlIjoiQWxpYXNSZWYifV19fX19XSwicmVsYXRpb25zaGlwIjpbXSwicmV0dXJuIjp7ImV4cHJlc3Npb24iOnsibmFtZSI6IlByb2NlZHVyZUNvZGluZ3MiLCJ0eXBlIjoiUXVlcnlMZXRSZWYifX19fX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJQcm9jZWR1cmVMaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVByb2NlZHVyZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19XX0seyJuYW1lIjoiQWxsUHJvY2VkdXJlcyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJQcm9jZWR1cmVDb2RpbmciLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJkYXRhVHlwZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVByb2NlZHVyZSIsInR5cGUiOiJSZXRyaWV2ZSJ9XX19LHsibmFtZSI6IlRydWUiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUJvb2xlYW4iLCJ2YWx1ZSI6InRydWUiLCJ0eXBlIjoiTGl0ZXJhbCJ9fSx7Im5hbWUiOiJHZXRNZWRpY2F0aW9uc1R1cGxlTGlzdCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJEaXN0aW5jdCIsIm9wZXJhbmQiOnsidHlwZSI6IkZsYXR0ZW4iLCJvcGVyYW5kIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJNZWRTdGF0ZW1lbnQiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJNZWRTdGF0ZW1lbnRMaXN0IiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dLCJsZXQiOlt7ImlkZW50aWZpZXIiOiJNZWRpY2F0aW9uTGlzdCIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IkNPRElORyIsImV4cHJlc3Npb24iOnsicGF0aCI6ImNvZGluZyIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoibWVkaWNhdGlvbiIsInNjb3BlIjoiTWVkU3RhdGVtZW50IiwidHlwZSI6IlByb3BlcnR5In19fV0sInJlbGF0aW9uc2hpcCI6W10sInJldHVybiI6eyJleHByZXNzaW9uIjp7InR5cGUiOiJUdXBsZSIsImVsZW1lbnQiOlt7Im5hbWUiOiJSeE5vcm0iLCJ2YWx1ZSI6eyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJwYXRoIjoiZGlzcGxheSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiVG9Db2RlIiwibGlicmFyeU5hbWUiOiJGSElSSGVscGVycyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7Im5hbWUiOiJDT0RJTkciLCJ0eXBlIjoiQWxpYXNSZWYifV19fSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiItIiwidHlwZSI6IkxpdGVyYWwifV19LHsicGF0aCI6ImNvZGUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IlRvQ29kZSIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJuYW1lIjoiQ09ESU5HIiwidHlwZSI6IkFsaWFzUmVmIn1dfX1dfX0seyJuYW1lIjoiRGVzY3JpcHRpb24iLCJ2YWx1ZSI6eyJwYXRoIjoiZGlzcGxheSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiVG9Db2RlIiwibGlicmFyeU5hbWUiOiJGSElSSGVscGVycyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7Im5hbWUiOiJDT0RJTkciLCJ0eXBlIjoiQWxpYXNSZWYifV19fX1dfX19fV0sInJlbGF0aW9uc2hpcCI6W10sInJldHVybiI6eyJleHByZXNzaW9uIjp7Im5hbWUiOiJNZWRpY2F0aW9uTGlzdCIsInR5cGUiOiJRdWVyeUxldFJlZiJ9fX19fSwib3BlcmFuZCI6W3sibmFtZSI6Ik1lZFN0YXRlbWVudExpc3QiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJ0eXBlIjoiTGlzdFR5cGVTcGVjaWZpZXIiLCJlbGVtZW50VHlwZSI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TWVkaWNhdGlvblN0YXRlbWVudCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19XX0seyJuYW1lIjoiTWVkaWNhdGlvblR1cGxlTGlzdCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJHZXRNZWRpY2F0aW9uc1R1cGxlTGlzdCIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7ImRhdGFUeXBlIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TWVkaWNhdGlvblN0YXRlbWVudCIsInR5cGUiOiJSZXRyaWV2ZSJ9XX19XX19fQ==" + } +] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-BasicPatientInfo-prepopulation.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-BasicPatientInfo-prepopulation.json new file mode 100644 index 00000000..0a7eaf1c --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-BasicPatientInfo-prepopulation.json @@ -0,0 +1,35 @@ +{ + "resourceType": "Library", + "id": "BasicPatientInfo-prepopulation", + "url": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicPatientInfo-prepopulation", + "name": "BasicPatientInfo-prepopulation", + "version": "0.2.0", + "title": "Basic Patient Info FHIR R4", + "status": "draft", + "type": { + "coding": [ + { + "code": "logic-library" + } + ] + }, + "relatedArtifact": [ + { + "type": "depends-on", + "resource": "Library/FHIRHelpers-4.0.0" + } + ], + "dataRequirement": [ + { "type": "Coverage" } + ], + "content": [ + { + "contentType": "text/cql", + "data": "bGlicmFyeSBCYXNpY1BhdGllbnRJbmZvUHJlcG9wdWxhdGlvbiB2ZXJzaW9uICcwLjIuMCcKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMCcKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMCcgY2FsbGVkIEZISVJIZWxwZXJzCgpwYXJhbWV0ZXIgZGV2aWNlX3JlcXVlc3QgRGV2aWNlUmVxdWVzdApwYXJhbWV0ZXIgc2VydmljZV9yZXF1ZXN0IFNlcnZpY2VSZXF1ZXN0CnBhcmFtZXRlciBtZWRpY2F0aW9uX3JlcXVlc3QgTWVkaWNhdGlvblJlcXVlc3QKCmNvbnRleHQgUGF0aWVudAoKZGVmaW5lIGZ1bmN0aW9uIEdldE1pZGRsZUluaXRpYWxzKG5hbWUgRkhJUi5IdW1hbk5hbWUpOgogIFN1YnN0cmluZyhDb21iaW5lKChuYW1lLmdpdmVuIGdpdmVuIHJldHVybiBTdWJzdHJpbmcoZ2l2ZW4udmFsdWUsMCwxKSksJywgJyksMykKCmRlZmluZSBUb2RheTogVG9kYXkoKQoKLy8gR3JhYiBwYXRpZW50IEZISVIgSHVtYW5OYW1lCmRlZmluZSBOYW1lOiBzaW5nbGV0b24gZnJvbSAoUGF0aWVudC5uYW1lIG5hbWUgd2hlcmUgbmFtZS51c2UudmFsdWUgPSAnb2ZmaWNpYWwnKQoKLy8gRXh0cmFjdCB1c2VmdWwgbmFtZSBlbGVtZW50cwpkZWZpbmUgTGFzdE5hbWU6ICJOYW1lIi5mYW1pbHkudmFsdWUKZGVmaW5lIE1pZGRsZUluaXRpYWw6IEdldE1pZGRsZUluaXRpYWxzKCJOYW1lIikKZGVmaW5lIEZpcnN0TmFtZTogIk5hbWUiLmdpdmVuWzBdLnZhbHVlCgpkZWZpbmUgRnVsbE5hbWU6CiAgQ29hbGVzY2UoIkZpcnN0TmFtZSIgKyAnICcgKyAiTWlkZGxlSW5pdGlhbCIgKyAnICcgKyAiTGFzdE5hbWUiLCAiRmlyc3ROYW1lIiArICcgJyArICJMYXN0TmFtZSIpCgpkZWZpbmUgR2VuZGVyOiBQYXRpZW50LmdlbmRlci52YWx1ZQpkZWZpbmUgRGF0ZU9mQmlydGg6IFBhdGllbnQuYmlydGhEYXRlLnZhbHVlCgpkZWZpbmUgIlJlcXVlc3RDb3ZlcmFnZSI6IENvYWxlc2NlKGRldmljZV9yZXF1ZXN0Lmluc3VyYW5jZSwgc2VydmljZV9yZXF1ZXN0Lmluc3VyYW5jZSwgbWVkaWNhdGlvbl9yZXF1ZXN0Lmluc3VyYW5jZSkKCmRlZmluZSBDb3ZlcmFnZVJlc291cmNlOiBzaW5nbGV0b24gZnJvbSAoCiAgW0NvdmVyYWdlXSBjb3ZlcmFnZQogICAgLy8gcHVsbCBjb3ZlcmFnZSByZXNvdXJjZSBpZCBmcm9tIHRoZSBkZXZpY2UgcmVxdWVzdCBpbnN1cmFuY2UgZXh0ZW5zaW9uCiAgICB3aGVyZSAoJ0NvdmVyYWdlLycgKyBjb3ZlcmFnZS5pZCkgPSBSZXF1ZXN0Q292ZXJhZ2VbMF0ucmVmZXJlbmNlLnZhbHVlKQoKZGVmaW5lIE1lZGljYXJlSWQ6ICJDb3ZlcmFnZVJlc291cmNlIi5zdWJzY3JpYmVySWQudmFsdWUKCi8vIEdldCBQYXRpZW50IGhvbWUgYWRkcmVzcwpkZWZpbmUgSG9tZUFkZHJlc3M6IHNpbmdsZXRvbiBmcm9tIChQYXRpZW50LmFkZHJlc3MgYWRkcmVzcyB3aGVyZSBhZGRyZXNzLnVzZS52YWx1ZSA9ICdob21lJykKZGVmaW5lIExpbmU6IEhvbWVBZGRyZXNzLmxpbmVbMF0udmFsdWUKZGVmaW5lIENpdHk6IEhvbWVBZGRyZXNzLmNpdHkudmFsdWUKZGVmaW5lIFN0YXRlOiBIb21lQWRkcmVzcy5zdGF0ZS52YWx1ZQpkZWZpbmUgWmlwOiBIb21lQWRkcmVzcy5wb3N0YWxDb2RlLnZhbHVlCgpkZWZpbmUgVGVsZWNvbTogQ29hbGVzY2UoIFBhdGllbnQudGVsZWNvbSB0ZWxlY29tIHdoZXJlIHRlbGVjb20uc3lzdGVtLnZhbHVlID0gJ3Bob25lJyApCmRlZmluZSBQaG9uZTogVGVsZWNvbS52YWx1ZS52YWx1ZQo=" + }, + { + "contentType": "application/elm+json", + "data": "eyJsaWJyYXJ5Ijp7ImFubm90YXRpb24iOlt7InRyYW5zbGF0b3JPcHRpb25zIjoiIiwidHlwZSI6IkNxbFRvRWxtSW5mbyJ9XSwiaWRlbnRpZmllciI6eyJpZCI6IkJhc2ljUGF0aWVudEluZm9QcmVwb3B1bGF0aW9uIiwidmVyc2lvbiI6IjAuMi4wIn0sInNjaGVtYUlkZW50aWZpZXIiOnsiaWQiOiJ1cm46aGw3LW9yZzplbG0iLCJ2ZXJzaW9uIjoicjEifSwidXNpbmdzIjp7ImRlZiI6W3sibG9jYWxJZGVudGlmaWVyIjoiU3lzdGVtIiwidXJpIjoidXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIn0seyJsb2NhbElkZW50aWZpZXIiOiJGSElSIiwidXJpIjoiaHR0cDovL2hsNy5vcmcvZmhpciIsInZlcnNpb24iOiI0LjAuMCJ9XX0sImluY2x1ZGVzIjp7ImRlZiI6W3sibG9jYWxJZGVudGlmaWVyIjoiRkhJUkhlbHBlcnMiLCJwYXRoIjoiRkhJUkhlbHBlcnMiLCJ2ZXJzaW9uIjoiNC4wLjAifV19LCJwYXJhbWV0ZXJzIjp7ImRlZiI6W3sibmFtZSI6ImRldmljZV9yZXF1ZXN0IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJwYXJhbWV0ZXJUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1EZXZpY2VSZXF1ZXN0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fSx7Im5hbWUiOiJzZXJ2aWNlX3JlcXVlc3QiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInBhcmFtZXRlclR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVNlcnZpY2VSZXF1ZXN0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fSx7Im5hbWUiOiJtZWRpY2F0aW9uX3JlcXVlc3QiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInBhcmFtZXRlclR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU1lZGljYXRpb25SZXF1ZXN0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LCJjb250ZXh0cyI6eyJkZWYiOlt7Im5hbWUiOiJQYXRpZW50In1dfSwic3RhdGVtZW50cyI6eyJkZWYiOlt7Im5hbWUiOiJQYXRpZW50IiwiY29udGV4dCI6IlBhdGllbnQiLCJleHByZXNzaW9uIjp7InR5cGUiOiJTaW5nbGV0b25Gcm9tIiwib3BlcmFuZCI6eyJkYXRhVHlwZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVBhdGllbnQiLCJ0eXBlIjoiUmV0cmlldmUifX19LHsibmFtZSI6IkdldE1pZGRsZUluaXRpYWxzIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlN1YnN0cmluZyIsInN0cmluZ1RvU3ViIjp7InR5cGUiOiJDb21iaW5lIiwic291cmNlIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJnaXZlbiIsImV4cHJlc3Npb24iOnsicGF0aCI6ImdpdmVuIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJuYW1lIiwidHlwZSI6Ik9wZXJhbmRSZWYifX19XSwicmVsYXRpb25zaGlwIjpbXSwicmV0dXJuIjp7ImV4cHJlc3Npb24iOnsidHlwZSI6IlN1YnN0cmluZyIsInN0cmluZ1RvU3ViIjp7InBhdGgiOiJ2YWx1ZSIsInNjb3BlIjoiZ2l2ZW4iLCJ0eXBlIjoiUHJvcGVydHkifSwic3RhcnRJbmRleCI6eyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLCJ2YWx1ZSI6IjAiLCJ0eXBlIjoiTGl0ZXJhbCJ9LCJsZW5ndGgiOnsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIiwidmFsdWUiOiIxIiwidHlwZSI6IkxpdGVyYWwifX19fSwic2VwYXJhdG9yIjp7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiIsICIsInR5cGUiOiJMaXRlcmFsIn19LCJzdGFydEluZGV4Ijp7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9SW50ZWdlciIsInZhbHVlIjoiMyIsInR5cGUiOiJMaXRlcmFsIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoibmFtZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1IdW1hbk5hbWUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9kYXkiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiVG9kYXkifX0seyJuYW1lIjoiTmFtZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJTaW5nbGV0b25Gcm9tIiwib3BlcmFuZCI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoibmFtZSIsImV4cHJlc3Npb24iOnsicGF0aCI6Im5hbWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IlBhdGllbnQiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9fX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InVzZSIsInNjb3BlIjoibmFtZSIsInR5cGUiOiJQcm9wZXJ0eSJ9fSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJvZmZpY2lhbCIsInR5cGUiOiJMaXRlcmFsIn1dfX19fSx7Im5hbWUiOiJMYXN0TmFtZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoiZmFtaWx5IiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJOYW1lIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifX19fSx7Im5hbWUiOiJNaWRkbGVJbml0aWFsIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsibmFtZSI6IkdldE1pZGRsZUluaXRpYWxzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sibmFtZSI6Ik5hbWUiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9XX19LHsibmFtZSI6IkZpcnN0TmFtZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJ0eXBlIjoiSW5kZXhlciIsIm9wZXJhbmQiOlt7InBhdGgiOiJnaXZlbiIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiTmFtZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIiwidmFsdWUiOiIwIiwidHlwZSI6IkxpdGVyYWwifV19fX0seyJuYW1lIjoiRnVsbE5hbWUiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiQ29hbGVzY2UiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJuYW1lIjoiRmlyc3ROYW1lIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiIgIiwidHlwZSI6IkxpdGVyYWwifV19LHsibmFtZSI6Ik1pZGRsZUluaXRpYWwiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9XX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiICIsInR5cGUiOiJMaXRlcmFsIn1dfSx7Im5hbWUiOiJMYXN0TmFtZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn1dfSx7InR5cGUiOiJDb25jYXRlbmF0ZSIsIm9wZXJhbmQiOlt7InR5cGUiOiJDb25jYXRlbmF0ZSIsIm9wZXJhbmQiOlt7Im5hbWUiOiJGaXJzdE5hbWUiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6IiAiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX0seyJuYW1lIjoiTGFzdE5hbWUiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9XX1dfX0seyJuYW1lIjoiR2VuZGVyIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJnZW5kZXIiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IlBhdGllbnQiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9fX19LHsibmFtZSI6IkRhdGVPZkJpcnRoIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJiaXJ0aERhdGUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IlBhdGllbnQiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9fX19LHsibmFtZSI6IlJlcXVlc3RDb3ZlcmFnZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJDb2FsZXNjZSIsIm9wZXJhbmQiOlt7InBhdGgiOiJpbnN1cmFuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6ImRldmljZV9yZXF1ZXN0IiwidHlwZSI6IlBhcmFtZXRlclJlZiJ9fSx7InBhdGgiOiJpbnN1cmFuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InNlcnZpY2VfcmVxdWVzdCIsInR5cGUiOiJQYXJhbWV0ZXJSZWYifX0seyJwYXRoIjoiaW5zdXJhbmNlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJtZWRpY2F0aW9uX3JlcXVlc3QiLCJ0eXBlIjoiUGFyYW1ldGVyUmVmIn19XX19LHsibmFtZSI6IkNvdmVyYWdlUmVzb3VyY2UiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6ImNvdmVyYWdlIiwiZXhwcmVzc2lvbiI6eyJkYXRhVHlwZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUNvdmVyYWdlIiwidHlwZSI6IlJldHJpZXZlIn19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sidHlwZSI6IkNvbmNhdGVuYXRlIiwib3BlcmFuZCI6W3sidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6IkNvdmVyYWdlLyIsInR5cGUiOiJMaXRlcmFsIn0seyJuYW1lIjoiVG9TdHJpbmciLCJsaWJyYXJ5TmFtZSI6IkZISVJIZWxwZXJzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sicGF0aCI6ImlkIiwic2NvcGUiOiJjb3ZlcmFnZSIsInR5cGUiOiJQcm9wZXJ0eSJ9XX1dfSx7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoicmVmZXJlbmNlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InR5cGUiOiJJbmRleGVyIiwib3BlcmFuZCI6W3sibmFtZSI6IlJlcXVlc3RDb3ZlcmFnZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLCJ2YWx1ZSI6IjAiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19fV19fX19LHsibmFtZSI6Ik1lZGljYXJlSWQiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InN1YnNjcmliZXJJZCIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiQ292ZXJhZ2VSZXNvdXJjZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fX0seyJuYW1lIjoiSG9tZUFkZHJlc3MiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6ImFkZHJlc3MiLCJleHByZXNzaW9uIjp7InBhdGgiOiJhZGRyZXNzIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJQYXRpZW50IiwidHlwZSI6IkV4cHJlc3Npb25SZWYifX19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJ1c2UiLCJzY29wZSI6ImFkZHJlc3MiLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiaG9tZSIsInR5cGUiOiJMaXRlcmFsIn1dfX19fSx7Im5hbWUiOiJMaW5lIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InR5cGUiOiJJbmRleGVyIiwib3BlcmFuZCI6W3sicGF0aCI6ImxpbmUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IkhvbWVBZGRyZXNzIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLCJ2YWx1ZSI6IjAiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19fSx7Im5hbWUiOiJDaXR5IiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJjaXR5IiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJIb21lQWRkcmVzcyIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fX0seyJuYW1lIjoiU3RhdGUiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InN0YXRlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJIb21lQWRkcmVzcyIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fX0seyJuYW1lIjoiWmlwIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJwb3N0YWxDb2RlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJIb21lQWRkcmVzcyIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fX0seyJuYW1lIjoiVGVsZWNvbSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJDb2FsZXNjZSIsIm9wZXJhbmQiOlt7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJ0ZWxlY29tIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidGVsZWNvbSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiUGF0aWVudCIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJFcXVhbCIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3lzdGVtIiwic2NvcGUiOiJ0ZWxlY29tIiwidHlwZSI6IlByb3BlcnR5In19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6InBob25lIiwidHlwZSI6IkxpdGVyYWwifV19fV19fSx7Im5hbWUiOiJQaG9uZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IlRlbGVjb20iLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9fX19XX19fQ==" + } +] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-BasicPractitionerInfo-prepopulation.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-BasicPractitionerInfo-prepopulation.json new file mode 100644 index 00000000..98cb980d --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-BasicPractitionerInfo-prepopulation.json @@ -0,0 +1,35 @@ +{ + "resourceType": "Library", + "id": "BasicPractitionerInfo-prepopulation", + "url": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicPractitionerInfo-prepopulation", + "name": "BasicPractitionerInfo-prepopulation", + "version": "0.1.0", + "title": "Basic Practitioner Info", + "status": "draft", + "type": { + "coding": [ + { + "code": "logic-library" + } + ] + }, + "relatedArtifact": [ + { + "type": "depends-on", + "resource": "Library/FHIRHelpers-4.0.0" + } + ], + "dataRequirement": [ + { "type": "Practitioner" } + ], + "content": [ + { + "contentType": "text/cql", + "data": "bGlicmFyeSBCYXNpY1ByYWN0aXRpb25lckluZm9QcmVwb3B1bGF0aW9uIHZlcnNpb24gJzAuMS4wJwp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4wJwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4wJyBjYWxsZWQgRkhJUkhlbHBlcnMKCnBhcmFtZXRlciBkZXZpY2VfcmVxdWVzdCBEZXZpY2VSZXF1ZXN0CnBhcmFtZXRlciBzZXJ2aWNlX3JlcXVlc3QgU2VydmljZVJlcXVlc3QKcGFyYW1ldGVyIG1lZGljYXRpb25fcmVxdWVzdCBNZWRpY2F0aW9uUmVxdWVzdAoKY29udGV4dCBQYXRpZW50CgpkZWZpbmUgZnVuY3Rpb24gR2V0TWlkZGxlSW5pdGlhbHMobmFtZSBGSElSLkh1bWFuTmFtZSk6CiAgU3Vic3RyaW5nKENvbWJpbmUoKG5hbWUuZ2l2ZW4gZ2l2ZW4gcmV0dXJuIFN1YnN0cmluZyhnaXZlbi52YWx1ZSwwLDEpKSwnLCAnKSwzKQoKZGVmaW5lIFRvZGF5OiBUb2RheSgpCgpkZWZpbmUgIlNpZ25pbmdQcm92aWRlclJlZmVyZW5jZSI6IENvYWxlc2NlKGRldmljZV9yZXF1ZXN0LnBlcmZvcm1lci5yZWZlcmVuY2UudmFsdWUsIHNlcnZpY2VfcmVxdWVzdC5wZXJmb3JtZXIucmVmZXJlbmNlLnZhbHVlLCBtZWRpY2F0aW9uX3JlcXVlc3QucmVxdWVzdGVyLnJlZmVyZW5jZS52YWx1ZSkKLy8gR2V0IFByYWN0aXRpb25lcgpkZWZpbmUgT3JkZXJpbmdQcm92aWRlcjogc2luZ2xldG9uIGZyb20gKAogIFtQcmFjdGl0aW9uZXJdIHByYWN0aXRpb25lcgogICAgd2hlcmUgKCdQcmFjdGl0aW9uZXIvJyArIHByYWN0aXRpb25lci5pZCkgPSAgU2lnbmluZ1Byb3ZpZGVyUmVmZXJlbmNlKQoKLy8gR2V0IFByYWN0aXRpb25lcidzIE5hbWUKZGVmaW5lIE5hbWU6IHNpbmdsZXRvbiBmcm9tICgKICAoIk9yZGVyaW5nUHJvdmlkZXIiLm5hbWUgbmFtZSB3aGVyZSBuYW1lLnVzZS52YWx1ZSA9ICdvZmZpY2lhbCcpIAogIHVuaW9uIAogICJPcmRlcmluZ1Byb3ZpZGVyIi5uYW1lKQoKLy8gR2V0IFByYWN0aXRpb25lcidzIE5hbWUgZWxlbWVudHMKZGVmaW5lIExhc3ROYW1lOiAiTmFtZSIuZmFtaWx5LnZhbHVlCmRlZmluZSBNaWRkbGVJbml0aWFsOiBHZXRNaWRkbGVJbml0aWFscygiTmFtZSIpCmRlZmluZSBGaXJzdE5hbWU6ICJOYW1lIi5naXZlblswXS52YWx1ZQpkZWZpbmUgRnVsbE5hbWU6CiAgQ29hbGVzY2UoIkZpcnN0TmFtZSIgKyAnICcgKyAiTWlkZGxlSW5pdGlhbCIgKyAnICcgKyAiTGFzdE5hbWUiLCAiRmlyc3ROYW1lIiArICcgJyArICJMYXN0TmFtZSIpCgovLyBHZXQgUHJhY3RpdGlvbmVyJ3MgTlBJCmRlZmluZSBOUEk6IChzaW5nbGV0b24gZnJvbSAoCiAgIk9yZGVyaW5nUHJvdmlkZXIiLmlkZW50aWZpZXIgaWRlbnRpZmllcgogICAgd2hlcmUgaWRlbnRpZmllci5zeXN0ZW0udmFsdWUgPSAnaHR0cDovL2hsNy5vcmcvZmhpci9zaWQvdXMtbnBpJykpLnZhbHVlLnZhbHVlCgpkZWZpbmUgQWRkcmVzczogc2luZ2xldG9uIGZyb20gKAogICgiT3JkZXJpbmdQcm92aWRlciIuYWRkcmVzcyBhZGRyZXNzIHdoZXJlIGFkZHJlc3MudXNlLnZhbHVlID0gJ3Bvc3RhbCcgb3IgYWRkcmVzcy51c2UudmFsdWUgPSAnd29yaycpCiAgdW5pb24KICAiT3JkZXJpbmdQcm92aWRlciIuYWRkcmVzcykKCmRlZmluZSBMaW5lOiAiQWRkcmVzcyIubGluZS52YWx1ZQpkZWZpbmUgQ2l0eTogIkFkZHJlc3MiLmNpdHkudmFsdWUKZGVmaW5lIFN0YXRlOiAiQWRkcmVzcyIuc3RhdGUudmFsdWUKZGVmaW5lIFppcDogIkFkZHJlc3MiLnBvc3RhbENvZGUudmFsdWUKCmRlZmluZSBQaG9uZTogKHNpbmdsZXRvbiBmcm9tICgKICAiT3JkZXJpbmdQcm92aWRlciIudGVsZWNvbSB0ZWxlY29tIHdoZXJlIHRlbGVjb20uc3lzdGVtLnZhbHVlID0gJ3Bob25lJykpLnZhbHVlLnZhbHVlCgpkZWZpbmUgRW1haWw6IChzaW5nbGV0b24gZnJvbSAoCiAgIk9yZGVyaW5nUHJvdmlkZXIiLnRlbGVjb20gdGVsZWNvbSB3aGVyZSB0ZWxlY29tLnN5c3RlbS52YWx1ZSA9ICdlbWFpbCcpKS52YWx1ZS52YWx1ZQoKZGVmaW5lIEZheDogKHNpbmdsZXRvbiBmcm9tICgKICAiT3JkZXJpbmdQcm92aWRlciIudGVsZWNvbSB0ZWxlY29tIHdoZXJlIHRlbGVjb20uc3lzdGVtLnZhbHVlID0gJ2ZheCcpKS52YWx1ZS52YWx1ZQ==" + }, + { + "contentType": "application/elm+json", + "data": "eyJsaWJyYXJ5Ijp7ImFubm90YXRpb24iOlt7InRyYW5zbGF0b3JPcHRpb25zIjoiIiwidHlwZSI6IkNxbFRvRWxtSW5mbyJ9LHsibGlicmFyeUlkIjoiQmFzaWNQcmFjdGl0aW9uZXJJbmZvUHJlcG9wdWxhdGlvbiIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjE2LCJzdGFydENoYXIiOjEyMywiZW5kTGluZSI6MTYsImVuZENoYXIiOjEyNywibWVzc2FnZSI6Ikxpc3QtdmFsdWVkIGV4cHJlc3Npb24gd2FzIGRlbW90ZWQgdG8gYSBzaW5nbGV0b24uIiwiZXJyb3JUeXBlIjoic2VtYW50aWMiLCJlcnJvclNldmVyaXR5Ijoid2FybmluZyIsInR5cGUiOiJDcWxUb0VsbUVycm9yIn0seyJsaWJyYXJ5SWQiOiJCYXNpY1ByYWN0aXRpb25lckluZm9QcmVwb3B1bGF0aW9uIiwibGlicmFyeVZlcnNpb24iOiIwLjEuMCIsInN0YXJ0TGluZSI6MTYsInN0YXJ0Q2hhciI6MTIzLCJlbmRMaW5lIjoxNiwiZW5kQ2hhciI6MTI3LCJtZXNzYWdlIjoiTGlzdC12YWx1ZWQgZXhwcmVzc2lvbiB3YXMgZGVtb3RlZCB0byBhIHNpbmdsZXRvbi4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJ3YXJuaW5nIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifV0sImlkZW50aWZpZXIiOnsiaWQiOiJCYXNpY1ByYWN0aXRpb25lckluZm9QcmVwb3B1bGF0aW9uIiwidmVyc2lvbiI6IjAuMS4wIn0sInNjaGVtYUlkZW50aWZpZXIiOnsiaWQiOiJ1cm46aGw3LW9yZzplbG0iLCJ2ZXJzaW9uIjoicjEifSwidXNpbmdzIjp7ImRlZiI6W3sibG9jYWxJZGVudGlmaWVyIjoiU3lzdGVtIiwidXJpIjoidXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIn0seyJsb2NhbElkZW50aWZpZXIiOiJGSElSIiwidXJpIjoiaHR0cDovL2hsNy5vcmcvZmhpciIsInZlcnNpb24iOiI0LjAuMCJ9XX0sImluY2x1ZGVzIjp7ImRlZiI6W3sibG9jYWxJZGVudGlmaWVyIjoiRkhJUkhlbHBlcnMiLCJwYXRoIjoiRkhJUkhlbHBlcnMiLCJ2ZXJzaW9uIjoiNC4wLjAifV19LCJwYXJhbWV0ZXJzIjp7ImRlZiI6W3sibmFtZSI6ImRldmljZV9yZXF1ZXN0IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJwYXJhbWV0ZXJUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1EZXZpY2VSZXF1ZXN0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fSx7Im5hbWUiOiJzZXJ2aWNlX3JlcXVlc3QiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInBhcmFtZXRlclR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVNlcnZpY2VSZXF1ZXN0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fSx7Im5hbWUiOiJtZWRpY2F0aW9uX3JlcXVlc3QiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInBhcmFtZXRlclR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU1lZGljYXRpb25SZXF1ZXN0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LCJjb250ZXh0cyI6eyJkZWYiOlt7Im5hbWUiOiJQYXRpZW50In1dfSwic3RhdGVtZW50cyI6eyJkZWYiOlt7Im5hbWUiOiJQYXRpZW50IiwiY29udGV4dCI6IlBhdGllbnQiLCJleHByZXNzaW9uIjp7InR5cGUiOiJTaW5nbGV0b25Gcm9tIiwib3BlcmFuZCI6eyJkYXRhVHlwZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVBhdGllbnQiLCJ0eXBlIjoiUmV0cmlldmUifX19LHsibmFtZSI6IkdldE1pZGRsZUluaXRpYWxzIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlN1YnN0cmluZyIsInN0cmluZ1RvU3ViIjp7InR5cGUiOiJDb21iaW5lIiwic291cmNlIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJnaXZlbiIsImV4cHJlc3Npb24iOnsicGF0aCI6ImdpdmVuIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJuYW1lIiwidHlwZSI6Ik9wZXJhbmRSZWYifX19XSwicmVsYXRpb25zaGlwIjpbXSwicmV0dXJuIjp7ImV4cHJlc3Npb24iOnsidHlwZSI6IlN1YnN0cmluZyIsInN0cmluZ1RvU3ViIjp7InBhdGgiOiJ2YWx1ZSIsInNjb3BlIjoiZ2l2ZW4iLCJ0eXBlIjoiUHJvcGVydHkifSwic3RhcnRJbmRleCI6eyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLCJ2YWx1ZSI6IjAiLCJ0eXBlIjoiTGl0ZXJhbCJ9LCJsZW5ndGgiOnsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIiwidmFsdWUiOiIxIiwidHlwZSI6IkxpdGVyYWwifX19fSwic2VwYXJhdG9yIjp7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiIsICIsInR5cGUiOiJMaXRlcmFsIn19LCJzdGFydEluZGV4Ijp7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9SW50ZWdlciIsInZhbHVlIjoiMyIsInR5cGUiOiJMaXRlcmFsIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoibmFtZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1IdW1hbk5hbWUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9kYXkiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiVG9kYXkifX0seyJuYW1lIjoiU2lnbmluZ1Byb3ZpZGVyUmVmZXJlbmNlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IkNvYWxlc2NlIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJyZWZlcmVuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InBlcmZvcm1lciIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiZGV2aWNlX3JlcXVlc3QiLCJ0eXBlIjoiUGFyYW1ldGVyUmVmIn19fX0seyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IiR0aGlzIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJwZXJmb3JtZXIiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InNlcnZpY2VfcmVxdWVzdCIsInR5cGUiOiJQYXJhbWV0ZXJSZWYifX19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6InJlZmVyZW5jZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoicmVmZXJlbmNlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19fV0sIndoZXJlIjp7InR5cGUiOiJOb3QiLCJvcGVyYW5kIjp7InR5cGUiOiJJc051bGwiLCJvcGVyYW5kIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX19LHsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJyZWZlcmVuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InJlcXVlc3RlciIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoibWVkaWNhdGlvbl9yZXF1ZXN0IiwidHlwZSI6IlBhcmFtZXRlclJlZiJ9fX19XX19LHsibmFtZSI6Ik9yZGVyaW5nUHJvdmlkZXIiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6InByYWN0aXRpb25lciIsImV4cHJlc3Npb24iOnsiZGF0YVR5cGUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1QcmFjdGl0aW9uZXIiLCJ0eXBlIjoiUmV0cmlldmUifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiUHJhY3RpdGlvbmVyLyIsInR5cGUiOiJMaXRlcmFsIn0seyJuYW1lIjoiVG9TdHJpbmciLCJsaWJyYXJ5TmFtZSI6IkZISVJIZWxwZXJzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sicGF0aCI6ImlkIiwic2NvcGUiOiJwcmFjdGl0aW9uZXIiLCJ0eXBlIjoiUHJvcGVydHkifV19XX0seyJuYW1lIjoiU2lnbmluZ1Byb3ZpZGVyUmVmZXJlbmNlIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifV19fX19LHsibmFtZSI6Ik5hbWUiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlVuaW9uIiwib3BlcmFuZCI6W3sidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6Im5hbWUiLCJleHByZXNzaW9uIjp7InBhdGgiOiJuYW1lIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJPcmRlcmluZ1Byb3ZpZGVyIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifX19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJ1c2UiLCJzY29wZSI6Im5hbWUiLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoib2ZmaWNpYWwiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19LHsicGF0aCI6Im5hbWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6Ik9yZGVyaW5nUHJvdmlkZXIiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9fV19fX0seyJuYW1lIjoiTGFzdE5hbWUiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImZhbWlseSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiTmFtZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fX0seyJuYW1lIjoiTWlkZGxlSW5pdGlhbCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJHZXRNaWRkbGVJbml0aWFscyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7Im5hbWUiOiJOYW1lIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifV19fSx7Im5hbWUiOiJGaXJzdE5hbWUiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsidHlwZSI6IkluZGV4ZXIiLCJvcGVyYW5kIjpbeyJwYXRoIjoiZ2l2ZW4iLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6Ik5hbWUiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9fSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9SW50ZWdlciIsInZhbHVlIjoiMCIsInR5cGUiOiJMaXRlcmFsIn1dfX19LHsibmFtZSI6IkZ1bGxOYW1lIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IkNvYWxlc2NlIiwib3BlcmFuZCI6W3sidHlwZSI6IkNvbmNhdGVuYXRlIiwib3BlcmFuZCI6W3sidHlwZSI6IkNvbmNhdGVuYXRlIiwib3BlcmFuZCI6W3sidHlwZSI6IkNvbmNhdGVuYXRlIiwib3BlcmFuZCI6W3sidHlwZSI6IkNvbmNhdGVuYXRlIiwib3BlcmFuZCI6W3sibmFtZSI6IkZpcnN0TmFtZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiICIsInR5cGUiOiJMaXRlcmFsIn1dfSx7Im5hbWUiOiJNaWRkbGVJbml0aWFsIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifV19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6IiAiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX0seyJuYW1lIjoiTGFzdE5hbWUiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9XX0seyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJuYW1lIjoiRmlyc3ROYW1lIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiIgIiwidHlwZSI6IkxpdGVyYWwifV19LHsibmFtZSI6Ikxhc3ROYW1lIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifV19XX19LHsibmFtZSI6Ik5QSSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsidHlwZSI6IlNpbmdsZXRvbkZyb20iLCJvcGVyYW5kIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJpZGVudGlmaWVyIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoiaWRlbnRpZmllciIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlciIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJFcXVhbCIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3lzdGVtIiwic2NvcGUiOiJpZGVudGlmaWVyIiwidHlwZSI6IlByb3BlcnR5In19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6Imh0dHA6Ly9obDcub3JnL2ZoaXIvc2lkL3VzLW5waSIsInR5cGUiOiJMaXRlcmFsIn1dfX19fX19LHsibmFtZSI6IkFkZHJlc3MiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlVuaW9uIiwib3BlcmFuZCI6W3sidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6ImFkZHJlc3MiLCJleHByZXNzaW9uIjp7InBhdGgiOiJhZGRyZXNzIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJPcmRlcmluZ1Byb3ZpZGVyIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifX19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6Ik9yIiwib3BlcmFuZCI6W3sidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJ1c2UiLCJzY29wZSI6ImFkZHJlc3MiLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoicG9zdGFsIiwidHlwZSI6IkxpdGVyYWwifV19LHsidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJ1c2UiLCJzY29wZSI6ImFkZHJlc3MiLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoid29yayIsInR5cGUiOiJMaXRlcmFsIn1dfV19fSx7InBhdGgiOiJhZGRyZXNzIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJPcmRlcmluZ1Byb3ZpZGVyIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifX1dfX19LHsibmFtZSI6IkxpbmUiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJsaW5lIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJBZGRyZXNzIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifX19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19LCJyZXR1cm4iOnsiZGlzdGluY3QiOmZhbHNlLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fX0seyJuYW1lIjoiQ2l0eSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoiY2l0eSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiQWRkcmVzcyIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fX0seyJuYW1lIjoiU3RhdGUiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InN0YXRlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJBZGRyZXNzIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifX19fSx7Im5hbWUiOiJaaXAiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InBvc3RhbENvZGUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IkFkZHJlc3MiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9fX19LHsibmFtZSI6IlBob25lIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6InRlbGVjb20iLCJleHByZXNzaW9uIjp7InBhdGgiOiJ0ZWxlY29tIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJPcmRlcmluZ1Byb3ZpZGVyIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifX19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJzeXN0ZW0iLCJzY29wZSI6InRlbGVjb20iLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoicGhvbmUiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19fX19fSx7Im5hbWUiOiJFbWFpbCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsidHlwZSI6IlNpbmdsZXRvbkZyb20iLCJvcGVyYW5kIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJ0ZWxlY29tIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidGVsZWNvbSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlciIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJFcXVhbCIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3lzdGVtIiwic2NvcGUiOiJ0ZWxlY29tIiwidHlwZSI6IlByb3BlcnR5In19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6ImVtYWlsIiwidHlwZSI6IkxpdGVyYWwifV19fX19fX0seyJuYW1lIjoiRmF4IiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6InRlbGVjb20iLCJleHByZXNzaW9uIjp7InBhdGgiOiJ0ZWxlY29tIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJPcmRlcmluZ1Byb3ZpZGVyIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifX19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJzeXN0ZW0iLCJzY29wZSI6InRlbGVjb20iLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiZmF4IiwidHlwZSI6IkxpdGVyYWwifV19fX19fX1dfX19" + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-CDS_Connect_Commons_for_FHIRv400.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-CDS_Connect_Commons_for_FHIRv400.json new file mode 100644 index 00000000..a5274b56 --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-CDS_Connect_Commons_for_FHIRv400.json @@ -0,0 +1,32 @@ +{ + "resourceType": "Library", + "id": "CDS_Connect_Commons_for_FHIRv400", + "url": "http://hl7.org/fhir/us/davinci-dtr/Library/CDS_Connect_Commons_for_FHIRv400", + "name": "CDS_Connect_Commons_for_FHIRv400", + "version": "1.0.2", + "title": "CDS Connect Commons", + "status": "draft", + "type": { + "coding": [ + { + "code": "logic-library" + } + ] + }, + "relatedArtifact": [ + { + "type": "depends-on", + "resource": "Library/FHIRHelpers-4.0.0" + } + ], + "content": [ + { + "contentType": "text/cql", + "data": "Ly8gQ0RTIENvbm5lY3QgQ29tbW9ucyBmb3IgRkhJUnY0MDAKLy8gQ2hhbmdlIGxvZzoKLy8gLSAxLjAuMQovLyAgIC0gRml4IGxvZ2ljIGZvciBBY3RpdmVPclJlY3VycmluZyB0byB1c2UgZXF1aXZhbGVuY2UgbWF0Y2hpbmcgKGluc3RlYWQgb2YgImluIgovLyAgICAgd2hpY2ggdXNlcyBlcXVhbGl0eSBtYXRjaGluZykKLy8gICAtIEFkZCBiYWNrIC4uLkJ5Q29uY2VwdCBmdW5jdGlvbnMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHcvIGxpYnJhcmllcyB0aGF0Ci8vICAgICBtaWdodCBleHBlY3QgdGhlbQovLyAgIC0gQ29uc2lkZXIgZWZmZWN0aXZlSW5zdGFudCBpbiBPYnNlcnZhdGlvbkxvb2tCYWNrCi8vIC0gMS4wLjIKLy8gICAtIEFkZCBmdW5jdGlvbnMgZm9yIHRoZSBJbW11bml6YXRpb24gcmVzb3VyY2UKLy8gICAtIEFkZCBmdW5jdGlvbnMgZm9yIHRoZSBEZXZpY2UgcmVzb3VyY2UKbGlicmFyeSBDRFNfQ29ubmVjdF9Db21tb25zX2Zvcl9GSElSdjQwMCB2ZXJzaW9uICcxLjAuMicKCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjAnCgovLyBJbmNsdWRlIHRoZSBGSElSSGVscGVycyBsaWJyYXJ5IGZvciBzaW1wbGlmeWluZyBpbnRlcmFjdG9uIHcvIHRoZSBGSElSIGRhdGEgbW9kZWwKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMCcgY2FsbGVkIEZISVJIZWxwZXJzCgpjb2Rlc3lzdGVtICJBSVZFUlNUQVRVUyI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL2FsbGVyZ3lpbnRvbGVyYW5jZS12ZXJpZmljYXRpb24nCmNvZGVzeXN0ZW0gIkFJQ0xJTlNUQVRVUyI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL2FsbGVyZ3lpbnRvbGVyYW5jZS1jbGluaWNhbCcKY29kZXN5c3RlbSAiQ09ORFZFUlNUQVRVUyI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL2NvbmRpdGlvbi12ZXItc3RhdHVzJwpjb2Rlc3lzdGVtICJDT05EQ0xJTlNUQVRVUyI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL2NvbmRpdGlvbi1jbGluaWNhbCcKY29kZSAiQWxsZXJneUludG9sZXJhbmNlIENvbmZpcm1lZCBjb2RlIjogJ2NvbmZpcm1lZCcgZnJvbSAiQUlWRVJTVEFUVVMiIGRpc3BsYXkgJ0NvbmZpcm1lZCcKY29kZSAiQWxsZXJneUludG9sZXJhbmNlIEFjdGl2ZSBjb2RlIjogJ2FjdGl2ZScgZnJvbSAiQUlDTElOU1RBVFVTIiBkaXNwbGF5ICdBY3RpdmUnCmNvZGUgIkNvbmRpdGlvbiBDb25maXJtZWQgY29kZSI6ICdjb25maXJtZWQnIGZyb20gIkNPTkRWRVJTVEFUVVMiIGRpc3BsYXkgJ0NvbmZpcm1lZCcKY29kZSAiQ29uZGl0aW9uIEFjdGl2ZSBjb2RlIjogJ2FjdGl2ZScgZnJvbSAiQ09ORENMSU5TVEFUVVMiIGRpc3BsYXkgJ0FjdGl2ZScKY29kZSAiQ29uZGl0aW9uIFJlY3VycmVuY2UgY29kZSI6ICdyZWN1cnJlbmNlJyBmcm9tICJDT05EQ0xJTlNUQVRVUyIgZGlzcGxheSAnUmVjdXJyZW5jZScKY29kZSAiQ29uZGl0aW9uIFJlbGFwc2UgY29kZSI6ICdyZWxhcHNlJyBmcm9tICJDT05EQ0xJTlNUQVRVUyIgZGlzcGxheSAnUmVsYXBzZScKY29uY2VwdCAiQWxsZXJneUludG9sZXJhbmNlIENvbmZpcm1lZCI6IHsgIkFsbGVyZ3lJbnRvbGVyYW5jZSBDb25maXJtZWQgY29kZSIgfSBkaXNwbGF5ICdDb25maXJtZWQnCmNvbmNlcHQgIkFsbGVyZ3lJbnRvbGVyYW5jZSBBY3RpdmUiOiB7ICJBbGxlcmd5SW50b2xlcmFuY2UgQWN0aXZlIGNvZGUiIH0gZGlzcGxheSAnQWN0aXZlJwpjb25jZXB0ICJDb25kaXRpb24gQ29uZmlybWVkIjogeyAiQ29uZGl0aW9uIENvbmZpcm1lZCBjb2RlIiB9IGRpc3BsYXkgJ0NvbmZpcm1lZCcKY29uY2VwdCAiQ29uZGl0aW9uIEFjdGl2ZSI6IHsgIkNvbmRpdGlvbiBBY3RpdmUgY29kZSIgfSBkaXNwbGF5ICdBY3RpdmUnCmNvbmNlcHQgIkNvbmRpdGlvbiBSZWN1cnJlbmNlIjogeyAiQ29uZGl0aW9uIFJlY3VycmVuY2UgY29kZSIgfSBkaXNwbGF5ICdSZWN1cnJlbmNlJwpjb25jZXB0ICJDb25kaXRpb24gUmVsYXBzZSI6IHsgIkNvbmRpdGlvbiBSZWxhcHNlIGNvZGUiIH0gZGlzcGxheSAnUmVsYXBzZScKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEdFTkVSQUwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovKioKICogQ29udmVydHMgYSBGSElSIFBlcmlvZCB0byBhIENRTCBJbnRlcnZhbC4gIEZISVJIZWxwZXJzIHByb3ZpZGVzIGEgZnVuY3Rpb24gZm9yIHRoaXMsIGJ1dAogKiBGSElSSGVscGVycyBwcm92aWRlcyBzZXZlcmFsIG92ZXJsb2FkcyBvZiB0aGUgVG9JbnRlcnZhbCBmdW5jdGlvbiwgYW5kIHRoZSBKYXZhU2NyaXB0IENRTAogKiBFeGVjdXRpb24gRnJhbWV3b3JrIGFwcGFyZW50bHkgZG9lcyBub3QgaGFuZGxlIHRoaXMgY29ycmVjdGx5LiAgQ3JlYXRpbmcgdW5pcXVlbHkgbmFtZWQKICogZnVuY3Rpb25zIGhlcmUgZW5zdXJlcyBzYWZlIGV4ZWN1dGlvbi4KICogQHBhcmFtIHBlcmlvZCAtIGEgRkhJUiBQZXJpb2QKICogQHJldHVybnMge1N5c3RlbS5JbnRlcnZhbH0gYSBDUUwgSW50ZXJ2YWwgb3IgbnVsbCBpZiBudWxsIHdhcyBwYXNzZWQgaW4KICovCmRlZmluZSBmdW5jdGlvbiBQZXJpb2RUb0ludGVydmFsKHBlcmlvZCBGSElSLlBlcmlvZCk6CiAgaWYgcGVyaW9kIGlzIG51bGwgdGhlbgogICAgbnVsbAogIGVsc2UKICAgIEludGVydmFsW3BlcmlvZC4ic3RhcnQiLnZhbHVlLCBwZXJpb2QuImVuZCIudmFsdWVdCgovKioKICogQ29udmVydHMgYSBGSElSIFJhbmdlIHRvIGEgQ1FMIEludGVydmFsLiAgRkhJUkhlbHBlcnMgcHJvdmlkZXMgYSBmdW5jdGlvbiBmb3IgdGhpcywgYnV0CiAqIEZISVJIZWxwZXJzIHByb3ZpZGVzIHNldmVyYWwgb3ZlcmxvYWRzIG9mIHRoZSBUb0ludGVydmFsIGZ1bmN0aW9uLCBhbmQgdGhlIEphdmFTY3JpcHQgQ1FMCiAqIEV4ZWN1dGlvbiBGcmFtZXdvcmsgYXBwYXJlbnRseSBkb2VzIG5vdCBoYW5kbGUgdGhpcyBjb3JyZWN0bHkuICBDcmVhdGluZyB1bmlxdWVseSBuYW1lZAogKiBmdW5jdGlvbnMgaGVyZSBlbnN1cmVzIHNhZmUgZXhlY3V0aW9uLgogKiBAcGFyYW0gcmFuZ2UgLSBhIEZISVIgUmFuZ2UKICogQHJldHVybnMge1N5c3RlbS5JbnRlcnZhbH0gYSBDUUwgSW50ZXJ2YWwgb3IgbnVsbCBpZiBudWxsIHdhcyBwYXNzZWQgaW4KICovCmRlZmluZSBmdW5jdGlvbiBSYW5nZVRvSW50ZXJ2YWwocmFuZ2UgRkhJUi5SYW5nZSk6CiAgaWYgcmFuZ2UgaXMgbnVsbCB0aGVuCiAgICBudWxsCiAgZWxzZQogICAgSW50ZXJ2YWxbRkhJUkhlbHBlcnMuVG9RdWFudGl0eShyYW5nZS5sb3cpLCBGSElSSGVscGVycy5Ub1F1YW50aXR5KHJhbmdlLmhpZ2gpXQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT0JTRVJWQVRJT05TIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovKioKICogRmlsdGVycyBPYnNlcnZhdGlvbnMgYnkgYSBjb25jZXB0IHJhdGhlciB0aGFuIGJ5IGEgVmFsdWVTZXQuICBJbiBDUUwgMS4zLCB0aGlzIGlzIGJ1aWx0IGludG8gdGhlIHJldHJpZXZlLAogKiBidXQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3ZSBrZWVwIHRoaXMgcXVlcnkgd2hlcmUgY2xhdXNlIGFzIGFuIG9wdGlvbi4KICogQHBhcmFtIEtvbmNlcHQgLSB0aGUgY29uY2VwdCB0byBmaWx0ZXIgb24gKGludGVudGlvbmFsbHkgbWlzcGVsbGVkIHRvIGF2b2lkIG5hbWluZyBjbGFzaGVzKQogKiBAcmV0dXJucyB7TGlzdDxPYnNlcnZhdGlvbj59IGEgbGlzdCBvZiBPYnNlcnZhdGlvbnMgbWF0Y2hpbmcgdGhlIGNvbmNlcHQsIG9yIG51bGwgaWYgbnVsbCB3YXMgcGFzc2VkIGluCiAqLwpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25zQnlDb25jZXB0KEtvbmNlcHQgU3lzdGVtLkNvbmNlcHQpOgogIFtPYnNlcnZhdGlvbl0gTyB3aGVyZSBGSElSSGVscGVycy5Ub0NvbmNlcHQoTy5jb2RlKSB+IEtvbmNlcHQKCi8qKgogKiBPYnNlcnZhdGlvbnMgdGhhdCBhcmUgY29tcGxldGUgYW5kIHZlcmlmaWVkLiBJbiBGSElSIFI0LCB0aGVyZSBhcmUgdGhyZWUgc3RhdHVzZXMgdGhhdCBpbmRpY2F0ZSB0aGlzIHN0YXRlOiAnZmluYWwnLAogKiAnY29ycmVjdGVkJywgYW5kICdhbWVuZGVkJy4KICogQHNlZSBodHRwOi8vaGw3Lm9yZy9maGlyL1I0L3ZhbHVlc2V0LW9ic2VydmF0aW9uLXN0YXR1cy5odG1sCiAqIEBwYXJhbSBPYnNMaXN0IC0gYSBsaXN0IG9mIE9ic2VydmF0aW9ucwogKiBAcmV0dXJucyB7TGlzdDxPYnNlcnZhdGlvbj59IGEgbGlzdCBvZiB2ZXJpZmllZCBPYnNlcnZhdGlvbnMsIG9yIG51bGwgaWYgbnVsbCB3YXMgcGFzc2VkIGluCiAqLwpkZWZpbmUgZnVuY3Rpb24gVmVyaWZpZWQoT2JzTGlzdCBMaXN0PE9ic2VydmF0aW9uPik6CiAgT2JzTGlzdCBPIHdoZXJlIE8uc3RhdHVzLnZhbHVlIGluIHsnZmluYWwnLCAnY29ycmVjdGVkJywgJ2FtZW5kZWQnfQoKLyoqCiAqIE9ic2VydmF0aW9ucyB0aGF0IGhhdmUgcXVhbnRpdHkgdmFsdWVzIHJlY29yZGVkIGluIHRoZSByZXF1ZXN0ZWQgdW5pdC4KICogQHBhcmFtIE9ic0xpc3QgLSBhIGxpc3Qgb2YgT2JzZXJ2YXRpb25zCiAqIEBwYXJhbSBVbml0IC0gdGhlIHVuaXQgdG8gcmVxdWlyZSBpbiB0aGUgT2JzZXJ2YXRpb25zIHF1YW50aXR5IHZhbHVlCiAqIEByZXR1cm5zIHtMaXN0PE9ic2VydmF0aW9uPn0gYSBsaXN0IG9mIE9ic2VydmF0aW9ucyB3aXRoIHRoZSByZXF1aXJlZCB1bml0LCBvciBudWxsIGlmIG51bGwgd2FzIHBhc3NlZCBpbgogKi8KZGVmaW5lIGZ1bmN0aW9uIFdpdGhVbml0KE9ic0xpc3QgTGlzdDxPYnNlcnZhdGlvbj4sIFVuaXQgU3RyaW5nKToKICBPYnNMaXN0IE8KICAgIHdoZXJlIChPLnZhbHVlIGFzIEZISVIuUXVhbnRpdHkpLnVuaXQudmFsdWUgPSBVbml0IG9yIChPLnZhbHVlIGFzIEZISVIuUXVhbnRpdHkpLmNvZGUudmFsdWUgPSBVbml0CgovKioKICogT2JzZXJ2YXRpb25zIHdpdGggYW4gZWZmZWN0aXZlIG9yIGlzc3VlZCBkYXRlIGluIHRoZSBzcGVjaWZpZWQgImxvb2sgYmFjayIgcGVyaW9kLiAgRm9yIGV4YW1wbGUsIExETC1DIFRlc3RzIGluIHRoZQogKiBsYXN0IDYgeWVhcnMuCiAqIFRPRE86IFJlbmFtZSB0byBMb29rQmFjayBvbmNlIHRoZSBleGVjdXRpb24gZW5naW5lIHN1cHBvcnRzIG92ZXJsb2FkZWQgZnVuY3Rpb25zLgogKiBAcGFyYW0gT2JzTGlzdCAtIGEgbGlzdCBvZiBPYnNlcnZhdGlvbnMKICogQHJldHVybnMge0xpc3Q8T2JzZXJ2YXRpb24+fSBhIGxpc3Qgb2YgT2JzZXJ2YXRpb25zIHdpdGggZWZmZWN0aXZlIG9yIGlzc3VlZCBkYXRlIHNwZWNpZmllZCBsb29rYmFjayBwZXJpb2QsIG9yIG51bGwKICogaWYgbnVsbCB3YXMgcGFzc2VkIGluCiAqLwpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25Mb29rQmFjayhPYnNMaXN0IExpc3Q8T2JzZXJ2YXRpb24+LCBMb29rQmFjayBTeXN0ZW0uUXVhbnRpdHkpOgogIE9ic0xpc3QgTwogICAgbGV0IExvb2tCYWNrSW50ZXJ2YWw6IEludGVydmFsW05vdygpIC0gTG9va0JhY2ssIE5vdygpXQogICAgd2hlcmUgKE8uZWZmZWN0aXZlIGFzIEZISVIuZGF0ZVRpbWUpLnZhbHVlIGluIExvb2tCYWNrSW50ZXJ2YWwKICAgICAgb3IgKE8uZWZmZWN0aXZlIGFzIEZISVIuaW5zdGFudCkudmFsdWUgaW4gTG9va0JhY2tJbnRlcnZhbAogICAgICBvciBQZXJpb2RUb0ludGVydmFsKE8uZWZmZWN0aXZlIGFzIEZISVIuUGVyaW9kKSBvdmVybGFwcyBMb29rQmFja0ludGVydmFsCiAgICAgIG9yIE8uaXNzdWVkLnZhbHVlIGluIExvb2tCYWNrSW50ZXJ2YWwKCi8qKgogKiBUaGUgbW9zdCByZWNlbnQgb2JzZXJ2YXRpb24uICBGb3IgZWFjaCBPYnNlcnZhdGlvbiwgdGhpcyBhbGdvcml0aG0gd2lsbCB1c2UgdGhlIENvYWxlc2NlIGZ1bmN0aW9uLCB3aGljaCB1c2VzIHRoZQogKiBmaXJzdCBub24tbnVsbCBkYXRlIHZhbHVlIGZyb20gdGhlc2UgZmllbGRzOiBlZmZlY3RpdmVEYXRlVGltZSwgZWZmZWN0aXZlSW5zdGFudCwgZWZmZWN0aXZlUGVyaW9kLmVuZCwKICogZWZmZWN0aXZlUGVyaW9kLnN0YXJ0LCBpc3N1ZWQuIFRoZSBmb3VuZCBkYXRlIHdpbGwgYmUgdXNlZCB0byBjb21wYXJlIE9ic2VydmF0aW9ucyBhbmQgZGV0ZXJtaW5lIHRoZSBtb3N0IHJlY2VudAogKiBvbmUuICBOT1RFOiBXZSBjYW4ndCB1c2UgRmluZERhdGUgYmVjYXVzZSBpdCBhcHBlYXJzIHRoYXQgdGhlIGV4ZWN1dGlvbiBlbmdpbmUgbWF5IGhhdmUgcHJvYmxlbXMgc29ydGluZyBieSB0aGUKICogcmVzdWx0IG9mIGEgZnVuY3Rpb24uCiAqIEBwYXJhbSBPYnNMaXN0IC0gYSBsaXN0IG9mIE9ic2VydmF0aW9ucwogKiBAcmV0dXJucyB7T2JzZXJ2YXRpb259IHRoZSBtb3N0IHJlY2VudCBPYnNlcnZhdGlvbiBmcm9tIHRoZSBsaXN0LCBvciBudWxsIGlmIG51bGwgd2FzIHBhc3NlZCBpbgogKi8KZGVmaW5lIGZ1bmN0aW9uIE1vc3RSZWNlbnQoT2JzTGlzdCBMaXN0PE9ic2VydmF0aW9uPik6CiAgTGFzdChPYnNMaXN0IE8gc29ydCBieSBDb2FsZXNjZSgKICAgIChlZmZlY3RpdmUgYXMgRkhJUi5kYXRlVGltZSkudmFsdWUsCiAgICAoZWZmZWN0aXZlIGFzIEZISVIuaW5zdGFudCkudmFsdWUsCiAgICAoZWZmZWN0aXZlIGFzIEZISVIuUGVyaW9kKS4iZW5kIi52YWx1ZSwKICAgIChlZmZlY3RpdmUgYXMgRkhJUi5QZXJpb2QpLiJzdGFydCIudmFsdWUsCiAgICBpc3N1ZWQudmFsdWUpCiAgKQoKLyoqCiAqIEV4dHJhY3RzIHRoZSBxdWFudGl0eSB2YWx1ZSBmcm9tIGFuIE9ic2VydmF0aW9uLCByZXR1cm5pbmcgaXQgYXMgYSBDUUwgUXVhbnRpdHkKICogQHBhcmFtIE9icyAtIGFuIG9ic2VydmF0aW9uCiAqIEByZXR1cm5zIHtTeXN0ZW0uUXVhbnRpdHl9IHRoZSBPYnNlcnZhdGlvbidzIHZhbHVlIGFzIGEgcXVhbnRpdHksIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcXVhbnRpdHkgdmFsdWUKICovCmRlZmluZSBmdW5jdGlvbiBRdWFudGl0eVZhbHVlKE9icyBPYnNlcnZhdGlvbik6CiAgRkhJUkhlbHBlcnMuVG9RdWFudGl0eShPYnMudmFsdWUgYXMgRkhJUi5RdWFudGl0eSkKCi8qKgogKiBFeHRyYWN0cyB0aGUgQ29kZWFibGVDb25jZXB0IHZhbHVlIGZyb20gYW4gT2JzZXJ2YXRpb24sIHJldHVybmluZyBpdCBhcyBhIENRTCBDb25jZXB0CiAqIEBwYXJhbSBPYnMgLSBhbiBvYnNlcnZhdGlvbgogKiBAcmV0dXJucyB7U3lzdGVtLkNvbmNlcHR9IHRoZSBPYnNlcnZhdGlvbidzIHZhbHVlIGFzIGEgY29uY2VwdCwgb3IgbnVsbCBpZiB0aGVyZSBpcyBubyBDb2RlYWJlQ29uY2VwdCB2YWx1ZQogKi8KZGVmaW5lIGZ1bmN0aW9uIENvbmNlcHRWYWx1ZShPYnMgT2JzZXJ2YXRpb24pOgogIEZISVJIZWxwZXJzLlRvQ29uY2VwdChPYnMudmFsdWUgYXMgRkhJUi5Db2RlYWJsZUNvbmNlcHQpCgovKioKICogRmluZHMgdGhlIGZpcnN0IG5vbi1udWxsIG1lYW5pbmdmdWwgZGF0ZSB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBPYnNlcnZhdGlvbi4gIFRoaXMgd2lsbCBsb29rIHRocm91Z2ggdGhlCiAqIGZvbGxvd2luZyBmaWVsZHMgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjogZWZmZWN0aXZlRGF0ZVRpbWUsIGVmZmVjdGl2ZUluc3RhbnQsIGVmZmVjdGl2ZVBlcmlvZC5lbmQsCiAqIGVmZmVjdGl2ZVBlcmlvZC5zdGFydCwgaXNzdWVkLgogKiBAcGFyYW0gT2JzIC0gYW4gT2JzZXJ2YXRpb24KICogQHJldHVybnMge1N5c3RlbS5EYXRlVGltZX0gdGhlIGZpcnN0IG5vbi1udWxsIG1lYW5pbmdmdWwgZGF0ZSwgb3IgbnVsbCBpZiBub24gaXMgZm91bmQKICovCmRlZmluZSBmdW5jdGlvbiBGaW5kRGF0ZShPYnMgT2JzZXJ2YXRpb24pOgogIENvYWxlc2NlKAogICAgKE9icy5lZmZlY3RpdmUgYXMgRkhJUi5kYXRlVGltZSkudmFsdWUsCiAgICAoT2JzLmVmZmVjdGl2ZSBhcyBGSElSLmluc3RhbnQpLnZhbHVlLAogICAgKE9icy5lZmZlY3RpdmUgYXMgRkhJUi5QZXJpb2QpLiJlbmQiLnZhbHVlLAogICAgKE9icy5lZmZlY3RpdmUgYXMgRkhJUi5QZXJpb2QpLiJzdGFydCIudmFsdWUsCiAgICBPYnMuaXNzdWVkLnZhbHVlCiAgKQoKLyoqCiAqIFRoZSBoaWdoZXN0IG9ic2VydmF0aW9uLgogKiBUaGUgdmFsdWUgd2lsbCBiZSB1c2VkIHRvIGNvbXBhcmUgT2JzZXJ2YXRpb25zIGFuZCBkZXRlcm1pbmUgdGhlIGhpZ2hlc3Qgb25lLgogKiBAcGFyYW0gT2JzTGlzdCAtIGEgbGlzdCBvZiBPYnNlcnZhdGlvbnMKICogQHJldHVybnMge1N5c3RlbS5RdWFudGl0eX0gdGhlIHF1YW50aXR5IHdpdGggdGhlIGhpZ2hlc3QgdmFsdWUgZnJvbSB0aGUgbGlzdCwgb3IgbnVsbCBpZiBudWxsIHdhcyBwYXNzZWQgaW4KICovCmRlZmluZSBmdW5jdGlvbiBIaWdoZXN0T2JzZXJ2YXRpb24oT2JzTGlzdCBMaXN0PE9ic2VydmF0aW9uPik6CiAgTWF4KE9ic0xpc3QgTyByZXR1cm4gRkhJUkhlbHBlcnMuVG9RdWFudGl0eShPLnZhbHVlIGFzIEZISVIuUXVhbnRpdHkpKQoKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENPTkRJVElPTlMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLyoqCiAqIEZpbHRlcnMgQ29uZGl0aW9ucyBieSBhIGNvbmNlcHQgcmF0aGVyIHRoYW4gYnkgYSBWYWx1ZVNldC4gIEluIENRTCAxLjMsIHRoaXMgaXMgYnVpbHQgaW50byB0aGUgcmV0cmlldmUsCiAqIGJ1dCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHdlIGtlZXAgdGhpcyBxdWVyeSB3aGVyZSBjbGF1c2UgYXMgYW4gb3B0aW9uLgogKiBAcGFyYW0gS29uY2VwdCAtIHRoZSBjb25jZXB0IHRvIGZpbHRlciBvbiAoaW50ZW50aW9uYWxseSBtaXNwZWxsZWQgdG8gYXZvaWQgbmFtaW5nIGNsYXNoZXMpCiAqIEByZXR1cm5zIHtMaXN0PE9ic2VydmF0aW9uPn0gYSBsaXN0IG9mIENvbmRpdGlvbnMgbWF0Y2hpbmcgdGhlIGNvbmNlcHQsIG9yIG51bGwgaWYgbnVsbCB3YXMgcGFzc2VkIGluCiAqLwpkZWZpbmUgZnVuY3Rpb24gQ29uZGl0aW9uc0J5Q29uY2VwdChLb25jZXB0IFN5c3RlbS5Db25jZXB0KToKICBbQ29uZGl0aW9uXSBDIHdoZXJlIEZISVJIZWxwZXJzLlRvQ29uY2VwdChDLmNvZGUpIH4gS29uY2VwdAoKLyoqCiAqIENvbmRpdGlvbnMgdGhhdCBhcmUgY29uZmlybWVkLiBJbiBGSElSIFI0LCB0aGlzIGlzIHJlZmxlY3RlZCBieSB2ZXJpZmljYXRpb25TdGF0dXM6ICdjb25maXJtZWQnLgogKiBAc2VlIGh0dHA6Ly9obDcub3JnL2ZoaXIvUjQvdmFsdWVzZXQtY29uZGl0aW9uLXZlci1zdGF0dXMuaHRtbAogKiBAcGFyYW0gQ29uZExpc3QgLSBhIGxpc3Qgb2YgQ29uZGl0aW9ucwogKiBAcmV0dXJucyB7TGlzdDxDb25kaXRpb24+fSBhIGxpc3Qgb2YgY29uZmlybWVkIENvbmRpdGlvbnMsIG9yIG51bGwgaWYgbnVsbCB3YXMgcGFzc2VkIGluCiAqLwpkZWZpbmUgZnVuY3Rpb24gQ29uZmlybWVkKENvbmRMaXN0IExpc3Q8Q29uZGl0aW9uPik6CiAgQ29uZExpc3QgQyB3aGVyZSBDLnZlcmlmaWNhdGlvblN0YXR1cyB+ICJDb25kaXRpb24gQ29uZmlybWVkIgoKLyoqCiAqIENvbmRpdGlvbnMgdGhhdCBhcmUgYWN0aXZlLiBJbiBGSElSIFI0LCB0aGlzIGlzIHJlZmxlY3RlZCBieSBjbGluaWNhbFN0YXR1czogJ2FjdGl2ZScgYW5kIHRoZSBhYnNlbmNlIG9mIGFueQogKiBhYmF0ZW1lbnQgaW5mb3JtYXRpb24gKGkuZS4sIGlmIGl0IGFiYXRlZCwgaXQgaXMgbm8gbG9uZ2VyIGFjdGl2ZSkuCiAqIFRPRE86IFJlbmFtZSB0byBBY3RpdmUgb25jZSB0aGUgZXhlY3V0aW9uIGVuZ2luZSBzdXBwb3J0cyBvdmVybG9hZGVkIGZ1bmN0aW9ucy4KICogQHNlZSBodHRwOi8vaGw3Lm9yZy9maGlyL1I0L3ZhbHVlc2V0LWNvbmRpdGlvbi1jbGluaWNhbC5odG1sCiAqIEBwYXJhbSBDb25kTGlzdCAtIGEgbGlzdCBvZiBDb25kaXRpb25zCiAqIEByZXR1cm5zIHtMaXN0PENvbmRpdGlvbj59IGEgbGlzdCBvZiBhY3RpdmUgQ29uZGl0aW9ucywgb3IgbnVsbCBpZiBudWxsIHdhcyBwYXNzZWQgaW4KICovCmRlZmluZSBmdW5jdGlvbiBBY3RpdmVDb25kaXRpb24oQ29uZExpc3QgTGlzdDxDb25kaXRpb24+KToKICBDb25kTGlzdCBDCiAgICB3aGVyZSBDLmNsaW5pY2FsU3RhdHVzIH4gIkNvbmRpdGlvbiBBY3RpdmUiCiAgICAgIGFuZCBDLmFiYXRlbWVudCBpcyBudWxsCgovKioKICogQ29uZGl0aW9ucyB0aGF0IGFyZSBhY3RpdmUgb3IgcmVjdXJyaW5nLiBJbiBGSElSIFI0LCB0aGlzIGlzIHJlZmxlY3RlZCBieSBjbGluaWNhbFN0YXR1czogJ2FjdGl2ZScsICdyZWN1cnJlbmNlJywgb3IKICogJ3JlbGFwc2UnLiAgV2UgZG8gbm90IGNoZWNrIGZvciBudWxsIGFiYXRlbWVudCBpbmZvcm1hdGlvbiBiZWNhdXNlIGl0IG1heSBoYXZlIGRhdGVzIGZyb20gd2hlbiB0aGUgbm93IHJlY3VycmluZwogKiBjb25kaXRpb24gaW5pdGlhbGx5IHdlbnQgaW50byByZW1pc3Npb24uCiAqIEBzZWUgaHR0cDovL2hsNy5vcmcvZmhpci9SNC92YWx1ZXNldC1jb25kaXRpb24tY2xpbmljYWwuaHRtbAogKiBAcGFyYW0gQ29uZExpc3QgLSBhIGxpc3Qgb2YgQ29uZGl0aW9ucwogKiBAcmV0dXJucyB7TGlzdDxDb25kaXRpb24+fSBhIGxpc3Qgb2YgYWN0aXZlIG9yIHJlY3VycmluZyBDb25kaXRpb25zLCBvciBudWxsIGlmIG51bGwgd2FzIHBhc3NlZCBpbgogKi8KZGVmaW5lIGZ1bmN0aW9uIEFjdGl2ZU9yUmVjdXJyaW5nKENvbmRMaXN0IExpc3Q8Q29uZGl0aW9uPik6CiAgQ29uZExpc3QgQwogICAgd2hlcmUgQy5jbGluaWNhbFN0YXR1cyB+ICJDb25kaXRpb24gQWN0aXZlIgogICAgICBvciBDLmNsaW5pY2FsU3RhdHVzIH4gIkNvbmRpdGlvbiBSZWN1cnJlbmNlIgogICAgICBvciBDLmNsaW5pY2FsU3RhdHVzIH4gIkNvbmRpdGlvbiBSZWxhcHNlIgoKLyoqCiAqIENvbmRpdGlvbnMgd2l0aCBhbiBvbnNldCBvciByZWNvcmRlZCBkYXRlIGluIHRoZSBzcGVjaWZpZWQgImxvb2sgYmFjayIgcGVyaW9kLiAgRm9yIGV4YW1wbGUsIHByZWduYW5jeSBpbgogKiB0aGUgbGFzdCA0MiB3ZWVrcy4KICogVE9ETzogUmVuYW1lIHRvIExvb2tCYWNrIG9uY2UgdGhlIGV4ZWN1dGlvbiBlbmdpbmUgc3VwcG9ydHMgb3ZlcmxvYWRlZCBmdW5jdGlvbnMuCiAqIEBwYXJhbSBDb25kTGlzdCAtIGEgbGlzdCBvZiBDb25kaXRpb25zCiAqIEByZXR1cm5zIHtMaXN0PENvbmRpdGlvbj59IGEgbGlzdCBvZiBDb25kaXRpb25zIHdpdGggb25zZXQgb3IgcmVjb3JkZWQgZGF0ZSBzcGVjaWZpZWQgbG9va2JhY2sgcGVyaW9kLCBvciBudWxsCiAqIGlmIG51bGwgd2FzIHBhc3NlZCBpbgogKi8KZGVmaW5lIGZ1bmN0aW9uIENvbmRpdGlvbkxvb2tCYWNrKENvbmRMaXN0IExpc3Q8Q29uZGl0aW9uPiwgTG9va0JhY2sgU3lzdGVtLlF1YW50aXR5KToKICBDb25kTGlzdCBDCiAgICBsZXQgTG9va0JhY2tJbnRlcnZhbDogSW50ZXJ2YWxbTm93KCkgLSBMb29rQmFjaywgTm93KCldCiAgICB3aGVyZSAoQy5vbnNldCBhcyBGSElSLmRhdGVUaW1lKS52YWx1ZSBpbiBMb29rQmFja0ludGVydmFsCiAgICAgIG9yIFBlcmlvZFRvSW50ZXJ2YWwoQy5vbnNldCBhcyBGSElSLlBlcmlvZCkgb3ZlcmxhcHMgTG9va0JhY2tJbnRlcnZhbAogICAgICBvciBDLnJlY29yZGVkRGF0ZS52YWx1ZSBpbiBMb29rQmFja0ludGVydmFsCgovKioKICogVGhlIG1vc3QgcmVjZW50IGNvbmRpdGlvbi4gIEZvciBlYWNoIENvbmRpdGlvbiwgdGhpcyBhbGdvcml0aG0gd2lsbCB1c2UgdGhlIENvYWxlc2NlIGZ1bmN0aW9uLCB3aGljaCB1c2VzIHRoZQogKiBmaXJzdCBub24tbnVsbCByZXN1bHQgZnJvbSB0aGVzZSBmaWVsZHM6IG9uc2V0RGF0ZVRpbWUsIG9uc2V0UGVyaW9kLmVuZCwgb25zZXRQZXJpb2Quc3RhcnQsIGFzc2VydGVkRGF0ZS4KICogVGhlIGZvdW5kIGRhdGUgd2lsbCBiZSB1c2VkIHRvIGNvbXBhcmUgQ29uZGl0aW9ucyBhbmQgZGV0ZXJtaW5lIHRoZSBtb3N0IHJlY2VudCBvbmUuCiAqIEBwYXJhbSBDb25kTGlzdCAtIGEgbGlzdCBvZiBDb25kaXRpb25zCiAqIEByZXR1cm5zIHtDb25kaXRpb259IHRoZSBtb3N0IHJlY2VudCBDb25kaXRpb24gZnJvbSB0aGUgbGlzdCwgb3IgbnVsbCBpZiBudWxsIHdhcyBwYXNzZWQgaW4KICovCmRlZmluZSBmdW5jdGlvbiBNb3N0UmVjZW50Q29uZGl0aW9uKENvbmRMaXN0IExpc3Q8Q29uZGl0aW9uPik6CiAgTGFzdChDb25kTGlzdCBDIHNvcnQgYnkgQ29hbGVzY2UoCiAgICAob25zZXQgYXMgRkhJUi5kYXRlVGltZSkudmFsdWUsCiAgICAob25zZXQgYXMgRkhJUi5QZXJpb2QpLiJlbmQiLnZhbHVlLAogICAgKG9uc2V0IGFzIEZISVIuUGVyaW9kKS4ic3RhcnQiLnZhbHVlLAogICAgcmVjb3JkZWREYXRlLnZhbHVlKQogICkKCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQUk9DRURVUkVTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIC8qKgogICogRmlsdGVycyBQcm9jZWR1cmVzIGJ5IGEgY29uY2VwdCByYXRoZXIgdGhhbiBieSBhIFZhbHVlU2V0LiAgSW4gQ1FMIDEuMywgdGhpcyBpcyBidWlsdCBpbnRvIHRoZSByZXRyaWV2ZSwKICogYnV0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgd2Uga2VlcCB0aGlzIHF1ZXJ5IHdoZXJlIGNsYXVzZSBhcyBhbiBvcHRpb24uCiAgKiBAcGFyYW0gS29uY2VwdCAtIHRoZSBjb25jZXB0IHRvIGZpbHRlciBvbiAoaW50ZW50aW9uYWxseSBtaXNwZWxsZWQgdG8gYXZvaWQgbmFtaW5nIGNsYXNoZXMpCiAgKiBAcmV0dXJucyB7TGlzdDxQcm9jZWR1cmU+fSBhIGxpc3Qgb2YgUHJvY2VkdXJlcyBtYXRjaGluZyB0aGUgY29uY2VwdCwgb3IgbnVsbCBpZiBudWxsIHdhcyBwYXNzZWQgaW4KICAqLwogZGVmaW5lIGZ1bmN0aW9uIFByb2NlZHVyZXNCeUNvbmNlcHQoS29uY2VwdCBTeXN0ZW0uQ29uY2VwdCk6CiAgIFtQcm9jZWR1cmVdIFAgd2hlcmUgRkhJUkhlbHBlcnMuVG9Db25jZXB0KFAuY29kZSkgfiBLb25jZXB0CgovKioKICogUHJvY2VkdXJlcyB0aGF0IGFyZSBjb21wbGV0ZWQuIEluIEZISVIgUjQsIHRoaXMgaXMgcmVmbGVjdGVkIGJ5IHN0YXR1czogJ2NvbXBsZXRlZCcuCiAqIEBzZWUgaHR0cDovL2hsNy5vcmcvZmhpci9SNC92YWx1ZXNldC1ldmVudC1zdGF0dXMuaHRtbAogKiBAcGFyYW0gUHJvY0xpc3QgLSBhIGxpc3Qgb2YgUHJvY2VkdXJlcwogKiBAcmV0dXJucyB7TGlzdDxQcm9jZWR1cmU+fSBhIGxpc3Qgb2YgY29tcGxldGVkIFByb2NlZHVyZXMsIG9yIG51bGwgaWYgbnVsbCB3YXMgcGFzc2VkIGluCiAqLwpkZWZpbmUgZnVuY3Rpb24gQ29tcGxldGVkKFByb2NMaXN0IExpc3Q8UHJvY2VkdXJlPik6CiAgUHJvY0xpc3QgUAogICAgd2hlcmUgUC5zdGF0dXMudmFsdWUgPSAnY29tcGxldGVkJwoKLyoqCiAqIFByb2NlZHVyZXMgdGhhdCBhcmUgaW4gcHJvZ3Jlc3MuIEluIEZISVIgUjQsIHRoaXMgaXMgcmVmbGVjdGVkIGJ5IHN0YXR1czogJ2luLXByb2dyZXNzJy4KICogQHNlZSBodHRwOi8vaGw3Lm9yZy9maGlyL1I0L3ZhbHVlc2V0LWV2ZW50LXN0YXR1cy5odG1sCiAqIEBwYXJhbSBQcm9jTGlzdCAtIGEgbGlzdCBvZiBQcm9jZWR1cmVzCiAqIEByZXR1cm5zIHtMaXN0PFByb2NlZHVyZT59IGEgbGlzdCBvZiBjb21wbGV0ZWQgUHJvY2VkdXJlcywgb3IgbnVsbCBpZiBudWxsIHdhcyBwYXNzZWQgaW4KICovCmRlZmluZSBmdW5jdGlvbiBQcm9jZWR1cmVJblByb2dyZXNzKFByb2NMaXN0IExpc3Q8UHJvY2VkdXJlPik6CiAgUHJvY0xpc3QgUAogICAgd2hlcmUgUC5zdGF0dXMudmFsdWUgPSAnaW4tcHJvZ3Jlc3MnCgovKioKICogUHJvY2VkdXJlcyB0aGF0IGFjdHVhbGx5IGhhcHBlbmVkIG9yIGFyZSBoYXBwZW5pbmcuIEluIEZISVIgUjQsIHRoZXJlIGFyZSBhIGZldyBwcm9wZXJ0aWVzIHRoYXQgbmVnYXRlIHRoZQogKiBwcm9jZWR1cmUsIG1vc3Qgbm90YWJseSB3aGVuIHN0YXR1cyBpcyAncHJlcGFyYXRpb24nLCAnbm90LWRvbmUnLCAnZW50ZXJlZC1pbi1lcnJvcicsIG9yICd1bmtub3duJy4KICogQHNlZSBodHRwOi8vaGw3Lm9yZy9maGlyL1I0L3ZhbHVlc2V0LWV2ZW50LXN0YXR1cy5odG1sCiAqIEBwYXJhbSBQcm9jTGlzdCAtIGEgbGlzdCBvZiBQcm9jZWR1cmVzCiAqIEByZXR1cm5zIHtMaXN0PFByb2NlZHVyZT59IGEgbGlzdCBvZiBQcm9jZWR1cmVzIHRoYXQgYWN0dWFsbHkgaGFwcGVuZWQgb3IgYXJlIGhhcHBlbmluZywgb3IgbnVsbCBpZiBudWxsIHdhcyBwYXNzZWQgaW4KICovCmRlZmluZSBmdW5jdGlvbiBQcm9jZWR1cmVQZXJmb3JtYW5jZShQcm9jTGlzdCBMaXN0PFByb2NlZHVyZT4pOgogIFByb2NMaXN0IFAKICAgIHdoZXJlIG5vdCAoUC5zdGF0dXMudmFsdWUgaW4geydwcmVwYXJhdGlvbicsICdub3QtZG9uZScsICdlbnRlcmVkLWluLWVycm9yJywgJ3Vua25vd24nfSkKCi8qKgogKiBQcm9jZWR1cmVzIHBlcmZvcm1lZCBpbiB0aGUgc3BlY2lmaWVkICJsb29rIGJhY2siIHBlcmlvZC4gIEZvciBleGFtcGxlLCBQQ0lzIHBlcmZvcm1lZCBpbiB0aGUKICogcGFzdCAyIHdlZWtzLgogKiBUT0RPOiBSZW5hbWUgdG8gTG9va0JhY2sgb25jZSB0aGUgZXhlY3V0aW9uIGVuZ2luZSBzdXBwb3J0cyBvdmVybG9hZGVkIGZ1bmN0aW9ucy4KICogQHBhcmFtIFByb2NMaXN0IC0gYSBsaXN0IG9mIFByb2NlZHVyZXMKICogQHBhcmFtIExvb2tCYWNrIC0gdGhlIGxvb2tiYWNrIHBlcmlvZCBmb3Igd2hlbiB0aGUgcHJvY2VkdXJlIHdhcyBwZXJmb3JtZWQKICogQHJldHVybnMge0xpc3Q8UHJvY2VkdXJlPn0gYSBsaXN0IG9mIFByb2NlZHVyZXMgcGVyZm9ybWVkIGluIHRoZSBsb29rIGJhY2sgcGVyaW9kLCBvciBudWxsIGlmIG51bGwKICogd2FzIHBhc3NlZCBpbgogKi8KZGVmaW5lIGZ1bmN0aW9uIFByb2NlZHVyZUxvb2tCYWNrKFByb2NMaXN0IExpc3Q8UHJvY2VkdXJlPiwgTG9va0JhY2sgU3lzdGVtLlF1YW50aXR5KToKICBQcm9jTGlzdCBQCiAgICBsZXQgTG9va0JhY2tJbnRlcnZhbDogSW50ZXJ2YWxbTm93KCkgLSBMb29rQmFjaywgTm93KCldCiAgICB3aGVyZSAoUC5wZXJmb3JtZWQgYXMgRkhJUi5kYXRlVGltZSkudmFsdWUgaW4gTG9va0JhY2tJbnRlcnZhbAogICAgICBvciBQZXJpb2RUb0ludGVydmFsKFAucGVyZm9ybWVkIGFzIEZISVIuUGVyaW9kKSBvdmVybGFwcyBMb29rQmFja0ludGVydmFsCgovKioKICogVGhlIG1vc3QgcmVjZW50IHByb2NlZHVyZS4gIEZvciBlYWNoIFByb2NlZHVyZSwgdGhpcyBhbGdvcml0aG0gd2lsbCB1c2UgdGhlIENvYWxlc2NlIGZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIHRoZQogKiBmaXJzdCBub24tbnVsbCByZXN1bHQgZnJvbSB0aGVzZSBmaWVsZHM6IHBlcmZvcm1lZERhdGVUaW1lLCBwZXJmb3JtZWRQZXJpb2QuZW5kLCBwZXJmb3JtZWRQZXJpb2Quc3RhcnQuCiAqIFRoZSBmb3VuZCBkYXRlIHdpbGwgYmUgdXNlZCB0byBjb21wYXJlIFByb2NlZHVyZXMgYW5kIGRldGVybWluZSB0aGUgbW9zdCByZWNlbnQgb25lLgogKiBAcGFyYW0gUHJvY0xpc3QgLSBhIGxpc3Qgb2YgUHJvY2VkdXJlcwogKiBAcmV0dXJucyB7UHJvY2VkdXJlfSB0aGUgbW9zdCByZWNlbnQgUHJvY2VkdXJlIGZyb20gdGhlIGxpc3QsIG9yIG51bGwgaWYgbnVsbCB3YXMgcGFzc2VkIGluCiAqLwpkZWZpbmUgZnVuY3Rpb24gTW9zdFJlY2VudFByb2NlZHVyZShQcm9jTGlzdCBMaXN0PFByb2NlZHVyZT4pOgogIExhc3QoUHJvY0xpc3QgUCBzb3J0IGJ5IENvYWxlc2NlKAogICAgKHBlcmZvcm1lZCBhcyBGSElSLmRhdGVUaW1lKS52YWx1ZSwKICAgIChwZXJmb3JtZWQgYXMgRkhJUi5QZXJpb2QpLiJlbmQiLnZhbHVlLAogICAgKHBlcmZvcm1lZCBhcyBGSElSLlBlcmlvZCkuInN0YXJ0Ii52YWx1ZSkKICApCgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTRVJWSUNFUkVRVUVTVFMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIE5PVEU6IEluIEZISVIgUjQsIFByb2NlZHVyZVJlcXVlc3QgYW5kIFJlZmVycmFsUmVxdWVzdCBhcmUgcmVwbGFjZWQgYnkgU2VydmljZVJlcXVlc3QKCi8qKgogKiBTZXJ2aWNlUmVxdWVzdHMgdGhhdCBhcmUgYWN0aXZlIG9yIGNvbXBsZXRlZC4gSW4gRkhJUiBSNCwgdGhpcyBpcyByZWZsZWN0ZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcKICogc3RhdHVzIHZhbHVlcy4KICogQHNlZSBodHRwOi8vaGw3Lm9yZy9maGlyL1I0L3ZhbHVlc2V0LXJlcXVlc3Qtc3RhdHVzLmh0bWwKICogQHBhcmFtIFNlcnZpY2VSZXF1ZXN0TGlzdCAtIGEgbGlzdCBvZiBTZXJ2aWNlUmVxdWVzdHMKICogQHJldHVybnMge0xpc3Q8U2VydmljZVJlcXVlc3Q+fSBhIGxpc3Qgb2YgYWNjZXB0ZWQsIGluLXByb2dyZXNzLCBvciBjb21wbGV0ZWQgUHJvY2VkdXJlUmVxdWVzdHMsCiAqIG9yIG51bGwgaWYgbnVsbCB3YXMgcGFzc2VkIGluCiAqLwpkZWZpbmUgZnVuY3Rpb24gU2VydmljZVJlcXVlc3RBY3RpdmVPckNvbXBsZXRlZChTZXJ2aWNlUmVxdWVzdExpc3QgTGlzdDxTZXJ2aWNlUmVxdWVzdD4pOgogIFNlcnZpY2VSZXF1ZXN0TGlzdCBTCiAgICB3aGVyZSBTLnN0YXR1cy52YWx1ZSBpbiBMaXN0eydhY3RpdmUnLCAnY29tcGxldGVkJ30KCi8qKgogKiBTZXJ2aWNlUmVxdWVzdHMgb3JkZXJlZCBpbiB0aGUgc3BlY2lmaWVkICJsb29rIGJhY2siIHBlcmlvZC4gIEZvciBleGFtcGxlLCBQQ0lzIG9yZGVyZWQgaW4gdGhlCiAqIHBhc3QgMiB3ZWVrcy4KICogVE9ETzogUmVuYW1lIHRvIExvb2tCYWNrIG9uY2UgdGhlIGV4ZWN1dGlvbiBlbmdpbmUgc3VwcG9ydHMgb3ZlcmxvYWRlZCBmdW5jdGlvbnMuCiAqIEBwYXJhbSBTZXJ2aWNlUmVxdWVzdExpc3QgLSBhIGxpc3Qgb2YgU2VydmljZVJlcXVlc3RzCiAqIEBwYXJhbSBMb29rQmFjayAtIHRoZSBsb29rYmFjayBwZXJpb2QgZm9yIHdoZW4gdGhlIHNlcnZpY2Ugd2FzIG9yZGVyZWQKICogQHJldHVybnMge0xpc3Q8U2VydmljZVJlcXVlc3Q+fSBhIGxpc3Qgb2YgU2VydmljZVJlcXVlc3RzIG9yZGVyZWQgaW4gdGhlIGxvb2sgYmFjayBwZXJpb2QsIG9yIG51bGwgaWYgbnVsbAogKiB3YXMgcGFzc2VkIGluCiAqLwpkZWZpbmUgZnVuY3Rpb24gU2VydmljZVJlcXVlc3RMb29rQmFjayhTZXJ2aWNlUmVxdWVzdExpc3QgTGlzdDxTZXJ2aWNlUmVxdWVzdD4sIExvb2tCYWNrIFN5c3RlbS5RdWFudGl0eSk6CiAgU2VydmljZVJlcXVlc3RMaXN0IFMKICAgIHdoZXJlIFMuYXV0aG9yZWRPbi52YWx1ZSBpbiBJbnRlcnZhbFtOb3coKSAtIExvb2tCYWNrLCBOb3coKV0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE1FRElDQVRJT05TIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLyoqCiAqIEZpbHRlcnMgTWVkaWNhdGlvblN0YXRlbWVudHMgYnkgYSBjb25jZXB0IHJhdGhlciB0aGFuIGJ5IGEgVmFsdWVTZXQuICBJbiBDUUwgMS4zLCB0aGlzIGlzIGJ1aWx0IGludG8gdGhlIHJldHJpZXZlLAogKiBidXQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3ZSBrZWVwIHRoaXMgcXVlcnkgd2hlcmUgY2xhdXNlIGFzIGFuIG9wdGlvbi4KICogQHBhcmFtIEtvbmNlcHQgLSB0aGUgY29uY2VwdCB0byBmaWx0ZXIgb24gKGludGVudGlvbmFsbHkgbWlzcGVsbGVkIHRvIGF2b2lkIG5hbWluZyBjbGFzaGVzKQogKiBAcmV0dXJucyB7TGlzdDxNZWRpY2F0aW9uU3RhdGVtZW50Pn0gYSBsaXN0IG9mIE1lZGljYXRpb25TdGF0ZW1lbnQgbWF0Y2hpbmcgdGhlIGNvbmNlcHQsIG9yIG51bGwgaWYgbnVsbCB3YXMgcGFzc2VkIGluCiAqLwpkZWZpbmUgZnVuY3Rpb24gTWVkaWNhdGlvblN0YXRlbWVudHNCeUNvbmNlcHQoS29uY2VwdCBTeXN0ZW0uQ29uY2VwdCk6CiAgW01lZGljYXRpb25TdGF0ZW1lbnRdIE0gd2hlcmUgRkhJUkhlbHBlcnMuVG9Db25jZXB0KE0ubWVkaWNhdGlvbiBhcyBGSElSLkNvZGVhYmxlQ29uY2VwdCkgfiBLb25jZXB0CgovKioKICogRmlsdGVycyBNZWRpY2F0aW9uUmVxdWVzdHMgYnkgYSBjb25jZXB0IHJhdGhlciB0aGFuIGJ5IGEgVmFsdWVTZXQuICBJbiBDUUwgMS4zLCB0aGlzIGlzIGJ1aWx0IGludG8gdGhlIHJldHJpZXZlLAogKiBidXQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3ZSBrZWVwIHRoaXMgcXVlcnkgd2hlcmUgY2xhdXNlIGFzIGFuIG9wdGlvbi4KICogQHBhcmFtIEtvbmNlcHQgLSB0aGUgY29uY2VwdCB0byBmaWx0ZXIgb24gKGludGVudGlvbmFsbHkgbWlzcGVsbGVkIHRvIGF2b2lkIG5hbWluZyBjbGFzaGVzKQogKiBAcmV0dXJucyB7TGlzdDxNZWRpY2F0aW9uUmVxdWVzdD59IGEgbGlzdCBvZiBNZWRpY2F0aW9uUmVxdWVzdHMgbWF0Y2hpbmcgdGhlIGNvbmNlcHQsIG9yIG51bGwgaWYgbnVsbCB3YXMgcGFzc2VkIGluCiAqLwpkZWZpbmUgZnVuY3Rpb24gTWVkaWNhdGlvblJlcXVlc3RzQnlDb25jZXB0KEtvbmNlcHQgU3lzdGVtLkNvbmNlcHQpOgogIFtNZWRpY2F0aW9uUmVxdWVzdF0gTSB3aGVyZSBGSElSSGVscGVycy5Ub0NvbmNlcHQoTS5tZWRpY2F0aW9uIGFzIEZISVIuQ29kZWFibGVDb25jZXB0KSB+IEtvbmNlcHQKCi8qKgogKiBNZWRpY2F0aW9ucyB0aGF0IGFyZSBhY3RpdmUsIGFjY29yZGluZyB0byBhIHN0YXRlbWVudCwgYnV0IG5vdCBuZWNlc3NhcmlseSB2ZXJpZmllZCB2aWEgYSBwcmVzY3JpcHRpb24uICBGb3IgZXhhbXBsZSwKICogbWVkaWNhdGlvbnMgdGhhdCBhIHBhdGllbnQgaGFzIHNlbGYtcmVwb3J0ZWQgdG8gYmUgdGFraW5nLiAgVGhpcyBtYXksIGhvd2V2ZXIsIGFsc28gcmVwcmVzZW50IG1lZGljYXRpb25zIHRoYXQgYXJlCiAqIGV4cGVjdGVkIHRvIGJlIGFjdGl2ZSBhZnRlciBwcm92aWRpbmcgYSBwcmVzY3JpcHRpb24gKGUuZy4sIGNsaW5pY2lhbi1yZXBvcnRlZCkuIEluIEZISVIgUjQsIHRoaXMgaXMgcmVmbGVjdGVkIGJ5CiAqIE1lZGljYXRpb25TdGF0ZW1lbnQgd2l0aCBzdGF0dXMgJ2FjdGl2ZScgYW5kIG5vIGVuZCBkYXRlIG9yIGFuIGVuZCBkYXRlIGluIHRoZSBmdXR1cmUuCiAqIFRPRE86IFJlbmFtZSB0byBBY3RpdmUgb25jZSB0aGUgZXhlY3V0aW9uIGVuZ2luZSBzdXBwb3J0cyBvdmVybG9hZGVkIGZ1bmN0aW9ucy4KICogQHNlZSBodHRwOi8vaGw3Lm9yZy9maGlyL1I0L3ZhbHVlc2V0LW1lZGljYXRpb24tc3RhdGVtZW50LXN0YXR1cy5odG1sCiAqIEBwYXJhbSBNZWRMaXN0IC0gYSBsaXN0IG9mIE1lZGljYXRpb25TdGF0ZW1lbnRzCiAqIEByZXR1cm5zIHtMaXN0PE1lZGljYXRpb25TdGF0ZW1lbnQ+fSBhIGxpc3Qgb2YgYWN0aXZlIG1lZGljYXRpb24gc3RhdGVtZW50cywgb3IgbnVsbCBpZiBudWxsIHdhcyBwYXNzZWQgaW4KICovCmRlZmluZSBmdW5jdGlvbiBBY3RpdmVNZWRpY2F0aW9uU3RhdGVtZW50KE1lZExpc3QgTGlzdDxNZWRpY2F0aW9uU3RhdGVtZW50Pik6CiAgTWVkTGlzdCBNCiAgICBsZXQgRWZmZWN0aXZlUGVyaW9kOiBQZXJpb2RUb0ludGVydmFsKE0uZWZmZWN0aXZlIGFzIEZISVIuUGVyaW9kKQogICAgd2hlcmUgTS5zdGF0dXMudmFsdWUgPSAnYWN0aXZlJwogICAgICBhbmQgKGVuZCBvZiBFZmZlY3RpdmVQZXJpb2QgaXMgbnVsbCBvciBlbmQgb2YgRWZmZWN0aXZlUGVyaW9kIGFmdGVyIE5vdygpKQoKLyoqCiogTWVkaWNhdGlvbiByZXF1ZXN0cyB0aGF0IGFyZSBhY3RpdmUuICBJbiBGSElSIFI0LCB0aGlzIGlzIHJlZmxlY3RlZCBieSBNZWRpY2F0aW9uUmVxdWVzdCB3aXRoIHN0YXR1cyAnYWN0aXZlJy4KKiBOb3RlIHRoYXQgaW4gUjQsIHRoZSBNZWRpY2F0aW9uUmVxdWVzdCBCb3VuZGFyaWVzIGFuZCBSZWxhdGlvbnNoaXBzIG5vdyBzYXlzOiAiV2hlbiByZXBvcnRpbmcgb24gdGhlIHVzYWdlIG9mCiogYSBtZWRpY2F0aW9uIGJ5IGEgcGF0aWVudCwgdGhlIE1lZGljYXRpb25TdGF0ZW1lbnQgcmVzb3VyY2Ugc2hvdWxkIGJlIHVzZWQuIiBJdCBhbHNvIGluZGljYXRlcyB0aGF0OgoqICJBIG1lZGljYXRpb24gc3RhdGVtZW50IGlzIG5vdCBhIHBhcnQgb2YgdGhlIHByZXNjcmliZS0+ZGlzcGVuc2UtPmFkbWluaXN0ZXIgc2VxdWVuY2UgYnV0IGlzIGEgcmVwb3J0IHRoYXQKKiBzdWNoIGEgc2VxdWVuY2UgKG9yIGF0IGxlYXN0IGEgcGFydCBvZiBpdCkgZGlkIHRha2UgcGxhY2UgcmVzdWx0aW5nIGluIGEgYmVsaWVmIHRoYXQgdGhlIHBhdGllbnQgaGFzIHJlY2VpdmVkCiogYSBwYXJ0aWN1bGFyIG1lZGljYXRpb24uIiBJbiB0aGlzIHJlZ2FyZCwgTWVkaWNhdGlvblN0YXRlbWVudCBpcyBtb3JlIGFwcHJvcHJpYXRlIGFzIGFuIGluZGljYXRpb24gb2YgYW4gYWN0dWFsbHkKKiBhY3RpdmUgbWVkaWNhdGlvbiwgYWx0aG91Z2ggaXQncyBub3QgY2xlYXIgaWYgdmVuZG9ycyByZWFsbHkgd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBNZWRpY2F0aW9uU3RhdGVtZW50cyBpbgoqIHRoZXNlIGNhc2VzIG9yIG5vdC4gIFVudGlsIHdlIGtub3csIE1lZGljYXRpb25SZXF1ZXN0IG1heSBiZSB0aGUgYmVzdCBwcm94eSB3ZSBoYXZlIGZvciBhbiBhY3RpdmUgbWVkaWNhdGlvbi4KKiBUT0RPOiBTaG91bGQgdGhlICJpbnRlbnQiIGZpZWxkIGJlIGNvbnNpZGVyZWQgKGUuZy4sIGlzIGl0IHN0aWxsIGFjdGl2ZSBpZiBpbnRlbnQgaXMgInByb3Bvc2FsIiBvciAicGxhbiIpPwoqIFRPRE86IFJlbmFtZSB0byBBY3RpdmUgb25jZSB0aGUgZXhlY3V0aW9uIGVuZ2luZSBzdXBwb3J0cyBvdmVybG9hZGVkIGZ1bmN0aW9ucy4KKiBAc2VlIGh0dHA6Ly9obDcub3JnL2ZoaXIvUjQvdmFsdWVzZXQtbWVkaWNhdGlvbnJlcXVlc3Qtc3RhdHVzLmh0bWwKKiBAcGFyYW0gTWVkTGlzdCAtIGEgbGlzdCBvZiBNZWRpY2F0aW9uUmVxdWVzdHMKKiBAcmV0dXJucyB7TGlzdDxNZWRpY2F0aW9uUmVxdWVzdD59IGEgbGlzdCBvZiBhY3RpdmUgbWVkaWNhdGlvbiByZXF1ZXN0cywgb3IgbnVsbCBpZiBudWxsIHdhcyBwYXNzZWQgaW4KKi8KZGVmaW5lIGZ1bmN0aW9uIEFjdGl2ZU1lZGljYXRpb25SZXF1ZXN0KE1lZExpc3QgTGlzdDxNZWRpY2F0aW9uUmVxdWVzdD4pOgogIE1lZExpc3QgTSB3aGVyZSBNLnN0YXR1cy52YWx1ZSA9ICdhY3RpdmUnCgovKioKKiBNZWRpY2F0aW9uIHJlcXVlc3RzIHRoYXQgYXJlIGFjdGl2ZSBvciBjb21wbGV0ZWQsIGFjY29yZGluZyB0byBhIHByZXNjcmlwdGlvbi4gIEluIEZISVIgUjQsIHRoaXMgaXMgcmVmbGVjdGVkIGJ5IE1lZGljYXRpb25SZXF1ZXN0Ciogd2l0aCBzdGF0dXMgJ2FjdGl2ZScgb3IgJ2NvbXBsZXRlZCcuICBTZWUgdGhlIG5vdGUgYWJvdmUgKGluIEFjdGl2ZU1lZGljYXRpb25SZXF1ZXN0KSBmb3IgbW9yZSBudWFuY2UgcmVnYXJkaW5nIE1lZGljYXRpb25SZXF1ZXN0CiogdnMuIE1lZGljYXRpb25TdGF0ZW1lbnQuCiogQHNlZSBodHRwOi8vaGw3Lm9yZy9maGlyL1I0L3ZhbHVlc2V0LW1lZGljYXRpb25yZXF1ZXN0LXN0YXR1cy5odG1sCiogQHBhcmFtIE1lZExpc3QgLSBhIGxpc3Qgb2YgTWVkaWNhdGlvblJlcXVlc3RzCiogQHJldHVybnMge0xpc3Q8TWVkaWNhdGlvblJlcXVlc3Q+fSBhIGxpc3Qgb2YgYWN0aXZlIG1lZGljYXRpb24gcmVxdWVzdHMsIG9yIG51bGwgaWYgbnVsbCB3YXMgcGFzc2VkIGluCiovCmRlZmluZSBmdW5jdGlvbiBBY3RpdmVPckNvbXBsZXRlZE1lZGljYXRpb25SZXF1ZXN0KE1lZExpc3QgTGlzdDxNZWRpY2F0aW9uUmVxdWVzdD4pOgogIE1lZExpc3QgTQogICAgd2hlcmUgTS5zdGF0dXMudmFsdWUgPSAnYWN0aXZlJwogICAgICBvciBNLnN0YXR1cy52YWx1ZSA9ICdjb21wbGV0ZWQnCgovKioKICogTWVkaWNhdGlvbnMgdGhhdCBhcmUgYWN0aXZlIG9yIGNvbXBsZXRlZCwgYWNjb3JkaW5nIHRvIGEgc3RhdGVtZW50LCBidXQgbm90IG5lY2Vzc2FyaWx5IHZlcmlmaWVkIHZpYSBhIHByZXNjcmlwdGlvbi4KICogRm9yIGV4YW1wbGUsIG1lZGljYXRpb25zIHRoYXQgYSBwYXRpZW50IGhhcyBzZWxmLXJlcG9ydGVkIHRvIGJlIHRha2luZy4gIFRoaXMgbWF5LCBob3dldmVyLCBhbHNvIHJlcHJlc2VudAogKiBtZWRpY2F0aW9ucyB0aGF0IGFyZSBleHBlY3RlZCB0byBiZSBhY3RpdmUgYWZ0ZXIgcHJvdmlkaW5nIGEgcHJlc2NyaXB0aW9uIChlLmcuLCBjbGluaWNpYW4tcmVwb3J0ZWQpLiAgSW4gRkhJUiBSNCwKICogdGhpcyBpcyByZWZsZWN0ZWQgYnkgTWVkaWNhdGlvblN0YXRlbWVudCB3aXRoIHN0YXR1cyAnYWN0aXZlJyBvciAnY29tcGxldGVkJy4KICogVE9ETzogUmVuYW1lIHRvIEFjdGl2ZU9yQ29tcGxldGVkIG9uY2UgdGhlIGV4ZWN1dGlvbiBlbmdpbmUgc3VwcG9ydHMgb3ZlcmxvYWRlZCBmdW5jdGlvbnMuCiAqIEBzZWUgaHR0cDovL2hsNy5vcmcvZmhpci9SNC92YWx1ZXNldC1tZWRpY2F0aW9uLXN0YXRlbWVudC1zdGF0dXMuaHRtbAogKiBAcGFyYW0gTWVkTGlzdCAtIGEgbGlzdCBvZiBNZWRpY2F0aW9uU3RhdGVtZW50cwogKiBAcmV0dXJucyB7TGlzdDxNZWRpY2F0aW9uU3RhdGVtZW50Pn0gYSBsaXN0IG9mIGFjdGl2ZSBvciBjb21wbGV0ZWQgbWVkaWNhdGlvbiBzdGF0ZW1lbnRzLCBvciBudWxsIGlmIG51bGwgd2FzIHBhc3NlZAogKiAgIGluCiAqLwpkZWZpbmUgZnVuY3Rpb24gQWN0aXZlT3JDb21wbGV0ZWRNZWRpY2F0aW9uU3RhdGVtZW50KE1lZExpc3QgTGlzdDxNZWRpY2F0aW9uU3RhdGVtZW50Pik6CiAgTWVkTGlzdCBNCiAgICB3aGVyZSBNLnN0YXR1cy52YWx1ZSA9ICdhY3RpdmUnCiAgICAgIG9yIE0uc3RhdHVzLnZhbHVlID0gJ2NvbXBsZXRlZCcKCi8qKgoqIE1lZGljYXRpb24gcmVxdWVzdHMgdGhhdCBhcmUgYWN0aXZlLCBjb21wbGV0ZWQsIG9yIHN0b3BwZWQsIGFjY29yZGluZyB0byBhIHByZXNjcmlwdGlvbi4gIEluIEZISVIgUjQsIHRoaXMgaXMKKiByZWZsZWN0ZWQgYnkgTWVkaWNhdGlvblJlcXVlc3Qgd2l0aCBzdGF0dXMgJ2FjdGl2ZScsICdjb21wbGV0ZWQnLCBvciAnc3RvcHBlZCcuIFNlZSB0aGUgbm90ZSBhYm92ZQoqIChpbiBBY3RpdmVNZWRpY2F0aW9uUmVxdWVzdCkgZm9yIG1vcmUgbnVhbmNlIHJlZ2FyZGluZyBNZWRpY2F0aW9uUmVxdWVzdCB2cy4gTWVkaWNhdGlvblN0YXRlbWVudC4KKiBAc2VlIGh0dHA6Ly9obDcub3JnL2ZoaXIvUjQvdmFsdWVzZXQtbWVkaWNhdGlvbnJlcXVlc3Qtc3RhdHVzLmh0bWwKKiBAcGFyYW0gTWVkTGlzdCAtIGEgbGlzdCBvZiBNZWRpY2F0aW9uT3JkZXJzCiogQHJldHVybnMge0xpc3Q8TWVkaWNhdGlvblJlcXVlc3RyPn0gYSBsaXN0IG9mIGFjdGl2ZSBtZWRpY2F0aW9uIHJlcXVlc3RzLCBvciBudWxsIGlmIG51bGwgd2FzIHBhc3NlZCBpbgoqLwpkZWZpbmUgZnVuY3Rpb24gQWN0aXZlQ29tcGxldGVkT3JTdG9wcGVkTWVkaWNhdGlvblJlcXVlc3QoTWVkTGlzdCBMaXN0PE1lZGljYXRpb25SZXF1ZXN0Pik6CiAgTWVkTGlzdCBNCiAgICB3aGVyZSBNLnN0YXR1cy52YWx1ZSA9ICdhY3RpdmUnCiAgICAgIG9yIE0uc3RhdHVzLnZhbHVlID0gJ2NvbXBsZXRlZCcKICAgICAgb3IgTS5zdGF0dXMudmFsdWUgPSAnc3RvcHBlZCcKCi8qKgoqIE1lZGljYXRpb24gcmVxdWVzdHMgdGhhdCBhcmUgaXNzdWVkIGluIHRoZSBzcGVjaWZpZWQgImxvb2sgYmFjayIgcGVyaW9kLgoqIFRPRE86IFJlbmFtZSB0byBMb29rQmFjayBvbmNlIHRoZSBleGVjdXRpb24gZW5naW5lIHN1cHBvcnRzIG92ZXJsb2FkZWQgZnVuY3Rpb25zLgoqIEBwYXJhbSBNZWRMaXN0IC0gYSBsaXN0IG9mIE1lZGljYXRpb25zCiogQHBhcmFtIExvb2tCYWNrIC0gdGhlIGxvb2tiYWNrIHBlcmlvZCBmb3Igd2hlbiB0aGUgbWVkaWNhdGlvbiB3YXMgcHJlc2NyaWJlZAoqIEByZXR1cm5zIHtMaXN0PE1lZGljYXRpb25SZXF1ZXN0Pn0gYSBsaXN0IG9mIE1lZGljYXRpb25zIHByZXNjcmliZWQgaW4gdGhlIGxvb2sgYmFjayBwZXJpb2QsIG9yIG51bGwgaWYgbnVsbAoqIHdhcyBwYXNzZWQgaW4KKi8KZGVmaW5lIGZ1bmN0aW9uIE1lZGljYXRpb25SZXF1ZXN0TG9va0JhY2soTWVkTGlzdCBMaXN0PE1lZGljYXRpb25SZXF1ZXN0PiwgTG9va0JhY2sgU3lzdGVtLlF1YW50aXR5KToKICBNZWRMaXN0IE0KICAgIGxldCBMb29rQmFja0ludGVydmFsOiBJbnRlcnZhbFtOb3coKSAtIExvb2tCYWNrLCBOb3coKV0KICAgIHdoZXJlIE0uYXV0aG9yZWRPbi52YWx1ZSBpbiBMb29rQmFja0ludGVydmFsCiAgICAvLyBEU1RVMiBhbHNvIGNoZWNrZWQgdGhlIGRhdGVFbmRlZCBwcm9wZXJ0eSBvZiBNZWRpY2F0aW9uT3JkZXIsIGJ1dCB0aGlzIGRvZXNuJ3QgZXhpc3QgZm9yIE1lZGljYXRpb25SZXF1ZXN0Ci8qKgoqIE1lZGljYXRpb24gU3RhdGVtZW50cyB0aGF0IGFyZSBpc3N1ZWQgaW4gdGhlIHNwZWNpZmllZCAibG9vayBiYWNrIiBwZXJpb2QuCiogVE9ETzogUmVuYW1lIHRvIExvb2tCYWNrIG9uY2UgdGhlIGV4ZWN1dGlvbiBlbmdpbmUgc3VwcG9ydHMgb3ZlcmxvYWRlZCBmdW5jdGlvbnMuCiogQHBhcmFtIE1lZExpc3QgLSBhIGxpc3Qgb2YgTWVkaWNhdGlvbnMKKiBAcGFyYW0gTG9va0JhY2sgLSB0aGUgbG9va2JhY2sgcGVyaW9kIGZvciB3aGVuIHRoZSBtZWRpY2F0aW9uIHdhcyBwcmVzY3JpYmVkCiogQHJldHVybnMge0xpc3Q8TWVkaWNhdGlvblN0YXRlbWVudD59IGEgbGlzdCBvZiBNZWRpY2F0aW9ucyBwcmVzY3JpYmVkIGluIHRoZSBsb29rIGJhY2sgcGVyaW9kLCBvciBudWxsIGlmIG51bGwKKiB3YXMgcGFzc2VkIGluCiovCmRlZmluZSBmdW5jdGlvbiBNZWRpY2F0aW9uU3RhdGVtZW50TG9va0JhY2soTWVkTGlzdCBMaXN0PE1lZGljYXRpb25TdGF0ZW1lbnQ+LCBMb29rQmFjayBTeXN0ZW0uUXVhbnRpdHkpOgogIE1lZExpc3QgTQogICAgbGV0IExvb2tCYWNrSW50ZXJ2YWw6IEludGVydmFsW05vdygpIC0gTG9va0JhY2ssIE5vdygpXQogICAgd2hlcmUgKE0uZWZmZWN0aXZlIGFzIEZISVIuZGF0ZVRpbWUpLnZhbHVlIGluIExvb2tCYWNrSW50ZXJ2YWwKICAgICAgb3IgUGVyaW9kVG9JbnRlcnZhbChNLmVmZmVjdGl2ZSBhcyBGSElSLlBlcmlvZCkgb3ZlcmxhcHMgTG9va0JhY2tJbnRlcnZhbAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkNPVU5URVJTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovKioKICogRmlsdGVycyBFbmNvdW50ZXJzIGJ5IGEgY29uY2VwdCByYXRoZXIgdGhhbiBieSBhIFZhbHVlU2V0LiAgSW4gQ1FMIDEuMywgdGhpcyBpcyBidWlsdCBpbnRvIHRoZSByZXRyaWV2ZSwKICogYnV0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgd2Uga2VlcCB0aGlzIHF1ZXJ5IHdoZXJlIGNsYXVzZSBhcyBhbiBvcHRpb24uCiAqIEBwYXJhbSBLb25jZXB0IC0gdGhlIGNvbmNlcHQgdG8gZmlsdGVyIG9uIChpbnRlbnRpb25hbGx5IG1pc3BlbGxlZCB0byBhdm9pZCBuYW1pbmcgY2xhc2hlcykKICogQHJldHVybnMge0xpc3Q8RW5jb3VudGVyPn0gYSBsaXN0IG9mIEVuY291bnRlcnMgbWF0Y2hpbmcgdGhlIGNvbmNlcHQsIG9yIG51bGwgaWYgbnVsbCB3YXMgcGFzc2VkIGluCiAqLwpkZWZpbmUgZnVuY3Rpb24gRW5jb3VudGVyc0J5Q29uY2VwdChLb25jZXB0IFN5c3RlbS5Db25jZXB0KToKICBbRW5jb3VudGVyXSBFIHdoZXJlIGV4aXN0cyggKEUudHlwZSkgRVQgd2hlcmUgRkhJUkhlbHBlcnMuVG9Db25jZXB0KEVUKSB+IEtvbmNlcHQgKQovKioKICogRW5jb3VudGVycyB0aGF0IGFyZSBpbiBwcm9ncmVzcy4gSW4gRkhJUiBSNCwgdGhpcyBpcyByZWZsZWN0ZWQgYnkgc3RhdHVzOiAnaW4tcHJvZ3Jlc3MnLgogKiBAc2VlIGh0dHA6Ly9obDcub3JnL2ZoaXIvUjQvdmFsdWVzZXQtZW5jb3VudGVyLXN0YXR1cy5odG1sCiAqIEBwYXJhbSBFbmNMaXN0IC0gYSBsaXN0IG9mIEVuY291bnRlcnMKICogQHJldHVybnMge0xpc3Q8RW5jb3VudGVyPn0gYSBsaXN0IG9mIGluIHByb2dyZXNzIGVuY291bnRlcnMsIG9yIG51bGwgaWYgbnVsbCB3YXMgcGFzc2VkIGluCiAqLwpkZWZpbmUgZnVuY3Rpb24gSW5Qcm9ncmVzcyhFbmNMaXN0IExpc3Q8RW5jb3VudGVyPik6CiAgRW5jTGlzdCBFCiAgICB3aGVyZSBFLnN0YXR1cy52YWx1ZSA9ICdpbi1wcm9ncmVzcycKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQUxMRVJHWSBJTlRPTEVSQU5DRVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8qKgogKiBGaWx0ZXJzIEFsbGVyZ3lJbnRvbGVyYW5jZXMgYnkgYSBjb25jZXB0IHJhdGhlciB0aGFuIGJ5IGEgVmFsdWVTZXQuICBJbiBDUUwgMS4zLCB0aGlzIGlzIGJ1aWx0IGludG8gdGhlIHJldHJpZXZlLAogKiBidXQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3ZSBrZWVwIHRoaXMgcXVlcnkgd2hlcmUgY2xhdXNlIGFzIGFuIG9wdGlvbi4KICogQHBhcmFtIEtvbmNlcHQgLSB0aGUgY29uY2VwdCB0byBmaWx0ZXIgb24gKGludGVudGlvbmFsbHkgbWlzcGVsbGVkIHRvIGF2b2lkIG5hbWluZyBjbGFzaGVzKQogKiBAcmV0dXJucyB7TGlzdDxBbGxlcmd5SW50b2xlcmFuY2U+fSBhIGxpc3Qgb2YgQWxsZXJneSBJbnRvbGVyYW5jZXMgbWF0Y2hpbmcgdGhlIGNvbmNlcHQsIG9yIG51bGwgaWYgbnVsbCB3YXMgcGFzc2VkIGluCiAqLwpkZWZpbmUgZnVuY3Rpb24gQWxsZXJneUludG9sZXJhbmNlc0J5Q29uY2VwdChLb25jZXB0IFN5c3RlbS5Db25jZXB0KToKICBbQWxsZXJneUludG9sZXJhbmNlXSBBIHdoZXJlIEZISVJIZWxwZXJzLlRvQ29uY2VwdChBLmNvZGUpIH4gS29uY2VwdAovKioKKiBBbGxlcmd5SW50b2xlcmFuY2VzIHRoYXQgYXJlIGFjdGl2ZSBvciBjb25maXJtZWQuICBJbiBGSElSIFNUVTMsIHRoaXMgaXMgcmVmbGVjdGVkIGJ5IEFsbGVyZ3lJbnRvbGVyYW5jZQoqIHdpdGggY2xpbmljYWxTdGF0dXMgJ2FjdGl2ZScgb3IgdmVyaWZpY2F0aW9uU3RhdHVzICdjb25maXJtZWQnCiogQHNlZSBodHRwczovL3d3dy5obDcub3JnL2ZoaXIvUjQvdmFsdWVzZXQtYWxsZXJneS1jbGluaWNhbC1zdGF0dXMuaHRtbAoqIEBzZWUgaHR0cHM6Ly93d3cuaGw3Lm9yZy9maGlyL1I0L3ZhbHVlc2V0LWFsbGVyZ3ktdmVyaWZpY2F0aW9uLXN0YXR1cy5odG1sCiogQHBhcmFtIEFsbGVyZ3lJbnRvbExpc3QgLSBhIGxpc3Qgb2YgQWxsZXJneUludG9sZXJhbmNlcwoqIEByZXR1cm5zIHtMaXN0PEFsbGVyZ3lJbnRvbGVyYW5jZT59IGEgbGlzdCBvZiBhY3RpdmUgb3IgY29uZmlybWVkIGFsbGVyZ3kgaW50b2xlcmFuY2VzLCBvciBudWxsIGlmIG51bGwgd2FzIHBhc3NlZCBpbgoqLwpkZWZpbmUgZnVuY3Rpb24gQWN0aXZlT3JDb25maXJtZWRBbGxlcmd5SW50b2xlcmFuY2UoQWxsZXJneUludG9sTGlzdCBMaXN0PEFsbGVyZ3lJbnRvbGVyYW5jZT4pOgogIEFsbGVyZ3lJbnRvbExpc3QgQQogICAgd2hlcmUgQS5jbGluaWNhbFN0YXR1cyB+ICJBbGxlcmd5SW50b2xlcmFuY2UgQWN0aXZlIgogICAgICBvciBBLnZlcmlmaWNhdGlvblN0YXR1cyB+ICJBbGxlcmd5SW50b2xlcmFuY2UgQ29uZmlybWVkIgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBHT0FMUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLyoqCiAqIEdvYWxzIHdpdGggYSBzdGFydCwgdGFyZ2V0LCBvciBzdGF0dXMgZGF0ZSBpbiB0aGUgc3BlY2lmaWVkICJsb29rIGJhY2siIHBlcmlvZC4gIEZvciBleGFtcGxlLCBQYWluIE1hbmFnZW1lbnQgR29hbHMKICogaW4gdGhlIGxhc3QgMiB5ZWFycy4KICogVE9ETzogUmVuYW1lIHRvIExvb2tCYWNrIG9uY2UgdGhlIGV4ZWN1dGlvbiBlbmdpbmUgc3VwcG9ydHMgb3ZlcmxvYWRlZCBmdW5jdGlvbnMuCiAqIEBwYXJhbSBHb2FsTGlzdCAtIGEgbGlzdCBvZiBHb2FscwogKiBAcmV0dXJucyB7TGlzdDxHb2FsPn0gYSBsaXN0IG9mIEdvYWxzIHdpdGggYSBzdGFydCwgdGFyZ2V0LCBvciBzdGF0dXMgZGF0ZSBpbiB0aGUgc3BlY2lmaWVkIGxvb2tiYWNrIHBlcmlvZCwgb3IgbnVsbAogKiBpZiBudWxsIHdhcyBwYXNzZWQgaW4KICovCmRlZmluZSBmdW5jdGlvbiBHb2FsTG9va0JhY2soR29hbExpc3QgTGlzdDxHb2FsPiwgTG9va0JhY2sgU3lzdGVtLlF1YW50aXR5KToKICBHb2FsTGlzdCBHCiAgICBsZXQgTG9va0JhY2tJbnRlcnZhbDogSW50ZXJ2YWxbTm93KCkgLSBMb29rQmFjaywgTm93KCldLAogICAgU3RhcnREYXRlOiAoRy5zdGFydCBhcyBGSElSLmRhdGUpLnZhbHVlLAogICAgU3RhdHVzRGF0ZTogRy5zdGF0dXNEYXRlLnZhbHVlLAogICAgVGFyZ2V0RGF0ZXM6IChHLnRhcmdldCkgVCByZXR1cm4gKFQuZHVlIGFzIEZISVIuZGF0ZSkudmFsdWUsCiAgICBUYXJnZXRRdWFudGl0aWVzOiAoRy50YXJnZXQpIFQgcmV0dXJuIEZISVJIZWxwZXJzLlRvUXVhbnRpdHkoVC5kdWUgYXMgRkhJUi5EdXJhdGlvbikKICAgIHdoZXJlIFN0YXJ0RGF0ZSBpbiBMb29rQmFja0ludGVydmFsCiAgICAgIG9yIFN0YXR1c0RhdGUgaW4gTG9va0JhY2tJbnRlcnZhbAogICAgICBvciBleGlzdHMoVGFyZ2V0RGF0ZXMgVEQgd2hlcmUgVEQgaW4gTG9va0JhY2tJbnRlcnZhbCkKICAgICAgb3IgZXhpc3RzKFRhcmdldFF1YW50aXRpZXMgVFEgd2hlcmUgKFN0YXJ0RGF0ZSArIFRRKSBpbiBMb29rQmFja0ludGVydmFsKQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJbW11bml6YXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8qKgogICogRmlsdGVycyBJbW11bml6YXRpb25zIGJ5IGEgY29uY2VwdCByYXRoZXIgdGhhbiBieSBhIFZhbHVlU2V0LgogICogQHBhcmFtIEtvbmNlcHQgLSB0aGUgY29uY2VwdCB0byBmaWx0ZXIgb24gKGludGVudGlvbmFsbHkgbWlzcGVsbGVkIHRvIGF2b2lkIG5hbWluZyBjbGFzaGVzKQogICogQHJldHVybnMge0xpc3Q8SW1tdW5pemF0aW9uPn0gYSBsaXN0IG9mIEltbXVuaXphdGlvbnMgbWF0Y2hpbmcgdGhlIGNvbmNlcHQsIG9yIG51bGwgaWYgbnVsbCB3YXMgcGFzc2VkIGluCiAgKi8KIGRlZmluZSBmdW5jdGlvbiBJbW11bml6YXRpb25zQnlDb25jZXB0KEtvbmNlcHQgU3lzdGVtLkNvbmNlcHQpOgogICBbSW1tdW5pemF0aW9uXSBJIHdoZXJlIEZISVJIZWxwZXJzLlRvQ29uY2VwdChJLnZhY2NpbmVDb2RlKSB+IEtvbmNlcHQKLyoqCiAqIEltbXVuaXphdGlvbnMgdGhhdCBhcmUgY29tcGxldGVkLiBJbiBGSElSIFI0LCB0aGlzIGlzIHJlZmxlY3RlZCBieSBzdGF0dXM6ICdjb21wbGV0ZWQnLgogKiBAc2VlIGh0dHA6Ly9obDcub3JnL2ZoaXIvUjQvdmFsdWVzZXQtaW1tdW5pemF0aW9uLXN0YXR1cy5odG1sCiAqIEBwYXJhbSBJbW11bml6YXRpb25MaXN0IC0gYSBsaXN0IG9mIEltbXVuaXphdGlvbnMKICogQHJldHVybnMge0xpc3Q8SW1tdW5pemF0aW9uPn0gYSBsaXN0IG9mIGNvbXBsZXRlZCBJbW11bml6YXRpb25zLCBvciBudWxsIGlmIG51bGwgd2FzIHBhc3NlZCBpbgogKi8KZGVmaW5lIGZ1bmN0aW9uIENvbXBsZXRlZEltbXVuaXphdGlvbihJbW11bml6YXRpb25MaXN0IExpc3Q8SW1tdW5pemF0aW9uPik6CiAgSW1tdW5pemF0aW9uTGlzdCBJCiAgICB3aGVyZSBJLnN0YXR1cy52YWx1ZSA9ICdjb21wbGV0ZWQnCi8qKgogKiBJbW11bml6YXRpb25zIGdpdmVuIGluIHRoZSBzcGVjaWZpZWQgImxvb2sgYmFjayIgcGVyaW9kLgogKiBUT0RPOiBSZW5hbWUgdG8gTG9va0JhY2sgb25jZSB0aGUgZXhlY3V0aW9uIGVuZ2luZSBzdXBwb3J0cyBvdmVybG9hZGVkIGZ1bmN0aW9ucy4KICogQHBhcmFtIEltbXVuaXphdGlvbkxpc3QgLSBhIGxpc3Qgb2YgSW1tdW5pemF0aW9ucwogKiBAcGFyYW0gTG9va0JhY2sgLSB0aGUgbG9va2JhY2sgcGVyaW9kIGZvciB3aGVuIHRoZSBpbW11bml6YXRpb24gd2FzIGdpdmVuCiAqIEByZXR1cm5zIHtMaXN0PEltbXVuaXphdGlvbj59IGEgbGlzdCBvZiBJbW11bml6YXRpb25zIGdpdmVuIGluIHRoZSBsb29rIGJhY2sgcGVyaW9kLCBvciBudWxsIGlmIG51bGwKICogd2FzIHBhc3NlZCBpbgogKi8KZGVmaW5lIGZ1bmN0aW9uIEltbXVuaXphdGlvbkxvb2tCYWNrKEltbXVuaXphdGlvbkxpc3QgTGlzdDxJbW11bml6YXRpb24+LCBMb29rQmFjayBTeXN0ZW0uUXVhbnRpdHkpOgogIEltbXVuaXphdGlvbkxpc3QgSQogICAgbGV0IExvb2tCYWNrSW50ZXJ2YWw6IEludGVydmFsW05vdygpIC0gTG9va0JhY2ssIE5vdygpXQogICAgd2hlcmUgKEkub2NjdXJyZW5jZSBhcyBGSElSLmRhdGVUaW1lKS52YWx1ZSBpbiBMb29rQmFja0ludGVydmFsCi8qKgogKiBUaGUgbW9zdCByZWNlbnQgSW1tdW5pemF0aW9uLgogKiBAcGFyYW0gSW1tdW5pemF0aW9uTGlzdCAtIGEgbGlzdCBvZiBJbW11bml6YXRpb25zCiAqIEByZXR1cm5zIHtJbW11bml6YXRpb259IHRoZSBtb3N0IHJlY2VudCBJbW11bml6YXRpb24gZnJvbSB0aGUgbGlzdCwgb3IgbnVsbCBpZiBudWxsIHdhcyBwYXNzZWQgaW4KICovCmRlZmluZSBmdW5jdGlvbiBNb3N0UmVjZW50SW1tdW5pemF0aW9uKEltbXVuaXphdGlvbkxpc3QgTGlzdDxJbW11bml6YXRpb24+KToKICBMYXN0KEltbXVuaXphdGlvbkxpc3QgSSBzb3J0IGJ5IChvY2N1cnJlbmNlIGFzIEZISVIuZGF0ZVRpbWUpLnZhbHVlKQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZXZpY2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8qKgogICogRmlsdGVycyBEZXZpY2VzIGJ5IGEgY29uY2VwdCByYXRoZXIgdGhhbiBieSBhIFZhbHVlU2V0LgogICogQHBhcmFtIEtvbmNlcHQgLSB0aGUgY29uY2VwdCB0byBmaWx0ZXIgb24gKGludGVudGlvbmFsbHkgbWlzcGVsbGVkIHRvIGF2b2lkIG5hbWluZyBjbGFzaGVzKQogICogQHJldHVybnMge0xpc3Q8RGV2aWNlPn0gYSBsaXN0IG9mIERldmljZXMgbWF0Y2hpbmcgdGhlIGNvbmNlcHQsIG9yIG51bGwgaWYgbnVsbCB3YXMgcGFzc2VkIGluCiAgKi8KIGRlZmluZSBmdW5jdGlvbiBEZXZpY2VzQnlDb25jZXB0KEtvbmNlcHQgU3lzdGVtLkNvbmNlcHQpOgogICBbRGV2aWNlXSBEIHdoZXJlIEZISVJIZWxwZXJzLlRvQ29uY2VwdChELnR5cGUpIH4gS29uY2VwdAovKioKICogRGV2aWNlcyB0aGF0IGFyZSBhY3RpdmUuIEluIEZISVIgUjQsIHRoaXMgaXMgcmVmbGVjdGVkIGJ5IHN0YXR1czogJ2FjdGl2ZScuCiAqIEBzZWUgaHR0cDovL2hsNy5vcmcvZmhpci9SNC92YWx1ZXNldC1kZXZpY2Utc3RhdHVzLmh0bWwKICogQHBhcmFtIERldmljZUxpc3QgLSBhIGxpc3Qgb2YgRGV2aWNlcwogKiBAcmV0dXJucyB7TGlzdDxEZXZpY2U+fSBhIGxpc3Qgb2YgYWN0aXZlIERldmljZXMsIG9yIG51bGwgaWYgbnVsbCB3YXMgcGFzc2VkIGluCiAqLwpkZWZpbmUgZnVuY3Rpb24gQWN0aXZlRGV2aWNlKERldmljZUxpc3QgTGlzdDxEZXZpY2U+KToKICBEZXZpY2VMaXN0IEQKICAgIHdoZXJlIEQuc3RhdHVzLnZhbHVlID0gJ2FjdGl2ZSc=" + }, + { + "contentType": "application/elm+json", + "data": "eyJsaWJyYXJ5Ijp7ImFubm90YXRpb24iOlt7InRyYW5zbGF0b3JPcHRpb25zIjoiIiwidHlwZSI6IkNxbFRvRWxtSW5mbyJ9XSwiaWRlbnRpZmllciI6eyJpZCI6IkNEU19Db25uZWN0X0NvbW1vbnNfZm9yX0ZISVJ2NDAwIiwidmVyc2lvbiI6IjEuMC4yIn0sInNjaGVtYUlkZW50aWZpZXIiOnsiaWQiOiJ1cm46aGw3LW9yZzplbG0iLCJ2ZXJzaW9uIjoicjEifSwidXNpbmdzIjp7ImRlZiI6W3sibG9jYWxJZGVudGlmaWVyIjoiU3lzdGVtIiwidXJpIjoidXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIn0seyJsb2NhbElkZW50aWZpZXIiOiJGSElSIiwidXJpIjoiaHR0cDovL2hsNy5vcmcvZmhpciIsInZlcnNpb24iOiI0LjAuMCJ9XX0sImluY2x1ZGVzIjp7ImRlZiI6W3sibG9jYWxJZGVudGlmaWVyIjoiRkhJUkhlbHBlcnMiLCJwYXRoIjoiRkhJUkhlbHBlcnMiLCJ2ZXJzaW9uIjoiNC4wLjAifV19LCJjb2RlU3lzdGVtcyI6eyJkZWYiOlt7Im5hbWUiOiJBSVZFUlNUQVRVUyIsImlkIjoiaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS9hbGxlcmd5aW50b2xlcmFuY2UtdmVyaWZpY2F0aW9uIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMifSx7Im5hbWUiOiJBSUNMSU5TVEFUVVMiLCJpZCI6Imh0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vYWxsZXJneWludG9sZXJhbmNlLWNsaW5pY2FsIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMifSx7Im5hbWUiOiJDT05EVkVSU1RBVFVTIiwiaWQiOiJodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL2NvbmRpdGlvbi12ZXItc3RhdHVzIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMifSx7Im5hbWUiOiJDT05EQ0xJTlNUQVRVUyIsImlkIjoiaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS9jb25kaXRpb24tY2xpbmljYWwiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyJ9XX0sImNvZGVzIjp7ImRlZiI6W3sibmFtZSI6IkFsbGVyZ3lJbnRvbGVyYW5jZSBDb25maXJtZWQgY29kZSIsImlkIjoiY29uZmlybWVkIiwiZGlzcGxheSI6IkNvbmZpcm1lZCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiY29kZVN5c3RlbSI6eyJuYW1lIjoiQUlWRVJTVEFUVVMifX0seyJuYW1lIjoiQWxsZXJneUludG9sZXJhbmNlIEFjdGl2ZSBjb2RlIiwiaWQiOiJhY3RpdmUiLCJkaXNwbGF5IjoiQWN0aXZlIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJjb2RlU3lzdGVtIjp7Im5hbWUiOiJBSUNMSU5TVEFUVVMifX0seyJuYW1lIjoiQ29uZGl0aW9uIENvbmZpcm1lZCBjb2RlIiwiaWQiOiJjb25maXJtZWQiLCJkaXNwbGF5IjoiQ29uZmlybWVkIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJjb2RlU3lzdGVtIjp7Im5hbWUiOiJDT05EVkVSU1RBVFVTIn19LHsibmFtZSI6IkNvbmRpdGlvbiBBY3RpdmUgY29kZSIsImlkIjoiYWN0aXZlIiwiZGlzcGxheSI6IkFjdGl2ZSIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiY29kZVN5c3RlbSI6eyJuYW1lIjoiQ09ORENMSU5TVEFUVVMifX0seyJuYW1lIjoiQ29uZGl0aW9uIFJlY3VycmVuY2UgY29kZSIsImlkIjoicmVjdXJyZW5jZSIsImRpc3BsYXkiOiJSZWN1cnJlbmNlIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJjb2RlU3lzdGVtIjp7Im5hbWUiOiJDT05EQ0xJTlNUQVRVUyJ9fSx7Im5hbWUiOiJDb25kaXRpb24gUmVsYXBzZSBjb2RlIiwiaWQiOiJyZWxhcHNlIiwiZGlzcGxheSI6IlJlbGFwc2UiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImNvZGVTeXN0ZW0iOnsibmFtZSI6IkNPTkRDTElOU1RBVFVTIn19XX0sImNvbmNlcHRzIjp7ImRlZiI6W3sibmFtZSI6IkFsbGVyZ3lJbnRvbGVyYW5jZSBDb25maXJtZWQiLCJkaXNwbGF5IjoiQ29uZmlybWVkIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJjb2RlIjpbeyJuYW1lIjoiQWxsZXJneUludG9sZXJhbmNlIENvbmZpcm1lZCBjb2RlIn1dfSx7Im5hbWUiOiJBbGxlcmd5SW50b2xlcmFuY2UgQWN0aXZlIiwiZGlzcGxheSI6IkFjdGl2ZSIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiY29kZSI6W3sibmFtZSI6IkFsbGVyZ3lJbnRvbGVyYW5jZSBBY3RpdmUgY29kZSJ9XX0seyJuYW1lIjoiQ29uZGl0aW9uIENvbmZpcm1lZCIsImRpc3BsYXkiOiJDb25maXJtZWQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImNvZGUiOlt7Im5hbWUiOiJDb25kaXRpb24gQ29uZmlybWVkIGNvZGUifV19LHsibmFtZSI6IkNvbmRpdGlvbiBBY3RpdmUiLCJkaXNwbGF5IjoiQWN0aXZlIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJjb2RlIjpbeyJuYW1lIjoiQ29uZGl0aW9uIEFjdGl2ZSBjb2RlIn1dfSx7Im5hbWUiOiJDb25kaXRpb24gUmVjdXJyZW5jZSIsImRpc3BsYXkiOiJSZWN1cnJlbmNlIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJjb2RlIjpbeyJuYW1lIjoiQ29uZGl0aW9uIFJlY3VycmVuY2UgY29kZSJ9XX0seyJuYW1lIjoiQ29uZGl0aW9uIFJlbGFwc2UiLCJkaXNwbGF5IjoiUmVsYXBzZSIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiY29kZSI6W3sibmFtZSI6IkNvbmRpdGlvbiBSZWxhcHNlIGNvZGUifV19XX0sInN0YXRlbWVudHMiOnsiZGVmIjpbeyJuYW1lIjoiUGVyaW9kVG9JbnRlcnZhbCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJJZiIsImNvbmRpdGlvbiI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJuYW1lIjoicGVyaW9kIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sInRoZW4iOnsidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJ0eXBlIjoiTnVsbCJ9LCJhc1R5cGVTcGVjaWZpZXIiOnsidHlwZSI6IkludGVydmFsVHlwZVNwZWNpZmllciIsInBvaW50VHlwZSI6eyJuYW1lIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1EYXRlVGltZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19LCJlbHNlIjp7Imxvd0Nsb3NlZCI6dHJ1ZSwiaGlnaENsb3NlZCI6dHJ1ZSwidHlwZSI6IkludGVydmFsIiwibG93Ijp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3RhcnQiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InBlcmlvZCIsInR5cGUiOiJPcGVyYW5kUmVmIn19fSwiaGlnaCI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImVuZCIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoicGVyaW9kIiwidHlwZSI6Ik9wZXJhbmRSZWYifX19fX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJwZXJpb2QiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UGVyaW9kIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlJhbmdlVG9JbnRlcnZhbCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJJZiIsImNvbmRpdGlvbiI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJuYW1lIjoicmFuZ2UiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwidGhlbiI6eyJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InR5cGUiOiJOdWxsIn0sImFzVHlwZVNwZWNpZmllciI6eyJ0eXBlIjoiSW50ZXJ2YWxUeXBlU3BlY2lmaWVyIiwicG9pbnRUeXBlIjp7Im5hbWUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVF1YW50aXR5IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX0sImVsc2UiOnsibG93Q2xvc2VkIjp0cnVlLCJoaWdoQ2xvc2VkIjp0cnVlLCJ0eXBlIjoiSW50ZXJ2YWwiLCJsb3ciOnsibmFtZSI6IlRvUXVhbnRpdHkiLCJsaWJyYXJ5TmFtZSI6IkZISVJIZWxwZXJzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sicGF0aCI6ImxvdyIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoicmFuZ2UiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fV19LCJoaWdoIjp7Im5hbWUiOiJUb1F1YW50aXR5IiwibGlicmFyeU5hbWUiOiJGSElSSGVscGVycyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7InBhdGgiOiJoaWdoIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJyYW5nZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19XX19fSwib3BlcmFuZCI6W3sibmFtZSI6InJhbmdlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVJhbmdlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6Ik9ic2VydmF0aW9uc0J5Q29uY2VwdCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJPIiwiZXhwcmVzc2lvbiI6eyJkYXRhVHlwZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU9ic2VydmF0aW9uIiwidHlwZSI6IlJldHJpZXZlIn19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkVxdWl2YWxlbnQiLCJvcGVyYW5kIjpbeyJuYW1lIjoiVG9Db25jZXB0IiwibGlicmFyeU5hbWUiOiJGSElSSGVscGVycyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7InBhdGgiOiJjb2RlIiwic2NvcGUiOiJPIiwidHlwZSI6IlByb3BlcnR5In1dfSx7Im5hbWUiOiJLb25jZXB0IiwidHlwZSI6Ik9wZXJhbmRSZWYifV19fSwib3BlcmFuZCI6W3sibmFtZSI6IktvbmNlcHQiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1Db25jZXB0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlZlcmlmaWVkIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6Ik8iLCJleHByZXNzaW9uIjp7Im5hbWUiOiJPYnNMaXN0IiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiSW4iLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InN0YXR1cyIsInNjb3BlIjoiTyIsInR5cGUiOiJQcm9wZXJ0eSJ9fSx7InR5cGUiOiJMaXN0IiwiZWxlbWVudCI6W3sidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6ImZpbmFsIiwidHlwZSI6IkxpdGVyYWwifSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJjb3JyZWN0ZWQiLCJ0eXBlIjoiTGl0ZXJhbCJ9LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6ImFtZW5kZWQiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJPYnNMaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU9ic2VydmF0aW9uIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX1dfSx7Im5hbWUiOiJXaXRoVW5pdCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJPIiwiZXhwcmVzc2lvbiI6eyJuYW1lIjoiT2JzTGlzdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6Ik9yIiwib3BlcmFuZCI6W3sidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJ1bml0IiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InN0cmljdCI6ZmFsc2UsInR5cGUiOiJBcyIsIm9wZXJhbmQiOnsicGF0aCI6InZhbHVlIiwic2NvcGUiOiJPIiwidHlwZSI6IlByb3BlcnR5In0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UXVhbnRpdHkiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fX0seyJuYW1lIjoiVW5pdCIsInR5cGUiOiJPcGVyYW5kUmVmIn1dfSx7InR5cGUiOiJFcXVhbCIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoiY29kZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InBhdGgiOiJ2YWx1ZSIsInNjb3BlIjoiTyIsInR5cGUiOiJQcm9wZXJ0eSJ9LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVF1YW50aXR5IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX19LHsibmFtZSI6IlVuaXQiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9XX1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJPYnNMaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU9ic2VydmF0aW9uIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX0seyJuYW1lIjoiVW5pdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJPYnNlcnZhdGlvbkxvb2tCYWNrIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6Ik8iLCJleHByZXNzaW9uIjp7Im5hbWUiOiJPYnNMaXN0IiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dLCJsZXQiOlt7ImlkZW50aWZpZXIiOiJMb29rQmFja0ludGVydmFsIiwiZXhwcmVzc2lvbiI6eyJsb3dDbG9zZWQiOnRydWUsImhpZ2hDbG9zZWQiOnRydWUsInR5cGUiOiJJbnRlcnZhbCIsImxvdyI6eyJ0eXBlIjoiU3VidHJhY3QiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiTm93In0seyJuYW1lIjoiTG9va0JhY2siLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9XX0sImhpZ2giOnsidHlwZSI6Ik5vdyJ9fX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiT3IiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiT3IiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiT3IiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiSW4iLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsic3RyaWN0IjpmYWxzZSwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJwYXRoIjoiZWZmZWN0aXZlIiwic2NvcGUiOiJPIiwidHlwZSI6IlByb3BlcnR5In0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9ZGF0ZVRpbWUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fSx7Im5hbWUiOiJMb29rQmFja0ludGVydmFsIiwidHlwZSI6IlF1ZXJ5TGV0UmVmIn1dfSx7InR5cGUiOiJJbiIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InBhdGgiOiJlZmZlY3RpdmUiLCJzY29wZSI6Ik8iLCJ0eXBlIjoiUHJvcGVydHkifSwiYXNUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1pbnN0YW50IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX0seyJuYW1lIjoiTG9va0JhY2tJbnRlcnZhbCIsInR5cGUiOiJRdWVyeUxldFJlZiJ9XX1dfSx7InR5cGUiOiJPdmVybGFwcyIsIm9wZXJhbmQiOlt7Im5hbWUiOiJQZXJpb2RUb0ludGVydmFsIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sic3RyaWN0IjpmYWxzZSwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJwYXRoIjoiZWZmZWN0aXZlIiwic2NvcGUiOiJPIiwidHlwZSI6IlByb3BlcnR5In0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UGVyaW9kIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6Ikxvb2tCYWNrSW50ZXJ2YWwiLCJ0eXBlIjoiUXVlcnlMZXRSZWYifV19XX0seyJ0eXBlIjoiSW4iLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6Imlzc3VlZCIsInNjb3BlIjoiTyIsInR5cGUiOiJQcm9wZXJ0eSJ9fSx7Im5hbWUiOiJMb29rQmFja0ludGVydmFsIiwidHlwZSI6IlF1ZXJ5TGV0UmVmIn1dfV19fSwib3BlcmFuZCI6W3sibmFtZSI6Ik9ic0xpc3QiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJ0eXBlIjoiTGlzdFR5cGVTcGVjaWZpZXIiLCJlbGVtZW50VHlwZSI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9T2JzZXJ2YXRpb24iLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fSx7Im5hbWUiOiJMb29rQmFjayIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVF1YW50aXR5IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6Ik1vc3RSZWNlbnQiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTGFzdCIsInNvdXJjZSI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiTyIsImV4cHJlc3Npb24iOnsibmFtZSI6Ik9ic0xpc3QiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fV0sInJlbGF0aW9uc2hpcCI6W10sInNvcnQiOnsiYnkiOlt7ImRpcmVjdGlvbiI6ImFzYyIsInR5cGUiOiJCeUV4cHJlc3Npb24iLCJleHByZXNzaW9uIjp7InR5cGUiOiJDb2FsZXNjZSIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7Im5hbWUiOiJlZmZlY3RpdmUiLCJ0eXBlIjoiSWRlbnRpZmllclJlZiJ9LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfWRhdGVUaW1lIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX0seyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsic3RyaWN0IjpmYWxzZSwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJuYW1lIjoiZWZmZWN0aXZlIiwidHlwZSI6IklkZW50aWZpZXJSZWYifSwiYXNUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1pbnN0YW50IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX0seyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImVuZCIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7Im5hbWUiOiJlZmZlY3RpdmUiLCJ0eXBlIjoiSWRlbnRpZmllclJlZiJ9LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVBlcmlvZCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19fSx7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3RhcnQiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsic3RyaWN0IjpmYWxzZSwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJuYW1lIjoiZWZmZWN0aXZlIiwidHlwZSI6IklkZW50aWZpZXJSZWYifSwiYXNUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1QZXJpb2QiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fX0seyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6Imlzc3VlZCIsInR5cGUiOiJJZGVudGlmaWVyUmVmIn19XX19XX19fSwib3BlcmFuZCI6W3sibmFtZSI6Ik9ic0xpc3QiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJ0eXBlIjoiTGlzdFR5cGVTcGVjaWZpZXIiLCJlbGVtZW50VHlwZSI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9T2JzZXJ2YXRpb24iLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fV19LHsibmFtZSI6IlF1YW50aXR5VmFsdWUiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJuYW1lIjoiVG9RdWFudGl0eSIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT2JzIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UXVhbnRpdHkiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJPYnMiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9T2JzZXJ2YXRpb24iLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiQ29uY2VwdFZhbHVlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsibmFtZSI6IlRvQ29uY2VwdCIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT2JzIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9Q29kZWFibGVDb25jZXB0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LCJvcGVyYW5kIjpbeyJuYW1lIjoiT2JzIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU9ic2VydmF0aW9uIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IkZpbmREYXRlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IkNvYWxlc2NlIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InN0cmljdCI6ZmFsc2UsInR5cGUiOiJBcyIsIm9wZXJhbmQiOnsicGF0aCI6ImVmZmVjdGl2ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT2JzIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9ZGF0ZVRpbWUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fSx7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InBhdGgiOiJlZmZlY3RpdmUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6Ik9icyIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfWluc3RhbnQiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fSx7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoiZW5kIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InN0cmljdCI6ZmFsc2UsInR5cGUiOiJBcyIsIm9wZXJhbmQiOnsicGF0aCI6ImVmZmVjdGl2ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT2JzIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UGVyaW9kIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX19LHsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJzdGFydCIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InBhdGgiOiJlZmZlY3RpdmUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6Ik9icyIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVBlcmlvZCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19fSx7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoiaXNzdWVkIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJPYnMiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fX1dfSwib3BlcmFuZCI6W3sibmFtZSI6Ik9icyIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1PYnNlcnZhdGlvbiIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJIaWdoZXN0T2JzZXJ2YXRpb24iLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTWF4Iiwic291cmNlIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJPIiwiZXhwcmVzc2lvbiI6eyJuYW1lIjoiT2JzTGlzdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19XSwicmVsYXRpb25zaGlwIjpbXSwicmV0dXJuIjp7ImV4cHJlc3Npb24iOnsibmFtZSI6IlRvUXVhbnRpdHkiLCJsaWJyYXJ5TmFtZSI6IkZISVJIZWxwZXJzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sic3RyaWN0IjpmYWxzZSwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJwYXRoIjoidmFsdWUiLCJzY29wZSI6Ik8iLCJ0eXBlIjoiUHJvcGVydHkifSwiYXNUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1RdWFudGl0eSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfX19fSwib3BlcmFuZCI6W3sibmFtZSI6Ik9ic0xpc3QiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJ0eXBlIjoiTGlzdFR5cGVTcGVjaWZpZXIiLCJlbGVtZW50VHlwZSI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9T2JzZXJ2YXRpb24iLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fV19LHsibmFtZSI6IkNvbmRpdGlvbnNCeUNvbmNlcHQiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiQyIsImV4cHJlc3Npb24iOnsiZGF0YVR5cGUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db25kaXRpb24iLCJ0eXBlIjoiUmV0cmlldmUifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiRXF1aXZhbGVudCIsIm9wZXJhbmQiOlt7Im5hbWUiOiJUb0NvbmNlcHQiLCJsaWJyYXJ5TmFtZSI6IkZISVJIZWxwZXJzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sicGF0aCI6ImNvZGUiLCJzY29wZSI6IkMiLCJ0eXBlIjoiUHJvcGVydHkifV19LHsibmFtZSI6IktvbmNlcHQiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9XX19LCJvcGVyYW5kIjpbeyJuYW1lIjoiS29uY2VwdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUNvbmNlcHQiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiQ29uZmlybWVkIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IkMiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJDb25kTGlzdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkVxdWl2YWxlbnQiLCJvcGVyYW5kIjpbeyJuYW1lIjoiVG9Db25jZXB0IiwibGlicmFyeU5hbWUiOiJGSElSSGVscGVycyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2ZXJpZmljYXRpb25TdGF0dXMiLCJzY29wZSI6IkMiLCJ0eXBlIjoiUHJvcGVydHkifV19LHsibmFtZSI6IkNvbmRpdGlvbiBDb25maXJtZWQiLCJ0eXBlIjoiQ29uY2VwdFJlZiJ9XX19LCJvcGVyYW5kIjpbeyJuYW1lIjoiQ29uZExpc3QiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJ0eXBlIjoiTGlzdFR5cGVTcGVjaWZpZXIiLCJlbGVtZW50VHlwZSI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9Q29uZGl0aW9uIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX1dfSx7Im5hbWUiOiJBY3RpdmVDb25kaXRpb24iLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiQyIsImV4cHJlc3Npb24iOnsibmFtZSI6IkNvbmRMaXN0IiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiQW5kIiwib3BlcmFuZCI6W3sidHlwZSI6IkVxdWl2YWxlbnQiLCJvcGVyYW5kIjpbeyJuYW1lIjoiVG9Db25jZXB0IiwibGlicmFyeU5hbWUiOiJGSElSSGVscGVycyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7InBhdGgiOiJjbGluaWNhbFN0YXR1cyIsInNjb3BlIjoiQyIsInR5cGUiOiJQcm9wZXJ0eSJ9XX0seyJuYW1lIjoiQ29uZGl0aW9uIEFjdGl2ZSIsInR5cGUiOiJDb25jZXB0UmVmIn1dfSx7InR5cGUiOiJJc051bGwiLCJvcGVyYW5kIjp7InBhdGgiOiJhYmF0ZW1lbnQiLCJzY29wZSI6IkMiLCJ0eXBlIjoiUHJvcGVydHkifX1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJDb25kTGlzdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJMaXN0VHlwZVNwZWNpZmllciIsImVsZW1lbnRUeXBlIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db25kaXRpb24iLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fV19LHsibmFtZSI6IkFjdGl2ZU9yUmVjdXJyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IkMiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJDb25kTGlzdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6Ik9yIiwib3BlcmFuZCI6W3sidHlwZSI6Ik9yIiwib3BlcmFuZCI6W3sidHlwZSI6IkVxdWl2YWxlbnQiLCJvcGVyYW5kIjpbeyJuYW1lIjoiVG9Db25jZXB0IiwibGlicmFyeU5hbWUiOiJGSElSSGVscGVycyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7InBhdGgiOiJjbGluaWNhbFN0YXR1cyIsInNjb3BlIjoiQyIsInR5cGUiOiJQcm9wZXJ0eSJ9XX0seyJuYW1lIjoiQ29uZGl0aW9uIEFjdGl2ZSIsInR5cGUiOiJDb25jZXB0UmVmIn1dfSx7InR5cGUiOiJFcXVpdmFsZW50Iiwib3BlcmFuZCI6W3sibmFtZSI6IlRvQ29uY2VwdCIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJwYXRoIjoiY2xpbmljYWxTdGF0dXMiLCJzY29wZSI6IkMiLCJ0eXBlIjoiUHJvcGVydHkifV19LHsibmFtZSI6IkNvbmRpdGlvbiBSZWN1cnJlbmNlIiwidHlwZSI6IkNvbmNlcHRSZWYifV19XX0seyJ0eXBlIjoiRXF1aXZhbGVudCIsIm9wZXJhbmQiOlt7Im5hbWUiOiJUb0NvbmNlcHQiLCJsaWJyYXJ5TmFtZSI6IkZISVJIZWxwZXJzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sicGF0aCI6ImNsaW5pY2FsU3RhdHVzIiwic2NvcGUiOiJDIiwidHlwZSI6IlByb3BlcnR5In1dfSx7Im5hbWUiOiJDb25kaXRpb24gUmVsYXBzZSIsInR5cGUiOiJDb25jZXB0UmVmIn1dfV19fSwib3BlcmFuZCI6W3sibmFtZSI6IkNvbmRMaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUNvbmRpdGlvbiIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19XX0seyJuYW1lIjoiQ29uZGl0aW9uTG9va0JhY2siLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiQyIsImV4cHJlc3Npb24iOnsibmFtZSI6IkNvbmRMaXN0IiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dLCJsZXQiOlt7ImlkZW50aWZpZXIiOiJMb29rQmFja0ludGVydmFsIiwiZXhwcmVzc2lvbiI6eyJsb3dDbG9zZWQiOnRydWUsImhpZ2hDbG9zZWQiOnRydWUsInR5cGUiOiJJbnRlcnZhbCIsImxvdyI6eyJ0eXBlIjoiU3VidHJhY3QiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiTm93In0seyJuYW1lIjoiTG9va0JhY2siLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9XX0sImhpZ2giOnsidHlwZSI6Ik5vdyJ9fX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiT3IiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiT3IiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiSW4iLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsic3RyaWN0IjpmYWxzZSwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJwYXRoIjoib25zZXQiLCJzY29wZSI6IkMiLCJ0eXBlIjoiUHJvcGVydHkifSwiYXNUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1kYXRlVGltZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19LHsibmFtZSI6Ikxvb2tCYWNrSW50ZXJ2YWwiLCJ0eXBlIjoiUXVlcnlMZXRSZWYifV19LHsidHlwZSI6Ik92ZXJsYXBzIiwib3BlcmFuZCI6W3sibmFtZSI6IlBlcmlvZFRvSW50ZXJ2YWwiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InBhdGgiOiJvbnNldCIsInNjb3BlIjoiQyIsInR5cGUiOiJQcm9wZXJ0eSJ9LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVBlcmlvZCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJMb29rQmFja0ludGVydmFsIiwidHlwZSI6IlF1ZXJ5TGV0UmVmIn1dfV19LHsidHlwZSI6IkluIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJyZWNvcmRlZERhdGUiLCJzY29wZSI6IkMiLCJ0eXBlIjoiUHJvcGVydHkifX0seyJuYW1lIjoiTG9va0JhY2tJbnRlcnZhbCIsInR5cGUiOiJRdWVyeUxldFJlZiJ9XX1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJDb25kTGlzdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJMaXN0VHlwZVNwZWNpZmllciIsImVsZW1lbnRUeXBlIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db25kaXRpb24iLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fSx7Im5hbWUiOiJMb29rQmFjayIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVF1YW50aXR5IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6Ik1vc3RSZWNlbnRDb25kaXRpb24iLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTGFzdCIsInNvdXJjZSI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiQyIsImV4cHJlc3Npb24iOnsibmFtZSI6IkNvbmRMaXN0IiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJzb3J0Ijp7ImJ5IjpbeyJkaXJlY3Rpb24iOiJhc2MiLCJ0eXBlIjoiQnlFeHByZXNzaW9uIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiQ29hbGVzY2UiLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsic3RyaWN0IjpmYWxzZSwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJuYW1lIjoib25zZXQiLCJ0eXBlIjoiSWRlbnRpZmllclJlZiJ9LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfWRhdGVUaW1lIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX0seyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImVuZCIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7Im5hbWUiOiJvbnNldCIsInR5cGUiOiJJZGVudGlmaWVyUmVmIn0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UGVyaW9kIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX19LHsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJzdGFydCIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7Im5hbWUiOiJvbnNldCIsInR5cGUiOiJJZGVudGlmaWVyUmVmIn0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UGVyaW9kIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX19LHsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJyZWNvcmRlZERhdGUiLCJ0eXBlIjoiSWRlbnRpZmllclJlZiJ9fV19fV19fX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJDb25kTGlzdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJMaXN0VHlwZVNwZWNpZmllciIsImVsZW1lbnRUeXBlIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db25kaXRpb24iLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fV19LHsibmFtZSI6IlByb2NlZHVyZXNCeUNvbmNlcHQiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiUCIsImV4cHJlc3Npb24iOnsiZGF0YVR5cGUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Qcm9jZWR1cmUiLCJ0eXBlIjoiUmV0cmlldmUifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiRXF1aXZhbGVudCIsIm9wZXJhbmQiOlt7Im5hbWUiOiJUb0NvbmNlcHQiLCJsaWJyYXJ5TmFtZSI6IkZISVJIZWxwZXJzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sicGF0aCI6ImNvZGUiLCJzY29wZSI6IlAiLCJ0eXBlIjoiUHJvcGVydHkifV19LHsibmFtZSI6IktvbmNlcHQiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9XX19LCJvcGVyYW5kIjpbeyJuYW1lIjoiS29uY2VwdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUNvbmNlcHQiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiQ29tcGxldGVkIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IlAiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJQcm9jTGlzdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJzdGF0dXMiLCJzY29wZSI6IlAiLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiY29tcGxldGVkIiwidHlwZSI6IkxpdGVyYWwifV19fSwib3BlcmFuZCI6W3sibmFtZSI6IlByb2NMaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVByb2NlZHVyZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19XX0seyJuYW1lIjoiUHJvY2VkdXJlSW5Qcm9ncmVzcyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJQIiwiZXhwcmVzc2lvbiI6eyJuYW1lIjoiUHJvY0xpc3QiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJFcXVhbCIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3RhdHVzIiwic2NvcGUiOiJQIiwidHlwZSI6IlByb3BlcnR5In19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6ImluLXByb2dyZXNzIiwidHlwZSI6IkxpdGVyYWwifV19fSwib3BlcmFuZCI6W3sibmFtZSI6IlByb2NMaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVByb2NlZHVyZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19XX0seyJuYW1lIjoiUHJvY2VkdXJlUGVyZm9ybWFuY2UiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiUCIsImV4cHJlc3Npb24iOnsibmFtZSI6IlByb2NMaXN0IiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiTm90Iiwib3BlcmFuZCI6eyJ0eXBlIjoiSW4iLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InN0YXR1cyIsInNjb3BlIjoiUCIsInR5cGUiOiJQcm9wZXJ0eSJ9fSx7InR5cGUiOiJMaXN0IiwiZWxlbWVudCI6W3sidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6InByZXBhcmF0aW9uIiwidHlwZSI6IkxpdGVyYWwifSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJub3QtZG9uZSIsInR5cGUiOiJMaXRlcmFsIn0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiZW50ZXJlZC1pbi1lcnJvciIsInR5cGUiOiJMaXRlcmFsIn0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoidW5rbm93biIsInR5cGUiOiJMaXRlcmFsIn1dfV19fX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJQcm9jTGlzdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJMaXN0VHlwZVNwZWNpZmllciIsImVsZW1lbnRUeXBlIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Qcm9jZWR1cmUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fV19LHsibmFtZSI6IlByb2NlZHVyZUxvb2tCYWNrIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IlAiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJQcm9jTGlzdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19XSwibGV0IjpbeyJpZGVudGlmaWVyIjoiTG9va0JhY2tJbnRlcnZhbCIsImV4cHJlc3Npb24iOnsibG93Q2xvc2VkIjp0cnVlLCJoaWdoQ2xvc2VkIjp0cnVlLCJ0eXBlIjoiSW50ZXJ2YWwiLCJsb3ciOnsidHlwZSI6IlN1YnRyYWN0Iiwib3BlcmFuZCI6W3sidHlwZSI6Ik5vdyJ9LHsibmFtZSI6Ikxvb2tCYWNrIiwidHlwZSI6Ik9wZXJhbmRSZWYifV19LCJoaWdoIjp7InR5cGUiOiJOb3cifX19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6Ik9yIiwib3BlcmFuZCI6W3sidHlwZSI6IkluIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InN0cmljdCI6ZmFsc2UsInR5cGUiOiJBcyIsIm9wZXJhbmQiOnsicGF0aCI6InBlcmZvcm1lZCIsInNjb3BlIjoiUCIsInR5cGUiOiJQcm9wZXJ0eSJ9LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfWRhdGVUaW1lIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX0seyJuYW1lIjoiTG9va0JhY2tJbnRlcnZhbCIsInR5cGUiOiJRdWVyeUxldFJlZiJ9XX0seyJ0eXBlIjoiT3ZlcmxhcHMiLCJvcGVyYW5kIjpbeyJuYW1lIjoiUGVyaW9kVG9JbnRlcnZhbCIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7InN0cmljdCI6ZmFsc2UsInR5cGUiOiJBcyIsIm9wZXJhbmQiOnsicGF0aCI6InBlcmZvcm1lZCIsInNjb3BlIjoiUCIsInR5cGUiOiJQcm9wZXJ0eSJ9LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVBlcmlvZCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJMb29rQmFja0ludGVydmFsIiwidHlwZSI6IlF1ZXJ5TGV0UmVmIn1dfV19fSwib3BlcmFuZCI6W3sibmFtZSI6IlByb2NMaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVByb2NlZHVyZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19LHsibmFtZSI6Ikxvb2tCYWNrIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9UXVhbnRpdHkiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiTW9zdFJlY2VudFByb2NlZHVyZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJMYXN0Iiwic291cmNlIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJQIiwiZXhwcmVzc2lvbiI6eyJuYW1lIjoiUHJvY0xpc3QiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fV0sInJlbGF0aW9uc2hpcCI6W10sInNvcnQiOnsiYnkiOlt7ImRpcmVjdGlvbiI6ImFzYyIsInR5cGUiOiJCeUV4cHJlc3Npb24iLCJleHByZXNzaW9uIjp7InR5cGUiOiJDb2FsZXNjZSIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7Im5hbWUiOiJwZXJmb3JtZWQiLCJ0eXBlIjoiSWRlbnRpZmllclJlZiJ9LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfWRhdGVUaW1lIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX0seyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImVuZCIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7Im5hbWUiOiJwZXJmb3JtZWQiLCJ0eXBlIjoiSWRlbnRpZmllclJlZiJ9LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVBlcmlvZCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19fSx7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3RhcnQiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsic3RyaWN0IjpmYWxzZSwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJuYW1lIjoicGVyZm9ybWVkIiwidHlwZSI6IklkZW50aWZpZXJSZWYifSwiYXNUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1QZXJpb2QiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fX1dfX1dfX19LCJvcGVyYW5kIjpbeyJuYW1lIjoiUHJvY0xpc3QiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJ0eXBlIjoiTGlzdFR5cGVTcGVjaWZpZXIiLCJlbGVtZW50VHlwZSI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UHJvY2VkdXJlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX1dfSx7Im5hbWUiOiJTZXJ2aWNlUmVxdWVzdEFjdGl2ZU9yQ29tcGxldGVkIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IlMiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJTZXJ2aWNlUmVxdWVzdExpc3QiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJJbiIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3RhdHVzIiwic2NvcGUiOiJTIiwidHlwZSI6IlByb3BlcnR5In19LHsidHlwZSI6Ikxpc3QiLCJlbGVtZW50IjpbeyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiYWN0aXZlIiwidHlwZSI6IkxpdGVyYWwifSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJjb21wbGV0ZWQiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJTZXJ2aWNlUmVxdWVzdExpc3QiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJ0eXBlIjoiTGlzdFR5cGVTcGVjaWZpZXIiLCJlbGVtZW50VHlwZSI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9U2VydmljZVJlcXVlc3QiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fV19LHsibmFtZSI6IlNlcnZpY2VSZXF1ZXN0TG9va0JhY2siLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiUyIsImV4cHJlc3Npb24iOnsibmFtZSI6IlNlcnZpY2VSZXF1ZXN0TGlzdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkluIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJhdXRob3JlZE9uIiwic2NvcGUiOiJTIiwidHlwZSI6IlByb3BlcnR5In19LHsibG93Q2xvc2VkIjp0cnVlLCJoaWdoQ2xvc2VkIjp0cnVlLCJ0eXBlIjoiSW50ZXJ2YWwiLCJsb3ciOnsidHlwZSI6IlN1YnRyYWN0Iiwib3BlcmFuZCI6W3sidHlwZSI6Ik5vdyJ9LHsibmFtZSI6Ikxvb2tCYWNrIiwidHlwZSI6Ik9wZXJhbmRSZWYifV19LCJoaWdoIjp7InR5cGUiOiJOb3cifX1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJTZXJ2aWNlUmVxdWVzdExpc3QiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJ0eXBlIjoiTGlzdFR5cGVTcGVjaWZpZXIiLCJlbGVtZW50VHlwZSI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9U2VydmljZVJlcXVlc3QiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fSx7Im5hbWUiOiJMb29rQmFjayIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVF1YW50aXR5IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6Ik1lZGljYXRpb25TdGF0ZW1lbnRzQnlDb25jZXB0IiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6Ik0iLCJleHByZXNzaW9uIjp7ImRhdGFUeXBlIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TWVkaWNhdGlvblN0YXRlbWVudCIsInR5cGUiOiJSZXRyaWV2ZSJ9fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJFcXVpdmFsZW50Iiwib3BlcmFuZCI6W3sibmFtZSI6IlRvQ29uY2VwdCIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InBhdGgiOiJtZWRpY2F0aW9uIiwic2NvcGUiOiJNIiwidHlwZSI6IlByb3BlcnR5In0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9Q29kZWFibGVDb25jZXB0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IktvbmNlcHQiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9XX19LCJvcGVyYW5kIjpbeyJuYW1lIjoiS29uY2VwdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUNvbmNlcHQiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiTWVkaWNhdGlvblJlcXVlc3RzQnlDb25jZXB0IiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6Ik0iLCJleHByZXNzaW9uIjp7ImRhdGFUeXBlIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TWVkaWNhdGlvblJlcXVlc3QiLCJ0eXBlIjoiUmV0cmlldmUifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiRXF1aXZhbGVudCIsIm9wZXJhbmQiOlt7Im5hbWUiOiJUb0NvbmNlcHQiLCJsaWJyYXJ5TmFtZSI6IkZISVJIZWxwZXJzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sic3RyaWN0IjpmYWxzZSwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJwYXRoIjoibWVkaWNhdGlvbiIsInNjb3BlIjoiTSIsInR5cGUiOiJQcm9wZXJ0eSJ9LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUNvZGVhYmxlQ29uY2VwdCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJLb25jZXB0IiwidHlwZSI6Ik9wZXJhbmRSZWYifV19fSwib3BlcmFuZCI6W3sibmFtZSI6IktvbmNlcHQiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1Db25jZXB0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IkFjdGl2ZU1lZGljYXRpb25TdGF0ZW1lbnQiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiTSIsImV4cHJlc3Npb24iOnsibmFtZSI6Ik1lZExpc3QiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fV0sImxldCI6W3siaWRlbnRpZmllciI6IkVmZmVjdGl2ZVBlcmlvZCIsImV4cHJlc3Npb24iOnsibmFtZSI6IlBlcmlvZFRvSW50ZXJ2YWwiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InBhdGgiOiJlZmZlY3RpdmUiLCJzY29wZSI6Ik0iLCJ0eXBlIjoiUHJvcGVydHkifSwiYXNUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1QZXJpb2QiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkFuZCIsIm9wZXJhbmQiOlt7InR5cGUiOiJFcXVhbCIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3RhdHVzIiwic2NvcGUiOiJNIiwidHlwZSI6IlByb3BlcnR5In19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6ImFjdGl2ZSIsInR5cGUiOiJMaXRlcmFsIn1dfSx7InR5cGUiOiJPciIsIm9wZXJhbmQiOlt7InR5cGUiOiJJc051bGwiLCJvcGVyYW5kIjp7InR5cGUiOiJFbmQiLCJvcGVyYW5kIjp7Im5hbWUiOiJFZmZlY3RpdmVQZXJpb2QiLCJ0eXBlIjoiUXVlcnlMZXRSZWYifX19LHsidHlwZSI6IkFmdGVyIiwib3BlcmFuZCI6W3sidHlwZSI6IkVuZCIsIm9wZXJhbmQiOnsibmFtZSI6IkVmZmVjdGl2ZVBlcmlvZCIsInR5cGUiOiJRdWVyeUxldFJlZiJ9fSx7InR5cGUiOiJOb3cifV19XX1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJNZWRMaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU1lZGljYXRpb25TdGF0ZW1lbnQiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fV19LHsibmFtZSI6IkFjdGl2ZU1lZGljYXRpb25SZXF1ZXN0IiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6Ik0iLCJleHByZXNzaW9uIjp7Im5hbWUiOiJNZWRMaXN0IiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InN0YXR1cyIsInNjb3BlIjoiTSIsInR5cGUiOiJQcm9wZXJ0eSJ9fSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJhY3RpdmUiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19LCJvcGVyYW5kIjpbeyJuYW1lIjoiTWVkTGlzdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJMaXN0VHlwZVNwZWNpZmllciIsImVsZW1lbnRUeXBlIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1NZWRpY2F0aW9uUmVxdWVzdCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19XX0seyJuYW1lIjoiQWN0aXZlT3JDb21wbGV0ZWRNZWRpY2F0aW9uUmVxdWVzdCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJNIiwiZXhwcmVzc2lvbiI6eyJuYW1lIjoiTWVkTGlzdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6Ik9yIiwib3BlcmFuZCI6W3sidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJzdGF0dXMiLCJzY29wZSI6Ik0iLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiYWN0aXZlIiwidHlwZSI6IkxpdGVyYWwifV19LHsidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJzdGF0dXMiLCJzY29wZSI6Ik0iLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiY29tcGxldGVkIiwidHlwZSI6IkxpdGVyYWwifV19XX19LCJvcGVyYW5kIjpbeyJuYW1lIjoiTWVkTGlzdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJMaXN0VHlwZVNwZWNpZmllciIsImVsZW1lbnRUeXBlIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1NZWRpY2F0aW9uUmVxdWVzdCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19XX0seyJuYW1lIjoiQWN0aXZlT3JDb21wbGV0ZWRNZWRpY2F0aW9uU3RhdGVtZW50IiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6Ik0iLCJleHByZXNzaW9uIjp7Im5hbWUiOiJNZWRMaXN0IiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiT3IiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InN0YXR1cyIsInNjb3BlIjoiTSIsInR5cGUiOiJQcm9wZXJ0eSJ9fSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJhY3RpdmUiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX0seyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InN0YXR1cyIsInNjb3BlIjoiTSIsInR5cGUiOiJQcm9wZXJ0eSJ9fSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJjb21wbGV0ZWQiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJNZWRMaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU1lZGljYXRpb25TdGF0ZW1lbnQiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fV19LHsibmFtZSI6IkFjdGl2ZUNvbXBsZXRlZE9yU3RvcHBlZE1lZGljYXRpb25SZXF1ZXN0IiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6Ik0iLCJleHByZXNzaW9uIjp7Im5hbWUiOiJNZWRMaXN0IiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiT3IiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiT3IiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InN0YXR1cyIsInNjb3BlIjoiTSIsInR5cGUiOiJQcm9wZXJ0eSJ9fSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJhY3RpdmUiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX0seyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InN0YXR1cyIsInNjb3BlIjoiTSIsInR5cGUiOiJQcm9wZXJ0eSJ9fSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJjb21wbGV0ZWQiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX1dfSx7InR5cGUiOiJFcXVhbCIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3RhdHVzIiwic2NvcGUiOiJNIiwidHlwZSI6IlByb3BlcnR5In19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6InN0b3BwZWQiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJNZWRMaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU1lZGljYXRpb25SZXF1ZXN0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX1dfSx7Im5hbWUiOiJNZWRpY2F0aW9uUmVxdWVzdExvb2tCYWNrIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6Ik0iLCJleHByZXNzaW9uIjp7Im5hbWUiOiJNZWRMaXN0IiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dLCJsZXQiOlt7ImlkZW50aWZpZXIiOiJMb29rQmFja0ludGVydmFsIiwiZXhwcmVzc2lvbiI6eyJsb3dDbG9zZWQiOnRydWUsImhpZ2hDbG9zZWQiOnRydWUsInR5cGUiOiJJbnRlcnZhbCIsImxvdyI6eyJ0eXBlIjoiU3VidHJhY3QiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiTm93In0seyJuYW1lIjoiTG9va0JhY2siLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9XX0sImhpZ2giOnsidHlwZSI6Ik5vdyJ9fX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiSW4iLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImF1dGhvcmVkT24iLCJzY29wZSI6Ik0iLCJ0eXBlIjoiUHJvcGVydHkifX0seyJuYW1lIjoiTG9va0JhY2tJbnRlcnZhbCIsInR5cGUiOiJRdWVyeUxldFJlZiJ9XX19LCJvcGVyYW5kIjpbeyJuYW1lIjoiTWVkTGlzdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJMaXN0VHlwZVNwZWNpZmllciIsImVsZW1lbnRUeXBlIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1NZWRpY2F0aW9uUmVxdWVzdCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19LHsibmFtZSI6Ikxvb2tCYWNrIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9UXVhbnRpdHkiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiTWVkaWNhdGlvblN0YXRlbWVudExvb2tCYWNrIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6Ik0iLCJleHByZXNzaW9uIjp7Im5hbWUiOiJNZWRMaXN0IiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dLCJsZXQiOlt7ImlkZW50aWZpZXIiOiJMb29rQmFja0ludGVydmFsIiwiZXhwcmVzc2lvbiI6eyJsb3dDbG9zZWQiOnRydWUsImhpZ2hDbG9zZWQiOnRydWUsInR5cGUiOiJJbnRlcnZhbCIsImxvdyI6eyJ0eXBlIjoiU3VidHJhY3QiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiTm93In0seyJuYW1lIjoiTG9va0JhY2siLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9XX0sImhpZ2giOnsidHlwZSI6Ik5vdyJ9fX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiT3IiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiSW4iLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsic3RyaWN0IjpmYWxzZSwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJwYXRoIjoiZWZmZWN0aXZlIiwic2NvcGUiOiJNIiwidHlwZSI6IlByb3BlcnR5In0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9ZGF0ZVRpbWUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fSx7Im5hbWUiOiJMb29rQmFja0ludGVydmFsIiwidHlwZSI6IlF1ZXJ5TGV0UmVmIn1dfSx7InR5cGUiOiJPdmVybGFwcyIsIm9wZXJhbmQiOlt7Im5hbWUiOiJQZXJpb2RUb0ludGVydmFsIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sic3RyaWN0IjpmYWxzZSwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJwYXRoIjoiZWZmZWN0aXZlIiwic2NvcGUiOiJNIiwidHlwZSI6IlByb3BlcnR5In0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UGVyaW9kIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6Ikxvb2tCYWNrSW50ZXJ2YWwiLCJ0eXBlIjoiUXVlcnlMZXRSZWYifV19XX19LCJvcGVyYW5kIjpbeyJuYW1lIjoiTWVkTGlzdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJMaXN0VHlwZVNwZWNpZmllciIsImVsZW1lbnRUeXBlIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1NZWRpY2F0aW9uU3RhdGVtZW50IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX0seyJuYW1lIjoiTG9va0JhY2siLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1RdWFudGl0eSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJFbmNvdW50ZXJzQnlDb25jZXB0IiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IkUiLCJleHByZXNzaW9uIjp7ImRhdGFUeXBlIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RW5jb3VudGVyIiwidHlwZSI6IlJldHJpZXZlIn19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkV4aXN0cyIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IkVUIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidHlwZSIsInNjb3BlIjoiRSIsInR5cGUiOiJQcm9wZXJ0eSJ9fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJFcXVpdmFsZW50Iiwib3BlcmFuZCI6W3sibmFtZSI6IlRvQ29uY2VwdCIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJuYW1lIjoiRVQiLCJ0eXBlIjoiQWxpYXNSZWYifV19LHsibmFtZSI6IktvbmNlcHQiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9XX19fX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJLb25jZXB0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9Q29uY2VwdCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJJblByb2dyZXNzIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IkUiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJFbmNMaXN0IiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InN0YXR1cyIsInNjb3BlIjoiRSIsInR5cGUiOiJQcm9wZXJ0eSJ9fSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJpbi1wcm9ncmVzcyIsInR5cGUiOiJMaXRlcmFsIn1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJFbmNMaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUVuY291bnRlciIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19XX0seyJuYW1lIjoiQWxsZXJneUludG9sZXJhbmNlc0J5Q29uY2VwdCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJBIiwiZXhwcmVzc2lvbiI6eyJkYXRhVHlwZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUFsbGVyZ3lJbnRvbGVyYW5jZSIsInR5cGUiOiJSZXRyaWV2ZSJ9fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJFcXVpdmFsZW50Iiwib3BlcmFuZCI6W3sibmFtZSI6IlRvQ29uY2VwdCIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJwYXRoIjoiY29kZSIsInNjb3BlIjoiQSIsInR5cGUiOiJQcm9wZXJ0eSJ9XX0seyJuYW1lIjoiS29uY2VwdCIsInR5cGUiOiJPcGVyYW5kUmVmIn1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJLb25jZXB0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9Q29uY2VwdCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJBY3RpdmVPckNvbmZpcm1lZEFsbGVyZ3lJbnRvbGVyYW5jZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJBIiwiZXhwcmVzc2lvbiI6eyJuYW1lIjoiQWxsZXJneUludG9sTGlzdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6Ik9yIiwib3BlcmFuZCI6W3sidHlwZSI6IkVxdWl2YWxlbnQiLCJvcGVyYW5kIjpbeyJuYW1lIjoiVG9Db25jZXB0IiwibGlicmFyeU5hbWUiOiJGSElSSGVscGVycyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7InBhdGgiOiJjbGluaWNhbFN0YXR1cyIsInNjb3BlIjoiQSIsInR5cGUiOiJQcm9wZXJ0eSJ9XX0seyJuYW1lIjoiQWxsZXJneUludG9sZXJhbmNlIEFjdGl2ZSIsInR5cGUiOiJDb25jZXB0UmVmIn1dfSx7InR5cGUiOiJFcXVpdmFsZW50Iiwib3BlcmFuZCI6W3sibmFtZSI6IlRvQ29uY2VwdCIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJwYXRoIjoidmVyaWZpY2F0aW9uU3RhdHVzIiwic2NvcGUiOiJBIiwidHlwZSI6IlByb3BlcnR5In1dfSx7Im5hbWUiOiJBbGxlcmd5SW50b2xlcmFuY2UgQ29uZmlybWVkIiwidHlwZSI6IkNvbmNlcHRSZWYifV19XX19LCJvcGVyYW5kIjpbeyJuYW1lIjoiQWxsZXJneUludG9sTGlzdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJMaXN0VHlwZVNwZWNpZmllciIsImVsZW1lbnRUeXBlIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1BbGxlcmd5SW50b2xlcmFuY2UiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fV19LHsibmFtZSI6IkdvYWxMb29rQmFjayIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJHIiwiZXhwcmVzc2lvbiI6eyJuYW1lIjoiR29hbExpc3QiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fV0sImxldCI6W3siaWRlbnRpZmllciI6Ikxvb2tCYWNrSW50ZXJ2YWwiLCJleHByZXNzaW9uIjp7Imxvd0Nsb3NlZCI6dHJ1ZSwiaGlnaENsb3NlZCI6dHJ1ZSwidHlwZSI6IkludGVydmFsIiwibG93Ijp7InR5cGUiOiJTdWJ0cmFjdCIsIm9wZXJhbmQiOlt7InR5cGUiOiJOb3cifSx7Im5hbWUiOiJMb29rQmFjayIsInR5cGUiOiJPcGVyYW5kUmVmIn1dfSwiaGlnaCI6eyJ0eXBlIjoiTm93In19fSx7ImlkZW50aWZpZXIiOiJTdGFydERhdGUiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InBhdGgiOiJzdGFydCIsInNjb3BlIjoiRyIsInR5cGUiOiJQcm9wZXJ0eSJ9LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfWRhdGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fX0seyJpZGVudGlmaWVyIjoiU3RhdHVzRGF0ZSIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJzdGF0dXNEYXRlIiwic2NvcGUiOiJHIiwidHlwZSI6IlByb3BlcnR5In19fSx7ImlkZW50aWZpZXIiOiJUYXJnZXREYXRlcyIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IlQiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ0YXJnZXQiLCJzY29wZSI6IkciLCJ0eXBlIjoiUHJvcGVydHkifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJyZXR1cm4iOnsiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsic3RyaWN0IjpmYWxzZSwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJwYXRoIjoiZHVlIiwic2NvcGUiOiJUIiwidHlwZSI6IlByb3BlcnR5In0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9ZGF0ZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19fX19LHsiaWRlbnRpZmllciI6IlRhcmdldFF1YW50aXRpZXMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJUIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidGFyZ2V0Iiwic2NvcGUiOiJHIiwidHlwZSI6IlByb3BlcnR5In19XSwicmVsYXRpb25zaGlwIjpbXSwicmV0dXJuIjp7ImV4cHJlc3Npb24iOnsibmFtZSI6IlRvUXVhbnRpdHkiLCJsaWJyYXJ5TmFtZSI6IkZISVJIZWxwZXJzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sic3RyaWN0IjpmYWxzZSwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJwYXRoIjoiZHVlIiwic2NvcGUiOiJUIiwidHlwZSI6IlByb3BlcnR5In0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RHVyYXRpb24iLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX19fX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiT3IiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiT3IiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiT3IiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiSW4iLCJvcGVyYW5kIjpbeyJ0eXBlIjoiVG9EYXRlVGltZSIsIm9wZXJhbmQiOnsibmFtZSI6IlN0YXJ0RGF0ZSIsInR5cGUiOiJRdWVyeUxldFJlZiJ9fSx7Im5hbWUiOiJMb29rQmFja0ludGVydmFsIiwidHlwZSI6IlF1ZXJ5TGV0UmVmIn1dfSx7InR5cGUiOiJJbiIsIm9wZXJhbmQiOlt7InR5cGUiOiJUb0RhdGVUaW1lIiwib3BlcmFuZCI6eyJuYW1lIjoiU3RhdHVzRGF0ZSIsInR5cGUiOiJRdWVyeUxldFJlZiJ9fSx7Im5hbWUiOiJMb29rQmFja0ludGVydmFsIiwidHlwZSI6IlF1ZXJ5TGV0UmVmIn1dfV19LHsidHlwZSI6IkV4aXN0cyIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IlREIiwiZXhwcmVzc2lvbiI6eyJuYW1lIjoiVGFyZ2V0RGF0ZXMiLCJ0eXBlIjoiUXVlcnlMZXRSZWYifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiSW4iLCJvcGVyYW5kIjpbeyJ0eXBlIjoiVG9EYXRlVGltZSIsIm9wZXJhbmQiOnsibmFtZSI6IlREIiwidHlwZSI6IkFsaWFzUmVmIn19LHsibmFtZSI6Ikxvb2tCYWNrSW50ZXJ2YWwiLCJ0eXBlIjoiUXVlcnlMZXRSZWYifV19fX1dfSx7InR5cGUiOiJFeGlzdHMiLCJvcGVyYW5kIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJUUSIsImV4cHJlc3Npb24iOnsibmFtZSI6IlRhcmdldFF1YW50aXRpZXMiLCJ0eXBlIjoiUXVlcnlMZXRSZWYifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiSW4iLCJvcGVyYW5kIjpbeyJ0eXBlIjoiVG9EYXRlVGltZSIsIm9wZXJhbmQiOnsidHlwZSI6IkFkZCIsIm9wZXJhbmQiOlt7Im5hbWUiOiJTdGFydERhdGUiLCJ0eXBlIjoiUXVlcnlMZXRSZWYifSx7Im5hbWUiOiJUUSIsInR5cGUiOiJBbGlhc1JlZiJ9XX19LHsibmFtZSI6Ikxvb2tCYWNrSW50ZXJ2YWwiLCJ0eXBlIjoiUXVlcnlMZXRSZWYifV19fX1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJHb2FsTGlzdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJMaXN0VHlwZVNwZWNpZmllciIsImVsZW1lbnRUeXBlIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Hb2FsIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX0seyJuYW1lIjoiTG9va0JhY2siLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1RdWFudGl0eSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJJbW11bml6YXRpb25zQnlDb25jZXB0IiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IkkiLCJleHByZXNzaW9uIjp7ImRhdGFUeXBlIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9SW1tdW5pemF0aW9uIiwidHlwZSI6IlJldHJpZXZlIn19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkVxdWl2YWxlbnQiLCJvcGVyYW5kIjpbeyJuYW1lIjoiVG9Db25jZXB0IiwibGlicmFyeU5hbWUiOiJGSElSSGVscGVycyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWNjaW5lQ29kZSIsInNjb3BlIjoiSSIsInR5cGUiOiJQcm9wZXJ0eSJ9XX0seyJuYW1lIjoiS29uY2VwdCIsInR5cGUiOiJPcGVyYW5kUmVmIn1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJLb25jZXB0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9Q29uY2VwdCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJDb21wbGV0ZWRJbW11bml6YXRpb24iLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiSSIsImV4cHJlc3Npb24iOnsibmFtZSI6IkltbXVuaXphdGlvbkxpc3QiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJFcXVhbCIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3RhdHVzIiwic2NvcGUiOiJJIiwidHlwZSI6IlByb3BlcnR5In19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6ImNvbXBsZXRlZCIsInR5cGUiOiJMaXRlcmFsIn1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJJbW11bml6YXRpb25MaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUltbXVuaXphdGlvbiIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19XX0seyJuYW1lIjoiSW1tdW5pemF0aW9uTG9va0JhY2siLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiSSIsImV4cHJlc3Npb24iOnsibmFtZSI6IkltbXVuaXphdGlvbkxpc3QiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fV0sImxldCI6W3siaWRlbnRpZmllciI6Ikxvb2tCYWNrSW50ZXJ2YWwiLCJleHByZXNzaW9uIjp7Imxvd0Nsb3NlZCI6dHJ1ZSwiaGlnaENsb3NlZCI6dHJ1ZSwidHlwZSI6IkludGVydmFsIiwibG93Ijp7InR5cGUiOiJTdWJ0cmFjdCIsIm9wZXJhbmQiOlt7InR5cGUiOiJOb3cifSx7Im5hbWUiOiJMb29rQmFjayIsInR5cGUiOiJPcGVyYW5kUmVmIn1dfSwiaGlnaCI6eyJ0eXBlIjoiTm93In19fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJJbiIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InBhdGgiOiJvY2N1cnJlbmNlIiwic2NvcGUiOiJJIiwidHlwZSI6IlByb3BlcnR5In0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9ZGF0ZVRpbWUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fSx7Im5hbWUiOiJMb29rQmFja0ludGVydmFsIiwidHlwZSI6IlF1ZXJ5TGV0UmVmIn1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJJbW11bml6YXRpb25MaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUltbXVuaXphdGlvbiIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19LHsibmFtZSI6Ikxvb2tCYWNrIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9UXVhbnRpdHkiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiTW9zdFJlY2VudEltbXVuaXphdGlvbiIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJMYXN0Iiwic291cmNlIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJJIiwiZXhwcmVzc2lvbiI6eyJuYW1lIjoiSW1tdW5pemF0aW9uTGlzdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19XSwicmVsYXRpb25zaGlwIjpbXSwic29ydCI6eyJieSI6W3siZGlyZWN0aW9uIjoiYXNjIiwidHlwZSI6IkJ5RXhwcmVzc2lvbiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InN0cmljdCI6ZmFsc2UsInR5cGUiOiJBcyIsIm9wZXJhbmQiOnsibmFtZSI6Im9jY3VycmVuY2UiLCJ0eXBlIjoiSWRlbnRpZmllclJlZiJ9LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfWRhdGVUaW1lIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX19XX19fSwib3BlcmFuZCI6W3sibmFtZSI6IkltbXVuaXphdGlvbkxpc3QiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJ0eXBlIjoiTGlzdFR5cGVTcGVjaWZpZXIiLCJlbGVtZW50VHlwZSI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9SW1tdW5pemF0aW9uIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX1dfSx7Im5hbWUiOiJEZXZpY2VzQnlDb25jZXB0IiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IkQiLCJleHByZXNzaW9uIjp7ImRhdGFUeXBlIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RGV2aWNlIiwidHlwZSI6IlJldHJpZXZlIn19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkVxdWl2YWxlbnQiLCJvcGVyYW5kIjpbeyJuYW1lIjoiVG9Db25jZXB0IiwibGlicmFyeU5hbWUiOiJGSElSSGVscGVycyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7InBhdGgiOiJ0eXBlIiwic2NvcGUiOiJEIiwidHlwZSI6IlByb3BlcnR5In1dfSx7Im5hbWUiOiJLb25jZXB0IiwidHlwZSI6Ik9wZXJhbmRSZWYifV19fSwib3BlcmFuZCI6W3sibmFtZSI6IktvbmNlcHQiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1Db25jZXB0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IkFjdGl2ZURldmljZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJEIiwiZXhwcmVzc2lvbiI6eyJuYW1lIjoiRGV2aWNlTGlzdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJzdGF0dXMiLCJzY29wZSI6IkQiLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiYWN0aXZlIiwidHlwZSI6IkxpdGVyYWwifV19fSwib3BlcmFuZCI6W3sibmFtZSI6IkRldmljZUxpc3QiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJ0eXBlIjoiTGlzdFR5cGVTcGVjaWZpZXIiLCJlbGVtZW50VHlwZSI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RGV2aWNlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX1dfV19fX0=" + } + ] + } \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-DTRHelpers.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-DTRHelpers.json new file mode 100644 index 00000000..998d9ec3 --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-DTRHelpers.json @@ -0,0 +1,32 @@ +{ + "resourceType": "Library", + "id": "DTRHelpers", + "url": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicRulesetFunctions-prepopulation", + "name": "DTRHelpers", + "version": "0.1.0", + "title": "DTR Shared Functions", + "status": "draft", + "type": { + "coding": [ + { + "code": "logic-library" + } + ] + }, + "relatedArtifact": [ + { + "type": "depends-on", + "resource": "Library/FHIRHelpers-4.0.0" + } + ], + "content": [ + { + "contentType": "text/cql", + "data": "bGlicmFyeSBEVFJIZWxwZXJzIHZlcnNpb24gJzAuMS4wJwp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4wJwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4wJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBDRFNfQ29ubmVjdF9Db21tb25zX2Zvcl9GSElSdjQwMCB2ZXJzaW9uICcxLjAuMicgY2FsbGVkIENEUwoKY29udGV4dCBQYXRpZW50CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDT05ESVRJT05TIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBSZXR1cm5zIGZvcm1hdHRlZCByZWx2YW50IGRpYWdub3NlcyBjb2RlcyBmcm9tIGEgbGlzdCBvZiBjb25kaXRpb25zCi8vIFVzZSBDYXNlOiBSZXRyaWV2ZSBEZXZpY2VSZXF1ZXN0IHJlbGV2YW50IGRpYWdub3NlcwpkZWZpbmUgZnVuY3Rpb24gQ29kZXNGcm9tQ29uZGl0aW9ucyhDb25kTGlzdCBMaXN0PENvbmRpdGlvbj4pOgogIGRpc3RpbmN0KGZsYXR0ZW4oCiAgICBDb25kTGlzdCBDCiAgICAgIGxldCBEaWFnbm9zZXNDb2RpbmdzOgogICAgICAgICAgKEMuY29kZS5jb2RpbmcpIENPRElORyB3aGVyZSBDT0RJTkcuc3lzdGVtLnZhbHVlIGluIHsKICAgICAgICAgICAgJ2h0dHA6Ly9obDcub3JnL2ZoaXIvc2lkL2ljZC0xMCcsCiAgICAgICAgICAgICdodHRwOi8vaGw3Lm9yZy9maGlyL3NpZC9pY2QtMTAtY20nLAogICAgICAgICAgICAnaHR0cDovL3Nub21lZC5pbmZvL3NjdCcKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBGSElSSGVscGVycy5Ub0NvZGUoQ09ESU5HKQogICAgICByZXR1cm4gRGlhZ25vc2VzQ29kaW5ncwogICkpCgovLyBSZXR1cm5zIHRoZSBmaXJzdCBjaHJvbm9sb2dpY2FsbHkgcmVjb3JkZWQgY29uZGl0aW9uIG9mIGEgQ29uZGl0aW9uTGlzdAovLyBVc2UgQ2FzZTogQWNjZXNzIGVhcmxpZXJzdCBjb25kaXRpb24gZnJvbSBhIGxpc3QKZGVmaW5lIGZ1bmN0aW9uIEZpcnN0RGF0ZUNvbmRpdGlvblJlY29yZGVkKENvbmRpdGlvbkxpc3QgTGlzdDxGSElSLkNvbmRpdGlvbj4pOgogIEZpcnN0KENvbmRpdGlvbkxpc3QgQyBzb3J0IGJ5IEZISVJIZWxwZXJzLiJUb0RhdGVUaW1lIihyZWNvcmRlZERhdGUpKSAgCgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPQlNFUlZBVElPTlMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIFJldHVybnMgdGhlIE9ic2VydmF0aW9uIHdpdGggdGhlIGxvd2VzdCB2YWx1ZSBmcm9tIGFuIE9ic2VydmF0aW9uTGlzdAovLyBVc2UgQ2FzZTogRmluZGluZyB0aGUgbG93ZXN0IG51bWVyaWNhbCBsYWIgcmVzdWx0CmRlZmluZSBmdW5jdGlvbiBMb3dlc3RPYnNlcnZhdGlvbihPYnNMaXN0IExpc3Q8T2JzZXJ2YXRpb24+KToKICBNaW4oT2JzTGlzdCBPIHJldHVybiBGSElSSGVscGVycy5Ub1F1YW50aXR5KE8udmFsdWUgYXMgUXVhbnRpdHkpKQoKLy8gUmV0dXJucyB0aGUgbnVtZXJpY2FsIHZhbHVlIG9mIGFuIE9ic2VydmF0aW9uLCB3aXRob3V0IGEgdW5pdAovLyBVc2UgQ2FzZTogRGlzcGxheWluZyBvbmx5IHRoZSBudW1lcmljYWwgcGFydCBvZiBhIGxhYiByZXN1bHQKZGVmaW5lIGZ1bmN0aW9uIEdldE9ic2VydmF0aW9uVmFsdWUoT2JzIE9ic2VydmF0aW9uKTogCiAgTnVsbFNhZmVUb1F1YW50aXR5V2l0aG91dFVuaXQoY2FzdCBPYnMudmFsdWUgYXMgUXVhbnRpdHkpCgovLyBSZXRyaWV2ZSB0aGUgbnVtZXJpY2FsIHZhbHVlIG9mIGEgRkhJUiBxdWFudGl0eSwgd2l0aG91dCB1bml0cwovLyBVc2UgQ2FzZTogSGVscGVyIGZ1bmN0aW9uIGZvciBHZXRPYnNlcnZhdGlvblZhbHVlKCkgCmRlZmluZSBmdW5jdGlvbiBOdWxsU2FmZVRvUXVhbnRpdHlXaXRob3V0VW5pdChRdHkgRkhJUi5RdWFudGl0eSk6CiAgaWYgUXR5IGlzIG5vdCBudWxsIHRoZW4gUXR5LnZhbHVlLnZhbHVlIAogIGVsc2UgbnVsbAoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRU5DT1VOVEVSUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gVGFrZXMgaW4gYSBsaXN0IG9mIGVuY291bnRlcnMgYW5kIGEgbG9va2JhY2sgcGVyaW9kLCBhbmQgcmV0dXJucyBhIHN1YnNldCBvZiB0aGF0IGxpc3QgY29udGFpbmluZyBlbmNvdW50ZXJzIG9jY3VyaW5nIGR1cmluZyB0aGF0IGxvb2tiYWNrIHBlcmlvZC4KLy8gVXNlIENhc2U6IFJldHJpZXZlIGVuY291bnRlcnMgdGhhdCBvY2N1ciBkdXJpbmcgYSByZWNlbnQgdGltZSBwZXJpb2QKZGVmaW5lIGZ1bmN0aW9uIEVuY291bnRlckxvb2tCYWNrKEVuY291bnRlckxpc3QgTGlzdDxFbmNvdW50ZXI+LCBMb29rQmFjayBTeXN0ZW0uUXVhbnRpdHkpOgogIEVuY291bnRlckxpc3QgRQogICAgbGV0IExvb2tCYWNrSW50ZXJ2YWw6IEludGVydmFsW05vdygpIC0gTG9va0JhY2ssIE5vdygpXQogICAgd2hlcmUgKGNhc3QgRS5wZXJpb2Quc3RhcnQgYXMgZGF0ZVRpbWUpLnZhbHVlIGluIExvb2tCYWNrSW50ZXJ2YWwKICAgICAgb3IgQ0RTLlBlcmlvZFRvSW50ZXJ2YWwoY2FzdCBFLnBlcmlvZCBhcyBQZXJpb2QpIG92ZXJsYXBzIExvb2tCYWNrSW50ZXJ2YWwKCi8vIFJldHVybnMgZm9ybWF0dGVkIGNvZGluZ3MgZnJvbSBhIGxpc3Qgb2YgRW5jb3VudGVycwovLyBVc2UgQ2FzZTogUXVlcnkgcmVsZXZhbnQgRW5jb3VudGVycwpkZWZpbmUgZnVuY3Rpb24gQ29udmVydEVuY291bnRlckRldGFpbHMoRW5jb3VudGVyTGlzdCBMaXN0PEVuY291bnRlcj4pOgogIGRpc3RpbmN0KAogICAgZmxhdHRlbigKICAgICAgRW5jb3VudGVyTGlzdCBFCiAgICAgICAgbGV0IEVuY291bnRlckNvZGluZ3M6CiAgICAgICAgICAoRS50eXBlLmNvZGluZykgQ09ESU5HCiAgICAgICAgICByZXR1cm4gVHVwbGUgewogICAgICAgICAgICBjb2RlOiBDT0RJTkcuY29kZS52YWx1ZSwKICAgICAgICAgICAgc3lzdGVtOiBDT0RJTkcuc3lzdGVtLnZhbHVlLAogICAgICAgICAgICBkaXNwbGF5OiBDT0RJTkcuZGlzcGxheS52YWx1ZSwKICAgICAgICAgICAgcGVyaW9kU3RhcnQ6IEUucGVyaW9kLnN0YXJ0LnZhbHVlLAogICAgICAgICAgICBlbmNvdW50ZXJSZWFzb246IEUucmVhc29uQ29kZVswXS5jb2RpbmcuZGlzcGxheS52YWx1ZSwKICAgICAgICAgICAgdHlwZTogJ2VuY291bnRlcicKICAgICAgICAgIH0KICAgICAgICByZXR1cm4gRW5jb3VudGVyQ29kaW5ncwogICAgKQogICkKCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUFJPQ0VEVVJFUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBSZXR1cm5zIGZvcm1hdHRlZCBjb2RpbmdzIGZyb20gYSBsaXN0IG9mIFByb2NlZHVyZXMKLy8gVXNlIENhc2U6IFF1ZXJ5IHJlbGV2YW50IHByb2NlZHVyZXMgZm9yIGEgTWVkaWNhdGlvblJlcXVlc3QKZGVmaW5lIGZ1bmN0aW9uIFByb2NlZHVyZUNvZGluZyhQcm9jZWR1cmVMaXN0IExpc3Q8RkhJUi5Qcm9jZWR1cmU+KToKICBkaXN0aW5jdCgKICAgIGZsYXR0ZW4oCiAgICAgIFByb2NlZHVyZUxpc3QgUAogICAgICAgIGxldCBEaWFnbm9zZXNDb2RpbmdzOgogICAgICAgICAgKFAuY29kZS5jb2RpbmcpIENPRElORyAKICAgICAgICAgIHJldHVybiBUdXBsZSB7CiAgICAgICAgICAgIGNvZGU6IENPRElORy5jb2RlLnZhbHVlLAogICAgICAgICAgICBzeXN0ZW06IENPRElORy5zeXN0ZW0udmFsdWUsCiAgICAgICAgICAgIGRpc3BsYXk6IENPRElORy5kaXNwbGF5LnZhbHVlCiAgICAgICAgICB9CiAgICAgICAgcmV0dXJuIERpYWdub3Nlc0NvZGluZ3MKICAgICkKICApCgovLyBSZXR1cm5zIGZvcm1hdHRlZCBjb2RpbmdzIGZyb20gYSBsaXN0IG9mIFByb2NlZHVyZXMKLy8gVXNlIENhc2U6IFF1ZXJ5IHJlbGV2YW50IHByb2NlZHVyZXMgZm9yIGEgTWVkaWNhdGlvblJlcXVlc3QKICBkZWZpbmUgZnVuY3Rpb24gQ29kZXNGcm9tUHJvY2VkdXJlcyhQcm9jZWR1cmVMaXN0IExpc3Q8RkhJUi5Qcm9jZWR1cmU+KToKICAgIGRpc3RpbmN0KGZsYXR0ZW4oCiAgICAgIFByb2NlZHVyZUxpc3QgUAogICAgICAgIGxldCBEaWFnbm9zZXNDb2RpbmdzOgogICAgICAgICAgICAoUC5jb2RlLmNvZGluZykgQ09ESU5HIHdoZXJlIENPRElORy5zeXN0ZW0udmFsdWUgaW4gewogICAgICAgICAgICAgICdodHRwOi8vaGw3Lm9yZy9maGlyL3NpZC9pY2QtMTAnLAogICAgICAgICAgICAgICdodHRwOi8vaGw3Lm9yZy9maGlyL3NpZC9pY2QtMTAtY20nLAogICAgICAgICAgICAgICdodHRwOi8vc25vbWVkLmluZm8vc2N0JwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBGSElSSGVscGVycy5Ub0NvZGUoQ09ESU5HKQogICAgICAgIHJldHVybiBEaWFnbm9zZXNDb2RpbmdzCiAgKSk=" + }, + { + "contentType": "application/elm+json", + "data": "eyJsaWJyYXJ5Ijp7ImFubm90YXRpb24iOlt7InRyYW5zbGF0b3JPcHRpb25zIjoiIiwidHlwZSI6IkNxbFRvRWxtSW5mbyJ9LHsibGlicmFyeUlkIjoiRFRSSGVscGVycyIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjQsInN0YXJ0Q2hhciI6MSwiZW5kTGluZSI6NCwiZW5kQ2hhciI6NjcsIm1lc3NhZ2UiOiJDb3VsZCBub3QgbG9hZCBzb3VyY2UgZm9yIGxpYnJhcnkgQ0RTX0Nvbm5lY3RfQ29tbW9uc19mb3JfRkhJUnY0MDAuIiwiZXJyb3JUeXBlIjoiaW5jbHVkZSIsImVycm9yU2V2ZXJpdHkiOiJlcnJvciIsInRhcmdldEluY2x1ZGVMaWJyYXJ5SWQiOiJDRFNfQ29ubmVjdF9Db21tb25zX2Zvcl9GSElSdjQwMCIsInRhcmdldEluY2x1ZGVMaWJyYXJ5VmVyc2lvbklkIjoiMS4wLjIiLCJ0eXBlIjoiQ3FsVG9FbG1FcnJvciJ9LHsibGlicmFyeUlkIjoiRFRSSGVscGVycyIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjU2LCJzdGFydENoYXIiOjEwLCJlbmRMaW5lIjo1NiwiZW5kQ2hhciI6MTIsIm1lc3NhZ2UiOiJDb3VsZCBub3QgcmVzb2x2ZSBpZGVudGlmaWVyIENEUyBpbiB0aGUgY3VycmVudCBsaWJyYXJ5LiIsImVycm9yVHlwZSI6InNlbWFudGljIiwiZXJyb3JTZXZlcml0eSI6ImVycm9yIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifV0sImlkZW50aWZpZXIiOnsiaWQiOiJEVFJIZWxwZXJzIiwidmVyc2lvbiI6IjAuMS4wIn0sInNjaGVtYUlkZW50aWZpZXIiOnsiaWQiOiJ1cm46aGw3LW9yZzplbG0iLCJ2ZXJzaW9uIjoicjEifSwidXNpbmdzIjp7ImRlZiI6W3sibG9jYWxJZGVudGlmaWVyIjoiU3lzdGVtIiwidXJpIjoidXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIn0seyJsb2NhbElkZW50aWZpZXIiOiJGSElSIiwidXJpIjoiaHR0cDovL2hsNy5vcmcvZmhpciIsInZlcnNpb24iOiI0LjAuMCJ9XX0sImluY2x1ZGVzIjp7ImRlZiI6W3sibG9jYWxJZGVudGlmaWVyIjoiRkhJUkhlbHBlcnMiLCJwYXRoIjoiRkhJUkhlbHBlcnMiLCJ2ZXJzaW9uIjoiNC4wLjAifV19LCJjb250ZXh0cyI6eyJkZWYiOlt7Im5hbWUiOiJQYXRpZW50In1dfSwic3RhdGVtZW50cyI6eyJkZWYiOlt7Im5hbWUiOiJQYXRpZW50IiwiY29udGV4dCI6IlBhdGllbnQiLCJleHByZXNzaW9uIjp7InR5cGUiOiJTaW5nbGV0b25Gcm9tIiwib3BlcmFuZCI6eyJkYXRhVHlwZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVBhdGllbnQiLCJ0eXBlIjoiUmV0cmlldmUifX19LHsibmFtZSI6IkNvZGVzRnJvbUNvbmRpdGlvbnMiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiRGlzdGluY3QiLCJvcGVyYW5kIjp7InR5cGUiOiJGbGF0dGVuIiwib3BlcmFuZCI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiQyIsImV4cHJlc3Npb24iOnsibmFtZSI6IkNvbmRMaXN0IiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dLCJsZXQiOlt7ImlkZW50aWZpZXIiOiJEaWFnbm9zZXNDb2RpbmdzIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiQ09ESU5HIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoiY29kaW5nIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJjb2RlIiwic2NvcGUiOiJDIiwidHlwZSI6IlByb3BlcnR5In19fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJJbiIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3lzdGVtIiwic2NvcGUiOiJDT0RJTkciLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ0eXBlIjoiTGlzdCIsImVsZW1lbnQiOlt7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJodHRwOi8vaGw3Lm9yZy9maGlyL3NpZC9pY2QtMTAiLCJ0eXBlIjoiTGl0ZXJhbCJ9LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6Imh0dHA6Ly9obDcub3JnL2ZoaXIvc2lkL2ljZC0xMC1jbSIsInR5cGUiOiJMaXRlcmFsIn0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiaHR0cDovL3Nub21lZC5pbmZvL3NjdCIsInR5cGUiOiJMaXRlcmFsIn1dfV19LCJyZXR1cm4iOnsiZXhwcmVzc2lvbiI6eyJuYW1lIjoiVG9Db2RlIiwibGlicmFyeU5hbWUiOiJGSElSSGVscGVycyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7Im5hbWUiOiJDT0RJTkciLCJ0eXBlIjoiQWxpYXNSZWYifV19fX19XSwicmVsYXRpb25zaGlwIjpbXSwicmV0dXJuIjp7ImV4cHJlc3Npb24iOnsibmFtZSI6IkRpYWdub3Nlc0NvZGluZ3MiLCJ0eXBlIjoiUXVlcnlMZXRSZWYifX19fX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJDb25kTGlzdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJMaXN0VHlwZVNwZWNpZmllciIsImVsZW1lbnRUeXBlIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db25kaXRpb24iLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fV19LHsibmFtZSI6IkZpcnN0RGF0ZUNvbmRpdGlvblJlY29yZGVkIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IkZpcnN0Iiwic291cmNlIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJDIiwiZXhwcmVzc2lvbiI6eyJuYW1lIjoiQ29uZGl0aW9uTGlzdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19XSwicmVsYXRpb25zaGlwIjpbXSwic29ydCI6eyJieSI6W3siZGlyZWN0aW9uIjoiYXNjIiwidHlwZSI6IkJ5RXhwcmVzc2lvbiIsImV4cHJlc3Npb24iOnsibmFtZSI6IlRvRGF0ZVRpbWUiLCJsaWJyYXJ5TmFtZSI6IkZISVJIZWxwZXJzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sibmFtZSI6InJlY29yZGVkRGF0ZSIsInR5cGUiOiJJZGVudGlmaWVyUmVmIn1dfX1dfX19LCJvcGVyYW5kIjpbeyJuYW1lIjoiQ29uZGl0aW9uTGlzdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJMaXN0VHlwZVNwZWNpZmllciIsImVsZW1lbnRUeXBlIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db25kaXRpb24iLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fV19LHsibmFtZSI6Ikxvd2VzdE9ic2VydmF0aW9uIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6Ik1pbiIsInNvdXJjZSI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiTyIsImV4cHJlc3Npb24iOnsibmFtZSI6Ik9ic0xpc3QiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fV0sInJlbGF0aW9uc2hpcCI6W10sInJldHVybiI6eyJleHByZXNzaW9uIjp7Im5hbWUiOiJUb1F1YW50aXR5IiwibGlicmFyeU5hbWUiOiJGSElSSGVscGVycyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7InN0cmljdCI6ZmFsc2UsInR5cGUiOiJBcyIsIm9wZXJhbmQiOnsicGF0aCI6InZhbHVlIiwic2NvcGUiOiJPIiwidHlwZSI6IlByb3BlcnR5In0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UXVhbnRpdHkiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX19fX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJPYnNMaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU9ic2VydmF0aW9uIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX1dfSx7Im5hbWUiOiJOdWxsU2FmZVRvUXVhbnRpdHlXaXRob3V0VW5pdCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJJZiIsImNvbmRpdGlvbiI6eyJ0eXBlIjoiTm90Iiwib3BlcmFuZCI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJuYW1lIjoiUXR5IiwidHlwZSI6Ik9wZXJhbmRSZWYifX19LCJ0aGVuIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IlF0eSIsInR5cGUiOiJPcGVyYW5kUmVmIn19fSwiZWxzZSI6eyJhc1R5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfURlY2ltYWwiLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InR5cGUiOiJOdWxsIn19fSwib3BlcmFuZCI6W3sibmFtZSI6IlF0eSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1RdWFudGl0eSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJHZXRPYnNlcnZhdGlvblZhbHVlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsibmFtZSI6Ik51bGxTYWZlVG9RdWFudGl0eVdpdGhvdXRVbml0IiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sic3RyaWN0Ijp0cnVlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT2JzIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sImFzVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UXVhbnRpdHkiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJPYnMiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9T2JzZXJ2YXRpb24iLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiRW5jb3VudGVyTG9va0JhY2siLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiRSIsImV4cHJlc3Npb24iOnsibmFtZSI6IkVuY291bnRlckxpc3QiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fV0sImxldCI6W3siaWRlbnRpZmllciI6Ikxvb2tCYWNrSW50ZXJ2YWwiLCJleHByZXNzaW9uIjp7Imxvd0Nsb3NlZCI6dHJ1ZSwiaGlnaENsb3NlZCI6dHJ1ZSwidHlwZSI6IkludGVydmFsIiwibG93Ijp7InR5cGUiOiJTdWJ0cmFjdCIsIm9wZXJhbmQiOlt7InR5cGUiOiJOb3cifSx7Im5hbWUiOiJMb29rQmFjayIsInR5cGUiOiJPcGVyYW5kUmVmIn1dfSwiaGlnaCI6eyJ0eXBlIjoiTm93In19fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJOdWxsIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoiRW5jb3VudGVyTGlzdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJMaXN0VHlwZVNwZWNpZmllciIsImVsZW1lbnRUeXBlIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1FbmNvdW50ZXIiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fSx7Im5hbWUiOiJMb29rQmFjayIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVF1YW50aXR5IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IkNvbnZlcnRFbmNvdW50ZXJEZXRhaWxzIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IkRpc3RpbmN0Iiwib3BlcmFuZCI6eyJ0eXBlIjoiRmxhdHRlbiIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IkUiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJFbmNvdW50ZXJMaXN0IiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dLCJsZXQiOlt7ImlkZW50aWZpZXIiOiJFbmNvdW50ZXJDb2RpbmdzIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiQ09ESU5HIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiRmxhdHRlbiIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IiR0aGlzIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidHlwZSIsInNjb3BlIjoiRSIsInR5cGUiOiJQcm9wZXJ0eSJ9fV0sIndoZXJlIjp7InR5cGUiOiJOb3QiLCJvcGVyYW5kIjp7InR5cGUiOiJJc051bGwiLCJvcGVyYW5kIjp7InBhdGgiOiJjb2RpbmciLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX0sInJldHVybiI6eyJkaXN0aW5jdCI6ZmFsc2UsImV4cHJlc3Npb24iOnsicGF0aCI6ImNvZGluZyIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fX19XSwicmVsYXRpb25zaGlwIjpbXSwicmV0dXJuIjp7ImV4cHJlc3Npb24iOnsidHlwZSI6IlR1cGxlIiwiZWxlbWVudCI6W3sibmFtZSI6ImNvZGUiLCJ2YWx1ZSI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImNvZGUiLCJzY29wZSI6IkNPRElORyIsInR5cGUiOiJQcm9wZXJ0eSJ9fX0seyJuYW1lIjoic3lzdGVtIiwidmFsdWUiOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJzeXN0ZW0iLCJzY29wZSI6IkNPRElORyIsInR5cGUiOiJQcm9wZXJ0eSJ9fX0seyJuYW1lIjoiZGlzcGxheSIsInZhbHVlIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoiZGlzcGxheSIsInNjb3BlIjoiQ09ESU5HIiwidHlwZSI6IlByb3BlcnR5In19fSx7Im5hbWUiOiJwZXJpb2RTdGFydCIsInZhbHVlIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3RhcnQiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InBlcmlvZCIsInNjb3BlIjoiRSIsInR5cGUiOiJQcm9wZXJ0eSJ9fX19LHsibmFtZSI6ImVuY291bnRlclJlYXNvbiIsInZhbHVlIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiIkdGhpcyIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IiR0aGlzIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoiY29kaW5nIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InR5cGUiOiJJbmRleGVyIiwib3BlcmFuZCI6W3sicGF0aCI6InJlYXNvbkNvZGUiLCJzY29wZSI6IkUiLCJ0eXBlIjoiUHJvcGVydHkifSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9SW50ZWdlciIsInZhbHVlIjoiMCIsInR5cGUiOiJMaXRlcmFsIn1dfX19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6ImRpc3BsYXkiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX0sInJldHVybiI6eyJkaXN0aW5jdCI6ZmFsc2UsImV4cHJlc3Npb24iOnsicGF0aCI6ImRpc3BsYXkiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19LCJyZXR1cm4iOnsiZGlzdGluY3QiOmZhbHNlLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fX0seyJuYW1lIjoidHlwZSIsInZhbHVlIjp7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJlbmNvdW50ZXIiLCJ0eXBlIjoiTGl0ZXJhbCJ9fV19fX19XSwicmVsYXRpb25zaGlwIjpbXSwicmV0dXJuIjp7ImV4cHJlc3Npb24iOnsibmFtZSI6IkVuY291bnRlckNvZGluZ3MiLCJ0eXBlIjoiUXVlcnlMZXRSZWYifX19fX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJFbmNvdW50ZXJMaXN0Iiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsidHlwZSI6Ikxpc3RUeXBlU3BlY2lmaWVyIiwiZWxlbWVudFR5cGUiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUVuY291bnRlciIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19XX0seyJuYW1lIjoiUHJvY2VkdXJlQ29kaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IkRpc3RpbmN0Iiwib3BlcmFuZCI6eyJ0eXBlIjoiRmxhdHRlbiIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IlAiLCJleHByZXNzaW9uIjp7Im5hbWUiOiJQcm9jZWR1cmVMaXN0IiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dLCJsZXQiOlt7ImlkZW50aWZpZXIiOiJEaWFnbm9zZXNDb2RpbmdzIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiQ09ESU5HIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoiY29kaW5nIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJjb2RlIiwic2NvcGUiOiJQIiwidHlwZSI6IlByb3BlcnR5In19fV0sInJlbGF0aW9uc2hpcCI6W10sInJldHVybiI6eyJleHByZXNzaW9uIjp7InR5cGUiOiJUdXBsZSIsImVsZW1lbnQiOlt7Im5hbWUiOiJjb2RlIiwidmFsdWUiOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJjb2RlIiwic2NvcGUiOiJDT0RJTkciLCJ0eXBlIjoiUHJvcGVydHkifX19LHsibmFtZSI6InN5c3RlbSIsInZhbHVlIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3lzdGVtIiwic2NvcGUiOiJDT0RJTkciLCJ0eXBlIjoiUHJvcGVydHkifX19LHsibmFtZSI6ImRpc3BsYXkiLCJ2YWx1ZSI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImRpc3BsYXkiLCJzY29wZSI6IkNPRElORyIsInR5cGUiOiJQcm9wZXJ0eSJ9fX1dfX19fV0sInJlbGF0aW9uc2hpcCI6W10sInJldHVybiI6eyJleHByZXNzaW9uIjp7Im5hbWUiOiJEaWFnbm9zZXNDb2RpbmdzIiwidHlwZSI6IlF1ZXJ5TGV0UmVmIn19fX19LCJvcGVyYW5kIjpbeyJuYW1lIjoiUHJvY2VkdXJlTGlzdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJMaXN0VHlwZVNwZWNpZmllciIsImVsZW1lbnRUeXBlIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Qcm9jZWR1cmUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fV19LHsibmFtZSI6IkNvZGVzRnJvbVByb2NlZHVyZXMiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiRGlzdGluY3QiLCJvcGVyYW5kIjp7InR5cGUiOiJGbGF0dGVuIiwib3BlcmFuZCI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiUCIsImV4cHJlc3Npb24iOnsibmFtZSI6IlByb2NlZHVyZUxpc3QiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fV0sImxldCI6W3siaWRlbnRpZmllciI6IkRpYWdub3Nlc0NvZGluZ3MiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJDT0RJTkciLCJleHByZXNzaW9uIjp7InBhdGgiOiJjb2RpbmciLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImNvZGUiLCJzY29wZSI6IlAiLCJ0eXBlIjoiUHJvcGVydHkifX19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkluIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJzeXN0ZW0iLCJzY29wZSI6IkNPRElORyIsInR5cGUiOiJQcm9wZXJ0eSJ9fSx7InR5cGUiOiJMaXN0IiwiZWxlbWVudCI6W3sidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6Imh0dHA6Ly9obDcub3JnL2ZoaXIvc2lkL2ljZC0xMCIsInR5cGUiOiJMaXRlcmFsIn0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiaHR0cDovL2hsNy5vcmcvZmhpci9zaWQvaWNkLTEwLWNtIiwidHlwZSI6IkxpdGVyYWwifSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiJodHRwOi8vc25vbWVkLmluZm8vc2N0IiwidHlwZSI6IkxpdGVyYWwifV19XX0sInJldHVybiI6eyJleHByZXNzaW9uIjp7Im5hbWUiOiJUb0NvZGUiLCJsaWJyYXJ5TmFtZSI6IkZISVJIZWxwZXJzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sibmFtZSI6IkNPRElORyIsInR5cGUiOiJBbGlhc1JlZiJ9XX19fX1dLCJyZWxhdGlvbnNoaXAiOltdLCJyZXR1cm4iOnsiZXhwcmVzc2lvbiI6eyJuYW1lIjoiRGlhZ25vc2VzQ29kaW5ncyIsInR5cGUiOiJRdWVyeUxldFJlZiJ9fX19fSwib3BlcmFuZCI6W3sibmFtZSI6IlByb2NlZHVyZUxpc3QiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJ0eXBlIjoiTGlzdFR5cGVTcGVjaWZpZXIiLCJlbGVtZW50VHlwZSI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UHJvY2VkdXJlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX1dfV19fX0=" + } + ] + } \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-FHIRHelpers-4.0.0.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-FHIRHelpers-4.0.0.json new file mode 100644 index 00000000..6bea7b78 --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Library-R4-FHIRHelpers-4.0.0.json @@ -0,0 +1,25 @@ +{ + "resourceType": "Library", + "id": "FHIRHelpers-4.0.0", + "name": "FHIRHelpers-4.0.0", + "version": "4.0.0", + "title": "FHIR Helpers", + "status": "draft", + "type": { + "coding": [ + { + "code": "logic-library" + } + ] + }, + "content": [ + { + "contentType": "text/cql", + "data": "bGlicmFyeSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMCcKCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjAnCgpkZWZpbmUgZnVuY3Rpb24gVG9JbnRlcnZhbChwZXJpb2QgRkhJUi5QZXJpb2QpOgogICAgaWYgcGVyaW9kIGlzIG51bGwgdGhlbgogICAgICAgIG51bGwKICAgIGVsc2UKICAgICAgICBJbnRlcnZhbFtwZXJpb2QuInN0YXJ0Ii52YWx1ZSwgcGVyaW9kLiJlbmQiLnZhbHVlXQoKZGVmaW5lIGZ1bmN0aW9uIFRvUXVhbnRpdHkocXVhbnRpdHkgRkhJUi5RdWFudGl0eSk6CiAgICBpZiBxdWFudGl0eSBpcyBudWxsIHRoZW4KICAgICAgICBudWxsCiAgICBlbHNlCiAgICAgICAgU3lzdGVtLlF1YW50aXR5IHsgdmFsdWU6IHF1YW50aXR5LnZhbHVlLnZhbHVlLCB1bml0OiBxdWFudGl0eS51bml0LnZhbHVlIH0KCmRlZmluZSBmdW5jdGlvbiBUb0ludGVydmFsKHJhbmdlIEZISVIuUmFuZ2UpOgogICAgaWYgcmFuZ2UgaXMgbnVsbCB0aGVuCiAgICAgICAgbnVsbAogICAgZWxzZQogICAgICAgIEludGVydmFsW1RvUXVhbnRpdHkocmFuZ2UubG93KSwgVG9RdWFudGl0eShyYW5nZS5oaWdoKV0KCmRlZmluZSBmdW5jdGlvbiBUb0NvZGUoY29kaW5nIEZISVIuQ29kaW5nKToKICAgIGlmIGNvZGluZyBpcyBudWxsIHRoZW4KICAgICAgICBudWxsCiAgICBlbHNlCiAgICAgICAgU3lzdGVtLkNvZGUgewogICAgICAgICAgY29kZTogY29kaW5nLmNvZGUudmFsdWUsCiAgICAgICAgICBzeXN0ZW06IGNvZGluZy5zeXN0ZW0udmFsdWUsCiAgICAgICAgICB2ZXJzaW9uOiBjb2RpbmcudmVyc2lvbi52YWx1ZSwKICAgICAgICAgIGRpc3BsYXk6IGNvZGluZy5kaXNwbGF5LnZhbHVlCiAgICAgICAgfQoKZGVmaW5lIGZ1bmN0aW9uIFRvQ29uY2VwdChjb25jZXB0IEZISVIuQ29kZWFibGVDb25jZXB0KToKICAgIGlmIGNvbmNlcHQgaXMgbnVsbCB0aGVuCiAgICAgICAgbnVsbAogICAgZWxzZQogICAgICAgIFN5c3RlbS5Db25jZXB0IHsKICAgICAgICAgICAgY29kZXM6IGNvbmNlcHQuY29kaW5nIEMgcmV0dXJuIFRvQ29kZShDKSwKICAgICAgICAgICAgZGlzcGxheTogY29uY2VwdC50ZXh0LnZhbHVlCiAgICAgICAgfQoKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIudXVpZCk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlRlc3RTY3JpcHRSZXF1ZXN0TWV0aG9kQ29kZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlNvcnREaXJlY3Rpb24pOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5CaW9sb2dpY2FsbHlEZXJpdmVkUHJvZHVjdFN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlVuaXRzT2ZUaW1lKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWRkcmVzc1R5cGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5BbGxlcmd5SW50b2xlcmFuY2VDYXRlZ29yeSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLklzc3VlU2V2ZXJpdHkpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5DYXJlVGVhbVN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkVuY291bnRlclN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlN0cnVjdHVyZURlZmluaXRpb25LaW5kKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUHVibGljYXRpb25TdGF0dXMpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5GSElSVmVyc2lvbik6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNhcmVQbGFuQWN0aXZpdHlLaW5kKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuU3RydWN0dXJlTWFwU291cmNlTGlzdE1vZGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5SZXF1ZXN0U3RhdHVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuc3RyYW5kVHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlF1ZXN0aW9ubmFpcmVSZXNwb25zZVN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlNlYXJjaENvbXBhcmF0b3IpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5DaGFyZ2VJdGVtU3RhdHVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWN0aW9uUGFydGljaXBhbnRUeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWxsZXJneUludG9sZXJhbmNlVHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNhcmVQbGFuQWN0aXZpdHlTdGF0dXMpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5JbnZvaWNlU3RhdHVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ2xhaW1Qcm9jZXNzaW5nQ29kZXMpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5SZXF1ZXN0UmVzb3VyY2VUeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUGFydGljaXBhdGlvblN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkRldmljZU5hbWVUeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRG9jdW1lbnRNb2RlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQXNzZXJ0aW9uT3BlcmF0b3JUeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRGF5c09mV2Vlayk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLklzc3VlVHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLmNhbm9uaWNhbCk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlN0cnVjdHVyZU1hcENvbnRleHRUeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRmFtaWx5SGlzdG9yeVN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLnN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkV4dGVuc2lvbkNvbnRleHRUeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQXNzZXJ0aW9uUmVzcG9uc2VUeXBlcyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlJlcXVlc3RJbnRlbnQpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5zdHJpbmcpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5BY3Rpb25SZXF1aXJlZEJlaGF2aW9yKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuR3JhcGhDb21wYXJ0bWVudFVzZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLm9yaWVudGF0aW9uVHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkFjY291bnRTdGF0dXMpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5JZGVudGlmaWVyVXNlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuU3RydWN0dXJlTWFwVGFyZ2V0TGlzdE1vZGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5FeHBvc3VyZVN0YXRlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuVGVzdFJlcG9ydFBhcnRpY2lwYW50VHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkJpbmRpbmdTdHJlbmd0aCk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlJlcXVlc3RQcmlvcml0eSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlBhcnRpY2lwYW50UmVxdWlyZWQpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5YUGF0aFVzYWdlVHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLmlkKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRmlsdGVyT3BlcmF0b3IpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5OYW1pbmdTeXN0ZW1UeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29udHJhY3RSZXNvdXJjZVN0YXR1c0NvZGVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUmVzZWFyY2hTdWJqZWN0U3RhdHVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuU3RydWN0dXJlTWFwVHJhbnNmb3JtKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUmVzcG9uc2VUeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvRGVjaW1hbCh2YWx1ZSBGSElSLmRlY2ltYWwpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5BZ2dyZWdhdGlvbk1vZGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5zZXF1ZW5jZVR5cGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TeXN0ZW1SZXN0ZnVsSW50ZXJhY3Rpb24pOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5BZHZlcnNlRXZlbnRBY3R1YWxpdHkpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TdWJzY3JpcHRpb25DaGFubmVsVHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkFzc2VydGlvbkRpcmVjdGlvblR5cGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5DYXJlUGxhbkludGVudCk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkFsbGVyZ3lJbnRvbGVyYW5jZUNyaXRpY2FsaXR5KTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUHJvcGVydHlSZXByZXNlbnRhdGlvbik6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlRyaWdnZXJUeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29tcG9zaXRpb25TdGF0dXMpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5BcHBvaW50bWVudFN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLk1lc3NhZ2VTaWduaWZpY2FuY2VDYXRlZ29yeSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkxpc3RNb2RlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUmVzZWFyY2hFbGVtZW50VHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLk9ic2VydmF0aW9uU3RhdHVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUmVzb3VyY2VUeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvQm9vbGVhbih2YWx1ZSBGSElSLmJvb2xlYW4pOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TdHJ1Y3R1cmVNYXBHcm91cFR5cGVNb2RlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuU3VwcGx5UmVxdWVzdFN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkVuY291bnRlckxvY2F0aW9uU3RhdHVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29uZGl0aW9uYWxEZWxldGVTdGF0dXMpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi51cmwpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi51cmkpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Vc2UpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5NZWRpY2F0aW9uUmVxdWVzdFN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLklkZW50aXR5QXNzdXJhbmNlTGV2ZWwpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5EZXZpY2VNZXRyaWNDb2xvcik6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1RpbWUodmFsdWUgRkhJUi50aW1lKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29uZGl0aW9uYWxSZWFkU3RhdHVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWxsZXJneUludG9sZXJhbmNlU2V2ZXJpdHkpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5GaW5hbmNpYWxSZXNvdXJjZVN0YXR1c0NvZGVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuT3BlcmF0aW9uS2luZCk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlN1YnNjcmlwdGlvblN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkdvYWxMaWZlY3ljbGVTdGF0dXMpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5PYnNlcnZhdGlvbkRhdGFUeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRG9jdW1lbnRSZWZlcmVuY2VTdGF0dXMpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5yZXBvc2l0b3J5VHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkxvY2F0aW9uU3RhdHVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuTm90ZVR5cGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5UZXN0UmVwb3J0U3RhdHVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29kZVN5c3RlbUNvbnRlbnRNb2RlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRkhJUkRldmljZVN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNvbnRhY3RQb2ludFN5c3RlbSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlNsb3RTdGF0dXMpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Qcm9wZXJ0eVR5cGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5UeXBlRGVyaXZhdGlvblJ1bGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5HdWlkYW5jZVJlc3BvbnNlU3RhdHVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUmVsYXRlZEFydGlmYWN0VHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLm9pZCk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNvbXBhcnRtZW50VHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLk1lZGljYXRpb25SZXF1ZXN0SW50ZW50KTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuSW52b2ljZVByaWNlQ29tcG9uZW50VHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkRldmljZU1ldHJpY0NhbGlicmF0aW9uU3RhdGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Hcm91cFR5cGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5FbmFibGVXaGVuQmVoYXZpb3IpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5UYXNrSW50ZW50KTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuSW1tdW5pemF0aW9uRXZhbHVhdGlvblN0YXR1c0NvZGVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRXhhbXBsZVNjZW5hcmlvQWN0b3JUeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUHJvdmVuYW5jZUVudGl0eVJvbGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TcGVjaW1lblN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlJlc3RmdWxDYXBhYmlsaXR5TW9kZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkRldGVjdGVkSXNzdWVTZXZlcml0eSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlZpc2lvbkV5ZXMpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Db25zZW50RGF0YU1lYW5pbmcpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5tZXNzYWdlaGVhZGVyUmVzcG9uc2VSZXF1ZXN0KTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuR3VpZGVQYWdlR2VuZXJhdGlvbik6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkRvY3VtZW50UmVsYXRpb25zaGlwVHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlZhcmlhYmxlVHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlRlc3RSZXBvcnRSZXN1bHQpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Db25jZXB0TWFwR3JvdXBVbm1hcHBlZE1vZGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9EYXRlVGltZSh2YWx1ZSBGSElSLmluc3RhbnQpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9EYXRlVGltZSh2YWx1ZSBGSElSLmRhdGVUaW1lKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvRGF0ZSh2YWx1ZSBGSElSLmRhdGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9JbnRlZ2VyKHZhbHVlIEZISVIucG9zaXRpdmVJbnQpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5DbGluaWNhbEltcHJlc3Npb25TdGF0dXMpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5FbGlnaWJpbGl0eVJlc3BvbnNlUHVycG9zZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLk5hcnJhdGl2ZVN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkltYWdpbmdTdHVkeVN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkVuZHBvaW50U3RhdHVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQmlvbG9naWNhbGx5RGVyaXZlZFByb2R1Y3RDYXRlZ29yeSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlJlc291cmNlVmVyc2lvblBvbGljeSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkFjdGlvbkNhcmRpbmFsaXR5QmVoYXZpb3IpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Hcm91cE1lYXN1cmUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5OYW1pbmdTeXN0ZW1JZGVudGlmaWVyVHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkltbXVuaXphdGlvblN0YXR1c0NvZGVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuTWVkaWNhdGlvblN0YXR1c0NvZGVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRGlzY3JpbWluYXRvclR5cGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TdHJ1Y3R1cmVNYXBJbnB1dE1vZGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5MaW5rYWdlVHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlJlZmVyZW5jZUhhbmRsaW5nUG9saWN5KTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUmVzZWFyY2hTdHVkeVN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkF1ZGl0RXZlbnRPdXRjb21lKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuU3BlY2ltZW5Db250YWluZWRQcmVmZXJlbmNlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWN0aW9uUmVsYXRpb25zaGlwVHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNvbnN0cmFpbnRTZXZlcml0eSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkV2ZW50Q2FwYWJpbGl0eU1vZGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Db2RlU2VhcmNoU3VwcG9ydCk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLk9ic2VydmF0aW9uUmFuZ2VDYXRlZ29yeSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlVESUVudHJ5VHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkRldmljZU1ldHJpY0NhdGVnb3J5KTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuVGVzdFJlcG9ydEFjdGlvblJlc3VsdCk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNhcGFiaWxpdHlTdGF0ZW1lbnRLaW5kKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRXZlbnRUaW1pbmcpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TZWFyY2hQYXJhbVR5cGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5BY3Rpb25Hcm91cGluZ0JlaGF2aW9yKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuU3RydWN0dXJlTWFwTW9kZWxNb2RlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuVGFza1N0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkJpb2xvZ2ljYWxseURlcml2ZWRQcm9kdWN0U3RvcmFnZVNjYWxlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuR3JhcGhDb21wYXJ0bWVudFJ1bGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TbGljaW5nUnVsZXMpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5FeHBsYW5hdGlvbk9mQmVuZWZpdFN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkd1aWRlUGFyYW1ldGVyQ29kZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNhdGFsb2dFbnRyeVJlbGF0aW9uVHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkxpbmtUeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29uY2VwdE1hcEVxdWl2YWxlbmNlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQXVkaXRFdmVudEFjdGlvbik6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlNlYXJjaE1vZGlmaWVyQ29kZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkV2ZW50U3RhdHVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuT3BlcmF0aW9uUGFyYW1ldGVyVXNlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29uc2VudFByb3Zpc2lvblR5cGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5BY3Rpb25Db25kaXRpb25LaW5kKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIucXVhbGl0eVR5cGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5BZG1pbmlzdHJhdGl2ZUdlbmRlcik6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlF1ZXN0aW9ubmFpcmVJdGVtVHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkRldmljZU1ldHJpY0NhbGlicmF0aW9uVHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkV2aWRlbmNlVmFyaWFibGVUeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuY29kZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkFjdGlvblNlbGVjdGlvbkJlaGF2aW9yKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuU3VwcGx5RGVsaXZlcnlTdGF0dXMpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5EaWFnbm9zdGljUmVwb3J0U3RhdHVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRmxhZ1N0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlNQRFhMaWNlbnNlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuTGlzdFN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLmJhc2U2NEJpbmFyeSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkRldmljZVVzZVN0YXRlbWVudFN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkF1ZGl0RXZlbnRBZ2VudE5ldHdvcmtUeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuRXhwcmVzc2lvbkxhbmd1YWdlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQWRkcmVzc1VzZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkNvbnRhY3RQb2ludFVzZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkRldmljZU1ldHJpY09wZXJhdGlvbmFsU3RhdHVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29udHJpYnV0b3JUeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUmVmZXJlbmNlVmVyc2lvblJ1bGVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuTWVhc3VyZVJlcG9ydFN0YXR1cyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlNlYXJjaEVudHJ5TW9kZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb0ludGVnZXIodmFsdWUgRkhJUi51bnNpZ25lZEludCk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLk5hbWVVc2UpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Mb2NhdGlvbk1vZGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9JbnRlZ2VyKHZhbHVlIEZISVIuaW50ZWdlcik6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkZISVJTdWJzdGFuY2VTdGF0dXMpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5RdWVzdGlvbm5haXJlSXRlbU9wZXJhdG9yKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuSFRUUFZlcmIpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5FcGlzb2RlT2ZDYXJlU3RhdHVzKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuUmVtaXR0YW5jZU91dGNvbWUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5tYXJrZG93bik6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkVsaWdpYmlsaXR5UmVxdWVzdFB1cnBvc2UpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5RdWFudGl0eUNvbXBhcmF0b3IpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5NZWFzdXJlUmVwb3J0VHlwZSk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLkFjdGlvblByZWNoZWNrQmVoYXZpb3IpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5TYW1wbGVkRGF0YURhdGFUeXBlKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29tcG9zaXRpb25BdHRlc3RhdGlvbk1vZGUpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5UeXBlUmVzdGZ1bEludGVyYWN0aW9uKTogdmFsdWUudmFsdWUKZGVmaW5lIGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlIEZISVIuQ29kZVN5c3RlbUhpZXJhcmNoeU1lYW5pbmcpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi52Q29uZmlkZW50aWFsaXR5Q2xhc3NpZmljYXRpb24pOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5Db250cmFjdFJlc291cmNlUHVibGljYXRpb25TdGF0dXNDb2Rlcyk6IHZhbHVlLnZhbHVlCmRlZmluZSBmdW5jdGlvbiBUb1N0cmluZyh2YWx1ZSBGSElSLlZpc2lvbkJhc2UpOiB2YWx1ZS52YWx1ZQpkZWZpbmUgZnVuY3Rpb24gVG9TdHJpbmcodmFsdWUgRkhJUi5CdW5kbGVUeXBlKTogdmFsdWUudmFsdWUKCg==" + }, + { + "contentType": "application/elm+json", + "data": "eyJsaWJyYXJ5Ijp7ImFubm90YXRpb24iOlt7InRyYW5zbGF0b3JPcHRpb25zIjoiIiwidHlwZSI6IkNxbFRvRWxtSW5mbyJ9XSwiaWRlbnRpZmllciI6eyJpZCI6IkZISVJIZWxwZXJzIiwidmVyc2lvbiI6IjQuMC4wIn0sInNjaGVtYUlkZW50aWZpZXIiOnsiaWQiOiJ1cm46aGw3LW9yZzplbG0iLCJ2ZXJzaW9uIjoicjEifSwidXNpbmdzIjp7ImRlZiI6W3sibG9jYWxJZGVudGlmaWVyIjoiU3lzdGVtIiwidXJpIjoidXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxIn0seyJsb2NhbElkZW50aWZpZXIiOiJGSElSIiwidXJpIjoiaHR0cDovL2hsNy5vcmcvZmhpciIsInZlcnNpb24iOiI0LjAuMCJ9XX0sInN0YXRlbWVudHMiOnsiZGVmIjpbeyJuYW1lIjoiVG9JbnRlcnZhbCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJJZiIsImNvbmRpdGlvbiI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJuYW1lIjoicGVyaW9kIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sInRoZW4iOnsidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJ0eXBlIjoiTnVsbCJ9LCJhc1R5cGVTcGVjaWZpZXIiOnsidHlwZSI6IkludGVydmFsVHlwZVNwZWNpZmllciIsInBvaW50VHlwZSI6eyJuYW1lIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1EYXRlVGltZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX19LCJlbHNlIjp7Imxvd0Nsb3NlZCI6dHJ1ZSwiaGlnaENsb3NlZCI6dHJ1ZSwidHlwZSI6IkludGVydmFsIiwibG93Ijp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3RhcnQiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InBlcmlvZCIsInR5cGUiOiJPcGVyYW5kUmVmIn19fSwiaGlnaCI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImVuZCIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoicGVyaW9kIiwidHlwZSI6Ik9wZXJhbmRSZWYifX19fX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJwZXJpb2QiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UGVyaW9kIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvUXVhbnRpdHkiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiSWYiLCJjb25kaXRpb24iOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsibmFtZSI6InF1YW50aXR5IiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sInRoZW4iOnsiYXNUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1RdWFudGl0eSIsInR5cGUiOiJBcyIsIm9wZXJhbmQiOnsidHlwZSI6Ik51bGwifX0sImVsc2UiOnsiY2xhc3NUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1RdWFudGl0eSIsInR5cGUiOiJJbnN0YW5jZSIsImVsZW1lbnQiOlt7Im5hbWUiOiJ2YWx1ZSIsInZhbHVlIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InF1YW50aXR5IiwidHlwZSI6Ik9wZXJhbmRSZWYifX19fSx7Im5hbWUiOiJ1bml0IiwidmFsdWUiOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJ1bml0IiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJxdWFudGl0eSIsInR5cGUiOiJPcGVyYW5kUmVmIn19fX1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJxdWFudGl0eSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1RdWFudGl0eSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb0ludGVydmFsIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsidHlwZSI6IklmIiwiY29uZGl0aW9uIjp7InR5cGUiOiJJc051bGwiLCJvcGVyYW5kIjp7Im5hbWUiOiJyYW5nZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJ0aGVuIjp7InR5cGUiOiJBcyIsIm9wZXJhbmQiOnsidHlwZSI6Ik51bGwifSwiYXNUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJJbnRlcnZhbFR5cGVTcGVjaWZpZXIiLCJwb2ludFR5cGUiOnsibmFtZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9UXVhbnRpdHkiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19fSwiZWxzZSI6eyJsb3dDbG9zZWQiOnRydWUsImhpZ2hDbG9zZWQiOnRydWUsInR5cGUiOiJJbnRlcnZhbCIsImxvdyI6eyJuYW1lIjoiVG9RdWFudGl0eSIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7InBhdGgiOiJsb3ciLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InJhbmdlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX1dfSwiaGlnaCI6eyJuYW1lIjoiVG9RdWFudGl0eSIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7InBhdGgiOiJoaWdoIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJyYW5nZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19XX19fSwib3BlcmFuZCI6W3sibmFtZSI6InJhbmdlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVJhbmdlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvQ29kZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJJZiIsImNvbmRpdGlvbiI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJuYW1lIjoiY29kaW5nIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sInRoZW4iOnsiYXNUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1Db2RlIiwidHlwZSI6IkFzIiwib3BlcmFuZCI6eyJ0eXBlIjoiTnVsbCJ9fSwiZWxzZSI6eyJjbGFzc1R5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUNvZGUiLCJ0eXBlIjoiSW5zdGFuY2UiLCJlbGVtZW50IjpbeyJuYW1lIjoiY29kZSIsInZhbHVlIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoiY29kZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiY29kaW5nIiwidHlwZSI6Ik9wZXJhbmRSZWYifX19fSx7Im5hbWUiOiJzeXN0ZW0iLCJ2YWx1ZSI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InN5c3RlbSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiY29kaW5nIiwidHlwZSI6Ik9wZXJhbmRSZWYifX19fSx7Im5hbWUiOiJ2ZXJzaW9uIiwidmFsdWUiOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJ2ZXJzaW9uIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJjb2RpbmciLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fX19LHsibmFtZSI6ImRpc3BsYXkiLCJ2YWx1ZSI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImRpc3BsYXkiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6ImNvZGluZyIsInR5cGUiOiJPcGVyYW5kUmVmIn19fX1dfX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJjb2RpbmciLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9Q29kaW5nIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvQ29uY2VwdCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InR5cGUiOiJJZiIsImNvbmRpdGlvbiI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJuYW1lIjoiY29uY2VwdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJ0aGVuIjp7ImFzVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9Q29uY2VwdCIsInR5cGUiOiJBcyIsIm9wZXJhbmQiOnsidHlwZSI6Ik51bGwifX0sImVsc2UiOnsiY2xhc3NUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1Db25jZXB0IiwidHlwZSI6Ikluc3RhbmNlIiwiZWxlbWVudCI6W3sibmFtZSI6ImNvZGVzIiwidmFsdWUiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IkMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJjb2RpbmciLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6ImNvbmNlcHQiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fX1dLCJyZWxhdGlvbnNoaXAiOltdLCJyZXR1cm4iOnsiZXhwcmVzc2lvbiI6eyJuYW1lIjoiVG9Db2RlIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sibmFtZSI6IkMiLCJ0eXBlIjoiQWxpYXNSZWYifV19fX19LHsibmFtZSI6ImRpc3BsYXkiLCJ2YWx1ZSI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InRleHQiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6ImNvbmNlcHQiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fX19XX19LCJvcGVyYW5kIjpbeyJuYW1lIjoiY29uY2VwdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db2RlYWJsZUNvbmNlcHQiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn11dWlkIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9VGVzdFNjcmlwdFJlcXVlc3RNZXRob2RDb2RlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9U29ydERpcmVjdGlvbiIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUJpb2xvZ2ljYWxseURlcml2ZWRQcm9kdWN0U3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9VW5pdHNPZlRpbWUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1BZGRyZXNzVHlwZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUFsbGVyZ3lJbnRvbGVyYW5jZUNhdGVnb3J5IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9SXNzdWVTZXZlcml0eSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUNhcmVUZWFtU3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RW5jb3VudGVyU3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9U3RydWN0dXJlRGVmaW5pdGlvbktpbmQiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1QdWJsaWNhdGlvblN0YXR1cyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUZISVJWZXJzaW9uIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9Q2FyZVBsYW5BY3Rpdml0eUtpbmQiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1TdHJ1Y3R1cmVNYXBTb3VyY2VMaXN0TW9kZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVJlcXVlc3RTdGF0dXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1zdHJhbmRUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UXVlc3Rpb25uYWlyZVJlc3BvbnNlU3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9U2VhcmNoQ29tcGFyYXRvciIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUNoYXJnZUl0ZW1TdGF0dXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1BY3Rpb25QYXJ0aWNpcGFudFR5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1BbGxlcmd5SW50b2xlcmFuY2VUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9Q2FyZVBsYW5BY3Rpdml0eVN0YXR1cyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUludm9pY2VTdGF0dXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1DbGFpbVByb2Nlc3NpbmdDb2RlcyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVJlcXVlc3RSZXNvdXJjZVR5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1QYXJ0aWNpcGF0aW9uU3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RGV2aWNlTmFtZVR5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Eb2N1bWVudE1vZGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Bc3NlcnRpb25PcGVyYXRvclR5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1EYXlzT2ZXZWVrIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9SXNzdWVUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9Y2Fub25pY2FsIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9U3RydWN0dXJlTWFwQ29udGV4dFR5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1GYW1pbHlIaXN0b3J5U3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9c3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RXh0ZW5zaW9uQ29udGV4dFR5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Bc3NlcnRpb25SZXNwb25zZVR5cGVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UmVxdWVzdEludGVudCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfXN0cmluZyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUFjdGlvblJlcXVpcmVkQmVoYXZpb3IiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1HcmFwaENvbXBhcnRtZW50VXNlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9b3JpZW50YXRpb25UeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9QWNjb3VudFN0YXR1cyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUlkZW50aWZpZXJVc2UiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1TdHJ1Y3R1cmVNYXBUYXJnZXRMaXN0TW9kZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUV4cG9zdXJlU3RhdGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1UZXN0UmVwb3J0UGFydGljaXBhbnRUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9QmluZGluZ1N0cmVuZ3RoIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UmVxdWVzdFByaW9yaXR5IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UGFydGljaXBhbnRSZXF1aXJlZCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVhQYXRoVXNhZ2VUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9aWQiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1GaWx0ZXJPcGVyYXRvciIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU5hbWluZ1N5c3RlbVR5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db250cmFjdFJlc291cmNlU3RhdHVzQ29kZXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1SZXNlYXJjaFN1YmplY3RTdGF0dXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1TdHJ1Y3R1cmVNYXBUcmFuc2Zvcm0iLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1SZXNwb25zZVR5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9EZWNpbWFsIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9ZGVjaW1hbCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUFnZ3JlZ2F0aW9uTW9kZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfXNlcXVlbmNlVHlwZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVN5c3RlbVJlc3RmdWxJbnRlcmFjdGlvbiIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUFkdmVyc2VFdmVudEFjdHVhbGl0eSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVN1YnNjcmlwdGlvbkNoYW5uZWxUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9QXNzZXJ0aW9uRGlyZWN0aW9uVHlwZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUNhcmVQbGFuSW50ZW50IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9QWxsZXJneUludG9sZXJhbmNlQ3JpdGljYWxpdHkiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Qcm9wZXJ0eVJlcHJlc2VudGF0aW9uIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9VHJpZ2dlclR5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db21wb3NpdGlvblN0YXR1cyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUFwcG9pbnRtZW50U3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TWVzc2FnZVNpZ25pZmljYW5jZUNhdGVnb3J5IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TGlzdE1vZGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1SZXNlYXJjaEVsZW1lbnRUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9T2JzZXJ2YXRpb25TdGF0dXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1SZXNvdXJjZVR5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9Cb29sZWFuIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9Ym9vbGVhbiIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVN0cnVjdHVyZU1hcEdyb3VwVHlwZU1vZGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1TdXBwbHlSZXF1ZXN0U3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RW5jb3VudGVyTG9jYXRpb25TdGF0dXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db25kaXRpb25hbERlbGV0ZVN0YXR1cyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfXVybCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfXVyaSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVVzZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU1lZGljYXRpb25SZXF1ZXN0U3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9SWRlbnRpdHlBc3N1cmFuY2VMZXZlbCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfURldmljZU1ldHJpY0NvbG9yIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvVGltZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfXRpbWUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db25kaXRpb25hbFJlYWRTdGF0dXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1BbGxlcmd5SW50b2xlcmFuY2VTZXZlcml0eSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUZpbmFuY2lhbFJlc291cmNlU3RhdHVzQ29kZXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1PcGVyYXRpb25LaW5kIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9U3Vic2NyaXB0aW9uU3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9R29hbExpZmVjeWNsZVN0YXR1cyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU9ic2VydmF0aW9uRGF0YVR5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Eb2N1bWVudFJlZmVyZW5jZVN0YXR1cyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfXJlcG9zaXRvcnlUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TG9jYXRpb25TdGF0dXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Ob3RlVHlwZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVRlc3RSZXBvcnRTdGF0dXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db2RlU3lzdGVtQ29udGVudE1vZGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1GSElSRGV2aWNlU3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9Q29udGFjdFBvaW50U3lzdGVtIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9U2xvdFN0YXR1cyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVByb3BlcnR5VHlwZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVR5cGVEZXJpdmF0aW9uUnVsZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUd1aWRhbmNlUmVzcG9uc2VTdGF0dXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1SZWxhdGVkQXJ0aWZhY3RUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9b2lkIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9Q29tcGFydG1lbnRUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TWVkaWNhdGlvblJlcXVlc3RJbnRlbnQiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1JbnZvaWNlUHJpY2VDb21wb25lbnRUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RGV2aWNlTWV0cmljQ2FsaWJyYXRpb25TdGF0ZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUdyb3VwVHlwZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUVuYWJsZVdoZW5CZWhhdmlvciIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVRhc2tJbnRlbnQiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1JbW11bml6YXRpb25FdmFsdWF0aW9uU3RhdHVzQ29kZXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1FeGFtcGxlU2NlbmFyaW9BY3RvclR5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Qcm92ZW5hbmNlRW50aXR5Um9sZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVNwZWNpbWVuU3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UmVzdGZ1bENhcGFiaWxpdHlNb2RlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RGV0ZWN0ZWRJc3N1ZVNldmVyaXR5IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9VmlzaW9uRXllcyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUNvbnNlbnREYXRhTWVhbmluZyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfW1lc3NhZ2VoZWFkZXJSZXNwb25zZVJlcXVlc3QiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1HdWlkZVBhZ2VHZW5lcmF0aW9uIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RG9jdW1lbnRSZWxhdGlvbnNoaXBUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9VmFyaWFibGVUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9VGVzdFJlcG9ydFJlc3VsdCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUNvbmNlcHRNYXBHcm91cFVubWFwcGVkTW9kZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb0RhdGVUaW1lIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9aW5zdGFudCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb0RhdGVUaW1lIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9ZGF0ZVRpbWUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9EYXRlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9ZGF0ZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb0ludGVnZXIiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1wb3NpdGl2ZUludCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUNsaW5pY2FsSW1wcmVzc2lvblN0YXR1cyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUVsaWdpYmlsaXR5UmVzcG9uc2VQdXJwb3NlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TmFycmF0aXZlU3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9SW1hZ2luZ1N0dWR5U3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RW5kcG9pbnRTdGF0dXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1CaW9sb2dpY2FsbHlEZXJpdmVkUHJvZHVjdENhdGVnb3J5IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UmVzb3VyY2VWZXJzaW9uUG9saWN5IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9QWN0aW9uQ2FyZGluYWxpdHlCZWhhdmlvciIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUdyb3VwTWVhc3VyZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU5hbWluZ1N5c3RlbUlkZW50aWZpZXJUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9SW1tdW5pemF0aW9uU3RhdHVzQ29kZXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1NZWRpY2F0aW9uU3RhdHVzQ29kZXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1EaXNjcmltaW5hdG9yVHlwZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVN0cnVjdHVyZU1hcElucHV0TW9kZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUxpbmthZ2VUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UmVmZXJlbmNlSGFuZGxpbmdQb2xpY3kiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1SZXNlYXJjaFN0dWR5U3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9QXVkaXRFdmVudE91dGNvbWUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1TcGVjaW1lbkNvbnRhaW5lZFByZWZlcmVuY2UiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1BY3Rpb25SZWxhdGlvbnNoaXBUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9Q29uc3RyYWludFNldmVyaXR5IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RXZlbnRDYXBhYmlsaXR5TW9kZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUNvZGVTZWFyY2hTdXBwb3J0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9T2JzZXJ2YXRpb25SYW5nZUNhdGVnb3J5IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9VURJRW50cnlUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RGV2aWNlTWV0cmljQ2F0ZWdvcnkiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1UZXN0UmVwb3J0QWN0aW9uUmVzdWx0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9Q2FwYWJpbGl0eVN0YXRlbWVudEtpbmQiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1FdmVudFRpbWluZyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVNlYXJjaFBhcmFtVHlwZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUFjdGlvbkdyb3VwaW5nQmVoYXZpb3IiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1TdHJ1Y3R1cmVNYXBNb2RlbE1vZGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1UYXNrU3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9QmlvbG9naWNhbGx5RGVyaXZlZFByb2R1Y3RTdG9yYWdlU2NhbGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1HcmFwaENvbXBhcnRtZW50UnVsZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVNsaWNpbmdSdWxlcyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUV4cGxhbmF0aW9uT2ZCZW5lZml0U3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9R3VpZGVQYXJhbWV0ZXJDb2RlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9Q2F0YWxvZ0VudHJ5UmVsYXRpb25UeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TGlua1R5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db25jZXB0TWFwRXF1aXZhbGVuY2UiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1BdWRpdEV2ZW50QWN0aW9uIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9U2VhcmNoTW9kaWZpZXJDb2RlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RXZlbnRTdGF0dXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1PcGVyYXRpb25QYXJhbWV0ZXJVc2UiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db25zZW50UHJvdmlzaW9uVHlwZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUFjdGlvbkNvbmRpdGlvbktpbmQiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1xdWFsaXR5VHlwZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUFkbWluaXN0cmF0aXZlR2VuZGVyIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UXVlc3Rpb25uYWlyZUl0ZW1UeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RGV2aWNlTWV0cmljQ2FsaWJyYXRpb25UeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RXZpZGVuY2VWYXJpYWJsZVR5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1jb2RlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9QWN0aW9uU2VsZWN0aW9uQmVoYXZpb3IiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1TdXBwbHlEZWxpdmVyeVN0YXR1cyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfURpYWdub3N0aWNSZXBvcnRTdGF0dXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1GbGFnU3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9U1BEWExpY2Vuc2UiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1MaXN0U3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9YmFzZTY0QmluYXJ5IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RGV2aWNlVXNlU3RhdGVtZW50U3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9QXVkaXRFdmVudEFnZW50TmV0d29ya1R5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1FeHByZXNzaW9uTGFuZ3VhZ2UiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1BZGRyZXNzVXNlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9Q29udGFjdFBvaW50VXNlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RGV2aWNlTWV0cmljT3BlcmF0aW9uYWxTdGF0dXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db250cmlidXRvclR5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1SZWZlcmVuY2VWZXJzaW9uUnVsZXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1NZWFzdXJlUmVwb3J0U3RhdHVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9U2VhcmNoRW50cnlNb2RlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvSW50ZWdlciIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfXVuc2lnbmVkSW50IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TmFtZVVzZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUxvY2F0aW9uTW9kZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb0ludGVnZXIiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1pbnRlZ2VyIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RkhJUlN1YnN0YW5jZVN0YXR1cyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVF1ZXN0aW9ubmFpcmVJdGVtT3BlcmF0b3IiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1IVFRQVmVyYiIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUVwaXNvZGVPZkNhcmVTdGF0dXMiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1SZW1pdHRhbmNlT3V0Y29tZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfW1hcmtkb3duIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9RWxpZ2liaWxpdHlSZXF1ZXN0UHVycG9zZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVF1YW50aXR5Q29tcGFyYXRvciIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU1lYXN1cmVSZXBvcnRUeXBlIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9QWN0aW9uUHJlY2hlY2tCZWhhdmlvciIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVNhbXBsZWREYXRhRGF0YVR5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db21wb3NpdGlvbkF0dGVzdGF0aW9uTW9kZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVR5cGVSZXN0ZnVsSW50ZXJhY3Rpb24iLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0seyJuYW1lIjoiVG9TdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InZhbHVlIiwidHlwZSI6Ik9wZXJhbmRSZWYifX0sIm9wZXJhbmQiOlt7Im5hbWUiOiJ2YWx1ZSIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Db2RlU3lzdGVtSGllcmFyY2h5TWVhbmluZyIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfXZDb25maWRlbnRpYWxpdHlDbGFzc2lmaWNhdGlvbiIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUNvbnRyYWN0UmVzb3VyY2VQdWJsaWNhdGlvblN0YXR1c0NvZGVzIiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fV19LHsibmFtZSI6IlRvU3RyaW5nIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInR5cGUiOiJGdW5jdGlvbkRlZiIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiJ2YWx1ZSIsInR5cGUiOiJPcGVyYW5kUmVmIn19LCJvcGVyYW5kIjpbeyJuYW1lIjoidmFsdWUiLCJvcGVyYW5kVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9VmlzaW9uQmFzZSIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfSx7Im5hbWUiOiJUb1N0cmluZyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJ0eXBlIjoiRnVuY3Rpb25EZWYiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoidmFsdWUiLCJ0eXBlIjoiT3BlcmFuZFJlZiJ9fSwib3BlcmFuZCI6W3sibmFtZSI6InZhbHVlIiwib3BlcmFuZFR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUJ1bmRsZVR5cGUiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX1dfX19" + } +] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-AssessmentAndPlan.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-AssessmentAndPlan.json new file mode 100644 index 00000000..5597281d --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-AssessmentAndPlan.json @@ -0,0 +1,64 @@ +{ + "resourceType": "Questionnaire", + "id": "assessment-and-plan", + "name": "Assessment and Plan Module", + "meta": { + "profile": [ + "http://hl7.org/fhir/StructureDefinition/cqf-questionnaire", + "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-r4" + ] + }, + "status": "draft", + "item":[ + { + "linkId": "AAP", + "text": "Assessment and Plan", + "type": "group", + "item": [ + { + "linkId": "ASM.1", + "text": "Assessment/Status", + "type": "text" + }, + { + "linkId": "PLAN.1", + "text": "Treatment Plan", + "type": "text", + "required": true + }, + { + "linkId": "ORD.1", + "text": "Orders", + "type": "group", + "item": [ + { + "linkId": "ORD.1.1", + "text": "Medications", + "type": "text" + }, + { + "linkId": "ORD.1.2", + "text": "Supplies", + "type": "text" + }, + { + "linkId": "ORD.1.3", + "text": " Investigations / diagnostic testing", + "type": "text" + }, + { + "linkId": "ORD.1.4", + "text": "Consults", + "type": "text" + }, + { + "linkId": "ORD.1.5", + "text": "Other", + "type": "text" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-Encounter.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-Encounter.json new file mode 100644 index 00000000..19031025 --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-Encounter.json @@ -0,0 +1,85 @@ +{ + "resourceType": "Questionnaire", + "id": "encounter", + "name": "Encounter Module", + "meta": { + "profile": [ + "http://hl7.org/fhir/StructureDefinition/cqf-questionnaire", + "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-r4" + ] + }, + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicClinicalInfo-prepopulation" + } + ], + "status": "draft", + "item": [ + { + "linkId": "ENC", + "text": "Encounter", + "type": "group", + "item": [ + { + "linkId": "ENC.1", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicClinicalInfoPrepopulation\".RequestEncounterDate" + } + } + ], + "text": "Date of encounter (MM/DD/YYYY)", + "type": "date", + "required": true + }, + { + "linkId": "ENC.2", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicClinicalInfoPrepopulation\".AnswerYes" + } + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "code": "radio-button", + "system": "http://hl7.org/fhir/questionnaire-item-control" + } + ] + } + } + ], + "text": "Is this encounter for the evaluation of the patient’s need for ordered device, service, or medication?", + "required": true, + "type": "choice", + "answerValueSet": "http://terminology.hl7.org/ValueSet/v2-0136" + }, + { + "linkId": "ENC.3", + "text": "If No, purpose of the encounter", + "type": "text", + "required": true, + "enableWhen": [ + { + "question": "ENC.2", + "operator": "=", + "answerCoding": { + "code": "N", + "system": "http://terminology.hl7.org/CodeSystem/v2-0136" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PatientInfo.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PatientInfo.json new file mode 100644 index 00000000..a7a6eb24 --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PatientInfo.json @@ -0,0 +1,130 @@ +{ + "resourceType": "Questionnaire", + "id": "patient-info", + "name": "Patient Module", + "meta": { + "profile": [ + "http://hl7.org/fhir/StructureDefinition/cqf-questionnaire", + "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-r4" + ] + }, + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicPatientInfo-prepopulation" + } + ], + "status": "draft", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "linkId": "PBD", + "type": "group", + "text": "Patient Information", + "item": [ + { + "linkId": "PBD.1", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".LastName" + } + } + ], + "text": "Last Name:", + "type": "string", + "required": true + }, + { + "linkId": "PBD.2", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".FirstName" + } + } + ], + "text": "First Name:", + "type": "string", + "required": true + }, + { + "linkId": "PBD.3", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".MiddleInitial" + } + } + ], + "text": "Middle Initial:", + "type": "string", + "required": true + }, + { + "linkId": "PBD.4", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".DateOfBirth" + } + } + ], + "text": "Date of Birth:", + "type": "date", + "required": true + }, + { + "linkId": "PBD.5", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".Gender" + } + } + ], + "text": "Gender", + "type": "choice", + "answerValueSet": "http://hl7.org/fhir/ValueSet/administrative-gender" + }, + { + "linkId": "PBD.6", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".MedicareId" + } + } + ], + "text": "Medicare ID:", + "type": "string", + "required": true + } + ] + } + ] +} diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PatientInfoBase.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PatientInfoBase.json new file mode 100644 index 00000000..1fb44220 --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PatientInfoBase.json @@ -0,0 +1,115 @@ +{ + "resourceType": "Questionnaire", + "id": "patient-info-base", + "name": "Base Patient Module", + "meta": { + "profile": [ + "http://hl7.org/fhir/StructureDefinition/cqf-questionnaire", + "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-r4" + ] + }, + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicPatientInfo-prepopulation" + } + ], + "status": "draft", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "linkId": "PBD", + "type": "group", + "text": "Patient Information", + "item": [ + { + "linkId": "PBD.1", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".LastName" + } + } + ], + "text": "Last Name:", + "type": "string", + "required": true + }, + { + "linkId": "PBD.2", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".FirstName" + } + } + ], + "text": "First Name:", + "type": "string", + "required": true + }, + { + "linkId": "PBD.3", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".MiddleInitial" + } + } + ], + "text": "Middle Initial:", + "type": "string", + "required": true + }, + { + "linkId": "PBD.4", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".DateOfBirth" + } + } + ], + "text": "Date of Birth:", + "type": "date", + "required": true + }, + { + "linkId": "PBD.5", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".Gender" + } + } + ], + "text": "Gender", + "type": "choice", + "answerValueSet": "http://hl7.org/fhir/ValueSet/administrative-gender" + } + ] + } + ] +} diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PatientSignature.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PatientSignature.json new file mode 100644 index 00000000..bf456917 --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PatientSignature.json @@ -0,0 +1,76 @@ +{ + "resourceType": "Questionnaire", + "id": "patient-signature", + "name": "Patient Signature", + "meta": { + "profile": [ + "http://hl7.org/fhir/StructureDefinition/cqf-questionnaire", + "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-r4" + ] + }, + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicPatientInfo-prepopulation" + } + ], + "status": "draft", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "linkId": "SIGPAT", + "text": "Patient Signature", + "type": "group", + "item": [ + { + "linkId": "SIGPAT.1", + "text": "Signature", + "type": "string", + "required": true + }, + { + "linkId": "SIGPAT.2", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".FullName" + } + } + ], + "text": "Name (Printed)", + "type": "string", + "required": true + }, + { + "linkId": "SIGPAT.3", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".Today" + } + } + ], + "text": "Date", + "type": "date", + "required": true + } + ] + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PhysicalExam.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PhysicalExam.json new file mode 100644 index 00000000..3a87200c --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PhysicalExam.json @@ -0,0 +1,252 @@ +{ + "resourceType": "Questionnaire", + "id": "physical-exam", + "name": "Physican Exam Module", + "meta": { + "profile": [ + "http://hl7.org/fhir/StructureDefinition/cqf-questionnaire", + "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-r4" + ] + }, + "status": "draft", + "item":[ + { + "linkId": "OBJ.PE", + "code": [ + { + "code": "71388-3", + "display": "Physical Exam", + "system": "http://loinc.org/modified" + } + ], + "type": "group", + "text": "Physical Exam", + "item": [ + { + "linkId": "PE.1", + "code": [ + { + "code": "71389-1", + "display": "General Appearance", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "General Appearance" + }, + { + "linkId": "PE.2", + "code": [ + { + "code": "71390-9", + "display": "Head and Face", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Head and Face" + }, + { + "linkId": "PE.3", + "code": [ + { + "code": "71391-7", + "display": "Eyes", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Eyes" + }, + { + "linkId": "PE.4", + "code": [ + { + "code": "71392-5", + "display": "Ears, nose, mouth and throat", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Ears, nose, mouth and throat" + }, + { + "linkId": "PE.5", + "code": [ + { + "code": "71393-3", + "display": "Neck", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Neck" + }, + { + "linkId": "PE.6", + "code": [ + { + "code": "71394-1", + "display": "Respiratory System", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Respiratory System" + }, + { + "linkId": "PE.7", + "code": [ + { + "code": "71395-8", + "display": "Cardiovascular System", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Cardiovascular System" + }, + { + "linkId": "PE.8", + "code": [ + { + "code": "71396-6", + "display": "Breast", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Breast" + }, + { + "linkId": "PE.9", + "code": [ + { + "code": "71397-4", + "display": "Gastrointestinal System/Abdomen", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Gastrointestinal System/Abdomen" + }, + { + "linkId": "PE.10", + "code": [ + { + "code": "71398-2", + "display": "Genitourinary System - male", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Genitourinary System - male" + }, + { + "linkId": "PE.11", + "code": [ + { + "code": "71399-0", + "display": "Genitourinary System - female", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Genitourinary System - female" + }, + { + "linkId": "PE.12", + "code": [ + { + "code": "71400-6", + "display": "Lymphatic System", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Lymphatic System" + }, + { + "linkId": "PE.13", + "code": [ + { + "code": "71401-4", + "display": "Extremeties", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Extremeties" + }, + { + "linkId": "PE.14", + "code": [ + { + "code": "71402-2", + "display": "Musculoskeletal System", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Musculoskeletal System" + }, + { + "linkId": "PE.15", + "code": [ + { + "code": "71403-0", + "display": "Skin", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Skin" + }, + { + "linkId": "PE.16", + "code": [ + { + "code": "71404-8", + "display": "Neurologic System", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Neurologic System" + }, + { + "linkId": "PE.17", + "code": [ + { + "code": "71405-5", + "display": "Psychiatric System", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Psychiatric System" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "text": "Help-Button", + "coding": [ + { + "code": "help", + "display": "Help-Button", + "system": "http://hl7.org/fhir/questionnaire-item-control" + } + ] + } + } + ], + "linkId": "PE.18", + "type": "display", + "text": "Levels of E/M services are based on four types of examination: Problem Focused - a limited examination of the affected body area or organ system. Expanded Problem Focused - a limited examination of the affected body area or organ system and any other symptomatic or related body area(s) or organ system(s). Detailed - An extended examination of the affected body area or organ system and any other symptomatic or related body area(s) or organ system(s). Comprehensive - general multi-system examination, or complete examination of a single organ system and other symptomatic or related body area(s) or organ system(s).General multi-system or single organ examination may be performed by any physician regardless of specialty. The type and content of the examination are selected by the physician and based on clinical judgment, the patient's history and the nature of the presenting problem." + } + ] + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PractitionerInfo.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PractitionerInfo.json new file mode 100644 index 00000000..e930b5d5 --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PractitionerInfo.json @@ -0,0 +1,121 @@ +{ + "resourceType": "Questionnaire", + "id": "practitioner-info", + "name": "Practitioner Module", + "meta": { + "profile": [ + "http://hl7.org/fhir/StructureDefinition/cqf-questionnaire", + "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-r4" + ] + }, + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicClinicalInfo-prepopulation" + } + ], + "status": "draft", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "linkId": "PND", + "text": "Provider who performed the in-person evaluation", + "type": "group", + "item": [ + { + "linkId": "PND.1", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicClinicalInfoPrepopulation\".EncounterProviderLastName" + } + }, + { + "url" : "http://hl7.org/fhir/StructureDefinition/minLength", + "valueInteger": 2 + } + ], + "text": "Last Name", + "type": "string", + "maxLength": 26 + }, + { + "linkId": "PND.2", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicClinicalInfoPrepopulation\".EncounterProviderFirstName" + } + }, + { + "url" : "http://hl7.org/fhir/StructureDefinition/minLength", + "valueInteger": 2 + } + ], + "text": "First Name", + "type": "string", + "maxLength": 26 + }, + { + "linkId": "PND.3", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicClinicalInfoPrepopulation\".EncounterProviderMiddleInitial" + } + } + ], + "text": "Middle Initial", + "type": "string" + }, + { + "linkId": "PND.4", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicClinicalInfoPrepopulation\".EncounterProviderNPI" + } + } + ], + "text": "NPI", + "type": "string" + }, + { + "linkId": "PND.5", + "text": "Date of F2F encounter", + "type": "date", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicClinicalInfoPrepopulation\".RequestEncounterDate" + } + } + ] + } + ] + } + ] +} diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PractitionerInfoBase.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PractitionerInfoBase.json new file mode 100644 index 00000000..f0ee8a7b --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-PractitionerInfoBase.json @@ -0,0 +1,106 @@ +{ + "resourceType": "Questionnaire", + "id": "practitioner-info-base", + "name": "Base Practitioner Module", + "meta": { + "profile": [ + "http://hl7.org/fhir/StructureDefinition/cqf-questionnaire", + "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-r4" + ] + }, + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicClinicalInfo-prepopulation" + } + ], + "status": "draft", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "linkId": "PND", + "text": "Provider who performed the in-person evaluation", + "type": "group", + "item": [ + { + "linkId": "PND.1", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".LastName" + } + }, + { + "url" : "http://hl7.org/fhir/StructureDefinition/minLength", + "valueInteger": 2 + } + ], + "text": "Last Name", + "type": "string", + "maxLength": 26 + }, + { + "linkId": "PND.2", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".FirstName" + } + }, + { + "url" : "http://hl7.org/fhir/StructureDefinition/minLength", + "valueInteger": 2 + } + ], + "text": "First Name", + "type": "string", + "maxLength": 26 + }, + { + "linkId": "PND.3", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".MiddleInitial" + } + } + ], + "text": "Middle Initial", + "type": "string" + }, + { + "linkId": "PND.4", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".NPI" + } + } + ], + "text": "NPI", + "type": "string" + } + ] + } + ] +} diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-ProviderSignature.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-ProviderSignature.json new file mode 100644 index 00000000..4a8a92f9 --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-ProviderSignature.json @@ -0,0 +1,91 @@ +{ + "resourceType": "Questionnaire", + "id": "provider-signature", + "name": "Provider Signature", + "meta": { + "profile": [ + "http://hl7.org/fhir/StructureDefinition/cqf-questionnaire", + "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-r4" + ] + }, + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicPractitionerInfo-prepopulation" + } + ], + "status": "draft", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "linkId": "SIGPNP", + "text": "Provider Signature", + "type": "group", + "item": [ + { + "linkId": "SIGPNP.1", + "text": "Signature", + "type": "string", + "required": true + }, + { + "linkId": "SIGPNP.2", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".FullName" + } + } + ], + "text": "Name (Printed)", + "type": "string", + "required": true + }, + { + "linkId": "SIGPNP.3", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Today" + } + } + ], + "text": "Date", + "type": "date", + "required": true + }, + { + "linkId": "SIGPNP.4", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".NPI" + } + } + ], + "text": "NPI", + "type": "string", + "required": true + } + ] + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-ReviewOfSystem.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-ReviewOfSystem.json new file mode 100644 index 00000000..338e199b --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-ReviewOfSystem.json @@ -0,0 +1,3527 @@ +{ + "resourceType": "Questionnaire", + "id": "review-of-system", + "meta": { + "profile": [ + "http://hl7.org/fhir/StructureDefinition/cqf-questionnaire", + "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-r4" + ] + }, + "name": "Review Of System Module", + "status": "draft", + "item": [ + { + "linkId": "ROS", + "code": [ + { + "code": "71406-3", + "display": "Review of Systems", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Review of Systems", + "item": [ + { + "linkId": "ROS.1", + "code": [ + { + "code": "71407-1", + "display": "Constitutional / General", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Constitutional / General", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.1.1", + "code": [ + { + "code": "8943002", + "display": "Weight gain", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Weight gain", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.1.2", + "code": [ + { + "code": "89362005", + "display": "Weight loss", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Weight loss", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.1.3", + "code": [ + { + "code": "44186003", + "display": "Sleeping problems", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Sleeping problems", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.1.4", + "code": [ + { + "code": "84229001", + "display": "Fatigue", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Fatigue", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.1.5", + "code": [ + { + "code": "386725007", + "display": "Fever", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Fever", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.1.6", + "code": [ + { + "code": "43724002", + "display": "Chills", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Chills", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.1.7", + "code": [ + { + "code": "42984000", + "display": "Night sweats", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Night sweats", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.1.8", + "code": [ + { + "code": "52613005", + "display": "Excessive sweating", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Excessive sweating", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "linkId": "ROS.1.9", + "type": "string", + "text": "Other" + } + ] + }, + { + "linkId": "ROS.2", + "code": [ + { + "code": "71408-9", + "display": "Eye", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Eye", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.2.1", + "code": [ + { + "code": "24982008", + "display": "Diplopia", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Diplopia", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.2.2", + "code": [ + { + "code": "225582009", + "display": "Glasses", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Glasses", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.2.3", + "code": [ + { + "code": "285049007", + "display": "Contact lenses", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Contact lenses", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "code": [ + { + "code": "75705005", + "display": "Redness", + "system": "http://snomed.info/sct" + } + ], + "linkId": "ROS.2.4", + "type": "choice", + "text": "Redness", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.2.5", + "code": [ + { + "code": "18628002", + "display": "Discharge", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Discharge", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.2.6", + "code": [ + { + "code": "111516008", + "display": "Blurred vision", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Blurred vision", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.2.7", + "code": [ + { + "code": "23986001", + "display": "Glaucoma", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Glaucoma", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.2.8", + "code": [ + { + "code": "193570009", + "display": "Cataracts", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Cataracts", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "linkId": "ROS.2.9", + "type": "string", + "text": "Other" + } + ] + }, + { + "linkId": "ROS.3", + "code": [ + { + "code": "71409-7", + "display": "Ear-nose-mouth-throat", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Ear-nose-mouth-throat", + "item": [ + { + "linkId": "ROS.3.1", + "type": "group", + "text": "Nose", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.3.1.1", + "code": [ + { + "code": "249366005", + "display": "Epistaxis", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Epistaxis", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.3.1.2", + "code": [ + { + "code": "36971009", + "display": "Frequent sinus infections", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Frequent sinus infections", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.3.1.3", + "code": [ + { + "code": "64531003", + "display": "Discharge", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Discharge", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.3.1.4", + "code": [ + { + "code": "736499003", + "display": "Polyps", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Polyps", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "type": "string", + "linkId": "ROS.3.1.5", + "text": "Other" + } + ] + }, + { + "linkId": "ROS.3.2", + "type": "group", + "text": "Ear", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.3.2.1", + "code": [ + { + "code": "60862001", + "display": "Tinnitus", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Tinnitus", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "type": "choice", + "code": [ + { + "code": "300132001", + "display": "Discharge", + "system": "http://snomed.info/sct" + } + ], + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.3.2.2", + "text": "Discharge", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "type": "choice", + "code": [ + { + "code": "15188001", + "display": "Hearing loss", + "system": "http://snomed.info/sct" + } + ], + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.3.2.3", + "text": "Hearing loss", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "type": "string", + "code": [], + "linkId": "ROS.3.2.4", + "text": "Other" + } + ] + }, + { + "type": "group", + "code": [], + "linkId": "ROS.3.3", + "text": "Mouth", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.3.3.1", + "code": [ + { + "code": "288939007", + "display": "Odynaphagia", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Odynaphagia", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.3.3.2", + "code": [ + { + "code": "46557008", + "display": "Tooth disorder", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Tooth disorder", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.3.3.3", + "code": [ + { + "code": "278615005", + "display": "Uses dentures", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Uses dentures", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "linkId": "ROS.3.3.4", + "type": "string", + "text": "Other" + } + ] + }, + { + "linkId": "ROS.3.4", + "type": "group", + "text": "Throat", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.3.4.1", + "code": [ + { + "code": "50219008", + "display": "Hoarseness", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Hoarseness", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "linkId": "ROS.3.4.2", + "type": "string", + "text": "Other" + } + ] + } + ] + }, + { + "linkId": "ROS.4", + "code": [ + { + "code": "71410-5", + "display": "Cardiovascular", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Cardiovascular System", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.4.1", + "code": [ + { + "code": "29857009", + "display": "Chest pain", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Chest pain", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.4.2", + "code": [ + { + "code": "80313002", + "display": "Palpitations", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Palpitations", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.4.3", + "code": [ + { + "code": "62744007", + "display": "Orthopnea", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Orthopnea", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.4.4", + "code": [ + { + "code": "88610006", + "display": "Murmur", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Murmur", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "linkId": "ROS.4.5", + "type": "string", + "text": "Other" + } + ] + }, + { + "linkId": "ROS.5", + "code": [ + { + "code": "71411-3", + "display": "Respiratory", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Respiratory System", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.5.1", + "code": [ + { + "code": "49727002", + "display": "Cough", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Cough", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.5.2", + "code": [ + { + "code": "66857006", + "display": "Hemoptysis", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Hemoptysis", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.5.3", + "code": [ + { + "code": "267036007", + "display": "Shortness of breath", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Shortness of breath", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.5.4", + "code": [ + { + "code": "248599002", + "display": "Excess sputum production", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Excess sputum production", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.5.5", + "code": [ + { + "code": "56018004", + "display": "Wheezing", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Wheezing", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "linkId": "ROS.5.6", + "type": "string", + "text": "Other" + } + ] + }, + { + "linkId": "ROS.6", + "code": [ + { + "code": "71412-1", + "display": "Gastrointestinal System", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Gastrointestinal", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.6.1", + "code": [ + { + "code": "399122003", + "display": "Swallowing problem", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Swallowing problem", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.6.2", + "code": [ + { + "code": "21522001", + "display": "Abdominal pain", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Abdominal pain", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.6.3", + "code": [ + { + "code": "16331000", + "display": "Heartburn", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Heartburn", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.6.4", + "code": [ + { + "code": "422587007", + "display": "Nausea", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Nausea", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.6.5", + "code": [ + { + "code": "422400008", + "display": "Vomiting", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Vomiting", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.6.6", + "code": [ + { + "code": "8765009", + "display": "Hematemesis", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Hematemesis", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.6.7", + "code": [ + { + "code": "14760008", + "display": "Constipation", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Constipation", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.6.8", + "code": [ + { + "code": "62315008", + "display": "Diarrhea", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Diarrhea", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.6.9", + "code": [ + { + "code": "2901004", + "display": "Melena", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Melena", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.6.10", + "code": [ + { + "code": "405729008", + "display": "Blood in stool", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Blood in stool", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.6.11", + "code": [ + { + "code": "40845000", + "display": "Ulcer", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Ulcer", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.6.12", + "code": [ + { + "code": "18165001", + "display": "Jaundice", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Jaundice", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "linkId": "ROS.6.13", + "type": "string", + "text": "Other" + } + ] + }, + { + "linkId": "ROS.7", + "code": [ + { + "code": "71413-9", + "display": "Genitourinary", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Genitourinary System", + "item": [ + { + "linkId": "ROS.7.1", + "type": "group", + "text": "Urination", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.7.1.1", + "code": [ + { + "code": "162116003", + "display": "Increased frequency", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Increased frequency", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.7.1.2", + "code": [ + { + "code": "75088002", + "display": "Urgency", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Urgency", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.7.1.3", + "code": [ + { + "code": "5972002", + "display": "Hesitancy", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Hesitancy", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.7.1.4", + "code": [ + { + "code": "48340000", + "display": "Incontinence", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Incontinence", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.7.1.5", + "code": [ + { + "code": "49650001", + "display": "Dysuria", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Dysuria", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.7.1.6", + "code": [ + { + "code": "28442001", + "display": "Polyuria", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Polyuria", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.7.1.7", + "code": [ + { + "code": "139394000", + "display": "Nocturia", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Nocturia", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.7.1.8", + "code": [ + { + "code": "34436003", + "display": "Hematuria", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Hematuria", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + } + ] + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.7.2", + "code": [ + { + "code": "247355005", + "display": "Flank pain", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Flank pain", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "linkId": "ROS.7.3", + "type": "string", + "text": "Other" + } + ] + }, + { + "linkId": "ROS.8", + "code": [ + { + "code": "71414-7", + "display": "Musculoskeletal", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Musculoskeletal System", + "item": [ + { + "linkId": "ROS.8.1", + "type": "group", + "text": "Joint", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.8.1.1", + "code": [ + { + "code": "279069000", + "display": "Pain", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Pain", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.8.1.2", + "code": [ + { + "code": "300887003", + "display": "Swelling", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Swelling", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.8.1.3", + "code": [ + { + "code": "84445001", + "display": "Stiffness", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Stiffness", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.8.1.4", + "code": [ + { + "code": "72704001", + "display": "Fracture", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Fracture", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.8.1.5", + "code": [ + { + "code": "70733008", + "display": "Range of motion limitation", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Range of motion limitation", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.8.1.6", + "code": [ + { + "code": "417893002", + "display": "Deformity", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Deformity", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + } + ] + }, + { + "linkId": "ROS.8.2", + "type": "group", + "text": "Muscle", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.8.2.1", + "code": [ + { + "code": "68962001", + "display": "Pain", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Pain", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.8.2.2", + "code": [ + { + "code": "82470000", + "display": "Fasciculation", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Fasciculation", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.8.2.3", + "code": [ + { + "code": "88092000", + "display": "Atrophy", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Atrophy", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.8.2.4", + "code": [ + { + "code": "26544005", + "display": "Weakness", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Weakness", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.8.2.5", + "code": [ + { + "code": "55300003", + "display": "Cramps", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Cramps", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + } + ] + }, + { + "linkId": "ROS.8.3", + "type": "string", + "text": "Other" + } + ] + }, + { + "linkId": "ROS.9", + "code": [ + { + "code": "71415-4", + "display": "Skin", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Skin", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.9.1", + "code": [ + { + "code": "399912005", + "display": "Pressure ulcer", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Pressure ulcer", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.9.2", + "code": [ + { + "code": "271807003", + "display": "Rash", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Rash", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.9.7", + "code": [ + { + "code": "43116000", + "display": "Eczema", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Eczema", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.9.8", + "code": [ + { + "code": "418363000", + "display": "Pruritus", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Pruritus", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.9.3", + "code": [ + { + "code": "247493001", + "display": "Splitting nail", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Splitting nail", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.9.4", + "code": [ + { + "code": "89704006", + "display": "Pitting nail", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Pitting nail", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.9.5", + "code": [ + { + "code": "278040002", + "display": "Hair loss", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Hair loss", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.9.6", + "code": [ + { + "code": "271607001", + "display": "Excessive hair growth", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Excessive hair growth", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "linkId": "ROS.9.9", + "type": "string", + "text": "Other" + } + ] + }, + { + "linkId": "ROS.10", + "code": [ + { + "code": "71416-2", + "display": "Neurologic System", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Neurological", + "item": [ + { + "type": "choice", + "code": [ + { + "code": "91175000", + "display": "Seizure", + "system": "http://snomed.info/sct" + } + ], + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.10.1", + "text": "Seizure", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.10.2", + "code": [ + { + "code": "44077006", + "display": "Numbness", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Numbness", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.10.3", + "code": [ + { + "code": "62507009", + "display": "Tingling", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Tingling", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.10.4", + "code": [ + { + "code": "55406008", + "display": "Increased pain to touch", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Increased pain to touch", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.10.5", + "code": [ + { + "code": "279079003", + "display": "Dysesthesia", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Dysesthesia", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.10.6", + "code": [ + { + "code": "25064002", + "display": "Headache", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Headache", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.10.7", + "code": [ + { + "code": "41786007", + "display": "Weakness", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Weakness", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.10.8", + "code": [ + { + "code": "404640003", + "display": "Dizziness", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Dizziness", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.10.9", + "code": [ + { + "code": "271594007", + "display": "Fainting", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Fainting", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.10.10", + "code": [ + { + "code": "44695005", + "display": "Paralysis", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Paralysis", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.10.11", + "code": [ + { + "code": "26079004", + "display": "Tremors", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Tremors", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.10.12", + "code": [ + { + "code": "267078001", + "display": "Involuntary movements", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Involuntary movements", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.10.13", + "code": [ + { + "code": "22631008", + "display": "Unstable gait", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Unstable gait", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.10.14", + "code": [ + { + "code": "161898004", + "display": "Fall", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Fall", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.10.15", + "code": [ + { + "code": "386807006", + "display": "Impaired memory", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Impaired memory", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "drop-down", + "display": "Drop down" + } + ], + "text": "Drop down" + } + } + ], + "linkId": "ROS.10.17", + "code": [ + { + "code": "26329005", + "display": "Poor concentration", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Poor concentration", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.10.16", + "code": [ + { + "code": "229683000", + "display": "Speech disorders", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Speech disorders", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "linkId": "ROS.10.18", + "type": "string", + "text": "Other" + } + ] + }, + { + "linkId": "ROS.11", + "code": [ + { + "code": "71417-0", + "display": "Psychiatric System", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Psychiatric", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.11.1", + "code": [ + { + "code": "7011001", + "display": "Hallucinations", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Hallucinations", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.11.2", + "code": [ + { + "code": "2073000", + "display": "Delusions", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Delusions", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.11.3", + "code": [ + { + "code": "366979004", + "display": "Depressed mood", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Depressed mood", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.11.4", + "code": [ + { + "code": "48694002", + "display": "Anxiety", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Anxiety", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "linkId": "ROS.11.5", + "type": "string", + "text": "Other" + } + ] + }, + { + "linkId": "ROS.12", + "code": [ + { + "code": "71418-8", + "display": "Endocrine", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Endocrine", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.12.1", + "code": [ + { + "code": "69215007", + "display": "Heat intolerance", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Heat intolerance", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.12.2", + "code": [ + { + "code": "80585000", + "display": "Cold intolerance", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Cold intolerance", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.12.3", + "code": [ + { + "code": "3716002", + "display": "Goiter", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Goiter", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.12.4", + "code": [ + { + "code": "80182007", + "display": "Menstrual irregularity", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Menstrual irregularity", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.12.5", + "code": [ + { + "code": "170951000", + "display": "Menopausal symptoms", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Menopausal symptoms", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "type": "group", + "code": [], + "linkId": "ROS.12.6", + "text": "Breast", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.12.6.1", + "code": [ + { + "code": "89164003", + "display": "Mass/tumor", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Mass/tumor", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.12.6.2", + "code": [ + { + "code": "55222007", + "display": "Tenderness", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Tenderness", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.12.6.3", + "code": [ + { + "code": "54302000", + "display": "Nipple discharge", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Nipple discharge", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.12.6.4", + "code": [ + { + "code": "4754008", + "display": "Gynecomastia", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Gynecomastia", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + } + ] + }, + { + "linkId": "ROS.12.7", + "type": "string", + "text": "Other" + } + ] + }, + { + "linkId": "ROS.13", + "code": [ + { + "code": "71419-6", + "display": "Hematologic - Lymphatic System", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Hematologic - lymphatic", + "item": [ + { + "linkId": "ROS.13.1", + "type": "group", + "text": "Swollen glands", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.13.1.1", + "code": [ + { + "code": "425061006", + "display": "Neck", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Neck", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.13.1.2", + "code": [ + { + "code": "127189005", + "display": "Axilla", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Axilla", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button", + "display": "Radio Button" + } + ], + "text": "Radio Button" + } + } + ], + "linkId": "ROS.13.1.3", + "code": [ + { + "code": "127199000", + "display": "Groin", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Groin", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + } + ] + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.13.2", + "code": [ + { + "code": "79654002", + "display": "Edema", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Edema", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.13.3", + "code": [ + { + "code": "63491006", + "display": "Claudication", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Claudication", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.13.4", + "code": [ + { + "code": "128060009", + "display": "Varicose veins", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Varicose veins", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.13.5", + "code": [ + { + "code": "64156001", + "display": "Thrombophlebitis", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Thrombophlebitis", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.13.6", + "code": [ + { + "code": "271737000", + "display": "Anemia", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Anemia", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.13.7", + "code": [ + { + "code": "125667009", + "display": "Bruising", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Bruising", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.13.8", + "code": [ + { + "code": "64779008", + "display": "Bleeding disorder", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Bleeding disorder", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.13.9", + "code": [ + { + "code": "95344007", + "display": "Lower extremity ulcer", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Lower extremity ulcer", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "linkId": "ROS.13.10", + "type": "string", + "text": "Other" + } + ] + }, + { + "linkId": "ROS.14", + "code": [ + { + "code": "71420-4", + "display": "Allergic/immunologic", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Allergic/immunologic", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.14.1", + "code": [ + { + "code": "247472004", + "display": "Hives", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Hives", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "radio-button" + } + ] + } + } + ], + "linkId": "ROS.14.2", + "code": [ + { + "code": "39579001", + "display": "Anaphylaxis", + "system": "http://snomed.info/sct" + } + ], + "type": "choice", + "text": "Anaphylaxis", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked" + }, + { + "linkId": "ROS.14.3", + "type": "string", + "text": "Other" + } + ] + }, + { + "linkId": "ROS.15", + "type": "display", + "text": "A review of systems is an inventory of body systems obtained through a series of questions seeking to identify signs and/or symptoms which the patient may be experiencing or has experienced", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "text": "Help-Button", + "coding": [ + { + "code": "help", + "display": "Help-Button", + "system": "http://hl7.org/fhir/questionnaire-item-control" + } + ] + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-Subjective.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-Subjective.json new file mode 100644 index 00000000..cc1328ab --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-Subjective.json @@ -0,0 +1,113 @@ +{ + "resourceType": "Questionnaire", + "id": "subjective", + "name": "Subjective Module", + "meta": { + "profile": [ + "http://hl7.org/fhir/StructureDefinition/cqf-questionnaire", + "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-r4" + ] + }, + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicClinicalInfo-prepopulation" + } + ], + "status": "draft", + "item":[ + { + "linkId": "SUB", + "text": "Subjective", + "type": "group", + "item": [ + { + "linkId": "SUB.1", + "text": "Chief complaint / history of present illness and associated signs / symptoms", + "type": "text" + }, + { + "linkId": "SUB.2", + "text": "Related past medical / surgical history", + "type": "text" + }, + { + "linkId": "MED.1", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + }, + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicClinicalInfoPrepopulation\".MedicationTupleList" + } + } + ], + "text": "Medication", + "type": "group", + "repeats": true, + "item": [ + { + "linkId": "MED.1.1", + "text": "RxNorm", + "type": "string" + }, + { + "linkId": "MED.1.2", + "text": "Description", + "type": "string" + }, + { + "linkId": "MED.1.3", + "text": "Dose", + "type": "string" + }, + { + "linkId": "MED.1.4", + "text": "Frequency", + "type": "open-choice", + "answerValueSet":"http://hl7.org/fhir/ValueSet/timing-abbreviation" + }, + { + "linkId": "MED.1.5", + "text": "Route", + "type": "string" + }, + { + "linkId": "MED.1.6", + "text": "Status", + "type": "choice", + "answerValueSet": "http://hl7.org/fhir/ValueSet/medicationrequest-status" + } + ] + }, + { + "linkId": "ALL.1", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicClinicalInfoPrepopulation\".Allergies" + } + } + ], + "text": "Allergy", + "type": "open-choice", + "repeats": true, + "anwerOption": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-VitalSigns.json b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-VitalSigns.json new file mode 100644 index 00000000..efa8402a --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/Questionnaire-R4-VitalSigns.json @@ -0,0 +1,890 @@ +{ + "resourceType": "Questionnaire", + "id": "vital-signs", + "meta": { + "profile": [ + "http://hl7.org/fhir/StructureDefinition/cqf-questionnaire", + "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-r4" + ] + }, + "name": "Vital Signs", + "status": "draft", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/variable", + "valueExpression": { + "name": "weight", + "language": "text/fhirpath", + "expression": "%resource.repeat(item).where(linkId='VS.14').answer.valueDecimal" + } + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/variable", + "valueExpression": { + "name": "height", + "language": "text/fhirpath", + "expression": "%resource.repeat(item).where(linkId='VS.11').answer.valueDecimal*0.0254" + } + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/variable", + "valueExpression": { + "name": "systolic", + "language": "text/fhirpath", + "expression": "%resource.repeat(item).where(linkId='VS.16.1').answer.valueDecimal" + } + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/variable", + "valueExpression": { + "name": "diastolic", + "language": "text/fhirpath", + "expression": "%resource.repeat(item).where(linkId='VS.16.2').answer.valueDecimal" + } + } + ], + "item": [ + { + "linkId": "OBJ.VS", + "code": [ + { + "code": "85353-1", + "display": "Vital Signs", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Vital Signs", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unit", + "valueCoding": { + "display": "{breaths}/min" + } + } + ], + "linkId": "VS.1", + "code": [ + { + "code": "9279-1", + "display": "Respiration rate", + "system": "http://loinc.org/modified" + } + ], + "type": "decimal", + "text": "Respiration rate" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unit", + "valueCoding": { + "display": "{beats}/min" + } + } + ], + "linkId": "VS.2", + "code": [ + { + "code": "8867-4", + "display": "Heart rate", + "system": "http://loinc.org" + } + ], + "type": "decimal", + "text": "Heart rate" + }, + { + "linkId": "VS.3", + "code": [ + { + "code": "8361-8", + "display": "Body position with respect to gravity", + "system": "http://loinc.org" + } + ], + "type": "choice", + "text": "Body position with respect to gravity", + "answerOption": [ + { + "valueCoding": { + "code": "LA11868-9", + "display": "Sitting" + } + }, + { + "valueCoding": { + "code": "LA11869-7", + "display": "Lying" + } + }, + { + "valueCoding": { + "code": "LA11870-5", + "display": "Standing" + } + } + ] + }, + { + "linkId": "VS.4", + "code": [ + { + "code": "8887-2", + "display": "Heart Rate Device Class", + "system": "http://loinc.org" + } + ], + "type": "string", + "text": "Heart Rate Device Class" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unit", + "valueCoding": { + "display": "%" + } + } + ], + "linkId": "VS.5", + "code": [ + { + "code": "59408-5", + "display": "SaO2 % Arterial Blood Pulse Oximetry", + "system": "http://loinc.org" + } + ], + "type": "decimal", + "text": "SaO2 % Arterial Blood Pulse Oximetry" + }, + { + "linkId": "VS.6", + "code": [ + { + "code": "3151-8", + "display": "Inhaled O2 flow rate", + "system": "http://loinc.org" + } + ], + "type": "choice", + "text": "Inhaled O2 flow rate", + "answerOption": [ + { + "valueCoding": { + "code": "LA11849-9", + "display": "Room air" + } + }, + { + "valueCoding": { + "code": "LA11850-7", + "display": "1 liter/min" + } + }, + { + "valueCoding": { + "code": "LA11851-5", + "display": "2 liters/min" + } + }, + { + "valueCoding": { + "code": "LA11852-3", + "display": "3 liters/min" + } + }, + { + "valueCoding": { + "code": "LA11853-1", + "display": "4 liters/min" + } + }, + { + "valueCoding": { + "code": "LA11854-9", + "display": "5 liters/min" + } + }, + { + "valueCoding": { + "code": "LA11855-6", + "display": "6 liters/min" + } + } + ], + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "text": "Help-Button", + "coding": [ + { + "code": "help", + "display": "Help-Button", + "system": "http://hl7.org/fhir/questionnaire-item-control" + } + ] + } + } + ], + "linkId": "VS.6.1", + "type": "display", + "text": "Liters per minute of oxygen used for masks that have a volume per minute" + } + ] + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unit", + "valueCoding": { + "display": "Cel" + } + } + ], + "linkId": "VS.7", + "code": [ + { + "code": "8310-5", + "display": "Body temperature", + "system": "http://loinc.org" + } + ], + "type": "decimal", + "text": "Body temperature" + }, + { + "linkId": "VS.8", + "code": [ + { + "code": "8327-9", + "display": "Body temperature measurement site", + "system": "http://loinc.org" + } + ], + "type": "choice", + "text": "Body temperature measurement site", + "answerOption": [ + { + "valueCoding": { + "code": "LA9370-3", + "display": "Axillary" + } + }, + { + "valueCoding": { + "code": "LA9367-9", + "display": "Oral" + } + }, + { + "valueCoding": { + "code": "LA21929-7", + "display": "Ear" + } + }, + { + "valueCoding": { + "code": "LA9368-7", + "display": "Tympanic membrane" + } + }, + { + "valueCoding": { + "code": "LA21928-9", + "display": "Temporal artery (forehead)" + } + }, + { + "valueCoding": { + "code": "LA9369-5", + "display": "Rectal" + } + }, + { + "valueCoding": { + "code": "LA9371-1", + "display": "Urinary bladder" + } + }, + { + "valueCoding": { + "code": "LA9263-0", + "display": "Nasal" + } + }, + { + "valueCoding": { + "code": "LA18005-1", + "display": "Nasopharyngeal" + } + }, + { + "valueCoding": { + "code": "LA11862-2", + "display": "Finger" + } + }, + { + "valueCoding": { + "code": "LA21930-5", + "display": "Toe" + } + } + ] + }, + { + "linkId": "VS.9", + "code": [ + { + "code": "8326-1", + "display": "Body temperature device class", + "system": "http://loinc.org" + } + ], + "type": "choice", + "text": "Body temperature device class", + "answerOption": [ + { + "valueCoding": { + "code": "LA24040-0", + "display": "Digital thermometer" + } + }, + { + "valueCoding": { + "code": "LA24043-4", + "display": "Liquid-crystal temperature-sensitive strip" + } + }, + { + "valueCoding": { + "code": "LA24038-4", + "display": "Mercury thermometer" + } + }, + { + "valueCoding": { + "code": "LA24037-6", + "display": "Non-contact infrared thermometer (NCIT)" + } + }, + { + "valueCoding": { + "code": "LA24042-6", + "display": "Temporal artery infrared thermometer" + } + }, + { + "valueCoding": { + "code": "LA24039-2", + "display": "Thermal scanner camera" + } + }, + { + "valueCoding": { + "code": "LA24041-8", + "display": "Tympanic infrared thermometer" + } + } + ] + }, + { + "linkId": "VS.10", + "code": [ + { + "code": "8352-7", + "display": "Clothing worn during measure", + "system": "http://loinc.org" + } + ], + "type": "choice", + "text": "Clothing worn during measure", + "answerOption": [ + { + "valueCoding": { + "code": "LA11871-3", + "display": "Underwear or less" + } + }, + { + "valueCoding": { + "code": "LA11872-1", + "display": "Street clothes, no shoes" + } + }, + { + "valueCoding": { + "code": "LA11873-9", + "display": "Street clothes & shoes" + } + } + ] + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unit", + "valueCoding": { + "display": "[in_i]" + } + } + ], + "linkId": "VS.11", + "code": [ + { + "code": "8302-2", + "display": "Body height", + "system": "http://loinc.org" + } + ], + "type": "decimal", + "text": "Body height" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unitOption", + "valueCoding": { + "display": "[in_us]" + } + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unitOption", + "valueCoding": { + "display": "cm" + } + } + ], + "linkId": "VS.12", + "code": [ + { + "code": "8306-3", + "display": "Body height lying", + "system": "http://loinc.org" + } + ], + "type": "quantity", + "text": "Body height lying" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unit", + "valueCoding": { + "display": "cm" + } + } + ], + "linkId": "VS.13", + "code": [ + { + "code": "8287-5", + "display": "Head circumference occipital frontal by tape measure", + "system": "http://loinc.org" + } + ], + "type": "decimal", + "text": "Head circumference occipital frontal by tape measure" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unit", + "valueCoding": { + "display": "kg" + } + } + ], + "linkId": "VS.14", + "code": [ + { + "code": "29463-7", + "display": "Body weight", + "system": "http://loinc.org" + } + ], + "type": "decimal", + "text": "Body weight" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unit", + "valueCoding": { + "display": "kg/m2" + } + }, + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression", + "valueExpression": { + "description": "BMI calculation", + "language": "text/fhirpath", + "expression": "(%weight/%height/%height).round(1)" + } + } + ], + "linkId": "VS.15", + "code": [ + { + "code": "39156-5", + "display": "BMI", + "system": "http://loinc.org" + } + ], + "type": "decimal", + "text": "BMI" + }, + { + "linkId": "VS.16", + "code": [ + { + "code": "85354-9", + "display": "Blood Pressure", + "system": "http://loinc.org" + } + ], + "type": "group", + "text": "Blood Pressure", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unit", + "valueCoding": { + "display": "mm[Hg]" + } + } + ], + "linkId": "VS.16.1", + "code": [ + { + "code": "8480-6", + "display": "Systolic", + "system": "http://loinc.org" + } + ], + "type": "decimal", + "text": "Systolic" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unit", + "valueCoding": { + "display": "mm[Hg]" + } + } + ], + "linkId": "VS.16.2", + "code": [ + { + "code": "8462-4", + "display": "Diastolic", + "system": "http://loinc.org" + } + ], + "type": "decimal", + "text": "Diastolic" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unit", + "valueCoding": { + "display": "mm[Hg]" + } + }, + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression", + "valueExpression": { + "description": "Mean arterial calculation", + "language": "text/fhirpath", + "expression": "((%systolic+2*(%diastolic))/3).round(0)" + } + } + ], + "linkId": "VS.16.3", + "code": [ + { + "code": "8478-0", + "display": "Mean", + "system": "http://loinc.org" + } + ], + "type": "decimal", + "text": "Mean" + }, + { + "linkId": "VS.1.4", + "code": [ + { + "code": "8357-6", + "display": "Method", + "system": "http://loinc.org" + } + ], + "type": "choice", + "text": "Method", + "answerOption": [ + { + "valueCoding": { + "code": "LA24013-7", + "display": "Auscultation - automatic" + } + }, + { + "valueCoding": { + "code": "LA24012-9", + "display": "Auscultation - manual" + } + }, + { + "valueCoding": { + "code": "LA24014-5", + "display": "Oscillometry" + } + }, + { + "valueCoding": { + "code": "LA24016-0", + "display": "Continuous noninvasive arterial pressure (CNAP)" + } + }, + { + "valueCoding": { + "code": "LA24015-2", + "display": "Invasive (intravascular transducer)" + } + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-optionPrefix", + "valueString": "3308001" + } + ], + "valueCoding": { + "code": "LA25780-0", + "display": "Arterial line" + } + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-optionPrefix", + "valueString": "3308003" + } + ], + "valueCoding": { + "code": "LA19771-7", + "display": "Doppler" + } + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-optionPrefix", + "valueString": "3308009" + } + ], + "valueCoding": { + "code": "LA25782-6", + "display": "Cuff-manual palpated only" + } + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-optionPrefix", + "valueString": "3308011" + } + ], + "valueCoding": { + "code": "LA25783-4", + "display": "Venous line" + } + } + ] + }, + { + "linkId": "VS.16.5", + "code": [ + { + "code": "41904-4", + "display": "Measurement site", + "system": "http://loinc.org" + } + ], + "type": "choice", + "text": "Measurement site", + "answerOption": [ + { + "valueCoding": { + "code": "LA11158-5", + "display": "Biceps left" + } + }, + { + "valueCoding": { + "code": "LA11159-3", + "display": "Biceps right" + } + }, + { + "valueCoding": { + "code": "LA11160-1", + "display": "Wrist left" + } + }, + { + "valueCoding": { + "code": "LA11161-9", + "display": "Wrist right" + } + }, + { + "valueCoding": { + "code": "LA21901-6", + "display": "Thigh left" + } + }, + { + "valueCoding": { + "code": "LA21900-8", + "display": "Thigh right" + } + }, + { + "valueCoding": { + "code": "LA21903-2", + "display": "Ankle left" + } + }, + { + "valueCoding": { + "code": "LA21902-4", + "display": "Ankle right" + } + }, + { + "valueCoding": { + "code": "LA11862-2", + "display": "Finger" + } + } + ] + }, + { + "linkId": "VS.16.6", + "code": [ + { + "code": "8358-4", + "display": "Device cuff size", + "system": "http://loinc.org" + } + ], + "type": "choice", + "text": "Device cuff size", + "answerOption": [ + { + "valueCoding": { + "code": "LA11162-7", + "display": "Adult standard" + } + }, + { + "valueCoding": { + "code": "LA11163-5", + "display": "Adult large" + } + }, + { + "valueCoding": { + "code": "LA11164-3", + "display": "Thigh extra large" + } + } + ] + }, + { + "linkId": "VS.16.7", + "code": [ + { + "code": "41901-0", + "display": "Device class", + "system": "http://loinc.org" + } + ], + "type": "choice", + "text": "Device class", + "answerOption": [ + { + "valueCoding": { + "code": "LA24017-8", + "display": "Mercury sphygmomanometer" + } + }, + { + "valueCoding": { + "code": "LA24018-6", + "display": "Aneroid (mechanical) sphygmomanometer" + } + }, + { + "valueCoding": { + "code": "LA24019-4", + "display": "Ambulatory oscillometric device" + } + }, + { + "valueCoding": { + "code": "LA24020-2", + "display": "Home oscillometric device" + } + }, + { + "valueCoding": { + "code": "LA24021-0", + "display": "Continuous noninvasive arterial pressure (CNAP) device" + } + }, + { + "valueCoding": { + "code": "LA24022-8", + "display": "Invasive arterial blood pressure device" + } + } + ] + } + ] + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "text": "Help-Button", + "coding": [ + { + "code": "help", + "display": "Help-Button", + "system": "http://hl7.org/fhir/questionnaire-item-control" + } + ] + } + } + ], + "linkId": "VS.17", + "type": "display", + "text": "This term was created for, but is not limited in use to, the HL7 FHIR Vital Signs Profile (http://build.fhir.org/observation-vitalsigns.html). This collection includes the standard vital sign measurements (heart and respiratory rate, blood pressure and body temperature) along with measurements for oxygen saturation, height, weight, head circumference, and body mass index (BMI). All measurements are optional in this panel." + } + ] + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-administrative-gender.json b/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-administrative-gender.json new file mode 100644 index 00000000..c4d51b8a --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-administrative-gender.json @@ -0,0 +1,142 @@ +{ + "resourceType" : "ValueSet", + "id" : "administrative-gender", + "meta" : { + "versionId" : "1", + "lastUpdated" : "2018-12-14T02:04:45.957Z", + "profile" : [ + "http://hl7.org/fhir/StructureDefinition/shareablevalueset" + ] + }, + "text" : { + "status" : "generated", + "div" : "
http://hl7.org/fhir/administrative-gendermaleMale
http://hl7.org/fhir/administrative-genderfemaleFemale
http://hl7.org/fhir/administrative-genderotherOther
http://hl7.org/fhir/administrative-genderunknownUnknown
" + }, + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg", + "valueCode" : "pa" + }, + { + "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status", + "valueCode" : "normative" + }, + { + "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm", + "valueInteger" : 5 + }, + { + "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-normative-version", + "valueCode" : "4.0.0" + } + ], + "url" : "http://hl7.org/fhir/ValueSet/administrative-gender", + "identifier" : [ + { + "system" : "urn:ietf:rfc:3986", + "value" : "urn:oid:2.16.840.1.113883.4.642.3.1" + } + ], + "version" : "4.0.0", + "name" : "AdministrativeGender", + "title" : "AdministrativeGender", + "status" : "active", + "experimental" : false, + "date" : "2018-12-14T01:14:32+00:00", + "publisher" : "HL7 (FHIR Project)", + "contact" : [ + { + "telecom" : [ + { + "system" : "url", + "value" : "http://hl7.org/fhir" + }, + { + "system" : "email", + "value" : "fhir@lists.hl7.org" + } + ] + } + ], + "description" : "The gender of a person used for administrative purposes.", + "immutable" : true, + "compose" : { + "include" : [ + { + "system" : "http://hl7.org/fhir/administrative-gender" + } + ] + }, + "expansion" : { + "identifier" : "urn:uuid:9758a8b3-f741-40f6-b497-1bb7cd611c09", + "timestamp" : "2020-05-07T17:13:35.193Z", + "parameter" : [ + { + "name" : "expansion-source", + "valueString" : "ValueSet/administrative-gender" + }, + { + "name" : "limitedExpansion", + "valueBoolean" : true + }, + { + "name" : "displayLanguage", + "valueString" : "en-US,en;q=0.9" + }, + { + "name" : "includeDefinition", + "valueBoolean" : true + }, + { + "name" : "version", + "valueString" : "http://hl7.org/fhir/administrative-gender|4.0.0" + } + ], + "contains" : [ + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Male." + } + ], + "system" : "http://hl7.org/fhir/administrative-gender", + "code" : "male", + "display" : "Male" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Female." + } + ], + "system" : "http://hl7.org/fhir/administrative-gender", + "code" : "female", + "display" : "Female" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Other." + } + ], + "system" : "http://hl7.org/fhir/administrative-gender", + "code" : "other", + "display" : "Other" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Unknown." + } + ], + "system" : "http://hl7.org/fhir/administrative-gender", + "code" : "unknown", + "display" : "Unknown" + } + ] + } +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-condition-clinical.json b/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-condition-clinical.json new file mode 100644 index 00000000..a3566410 --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-condition-clinical.json @@ -0,0 +1,109 @@ +{ + "resourceType": "ValueSet", + "id": "condition-clinical", + "meta": { + "versionId": "1", + "lastUpdated": "2018-12-14T02:04:58.254Z", + "profile": ["http://hl7.org/fhir/StructureDefinition/shareablevalueset"] + }, + "url": "http://hl7.org/fhir/ValueSet/condition-clinical", + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:oid:2.16.840.1.113883.4.642.3.164" + } + ], + "version": "4.0.0", + "name": "ConditionClinicalStatusCodes", + "title": "Condition Clinical Status Codes", + "status": "draft", + "experimental": false, + "date": "2018-12-14T01:14:32+00:00", + "immutable": true, + "expansion": { + "identifier": "urn:uuid:995a6aa6-0388-41fa-8883-9ecd474dfe67", + "timestamp": "2020-07-22T21:20:14.229Z", + "parameter": [ + { + "name": "expansion-source", + "valueString": "ValueSet/condition-clinical" + }, + { + "name": "displayLanguage", + "valueString": "en-US,en;q=0.9" + }, + { + "name": "version", + "valueString": "http://terminology.hl7.org/CodeSystem/condition-clinical|4.0.0" + } + ], + "contains": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString": "The subject is currently experiencing the symptoms of the condition or there is evidence of the condition." + } + ], + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "active", + "display": "Active" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString": "The subject is experiencing a re-occurence or repeating of a previously resolved condition, e.g. urinary tract infection, pancreatitis, cholangitis, conjunctivitis." + } + ], + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "recurrence", + "display": "Recurrence" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString": "The subject is experiencing a return of a condition, or signs and symptoms after a period of improvement or remission, e.g. relapse of cancer, multiple sclerosis, rheumatoid arthritis, systemic lupus erythematosus, bipolar disorder, [psychotic relapse of] schizophrenia, etc." + } + ], + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "relapse", + "display": "Relapse" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString": "The subject is no longer experiencing the symptoms of the condition or there is no longer evidence of the condition." + } + ], + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "inactive", + "display": "Inactive" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString": "The subject is no longer experiencing the symptoms of the condition, but there is a risk of the symptoms returning." + } + ], + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "remission", + "display": "Remission" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString": "The subject is no longer experiencing the symptoms of the condition and there is a negligible perceived risk of the symptoms returning." + } + ], + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "resolved", + "display": "Resolved" + } + ] + } +} diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-medicationrequest-status.json b/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-medicationrequest-status.json new file mode 100644 index 00000000..fc3b3b47 --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-medicationrequest-status.json @@ -0,0 +1,129 @@ +{ + "resourceType" : "ValueSet", + "id" : "medicationrequest-status", + "meta" : { + "versionId" : "1", + "lastUpdated" : "2018-12-14T02:05:08.441Z", + "profile" : [ + "http://hl7.org/fhir/StructureDefinition/shareablevalueset" + ] + }, + "url" : "http://hl7.org/fhir/ValueSet/medicationrequest-status", + "identifier" : [ + { + "system" : "urn:ietf:rfc:3986", + "value" : "urn:oid:2.16.840.1.113883.4.642.3.1320" + } + ], + "version" : "4.0.0", + "name" : "medicationrequest Status", + "title" : "Medicationrequest status", + "status" : "draft", + "experimental" : false, + "date" : "2018-12-14T01:14:32+00:00", + "immutable" : true, + "expansion" : { + "identifier" : "urn:uuid:0c02c1ed-3b53-47f0-9ec6-606d80b544db", + "timestamp" : "2020-07-10T15:03:57.730Z", + "parameter" : [ + { + "name" : "expansion-source", + "valueString" : "ValueSet/medicationrequest-status" + }, + { + "name" : "version", + "valueString" : "http://hl7.org/fhir/CodeSystem/medicationrequest-status|4.0.0" + } + ], + "contains" : [ + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "The prescription is 'actionable', but not all actions that are implied by it have occurred yet." + } + ], + "system" : "http://hl7.org/fhir/CodeSystem/medicationrequest-status", + "code" : "active", + "display" : "Active" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Actions implied by the prescription are to be temporarily halted, but are expected to continue later. May also be called 'suspended'." + } + ], + "system" : "http://hl7.org/fhir/CodeSystem/medicationrequest-status", + "code" : "on-hold", + "display" : "On Hold" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "The prescription has been withdrawn before any administrations have occurred" + } + ], + "system" : "http://hl7.org/fhir/CodeSystem/medicationrequest-status", + "code" : "cancelled", + "display" : "Cancelled" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "All actions that are implied by the prescription have occurred." + } + ], + "system" : "http://hl7.org/fhir/CodeSystem/medicationrequest-status", + "code" : "completed", + "display" : "Completed" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Some of the actions that are implied by the medication request may have occurred. For example, the medication may have been dispensed and the patient may have taken some of the medication. Clinical decision support systems should take this status into account" + } + ], + "system" : "http://hl7.org/fhir/CodeSystem/medicationrequest-status", + "code" : "entered-in-error", + "display" : "Entered in Error" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Actions implied by the prescription are to be permanently halted, before all of the administrations occurred. This should not be used if the original order was entered in error" + } + ], + "system" : "http://hl7.org/fhir/CodeSystem/medicationrequest-status", + "code" : "stopped", + "display" : "Stopped" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "The prescription is not yet 'actionable', e.g. it is a work in progress, requires sign-off, verification or needs to be run through decision support process." + } + ], + "system" : "http://hl7.org/fhir/CodeSystem/medicationrequest-status", + "code" : "draft", + "display" : "Draft" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "The authoring/source system does not know which of the status values currently applies for this observation. Note: This concept is not to be used for 'other' - one of the listed statuses is presumed to apply, but the authoring/source system does not know which." + } + ], + "system" : "http://hl7.org/fhir/CodeSystem/medicationrequest-status", + "code" : "unknown", + "display" : "Unknown" + } + ] + } +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-timing-abbreviation.json b/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-timing-abbreviation.json new file mode 100644 index 00000000..d1327edf --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-timing-abbreviation.json @@ -0,0 +1,220 @@ +{ + "resourceType" : "ValueSet", + "id" : "timing-abbreviation", + "meta" : { + "versionId" : "1", + "lastUpdated" : "2018-12-14T02:05:16.722Z", + "profile" : [ + "http://hl7.org/fhir/StructureDefinition/shareablevalueset" + ] + }, + "url" : "http://hl7.org/fhir/ValueSet/timing-abbreviation", + "identifier" : [ + { + "system" : "urn:ietf:rfc:3986", + "value" : "urn:oid:2.16.840.1.113883.4.642.3.78" + } + ], + "version" : "4.0.0", + "name" : "TimingAbbreviation", + "title" : "TimingAbbreviation", + "status" : "draft", + "experimental" : false, + "date" : "2018-12-14T01:14:32+00:00", + "expansion" : { + "identifier" : "urn:uuid:dcd3e054-dc76-4539-ba68-4f1350fb8398", + "timestamp" : "2020-07-08T16:56:06.800Z", + "parameter" : [ + { + "name" : "expansion-source", + "valueString" : "ValueSet/timing-abbreviation" + }, + { + "name" : "displayLanguage", + "valueString" : "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7" + }, + { + "name" : "version", + "valueString" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation|2018-08-12" + } + ], + "contains" : [ + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Two times a day at institution specified time" + } + ], + "system" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation", + "code" : "BID", + "display" : "BID" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Three times a day at institution specified time" + } + ], + "system" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation", + "code" : "TID", + "display" : "TID" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Four times a day at institution specified time" + } + ], + "system" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation", + "code" : "QID", + "display" : "QID" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Every morning at institution specified times." + } + ], + "system" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation", + "code" : "AM", + "display" : "AM" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Every afternoon at institution specified times." + } + ], + "system" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation", + "code" : "PM", + "display" : "PM" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Every day at institution specified times." + } + ], + "system" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation", + "code" : "QD", + "display" : "QD" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Every other day at institution specified times." + } + ], + "system" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation", + "code" : "QOD", + "display" : "QOD" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Every hour at institution specified times." + } + ], + "system" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation", + "code" : "Q1H", + "display" : "every hour" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Every 2 hours at institution specified times." + } + ], + "system" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation", + "code" : "Q2H", + "display" : "every 2 hours" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Every 3 hours at institution specified times." + } + ], + "system" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation", + "code" : "Q3H", + "display" : "every 3 hours" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Every 4 hours at institution specified time" + } + ], + "system" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation", + "code" : "Q4H", + "display" : "Q4H" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Every 6 hours at institution specified time" + } + ], + "system" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation", + "code" : "Q6H", + "display" : "Q6H" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Every 8 hours at institution specified times." + } + ], + "system" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation", + "code" : "Q8H", + "display" : "every 8 hours" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "At bedtime (institution specified time)." + } + ], + "system" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation", + "code" : "BED", + "display" : "at bedtime" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Weekly at institution specified time." + } + ], + "system" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation", + "code" : "WK", + "display" : "weekly" + }, + { + "extension" : [ + { + "url" : "http://hl7.org/fhir/StructureDefinition/valueset-definition", + "valueString" : "Monthly at institution specified time." + } + ], + "system" : "http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation", + "code" : "MO", + "display" : "monthly" + } + ] + } +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-yes-no-unknown-not-asked.json b/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-yes-no-unknown-not-asked.json new file mode 100644 index 00000000..3afdb824 --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-yes-no-unknown-not-asked.json @@ -0,0 +1,33 @@ +{ + "resourceType": "ValueSet", + "id": "yes-no-unknown-not-asked", + "url": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked", + "name": "YesNoUnknownNotAsked", + "title": "Yes No Unknown NotAsked", + "status": "active", + "expansion": { + "timestamp": "2020-06-24", + "contains": [ + { + "code": "Y", + "system": "http://terminology.hl7.org/CodeSystem/v2-0532", + "display": "Yes" + }, + { + "code": "N", + "system": "http://terminology.hl7.org/CodeSystem/v2-0532", + "display": "No" + }, + { + "code": "ASKU", + "system": "http://terminology.hl7.org/CodeSystem/v2-0532", + "display": "Unknown" + }, + { + "code": "NASK", + "system": "http://terminology.hl7.org/CodeSystem/v2-0532", + "display": "Not Asked" + } + ] + } +} diff --git a/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-yes-no.json b/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-yes-no.json new file mode 100644 index 00000000..8f44c0b8 --- /dev/null +++ b/src/cds-library/CRD-DTR/Shared/R4/resources/ValueSet-R4-yes-no.json @@ -0,0 +1,45 @@ +{ + "resourceType" : "ValueSet", + "id" : "v2-0136", + "meta" : { + "versionId" : "1", + "lastUpdated" : "2018-12-14T02:05:20.722Z", + "profile" : [ + "http://hl7.org/fhir/StructureDefinition/shareablevalueset" + ] + }, + "language" : "en", + "url" : "http://terminology.hl7.org/ValueSet/v2-0136", + "version" : "2.9", + "name" : "v2.0136", + "title" : "v2 Y/N Indicator", + "status" : "active", + "experimental" : false, + "immutable" : true, + "expansion" : { + "identifier" : "urn:uuid:3092e027-c774-4d33-a144-380185b08605", + "timestamp" : "2020-07-17T16:00:03.093Z", + "parameter" : [ + { + "name" : "expansion-source", + "valueString" : "ValueSet/v2-0136" + }, + { + "name" : "version", + "valueString" : "http://terminology.hl7.org/CodeSystem/v2-0136|2.9" + } + ], + "contains" : [ + { + "system" : "http://terminology.hl7.org/CodeSystem/v2-0136", + "code" : "Y", + "display" : "Yes" + }, + { + "system" : "http://terminology.hl7.org/CodeSystem/v2-0136", + "code" : "N", + "display" : "No" + } + ] + } +} diff --git a/src/cds-library/CRD-DTR/TIRF/R4/files/TIRFPrepopulatiom-0.1.0.cql b/src/cds-library/CRD-DTR/TIRF/R4/files/TIRFPrepopulatiom-0.1.0.cql new file mode 100644 index 00000000..e69de29b diff --git a/src/cds-library/CRD-DTR/TIRF/R4/files/TIRFPrescriberEnrollmentPrepopulation-0.1.0.cql b/src/cds-library/CRD-DTR/TIRF/R4/files/TIRFPrescriberEnrollmentPrepopulation-0.1.0.cql new file mode 100644 index 00000000..a98f2aa5 --- /dev/null +++ b/src/cds-library/CRD-DTR/TIRF/R4/files/TIRFPrescriberEnrollmentPrepopulation-0.1.0.cql @@ -0,0 +1,51 @@ +library TIRFPrescriberEnrollmentPrepopulation version '0.1.0' +using FHIR version '4.0.0' +include FHIRHelpers version '4.0.0' called FHIRHelpers + +codesystem "ICD-10-CM": 'http://hl7.org/fhir/sid/icd-10-cm' +codesystem "LOINC": 'http://loinc.org' +codesystem "SNOMED-CT": 'http://snomed.info/sct' +codesystem "RXNORM": 'http://www.nlm.nih.gov/research/umls/rxnorm' + +code "Oncologist":'394592004' from "SNOMED-CT" + +parameter device_request DeviceRequest +parameter service_request ServiceRequest +parameter medication_request MedicationRequest + +context Patient + +define Today: Today() + +define "SigningProviderReference": Coalesce(device_request.performer.reference.value, service_request.performer.reference.value, medication_request.requester.reference.value) +// Get Practitioner +define OrderingProvider: singleton from ( + [Practitioner] practitioner + where ('Practitioner/' + practitioner.id) = SigningProviderReference) + +define Qualifications: singleton from ( + "OrderingProvider".qualification[0].code.coding[0].code.value) + +define Credentials: {Qualifications} + +define PractitionerRole: singleton from ( + [PractitionerRole] prole + where (prole.practitioner.reference.value) = SigningProviderReference) + +define Specialty: FHIRHelpers.ToConcept("PractitionerRole".specialty[0] as FHIR.CodeableConcept).codes + +define PreferredCommunication: {(singleton from ( + "OrderingProvider".telecom telecom where telecom.rank.value = 1)).system.value} + +define OrgName: ([Organization] org).name.value + +define MD: (singleton from ( + "OrderingProvider".identifier identifier + where identifier.type.coding[0].code = 'MD')).value.value + +define ValidTIRFCredentials: + from "OrderingProvider".qualification qualification + where qualification.identifier.system.value = 'http://www.nlm.nih.gov/research/umls/rxnorm' and qualification.identifier.value.value = '1237051' + +define ThirdPartyCredentials: ValidTIRFCredentials[0].code.text.value +define ThirdPartyIssuer: ValidTIRFCredentials[0].issuer.display.value \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/TIRF/R4/files/TIRFRule-0.1.0.cql b/src/cds-library/CRD-DTR/TIRF/R4/files/TIRFRule-0.1.0.cql new file mode 100644 index 00000000..ec5dd2ac --- /dev/null +++ b/src/cds-library/CRD-DTR/TIRF/R4/files/TIRFRule-0.1.0.cql @@ -0,0 +1,44 @@ +library TIRFRule version '0.1.0' +using FHIR version '4.0.0' +include FHIRHelpers version '4.0.0' called FHIRHelpers + + +parameter Patient Patient +parameter medication_request MedicationRequest +parameter medication_dispense MedicationDispense +parameter medication_statement MedicationStatement + +define RULE_APPLIES: + true + +define PRIORAUTH_REQUIRED: + false + +define DOCUMENTATION_REQUIRED: + true + +define RESULT_InfoLink: + 'https://www.accessdata.fda.gov/drugsatfda_docs/rems/TIRF_2022_08_17_REMS_Document.pdf' +define INFO_PATIENT_PatientCounselingGuide: + 'https://www.accessdata.fda.gov/drugsatfda_docs/rems/TIRF_2022_08_17_Patient_Counseling_Guide.pdf' +define INFO_PATIENT_PatientFAQ: + 'https://tirfstorageproduction.blob.core.windows.net/tirf-public/tirf-patientfaq-frequently-asked-questions.pdf?skoid=417a7522-f809-43c4-b6a8-6b192d44b69e&sktid=59fc620e-de8c-4745-abcc-18182d1bf20e&skt=2022-09-20T19%3A06%3A21Z&ske=2022-09-26T19%3A11%3A21Z&sks=b&skv=2020-04-08&sv=2020-04-08&st=2021-03-21T21%3A27%3A00Z&se=2031-03-21T23%3A59%3A59Z&sr=b&sp=rc&sig=owSGAoUBZuCtsLE41F2XC3o12x%2BG%2Bt5ogykOIt796es%3D' +define INFO_PRESCRIBER_PrescriberEducation: + 'https://www.accessdata.fda.gov/drugsatfda_docs/rems/TIRF_2022_08_17_Prescriber_Education.pdf' +define INFO_PRESCRIBER_PrescriberFAQ: + 'https://tirfstorageproduction.blob.core.windows.net/tirf-public/tirf-prfaq-frequently-asked-questions.pdf?skoid=417a7522-f809-43c4-b6a8-6b192d44b69e&sktid=59fc620e-de8c-4745-abcc-18182d1bf20e&skt=2022-09-20T19%3A06%3A53Z&ske=2022-09-26T19%3A11%3A53Z&sks=b&skv=2020-04-08&sv=2020-04-08&st=2021-03-21T21%3A35%3A43Z&se=2031-03-21T23%3A59%3A59Z&sr=b&sp=rc&sig=fqtDzsm7qi1G8MKau210Y3gNet%2Fi20zw2EThKODdEUM%3D' + +define RESULT_QuestionnaireOrderUri: + 'Questionnaire/TIRFRemsPatientEnrollment' + +define RESULT_QuestionnairePrescriberEnrollmentUri: + 'Questionnaire/TIRFPrescriberEnrollmentForm' + +define RESULT_QuestionnairePrescriberKnowledgeAssessmentUri: + 'Questionnaire/TIRFPrescriberKnowledgeAssessment' + +define RESULT_requestId: + medication_request + +define RESULT_dispense: + medication_dispense \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/TIRF/R4/resources/Library-R4-TIRFPrescriberEnrollment-prepopulation.json b/src/cds-library/CRD-DTR/TIRF/R4/resources/Library-R4-TIRFPrescriberEnrollment-prepopulation.json new file mode 100644 index 00000000..12da16a3 --- /dev/null +++ b/src/cds-library/CRD-DTR/TIRF/R4/resources/Library-R4-TIRFPrescriberEnrollment-prepopulation.json @@ -0,0 +1,113 @@ +{ + "resourceType": "Library", + "id": "TIRFPrescriberEnrollment-prepopulation", + "url": "http://hl7.org/fhir/us/davinci-dtr/Library/TIRFPrescriberEnrollment-prepopulation", + "name": "TIRFPrescriberEnrollment-prepopulation", + "version": "0.1.0", + "title": "TIRFPrescriberEnrollment Prepopulation", + "status": "draft", + "type": { + "coding": [ + { + "code": "logic-library" + } + ] + }, + "relatedArtifact": [ + { + "type": "depends-on", + "resource": "Library/FHIRHelpers-4.0.0" + }, + { + "type": "depends-on", + "resource": "Library/CDS_Connect_Commons_for_FHIRv400" + }, + { + "type": "depends-on", + "resource": "Library/DTRHelpers" + } + ], + "dataRequirement": [ + { + "type": "Condition", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.81" + } + ] + }, + { + "type": "Condition", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.198" + } + ] + }, + { + "type": "Procedure", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.90" + } + ] + }, + { + "type": "MedicationRequest", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.192" + } + ] + }, + { + "type": "MedicationRequest", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.193" + } + ] + }, + { + "type": "Observation" + }, + { + "type": "MedicationStatement", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.197" + } + ] + }, + { + "type": "Practitioner" + }, + { + "type": "PractitionerRole", + "subjectCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/ValueSet/subject-type", + "code": "Practitioner" + } + ] + } + } + ], + "content": [ + { + "contentType": "text/cql", + "data": "bGlicmFyeSBUSVJGUHJlc2NyaWJlckVucm9sbG1lbnRQcmVwb3B1bGF0aW9uICB2ZXJzaW9uICcwLjEuMCcKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMCcKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMCcgY2FsbGVkIEZISVJIZWxwZXJzCgpjb2Rlc3lzdGVtICJJQ0QtMTAtQ00iOiAnaHR0cDovL2hsNy5vcmcvZmhpci9zaWQvaWNkLTEwLWNtJwpjb2Rlc3lzdGVtICJMT0lOQyI6ICdodHRwOi8vbG9pbmMub3JnJwpjb2Rlc3lzdGVtICJTTk9NRUQtQ1QiOiAnaHR0cDovL3Nub21lZC5pbmZvL3NjdCcKY29kZXN5c3RlbSAiUlhOT1JNIjogJ2h0dHA6Ly93d3cubmxtLm5paC5nb3YvcmVzZWFyY2gvdW1scy9yeG5vcm0nCgpjb2RlICJPbmNvbG9naXN0IjonMzk0NTkyMDA0JyBmcm9tICJTTk9NRUQtQ1QiCgpwYXJhbWV0ZXIgZGV2aWNlX3JlcXVlc3QgRGV2aWNlUmVxdWVzdApwYXJhbWV0ZXIgc2VydmljZV9yZXF1ZXN0IFNlcnZpY2VSZXF1ZXN0CnBhcmFtZXRlciBtZWRpY2F0aW9uX3JlcXVlc3QgTWVkaWNhdGlvblJlcXVlc3QKCmNvbnRleHQgUGF0aWVudAoKZGVmaW5lIFRvZGF5OiBUb2RheSgpCgpkZWZpbmUgIlNpZ25pbmdQcm92aWRlclJlZmVyZW5jZSI6IENvYWxlc2NlKGRldmljZV9yZXF1ZXN0LnBlcmZvcm1lci5yZWZlcmVuY2UudmFsdWUsIHNlcnZpY2VfcmVxdWVzdC5wZXJmb3JtZXIucmVmZXJlbmNlLnZhbHVlLCBtZWRpY2F0aW9uX3JlcXVlc3QucmVxdWVzdGVyLnJlZmVyZW5jZS52YWx1ZSkKLy8gR2V0IFByYWN0aXRpb25lcgpkZWZpbmUgT3JkZXJpbmdQcm92aWRlcjogc2luZ2xldG9uIGZyb20gKAogIFtQcmFjdGl0aW9uZXJdIHByYWN0aXRpb25lcgogICAgd2hlcmUgKCdQcmFjdGl0aW9uZXIvJyArIHByYWN0aXRpb25lci5pZCkgPSAgU2lnbmluZ1Byb3ZpZGVyUmVmZXJlbmNlKQoKZGVmaW5lIFF1YWxpZmljYXRpb25zOiBzaW5nbGV0b24gZnJvbSAoCiAgICAiT3JkZXJpbmdQcm92aWRlciIucXVhbGlmaWNhdGlvblswXS5jb2RlLmNvZGluZ1swXS5jb2RlLnZhbHVlKQoKZGVmaW5lIENyZWRlbnRpYWxzOiB7UXVhbGlmaWNhdGlvbnN9CgpkZWZpbmUgUHJhY3RpdGlvbmVyUm9sZTogc2luZ2xldG9uIGZyb20gKAogIFtQcmFjdGl0aW9uZXJSb2xlXSBwcm9sZQogICAgd2hlcmUgKHByb2xlLnByYWN0aXRpb25lci5yZWZlcmVuY2UudmFsdWUpID0gU2lnbmluZ1Byb3ZpZGVyUmVmZXJlbmNlKQoKZGVmaW5lIFNwZWNpYWx0eTogIEZISVJIZWxwZXJzLlRvQ29uY2VwdCgiUHJhY3RpdGlvbmVyUm9sZSIuc3BlY2lhbHR5WzBdIGFzIEZISVIuQ29kZWFibGVDb25jZXB0KS5jb2RlcwoKZGVmaW5lIFByZWZlcnJlZENvbW11bmljYXRpb246IHsoc2luZ2xldG9uIGZyb20gKAogICJPcmRlcmluZ1Byb3ZpZGVyIi50ZWxlY29tIHRlbGVjb20gd2hlcmUgdGVsZWNvbS5yYW5rLnZhbHVlID0gMSkpLnN5c3RlbS52YWx1ZX0KCmRlZmluZSBPcmdOYW1lOiAoW09yZ2FuaXphdGlvbl0gb3JnKS5uYW1lLnZhbHVlCgpkZWZpbmUgTUQ6IChzaW5nbGV0b24gZnJvbSAoCiAgIk9yZGVyaW5nUHJvdmlkZXIiLmlkZW50aWZpZXIgaWRlbnRpZmllcgogICAgd2hlcmUgaWRlbnRpZmllci50eXBlLmNvZGluZ1swXS5jb2RlID0gJ01EJykpLnZhbHVlLnZhbHVlCgpkZWZpbmUgVmFsaWRUSVJGQ3JlZGVudGlhbHM6IAogIGZyb20gIk9yZGVyaW5nUHJvdmlkZXIiLnF1YWxpZmljYXRpb24gcXVhbGlmaWNhdGlvbiAKICAgIHdoZXJlIHF1YWxpZmljYXRpb24uaWRlbnRpZmllci5zeXN0ZW0udmFsdWUgPSAnaHR0cDovL3d3dy5ubG0ubmloLmdvdi9yZXNlYXJjaC91bWxzL3J4bm9ybScgYW5kIHF1YWxpZmljYXRpb24uaWRlbnRpZmllci52YWx1ZS52YWx1ZSA9ICcxMjM3MDUxJwoKZGVmaW5lIFRoaXJkUGFydHlDcmVkZW50aWFsczogVmFsaWRUSVJGQ3JlZGVudGlhbHNbMF0uY29kZS50ZXh0LnZhbHVlCmRlZmluZSBUaGlyZFBhcnR5SXNzdWVyOiBWYWxpZFRJUkZDcmVkZW50aWFsc1swXS5pc3N1ZXIuZGlzcGxheS52YWx1ZQ==" + }, + { + "contentType": "application/elm+json", + "data": "eyJsaWJyYXJ5Ijp7ImFubm90YXRpb24iOlt7InRyYW5zbGF0b3JPcHRpb25zIjoiIiwidHlwZSI6IkNxbFRvRWxtSW5mbyJ9LHsibGlicmFyeUlkIjoiVElSRlByZXNjcmliZXJFbnJvbGxtZW50UHJlcG9wdWxhdGlvbiIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjIwLCJzdGFydENoYXIiOjEyMywiZW5kTGluZSI6MjAsImVuZENoYXIiOjEyNywibWVzc2FnZSI6Ikxpc3QtdmFsdWVkIGV4cHJlc3Npb24gd2FzIGRlbW90ZWQgdG8gYSBzaW5nbGV0b24uIiwiZXJyb3JUeXBlIjoic2VtYW50aWMiLCJlcnJvclNldmVyaXR5Ijoid2FybmluZyIsInR5cGUiOiJDcWxUb0VsbUVycm9yIn0seyJsaWJyYXJ5SWQiOiJUSVJGUHJlc2NyaWJlckVucm9sbG1lbnRQcmVwb3B1bGF0aW9uIiwibGlicmFyeVZlcnNpb24iOiIwLjEuMCIsInN0YXJ0TGluZSI6MjAsInN0YXJ0Q2hhciI6MTIzLCJlbmRMaW5lIjoyMCwiZW5kQ2hhciI6MTI3LCJtZXNzYWdlIjoiTGlzdC12YWx1ZWQgZXhwcmVzc2lvbiB3YXMgZGVtb3RlZCB0byBhIHNpbmdsZXRvbi4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJ3YXJuaW5nIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IlRJUkZQcmVzY3JpYmVyRW5yb2xsbWVudFByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjo0OCwic3RhcnRDaGFyIjo0MywiZW5kTGluZSI6NDgsImVuZENoYXIiOjQ3LCJtZXNzYWdlIjoiTGlzdC12YWx1ZWQgZXhwcmVzc2lvbiB3YXMgZGVtb3RlZCB0byBhIHNpbmdsZXRvbi4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJ3YXJuaW5nIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IlRJUkZQcmVzY3JpYmVyRW5yb2xsbWVudFByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjo0OCwic3RhcnRDaGFyIjoxMzIsImVuZExpbmUiOjQ4LCJlbmRDaGFyIjoxMzYsIm1lc3NhZ2UiOiJMaXN0LXZhbHVlZCBleHByZXNzaW9uIHdhcyBkZW1vdGVkIHRvIGEgc2luZ2xldG9uLiIsImVycm9yVHlwZSI6InNlbWFudGljIiwiZXJyb3JTZXZlcml0eSI6Indhcm5pbmciLCJ0eXBlIjoiQ3FsVG9FbG1FcnJvciJ9XSwiaWRlbnRpZmllciI6eyJpZCI6IlRJUkZQcmVzY3JpYmVyRW5yb2xsbWVudFByZXBvcHVsYXRpb24iLCJ2ZXJzaW9uIjoiMC4xLjAifSwic2NoZW1hSWRlbnRpZmllciI6eyJpZCI6InVybjpobDctb3JnOmVsbSIsInZlcnNpb24iOiJyMSJ9LCJ1c2luZ3MiOnsiZGVmIjpbeyJsb2NhbElkZW50aWZpZXIiOiJTeXN0ZW0iLCJ1cmkiOiJ1cm46aGw3LW9yZzplbG0tdHlwZXM6cjEifSx7ImxvY2FsSWRlbnRpZmllciI6IkZISVIiLCJ1cmkiOiJodHRwOi8vaGw3Lm9yZy9maGlyIiwidmVyc2lvbiI6IjQuMC4wIn1dfSwiaW5jbHVkZXMiOnsiZGVmIjpbeyJsb2NhbElkZW50aWZpZXIiOiJGSElSSGVscGVycyIsInBhdGgiOiJGSElSSGVscGVycyIsInZlcnNpb24iOiI0LjAuMCJ9XX0sInBhcmFtZXRlcnMiOnsiZGVmIjpbeyJuYW1lIjoiZGV2aWNlX3JlcXVlc3QiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInBhcmFtZXRlclR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfURldmljZVJlcXVlc3QiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19LHsibmFtZSI6InNlcnZpY2VfcmVxdWVzdCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwicGFyYW1ldGVyVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9U2VydmljZVJlcXVlc3QiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19LHsibmFtZSI6Im1lZGljYXRpb25fcmVxdWVzdCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwicGFyYW1ldGVyVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TWVkaWNhdGlvblJlcXVlc3QiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0sImNvZGVTeXN0ZW1zIjp7ImRlZiI6W3sibmFtZSI6IklDRC0xMC1DTSIsImlkIjoiaHR0cDovL2hsNy5vcmcvZmhpci9zaWQvaWNkLTEwLWNtIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMifSx7Im5hbWUiOiJMT0lOQyIsImlkIjoiaHR0cDovL2xvaW5jLm9yZyIsImFjY2Vzc0xldmVsIjoiUHVibGljIn0seyJuYW1lIjoiU05PTUVELUNUIiwiaWQiOiJodHRwOi8vc25vbWVkLmluZm8vc2N0IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMifSx7Im5hbWUiOiJSWE5PUk0iLCJpZCI6Imh0dHA6Ly93d3cubmxtLm5paC5nb3YvcmVzZWFyY2gvdW1scy9yeG5vcm0iLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyJ9XX0sImNvZGVzIjp7ImRlZiI6W3sibmFtZSI6Ik9uY29sb2dpc3QiLCJpZCI6IjM5NDU5MjAwNCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiY29kZVN5c3RlbSI6eyJuYW1lIjoiU05PTUVELUNUIn19XX0sImNvbnRleHRzIjp7ImRlZiI6W3sibmFtZSI6IlBhdGllbnQifV19LCJzdGF0ZW1lbnRzIjp7ImRlZiI6W3sibmFtZSI6IlBhdGllbnQiLCJjb250ZXh0IjoiUGF0aWVudCIsImV4cHJlc3Npb24iOnsidHlwZSI6IlNpbmdsZXRvbkZyb20iLCJvcGVyYW5kIjp7ImRhdGFUeXBlIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UGF0aWVudCIsInR5cGUiOiJSZXRyaWV2ZSJ9fX0seyJuYW1lIjoiVG9kYXkiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiVG9kYXkifX0seyJuYW1lIjoiU2lnbmluZ1Byb3ZpZGVyUmVmZXJlbmNlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IkNvYWxlc2NlIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJyZWZlcmVuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InBlcmZvcm1lciIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiZGV2aWNlX3JlcXVlc3QiLCJ0eXBlIjoiUGFyYW1ldGVyUmVmIn19fX0seyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IiR0aGlzIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJwZXJmb3JtZXIiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InNlcnZpY2VfcmVxdWVzdCIsInR5cGUiOiJQYXJhbWV0ZXJSZWYifX19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6InJlZmVyZW5jZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoicmVmZXJlbmNlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19fV0sIndoZXJlIjp7InR5cGUiOiJOb3QiLCJvcGVyYW5kIjp7InR5cGUiOiJJc051bGwiLCJvcGVyYW5kIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX19LHsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJyZWZlcmVuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InJlcXVlc3RlciIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoibWVkaWNhdGlvbl9yZXF1ZXN0IiwidHlwZSI6IlBhcmFtZXRlclJlZiJ9fX19XX19LHsibmFtZSI6Ik9yZGVyaW5nUHJvdmlkZXIiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6InByYWN0aXRpb25lciIsImV4cHJlc3Npb24iOnsiZGF0YVR5cGUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1QcmFjdGl0aW9uZXIiLCJ0eXBlIjoiUmV0cmlldmUifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiUHJhY3RpdGlvbmVyLyIsInR5cGUiOiJMaXRlcmFsIn0seyJuYW1lIjoiVG9TdHJpbmciLCJsaWJyYXJ5TmFtZSI6IkZISVJIZWxwZXJzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sicGF0aCI6ImlkIiwic2NvcGUiOiJwcmFjdGl0aW9uZXIiLCJ0eXBlIjoiUHJvcGVydHkifV19XX0seyJuYW1lIjoiU2lnbmluZ1Byb3ZpZGVyUmVmZXJlbmNlIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifV19fX19LHsibmFtZSI6IlF1YWxpZmljYXRpb25zIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IlNpbmdsZXRvbkZyb20iLCJvcGVyYW5kIjp7InR5cGUiOiJUb0xpc3QiLCJvcGVyYW5kIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoiY29kZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJ0eXBlIjoiSW5kZXhlciIsIm9wZXJhbmQiOlt7InBhdGgiOiJjb2RpbmciLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImNvZGUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsidHlwZSI6IkluZGV4ZXIiLCJvcGVyYW5kIjpbeyJwYXRoIjoicXVhbGlmaWNhdGlvbiIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlciIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIiwidmFsdWUiOiIwIiwidHlwZSI6IkxpdGVyYWwifV19fX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLCJ2YWx1ZSI6IjAiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19fX19fSx7Im5hbWUiOiJDcmVkZW50aWFscyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJMaXN0IiwiZWxlbWVudCI6W3sibmFtZSI6IlF1YWxpZmljYXRpb25zIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifV19fSx7Im5hbWUiOiJQcmFjdGl0aW9uZXJSb2xlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IlNpbmdsZXRvbkZyb20iLCJvcGVyYW5kIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJwcm9sZSIsImV4cHJlc3Npb24iOnsiZGF0YVR5cGUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1QcmFjdGl0aW9uZXJSb2xlIiwidHlwZSI6IlJldHJpZXZlIn19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJyZWZlcmVuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InByYWN0aXRpb25lciIsInNjb3BlIjoicHJvbGUiLCJ0eXBlIjoiUHJvcGVydHkifX19LHsibmFtZSI6IlNpZ25pbmdQcm92aWRlclJlZmVyZW5jZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn1dfX19fSx7Im5hbWUiOiJTcGVjaWFsdHkiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoiY29kZXMiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IlRvQ29uY2VwdCIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InR5cGUiOiJJbmRleGVyIiwib3BlcmFuZCI6W3sicGF0aCI6InNwZWNpYWx0eSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiUHJhY3RpdGlvbmVyUm9sZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIiwidmFsdWUiOiIwIiwidHlwZSI6IkxpdGVyYWwifV19LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUNvZGVhYmxlQ29uY2VwdCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfX19LHsibmFtZSI6IlByZWZlcnJlZENvbW11bmljYXRpb24iLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTGlzdCIsImVsZW1lbnQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3lzdGVtIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InR5cGUiOiJTaW5nbGV0b25Gcm9tIiwib3BlcmFuZCI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoidGVsZWNvbSIsImV4cHJlc3Npb24iOnsicGF0aCI6InRlbGVjb20iLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6Ik9yZGVyaW5nUHJvdmlkZXIiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9fX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InJhbmsiLCJzY29wZSI6InRlbGVjb20iLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLCJ2YWx1ZSI6IjEiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19fX19XX19LHsibmFtZSI6Ik9yZ05hbWUiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiIkdGhpcyIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6Im9yZyIsImV4cHJlc3Npb24iOnsiZGF0YVR5cGUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Pcmdhbml6YXRpb24iLCJ0eXBlIjoiUmV0cmlldmUifX1dLCJyZWxhdGlvbnNoaXAiOltdfX1dLCJ3aGVyZSI6eyJ0eXBlIjoiTm90Iiwib3BlcmFuZCI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJwYXRoIjoibmFtZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoibmFtZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fX1dLCJ3aGVyZSI6eyJ0eXBlIjoiTm90Iiwib3BlcmFuZCI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX0sInJldHVybiI6eyJkaXN0aW5jdCI6ZmFsc2UsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19fSx7Im5hbWUiOiJNRCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsidHlwZSI6IlNpbmdsZXRvbkZyb20iLCJvcGVyYW5kIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJpZGVudGlmaWVyIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoiaWRlbnRpZmllciIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlciIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJFcXVhbCIsIm9wZXJhbmQiOlt7Im5hbWUiOiJUb1N0cmluZyIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJwYXRoIjoiY29kZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJ0eXBlIjoiSW5kZXhlciIsIm9wZXJhbmQiOlt7InBhdGgiOiJjb2RpbmciLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InR5cGUiLCJzY29wZSI6ImlkZW50aWZpZXIiLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLCJ2YWx1ZSI6IjAiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19XX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiTUQiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19fX19fSx7Im5hbWUiOiJWYWxpZFRJUkZDcmVkZW50aWFscyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJxdWFsaWZpY2F0aW9uIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoicXVhbGlmaWNhdGlvbiIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlciIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJBbmQiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IiR0aGlzIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJpZGVudGlmaWVyIiwic2NvcGUiOiJxdWFsaWZpY2F0aW9uIiwidHlwZSI6IlByb3BlcnR5In19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6InN5c3RlbSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoic3lzdGVtIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19fV0sIndoZXJlIjp7InR5cGUiOiJOb3QiLCJvcGVyYW5kIjp7InR5cGUiOiJJc051bGwiLCJvcGVyYW5kIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6Imh0dHA6Ly93d3cubmxtLm5paC5nb3YvcmVzZWFyY2gvdW1scy9yeG5vcm0iLCJ0eXBlIjoiTGl0ZXJhbCJ9XX0seyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IiR0aGlzIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJpZGVudGlmaWVyIiwic2NvcGUiOiJxdWFsaWZpY2F0aW9uIiwidHlwZSI6IlByb3BlcnR5In19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19LCJyZXR1cm4iOnsiZGlzdGluY3QiOmZhbHNlLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fX1dLCJ3aGVyZSI6eyJ0eXBlIjoiTm90Iiwib3BlcmFuZCI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX0sInJldHVybiI6eyJkaXN0aW5jdCI6ZmFsc2UsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19fSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiIxMjM3MDUxIiwidHlwZSI6IkxpdGVyYWwifV19XX19fSx7Im5hbWUiOiJUaGlyZFBhcnR5Q3JlZGVudGlhbHMiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InRleHQiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImNvZGUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsidHlwZSI6IkluZGV4ZXIiLCJvcGVyYW5kIjpbeyJuYW1lIjoiVmFsaWRUSVJGQ3JlZGVudGlhbHMiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIiwidmFsdWUiOiIwIiwidHlwZSI6IkxpdGVyYWwifV19fX19fSx7Im5hbWUiOiJUaGlyZFBhcnR5SXNzdWVyIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJkaXNwbGF5IiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJpc3N1ZXIiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsidHlwZSI6IkluZGV4ZXIiLCJvcGVyYW5kIjpbeyJuYW1lIjoiVmFsaWRUSVJGQ3JlZGVudGlhbHMiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIiwidmFsdWUiOiIwIiwidHlwZSI6IkxpdGVyYWwifV19fX19fV19fX0=" + } + ] + } \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/TIRF/R4/resources/Questionnaire-R4-Prescriber-Knowledge-Assessment-TIRF.json b/src/cds-library/CRD-DTR/TIRF/R4/resources/Questionnaire-R4-Prescriber-Knowledge-Assessment-TIRF.json new file mode 100644 index 00000000..600bca2e --- /dev/null +++ b/src/cds-library/CRD-DTR/TIRF/R4/resources/Questionnaire-R4-Prescriber-Knowledge-Assessment-TIRF.json @@ -0,0 +1,378 @@ +{ + "resourceType": "Questionnaire", + "id": "TIRFPrescriberKnowledgeAssessment", + "name": "TIRFPrescriberKnowledgeAssessment", + "title": "TIRF REMS Prescriber Knowledge Assessment", + "status": "draft", + "subjectType": [ + "Prescriber" + ], + "date": "2022-05-28", + "publisher": "FDA-REMS", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicPractitionerInfo-prepopulation" + } + ], + "item": [ + { + "linkId": "1", + "type": "group", + "text": "Prescriber Information", + "item": [ + { + "linkId": "1.1", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/practitioner-info-base" + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire-expand", + "valueBoolean": true + } + ], + "type": "display" + }, + { + "linkId": "1.2", + "text": "Address", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Line" + } + } + ] + }, + { + "linkId": "1.3", + "text": "City", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".City" + } + } + ] + }, + { + "linkId": "1.4", + "text": "State", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".State" + } + } + ] + }, + { + "linkId": "1.5", + "text": "Zip", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Zip" + } + } + ] + }, + { + "linkId": "1.6", + "text": "Phone", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Phone" + } + } + ] + }, + { + "linkId": "1.7", + "text": "Ext", + "type": "string", + "required": false + }, + { + "linkId": "1.8", + "text": "Fax", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Fax" + } + } + ] + }, + { + "linkId": "1.9", + "text": "Email Address", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Email" + } + } + ] + } + ] + }, + { + "linkId": "2", + "type": "group", + "text": "Knowledge Assessment", + "item": [ + { + "linkId": "2.1.1", + "type": "choice", + "text": "1. The patients described are all experiencing breakthrough cancer pain, but ONE is not an appropriate patient for a TIRF medicine. Which patient should not receive a TIRF medicine? Select one option", + "answerOption": [ + { + "valueString": "12-year-old sarcoma patient, using transdermal fentanyl for her underlying persistent cancer pain" + }, + { + "valueString": "Adult female with advanced breast cancer; on 60 mg of oral morphine daily for the past 4 weeks" + }, + { + "valueString": "Adult male with advanced lung cancer, his underlying persistent pain is managed with 25 mcg/hour transdermal fentanyl patches for the past 3 months" + }, + { + "valueString": "Adult male with multiple myeloma who has bone pain currently managed with 50 mg oral oxymorphone daily for the last 2 weeks" + } + ] + }, + { + "linkId": "2.1.2", + "type": "choice", + "text": "2. The patients described are experiencing breakthrough cancer pain. A TIRF medicine is NOT appropriate for one of them. Which patient should not receive a TIRF medicine? Select one option", + "answerOption": [ + { + "valueString": "Adult male with advanced lung cancer; underlying persistent cancer pain managed with 25 mcg/hour transdermal fentanyl patches for the past 2 months" + }, + { + "valueString": "Adult female with localized breast cancer; just completed a mastectomy and reconstructive surgery; persistent cancer pain managed with 30 mg oral morphine daily for the past 6 weeks" + }, + { + "valueString": "Adult male patient with advanced prostate cancer who, over the last 2 weeks, has been prescribed 100 mg oral morphine daily for pain due to bone metastasis" + }, + { + "valueString": "Adult female with advanced sarcoma who has been taking a daily dose of 12 mg oral hydromorphone for the last 3 weeks" + } + ] + }, + { + "linkId": "2.1.3", + "type": "choice", + "text": "3. Certain factors may increase the risk of abuse and/or diversion of opioid medications. Which of the following is most accurate? Select one option", + "answerOption": [ + { + "valueString": "A history of alcohol abuse with the patient or close family members" + }, + { + "valueString": "The patient has a household member with a street drug abuse problem" + }, + { + "valueString": "The patient has a history of prescription drug misuse" + }, + { + "valueString": "All of the above" + } + ] + }, + { + "linkId": "2.1.4", + "type": "choice", + "text": "4. A patient is already taking a TIRF medicine but wants to change their medicine. His/her doctor decides to prescribe a different TIRF medicine (that is not a bioequivalent generic version of a branded product) in its place. How should the prescriber proceed? Select one option", + "answerOption": [ + { + "valueString": "The prescriber can safely convert to the equivalent dosage of the new TIRF medicine as it has the same effect as other TIRF medicines" + }, + { + "valueString": "The prescriber must not convert from the first TIRF medicine dose to another TIRF medicine at the equivalent dose. The different TIRF medicines have different absorption and bioavailability profiles, and conversion to an equivalent dose of a second TIRF product could result in a fentanyl overdose" + }, + { + "valueString": "Convert from the other TIRF medicine to the new TIRF medicine at half of the dose" + }, + { + "valueString": "The prescriber should base the starting dose of the newly prescribed TIRF medicine on the dose of the opioid medicine used for their underlying persistent cancer pain" + } + ] + }, + { + "linkId": "2.1.5", + "type": "choice", + "text": "5. A patient is starting titration with a TIRF medicine. What dose must they start with? Select one option", + "answerOption": [ + { + "valueString": "An appropriate dose based on the dose of the opioid medicine used for underlying persistent cancer pain" + }, + { + "valueString": "The dose that the prescriber believes is appropriate based on their clinical experience" + }, + { + "valueString": "The lowest available dose, unless individual product Prescribing Information provides product-specific guidance" + }, + { + "valueString": "The median available dose" + } + ] + }, + { + "linkId": "2.1.6", + "type": "choice", + "text": "6. A prescriber has started titrating a patient with the lowest dose of a TIRF medicine. However, after 30 minutes, the breakthrough cancer pain has not been sufficiently relieved. What should they advise the patient to do? Select one option", + "answerOption": [ + { + "valueString": "Take another (identical) dose of the TIRF medicine immediately" + }, + { + "valueString": "Take a dose of an alternative rescue medicine" + }, + { + "valueString": "Provide guidance based on the product-specific Prescribing Information because the instructions are not the same for all TIRF medicines" + }, + { + "valueString": "Double the dose and take immediately" + } + ] + }, + { + "linkId": "2.1.7", + "type": "choice", + "text": "7. A patient is taking a TIRF medicine and the doctor would like to prescribe erythromycin, a CYP3A4 inhibitor. Which of the following statements is TRUE? Select one option", + "answerOption": [ + { + "valueString": "The patient can’t be prescribed erythromycin, because using it at the same time as a TIRF medicine could be fatal" + }, + { + "valueString": "Use of a TIRF medicine with a CYP3A4 inhibitor may require dosage adjustment of the TIRF medicine; carefully monitor the patient for opioid toxicity, otherwise such use may cause serious life threatening, and/or fatal respiratory depression" + }, + { + "valueString": "There is no possible drug interaction between CYP3A4 inhibitors and TIRF medicines" + }, + { + "valueString": "The dose of the TIRF medicine must be reduced by one half if a CYP3A4 inhibitor is prescribed in the same patient" + } + ] + }, + { + "linkId": "2.1.8", + "type": "choice", + "text": "8. Before initiating treatment with a TIRF medicine, prescribers must review the Medication Guide and Patient Counseling Guide with the patient. Which of the following counseling statements is FALSE? Select one option", + "answerOption": [ + { + "valueString": "TIRF medicines contain fentanyl in an amount that could be fatal to children of all ages, in individuals for whom they were not prescribed, and in those who are not opioid tolerant" + }, + { + "valueString": "Inform patients that TIRF medicines must not be used to treat acute or postoperative pain, including headache/migraine, dental pain or acute pain in the emergency department" + }, + { + "valueString": "Instruct patients that, if they stop taking their around-the-clock opioid medicine, they can continue to take their TIRF medicine" + }, + { + "valueString": "Instruct patients to never share their TIRF medicine with anyone else, even if that person has the same symptoms" + } + ] + }, + { + "linkId": "2.1.9", + "type": "choice", + "text": "9. There is a risk of fatal overdose with inappropriate use of TIRF medicines. Which one of the following answers is most accurate? Select one option", + "answerOption": [ + { + "valueString": "TIRF medicines can be fatal if taken by children" + }, + { + "valueString": "TIRF medicines can be fatal if taken by anyone for whom it is not prescribed" + }, + { + "valueString": "TIRF medicines can be fatal if taken by anyone who is not opioid-tolerant" + }, + { + "valueString": "All of the above" + } + ] + }, + { + "linkId": "2.1.10", + "type": "choice", + "text": "10. Which one of the following statements is most accurate regarding the safe storage and disposal of TIRF medicines? Select one option", + "answerOption": [ + { + "valueString": "TIRF medicines should be kept in in a safe and secure place, out of sight and out of reach of all others, especially children" + }, + { + "valueString": "TIRF medicines should be protected from theft" + }, + { + "valueString": "Dispose of partially used or unneeded TIRF medicine by following the TIRF medicine-specific procedure specified in the Medication Guide" + }, + { + "valueString": "All of the above" + } + ] + }, + { + "linkId": "2.1.11", + "type": "choice", + "text": "11. Which of the following statements is FALSE? Select one option", + "answerOption": [ + { + "valueString": "The TIRF REMS mitigates the risk of overdose by: Educating prescribers, pharmacist and patients that respiratory depression is more common in patients who are not opioid tolerant" + }, + { + "valueString": "The TIRF REMS mitigates the risk of overdose by: Requiring that patients remain opioid-tolerant throughout their treatment with TIRF medicines" + }, + { + "valueString": "The TIRF REMS mitigates the risk of overdose by: Requiring inpatient pharmacies to verify opioid tolerance in inpatients who require TIRF medicine while hospitalized" + }, + { + "valueString": "The TIRF REMS mitigates the risk of overdose by: Requiring documentation of opioid tolerance with only the initial prescription of a TIRF medicine" + } + ] + }, + { + "linkId": "2.2", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/provider-signature" + } + ], + "type": "display" + } + ] + } + ] +} diff --git a/src/cds-library/CRD-DTR/TIRF/R4/resources/Questionnaire-R4-PrescriberEnrollment-TIRF.json b/src/cds-library/CRD-DTR/TIRF/R4/resources/Questionnaire-R4-PrescriberEnrollment-TIRF.json new file mode 100644 index 00000000..5bd192ca --- /dev/null +++ b/src/cds-library/CRD-DTR/TIRF/R4/resources/Questionnaire-R4-PrescriberEnrollment-TIRF.json @@ -0,0 +1,425 @@ +{ + "resourceType": "Questionnaire", + "id": "TIRFPrescriberEnrollmentForm", + "name": "TIRFPrescriberEnrollmentForm", + "title": "TIRF REMS Prescriber Enrollment Form", + "status": "draft", + "subjectType": [ + "Practitioner" + ], + "date": "2022-05-28", + "publisher": "FDA-REMS", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/TIRFPrescriberEnrollment-prepopulation" + } + ], + "item": [ + { + "linkId": "1", + "type": "group", + "text": "Prescriber Information", + "item": [ + { + "linkId": "1.1", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/practitioner-info-base" + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire-expand", + "valueBoolean": true + } + ], + "type": "display" + }, + { + "linkId": "1.2", + "text": "Clinic/Practice Name", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TIRFPrescriberEnrollmentPrepopulation\".OrgName" + } + } + ] + }, + { + "linkId": "1.3", + "text": "Specialty", + "type": "open-choice", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TIRFPrescriberEnrollmentPrepopulation\".Specialty" + } + } + ] + }, + { + "linkId": "1.4", + "text": "Credentials", + "type": "open-choice", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TIRFPrescriberEnrollmentPrepopulation\".Credentials" + } + } + ], + "answerOption": [ + { + "valueCoding": { + "code": "MD", + "system": "http://terminology.hl7.org/CodeSystem/v2-0360|2.7", + "display": "MD" + } + }, + { + "valueCoding": { + "code": "NP", + "system": "http://terminology.hl7.org/CodeSystem/v2-0360|2.7", + "display": "NP" + } + }, + { + "valueCoding": { + "code": "PA", + "system": "http://terminology.hl7.org/CodeSystem/v2-0360|2.7", + "display": "PA" + } + }, + { + "valueCoding": { + "code": "DO", + "system": "http://terminology.hl7.org/CodeSystem/v2-0360|2.7", + "display": "DO" + } + }, + { + "valueCoding": { + "code": "Other", + "display": "Other" + } + } + ] + }, + { + "linkId": "1.5", + "text": "Address", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Line" + } + } + ] + }, + { + "linkId": "1.6", + "text": "City", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".City" + } + } + ] + }, + { + "linkId": "1.7", + "text": "State", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".State" + } + } + ] + }, + { + "linkId": "1.8", + "text": "Zip", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Zip" + } + } + ] + }, + { + "linkId": "1.9", + "text": "Phone", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Phone" + } + } + ] + }, + { + "linkId": "1.10", + "text": "Ext", + "type": "string", + "required": false + }, + { + "linkId": "1.11", + "text": "Fax", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Fax" + } + } + ] + }, + { + "linkId": "1.12", + "text": "Email Address", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Email" + } + } + ] + }, + { + "linkId": "1.13", + "text": "Preferred Time of Contact", + "type": "choice", + "required": false, + "answerOption": [ + { + "valueString": "Morning" + }, + { + "valueString": "Afternoon" + }, + { + "valueString": "Evening" + } + ] + }, + { + "linkId": "1.14", + "text": "Preferred Method of Contact", + "type": "open-choice", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TIRFPrescriberEnrollmentPrepopulation\".PreferredCommunication" + } + } + ], + "answerOption": [ + { + "valueCoding": { + "code": "sms", + "system": "http://hl7.org/fhir/contact-point-system", + "display": "Text to Mobile #" + } + }, + { + "valueCoding": { + "code": "email", + "system": "http://hl7.org/fhir/contact-point-system", + "display": "Email" + } + }, + { + "valueCoding": { + "code": "phone", + "system": "http://hl7.org/fhir/contact-point-system", + "display": "Phone Call" + } + } + ] + } + ] + }, + { + "linkId": "2", + "type": "group", + "text": "Office Contact Information", + "item": [ + { + "linkId": "2.1", + "text": "First and Last Name", + "type": "string", + "required": false + }, + { + "linkId": "2.2", + "text": "Phone", + "type": "string", + "required": false + }, + { + "linkId": "2.3", + "text": "Fax", + "type": "string", + "required": false + }, + { + "linkId": "2.4", + "text": "Email Address", + "type": "string", + "required": false + }, + { + "linkId": "2.5", + "text": "Preferred Time of Contact", + "type": "choice", + "required": false, + "answerOption": [ + { + "valueString": "Morning" + }, + { + "valueString": "Afternoon" + }, + { + "valueString": "Evening" + } + ] + }, + { + "linkId": "2.6", + "text": "Preferred Method of Contact", + "type": "choice", + "required": false, + "answerOption": [ + { + "valueCoding": { + "code": "sms", + "system": "http://hl7.org/fhir/contact-point-system", + "display": "Text to Mobile #" + } + }, + { + "valueCoding": { + "code": "email", + "system": "http://hl7.org/fhir/contact-point-system", + "display": "Email" + } + }, + { + "valueCoding": { + "code": "phone", + "system": "http://hl7.org/fhir/contact-point-system", + "display": "Phone Call" + } + } + ] + } + ] + }, + { + "linkId": "3", + "type": "group", + "text": "Prescriber Certification (if applicable)", + "item": [ + { + "linkId": "3.1", + "text": "Prescriber Certification Type", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TIRFPrescriberEnrollmentPrepopulation\".ThirdPartyCredentials" + } + } + ] + }, + { + "linkId": "3.2", + "text": "Prescriber Certification Issuer", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TIRFPrescriberEnrollmentPrepopulation\".ThirdPartyIssuer" + } + } + ] + } + ] + }, + { + "linkId": "4", + "type": "group", + "text": "Prescriber Attestation", + "item": [ + { + "linkId": "4.1", + "text": "By signing below, you attest to the following: I have: • Reviewed each drug's Prescribing Information • Reviewed the Prescriber Education • Successfully completed the Prescriber Knowledge Assessment and submitted it to the REMS. Before treatment initiation, I must: • Assess the patient for risk factors of opioid addition, abuse, and misuse including personal and family history of substance abuse or mental illness • Counsel the patient on the safe use of TIRF medicines using the Medication Guide for the prescribed TIRF medicine and the Patient Counseling Guide • Provide a copy of the materials to the patient • Assess the patient's opioid tolerance • Document the patient's opioid tolerance using the Patient Enrollment Form and submit to the REMS • Enroll the patient by completing and submitting the Patient Enrollment Form to the TIRF REMS. During treatment, and before each prescription, I must: • Assess the patient's health status for opioid tolerance, appropriateness of dose, misuse, abuse, addiction, and overdose • Document and submit this information to the REMS using the Patient Status and Opioid Tolerance Form. During treatment, every 2 years, I must: • Counsel the patient on the safe use of TIRF medicines using the Medication Guide for the prescribed TIRF medicine, and the Patient Counseling Guide • Provide a copy of the materials to the patient • Re-enroll the patient in the REMS by completing the Patient Enrollment Form and submitting it to the REMS. Before treatment re-initiation, after a lapse in treatment of 6 months or longer, I must: • Counsel the Patient on the safe use of TIRF medicines using the Medication Guide for the prescribed TIRF medicine and the Patient Counseling Guide • Provide a copy of the materials to the patient. At all times, I must: • Counsel the patient using the Medication Guide for any new TIRF medicine not previously prescribed and provide a copy to the patient • Report serious adverse events of accidental exposure, misuse, abuse, addiction, and overdose to the REMS using the Adverse Events of Special Interest Reporting Form • Report treatment discontinuation to the REMS using the Patient Discontinuation Form. To maintain certification to prescribe, every 2 years, I must: • Review each drug's Prescribing Information • Review the Prescriber Education • Successfully complete the Prescriber Knowledge Assessment and submit it to the REMS • Re-enroll in the REMS by completing the Prescriber Enrollment Form", + "type": "display", + "readOnly": true + }, + { + "linkId": "4.2", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/provider-signature" + } + ], + "type": "display" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/TIRF/R4/resources/Questionnaire-R4-TIRF.json b/src/cds-library/CRD-DTR/TIRF/R4/resources/Questionnaire-R4-TIRF.json new file mode 100644 index 00000000..2afb8463 --- /dev/null +++ b/src/cds-library/CRD-DTR/TIRF/R4/resources/Questionnaire-R4-TIRF.json @@ -0,0 +1,814 @@ +{ + "resourceType": "Questionnaire", + "id": "TIRFRemsPatientEnrollment", + "name": "TIRFRemsPatientEnrollment", + "title": "TIRF Rems Patient Enrollment", + "status": "draft", + "subjectType": [ + "Patient" + ], + "date": "2020-05-20", + "publisher": "Da Vinci DTR", + "item": [ + { + "linkId": "1", + "type": "group", + "text": "Patient Information", + "item": [ + { + "linkId": "1.1", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/patient-info-base" + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire-expand", + "valueBoolean": true + } + ], + "type": "display" + }, + { + "linkId": "1.2", + "text": "Race", + "type": "open-choice", + "required": false, + "repeats": true, + "answerOption": [ + { + "valueCoding": { + "code": "White", + "display": "White" + } + }, + { + "valueCoding": { + "code": "Asian", + "display": "Asian" + } + }, + { + "valueCoding": { + "code": "Black or African American", + "display": "Black or African American" + } + }, + { + "valueCoding": { + "code": "American Indian or Alaskan Native", + "display": "American Indian or Alaskan Native" + } + }, + { + "valueCoding": { + "code": "Native Hawaiian or Other Pacific Islander", + "display": "Native Hawaiian or Other Pacific Islander" + } + } + ] + }, + { + "linkId": "1.3", + "text": "Ethnicity", + "type": "group", + "required": true, + "item": [ + { + "linkId": "1.3.1", + "text": "Are you Hispanic or Latino?", + "type": "boolean" + } + ] + }, + { + "linkId": "1.4", + "text": "Address", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".Line" + } + } + ] + }, + { + "linkId": "1.5", + "text": "City", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".City" + } + } + ] + }, + { + "linkId": "1.6", + "text": "State", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".State" + } + } + ] + }, + { + "linkId": "1.7", + "text": "Zip", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".Zip" + } + } + ] + }, + { + "linkId": "1.8", + "text": "Phone", + "type": "string", + "required": true + }, + { + "linkId": "1.9", + "text": "Email Address", + "type": "string", + "required": true + }, + { + "linkId": "1.10", + "text": "Preferred Time of Contact", + "type": "choice", + "required": true, + "answerOption": [ + { + "valueString": "Morning" + }, + { + "valueString": "Afternoon" + }, + { + "valueString": "Evening" + } + ] + }, + { + "linkId": "1.11", + "text": "Preferred Method of Contact", + "type": "choice", + "required": true, + "answerOption": [ + { + "valueCoding": { + "code": "sms", + "system": "http://hl7.org/fhir/contact-point-system", + "display": "Text to Mobile #" + } + }, + { + "valueCoding": { + "code": "email", + "system": "http://hl7.org/fhir/contact-point-system", + "display": "Email" + } + }, + { + "valueCoding": { + "code": "phone", + "system": "http://hl7.org/fhir/contact-point-system", + "display": "Phone Call" + } + }, + { + "valueCoding": { + "code": "other", + "system": "http://hl7.org/fhir/ValueSet/contact-point-system", + "display": "Postal Mail" + } + } + ] + }, + { + "linkId": "1.12", + "text": "Is there a child in the home or are you a caregiver of small children?", + "type": "boolean", + "required": true + }, + { + "linkId": "1.13", + "text": "Do you have a safe and secure place to store your medicine?", + "type": "boolean", + "required": true + } + ] + }, + { + "linkId": "2", + "type": "group", + "text": "Patient Representative (if required)", + "item": [ + { + "linkId": "2.1", + "text": "First Name", + "type": "string", + "required": true + }, + { + "linkId": "2.2", + "text": "Last Name", + "type": "string", + "required": true + }, + { + "linkId": "2.3", + "text": "Relationship to Patient", + "type": "string", + "required": true + }, + { + "linkId": "2.4", + "text": "Phone", + "type": "string", + "required": true + }, + { + "linkId": "2.5", + "text": "Email Address", + "type": "string", + "required": true + } + ] + }, + { + "linkId": "3", + "type": "group", + "text": "Patient Attestation", + "item": [ + { + "linkId": "3.1", + "text": "TIRF Medicines can cause your breathing to stop - which can lead to death. Safety Rules for TIRF Medicines You have agreed to take a TIRF Medicine and to follow all the safety rules to make it less likely you or others will experience serious harm • My healthcare provider has talked to me about the safe use of TIRF medicines using the Medication Guide and Patient Counseling Guide • I will only use this medicine if I am regularly using another opioid, around-the-clock, for constant pain • If I stop taking my around-the-clock-opioid pain medicine, I MUST stop taking my TIRF medicine • I will never share or give my TIRF medicine to anyone else, even if they have the same symptoms • My TIRF medicine could cause harm to others or even death. A dose that is okay for me could cause an overdose and death for someone else • I will store my TIRF medicine in a safe and secure place away from children. I understand that accidental use by a child, or anyone for whom the medicine was not prescribed, can cause death • I have been told how to properly dispose of my partially used or unneeded TIRF medicine remaining from my prescription. I will dispose of my TIRF medicine properly as soon as I no longer need it • I will contact my healthcare provider if my TIRF medicine does not relieve my pain. I will not change the dose of my TIRF medicine myself or take it more often than my healthcare provider has directed • I must enroll in the TIRF REMS and Patient Registry by completing the Patient Enrollment Form with my healthcare provider • I understand that the TIRF REMS and its agents may use and share my personal information to manage the program, and that information about patients who get TIRF medicines will be stored in a private and secure database. My health information may be shared with the U.S. Food and Drug Administration (FDA) to evaluate the TIRF REMS. However, my name will not be shared • I give permission for the TIRF REMS and its agents or vendors to contact me by phone, mail, or email to support the administration of the TIRF REMS Program • I will tell my healthcare provider if I, or anyone else, experience an adverse event of accidental exposure, abuse, misuse, addiction, and overdose • I will re-enroll in the TIRF REMS by completing the Patient Enrollment Form with my healthcare provider every two years during treatment.", + "type": "display", + "readOnly": true + }, + { + "linkId": "3.2", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/patient-signature" + } + ], + "type": "display" + } + ] + }, + { + "linkId": "4", + "type": "group", + "text": "Prescriber Information", + "item": [ + { + "linkId": "4.1", + "text": "First Name", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".FirstName" + } + } + ] + }, + { + "linkId": "4.2", + "text": "Last Name", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".LastName" + } + } + ] + }, + { + "linkId": "4.3", + "text": "Address", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Line" + } + } + ] + }, + { + "linkId": "4.4", + "text": "City", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".City" + } + } + ] + }, + { + "linkId": "4.5", + "text": "State", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".State" + } + } + ] + }, + { + "linkId": "4.6", + "text": "Zip", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Zip" + } + } + ] + }, + { + "linkId": "4.7", + "text": "Phone", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Phone" + } + } + ] + }, + { + "linkId": "4.8", + "text": "Fax", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Fax" + } + } + ] + }, + { + "linkId": "4.9", + "text": "Individual NPI #", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".NPI" + } + } + ] + }, + { + "linkId": "4.10", + "text": "Email Address", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Email" + } + } + ] + } + ] + }, + { + "linkId": "5", + "type": "group", + "text": "Medical Information", + "item": [ + { + "linkId": "5.1", + "text": "Prior TIRF Use within the last 6 months", + "type": "boolean", + "required": true + }, + { + "linkId": "5.2", + "text": "TIRF Product Name", + "type": "string", + "required": true + }, + { + "linkId": "5.3", + "text": "Strength", + "type": "string", + "required": true + }, + { + "linkId": "5.4", + "text": "Dose", + "type": "string", + "required": true + }, + { + "linkId": "5.5", + "text": "Frequency", + "type": "string", + "required": true + }, + { + "linkId": "5.6", + "text": "Type of Pain", + "type": "choice", + "required": true, + "answerOption": [ + { + "valueCoding": { + "code": "Cancer", + "display": "Cancer" + } + }, + { + "valueCoding": { + "code": "Non-cancer Pain", + "display": "Non-cancer Pain" + } + } + ] + } + ] + }, + { + "linkId": "6", + "type": "group", + "text": "Verify Opioid Tolerance", + "required": true, + "item": [ + { + "linkId": "6.1", + "type": "group", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "item": [ + { + "linkId": "6.1.1", + "text": "Moiety", + "type": "string", + "required": true + }, + { + "linkId": "6.1.2", + "text": "Formulation", + "type": "string", + "required": true + }, + { + "linkId": "6.1.3", + "text": "Strength", + "type": "string", + "required": true + }, + { + "linkId": "6.1.4", + "text": "Route", + "type": "string", + "required": true + }, + { + "linkId": "6.1.5", + "text": "Dose", + "type": "string", + "required": true + }, + { + "linkId": "6.1.6", + "text": "Frequency", + "type": "string", + "required": true + } + ] + }, + { + "linkId": "6.2", + "type": "group", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "item": [ + { + "linkId": "6.2.1", + "text": "Moiety", + "type": "string" + }, + { + "linkId": "6.2.2", + "text": "Formulation", + "type": "string" + }, + { + "linkId": "6.2.3", + "text": "Strength", + "type": "string" + }, + { + "linkId": "6.2.4", + "text": "Route", + "type": "string" + }, + { + "linkId": "6.2.5", + "text": "Dose", + "type": "string" + }, + { + "linkId": "6.2.6", + "text": "Frequency", + "type": "string" + } + ] + }, + { + "linkId": "6.3", + "type": "group", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "item": [ + { + "linkId": "6.3.1", + "text": "Moiety", + "type": "string" + }, + { + "linkId": "6.3.2", + "text": "Formulation", + "type": "string" + }, + { + "linkId": "6.3.3", + "text": "Strength", + "type": "string" + }, + { + "linkId": "6.3.4", + "text": "Route", + "type": "string" + }, + { + "linkId": "6.3.5", + "text": "Dose", + "type": "string" + }, + { + "linkId": "6.3.6", + "text": "Frequency", + "type": "string" + } + ] + }, + { + "linkId": "6.4", + "text": "Patients must remain on around-the-clock opioids while taking a TIRF medicine. This patient is opioid tolerant because he/she is currently prescribed (exclusive of a TIRF medicine) one or more of the following opioid regimens daily and has been prescribed this regimen(s) for one week or longer (check all that apply)", + "type": "choice", + "required": true, + "repeats": true, + "answerOption": [ + { + "valueCoding": { + "code": "≥ 60 mg oral morphine/day", + "display": "≥ 60 mg oral morphine/day" + } + }, + { + "valueCoding": { + "code": "≥ 25 micrograms transdermal fentanyl/hour", + "display": "≥ 25 micrograms transdermal fentanyl/hour" + } + }, + { + "valueCoding": { + "code": "≥ 30 mg oral oxycodone/day", + "display": "≥ 30 mg oral oxycodone/day" + } + }, + { + "valueCoding": { + "code": "≥ 8 mg oral hydromorphone/day", + "display": "≥ 8 mg oral hydromorphone/day" + } + }, + { + "valueCoding": { + "code": "≥ 25 mg oral oxymorphone/day", + "display": "≥ 25 mg oral oxymorphone/day" + } + }, + { + "valueCoding": { + "code": "≥ 60 mg oral hydrocodone/day", + "display": "≥ 60 mg oral hydrocodone/day" + } + }, + { + "valueCoding": { + "code": "an equianalgesic dose of another opioid", + "display": "an equianalgesic dose of another opioid" + } + } + ] + } + ] + }, + { + "linkId": "7", + "type": "group", + "text": "Concomitant Medications", + "item": [ + { + "linkId": "7.1", + "text": "Concomitant Medications (check all that apply)", + "type": "choice", + "required": true, + "repeats": true, + "answerOption": [ + { + "valueCoding": { + "code": "Benzodiazepines", + "display": "Benzodiazepines" + } + }, + { + "valueCoding": { + "code": "Gabapentinoids", + "display": "Gabapentinoids" + } + }, + { + "valueCoding": { + "code": "Sedative Hypnotics", + "display": "Sedative Hypnotics" + } + }, + { + "valueCoding": { + "code": "Tranquilizers", + "display": "Tranquilizers" + } + }, + { + "valueCoding": { + "code": "Muscle Relaxants", + "display": "Muscle Relaxants" + } + }, + { + "valueCoding": { + "code": "Barbiturates", + "display": "Barbiturates" + } + }, + { + "valueCoding": { + "code": "Antipsychotics", + "display": "Antipsychotics" + } + }, + { + "valueCoding": { + "code": "Sodium Oxybate", + "display": "Sodium Oxybate" + } + }, + { + "valueCoding": { + "code": "Alcohol", + "display": "Alcohol" + } + }, + { + "valueCoding": { + "code": "Prescription Cannabinoids", + "display": "Prescription Cannabinoids" + } + }, + { + "valueCoding": { + "code": "Prescription Insomnia Medications", + "display": "Prescription Insomnia Medications" + } + }, + { + "valueCoding": { + "code": "Other CNS depressant", + "display": "Other CNS depressant" + } + }, + { + "valueCoding": { + "code": "None", + "display": "None" + } + } + ] + }, + { + "linkId": "7.2", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/provider-signature" + } + ], + "type": "display" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/TIRF/TopicMetadata.json b/src/cds-library/CRD-DTR/TIRF/TopicMetadata.json new file mode 100644 index 00000000..700f4061 --- /dev/null +++ b/src/cds-library/CRD-DTR/TIRF/TopicMetadata.json @@ -0,0 +1,17 @@ +{ + "topic": "TIRF", + "payers": [ + "cms" + ], + "mappings": [ + { + "codeSystem": "rxnorm", + "codes":[ + "1237051" + ] + } + ], + "fhirVersions": [ + "R4" + ] +} diff --git a/src/cds-library/CRD-DTR/Turalio/R4/files/TuralioPrepopulation-0.1.0.cql b/src/cds-library/CRD-DTR/Turalio/R4/files/TuralioPrepopulation-0.1.0.cql new file mode 100644 index 00000000..eae93b82 --- /dev/null +++ b/src/cds-library/CRD-DTR/Turalio/R4/files/TuralioPrepopulation-0.1.0.cql @@ -0,0 +1,130 @@ +library TuralioPrepopulation version '0.1.0' +using FHIR version '4.0.0' +include FHIRHelpers version '4.0.0' called FHIRHelpers +include CDS_Connect_Commons_for_FHIRv400 version '1.0.2' called CDS +include DTRHelpers version '0.1.0' called DTR + +codesystem "ICD-10-CM": 'http://hl7.org/fhir/sid/icd-10-cm' +codesystem "LOINC": 'http://loinc.org' +codesystem "SNOMED-CT": 'http://snomed.info/sct' +codesystem "RXNORM": 'http://www.nlm.nih.gov/research/umls/rxnorm' + + +valueset "HepaticMedicalHistory": 'https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.198' +valueset "TuralioValueSet": 'https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.197' + +code "29463-7": '29463-7' from "LOINC" +code "2183102": '2183102' from "RXNORM" +code "AST": '1920-8' from "LOINC" +code "ALT": '1742-6' from "LOINC" +code "GGT": '2324-2' from "LOINC" +code "TotalBilirubin": '1975-2' from "LOINC" +code "DirectBilirubin": '1968-7' from "LOINC" +code "ALP": '13874-3' from "LOINC" +code "Albumin": '1751-7' from "LOINC" +code "PT": '5902-2' from "LOINC" + +parameter medication_request MedicationRequest +parameter medication_dispense MedicationDispense + +context Patient + +// get observations +define "WeightList": [Observation: "29463-7"] +define "LatestWeight": CDS.MostRecent(CDS.WithUnit(CDS.Verified("WeightList"),'mg')) +define "LatestWeightResult": DTR.GetObservationValue("LatestWeight") + +define "Turalio": [MedicationStatement: "TuralioValueSet"] +define "TakingTuralio": exists("Turalio") +define "TuralioDate": + if "TakingTuralio" + then First("Turalio").effective.value + else + null + +define "LatestAST": CDS.MostRecent(CDS.WithUnit(CDS.Verified([Observation: "AST"]), 'U/L')) +define "ASTResult": (convert DTR.GetObservationValue("LatestAST") to String) + ' U/L' +define "ASTDate": + if exists("LatestAST") + then "LatestAST".issued.value + else + null + +define "LatestALT": CDS.MostRecent(CDS.WithUnit(CDS.Verified([Observation: "ALT"]), 'U/L')) +define "ALTResult": (convert DTR.GetObservationValue("LatestALT") to String) + ' U/L' +define "ALTDate": + if exists("LatestALT") + then "LatestALT".issued.value + else + null + +define "LatestGGT": CDS.MostRecent(CDS.WithUnit(CDS.Verified([Observation: "GGT"]), 'U/L')) +define "GGTResult": (convert DTR.GetObservationValue("LatestGGT") to String) + ' U/L' +define "GGTDate": + if exists("LatestGGT") + then "LatestGGT".issued.value + else + null + +define "LatestTotalBilirubin": CDS.MostRecent(CDS.WithUnit(CDS.Verified([Observation: "TotalBilirubin"]), 'mg/dL')) +define "TotalBilirubinResult": (convert DTR.GetObservationValue("LatestTotalBilirubin") to String) + ' mg/dL' +define "TotalBilirubinDate": + if exists("LatestTotalBilirubin") + then "LatestTotalBilirubin".issued.value + else + null + +define "LatestDirectBilirubin": CDS.MostRecent(CDS.WithUnit(CDS.Verified([Observation: "DirectBilirubin"]), 'mg/dL')) +define "DirectBilirubinResult": (convert DTR.GetObservationValue("LatestDirectBilirubin") to String) + ' mg/dL' +define "DirectBilirubinDate": + if exists("LatestDirectBilirubin") + then "LatestDirectBilirubin".issued.value + else + null + +define "LatestALP": CDS.MostRecent(CDS.WithUnit(CDS.Verified([Observation: "ALP"]), 'U/L')) +define "ALPResult": (convert DTR.GetObservationValue("LatestALP") to String) + ' U/L' +define "ALPDate": + if exists("LatestALP") + then "LatestALP".issued.value + else + null + +define "LatestAlbumin": CDS.MostRecent(CDS.WithUnit(CDS.Verified([Observation: "Albumin"]), 'g/dL')) +define "AlbuminResult": (convert DTR.GetObservationValue("LatestAlbumin") to String) + ' g/dL' +define "AlbuminDate": + if exists("LatestAlbumin") + then "LatestAlbumin".issued.value + else + null + +define "LatestPT": CDS.MostRecent(CDS.WithUnit(CDS.Verified([Observation: "PT"]), 's')) +define "PTResult": (convert DTR.GetObservationValue("LatestPT") to String) + ' s' +define "PTDate": + if exists("LatestPT") + then "LatestPT".issued.value + else + null + +define "MedList": [MedicationStatement] M + where M.status.value = 'active' + +define "TakingMeds": not exists("MedList") +define function GetMedicationsTupleList(MedStatementList List): + distinct( + flatten( + MedStatementList MedStatement + let MedicationList: + (MedStatement.medication.coding) CODING + return (FHIRHelpers.ToCode(CODING).display + ' - ' + FHIRHelpers.ToCode(CODING).code) + + return MedicationList + ) + ) +define "Meds": GetMedicationsTupleList(MedList) +define "MedsString": + Meds M + aggregate Result starting '': Result + ', ' + M + +define "MedicalHistoryList": [Condition: "HepaticMedicalHistory"] +define "MedicalHistory": DTR.CodesFromConditions(CDS.Confirmed("MedicalHistoryList")) \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Turalio/R4/files/TuralioPrescriberEnrollmentPrepopulation-0.1.0.cql b/src/cds-library/CRD-DTR/Turalio/R4/files/TuralioPrescriberEnrollmentPrepopulation-0.1.0.cql new file mode 100644 index 00000000..dfc78591 --- /dev/null +++ b/src/cds-library/CRD-DTR/Turalio/R4/files/TuralioPrescriberEnrollmentPrepopulation-0.1.0.cql @@ -0,0 +1,62 @@ +library TuralioPrescriberEnrollmentPrepopulation version '0.1.0' +using FHIR version '4.0.0' +include FHIRHelpers version '4.0.0' called FHIRHelpers + + +codesystem "ICD-10-CM": 'http://hl7.org/fhir/sid/icd-10-cm' +codesystem "LOINC": 'http://loinc.org' +codesystem "SNOMED-CT": 'http://snomed.info/sct' +codesystem "RXNORM": 'http://www.nlm.nih.gov/research/umls/rxnorm' + +valueset "TuralioValueSet": 'https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.197' + + +code "Oncologist":'394592004' from "SNOMED-CT" + +parameter device_request DeviceRequest +parameter service_request ServiceRequest +parameter medication_request MedicationRequest + +context Patient + +define Today: Today() + +define "SigningProviderReference": Coalesce(device_request.performer.reference.value, service_request.performer.reference.value, medication_request.requester.reference.value) +// Get Practitioner +define OrderingProvider: singleton from ( + [Practitioner] practitioner + where ('Practitioner/' + practitioner.id) = SigningProviderReference) + +define Qualifications: singleton from ( + "OrderingProvider".qualification[0].code.coding[0].code.value) + +define Credentials: {Qualifications} + +define PractitionerRole: singleton from ( + [PractitionerRole] prole + where (prole.practitioner.reference.value) = SigningProviderReference) + +define Specialty: FHIRHelpers.ToConcept("PractitionerRole".specialty[0] as FHIR.CodeableConcept).codes + +define PreferredCommunication: {(singleton from ( + "OrderingProvider".telecom telecom where telecom.rank.value = 1)).system.value} + +define OrgName: ([Organization] org).name.value + +define MD: (singleton from ( + "OrderingProvider".identifier identifier + where identifier.type.coding[0].code = 'MD')).value.value + + +//retrieve a collection of instances that align with Turalio prescriber certification +define ValidTuralioCredentials: + from "OrderingProvider".qualification qualification + where qualification.identifier.system.value = 'http://www.nlm.nih.gov/research/umls/rxnorm' and qualification.identifier.value.value = '2183126' + +//when empty, all accesses are null and so prepopulation will be blank +define ThirdPartyCredentials: ValidTuralioCredentials[0].code.text.value +define ThirdPartyIssuer: ValidTuralioCredentials[0].issuer.display.value + + + + diff --git a/src/cds-library/CRD-DTR/Turalio/R4/files/TuralioRule-0.1.0.cql b/src/cds-library/CRD-DTR/Turalio/R4/files/TuralioRule-0.1.0.cql new file mode 100644 index 00000000..e922d55b --- /dev/null +++ b/src/cds-library/CRD-DTR/Turalio/R4/files/TuralioRule-0.1.0.cql @@ -0,0 +1,76 @@ +library TuralioRule version '0.1.0' +using FHIR version '4.0.0' +include FHIRHelpers version '4.0.0' called FHIRHelpers + + +parameter Patient Patient +parameter medication_request MedicationRequest +parameter medication_dispense MedicationDispense +parameter medication_statement MedicationStatement + +define RULE_APPLIES: + true + +define PRIORAUTH_REQUIRED: + false + +define DOCUMENTATION_REQUIRED: + true + +define RESULT_InfoLink: + 'https://www.accessdata.fda.gov/drugsatfda_docs/rems/Turalio_2020_08_04_REMS_Full.pdf' +define INFO_PATIENT_MedicationGuide: + 'https://daiichisankyo.us/prescribing-information-portlet/getPIContent?productName=Turalio_Med&inline=true' +define INFO_PATIENT_PatientGuide: + 'https://www.accessdata.fda.gov/drugsatfda_docs/rems/Turalio_2020_12_16_Patient_Guide.pdf' +define INFO_PRESCRIBER_PrescribingInformation: + 'https://daiichisankyo.us/prescribing-information-portlet/getPIContent?productName=Turalio&inline=true' +define INFO_PRESCRIBER_ProgramOverview: + 'https://www.accessdata.fda.gov/drugsatfda_docs/rems/Turalio_2020_12_16_Program_Overview.pdf' +define INFO_PRESCRIBER_PrescriberTraining: + 'https://www.accessdata.fda.gov/drugsatfda_docs/rems/Turalio_2020_12_16_Prescriber_Training.pdf' + +define RESULT_QuestionnaireOrderUri: + 'Questionnaire/TuralioRemsPatientEnrollment' + +define RESULT_QuestionnaireDispenseUri: + 'Questionnaire/TuralioRemsPatientEnrollment' + +define RESULT_QuestionnaireProgressNoteUri: + 'Questionnaire/TuralioRemsPatientStatus' + +define RESULT_QuestionnairePrescriberEnrollmentUri: + 'Questionnaire/TuralioPrescriberEnrollmentForm' + +define RESULT_QuestionnairePrescriberKnowledgeAssessmentUri: + 'Questionnaire/TuralioPrescriberKnowledgeAssessment' + +define RESULT_requestId: + medication_request + +define RESULT_dispense: + medication_dispense + +define "MedicationCodingFromParameter": Coalesce(medication_request.medication.coding, medication_dispense.medication.coding) + +define "MedicationStatementCodingFromParamter": medication_statement.medication.coding + +define ALTERNATIVE_THERAPY: + if MedicationCodingFromParameter.code.value in { '105611', '239983' } + then Code { code: '197388', display: 'Azathioprine 50 MG Oral', system: 'http://www.nlm.nih.gov/research/umls/rxnorm' } + else null + +define DRUG_INTERACTION: + if MedicationCodingFromParameter.code.value in { '105585' } + and MedicationStatementCodingFromParamter.code.value in { '105611', '197388', '239983' } + then true + else if MedicationCodingFromParameter.code.value in { '105611', '197388', '239983' } + and MedicationStatementCodingFromParamter.code.value in { '105585' } + then true + else false + +define REQUESTED_DRUG_CODE: + MedicationCodingFromParameter + +define STATEMENT_DRUG_CODE: + MedicationStatementCodingFromParamter diff --git a/src/cds-library/CRD-DTR/Turalio/R4/resources/Library-R4-Turalio-prepopulation.json b/src/cds-library/CRD-DTR/Turalio/R4/resources/Library-R4-Turalio-prepopulation.json new file mode 100644 index 00000000..f2d71fff --- /dev/null +++ b/src/cds-library/CRD-DTR/Turalio/R4/resources/Library-R4-Turalio-prepopulation.json @@ -0,0 +1,99 @@ +{ + "resourceType": "Library", + "id": "Turalio-prepopulation", + "url": "http://hl7.org/fhir/us/davinci-dtr/Library/Turalio-prepopulation", + "name": "Turalio-prepopulation", + "version": "0.1.0", + "title": "Turalio Prepopulation", + "status": "draft", + "type": { + "coding": [ + { + "code": "logic-library" + } + ] + }, + "relatedArtifact": [ + { + "type": "depends-on", + "resource": "Library/FHIRHelpers-4.0.0" + }, + { + "type": "depends-on", + "resource": "Library/CDS_Connect_Commons_for_FHIRv400" + }, + { + "type": "depends-on", + "resource": "Library/DTRHelpers" + } + ], + "dataRequirement": [ + { + "type": "Condition", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.81" + } + ] + }, + { + "type": "Condition", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.198" + } + ] + }, + { + "type": "Procedure", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.90" + } + ] + }, + { + "type": "MedicationRequest", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.192" + } + ] + }, + { + "type": "MedicationRequest", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.193" + } + ] + }, + { + "type": "Observation" + }, + { + "type": "MedicationStatement", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.197" + } + ] + } + ], + "content": [ + { + "contentType": "text/cql", + "data": "bGlicmFyeSBUdXJhbGlvUHJlcG9wdWxhdGlvbiAgdmVyc2lvbiAnMC4xLjAnCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjAnCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjAnIGNhbGxlZCBGSElSSGVscGVycwppbmNsdWRlIENEU19Db25uZWN0X0NvbW1vbnNfZm9yX0ZISVJ2NDAwIHZlcnNpb24gJzEuMC4yJyBjYWxsZWQgQ0RTCmluY2x1ZGUgRFRSSGVscGVycyB2ZXJzaW9uICcwLjEuMCcgY2FsbGVkIERUUgoKY29kZXN5c3RlbSAiSUNELTEwLUNNIjogJ2h0dHA6Ly9obDcub3JnL2ZoaXIvc2lkL2ljZC0xMC1jbScKY29kZXN5c3RlbSAiTE9JTkMiOiAnaHR0cDovL2xvaW5jLm9yZycKY29kZXN5c3RlbSAiU05PTUVELUNUIjogJ2h0dHA6Ly9zbm9tZWQuaW5mby9zY3QnCmNvZGVzeXN0ZW0gIlJYTk9STSI6ICdodHRwOi8vd3d3Lm5sbS5uaWguZ292L3Jlc2VhcmNoL3VtbHMvcnhub3JtJwoKCnZhbHVlc2V0ICJIZXBhdGljTWVkaWNhbEhpc3RvcnkiOiAnaHR0cHM6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTIxOS4xOTgnCnZhbHVlc2V0ICJUdXJhbGlvVmFsdWVTZXQiOiAnaHR0cHM6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTIxOS4xOTcnCgpjb2RlICIyOTQ2My03IjogJzI5NDYzLTcnIGZyb20gIkxPSU5DIgpjb2RlICIyMTgzMTAyIjogJzIxODMxMDInIGZyb20gIlJYTk9STSIKY29kZSAiQVNUIjogJzE5MjAtOCcgZnJvbSAiTE9JTkMiCmNvZGUgIkFMVCI6ICcxNzQyLTYnIGZyb20gIkxPSU5DIgpjb2RlICJHR1QiOiAnMjMyNC0yJyBmcm9tICJMT0lOQyIKY29kZSAiVG90YWxCaWxpcnViaW4iOiAnMTk3NS0yJyBmcm9tICJMT0lOQyIKY29kZSAiRGlyZWN0QmlsaXJ1YmluIjogJzE5NjgtNycgZnJvbSAiTE9JTkMiCmNvZGUgIkFMUCI6ICcxMzg3NC0zJyBmcm9tICJMT0lOQyIKY29kZSAiQWxidW1pbiI6ICcxNzUxLTcnIGZyb20gIkxPSU5DIgpjb2RlICJQVCI6ICc1OTAyLTInIGZyb20gIkxPSU5DIgoKcGFyYW1ldGVyIG1lZGljYXRpb25fcmVxdWVzdCBNZWRpY2F0aW9uUmVxdWVzdApwYXJhbWV0ZXIgbWVkaWNhdGlvbl9kaXNwZW5zZSBNZWRpY2F0aW9uRGlzcGVuc2UKCmNvbnRleHQgUGF0aWVudAoKLy8gZ2V0IG9ic2VydmF0aW9ucyAKZGVmaW5lICJXZWlnaHRMaXN0IjogW09ic2VydmF0aW9uOiAiMjk0NjMtNyJdCmRlZmluZSAiTGF0ZXN0V2VpZ2h0IjogQ0RTLk1vc3RSZWNlbnQoQ0RTLldpdGhVbml0KENEUy5WZXJpZmllZCgiV2VpZ2h0TGlzdCIpLCdtZycpKQpkZWZpbmUgIkxhdGVzdFdlaWdodFJlc3VsdCI6IERUUi5HZXRPYnNlcnZhdGlvblZhbHVlKCJMYXRlc3RXZWlnaHQiKQoKZGVmaW5lICJUdXJhbGlvIjogW01lZGljYXRpb25TdGF0ZW1lbnQ6ICJUdXJhbGlvVmFsdWVTZXQiXQpkZWZpbmUgIlRha2luZ1R1cmFsaW8iOiBleGlzdHMoIlR1cmFsaW8iKQpkZWZpbmUgIlR1cmFsaW9EYXRlIjogCiAgaWYgIlRha2luZ1R1cmFsaW8iIAogICAgdGhlbiBGaXJzdCgiVHVyYWxpbyIpLmVmZmVjdGl2ZS52YWx1ZQogIGVsc2UKICAgIG51bGwKCmRlZmluZSAiTGF0ZXN0QVNUIjogQ0RTLk1vc3RSZWNlbnQoQ0RTLldpdGhVbml0KENEUy5WZXJpZmllZChbT2JzZXJ2YXRpb246ICJBU1QiXSksICdVL0wnKSkKZGVmaW5lICJBU1RSZXN1bHQiOiAoY29udmVydCBEVFIuR2V0T2JzZXJ2YXRpb25WYWx1ZSgiTGF0ZXN0QVNUIikgdG8gU3RyaW5nKSArICcgVS9MJwpkZWZpbmUgIkFTVERhdGUiOiAKICBpZiBleGlzdHMoIkxhdGVzdEFTVCIpCiAgICB0aGVuICJMYXRlc3RBU1QiLmlzc3VlZC52YWx1ZQogIGVsc2UKICAgIG51bGwKCmRlZmluZSAiTGF0ZXN0QUxUIjogQ0RTLk1vc3RSZWNlbnQoQ0RTLldpdGhVbml0KENEUy5WZXJpZmllZChbT2JzZXJ2YXRpb246ICJBTFQiXSksICdVL0wnKSkKZGVmaW5lICJBTFRSZXN1bHQiOiAoY29udmVydCBEVFIuR2V0T2JzZXJ2YXRpb25WYWx1ZSgiTGF0ZXN0QUxUIikgdG8gU3RyaW5nKSArICcgVS9MJwpkZWZpbmUgIkFMVERhdGUiOiAKICBpZiBleGlzdHMoIkxhdGVzdEFMVCIpCiAgICB0aGVuICJMYXRlc3RBTFQiLmlzc3VlZC52YWx1ZQogIGVsc2UKICAgIG51bGwKCmRlZmluZSAiTGF0ZXN0R0dUIjogQ0RTLk1vc3RSZWNlbnQoQ0RTLldpdGhVbml0KENEUy5WZXJpZmllZChbT2JzZXJ2YXRpb246ICJHR1QiXSksICdVL0wnKSkKZGVmaW5lICJHR1RSZXN1bHQiOiAoY29udmVydCBEVFIuR2V0T2JzZXJ2YXRpb25WYWx1ZSgiTGF0ZXN0R0dUIikgdG8gU3RyaW5nKSArICcgVS9MJwpkZWZpbmUgIkdHVERhdGUiOiAKICBpZiBleGlzdHMoIkxhdGVzdEdHVCIpCiAgICB0aGVuICJMYXRlc3RHR1QiLmlzc3VlZC52YWx1ZQogIGVsc2UKICAgIG51bGwKCmRlZmluZSAiTGF0ZXN0VG90YWxCaWxpcnViaW4iOiBDRFMuTW9zdFJlY2VudChDRFMuV2l0aFVuaXQoQ0RTLlZlcmlmaWVkKFtPYnNlcnZhdGlvbjogIlRvdGFsQmlsaXJ1YmluIl0pLCAnbWcvZEwnKSkKZGVmaW5lICJUb3RhbEJpbGlydWJpblJlc3VsdCI6IChjb252ZXJ0IERUUi5HZXRPYnNlcnZhdGlvblZhbHVlKCJMYXRlc3RUb3RhbEJpbGlydWJpbiIpIHRvIFN0cmluZykgKyAnIG1nL2RMJwpkZWZpbmUgIlRvdGFsQmlsaXJ1YmluRGF0ZSI6IAogIGlmIGV4aXN0cygiTGF0ZXN0VG90YWxCaWxpcnViaW4iKQogICAgdGhlbiAiTGF0ZXN0VG90YWxCaWxpcnViaW4iLmlzc3VlZC52YWx1ZQogIGVsc2UKICAgIG51bGwKCmRlZmluZSAiTGF0ZXN0RGlyZWN0QmlsaXJ1YmluIjogQ0RTLk1vc3RSZWNlbnQoQ0RTLldpdGhVbml0KENEUy5WZXJpZmllZChbT2JzZXJ2YXRpb246ICJEaXJlY3RCaWxpcnViaW4iXSksICdtZy9kTCcpKQpkZWZpbmUgIkRpcmVjdEJpbGlydWJpblJlc3VsdCI6IChjb252ZXJ0IERUUi5HZXRPYnNlcnZhdGlvblZhbHVlKCJMYXRlc3REaXJlY3RCaWxpcnViaW4iKSB0byBTdHJpbmcpICsgJyBtZy9kTCcKZGVmaW5lICJEaXJlY3RCaWxpcnViaW5EYXRlIjogCiAgaWYgZXhpc3RzKCJMYXRlc3REaXJlY3RCaWxpcnViaW4iKQogICAgdGhlbiAiTGF0ZXN0RGlyZWN0QmlsaXJ1YmluIi5pc3N1ZWQudmFsdWUKICBlbHNlCiAgICBudWxsCgpkZWZpbmUgIkxhdGVzdEFMUCI6IENEUy5Nb3N0UmVjZW50KENEUy5XaXRoVW5pdChDRFMuVmVyaWZpZWQoW09ic2VydmF0aW9uOiAiQUxQIl0pLCAnVS9MJykpCmRlZmluZSAiQUxQUmVzdWx0IjogKGNvbnZlcnQgRFRSLkdldE9ic2VydmF0aW9uVmFsdWUoIkxhdGVzdEFMUCIpIHRvIFN0cmluZykgKyAnIFUvTCcKZGVmaW5lICJBTFBEYXRlIjogCiAgaWYgZXhpc3RzKCJMYXRlc3RBTFAiKQogICAgdGhlbiAiTGF0ZXN0QUxQIi5pc3N1ZWQudmFsdWUKICBlbHNlCiAgICBudWxsCgpkZWZpbmUgIkxhdGVzdEFsYnVtaW4iOiBDRFMuTW9zdFJlY2VudChDRFMuV2l0aFVuaXQoQ0RTLlZlcmlmaWVkKFtPYnNlcnZhdGlvbjogIkFsYnVtaW4iXSksICdnL2RMJykpCmRlZmluZSAiQWxidW1pblJlc3VsdCI6IChjb252ZXJ0IERUUi5HZXRPYnNlcnZhdGlvblZhbHVlKCJMYXRlc3RBbGJ1bWluIikgdG8gU3RyaW5nKSArICcgZy9kTCcKZGVmaW5lICJBbGJ1bWluRGF0ZSI6IAogIGlmIGV4aXN0cygiTGF0ZXN0QWxidW1pbiIpCiAgICB0aGVuICJMYXRlc3RBbGJ1bWluIi5pc3N1ZWQudmFsdWUKICBlbHNlCiAgICBudWxsCgpkZWZpbmUgIkxhdGVzdFBUIjogQ0RTLk1vc3RSZWNlbnQoQ0RTLldpdGhVbml0KENEUy5WZXJpZmllZChbT2JzZXJ2YXRpb246ICJQVCJdKSwgJ3MnKSkKZGVmaW5lICJQVFJlc3VsdCI6IChjb252ZXJ0IERUUi5HZXRPYnNlcnZhdGlvblZhbHVlKCJMYXRlc3RQVCIpIHRvIFN0cmluZykgKyAnIHMnCmRlZmluZSAiUFREYXRlIjogCiAgaWYgZXhpc3RzKCJMYXRlc3RQVCIpCiAgICB0aGVuICJMYXRlc3RQVCIuaXNzdWVkLnZhbHVlCiAgZWxzZQogICAgbnVsbAoKZGVmaW5lICJNZWRMaXN0IjogW01lZGljYXRpb25TdGF0ZW1lbnRdIE0KICB3aGVyZSBNLnN0YXR1cy52YWx1ZSA9ICdhY3RpdmUnCgpkZWZpbmUgIlRha2luZ01lZHMiOiBub3QgZXhpc3RzKCJNZWRMaXN0IikKZGVmaW5lIGZ1bmN0aW9uIEdldE1lZGljYXRpb25zVHVwbGVMaXN0KE1lZFN0YXRlbWVudExpc3QgTGlzdDxNZWRpY2F0aW9uU3RhdGVtZW50Pik6CiAgZGlzdGluY3QoCiAgICBmbGF0dGVuKAogICAgICBNZWRTdGF0ZW1lbnRMaXN0IE1lZFN0YXRlbWVudAogICAgICAgIGxldCBNZWRpY2F0aW9uTGlzdDoKICAgICAgICAgIChNZWRTdGF0ZW1lbnQubWVkaWNhdGlvbi5jb2RpbmcpIENPRElORwogICAgICAgICAgcmV0dXJuIChGSElSSGVscGVycy5Ub0NvZGUoQ09ESU5HKS5kaXNwbGF5ICsgJyAtICcgKyBGSElSSGVscGVycy5Ub0NvZGUoQ09ESU5HKS5jb2RlKQoKICAgICAgICByZXR1cm4gTWVkaWNhdGlvbkxpc3QgIAogICAgKQogICkgICAKZGVmaW5lICJNZWRzIjogR2V0TWVkaWNhdGlvbnNUdXBsZUxpc3QoTWVkTGlzdCkKZGVmaW5lICJNZWRzU3RyaW5nIjogCiAgTWVkcyBNCiAgICBhZ2dyZWdhdGUgUmVzdWx0IHN0YXJ0aW5nICcnOiBSZXN1bHQgKyAnLCAnICsgTQoKZGVmaW5lICJNZWRpY2FsSGlzdG9yeUxpc3QiOiBbQ29uZGl0aW9uOiAiSGVwYXRpY01lZGljYWxIaXN0b3J5Il0KZGVmaW5lICJNZWRpY2FsSGlzdG9yeSI6IERUUi5Db2Rlc0Zyb21Db25kaXRpb25zKENEUy5Db25maXJtZWQoIk1lZGljYWxIaXN0b3J5TGlzdCIpKQ==" + }, + { + "contentType": "application/elm+json", + "data":"eyJsaWJyYXJ5Ijp7ImFubm90YXRpb24iOlt7InRyYW5zbGF0b3JPcHRpb25zIjoiIiwidHlwZSI6IkNxbFRvRWxtSW5mbyJ9LHsibGlicmFyeUlkIjoiVHVyYWxpb1ByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjo0LCJzdGFydENoYXIiOjEsImVuZExpbmUiOjQsImVuZENoYXIiOjY3LCJtZXNzYWdlIjoiQ291bGQgbm90IGxvYWQgc291cmNlIGZvciBsaWJyYXJ5IENEU19Db25uZWN0X0NvbW1vbnNfZm9yX0ZISVJ2NDAwLiIsImVycm9yVHlwZSI6ImluY2x1ZGUiLCJlcnJvclNldmVyaXR5IjoiZXJyb3IiLCJ0YXJnZXRJbmNsdWRlTGlicmFyeUlkIjoiQ0RTX0Nvbm5lY3RfQ29tbW9uc19mb3JfRkhJUnY0MDAiLCJ0YXJnZXRJbmNsdWRlTGlicmFyeVZlcnNpb25JZCI6IjEuMC4yIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IlR1cmFsaW9QcmVwb3B1bGF0aW9uIiwibGlicmFyeVZlcnNpb24iOiIwLjEuMCIsInN0YXJ0TGluZSI6NSwic3RhcnRDaGFyIjoxLCJlbmRMaW5lIjo1LCJlbmRDaGFyIjo0NSwibWVzc2FnZSI6IkNvdWxkIG5vdCBsb2FkIHNvdXJjZSBmb3IgbGlicmFyeSBEVFJIZWxwZXJzLiIsImVycm9yVHlwZSI6ImluY2x1ZGUiLCJlcnJvclNldmVyaXR5IjoiZXJyb3IiLCJ0YXJnZXRJbmNsdWRlTGlicmFyeUlkIjoiRFRSSGVscGVycyIsInRhcmdldEluY2x1ZGVMaWJyYXJ5VmVyc2lvbklkIjoiMC4xLjAiLCJ0eXBlIjoiQ3FsVG9FbG1FcnJvciJ9LHsibGlicmFyeUlkIjoiVHVyYWxpb1ByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjozNCwic3RhcnRDaGFyIjoyNCwiZW5kTGluZSI6MzQsImVuZENoYXIiOjI2LCJtZXNzYWdlIjoiQ291bGQgbm90IHJlc29sdmUgaWRlbnRpZmllciBDRFMgaW4gdGhlIGN1cnJlbnQgbGlicmFyeS4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJlcnJvciIsInR5cGUiOiJDcWxUb0VsbUVycm9yIn0seyJsaWJyYXJ5SWQiOiJUdXJhbGlvUHJlcG9wdWxhdGlvbiIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjM1LCJzdGFydENoYXIiOjMwLCJlbmRMaW5lIjozNSwiZW5kQ2hhciI6MzIsIm1lc3NhZ2UiOiJDb3VsZCBub3QgcmVzb2x2ZSBpZGVudGlmaWVyIERUUiBpbiB0aGUgY3VycmVudCBsaWJyYXJ5LiIsImVycm9yVHlwZSI6InNlbWFudGljIiwiZXJyb3JTZXZlcml0eSI6ImVycm9yIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IlR1cmFsaW9QcmVwb3B1bGF0aW9uIiwibGlicmFyeVZlcnNpb24iOiIwLjEuMCIsInN0YXJ0TGluZSI6NDUsInN0YXJ0Q2hhciI6MjEsImVuZExpbmUiOjQ1LCJlbmRDaGFyIjoyMywibWVzc2FnZSI6IkNvdWxkIG5vdCByZXNvbHZlIGlkZW50aWZpZXIgQ0RTIGluIHRoZSBjdXJyZW50IGxpYnJhcnkuIiwiZXJyb3JUeXBlIjoic2VtYW50aWMiLCJlcnJvclNldmVyaXR5IjoiZXJyb3IiLCJ0eXBlIjoiQ3FsVG9FbG1FcnJvciJ9LHsibGlicmFyeUlkIjoiVHVyYWxpb1ByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjo0Niwic3RhcnRDaGFyIjozMCwiZW5kTGluZSI6NDYsImVuZENoYXIiOjMyLCJtZXNzYWdlIjoiQ291bGQgbm90IHJlc29sdmUgaWRlbnRpZmllciBEVFIgaW4gdGhlIGN1cnJlbnQgbGlicmFyeS4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJlcnJvciIsInR5cGUiOiJDcWxUb0VsbUVycm9yIn0seyJsaWJyYXJ5SWQiOiJUdXJhbGlvUHJlcG9wdWxhdGlvbiIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjQ4LCJzdGFydENoYXIiOjEzLCJlbmRMaW5lIjo0OCwiZW5kQ2hhciI6MjMsIm1lc3NhZ2UiOiJDb3VsZCBub3QgdmFsaWRhdGUgcmVmZXJlbmNlIHRvIGV4cHJlc3Npb24gTGF0ZXN0QVNUIGJlY2F1c2UgaXRzIGRlZmluaXRpb24gY29udGFpbnMgZXJyb3JzLiIsImVycm9yVHlwZSI6InNlbWFudGljIiwiZXJyb3JTZXZlcml0eSI6ImVycm9yIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IlR1cmFsaW9QcmVwb3B1bGF0aW9uIiwibGlicmFyeVZlcnNpb24iOiIwLjEuMCIsInN0YXJ0TGluZSI6NTMsInN0YXJ0Q2hhciI6MjEsImVuZExpbmUiOjUzLCJlbmRDaGFyIjoyMywibWVzc2FnZSI6IkNvdWxkIG5vdCByZXNvbHZlIGlkZW50aWZpZXIgQ0RTIGluIHRoZSBjdXJyZW50IGxpYnJhcnkuIiwiZXJyb3JUeXBlIjoic2VtYW50aWMiLCJlcnJvclNldmVyaXR5IjoiZXJyb3IiLCJ0eXBlIjoiQ3FsVG9FbG1FcnJvciJ9LHsibGlicmFyeUlkIjoiVHVyYWxpb1ByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjo1NCwic3RhcnRDaGFyIjozMCwiZW5kTGluZSI6NTQsImVuZENoYXIiOjMyLCJtZXNzYWdlIjoiQ291bGQgbm90IHJlc29sdmUgaWRlbnRpZmllciBEVFIgaW4gdGhlIGN1cnJlbnQgbGlicmFyeS4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJlcnJvciIsInR5cGUiOiJDcWxUb0VsbUVycm9yIn0seyJsaWJyYXJ5SWQiOiJUdXJhbGlvUHJlcG9wdWxhdGlvbiIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjU2LCJzdGFydENoYXIiOjEzLCJlbmRMaW5lIjo1NiwiZW5kQ2hhciI6MjMsIm1lc3NhZ2UiOiJDb3VsZCBub3QgdmFsaWRhdGUgcmVmZXJlbmNlIHRvIGV4cHJlc3Npb24gTGF0ZXN0QUxUIGJlY2F1c2UgaXRzIGRlZmluaXRpb24gY29udGFpbnMgZXJyb3JzLiIsImVycm9yVHlwZSI6InNlbWFudGljIiwiZXJyb3JTZXZlcml0eSI6ImVycm9yIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IlR1cmFsaW9QcmVwb3B1bGF0aW9uIiwibGlicmFyeVZlcnNpb24iOiIwLjEuMCIsInN0YXJ0TGluZSI6NjEsInN0YXJ0Q2hhciI6MjEsImVuZExpbmUiOjYxLCJlbmRDaGFyIjoyMywibWVzc2FnZSI6IkNvdWxkIG5vdCByZXNvbHZlIGlkZW50aWZpZXIgQ0RTIGluIHRoZSBjdXJyZW50IGxpYnJhcnkuIiwiZXJyb3JUeXBlIjoic2VtYW50aWMiLCJlcnJvclNldmVyaXR5IjoiZXJyb3IiLCJ0eXBlIjoiQ3FsVG9FbG1FcnJvciJ9LHsibGlicmFyeUlkIjoiVHVyYWxpb1ByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjo2Miwic3RhcnRDaGFyIjozMCwiZW5kTGluZSI6NjIsImVuZENoYXIiOjMyLCJtZXNzYWdlIjoiQ291bGQgbm90IHJlc29sdmUgaWRlbnRpZmllciBEVFIgaW4gdGhlIGN1cnJlbnQgbGlicmFyeS4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJlcnJvciIsInR5cGUiOiJDcWxUb0VsbUVycm9yIn0seyJsaWJyYXJ5SWQiOiJUdXJhbGlvUHJlcG9wdWxhdGlvbiIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjY0LCJzdGFydENoYXIiOjEzLCJlbmRMaW5lIjo2NCwiZW5kQ2hhciI6MjMsIm1lc3NhZ2UiOiJDb3VsZCBub3QgdmFsaWRhdGUgcmVmZXJlbmNlIHRvIGV4cHJlc3Npb24gTGF0ZXN0R0dUIGJlY2F1c2UgaXRzIGRlZmluaXRpb24gY29udGFpbnMgZXJyb3JzLiIsImVycm9yVHlwZSI6InNlbWFudGljIiwiZXJyb3JTZXZlcml0eSI6ImVycm9yIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IlR1cmFsaW9QcmVwb3B1bGF0aW9uIiwibGlicmFyeVZlcnNpb24iOiIwLjEuMCIsInN0YXJ0TGluZSI6NjksInN0YXJ0Q2hhciI6MzIsImVuZExpbmUiOjY5LCJlbmRDaGFyIjozNCwibWVzc2FnZSI6IkNvdWxkIG5vdCByZXNvbHZlIGlkZW50aWZpZXIgQ0RTIGluIHRoZSBjdXJyZW50IGxpYnJhcnkuIiwiZXJyb3JUeXBlIjoic2VtYW50aWMiLCJlcnJvclNldmVyaXR5IjoiZXJyb3IiLCJ0eXBlIjoiQ3FsVG9FbG1FcnJvciJ9LHsibGlicmFyeUlkIjoiVHVyYWxpb1ByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjo3MCwic3RhcnRDaGFyIjo0MSwiZW5kTGluZSI6NzAsImVuZENoYXIiOjQzLCJtZXNzYWdlIjoiQ291bGQgbm90IHJlc29sdmUgaWRlbnRpZmllciBEVFIgaW4gdGhlIGN1cnJlbnQgbGlicmFyeS4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJlcnJvciIsInR5cGUiOiJDcWxUb0VsbUVycm9yIn0seyJsaWJyYXJ5SWQiOiJUdXJhbGlvUHJlcG9wdWxhdGlvbiIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjcyLCJzdGFydENoYXIiOjEzLCJlbmRMaW5lIjo3MiwiZW5kQ2hhciI6MzQsIm1lc3NhZ2UiOiJDb3VsZCBub3QgdmFsaWRhdGUgcmVmZXJlbmNlIHRvIGV4cHJlc3Npb24gTGF0ZXN0VG90YWxCaWxpcnViaW4gYmVjYXVzZSBpdHMgZGVmaW5pdGlvbiBjb250YWlucyBlcnJvcnMuIiwiZXJyb3JUeXBlIjoic2VtYW50aWMiLCJlcnJvclNldmVyaXR5IjoiZXJyb3IiLCJ0eXBlIjoiQ3FsVG9FbG1FcnJvciJ9LHsibGlicmFyeUlkIjoiVHVyYWxpb1ByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjo3Nywic3RhcnRDaGFyIjozMywiZW5kTGluZSI6NzcsImVuZENoYXIiOjM1LCJtZXNzYWdlIjoiQ291bGQgbm90IHJlc29sdmUgaWRlbnRpZmllciBDRFMgaW4gdGhlIGN1cnJlbnQgbGlicmFyeS4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJlcnJvciIsInR5cGUiOiJDcWxUb0VsbUVycm9yIn0seyJsaWJyYXJ5SWQiOiJUdXJhbGlvUHJlcG9wdWxhdGlvbiIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjc4LCJzdGFydENoYXIiOjQyLCJlbmRMaW5lIjo3OCwiZW5kQ2hhciI6NDQsIm1lc3NhZ2UiOiJDb3VsZCBub3QgcmVzb2x2ZSBpZGVudGlmaWVyIERUUiBpbiB0aGUgY3VycmVudCBsaWJyYXJ5LiIsImVycm9yVHlwZSI6InNlbWFudGljIiwiZXJyb3JTZXZlcml0eSI6ImVycm9yIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IlR1cmFsaW9QcmVwb3B1bGF0aW9uIiwibGlicmFyeVZlcnNpb24iOiIwLjEuMCIsInN0YXJ0TGluZSI6ODAsInN0YXJ0Q2hhciI6MTMsImVuZExpbmUiOjgwLCJlbmRDaGFyIjozNSwibWVzc2FnZSI6IkNvdWxkIG5vdCB2YWxpZGF0ZSByZWZlcmVuY2UgdG8gZXhwcmVzc2lvbiBMYXRlc3REaXJlY3RCaWxpcnViaW4gYmVjYXVzZSBpdHMgZGVmaW5pdGlvbiBjb250YWlucyBlcnJvcnMuIiwiZXJyb3JUeXBlIjoic2VtYW50aWMiLCJlcnJvclNldmVyaXR5IjoiZXJyb3IiLCJ0eXBlIjoiQ3FsVG9FbG1FcnJvciJ9LHsibGlicmFyeUlkIjoiVHVyYWxpb1ByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjo4NSwic3RhcnRDaGFyIjoyMSwiZW5kTGluZSI6ODUsImVuZENoYXIiOjIzLCJtZXNzYWdlIjoiQ291bGQgbm90IHJlc29sdmUgaWRlbnRpZmllciBDRFMgaW4gdGhlIGN1cnJlbnQgbGlicmFyeS4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJlcnJvciIsInR5cGUiOiJDcWxUb0VsbUVycm9yIn0seyJsaWJyYXJ5SWQiOiJUdXJhbGlvUHJlcG9wdWxhdGlvbiIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjg2LCJzdGFydENoYXIiOjMwLCJlbmRMaW5lIjo4NiwiZW5kQ2hhciI6MzIsIm1lc3NhZ2UiOiJDb3VsZCBub3QgcmVzb2x2ZSBpZGVudGlmaWVyIERUUiBpbiB0aGUgY3VycmVudCBsaWJyYXJ5LiIsImVycm9yVHlwZSI6InNlbWFudGljIiwiZXJyb3JTZXZlcml0eSI6ImVycm9yIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IlR1cmFsaW9QcmVwb3B1bGF0aW9uIiwibGlicmFyeVZlcnNpb24iOiIwLjEuMCIsInN0YXJ0TGluZSI6ODgsInN0YXJ0Q2hhciI6MTMsImVuZExpbmUiOjg4LCJlbmRDaGFyIjoyMywibWVzc2FnZSI6IkNvdWxkIG5vdCB2YWxpZGF0ZSByZWZlcmVuY2UgdG8gZXhwcmVzc2lvbiBMYXRlc3RBTFAgYmVjYXVzZSBpdHMgZGVmaW5pdGlvbiBjb250YWlucyBlcnJvcnMuIiwiZXJyb3JUeXBlIjoic2VtYW50aWMiLCJlcnJvclNldmVyaXR5IjoiZXJyb3IiLCJ0eXBlIjoiQ3FsVG9FbG1FcnJvciJ9LHsibGlicmFyeUlkIjoiVHVyYWxpb1ByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjo5Mywic3RhcnRDaGFyIjoyNSwiZW5kTGluZSI6OTMsImVuZENoYXIiOjI3LCJtZXNzYWdlIjoiQ291bGQgbm90IHJlc29sdmUgaWRlbnRpZmllciBDRFMgaW4gdGhlIGN1cnJlbnQgbGlicmFyeS4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJlcnJvciIsInR5cGUiOiJDcWxUb0VsbUVycm9yIn0seyJsaWJyYXJ5SWQiOiJUdXJhbGlvUHJlcG9wdWxhdGlvbiIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjk0LCJzdGFydENoYXIiOjM0LCJlbmRMaW5lIjo5NCwiZW5kQ2hhciI6MzYsIm1lc3NhZ2UiOiJDb3VsZCBub3QgcmVzb2x2ZSBpZGVudGlmaWVyIERUUiBpbiB0aGUgY3VycmVudCBsaWJyYXJ5LiIsImVycm9yVHlwZSI6InNlbWFudGljIiwiZXJyb3JTZXZlcml0eSI6ImVycm9yIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IlR1cmFsaW9QcmVwb3B1bGF0aW9uIiwibGlicmFyeVZlcnNpb24iOiIwLjEuMCIsInN0YXJ0TGluZSI6OTYsInN0YXJ0Q2hhciI6MTMsImVuZExpbmUiOjk2LCJlbmRDaGFyIjoyNywibWVzc2FnZSI6IkNvdWxkIG5vdCB2YWxpZGF0ZSByZWZlcmVuY2UgdG8gZXhwcmVzc2lvbiBMYXRlc3RBbGJ1bWluIGJlY2F1c2UgaXRzIGRlZmluaXRpb24gY29udGFpbnMgZXJyb3JzLiIsImVycm9yVHlwZSI6InNlbWFudGljIiwiZXJyb3JTZXZlcml0eSI6ImVycm9yIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IlR1cmFsaW9QcmVwb3B1bGF0aW9uIiwibGlicmFyeVZlcnNpb24iOiIwLjEuMCIsInN0YXJ0TGluZSI6MTAxLCJzdGFydENoYXIiOjIwLCJlbmRMaW5lIjoxMDEsImVuZENoYXIiOjIyLCJtZXNzYWdlIjoiQ291bGQgbm90IHJlc29sdmUgaWRlbnRpZmllciBDRFMgaW4gdGhlIGN1cnJlbnQgbGlicmFyeS4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJlcnJvciIsInR5cGUiOiJDcWxUb0VsbUVycm9yIn0seyJsaWJyYXJ5SWQiOiJUdXJhbGlvUHJlcG9wdWxhdGlvbiIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjEwMiwic3RhcnRDaGFyIjoyOSwiZW5kTGluZSI6MTAyLCJlbmRDaGFyIjozMSwibWVzc2FnZSI6IkNvdWxkIG5vdCByZXNvbHZlIGlkZW50aWZpZXIgRFRSIGluIHRoZSBjdXJyZW50IGxpYnJhcnkuIiwiZXJyb3JUeXBlIjoic2VtYW50aWMiLCJlcnJvclNldmVyaXR5IjoiZXJyb3IiLCJ0eXBlIjoiQ3FsVG9FbG1FcnJvciJ9LHsibGlicmFyeUlkIjoiVHVyYWxpb1ByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjoxMDQsInN0YXJ0Q2hhciI6MTMsImVuZExpbmUiOjEwNCwiZW5kQ2hhciI6MjIsIm1lc3NhZ2UiOiJDb3VsZCBub3QgdmFsaWRhdGUgcmVmZXJlbmNlIHRvIGV4cHJlc3Npb24gTGF0ZXN0UFQgYmVjYXVzZSBpdHMgZGVmaW5pdGlvbiBjb250YWlucyBlcnJvcnMuIiwiZXJyb3JUeXBlIjoic2VtYW50aWMiLCJlcnJvclNldmVyaXR5IjoiZXJyb3IiLCJ0eXBlIjoiQ3FsVG9FbG1FcnJvciJ9LHsibGlicmFyeUlkIjoiVHVyYWxpb1ByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjoxMzAsInN0YXJ0Q2hhciI6MjYsImVuZExpbmUiOjEzMCwiZW5kQ2hhciI6MjgsIm1lc3NhZ2UiOiJDb3VsZCBub3QgcmVzb2x2ZSBpZGVudGlmaWVyIERUUiBpbiB0aGUgY3VycmVudCBsaWJyYXJ5LiIsImVycm9yVHlwZSI6InNlbWFudGljIiwiZXJyb3JTZXZlcml0eSI6ImVycm9yIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifV0sImlkZW50aWZpZXIiOnsiaWQiOiJUdXJhbGlvUHJlcG9wdWxhdGlvbiIsInZlcnNpb24iOiIwLjEuMCJ9LCJzY2hlbWFJZGVudGlmaWVyIjp7ImlkIjoidXJuOmhsNy1vcmc6ZWxtIiwidmVyc2lvbiI6InIxIn0sInVzaW5ncyI6eyJkZWYiOlt7ImxvY2FsSWRlbnRpZmllciI6IlN5c3RlbSIsInVyaSI6InVybjpobDctb3JnOmVsbS10eXBlczpyMSJ9LHsibG9jYWxJZGVudGlmaWVyIjoiRkhJUiIsInVyaSI6Imh0dHA6Ly9obDcub3JnL2ZoaXIiLCJ2ZXJzaW9uIjoiNC4wLjAifV19LCJpbmNsdWRlcyI6eyJkZWYiOlt7ImxvY2FsSWRlbnRpZmllciI6IkZISVJIZWxwZXJzIiwicGF0aCI6IkZISVJIZWxwZXJzIiwidmVyc2lvbiI6IjQuMC4wIn1dfSwicGFyYW1ldGVycyI6eyJkZWYiOlt7Im5hbWUiOiJtZWRpY2F0aW9uX3JlcXVlc3QiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInBhcmFtZXRlclR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU1lZGljYXRpb25SZXF1ZXN0IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fSx7Im5hbWUiOiJtZWRpY2F0aW9uX2Rpc3BlbnNlIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJwYXJhbWV0ZXJUeXBlU3BlY2lmaWVyIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1NZWRpY2F0aW9uRGlzcGVuc2UiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0sImNvZGVTeXN0ZW1zIjp7ImRlZiI6W3sibmFtZSI6IklDRC0xMC1DTSIsImlkIjoiaHR0cDovL2hsNy5vcmcvZmhpci9zaWQvaWNkLTEwLWNtIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMifSx7Im5hbWUiOiJMT0lOQyIsImlkIjoiaHR0cDovL2xvaW5jLm9yZyIsImFjY2Vzc0xldmVsIjoiUHVibGljIn0seyJuYW1lIjoiU05PTUVELUNUIiwiaWQiOiJodHRwOi8vc25vbWVkLmluZm8vc2N0IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMifSx7Im5hbWUiOiJSWE5PUk0iLCJpZCI6Imh0dHA6Ly93d3cubmxtLm5paC5nb3YvcmVzZWFyY2gvdW1scy9yeG5vcm0iLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyJ9XX0sInZhbHVlU2V0cyI6eyJkZWYiOlt7Im5hbWUiOiJIZXBhdGljTWVkaWNhbEhpc3RvcnkiLCJpZCI6Imh0dHBzOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEyMTkuMTk4IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMifSx7Im5hbWUiOiJUdXJhbGlvVmFsdWVTZXQiLCJpZCI6Imh0dHBzOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEyMTkuMTk3IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMifV19LCJjb2RlcyI6eyJkZWYiOlt7Im5hbWUiOiIyOTQ2My03IiwiaWQiOiIyOTQ2My03IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJjb2RlU3lzdGVtIjp7Im5hbWUiOiJMT0lOQyJ9fSx7Im5hbWUiOiIyMTgzMTAyIiwiaWQiOiIyMTgzMTAyIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJjb2RlU3lzdGVtIjp7Im5hbWUiOiJSWE5PUk0ifX0seyJuYW1lIjoiQVNUIiwiaWQiOiIxOTIwLTgiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImNvZGVTeXN0ZW0iOnsibmFtZSI6IkxPSU5DIn19LHsibmFtZSI6IkFMVCIsImlkIjoiMTc0Mi02IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJjb2RlU3lzdGVtIjp7Im5hbWUiOiJMT0lOQyJ9fSx7Im5hbWUiOiJHR1QiLCJpZCI6IjIzMjQtMiIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiY29kZVN5c3RlbSI6eyJuYW1lIjoiTE9JTkMifX0seyJuYW1lIjoiVG90YWxCaWxpcnViaW4iLCJpZCI6IjE5NzUtMiIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiY29kZVN5c3RlbSI6eyJuYW1lIjoiTE9JTkMifX0seyJuYW1lIjoiRGlyZWN0QmlsaXJ1YmluIiwiaWQiOiIxOTY4LTciLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImNvZGVTeXN0ZW0iOnsibmFtZSI6IkxPSU5DIn19LHsibmFtZSI6IkFMUCIsImlkIjoiMTM4NzQtMyIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiY29kZVN5c3RlbSI6eyJuYW1lIjoiTE9JTkMifX0seyJuYW1lIjoiQWxidW1pbiIsImlkIjoiMTc1MS03IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJjb2RlU3lzdGVtIjp7Im5hbWUiOiJMT0lOQyJ9fSx7Im5hbWUiOiJQVCIsImlkIjoiNTkwMi0yIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJjb2RlU3lzdGVtIjp7Im5hbWUiOiJMT0lOQyJ9fV19LCJjb250ZXh0cyI6eyJkZWYiOlt7Im5hbWUiOiJQYXRpZW50In1dfSwic3RhdGVtZW50cyI6eyJkZWYiOlt7Im5hbWUiOiJQYXRpZW50IiwiY29udGV4dCI6IlBhdGllbnQiLCJleHByZXNzaW9uIjp7InR5cGUiOiJTaW5nbGV0b25Gcm9tIiwib3BlcmFuZCI6eyJkYXRhVHlwZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfVBhdGllbnQiLCJ0eXBlIjoiUmV0cmlldmUifX19LHsibmFtZSI6IldlaWdodExpc3QiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJkYXRhVHlwZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfU9ic2VydmF0aW9uIiwiY29kZVByb3BlcnR5IjoiY29kZSIsImNvZGVDb21wYXJhdG9yIjoifiIsInR5cGUiOiJSZXRyaWV2ZSIsImNvZGVzIjp7InR5cGUiOiJUb0xpc3QiLCJvcGVyYW5kIjp7Im5hbWUiOiIyOTQ2My03IiwidHlwZSI6IkNvZGVSZWYifX19fSx7Im5hbWUiOiJMYXRlc3RXZWlnaHQiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTnVsbCJ9fSx7Im5hbWUiOiJMYXRlc3RXZWlnaHRSZXN1bHQiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTnVsbCJ9fSx7Im5hbWUiOiJUdXJhbGlvIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IlVuaW9uIiwib3BlcmFuZCI6W3siZGF0YVR5cGUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1NZWRpY2F0aW9uU3RhdGVtZW50IiwiY29kZVByb3BlcnR5IjoibWVkaWNhdGlvbiIsImNvZGVDb21wYXJhdG9yIjoiaW4iLCJ0eXBlIjoiUmV0cmlldmUiLCJjb2RlcyI6eyJuYW1lIjoiVHVyYWxpb1ZhbHVlU2V0IiwicHJlc2VydmUiOnRydWUsInR5cGUiOiJWYWx1ZVNldFJlZiJ9fSx7ImRhdGFUeXBlIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TWVkaWNhdGlvblN0YXRlbWVudCIsImNvZGVQcm9wZXJ0eSI6Im1lZGljYXRpb24iLCJjb2RlQ29tcGFyYXRvciI6ImluIiwidHlwZSI6IlJldHJpZXZlIiwiY29kZXMiOnsibmFtZSI6IlR1cmFsaW9WYWx1ZVNldCIsInByZXNlcnZlIjp0cnVlLCJ0eXBlIjoiVmFsdWVTZXRSZWYifX1dfX0seyJuYW1lIjoiVGFraW5nVHVyYWxpbyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJFeGlzdHMiLCJvcGVyYW5kIjp7Im5hbWUiOiJUdXJhbGlvIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifX19LHsibmFtZSI6IlR1cmFsaW9EYXRlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IklmIiwiY29uZGl0aW9uIjp7Im5hbWUiOiJUYWtpbmdUdXJhbGlvIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifSwidGhlbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImVmZmVjdGl2ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJ0eXBlIjoiRmlyc3QiLCJzb3VyY2UiOnsibmFtZSI6IlR1cmFsaW8iLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9fX19LCJlbHNlIjp7ImFzVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9RGF0ZVRpbWUiLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InR5cGUiOiJOdWxsIn19fX0seyJuYW1lIjoiTGF0ZXN0QVNUIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6Ik51bGwifX0seyJuYW1lIjoiQVNUUmVzdWx0IiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6Ik51bGwifX0seyJuYW1lIjoiQVNURGF0ZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJOdWxsIn19LHsibmFtZSI6IkxhdGVzdEFMVCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJOdWxsIn19LHsibmFtZSI6IkFMVFJlc3VsdCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJOdWxsIn19LHsibmFtZSI6IkFMVERhdGUiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTnVsbCJ9fSx7Im5hbWUiOiJMYXRlc3RHR1QiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTnVsbCJ9fSx7Im5hbWUiOiJHR1RSZXN1bHQiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTnVsbCJ9fSx7Im5hbWUiOiJHR1REYXRlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6Ik51bGwifX0seyJuYW1lIjoiTGF0ZXN0VG90YWxCaWxpcnViaW4iLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTnVsbCJ9fSx7Im5hbWUiOiJUb3RhbEJpbGlydWJpblJlc3VsdCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJOdWxsIn19LHsibmFtZSI6IlRvdGFsQmlsaXJ1YmluRGF0ZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJOdWxsIn19LHsibmFtZSI6IkxhdGVzdERpcmVjdEJpbGlydWJpbiIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJOdWxsIn19LHsibmFtZSI6IkRpcmVjdEJpbGlydWJpblJlc3VsdCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJOdWxsIn19LHsibmFtZSI6IkRpcmVjdEJpbGlydWJpbkRhdGUiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTnVsbCJ9fSx7Im5hbWUiOiJMYXRlc3RBTFAiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTnVsbCJ9fSx7Im5hbWUiOiJBTFBSZXN1bHQiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTnVsbCJ9fSx7Im5hbWUiOiJBTFBEYXRlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6Ik51bGwifX0seyJuYW1lIjoiTGF0ZXN0QWxidW1pbiIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJOdWxsIn19LHsibmFtZSI6IkFsYnVtaW5SZXN1bHQiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTnVsbCJ9fSx7Im5hbWUiOiJBbGJ1bWluRGF0ZSIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJOdWxsIn19LHsibmFtZSI6IkxhdGVzdFBUIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6Ik51bGwifX0seyJuYW1lIjoiUFRSZXN1bHQiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTnVsbCJ9fSx7Im5hbWUiOiJQVERhdGUiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTnVsbCJ9fSx7Im5hbWUiOiJNZWRMaXN0IiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6Ik0iLCJleHByZXNzaW9uIjp7ImRhdGFUeXBlIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TWVkaWNhdGlvblN0YXRlbWVudCIsInR5cGUiOiJSZXRyaWV2ZSJ9fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJFcXVhbCIsIm9wZXJhbmQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3RhdHVzIiwic2NvcGUiOiJNIiwidHlwZSI6IlByb3BlcnR5In19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6ImFjdGl2ZSIsInR5cGUiOiJMaXRlcmFsIn1dfX19LHsibmFtZSI6IlRha2luZ01lZHMiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTm90Iiwib3BlcmFuZCI6eyJ0eXBlIjoiRXhpc3RzIiwib3BlcmFuZCI6eyJuYW1lIjoiTWVkTGlzdCIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fX0seyJuYW1lIjoiR2V0TWVkaWNhdGlvbnNUdXBsZUxpc3QiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwidHlwZSI6IkZ1bmN0aW9uRGVmIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiRGlzdGluY3QiLCJvcGVyYW5kIjp7InR5cGUiOiJGbGF0dGVuIiwib3BlcmFuZCI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiTWVkU3RhdGVtZW50IiwiZXhwcmVzc2lvbiI6eyJuYW1lIjoiTWVkU3RhdGVtZW50TGlzdCIsInR5cGUiOiJPcGVyYW5kUmVmIn19XSwibGV0IjpbeyJpZGVudGlmaWVyIjoiTWVkaWNhdGlvbkxpc3QiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJDT0RJTkciLCJleHByZXNzaW9uIjp7InBhdGgiOiJjb2RpbmciLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6Im1lZGljYXRpb24iLCJzY29wZSI6Ik1lZFN0YXRlbWVudCIsInR5cGUiOiJQcm9wZXJ0eSJ9fX1dLCJyZWxhdGlvbnNoaXAiOltdLCJyZXR1cm4iOnsiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJwYXRoIjoiZGlzcGxheSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiVG9Db2RlIiwibGlicmFyeU5hbWUiOiJGSElSSGVscGVycyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7Im5hbWUiOiJDT0RJTkciLCJ0eXBlIjoiQWxpYXNSZWYifV19fSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiIgLSAiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX0seyJwYXRoIjoiY29kZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiVG9Db2RlIiwibGlicmFyeU5hbWUiOiJGSElSSGVscGVycyIsInR5cGUiOiJGdW5jdGlvblJlZiIsIm9wZXJhbmQiOlt7Im5hbWUiOiJDT0RJTkciLCJ0eXBlIjoiQWxpYXNSZWYifV19fV19fX19XSwicmVsYXRpb25zaGlwIjpbXSwicmV0dXJuIjp7ImV4cHJlc3Npb24iOnsibmFtZSI6Ik1lZGljYXRpb25MaXN0IiwidHlwZSI6IlF1ZXJ5TGV0UmVmIn19fX19LCJvcGVyYW5kIjpbeyJuYW1lIjoiTWVkU3RhdGVtZW50TGlzdCIsIm9wZXJhbmRUeXBlU3BlY2lmaWVyIjp7InR5cGUiOiJMaXN0VHlwZVNwZWNpZmllciIsImVsZW1lbnRUeXBlIjp7Im5hbWUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1NZWRpY2F0aW9uU3RhdGVtZW50IiwidHlwZSI6Ik5hbWVkVHlwZVNwZWNpZmllciJ9fX1dfSx7Im5hbWUiOiJNZWRzIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsibmFtZSI6IkdldE1lZGljYXRpb25zVHVwbGVMaXN0IiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sibmFtZSI6Ik1lZExpc3QiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9XX19LHsibmFtZSI6Ik1lZHNTdHJpbmciLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiTSIsImV4cHJlc3Npb24iOnsibmFtZSI6Ik1lZHMiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9fV0sInJlbGF0aW9uc2hpcCI6W10sImFnZ3JlZ2F0ZSI6eyJpZGVudGlmaWVyIjoiUmVzdWx0IiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJuYW1lIjoiUmVzdWx0IiwidHlwZSI6IlF1ZXJ5TGV0UmVmIn0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiLCAiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX0seyJuYW1lIjoiTSIsInR5cGUiOiJBbGlhc1JlZiJ9XX0sInN0YXJ0aW5nIjp7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiIiLCJ0eXBlIjoiTGl0ZXJhbCJ9fX19LHsibmFtZSI6Ik1lZGljYWxIaXN0b3J5TGlzdCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7ImRhdGFUeXBlIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9Q29uZGl0aW9uIiwiY29kZVByb3BlcnR5IjoiY29kZSIsImNvZGVDb21wYXJhdG9yIjoiaW4iLCJ0eXBlIjoiUmV0cmlldmUiLCJjb2RlcyI6eyJuYW1lIjoiSGVwYXRpY01lZGljYWxIaXN0b3J5IiwicHJlc2VydmUiOnRydWUsInR5cGUiOiJWYWx1ZVNldFJlZiJ9fX0seyJuYW1lIjoiTWVkaWNhbEhpc3RvcnkiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTnVsbCJ9fV19fX0=" + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Turalio/R4/resources/Library-R4-TuralioPrescriberEnrollment-prepopulation.json b/src/cds-library/CRD-DTR/Turalio/R4/resources/Library-R4-TuralioPrescriberEnrollment-prepopulation.json new file mode 100644 index 00000000..414c5f7f --- /dev/null +++ b/src/cds-library/CRD-DTR/Turalio/R4/resources/Library-R4-TuralioPrescriberEnrollment-prepopulation.json @@ -0,0 +1,113 @@ +{ + "resourceType": "Library", + "id": "TuralioPrescriberEnrollment-prepopulation", + "url": "http://hl7.org/fhir/us/davinci-dtr/Library/TuralioPrescriberEnrollment-prepopulation", + "name": "TuralioPrescriberEnrollment-prepopulation", + "version": "0.1.0", + "title": "TuralioPrescriberEnrollment Prepopulation", + "status": "draft", + "type": { + "coding": [ + { + "code": "logic-library" + } + ] + }, + "relatedArtifact": [ + { + "type": "depends-on", + "resource": "Library/FHIRHelpers-4.0.0" + }, + { + "type": "depends-on", + "resource": "Library/CDS_Connect_Commons_for_FHIRv400" + }, + { + "type": "depends-on", + "resource": "Library/DTRHelpers" + } + ], + "dataRequirement": [ + { + "type": "Condition", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.81" + } + ] + }, + { + "type": "Condition", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.198" + } + ] + }, + { + "type": "Procedure", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.90" + } + ] + }, + { + "type": "MedicationRequest", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.192" + } + ] + }, + { + "type": "MedicationRequest", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.193" + } + ] + }, + { + "type": "Observation" + }, + { + "type": "MedicationStatement", + "codeFilter": [ + { + "path": "code", + "valueSet": "https://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1219.197" + } + ] + }, + { + "type": "Practitioner" + }, + { + "type": "PractitionerRole", + "subjectCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/ValueSet/subject-type", + "code": "Practitioner" + } + ] + } + } + ], + "content": [ + { + "contentType": "text/cql", + "data": "bGlicmFyeSBUdXJhbGlvUHJlc2NyaWJlckVucm9sbG1lbnRQcmVwb3B1bGF0aW9uICB2ZXJzaW9uICcwLjEuMCcKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMCcKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMCcgY2FsbGVkIEZISVJIZWxwZXJzCgoKY29kZXN5c3RlbSAiSUNELTEwLUNNIjogJ2h0dHA6Ly9obDcub3JnL2ZoaXIvc2lkL2ljZC0xMC1jbScKY29kZXN5c3RlbSAiTE9JTkMiOiAnaHR0cDovL2xvaW5jLm9yZycKY29kZXN5c3RlbSAiU05PTUVELUNUIjogJ2h0dHA6Ly9zbm9tZWQuaW5mby9zY3QnCmNvZGVzeXN0ZW0gIlJYTk9STSI6ICdodHRwOi8vd3d3Lm5sbS5uaWguZ292L3Jlc2VhcmNoL3VtbHMvcnhub3JtJwoKdmFsdWVzZXQgIlR1cmFsaW9WYWx1ZVNldCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEyMTkuMTk3JwoKCmNvZGUgIk9uY29sb2dpc3QiOiczOTQ1OTIwMDQnIGZyb20gIlNOT01FRC1DVCIKCnBhcmFtZXRlciBkZXZpY2VfcmVxdWVzdCBEZXZpY2VSZXF1ZXN0CnBhcmFtZXRlciBzZXJ2aWNlX3JlcXVlc3QgU2VydmljZVJlcXVlc3QKcGFyYW1ldGVyIG1lZGljYXRpb25fcmVxdWVzdCBNZWRpY2F0aW9uUmVxdWVzdAoKY29udGV4dCBQYXRpZW50CgpkZWZpbmUgVG9kYXk6IFRvZGF5KCkKCmRlZmluZSAiU2lnbmluZ1Byb3ZpZGVyUmVmZXJlbmNlIjogQ29hbGVzY2UoZGV2aWNlX3JlcXVlc3QucGVyZm9ybWVyLnJlZmVyZW5jZS52YWx1ZSwgc2VydmljZV9yZXF1ZXN0LnBlcmZvcm1lci5yZWZlcmVuY2UudmFsdWUsIG1lZGljYXRpb25fcmVxdWVzdC5yZXF1ZXN0ZXIucmVmZXJlbmNlLnZhbHVlKQovLyBHZXQgUHJhY3RpdGlvbmVyCmRlZmluZSBPcmRlcmluZ1Byb3ZpZGVyOiBzaW5nbGV0b24gZnJvbSAoCiAgW1ByYWN0aXRpb25lcl0gcHJhY3RpdGlvbmVyCiAgICB3aGVyZSAoJ1ByYWN0aXRpb25lci8nICsgcHJhY3RpdGlvbmVyLmlkKSA9ICBTaWduaW5nUHJvdmlkZXJSZWZlcmVuY2UpCgpkZWZpbmUgUXVhbGlmaWNhdGlvbnM6IHNpbmdsZXRvbiBmcm9tICgKICAgICJPcmRlcmluZ1Byb3ZpZGVyIi5xdWFsaWZpY2F0aW9uWzBdLmNvZGUuY29kaW5nWzBdLmNvZGUudmFsdWUpCgpkZWZpbmUgQ3JlZGVudGlhbHM6IHtRdWFsaWZpY2F0aW9uc30KCmRlZmluZSBQcmFjdGl0aW9uZXJSb2xlOiBzaW5nbGV0b24gZnJvbSAoCiAgW1ByYWN0aXRpb25lclJvbGVdIHByb2xlCiAgICB3aGVyZSAocHJvbGUucHJhY3RpdGlvbmVyLnJlZmVyZW5jZS52YWx1ZSkgPSBTaWduaW5nUHJvdmlkZXJSZWZlcmVuY2UpCgpkZWZpbmUgU3BlY2lhbHR5OiAgRkhJUkhlbHBlcnMuVG9Db25jZXB0KCJQcmFjdGl0aW9uZXJSb2xlIi5zcGVjaWFsdHlbMF0gYXMgRkhJUi5Db2RlYWJsZUNvbmNlcHQpLmNvZGVzCgpkZWZpbmUgUHJlZmVycmVkQ29tbXVuaWNhdGlvbjogeyhzaW5nbGV0b24gZnJvbSAoCiAgIk9yZGVyaW5nUHJvdmlkZXIiLnRlbGVjb20gdGVsZWNvbSB3aGVyZSB0ZWxlY29tLnJhbmsudmFsdWUgPSAxKSkuc3lzdGVtLnZhbHVlfQoKZGVmaW5lIE9yZ05hbWU6IChbT3JnYW5pemF0aW9uXSBvcmcpLm5hbWUudmFsdWUKCmRlZmluZSBNRDogKHNpbmdsZXRvbiBmcm9tICgKICAiT3JkZXJpbmdQcm92aWRlciIuaWRlbnRpZmllciBpZGVudGlmaWVyCiAgICB3aGVyZSBpZGVudGlmaWVyLnR5cGUuY29kaW5nWzBdLmNvZGUgPSAnTUQnKSkudmFsdWUudmFsdWUKCgovL3JldHJpZXZlIGEgY29sbGVjdGlvbiBvZiBpbnN0YW5jZXMgdGhhdCBhbGlnbiB3aXRoIFR1cmFsaW8gcHJlc2NyaWJlciBjZXJ0aWZpY2F0aW9uCmRlZmluZSBWYWxpZFR1cmFsaW9DcmVkZW50aWFsczogCiAgZnJvbSAiT3JkZXJpbmdQcm92aWRlciIucXVhbGlmaWNhdGlvbiBxdWFsaWZpY2F0aW9uIAogICAgd2hlcmUgcXVhbGlmaWNhdGlvbi5pZGVudGlmaWVyLnN5c3RlbS52YWx1ZSA9ICdodHRwOi8vd3d3Lm5sbS5uaWguZ292L3Jlc2VhcmNoL3VtbHMvcnhub3JtJyBhbmQgcXVhbGlmaWNhdGlvbi5pZGVudGlmaWVyLnZhbHVlLnZhbHVlID0gJzIxODMxMjYnCgovL3doZW4gZW1wdHksIGFsbCBhY2Nlc3NlcyBhcmUgbnVsbCBhbmQgc28gcHJlcG9wdWxhdGlvbiB3aWxsIGJlIGJsYW5rCmRlZmluZSBUaGlyZFBhcnR5Q3JlZGVudGlhbHM6IFZhbGlkVHVyYWxpb0NyZWRlbnRpYWxzWzBdLmNvZGUudGV4dC52YWx1ZQpkZWZpbmUgVGhpcmRQYXJ0eUlzc3VlcjogVmFsaWRUdXJhbGlvQ3JlZGVudGlhbHNbMF0uaXNzdWVyLmRpc3BsYXkudmFsdWUKCgoKCg==" + }, + { + "contentType": "application/elm+json", + "data": "eyJsaWJyYXJ5Ijp7ImFubm90YXRpb24iOlt7InRyYW5zbGF0b3JPcHRpb25zIjoiIiwidHlwZSI6IkNxbFRvRWxtSW5mbyJ9LHsibGlicmFyeUlkIjoiVHVyYWxpb1ByZXNjcmliZXJFbnJvbGxtZW50UHJlcG9wdWxhdGlvbiIsImxpYnJhcnlWZXJzaW9uIjoiMC4xLjAiLCJzdGFydExpbmUiOjI0LCJzdGFydENoYXIiOjEyMywiZW5kTGluZSI6MjQsImVuZENoYXIiOjEyNywibWVzc2FnZSI6Ikxpc3QtdmFsdWVkIGV4cHJlc3Npb24gd2FzIGRlbW90ZWQgdG8gYSBzaW5nbGV0b24uIiwiZXJyb3JUeXBlIjoic2VtYW50aWMiLCJlcnJvclNldmVyaXR5Ijoid2FybmluZyIsInR5cGUiOiJDcWxUb0VsbUVycm9yIn0seyJsaWJyYXJ5SWQiOiJUdXJhbGlvUHJlc2NyaWJlckVucm9sbG1lbnRQcmVwb3B1bGF0aW9uIiwibGlicmFyeVZlcnNpb24iOiIwLjEuMCIsInN0YXJ0TGluZSI6MjQsInN0YXJ0Q2hhciI6MTIzLCJlbmRMaW5lIjoyNCwiZW5kQ2hhciI6MTI3LCJtZXNzYWdlIjoiTGlzdC12YWx1ZWQgZXhwcmVzc2lvbiB3YXMgZGVtb3RlZCB0byBhIHNpbmdsZXRvbi4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJ3YXJuaW5nIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IlR1cmFsaW9QcmVzY3JpYmVyRW5yb2xsbWVudFByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjo1NCwic3RhcnRDaGFyIjo0MywiZW5kTGluZSI6NTQsImVuZENoYXIiOjQ3LCJtZXNzYWdlIjoiTGlzdC12YWx1ZWQgZXhwcmVzc2lvbiB3YXMgZGVtb3RlZCB0byBhIHNpbmdsZXRvbi4iLCJlcnJvclR5cGUiOiJzZW1hbnRpYyIsImVycm9yU2V2ZXJpdHkiOiJ3YXJuaW5nIiwidHlwZSI6IkNxbFRvRWxtRXJyb3IifSx7ImxpYnJhcnlJZCI6IlR1cmFsaW9QcmVzY3JpYmVyRW5yb2xsbWVudFByZXBvcHVsYXRpb24iLCJsaWJyYXJ5VmVyc2lvbiI6IjAuMS4wIiwic3RhcnRMaW5lIjo1NCwic3RhcnRDaGFyIjoxMzIsImVuZExpbmUiOjU0LCJlbmRDaGFyIjoxMzYsIm1lc3NhZ2UiOiJMaXN0LXZhbHVlZCBleHByZXNzaW9uIHdhcyBkZW1vdGVkIHRvIGEgc2luZ2xldG9uLiIsImVycm9yVHlwZSI6InNlbWFudGljIiwiZXJyb3JTZXZlcml0eSI6Indhcm5pbmciLCJ0eXBlIjoiQ3FsVG9FbG1FcnJvciJ9XSwiaWRlbnRpZmllciI6eyJpZCI6IlR1cmFsaW9QcmVzY3JpYmVyRW5yb2xsbWVudFByZXBvcHVsYXRpb24iLCJ2ZXJzaW9uIjoiMC4xLjAifSwic2NoZW1hSWRlbnRpZmllciI6eyJpZCI6InVybjpobDctb3JnOmVsbSIsInZlcnNpb24iOiJyMSJ9LCJ1c2luZ3MiOnsiZGVmIjpbeyJsb2NhbElkZW50aWZpZXIiOiJTeXN0ZW0iLCJ1cmkiOiJ1cm46aGw3LW9yZzplbG0tdHlwZXM6cjEifSx7ImxvY2FsSWRlbnRpZmllciI6IkZISVIiLCJ1cmkiOiJodHRwOi8vaGw3Lm9yZy9maGlyIiwidmVyc2lvbiI6IjQuMC4wIn1dfSwiaW5jbHVkZXMiOnsiZGVmIjpbeyJsb2NhbElkZW50aWZpZXIiOiJGSElSSGVscGVycyIsInBhdGgiOiJGSElSSGVscGVycyIsInZlcnNpb24iOiI0LjAuMCJ9XX0sInBhcmFtZXRlcnMiOnsiZGVmIjpbeyJuYW1lIjoiZGV2aWNlX3JlcXVlc3QiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsInBhcmFtZXRlclR5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfURldmljZVJlcXVlc3QiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19LHsibmFtZSI6InNlcnZpY2VfcmVxdWVzdCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwicGFyYW1ldGVyVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9U2VydmljZVJlcXVlc3QiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19LHsibmFtZSI6Im1lZGljYXRpb25fcmVxdWVzdCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwicGFyYW1ldGVyVHlwZVNwZWNpZmllciI6eyJuYW1lIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9TWVkaWNhdGlvblJlcXVlc3QiLCJ0eXBlIjoiTmFtZWRUeXBlU3BlY2lmaWVyIn19XX0sImNvZGVTeXN0ZW1zIjp7ImRlZiI6W3sibmFtZSI6IklDRC0xMC1DTSIsImlkIjoiaHR0cDovL2hsNy5vcmcvZmhpci9zaWQvaWNkLTEwLWNtIiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMifSx7Im5hbWUiOiJMT0lOQyIsImlkIjoiaHR0cDovL2xvaW5jLm9yZyIsImFjY2Vzc0xldmVsIjoiUHVibGljIn0seyJuYW1lIjoiU05PTUVELUNUIiwiaWQiOiJodHRwOi8vc25vbWVkLmluZm8vc2N0IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMifSx7Im5hbWUiOiJSWE5PUk0iLCJpZCI6Imh0dHA6Ly93d3cubmxtLm5paC5nb3YvcmVzZWFyY2gvdW1scy9yeG5vcm0iLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyJ9XX0sInZhbHVlU2V0cyI6eyJkZWYiOlt7Im5hbWUiOiJUdXJhbGlvVmFsdWVTZXQiLCJpZCI6Imh0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTIxOS4xOTciLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyJ9XX0sImNvZGVzIjp7ImRlZiI6W3sibmFtZSI6Ik9uY29sb2dpc3QiLCJpZCI6IjM5NDU5MjAwNCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiY29kZVN5c3RlbSI6eyJuYW1lIjoiU05PTUVELUNUIn19XX0sImNvbnRleHRzIjp7ImRlZiI6W3sibmFtZSI6IlBhdGllbnQifV19LCJzdGF0ZW1lbnRzIjp7ImRlZiI6W3sibmFtZSI6IlBhdGllbnQiLCJjb250ZXh0IjoiUGF0aWVudCIsImV4cHJlc3Npb24iOnsidHlwZSI6IlNpbmdsZXRvbkZyb20iLCJvcGVyYW5kIjp7ImRhdGFUeXBlIjoie2h0dHA6Ly9obDcub3JnL2ZoaXJ9UGF0aWVudCIsInR5cGUiOiJSZXRyaWV2ZSJ9fX0seyJuYW1lIjoiVG9kYXkiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiVG9kYXkifX0seyJuYW1lIjoiU2lnbmluZ1Byb3ZpZGVyUmVmZXJlbmNlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IkNvYWxlc2NlIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJyZWZlcmVuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InBlcmZvcm1lciIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiZGV2aWNlX3JlcXVlc3QiLCJ0eXBlIjoiUGFyYW1ldGVyUmVmIn19fX0seyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IiR0aGlzIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJwZXJmb3JtZXIiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6InNlcnZpY2VfcmVxdWVzdCIsInR5cGUiOiJQYXJhbWV0ZXJSZWYifX19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6InJlZmVyZW5jZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoicmVmZXJlbmNlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19fV0sIndoZXJlIjp7InR5cGUiOiJOb3QiLCJvcGVyYW5kIjp7InR5cGUiOiJJc051bGwiLCJvcGVyYW5kIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX19LHsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJyZWZlcmVuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InJlcXVlc3RlciIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoibWVkaWNhdGlvbl9yZXF1ZXN0IiwidHlwZSI6IlBhcmFtZXRlclJlZiJ9fX19XX19LHsibmFtZSI6Ik9yZGVyaW5nUHJvdmlkZXIiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6InByYWN0aXRpb25lciIsImV4cHJlc3Npb24iOnsiZGF0YVR5cGUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1QcmFjdGl0aW9uZXIiLCJ0eXBlIjoiUmV0cmlldmUifX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiQ29uY2F0ZW5hdGUiLCJvcGVyYW5kIjpbeyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiUHJhY3RpdGlvbmVyLyIsInR5cGUiOiJMaXRlcmFsIn0seyJuYW1lIjoiVG9TdHJpbmciLCJsaWJyYXJ5TmFtZSI6IkZISVJIZWxwZXJzIiwidHlwZSI6IkZ1bmN0aW9uUmVmIiwib3BlcmFuZCI6W3sicGF0aCI6ImlkIiwic2NvcGUiOiJwcmFjdGl0aW9uZXIiLCJ0eXBlIjoiUHJvcGVydHkifV19XX0seyJuYW1lIjoiU2lnbmluZ1Byb3ZpZGVyUmVmZXJlbmNlIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifV19fX19LHsibmFtZSI6IlF1YWxpZmljYXRpb25zIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IlNpbmdsZXRvbkZyb20iLCJvcGVyYW5kIjp7InR5cGUiOiJUb0xpc3QiLCJvcGVyYW5kIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoiY29kZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJ0eXBlIjoiSW5kZXhlciIsIm9wZXJhbmQiOlt7InBhdGgiOiJjb2RpbmciLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImNvZGUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsidHlwZSI6IkluZGV4ZXIiLCJvcGVyYW5kIjpbeyJwYXRoIjoicXVhbGlmaWNhdGlvbiIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlciIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIiwidmFsdWUiOiIwIiwidHlwZSI6IkxpdGVyYWwifV19fX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLCJ2YWx1ZSI6IjAiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19fX19fSx7Im5hbWUiOiJDcmVkZW50aWFscyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJMaXN0IiwiZWxlbWVudCI6W3sibmFtZSI6IlF1YWxpZmljYXRpb25zIiwidHlwZSI6IkV4cHJlc3Npb25SZWYifV19fSx7Im5hbWUiOiJQcmFjdGl0aW9uZXJSb2xlIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsidHlwZSI6IlNpbmdsZXRvbkZyb20iLCJvcGVyYW5kIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJwcm9sZSIsImV4cHJlc3Npb24iOnsiZGF0YVR5cGUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1QcmFjdGl0aW9uZXJSb2xlIiwidHlwZSI6IlJldHJpZXZlIn19XSwicmVsYXRpb25zaGlwIjpbXSwid2hlcmUiOnsidHlwZSI6IkVxdWFsIiwib3BlcmFuZCI6W3sicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJyZWZlcmVuY2UiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InByYWN0aXRpb25lciIsInNjb3BlIjoicHJvbGUiLCJ0eXBlIjoiUHJvcGVydHkifX19LHsibmFtZSI6IlNpZ25pbmdQcm92aWRlclJlZmVyZW5jZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn1dfX19fSx7Im5hbWUiOiJTcGVjaWFsdHkiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoiY29kZXMiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IlRvQ29uY2VwdCIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJzdHJpY3QiOmZhbHNlLCJ0eXBlIjoiQXMiLCJvcGVyYW5kIjp7InR5cGUiOiJJbmRleGVyIiwib3BlcmFuZCI6W3sicGF0aCI6InNwZWNpYWx0eSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiUHJhY3RpdGlvbmVyUm9sZSIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIiwidmFsdWUiOiIwIiwidHlwZSI6IkxpdGVyYWwifV19LCJhc1R5cGVTcGVjaWZpZXIiOnsibmFtZSI6IntodHRwOi8vaGw3Lm9yZy9maGlyfUNvZGVhYmxlQ29uY2VwdCIsInR5cGUiOiJOYW1lZFR5cGVTcGVjaWZpZXIifX1dfX19LHsibmFtZSI6IlByZWZlcnJlZENvbW11bmljYXRpb24iLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiTGlzdCIsImVsZW1lbnQiOlt7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoic3lzdGVtIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InR5cGUiOiJTaW5nbGV0b25Gcm9tIiwib3BlcmFuZCI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoidGVsZWNvbSIsImV4cHJlc3Npb24iOnsicGF0aCI6InRlbGVjb20iLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6Ik9yZGVyaW5nUHJvdmlkZXIiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9fX1dLCJyZWxhdGlvbnNoaXAiOltdLCJ3aGVyZSI6eyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InJhbmsiLCJzY29wZSI6InRlbGVjb20iLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLCJ2YWx1ZSI6IjEiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19fX19XX19LHsibmFtZSI6Ik9yZ05hbWUiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiIkdGhpcyIsImV4cHJlc3Npb24iOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6Im9yZyIsImV4cHJlc3Npb24iOnsiZGF0YVR5cGUiOiJ7aHR0cDovL2hsNy5vcmcvZmhpcn1Pcmdhbml6YXRpb24iLCJ0eXBlIjoiUmV0cmlldmUifX1dLCJyZWxhdGlvbnNoaXAiOltdfX1dLCJ3aGVyZSI6eyJ0eXBlIjoiTm90Iiwib3BlcmFuZCI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJwYXRoIjoibmFtZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoibmFtZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fX1dLCJ3aGVyZSI6eyJ0eXBlIjoiTm90Iiwib3BlcmFuZCI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX0sInJldHVybiI6eyJkaXN0aW5jdCI6ZmFsc2UsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19fSx7Im5hbWUiOiJNRCIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsidHlwZSI6IlNpbmdsZXRvbkZyb20iLCJvcGVyYW5kIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJpZGVudGlmaWVyIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoiaWRlbnRpZmllciIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlciIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJFcXVhbCIsIm9wZXJhbmQiOlt7Im5hbWUiOiJUb1N0cmluZyIsImxpYnJhcnlOYW1lIjoiRkhJUkhlbHBlcnMiLCJ0eXBlIjoiRnVuY3Rpb25SZWYiLCJvcGVyYW5kIjpbeyJwYXRoIjoiY29kZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJ0eXBlIjoiSW5kZXhlciIsIm9wZXJhbmQiOlt7InBhdGgiOiJjb2RpbmciLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InR5cGUiLCJzY29wZSI6ImlkZW50aWZpZXIiLCJ0eXBlIjoiUHJvcGVydHkifX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfUludGVnZXIiLCJ2YWx1ZSI6IjAiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19XX0seyJ2YWx1ZVR5cGUiOiJ7dXJuOmhsNy1vcmc6ZWxtLXR5cGVzOnIxfVN0cmluZyIsInZhbHVlIjoiTUQiLCJ0eXBlIjoiTGl0ZXJhbCJ9XX19fX19fSx7Im5hbWUiOiJWYWxpZFR1cmFsaW9DcmVkZW50aWFscyIsImNvbnRleHQiOiJQYXRpZW50IiwiYWNjZXNzTGV2ZWwiOiJQdWJsaWMiLCJleHByZXNzaW9uIjp7InR5cGUiOiJRdWVyeSIsInNvdXJjZSI6W3siYWxpYXMiOiJxdWFsaWZpY2F0aW9uIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoicXVhbGlmaWNhdGlvbiIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiT3JkZXJpbmdQcm92aWRlciIsInR5cGUiOiJFeHByZXNzaW9uUmVmIn19fV0sInJlbGF0aW9uc2hpcCI6W10sIndoZXJlIjp7InR5cGUiOiJBbmQiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IiR0aGlzIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJpZGVudGlmaWVyIiwic2NvcGUiOiJxdWFsaWZpY2F0aW9uIiwidHlwZSI6IlByb3BlcnR5In19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6InN5c3RlbSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoic3lzdGVtIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19fV0sIndoZXJlIjp7InR5cGUiOiJOb3QiLCJvcGVyYW5kIjp7InR5cGUiOiJJc051bGwiLCJvcGVyYW5kIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fSwicmV0dXJuIjp7ImRpc3RpbmN0IjpmYWxzZSwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX19LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1TdHJpbmciLCJ2YWx1ZSI6Imh0dHA6Ly93d3cubmxtLm5paC5nb3YvcmVzZWFyY2gvdW1scy9yeG5vcm0iLCJ0eXBlIjoiTGl0ZXJhbCJ9XX0seyJ0eXBlIjoiRXF1YWwiLCJvcGVyYW5kIjpbeyJ0eXBlIjoiU2luZ2xldG9uRnJvbSIsIm9wZXJhbmQiOnsidHlwZSI6IlF1ZXJ5Iiwic291cmNlIjpbeyJhbGlhcyI6IiR0aGlzIiwiZXhwcmVzc2lvbiI6eyJ0eXBlIjoiUXVlcnkiLCJzb3VyY2UiOlt7ImFsaWFzIjoiJHRoaXMiLCJleHByZXNzaW9uIjp7InBhdGgiOiJpZGVudGlmaWVyIiwic2NvcGUiOiJxdWFsaWZpY2F0aW9uIiwidHlwZSI6IlByb3BlcnR5In19XSwid2hlcmUiOnsidHlwZSI6Ik5vdCIsIm9wZXJhbmQiOnsidHlwZSI6IklzTnVsbCIsIm9wZXJhbmQiOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19LCJyZXR1cm4iOnsiZGlzdGluY3QiOmZhbHNlLCJleHByZXNzaW9uIjp7InBhdGgiOiJ2YWx1ZSIsInR5cGUiOiJQcm9wZXJ0eSIsInNvdXJjZSI6eyJuYW1lIjoiJHRoaXMiLCJ0eXBlIjoiQWxpYXNSZWYifX19fX1dLCJ3aGVyZSI6eyJ0eXBlIjoiTm90Iiwib3BlcmFuZCI6eyJ0eXBlIjoiSXNOdWxsIiwib3BlcmFuZCI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsibmFtZSI6IiR0aGlzIiwidHlwZSI6IkFsaWFzUmVmIn19fX0sInJldHVybiI6eyJkaXN0aW5jdCI6ZmFsc2UsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7Im5hbWUiOiIkdGhpcyIsInR5cGUiOiJBbGlhc1JlZiJ9fX19fSx7InZhbHVlVHlwZSI6Int1cm46aGw3LW9yZzplbG0tdHlwZXM6cjF9U3RyaW5nIiwidmFsdWUiOiIyMTgzMTI2IiwidHlwZSI6IkxpdGVyYWwifV19XX19fSx7Im5hbWUiOiJUaGlyZFBhcnR5Q3JlZGVudGlhbHMiLCJjb250ZXh0IjoiUGF0aWVudCIsImFjY2Vzc0xldmVsIjoiUHVibGljIiwiZXhwcmVzc2lvbiI6eyJwYXRoIjoidmFsdWUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6InRleHQiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsicGF0aCI6ImNvZGUiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsidHlwZSI6IkluZGV4ZXIiLCJvcGVyYW5kIjpbeyJuYW1lIjoiVmFsaWRUdXJhbGlvQ3JlZGVudGlhbHMiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIiwidmFsdWUiOiIwIiwidHlwZSI6IkxpdGVyYWwifV19fX19fSx7Im5hbWUiOiJUaGlyZFBhcnR5SXNzdWVyIiwiY29udGV4dCI6IlBhdGllbnQiLCJhY2Nlc3NMZXZlbCI6IlB1YmxpYyIsImV4cHJlc3Npb24iOnsicGF0aCI6InZhbHVlIiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJkaXNwbGF5IiwidHlwZSI6IlByb3BlcnR5Iiwic291cmNlIjp7InBhdGgiOiJpc3N1ZXIiLCJ0eXBlIjoiUHJvcGVydHkiLCJzb3VyY2UiOnsidHlwZSI6IkluZGV4ZXIiLCJvcGVyYW5kIjpbeyJuYW1lIjoiVmFsaWRUdXJhbGlvQ3JlZGVudGlhbHMiLCJ0eXBlIjoiRXhwcmVzc2lvblJlZiJ9LHsidmFsdWVUeXBlIjoie3VybjpobDctb3JnOmVsbS10eXBlczpyMX1JbnRlZ2VyIiwidmFsdWUiOiIwIiwidHlwZSI6IkxpdGVyYWwifV19fX19fV19fX0=" + } +] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Turalio/R4/resources/Questionnaire-R4-Prescriber-Knowledge-Assessment.json b/src/cds-library/CRD-DTR/Turalio/R4/resources/Questionnaire-R4-Prescriber-Knowledge-Assessment.json new file mode 100644 index 00000000..695c5c5b --- /dev/null +++ b/src/cds-library/CRD-DTR/Turalio/R4/resources/Questionnaire-R4-Prescriber-Knowledge-Assessment.json @@ -0,0 +1,360 @@ +{ + "resourceType": "Questionnaire", + "id": "TuralioPrescriberKnowledgeAssessment", + "name": "TuralioPrescriberKnowledgeAssessment", + "title": "Turalio REMS Prescriber Knowledge Assessment", + "status": "draft", + "subjectType": [ + "Prescriber" + ], + "date": "2022-05-28", + "publisher": "FDA-REMS", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicPractitionerInfo-prepopulation" + } + ], + "item": [ + { + "linkId": "1", + "type": "group", + "text": "Prescriber Information", + "item": [ + { + "linkId": "1.1", + "text": "First Name", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".FirstName" + } + }, + { + "url" : "http://hl7.org/fhir/StructureDefinition/minLength", + "valueInteger": 2 + } + ] + }, + { + "linkId": "1.2", + "text": "Last Name", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".LastName" + } + }, + { + "url" : "http://hl7.org/fhir/StructureDefinition/minLength", + "valueInteger": 2 + } + ] + }, + { + "linkId": "1.3", + "text": "Middle Initial", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".MiddleInitial" + } + } + ] + }, + { + "linkId": "1.4", + "text": "National Provider Identifier (NPI) #", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".NPI" + } + } + ] + }, + { + "linkId": "1.5", + "text": "Phone Number", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Phone" + } + } + ] + }, + { + "linkId": "1.6", + "text": "Fax Number", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Fax" + } + } + ] + }, + { + "linkId": "1.7", + "text": "Email", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Email" + } + } + ] + } + ] + }, + { + "linkId": "2", + "type": "group", + "text": "Knowledge Assessment: Questions 1-9", + "item": [ + { + "linkId": "2.1", + "text": "1. TURALIO is indicated for the treatment of adult patients with symptomatic tenosynovial giant cell tumor (TGCT) associated with severe morbidity or functional limitations and not amenable to improvement with surgery.", + "type": "choice", + "answerOption": [ + { + "valueCoding": { + "code": "true", + "display": "True" + } + }, + { + "valueCoding": { + "code": "false", + "display": "False" + } + } + ] + }, + { + "linkId": "2.2", + "text": "2. TURALIO is contraindicated in patients with hepatic impairment.", + "type": "choice", + "answerOption": [ + { + "valueCoding": { + "code": "true", + "display": "True" + } + }, + { + "valueCoding": { + "code": "false", + "display": "False" + } + } + ] + }, + { + "linkId": "2.3", + "text": "3. To prescribe TURALIO, I must enroll each patient in the TURALIO REMS by completing a Patient Enrollment Form with the patient and submitting it to the TURALIO REMS.", + "type": "choice", + "answerOption": [ + { + "valueCoding": { + "code": "true", + "display": "True" + } + }, + { + "valueCoding": { + "code": "false", + "display": "False" + } + } + ] + }, + { + "linkId": "2.4", + "text": "4. Before treating each patient with TURALIO, I must", + "type": "choice", + "answerOption": [ + { + "valueCoding": { + "code": "Become certified in the TURALIO REMS", + "display": "Become certified in the TURALIO REMS" + } + }, + { + "valueCoding": { + "code": "Counsel the patient regarding the risk of serious and potentially fatal liver injury associated with TURALIO", + "display": "Counsel the patient regarding the risk of serious and potentially fatal liver injury associated with TURALIO" + } + }, + { + "valueCoding": { + "code": "Obtain and review baseline liver tests", + "display": "Obtain and review baseline liver tests" + } + }, + { + "valueCoding": { + "code": "All of the above", + "display": "All of the above" + } + } + ] + }, + { + "linkId": "2.5", + "text": "5. One of the primary counseling messages I must tell my patients before prescribing TURALIO is", + "type": "choice", + "answerOption": [ + { + "valueCoding": { + "code": "Do not take TURALIO if you have vision issues", + "display": "Do not take TURALIO if you have vision issues" + } + }, + { + "valueCoding": { + "code": "Patients with renal impairment should not start TURALIO at a reduced dose", + "display": "Patients with renal impairment should not start TURALIO at a reduced dose" + } + }, + { + "valueCoding": { + "code": "There is a risk of liver injury associated with TURALIO and liver monitoring is required prior to treatment initiation and periodically while taking TURALIO", + "display": "There is a risk of liver injury associated with TURALIO and liver monitoring is required prior to treatment initiation and periodically while taking TURALIO" + } + }, + { + "valueCoding": { + "code": "None of the above", + "display": "None of the above" + } + } + ] + }, + { + "linkId": "2.6", + "text": "6. I am required to educate my patients on the signs and symptoms of liver injury and the need to notify me should they experience them.", + "type": "choice", + "answerOption": [ + { + "valueCoding": { + "code": "true", + "display": "True" + } + }, + { + "valueCoding": { + "code": "false", + "display": "False" + } + } + ] + }, + { + "linkId": "2.7", + "text": "7. If any dose modifications are required, they must be done in increments of 200 mg.", + "type": "choice", + "answerOption": [ + { + "valueCoding": { + "code": "true", + "display": "True" + } + }, + { + "valueCoding": { + "code": "false", + "display": "False" + } + } + ] + }, + { + "linkId": "2.8", + "text": "8. After treatment initiation, I need to monitor liver tests weekly for the first 8 weeks of treatment, every 2 weeks for the next month, and every 3 months thereafter.", + "type": "choice", + "answerOption": [ + { + "valueCoding": { + "code": "true", + "display": "True" + } + }, + { + "valueCoding": { + "code": "false", + "display": "False" + } + } + ] + }, + { + "linkId": "2.9", + "text": "9. I must complete a Patient Status Form for each patient taking TURALIO and submit it to the TURALIO REMS:", + "type": "choice", + "answerOption": [ + { + "valueCoding": { + "code": "Every month during treatment", + "display": "Every month during treatment" + } + }, + { + "valueCoding": { + "code": "Weekly for 8 weeks of treatment, every 2 weeks for the next month, and every 3 months thereafter", + "display": "Weekly for 8 weeks of treatment, every 2 weeks for the next month, and every 3 months thereafter" + } + }, + { + "valueCoding": { + "code": "Every month for the first 3 months of treatment, month 6, month 9, and month 12 of treatment, and every 6 months thereafter", + "display": "Every month for the first 3 months of treatment, month 6, month 9, and month 12 of treatment, and every 6 months thereafter" + } + }, + { + "valueCoding": { + "code": "Every month for the first 6 months of treatment and every 6 months thereafter", + "display": "Every month for the first 6 months of treatment and every 6 months thereafter" + } + }, + { + "valueCoding": { + "code": "None of the above", + "display": "None of the above" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Turalio/R4/resources/Questionnaire-R4-PrescriberEnrollment.json b/src/cds-library/CRD-DTR/Turalio/R4/resources/Questionnaire-R4-PrescriberEnrollment.json new file mode 100644 index 00000000..d86fa4ba --- /dev/null +++ b/src/cds-library/CRD-DTR/Turalio/R4/resources/Questionnaire-R4-PrescriberEnrollment.json @@ -0,0 +1,517 @@ +{ + "resourceType": "Questionnaire", + "id": "TuralioPrescriberEnrollmentForm", + "name": "TuralioPrescriberEnrollmentForm", + "title": "Turalio REMS Prescriber Enrollment Form", + "status": "draft", + "subjectType": [ + "Practitioner" + ], + "date": "2022-05-28", + "publisher": "FDA-REMS", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/TuralioPrescriberEnrollment-prepopulation" + } + ], + "item": [ + { + "linkId": "1", + "type": "group", + "text": "Prescriber Information", + "item": [ + { + "linkId": "1.1", + "text": "First Name", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".FirstName" + } + } + ] + }, + { + "linkId": "1.2", + "text": "Last Name", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".LastName" + } + } + ] + }, + { + "linkId": "1.3", + "text": "Middle Initial", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".MiddleInitial" + } + } + ] + }, + { + "linkId": "1.4", + "text": "Credentials", + "type": "open-choice", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrescriberEnrollmentPrepopulation\".Credentials" + } + } + ], + "answerOption": [ + { + "valueCoding": { + "code": "MD", + "display": "MD" + } + }, + { + "valueCoding": { + "code": "DO", + "display": "DO" + } + }, + { + "valueCoding": { + "code": "NP", + "display": "NP" + } + }, + { + "valueCoding": { + "code": "PA", + "display": "PA" + } + }, + { + "valueCoding": { + "code": "Other", + "display": "Other" + } + } + ] + }, + { + "linkId": "1.5", + "text": "Specialty", + "type": "open-choice", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrescriberEnrollmentPrepopulation\".Specialty" + } + } + ], + "answerOption": [ + { + "valueCoding": { + "code": "Oncology", + "display": "Oncology" + } + }, + { + "valueCoding": { + "code": "Orthopedics", + "display": "Orthopedics" + } + }, + { + "valueCoding": { + "code": "Other", + "display": "Other" + } + } + ] + }, + { + "linkId": "1.6", + "text": "National Provider Identifier (NPI) #", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".NPI" + } + } + ] + }, + { + "linkId": "1.7", + "text": "State License #", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrescriberEnrollmentPrepopulation\".MD" + } + } + ] + }, + { + "linkId": "1.8", + "text": "Practice/Facility Name", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrescriberEnrollmentPrepopulation\".OrgName" + } + } + ] + }, + { + "linkId": "1.9", + "text": "Street Address", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Line" + } + } + ] + }, + { + "linkId": "1.10", + "text": "City", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".City" + } + } + ] + }, + { + "linkId": "1.11", + "text": "State", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".State" + } + } + ] + }, + { + "linkId": "1.12", + "text": "ZIP Code", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Zip" + } + } + ] + }, + { + "linkId": "1.13", + "text": "Office Phone Number", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Phone" + } + } + ] + }, + { + "linkId": "1.14", + "text": "Office Fax Number", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Fax" + } + } + ] + }, + { + "linkId": "1.15", + "text": "E-Mail", + "type": "string", + "required": true, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Email" + } + } + ] + }, + { + "linkId": "1.16", + "text": "Preferred Method of Communication", + "type": "open-choice", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrescriberEnrollmentPrepopulation\".PreferredCommunication" + } + } + ], + "answerOption": [ + { + "valueCoding": { + "code": "Fax", + "display": "Fax" + } + }, + { + "valueCoding": { + "code": "Email", + "display": "Email" + } + }, + { + "valueCoding": { + "code": "Phone", + "display": "Phone" + } + } + ] + }, + { + "linkId": "1.17", + "text": "Preferred Time of Contact", + "type": "open-choice", + "required": false, + "answerOption": [ + { + "valueCoding": { + "code": "AM", + "display": "AM" + } + }, + { + "valueCoding": { + "code": "PM", + "display": "PM" + } + } + ] + } + + ] + }, + { + "linkId": "2", + "type": "group", + "text": "Office Contact Information", + "item": [ + { + "linkId": "2.1", + "text": "Prescribers may grant administrative rights to two (2) Office Contacts which allow them to view, edit, and initiate paperwork related to the TURALIO REMS via the REMS Portal.", + "type": "display" + }, + { + "linkId": "2.2", + "text": "I, the prescriber, grant administrative rights to the office contact(s) listed below and understand that I must review all paperwork and sign prior to submitting to the REMS.", + "type": "display" + }, + { + "linkId": "2.3", + "type": "group", + "text": "Office Contact #1 (Optional)", + "item": [ + { + "linkId": "2.3.1", + "text": "First Name", + "type": "string", + "required": false + }, + { + "linkId": "2.3.2", + "text": "Last Name", + "type": "string", + "required": false + }, + { + "linkId": "2.3.3", + "text": "Office Phone Number", + "type": "string", + "required": false + }, + { + "linkId": "2.3.4", + "text": "Office Fax Number", + "type": "string", + "required": false + }, + { + "linkId": "2.3.5", + "text": "Email", + "type": "string", + "required": false + } + ] + }, + { + "linkId": "2.4", + "type": "group", + "text": "Office Contact #2 (Optional)", + "item": [ + { + "linkId": "2.4.1", + "text": "First Name", + "type": "string", + "required": false + }, + { + "linkId": "2.4.2", + "text": "Last Name", + "type": "string", + "required": false + }, + { + "linkId": "2.4.3", + "text": "Office Phone Number", + "type": "string", + "required": false + }, + { + "linkId": "2.4.4", + "text": "Office Fax Number", + "type": "string", + "required": false + }, + { + "linkId": "2.4.5", + "text": "Email", + "type": "string", + "required": false + } + ] + }, + { + "linkId": "2.5", + "text": "Office Contacts can be updated by visiting www.turaliorems.com or contacting the TURALIO REMS Coordinating Center at 1-833-TURALIO (833-887-2546).", + "type": "display" + } + ] + }, + { + "linkId": "3", + "type": "group", + "text": "Prescriber Certification (if applicable)", + "item": [ + { + "linkId": "3.1", + "text": "Prescriber Certification Type", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrescriberEnrollmentPrepopulation\".ThirdPartyCredentials" + } + } + ] + }, + { + "linkId": "3.2", + "text": "Prescriber Certification Issuer", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrescriberEnrollmentPrepopulation\".ThirdPartyIssuer" + } + } + ] + } + ] + }, + { + "linkId": "4", + "type": "group", + "text": "Prescriber Attestations", + "item": [ + { + "linkId": "4.1", + "text": "By signing this form, I agree TURALIO is only available through the TURALIO REMS and I agree to comply with the following TURALIO REMS requirements: \n\n I have: \n - Reviewed the Prescribing Information, Program Overview and Prescriber Training. \n - Successfully completed the Prescriber Knowledge Assessment and submitted it to the TURALIO REMS. \n\n Before treatment initiation and with the first dose of TURALIO: \n - I understand that I should counsel the patient on the risk of serious and potentially fatal liver injury, and liver test monitoring at baseline and periodically during treatment. \n - I must assess the patient by obtaining baseline liver tests. I must submit the results of the assessment on the Patient Enrollment Form. \n - I must enroll patients in the TURALIO REMS by completing and submitting the Patient Enrollment Form. \n\n During treatment with TURALIO: \n - I must assess the patient by obtaining liver tests weekly for the first 8 weeks, then every 2 weeks for 1 month, then every 3 months and modify the dose of TURALIO as needed in accordance with the Prescribing Information. \n - I must prescribe no more than a 30 days supply for each of the first 3 months of treatment. \n - I must complete the Patient Status Form every month for the first 3 months of treatment, at months 6, 9, and 12 and then every 6 months thereafter while the patient receives TURALIO. \n\n At all times: \n - I must report adverse events of serious and potentially fatal liver injury by submitting the Liver Adverse Event Reporting Form. \n - I understand that Daiichi Sankyo, Inc. and/or its agents may contact me by phone, mail or email to provide or obtain additional information related to the REMS program, including details regarding any reported liver adverse events. \n", + "type": "display", + "readOnly": true + }, + { + "linkId": "4.2", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/provider-signature" + } + ], + "type": "display" + } + + ] + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Turalio/R4/resources/Questionnaire-R4-Turalio-ProgressNote.json b/src/cds-library/CRD-DTR/Turalio/R4/resources/Questionnaire-R4-Turalio-ProgressNote.json new file mode 100644 index 00000000..3d9fb7e4 --- /dev/null +++ b/src/cds-library/CRD-DTR/Turalio/R4/resources/Questionnaire-R4-Turalio-ProgressNote.json @@ -0,0 +1,273 @@ +{ + "resourceType": "Questionnaire", + "id": "TuralioRemsPatientStatus", + "name": "TuralioRemsPatientStatus", + "meta": { + "profile": [ + "http://hl7.org/fhir/StructureDefinition/cqf-questionnaire", + "http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/dtr-questionnaire-r4" + ] + }, + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/BasicClinicalInfo-prepopulation" + } + ], + "title": "Turalio Rems Patient Status", + "status": "draft", + "date": "2020-04-09", + "publisher": "Da Vinci DTR", + "subjectType": [ + "Patient" + ], + "item": [ + { + "linkId": "1", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/patient-info" + } + ], + "type": "display", + "text": "This is a placeholder for Patient/Beneficiary Demographics" + }, + { + "linkId": "2", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/practitioner-info" + } + ], + "type": "display", + "text": "This is a placeholder for Physician/NPP Demographics" + }, + { + "linkId": "3", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/encounter" + } + ], + "type": "display", + "text": "This is a placeholder for Encounter" + }, + { + "linkId": "4", + "text": "Current Other Diagnoses", + "type": "open-choice", + "repeats": true, + "required": true, + "answerOption": [] + }, + { + "linkId": "5", + "text": "Qualifying Transplants", + "type": "group", + "required": true, + "item": [ + { + "linkId": "5.1", + "text": "Transplants for Order", + "type": "open-choice", + "repeats": true, + "answerOption": [] + }, + { + "linkId": "5.2", + "text": "Date of transplant", + "type": "date", + "required": true + }, + { + "linkId": "5.3", + "text": "Institution where transplant was performed", + "type": "string" + }, + { + "linkId": "5.4", + "text": "Transplant met Medicare coverage criteria in effect at the time?", + "type": "choice", + "required": true, + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "code": "radio-button", + "system": "http://hl7.org/fhir/questionnaire-item-control" + } + ] + } + } + ] + }, + { + "linkId": "5.5", + "text": "If transplant is Pancreas (whole organ) alone, does patient meet the requirements defined in the guidance?", + "type": "choice", + "required": "true", + "answerValueSet": "http://terminology.hl7.org/ValueSet/yes-no-unknown-not-asked", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "code": "radio-button", + "system": "http://hl7.org/fhir/questionnaire-item-control" + } + ] + } + } + ], + "enableWhen": [ + { + "question": "5.1", + "operator": "=", + "answerCoding": { + "code": "698362007", + "system": "http://snomed.info/sct" + } + }, + { + "question": "5.1", + "operator": "=", + "answerCoding": { + "code": "62438007", + "system": "http://snomed.info/sct" + } + }, + { + "question": "5.1", + "operator": "=", + "answerCoding": { + "code": "67562009", + "system": "http://snomed.info/sct" + } + }, + { + "question": "5.1", + "operator": "=", + "answerCoding": { + "code": "71947008", + "system": "http://snomed.info/sct" + } + } + ], + "enableBehavior": "any" + } + ] + }, + { + "linkId": "6", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/subjective" + } + ], + "type": "display", + "text": "This is a placeholder for Subjective" + }, + { + "linkId": "7", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/review-of-system" + } + ], + "type": "display", + "text": "This is a placeholder for Review Of System" + }, + { + "linkId": "8", + "type": "group", + "text": "Physical Examination With Vital Signs", + "item": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/vital-signs" + } + ], + "linkId": "8.1", + "type": "display", + "text": "This is a placeholder for Vital Signs" + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/physical-exam" + } + ], + "linkId": "8.2", + "type": "display", + "text": "This is a placeholder for Physician Examination" + } + ] + }, + { + "linkId": "9", + "text": "Immunosuppressive Drug Treatment Plan", + "type": "group", + "item": [ + { + "linkId": "9.1", + "type": "text", + "text": "RxNorm Code" + }, + { + "linkId": "9.2", + "type": "text", + "text": "Drug" + }, + { + "linkId": "9.3", + "type": "text", + "text": "Route" + }, + { + "linkId": "9.4", + "type": "text", + "text": "Dose" + }, + { + "linkId": "9.5", + "type": "text", + "text": "Frequency" + } + ] + }, + { + "linkId": "10", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/assessment-and-plan" + } + ], + "type": "display", + "text": "This is a placeholder for Assessment and Plan" + }, + { + "linkId": "11", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/provider-signature" + } + ], + "type": "display", + "text": "This is a placeholder for Provider Signature" + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Turalio/R4/resources/Questionnaire-R4-Turalio.json b/src/cds-library/CRD-DTR/Turalio/R4/resources/Questionnaire-R4-Turalio.json new file mode 100644 index 00000000..6efc860c --- /dev/null +++ b/src/cds-library/CRD-DTR/Turalio/R4/resources/Questionnaire-R4-Turalio.json @@ -0,0 +1,1172 @@ +{ + "resourceType": "Questionnaire", + "id": "TuralioRemsPatientEnrollment", + "name": "TuralioRemsPatientEnrollment", + "title": "Turalio Rems Patient Enrollment", + "status": "draft", + "subjectType": [ + "Patient" + ], + "date": "2020-05-20", + "publisher": "Da Vinci DTR", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/cqf-library", + "valueCanonical": "http://hl7.org/fhir/us/davinci-dtr/Library/Turalio-prepopulation" + } + ], + "item": [ + { + "linkId": "1", + "type": "group", + "text": "Patient Information", + "item": [ + { + "linkId": "1.1", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/patient-info-base" + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire-expand", + "valueBoolean": true + } + ], + "type": "display" + }, + { + "linkId": "1.2", + "text": "Address Line 1", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".Line" + } + } + ] + }, + { + "linkId": "1.3", + "text": "Address Line 2", + "type": "string", + "required": false + }, + { + "linkId": "1.4", + "text": "City", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".City" + } + } + ] + }, + { + "linkId": "1.5", + "text": "State", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".State" + } + } + ] + }, + { + "linkId": "1.6", + "text": "Zip", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".Zip" + } + } + ] + }, + { + "linkId": "1.7", + "text": "Telephone", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".Phone" + } + } + ] + }, + { + "linkId": "1.8", + "text": "Email", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPatientInfoPrepopulation\".Email" + } + } + ] + }, + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unit", + "valueCoding": { + "display": "lbs" + } + }, + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".LatestWeightResult" + } + } + ], + "linkId": "1.9", + "code": [ + { + "code": "29463-7", + "display": "Body weight", + "system": "http://loinc.org" + } + ], + "type": "decimal", + "text": "Body weight" + }, + { + "linkId": "1.10", + "type": "group", + "text": "Body height", + "code": [ + { + "code": "8302-2", + "display": "Body height", + "system": "http://loinc.org" + } + ], + "item": [ + { + "type": "decimal", + "linkId": "1.10.1", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unit", + "valueCoding": { + "display": "ft" + } + } + ] + }, + { + "type": "decimal", + "linkId": "1.10.2", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unit", + "valueCoding": { + "display": "in" + } + } + ] + } + ] + }, + { + "linkId": "1.11", + "text": "Race", + "type": "open-choice", + "answerOption": [ + { + "valueCoding": { + "code": "American Indian or Alaskan Native", + "display": "American Indian or Alaskan Native" + } + }, + { + "valueCoding": { + "code": "Asian", + "display": "Asian" + } + }, + { + "valueCoding": { + "code": "Black or African American", + "display": "Black or African American" + } + }, + { + "valueCoding": { + "code": "Native Hawaiian or Other Pacific Islander", + "display": "Native Hawaiian or Other Pacific Islander" + } + }, + { + "valueCoding": { + "code": "White", + "display": "White" + } + } + ] + }, + { + "linkId": "1.12", + "text": "Is the patient currently taking pexidartinib (i.e., started prior to REMS enrollment)?", + "type": "boolean", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".TakingTuralio" + } + } + ], + "required": false, + "item": [ + { + "type": "date", + "linkId": "1.12.1", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".TuralioDate" + } + } + ], + "text": "If yes: When did patient start pexidartinib? Date (MM/DD/YYYY):", + "enableWhen": [ + { + "question": "1.12", + "operator": "=", + "answerBoolean": true + } + ] + }, + { + "type": "boolean", + "linkId": "1.12.2", + "text": "If yes: Was this part of a clinical study?", + "enableWhen": [ + { + "question": "1.12", + "operator": "=", + "answerBoolean": true + } + ], + "item": [ + { + "type": "string", + "linkId": "1.12.3", + "text": "Study Number", + "enableWhen": [ + { + "question": "1.12.2", + "operator": "=", + "answerBoolean": true + } + ] + }, + { + "type": "string", + "linkId": "1.12.4", + "text": "Subject ID", + "enableWhen": [ + { + "question": "1.12.2", + "operator": "=", + "answerBoolean": true + } + ] + }, + { + "type": "string", + "linkId": "1.12.5", + "text": "Comment" + } + ] + } + ] + } + ] + }, + { + "linkId": "2", + "type": "group", + "text": "Prescriber Information", + "item": [ + { + "linkId": "2.1", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/practitioner-info-base" + }, + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire-expand", + "valueBoolean": true + } + ], + "type": "display" + }, + { + "linkId": "2.2", + "text": "Practice/Facility Name (where you see this patient)", + "type": "string", + "required": false + }, + { + "linkId": "2.3", + "text": "Address Line 1", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Line" + } + } + ] + }, + { + "linkId": "2.4", + "text": "Address Line 2", + "type": "string", + "required": false + }, + { + "linkId": "2.5", + "text": "City", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".City" + } + } + ] + }, + { + "linkId": "2.6", + "text": "State", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".State" + } + } + ] + }, + { + "linkId": "2.7", + "text": "Zip", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Zip" + } + } + ] + }, + { + "linkId": "2.8", + "text": "Telephone", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Phone" + } + } + ] + }, + { + "linkId": "2.9", + "text": "Email", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"BasicPractitionerInfoPrepopulation\".Email" + } + } + ] + }, + { + "text": "Please visit www.turaliorems.com or contact the TURALIO REMS Coordinating Center at 1-833-TURALIO (833-887-2546) to designate up to two additional REMS certified prescribers who can view, edit, and submit REMS paperwork for your TURALIO patients.", + "type": "display", + "linkId": "2.10" + } + ] + }, + { + "linkId": "3", + "type": "group", + "text": "Baseline Labs", + "item": [ + { + "linkId": "3.1", + "text": "Assess the patient by obtaining liver tests as stated in the Prescribing Information. If Albumin or PT/INR were not obtained, indicate “not applicable.” Please provide the results below.", + "type": "group", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "item" : [ + { + "linkId": "3.1.1", + "text": "Laboratory Test", + "type": "string", + "initial": [{ + "valueString": "AST or SGOT" + }], + "readOnly": true + }, + { + "linkId": "3.1.2", + "text": "Baseline Value (units, reference range)", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".ASTResult" + } + } + ] + }, + { + "linkId": "3.1.3", + "text": "Date", + "type": "date", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".ASTDate" + } + } + ] + } + ] + }, + { + "linkId": "3.1", + "type": "group", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "item" : [ + { + "linkId": "3.1.1", + "text": "Laboratory Test", + "type": "string", + "initial": [{ + "valueString": "ALT or SGPT" + }], + "readOnly": true + }, + { + "linkId": "3.1.2", + "text": "Baseline Value (units, reference range)", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".ALTResult" + } + } + ] + }, + { + "linkId": "3.1.3", + "text": "Date", + "type": "date", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".ALTDate" + } + } + ] + } + ] + }, + { + "linkId": "3.1", + "type": "group", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "item" : [ + { + "linkId": "3.1.1", + "text": "Laboratory Test", + "type": "string", + "initial": [{ + "valueString": "GGT" + }], + "readOnly": true + }, + { + "linkId": "3.1.2", + "text": "Baseline Value (units, reference range)", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".GGTResult" + } + } + ] + }, + { + "linkId": "3.1.3", + "text": "Date", + "type": "date", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".GGTDate" + } + } + ] + } + ] + }, + { + "linkId": "3.1", + "type": "group", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "item" : [ + { + "linkId": "3.1.1", + "text": "Laboratory Test", + "type": "string", + "initial": [{ + "valueString": "Total Bilirubin" + }], + "readOnly": true + }, + { + "linkId": "3.1.2", + "text": "Baseline Value (units, reference range)", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".TotalBilirubinResult" + } + } + ] + }, + { + "linkId": "3.1.3", + "text": "Date", + "type": "date", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".TotalBilirubinDate" + } + } + ] + } + ] + }, + { + "linkId": "3.1", + "type": "group", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "item" : [ + { + "linkId": "3.1.1", + "text": "Laboratory Test", + "type": "string", + "initial": [{ + "valueString": "Direct Bilirubin" + }], + "readOnly": true + }, + { + "linkId": "3.1.2", + "text": "Baseline Value (units, reference range)", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".DirectBilirubinResult" + } + } + ] + }, + { + "linkId": "3.1.3", + "text": "Date", + "type": "date", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".DirectBilirubinDate" + } + } + ] + } + ] + }, + { + "linkId": "3.1", + "type": "group", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "item" : [ + { + "linkId": "3.1.1", + "text": "Laboratory Test", + "type": "string", + "initial": [{ + "valueString": "Alkaline Phosphatase" + }], + "readOnly": true + }, + { + "linkId": "3.1.2", + "text": "Baseline Value (units, reference range)", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".ALPResult" + } + } + ] + }, + { + "linkId": "3.1.3", + "text": "Date", + "type": "date", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".ALPDate" + } + } + ] + } + ] + }, + { + "linkId": "3.1", + "type": "group", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "item" : [ + { + "linkId": "3.1.1", + "text": "Laboratory Test", + "type": "string", + "initial": [{ + "valueString": "Albumin" + }], + "readOnly": true + }, + { + "linkId": "3.1.2", + "text": "Baseline Value (units, reference range)", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".AlbuminResult" + } + } + ] + }, + { + "linkId": "3.1.3", + "text": "Date", + "type": "date", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".AlbuminDate" + } + } + ] + } + ] + }, + { + "linkId": "3.1", + "type": "group", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/questionnaire-item-control", + "code": "gtable" + } + ] + } + } + ], + "item" : [ + { + "linkId": "3.1.1", + "text": "Laboratory Test", + "type": "string", + "initial": [{ + "valueString": "PT/INR" + }], + "readOnly": true + }, + { + "linkId": "3.1.2", + "text": "Baseline Value (units, reference range)", + "type": "string", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".PTResult" + } + } + ] + }, + { + "linkId": "3.1.3", + "text": "Date", + "type": "date", + "required": false, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".PTDate" + } + } + ] + } + ] + } + ] + }, + { + "linkId": "4", + "type": "group", + "text": "Current Medication (including prescription, non-prescription and herbal or dietary supplements)", + "item": [ + { + "linkId": "4.1", + "text": "Check box if there are no current medications", + "type": "boolean", + "required": false, + "initial": { + "value": false + }, + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".TakingMeds" + } + } + ] + }, + { + "linkId": "4.2", + "text": "Medication", + "type": "string", + "required": false, + "enableWhen": [ + { + "question": "4.1", + "operator": "=", + "answerBoolean": false + } + ], + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".Meds" + } + } + ] + } + ] + }, + { + "linkId": "5", + "type": "group", + "text": "Hepatic Medical History", + "item": [ + { + "linkId": "5.1", + "text": "Check box in this section if there is no hepatic medical history", + "type": "boolean", + "required": false, + "initial": { + "value": false + } + }, + { + "linkId": "5.2", + "text": "Check all that apply", + "type": "choice", + "extension": [ + { + "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression", + "valueExpression": { + "language": "text/cql", + "expression": "\"TuralioPrepopulation\".MedicalHistory" + } + } + ], + "required": true, + "repeats": true, + "enableWhen": [ + { + "question": "5.1", + "operator": "=", + "answerBoolean": false + } + ], + "answerOption": [ + { + "valueCoding": { + "code": "3738000", + "system": "http://snomed.info/sct", + "display": "Hepatitis Viral Status" + } + }, + { + "valueCoding": { + "code": "85057007", + "system": "http://snomed.info/sct", + "display": "Hepatic Cyst" + } + }, + { + "valueCoding": { + "code": "235877000", + "system": "http://snomed.info/sct", + "display": "Ischemic Hepatitis" + } + }, + { + "valueCoding": { + "code": "15167005", + "system": "http://snomed.info/sct", + "display": "Alcohol Abuse" + } + }, + { + "valueCoding": { + "code": "266902008", + "system": "http://snomed.info/sct", + "display": "Family History of Liver Disease" + } + }, + { + "valueCoding": { + "code": "408335007", + "system": "http://snomed.info/sct", + "display": "Autoimmune Hepatitis" + } + }, + { + "valueCoding": { + "code": "88518009", + "system": "http://snomed.info/sct", + "display": "Wilson’s Disease" + } + }, + { + "valueCoding": { + "code": "26416006", + "system": "http://snomed.info/sct", + "display": "Drug Abuse" + } + }, + { + "valueCoding": { + "code": "27503000", + "system": "http://snomed.info/sct", + "display": "Gilbert’s syndrome" + } + }, + { + "valueCoding": { + "code": "363140000", + "system": "http://snomed.info/sct", + "display": "Hypolipoproteinemia" + } + }, + { + "valueCoding": { + "code": "14783006", + "system": "http://snomed.info/sct", + "display": "Familial Hyperbilirubinemia" + } + }, + { + "valueCoding": { + "code": "56882008", + "system": "http://snomed.info/sct", + "display": "Anorexia" + } + }, + { + "valueCoding": { + "code": "105997008", + "system": "http://snomed.info/sct", + "display": "Biliary Tract Disorder" + } + }, + { + "valueCoding": { + "code": "302870006", + "system": "http://snomed.info/sct", + "display": "Hypertriglyceridemia" + } + }, + { + "valueCoding": { + "code": "19943007", + "system": "http://snomed.info/sct", + "display": "Cirrhosis" + } + }, + { + "valueCoding": { + "code": "39621005", + "system": "http://snomed.info/sct", + "display": "Gallbladder Disease/ Gallstones/ Bile Duct Occlusion" + } + }, + { + "valueCoding": { + "code": "73211009", + "system": "http://snomed.info/sct", + "display": "Diabetes" + } + } + ] + } + ] + }, + { + "linkId": "6", + "type": "group", + "text": "Prescriber Agreement", + "item": [ + { + "linkId": "6.1", + "text": "I have reviewed and discussed the risks of TURALIO and the requirements of the TURALIO REMS with this patient.", + "type": "display" + }, + { + "linkId": "6.2", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/provider-signature" + } + ], + "type": "display" + } + ] + }, + { + "linkId": "7", + "type": "group", + "text": "Patient Attestation", + "item": [ + { + "linkId": "7.1", + "text": "In order to receive TURALIO I must be enrolled in the TURALIO REMS. The TURALIO REMS will collect data to assess the risk of serious liver problems which can be severe and lead to death as described in the Patient Guide. \n • I agree to enroll in the Patient Registry. \n • I agree to review the Patient Guide. \n • I must get blood tests to test my liver as directed by my healthcare provider. \n • I agree to tell my healthcare provider if I have signs and/or symptoms of liver injury. \n • My personal information will be shared to enroll me in the Patient Registry so that my health and any liver injury can be evaluated while I am receiving TURALIO. \n • Daiichi Sankyo, Inc., and its agents, may contact me or my prescriber by phone, mail or email to manage the TURALIO REMS. \n • Daiichi Sankyo, Inc., and its agents, may use and share my personal health information, including lab tests and prescriptions as part of the TURALIO REMS. My information will be protected and will be used to enroll me into and manage the TURALIO REMS. My health information may be shared with the U.S. Food and Drug Administration (FDA) to evaluate the TURALIO REMS.", + "type": "display", + "readOnly": true + }, + { + "linkId": "7.2", + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/sub-questionnaire", + "valueCanonical": "questionnaire/patient-signature" + } + ], + "type": "display" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/cds-library/CRD-DTR/Turalio/TopicMetadata.json b/src/cds-library/CRD-DTR/Turalio/TopicMetadata.json new file mode 100644 index 00000000..ad847ebf --- /dev/null +++ b/src/cds-library/CRD-DTR/Turalio/TopicMetadata.json @@ -0,0 +1,17 @@ +{ + "topic": "Turalio", + "payers": [ + "cms" + ], + "mappings": [ + { + "codeSystem": "rxnorm", + "codes":[ + "2183126" + ] + } + ], + "fhirVersions": [ + "R4" + ] +} diff --git a/src/config.ts b/src/config.ts index 1f3bdb79..e7a72845 100644 --- a/src/config.ts +++ b/src/config.ts @@ -22,7 +22,8 @@ export default { level: 'info' }, general: { - resourcePath: 'CDS-Library/CRD-DTR' + resourcePath: 'src/cds-library/CRD-DTR', + VsacApiKey: env.VSAC_KEY }, database: { selected: 'tingo', @@ -101,7 +102,16 @@ export default { }, questionnaire: { service: './src/services/questionnaire.service.ts', - versions: [fhirConstants.VERSIONS['4_0_0']] + versions: [fhirConstants.VERSIONS['4_0_0']], + operation: [ + { + name: 'questionnaire-package', + route: '/:id/$questionnaire-package', + method: 'POST', + reference: + 'https://build.fhir.org/ig/HL7/davinci-dtr/OperationDefinition-Questionnaire-for-Order.html' + } + ] }, questionnaireresponse: { service: './src/services/questionnaireresponse.service.ts', diff --git a/src/fhir/questionnaireUtilities.ts b/src/fhir/questionnaireUtilities.ts new file mode 100644 index 00000000..5402ee24 --- /dev/null +++ b/src/fhir/questionnaireUtilities.ts @@ -0,0 +1,403 @@ +import { + Bundle, + BundleEntry, + DataRequirement, + Extension, + FhirResource, + Library, + Parameters, + Questionnaire, + QuestionnaireItem, + ValueSet +} from 'fhir/r4'; +import constants from '../constants'; +import { Globals } from '../globals'; +import { FhirUtilities } from './utilities'; +import container from '../lib/winston'; +import config from '../config'; +import axios from 'axios'; + +interface ResourceTable { + [key: string]: FhirResource; +} +interface ValueSetMap { + [key: string]: ValueSet; +} +interface LibraryMap { + [key: string]: Library; +} + +const VSAC_CANONICAL_BASE = 'https://cts.nlm.nih.gov/fhir/ValueSet/'; +const CQF_LIBRARY_EXTENSION = 'http://hl7.org/fhir/StructureDefinition/cqf-library'; + +export class QuestionnaireUtilities { + static logger = container.get('application'); + static async createPackageFromQuestionnaire(questionnaire: Questionnaire) { + questionnaire = await this.processSubQuestionnaires(questionnaire); + const processedQuestionnaire = await this.processValueSets(questionnaire); + const bundle: Bundle = { resourceType: 'Bundle', type: 'collection' }; + const entries: BundleEntry[] = []; + const extensions = processedQuestionnaire.extension || []; + const fetchedSets: ValueSetMap = {}; + const fetchedLibraries: LibraryMap = {}; + for (const extension of extensions) { + if (extension.url === CQF_LIBRARY_EXTENSION) { + // library to load + const valueCanonical = extension.valueCanonical; + if (valueCanonical) { + // note: libraries have already been checked for duplicates when originally processed + const library = await this.findLibraryByUrl(valueCanonical); + if (library && library.id && !fetchedLibraries[library.id]) { + fetchedLibraries[library.id] = library; + await this.getAllRelatedLibraries(library, fetchedLibraries); + } + } + } + } + for (const key of Object.keys(fetchedLibraries)) { + const library: Library = fetchedLibraries[key]; + const libraryEntry: BundleEntry = { resource: library }; + entries.push(libraryEntry); + const valueSets = await this.processLibraryCodeFilters(library, fetchedSets); + for (const valueSet of valueSets) { + const valueSetEntry: BundleEntry = { resource: valueSet }; + entries.push(valueSetEntry); + } + } + const questionnaireEntry: BundleEntry = { resource: processedQuestionnaire }; + entries.push(questionnaireEntry); + bundle.entry = entries; + const parameter: Parameters = { + resourceType: 'Parameters', + parameter: [ + { + name: 'return', + resource: bundle + } + ] + }; + return parameter; + } + + // Input object fetchedLibraries modified to contain all related artifacts + static async getAllRelatedLibraries(library: Library, fetchedLibraries: LibraryMap) { + if (library.relatedArtifact) { + for (const artifact of library.relatedArtifact) { + if (artifact.type === 'depends-on' && artifact.resource) { + const parts = artifact.resource.split('/'); + const resourceType = parts[0]; + const artifactId = parts[1]; + if (resourceType === 'Library' && artifactId) { + if (!fetchedLibraries[artifactId]) { + const fetchedLibrary = await this.findLibraryById(artifactId); + if (fetchedLibrary) { + fetchedLibraries[artifactId] = fetchedLibrary; + this.getAllRelatedLibraries(fetchedLibrary, fetchedLibraries); // recurse + } + } + } + } + } + } + } + static async fetchValueSetFromVSAC(url: string) { + const username = 'apikey'; + const password = config.general.VsacApiKey; + const response = await axios(url, { + method: 'GET', + headers: { + Authorization: `Basic ${Buffer.from(username + ':' + password).toString('base64')}`, + 'Content-Type': 'application/json' + } + }); + try { + const body: ValueSet = await response.data; + // the url returns with http but it should be https? This might be a product of not using the ticket API here + // nevertheless, to search by url on our own database, the url must match what's in the library resource. + // so here the http version of the url is replaced by the one used to fetch the resource (https version of the url) + body.url = url; + return body; + } catch { + this.logger.warn(`VSAC Loader >> Failed to fetch ValueSet: ${url}`); + return undefined; + } + } + // On load of new library, finds ValueSets in codefilters and + // loads them as well + static async processLibraryCodeFilters(library: Library, fetchedSets: ValueSetMap) { + const returnValue: ValueSet[] = []; + const dataReqs: DataRequirement[] = library.dataRequirement || []; + for (const dataReq of dataReqs) { + const filters = dataReq.codeFilter || []; + for (const filter of filters) { + const valueSetUrl = filter.valueSet; + if (valueSetUrl) { + const keys = Object.keys(fetchedSets); + if (!(valueSetUrl in keys)) { + // needs case where valueSet is not from VSAC, it could be a local reference + if (valueSetUrl.startsWith(VSAC_CANONICAL_BASE)) { + let valueSet = await this.findValueSetByUrl(valueSetUrl); + if (!valueSet) { + valueSet = await this.fetchValueSetFromVSAC(valueSetUrl); + if (valueSet) { + await FhirUtilities.store( + valueSet, + function () { + return; + }, + function () { + return; + } + ); + } else { + this.logger.warn(`Library Processor >> Failed to find ValueSet: ${valueSetUrl}`); + } + } + + if (valueSet && valueSet.url) { + // add valueSets we've already fetched to the fetched sets so we don't do it again + if (!fetchedSets[valueSet.url]) { + fetchedSets[valueSet.url] = valueSet; + } + returnValue.push(valueSet); + } + } + } + } + } + } + return returnValue; + } + static async findQuestionnaire(id: string): Promise { + return new Promise((resolve, reject) => { + const Questionnaire = FhirUtilities.getQuestionnaire('4_0_0'); + // Grab an instance of our DB and collection + const db = Globals.database; + const collection = db.collection(`${constants.COLLECTION.QUESTIONNAIRE}_${'4_0_0'}`); + // Query our collection for this observation + collection.findOne({ id: id.toString() }, (err: any, questionnaire: Questionnaire) => { + if (err) { + return reject(err); + } + if (questionnaire) { + resolve(new Questionnaire(questionnaire)); + } + resolve(undefined); + }); + }); + } + static async findLibraryByUrl(url: string): Promise { + return new Promise((resolve, reject) => { + const Library = FhirUtilities.getLibrary('4_0_0'); + const db = Globals.database; + const collection = db.collection(`${constants.COLLECTION.LIBRARY}_${'4_0_0'}`); + collection.findOne({ url: url.toString() }, (err: any, library: Library) => { + if (err) { + return reject(err); + } + if (library) { + resolve(new Library(library)); + } + resolve(undefined); + }); + }); + } + static async findLibraryById(id: string): Promise { + return new Promise((resolve, reject) => { + const Library = FhirUtilities.getLibrary('4_0_0'); + const db = Globals.database; + const collection = db.collection(`${constants.COLLECTION.LIBRARY}_${'4_0_0'}`); + collection.findOne({ id: id.toString() }, (err: any, library: Library) => { + if (err) { + return reject(err); + } + if (library) { + resolve(new Library(library)); + } + resolve(undefined); + }); + }); + } + static async findValueSetByUrl(url: string): Promise { + return new Promise((resolve, reject) => { + const ValueSet = FhirUtilities.getValueSet('4_0_0'); + const db = Globals.database; + const collection = db.collection(`${constants.COLLECTION.VALUESET}_${'4_0_0'}`); + collection.findOne({ url: url.toString() }, (err: any, valueset: ValueSet) => { + if (err) { + return reject(err); + } + if (valueset) { + resolve(new ValueSet(valueset)); + } + resolve(undefined); + }); + }); + } + static async processSubQuestionnaires(questionnaire: Questionnaire) { + const extensions = questionnaire.extension || []; + const contained = questionnaire.contained || []; + const containedList: ResourceTable = {}; + contained.forEach(item => { + if (item.id) { + containedList[item.id] = item; + } + }); + const containedSize = Object.keys(containedList).length; + const items = questionnaire.item || []; + await this.processItemList(items, extensions, containedList); + questionnaire.item = items; + const containedValues = Object.values(containedList); + if (containedSize !== containedValues.length) { + questionnaire.contained = containedValues; + } + return questionnaire; + } + static async processItemList( + items: QuestionnaireItem[], + extensions: Extension[], + containedList: ResourceTable + ) { + if (items.length === 0) { + return; + } + for (let i = 0; i < items.length; ) { + const subItems = await this.processItem(items[i], extensions, containedList); + let increment = 0; + if (subItems !== undefined && subItems.length !== 0) { + if (subItems.length === 1) { + items[i] = subItems[0]; + } else { + items.splice(i, 1); + subItems.forEach((e, j) => { + items.splice(i + j, 0, e); //replace old item with new expanded version + }); + } + increment = subItems.length; + } + i = i + increment; + } + } + static async processItem( + item: QuestionnaireItem, + extensions: Extension[], + containedList: ResourceTable + ) { + const ext = this.getExtension( + item, + 'http://hl7.org/fhir/StructureDefinition/sub-questionnaire' + ); + if (ext) { + const subQ = ext.valueCanonical; + if (subQ) { + // not undefind + let id = subQ; + const parts = subQ.split('/'); + if (id.length > 1) { + id = parts[1]; + } + let expandRootItem = false; + const expandExt = this.getExtension( + item, + 'http://hl7.org/fhir/StructureDefinition/sub-questionnaire-expand' + ); + if (expandExt && expandExt.valueBoolean) { + expandRootItem = expandExt.valueBoolean; + } + const subQuestionnaire = await this.findQuestionnaire(id); + if (subQuestionnaire) { + const subExtensions = subQuestionnaire.extension || []; + subExtensions.forEach(ext => { + const matches = extensions.filter(ext2 => { + return ext2.valueCanonical === ext.valueCanonical; + }); + if (matches.length === 0) { + // no matches, merge extension + extensions.push(ext); + } + }); + subQuestionnaire.contained?.forEach(containedItem => { + if (containedItem.id) { + containedList[containedItem.id] = containedItem; + } + }); + const rootItems = subQuestionnaire.item || []; + if (!expandRootItem || rootItems.length > 1) { + return rootItems; + } else { + return rootItems[0].item; + } + } else { + return [item]; + } + } else { + return [item]; + } + } + if (item.item) { + await this.processItemList(item.item, extensions, containedList); + } + return [item]; + } + static getExtension(item: QuestionnaireItem, url: string) { + return item.extension?.find(ext => { + return ext.url === url; + }); + } + static async processValueSets(questionnaire: Questionnaire) { + const valueSetMap: ValueSetMap = {}; + if (questionnaire.item) { + await this.findAndReplaceValueSetReferences(questionnaire.item, valueSetMap); + } + const keys = Object.keys(valueSetMap); + if (keys.length > 0) { + if (questionnaire.contained === undefined) { + questionnaire.contained = []; + } + keys.forEach(key => { + const valueSet = valueSetMap[key]; + questionnaire.contained?.push(valueSet); + }); + } + return questionnaire; + } + static async findAndReplaceValueSetReferences( + items: QuestionnaireItem[], + valueSetMap: ValueSetMap + ) { + for (const itemComponent of items) { + if (itemComponent.answerValueSet !== undefined) { + if (!itemComponent.answerValueSet.startsWith('#')) { + const valueSetId = await this.findAndLoadValueSet( + itemComponent.answerValueSet, + valueSetMap + ); + if (valueSetId) { + itemComponent.answerValueSet = `#${valueSetId}`; + } else { + this.logger.warn(`Referenced ValueSet: ${itemComponent.answerValueSet} was not found`); + } + } + } + if (itemComponent.item) { + await this.findAndReplaceValueSetReferences(itemComponent.item, valueSetMap); + } + } + } + + static async findAndLoadValueSet(url: string, valueSetMap: ValueSetMap) { + if (url in Object.keys(valueSetMap)) { + return valueSetMap[url].id; + } + const valueSet = await this.findValueSetByUrl(url); + if (valueSet) { + valueSet.url = `#${valueSet.id}`; + console.log(`findAndLoadValueSet: ${valueSet?.id}`); + + valueSetMap[url] = valueSet; + return valueSet.id; + } else { + return undefined; + } + } +} diff --git a/src/fhir/utilities.ts b/src/fhir/utilities.ts index 84a978c8..a7fb29e1 100644 --- a/src/fhir/utilities.ts +++ b/src/fhir/utilities.ts @@ -9,6 +9,7 @@ import * as path from 'path'; import * as fs from 'fs'; import * as process from 'process'; import crypto from 'crypto'; +import { QuestionnaireUtilities } from './questionnaireUtilities'; const re = /(?:\.([^.]+))?$/; @@ -58,6 +59,7 @@ export class FhirUtilities { case 'Library': collectionString = `${constants.COLLECTION.LIBRARY}_${baseVersion}`; historyCollectionString = `${constants.COLLECTION.LIBRARY}_${baseVersion}_History`; + await QuestionnaireUtilities.processLibraryCodeFilters(resource, {}); break; case 'Patient': collectionString = `${constants.COLLECTION.PATIENT}_${baseVersion}`; diff --git a/src/hooks/rems.hook.ts b/src/hooks/rems.hook.ts index 6949e2bb..37c183ed 100644 --- a/src/hooks/rems.hook.ts +++ b/src/hooks/rems.hook.ts @@ -35,14 +35,14 @@ const codeMap: { [key: string]: Link[] } = { { label: 'Patient Status Update Form', appContext: - 'questionnaire=http://localhost:8090/fhir/r4/Questionnaire/TuralioRemsPatientStatus', + 'questionnaire=http://localhost:8090/4_0_0/Questionnaire/TuralioRemsPatientStatus', type: 'smart', url: new URL(config.smart.endpoint) }, { label: 'Patient Enrollment Form', appContext: - 'questionnaire=http://localhost:8090/fhir/r4/Questionnaire/TuralioRemsPatientEnrollment', + 'questionnaire=http://localhost:8090/4_0_0/Questionnaire/TuralioRemsPatientEnrollment', type: 'smart', url: new URL(config.smart.endpoint) } @@ -79,7 +79,7 @@ const codeMap: { [key: string]: Link[] } = { { label: 'Patient Enrollment Form', appContext: - 'questionnaire=http://localhost:8090/fhir/r4/Questionnaire/IPledgeRemsPatientEnrollment', + 'questionnaire=http://localhost:8090/4_0_0/Questionnaire/IPledgeRemsPatientEnrollment', type: 'smart', url: new URL(config.smart.endpoint) } @@ -109,7 +109,7 @@ const codeMap: { [key: string]: Link[] } = { { label: 'Patient Enrollment Form', appContext: - 'questionnaire=http://localhost:8090/fhir/r4/Questionnaire/TIRFRemsPatientEnrollment', + 'questionnaire=http://localhost:8090/4_0_0/Questionnaire/TIRFRemsPatientEnrollment', type: 'smart', url: new URL(config.smart.endpoint) } diff --git a/src/lib/winston.ts b/src/lib/winston.ts index e3dc5909..975e5688 100644 --- a/src/lib/winston.ts +++ b/src/lib/winston.ts @@ -15,7 +15,11 @@ const applicationTransports = []; // Create a console transport const transportConsole = new transports.Console({ level: logConfig.level, - format: winston.format.combine(winston.format.colorize(), winston.format.json()) + format: winston.format.combine( + winston.format.prettyPrint(), + winston.format.json(), + winston.format.splat() + ) }); applicationTransports.push(transportConsole); diff --git a/src/services/questionnaire.service.ts b/src/services/questionnaire.service.ts index 79ede48f..ed6a1bab 100644 --- a/src/services/questionnaire.service.ts +++ b/src/services/questionnaire.service.ts @@ -1,6 +1,8 @@ import constants from '../constants'; import { Globals } from '../globals'; import { FhirUtilities } from '../fhir/utilities'; +import { Questionnaire } from 'fhir/r4'; +import { QuestionnaireUtilities } from '../fhir/questionnaireUtilities'; module.exports.searchById = (args: any) => new Promise((resolve, reject) => { @@ -8,12 +10,11 @@ module.exports.searchById = (args: any) => console.log('Questionnaire >>> searchById: -- ' + id); const Questionnaire = FhirUtilities.getQuestionnaire(base_version); - // Grab an instance of our DB and collection const db = Globals.database; const collection = db.collection(`${constants.COLLECTION.QUESTIONNAIRE}_${base_version}`); // Query our collection for this observation - collection.findOne({ id: id.toString() }, (err: any, questionnaire: any) => { + collection.findOne({ id: id.toString() }, (err: any, questionnaire: Questionnaire) => { if (err) { console.log('Error with Questionnaire.searchById: ', err); return reject(err); @@ -32,3 +33,25 @@ module.exports.create = (args: any, req: any) => const { base_version } = args; FhirUtilities.store(resource, resolve, reject, base_version); }); + +module.exports.questionnairePackage = (args: any, context: any, logger: any) => { + logger.info('Running Questionnaire Package /:id/$questionnaire-package'); + return new Promise((resolve, reject) => { + const { base_version, id } = args; + const Questionnaire = FhirUtilities.getQuestionnaire(base_version); + const db = Globals.database; + const collection = db.collection(`${constants.COLLECTION.QUESTIONNAIRE}_${base_version}`); + collection.findOne({ id: id.toString() }, async (err: any, questionnaire: Questionnaire) => { + if (err) { + console.log('Error finding Questionnaire: ', err); + return reject(err); + } + if (questionnaire) { + const unprocessedQ = new Questionnaire(questionnaire); + const parameters = QuestionnaireUtilities.createPackageFromQuestionnaire(unprocessedQ); + resolve(parameters); + } + resolve(''); + }); + }); +};