The “gut-brain axis”
PGgyPktleSBUYWtlYXdheXM8L2gyPjx1bD48bGk+IENvbXByZWhlbmRpbmcgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgZGlnZXN0aXZlIHN5c3RlbSBhbmQgdGhlIGJyYWluPC9saT48bGk+IEVsZW1lbnRzIHRoYXQgY29uc3RpdHV0ZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gZ3V0IGFuZCBicmFpbjwvbGk+PGxpPiBQcm9jZXNzZXMgaW52b2x2ZWQgaW4gdGhlIGV4Y2hhbmdlIG9mIGluZm9ybWF0aW9uPC9saT48bGk+IEVmZmVjdHMgb24gcGh5c2ljYWwgYW5kIG1lbnRhbCBoZWFsdGg8L2xpPjxsaT4gSW1iYWxhbmNlIHdpdGhpbiB0aGUgZ3V0LWJyYWluIHJlbGF0aW9uc2hpcDwvbGk+PGxpPiBUcmVhdG1lbnQgbWV0aG9kcyB0byByZXN0b3JlIGJhbGFuY2UgYW5kIGhlYWx0aDwvbGk+PC91bD48aDI+VGhlICJndXQtYnJhaW4gQXhpcyIgfCBVbmRlcnN0YW5kaW5nIHRoZSBHdXQtQnJhaW4gQXhpczwvaDI+PHA+VGhlICJndXQtYnJhaW4gYXhpcyIgcmVwcmVzZW50cyBhIGNvbXBsZXggY29tbXVuaWNhdGlvbiBuZXR3b3JrIGJldHdlZW4gdGhlIGdhc3Ryb2ludGVzdGluYWwgc3lzdGVtIGFuZCB0aGUgY2VudHJhbCBuZXJ2b3VzIHN5c3RlbSwgaGlnaGxpZ2h0aW5nIHRoZSBkeW5hbWljIGludGVycGxheSBvZiBndXQgaGVhbHRoIGFuZCBtZW50YWwgd2VsbC1iZWluZy4gVGhpcyBpbnRyaWNhdGUgcmVsYXRpb25zaGlwIGlzIG9mdGVuIHJlZmVycmVkIHRvIGFzIHRoZSBicmFpbi1ndXQtbWljcm9iaW9tZSBheGlzLCBzaG93Y2FzaW5nIGhvdyBndXQgbWljcm9iaW90YSBpbmZsdWVuY2UgYnJhaW4gZnVuY3Rpb24gYW5kIGJlaGF2aW9yLiBVbmRlcnN0YW5kaW5nIHRoZSBtZWNoYW5pc21zIHdpdGhpbiB0aGUgZ3V0LWJyYWluIGF4aXMgY2FuIHNoZWQgbGlnaHQgb24gZGlzb3JkZXJzIG9mIGd1dC1icmFpbiBpbnRlcmFjdGlvbiwgcmV2ZWFsaW5nIGhvdyBpbWJhbGFuY2VzIGluIHRoZSBtaWNyb2Jpb3RhLWd1dC1icmFpbiBheGlzIG1heSBjb250cmlidXRlIHRvIHZhcmlvdXMgbmV1cm9sb2dpY2FsIGFuZCBwc3ljaG9sb2dpY2FsIGNvbmRpdGlvbnMuIFJlc2VhcmNoIGNvbnRpbnVlcyB0byB1bmNvdmVyIHRoZSBwYXRod2F5cyB0aHJvdWdoIHdoaWNoIHNpZ25hbHMgdHJhdmVsIGFsb25nIHRoZSBtaWNyb2Jpb3RhLWd1dCBicmFpbiBheGlzLCBpbnRlZ3JhdGluZyBwaHlzaW9sb2dpY2FsIHJlc3BvbnNlcyBhbmQgY29nbml0aXZlIHByb2Nlc3Nlcy4gQXMgc2NpZW5jZSBkZWx2ZXMgZGVlcGVyIGludG8gdGhlc2UgYnJhaW4tZ3V0IGludGVyYWN0aW9ucywgdGhlIHBvdGVudGlhbCBmb3IgaW5ub3ZhdGl2ZSB0aGVyYXBldXRpYyBhcHByb2FjaGVzIGVtZXJnZXMsIGFpbWluZyB0byByZXN0b3JlIGhhcm1vbnkgd2l0aGluIHRoZSBicmFpbi1ndXQgYXhpcy48L3A+CjxoMz5UaGUgImd1dC1icmFpbiBheGlzIiB8IERlZmluaXRpb24gb2YgdGhlIEd1dC1CcmFpbiBBeGlzPC9oMz48cD5UaGUgImd1dC1icmFpbiBheGlzIiByZWZlcnMgdG8gdGhlIGNvbXBsZXggbmV0d29yayBvZiBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIGh1bWFuIGd1dCBhbmQgYnJhaW4uIFRoaXMgaW50ZXJhY3Rpb24gaW52b2x2ZXMgdmFyaW91cyBwYXRod2F5cywgaW5jbHVkaW5nIG5ldXJhbCwgaG9ybW9uYWwsIGFuZCBpbW11bm9sb2dpY2FsIHNpZ25hbHMuIFRoZSBndXQgbWljcm9iaW90YSBwbGF5cyBhIHNpZ25pZmljYW50IHJvbGUgaW4gdGhpcyBjb21tdW5pY2F0aW9uIGJ5IGluZmx1ZW5jaW5nIGJyYWluIGZ1bmN0aW9uIGFuZCBkZXZlbG9wbWVudC4gQnJhaW4gcmVzZWFyY2ggaGFzIGluY3JlYXNpbmdseSBmb2N1c2VkIG9uIGhvdyBndXQgaGVhbHRoIGNhbiBpbXBhY3QgY29nbml0aXZlIHByb2Nlc3NlcyBhbmQgZW1vdGlvbmFsIHJlZ3VsYXRpb24sIGhpZ2hsaWdodGluZyB0aGUgaW1wb3J0YW5jZSBvZiB0aGlzIGJpZGlyZWN0aW9uYWwgcmVsYXRpb25zaGlwLjxici8+PGJyLz5HdXQtYnJhaW4gY29tbXVuaWNhdGlvbiBpcyBlc3NlbnRpYWwgZm9yIG1haW50YWluaW5nIG92ZXJhbGwgd2VsbC1iZWluZy4gU2lnbmFscyBvcmlnaW5hdGluZyBpbiB0aGUgaHVtYW4gZ3V0IGNhbiBhZmZlY3QgYnJhaW4gdGlzc3VlIGFuZCBmdW5jdGlvbiwgc2hhcGluZyBiZWhhdmlvcnMgYW5kIGVtb3Rpb25hbCBzdGF0ZXMuIE1hbnkgcGVvcGxlIGV4cGVyaWVuY2Ugd2hhdCBpcyBvZnRlbiByZWZlcnJlZCB0byBhcyAiZ3V0IGZlZWxpbmciIG9yICJndXQgaW5zdGluY3RzLCIgdW5kZXJzY29yaW5nIHRoZSBwcm9mb3VuZCBpbXBhY3Qgb2YgZ3V0IGhlYWx0aCBvbiBtZW50YWwgcHJvY2Vzc2VzLiBBcyBicmFpbiBkZXZlbG9wbWVudHMgY29udGludWUgdG8gYmUgZXhwbG9yZWQsIHVuZGVyc3RhbmRpbmcgdGhlIGludHJpY2FjaWVzIG9mIHRoZSAiZ3V0LWJyYWluIGF4aXMiIGJlY29tZXMgY3J1Y2lhbCBmb3IgYWR2YW5jaW5nIGFwcHJvYWNoZXMgdG8gbWVudGFsIGhlYWx0aCBhbmQgbmV1cm9sb2dpY2FsIGRpc29yZGVycy48L3A+CjxoMz5IaXN0b3JpY2FsIFBlcnNwZWN0aXZlcyBvbiBHdXQtQnJhaW4gSW50ZXJhY3Rpb25zPC9oMz48cD5UaGUgY29uY2VwdCBvZiB0aGUgImd1dC1icmFpbiBheGlzIiBoYXMgZXZvbHZlZCBzaWduaWZpY2FudGx5IG92ZXIgdGhlIHllYXJzLCBiZWdpbm5pbmcgZnJvbSBhbmNpZW50IGJlbGllZnMgaW4gdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgZ3V0IGFuZCBlbW90aW9ucywgb2Z0ZW4gcmVmZXJyZWQgdG8gYXMgImd1dCBmZWVsaW5ncy4iIEVhcmx5IHJlc2VhcmNoIGluZGljYXRlZCB0aGF0IHRoZSBndXQgZW52aXJvbm1lbnQgcGxheXMgYSBjcnVjaWFsIHJvbGUgaW4gaW5mbHVlbmNpbmcgYm90aCB0aGUgYnJhaW5zdGVtIGFuZCBoaWdoZXIgYnJhaW4gZnVuY3Rpb25zLiBEaXNjb3ZlcmllcyBzdXJyb3VuZGluZyBndXQgaG9ybW9uZXMgZnVydGhlciBlbmhhbmNlZCBvdXIgdW5kZXJzdGFuZGluZywgcmV2ZWFsaW5nIGhvdyB0aGVzZSBiaW9jaGVtaWNhbCBtZXNzZW5nZXJzIGZhY2lsaXRhdGUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBndXQgYW5kIHRoZSBuZXJ2b3VzIHN5c3RlbSwgdWx0aW1hdGVseSBpbXBhY3RpbmcgYnJhaW4gZGV2ZWxvcG1lbnQgYW5kIGZ1bmN0aW9uLjxici8+PGJyLz5JbiBtb3JlIHJlY2VudCB0aW1lcywgYWR2YW5jZXMgaW4gbmV1cm9zY2llbmNlIGhhdmUgbGVkIHRvIHRoZSBleHBsb3JhdGlvbiBvZiBicmFpbiBvcmdhbm9pZHMsIHByb3ZpZGluZyBpbnNpZ2h0cyBpbnRvIHRoZSBtb2xlY3VsYXIgbWVjaGFuaXNtcyB1bmRlcnBpbm5pbmcgdGhlICJndXQtYnJhaW4gYXhpcy4iIFN0dWRpZXMgaGF2ZSBzaG93biB0aGF0IGJyYWluLWRlcml2ZWQgbmV1cm90cm9waGljIGZhY3RvciAoQkRORikgcHJvZHVjZWQgaW4gdGhlIGd1dCBpbmZsdWVuY2VzIG5ldXJvbmFsIGhlYWx0aCBhbmQgcGxhc3RpY2l0eS4gUmVzZWFyY2ggdXRpbGl6aW5nIG1vdXNlIGJyYWluIG1vZGVscyBoYXMgdW5jb3ZlcmVkIHRoZSBzaWduaWZpY2FudCByb2xlIG9mIGd1dCBiYXJyaWVyIGZ1bmN0aW9uIGluIG1haW50YWluaW5nIG5vdCBqdXN0IGRpZ2VzdGl2ZSBoZWFsdGggYnV0IG92ZXJhbGwgYnJhaW4gaGVhbHRoLCBlc3RhYmxpc2hpbmcgYSB2aXRhbCBsaW5rIGJldHdlZW4gZ3V0IGR5c2Jpb3NpcyBhbmQgbmV1cm9sb2dpY2FsIG91dGNvbWVzLjwvcD48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWJvcmRlcmVkIG1iLTQgYXJ0aWNsZS1jYXJkLXRleHQiPgogIDx0cj4KICAgIDx0aD5IaXN0b3JpY2FsIFBlcmlvZDwvdGg+CiAgICA8dGg+S2V5IERpc2NvdmVyaWVzPC90aD4KICAgIDx0aD5Ob3RhYmxlIFJlc2VhcmNoZXJzPC90aD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5BbmNpZW50IENpdmlsaXphdGlvbnM8L3RkPgogICAgPHRkPkJlbGllZnMgaW4gZ3V0LWJyYWluIGNvbm5lY3Rpb24gKCJndXQgZmVlbGluZ3MiKTwvdGQ+CiAgICA8dGQ+VmFyaW91cyBhbmNpZW50IHBoaWxvc29waGVyczwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+MTl0aCBDZW50dXJ5PC90ZD4KICAgIDx0ZD5JZGVudGlmeWluZyBndXQgaG9ybW9uZXMgYW5kIHRoZWlyIGltcGFjdCBvbiB0aGUgYnJhaW48L3RkPgogICAgPHRkPkNsYXVkZSBCZXJuYXJkPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5MYXRlIDIwdGggQ2VudHVyeTwvdGQ+CiAgICA8dGQ+RXhwbG9yYXRpb24gb2YgdGhlIGd1dC1icmFpbiBheGlzIGFuZCBCRE5GPC90ZD4KICAgIDx0ZD5EYXZpZCBHLiBTbWl0aCwgZXQgYWwuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD4yMXN0IENlbnR1cnk8L3RkPgogICAgPHRkPkFkdmFuY2VtZW50cyBpbiBicmFpbiBvcmdhbm9pZCBzdHVkaWVzIGFuZCBndXQgbWljcm9iaW9tZSByZXNlYXJjaDwvdGQ+CiAgICA8dGQ+TXVsdGlwbGUgcmVzZWFyY2ggdGVhbXMgZ2xvYmFsbHk8L3RkPgogIDwvdHI+CjwvdGFibGU+CjxoMj5Db21wb25lbnRzIG9mIHRoZSBHdXQtQnJhaW4gQXhpczwvaDI+PHA+VGhlICJndXQtYnJhaW4gYXhpcyIgc2VydmVzIGFzIGEgY29tcGxleCBjb21tdW5pY2F0aW9uIG5ldHdvcmsgbGlua2luZyBndXQgaGVhbHRoIGFuZCBicmFpbiBmdW5jdGlvbiwgaW5mbHVlbmNpbmcgYnJhaW4gYWN0aXZpdHkgYXQgbXVsdGlwbGUgbGV2ZWxzLiBJbnRlcmFjdGlvbnMgYmV0d2VlbiBndXQgbWljcm9iaW90YSBhbmQgYnJhaW4gY2VsbHMgcGxheSBhIGNyaXRpY2FsIHJvbGUgaW4gcmVndWxhdGluZyBicmFpbiBjaGVtaXN0cnkgYW5kIHN1cHBvcnQgdGhlIHByb2R1Y3Rpb24gb2YgYnJhaW4tZGVyaXZlZCBuZXVyb3Ryb3BpYyBmYWN0b3IsIGVzc2VudGlhbCBmb3IgbWFpbnRhaW5pbmcgaGVhbHRoeSBicmFpbiBjaXJjdWl0cy4gRHlzZnVuY3Rpb24gaW4gdGhlIGd1dCBiYXJyaWVyIGNhbiBsZWFkIHRvIGd1dCBiYXJyaWVyIGR5c2Z1bmN0aW9uLCB3aGljaCBtYXkgY29tcHJvbWlzZSB0aGUgYmxvb2QtYnJhaW4gYmFycmllciwgZmFjaWxpdGF0aW5nIHRoZSBvbnNldCBvZiBicmFpbiBkaXNvcmRlcnMuIFRoZSBicmFpbiBzdGVtIGlzIHBhcnRpY3VsYXJseSBhZmZlY3RlZCBieSBzaWduYWxzIG9yaWdpbmF0aW5nIGZyb20gdGhlIGd1dCwgaW1wYWN0aW5nIGJvdGggZW1vdGlvbmFsIGFuZCBjb2duaXRpdmUgZnVuY3Rpb25zLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGNvbXBvbmVudHMgc2hlZHMgbGlnaHQgb24gaG93IGRpc3R1cmJhbmNlcyBpbiB0aGlzIGF4aXMgY2FuIGFmZmVjdCBuZXVyb2xvZ2ljYWwgaGVhbHRoIGFuZCBvdmVyYWxsIHdlbGwtYmVpbmcuPC9wPgo8aDM+VGhlIFJvbGUgb2YgdGhlIEd1dCBNaWNyb2Jpb3RhPC9oMz48cD5UaGUgImd1dC1icmFpbiBheGlzIiBwbGF5cyBhIGNydWNpYWwgcm9sZSBpbiB0aGUgaW50cmljYXRlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBndXQgbWljcm9iaW90YSBhbmQgdGhlIGNlbnRyYWwgbmVydm91cyBzeXN0ZW0uIFJlc2VhcmNoIGluZGljYXRlcyB0aGF0IHRoZSBndXQgbWljcm9iaW90YSBjYW4gaW5mbHVlbmNlIGJyYWluIHN0cnVjdHVyZSBhbmQgZnVuY3Rpb24sIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gcGhlbm9tZW5hIHN1Y2ggYXMgYnJhaW4gYXRyb3BoeS4gVGhlIGd1dC1icmFpbiBheGlzIHJlZmVycyB0byBhIGJpZGlyZWN0aW9uYWwgY29tbXVuaWNhdGlvbiBuZXR3b3JrLCB3aGVyZSBzaWduYWxzIGZyb20gdGhlIGd1dCBjYW4gYWZmZWN0IGNvZ25pdGl2ZSBwcm9jZXNzZXMgYW5kIGVtb3Rpb25hbCByZWd1bGF0aW9uIGluIHRoZSBicmFpbi4gVW5kZXJzdGFuZGluZyB0aGVzZSBndXQtYnJhaW4gYXhpcyBtZWNoYW5pc21zIHByb3ZpZGVzIGluc2lnaHQgaW50byBob3cgbWljcm9vcmdhbmlzbXMgaW4gdGhlIGd1dCBjb250cmlidXRlIHRvIG92ZXJhbGwgbWVudGFsIGhlYWx0aC48YnIvPjxici8+RW1lcmdpbmcgc3R1ZGllcyBzdWdnZXN0IHRoYXQgYWx0ZXJhdGlvbnMgaW4gZ3V0IG1pY3JvYmlvdGEgY29tcG9zaXRpb24gY2FuIGFsc28gYWZmZWN0IHRoZSBndXQtYnJhaW4tc2tpbiBheGlzIGFuZCB0aGUgYnJhaW4tZ3V0LW1pY3JvYmUgYXhpcy4gSW1iYWxhbmNlcyBpbiB0aGUgZ3V0IG1pY3JvYmlvbWUgbWF5IGxlYWQgdG8gZGlzcnVwdGlvbnMgaW4gZ3V0LWJyYWluIGNvbW11bmljYXRpb24sIHdoaWNoIGhhcyBpbXBsaWNhdGlvbnMgZm9yIHZhcmlvdXMgbmV1cm9sb2dpY2FsIGRpc29yZGVycy4gVGhlIGd1dC1icmFpbiBheGlzIHNlcnZlcyBub3Qgb25seSBhcyBhIHBhdGh3YXkgZm9yIG51dHJpZW50IGFic29ycHRpb24gYnV0IGFsc28gYXMgYSBtZWRpYXRvciBvZiBzaWduYWxzIHRoYXQgaW5mbHVlbmNlIHBzeWNob2xvZ2ljYWwgYW5kIHBoeXNpb2xvZ2ljYWwgc3RhdGVzLCBoaWdobGlnaHRpbmcgdGhlIGltcG9ydGFuY2Ugb2YgbWFpbnRhaW5pbmcgYSBoZWFsdGh5IGd1dCBlbnZpcm9ubWVudCBmb3Igb3B0aW1hbCBjZW50cmFsIG5lcnZvdXMgc3lzdGVtIGZ1bmN0aW9uLjwvcD4KPGgzPk5ldXJhbCBDb25uZWN0aW9ucyBpbiB0aGUgR3V0LUJyYWluIEF4aXM8L2gzPjxwPk5ldXJhbCBjb25uZWN0aW9ucyBwbGF5IGEgY3J1Y2lhbCByb2xlIGluIHRoZSBjb21wbGV4IGludGVyYWN0aW9ucyBvZiB0aGUgZ3V0LWJyYWluIGF4aXMuIFRoZXNlIGNvbm5lY3Rpb25zLCBmb3JtaW5nIHRoZSBicmFpbi1ndXQgcGF0aHdheSwgZmFjaWxpdGF0ZSBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIGJyYWluIGFuZCB0aGUgZ3V0LCBhbGxvd2luZyBzaWduYWxzIHRvIHRyYXZlbCBiaS1kaXJlY3Rpb25hbGx5LiBUaGUgZ3V0LWJyYWluIGNpcmN1aXQgaW5jbHVkZXMgcGF0aHdheXMgdGhhdCBhZmZlY3QgZ3V04oCTYnJhaW4gc2lnbmFsaW5nLCB3aXRoIHRoZSBtaWNyb2Jpb21lLWd1dC1icmFpbiBheGlzIGFjdGluZyBhcyBhIGtleSBtZWRpYXRvci4gUmVzZWFyY2ggaW4gZ3V0LWJyYWluIHN0dWRpZXMgaGlnaGxpZ2h0cyBob3cgdGhlIGd1dCBtaWNyb2Jpb3RhIGluZmx1ZW5jZXMgYnJhaW4gZnVuY3Rpb24sIHdoaWNoIGluIHR1cm4gY2FuIGFmZmVjdCBndXQgaGVhbHRoLCBkZW1vbnN0cmF0aW5nIHRoZSBpbnRyaWNhdGUgcmVsYXRpb25zaGlwIG9mIHRoZSBicmFpbi1ndXQtbWljcm9iaW90YSBheGlzLjxici8+PGJyLz5UaGUgZ3V0LWJyYWluIGJhcnJpZXIgc2VydmVzIGFzIGEgY3JpdGljYWwgaW50ZXJmYWNlIGluIHRoaXMgaW50ZXJhY3Rpb24sIGFmZmVjdGluZyB0aGUgaW50ZWdyaXR5IG9mIHRoZSBicmFpbi1ndXQgY29ubmVjdGlvbi4gRW1lcmdpbmcgZ3V0LWJyYWluIHJlc2VhcmNoIGluZGljYXRlcyB0aGF0IGR5c3JlZ3VsYXRpb24gaW4gdGhpcyBzeXN0ZW0gbWF5IGxlYWQgdG8gY29uZGl0aW9ucyBzdWNoIGFzIG1pY3JvYmlvbWUtZ3V0LWJyYWluIGF4aXMgZGlzb3JkZXIuIEJ5IHVuZGVyc3RhbmRpbmcgdGhlIG5ldXJhbCBwYXRod2F5cyB3aXRoaW4gdGhlIGJyYWluLWd1dCBjaXJjdWl0LCByZXNlYXJjaGVycyBjYW4gdW5jb3ZlciBob3cgYWx0ZXJhdGlvbnMgaW4gdGhlIGd1dCBtaWNyb2Jpb3RhIGNhbiBpbXBhY3QgbWVudGFsIGhlYWx0aCBhbmQgb3ZlcmFsbCB3ZWxsLWJlaW5nLCBlbXBoYXNpemluZyB0aGUgaW1wb3J0YW5jZSBvZiB0aGUgZ3V04oCTYnJhaW4gcmVsYXRpb25zaGlwIGluIG1haW50YWluaW5nIHBoeXNpb2xvZ2ljYWwgYmFsYW5jZS48L3A+PGRpdiBjbGFzcz0nbWItNCc+PHVsPjxsaT4gVGhlIGJyYWluLWd1dCBwYXRod2F5IGVuYWJsZXMgY29tbXVuaWNhdGlvbiBlc3NlbnRpYWwgZm9yIGVtb3Rpb25hbCByZWd1bGF0aW9uLjwvbGk+PGxpPiBEeXNiaW9zaXMgaW4gZ3V0IG1pY3JvYmlvdGEgY2FuIHJlc3VsdCBpbiBhbnhpZXR5IGFuZCBkZXByZXNzaW9uLjwvbGk+PGxpPiBUaGUgdmFndXMgbmVydmUgaXMgYSBwcmltYXJ5IGNvbXBvbmVudCBvZiB0aGUgZ3V0LWJyYWluIGF4aXMsIGluZmx1ZW5jaW5nIGJvdGggZGlnZXN0aXZlIGFuZCBtZW50YWwgaGVhbHRoLjwvbGk+PGxpPiBHdXQgYmFjdGVyaWEgcHJvZHVjZSBuZXVyb3RyYW5zbWl0dGVycywgc3VjaCBhcyBzZXJvdG9uaW4sIGltcGFjdGluZyBtb29kIGFuZCBiZWhhdmlvci48L2xpPjxsaT4gRGlldGFyeSBjaG9pY2VzIGNhbiBtb2R1bGF0ZSBndXQgbWljcm9iaW90YSwgdGhlcmVieSBhZmZlY3RpbmcgbWVudGFsIGhlYWx0aCBvdXRjb21lcy48L2xpPjxsaT4gU3RyZXNzIGNhbiBhbHRlciBndXQgcGVybWVhYmlsaXR5LCBpbXBhY3RpbmcgdGhlIGd1dC1icmFpbiBjb25uZWN0aW9uLjwvbGk+PGxpPiBGdXJ0aGVyIHJlc2VhcmNoIGludG8gdGhlIGd1dC1icmFpbiBheGlzIG1heSBsZWFkIHRvIG5vdmVsIHRoZXJhcGV1dGljIHN0cmF0ZWdpZXMgZm9yIG1lbnRhbCBoZWFsdGggZGlzb3JkZXJzLjwvbGk+PC91bD48L2Rpdj4KPGgyPk1lY2hhbmlzbXMgb2YgQ29tbXVuaWNhdGlvbjwvaDI+PHA+VGhlICJndXQtYnJhaW4gYXhpcyIgc2VydmVzIGFzIGEgY3JpdGljYWwgY29tbXVuaWNhdGlvbiBwYXRod2F5IGJldHdlZW4gdGhlIGdhc3Ryb2ludGVzdGluYWwgc3lzdGVtIGFuZCB0aGUgY2VudHJhbCBuZXJ2b3VzIHN5c3RlbSwgaGlnaGxpZ2h0aW5nIHRoZSBpbnRyaWNhdGUgZ3V0LWJyYWluIGNvbm5lY3Rpb24uIFJlc2VhcmNoIGludG8gZ3V0LWJyYWluIGludGVyYWN0aW9ucyByZXZlYWxzIHRoYXQgdGhlIGd1dCBtaWNyb2Jpb3RhIGNhbiBpbmZsdWVuY2UgYnJhaW4gZnVuY3Rpb24gYW5kIGJlaGF2aW9yIHRocm91Z2ggdmFyaW91cyBzaWduYWxpbmcgcGF0aHdheXMuIFRoaXMgZHluYW1pYyByZWxhdGlvbnNoaXAgdW5kZXJzY29yZXMgdGhlIGltcG9ydGFuY2Ugb2YgYSBiYWxhbmNlZCBtaWNyb2Jpb21lLCBhcyBkaXNydXB0aW9ucyBtYXkgbGVhZCB0byBtaWNyb2Jpb21l4oCTZ3V04oCTYnJhaW4gYXhpcyBkaXNvcmRlcnMgYW5kIG90aGVyIGd1dC1icmFpbiBkeXNmdW5jdGlvbnMuIFRoZSBndXTigJNtZW5pbmdlYWwgYXhpcywgYWxvbmcgd2l0aCB0aGUgYnJhaW4tZ3V0LWVudGVyaWMgbWljcm9iaW90YSBheGlzLCBpbGx1c3RyYXRlcyBob3cgZ3V0LWJyYWluIGNvbW11bmljYXRpb24gaW1wYWN0cyBvdmVyYWxsIGhlYWx0aC4gVW5kZXJzdGFuZGluZyB0aGVzZSBtZWNoYW5pc21zIG9mIGd1dOKAk2JyYWluIGludGVyYWN0aW9ucyBjYW4gcHJvdmlkZSBpbnNpZ2h0cyBpbnRvIHRoZXJhcGV1dGljIGFwcHJvYWNoZXMgZm9yIGNvbmRpdGlvbnMgbGlua2VkIHRvIGd1dC1icmFpbiBkeXNmdW5jdGlvbnMgYW5kIGVuaGFuY2Ugb3VyIGNvbXByZWhlbnNpb24gb2YgdGhlIGJyYWlu4oCTZ3V0IGludGVyYWN0aW9uLjwvcD48aW1nIGFsdD0nZ3V0IGhlYWx0aCcgY2xhc3M9J2ltZy1mbHVpZCByb3VuZGVkIG1iLTUnIGhlaWdodD0nNDAwJyBzcmM9J2h0dHBzOi8vcHViLTBiMjk3ZWI2ZmM5MzQ4YmQ4M2Y5NmI5ZTIzYmQ3ODdlLnIyLmRldi9pbWFnZXMvdGhlLWd1dC1icmFpbi1heGlzLTAwYmE4LnBuZycgPgo8aDM+U2lnbmFsaW5nIFBhdGh3YXlzIGluIHRoZSBNaWNyb2Jpb3RhLUd1dC1CcmFpbiBBeGlzPC9oMz48cD5UaGUgImd1dC1icmFpbiBheGlzIiByZXByZXNlbnRzIGEgc29waGlzdGljYXRlZCBjb21tdW5pY2F0aW9uIG5ldHdvcmsgdGhhdCBmYWNpbGl0YXRlcyBndXQtYnJhaW4gY3Jvc3N0YWxrLCBpbnZvbHZpbmcgYmlkaXJlY3Rpb25hbCBzaWduYWxpbmcgYmV0d2VlbiB0aGUgZ3V0IG1pY3JvYmlvdGEgYW5kIHRoZSBjZW50cmFsIG5lcnZvdXMgc3lzdGVtLiBUaHJvdWdoIHZhcmlvdXMgc2lnbmFsaW5nIHBhdGh3YXlzLCB0aGUgbWljcm9iaW90YS1icmFpbiBheGlzIHBsYXlzIGEgY3J1Y2lhbCByb2xlIGluIG1haW50YWluaW5nIGEgbm9ybWFsIGd1dCBlbnZpcm9ubWVudC4gRGlzcnVwdGlvbnMgaW4gdGhpcyBzeXN0ZW0gY2FuIGxlYWQgdG8gZ3V0LWJyYWluIG1pY3JvYmlvdGEgYWJub3JtYWxpdGllcywgaW1wYWN0aW5nIGd1dC1yZWxhdGVkIGRpc29yZGVycyBhbmQgb3ZlcmFsbCBoZWFsdGguIFVuZGVyc3RhbmRpbmcgdGhlc2UgcGF0aHdheXMgaXMgZXNzZW50aWFsIGZvciBkZWNpcGhlcmluZyBob3cgdGhlIG1pY3JvYmlvbWXigJNndXTigJNicmFpbiBzeXN0ZW0gaW5mbHVlbmNlcyBlbW90aW9uYWwgYW5kIHBoeXNpb2xvZ2ljYWwgcHJvY2Vzc2VzLjxici8+PGJyLz5HdXTigJNicmFpbuKAk21pY3JvYmlvbWUgaW50ZXJhY3Rpb25zIGFyZSBtZWRpYXRlZCBieSBkaXZlcnNlIHNpZ25hbGluZyBtb2xlY3VsZXMgc3VjaCBhcyBuZXVyb3RyYW5zbWl0dGVycywgaG9ybW9uZXMsIGFuZCBzaG9ydC1jaGFpbiBmYXR0eSBhY2lkcyBwcm9kdWNlZCBieSBndXQgYmFjdGVyaWEuIFRoZXNlIGNvbXBvdW5kcyBjYW4gYWZmZWN0IG5ldXJvYmlvbG9naWNhbCBmdW5jdGlvbnMgYW5kIGNvbnRyaWJ1dGUgdG8gdGhlIG1vZHVsYXRpb24gb2YgbW9vZCBhbmQgYmVoYXZpb3IuIFRoZSBtaWNyb2Jpb3Rh4oCTZ3V04oCTYnJhaW4gY29tbXVuaWNhdGlvbiBzeXN0ZW0gaXMgaW50ZWdyYWwgdG8gbWFpbnRhaW5pbmcgaG9tZW9zdGFzaXMgd2l0aGluIHRoZSBicmFpbiwgYW5kIGRpc3R1cmJhbmNlcyB3aXRoaW4gdGhpcyBheGlzIGFyZSBvZnRlbiBsaW5rZWQgdG8gdmFyaW91cyBjb25kaXRpb25zLCBpbmNsdWRpbmcgYW54aWV0eSBhbmQgZGVwcmVzc2lvbi4gVGFyZ2V0aW5nIHRoZXNlIHNpZ25hbGluZyBwYXRod2F5cyBtYXkgb2ZmZXIgbmV3IGF2ZW51ZXMgZm9yIHRoZXJhcGV1dGljIGludGVydmVudGlvbnMgaW4gZ3V0LXJlbGF0ZWQgZGlzb3JkZXJzLjwvcD4KPGgzPlRoZSBJbXBhY3Qgb2YgdGhlIEd1dCBvbiBDZW50cmFsIE5lcnZvdXMgU3lzdGVtIEZ1bmN0aW9uPC9oMz48cD5UaGUgImd1dC1icmFpbiBheGlzIiBwbGF5cyBhIHNpZ25pZmljYW50IHJvbGUgaW4gbWFpbnRhaW5pbmcgdGhlIGhlYWx0aCBvZiBib3RoIHRoZSBndXQgYW5kIHRoZSBicmFpbi4gUmVzZWFyY2ggaW5kaWNhdGVzIHRoYXQgYWx0ZXJhdGlvbnMgaW4gdGhlIGd1dCBtaWNyb2Jpb3RhIGNhbiBsZWFkIHRvIGNoYW5nZXMgaW4gZ3V0IGZ1bmN0aW9ucywgd2hpY2ggY2FuIHN1YnNlcXVlbnRseSBpbXBhY3QgYnJhaW4gYWN0aXZpdGllcy4gVmFyaW91cyBicmFpbiByZWdpb25zIGFyZSBpbmZsdWVuY2VkIGJ5IG1pY3JvYmlvdGHigJNndXTigJNicmFpbiBjb21tdW5pY2F0aW9uLCBpbGx1c3RyYXRpbmcgaG93IHRpZ2h0bHkgY29ubmVjdGVkIHRoZXNlIHN5c3RlbXMgYXJlLiBUaGlzIGludGVyYWN0aW9uIGlzIHBhcnRpY3VsYXJseSBjcnVjaWFsIGFzIGFjdGl2YXRpb24gb2YgdGhlIGF4aXMgY2FuIG1pdGlnYXRlIGJyYWluIHBhdGhvbG9neSBhbmQgcHJvbW90ZSBvdmVyYWxsIG1lbnRhbCB3ZWxsbmVzcy48YnIvPjxici8+VW5kZXJzdGFuZGluZyBndXQgZHlzZnVuY3Rpb24gaXMgdml0YWwgZm9yIGNvbXByZWhlbmRpbmcgaXRzIGltcGxpY2F0aW9ucyBvbiB0aGUgY2VudHJhbCBuZXJ2b3VzIHN5c3RlbS4gSW1iYWxhbmNlcyBpbiB0aGUgbWFtbWFsaWFuIGd1dCBtaWNyb2Jpb21lIG1heSB0cmlnZ2VyIGd1dCBhbHRlcmF0aW9ucyB0aGF0IGFmZmVjdCBicmFpbiBmdW5jdGlvbiBhbmQgY29udHJpYnV0ZSB0byBjb25kaXRpb25zIGxpa2UgYW54aWV0eSBhbmQgZGVwcmVzc2lvbi4gSGVhbHRoeSBndXQgY29uZGl0aW9ucyBmb3N0ZXIgcm9idXN0IGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgZ3V0IGFuZCB0aGUgYnJhaW4sIHdoaWxlIGR5c3JlZ3VsYXRpb24gY2FuIGRpc3J1cHQgdGhpcyBheGlzIGFuZCBsZWFkIHRvIHZhcmlvdXMgbmV1cm9sb2dpY2FsIGlzc3Vlcy4gU3VjaCBpbnNpZ2h0cyB1bmRlcmxpbmUgdGhlIGNvbXBsZXhpdHkgb2YgdGhlICJndXQtYnJhaW4gYXhpcyIgYW5kIGl0cyBlc3NlbnRpYWwgcm9sZSBpbiBwc3ljaGlhdHJpYyBhbmQgbmV1cm9sb2dpY2FsIGhlYWx0aC48L3A+CjxoMj5JbmZsdWVuY2Ugb24gSGVhbHRoIGFuZCBXZWxsLUJlaW5nPC9oMj48cD5UaGUgImd1dC1icmFpbiBheGlzIiBzZXJ2ZXMgYXMgYSBjcnVjaWFsIGNvbW11bmljYXRpb24gcGF0aHdheSB0aGF0IGlsbHVzdHJhdGVzIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gZ3V0IG9yaWdpbiBhbmQgYnJhaW4gZnVuY3Rpb24uIFRoaXMgY29tcGxleCByZWxhdGlvbnNoaXAgaW52b2x2ZXMgZ3V0IGNlbGxzIHNlbmRpbmcgc2lnbmFscyB0aGF0IGluZmx1ZW5jZSBicmFpbiBzaWduYWxpbmcgYW5kIGJpb2NoZW1pc3RyeSwgaW1wYWN0aW5nIG5vcm1hbCBicmFpbiBkZXZlbG9wbWVudC4gQSBwcm9wZXJseSBmdW5jdGlvbmluZyBndXQgaXMgZXNzZW50aWFsIGZvciBwcm9wZXIgYnJhaW4gZGV2ZWxvcG1lbnQsIGZ1bmN0aW9uaW5nIGFzIGEgInNlY29uZCBicmFpbiIgdGhhdCBpbnRlcmFjdHMgd2l0aCB0aGUgY2VudHJhbCBuZXJ2b3VzIHN5c3RlbS4gVGhlIHJlYWN0aW9ucyBhcmlzaW5nIGZyb20gdGhpcyBheGlzIGhpZ2hsaWdodCB0aGUgaW1wb3J0YW5jZSBvZiBhIG1hdHVyZSBndXQgZm9yIHRoZSBoZWFsdGggb2YgdGhlIGJyYWluLCBlbnN1cmluZyBhbiBlZmZlY3RpdmUgYmxvb2QtYnJhaW4gYmFycmllciBhbmQgb3B0aW1hbCBjb25kaXRpb25zIGZvciBtZW50YWwgd2VsbC1iZWluZy4gRGlzdHVyYmFuY2VzIGluIHRoZSBndXQncyBtaWNyb2Jpb3RhIGNhbiBsZWFkIHRvIGFsdGVyYXRpb25zIGluIGJyYWluIHdvcmtzLCBlbXBoYXNpemluZyB0aGUgaW50cmljYXRlIGJhbGFuY2UgbmVjZXNzYXJ5IGZvciBtZW50YWwgaGVhbHRoLjwvcD48aW1nIGFsdD0nZ3V0IGhlYWx0aCcgY2xhc3M9J2ltZy1mbHVpZCByb3VuZGVkIG1iLTUnIGhlaWdodD0nNDAwJyBzcmM9J2h0dHBzOi8vcHViLTBiMjk3ZWI2ZmM5MzQ4YmQ4M2Y5NmI5ZTIzYmQ3ODdlLnIyLmRldi9pbWFnZXMvdGhlLWd1dC1icmFpbi1heGlzLTE0YzU2LnBuZycgPgo8aDM+R3V0LUJyYWluIEF4aXMgYW5kIE1lbnRhbCBIZWFsdGg8L2gzPjxwPlRoZSAiZ3V0LWJyYWluIGF4aXMiIHBsYXlzIGEgc2lnbmlmaWNhbnQgcm9sZSBpbiBtZW50YWwgaGVhbHRoIGJ5IGluZmx1ZW5jaW5nIGJyYWluIGV4cHJlc3Npb24gbGV2ZWxzIGFuZCBvdmVyYWxsIGJyYWluIGhlYWx0aC4gQSBoZWFsdGh5IGd1dCBlcGl0aGVsaXVtIHN1cHBvcnRzIHRoZSBndXQgYmFycmllciwgcHJldmVudGluZyBoYXJtZnVsIHN1YnN0YW5jZXMgZnJvbSBlbnRlcmluZyB0aGUgYmxvb2RzdHJlYW0sIHdoaWNoIGNhbiBsZWFkIHRvIGd1dC1pbmR1Y2VkIG1vZHVsYXRpb24gb2YgYnJhaW4gZnVuY3Rpb25zLiBSZXNlYXJjaCBpbmRpY2F0ZXMgdGhhdCBkaXNydXB0aW9ucyBpbiB0aGUgZ3V0IG1ldGFnZW5vbWUgY2FuIHRyaWdnZXIgZ2FzdHJvaW50ZXN0aW5hbCBtaWNyb2JlLWJyYWluIGludGVyYWN0aW9ucywgdWx0aW1hdGVseSBhZmZlY3RpbmcgdGhlIGJyYWlu4oCZcyBlbW90aW9uYWwgYW5kIGNvZ25pdGl2ZSBwcm9jZXNzaW5nLiBDb25kaXRpb25zIHN1Y2ggYXMgZ3V0IHBhaW4gbWF5IGV4YWNlcmJhdGUgdGhlc2UgaW50ZXJhY3Rpb25zLCBoaWdobGlnaHRpbmcgdGhlIGRlbGljYXRlIGJhbGFuY2UgYmV0d2VlbiBndXQgaGVhbHRoIGFuZCBicmFpbiBoZWFsdGguPGJyLz48YnIvPkFnZWQgYnJhaW5zIGFyZSBwYXJ0aWN1bGFybHkgdnVsbmVyYWJsZSB0byB0aGUgcmFtaWZpY2F0aW9ucyBvZiBndXQgZHlzYmlvc2lzLCBhcyBjaGFuZ2VzIGluIHRoZSBndXQgbWljcm9iaW90YSBjYW4gbGVhZCB0byBpbXBhaXJlZCBtaWNyb2JlLWJyYWluIGNvbW11bmljYXRpb24uIFRoaXMgZHlzcmVndWxhdGlvbiBtYXkgbWFuaWZlc3QgaW4gdmFyaW91cyBuZXVyb2xvZ2ljYWwgc3ltcHRvbXMgYW5kIG1vb2QgZGlzb3JkZXJzLCB1bmRlcnNjb3JpbmcgdGhlIGltcG9ydGFuY2Ugb2YgbWFpbnRhaW5pbmcgYSBoZWFsdGh5IGd1dCBmb3Igb3B0aW1hbCBtZW50YWwgd2VsbC1iZWluZy4gU3R1ZGllcyBzaG93IHRoYXQgaW50ZXJ2ZW50aW9ucyB0YXJnZXRpbmcgdGhlICJndXQtYnJhaW4gYXhpcyIgY291bGQgcHJvbW90ZSBiZXR0ZXIgZ3V0IGhlYWx0aCwgcG90ZW50aWFsbHkgYWxsZXZpYXRpbmcgc3ltcHRvbXMgYXNzb2NpYXRlZCB3aXRoIG1lbnRhbCBoZWFsdGggaXNzdWVzLCB0aGVyZWJ5IGVtcGhhc2l6aW5nIHRoZSBpbnRlcmNvbm5lY3RlZG5lc3Mgb2YgZ3V0IGFuZCBicmFpbiBoZWFsdGguPC9wPgo8aDM+UGh5c2lvbG9naWNhbCBFZmZlY3RzIG9mIHRoZSBHdXQtQnJhaW4gSW50ZXJhY3Rpb248L2gzPjxwPlRoZSAiZ3V0LWJyYWluIGF4aXMiIHBsYXlzIGEgY3J1Y2lhbCByb2xlIGluIHJlZ3VsYXRpbmcgYnJhaW4gYWN0aXZpdGllcyBhbmQgaW5mbHVlbmNpbmcgYmVoYXZpb3IuIFJlY2VudCBzdHVkaWVzIGhpZ2hsaWdodCBob3cgZ3V0IGNvbW1lbnNhbHMgY29udHJpYnV0ZSB0byBndXQgYmFycmllciBob21lb3N0YXNpcywgd2hpY2ggaXMgZXNzZW50aWFsIGZvciBtYWludGFpbmluZyBicmFpbiBjZWxsIHBoeXNpb2xvZ3kuIFJlc2VhcmNoIHVzaW5nIGJyYWluIGhvbW9nZW5hdGVzIGhhcyBkZW1vbnN0cmF0ZWQgdGhhdCBhbHRlcmF0aW9ucyBpbiBndXQgaW5mbGFtbWF0aW9uIGNhbiBzaWduaWZpY2FudGx5IGFmZmVjdCBtaWRicmFpbiBuZXVyb25zIGFuZCB0aGVpciBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGJyYWluLiBUaGlzIGNvbm5lY3Rpb24gdW5kZXJzY29yZXMgdGhlIGltcG9ydGFuY2Ugb2YgZ3V0IHNlbnNvcmltb3RvciBmdW5jdGlvbiBpbiBvdmVyYWxsIGJyYWluIG5ldXJvY2hlbWlzdHJ5LCBhcyBkeXNyZWd1bGF0aW9uIGluIHRoZXNlIHBhdGh3YXlzIGNhbiBsZWFkIHRvIHZhcmlvdXMgbmV1cm9waHlzaW9sb2dpY2FsIGNoYW5nZXMuPGJyLz48YnIvPlVuZGVyc3RhbmRpbmcgdGhlIHBoeXNpb2xvZ2ljYWwgZWZmZWN0cyBvZiB0aGUgZ3V0LWJyYWluIGF4aXMgZXh0ZW5kcyB0byBleHBsb3JpbmcgaG93IGd1dCBoZWFsdGggaW5mbHVlbmNlcyBicmFpbiBiZWhhdmlvci4gVGhlIGludGVycGxheSBiZXR3ZWVuIGd1dCBtaWNyb2Jpb3RhIGFuZCBicmFpbiBuZXVyb2NoZW1pc3RyeSBoYXMgYmVlbiBkb2N1bWVudGVkIGluIG51bWVyb3VzIHN0dWRpZXMuIEFuIGltYmFsYW5jZSBpbiBndXQgbWljcm9iaW90YSBjYW4gbGVhZCB0byBpbmZsYW1tYXRvcnkgcmVzcG9uc2VzIHRoYXQgaW1wYWN0IG1pZGJyYWluIG5ldXJvbnMsIHVsdGltYXRlbHkgYWZmZWN0aW5nIGNvZ25pdGl2ZSBmdW5jdGlvbnMgYW5kIGVtb3Rpb25hbCByZWd1bGF0aW9uLiBUaGUgZ3V0LWJyYWluIGF4aXMgc2VydmVzIGFzIGEgdml0YWwgY29tbXVuaWNhdGlvbiBuZXR3b3JrLCB3aGVyZSBkaXN0dXJiYW5jZXMgY2FuIG1hbmlmZXN0IGFzIGFsdGVyZWQgYnJhaW4gYWN0aXZpdGllcyBhbmQgY29udHJpYnV0ZSB0byB2YXJpb3VzIG5ldXJvbG9naWNhbCBjb25kaXRpb25zLjwvcD4KPGgyPkR5c3JlZ3VsYXRpb24gb2YgdGhlIEd1dC1CcmFpbiBBeGlzPC9oMj48cD5UaGUgZ3V0LWJyYWluIGF4aXMgcGxheXMgYSBjcnVjaWFsIHJvbGUgaW4gbWFpbnRhaW5pbmcgb3ZlcmFsbCBoZWFsdGgsIGFuZCBpdHMgZHlzcmVndWxhdGlvbiBjYW4gbGVhZCB0byBzaWduaWZpY2FudCBjb25zZXF1ZW5jZXMuIFJlc2VhcmNoIGluZGljYXRlcyB0aGF0IHNldmVyYWwgZ3V0IG1pY3JvYmVzIGFyZSBpbnRlZ3JhbCB0byB0aGUgbWljcm9iaW9tZSBheGlzLCBpbmZsdWVuY2luZyBiZWhhdmlvcmFsIGF4aXMgYW5kIG5ldXJhbCBhY3RpdmF0aW9uLiBBIGRpc3J1cHRlZCBndXQgZW52aXJvbm1lbnQgbWF5IGFsdGVyIGd1dCBjb250ZW50cywgd2hpY2ggY2FuIHJlc2V0IGJyYWluIGdlbmUgZXhwcmVzc2lvbiBhbmQgYWZmZWN0IG5ldXJvYmlvbG9naWNhbCBmdW5jdGlvbnMuIFByb2dyZXNzaXZlIGd1dCBkeXNiaW9zaXMgaXMgbGlua2VkIHRvIGxvdy1ncmFkZSBuZXVyb2luZmxhbW1hdGlvbiwgd2hpY2ggbWF5IGNvbnRyaWJ1dGUgdG8gZGlzZWFzZS1yZWxhdGVkIGJyYWluIHBhdGhvbG9neS4gRnVydGhlcm1vcmUsIGFsdGVyYXRpb25zIGluIGd1dCBzZXJvdG9uaW4gbGV2ZWxzIGNhbiBpbXBhY3QgZ3V0IG1lbW9yaWVzLCBpbGx1c3RyYXRpbmcgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIGludGVyYWN0aW9ucyB3aXRoaW4gdGhlIGd1dC1icmFpbiBheGlzIGFuZCB0aGVpciBpbXBsaWNhdGlvbnMgZm9yIG1lbnRhbCBhbmQgbmV1cm9sb2dpY2FsIGhlYWx0aC48L3A+CjxoMz5Db25kaXRpb25zIExpbmtlZCB0byBHdXQtQnJhaW4gRHlzYmlvc2lzPC9oMz48cD5UaGUgImd1dC1icmFpbiBheGlzIiBzZXJ2ZXMgYXMgYSBjcnVjaWFsIGxpbmsgYmV0d2VlbiBndXQgaGVhbHRoIGFuZCBuZXVyb2xvZ2ljYWwgY29uZGl0aW9ucy4gRHlzYmlvc2lzIGluIHRoZSBndXQgbWljcm9iaW90YSBjYW4gbGVhZCB0byBhbiBpbWJhbGFuY2UgaW4gZ3V0LWRlcml2ZWQgc2Vyb3RvbmluIGxldmVscywgd2hpY2ggcGxheXMgYSBzaWduaWZpY2FudCByb2xlIGluIHJlZ3VsYXRpbmcgbW9vZCBhbmQgYW54aWV0eS4gVGhlIHByZXNlbmNlIG9mIGd1dCBwYXRob2dlbnMgbWF5IGRpc3J1cHQgdGhpcyBpbnRlcmFjdGlvbiwgY2F1c2luZyBhbHRlcmF0aW9ucyBpbiB0aGUgbWljcm9iaW90YS1icmFpbiBjb21tdW5pY2F0aW9uIHBhdGh3YXlzLiBTdWNoIGNoYW5nZXMgY2FuIGNvbnRyaWJ1dGUgdG8gYnJhaW4gZHlzYmlvc2lzIGFuZCBwb3RlbnRpYWwgYnJhaW4gc3RlbSBwYXRob2xvZ3ksIGhpZ2hsaWdodGluZyB0aGUgaW50cmljYXRlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGh1bWFuIGd1dCBtaWNyb29yZ2FuaXNtcyBhbmQgY2VudHJhbCBuZXJ2b3VzIHN5c3RlbSBmdW5jdGlvbi48YnIvPjxici8+VW5kZXJzdGFuZGluZyB0aGUgdW5kZXJseWluZyBtZWNoYW5pc21zIGF0IHBsYXkgaW4gZ3V0LWJyYWluIGR5c2Jpb3NpcyByZXZlYWxzIGhvdyBndXQgcGVwdGlkZXMgYW5kIG90aGVyIG1ldGFib2xpdGVzIGFmZmVjdCBicmFpbiBmdW5jdGlvbi4gVGhlIGludGVycGxheSBvZiB0aGUgZW5kb2NyaW5lIHN0cmVzcyBheGlzIGZ1cnRoZXIgY29tcGxpY2F0ZXMgdGhlc2UgaW50ZXJhY3Rpb25zLCBpbnRlbnNpZnlpbmcgdGhlIGltcGFjdCBvZiBndXQgbWljcm9iaW90YSBvbiBtZW50YWwgaGVhbHRoLiBSZXNlYXJjaGVycyBjb250aW51ZSB0byBleHBsb3JlIGhvdyBkaXN0dXJiYW5jZXMgaW4gZ3V0IG1pY3JvYmlvdGEgbm90IG9ubHkgaW5mbHVlbmNlIHBzeWNob2xvZ2ljYWwgd2VsbC1iZWluZyBidXQgbWF5IGFsc28gZXhhY2VyYmF0ZSBuZXVyb2xvZ2ljYWwgZGlzb3JkZXJzLCB1bmRlcnNjb3JpbmcgdGhlIGltcG9ydGFuY2Ugb2YgbWFpbnRhaW5pbmcgYSBiYWxhbmNlZCBndXQgZW52aXJvbm1lbnQgZm9yIG92ZXJhbGwgaGVhbHRoLjwvcD4KPGgzPkltcGxpY2F0aW9ucyBmb3IgTmV1cm9sb2dpY2FsIERpc29yZGVyczwvaDM+PHA+VGhlICJndXQtYnJhaW4gYXhpcyIgcGxheXMgYSBjcnVjaWFsIHJvbGUgaW4gdGhlIGRldmVsb3BtZW50IGFuZCBwcm9ncmVzc2lvbiBvZiB2YXJpb3VzIG5ldXJvbG9naWNhbCBkaXNvcmRlcnMuIEFsdGVyZWQgZ3V0IG1pY3JvYmlvbWUgY29tcG9zaXRpb25zIG9mdGVuIGNvcnJlbGF0ZSB3aXRoIGJyYWluIGluZmxhbW1hdGlvbiBhbmQgc2lnbmlmaWNhbnQgbmVydm91cyBzeXN0ZW0gY2hhbmdlcy4gUmVzZWFyY2ggaW5kaWNhdGVzIHRoYXQgZ3V0IG1pY3JvYmlvdGEgbW9kdWxhdGVzIGJyYWluIHJlY2VwdG9yIGFjdGl2aXR5LCBpbmZsdWVuY2luZyBob3cgdGhlIGJyYWluIHByb2Nlc3NlcyBhbmQgcmVzcG9uZHMgdG8gc3RpbXVsaS4gU3R1ZGllcyBmb2N1c2luZyBvbiBmcm9udGFsIGNvcnRleCBzYW1wbGVzIGhhdmUgc2hvd24gdGhhdCBkaXNydXB0aW9ucyBpbiB0aGUgYmFsYW5jZSBvZiBtdWx0aXBsZSBndXQgbWljcm9iZXMgY2FuIGxlYWQgdG8gdmFyeWluZyByZWdpb25hbCBicmFpbiB2b2x1bWVzLCB1bHRpbWF0ZWx5IGFmZmVjdGluZyBvdmVyYWxsIG5lcnZvdXMgc3lzdGVtIGZ1bmN0aW9ucy48YnIvPjxici8+TmV1cm9sb2dpY2FsIGRpc29yZGVycyBzdWNoIGFzIGFueGlldHksIGRlcHJlc3Npb24sIGFuZCBuZXVyb2RlZ2VuZXJhdGl2ZSBkaXNlYXNlcyBoYXZlIGJlZW4gbGlua2VkIHRvIGR5c3JlZ3VsYXRpb24gb2YgdGhlIGd1dC1icmFpbiBheGlzLiBUaGUgaW50ZXJwbGF5IGJldHdlZW4gZ3V0IG1pY3JvYmlvdGEgYW5kIHRoZSBuZXJ2b3VzIHN5c3RlbTIsIDI5LCAzMCByZXZlYWxzIGNvbXBsZXggbWVjaGFuaXNtcyB3aGVyZWluIGEgZGlzdHVyYmVkIGd1dCBjYW4gZXhhY2VyYmF0ZSBpbmZsYW1tYXRpb24gaW4gdGhlIGJyYWluLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGNvbm5lY3Rpb25zIG9mZmVycyBwb3RlbnRpYWwgYXZlbnVlcyBmb3IgdGhlcmFwZXV0aWMgaW50ZXJ2ZW50aW9ucyB0aGF0IHRhcmdldCB0aGUgZ3V0IG1pY3JvYmlvbWUgdG8gYWxsZXZpYXRlIHN5bXB0b21zIHJlbGF0ZWQgdG8gbmV1cm9sb2dpY2FsIGNvbmRpdGlvbnMuIEJ5IGFkZHJlc3NpbmcgZ3V0IGhlYWx0aCwgdGhlcmUgaXMgaG9wZSBmb3IgaW1wcm92aW5nIGNvZ25pdGl2ZSBmdW5jdGlvbiBhbmQgZW1vdGlvbmFsIHdlbGwtYmVpbmcuPC9wPjxkaXYgY2xhc3M9J21iLTQnPjx1bD48bGk+IEd1dCBtaWNyb2Jpb3RhIGFsdGVyYXRpb25zIG1heSBzZXJ2ZSBhcyBlYXJseSBpbmRpY2F0b3JzIG9mIG5ldXJvbG9naWNhbCBkaXNlYXNlcy48L2xpPjxsaT4gRW5oYW5jaW5nIGd1dCBoZWFsdGggY291bGQgcHJvdmlkZSBhIG5vbi1pbnZhc2l2ZSBzdHJhdGVneSB0byBtb2RpZnkgZGlzZWFzZSB0cmFqZWN0b3JpZXMuPC9saT48bGk+IFByb2Jpb3RpY3MgYW5kIGRpZXRhcnkgY2hhbmdlcyBtaWdodCBwb3NpdGl2ZWx5IGluZmx1ZW5jZSBtb29kIGFuZCBjb2duaXRpdmUgZnVuY3Rpb24uPC9saT48bGk+IFJlc2VhcmNoIGludG8gc3BlY2lmaWMgZ3V0IGJhY3RlcmlhIGFzc29jaWF0ZWQgd2l0aCBuZXVyb2xvZ2ljYWwgZGlzb3JkZXJzIG1heSBpbmZvcm0gdGFyZ2V0ZWQgdGhlcmFwaWVzLjwvbGk+PGxpPiBBZGRyZXNzaW5nIGd1dCBkeXNiaW9zaXMgY291bGQgY29tcGxlbWVudCBleGlzdGluZyB0cmVhdG1lbnRzIGZvciBhbnhpZXR5IGFuZCBkZXByZXNzaW9uLjwvbGk+PGxpPiBGdXJ0aGVyIHN0dWRpZXMgYXJlIG5lZWRlZCB0byBleHBsb3JlIHRoZSBjYXVzYXRpdmUgbWVjaGFuaXNtcyBsaW5raW5nIGd1dCBoZWFsdGggYW5kIG5ldXJvbG9naWNhbCBzeW1wdG9tcy48L2xpPjxsaT4gQ29sbGFib3JhdGlvbiBiZXR3ZWVuIG5ldXJvbG9naXN0cyBhbmQgZ2FzdHJvZW50ZXJvbG9naXN0cyBjb3VsZCBsZWFkIHRvIGludGVncmF0ZWQgdHJlYXRtZW50IGFwcHJvYWNoZXMuPC9saT48L3VsPjwvZGl2Pgo8aDI+VGhlcmFwZXV0aWMgQXBwcm9hY2hlczwvaDI+PHA+VGhlIGludGVycGxheSB3aXRoaW4gdGhlIGd1dC1icmFpbiBheGlzIHJldmVhbHMgdmFyaW91cyB0aGVyYXBldXRpYyBhdmVudWVzIGFpbWVkIGF0IHJlc3RvcmluZyBiYWxhbmNlIGluIHRoZSBodW1hbiBndXQgbWljcm9iaW90YS4gSW50ZXJ2ZW50aW9ucyB0YXJnZXRpbmcgYWx0ZXJlZCBndXQgbWljcm9iaW90YSBjYW4gbWl0aWdhdGUgY29uZGl0aW9ucyBsaWtlIGd1dCBzZXBzaXMsIHdoaWNoIG9mdGVuIGxlYWRzIHRvIGVhcmx5IG5ldXJvaW5mbGFtbWF0aW9uLiBTdHJhdGVnaWVzIG1heSBpbmNsdWRlIHRoZSBhZG1pbmlzdHJhdGlvbiBvZiBwcm9iaW90aWNzIHRvIGVuaGFuY2UgYmVuZWZpY2lhbCBndXQgYmFjdGVyaWEsIHRoZXJlYnkgcHJvbW90aW5nIGEgaGVhbHRoaWVyIGludGVzdGluYWwgY29tcG9uZW50LiBBZGRyZXNzaW5nIGlzc3VlcyBsaWtlIGxlYWt5IGd1dCBpcyBlc3NlbnRpYWwgaW4gcHJldmVudGluZyBndXQtZGVyaXZlZCBzZXBzaXMgZnJvbSBhZmZlY3RpbmcgcGVyaXBoZXJhbCBvcmdhbnMgYW5kIGluZHVjaW5nIG5ldXJvbG9naWNhbCBjaGFuZ2VzLiBUaHJvdWdoIHRoZSBtb2R1bGF0aW9uIG9mIHRoZXNlIGludGVyYWN0aW9ucywgbmV1cm90cm9waGljIGZhY3RvcnMgY2FuIGVuaGFuY2UgY29ydGljYWwgZnVuY3Rpb25zLCBmb3N0ZXJpbmcgYmV0dGVyIGNvZ25pdGl2ZSBoZWFsdGggYW5kIGVtb3Rpb25hbCB3ZWxsLWJlaW5nIGluIGluZGl2aWR1YWxzIGFmZmVjdGVkIGJ5IGR5c3JlZ3VsYXRpb24gb2YgdGhlIGd1dC1icmFpbiBheGlzLjwvcD48dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWJvcmRlcmVkIG1iLTQgYXJ0aWNsZS1jYXJkLXRleHQiPgogIDx0cj4KICAgIDx0aD5UaGVyYXBldXRpYyBBcHByb2FjaDwvdGg+CiAgICA8dGg+RGVzY3JpcHRpb248L3RoPgogICAgPHRoPlRhcmdldCBDb25kaXRpb248L3RoPgogICAgPHRoPkV4YW1wbGUgVHJlYXRtZW50PC90aD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5Qcm9iaW90aWNzPC90ZD4KICAgIDx0ZD5MaXZlIGJlbmVmaWNpYWwgYmFjdGVyaWEgdGhhdCByZXN0b3JlIGd1dCBtaWNyb2Jpb3RhIGJhbGFuY2UuPC90ZD4KICAgIDx0ZD5HdXQgZHlzYmlvc2lzPC90ZD4KICAgIDx0ZD5MYWN0b2JhY2lsbHVzIGFuZCBCaWZpZG9iYWN0ZXJpdW0gc3VwcGxlbWVudHM8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPkRpZXRhcnkgSW50ZXJ2ZW50aW9uczwvdGQ+CiAgICA8dGQ+Q2hhbmdlcyBpbiBkaWV0IHRvIHN1cHBvcnQgZ3V0IGhlYWx0aCBhbmQgcmVkdWNlIGluZmxhbW1hdGlvbi48L3RkPgogICAgPHRkPkxlYWt5IGd1dCBzeW5kcm9tZTwvdGQ+CiAgICA8dGQ+RWxpbWluYXRpb24gb2YgcHJvY2Vzc2VkIGZvb2RzLCBpbmNvcnBvcmF0aW9uIG9mIGZpYmVyLXJpY2ggZm9vZHM8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPlByZWJpb3RpY3M8L3RkPgogICAgPHRkPk5vbi1kaWdlc3RpYmxlIGZpYmVycyB0aGF0IHByb21vdGUgdGhlIGdyb3d0aCBvZiBiZW5lZmljaWFsIGd1dCBiYWN0ZXJpYS48L3RkPgogICAgPHRkPkd1dCBtaWNyb2Jpb3RhIGltYmFsYW5jZTwvdGQ+CiAgICA8dGQ+SW51bGluIGFuZCBmcnVjdG9vbGlnb3NhY2NoYXJpZGVzPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5Qc3ljaG9iaW90aWNzPC90ZD4KICAgIDx0ZD5Qcm9iaW90aWNzIHRoYXQgaGF2ZSBhIHBvc2l0aXZlIGVmZmVjdCBvbiBtZW50YWwgaGVhbHRoLjwvdGQ+CiAgICA8dGQ+QW54aWV0eSBhbmQgZGVwcmVzc2lvbjwvdGQ+CiAgICA8dGQ+TGFjdG9iYWNpbGx1cyBoZWx2ZXRpY3VzPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5NaWNyb2Jpb21lLUJhc2VkIFRoZXJhcGllczwvdGQ+CiAgICA8dGQ+VGFyZ2V0aW5nIHNwZWNpZmljIG1pY3JvYmlhbCBwYXRod2F5cyB0byBpbXByb3ZlIGhlYWx0aCBvdXRjb21lcy48L3RkPgogICAgPHRkPk5ldXJvaW5mbGFtbWF0b3J5IGRpc29yZGVyczwvdGQ+CiAgICA8dGQ+RmVjYWwgbWljcm9iaW90YSB0cmFuc3BsYW50YXRpb248L3RkPgogIDwvdHI+CjwvdGFibGU+CjxoMj5Db25jbHVzaW9uPC9oMj48cD5UaGUgImd1dC1icmFpbiBheGlzIiBzZXJ2ZXMgYXMgYSBjcml0aWNhbCBwYXRod2F5IGZvciBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIGd1dCBtaWNyb2Jpb3RhIGFuZCB0aGUgY2VudHJhbCBuZXJ2b3VzIHN5c3RlbS4gRHlzZnVuY3Rpb24gaW4gdGhpcyBheGlzIGNhbiBsZWFkIHRvIHZhcmlvdXMgaXNzdWVzLCBpbmNsdWRpbmcgYmxvb2QtYnJhaW4gYmFycmllciBkeXNmdW5jdGlvbiBhbmQgbmV1cm9kZWdlbmVyYXRpb24sIGltcGFjdGluZyB0aGUgb3ZlcmFsbCBicmFpbiBtaWNyb2Vudmlyb25tZW50LiBIZWFsdGh5IGd1dCBiYWN0ZXJpYSBwbGF5IGEgc2lnbmlmaWNhbnQgcm9sZSBpbiByZWd1bGF0aW5nIGJlaGF2aW9yIGFuZCBzdXBwb3J0aW5nIHZpYWJsZSBuZXVyb25zLCB3aGlsZSBkaXNydXB0aW9ucyBpbiB0aGlzIGJhbGFuY2UgY2FuIHJlc3VsdCBpbiBuZXVyb2xvZ2ljYWwgYWJub3JtYWxpdGllcyBhbmQgbmVydm91cyBzeXN0ZW0gYWJub3JtYWxpdGllcy4gVGhlIGludGVycGxheSBvZiBpbW11bmUtYnJhaW4gY29tbXVuaWNhdGlvbiBoaWdobGlnaHRzIGhvdyBhbHRlcmF0aW9ucyBpbiBndXQgYmFjdGVyaWEgY2FuIGluZmx1ZW5jZSBicmFpbiBjb250cm9sIG9mIGZlZWxpbmdzIGFuZCBlbW90aW9uYWwgcmVzcG9uc2VzLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGNvbm5lY3Rpb25zIGlzIGVzc2VudGlhbCBmb3IgYWRkcmVzc2luZyBtZW50YWwgaGVhbHRoIGNoYWxsZW5nZXMgYW5kIHByb21vdGluZyBvdmVyYWxsIHdlbGwtYmVpbmcuPC9wPgo8aDI+RkFRUzwvaDI+PGgzPkhvdyBkb2VzIHRoZSBndXTigJNicmFpbiBheGlzIGluZmx1ZW5jZSBvdXIgbW9vZCBhbmQgb3ZlcmFsbCBtZW50YWwgaGVhbHRoPzwvaDM+PHA+VGhlIGd1dOKAk2JyYWluIGF4aXMgcGxheXMgYSBzaWduaWZpY2FudCByb2xlIGluIGluZmx1ZW5jaW5nIG1vb2QgYW5kIG1lbnRhbCBoZWFsdGggdGhyb3VnaCBjb21wbGV4IGJyYWlu4oCTZ3V0IGludGVyYWN0aW9ucy4gUmVzZWFyY2ggaW5kaWNhdGVzIHRoYXQgdGhlIG1pY3JvYmlvdGHigJNndXTigJNicmFpbiBheGlzIGltcGFjdHMgdGhlIGh1bWFuIGJyYWluJ3MgZnVuY3Rpb25hbGl0eSwgaW5jbHVkaW5nIHRoZSBwcm9kdWN0aW9uIG9mIGJyYWluLWRlcml2ZWQgbmV1cm90cm9waGljIGZhY3Rvciwgd2hpY2ggaXMgdml0YWwgZm9yIG5ldXJvcGxhc3RpY2l0eS4gRGlzb3JkZXJzIG9mIGd1dOKAk2JyYWluIGludGVyYWN0aW9uIGNhbiBsZWFkIHRvIHZhcmlvdXMgbmV1cm9sb2dpY2FsIGFibm9ybWFsaXRpZXMuIFRoaXMgcmVsYXRpb25zaGlwIHN1Z2dlc3RzIHRoYXQgbWFpbnRhaW5pbmcgYSBoZWFsdGh5IGd1dCBtaWNyb2Jpb3RhIGNhbiBlbmhhbmNlIGJyYWluIGJpb2NoZW1pc3RyeSBhbmQgbWF5IGhlbHAgaW4gcmVndWxhdGluZyB0aGUgbmVydm91cyBzeXN0ZW0sIHBvdGVudGlhbGx5IGFmZmVjdGluZyBmZWVsaW5ncyBhbmQgYmVoYXZpb3JzLjwvcD48aDM+V2hhdCByb2xlIGRvZXMgdGhlIG1pY3JvYmlvdGHigJNndXTigJNicmFpbiBheGlzIHBsYXkgaW4gcmVndWxhdGluZyBlbW90aW9ucyBhbmQgY29nbml0aXZlIGZ1bmN0aW9ucz88L2gzPjxwPlRoZSBtaWNyb2Jpb3Rh4oCTZ3V04oCTYnJhaW4gYXhpcyBzaWduaWZpY2FudGx5IGluZmx1ZW5jZXMgaG93IHRoZSBicmFpbiBjb250cm9sIGZlZWxpbmdzIGFuZCBjYW4gYWZmZWN0IG92ZXJhbGwgbW9vZCB0aHJvdWdoIHRoZSBndXTigJNicmFpbiBtaWNybyBiaW9tZSBzeXN0ZW0uIFJlc2VhcmNoIG9uIHRoZSBicmFpbuKAk2d1dCBheGlzIGhpZ2hsaWdodHMgdGhlIGltcG9ydGFuY2Ugb2YgZ3V0IG1pY3JvYmlvdGEgaW4gdGhlIGNvbnRleHQgb2YgYnJhaW4gZGVyaXZlZCBuZXVyb3Ryb3BoaWMgZmFjdG9yLCB3aGljaCBpcyBjcnVjaWFsIGZvciBtYWludGFpbmluZyBhIHByb3BlciBtYXR1cmUgZ3V0IGFuZCBibG9vZOKAk2JyYWluIGJhcnJpZXIgaW50ZWdyaXR5LiBTdHVkaWVzIHNob3cgdGhhdCB0aGlzIGludGVyYWN0aW9uIG1heSByZXNldCBicmFpbiBnZW5lIGV4cHJlc3Npb25zIHRoYXQgcmVsYXRlIHRvIGhvdyB0aGUgY2VudHJhbCBuZXJ2ZSBzeXN0ZW0gb3BlcmF0ZXMsIHRoZXJlYnkgaW1wYWN0aW5nIGNvZ25pdGl2ZSBmdW5jdGlvbnMgYW5kIGJlaGF2aW9yLCBwYXJ0aWN1bGFybHkgaW4gbmV1cm9sb2dpY2FsIGFibm9ybWFsaXRpZXMgYXNzb2NpYXRlZCB3aXRoIG5ldXJvZGVnZW5lcmF0aW9uLjwvcD48aDM+V2hhdCBuZXcgZmluZGluZ3MgaGF2ZSBlbWVyZ2VkIGluIGd1dOKAk2JyYWluIHJlc2VhcmNoIHJlZ2FyZGluZyB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gZ3V0IG1pY3JvYmlvdGEgYW5kIHRoZSBicmFpbj88L2gzPjxwPlJlY2VudCBzdHVkaWVzIGluIGd1dOKAk2JyYWluIHJlc2VhcmNoIGhhdmUgaGlnaGxpZ2h0ZWQgaG93IHRoZSBtaWNyb2Jpb3Rh4oCTZ3V04oCTYnJhaW4gYXhpcywgY29tbW9ubHkgY2FsbGVkIHRoZSBndXQtYnJhaW4gYXhpcywgcGxheXMgYSBjcnVjaWFsIHJvbGUgaW4gaW5mbHVlbmNpbmcgYnJhaW4gaGVhbHRoIGFuZCBiZWhhdmlvci4gVGhlc2UgZmluZGluZ3MgcmV2ZWFsIHRoYXQgdGhlIGd1dCBtaWNyb2Jpb3RhIGludGVuc2lmaWVzIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgZ3V0IGFuZCB0aGUgYnJhaW4sIGltcGFjdGluZyBheGlzIGFjdGl2YXRpb24gYW5kIHBvdGVudGlhbGx5IGFmZmVjdGluZyBuZXJ2b3VzIHN5c3RlbSBmdW5jdGlvbi4gQWRkaXRpb25hbGx5LCByZXNlYXJjaCBoYXMgc2hvd24gdGhhdCB0aGlzIGd1dC1icmFpbiBjaXJjdWl0IGNhbiByZXNldCBicmFpbiBnZW5lIGV4cHJlc3Npb24sIHdoaWNoIG1heSBoZWxwIG1pdGlnYXRlIG5ldXJvbG9naWNhbCBhYm5vcm1hbGl0aWVzIGFuZCBhZ2UtcmVsYXRlZCBicmFpbiBjaGFuZ2VzLiBBcyB0aGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZ3V04oCTYnJhaW7igJNtaWNyb2Jpb21lIHN5c3RlbSBldm9sdmVzLCB0aGUgc2lnbmlmaWNhbmNlIG9mIGd1dCBiYWN0ZXJpYSBpbiBicmFpbiBoZWFsdGgsIGluY2x1ZGluZyBuZXVyb3Ryb3BoaWMgZmFjdG9ycyB0aGF0IGVuaGFuY2UgYnJhaW4gZnVuY3Rpb24sIGJlY29tZXMgaW5jcmVhc2luZ2x5IGNsZWFyLjwvcD48aDM+V2hhdCBpcyB0aGUgaW1wb3J0YW5jZSBvZiB0aGUgZ3V0IG1pY3JvYmlvdGEgaW4gdGhlIGd1dC1icmFpbiBheGlzIGFuZCBpdHMgaW1wYWN0IG9uIGJyYWluIGhlYWx0aD88L2gzPjxwPlRoZSBndXQgbWljcm9iaW90YSBwbGF5cyBhIGNydWNpYWwgcm9sZSBpbiB3aGF0IGlzIGNvbW1vbmx5IGNhbGxlZCB0aGUgZ3V0LWJyYWluIGF4aXMsIGluZmx1ZW5jaW5nIHZhcmlvdXMgYXNwZWN0cyBvZiBicmFpbiBoZWFsdGguIFJlc2VhcmNoIGluZGljYXRlcyB0aGF0IHRoZSBicmFpbuKAk2d1dOKAk21pY3JvYmlvbWUgYXhpcyByZWd1bGF0ZXMgbmV1cm90cm9waGljIGZhY3RvcnMgdGhhdCBlbmhhbmNlIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgZ3V0IGFuZCB0aGUgYnJhaW4uIFRoaXMgZ3V04oCTYnJhaW4gY2lyY3VpdCBjYW4gcmVzZXQgYnJhaW4gZ2VuZSBleHByZXNzaW9uIGFuZCBzaWduaWZpY2FudGx5IGFmZmVjdHMgdGhlIG5lcnZvdXMgc3lzdGVtLCBpbmRpY2F0aW5nIGEgY29tcGxleCByZWxhdGlvbnNoaXAgdGhhdCBjYW4gaW1wYWN0IHRoZSBhZ2VkIGJyYWluLiBTdHVkaWVzIGhhdmUgc2hvd24gdGhhdCBkaXNydXB0aW9ucyBpbiBndXQgbWljcm9iaW90YSBjYW4gbGVhZCB0byBiZWhhdmlvciBjaGFuZ2VzIGFuZCBldmVuIG5ldXJvbG9naWNhbCBhYm5vcm1hbGl0aWVzLCBlbXBoYXNpemluZyB0aGUgbmVlZCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZ3V0LW1pY3JvYmlvdGEtYnJhaW4gYXhpcyBmb3IgbWFpbnRhaW5pbmcgb3B0aW1hbCBicmFpbiBmdW5jdGlvbi48L3A+PGgzPldoYXQgcmVjZW50IHN0dWRpZXMgaGF2ZSBkZW1vbnN0cmF0ZWQgcmVnYXJkaW5nIGhvdyB0aGUgZ3V0IG1pY3JvYmlvdGEgaW50ZXJhY3RzIHdpdGggdGhlIGJyYWluIGFuZCBpdHMgaW1wYWN0IG9uIG5ldXJvbG9naWNhbCBoZWFsdGg/PC9oMz48cD5SZWNlbnQgc3R1ZGllcyBoYXZlIGluZGljYXRlZCB0aGF0IHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgZ3V0IG1pY3JvYmlvdGEgYW5kIHRoZSBicmFpbiwgb2Z0ZW4gcmVmZXJyZWQgdG8gYXMgdGhlIGNhbGxlZCBndXQtYnJhaW4gYXhpcywgYXJlIGNydWNpYWwgaW4gdW5kZXJzdGFuZGluZyBob3cgZ3V0IGJhY3RlcmlhIGNhbiBpbmZsdWVuY2UgdmFyaW91cyBicmFpbiBmdW5jdGlvbnMuIFRoZXNlIHN0dWRpZXMgaGlnaGxpZ2h0IHRoYXQgZGlzcnVwdGlvbnMgaW4gdGhlIGd1dCBjYW4gbGVhZCB0byBuZXVyb2xvZ2ljYWwgYWJub3JtYWxpdGllcyBhbmQgYWZmZWN0IHRoZSBuZXJ2b3VzIHN5c3RlbS4gRnVydGhlcm1vcmUsIHRoZSB0aXNzdWUtZ3V0YnJhaW4gYXhpcyBwbGF5cyBhIHNpZ25pZmljYW50IHJvbGUgaW4gaG93IGd1dCBoZWFsdGggY2FuIHJlc2V0IGJyYWluIGdlbmUgZXhwcmVzc2lvbnMgYW5kIGlzIGxpbmtlZCB0byBuZXVyb2RlZ2VuZXJhdGlvbi4gVGhpcyByZWxhdGlvbnNoaXAgZW1waGFzaXplcyB0aGUgaW1wb3J0YW5jZSBvZiBtYWludGFpbmluZyBhIGhlYWx0aHkgZ3V0IHRvIHN1cHBvcnQgb3ZlcmFsbCBicmFpbiBoZWFsdGggYW5kIG1pdGlnYXRlIHBvc3NpYmxlIGJlaGF2aW9ycyByZWxhdGVkIHRvIG5ldXJvbG9naWNhbCBpc3N1ZXMuPC9wPjxoMz5Ib3cgZG8gY2hhbmdlcyBpbiBndXQgbWljcm9iaW90YSBpbXBhY3QgdGhlIGJyYWluIGFuZCBuZXVyb2xvZ2ljYWwgaGVhbHRoIG92ZXIgdGltZT88L2gzPjxwPkNoYW5nZXMgaW4gZ3V0IG1pY3JvYmlvdGEgY2FuIHNpZ25pZmljYW50bHkgYWZmZWN0IHRoZSBicmFpbi4gU3R1ZGllcyBoYXZlIHNob3duIHRoYXQgdGhlIGd1dOKAk2JyYWluIGF4aXMgcmVhY3RzIHRvIHZhcmlvdXMgZmFjdG9ycywgd2hpY2ggY2FuIGxlYWQgdG8gYWx0ZXJhdGlvbnMgaW4gdGhlIGJyYWluIGFmZmVjdGluZyBtb29kIGFuZCBiZWhhdmlvci4gRm9yIGluc3RhbmNlLCB0aGUgMjkgc3R1ZGllcyBpbmRpY2F0ZSB0aGF0IGhlYWx0aHkgZ3V0IGJhY3RlcmlhIHN1cHBvcnQgdGhlIHByb2R1Y3Rpb24gb2YgbmV1cm90cm9waGljIGZhY3RvcnMsIHdoaWNoIGVuaGFuY2UgYnJhaW4gZnVuY3Rpb24gYW5kIG1heSBoZWxwIHJlZHVjZSBuZXVyb2RlZ2VuZXJhdGlvbi4gQWRkaXRpb25hbGx5LCBhbiBhZ2VkIGJyYWluIG1pZ2h0IGRpc3BsYXkgbmV1cm9sb2dpY2FsIGFibm9ybWFsaXRpZXMgbGlua2VkIHRvIGd1dCBpbWJhbGFuY2VzLCBzdWdnZXN0aW5nIHRoYXQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGd1dCBhbmQgYnJhaW4gaGVhbHRoIGlzIGNyaXRpY2FsIGZvciBtYWludGFpbmluZyBvcHRpbWFsIG5lcnZvdXMgc3lzdGVtIGZ1bmN0aW9uLjwvcD48aDM+SG93IGRvZXMgdGhlIGNvbXBvc2l0aW9uIG9mIGd1dCBiYWN0ZXJpYSBwbGF5IGEgcm9sZSBpbiB0aGUgYnJhaW4ncyByZXNwb25zZSB0byBzdHJlc3MgYW5kIGFueGlldHkgb3ZlciB0aW1lPzwvaDM+PHA+U3R1ZGllcyBpbmRpY2F0ZSB0aGF0IHRoZSBndXQgbWljcm9iaW90YSBzaWduaWZpY2FudGx5IGluZmx1ZW5jZXMgdGhlIGF4aXMgcmVhY3Rpb24gYmV0d2VlbiB0aGUgZ3V0IGFuZCB0aGUgYnJhaW4sIGFmZmVjdGluZyBob3cgdGhlIGJyYWluIHJlYWN0cyB0byBzdHJlc3MgZmFjdG9ycy4gUmVzZWFyY2ggc2hvd3MgdGhhdCBhIGRpdmVyc2UgYXJyYXkgb2YgZ3V0IGJhY3RlcmlhIGNhbiBtb2R1bGF0ZSB0aGUgbmVydm91cyBzeXN0ZW0sIHdoaWNoIG1heSByZXNldCBicmFpbiBnZW5lIGV4cHJlc3Npb25zIHJlbGF0ZWQgdG8gc3RyZXNzIHJlc3BvbnNlLiBUaGlzIGludGVyYWN0aW9uIG1heSBsZWFkIHRvIGJlaGF2aW9yYWwgY2hhbmdlcyBhbmQgaXMgY3JpdGljYWwgaW4gdW5kZXJzdGFuZGluZyBuZXVyb2RlZ2VuZXJhdGlvbiBhcyB3ZWxsIGFzIHBvdGVudGlhbCBpbnRlcnZlbnRpb25zIGZvciBuZXVyb2xvZ2ljYWwgYWJub3JtYWxpdGllcy4gUmVndWxhciBhbmFseXNpcyBvZiBndXQgbWljcm9iaW90YSBjYW4gc2VydmUgYXMgYSBzdW1tYXJ5IG9mIHlvdXIgZ3V04oCZcyBoZWFsdGggYW5kIGl0cyB2aXRhbCBsaW5rIHRvIHRoZSBhZ2VkIGJyYWluLjwvcD48aDM+SG93IGRvZXMgdGhlIGNvbXBvc2l0aW9uIG9mIGd1dCBiYWN0ZXJpYSBpbmZsdWVuY2UgdGhlIGZ1bmN0aW9uaW5nIG9mIHRoZSBhZ2VkIGJyYWluIGFuZCBpdHMgb3ZlcmFsbCBuZXVyb2xvZ2ljYWwgaGVhbHRoPzwvaDM+PHA+VGhlIGNvbXBvc2l0aW9uIG9mIGd1dCBiYWN0ZXJpYSBwbGF5cyBhIHNpZ25pZmljYW50IHJvbGUgaW4gdGhlIGhlYWx0aCBvZiB0aGUgYWdlZCBicmFpbi4gU3R1ZGllcyBpbmRpY2F0ZSB0aGF0IGEgYmFsYW5jZWQgZ3V0IG1pY3JvYmlvdGEgY2FuIHJlc2V0IGJyYWluIGdlbmUgZXhwcmVzc2lvbnMgYXNzb2NpYXRlZCB3aXRoIG5ldXJvdHJvcGhpYyBmYWN0b3JzLCB3aGljaCBlbmhhbmNlIGJyYWluIGZ1bmN0aW9uIGFuZCBtYXkgaGVscCBtaXRpZ2F0ZSBuZXVyb2RlZ2VuZXJhdGlvbi4gRGlzcnVwdGlvbnMgaW4gZ3V0IG1pY3JvYmlvdGEgY2FuIGxlYWQgdG8gbmV1cm9sb2dpY2FsIGFibm9ybWFsaXRpZXMsIGFmZmVjdGluZyBiZWhhdmlvciBhbmQgY29nbml0aW9uLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgaW50ZXJhY3Rpb25zIGJldHdlZW4gZ3V0IGFuZCBicmFpbiBhZmZlY3QgdGhlIG92ZXJhbGwgZnVuY3Rpb25pbmcgb2YgdGhlIG5lcnZvdXMgc3lzdGVtLjwvcD48aDM+V2hhdCBpcyBhIHN1bW1hcnkgb2YgaG93IGd1dCBiYWN0ZXJpYSBhZmZlY3QgdGhlIGFnZWQgYnJhaW4gYW5kIGl0cyBuZXVyb2xvZ2ljYWwgaGVhbHRoPzwvaDM+PHA+VGhlIHN1bW1hcnkgb2YgaG93IGd1dCBiYWN0ZXJpYSBpbmZsdWVuY2UgdGhlIGFnZWQgYnJhaW4gcmV2ZWFscyB0aGF0IGd1dCBtaWNyb2Jpb3RhIGNhbiBzaWduaWZpY2FudGx5IGltcGFjdCBicmFpbiBoZWFsdGggYnkgYWZmZWN0aW5nIHRoZSBuZXJ2b3VzIHN5c3RlbS4gU3R1ZGllcyBpbmRpY2F0ZSB0aGF0IGNoYW5nZXMgaW4gZ3V0IGJhY3RlcmlhIGNhbiBpbmZsdWVuY2UgdGhlIGZ1bmN0aW9uaW5nIG9mIHRoZSBhZ2VkIGJyYWluLCBwb3RlbnRpYWxseSByZXNldHRpbmcgYnJhaW4gZ2VuZXMgYW5kIG5ldXJvdHJvcGhpYyBmYWN0b3JzIHRoYXQgZW5oYW5jZSBicmFpbiBoZWFsdGguIFRoaXMgY29ubmVjdGlvbiBzdWdnZXN0cyB0aGF0IGFsdGVyYXRpb25zIGluIGd1dCBtaWNyb2Jpb3RhIG1heSBwbGF5IGEgcm9sZSBpbiBwcmV2ZW50aW5nIG5ldXJvZGVnZW5lcmF0aW9uIGFuZCBhZGRyZXNzaW5nIG5ldXJvbG9naWNhbCBhYm5vcm1hbGl0aWVzLCB1bHRpbWF0ZWx5IGFmZmVjdGluZyBiZWhhdmlvciBhbmQgY29nbml0aXZlIGZ1bmN0aW9ucy48L3A+PGgzPldoYXQgaXMgYSBzdW1tYXJ5IG9mIHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiBndXQgbWljcm9iaW90YSBhbmQgaG93IHRoZXkgYWZmZWN0IHRoZSBicmFpbiwgcGFydGljdWxhcmx5IGluIHRoZSBhZ2VkIGJyYWluIGFuZCBpdHMgb3ZlcmFsbCBuZXVyb2xvZ2ljYWwgaGVhbHRoPzwvaDM+PHA+QSBzdW1tYXJ5IG9mIGhvdyBndXQgbWljcm9iaW90YSBhZmZlY3QgdGhlIGFnZWQgYnJhaW4gcmV2ZWFscyB0aGF0IHRoZSBjb21wb3NpdGlvbiBvZiBndXQgYmFjdGVyaWEgY2FuIGluZmx1ZW5jZSBicmFpbiBmdW5jdGlvbnMgYW5kIGJlaGF2aW9yLCBwb3RlbnRpYWxseSBpbXBhY3RpbmcgbmV1cm9sb2dpY2FsIGhlYWx0aC4gUmVjZW50IHN0dWRpZXMgaW5kaWNhdGUgdGhhdCB0aGUgZ3V0IGNhbiBhbHRlciB0aGUgYnJhaW4ncyByZXNwb25zZSB0byBuZXVyb2RlZ2VuZXJhdGlvbiBhbmQgZW5oYW5jZSBuZXVyb3Ryb3BoaWMgZmFjdG9ycyB0aGF0IG1heSByZXNldCBicmFpbiBnZW5lIGV4cHJlc3Npb25zLiBUaGlzIGludGVyYWN0aW9uIGlzIGNydWNpYWwgYXMgaXQgb3V0bGluZXMgaG93IG91ciBndXQgaW5mbHVlbmNlcyBub3Qgb25seSB0aGUgbmVydm91cyBzeXN0ZW0gYnV0IGFsc28gY29nbml0aXZlIGZ1bmN0aW9ucyBhbmQgZW1vdGlvbmFsIHdlbGwtYmVpbmcsIHBhcnRpY3VsYXJseSBpbiBvbGRlciBhZHVsdHMuPC9wPg==