PCFkb2N0eXBlIGh0bWwgcHVibGljICItLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvL2VuIj4NCg0KPGh0bWw+DQoNCjxoZWFkPg0KDQogICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPg0KDQogICA8bWV0YSBuYW1lPSJBdXRob3IiIGNvbnRlbnQ9IkVjbGlwc2UgUHJvamVjdCBQTUMiPg0KDQogICA8bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1pY3Jvc29mdCBGcm9udFBhZ2UgNC4wIj4NCg0KICAgPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJGcm9udFBhZ2UuRWRpdG9yLkRvY3VtZW50Ij4NCg0KICAgPHRpdGxlPkVjbGlwc2UgUHJvamVjdCBEcmFmdCAyLjEgUGxhbjwvdGl0bGU+DQoNCiAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZGVmYXVsdF9zdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4NCg0KPC9oZWFkPg0KDQo8Ym9keT4NCg0KDQoNCjxoMT4NCg0KRWNsaXBzZSBQcm9qZWN0PGJyPg0KRFJBRlQgMi4xIFBsYW48L2gxPg0KDQo8cD5MYXN0IHJldmlzZWQgV2VkbmVzZGF5LCBKYW51YXJ5IDI5LCAyMDAzICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiANCiAgbWFya3MgaW50ZXJlc3RpbmcgY2hhbmdlcyBzaW5jZSB0aGUgPGEgaHJlZj0iZWNsaXBzZV9wcm9qZWN0X3BsYW5fMl8xXzIwMDIxMjAzLmh0bWwiPnByZXZpb3VzIA0KICBkcmFmdCBvZiBEZWMuIDMsIDIwMDI8L2E+KTxicj4NCjxicj4NCjxpPiZuYnNwOyZuYnNwOyZuYnNwOyBQbGVhc2Ugc2VuZCBjb21tZW50cyBhYm91dCB0aGlzIGRyYWZ0IHBsYW4gdG8gdGhlIDwvaT48YSBocmVmPSJtYWlsdG86ZWNsaXBzZS1kZXZAZWNsaXBzZS5vcmciPmVjbGlwc2UtZGV2QGVjbGlwc2Uub3JnPC9hPg0KPGk+ZGV2ZWxvcGVyIG1haWxpbmcgbGlzdC48L2k+IDwvcD4NCg0KPHA+VGhpcyBkb2N1bWVudCBsYXlzIG91dCB0aGUgZmVhdHVyZSBhbmQgQVBJIHNldCBmb3IgdGhlIG5leHQgZmVhdHVyZSByZWxlYXNlIA0KICBvZiBFY2xpcHNlLCBkZXNpZ25hdGVkIHJlbGVhc2UgMi4xLiANCjxwPlBsYW5zIGRvIG5vdCBtYXRlcmlhbGl6ZSBvdXQgb2Ygbm93aGVyZSwgbm9yIGFyZSB0aGV5IGVudGlyZWx5IHN0YXRpYy4gVG8gbWFrZSANCiAgdGhlIHBsYW5uaW5nIHByb2Nlc3MgbW9yZSB0cmFuc3BhcmVudCBhbmQgb3BlbiB0byB0aGUgRWNsaXBzZSBjb21tdW5pdHksIHdlIA0KICAodGhlIEVjbGlwc2UgUE1DKSBwb3N0ZWQgdGhlIHBsYW4gaW4gYW4gZW1icnlvbmljIGZvcm0gYW5kIGFyZSByZXZpc2luZyANCiAgaXQgdGhyb3VnaG91dCB0aGUgcmVsZWFzZSBjeWNsZS4NCjxwPlRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBwbGFuDQpkZWFscyB3aXRoIHRoZSBpbXBvcnRhbnQgbWF0dGVycyBvZiByZWxlYXNlIGRlbGl2ZXJhYmxlcywgcmVsZWFzZSBtaWxlc3RvbmVzLA0KdGFyZ2V0IG9wZXJhdGluZyBlbnZpcm9ubWVudHMsIGFuZCByZWxlYXNlLXRvLXJlbGVhc2UgY29tcGF0aWJpbGl0eS4gVGhlc2UgYXJlDQphbGwgdGhpbmdzIHRoYXQgbmVlZCB0byBiZSBjbGVhciBmb3IgYW55IHJlbGVhc2UsIGV2ZW4gaWYgbm8gZmVhdHVyZXMgd2VyZSB0bw0KY2hhbmdlLiZuYnNwOzxwPlRoZSByZW1haW5kZXIgb2YgdGhlIHBsYW4gY29uc2lzdHMgb2YgcGxhbiBpdGVtcyBmb3IgdGhlIHZhcmlvdXMNCkVjbGlwc2Ugc3VicHJvamVjdHMuIEVhY2ggcGxhbiBpdGVtIGNvdmVycyBhIGZlYXR1cmUgb3IgQVBJIHRoYXQgaXMgdG8gYmUgYWRkZWQNCnRvIEVjbGlwc2UsIG9yIHNvbWUgYXNwZWN0IG9mIEVjbGlwc2UgdGhhdCBpcyB0byBiZSBpbXByb3ZlZC4gRWFjaCBwbGFuIGl0ZW0gaGFzDQphIHRpdGxlIGFuZCBhIGNvbmNpc2Ugc3VtbWFyeSAodXN1YWxseSBhIHNpbmdsZSBwYXJhZ3JhcGgpIHRoYXQgZXhwbGFpbnMgdGhlDQp3b3JrIGl0ZW0gYXQgYSBzdWl0YWJseSBoaWdoIGVub3VnaCBsZXZlbCBzbyB0aGF0IGV2ZXJ5b25lIGNhbiByZWFkaWx5DQp1bmRlcnN0YW5kIHdoYXQgdGhlIHdvcmsgaXRlbSBpcyB3aXRob3V0IGhhdmluZyB0byB1bmRlcnN0YW5kIHRoZSBuaXR0eS1ncml0dHkNCmRldGFpbHMgKHdoaWNoIGNhbiBiZSBoYXNoZWQgb3V0IGVsc2V3aGVyZSkuJm5ic3A7DQo8cD5Ob3QgYWxsIHBsYW4gaXRlbXMgcmVwcmVzZW50IHRoZSBzYW1lIGFtb3VudCBvZiB3b3JrOyBzb21lIG1heSBiZSBxdWl0ZSBsYXJnZSwgDQogIG90aGVycywgcXVpdGUgc21hbGwuIFNvbWUgcGxhbiBpdGVtcyBtYXkgaW52b2x2ZSB3b3JrIHRoYXQgaXMgbG9jYWxpemVkIHRvIGEgDQogIHNpbmdsZSBQbGF0Zm9ybSBjb21wb25lbnQ7IG90aGVycyBtYXkgaW52b2x2ZSBjb29yZGluYXRlZCBjaGFuZ2VzIHRvIHNldmVyYWwgDQogIGNvbXBvbmVudHM7IG90aGVyIG1heSBwZXJ2YWRlIHRoZSBlbnRpcmUgUGxhdGZvcm0uDQo8cD5XaXRoIHRoZSBwcmV2aW91cyByZWxlYXNlIGFzIHRoZSBzdGFydGluZyBwb2ludCwgdGhpcyBpcyB0aGUgcGxhbiBmb3IgaG93IHdlIA0KICB3aWxsIGVuaGFuY2UgYW5kIGltcHJvdmUgaXQuIEZpeGluZyBidWdzLCBpbXByb3ZpbmcgdGVzdCBjb3ZlcmFnZSwgZG9jdW1lbnRhdGlvbiwgDQogIGV4YW1wbGVzLCBldGMuIGFyZSBjb25zaWRlcmVkIHJvdXRpbmUgb25nb2luZyBtYWludGVuYW5jZSBhY3Rpdml0aWVzIGFuZCBhcmUgDQogIG5vdCBpbmNsdWRlZCBpbiB0aGlzIHBsYW4gdW5sZXNzIHRoZXkgd291bGQgYWxzbyBpbnZvbHZlIGEgc2lnbmlmaWNhbnQgY2hhbmdlIA0KICB0byB0aGUgQVBJIG9yIGZlYXR1cmUgc2V0LCBvciBpbnZvbHZlIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHdvcmsuIEFsbCBpbnRlcmVzdGluZyANCiAgZmVhdHVyZSB3b3JrIGlzIGFjY291bnRlZCBmb3IgaW4gdGhpcyBwbGFuLg0KPHA+VGhlIGN1cnJlbnQgc3RhdHVzIG9mIGVhY2ggcGxhbiBpdGVtIGlzDQpub3RlZDoNCjx1bD4NCiAgPGxpPjxiPlByb3Bvc2VkPC9iPiBwbGFuIGl0ZW0gLSBBIHByb3Bvc2FsIGZvciBhbiBhc3BlY3QgdG8gd29yayBvbiBmb3IgdGhlDQogICAgcmVsZWFzZS4gQWZ0ZXIgZHVlIGNvbnNpZGVyYXRpb24sIGEgcHJvcG9zYWwgd2lsbCBlaXRoZXIgYmUgY29tbWl0dGVkLA0KICAgIHJlamVjdGVkLCBvciBkZWZlcnJlZC48L2xpPg0KICA8bGk+PGI+Q29tbWl0dGVkPC9iPiBwbGFuIGl0ZW0gLSBBIGNvbW1pdHRlZCBwbGFuIGl0ZW0gaXMgb25lIHRoYXQgd2UgaGF2ZSBkZWNpZGVkIA0KICAgIHRvIGFkZHJlc3MgZm9yIHRoZSByZWxlYXNlLjwvbGk+DQogIDxsaT48Yj5EZWZlcnJlZDwvYj4gcGxhbiBpdGVtIC0gQSByZWFzb25hYmxlIHByb3Bvc2FsIHRoYXQgZGlkIG5vdCBtYWtlIGl0IGluIA0KICAgIHRvIHRoaXMgcmVsZWFzZSBmb3Igc29tZSByZWFzb24gaXMgbWFya2VkIGFzIGRlZmVycmVkIHdpdGggYSBicmllZiBub3RlIGFzIA0KICAgIHRvIHdoeSB0aGV5IHdlcmUgZGVmZXJyZWQuIERlZmVycmVkIHBsYW4gaXRlbXMgbWF5IHJlc3VyZmFjZSBhcyBwcm9wb3NlZCBwbGFuIA0KICAgIGl0ZW1zIGF0IGEgbGF0ZXIgcG9pbnQuPC9saT4NCiAgPGxpPjxiPlJlamVjdGVkPC9iPiBwbGFuIGl0ZW0gLSBQbGFuIGl0ZW1zIHRoYXQgd2VyZSBwcm9wb3NlZCBidXQganVkZ2VkIHVud29ya2FibGUgDQogICAgYXJlIG1hcmtlZCBhcyByZWplY3RlZCBwbGFuIGl0ZW1zLCB3aXRoIGFuIGFjY29tcGFueWluZyBzdW1tYXJ5IG9mIHdoeSB0aGV5IA0KICAgIHdlcmUgZGlzbWlzc2VkLiBLZWVwaW5nIHRyYWNrIG9mIHJlamVjdGVkIGl0ZW1zIGF2b2lkcyByZXBlYXRpbmcgdGhlIGRpc2N1c3Npb24uPC9saT4NCjwvdWw+DQo8aDI+UmVsZWFzZSBkZWxpdmVyYWJsZXM8L2gyPg0KDQo8cD5UaGUgcmVsZWFzZSBkZWxpdmVyYWJsZXMgaGF2ZSB0aGUgc2FtZSBmb3JtIGFzIHByZXZpb3VzIHJlbGVhc2VzLCBuYW1lbHk6DQoNCjx1bD4NCg0KICA8bGk+U291cmNlIGNvZGUgcmVsZWFzZSBmb3IgRWNsaXBzZSBQcm9qZWN0LCBhdmFpbGFibGUgYXMgdmVyc2lvbnMgdGFnZ2VkICZxdW90O1IyXzEmcXVvdDsgDQogICAgaW4gdGhlIEVjbGlwc2UgUHJvamVjdCA8YSBocmVmPSJodHRwOi8vZGV2LmVjbGlwc2Uub3JnL3ZpZXdjdnMvIj5DVlMgcmVwb3NpdG9yeTwvYT4uPC9saT4NCg0KICA8bGk+RWNsaXBzZSBQcm9qZWN0IFNESyAoaW5jbHVkZXMgUGxhdGZvcm0sIEpEVCwgYW5kIFBERSBzb3VyY2UgemlwcykNCg0KICAgIChkb3dubG9hZGFibGUpLjwvbGk+DQoNCiAgPGxpPkVjbGlwc2UgUGxhdGZvcm0gcnVudGltZSBiaW5hcnkgZGlzdHJpYnV0aW9uIChkb3dubG9hZGFibGUpLjwvbGk+DQoNCiAgPGxpPkpEVCBydW50aW1lIGJpbmFyeSBkaXN0cmlidXRpb24gKGRvd25sb2FkYWJsZSkuPC9saT4NCg0KICA8bGk+RWNsaXBzZSBTREsgRXhhbXBsZXMgKGRvd25sb2FkYWJsZSkuPC9saT4NCg0KPC91bD4NCg0KPGgyPjxhIG5hbWU9Ik1pbGVzdG9uZXMiPjwvYT5SZWxlYXNlIG1pbGVzdG9uZXM8L2gyPg0KDQo8cD5SZWxlYXNlIG1pbGVzdG9uZSBvY2N1cnJpbmcgYXQgcm91Z2hseSBtb250aGx5IGludGVydmFscyBleGlzdCB0byBmYWNpbGl0YXRlDQpjb2Fyc2UtZ3JhaW5lZCBwbGFubmluZyBhbmQgc3RhZ2luZy4gVGhlIG1pbGVzdG9uZXMgZm9yIHRoaXMgcmVsZWFzZSBhcmU6PC9wPg0KDQo8dWw+DQogIDxsaT5TZXB0ZW1iZXIgMjAsIDIwMDIgLSBNaWxlc3RvbmUgMSAtICgyLjEgTTEpIC0gc3RhYmxlIGJ1aWxkIHJlZmxlY3RpbmcgcHJvZ3Jlc3M8L2xpPg0KICA8bGk+T2N0b2JlciAxOCwgMjAwMiAtIE1pbGVzdG9uZSAyIC0gKDIuMSBNMikgLSBzdGFibGUgYnVpbGQgcmVmbGVjdGluZyBwcm9ncmVzczwvbGk+DQogIDxsaT5Ob3ZlbWJlciAxNSwgMjAwMiAtIE1pbGVzdG9uZSAzIC0gKDIuMSBNMykgLSBzdGFibGUgYnVpbGQgcmVmbGVjdGluZw0KICAgIHByb2dyZXNzPC9saT4NCiAgPGxpPkRlY2VtYmVyIDEzLCAyMDAyIFtkZWxheWVkIHRvIERlY2VtYmVyIDE4XSAtIE1pbGVzdG9uZSA0IC0gKDIuMSBNNCkgLSBzdGFibGUgDQogICAgYnVpbGQgcmVmbGVjdGluZyBwcm9ncmVzczwvbGk+DQogIDxsaT5GZWJydWFyeSA3LCZuYnNwOzIwMDMgLSBNaWxlc3RvbmUgNSAtICgyLjEgTTUpIC0gc3RhYmxlIGJ1aWxkIC0gZmVhdHVyZSANCiAgICBjb21wbGV0ZSAtIGRldmVsb3BtZW50IGZyZWV6ZTwvbGk+DQo8L3VsPg0KPHA+PGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gTG9jayBkb3duIGFuZCB0ZXN0aW5nIA0KICB0aGVuIGJlZ2lucyB3aXRoIE01LCBhbmQgcHJvZ3Jlc3MgdGhyb3VnaCBhIHNlcmllcyBvZiB0ZXN0LWZpeCBwYXNzZXMgYWdhaW5zdCANCiAgY2FuZGlkYXRlcyByZWxlYXNlcy4gUmVsZWFzZSBjYW5kaWRhdGUgYnVpbGRzIGFyZSBwbGFubmVkIGFzIGZvbGxvd3MgKE01IGlzIA0KICByZWxlYXNlIGNhbmRpZGF0ZSAwKTo8L3A+DQoNCjx1bD4NCiAgPGxpPkZyaWRheSBGZWJydWFyeSAyMSwgMjAwMyAtIFJlbGVhc2UgQ2FuZGlkYXRlIDEgLSAoMi4xIFJDMSk8L2xpPg0KICA8bGk+RnJpZGF5IE1hcmNoIDcsIDIwMDMgLSBSZWxlYXNlIENhbmRpZGF0ZSAyIC0gKDIuMSBSQzIpPC9saT4NCiAgPGxpPkZyaWRheSBNYXJjaCAxNCwgMjAwMyAtIFJlbGVhc2UgQ2FuZGlkYXRlIDMgLSAoMi4xIFJDMyk8L2xpPg0KPC91bD4NCg0KPHA+IERlcGVuZGluZyBvbiB0aGUgY2lyY3Vtc3RhbmNlcywgd2UgbWF5IGFkZCBhZGRpdGlvbmFsIHJlbGVhc2UgY2FuZGlkYXRlIGJ1aWxkcyANCiAgb3IgZmluZS10dW5lIHRoZSBzY2hlZHVsZS4gVGhlIDIuMSByZWxlYXNlIGlzIHRhcmdldGVkIGZvciBGcmlkYXkgTWFyY2ggMjgsIA0KICAyMDAzLiBTZWUgdGhlIDxhIGhyZWY9ImZyZWV6ZV9wbGFuXzJfMS5odG1sIj5FY2xpcHNlIDIuMSBFbmRnYW1lIFBsYW48L2E+IGZvciANCiAgZnVydGhlciBkZXRhaWxzLiBBbGwgcmVsZWFzZSBkZWxpdmVyYWJsZXMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIGRvd25sb2FkIGFzIA0KICBzb29uIGFzIHRoZSByZWxlYXNlIGhhcyBiZWVuIHRlc3RlZCBhbmQgdmFsaWRhdGVkIGluIHRoZSB0YXJnZXQgb3BlcmF0aW5nIGNvbmZpZ3VyYXRpb25zIA0KICBsaXN0ZWQgYmVsb3cuPC9wPg0KPGgyPlRhcmdldCBPcGVyYXRpbmcgRW52aXJvbm1lbnRzPC9oMj4NCg0KDQoNCjxwPkluIG9yZGVyIHRvIHJlbWFpbiBjdXJyZW50LCBlYWNoIEVjbGlwc2UgcmVsZWFzZSB0YXJnZXRzIHJlYXNvbmFibHkgY3VycmVudA0KdmVyc2lvbnMgb2YgdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIGVudmlyb25tZW50cy48L3A+DQoNCjxwPk1vc3Qgb2YgdGhlIEVjbGlwc2UgU0RLIGlzICZxdW90O3B1cmUmcXVvdDsgSmF2YSZ0cmFkZTsgY29kZSBhbmQgaGFzIG5vIGRpcmVjdA0KZGVwZW5kZW5jZSBvbiB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtLiBUaGUgY2hpZWYgZGVwZW5kZW5jZSBpcyB0aGVyZWZvcmUNCm9uIHRoZSBKYXZhIDIgUGxhdGZvcm0gaXRzZWxmLiBUaGUgMi4xIHJlbGVhc2Ugb2YgdGhlIEVjbGlwc2UgUHJvamVjdCBpcyB3cml0dGVuDQphbmQgY29tcGlsZWQgYWdhaW5zdCB2ZXJzaW9uIDEuMyBvZiB0aGUgSmF2YSAyIFBsYXRmb3JtIEFQSXMsIGFuZCB0YXJnZXRlZCB0bw0KcnVuIG9uIGVpdGhlciB2ZXJzaW9uIDEuMyBvciAxLjQgb2YgdGhlIEphdmEgMiBSdW50aW1lIEVudmlyb25tZW50LCBTdGFuZGFyZA0KRWRpdGlvbi48L3A+DQo8cD5FY2xpcHNlIFNESyAyLjEgd2lsbCBiZSB0ZXN0ZWQgYW5kIHZhbGlkYXRlZCBvbiB0aGUgZm9sbG93aW5nIEphdmEgMg0KUGxhdGZvcm0gaW1wbGVtZW50YXRpb25zOjwvcD4NCjx0YWJsZSB3aWR0aD0iOTElIiBib3JkZXI9IjEiPg0KICA8dGJvZHk+DQogICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSIyMSUiPjxiPk9wZXJhdGluZyBzeXN0ZW08L2I+PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Yj5Qcm9jZXNzb3IgYXJjaGl0ZWN0dXJlPC9iPjwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjczJSI+PGI+SmF2YSAyIFBsYXRmb3JtczwvYj48L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSIyMSUiIHJvd1NwYW49IjQiPk1pY3Jvc29mdK48YnI+DQogICAgICAgIFdpbmRvd3OuPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTglIiByb3dTcGFuPSI0Ij5JbnRlbCB4ODY8L3RkPg0KICAgICAgPHRkIHdpZHRoPSI3MyUiPiBTdW4gSmF2YSAyIFNESywgU3RhbmRhcmQgRWRpdGlvbiwgdmVyc2lvbiAxLjMuMV8wNiBmb3IgDQogICAgICAgIE1pY3Jvc29mdCBXaW5kb3dzPC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iNzMlIj4gU3VuIEphdmEgMiBTREssIFN0YW5kYXJkIEVkaXRpb24sIHZlcnNpb24gMS40LjFfMDEgZm9yIA0KICAgICAgICBNaWNyb3NvZnQgV2luZG93czwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgd2lkdGg9IjczJSI+IDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IElCTSANCiAgICAgICAgRGV2ZWxvcGVyIEtpdCBmb3IgV2luZG93cywgSmF2YSAyIFRlY2hub2xvZ3kgRWRpdGlvbiwgdmVyc2lvbiAxLjMuMSBTUi0zPC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iNzMlIj4gSUJNIDMyLWJpdCBTREsgZm9yIFdpbmRvd3MsIEphdmEgMiBUZWNobm9sb2d5IEVkaXRpb24sIA0KICAgICAgICB2ZXJzaW9uIDEuNC4wPC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iMjElIiByb3dTcGFuPSIzIj5MaW51eDwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE4JSIgcm93U3Bhbj0iMyI+SW50ZWwgeDg2PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNzMlIj4gU3VuIEphdmEgMiBTREssIFN0YW5kYXJkIEVkaXRpb24sIHZlcnNpb24gMS4zLjFfMDYgZm9yIA0KICAgICAgICBMaW51eCB4ODY8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSI3MyUiPiBTdW4gSmF2YSAyIFNESywgU3RhbmRhcmQgRWRpdGlvbiwgdmVyc2lvbiAxLjQuMV8wMSBmb3IgDQogICAgICAgIExpbnV4IHg4NjwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgd2lkdGg9IjczJSI+IDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IElCTSANCiAgICAgICAgRGV2ZWxvcGVyIEtpdCBmb3IgTGludXgsIEphdmEgMiBUZWNobm9sb2d5IEVkaXRpb24sIHZlcnNpb24gMS4zLjEgU1ItMzwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgd2lkdGg9IjIxJSIgcm93U3Bhbj0iMiI+U3VuIFNvbGFyaXM8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIxOCUiIHJvd1NwYW49IjIiPlNQQVJDPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNzMlIj4gU3VuIEphdmEgMiBTREssIFN0YW5kYXJkIEVkaXRpb24sIHZlcnNpb24gMS4zLjFfMDYgZm9yIA0KICAgICAgICBTb2xhcmlzIFNQQVJDPC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iNzMlIj4gU3VuIEphdmEgMiBTREssIFN0YW5kYXJkIEVkaXRpb24sIHZlcnNpb24gMS40LjFfMDEgZm9yIA0KICAgICAgICBTb2xhcmlzIFNQQVJDPC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iMjElIj5IUCBIUC1VWDwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE4JSI+aHA5MDAwIFBBLVJJU0M8L3RkPg0KICAgICAgPHRkIHdpZHRoPSI3MyUiPjxzcGFuIGNsYXNzPSJoZWFkZXIiPkhQLVVYIFNESyBmb3IgdGhlIEphdmEgMiBwbGF0Zm9ybSwNCiAgICAgICAgdmVyc2lvbiAxLjMuMSBmb3IgaHA5MDAwIFBBLVJJU0M8L3NwYW4+PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iMjElIj5JQk2uIEFJWDwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE4JSI+UG93ZXJQQzwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjczJSI+IElCTSBEZXZlbG9wZXIgS2l0IGZvciBBSVgsIEphdmEgMiBUZWNobm9sb2d5IEVkaXRpb24sIHZlcnNpb24gDQogICAgICAgIDEuMy4xPC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgIDx0ZCB3aWR0aD0iMjElIiByb3dTcGFuPSIyIj5BcHBsZa4gTWFjriBPUzwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE4JSIgcm93U3Bhbj0iMiI+UG93ZXJQQzwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjczJSI+SmF2YSAyIFN0YW5kYXJkIEVkaXRpb24gMS4zLjEgZm9yIE1hYyBPUyBYIDEwLjI8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkIHdpZHRoPSI3MyUiPjxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IEphdmEgDQogICAgICAgIDIgU3RhbmRhcmQgRWRpdGlvbiAxLjQuMSBmb3IgTWFjIE9TIFggMTAuMjwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgd2lkdGg9IjIxJSI+PHNwYW4gY2xhc3M9InRpdGxlIj5RTlg8L3NwYW4+rjxzcGFuIGNsYXNzPSJ0aXRsZSI+IE5ldXRyaW5vPC9zcGFuPq48c3BhbiBjbGFzcz0idGl0bGUiPiANCiAgICAgICAgUlRPUzwvc3Bhbj48L3RkPg0KICAgICAgPHRkIHdpZHRoPSIxOCUiPkludGVsIHg4NjwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjczJSI+SUJNIEo5IFZNIGZvciBRTlgsIHZlcnNpb24gMi4wPC90ZD4NCiAgICA8L3RyPg0KICA8L3Rib2R5Pg0KPC90YWJsZT4NCjxwPjxzcGFuIGNsYXNzPSJoZWFkZXIiPlRoZSBmb2xsb3dpbmcgdGFibGUgZGVzY3JpYmVzIHRoZSBjb21iaW5hdGlvbnMgb2YNCm9wZXJhdGluZyBzeXN0ZW0gYW5kIEphdmEgMiBQbGF0Zm9ybSB1c2VkIHdoZW4gdGVzdGluZyB0aGUgRWNsaXBzZSBTREsNCmNvbmZpZ3VyYXRpb25zLiBUaGUgc3RhdHVzIGNvbHVtbiBpbmRpY2F0ZXMgdGhlIGxldmVsIG9mIHRlc3Rpbmc6DQomcXVvdDtQcmltYXJ5JnF1b3Q7IG1lYW5zIGEgZnVsbCB0ZXN0ZWQgY29uZmlndXJhdGlvbjsgJnF1b3Q7PC9zcGFuPlNlY29uZGFyeSZxdW90Ow0KbWVhbnMgYSBjb25maWd1cmF0aW9uIHdoaWNoIGlzIG9ubHkgbGlnaHRseSB0ZXN0ZWQ7ICZxdW90O1VudGVzdGVkJnF1b3Q7IG1lYW5zIGENCmNvbmZpZ3VyYXRpb24gdGhhdCBoYXMgcmVjZWl2ZWQgbm8gdGVzdGluZywgYnV0IHdoaWNoIHNob3VsZCB3b3JrLjwvcD4NCjx0YWJsZSB3aWR0aD0iOTElIiBib3JkZXI9IjEiIGhlaWdodD0iNDE1Ij4NCiAgPHRib2R5Pg0KICAgIDx0cj4gDQogICAgICA8dGQgd2lkdGg9IjExJSIgaGVpZ2h0PSIzMiI+PGI+V2luZG93IHN5c3RlbTwvYj48L3RkPg0KICAgICAgPHRkIHdpZHRoPSIyOCUiIGhlaWdodD0iMzIiPjxiPkphdmEgMiBQbGF0Zm9ybTxicj4NCiAgICAgICAgKHNlZSBhYm92ZSB0YWJsZSk8L2I+PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNDIlIiBoZWlnaHQ9IjMyIj48Yj5PcGVyYXRpbmcgRW52aXJvbm1lbnQ8L2I+PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjMyIj48Yj5UZXN0aW5nIFN0YXR1czwvYj48L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPiANCiAgICAgIDx0ZCB3aWR0aD0iMTElIiByb3dTcGFuPSI1IiBoZWlnaHQ9IjEwNCI+V2luMzI8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIyOCUiIHJvd1NwYW49IjUiIGhlaWdodD0iMTA0Ij5XaW5kb3dzIG9uIEludGVsIHg4NjwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIxNiI+V2luZG93cyBYUDwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIxNiI+UHJpbWFyeTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+IA0KICAgICAgPHRkIHdpZHRoPSI0MiUiIGhlaWdodD0iMTYiPldpbmRvd3MgMjAwMDwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIxNiI+UHJpbWFyeTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+IA0KICAgICAgPHRkIHdpZHRoPSI0MiUiIGhlaWdodD0iMTYiPldpbmRvd3MgTUU8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIxOSUiIGhlaWdodD0iMTYiPlNlY29uZGFyeTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+IA0KICAgICAgPHRkIHdpZHRoPSI0MiUiIGhlaWdodD0iMTYiPldpbmRvd3MgOThTRTwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIxNiI+U2Vjb25kYXJ5PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4gDQogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIxNiI+V2luZG93cyBOVDwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIxNiI+U2Vjb25kYXJ5PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4gDQogICAgICA8dGQgd2lkdGg9IjExJSIgcm93U3Bhbj0iNiIgaGVpZ2h0PSIxNTIiPk1vdGlmPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMjglIiByb3dTcGFuPSIzIiBoZWlnaHQ9Ijg2Ij4mbmJzcDsgPHA+TGludXggb24gSW50ZWwgeDg2PC9wPg0KICAgICAgICA8cD4mbmJzcDs8L3A+PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNDIlIiBoZWlnaHQ9IjI1Ij48aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiANCiAgICAgICAgUmVkSGF0IExpbnV4IDguMCB4ODY8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIxOSUiIGhlaWdodD0iMjUiPlByaW1hcnk8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPiANCiAgICAgIDx0ZCB3aWR0aD0iNDIlIiBoZWlnaHQ9IjI1Ij48aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiANCiAgICAgICAgU3VTRSBMaW51eCA4LjEgeDg2PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjI1Ij5QcmltYXJ5PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4gDQogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIyNCI+T3RoZXIgTGludXg7IGtlcm5lbCB2ZXJzaW9uIDIuNC43LCBhbmQgWEZyZWU4NiANCiAgICAgICAgdmVyc2lvbiA0LjEuMDwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIyNCI+VW50ZXN0ZWQ8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPiANCiAgICAgIDx0ZCB3aWR0aD0iMjglIiBoZWlnaHQ9IjE2Ij5Tb2xhcmlzIG9uIFNQQVJDJm5ic3A7PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNDIlIiBoZWlnaHQ9IjE2Ij5TdW4gU29sYXJpcyA4IFNQQVJDPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjE2Ij5QcmltYXJ5PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4gDQogICAgICA8dGQgd2lkdGg9IjI4JSIgaGVpZ2h0PSIxNiI+SFAtVVggb24gaHA5MDAwIFBBLVJJU0M8L3RkPg0KICAgICAgPHRkIHdpZHRoPSI0MiUiIGhlaWdodD0iMTYiPkhQLVVYIDExaSBocDkwMDA8L3RkPg0KICAgICAgPHRkIHdpZHRoPSIxOSUiIGhlaWdodD0iMTYiPlByaW1hcnk8L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPiANCiAgICAgIDx0ZCB3aWR0aD0iMjglIiBoZWlnaHQ9IjE2Ij5BSVggb24gUG93ZXJQQzwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIxNiI+SUJNIEFJWCA1LjEgb24gUG93ZXJQQzwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIxNiI+UHJpbWFyeTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+IA0KICAgICAgPHRkIHdpZHRoPSIxMSUiIHJvd1NwYW49IjQiIGhlaWdodD0iODEiPkdUSzwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjI4JSIgcm93U3Bhbj0iNCIgaGVpZ2h0PSI4MSI+TGludXggb24gSW50ZWwgeDg2PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4gDQogICAgICA8dGQgaGVpZ2h0PSIxNSI+PGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gUmVkSGF0IA0KICAgICAgICBMaW51eCA4LjAgeDg2PC90ZD4NCiAgICAgIDx0ZCBoZWlnaHQ9IjE1Ij5QcmltYXJ5PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4gDQogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIxNiI+PGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gDQogICAgICAgIFN1U0UgTGludXggOC4xIHg4NjwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIxNiI+UHJpbWFyeTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+IA0KICAgICAgPHRkIHdpZHRoPSI0MiUiIGhlaWdodD0iMTYiPjxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IA0KICAgICAgICBPdGhlciBMaW51eDsgR1RLIDIuMC42PC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iMTklIiBoZWlnaHQ9IjE2Ij5VbnRlc3RlZDwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+IA0KICAgICAgPHRkIHdpZHRoPSIxMSUiIGhlaWdodD0iMTYiPkNhcmJvbjwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjI4JSIgaGVpZ2h0PSIxNiI+TWFjIE9TIFggb24gUG93ZXJQQzwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjQyJSIgaGVpZ2h0PSIxNiI+TWFjIE9TIFggMTAuMjwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIxNiI+PGk+RWFybHkgYWNjZXNzPC9pPjwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+IA0KICAgICAgPHRkIHdpZHRoPSIxMSUiIGhlaWdodD0iMTYiPlBob3Rvbq48L3RkPg0KICAgICAgPHRkIHdpZHRoPSIyOCUiIGhlaWdodD0iMTYiPklCTSBKOSBWTSBmb3IgUU5YPC90ZD4NCiAgICAgIDx0ZCB3aWR0aD0iNDIlIiBoZWlnaHQ9IjE2Ij5RTlggTmV1dHJpbm8gUlRPUyA2LjIuMSZuYnNwOzwvdGQ+DQogICAgICA8dGQgd2lkdGg9IjE5JSIgaGVpZ2h0PSIxNiI+UHJpbWFyeTwvdGQ+DQogICAgPC90cj4NCiAgPC90Ym9keT4NCjwvdGFibGU+DQo8aDQ+SW50ZXJuYXRpb25hbGl6YXRpb248L2g0Pg0KPHA+VGhlIEVjbGlwc2UgUGxhdGZvcm0gaXMgZGVzaWduZWQgYXMgdGhlIGJhc2lzIGZvciBpbnRlcm5hdGlvbmFsaXplZCBwcm9kdWN0cy4NClRoZSB1c2VyIGludGVyZmFjZSBlbGVtZW50cyBwcm92aWRlZCBieSB0aGUgRWNsaXBzZSBTREsgY29tcG9uZW50cywgaW5jbHVkaW5nDQpkaWFsb2dzIGFuZCBlcnJvciBtZXNzYWdlcywgYXJlIGV4dGVybmFsaXplZC4gVGhlIEVuZ2xpc2ggc3RyaW5ncyBhcmUgcHJvdmlkZWQNCmFzIHRoZSBkZWZhdWx0IHJlc291cmNlIGJ1bmRsZXMuPC9wPg0KPHA+TGF0aW4tMSBsb2NhbGVzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIEVjbGlwc2UgU0RLIG9uIGFsbCBvZiB0aGUgYWJvdmUNCm9wZXJhdGluZyBlbnZpcm9ubWVudHM7IERCQ1MgbG9jYWxlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBFY2xpcHNlIFNESyBvbg0KdGhlIFdpbmRvd3MsIEdUSywgYW5kIE1vdGlmIHdpbmRvdyBzeXN0ZW1zOyBCSURJIGxvY2FsZXMgYXJlIHN1cHBvcnRlZCBieSB0aGUgRWNsaXBzZSBTREsNCm9ubHkgb24gV2luZG93cyBvcGVyYXRpbmcgZW52aXJvbm1lbnRzLg0KPHA+VGhlIEVjbGlwc2UgU0RLIHN1cHBvcnRzIEdCIDE4MDMwLCB0aGUgbmV3IENoaW5lc2UgY29kZSBwYWdlIHN0YW5kYXJkLCBvbg0KV2luZG93cyAyMDAwIGFuZCBYUCBvbmx5LiBOb3RlIHRoYXQgR0IgMTgwMzAgYWxzbyByZXF1aXJlcyBsb2NhbGUgYW5kIGNoYXJhY3Rlcg0KZW5jb2Rpbmcgc3VwcG9ydCBmcm9tIHRoZSBKYXZhIDIgUnVudGltZSBFbnZpcm9ubWVudDsgdGhpcyBzdXBwb3J0IGlzIHN0YW5kYXJkDQppbiB2ZXJzaW9uIDEuNCwgYW5kIGFsc28gYXZhaWxhYmxlIGluIHNvbWUgMS4zIEpSRXMuDQo8cD5HZXJtYW4gYW5kIEphcGFuZXNlIGxvY2FsZXMgaGF2ZSBiZWVuIHRlc3RlZC4NCjxoND5CSURJIHN1cHBvcnQ8L2g0Pg0KPHA+VGhlIEVjbGlwc2UgU0RLIGlzIGEgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdGFyZ2V0ZWQgYXQgdGVjaG5pY2FsDQpwcm9mZXNzaW9uYWxzIC0gbm90IGFuIGVuZCB1c2VyIGFwcGxpY2F0aW9uLiBIb3dldmVyLCB0aGUgRWNsaXBzZSBTREsgdG9vbHMgd2lsbA0KcGVybWl0IHRlY2huaWNhbCBwcm9mZXNzaW9uYWxzIHdobyBhcmUgd29ya2luZyBpbiBFbmdsaXNoIHRvIGJ1aWxkIEhlYnJldy9BcmFiaWMNCmVuZCB1c2VyIEphdmEgcHJvZ3JhbXMgd2hpY2ggYXJlIHRoZW1zZWx2ZXMgbm90IGJhc2VkIG9uIHRoZSBFY2xpcHNlIFNESy4gVGhlDQpCSURJIHN1cHBvcnQgaW4gdGhlIEVjbGlwc2UgU0RLIGFsbG93cyBhIEphdmEgcHJvZ3JhbW1lciB0byB3b3JrIHdpdGggQklESQ0Kc3RyaW5ncywgY29kZSBjb21tZW50cywgZXRjLiBidXQgdGhlIEVjbGlwc2UgU0RLIGl0c2VsZiBpcyBub3QgZGVzaWduZWQgdG8gYmUNCmxvY2FsaXplZCBmb3IgQklESSBsb2NhbGVzIGFuZCBpdHMgd2lkZ2V0IG9yaWVudGF0aW9uIGNhbiBub3QgYmUgY2hhbmdlZC48L3A+DQo8cD48aT5JTVBPUlRBTlQ6IFRoZSBhYm92ZSBCSURJIHN1cHBvcnQgaXMgYXZhaWxhYmxlIG9ubHkgb24gV2luZG93cyBwbGF0Zm9ybXMuPC9pPjwvcD4NCg0KPGgyPg0KDQpDb21wYXRpYmlsaXR5IHdpdGggUHJldmlvdXMgUmVsZWFzZXM8L2gyPg0KDQo8cD4NCg0KSXQgaXMgYSBnaXZlbiB0aGF0IEVjbGlwc2UgMi4xIHdpbGwgYmUgdXB3YXJkcyBjb21wYXRpYmxlIHdpdGggRWNsaXBzZSAyLjAuIEFuIGluY29tcGF0aWJsZSBicmVhayB3aXRoIHRoZSBwYXN0IHRoaXMgZWFybHkgb24gd291bGQgYmUgYm90aCB1bndlbGNvbWUgYW5kDQp1bndhcnJhbnRlZC48L3A+DQoNCjxoMz4NCg0KQ29tcGF0aWJpbGl0eSBvZiBSZWxlYXNlIDIuMSB3aXRoIDIuMDwvaDM+DQoNCiBFY2xpcHNlIFNESyAyLjEgd2lsbCBiZSB1cHdhcmRzIGNvbXBhdGlibGUgd2l0aCBFY2xpcHNlIFNESyAyLjAgdG8gdGhlIA0KZ3JlYXRlc3QgZXh0ZW50IHBvc3NpYmxlLiBXZSBhbnRpY2lwYXRlIGEgc21hbGwgbnVtYmVyIG9mIGFyZWFzIHdoZXJlIHNsYXZpc2hseSANCm1haW50YWluaW5nIGNvbXBhdGliaWxpdHkgd291bGQgbm90IGJlIGluIHRoZSBiZXN0IGludGVyZXN0cyBvZiB0aGUgUGxhdGZvcm0gb3IgDQppdHMgY2xpZW50cy4gQWxsIHN1Y2ggZXhjZXB0aW9ucyB3aWxsIGJlIG5vdGVkIGluIHRoZSAyLjEgcmVsZWFzZSBub3RlcyBzbyB0aGF0IA0KY2xpZW50cyBjYW4gYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhlc2UgY2hhbmdlcyBvbiB0aGVpciBwbHVnLWlucyBhbmQgcHJvZHVjdHMuDQoNCjxwPjxiPkFQSSBDb250cmFjdCBDb21wYXRpYmlsaXR5OjwvYj4gRWNsaXBzZSBTREsgMi4xIHdpbGwgYmUgdXB3YXJkcyBjb250cmFjdC1jb21wYXRpYmxlIA0KICB3aXRoIEVjbGlwc2UgU0RLIDIuMCB1bmxlc3Mgbm90ZWQuIFRoaXMgbWVhbnMgdGhhdCBwcm9ncmFtcyBpbiBmdWxsIGNvbXBsaWFuY2UgDQogIHdpdGggY29udHJhY3RzIHNwZWNpZmllZCBpbiBFY2xpcHNlIFNESyAyLjAgQVBJcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgaW4gZnVsbCANCiAgY29tcGxpYW5jZSB3aXRoIEVjbGlwc2UgU0RLIDIuMSBBUElzLiAoQVBJIGlzIGNvbnN0cnVlZCBicm9hZGx5IHRvIGluY2x1ZGUgc3VjaCANCiAgdGhpbmdzIGFzIHBsdWctaW4gZXh0ZW5zaW9uIHBvaW50cy4pIERvd253YXJkIGNvbnRyYWN0IGNvbXBhdGliaWxpdHkgaXMgbm90IA0KICBzdXBwb3J0ZWQuIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGNvbXBsaWFuY2Ugd2l0aCBFY2xpcHNlIFNESyAyLjEgQVBJcyB3b3VsZCANCiAgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCBFY2xpcHNlIFNESyAyLjAgQVBJcy4gUmVmZXIgdG8gPGk+PGEgaHJlZj0iaHR0cDovL2VjbGlwc2Uub3JnL2VjbGlwc2UvZGV2ZWxvcG1lbnQvamF2YS1hcGktZXZvbHV0aW9uLmh0bWwiPkV2b2x2aW5nIA0KICBKYXZhLWJhc2VkIEFQSXM8L2E+PC9pPiBmb3IgYSBkaXNjdXNzaW9uIG9mIHRoZSBraW5kcyBvZiBBUEkgY2hhbmdlcyB0aGF0IG1haW50YWluIA0KICBjb250cmFjdCBjb21wYXRpYmlsaXR5LiANCjxwPjxiPkJpbmFyeSAocGx1Zy1pbikgQ29tcGF0aWJpbGl0eTo8L2I+IEVjbGlwc2UgU0RLIDIuMSB3aWxsIGJlIHVwd2FyZHMgYmluYXJ5LWNvbXBhdGlibGUgDQogIHdpdGggRWNsaXBzZSBTREsgMi4wIHVubGVzcyBub3RlZC4gVGhpcyBtZWFucyB0aGF0IHBsdWctaW5zIGJ1aWx0IGZvciBFY2xpcHNlIA0KICBTREsgMi4wIHdpbGwgY29udGludWUgdG8gd29yayBjb3JyZWN0bHkgaW4gRWNsaXBzZSBTREsgMi4xIHdpdGhvdXQgY2hhbmdlLiBEb3dud2FyZCANCiAgcGx1Zy1pbiBjb21wYXRpYmlsaXR5IGlzIG5vdCBzdXBwb3J0ZWQuIFBsdWctaW5zIGZvciBFY2xpcHNlIFNESyAyLjEgYXJlIHVubGlrZWx5IA0KICB0byBiZSB1c2FibGUgaW4gRWNsaXBzZSBTREsgMi4wLiBQbHVnLWlucyB3aXRoIGhhcmQtY29kZWQgcmVmZXJlbmNlcyBpbiB0aGVpciANCiAgcGx1Zy1pbiBtYW5pZmVzdCBmaWxlIHRvIDIuMCB2ZXJzaW9ucyBvZiBwcmVyZXF1aXNpdGUgRWNsaXBzZSBQcm9qZWN0IHBsdWctaW5zIA0KICB3aWxsIHdvcmsgaW4gMi4xIHByb3ZpZGVkIHRoZSB2ZXJzaW9uIG1hdGNoIHJ1bGUgaXMgJnF1b3Q7Z3JlYXRlck9yRXF1YWwmcXVvdDsgDQogIG9yICZxdW90O2NvbXBhdGlibGUmcXVvdDsgKHRoZSBkZWZhdWx0KTsgcmVmZXJlbmNlcyB1c2luZyAmcXVvdDtwZXJmZWN0JnF1b3Q7IA0KICBvciAmcXVvdDtlcXVpdmFsZW50JnF1b3Q7IG1hdGNoIHJ1bGVzIHdpbGwgYmUgYnJva2VuLiBSZWZlciB0byA8aT48YSBocmVmPSJodHRwOi8vZWNsaXBzZS5vcmcvZWNsaXBzZS9kZXZlbG9wbWVudC9qYXZhLWFwaS1ldm9sdXRpb24uaHRtbCI+RXZvbHZpbmcgDQogIEphdmEtYmFzZWQgQVBJczwvYT48L2k+IGZvciBhIGRpc2N1c3Npb24gb2YgdGhlIGtpbmRzIG9mIEFQSSBjaGFuZ2VzIHRoYXQgbWFpbnRhaW4gDQogIGJpbmFyeSBjb21wYXRpYmlsaXR5LiANCjxwPjxiPlNvdXJjZSBDb21wYXRpYmlsaXR5OjwvYj4gRWNsaXBzZSBTREsgMi4xIHdpbGwgYmUgdXB3YXJkcyBzb3VyY2UtY29tcGF0aWJsZSANCiAgd2l0aCBFY2xpcHNlIFNESyAyLjAgdW5sZXNzIG5vdGVkLiBUaGlzIG1lYW5zIHRoYXQgc291cmNlIGZpbGVzIHdyaXR0ZW4gDQogIHRvIHVzZSBFY2xpcHNlIFNESyAyLjAgQVBJcyBjYW4gYmUgc3VjY2Vzc2Z1bGx5IGNvbXBpbGVkIGFuZCBydW4gYWdhaW5zdCBFY2xpcHNlIFNESyAyLjEgQVBJcy4gU2luY2Ugc291cmNlIGluY29tcGF0aWJpbGl0aWVzIGFyZSBlYXN5IHRvIGRlYWwgd2l0aCwgDQogIG1haW50YWluaW5nIHNvdXJjZSBjb21wYXRpYmlsaXR5IGlzIGNvbnNpZGVyZWQgbXVjaCBsZXNzIGltcG9ydGFudCB0aGFuIG1haW50YWluaW5nIA0KICBjb250cmFjdCBhbmQgYmluYXJ5IGNvbXBhdGliaWxpdHkuIERvd253YXJkIHNvdXJjZSBjb21wYXRpYmlsaXR5IGlzIG5vdCBzdXBwb3J0ZWQuIA0KICBJZiBzb3VyY2UgZmlsZXMgdXNlIG5ldyBFY2xpcHNlIFNESyBBUElzLCB0aGV5IHdpbGwgbm90IGJlIHVzYWJsZSB3aXRoIGFuIGVhcmxpZXIgDQogIHZlcnNpb24gb2YgRWNsaXBzZSBTREsuIA0KPHA+PGI+V29ya3NwYWNlIENvbXBhdGliaWxpdHk6PC9iPiBFY2xpcHNlIFNESyAyLjEgd2lsbCBiZSB1cHdhcmRzIHdvcmtzcGFjZS1jb21wYXRpYmxlIA0KICB3aXRoIEVjbGlwc2UgU0RLIDIuMCB1bmxlc3Mgbm90ZWQuIFRoaXMgbWVhbnMgdGhhdCB3b3Jrc3BhY2VzIGFuZCBwcm9qZWN0cyBjcmVhdGVkIA0KICB3aXRoIEVjbGlwc2UgU0RLIDIuMCBjYW4gYmUgc3VjY2Vzc2Z1bGx5IG9wZW5lZCBieSBFY2xpcHNlIFNESyAyLjEgYW5kIHVwZ3JhZGVkIA0KICB0byBhIDIuMSB3b3Jrc3BhY2UuPGJyPg0KICA8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBUaGlzIGluY2x1ZGVzIGJvdGggaGlkZGVuIA0KICBtZXRhZGF0YSwgd2hpY2ggaXMgbG9jYWxpemVkIHRvIGEgcGFydGljdWxhciB3b3Jrc3BhY2UsIGFzIHdlbGwgYXMgbWV0YWRhdGEgDQogIGZpbGVzIGZvdW5kIHdpdGhpbiBhIHdvcmtzcGFjZSBwcm9qZWN0IChlLmcuLCB0aGUgLnByb2plY3QgZmlsZSksIHdoaWNoIG1heSANCiAgcHJvcGFnYXRlIGZyb20gYmV0d2VlbiB3b3Jrc3BhY2VzIHZpYSBmaWxlIGNvcHlpbmcgb3IgdGVhbSByZXBvc2l0b3JpZXMuIEluZGl2aWR1YWwgDQogIHBsdWctaW5zIGRldmVsb3BlZCBmb3IgRWNsaXBzZSBTREsgMi4xIHNob3VsZCBwcm92aWRlIHNpbWlsYXIgdXB3YXJkcyBjb21wYXRpYmlsaXR5IA0KICBmb3IgdGhlaXIgaGlkZGVuIGFuZCB2aXNpYmxlIHdvcmtzcGFjZSBtZXRhZGF0YSBjcmVhdGVkIGJ5IGVhcmxpZXIgdmVyc2lvbnM7IA0KICAyLjEgcGx1Zy1pbiBkZXZlbG9wZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCB0aGVpciBwbHVnLWlucyByZWNvZ25pemUgDQogIGJvdGggMi4xIGFuZCAyLjAgbWV0YWRhdGEgYW5kIHByb2Nlc3MgaXQgYXBwcm9wcmlhdGVseS4gVXNlciBpbnRlcmZhY2Ugc2Vzc2lvbiANCiAgc3RhdGUgbWF5IGJlIGRpc2NhcmRlZCB3aGVuIGEgd29ya3NwYWNlIGlzIHVwZ3JhZGVkLiBEb3dud2FyZCB3b3Jrc3BhY2UgY29tcGF0aWJpbGl0eSANCiAgaXMgbm90IHN1cHBvcnRlZC4gQSB3b3Jrc3BhY2UgY3JlYXRlZCAob3Igb3BlbmVkKSBieSBFY2xpcHNlIFNESyAyLjEgd2lsbCBiZSANCiAgdW51c2FibGUgd2l0aCBhbiBlYXJsaWVyIHZlcnNpb24gb2YgRWNsaXBzZSBTREsuJm5ic3A7VmlzaWJsZSBtZXRhZGF0YSBmaWxlcyANCiAgY3JlYXRlZCAob3Igb3ZlcndyaXR0ZW4pIGJ5IEVjbGlwc2UgU0RLIDIuMSB3aWxsIGdlbmVyYWxseSBiZSB1bnVzYWJsZSB3aXRoIA0KICBlYXJsaWVyIHZlcnNpb25zIG9mIEVjbGlwc2UgU0RLLiZuYnNwOw0KPHA+PGI+Tm9uLWNvbXBsaWFudCB1c2FnZSBvZiBBUEknczwvYj46IEFsbCBub24tQVBJIG1ldGhvZHMgYW5kIGNsYXNzZXMsIGFuZCBjZXJ0YWlubHkgDQogIGV2ZXJ5dGhpbmcgaW4gYSBwYWNrYWdlIHdpdGggJnF1b3Q7aW50ZXJuYWwmcXVvdDsgaW4gaXRzIG5hbWUsIGFyZSBjb25zaWRlcmVkIA0KICBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHdoaWNoIG1heSB2YXJ5IGJldHdlZW4gb3BlcmF0aW5nIGVudmlyb25tZW50IGFuZCBhcmUgDQogIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiBDbGllbnQgcGx1Zy1pbnMgdGhhdCBkaXJlY3RseSBkZXBlbmQgb24gYW55dGhpbmcgDQogIG90aGVyIHRoYW4gd2hhdCBpcyBzcGVjaWZpZWQgaW4gdGhlIEVjbGlwc2UgU0RLIEFQSSBhcmUgaW5oZXJlbnRseSB1bnN1cHBvcnRhYmxlIA0KICBhbmQgcmVjZWl2ZSBubyBndWFyYW50ZWVzIGFib3V0IGNvbXBhdGliaWxpdHkgd2l0aGluIGEgc2luZ2xlIHJlbGVhc2UgbXVjaCBsZXNzIA0KICB3aXRoIGFuIGVhcmxpZXIgcmVsZWFzZS4gUmVmZXIgdG8gPGk+PGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9hcnRpY2xlcy9BcnRpY2xlLUFQSSUyMHVzZS9lY2xpcHNlLWFwaS11c2FnZS1ydWxlcy5odG1sIj5Ib3cgDQogIHRvIFVzZSB0aGUgRWNsaXBzZSBBUEk8L2E+PC9pPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIHdyaXRlIGNvbXBsaWFudCANCiAgcGx1Zy1pbnMuIA0KDQo8aDI+IEVjbGlwc2UgUHJvamVjdCBTdWJwcm9qZWN0czwvaDI+DQoNClRoZSBFY2xpcHNlIFByb2plY3QgY29uc2lzdHMgb2YgMyBzdWJwcm9qZWN0cy4gRWFjaCBzdWJwcm9qZWN0DQoNCmlzIGNvdmVyZWQgaW4gaXRzIG93biBzZWN0aW9uOg0KDQo8YmxvY2txdW90ZT48YSBocmVmPSIjRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0Ij5FY2xpcHNlIFBsYXRmb3JtPC9hPg0KDQo8YnI+DQogIDxhIGhyZWY9IiNKYXZhIGRldmVsb3BtZW50IHRvb2xpbmcgKEpEVCkgc3VicHJvamVjdCI+SkRUIC0gSmF2YSBkZXZlbG9wbWVudCANCiAgdG9vbHM8L2E+IDxicj4NCiAgPGEgaHJlZj0iI1BsdWctaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgKFBERSkgc3VicHJvamVjdCI+UERFIC0gUGx1Zy1pbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudDwvYT48L2Jsb2NrcXVvdGU+DQoNCjxwPkZvciBlYWNoIHN1YnByb2plY3QsIHRoZSBpdGVtcyBsaXN0ZWQgcmVmbGVjdCBuZXcgZmVhdHVyZXMgb2YgdGhlIEVjbGlwc2UgUGxhdGZvcm0sIA0KICBvciBhcmVhcyB3aGVyZSBleGlzdGluZyBmZWF0dXJlcyB3aWxsIGJlIHNpZ25pZmljYW50bHkgcmV3b3JrZWQuIEVhY2ggaXRlbSBpbmRpY2F0ZXMgDQogIHRoZSBjb21wb25lbnRzIGFmZmVjdGVkIGJ5IHRoYXQgd29yayBpdGVtIChtYW55IGl0ZW1zIGludm9sdmUgY29vcmRpbmF0ZWQgY2hhbmdlcyANCiAgdG8gc2V2ZXJhbCBjb21wb25lbnRzKS4NCg0KPGgzPg0KDQo8YSBuYW1lPSJFY2xpcHNlIFBsYXRmb3JtIHN1YnByb2plY3QiPkVjbGlwc2UgUGxhdGZvcm0gc3VicHJvamVjdDwvYT48L2gzPg0KDQpUaGUgRWNsaXBzZSBQbGF0Zm9ybSBwcm92aWRlcyB0aGUgbW9zdCBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MuIFRoZSBmb2xsb3dpbmcgaXRlbXMgcmVmbGVjdCBuZXcgZmVhdHVyZXMgb2YgdGhlIEVjbGlwc2UgUGxhdGZvcm0sIG9yIGFyZWFzDQoNCndoZXJlIGV4aXN0aW5nIGZlYXR1cmVzIHdpbGwgYmUgc2lnbmlmaWNhbnRseSByZXdvcmtlZC4NCjxoND5Db21taXR0ZWQgSXRlbXMgKEVjbGlwc2UgUGxhdGZvcm0gc3VicHJvamVjdCk8L2g0Pg0KPGJsb2NrcXVvdGU+DQo8cD4gPGI+SW1wcm92ZSBzdGFydHVwIHRpbWU8L2I+LiZuYnNwOyBQcm9ncmVzcyB3YXMgbWFkZQ0KYXQgaW1wcm92aW5nIHN0YXJ0dXAgdGltZXMgaW4gMi4wOyBob3dldmVyLCBhZGRpdGlvbmFsIGltcHJvdmVtZW50cyBhcmUgbmVlZGVkLiBJbiBhZGRpdGlvbiwgd2UgbmVlZCB0byBpbnZlc3RpZ2F0ZSBkZWZlcnJpbmcgKG9yIHBhcnRpYWxseSBvbWl0dGluZykgdGhlDQpyZWNvdmVyeSBvZiB0aGUgVUkgc3RhdGUuIFtQbGF0Zm9ybSBDb3JlLCBQbGF0Zm9ybSBVSV08L3A+DQo8cD4NCjxiPkFsbG93IHVzZXIgY3VzdG9taXphYmxlDQprZXkgYmluZGluZ3MuPC9iPiZuYnNwOyBFY2xpcHNlIDIuMCBzdXBwb3J0cyBjb25maWd1cmFibGUga2V5IGJpbmRpbmdzLCBidXQgb25seQ0KZm9yIGVkaXRvciBrZXkgYmluZGluZ3MsIGFuZCBvbmx5IGNvbmZpZ3VyZWQgYnkgYSBwbHVnLWluLiBUaGUgdXNlciBzaG91bGQgYmUNCmFibGUgdG8gaW50ZXJhY3RpdmVseSBjdXN0b21pemUgdGhlDQprZXkgYmluZGluZ3MgZm9yIGFsbCB3b3JrYmVuY2ggYWN0aW9ucy4gVGhlcmUgYXJlIGFkZGl0aW9uYWwgY3VzdG9taXphdGlvbiBwb3NzaWJpbGl0aWVzIGluY2x1ZGluZyB2aXNpYmxlIGFjdGlvbnMgYW5kIHBlcnNwZWN0aXZlIGxheW91dC4NCltQbGF0Zm9ybSBVSSwgU1dULCBUZXh0LCBKRFQgVUldPC9wPg0KPHA+IDxiPkltcHJvdmUgdXBkYXRlDQptYW5hZ2VyLjwvYj4gTWFrZSBjb250aW51aW5nIGltcHJvdmVtZW50cyB0byB0aGUgRWNsaXBzZSBpbnN0YWxsIGFuZCB1cGRhdGUNCm1lY2hhbmlzbXMuIEltcHJvdmUgc3VwcG9ydCBmb3IgaW5zdGFsbGluZyBhbmQgdXBkYXRpbmcgbGFyZ2UgcHJvZHVjdHMgbWFraW5nDQp1c2Ugb2YgbmVzdGVkIGZlYXR1cmVzLiBNYWtlIHJlbW90ZSBjb25uZWN0aW9ucyBtb3JlIGNvbmZpZ3VyYWJsZSAoIGNvbm5lY3Rpb24gdXNpbmcgYSBwcm94eSBzZXJ2ZXINCmJlaGluZCBmaXJld2FsbCBhbmQgYXV0aGVudGljYXRpb24pIGFuZCBtb3JlIHJvYnVzdCAodGltZSBvdXRzKS4gW1BsYXRmb3JtIENvcmUsIFBsYXRmb3JtIEluc3RhbGwvVXBkYXRlXTwvcD4NCjxwPiA8Yj5FbmFibGUgREJDUyBvbiBMaW51eC48L2I+DQpTdXBwb3J0IGRvdWJsZS1ieXRlIGNoYXJhY3RlcnMgb24gdGhlIEdUSyBhbmQgTW90aWYgd2luZG93IHN5c3RlbXMuIFtTV1RdPC9wPg0KPHA+IDxiPkFkZCB3b3JrYmVuY2gNCmVkaXRvciBuYXZpZ2F0aW9uDQpoaXN0b3J5LjwvYj4gVGhlIHVzZXIgc2hvdWxkIGJlIGFibGUgdG8gbmF2aWdhdGUgYmV0d2VlbiB3b3JrYmVuY2ggZWRpdG9ycyB3aXRoIHdlYiBzdHlsZSBiYWNrL2ZvcndhcmQgYWN0aW9ucy4NCihSZWY6IDxhIGhyZWY9Imh0dHA6Ly9kZXYuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NTcwMCI+YnVnIDU3MDA8L2E+KSZuYnNwOw0KW1BsYXRmb3JtIFVJXTwvcD4NCiAgPHA+IDxiPkltcHJvdmUgQW50IHN1cHBvcnQuPC9iPiBBZGQgc3VwcG9ydCB0byBuYXZpZ2F0ZSBmcm9tIEFudCBlcnJvciBvdXRwdXQgDQogICAgdG8gdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlLiBbUGxhdGZvcm0gVUksIEFudCBDb3JlXTwvcD4NCjwvYmxvY2txdW90ZT4NCjxoND5Qcm9wb3NlZCBJdGVtcyAoRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0KTwvaDQ+DQo8YmxvY2txdW90ZT4gDQogIDxwPiA8Yj5JbXByb3ZlIFNXVA0Kc3VwcG9ydCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXM8L2I+LiZuYnNwO0FsbG93IHRoZSBhcHByb3ByaWF0ZSB3aWRnZXQgb3JpZW50YXRpb24NCmZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlcy4gW1NXVF08L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aDQ+RGVmZXJyZWQgSXRlbXMgKEVjbGlwc2UgUGxhdGZvcm0gc3VicHJvamVjdCk8L2g0Pg0KPGJsb2NrcXVvdGU+DQogIDxwPjxiPkFkZCBjaGVhdCBzaGVldHM8L2I+LiZuYnNwOyBBIGNoZWF0IHNoZWV0IGlzIGFuIGluc3RhbmNlIG9mIGEgc2ltcGxlIGtpbmQgDQogICAgb2Ygd29ya2Zsb3cgc3VwcG9ydCB1c2VkIHRvIGhlbHAgdGhlIHVzZXIgY2Fycnkgb3V0IGEgc2VxdWVuY2Ugb2Ygc3RlcHMuIEZvciANCiAgICBleGFtcGxlLCAmcXVvdDtjcmVhdGUgYW5kIGRlcGxveSBhIHBsdWctaW4iIGlzIGEgbXVsdGktc3RlcCBwcm9jZXNzIHRoYXQgY291bGQgDQogICAgYmUgbWFkZSBlYXNpZXIgdG8gZm9sbG93IGlmIHRoZXJlIHdhcyBhIGd1aWRlLCBzaW1pbGFyIHRvIGEgcmVjaXBlIHRoYXQgd291bGQgDQogICAgdHJhY2sgdGhlIHVzZXIncyBwcm9ncmVzcyBhbmQgcHJvdmlkZSBib3RoIGRlc2NyaXB0aXZlIHRleHQgdGhhdCBleHBsYWlucyANCiAgICB0aGUgc3RlcHMgaW52b2x2ZWQgYW5kIGludGVncmF0aW9uIHdpdGggRWNsaXBzZSB0byBhdXRvbWF0ZSB0aGUgcHJvY2Vzcy4gVGhlIA0KICAgIFdlbGNvbWUgUGFnZSBlZGl0b3IgaXMgYSBzaW1wbGUgZXhhbXBsZSBvZiBhIGNoZWF0IHNoZWV0LiBQcm92aWRlIGEgc3RhbmRhcmQgDQogICAgQVBJIGZvciBjcmVhdGluZyBjaGVhdCBzaGVldHMuIFtQbGF0Zm9ybSBVSV08L3A+DQogIDxwPiA8Yj5BZGQgdGFibGUgb2YgY29udGVudHMgc3VwcG9ydCB0byB3aXphcmRzLjwvYj4gRXh0ZW5kIHRoZSB3b3JrYmVuY2ggd2l6YXJkIA0KICAgIGZyYW1ld29yayB0byBhbGxvdyBFY2xpcHNlIHdpemFyZCBkZXZlbG9wZXJzIHRvIHByb3ZpZGUgbXVjaCBtb3JlIHN1YnN0YW50aWFsIA0KICAgIGFuZCBzaWduaWZpY2FudCB1c2VyIGZlZWRiYWNrLiBbUGxhdGZvcm0gVUldPC9wPg0KICA8cD4gPGI+U3VwcG9ydCBmbG9hdGluZyB0b29sYmFycyBhbmQgdmlld3MuPC9iPiBBbGxvdyB0aGUgdXNlciB0byBjdXN0b21pemUgdGhlIA0KICAgIHdvcmtiZW5jaCBieSBjcmVhdGluZyBmbG9hdGluZyB0b29sYmFycyBhbmQgdmlld3MuIFtQbGF0Zm9ybSBVSV08L3A+DQogIDxwPiA8Yj5BbGxvdyBlZGl0b3JzIHRvIG9wZW4gZmlsZXMgb3V0c2lkZSB3b3Jrc3BhY2UuPC9iPiBBIGNvbW1vbiByZXF1ZXN0IGlzIA0KICAgIHRvIGJlIGFibGUgdG8gb3BlbiBhIGZpbGUgdGhhdCBpcyBub3QgcGFydCBvZiB0aGUgd29ya3NwYWNlIHVzaW5nIEVjbGlwc2UuIA0KICAgIEluIGFkZGl0aW9uLCBhcHBsaWNhdGlvbnMgd291bGQgbGlrZSB0byBwcm92aWRlIGZpbGUgZXh0ZW5zaW9uIGFzc29jaWF0aW9ucyANCiAgICBzbyB0aGF0IGRvdWJsZS1jbGlja2luZyBvbiBhIGZpbGUgaW4gdGhlIE9TIGRlc2t0b3Agd291bGQgb3BlbiB0aGUgYXNzb2NpYXRlZCANCiAgICBFY2xpcHNlIGVkaXRvci4gVGhlIG9wZXJhdGlvbnMgYW5kIGNhcGFiaWxpdGllcyBhdmFpbGFibGUgb24gdGhlc2UgIm91dHNpZGUgDQogICAgb2YgdGhlIHdvcmtzcGFjZSIgZmlsZXMgd291bGQgbmVlZCB0byBiZSBkZWZpbmVkLiBbUGxhdGZvcm0gVUldPC9wPg0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gcmVjZW50bHkgZGVmZXJyZWQpIA0KICAgIDxiPkltcHJvdmUgc2VydmljZWFiaWxpdHkuIDwvYj4gUHJvZ3Jlc3Mgd2FzIG1hZGUgYXQgaW1wcm92aW5nIHNlcnZpY2VhYmlsaXR5IA0KICAgIGluIDIuMDsgaG93ZXZlciwgYWRkaXRpb25hbCBpbXByb3ZlbWVudHMgYXJlIG5lZWRlZCwgcGFydGljdWxhcmx5IGluIGRlYWxpbmcgDQogICAgd2l0aCBlcnJvciBjb25kaXRpb25zIGFuZCByZXBvcnRpbmcgdGhlbSBpbiBhbiBhcHByb3ByaWF0ZSBtYW5uZXIuIFtQbGF0Zm9ybSANCiAgICBDb3JlLCBTV1QsIFBsYXRmb3JtIFVJXTxicj4NCiAgICA8YnI+DQogICAgKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IHJlY2VudGx5IGRlZmVycmVkKSANCiAgICA8Yj5JbXByb3ZlIGZpbGUgZW5jb2Rpbmcgc3VwcG9ydC48L2I+IEVjbGlwc2UgMi4wIHVzZXMgYSBzaW5nbGUgZ2xvYmFsIGZpbGUgDQogICAgZW5jb2Rpbmcgc2V0dGluZyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBmaWxlcyBpbiB0aGUgd29ya3NwYWNlLiBUaGlzIGlzIHByb2JsZW1hdGljOyANCiAgICBmb3IgZXhhbXBsZSwgd2hlbiBKYXZhIHNvdXJjZSBmaWxlcyBpbiB0aGUgd29ya3NwYWNlIHVzZSBPUyBkZWZhdWx0IGZpbGUgZW5jb2RpbmcgDQogICAgd2hpbGUgWE1MIGZpbGVzIGluIHRoZSB3b3Jrc3BhY2UgdXNlIFVURi04IGZpbGUgZW5jb2RpbmcuIFRoZSBQbGF0Zm9ybSBzaG91bGQgDQogICAgc3VwcG9ydCBub24tdW5pZm9ybSBmaWxlIGVuY29kaW5ncy4gKFJlZjogPGEgaHJlZj0iaHR0cDovL2Rldi5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD01Mzk5Ij5idWcgDQogICAgNTM5OTwvYT4pIFtQbGF0Zm9ybSBDb3JlLCBQbGF0Zm9ybSBVSSwgVGV4dCwgU2VhcmNoLCBDb21wYXJlLCBKRFQgVUksIEpEVCANCiAgICBDb3JlXTwvcD4NCgkgIA0KICA8L2Jsb2NrcXVvdGU+DQo8aDQ+UmVqZWN0ZWQgSXRlbXMgKEVjbGlwc2UgUGxhdGZvcm0gc3VicHJvamVjdCk8L2g0Pg0KPGJsb2NrcXVvdGU+DQogIDxwPjxpPk5vbmUgYXQgdGhpcyB0aW1lLjwvaT48L3A+DQo8L2Jsb2NrcXVvdGU+DQoNCg0KDQo8cD4oRW5kIG9mIGl0ZW1zIGZvciBFY2xpcHNlIFBsYXRmb3JtIHN1YnByb2plY3QuKQ0KDQoNCg0KPGgzPiA8YSBuYW1lPSJKYXZhIGRldmVsb3BtZW50IHRvb2xpbmcgKEpEVCkgc3VicHJvamVjdCI+SmF2YSBkZXZlbG9wbWVudCB0b29scyANCiAgKEpEVCkgc3VicHJvamVjdDwvYT48L2gzPg0KDQo8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2pkdC9pbmRleC5odG1sIj4gSmF2YSBkZXZlbG9wbWVudCB0b29sczwvYT4gKEpEVCkgDQppbXBsZW1lbnRzIGEgSmF2YSBJREUgYmFzZWQgb24gdGhlIEVjbGlwc2UgUGxhdGZvcm0uIFRoZSBmb2xsb3dpbmcgd29yayBpdGVtcyANCnJlZmxlY3QgbmV3IGZlYXR1cmVzIG9mIEpEVCwgb3IgYXJlYXMgd2hlcmUgZXhpc3RpbmcgZmVhdHVyZXMgd2lsbCBiZSBzaWduaWZpY2FudGx5IA0KcmV3b3JrZWQuIA0KPGg0PkNvbW1pdHRlZCBJdGVtcyAoRWNsaXBzZSBKRFQgc3VicHJvamVjdCk8L2g0Pg0KPGJsb2NrcXVvdGU+DQo8cD4gPGI+U3VwcG9ydCBidWlsZGluZyBwcm9qZWN0cyB3aXRoIGNpcmN1bGFyIGRlcGVuZGVuY2llcy48L2I+Jm5ic3A7IFNvbWUgdXNlcnMgYXJlDQpleHBlcmllbmNpbmcgZGlmZmljdWx0eSBwYXJ0aXRpb25pbmcgdGhlaXIgd29yayBpbnRvIGluZGVwZW5kZW50bHktYnVpbGRhYmxlIHByb2plY3RzLiBXZSB3YW50IHRvIGFkZCBhIG1lY2hhbmlzbSB0byBhbGxvdyBtdXR1YWxseSBkZXBlbmRlbnQgcHJvamVjdHMgdG8gYmUNCmJ1aWx0DQpzdWNjZXNzZnVsbHksIHdoaWxlIHByZXNlcnZpbmcgY3VycmVudCBwcm9qZWN0IGJ1aWxkIG9yZGVyIGJlaGF2aW9yLiAoUmVmOiA8YSBocmVmPSJodHRwOi8vZGV2LmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTEwMjYyIj5idWcNCjEwMjYyPC9hPikgW0pEVCBDb3JlLCBQbGF0Zm9ybSBDb3JlXTwvcD4NCiAgPHA+IDxiPk1vcmUgZmxleGlibGUgcHJvamVjdCBsYXlvdXQuJm5ic3A7IDwvYj5TdXBwb3J0IHNvdXJjZSBhbmQgb3V0cHV0IGZvbGRlcnMgdGhhdCBhcmUgb3V0c2lkZSBvZiB0aGUNCiAgd29ya3NwYWNlLiBUaGlzIGxpa2VseSByZXF1aXJlcyBQbGF0Zm9ybSBDb3JlIHN1cHBvcnQgc28gdGhhdCBjaGFuZ2VzIHRvIHRoZXNlDQogIGZvbGRlcnMgY2FuIGJlIHJlZmxlY3RlZCBpbiByZXNvdXJjZSBkZWx0YXMuIFtKRFQgQ29yZSwgSkRUIFVJLCBQbGF0Zm9ybQ0KICBDb3JlLCBQbGF0Zm9ybSBVSSwgVGVhbV08L3A+DQo8cD4gPGI+U3VwcG9ydCBtdWx0aS1KQVINCnN5c3RlbSBsaWJyYXJpZXMuPC9iPiBTb21lIEpSRXMgKGluY2x1ZGluZyBNYWMgT1MgWCBhbmQgSUJNIDEuNCkgcGFja2FnZSZuYnNwOw0KdGhlIEphdmEgc3lzdGVtIGNsYXNzIGxpYnJhcmllcyBpbiBzZXZlcmFsIEpBUiBmaWxlcy4gSW1wcm92ZSBzdXBwb3J0IGZvciBzeXN0ZW0NCmNsYXNzIGxpYnJhcmllcyBzbyB0aGF0IGl0IGlzIG1vcmUgY29udmVuaWVudCB0byBkZXZlbG9wIGFuZCBydW4gYWdhaW5zdCB0aGVtLiBbSkRUDQpDb3JlLCBKRFQgVUldPC9wPg0KPHA+IDxiPkFkZCBuZXcgcmVmYWN0b3JpbmdzPC9iPi4gU3VwcG9ydCBhZGRpdGlvbmFsDQpyZWZhY3RvcmluZyBhY3Rpb25zLCBpbmNsdWRpbmcgZXh0cmFjdCBpbnRlcmZhY2UsIGFuZCBleHRyYWN0IGNvbnN0YW50LiBbSkRUDQpDb3JlLCBKRFQgVUldPC9wPg0KPC9ibG9ja3F1b3RlPg0KPGg0PlByb3Bvc2VkIEl0ZW1zIChFY2xpcHNlIEpEVCBzdWJwcm9qZWN0KTwvaDQ+DQo8YmxvY2txdW90ZT4NCjxwPjxpPk5vbmUgYXQgdGhpcyB0aW1lLjwvaT48L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aDQ+RGVmZXJyZWQgSXRlbXMgKEVjbGlwc2UgSkRUIHN1YnByb2plY3QpPC9oND4NCjxibG9ja3F1b3RlPg0KICA8cD48aT5Ob25lIGF0IHRoaXMgdGltZS48L2k+PC9wPg0KPC9ibG9ja3F1b3RlPg0KPGg0PlJlamVjdGVkIEl0ZW1zIChFY2xpcHNlIEpEVCBzdWJwcm9qZWN0KTwvaDQ+DQo8YmxvY2txdW90ZT4NCiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4NCjwvYmxvY2txdW90ZT4NCg0KDQoNCjxwPihFbmQgb2YgaXRlbXMgZm9yIEVjbGlwc2UgSkRUIHN1YnByb2plY3QuKQ0KDQoNCg0KPGgzPg0KDQo8YSBuYW1lPSJQbHVnLWluIGRldmVsb3BtZW50IGVudmlyb25tZW50IChQREUpIHN1YnByb2plY3QiPlBsdWctaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgKFBERSkgc3VicHJvamVjdDwvYT48L2gzPg0KDQpUaGUgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wZGUvaW5kZXguaHRtbCI+IHBsdWctaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQ8L2E+IA0KKFBERSkgY29uc2lzdHMgb2YmbmJzcDt0b29scyBmb3IgZGV2ZWxvcGluZyBwbHVnLWlucyBmb3IgdGhlIEVjbGlwc2UgUGxhdGZvcm0uDQoNClRoZSBmb2xsb3dpbmcgd29yayBpdGVtcyByZWZsZWN0IG5ldyBmZWF0dXJlcyBvZiBQREUsIG9yIGFyZWFzIHdoZXJlIGV4aXN0aW5nDQoNCmZlYXR1cmVzIHdpbGwgYmUgc2lnbmlmaWNhbnRseSByZXdvcmtlZC4NCjxoND5Db21taXR0ZWQgSXRlbXMgKEVjbGlwc2UgUERFIHN1YnByb2plY3QpPC9oND4NCjxibG9ja3F1b3RlPiANCiAgPHA+ICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiByZWNlbnRseSBjb21taXR0ZWQpIA0KICAgIDxiPkltcHJvdmUgYnVpbGQgY2xhc3MgcGF0aCBmb3IgcGx1Zy1pbiBwcm9qZWN0cy48L2I+IFBsdWctaW5zIHRoYXQgbWFrZSBkaXJlY3QgDQogICAgcmVmZXJlbmNlIHRvIEpBUiBsaWJyYXJpZXMgb2YgcHJlcmVxdWlzaXRlIHBsdWctaW5zIGFyZSB2dWxuZXJhYmxlIHRvIHZlcnNpb24gDQogICAgaWRzIGluIHBsdWctaW4gZW1iZWRkZWQgaW4gZGlyZWN0b3J5IG5hbWVzLiBUaGUgYWx0ZXJuYXRpdmUsIHVzaW5nIGJpbmFyeSANCiAgICBsaWJyYXJ5IHBsdWctaW5zIGZvciBlYWNoIHByZXJlcXVpc2l0ZSBwbHVnLWluLCBsZWFkcyB0byBhIHByb2Z1c2lvbiBvZiBwcm9qZWN0cyANCiAgICBpbiB0aGUgd29ya3NwYWNlLiBQREUgd2lsbCBvZmZlciBhIHRoaXJkIGFsdGVybmF0aXZlIGJhc2VkIG9uIEpEVCBjbGFzcyBwYXRoIA0KICAgIGNvbnRhaW5lcnMgdGhhdCBhdm9pZHMgdGhlc2Ugc2hvcnRjb21pbmdzIGFuZCBpbnRlcm9wZXJhdGVzIHdpdGggZXhpc3RpbmcgDQogICAgcGx1Zy1pbiBwcm9qZWN0cy48L3A+DQogIDxwPiAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gcmVjZW50bHkgY29tbWl0dGVkKSANCiAgICA8Yj4gQWRkIHN1cHBvcnQgZm9yIHVwZGF0ZSBzaXRlcy48L2I+IFNldHRpbmcgdXAgYW4gRWNsaXBzZSB1cGRhdGUgc2l0ZSBhbmQgDQogICAgYnVpbGRpbmcgaXRzIHBsdWctaW5zIGFuZCBmZWF0dXJlcyBpcyBub3Qgc3RyYWlnaHRmb3J3YXJkLiBQREUgd2lsbCBtYWtlIGl0IA0KICAgIGNvbnZlbmllbnQgdG8gZGVmaW5lIHRoZSBsYXlvdXQgb2YgYW4gdXBkYXRlIHNpdGUgYW5kIGNyZWF0ZSB0aGUgdXBkYXRlIHNpdGUncyANCiAgICBjb250ZW50cy48L3A+DQogIDxwPiAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gcmVjZW50bHkgY29tbWl0dGVkKSANCiAgICA8Yj4gSW1wcm92ZSB1c2FiaWxpdHkuPC9iPiBGMSBoZWxwIGZvciBhbGwgUERFIGRpYWxvZ3M7IGltcHJvdmVkIFBERSBmb3JtIA0KICAgIGVkaXRvcnM7IGltcHJvdmVkIHBsdWctaW4gbWFuaWZlc3QgZWRpdG9yIEV4dGVuc2lvbnMgcGFnZTsgbW9yZSB1c2VyLWZyaWVuZGx5IA0KICAgIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIHBsdWctaW5zIGFuZCBmZWF0dXJlcy48L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aDQ+UHJvcG9zZWQgSXRlbXMgKEVjbGlwc2UgUERFIHN1YnByb2plY3QpPC9oND4NCjxibG9ja3F1b3RlPg0KICA8cD48aT5Ob25lIGF0IHRoaXMgdGltZS48L2k+PC9wPg0KPC9ibG9ja3F1b3RlPg0KPGg0PkRlZmVycmVkIEl0ZW1zIChFY2xpcHNlIFBERSBzdWJwcm9qZWN0KTwvaDQ+DQo8YmxvY2txdW90ZT4gDQogIDxwPiAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gcmVjZW50bHkgZGVmZXJyZWQpIA0KICAgIDxiPkFkZCB0ZW1wbGF0ZSBBUEkuPC9iPiBBUEkgZm9yIFBERSB0ZW1wbGF0ZSB3aXphcmRzIHdpbGwgYmUgZGVmaW5lZCwgYWxsb3dpbmcgDQogICAgb3RoZXIgcGx1Zy1pbnMgdG8gY29udHJpYnV0ZSB0ZW1wbGF0ZXMgZm9yIHRoZWlyIGV4dGVuc2lvbiBwb2ludHMuPC9wPg0KPC9ibG9ja3F1b3RlPg0KPGg0PlJlamVjdGVkIEl0ZW1zIChFY2xpcHNlIFBERSBzdWJwcm9qZWN0KTwvaDQ+DQo8YmxvY2txdW90ZT4NCiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4NCjwvYmxvY2txdW90ZT4NCg0KDQoNCjxwPihFbmQgb2YgaXRlbXMgZm9yIEVjbGlwc2UgUERFIHN1YnByb2plY3QuKQ0KDQo8L2JvZHk+DQoNCjwvaHRtbD4NCg0K