PCEtLSBzYXZlZCBmcm9tIHVybD0oMDAyMilodHRwOi8vaW50ZXJuZXQuZS1tYWlsIC0tPgo8IWRvY3R5cGUgaHRtbCBwdWJsaWMgIi0vL3czYy8vZHRkIGh0bWwgNC4wIHRyYW5zaXRpb25hbC8vZW4iPgoKPGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KPG1ldGEgbmFtZT0iQXV0aG9yIiBjb250ZW50PSJFY2xpcHNlIFByb2plY3QgUE1DIj4KPG1ldGEgbmFtZT0iR0VORVJBVE9SIiBjb250ZW50PSJNaWNyb3NvZnQgRnJvbnRQYWdlIDQuMCI+CjxtZXRhIG5hbWU9IlByb2dJZCIgY29udGVudD0iRnJvbnRQYWdlLkVkaXRvci5Eb2N1bWVudCI+Cjx0aXRsZT5FY2xpcHNlIFByb2plY3QgMy4xIFBsYW4gKEZpbmFsKTwvdGl0bGU+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZGVmYXVsdF9zdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KPC9oZWFkPgoKPGJvZHk+CjxoMT5FY2xpcHNlIFByb2plY3Q8YnI+CiAgMy4xIFBsYW4gKEZpbmFsKTwvaDE+CjxwPkxhc3QgcmV2aXNlZCAxNjowMiBFRFQgSnVuZSAxMCwgMjAwNSAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gCiAgbWFya3MgaW50ZXJlc3RpbmcgY2hhbmdlcyBzaW5jZSB0aGUgPGEgaHJlZj0iZWNsaXBzZV9wcm9qZWN0X3BsYW5fM18xXzIwMDUwNDEzLmh0bWwiPmRyYWZ0IAogIG9mIEFwci4gMTMsIDIwMDU8L2E+KTxicj4KICA8YnI+CiAgPGk+Jm5ic3A7Jm5ic3A7Jm5ic3A7IFBsZWFzZSBzZW5kIGNvbW1lbnRzIGFib3V0IHRoaXMgZHJhZnQgcGxhbiB0byB0aGUgPC9pPjxhIGhyZWY9Im1haWx0bzplY2xpcHNlLWRldkBlY2xpcHNlLm9yZyI+ZWNsaXBzZS1kZXZAZWNsaXBzZS5vcmc8L2E+IAogIDxpPmRldmVsb3BlciBtYWlsaW5nIGxpc3QuPC9pPjwvcD4KPHA+VGhpcyBkb2N1bWVudCBsYXlzIG91dCB0aGUgZmVhdHVyZSBhbmQgQVBJIHNldCBmb3IgdGhlIG5leHQgZmVhdHVyZSByZWxlYXNlCm9mIEVjbGlwc2UgYWZ0ZXIgMy4wLCBkZXNpZ25hdGVkIHJlbGVhc2UgMy4xLgo8dWw+CiAgPGxpPjxhIGhyZWY9IiNEZWxpdmVyYWJsZXMiPlJlbGVhc2UgZGVsaXZlcmFibGVzPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNNaWxlc3RvbmVzIj5SZWxlYXNlIG1pbGVzdG9uZXM8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI1RhcmdldE9wZXJhdGluZ0Vudmlyb25tZW50cyI+VGFyZ2V0IG9wZXJhdGluZyBlbnZpcm9ubWVudHM8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI0NvbXBhdGliaWxpdHkiPkNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyByZWxlYXNlczwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjUGxhdGZvcm0iPkVjbGlwc2UgUGxhdGZvcm0gcHJvamVjdDwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjSkRUIj5KYXZhIGRldmVsb3BtZW50IHRvb2xzIChKRFQpIHByb2plY3Q8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI1BERSI+UGx1Zy1pbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCAoUERFKSBwcm9qZWN0PC9hPjwvbGk+CjwvdWw+CjxwPlBsYW5zIGRvIG5vdCBtYXRlcmlhbGl6ZSBvdXQgb2Ygbm93aGVyZSwgbm9yIGFyZSB0aGV5IGVudGlyZWx5IHN0YXRpYy4gVG8KZW5zdXJlIHRoZSBwbGFubmluZyBwcm9jZXNzIGlzIHRyYW5zcGFyZW50IGFuZCBvcGVuIHRvIHRoZSBlbnRpcmUgRWNsaXBzZQpjb21tdW5pdHksIHdlICh0aGUgRWNsaXBzZSBQTUMpIHBvc3QgcGxhbnMgaW4gYW4gZW1icnlvbmljIGZvcm0gYW5kIHJldmlzZSB0aGVtCnRocm91Z2hvdXQgdGhlIHJlbGVhc2UgY3ljbGUuCjxwPlRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBwbGFuIGRlYWxzIHdpdGggdGhlIGltcG9ydGFudCBtYXR0ZXJzIG9mIHJlbGVhc2UKZGVsaXZlcmFibGVzLCByZWxlYXNlIG1pbGVzdG9uZXMsIHRhcmdldCBvcGVyYXRpbmcgZW52aXJvbm1lbnRzLCBhbmQKcmVsZWFzZS10by1yZWxlYXNlIGNvbXBhdGliaWxpdHkuIFRoZXNlIGFyZSBhbGwgdGhpbmdzIHRoYXQgbmVlZCB0byBiZSBjbGVhciBmb3IKYW55IHJlbGVhc2UsIGV2ZW4gaWYgbm8gZmVhdHVyZXMgd2VyZSB0byBjaGFuZ2UuJm5ic3A7CjxwPlRoZSByZW1haW5kZXIgb2YgdGhlIHBsYW4gY29uc2lzdHMgb2YgcGxhbiBpdGVtcyBmb3IgdGhlIHRocmVlIHByb2plY3RzIHVuZGVyCnRoZSBFY2xpcHNlIHRvcC1sZXZlbCBwcm9qZWN0LiBFYWNoIHBsYW4gaXRlbSBjb3ZlcnMgYSBmZWF0dXJlIG9yIEFQSSB0aGF0IGlzIHRvIGJlIGFkZGVkIHRvCkVjbGlwc2UsIG9yIHNvbWUgYXNwZWN0IG9mIEVjbGlwc2UgdGhhdCBpcyB0byBiZSBpbXByb3ZlZC4gRWFjaCBwbGFuIGl0ZW0gaGFzCml0cyBvd24gZW50cnkgaW4gdGhlIEVjbGlwc2UgYnVnemlsbGEgZGF0YWJhc2UsIHdpdGggYSB0aXRsZSBhbmQgYSBjb25jaXNlCnN1bW1hcnkgKHVzdWFsbHkgYSBzaW5nbGUgcGFyYWdyYXBoKSB0aGF0IGV4cGxhaW5zIHRoZSB3b3JrIGl0ZW0gYXQgYSBzdWl0YWJseQpoaWdoIGVub3VnaCBsZXZlbCBzbyB0aGF0IGV2ZXJ5b25lIGNhbiByZWFkaWx5IHVuZGVyc3RhbmQgd2hhdCB0aGUgd29yayBpdGVtIGlzCndpdGhvdXQgaGF2aW5nIHRvIHVuZGVyc3RhbmQgdGhlIG5pdHR5LWdyaXR0eSBkZXRhaWwuCjxwPk5vdCBhbGwgcGxhbiBpdGVtcyByZXByZXNlbnQgdGhlIHNhbWUgYW1vdW50IG9mIHdvcms7IHNvbWUgbWF5IGJlIHF1aXRlCmxhcmdlLCBvdGhlcnMsIHF1aXRlIHNtYWxsLiBTb21lIHBsYW4gaXRlbXMgbWF5IGludm9sdmUgd29yayB0aGF0IGlzIGxvY2FsaXplZAp0byBhIHNpbmdsZSBQbGF0Zm9ybSBjb21wb25lbnQ7IG90aGVycyBtYXkgaW52b2x2ZSBjb29yZGluYXRlZCBjaGFuZ2VzIHRvCnNldmVyYWwgY29tcG9uZW50czsgb3RoZXIgbWF5IHBlcnZhZGUgdGhlIGVudGlyZSBQbGF0Zm9ybS4gQWx0aG91Z2ggc29tZSBwbGFuCml0ZW1zIGFyZSBmb3Igd29yayB0aGF0IGlzIG1vcmUgcHJlc3NpbmcgdGhhdCBvdGhlcnMsIHRoZSBwbGFuIGl0ZW1zIGFwcGVhciBpbgpubyBwYXJ0aWN1bGFyIG9yZGVyLgo8cD5XaXRoIHRoZSBwcmV2aW91cyByZWxlYXNlIGFzIHRoZSBzdGFydGluZyBwb2ludCwgdGhpcyBpcyB0aGUgcGxhbiBmb3IgaG93IHdlCndpbGwgZW5oYW5jZSBhbmQgaW1wcm92ZSBpdC4gRml4aW5nIGJ1Z3MsIGltcHJvdmluZyB0ZXN0IGNvdmVyYWdlLApkb2N1bWVudGF0aW9uLCBleGFtcGxlcywgcGVyZm9ybWFuY2UgdHVuaW5nLCB1c2FiaWxpdHksIGV0Yy4gYXJlIGNvbnNpZGVyZWQgcm91dGluZQpvbmdvaW5nIG1haW50ZW5hbmNlIGFjdGl2aXRpZXMgYW5kIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhpcyBwbGFuIHVubGVzcyB0aGV5CndvdWxkIGFsc28gaW52b2x2ZSBhIHNpZ25pZmljYW50IGNoYW5nZSB0byB0aGUgQVBJIG9yIGZlYXR1cmUgc2V0LCBvciBpbnZvbHZlIGEKc2lnbmlmaWNhbnQgYW1vdW50IG9mIHdvcmsuIFRoZSBpbnRlbnQgb2YgdGhlIHBsYW4gaXMgdG8gYWNjb3VudCBmb3IgYWxsIGludGVyZXN0aW5nIGZlYXR1cmUgd29yay4KPHA+VGhlIGN1cnJlbnQgc3RhdHVzIG9mIGVhY2ggcGxhbiBpdGVtIGlzIG5vdGVkOgo8dWw+CiAgPGxpPjxiPkNvbW1pdHRlZDwvYj4gcGxhbiBpdGVtIC0gQSBjb21taXR0ZWQgcGxhbiBpdGVtIGlzIG9uZSB0aGF0IHdlIGhhdmUKICAgIGRlY2lkZWQgdG8gYWRkcmVzcyBmb3IgdGhlIHJlbGVhc2UuPC9saT4KICA8bGk+PGI+UHJvcG9zZWQ8L2I+IHBsYW4gaXRlbSAtIEEgcHJvcG9zZWQgcGxhbiBpdGVtIGlzIG9uZSB0aGF0IHdlIGFyZQogICAgY29uc2lkZXJpbmcgYWRkcmVzc2luZyBmb3IgdGhlIHJlbGVhc2UuIEFsdGhvdWdoIHdlIGFyZSBhY3RpdmVseQogICAgaW52ZXN0aWdhdGluZyBpdCwgd2UgYXJlIG5vdCB5ZXQgaW4gYSBwb3NpdGlvbiB0byBjb21taXQgdG8gaXQsIG9yIHRvIHNheQogICAgdGhhdCB3ZSB3b24ndCBiZSBhYmxlIHRvIGFkZHJlc3MgaXQuIEFmdGVyIGR1ZSBjb25zaWRlcmF0aW9uLCBhIHByb3Bvc2FsCiAgICB3aWxsIGVpdGhlciBiZSBjb21taXR0ZWQgb3IgZGVmZXJyZWQuPC9saT4KICA8bGk+PGI+RGVmZXJyZWQ8L2I+IHBsYW4gaXRlbSAtIEEgcmVhc29uYWJsZSBwcm9wb3NhbCB0aGF0IHdpbGwgbm90IG1ha2UgaXQgaW4KICAgIHRvIHRoaXMgcmVsZWFzZSBmb3Igc29tZSByZWFzb24gaXMgbWFya2VkIGFzIGRlZmVycmVkIHdpdGggYSBicmllZiBub3RlIGFzCiAgICB0byB3aHkgaXQgd2FzIGRlZmVycmVkLiBEZWZlcnJlZCBwbGFuIGl0ZW1zIG1heSByZXN1cmZhY2UgYXMgY29tbWl0dGVkIHBsYW4KICAgIGl0ZW1zIGF0IGEgbGF0ZXIgcG9pbnQuPC9saT4KICA8bGk+PGI+UmVqZWN0ZWQ8L2I+IHBsYW4gaXRlbSAtIFBsYW4gaXRlbXMgdGhhdCB3ZXJlIHByb3Bvc2VkIGJ1dCBqdWRnZWQKICAgIHVud29ya2FibGUgYXJlIG1hcmtlZCBhcyByZWplY3RlZCBwbGFuIGl0ZW1zLCB3aXRoIGFuIGFjY29tcGFueWluZyBzdW1tYXJ5CiAgICBvZiB3aHkgdGhleSB3ZXJlIGRpc21pc3NlZC4gS2VlcGluZyB0cmFjayBvZiByZWplY3RlZCBpdGVtcyBhdm9pZHMgcmVwZWF0aW5nCiAgICB0aGUgZGlzY3Vzc2lvbi48L2xpPgo8L3VsPgo8aDI+PGEgbmFtZT0iRGVsaXZlcmFibGVzIj48L2E+UmVsZWFzZSBkZWxpdmVyYWJsZXM8L2gyPgo8cD5UaGUgcmVsZWFzZSBkZWxpdmVyYWJsZXMgaGF2ZSB0aGUgc2FtZSBmb3JtIGFzIHByZXZpb3VzIHJlbGVhc2VzLCBuYW1lbHk6Cjx1bD4KICA8bGk+U291cmNlIGNvZGUgcmVsZWFzZSBmb3IgRWNsaXBzZSBQcm9qZWN0LCBhdmFpbGFibGUgYXMgdmVyc2lvbnMgdGFnZ2VkCiAgICAmcXVvdDtSM18xJnF1b3Q7IGluIHRoZSBFY2xpcHNlIFByb2plY3QgPGEgaHJlZj0iaHR0cDovL2Rldi5lY2xpcHNlLm9yZy92aWV3Y3ZzLyI+Q1ZTCiAgICByZXBvc2l0b3J5PC9hPi48L2xpPgogIDxsaT5FY2xpcHNlIFByb2plY3QgU0RLIChpbmNsdWRlcyBydW50aW1lIGJpbmFyeSBhbmQgU0RLIGZvciBQbGF0Zm9ybSwgSkRULAogICAgYW5kIFBERSkgKGRvd25sb2FkYWJsZSkuPC9saT4KICA8bGk+RWNsaXBzZSBQbGF0Zm9ybSBydW50aW1lIGJpbmFyeSBhbmQgU0RLIGRpc3RyaWJ1dGlvbnMgKGRvd25sb2FkYWJsZSkuPC9saT4KICA8bGk+RWNsaXBzZSBSQ1AgcnVudGltZSBiaW5hcnkgYW5kIFNESyBkaXN0cmlidXRpb25zIChkb3dubG9hZGFibGUpLjwvbGk+CiAgPGxpPkpEVCBydW50aW1lIGJpbmFyeSBhbmQgU0RLIGRpc3RyaWJ1dGlvbnMgKGRvd25sb2FkYWJsZSkuPC9saT4KICA8bGk+UERFIHJ1bnRpbWUgYmluYXJ5IGFuZCBTREsgZGlzdHJpYnV0aW9ucyAoZG93bmxvYWRhYmxlKS48L2xpPgogIDxsaT5FY2xpcHNlIFNESyBFeGFtcGxlcyAoZG93bmxvYWRhYmxlKS48L2xpPgogIDxsaT5TV1QgZGlzdHJpYnV0aW9uIChkb3dubG9hZGFibGUpLjwvbGk+CjwvdWw+CjxoMj48YSBuYW1lPSJNaWxlc3RvbmVzIj48L2E+UmVsZWFzZSBtaWxlc3RvbmVzPC9oMj4KPHA+UmVsZWFzZSBtaWxlc3RvbmUgb2NjdXJyaW5nIGF0IHJvdWdobHkgNiB3ZWVrIGludGVydmFscyBleGlzdCB0byBmYWNpbGl0YXRlCmNvYXJzZS1ncmFpbmVkIHBsYW5uaW5nIGFuZCBzdGFnaW5nLiBUaGUgbWlsZXN0b25lcyBhcmU6PC9wPgo8dWw+CiAgPGxpPkZyaWRheSBBdWcuIDEzLCAyMDA0IC0gTWlsZXN0b25lIDEgKDMuMSBNMSkgLSBzdGFibGUgYnVpbGQ8L2xpPgogIDxsaT5GcmlkYXkgU2VwLiAyNCwgMjAwNCAtIE1pbGVzdG9uZSAyICgzLjEgTTIpIC0gc3RhYmxlIGJ1aWxkPC9saT4KICA8bGk+RnJpZGF5IE5vdi4gNSwgMjAwNCAtIE1pbGVzdG9uZSAzICgzLjEgTTMpIC0gc3RhYmxlIGJ1aWxkPC9saT4KICA8bGk+RnJpZGF5IERlYy4gMTcsIDIwMDQgLSBNaWxlc3RvbmUgNCAoMy4xIE00KSAtIHN0YWJsZSBidWlsZDwvbGk+CiAgPGxpPkZyaWRheSBGZWIuIDE4LCAyMDA1Jm5ic3A7IC0gTWlsZXN0b25lIDUgKDMuMSBNNSkgLSBzdGFibGUgYnVpbGQ8L2xpPgogIDxsaT5GcmlkYXkgQXByLiAxLCAyMDA1IC0gTWlsZXN0b25lIDYgKDMuMSBNNikgLSBzdGFibGUgYnVpbGQgLSBBUEkgY29tcGxldGUgCiAgICAtIEFQSSBmcmVlemU8L2xpPgogIDxsaT5GcmlkYXkgTWF5IDEzLCAyMDA1IC0gTWlsZXN0b25lIDcgKDMuMSBNNykgLSBzdGFibGUgYnVpbGQgLSBmZWF0dXJlIGNvbXBsZXRlIAogICAgLSBkZXZlbG9wbWVudCBmcmVlemUgLSBsb2NrIGRvd24gYW5kIHRlc3RpbmcgYmVnaW5zPC9saT4KPC91bD4KPHA+PGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gTG9jayBkb3duIGFuZCB0ZXN0aW5nIAogIHRoZW4gYmVnaW5zIHdpdGggTTcsIGFuZCBwcm9ncmVzcyB0aHJvdWdoIGEgc2VyaWVzIG9mIHRlc3QtZml4IHBhc3NlcyBhZ2FpbnN0IAogIGNhbmRpZGF0ZXMgcmVsZWFzZXMuIFJlbGVhc2UgY2FuZGlkYXRlIGJ1aWxkcyBhcmUgcGxhbm5lZCBhcyBmb2xsb3dzIChNNyBpcyAKICByZWxlYXNlIGNhbmRpZGF0ZSAwKTo8L3A+Cjx1bD4KICA8bGk+RnJpZGF5IE1heSAyNywgMjAwNSAtIFJlbGVhc2UgQ2FuZGlkYXRlIDEgLSAoMy4xIFJDMSk8L2xpPgogIDxsaT5GcmlkYXkgSnVuZSAxMCwgMjAwNSAtIFJlbGVhc2UgQ2FuZGlkYXRlIDIgLSAoMy4xIFJDMik8L2xpPgogIDxsaT5GcmlkYXkgSnVuZSAxNywgMjAwNSAtIFJlbGVhc2UgQ2FuZGlkYXRlIDMgLSAoMy4xIFJDMyk8L2xpPgogIDxsaT5GcmlkYXkgSnVuZSAyNCwgMjAwNSAtIFJlbGVhc2UgQ2FuZGlkYXRlIDQgLSAoMy4xIFJDNCk8L2xpPgo8L3VsPgo8cD4gRGVwZW5kaW5nIG9uIHRoZSBjaXJjdW1zdGFuY2VzLCB3ZSBtYXkgYWRkIGFkZGl0aW9uYWwgcmVsZWFzZSBjYW5kaWRhdGUgYnVpbGRzIAogIG9yIGZpbmUtdHVuZSB0aGUgc2NoZWR1bGUuIFRoZSAzLjEgcmVsZWFzZSBpcyB0YXJnZXRlZCBmb3IgdGhlIHdlZWsgb2YgSnVuZSAKICAyNywgMjAwNS4gU2VlIHRoZSA8YSBocmVmPSJodHRwOi8vZGV2LmVjbGlwc2Uub3JnL3ZpZXdjdnMvaW5kZXguY2dpLyU3RWNoZWNrb3V0JTdFL2VjbGlwc2UtcHJvamVjdC1ob21lL3BsYW5zLzNfMS9mcmVlemVfcGxhbi5odG1sIj5FY2xpcHNlIAogIDMuMSBFbmRnYW1lIFBsYW48L2E+IGZvciBmdXJ0aGVyIGRldGFpbHMuIEFsbCByZWxlYXNlIGRlbGl2ZXJhYmxlcyB3aWxsIGJlIGF2YWlsYWJsZSAKICBmb3IgZG93bmxvYWQgYXMgc29vbiBhcyB0aGUgcmVsZWFzZSBoYXMgYmVlbiB0ZXN0ZWQgYW5kIHZhbGlkYXRlZCBpbiB0aGUgdGFyZ2V0IAogIG9wZXJhdGluZyBjb25maWd1cmF0aW9ucyBsaXN0ZWQgYmVsb3cuPC9wPgo8aDI+PGEgbmFtZT0iVGFyZ2V0T3BlcmF0aW5nRW52aXJvbm1lbnRzIj48L2E+VGFyZ2V0IE9wZXJhdGluZyBFbnZpcm9ubWVudHM8L2gyPgo8cD5JbiBvcmRlciB0byByZW1haW4gY3VycmVudCwgZWFjaCBFY2xpcHNlIHJlbGVhc2UgdGFyZ2V0cyByZWFzb25hYmx5IGN1cnJlbnQKdmVyc2lvbnMgb2YgdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIGVudmlyb25tZW50cy48L3A+CjxwPk1vc3Qgb2YgdGhlIEVjbGlwc2UgU0RLIGlzICZxdW90O3B1cmUmcXVvdDsgSmF2YZkgY29kZSBhbmQgaGFzIG5vIGRpcmVjdApkZXBlbmRlbmNlIG9uIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0uIFRoZSBjaGllZiBkZXBlbmRlbmNlIGlzIHRoZXJlZm9yZQpvbiB0aGUgSmF2YSAyIFBsYXRmb3JtIGl0c2VsZi4gVGhlIDMuMSByZWxlYXNlIG9mIHRoZSBFY2xpcHNlIFByb2plY3QgaXMgd3JpdHRlbgphbmQgY29tcGlsZWQgYWdhaW5zdCB2ZXJzaW9uIDEuNCBvZiB0aGUgSmF2YSAyIFBsYXRmb3JtIEFQSXMsIGFuZCB0YXJnZXRlZCB0bwpydW4gb24gdmVyc2lvbiAxLjQgb2YgdGhlIEphdmEgMiBSdW50aW1lIEVudmlyb25tZW50LCBTdGFuZGFyZCBFZGl0aW9uLjwvcD4KPHA+VGhlcmUgYXJlIG1hbnkgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBvZiB0aGUgSmF2YSAyIFBsYXRmb3JtIHJ1bm5pbmcgYXRvcAphIHZhcmlldHkgb2Ygb3BlcmF0aW5nIHN5c3RlbXMuIFdlIGZvY3VzIEVjbGlwc2UgdGVzdGluZyBvbiBhIGhhbmRmdWwgb2YgcG9wdWxhcgo8c3BhbiBjbGFzcz0iaGVhZGVyIj5jb21iaW5hdGlvbnMgb2Ygb3BlcmF0aW5nIHN5c3RlbSBhbmQgSmF2YSAyIFBsYXRmb3JtOyB0aGVzZQphcmUgb3VyIDxlbT5yZWZlcmVuY2UgcGxhdGZvcm1zPC9lbT4uIEVjbGlwc2UgdW5kb3VidGVkbHkgcnVucyBmaW5lIGluIG1hbnkKb3BlcmF0aW5nIGVudmlyb25tZW50cyBiZXlvbmQgdGhlIHJlZmVyZW5jZSBwbGF0Zm9ybXMgd2UgdGVzdC4gSG93ZXZlciwgc2luY2Ugd2UKZG8gbm90IHN5c3RlbWF0aWNhbGx5IHRlc3QgdGhlbSB3ZSBjYW5ub3Qgdm91Y2ggZm9yIHRoZW0uIFByb2JsZW1zIGVuY291bnRlcmVkCndoZW4gcnVubmluZyBFY2xpcHNlIG9uIG5vbi1yZWZlcmVuY2UgcGxhdGZvcm0gdGhhdCBjYW5ub3QgYmUgcmVjcmVhdGVkIG9uIGFueQpyZWZlcmVuY2UgcGxhdGZvcm0gd2lsbCBiZSBnaXZlbiBsb3dlciBwcmlvcml0eSB0aGFuIHByb2JsZW1zIHdpdGggcnVubmluZwpFY2xpcHNlIG9uIGEgcmVmZXJlbmNlIHBsYXRmb3JtLjwvc3Bhbj48L3A+CjxwPkVjbGlwc2UgU0RLIDMuMSBpcyB0ZXN0ZWQgYW5kIHZhbGlkYXRlZCBvbiB0aGUgZm9sbG93aW5nIHJlZmVyZW5jZSBwbGF0Zm9ybXMgCiAgKHRoaXMgbGlzdCBpcyB1cGRhdGVkIG92ZXIgdGhlIGNvdXJzZSBvZiB0aGUgcmVsZWFzZSBjeWNsZSk6PC9wPgogPHRhYmxlIHdpZHRoPSI4MjEiIGJvcmRlcj0iMSI+CiAgPHRyIGJnY29sb3I9IiNDQ0NDQ0MiPgogICAgPHRoIGNvbHNwYW49IjQiPgogICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPgogICAgICAgIDxiPjxmb250IHNpemU9IisxIj5FY2xpcHNlIFJlZmVyZW5jZSBQbGF0Zm9ybXM8L2ZvbnQ+PC9iPgogICAgICA8L2Rpdj4KICAgIDwvdGg+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjIwNSI+PGI+T3BlcmF0aW5nIHN5c3RlbTwvYj48L3RkPgogICAgPHRkIHdpZHRoPSI3NiI+PGI+UHJvY2Vzc29yIGFyY2hpdGVjdHVyZTwvYj48L3RkPgogICAgPHRkIHdpZHRoPSI1OSI+PGI+V2luZG93IHN5c3RlbTwvYj48L3RkPgogICAgPHRkIHdpZHRoPSI0NTMiPjxiPkphdmEgMiBQbGF0Zm9ybTwvYj48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIyMDUiPk1pY3Jvc29mdCBXaW5kb3dzIFhQPC90ZD4KICAgIDx0ZCB3aWR0aD0iNzYiPkludGVsIHg4NjwvdGQ+CiAgICA8dGQgd2lkdGg9IjU5Ij5XaW4zMjwvdGQ+CiAgICA8dGQgd2lkdGg9IjQ1MyI+U3VuIEphdmEgMiBTdGFuZGFyZCBFZGl0aW9uLCB2ZXJzaW9uIDEuNC4yXzA4IGZvciBNaWNyb3NvZnQgCiAgICAgIFdpbmRvd3M8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIyMDUiPk1pY3Jvc29mdCBXaW5kb3dzIFhQPC90ZD4KICAgIDx0ZCB3aWR0aD0iNzYiPkludGVsIHg4NjwvdGQ+CiAgICA8dGQgd2lkdGg9IjU5Ij5XaW4zMjwvdGQ+CiAgICA8dGQgd2lkdGg9IjQ1MyI+IDxwPklCTSAzMi1iaXQgU0RLIGZvciBXaW5kb3dzLCBKYXZhIDIgVGVjaG5vbG9neSBFZGl0aW9uLCAKICAgICAgICBWZXJzaW9uIDEuNC4yIFNSMWE8L3A+CiAgICA8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIyMDUiPk1pY3Jvc29mdCBXaW5kb3dzIFhQPC90ZD4KICAgIDx0ZCB3aWR0aD0iNzYiPkludGVsIHg4NjwvdGQ+CiAgICA8dGQgd2lkdGg9IjU5Ij5XaW4zMjwvdGQ+CiAgICA8dGQgd2lkdGg9IjQ1MyI+U3VuIEphdmEgMiBTdGFuZGFyZCBFZGl0aW9uIDUuMCBVcGRhdGUgMiBmb3IgTWljcm9zb2Z0IFdpbmRvd3M8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIyMDUiPlJlZCBIYXQgRW50ZXJwcmlzZSBMaW51eCBXUyAzPC90ZD4KICAgIDx0ZCB3aWR0aD0iNzYiPkludGVsIHg4NjwvdGQ+CiAgICA8dGQgd2lkdGg9IjU5Ij5HVEs8L3RkPgogICAgPHRkIHdpZHRoPSI0NTMiPlN1biBKYXZhIDIgU3RhbmRhcmQgRWRpdGlvbiwgMS40LjJfMDggZm9yIExpbnV4IHg4NjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjIwNSI+UmVkIEhhdCBFbnRlcnByaXNlIExpbnV4IFdTIDM8L3RkPgogICAgPHRkIHdpZHRoPSI3NiI+SW50ZWwgeDg2PC90ZD4KICAgIDx0ZCB3aWR0aD0iNTkiPkdUSzwvdGQ+CiAgICA8dGQgd2lkdGg9IjQ1MyI+SUJNIDMyLWJpdCBTREsgZm9yIExpbnV4IG9uIEludGVsIGFyY2hpdGVjdHVyZSwgSmF2YSAyIFRlY2hub2xvZ3kgCiAgICAgIEVkaXRpb24sIFZlcnNpb24gMS40LjIgU1IxYTwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjIwNSI+U0xFUyA5PC90ZD4KICAgIDx0ZCB3aWR0aD0iNzYiPkludGVsIHg4NjwvdGQ+CiAgICA8dGQgd2lkdGg9IjU5Ij5HVEs8L3RkPgogICAgPHRkIHdpZHRoPSI0NTMiPlN1biBKYXZhIDIgU3RhbmRhcmQgRWRpdGlvbiwgdmVyc2lvbiAxLjQuMl8wOCBmb3IgTGludXggeDg2PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMjA1Ij5TTEVTIDk8L3RkPgogICAgPHRkIHdpZHRoPSI3NiI+SW50ZWwgeDg2PC90ZD4KICAgIDx0ZCB3aWR0aD0iNTkiPkdUSzwvdGQ+CiAgICA8dGQgd2lkdGg9IjQ1MyI+SUJNIDMyLWJpdCBTREsgZm9yIExpbnV4IG9uIEludGVsIGFyY2hpdGVjdHVyZSwgSmF2YSAyIFRlY2hub2xvZ3kgCiAgICAgIEVkaXRpb24sIFZlcnNpb24gMS40LjIgU1IxYTwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjIwNSI+U3VuIFNvbGFyaXMgODwvdGQ+CiAgICA8dGQgd2lkdGg9Ijc2Ij5TUEFSQzwvdGQ+CiAgICA8dGQgd2lkdGg9IjU5Ij5Nb3RpZjwvdGQ+CiAgICA8dGQgd2lkdGg9IjQ1MyI+U3VuIEphdmEgMiBTREssIFN0YW5kYXJkIEVkaXRpb24sIDEuNC4yXzA4IGZvciBTb2xhcmlzIFNQQVJDPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMjA1Ij5IUCBIUC1VWCAxMWk8L3RkPgogICAgPHRkIHdpZHRoPSI3NiI+aHA5MDAwPGJyPgogICAgICBQQS1SSVNDPC90ZD4KICAgIDx0ZCB3aWR0aD0iNTkiPk1vdGlmPC90ZD4KICAgIDx0ZCB3aWR0aD0iNDUzIj48cD5IUC1VWCBTREsgZm9yIHRoZSBKYXZhIDIgcGxhdGZvcm0sIHZlcnNpb24gMS40LjIuMDcgZm9yIAogICAgICAgIGhwOTAwMCBQQS1SSVNDPC9wPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgd2lkdGg9IjIwNSIgaGVpZ2h0PSIyMSI+SUJNIEFJWCA1TCBWZXJzaW9uIDUuMjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijc2Ij5Qb3dlclBDPC90ZD4KICAgIDx0ZCB3aWR0aD0iNTkiPk1vdGlmPC90ZD4KICAgIDx0ZCB3aWR0aD0iNDUzIj48cD5JQk0gMzItYml0IFNESyBmb3IgQUlYLCBKYXZhIDIgVGVjaG5vbG9neSBFZGl0aW9uLCBWZXJzaW9uIAogICAgICAgIDEuNC4yIFNSMWE8L3A+CiAgICA8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIHdpZHRoPSIyMDUiPkFwcGxlIE1hYyBPUyBYIDEwLjM8L3RkPgogICAgPHRkIHdpZHRoPSI3NiI+UG93ZXJQQzwvdGQ+CiAgICA8dGQgd2lkdGg9IjU5Ij5DYXJib248L3RkPgogICAgPHRkIHdpZHRoPSI0NTMiPkphdmEgMiBTdGFuZGFyZCBFZGl0aW9uCiAgICAgIDEuNC4yIGZvciBNYWMgT1MgWDwvdGQ+CiAgPC90cj4KPC90YWJsZT4gCjxwPkFsdGhvdWdoIHVudGVzdGVkLCBFY2xpcHNlIHNob3VsZCB3b3JrIGZpbmUgb24gb3RoZXIgT1NlcyB0aGF0IHN1cHBvcnQgdGhlCnNhbWUgd2luZG93IHN5c3RlbS4gRm9yIFdpbjMyOiBXaW5kb3dzIDk4LCBNRSwgTlQsIDIwMDAsIGFuZCBTZXJ2ZXIgMjAwMzsgU1dUCkhUTUwgdmlld2VyIHJlcXVpcmVzIEludGVybmV0IEV4cGxvcmVyIDUgKG9yIGhpZ2hlcikuIEZvciBHVEsgb24gb3RoZXIgTGludXgKc3lzdGVtczogdmVyc2lvbiAyLjIuMSBvZiB0aGUgR1RLKyB3aWRnZXQgdG9vbGtpdCBhbmQgYXNzb2NpYXRlZCBsaWJyYXJlcyAoR0xpYiwKUGFuZ28pOyBTV1QgSFRNTCB2aWV3ZXIgcmVxdWlyZXMgTW96aWxsYSAxLjRHVEsyLiBGb3IgTW90aWYgb24gb3RoZXIgTGludXgKc3lzdGVtczogT3BlbiBNb3RpZiAyLjEgKGluY2x1ZGVkKTsgU1dUIEhUTUwgdmlld2VyIHJlcXVpcmVzIE1vemlsbGEgMS40R1RLMi48L3A+CjxwPkFuIGVhcmx5IGFjY2VzcyB2ZXJzaW9uIG9mIEVjbGlwc2UgaXMgYWxzbyBhdmFpbGFibGUgZm9yIDY0LWJpdCBMaW51eCBHVEsuIAogIFRlc3RpbmcgaGFzIGJlZW4gbGltaXRlZCB0byBlYXJseSBhY2Nlc3MgNjQtYml0IEoyU0VzIHJ1bm5pbmcgb24geDg2LTY0IHByb2Nlc3NvcnMuPC9wPgo8cD5TV1QgaXMgYWxzbyBzdXBwb3J0ZWQgb24gdGhlIFFOWCBOZXV0cmlubyBvcGVyYXRpbmcgc3lzdGVtLCB4ODYgcHJvY2Vzc29yLApQaG90b24gd2luZG93IHN5c3RlbSwgYW5kIElCTSBKOSBWTSB2ZXJzaW9uIDIuMC4gRWNsaXBzZSAzLjEgb24gV2luZG93cyBvciBMaW51eApjYW4gYmUgdXNlZCBjcm9zcyBkZXZlbG9wIFFOWCBhcHBsaWNhdGlvbnMuIChFY2xpcHNlIDMuMSBpcyB1bmF2YWlsYWJsZSBvbiBRTlgKYmVjYXVzZSB0aGVyZSBpcyBjdXJyZW50bHkgbm8gMS40IEoyU0UgZm9yIFFOWC4pPC9wPgo8aDQ+SW50ZXJuYXRpb25hbGl6YXRpb248L2g0Pgo8cD5UaGUgRWNsaXBzZSBQbGF0Zm9ybSBpcyBkZXNpZ25lZCBhcyB0aGUgYmFzaXMgZm9yIGludGVybmF0aW9uYWxpemVkIHByb2R1Y3RzLgpUaGUgdXNlciBpbnRlcmZhY2UgZWxlbWVudHMgcHJvdmlkZWQgYnkgdGhlIEVjbGlwc2UgU0RLIGNvbXBvbmVudHMsIGluY2x1ZGluZwpkaWFsb2dzIGFuZCBlcnJvciBtZXNzYWdlcywgYXJlIGV4dGVybmFsaXplZC4gVGhlIEVuZ2xpc2ggc3RyaW5ncyBhcmUgcHJvdmlkZWQKYXMgdGhlIGRlZmF1bHQgcmVzb3VyY2UgYnVuZGxlcy48L3A+CjxwPkxhdGluLTEgbG9jYWxlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBFY2xpcHNlIFNESyBvbiBhbGwgb2YgdGhlIGFib3ZlCm9wZXJhdGluZyBlbnZpcm9ubWVudHM7IERCQ1MgbG9jYWxlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBFY2xpcHNlIFNESyBvbiB0aGUKV2luZG93cywgR1RLLCBhbmQgTW90aWYgd2luZG93IHN5c3RlbXM7IEJJREkgbG9jYWxlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZQpFY2xpcHNlIFNESyBvbmx5IG9uIFdpbmRvd3Mgb3BlcmF0aW5nIGVudmlyb25tZW50cy4KPHA+VGhlIEVjbGlwc2UgU0RLIHN1cHBvcnRzIEdCIDE4MDMwIChsZXZlbCAxKSwgdGhlIENoaW5lc2UgY29kZSBwYWdlIHN0YW5kYXJkLCAKICBvbiBXaW5kb3dzIFhQIGFuZCAyMDAwLCBhbmQgTGludXguIAo8cD5HZXJtYW4gYW5kIEphcGFuZXNlIGxvY2FsZXMgYXJlIHRlc3RlZC48L3A+CjxoND5CSURJIHN1cHBvcnQ8L2g0Pgo8cD48aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBTV1QgZnVsbHkgc3VwcG9ydHMgQklESSAKICBvbiBXaW5kb3dzIChvbmx5KS4gT24gTGludXggR1RLLCBTV1Qgc3VwcG9ydHMgZW50ZXJpbmcgYW5kIGRpc3BsYXlpbmcgQklESSB0ZXh0LiAKICBUaGUgd2lkZ2V0IG9yaWVudGF0aW9uIG9mIEpGYWNlIHdpbmRvd3MgZGVmYXVsdHMgYXBwcm9wcmlhdGVseSBpbiBCSURJIGxvY2FsZXMgCiAgb24gYWxsIHBsYXRmb3Jtcy48L3A+CjxwPlRoZSBFY2xpcHNlIFNESyBpcyBhIGRldmVsb3BtZW50IGVudmlyb25tZW50IHRhcmdldGVkIGF0IHRlY2huaWNhbCBwcm9mZXNzaW9uYWxzIAogIC0gbm90IGFuIGVuZCB1c2VyIGFwcGxpY2F0aW9uLiBIb3dldmVyLCB0aGUgRWNsaXBzZSBTREsgdG9vbHMgd2lsbCBwZXJtaXQgdGVjaG5pY2FsIAogIHByb2Zlc3Npb25hbHMgd2hvIGFyZSB3b3JraW5nIGluIEVuZ2xpc2ggdG8gYnVpbGQgSGVicmV3L0FyYWJpYyBlbmQgdXNlciBKYXZhIAogIHByb2dyYW1zIHdoaWNoIGFyZSB0aGVtc2VsdmVzIG5vdCBiYXNlZCBvbiB0aGUgRWNsaXBzZSBTREsuIFRoZSBCSURJIHN1cHBvcnQgCiAgaW4gdGhlIEVjbGlwc2UgU0RLIGFsbG93cyBhIEphdmEgcHJvZ3JhbW1lciB0byB3b3JrIHdpdGggQklESSBzdHJpbmdzLCBjb2RlIAogIGNvbW1lbnRzLCBldGMuIGJ1dCB0aGUgRWNsaXBzZSBTREsgaXRzZWxmIGlzIG5vdCBkZXNpZ25lZCB0byBiZSBsb2NhbGl6ZWQgZm9yIAogIEJJREkgbG9jYWxlcyBhbmQgaXRzIHdpZGdldCBvcmllbnRhdGlvbiBjYW4gbm90IGJlIGNoYW5nZWQuPC9wPgo8aDI+PGEgbmFtZT0iQ29tcGF0aWJpbGl0eSI+PC9hPkNvbXBhdGliaWxpdHkgd2l0aCBQcmV2aW91cyBSZWxlYXNlczwvaDI+CjxoMz5Db21wYXRpYmlsaXR5IG9mIFJlbGVhc2UgMy4xIHdpdGggMy4wPC9oMz4KPHA+RWNsaXBzZSAzLjEgd2lsbCBiZSBjb21wYXRpYmxlIHdpdGggRWNsaXBzZSAzLjAuPC9wPgo8cD48Yj5BUEkgQ29udHJhY3QgQ29tcGF0aWJpbGl0eTo8L2I+IEVjbGlwc2UgU0RLIDMuMSB3aWxsIGJlIHVwd2FyZHMKY29udHJhY3QtY29tcGF0aWJsZSB3aXRoIEVjbGlwc2UgU0RLIDMuMCBleGNlcHQgaW4gdGhvc2UgYXJlYXMgbm90ZWQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9kZXYuZWNsaXBzZS5vcmcvdmlld2N2cy9pbmRleC5jZ2kvfmNoZWNrb3V0fi9vcmcuZWNsaXBzZS5wbGF0Zm9ybS5kb2MuaXN2L3BvcnRpbmcvZWNsaXBzZV8zXzFfcG9ydGluZ19ndWlkZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxlbT5FY2xpcHNlCjMuMSBQbHVnLWluIE1pZ3JhdGlvbiBHdWlkZTwvZW0+PC9hPi4gUHJvZ3JhbXMgdGhhdCB1c2UgYWZmZWN0ZWQgQVBJcyBhbmQgZXh0ZW5zaW9uIHBvaW50cwp3aWxsIG5lZWQgdG8gYmUgcG9ydGVkIHRvIEVjbGlwc2UgU0RLIDMuMSBBUElzLiBEb3dud2FyZCBjb250cmFjdCBjb21wYXRpYmlsaXR5CmlzIG5vdCBzdXBwb3J0ZWQuIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGNvbXBsaWFuY2Ugd2l0aCBFY2xpcHNlIFNESyAzLjEKQVBJcyB3b3VsZCBlbnN1cmUgY29tcGxpYW5jZSB3aXRoIEVjbGlwc2UgU0RLIDMuMCBBUElzLiBSZWZlciB0byA8aT48YSBocmVmPSJodHRwOi8vZWNsaXBzZS5vcmcvZWNsaXBzZS9kZXZlbG9wbWVudC9qYXZhLWFwaS1ldm9sdXRpb24uaHRtbCI+RXZvbHZpbmcKSmF2YS1iYXNlZCBBUElzPC9hPjwvaT4gZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGUga2luZHMgb2YgQVBJIGNoYW5nZXMgdGhhdAptYWludGFpbiBjb250cmFjdCBjb21wYXRpYmlsaXR5LjwvcD4KPHA+PGI+QmluYXJ5IChwbHVnLWluKSBDb21wYXRpYmlsaXR5OjwvYj4gRWNsaXBzZSBTREsgMy4xIHdpbGwgYmUgdXB3YXJkcwpiaW5hcnktY29tcGF0aWJsZSB3aXRoIEVjbGlwc2UgU0RLIDMuMCBleGNlcHQgaW4gdGhvc2UgYXJlYXMgbm90ZWQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9kZXYuZWNsaXBzZS5vcmcvdmlld2N2cy9pbmRleC5jZ2kvfmNoZWNrb3V0fi9vcmcuZWNsaXBzZS5wbGF0Zm9ybS5kb2MuaXN2L3BvcnRpbmcvZWNsaXBzZV8zXzFfcG9ydGluZ19ndWlkZS5odG1sIiB0YXJnZXQ9Il90b3AiPjxlbT5FY2xpcHNlCjMuMSBQbHVnLWluIE1pZ3JhdGlvbiBHdWlkZTwvZW0+PC9hPi4gRG93bndhcmQgcGx1Zy1pbiBjb21wYXRpYmlsaXR5IGlzIG5vdCBzdXBwb3J0ZWQuClBsdWctaW5zIGZvciBFY2xpcHNlIFNESyAzLjEgd2lsbCBub3QgYmUgdXNhYmxlIGluIEVjbGlwc2UgU0RLIDMuMC4gUmVmZXIgdG8gPGk+PGEgaHJlZj0iaHR0cDovL2VjbGlwc2Uub3JnL2VjbGlwc2UvZGV2ZWxvcG1lbnQvamF2YS1hcGktZXZvbHV0aW9uLmh0bWwiPkV2b2x2aW5nCkphdmEtYmFzZWQgQVBJczwvYT48L2k+IGZvciBhIGRpc2N1c3Npb24gb2YgdGhlIGtpbmRzIG9mIEFQSSBjaGFuZ2VzIHRoYXQKbWFpbnRhaW4gYmluYXJ5IGNvbXBhdGliaWxpdHkuCjxwPjxiPlNvdXJjZSBDb21wYXRpYmlsaXR5OjwvYj4gRWNsaXBzZSBTREsgMy4xIHdpbGwgYmUgdXB3YXJkcwpzb3VyY2UtY29tcGF0aWJsZSB3aXRoIEVjbGlwc2UgU0RLIDMuMCBleGNlcHQgaW4gdGhlIGFyZWFzIG5vdGVkIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZGV2LmVjbGlwc2Uub3JnL3ZpZXdjdnMvaW5kZXguY2dpL35jaGVja291dH4vb3JnLmVjbGlwc2UucGxhdGZvcm0uZG9jLmlzdi9wb3J0aW5nL2VjbGlwc2VfM18xX3BvcnRpbmdfZ3VpZGUuaHRtbCIgdGFyZ2V0PSJfdG9wIj48ZW0+RWNsaXBzZQozLjEgUGx1Zy1pbiBNaWdyYXRpb24gR3VpZGU8L2VtPjwvYT4uIFRoaXMgbWVhbnMgdGhhdCBzb3VyY2UgZmlsZXMgd3JpdHRlbiB0byB1c2UgRWNsaXBzZQpTREsgMy4wIEFQSXMgbWlnaHQgc3VjY2Vzc2Z1bGx5IGNvbXBpbGUgYW5kIHJ1biBhZ2FpbnN0IEVjbGlwc2UgU0RLIDMuMSBBUElzLAphbHRob3VnaCB0aGlzIGlzIG5vdCBndWFyYW50ZWVkLiBEb3dud2FyZCBzb3VyY2UgY29tcGF0aWJpbGl0eSBpcyBub3Qgc3VwcG9ydGVkLgpJZiBzb3VyY2UgZmlsZXMgdXNlIG5ldyBFY2xpcHNlIFNESyBBUElzLCB0aGV5IHdpbGwgbm90IGJlIHVzYWJsZSB3aXRoIGFuCmVhcmxpZXIgdmVyc2lvbiBvZiB0aGUgRWNsaXBzZSBTREsuCjxwPjxiPldvcmtzcGFjZSBDb21wYXRpYmlsaXR5OjwvYj4gRWNsaXBzZSBTREsgMy4xIHdpbGwgYmUgdXB3YXJkcwp3b3Jrc3BhY2UtY29tcGF0aWJsZSB3aXRoIEVjbGlwc2UgU0RLIDMuMCB1bmxlc3Mgbm90ZWQuIFRoaXMgbWVhbnMgdGhhdAp3b3Jrc3BhY2VzIGFuZCBwcm9qZWN0cyBjcmVhdGVkIHdpdGggRWNsaXBzZSBTREsgMy4wIGNhbiBiZSBzdWNjZXNzZnVsbHkgb3BlbmVkCmJ5IEVjbGlwc2UgU0RLIDMuMSBhbmQgdXBncmFkZWQgdG8gYSAzLjEgd29ya3NwYWNlLiBUaGlzIGluY2x1ZGVzIGJvdGggaGlkZGVuCm1ldGFkYXRhLCB3aGljaCBpcyBsb2NhbGl6ZWQgdG8gYSBwYXJ0aWN1bGFyIHdvcmtzcGFjZSwgYXMgd2VsbCBhcyBtZXRhZGF0YQpmaWxlcyBmb3VuZCB3aXRoaW4gYSB3b3Jrc3BhY2UgcHJvamVjdCAoZS5nLiwgdGhlIC5wcm9qZWN0IGZpbGUpLCB3aGljaCBtYXkKcHJvcGFnYXRlIGJldHdlZW4gd29ya3NwYWNlcyB2aWEgZmlsZSBjb3B5aW5nIG9yIHRlYW0gcmVwb3NpdG9yaWVzLiBJbmRpdmlkdWFsCnBsdWctaW5zIGRldmVsb3BlZCBmb3IgRWNsaXBzZSBTREsgMy4xIHNob3VsZCBwcm92aWRlIHNpbWlsYXIgdXB3YXJkcwpjb21wYXRpYmlsaXR5IGZvciB0aGVpciBoaWRkZW4gYW5kIHZpc2libGUgd29ya3NwYWNlIG1ldGFkYXRhIGNyZWF0ZWQgYnkgZWFybGllcgp2ZXJzaW9uczsgMy4xIHBsdWctaW4gZGV2ZWxvcGVycyBhcmUgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIHRoYXQgdGhlaXIKcGx1Zy1pbnMgcmVjb2duaXplIDMuMSwgMy4wLCAyLjEsIGFuZCAyLjAgbWV0YWRhdGEgYW5kIHByb2Nlc3MgaXQgYXBwcm9wcmlhdGVseS4KVXNlciBpbnRlcmZhY2Ugc2Vzc2lvbiBzdGF0ZSBtYXkgYmUgZGlzY2FyZGVkIHdoZW4gYSB3b3Jrc3BhY2UgaXMgdXBncmFkZWQuCkRvd253YXJkIHdvcmtzcGFjZSBjb21wYXRpYmlsaXR5IGlzIG5vdCBzdXBwb3J0ZWQuIEEgd29ya3NwYWNlIGNyZWF0ZWQgKG9yCm9wZW5lZCkgYnkgYSBwcm9kdWN0IGJhc2VkIG9uIEVjbGlwc2UgMy4xIHdpbGwgYmUgdW51c2FibGUgd2l0aCBhIHByb2R1Y3QgYmFzZWQKYW4gZWFybGllciB2ZXJzaW9uIG9mIEVjbGlwc2UuIFZpc2libGUgbWV0YWRhdGEgZmlsZXMgY3JlYXRlZCAob3Igb3ZlcndyaXR0ZW4pCmJ5IEVjbGlwc2UgMy4xIHdpbGwgZ2VuZXJhbGx5IGJlIHVudXNhYmxlIHdpdGggZWFybGllciB2ZXJzaW9ucyBvZiBFY2xpcHNlLgo8cD48Yj5Ob24tY29tcGxpYW50IHVzYWdlIG9mIEFQSSdzPC9iPjogQWxsIG5vbi1BUEkgbWV0aG9kcyBhbmQgY2xhc3NlcywgYW5kCmNlcnRhaW5seSBldmVyeXRoaW5nIGluIGEgcGFja2FnZSB3aXRoICZxdW90O2ludGVybmFsJnF1b3Q7IGluIGl0cyBuYW1lLCBhcmUKY29uc2lkZXJlZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHdoaWNoIG1heSB2YXJ5IGJldHdlZW4gb3BlcmF0aW5nIGVudmlyb25tZW50CmFuZCBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuIENsaWVudCBwbHVnLWlucyB0aGF0IGRpcmVjdGx5IGRlcGVuZApvbiBhbnl0aGluZyBvdGhlciB0aGFuIHdoYXQgaXMgc3BlY2lmaWVkIGluIHRoZSBFY2xpcHNlIFNESyBBUEkgYXJlIGluaGVyZW50bHkKdW5zdXBwb3J0YWJsZSBhbmQgcmVjZWl2ZSBubyBndWFyYW50ZWVzIGFib3V0IGNvbXBhdGliaWxpdHkgd2l0aGluIGEgc2luZ2xlCnJlbGVhc2UgbXVjaCBsZXNzIHdpdGggYW4gZWFybGllciByZWxlYXNlcy4gUmVmZXIgdG8gPGk+PGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9hcnRpY2xlcy9BcnRpY2xlLUFQSSUyMHVzZS9lY2xpcHNlLWFwaS11c2FnZS1ydWxlcy5odG1sIj5Ib3cKdG8gVXNlIHRoZSBFY2xpcHNlIEFQSTwvYT48L2k+IGZvciBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gd3JpdGUgY29tcGxpYW50CnBsdWctaW5zLgo8aDI+VGhlbWVzIGFuZCBQcmlvcml0aWVzPC9oMj4KPHA+PHN0cm9uZz4gPC9zdHJvbmc+VGhlIGNoYW5nZXMgdW5kZXIgY29uc2lkZXJhdGlvbiBmb3IgdGhlIG5leHQgcmVsZWFzZSBvZiBFY2xpcHNlIAogIFBsYXRmb3JtLCBKRFQsIGFuZCBQREUgYWRkcmVzcyBtYWpvciB0aGVtZXMgaWRlbnRpZmllZCBieSB0aGUgRWNsaXBzZSBSZXF1aXJlbWVudHMgCiAgQ291bmNpbC4gKFRoZSB0aGVtZSBzeW5vcHNlcyBoZXJlIGFyZSBjdXQgZG93biB2ZXJzaW9ucyBvZiB0aGUgb25lcyBpbiBFY2xpcHNlIAogIFJlcXVpcmVtZW50cyBDb3VuY2lsOiBUaGVtZXMgYW5kIFByaW9yaXRpZXMgZGF0ZWQgRGVjLiAxNSwgMjAwNCAtIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2NvdW5jaWxzLzIwMDQxMjE1RWNsaXBzZVRQRmluYWxEcmFmdC5wZGYiPnBkZik8L2E+LiAKICBUaGUgdGhlbWVzIGFyZSBub3QgaW4gcHJpb3JpdHkgb3JkZXIuPC9wPgo8dWw+CiAgPGxpPjxzdHJvbmc+IFNjYWxpbmcgVXA8L3N0cm9uZz4gLSBUaGlzIHJlZmVycyB0byB0aGUgbmVlZCBmb3IgRWNsaXBzZSB0byBkZWFsIAogICAgd2l0aCBkZXZlbG9wbWVudCBhbmQgZGVwbG95bWVudCBvbiBhIGxhcmdlciBhbmQgbW9yZSBjb21wbGV4IHNjYWxlLiBJbmNyZWFzaW5nIAogICAgY29tcGxleGl0aWVzIGFyaXNlIGZyb20gbGFyZ2UgZGV2ZWxvcG1lbnQgdGVhbXMgZGlzdHJpYnV0ZWQgaW4gZGlmZmVyZW50IGxvY2F0aW9ucywgCiAgICBsYXJnZSBzb3VyY2UgY29kZSBiYXNlcyBhbmQgZnJhZ2lsZSBidWlsZCBlbnZpcm9ubWVudHMgdGhhdCBoYXZlIGJlZW4gZGV2ZWxvcGVkIAogICAgaW5jcmVtZW50YWxseSBvdmVyIHRpbWUsIHRoZSBkeW5hbWljIG5hdHVyZSBvZiBuZXcgc291cmNlIGNvZGUgYmFzZXMgYW5kIHRoZWlyIAogICAgaW50ZXJhY3Rpb24gd2l0aCBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQsIGFuZCBidWlsZCBlbnZpcm9ubWVudHMgaW52b2x2aW5nIAogICAgbWFueSBkaWZmZXJlbnQgdG9vbHMgYW5kIGJ1aWxkIHJ1bGVzLjwvbGk+CiAgPGxpPjxzdHJvbmc+IEVudGVycHJpc2UgUmVhZHk8L3N0cm9uZz4gLSBFY2xpcHNlIHNob3VsZCBiZSBpbXByb3ZlZCB0byBhbGxvdyAKICAgIGl0IHRvIGJlIGJldHRlciB1c2VkIGJ5IGxhcmdlIGRldmVsb3BtZW50IG9yZ2FuaXphdGlvbnMuPC9saT4KICA8bGk+PHN0cm9uZz4gRGVzaWduIGZvciBFeHRlbnNpYmlsaXR5OiBCZSBhIEJldHRlciBQbGF0Zm9ybTwvc3Ryb25nPiAtIFdpdGhpbiAKICAgIHRoZSBFY2xpcHNlIGNvbW11bml0eSwgbWFueSBkZXZlbG9wbWVudCBwcm9qZWN0cyBhcmUgZGVmaW5pbmcgbmV3IGRldmVsb3BtZW50IAogICAgcGxhdGZvcm1zIG9uIHRvcCBvZiB0aGUgRWNsaXBzZSBQbGF0Zm9ybS4gVGhlIEVjbGlwc2UgUGxhdGZvcm0gbXVzdCBldm9sdmUgCiAgICB0byBiZXR0ZXIgc3VwcG9ydCB0aGlzIHR5cGUgb2YgdXNhZ2UsIGluY2x1ZGluZyBwcm92aWRpbmcgbmV3IGNvbW1vbiBpbmZyYXN0cnVjdHVyZSAKICAgIGFuZCBhYnN0cmFjdGlvbiBsYXllcnMgbmVlZGVkIGJ5IHVwcGVyIHBsYXRmb3JtcyBhbmQgYWRkaW5nIEFQSXMgdG8gZXhwb3NlIAogICAgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBvbmx5IGF2YWlsYWJsZSBpbnRlcm5hbGx5IHNvIHRoYXQgdXBwZXIgcGxhdGZvcm1zIGNhbiAKICAgIG1vcmUgcmVhZGlseSBpbnRlZ3JhdGUgd2l0aCBhbmQgcmV1c2Ugd2hhdCdzIGFscmVhZHkgdGhlcmUuPC9saT4KICA8bGk+PGI+UmljaCBDbGllbnQgUGxhdGZvcm0gPC9iPi0gVGhlIEVjbGlwc2UgUkNQIGlzIGEgSmF2YS1iYXNlZCBhcHBsaWNhdGlvbiAKICAgIGZyYW1ld29yayBmb3IgdGhlIGRlc2t0b3AuIEJ1aWxkaW5nIG9uIHRoZSBFY2xpcHNlIHJ1bnRpbWUgYW5kIHRoZSBtb2R1bGFyIAogICAgcGx1Zy1pbiBzdG9yeSwgaXQgaXMgcG9zc2libGUgdG8gYnVpbGQgYXBwbGljYXRpb25zIHJhbmdpbmcgZnJvbSBjb21tYW5kIGxpbmUgCiAgICB0b29scyB0byBmZWF0dXJlLXJpY2ggYXBwbGljYXRpb25zIHRoYXQgdGFrZSBmdWxsIGFkdmFudGFnZSBvZiBTV1QncyBuYXRpdmUgCiAgICBwbGF0Zm9ybSBpbnRlZ3JhdGlvbiBhbmQgdGhlIG1hbnkgb3RoZXIgcmV1c2FibGUgY29tcG9uZW50cyB0aGF0IHRoZSBFY2xpcHNlIAogICAgcGxhdGZvcm0gcHJvdmlkZXMuIFRoaXMgdGhlbWUgaW5jbHVkZXMgd29yayB0byBlbmhhbmNlIHRoZSBSQ1AsIGFuZCB0byBwcm92aWRlIAogICAgUERFIHN1cHBvcnQgZm9yIGRldmVsb3BpbmcgYW5kIGRlcGxveWluZyBSQ1AtYmFzZWQgYXBwbGljYXRpb25zLjwvbGk+CiAgPGxpPjxiPlNpbXBsZSB0byBVc2U8L2I+IC0gVGhlIEVjbGlwc2UgcGxhdGZvcm0gbmVlZHMgdG8gbm90IG9ubHkgcHJvdmlkZSB0aGUgCiAgICBmZWF0dXJlcyB0aGF0IGFkdmFuY2VkIHVzZXJzIGRlbWFuZCwgYnV0IGFsc28gYmUgc29tZXRoaW5nIHRoYXQgbW9zdCB1c2VycyAKICAgIGZpbmQgc2ltcGxlIHRvIHVzZS4gVGhpcyB0aGVtZSBpbmNsdWRlcyBlYXNlLW9mLXVzZSByZXZpZXdzIG9mIGV4aXN0aW5nIGZlYXR1cmVzLCAKICAgIGFuZCB3b3JrIHRoYXQgaGVscHMgbWFrZSBFY2xpcHNlLWJhc2VkIHByb2R1Y3RzIHNpbXBsZSB0byB1c2UgZm9yIHVzZXJzIHdpdGggCiAgICB3aWRlbHktdmFyeWluZyBiYWNrZ3JvdW5kcyBhbmQgc2tpbGwgc2V0cy48L2xpPgogIDxsaT48Yj5BcHBlYWxpbmcgdG8gdGhlIEJyb2FkZXIgQ29tbXVuaXR5PC9iPiAtIFRoaXMgdGhlbWUgaW5jbHVkZXMgd29yayB0aGF0IAogICAgZ3Jvd3MgZGVlcGVyIHJvb3RzIGludG8gdGhlIHZhcmlvdXMgT1Mtc3BlY2lmaWMgY29tbXVuaXRpZXMsIHNwcmVhZHMgRWNsaXBzZSAKICAgIHRvIGFkZGl0aW9uYWwgb3BlcmF0aW5nIGVudmlyb25tZW50cywgYW5kIGJ1aWxkcyBicmlkZ2VzIHRvIG90aGVyIG9wZW4gc291cmNlIAogICAgY29tbXVuaXRpZXMgYW5kIHZlcnRpY2FsIG1hcmtldCBzZWdtZW50czwvbGk+CjwvdWw+CjxwPkluIGFkZGl0aW9uLCB0aGVyZSBhcmUgYSBmZXcgaW1wb3J0YW50IEVjbGlwc2UgUGxhdGZvcm0gaW1wcm92ZW1lbnRzIHRoYXQgZG8gCiAgbm90IG5hdHVyYWxseSBmaXQgaW50byBhbnkgb2YgdGhlIGFib3ZlIHRoZW1lcy48L3A+CkVhY2ggb2YgdGhlIDMgcHJvamVjdHMgdW5kZXIgdGhlIEVjbGlwc2UgdG9wLWxldmVsIHByb2plY3QgaXMgY292ZXJlZCBpbiBpdHMKb3duIHNlY3Rpb246Cjx1bD4KICA8bGk+PGEgaHJlZj0iI1BsYXRmb3JtIj5FY2xpcHNlIFBsYXRmb3JtIHByb2plY3Q8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI0pEVCI+SmF2YSBkZXZlbG9wbWVudCB0b29scyAoSkRUKSBwcm9qZWN0PC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNQREUiPlBsdWctaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgKFBERSkgcHJvamVjdDwvYT48L2xpPgo8L3VsPgo8cD5Gb3IgZWFjaCBwcm9qZWN0LCB0aGUgaXRlbXMgbGlzdGVkIHJlZmxlY3QgbmV3IGZlYXR1cmVzIG9mIEVjbGlwc2Ugb3IgYXJlYXMgCiAgd2hlcmUgZXhpc3RpbmcgZmVhdHVyZXMgd2lsbCBiZSBzaWduaWZpY2FudGx5IHJld29ya2VkLiBFYWNoIGl0ZW0gaW5kaWNhdGVzIAogIHRoZSBjb21wb25lbnRzIGxpa2VseSBhZmZlY3RlZCBieSB0aGF0IHdvcmsgaXRlbSAobWFueSBpdGVtcyBpbnZvbHZlIGNvb3JkaW5hdGVkIAogIGNoYW5nZXMgdG8gc2V2ZXJhbCBjb21wb25lbnRzKS4gTnVtYmVycyBpbiBwYXJlbnRoZXNlcyBsaW5rIHRvIGJ1Z3ppbGxhIHByb2JsZW0gCiAgcmVwb3J0cyBmb3IgdGhhdCBwbGFuIGl0ZW0uIAo8aDI+PGEgbmFtZT0iUGxhdGZvcm0iPkVjbGlwc2UgUGxhdGZvcm0gcHJvamVjdDwvYT48L2gyPgo8cD5UaGUgRWNsaXBzZSBQbGF0Zm9ybSBwcm92aWRlcyB0aGUgbW9zdCBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MuIFBsYW4KaXRlbXMgcmVmbGVjdCBuZXcgZmVhdHVyZXMgb2YgdGhlIEVjbGlwc2UgUGxhdGZvcm0sIG9yIGFyZWFzIHdoZXJlIGV4aXN0aW5nCmZlYXR1cmVzIHdpbGwgYmUgc2lnbmlmaWNhbnRseSByZXdvcmtlZC48L3A+CjxoND5Db21taXR0ZWQgSXRlbXMgKEVjbGlwc2UgUGxhdGZvcm0gcHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4gCiAgPHA+PHN0cm9uZz5NYXBwaW5nIGxvZ2ljYWwgdmlld3MgdG8gcGh5c2ljYWwgZmlsZXMgb24gZGlzay48L3N0cm9uZz4gSW4gc29tZSAKICAgIGNhc2VzLCBtdWx0aXBsZSBkaXN0aW5jdCBvYmplY3RzIGhhcHBlbiB0byBiZSBzdG9yZWQgaW4gYSBzaW5nbGUgZmlsZSwgbGlrZSAKICAgIGFuIGFyY2hpdmUuIENvbnZlcnNlbHksIGluIG90aGVyIGNhc2VzLCBzb21ldGhpbmcgdGhhdCBpcyBsb2dpY2FsbHkgYSBzaW5nbGUgCiAgICBvYmplY3QgaXMgc3RvcmVkIGFjcm9zcyBtdWx0aXBsZSBmaWxlcy4gVGhpcyBkaXNjcmVwYW5jeSBiZXR3ZWVuIGxvZ2ljYWwgYW5kIAogICAgcGh5c2ljYWwgY3JlYXRlcyBwcm9ibGVtcyBmb3IgY29tbW9uIG9wZXJhdGlvbnMgc3VjaCBhcyBzZWFyY2hpbmcsIGNvbXBhcmluZywgCiAgICBhbmQgdmVyc2lvbmluZywgd2hpY2ggbmVlZCB0byB3b3JrIGluIHRoZSBwaHlzaWNhbCByZWFsbS4gRWNsaXBzZSBzaG91bGQgc3VwcG9ydCAKICAgIHNvbWUgd2F5IG9mIG1hcHBpbmcgYmV0d2VlbiBhIGxvZ2ljYWwgdmlldyBhbmQgdGhlIHBoeXNpY2FsIG9yZ2FuaXphdGlvbiBvZiAKICAgIGZpbGVzIG9uIGRpc2suIFtQbGF0Zm9ybSBDb3JlLCBQbGF0Zm9ybSBVSSwgVGVhbV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDM5NiI+ODAzOTY8L2E+IAogICAgKSBbVGhlbWU6IERlc2lnbiBmb3IgRXh0ZW5zaWJpbGl0eV08ZW0+IDxpbWcgc3JjPSJvay5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IAogICAgV29yayBjb21wbGV0ZWQgKEZvbGxvdy1vbiB3b3JrIGlzIHBsYW5uZWQgZm9yIHRoZSBuZXh0IHJlbGVhc2UuKTwvZW0+PC9wPgogIDxwPjxzdHJvbmc+TGFyZ2Utc2NhbGUgd29ya3NwYWNlcy48L3N0cm9uZz4gU29tZSBsYXJnZSBjdXN0b21lcnMgaGF2ZSB3b3Jrc3BhY2VzIAogICAgY29udGFpbmluZyBzZXZlcmFsIGh1bmRyZWQgcHJvamVjdHMuIFNjb3BlZCBidWlsZHMgKGFkZGVkIGluIDMuMCkgd2VyZSBhIHN0ZXAgCiAgICBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uIHRvd2FyZHMgbWFraW5nIHRoZXNlIHdvcmthYmxlLiBFY2xpcHNlIG5lZWRzIHRvIHByb3ZpZGUgCiAgICBhcHByb3ByaWF0ZSBzdXBwb3J0IGZvciBsYXJnZSB3b3Jrc3BhY2VzIGFuZCB3b3JraW5nIHNldHMsIGFuZCBlbnN1cmUgdGhhdCAKICAgIGV2ZXJ5dGhpbmcgc2NhbGVzIHByb3Blcmx5LiBbUGxhdGZvcm0gQ29yZTsgUGxhdGZvcm0gVUk7IEpEVF0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD03MTEyOCI+NzExMjg8L2E+KSAKICAgIFtUaGVtZTogU2NhbGluZyBVcF0gPGVtPjxpbWcgc3JjPSJvay5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IAogICAgV29yayBjb21wbGV0ZWQ8L2VtPjwvcD4KICA8cD48Yj5Qcm9jZXNzIGltcHJvdmVtZW50cyB3cnQgcGVyZm9ybWFuY2UuPC9iPiBGb3IgMy4xIHdlIHNob3VsZCBnZXQgYSBmaXJtIAogICAgZ3JpcCBvbiBzcGVlZCBhbmQgc3BhY2UgcGVyZm9ybWFuY2UuIFRvIGRvIHRoaXMgd2Ugc2hvdWxkICgxKSBpZGVudGlmeSB3aGljaCAKICAgIGFzcGVjdHMgYXJlIGNyaXRpY2FsbHkgaW1wb3J0YW50IHBlcmZvcm1hbmNlLXdpc2U7ICgyKSBlc3RhYmxpc2ggYmVuY2htYXJrcyAKICAgIHRvIHF1YW50aWZ5IHBlcmZvcm1hbmNlOyBhbmQgKDMpIGxvb2sgYXQgd2F5cyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLiBCeSBpdHMgCiAgICBuYXR1cmUsIGl0J3MgaGFyZCB0byBzYXkgaW4gYWR2YW5jZSB3aGF0IGtpbmQgb2YgaW1wcm92ZW1lbnRzIHdlJ2xsIGJlIGFibGUgCiAgICB0byBhY2hpZXZlLCBtYWtpbmcgaXQgZGlmZmljdWx0IHRvIG1ha2UgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzIGEgcmVsZWFzZSAKICAgIGRlbGl2ZXJhYmxlLiBJbnN0ZWFkLCB3aGF0IHdlIG5lZWQgdG8gZG8gZm9yIDMuMSBpcyBjb21taXQgdG8gdHJhY2sgcGVyZm9ybWFuY2UgCiAgICBmcm9tIHRoaXMgcG9pbnQgb24uIFdlIHNob3VsZCBjYXJyeSBvdXQgcGVyZm9ybWFuY2UgcmV2aWV3cyAoMSkgYW5kIGNyZWF0ZSAKICAgIGJlbmNobWFya3MgKDIpIGZvciBldmVyeSBjb21wb25lbnQsIGFuZCBmb3IgYW55IGNyaXRpY2FsIGFzcGVjdHMgdGhhdCBzcGFuIAogICAgY29tcG9uZW50cy4gRXZlbiBpZiB3ZSBjYW5ub3QgZmluZCB3YXlzIHRvIG1ha2Ugc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgZ2FpbnMgCiAgICAoMyksIHRoZSBiZW5jaG1hcmtzIGFyZSBzdGlsbCBjcml0aWNhbCB0byBFY2xpcHNlJ3Mgc3VjY2VzcyB0byBwcmV2ZW50IGJhY2tzbGlkaW5nIAogICAgaW4gdGhlIGZ1dHVyZS4gVGhlIHdvcmsgaXRlbSBpcyB0byBpbXByb3ZlIG91ciBwcm9jZXNzIHdpdGggcmVzcGVjdCB0byBwZXJmb3JtYW5jZS4gCiAgICBUaGUgZGVsaXZlcmFibGVzIGFyZSB0aGUgYXV0b21hdGVkIHBlcmZvcm1hbmNlIHRlc3RzLCB0aGUgYnVpbGQgcHJvY2VzcyB0aGF0IAogICAgY29sbGVjdHMgYW5kIHB1Ymxpc2hlcyBwZXJmb3JtYW5jZSBkYXRhIGNvdmVyaW5nIGFsbCBjcml0aWNhbCBhc3BlY3RzIG9mIEVjbGlwc2UsIAogICAgYW5kIHRoZSBjb21taXRtZW50IHRvIGxldmVyYWdlIHRoaXMgZGF0YSB0byBtb25pdG9yIHNwZWVkIGFuZCBzcGFjZSBwZXJmb3JtYW5jZSAKICAgIGFzIHBhcnQgYW5kIHBhcmNlbCBvZiBkZXZlbG9waW5nIEVjbGlwc2UuIFtBbGwgRWNsaXBzZSBjb21wb25lbnRzXSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTcxMTIzIj43MTEyMzwvYT4pIAogICAgW1RoZW1lOiBTY2FsaW5nIFVwXSA8ZW0+PGltZyBzcmM9Im9rLmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gCiAgICBXb3JrIGNvbXBsZXRlZDwvZW0+PC9wPgogIDxwPjxiPk92ZXJoYXVsIHByZWZlcmVuY2VzLjwvYj4gVGhlIHdheSB0aGF0IEVjbGlwc2UgZGVhbHMgd2l0aCBwcmVmZXJlbmNlcyAKICAgIHNob3VsZCBiZSBpbXByb3ZlZC4gVGhlIHdvcmtiZW5jaCBwcmVzZW50YXRpb24gb2YgcHJlZmVyZW5jZXMgZ2VuZXJhbGx5IHVzZXMgCiAgICBhIGNvbXBvbmVudC1vcmllbnRlZCBoaWVyYXJjaHksIHdoaWNoIGlzIG5vdCBhbHdheXMgdGhlIGJlc3QgY2hvaWNlIGZvciB1c2Vycy4gCiAgICBUaGUgVUkgc2hvdWxkIHByZXNlbnQgcHJlZmVyZW5jZXMgaW4gc3VjaCBhIHdheSB0aGF0IHVzZXJzIGNhbiByZWFkaWx5IGRpc2NvdmVyIAogICAgdGhlbS4gU29tZSBwcmVmZXJlbmNlIHNldHRpbmdzIGhhdmUgc2NvcGVzIChlLmcuLCB3b3Jrc3BhY2Utd2lkZSB2cy4gcGVyIHByb2plY3QpLiAKICAgIFRoZSBVSSBzaG91bGQgaGVscCB0aGUgdXNlciB0byB2aXN1YWxpemUgdGhlc2Ugc2NvcGVzLiBGb3IgdGVhbS13aWRlIHVuaWZvcm1pdHksIAogICAgc29tZSBwcmVmZXJlbmNlcyBzZXR0aW5ncyAoZS5nLiwgY29tcGlsZXIgb3B0aW9ucykgbmVlZCB0byBiZSBzaGFyZWQgKG9yIGltcG9zZWQpIAogICAgYWNyb3NzIHRlYW1zLiBUaGUgVUkgc2hvdWxkIGFsc28gZmFjaWxpdGF0ZSB0aGlzLiBbUGxhdGZvcm0gQ29yZTsgUGxhdGZvcm0gCiAgICBVSTsgVGV4dDsgSkRUIFVJOyBKRFQgQ29yZV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD03MTEyNCI+NzExMjQ8L2E+KSAKICAgIFtUaGVtZTogU2ltcGxlIHRvIHVzZV0gPGVtPjxpbWcgc3JjPSJvay5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IAogICAgV29yayBjb21wbGV0ZWQ8L2VtPjwvcD4KICA8cD48Yj5JbXByb3ZlIGFjdGlvbiBjb250cmlidXRpb25zLjwvYj4gU2ltcGxpZnkgdGhlIHByb2dyYW1taW5nIG1vZGVsIGZvciBjb250cmlidXRpbmcgCiAgICBtZW51IGFuZCB0b29sYmFyIGl0ZW1zIHRvIHRoZSB3b3JrYmVuY2ggKGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIGFwcGVhcmFuY2UgCiAgICBhbmQgYmVoYXZpb3IpLiBJbXByb3ZlIGNvbnRyb2wgb3ZlciBtZW51IGRlZmluaXRpb24gYW5kIGl0ZW0gb3JkZXJpbmcuIEFsbG93IAogICAgdGhlIHNlbGVjdGVkIG9iamVjdCBpbiBhIHZpZXcgdG8gb3ZlcnJpZGUgYW4gYWN0aW9uLCBlLmcuLCBSZW5hbWUgbWVudSBpdGVtIAogICAgb24gSmF2YSBlbGVtZW50IGluIG5hdmlnYXRvciB2aWV3IHJlc29sdmVzIHRvIEpEVCByZWZhY3RvcmluZyByZW5hbWUgaW5zdGVhZCAKICAgIG9mIGJhc2ljIGZpbGUgcmVuYW1lLiBNYWludGFpbiBhIHN0cm9uZyBzZXBhcmF0aW9uIGJldHdlZW4gYSBjb21tYW5kLCBpdHMgCiAgICBoYW5kbGVyKHMpIGFuZCBpdHMgcGxhY2VtZW50KHMpIGluIHRoZSBVSS4gW1BsYXRmb3JtIFVJOyBQbGF0Zm9ybSBUZXh0OyBKRFQgCiAgICBVSV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNjk2OCI+MzY5Njg8L2E+KSAKICAgIFtUaGVtZTogRGVzaWduIGZvciBFeHRlbnNpYmlsaXR5XSA8ZW0+PGltZyBzcmM9Im9rLmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gCiAgICBXb3JrIGNvbXBsZXRlZDwvZW0+PC9wPgogIDxwPjxiPlNjYWxhYmlsaXR5LjwvYj4gSW4gY2FzZXMgd2hlcmUgZWl0aGVyIHRoZSB0YXJnZXQgbWFjaGluZSBpcyByZXNvdXJjZS1jb25zdHJhaW5lZCwgCiAgICBvciB0aGUgbnVtYmVyIG9mIHBsdWctaW5zIGlzIGxhcmdlLCBvciB0aGUgc2l6ZSBvZiB0aGUgd29ya3NwYWNlIGlzIGxhcmdlLCAKICAgIHRoZSBzY2FsYWJpbGl0eSBvZiB0aGUgRWNsaXBzZSBQbGF0Zm9ybSBpcyBlc3BlY2lhbGx5IGltcG9ydGFudC4gVGhlIHdvcmsgCiAgICBpbnZvbHZlcyBpZGVudGlmeWluZyBwcm9ibGVtYXRpYyBhcmVhcyBhbmQgbWFraW5nIGNoYW5nZXMgdG8gaW1wcm92ZSB0aGUgc2NhbGFiaWxpdHkuIAogICAgW0FsbCBjb21wb25lbnRzXSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTI5Ij44MDEyOTwvYT4pIAogICAgW1RoZW1lOiBTY2FsaW5nIFVwXSA8ZW0+PGltZyBzcmM9Im9rLmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gCiAgICBXb3JrIGNvbXBsZXRlZDwvZW0+PC9wPgogIDxwPjxiPkltcHJvdmUgY2FwYWJpbGl0aWVzLjwvYj4gRWNsaXBzZSAzLjAgaW50cm9kdWNlZCB0aGUgbm90aW9uIG9mIGNhcGFiaWxpdGllcyAKICAgIGFuZCBwcm92aWRlZCBjYXRlZ29yaWVzIGZvciBncm91cGluZyByZWxhdGVkIGNhcGFiaWxpdGllcy4gVGhlc2UgY2FwYWJpbGl0aWVzIAogICAgYXJlIHVzZWQgdG8gc2ltcGxpZnkgdGhlIFVJIGJ5IGhpZGluZyBmdW5jdGlvbmFsaXR5IHRoYXQgaXMgbm90IGN1cnJlbnRseSAKICAgIHJlbGV2YW50IHRvIHRoZSB1c2VyLiBUaGlzIHBsYW4gaXRlbSBpcyB0byBpbXByb3ZlIHRoaXMgc3VwcG9ydC4gVGhlIG1pc3NpbmcgCiAgICBmZWF0dXJlcyBjZW50ZXIgYXJvdW5kIGEgcHJvZHVjdCdzIGFiaWxpdHkgdG8gc3VjY2Vzc2Z1bGx5IHN1cHBvcnQgaGlnaGVyLWxldmVsIAogICAgbm90aW9ucyAobGlrZSB1c2VyIHJvbGVzKSBhbmQgY29udHJvbCB3aGVuIGFuZCBob3cgY2FwYWJpbGl0aWVzIGdldCBlbmFibGVkLiAKICAgIFtQbGF0Zm9ybSBVSV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDEzMCI+ODAxMzA8L2E+KSAKICAgIFtUaGVtZTogU2ltcGxlIHRvIHVzZV0gIDxlbT48aW1nIHNyYz0ib2suZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiAKICAgIFdvcmsgY29tcGxldGVkPC9lbT48L3A+CiAgPHA+PHN0cm9uZz5BbnQgZWRpdG9yIGltcHJvdmVtZW50cy48L3N0cm9uZz4gUHJvdmlkZSB0aGUgQW50IGVkaXRvciB3aXRoIGNvbXBhcmFibGUgCiAgICBmdW5jdGlvbmFsaXR5IHRvIHRoZSBKYXZhIGVkaXRvciB3aXRoIHJlZ2FyZCB0byBmb2xkaW5nLCBoeXBlcmxpbmsgbmF2aWdhdGlvbiwgCiAgICBvcGVuIGRlY2xhcmF0aW9uLCBtYXJraW5nIG9jY3VycmVuY2VzLCBzaG93IGV4dGVybmFsIGRvY3VtZW50YXRpb24sIHJlZmFjdG9yaW5nLCAKICAgIGV0Yy4gW0FudF0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDEzNSI+ODAxMzU8L2E+KSAKICAgIFtUaGVtZTogU2ltcGxlIHRvIHVzZV0gPGVtPjxpbWcgc3JjPSJvay5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IFdvcmsgY29tcGxldGVkPC9lbT48L3A+CiAgPHA+PHN0cm9uZz5CcmVha3BvaW50IGltcHJvdmVtZW50cy4gPC9zdHJvbmc+U2ltcGxpZnkgZGVidWdnaW5nIHdpdGggbG90cyBvZiAKICAgIGJyZWFrcG9pbnRzOiBwcm92aWRlIGRpZmZlcmVudCB3YXlzIHRvIGdyb3VwIGFuZCBvcmdhbml6ZSBicmVha3BvaW50cyBzbyB0aGF0IAogICAgdGhleSBjYW4gYmUgZW5hYmxlZC9kaXNhYmxlZCBhcyBhIHVuaXQuIFtEZWJ1Z10gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDEzNiI+ODAxMzY8L2E+KSAKICAgIFtUaGVtZTogU2NhbGluZyBVcF0gPGVtPjxpbWcgc3JjPSJvay5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IFdvcmsgY29tcGxldGVkPC9lbT48L3A+CiAgIAogIDxwPjxiPkdlbmVyYWxpemVkIHVuZG8gc3VwcG9ydC48L2I+IFRoZSBQbGF0Zm9ybSBzaG91bGQgZGVmaW5lIGEgY29tbW9uIGNvbW1hbmQgCiAgICBwcm9jZXNzaW5nIGZyYW1ld29yayBpbiBvcmRlciB0byBwcm92aWRlIGEgd29ya2JlbmNoLXdpZGUgdW5kby9yZWRvIGZhY2lsaXR5LiAKICAgIFtQbGF0Zm9ybSBVSTsgUGxhdGZvcm0gVGV4dDsgSkRUIFVJXSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTM3Ij44MDEzNzwvYT4pIAogICAgW1RoZW1lOiBEZXNpZ24gZm9yIEV4dGVuc2liaWxpdHldIDxpbWcgc3JjPSJvay5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IAogICAgV29yayBjb21wbGV0ZWQ8L2VtPjwvcD4KICA8cD48Yj5Db250ZW50IHR5cGVzLjwvYj4gVGhlIGFsZ29yaXRobSB0aGF0IHRoZSBFY2xpcHNlIFBsYXRmb3JtIHVzZXMgdG8gZGV0ZXJtaW5lIAogICAgd2hpY2ggZWRpdG9yIHRvIG9wZW4gaXMgYmFzZWQgb24gdGhlIGZpbGUncyBuYW1lIGFuZCBzaW1wbGUgbWF0Y2hpbmcgcnVsZXMuIAogICAgSW4gbWFueSBjYXNlcyBsaWtlIFhNTCBmaWxlcyB0aGlzIHNpbXBsZSBhcHByb2FjaCBpcyBub3Qgc3VmZmljaWVudC4gVGhlIFBsYXRmb3JtIAogICAgbmVlZHMgdG8gcHJvdmlkZSBhIG1vcmUgcm9idXN0IGFuZCBzY2FsYWJsZSBzb2x1dGlvbiBiYXNlZCBvbiB0aGUgY29udGVudCAKICAgIG9mIHRoZSByZXNvdXJjZS4gW1BsYXRmb3JtIFVJXSAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2NjgiPjM3NjY4PC9hPikgCiAgICBbVGhlbWU6IERlc2lnbiBmb3IgRXh0ZW5zaWJpbGl0eV0gPGltZyBzcmM9Im9rLmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gCiAgICBXb3JrIGNvbXBsZXRlZDwvZW0+PC9wPiAgPHA+PGI+QWRkIGNyaXRpY2FsIHBlcmZvcm1hbmNlIGluc3RydW1lbnRhdGlvbi48L2I+IEFkZCBzdXBwb3J0IGZvciBtb25pdG9yaW5nIAogICAgcGVyZm9ybWFuY2UgYW5kIGRldGVjdGluZyBwcm9ibGVtcyBpbiBwZXJmb3JtYW5jZSBjcml0aWNhbCBhc3BlY3RzIG9mIHRoZSAKICAgIEVjbGlwc2UgUGxhdGZvcm0uIFBvdGVudGlhbCBjcml0aWNhbCBhcmVhcyB0byBtb25pdG9yIGluY2x1ZGUgdGhlIHRpbWVzIHRvOiAKICAgIHN0YXJ0IHVwIGEgcGx1Zy1pbiwgb3BlbiBhbiBlZGl0b3IsIGRpc3BsYXkgYSBtZW51LCBzd2l0Y2ggcGVyc3BlY3RpdmVzLCBwcm9jZXNzIAogICAgYW4gU1dUIGV2ZW50LCBwcm9jZXNzIGEgcmVzb3VyY2UgY2hhbmdlIGV2ZW50LCBldGMuIFtQbGF0Zm9ybSBVSTsgUGxhdGZvcm0gCiAgICBDb3JlOyBTV1RdICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9ODAxMzgiPjgwMTM4PC9hPikgCiAgICBbVGhlbWU6IFNjYWxpbmcgdXBdIDxlbT48aW1nIHNyYz0ib2suZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBXb3JrIGNvbXBsZXRlZDwvZW0+PC9wPgogIDxwPjxiPkluaXRpYWwgdXNlciBleHBlcmllbmNlIGltcHJvdmVtZW50cy48L2I+IFN1cHBvcnQgZm9yIFdlbGNvbWUgY29udGVudCAKICAgIHdpbGwgYmUgZW5oYW5jZWQgYnkgYSBudW1iZXIgb2YgaW1wcm92ZW1lbnRzOiBhdXRob3Jpbmcgb2Ygd2VsY29tZSBjb250ZW50IAogICAgd2lsbCBiZSBtYWRlIGVhc2llciBieSBwcm92aWRpbmcgZWFzeSBwcmV2aWV3IG9mIHRoZSByZXN1bHRpbmcgcGFnZXMgd2hlbiAKICAgIGFsbCB0aGUgY29udGVudCBpcyBjb21wb3NlZDsgd2hlbmV2ZXIgcG9zc2libGUsIGhlbHAgZG9jdW1lbnRzIHdpbGwgYmUgc2hvd24gCiAgICBpbiBwbGFjZSB0byByZWR1Y2UgdGhlIG5lZWQgdG8gbGVhdmUgdGhlIFdlbGNvbWUgY29udGV4dDsgdHJhbnNpdGlvbiB0byB3b3JrYmVuY2ggCiAgICB3aWxsIGJlIG1hZGUgbGVzcyBhYnJ1cHQgd2l0aCB2YXJpb3VzIGRlZ3JlZXMgb2Ygd2VsY29tZSBzdGlsbCBwcmVzZW50IGZvciAKICAgIHRoZSB1c2VyIHRvIHJldHVybjsgc3VwcG9ydCBmb3Igd2VsY29tZSBpbiBzb3BoaXN0aWNhdGVkIHN0YWNrZWQgcHJvZHVjdHMgCiAgICB3aWxsIGJlIGVuaGFuY2VkLiBbUGxhdGZvcm0gVUldICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9ODAxMzkiPjgwMTM5PC9hPikgCiAgICBbVGhlbWU6IFNpbXBsZSB0byB1c2VdIDxlbT48aW1nIHNyYz0ib2suZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBXb3JrIAogICAgY29tcGxldGVkPC9lbT48L3A+CiAgPHA+PGI+SGVscCBzZWFyY2ggZW5oYW5jZW1lbnRzLjwvYj4gU2VhcmNoIHdpbGwgYmUgZW5oYW5jZWQgaW4gYSBudW1iZXIgb2Ygd2F5cy4gCiAgICBBZGQgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIHRoZSB3ZWIgaW4gYWRkaXRpb24gdG8gbG9jYWwgZG9jdW1lbnRhdGlvbiwgYW5kIAogICAgdG8gY29sbGF0ZSByZXN1bHRzIGZyb20gbXVsdGlwbGUgc2VhcmNoIGVuZ2luZXMgcXVlcmllZCBpbiBwYXJhbGxlbC4gSW1wcm92ZSAKICAgIHRoZSBwcmVzZW50YXRpb24gb2Ygc2VhcmNoIGJ5IGV4cG9zaW5nIEhlbHAgc2VhcmNoZXMgaW4gd2l6YXJkIFVJIHBhbmVzLCBhbmQgCiAgICBieSBtYWtpbmcgc2VhcmNoIHBlcnZhc2l2ZSBpbiB0aGUgd29ya2JlbmNoLiBbSGVscCwgUGxhdGZvcm0gVUksIFNlYXJjaF0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDEzMSI+ODAxMzE8L2E+KSAKICAgIFtUaGVtZTogRGVzaWduIGZvciBFeHRlbnNpYmlsaXR5OyBTaW1wbGUgdG8gVXNlXSA8ZW0+PGltZyBzcmM9Im9rLmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gCiAgICBXb3JrIGNvbXBsZXRlZDwvZW0+PC9wPgogIDxwPjxiPlBlcnZhc2l2ZSBjb250ZXh0IGhlbHAgcGFuZS48L2I+IFRoZSBQbGF0Zm9ybSBzaG91bGQgcHJvdmlkZSBhIHJldXNhYmxlIAogICAgcGFuZSB0byBzaG93IGNvbnRleHQgaGVscCBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgY29udGV4dC4gVGhlIHBhbmUgY2FuIGJlIAogICAgdXNlZCBpbiB2YXJpb3VzIHBsYWNlcywgaW5jbHVkaW5nIHZpZXdzIGFuZCB3aXphcmQgZGlhbG9ncy4gVGhlIHBhbmUgc2hvd3MgCiAgICBhZGRpdGlvbmFsIGhlbHAgb24gdGhlIGN1cnJlbnQgY29udGV4dCwgbGlua3MgdG8gaGVscCB0b3BpY3MgYWJvdXQgaXQsIGFuZCAKICAgIGEgcXVpY2sgc2VhcmNoIGVudHJ5LiBbSGVscCwgUGxhdGZvcm0gVUldICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9ODAxNDMiPjgwMTQzPC9hPikgCiAgICBbVGhlbWU6IFNpbXBsZSB0byB1c2VdIDxlbT48aW1nIHNyYz0ib2suZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBXb3JrIAogICAgY29tcGxldGVkPC9lbT48L3A+CiAgPHA+PHN0cm9uZz5SQ1AgcGVyZm9ybWFuY2UuPC9zdHJvbmc+IFN0YXJ0dXAgdGltZSBhbmQgdG90YWwgc3BhY2UgcmVxdWlyZW1lbnRzIAogICAgYXJlIGtleSBlbGVtZW50cyBpbiB0aGUgdmlhYmlsaXR5IG9mIEVjbGlwc2UgYXMgYW4gUkNQLiBJbiB0aGUgMy4xIGN5Y2xlIHdlIAogICAgd2lsbCBmb2N1cyBvbiB0aGVzZSB0d28gcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIHdpdGggdGhlIHBhcnRpY3VsYXIgZ29hbHMgCiAgICBvZjogcmVkdWNpbmcgc3BhY2UgcmVxdWlyZWQgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIChlLmcuLCBmcmFtZXdvcmsgc3RhdGUsIAogICAgZXh0ZW5zaW9uIHJlZ2lzdHJ5LCAuLi4pOyBzdHJlYW1saW5pbmcgdGhlIHN0YXJ0dXAgZXhlY3V0aW9uIHRvIGdldCB0byB0aGUgCiAgICBhcHBsaWNhdGlvbiBjb2RlIGZhc3RlcjsgYW5kIHByb3ZpZGluZyBiYXNpYyBzdXBwb3J0IGZvciBzcGFjZS1lZmZpY2llbnQgcmVzb3VyY2UgCiAgICBidW5kbGVzLiBbUGxhdGZvcm0gQ29yZV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE0NSI+ODAxNDU8L2E+KSAKICAgIFtUaGVtZTogUmljaCBDbGllbnQgUGxhdGZvcm07IFNjYWxpbmcgVXBdIDxlbT48aW1nIHNyYz0ib2suZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiAKICAgIFdvcmsgY29tcGxldGVkPC9lbT48L3A+CiAgPHA+PHN0cm9uZz5SQ1AgaW5mcmFzdHJ1Y3R1cmUuPC9zdHJvbmc+IFRoZXJlIGFyZSB2YXJpb3VzIGltcHJvdmVtZW50cyB0byB0aGUgCiAgICBSQ1AgaW5mcmFzdHJ1Y3R1cmUgdG8gYmV0dGVyIHN1cHBvcnQgYSB3aWRlbmluZyByYW5nZSBvZiB1c2VzLCBpbmNsdWRpbmc6IAogICAgaW1wcm92ZSBzdXBwb3J0IGZvciBwcmVjb25maWd1cmVkIGluc3RhbGxzOyBhbmQgaW1wcm92ZSBzdXBwb3J0IGZvciBBUEkgZGVjbGFyYXRpb24vY29uc3VtcHRpb24uIAogICAgQWRkaXRpb25hbGx5LCBhbGwgUkNQLXJlbGF0ZWQgcGx1Zy1pbnMgd2lsbCBiZSB1cGRhdGVkIHRvIHVzZSBvbmx5IGNsYXNzZXMgCiAgICBpbiB0aGUgSjJNRSBDREMvRm91bmRhdGlvbiBwcm9maWxlLiBbUGxhdGZvcm0gQ29yZTsgUGxhdGZvcm0gVUk7IFVwZGF0ZTsgSGVscF0gCiAgICAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTQ2Ij44MDE0NjwvYT4pIAogICAgW1RoZW1lOiBSaWNoIENsaWVudCBQbGF0Zm9ybV0gPGVtPjxpbWcgc3JjPSJvay5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IAogICAgV29yayBjb21wbGV0ZWQ8L2VtPjwvcD4KICA8cD48c3Ryb25nPk9TR2kuIDwvc3Ryb25nPkVjbGlwc2UgMy4xIHdpbGwgaW5jbHVkZSBhIGNvbXBsaWFudCBpbXBsZW1lbnRhdGlvbiAKICAgIG9mIHRoZSB1cGNvbWluZyBPU0dpIFBsYXRmb3JtIFI0IHNwZWNpZmljYXRpb24uIFdlIHdpbGwgYWxzbyBpbmNyZWFzZSB0aGUgCiAgICBmbGV4aWJpbGl0eSBvZiB0aGUgYWRhcHRvciBzdHJ1Y3R1cmUgb2YgdGhlIE9TR2kgZnJhbWV3b3JrIGluIG9yZGVyIHRvIG1ha2UgCiAgICBpdCBlYXNpZXIgdG8gdXNlIHRoZSBFY2xpcHNlIE9TR2kgaW1wbGVtZW50YXRpb24gb24gaXRzIG93bi4gW1BsYXRmb3JtIENvcmVdIAogICAgKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE0NyI+ODAxNDc8L2E+KSAKICAgIFtUaGVtZTogUmljaCBDbGllbnQgUGxhdGZvcm1dIDxlbT48aW1nIHNyYz0ib2suZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiAKICAgIFdvcmsgY29tcGxldGVkPC9lbT48L3A+CiAgPHA+PHN0cm9uZz5EeW5hbWljIHBsdWctaW5zLjwvc3Ryb25nPiBJbiBFY2xpcHNlIDMuMCBpdCBiZWNhbWUgcG9zc2libGUgdG8gaW5zdGFsbCAKICAgIGFuZCByZW1vdmUgcGx1Zy1pbnMgd2l0aG91dCByZXN0YXJ0aW5nIHRoZSBzeXN0ZW0uIEluIHByYWN0aWNlIHRoaXMgaXMgYSBjb29wZXJhdGl2ZSAKICAgIGVmZm9ydCByZXF1aXJpbmcgdGhlIHJlc3Qgb2YgdGhlIHBsdWctaW5zIGluIHRoZSBzeXN0ZW0gdG8gcmVzcG9uZCBjb3JyZWN0bHkgCiAgICB0byB0aGUgY2hhbmdlcy4gV29yayB3aWxsIGJlIGRvbmUgdG8gaW5jcmVhc2UgdGhlIHJ1bnRpbWUgc3VwcG9ydCBmb3IgbWFraW5nIAogICAgcGx1Zy1pbnMgZHluYW1pYy1hd2FyZSwgaW5jbHVkaW5nIGFubm90YXRpbmcgcGx1Zy1pbnMgd2l0aCB0aGVpciBkeW5hbWljIGNoYXJhY3RlcmlzdGljcywgCiAgICBjaGFuZ2luZyB0aGUgcmVnaXN0cnkgZGF0YSBzdHJ1Y3R1cmUgdG8gdXNlIGxpZ2h0LXdlaWdodCBoYW5kbGVzLCBhbmQgcHJvdmlkZSAKICAgIHN1cHBvcnQgZm9yIHRyYWNraW5nIGtleSBvYmplY3RzLiBPdGhlciBSQ1AgcGx1Zy1pbnMgd2lsbCBiZSB1cGRhdGVkIHRvIHVzZSAKICAgIHRoZXNlIG1lY2hhbmlzbXMuIEFsc28sIGRldmVsb3AgcmV1c2FibGUgY29kaW5nIHN0cnVjdHVyZXMgYW5kIGd1aWRlbGluZXMgCiAgICBmb3Igd3JpdGluZyBkeW5hbWljLWF3YXJlIHBsdWctaW5zLiBbUGxhdGZvcm0gQ29yZTsgUGxhdGZvcm0gVUk7IFBsYXRmb3JtIAogICAgVGV4dDsgVXBkYXRlOyBIZWxwXSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTQ4Ij44MDE0ODwvYT4pIAogICAgW1RoZW1lOiBSaWNoIENsaWVudCBQbGF0Zm9ybV0gPGVtPjxpbWcgc3JjPSJvay5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IAogICAgV29yayBjb21wbGV0ZWQ8L2VtPjwvcD4KICA8cD48c3Ryb25nPkpOTFAgU3VwcG9ydC48L3N0cm9uZz4gSXQgaXMgY29udmVuaWVudCB0byBiZSBhYmxlIHRvIGxhdW5jaCBhIEphdmEtYmFzZWQgCiAgICBhcHBsaWNhdGlvbiBmcm9tIGEgd2ViIGJyb3dzZXIuIFRoZXJlIGFyZSB2YXJpb3VzIHRlY2huaWNhbCBpc3N1ZXMgd2l0aCBsYXVuY2hpbmcgCiAgICBFY2xpcHNlIHVzaW5nIEphdmEgV2ViIFN0YXJ0IChKTkxQKS4gV2Ugd2lsbCBlbnN1cmUgdGhhdCB0aGUgc2ltcGxlIGZvcm1zIAogICAgb2YgSk5MUC1iYXNlZCBkZXBsb3ltZW50IGFyZSBzdXBwb3J0ZWQsIGFuZCB3aWxsIGludmVzdGlnYXRlIHN1cHBvcnRpbmcgbW9yZSAKICAgIGFkdmFuY2VkIHNvbHV0aW9ucyB0aGF0IGNvdWxkIHByb3ZpZGUgYSBoaWdoZXIgbGV2ZWwgb2YgaW50ZWdyYXRpb24gYmV0d2VlbiAKICAgIHRoZSBFY2xpcHNlIGNvbXBvbmVudCBtb2RlbCBhbmQgdGhhdCBvZiBKTkxQLiBbUGxhdGZvcm0gQ29yZV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE0OSI+ODAxNDk8L2E+KSAKICAgIFtUaGVtZTogUmljaCBDbGllbnQgUGxhdGZvcm1dIDxlbT48aW1nIHNyYz0ib2suZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiAKICAgIFdvcmsgY29tcGxldGVkPC9lbT48L3A+CiAgPHA+PHN0cm9uZz5TdXBwb3J0IGZvciBsYXVuY2hlciBicmFuZGluZy48L3N0cm9uZz4gQSBrZXkgc3RlcCBpbiBwcm9kdWNpbmcgYW4gCiAgICBSQ1AtYmFzZWQgcHJvZHVjdCBpcyBjcmVhdGluZyB0aGUgbGF1bmNoZXIgdGhlIHVzZXIgdXNlcyB0byBydW4gdGhlIHByb2R1Y3QuIAogICAgQXMgYSBtaW5pbXVtIGl0IHNob3VsZCBoYXZlIGEgcHJvZHVjdC1zcGVjaWZpYyBuYW1lIGFuZCBpY29uLiBDdXJyZW50bHksIGNvbnN0cnVjdGluZyAKICAgIHN1Y2ggYSBsYXVuY2hlciByZXF1aXJlcyBhIEMgY29tcGlsZXIgYW5kIG90aGVyIE9TLXNwZWNpZmljIHRvb2xzLiBXZSB3aWxsIAogICAgaW52ZXN0aWdhdGUgcHJvdmlkaW5nIHRlbXBsYXRlIGxhdW5jaGVycyB3aGljaCBjYW4gYmUgaW5zdGFudGlhdGVkIGJ5IFBERSAKICAgIHdoZW4gYXNzZW1ibGluZyBhIHByb2R1Y3QgZm9yIGEgZ2l2ZW4gT1MuIFtTV1Q7IFBERV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE1MCI+ODAxNTA8L2E+KSAKICAgIFtUaGVtZTogUmljaCBDbGllbnQgUGxhdGZvcm1dIDxlbT48aW1nIHNyYz0ib2suZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiAKICAgIFdvcmsgY29tcGxldGVkPC9lbT48L3A+CiAgPHA+PHN0cm9uZz5BbnQgZGVidWdnZXIuPC9zdHJvbmc+IFByb3ZpZGUgYW4gaW50ZWdyYXRlZCBkZWJ1Z2dlciBmb3IgQW50IGJ1aWxkIAogICAgZmlsZXMuIFtBbnRdICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9ODAxNTEiPjgwMTUxPC9hPikgCiAgICA8ZW0+PGltZyBzcmM9Im9rLmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gV29yayBjb21wbGV0ZWQ8L2VtPjwvcD4KICA8cD48c3Ryb25nPlByb3ZpZGUgYmV0dGVyIHRleHQgZWRpdG9yIHN1cHBvcnQgZm9yIFJDUC48L3N0cm9uZz4gVGhlIGZvbGxvd2luZyAKICAgIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkOiBwbHVnZ2FibGUgc3BlbGwgY2hlY2tpbmcsIFVSTCBkZXRlY3Rpb24gYW5kIGhhbmRsaW5nLiAKICAgIFtQbGF0Zm9ybSBUZXh0XSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTU0Ij44MDE1NDwvYT4pIAogICAgW1RoZW1lOiBSaWNoIENsaWVudCBQbGF0Zm9ybV0gPGVtPjxpbWcgc3JjPSJvay5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IAogICAgV29yayBjb21wbGV0ZWQ8L2VtPjwvcD4KCSAgCjwvYmxvY2txdW90ZT4KPGg0PlByb3Bvc2VkIEl0ZW1zIChFY2xpcHNlIFBsYXRmb3JtIHByb2plY3QpPC9oND4KPGJsb2NrcXVvdGU+IAogIDxwPjxpPk5vbmUgYXQgdGhpcyB0aW1lLjwvaT48L3A+CjwvYmxvY2txdW90ZT4KPGg0PkRlZmVycmVkIEl0ZW1zIChFY2xpcHNlIFBsYXRmb3JtIHByb2plY3QpPC9oND4KPGJsb2NrcXVvdGU+IAogIDxwPjxiPkVtYmVkZGluZyBlZGl0b3JzIGFuZCB2aWV3cy48L2I+IFZhcmlvdXMgcGx1Zy1pbnMgZW5jb3VudGVyIHByb2JsZW1zIHdoZW4gCiAgICB0cnlpbmcgdG8gZW1iZWQgZWRpdG9ycyBvciB2aWV3cyB3aXRoaW4gb3RoZXIgd29ya2JlbmNoIHBhcnRzLiBGb3IgZXhhbXBsZSwgCiAgICB0aGUgY3VycmVudCBjb21wYXJlIGluZnJhc3RydWN0dXJlIHJlcXVpcmVzIGEgcGx1Zy1pbiB0byBjcmVhdGUgYSBzZXBhcmF0ZSAKICAgIHRleHQgZWRpdG9yIGZvciB2aWV3aW5nIGNoYW5nZXMgYmV0d2VlbiBmaWxlcy4gVGhpcyBpcyBkdWUgdG8gYSBsaW1pdGF0aW9uIAogICAgaW4gdGhlIHdvcmtiZW5jaCB0aGF0IHByZXZlbnRzIGVkaXRvcnMgZnJvbSBiZWluZyBlbWJlZGRlZCBpbnNpZGUgdmlld3Mgb3IgCiAgICBvdGhlciBjb250cm9scy4gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGNvbXBhcmUgZWRpdG9yJ3MgbmVzdGVkIGVkaXRvcnMgZG9uJ3QgCiAgICBzdXBwb3J0IHRoZSBmdWxsIHNldCBvZiBmZWF0dXJlcyBwcm92aWRlZCBieSB0aGUgY29ycmVzcG9uZGluZyByZWFsIGNvbnRlbnQtdHlwZS1zcGVjaWZpYyAKICAgIGVkaXRvci4gVGhpcyByZXByZXNlbnRzIGEgbWFqb3IgdXNhYmlsaXR5IHByb2JsZW06IHRoZSB1c2VyIG11c3Qgc3dpdGNoIHRvIAogICAgdGhlIHJlYWwgZWRpdG9yIHRvIG1ha2UgY2hhbmdlcyBhbmQgdGhlbiByZXR1cm4gdG8gdGhlIGNvbXBhcmUgdmlldyB0byByZXZpZXcgCiAgICB0aGUgY2hhbmdlcy4gRWNsaXBzZSBzaG91bGQgYmUgbW9yZSBmbGV4aWJsZSBpbiB0aGUgd2F5cyB2YXJpb3VzIGVkaXRvcnMgY2FuIAogICAgYmUgdXNlZCBhbmQgcmV1c2VkLiBJbXByb3ZlIHRoZSBVSSBjb21wb25lbnQgbW9kZWwgdG8gc3VwcG9ydCBuZXN0aW5nIG9mIHdvcmtiZW5jaCAKICAgIHBhcnRzLiBSZWR1Y2UgY291cGxpbmcgb2YgcGFydHMgdG8gcGFydGljdWxhciBsb2NhdGlvbnMgaW4gdGhlIHdvcmtiZW5jaCwgCiAgICBhbGxvd2luZyBmb3IgbW9yZSBmbGV4aWJsZSBVSSBjb25maWd1cmF0aW9ucy4gW1BsYXRmb3JtIFVJLCBDb21wYXJlLCBQbGF0Zm9ybSAKICAgIFRleHRdICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjUiPjcxMTI1PC9hPikgCiAgICBbVGhlbWU6IERlc2lnbiBmb3IgRXh0ZW5zaWJpbGl0eV08L3A+CiAgPHA+PHN0cm9uZz5TZWN1cml0eS48L3N0cm9uZz4gU3VwcG9ydCBvbmdvaW5nIHdvcmsgaW4gRXF1aW5veCBpbnZlc3RpZ2F0aW5nIAogICAgc2VjdXJpdHkuIFRoaXMgY292ZXJzIGl0ZW1zIHN1Y2ggYXMgZW5hYmxpbmcgSmF2YSAyIHNlY3VyaXR5IG1hbmFnZXJzLCBwbHVnLWluIAogICAgc2lnbmluZywgdGVjaG5pcXVlcyBhbmQgbWVjaGFuaXNtcyBmb3IgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gYW5kIAogICAgY3JlZGVudGlhbCBzdG9yZXMgYXMgd2VsbCBhcyBlbmQtdG8tZW5kIHNlY3VyaXR5IG9mIHRoZSBQbGF0Zm9ybSBpbnN0YWxsLiAKICAgIFtQbGF0Zm9ybSBDb3JlOyBQbGF0Zm9ybSBVcGRhdGVdICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2OTIiPjM3NjkyPC9hPikgCiAgICBbVGhlbWU6IFJpY2ggQ2xpZW50IFBsYXRmb3JtXTwvcD4KICA8cD48Yj5UZWFtIHBvbGljaWVzLjwvYj4gVGVhbXMgb2YgZGV2ZWxvcGVycyB3b3JraW5nIHRvZ2V0aGVyIGhhdmUgc3BlY2lhbCBuZWVkcyAKICAgIGZvciBlbnN1cmluZyB0aGUgaW50ZWdyaXR5IGFuZCBjb25zaXN0ZW5jeSBvZiB0aGVpciBjb2xsZWN0aXZlIHdvcmsuIEZvciBleGFtcGxlLCAKICAgIHRoZXkgbWF5IGhhdmUgcG9saWNpZXMgZm9yIHRoaW5ncyBsaWtlIHNvdXJjZSBmaWxlIG5hbWluZywgY29kZSBmb3JtYXR0aW5nLCAKICAgIG9yIGJ1ZyByZXBvcnQgbnVtYmVyIGZvciBjaGFuZ2UgdHJhY2tpbmcuIEVjbGlwc2Ugc2hvdWxkIGVuYWJsZSB0b29scyB0aGF0IAogICAgaGVscCBhY2hpZXZlIHRoYXQgaW50ZWdyaXR5IGFuZCBjb25zaXN0ZW5jeS4gRWNsaXBzZSBzaG91bGQgcHJvdmlkZSBtb3JlIGFjY2VzcyAKICAgIHBvaW50cyBzbyB0aGF0IGNvbXBsZXggcG9saWNpZXMgY2FuIGJlIHN1Z2dlc3RlZCwgY2hlY2tlZCwgb3IgZW5mb3JjZWQuIFtQbGF0Zm9ybSAKICAgIENvcmU7IFRlYW1dICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjYiPjcxMTI2PC9hPikgCiAgICBbVGhlbWU6IEVudGVycHJpc2UgUmVhZHldPC9wPgogICAgCiAgPHA+PHN0cm9uZz5Qcm92aWRlIGJldHRlciB0ZXh0IGVkaXRvciBzdXBwb3J0IGZvciBSQ1AuPC9zdHJvbmc+IFRoZSBsaXN0IG9mIAogICAgZnVuY3Rpb25zIHRvIGFkZCB3aWxsIGdyb3cgb3ZlciB0aW1lLiBUaGUgaW5pdGlhbCBzZXQgaW5jbHVkZXM6IGFubm90YXRpb24gCiAgICBwcmVzZW50YXRpb24gYW5kIG5hdmlnYXRpb24sIHVzZXIgYXNzaWduZWQgY29sb3JzIGFuZCBmb250cywgZW5hYmxlIHNwZWxsIAogICAgY2hlY2tpbmcgaW4gbm9uLUphdmEgZWRpdG9ycywgdXNlciBkZWZpbmVkIHBlcnNpc3RlbnQgZm9sZGluZywgcXVpY2sgZGlmZiwgCiAgICB0ZW1wbGF0ZXMuIFtQbGF0Zm9ybSBUZXh0XSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTU0Ij44MDE1NDwvYT4pIAogICAgW1RoZW1lOiBSaWNoIENsaWVudCBQbGF0Zm9ybV0gPC9wPgogIDxwPjxiPk1hY3JvIHJlY29yZGluZyBhbmQgcGxheWJhY2suPC9iPiBBZGQgYSBtZWNoYW5pc20gZm9yIHJlY29yZGluZyBhIHNlcXVlbmNlIAogICAgb2YgdXNlciBpbnRlcmZhY2UgaW50ZXJhY3Rpb25zLCBzdG9yaW5nIHRoZW4gaW4gYSBmaWxlLCBhbmQgcGxheWluZyB0aGVtIGJhY2sgCiAgICBhdCBhIGxhdGVyIHRpbWUuIEZpbGUgcGxheWJhY2sgd2lsbCBiZSBtYWRlIGF2YWlsYWJsZSBhcyBhbiBhY3Rpb24gZm9yIHRoZSAKICAgIGJlbmVmaXQgb2YgY2hlYXQgc2hlZXRzIGFuZCBhY3RpdmUgaGVscC4gW1BsYXRmb3JtIFVJXSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTQwIj44MDE0MDwvYT4pIAogICAgW1RoZW1lOiBTaW1wbGUgdG8gdXNlXTwvcD4KICA8cD48Yj5JbXByb3ZlIGNoZWF0IHNoZWV0IGF1dGhvcmluZy48L2I+IFRoZSBnb2FsIGlzIHRvIGJldHRlciBzdXBwb3J0IGF1dGhvcmluZyAKICAgIG9mIGNoZWF0IHNoZWV0cyBieSBub24tcHJvZ3JhbW1lcnMgYnkgYWxsb3dpbmcgYWN0aW9ucyB0byBiZSByZWNvcmRlZCBhcyBtYWNyb3MgCiAgICB0byBoYW5kbGUgJ2RvIGl0IGZvciBtZScgc3RlcCBhY3Rpb25zLiBbUGxhdGZvcm0gVUldICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9ODAxNDIiPjgwMTQyPC9hPikgCiAgICBbVGhlbWU6IFNpbXBsZSB0byB1c2VdPC9wPgogIDxwPjxiPkVuaGFuY2VtZW50cyBmb3Igc3VwcG9ydGluZyBuZXcgdXNlcnMuPC9iPiBGb2xsb3dpbmcgb24gZnJvbSB0aGUgd29yayAKICAgIGRvbmUgaW4gRWNsaXBzZSAzLjAsIHdlIHdhbnQgdG8gZnVydGhlciBpbXByb3ZlIHRoZSB3YXkgRWNsaXBzZSBmZWVscyB0byBuZXcgCiAgICB1c2Vycy4gRm9yIGV4YW1wbGU6IHN1cHBvcnQgZm9yIHRlbXBsYXRlcyAodG8gY3JlYXRlIHByb2plY3RzIHRoYXQgZG8gc29tZXRoaW5nIAogICAgdXNlZnVsKSBhcyB3ZWxsIGFzIGEgc2V0IG9mIHRlbXBsYXRlcyB0aGF0IHNoaXAgd2l0aCBFY2xpcHNlIFNESzsgc3VwcG9ydCAKICAgIGZvciBzYW1wbGVzIChlbmhhbmNpbmcgc2FtcGxlIHN1cHBvcnQgc2hpcHBlZCBpbiAzLjAgYW5kIG1ha2luZyBpdCBBUEkpOyBzYWZlIAogICAgbW9kZSAoYSBjb25zdHJhaW5lZCBtb2RlIG9mIHJ1bm5pbmcgdGhlIHdvcmtiZW5jaCAtICd0cmFpbmluZyB3aGVlbHMnIC0gd2hlcmUgCiAgICBjYXBhYmlsaXRpZXMgYXJlIHJlc3RyaWN0ZWQgaW4gb3JkZXIgdG8gcHJldmVudCBjb21tb24gZWFybHkgbWlzdGFrZXMpOyBzaW1wbGVyIAogICAgd29ya3NwYWNlIGNob29zZXIgKHdoZXJlIGRvIHlvdSB3YW50IHlvdXIgd29yayBzYXZlZD8pOyBtb3JlIHVzYWJsZSBwZXJzcGVjdGl2ZSAKICAgIGNob29zZXIgd2l0aCBzaG9ydCBkZXNjcmlwdGlvbiwgYSBzbWFsbCBpbWFnZSB0aGF0IHNob3dzIHRoZSBnZW5lcmFsIHBlcnNwZWN0aXZlIAogICAgbGF5b3V0LCBwZXJzcGVjdGl2ZSBncm91cHMgYnkgcm9sZSBlLmcuIEphdmEgRGV2ZWxvcG1lbnQuIFtQbGF0Zm9ybSBVSV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDEzMiI+ODAxMzI8L2E+KSAKICAgIFtUaGVtZTogU2ltcGxlIHRvIHVzZV08L3A+CiAgPHA+PGI+SGVscCBzeXN0ZW0gaW1wcm92ZW1lbnRzLjwvYj4gQSBudW1iZXIgb2YgaW1wcm92ZW1lbnRzIHdvdWxkIGJlIGFkZGVkIAogICAgdG8gdGhlIGN1cnJlbnQgaGVscCBzeXN0ZW0gdG8gYWRkcmVzcyB0aGUgY3VycmVudCBwcm9ibGVtcyBhbmQgbWFrZSBoZWxwIG1vcmUgCiAgICB1c2VmdWwuIEltcHJvdmVtZW50cyBpbmNsdWRlOiBBbGxvdyBoZWxwIGNvbnRlbnQgdG8gYXBwZWFyIGVtYmVkZGVkIGluIHZhcmlvdXMgCiAgICBwbGFjZXMgb2YgdGhlIHdvcmtiZW5jaCAod2VsY29tZSwgY2hlYXQgc2hlZXRzLCBoZWxwIHZpZXcpIGFzIGEgd2F5IHRvIGF2b2lkIAogICAgcHJvYmxlbXMgY2F1c2VkIGJ5IGhhdmluZyBhbGwgSGVscCBwcmVzZW50ZWQgaW4gYSBzZXBhcmF0ZSB3aW5kb3cgKHRoaXMgd291bGQgCiAgICBhbHNvIGVudGFpbCBzb21lIHJld29yayBvZiB0aGUgVGFza3Mgc2VjdGlvbnMgb2YgdGhlIEVjbGlwc2UgaGVscCBib29rcyB0byAKICAgIG1ha2UgdGhlbSBzdWl0YWJsZSBmb3IgcHJlc2VudGF0aW9uIGluIGEgbmFycm93IHdpbmRvdykuJm5ic3A7UHJvdmlkZSBhIGhvb2sgCiAgICBmcm9tIGVycm9yIGRpYWxvZ3MgaW50byBoZWxwLiBbSGVscF0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE0MSI+ODAxNDE8L2E+KSAKICAgIFtUaGVtZTogRGVzaWduIGZvciBFeHRlbnNpYmlsaXR5OyBTaW1wbGUgdG8gVXNlXTwvcD4KPC9ibG9ja3F1b3RlPgo8aDQ+UmVqZWN0ZWQgSXRlbXMgKEVjbGlwc2UgUGxhdGZvcm0gcHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4gCiAgPHA+PHN0cm9uZz5Db25jdXJyZW5jeSBzdXBwb3J0IGZvciBkZWJ1Z2dlcnMuPC9zdHJvbmc+IE1hbnkgZGVidWcgYXJjaGl0ZWN0dXJlcyAKICAgIHJlcXVpcmUgY29tbXVuaWNhdGluZyB3aXRoIGEgcmVtb3RlIGRlYnVnIHRhcmdldC4gVGhlIGRlYnVnIHVzZXIgaW50ZXJmYWNlIAogICAgbmVlZHMgdG8gYmUgcm9idXN0IGluIHRoZSBmYWNlIG9mIGxhdGVudCBhbmQgdW5yZWxpYWJsZSBjb25uZWN0aW9ucy4gVG8gYXZvaWQgCiAgICBibG9ja2luZyB0aGUgdXNlciBpbnRlcmZhY2UsIHRoZSBkZWJ1ZyBwbGF0Zm9ybSB3aWxsIHVzZSBiYWNrZ3JvdW5kIGpvYnMgdG8gCiAgICBwZXJmb3JtIG9wZXJhdGlvbnMgYW5kIGNvbW11bmljYXRlIHdpdGggZGVidWdnZXJzLiBbUGxhdGZvcm0gRGVidWcsIEpEVCBEZWJ1Z10gCiAgICAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTUyIj44MDE1MjwvYT4pIAogICAgW1RoZW1lOiBEZXNpZ24gZm9yIEV4dGVuc2liaWxpdHldPC9wPgo8L2Jsb2NrcXVvdGU+CjxwPihFbmQgb2YgaXRlbXMgZm9yIEVjbGlwc2UgUGxhdGZvcm0gcHJvamVjdC4pPC9wPgo8aDI+PGEgbmFtZT0iSkRUIj5KYXZhIGRldmVsb3BtZW50IHRvb2xzIChKRFQpIHByb2plY3Q8L2E+PC9oMj4KPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9qZHQvaW5kZXguaHRtbCI+SmF2YSBkZXZlbG9wbWVudCB0b29sczwvYT4gKEpEVCkKaW1wbGVtZW50cyBhIEphdmEgSURFIGJhc2VkIG9uIHRoZSBFY2xpcHNlIFBsYXRmb3JtLiBUaGUgZm9sbG93aW5nIHdvcmsgaXRlbXMKcmVmbGVjdCBuZXcgZmVhdHVyZXMgb2YgSkRULCBvciBhcmVhcyB3aGVyZSBleGlzdGluZyBmZWF0dXJlcyB3aWxsIGJlCnNpZ25pZmljYW50bHkgcmV3b3JrZWQuPC9wPgo8aDQ+Q29tbWl0dGVkIEl0ZW1zIChFY2xpcHNlIEpEVCBwcm9qZWN0LCk8L2g0Pgo8YmxvY2txdW90ZT4gCiAgPHA+PGI+QWRkIHN1cHBvcnQgZm9yIEoyU0UgNSBmZWF0dXJlcy4gPC9iPkoyU0UgNSAoYWxzbyBrbm93biBhcyBKREsgMS41ICZxdW90O1RpZ2VyJnF1b3Q7KSAKICAgIHNoaXBwZWQgaW4gU2VwdGVtYmVyIDIwMDQuIFRoaXMgcmVsZWFzZSBjb250YWlucyA8YSBocmVmPSJodHRwOi8vZG93bmxvYWQub3JhY2xlLmNvbS9qYXZhc2UvMS41LjAvZG9jcy9ndWlkZS9sYW5ndWFnZS9pbmRleC5odG1sIj5uZXcgCiAgICBKYXZhIGxhbmd1YWdlIGZlYXR1cmVzPC9hPiwgaW5jbHVkaW5nIGdlbmVyaWMgdHlwZXMsIHR5cGVzYWZlIGVudW1lcmF0aW9ucywgCiAgICBhdXRvYm94aW5nLCBlbmhhbmNlZCBmb3IgbG9vcHMsIHN0YXRpYyBpbXBvcnRzLCB2YXJhcmdzLCBhbmQgYW5ub3RhdGlvbnMuIAogICAgU3VwcG9ydGluZyB0aGVzZSBuZXcgbGFuZ3VhZ2UgYW5kIGNvbXBpbGVyIGZlYXR1cmVzIHJlcXVpcmVzIG1ham9yIGNoYW5nZXMgCiAgICB0byB0aGUgRWNsaXBzZSBKYXZhIGNvbXBpbGVyLCB0byBKRFQgQ29yZSBBUElzLCB0byBKRFQgVUksIGFuZCB0byBKRFQgRGVidWcuIAogICAgRWNsaXBzZSBzaG91bGQgY29udGFpbiBmdWxsIHN1cHBvcnQgZm9yIGRldmVsb3BpbmcgSmF2YSBwcm9ncmFtcyB0aGF0IHVzZSAKICAgIHRoZSBuZXcgbGFuZ3VhZ2UgZmVhdHVyZXMsIGluY2x1ZGluZyBjb2RlIGFzc2lzdCwgcXVpY2sgZml4ZXMsIG5ldyB3aXphcmRzLCAKICAgIHNvdXJjZSBhY3Rpb25zLCBhbmQgcmVmYWN0b3JpbmdzLiBUaGVyZSBzaG91bGQgYWxzbyBiZSBxdWljayBhc3Npc3RzIGFuZCByZWZhY3RvcmluZ3MgCiAgICBmb3IgbWlncmF0aW5nIGV4aXN0aW5nIEphdmEgY29kZSB0byB0aGUgbmV3IGxhbmd1YWdlIGNvbnN0cnVjdHMsIGluY2x1ZGluZyAKICAgIGluZmVycmluZyB0eXBlIHBhcmFtZXRlcnMgZm9yIENvbGxlY3Rpb25zLCBhbmQgY29udmVydGluZyBzaW1wbGUgZm9yIGxvb3BzIAogICAgdG8gdXNlIHRoZSBlbmhhbmNlZCBmb3IgbG9vcC4gW0pEVCBDb3JlLCBKRFQgVUksIEpEVCBUZXh0LCBKRFQgRGVidWddICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNjkzOCI+MzY5Mzg8L2E+KSAKICAgIFtUaGVtZTogQXBwZWFsaW5nIHRvIHRoZSBCcm9hZGVyIENvbW11bml0eV0gPGVtPjxpbWcgc3JjPSJvay5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IFdvcmsgY29tcGxldGVkPC9lbT48L3A+CiAgPHA+PHN0cm9uZz5JbXByb3ZlZCBjb21waWxlciBjaGVja2luZy48L3N0cm9uZz4gQWRkIHN1cHBvcnQgZm9yIGRldGVjdGluZyByZWZlcmVuY2VzIAogICAgdG8gaW50ZXJuYWwgY2xhc3NlczsgYWRkIHdhcm5pbmdzIGFib3V0IG1pc3NpbmcgZGVjbGFyYXRpb25zIG9mIHNlcmlhbFZlcnNpb25VSUQsIAogICAgaW5jb21wbGV0ZSBlbnVtIHN3aXRjaGVzLCBib3hpbmcgYW5kIHVuYm94aW5nIGNvbnZlcnNpb25zLCBhbmQgdHlwZSBwYXJhbWV0ZXIgCiAgICBkZWNsYXJhdGlvbiBoaWRpbmcuIFtKRFQgQ29yZV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE1NSI+ODAxNTU8L2E+KSAKICAgIDxlbT48aW1nIHNyYz0ib2suZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBXb3JrIGNvbXBsZXRlZDwvZW0+PC9wPgogIDxwPjxzdHJvbmc+SW1wcm92ZSBzdXBwb3J0IGZvciBleHRlcm5hbGl6ZWQgc3RyaW5ncy48L3N0cm9uZz4gUHJvdmlkZSBhIHNlcGFyYXRlIAogICAgcHJvcGVydGllcyBmaWxlIGVkaXRvciwgYW5kIGVuaGFuY2UgdGhlIEphdmEgZWRpdG9yIHRvIGRpc3BsYXkgdGhlIHZhbHVlIG9mIAogICAgYW5kIG5hdmlnYXRlIGZyb20gYW4gTkxTIGtleSBpbiBjb2RlIGFuZCB0aGUgY29ycmVzcG9uZGluZyBlbnRyeSBpbiB0aGUgcHJvcGVydGllcyAKICAgIGZpbGUuIFtKRFQgVGV4dF0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE1NiI+ODAxNTY8L2E+KQoJPGVtPjxpbWcgc3JjPSJvay5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IFdvcmsgY29tcGxldGVkPC9lbT48L3A+CiAgPHA+PHN0cm9uZz5EZWJ1Z2dlciB1c2FiaWxpdHkgaW1wcm92ZW1lbnRzLjwvc3Ryb25nPiBJbnRlZ3JhdGUgbW9uaXRvciBsb2NrcyAKICAgIGludG8gdGhlIGRlYnVnIHZpZXcsIHNob3cgdmFyaWFibGUgdmFsdWVzIGlubGluZSwgc3VwcG9ydCBoeXBlcmxpbmstc3R5bGUgCiAgICBuYXZpZ2F0aW9uIGZyb20gdGhlIHRleHQgb2YgYW55IHN0YWNrIHRyYWNlLiBbSkRUIERlYnVnOyBQbGF0Zm9ybSBEZWJ1Z10gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE1OCI+ODAxNTg8L2E+KSAKICAgIFtUaGVtZTogU2ltcGxlIHRvIHVzZV0gPGVtPjxpbWcgc3JjPSJvay5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IFdvcmsgY29tcGxldGVkPC9lbT48L3A+CiAgPHA+PHN0cm9uZz5JbXBvcnQvZXhwb3J0IG9mIEFudCBidWlsZCBmaWxlcy48L3N0cm9uZz4gVXNpbmcgaW5mb3JtYXRpb24gZnJvbSAKICAgIHRoZSBqYXZhYyB0YXNrIGluIGFuIGV4aXN0aW5nIEFudCBidWlsZCBmaWxlLCBjcmVhdGUgYSBKYXZhIHByb2plY3QsIGltcG9ydCAKICAgIHRoZSBzb3VyY2UgZmlsZXMsIGFuZCBjb25maWd1cmUgdGhlIHByb2plY3QncyBidWlsZCBjbGFzcyBwYXRoLiBDb252ZXJzZWx5LCAKICAgIGZyb20gYW4gZXhpc3RpbmcgSmF2YSBwcm9qZWN0IGdlbmVyYXRlIGFuIEFudCBidWlsZCBmaWxlIHRoYXQgd2lsbCBjb21waWxlIAogICAgdGhlIHByb2plY3QncyBzb3VyY2UgZmlsZXMuIFtKRFQgVUk7IEFudF0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE1OSI+ODAxNTk8L2E+KSAKICAgIFtUaGVtZTogRW50ZXJwcmlzZSBSZWFkeV0gPGVtPjxpbWcgc3JjPSJvay5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IFdvcmsgY29tcGxldGVkPC9lbT48L3A+CiAgPHA+PGI+SW1wcm92ZSBwcm9ncmFtIG1hbmlwdWxhdGlvbiBpbmZyYXN0cnVjdHVyZS48L2I+IFBhcnRzIG9mIHRoZSBKYXZhIG1vZGVsIAogICAgYXJlIHN0aWxsIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIHRoZSBkZXByZWNhdGVkIEpET00sIGFuIGVhcmx5IHByZWN1cnNvciAKICAgIG9mIHRoZSBBU1QgZmFjaWxpdHkuIEpEVCBzaG91bGQgbW92ZSB0byBhbiBBU1QtYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIAogICAgSmF2YSBtb2RlbC4gQWxsIHNvdXJjZSBhbmQgcmVmYWN0b3Jpbmcgb3BlcmF0aW9ucyBzaG91bGQgYmUgcmV3cml0dGVuIHRvIHVzZSAKICAgIGNvbW1vbiBwcm9ncmFtIG1hbmlwdWxhdGlvbiBpbmZyYXN0cnVjdHVyZSBiYXNlZCBvbiBBU1RzIGFuZCBBU1QgcmV3cml0aW5nLiAKICAgIFRoZXJlIHNob3VsZCBhbHNvIGJlIGJldHRlciBzdXBwb3J0IGZvciBuYXZpZ2F0aW5nIGJldHdlZW4gYSBub2RlIGluIGFuIEFTVCAKICAgIChvciBhbiBBU1QgYmluZGluZykgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgaW4gdGhlIEphdmEgbW9kZWwgKHdoaWNoIAogICAgd291bGQgYmVuZWZpdCB2aWV3cyB0aGF0IHByZXNlbnQgdHlwZSBoaWVyYXJjaGllcykuIFtKRFQgQ29yZSwgSkRUIFVJXSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTcxMTI5Ij43MTEyOTwvYT4pIAogICAgPGVtPjxpbWcgc3JjPSJvay5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IFdvcmsgY29tcGxldGVkPC9lbT4gPC9wPgogIDxwPjxzdHJvbmc+RXhwb3NlIEphdmEgZWRpdG9yIGZ1bmN0aW9uYWxpdHkuPC9zdHJvbmc+IE1ha2UgZnVuY3Rpb25hbGl0eSBjdXJyZW50bHkgCiAgICBmb3VuZCBpbiB0aGUgSmF2YSBlZGl0b3IgYXZhaWxhYmxlIHRvIG90aGVyIHBsdWctaW5zIGJ5IHB1c2hpbmcgaXQgZG93biBpbnRvIAogICAgUGxhdGZvcm0gVGV4dC4gVGhlIGNvbW1pdGVkIHBvcnRpb24gaW5jbHVkZXMgaHlwZXJsaW5rIHN0eWxlIG5hdmlnYXRpb24gYW5kIAogICAgY29uZmlndXJhYmxlIHNwZWxsIGNoZWNraW5nIGVuZ2luZS4gW0pEVCBUZXh0OyBQbGF0Zm9ybSBUZXh0XSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTU3Ij44MDE1NzwvYT4pIAogICAgW1RoZW1lOiBEZXNpZ24gZm9yIEV4dGVuc2liaWxpdHldIDxlbT48aW1nIHNyYz0ib2suZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiAKICAgIFdvcmsgY29tcGxldGVkPC9lbT48L3A+CjwvYmxvY2txdW90ZT4KPGg0PlByb3Bvc2VkIEl0ZW1zIChFY2xpcHNlIEpEVCBwcm9qZWN0KTwvaDQ+CjxibG9ja3F1b3RlPiAKICA8cD48aT5Ob25lIGF0IHRoaXMgdGltZS48L2k+PC9wPgogIDwvYmxvY2txdW90ZT4KPGg0PkRlZmVycmVkIEl0ZW1zIChFY2xpcHNlIEpEVCBwcm9qZWN0KTwvaDQ+CjxibG9ja3F1b3RlPiAKICA8cD48c3Ryb25nPkV4cG9zZSBKYXZhIGVkaXRvciBmdW5jdGlvbmFsaXR5Ljwvc3Ryb25nPiBNYWtlIGZ1bmN0aW9uYWxpdHkgY3VycmVudGx5IAogICAgZm91bmQgaW4gdGhlIEphdmEgZWRpdG9yIGF2YWlsYWJsZSB0byBvdGhlciBwbHVnLWlucyBieSBwdXNoaW5nIGl0IGRvd24gaW50byAKICAgIFBsYXRmb3JtIFRleHQuIFRoZSBkZWZlcnJlZCBwb3J0aW9uIGluY2x1ZGVzIGFubm90YXRpb24gbmF2aWdhdGlvbiwgc3BlbGwgCiAgICBjaGVja2luZywgYW5kIHF1aWNrIGZpeCBpbmZyYXN0cnVjdHVyZS4gW0pEVCBUZXh0OyBQbGF0Zm9ybSBUZXh0XSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTgwMTU3Ij44MDE1NzwvYT4pIAogICAgW1RoZW1lOiBEZXNpZ24gZm9yIEV4dGVuc2liaWxpdHldPC9wPgogIDxwPjxiPkltcHJvdmUgcHJvZ3JhbSBtYW5pcHVsYXRpb24gaW5mcmFzdHJ1Y3R1cmUuPC9iPiBBU1QgY3JlYXRpb24gaW4gdGhlIHByZXNlbmNlIAogICAgb2Ygc3ludGF4IGVycm9ycyBzaG91bGQgYmUgaW1wcm92ZWQgdG8gaW5jbHVkZSBwYXJ0aWFsIGJpbmRpbmdzLiBUaGUgZ29hbCAKICAgIGlzIHRvIHN1cHBvcnQgc3RhdGVtZW50IGxldmVsIHJlY292ZXJ5IGluIHRoZSBBU1QgcGFyc2VyLiBUaGUgcGVyZm9ybWFuY2UgCiAgICBvZiBBU1QgY3JlYXRpb24gc2hvdWxkIGJlIGltcHJvdmVkIGJ5IHVzaW5nIGEgc3BlY2lhbCBwYXJzZXIgYW5kIGVsaW1pbmF0aW5nIAogICAgb25lIGludGVybmFsIGxheWVyIG9mIEFTVHMuIFtKRFQgQ29yZSwgSkRUIFVJXSAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTcxMTI5Ij43MTEyOTwvYT4pIAogIDwvcD4KICA8cD48c3Ryb25nPkxpYnJhcnkgcHJvamVjdHMuPC9zdHJvbmc+IEZvciBwbHVnLWluIGRldmVsb3BtZW50LCBQREUgZGlzdGluZ3Vpc2hlcyAKICAgIGJldHdlZW4gdGhlIHBsdWctaW4gcHJvamVjdHMgeW91IGFyZSB3b3JraW5nIG9uIChzb3VyY2UgcGx1Zy1pbiBwcm9qZWN0cykgCiAgICBhbmQgcGx1Zy1pbiBwcm9qZWN0cyB5b3UgYXJlIHdvcmtpbmcgd2l0aCBidXQgbm90IGFjdHVhbGx5IGNoYW5naW5nIChiaW5hcnkgCiAgICBwbHVnLWluIHByb2plY3RzKS4gTWFraW5nIHRoaXMgZGlzdGluY3Rpb24gYWZmb3J0cyB0aGUgdXNlciB0aGUgYmVuZWZpdHMgb2YgCiAgICBoYXZpbmcgZnVsbCBzb3VyY2UgZm9yIGV2ZXJ5dGhpbmcgaW4gdGhlaXIgd29ya3NwYWNlIHdoZXJlIGl0J3MgZWFzaWx5IGJyb3dzZWQgCiAgICBhbmQgc2VhcmNoZWQsIHdoaWxlIHBlcm1pdHRpbmcgZWNvbm9taWVzIGJlY2F1c2UgdGhlIGxhdHRlciBraW5kIG9mIHByb2plY3RzIAogICAgZG8gbm90IGFjdHVhbGx5IGhhdmUgdG8gYmUgKHJlKWNvbXBpbGVkLiBUaGlzIHdvcmsgaXRlbSBpcyB0byBzdXBwb3J0IGEgc2ltaWxhciAKICAgIG5vdGlvbiBvZiBsaWJyYXJ5IHByb2plY3QgZm9yIEphdmEgZGV2ZWxvcG1lbnQgaW4gZ2VuZXJhbC4gVGhlIHVzZXIgd291bGQgCiAgICBiZSBhYmxlIHRvIGZsYWcgYSBKYXZhIHByb2plY3QgYXMgYSBsaWJyYXJ5IHByb2plY3Q7IEpEVCB3b3VsZCBrbm93IGhvdyBwcmVzZW50IAogICAgbGlicmFyeSBwcm9qZWN0cyBhcHByb3ByaWF0ZWx5IGF0IHRoZSBVSSwgYW5kIGhvdyB0byBkZWFsIHdpdGggdGhlbSBtb3JlIGVmZmljaWVudGx5IAogICAgdXNpbmcgZ2VuZXJhdGVkIGJpbmFyaWVzLiBbSkRUIENvcmUsIEpEVCBVSV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE2MiI+ODAxNjI8L2E+KSAKICAgIFtUaGVtZTogRGVzaWduIGZvciBFeHRlbnNpYmlsaXR5XTwvcD4KICA8cD48c3Ryb25nPlNlYXJjaCBlbmhhbmNlbWVudHMuPC9zdHJvbmc+IFByb3ZpZGUgYWRkaXRpb25hbCBzZWFyY2ggcXVlcmllcyB0byAKICAgIGVuYWJsZSBtb3JlIHByZWNpc2Ugc2VhcmNoaW5nOyBlLmcuLCBmaW5kIHdoZXJlIGlzIGEgZXhjZXB0aW9uIHRocm93bi9jYXVnaHQsIAogICAgbWF0Y2ggYWdhaW5zdCBtZXRob2QgcGFyYW1ldGVycyBpbiByZWZlcmVuY2Ugc2VhcmNoZXMuIFtKRFQgQ29yZSwgSkRUIFVJXSAKICAgICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAiPjcxMTMwPC9hPik8L3A+CjwvYmxvY2txdW90ZT4KPHA+KEVuZCBvZiBpdGVtcyBmb3IgRWNsaXBzZSBKRFQgcHJvamVjdC4pCjxoMj48YSBuYW1lPSJQREUiPlBsdWctaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgKFBERSkgcHJvamVjdDwvYT48L2gyPgpUaGUgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wZGUvaW5kZXguaHRtbCI+cGx1Zy1pbiBkZXZlbG9wbWVudAplbnZpcm9ubWVudDwvYT4gIChQREUpIGNvbnNpc3RzIG9mJm5ic3A7dG9vbHMgZm9yIGRldmVsb3BpbmcgcGx1Zy1pbnMgZm9yIHRoZQpFY2xpcHNlIFBsYXRmb3JtLiBUaGUgZm9sbG93aW5nIHdvcmsgaXRlbXMgcmVmbGVjdCBuZXcgZmVhdHVyZXMgb2YgUERFLCBvciBhcmVhcwp3aGVyZSBleGlzdGluZyBmZWF0dXJlcyB3aWxsIGJlIHNpZ25pZmljYW50bHkgcmV3b3JrZWQuCjxoND5Db21taXR0ZWQgSXRlbXMgKEVjbGlwc2UgUERFIHByb2plY3QpPC9oND4KPGJsb2NrcXVvdGU+IAogIDxwPjxiPlJDUCBzdXBwb3J0LjwvYj4gUERFIGN1cnJlbnRseSBzdXBwb3J0cyBkZXZlbG9waW5nIEVjbGlwc2UgcGx1Zy1pbnMsIGJ1dCAKICAgIGlzIG5vdCBleHByZXNzbHkgZ2VhcmVkIGZvciB0aGUgc3BlY2lmaWMgbmVlZHMgb2YgY2xpZW50cyBkZXZlbG9waW5nIGFwcGxpY2F0aW9ucyAKICAgIGJhc2VkIG9uIHRoZSBSQ1AuIFBERSBzaG91bGQgZmFjaWxpdGF0ZSBkZXZlbG9waW5nIGFuZCBkZXBsb3lpbmcgUkNQLWJhc2VkIAogICAgYXBwbGljYXRpb25zLiAoPGEgaHJlZj0iaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTcxMTMxIj43MTEzMTwvYT4pIAogICAgW1RoZW1lOiBSaWNoIENsaWVudCBQbGF0Zm9ybV0gPGVtPjxpbWcgc3JjPSJvay5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IAogICAgV29yayBjb21wbGV0ZWQ8L2VtPjwvcD4KICA8cD48c3Ryb25nPk9TR2kgYnVuZGxlIG1hbmlmZXN0IHRvb2xpbmcuPC9zdHJvbmc+IEluIE9TR2ksIGJ1bmRsZXMgYXJlIGRlZmluZWQgCiAgICB1c2luZyBzdGFuZGFyZCBKQVIgbWFuaWZlc3QubWYgZmlsZXMuIFBERSAzLjAgY29udGFpbnMgYSBydWRpbWVudGFyeSBtYW5pZmVzdCAKICAgIGVkaXRvci4gVGhpcyBzdXBwb3J0IHdpbGwgYmUgZXhwYW5kZWQgaW4gMy4xIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgaW1wb3J0L2V4cG9ydCAKICAgIHBhY2thZ2UsIGluY3JlYXNlZCBkZXBlbmRlbmN5IHZhbGlkYXRpb24sIGFuZCB0b29scyBmb3IgJnF1b3Q7YnVuZGxpemluZyZxdW90OyAKICAgIHRoaXJkLXBhcnR5IG5vbi1FY2xpcHNlIEpBUnMuIFtQREVdICg8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9ODAxNjUiPjgwMTY1PC9hPikgCiAgICBbVGhlbWU6IFJpY2ggQ2xpZW50IFBsYXRmb3JtXSA8ZW0+PGltZyBzcmM9Im9rLmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gCiAgICBXb3JrIGNvbXBsZXRlZDwvZW0+PC9wPgo8L2Jsb2NrcXVvdGU+CjxoND5Qcm9wb3NlZCBJdGVtcyAoRWNsaXBzZSBQREUgcHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4gCiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4KICA8L2Jsb2NrcXVvdGU+CjxoND5EZWZlcnJlZCBJdGVtcyAoRWNsaXBzZSBQREUgcHJvamVjdCk8L2g0Pgo8YmxvY2txdW90ZT4KICA8cD48c3Ryb25nPkltcHJvdmVkIHRhcmdldCBzdXBwb3J0Ljwvc3Ryb25nPiBQREUgbWFuYWdlcyBhIG1vZGVsIG9mIHRoZSB0YXJnZXQgCiAgICBFY2xpcHNlIGZvciB3aGljaCB5b3UgYXJlIGRldmVsb3BpbmcuIFRoZXNlIHRhcmdldHMgbWF5IGJlIGNvbXBsZXggYW5kIGRpdmVyc2UgCiAgICBhbmQgc3dpdGNoaW5nIHRhcmdldHMgb3IgbGF1bmNoIGNvbmZpZ3VyYXRpb25zIGNhbiBiZSBleHBlbnNpdmUuIFBERSB3aWxsIAogICAgYmUgZXh0ZW5kZWQgdG8gc3VwcG9ydCBuYW1lZCB0YXJnZXRzLCBhbmQgYXV0b21hdGljYWxseSB0cmFjayBjaGFuZ2VzIHRvIHRoZSAKICAgIHdvcmtzcGFjZSBhZmZlY3RpbmcgdGFyZ2V0cy4gW1BERV0gKDxhIGhyZWY9Imh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD04MDE2MyI+ODAxNjM8L2E+KSAKICAgIFtUaGVtZTogUmljaCBDbGllbnQgUGxhdGZvcm1dPC9wPgo8L2Jsb2NrcXVvdGU+CjxwPihFbmQgb2YgaXRlbXMgZm9yIEVjbGlwc2UgUERFIHByb2plY3QuKTwvcD4KPC9ib2R5PgoKPC9odG1sPg==