PCFkb2N0eXBlIGh0bWwgcHVibGljICItLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvL2VuIj4NCg0KPGh0bWw+DQoNCjxoZWFkPg0KDQogICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPg0KDQogICA8bWV0YSBuYW1lPSJBdXRob3IiIGNvbnRlbnQ9IkVjbGlwc2UgUHJvamVjdCBQTUMiPg0KDQogICA8bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1pY3Jvc29mdCBGcm9udFBhZ2UgNC4wIj4NCg0KICAgPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJGcm9udFBhZ2UuRWRpdG9yLkRvY3VtZW50Ij4NCg0KICAgPHRpdGxlPkVjbGlwc2UgUHJvamVjdCBEcmFmdCAyLjEgUGxhbiAoRHJhZnQgb2YgQXVnLiAzMCwgMjAwMik8L3RpdGxlPg0KDQogICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2RlZmF1bHRfc3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+DQoNCjwvaGVhZD4NCg0KPGJvZHk+DQoNCg0KDQo8aDE+DQoNCkVjbGlwc2UgUHJvamVjdDxicj4NCg0KRFJBRlQgMi4xIFBsYW48L2gxPg0KDQo8cD5MYXN0IHJldmlzZWQgRnJpZGF5LCBBdWd1c3QgMzAsIDIwMDI8YnI+DQo8YnI+DQo8aT4mbmJzcDsmbmJzcDsmbmJzcDsgUGxlYXNlIHNlbmQgY29tbWVudHMgYWJvdXQgdGhpcyBkcmFmdCBwbGFuIHRvIHRoZSA8L2k+PGEgaHJlZj0ibWFpbHRvOmVjbGlwc2UtZGV2QGVjbGlwc2Uub3JnIj5lY2xpcHNlLWRldkBlY2xpcHNlLm9yZzwvYT4NCjxpPmRldmVsb3BlciBtYWlsaW5nIGxpc3QuPC9pPiA8L3A+DQoNCjxwPlRoaXMgZG9jdW1lbnQgbGF5cyBvdXQgdGhlIGZlYXR1cmUgYW5kIEFQSSBzZXQgZm9yIHRoZSBuZXh0IGZlYXR1cmUgcmVsZWFzZSANCiAgb2YgRWNsaXBzZSwgZGVzaWduYXRlZCByZWxlYXNlIDIuMS4gDQo8cD5QbGFucyBkbyBub3QgbWF0ZXJpYWxpemUgb3V0IG9mIG5vd2hlcmUsIG5vciBhcmUgdGhleSBlbnRpcmVseSBzdGF0aWMuIFRvIG1ha2UgDQogIHRoZSBwbGFubmluZyBwcm9jZXNzIG1vcmUgdHJhbnNwYXJlbnQgYW5kIG9wZW4gdG8gdGhlIEVjbGlwc2UgY29tbXVuaXR5LCB3ZSANCiAgKHRoZSBFY2xpcHNlIFBNQykgYXJlIHBvc3RpbmcgdGhlIHBsYW4gaW4gYW4gZW1icnlvbmljIGZvcm0gYW5kIGFyZSByZXZpc2luZyANCiAgaXQgdGhyb3VnaG91dCB0aGUgcmVsZWFzZSBjeWNsZS4mbmJzcDsNCjxwPlRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBwbGFuDQpkZWFscyB3aXRoIHRoZSBpbXBvcnRhbnQgbWF0dGVycyBvZiByZWxlYXNlIGRlbGl2ZXJhYmxlcywgcmVsZWFzZSBtaWxlc3RvbmVzLA0KdGFyZ2V0IG9wZXJhdGluZyBlbnZpcm9ubWVudHMsIGFuZCByZWxlYXNlLXRvLXJlbGVhc2UgY29tcGF0aWJpbGl0eS4gVGhlc2UgYXJlDQphbGwgdGhpbmdzIHRoYXQgbmVlZCB0byBiZSBjbGVhciBmb3IgYW55IHJlbGVhc2UsIGV2ZW4gaWYgbm8gZmVhdHVyZXMgd2VyZSB0bw0KY2hhbmdlLiZuYnNwOzxwPlRoZSByZW1haW5kZXIgb2YgdGhlIHBsYW4gY29uc2lzdHMgb2YgcGxhbiBpdGVtcyBmb3IgdGhlIHZhcmlvdXMNCkVjbGlwc2Ugc3VicHJvamVjdHMuIEVhY2ggcGxhbiBpdGVtIGNvdmVycyBhIGZlYXR1cmUgb3IgQVBJIHRoYXQgaXMgdG8gYmUgYWRkZWQNCnRvIEVjbGlwc2UsIG9yIHNvbWUgYXNwZWN0IG9mIEVjbGlwc2UgdGhhdCBpcyB0byBiZSBpbXByb3ZlZC4gRWFjaCBwbGFuIGl0ZW0gaGFzDQphIHRpdGxlIGFuZCBhIGNvbmNpc2Ugc3VtbWFyeSAodXN1YWxseSBhIHNpbmdsZSBwYXJhZ3JhcGgpIHRoYXQgZXhwbGFpbnMgdGhlDQp3b3JrIGl0ZW0gYXQgYSBzdWl0YWJseSBoaWdoIGVub3VnaCBsZXZlbCBzbyB0aGF0IGV2ZXJ5b25lIGNhbiByZWFkaWx5DQp1bmRlcnN0YW5kIHdoYXQgdGhlIHdvcmsgaXRlbSBpcyB3aXRob3V0IGhhdmluZyB0byB1bmRlcnN0YW5kIHRoZSBuaXR0eS1ncml0dHkNCmRldGFpbHMgKHdoaWNoIGNhbiBiZSBoYXNoZWQgb3V0IGVsc2V3aGVyZSkuJm5ic3A7DQo8cD5Ob3QgYWxsIHBsYW4gaXRlbXMgcmVwcmVzZW50IHRoZSBzYW1lIGFtb3VudCBvZiB3b3JrOyBzb21lIG1heSBiZSBxdWl0ZSBsYXJnZSwgDQogIG90aGVycywgcXVpdGUgc21hbGwuIFNvbWUgcGxhbiBpdGVtcyBtYXkgaW52b2x2ZSB3b3JrIHRoYXQgaXMgbG9jYWxpemVkIHRvIGEgDQogIHNpbmdsZSBQbGF0Zm9ybSBjb21wb25lbnQ7IG90aGVycyBtYXkgaW52b2x2ZSBjb29yZGluYXRlZCBjaGFuZ2VzIHRvIHNldmVyYWwgDQogIGNvbXBvbmVudHM7IG90aGVyIG1heSBwZXJ2YWRlIHRoZSBlbnRpcmUgUGxhdGZvcm0uDQo8cD5XaXRoIHRoZSBwcmV2aW91cyByZWxlYXNlIGFzIHRoZSBzdGFydGluZyBwb2ludCwgdGhpcyBpcyB0aGUgcGxhbiBmb3IgaG93IHdlIA0KICB3aWxsIGVuaGFuY2UgYW5kIGltcHJvdmUgaXQuIEZpeGluZyBidWdzLCBpbXByb3ZpbmcgdGVzdCBjb3ZlcmFnZSwgZG9jdW1lbnRhdGlvbiwgDQogIGV4YW1wbGVzLCBldGMuIGFyZSBjb25zaWRlcmVkIHJvdXRpbmUgb25nb2luZyBtYWludGVuYW5jZSBhY3Rpdml0aWVzIGFuZCBhcmUgDQogIG5vdCBpbmNsdWRlZCBpbiB0aGlzIHBsYW4gdW5sZXNzIHRoZXkgd291bGQgYWxzbyBpbnZvbHZlIGEgc2lnbmlmaWNhbnQgY2hhbmdlIA0KICB0byB0aGUgQVBJIG9yIGZlYXR1cmUgc2V0LCBvciBpbnZvbHZlIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHdvcmsuIEFsbCBpbnRlcmVzdGluZyANCiAgZmVhdHVyZSB3b3JrIGlzIGFjY291bnRlZCBmb3IgaW4gdGhpcyBwbGFuLg0KPHA+VGhlIGN1cnJlbnQgc3RhdHVzIG9mIGVhY2ggcGxhbiBpdGVtIGlzDQpub3RlZDoNCjx1bD4NCiAgPGxpPjxiPlByb3Bvc2VkPC9iPiBwbGFuIGl0ZW0gLSBBIHByb3Bvc2FsIGZvciBhbiBhc3BlY3QgdG8gd29yayBvbiBmb3IgdGhlDQogICAgcmVsZWFzZS4gQWZ0ZXIgZHVlIGNvbnNpZGVyYXRpb24sIGEgcHJvcG9zYWwgd2lsbCBlaXRoZXIgYmUgY29tbWl0dGVkLA0KICAgIHJlamVjdGVkLCBvciBkZWZlcnJlZC48L2xpPg0KICA8bGk+PGI+Q29tbWl0dGVkPC9iPiBwbGFuIGl0ZW0gLSBBIGNvbW1pdHRlZCBwbGFuIGl0ZW0gaXMgb25lIHRoYXQgd2UgaGF2ZSBkZWNpZGVkIA0KICAgIHRvIGFkZHJlc3MgZm9yIHRoZSByZWxlYXNlLjwvbGk+DQogIDxsaT48Yj5EZWZlcnJlZDwvYj4gcGxhbiBpdGVtIC0gQSByZWFzb25hYmxlIHByb3Bvc2FsIHRoYXQgZGlkIG5vdCBtYWtlIGl0IGluIA0KICAgIHRvIHRoaXMgcmVsZWFzZSBmb3Igc29tZSByZWFzb24gaXMgbWFya2VkIGFzIGRlZmVycmVkIHdpdGggYSBicmllZiBub3RlIGFzIA0KICAgIHRvIHdoeSB0aGV5IHdlcmUgZGVmZXJyZWQuIERlZmVycmVkIHBsYW4gaXRlbXMgbWF5IHJlc3VyZmFjZSBhcyBwcm9wb3NlZCBwbGFuIA0KICAgIGl0ZW1zIGF0IGEgbGF0ZXIgcG9pbnQuPC9saT4NCiAgPGxpPjxiPlJlamVjdGVkPC9iPiBwbGFuIGl0ZW0gLSBQbGFuIGl0ZW1zIHRoYXQgd2VyZSBwcm9wb3NlZCBidXQganVkZ2VkIHVud29ya2FibGUgDQogICAgYXJlIG1hcmtlZCBhcyByZWplY3RlZCBwbGFuIGl0ZW1zLCB3aXRoIGFuIGFjY29tcGFueWluZyBzdW1tYXJ5IG9mIHdoeSB0aGV5IA0KICAgIHdlcmUgZGlzbWlzc2VkLiBLZWVwaW5nIHRyYWNrIG9mIHJlamVjdGVkIGl0ZW1zIGF2b2lkcyByZXBlYXRpbmcgdGhlIGRpc2N1c3Npb24uPC9saT4NCjwvdWw+DQo8aDI+UmVsZWFzZSBkZWxpdmVyYWJsZXM8L2gyPg0KDQo8cD5UaGUgcmVsZWFzZSBkZWxpdmVyYWJsZXMgaGF2ZSB0aGUgc2FtZSBmb3JtIGFzIHByZXZpb3VzIHJlbGVhc2VzLCBuYW1lbHk6DQoNCjx1bD4NCg0KICA8bGk+U291cmNlIGNvZGUgcmVsZWFzZSBmb3IgRWNsaXBzZSBQcm9qZWN0LCBhdmFpbGFibGUgYXMgdmVyc2lvbnMgdGFnZ2VkICZxdW90O1IyXzEmcXVvdDsgDQogICAgaW4gdGhlIEVjbGlwc2UgUHJvamVjdCA8YSBocmVmPSJodHRwOi8vZGV2LmVjbGlwc2Uub3JnL3ZpZXdjdnMvIj5DVlMgcmVwb3NpdG9yeTwvYT4uPC9saT4NCg0KICA8bGk+RWNsaXBzZSBQcm9qZWN0IFNESyAoaW5jbHVkZXMgUGxhdGZvcm0sIEpEVCwgYW5kIFBERSBzb3VyY2UgemlwcykNCg0KICAgIChkb3dubG9hZGFibGUpLjwvbGk+DQoNCiAgPGxpPkVjbGlwc2UgUGxhdGZvcm0gcnVudGltZSBiaW5hcnkgZGlzdHJpYnV0aW9uIChkb3dubG9hZGFibGUpLjwvbGk+DQoNCiAgPGxpPkpEVCBydW50aW1lIGJpbmFyeSBkaXN0cmlidXRpb24gKGRvd25sb2FkYWJsZSkuPC9saT4NCg0KICA8bGk+RWNsaXBzZSBTREsgRXhhbXBsZXMgKGRvd25sb2FkYWJsZSkuPC9saT4NCg0KPC91bD4NCg0KPGgyPjxhIG5hbWU9Ik1pbGVzdG9uZXMiPjwvYT5SZWxlYXNlIG1pbGVzdG9uZXM8L2gyPg0KDQo8cD5SZWxlYXNlIG1pbGVzdG9uZSBvY2N1cnJpbmcgYXQgcm91Z2hseSBtb250aGx5IGludGVydmFscyBleGlzdCB0byBmYWNpbGl0YXRlDQpjb2Fyc2UtZ3JhaW5lZCBwbGFubmluZyBhbmQgc3RhZ2luZy4gVGhlIG1pbGVzdG9uZXMgZm9yIHRoZSByZW1haW5kZXIgb2YgdGhpcw0KeWVhciBhcmU6PC9wPg0KDQo8dWw+DQogIDxsaT5TZXB0ZW1iZXIgMjAsIDIwMDIgLSBNaWxlc3RvbmUgMSAtICgyLjEgTTEpIC0gc3RhYmxlIGJ1aWxkIHJlZmxlY3RpbmcgcHJvZ3Jlc3M8L2xpPg0KICA8bGk+T2N0b2JlciAxOCwgMjAwMiAtIE1pbGVzdG9uZSAyIC0gKDIuMSBNMikgLSBzdGFibGUgYnVpbGQgcmVmbGVjdGluZyBwcm9ncmVzczwvbGk+DQogIDxsaT5Ob3ZlbWJlciAxNSwgMjAwMiAtIE1pbGVzdG9uZSAzIC0gKDIuMSBNMykgLSBzdGFibGUgYnVpbGQgcmVmbGVjdGluZw0KICAgIHByb2dyZXNzPC9saT4NCiAgPGxpPkRlY2VtYmVyIDEzLCZuYnNwOyAyMDAyIC0gTWlsZXN0b25lIDQgLSAoMi4xIE00KSAtIHN0YWJsZSBidWlsZCByZWZsZWN0aW5nDQogICAgcHJvZ3Jlc3M8L2xpPg0KPC91bD4NCg0KPHA+IEFkZGl0aW9uYWwgMjAwMyBtaWxlc3RvbmVzIHdpbGwgYmUgYWRkZWQgbGF0ZXIuIE91ciB0YXJnZXQNCmlzIHRvIGNvbXBsZXRlIDIuMSBsYXRlIGluIDFRMjAwMy4gQWxsIHJlbGVhc2UgZGVsaXZlcmFibGVzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBkb3dubG9hZCBhcyANCiAgc29vbiBhcyB0aGUgcmVsZWFzZSBoYXMgYmVlbiB0ZXN0ZWQgYW5kIHZhbGlkYXRlZCBpbiB0aGUgdGFyZ2V0IG9wZXJhdGluZyBjb25maWd1cmF0aW9ucyANCiAgbGlzdGVkIGJlbG93LjwvcD4NCg0KPGgyPlRhcmdldCBPcGVyYXRpbmcgRW52aXJvbm1lbnRzPC9oMj4NCg0KDQoNCjxwPkluIG9yZGVyIHRvIHJlbWFpbiBjdXJyZW50LCBlYWNoIEVjbGlwc2UgcmVsZWFzZSB0YXJnZXRzIHJlYXNvbmFibHkgY3VycmVudA0KdmVyc2lvbnMgb2YgdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIGVudmlyb25tZW50cy48L3A+DQoNCjxwPk1vc3Qgb2YgdGhlIEVjbGlwc2UgU0RLIGlzICZxdW90O3B1cmUmcXVvdDsgSmF2YZkgY29kZSBhbmQgaGFzIG5vIGRpcmVjdA0KZGVwZW5kZW5jZSBvbiB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtLiBUaGUgY2hpZWYgZGVwZW5kZW5jZSBpcyB0aGVyZWZvcmUNCm9uIHRoZSBKYXZhIDIgUGxhdGZvcm0gaXRzZWxmLiBUaGUgMi4wIHJlbGVhc2Ugb2YgdGhlIEVjbGlwc2UgUHJvamVjdCBpcyB3cml0dGVuDQphbmQgY29tcGlsZWQgYWdhaW5zdCB2ZXJzaW9uIDEuMyBvZiB0aGUgSmF2YSAyIFBsYXRmb3JtIEFQSXMsIGFuZCB0YXJnZXRlZCB0bw0KcnVuIG9uIGVpdGhlciB2ZXJzaW9uIDEuMyBvciAxLjQgb2YgdGhlIEphdmEgMiBSdW50aW1lIEVudmlyb25tZW50LCBTdGFuZGFyZA0KRWRpdGlvbi48L3A+DQo8cD5FY2xpcHNlIFNESyAyLjAgaGFzIGJlZW4gdGVzdGVkIGFuZCB2YWxpZGF0ZWQgb24gdGhlIGZvbGxvd2luZyBKYXZhIDINClBsYXRmb3JtIGltcGxlbWVudGF0aW9uczo8L3A+DQo8dGFibGUgd2lkdGg9IjkxJSIgYm9yZGVyPSIxIj4NCiAgPHRib2R5Pg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iMTklIj48Yj5PcGVyYXRpbmcgc3lzdGVtPC9iPjwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjI0JSI+PGI+UHJvY2Vzc29yIGFyY2hpdGVjdHVyZTwvYj48L3RkPg0KICAgICAgPHRkIHdpZHRoPSI3MyUiPjxiPkphdmEgMiBQbGF0Zm9ybXM8L2I+PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iMTklIiByb3dTcGFuPSIzIj5NaWNyb3NvZnSuPGJyPg0KICAgICAgICBXaW5kb3dzrjwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjI0JSIgcm93U3Bhbj0iMyI+SW50ZWwgeDg2PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNzMlIj5TdW4gSmF2YSAyIFNESywgU3RhbmRhcmQgRWRpdGlvbiwgdmVyc2lvbiAxLjMuMSBmb3INCiAgICAgICAgTWljcm9zb2Z0IFdpbmRvd3M8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSI3MyUiPklCTSBEZXZlbG9wZXIgS2l0IGZvciBXaW5kb3dzLCBKYXZhIDIgVGVjaG5vbG9neSBFZGl0aW9uLA0KICAgICAgICB2ZXJzaW9uIDEuMy4wPC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iNzMlIj5TdW4gSmF2YSAyIFNESywgU3RhbmRhcmQgRWRpdGlvbiwgdmVyc2lvbiAxLjQgZm9yDQogICAgICAgIE1pY3Jvc29mdCBXaW5kb3dzPC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iMTklIiByb3dTcGFuPSIzIj5MaW51eDwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjI0JSIgcm93U3Bhbj0iMyI+SW50ZWwgeDg2PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNzMlIj5TdW4gSmF2YSAyIFNESywgU3RhbmRhcmQgRWRpdGlvbiwgdmVyc2lvbiAxLjMuMSBmb3IgTGludXgNCiAgICAgICAgeDg2PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iNzMlIj5JQk0gRGV2ZWxvcGVyIEtpdCBmb3IgTGludXgsIEphdmEgMiBUZWNobm9sb2d5IEVkaXRpb24sDQogICAgICAgIHZlcnNpb24gMS4zLjA8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSI3MyUiPlN1biBKYXZhIDIgU0RLLCBTdGFuZGFyZCBFZGl0aW9uLCB2ZXJzaW9uIDEuNCBmb3IgTGludXgNCiAgICAgICAgeDg2PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iMTklIiByb3dTcGFuPSIyIj5TdW4gU29sYXJpczwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjI0JSIgcm93U3Bhbj0iMiI+U1BBUkM8L3RkPg0KICAgICAgPHRkIHdpZHRoPSI3MyUiPlN1biBKYXZhIDIgU0RLLCBTdGFuZGFyZCBFZGl0aW9uLCB2ZXJzaW9uIDEuMy4xIGZvcg0KICAgICAgICBTb2xhcmlzIFNQQVJDPC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iNzMlIj5TdW4gSmF2YSAyIFNESywgU3RhbmRhcmQgRWRpdGlvbiwgdmVyc2lvbiAxLjQgZm9yIFNvbGFyaXMNCiAgICAgICAgU1BBUkM8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSIxOSUiPkhQIEhQLVVYPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMjQlIj5ocDkwMDAgUEEtUklTQzwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjczJSI+PHNwYW4gY2xhc3M9ImhlYWRlciI+SFAtVVggU0RLIGZvciB0aGUgSmF2YSAyIHBsYXRmb3JtLA0KICAgICAgICB2ZXJzaW9uIDEuMy4xIGZvciBocDkwMDAgUEEtUklTQzwvc3Bhbj48L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSIxOSUiPklCTa4gQUlYPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMjQlIj5Qb3dlclBDPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNzMlIj5JQk0gRGV2ZWxvcGVyIEtpdCBmb3IgQUlYLCBKYXZhIDIgVGVjaG5vbG9neSBFZGl0aW9uLA0KICAgICAgICB2ZXJzaW9uIDEuMy4wPC90ZD4NCiAgICA8L3RyPg0KICA8L3Rib2R5Pg0KPC90YWJsZT4NCjxwPjxzcGFuIGNsYXNzPSJoZWFkZXIiPlRoZSBmb2xsb3dpbmcgdGFibGUgZGVzY3JpYmVzIHRoZSBjb21iaW5hdGlvbnMgb2YNCm9wZXJhdGluZyBzeXN0ZW0gYW5kIEphdmEgMiBQbGF0Zm9ybSB1c2VkIHdoZW4gdGVzdGluZyB0aGUgRWNsaXBzZSBTREsNCmNvbmZpZ3VyYXRpb25zLiBUaGUgc3RhdHVzIGNvbHVtbiBpbmRpY2F0ZXMgdGhlIGxldmVsIG9mIHRlc3Rpbmc6DQomcXVvdDtQcmltYXJ5JnF1b3Q7IG1lYW5zIGEgZnVsbCB0ZXN0ZWQgY29uZmlndXJhdGlvbjsgJnF1b3Q7PC9zcGFuPlNlY29uZGFyeSZxdW90Ow0KbWVhbnMgYSBjb25maWd1cmF0aW9uIHdoaWNoIGlzIG9ubHkgbGlnaHRseSB0ZXN0ZWQ7ICZxdW90O1VudGVzdGVkJnF1b3Q7IG1lYW5zIGENCmNvbmZpZ3VyYXRpb24gdGhhdCBoYXMgcmVjZWl2ZWQgbm8gdGVzdGluZywgYnV0IHdoaWNoIHNob3VsZCB3b3JrLjwvcD4NCjx0YWJsZSB3aWR0aD0iOTElIiBib3JkZXI9IjEiPg0KICA8dGJvZHk+DQogICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSIxMSUiPjxiPldpbmRvdyBzeXN0ZW08L2I+PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMjglIj48Yj5KYXZhIDIgUGxhdGZvcm08YnI+DQogICAgICAgIChzZWUgYWJvdmUgdGFibGUpPC9iPjwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjQyJSI+PGI+T3BlcmF0aW5nIEVudmlyb25tZW50PC9iPjwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSI+PGI+VGVzdGluZyBTdGF0dXM8L2I+PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iMTElIiByb3dTcGFuPSI1Ij5XaW4zMjwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjI4JSIgcm93U3Bhbj0iNSI+V2luZG93cyBvbiBJbnRlbCB4ODY8L3RkPg0KICAgICAgPHRkIHdpZHRoPSI0MiUiPldpbmRvd3MgMjAwMDwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSI+UHJpbWFyeTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgd2lkdGg9IjQyJSI+V2luZG93cyBYUDwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSI+UHJpbWFyeTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgd2lkdGg9IjQyJSI+V2luZG93cyBNRTwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSI+U2Vjb25kYXJ5PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iNDIlIj5XaW5kb3dzIDk4U0U8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIxOSUiPlNlY29uZGFyeTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgd2lkdGg9IjQyJSI+V2luZG93cyBOVDwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSI+U2Vjb25kYXJ5PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iMTElIiByb3dTcGFuPSI2Ij5Nb3RpZjwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjI4JSIgcm93U3Bhbj0iMyI+Jm5ic3A7DQogICAgICAgIDxwPkxpbnV4IG9uIEludGVsIHg4NjwvcD4NCiAgICAgICAgPHA+Jm5ic3A7PC9wPg0KICAgICAgPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNDIlIj5SZWRIYXQgTGludXggNy4yIHg4NjwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSI+UHJpbWFyeTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgd2lkdGg9IjQyJSI+U3VTRSBMaW51eCA3LjMgeDg2PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTklIj5QcmltYXJ5PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iNDIlIj5PdGhlciBMaW51eDsga2VybmVsIHZlcnNpb24gMi40LjcsIGFuZCBYRnJlZTg2IHZlcnNpb24NCiAgICAgICAgNC4xLjA8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIxOSUiPlVudGVzdGVkPC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iMjglIj5Tb2xhcmlzIG9uIFNQQVJDJm5ic3A7PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNDIlIj5TdW4gU29sYXJpcyA4IFNQQVJDPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTklIj5QcmltYXJ5PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iMjglIj5IUC1VWCBvbiBocDkwMDAgUEEtUklTQzwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjQyJSI+SFAtVVggMTFpIGhwOTAwMDwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSI+UHJpbWFyeTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgd2lkdGg9IjI4JSI+QUlYIG9uIFBvd2VyUEM8L3RkPg0KICAgICAgPHRkIHdpZHRoPSI0MiUiPklCTSBBSVggNS4xIG9uIFBvd2VyUEM8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIxOSUiPlByaW1hcnk8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSIxMSUiIHJvd1NwYW49IjMiPkdUSzwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjI4JSIgcm93U3Bhbj0iMyI+TGludXggb24gSW50ZWwgeDg2PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNDIlIj5SZWRIYXQgTGludXggNy4yIHg4NiBHVEsgMi4wPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTklIj5QcmltYXJ5PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iNDIlIj5TdVNFIExpbnV4IDcuMyB4ODYgR1RLIDIuMDwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSI+UHJpbWFyeTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgd2lkdGg9IjQyJSI+T3RoZXIgTGludXg7IGtlcm5lbCB2ZXJzaW9uIDIuNC43LCBhbmQgR1RLIDIuMDwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSI+VW50ZXN0ZWQ8L3RkPg0KICAgIDwvdHI+DQogIDwvdGJvZHk+DQo8L3RhYmxlPg0KPGg0PkludGVybmF0aW9uYWxpemF0aW9uPC9oND4NCjxwPlRoZSBFY2xpcHNlIFBsYXRmb3JtIGlzIGRlc2lnbmVkIGFzIHRoZSBiYXNpcyBmb3IgaW50ZXJuYXRpb25hbGl6ZWQgcHJvZHVjdHMuDQpUaGUgdXNlciBpbnRlcmZhY2UgZWxlbWVudHMgcHJvdmlkZWQgYnkgdGhlIEVjbGlwc2UgU0RLIGNvbXBvbmVudHMsIGluY2x1ZGluZw0KZGlhbG9ncyBhbmQgZXJyb3IgbWVzc2FnZXMsIGFyZSBleHRlcm5hbGl6ZWQuIFRoZSBFbmdsaXNoIHN0cmluZ3MgYXJlIHByb3ZpZGVkDQphcyB0aGUgZGVmYXVsdCByZXNvdXJjZSBidW5kbGVzLjwvcD4NCjxwPkxhdGluLTEgbG9jYWxlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBFY2xpcHNlIFNESyBvbiBhbGwgb2YgdGhlIGFib3ZlDQpvcGVyYXRpbmcgZW52aXJvbm1lbnRzOyBEQkNTIGFuZCBCSURJIGxvY2FsZXMgYXJlIHN1cHBvcnRlZCBieSB0aGUgRWNsaXBzZSBTREsNCm9ubHkgb24gV2luZG93cyBvcGVyYXRpbmcgZW52aXJvbm1lbnRzLg0KPHA+VGhlIEVjbGlwc2UgU0RLIHN1cHBvcnRzIEdCIDE4MDMwLCB0aGUgbmV3IENoaW5lc2UgY29kZSBwYWdlIHN0YW5kYXJkLCBvbg0KV2luZG93cyAyMDAwIGFuZCBYUCBvbmx5LiBOb3RlIHRoYXQgR0IgMTgwMzAgYWxzbyByZXF1aXJlcyBsb2NhbGUgYW5kIGNoYXJhY3Rlcg0KZW5jb2Rpbmcgc3VwcG9ydCBmcm9tIHRoZSBKYXZhIDIgUnVudGltZSBFbnZpcm9ubWVudDsgdGhpcyBzdXBwb3J0IGlzIHN0YW5kYXJkDQppbiB2ZXJzaW9uIDEuNCwgYW5kIGFsc28gYXZhaWxhYmxlIGluIHNvbWUgMS4zIEpSRXMuDQo8cD5HZXJtYW4gYW5kIEphcGFuZXNlIGxvY2FsZXMgaGF2ZSBiZWVuIHRlc3RlZC4NCjxoND5CSURJIHN1cHBvcnQ8L2g0Pg0KPHA+VGhlIEVjbGlwc2UgU0RLIGlzIGEgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdGFyZ2V0ZWQgYXQgdGVjaG5pY2FsDQpwcm9mZXNzaW9uYWxzIC0gbm90IGFuIGVuZCB1c2VyIGFwcGxpY2F0aW9uLiBIb3dldmVyLCB0aGUgRWNsaXBzZSBTREsgdG9vbHMgd2lsbA0KcGVybWl0IHRlY2huaWNhbCBwcm9mZXNzaW9uYWxzIHdobyBhcmUgd29ya2luZyBpbiBFbmdsaXNoIHRvIGJ1aWxkIEhlYnJldy9BcmFiaWMNCmVuZCB1c2VyIEphdmEgcHJvZ3JhbXMgd2hpY2ggYXJlIHRoZW1zZWx2ZXMgbm90IGJhc2VkIG9uIHRoZSBFY2xpcHNlIFNESy4gVGhlDQpCSURJIHN1cHBvcnQgaW4gdGhlIEVjbGlwc2UgU0RLIGFsbG93cyBhIEphdmEgcHJvZ3JhbW1lciB0byB3b3JrIHdpdGggQklESQ0Kc3RyaW5ncywgY29kZSBjb21tZW50cywgZXRjLiBidXQgdGhlIEVjbGlwc2UgU0RLIGl0c2VsZiBpcyBub3QgZGVzaWduZWQgdG8gYmUNCmxvY2FsaXplZCBmb3IgQklESSBsb2NhbGVzIGFuZCBpdHMgd2lkZ2V0IG9yaWVudGF0aW9uIGNhbiBub3QgYmUgY2hhbmdlZC48L3A+DQo8cD48aT5JTVBPUlRBTlQ6IFRoZSBhYm92ZSBCSURJIHN1cHBvcnQgaXMgYXZhaWxhYmxlIG9ubHkgb24gV2luZG93cyBwbGF0Zm9ybXMuPC9pPjwvcD4NCg0KPGgyPg0KDQpDb21wYXRpYmlsaXR5IHdpdGggUHJldmlvdXMgUmVsZWFzZXM8L2gyPg0KDQo8cD4NCg0KSXQgaXMgYSBnaXZlbiB0aGF0IEVjbGlwc2UgMi4xIHdpbGwgYmUgdXB3YXJkcyBjb21wYXRpYmxlIHdpdGggRWNsaXBzZSAyLjAuIEFuZA0KaW5jb21wYXRpYmxlIGJyZWFrIHdpdGggdGhlIHBhc3QgdGhpcyBlYXJseSBvbiB3b3VsZCBiZSBib3RoIHVud2VsY29tZSBhbmQNCnVud2FycmFudGVkLjwvcD4NCg0KPGgzPg0KDQpDb21wYXRpYmlsaXR5IG9mIFJlbGVhc2UgMi4xIHdpdGggMi4wPC9oMz4NCg0KVGhlIEVjbGlwc2UgU0RLIDIuMSB3aWxsIGJlIHVwd2FyZHMgY29tcGF0aWJsZSB3aXRoIHRoZSBFY2xpcHNlIFNESyAyLjAgdG8gdGhlIA0KZ3JlYXRlc3QgZXh0ZW50IHBvc3NpYmxlLiBXZSBhbnRpY2lwYXRlIGEgc21hbGwgbnVtYmVyIG9mIGFyZWFzIHdoZXJlIHNsYXZpc2hseSANCm1haW50YWluaW5nIGNvbXBhdGliaWxpdHkgd291bGQgbm90IGJlIGluIHRoZSBiZXN0IGludGVyZXN0cyBvZiB0aGUgUGxhdGZvcm0gb3IgDQppdHMgY2xpZW50cy4gQWxsIHN1Y2ggZXhjZXB0aW9ucyB3aWxsIGJlIG5vdGVkIGluIHRoZSAyLjEgcmVsZWFzZSBub3RlcyBzbyB0aGF0IA0KY2xpZW50cyBjYW4gYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhlc2UgY2hhbmdlcyBvbiB0aGVpciBwbHVnLWlucyBhbmQgcHJvZHVjdHMuDQoNCjxwPjxiPkFQSSBDb250cmFjdCBDb21wYXRpYmlsaXR5OjwvYj4gVGhlIEVjbGlwc2UgU0RLIDIuMSB3aWxsIGJlIHVwd2FyZHMgY29udHJhY3QtY29tcGF0aWJsZSANCiAgd2l0aCB0aGUgRWNsaXBzZSBTREsgMi4wIHVubGVzcyBub3RlZC4gVGhpcyBtZWFucyB0aGF0IHByb2dyYW1zIGluIGZ1bGwgY29tcGxpYW5jZSANCiAgd2l0aCBjb250cmFjdHMgc3BlY2lmaWVkIGluIHRoZSBFY2xpcHNlIFNESyAyLjAgQVBJcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgaW4gDQogIGZ1bGwgY29tcGxpYW5jZSB3aXRoIHRoZSBFY2xpcHNlIFNESyAyLjEgQVBJcy4gKEFQSSBpcyBjb25zdHJ1ZWQgYnJvYWRseSB0byANCiAgaW5jbHVkZSBzdWNoIHRoaW5ncyBhcyBwbHVnLWluIGV4dGVuc2lvbiBwb2ludHMuKSBEb3dud2FyZCBjb250cmFjdCBjb21wYXRpYmlsaXR5IA0KICBpcyBub3Qgc3VwcG9ydGVkLiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBjb21wbGlhbmNlIHdpdGggdGhlIEVjbGlwc2UgU0RLIA0KICAyLjEgQVBJcyB3b3VsZCBlbnN1cmUgY29tcGxpYW5jZSB3aXRoIHRoZSBFY2xpcHNlIFNESyAyLjAgQVBJcy4gDQo8cD48Yj5CaW5hcnkgKHBsdWctaW4pIENvbXBhdGliaWxpdHk6PC9iPiBUaGUgRWNsaXBzZSBTREsgMi4xIHdpbGwgYmUgdXB3YXJkcyANCiAgYmluYXJ5LWNvbXBhdGlibGUgd2l0aCB0aGUgRWNsaXBzZSBTREsgMi4wIHVubGVzcyBub3RlZC4gVGhpcyBtZWFucyB0aGF0IHBsdWctaW5zIA0KICBidWlsdCBmb3IgdGhlIEVjbGlwc2UgU0RLIDIuMCB3aWxsIGNvbnRpbnVlIHRvIHdvcmsgY29ycmVjdGx5IGluIHRoZSBFY2xpcHNlIA0KICBTREsgMi4xIHdpdGhvdXQgY2hhbmdlLiBEb3dud2FyZCBwbHVnLWluIGNvbXBhdGliaWxpdHkgaXMgbm90IHN1cHBvcnRlZC4gUGx1Zy1pbnMgDQogIGZvciB0aGUgRWNsaXBzZSBTREsgMi4xIGFyZSB1bmxpa2VseSB0byBiZSB1c2FibGUgaW4gdGhlIEVjbGlwc2UgU0RLIDIuMC4gUGx1Zy1pbnMgDQogIHdpdGggaGFyZC1jb2RlZCByZWZlcmVuY2VzIGluIHRoZWlyIHBsdWctaW4gbWFuaWZlc3QgZmlsZSB0byAyLjAgdmVyc2lvbnMgb2YgDQogIHByZXJlcXVpc2l0ZSBFY2xpcHNlIFByb2plY3QgcGx1Zy1pbnMgd2lsbCB3b3JrIGluIDIuMSBwcm92aWRlZCB0aGUgdmVyc2lvbiBtYXRjaA0KcnVsZSBpcyAmcXVvdDtncmVhdGVyT3JFcXVhbCZxdW90Ow0Kb3IgJnF1b3Q7Y29tcGF0aWJsZSZxdW90OyAodGhlIGRlZmF1bHQpOyByZWZlcmVuY2VzDQp1c2luZyAmcXVvdDtwZXJmZWN0JnF1b3Q7IG9yICZxdW90O2VxdWl2YWxlbnQmcXVvdDsgbWF0Y2ggcnVsZXMgd2lsbCBiZSBicm9rZW4uIA0KPHA+PGI+U291cmNlIENvbXBhdGliaWxpdHk6PC9iPiBUaGUgRWNsaXBzZSBTREsgMi4xIHdpbGwgYmUgdXB3YXJkcyBzb3VyY2UtY29tcGF0aWJsZSANCiAgd2l0aCB0aGUgRWNsaXBzZSBTREsgMi4wIHVubGVzcyBub3RlZC4gVGhpcyBtZWFucyB0aGF0IHNvdXJjZSBmaWxlcyB3cml0dGVuIA0KICB0byB1c2UgdGhlIEVjbGlwc2UgU0RLIDIuMCBBUElzIGNhbiBiZSBzdWNjZXNzZnVsbHkgY29tcGlsZWQgYW5kIHJ1biBhZ2FpbnN0IA0KICB0aGUgRWNsaXBzZSBTREsgMi4xIEFQSXMuIFNpbmNlIHNvdXJjZSBpbmNvbXBhdGliaWxpdGllcyBhcmUgZWFzeSB0byBkZWFsIHdpdGgsIA0KICBtYWludGFpbmluZyBzb3VyY2UgY29tcGF0aWJpbGl0eSBpcyBjb25zaWRlcmVkIG11Y2ggbGVzcyBpbXBvcnRhbnQgdGhhbiBtYWludGFpbmluZyANCiAgY29udHJhY3QgYW5kIGJpbmFyeSBjb21wYXRpYmlsaXR5LiBEb3dud2FyZCBzb3VyY2UgY29tcGF0aWJpbGl0eSBpcyBub3Qgc3VwcG9ydGVkLiANCiAgSWYgc291cmNlIGZpbGVzIHVzZSBuZXcgRWNsaXBzZSBTREsgQVBJcywgdGhleSB3aWxsIG5vdCBiZSB1c2FibGUgd2l0aCBhbiBlYXJsaWVyIA0KICB2ZXJzaW9uIG9mIHRoZSBFY2xpcHNlIFNESy4gDQo8cD48Yj5Xb3Jrc3BhY2UgQ29tcGF0aWJpbGl0eTo8L2I+IEVjbGlwc2UgU0RLIDIuMSB3aWxsIGJlIHVwd2FyZHMNCg0Kd29ya3NwYWNlLWNvbXBhdGlibGUgd2l0aCBFY2xpcHNlIFNESyAyLjAgdW5sZXNzIG5vdGVkLiBUaGlzIG1lYW5zIHRoYXQNCg0Kd29ya3NwYWNlcyBhbmQgcHJvamVjdHMgY3JlYXRlZCB3aXRoIEVjbGlwc2UgU0RLIDIuMCBjYW4gYmUgc3VjY2Vzc2Z1bGx5IG9wZW5lZCBieSBFY2xpcHNlIFNESw0KMi4xIGFuZCB1cGdyYWRlZCB0byBhIDIuMSB3b3Jrc3BhY2UuJm5ic3A7IEluZGl2aWR1YWwgcGx1Zy1pbnMgZGV2ZWxvcGVkIGZvcg0KDQpFY2xpcHNlIFNESyAyLjAgc2hvdWxkIHByb3ZpZGUgc2ltaWxhciB1cHdhcmRzIGNvbXBhdGliaWxpdHkgZm9yIHRoZWlyIHdvcmtzcGFjZQ0KDQptZXRhZGF0YTsgcGx1Zy1pbiBkZXZlbG9wZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCB0aGVpciBwbHVnLWlucw0KDQpyZWNvZ25pemUgMi4wIG1ldGFkYXRhIGFuZCBwcm9jZXNzIGl0IGFwcHJvcHJpYXRlbHkuIFVzZXIgaW50ZXJmYWNlIHNlc3Npb24gc3RhdGUgbWF5IGJlIGRpc2NhcmRlZA0Kd2hlbiBhIHdvcmtzcGFjZSBpcyB1cGdyYWRlZC4mbmJzcDsgRG93bndhcmQgd29ya3NwYWNlIGNvbXBhdGliaWxpdHkgaXMgbm90IHN1cHBvcnRlZC4gQSB3b3Jrc3BhY2UgY3JlYXRlZA0KDQoob3Igb3BlbmVkKSBieSBFY2xpcHNlIFNESyAyLjEgd2lsbCBiZSB1bnVzYWJsZSB3aXRoIGFuIGVhcmxpZXIgdmVyc2lvbg0KDQpvZiBFY2xpcHNlIFNESy4mbmJzcDsmbmJzcDsNCg0KPHA+PGI+Tm9uLWNvbXBsaWFudCB1c2FnZSBvZiBBUEknczwvYj46IEFsbCBub24tQVBJIG1ldGhvZHMgYW5kIGNsYXNzZXMsIGFuZCBjZXJ0YWlubHkgDQogIGV2ZXJ5dGhpbmcgaW4gYSBwYWNrYWdlIHdpdGggJnF1b3Q7aW50ZXJuYWwmcXVvdDsgaW4gaXRzIG5hbWUsIGFyZSBjb25zaWRlcmVkIA0KICBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHdoaWNoIG1heSB2YXJ5IGJldHdlZW4gb3BlcmF0aW5nIGVudmlyb25tZW50IGFuZCBhcmUgDQogIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiBDbGllbnQgcGx1Zy1pbnMgdGhhdCBkaXJlY3RseSBkZXBlbmQgb24gYW55dGhpbmcgDQogIG90aGVyIHRoYW4gd2hhdCBpcyBzcGVjaWZpZWQgaW4gdGhlIEVjbGlwc2UgU0RLIEFQSSBhcmUgaW5oZXJlbnRseSB1bnN1cHBvcnRhYmxlIA0KICBhbmQgcmVjZWl2ZSBubyBndWFyYW50ZWVzIGFib3V0IGNvbXBhdGliaWxpdHkgd2l0aGluIGEgc2luZ2xlIHJlbGVhc2UgbXVjaCBsZXNzIA0KICB3aXRoIGFuIGVhcmxpZXIgcmVsZWFzZS4gUmVmZXIgdG8gPGk+PGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9hcnRpY2xlcy9BcnRpY2xlLUFQSSUyMHVzZS9lY2xpcHNlLWFwaS11c2FnZS1ydWxlcy5odG1sIj5Ib3cgDQogIHRvIFVzZSB0aGUgRWNsaXBzZSBBUEk8L2E+PC9pPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIHdyaXRlIGNvbXBsaWFudCANCiAgcGx1Zy1pbnMuIA0KDQo8aDI+IEVjbGlwc2UgUHJvamVjdCBTdWJwcm9qZWN0czwvaDI+DQoNClRoZSBFY2xpcHNlIFByb2plY3QgY29uc2lzdHMgb2YgMyBzdWJwcm9qZWN0cy4gRWFjaCBzdWJwcm9qZWN0DQoNCmlzIGNvdmVyZWQgaW4gaXRzIG93biBzZWN0aW9uOg0KDQo8YmxvY2txdW90ZT48YSBocmVmPSIjRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0Ij5FY2xpcHNlIFBsYXRmb3JtPC9hPg0KDQo8YnI+PGEgaHJlZj0iI0phdmEgZGV2ZWxvcG1lbnQgdG9vbGluZyAoSkRUKSBzdWJwcm9qZWN0Ij5KRFQgLSBKYXZhIGRldmVsb3BtZW50IHRvb2xpbmc8L2E+DQoNCjxicj48YSBocmVmPSIjUGx1Zy1pbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCAoUERFKSBzdWJwcm9qZWN0Ij5QREUgLSBQbHVnLWluIGRldmVsb3BtZW50IGVudmlyb25tZW50PC9hPjwvYmxvY2txdW90ZT4NCg0KPHA+Rm9yIGVhY2ggc3VicHJvamVjdCwgdGhlIGl0ZW1zIGxpc3RlZCByZWZsZWN0IG5ldyBmZWF0dXJlcyBvZiB0aGUgRWNsaXBzZSBQbGF0Zm9ybSwgDQogIG9yIGFyZWFzIHdoZXJlIGV4aXN0aW5nIGZlYXR1cmVzIHdpbGwgYmUgc2lnbmlmaWNhbnRseSByZXdvcmtlZC4gRWFjaCBpdGVtIGluZGljYXRlcyANCiAgdGhlIGNvbXBvbmVudHMgYWZmZWN0ZWQgYnkgdGhhdCB3b3JrIGl0ZW0gKG1hbnkgaXRlbXMgaW52b2x2ZSBjb29yZGluYXRlZCBjaGFuZ2VzIA0KICB0byBzZXZlcmFsIGNvbXBvbmVudHMpLg0KDQo8aDM+DQoNCjxhIG5hbWU9IkVjbGlwc2UgUGxhdGZvcm0gc3VicHJvamVjdCI+RWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0PC9hPjwvaDM+DQoNClRoZSBFY2xpcHNlIFBsYXRmb3JtIHByb3ZpZGVzIHRoZSBtb3N0IGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2Nrcy4gVGhlIGZvbGxvd2luZyBpdGVtcyByZWZsZWN0IG5ldyBmZWF0dXJlcyBvZiB0aGUgRWNsaXBzZSBQbGF0Zm9ybSwgb3IgYXJlYXMNCg0Kd2hlcmUgZXhpc3RpbmcgZmVhdHVyZXMgd2lsbCBiZSBzaWduaWZpY2FudGx5IHJld29ya2VkLg0KPGg0PlByb3Bvc2VkIEl0ZW1zIChFY2xpcHNlIFBsYXRmb3JtIHN1YnByb2plY3QpPC9oND4NCjxibG9ja3F1b3RlPg0KPHA+PGI+SW1wcm92ZWQgUGxhdGZvcm0gc3RhcnR1cCB0aW1lczwvYj4uJm5ic3A7IFByb2dyZXNzIHdhcyBtYWRlIHRvIGltcHJvdmUNCnN0YXJ0dXAgdGltZXMgaW4gMi4wOyBob3dldmVyLCBhZGRpdGlvbmFsIGltcHJvdmVtZW50cyBhcmUgbmVlZGVkLiBJbiBhZGRpdGlvbiwgd2UgbmVlZCB0byBpbnZlc3RpZ2F0ZSBkZWZlcnJpbmcgKG9yIHBhcnRpYWxseSBvbWl0dGluZykgdGhlDQpyZWNvdmVyeSBvZiB0aGUgVUkgc3RhdGUuIFtQbGF0Zm9ybSBDb3JlLCBQbGF0Zm9ybSBVSV08L3A+DQo8cD48Yj5Vc2VyIGNvbmZpZ3VyYWJsZSBrZXkgYmluZGluZ3MuPC9iPiZuYnNwOyBBYmlsaXR5IGZvciB1c2VyIHRvIHJlZGVmaW5lIHRoZQ0Ka2V5IGJpbmRpbmdzIGZvciB0aGUgZWRpdG9yIGFuZCB0aGUgbWVudSBhY2NlbGVyYXRvcnMuIFtQbGF0Zm9ybSBVSV08L3A+DQogIDxwPjxiPkltcHJvdmUgc3VwcG9ydCBmb3IgY2hlYXQgc2hlZXRzPC9iPi4mbmJzcDsgQSBjaGVhdCBzaGVldCBpcyBhbiBpbnN0YW5jZSANCiAgICBvZiBhIHNpbXBsZSBraW5kIG9mIHdvcmtmbG93IHN1cHBvcnQuIFRoZSBXZWxjb21lIFBhZ2UgZWRpdG9yIGlzIGEgc2ltcGxlIA0KICAgIGV4YW1wbGUgb2YgYSBjaGVhdCBzaGVldC4gV2Ugd2lsbCBwcm92aWRlIGEgc3RhbmRhcmQgQVBJIGZvciBjcmVhdGluZyBjaGVhdCANCiAgICBzaGVldHMuIFtQbGF0Zm9ybSBVSV08L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aDQ+Q29tbWl0dGVkIEl0ZW1zIChFY2xpcHNlIFBsYXRmb3JtIHN1YnByb2plY3QpPC9oND4NCjxibG9ja3F1b3RlPg0KICA8cD48aT5Ob25lIGF0IHRoaXMgdGltZS48L2k+PC9wPg0KPC9ibG9ja3F1b3RlPg0KPGg0PkRlZmVycmVkIEl0ZW1zIChFY2xpcHNlIFBsYXRmb3JtIHN1YnByb2plY3QpPC9oND4NCjxibG9ja3F1b3RlPg0KICA8cD48aT5Ob25lIGF0IHRoaXMgdGltZS48L2k+PC9wPg0KPC9ibG9ja3F1b3RlPg0KPGg0PkRpc21pc3NlZCBJdGVtcyAoRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0KTwvaDQ+DQo8YmxvY2txdW90ZT4NCiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4NCjwvYmxvY2txdW90ZT4NCg0KDQoNCjxwPihFbmQgb2YgaXRlbXMgZm9yIEVjbGlwc2UgUGxhdGZvcm0gc3VicHJvamVjdC4pDQoNCg0KDQo8aDM+DQoNCjxhIG5hbWU9IkphdmEgZGV2ZWxvcG1lbnQgdG9vbGluZyAoSkRUKSBzdWJwcm9qZWN0Ij5KYXZhIGRldmVsb3BtZW50IHRvb2xpbmcgKEpEVCkgc3VicHJvamVjdDwvYT48L2gzPg0KDQo8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2pkdC9pbmRleC5odG1sIj4NCg0KSmF2YSBkZXZlbG9wbWVudCB0b29saW5nPC9hPiAoSkRUKSBpbXBsZW1lbnRzIGEgSmF2YSBJREUgYmFzZWQgb24gdGhlIEVjbGlwc2UNCg0KUGxhdGZvcm0uDQoNClRoZSBmb2xsb3dpbmcgd29yayBpdGVtcyByZWZsZWN0IG5ldyBmZWF0dXJlcyBvZiBKRFQsIG9yIGFyZWFzIHdoZXJlIGV4aXN0aW5nDQoNCmZlYXR1cmVzIHdpbGwgYmUgc2lnbmlmaWNhbnRseSByZXdvcmtlZC4NCjxoND5Qcm9wb3NlZCBJdGVtcyAoRWNsaXBzZSBKRFQgc3VicHJvamVjdCk8L2g0Pg0KPGJsb2NrcXVvdGU+DQo8cD48Yj5CdWlsZGluZyBwcm9qZWN0cyB3aXRoIGNpcmN1bGFyIGRlcGVuZGVuY2llcy48L2I+Jm5ic3A7IFNvbWUgdXNlcnMgYXJlDQpleHBlcmllbmNpbmcgZGlmZmljdWx0eSBwYXJ0aXRpb25pbmcgdGhlaXIgd29yayBpbnRvDQppbmRlcGVuZGVudGx5LWJ1aWxkYWJsZSBwcm9qZWN0cy4gV2Ugd2FudCB0byBhZGQgYSBtZWNoYW5pc20gdG8gYWxsb3cgbXV0dWFsbHkgZGVwZW5kZW50IHByb2plY3RzIHRvIGJlDQpidWlsdA0Kc3VjY2Vzc2Z1bGx5LCB3aGlsZSBwcmVzZXJ2aW5nIGN1cnJlbnQgcHJvamVjdCBidWlsZCBvcmRlciBiZWhhdmlvci48L3A+DQogIDxwPjxiPk1vcmUgZmxleGlibGUgcHJvamVjdCBsYXlvdXQuJm5ic3A7IDwvYj5TdXBwb3J0IGJ1aWxkIG91dHB1dCBmb2xkZXJzIHRoYXQgYXJlIG91dHNpZGUgb2YgdGhlDQogIHdvcmtzcGFjZS48L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aDQ+Q29tbWl0dGVkIEl0ZW1zIChFY2xpcHNlIEpEVCBzdWJwcm9qZWN0KTwvaDQ+DQo8YmxvY2txdW90ZT4NCiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4NCjwvYmxvY2txdW90ZT4NCjxoND5EZWZlcnJlZCBJdGVtcyAoRWNsaXBzZSBKRFQgc3VicHJvamVjdCk8L2g0Pg0KPGJsb2NrcXVvdGU+DQogIDxwPjxpPk5vbmUgYXQgdGhpcyB0aW1lLjwvaT48L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aDQ+RGlzbWlzc2VkIEl0ZW1zIChFY2xpcHNlIEpEVCBzdWJwcm9qZWN0KTwvaDQ+DQo8YmxvY2txdW90ZT4NCiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4NCjwvYmxvY2txdW90ZT4NCg0KDQoNCjxwPihFbmQgb2YgaXRlbXMgZm9yIEVjbGlwc2UgSkRUIHN1YnByb2plY3QuKQ0KDQoNCg0KPGgzPg0KDQo8YSBuYW1lPSJQbHVnLWluIGRldmVsb3BtZW50IGVudmlyb25tZW50IChQREUpIHN1YnByb2plY3QiPlBsdWctaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgKFBERSkgc3VicHJvamVjdDwvYT48L2gzPg0KDQpUaGUgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wZGUvaW5kZXguaHRtbCI+IHBsdWctaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQ8L2E+IA0KKFBERSkgY29uc2lzdHMgb2YmbmJzcDt0b29scyBmb3IgZGV2ZWxvcGluZyBwbHVnLWlucyBmb3IgdGhlIEVjbGlwc2UgUGxhdGZvcm0uDQoNClRoZSBmb2xsb3dpbmcgd29yayBpdGVtcyByZWZsZWN0IG5ldyBmZWF0dXJlcyBvZiBQREUsIG9yIGFyZWFzIHdoZXJlIGV4aXN0aW5nDQoNCmZlYXR1cmVzIHdpbGwgYmUgc2lnbmlmaWNhbnRseSByZXdvcmtlZC4NCjxoND5Qcm9wb3NlZCBJdGVtcyAoRWNsaXBzZSBQREUgc3VicHJvamVjdCk8L2g0Pg0KPGJsb2NrcXVvdGU+DQogIDxwPjxpPk5vbmUgYXQgdGhpcyB0aW1lLjwvaT48L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aDQ+Q29tbWl0dGVkIEl0ZW1zIChFY2xpcHNlIFBERSBzdWJwcm9qZWN0KTwvaDQ+DQo8YmxvY2txdW90ZT4NCiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4NCjwvYmxvY2txdW90ZT4NCjxoND5EZWZlcnJlZCBJdGVtcyAoRWNsaXBzZSBQREUgc3VicHJvamVjdCk8L2g0Pg0KPGJsb2NrcXVvdGU+DQogIDxwPjxpPk5vbmUgYXQgdGhpcyB0aW1lLjwvaT48L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aDQ+RGlzbWlzc2VkIEl0ZW1zIChFY2xpcHNlIFBERSBzdWJwcm9qZWN0KTwvaDQ+DQo8YmxvY2txdW90ZT4NCiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4NCjwvYmxvY2txdW90ZT4NCg0KDQoNCjxwPihFbmQgb2YgaXRlbXMgZm9yIEVjbGlwc2UgUERFIHN1YnByb2plY3QuKQ0KDQo8L2JvZHk+DQoNCjwvaHRtbD4NCg0K