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
{
"resourceType" : "Binary",
"id" : "binary-schema-expression",
"contentType" : "application/xsd",
"data" : "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxucz0idXJuOmhsNy1vcmc6ZWxtOnIxIiB4bWxuczpzY2g9Imh0dHA6Ly9wdXJsLm9jbGMub3JnL2RzZGwvc2NoZW1hdHJvbiIgdGFyZ2V0TmFtZXNwYWNlPSJ1cm46aGw3LW9yZzplbG06cjEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4NCgk8eHM6YW5ub3RhdGlvbj4NCgkJPHhzOmRvY3VtZW50YXRpb24+VGhpcyBmaWxlIGRlZmluZXMgdGhlIGNvcmUgZXhwcmVzc2lvbiBjb21wb25lbnRzIHVzZWQgdGhyb3VnaG91dCBhcnRpZmFjdHMgYmFzZWQgb24gdGhlIEV4cHJlc3Npb24gTG9naWNhbCBNb2RlbC4gVGhlIGNvcmUgZXhwcmVzc2lvbiBjb21wb25lbnRzIGRlZmluZWQgaGVyZSBhcmUgaW50ZW5kZWQgdG8gYmUgZ2VuZXJhbCBwdXJwb3NlLCBhbmQgZG8gbm90IHJlZmVyZW5jZSBhbnl0aGluZyBzcGVjaWZpYyB0byB0aGUgY2xpbmljYWwgcXVhbGl0eSBkb21haW4uIFRoaXMgbGF5ZXJpbmcgaXMgaW50ZW5kZWQgdG8gaXNvbGF0ZSB0aGUgY29uY2VwdHVhbCBlbGVtZW50cyBvZiBhIGdlbmVyYWwgcHVycG9zZSBleHByZXNzaW9uIGxhbmd1YWdlIGZyb20gdGhlIGNsaW5pY2FsbHktZm9jdXNlZCBvcGVyYXRpb25zIHJlbGV2YW50IHRvIHRoZSBjbGluaWNhbCBxdWFsaXR5IGRvbWFpbi48L3hzOmRvY3VtZW50YXRpb24+DQoJPC94czphbm5vdGF0aW9uPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJFbGVtZW50IiBhYnN0cmFjdD0idHJ1ZSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEVsZW1lbnQgdHlwZSBkZWZpbmVzIHRoZSBhYnN0cmFjdCBiYXNlIHR5cGUgZm9yIGFsbCBsaWJyYXJ5IGVsZW1lbnRzIGluIEVMTS48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOnNlcXVlbmNlPg0KCQkJPHhzOmVsZW1lbnQgbmFtZT0iYW5ub3RhdGlvbiIgdHlwZT0ieHM6YW55VHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQoJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBhbm5vdGF0aW9uIGVsZW1lbnQgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIGRlY29yYXRpbmcgZXhwcmVzc2lvbnMgd2l0aCBhcHBsaWNhdGlvbi1zcGVjaWZpYyBpbmZvcm1hdGlvbiBzdWNoIGFzIHRyYW5zbGF0aW9uIGhpbnRzLCB2aXN1YWwgZGVzaWduZXIgaW5mb3JtYXRpb24sIG9yIGRlYnVnIHN5bWJvbHMuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCTwveHM6ZWxlbWVudD4NCgkJCTx4czplbGVtZW50IG5hbWU9InJlc3VsdFR5cGVTcGVjaWZpZXIiIHR5cGU9IlR5cGVTcGVjaWZpZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIj4NCgkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIHJlc3VsdFR5cGVTcGVjaWZpZXIgZWxlbWVudCBkZXNjcmliZXMgdGhlIHR5cGUgaW5mb3JtYXRpb24gZm9yIHRoaXMgRUxNIG5vZGUuIEVMTSBkb2N1bWVudHMgYXJlIG5vdCByZXF1aXJlZCB0byBjb250YWluIHJlc3VsdCB0eXBlIGluZm9ybWF0aW9uLCBidXQgaWYgdGhleSBkbywgdGhlIHJlc3VsdCB0eXBlIG9mIGVhY2ggbm9kZSBpcyBzcGVjaWZpZWQgdXNpbmcgdGhlIHJlc3VsdFR5cGVOYW1lIGF0dHJpYnV0ZSBmb3IgbmFtZWQgdHlwZXMsIGFuZCB0aGlzIHJlc3VsdFR5cGVTcGVjaWZpZXIgZWxlbWVudCBmb3Igbm9uLW5hbWVkIHR5cGVzLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQk8L3hzOmFubm90YXRpb24+DQoJCQk8L3hzOmVsZW1lbnQ+DQoJCTwveHM6c2VxdWVuY2U+DQoJCTx4czphdHRyaWJ1dGUgbmFtZT0ibG9jYWxJZCIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9Im9wdGlvbmFsIi8+DQoJCTx4czphdHRyaWJ1dGUgbmFtZT0ibG9jYXRvciIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9Im9wdGlvbmFsIj4NCgkJCTx4czphbm5vdGF0aW9uPg0KCQkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBsb2NhdG9yIGZvciBhbiBFTE0gbm9kZSBpZGVudGlmaWVzIHRoZSBsb2NhdGlvbiBpbiB0aGUgc291cmNlIGRvY3VtZW50IHRoYXQgcHJvZHVjZWQgdGhlIEVMTS4gVGhlIGZvcm1hdCBpcyBMOkNbLUw6Q10sIHdoZXJlIEwgaXMgYSBsaW5lIG51bWJlciBhbmQgQyBpcyBhIGNvbHVtbiBudW1iZXIuIEZvciBsb2NhdG9ycyB0aGF0IHNwYW4gYSByYW5nZSwgYW4gb3B0aW9uYWwgcmFuZ2UgY2FuIGJlIGdpdmVuIHRvIGFuIGVuZGluZyBsaW5lIGFuZCBjb2x1bW4gbnVtYmVyLiBMaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBhcmUgMS1iYXNlZC48L3hzOmRvY3VtZW50YXRpb24+DQoJCQk8L3hzOmFubm90YXRpb24+DQoJCTwveHM6YXR0cmlidXRlPg0KCQk8eHM6YXR0cmlidXRlIG5hbWU9InJlc3VsdFR5cGVOYW1lIiB0eXBlPSJ4czpRTmFtZSIgdXNlPSJvcHRpb25hbCI+DQoJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgcmVzdWx0VHlwZU5hbWUgYXR0cmlidXRlIGlzIHBhcnQgb2YgdHlwZSBpbmZvcm1hdGlvbiBmb3IgYW4gRUxNIGRvY3VtZW50LiBFTE0gZG9jdW1lbnRzIGFyZSBub3QgcmVxdWlyZWQgdG8gc3BlY2lmeSByZXN1bHQgdHlwZSBpbmZvcm1hdGlvbiwgYnV0IGlmIHRoZXkgZG8sIHRoZSByZXN1bHQgdHlwZSBvZiBlYWNoIG5vZGUgaXMgc3BlY2lmaWVkIHVzaW5nIHRoaXMgYXR0cmlidXRlIGZvciBuYW1lZCB0eXBlcywgb3IgdGhlIHJlc3VsdFR5cGVTcGVjaWZpZXIgZWxlbWVudCBmb3Igbm9uLW5hbWVkIHR5cGVzLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCTwveHM6YW5ub3RhdGlvbj4NCgkJPC94czphdHRyaWJ1dGU+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iVHlwZVNwZWNpZmllciIgYWJzdHJhY3Q9InRydWUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlR5cGVTcGVjaWZpZXIgaXMgdGhlIGFic3RyYWN0IGJhc2UgdHlwZSBmb3IgYWxsIHR5cGUgc3BlY2lmaWVycy4NCgkJCTwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkVsZW1lbnQiLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJOYW1lZFR5cGVTcGVjaWZpZXIiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPk5hbWVkVHlwZVNwZWNpZmllciBkZWZpbmVzIGEgdHlwZSBpZGVudGlmaWVkIGJ5IGEgbmFtZSwgc3VjaCBhcyBJbnRlZ2VyLCBTdHJpbmcsIFBhdGllbnQsIG9yIEVuY291bnRlci4NCgkJCTwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IlR5cGVTcGVjaWZpZXIiPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6UU5hbWUiIHVzZT0icmVxdWlyZWQiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkludGVydmFsVHlwZVNwZWNpZmllciI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+SW50ZXJ2YWxUeXBlU3BlY2lmaWVyIGRlZmluZXMgYW4gaW50ZXJ2YWwgdHlwZSBieSBzcGVjaWZ5aW5nIHRoZSBwb2ludCB0eXBlLiBBbnkgdHlwZSBjYW4gc2VydmUgYXMgdGhlIHBvaW50IHR5cGUgZm9yIGFuIGludGVydmFsLCBzbyBsb25nIGFzIGl0IHN1cHBvcnRzIGNvbXBhcmlzb24gb3BlcmF0b3JzLCBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlIGRldGVybWluYXRpb24sIGFzIHdlbGwgYXMgcHJlZGVjZXNzb3IgYW5kIHN1Y2Nlc3NvciBmdW5jdGlvbnMuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVHlwZVNwZWNpZmllciI+DQoJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJwb2ludFR5cGUiIHR5cGU9IlR5cGVTcGVjaWZpZXIiIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RUeXBlU3BlY2lmaWVyIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5MaXN0VHlwZVNwZWNpZmllciBkZWZpbmVzIGEgbGlzdCB0eXBlIGJ5IHNwZWNpZnlpbmcgdGhlIHR5cGUgb2YgZWxlbWVudHMgdGhlIGxpc3QgbWF5IGNvbnRhaW4uPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVHlwZVNwZWNpZmllciI+DQoJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJlbGVtZW50VHlwZSIgdHlwZT0iVHlwZVNwZWNpZmllciIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iVHVwbGVFbGVtZW50RGVmaW5pdGlvbiI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VHVwbGVFbGVtZW50RGVmaW5pdGlvbiBkZWZpbmVzIHRoZSBuYW1lIGFuZCB0eXBlIG9mIGEgc2luZ2xlIGVsZW1lbnQgd2l0aGluIGEgVHVwbGVUeXBlU3BlY2lmaWVyLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkVsZW1lbnQiPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0idHlwZSIgdHlwZT0iVHlwZVNwZWNpZmllciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiPg0KCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+VGhpcyBlbGVtZW50IGlzIGRlcHJlY2F0ZWQuIE5ldyBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIHVzZSB0aGUgbmV3IGVsZW1lbnRUeXBlIGVsZW1lbnQuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9ImVsZW1lbnRUeXBlIiB0eXBlPSJUeXBlU3BlY2lmaWVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpzdHJpbmciIHVzZT0icmVxdWlyZWQiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlR1cGxlVHlwZVNwZWNpZmllciI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VHVwbGVUeXBlU3BlY2lmaWVyIGRlZmluZXMgdGhlIHBvc3NpYmxlIGVsZW1lbnRzIG9mIGEgdHVwbGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVHlwZVNwZWNpZmllciI+DQoJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJlbGVtZW50IiB0eXBlPSJUdXBsZUVsZW1lbnREZWZpbml0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNob2ljZVR5cGVTcGVjaWZpZXIiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPkNob2ljZVR5cGVTcGVjaWZpZXIgZGVmaW5lcyB0aGUgcG9zc2libGUgdHlwZXMgb2YgYSBjaG9pY2UgdHlwZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJUeXBlU3BlY2lmaWVyIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InR5cGUiIHR5cGU9IlR5cGVTcGVjaWZpZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KCQkJCQkJPHhzOmFubm90YXRpb24+DQoJCQkJCQkJPHhzOmRvY3VtZW50YXRpb24+VGhpcyBlbGVtZW50IGlzIGRlcHJlY2F0ZWQuIE5ldyBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIHVzZSB0aGUgbmV3IGNob2ljZSBlbGVtZW50LjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJPC94czplbGVtZW50Pg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJjaG9pY2UiIHR5cGU9IlR5cGVTcGVjaWZpZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iRXhwcmVzc2lvbiIgYWJzdHJhY3Q9InRydWUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBFeHByZXNzaW9uIHR5cGUgZGVmaW5lcyB0aGUgYWJzdHJhY3QgYmFzZSB0eXBlIGZvciBhbGwgZXhwcmVzc2lvbnMgdXNlZCBpbiB0aGUgRUxNIGV4cHJlc3Npb24gbGFuZ3VhZ2UuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iRWxlbWVudCIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik9wZXJhdG9yRXhwcmVzc2lvbiIgYWJzdHJhY3Q9InRydWUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBPcGVyYXRvciB0eXBlIGRlZmluZXMgdGhlIGFic3RyYWN0IGJhc2UgdHlwZSBmb3IgYWxsIGJ1aWx0LWluIG9wZXJhdG9ycyB1c2VkIGluIHRoZSBFTE0gZXhwcmVzc2lvbiBsYW5ndWFnZS4gVGhpcyBleHBsaWNpdGx5IGV4Y2x1ZGVzIEZ1bmN0aW9uUmVmLCB3aGljaCBpcyB0aGUgY29uY3JldGUgdHlwZSBmb3IgYWxsIGZ1bmN0aW9uIGludm9jYXRpb25zLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ic2lnbmF0dXJlIiB0eXBlPSJUeXBlU3BlY2lmaWVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4NCgkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPlNwZWNpZmllcyB0aGUgZGVjbGFyZWQgc2lnbmF0dXJlIG9mIHRoZSBvcGVyYXRvciBvciBmdW5jdGlvbiBiZWluZyBjYWxsZWQuIElmIG5vIHNpZ25hdHVyZSBpcyBzcGVjaWZpZWQsIHRoZSBydW4tdGltZSB0eXBlcyBvZiB0aGUgb3BlcmFuZHMgc2hvdWxkIGJlIHVzZWQgdG8gcmVzb2x2ZSBhbnkgb3ZlcmxvYWQuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlVuYXJ5RXhwcmVzc2lvbiIgYWJzdHJhY3Q9InRydWUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBVbmFyeUV4cHJlc3Npb24gdHlwZSBkZWZpbmVzIHRoZSBhYnN0cmFjdCBiYXNlIHR5cGUgZm9yIGV4cHJlc3Npb25zIHRoYXQgdGFrZSBhIHNpbmdsZSBhcmd1bWVudC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJPcGVyYXRvckV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ib3BlcmFuZCIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iQmluYXJ5RXhwcmVzc2lvbiIgYWJzdHJhY3Q9InRydWUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBCaW5hcnlFeHByZXNzaW9uIHR5cGUgZGVmaW5lcyB0aGUgYWJzdHJhY3QgYmFzZSB0eXBlIGZvciBleHByZXNzaW9ucyB0aGF0IHRha2UgdHdvIGFyZ3VtZW50cy48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJPcGVyYXRvckV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ib3BlcmFuZCIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIyIiBtYXhPY2N1cnM9IjIiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iVGVybmFyeUV4cHJlc3Npb24iIGFic3RyYWN0PSJ0cnVlIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgVGVybmFyeUV4cHJlc3Npb24gdHlwZSBkZWZpbmVzIHRoZSBhYnN0cmFjdCBiYXNlIHR5cGUgZm9yIGV4cHJlc3Npb25zIHRoYXQgdGFrZSB0aHJlZSBhcmd1bWVudHMuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iT3BlcmF0b3JFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9Im9wZXJhbmQiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMyIgbWF4T2NjdXJzPSIzIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik5hcnlFeHByZXNzaW9uIiBhYnN0cmFjdD0idHJ1ZSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIE5hcnlFeHByZXNzaW9uIHR5cGUgZGVmaW5lcyBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBhbiBleHByZXNzaW9uIHRoYXQgdGFrZXMgYW55IG51bWJlciBvZiBhcmd1bWVudHMsIGluY2x1ZGluZyB6ZXJvLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9Ik9wZXJhdG9yRXhwcmVzc2lvbiI+DQoJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJvcGVyYW5kIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOnNpbXBsZVR5cGUgbmFtZT0iQWNjZXNzTW9kaWZpZXIiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBBY2Nlc3NNb2RpZmllciB0eXBlIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgYWNjZXNzIGxldmVsIGZvciB0aGUgdmFyaW91cyBkZWZpbml0aW9ucyB3aXRoaW4gYSBsaWJyYXJ5IHN1Y2ggYXMgcGFyYW1ldGVycywgZXhwcmVzc2lvbnMsIGFuZCBmdW5jdGlvbnMuIElmIG5vIGFjY2VzcyBtb2RpZmllciBpcyBzcGVjaWZpZWQsIHB1YmxpYyBpcyBhc3N1bWVkLiBQcml2YXRlIGRlZmluaXRpb25zIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiB0aGUgbGlicmFyeSBpbiB3aGljaCB0aGV5IGFyZSBkZWZpbmVkLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCgkJCTx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUHVibGljIi8+DQoJCQk8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlByaXZhdGUiLz4NCgkJPC94czpyZXN0cmljdGlvbj4NCgk8L3hzOnNpbXBsZVR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkV4cHJlc3Npb25EZWYiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBFeHByZXNzaW9uRGVmIHR5cGUgZGVmaW5lcyBhbiBleHByZXNzaW9uIGFuZCBhbiBhc3NvY2lhdGVkIG5hbWUgdGhhdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBhbnkgZXhwcmVzc2lvbiBpbiB0aGUgYXJ0aWZhY3QuIFRoZSBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgYXJ0aWZhY3QuDQoJCQlUaGUgY29udGV4dCBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBjb250ZXh0IG9mIHRoZSBleGVjdXRpb24gYW5kIGlzIHVzZWQgYnkgdGhlIGVudmlyb25tZW50IHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0byBmaWx0ZXIgdGhlIGRhdGEgcmV0dXJuZWQgZnJvbSByZXRyaWV2ZXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFbGVtZW50Ij4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9ImV4cHJlc3Npb24iIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOnN0cmluZyIvPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iY29udGV4dCIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJhY2Nlc3NMZXZlbCIgdHlwZT0iQWNjZXNzTW9kaWZpZXIiIHVzZT0ib3B0aW9uYWwiIGRlZmF1bHQ9IlB1YmxpYyIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iRnVuY3Rpb25EZWYiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBGdW5jdGlvbkRlZiB0eXBlIGRlZmluZXMgYSBuYW1lZCBmdW5jdGlvbiB0aGF0IGNhbiBiZSBpbnZva2VkIGJ5IGFueSBleHByZXNzaW9uIGluIHRoZSBhcnRpZmFjdC4gRnVuY3Rpb24gbmFtZXMgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBhcnRpZmFjdC4gRnVuY3Rpb25zIG1heSB0YWtlIGFueSBudW1iZXIgb2Ygb3BlcmFuZHMuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iRXhwcmVzc2lvbkRlZiI+DQoJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJvcGVyYW5kIiB0eXBlPSJPcGVyYW5kRGVmIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9ImV4dGVybmFsIiB0eXBlPSJ4czpib29sZWFuIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJFeHByZXNzaW9uUmVmIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgRXhwcmVzc2lvblJlZiB0eXBlIGRlZmluZXMgYW4gZXhwcmVzc2lvbiB0aGF0IHJlZmVyZW5jZXMgYSBwcmV2aW91c2x5IGRlZmluZWQgTmFtZWRFeHByZXNzaW9uLiBUaGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgYW4gRXhwcmVzc2lvblJlZmVyZW5jZSBpcyB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIHJlZmVyZW5jZWQgTmFtZWRFeHByZXNzaW9uLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkV4cHJlc3Npb24iPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6c3RyaW5nIi8+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaWJyYXJ5TmFtZSIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJGdW5jdGlvblJlZiI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEZ1bmN0aW9uUmVmIHR5cGUgZGVmaW5lcyBhbiBleHByZXNzaW9uIHRoYXQgaW52b2tlcyBhIHByZXZpb3VzbHkgZGVmaW5lZCBmdW5jdGlvbi4gVGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIGVhY2ggb3BlcmFuZCBpcyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkV4cHJlc3Npb25SZWYiPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ic2lnbmF0dXJlIiB0eXBlPSJUeXBlU3BlY2lmaWVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4NCgkJCQkJCTx4czphbm5vdGF0aW9uPg0KCQkJCQkJCTx4czpkb2N1bWVudGF0aW9uPlNwZWNpZmllcyB0aGUgZGVjbGFyZWQgc2lnbmF0dXJlIG9mIHRoZSBmdW5jdGlvbiBiZWluZyBjYWxsZWQuIElmIG5vIHNpZ25hdHVyZSBpcyBzcGVjaWZpZWQsIHRoZSBydW4tdGltZSB0eXBlcyBvZiB0aGUgb3BlcmFuZHMgc2hvdWxkIGJlIHVzZWQgdG8gcmVzb2x2ZSBhbnkgb3ZlcmxvYWQuPC94czpkb2N1bWVudGF0aW9uPg0KCQkJCQkJPC94czphbm5vdGF0aW9uPg0KCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9Im9wZXJhbmQiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iUGFyYW1ldGVyRGVmIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgUGFyYW1ldGVyRGVmIHR5cGUgZGVmaW5lcyBhIHBhcmFtZXRlciB0aGF0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG5hbWUgYW55d2hlcmUgd2l0aGluIGFuIGV4cHJlc3Npb24uIA0KCQ0KUGFyYW1ldGVycyBhcmUgZGVmaW5lZCBhdCB0aGUgYXJ0aWZhY3QgbGV2ZWwsIGFuZCBtYXkgYmUgcHJvdmlkZWQgYXMgcGFydCBvZiB0aGUgcGF5bG9hZCBmb3IgYW4gZXZhbHVhdGlvbiByZXF1ZXN0LiANCg0KSWYgbm8gcGFyYW1ldGVyIHZhbHVlIGlzIHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBlbGVtZW50IGlzIHVzZWQgdG8gcHJvdmlkZSB0aGUgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIuIA0KCQ0KSWYgbm8gcGFyYW1ldGVyIG9yIGRlZmF1bHQgaXMgcHJvdmlkZWQsIHRoZSBwYXJhbWV0ZXIgaXMgZGVmaW5lZCB0byBiZSBudWxsLg0KDQpOb3RlIHRoYXQgdGhlIGV4cHJlc3Npb24gc3BlY2lmaWVkIGluIHRoZSBkZWZhdWx0IGVsZW1lbnQgbXVzdCBiZSBhYmxlIHRvIGJlIGV2YWx1YXRlZCBhdCBjb21waWxlLXRpbWUgKGkuZS4gd2l0aG91dCByZWZlcmVuY2UgdG8gYW55IHJ1bi10aW1lIGNhcGFiaWxpdGllcyBzdWNoIGFzIGRhdGEsIHRlcm1pbm9sb2d5LCBhbmQgbGlicmFyeSByZWZlcmVuY2VzLCBib3RoIGxvY2FsIGFuZCBpbmNsdWRlZCkuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iRWxlbWVudCI+DQoJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJkZWZhdWx0IiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJwYXJhbWV0ZXJUeXBlU3BlY2lmaWVyIiB0eXBlPSJUeXBlU3BlY2lmaWVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpzdHJpbmciLz4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InBhcmFtZXRlclR5cGUiIHR5cGU9InhzOlFOYW1lIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJhY2Nlc3NMZXZlbCIgdHlwZT0iQWNjZXNzTW9kaWZpZXIiIHVzZT0ib3B0aW9uYWwiIGRlZmF1bHQ9IlB1YmxpYyIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iUGFyYW1ldGVyUmVmIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgUGFyYW1ldGVyUmVmIGV4cHJlc3Npb24gYWxsb3dzIHRoZSB2YWx1ZSBvZiBhIHBhcmFtZXRlciB0byBiZSByZWZlcmVuY2VkIGFzIHBhcnQgb2YgYW4gZXhwcmVzc2lvbi48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOnN0cmluZyIvPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0ibGlicmFyeU5hbWUiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJvcHRpb25hbCIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iT3BlcmFuZERlZiI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIE9wZXJhbmREZWYgdHlwZSBkZWZpbmVzIGFuIG9wZXJhbmQgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG5hbWUgYW55d2hlcmUgd2l0aGluIHRoZSBib2R5IG9mIGEgZnVuY3Rpb24gZGVmaW5pdGlvbi48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFbGVtZW50Ij4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9Im9wZXJhbmRUeXBlU3BlY2lmaWVyIiB0eXBlPSJUeXBlU3BlY2lmaWVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpzdHJpbmciLz4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9Im9wZXJhbmRUeXBlIiB0eXBlPSJ4czpRTmFtZSIgdXNlPSJvcHRpb25hbCIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iT3BlcmFuZFJlZiI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIE9wZXJhbmRSZWYgZXhwcmVzc2lvbiBhbGxvd3MgdGhlIHZhbHVlIG9mIGFuIG9wZXJhbmQgdG8gYmUgcmVmZXJlbmNlZCBhcyBwYXJ0IG9mIGFuIGV4cHJlc3Npb24gd2l0aGluIHRoZSBib2R5IG9mIGEgZnVuY3Rpb24gZGVmaW5pdGlvbi48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOnN0cmluZyIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iSWRlbnRpZmllclJlZiI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIElkZW50aWZpZXJSZWYgdHlwZSBkZWZpbmVzIGFuIGV4cHJlc3Npb24gdGhhdCByZWZlcmVuY2VzIGFuIGlkZW50aWZpZXIgdGhhdCBpcyBlaXRoZXIgdW5yZXNvbHZlZCwgb3IgaGFzIGJlZW4gcmVzb2x2ZWQgdG8gYW4gYXR0cmlidXRlIGluIGFuIHVuYW1iaWd1b3VzIGl0ZXJhdGlvbiBzY29wZSBzdWNoIGFzIGEgc29ydC4gSW1wbGVtZW50YXRpb25zIHNob3VsZCBhdHRlbXB0IHRvIHJlc29sdmUgdGhlIGlkZW50aWZpZXIsIG9ubHkgdGhyb3dpbmcgYW4gZXJyb3IgYXQgY29tcGlsZS10aW1lIChvciBydW4tdGltZSBmb3IgYW4gaW50ZXJwcmV0aXZlIHN5c3RlbSkgaWYgdGhlIGlkZW50aWZpZXIgcmVmZXJlbmNlIGNhbm5vdCBiZSByZXNvbHZlZC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOnN0cmluZyIvPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0ibGlicmFyeU5hbWUiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJvcHRpb25hbCIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8IS0tIExpdGVyYWxzIC0tPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXRlcmFsIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgTGl0ZXJhbCB0eXBlIGRlZmluZXMgYSBzaW5nbGUgc2NhbGFyIHZhbHVlLiBGb3IgZXhhbXBsZSwgdGhlIGxpdGVyYWwgNSwgdGhlIGJvb2xlYW4gdmFsdWUgdHJ1ZSBvciB0aGUgc3RyaW5nICJhbnRpdGhyb21ib3RpYyIuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iRXhwcmVzc2lvbiI+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZVR5cGUiIHR5cGU9InhzOlFOYW1lIiB1c2U9InJlcXVpcmVkIi8+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZSIgdHlwZT0ieHM6YW55U2ltcGxlVHlwZSIgdXNlPSJvcHRpb25hbCIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iVHVwbGVFbGVtZW50Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgVHVwbGVFbGVtZW50IGlzIHVzZWQgd2l0aGluIGEgVHVwbGUgZXhwcmVzc2lvbiB0byBwcm92aWRlIHRoZSB2YWx1ZSBvZiBhIHNwZWNpZmljIGVsZW1lbnQgd2l0aGluIGEgdHVwbGUgbGl0ZXJhbCBleHByZXNzaW9uLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6c2VxdWVuY2U+DQoJCQk8eHM6ZWxlbWVudCBuYW1lPSJ2YWx1ZSIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJPC94czpzZXF1ZW5jZT4NCgkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpzdHJpbmciIHVzZT0icmVxdWlyZWQiLz4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJUdXBsZSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFR1cGxlIGV4cHJlc3Npb24gYWxsb3dzIHR1cGxlcyBvZiBhbnkgdHlwZSB0byBiZSBidWlsdCB1cCBhcyBhbiBleHByZXNzaW9uLiBUaGUgdHVwbGVUeXBlIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIHR1cGxlIGJlaW5nIGJ1aWx0LCBpZiBhbnksIGFuZCB0aGUgbGlzdCBvZiB0dXBsZSBlbGVtZW50cyBzcGVjaWZ5IHRoZSB2YWx1ZXMgZm9yIHRoZSBlbGVtZW50cyBvZiB0aGUgdHVwbGUuIE5vdGUgdGhhdCB0aGUgdmFsdWUgb2YgYW4gZWxlbWVudCBtYXkgYmUgYW55IGV4cHJlc3Npb24sIGluY2x1ZGluZyBhbm90aGVyIFR1cGxlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iZWxlbWVudCIgdHlwZT0iVHVwbGVFbGVtZW50IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikluc3RhbmNlRWxlbWVudCI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEluc3RhbmNlRWxlbWVudCBpcyB1c2VkIHdpdGhpbiBhbiBJbnN0YW5jZSBleHByZXNzaW9uIHRvIHByb3ZpZGUgdGhlIHZhbHVlIG9mIGEgc3BlY2lmaWMgZWxlbWVudCB3aXRoaW4gYW4gb2JqZWN0IGxpdGVyYWwgZXhwcmVzc2lvbi48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOnNlcXVlbmNlPg0KCQkJPHhzOmVsZW1lbnQgbmFtZT0idmFsdWUiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIi8+DQoJCTwveHM6c2VxdWVuY2U+DQoJCTx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9InJlcXVpcmVkIi8+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iSW5zdGFuY2UiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBJbnN0YW5jZSBleHByZXNzaW9uIGFsbG93cyBjbGFzcyBpbnN0YW5jZXMgb2YgYW55IHR5cGUgdG8gYmUgYnVpbHQgdXAgYXMgYW4gZXhwcmVzc2lvbi4gVGhlIGNsYXNzVHlwZSBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBjbGFzcyBpbnN0YW5jZSBiZWluZyBidWlsdCwgYW5kIHRoZSBsaXN0IG9mIGluc3RhbmNlIGVsZW1lbnRzIHNwZWNpZnkgdGhlIHZhbHVlcyBmb3IgdGhlIGVsZW1lbnRzIG9mIHRoZSBjbGFzcyBpbnN0YW5jZS4gTm90ZSB0aGF0IHRoZSB2YWx1ZSBvZiBhbiBlbGVtZW50IG1heSBiZSBhbnkgZXhwcmVzc2lvbiwgaW5jbHVkaW5nIGFub3RoZXIgSW5zdGFuY2UuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iRXhwcmVzc2lvbiI+DQoJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJlbGVtZW50IiB0eXBlPSJJbnN0YW5jZUVsZW1lbnQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3NUeXBlIiB0eXBlPSJ4czpRTmFtZSIgdXNlPSJyZXF1aXJlZCIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8IS0tIEludGVydmFsIHNlbGVjdG9yIC0tPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJJbnRlcnZhbCI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEludGVydmFsIHNlbGVjdG9yIGRlZmluZXMgYW4gaW50ZXJ2YWwgdmFsdWUuIEFuIGludGVydmFsIG11c3QgYmUgZGVmaW5lZCB1c2luZyBhIHBvaW50IHR5cGUgdGhhdCBzdXBwb3J0cyBjb21wYXJpc29uLCBhcyB3ZWxsIGFzIFN1Y2Nlc3NvciBhbmQgUHJlZGVjZXNzb3Igb3BlcmF0aW9ucywgYW5kIE1pbmltdW0gYW5kIE1heGltdW0gVmFsdWUgb3BlcmF0aW9ucy4NCgkJCQ0KVGhlIGxvdyBhbmQgaGlnaCBib3VuZHMgb2YgdGhlIGludGVydmFsIG1heSBlYWNoIGJlIGRlZmluZWQgYXMgb3BlbiBvciBjbG9zZWQuIEZvbGxvd2luZyBzdGFuZGFyZCB0ZXJtaW5vbG9neSB1c2FnZSBpbiBpbnRlcnZhbCBtYXRoZW1hdGljcywgYW4gb3BlbiBpbnRlcnZhbCBpcyBkZWZpbmVkIHRvIGV4Y2x1ZGUgdGhlIHNwZWNpZmllZCBwb2ludCwgd2hlcmVhcyBhIGNsb3NlZCBpbnRlcnZhbCBpbmNsdWRlcyB0aGUgcG9pbnQuIFRoZSBkZWZhdWx0IGlzIGNsb3NlZCwgaW5kaWNhdGluZyBhbiBpbmNsdXNpdmUgaW50ZXJ2YWwuDQoNClRoZSBsb3cgYW5kIGhpZ2ggZWxlbWVudHMgYXJlIGJvdGggb3B0aW9uYWwuIElmIHRoZSBsb3cgZWxlbWVudCBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgbG93IGJvdW5kIG9mIHRoZSByZXN1bHRpbmcgaW50ZXJ2YWwgaXMgbnVsbC4gSWYgdGhlIGhpZ2ggZWxlbWVudCBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgaGlnaCBib3VuZCBvZiB0aGUgcmVzdWx0aW5nIGludGVydmFsIGlzIG51bGwuDQoNClRoZSBzdGF0aWMgdHlwZSBvZiB0aGUgbG93IGJvdW5kIGRldGVybWluZXMgdGhlIHR5cGUgb2YgdGhlIGludGVydmFsLCBhbmQgdGhlIGhpZ2ggYm91bmQgbXVzdCBiZSBvZiB0aGUgc2FtZSB0eXBlLg0KDQpJZiB0aGUgbG93IGJvdW5kIG9mIHRoZSBpbnRlcnZhbCBpcyBudWxsIGFuZCBvcGVuLCB0aGUgbG93IGJvdW5kIG9mIHRoZSBpbnRlcnZhbCBpcyBpbnRlcnByZXRlZCBhcyB1bmtub3duLCBhbmQgY29tcHV0YXRpb25zIGludm9sdmluZyB0aGUgbG93IGJvdW5kYXJ5IHdpbGwgcmVzdWx0IGluIG51bGwuDQoNCklmIHRoZSBsb3cgYm91bmQgb2YgdGhlIGludGVydmFsIGlzIG51bGwgYW5kIGNsb3NlZCwgdGhlIGludGVydmFsIGlzIGludGVycHJldGVkIHRvIHN0YXJ0IGF0IHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSBwb2ludCB0eXBlLCBhbmQgY29tcHV0YXRpb25zIGludm9sdmluZyB0aGUgbG93IGJvdW5kYXJ5IHdpbGwgYmUgcGVyZm9ybWVkIHdpdGggdGhhdCB2YWx1ZS4NCg0KSWYgdGhlIGhpZ2ggYm91bmQgb2YgdGhlIGludGVydmFsIGlzIG51bGwgYW5kIG9wZW4sIHRoZSBoaWdoIGJvdW5kIG9mIHRoZSBpbnRlcnZhbCBpcyB1bmtub3duLCBhbmQgY29tcHV0YXRpb25zIGludm9sdmluZyB0aGUgaGlnaCBib3VuZGFyeSB3aWxsIHJlc3VsdCBpbiBudWxsLiANCg0KSWYgdGhlIGhpZ2ggYm91bmQgb2YgdGhlIGludGVydmFsIGlzIG51bGwgYW5kIGNsb3NlZCwgdGhlIGludGVydmFsIGlzIGludGVycHJldGVkIHRvIGVuZCBhdCB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgcG9pbnQgdHlwZSwgYW5kIGNvbXB1dGF0aW9ucyBpbnZvbHZpbmcgdGhlIGhpZ2ggYm91bmRhcnkgd2lsbCBiZSBwZXJmb3JtZWQgd2l0aCB0aGF0IGludGVycHJldGF0aW9uLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ibG93IiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJsb3dDbG9zZWRFeHByZXNzaW9uIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJoaWdoIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJoaWdoQ2xvc2VkRXhwcmVzc2lvbiIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0ibG93Q2xvc2VkIiB0eXBlPSJ4czpib29sZWFuIiB1c2U9Im9wdGlvbmFsIiBkZWZhdWx0PSJ0cnVlIi8+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJoaWdoQ2xvc2VkIiB0eXBlPSJ4czpib29sZWFuIiB1c2U9Im9wdGlvbmFsIiBkZWZhdWx0PSJ0cnVlIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgTGlzdCBzZWxlY3RvciByZXR1cm5zIGEgdmFsdWUgb2YgdHlwZSBMaXN0LCB3aG9zZSBlbGVtZW50cyBhcmUgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBhcmd1bWVudHMgdG8gdGhlIExpc3Qgc2VsZWN0b3IsIGluIG9yZGVyLiANCgkJCQ0KSWYgYSB0eXBlU3BlY2lmaWVyIGVsZW1lbnQgaXMgcHJvdmlkZWQsIHRoZSBsaXN0IGlzIG9mIHRoYXQgdHlwZS4gT3RoZXJ3aXNlLCB0aGUgc3RhdGljIHR5cGUgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IGRldGVybWluZXMgdGhlIHR5cGUgb2YgdGhlIHJlc3VsdGluZyBsaXN0LCBhbmQgZWFjaCBzdWJzZXF1ZW50IGFyZ3VtZW50IG11c3QgYmUgb2YgdGhhdCBzYW1lIHR5cGUuDQoJCQkNCklmIGFueSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0aW5nIGxpc3Qgd2lsbCBoYXZlIG51bGwgZm9yIHRoYXQgZWxlbWVudC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InR5cGVTcGVjaWZpZXIiIHR5cGU9IlR5cGVTcGVjaWZpZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9ImVsZW1lbnQiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8IS0tIExvZ2ljYWwgT3BlcmF0b3JzIC0tPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJBbmQiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBBbmQgb3BlcmF0b3IgcmV0dXJucyB0aGUgbG9naWNhbCBjb25qdW5jdGlvbiBvZiBpdHMgYXJndW1lbnRzLiBOb3RlIHRoYXQgdGhpcyBvcGVyYXRvciBpcyBkZWZpbmVkIHVzaW5nIDMtdmFsdWVkIGxvZ2ljIHNlbWFudGljcy4gVGhpcyBtZWFucyB0aGF0IGlmIGVpdGhlciBhcmd1bWVudCBpcyBmYWxzZSwgdGhlIHJlc3VsdCBpcyBmYWxzZTsgaWYgYm90aCBhcmd1bWVudHMgYXJlIHRydWUsIHRoZSByZXN1bHQgaXMgdHJ1ZTsgb3RoZXJ3aXNlLCB0aGUgcmVzdWx0IGlzIG51bGwuIE5vdGUgYWxzbyB0aGF0IEVMTSBkb2VzIG5vdCBwcmVzY3JpYmUgc2hvcnQtY2lyY3VpdCBldmFsdWF0aW9uLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJPciI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIE9yIG9wZXJhdG9yIHJldHVybnMgdGhlIGxvZ2ljYWwgZGlzanVuY3Rpb24gb2YgaXRzIGFyZ3VtZW50cy4gTm90ZSB0aGF0IHRoaXMgb3BlcmF0b3IgaXMgZGVmaW5lZCB1c2luZyAzLXZhbHVlZCBsb2dpYyBzZW1hbnRpY3MuIFRoaXMgbWVhbnMgdGhhdCBpZiBlaXRoZXIgYXJndW1lbnQgaXMgdHJ1ZSwgdGhlIHJlc3VsdCBpcyB0cnVlOyBpZiBib3RoIGFyZ3VtZW50cyBhcmUgZmFsc2UsIHRoZSByZXN1bHQgaXMgZmFsc2U7IG90aGVyd2lzZSwgdGhlIHJlc3VsdCBpcyBudWxsLiBOb3RlIGFsc28gdGhhdCBFTE0gZG9lcyBub3QgcHJlc2NyaWJlIHNob3J0LWNpcmN1aXQgZXZhbHVhdGlvbi48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJCaW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iWG9yIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgWG9yIG9wZXJhdG9yIHJldHVybnMgdGhlIGV4Y2x1c2l2ZSBvciBvZiBpdHMgYXJndW1lbnRzLiBOb3RlIHRoYXQgdGhpcyBvcGVyYXRvciBpcyBkZWZpbmVkIHVzaW5nIDMtdmFsdWVkIGxvZ2ljIHNlbWFudGljcy4gVGhpcyBtZWFucyB0aGF0IHRoZSByZXN1bHQgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiBvbmUgYXJndW1lbnQgaXMgdHJ1ZSBhbmQgdGhlIG90aGVyIGlzIGZhbHNlLCBhbmQgdGhhdCB0aGUgcmVzdWx0IGlzIGZhbHNlIGlmIGFuZCBvbmx5IGlmIGJvdGggYXJndW1lbnRzIGFyZSB0cnVlIG9yIGJvdGggYXJndW1lbnRzIGFyZSBmYWxzZS4gSWYgZWl0aGVyIG9yIGJvdGggYXJndW1lbnRzIGFyZSBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkltcGxpZXMiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBJbXBsaWVzIG9wZXJhdG9yIHJldHVybnMgdGhlIGxvZ2ljYWwgaW1wbGljYXRpb24gb2YgaXRzIGFyZ3VtZW50cy4gTm90ZSB0aGF0IHRoaXMgb3BlcmF0b3IgaXMgZGVmaW5lZCB1c2luZyAzLXZhbHVlZCBsb2dpYyBzZW1hbnRpY3MuIFRoaXMgbWVhbnMgdGhhdCBpZiB0aGUgbGVmdCBvcGVyYW5kIGV2YWx1YXRlcyB0byB0cnVlLCB0aGlzIG9wZXJhdG9yIHJldHVybnMgdGhlIGJvb2xlYW4gZXZhbHVhdGlvbiBvZiB0aGUgcmlnaHQgb3BlcmFuZC4gSWYgdGhlIGxlZnQgb3BlcmFuZCBldmFsdWF0ZXMgdG8gZmFsc2UsIHRoaXMgb3BlcmF0b3IgcmV0dXJucyB0cnVlLiBPdGhlcndpc2UsIHRoaXMgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSByaWdodCBvcGVyYW5kIGV2YWx1YXRlcyB0byB0cnVlLCBhbmQgbnVsbCBvdGhlcndpc2UuDQoNCk5vdGUgdGhhdCBpbXBsaWVzIG1heSB1c2Ugc2hvcnQtY2lyY3VpdCBldmFsdWF0aW9uIGluIHRoZSBjYXNlIHRoYXQgdGhlIGZpcnN0IG9wZXJhbmQgZXZhbHVhdGVzIHRvIGZhbHNlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJOb3QiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBOb3Qgb3BlcmF0b3IgcmV0dXJucyB0aGUgbG9naWNhbCBuZWdhdGlvbiBvZiBpdHMgYXJndW1lbnQuIElmIHRoZSBhcmd1bWVudCBpcyB0cnVlLCB0aGUgcmVzdWx0IGlzIGZhbHNlOyBpZiB0aGUgYXJndW1lbnQgaXMgZmFsc2UsIHRoZSByZXN1bHQgaXMgdHJ1ZTsgb3RoZXJ3aXNlLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iSWYiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBJZiBvcGVyYXRvciBldmFsdWF0ZXMgYSBjb25kaXRpb24sIGFuZCByZXR1cm5zIHRoZSB0aGVuIGFyZ3VtZW50IGlmIHRoZSBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRydWU7IGlmIHRoZSBjb25kaXRpb24gZXZhbHVhdGVzIHRvIGZhbHNlIG9yIG51bGwsIHRoZSByZXN1bHQgb2YgdGhlIGVsc2UgYXJndW1lbnQgaXMgcmV0dXJuZWQuIFRoZSBzdGF0aWMgdHlwZSBvZiB0aGUgdGhlbiBhcmd1bWVudCBkZXRlcm1pbmVzIHRoZSByZXN1bHQgdHlwZSBvZiB0aGUgY29uZGl0aW9uYWwsIGFuZCB0aGUgZWxzZSBhcmd1bWVudCBtdXN0IGJlIG9mIHRoYXQgc2FtZSB0eXBlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iY29uZGl0aW9uIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJ0aGVuIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJlbHNlIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0iMSIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDYXNlSXRlbSI+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iRWxlbWVudCI+DQoJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJ3aGVuIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJ0aGVuIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0iMSIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDYXNlIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQ2FzZSBvcGVyYXRvciBhbGxvd3MgZm9yIG11bHRpcGxlIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zIHRvIGJlIGNoYWluZWQgdG9nZXRoZXIgaW4gYSBzaW5nbGUgZXhwcmVzc2lvbiwgcmF0aGVyIHRoYW4gaGF2aW5nIHRvIG5lc3QgbXVsdGlwbGUgSWYgb3BlcmF0b3JzLiBJbiBhZGRpdGlvbiwgdGhlIGNvbXBhcmFuZCBvcGVyYW5kIHByb3ZpZGVzIGEgdmFyaWFudCBvbiB0aGUgY2FzZSB0aGF0IGFsbG93cyBhIHNpbmdsZSB2YWx1ZSB0byBiZSBjb21wYXJlZCBpbiBlYWNoIGNvbmRpdGlvbmFsLg0KCQkJDQpJZiBhIGNvbXBhcmFuZCBpcyBub3QgcHJvdmlkZWQsIHRoZSB0eXBlIG9mIGVhY2ggd2hlbiBlbGVtZW50IG9mIHRoZSBjYXNlSXRlbXMgd2l0aGluIHRoZSBDYXNlIGlzIGV4cGVjdGVkIHRvIGJlIGJvb2xlYW4uIElmIGEgY29tcGFyYW5kIGlzIHByb3ZpZGVkLCB0aGUgdHlwZSBvZiBlYWNoIHdoZW4gZWxlbWVudCBvZiB0aGUgY2FzZUl0ZW1zIHdpdGhpbiB0aGUgQ2FzZSBpcyBleHBlY3RlZCB0byBiZSBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZSBjb21wYXJhbmQuIEFuIGVsc2UgZWxlbWVudCBtdXN0IGFsd2F5cyBiZSBwcm92aWRlZC4NCg0KVGhlIHN0YXRpYyB0eXBlIG9mIHRoZSB0aGVuIGFyZ3VtZW50IHdpdGhpbiB0aGUgZmlyc3QgY2FzZUl0ZW0gZGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiB0aGUgcmVzdWx0LCBhbmQgdGhlIHRoZW4gYXJndW1lbnQgb2YgZWFjaCBzdWJzZXF1ZW50IGNhc2VJdGVtIGFuZCB0aGUgZWxzZSBhcmd1bWVudCBtdXN0IGJlIG9mIHRoYXQgc2FtZSB0eXBlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iY29tcGFyYW5kIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJjYXNlSXRlbSIgdHlwZT0iQ2FzZUl0ZW0iIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iZWxzZSIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8IS0tIE51bGxvbG9naWNhbCBPcGVyYXRvcnMgLS0+DQoJPCEtLSBOT1RFOiBNYXliZSBtYXkgYmUgaW1wbGVtZW50ZWQgYXMgYSBudWxsLXRlc3Qgb24gYSBib29sZWFuLXZhbHVlZCBleHByZXNzaW9uLiBJIGFtIHJlbHVjdGFudCB0byBpbnRyb2R1Y2UgYW4gYWN0dWFsIE1heWJlIG9wZXJhdG9yDQoJYmVjYXVzZSBTUUwgZG9lc24ndCBoYXZlIGEgTUFZQkUgb3BlcmF0b3IuIChBdCBsZWFzdCwgbW9zdCBkaWFsZWN0cyBkb24ndCkuIEluIGZhY3QsIGV2ZW4gdGhlIGxvbmctaGFuZCBkZXNjcmliZWQgcHJldmlvdXNseSAobnVsbC10ZXN0DQoJb24gYSBib29sZWFuLXZhbHVlZCBleHByZXNzaW9uKSBjYW5ub3QgYmUgdHJhbnNsYXRlZCBpbnRvIGFuIFNRTCBkaWFsZWN0IHRoYXQgZG9lcyBub3QgaGF2ZSBhIE1BWUJFIG9wZXJhdG9yLg0KCS0tPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJOdWxsIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgTnVsbCBvcGVyYXRvciByZXR1cm5zIGEgbnVsbCwgb3IgbWlzc2luZyBpbmZvcm1hdGlvbiBtYXJrZXIuIFRvIGF2b2lkIHRoZSBuZWVkIHRvIGNhc3QgdGhpcyByZXN1bHQsIHRoZSBvcGVyYXRvciBpcyBhbGxvd2VkIHRvIHJldHVybiBhIHR5cGVkIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iRXhwcmVzc2lvbiI+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZVR5cGUiIHR5cGU9InhzOlFOYW1lIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJJc051bGwiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBJc051bGwgb3BlcmF0b3IgZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBpdHMgYXJndW1lbnQgZXZhbHVhdGVzIHRvIG51bGwuIElmIHRoZSBhcmd1bWVudCBldmFsdWF0ZXMgdG8gbnVsbCwgdGhlIHJlc3VsdCBpcyB0cnVlOyBvdGhlcndpc2UsIHRoZSByZXN1bHQgaXMgZmFsc2UuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iSXNUcnVlIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgSXNUcnVlIG9wZXJhdG9yIGRldGVybWluZXMgd2hldGhlciBvciBub3QgaXRzIGFyZ3VtZW50IGV2YWx1YXRlcyB0byB0cnVlLiBJZiB0aGUgYXJndW1lbnQgZXZhbHVhdGVzIHRvIHRydWUsIHRoZSByZXN1bHQgaXMgdHJ1ZTsgaWYgdGhlIGFyZ3VtZW50IGV2YWx1YXRlcyB0byBmYWxzZSBvciBudWxsLCB0aGUgcmVzdWx0IGlzIGZhbHNlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IlVuYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IklzRmFsc2UiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBJc0ZhbHNlIG9wZXJhdG9yIGRldGVybWluZXMgd2hldGhlciBvciBub3QgaXRzIGFyZ3VtZW50IGV2YWx1YXRlcyB0byBmYWxzZS4gSWYgdGhlIGFyZ3VtZW50IGV2YWx1YXRlcyB0byBmYWxzZSwgdGhlIHJlc3VsdCBpcyB0cnVlOyBpZiB0aGUgYXJndW1lbnQgZXZhbHVhdGVzIHRvIHRydWUgb3IgbnVsbCwgdGhlIHJlc3VsdCBpcyBmYWxzZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDb2FsZXNjZSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIENvYWxlc2NlIG9wZXJhdG9yIHJldHVybnMgdGhlIGZpcnN0IG5vbi1udWxsIHJlc3VsdCBpbiBhIGxpc3Qgb2YgYXJndW1lbnRzLiBJZiBhbGwgYXJndW1lbnRzIGV2YWx1YXRlIHRvIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC4gVGhlIHN0YXRpYyB0eXBlIG9mIHRoZSBmaXJzdCBhcmd1bWVudCBkZXRlcm1pbmVzIHRoZSB0eXBlIG9mIHRoZSByZXN1bHQsIGFuZCBhbGwgc3Vic2VxdWVudCBhcmd1bWVudHMgbXVzdCBiZSBvZiB0aGF0IHNhbWUgdHlwZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJOYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPCEtLSBUeXBlIE9wZXJhdG9ycyAtLT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iSXMiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBJcyBvcGVyYXRvciBhbGxvd3MgdGhlIHR5cGUgb2YgYSByZXN1bHQgdG8gYmUgdGVzdGVkLiBUaGUgbGFuZ3VhZ2UgbXVzdCBzdXBwb3J0IHRoZSBhYmlsaXR5IHRvIHRlc3QgYWdhaW5zdCBhbnkgdHlwZS4gSWYgdGhlIHJ1bi10aW1lIHR5cGUgb2YgdGhlIGFyZ3VtZW50IGlzIG9mIHRoZSB0eXBlIGJlaW5nIHRlc3RlZCwgdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0b3IgaXMgdHJ1ZTsgb3RoZXJ3aXNlLCB0aGUgcmVzdWx0IGlzIGZhbHNlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IlVuYXJ5RXhwcmVzc2lvbiI+DQoJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJpc1R5cGVTcGVjaWZpZXIiIHR5cGU9IlR5cGVTcGVjaWZpZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9ImlzVHlwZSIgdHlwZT0ieHM6UU5hbWUiIHVzZT0ib3B0aW9uYWwiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFzIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQXMgb3BlcmF0b3IgYWxsb3dzIHRoZSByZXN1bHQgb2YgYW4gZXhwcmVzc2lvbiB0byBiZSBjYXN0IGFzIGEgZ2l2ZW4gdGFyZ2V0IHR5cGUuIFRoaXMgYWxsb3dzIGV4cHJlc3Npb25zIHRvIGJlIHdyaXR0ZW4gdGhhdCBhcmUgc3RhdGljYWxseSB0eXBlZCBhZ2FpbnN0IHRoZSBleHBlY3RlZCBydW4tdGltZSB0eXBlIG9mIHRoZSBhcmd1bWVudC4gSWYgdGhlIGFyZ3VtZW50IGlzIG5vdCBvZiB0aGUgc3BlY2lmaWVkIHR5cGUsIGFuZCB0aGUgc3RyaWN0IGF0dHJpYnV0ZSBpcyBmYWxzZSAodGhlIGRlZmF1bHQpLCB0aGUgcmVzdWx0IGlzIG51bGwuIElmIHRoZSBhcmd1bWVudCBpcyBub3Qgb2YgdGhlIHNwZWNpZmllZCB0eXBlIGFuZCB0aGUgc3RyaWN0IGF0dHJpYnV0ZSBpcyB0cnVlLCBhbiBleGNlcHRpb24gaXMgdGhyb3duLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IlVuYXJ5RXhwcmVzc2lvbiI+DQoJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJhc1R5cGVTcGVjaWZpZXIiIHR5cGU9IlR5cGVTcGVjaWZpZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9ImFzVHlwZSIgdHlwZT0ieHM6UU5hbWUiIHVzZT0ib3B0aW9uYWwiLz4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InN0cmljdCIgdHlwZT0ieHM6Ym9vbGVhbiIgdXNlPSJvcHRpb25hbCIgZGVmYXVsdD0iZmFsc2UiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNvbnZlcnQiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBDb252ZXJ0IG9wZXJhdG9yIGNvbnZlcnRzIGEgdmFsdWUgdG8gYSBzcGVjaWZpYyB0eXBlLiBUaGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRvciBpcyB0aGUgdmFsdWUgb2YgdGhlIGFyZ3VtZW50IGNvbnZlcnRlZCB0byB0aGUgdGFyZ2V0IHR5cGUsIGlmIHBvc3NpYmxlLg0KCQkJCQ0KSWYgbm8gdmFsaWQgY29udmVyc2lvbiBleGlzdHMgZnJvbSB0aGUgYWN0dWFsIHZhbHVlIHRvIHRoZSB0YXJnZXQgdHlwZSwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpUaGlzIG9wZXJhdG9yIHN1cHBvcnRzIGNvbnZlcnNpb246DQoNCkJldHdlZW4gU3RyaW5nIGFuZCBlYWNoIG9mIEJvb2xlYW4sIEludGVnZXIsIERlY2ltYWwsIFF1YW50aXR5LCBSYXRpbywgRGF0ZSwgRGF0ZVRpbWUsIGFuZCBUaW1lDQoNCmFzIHdlbGwgYXM6DQoNCkZyb20gSW50ZWdlciB0byBEZWNpbWFsIG9yIFF1YW50aXR5DQpGcm9tIERlY2ltYWwgdG8gUXVhbnRpdHkNCkJldHdlZW4gRGF0ZSBhbmQgRGF0ZVRpbWUNCkZyb20gQ29kZSB0byBDb25jZXB0DQpCZXR3ZWVuIENvbmNlcHQgYW5kIExpc3QmbHQ7Q29kZSZndDsNCg0KQ29udmVyc2lvbiBiZXR3ZWVuIFN0cmluZyBhbmQgRGF0ZS9EYXRlVGltZS9UaW1lIGlzIHBlcmZvcm1lZCB1c2luZyB0aGUgSVNPLTg2MDEgc3RhbmRhcmQgZm9ybWF0OiBZWVlZLU1NLUREVGhoOm1tOnNzKCt8LSloaDptbS48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0idG9UeXBlU3BlY2lmaWVyIiB0eXBlPSJUeXBlU3BlY2lmaWVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0b1R5cGUiIHR5cGU9InhzOlFOYW1lIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDYW5Db252ZXJ0Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQ2FuQ29udmVydCBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHZhbHVlIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYSBzcGVjaWZpYyB0eXBlLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLg0KDQpUaGlzIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBmb3IgY29udmVyc2lvbjoNCg0KQmV0d2VlbiBTdHJpbmcgYW5kIGVhY2ggb2YgQm9vbGVhbiwgSW50ZWdlciwgRGVjaW1hbCwgUXVhbnRpdHksIFJhdGlvLCBEYXRlLCBEYXRlVGltZSwgYW5kIFRpbWUsDQoNCmFzIHdlbGwgYXM6DQoNCkZyb20gSW50ZWdlciB0byBEZWNpbWFsIG9yIFF1YW50aXR5DQpGcm9tIERlY2ltYWwgdG8gUXVhbnRpdHkNCkJldHdlZW4gRGF0ZSBhbmQgRGF0ZVRpbWUNCkZyb20gQ29kZSB0byBDb25jZXB0DQpCZXR3ZWVuIENvbmNlcHQgYW5kIExpc3QmbHQ7Q29kZSZndDsNCg0KQ29udmVyc2lvbiBiZXR3ZWVuIFN0cmluZyBhbmQgRGF0ZS9EYXRlVGltZS9UaW1lIGlzIGNoZWNrZWQgdXNpbmcgdGhlIElTTy04NjAxIHN0YW5kYXJkIGZvcm1hdDogWVlZWS1NTS1ERFRoaDptbTpzcygrfC0paGg6bW0uPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InRvVHlwZVNwZWNpZmllciIgdHlwZT0iVHlwZVNwZWNpZmllciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0idG9UeXBlIiB0eXBlPSJ4czpRTmFtZSIgdXNlPSJvcHRpb25hbCIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iVG9Cb29sZWFuIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgVG9Cb29sZWFuIG9wZXJhdG9yIGNvbnZlcnRzIHRoZSB2YWx1ZSBvZiBpdHMgYXJndW1lbnQgdG8gYSBCb29sZWFuIHZhbHVlLiANCg0KVGhlIG9wZXJhdG9yIGFjY2VwdHMgJ3RydWUnLCAndCcsICd5ZXMnLCAneScsIGFuZCAnMScgYXMgc3RyaW5nIHJlcHJlc2VudGF0aW9ucyBvZiB0cnVlLCBhbmQgJ2ZhbHNlJywgJ2YnLCAnbm8nLCAnbicsIGFuZCAnMCcgYXMgc3RyaW5nIHJlcHJlc2VudGF0aW9ucyBvZiBmYWxzZSwgaWdub3JpbmcgY2FzZS4NCgkJCQ0KSWYgdGhlIGlucHV0IGNhbm5vdCBiZSBpbnRlcnByZXRlZCBhcyBhIHZhbGlkIEJvb2xlYW4gdmFsdWUsIHRoZSByZXN1bHQgaXMgbnVsbC4NCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IlVuYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNvbnZlcnRzVG9Cb29sZWFuIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQ29udmVydHNUb0Jvb2xlYW4gb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBvZiBpdHMgYXJndW1lbnQgY2FuIGJlIGNvbnZlcnRlZCB0byBhIEJvb2xlYW4gdmFsdWUuIA0KCQkJDQpUaGUgb3BlcmF0b3IgYWNjZXB0cyAndHJ1ZScsICd0JywgJ3llcycsICd5JywgYW5kICcxJyBhcyBzdHJpbmcgcmVwcmVzZW50YXRpb25zIG9mIHRydWUsIGFuZCAnZmFsc2UnLCAnZicsICdubycsICduJywgYW5kICcwJyBhcyBzdHJpbmcgcmVwcmVzZW50YXRpb25zIG9mIGZhbHNlLCBpZ25vcmluZyBjYXNlLg0KCQkJDQpJZiB0aGUgaW5wdXQgY2Fubm90IGJlIGludGVycHJldGVkIGFzIGEgdmFsaWQgQm9vbGVhbiB2YWx1ZSwgdGhlIHJlc3VsdCBpcyBmYWxzZS4NCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IlVuYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRvQ29uY2VwdCI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFRvQ29uY2VwdCBvcGVyYXRvciBjb252ZXJ0cyBhIHZhbHVlIG9mIHR5cGUgQ29kZSB0byBhIENvbmNlcHQgdmFsdWUgd2l0aCB0aGUgZ2l2ZW4gQ29kZSBhcyBpdHMgcHJpbWFyeSBhbmQgb25seSBDb2RlLiBJZiB0aGUgQ29kZSBoYXMgYSBkaXNwbGF5IHZhbHVlLCB0aGUgcmVzdWx0aW5nIENvbmNlcHQgd2lsbCBoYXZlIHRoZSBzYW1lIGRpc3BsYXkgdmFsdWUuDQoJCQkNCklmIHRoZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ29udmVydHNUb0RhdGUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBDb252ZXJ0c1RvRGF0ZSBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIHZhbHVlIG9mIGl0cyBhcmd1bWVudCBjYW4gYmUgY29udmVydGVkIHRvIGEgRGF0ZSB2YWx1ZS4gDQoJCQkNCkZvciBTdHJpbmcgdmFsdWVzLCBUaGUgb3BlcmF0b3IgZXhwZWN0cyB0aGUgc3RyaW5nIHRvIGJlIGZvcm1hdHRlZCB1c2luZyB0aGUgSVNPLTg2MDEgZGF0ZSByZXByZXNlbnRhdGlvbjogDQoNCllZWVktTU0tREQNCg0KSW4gYWRkaXRpb24sIHRoZSBzdHJpbmcgbXVzdCBiZSBpbnRlcnByZXRhYmxlIGFzIGEgdmFsaWQgZGF0ZSB2YWx1ZS4NCg0KTm90ZSB0aGF0IHRoZSBvcGVyYXRvciBjYW4gdGFrZSB0aW1lIGZvcm1hdHRlZCBzdHJpbmdzIGFuZCB3aWxsIGlnbm9yZSB0aGUgdGltZSBwb3J0aW9ucy4NCg0KSWYgdGhlIGlucHV0IHN0cmluZyBpcyBub3QgZm9ybWF0dGVkIGNvcnJlY3RseSwgb3IgZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsaWQgZGF0ZSB2YWx1ZSwgdGhlIHJlc3VsdCBpcyBmYWxzZS4NCg0KQXMgd2l0aCBkYXRlIGxpdGVyYWxzLCBkYXRlIHZhbHVlcyBtYXkgYmUgc3BlY2lmaWVkIHRvIGFueSBwcmVjaXNpb24uDQoNCklmIHRoZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iVG9EYXRlIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgVG9EYXRlIG9wZXJhdG9yIGNvbnZlcnRzIHRoZSB2YWx1ZSBvZiBpdHMgYXJndW1lbnQgdG8gYSBEYXRlIHZhbHVlLiANCgkJCQ0KRm9yIFN0cmluZyB2YWx1ZXMsIFRoZSBvcGVyYXRvciBleHBlY3RzIHRoZSBzdHJpbmcgdG8gYmUgZm9ybWF0dGVkIHVzaW5nIHRoZSBJU08tODYwMSBkYXRlIHJlcHJlc2VudGF0aW9uOiANCg0KWVlZWS1NTS1ERA0KDQpJbiBhZGRpdGlvbiwgdGhlIHN0cmluZyBtdXN0IGJlIGludGVycHJldGFibGUgYXMgYSB2YWxpZCBkYXRlIHZhbHVlLg0KDQpOb3RlIHRoYXQgdGhlIG9wZXJhdG9yIGNhbiB0YWtlIGRhdGV0aW1lIGZvcm1hdHRlZCBzdHJpbmdzIGFuZCB3aWxsIGlnbm9yZSB0aGUgdGltZSBwb3J0aW9ucy4NCg0KSWYgdGhlIGlucHV0IHN0cmluZyBpcyBub3QgZm9ybWF0dGVkIGNvcnJlY3RseSwgb3IgZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsaWQgZGF0ZSB2YWx1ZSwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpBcyB3aXRoIGRhdGUgbGl0ZXJhbHMsIGRhdGUgdmFsdWVzIG1heSBiZSBzcGVjaWZpZWQgdG8gYW55IHByZWNpc2lvbi4NCg0KRm9yIERhdGVUaW1lIHZhbHVlcywgdGhlIHJlc3VsdCBpcyBlcXVpdmFsZW50IHRvIGV4dHJhY3RpbmcgdGhlIERhdGUgY29tcG9uZW50IG9mIHRoZSBEYXRlVGltZSB2YWx1ZS4NCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDb252ZXJ0c1RvRGF0ZVRpbWUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBDb252ZXJ0c1RvRGF0ZVRpbWUgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBvZiBpdHMgYXJndW1lbnQgY2FuIGJlIGNvbnZlcnRlZCB0byBhIERhdGVUaW1lIHZhbHVlLiANCgkJCQkNCkZvciBTdHJpbmcgdmFsdWVzLCB0aGUgb3BlcmF0b3IgZXhwZWN0cyB0aGUgc3RyaW5nIHRvIGJlIGZvcm1hdHRlZCB1c2luZyB0aGUgSVNPLTg2MDEgZGF0ZXRpbWUgcmVwcmVzZW50YXRpb246IA0KDQpZWVlZLU1NLUREVGhoOm1tOnNzLmZmZigrfC0paGg6bW0NCg0KSW4gYWRkaXRpb24sIHRoZSBzdHJpbmcgbXVzdCBiZSBpbnRlcnByZXRhYmxlIGFzIGEgdmFsaWQgRGF0ZVRpbWUgdmFsdWUuDQoNCklmIHRoZSBpbnB1dCBzdHJpbmcgaXMgbm90IGZvcm1hdHRlZCBjb3JyZWN0bHksIG9yIGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbGlkIERhdGVUaW1lIHZhbHVlLCB0aGUgcmVzdWx0IGlzIGZhbHNlLg0KDQpBcyB3aXRoIERhdGUgYW5kIFRpbWUgbGl0ZXJhbHMsIERhdGVUaW1lIHZhbHVlcyBtYXkgYmUgc3BlY2lmaWVkIHRvIGFueSBwcmVjaXNpb24uIElmIG5vIHRpbWV6b25lIG9mZnNldCBpcyBzdXBwbGllZCwgdGhlIHRpbWV6b25lIG9mZnNldCBvZiB0aGUgZXZhbHVhdGlvbiByZXF1ZXN0IHRpbWVzdGFtcCBpcyBhc3N1bWVkLg0KDQpJZiB0aGUgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IlVuYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRvRGF0ZVRpbWUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBUb0RhdGVUaW1lIG9wZXJhdG9yIGNvbnZlcnRzIHRoZSB2YWx1ZSBvZiBpdHMgYXJndW1lbnQgdG8gYSBEYXRlVGltZSB2YWx1ZS4gDQoJCQkJDQpGb3IgU3RyaW5nIHZhbHVlcywgdGhlIG9wZXJhdG9yIGV4cGVjdHMgdGhlIHN0cmluZyB0byBiZSBmb3JtYXR0ZWQgdXNpbmcgdGhlIElTTy04NjAxIGRhdGV0aW1lIHJlcHJlc2VudGF0aW9uOiANCg0KWVlZWS1NTS1ERFRoaDptbTpzcy5mZmYoK3wtKWhoOm1tDQoNCkluIGFkZGl0aW9uLCB0aGUgc3RyaW5nIG11c3QgYmUgaW50ZXJwcmV0YWJsZSBhcyBhIHZhbGlkIERhdGVUaW1lIHZhbHVlLg0KDQpJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIG5vdCBmb3JtYXR0ZWQgY29ycmVjdGx5LCBvciBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCBEYXRlVGltZSB2YWx1ZSwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpBcyB3aXRoIERhdGUgYW5kIFRpbWUgbGl0ZXJhbHMsIERhdGVUaW1lIHZhbHVlcyBtYXkgYmUgc3BlY2lmaWVkIHRvIGFueSBwcmVjaXNpb24uIElmIG5vIHRpbWV6b25lIG9mZnNldCBpcyBzdXBwbGllZCwgdGhlIHRpbWV6b25lIG9mZnNldCBvZiB0aGUgZXZhbHVhdGlvbiByZXF1ZXN0IHRpbWVzdGFtcCBpcyBhc3N1bWVkLg0KDQpGb3IgRGF0ZSB2YWx1ZXMsIHRoZSByZXN1bHQgaXMgYSBEYXRlVGltZSB3aXRoIHRoZSB0aW1lIGNvbXBvbmVudHMgdW5zcGVjaWZpZWQsIGV4Y2VwdCB0aGUgdGltZXpvbmUgb2Zmc2V0LCB3aGljaCBpcyBzZXQgdG8gdGhlIHRpbWV6b25lIG9mZnNldCBvZiB0aGUgZXZhbHVhdGlvbiByZXF1ZXN0IHRpbWVzdGFtcC4NCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDb252ZXJ0c1RvRGVjaW1hbCI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIENvbnZlcnRzVG9EZWNpbWFsIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgaXRzIGFyZ3VtZW50IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYSBEZWNpbWFsIHZhbHVlLiBUaGUgb3BlcmF0b3IgYWNjZXB0cyBzdHJpbmdzIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybWF0Og0KDQooK3wtKT8jMCguMCMpPw0KDQpNZWFuaW5nIGFuIG9wdGlvbmFsIHBvbGFyaXR5IGluZGljYXRvciwgZm9sbG93ZWQgYnkgYW55IG51bWJlciBvZiBkaWdpdHMgKGluY2x1ZGluZyBub25lKSwgZm9sbG93ZWQgYnkgYXQgbGVhc3Qgb25lIGRpZ2l0LCBmb2xsb3dlZCBvcHRpb25hbGx5IGJ5IGEgZGVjaW1hbCBwb2ludCwgYXQgbGVhc3Qgb25lIGRpZ2l0LCBhbmQgYW55IG51bWJlciBvZiBhZGRpdGlvbmFsIGRpZ2l0cyAoaW5jbHVkaW5nIG5vbmUpLg0KDQpOb3RlIHRoYXQgdGhlIGRlY2ltYWwgdmFsdWUgcmV0dXJuZWQgYnkgdGhpcyBvcGVyYXRvciBtdXN0IGJlIGxpbWl0ZWQgaW4gcHJlY2lzaW9uIGFuZCBzY2FsZSB0byB0aGUgbWF4aW11bSBwcmVjaXNpb24gYW5kIHNjYWxlIHJlcHJlc2VudGFibGUgZm9yIERlY2ltYWwgdmFsdWVzIHdpdGhpbiBDUUwuDQoNCklmIHRoZSBpbnB1dCBzdHJpbmcgaXMgbm90IGZvcm1hdHRlZCBjb3JyZWN0bHksIG9yIGNhbm5vdCBiZSBpbnRlcnByZXRlZCBhcyBhIHZhbGlkIERlY2ltYWwgdmFsdWUsIHRoZSByZXN1bHQgaXMgZmFsc2UuDQoNCklmIHRoZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iVG9EZWNpbWFsIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgVG9EZWNpbWFsIG9wZXJhdG9yIGNvbnZlcnRzIHRoZSB2YWx1ZSBvZiBpdHMgYXJndW1lbnQgdG8gYSBEZWNpbWFsIHZhbHVlLiBUaGUgb3BlcmF0b3IgYWNjZXB0cyBzdHJpbmdzIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybWF0Og0KDQooK3wtKT8jMCguMCMpPw0KDQpNZWFuaW5nIGFuIG9wdGlvbmFsIHBvbGFyaXR5IGluZGljYXRvciwgZm9sbG93ZWQgYnkgYW55IG51bWJlciBvZiBkaWdpdHMgKGluY2x1ZGluZyBub25lKSwgZm9sbG93ZWQgYnkgYXQgbGVhc3Qgb25lIGRpZ2l0LCBmb2xsb3dlZCBvcHRpb25hbGx5IGJ5IGEgZGVjaW1hbCBwb2ludCwgYXQgbGVhc3Qgb25lIGRpZ2l0LCBhbmQgYW55IG51bWJlciBvZiBhZGRpdGlvbmFsIGRpZ2l0cyAoaW5jbHVkaW5nIG5vbmUpLg0KDQpOb3RlIHRoYXQgdGhlIGRlY2ltYWwgdmFsdWUgcmV0dXJuZWQgYnkgdGhpcyBvcGVyYXRvciBtdXN0IGJlIGxpbWl0ZWQgaW4gcHJlY2lzaW9uIGFuZCBzY2FsZSB0byB0aGUgbWF4aW11bSBwcmVjaXNpb24gYW5kIHNjYWxlIHJlcHJlc2VudGFibGUgZm9yIERlY2ltYWwgdmFsdWVzIHdpdGhpbiBDUUwuDQoNCklmIHRoZSBpbnB1dCBzdHJpbmcgaXMgbm90IGZvcm1hdHRlZCBjb3JyZWN0bHksIG9yIGNhbm5vdCBiZSBpbnRlcnByZXRlZCBhcyBhIHZhbGlkIERlY2ltYWwgdmFsdWUsIHRoZSByZXN1bHQgaXMgbnVsbC4NCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDb252ZXJ0c1RvSW50ZWdlciI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIENvbnZlcnRzVG9JbnRlZ2VyIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgaXRzIGFyZ3VtZW50IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW4gSW50ZWdlciB2YWx1ZS4gVGhlIG9wZXJhdG9yIGFjY2VwdHMgc3RyaW5ncyB1c2luZyB0aGUgZm9sbG93aW5nIGZvcm1hdDoNCg0KKCt8LSk/IzANCg0KTWVhbmluZyBhbiBvcHRpb25hbCBwb2xhcml0eSBpbmRpY2F0b3IsIGZvbGxvd2VkIGJ5IGFueSBudW1iZXIgb2YgZGlnaXRzIChpbmNsdWRpbmcgbm9uZSksIGZvbGxvd2VkIGJ5IGF0IGxlYXN0IG9uZSBkaWdpdC4NCg0KTm90ZSB0aGF0IHRoZSBpbnRlZ2VyIHZhbHVlIHJldHVybmVkIGJ5IHRoaXMgb3BlcmF0b3IgbXVzdCBiZSBhIHZhbGlkIHZhbHVlIGluIHRoZSByYW5nZSByZXByZXNlbnRhYmxlIGZvciBJbnRlZ2VyIHZhbHVlcyBpbiBDUUwuDQoNCklmIHRoZSBpbnB1dCBzdHJpbmcgaXMgbm90IGZvcm1hdHRlZCBjb3JyZWN0bHksIG9yIGNhbm5vdCBiZSBpbnRlcnByZXRlZCBhcyBhIHZhbGlkIEludGVnZXIgdmFsdWUsIHRoZSByZXN1bHQgaXMgZmFsc2UuDQoNCklmIHRoZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iVG9JbnRlZ2VyIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgVG9JbnRlZ2VyIG9wZXJhdG9yIGNvbnZlcnRzIHRoZSB2YWx1ZSBvZiBpdHMgYXJndW1lbnQgdG8gYW4gSW50ZWdlciB2YWx1ZS4gVGhlIG9wZXJhdG9yIGFjY2VwdHMgc3RyaW5ncyB1c2luZyB0aGUgZm9sbG93aW5nIGZvcm1hdDoNCg0KKCt8LSk/IzANCg0KTWVhbmluZyBhbiBvcHRpb25hbCBwb2xhcml0eSBpbmRpY2F0b3IsIGZvbGxvd2VkIGJ5IGFueSBudW1iZXIgb2YgZGlnaXRzIChpbmNsdWRpbmcgbm9uZSksIGZvbGxvd2VkIGJ5IGF0IGxlYXN0IG9uZSBkaWdpdC4NCg0KTm90ZSB0aGF0IHRoZSBpbnRlZ2VyIHZhbHVlIHJldHVybmVkIGJ5IHRoaXMgb3BlcmF0b3IgbXVzdCBiZSBhIHZhbGlkIHZhbHVlIGluIHRoZSByYW5nZSByZXByZXNlbnRhYmxlIGZvciBJbnRlZ2VyIHZhbHVlcyBpbiBDUUwuDQoNCklmIHRoZSBpbnB1dCBzdHJpbmcgaXMgbm90IGZvcm1hdHRlZCBjb3JyZWN0bHksIG9yIGNhbm5vdCBiZSBpbnRlcnByZXRlZCBhcyBhIHZhbGlkIEludGVnZXIgdmFsdWUsIHRoZSByZXN1bHQgaXMgbnVsbC4NCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDb252ZXJ0c1RvUXVhbnRpdHkiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBDb252ZXJ0c1RvUXVhbnRpdHkgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBvZiBpdHMgYXJndW1lbnQgY2FuIGJlIGNvbnZlcnRlZCB0byBhIFF1YW50aXR5IHZhbHVlLiBUaGUgb3BlcmF0b3IgbWF5IGJlIHVzZWQgd2l0aCBJbnRlZ2VyLCBEZWNpbWFsLCBSYXRpbywgb3IgU3RyaW5nIHZhbHVlcy4NCg0KRm9yIFN0cmluZyB2YWx1ZXMsIHRoZSBvcGVyYXRvciBhY2NlcHRzIHN0cmluZ3MgdXNpbmcgdGhlIGZvbGxvd2luZyBmb3JtYXQ6DQoNCigrfC0pPyMwKC4wIyk/KCcmbHQ7dW5pdCZndDsnKT8NCg0KTWVhbmluZyBhbiBvcHRpb25hbCBwb2xhcml0eSBpbmRpY2F0b3IsIGZvbGxvd2VkIGJ5IGFueSBudW1iZXIgb2YgZGlnaXRzIChpbmNsdWRpbmcgbm9uZSkgZm9sbG93ZWQgYnkgYXQgbGVhc3Qgb25lIGRpZ2l0LCBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgZGVjaW1hbCBwb2ludCwgYXQgbGVhc3Qgb25lIGRpZ2l0LCBhbmQgYW55IG51bWJlciBvZiBhZGRpdGlvbmFsIGRpZ2l0cywgYWxsIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSB1bml0IGRlc2lnbmF0b3IgYXMgYSBzdHJpbmcgbGl0ZXJhbCBzcGVjaWZ5aW5nIGEgdmFsaWQgVUNVTSB1bml0IG9mIG1lYXN1cmUuIFNwYWNlcyBhcmUgYWxsb3dlZCBiZXR3ZWVuIHRoZSBxdWFudGl0eSB2YWx1ZSBhbmQgdGhlIHVuaXQgZGVzaWduYXRvci4NCg0KTm90ZSB0aGF0IHRoZSBkZWNpbWFsIHZhbHVlIG9mIHRoZSBxdWFudGl0eSByZXR1cm5lZCBieSB0aGlzIG9wZXJhdG9yIG11c3QgYmUgYSB2YWxpZCB2YWx1ZSBpbiB0aGUgcmFuZ2UgcmVwcmVzZW50YWJsZSBmb3IgRGVjaW1hbCB2YWx1ZXMgaW4gQ1FMLiANCg0KSWYgdGhlIGlucHV0IHN0cmluZyBpcyBub3QgZm9ybWF0dGVkIGNvcnJlY3RseSwgb3IgY2Fubm90IGJlIGludGVycHJldGVkIGFzIGEgdmFsaWQgUXVhbnRpdHkgdmFsdWUsIHRoZSByZXN1bHQgaXMgZmFsc2UuDQoNCkZvciBJbnRlZ2VyLCBEZWNpbWFsLCBhbmQgUmF0aW8gdmFsdWVzLCB0aGUgb3BlcmF0b3Igc2ltcGx5IHJldHVybnMgdHJ1ZS4NCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJUb1F1YW50aXR5Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgVG9RdWFudGl0eSBvcGVyYXRvciBjb252ZXJ0cyB0aGUgdmFsdWUgb2YgaXRzIGFyZ3VtZW50IHRvIGEgUXVhbnRpdHkgdmFsdWUuIFRoZSBvcGVyYXRvciBtYXkgYmUgdXNlZCB3aXRoIEludGVnZXIsIERlY2ltYWwsIFJhdGlvLCBvciBTdHJpbmcgdmFsdWVzLg0KDQpGb3IgU3RyaW5nIHZhbHVlcywgdGhlIG9wZXJhdG9yIGFjY2VwdHMgc3RyaW5ncyB1c2luZyB0aGUgZm9sbG93aW5nIGZvcm1hdDoNCg0KKCt8LSk/IzAoLjAjKT8oJyZsdDt1bml0Jmd0OycpPw0KDQpNZWFuaW5nIGFuIG9wdGlvbmFsIHBvbGFyaXR5IGluZGljYXRvciwgZm9sbG93ZWQgYnkgYW55IG51bWJlciBvZiBkaWdpdHMgKGluY2x1ZGluZyBub25lKSBmb2xsb3dlZCBieSBhdCBsZWFzdCBvbmUgZGlnaXQsIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSBkZWNpbWFsIHBvaW50LCBhdCBsZWFzdCBvbmUgZGlnaXQsIGFuZCBhbnkgbnVtYmVyIG9mIGFkZGl0aW9uYWwgZGlnaXRzLCBhbGwgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhIHVuaXQgZGVzaWduYXRvciBhcyBhIHN0cmluZyBsaXRlcmFsIHNwZWNpZnlpbmcgYSB2YWxpZCBVQ1VNIHVuaXQgb2YgbWVhc3VyZS4gU3BhY2VzIGFyZSBhbGxvd2VkIGJldHdlZW4gdGhlIHF1YW50aXR5IHZhbHVlIGFuZCB0aGUgdW5pdCBkZXNpZ25hdG9yLg0KDQpOb3RlIHRoYXQgdGhlIGRlY2ltYWwgdmFsdWUgb2YgdGhlIHF1YW50aXR5IHJldHVybmVkIGJ5IHRoaXMgb3BlcmF0b3IgbXVzdCBiZSBhIHZhbGlkIHZhbHVlIGluIHRoZSByYW5nZSByZXByZXNlbnRhYmxlIGZvciBEZWNpbWFsIHZhbHVlcyBpbiBDUUwuIA0KDQpJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIG5vdCBmb3JtYXR0ZWQgY29ycmVjdGx5LCBvciBjYW5ub3QgYmUgaW50ZXJwcmV0ZWQgYXMgYSB2YWxpZCBRdWFudGl0eSB2YWx1ZSwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpGb3IgSW50ZWdlciBhbmQgRGVjaW1hbCB2YWx1ZXMsIHRoZSByZXN1bHQgaXMgYSBRdWFudGl0eSB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgaW50ZWdlciBvciBkZWNpbWFsIGlucHV0LCBhbmQgdGhlIGRlZmF1bHQgdW5pdCAoJzEnKS4NCg0KRm9yIFJhdGlvIHZhbHVlcywgdGhlIG9wZXJhdGlvbiBpcyBlcXVpdmFsZW50IHRvIHRoZSByZXN1bHQgb2YgZGl2aWRpbmcgdGhlIG51bWVyYXRvciBvZiB0aGUgcmF0aW8gYnkgdGhlIGRlbm9taW5hdG9yLg0KDQpJZiB0aGUgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IlVuYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNvbnZlcnRzVG9SYXRpbyI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIENvbnZlcnRzVG9SYXRpbyBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIHZhbHVlIG9mIGl0cyBhcmd1bWVudCBjYW4gYmUgY29udmVydGVkIHRvIGEgUmF0aW8gdmFsdWUuIFRoZSBvcGVyYXRvciBhY2NlcHRzIHN0cmluZ3MgdXNpbmcgdGhlIGZvbGxvd2luZyBmb3JtYXQ6DQoNCiZsdDtxdWFudGl0eSZndDs6Jmx0O3F1YW50aXR5Jmd0Ow0KDQpNZWFuaW5nIGEgcXVhbnRpdHksIGZvbGxvd2VkIGJ5IGEgY29sb24gKDopLCBmb2xsb3dlZCBieSBhbm90aGVyIHF1YW50aXR5LiBUaGUgb3BlcmF0b3IgYWNjZXB0cyBxdWFudGl0eSBzdHJpbmdzIHVzaW5nIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUgVG9RdWFudGl0eSBvcGVyYXRvci4NCg0KSWYgdGhlIGlucHV0IHN0cmluZyBpcyBub3QgZm9ybWF0dGVkIGNvcnJlY3RseSwgb3IgY2Fubm90IGJlIGludGVycHJldGVkIGFzIGEgdmFsaWQgUmF0aW8gdmFsdWUsIHRoZSByZXN1bHQgaXMgZmFsc2UuDQoNCklmIHRoZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iVG9SYXRpbyI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFRvUmF0aW8gb3BlcmF0b3IgY29udmVydHMgdGhlIHZhbHVlIG9mIGl0cyBhcmd1bWVudCB0byBhIFJhdGlvIHZhbHVlLiBUaGUgb3BlcmF0b3IgYWNjZXB0cyBzdHJpbmdzIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybWF0Og0KDQombHQ7cXVhbnRpdHkmZ3Q7OiZsdDtxdWFudGl0eSZndDsNCg0KTWVhbmluZyBhIHF1YW50aXR5LCBmb2xsb3dlZCBieSBhIGNvbG9uICg6KSwgZm9sbG93ZWQgYnkgYW5vdGhlciBxdWFudGl0eS4gVGhlIG9wZXJhdG9yIGFjY2VwdHMgcXVhbnRpdHkgc3RyaW5ncyB1c2luZyB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlIFRvUXVhbnRpdHkgb3BlcmF0b3IuDQoNCklmIHRoZSBpbnB1dCBzdHJpbmcgaXMgbm90IGZvcm1hdHRlZCBjb3JyZWN0bHksIG9yIGNhbm5vdCBiZSBpbnRlcnByZXRlZCBhcyBhIHZhbGlkIFJhdGlvIHZhbHVlLCB0aGUgcmVzdWx0IGlzIG51bGwuDQoNCklmIHRoZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iVG9MaXN0Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgVG9MaXN0IG9wZXJhdG9yIHJldHVybnMgaXRzIGFyZ3VtZW50IGFzIGEgTGlzdCB2YWx1ZS4gVGhlIG9wZXJhdG9yIGFjY2VwdHMgYSBzaW5nbGV0b24gdmFsdWUgb2YgYW55IHR5cGUgYW5kIHJldHVybnMgYSBsaXN0IHdpdGggdGhlIHZhbHVlIGFzIHRoZSBzaW5nbGUgZWxlbWVudC4NCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSBvcGVyYXRvciByZXR1cm5zIGFuIGVtcHR5IGxpc3QuDQoNClRoZSBvcGVyYXRvciBpcyBlZmZlY3RpdmVseSBzaG9ydGhhbmQgZm9yICZxdW90O2lmIG9wZXJhbmQgaXMgbnVsbCB0aGVuIHsgfSBlbHNlIHsgb3BlcmFuZCB9JnF1b3Q7Lg0KDQpUaGUgb3BlcmF0b3IgaXMgdXNlZCB0byBpbXBsZW1lbnQgbGlzdCBwcm9tb3Rpb24gZWZmaWNpZW50bHkuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iVG9DaGFycyI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFRvQ2hhcnMgb3BlcmF0b3IgdGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYSBsaXN0IHdpdGggb25lIHN0cmluZyBmb3IgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0LCBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcHBlYXIgaW4gdGhlIHN0cmluZy4NCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDb252ZXJ0c1RvU3RyaW5nIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQ29udmVydHNUb1N0cmluZyBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIHZhbHVlIG9mIGl0cyBhcmd1bWVudCBjYW4gYmUgY29udmVydGVkIHRvIGEgU3RyaW5nIHZhbHVlLg0KCQkJDQpUaGUgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhbnkgb2YgdGhlIGZvbGxvd2luZyB0eXBlczoNCg0KQm9vbGVhbg0KSW50ZWdlcg0KRGVjaW1hbA0KRGF0ZVRpbWUNCkRhdGUNClRpbWUNClF1YW50aXR5DQpSYXRpbwkJCQ0KDQpJZiB0aGUgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IlVuYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRvU3RyaW5nIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgVG9TdHJpbmcgb3BlcmF0b3IgY29udmVydHMgdGhlIHZhbHVlIG9mIGl0cyBhcmd1bWVudCB0byBhIFN0cmluZyB2YWx1ZS4gVGhlIG9wZXJhdG9yIHVzZXMgdGhlIGZvbGxvd2luZyBzdHJpbmcgcmVwcmVzZW50YXRpb25zIGZvciBlYWNoIHR5cGU6DQoNCkJvb2xlYW4gdHJ1ZXxmYWxzZQ0KSW50ZWdlciAoLSk/IzANCkRlY2ltYWwgKC0pPyMwLjAjDQpRdWFudGl0eSAoLSk/IzAuMCMgJyZsdDt1bml0Jmd0OycNCkRhdGUgWVlZWS1NTS1ERA0KRGF0ZVRpbWUgWVlZWS1NTS1ERFRoaDptbTpzcy5mZmYoK3wtKWhoOm1tDQpUaW1lCWhoOm1tOnNzLmZmZg0KUmF0aW8gJmx0O3F1YW50aXR5Jmd0OzombHQ7cXVhbnRpdHkmZ3Q7DQoNCklmIHRoZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ29udmVydHNUb1RpbWUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBDb252ZXJ0c1RvVGltZSBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIHZhbHVlIG9mIGl0cyBhcmd1bWVudCBjYW4gYmUgY29udmVydGVkIHRvIGEgVGltZSB2YWx1ZS4gDQoJCQkNCkZvciBTdHJpbmcgdmFsdWVzLCB0aGUgb3BlcmF0b3IgZXhwZWN0cyB0aGUgc3RyaW5nIHRvIGJlIGZvcm1hdHRlZCB1c2luZyBJU08tODYwMSB0aW1lIHJlcHJlc2VudGF0aW9uOiANCg0KaGg6bW06c3MuZmZmDQoNCkluIGFkZGl0aW9uLCB0aGUgc3RyaW5nIG11c3QgYmUgaW50ZXJwcmV0YWJsZSBhcyBhIHZhbGlkIHRpbWUtb2YtZGF5IHZhbHVlLg0KDQpJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIG5vdCBmb3JtYXR0ZWQgY29ycmVjdGx5LCBvciBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCB0aW1lLW9mLWRheSB2YWx1ZSwgdGhlIHJlc3VsdCBpcyBmYWxzZS4NCg0KQXMgd2l0aCB0aW1lLW9mLWRheSBsaXRlcmFscywgdGltZS1vZi1kYXkgdmFsdWVzIG1heSBiZSBzcGVjaWZpZWQgdG8gYW55IHByZWNpc2lvbi4NCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJUb1RpbWUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBUb1RpbWUgb3BlcmF0b3IgY29udmVydHMgdGhlIHZhbHVlIG9mIGl0cyBhcmd1bWVudCB0byBhIFRpbWUgdmFsdWUuIA0KCQkJDQpGb3IgU3RyaW5nIHZhbHVlcywgdGhlIG9wZXJhdG9yIGV4cGVjdHMgdGhlIHN0cmluZyB0byBiZSBmb3JtYXR0ZWQgdXNpbmcgSVNPLTg2MDEgdGltZSByZXByZXNlbnRhdGlvbjogDQoNCmhoOm1tOnNzLmZmZg0KDQpJbiBhZGRpdGlvbiwgdGhlIHN0cmluZyBtdXN0IGJlIGludGVycHJldGFibGUgYXMgYSB2YWxpZCB0aW1lLW9mLWRheSB2YWx1ZS4NCg0KSWYgdGhlIGlucHV0IHN0cmluZyBpcyBub3QgZm9ybWF0dGVkIGNvcnJlY3RseSwgb3IgZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsaWQgdGltZS1vZi1kYXkgdmFsdWUsIHRoZSByZXN1bHQgaXMgbnVsbC4NCg0KQXMgd2l0aCB0aW1lLW9mLWRheSBsaXRlcmFscywgdGltZS1vZi1kYXkgdmFsdWVzIG1heSBiZSBzcGVjaWZpZWQgdG8gYW55IHByZWNpc2lvbi4NCg0KRm9yIERhdGVUaW1lIHZhbHVlcywgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyBleHRyYWN0aW5nIHRoZSBUaW1lIGNvbXBvbmVudCBmcm9tIHRoZSBEYXRlVGltZSB2YWx1ZS4NCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDYW5Db252ZXJ0UXVhbnRpdHkiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBDYW5Db252ZXJ0UXVhbnRpdHkgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSBRdWFudGl0eSBjYW4gYmUgY29udmVydGVkIHRvIGFuIGVxdWl2YWxlbnQgUXVhbnRpdHkgd2l0aCB0aGUgZ2l2ZW4gVW5pdC4gT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IGlzIGZhbHNlLg0KDQpOb3RlIHRoYXQgaW1wbGVtZW50YXRpb25zIGFyZSBub3QgcmVxdWlyZWQgdG8gc3VwcG9ydCBxdWFudGl0eSBjb252ZXJzaW9uLCBhbmQgc28gbWF5IHJldHVybiBmYWxzZSwgZXZlbiBpZiB0aGUgY29udmVyc2lvbiBpcyB2YWxpZC4gSW1wbGVtZW50YXRpb25zIHRoYXQgZG8gc3VwcG9ydCB1bml0IGNvbnZlcnNpb24gc2hhbGwgZG8gc28gYWNjb3JkaW5nIHRvIHRoZSBjb252ZXJzaW9uIHNwZWNpZmllZCBieSBVQ1VNLg0KDQpJZiBlaXRoZXIgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDb252ZXJ0UXVhbnRpdHkiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBDb252ZXJ0UXVhbnRpdHkgb3BlcmF0b3IgY29udmVydHMgYSBRdWFudGl0eSB0byBhbiBlcXVpdmFsZW50IFF1YW50aXR5IHdpdGggdGhlIGdpdmVuIHVuaXQuIElmIHRoZSB1bml0IG9mIHRoZSBpbnB1dCBxdWFudGl0eSBjYW4gYmUgY29udmVydGVkIHRvIHRoZSB0YXJnZXQgdW5pdCwgdGhlIHJlc3VsdCBpcyBhbiBlcXVpdmFsZW50IFF1YW50aXR5IHdpdGggdGhlIHRhcmdldCB1bml0LiBPdGhlcndpc2UsIHRoZSByZXN1bHQgaXMgbnVsbC4NCg0KTm90ZSB0aGF0IGltcGxlbWVudGF0aW9ucyBhcmUgbm90IHJlcXVpcmVkIHRvIHN1cHBvcnQgcXVhbnRpdHkgY29udmVyc2lvbi4gSW1wbGVtZW50YXRpb25zIHRoYXQgZG8gc3VwcG9ydCB1bml0IGNvbnZlcnNpb24gc2hhbGwgZG8gc28gYWNjb3JkaW5nIHRvIHRoZSBjb252ZXJzaW9uIHNwZWNpZmllZCBieSBVQ1VNLiBJbXBsZW1lbnRhdGlvbnMgdGhhdCBkbyBub3Qgc3VwcG9ydCB1bml0IGNvbnZlcnNpb24gc2hhbGwgdGhyb3cgYW4gZXJyb3IgaWYgYW4gdW5zdXBwb3J0ZWQgdW5pdCBjb252ZXJzaW9uIGlzIHJlcXVlc3RlZCB3aXRoIHRoaXMgb3BlcmF0aW9uLg0KDQpJZiBlaXRoZXIgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTwhLS0gQ29tcGFyaXNvbiBPcGVyYXRvcnMgLS0+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkVxdWFsIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgRXF1YWwgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSBhcmd1bWVudHMgYXJlIGVxdWFsOyBmYWxzZSBpZiB0aGUgYXJndW1lbnRzIGFyZSBrbm93biB1bmVxdWFsLCBhbmQgbnVsbCBvdGhlcndpc2UuIEVxdWFsaXR5IHNlbWFudGljcyBhcmUgZGVmaW5lZCB0byBiZSB2YWx1ZS1iYXNlZC4NCg0KRm9yIHNpbXBsZSB0eXBlcywgdGhpcyBtZWFucyB0aGF0IGVxdWFsaXR5IHJldHVybnMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGUgcmVzdWx0IG9mIGVhY2ggYXJndW1lbnQgZXZhbHVhdGVzIHRvIHRoZSBzYW1lIHZhbHVlLg0KDQpGb3Igc3RyaW5nIHZhbHVlcywgZXF1YWxpdHkgaXMgc3RyaWN0bHkgbGV4aWNhbCBiYXNlZCBvbiB0aGUgVW5pY29kZSB2YWx1ZXMgZm9yIHRoZSBpbmRpdmlkdWFsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZ3MuDQoNCkZvciBkZWNpbWFsIHZhbHVlcywgdHJhaWxpbmcgemVyb2VzIGFyZSBpZ25vcmVkLg0KDQpGb3IgcXVhbnRpdGllcywgdGhpcyBtZWFucyB0aGF0IHRoZSBkaW1lbnNpb25zIG9mIGVhY2ggcXVhbnRpdHkgbXVzdCBiZSB0aGUgc2FtZSwgYnV0IG5vdCBuZWNlc3NhcmlseSB0aGUgdW5pdC4gRm9yIGV4YW1wbGUsIHVuaXRzIG9mICdjbScgYW5kICdtJyBhcmUgY29tcGFyYWJsZSwgYnV0IHVuaXRzIG9mICdjbTInIGFuZCAnY20nIGFyZSBub3QuIEF0dGVtcHRpbmcgdG8gb3BlcmF0ZSBvbiBxdWFudGl0aWVzIHdpdGggaW52YWxpZCB1bml0cyB3aWxsIHJlc3VsdCBpbiBhIHJ1bi10aW1lIGVycm9yLg0KDQpGb3IgcmF0aW9zLCB0aGlzIG1lYW5zIHRoYXQgdGhlIG51bWVyYXRvciBhbmQgZGVub21pbmF0b3IgbXVzdCBiZSB0aGUgc2FtZSwgdXNpbmcgcXVhbnRpdHkgZXF1YWxpdHkgc2VtYW50aWNzLg0KDQpGb3IgdHVwbGUgdHlwZXMsIHRoaXMgbWVhbnMgdGhhdCBlcXVhbGl0eSByZXR1cm5zIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIHR1cGxlcyBhcmUgb2YgdGhlIHNhbWUgdHlwZSwgYW5kIHRoZSB2YWx1ZXMgZm9yIGFsbCBlbGVtZW50cyB0aGF0IGhhdmUgdmFsdWVzLCBieSBuYW1lLCBhcmUgZXF1YWwuDQoNCkZvciBsaXN0IHR5cGVzLCB0aGlzIG1lYW5zIHRoYXQgZXF1YWxpdHkgcmV0dXJucyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZSBsaXN0cyBjb250YWluIGVsZW1lbnRzIG9mIHRoZSBzYW1lIHR5cGUsIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGVsZW1lbnRzLCBhbmQgZm9yIGVhY2ggZWxlbWVudCBpbiB0aGUgbGlzdHMsIGluIG9yZGVyLCB0aGUgZWxlbWVudHMgYXJlIGVxdWFsIHVzaW5nIGVxdWFsaXR5IHNlbWFudGljcywgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgbnVsbCBlbGVtZW50cyBhcmUgY29uc2lkZXJlZCBlcXVhbC4NCg0KRm9yIGludGVydmFsIHR5cGVzLCBlcXVhbGl0eSByZXR1cm5zIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIGludGVydmFscyBhcmUgb3ZlciB0aGUgc2FtZSBwb2ludCB0eXBlLCBhbmQgdGhleSBoYXZlIHRoZSBzYW1lIHZhbHVlIGZvciB0aGUgc3RhcnRpbmcgYW5kIGVuZGluZyBwb2ludHMgb2YgdGhlIGludGVydmFsIGFzIGRldGVybWluZWQgYnkgdGhlIFN0YXJ0IGFuZCBFbmQgb3BlcmF0b3JzLg0KDQpGb3IgRGF0ZSwgVGltZSwgYW5kIERhdGVUaW1lIHZhbHVlcywgdGhlIGNvbXBhcmlzb24gaXMgcGVyZm9ybWVkIGJ5IGNvbnNpZGVyaW5nIGVhY2ggcHJlY2lzaW9uIGluIG9yZGVyLCBiZWdpbm5pbmcgd2l0aCB5ZWFycyAob3IgaG91cnMgZm9yIHRpbWUgdmFsdWVzKS4gSWYgdGhlIHZhbHVlcyBhcmUgdGhlIHNhbWUsIGNvbXBhcmlzb24gcHJvY2VlZHMgdG8gdGhlIG5leHQgcHJlY2lzaW9uOyBpZiB0aGUgdmFsdWVzIGFyZSBkaWZmZXJlbnQsIHRoZSBjb21wYXJpc29uIHN0b3BzIGFuZCB0aGUgcmVzdWx0IGlzIGZhbHNlLiBJZiBvbmUgaW5wdXQgaGFzIGEgdmFsdWUgZm9yIHRoZSBwcmVjaXNpb24gYW5kIHRoZSBvdGhlciBkb2VzIG5vdCwgdGhlIGNvbXBhcmlzb24gc3RvcHMgYW5kIHRoZSByZXN1bHQgaXMgbnVsbDsgaWYgbmVpdGhlciBpbnB1dCBoYXMgYSB2YWx1ZSBmb3IgdGhlIHByZWNpc2lvbiBvciB0aGUgbGFzdCBwcmVjaXNpb24gaGFzIGJlZW4gcmVhY2hlZCwgdGhlIGNvbXBhcmlzb24gc3RvcHMgYW5kIHRoZSByZXN1bHQgaXMgdHJ1ZS4gRm9yIHRoZSBwdXJwb3NlcyBvZiBjb21wYXJpc29uLCBzZWNvbmRzIGFuZCBtaWxsaXNlY29uZHMgYXJlIGNvbWJpbmVkIGFzIGEgc2luZ2xlIHByZWNpc2lvbiB1c2luZyBhIGRlY2ltYWwsIHdpdGggZGVjaW1hbCBlcXVhbGl0eSBzZW1hbnRpY3MuDQoNCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkVxdWl2YWxlbnQiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBFcXVpdmFsZW50IG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSB2YWx1ZSwgb3IgaWYgdGhleSBhcmUgYm90aCBudWxsOyBhbmQgZmFsc2Ugb3RoZXJ3aXNlLg0KDQpXaXRoIHRoZSBleGNlcHRpb24gb2YgbnVsbCBiZWhhdmlvciBhbmQgdGhlIHNlbWFudGljcyBmb3Igc3BlY2lmaWMgdHlwZXMgZGVmaW5lZCBiZWxvdywgZXF1aXZhbGVuY2UgaXMgdGhlIHNhbWUgYXMgZXF1YWxpdHkuDQoNCkZvciBzdHJpbmcgdmFsdWVzLCBlcXVpdmFsZW5jZSByZXR1cm5zIHRydWUgaWYgdGhlIHN0cmluZ3MgYXJlIHRoZSBzYW1lIHZhbHVlIHdoaWxlIGlnbm9yaW5nIGNhc2UgYW5kIGxvY2FsZSwgYW5kIG5vcm1hbGl6aW5nIHdoaXRlc3BhY2UuIE5vcm1hbGl6aW5nIHdoaXRlc3BhY2UgbWVhbnMgdGhhdCBhbGwgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFyZSB0cmVhdGVkIGFzIGVxdWl2YWxlbnQsIHdpdGggd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFzIGRlZmluZWQgaW4gdGhlIHdoaXRlc3BhY2UgbGV4aWNhbCBjYXRlZ29yeS4NCg0KRm9yIGRlY2ltYWxzLCBlcXVpdmFsZW50IG1lYW5zIHRoZSB2YWx1ZXMgYXJlIHRoZSBzYW1lIHdpdGggdGhlIGNvbXBhcmlzb24gZG9uZSBvbiB2YWx1ZXMgcm91bmRlZCB0byB0aGUgbGVhc3QgcHJlY2lzaW9uIG9mIHRoZSBsZWFzdCBwcmVjaXNlIG9wZXJhbmQ7IHRyYWlsaW5nIHplcm9lcyBhZnRlciB0aGUgZGVjaW1hbCBhcmUgaWdub3JlZCBpbiBkZXRlcm1pbmluZyBwcmVjaXNpb24gZm9yIGVxdWl2YWxlbnQgY29tcGFyaXNvbi4NCg0KRm9yIHF1YW50aXRpZXMsIGVxdWl2YWxlbnQgbWVhbnMgdGhlIHZhbHVlcyBhcmUgdGhlIHNhbWUgcXVhbnRpdHkgd2hlbiBjb25zaWRlcmluZyB1bml0IGNvbnZlcnNpb24gKGUuZy4gMTAwICdjbScgfiAxICdtJykgYW5kIHVzaW5nIGRlY2ltYWwgZXF1aXZhbGVudCBzZW1hbnRpY3MgZm9yIHRoZSB2YWx1ZS4gTm90ZSB0aGF0IGltcGxlbWVudGF0aW9ucyBhcmUgbm90IHJlcXVpcmVkIHRvIHN1cHBvcnQgdW5pdCBjb252ZXJzaW9uIGFuZCBzbyBhcmUgYWxsb3dlZCB0byByZXR1cm4gbnVsbCBmb3IgZXF1aXZhbGVuY2Ugb2YgcXVhbnRpdGllcyB3aXRoIGRpZmZlcmVudCB1bml0cy4NCg0KRm9yIHJhdGlvcywgZXF1aXZhbGVudCBtZWFucyB0aGF0IHRoZSBudW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yIHJlcHJlc2VudCB0aGUgc2FtZSByYXRpbyAoZS5nLiAxOjEwMCB+IDEwOjEwMDApLg0KDQpGb3IgdHVwbGUgdHlwZXMsIHRoaXMgbWVhbnMgdGhhdCB0d28gdHVwbGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50IGlmIGFuZCBvbmx5IGlmIHRoZSB0dXBsZXMgYXJlIG9mIHRoZSBzYW1lIHR5cGUsIGFuZCB0aGUgdmFsdWVzIGZvciBhbGwgZWxlbWVudHMgYnkgbmFtZSBhcmUgZXF1aXZhbGVudC4NCg0KRm9yIGxpc3QgdHlwZXMsIHRoaXMgbWVhbnMgdGhhdCB0d28gbGlzdHMgYXJlIGVxdWl2YWxlbnQgaWYgYW5kIG9ubHkgaWYgdGhlIGxpc3RzIGNvbnRhaW4gZWxlbWVudHMgb2YgdGhlIHNhbWUgdHlwZSwgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgZWxlbWVudHMsIGFuZCBmb3IgZWFjaCBlbGVtZW50IGluIHRoZSBsaXN0cywgaW4gb3JkZXIsIHRoZSBlbGVtZW50cyBhcmUgZXF1aXZhbGVudC4NCg0KRm9yIGludGVydmFsIHR5cGVzLCB0aGlzIG1lYW5zIHRoYXQgdHdvIGludGVydmFscyBhcmUgZXF1aXZhbGVudCBpZiBhbmQgb25seSBpZiB0aGUgaW50ZXJ2YWxzIGFyZSBvdmVyIHRoZSBzYW1lIHBvaW50IHR5cGUsIGFuZCB0aGUgc3RhcnRpbmcgYW5kIGVuZGluZyBwb2ludHMgb2YgdGhlIGludGVydmFscyBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBTdGFydCBhbmQgRW5kIG9wZXJhdG9ycyBhcmUgZXF1aXZhbGVudC4NCg0KRm9yIERhdGUsIFRpbWUsIGFuZCBEYXRlVGltZSB2YWx1ZXMsIHRoZSBjb21wYXJpc29uIGlzIHBlcmZvcm1lZCBpbiB0aGUgc2FtZSB3YXkgYXMgaXQgaXMgZm9yIGVxdWFsaXR5LCBleGNlcHQgdGhhdCBpZiBvbmUgaW5wdXQgaGFzIGEgdmFsdWUgZm9yIGEgZ2l2ZW4gcHJlY2lzaW9uIGFuZCB0aGUgb3RoZXIgZG9lcyBub3QsIHRoZSBjb21wYXJpc29uIHN0b3BzIGFuZCB0aGUgcmVzdWx0IGlzIGZhbHNlLCByYXRoZXIgdGhhbiBudWxsLiBBcyB3aXRoIGVxdWFsaXR5LCB0aGUgc2Vjb25kIGFuZCBtaWxsaXNlY29uZCBwcmVjaXNpb25zIGFyZSBjb21iaW5lZCBhcyBhIHNpbmdsZSBwcmVjaXNpb24gdXNpbmcgYSBkZWNpbWFsLCB3aXRoIGRlY2ltYWwgZXF1aXZhbGVuY2Ugc2VtYW50aWNzLg0KDQpGb3IgQ29kZSB2YWx1ZXMsIGVxdWl2YWxlbmNlIGlzIGRlZmluZWQgYmFzZWQgb24gdGhlIGNvZGUgYW5kIHN5c3RlbSBlbGVtZW50cyBvbmx5LiBUaGUgZGlzcGxheSBhbmQgdmVyc2lvbiBlbGVtZW50cyBhcmUgaWdub3JlZCBmb3IgdGhlIHB1cnBvc2VzIG9mIGRldGVybWluaW5nIENvZGUgZXF1aXZhbGVuY2UuDQoNCkZvciBDb25jZXB0IHZhbHVlcywgZXF1aXZhbGVuY2UgaXMgZGVmaW5lZCBhcyBhIG5vbi1lbXB0eSBpbnRlcnNlY3Rpb24gb2YgdGhlIGNvZGVzIGluIGVhY2ggQ29uY2VwdC4NCg0KTm90ZSB0aGF0IHRoaXMgb3BlcmF0b3Igd2lsbCBhbHdheXMgcmV0dXJuIHRydWUgb3IgZmFsc2UsIGV2ZW4gaWYgZWl0aGVyIG9yIGJvdGggb2YgaXRzIGFyZ3VtZW50cyBhcmUgbnVsbCBvciBjb250YWluIG51bGwgY29tcG9uZW50cy48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJCaW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iTm90RXF1YWwiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBOb3RFcXVhbCBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgaXRzIGFyZ3VtZW50cyBhcmUgbm90IHRoZSBzYW1lIHZhbHVlLg0KDQpUaGUgTm90RXF1YWwgb3BlcmF0b3IgaXMgYSBzaG9ydGhhbmQgZm9yIGludm9jYXRpb24gb2YgbG9naWNhbCBuZWdhdGlvbiBvZiB0aGUgRXF1YWwgb3BlcmF0b3IuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxlc3MiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBMZXNzIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgbGVzcyB0aGFuIHRoZSBzZWNvbmQgYXJndW1lbnQuDQoJCQkNCkZvciBjb21wYXJpc29ucyBpbnZvbHZpbmcgcXVhbnRpdGllcywgdGhlIGRpbWVuc2lvbnMgb2YgZWFjaCBxdWFudGl0eSBtdXN0IGJlIHRoZSBzYW1lLCBidXQgbm90IG5lY2Vzc2FyaWx5IHRoZSB1bml0LiBGb3IgZXhhbXBsZSwgdW5pdHMgb2YgJ2NtJyBhbmQgJ20nIGFyZSBjb21wYXJhYmxlLCBidXQgdW5pdHMgb2YgJ2NtMicgYW5kICdjbScgYXJlIG5vdC4gQXR0ZW1wdGluZyB0byBvcGVyYXRlIG9uIHF1YW50aXRpZXMgd2l0aCBpbnZhbGlkIHVuaXRzIHdpbGwgcmVzdWx0IGluIGEgcnVuLXRpbWUgZXJyb3IuDQoNCkZvciBEYXRlLCBUaW1lLCBhbmQgRGF0ZVRpbWUgdmFsdWVzLCB0aGUgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgYnkgY29uc2lkZXJpbmcgZWFjaCBwcmVjaXNpb24gaW4gb3JkZXIsIGJlZ2lubmluZyB3aXRoIHllYXJzIChvciBob3VycyBmb3IgdGltZSB2YWx1ZXMpLiBJZiB0aGUgdmFsdWVzIGFyZSB0aGUgc2FtZSwgY29tcGFyaXNvbiBwcm9jZWVkcyB0byB0aGUgbmV4dCBwcmVjaXNpb247IGlmIHRoZSBmaXJzdCB2YWx1ZSBpcyBsZXNzIHRoYW4gdGhlIHNlY29uZCwgdGhlIHJlc3VsdCBpcyB0cnVlOyBpZiB0aGUgZmlyc3QgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBzZWNvbmQsIHRoZSByZXN1bHQgaXMgZmFsc2U7IGlmIG9uZSBpbnB1dCBoYXMgYSB2YWx1ZSBmb3IgdGhlIHByZWNpc2lvbiBhbmQgdGhlIG90aGVyIGRvZXMgbm90LCB0aGUgY29tcGFyaXNvbiBzdG9wcyBhbmQgdGhlIHJlc3VsdCBpcyBudWxsOyBpZiBuZWl0aGVyIGlucHV0IGhhcyBhIHZhbHVlIGZvciB0aGUgcHJlY2lzaW9uIG9yIHRoZSBsYXN0IHByZWNpc2lvbiBoYXMgYmVlbiByZWFjaGVkLCB0aGUgY29tcGFyaXNvbiBzdG9wcyBhbmQgdGhlIHJlc3VsdCBpcyBmYWxzZS4gRm9yIHRoZSBwdXJwb3NlcyBvZiBjb21wYXJpc29uLCBzZWNvbmRzIGFuZCBtaWxsaXNlY29uZHMgYXJlIGNvbWJpbmVkIGFzIGEgc2luZ2xlIHByZWNpc2lvbiB1c2luZyBhIGRlY2ltYWwsIHdpdGggZGVjaW1hbCBjb21wYXJpc29uIHNlbWFudGljcy4NCg0KSWYgZWl0aGVyIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC4NCg0KVGhlIExlc3Mgb3BlcmF0b3IgaXMgZGVmaW5lZCBmb3IgdGhlIEludGVnZXIsIERlY2ltYWwsIFN0cmluZywgRGF0ZSwgRGF0ZVRpbWUsIFRpbWUsIGFuZCBRdWFudGl0eSB0eXBlcy4NCg0KTm90ZSB0aGF0IHJlbGF0aXZlIHJhdGlvIGNvbXBhcmlzb25zIGFyZSBub3QgZGlyZWN0bHkgc3VwcG9ydGVkIGR1ZSB0byB0aGUgdmFyaWFuY2Ugb2YgdXNlcyB3aXRoaW4gaGVhbHRoY2FyZS4gU2VlIHRoZSBkaXNjdXNzaW9uIGluIFJhdGlvIE9wZXJhdG9ycyBpbiB0aGUgQXV0aG9yJ3MgR3VpZGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkdyZWF0ZXIiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBHcmVhdGVyIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgZ3JlYXRlciB0aGFuIHRoZSBzZWNvbmQgYXJndW1lbnQuDQoNClRoZSBHcmVhdGVyIG9wZXJhdG9yIGlzIGRlZmluZWQgZm9yIHRoZSBJbnRlZ2VyLCBEZWNpbWFsLCBTdHJpbmcsIERhdGUsIERhdGVUaW1lLCBUaW1lLCBhbmQgUXVhbnRpdHkgdHlwZXMuDQoNCkZvciBjb21wYXJpc29ucyBpbnZvbHZpbmcgcXVhbnRpdGllcywgdGhlIGRpbWVuc2lvbnMgb2YgZWFjaCBxdWFudGl0eSBtdXN0IGJlIHRoZSBzYW1lLCBidXQgbm90IG5lY2Vzc2FyaWx5IHRoZSB1bml0LiBGb3IgZXhhbXBsZSwgdW5pdHMgb2YgJ2NtJyBhbmQgJ20nIGFyZSBjb21wYXJhYmxlLCBidXQgdW5pdHMgb2YgJ2NtMicgYW5kICdjbScgYXJlIG5vdC4gQXR0ZW1wdGluZyB0byBvcGVyYXRlIG9uIHF1YW50aXRpZXMgd2l0aCBpbnZhbGlkIHVuaXRzIHdpbGwgcmVzdWx0IGluIGEgcnVuLXRpbWUgZXJyb3IuDQoNCkZvciBEYXRlLCBUaW1lLCBhbmQgRGF0ZVRpbWUgdmFsdWVzLCB0aGUgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgYnkgY29uc2lkZXJpbmcgZWFjaCBwcmVjaXNpb24gaW4gb3JkZXIsIGJlZ2lubmluZyB3aXRoIHllYXJzIChvciBob3VycyBmb3IgdGltZSB2YWx1ZXMpLiBJZiB0aGUgdmFsdWVzIGFyZSB0aGUgc2FtZSwgY29tcGFyaXNvbiBwcm9jZWVkcyB0byB0aGUgbmV4dCBwcmVjaXNpb247IGlmIHRoZSBmaXJzdCB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gdGhlIHNlY29uZCwgdGhlIHJlc3VsdCBpcyB0cnVlOyBpZiB0aGUgZmlyc3QgdmFsdWUgaXMgbGVzcyB0aGFuIHRoZSBzZWNvbmQsIHRoZSByZXN1bHQgaXMgZmFsc2U7IGlmIG9uZSBpbnB1dCBoYXMgYSB2YWx1ZSBmb3IgdGhlIHByZWNpc2lvbiBhbmQgdGhlIG90aGVyIGRvZXMgbm90LCB0aGUgY29tcGFyaXNvbiBzdG9wcyBhbmQgdGhlIHJlc3VsdCBpcyBudWxsOyBpZiBuZWl0aGVyIGlucHV0IGhhcyBhIHZhbHVlIGZvciB0aGUgcHJlY2lzaW9uIG9yIHRoZSBsYXN0IHByZWNpc2lvbiBoYXMgYmVlbiByZWFjaGVkLCB0aGUgY29tcGFyaXNvbiBzdG9wcyBhbmQgdGhlIHJlc3VsdCBpcyBmYWxzZS4gRm9yIHRoZSBwdXJwb3NlcyBvZiBjb21wYXJpc29uLCBzZWNvbmRzIGFuZCBtaWxsaXNlY29uZHMgYXJlIGNvbWJpbmVkIGFzIGEgc2luZ2xlIHByZWNpc2lvbiB1c2luZyBhIGRlY2ltYWwsIHdpdGggZGVjaW1hbCBjb21wYXJpc29uIHNlbWFudGljcy4NCg0KV2hlbiBjb21wYXJpbmcgRGF0ZVRpbWUgdmFsdWVzIHdpdGggZGlmZmVyZW50IHRpbWV6b25lIG9mZnNldHMsIGltcGxlbWVudGF0aW9ucyBzaG91bGQgbm9ybWFsaXplIHRvIHRoZSB0aW1lem9uZSBvZmZzZXQgb2YgdGhlIGV2YWx1YXRpb24gcmVxdWVzdCB0aW1lc3RhbXAsIGJ1dCBvbmx5IHdoZW4gdGhlIGNvbXBhcmlzb24gcHJlY2lzaW9uIGlzIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBvciBtaWxsaXNlY29uZHMuDQoNCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuDQoNCk5vdGUgdGhhdCByZWxhdGl2ZSByYXRpbyBjb21wYXJpc29ucyBhcmUgbm90IGRpcmVjdGx5IHN1cHBvcnRlZCBkdWUgdG8gdGhlIHZhcmlhbmNlIG9mIHVzZXMgd2l0aGluIGhlYWx0aGNhcmUuIFNlZSB0aGUgZGlzY3Vzc2lvbiBpbiBSYXRpbyBPcGVyYXRvcnMgaW4gdGhlIEF1dGhvcidzIEd1aWRlIGZvciBtb3JlIGluZm9ybWF0aW9uLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJMZXNzT3JFcXVhbCI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIExlc3NPckVxdWFsIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzZWNvbmQgYXJndW1lbnQuDQoNClRoZSBMZXNzT3JFcXVhbCBvcGVyYXRvciBpcyBkZWZpbmVkIGZvciB0aGUgSW50ZWdlciwgRGVjaW1hbCwgU3RyaW5nLCBEYXRlLCBEYXRlVGltZSwgVGltZSwgYW5kIFF1YW50aXR5IHR5cGVzLg0KDQpGb3IgY29tcGFyaXNvbnMgaW52b2x2aW5nIHF1YW50aXRpZXMsIHRoZSBkaW1lbnNpb25zIG9mIGVhY2ggcXVhbnRpdHkgbXVzdCBiZSB0aGUgc2FtZSwgYnV0IG5vdCBuZWNlc3NhcmlseSB0aGUgdW5pdC4gRm9yIGV4YW1wbGUsIHVuaXRzIG9mICdjbScgYW5kICdtJyBhcmUgY29tcGFyYWJsZSwgYnV0IHVuaXRzIG9mICdjbTInIGFuZCAnY20nIGFyZSBub3QuIEF0dGVtcHRpbmcgdG8gb3BlcmF0ZSBvbiBxdWFudGl0aWVzIHdpdGggaW52YWxpZCB1bml0cyB3aWxsIHJlc3VsdCBpbiBhIHJ1bi10aW1lIGVycm9yLg0KDQpGb3IgRGF0ZSwgVGltZSwgYW5kIERhdGVUaW1lIHZhbHVlcywgdGhlIGNvbXBhcmlzb24gaXMgcGVyZm9ybWVkIGJ5IGNvbnNpZGVyaW5nIGVhY2ggcHJlY2lzaW9uIGluIG9yZGVyLCBiZWdpbm5pbmcgd2l0aCB5ZWFycyAob3IgaG91cnMgZm9yIHRpbWUgdmFsdWVzKS4gSWYgdGhlIHZhbHVlcyBhcmUgdGhlIHNhbWUsIGNvbXBhcmlzb24gcHJvY2VlZHMgdG8gdGhlIG5leHQgcHJlY2lzaW9uOyBpZiB0aGUgZmlyc3QgdmFsdWUgaXMgbGVzcyB0aGFuIHRoZSBzZWNvbmQsIHRoZSByZXN1bHQgaXMgdHJ1ZTsgaWYgdGhlIGZpcnN0IHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc2Vjb25kLCB0aGUgcmVzdWx0IGlzIGZhbHNlOyBpZiBvbmUgaW5wdXQgaGFzIGEgdmFsdWUgZm9yIHRoZSBwcmVjaXNpb24gYW5kIHRoZSBvdGhlciBkb2VzIG5vdCwgdGhlIGNvbXBhcmlzb24gc3RvcHMgYW5kIHRoZSByZXN1bHQgaXMgbnVsbDsgaWYgbmVpdGhlciBpbnB1dCBoYXMgYSB2YWx1ZSBmb3IgdGhlIHByZWNpc2lvbiBvciB0aGUgbGFzdCBwcmVjaXNpb24gaGFzIGJlZW4gcmVhY2hlZCwgdGhlIGNvbXBhcmlzb24gc3RvcHMgYW5kIHRoZSByZXN1bHQgaXMgdHJ1ZS4gRm9yIHRoZSBwdXJwb3NlcyBvZiBjb21wYXJpc29uLCBzZWNvbmRzIGFuZCBtaWxsaXNlY29uZHMgYXJlIGNvbWJpbmVkIGFzIGEgc2luZ2xlIHByZWNpc2lvbiB1c2luZyBhIGRlY2ltYWwsIHdpdGggZGVjaW1hbCBjb21wYXJpc29uIHNlbWFudGljcy4NCg0KV2hlbiBjb21wYXJpbmcgRGF0ZVRpbWUgdmFsdWVzIHdpdGggZGlmZmVyZW50IHRpbWV6b25lIG9mZnNldHMsIGltcGxlbWVudGF0aW9ucyBzaG91bGQgbm9ybWFsaXplIHRvIHRoZSB0aW1lem9uZSBvZmZzZXQgb2YgdGhlIGV2YWx1YXRpb24gcmVxdWVzdCB0aW1lc3RhbXAsIGJ1dCBvbmx5IHdoZW4gdGhlIGNvbXBhcmlzb24gcHJlY2lzaW9uIGlzIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBvciBtaWxsaXNlY29uZHMuDQoNCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuDQoNCk5vdGUgdGhhdCByZWxhdGl2ZSByYXRpbyBjb21wYXJpc29ucyBhcmUgbm90IGRpcmVjdGx5IHN1cHBvcnRlZCBkdWUgdG8gdGhlIHZhcmlhbmNlIG9mIHVzZXMgd2l0aGluIGhlYWx0aGNhcmUuIFNlZSB0aGUgZGlzY3Vzc2lvbiBpbiBSYXRpbyBPcGVyYXRvcnMgaW4gdGhlIEF1dGhvcidzIEd1aWRlIGZvciBtb3JlIGluZm9ybWF0aW9uLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJHcmVhdGVyT3JFcXVhbCI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEdyZWF0ZXJPckVxdWFsIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzZWNvbmQgYXJndW1lbnQuDQoNClRoZSBHcmVhdGVyT3JFcXVhbCBvcGVyYXRvciBpcyBkZWZpbmVkIGZvciB0aGUgSW50ZWdlciwgRGVjaW1hbCwgU3RyaW5nLCBEYXRlLCBEYXRlVGltZSwgVGltZSwgYW5kIFF1YW50aXR5IHR5cGVzLg0KDQpGb3IgY29tcGFyaXNvbnMgaW52b2x2aW5nIHF1YW50aXRpZXMsIHRoZSBkaW1lbnNpb25zIG9mIGVhY2ggcXVhbnRpdHkgbXVzdCBiZSB0aGUgc2FtZSwgYnV0IG5vdCBuZWNlc3NhcmlseSB0aGUgdW5pdC4gRm9yIGV4YW1wbGUsIHVuaXRzIG9mICdjbScgYW5kICdtJyBhcmUgY29tcGFyYWJsZSwgYnV0IHVuaXRzIG9mICdjbTInIGFuZCAnY20nIGFyZSBub3QuIEF0dGVtcHRpbmcgdG8gb3BlcmF0ZSBvbiBxdWFudGl0aWVzIHdpdGggaW52YWxpZCB1bml0cyB3aWxsIHJlc3VsdCBpbiBhIHJ1bi10aW1lIGVycm9yLg0KDQpGb3IgRGF0ZSwgVGltZSwgYW5kIERhdGVUaW1lIHZhbHVlcywgdGhlIGNvbXBhcmlzb24gaXMgcGVyZm9ybWVkIGJ5IGNvbnNpZGVyaW5nIGVhY2ggcHJlY2lzaW9uIGluIG9yZGVyLCBiZWdpbm5pbmcgd2l0aCB5ZWFycyAob3IgaG91cnMgZm9yIHRpbWUgdmFsdWVzKS4gSWYgdGhlIHZhbHVlcyBhcmUgdGhlIHNhbWUsIGNvbXBhcmlzb24gcHJvY2VlZHMgdG8gdGhlIG5leHQgcHJlY2lzaW9uOyBpZiB0aGUgZmlyc3QgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBzZWNvbmQsIHRoZSByZXN1bHQgaXMgdHJ1ZTsgaWYgdGhlIGZpcnN0IHZhbHVlIGlzIGxlc3MgdGhhbiB0aGUgc2Vjb25kLCB0aGUgcmVzdWx0IGlzIGZhbHNlOyBpZiBvbmUgaW5wdXQgaGFzIGEgdmFsdWUgZm9yIHRoZSBwcmVjaXNpb24gYW5kIHRoZSBvdGhlciBkb2VzIG5vdCwgdGhlIGNvbXBhcmlzb24gc3RvcHMgYW5kIHRoZSByZXN1bHQgaXMgbnVsbDsgaWYgbmVpdGhlciBpbnB1dCBoYXMgYSB2YWx1ZSBmb3IgdGhlIHByZWNpc2lvbiBvciB0aGUgbGFzdCBwcmVjaXNpb24gaGFzIGJlZW4gcmVhY2hlZCwgdGhlIGNvbXBhcmlzb24gc3RvcHMgYW5kIHRoZSByZXN1bHQgaXMgdHJ1ZS4gRm9yIHRoZSBwdXJwb3NlcyBvZiBjb21wYXJpc29uLCBzZWNvbmRzIGFuZCBtaWxsaXNlY29uZHMgYXJlIGNvbWJpbmVkIGFzIGEgc2luZ2xlIHByZWNpc2lvbiB1c2luZyBhIGRlY2ltYWwsIHdpdGggZGVjaW1hbCBjb21wYXJpc29uIHNlbWFudGljcy4NCg0KV2hlbiBjb21wYXJpbmcgRGF0ZVRpbWUgdmFsdWVzIHdpdGggZGlmZmVyZW50IHRpbWV6b25lIG9mZnNldHMsIGltcGxlbWVudGF0aW9ucyBzaG91bGQgbm9ybWFsaXplIHRvIHRoZSB0aW1lem9uZSBvZmZzZXQgb2YgdGhlIGV2YWx1YXRpb24gcmVxdWVzdCB0aW1lc3RhbXAsIGJ1dCBvbmx5IHdoZW4gdGhlIGNvbXBhcmlzb24gcHJlY2lzaW9uIGlzIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBvciBtaWxsaXNlY29uZHMuDQoNCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuDQoNCk5vdGUgdGhhdCByZWxhdGl2ZSByYXRpbyBjb21wYXJpc29ucyBhcmUgbm90IGRpcmVjdGx5IHN1cHBvcnRlZCBkdWUgdG8gdGhlIHZhcmlhbmNlIG9mIHVzZXMgd2l0aGluIGhlYWx0aGNhcmUuIFNlZSB0aGUgZGlzY3Vzc2lvbiBpbiBSYXRpbyBPcGVyYXRvcnMgaW4gdGhlIEF1dGhvcidzIEd1aWRlIGZvciBtb3JlIGluZm9ybWF0aW9uLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTwhLS0gQXJpdGhtZXRpYyBPcGVyYXRvcnMgLS0+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFkZCI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEFkZCBvcGVyYXRvciBwZXJmb3JtcyBudW1lcmljIGFkZGl0aW9uIG9mIGl0cyBhcmd1bWVudHMuDQoJCQkNCldoZW4gYWRkaW5nIHF1YW50aXRpZXMsIHRoZSBkaW1lbnNpb25zIG9mIGVhY2ggcXVhbnRpdHkgbXVzdCBiZSB0aGUgc2FtZSwgYnV0IG5vdCBuZWNlc3NhcmlseSB0aGUgdW5pdC4gRm9yIGV4YW1wbGUsIHVuaXRzIG9mICdjbScgYW5kICdtJyBjYW4gYmUgYWRkZWQsIGJ1dCB1bml0cyBvZiAnY20yJyBhbmQgJ2NtJyBjYW5ub3QuIFRoZSB1bml0IG9mIHRoZSByZXN1bHQgd2lsbCBiZSB0aGUgbW9zdCBncmFudWxhciB1bml0IG9mIGVpdGhlciBpbnB1dC4gQXR0ZW1wdGluZyB0byBvcGVyYXRlIG9uIHF1YW50aXRpZXMgd2l0aCBpbnZhbGlkIHVuaXRzIHdpbGwgcmVzdWx0IGluIGEgcnVuLXRpbWUgZXJyb3IuDQoJCQkNClRoZSBBZGQgb3BlcmF0b3IgaXMgZGVmaW5lZCBmb3IgdGhlIEludGVnZXIsIERlY2ltYWwsIGFuZCBRdWFudGl0eSB0eXBlcy4gSW4gYWRkaXRpb24sIGEgdGltZS12YWx1ZWQgUXVhbnRpdHkgY2FuIGJlIGFkZGVkIHRvIGEgRGF0ZSwgRGF0ZVRpbWUgb3IgVGltZSB1c2luZyB0aGlzIG9wZXJhdG9yLg0KDQpGb3IgRGF0ZSwgRGF0ZVRpbWUsIGFuZCBUaW1lIHZhbHVlcywgdGhlIG9wZXJhdG9yIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgaW5jcmVtZW50ZWQgYnkgdGhlIHRpbWUtdmFsdWVkIHF1YW50aXR5LCByZXNwZWN0aW5nIHZhcmlhYmxlIGxlbmd0aCBwZXJpb2RzIGZvciBjYWxlbmRhciB5ZWFycyBhbmQgbW9udGhzLg0KDQpGb3IgRGF0ZSB2YWx1ZXMsIHRoZSBxdWFudGl0eSB1bml0IG11c3QgYmUgb25lIG9mIHllYXJzLCBtb250aHMsIHdlZWtzLCBvciBkYXlzLg0KDQpGb3IgRGF0ZVRpbWUgdmFsdWVzLCB0aGUgcXVhbnRpdHkgdW5pdCBtdXN0IGJlIG9uZSBvZiB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG9yIG1pbGxpc2Vjb25kcy4NCg0KRm9yIFRpbWUgdmFsdWVzLCB0aGUgcXVhbnRpdHkgdW5pdCBtdXN0IGJlIG9uZSBvZiBob3VycywgbWludXRlcywgc2Vjb25kcywgb3IgbWlsbGlzZWNvbmRzLg0KDQpOb3RlIHRoYXQgYXMgd2l0aCBhbnkgRGF0ZSwgVGltZSwgb3IgRGF0ZVRpbWUgb3BlcmF0aW9ucywgdGVtcG9yYWwgdW5pdHMgbWF5IGJlIHNwZWNpZmllZCB3aXRoIGVpdGhlciBzaW5ndWxhciwgcGx1cmFsLCBvciBVQ1VNIHVuaXRzLg0KDQpUaGUgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBieSBjb252ZXJ0aW5nIHRoZSB0aW1lLWJhc2VkIHF1YW50aXR5IHRvIHRoZSBoaWdoZXN0IHNwZWNpZmllZCBncmFudWxhcml0eSBpbiB0aGUgZmlyc3QgYXJndW1lbnQgKHRydW5jYXRpbmcgYW55IHJlc3VsdGluZyBkZWNpbWFsIHBvcnRpb24pIGFuZCB0aGVuIGFkZGluZyBpdCB0byB0aGUgZmlyc3QgYXJndW1lbnQuDQoNCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuDQoNCklmIHRoZSByZXN1bHQgb2YgdGhlIGFkZGl0aW9uIGNhbm5vdCBiZSByZXByZXNlbnRlZCAoaS5lLiBhcml0aG1ldGljIG92ZXJmbG93KSwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJTdWJ0cmFjdCI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFN1YnRyYWN0IG9wZXJhdG9yIHBlcmZvcm1zIG51bWVyaWMgc3VidHJhY3Rpb24gb2YgaXRzIGFyZ3VtZW50cy4NCgkJCQ0KV2hlbiBzdWJ0cmFjdGluZyBxdWFudGl0aWVzLCB0aGUgZGltZW5zaW9ucyBvZiBlYWNoIHF1YW50aXR5IG11c3QgYmUgdGhlIHNhbWUsIGJ1dCBub3QgbmVjZXNzYXJpbHkgdGhlIHVuaXQuIEZvciBleGFtcGxlLCB1bml0cyBvZiAnY20nIGFuZCAnbScgY2FuIGJlIHN1YnRyYWN0ZWQsIGJ1dCB1bml0cyBvZiAnY20yJyBhbmQgJ2NtJyBjYW5ub3QuIFRoZSB1bml0IG9mIHRoZSByZXN1bHQgd2lsbCBiZSB0aGUgbW9zdCBncmFudWxhciB1bml0IG9mIGVpdGhlciBpbnB1dC4gQXR0ZW1wdGluZyB0byBvcGVyYXRlIG9uIHF1YW50aXRpZXMgd2l0aCBpbnZhbGlkIHVuaXRzIHdpbGwgcmVzdWx0IGluIGEgcnVuLXRpbWUgZXJyb3IuDQoNClRoZSBTdWJ0cmFjdCBvcGVyYXRvciBpcyBkZWZpbmVkIGZvciB0aGUgSW50ZWdlciwgRGVjaW1hbCwgYW5kIFF1YW50aXR5IHR5cGVzLiBJbiBhZGRpdGlvbiwgYSB0aW1lLXZhbHVlZCBRdWFudGl0eSBjYW4gYmUgc3VidHJhY3RlZCBmcm9tIGEgRGF0ZSwgRGF0ZVRpbWUsIG9yIFRpbWUgdXNpbmcgdGhpcyBvcGVyYXRvci4NCg0KRm9yIERhdGUsIERhdGVUaW1lLCBUaW1lIHZhbHVlcywgdGhlIG9wZXJhdG9yIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgZGVjcmVtZW50ZWQgYnkgdGhlIHRpbWUtdmFsdWVkIHF1YW50aXR5LCByZXNwZWN0aW5nIHZhcmlhYmxlIGxlbmd0aCBwZXJpb2RzIGZvciBjYWxlbmRhciB5ZWFycyBhbmQgbW9udGhzLg0KDQpGb3IgRGF0ZSB2YWx1ZXMsIHRoZSBxdWFudGl0eSB1bml0IG11c3QgYmUgb25lIG9mIHllYXJzLCBtb250aHMsIHdlZWtzLCBvciBkYXlzLg0KDQpGb3IgRGF0ZVRpbWUgdmFsdWVzLCB0aGUgcXVhbnRpdHkgdW5pdCBtdXN0IGJlIG9uZSBvZiB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG9yIG1pbGxpc2Vjb25kcy4NCg0KRm9yIFRpbWUgdmFsdWVzLCB0aGUgcXVhbnRpdHkgdW5pdCBtdXN0IGJlIG9uZSBvZiBob3VycywgbWludXRlcywgc2Vjb25kcywgb3IgbWlsbGlzZWNvbmRzLg0KDQpUaGUgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBieSBjb252ZXJ0aW5nIHRoZSB0aW1lLWJhc2VkIHF1YW50aXR5IHRvIHRoZSBoaWdoZXN0IHNwZWNpZmllZCBncmFudWxhcml0eSBpbiB0aGUgZmlyc3QgYXJndW1lbnQgKHRydW5jYXRpbmcgYW55IHJlc3VsdGluZyBkZWNpbWFsIHBvcnRpb24pIGFuZCB0aGVuIGFkZGluZyBpdCB0byB0aGUgZmlyc3QgYXJndW1lbnQuDQoNCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuDQoNCklmIHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBjYW5ub3QgYmUgcmVwcmVzZW50ZWQsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJCaW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iTXVsdGlwbHkiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBNdWx0aXBseSBvcGVyYXRvciBwZXJmb3JtcyBudW1lcmljIG11bHRpcGxpY2F0aW9uIG9mIGl0cyBhcmd1bWVudHMuDQoJCQkNCkZvciBtdWx0aXBsaWNhdGlvbiBvcGVyYXRpb25zIGludm9sdmluZyBxdWFudGl0aWVzLCB0aGUgcmVzdWx0aW5nIHF1YW50aXR5IHdpbGwgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgdW5pdC4NCg0KSWYgZWl0aGVyIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC4NCg0KSWYgdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uIGNhbm5vdCBiZSByZXByZXNlbnRlZCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpUaGUgTXVsdGlwbHkgb3BlcmF0b3IgaXMgZGVmaW5lZCBmb3IgdGhlIEludGVnZXIsIERlY2ltYWwgYW5kIFF1YW50aXR5IHR5cGVzLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJEaXZpZGUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBEaXZpZGUgb3BlcmF0b3IgcGVyZm9ybXMgbnVtZXJpYyBkaXZpc2lvbiBvZiBpdHMgYXJndW1lbnRzLiBOb3RlIHRoYXQgdGhlIHJlc3VsdCB0eXBlIG9mIERpdmlkZSBpcyBEZWNpbWFsLCBldmVuIGlmIGl0cyBhcmd1bWVudHMgYXJlIG9mIHR5cGUgSW50ZWdlci4gRm9yIGludGVnZXIgZGl2aXNpb24sIHVzZSB0aGUgdHJ1bmNhdGVkIGRpdmlkZSBvcGVyYXRvci4NCgkJCQ0KRm9yIGRpdmlzaW9uIG9wZXJhdGlvbnMgaW52b2x2aW5nIHF1YW50aXRpZXMsIHRoZSByZXN1bHRpbmcgcXVhbnRpdHkgd2lsbCBoYXZlIHRoZSBhcHByb3ByaWF0ZSB1bml0Lg0KDQpJZiBlaXRoZXIgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpJZiB0aGUgcmVzdWx0IG9mIHRoZSBkaXZpc2lvbiBjYW5ub3QgYmUgcmVwcmVzZW50ZWQsIG9yIHRoZSByaWdodCBhcmd1bWVudCBpcyAwLCB0aGUgcmVzdWx0IGlzIG51bGwuDQoNClRoZSBEaXZpZGUgb3BlcmF0b3IgaXMgZGVmaW5lZCBmb3IgdGhlIERlY2ltYWwgYW5kIFF1YW50aXR5IHR5cGVzLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJUcnVuY2F0ZWREaXZpZGUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBUcnVuY2F0ZWREaXZpZGUgb3BlcmF0b3IgcGVyZm9ybXMgaW50ZWdlciBkaXZpc2lvbiBvZiBpdHMgYXJndW1lbnRzLg0KDQpJZiBlaXRoZXIgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpJZiB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gY2Fubm90IGJlIHJlcHJlc2VudGVkLCBvciB0aGUgcmlnaHQgYXJndW1lbnQgaXMgMCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpUaGUgVHJ1bmNhdGVkRGl2aWRlIG9wZXJhdG9yIGlzIGRlZmluZWQgZm9yIHRoZSBJbnRlZ2VyIGFuZCBEZWNpbWFsIHR5cGVzLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJNb2R1bG8iPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBNb2R1bG8gb3BlcmF0b3IgY29tcHV0ZXMgdGhlIHJlbWFpbmRlciBvZiB0aGUgZGl2aXNpb24gb2YgaXRzIGFyZ3VtZW50cy4NCg0KSWYgZWl0aGVyIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC4NCg0KSWYgdGhlIHJlc3VsdCBvZiB0aGUgbW9kdWxvIGNhbm5vdCBiZSByZXByZXNlbnRlZCwgb3IgdGhlIHJpZ2h0IGFyZ3VtZW50IGlzIDAsIHRoZSByZXN1bHQgaXMgbnVsbC4NCg0KVGhlIE1vZHVsbyBvcGVyYXRvciBpcyBkZWZpbmVkIGZvciB0aGUgSW50ZWdlciBhbmQgRGVjaW1hbCB0eXBlcy48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJCaW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ2VpbGluZyI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIENlaWxpbmcgb3BlcmF0b3IgcmV0dXJucyB0aGUgZmlyc3QgaW50ZWdlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGFyZ3VtZW50LiANCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJGbG9vciI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEZsb29yIG9wZXJhdG9yIHJldHVybnMgdGhlIGZpcnN0IGludGVnZXIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBhcmd1bWVudC4NCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJUcnVuY2F0ZSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFRydW5jYXRlIG9wZXJhdG9yIHJldHVybnMgdGhlIGludGVnZXIgY29tcG9uZW50IG9mIGl0cyBhcmd1bWVudC4NCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJBYnMiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBBYnMgb3BlcmF0b3IgcmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgaXRzIGFyZ3VtZW50Lg0KDQpXaGVuIHRha2luZyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgYSBxdWFudGl0eSwgdGhlIHVuaXQgaXMgdW5jaGFuZ2VkLg0KDQpJZiB0aGUgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpJZiB0aGUgcmVzdWx0IG9mIHRha2luZyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGFyZ3VtZW50IGNhbm5vdCBiZSByZXByZXNlbnRlZCAoZS5nLiBBYnMobWluaW11bSBJbnRlZ2VyKSksIHRoZSByZXN1bHQgaXMgbnVsbC4NCg0KVGhlIEFicyBvcGVyYXRvciBpcyBkZWZpbmVkIGZvciB0aGUgSW50ZWdlciwgRGVjaW1hbCwgYW5kIFF1YW50aXR5IHR5cGVzLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IlVuYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik5lZ2F0ZSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIE5lZ2F0ZSBvcGVyYXRvciByZXR1cm5zIHRoZSBuZWdhdGl2ZSBvZiBpdHMgYXJndW1lbnQuDQoJCQkNCldoZW4gbmVnYXRpbmcgcXVhbnRpdGllcywgdGhlIHVuaXQgaXMgdW5jaGFuZ2VkLg0KDQpJZiB0aGUgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpJZiB0aGUgcmVzdWx0IG9mIG5lZ2F0aW5nIHRoZSBhcmd1bWVudCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgKGUuZy4gLShtaW5pbXVtIEludGVnZXIpKSwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpUaGUgTmVnYXRlIG9wZXJhdG9yIGlzIGRlZmluZWQgZm9yIHRoZSBJbnRlZ2VyLCBEZWNpbWFsLCBhbmQgUXVhbnRpdHkgdHlwZXMuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iUm91bmQiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBSb3VuZCBvcGVyYXRvciByZXR1cm5zIHRoZSBuZWFyZXN0IGludGVnZXIgdG8gaXRzIGFyZ3VtZW50LiBUaGUgc2VtYW50aWNzIG9mIHJvdW5kIGFyZSBkZWZpbmVkIGFzIGEgdHJhZGl0aW9uYWwgcm91bmQsIG1lYW5pbmcgdGhhdCBhIGRlY2ltYWwgdmFsdWUgb2YgMC41IG9yIGhpZ2hlciB3aWxsIHJvdW5kIHRvIDEuDQoNCklmIHRoZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuDQoNClByZWNpc2lvbiBkZXRlcm1pbmVzIHRoZSBkZWNpbWFsIHBsYWNlIGF0IHdoaWNoIHRoZSByb3VuZGluZyB3aWxsIG9jY3VyLiBJZiBwcmVjaXNpb24gaXMgbm90IHNwZWNpZmllZCBvciBudWxsLCAwIGlzIGFzc3VtZWQuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iT3BlcmF0b3JFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9Im9wZXJhbmQiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InByZWNpc2lvbiIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iTG4iPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBMbiBvcGVyYXRvciBjb21wdXRlcyB0aGUgbmF0dXJhbCBsb2dhcml0aG0gb2YgaXRzIGFyZ3VtZW50Lg0KDQpJZiB0aGUgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpJZiB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gY2Fubm90IGJlIHJlcHJlc2VudGVkLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iRXhwIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgRXhwIG9wZXJhdG9yIHJldHVybnMgZSByYWlzZWQgdG8gdGhlIGdpdmVuIHBvd2VyLg0KDQpJZiB0aGUgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpJZiB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gY2Fubm90IGJlIHJlcHJlc2VudGVkLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iTG9nIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgTG9nIG9wZXJhdG9yIGNvbXB1dGVzIHRoZSBsb2dhcml0aG0gb2YgaXRzIGZpcnN0IGFyZ3VtZW50LCB1c2luZyB0aGUgc2Vjb25kIGFyZ3VtZW50IGFzIHRoZSBiYXNlLg0KDQpJZiBlaXRoZXIgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpJZiB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gY2Fubm90IGJlIHJlcHJlc2VudGVkLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlBvd2VyIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgUG93ZXIgb3BlcmF0b3IgcmFpc2VzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgcG93ZXIgZ2l2ZW4gYnkgdGhlIHNlY29uZCBhcmd1bWVudC4NCg0KSWYgZWl0aGVyIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC4NCg0KSWYgdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uIGNhbm5vdCBiZSByZXByZXNlbnRlZCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJTdWNjZXNzb3IiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBTdWNjZXNzb3Igb3BlcmF0b3IgcmV0dXJucyB0aGUgc3VjY2Vzc29yIG9mIHRoZSBhcmd1bWVudC4gRm9yIGV4YW1wbGUsIHRoZSBzdWNjZXNzb3Igb2YgMSBpcyAyLiBJZiB0aGUgYXJndW1lbnQgaXMgYWxyZWFkeSB0aGUgbWF4aW11bSB2YWx1ZSBmb3IgdGhlIHR5cGUsIGEgcnVuLXRpbWUgZXJyb3IgaXMgdGhyb3duLg0KCQkJDQpUaGUgU3VjY2Vzc29yIG9wZXJhdG9yIGlzIGRlZmluZWQgZm9yIHRoZSBJbnRlZ2VyLCBEZWNpbWFsLCBEYXRlLCBEYXRlVGltZSwgYW5kIFRpbWUgdHlwZXMuDQoNCkZvciBJbnRlZ2VyLCBTdWNjZXNzb3IgaXMgZXF1aXZhbGVudCB0byBhZGRpbmcgMS4NCg0KRm9yIERlY2ltYWwsIFN1Y2Nlc3NvciBpcyBlcXVpdmFsZW50IHRvIGFkZGluZyB0aGUgbWluaW11bSBwcmVjaXNpb24gdmFsdWUgZm9yIHRoZSBEZWNpbWFsIHR5cGUsIG9yIDEwXi0wOC4NCg0KRm9yIERhdGUsIERhdGVUaW1lLCBhbmQgVGltZSB2YWx1ZXMsIFN1Y2Nlc3NvciBpcyBlcXVpdmFsZW50IHRvIGFkZGluZyBhIHRpbWUtdW5pdCBxdWFudGl0eSBmb3IgdGhlIGxvd2VzdCBzcGVjaWZpZWQgcHJlY2lzaW9uIG9mIHRoZSB2YWx1ZS4gRm9yIGV4YW1wbGUsIGlmIHRoZSBEYXRlVGltZSBpcyBmdWxseSBzcGVjaWZpZWQsIFN1Y2Nlc3NvciBpcyBlcXVpdmFsZW50IHRvIGFkZGluZyAxIG1pbGxpc2Vjb25kOyBpZiB0aGUgRGF0ZVRpbWUgaXMgc3BlY2lmaWVkIHRvIHRoZSBzZWNvbmQsIFN1Y2Nlc3NvciBpcyBlcXVpdmFsZW50IHRvIGFkZGluZyBvbmUgc2Vjb25kLCBldGMuDQoNCklmIHRoZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuDQoNCklmIHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBjYW5ub3QgYmUgcmVwcmVzZW50ZWQsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJQcmVkZWNlc3NvciI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFByZWRlY2Vzc29yIG9wZXJhdG9yIHJldHVybnMgdGhlIHByZWRlY2Vzc29yIG9mIHRoZSBhcmd1bWVudC4gRm9yIGV4YW1wbGUsIHRoZSBwcmVkZWNlc3NvciBvZiAyIGlzIDEuIElmIHRoZSBhcmd1bWVudCBpcyBhbHJlYWR5IHRoZSBtaW5pbXVtIHZhbHVlIGZvciB0aGUgdHlwZSwgYSBydW4tdGltZSBlcnJvciBpcyB0aHJvd24uDQoJCQkNClRoZSBQcmVkZWNlc3NvciBvcGVyYXRvciBpcyBkZWZpbmVkIGZvciB0aGUgSW50ZWdlciwgRGVjaW1hbCwgRGF0ZSwgRGF0ZVRpbWUsIGFuZCBUaW1lIHR5cGVzLg0KDQpGb3IgSW50ZWdlciwgUHJlZGVjZXNzb3IgaXMgZXF1aXZhbGVudCB0byBzdWJ0cmFjdGluZyAxLg0KDQpGb3IgRGVjaW1hbCwgUHJlZGVjZXNzb3IgaXMgZXF1aXZhbGVudCB0byBzdWJ0cmFjdGluZyB0aGUgbWluaW11bSBwcmVjaXNpb24gdmFsdWUgZm9yIHRoZSBEZWNpbWFsIHR5cGUsIG9yIDEwXi0wOC4NCg0KRm9yIERhdGUsIERhdGVUaW1lLCBhbmQgVGltZSB2YWx1ZXMsIFByZWRlY2Vzc29yIGlzIGVxdWl2YWxlbnQgdG8gc3VidHJhY3RpbmcgYSB0aW1lLXVuaXQgcXVhbnRpdHkgZm9yIHRoZSBsb3dlc3Qgc3BlY2lmaWVkIHByZWNpc2lvbiBvZiB0aGUgdmFsdWUuIEZvciBleGFtcGxlLCBpZiB0aGUgRGF0ZVRpbWUgaXMgZnVsbHkgc3BlY2lmaWVkLCBQcmVkZWNlc3NvciBpcyBlcXVpdmFsZW50IHRvIHN1YnRyYWN0aW5nIDEgbWlsbGlzZWNvbmQ7IGlmIHRoZSBEYXRlVGltZSBpcyBzcGVjaWZpZWQgdG8gdGhlIHNlY29uZCwgUHJlZGVjZXNzb3IgaXMgZXF1aXZhbGVudCB0byBzdWJ0cmFjdGluZyBvbmUgc2Vjb25kLCBldGMuDQoNCklmIHRoZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuDQoNCklmIHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBjYW5ub3QgYmUgcmVwcmVzZW50ZWQsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJNaW5WYWx1ZSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIE1pblZhbHVlIG9wZXJhdG9yIHJldHVybnMgdGhlIG1pbmltdW0gcmVwcmVzZW50YWJsZSB2YWx1ZSBmb3IgdGhlIGdpdmVuIHR5cGUuDQoNClRoZSBNaW5WYWx1ZSBvcGVyYXRvciBpcyBkZWZpbmVkIGZvciB0aGUgSW50ZWdlciwgRGVjaW1hbCwgRGF0ZSwgRGF0ZVRpbWUsIGFuZCBUaW1lIHR5cGVzLg0KDQpGb3IgSW50ZWdlciwgTWluVmFsdWUgcmV0dXJucyB0aGUgbWluaW11bSBzaWduZWQgMzItYml0IGludGVnZXIsIC0oMl4zMSkuDQoNCkZvciBEZWNpbWFsLCBNaW5WYWx1ZSByZXR1cm5zIHRoZSBtaW5pbXVtIHJlcHJlc2VudGFibGUgRGVjaW1hbCB2YWx1ZSwgKC0xMF4yOCArIDEpIC8gMTBeOCAoLTk5OTk5OTk5OTk5OTk5OTk5OTk5Ljk5OTk5OTk5KS4NCg0KRm9yIERhdGUsIE1pblZhbHVlIHJldHVybnMgdGhlIG1pbmltdW0gcmVwcmVzZW50YWJsZSBEYXRlIHZhbHVlLCBEYXRlKDEsIDEsIDEpLg0KDQpGb3IgRGF0ZVRpbWUsIE1pblZhbHVlIHJldHVybnMgdGhlIG1pbmltdW0gcmVwcmVzZW50YWJsZSBEYXRlVGltZSB2YWx1ZSwgRGF0ZVRpbWUoMSwgMSwgMSwgMCwgMCwgMCwgMCkuDQoNCkZvciBUaW1lLCBNaW5WYWx1ZSByZXR1cm5zIHRoZSBtaW5pbXVtIHJlcHJlc2VudGFibGUgVGltZSB2YWx1ZSwgVGltZSgwLCAwLCAwLCAwKS4NCg0KRm9yIGFueSBvdGhlciB0eXBlLCBhdHRlbXB0aW5nIHRvIGludm9rZSBNaW5WYWx1ZSByZXN1bHRzIGluIGFuIGVycm9yLg0KDQpOb3RlIHRoYXQgaW1wbGVtZW50YXRpb25zIG1heSBjaG9vc2UgdG8gcmVwcmVzZW50IHRoZSBtaW5pbXVtIERhdGVUaW1lIHZhbHVlIHVzaW5nIGEgY29uc3RhbnQgb2Zmc2V0IHN1Y2ggYXMgVVRDLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkV4cHJlc3Npb24iPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0idmFsdWVUeXBlIiB0eXBlPSJ4czpRTmFtZSIgdXNlPSJyZXF1aXJlZCIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iTWF4VmFsdWUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBNYXhWYWx1ZSBvcGVyYXRvciByZXR1cm5zIHRoZSBtYXhpbXVtIHJlcHJlc2VudGFibGUgdmFsdWUgZm9yIHRoZSBnaXZlbiB0eXBlLg0KCQkJDQpUaGUgTWF4VmFsdWUgb3BlcmF0b3IgaXMgZGVmaW5lZCBmb3IgdGhlIEludGVnZXIsIERlY2ltYWwsIERhdGUsIERhdGVUaW1lLCBhbmQgVGltZSB0eXBlcy4NCg0KRm9yIEludGVnZXIsIE1heFZhbHVlIHJldHVybnMgdGhlIG1heGltdW0gc2lnbmVkIDMyLWJpdCBpbnRlZ2VyLCAyXjMxIC0gMS4NCg0KRm9yIERlY2ltYWwsIE1heFZhbHVlIHJldHVybnMgdGhlIG1heGltdW0gcmVwcmVzZW50YWJsZSBEZWNpbWFsIHZhbHVlLCAoMTBeMjggLSAxKSAvIDEwXjggKDk5OTk5OTk5OTk5OTk5OTk5OTk5Ljk5OTk5OTk5KS4NCg0KRm9yIERhdGUsIE1heFZhbHVlIHJldHVybnMgdGhlIG1heGltdW0gcmVwcmVzZW50YWJsZSBEYXRlIHZhbHVlLCBEYXRlKDk5OTksIDEyLCAzMSkuDQoNCkZvciBEYXRlVGltZSwgTWF4VmFsdWUgcmV0dXJucyB0aGUgbWF4aW11bSByZXByZXNlbnRhYmxlIERhdGVUaW1lIHZhbHVlLCBEYXRlVGltZSg5OTk5LCAxMiwgMzEsIDIzLCA1OSwgNTksIDk5OSkuDQoNCkZvciBUaW1lLCBNYXhWYWx1ZSByZXR1cm5zIHRoZSBtYXhpbXVtIHJlcHJlc2VudGFibGUgVGltZSB2YWx1ZSwgVGltZSgyMywgNTksIDU5LCA5OTkpLg0KDQpGb3IgYW55IG90aGVyIHR5cGUsIGF0dGVtcHRpbmcgdG8gaW52b2tlIE1heFZhbHVlIHJlc3VsdHMgaW4gYW4gZXJyb3IuDQoNCk5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgbWF5IGNob29zZSB0byByZXByZXNlbnQgdGhlIG1heGltdW0gRGF0ZVRpbWUgdmFsdWUgdXNpbmcgYSBjb25zdGFudCBvZmZzZXQgc3VjaCBhcyBVVEMuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iRXhwcmVzc2lvbiI+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZVR5cGUiIHR5cGU9InhzOlFOYW1lIiB1c2U9InJlcXVpcmVkIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJQcmVjaXNpb24iPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBQcmVjaXNpb24gb3BlcmF0b3IgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiBwcmVjaXNpb24gaW4gdGhlIGlucHV0IHZhbHVlLg0KDQpUaGUgb3BlcmF0b3IgY2FuIGJlIHVzZWQgd2l0aCBEZWNpbWFsLCBEYXRlLCBEYXRlVGltZSwgYW5kIFRpbWUgdmFsdWVzLg0KDQpGb3IgRGVjaW1hbCB2YWx1ZXMsIHRoZSBvcGVyYXRvciByZXR1cm5zIHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIHByZWNpc2lvbiBhZnRlciB0aGUgZGVjaW1hbCBwbGFjZSBpbiB0aGUgaW5wdXQgdmFsdWUuDQoNClByZWNpc2lvbigxLjU4NzAwKSAvLyA1DQoNCkZvciBEYXRlIGFuZCBEYXRlVGltZSB2YWx1ZXMsIHRoZSBvcGVyYXRvciByZXR1cm5zIHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIHByZWNpc2lvbiBpbiB0aGUgaW5wdXQgdmFsdWUuDQoNClByZWNpc2lvbihAMjAxNCkgLy8gNA0KUHJlY2lzaW9uKEAyMDE0LTAxLTA1VDEwOjMwOjAwLjAwMCkgLy8gMTcNClByZWNpc2lvbihAVDEwOjMwKSAvLyA0DQpQcmVjaXNpb24oQFQxMDozMDowMC4wMDApIC8vIDkNCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJMb3dCb3VuZGFyeSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIExvd0JvdW5kYXJ5IG9wZXJhdG9yIHJldHVybnMgdGhlIGxlYXN0IHBvc3NpYmxlIHZhbHVlIG9mIHRoZSBpbnB1dCB0byB0aGUgc3BlY2lmaWVkIHByZWNpc2lvbi4NCgkJCQ0KSWYgbm8gcHJlY2lzaW9uIGlzIHNwZWNpZmllZCwgdGhlIGdyZWF0ZXN0IHByZWNpc2lvbiBvZiB0aGUgdHlwZSBvZiB0aGUgaW5wdXQgdmFsdWUgaXMgdXNlZCAoaS5lLiBhdCBsZWFzdCA4IGZvciBEZWNpbWFsLCA0IGZvciBEYXRlLCBhdCBsZWFzdCAxNyBmb3IgRGF0ZVRpbWUsIGFuZCBhdCBsZWFzdCA5IGZvciBUaW1lKS4NCg0KSWYgdGhlIHByZWNpc2lvbiBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gcG9zc2libGUgcHJlY2lzaW9uIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpUaGUgb3BlcmF0b3IgY2FuIGJlIHVzZWQgd2l0aCBEZWNpbWFsLCBEYXRlLCBEYXRlVGltZSwgYW5kIFRpbWUgdmFsdWVzLg0KDQpMb3dCb3VuZGFyeSgxLjU4NywgOCkgLy8gMS41ODcwMDAwMA0KTG93Qm91bmRhcnkoQDIwMTQsIDYpIC8vIEAyMDE0LTAxDQpMb3dCb3VuZGFyeShAMjAxNC0wMS0wMVQwOCwgMTcpIC8vIEAyMDE0LTAxLTAxVDA4OjAwOjAwLjAwMA0KTG93Qm91bmRhcnkoQFQxMDozMCwgOSkgLy8gQFQxMDozMDowMC4wMDANCg0KSWYgdGhlIGlucHV0IHZhbHVlIGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJCaW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iSGlnaEJvdW5kYXJ5Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgSGlnaEJvdW5kYXJ5IG9wZXJhdG9yIHJldHVybnMgdGhlIGdyZWF0ZXN0IHBvc3NpYmxlIHZhbHVlIG9mIHRoZSBpbnB1dCB0byB0aGUgc3BlY2lmaWVkIHByZWNpc2lvbi4NCgkJCQ0KSWYgbm8gcHJlY2lzaW9uIGlzIHNwZWNpZmllZCwgdGhlIGdyZWF0ZXN0IHByZWNpc2lvbiBvZiB0aGUgdHlwZSBvZiB0aGUgaW5wdXQgdmFsdWUgaXMgdXNlZCAoaS5lLiBhdCBsZWFzdCA4IGZvciBEZWNpbWFsLCA0IGZvciBEYXRlLCBhdCBsZWFzdCAxNyBmb3IgRGF0ZVRpbWUsIGFuZCBhdCBsZWFzdCA5IGZvciBUaW1lKS4NCg0KSWYgdGhlIHByZWNpc2lvbiBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gcG9zc2libGUgcHJlY2lzaW9uIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpUaGUgb3BlcmF0b3IgY2FuIGJlIHVzZWQgd2l0aCBEZWNpbWFsLCBEYXRlLCBEYXRlVGltZSwgYW5kIFRpbWUgdmFsdWVzLg0KDQpIaWdoQm91bmRhcnkoMS41ODcsIDgpIC8vIDEuNTg3OTk5OTkNCkhpZ2hCb3VuZGFyeShAMjAxNCwgNikgLy8gQDIwMTQtMTINCkhpZ2hCb3VuZGFyeShAMjAxNC0wMS0wMVQwOCwgMTcpIC8vIEAyMDE0LTAxLTAxVDA4OjU5OjU5Ljk5OQ0KSGlnaEJvdW5kYXJ5KEBUMTA6MzAsIDkpIC8vIEBUMTA6MzA6NTkuOTk5DQoNCklmIHRoZSBpbnB1dCB2YWx1ZSBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPCEtLSBTdHJpbmcgT3BlcmF0b3JzIC0tPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDb25jYXRlbmF0ZSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIENvbmNhdGVuYXRlIG9wZXJhdG9yIHBlcmZvcm1zIHN0cmluZyBjb25jYXRlbmF0aW9uIG9mIGl0cyBhcmd1bWVudHMuDQoNCklmIGFueSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iTmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDb21iaW5lIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQ29tYmluZSBvcGVyYXRvciBjb21iaW5lcyBhIGxpc3Qgb2Ygc3RyaW5ncywgb3B0aW9uYWxseSBzZXBhcmF0aW5nIGVhY2ggc3RyaW5nIHdpdGggdGhlIGdpdmVuIHNlcGFyYXRvci4NCg0KSWYgZWl0aGVyIGFyZ3VtZW50IGlzIG51bGwgdGhlIHJlc3VsdCBpcyBudWxsLiAgSWYgdGhlIHNvdXJjZSBsaXN0IGlzIGVtcHR5LCB0aGUgcmVzdWx0IGlzIGFuIGVtcHR5IHN0cmluZyAoJycpLg0KDQpGb3IgY29uc2lzdGVuY3kgd2l0aCBhZ2dyZWdhdGUgb3BlcmF0b3IgYmVoYXZpb3IsIG51bGwgZWxlbWVudHMgaW4gdGhlIGlucHV0IGxpc3QgYXJlIGlnbm9yZWQuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iT3BlcmF0b3JFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InNvdXJjZSIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ic2VwYXJhdG9yIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJTcGxpdCI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFNwbGl0IG9wZXJhdG9yIHNwbGl0cyBhIHN0cmluZyBpbnRvIGEgbGlzdCBvZiBzdHJpbmdzIHVzaW5nIGEgc2VwYXJhdG9yLg0KDQpJZiB0aGUgc3RyaW5nVG9TcGxpdCBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuDQoNCklmIHRoZSBzdHJpbmdUb1NwbGl0IGFyZ3VtZW50IGRvZXMgbm90IGNvbnRhaW4gYW55IGFwcGVhcmFuY2VzIG9mIHRoZSBzZXBhcmF0b3IsIHRoZSByZXN1bHQgaXMgYSBsaXN0IG9mIHN0cmluZ3MgY29udGFpbmluZyBvbmUgZWxlbWVudCB0aGF0IGlzIHRoZSB2YWx1ZSBvZiB0aGUgc3RyaW5nVG9TcGxpdCBhcmd1bWVudC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJPcGVyYXRvckV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ic3RyaW5nVG9TcGxpdCIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ic2VwYXJhdG9yIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJTcGxpdE9uTWF0Y2hlcyI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFNwbGl0T25NYXRjaGVzIG9wZXJhdG9yIHNwbGl0cyBhIHN0cmluZyBpbnRvIGEgbGlzdCBvZiBzdHJpbmdzIHVzaW5nIG1hdGNoZXMgb2YgYSByZWdleCBwYXR0ZXJuLg0KICAgICAgICANClRoZSBzZXBhcmF0b3JQYXR0ZXJuIGFyZ3VtZW50IGlzIGEgcmVnZXggcGF0dGVybiwgZm9sbG93aW5nIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgTWF0Y2hlcyBvcGVyYXRvci4NCg0KSWYgdGhlIHN0cmluZ1RvU3BsaXQgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpJZiB0aGUgc3RyaW5nVG9TcGxpdCBhcmd1bWVudCBkb2VzIG5vdCBjb250YWluIGFueSBhcHBlYXJhbmNlcyBvZiB0aGUgc2VwYXJhdG9yIHBhdHRlcm4sIHRoZSByZXN1bHQgaXMgYSBsaXN0IG9mIHN0cmluZ3MgY29udGFpbmluZyBvbmUgZWxlbWVudCB0aGF0IGlzIHRoZSBpbnB1dCB2YWx1ZSBvZiB0aGUgc3RyaW5nVG9TcGxpdCBhcmd1bWVudC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJPcGVyYXRvckV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ic3RyaW5nVG9TcGxpdCIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ic2VwYXJhdG9yUGF0dGVybiIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGVuZ3RoIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgTGVuZ3RoIG9wZXJhdG9yIHJldHVybnMgdGhlIGxlbmd0aCBvZiBpdHMgYXJndW1lbnQuDQoJCQkNCkZvciBzdHJpbmdzLCB0aGUgbGVuZ3RoIGlzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nLg0KDQpGb3IgbGlzdHMsIHRoZSBsZW5ndGggaXMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgbGlzdC4NCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgMC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJVcHBlciI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFVwcGVyIG9wZXJhdG9yIHJldHVybnMgdGhlIGdpdmVuIHN0cmluZyB3aXRoIGFsbCBjaGFyYWN0ZXJzIGNvbnZlcnRlZCB0byB0aGVpciB1cHBlciBjYXNlIGVxdWl2YWxlbnRzLg0KDQpOb3RlIHRoYXQgdGhlIGRlZmluaXRpb24gb2YgdXBwZXJjYXNlIGZvciBhIGdpdmVuIGNoYXJhY3RlciBpcyBhIGxvY2FsZS1kZXBlbmRlbnQgZGV0ZXJtaW5hdGlvbiwgYW5kIGlzIG5vdCBzcGVjaWZpZWQgYnkgQ1FMLiBJbXBsZW1lbnRhdGlvbnMgYXJlIGV4cGVjdGVkIHRvIHByb3ZpZGUgYXBwcm9wcmlhdGUgYW5kIGNvbnNpc3RlbnQgaGFuZGxpbmcgb2YgbG9jYWxlIGZvciB0aGVpciBlbnZpcm9ubWVudC4NCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJMb3dlciI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIExvd2VyIG9wZXJhdG9yIHJldHVybnMgdGhlIGdpdmVuIHN0cmluZyB3aXRoIGFsbCBjaGFyYWN0ZXJzIGNvbnZlcnRlZCB0byB0aGVpciBsb3dlcmNhc2UgZXF1aXZhbGVudHMuDQoNCk5vdGUgdGhhdCB0aGUgZGVmaW5pdGlvbiBvZiBsb3dlcmNhc2UgZm9yIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIGEgbG9jYWxlLWRlcGVuZGVudCBkZXRlcm1pbmF0aW9uLCBhbmQgaXMgbm90IHNwZWNpZmllZCBieSBDUUwuIEltcGxlbWVudGF0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gcHJvdmlkZSBhcHByb3ByaWF0ZSBhbmQgY29uc2lzdGVudCBoYW5kbGluZyBvZiBsb2NhbGUgZm9yIHRoZWlyIGVudmlyb25tZW50Lg0KDQpJZiB0aGUgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IlVuYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkluZGV4ZXIiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBJbmRleGVyIG9wZXJhdG9yIHJldHVybnMgdGhlIGluZGV4dGggZWxlbWVudCBpbiBhIHN0cmluZyBvciBsaXN0Lg0KCQkJDQpJbmRleGVzIGluIHN0cmluZ3MgYW5kIGxpc3RzIGFyZSBkZWZpbmVkIHRvIGJlIDAtYmFzZWQuDQoNCklmIHRoZSBpbmRleCBpcyBsZXNzIHRoYW4gMCBvciBncmVhdGVyIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIG9yIGxpc3QgYmVpbmcgaW5kZXhlZCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpJZiBlaXRoZXIgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJQb3NpdGlvbk9mIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgUG9zaXRpb25PZiBvcGVyYXRvciByZXR1cm5zIHRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZSBiZWdpbm5pbmcgZ2l2ZW4gcGF0dGVybiBpbiB0aGUgZ2l2ZW4gc3RyaW5nLg0KCQkJDQpJZiB0aGUgcGF0dGVybiBpcyBub3QgZm91bmQsIHRoZSByZXN1bHQgaXMgLTEuDQoNCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iT3BlcmF0b3JFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InBhdHRlcm4iIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InN0cmluZyIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGFzdFBvc2l0aW9uT2YiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBMYXN0UG9zaXRpb25PZiBvcGVyYXRvciByZXR1cm5zIHRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxhc3QgYXBwZWFyYW5jZSBvZiB0aGUgZ2l2ZW4gcGF0dGVybiBpbiB0aGUgZ2l2ZW4gc3RyaW5nLg0KCQkJDQpJZiB0aGUgcGF0dGVybiBpcyBub3QgZm91bmQsIHRoZSByZXN1bHQgaXMgLTEuDQoNCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iT3BlcmF0b3JFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InBhdHRlcm4iIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InN0cmluZyIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iU3Vic3RyaW5nIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgU3Vic3RyaW5nIG9wZXJhdG9yIHJldHVybnMgdGhlIHN0cmluZyB3aXRoaW4gc3RyaW5nVG9TdWIsIHN0YXJ0aW5nIGF0IHRoZSAwLWJhc2VkIGluZGV4IHN0YXJ0SW5kZXgsIGFuZCBjb25zaXN0aW5nIG9mIGxlbmd0aCBjaGFyYWN0ZXJzLg0KCQkJDQpJZiBsZW5ndGggaXMgb21taXR0ZWQsIHRoZSBzdWJzdHJpbmcgcmV0dXJuZWQgc3RhcnRzIGF0IHN0YXJ0SW5kZXggYW5kIGNvbnRpbnVlcyB0byB0aGUgZW5kIG9mIHN0cmluZ1RvU3ViLg0KDQpJZiBzdHJpbmdUb1N1YiBvciBzdGFydEluZGV4IGlzIG51bGwsIG9yIHN0YXJ0SW5kZXggaXMgb3V0IG9mIHJhbmdlLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iT3BlcmF0b3JFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InN0cmluZ1RvU3ViIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJzdGFydEluZGV4IiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJsZW5ndGgiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlN0YXJ0c1dpdGgiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBTdGFydHNXaXRoIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSBnaXZlbiBwcmVmaXguDQoJCSAgDQpJZiB0aGUgcHJlZml4IGlzIHRoZSBlbXB0eSBzdHJpbmcsIHRoZSByZXN1bHQgaXMgdHJ1ZS4NCiAgDQpJZiBlaXRoZXIgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJFbmRzV2l0aCI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEVuZHNXaXRoIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4Lg0KDQpJZiB0aGUgc3VmZml4IGlzIHRoZSBlbXB0eSBzdHJpbmcsIHRoZSByZXN1bHQgaXMgdHJ1ZS4NCiAgDQpJZiBlaXRoZXIgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJNYXRjaGVzIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgTWF0Y2hlcyBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHN0cmluZyBtYXRjaGVzIHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi4gUmVndWxhciBleHByZXNzaW9ucyBzaG91bGQgZnVuY3Rpb24gY29uc2lzdGVudGx5LCByZWdhcmRsZXNzIG9mIGFueSBjdWx0dXJlLSBhbmQgbG9jYWxlLXNwZWNpZmljIHNldHRpbmdzIGluIHRoZSBlbnZpcm9ubWVudCwgc2hvdWxkIGJlIGNhc2Utc2Vuc2l0aXZlLCB1c2Ugc2luZ2xlIGxpbmUgbW9kZSwgYW5kIGFsbG93IFVuaWNvZGUgY2hhcmFjdGVycy4NCgkJICAgDQpJZiBlaXRoZXIgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpQbGF0Zm9ybXMgd2lsbCB0eXBpY2FsbHkgdXNlIG5hdGl2ZSByZWd1bGFyIGV4cHJlc3Npb24gaW1wbGVtZW50YXRpb25zLiBUaGVzZSBhcmUgdHlwaWNhbGx5IGZhaXJseSBzaW1pbGFyLCBidXQgdGhlcmUgd2lsbCBhbHdheXMgYmUgc21hbGwgZGlmZmVyZW5jZXMuIEFzIHN1Y2gsIENRTCBkb2VzIG5vdCBwcmVzY3JpYmUgYSBwYXJ0aWN1bGFyIGRpYWxlY3QsIGJ1dCByZWNvbW1lbmRzIHRoZSB1c2Ugb2YgdGhlIFtQQ1JFXShodHRwOi8vd3d3LnBjcmUub3JnKSBkaWFsZWN0LjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJSZXBsYWNlTWF0Y2hlcyI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFJlcGxhY2VNYXRjaGVzIG9wZXJhdG9yIG1hdGNoZXMgdGhlIGdpdmVuIHN0cmluZyB1c2luZyB0aGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4sIHJlcGxhY2luZyBlYWNoIG1hdGNoIHdpdGggdGhlIGdpdmVuIHN1YnN0aXR1dGlvbi4gVGhlIHN1YnN0aXR1dGlvbiBzdHJpbmcgbWF5IHJlZmVyIHRvIGlkZW50aWZpZWQgbWF0Y2ggZ3JvdXBzIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24uIFJlZ3VsYXIgZXhwcmVzc2lvbnMgc2hvdWxkIGZ1bmN0aW9uIGNvbnNpc3RlbnRseSwgcmVnYXJkbGVzcyBvZiBhbnkgY3VsdHVyZS0gYW5kIGxvY2FsZS1zcGVjaWZpYyBzZXR0aW5ncyBpbiB0aGUgZW52aXJvbm1lbnQsIHNob3VsZCBiZSBjYXNlLXNlbnNpdGl2ZSwgdXNlIHNpbmdsZSBsaW5lIG1vZGUgYW5kIGFsbG93IFVuaWNvZGUgY2hhcmFjdGVycy4NCgkJICAgDQpJZiBhbnkgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpQbGF0Zm9ybXMgd2lsbCB0eXBpY2FsbHkgdXNlIG5hdGl2ZSByZWd1bGFyIGV4cHJlc3Npb24gaW1wbGVtZW50YXRpb25zLiBUaGVzZSBhcmUgdHlwaWNhbGx5IGZhaXJseSBzaW1pbGFyLCBidXQgdGhlcmUgd2lsbCBhbHdheXMgYmUgc21hbGwgZGlmZmVyZW5jZXMuIEFzIHN1Y2gsIENRTCBkb2VzIG5vdCBwcmVzY3JpYmUgYSBwYXJ0aWN1bGFyIGRpYWxlY3QsIGJ1dCByZWNvbW1lbmRzIHRoZSB1c2Ugb2YgdGhlIFtQQ1JFXShodHRwOi8vd3d3LnBjcmUub3JnKSBkaWFsZWN0LjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IlRlcm5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8IS0tIFRPRE86IFRyaW1taW5nLCBQYWRkaW5nLCBSZXBsaWNhdGluZywgSW5zZXJ0LCBJc0RpZ2l0LCBJc0xldHRlciwgSXNXaGl0ZXNwYWNlPyANCglUaGVzZSBvcGVyYXRvcnMgYXJlIG5vdCBwcmltaXRpdmUsIGJ1dCB0aGV5IGFyZSB2ZXJ5IHVzZWZ1bCBzaG9ydGhhbmRzLiBEbyB3ZSB3YW50IHRvIGxlYXZlIHRoZW0gb3V0IGZvciBub3c/IChDUkVGIGRvZXNuJ3QgYWN0dWFsbHkgaGF2ZSBhbnkgb2YgdGhlc2UsIGFuZCBoYXNuJ3QgbmVlZGVkIHRoZW0gc28gZmFyLi4uKQ0KCS0tPg0KCTwhLS0gVGVtcG9yYWwgT3BlcmF0b3JzIC0tPg0KCTx4czpzaW1wbGVUeXBlIG5hbWU9IkRhdGVUaW1lUHJlY2lzaW9uIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgRGF0ZVRpbWVQcmVjaXNpb24gdHlwZSBzcGVjaWZpZXMgdGhlIHVuaXRzIG9mIHByZWNpc2lvbiBhdmFpbGFibGUgZm9yIHRlbXBvcmFsIG9wZXJhdGlvbnMgc3VjaCBhcyBEdXJhdGlvbkJldHdlZW4sIFNhbWVBcywgU2FtZU9yQmVmb3JlLCBTYW1lT3JBZnRlciwgYW5kIERhdGVUaW1lQ29tcG9uZW50RnJvbS48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQoJCQk8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlllYXIiLz4NCgkJCTx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTW9udGgiLz4NCgkJCTx4czplbnVtZXJhdGlvbiB2YWx1ZT0iV2VlayIvPg0KCQkJPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEYXkiLz4NCgkJCTx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSG91ciIvPg0KCQkJPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJNaW51dGUiLz4NCgkJCTx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU2Vjb25kIi8+DQoJCQk8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik1pbGxpc2Vjb25kIi8+DQoJCTwveHM6cmVzdHJpY3Rpb24+DQoJPC94czpzaW1wbGVUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJEdXJhdGlvbkJldHdlZW4iPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBEdXJhdGlvbkJldHdlZW4gb3BlcmF0b3IgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHdob2xlIGNhbGVuZGFyIHBlcmlvZHMgZm9yIHRoZSBzcGVjaWZpZWQgcHJlY2lzaW9uIGJldHdlZW4gdGhlIGZpcnN0IGFuZCBzZWNvbmQgYXJndW1lbnRzLiBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYWZ0ZXIgdGhlIHNlY29uZCBhcmd1bWVudCwgdGhlIHJlc3VsdCBpcyBuZWdhdGl2ZS4gVGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbiBpcyBhbHdheXMgYW4gaW50ZWdlcjsgYW55IGZyYWN0aW9uYWwgcGVyaW9kcyBhcmUgZHJvcHBlZC4NCg0KRm9yIERhdGUgdmFsdWVzLCBwcmVjaXNpb24gbXVzdCBiZSBvbmUgb2YgWWVhciwgTW9udGgsIFdlZWssIG9yIERheS4JCQkNCg0KRm9yIFRpbWUgdmFsdWVzLCBwcmVjaXNpb24gbXVzdCBiZSBvbmUgb2YgSG91ciwgTWludXRlLCBTZWNvbmQsIG9yIE1pbGxpc2Vjb25kLg0KDQpGb3IgY2FsY3VsYXRpb25zIGludm9sdmluZyB3ZWVrcywgdGhlIGR1cmF0aW9uIG9mIGEgd2VlayBpcyBlcXVpdmFsZW50IHRvIDcgZGF5cy4NCgkJCQ0KV2hlbiBjYWxjdWxhdGluZyBkdXJhdGlvbiBiZXR3ZWVuIERhdGVUaW1lIHZhbHVlcyB3aXRoIGRpZmZlcmVudCB0aW1lem9uZSBvZmZzZXRzLCBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIG5vcm1hbGl6ZSB0byB0aGUgdGltZXpvbmUgb2Zmc2V0IG9mIHRoZSBldmFsdWF0aW9uIHJlcXVlc3QgdGltZXN0YW1wLCBidXQgb25seSB3aGVuIHRoZSBjb21wYXJpc29uIHByZWNpc2lvbiBpcyBob3VycywgbWludXRlcywgc2Vjb25kcywgb3IgbWlsbGlzZWNvbmRzLg0KDQpJZiBlaXRoZXIgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpOb3RlIHRoYXQgdGhpcyBvcGVyYXRvciBjYW4gYmUgaW1wbGVtZW50ZWQgdXNpbmcgVW5jZXJ0YWludHkgYXMgZGVzY3JpYmVkIGluIHRoZSBDUUwgc3BlY2lmaWNhdGlvbiwgQ2hhcHRlciA1LCBQcmVjaXNpb24tQmFzZWQgVGltaW5nLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0icHJlY2lzaW9uIiB0eXBlPSJEYXRlVGltZVByZWNpc2lvbiIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGlmZmVyZW5jZUJldHdlZW4iPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBEaWZmZXJlbmNlQmV0d2VlbiBvcGVyYXRvciByZXR1cm5zIHRoZSBudW1iZXIgb2YgYm91bmRhcmllcyBjcm9zc2VkIGZvciB0aGUgc3BlY2lmaWVkIHByZWNpc2lvbiBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgc2Vjb25kIGFyZ3VtZW50cy4gSWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFmdGVyIHRoZSBzZWNvbmQgYXJndW1lbnQsIHRoZSByZXN1bHQgaXMgbmVnYXRpdmUuIEJlY2F1c2UgdGhpcyBvcGVyYXRpb24gaXMgb25seSBjb3VudGluZyBib3VuZGFyaWVzIGNyb3NzZWQsIHRoZSByZXN1bHQgaXMgYWx3YXlzIGFuIGludGVnZXIuDQoJCQkNCkZvciBEYXRlIHZhbHVlcywgcHJlY2lzaW9uIG11c3QgYmUgb25lIG9mIFllYXIsIE1vbnRoLCBXZWVrLCBvciBEYXkuCQkJDQoNCkZvciBUaW1lIHZhbHVlcywgcHJlY2lzaW9uIG11c3QgYmUgb25lIG9mIEhvdXIsIE1pbnV0ZSwgU2Vjb25kLCBvciBNaWxsaXNlY29uZC4NCg0KRm9yIGNhbGN1bGF0aW9ucyBpbnZvbHZpbmcgd2Vla3MsIFN1bmRheSBpcyBjb25zaWRlcmVkIHRvIGJlIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgZm9yIHRoZSBwdXJwb3NlcyBvZiBkZXRlcm1pbmluZyBib3VuZGFyaWVzLg0KCQkJDQpXaGVuIGNhbGN1bGF0aW5nIGRpZmZlcmVuY2UgYmV0d2VlbiBEYXRlVGltZSB2YWx1ZXMgd2l0aCBkaWZmZXJlbnQgdGltZXpvbmUgb2Zmc2V0cywgaW1wbGVtZW50YXRpb25zIHNob3VsZCBub3JtYWxpemUgdG8gdGhlIHRpbWV6b25lIG9mZnNldCBvZiB0aGUgZXZhbHVhdGlvbiByZXF1ZXN0IHRpbWVzdGFtcCwgYnV0IG9ubHkgd2hlbiB0aGUgY29tcGFyaXNvbiBwcmVjaXNpb24gaXMgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG9yIG1pbGxpc2Vjb25kcy4NCg0KSWYgZWl0aGVyIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC4NCg0KTm90ZSB0aGF0IHRoaXMgb3BlcmF0b3IgY2FuIGJlIGltcGxlbWVudGVkIHVzaW5nIFVuY2VydGFpbnR5IGFzIGRlc2NyaWJlZCBpbiB0aGUgQ1FMIHNwZWNpZmljYXRpb24sIENoYXB0ZXIgNSwgUHJlY2lzaW9uLUJhc2VkIFRpbWluZy48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJCaW5hcnlFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InByZWNpc2lvbiIgdHlwZT0iRGF0ZVRpbWVQcmVjaXNpb24iLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRhdGVGcm9tIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgRGF0ZUZyb20gb3BlcmF0b3IgcmV0dXJucyB0aGUgZGF0ZSAod2l0aCBubyB0aW1lIGNvbXBvbmVudHMgc3BlY2lmaWVkKSBvZiB0aGUgYXJndW1lbnQuIA0KDQpJZiB0aGUgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IlVuYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRpbWVGcm9tIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgVGltZUZyb20gb3BlcmF0b3IgcmV0dXJucyB0aGUgVGltZSBvZiB0aGUgYXJndW1lbnQuDQoNCldoZW4gZXh0cmFjdGluZyB0aGUgdGltZSBmcm9tIGEgRGF0ZVRpbWUgdmFsdWUsIGltcGxlbWVudGF0aW9ucyBzaG91bGQgbm9ybWFsaXplIHRvIHRoZSB0aW1lem9uZSBvZmZzZXQgb2YgdGhlIGV2YWx1YXRpb24gcmVxdWVzdCB0aW1lc3RhbXAuDQoNCklmIHRoZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iVGltZXpvbmVPZmZzZXRGcm9tIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgVGltZXpvbmVPZmZzZXRGcm9tIG9wZXJhdG9yIHJldHVybnMgdGhlIHRpbWV6b25lIG9mZnNldCBvZiB0aGUgYXJndW1lbnQuDQoNCklmIHRoZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGF0ZVRpbWVDb21wb25lbnRGcm9tIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgRGF0ZVRpbWVDb21wb25lbnRGcm9tIG9wZXJhdG9yIHJldHVybnMgdGhlIHNwZWNpZmllZCBjb21wb25lbnQgb2YgdGhlIGFyZ3VtZW50Lg0KCQkJDQpJZiB0aGUgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpUaGUgcHJlY2lzaW9uIG11c3QgYmUgb25lIG9mIFllYXIsIE1vbnRoLCBEYXksIEhvdXIsIE1pbnV0ZSwgU2Vjb25kLCBvciBNaWxsaXNlY29uZC4gTm90ZSBzcGVjaWZpY2FsbHkgdGhhdCBzaW5jZSB0aGVyZSBpcyB2YXJpYWJpbGl0eSBob3cgd2Vla3MgYXJlIGNvdW50ZWQsIFdlZWsgcHJlY2lzaW9uIGlzIG5vdCBzdXBwb3J0ZWQsIGFuZCB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvci48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0icHJlY2lzaW9uIiB0eXBlPSJEYXRlVGltZVByZWNpc2lvbiIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iVGltZU9mRGF5Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgVGltZU9mRGF5IG9wZXJhdG9yIHJldHVybnMgdGhlIHRpbWUtb2YtZGF5IG9mIHRoZSBzdGFydCB0aW1lc3RhbXAgYXNzb2NpYXRlZCB3aXRoIHRoZSBldmFsdWF0aW9uIHJlcXVlc3QuIFNlZSB0aGUgTm93IG9wZXJhdG9yIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSByYXRpb25hbGUgZm9yIGRlZmluaW5nIHRoZSBUaW1lT2ZEYXkgb3BlcmF0b3IgaW4gdGhpcyB3YXkuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iT3BlcmF0b3JFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iVG9kYXkiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBUb2RheSBvcGVyYXRvciByZXR1cm5zIHRoZSBkYXRlICh3aXRoIG5vIHRpbWUgY29tcG9uZW50KSBvZiB0aGUgc3RhcnQgdGltZXN0YW1wIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZhbHVhdGlvbiByZXF1ZXN0LiBTZWUgdGhlIE5vdyBvcGVyYXRvciBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcmF0aW9uYWxlIGZvciBkZWZpbmluZyB0aGUgVG9kYXkgb3BlcmF0b3IgaW4gdGhpcyB3YXkuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iT3BlcmF0b3JFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iTm93Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgTm93IG9wZXJhdG9yIHJldHVybnMgdGhlIGRhdGUgYW5kIHRpbWUgb2YgdGhlIHN0YXJ0IHRpbWVzdGFtcCBhc3NvY2lhdGVkIHdpdGggdGhlIGV2YWx1YXRpb24gcmVxdWVzdC4gTm93IGlzIGRlZmluZWQgaW4gdGhpcyB3YXkgZm9yIHR3byByZWFzb25zOg0KMSkgVGhlIG9wZXJhdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgdmFsdWUgd2l0aGluIGFueSBnaXZlbiBldmFsdWF0aW9uLCBlbnN1cmluZyB0aGF0IHRoZSByZXN1bHQgb2YgYW4gZXhwcmVzc2lvbiBjb250YWluaW5nIE5vdyB3aWxsIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgcmVzdWx0Lg0KDQoyKSBUaGUgb3BlcmF0aW9uIHdpbGwgcmV0dXJuIHRoZSB0aW1lc3RhbXAgYXNzb2NpYXRlZCB3aXRoIHRoZSBldmFsdWF0aW9uIHJlcXVlc3QsIGFsbG93aW5nIHRoZSBldmFsdWF0aW9uIHRvIGJlIHBlcmZvcm1lZCB3aXRoIHRoZSBzYW1lIHRpbWV6b25lIG9mZnNldCBpbmZvcm1hdGlvbiBhcyB0aGUgZGF0YSBkZWxpdmVyZWQgd2l0aCB0aGUgZXZhbHVhdGlvbiByZXF1ZXN0LjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9Ik9wZXJhdG9yRXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRhdGUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBEYXRlIG9wZXJhdG9yIGNvbnN0cnVjdHMgYSBkYXRlIHZhbHVlIGZyb20gdGhlIGdpdmVuIGNvbXBvbmVudHMuDQoJCQkNCkF0IGxlYXN0IG9uZSBjb21wb25lbnQgbXVzdCBiZSBzcGVjaWZpZWQsIGFuZCBubyBjb21wb25lbnQgbWF5IGJlIHNwZWNpZmllZCBhdCBhIHByZWNpc2lvbiBiZWxvdyBhbiB1bnNwZWNpZmllZCBwcmVjaXNpb24uIEZvciBleGFtcGxlLCBtb250aCBtYXkgYmUgbnVsbCwgYnV0IGlmIGl0IGlzLCBkYXkgbXVzdCBiZSBudWxsIGFzIHdlbGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iT3BlcmF0b3JFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InllYXIiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9Im1vbnRoIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJkYXkiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRhdGVUaW1lIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgRGF0ZVRpbWUgb3BlcmF0b3IgY29uc3RydWN0cyBhIERhdGVUaW1lIHZhbHVlIGZyb20gdGhlIGdpdmVuIGNvbXBvbmVudHMuDQoJCQkNCkF0IGxlYXN0IG9uZSBjb21wb25lbnQgb3RoZXIgdGhhbiB0aW1lem9uZU9mZnNldCBtdXN0IGJlIHNwZWNpZmllZCwgYW5kIG5vIGNvbXBvbmVudCBtYXkgYmUgc3BlY2lmaWVkIGF0IGEgcHJlY2lzaW9uIGJlbG93IGFuIHVuc3BlY2lmaWVkIHByZWNpc2lvbi4gRm9yIGV4YW1wbGUsIGhvdXIgbWF5IGJlIG51bGwsIGJ1dCBpZiBpdCBpcywgbWludXRlLCBzZWNvbmQsIGFuZCBtaWxsaXNlY29uZCBtdXN0IGFsbCBiZSBudWxsIGFzIHdlbGwuDQoNCklmIHRpbWV6b25lT2Zmc2V0IGlzIG5vdCBzcGVjaWZpZWQsIGl0IGlzIGRlZmF1bHRlZCB0byB0aGUgdGltZXpvbmUgb2Zmc2V0IG9mIHRoZSBldmFsdWF0aW9uIHJlcXVlc3QuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iT3BlcmF0b3JFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InllYXIiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9Im1vbnRoIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJkYXkiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9ImhvdXIiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9Im1pbnV0ZSIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ic2Vjb25kIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJtaWxsaXNlY29uZCIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0idGltZXpvbmVPZmZzZXQiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRpbWUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBUaW1lIG9wZXJhdG9yIGNvbnN0cnVjdHMgYSB0aW1lIHZhbHVlIGZyb20gdGhlIGdpdmVuIGNvbXBvbmVudHMuDQoJCQkNCkF0IGxlYXN0IG9uZSBjb21wb25lbnQgbXVzdCBiZSBzcGVjaWZpZWQsIGFuZCBubyBjb21wb25lbnQgbWF5IGJlIHNwZWNpZmllZCBhdCBhIHByZWNpc2lvbiBiZWxvdyBhbiB1bnNwZWNpZmllZCBwcmVjaXNpb24uIEZvciBleGFtcGxlLCBtaW51dGUgbWF5IGJlIG51bGwsIGJ1dCBpZiBpdCBpcywgc2Vjb25kLCBhbmQgbWlsbGlzZWNvbmQgbXVzdCBhbGwgYmUgbnVsbCBhcyB3ZWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9Ik9wZXJhdG9yRXhwcmVzc2lvbiI+DQoJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJob3VyIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJtaW51dGUiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InNlY29uZCIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ibWlsbGlzZWNvbmQiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNhbWVBcyI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFNhbWVBcyBvcGVyYXRvciBpcyBkZWZpbmVkIGZvciBEYXRlLCBEYXRlVGltZSwgYW5kIFRpbWUgdmFsdWVzLCBhcyB3ZWxsIGFzIGludGVydmFscy4NCgkJCQ0KRm9yIHRoZSBJbnRlcnZhbCBvdmVybG9hZHMsIHRoZSBTYW1lQXMgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSBpbnRlcnZhbHMgc3RhcnQgYW5kIGVuZCBhdCB0aGUgc2FtZSB2YWx1ZSwgdXNpbmcgdGhlIHNlbWFudGljcyBkZXNjcmliZWQgaW4gdGhlIFN0YXJ0IGFuZCBFbmQgb3BlcmF0b3IgdG8gZGV0ZXJtaW5lIGludGVydmFsIGJvdW5kYXJpZXMuDQoNClRoZSBTYW1lQXMgb3BlcmF0b3IgY29tcGFyZXMgdHdvIERhdGUsIFRpbWUsIG9yIERhdGVUaW1lIHZhbHVlcyB0byB0aGUgc3BlY2lmaWVkIHByZWNpc2lvbiBmb3IgZXF1YWxpdHkuIEluZGl2aWR1YWwgY29tcG9uZW50IHZhbHVlcyBhcmUgY29tcGFyZWQgc3RhcnRpbmcgZnJvbSB0aGUgeWVhciBjb21wb25lbnQgZG93biB0byB0aGUgc3BlY2lmaWVkIHByZWNpc2lvbi4gSWYgYWxsIHZhbHVlcyBhcmUgc3BlY2lmaWVkIGFuZCBoYXZlIHRoZSBzYW1lIHZhbHVlIGZvciBlYWNoIGNvbXBvbmVudCwgdGhlbiB0aGUgcmVzdWx0IGlzIHRydWUuIElmIGEgY29tcGFyZWQgY29tcG9uZW50IGlzIHNwZWNpZmllZCBpbiBib3RoIGRhdGVzLCBidXQgdGhlIHZhbHVlcyBhcmUgbm90IHRoZSBzYW1lLCB0aGVuIHRoZSByZXN1bHQgaXMgZmFsc2UuIE90aGVyd2lzZSB0aGUgcmVzdWx0IGlzIG51bGwsIGFzIHRoZXJlIGlzIG5vdCBlbm91Z2ggaW5mb3JtYXRpb24gdG8gbWFrZSBhIGRldGVybWluYXRpb24uIA0KCQkJDQpJZiBubyBwcmVjaXNpb24gaXMgc3BlY2lmaWVkLCB0aGUgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgYmVnaW5uaW5nIHdpdGggeWVhcnMgKG9yIGhvdXJzIGZvciB0aW1lIHZhbHVlcykgYW5kIHByb2NlZWRpbmcgdG8gdGhlIGZpbmVzdCBwcmVjaXNpb24gc3BlY2lmaWVkIGluIGVpdGhlciBpbnB1dC4NCg0KRm9yIERhdGUgdmFsdWVzLCBwcmVjaXNpb24gbXVzdCBiZSBvbmUgb2YgeWVhciwgbW9udGgsIG9yIGRheS4NCg0KRm9yIERhdGVUaW1lIHZhbHVlcywgcHJlY2lzaW9uIG11c3QgYmUgb25lIG9mIHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBvciBtaWxsaXNlY29uZC4NCg0KRm9yIFRpbWUgdmFsdWVzLCBwcmVjaXNpb24gbXVzdCBiZSBvbmUgb2YgaG91ciwgbWludXRlLCBzZWNvbmQsIG9yIG1pbGxpc2Vjb25kLg0KDQpOb3RlIHNwZWNpZmljYWxseSB0aGF0IGR1ZSB0byB2YXJpYWJpbGl0eSBpbiB0aGUgd2F5IHdlZWsgbnVtYmVycyBhcmUgZGV0ZXJtaW5lZCwgY29tcGFyaXNvbnMgaW52b2x2aW5nIHdlZWtzIGFyZSBub3Qgc3VwcG9ydGVkLg0KDQpXaGVuIGNvbXBhcmluZyBEYXRlVGltZSB2YWx1ZXMgd2l0aCBkaWZmZXJlbnQgdGltZXpvbmUgb2Zmc2V0cywgaW1wbGVtZW50YXRpb25zIHNob3VsZCBub3JtYWxpemUgdG8gdGhlIHRpbWV6b25lIG9mZnNldCBvZiB0aGUgZXZhbHVhdGlvbiByZXF1ZXN0IHRpbWVzdGFtcCwgYnV0IG9ubHkgd2hlbiB0aGUgY29tcGFyaXNvbiBwcmVjaXNpb24gaXMgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG9yIG1pbGxpc2Vjb25kcy4NCg0KSWYgZWl0aGVyIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJCaW5hcnlFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InByZWNpc2lvbiIgdHlwZT0iRGF0ZVRpbWVQcmVjaXNpb24iIHVzZT0ib3B0aW9uYWwiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNhbWVPckJlZm9yZSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFNhbWVPckJlZm9yZSBvcGVyYXRvciBpcyBkZWZpbmVkIGZvciBEYXRlLCBEYXRlVGltZSwgYW5kIFRpbWUgdmFsdWVzLCBhcyB3ZWxsIGFzIGludGVydmFscy4NCg0KRm9yIHRoZSBJbnRlcnZhbCBvdmVybG9hZCwgdGhlIFNhbWVPckJlZm9yZSBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIGZpcnN0IGludGVydmFsIGVuZHMgb24gb3IgYmVmb3JlIHRoZSBzZWNvbmQgb25lIHN0YXJ0cy4gSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBlbmRpbmcgcG9pbnQgb2YgdGhlIGZpcnN0IGludGVydmFsIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIHNlY29uZCBpbnRlcnZhbCwgdXNpbmcgdGhlIHNlbWFudGljcyBkZXNjcmliZWQgaW4gdGhlIFN0YXJ0IGFuZCBFbmQgb3BlcmF0b3JzIHRvIGRldGVybWluZSBpbnRlcnZhbCBib3VuZGFyaWVzLg0KDQpUaGUgU2FtZU9yQmVmb3JlIG9wZXJhdG9yIGNvbXBhcmVzIHR3byBEYXRlLCBEYXRlVGltZSwgb3IgVGltZSB2YWx1ZXMgdG8gdGhlIHNwZWNpZmllZCBwcmVjaXNpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBzYW1lIG9yIGJlZm9yZSB0aGUgc2Vjb25kIGFyZ3VtZW50LiBUaGUgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgYnkgY29uc2lkZXJpbmcgZWFjaCBwcmVjaXNpb24gaW4gb3JkZXIsIGJlZ2lubmluZyB3aXRoIHllYXJzIChvciBob3VycyBmb3IgdGltZSB2YWx1ZXMpLiBJZiB0aGUgdmFsdWVzIGFyZSB0aGUgc2FtZSwgY29tcGFyaXNvbiBwcm9jZWVkcyB0byB0aGUgbmV4dCBwcmVjaXNpb247IGlmIHRoZSBmaXJzdCB2YWx1ZSBpcyBsZXNzIHRoYW4gdGhlIHNlY29uZCwgdGhlIHJlc3VsdCBpcyB0cnVlOyBpZiB0aGUgZmlyc3QgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBzZWNvbmQsIHRoZSByZXN1bHQgaXMgZmFsc2U7IGlmIGVpdGhlciBpbnB1dCBoYXMgbm8gdmFsdWUgZm9yIHRoZSBwcmVjaXNpb24sIHRoZSBjb21wYXJpc29uIHN0b3BzIGFuZCB0aGUgcmVzdWx0IGlzIG51bGw7IGlmIHRoZSBzcGVjaWZpZWQgcHJlY2lzaW9uIGhhcyBiZWVuIHJlYWNoZWQsIHRoZSBjb21wYXJpc29uIHN0b3BzIGFuZCB0aGUgcmVzdWx0IGlzIHRydWUuDQoNCklmIG5vIHByZWNpc2lvbiBpcyBzcGVjaWZpZWQsIHRoZSBjb21wYXJpc29uIGlzIHBlcmZvcm1lZCBiZWdpbm5pbmcgd2l0aCB5ZWFycyAob3IgaG91cnMgZm9yIHRpbWUgdmFsdWVzKSBhbmQgcHJvY2VlZGluZyB0byB0aGUgZmluZXN0IHByZWNpc2lvbiBzcGVjaWZpZWQgaW4gZWl0aGVyIGlucHV0Lg0KDQpGb3IgRGF0ZSB2YWx1ZXMsIHByZWNpc2lvbiBtdXN0IGJlIG9uZSBvZiB5ZWFyLCBtb250aCwgb3IgZGF5Lg0KDQpGb3IgRGF0ZVRpbWUgdmFsdWVzLCBwcmVjaXNpb24gbXVzdCBiZSBvbmUgb2YgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG9yIG1pbGxpc2Vjb25kLg0KDQpGb3IgVGltZSB2YWx1ZXMsIHByZWNpc2lvbiBtdXN0IGJlIG9uZSBvZiBob3VyLCBtaW51dGUsIHNlY29uZCwgb3IgbWlsbGlzZWNvbmQuDQoNCk5vdGUgc3BlY2lmaWNhbGx5IHRoYXQgZHVlIHRvIHZhcmlhYmlsaXR5IGluIHRoZSB3YXkgd2VlayBudW1iZXJzIGFyZSBkZXRlcm1pbmVkLCBjb21wYXJpc29ucyBpbnZvbHZpbmcgd2Vla3MgYXJlIG5vdCBzdXBwb3J0ZWQuDQoNCldoZW4gY29tcGFyaW5nIERhdGVUaW1lIHZhbHVlcyB3aXRoIGRpZmZlcmVudCB0aW1lem9uZSBvZmZzZXRzLCBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIG5vcm1hbGl6ZSB0byB0aGUgdGltZXpvbmUgb2Zmc2V0IG9mIHRoZSBldmFsdWF0aW9uIHJlcXVlc3QgdGltZXN0YW1wLCBidXQgb25seSB3aGVuIHRoZSBjb21wYXJpc29uIHByZWNpc2lvbiBpcyBob3VycywgbWludXRlcywgc2Vjb25kcywgb3IgbWlsbGlzZWNvbmRzLg0KDQpJZiBlaXRoZXIgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0icHJlY2lzaW9uIiB0eXBlPSJEYXRlVGltZVByZWNpc2lvbiIgdXNlPSJvcHRpb25hbCIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2FtZU9yQWZ0ZXIiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBTYW1lT3JBZnRlciBvcGVyYXRvciBpcyBkZWZpbmVkIGZvciBEYXRlLCBEYXRlVGltZSwgYW5kIFRpbWUgdmFsdWVzLCBhcyB3ZWxsIGFzIGludGVydmFscy4NCgkJCQ0KRm9yIHRoZSBJbnRlcnZhbCBvdmVybG9hZCwgdGhlIFNhbWVPckFmdGVyIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlyc3QgaW50ZXJ2YWwgc3RhcnRzIG9uIG9yIGFmdGVyIHRoZSBzZWNvbmQgb25lIGVuZHMuIEluIG90aGVyIHdvcmRzLCBpZiB0aGUgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIGZpcnN0IGludGVydmFsIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZW5kaW5nIHBvaW50IG9mIHRoZSBzZWNvbmQgaW50ZXJ2YWwsIHVzaW5nIHRoZSBzZW1hbnRpY3MgZGVzY3JpYmVkIGluIHRoZSBTdGFydCBhbmQgRW5kIG9wZXJhdG9ycyB0byBkZXRlcm1pbmUgaW50ZXJ2YWwgYm91bmRhcmllcy4NCg0KRm9yIHRoZSBEYXRlLCBEYXRlVGltZSwgYW5kIFRpbWUgb3ZlcmxvYWRzLCB0aGlzIG9wZXJhdG9yIGNvbXBhcmVzIHR3byBEYXRlLCBEYXRlVGltZSwgb3IgVGltZSB2YWx1ZXMgdG8gdGhlIHNwZWNpZmllZCBwcmVjaXNpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBzYW1lIG9yIGFmdGVyIHRoZSBzZWNvbmQgYXJndW1lbnQuIFRoZSBjb21wYXJpc29uIGlzIHBlcmZvcm1lZCBieSBjb25zaWRlcmluZyBlYWNoIHByZWNpc2lvbiBpbiBvcmRlciwgYmVnaW5uaW5nIHdpdGggeWVhcnMgKG9yIGhvdXJzIGZvciB0aW1lIHZhbHVlcykuIElmIHRoZSB2YWx1ZXMgYXJlIHRoZSBzYW1lLCBjb21wYXJpc29uIHByb2NlZWRzIHRvIHRoZSBuZXh0IHByZWNpc2lvbjsgaWYgdGhlIGZpcnN0IHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc2Vjb25kLCB0aGUgcmVzdWx0IGlzIHRydWU7IGlmIHRoZSBmaXJzdCB2YWx1ZSBpcyBsZXNzIHRoYW4gdGhlIHNlY29uZCwgdGhlIHJlc3VsdCBpcyBmYWxzZTsgaWYgZWl0aGVyIGlucHV0IGhhcyBubyB2YWx1ZSBmb3IgdGhlIHByZWNpc2lvbiwgdGhlIGNvbXBhcmlzb24gc3RvcHMgYW5kIHRoZSByZXN1bHQgaXMgbnVsbDsgaWYgdGhlIHNwZWNpZmllZCBwcmVjaXNpb24gaGFzIGJlZW4gcmVhY2hlZCwgdGhlIGNvbXBhcmlzb24gc3RvcHMgYW5kIHRoZSByZXN1bHQgaXMgdHJ1ZS4NCg0KSWYgbm8gcHJlY2lzaW9uIGlzIHNwZWNpZmllZCwgdGhlIGNvbXBhcmlzb24gaXMgcGVyZm9ybWVkIGJlZ2lubmluZyB3aXRoIHllYXJzIChvciBob3VycyBmb3IgdGltZSB2YWx1ZXMpIGFuZCBwcm9jZWVkaW5nIHRvIHRoZSBmaW5lc3QgcHJlY2lzaW9uIHNwZWNpZmllZCBpbiBlaXRoZXIgaW5wdXQuDQoNCkZvciBEYXRlIHZhbHVlcywgcHJlY2lzaW9uIG11c3QgYmUgb25lIG9mIHllYXIsIG1vbnRoLCBvciBkYXkuDQoNCkZvciBEYXRlVGltZSB2YWx1ZXMsIHByZWNpc2lvbiBtdXN0IGJlIG9uZSBvZiB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgb3IgbWlsbGlzZWNvbmQuDQoNCkZvciBUaW1lIHZhbHVlcywgcHJlY2lzaW9uIG11c3QgYmUgb25lIG9mIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBvciBtaWxsaXNlY29uZC4NCg0KTm90ZSBzcGVjaWZpY2FsbHkgdGhhdCBkdWUgdG8gdmFyaWFiaWxpdHkgaW4gdGhlIHdheSB3ZWVrIG51bWJlcnMgYXJlIGRldGVybWluZWQsIGNvbXBhcmlzb25zIGludm9sdmluZyB3ZWVrcyBhcmUgbm90IHN1cHBvcnRlZC4NCg0KV2hlbiBjb21wYXJpbmcgRGF0ZVRpbWUgdmFsdWVzIHdpdGggZGlmZmVyZW50IHRpbWV6b25lIG9mZnNldHMsIGltcGxlbWVudGF0aW9ucyBzaG91bGQgbm9ybWFsaXplIHRvIHRoZSB0aW1lem9uZSBvZmZzZXQgb2YgdGhlIGV2YWx1YXRpb24gcmVxdWVzdCB0aW1lc3RhbXAsIGJ1dCBvbmx5IHdoZW4gdGhlIGNvbXBhcmlzb24gcHJlY2lzaW9uIGlzIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBvciBtaWxsaXNlY29uZHMuDQoNCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiI+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcmVjaXNpb24iIHR5cGU9IkRhdGVUaW1lUHJlY2lzaW9uIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTwhLS0gSW50ZXJ2YWwgT3BlcmF0b3JzIC0tPg0KCTwhLS0gRXF1YWwgKGFscmVhZHkgZGVmaW5lZCkgLS0+DQoJPCEtLSBOb3RFcXVhbCAoYWxyZWFkeSBkZWZpbmVkKSAtLT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iUG9pbnRGcm9tIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgUG9pbnRGcm9tIGV4cHJlc3Npb24gZXh0cmFjdHMgdGhlIHNpbmdsZSBwb2ludCBmcm9tIHRoZSBzb3VyY2UgaW50ZXJ2YWwuIFRoZSBzb3VyY2UgaW50ZXJ2YWwgbXVzdCBiZSBhIHVuaXQgaW50ZXJ2YWwgKG1lYW5pbmcgYW4gaW50ZXJ2YWwgd2l0aCB0aGUgc2FtZSBzdGFydGluZyBhbmQgZW5kaW5nIGJvdW5kYXJ5KSwgb3RoZXJ3aXNlLCBhIHJ1bi10aW1lIGVycm9yIGlzIHRocm93bi4gSWYgdGhlIHNvdXJjZSBpbnRlcnZhbCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iV2lkdGgiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBXaWR0aCBvcGVyYXRvciByZXR1cm5zIHRoZSB3aWR0aCBvZiBhbiBpbnRlcnZhbC4gVGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdG9yIGlzIGVxdWl2YWxlbnQgdG8gaW52b2tpbmc6IEVuZChpKSAtIFN0YXJ0KGkpDQoJCQkNCk5vdGUgdGhhdCB0aGlzIG9wZXJhdG9yIGlzIG5vdCBkZWZpbmVkIGZvciBpbnRlcnZhbHMgb2YgdHlwZSBEYXRlLCBEYXRlVGltZSwgYW5kIFRpbWUuDQoNCklmIHRoZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJCTwhLS0gV2lkdGgoaSkgPSBFbmQoaSkgLSBTdGFydChpKSAtLT4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJTaXplIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgU2l6ZSBvcGVyYXRvciByZXR1cm5zIHRoZSBzaXplIG9mIGFuIGludGVydmFsLiANCg0KVGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdG9yIGlzIGVxdWl2YWxlbnQgdG8gaW52b2tpbmc6IEVuZChpKSAtIFN0YXJ0KGkpICsgcG9pbnQtc2l6ZSwgd2hlcmUgdGhlIHBvaW50LXNpemUgZm9yIHRoZSBwb2ludCB0eXBlIG9mIHRoZSBpbnRlcnZhbCBpcyBkZXRlcm1pbmVkIGJ5OiBTdWNjZXNzb3IoTWluaW11bV9UKSAtIE1pbmltdW1fVC4NCgkJCQ0KTm90ZSB0aGF0IHRoaXMgb3BlcmF0b3IgaXMgbm90IGRlZmluZWQgZm9yIGludGVydmFscyBvZiB0eXBlIERhdGUsIERhdGVUaW1lLCBhbmQgVGltZS4NCg0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgkJPCEtLSBTaXplKGkpID0gRW5kKGkpIC0gU3RhcnQoaSkgKyBwb2ludC1zaXplIC0tPg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlN0YXJ0Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgU3RhcnQgb3BlcmF0b3IgcmV0dXJucyB0aGUgc3RhcnRpbmcgcG9pbnQgb2YgYW4gaW50ZXJ2YWwuIA0KCQkJDQpJZiB0aGUgbG93IGJvdW5kYXJ5IG9mIHRoZSBpbnRlcnZhbCBpcyBvcGVuLCB0aGlzIG9wZXJhdG9yIHJldHVybnMgdGhlIFN1Y2Nlc3NvciBvZiB0aGUgbG93IHZhbHVlIG9mIHRoZSBpbnRlcnZhbC4gTm90ZSB0aGF0IGlmIHRoZSBsb3cgdmFsdWUgb2YgdGhlIGludGVydmFsIGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC4NCg0KSWYgdGhlIGxvdyBib3VuZGFyeSBvZiB0aGUgaW50ZXJ2YWwgaXMgY2xvc2VkIGFuZCB0aGUgbG93IHZhbHVlIG9mIHRoZSBpbnRlcnZhbCBpcyBub3QgbnVsbCwgdGhpcyBvcGVyYXRvciByZXR1cm5zIHRoZSBsb3cgdmFsdWUgb2YgdGhlIGludGVydmFsLiBPdGhlcndpc2UsIHRoZSByZXN1bHQgaXMgdGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIHBvaW50IHR5cGUgb2YgdGhlIGludGVydmFsLg0KDQpJZiB0aGUgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IlVuYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCQk8IS0tIFN0YXJ0KGkpID0gaWYgaS5sb3dDbG9zZWQgdGhlbiBDb2FsZXNjZShpLmxvdywgVC5NaW5pbXVtVmFsdWUoKSkgZWxzZSBTdWNjKGkubG93KSAtLT4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJFbmQiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBFbmQgb3BlcmF0b3IgcmV0dXJucyB0aGUgZW5kaW5nIHBvaW50IG9mIGFuIGludGVydmFsLg0KCQkJDQpJZiB0aGUgaGlnaCBib3VuZGFyeSBvZiB0aGUgaW50ZXJ2YWwgaXMgb3BlbiwgdGhpcyBvcGVyYXRvciByZXR1cm5zIHRoZSBQcmVkZWNlc3NvciBvZiB0aGUgaGlnaCB2YWx1ZSBvZiB0aGUgaW50ZXJ2YWwuIE5vdGUgdGhhdCBpZiB0aGUgaGlnaCB2YWx1ZSBvZiB0aGUgaW50ZXJ2YWwgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpJZiB0aGUgaGlnaCBib3VuZGFyeSBvZiB0aGUgaW50ZXJ2YWwgaXMgY2xvc2VkIGFuZCB0aGUgaGlnaCB2YWx1ZSBvZiB0aGUgaW50ZXJ2YWwgaXMgbm90IG51bGwsIHRoaXMgb3BlcmF0b3IgcmV0dXJucyB0aGUgaGlnaCB2YWx1ZSBvZiB0aGUgaW50ZXJ2YWwuIE90aGVyd2lzZSwgdGhlIHJlc3VsdCBpcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgcG9pbnQgdHlwZSBvZiB0aGUgaW50ZXJ2YWwuDQoNCklmIHRoZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iVW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJCTwhLS0gRW5kKGkpID0gaWYgaGlnaENsb3NlZCB0aGVuIENvYWxlc2NlKGkuaGlnaCwgVC5NYXhpbXVtVmFsdWUoKSkgZWxzZSBQcmVkZWNlc3NvcihpLmhpZ2gpIC0tPg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNvbnRhaW5zIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQ29udGFpbnMgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSBmaXJzdCBvcGVyYW5kIGNvbnRhaW5zIHRoZSBzZWNvbmQuDQoJCQkNClRoZXJlIGFyZSB0d28gb3ZlcmxvYWRzIG9mIHRoaXMgb3BlcmF0b3I6DQoJTGlzdCwgVCA6IFRoZSB0eXBlIG9mIFQgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgZWxlbWVudCB0eXBlIG9mIHRoZSBsaXN0Lg0KCUludGVydmFsLCBUIDogVGhlIHR5cGUgb2YgVCBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBwb2ludCB0eXBlIG9mIHRoZSBpbnRlcnZhbC4NCgkNCkZvciB0aGUgTGlzdCwgVCBvdmVybG9hZCwgdGhpcyBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGVsZW1lbnQgaXMgaW4gdGhlIGxpc3QsIHVzaW5nIGVxdWFsaXR5IHNlbWFudGljcy4NCg0KRm9yIHRoZSBJbnRlcnZhbCwgVCBvdmVybG9hZCwgdGhpcyBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHBvaW50IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIGludGVydmFsLCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBlbmRpbmcgcG9pbnQgb2YgdGhlIGludGVydmFsLiBGb3Igb3BlbiBpbnRlcnZhbCBib3VuZGFyaWVzLCBleGNsdXNpdmUgY29tcGFyaXNvbiBvcGVyYXRvcnMgYXJlIHVzZWQuIEZvciBjbG9zZWQgaW50ZXJ2YWwgYm91bmRhcmllcywgaWYgdGhlIGludGVydmFsIGJvdW5kYXJ5IGlzIG51bGwsIHRoZSByZXN1bHQgb2YgdGhlIGJvdW5kYXJ5IGNvbXBhcmlzb24gaXMgY29uc2lkZXJlZCB0cnVlLiBJZiBwcmVjaXNpb24gaXMgc3BlY2lmaWVkIGFuZCB0aGUgcG9pbnQgdHlwZSBpcyBhIERhdGUsIERhdGVUaW1lLCBvciBUaW1lIHR5cGUsIGNvbXBhcmlzb25zIHVzZWQgaW4gdGhlIG9wZXJhdGlvbiBhcmUgcGVyZm9ybWVkIGF0IHRoZSBzcGVjaWZpZWQgcHJlY2lzaW9uLg0KDQpJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBmYWxzZS4gSWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiI+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcmVjaXNpb24iIHR5cGU9IkRhdGVUaW1lUHJlY2lzaW9uIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgkJPCEtLSBDb250YWlucyhpLCBwKSA9IChpZiBsb3dDbG9zZWQgdGhlbiBwID49IENvYWxlc2NlKGkubG93LCBwKSBlbHNlIHAgPiBpLmxvdykgYW5kIChpZiBoaWdoQ2xvc2VkIHRoZW4gcCA8PSBDb2FsZXNjZShpLmhpZ2gsIHApIGVsc2UgcCA8IGkuaGlnaCkgLS0+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iUHJvcGVyQ29udGFpbnMiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBQcm9wZXJDb250YWlucyBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIGZpcnN0IG9wZXJhbmQgcHJvcGVybHkgY29udGFpbnMgdGhlIHNlY29uZC4NCg0KVGhlcmUgYXJlIHR3byBvdmVybG9hZHMgb2YgdGhpcyBvcGVyYXRvcjoNCglMaXN0LCBUOiBUaGUgdHlwZSBvZiBUIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIGVsZW1lbnQgdHlwZSBvZiB0aGUgbGlzdC4NCglJbnRlcnZhbCwgVCA6IFRoZSB0eXBlIG9mIFQgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgcG9pbnQgdHlwZSBvZiB0aGUgaW50ZXJ2YWwuDQoJDQpGb3IgdGhlIExpc3QsIFQgb3ZlcmxvYWQsIHRoaXMgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBlbGVtZW50IGlzIGluIHRoZSBsaXN0LCBhbmQgaXQgaXMgbm90IHRoZSBvbmx5IGVsZW1lbnQgaW4gdGhlIGxpc3QsIHVzaW5nIGVxdWFsaXR5IHNlbWFudGljcy4NCg0KRm9yIHRoZSBJbnRlcnZhbCwgVCBvdmVybG9hZCwgdGhpcyBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHBvaW50IGlzIGdyZWF0ZXIgdGhhbiB0aGUgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIGludGVydmFsLCBhbmQgbGVzcyB0aGFuIHRoZSBlbmRpbmcgcG9pbnQgb2YgdGhlIGludGVydmFsLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBTdGFydCBhbmQgRW5kIG9wZXJhdG9ycy4gIElmIHByZWNpc2lvbiBpcyBzcGVjaWZpZWQgYW5kIHRoZSBwb2ludCB0eXBlIGlzIGEgRGF0ZSwgRGF0ZVRpbWUsIG9yIFRpbWUgdHlwZSwgY29tcGFyaXNvbnMgdXNlZCBpbiB0aGUgb3BlcmF0aW9uIGFyZSBwZXJmb3JtZWQgYXQgdGhlIHNwZWNpZmllZCBwcmVjaXNpb24uDQoNCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiI+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcmVjaXNpb24iIHR5cGU9IkRhdGVUaW1lUHJlY2lzaW9uIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgkJPCEtLSBQcm9wZXJDb250YWlucyhpLCBwKSA9IHAgPiBTdGFydChpKSBhbmQgcCA8IEVuZChpKSAtLT4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJJbiI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEluIG9wZXJhdG9yIHRlc3RzIGZvciBtZW1iZXJzaGlwIGluIGFuIGludGVydmFsIG9yIGxpc3QuDQoJCQkNClRoZXJlIGFyZSB0d28gb3ZlcmxvYWRzIG9mIHRoaXMgb3BlcmF0b3I6DQoJVCwgTGlzdCA6IFRoZSB0eXBlIG9mIFQgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgZWxlbWVudCB0eXBlIG9mIHRoZSBsaXN0Lg0KCVQsIEludGVydmFsIDogVGhlIHR5cGUgb2YgVCBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBwb2ludCB0eXBlIG9mIHRoZSBpbnRlcnZhbC4NCgkNCkZvciB0aGUgVCwgTGlzdCBvdmVybG9hZCwgdGhpcyBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGVsZW1lbnQgaXMgaW4gdGhlIGdpdmVuIGxpc3QsIHVzaW5nIGVxdWFsaXR5IHNlbWFudGljcy4NCg0KRm9yIHRoZSBULCBJbnRlcnZhbCBvdmVybG9hZCwgdGhpcyBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHBvaW50IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIGludGVydmFsLCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBlbmRpbmcgcG9pbnQgb2YgdGhlIGludGVydmFsLiBGb3Igb3BlbiBpbnRlcnZhbCBib3VuZGFyaWVzLCBleGNsdXNpdmUgY29tcGFyaXNvbiBvcGVyYXRvcnMgYXJlIHVzZWQuIEZvciBjbG9zZWQgaW50ZXJ2YWwgYm91bmRhcmllcywgaWYgdGhlIGludGVydmFsIGJvdW5kYXJ5IGlzIG51bGwsIHRoZSByZXN1bHQgb2YgdGhlIGJvdW5kYXJ5IGNvbXBhcmlzb24gaXMgY29uc2lkZXJlZCB0cnVlLiBJZiBwcmVjaXNpb24gaXMgc3BlY2lmaWVkIGFuZCB0aGUgcG9pbnQgdHlwZSBpcyBhIERhdGUsIERhdGVUaW1lLCBvciBUaW1lIHR5cGUsIGNvbXBhcmlzb25zIHVzZWQgaW4gdGhlIG9wZXJhdGlvbiBhcmUgcGVyZm9ybWVkIGF0IHRoZSBzcGVjaWZpZWQgcHJlY2lzaW9uLg0KDQpJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLiBJZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG51bGwgdGhlIHJlc3VsdCBpcyBmYWxzZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJCaW5hcnlFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InByZWNpc2lvbiIgdHlwZT0iRGF0ZVRpbWVQcmVjaXNpb24iIHVzZT0ib3B0aW9uYWwiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCQk8IS0tIEluKHAsIGkpID0gKGlmIGxvd0Nsb3NlZCB0aGVuIHAgPj0gQ29hbGVzY2UoaS5sb3csIHApIGVsc2UgcCA+IGkubG93KSBhbmQgKGlmIGhpZ2hDbG9zZWQgdGhlbiBwIDw9IENvYWxlc2NlKGkuaGlnaCwgcCkgZWxzZSBwIDwgaS5oaWdoKSAtLT4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJQcm9wZXJJbiI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFByb3BlckluIG9wZXJhdG9yIHRlc3RzIGZvciBwcm9wZXIgbWVtYmVyc2hpcCBpbiBhbiBpbnRlcnZhbCBvciBsaXN0Lg0KCQkJDQpUaGVyZSBhcmUgdHdvIG92ZXJsb2FkcyBvZiB0aGlzIG9wZXJhdG9yOg0KCVQsIExpc3QgOiBUaGUgdHlwZSBvZiBUIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIGVsZW1lbnQgdHlwZSBvZiB0aGUgbGlzdC4NCglULCBJbnRlcnZhbCA6IFRoZSB0eXBlIG9mIFQgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgcG9pbnQgdHlwZSBvZiB0aGUgaW50ZXJ2YWwuDQoJDQpGb3IgdGhlIFQsIExpc3Qgb3ZlcmxvYWQsIHRoaXMgb3BlcmF0b3IgcmV0dXJucyBpZiB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBpbiB0aGUgZ2l2ZW4gbGlzdCwgYW5kIGl0IGlzIG5vdCB0aGUgb25seSBlbGVtZW50IGluIHRoZSBsaXN0LCB1c2luZyBlcXVhbGl0eSBzZW1hbnRpY3MuDQoNCkZvciB0aGUgVCwgSW50ZXJ2YWwgb3ZlcmxvYWQsIHRoaXMgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBwb2ludCBpcyBncmVhdGVyIHRoYW4gdGhlIHN0YXJ0aW5nIHBvaW50LCBhbmQgbGVzcyB0aGFuIHRoZSBlbmRpbmcgcG9pbnQgb2YgdGhlIGludGVydmFsLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBTdGFydCBhbmQgRW5kIG9wZXJhdG9ycy4gSWYgcHJlY2lzaW9uIGlzIHNwZWNpZmllZCBhbmQgdGhlIHBvaW50IHR5cGUgaXMgYSBEYXRlLCBEYXRlVGltZSwgb3IgVGltZSB0eXBlLCBjb21wYXJpc29ucyB1c2VkIGluIHRoZSBvcGVyYXRpb24gYXJlIHBlcmZvcm1lZCBhdCB0aGUgc3BlY2lmaWVkIHByZWNpc2lvbi4NCg0KSWYgZWl0aGVyIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJCaW5hcnlFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InByZWNpc2lvbiIgdHlwZT0iRGF0ZVRpbWVQcmVjaXNpb24iIHVzZT0ib3B0aW9uYWwiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCQk8IS0tIFByb3BlckluKHAsIGkpID0gcCA+IFN0YXJ0KGkpIGFuZCBwIDwgRW5kKGkpIC0tPg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkluY2x1ZGVzIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgSW5jbHVkZXMgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSBmaXJzdCBvcGVyYW5kIGNvbXBsZXRlbHkgaW5jbHVkZXMgdGhlIHNlY29uZC4NCgkJCQ0KVGhlcmUgYXJlIHR3byBvdmVybG9hZHMgb2YgdGhpcyBvcGVyYXRvcjoNCglMaXN0LCBMaXN0IDogVGhlIGVsZW1lbnQgdHlwZSBvZiBib3RoIGxpc3RzIG11c3QgYmUgdGhlIHNhbWUuDQoJSW50ZXJ2YWwsIEludGVydmFsIDogVGhlIHBvaW50IHR5cGUgb2YgYm90aCBpbnRlcnZhbHMgbXVzdCBiZSB0aGUgc2FtZS4NCg0KRm9yIHRoZSBMaXN0LCBMaXN0IG92ZXJsb2FkLCB0aGlzIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlyc3Qgb3BlcmFuZCBpbmNsdWRlcyBldmVyeSBlbGVtZW50IG9mIHRoZSBzZWNvbmQgb3BlcmFuZCwgdXNpbmcgZXF1YWxpdHkgc2VtYW50aWNzLg0KDQpGb3IgdGhlIEludGVydmFsLCBJbnRlcnZhbCBvdmVybG9hZCwgdGhpcyBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIGZpcnN0IGludGVydmFsIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIHNlY29uZCBpbnRlcnZhbCwgYW5kIHRoZSBlbmRpbmcgcG9pbnQgb2YgdGhlIGZpcnN0IGludGVydmFsIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZW5kaW5nIHBvaW50IG9mIHRoZSBzZWNvbmQgaW50ZXJ2YWwuIElmIHByZWNpc2lvbiBpcyBzcGVjaWZpZWQgYW5kIHRoZSBwb2ludCB0eXBlIGlzIGEgRGF0ZSwgRGF0ZVRpbWUsIG9yIFRpbWUgdHlwZSwgY29tcGFyaXNvbnMgdXNlZCBpbiB0aGUgb3BlcmF0aW9uIGFyZSBwZXJmb3JtZWQgYXQgdGhlIHNwZWNpZmllZCBwcmVjaXNpb24uDQoNClRoaXMgb3BlcmF0b3IgdXNlcyB0aGUgc2VtYW50aWNzIGRlc2NyaWJlZCBpbiB0aGUgU3RhcnQgYW5kIEVuZCBvcGVyYXRvcnMgdG8gZGV0ZXJtaW5lIGludGVydmFsIGJvdW5kYXJpZXMuDQoNCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuIDwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0icHJlY2lzaW9uIiB0eXBlPSJEYXRlVGltZVByZWNpc2lvbiIgdXNlPSJvcHRpb25hbCIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJCTwhLS0gSW5jbHVkZXMoaTEsIGkyKSA9IFN0YXJ0KGkxKSA8PSBTdGFydChpMikgYW5kIEVuZChpMSkgPj0gRW5kKGkyKSAtLT4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJJbmNsdWRlZEluIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgSW5jbHVkZWRJbiBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIGZpcnN0IG9wZXJhbmQgaXMgY29tcGxldGVseSBpbmNsdWRlZCBpbiB0aGUgc2Vjb25kLg0KDQpUaGVyZSBhcmUgdHdvIG92ZXJsb2FkcyBvZiB0aGlzIG9wZXJhdG9yOg0KCUxpc3QsIExpc3QgOiBUaGUgZWxlbWVudCB0eXBlIG9mIGJvdGggbGlzdHMgbXVzdCBiZSB0aGUgc2FtZS4NCglJbnRlcnZhbCwgSW50ZXJ2YWwgOiBUaGUgcG9pbnQgdHlwZSBvZiBib3RoIGludGVydmFscyBtdXN0IGJlIHRoZSBzYW1lLg0KCQ0KRm9yIHRoZSBMaXN0LCBMaXN0IG92ZXJsb2FkLCB0aGlzIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiBldmVyeSBlbGVtZW50IGluIHRoZSBmaXJzdCBsaXN0IGlzIGluY2x1ZGVkIGluIHRoZSBzZWNvbmQgbGlzdCwgdXNpbmcgZXF1YWxpdHkgc2VtYW50aWNzLg0KDQpGb3IgdGhlIEludGVydmFsLCBJbnRlcnZhbCBvdmVybG9hZCwgdGhpcyBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIHN0YXJ0aW5nIHBvaW50IG9mIHRoZSBmaXJzdCBpbnRlcnZhbCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHN0YXJ0aW5nIHBvaW50IG9mIHRoZSBzZWNvbmQgaW50ZXJ2YWwsIGFuZCB0aGUgZW5kaW5nIHBvaW50IG9mIHRoZSBmaXJzdCBpbnRlcnZhbCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGVuZGluZyBwb2ludCBvZiB0aGUgc2Vjb25kIGludGVydmFsLiBJZiBwcmVjaXNpb24gaXMgc3BlY2lmaWVkIGFuZCB0aGUgcG9pbnQgdHlwZSBpcyBhIERhdGUsIERhdGVUaW1lLCBvciBUaW1lIHR5cGUsIGNvbXBhcmlzb25zIHVzZWQgaW4gdGhlIG9wZXJhdGlvbiBhcmUgcGVyZm9ybWVkIGF0IHRoZSBzcGVjaWZpZWQgcHJlY2lzaW9uLg0KDQpUaGlzIG9wZXJhdG9yIHVzZXMgdGhlIHNlbWFudGljcyBkZXNjcmliZWQgaW4gdGhlIFN0YXJ0IGFuZCBFbmQgb3BlcmF0b3JzIHRvIGRldGVybWluZSBpbnRlcnZhbCBib3VuZGFyaWVzLg0KDQpJZiBlaXRoZXIgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0icHJlY2lzaW9uIiB0eXBlPSJEYXRlVGltZVByZWNpc2lvbiIgdXNlPSJvcHRpb25hbCIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJCTwhLS0gSW5jbHVkZWRJbihpMSwgaTIpID0gU3RhcnQoaTEpID49IFN0YXJ0KGkyKSBhbmQgRW5kKGkxKSA8PSBFbmQoaTIpIC0tPg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlByb3BlckluY2x1ZGVzIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgUHJvcGVySW5jbHVkZXMgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSBmaXJzdCBvcGVyYW5kIGluY2x1ZGVzIHRoZSBzZWNvbmQsIGFuZCBpcyBzdHJpY3RseSBsYXJnZXIuDQoJCQkNClRoZXJlIGFyZSB0d28gb3ZlcmxvYWRzIG9mIHRoaXMgb3BlcmF0b3I6DQoJTGlzdCwgTGlzdCA6IFRoZSBlbGVtZW50IHR5cGUgb2YgYm90aCBsaXN0cyBtdXN0IGJlIHRoZSBzYW1lLg0KCUludGVydmFsLCBJbnRlcnZhbCA6IFRoZSBwb2ludCB0eXBlIG9mIGJvdGggaW50ZXJ2YWxzIG11c3QgYmUgdGhlIHNhbWUuDQoJDQpGb3IgdGhlIExpc3QsIExpc3Qgb3ZlcmxvYWQsIHRoaXMgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSBmaXJzdCBsaXN0IGluY2x1ZGVzIGV2ZXJ5IGVsZW1lbnQgb2YgdGhlIHNlY29uZCBsaXN0LCB1c2luZyBlcXVhbGl0eSBzZW1hbnRpY3MsIGFuZCB0aGUgZmlyc3QgbGlzdCBpcyBzdHJpY3RseSBsYXJnZXIuDQoNCkZvciB0aGUgSW50ZXJ2YWwsIEludGVydmFsIG92ZXJsb2FkLCB0aGlzIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlyc3QgaW50ZXJ2YWwgaW5jbHVkZXMgdGhlIHNlY29uZCBpbnRlcnZhbCwgYW5kIHRoZSBpbnRlcnZhbHMgYXJlIG5vdCBlcXVhbC4gSWYgcHJlY2lzaW9uIGlzIHNwZWNpZmllZCBhbmQgdGhlIHBvaW50IHR5cGUgaXMgYSBEYXRlLCBEYXRlVGltZSwgb3IgVGltZSB0eXBlLCBjb21wYXJpc29ucyB1c2VkIGluIHRoZSBvcGVyYXRpb24gYXJlIHBlcmZvcm1lZCBhdCB0aGUgc3BlY2lmaWVkIHByZWNpc2lvbi4NCg0KVGhpcyBvcGVyYXRvciB1c2VzIHRoZSBzZW1hbnRpY3MgZGVzY3JpYmVkIGluIHRoZSBTdGFydCBhbmQgRW5kIG9wZXJhdG9ycyB0byBkZXRlcm1pbmUgaW50ZXJ2YWwgYm91bmRhcmllcy4NCg0KSWYgZWl0aGVyIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJCaW5hcnlFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InByZWNpc2lvbiIgdHlwZT0iRGF0ZVRpbWVQcmVjaXNpb24iIHVzZT0ib3B0aW9uYWwiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCQk8IS0tIFByb3BlckluY2x1ZGVzKGkxLCBpMikgPSBJbmNsdWRlcyhpMSwgaTIpIGFuZCBpMSA8PiBpMiAtLT4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJQcm9wZXJJbmNsdWRlZEluIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgUHJvcGVySW5jbHVkZWRJbiBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIGZpcnN0IG9wZXJhbmQgaXMgaW5jbHVkZWQgaW4gdGhlIHNlY29uZCwgYW5kIGlzIHN0cmljdGx5IHNtYWxsZXIuDQoJCQkNClRoZXJlIGFyZSB0d28gb3ZlcmxvYWRzIG9mIHRoaXMgb3BlcmF0b3I6DQoJTGlzdCwgTGlzdCA6IFRoZSBlbGVtZW50IHR5cGUgb2YgYm90aCBsaXN0cyBtdXN0IGJlIHRoZSBzYW1lLg0KCUludGVydmFsLCBJbnRlcnZhbCA6IFRoZSBwb2ludCB0eXBlIG9mIGJvdGggaW50ZXJ2YWxzIG11c3QgYmUgdGhlIHNhbWUuDQoNCkZvciB0aGUgTGlzdCwgTGlzdCBvdmVybG9hZCwgdGhpcyBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgZXZlcnkgZWxlbWVudCBvZiB0aGUgZmlyc3QgbGlzdCBpcyBpbmNsdWRlZCBpbiB0aGUgc2Vjb25kIGxpc3QsIHVzaW5nIGVxdWFsaXR5IHNlbWFudGljcywgYW5kIHRoZSBmaXJzdCBsaXN0IGlzIHN0cmljdGx5IHNtYWxsZXIuDQoNCkZvciB0aGUgSW50ZXJ2YWwsIEludGVydmFsIG92ZXJsb2FkLCB0aGlzIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlyc3QgaW50ZXJ2YWwgaXMgaW5jbHVkZWQgaW4gdGhlIHNlY29uZCBpbnRlcnZhbCwgYW5kIHRoZSBpbnRlcnZhbHMgYXJlIG5vdCBlcXVhbC4gSWYgcHJlY2lzaW9uIGlzIHNwZWNpZmllZCBhbmQgdGhlIHBvaW50IHR5cGUgaXMgYSBEYXRlLCBEYXRlVGltZSwgb3IgVGltZSB0eXBlLCBjb21wYXJpc29ucyB1c2VkIGluIHRoZSBvcGVyYXRpb24gYXJlIHBlcmZvcm1lZCBhdCB0aGUgc3BlY2lmaWVkIHByZWNpc2lvbi4NCg0KVGhpcyBvcGVyYXRvciB1c2VzIHRoZSBzZW1hbnRpY3MgZGVzY3JpYmVkIGluIHRoZSBTdGFydCBhbmQgRW5kIG9wZXJhdG9ycyB0byBkZXRlcm1pbmUgaW50ZXJ2YWwgYm91bmRhcmllcy4NCg0KSWYgZWl0aGVyIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC4gPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiI+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcmVjaXNpb24iIHR5cGU9IkRhdGVUaW1lUHJlY2lzaW9uIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgkJPCEtLSBQcm9wZXJJbmNsdWRlZEluKGkxLCBpMikgPSBJbmNsdWRlZEluKGkxLCBpMikgYW5kIGkxIDw+IGkyIC0tPg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkJlZm9yZSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEJlZm9yZSBvcGVyYXRvciBpcyBkZWZpbmVkIGZvciBJbnRlcnZhbHMsIGFzIHdlbGwgYXMgRGF0ZSwgRGF0ZVRpbWUsIGFuZCBUaW1lIHZhbHVlcy4NCgkJCQ0KRm9yIHRoZSBJbnRlcnZhbCBvdmVybG9hZCwgdGhlIEJlZm9yZSBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIGZpcnN0IGludGVydmFsIGVuZHMgYmVmb3JlIHRoZSBzZWNvbmQgb25lIHN0YXJ0cy4gSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBlbmRpbmcgcG9pbnQgb2YgdGhlIGZpcnN0IGludGVydmFsIGlzIGxlc3MgdGhhbiB0aGUgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIHNlY29uZCBpbnRlcnZhbCwgdXNpbmcgdGhlIHNlbWFudGljcyBkZXNjcmliZWQgaW4gdGhlIFN0YXJ0IGFuZCBFbmQgb3BlcmF0b3JzIHRvIGRldGVybWluZSBpbnRlcnZhbCBib3VuZGFyaWVzLg0KDQpGb3IgdGhlIERhdGUsIERhdGVUaW1lLCBhbmQgVGltZSBvdmVybG9hZHMsIHRoZSBjb21wYXJpc29uIGlzIHBlcmZvcm1lZCBieSBjb25zaWRlcmluZyBlYWNoIHByZWNpc2lvbiBpbiBvcmRlciwgYmVnaW5uaW5nIHdpdGggeWVhcnMgKG9yIGhvdXJzIGZvciB0aW1lIHZhbHVlcykuIElmIHRoZSB2YWx1ZXMgYXJlIHRoZSBzYW1lLCBjb21wYXJpc29uIHByb2NlZWRzIHRvIHRoZSBuZXh0IHByZWNpc2lvbjsgaWYgdGhlIGZpcnN0IHZhbHVlIGlzIGxlc3MgdGhhbiB0aGUgc2Vjb25kLCB0aGUgcmVzdWx0IGlzIHRydWU7IGlmIHRoZSBmaXJzdCB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gdGhlIHNlY29uZCwgdGhlIHJlc3VsdCBpcyBmYWxzZTsgaWYgZWl0aGVyIGlucHV0IGhhcyBubyB2YWx1ZSBmb3IgdGhlIHByZWNpc2lvbiwgdGhlIGNvbXBhcmlzb24gc3RvcHMgYW5kIHRoZSByZXN1bHQgaXMgbnVsbDsgaWYgdGhlIHNwZWNpZmllZCBwcmVjaXNpb24gaGFzIGJlZW4gcmVhY2hlZCwgdGhlIGNvbXBhcmlzb24gc3RvcHMgYW5kIHRoZSByZXN1bHQgaXMgZmFsc2UuDQoNCklmIG5vIHByZWNpc2lvbiBpcyBzcGVjaWZpZWQsIHRoZSBjb21wYXJpc29uIGlzIHBlcmZvcm1lZCBiZWdpbm5pbmcgd2l0aCB5ZWFycyAob3IgaG91cnMgZm9yIHRpbWUgdmFsdWVzKSBhbmQgcHJvY2VlZGluZyB0byB0aGUgZmluZXN0IHByZWNpc2lvbiBzcGVjaWZpZWQgaW4gZWl0aGVyIGlucHV0Lg0KDQpGb3IgRGF0ZSB2YWx1ZXMsIHByZWNpc2lvbiBtdXN0IGJlIG9uZSBvZiB5ZWFyLCBtb250aCwgb3IgZGF5Lg0KDQpGb3IgRGF0ZVRpbWUgdmFsdWVzLCBwcmVjaXNpb24gbXVzdCBiZSBvbmUgb2YgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG9yIG1pbGxpc2Vjb25kLg0KDQpGb3IgVGltZSB2YWx1ZXMsIHByZWNpc2lvbiBtdXN0IGJlIG9uZSBvZiBob3VyLCBtaW51dGUsIHNlY29uZCwgb3IgbWlsbGlzZWNvbmQuDQoNCk5vdGUgc3BlY2lmaWNhbGx5IHRoYXQgZHVlIHRvIHZhcmlhYmlsaXR5IGluIHRoZSB3YXkgd2VlayBudW1iZXJzIGFyZSBkZXRlcm1pbmVkLCBjb21wYXJpc29ucyBpbnZvbHZpbmcgd2Vla3MgYXJlIG5vdCBzdXBwb3J0ZWQuDQoNCldoZW4gY29tcGFyaW5nIERhdGVUaW1lIHZhbHVlcyB3aXRoIGRpZmZlcmVudCB0aW1lem9uZSBvZmZzZXRzLCBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIG5vcm1hbGl6ZSB0byB0aGUgdGltZXpvbmUgb2Zmc2V0IG9mIHRoZSBldmFsdWF0aW9uIHJlcXVlc3QgdGltZXN0YW1wLCBidXQgb25seSB3aGVuIHRoZSBjb21wYXJpc29uIHByZWNpc2lvbiBpcyBob3VycywgbWludXRlcywgc2Vjb25kcywgb3IgbWlsbGlzZWNvbmRzLg0KDQpJZiBlaXRoZXIgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0icHJlY2lzaW9uIiB0eXBlPSJEYXRlVGltZVByZWNpc2lvbiIgdXNlPSJvcHRpb25hbCIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJCTwhLS0gQmVmb3JlKGkxLCBpMikgPSBFbmQoaTEpIDwgU3RhcnQoaTIpIC0tPg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFmdGVyIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQWZ0ZXIgb3BlcmF0b3IgaXMgZGVmaW5lZCBmb3IgSW50ZXJ2YWxzLCBhcyB3ZWxsIGFzIERhdGUsIERhdGVUaW1lLCBhbmQgVGltZSB2YWx1ZXMuDQoJCQkNCkZvciB0aGUgSW50ZXJ2YWwgb3ZlcmxvYWQsIHRoZSBBZnRlciBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIGZpcnN0IGludGVydmFsIHN0YXJ0cyBhZnRlciB0aGUgc2Vjb25kIG9uZSBlbmRzLiBJbiBvdGhlciB3b3JkcywgaWYgdGhlIHN0YXJ0aW5nIHBvaW50IG9mIHRoZSBmaXJzdCBpbnRlcnZhbCBpcyBncmVhdGVyIHRoYW4gdGhlIGVuZGluZyBwb2ludCBvZiB0aGUgc2Vjb25kIGludGVydmFsIHVzaW5nIHRoZSBzZW1hbnRpY3MgZGVzY3JpYmVkIGluIHRoZSBTdGFydCBhbmQgRW5kIG9wZXJhdG9ycyB0byBkZXRlcm1pbmUgaW50ZXJ2YWwgYm91bmRhcmllcy4NCg0KRm9yIHRoZSBEYXRlLCBEYXRlVGltZSwgYW5kIFRpbWUgb3ZlcmxvYWRzLCB0aGUgQWZ0ZXIgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSBmaXJzdCBkYXRldGltZSBpcyBhZnRlciB0aGUgc2Vjb25kIGRhdGV0aW1lIGF0IHRoZSBzcGVjaWZpZWQgbGV2ZWwgb2YgcHJlY2lzaW9uLiBUaGUgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgYnkgY29uc2lkZXJpbmcgZWFjaCBwcmVjaXNpb24gaW4gb3JkZXIsIGJlZ2lubmluZyB3aXRoIHllYXJzIChvciBob3VycyBmb3IgdGltZSB2YWx1ZXMpLiBJZiB0aGUgdmFsdWVzIGFyZSB0aGUgc2FtZSwgY29tcGFyaXNvbiBwcm9jZWVkcyB0byB0aGUgbmV4dCBwcmVjaXNpb247IGlmIHRoZSBmaXJzdCB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gdGhlIHNlY29uZCwgdGhlIHJlc3VsdCBpcyB0cnVlOyBpZiB0aGUgZmlyc3QgdmFsdWUgaXMgbGVzcyB0aGFuIHRoZSBzZWNvbmQsIHRoZSByZXN1bHQgaXMgZmFsc2U7IGlmIGVpdGhlciBpbnB1dCBoYXMgbm8gdmFsdWUgZm9yIHRoZSBwcmVjaXNpb24sIHRoZSBjb21wYXJpc29uIHN0b3BzIGFuZCB0aGUgcmVzdWx0IGlzIG51bGw7IGlmIHRoZSBzcGVjaWZpZWQgcHJlY2lzaW9uIGhhcyBiZWVuIHJlYWNoZWQsIHRoZSBjb21wYXJpc29uIHN0b3BzIGFuZCB0aGUgcmVzdWx0IGlzIGZhbHNlLg0KDQpJZiBubyBwcmVjaXNpb24gaXMgc3BlY2lmaWVkLCB0aGUgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgYmVnaW5uaW5nIHdpdGggeWVhcnMgKG9yIGhvdXJzIGZvciB0aW1lIHZhbHVlcykgYW5kIHByb2NlZWRpbmcgdG8gdGhlIGZpbmVzdCBwcmVjaXNpb24gc3BlY2lmaWVkIGluIGVpdGhlciBpbnB1dC4NCg0KRm9yIERhdGUgdmFsdWVzLCBwcmVjaXNpb24gbXVzdCBiZSBvbmUgb2YgeWVhciwgbW9udGgsIG9yIGRheS4NCg0KRm9yIERhdGVUaW1lIHZhbHVlcywgcHJlY2lzaW9uIG11c3QgYmUgb25lIG9mIHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBvciBtaWxsaXNlY29uZC4NCg0KRm9yIFRpbWUgdmFsdWVzLCBwcmVjaXNpb24gbXVzdCBiZSBvbmUgb2YgaG91ciwgbWludXRlLCBzZWNvbmQsIG9yIG1pbGxpc2Vjb25kLg0KDQpOb3RlIHNwZWNpZmljYWxseSB0aGF0IGR1ZSB0byB2YXJpYWJpbGl0eSBpbiB0aGUgd2F5IHdlZWsgbnVtYmVycyBhcmUgZGV0ZXJtaW5lZCwgY29tcGFyaXNvbnMgaW52b2x2aW5nIHdlZWtzIGFyZSBub3Qgc3VwcG9ydGVkLg0KDQpXaGVuIGNvbXBhcmluZyBEYXRlVGltZSB2YWx1ZXMgd2l0aCBkaWZmZXJlbnQgdGltZXpvbmUgb2Zmc2V0cywgaW1wbGVtZW50YXRpb25zIHNob3VsZCBub3JtYWxpemUgdG8gdGhlIHRpbWV6b25lIG9mZnNldCBvZiB0aGUgZXZhbHVhdGlvbiByZXF1ZXN0IHRpbWVzdGFtcCwgYnV0IG9ubHkgd2hlbiB0aGUgY29tcGFyaXNvbiBwcmVjaXNpb24gaXMgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG9yIG1pbGxpc2Vjb25kcy4NCg0KSWYgZWl0aGVyIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJCaW5hcnlFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InByZWNpc2lvbiIgdHlwZT0iRGF0ZVRpbWVQcmVjaXNpb24iIHVzZT0ib3B0aW9uYWwiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCQk8IS0tIEFmdGVyKGkxLCBpMikgPSBTdGFydChpMSkgPiBFbmQoaTIpIC0tPg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1lZXRzIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgTWVldHMgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSBmaXJzdCBpbnRlcnZhbCBlbmRzIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgc2Vjb25kIGludGVydmFsIHN0YXJ0cywgb3IgaWYgdGhlIGZpcnN0IGludGVydmFsIHN0YXJ0cyBpbW1lZGlhdGVseSBhZnRlciB0aGUgc2Vjb25kIGludGVydmFsIGVuZHMuIEluIG90aGVyIHdvcmRzLCBpZiB0aGUgZW5kaW5nIHBvaW50IG9mIHRoZSBmaXJzdCBpbnRlcnZhbCBpcyBlcXVhbCB0byB0aGUgcHJlZGVjZXNzb3Igb2YgdGhlIHN0YXJ0aW5nIHBvaW50IG9mIHRoZSBzZWNvbmQsIG9yIGlmIHRoZSBzdGFydGluZyBwb2ludCBvZiB0aGUgZmlyc3QgaW50ZXJ2YWwgaXMgZXF1YWwgdG8gdGhlIHN1Y2Nlc3NvciBvZiB0aGUgZW5kaW5nIHBvaW50IG9mIHRoZSBzZWNvbmQuDQoJCQkNClRoaXMgb3BlcmF0b3IgdXNlcyB0aGUgc2VtYW50aWNzIGRlc2NyaWJlZCBpbiB0aGUgU3RhcnQgYW5kIEVuZCBvcGVyYXRvcnMgdG8gZGV0ZXJtaW5lIGludGVydmFsIGJvdW5kYXJpZXMuDQoNCklmIHByZWNpc2lvbiBpcyBzcGVjaWZpZWQgYW5kIHRoZSBwb2ludCB0eXBlIGlzIGEgRGF0ZSwgRGF0ZVRpbWUsIG9yIFRpbWUgdHlwZSwgY29tcGFyaXNvbnMgdXNlZCBpbiB0aGUgb3BlcmF0aW9uIGFyZSBwZXJmb3JtZWQgYXQgdGhlIHNwZWNpZmllZCBwcmVjaXNpb24uDQogDQpJZiBlaXRoZXIgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkJpbmFyeUV4cHJlc3Npb24iPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0icHJlY2lzaW9uIiB0eXBlPSJEYXRlVGltZVByZWNpc2lvbiIgdXNlPSJvcHRpb25hbCIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJCTwhLS0gTWVldHMoaTEsIGkyKSA9IEVuZChpMSkgPSBQcmVkZWNlc3NvcihTdGFydChpMikpIG9yIEVuZChpMikgPSBQcmVkZWNlc3NvcihTdGFydChpMSkpIC0tPg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1lZXRzQmVmb3JlIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgTWVldHNCZWZvcmUgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSBmaXJzdCBpbnRlcnZhbCBlbmRzIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgc2Vjb25kIGludGVydmFsIHN0YXJ0cy4gSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBlbmRpbmcgcG9pbnQgb2YgdGhlIGZpcnN0IGludGVydmFsIGlzIGVxdWFsIHRvIHRoZSBwcmVkZWNlc3NvciBvZiB0aGUgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIHNlY29uZC4NCgkJCQ0KVGhpcyBvcGVyYXRvciB1c2VzIHRoZSBzZW1hbnRpY3MgZGVzY3JpYmVkIGluIHRoZSBTdGFydCBhbmQgRW5kIG9wZXJhdG9ycyB0byBkZXRlcm1pbmUgaW50ZXJ2YWwgYm91bmRhcmllcy4NCg0KSWYgcHJlY2lzaW9uIGlzIHNwZWNpZmllZCBhbmQgdGhlIHBvaW50IHR5cGUgaXMgYSBEYXRlLCBEYXRlVGltZSwgb3IgVGltZSB0eXBlLCBjb21wYXJpc29ucyB1c2VkIGluIHRoZSBvcGVyYXRpb24gYXJlIHBlcmZvcm1lZCBhdCB0aGUgc3BlY2lmaWVkIHByZWNpc2lvbi4NCiANCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiI+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcmVjaXNpb24iIHR5cGU9IkRhdGVUaW1lUHJlY2lzaW9uIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgkJPCEtLSBNZWV0c0JlZm9yZShpMSwgaTIpID0gRW5kKGkxKSA9IFByZWRlY2Vzc29yKFN0YXJ0KGkyKSkgLS0+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iTWVldHNBZnRlciI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIE1lZXRzQWZ0ZXIgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSBmaXJzdCBpbnRlcnZhbCBzdGFydHMgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHNlY29uZCBpbnRlcnZhbCBlbmRzLiBJbiBvdGhlciB3b3JkcywgaWYgdGhlIHN0YXJ0aW5nIHBvaW50IG9mIHRoZSBmaXJzdCBpbnRlcnZhbCBpcyBlcXVhbCB0byB0aGUgc3VjY2Vzc29yIG9mIHRoZSBlbmRpbmcgcG9pbnQgb2YgdGhlIHNlY29uZC4NCgkJCQ0KVGhpcyBvcGVyYXRvciB1c2VzIHRoZSBzZW1hbnRpY3MgZGVzY3JpYmVkIGluIHRoZSBTdGFydCBhbmQgRW5kIG9wZXJhdG9ycyB0byBkZXRlcm1pbmUgaW50ZXJ2YWwgYm91bmRhcmllcy4NCg0KSWYgcHJlY2lzaW9uIGlzIHNwZWNpZmllZCBhbmQgdGhlIHBvaW50IHR5cGUgaXMgYSBEYXRlLCBEYXRlVGltZSwgb3IgVGltZSB0eXBlLCBjb21wYXJpc29ucyB1c2VkIGluIHRoZSBvcGVyYXRpb24gYXJlIHBlcmZvcm1lZCBhdCB0aGUgc3BlY2lmaWVkIHByZWNpc2lvbi4NCiANCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiI+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcmVjaXNpb24iIHR5cGU9IkRhdGVUaW1lUHJlY2lzaW9uIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgkJPCEtLSBNZWV0c0FmdGVyKGkxLCBpMikgPSBFbmQoaTIpID0gUHJlZGVjZXNzb3IoU3RhcnQoaTEpKSAtLT4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJPdmVybGFwcyI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIE92ZXJsYXBzIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlyc3QgaW50ZXJ2YWwgb3ZlcmxhcHMgdGhlIHNlY29uZC4gSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBzdGFydGluZyBvciBlbmRpbmcgcG9pbnQgb2YgZWl0aGVyIGludGVydmFsIGlzIGluIHRoZSBvdGhlciwgb3IgaWYgdGhlIGVuZGluZyBwb2ludCBvZiB0aGUgZmlyc3QgaW50ZXJ2YWwgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzdGFydGluZyBwb2ludCBvZiB0aGUgc2Vjb25kIGludGVydmFsLCBhbmQgdGhlIHN0YXJ0aW5nIHBvaW50IG9mIHRoZSBmaXJzdCBpbnRlcnZhbCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGVuZGluZyBwb2ludCBvZiB0aGUgc2Vjb25kIGludGVydmFsLg0KCQkJDQpUaGlzIG9wZXJhdG9yIHVzZXMgdGhlIHNlbWFudGljcyBkZXNjcmliZWQgaW4gdGhlIFN0YXJ0IGFuZCBFbmQgb3BlcmF0b3JzIHRvIGRldGVybWluZSBpbnRlcnZhbCBib3VuZGFyaWVzLg0KDQpJZiBwcmVjaXNpb24gaXMgc3BlY2lmaWVkIGFuZCB0aGUgcG9pbnQgdHlwZSBpcyBhIERhdGUsIERhdGVUaW1lLCBvciBUaW1lIHR5cGUsIGNvbXBhcmlzb25zIHVzZWQgaW4gdGhlIG9wZXJhdGlvbiBhcmUgcGVyZm9ybWVkIGF0IHRoZSBzcGVjaWZpZWQgcHJlY2lzaW9uLg0KIA0KSWYgZWl0aGVyIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJCaW5hcnlFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InByZWNpc2lvbiIgdHlwZT0iRGF0ZVRpbWVQcmVjaXNpb24iIHVzZT0ib3B0aW9uYWwiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCQk8IS0tIE92ZXJsYXBzKGkxLCBpMikgPSBFbmQoaTEpID49IFN0YXJ0KGkyKSBhbmQgU3RhcnQoaTEpIDw9IEVuZChpMikgLS0+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iT3ZlcmxhcHNCZWZvcmUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBPdmVybGFwc0JlZm9yZSBvcGVyYXRvciByZXR1cm5zIHRydWUgaWYgdGhlIGZpcnN0IGludGVydmFsIHN0YXJ0cyBiZWZvcmUgYW5kIG92ZXJsYXBzIHRoZSBzZWNvbmQuIEluIG90aGVyIHdvcmRzLCBpZiB0aGUgZmlyc3QgaW50ZXJ2YWwgc3RhcnRzIGJlZm9yZSBhbmQgZW5kcyBvbiBvciBhZnRlciB0aGUgc3RhcnQgb2YgdGhlIHNlY29uZCBpbnRlcnZhbC4NCgkJCQ0KVGhpcyBvcGVyYXRvciB1c2VzIHRoZSBzZW1hbnRpY3MgZGVzY3JpYmVkIGluIHRoZSBTdGFydCBhbmQgRW5kIG9wZXJhdG9ycyB0byBkZXRlcm1pbmUgaW50ZXJ2YWwgYm91bmRhcmllcy4NCg0KSWYgcHJlY2lzaW9uIGlzIHNwZWNpZmllZCBhbmQgdGhlIHBvaW50IHR5cGUgaXMgYSBEYXRlLCBEYXRlVGltZSwgb3IgVGltZSB0eXBlLCBjb21wYXJpc29ucyB1c2VkIGluIHRoZSBvcGVyYXRpb24gYXJlIHBlcmZvcm1lZCBhdCB0aGUgc3BlY2lmaWVkIHByZWNpc2lvbi4NCg0KSWYgZWl0aGVyIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJCaW5hcnlFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InByZWNpc2lvbiIgdHlwZT0iRGF0ZVRpbWVQcmVjaXNpb24iIHVzZT0ib3B0aW9uYWwiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCQk8IS0tIE92ZXJsYXBzQmVmb3JlKGkxLCBpMikgPSBTdGFydChpMSkgPCBTdGFydChpMikgYW5kIEVuZChpMSkgPj0gU3RhcnQoaTIpIC0tPg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik92ZXJsYXBzQWZ0ZXIiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBPdmVybGFwc0FmdGVyIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlyc3QgaW50ZXJ2YWwgb3ZlcmxhcHMgYW5kIGVuZHMgYWZ0ZXIgdGhlIHNlY29uZC4gSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBmaXJzdCBpbnRlcnZhbCBlbmRzIGFmdGVyIGFuZCBzdGFydHMgb24gb3IgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHNlY29uZCBpbnRlcnZhbC4NCgkJCQ0KVGhpcyBvcGVyYXRvciB1c2VzIHRoZSBzZW1hbnRpY3MgZGVzY3JpYmVkIGluIHRoZSBTdGFydCBhbmQgRW5kIG9wZXJhdG9ycyB0byBkZXRlcm1pbmUgaW50ZXJ2YWwgYm91bmRhcmllcy4NCg0KSWYgcHJlY2lzaW9uIGlzIHNwZWNpZmllZCBhbmQgdGhlIHBvaW50IHR5cGUgaXMgYSBEYXRlLCBEYXRlVGltZSwgb3IgVGltZSB0eXBlLCBjb21wYXJpc29ucyB1c2VkIGluIHRoZSBvcGVyYXRpb24gYXJlIHBlcmZvcm1lZCBhdCB0aGUgc3BlY2lmaWVkIHByZWNpc2lvbi4NCiANCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiI+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcmVjaXNpb24iIHR5cGU9IkRhdGVUaW1lUHJlY2lzaW9uIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgkJPCEtLSBPdmVybGFwc0FmdGVyKGkxLCBpMikgPSBFbmQoaTEpID4gRW5kKGkyKSBhbmQgU3RhcnQoaTEpIDw9IEVuZChpMikgLS0+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iU3RhcnRzIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgU3RhcnRzIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlyc3QgaW50ZXJ2YWwgc3RhcnRzIHRoZSBzZWNvbmQuIEluIG90aGVyIHdvcmRzLCBpZiB0aGUgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIGZpcnN0IGlzIGVxdWFsIHRvIHRoZSBzdGFydGluZyBwb2ludCBvZiB0aGUgc2Vjb25kIGludGVydmFsIGFuZCB0aGUgZW5kaW5nIHBvaW50IG9mIHRoZSBmaXJzdCBpbnRlcnZhbCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGVuZGluZyBwb2ludCBvZiB0aGUgc2Vjb25kIGludGVydmFsLg0KDQpUaGlzIG9wZXJhdG9yIHVzZXMgdGhlIHNlbWFudGljcyBkZXNjcmliZWQgaW4gdGhlIFN0YXJ0IGFuZCBFbmQgb3BlcmF0b3JzIHRvIGRldGVybWluZSBpbnRlcnZhbCBib3VuZGFyaWVzLg0KDQpJZiBwcmVjaXNpb24gaXMgc3BlY2lmaWVkIGFuZCB0aGUgcG9pbnQgdHlwZSBpcyBhIERhdGUsIERhdGVUaW1lLCBvciBUaW1lIHR5cGUsIGNvbXBhcmlzb25zIHVzZWQgaW4gdGhlIG9wZXJhdGlvbiBhcmUgcGVyZm9ybWVkIGF0IHRoZSBzcGVjaWZpZWQgcHJlY2lzaW9uLg0KIA0KSWYgZWl0aGVyIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJCaW5hcnlFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InByZWNpc2lvbiIgdHlwZT0iRGF0ZVRpbWVQcmVjaXNpb24iIHVzZT0ib3B0aW9uYWwiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCQk8IS0tIFN0YXJ0cyhpMSwgaTIpID0gU3RhcnQoaTEpID0gU3RhcnQoaTIpIGFuZCBFbmQoaTEpIDw9IEVuZChpMikgLS0+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iRW5kcyI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEVuZHMgb3BlcmF0b3IgcmV0dXJucyB0cnVlIGlmIHRoZSBmaXJzdCBpbnRlcnZhbCBlbmRzIHRoZSBzZWNvbmQuIEluIG90aGVyIHdvcmRzLCBpZiB0aGUgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIGZpcnN0IGludGVydmFsIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgc3RhcnRpbmcgcG9pbnQgb2YgdGhlIHNlY29uZCwgYW5kIHRoZSBlbmRpbmcgcG9pbnQgb2YgdGhlIGZpcnN0IGludGVydmFsIGlzIGVxdWFsIHRvIHRoZSBlbmRpbmcgcG9pbnQgb2YgdGhlIHNlY29uZC4NCgkJCQ0KVGhpcyBvcGVyYXRvciB1c2VzIHRoZSBzZW1hbnRpY3MgZGVzY3JpYmVkIGluIHRoZSBTdGFydCBhbmQgRW5kIG9wZXJhdG9ycyB0byBkZXRlcm1pbmUgaW50ZXJ2YWwgYm91bmRhcmllcy4NCg0KSWYgcHJlY2lzaW9uIGlzIHNwZWNpZmllZCBhbmQgdGhlIHBvaW50IHR5cGUgaXMgYSBEYXRlLCBEYXRlVGltZSwgb3IgVGltZSB0eXBlLCBjb21wYXJpc29ucyB1c2VkIGluIHRoZSBvcGVyYXRpb24gYXJlIHBlcmZvcm1lZCBhdCB0aGUgc3BlY2lmaWVkIHByZWNpc2lvbi4NCiANCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiI+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcmVjaXNpb24iIHR5cGU9IkRhdGVUaW1lUHJlY2lzaW9uIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgkJPCEtLSBFbmRzKGkxLCBpMikgPSBTdGFydChpMSkgPj0gU3RhcnQoaTIpIGFuZCBFbmQoaTEpID0gRW5kKGkyKSAtLT4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDb2xsYXBzZSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIENvbGxhcHNlIG9wZXJhdG9yIHJldHVybnMgdGhlIHVuaXF1ZSBzZXQgb2YgaW50ZXJ2YWxzIHRoYXQgY29tcGxldGVseSBjb3ZlcnMgdGhlIHJhbmdlcyBwcmVzZW50IGluIHRoZSBnaXZlbiBsaXN0IG9mIGludGVydmFscy4gSW4gb3RoZXIgd29yZHMsIGFkamFjZW50IGludGVydmFscyB3aXRoaW4gYSBzb3J0ZWQgbGlzdCBhcmUgbWVyZ2VkIGlmIHRoZXkgZWl0aGVyIG92ZXJsYXAgb3IgbWVldC4NCgkJCQ0KVGhlIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgYnkgY29tYmluaW5nIHN1Y2Nlc3NpdmUgaW50ZXJ2YWxzIGluIHRoZSBpbnB1dCB0aGF0IGVpdGhlciBvdmVybGFwIG9yIG1lZXQsIHVzaW5nIHRoZSBzZW1hbnRpY3MgZGVmaW5lZCBmb3IgdGhlIE92ZXJsYXBzIGFuZCBNZWV0cyBvcGVyYXRvcnMuIE5vdGUgdGhhdCBiZWNhdXNlIHRob3NlIG9wZXJhdG9ycyBhcmUgdGhlbXNlbHZlcyBkZWZpbmVkIGluIHRlcm1zIG9mIGludGVydmFsIHN1Y2Nlc3NvciBhbmQgcHJlZGVjZXNzb3Igb3BlcmF0b3JzLCBzZXRzIG9mIERhdGUtLCBEYXRlVGltZS0sIG9yIFRpbWUtYmFzZWQgaW50ZXJ2YWxzIHRoYXQgYXJlIG9ubHkgZGVmaW5lZCB0byBhIHBhcnRpY3VsYXIgcHJlY2lzaW9uIHdpbGwgY2FsY3VsYXRlIG1lZXRzIGFuZCBvdmVybGFwcyBhdCB0aGF0IHByZWNpc2lvbi4gRm9yIGV4YW1wbGUsIGEgbGlzdCBvZiBEYXRlVGltZS1iYXNlZCBpbnRlcnZhbHMgd2hlcmUgdGhlIGJvdW5kYXJpZXMgYXJlIGFsbCBzcGVjaWZpZWQgdG8gdGhlIGhvdXIgd2lsbCBjb2xsYXBzZSBhdCB0aGUgaG91ciBwcmVjaXNpb24sIHVubGVzcyB0aGUgY29sbGFwc2UgcHJlY2lzaW9uIGlzIG92ZXJyaWRkZW4gd2l0aCB0aGUgcGVyIGFyZ3VtZW50Lg0KDQpUaGUgcGVyIGFyZ3VtZW50IGRldGVybWluZXMgdGhlIHByZWNpc2lvbiBhdCB3aGljaCB0aGUgY29sbGFwc2UgaXMgY29tcHV0ZWQgYW5kIG11c3QgYmUgYSBxdWFudGl0eS12YWx1ZWQgZXhwcmVzc2lvbiBjb21wYXRpYmxlIHdpdGggdGhlIGludGVydmFsIHBvaW50IHR5cGUuIEZvciBudW1lcmljIGludGVydmFscywgdGhpcyBtZWFucyBhIHF1YW50aXR5IHdpdGggdGhlIGRlZmF1bHQgdW5pdCAnMScgKG5vdCB0byBiZSBjb25mdXNlZCB3aXRoIHRoZSBxdWFudGl0eSB2YWx1ZSwgd2hpY2ggbWF5IGJlIGFueSB2YWxpZCBwb3NpdGl2ZSBkZWNpbWFsKS4gRm9yIERhdGUtLCBEYXRlVGltZS0sIGFuZCBUaW1lLXZhbHVlZCBpbnRlcnZhbHMsIHRoaXMgbWVhbnMgYSBxdWFudGl0eSB3aXRoIGEgdGVtcG9yYWwgdW5pdCAoZS5nLiwgJ3llYXInLCAnbW9udGgnLCBldGMpLg0KDQpJZiB0aGUgcGVyIGFyZ3VtZW50IGlzIG51bGwsIGEgcGVyIHZhbHVlIHdpbGwgYmUgY29uc3RydWN0ZWQgYmFzZWQgb24gdGhlIGNvYXJzZXN0IHByZWNpc2lvbiBvZiB0aGUgYm91bmRhcmllcyBvZiB0aGUgaW50ZXJ2YWxzIGluIHRoZSBpbnB1dCBzZXQuIEZvciBleGFtcGxlLCBhIGxpc3Qgb2YgRGF0ZVRpbWUtYmFzZWQgaW50ZXJ2YWxzIHdoZXJlIHRoZSBib3VuZGFyaWVzIGFyZSBhIG1peHR1cmUgb2YgaG91cnMgYW5kIG1pbnV0ZXMgd2lsbCBjb2xsYXBzZSBhdCB0aGUgaG91ciBwcmVjaXNpb24uDQoNCklmIHRoZSBsaXN0IG9mIGludGVydmFscyBpcyBlbXB0eSwgdGhlIHJlc3VsdCBpcyBlbXB0eS4gSWYgdGhlIGxpc3Qgb2YgaW50ZXJ2YWxzIGNvbnRhaW5zIGEgc2luZ2xlIGludGVydmFsLCB0aGUgcmVzdWx0IGlzIGEgbGlzdCB3aXRoIHRoYXQgaW50ZXJ2YWwuIElmIHRoZSBsaXN0IG9mIGludGVydmFscyBjb250YWlucyBudWxscywgdGhleSB3aWxsIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIHJlc3VsdGluZyBsaXN0Lg0KDQpJZiB0aGUgc291cmNlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJCaW5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iRXhwYW5kIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgRXhwYW5kIG9wZXJhdG9yIHJldHVybnMgdGhlIHNldCBvZiBpbnRlcnZhbHMgb2Ygc2l6ZSBwZXIgZm9yIGFsbCB0aGUgcmFuZ2VzIHByZXNlbnQgaW4gdGhlIGdpdmVuIGxpc3Qgb2YgaW50ZXJ2YWxzLg0KCQkJCQ0KVGhlIHBlciBhcmd1bWVudCBkZXRlcm1pbmVzIHRoZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgaW50ZXJ2YWxzIGFuZCBtdXN0IGJlIGEgcXVhbnRpdHktdmFsdWVkIGV4cHJlc3Npb24gY29tcGF0aWJsZSB3aXRoIHRoZSBpbnRlcnZhbCBwb2ludCB0eXBlLiBGb3IgbnVtZXJpYyBpbnRlcnZhbHMsIHRoaXMgbWVhbnMgYSBxdWFudGl0eSB3aXRoIHRoZSBkZWZhdWx0IHVuaXQgJzEnIChub3QgdG8gYmUgY29uZnVzZWQgd2l0aCB0aGUgcXVhbnRpdHkgdmFsdWUsIHdoaWNoIG1heSBiZSBhbnkgdmFsaWQgcG9zaXRpdmUgZGVjaW1hbCkuIEZvciBEYXRlLSwgRGF0ZVRpbWUtLCBhbmQgVGltZS12YWx1ZWQgaW50ZXJ2YWxzLCB0aGlzIG1lYW5zIGEgcXVhbnRpdHkgd2l0aCBhIHRlbXBvcmFsIHVuaXQgKGUuZy4sICd5ZWFyJywgJ21vbnRoJywgZXRjKS4NCg0KSWYgdGhlIHBlciBhcmd1bWVudCBpcyBudWxsLCBhIHBlciB2YWx1ZSB3aWxsIGJlIGNvbnN0cnVjdGVkIGJhc2VkIG9uIHRoZSBjb2Fyc2VzdCBwcmVjaXNpb24gb2YgdGhlIGJvdW5kYXJpZXMgb2YgdGhlIGludGVydmFscyBpbiB0aGUgaW5wdXQgc2V0LiBGb3IgZXhhbXBsZSwgYSBsaXN0IG9mIERhdGVUaW1lLWJhc2VkIGludGVydmFscyB3aGVyZSB0aGUgYm91bmRhcmllcyBhcmUgYSBtaXh0dXJlIG9mIGhvdXJzIGFuZCBtaW51dGVzIHdpbGwgZXhwYW5kIGF0IHRoZSBob3VyIHByZWNpc2lvbi4NCg0KTm90ZSB0aGF0IGlmIHRoZSB2YWx1ZXMgaW4gdGhlIGludGVydmFscyBhcmUgbW9yZSBwcmVjaXNlIHRoYW4gdGhlIHBlciBxdWFudGl0eSwgdGhlIG1vcmUgcHJlY2lzZSB2YWx1ZXMgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gdGhlIHByZWNpc2lvbiBzcGVjaWZpZWQgYnkgdGhlIHBlciBxdWFudGl0eS4NCg0KSWYgdGhlIGxpc3Qgb2YgaW50ZXJ2YWxzIGlzIGVtcHR5LCB0aGUgcmVzdWx0IGlzIGVtcHR5LiBJZiB0aGUgbGlzdCBvZiBpbnRlcnZhbHMgY29udGFpbnMgbnVsbHMsIHRoZXkgd2lsbCBiZSBleGNsdWRlZCBmcm9tIHRoZSByZXN1bHRpbmcgbGlzdC4NCg0KSWYgdGhlIHNvdXJjZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlVuaW9uIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgVW5pb24gb3BlcmF0b3IgcmV0dXJucyB0aGUgdW5pb24gb2YgaXRzIGFyZ3VtZW50cy4NCgkJCQ0KVGhpcyBvcGVyYXRvciBoYXMgdHdvIG92ZXJsb2FkczoNCglMaXN0DQoJSW50ZXJ2YWwNCg0KRm9yIHRoZSBsaXN0IG92ZXJsb2FkLCB0aGlzIG9wZXJhdG9yIHJldHVybnMgYSBsaXN0IHdpdGggYWxsIHVuaXF1ZSBlbGVtZW50cyBmcm9tIGJvdGggYXJndW1lbnRzLCB1c2luZyBlcXVhbGl0eSBzZW1hbnRpY3MsIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IG51bGwgZWxlbWVudHMgYXJlIGNvbnNpZGVyZWQgZXF1YWwuDQoNCkZvciB0aGUgaW50ZXJ2YWwgb3ZlcmxvYWQsIHRoaXMgb3BlcmF0b3IgcmV0dXJucyB0aGUgaW50ZXJ2YWwgdGhhdCBzdGFydHMgYXQgdGhlIGVhcmxpZXN0IHN0YXJ0aW5nIHBvaW50IGluIGVpdGhlciBhcmd1bWVudCwgYW5kIGVuZHMgYXQgdGhlIGxhdGVzdCBzdGFydGluZyBwb2ludCBpbiBlaXRoZXIgYXJndW1lbnQuIElmIHRoZSBhcmd1bWVudHMgZG8gbm90IG92ZXJsYXAgb3IgbWVldCwgdGhpcyBvcGVyYXRvciByZXR1cm5zIG51bGwuIA0KDQpJZiBlaXRoZXIgYXJndW1lbnQgaXMgbnVsbCwgdGhlIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgYXMgdGhvdWdoIHRoZSBhcmd1bWVudCB3YXMgYW4gZW1wdHkgbGlzdC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJOYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkludGVyc2VjdCI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEludGVyc2VjdCBvcGVyYXRvciByZXR1cm5zIHRoZSBpbnRlcnNlY3Rpb24gb2YgaXRzIGFyZ3VtZW50cy4NCgkJCQ0KVGhpcyBvcGVyYXRvciBoYXMgdHdvIG92ZXJsb2FkczoNCglMaXN0DQoJSW50ZXJ2YWwNCg0KRm9yIHRoZSBsaXN0IG92ZXJsb2FkLCB0aGlzIG9wZXJhdG9yIHJldHVybnMgYSBsaXN0IHdpdGggdGhlIGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluIGJvdGggbGlzdHMsIHVzaW5nIGVxdWFsaXR5IHNlbWFudGljcyB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBudWxsIGVsZW1lbnRzIGFyZSBjb25zaWRlcmVkIGVxdWFsIGZvciB0aGUgcHVycG9zZXMgb2YgdGhlIGludGVyc2VjdGlvbi4gVGhlIG9wZXJhdG9yIGlzIGRlZmluZWQgd2l0aCBzZXQgc2VtYW50aWNzLCBtZWFuaW5nIHRoYXQgZWFjaCBlbGVtZW50IHdpbGwgYXBwZWFyIGluIHRoZSByZXN1bHQgYXQgbW9zdCBvbmNlLCBhbmQgdGhhdCB0aGVyZSBpcyBubyBleHBlY3RhdGlvbiB0aGF0IHRoZSBvcmRlciBvZiB0aGUgaW5wdXRzIHdpbGwgYmUgcHJlc2VydmVkIGluIHRoZSByZXN1bHRzLg0KDQpGb3IgdGhlIGludGVydmFsIG92ZXJsb2FkLCB0aGlzIG9wZXJhdG9yIHJldHVybnMgdGhlIGludGVydmFsIHRoYXQgZGVmaW5lcyB0aGUgb3ZlcmxhcHBpbmcgcG9ydGlvbiBvZiBib3RoIGFyZ3VtZW50cy4gSWYgdGhlIGFyZ3VtZW50cyBkbyBub3Qgb3ZlcmxhcCwgdGhpcyBvcGVyYXRvciByZXR1cm5zIG51bGwuDQoNCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iTmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJFeGNlcHQiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBFeGNlcHQgb3BlcmF0b3IgcmV0dXJucyB0aGUgc2V0IGRpZmZlcmVuY2Ugb2YgdGhlIHR3byBhcmd1bWVudHMuDQoJCQkNClRoaXMgb3BlcmF0b3IgaGFzIHR3byBvdmVybG9hZHM6DQoJTGlzdCwgTGlzdA0KCUludGVydmFsLCBJbnRlcnZhbA0KDQpGb3IgdGhlIGxpc3Qgb3ZlcmxvYWQsIHRoaXMgb3BlcmF0b3IgcmV0dXJucyBhIGxpc3Qgd2l0aCB0aGUgZWxlbWVudHMgdGhhdCBhcHBlYXIgaW4gdGhlIGZpcnN0IG9wZXJhbmQsIHRoYXQgZG8gbm90IGFwcGVhciBpbiB0aGUgc2Vjb25kIG9wZXJhbmQsIHVzaW5nIGVxdWFsaXR5IHNlbWFudGljcywgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgbnVsbCBlbGVtZW50cyBhcmUgY29uc2lkZXJlZCBlcXVhbCBmb3IgdGhlIHB1cnBvc2VzIG9mIGRldGVybWluaW5nIHRoZSByZXN1bHQuIFRoZSBvcGVyYXRvciBpcyBkZWZpbmVkIHdpdGggc2V0IHNlbWFudGljcywgbWVhbmluZyB0aGF0IGVhY2ggZWxlbWVudCB3aWxsIGFwcGVhciBpbiB0aGUgcmVzdWx0IGF0IG1vc3Qgb25jZSwgYW5kIHRoYXQgdGhlcmUgaXMgbm8gZXhwZWN0YXRpb24gdGhhdCB0aGUgb3JkZXIgb2YgdGhlIGlucHV0cyB3aWxsIGJlIHByZXNlcnZlZCBpbiB0aGUgcmVzdWx0cy4NCg0KRm9yIHRoZSBpbnRlcnZhbCBvdmVybG9hZCwgdGhpcyBvcGVyYXRvciByZXR1cm5zIHRoZSBwb3J0aW9uIG9mIHRoZSBmaXJzdCBpbnRlcnZhbCB0aGF0IGRvZXMgbm90IG92ZXJsYXAgd2l0aCB0aGUgc2Vjb25kLiBJZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHByb3Blcmx5IGNvbnRhaW5lZCB3aXRoaW4gdGhlIGZpcnN0IGFuZCBkb2VzIG5vdCBzdGFydCBvciBlbmQgaXQsIHRoaXMgb3BlcmF0b3IgcmV0dXJucyBudWxsLg0KDQpJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLiBJZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG51bGwsIHRoZSBvcGVyYXRpb24gaXMgcGVyZm9ybWVkIGFzIHRob3VnaCB0aGUgc2Vjb25kIGFyZ3VtZW50IHdhcyBhbiBlbXB0eSBsaXN0LjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9Ik5hcnlFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8IS0tIExpc3QvU2V0IE9wZXJhdG9ycyAtLT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iRXhpc3RzIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgRXhpc3RzIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgbGlzdCBjb250YWlucyBhbnkgZWxlbWVudHMuDQoNCklmIHRoZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIGZhbHNlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IlVuYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPCEtLSBVbmlvbiAoYWxyZWFkeSBkZWZpbmVkKSAtLT4NCgk8IS0tIEludGVyc2VjdCAoYWxyZWFkeSBkZWZpbmVkKSAtLT4NCgk8IS0tIERpZmZlcmVuY2UgKGFscmVhZHkgZGVmaW5lZCkgLS0+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRpbWVzIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgVGltZXMgb3BlcmF0b3IgcGVyZm9ybXMgdGhlIGNhcnRlc2lhbiBwcm9kdWN0IG9mIHR3byBsaXN0cyBvZiB0dXBsZXMuIFRoZSByZXR1cm4gdHlwZSBvZiBhIFRpbWVzIG9wZXJhdG9yIGlzIGEgdHVwbGUgd2l0aCBhbGwgdGhlIGNvbXBvbmVudHMgZnJvbSB0aGUgdHVwbGUgdHlwZXMgb2YgYm90aCBhcmd1bWVudHMuIFRoZSByZXN1bHQgd2lsbCBjb250YWluIGEgdHVwbGUgZm9yIGVhY2ggcG9zc2libGUgY29tYmluYXRpb24gb2YgdHVwbGVzIGZyb20gYm90aCBhcmd1bWVudHMgd2l0aCB0aGUgdmFsdWVzIGZvciBlYWNoIGNvbXBvbmVudCBkZXJpdmVkIGZyb20gdGhlIHBhaXJpbmcgb2YgdGhlIHNvdXJjZSB0dXBsZXMuDQoJCQkNCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQmluYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkZpbHRlciI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEZpbHRlciBvcGVyYXRvciByZXR1cm5zIGEgbGlzdCB3aXRoIG9ubHkgdGhvc2UgZWxlbWVudHMgaW4gdGhlIHNvdXJjZSBsaXN0IGZvciB3aGljaCB0aGUgY29uZGl0aW9uIGVsZW1lbnQgZXZhbHVhdGVzIHRvIHRydWUuDQoJCQkNCklmIHRoZSBzb3VyY2UgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ic291cmNlIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJjb25kaXRpb24iIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InNjb3BlIiB0eXBlPSJ4czpzdHJpbmciIHVzZT0ib3B0aW9uYWwiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPCEtLSBFcXVhbCAoYWxyZWFkeSBkZWZpbmVkKSAtLT4NCgk8IS0tIE5vdEVxdWFsIChhbHJlYWR5IGRlZmluZWQpIC0tPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJGaXJzdCI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEZpcnN0IG9wZXJhdG9yIHJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gYSBsaXN0LiBJZiB0aGUgb3JkZXIgYnkgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgdGhlIGxpc3QgaXMgc29ydGVkIGJ5IHRoYXQgb3JkZXJpbmcgcHJpb3IgdG8gcmV0dXJuaW5nIHRoZSBmaXJzdCBlbGVtZW50Lg0KCQkJDQpJZiB0aGUgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9Ik9wZXJhdG9yRXhwcmVzc2lvbiI+DQoJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJzb3VyY2UiIHR5cGU9IkV4cHJlc3Npb24iLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0ib3JkZXJCeSIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJMYXN0Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgTGFzdCBvcGVyYXRvciByZXR1cm5zIHRoZSBsYXN0IGVsZW1lbnQgaW4gYSBsaXN0LiBJZiB0aGUgb3JkZXIgYnkgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgdGhlIGxpc3QgaXMgc29ydGVkIGJ5IHRoYXQgb3JkZXJpbmcgcHJpb3IgdG8gcmV0dXJuaW5nIHRoZSBsYXN0IGVsZW1lbnQuDQoJCQkNCklmIHRoZSBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iT3BlcmF0b3JFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InNvdXJjZSIgdHlwZT0iRXhwcmVzc2lvbiIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcmRlckJ5IiB0eXBlPSJ4czpzdHJpbmciIHVzZT0ib3B0aW9uYWwiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNsaWNlIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgU2xpY2Ugb3BlcmF0b3IgcmV0dXJucyBhIHBvcnRpb24gb2YgdGhlIGVsZW1lbnRzIGluIGEgbGlzdCwgYmVnaW5uaW5nIGF0IHRoZSBzdGFydCBpbmRleCBhbmQgZW5kaW5nIGp1c3QgYmVmb3JlIHRoZSBlbmRpbmcgaW5kZXguDQoJCQkNCklmIHRoZSBzb3VyY2UgbGlzdCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuDQoNCklmIHRoZSBzdGFydEluZGV4IGlzIG51bGwsIHRoZSBzbGljZSBiZWdpbnMgYXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGxpc3QuDQoNCklmIHRoZSBlbmRJbmRleCBpcyBudWxsLCB0aGUgc2xpY2UgY29udGludWVzIHRvIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIGxpc3QuDQoNCklmIHRoZSBzdGFydEluZGV4IG9yIGVuZEluZGV4IGlzIGxlc3MgdGhhbiAwLCBvciBpZiB0aGUgZW5kSW5kZXggaXMgbGVzcyB0aGFuIHRoZSBzdGFydEluZGV4LCB0aGUgcmVzdWx0IGlzIGFuIGVtcHR5IGxpc3QuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iT3BlcmF0b3JFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InNvdXJjZSIgdHlwZT0iRXhwcmVzc2lvbiIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJzdGFydEluZGV4IiB0eXBlPSJFeHByZXNzaW9uIi8+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9ImVuZEluZGV4IiB0eXBlPSJFeHByZXNzaW9uIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPCEtLSBJbmRleGVyIChhbHJlYWR5IGRlZmluZWQpIC0tPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJJbmRleE9mIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgSW5kZXhPZiBvcGVyYXRvciByZXR1cm5zIHRoZSAwLWJhc2VkIGluZGV4IG9mIHRoZSBnaXZlbiBlbGVtZW50IGluIHRoZSBnaXZlbiBzb3VyY2UgbGlzdC4NCg0KVGhlIG9wZXJhdG9yIHVzZXMgZXF1YWxpdHkgc2VtYW50aWNzIGFzIGRlZmluZWQgaW4gdGhlIEVxdWFsIG9wZXJhdG9yIHRvIGRldGVybWluZSB0aGUgaW5kZXguIFRoZSBzZWFyY2ggaXMgbGluZWFyLCBhbmQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBlcXVhbGl0eSBjb21wYXJpc29uIHJldHVybnMgdHJ1ZS4NCg0KSWYgdGhlIGxpc3QgaXMgZW1wdHksIG9yIG5vIGVsZW1lbnQgaXMgZm91bmQsIHRoZSByZXN1bHQgaXMgLTEuDQoNCklmIGVpdGhlciBhcmd1bWVudCBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iT3BlcmF0b3JFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InNvdXJjZSIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iZWxlbWVudCIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8IS0tIENvbnRhaW5zIChhbHJlYWR5IGRlZmluZWQpIC0tPg0KCTwhLS0gSW4gKGFscmVhZHkgZGVmaW5lZCkgLS0+DQoJPCEtLSBJbmNsdWRlcyAoYWxyZWFkIGRlZmluZWQpIC0tPg0KCTwhLS0gSW5jbHVkZWRJbiAoYWxyZWFkeSBkZWZpbmVkKSAtLT4NCgk8IS0tIFByb3BlckluY2x1ZGVzIChhbHJlYWR5IGRlZmluZWQpIC0tPg0KCTwhLS0gUHJvcGVySW5jbHVkZWRJbiAoYWxyZWFkeSBkZWZpbmVkKSAtLT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iRmxhdHRlbiI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEZsYXR0ZW4gb3BlcmF0b3IgZmxhdHRlbnMgYSBsaXN0IG9mIGxpc3RzIGludG8gYSBzaW5nbGUgbGlzdC4NCgkJCQ0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJTb3J0Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgU29ydCBvcGVyYXRvciByZXR1cm5zIGEgbGlzdCB3aXRoIGFsbCB0aGUgZWxlbWVudHMgaW4gc291cmNlLCBzb3J0ZWQgYXMgZGVzY3JpYmVkIGJ5IHRoZSBieSBlbGVtZW50Lg0KDQpXaGVuIHRoZSBzb3J0IGVsZW1lbnRzIGRvIG5vdCBwcm92aWRlIGEgdW5pcXVlIG9yZGVyaW5nIChpLmUuIHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgb2YgZHVwbGljYXRlIHNvcnQgdmFsdWVzIGluIHRoZSByZXN1bHQpLCB0aGUgb3JkZXIgb2YgZHVwbGljYXRlcyBpcyB1bnNwZWNpZmllZC4NCgkJCQ0KSWYgdGhlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InNvdXJjZSIgdHlwZT0iRXhwcmVzc2lvbiIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJieSIgdHlwZT0iU29ydEJ5SXRlbSIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJGb3JFYWNoIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgRm9yRWFjaCBleHByZXNzaW9uIGl0ZXJhdGVzIG92ZXIgdGhlIGxpc3Qgb2YgZWxlbWVudHMgaW4gdGhlIHNvdXJjZSBlbGVtZW50LCBhbmQgcmV0dXJucyBhIGxpc3Qgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgZWxlbWVudHMsIHdoZXJlIGVhY2ggZWxlbWVudCBpbiB0aGUgbmV3IGxpc3QgaXMgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBlbGVtZW50IGV4cHJlc3Npb24gZm9yIGVhY2ggZWxlbWVudCBpbiB0aGUgc291cmNlIGxpc3QuDQoJCQkNCklmIHRoZSBzb3VyY2UgYXJndW1lbnQgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpJZiB0aGUgZWxlbWVudCBhcmd1bWVudCBldmFsdWF0ZXMgdG8gbnVsbCBmb3Igc29tZSBpdGVtIGluIHRoZSBzb3VyY2UgbGlzdCwgdGhlIHJlc3VsdGluZyBsaXN0IHdpbGwgY29udGFpbiBhIG51bGwgZm9yIHRoYXQgZWxlbWVudC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InNvdXJjZSIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iZWxlbWVudCIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0ic2NvcGUiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJvcHRpb25hbCIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVwZWF0Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgUmVwZWF0IGV4cHJlc3Npb24gcGVyZm9ybXMgc3VjY2Vzc2l2ZSBGb3JFYWNoIHVudGlsIG5vIG5ldyBlbGVtZW50cyBhcmUgcmV0dXJuZWQuDQoJCQkNClRoZSBvcGVyYXRvciB1c2VzIGVxdWFsaXR5IGNvbXBhcmlzb24gc2VtYW50aWNzIGFzIGRlZmluZWQgaW4gdGhlIEVxdWFsIG9wZXJhdG9yLg0KDQpJZiB0aGUgc291cmNlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC4NCg0KSWYgdGhlIGVsZW1lbnQgYXJndW1lbnQgZXZhbHVhdGVzIHRvIG51bGwgZm9yIHNvbWUgaXRlbSBpbiB0aGUgc291cmNlIGxpc3QsIHRoZSByZXN1bHRpbmcgbGlzdCB3aWxsIGNvbnRhaW4gYSBudWxsIGZvciB0aGF0IGVsZW1lbnQuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iRXhwcmVzc2lvbiI+DQoJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJzb3VyY2UiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9ImVsZW1lbnQiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InNjb3BlIiB0eXBlPSJ4czpzdHJpbmciIHVzZT0ib3B0aW9uYWwiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRpc3RpbmN0Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgRGlzdGluY3Qgb3BlcmF0b3IgdGFrZXMgYSBsaXN0IG9mIGVsZW1lbnRzIGFuZCByZXR1cm5zIGEgbGlzdCBjb250YWluaW5nIG9ubHkgdGhlIHVuaXF1ZSBlbGVtZW50cyB3aXRoaW4gdGhlIGlucHV0LiBGb3IgZXhhbXBsZSwgZ2l2ZW4gdGhlIGxpc3Qgb2YgaW50ZWdlcnMgeyAxLCAxLCAxLCAyLCAyLCAzLCA0LCA0IH0sIHRoZSByZXN1bHQgb2YgRGlzdGluY3Qgd291bGQgYmUgeyAxLCAyLCAzLCA0IH0uDQoJCQkNClRoZSBvcGVyYXRvciB1c2VzIGVxdWFsaXR5IGNvbXBhcmlzb24gc2VtYW50aWNzIGFzIGRlZmluZWQgaW4gdGhlIEVxdWFsIG9wZXJhdG9yLCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBudWxscyBhcmUgY29uc2lkZXJlZCBlcXVhbCBmb3IgdGhlIHB1cnBvc2VzIG9mIGRpc3RpbmN0IGRldGVybWluYXRpb24uIFRoaXMgbWVhbnMgdGhhdCBtdWx0aXBsZSBudWxscyBpbiB0aGUgaW5wdXQgd2lsbCByZXN1bHQgaW4gYSBzaW5nbGUgbnVsbCBpbiB0aGUgb3V0cHV0Lg0KDQpJZiB0aGUgc291cmNlIGFyZ3VtZW50IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJVbmFyeUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJDdXJyZW50Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQ3VycmVudCBleHByZXNzaW9uIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBvYmplY3QgY3VycmVudGx5IGluIHNjb3BlLiBGb3IgZXhhbXBsZSwgd2l0aGluIGEgRm9yRWFjaCBleHByZXNzaW9uLCB0aGlzIHJldHVybnMgdGhlIGN1cnJlbnQgZWxlbWVudCBiZWluZyBjb25zaWRlcmVkIGluIHRoZSBpdGVyYXRpb24uDQoJCQkNCkl0IGlzIGFuIGVycm9yIHRvIGludm9rZSB0aGUgQ3VycmVudCBvcGVyYXRvciBvdXRzaWRlIG9mIGEgc2NvcGVkIG9wZXJhdGlvbi48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InNjb3BlIiB0eXBlPSJ4czpzdHJpbmciIHVzZT0ib3B0aW9uYWwiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikl0ZXJhdGlvbiI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEl0ZXJhdGlvbiBleHByZXNzaW9uIHJldHVybnMgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIG51bWJlciBvZiBhIHNjb3BlZCBvcGVyYXRpb24uPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iRXhwcmVzc2lvbiI+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY29wZSIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJUb3RhbCI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFRvdGFsIGV4cHJlc3Npb24gcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgdG90YWwgYWdncmVnYXRpb24gYWNjdW11bGF0b3IgaW4gYW4gYWdncmVnYXRlIG9wZXJhdGlvbi48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InNjb3BlIiB0eXBlPSJ4czpzdHJpbmciIHVzZT0ib3B0aW9uYWwiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNpbmdsZXRvbkZyb20iPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBTaW5nbGV0b25Gcm9tIGV4cHJlc3Npb24gZXh0cmFjdHMgYSBzaW5nbGUgZWxlbWVudCBmcm9tIHRoZSBzb3VyY2UgbGlzdC4gSWYgdGhlIHNvdXJjZSBsaXN0IGlzIGVtcHR5LCB0aGUgcmVzdWx0IGlzIG51bGwuIElmIHRoZSBzb3VyY2UgbGlzdCBjb250YWlucyBvbmUgZWxlbWVudCwgdGhhdCBlbGVtZW50IGlzIHJldHVybmVkLiBJZiB0aGUgbGlzdCBjb250YWlucyBtb3JlIHRoYW4gb25lIGVsZW1lbnQsIGEgcnVuLXRpbWUgZXJyb3IgaXMgdGhyb3duLiBJZiB0aGUgc291cmNlIGxpc3QgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IlVuYXJ5RXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPCEtLSBBZ2dyZWdhdGUgT3BlcmF0b3JzIC0tPg0KCTwhLS0gVE9ETzogU3VwcG9ydCBncm91cGluZz8gLS0+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFnZ3JlZ2F0ZUV4cHJlc3Npb24iIGFic3RyYWN0PSJ0cnVlIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5BZ2dyZWdhdGUgZXhwcmVzc2lvbnMgcGVyZm9ybSBvcGVyYXRpb25zIG9uIGxpc3RzIG9mIGRhdGEsIGVpdGhlciBkaXJlY3RseSBvbiBhIGxpc3Qgb2Ygc2NhbGFycywgb3IgaW5kaXJlY3RseSBvbiBhIGxpc3Qgb2Ygb2JqZWN0cywgd2l0aCBhIHJlZmVyZW5jZSB0byBhIHByb3BlcnR5IHByZXNlbnQgb24gZWFjaCBvYmplY3QgaW4gdGhlIGxpc3QuDQoJCQkNCkFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBkZWFsIHdpdGggbWlzc2luZyBpbmZvcm1hdGlvbiBieSBleGNsdWRpbmcgbWlzc2luZyB2YWx1ZXMgZnJvbSBjb25zaWRlcmF0aW9uIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSBhZ2dyZWdhdGVkIG9wZXJhdGlvbi4gRm9yIGV4YW1wbGUsIGluIGEgU3VtIG92ZXIgRG9zZSwgYW55IGluc3RhbmNlIG9mIE1lZGljYXRpb24gd2l0aCBubyB2YWx1ZSBmb3IgRG9zZSB3b3VsZCBiZSBpZ25vcmVkLg0KDQpBbiBhZ2dyZWdhdGUgb3BlcmF0aW9uIHBlcmZvcm1lZCBvdmVyIGFuIGVtcHR5IGxpc3QgaXMgZGVmaW5lZCB0byByZXR1cm4gbnVsbCwgZXhjZXB0IGFzIG5vdGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciBlYWNoIG9wZXJhdG9yIChDb3VudCwgQWxsVHJ1ZSwgYW5kIEFueVRydWUgYXJlIHRoZSBleGNlcHRpb25zKS48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InNpZ25hdHVyZSIgdHlwZT0iVHlwZVNwZWNpZmllciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQoJCQkJCQk8eHM6YW5ub3RhdGlvbj4NCgkJCQkJCQk8eHM6ZG9jdW1lbnRhdGlvbj5TcGVjaWZpZXMgdGhlIGRlY2xhcmVkIHNpZ25hdHVyZSBvZiB0aGUgb3BlcmF0b3Igb3IgZnVuY3Rpb24gYmVpbmcgY2FsbGVkLiBJZiBubyBzaWduYXR1cmUgaXMgc3BlY2lmaWVkLCB0aGUgcnVuLXRpbWUgdHlwZXMgb2YgdGhlIG9wZXJhbmRzIHNob3VsZCBiZSB1c2VkIHRvIHJlc29sdmUgYW55IG92ZXJsb2FkLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJCQkJCTwveHM6YW5ub3RhdGlvbj4NCgkJCQkJPC94czplbGVtZW50Pg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJzb3VyY2UiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InBhdGgiIHR5cGU9InhzOnN0cmluZyIgdXNlPSJvcHRpb25hbCIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iQWdncmVnYXRlIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQWdncmVnYXRlIG9wZXJhdG9yIHBlcmZvcm1zIGN1c3RvbSBhZ2dyZWdhdGlvbiBieSBldmFsdWF0aW5nIGFuIGV4cHJlc3Npb24gZm9yIGVhY2ggZWxlbWVudCBvZiB0aGUgc291cmNlLg0KCQkJDQpJZiBhIHBhdGggaXMgc3BlY2lmaWVkLCB0aGUgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgc3BlY2lmaWVkIGJ5IHRoZSBwYXRoIGZvciBlYWNoIGVsZW1lbnQgb2YgdGhlIHNvdXJjZS4NCg0KVGhlIGl0ZXJhdGlvbiBleHByZXNzaW9uIGhhcyBhY2Nlc3MgdG8gdGhlICR0aGlzLCAkaW5kZXgsIGFuZCAkdG90YWwgdmFyaWFibGVzLiBBdCB0aGUgZW5kIG9mIGVhY2ggaXRlcmF0aW9uLCB0aGUgdmFsdWUgb2YgdGhlICR0b3RhbCB2YXJpYWJsZSBpcyB1cGRhdGVkIHRvIHRoZSByZXN1bHQgb2YgdGhlIGl0ZXJhdGlvbiBleHByZXNzaW9uLiBUaGUgdmFsdWUgb2YgdGhlICR0b3RhbCB2YXJpYWJsZSBpcyBpbml0aWFsaXplZCB0byB0aGUgcmVzdWx0IG9mIHRoZSBpbml0aWFsVmFsdWUgZXhwcmVzc2lvbiwgaWYgcHJlc2VudC4NCg0KSWYgdGhlIGxpc3QgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkFnZ3JlZ2F0ZUV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iaXRlcmF0aW9uIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJpbml0aWFsVmFsdWUiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNvdW50Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQ291bnQgb3BlcmF0b3IgcmV0dXJucyB0aGUgbnVtYmVyIG9mIG5vbi1udWxsIGVsZW1lbnRzIGluIHRoZSBzb3VyY2UuDQoJCQkNCklmIGEgcGF0aCBpcyBzcGVjaWZpZWQsIHRoZSBjb3VudCByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhhdCBoYXZlIGEgdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eSBzcGVjaWZpZWQgYnkgdGhlIHBhdGguDQoNCklmIHRoZSBsaXN0IGlzIGVtcHR5LCB0aGUgcmVzdWx0IGlzIDAuDQoNCklmIHRoZSBsaXN0IGlzIG51bGwsIHRoZSByZXN1bHQgaXMgMC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJBZ2dyZWdhdGVFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iU3VtIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgU3VtIG9wZXJhdG9yIHJldHVybnMgdGhlIHN1bSBvZiBub24tbnVsbCBlbGVtZW50cyBpbiB0aGUgc291cmNlLg0KCQkJDQpJZiBhIHBhdGggaXMgc3BlY2lmaWVkLCBlbGVtZW50cyB3aXRoIG5vIHZhbHVlIGZvciB0aGUgcHJvcGVydHkgc3BlY2lmaWVkIGJ5IHRoZSBwYXRoIGFyZSBpZ25vcmVkLiANCg0KSWYgdGhlIHNvdXJjZSBjb250YWlucyBubyBub24tbnVsbCBlbGVtZW50cywgbnVsbCBpcyByZXR1cm5lZC4NCg0KSWYgdGhlIGxpc3QgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkFnZ3JlZ2F0ZUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJQcm9kdWN0Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgUHJvZHVjdCBvcGVyYXRvciByZXR1cm5zIHRoZSBnZW9tZXRyaWMgcHJvZHVjdCBvZiBub24tbnVsbCBlbGVtZW50cyBpbiB0aGUgc291cmNlLg0KCQkJDQpJZiBhIHBhdGggaXMgc3BlY2lmaWVkLCBlbGVtZW50cyB3aXRoIG5vIHZhbHVlIGZvciB0aGUgcHJvcGVydHkgc3BlY2lmaWVkIGJ5IHRoZSBwYXRoIGFyZSBpZ25vcmVkLiANCg0KSWYgdGhlIHNvdXJjZSBjb250YWlucyBubyBub24tbnVsbCBlbGVtZW50cywgbnVsbCBpcyByZXR1cm5lZC4NCg0KSWYgdGhlIGxpc3QgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkFnZ3JlZ2F0ZUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJNaW4iPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBNaW4gb3BlcmF0b3IgcmV0dXJucyB0aGUgbWluaW11bSBlbGVtZW50IGluIHRoZSBzb3VyY2UuIENvbXBhcmlzb24gc2VtYW50aWNzIGFyZSBkZWZpbmVkIGJ5IHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycyBmb3IgdGhlIHR5cGUgb2YgdGhlIHZhbHVlcyBiZWluZyBhZ2dyZWdhdGVkLg0KCQkJDQpJZiBhIHBhdGggaXMgc3BlY2lmaWVkLCBlbGVtZW50cyB3aXRoIG5vIHZhbHVlIGZvciB0aGUgcHJvcGVydHkgc3BlY2lmaWVkIGJ5IHRoZSBwYXRoIGFyZSBpZ25vcmVkLg0KDQpJZiB0aGUgc291cmNlIGNvbnRhaW5zIG5vIG5vbi1udWxsIGVsZW1lbnRzLCBudWxsIGlzIHJldHVybmVkLg0KDQpJZiB0aGUgc291cmNlIGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJBZ2dyZWdhdGVFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iTWF4Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgTWF4IG9wZXJhdG9yIHJldHVybnMgdGhlIG1heGltdW0gZWxlbWVudCBpbiB0aGUgc291cmNlLiBDb21wYXJpc29uIHNlbWFudGljcyBhcmUgZGVmaW5lZCBieSB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMgZm9yIHRoZSB0eXBlIG9mIHRoZSB2YWx1ZXMgYmVpbmcgYWdncmVnYXRlZC4NCg0KSWYgYSBwYXRoIGlzIHNwZWNpZmllZCwgZWxlbWVudHMgd2l0aCBubyB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5IHNwZWNpZmllZCBieSB0aGUgcGF0aCBhcmUgaWdub3JlZC4NCg0KSWYgdGhlIHNvdXJjZSBjb250YWlucyBubyBub24tbnVsbCBlbGVtZW50cywgbnVsbCBpcyByZXR1cm5lZC4NCg0KSWYgdGhlIHNvdXJjZSBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQWdncmVnYXRlRXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkF2ZyI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEF2ZyBvcGVyYXRvciByZXR1cm5zIHRoZSBhdmVyYWdlIG9mIHRoZSBub24tbnVsbCBlbGVtZW50cyBpbiBzb3VyY2UuDQoJCQkNCklmIGEgcGF0aCBpcyBzcGVjaWZpZWQsIGVsZW1lbnRzIHdpdGggbm8gdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eSBzcGVjaWZpZWQgYnkgdGhlIHBhdGggYXJlIGlnbm9yZWQuDQoJCQkNCklmIHRoZSBzb3VyY2UgY29udGFpbnMgbm8gbm9uLW51bGwgZWxlbWVudHMsIG51bGwgaXMgcmV0dXJuZWQuDQoNCklmIHRoZSBzb3VyY2UgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkFnZ3JlZ2F0ZUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJHZW9tZXRyaWNNZWFuIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgR2VvbWV0cmljTWVhbiBvcGVyYXRvciByZXR1cm5zIHRoZSBnZW9tZXRyaWMgbWVhbiBvZiB0aGUgbm9uLW51bGwgZWxlbWVudHMgaW4gc291cmNlLg0KCQkJDQpJZiBhIHBhdGggaXMgc3BlY2lmaWVkLCBlbGVtZW50cyB3aXRoIG5vIHZhbHVlIGZvciB0aGUgcHJvcGVydHkgc3BlY2lmaWVkIGJ5IHRoZSBwYXRoIGFyZSBpZ25vcmVkLg0KCQkJDQpJZiB0aGUgc291cmNlIGNvbnRhaW5zIG5vIG5vbi1udWxsIGVsZW1lbnRzLCBudWxsIGlzIHJldHVybmVkLg0KDQpJZiB0aGUgc291cmNlIGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJBZ2dyZWdhdGVFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iTWVkaWFuIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgTWVkaWFuIG9wZXJhdG9yIHJldHVybnMgdGhlIG1lZGlhbiBvZiB0aGUgZWxlbWVudHMgaW4gc291cmNlLg0KCQkJDQpJZiBhIHBhdGggaXMgc3BlY2lmaWVkLCBlbGVtZW50cyB3aXRoIG5vIHZhbHVlIGZvciB0aGUgcHJvcGVydHkgc3BlY2lmaWVkIGJ5IHRoZSBwYXRoIGFyZSBpZ25vcmVkLg0KDQpJZiB0aGUgc291cmNlIGNvbnRhaW5zIG5vIG5vbi1udWxsIGVsZW1lbnRzLCBudWxsIGlzIHJldHVybmVkLg0KDQpJZiB0aGUgc291cmNlIGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJBZ2dyZWdhdGVFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iTW9kZSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIE1vZGUgb3BlcmF0b3IgcmV0dXJucyB0aGUgc3RhdGlzdGljYWwgbW9kZSBvZiB0aGUgZWxlbWVudHMgaW4gc291cmNlLg0KCQkJDQpJZiBhIHBhdGggaXMgc3BlY2lmaWVkLCBlbGVtZW50cyB3aXRoIG5vIHZhbHVlIGZvciB0aGUgcHJvcGVydHkgc3BlY2lmaWVkIGJ5IHRoZSBwYXRoIGFyZSBpZ25vcmVkLg0KDQpJZiB0aGUgc291cmNlIGNvbnRhaW5zIG5vIG5vbi1udWxsIGVsZW1lbnRzLCBudWxsIGlzIHJldHVybmVkLg0KDQpJZiB0aGUgc291cmNlIGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJBZ2dyZWdhdGVFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iVmFyaWFuY2UiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBWYXJpYW5jZSBvcGVyYXRvciByZXR1cm5zIHRoZSBzdGF0aXN0aWNhbCB2YXJpYW5jZSBvZiB0aGUgZWxlbWVudHMgaW4gc291cmNlLg0KCQkJDQpJZiBhIHBhdGggaXMgc3BlY2lmaWVkLCBlbGVtZW50cyB3aXRoIG5vIHZhbHVlIGZvciB0aGUgcHJvcGVydHkgc3BlY2lmaWVkIGJ5IHRoZSBwYXRoIGFyZSBpZ25vcmVkLg0KDQpJZiB0aGUgc291cmNlIGNvbnRhaW5zIG5vIG5vbi1udWxsIGVsZW1lbnRzLCBudWxsIGlzIHJldHVybmVkLg0KDQpJZiB0aGUgc291cmNlIGlzIG51bGwsIHRoZSByZXN1bHQgaXMgbnVsbC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJBZ2dyZWdhdGVFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iUG9wdWxhdGlvblZhcmlhbmNlIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgUG9wdWxhdGlvblZhcmlhbmNlIG9wZXJhdG9yIHJldHVybnMgdGhlIHN0YXRpc3RpY2FsIHBvcHVsYXRpb24gdmFyaWFuY2Ugb2YgdGhlIGVsZW1lbnRzIGluIHNvdXJjZS4NCgkJCQ0KSWYgYSBwYXRoIGlzIHNwZWNpZmllZCwgZWxlbWVudHMgd2l0aCBubyB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5IHNwZWNpZmllZCBieSB0aGUgcGF0aCBhcmUgaWdub3JlZC4NCg0KSWYgdGhlIHNvdXJjZSBjb250YWlucyBubyBub24tbnVsbCBlbGVtZW50cywgbnVsbCBpcyByZXR1cm5lZC4NCg0KSWYgdGhlIHNvdXJjZSBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQWdncmVnYXRlRXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlN0ZERldiI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFN0ZERldiBvcGVyYXRvciByZXR1cm5zIHRoZSBzdGF0aXN0aWNhbCBzdGFuZGFyZCBkZXZpYXRpb24gb2YgdGhlIGVsZW1lbnRzIGluIHNvdXJjZS4NCgkJCQ0KSWYgYSBwYXRoIGlzIHNwZWNpZmllZCwgZWxlbWVudHMgd2l0aCBubyB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5IHNwZWNpZmllZCBieSB0aGUgcGF0aCBhcmUgaWdub3JlZC4NCg0KSWYgdGhlIHNvdXJjZSBjb250YWlucyBubyBub24tbnVsbCBlbGVtZW50cywgbnVsbCBpcyByZXR1cm5lZC4NCg0KSWYgdGhlIGxpc3QgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkFnZ3JlZ2F0ZUV4cHJlc3Npb24iLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJQb3B1bGF0aW9uU3RkRGV2Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgUG9wdWxhdGlvblN0ZERldiBvcGVyYXRvciByZXR1cm5zIHRoZSBzdGF0aXN0aWNhbCBzdGFuZGFyZCBkZXZpYXRpb24gb2YgdGhlIGVsZW1lbnRzIGluIHNvdXJjZS4NCgkJCQ0KSWYgYSBwYXRoIGlzIHNwZWNpZmllZCwgZWxlbWVudHMgd2l0aCBubyB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5IHNwZWNpZmllZCBieSB0aGUgcGF0aCBhcmUgaWdub3JlZC4NCg0KSWYgdGhlIHNvdXJjZSBjb250YWlucyBubyBub24tbnVsbCBlbGVtZW50cywgbnVsbCBpcyByZXR1cm5lZC4NCg0KSWYgdGhlIHNvdXJjZSBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQWdncmVnYXRlRXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFsbFRydWUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBBbGxUcnVlIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiBhbGwgdGhlIG5vbi1udWxsIGVsZW1lbnRzIGluIHNvdXJjZSBhcmUgdHJ1ZS4NCgkJCQ0KSWYgYSBwYXRoIGlzIHNwZWNpZmllZCwgZWxlbWVudHMgd2l0aCBubyB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5IHNwZWNpZmllZCBieSB0aGUgcGF0aCBhcmUgaWdub3JlZC4NCg0KSWYgdGhlIHNvdXJjZSBjb250YWlucyBubyBub24tbnVsbCBlbGVtZW50cywgdHJ1ZSBpcyByZXR1cm5lZC4NCg0KSWYgdGhlIHNvdXJjZSBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIHRydWUuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQWdncmVnYXRlRXhwcmVzc2lvbiIvPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFueVRydWUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBBbnlUcnVlIG9wZXJhdG9yIHJldHVybnMgdHJ1ZSBpZiBhbnkgbm9uLW51bGwgZWxlbWVudCBpbiBzb3VyY2UgaXMgdHJ1ZS4NCgkJCQ0KSWYgYSBwYXRoIGlzIHNwZWNpZmllZCwgZWxlbWVudHMgd2l0aCBubyB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5IHNwZWNpZmllZCBieSB0aGUgcGF0aCBhcmUgaWdub3JlZC4NCg0KSWYgdGhlIHNvdXJjZSBjb250YWlucyBubyBub24tbnVsbCBlbGVtZW50cywgZmFsc2UgaXMgcmV0dXJuZWQuDQoNCklmIHRoZSBzb3VyY2UgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBmYWxzZS48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJBZ2dyZWdhdGVFeHByZXNzaW9uIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8IS0tIERhdGEgT3BlcmF0b3JzIC0tPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJQcm9wZXJ0eSI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIFByb3BlcnR5IG9wZXJhdG9yIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBvbiBzb3VyY2Ugc3BlY2lmaWVkIGJ5IHRoZSBwYXRoIGF0dHJpYnV0ZS4NCgkJCQ0KSWYgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHNvdXJjZSBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuDQoNClRoZSBwYXRoIGF0dHJpYnV0ZSBtYXkgaW5jbHVkZSBxdWFsaWZpZXJzICguKSBhbmQgaW5kZXhlcnMgKFt4XSkuIEluZGV4ZXJzIG11c3QgYmUgbGl0ZXJhbCBpbnRlZ2VyIHZhbHVlcy4NCgkJCQ0KSWYgdGhlIHBhdGggYXR0cmlidXRlIGNvbnRhaW5zIHF1YWxpZmllcnMgb3IgaW5kZXhlcnMsIGVhY2ggcXVhbGlmaWVyIG9yIGluZGV4ZXIgaXMgdHJhdmVyc2VkIHRvIG9idGFpbiB0aGUgYWN0dWFsIHZhbHVlLiBJZiB0aGUgb2JqZWN0IG9mIHRoZSBwcm9wZXJ0eSBhY2Nlc3MgYXQgYW55IHBvaW50IGluIHRyYXZlcnNpbmcgdGhlIHBhdGggaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLg0KDQpJZiBhIHNjb3BlIGlzIHNwZWNpZmllZCwgdGhlIG5hbWUgaXMgdXNlZCB0byByZXNvbHZlIHRoZSBzY29wZSBpbiB3aGljaCB0aGUgcGF0aCB3aWxsIGJlIHJlc29sdmVkLiBTY29wZXMgY2FuIGJlIG5hbWVkIGJ5IG9wZXJhdG9ycyBzdWNoIGFzIEZpbHRlciBhbmQgRm9yRWFjaC4NCg0KUHJvcGVydHkgZXhwcmVzc2lvbnMgY2FuIGFsc28gYmUgdXNlZCB0byBhY2Nlc3MgdGhlIGluZGl2aWR1YWwgcG9pbnRzIGFuZCBjbG9zZWQgaW5kaWNhdG9ycyBmb3IgaW50ZXJ2YWwgdHlwZXMgdXNpbmcgdGhlIHByb3BlcnR5IG5hbWVzIGxvdywgaGlnaCwgbG93Q2xvc2VkLCBhbmQgaGlnaENsb3NlZC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InNvdXJjZSIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0icGF0aCIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9InJlcXVpcmVkIi8+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY29wZSIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9Im9wdGlvbmFsIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTwhLS0gUXVlcmllcyAtLT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iQWxpYXNlZFF1ZXJ5U291cmNlIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQWxpYXNlZFF1ZXJ5U291cmNlIGVsZW1lbnQgZGVmaW5lcyBhIHNpbmdsZSBzb3VyY2UgZm9yIGluY2x1c2lvbiBpbiBhIHF1ZXJ5IHNjb3BlLiBUaGUgdHlwZSBvZiB0aGUgc291cmNlIGlzIGRldGVybWluZWQgYnkgdGhlIGV4cHJlc3Npb24gZWxlbWVudCwgYW5kIHRoZSBzb3VyY2UgY2FuIGJlIGFjY2Vzc2VkIHdpdGhpbiB0aGUgcXVlcnkgc2NvcGUgYnkgdGhlIGdpdmVuIGFsaWFzLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkVsZW1lbnQiPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iZXhwcmVzc2lvbiIgdHlwZT0iRXhwcmVzc2lvbiIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlhcyIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9InJlcXVpcmVkIi8+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJMZXRDbGF1c2UiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBMZXRDbGF1c2UgZWxlbWVudCBhbGxvd3MgYW55IG51bWJlciBvZiBleHByZXNzaW9uIGRlZmluaXRpb25zIHRvIGJlIGludHJvZHVjZWQgd2l0aGluIGEgcXVlcnkgc2NvcGUuIERlZmluZWQgZXhwcmVzc2lvbnMgY2FuIGJlIHJlZmVyZW5jZWQgYnkgbmFtZSB3aXRoaW4gdGhlIHF1ZXJ5IHNjb3BlLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkVsZW1lbnQiPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iZXhwcmVzc2lvbiIgdHlwZT0iRXhwcmVzc2lvbiIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZGVudGlmaWVyIiB0eXBlPSJ4czpzdHJpbmciIHVzZT0icmVxdWlyZWQiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlbGF0aW9uc2hpcENsYXVzZSIgYWJzdHJhY3Q9InRydWUiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBSZWxhdGlvbnNoaXBDbGF1c2UgZWxlbWVudCBhbGxvd3MgcmVsYXRlZCBzb3VyY2VzIHRvIGJlIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGVsZW1lbnRzIGluY2x1ZGVkIGZyb20gYW5vdGhlciBzb3VyY2UgaW4gYSBxdWVyeSBzY29wZS4gTm90ZSB0aGF0IHRoZSBlbGVtZW50cyByZWZlcmVuY2VkIGJ5IHRoZSByZWxhdGlvbnNoaXAgY2xhdXNlIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiB0aGUgc3VjaFRoYXQgY29uZGl0aW9uLCBhbmQgdGhhdCBlbGVtZW50cyBvZiB0aGUgcmVsYXRlZCBzb3VyY2UgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcXVlcnkgc2NvcGUuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iQWxpYXNlZFF1ZXJ5U291cmNlIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InN1Y2hUaGF0IiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjEiIG1heE9jY3Vycz0iMSIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJXaXRoIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgV2l0aCBjbGF1c2UgcmVzdHJpY3RzIHRoZSBlbGVtZW50cyBvZiBhIGdpdmVuIHNvdXJjZSB0byBvbmx5IHRob3NlIGVsZW1lbnRzIHRoYXQgaGF2ZSBlbGVtZW50cyBpbiB0aGUgcmVsYXRlZCBzb3VyY2UgdGhhdCBzYXRpc2Z5IHRoZSBzdWNoVGhhdCBjb25kaXRpb24uIFRoaXMgb3BlcmF0aW9uIGlzIGtub3duIGFzIGEgc2VtaS1qb2luIGluIGRhdGFiYXNlIGxhbmd1YWdlcy48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJSZWxhdGlvbnNoaXBDbGF1c2UiLz4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJXaXRob3V0Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgV2l0aG91dCBjbGF1c2UgcmVzdHJpY3RzIHRoZSBlbGVtZW50cyBvZiBhIGdpdmVuIHNvdXJjZSB0byBvbmx5IHRob3NlIGVsZW1lbnRzIHRoYXQgZG8gbm90IGhhdmUgZWxlbWVudHMgaW4gdGhlIHJlbGF0ZWQgc291cmNlIHRoYXQgc2F0aXNmeSB0aGUgc3VjaFRoYXQgY29uZGl0aW9uLiBUaGlzIG9wZXJhdGlvbiBpcyBrbm93biBhcyBhIHNlbWktZGlmZmVyZW5jZSBpbiBkYXRhYmFzZSBsYW5ndWFnZXMuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iUmVsYXRpb25zaGlwQ2xhdXNlIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6c2ltcGxlVHlwZSBuYW1lPSJTb3J0RGlyZWN0aW9uIj4NCgkJPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQoJCQk8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFzYyIvPg0KCQkJPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhc2NlbmRpbmciLz4NCgkJCTx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGVzYyIvPg0KCQkJPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkZXNjZW5kaW5nIi8+DQoJCTwveHM6cmVzdHJpY3Rpb24+DQoJPC94czpzaW1wbGVUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJTb3J0QnlJdGVtIiBhYnN0cmFjdD0idHJ1ZSI+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iRWxlbWVudCI+DQoJCQkJPHhzOmF0dHJpYnV0ZSBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9IlNvcnREaXJlY3Rpb24iLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkJ5RGlyZWN0aW9uIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQnlEaXJlY3Rpb24gZWxlbWVudCBzcGVjaWZpZXMgdGhhdCB0aGUgc29ydCBzaG91bGQgYmUgcGVyZm9ybWVkIHVzaW5nIHRoZSBnaXZlbiBkaXJlY3Rpb24uIFRoaXMgYXBwcm9hY2ggaXMgdXNlZCB3aGVuIHRoZSByZXN1bHQgb2YgdGhlIHF1ZXJ5IGlzIGEgbGlzdCBvZiBub24tdHVwbGUgZWxlbWVudHMgYW5kIG9ubHkgdGhlIHNvcnQgZGlyZWN0aW9uIG5lZWRzIHRvIGJlIHNwZWNpZmllZC48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJTb3J0QnlJdGVtIi8+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iQnlDb2x1bW4iPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBCeUNvbHVtbiBlbGVtZW50IHNwZWNpZmllcyB0aGF0IHRoZSBzb3J0IHNob3VsZCBiZSBwZXJmb3JtZWQgdXNpbmcgdGhlIGdpdmVuIGNvbHVtbiBhbmQgZGlyZWN0aW9uLiBUaGlzIGFwcHJvYWNoIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgc29ydCBvcmRlciBmb3IgYSBxdWVyeSB3aGVuIHRoZSByZXN1bHQgaXMgYSBsaXN0IG9mIHR1cGxlcy48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJTb3J0QnlJdGVtIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9InBhdGgiIHR5cGU9InhzOnN0cmluZyIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iQnlFeHByZXNzaW9uIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgQnlFeHByZXNzaW9uIGVsZW1lbnQgc3BlY2lmaWVzIHRoYXQgdGhlIHNvcnQgc2hvdWxkIGJlIHBlcmZvcm1lZCB1c2luZyB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiBhbmQgZGlyZWN0aW9uLiBUaGlzIGFwcHJvYWNoIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgc29ydCBvcmRlciBhcyBhIGNhbGN1bGF0ZWQgZXhwcmVzc2lvbi48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJTb3J0QnlJdGVtIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9ImV4cHJlc3Npb24iIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNvcnRDbGF1c2UiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBTb3J0Q2xhdXNlIGVsZW1lbnQgZGVmaW5lcyB0aGUgc29ydCBvcmRlciBmb3IgdGhlIHF1ZXJ5LjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkVsZW1lbnQiPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iYnkiIHR5cGU9IlNvcnRCeUl0ZW0iIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmV0dXJuQ2xhdXNlIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgUmV0dXJuQ2xhdXNlIGVsZW1lbnQgZGVmaW5lcyB0aGUgc2hhcGUgb2YgdGhlIHJlc3VsdCBzZXQgb2YgdGhlIHF1ZXJ5LjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkVsZW1lbnQiPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iZXhwcmVzc2lvbiIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iZGlzdGluY3QiIHR5cGU9InhzOmJvb2xlYW4iIHVzZT0ib3B0aW9uYWwiIGRlZmF1bHQ9InRydWUiLz4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlF1ZXJ5Ij4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgUXVlcnkgb3BlcmF0b3IgcmVwcmVzZW50cyBhIGNsYXVzZS1iYXNlZCBxdWVyeS4gVGhlIHJlc3VsdCBvZiB0aGUgcXVlcnkgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdHlwZSBvZiBzb3VyY2VzIGluY2x1ZGVkLCBhcyB3ZWxsIGFzIHRoZSBjbGF1c2VzIHVzZWQgaW4gdGhlIHF1ZXJ5LjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9IkV4cHJlc3Npb24iPg0KCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ic291cmNlIiB0eXBlPSJBbGlhc2VkUXVlcnlTb3VyY2UiIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ibGV0IiB0eXBlPSJMZXRDbGF1c2UiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0icmVsYXRpb25zaGlwIiB0eXBlPSJSZWxhdGlvbnNoaXBDbGF1c2UiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0id2hlcmUiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InJldHVybiIgdHlwZT0iUmV0dXJuQ2xhdXNlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJzb3J0IiB0eXBlPSJTb3J0Q2xhdXNlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCTwveHM6c2VxdWVuY2U+DQoJCQk8L3hzOmV4dGVuc2lvbj4NCgkJPC94czpjb21wbGV4Q29udGVudD4NCgk8L3hzOmNvbXBsZXhUeXBlPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJBbGlhc1JlZiI+DQoJCTx4czphbm5vdGF0aW9uPg0KCQkJPHhzOmRvY3VtZW50YXRpb24+VGhlIEFsaWFzUmVmIGV4cHJlc3Npb24gYWxsb3dzIGZvciB0aGUgcmVmZXJlbmNlIG9mIGEgc3BlY2lmaWMgc291cmNlIHdpdGhpbiB0aGUgc2NvcGUgb2YgYSBxdWVyeS48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOnN0cmluZyIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iUXVlcnlMZXRSZWYiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPlRoZSBRdWVyeUxldFJlZiBleHByZXNzaW9uIGFsbG93cyBmb3IgdGhlIHJlZmVyZW5jZSBvZiBhIHNwZWNpZmljIGxldCBkZWZpbml0aW9uIHdpdGhpbiB0aGUgc2NvcGUgb2YgYSBxdWVyeS48L3hzOmRvY3VtZW50YXRpb24+DQoJCTwveHM6YW5ub3RhdGlvbj4NCgkJPHhzOmNvbXBsZXhDb250ZW50Pg0KCQkJPHhzOmV4dGVuc2lvbiBiYXNlPSJFeHByZXNzaW9uIj4NCgkJCQk8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOnN0cmluZyIvPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ2hpbGRyZW4iPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPkZvciBzdHJ1Y3R1cmVkIHR5cGVzLCB0aGUgQ2hpbGRyZW4gb3BlcmF0b3IgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZSB2YWx1ZXMgb2YgdGhlIGVsZW1lbnRzIG9mIHRoZSB0eXBlLiBMaXN0LXZhbHVlZCBlbGVtZW50cyBhcmUgZXhwYW5kZWQgYW5kIGFkZGVkIHRvIHRoZSByZXN1bHQgaW5kaXZpZHVhbGx5LCByYXRoZXIgdGhhbiBhcyBhIHNpbmdsZSBsaXN0Lg0KCQkJDQpGb3IgbGlzdCB0eXBlcywgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyBpbnZva2luZyBDaGlsZHJlbiBvbiBlYWNoIGVsZW1lbnQgaW4gdGhlIGxpc3QgYW5kIGZsYXR0ZW5pbmcgdGhlIHJlc3VsdGluZyBsaXN0cyBpbnRvIGEgc2luZ2xlIHJlc3VsdC4NCgkJCQ0KSWYgdGhlIHNvdXJjZSBpcyBudWxsLCB0aGUgcmVzdWx0IGlzIG51bGwuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iT3BlcmF0b3JFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InNvdXJjZSIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCgk8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGVzY2VuZGVudHMiPg0KCQk8eHM6YW5ub3RhdGlvbj4NCgkJCTx4czpkb2N1bWVudGF0aW9uPkZvciBzdHJ1Y3R1cmVkIHR5cGVzLCB0aGUgRGVzY2VuZGVudHMgb3BlcmF0b3IgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZSB2YWx1ZXMgb2YgdGhlIGVsZW1lbnRzIG9mIHRoZSB0eXBlLCByZWN1cnNpdmVseS4gTGlzdC12YWx1ZWQgZWxlbWVudHMgYXJlIGV4cGFuZGVkIGFuZCBhZGRlZCB0byB0aGUgcmVzdWx0IGluZGl2aWR1YWxseSwgcmF0aGVyIHRoYW4gYXMgYSBzaW5nbGUgbGlzdC4NCgkJCQ0KRm9yIGxpc3QgdHlwZXMsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgaW52b2tpbmcgRGVzY2VuZGVudHMgb24gZWFjaCBlbGVtZW50IGluIHRoZSBsaXN0IGFuZCBmbGF0dGVuaW5nIHRoZSByZXN1bHRpbmcgbGlzdHMgaW50byBhIHNpbmdsZSByZXN1bHQuDQoNCklmIHRoZSBzb3VyY2UgaXMgbnVsbCwgdGhlIHJlc3VsdCBpcyBudWxsLjwveHM6ZG9jdW1lbnRhdGlvbj4NCgkJPC94czphbm5vdGF0aW9uPg0KCQk8eHM6Y29tcGxleENvbnRlbnQ+DQoJCQk8eHM6ZXh0ZW5zaW9uIGJhc2U9Ik9wZXJhdG9yRXhwcmVzc2lvbiI+DQoJCQkJPHhzOnNlcXVlbmNlPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJzb3VyY2UiIHR5cGU9IkV4cHJlc3Npb24iIG1pbk9jY3Vycz0iMSIgbWF4T2NjdXJzPSIxIi8+DQoJCQkJPC94czpzZXF1ZW5jZT4NCgkJCTwveHM6ZXh0ZW5zaW9uPg0KCQk8L3hzOmNvbXBsZXhDb250ZW50Pg0KCTwveHM6Y29tcGxleFR5cGU+DQoJPCEtLSBFcnJvcnMgYW5kIE1lc3NhZ2VzIC0tPg0KCTx4czpjb21wbGV4VHlwZSBuYW1lPSJNZXNzYWdlIj4NCgkJPHhzOmFubm90YXRpb24+DQoJCQk8eHM6ZG9jdW1lbnRhdGlvbj5UaGUgTWVzc2FnZSBvcGVyYXRvciBpcyB1c2VkIHRvIHN1cHBvcnQgZXJyb3JzLCB3YXJuaW5ncywgbWVzc2FnZXMsIGFuZCB0cmFjaW5nIGluIGFuIEVMTSBldmFsdWF0aW9uIGVudmlyb25tZW50Lg0KDQpUaGUgb3BlcmF0b3IgaXMgZGVmaW5lZCB0byByZXR1cm4gdGhlIGlucHV0IHNvdXJjZS4NCg0KSWYgdGhlIHNldmVyaXR5IGlzIEVycm9yLCB0aGUgb3BlcmF0b3IgaXMgZXhwZWN0ZWQgdG8gcmFpc2UgYSBydW4tdGltZSBlcnJvciBhbmQgcmV0dXJuIHRoZSBtZXNzYWdlIHRvIHRoZSBjYWxsaW5nIGVudmlyb25tZW50LiBUaGlzIGlzIHRoZSBvbmx5IHNldmVyaXR5IHRoYXQgc3RvcHMgcHJvY2Vzc2luZy4gQWxsIG90aGVyIHNldmVyaXRpZXMgY29udGludWUgZXZhbHVhdGlvbiBvZiB0aGUgZXhwcmVzc2lvbi4NCg0KSWYgdGhlIHNldmVyaXR5IGlzIFRyYWNlLCB0aGUgb3BlcmF0b3IgaXMgZXhwZWN0ZWQgdG8gbWFrZSB0aGUgbWVzc2FnZSBhdmFpbGFibGUgdG8gYSB0cmFjaW5nIG1lY2hhbmlzbSBzdWNoIGFzIGEgZGVidWcgbG9nIGluIHRoZSBjYWxsaW5nIGVudmlyb25tZW50Lg0KDQpJZiB0aGUgc2V2ZXJpdHkgaXMgV2FybmluZywgdGhlIG9wZXJhdG9yIGlzIGV4cGVjdGVkIHRvIHByb3ZpZGUgdGhlIG1lc3NhZ2UgYXMgYSB3YXJuaW5nIHRvIHRoZSBjYWxsaW5nIGVudmlyb25tZW50Lg0KDQpJZiB0aGUgc2V2ZXJpdHkgaXMgTWVzc2FnZSwgdGhlIG9wZXJhdG9yIGlzIGV4cGVjdGVkIHRvIHByb3ZpZGUgdGhlIG1lc3NhZ2UgYXMgaW5mb3JtYXRpb24gdG8gdGhlIGNhbGxpbmcgZW52aXJvbm1lbnQuPC94czpkb2N1bWVudGF0aW9uPg0KCQk8L3hzOmFubm90YXRpb24+DQoJCTx4czpjb21wbGV4Q29udGVudD4NCgkJCTx4czpleHRlbnNpb24gYmFzZT0iT3BlcmF0b3JFeHByZXNzaW9uIj4NCgkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCTx4czplbGVtZW50IG5hbWU9InNvdXJjZSIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIxIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iY29uZGl0aW9uIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJjb2RlIiB0eXBlPSJFeHByZXNzaW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPg0KCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJzZXZlcml0eSIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQkJPHhzOmVsZW1lbnQgbmFtZT0ibWVzc2FnZSIgdHlwZT0iRXhwcmVzc2lvbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiLz4NCgkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJPC94czpleHRlbnNpb24+DQoJCTwveHM6Y29tcGxleENvbnRlbnQ+DQoJPC94czpjb21wbGV4VHlwZT4NCjwveHM6c2NoZW1hPg0K"
}