Clinical Quality Language Specification
1.5.3 - Release 1 Errata 2

Clinical Quality Language Specification, published by Clinical Decision Support WG. This guide is not an authorized publication; it is the continuous build for version 1.5.3 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/cql/ and changes regularly. See the Directory of published versions

: ELM Schema - ClinicalExpression - JSON Representation

Raw json | Download

{
  "resourceType" : "Binary",
  "id" : "binary-schema-clinicalexpression",
  "contentType" : "application/xsd",
  "data" : "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxucz0idXJuOmhsNy1vcmc6ZWxtOnIxIiB4bWxuczpzY2g9Imh0dHA6Ly9wdXJsLm9jbGMub3JnL2RzZGwvc2NoZW1hdHJvbiIgdGFyZ2V0TmFtZXNwYWNlPSJ1cm46aGw3LW9yZzplbG06cjEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4NCgk8eHM6YW5ub3RhdGlvbj4NCgkJPHhzOmRvY3VtZW50YXRpb24+DQoJCQlUaGlzIGZpbGUgZGVmaW5lcyB0aGUgZXhwcmVzc2lvbiBleHRlbnNpb25zIHRoYXQgaW50cm9kdWNlIGNsaW5pY2FsbHkgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIHN1Y2ggYXMgY2xpbmljYWwgZGF0YSBhY2Nlc3MsIHRlcm1pbm9sb2d5LCBhbmQgdmFsdWUgc2V0IGNvbnNpZGVyYXRpb25zLg0KCQk8L3hzOmRvY3VtZW50YXRpb24+DQoJPC94czphbm5vdGF0aW9uPg0KCTx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJleHByZXNzaW9uLnhzZCIvPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJSZXRyaWV2ZSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIHJldHJpZXZlIGV4cHJlc3Npb24gZGVmaW5lcyBjbGluaWNhbCBkYXRhIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBhcnRpZmFjdC4gVGhpcyBleHByZXNzaW9uIGFsbG93cyBjbGluaWNhbGx5IHJlbGV2YW50IGZpbHRlcmluZyBjcml0ZXJpYSB0byBiZSBwcm92aWRlZCBpbiBhIHdlbGwtZGVmaW5lZCBhbmQgY29tcHV0YWJsZSB3YXkuIFRoaXMgb3BlcmF0aW9uIGRlZmluZXMgdGhlIGludGVncmF0aW9uIGJvdW5kYXJ5IGZvciBhcnRpZmFjdHMuIFRoZSByZXN1bHQgb2YgYSByZXRyaWV2ZSBpcyBkZWZpbmVkIHRvIHJldHVybiB0aGUgc2FtZSBkYXRhIGZvciBzdWJzZXF1ZW50IGludm9jYXRpb25zIHdpdGhpbiB0aGUgc2FtZSBldmFsdWF0aW9uIHJlcXVlc3QuIFRoaXMgbWVhbnMgaW4gcGFydGljdWxhciB0aGF0IHBhdGllbnQgZGF0YSB1cGRhdGVzIG1hZGUgZHVyaW5nIHRoZSBldmFsdWF0aW9uIHJlcXVlc3QgYXJlIG5vdCB2aXNpYmxlIHRvIHRoZSBhcnRpZmFjdC4gSW4gZWZmZWN0LCB0aGUgcGF0aWVudCBkYXRhIGlzIGEgc25hcHNob3Qgb2YgdGhlIGRhdGEgYXMgb2YgdGhlIHN0YXJ0IG9mIHRoZSBldmFsdWF0aW9uLiBUaGlzIGVuc3VyZXMgc3RyaWN0IGRldGVybWluaXN0aWMgYW5kIGZ1bmN0aW9uYWwgYmVoYXZpb3Igb2YgdGhlIGFydGlmYWN0LCBhbmQgYWxsb3dzIHRoZSBpbXBsZW1lbnRhdGlvbiBlbmdpbmUgZnJlZWRvbSB0byBjYWNoZSBpbnRlcm1lZGlhdGUgcmVzdWx0cyBpbiBvcmRlciB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iY29kZXMiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIj4NCgkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBjb2RlcyBlbGVtZW50IG9wdGlvbmFsbHkgc3BlY2lmaWVzIGFuIGV4cHJlc3Npb24gdGhhdCByZXN1bHRzIGluIGEgTGlzdCZsdDtDb2RlJmd0OyB0byBtYXRjaCBhZ2FpbnN0LiBPbmx5IHRoZSBjbGluaWNhbCBzdGF0ZW1lbnRzIHRoYXQgbWF0Y2ggYXQgbGVhc3Qgb25lIG9mIHRoZSBzcGVjaWZpZWQgY29kZXMgd2lsbCBiZSByZXR1cm5lZC48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iZGF0ZVJhbmdlIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSI+DQoJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgZGF0ZVJhbmdlIGVsZW1lbnQgb3B0aW9uYWxseSBzcGVjaWZpZXMgYW4gZXhwcmVzc2lvbiB0aGF0IHJlc3VsdHMgaW4gYW4gSW50ZXJ2YWwmbHQ7RGF0ZVRpbWUmZ3Q7IHRvIG1hdGNoIGFnYWluc3QuIE9ubHkgdGhvc2UgY2xpbmljYWwgc3RhdGVtZW50cyB3aG9zZSBkYXRlIGZhbGxzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIGRhdGUgcmFuZ2Ugd2lsbCBiZSByZXR1cm5lZC48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iY29udGV4dCIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiPg0KCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+SWYgc3BlY2lmaWVkLCB0aGUgY29udGV4dCBlbGVtZW50IHJlZmVyZW5jZXMgYW4gZXhwcmVzc2lvbiB0aGF0LCB3aGVuIGV2YWx1YXRlZCwgcHJvdmlkZXMgdGhlIGNvbnRleHQgZm9yIHRoZSByZXRyaWV2ZS4gVGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRoZSBpbnN0YW5jZSBpZCB0aGF0IHdpbGwgYmUgdXNlZCBhcyB0aGUgY29udGV4dCBmb3IgdGhlIHJldHJpZXZlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJPC94czplbGVtZW50Pg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRhVHlwZSIgdHlwZT0ieHM6UU5hbWUiIHVzZT0icmVxdWlyZWQiPg0KCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBkYXRhVHlwZSBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGRhdGEgYmVpbmcgcmVxdWVzdGVkLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0idGVtcGxhdGVJZCIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgdGVtcGxhdGVJZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGFuIG9wdGlvbmFsIHRlbXBsYXRlIHRvIGJlIHVzZWQuIElmIHNwZWNpZmllZCwgdGhlIHJldHJpZXZlIGlzIGRlZmluZWQgdG8gcmV0dXJuIG9ubHkgb2JqZWN0cyB0aGF0IGNvbmZvcm0gdG8gdGhlIHRlbXBsYXRlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iaWRQcm9wZXJ0eSIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgaWRQcm9wZXJ0eSBhdHRyaWJ1dGUgc3BlY2lmaWVzIHdoaWNoIHByb3BlcnR5IG9mIHRoZSBtb2RlbCBjb250YWlucyB0aGUgSWQgZm9yIHRoZSBjbGluaWNhbCBzdGF0ZW1lbnQuDQoNClRoaXMgcHJvcGVydHkgbWF5IGJlIHNwZWNpZmllZCBhcyBhIHBhdGgsIGluY2x1ZGluZyBxdWFsaWZpZXJzIGFuZCBjb25zdGFudCBpbmRleGVycy4gVGhlICZsdDtzaW1wbGVQYXRoJmd0OyBwcm9kdWN0aW9uIHJ1bGUgaW4gdGhlIENRTCBncmFtbWFyIHByb3ZpZGVzIHRoZSBmb3JtYWwgc2VtYW50aWNzIGZvciB0aGlzIHBhdGguPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2RlUHJvcGVydHkiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJvcHRpb25hbCI+DQoJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIGNvZGVQcm9wZXJ0eSBhdHRyaWJ1dGUgb3B0aW9uYWxseSBzcGVjaWZpZXMgd2hpY2ggcHJvcGVydHkgb2YgdGhlIG1vZGVsIGNvbnRhaW5zIHRoZSBDb2RlIG9yIENvZGVzIGZvciB0aGUgY2xpbmljYWwgc3RhdGVtZW50Lg0KCQkJCQkJDQpOb3RlIHRoYXQgaW1wbGVtZW50ZXJzIGNvdWxkIGFsc28gc3BlY2lmeSB0aGlzIGluZm9ybWF0aW9uIGVsc2V3aGVyZSBhcyBwYXJ0IG9mIGFuIGltcGxlbWVudGF0aW9uIGNhdGFsb2csIHJhdGhlciB0aGFuIG9uIGVhY2ggUmV0cmlldmUgZXhwcmVzc2lvbiwgYnV0IGFsbG93aW5nIGl0IHRvIGJlIHNwZWNpZmllZCBpbiB0aGUgcmV0cmlldmUgZXhwcmVzc2lvbiBnaXZlcyB0aGUgbW9zdCBmbGV4aWJpbGl0eS4gTm90ZSBhbHNvIHRoYXQgZXZlbiBpbiB0aGUgY2FzZSBvZiBhbiBpbXBsZW1lbnRhdGlvbiBjYXRhbG9nLCBpbXBsZW1lbnRhdGlvbnMgd291bGQgc3RpbGwgbmVlZCB0byByZXNwZWN0IGNvZGVQcm9wZXJ0eSB2YWx1ZXMgaW4gdGhlIEVMTSBkdWUgdG8gdGhlIHBvc3NpYmlsaXR5IG9mIHRoZSByZXRyaWV2ZSBzcGVjaWZ5aW5nIGFsdGVybmF0ZSBjb2RlIGZpbHRlcnMuIEZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIEVMTSwgdGhlIHNwZWNpZmljYXRpb24gZW5zdXJlcyB0aGF0IEVMTSBjYW4gYmUgcHJvY2Vzc2VkIHdpdGhvdXQgcmVmZXJlbmNlIHRvIHRoZSBtb2RlbCBpbmZvcm1hdGlvbi4NCg0KVGhpcyBwcm9wZXJ0eSBtYXkgYmUgc3BlY2lmaWVkIGFzIGEgcGF0aCwgaW5jbHVkaW5nIHF1YWxpZmllcnMgYW5kIGNvbnN0YW50IGluZGV4ZXJzLiBUaGUgJmx0O3NpbXBsZVBhdGgmZ3Q7IHByb2R1Y3Rpb24gcnVsZSBpbiB0aGUgQ1FMIGdyYW1tYXIgcHJvdmlkZXMgdGhlIGZvcm1hbCBzZW1hbnRpY3MgZm9yIHRoaXMgcGF0aC48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InZhbHVlU2V0UHJvcGVydHkiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJvcHRpb25hbCI+DQoJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIHZhbHVlU2V0UHJvcGVydHkgYXR0cmlidXRlIG9wdGlvbmFsbHkgc3BlY2lmaWVzIHdoaWNoIHByb3BlcnR5IG9mIHRoZSBtb2RlbCBjb250YWlucyBhIHZhbHVlIHNldCBpZGVudGlmaWVyIHRoYXQgY2FuIGJlIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgbWVjaGFuaXNtIGZvciBtYXRjaGluZyB0aGUgdmFsdWUgc2V0IG9mIHRoZSByZXRyaWV2ZSwgaW4gdGhlIGNhc2Ugd2hlbiBubyBjb2RlIGlzIHNwZWNpZmllZCBpbiB0aGUgc291cmNlIGRhdGEuDQoNClRoaXMgYXR0cmlidXRlIGlzIGludGVuZGVkIHRvIGFkZHJlc3MgdGhlIGNhc2Ugd2hlcmUgc3lzdGVtcyByZXByZXNlbnRpbmcgbmVnYXRpb24gcmF0aW9uYWxlIGZvciBhbiBhY3Rpdml0eSBub3QgcGVyZm9ybWVkIGRvIHNvIGJ5IGluZGljYXRpbmcgYSB2YWx1ZXNldCBpZGVudGlmaWVyIHJhdGhlciB0aGFuIGEgY29kZS4gRm9yIGV4YW1wbGUsIHdoZW4gaW5kaWNhdGluZyB0aGF0IGEgbWVkaWNhdGlvbiB3YXMgbm90IGFkbWluaXN0ZXJlZCwgdGhlIHZhbHVlIHNldCBpZGVudGlmaWVyIGZvciB0aGUgZXhwZWN0ZWQgbWVkaWNhdGlvbiBpcyB1c2VkLCByYXRoZXIgdGhhbiBpbmRpY2F0aW5nIGEgc3BlY2lmaWMgbWVkaWNhdGlvbiB0aGF0IHdhcyBub3QgYWRtaW5pc3RlcmVkLiBJbiB0aGlzIGNhc2UsIHRoZSB2YWx1ZVNldFByb3BlcnR5IGF0dHJpYnV0ZSBhbGxvd3MgdGhlIHJldHJpZXZlIHRvIHNwZWNpZnkgd2hlcmUgdG8gbG9vayBmb3IgdGhlIHZhbHVlIHNldCBpZGVudGlmaWVyIHdpdGhvdXQgbmVlZGluZyB0byBjaGFuZ2UgdGhlIGNvbmNlcHR1YWwgZGF0YSBtb2RlbCBvciB0aGUgQ1FMIGxvZ2ljIGRlc2NyaWJpbmcgdGhlIG5lZ2F0ZWQgYWN0aXZpdHkuDQoNCk5vdGUgdGhhdCBpbXBsZW1lbnRlcnMgY291bGQgYWxzbyBzcGVjaWZ5IHRoaXMgaW5mb3JtYXRpb24gZWxzZXdoZXJlIGFzIHBhcnQgb2YgYW4gaW1wbGVtZW50YXRpb24gY2F0YWxvZywgcmF0aGVyIHRoYW4gb24gZWFjaCBSZXRyaWV2ZSBleHByZXNzaW9uLCBidXQgYWxsb3dpbmcgaXQgdG8gYmUgc3BlY2lmaWVkIGluIHRoZSByZXRyaWV2ZSBleHByZXNzaW9uIGdpdmVzIHRoZSBtb3N0IGZsZXhpYmlsaXR5LiBGcm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiBFTE0sIHRoZSBzcGVjaWZpY2F0aW9uIGVuc3VyZXMgdGhhdCBFTE0gY2FuIGJlIHByb2Nlc3NlZCB3aXRob3V0IHJlZmVyZW5jZSB0byB0aGUgbW9kZWwgaW5mb3JtYXRpb24uDQoNClRoaXMgcHJvcGVydHkgbWF5IGJlIHNwZWNpZmllZCBhcyBhIHBhdGgsIGluY2x1ZGluZyBxdWFsaWZpZXJzIGFuZCBjb25zdGFudCBpbmRleGVycy4gVGhlICZsdDtzaW1wbGVQYXRoJmd0OyBwcm9kdWN0aW9uIHJ1bGUgaW4gdGhlIENRTCBncmFtbWFyIHByb3ZpZGVzIHRoZSBmb3JtYWwgc2VtYW50aWNzIGZvciB0aGlzIHBhdGguPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRlUHJvcGVydHkiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJvcHRpb25hbCI+DQoJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIGRhdGVQcm9wZXJ0eSBhdHRyaWJ1dGUgb3B0aW9uYWxseSBzcGVjaWZpZXMgd2hpY2ggcHJvcGVydHkgb2YgdGhlIG1vZGVsIGNvbnRhaW5zIHRoZSBjbGluaWNhbGx5IHJlbGV2YW50IGRhdGUgZm9yIHRoZSBjbGluaWNhbCBzdGF0ZW1lbnQuDQoJCQkJCQkNClRoaXMgcHJvcGVydHkgaXMgZXhwZWN0ZWQgdG8gcmVmZXJlbmNlIGEgcHJvcGVydHkgdGhhdCBpcyBlaXRoZXIgYSBEYXRlIG9yIERhdGVUaW1lLCBvciBhbiBpbnRlcnZhbCBvZiBEYXRlIG9yIERhdGVUaW1lLiBJbiBlaXRoZXIgY2FzZSwgdGhlIHJlc3VsdCBzZXQgd2lsbCBvbmx5IGluY2x1ZGUgaW5zdGFuY2VzIHdoZXJlIHRoZSB2YWx1ZSBvZiB0aGUgZGF0ZVByb3BlcnR5IGlzIGR1cmluZyB0aGUgZGF0ZSByYW5nZS4gRm9yIERhdGUgb3IgRGF0ZVRpbWUgdmFsdWVzLCB0aGlzIG1lYW5zIHRoZSBkYXRlIGlzIGJvdGggdGhlIHNhbWUgb3IgYWZ0ZXIgdGhlIGJlZ2lubmluZyBvZiB0aGUgcmFuZ2UsIGFuZCB0aGUgc2FtZSBvciBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgcmFuZ2UuIEZvciBEYXRlLSBvciBEYXRlVGltZS1iYXNlZCBpbnRlcnZhbCB2YWx1ZXMsIHRoaXMgbWVhbnMgdGhhdCB0aGUgZW50aXJlIGludGVydmFsIGlzIGluY2x1ZGVkIGluIHRoZSBkYXRlIHJhbmdlLg0KDQpJbnN0YW5jZXMgd2l0aCBubyB2YWx1ZSBmb3IgdGhlIGRhdGVQcm9wZXJ0eSB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0IHNldCBpZiBhIGRhdGUgcmFuZ2UgaXMgc3BlY2lmaWVkLg0KDQpOb3RlIHRoYXQgaWYgdGhlIGRhdGVQcm9wZXJ0eSBpcyBzcGVjaWZpZWQsIHRoZSBkYXRlTG93UHJvcGVydHkgYW5kIGRhdGVIaWdoUHJvcGVydHkgYXR0cmlidXRlcyBtdXN0IG5vdCBiZSBwcmVzZW50LiBBbmQgY29udmVyc2VseSwgaWYgdGhlIGRhdGVMb3dQcm9wZXJ0eSBhbmQgZGF0ZUhpZ2hQcm9wZXJ0eSBhdHRyaWJ1dGVzIGFyZSBzcGVjaWZpZWQsIHRoZSBkYXRlUHJvcGVydHkgbXVzdCBub3QgYmUgcHJlc2VudC4gSWYgc3BlY2lmaWVkLCB0aGUgZGF0ZUxvd1Byb3BlcnR5IGFuZCBkYXRlSGlnaFByb3BlcnR5IHZhbHVlcyB3aWxsIGJlIHVzZWQgdG8gY29uc3RydWN0IGFuIGludGVydmFsIHdpdGggaW5jbHVzaXZlIGJvdW5kYXJpZXMgZm9yIHRoZSBkYXRlIHJhbmdlLg0KDQpUaGlzIHByb3BlcnR5IG1heSBiZSBzcGVjaWZpZWQgYXMgYSBwYXRoLCBpbmNsdWRpbmcgcXVhbGlmaWVycyBhbmQgY29uc3RhbnQgaW5kZXhlcnMuIFRoZSAmbHQ7c2ltcGxlUGF0aCZndDsgcHJvZHVjdGlvbiBydWxlIGluIHRoZSBDUUwgZ3JhbW1hciBwcm92aWRlcyB0aGUgZm9ybWFsIHNlbWFudGljcyBmb3IgdGhpcyBwYXRoLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iZGF0ZUxvd1Byb3BlcnR5IiB0eXBlPSJ4czpzdHJpbmciIHVzZT0ib3B0aW9uYWwiPg0KCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBkYXRlTG93UHJvcGVydHkgYXR0cmlidXRlIG9wdGlvbmFsbHkgc3BlY2lmaWVzIHdoaWNoIHByb3BlcnR5IG9mIHRoZSBtb2RlbCBjb250YWlucyB0aGUgbG93IGNvbXBvbmVudCBvZiB0aGUgY2xpbmljYWxseSByZWxldmFudCBkYXRlIGZvciB0aGUgY2xpbmljYWwgc3RhdGVtZW50Lg0KCQkJCQkJDQpOb3RlIHRoYXQgaWYgdGhlIGRhdGVQcm9wZXJ0eSBpcyBzcGVjaWZpZWQsIHRoZSBkYXRlTG93UHJvcGVydHkgYW5kIGRhdGVIaWdoUHJvcGVydHkgYXR0cmlidXRlcyBtdXN0IG5vdCBiZSBwcmVzZW50LiBBbmQgY29udmVyc2VseSwgaWYgdGhlIGRhdGVMb3dQcm9wZXJ0eSBhbmQgZGF0ZUhpZ2hQcm9wZXJ0eSBhdHRyaWJ1dGVzIGFyZSBzcGVjaWZpZWQsIHRoZSBkYXRlUHJvcGVydHkgbXVzdCBub3QgYmUgcHJlc2VudC4NCg0KVGhpcyBwcm9wZXJ0eSBtYXkgYmUgc3BlY2lmaWVkIGFzIGEgcGF0aCwgaW5jbHVkaW5nIHF1YWxpZmllcnMgYW5kIGNvbnN0YW50IGluZGV4ZXJzLiBUaGUgJmx0O3NpbXBsZVBhdGgmZ3Q7IHByb2R1Y3Rpb24gcnVsZSBpbiB0aGUgQ1FMIGdyYW1tYXIgcHJvdmlkZXMgdGhlIGZvcm1hbCBzZW1hbnRpY3MgZm9yIHRoaXMgcGF0aC48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9ImRhdGVIaWdoUHJvcGVydHkiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJvcHRpb25hbCI+DQoJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIGRhdGVIaWdoUHJvcGVydHkgYXR0cmlidXRlIG9wdGlvbmFsbHkgc3BlY2lmaWVzIHdoaWNoIHByb3BlcnR5IG9mIHRoZSBtb2RlbCBjb250YWlucyB0aGUgaGlnaCBjb21wb25lbnQgb2YgdGhlIGNsaW5pY2FsbHkgcmVsZXZhbnQgZGF0ZSBmb3IgdGhlIGNsaW5pY2FsIHN0YXRlbWVudC4NCg0KTm90ZSB0aGF0IGlmIHRoZSBkYXRlUHJvcGVydHkgaXMgc3BlY2lmaWVkLCB0aGUgZGF0ZUxvd1Byb3BlcnR5IGFuZCBkYXRlSGlnaFByb3BlcnR5IGF0dHJpYnV0ZXMgbXVzdCBub3QgYmUgcHJlc2VudC4gQW5kIGNvbnZlcnNlbHksIGlmIHRoZSBkYXRlTG93UHJvcGVydHkgYW5kIGRhdGVIaWdoUHJvcGVydHkgYXR0cmlidXRlcyBhcmUgc3BlY2lmaWVkLCB0aGUgZGF0ZVByb3BlcnR5IG11c3Qgbm90IGJlIHByZXNlbnQuDQoNClRoaXMgcHJvcGVydHkgbWF5IGJlIHNwZWNpZmllZCBhcyBhIHBhdGgsIGluY2x1ZGluZyBxdWFsaWZpZXJzIGFuZCBjb25zdGFudCBpbmRleGVycy4gVGhlICZsdDtzaW1wbGVQYXRoJmd0OyBwcm9kdWN0aW9uIHJ1bGUgaW4gdGhlIENRTCBncmFtbWFyIHByb3ZpZGVzIHRoZSBmb3JtYWwgc2VtYW50aWNzIGZvciB0aGlzIHBhdGguPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJPC94czphdHRyaWJ1dGU+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDb2RlU3lzdGVtRGVmIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQ29kZVN5c3RlbURlZiB0eXBlIGRlZmluZXMgYSBjb2RlIHN5c3RlbSBpZGVudGlmaWVyIHRoYXQgY2FuIHRoZW4gYmUgdXNlZCB0byBpZGVudGlmeSBjb2RlIHN5c3RlbXMgaW52b2x2ZWQgaW4gdmFsdWUgc2V0IGRlZmluaXRpb25zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkVsZW1lbnQiPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgbmFtZSBvZiB0aGUgY29kZSBzeXN0ZW0gdXNlZCBmb3IgcmVmZXJlbmNlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBjb2RlIHN5c3RlbS48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQk8L3hzOmF0dHJpYnV0ZT4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InZlcnNpb24iIHR5cGU9InhzOnN0cmluZyIgdXNlPSJvcHRpb25hbCI+DQoJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIHZlcnNpb24gb2YgdGhlIGNvZGUgc3lzdGVtIHRvIGJlIHVzZWQuIElmIG5vIHZlcnNpb24gaXMgc3BlY2lmaWVkLCB0aGUgbW9zdCBjdXJyZW50IHB1Ymxpc2hlZCB2ZXJzaW9uIG9mIHRoZSBjb2RlIHN5c3RlbSBpcyBhc3N1bWVkLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iYWNjZXNzTGV2ZWwiIHR5cGU9IkFjY2Vzc01vZGlmaWVyIiB1c2U9Im9wdGlvbmFsIiBkZWZhdWx0PSJQdWJsaWMiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlZhbHVlU2V0RGVmIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgVmFsdWVTZXREZWYgdHlwZSBkZWZpbmVzIGEgdmFsdWUgc2V0IGlkZW50aWZpZXIgdGhhdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBuYW1lIGFueXdoZXJlIHdpdGhpbiBhbiBleHByZXNzaW9uLg0KDQpUaGUgaWQgc3BlY2lmaWVzIHRoZSBnbG9iYWxseSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHZhbHVlIHNldC4gVGhpcyBtYXkgYmUgYW4gSEw3IE9JRCwgYSBGSElSIFVSTCwgb3IgYSBDVFMyIHZhbHVlIHNldCBVUkwuDQoNCklmIHZlcnNpb24gaXMgc3BlY2lmaWVkLCBpdCB3aWxsIGJlIHVzZWQgdG8gcmVzb2x2ZSB0aGUgdmVyc2lvbiBvZiB0aGUgdmFsdWUgc2V0IGRlZmluaXRpb24gdG8gYmUgdXNlZC4gT3RoZXJ3aXNlLCB0aGUgbW9zdCBjdXJyZW50IHB1Ymxpc2hlZCB2ZXJzaW9uIG9mIHRoZSB2YWx1ZSBzZXQgaXMgYXNzdW1lZC4gDQoNCklmIGNvZGVTeXN0ZW1zIGFyZSBzcGVjaWZpZWQsIHRoZXkgd2lsbCBiZSB1c2VkIHRvIHJlc29sdmUgdGhlIGNvZGUgc3lzdGVtcyB1c2VkIHdpdGhpbiB0aGUgdmFsdWUgc2V0IGRlZmluaXRpb24gdG8gY29uc3RydWN0IHRoZSBleHBhbnNpb24gc2V0Lg0KTm90ZSB0aGF0IHRoZSByZWNvbW1lbmRlZCBhcHByb2FjaCB0byBzdGF0aWNhbGx5IGJpbmRpbmcgdG8gYW4gZXhwYW5zaW9uIHNldCBpcyB0byB1c2UgYSB2YWx1ZSBzZXQgZGVmaW5pdGlvbiB0aGF0IHNwZWNpZmllcyB0aGUgdmVyc2lvbiBvZiBlYWNoIGNvZGUgc3lzdGVtIHVzZWQuIFRoZSBjb2RlU3lzdGVtVmVyc2lvbnMgYXR0cmlidXRlIGlzIHByb3ZpZGVkIG9ubHkgdG8gZW5zdXJlIHN0YXRpYyBiaW5kaW5nIGNhbiBiZSBhY2hpZXZlZCB3aGVuIHRoZSB2YWx1ZSBzZXQgZGVmaW5pdGlvbiBkb2VzIG5vdCBzcGVjaWZ5IGNvZGUgc3lzdGVtIHZlcnNpb25zIGFzIHBhcnQgb2YgdGhlIGRlZmluaXRpb24gaGVhZGVyLgkJCTwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkVsZW1lbnQiPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iY29kZVN5c3RlbSIgdHlwZT0iQ29kZVN5c3RlbVJlZiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQoJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgY29kZSBzeXN0ZW0gdGhhdCBzaG91bGQgYmUgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGV4cGFuc2lvbiBzZXQuIE5vdGUgdGhhdCB0aGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggdG8gc3RhdGljYWxseSBiaW5kaW5nIHRvIGFuIGV4cGFuc2lvbiBzZXQgaXMgdG8gdXNlIGEgdmFsdWUgc2V0IGRlZmluaXRpb24gdGhhdCBzcGVjaWZpZXMgdGhlIHZlcnNpb24gb2YgZWFjaCBjb2RlIHN5c3RlbSB1c2VkLiBUaGUgY29kZVN5c3RlbSBlbGVtZW50cyBhcmUgcHJvdmlkZWQgb25seSB0byBlbnN1cmUgc3RhdGljIGJpbmRpbmcgY2FuIGJlIGFjaGlldmVkIHdoZW4gdGhlIHZhbHVlIHNldCBkZWZpbml0aW9uIGRvZXMgbm90IHNwZWNpZnkgY29kZSBzeXN0ZW0gdmVyc2lvbnMgYXMgcGFydCBvZiB0aGUgZGVmaW5pdGlvbiBoZWFkZXIuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOnN0cmluZyIvPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJyZXF1aXJlZCI+DQoJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSB2YWx1ZSBzZXQgdG8gYmUgcmV0cmlldmVkLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCTwveHM6YXR0cmlidXRlPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0idmVyc2lvbiIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9Im9wdGlvbmFsIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgdmVyc2lvbiBvZiB0aGUgdmFsdWUgc2V0IHRvIGJlIHJldHJpZXZlZC4gSWYgbm8gdmVyc2lvbiBpcyBwcm92aWRlZCwgdGhlIG1vc3QgY3VycmVudCBwdWJsaXNoZWQgdmVyc2lvbiBvZiB0aGUgdmFsdWUgc2V0IGlzIGFzc3VtZWQuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJhY2Nlc3NMZXZlbCIgdHlwZT0iQWNjZXNzTW9kaWZpZXIiIHVzZT0ib3B0aW9uYWwiIGRlZmF1bHQ9IlB1YmxpYyIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ29kZURlZiI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIENvZGVEZWYgdHlwZSBkZWZpbmVzIGEgY29kZSBpZGVudGlmaWVyIHRoYXQgY2FuIHRoZW4gYmUgdXNlZCB0byByZWZlcmVuY2Ugc2luZ2xlIGNvZGVzIGFueXdoZXJlIHdpdGhpbiBhbiBleHByZXNzaW9uLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkVsZW1lbnQiPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iY29kZVN5c3RlbSIgdHlwZT0iQ29kZVN5c3RlbVJlZiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiPg0KCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIGNvZGUgc3lzdGVtIHRoYXQgY29udGFpbnMgdGhlIGNvZGUgYmVpbmcgcmVmZXJlbmNlZC48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgbmFtZSBvZiB0aGUgY29kZSB1c2VkIGZvciByZWZlcmVuY2UuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGNvZGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJkaXNwbGF5IiB0eXBlPSJ4czpzdHJpbmciIHVzZT0ib3B0aW9uYWwiPg0KCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkFuIG9wdGlvbmFsIGRpc3BsYXkgc3RyaW5nIHVzZWQgdG8gZGVzY3JpYmUgdGhlIGNvZGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJhY2Nlc3NMZXZlbCIgdHlwZT0iQWNjZXNzTW9kaWZpZXIiIHVzZT0ib3B0aW9uYWwiIGRlZmF1bHQ9IlB1YmxpYyIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ29uY2VwdERlZiI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIENvbmNlcHREZWYgdHlwZSBkZWZpbmVzIGEgY29uY2VwdCBpZGVudGlmaWVyIHRoYXQgY2FuIHRoZW4gYmUgdXNlZCB0byByZWZlcmVuY2Ugc2luZ2xlIGNvbmNlcHRzIGFueXdoZXJlIHdpdGhpbiBhbiBleHByZXNzaW9uLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkVsZW1lbnQiPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iY29kZSIgdHlwZT0iQ29kZVJlZiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQoJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BIGNvZGUgdGhhdCBtYWtlcyB1cCB0aGUgY29uY2VwdC4gQWxsIGNvZGVzIHdpdGhpbiBhIGdpdmVuIGNvbmNlcHQgbXVzdCBiZSBzeW5vbnltcy48L3hzOmRvY3VtZW50YXRpb24+DQoJCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9InJlcXVpcmVkIj4NCgkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgbmFtZSBvZiB0aGUgY29uY2VwdCB1c2VkIGZvciByZWZlcmVuY2UuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJkaXNwbGF5IiB0eXBlPSJ4czpzdHJpbmciIHVzZT0ib3B0aW9uYWwiPg0KCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCTx4czpkb2N1bWVudGF0aW9uPkFuIG9wdGlvbmFsIGRpc3BsYXkgc3RyaW5nIHVzZWQgdG8gZGVzY3JpYmUgdGhlIGNvbmNlcHQuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQk8L3hzOmFubm90YXRpb24+DQoJCQkJPC94czphdHRyaWJ1dGU+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJhY2Nlc3NMZXZlbCIgdHlwZT0iQWNjZXNzTW9kaWZpZXIiIHVzZT0ib3B0aW9uYWwiIGRlZmF1bHQ9IlB1YmxpYyIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ29kZVN5c3RlbVJlZiI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIENvZGVTeXN0ZW1SZWYgZXhwcmVzc2lvbiBhbGxvd3MgYSBwcmV2aW91c2x5IGRlZmluZWQgbmFtZWQgY29kZSBzeXN0ZW0gdG8gYmUgcmVmZXJlbmNlZCB3aXRoaW4gYW4gZXhwcmVzc2lvbi4gQ29uY2VwdHVhbGx5LCByZWZlcmVuY2luZyBhIGNvZGUgc3lzdGVtIHJldHVybnMgdGhlIHNldCBvZiBjb2RlcyBpbiB0aGUgY29kZSBzeXN0ZW0uIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBzaG91bGQgYWxtb3N0IG5ldmVyIGJlIHBlcmZvcm1lZCBpbiBwcmFjdGljZS4gQ29kZSBzeXN0ZW0gcmVmZXJlbmNlcyBhcmUgYWxsb3dlZCBpbiBvcmRlciB0byBhbGxvdyBmb3IgdGVzdGluZyBvZiBjb2RlIG1lbWJlcnNoaXAgaW4gYSBwYXJ0aWN1bGFyIGNvZGUgc3lzdGVtLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkV4cHJlc3Npb24iPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6c3RyaW5nIi8+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaWJyYXJ5TmFtZSIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJWYWx1ZVNldFJlZiI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFZhbHVlU2V0UmVmIGV4cHJlc3Npb24gYWxsb3dzIGEgcHJldmlvdXNseSBkZWZpbmVkIG5hbWVkIHZhbHVlIHNldCB0byBiZSByZWZlcmVuY2VkIHdpdGhpbiBhbiBleHByZXNzaW9uLiBDb25jZXB0dWFsbHksIHJlZmVyZW5jaW5nIGEgdmFsdWUgc2V0IHJldHVybnMgdGhlIGV4cGFuc2lvbiBzZXQgZm9yIHRoZSB2YWx1ZSBzZXQgYXMgYSBsaXN0IG9mIGNvZGVzLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkV4cHJlc3Npb24iPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6c3RyaW5nIi8+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaWJyYXJ5TmFtZSIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDb2RlUmVmIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQ29kZVJlZiBleHByZXNzaW9uIGFsbG93cyBhIHByZXZpb3VzbHkgZGVmaW5lZCBjb2RlIHRvIGJlIHJlZmVyZW5jZWQgd2l0aGluIGFuIGV4cHJlc3Npb24uPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iRXhwcmVzc2lvbiI+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpzdHJpbmciLz4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9ImxpYnJhcnlOYW1lIiB0eXBlPSJ4czpzdHJpbmciIHVzZT0ib3B0aW9uYWwiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNvbmNlcHRSZWYiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBDb25jZXB0UmVmIGV4cHJlc3Npb24gYWxsb3dzIGEgcHJldmlvdXNseSBkZWZpbmVkIGNvbmNlcHQgdG8gYmUgcmVmZXJlbmNlZCB3aXRoaW4gYW4gZXhwcmVzc2lvbi48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOnN0cmluZyIvPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0ibGlicmFyeU5hbWUiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJvcHRpb25hbCIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ29kZSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIENvZGUgdHlwZSByZXByZXNlbnRzIGEgbGl0ZXJhbCBjb2RlIHNlbGVjdG9yLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ic3lzdGVtIiB0eXBlPSJDb2RlU3lzdGVtUmVmIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9ImNvZGUiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJyZXF1aXJlZCIvPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iZGlzcGxheSIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDb25jZXB0Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQ29uY2VwdCB0eXBlIHJlcHJlc2VudHMgYSBsaXRlcmFsIGNvbmNlcHQgc2VsZWN0b3IuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iRXhwcmVzc2lvbiI+DQoJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJjb2RlIiB0eXBlPSJDb2RlIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9ImRpc3BsYXkiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJvcHRpb25hbCIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iSW5Db2RlU3lzdGVtIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgSW5Db2RlU3lzdGVtIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gY29kZSBpcyBpbiB0aGUgZ2l2ZW4gY29kZSBzeXN0ZW0uDQoNClRoZSBmaXJzdCBhcmd1bWVudCBpcyBleHBlY3RlZCB0byBiZSBhIFN0cmluZywgQ29kZSwgb3IgQ29uY2VwdC4NCg0KTm90ZSB0aGF0IHRoaXMgb3BlcmF0b3IgZXhwbGljaXRseSByZXF1aXJlcyBhIENvZGVTeXN0ZW1SZWYgYXMgaXRzIGNvZGVzeXN0ZW0gYXJndW1lbnQuIFRoaXMgYWxsb3dzIGZvciBib3RoIHN0YXRpYyBhbmFseXNpcyBvZiB0aGUgY29kZSBzeXN0ZW0gcmVmZXJlbmNlcyB3aXRoaW4gYW4gYXJ0aWZhY3QsIGFzIHdlbGwgYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGNvZGUgc3lzdGVtIG1lbWJlcnNoaXAgYnkgdGhlIHRhcmdldCBlbnZpcm9ubWVudCBhcyBhIHNlcnZpY2UgY2FsbCB0byBhIHRlcm1pbm9sb2d5IHNlcnZlciwgaWYgZGVzaXJlZC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJPcGVyYXRvckV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iY29kZSIgdHlwZT0iRXhwcmVzc2lvbiIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJjb2Rlc3lzdGVtIiB0eXBlPSJDb2RlU3lzdGVtUmVmIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFueUluQ29kZVN5c3RlbSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEFueUluQ29kZVN5c3RlbSBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgYW55IG9mIHRoZSBnaXZlbiBjb2RlcyBhcmUgaW4gdGhlIGdpdmVuIGNvZGUgc3lzdGVtLg0KDQpUaGUgZmlyc3QgYXJndW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYSBsaXN0IG9mIFN0cmluZywgQ29kZSwgb3IgQ29uY2VwdC4NCg0KTm90ZSB0aGF0IHRoaXMgb3BlcmF0b3IgZXhwbGljaXRseSByZXF1aXJlcyBhIENvZGVTeXN0ZW1SZWYgYXMgaXRzIGNvZGVzeXN0ZW0gYXJndW1lbnQuIFRoaXMgYWxsb3dzIGZvciBib3RoIHN0YXRpYyBhbmFseXNpcyBvZiB0aGUgY29kZSBzeXN0ZW0gcmVmZXJlbmNlcyB3aXRoaW4gYW4gYXJ0aWZhY3QsIGFzIHdlbGwgYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGNvZGUgc3lzdGVtIG1lbWJlcnNoaXAgYnkgdGhlIHRhcmdldCBlbnZpcm9ubWVudCBhcyBhIHNlcnZpY2UgY2FsbCB0byBhIHRlcm1pbm9sb2d5IHNlcnZlciwgaWYgZGVzaXJlZC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJPcGVyYXRvckV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iY29kZXMiIHR5cGU9IkV4cHJlc3Npb24iLz4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iY29kZXN5c3RlbSIgdHlwZT0iQ29kZVN5c3RlbVJlZiIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJJblZhbHVlU2V0Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgSW5WYWx1ZVNldCBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGNvZGUgaXMgaW4gdGhlIGdpdmVuIHZhbHVlIHNldC4NCg0KVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGEgU3RyaW5nLCBDb2RlLCBvciBDb25jZXB0Lg0KDQpOb3RlIHRoYXQgdGhpcyBvcGVyYXRvciBleHBsaWNpdGx5IHJlcXVpcmVzIGEgVmFsdWVTZXRSZWYgYXMgaXRzIHZhbHVlc2V0IGFyZ3VtZW50LiBUaGlzIGFsbG93cyBmb3IgYm90aCBzdGF0aWMgYW5hbHlzaXMgb2YgdGhlIHZhbHVlIHNldCByZWZlcmVuY2VzIHdpdGhpbiBhbiBhcnRpZmFjdCwgYXMgd2VsbCBhcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdmFsdWVzZXQgbWVtYmVyc2hpcCBieSB0aGUgdGFyZ2V0IGVudmlyb25tZW50IGFzIGEgc2VydmljZSBjYWxsIHRvIGEgdGVybWlub2xvZ3kgc2VydmVyLCBpZiBkZXNpcmVkLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9Ik9wZXJhdG9yRXhwcmVzc2lvbiI+DQoJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJjb2RlIiB0eXBlPSJFeHByZXNzaW9uIi8+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InZhbHVlc2V0IiB0eXBlPSJWYWx1ZVNldFJlZiIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJBbnlJblZhbHVlU2V0Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQW55SW5WYWx1ZVNldCBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgYW55IG9mIHRoZSBnaXZlbiBjb2RlcyBhcmUgaW4gdGhlIGdpdmVuIHZhbHVlIHNldC4NCg0KVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGV4cGVjdGVkIHRvIGJlIGEgbGlzdCBvZiBTdHJpbmcsIENvZGUsIG9yIENvbmNlcHQuDQoNCk5vdGUgdGhhdCB0aGlzIG9wZXJhdG9yIGV4cGxpY2l0bHkgcmVxdWlyZXMgYSBWYWx1ZVNldFJlZiBhcyBpdHMgdmFsdWVzZXQgYXJndW1lbnQuIFRoaXMgYWxsb3dzIGZvciBib3RoIHN0YXRpYyBhbmFseXNpcyBvZiB0aGUgdmFsdWUgc2V0IHJlZmVyZW5jZXMgd2l0aGluIGFuIGFydGlmYWN0LCBhcyB3ZWxsIGFzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB2YWx1ZXNldCBtZW1iZXJzaGlwIGJ5IHRoZSB0YXJnZXQgZW52aXJvbm1lbnQgYXMgYSBzZXJ2aWNlIGNhbGwgdG8gYSB0ZXJtaW5vbG9neSBzZXJ2ZXIsIGlmIGRlc2lyZWQuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iT3BlcmF0b3JFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9ImNvZGVzIiB0eXBlPSJFeHByZXNzaW9uIi8+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InZhbHVlc2V0IiB0eXBlPSJWYWx1ZVNldFJlZiIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJTdWJzdW1lcyI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFN1YnN1bWVzIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gY29kZXMgYXJlIGVxdWl2YWxlbnQsIG9yIGlmIHRoZSBmaXJzdCBjb2RlIHN1YnN1bWVzIHRoZSBzZWNvbmQgKGkuZS4gdGhlIGZpcnN0IGNvZGUgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIHNlY29uZCBpbiBhIHN1YnN1bXB0aW9uIGhpZXJhcmNoeSksIGFuZCBmYWxzZSBvdGhlcndpc2UuIA0KDQpGb3IgdGhlIENvbmNlcHQgb3ZlcmxvYWQsIHRoaXMgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIGFueSBjb2RlIGluIHRoZSBmaXJzdCBjb25jZXB0IHN1YnN1bWVzIGFueSBjb2RlIGluIHRoZSBzZWNvbmQuDQoJCQkJDQpJZiBlaXRoZXIgb3IgYm90aCBhcmd1bWVudHMgYXJlIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJCaW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iU3Vic3VtZWRCeSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFN1YnN1bWVkQnkgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBjb2RlcyBhcmUgZXF1aXZhbGVudCwgb3IgaWYgdGhlIGZpcnN0IGNvZGUgaXMgc3Vic3VtZWQgYnkgdGhlIHNlY29uZCBjb2RlIChpLmUuIHRoZSBmaXJzdCBjb2RlIGlzIGEgZGVzY2VuZGVudCBvZiB0aGUgc2Vjb25kIGNvZGUgaW4gYSBzdWJzdW1wdGlvbiBoaWVyYXJjaHkpLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiANCg0KRm9yIHRoZSBDb25jZXB0IG92ZXJsb2FkLCB0aGlzIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiBhbnkgY29kZSBpbiB0aGUgZmlyc3QgY29uY2VwdCBpcyBzdWJzdW1lZCBieSBhbnkgY29kZSBpbiB0aGUgc2Vjb25kLg0KCQkJCQ0KSWYgZWl0aGVyIG9yIGJvdGggYXJndW1lbnRzIGFyZSBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlF1YW50aXR5Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgUXVhbnRpdHkgdHlwZSBkZWZpbmVzIGEgY2xpbmljYWwgcXVhbnRpdHkuIEZvciBleGFtcGxlLCB0aGUgcXVhbnRpdHkgMTAgZGF5cyBvciAzMCBtbUhnLiBUaGUgdmFsdWUgaXMgYSBkZWNpbWFsLCB3aGlsZSB0aGUgdW5pdCBpcyBleHBlY3RlZCB0byBiZSBhIHZhbGlkIFVDVU0gdW5pdC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InZhbHVlIiB0eXBlPSJ4czpkZWNpbWFsIi8+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bml0IiB0eXBlPSJ4czpzdHJpbmciLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJhdGlvIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgUmF0aW8gdHlwZSBkZWZpbmVzIGEgcmF0aW8gYmV0d2VlbiB0d28gcXVhbnRpdGllcy4gRm9yIGV4YW1wbGUsIHRoZSB0aXRyZSAxOjEyOCwgb3IgdGhlIGNvbmNlbnRyYXRpb24gcmF0aW8gNSBtZy8xMCBtTC4gVGhlIG51bWVyYXRvciBhbmQgZGVub21pbmF0b3IgYXJlIGJvdGggcXVhbnRpdGllcy48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9Im51bWVyYXRvciIgdHlwZT0iUXVhbnRpdHkiLz4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iZGVub21pbmF0b3IiIHR5cGU9IlF1YW50aXR5Ii8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNhbGN1bGF0ZUFnZSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+Q2FsY3VsYXRlcyB0aGUgYWdlIGluIHRoZSBzcGVjaWZpZWQgcHJlY2lzaW9uIG9mIGEgcGVyc29uIGJvcm4gb24gdGhlIGdpdmVuIGRhdGUuDQoNClRoZSBDYWxjdWxhdGVBZ2Ugb3BlcmF0b3IgaXMgZGVmaW5lZCBmb3IgRGF0ZSBhbmQgRGF0ZVRpbWUuDQoNCkZvciB0aGUgRGF0ZSBvdmVybG9hZCwgdGhlIGNhbGN1bGF0aW9uIGlzIHBlcmZvcm1lZCB1c2luZyBUb2RheSgpLCB0aGUgcHJlY2lzaW9uIG11c3QgYmUgb25lIG9mIHllYXIsIG1vbnRoLCB3ZWVrLCBvciBkYXksIGFuZCB0aGUgcmVzdWx0IGlzIHRoZSBudW1iZXIgb2Ygd2hvbGUgY2FsZW5kYXIgcGVyaW9kcyB0aGF0IGhhdmUgZWxhcHNlZCBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlIGFuZCB0b2RheS4NCg0KRm9yIHRoZSBEYXRlVGltZSBvdmVybG9hZCwgdGhlIGNhbGN1bGF0aW9uIGlzIHBlcmZvcm1lZCB1c2luZyBOb3coKSwgYW5kIHRoZSByZXN1bHQgaXMgdGhlIG51bWJlciBvZiB3aG9sZSBjYWxlbmRhciBwZXJpb2RzIHRoYXQgaGF2ZSBlbGFwc2VkIGJldHdlZW4gdGhlIGdpdmVuIGRhdGV0aW1lIGFuZCBub3cuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InByZWNpc2lvbiIgdHlwZT0iRGF0ZVRpbWVQcmVjaXNpb24iLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNhbGN1bGF0ZUFnZUF0Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5DYWxjdWxhdGVzIHRoZSBhZ2UgaW4gdGhlIHNwZWNpZmllZCBwcmVjaXNpb24gb2YgYSBwZXJzb24gYm9ybiBvbiBhIGdpdmVuIGRhdGUsIGFzIG9mIGFub3RoZXIgZ2l2ZW4gZGF0ZS4NCg0KVGhlIENhbGN1bGF0ZUFnZUF0IG9wZXJhdG9yIGhhcyB0d28gc2lnbmF0dXJlczoNCiAgKERhdGUsIERhdGUpDQogIChEYXRlVGltZSwgRGF0ZVRpbWUpDQogICAgICANCkZvciB0aGUgRGF0ZSBvdmVybG9hZCwgcHJlY2lzaW9uIG11c3QgYmUgb25lIG9mIHllYXIsIG1vbnRoLCB3ZWVrLCBvciBkYXksIGFuZCB0aGUgcmVzdWx0IGlzIHRoZSBudW1iZXIgb2Ygd2hvbGUgY2FsZW5kYXIgcGVyaW9kcyB0aGF0IGhhdmUgZWxhcHNlZCBiZXR3ZWVuIHRoZSBmaXJzdCBkYXRlIGFuZCB0aGUgc2Vjb25kIGRhdGUuDQogICAgICANCkZvciB0aGUgRGF0ZVRpbWUgb3ZlcmxvYWQsIHRoZSByZXN1bHQgaXMgdGhlIG51bWJlciBvZiB3aG9sZSBjYWxlbmRhciBwZXJpb2RzIHRoYXQgaGF2ZSBlbGFwc2VkIGJldHdlZW4gdGhlIGZpcnN0IGRhdGV0aW1lIGFuZCB0aGUgc2Vjb25kIGRhdGV0aW1lLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0icHJlY2lzaW9uIiB0eXBlPSJEYXRlVGltZVByZWNpc2lvbiIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCjwveHM6c2NoZW1hPg0K"
}