PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiINCiJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPg0KPGh0bWw+DQo8aGVhZD4NCjx0aXRsZT5BeGlzIDIuMCBVc2VyJ3MgR3VpZGU8L3RpdGxlPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+DQo8bGluayBocmVmPSJjc3MvYXhpcy1kb2NzLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQo8IS0tDQouc3R5bGUxIHtmb250LWZhbWlseTogIkNvdXJpZXIgTmV3IiwgQ291cmllciwgbW9ub30NCi5zdHlsZTIge2ZvbnQtc2l6ZTogMTRweH0NCi5zdHlsZTMge2NvbG9yOiAjOTkwMDAwfQ0KLnN0eWxlNCB7DQoJZm9udC1mYW1pbHk6ICJDb3VyaWVyIE5ldyIsIENvdXJpZXIsIG1vbm87DQoJZm9udC1zaXplOiAxNHB4Ow0KCWNvbG9yOiAjOTkwMDAwOw0KfQ0KLS0+DQo8L3N0eWxlPg0KPC9oZWFkPg0KDQo8Ym9keT4NCjxoMSBhbGlnbj0iY2VudGVyIj48YSBuYW1lPSJfVG9jOTY2OTc4NDkiPkF4aXMgMi4wIFVzZXIncyBHdWlkZSA8L2E+PC9oMT4NCjxwPiZuYnNwOyA8L3A+DQo8aDM+PGEgbmFtZT0iX1RvYzk2Njk4MDc2Ij48L2E+SW50cm9kdWN0aW9uIDwvaDM+DQo8cD5XZWxjb21lIHRvIEF4aXMgMi4wLCB0aGUgbmV4dCBnZW5lcmF0aW9uIG9mIEFwYWNoZSBBeGlzICEhISBUaGlzIFVzZXIgR3VpZGUgd2lsbCBoZWxwIHlvdSB0byB1bmRlcnN0YW5kIHdoYXQgeW91IHdpbGwgZ2V0IGZyb20gQXhpcyAyLjAgYW5kIGhvdyB0byBnZXQgc3RhcnRlZC4gPC9wPg0KPHA+V2UgaG9wZSB5b3Ugd2lsbCBiZW5lZml0IGZyb20gdGhlIHBvd2VyIG9mIEF4aXMgMi4wLiA8L3A+DQo8aDM+PGEgbmFtZT0iX1RvYzk2Njk4MDc3Ij48L2E+V2hhdCBpcyBBeGlzIDIuMCA/IDwvaDM+DQo8cD5CZWZvcmUgd2Ugc3RhcnQsIGl0cyBoaWdobHkgcmVjb21tZW5kZWQgdG8gcmVhZCA8YSBocmVmPSJodHRwOi8vd3MuYXBhY2hlLm9yZy9heGlzL2phdmEvdXNlci1ndWlkZS5odG1sIj5BeGlzIDEueCBVc2VyJ3MgZ3VpZGUgPC9hPiwgaWYgeW91IGFyZSBuZXcgdG8gQXhpcy4gPC9wPg0KPHA+QXhpcyAyLjAgaXMgdGhlIG5leHQgZ2VuZXJhdGlvbiBvZiBBcGFjaGUgQXhpcy4gSW4gbGF0ZSBBdWd1c3QgMjAwNCwgZHVyaW5nIHRoZSBBeGlzIFN1bW1pdCBoZWxkIGluIENvbG9tYm8sIFNyaSBMYW5rYSwgYSBuZXcgYXJjaGl0ZWN0dXJlIHdhcyBpbnRyb2R1Y2VkIHRvIGhhdmUgYSBtdWNoIG1vcmUgZmxleGlibGUsIGVmZmljaWVudCBhbmQgY29uZmlndXJhYmxlIEF4aXMuIEV2ZW4gdGhvdWdoIHRoZSBhcmNoaXRlY3R1cmUgaXMgbmV3LCBzb21lIG9mIHRoZSB3ZWxsIGVzdGFibGlzaGVkIGNvbmNlcHRzIGZyb20gQXhpcyAxLngsIGxpa2UgaGFuZGxlcnMgYXJlIHByZXNlcnZlZCBpbiBBeGlzIDIuMCBhbHNvLiBBeGlzIDIuMCBjb21lcyB3aXRoIGxvdHMgb2YgbmV3IGZlYXR1cmVzLCBlbmhhbmNlbWVudHMgYW5kIG5ldyBpbmR1c3RyeSBzcGVjaWZpY2F0aW9uIGltcGxlbWVudGF0aW9ucy4gPC9wPg0KPHA+QWZ0ZXIgbW9udGhzIG9mIGNvbnRpbnVlZCBkaXNjdXNzaW9uIGFuZCBjb2RpbmcgZWZmb3J0IGluIHRoaXMgZGlyZWN0aW9uLCBBeGlzIDIuMCBub3cgZGVsaXZlcnMgdGhlIGZvbGxvd2luZyBrZXkgZmVhdHVyZXM6IDwvcD4NCjx1bD4NCiAgPGxpPjxzdHJvbmc+U3BlZWQ8L3N0cm9uZz4uIEF4aXMgdXNlcyBpdHMgb3duIG9iamVjdCBtb2RlbCBhbmQgU3RBWCAoc3RyZWFtaW5nKSBwYXJzaW5nIHRvIGFjaGlldmUgc2lnbmlmaWNhbnRseSBncmVhdGVyIHNwZWVkIHRoYW4gZWFybGllciB2ZXJzaW9ucyBvZiBBcGFjaGUgQVhJUy4gPC9saT4NCiAgPGxpPjxzdHJvbmc+TG93IG1lbW9yeSBmb290IHByaW50PC9zdHJvbmc+LiBBeGlzIDIuMCB3YXMgZGVzaWduZWQgZ3JvdW5kLXVwIGtlZXBpbmcgbG93IG1lbW9yeSBmb290IHByaW50IGluIG1pbmQuIDwvbGk+DQogIDxsaT48c3Ryb25nPkFYSU9NPC9zdHJvbmc+LiBBeGlzIDIuMCBjb21lcyB3aXRoIGl0cyBvd24gbGlnaHQtd2VpZ2h0IG9iamVjdCBtb2RlbCwgQVhJT00sIGZvciBtZXNzYWdlIHByb2Nlc3Npbmcgd2hpY2ggaXMgZXh0ZW5zaWJsZSwgaGlnaCBwZXJmb3JtYW5jZSBhbmQgZGV2ZWxvcGVyIGNvbnZlbmllbnQgPC9saT4NCiAgPGxpPjxzdHJvbmc+SG90IERlcGxveW1lbnQuPC9zdHJvbmc+IE9uZSBjYW4gbm93IGhvdCBkZXBsb3kgd2ViIHNlcnZpY2VzIGFuZCBoYW5kbGVycy4gPC9saT4NCiAgPGxpPjxzdHJvbmc+QXN5bmNocm9ub3VzIFdlYiBTZXJ2aWNlczwvc3Ryb25nPi4gQXhpcyAyLjAgbm93IHN1cHBvcnQgYXN5bmNocm9ub3VzIHdlYiBzZXJ2aWNlcyBpbnZvY2F0aW9uIGFuZCBhc3luY2hyb25vdXMgd2ViIHNlcnZpY2VzLiA8L2xpPg0KICA8bGk+PHN0cm9uZz5GbGV4aWJpbGl0eTwvc3Ryb25nPi4gVGhlIEF4aXMgYXJjaGl0ZWN0dXJlIGdpdmVzIHRoZSBkZXZlbG9wZXIgY29tcGxldGUgZnJlZWRvbSB0byBpbnNlcnQgZXh0ZW5zaW9ucyBpbnRvIHRoZSBlbmdpbmUgZm9yIGN1c3RvbSBoZWFkZXIgcHJvY2Vzc2luZywgc3lzdGVtIG1hbmFnZW1lbnQsIG9yIGFueXRoaW5nIGVsc2UgeW91IGNhbiBpbWFnaW5lLiA8L2xpPg0KICA8bGk+PHN0cm9uZz5TdGFiaWxpdHk8L3N0cm9uZz4uIEF4aXMgZGVmaW5lcyBhIHNldCBvZiBwdWJsaXNoZWQgaW50ZXJmYWNlcyB3aGljaCBjaGFuZ2UgcmVsYXRpdmVseSBzbG93bHkgY29tcGFyZWQgdG8gdGhlIHJlc3Qgb2YgQXhpcy4gPC9saT4NCiAgPGxpPjxzdHJvbmc+Q29tcG9uZW50LW9yaWVudGVkIGRlcGxveW1lbnQ8L3N0cm9uZz4uIFlvdSBjYW4gZWFzaWx5IGRlZmluZSByZXVzYWJsZSBuZXR3b3JrcyBvZiBIYW5kbGVycyB0byBpbXBsZW1lbnQgY29tbW9uIHBhdHRlcm5zIG9mIHByb2Nlc3NpbmcgZm9yIHlvdXIgYXBwbGljYXRpb25zLCBvciB0byBkaXN0cmlidXRlIHRvIHBhcnRuZXJzLiA8L2xpPg0KICA8bGk+PHN0cm9uZz5UcmFuc3BvcnQgZnJhbWV3b3JrPC9zdHJvbmc+LiBXZSBoYXZlIGEgY2xlYW4gYW5kIHNpbXBsZSBhYnN0cmFjdGlvbiBmb3IgZGVzaWduaW5nIHRyYW5zcG9ydHMgKGkuZS4sIHNlbmRlcnMgYW5kIGxpc3RlbmVycyBmb3IgU09BUCBvdmVyIHZhcmlvdXMgcHJvdG9jb2xzIHN1Y2ggYXMgU01UUCwgRlRQLCBtZXNzYWdlLW9yaWVudGVkIG1pZGRsZXdhcmUsIGV0YyksIGFuZCB0aGUgY29yZSBvZiB0aGUgZW5naW5lIGlzIGNvbXBsZXRlbHkgdHJhbnNwb3J0LWluZGVwZW5kZW50LiA8L2xpPg0KICA8bGk+PHN0cm9uZz5XU0RMIHN1cHBvcnQuPC9zdHJvbmc+IEF4aXMgMi4wIHN1cHBvcnRzIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi93c2RsIj5XZWIgU2VydmljZSBEZXNjcmlwdGlvbiBMYW5ndWFnZSA8L2E+LCB2ZXJzaW9uIDEuMSBhbmQgMi4wLCB3aGljaCBhbGxvd3MgeW91IHRvIGVhc2lseSBidWlsZCBzdHVicyB0byBhY2Nlc3MgcmVtb3RlIHNlcnZpY2VzLCBhbmQgYWxzbyB0byBhdXRvbWF0aWNhbGx5IGV4cG9ydCBtYWNoaW5lLXJlYWRhYmxlIGRlc2NyaXB0aW9ucyBvZiB5b3VyIGRlcGxveWVkIHNlcnZpY2VzIGZyb20gQXhpcy4gPC9saT4NCjwvdWw+DQo8cD5XZSBob3BlIHlvdSBlbmpveSB1c2luZyBBeGlzLiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgaXMgYW4gb3Blbi1zb3VyY2UgZWZmb3J0IC0gaWYgeW91IGZlZWwgdGhlIGNvZGUgY291bGQgdXNlIHNvbWUgbmV3IGZlYXR1cmVzIG9yIGZpeGVzLCBwbGVhc2UgZ2V0IGludm9sdmVkIGFuZCBsZW5kIGEgaGFuZCEgVGhlIEF4aXMgZGV2ZWxvcGVyIGNvbW11bml0eSB3ZWxjb21lcyB5b3VyIHBhcnRpY2lwYXRpb24gLiA8L3A+DQo8cD5MZXQgdXMga25vdyB3aGF0IHlvdSB0aGluayEgPC9wPg0KPHA+UGxlYXNlIHNlbmQgZmVlZGJhY2sgYWJvdXQgdGhlIHBhY2thZ2UgdG8gJnF1b3Q7IDxhIGhyZWY9Im1haWx0bzpheGlzLXVzZXJAd3MuYXBhY2hlLm9yZyI+YXhpcy11c2VyQHdzLmFwYWNoZS5vcmcgPC9hPiZxdW90OyBhbmQgbWFrZSBzdXJlIHRvIHByZWZpeCB0aGUgc3ViamVjdCBvZiB0aGUgbWFpbCB3aXRoIJNbQXhpczJdlC4gPC9wPg0KPGgzPjxhIG5hbWU9Il9Ub2M5NjY5ODA3OCI+PC9hPldoYXQncyBpbiB0aGlzIHJlbGVhc2U/IDwvaDM+DQo8cD5UaGlzIHJlbGVhc2UgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBmZWF0dXJlczogPC9wPg0KPHVsPg0KICA8bGk+U09BUCAxLjEvMS4yIGNvbXBsaWFudCBlbmdpbmUgPC9saT4NCiAgPGxpPkZsZXhpYmxlIGNvbmZpZ3VyYXRpb24gLyBkZXBsb3ltZW50IHN5c3RlbSB3aXRoIGhvdCBkZXBsb3ltZW50IHN1cHBvcnQgPC9saT4NCiAgPGxpPkhUVFAgc2VydmxldC1iYXNlZCB0cmFuc3BvcnQgPC9saT4NCiAgPGxpPkhhbmRsZXIgZnJhbWV3b3JrIDwvbGk+DQogIDxsaT5BWElPTSB3aXRoIGNvbXBsZXRlIFNPQVAgc3BlY2lmaWMgQVBJIHN1cHBvcnQgPC9saT4NCiAgPGxpPkNsaWVudCBzeW5jaHJvbm91cy9hc3luY2hyb25vdXMgbW9kZWwgPC9saT4NCiAgPGxpPkJhc2ljIFhNTCBpbiAvIFhNTCBvdXQgc2NlbmFyaW8gc3VwcG9ydCA8L2xpPg0KICA8bGk+V1NETCAxLjEgYW5kIDIuMCBjb21wbGlhbnQgQ29tcG9uZW50IE1vZGVsIDwvbGk+DQogIDxsaT5FeGFtcGxlcywgaW5jbHVkaW5nIGEgY2xpZW50IGFuZCBzZXJ2ZXIgZm9yIHRoZSBvbmUtd2F5LCB0d28td2F5IGFuZCBzeW5jaHJvbm91cywgYXN5bmNocm9ub3VzIHdlYiBzZXJ2aWNlcyBpbnZvY2F0aW9uIDwvbGk+DQo8L3VsPg0KPGgzPjxhIG5hbWU9Il9Ub2M5NjY5ODA3OSI+PC9hPldoYXQncyBzdGlsbCB0byBkbz8gPC9oMz4NCjxwPlBsZWFzZSBzZWUgYSBsaXN0IG9mIHdoYXQgd2UgdGhpbmsgbmVlZHMgZG9pbmcgLSBhbmQgcGxlYXNlIGNvbnNpZGVyIGhlbHBpbmcgb3V0IGlmIHlvdSdyZSBpbnRlcmVzdGVkICZhbXA7IGFibGUhIDwvcD4NCjx1bD4NCiAgPGxpPkVuY29kaW5nL2RhdGEgYmluZGluZyA8L2xpPg0KICA8bGk+SkFYLVJQQyBzdXBwb3J0IDwvbGk+DQogIDxsaT5XU0RMIEJhc2VkIGNvZGUgKHNlcnZlci9jbGllbnQpIGNvZGUgZ2VuZXJhdG9yIDwvbGk+DQogIDxsaT5NVE9NIGF0dGFjaG1lbnRzIHN1cHBvcnQgPC9saT4NCiAgPGxpPlNlcnZlciBzaWRlIHN5bmMvYXN5bmMgc3VwcG9ydCA8L2xpPg0KICA8bGk+Q29tcGxldGUgWE1MIGluZm9zZXQgc3VwcG9ydCBmb3IgQVhJT00gPC9saT4NCjwvdWw+DQo8aDI+PGEgbmFtZT0iX1RvYzk2Njk4MDgwIj48L2E+SW5zdGFsbGF0aW9uIEd1aWRlIDwvaDI+DQo8aDM+PGEgbmFtZT0iX1RvYzk2Njk4MDgxIj48L2E+SW50cm9kdWN0aW9uIDwvaDM+DQo8cD5BeGlzIDIuMCBjYW4gYmUgZG93bmxvYWRlZCBhcyBhIDxhIGhyZWY9InJlbGVhc2VzLmh0bWwiPnppcHBlZCBiaW5hcnkgPC9hPiBvciB0aGUgPGEgaHJlZj0iY3ZzLXVzYWdlLmh0bWwiPnNvdXJjZSA8L2E+LiBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyBBeGlzMiBjYW4gYmUgaW5zdGFsbGVkIGVpdGhlciBhcyBhIHN0YW5kYWxvbmUgc2VydmVyIG9yIGFzIHBhcnQgb2YgYSBKMkVFIGNvbXBsaWFudCBzZXJ2bGV0IGNvbnRhaW5lci4gPC9wPg0KPGgzPjxhIG5hbWU9Il9Ub2M5NjY5ODA4MiI+PC9hPlByZXJlcXVpc2l0ZXMgPC9oMz4NCjxwPkF4aXMyIHJlcXVpcmVzIHRoZSBKYXZhIFJ1bnRpbWUgRW52aXJvbm1lbnQgdG8gYmUgcHJvcGVybHkgaW5zdGFsbGVkLiBBeGlzIGlzIGRldmVsb3BlZCB0byBiZSBydW4gb24gSlJFIDEuNCBhbmQgdXB3YXJkcyBidXQgaXQgaGFzIG5vdCBiZWVuIGZ1bGx5IHRlc3RlZCB3aXRoIHRoZSBsYXRlc3QgSlJFIDEuNS4gSGVuY2UgaXQgaXMgc2FmZSB0byBydW4gQXhpcyB3aXRoIEphdmEgMS40LiBJZiB0aGUgSlJFIGlzIG5vdCBhbHJlYWR5IGluIHBsYWNlIGl0IG11c3QgYmUgaW5zdGFsbGVkIHRvIHByb2NlZWQgZnVydGhlci4gRm9yIGluc3RydWN0aW9ucyBvbiBzZXR0aW5nIHVwIHRoZSBKUkUgaW4gZGlmZmVyZW50IG9wZXJhdGluZyBzeXN0ZW1zLCBwbGVhc2UgdmlzaXQgPGEgaHJlZj0iaHR0cDovL2phdmEuc3VuLmNvbS8iPmh0dHA6Ly9qYXZhLnN1bi5jb20gPC9hPi4gPC9wPg0KPHA+QWxsIHRoZSByZXF1aXJlZCBqYXJzIGFyZSBzaGlwcGVkIHdpdGggdGhlIGJpbmFyeSBkaXN0cmlidXRpb24gYW5kIGlmIHRoZSBzb3VyY2UgZGlzdHJpYnV0aW9uIGlzIHVzZWQsIHJ1bm5pbmcgdGhlIG1hdmVuIGJ1aWxkIHdpbGwgYXV0b21hdGljYWxseSBkb3dubG9hZCB0aGUgcmVxdWlyZWQgamFycyBmb3IgeW91LiA8L3A+DQo8cD5Gb2xsb3dpbmcgc2VjdGlvbnMgZGVzY3JpYmUgaG93IGVhY2ggdHlwZSBvZiBkaXN0cmlidXRpb24gbmVlZHMgdG8gYmUgaW5zdGFsbGVkLiBTaW5jZSB0aGUgcHJvY2VzcyB3aXRoIHRoZSBzb3VyY2UgZGlzdHJpYnV0aW9uIGlzIHNpbWlsYXIgdG8gdGhlIGJpbmFyeSBkaXN0cmlidXRpb24gYWZ0ZXIgYnVpbGRpbmcsIHRoZSBmaXJzdCBzZWN0aW9uIGV4cGxhaW5zIHRoZSBwcm9jZXNzIG9mIGJ1aWxkaW5nIEF4aXMgZnJvbSBzb3VyY2UuIElmIHlvdSBoYXZlIHRoZSBiaW5hcnkgZGlzdHJpYnV0aW9uIHlvdSBjYW4gc2tpcCB0aGUgYnVpbGQgc2VjdGlvbnMgYW5kIGRpcmVjdGx5IGdvIHRvIHRoZSBiaW5hcnkgaW5zdGFsbGF0aW9uIHNlY3Rpb24uIDwvcD4NCjxoMz48YSBuYW1lPSJfVG9jOTY2OTgwODMiPjwvYT5CdWlsZGluZyBBeGlzMiBmcm9tIHNvdXJjZSA8L2gzPg0KPGg0PjxhIG5hbWU9Il9Ub2M5NjY5ODA4NCI+PC9hPlNldHRpbmcgdXAgdGhlIEVudmlyb25tZW50IGFuZCB0aGUgdG9vbHMgPC9oND4NCjxwPlRoZSBBeGlzMiBidWlsZCBpcyBiYXNlZCBvbiA8YSBocmVmPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy8iPk1hdmVuIDwvYT4uIEhlbmNlIHRoZSBwcmVyZXF1aXNpdGUgdG8gYnVpbGQgQXhpczIgZnJvbSBzb3VyY2UgaXMgdG8gaGF2ZSBNYXZlbiBpbnN0YWxsZWQuIEV2ZW4gdGhvdWdoIGV4dGVuc2l2ZSBpbnN0cnVjdGlvbiBndWlkZXMgYXJlIGF2YWlsYWJsZSBhdCB0aGUgTWF2ZW4gc2l0ZSwgdGhpcyBndWlkZSBhbHNvIGNvbnRhaW5zIHRoZSCTZWFzaWVzdCBwYXRolCBmb3IgcXVpY2sgZW52aXJvbm1lbnQgc2V0dGluZy4gQWR2YW5jZWQgdXNlcnMgd2hvIHdpc2ggdG8ga25vdyBtb3JlIGFib3V0IE1hdmVuIGNhbiB2aXNpdCA8YSBocmVmPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9zdGFydC9pbmRleC5odG1sIj5oZXJlIDwvYT4uIDwvcD4NCjxwPkZvciBXaW5kb3dzIHVzZXJzIHRoZSBlYXNpZXN0IHdheSBpcyB0byBkb3dubG9hZCB0aGUgd2luZG93cyBpbnN0YWxsZXIgcGFja2FnZS4gT25jZSB0aGUgaW5zdGFsbGVyIHBhY2thZ2UgaXMgcnVuLCBhbGwgdGhlIG5lY2Vzc2FyeSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2lsbCBiZSBwcm9wZXJseSBzZXQuIE9uY2UgTWF2ZW4gaXMgaW5zdGFsbGVkLCB0aGUgc3VjY2VzcyBvZiB0aGUgaW5zdGFsbGF0aW9uIGNhbiBiZSB0ZXN0ZWQgYnkgdHlwaW5nIJNtYXZlbiCWdmVyc2lvbpQgaW4gdGhlIGNvbW1hbmQgcHJvbXB0LiA8L3A+DQo8cD4mbmJzcDsgPC9wPg0KPHAgYWxpZ249ImNlbnRlciI+PGltZyB3aWR0aD0iNDc3IiBoZWlnaHQ9IjIxMSIgc3JjPSJpbWFnZXMvY2xpcF9pbWFnZTAwMi5qcGciPjwvcD4NCjxwPiZuYnNwOyA8L3A+DQo8cD5Gb3IgTGludXggdXNlcnMgdGhlIHRhciBiYWxsIG9yIHRoZSB6aXAgYXJjaGl2ZSBpcyB0aGUgYmVzdCBvcHRpb25zLiAoVW5mb3J0dW5hdGVseSB0aGVyZSBpcyBubyBycG0gYXMgc3VjaCB0aGF0IGNhbiBiZSBlYXNpbHkgaW5zdGFsbGVkKSBPbmNlIHRoZSBhcmNoaXZlIGlzIGRvd25sb2FkZWQgZXhwYW5kIGl0IHRvIGEgZGlyZWN0b3J5IG9mIGNob2ljZSBhbmQgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSCTTUFWRU5fSE9NRZQgYW5kIGFkZCBNQVZFTl9IT01FL2JpbiB0byB0aGUgcGF0aCBhcyB3ZWxsLiBNb3JlIGluc3RydWN0aW9ucyBmb3IgaW5zdGFsbGluZyBNYXZlbiBpbiBVTklYIGJhc2VkIG9wZXJhdGluZyBzeXN0ZW1zIGNhbiBiZSBmb3VuZCA8YSBocmVmPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9zdGFydC9pbnN0YWxsLmh0bWwiPmhlcmUgPC9hPi4gPC9wPg0KPHA+T25jZSBtYXZlbiBpcyBwcm9wZXJseSBpbnN0YWxsZWQgaXQncyBhbGwgdGhhdCBpcyBuZWVkZWQgdG8gc3RhcnQgYnVpbGRpbmcgQXhpczIuIDwvcD4NCjxoND48YSBuYW1lPSJfVG9jOTY2OTgwODUiPjwvYT5UaGUgQXhpcyBzb3VyY2UgZGlzdHJpYnV0aW9uIDwvaDQ+DQo8cD5UaGUgPGEgaHJlZj0icmVsZWFzZXMuaHRtbCI+c291cmNlIGRpc3RyaWJ1dGlvbiA8L2E+IGlzIGF2YWlsYWJsZSBhcyBhIHppcHBlZCBhcmNoaXZlIG9yIGEgdGFyIGJhbGwuIEFsbCB0aGUgbmVjZXNzYXJ5IGJ1aWxkIHNjcmlwdHMgYXJlIGluY2x1ZGVkIHdpdGggdGhlIHNvdXJjZSBkaXN0cmlidXRpb24uIE9uY2UgdGhlIHNvdXJjZSBhcmNoaXZlIGlzIGV4cGFuZGVkIGludG8gYSBkaXJlY3Rvcnkgb2YgY2hvaWNlLCBtb3ZpbmcgdG8gdGhlIHBhcnRpY3VsYXIgZGlyZWN0b3J5IGFuZCB0eXBpbmcgbWF2ZW4gd2lsbCBidWlsZCB0aGUgYXhpcyBqYXIgZmlsZS4gPC9wPg0KPHAgYWxpZ249ImNlbnRlciI+PGltZyB3aWR0aD0iNTQwIiBoZWlnaHQ9IjI5MiIgc3JjPSJpbWFnZXMvY2xpcF9pbWFnZTAwNC5qcGciPjwvcD4NCjxwPk9uY2UgdGhlIGNvbW1hbmQgY29tcGxldGVzLCB0aGUgYmluYXJpZXMgKGphciBmaWxlcyBpbiB0aGlzIGNhc2UpIGNhbiBiZSBmb3VuZCBhdCBhIG5ld2x5IGNyZWF0ZWQgk3RhcmdldJQgZGlyZWN0b3J5LiA8L3A+DQo8cD48c3Ryb25nPk5vdGUgliBGb3IgdGhlIGZpcnN0IE1hdmVuIGJ1aWxkIChpZiB0aGUgbWF2ZW4gcmVwb3NpdG9yeSBpcyBub3QgYnVpbHQgZmlyc3QpIGl0IHdpbGwgdGFrZSBhIHdoaWxlIHNpbmNlIHJlcXVpcmVkIGphcnMgbmVlZCB0byBiZSBkb3dubG9hZGVkLiBIb3dldmVyIHRoaXMgaXMgYSBvbmNlIG9ubHkgcHJvY2VzcyBhbmQgd2lsbCBub3QgYWZmZWN0IGFueSBzdWNjZXNzaXZlIGJ1aWxkcy4gPC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz4gPC9zdHJvbmc+VGhlIGRlZmF1bHQgbWF2ZW4gYnVpbGQgd2lsbCBob3dldmVyIGJ1aWxkIG9ubHkgdGhlIEF4aXMyIGphciBmaWxlLiBUbyBvYnRhaW4gYSBXQVIgKFdlYiBBcmNoaXZlKSwgk21hdmVuIHdhcpQgY29tbWFuZCBzaG91bGQgYmUgaXNzdWVkLiBUaGlzIHdpbGwgY3JlYXRlIGEgY29tcGxldGUgV0FSIHdpdGggdGhlIG5hbWUgYXhpczIud2FyIGluc2lkZSB0aGUgdGFyZ2V0IGRpcmVjdG9yeS4gPC9wPg0KPHA+T25jZSB0aGlzIGJ1aWxkIHN0ZXAgaXMgY29tcGxldGUsIHRoZSBiaW5hcmllcyBhcmUgcmVhZHkgdG8gYmUgZGVwbG95ZWQuIDwvcD4NCjxoMz48YSBuYW1lPSJfVG9jOTY2OTgwODYiPjwvYT5JbnN0YWxsaW5nIEF4aXMyIGluIGEgU2VydmxldCBjb250YWluZXIgPC9oMz4NCjxwPkluc3RhbGxhdGlvbiBvZiB0aGUgV0FSIGlzIHF1aXRlIHNpbXBsZS4gSXQncyBhIG1hdHRlciBvZiBkcm9wcGluZyB0aGUgd2FyIGluIHRoZSB3ZWJhcHBzIGZvbGRlcnMgYW5kIG1vc3Qgc2VydmxldCBjb250YWluZXJzIHdpbGwgYXV0b21hdGljYWxseSBpbnN0YWxsIHRoZSB3YXIuIEhvd2V2ZXIgc29tZSBzZXJ2bGV0IGNvbnRhaW5lcnMgbWF5IHJlcXVpcmUgYSByZXN0YXJ0IGluIG9yZGVyIHRvIGNhcHR1cmUgdGhlIG5ldyB3ZWIgYXBwbGljYXRpb24uIFBsZWFzZSByZWZlciB5b3VyIHNlcnZsZXQgY29udGFpbmVyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcy4gPC9wPg0KPHA+T25jZSB0aGUgV0FSIGlzIHN1Y2Nlc3NmdWxseSBpbnN0YWxsZWQgaXQgY2FuIGJlIHRlc3RlZCBieSBwb2ludGluZyB0aGUgd2ViIGJyb3dzZXIgdG8gdGhlIDxzdHJvbmc+aHR0cDovLyAmbHQ7aG9zdCA6cG9ydCZndDsvIGF4aXMyLiA8L3N0cm9uZz5JdCBzaG91bGQgcHJvZHVjZSB0aGUgZm9sbG93aW5nIHBhZ2UuIDwvcD4NCjxwIGFsaWduPSJjZW50ZXIiPjxzdHJvbmc+PGltZyBzcmM9ImltYWdlcy9jbGlwX2ltYWdlMDA2LmpwZyI+PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz4mbmJzcDsgPC9zdHJvbmc+VG8gZW5zdXJlIHRoYXQgZXZlcnl0aGluZyBpcyBmaW5lIGFuZCBzbW9vdGgsIGEgcHJvYmluZyBvZiB0aGUgc3lzdGVtIGNhbiBiZSBkb25lIHRocm91Z2ggdGhlIHZhbGlkYXRlIGxpbmsuIElmIHRoZSB2YWxpZGF0aW9uIGZhaWxzIHRoZW4gdGhlIHdhciBoYXMgZmFpbGVkIHRvIGluc3RhbGwgcHJvcGVybHkgb3Igc29tZSBlc3NlbnRpYWwgamFycyBhcmUgbWlzc2luZy4gQXQgc3VjaCBhIHNpdHVhdGlvbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgcGFydGljdWxhciBzZXJ2bGV0IGNvbnRhaW5lciBzaG91bGQgYmUgY29uc3VsdGVkIHRvIGZpbmQgdGhlIHByb2JsZW0uIFRoZSBmb2xsb3dpbmcgcGFnZSBpcyBhIHN1Y2Nlc3NmdWwgdmFsaWRhdGlvbi4gTm90ZSB0aGUgc3RhdGVtZW50IJNjb3JlIGF4aXMgbGlicmFyaWVzIGFyZSBwcmVzZW50lC4gPC9wPg0KPHAgYWxpZ249ImNlbnRlciI+PGltZyBzcmM9ImltYWdlcy9jbGlwX2ltYWdlMDA4LmpwZyI+PC9wPg0KPHA+VGhlIGF4aXMgd2ViIGFwcGxpY2F0aW9uIGFsc28gcHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIHVwbG9hZCBzZXJ2aWNlcy4gT25jZSBhIHNlcnZpY2UgaXMgY3JlYXRlZCBhY2NvcmRpbmcgdG8gdGhlIHNlcnZpY2Ugc3BlY2lmaWNhdGlvbiAoc2VlIHRoZSBzZXJ2aWNlIGphciBmaWxlIGZvcm1hdCBzdHJ1Y3R1cmUpIHRoYXQgamFyIGZpbGUgY2FuIGJlIHVwbG9hZGVkIHVzaW5nIHRoZSB1cGxvYWQgcGFnZS4gPC9wPg0KPHAgYWxpZ249ImNlbnRlciI+PGltZyBzcmM9ImltYWdlcy9jbGlwX2ltYWdlMDEwLmpwZyI+PC9wPg0KPHA+Jm5ic3A7IDwvcD4NCjxwPlRoZSB1cGxvYWRlZCBqYXIgZmlsZXMgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGRlZmF1bHQgc2VydmljZSBkaXJlY3RvcnkuIEZvciBBeGlzMiB0aGlzIHdpbGwgYmUgdGhlICZsdDt3ZWJhcHBzJmd0Oy9heGlzMi9XRUItSU5GL3NlcnZpY2VzIGRpcmVjdG9yeS4gT25jZSBhIHNlcnZpY2UgaXMgdXBsb2FkZWQgaXQgd2lsbCBiZSBpbnN0YW50bHkgaW5zdGFsbGVkLiA8L3A+DQo8cD5TaW5jZSBBeGlzMiBzdXBwb3J0cyBob3QgZGVwbG95bWVudCBvbmUgY2FuIGRyb3AgdGhlIHNlcnZpY2UgamFyIGRpcmVjdGx5IHRocm91Z2ggdGhlIGZpbGUgc3lzdGVtIHRvIHRoZSBhYm92ZSBtZW50aW9uZWQgc2VydmljZXMgZGlyZWN0b3J5IGFuZCBpdCB3aWxsIGFsc28gY2F1c2UgdGhlIHNlcnZpY2UgdG8gYmUgYXV0b21hdGljYWxseSBpbnN0YWxsZWQgd2l0aG91dCB0aGUgY29udGFpbmVyIGJlaW5nIHJlc3RhcnRlZC4gPC9wPg0KPHA+VG8gY2hlY2sgdGhlIHN1Y2Nlc3NmdWwgaW5zdGFsbGF0aW9uIG9mIGEgc2VydmljZSA8c3Ryb25nPjxlbT5hdmFpbGFibGUgc2VydmljZXMgbGluayA8L2VtPjwvc3Ryb25nPiBpcyBwcm92aWRlZC4gVGhlIHNlcnZpY2VzIGFuZCB0aGUgb3BlcmF0aW9ucyBvZiBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkIHNlcnZpY2VzIHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZSBhdmFpbGFibGUgc2VydmljZXMgcGFnZS4gPC9wPg0KPHAgYWxpZ249ImNlbnRlciI+PGltZyAgc3JjPSJpbWFnZXMvY2xpcF9pbWFnZTAxMi5qcGciPjwvcD4NCjxwPlRvIHRlc3QgcnVuIGFuIHVwbG9hZGVkIHNlcnZpY2UsIGluc3RydWN0aW9ucyBhcmUgcHJvdmlkZWQgaW4gdGhlIHNhbXBsZXMgZ3VpZGUgYWJvdXQgcnVubmluZyB0aGUgc2FtcGxlIGNsaWVudHMuIEhvd2V2ZXIgd2hldGhlciB0aGUgc2VydmljZSBpcw0KcHJlc2VudCBjYW4gYmUgY2hlY2tlZCBieSBwb2ludGluZyB0aGUgYnJvd3NlciB0byA8Yj5odHRwOi8vJmx0O2hvc3QmZ3Q7OiZsdDtwb3J0Jmd0Oy9heGlzMi9zZXJ2aWNlcy8mbHQ7c2VydmljZSBuYW1lJmd0OzwvYj4uDQo8IS0tIFRoaXMgc2hvdWxkIHByb3ZpZGUgYSBwYWdlIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZyAtLT4NCjwvcD4NCjwhLS0gSW1hZ2UgZ29lcyBoZXJlIC0tPg0KDQo8IS0tPGgzPjxhIG5hbWU9Il9Ub2M5NjY5ODA4NyI+PC9hPlJ1bm5pbmcgdGhlIEF4aXMyIHN0YW5kYWxvbmUgc2VydmVyIDwvaDM+DQo8cD5TaW5jZSBhIEoyRUUgc2VydmxldCBjb250YWluZXIgY2FuIGJlIGhlYXZ5IGluIGNlcnRhaW4gY2FzZXMsIGEgc2ltcGxlIHNvY2tldCBzZXJ2ZXIgaXMgcHJvdmlkZWQgd2l0aCBBeGlzMi4gPC9wPg0KU3RhcnQgc2NyaXB0cyBhcmUgaW5sdWRlZCBpbiB0aGUgYmluIGRpcmVjdG9yeSBvZiB0aGUgYmluYXJ5IGRpc3RyaWJ1dGlvbi48L3A+DQo8cD5Gb3Igd2luZG93czwvcD4NCgkJCSA8cCBjbGFzcz0iY29tbWFuZCI+Jmd0O3N0YXJ0LmJhdCA8L3A+DQo8cD5Gb3IgTGludXg8L3A+DQoJCQkgPHAgY2xhc3M9ImNvbW1hbmQiPiRzdGFydC5zaDwvcD4JCQkgCQkJIA0KPHA+VGhpcyB3aWxsIHN0YXJ0IHRoZSBzaW1wbGUgYXhpcyBzZXJ2ZXIgaW4gdGhlIGRlZmF1bHQgcG9ydCAoODA4MCkuIFRvIHN0YXJ0IHRoZSBzZXJ2ZXIgaW4gYSBub24gZGVmYXVsdCBwb3J0DQp0aGUgc2VydmVyIHNjcmlwdCBjYW4gYmUgdXNlZC4gVGhlIHNldmVyIHNjcmlwdCBob3dldmVyIG5lZWRzIHR3byBwYXJhbWV0ZXJzLCB0aGUgcmVwb3NpdG9yeSBsb2NhdGlvbiBhbmQgdGhlIHBvcnQuPC9wPg0KDQo8cD5Gb3Igd2luZG93czwvcD4NCgkJCSA8cCBjbGFzcz0iY29tbWFuZCI+Jmd0O3NlcnZlciA8aT5yZXBvc2l0b3J5IGRpcmVjdG9yeTwvaT4gPGk+cG9ydDwvaT4gPC9wPg0KPHA+Rm9yIExpbnV4PC9wPg0KCQkJIDxwIGNsYXNzPSJjb21tYW5kIj4kc2VydmVyIDxpPnJlcG9zaXRvcnkgZGlyZWN0b3J5PC9pPiA8aT5wb3J0PC9pPiA8L3A+CQkJIAkJCSANCiANCiA8cD48Yj4NCiBOb3RlIC0gdGhlIGRpcmVjdG9yeSBlbnRlcmVkIGFzIHRoZSByZXBvc2l0b3J5IGxvYWNhdGlvbiBuZWVkcyB0byBoYXZlIGEgc2VydmljZXMgZGlyZWN0b3J5IGluc2lkZS4gVGhpcyBpcw0KIGFic29sdXRlbHkgcmVxdWlyZWQgYW5kIEFYSVMgd2lsbCBub3QgY3JlYXRlIGl0IGF1dG9tYXRpY2FsbHkgaW4gdGhlIGNhc2Ugb2YgdGhlIHNpbXBsZSBheGlzIHNlcnZlci4gDQogPC9iPjwvcD4gLS0+DQo8aDI+PGEgbmFtZT0iX1RvYzk2Njk3ODYzIj48L2E+U2FtcGxlcyA8L2gyPg0KPHA+VGhlcmUgYXJlIHRocmVlIHNhbXBsZSBwcm9ncmFtcywgd2hpY2ggYXJlIGxpc3RlZCBiZWxvdywgdGhhdCB3aWxsIGJlIGV4cGxhaW5lZCBpbiB0aGlzIHVzZXIgZ3VpZGUgYW5kIHRoZSByZWxldmFudCBjb2RlIGNhbiBiZSBmb3VuZCBpbiB0aGUgc291cmNlIGRpcmVjdG9yeSB1bmRlciAuLi9tb2R1bGVzL3NhbXBsZXMvc3JjL2phdmEvdXNlcmd1aWRlL3NhbXBsZTEuIDwvcD4NCjxvbD4NCiAgPGxpPkNhc2UxOiBFY2hvIFN5bmNocm9ub3VzIGNhbGwuIDwvbGk+DQogIDxsaT5DYXNlMjogRWNobyBTeW5jaHJvbm91cyBjYWxsIHdpdGggYSBwaGFzZWQgaGFuZGxlci4gPC9saT4NCiAgPGxpPkNhc2UzOiBFY2hvIEFzeW5jaHJvbm91cyBjYWxsIGF0IHRoZSBjbGllbnQgc2lkZS4gIDwvbGk+DQo8L29sPg0KPHA+Rm9yIHRoZSBhYm92ZSB0aHJlZSBjYXNlcyB0aGUgc2FtcGxlIHdpbGwgbWFrZSB1c2Ugb2YgdHdvIHdlYiBzZXJ2aWNlcyhuYW1lbHkgc2FtcGxlMSwgc2FtcGxlMVdpdGhIYW5kbGVyKSBhbmQgdHdvIGNsaWVudCBhcHBsaWNhdGlvbnMuIFRoZSBkaWFncmFtIHNob3dzIGhvdyB0aGUgdHdvIHNlcnZpY2VzIGFuZCB0aGUgdHdvIGNsaWVudCBhcHBsaWNhdGlvbnMgYXJlIHVzZWQgdG8gY29tZSB1cCB3aXRoIHRoZSB0aHJlZSBjYXNlcyBtZW50aW9uZWQgYWJvdmUuPC9wPg0KPHAgYWxpZ249ImNlbnRlciI+PGltZyBzcmM9ImltYWdlcy9jYXNlcy5qcGciIHdpZHRoPSI0NjciIGhlaWdodD0iMjQ2Ij48L3A+DQoNCjxwPiBBeGlzMiBNMSBjdXJyZW50bHkgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZGF0YSBiaW5kaW5nLCB0aHVzIGluIHRoZSBzYW1wbGVzIHRoZSBvcGVyYXRpb24gdGhhdCB3aWxsIGJlIHN1cHBvcnRlZCB3aWxsIGJlIHRoZSBlY2hvaW5nIG9mIHhtbCB3aXRob3V0IGRhdGEgYmluZGluZy4gVGhlIG1lc3NhZ2UgdGhhdCB3aWxsIGJlIHNlbnQgYW5kIGVjaG9lZCB3aWxsIGJlIHRoZSBmb2xsb3dpbmcuPC9wPg0KPHByZSBjbGFzcz0ic3R5bGUxIHN0eWxlMiBzdHlsZTMiPiZsdDtzb2FwZW52OkVudmVsb3BlIHhtbG5zOnNvYXBlbnY9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvIiB4bWxuczpzYW1wbGUxPSJodHRwOi8vc2FtcGxlMS5vcmcvc2FtcGxlMSImZ3Q7DQogJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDtzb2FwZW52OkhlYWRlci8mZ3Q7DQogJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDtzb2FwZW52OkJvZHkmZ3Q7DQogJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDtzYW1wbGUxOmVjaG8mZ3Q7DQogJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDtzYW1wbGUxOlRleHQmZ3Q7QXhpczIgICBFY2hvIFN0cmluZyZsdDsvc2FtcGxlMTpUZXh0Jmd0OyAmbmJzcDsNCiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbHQ7L3NhbXBsZTE6ZWNobyZndDsNCiAmbmJzcDsmbmJzcDsmbmJzcDsgJmx0Oy9zb2FwZW52OkJvZHkmZ3Q7DQogJmx0Oy9zb2FwZW52OkVudmVsb3BlJmd0Ow0KIDwvcHJlPg0KPHA+VGhlIFNhbXBsZTEgY2FuIGJlIGxvY2F0ZWQgYXQgdGhlIHNyYy9zYW1wbGVzL3VzZXJndWlkZS9zYW1wbGUxIGRpcmVjdG9yeSBhbmQgaXQgd2lsbCBoYXZlIChvciBldmVudHVhbGx5IGhhdmUgYWZ0ZXIgdGhlIGJ1aWxkKSB0aGUgZm9sbG93aW5nIGZpbGVzLiA8L3A+DQo8cD4mbmJzcDs8L3A+DQo8dGFibGUgd2lkdGg9Ijc1NiIgYWxpZ249ImNlbnRlciIgYm9yZGVyPSIxIiAgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4NCiAgPHRyPg0KICAgIDx0ZCB3aWR0aD0iMTM4IiBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCI+PHAgYWxpZ249ImNlbnRlciI+RGlyZWN0b3J5IDwvcD48L3RkPg0KICAgIDx0ZCB3aWR0aD0iMjQ1IiB2YWxpZ249InRvcCI+PHAgYWxpZ249ImNlbnRlciI+RmlsZSA8L3A+PC90ZD4NCiAgICA8dGQgd2lkdGg9IjM3MSIgdmFsaWduPSJ0b3AiPjxwIGFsaWduPSJjZW50ZXIiPkRlc2NyaXB0aW9uIDwvcD48L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD5tb2R1bGVzL3NhbXBsZXM8L3A+PC90ZD4NCiAgICA8dGQgdmFsaWduPSJ0b3AiPjxwPmJ1aWxkLnhtbCA8L3A+PC90ZD4NCiAgICA8dGQgdmFsaWduPSJ0b3AiPjxwPkFudCBidWlsZCBmaWxlIHRvIGNvbXBpbGUsIGRlcGxveSBhbmQgcnVuIHRoZSBzYW1wbGUgPC9wPjwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgICA8dGQgdmFsaWduPSJ0b3AiPjxwPm1vZHVsZXMvc2FtcGxlcy9zcmMgPC9wPjwvdGQ+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD5FY2hvWE1MLmphdmEgPC9wPjwvdGQ+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD5BY3R1YWwgd2ViIHNlcnZpY2UgPC9wPjwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgICA8dGQgY29sc3Bhbj0iMyIgdmFsaWduPSJ0b3AiPjxwPiZuYnNwOyA8L3A+PC90ZD4NCiAgPC90cj4NCiAgPHRyPg0KICAgIDx0ZCB2YWxpZ249InRvcCI+PHA+Jm5ic3A7IDwvcD48L3RkPg0KICAgIDx0ZCB2YWxpZ249InRvcCI+PHA+U3luY2hyb25vdXNDbGllbnQuamF2YSA8L3A+PC90ZD4NCiAgICA8dGQgdmFsaWduPSJ0b3AiPjxwPkVjaG8gU3luY2hyb25vdXMgY2xpZW50LiBUaGUgc2FtZSBjbGllbnQgd2lsbCBiZSB1c2VkIGZvciBFY2hvIFN5bmNocm9ub3VzIGNhbGwgd2l0aCBhIHBoYXNlZCBoYW5kbGVyLiA8L3A+DQogICAgICAgIDxwPiZuYnNwOyA8L3A+PC90ZD4NCiAgPC90cj4NCiAgPHRyPg0KICAgIDx0ZCBjb2xzcGFuPSIzIiB2YWxpZ249InRvcCI+PHA+Jm5ic3A7IDwvcD48L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD4mbmJzcDsgPC9wPjwvdGQ+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD5Mb2dnaW5nSGFuZGxlci5qYXZhIDwvcD48L3RkPg0KICAgIDx0ZCB2YWxpZ249InRvcCI+PHA+QSBoYW5kbGVyIHRoYXQgd2lsbCBsb2cgd2hlbiBpdCBnZXRzIGNhbGxlZC4gPC9wPjwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgICA8dGQgY29sc3Bhbj0iMyIgdmFsaWduPSJ0b3AiPjxwPiZuYnNwOyA8L3A+PC90ZD4NCiAgPC90cj4NCiAgPHRyPg0KICAgIDx0ZCB2YWxpZ249InRvcCI+PHA+Jm5ic3A7IDwvcD48L3RkPg0KICAgIDx0ZCB2YWxpZ249InRvcCI+PHA+QXN5bmNocm9ub3VzQ2xpZW50LmphdmEgPC9wPjwvdGQ+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD5FY2hvIGNsaWVudCB3aXRoIGNsaWVudCBzaWRlIEFzeW5jaHJvbm91cyBjYWxsIDwvcD48L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD4mbmJzcDsgPC9wPjwvdGQ+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD5DbGllbnRFY2hvQ2FsbGJhY2tIYW5kbGVyLmphdmEgPC9wPjwvdGQ+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD5UaGUgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGNhbGxlZCBhZnRlciB0aGUgY29tcGxldGlvbiBvZiB0aGUgQXN5bmNocm9ub3VzIGNhbGwuIDwvcD48L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD4mbmJzcDsgPC9wPjwvdGQ+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD5DbGllbnRVdGlsLmphdmEgPC9wPjwvdGQ+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD5BIGNsaWVudCBVdGlsaXR5IGNsYXNzIHRoYXQgd2lsbCBnZW5lcmF0ZSBhIFNPQVBFbnZlbG9wZS48L3A+PC90ZD4NCiAgPC90cj4NCiAgPHRyPg0KICAgIDx0ZCBjb2xzcGFuPSIzIiB2YWxpZ249InRvcCI+PHA+Jm5ic3A7IDwvcD48L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD5tb2R1bGVzL3NhbXBsZXMvY29uZiA8L3A+PC90ZD4NCiAgICA8dGQgdmFsaWduPSJ0b3AiPjxwPnNlcnZpY2UueG1sIDwvcD48L3RkPg0KICAgIDx0ZCB2YWxpZ249InRvcCI+PHA+VGhlIGRlcGxveW1lbnQgZGVzY3JpcHRvciBmb3IgdGhlIHNlcnZpY2Ugc2FtcGxlMS4gPC9wPjwvdGQ+DQogIDwvdHI+DQogICA8dHI+DQogICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KICAgIDx0ZCB2YWxpZ249InRvcCI+PHA+c2VydmljZTR3aXRoaGFuZGxlci54bWwgPC9wPjwvdGQ+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD5UaGUgZGVwbG95bWVudCBkZXNjcmlwdG9yIGZvciB0aGUgc2VydmljZSBzYW1wbGUxV2l0aEhhbmRsZXIuIDwvcD48L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD5tb2R1bGVzL3NhbXBsZXMvPC9wPg0KICAgICAgPHA+YnVpbGQvc2VydmljZXMgPC9wPjwvdGQ+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD5zYW1wbGUxLmphciA8L3A+PC90ZD4NCiAgICA8dGQgdmFsaWduPSJ0b3AiPjxwPlRoZSBkZXBsb3lhYmxlIGphciB0aGF0IGlzIGNyZWF0ZWQgYWZ0ZXIgYnVpbGRpbmcgdGhlIHNhbXBsZS4gPC9wPjwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD5zYW1wbGUxV2l0aEhhbmRsZXIuamFyIDwvcD48L3RkPg0KICAgIDx0ZCB2YWxpZ249InRvcCI+PHA+VGhlIGRlcGxveWFibGUgamFyIG9mIHRoZSB3ZWIgc2VydmljZSBzYW1wbGUxV2l0aEhhbmRsZXIgdGhhdCBpcyBjcmVhdGVkIGFmdGVyIGJ1aWxkaW5nIHRoaXMgc2FtcGxlLjwvcD48L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIHZhbGlnbj0idG9wIj48cD5tb2R1bGVzL3NhbXBsZXMvPC9wPg0KICAgICAgPHA+YnVpbGQvbGliIDwvcD4NCiAgICA8L3RkPg0KICAgIDx0ZCB2YWxpZ249InRvcCI+PHA+c2FtcGxlMS1hbGwuamFyIDwvcD48L3RkPg0KICAgIDx0ZCB2YWxpZ249InRvcCI+PHA+VGhlIGphciB0aGF0IGJ1bmRsZXMgdGhlIHNlcnZlciBzaWRlIGFuZCBjbGllbnQgc2lkZSBjb2RlLiA8L3A+PC90ZD4NCiAgPC90cj4NCjwvdGFibGU+DQo8aDM+PGEgbmFtZT0iX1RvYzk2Njk4MDg5Ij48L2E+UHJlLUNvbmRpdGlvbnMgPC9oMz4NCjxwPkF4aXMyIHNob3VsZCBiZSBpbnN0YWxsZWQgKHNlZSB0aGUgSW5zdGFsbGF0aW9uIGd1aWRlIGFib3ZlKS4gRm9yIHNpbXBsaWNpdHkgc2FtcGxlcyB3aWxsIGFzc3VtZSB0aGUgc2VydmxldCBjb250YWluZXIgaXMgVG9tY2F0LiA8L3A+DQo8cD5BWElTX0hPTUUgZW52aXJvbm1lbnQgdmFyaWFibGUgYmUgc2V0LiAoUmF0aW9uYWxlOiBUaGUgY29tcGlsZSB0aW1lIGFuZCBydW50aW1lIGxpYnJhcmllcyByZXF1aXJlZCBpbiB0aGUgY2xhc3NwYXRoIGZvciB0aGUgc2FtcGxlcyB3aWxsIGJlIHBpY2tlZCB1cCBmb3JtIHRoZSBkZXBsb3llZCBBc2l4Mi4pIDwvcD4NCjxwIGFsaWduPSJjZW50ZXIiPjxpbWcgd2lkdGg9IjM4NCIgaGVpZ2h0PSI0MzAiIHNyYz0iaW1hZ2VzL2NsaXBfaW1hZ2UwMTQuanBnIj48L3A+DQo8cD5BcGFjaGUgQW50IHNob3VsZCBiZSBpbnN0YWxsZWQgYW5kIHNob3VsZCBiZSBhdmFpbGFibGUgaW4gdGhlIHBhdGguIEl0IGNhbiBiZSBjaGVja2VkIHdoZXRoZXIgQW50IGlzIHByb3Blcmx5IGluc3RhbGxlZCBieSBzaW1wbHkgdHlwaW5nIGFudCBpbiB0aGUgY29tbWFuZCBwcm9tcHQuIFBsZWFzZSByZWZlcjxhIGhyZWY9Imh0dHA6Ly9hbnQuYXBhY2hlLm9yZy8iPiBodHRwOi8vYW50LmFwYWNoZS5vcmcvPC9hPi48L3A+DQo8cCBhbGlnbj0iY2VudGVyIj48aW1nIHNyYz0iaW1hZ2VzL2FudC5qcGciIHdpZHRoPSI2NDgiIGhlaWdodD0iMTMwIj48L3A+DQo8aDI+QnVpbGRpbmcgdGhlIHNhbXBsZTwvaDI+DQo8cD5UaGUgc291cmNlcyB0aGF0IGFyZSByZXF1aXJlZCBmb3IgdGhlIHJ1bm5pbmcgdGhlIHNhbXBsZXMgY2FuIGJlIGNvbXBpbGVkIGFuZCBwYWNrYWdlZCB1c2luZyB0aGUgZm9sbG93aW5nIGFudCB0YXNrIHByb3ZpZGVkIGluIHRoZSBidWlsZC54bWwuIFRodXMgdG8gYnVpbGQgdGhlIHNhbXBsZXMgdGhlIHVzZXIgY2FuIG9wZW4gYSBjb21tYW5kIHByb21wdCBhbmQgY2hhbmdlIGRpcmVjdG9yeSB0byBtb2R1bGVzXHNhbXBsZXMgd2hlcmUgdGhlIGJ1aWxkLmFtbCBpcyBsb2NhdGVkIGFuZCB0eXBlIDwvcD4NCjxwPj5hbnQgY29tcGlsZTwvcD4NCjxwPm9yIHNpbXBseTwvcD4NCjxwPj5hbnQ8L3A+DQo8cCBhbGlnbj0iY2VudGVyIj48aW1nIHNyYz0iaW1hZ2VzL2NsaXBfaW1hZ2UwMTguanBnIiB3aWR0aD0iNTc1IiBoZWlnaHQ9IjI5NiI+PC9pbWc+PC9wPg0KPHA+VGhlIGNvbXBpbGF0aW9uIHdpbGwgcmVzdWx0IGluIGJ1aWxkaW5nIHRocmVlIGphciBmaWxlczsgdHdvIG9mIHdoaWNoIGFyZSBkZXBsb3lhYmxlIHNlcnZpY2VzIGFuZCB0aGUgb3RoZXIgaXMgdGhlIGNvbXBpbGVkIGNsYXNzZXMgcmVxdWlyZWQgZm9yIHJ1bm5pbmcgdGhlIHNhbXBsZXMuPC9wPg0KPHVsPg0KCTxsaT5zYW1wbGUxLmphciCWIERlcGxveWFibGUgd2ViIHNlcnZpY2UgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIENhc2UxIGFuZCBDYXNlMyAoUGFja2FnZWQgdG8gbW9kdWxlcy9zYW1wbGVzL2J1aWxkL3NlcnZpY2VzKTwvbGk+DQoJPGxpPnNhbXBsZTFXaXRoaGFuZGxlci5qYXIgliBEZXBsb3lhYmxlIHdlYiBzZXJ2aWNlIHRoYXQgd2lsbCBiZSB1c2VkIGZvciBDYXNlMiAoUGFja2FnZWQgdG8gbW9kdWxlcy9zYW1wbGVzL2J1aWxkL3NlcnZpY2VzKTwvbGk+DQoJPGxpPnNhbXBsZTEtYWxsLmphciCWIENvbXBpbGVkIHNvdXJjZXMgcmVxdWlyZWQgZm9yIHJ1bm5pbmcgdGhlIGNsaWVudCBhcHBsaWNhdGlvbnMgKFBhY2thZ2VkIHRvIG1vZHVsZXMvc2FtcGxlcy9idWlsZC9saWIpPC9saT4NCjwvdWw+DQo8cD5PbmNlIHRoZSBzYW1wbGUgaXMgY29tcGlsZWQgb25jZSwgYWxsIHRoZSByZXF1aXJlZCBqYXIgZmlsZXMgZm9yIGRlcGxveWluZyBhbmQgcnVubmluZyBhbGwgdGhyZWUgQ2FzZXMgb2YgdGhlIHNhbXBsZSB3aWxsIGJlIGNvbXBpbGVkIGFuZCBwYWNrYWdlZC48L3A+DQo8aDM+PGEgbmFtZT0iX1RvYzk2Njk4MDkxIj48L2E+U2FtcGxlMS0gQ2FzZTEgOiBFY2hvIFN5bmNocm9ub3VzIGNhbGwgPC9oMz4NCjxwPlRoZSBzYW1wbGUxIC0gQ2FzZTE6IEVjaG8gc3luY2hyb25vdXMgY2FsbCBpcyBpbnRlbmRlZCB0byBkZW1vbnN0cmF0ZSB0aGUgc3luY2hyb25vdXMgd2ViIHNlcnZpY2UgY2FsbCBpbiBBeGlzMiB3aXRoIGJvdGggdGhlIGNsaWVudCBzaWRlIGFuZCBzZXJ2ZXIgc2lkZSBydW5uaW5nIEF4aXMyLiBJbiB0aGUgbmV4dCBmZXcgc3RlcHMgdGhlIHVzZXIgd2lsbCBiZSB3YWxrZWQgdGhyb3VnaCBpbjogPC9wPg0KPHVsPg0KICA8bGk+Q29tcGlsaW5nIGFuZCBidWlsZGluZyBhIHdlYiBzZXJ2aWNlIDwvbGk+DQogIDxsaT5EZXBsb3lpbmcgPC9saT4NCiAgPGxpPlJ1bm5pbmcgdGhlIGNsaWVudCAgPC9saT4NCjwvdWw+DQoNCjxwPkl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgc2FtcGxlIGlzIGFscmVhZHkgY29tcGlsZWQuIFBsZWFzZSByZWZlciAiQnVpbGRpbmcgU2FtcGxlMSIgYWJvdmUuPC9wPg0KDQoNCjxoND48c3Ryb25nPkRlcGxveWluZyB0aGUgc2FtcGxlIDwvc3Ryb25nPjwvaDQ+DQo8cD5CZWZvcmUgZGVwbG95aW5nIHRoZSBzYW1wbGUsIGl0IGlzIG5lY2Vzc2FyeSB0byBwYWNrYWdlIHRoZSB3ZWIgc2VydmljZS4gVGhlIGFjdHVhbCB3ZWIgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBpcyB0aGUgRWNob1hNTC5qYXZhIGFuZCBpdCBpcyBuZWNlc3NhcnkgdG8gd3JpdGUgYSBzZXJ2aWNlLnhtbCBzbyB0aGF0IHRoZSBuZWNlc3Nhcnkgc3RhdGlzdGljcyBhYm91dCB0aGUgc2VydmljZSB3aWxsIGJlIGF2YWlsYWJsZSB0byB0aGUgQXhpczIgZW5naW5lIGF0IHRoZSBydW50aW1lLiA8L3A+DQo8cHJlIGNsYXNzPSJzdHlsZTEgc3R5bGUyIHN0eWxlMyI+Jmx0O3NlcnZpY2UgcHJvdmlkZXI9JnF1b3Q7b3JnLmFwYWNoZS5heGlzLnByb3ZpZGVycy5SYXdYTUxQcm92aWRlciZxdW90OyBzdHlsZT0mcXVvdDtycGMmcXVvdDsmZ3Q7IA0KICAgJm5ic3A7Jm5ic3A7Jmx0O2phdmE6aW1wbGVtZW50YXRpb24gY2xhc3M9JnF1b3Q7dXNlcmd1aWRlLnNhbXBsZTEuRWNob1hNTCZxdW90OyB4bWxuczpqYXZhPSZxdW90O2h0dHA6Ly93cy5hcGFjaGUub3JnL2F4aXMyL2RlcGxveW1lbnQvamF2YSZxdW90Oy8mZ3Q7DQombmJzcDsmbmJzcDsmbHQ7b3BlcmF0aW9uIG5hbWU9JnF1b3Q7ZWNobyZxdW90OyBxbmFtZT0mcXVvdDtlY2hvJnF1b3Q7LyZndDsgICANCiZsdDsvc2VydmljZSZndDsgPC9wcmU+DQo8cD5BYm92ZSBzZXJ2aWNlLnhtbCBwcm92aWRlcyBmaXZlIHJlcXVpcmVkIHR5cGVzIG9mIGluZm9ybWF0aW9uLiA8L3A+DQo8dWw+DQogIDxsaT5Qcm92aWRlciCWIFByb3ZpZGVyIHRoYXQgd2lsbCBpbnZva2UgdGhlIHNlcnZpY2UuIDwvbGk+DQogIDxsaT5TdHlsZSAtIFN0eWxlIG9mIHRoZSBvcGVyYXRpb25zIG9mIHRoZSBzZXJ2aWNlLiA8L2xpPg0KICA8bGk+SW1wbGVtZW50YXRpb24gliBBY3R1YWwgd2ViIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gY2xhc3MsIGluIHRoaXMgY2FzZSBFY2hvWE1MLiA8L2xpPg0KICA8bGk+T3BlcmF0aW9uIJYgVGhlIG9wZXJhdGlvbnMgdGhhdCB0aGUgd2ViIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgb3IgbmVlZHMgdG8gYmUgZXhwb3NlZC4gPC9saT4NCjwvdWw+DQo8cD5PbmNlIHRoZSBzZXJ2aWNlLnhtbCBhbmQgdGhlIHdlYiBzZXJ2aWNlIChpbiB0aGlzIGNhc2UgRWNob1hNTCkgaXMgcmVhZHkgaXQgaXMgbmVjZXNzYXJ5IHRvIHBhY2thZ2UgaXQgdG8gYSBqYXIuIEFjdHVhbGx5IHdpdGggdGhlIGFib3ZlIDwvcD4NCjxwPiZndDthbnQgY29tcGlsZSA8L3A+DQo8cD5UaGUgd2ViIHNlcnZpY2Ugd2lsbCBnZXQgcGFja2FnZWQgaW50byB0aGUgYnVpbGRcc2VydmljZXMgZGlyZWN0b3J5LiBOb3cgdGhlIHVzZXIgY2FuIGRlcGxveSB0aGUgc2VydmljZSBieSBvbmUgb2YgdGhlIGZvbGxvd2luZyBtZXRob2RzLiBTaW5jZSBBeGlzMiBzdXBwb3J0cyB0aGUgaG90IGRlcGxveW1lbnQgb2Ygc2VydmljZXMgY2FuIGJlIGRlcGxveWVkIHdoaWxlIHRoZSBjb250YWluZXIgaXMgdXAgYW5kIHJ1bm5pbmcuIEZvciBvcHRpb24gMiBiZWxvdyBhY3R1YWxseSByZXF1aXJlcyB0aGUgY29udGFpbmVyIHRvIGJlIG9ubGluZS4gPC9wPg0KPHA+Jmd0O2FudCBkZXBsb3kgPC9wPg0KPHAgYWxpZ249ImNlbnRlciI+PGltZyBzcmM9ImltYWdlcy9jbGlwX2ltYWdlMDE4LmpwZyIgd2lkdGg9IjU3NSIgaGVpZ2h0PSIyOTYiPjwvcD4NCjxwPiZuYnNwOyA8L3A+DQo8cD4mIzE0OTsmbmJzcDsgVXBsb2FkaW5nIHRoZSBqYXIgdXNpbmcgdGhlIHdlYiBpbnRlcmZhY2UgcHJvdmlkZWQgaW4gdGhlIDxzdHJvbmc+aHR0cDovLyAmbHQ7aG9zdCA6cG9ydCZndDsvIGF4aXMyIDwvc3Ryb25nPmxvY2F0aW9uLiBQbGVhc2UgcmVmZXIgdGhlIEluc3RhbGxhdGlvbiBndWlkZSBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4gPC9wPg0KPHA+JiMxNDk7Jm5ic3A7IE1hbnVhbGx5IGNvcHlpbmcgdGhlIHNhbXBsZTEuamFyIGluIGJ1aWxkXHNlcnZpY2VzIHRvIHRoZSBBWElTX0hPTUVcV0VCLUlORlxzZXJ2aWNlcyBkaXJlY3RvcnkuIDwvcD4NCjxwPjxzdHJvbmc+VGhlIHNlcnZpY2Ugd2lsbCBiZSBkZXBsb3llZCB3aXRoIHRoZSBwYWNrYWdlZCBqYXIgZmlsZSBuYW1lLiBJZiB0aGUgamFyIGZpbGUgaXMgc2FtcGxlMS5qYXIgdGhlIHNlcnZpY2Ugd2lsbCBiZSBkZXBsb3llZCB3aXRoIHRoZSBuYW1lIJNzYW1wbGUxlC4gPC9zdHJvbmc+PC9wPg0KPHA+UG9pbnQgdG8gbm90ZSBoZXJlIGlzIHRoYXQgYWJvdmUgYW50IHRhc2sgaXMgZ29pbmcgdG8gZGVwbG95IHR3byBzZXJ2aWNlcyA8L3A+DQo8b2w+DQogIDxsaT5zYW1wbGUxIJYgUmVxdWlyZWQgZm9yIHRoaXMoQ2FzZTEpIGFuZCB0aGUgRWNob0FzeW5jIENhbGwgZXhhbXBsZXMoQ2FzZTEgYW5kIENhc2UzKS4gPC9saT4NCiAgPGxpPnNhbXBsZTFXaXRoSGFuZGxlciCWIHJlcXVpcmVkIGZvciBFY2hvIFN5bmNocm9ub3VzIGNhbGwgd2l0aCBhIHBoYXNlZCBoYW5kbGVyKENhc2UyKS4gPC9saT4NCjwvb2w+DQo8cD5JZiB0aGUgc2VydmxldCBjb250YWluZXIgaXMgbm93IHJ1bm5pbmcgdGhlIHVzZXIgY2FuIGdvIGNoZWNrIHRvIHNlZSB3aGV0aGVyIHRoZSBhYm92ZSBzZXJ2aWNlcyBhcmUgZGVwbG95ZWQuIFBsZWFzZSByZWZlciB0aGUgaW5zdGFsbGF0aW9uIGd1aWRlIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIG9uIGNoZWNraW5nIHRoZSBkZXBsb3llZCBzZXJ2aWNlcy4gPC9wPg0KPHAgYWxpZ249ImNlbnRlciI+PGltZyB3aWR0aD0iNjQ3IiBoZWlnaHQ9IjQzNCIgc3JjPSJpbWFnZXMvY2xpcF9pbWFnZTAyMC5qcGciPjwvcD4NCjxoND48c3Ryb25nPlJ1bm5pbmcgdGhlIHNhbXBsZSA8L3N0cm9uZz48L2g0Pg0KPHA+VGhlIHNhbXBsZSBwcm92aWRlcyBhIHNpbXBsZSBzeW5jaHJvbm91cyBjbGllbnQgaW4gdGhlIFN5bmNocm9ub3VzQ2xpZW50LmphdmEgY2xhc3MuIEZpcnN0IHRoZSB1c2VyIG11c3Qgc3RhcnQgdGhlIHNlcnZsZXQgY29udGFpbmVyIGFuZCBydW4gdGhlIGNsaWVudCBieSBzaW1wbHkgdHlwaW5nIDwvcD4NCjxwPiZndDthbnQgZWNobyA8L3A+DQo8cD5pbiB0aGUgY29tbWFuZCBwcm9tcHQuIElmIGFsbCBnb2VzIHdlbGwgdGhlIHVzZXIgd2lsbCBnZXQgdGhlIGZvbGxvd2luZyBvdXRwdXQgd2hlcmUgdGhlIHByb2dyYW0gd2lsbCBwcmludCB0aGUgcmVxdWVzdCBTT0FQIG1lc3NhZ2UgYW5kIHRoZSByZXNwb25zZSBTT0FQIG1lc3NhZ2UsIHdoaWNoIHdpbGwgYmUgc2FtZSBhcyB0aGUgcmVxdWVzdCBtZXNzYWdlLiA8L3A+DQo8cCBhbGlnbj0iY2VudGVyIj48aW1nIHdpZHRoPSI2NDgiIGhlaWdodD0iMjY5IiBzcmM9ImltYWdlcy9jbGlwX2ltYWdlMDIyLmpwZyI+PC9wPg0KPGgzPjxhIG5hbWU9Il9Ub2M5NjY5ODA5MiI+PC9hPlNhbXBsZTEgLSBDYXNlMjogRWNobyBTeW5jaHJvbm91cyBjYWxsIHdpdGggYSBwaGFzZWQgaGFuZGxlci4gPC9oMz4NCjxwPlRoaXMgZXhhbXBsZSB3aWxsIGdvIG9uZSBzdGVwIGZvcndhcmQgZnJvbSB0aGUgZXhhbXBsZSBhYm92ZSBhbmQgd2lsbCBkZXBsb3kgYSB3ZWIgc2VydmljZSB3aXRoIGEgTG9nZ2luZyBoYW5kbGVyLiBUaGUgY2xpZW50IGFwcGxpY2F0aW9uIHdpbGwgbm90IGNoYW5nZSwgb2YgY291cnNlIHdpdGggYW4gZXhjZXB0aW9uOyB0aGUgRW5kcG9pbnQgUmVmZXJlbmNlIHdpbGwgYmUgY2hhbmdlZCB0byByZWZlciB0aGUgbmV3IHNlcnZpY2UgPHN0cm9uZz6TU2FtcGxlMVdpdGhIYW5kbGVylCA8L3N0cm9uZz4uIDwvcD4NCjxwPlRoZXJlIGlzIGEgSGFuZGxlciAoTG9nZ2luZ0hhbmRsZXIuamF2YSkgdGhhdCBpcyBpbnRyb2R1Y2VkIGluIHRoaXMgY2FzZSBhbmQgaXQgd2lsbCBiYXNpY2FsbHkgbG9nIHRoZSBmYWN0IHRoYXQgaXQgZ290IGNhbGxlZC4gVGhlIGNvZGUgY2FuIGJlIGZvdW5kIGluIExvZ2dpbmdIYW5kbGVyLmphdmEuIDwvcD4NCjxwcmUgY2xhc3M9InN0eWxlMSBzdHlsZTIgc3R5bGUzIj5wdWJsaWMgdm9pZCBpbnZva2UoTWVzc2FnZUNvbnRleHQgbXNnQ29udGV4dCkgdGhyb3dzIEF4aXNGYXVsdCB7IA0KJm5ic3A7Jm5ic3A7bG9nLmluZm8oJnF1b3Q7SW5jb21pbmcgbWVzc2FnZSBGcm9tICZxdW90Oyttc2dDb250ZXh0LmdldFRvKCkuZ2V0QWRkcmVzcygpKTsgICANCg0KcHVibGljIHZvaWQgcmV2b2tlKE1lc3NhZ2VDb250ZXh0IG1zZ0NvbnRleHQpeyAgDQombmJzcDsmbmJzcDtsb2cuaW5mbygmcXVvdDtJbmNvbWluZyBtZXNzYWdlIFJldm9rZWQgYXQgdGhlIHNlcnZlciAmcXVvdDsrbXNnQ29udGV4dC5nZXRUbygpLmdldEFkZHJlc3MoKSApOyAgDQp9IDwvcHJlPg0KPHA+SXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBzYW1wbGUgaXMgY29tcGlsZWQuIFBsZWFzZSByZWZlciAiQnVpbGRpbmcgU2FtcGxlIiBhYm92ZS48L3A+DQo8aDQ+PHN0cm9uZz5EZXBsb3lpbmcgdGhlIHNhbXBsZSA8L3N0cm9uZz48L2g0Pg0KPHA+VGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSB3ZWIgc2VydmljZSB3aWxsIGJlIEVjaG9YTUwsIG9wZXJhdGlvbiB3aWxsIGJlIGVjaG8gYW5kIHRoZSBwcm92aWRlciB3aWxsIGJlIG9yZy5hcGFjaGUuYXhpcy5wcm92aWRlcnMuUmF3WE1MUHJvdmlkZXIsIHdoaWNoIGFyZSBzaW1pbGFyIHRvIHRoYXQgb2YgdGhlIDxzdHJvbmc+k0VjaG8gU3luY2hyb25vdXMgY2FsbJQgPC9zdHJvbmc+LiBUaGUgZGlmZmVyZW5jZSBpcyB0aGF0IHRoZXJlIHdpbGwgYmUgYSBoYW5kbGVyIHRoYXQgd2lsbCBiZSBhZGRlZCBpbiB0aGUgc2VydmVyIHNpZGUuIEZvciBmdXJ0aGVyIGRpc2N1c3Npb24gcmVmZXIgdGhlIGZvbGxvd2luZyBzZXJ2aWNlLnhtbCB3aGljaCB3aWxsIGJlIHVzZWQgaW4gZGVwbG95aW5nIHRoZSBzZXJ2aWNlLiA8L3A+DQo8cHJlIGNsYXNzPSJzdHlsZTEgc3R5bGUyIHN0eWxlMyI+Jmx0O3NlcnZpY2UgcHJvdmlkZXI9JnF1b3Q7b3JnLmFwYWNoZS5heGlzLnByb3ZpZGVycy5SYXdYTUxQcm92aWRlciZxdW90OyBzdHlsZT0mcXVvdDtycGMmcXVvdDsmZ3Q7IA0KICZuYnNwOyZsdDtqYXZhOmltcGxlbWVudGF0aW9uIGNsYXNzPSZxdW90O3VzZXJndWlkZS5zYW1wbGUxLkVjaG9YTUwmcXVvdDsgeG1sbnM6amF2YT0mcXVvdDtodHRwOi8vd3MuYXBhY2hlLm9yZy9heGlzMi9kZXBsb3ltZW50L2phdmEmcXVvdDsvJmd0OyAmbmJzcDsmbmJzcDsgPC9wcmU+PHByZSBjbGFzcz0ic3R5bGUxIHN0eWxlMiBzdHlsZTMiPiZuYnNwOyZuYnNwOyZsdDtpbmZsb3cmZ3Q7ICAgIA0KICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZsdDtoYW5kbGVyIG5hbWU9JnF1b3Q7TG9nZ2luZ0hhbmRsZXImcXVvdDsgY2xhc3M9JnF1b3Q7dXNlcmd1aWRlLnNhbXBsZTEuTG9nZ2luZ0hhbmRsZXImcXVvdDsmZ3Q7ICANCiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbHQ7b3JkZXIgcGhhc2U9JnF1b3Q7TG9nZ2luZyZxdW90Oy8mZ3Q7ICANCiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbHQ7L2hhbmRsZXImZ3Q7ICANCiAmbmJzcDsmbmJzcDsmbHQ7L2luZmxvdyZndDsgIA0KIA0KICZuYnNwOyZuYnNwOyZsdDtvdXRmbG93Jmd0OyAgDQogJm5ic3A7Jm5ic3A7Jmx0Oy9vdXRmbG93Jmd0OyAgDQogDQogJm5ic3A7Jm5ic3A7Jmx0O2ZhdWx0ZmxvdyZndDsgIA0KICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZsdDtoYW5kbGVyIG5hbWU9JnF1b3Q7TG9nZ2luZ0hhbmRsZXImcXVvdDsgY2xhc3M9JnF1b3Q7dXNlcmd1aWRlLnNhbXBsZTEuTG9nZ2luZ0hhbmRsZXImcXVvdDsmZ3Q7ICANCiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbHQ7b3JkZXIgcGhhc2U9JnF1b3Q7TG9nZ2luZyZxdW90Oy8mZ3Q7IA0KICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZsdDsvaGFuZGxlciZndDsgIA0KICZuYnNwOyZuYnNwOyZsdDsvZmF1bHRmbG93Jmd0OyAgDQogDQogJm5ic3A7Jm5ic3A7Jmx0O29wZXJhdGlvbiBuYW1lPSZxdW90O2VjaG8mcXVvdDsgcW5hbWU9JnF1b3Q7ZWNobyZxdW90Oy8mZ3Q7ICANCiAmbHQ7L3NlcnZpY2UmZ3Q7IDwvcHJlPg0KPHA+SW4gZXh0cmEgdGhpcyBzZXJ2aWNlLnhtbCBoYXMgZGVmaW5lZCB0aHJlZSBlbGVtZW50cyA8L3A+DQo8b2w+DQogIDxsaT5pbmZsb3cgPC9saT4NCiAgPGxpPm91dGZsb3cgPC9saT4NCiAgPGxpPmZhdWx0ZmxvdyA8L2xpPg0KPC9vbD4NCjxwPlRoZXNlIHJlZmVyIHRvIHRoZSBmbG93cyBvZiB0aGUgQXhpczIgc2VydmVyIGFuZCBmdXJ0aGVyIGluZm9ybWF0aW9uIG9mIGVhY2ggY291bGQgYmUgZm91bmQgaW4gdGhlIEFyY2hpdGVjdHVyZSBHdWlkZS4gVXNpbmcgdGhlc2UgZWxlbWVudHMgdGhlIGRlcGxveWVyIGNhbiBzcGVjaWZ5IHdoYXQgaGFuZGxlcnMgc2hvdWxkIGdvIGludG8gd2hpY2ggZWFjaCBmbG93LiBJdCBjYW4gYmUgZnVydGhlciBleHBsYWluZWQgYnkgcmVmZXJyaW5nIHRvIHRoZSBlbnRyaWVzIGluIHRoZSBhYm92ZSBzZXJ2aWNlLnhtbC4gSW4gdGhlIGFib3ZlIGRlc2NyaXB0b3IgZm9yIHRoZSBpbmZsb3cgYW5kIHRoZSBmYXVsdGZvdyB0aGVyZSBpcyBhIGhhbmRsZXIgZWxlbWVudCB0aGF0IGlzIGFkZGVkLiBBdCB0aGUgZGVwbG95bWVudCB0aW1lLCBBeGlzMiB3aWxsIGluY29ycG9yYXRlIHRoYXQgaGFuZGxlciB0byBib3RoIHRoZSBpbmZsb3cgYW5kIHRoZSBmYXVsdCBmbG93LiBTaW5jZSB0aGVyZSBpcyBubyBzdWNoIGVudHJ5IGZvciB0aGUgb3V0ZmxvdyBubyBoYW5kbGVyIHdpbGwgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBvdXRmbG93LiA8L3A+DQo8cD5IYW5kbGVyIHNob3VsZCBzcGVjaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiBjbGFzcyBhbmQgdGhlIHBoYXNlIHRoYXQgaXQgYmVsb25ncyB0by4gSW4gdGhpcyBjYXNlIHRoZSBoYW5kbGVyIGJlbG9uZyB0byB0aGUgPHN0cm9uZz5Mb2dnaW5nIDwvc3Ryb25nPiBwaGFzZSBhbmQgdGhpcyBwaGFzZSBuYW1lIHNob3VsZCBiZSBvbmUgb2YgdGhhdCBpcyBkZWZpbmVkIGluIHRoZSA8c3Ryb25nPnNlcnZlci54bWwgPC9zdHJvbmc+KG5vdCBzZXJ2aWNlLnhtbCkuIFNvIHRoaXMgPHN0cm9uZz5Mb2dnaW5nIDwvc3Ryb25nPiBwaGFzZSBzaG91bGQgYmUgZGVmaW5lZCB0aGVyZSBpbiB0aGUgc2VydmVyLnhtbCB3aGljaCBpcyBsb2NhdGVkIGluIEFYSVNfSE9NRS8gYXhpczIvV0VCLUlORi4gVGhlIGZvbGxvd2luZyBpcyB0aGUgZGVmYXVsdCBzZXJ2ZXIueG1sIHRoYXQgaXMgc2hpcHBlZCB3aXRoIGF4aXMyLndhci4gPC9wPg0KPHByZSBjbGFzcz0ic3R5bGUxIHN0eWxlOSAgc3R5bGUyIHN0eWxlMyI+Jmx0O3NlcnZlciBuYW1lPSZxdW90O0F4aXNKYXZhMi4wJnF1b3Q7Jmd0OyAgIA0KICAgJm5ic3A7Jm5ic3A7Jmx0O3BhcmFtZXRlciBuYW1lPSZxdW90O2hvdGRlcGxveW1lbnQmcXVvdDsgbG9ja2VkPSZxdW90O3hzZDpmYWxzZSZxdW90OyZndDt0cnVlJmx0Oy9wYXJhbWV0ZXImZ3Q7ICAgIA0KICAgJm5ic3A7Jm5ic3A7Jmx0O3BhcmFtZXRlciBuYW1lPSZxdW90O2hvdHVwZGF0ZSZxdW90OyBsb2NrZWQ9JnF1b3Q7eHNkOmZhbHNlJnF1b3Q7Jmd0O3RydWUmbHQ7L3BhcmFtZXRlciZndDsgICAgDQogICAmbmJzcDsmbmJzcDsmbHQ7dHJhbnNwb3J0cyZndDsgICAgDQogICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbHQ7dHJhbnNwb3J0IG5hbWU9JnF1b3Q7aHR0cCZxdW90Oy8mZ3Q7ICAgIA0KICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jmx0O3RyYW5zcG9ydCBuYW1lPSZxdW90O3NtdHAmcXVvdDsvJmd0OyAgICANCiAgICZuYnNwOyZuYnNwOyZsdDsvdHJhbnNwb3J0cyZndDsgICAgDQogICAmbmJzcDsmbmJzcDsmbHQ7cGhhc2VPcmRlciZndDsgICAgDQogICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbHQ7cGhhc2UgbmFtZT0mcXVvdDtnbG9iYWwmcXVvdDsvJmd0OyAgICANCiAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZsdDtwaGFzZSBuYW1lPSZxdW90O3RyYW5zcG9ydCZxdW90Oy8mZ3Q7ICAgIA0KICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jmx0O3BoYXNlIG5hbWU9JnF1b3Q7TG9nZ2luZyZxdW90Oy8mZ3Q7ICAgIA0KICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jmx0O3BoYXNlIG5hbWU9JnF1b3Q7bW9kdWxlJnF1b3Q7LyZndDsgICAgDQogICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbHQ7cGhhc2UgbmFtZT0mcXVvdDtzZXJ2aWNlJnF1b3Q7LyZndDsgICAgDQogICAmbmJzcDsmbmJzcDsmbHQ7L3BoYXNlT3JkZXImZ3Q7ICAgIA0KICZsdDsvc2VydmVyJmd0OyAgPC9wcmU+DQo8cD5TaW5jZSB0aGUgTG9nZ2luZyBwaGFzZSBpcyB0aGVyZSBpbiB0aGUgZGVmYXVsdCBzZXJ2ZXIueG1sIHRoZSB1c2VyIHdobyBydW5zIHRoZXNlIHNhbXBsZXMgbmVlZCBub3QgZWRpdCB0aGUgc2VydmVyLnhtbCBhdCBhbGwuIDwvcD4NCjxwPk5ldmVydGhlbGVzcyBkZXBsb3lpbmcgdGhlIHNhbXBsZSBpcyB2ZXJ5IGVhc3kgYW5kIGl0IGNhbiBiZSBkb25lIGluIGFueSBvZiB0aGUgdGhyZWUgbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhlIDxzdHJvbmc+k0VjaG8gU3luY2hyb25vdXMgY2FsbJQgPC9zdHJvbmc+IGNhc2UuIEluZmFjdCBoYWQgdGhlIHVzZSB0eXBlZCA8L3A+DQo8cD4mZ3Q7YW50IGRlcGxveSA8L3A+DQo8cD5hbmQgZGVwbG95ZWQgdGhlIHNlcnZpY2UgaW4gdGhlIDxzdHJvbmc+k0VjaG8gU3luY2hyb25vdXMgY2FsbJQgPC9zdHJvbmc+IGNhc2UgdGhlbiB0aGlzIHNlcnZpY2UgdG9vIHdpbGwgYmUgZGVwbG95ZWQuIFRoZSByZWxldmFudCBqYXIgZmlsZSBpcyA8c3Ryb25nPnNhbXBsZTFXaXRoSGFuZGxlci5qYXIgPC9zdHJvbmc+IGFuZCB3aWxsIGJlIHBhY2tlZCB0byBcYnVpbGRcc2VydmljZXMgZGlyZWN0b3J5IGlmIHRoZSB1c2VyIHdhbnRzIHRvIGRlcGxveSBpdCBtYW51YWxseSBvciB1cGxvYWQgdXNpbmcgdGhlIHdlYiBhcHBsaWNhdGlvbi4gPC9wPg0KPGg0PjxzdHJvbmc+UnVubmluZyB0aGUgc2FtcGxlIDwvc3Ryb25nPjwvaDQ+DQo8cD5JbiB0aGlzIGNhc2UgdGhlIGNsaWVudCBzaWRlIGlzIHNpbWlsYXIgdG8gdGhhdCBvZiA8c3Ryb25nPpNFY2hvIFN5bmNocm9ub3VzIGNhbGyUIDwvc3Ryb25nPi4gVGhlIGNoYW5nZXMgYXJlIGhhcHBlbmluZyBpbiB0aGUgc2VydmVyIHNpZGUgaW4gdGhpcyBjYXNlLiBUaGUgc2FtZSBTeW5jaHJvbm91c0NsaWVudC5qYXZhIGNhbiBiZSB1c2VkIHRvIGludm9rZSB0aGUgc2VydmljZSBieSBjaGFuZ2luZyB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4gUmVmZXIgdGhlIGFudCB0YXJnZXQgZm9yIGRldGFpbHMgPC9wPg0KPHByZSBjbGFzcz0ic3R5bGU0Ij4mbHQ7dGFyZ2V0IG5hbWU9ICZxdW90O2VjaG8mcXVvdDsgZGVwZW5kcz0gJnF1b3Q7Y29tcGlsZSZxdW90OyAmZ3Q7ICANCiAmbmJzcDsmbmJzcDsmbHQ7amF2YSBjbGFzc25hbWU9ICZxdW90O3VzZXJndWlkZS5zYW1wbGUxLlN5bmNocm9ub3VzQ2xpZW50JnF1b3Q7Jmd0OyANCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZsdDtjbGFzc3BhdGggcmVmaWQ9ICZxdW90O2NsYXNzcGF0aC5ydW50aW1lbGlicmFyaWVzJnF1b3Q7IC8mZ3Q7ICANCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZsdDthcmcgdmFsdWU9ICZxdW90OzgwODAmcXVvdDsgLyZndDsgIA0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jmx0O2FyZyB2YWx1ZT0gJnF1b3Q7L2F4aXMyL3NlcnZpY2VzL3NhbXBsZTEmcXVvdDsgLyZndDsgIA0KJm5ic3A7Jm5ic3A7Jmx0Oy9qYXZhJmd0OyAgDQombHQ7L3RhcmdldCZndDsgIA0KDQombHQ7dGFyZ2V0IG5hbWU9ICZxdW90O2VjaG9XaXRoSGFuZGxlciZxdW90OyAmZ3Q7ICANCiAmbmJzcDsmbmJzcDsmbHQ7amF2YSBjbGFzc25hbWU9ICZxdW90O3VzZXJndWlkZS5zYW1wbGUxLlN5bmNocm9ub3VzQ2xpZW50JnF1b3Q7ICZndDsgIA0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jmx0O2NsYXNzcGF0aCByZWZpZD0gJnF1b3Q7Y2xhc3NwYXRoLnJ1bnRpbWVsaWJyYXJpZXMmcXVvdDsgLyZndDsgIA0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jmx0O2FyZyB2YWx1ZT0gJnF1b3Q7ODA4MCZxdW90OyAvJmd0OyAgDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbHQ7YXJnIHZhbHVlPSAmcXVvdDsvYXhpczIvc2VydmljZXMvc2FtcGxlMVdpdGhIYW5kbGVyJnF1b3Q7IC8mZ3Q7ICANCiZuYnNwOyZuYnNwOyZsdDsvamF2YSZndDsgIA0KJmx0Oy90YXJnZXQmZ3Q7IDwvcHJlPg0KPHA+VG8gcnVuIHRoZSBzYW1wbGUgZmlyc3QgdGhlIHVzZXIgbXVzdCBzdGFydCB0aGUgc2VydmxldCBjb250YWluZXIgYW5kIHJ1biB0aGUgY2xpZW50IGJ5IHNpbXBseSB0eXBpbmcgPC9wPg0KPHA+Jmd0O2FudCBlY2hvV2l0aEhhbmRsZXIgPC9wPg0KPHA+aW4gdGhlIGNvbW1hbmQgcHJvbXB0LiBJZiBhbGwgZ29lcyB3ZWxsIHRoZSB1c2VyIHdpbGwgZ2V0IHRoZSBmb2xsb3dpbmcgb3V0cHV0IHdoZXJlIHRoZSBwcm9ncmFtIHdpbGwgcHJpbnQgdGhlIHJlcXVlc3QgU09BUCBtZXNzYWdlIGFuZCB0aGUgcmVzcG9uc2UgU09BUCBtZXNzYWdlLCB3aGljaCB3aWxsIGJlIHNhbWUgYXMgdGhlIHJlcXVlc3QgbWVzc2FnZS4gPC9wPg0KPHAgYWxpZ249ImNlbnRlciI+PGltZyB3aWR0aD0iNjQ4IiBoZWlnaHQ9IjI2NSIgc3JjPSJpbWFnZXMvY2xpcF9pbWFnZTAyNC5qcGciPjwvcD4NCjxwPlRoZSBzZXJ2aWNlIDxzdHJvbmc+k3NhbXBsZTF3aXRoaGFuZGxlcpQgPC9zdHJvbmc+IHdpbGwgcnVuIGl0cyBsb2dnaW5nIGhhbmRsZXIgYXMgaXQgZ2V0cyBjYWxsZWQgYW5kIGl0IHdpbGwgbG9nIHRoZSBjYWxsIGFzIHRoZSBoYW5kbGVyIGdldHMgY2FsbGVkIGluIHRoZSBpbmZsb3cuIFRoaXMgbG9nZ2VkIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgc2VydmVyIGxvZ3MuIDwvcD4NCjxoMz48YSBuYW1lPSJfVG9jOTY2OTgwOTMiPjwvYT5TYW1wbGUxIC0gQ2FzZTM6IEVjaG8gQXN5bmNocm9ub3VzIGNhbGwuIDwvaDM+DQo8cD5JbiB0aGlzIGNhc2UgdGhlIGV4YW1wbGUgZm9jdXNlcyBvbiBjYWxsaW5nIGEgc3luY2hyb25vdXMgd2ViIHNlcnZpY2UgaW4gYW4gYXN5bmNocm9ub3VzIG1hbm5lciBpbiB0aGUgY2xpZW50IHNpZGUuIElmIHRoaXMgZXhhbXBsZSBpcyBjb21wYXJlZCB3aXRoIHRoZSBmaXJzdCBleGFtcGxlLCB3aGljaCBpcyA8c3Ryb25nPpNFY2hvIFN5bmNocm9ub3VzIGNhbGyUIDwvc3Ryb25nPiwgdGhlIHNlcnZlciBzaWRlIGlzIGlkZW50aWNhbCBmb3IgYm90aCB0aGUgY2FzZXMuIFRoZSBkaWZmZXJlbmNlIHdpbGwgYmUgaW4gdGhlIHdlYiBzZXJ2aWNlIGNsaWVudCB0aGF0IHdpbGwgYmUgdXNlZC4gPC9wPg0KPHA+SW4gdGhpcyBjYXNlIHRoZSBjbGllbnQgd2lsbCBtYWtlIGEgd2ViIHNlcnZpY2UgY2FsbCBhbmQgaXQgd2lsbCByZWdpc3RlciBhIGNhbGwgYmFjayBoYW5kbGVyIGFuZCBzZW5kcyB0aGUgbWVzc2FnZSBvdXQuIFRoZSBkaWZmZXJlbmNlIHdpbGwgYmUgdGhhdCB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIHRoYXQgaXMgZG9pbmcgdGhlIHdlYiBzZXJ2aWNlIGNhbGwgd2lsbCBub3QgaGFuZyB0aWxsIHRoZSByZXNwb25zZS4gUmF0aGVyIGl0IHdpbGwgZ2V0IHJldHVybmVkIGFuZCBvbmNlIHRoZSByZXNwb25zZSByZXR1cm5zIHRoZSBjbGllbnQgd2lsbCBnZXQgbm90aWZpZWQgYnkgd2F5IG9mIHRoZSByZWdpc3RlcmVkIGNhbGxiYWNrIChUaGlzIGlzIG9uZSBvZiB0aGUgdHdvIG1ldGhvZHMgdGhpcyBjYW4gYmUgZG9uZSBpbiBBeGlzIDIuMC4gUmVmZXIgPGEgaHJlZj0iQ2xpZW50QVBJLmh0bWwiPkNsaWVudCBBcGkgVHV0b3JpYWwgPC9hPiBmb3IgbW9yZSBpbmZvcm1hdGlvbikuIDwvcD4NCjxwPlRoZSBjYWxsYmFjayBoYW5kbGVyIHRoYXQgd2lsbCBiZSB1c2VkIGlzIENsaWVudEVjaG9DYWxsYmFja0hhbmRsZXIuamF2YSBhbmQgdGhlIGNsaWVudCBwcm9ncmFtIGlzIEFzeW5jaHJvbm91c0NsaWVudC5qYXZhLiA8L3A+DQoNCjxwPkl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgc2FtcGxlIGlzIGFscmVhZHkgY29tcGlsZWQuIFBsZWFzZSByZWZlciB0aGUgIkJ1aWxkaW5nIFNhbXBsZTEiIGFib3ZlLiA8L3A+DQo8cD5PbiB0aGUgb3RoZXIgaGFuZCB0aGUgQ2FzZTMgdXNlcyB0aGUgPHN0cm9uZz5zYW1wbGUxPC9zdHJvbmc+IHdlYiBzZXJ2aWNlLiBUaHVzIGlmIHRoZSB1c2VyIGhhcyBhbHJlYWR5IGRlcGxveWVkIHNhbXBsZTEgd2ViIHNlcnZpY2UgaW4gQ2FzZTEgYWJvdmUgdGhlbiB0aGVyZSBpcyBubyByZXF1aXJlbWVudCBvZiBkZXBsb3lpbmcgYWdhaW4uIFBsZWFzZSByZWZlciBDYXNlMSBkZXBsb3lpbmcgdG8gZGVwbG95IHRoZSByZXF1aXJlZCBzZXJ2aWNlIGFib3ZlLjwvcD4NCjxoND48c3Ryb25nPlJ1bm5pbmcgdGhlIHNhbXBsZSA8L3N0cm9uZz48L2g0Pg0KPHA+VGhlIGNsYXNzIHRvIHJ1biBpcyBBc3luY2hyb25vdXNDbGllbnQuamF2YSBhbmQgaXQgd2lsbCBpbnRpYWxpc2UgdGhlIHdlYiBzZXJ2aWNlIGNhbGwuIEl0IHdpbGwgcmVnaXN0ZXIgYSBjYWxsIGJhY2sgaW4gdGhpcyBjYXNlIGFuIGluc3RhbmNlIG9mIHRoZSBDbGllbnRFY2hvQ2FsbGJhY2tIYW5kbGVyIGFuZCB0aGVuIGNsaWVudCB3aWxsIHNsZWVwIHRvIGtlZXAgdGhlIHRocmVhZCBhbGl2ZS4gRXZlbnR1YWxseSB3aGVuIHRoZSByZXNwb25zZSBpcyByZWNlaXZlZCB0aGUgY2FsbGJhY2sgaGFuZGxlciB3aWxsIGJlIGNhbGxlZChpZiBhbGwgZ29lcyB3ZWxsIG9uQ29tcGxldGUoKSBtZXRob2Qgd2lsbCBiZSBjYWxsZWQpLCBpbiB0aGlzIGNhc2UgdGhlIENsaWVudEVjaG9DYWxsYmFja0hhbmRsZXIgaW5zdGFuY2UgdGhhdCB3YXMgcmVnaXN0ZXJlZC4gPC9wPg0KPHA+SW5zaWRlIHRoZSBDbGllbnRFY2hvQ2FsbGJhY2tIYW5kbGVyIGl0IHdpbGwgcHJpbnQgdGhlIHJlY2VpdmVkIFNPQVAgbWVzc2FnZS4gUGxlYXNlIHJlZmVyIHRoZSBjb2RlLiA8L3A+DQo8cD5UbyBydW4gdGhlIGNsaWVudCBvbmUgY2FuIHNpbXBseSB0eXBlIDwvcD4NCjxwPiZndDthbnQgZWNob0FzeW5jIDwvcD4NCjxwPmFuZCBpdCB3aWxsIGdpdmUgdGhlIGZvbGxvd2luZyBvdXRwdXQuIDwvcD4NCjxwIGFsaWduPSJjZW50ZXIiPjxpbWcgd2lkdGg9IjY0OCIgaGVpZ2h0PSIyNzciIHNyYz0iaW1hZ2VzL2NsaXBfaW1hZ2UwMjYuanBnIj48L3A+DQo8cD4mbmJzcDsgPC9wPg0KPHN0cm9uZz48YnI+DQo8L3N0cm9uZz4NCjxoMj48YSBuYW1lPSJfVG9jOTY2OTgwOTQiPjwvYT5Xcml0aW5nIHlvdXIgb3duIFNlcnZpY2UgYW5kIGEgY2xpZW50IDwvaDI+DQo8aDM+PGEgbmFtZT0iX1RvYzk2Njk4MDk1Ij48L2E+V3JpdGluZyBhIE5ldyBTZXJ2aWNlIDwvaDM+DQo8cD5Xcml0aW5nIGEgbmV3IFdlYiBTZXJ2aWNlIGluIEF4aXMyLU0xIHJlcXVpcmVzIHlvdSB0byBkbyBmb2xsb3dpbmcgc3RlcHMgPC9wPg0KPHA+PHN0cm9uZz4mIzE0OTsmbmJzcDsgV3JpdGluZyBhIG5ldyBXZWIgU2VydmljZSBpbXBsZW1lbnRhdGlvbiBjbGFzcyA8L3N0cm9uZz48L3A+DQo8cD5BeGlzMiBNMSBkb2VzIG5vdCBzdXBwb3J0IGRhdGEgYmluZGluZyBhbmQgc3VwcG9ydHMgb25seSB0aGUgWE1MIGxldmVsIG1lc3NhZ2luZy4gVGhlIGRlZmF1bHQgcHJvdmlkZXIgKGRvIG5vdCB3b3JyeSBhYm91dCB0aGlzIGlmIHlvdSBkbyBub3Qga25vdyB3aGF0IGl0IGlzKSBvbmx5IHN1cHBvcnRzIHRoZSBqYXZhIG1ldGhvZHMgaGF2aW5nIHRoZSByZXR1cm4gdHlwZSBhcyBPTUVsZW1lbnQgYW5kIG9ubHkgcGFyYW1ldGVyIGFzIGFuIE9NRWxlbWVudC4gPC9wPg0KPHA+VGhlIE9NRWxlbWVudCBpcyBhIFN0cmVhbWluZyByZXByZXNlbnRhdGlvbiBvZiBYTUwgTWVzc2FnZSBFbGVtZW50IEluZm9ybWF0aW9uIEl0ZW0gKEV2ZW4gdGhvdWdoIHRoZSB1c2VyIHNlZXMgdGhlIE9NRWxlbWVudCBhcyBhIHRyZWUgYmFzZWQgRE9NL0pET00gbGlrZSBub2RlLCBpdCByZWFkcyB0aGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgc3RyZWFtIG9ubHkgd2hlbiBpdHMgYWJzb2x1dGVseSByZXF1aXJlZC4pLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiByZWZlciB0aGUgPGEgaHJlZj0iT01UdXRvcmlhbC5odG1sIj5PTSBUdXRvcmlhbCA8L2E+LiA8L3A+DQo8cHJlIGNsYXNzPSJzdHlsZTQiPnB1YmxpYyBjbGFzcyAmbHQ7Y2xhc3MtbmFtZSZndDt7ICANCiZuYnNwOyZuYnNwO3B1YmxpYyBPTUVsZWxlbW50ICZsdDttZXRob2QtbmFtZSZndDsoT01FbGxlbW50KXsgIA0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jmx0O2J1c2luZXNzIGxvZ2ljJmd0OyAgDQombmJzcDsmbmJzcDt9ICANCiZuYnNwOyZuYnNwOy4uLi4uICANCn0gPC9wcmU+DQo8cD48c3Ryb25nPiYjMTQ5OyZuYnNwOyBXcml0ZSB0aGUgc2VydmljZS54bWwgZmlsZSA8L3N0cm9uZz48L3A+DQo8cD50aGUgZm9sbG93aW5nIFhNTCBzbmlwcGV0IGlzIGEgdmVyeSBzaW1wbGUgc2VydmljZS54bWwgZmlsZS4gPC9wPg0KPHByZSBjbGFzcz0ic3R5bGU0Ij4mbHQ7c2VydmljZSBwcm92aWRlcj0mcXVvdDtvcmcuYXBhY2hlLmF4aXMucHJvdmlkZXJzLlJhd1hNTFByb3ZpZGVyJnF1b3Q7IHN0eWxlPSZxdW90O3JwYyZxdW90OyZndDsgIA0KICZuYnNwOyZuYnNwOyZsdDtqYXZhOmltcGxlbWVudGF0aW9uIGNsYXNzPSZxdW90OyZsdDtpbXBsZW1lbnRhdGlvbi1jbGFzc25hbWUmZ3Q7JnF1b3Q7ICB4bWxuczpqYXZhPSZxdW90O2h0dHA6Ly93cy5hcGFjaGUub3JnL2F4aXMyL2RlcGxveW1lbnQvamF2YSZxdW90Oy8mZ3Q7ICANCiAgJm5ic3A7Jm5ic3A7Jmx0O29wZXJhdGlvbiBuYW1lPSZxdW90OyZsdDttZXRob2QtbmFtZSZndDsmcXVvdDsgcW5hbWU9JnF1b3Q7Jmx0O21ldGhvZC1uYW1lJmd0OyZxdW90Oy8mZ3Q7IC4uLiAgDQogJmx0Oy9zZXJ2aWNlJmd0OyA8L3ByZT4NCjxwPkhlcmUgdGhlIG9yZy5hcGFjaGUuYXhpcy5wcm92aWRlcnMuUmF3WE1MUHJvdmlkZXIgaXMgdGhlIGRlZmF1bHQgcHJvdmlkZXIgZm9yIHRoZSBBcGFjaGUgQXhpczIgTTEsIHRoZSBwcm92aWRlciBjYW4gYmUgY2hhbmdlZCBieSBzcGVjaWZ5aW5nIHRoZSByZWxldmFudCBwYXJhbWV0ZXIuIE5vdGUgdGhhdCAmbHQ7bWV0aG9kLW5hbWUmZ3Q7IHNob3VsZCBiZSByZXBsYWNlZCBieSB0aGUgcmVsZXZhbnQgbWV0aG9kIG5hbWUuIDwvcD4NCjxwPjxzdHJvbmc+JiMxNDk7Jm5ic3A7IENyZWF0ZSBhbiBhcmNoaXZlIHdpdGggdGhlIHNlcnZpY2UueG1sIGZpbGUgYW5kIHdpdGggY2xhc3MgZmlsZXMgPC9zdHJvbmc+PC9wPg0KPHA+Q29tcGlsZSB0aGUgdGhlIFdlYiBTZXJ2aWNlIGltcGxlbWVudGF0aW9uIGNsYXNzIGFuZCBhbnkgb3RoZXIgc3VwcG9ydGluZyBjbGFzcy4gQXJjaGl2ZSB0aGVtIGluIHRvIGEgamFyIGZpbGUuIFBsYWNlIHRoZSBzZXJ2aWNlLnhtbCBmaWxlIGluIHRoZSBNRVRBLUlORiBkaXJlY3RvcnkuIDwvcD4NCjxwPk5hbWUgb2YgdGhlIGFyY2hpdmUgd291bGQgYmUgdGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UuIEZvciBleGFtcGxlIGlmIHRoZSBzZXJ2aWNlIG5hbWUgaXMgZWNobyB0aGUgYXJjaGl2ZSBzaG91bGQgYmUgZWNoby5qYXIgb3IgZWNoby5hYXIgKCA8c3Ryb25nPmE8L3N0cm9uZz54aXMgPHN0cm9uZz5hcjwvc3Ryb25nPmNoaXZlKSA8L3A+DQo8cD48c3Ryb25nPiYjMTQ5OyZuYnNwOyBEZXBsb3kgdGhlIGFyY2hpdmUgaW4gdGhlIEF4aXMyIDwvc3Ryb25nPjwvcD4NCjxwPldoaWxlIHRoZSBBeGlzMiBpcyBydW5uaW5nIGNvcHkgdGhlIGFyY2hpdmUgdG8gdGhlIHNlcnZpY2VzIGZvbGRlciBpbiB0aGUgcmVwb3NpdG9yeSBkaXJlY3Rvcnkgb3IgdXNlIHdlYiB1cGxvYWQgbWV0aG9kLiAoaW4gdGhlIGNhc2Ugb2YgYSBTZXJ2bGV0IGNvbnRhaW5lciB0aGlzIGRpcmVjdG9yeSBpcyBheGlzL1dFQi1JTkYvc2VydmljZXMvKS4gQXhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgcGljayB0aGUgYXJjaGl2ZSBhbmQgZGVwbG95IHRoZSBzZXJ2aWNlLiA8L3A+DQo8cD5UbyBtYWtlIHRoaXMgd2hvbGUgcHJvY2VzcyB1c2VyLWZyaWVuZGx5LCBBeGlzMiBpcyBzaGlwcGVkIHdpdGggYSBzZXJ2aWNlIGNyZWF0aW9uIEdVSSB0b29sLiBJdCBpcw0KYSAid2l6YXJkIGludGVyZmFjZSIgYW5kIGFsc28gcHJvdmlkZXMgdGhlIGZhY2lsaXR5IGZvciB1c2VycyB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIHZlcnkgc2ltcGxlDQpzZXJ2aWNlLnhtbCBhcyB3ZWxsLiBUaGUgdG9vbCBzdGFydCBzY3JpcHQgY2FuIGJlIGZvdW5kIGluIHRoZSBiaW4gZGlyZWN0b3J5LiANCg0KDQo8aDM+PGEgbmFtZT0iX1RvYzk2Njk4MDk2Ij48L2E+V3JpdGluZyBhIENsaWVudCBmb3IgdGhlIEF4aXMyLU0xIDwvaDM+DQo8cD5BeGlzMiBNMSBzdXBwb3J0cyBIVFRQIHRyYW5zcG9ydCBvbmx5LiBBeGlzMi1NMSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGludGVyYWN0aW9uIHBhdHRlcm5zLiA8L3A+DQo8cD4mIzE0OTsmbmJzcDsgQmxvY2tpbmcgaW52b2NhdGlvbiBvZiB0eXBlIGluLW91dCAocmVxdWVzdC9yZXNwb25zZSkgPC9wPg0KPHA+JiMxNDk7Jm5ic3A7IE5vbiBibG9ja2luZyBpbnZvY2F0aW9uIG9mIHR5cGUgaW4tb3V0IChXaXRob3V0IGEgc2VwYXJhdGUgTGlzdGVuZXIpIDwvcD4NCjxwPmZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbnRlcmFjdGlvbiBwYXR0ZXJucywgdmlzaXQgdGhlIDxhIGhyZWY9IkNsaWVudEFQSS5odG1sIj5DbGllbnQgQVBJIFR1dG9yaWFsIDwvYT4uIDwvcD4NCjxwPlRvIGludm9rZSB0aGUgd2ViIHNlcnZpY2UsIHVzZXIgbmVlZHMgdG8gYnVpbGQgdGhlIHRoZSBTT0FQRW52ZWxvcGUgaGltc2VsZi4gVGhlIFNPQVBFbnZlbG9wZSBjYW4gYmUgYnVpbHQgYnkgdGhlIGZvbGxvd2luZyBjb2RlLiA8L3A+DQo8cHJlIGNsYXNzPSJzdHlsZTQiPk9NRmFjdG9yeSBmYWMgPSBPTUZhY3RvcnkubmV3SW5zdGFuY2UoKTsgIA0KU09BUEVudmVsb3BlIGVudmVsb3BlID0gZmFjLmdldERlZmF1bHRFbnZlbG9wZSgpOyAgDQpPTUVsZW1lbnQgb21FbGVtZW50ID0gLi4uLi4gIA0KZW52ZWxvcGUuZ2V0Qm9keSgpLmFkZENoaWxkKG9tRWxlbWVudCk7IDwvcHJlPg0KPHA+T01FbGVtZW50IGNhbiBiZSBidWlsZCB1c2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBtZXRob2RzOyA8L3A+DQo8b2w+DQogIDxsaT5DcmVhdGUgYSBPTSBieSBidWlsZGluZyB0aGUgT00gdHJlZSA8YnI+DQogIDxzcGFuIGNsYXNzPSJzdHlsZTQiPmZhYy5jcmVhdGVPTUVsZW1lbnQobWV0aG9kLCBucyk7PC9zcGFuPjwvbGk+DQo8L29sPg0KDQo8b2w+DQogIDxsaT5DcmVhdGUgYSBPTSBFbGVtZW50IGZyb20gYSBYTUwgZmlsZSANCiA8YnI+DQogPHByZSBjbGFzcz0ic3R5bGU0Ij5YTUxTdHJlYW1SZWFkZXIgcGFyc2VyID0gWE1MSW5wdXRGYWN0b3J5Lm5ld0luc3RhbmNlKCkuY3JlYXRlWE1MU3RyZWFtUmVhZGVyKG5ldyBGaWxlUmVhZGVyKGZpbGUpKTsgPGJyPg0KICBPTVhNTFBhcnNlcldyYXBwZXIgYnVpbGRlciA9IE9NWE1MQnVpbGRlckZhY3RvcnkuY3JlYXRlU3RBWE9NQnVpbGRlcihPTUZhY3RvcnkubmV3SW5zdGFuY2UoKSwgcGFyc2VyKTsgPGJyPg0KYnVpbGRlci5nZXREb2N1bWVudEVsZW1lbnQoKTsNCiA8L3NwYW4+PC9saT4NCjwvb2w+DQo8cD5mb3IgbW9yZSBpbmZvcm1hdGlvbiBpbiBoYW5kbGluZyB0aGUgT00gb2JqZWN0cyBwbGVhc2UgcmVhZCB0aGUgPGEgaHJlZj0iT01UdXRvcmlhbC5odG1sIj5PTSBUdXRvcmlhbCA8L2E+LiA8L3A+DQo8aDQ+PGEgbmFtZT0iX1RvYzk2Njk4MDk3Ij48L2E+U3luY2hyb25vdXMgQ2xpZW50IDwvaDQ+DQo8cD5JbnZva2luZyB0aGUgc3luY2hyb25vdXMgd2ViIHNlcnZpY2UgY2FsbCBjYW4gYmUgZG9uZSB3aXRoIHRoZSBmb2xsb3dpbmcgY29kZS4gPC9wPg0KPHByZSBjbGFzcz0ic3R5bGU0Ij5FbmRwb2ludFJlZmVyZW5jZSB0YXJnZXRFUFIgPSA8c3Ryb25nPm5ldyA8L3N0cm9uZz5FbmRwb2ludFJlZmVyZW5jZShBZGRyZXNzaW5nQ29uc3RhbnRzLldTQV9UTywgJnF1b3Q7aHR0cDovLzEyNy4wLjAuMTomcXVvdDsgKyAoRW5naW5lVXRpbHMuVEVTVElOR19QT1JUKSArICZxdW90Oy9heGlzL3NlcnZpY2VzL2VjaG8mcXVvdDsgKTsgIA0KQ2FsbCBjYWxsID0gPHN0cm9uZz5uZXcgPC9zdHJvbmc+Q2FsbCgpOyAgDQpjYWxsLnNldFRvKHRhcmdldEVQUik7ICANClNPQVBFbnZlbG9wZSByZXNwb25zZUVudiA9IGNhbGwuc2VuZFJlY2VpdmUoZW52ZWxvcGUpOyA8L3ByZT4gDQo8cD4mIzE0OTsmbmJzcDsgVGhlIEVuZHBvaW50IFJlZmVyZW5jZSAoRVBSKSBpcyB0aGUgVG8gbG9jYXRpb24gb2YgdGhlIHdlYiBzZXJ2aWNlLiA8L3A+DQo8cD4mIzE0OTsmbmJzcDsgY2FsbC5zZXRUbygpIG1ldGhvZCByZWdpc3RlcnMgdGhlIGNyZWF0ZWQgRVBSIHdpdGggdGhlIGNhbGwgb2JqZWN0LiA8L3A+DQo8cD4mIzE0OTsmbmJzcDsgY2FsbC5zZW5kUmVjaWV2ZSgpIG1ldGhvZCBpbnZva2VzIHRoZSB3ZWIgc2VydmljZSBhdCB0aGUgbG9jYXRpb24gc3BlY2lmaWVkIGJ5IHRoZSBFUFIgdXNpbmcgdGhlIGdpdmVuIFNPQVAgTWVzc2FnZS4gPC9wPg0KPGg0PjxhIG5hbWU9Il9Ub2M5NjY5ODA5OCI+PC9hPkFzeW5jaHJvbm91cyBDbGllbnQgPC9oND4NCjxwPkludm9raW5nIHRoZSBhc3luY2hyb25vdXMgd2ViIHNlcnZpY2UgY2FsbCBjYW4gYmUgZG9uZSB3aXRoIHRoZSBmb2xsb3dpbmcgY29kZS4gPC9wPg0KPHByZSBjbGFzcz0ic3R5bGU0Ij5FbmRwb2ludFJlZmVyZW5jZSB0YXJnZXRFUFIgPSA8c3Ryb25nPm5ldyA8L3N0cm9uZz5FbmRwb2ludFJlZmVyZW5jZShBZGRyZXNzaW5nQ29uc3RhbnRzLldTQV9UTywgJnF1b3Q7aHR0cDovLzEyNy4wLjAuMTomcXVvdDsgKyAoRW5naW5lVXRpbHMuVEVTVElOR19QT1JUKSsgJnF1b3Q7L2F4aXMvc2VydmljZXMvZWNobyZxdW90OyApOyAgDQpDYWxsIGNhbGwgPSA8c3Ryb25nPm5ldyA8L3N0cm9uZz5DYWxsKCk7ICANCmNhbGwuc2V0VG8odGFyZ2V0RVBSKTsgIA0KY2FsbC5zZXRMaXN0ZW5lclRyYW5zcG9ydChDb25zdGFudHMuVFJBTlNQT1JUX0hUVFAsIDxzdHJvbmc+dHJ1ZSA8L3N0cm9uZz4pOyAgDQpTT0FQRW52ZWxvcGUgcmVzcG9uc2VFbnYgPSBjYWxsLnNlbmRSZWNlaXZlQXN5bmMoZW52ZWxvcGUsY2FsbGJhY2spOyA8L3ByZT4NCjxwPiYjMTQ5OyZuYnNwOyBUaGUgRW5kcG9pbnQgUmVmZXJlbmNlIChFUFIpIGlzIHRoZSBUbyBsb2NhdGlvbiBvZiB0aGUgd2ViIHNlcnZpY2UuIDwvcD4NCjxwPiYjMTQ5OyZuYnNwOyBjYWxsLnNldFRvKCkgbWV0aG9kIHJlZ2lzdGVycyB0aGUgY3JlYXRlZCBFUFIgd2l0aCB0aGUgY2FsbCBvYmplY3QuIDwvcD4NCjxwPiYjMTQ5OyZuYnNwOyBjYWxsLnNlbmRSZWNpZXZlQXN5bmMoKSBtZXRob2QgaW52b2tlcyB0aGUgd2ViIHNlcnZpY2UgYXQgdGhlIGxvY2F0aW9uIHNwZWNpZmllZCBieSB0aGUgRVBSIHVzaW5nIHRoZSBnaXZlbiBTT0FQIE1lc3NhZ2UuIDwvcD4NCjxwPiYjMTQ5OyZuYnNwOyBUaGUgTGl0ZW5lclRyYW5zcG9ydCBpcyB0eXBlIG9mIHRoZSB0cmFzcG9ydCB0byBiZSB1c2VkLiBBeGlzMi1NMSBvbmx5IHN1cHBvcnRzIHRoZSBodHRwIGFuZCB0aGUgc2Vjb25kIHBhcmFtZXRlciBleHByZXNzIHRoZSBzaG91bGQgdGhlIHNlcGVyYXRlIGxpc3RlbmVyIGlzIHRvIGJlIHN0YXJ0ZWQgb3Igbm90LiBBeGlzLU0xIHN1cHBvcnRzIG9ubHkgdGhlIHRydWUgZm9yIHRoaXMuIDwvcD4NCjxwPiYjMTQ5OyZuYnNwOyBjYWxsYmFjayBpdCB0aGUgQ2FsbGJhY2sgdG8gaGFuZGxlIHRoZSByZXNwb25zZSBlLmcuIDwvcD4NCjxwcmUgY2xhc3M9InN0eWxlMSBzdHlsZTIgc3R5bGUzIj5DYWxsYmFjayBjYWxsYmFjayA9IDxzdHJvbmc+bmV3IDwvc3Ryb25nPiBDYWxsYmFjaygpIHsgIA0KPHN0cm9uZz4mbmJzcDsmbmJzcDtwdWJsaWMgdm9pZCA8L3N0cm9uZz5vbkNvbXBsZXRlKEFzeW5jUmVzdWx0IHJlc3VsdCkgeyAgDQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsvL3Byb2Nlc3MgdGhlIHJlc3VsdCAgDQombmJzcDsmbmJzcDt9ICANCiZuYnNwOyAgDQo8c3Ryb25nPiZuYnNwOyZuYnNwO3B1YmxpYyB2b2lkIDwvc3Ryb25nPnJlcG9ydEVycm9yKEV4Y2VwdGlvbiBlKSB7ICANCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOy8vaGFuZGxlciBlcnJvciAgDQombmJzcDsmbmJzcDt9ICANCn08L3ByZT4NCjxwPiZuYnNwOyA8L3A+DQo8cD4mbmJzcDsgPC9wPg0KPC9ib2R5Pg0KPC9odG1sPg==