PCEtLSBzYXZlZCBmcm9tIHVybD0oMDAyMilodHRwOi8vaW50ZXJuZXQuZS1tYWlsIC0tPgo8IWRvY3R5cGUgaHRtbCBwdWJsaWMgIi0vL3czYy8vZHRkIGh0bWwgNC4wIHRyYW5zaXRpb25hbC8vZW4iPgo8aHRtbD4KPGhlYWQ+CiAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgogICA8bWV0YSBuYW1lPSJBdXRob3IiIGNvbnRlbnQ9IkVjbGlwc2UgUHJvamVjdCI+CiAgIDx0aXRsZT5Ub3dhcmRzIE1vcmUgRmxleGlibGUgUHJvamVjdCBTdHJ1Y3R1cmU8L3RpdGxlPgogICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2RlZmF1bHRfc3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjwvaGVhZD4KPGJvZHkgYmdjb2xvcj0iI0ZGRkZGRiIgPgoKPGRpdiBhbGlnbj0ibGVmdCI+IAogIDxoMT4gVG93YXJkcyBNb3JlIEZsZXhpYmxlIFByb2plY3QgU3RydWN0dXJlPC9oMT4KPC9kaXY+CjxibG9ja3F1b3RlPiAKICA8cD48Yj5TdW1tYXJ5PC9iPiA8YnI+CiAgRWNsaXBzZSByZXF1aXJlcyB0aGF0IHRoZSBjb250ZW50cyBvZiBlYWNoIHByb2plY3QgYmUgc3RvcmVkIGluIGEgc2luZ2xlIGRpcmVjdG9yeSBvbiBkaXNrLgogIEV2ZXJ5IGZpbGUgYW5kIGZvbGRlciBpbiB0aGF0IGRpcmVjdG9yeSB0cmVlIG9uIGRpc2sgbXVzdCBiZWxvbmcgdG8gdGhlIHByb2plY3QgaW4gdGhlIHdvcmtzcGFjZS4KICBUaGlzIHJlc3RyaWN0aW9uIG1ha2VzIGl0IGRpZmZpY3VsdCB0byB1c2UgRWNsaXBzZSBpbiBjb25qdW5jdGlvbiB3aXRoIHRvb2xzIHRoYXQgaGF2ZSBzcGVjaWZpYyBsYXlvdXQKICByZXF1aXJlbWVudHMgZm9yIHRoZWlyIGZpbGVzLCBvciB3aXRoIHVzZXJzIHdobyBoYXZlIGxlZ2FjeSBmaWxlIGJhc2UgbGF5b3V0cyB0aGF0IHRoZXkgbmVlZAogIHRvIG1haW50YWluLiBXZSB3b3VsZCBsaWtlIHRvIGltcHJvdmUgdGhlIHNpdHVhdGlvbiBmb3IgdGhlIDIuMSByZWxlYXNlIG9mCiAgRWNsaXBzZS4gVGhlcmUgaXMgYSBzZXBhcmF0ZSwgZmlyc3QgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lY2xpcHNlL2RldmVsb3BtZW50L2luZmxleGlibGUtcHJvamVjdHMtcHJvYmxlbS5odG1sIj5kb2N1bWVudAogIGRlc2NyaWJpbmcgdGhlIG5hdHVyZSBvZiB0aGUgcHJvYmxlbTwvYT4uIFRoaXMgZG9jdW1lbnQgZXhwbG9yZXMgdGhlIHNwYWNlIG9mCiAgcG90ZW50aWFsIHNvbHV0aW9ucywgd2l0aG91dCBkcmlsbGluZyBkb3duIGludG8gdGhlIGRldGFpbHMgb2YgYW55IG9mIHRoZW0uPGJyPjxicj4KICAgIExhc3QgTW9kaWZpZWQ6IDE0OjAwIE9jdG9iZXIgNCwgMjAwMjwvcD4KPC9ibG9ja3F1b3RlPgo8cD5JbiB0aGlzIGRvY3VtZW50IHdlIGV4cGxvcmUgdGhlIHNwYWNlIG9mIHBvdGVudGlhbCBzb2x1dGlvbnMsIHRvIGJldHRlcgp1bmRlcnN0YW5kIHdoZXJlIHRoZSB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIHByb2JsZW0gY2FuIGFuZCBjYW5ub3QgYmUgYWRkcmVzc2VkLgpBbHRob3VnaCBtdWNoIG9mIHRoZSBkaXNjdXNzaW9uIHdpbGwgY2VudGVyIGFyb3VuZCBKYXZhLCB0aGUgcHJvYmxlbXMgYXJlIGxpa2VseSBub3QKY29uZmluZWQgdG8KSmF2YSBhbmQgd2lsbCBhZmZlY3QgdG9vbHMgZm9yIG90aGVyIGxhbmd1YWdlcy4gSW4gbW9zdCBjYXNlcywgd2Ugd2lsbCBoYXZlIHRoZSBvcHRpb24gb2YgYWRkcmVzc2luZyB0aGUgcHJvYmxlbSBhdCB0aGUgSkRUCmxldmVsIHdpdGhvdXQgY2hhbmdpbmcgdGhlIEVjbGlwc2UgUGxhdGZvcm0uIFRoaXMgaGFzIGl0cyBwcm9zIGFuZCBjb25zLiBQcm86CnRoZSBzb2x1dGlvbiBjYW4gYmUgc3BlY2lhbGl6ZWQgZm9yIEphdmEuIENvbjogVGhlIHNvbHV0aW9uIHdvdWxkIG5vdCBhcHBseSB0byBDCnRvb2xzLCBmb3IgZXhhbXBsZS4gT24gdGhlIG90aGVyIGhhbmQsIGFkZHJlc3NpbmcgdGhlIHByb2JsZW0gYXQgdGhlIGxldmVsIG9mCnRoZSBFY2xpcHNlIFBsYXRmb3JtIGFsc28gaGFzIGl0cyBwcm9zIGFuZCBjb25zLiBQcm86IFRoZSBzb2x1dGlvbiB3b3VsZCBhcHBseQp0byBDIHRvb2xzLCBldGMuIENvbjogVGhlIGNoYW5nZSBtYXkgaW1wYWN0IGFsbCB0b29scyBhbmQgdXNlcnMuIEFsbCB0aGlzIG11c3QgYmUKZmFjdG9yZWQgaW4gdG8gdGhlIGRlY2lzaW9uLW1ha2luZyBwcm9jZXNzLjwvcD4KPHA+SW4gdGhlIGZpbmFsIGRlY2lzaW9uLCB3ZSBtYXkgb25seSBiZSBhYmxlIHRvIGFkZHJlc3MgYSBzdWJzZXQgb2YgdGhlCnByb2JsZW1zLiBCdXQgaGVyZSB3ZSBwcm9jZWVkIHdpdGggYW4gdW5saW1pdGVkIGJ1ZGdldCBmb3IgZXhwbG9yYXRpb24uPC9wPgo8aDI+UHJvcyBvZiB0aGUgY3VycmVudCBFY2xpcHNlPC9oMj4KPHA+QWx0aG91Z2ggdGhlIHJlc3RyaWN0aW9ucyBvbiB0aGUgc3RydWN0dXJlIG9mIEVjbGlwc2UgcHJvamVjdHMgbWF5IGNvbWUKYWNyb3NzIGFzIGluZmxleGlibGUgdG8gc29tZSwgdGhlIGN1cnJlbnQgc2NoZW1lIGhhcyBzZXZlcmFsIGltcG9ydGFudCB2aXJ0dWVzOjwvcD4KPHVsPgogIDxsaT5TaW5nbGUtcm9vdGVkIEVjbGlwc2UgcHJvamVjdCBpcyBzaW1wbGUgdG8gZXhwbGFpbiB0byB1c2VycyBhbmQgcGx1Zy1pbgogICAgd3JpdGVycyBhbGlrZTogQWxsIG9mIGEgcHJvamVjdCdzIGZpbGVzIGFyZSBpbiBhIHNpbmdsZSBmaWxlIHN5c3RlbQogICAgc3ViZGlyZWN0b3J5LiBFbmQgb2Ygc3RvcnkuPC9saT4KICA8bGk+QWxsLWluY2x1c2l2ZSBFY2xpcHNlIHByb2plY3QgbWVhbnMgdGhhdCB0aGUgcHJvamVjdCByZXNvdXJjZSB0cmVlIGlzIGFuCiAgICBhY2N1cmF0ZSBpbi1tZW1vcnkgbW9kZWwgb2YgdGhlIGNvcnJlc3BvbmRpbmcgdHJlZSBvZiBmaWxlcyBpbiB0aGUgZmlsZQogICAgc3lzdGVtLiBQbHVnLWlucyBjYW4gcXVpY2tseSB0cmF2ZXJzZSB0aGUgaW4tbWVtb3J5IHRyZWUgd2l0aG91dCBoYXZpbmcgdG8KICAgIG1ha2UgZXhwZW5zaXZlIE9TIGZpbGUgSU8gY2FsbHMuIFRvb2xzIHRoYXQgb3BlcmF0ZSBkaXJlY3RseSBpbiB0aGUgZmlsZQogICAgc3lzdGVtIGNhbiBiZSByZWFkaWx5IGludGVncmF0ZWQgaW50byBFY2xpcHNlIHdpdGggdGhlIGFmdGVyLXRoZS1mYWN0CiAgICBhcHBsaWNhdGlvbiBvZiBhIHNpbXBsZSByZWZyZXNoIG1lY2hhbmlzbSB0byByZXN5bmNocm9uaXplcyB0aGUgcmVzb3VyY2UKICAgIHRyZWUgd2l0aCB0aGUgZmlsZSBzeXN0ZW0uPC9saT4KICA8bGk+Tm9uLW92ZXJsYXBwaW5nIEVjbGlwc2UgcHJvamVjdHMgaXMgc2ltcGxlLiBUaGUgbWFwcGluZyBmcm9tIGZpbGVzIGluIHRoZQogICAgZmlsZSBzeXN0ZW0gdG8gZmlsZXMgaW4gdGhlIHdvcmtzcGFjZSByZXNvdXJjZSB0cmVlIGlzIDEtMSwgYWxsb3dpbmcKICAgIHVuYW1iaWd1b3VzIGxvb2t1cCBvZiBhIHJlc291cmNlIGdpdmVuIGEgZmlsZSBzeXN0ZW0gcGF0aC4gSWYgcHJvamVjdHMKICAgIG92ZXJsYXAsIHRoYXQgbWFwcGluZyBiZWNvbWVzIDEtbWFueSAobXVsdGlwbGUgZGlzdGluY3QgcmVzb3VyY2UgaGFuZGxlcyBtYXAKICAgIHRvIHRoZSBzYW1lIGZpbGUpLjwvbGk+CjwvdWw+CjxoMj5XaGF0IGRvIG90aGVyIElERXMgZG8/PC9oMj4KPHA+CjxiPk5ldEJlYW5zIDMuNCAoPC9iPmFuZCBTdW6ZIE9ORSBTdHVkaW8sIGZvcm1lcmx5IEZvcnRlmSBmb3IgSmF2YZkpPC9wPgogICAgPHVsPgogICAgICA8bGk+UHJvamVjdHMgYXJlIG11bHRpLXJvb3RlZCBhdCB0aGUgdG9wLWxldmVsLjwvbGk+CiAgICAgIDxsaT5UbyB1c2Ugc291cmNlcyBhbmQgbGlicmFyaWVzIGluIElERSB0aGV5IG11c3QgYmUgbW91bnRlZCBhcwogICAgICAgIGZpbGVzeXN0ZW1zLjwvbGk+CiAgICAgIDxsaT5GaWxlc3lzdGVtIGNhbiBiZSBhIGxvY2FsIGZvbGRlciwgYW4gYXJjaGl2ZSwgb3Igc29tZXRoaW5nIGZyb20gVkNNLjwvbGk+CiAgICAgIDxsaT5GaWxlc3lzdGVtcyBhcmUgYWxsLWluY2x1c2l2ZSBieSBkZWZhdWx0LgogICAgICAgIDx1bD4KICAgICAgICAgIDxsaT5SZWd1bGFyIGV4cHJlc3Npb24gZXhjbHVzaW9uIHJ1bGVzIHN0YXRlZCBhdCBmaWxlc3lzdGVtIHJvb3QuPC9saT4KICAgICAgICAgIDxsaT4oUmVmcmVzaCByYXRlIGFsc28gc2V0IGF0IGZpbGVzeXN0ZW0gcm9vdDsgZGVmYXVsdHMgdG8gMTUKICAgICAgICAgICAgcy4pJm5ic3A7PC9saT4KICAgICAgICA8L3VsPgogICAgICA8L2xpPgogICAgICA8bGk+UHJvamVjdHMgcHJvdmlkZSBjb250ZXh0IGZvciBzb3VyY2UgZmlsZXMsIGNvbXBpbGF0aW9uLCBhbmQgZXhlY3V0aW9uLjwvbGk+CiAgICAgIDxsaT5BbGwgd29yayBkb25lIGluIGFuIG9wZW4gcHJvamVjdC48L2xpPgogICAgICA8bGk+RGVmYXVsdCBwcm9qZWN0IGlmIG5vbmUgc3BlY2lmaWVkLjwvbGk+CiAgICAgIDxsaT5DYW4gZGVmaW5lIG5ldyBwcm9qZWN0cy48L2xpPgogICAgICA8bGk+T25seSBvbmUgcHJvamVjdCBvcGVuIGF0IGEgdGltZS48L2xpPgogICAgICA8bGk+RmlsZXN5c3RlbXMgY2FuIGJlIG1vdW50ZWQgaW50byBwcm9qZWN0cy48L2xpPgogICAgICA8bGk+RmlsZXN5c3RlbXMgY2FuIG92ZXJsYXAgYmV0d2VlbiBwcm9qZWN0cy48L2xpPgogICAgICA8bGk+RmlsZXN5c3RlbXMgY2FuIG92ZXJsYXAgZXZlbiB3aXRoaW4gcHJvamVjdHMuPC9saT4KICAgICAgPGxpPlByb2plY3QgbGV2ZWwgY29udHJvbCBvZiBsb2NhdGlvbiBvZiBnZW5lcmF0ZWQgY2xhc3MgZmlsZXMuCiAgICAgICAgPHVsPgogICAgICAgICAgPGxpPk5leHQgdG8gc291cmNlIGZpbGUgKGRlZmF1bHQpLjwvbGk+CiAgICAgICAgICA8bGk+T3V0cHV0IHRvIHNwZWNpZmljIGZpbGVzeXN0ZW0uPC9saT4KICAgICAgICA8L3VsPgogICAgICA8L2xpPgogICAgPC91bD4KPGI+SW50ZWxsaUogSURFQSAyLjY8L2I+CiAgICA8dWw+CiAgICAgIDxsaT5Qcm9qZWN0cyBhcmUgbXVsdGktcm9vdGVkIGF0IHRoZSB0b3AtbGV2ZWwuPC9saT4KICAgICAgPGxpPlJvb3RzIGFyZSBkaXJlY3RvcmllcyBvciBKQVJzIGluIGZpbGUgc3lzdGVtLgogICAgICAgIDx1bD4KICAgICAgICAgIDxsaT5BdXRvbWFnaWNhbGx5IGNvbXB1dGVzIGNvcnJlY3Qgc291cmNlIGZvbGRlciBiYXNlZCBvbiB3aGVyZSBpdAogICAgICAgICAgICBmaW5kcyBKYXZhIHNvdXJjZSBmaWxlczwvbGk+CiAgICAgICAgPC91bD4KICAgICAgPC9saT4KICAgICAgPGxpPkFsbCBmaWxlcyB1bmRlciByb290IGRpcmVjdG9yeSBhcmUgaW5jbHVkZWQgaW4gcHJvamVjdC48L2xpPgogICAgICA8bGk+PGk+UmVtb3ZlPC9pPiBhIHJvb3QgZnJvbSBwcm9qZWN0OyA8aT5kZWxldGU8L2k+IGEgZmlsZSBvciBmb2xkZXIgZnJvbQogICAgICAgIGEgcm9vdC48L2xpPgogICAgICA8bGk+SW5mbyBhYm91dCBwcm9qZWN0IGlzIGtlcHQgaW4gc2VwYXJhdGUgcHJvamVjdCBjb25maWd1cmF0aW9uIGZpbGUKICAgICAgICBuYW1lZCAmbHQ7UHJvamVjdE5hbWUmZ3Q7LmlwcjwvbGk+CiAgICAgIDxsaT5Qcm9qZWN0IGhhcyBjb21waWxlciBvcHRpb24gZm9yIGlnbm9yaW5nIHNwZWNpZmllZCBmaWxlcyBvcgogICAgICAgIHN1YmRpcmVjdG9yaWVzLjwvbGk+CiAgICAgIDxsaT5Xb3Jrc3BhY2UgY29uc2lzdHMgb2YgYSBzaW5nbGUgb3BlbiBwcm9qZWN0LjwvbGk+CiAgICAgIDxsaT5EZWZhdWx0IHByb2plY3QgaWYgbm9uZSBzcGVjaWZpZWQuPC9saT4KICAgICAgPGxpPkNhbiBkZWZpbmUgbmV3IHByb2plY3RzLjwvbGk+CiAgICAgIDxsaT5Pbmx5IG9uZSBwcm9qZWN0IG9wZW4gYXQgYSB0aW1lLgogICAgICAgIDx1bD4KICAgICAgICAgIDxsaT5CdXQgeW91IGNhbiBydW4gbXVsdGlwbGUgaW5zdGFuY2VzIG9mIElERSBhdCBzYW1lIHRpbWUuPC9saT4KICAgICAgICA8L3VsPgogICAgICA8L2xpPgogICAgICA8bGk+U2VwYXJhdGUgcHJvamVjdHMgYXJlIGZyZWUgdG8gb3ZlcmxhcCAobm8gc3BlY2lhbCBzdXBwb3J0KS48L2xpPgogICAgICA8bGk+V2l0aGluIGEgcHJvamVjdCwgc2VwYXJhdGUgcm9vdHMgbWF5IG92ZXJsYXAuPC9saT4KICAgICAgPGxpPlNvdXJjZSBmaWxlcyBhcHBlYXJpbmcgdW5kZXIgbW9yZSB0aGFuIG9uZSByb290IGdlbmVyYXRlIGNvbXBpbGUKICAgICAgICBlcnJvcnMuCiAgICAgICAgPHVsPgogICAgICAgICAgPGxpPkNhbm5vdCBiZSByZW1lZGllZCB3aXRoIGNvbXBpbGVyIG9wdGlvbi48L2xpPgogICAgICAgIDwvdWw+CiAgICAgIDwvbGk+CiAgICAgIDxsaT5PbmUgb3V0cHV0IGZvbGRlciBwZXIgcHJvamVjdC4KICAgICAgICA8dWw+CiAgICAgICAgICA8bGk+TG9jYXRpb24gb2YgZ2VuZXJhdGVkIGNsYXNzIGZpbGVzIGlzIGEgcHJvamVjdCBwcm9wZXJ0eS48L2xpPgogICAgICAgICAgPGxpPihCdXQuLi5JREVBIDMuMCBpcyBtb3JlIGZsZXhpYmxlOiBkaWZmZXJlbnQgb3V0cHV0IGZvbGRlciBmb3IgZWFjaAogICAgICAgICAgICBzb3VyY2UgZm9sZGVyKTwvbGk+CiAgICAgICAgPC91bD4KICAgICAgPC9saT4KICAgIDwvdWw+CjxiPlRvZ2V0aGVyriBDb250cm9sQ2VudGVymSA2LjAuMTwvYj4gCiAgICA8dWw+CiAgICAgIDxsaT5Qcm9qZWN0cyBhcmUgbXVsdGktcm9vdGVkIGF0IHRoZSB0b3AtbGV2ZWwuPC9saT4KICAgICAgPGxpPlJvb3RzIGFyZSBkaXJlY3RvcmllcyBvciBKQVJzIGluIGZpbGUgc3lzdGVtLjwvbGk+CiAgICAgIDxsaT5Sb290cyBhcmUgYWRkZWQgYW5kIHJlbW92ZWQgb25seSBpbiBwcm9qZWN0IHByb3BlcnRpZXMgZGlhbG9nLjwvbGk+CiAgICAgIDxsaT5BbGwgZmlsZXMgdW5kZXIgcm9vdCBkaXJlY3RvcnkgYXJlIGluY2x1ZGVkIGluIHByb2plY3QgdW5sZXNzIGV4Y2x1ZGVkCiAgICAgICAgYnkgYSAmcXVvdDtza2lwIHBhdGgmcXVvdDsgZW50cnkuPC9saT4KICAgICAgPGxpPkluZm8gYWJvdXQgcHJvamVjdCBpcyBrZXB0IGluIHNlcGFyYXRlIHByb2plY3QgZmlsZSBuYW1lZAogICAgICAgICZsdDtQcm9qZWN0TmFtZSZndDsudHByLjwvbGk+CiAgICAgIDxsaT5Qcm9qZWN0IGZpbGUgaXMga2VwdCBpbiBwcmltYXJ5IHJvb3QgZGlyZWN0b3J5IGFsb25nIHdpdGggb3RoZXIKICAgICAgICBwcm9qZWN0LWxldmVsIHByb3BlcnR5IGZpbGVzLjwvbGk+CiAgICAgIDxsaT5Xb3Jrc3BhY2UgY29uc2lzdHMgb2YgYSBzaW5nbGUgb3BlbiBwcm9qZWN0LjwvbGk+CiAgICAgIDxsaT5DYW4gZGVmaW5lIG5ldyBwcm9qZWN0cy48L2xpPgogICAgICA8bGk+T25seSBvbmUgcHJvamVjdCBvcGVuIGF0IGEgdGltZS4KICAgICAgICA8dWw+CiAgICAgICAgICA8bGk+QnV0IHlvdSBjYW4gcnVuIG11bHRpcGxlIGluc3RhbmNlcyBvZiBJREUgYXQgc2FtZSB0aW1lLjwvbGk+CiAgICAgICAgPC91bD4KICAgICAgPC9saT4KICAgICAgPGxpPlNlcGFyYXRlIHByb2plY3RzIGFyZSBmcmVlIHRvIG92ZXJsYXAgKG5vIHNwZWNpYWwgc3VwcG9ydCkuPC9saT4KICAgICAgPGxpPldpdGhpbiBhIHByb2plY3QsIHNlcGFyYXRlIHJvb3RzIG1heSBvdmVybGFwLjwvbGk+CiAgICAgIDxsaT5Tb3VyY2UgZmlsZXMgYXBwZWFyaW5nIHVuZGVyIG1vcmUgdGhhbiBvbmUgcm9vdCBnZW5lcmF0ZSBjb21waWxlCiAgICAgICAgZXJyb3JzLgogICAgICAgIDx1bD4KICAgICAgICAgIDxsaT5DYW4gYmUgcmVtZWRpZWQgd2l0aCAmcXVvdDtza2lwIHBhdGgmcXVvdDsgZmVhdHVyZS48L2xpPgogICAgICAgIDwvdWw+CiAgICAgIDwvbGk+CiAgICAgIDxsaT5Mb2NhdGlvbiBvZiBnZW5lcmF0ZWQgY2xhc3MgZmlsZXMgaXMgaW50ZXJuYWwgYW5kIHVuc3BlY2lmaWVkLjwvbGk+CiAgICA8L3VsPgo8Yj5NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAuTkVUPC9iPgogICAgPHVsPgogICAgICA8bGk+UHJvamVjdHMgYXJlIHNpbmdsZS1yb290ZWQuPC9saT4KICAgICAgPGxpPkZpbGUgaW5jbHVzaW9uIGlzIGluaGVyZW50bHkgc2VsZWN0aXZlLgogICAgICAgIDx1bD4KICAgICAgICAgIDxsaT5UaGVyZSBhcmUgSW5jbHVkZSBpbiBQcm9qZWN0IGFuZCBFeGNsdWRlIGZyb20gUHJvamVjdCBtZW51IGl0ZW1zLjwvbGk+CiAgICAgICAgPC91bD4KICAgICAgPC9saT4KICAgICAgPGxpPldvcmtzcGFjZSBjb25zaXN0cyBvZiBzZXZlcmFsIHByb2plY3RzIChjb2xsZWN0ZWQgaW50byBzb2x1dGlvbnMpLjwvbGk+CiAgICAgIDxsaT5bVEJEIC0gd2hldGhlciBwcm9qZWN0cyBhcmUgYWxsb3dlZCB0byBjb2luY2lkZSBvciBvdmVybGFwXTwvbGk+CiAgICA8L3VsPgo8cD4KPGI+Qm9ybGFuZK4gSkJ1aWxkZXKZPC9iPiAmbmJzcDs8L3A+CjxwPltUaGlzIHNlY3Rpb24gaXMgaW5jb21wbGV0ZS5dPC9wPgo8dWw+CiAgPGxpPlByb2plY3RzIGFyZSBtdWx0aS1yb290ZWQgYXQgdGhlIHRvcC1sZXZlbC48L2xpPgogIDxsaT5Gb3IgZWFjaCBzcGVjaWZpZWQgcm9vdCwgYWxsLWluY2x1c2l2ZSBpcyB0aGUgZGVmYXVsdCBwb3NpdGlvbiwgd2l0aCBzb21lCiAgICAgICAgZmlsdGVyaW5nIG1lY2hhbmlzbXMuPC9saT4KICA8bGk+V29ya3NwYWNlIGNvbnNpc3RzIG9mIGEgc2luZ2xlIHByb2plY3QuPC9saT4KICA8bGk+U2VwYXJhdGUgcHJvamVjdHMgYXJlIGZyZWUgdG8gb3ZlcmxhcCAobm8gc3BlY2lhbCBzdXBwb3J0KS48L2xpPgogIDxsaT5XaXRoaW4gYSBwcm9qZWN0LCBzZXBhcmF0ZSByb290cyBtYXkgb3ZlcmxhcDsgZHVwbGljYXRlIGZpbGVzIGFyZQogICAgICAgIGFsbG93ZWQuPC9saT4KICA8bGk+U2luZ2xlIG91dHB1dCBmb2xkZXIgcGVyIHByb2plY3QuPC9saT4KPC91bD4KPGgyPkltcHJvdmluZyB0aGUgT3V0cHV0IEZvbGRlcjwvaDI+CjxwPkhvdyBjb3VsZCB3ZSBjaGFuZ2UgRWNsaXBzZSB0byBtYWtlIHRoZSBKYXZhIG91dHB1dCBmb2xkZXIgbW9yZSBmbGV4aWJsZT88L3A+CjxwPkhlcmUgYXJlIHNvbWUgb3B0aW9ucyAoaW4gbm8gcGFydGljdWxhciBvcmRlcik6PC9wPgo8cD48Yj5PcHRpb24gUC0xPC9iPjogQ2hhbmdlIEpEVCB0byBhbGxvdyB0aGUgb3V0cHV0IGZvbGRlciB0byBiZSBleHRlcm5hbCB0bwp0aGUgd29ya3NwYWNlLjwvcD4KPHA+SkRUIGFsbG93cyBsaWJyYXJ5IEpBUnMgdG8gYmUgZWl0aGVyIGxvY2FsIHRvIGEgSmF2YSBwcm9qZWN0IChzcGVjaWZpZWQgYnkKd29ya3NwYWNlIHBhdGgpIG9yIGV4dGVybmFsIHRvIHRoZSB3b3Jrc3BhY2UgKHNwZWNpZmllZCBieSBhbiBhYnNvbHV0ZSBmaWxlCnN5c3RlbSBwYXRoKS4gU28gb25lIG9wdGlvbiBpcyB0byBiZSBzaW1pbGFybHkgZmxleGlibGUgd2l0aCB0aGUgbG9jYXRpb24gb2YgYQpKYXZhIHByb2plY3QncyBvdXRwdXQgZm9sZGVyLjwvcD4KPHA+VGhpcyB3b3VsZCBlbnRhaWwgY2hhbmdpbmcgSkRUIENvcmUgQVBJIGFzIHdlbGwgYXMgSkRUIFVJLCBidXQgY291bGQgbGlrZWx5CmJlIGRvbmUgaW4gYSBub24tYnJlYWtpbmcgZmFzaGlvbi48L3A+CjxwPlRoZSBjaGllZiBkcmF3YmFjayBvZiB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgdGhlcmUgd291bGQgYmUgbm8gcmVzb3VyY2UgZGVsdGFzCmZvciB0cmFja2luZyBjaGFuZ2VzIHRvIGZpbGVzIGluIGEgcHJvamVjdCdzIG91dHB1dCBmb2xkZXIgaW4gdGhlIGNhc2Ugd2hlcmUgaXQKd2FzIGV4dGVybmFsIHRvIHRoZSB3b3Jrc3BhY2UuIFRoaXMgd291bGQgaGF2ZSBzZXJpb3VzIHJlcGVyY3Vzc2lvbnMgaW4gYXQgbGVhc3QKdGhyZWUgYXJlYXM6IChhKSB0aGUgSkRUIGRlYnVnZ2VyJ3MgSG90U3dhcCBmYWNpbGl0eSByZWxpZXMgb24gcmVzb3VyY2UgZGVsdGFzIHRvCmNsYXNzIGZpbGVzIGluIHRoZSBvdXRwdXQgZm9sZGVyOyAoYikgdGhlIEphdmEgaW5jcmVtZW50YWwgcHJvamVjdCBidWlsZGVyIHVzZXMKYnVpbGRlci1zdXBwbGllZCByZXNvdXJjZSBkZWx0YXMgdG8gdHJhY2sgY2hhbmdlcyB0byBjbGFzcyBmaWxlcyBpbiBkZXBlbmRlbnQKcHJvamVjdHMsIGFuZCAoYykgb3RoZXIgaW5jcmVtZW50YWwgcHJvamVjdCBidWlsZGVycyBvbiB0aGUgc2FtZSBwcm9qZWN0IHdvdWxkCmJlIHVuYWJsZSB0byB0cmFjayBjaGFuZ2VzIHRvIGFueXRoaW5nIGluIHRoZSBvdXRwdXQgZm9sZGVyIGFzIHdlbGwuIFdpdGhvdXQgcmVzb3VyY2UgZGVsdGFzLCBpdCBpcyBoYXJkIHRvIHNlZSBob3cgZWl0aGVyIGNvdWxkIGJlCnN1cHBvcnRlZC48L3A+CjxwPkEgc21hbGxlciBkcmF3YmFjayBpcyB0aGF0IGFueSBjb2RlIHRoYXQgY3JlYXRlcyBhbmQgcmVhZHMgY2xhc3MgZmlsZXMgaW4gdGhlCm91dHB1dCBmb2xkZXIgd291bGQgaGF2ZSB0byBiZSB3cml0dGVuIGluIHN1Y2ggYSB3YXkgdGhhdCBpdCBjb3VsZCBkZWFsIHdpdGgKcmVzb3VyY2VzIGluIHRoZSB3b3Jrc3BhY2UgKHVzaW5nIHJlc291cmNlIGhhbmRsZXMgcHJvdmlkZWQgYnkgdGhlIHdvcmtzcGFjZQpBUEkpIGFuZCBvdXRzaWRlIHRoZSB3b3Jrc3BhY2UgKHVzaW5nIGphdmEuaW8uRmlsZSBBUEkgZGlyZWN0bHkpLjwvcD4KPHA+PGI+T3B0aW9uIFAtMjwvYj46IENoYW5nZSBFY2xpcHNlIFBsYXRmb3JtIHdvcmtzcGFjZSB0byBhbGxvdyBhcmJpdHJhcnkKZGlyZWN0b3J5IGluIHRoZSBmaWxlIHN5c3RlbSB0byBiZSAmcXVvdDttb3VudGVkJnF1b3Q7IGFzIGEgZm9sZGVyIGluc2lkZSBhCnByb2plY3QuPC9wPgo8cD5BIHVzZXIgd291bGQgdGhlbiBiZSBhYmxlIHRvIG1vdW50IGFuIGV4dGVybmFsIGZpbGUgc3lzdGVtIHN1YmRpcmVjdG9yeSBpbnRvCnRoZWlyIEphdmEgcHJvamVjdCwgYW5kIGRlc2lnbmF0ZSB0aGVpciBvdXRwdXQgZm9sZGVyIGF0IChvciBiZWxvdykgdGhhdCBtb3VudApwb2ludC4gVGhlIG5ldCBlZmZlY3QgaXMgdGhhdCB0aGUgZ2VuZXJhdGVkIGNsYXNzIGZpbGVzIHdvdWxkIGJlIHdyaXR0ZW4KZGlyZWN0bHkgdG8gdGhlIGRlc2lyZWQgbG9jYXRpb24uIEFzIGxvbmcgYXMgbW91bnRlZCBzdWJkaXJlY3RvcmllcyBhcmUKY29uc2lkZXJlZCB0byBiZSBhIHJlZ3VsYXIgcGFydCBvZiB0aGUgcHJvamVjdCdzIGZpbGUsIHRoZSByZWd1bGFyIHJlc291cmNlIEFQSQphbmQgcmVzb3VyY2UgZGVsdGFzIGFwcGx5LiBKRFQgd291bGQgbm90IGV2ZW4gbmVlZCB0byBiZSBhd2FyZSB0aGF0IHRoZSBvdXRwdXQKZm9sZGVyIHdhcyBzZXBhcmF0ZWQgZnJvbSB0aGUgcmVzdCBvZiB0aGUgcHJvamVjdCdzIGZpbGVzLjwvcD4KPHA+VGhlIHByb3MgYW5kIGNvbnMgb2YgdGhpcyBhcHByb2FjaCBhcmUgY2hpZWZseSB0aG9zZSBvZiBtb3VudCBwb2ludHMKZ2VuZXJhbGx5IChjb3ZlcmVkIGJlbG93KS48L3A+CjxwPlBERSBsYXVuY2hlcyBhIHJ1bnRpbWUKd29ya2JlbmNoIHdpdGggYSBzcGVjaWFsIGNvbW1hbmQgbGluZSBvcHRpb24gc3BlY2lmeWluZyBvbmUgb3IgbW9yZQpwbHVnLWluLXJlbGF0aXZlIHBhdGhzIChlLmcuLCAtZGV2IGJpbikgdGhhdCBhcmUgdG8gYmUgaW5jbHVkZWQgb24gZWFjaCBwbHVnLWluCmNsYXNzIGxvYWRlcidzIGNsYXNzIHBhdGguIFBERSBpbmNsdWRlcyB0aGUgcHJvamVjdC1yZWxhdGl2ZSBwYXRocyBvZiBhbGwgb3V0cHV0CmZvbGRlcnM7IHRoaXMgaXMganVzdCB0aGUgcGF0aCAmcXVvdDtiaW4mcXVvdDsgd2hlbiBhbGwgcGx1Zy1pbiBwcm9qZWN0cyBsb2NhdGUKdGhlaXIgb3V0cHV0IGZvbGRlciBpbiB0aGUgZGVmYXVsdCBsb2NhdGlvbi4gSWYgYW4gZXh0ZXJuYWwgZGlyZWN0b3J5IGlzIG1vdW50ZWQKYXMgYSBKYXZhIHByb2plY3QncyBvdXRwdXQgZm9sZGVyLCB0aGUgZXhpc3RpbmcgRWNsaXBzZSBQbGF0Zm9ybSBDb3JlIFJ1bnRpbWUKbWVjaGFuaXNtcyB3b3VsZCBuZWVkIHRvIGJlIHJldmFtcGVkIHRvIGFsbG93IFBERSB0byBzdXBwbHkgYW4gYWJzb2x1dGUgZmlsZQpzeXN0ZW0gcGF0aCBmb3IgZWFjaCBwbHVnLWluLjwvcD4KPHA+U29tZSBvdGhlciBvYnNlcnZhdGlvbnM6PC9wPgo8dWw+CiAgPGxpPkpEVCBtYXJrcyB0aGUgb3V0cHV0IGZvbGRlciBhcyBjb250YWluaW5nICZxdW90O2Rlcml2ZWQmcXVvdDsgcmVzb3VyY2VzLAogICAgYW5kIHJlcG9zaXRvcnkgcHJvdmlkZXJzIHRlbmQgdG8gaWdub3JlIHJlc291cmNlcyBtYXJrZWQgYXMKICAgICZxdW90O2Rlcml2ZWQmcXVvdDsuIFRoaXMgbWVhbnMgdGhhdCBpdCBwcm9iYWJseSBkb2VzIG5vdCBtYXR0ZXIgd2hldGhlciBhCiAgICBtb3VudGVkIGZvbGRlciBpcyBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHByb2plY3QgZm9yIFZDTSBwdXJwb3Nlcy48L2xpPgogIDxsaT5JZiB0aGUgSkRUIFVJIGV4cG9zZXMgdGhlIHN1cHBvcnQgZm9yIG1vdW50aW5nIHRoZSBvdXRwdXQgZm9sZGVyLCB0aGVyZQogICAgd291bGQgYmUgbm8gbmVlZCB0byBwcm92aWRlIGdlbmVyaWMgbW91bnQgc3VwcG9ydCBpbiB0aGUgV29ya2JlbmNoIFVJLiBUaGlzCiAgICB3b3VsZCBhbGxvdyB0aGUgY29tcGxpY2F0aW5nIG5hdHVyZSBvZiBtb3VudCBwb2ludHMgdG8gYmUgY29uZmluZWQgdG8gdGhlCiAgICB0eXBlcyBvZiBwcm9qZWN0cyB0aGF0IGFyZSBwcmVwYXJlZCBmb3IgdGhlbS48L2xpPgo8L3VsPgo8cD48Yj5PcHRpb24gUC0zPC9iPjogQWR2b2NhdGUgdXNlIG9mIE9TLWxldmVsIHN5bWxpbmtzLiA8L3A+CjxwPlVuaXggZmlsZSBzeXN0ZW0gaGF2ZSBzeW1saW5rcywgYW5kIFdpbmRvd3MgMjAwMCBOVEZTIGhhcyBhbiB1bnN1cHBvcnRlZApmZWF0dXJlIGNhbGxlZCA8YSBocmVmPSJodHRwOi8vd3d3LnN5c2ludGVybmFscy5jb20vbnR3Mmsvc291cmNlL21pc2Muc2h0bWwjanVuY3Rpb24iPmp1bmN0aW9uczwvYT4uIFRoZXNlCmZpbGUgc3lzdGVtIG1lY2hhbmlzbXMgYWxsb3cgYSBkaXJlY3RvcnkgaW4gb25lIHBhcnQgb2YgdGhlIGZpbGUgc3lzdGVtIHRvIGJlCmxpbmtlZCBpbiB0byBzb21ld2hlcmUgZWxzZS4gRm9yIGV4YW1wbGUsIGlmIHRoZSBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5IG9mClByb2plY3QxIGlzIEM6L215d3MvcHJvamVjdDEgYW5kIHRoZSBKYXZhIG91dHB1dCBmb2xkZXIgaXMgaW4gaXRzIHN0YW5kYXJkCmxvY2F0aW9uLCBhIHN5bWxpbmsgZnJvbSBDOi9teXdzL3Byb2plY3QxL2JpbiB0byBDOi90b21jYXQvd2ViYXBwcy9teXRlc3QvV0VCLUlORi9jbGFzc2VzCmVuc3VyZXMgdGhhdCB0aGUgZmlsZXMgaW4gdGhlIG91dHB1dCBmb2xkZXIgYXJlIGNyZWF0ZWQgZGlyZWN0bHkgaW4gdGhlIHdlYgpzZXJ2ZXIncyBzdWJkaXJlY3RvcnkuIDwvcD4KPHA+VGhlIGFkdmFudGFnZSBvZiB0aGlzIG9wdGlvbiBpcyB0aGF0IHRoZSB1c2VyIGNhbiBjcmVhdGUgdGhpcyBhcnJhbmdlbWVudAp1c2luZyBleGlzdGluZyBPUy1zcGVjaWZpYyB0b29scywgYW5kIGRvZXMgbm90IHJlcXVpcmUgZXhwbGljaXQgc3VwcG9ydCBmcm9tIHRoZQpFY2xpcHNlLiBTbyB0aGlzIG9wdGlvbiBpcyBhbHJlYWR5IHN1cHBvcnRlZCBpbiAyLjAuIDwvcD4KPHA+T3BlcmF0aW5nIHN5c3RlbXMmbmJzcDsgbWF5IGhhdmUgcmVzdHJpY3Rpb25zIG9uIHN5bWxpbmtzIHRoYXQgbWFrZSB0aGlzIG9wdGlvbiBsZXNzCndvcmthYmxlIGZvciBzb21lIHB1cnBvc2VzLiBGb3IgaW5zdGFuY2UsIE5URlMganVuY3Rpb25zIHdvcmsgb24gV2luZG93cwoyMDAwIG9yIGJldHRlciwgYW5kIG9ubHkgd29yayB3aXRoaW4KYW5kIGJldHdlZW4gbG9jYWwgZHJpdmVzLiBGdXJ0aGVybW9yZSwganVuY3Rpb25zIGFyZSBhbiB1bnN1cHBvcnRlZCBmZWF0dXJlLiA8L3A+CjxwPjxiPk9wdGlvbiBQLTQ8L2I+OiBBZHZvY2F0ZSB1c2Ugb2YgZXh0ZXJuYWwgdG9vbCBidWlsZGVycyBmb3IgY29weWluZyB0aGUgb3V0cHV0IGZvbGRlciB0byBhbgpleHRlcm5hbCBsb2NhdGlvbi4gPC9wPgo8cD5FY2xpcHNlIGFsbG93cyB0aGUgdXNlciB0byBhZGQgQW50LXNjcmlwdGVkIHN0ZXBzIGFzIGFuIGV4dGVybmFsIHRvb2wKYnVpbGRlci4gQ29waW5nIG5ldyBhbmQgY2hhbmdlZCBmaWxlcyBmcm9tIHRoZSBvdXRwdXQgZm9sZGVyIHRvIGFub3RoZXIgbG9jYXRpb24KY2FuIGJlIGRvbmUgd2l0aCBvbmUgQW50IGNvbW1hbmQuIDwvcD4KPHA+VGhpcyBvcHRpb24gaXMgbG93LXRlY2ggYW5kIHdvcmtzIGluIEVjbGlwc2UgMi4wOyBob3dldmVyLCBpdCBvbmx5IGVuc3VyZXMKdGhhdCB0aGUgZmlsZXMgaW4gdGhlIG91dHB1dCBmb2xkZXIgZW5kIHVwIGluIHRoZSBkZXNpcmVkIGxvY2F0aW9uOyBpdCBkb2VzIG5vdApyZWR1Y2UgdGhlIG5ldHdvcmsgdHJhZmZpYyB3aGVuIHRoZSBwcm9qZWN0J3MgZmlsZXMgYXJlIHN0b3JlZCBvbiBhIG5ldHdvcmsKZHJpdmUuIDwvcD4KPHA+PGI+T3B0aW9uIFEtMSAob3J0aG9nb25hbCk8L2I+OiBBbGxvdyBvbmUgb3V0cHV0IGZvbGRlciBwZXIgc291cmNlIGZvbGRlci4gPC9wPgo8cD5PcnRob2dvbmFsIHRvIHRoZSBvdGhlciBvcHRpb25zLCBmbGV4aWJpbGl0eSBjb3VsZCBiZSBpbXByb3ZlZCBieSBhbGxvd2luZwpkaWZmZXJlbnQgb3V0cHV0IGZvbGRlcnMgdG8gYmUgc3BlY2lmaWVkIGZvciBlYWNoIHNvdXJjZSBmb2xkZXIuIEluIG90aGVyIHdvcmRzLAphbGxvd2luZyB0aGUgb3V0cHV0IGZvbGRlciBjb3VsZCBiZSBwYXJ0aXRpb25lZCBhbG9uZyBzb3VyY2UgZm9sZGVyIGxpbmVzLiBUaGUKY2hhbmdlcyBhbGxvd3MsIGZvciBleGFtcGxlLCBhIHNpbmdsZSBKYXZhIHByb2plY3QgdG8gY29udGFpbiBib3RoIHByb2R1Y3QKc291cmNlIGNvZGUgYW5kIHRlc3Qgc3VpdGVzIHBhcnRpdGlvbmVkIGludG8gc2VwYXJhdGUgc291cmNlIGFuZCBvdXRwdXQKZm9sZGVycy4mbmJzcDsgPC9wPgo8cD5UaGUgYWRkaXRpb25hbCBvdXRwdXQgZm9sZGVycyB3b3VsZCBuZWVkIHRvIGZpbmQgdGhlaXIgd2F5IG9udG8gdGhlIHJ1bnRpbWUKY2xhc3MgcGF0aCwgYW5kIHRoZSBkZWJ1Z2dlciB3b3VsZCBuZWVkIHRvIGtub3cgaG93IHRvIG1hcCBmcm9tIGdlbmVyYXRlZCBjbGFzcwpmaWxlIHRvIHNvdXJjZSBmaWxlLiBOZWl0aGVyIHNob3VsZCBiZSBhIHByb2JsZW0uIDwvcD4KPHA+VGhpcyBjaGFuZ2Ugd291bGQgYnJlYWsgZXhpc3RpbmcgY2xpZW50cyB0aGF0IGFzc3VtZSB0aGF0IGFsbCBnZW5lcmF0ZWQgY2xhc3MKZmlsZXMgZm9yIGEgSmF2YSBwcm9qZWN0IGFyZSBpbiBhIHNpbmdsZSBvdXRwdXQgZm9sZGVyLiA8L3A+CjxoMz5Bc3Nlc3NtZW50IDwvaDM+Cjx1bD4KICA8bGk+UC0xIGlzIGEgbm9uLXN0YXJ0ZXIuPC9saT4KICA8bGk+UC0yIGlzIHByb21pc2luZywgYnV0IHJlcXVpcmVzIGNoYW5nZXMgdG8gdGhlIEVjbGlwc2UgUGxhdGZvcm0uJm5ic3A7PC9saT4KICA8bGk+UC0zIHJlcXVpcmVzIG5vIHdvcmsgYnV0IGlzIG9ubHkgYSBwYXJ0aWFsIHNvbHV0aW9uLjwvbGk+CiAgPGxpPlAtNCByZXF1aXJlcyBubyB3b3JrIGJ1dCBpcyBvbmx5IGEgcGFydGlhbCBzb2x1dGlvbi48L2xpPgo8L3VsPgo8aDI+QWxsb3dpbmcgTXVsdGktcm9vdGVkIFByb2plY3RzPC9oMj4KPHA+SG93IGNvdWxkIHdlIGNoYW5nZSBFY2xpcHNlIHRvIG1ha2UgSmF2YSBwcm9qZWN0cyAoc291cmNlIGZvbGRlcnMgaW4KcGFydGljdWxhcikgYmUgbXVsdGktcm9vdGVkIHJhdGhlciB0aGFuIHNpbmdsZS1yb290ZWQ/PC9wPgo8cD5IZXJlIGFyZSBzb21lIG9wdGlvbnMgKGluIG5vIHBhcnRpY3VsYXIgb3JkZXIpOjwvcD4KPHA+PGI+T3B0aW9uIE0tMTwvYj46IENoYW5nZSBKRFQgdG8gYWxsb3cgYSBKYXZhIHByb2plY3Qgc291cmNlIGZvbGRlciB0byBsaWUKaW5zaWRlIGFub3RoZXIgcHJvamVjdCwgb3IgdG8gbGllIG91dHNpZGUgdGhlIHdvcmtzcGFjZS48L3A+CjxwPkl0IHdvdWxkIGJlIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIHRvIGFsbG93IGEgc291cmNlIGZvbGRlciBmb3IgYSBKYXZhCnByb2plY3QgdG8gbGllIGluc2lkZSBhIGRpZmZlcmVudCBKYXZhIHByb2plY3QuIEJlY2F1c2UgdGhlc2UgZmlsZXMgYXJlIHN0aWxsCmluc2lkZSB0aGUgd29ya3NwYWNlLCByZXNvdXJjZSBkZWx0YXMgY2FuIHN0aWxsIGJlIHVzZWQgZm9yIHVwZGF0aW5nIHRoZSBKYXZhCm1vZGVsIGFuZCB0cmlnZ2VyaW5nIHJlY29tcGlsYXRpb24uPC9wPgo8cD5TdXBwb3J0aW5nIGEgc291cmNlIGZvbGRlciBvdXRzaWRlIHRoZSB3b3Jrc3BhY2UgZW50aXJlbHkgd291bGQgaGF2ZSBtYW55IG9mCnRoZSBzYW1lIHByb2JsZW1zIGFzIHdpdGggZXh0ZXJuYWwgb3V0cHV0IGZvbGRlcnMuIFRoZXNlIGZpbGVzIHdvdWxkIG5lZWQgdG8gYmUKYWNjZXNzZWQgd2l0aCBqYXZhLmlvLkZpbGUgQVBJIChub3QgcmVzb3VyY2UgaGFuZGxlcyksIGFuZCB0aGVyZSB3b3VsZCBiZSBubwpyZXNvdXJjZSBkZWx0YXMgZm9yIHVwZGF0aW5nIHRoZSBKYXZhIG1vZGVsIG9yIHRyaWdnZXJpbmcgcmVjb21waWxhdGlvbi48L3A+CjxwPjxiPk9wdGlvbiBNLTI8L2I+OiBDaGFuZ2UgRWNsaXBzZSBQbGF0Zm9ybSB0byAmcXVvdDttb3VudCZxdW90OyBhIGZpbGUgc3lzdGVtCmRpcmVjdG9yeSBhcyBhIHByb2plY3QgZm9sZGVyLjwvcD4KPHA+V2Ugd291bGQgYWRkIGEgbmV3IHdvcmtzcGFjZSBjb25jZXB0IG9mIG1vdW50IHBvaW50cywgYW5kIGFsbG93IGEgZGlyZWN0b3J5CmluIHRoZSBmaWxlIHN5c3RlbSB0byBiZSBncmFmdGVkIGludG8gYSBwcm9qZWN0J3MgcmVzb3VyY2UgdHJlZS4gRm9yIGV4YW1wbGUsCm1vdW50aW5nIEM6L0phdmFTb3VyY2VzIGF0IC9Qcm9qZWN0MS9zcmMgd291bGQgbWVhbiB0aGF0IHRoZSBmaWxlcyBhbmQgZm9sZGVycwp1bmRlciAvUHJvamVjdDEvc3JjIGFyZSBzdG9yZWQgdW5kZXIgdGhlIHN1YmRpcmVjdG9yeSBDOi9KYXZhU291cmNlczsgZS5nLiwgdGhlCmZpbGUgQzovSmF2YVNvdXJjZXMvY29tL2V4YW1wbGUvRWdnLmphdmEgd291bGQgYXBwZWFyIGluIHRoZSB3b3Jrc3BhY2UgYXQgdGhlCnJlc291cmNlIHBhdGggL1Byb2plY3QxL3NyYy9jb20vZXhhbXBsZS9FZ2cuamF2YS4gQW55IHByb2plY3QgZmlsZXMgbm90IGJlbG93IGEKbW91bnQgcG9pbnQgd291bGQgYmUgaGVsZCB3aXRoaW4gdGhlIHByb2plY3QncyByb290IGRpcmVjdG9yeSwgYXMgdGhleSBhcmUKY3VycmVudGx5LiBUb29scyB0aGF0IG5hdmlnYXRlIHRoZSByZXNvdXJjZSB0cmVlIHVzaW5nIHRoZSB3b3Jrc3BhY2UgQVBJIG5lZWQKbm90IGJlIGF3YXJlIG9mIHRoZSBmaWxlJ3MgbG9jYXRpb24uJm5ic3A7PC9wPgo8cD5JdCB3b3VsZCBhbHNvIGJlIHBvc3NpYmxlIHRvIGFsbG93IGEgcG9ydGlvbiBvZiBvbmUgcHJvamVjdCdzIHJlc291cmNlIHRyZWUKdG8gYmUgZGlyZWN0bHkgZ3JhZnRlZCBpbnRvIGFub3RoZXIgKGluc3RlYWQgb2YgZG9pbmcgdGhpcyBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIGZpbGUgc3lzdGVtKS4KVGhpcyBpbXBsaWVzIHNvbWUgZm9ybSBvZiBvdmVybGFwIGJlIGFsbG93ZWQuPC9wPgo8cD4KV2l0aCB0aGUgYWJpbGl0eSB0byBtb3VudCBhIGZpbGUgc3lzdGVtIGRpcmVjdG9yeSBpbnRvIHRoZSByb290IG9mIGEgcHJvamVjdCwgYQpKYXZhIHByb2plY3QgY2FuIGhhdmUgaXRzIHNvdXJjZSBmb2xkZXJzIGluIGRpZmZlcmVudCBsb2NhdGlvbnMgb24gZGlzay4KPC9wPgo8cD4KVGhpcyB3b3VsZCBiZSBhIGJyZWFraW5nIGNoYW5nZSBmb3IgY2xpZW50cyBvZiB0aGUgd29ya3NwYWNlIGJlY2F1c2UgaXQgYWx0ZXJzIHRoZSBjdXJyZW50IAppbXBsaWNpdCB1bmRlcnN0YW5kaW5nIHRoYXQgYWxsIHByb2plY3QgY29udGVudHMgYXJlIHN0b3JlZCBpbiBvbmUgZmlsZSBzeXN0ZW0Kc3VidHJlZS4gSG93ZXZlciwgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIG1pbmltaXplIHRoZSBlZmZlY3RzIG9mIHRoaXMgYnJlYWthZ2UKYW5kIHByb3ZpZGUgZ29vZCBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgMi4wIHRvb2xzIGFuZCB0ZWFtIChWQ00pIHByb3ZpZGVycy4mbmJzcDsKPC9wPgo8cD48Yj5PcHRpb24gTS0zPC9iPjogQWR2b2NhdGUgdXNlIG9mIE9TLWxldmVsIHN5bWxpbmtzLiA8L3A+CjxwPlRoZSB1c2Ugb2Ygc3ltbGlua3MgaXMgZGlzY3Vzc2VkIGFib3ZlIChPdXRwdXQgRm9sZGVyLCBPcHRpb24gUC0zKS4gVGhlc2UgYXJlCnRoZSBmaWxlIHN5c3RlbSBlcXVpdmFsZW50cyBvZiB0aGUgbW91bnQgcG9pbnRzIGluIE9wdGlvbiBNLTIuIDwvcD4KPHA+VGhlIGFkdmFudGFnZSBvZiB0aGlzIG9wdGlvbiBpcyB0aGF0IHRoZSB1c2VyIGNhbiBjcmVhdGUgdGhpcyBhcnJhbmdlbWVudAp1c2luZyBleGlzdGluZyBPUy1zcGVjaWZpYyB0b29scywgYW5kIGRvZXMgbm90IHJlcXVpcmUgZXhwbGljaXQgc3VwcG9ydCBmcm9tIHRoZQpFY2xpcHNlLiBTbyB0aGlzIG9wdGlvbiBpcyBhbHJlYWR5IHN1cHBvcnRlZCBpbiAyLjAuIDwvcD4KPHA+T3BlcmF0aW5nIHN5c3RlbXMmbmJzcDsgbWF5IGhhdmUgcmVzdHJpY3Rpb25zIG9uIHN5bWxpbmtzIHRoYXQgbWFrZSB0aGlzIG9wdGlvbiBsZXNzCndvcmthYmxlIGZvciBzb21lIHB1cnBvc2VzLiBGb3IgaW5zdGFuY2UsIE5URlMganVuY3Rpb25zIHdvcmsgb24gV2luZG93cwoyMDAwIG9yIGJldHRlciwgYW5kIG9ubHkgd29yayB3aXRoaW4KYW5kIGJldHdlZW4gbG9jYWwgZHJpdmVzLiBGdXJ0aGVybW9yZSwganVuY3Rpb25zIGFyZSBhbiB1bnN1cHBvcnRlZCBmZWF0dXJlLiA8L3A+CjxoMz5Bc3Nlc3NtZW50IDwvaDM+Cjx1bD4KICA8bGk+TS0xIGlzIGEgbm9uLXN0YXJ0ZXIuPC9saT4KICA8bGk+TS0yIGlzIHByb21pc2luZywgYnV0IHJlcXVpcmVzIGNoYW5nZXMgdG8gdGhlIEVjbGlwc2UgUGxhdGZvcm0gKHNhbWUKICAgIGNoYW5nZSBhcyBQLTIpLiZuYnNwOzwvbGk+CiAgPGxpPk0tMyByZXF1aXJlcyBubyB3b3JrIGJ1dCBpcyBvbmx5IGEgcGFydGlhbCBzb2x1dGlvbi48L2xpPgo8L3VsPgo8aDI+QWxsb3dpbmcgU2VsZWN0aXZpdHk8L2gyPgo8cD5Ib3cgY291bGQgd2UgY2hhbmdlIEVjbGlwc2UgdG8gbWFrZSB0aGUgSmF2YSBzb3VyY2UgZm9sZGVycyBzZWxlY3RpdmUgcmF0aGVyCnRoYW4gYWxsLWluY2x1c2l2ZT88L3A+CjxwPkhlcmUgYXJlIHNvbWUgb3B0aW9ucyAoaW4gbm8gcGFydGljdWxhciBvcmRlcik6PC9wPgo8cD48Yj5PcHRpb24gUy0xPC9iPjogQ2hhbmdlIEVjbGlwc2UgUGxhdGZvcm0gdG8gYWRkIHN1cHBvcnQgZm9yIHJlc291cmNlIHdvcmtpbmcgc2V0cyB3aXRoIHRoZSBjYXBhYmlsaXR5IHRvIGJyb3dzZSBhbmQgbWFuaXB1bGF0ZSBhIHN1YnNldCBvZiB0aGUgd29ya3NwYWNlIHdoZXJlIGNlcnRhaW4gZmlsZXMgYW5kIGZvbGRlcnMgYXJlIGV4Y2x1ZGVkLjwvcD4KPHA+VGhpcyBvcHRpb24gZG9lcyBub3QgaW52b2x2ZSBjaGFuZ2luZyB0aGUgbmF0dXJlIG9mIHRoZSB3b3Jrc3BhY2UgcmVzb3VyY2UKdHJlZSBhbmQgaXRzIHJlbGF0aW9uIHRvIHRoZSBmaWxlIHN5c3RlbS4gSXQgc2ltcGx5IGFkZHMgd2F5cyB0byBwcm92aWRlCmZpbHRlcmVkIHZpZXdzIG9mIHRoYXQgcmVzb3VyY2UgdHJlZS48L3A+CjxwPkEgSmF2YSBwcm9qZWN0IHNvdXJjZSBmb2xkZXIgaXMgY3VycmVudGx5IHNwZWNpZmllZCB3aXRoIGEgcHJvamVjdC1yZWxhdGl2ZQpmb2xkZXIgcGF0aC4gQWxsICouamF2YSBzb3VyY2UgZmlsZXMgZm91bmQgaW4gdGhlIHByb2plY3Qgc3VidHJlZSBhcmUKYXV0b21hdGljYWxseSBpbmNsdWRlZCBpbiB0aGUgSmF2YSBtb2RlbCBhbmQgb24gdGhlIEphdmEgY29tcGlsZXIncyBjbGFzcwpwYXRoLiBUaGUgc291cmNlIGZvbGRlciBzcGVjaWZpY2F0aW9uIGNvdWxkIGJlIGVuaGFuY2VkIHRvIHBlcm1pdCB0aGUgdXNlciB0bwpzcGVjaWZ5IHdoaWNoIGZpbGVzIGFuZCBmb2xkZXJzIHRvIGV4Y2x1ZGUgKHRoaW5rIDxhIGhyZWY9Imh0dHA6Ly9qYWthcnRhLmFwYWNoZS5vcmcvYW50L21hbnVhbC9Db3JlVHlwZXMvZmlsZXNldC5odG1sIj5BbnQKZmlsZXNldHM8L2E+KS48L3A+CjxwPlRoZSBzb3VyY2UgZm9sZGVycyBvZiBhIEphdmEgcHJvamVjdCBhcmUgbm90IGN1cnJlbnRseSBhbGxvd2VkIHRvIGNvaW5jaWRlIG9yCm90aGVyd2lzZSBvdmVybGFwLiBTb21lIHJlbGF4YXRpb24gb2YgdGhpcyBydWxlIGlzIHJlcXVpcmVkIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhIHNvdXJjZSBmb2xkZXIKY29udGFpbmluZyB0ZXN0cyBpcyBuZXN0ZWQgaW5zaWRlIHRoZSBtYWluIHNvdXJjZSBmb2xkZXIgKDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZWNsaXBzZS9kZXZlbG9wbWVudC9pbmZsZXhpYmxlLXByb2plY3RzLXByb2JsZW0uaHRtbCI+RXhhbXBsZQozPC9hPikuIE9uZSByZWxheGF0aW9uIGlzIHRvIGFsbG93IHNvdXJjZSBmb2xkZXJzIHRvIGNvaW5jaWRlIG9yIG92ZXJsYXAgYnV0IHVzZSB0aGUgbWVjaGFuaXNtIGZvciBleGNsdWRpbmcKZmlsZXMgdG8gcHJldmVudCB0aGUgc2FtZSBmaWxlIGZyb20gYmVpbmcgaW5jbHVkZWQgaW4gYm90aCBzb3VyY2UgZm9sZGVycy48L3A+CjxwPlRoaXMgb3B0aW9uIHdvdWxkIGVudGFpbCBjaGFuZ2luZyBFY2xpcHNlIFBsYXRmb3JtIENvcmUgdG8gcHJvdmlkZSBpbmZyYXN0cnVjdHVyZSwgcG9zc2libHkgaW4gdGhlIGZvcm0gb2YgYSBydWxlLWJhc2VkIHJlc291cmNlCnZpc2l0b3IuIFdlIHdvdWxkIGV4cGxvcmUgYSBwb3NzaWJsZSBjb25uZWN0aW9uIHRvIHRoZSBleGlzdGluZyBVSSBub3Rpb24gb2Ygd29ya2luZyBzZXRzLiBKRFQgQ29yZSBBUEkKYW5kIEpEVCBVSSB3b3VsZCBuZWVkIHRvIGNoYW5nZSBhcyB3ZWxsLCBidXQgY291bGQKbGlrZWx5IGJlIGRvbmUgaW4gYSBub24tYnJlYWtpbmcgbWFubmVyIGJ5IGFkZGluZyB3b3JraW5nIHNldHMgdG8KY2xhc3NwYXRoIGVudHJpZXMgKDxhIGhyZWY9Imh0dHA6Ly9kZXYuZWNsaXBzZS5vcmc6ODA4MC9oZWxwL2NvbnRlbnQvaGVscDovb3JnLmVjbGlwc2UuamR0LmRvYy5pc3YvcmVmZXJlbmNlL2FwaS9vcmcvZWNsaXBzZS9qZHQvY29yZS9JQ2xhc3NwYXRoRW50cnkuaHRtbCI+SUNsYXNzcGF0aEVudHJ5PC9hPikKYW5kIHJldmFtcGluZyB0aGUgcnVsZXMgZm9yIGxlZ2FsIHNvdXJjZSBmb2xkZXIgb3ZlcmxhcC48L3A+CjxwPjxiPk9wdGlvbiBTLTIgKG9ydGhvZ29uYWwpPC9iPjogQ2hhbmdlIEpEVCB0byBhbGxvdyBvdmVybGFwcGluZyBzb3VyY2UgZm9sZGVycyBidXQKYXV0b21hdGljYWxseSBleGNsdWRlIHRoZSBvdmVybGFwcGVkIHBvcnRpb24gZnJvbSB0aGUgcGFyZW50LjwvcD4KPHA+QSBkaWZmZXJlbnQgYXBwcm9hY2ggaXMgdG8gcHJvdmlkZSB0aGUga2luZCBvZiBzZWxlY3Rpdml0eSByZXF1aXJlZCB0byBoYW5kbGUKY2FzZXMgbGlrZSB3aGVyZSBhIHNvdXJjZSBmb2xkZXIKY29udGFpbmluZyB0ZXN0cyBpcyBuZXN0ZWQgaW5zaWRlIHRoZSBtYWluIHNvdXJjZSBmb2xkZXIgKDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZWNsaXBzZS9kZXZlbG9wbWVudC9pbmZsZXhpYmxlLXByb2plY3RzLXByb2JsZW0uaHRtbCI+RXhhbXBsZQozPC9hPikuIFRoZSBzb2x1dGlvbiBpcyB0byBhbGxvdyB0aGUgb3ZlcmxhcCwgYnV0IGF1dG9tYXRpY2FsbHkgZXhjbHVkZSB0aGUKZmlsZXMgYWNjb3VudGVkIGZvciBieSB0aGUgbW9yZSBzcGVjaWZpYyBmb2xkZXIgZnJvbSB0aGUgbGVzcyBzcGVjaWZpYyBvbmUuIEZvcgpleGFtcGxlLCBpZiAvc3JjLyBhbmQgL3NyYy90ZXN0cy8gYXMgYm90aCBzcGVjaWZpZWQgYXMgc291cmNlIGZvbGRlcnMsIGZpbGVzCnVuZGVyIC9zcmMvdGVzdHMvIHdvdWxkIG9ubHkgYXBwZWFyIHVuZGVyIHRoZSBsYXR0ZXIgc291cmNlIGZvbGRlciwgYW5kIHRoZQpmb3JtZXIgc291cmNlIGZvbGRlciB3b3VsZCBhY3QgYXMgaWYgaXQgaGFkIG5vIGNoaWxkIG5hbWVkIHRlc3RzLjwvcD4KPHA+VGhpcyBvcHRpb24gd291bGQgaW52b2x2ZSBhIG5vbi1icmVha2luZyBjaGFuZ2UgdG8gSkRUIHRvIHJlbW92ZSB0aGUgY3VycmVudApyZXN0cmljdGlvbnMgdGhhdCBwcm9oaWJpdCBvdmVybGFwIGFuZCBkZWZpbmUgaG93IG92ZXJsYXBwaW5nIHNvdXJjZSBmb2xkZXJzIGFyZQppbnRlcnByZXRlZC4gVGhpcyBvcHRpb24gaXMgb3J0aG9nb25hbCB0byB0aGUgb3RoZXIgc2VsZWN0aXZpdHkgb3B0aW9ucywgYW5kCmNvdWxkIGJlIGRvbmUgaW4gY29uanVuY3Rpb24gd2l0aCBhbnkgb2YgdGhlbS48L3A+CjxwPjxiPk9wdGlvbiBTLTM8L2I+OiBSYWRpY2FsbHkgY2hhbmdlIHRoZSBFY2xpcHNlIFBsYXRmb3JtIHBvbGljeSBmb3IgYWRkaW5nIGFuZCByZW1vdmluZwpmaWxlcyBmcm9tIHRoZSB3b3Jrc3BhY2UuPC9wPgo8cD5UaGUgd29ya3NwYWNlIGZvbGRlciByZWZyZXNoIG9wZXJhdGlvbiAoPGEgaHJlZj0iaHR0cDovL2Rldi5lY2xpcHNlLm9yZzo4MDgwL2hlbHAvY29udGVudC9oZWxwOi9vcmcuZWNsaXBzZS5wbGF0Zm9ybS5kb2MuaXN2L3JlZmVyZW5jZS9hcGkvb3JnL2VjbGlwc2UvY29yZS9yZXNvdXJjZXMvSVJlc291cmNlLmh0bWwjcmVmcmVzaExvY2FsIj5JUmVzb3VyY2UucmVmcmVzaExvY2FsPC9hPikgYXV0b21hdGljYWxseSBjcmVhdGVzIGVudHJpZXMgaW4gdGhlIHdvcmtzcGFjZSByZXNvdXJjZSB0cmVlCmZvciBuZXdseSBkaXNjb3ZlcmVkIGZpbGVzIGFuZCBmb2xkZXJzIG91dCBpbiB0aGUgZmlsZSBzeXN0ZW0sIGFuZCBkaXNjYXJkcwplbnRyaWVzIGZvciBhbnkgZmlsZXMgYW5kIGZvbGRlcnMgdGhhdCBhcmUgbm8gbG9uZ2VyIHByZXNlbnQgaW4gdGhlIGZpbGUgc3lzdGVtLgooVGhpcyByZWZyZXNoIGFjdGlvbiBpcyBhbHNvIGltcGxpY2l0IGluIGEgbnVtYmVyIG9mIHdvcmtzcGFjZSBvcGVyYXRpb25zIHdoZW4KdGhlIGZvcmNlIGZsYWcgaXMgdXNlZCkuIFRoaXMgY2hhcmFjdGVyaXN0aWMgbWFrZXMgYSBwcm9qZWN0J3Mgd29ya3NwYWNlCnJlc291cmNlIHRyZWUgYSBtb3JlLW9yLWxlc3MgZmFpdGhmdWwgbWlycm9yIG9mIHRoZSBwcm9qZWN0J3Mgc3VidHJlZSBpbiB0aGUKZmlsZSBzeXN0ZW0uIFRoaXMgZ2l2ZXMgd29ya3NwYWNlIHByb2plY3RzIHRoZWlyIGFsbC1pbmNsdXNpdmUgZmVlbC48L3A+CjxwPlRoZXJlIGFyZSBvdGhlciBJREVzIChpbmNsdWRpbmcgVmlzdWFsIFN0dWRpbyAubmV0KSB0aGF0IGFsbG93IHRoZSB1c2VyIHRvCmNvbnRyb2wgd2hpY2ggZmlsZXMgYW5kIGZvbGRlcnMgYmVsb25nIGluIGEgcHJvamVjdDsgb3RoZXIgZmlsZXMgYW5kIGZvbGRlcnMgbWF5CmV4aXN0IGluIHRoZSBsb2NhbCBmaWxlIHN5c3RlbSwgYnV0IGFyZSBzaW1wbHkgaWdub3JlZCBieSB0aGUgSURFIGlmIG5vdCBmbGFnZ2VkCmFzIGJlbG9uZ2luZyB0byB0aGUgcHJvamVjdC4gVGhpcyBjaGFyYWN0ZXJpc3RpYyBtZWFucyB0aGF0IHRoZSBJREUncyBub3Rpb24gb2YKcHJvamVjdCBpcyBtb3JlIGxpa2UgYSAmcXVvdDt2aWV3JnF1b3Q7IG9udG8gZmlsZXMgaW4gdGhlIGZpbGUgc3lzdGVtLiBUaGlzCmFsdGVybmF0ZSBjb25jZXB0aW9uIG9mIHdvcmtzcGFjZSBjb3VsZCBiZSBhY2hpZXZlZCBieSBjaGFuZ2luZyBFY2xpcHNlIHBvbGljeQpzbyB0aGF0IGZpbGUgYW5kIGZvbGRlciBlbnRyaWVzIGFyZSBuZXZlciBhZGRlZCB0byBvciByZW1vdmVkIGZyb20gdGhlIHJlc291cmNlCnRyZWUgZHVlIHRvIGEgcmVmcmVzaCBvcGVyYXRpb247IG5ldyBBUEkgd291bGQgYmUgYWRkZWQgc28gdGhhdCBlbnRyaWVzIGNvdWxkIGJlCmFkZGVkIG9yIHJlbW92ZWQgZXhwbGljaXRseS4gVGhpcyB3b3VsZCBnaXZlIHdvcmtzcGFjZSBwcm9qZWN0cyBhIHNlbGVjdGl2ZQpmZWVsLjwvcD4KPHA+T24gdGhlIHBsdXMgc2lkZSwgdGhlIHJlc291cmNlIHRyZWUgd291bGQgYmUgc21hbGxlciBpZiBzb21lIGZpbGVzIGFuZApmb2xkZXJzIHdlcmUgdG8gYmUgZXhjbHVkZWQsIGFuZCB0aGlzIHdvdWxkIGltcHJvdmUgcGVyZm9ybWFuY2UuIEl0IHdvdWxkIGFsc28KcmVkdWNlIHdvcmtzcGFjZSBjbHV0dGVyIGFuZCBtYWtlIEVjbGlwc2UgYmVoYXZlIG1vcmUgbGlrZSBjZXJ0YWluIG90aGVyIHBvcHVsYXIKSURFcyAoVmlzdWFsIFN0dWRpbyAuTkVUKS48L3A+CjxwPlRoZSBkb3duc2lkZSBvZiB0aGlzIG9wdGlvbiBpcyB0aGF0IGl0IGlzIGltcG9zc2libGUgdG8gZG8gd2hpbGUgbWFpbnRhaW5pbmcKY29tcGF0aWJpbGl0eS4gQ29uc2lkZXIgYW4gZXhpc3RpbmcgdG9vbCB0aGF0IGlzIGNhbGxpbmcgSVJlc291cmNlLnJlZnJlc2hMb2NhbAp0byBjYXVzZSBmaWxlcyBjcmVhdGVkIGRpcmVjdGx5IGluIHRoZSBmaWxlIHN5c3RlbSB0byBhcHBlYXIgaW4gdGhlIHdvcmtzcGFjZSAoYQpjb21tb24gcHJvYmxlbSB3aGVuIGJyaWRnaW5nIGV4dGVybmFsIHByb2dyYW1zIHRvIEVjbGlwc2UpLiBDaGFuZ2luZyB0aGUKc2VtYW50aWNzIG9mIElSZXNvdXJjZS5yZWZyZXNoTG9jYWwgc28gdGhhdCBpdCBkb2VzIG5vdCBkaXNjb3ZlciBuZXcgZmlsZXMgd291bGQKY2xlYXJseSBicmVhayB0aGlzIHRvb2wuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgc2VtYW50aWNzIG9mCklSZXNvdXJjZS5yZWZyZXNoTG9jYWwgaXMgbm90IGNoYW5nZWQsIHRoZW4gcnVubmluZyB0aGlzIHRvb2wgd291bGQKYXV0b21hdGljYWxseSBhZG1pdCBmaWxlcyB0byB0aGUgd29ya3NwYWNlLCBldmVuIGFnYWluc3QgdGhlIHVzZXIncyB3aXNoZXMuCkVpdGhlciBwYXRoIGxlYWRzIHRvIGEgZGlmZmVyZW50IGtpbmQgb2YgYnJlYWthZ2UuPC9wPgo8cD48Yj5PcHRpb24gUy00PC9iPjogQWRkIEVjbGlwc2UgUGxhdGZvcm0gbWVjaGFuaXNtIHRvIHByZXZlbnQgcmVmcmVzaExvY2FsIGZyb20KYWRkaW5nIGNlcnRhaW4gZmlsZXMgdG8gdGhlIHdvcmtzcGFjZSByZXNvdXJjZSB0cmVlLjwvcD4KPHA+QW5vdGhlciBvcHRpb24gaXMgdG8gY2hhbmdlIHRoZSBFY2xpcHNlIFBsYXRmb3JtIHJlZnJlc2ggbWVjaGFuaXNtIGlzIGEgbW9yZQptb2Rlc3Qgd2F5IHRvIHByb3ZpZGUgYSB3YXkgdG8gc2VsZWN0aXZlbHkgZXhjbHVkZSBmaWxlcy4gSWYgdGhlIHJlZnJlc2gKb3BlcmF0aW9uIHdhcyBnb3Zlcm5lZCBieSBleGNsdXNpb24gcnVsZXMsIGl0IHdvdWxkIGJlIHBvc3NpYmxlIGZvciB0aGUgdXNlciB0bwpleHBsaWNpdGx5IHByZXZlbnQgY2VydGFpbiBmaWxlcyBhbmQgZm9sZGVycyBpbiB0aGUgZmlsZSBzeXN0ZW0gZnJvbSBiZWluZyBhZGRlZAphdXRvbWF0aWNhbGx5IHRvIHRoZSB3b3Jrc3BhY2UuIEJ5IGRlZmF1bHQsIHRoZXJlIHdvdWxkIGJlIG5vIGV4Y2x1c2lvbiBydWxlcywKYW5kIHRoZSB3b3Jrc3BhY2Ugd291bGQgYmVoYXZlIGV4YWN0bHkgYXMgaW4gMi4wLiBJZiB0aGUgdXNlciBpbmRpY2F0ZXMgdGhhdCBhCnBhcnRpY3VsYXIgZmlsZSBvciBmb2xkZXIgaXMgdG8gYmUgZXhjbHVkZWQsIHRoZSByZWZyZXNoIG9wZXJhdGlvbiB3b3VsZCBuZXZlcgphZGQgaXQgdG8gdGhlIHJlc291cmNlIHRyZWUsIGV2ZW4gaWYgdGhlIGZpbGUgb3IgZm9sZGVyIGV4aXN0cyBpbiB0aGUgZmlsZQpzeXN0ZW0uIFRoaXMgd291bGQgZ2l2ZSB3b3Jrc3BhY2UgcHJvamVjdHMgYW4gaW5pdGlhbGx5IGFsbC1pbmNsdXNpdmUgZmVlbCB3aGljaApjb3VsZCBiZSBtYWRlIG1vcmUgc2VsZWN0aXZlIGFzIHJlcXVpcmVkLjwvcD4KPHA+TmV3IEFQSSB3b3VsZCBiZSByZXF1aXJlZCB0byBjaGFuZ2UgdGhlIGV4Y2x1c2lvbiBydWxlIHNldCwgdG8gZXhwbGljaXRseSBhZGQKYSBmaWxlIG9yIGZvbGRlciB0byB0aGUgcmVzb3VyY2UgdHJlZSBldmVuIGlmIG9uIHRoZSBleGNsdWRlZCBsaXN0LCBhbmQgdG8KcmVtb3ZlIGEgZmlsZSBvciBmb2xkZXIgZnJvbSB0aGUgcmVzb3VyY2UgdHJlZSB3aXRob3V0IGRlbGV0aW5nIHRoZSBmaWxlIGluIHRoZQpmaWxlIHN5c3RlbS4gVGhlIHNlbWFudGljcyBvZiBJUmVzb3VyY2UucmVmcmVzaExvY2FsIHdvdWxkIG5vdCBoYXZlIHRvIGNoYW5nZSBpbgphIGJyZWFraW5nIHdheS4gQSBwcm9qZWN0J3Mgd29ya3NwYWNlCnJlc291cmNlIHRyZWUgaXMgYSBtb3JlLW9yLWxlc3MgZmFpdGhmdWwgbWlycm9yIG9mIHRoZSBwcm9qZWN0J3Mgc3VidHJlZSBpbiB0aGUKZmlsZSBzeXN0ZW0gZXhjZXB0IGZvciB0aGUgZmlsZXMgYW5kIGZvbGRlcnMgdGhhdCB0aGUgdXNlciBoYXMgZXhwbGljaXRseSB0YWtlbgpvZmYgdGhlIHRhYmxlLjwvcD4KPHA+T24gdGhlIHBsdXMgc2lkZSwgdGhlIHJlc291cmNlIHRyZWUgd291bGQgYmUgc21hbGxlciBpZiBzb21lIGZpbGVzIGFuZApmb2xkZXJzIHdlcmUgdG8gYmUgZXhjbHVkZWQsIGFuZCB0aGlzIHdvdWxkIGltcHJvdmUgcGVyZm9ybWFuY2UuIEl0IHdvdWxkIGFsc28KcmVkdWNlIHdvcmtzcGFjZSBjbHV0dGVyIGFuZCBtYWtlIEVjbGlwc2UgYmVoYXZlIG1vcmUgbGlrZSBjZXJ0YWluIG90aGVyIHBvcHVsYXIKSURFcy4gT24gdGhlIG1pbnVzIHNpZGUsIGl0IGRvZXMgbWVhbiB0aGF0IGluLW1lbW9yeSB3b3Jrc3BhY2UgcmVzb3VyY2UgdHJlZSBpcwpub3QgcXVpdGUgYXMgZmFpdGhmdWwgYSZuYnNwO21pcnJvciBvZiB0aGUgZmlsZSBzeXN0ZW0uPC9wPgo8cD48Yj5PcHRpb24gUy01PC9iPjogQWRkIEVjbGlwc2UgUGxhdGZvcm0gbWVjaGFuaXNtIHRvIGhpZGUgY2VydGFpbiBmaWxlcyBpbiB0aGUgd29ya3NwYWNlIHJlc291cmNlCnRyZWUuPC9wPgo8cD4gRWNsaXBzZSBQbGF0Zm9ybSAyLjAgaGFzIGEgJnF1b3Q7dGVhbSBwcml2YXRlIG1lbWJlciZxdW90OyBtZWNoYW5pc20gZm9yCmhpZGluZyBjZXJ0YWluIHJlc291cmNlcy4gVGhlc2UgcmVzb3VyY2VzIGFyZSByZXByZXNlbnRlZCBieSBlbnRyaWVzIGluIHRoZQp3b3Jrc3BhY2UgcmVzb3VyY2UgdHJlZSwgYnV0IGFyZSBleHBsaWNpdGx5IG1hcmtlZCBhcyBoaWRkZW4gc28gdGhhdCBjbGllbnRzCndpbGwgbm90IHNlZSB0aGVzZSByZXNvdXJjZXMgdW5sZXNzIHRoZXkgYXNrIHRvIHNlZSB0aGVtLiBJbWFnaW5lIHRoYXQgdGhpcwptZWNoYW5pc20gd2FzIGdlbmVyYWxpemVkIGFuZCBleHRlbmRlZCBzbyB0aGF0IG90aGVyIHJlc291cmNlcyBjb3VsZCBiZQpzaW1pbGFybHkgaGlkZGVuIGZyb20gY2xpZW50cyB0aGF0IGRvIG5vdCBhc2sgZm9yIHRoZW0uIEJ5IGRlZmF1bHQsIHRoZXJlIHdvdWxkIGJlIG5vCmhpZGRlbiBmaWxlcywKYW5kIHRoZSB3b3Jrc3BhY2Ugd291bGQgYmVoYXZlIGV4YWN0bHkgYXMgaW4gMi4wLiBUaGUgcmVmcmVzaCBvcGVyYXRpb24gd291bGQKYXV0b21hdGljYWxseSBhZGQgYW5kIHJlbW92ZSBmaWxlcyBhcyBpbiAyLjAuIFRoZSB1c2VyIGNvdWxkIGV4cGxpY2l0bHkgY29udHJvbAp3aGV0aGVyIHRoZXkgd2VyZSBtYXJrZWQgYXMgaGlkZGVuLCBhbmQgd2hldGhlciBoaWRkZW4gZmlsZXMgd2VyZSBzaG93biBpbiB0aGUKVUkuIFRoaXMgd291bGQgZ2l2ZSB3b3Jrc3BhY2UgcHJvamVjdHMgYW4gYWxsLWluY2x1c2l2ZSBmZWVsCndoaWNoIHRoZSB1c2VyCmNvdWxkIG1ha2UgbW9yZSBzZWxlY3RpdmUgYXMgcmVxdWlyZWQuPC9wPgo8cD5OZXcgQVBJIHdvdWxkIGJlIHJlcXVpcmVkIHRvIGNoYW5nZSB0aGUgaGlkZGVuIGZsYWcgYW5kIHRvIGluY2x1ZGUgb3IgZXhjbHVkZQpoaWRkZW4gcmVzb3VyY2VzIHdoZW4gbmF2aWdhdGluZyB0aGUgd29ya3NwYWNlLiBUaGUgc2VtYW50aWNzIG9mIElSZXNvdXJjZS5yZWZyZXNoTG9jYWwgd291bGQgbm90IGhhdmUgdG8gY2hhbmdlLiBBIHByb2plY3QncyB3b3Jrc3BhY2UKcmVzb3VyY2UgdHJlZSBpcyBhIG1vcmUtb3ItbGVzcyBmYWl0aGZ1bCBtaXJyb3Igb2YgdGhlIHByb2plY3QncyBzdWJ0cmVlIGluIHRoZQpmaWxlIHN5c3RlbSBleGNlcHQgZm9yIHRoZSBmaWxlcyBhbmQgZm9sZGVycyB0aGF0IHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5IHRha2VuCm9mZiB0aGUgdGFibGUuPC9wPgo8aDM+QXNzZXNzbWVudCA8L2gzPgo8dWw+CiAgPGxpPlMtMSBpcyBwcm9taXNpbmcuPC9saT4KICA8bGk+Uy0yIGlzIGFsc28gcHJvbWlzaW5nOyBpdCBwcm92aWRlcyBsZXNzIGZsZXhpYmlsaXR5IHRoYXQgUy0xLCBidXQgaXMgYWxzbwogICAgc2ltcGxlciBhbGwgYXJvdW5kLjwvbGk+CiAgPGxpPlMtMyBpcyBhIG5vbi1zdGFydGVyLjwvbGk+CiAgPGxpPlMtNCBpcyBwcm9taXNpbmcuPC9saT4KICA8bGk+Uy01IGlzIHByb21pc2luZy48L2xpPgo8L3VsPgo8aDI+QWxsb3dpbmcgT3ZlcmxhcDwvaDI+CjxwPkhvdyBjb3VsZCB3ZSBjaGFuZ2UgRWNsaXBzZSB0byBhbGxvdyBKYXZhIHNvdXJjZSBmb2xkZXJzIHRvIG92ZXJsYXA/PC9wPgo8cD5IZXJlIGFyZSBzb21lIG9wdGlvbnMgKGluIG5vIHBhcnRpY3VsYXIgb3JkZXIpOjwvcD4KPHA+PGI+T3B0aW9uIFYtMTwvYj46IENoYW5nZSBKRFQgdG8gYWxsb3cgb3ZlcmxhcCB3aXRoaW4gYSBwcm9qZWN0J3Mgc291cmNlCmZvbGRlcnMuPC9wPgo8cD5UaGlzIG9wdGlvbiBpcyBkaXNjdXNzZWQgaW4gUy0xIGFuZCBTLTIuPC9wPgo8cD48Yj5PcHRpb24gVi0yPC9iPjogQWxsb3cgJnF1b3Q7bW91bnRlZCZxdW90OyBmaWxlIHN5c3RlbSBkaXJlY3RvcmllcyB0bwpvdmVybGFwLjwvcD4KPHA+T25lIG9mIHRoZSBkZXNpZ24gZGV0YWlscyBvZiBvcHRpb24gTS0yIGlzIHdoZXRoZXIgdG8gYWxsb3cgbW91bnRlZApkaXJlY3RvcmllcyB0byBvdmVybGFwLCBlaXRoZXIgd2l0aGluIGEgc2luZ2xlIHByb2plY3Qgb3IgYWNyb3NzIGFsbCBwcm9qZWN0cyBpbgp0aGUgd29ya3NwYWNlLiZuYnNwOzwvcD4KPHA+IFRoZSBzaW1wbGUgaW50ZXJwcmV0YXRpb24gb2Ygb3ZlcmxhcHBpbmcgbW91bnQgcG9pbnRzIHdvdWxkIG1lYW4gdGhhdCB0aGUgc2FtZSBmaWxlIG9uCmRpc2sgbWlnaHQgaGF2ZSBtdWx0aXBsZSBkaXN0aW5jdCByZXNvdXJjZSBoYW5kbGVzLiBUaGlzIHdvdWxkIGNyZWF0ZSBhIHNlbWFudGljCnByb2JsZW0gZm9yIHRoZSBJV29ya3NwYWNlUm9vdC5nZXRDb250YWluZXIvRmlsZUZvckxvY2F0aW9uIEFQSSBtZXRob2RzIHdoaWNoCnByZXN1cHBvc2UgdGhhdCB0aGVyZSBpcyBhdCBtb3N0IG9uZSByZXNvdXJjZSBoYW5kbGUgZm9yIGFueSBjYW5kaWRhdGUgZmlsZSBzeXN0ZW0gcGF0aC48L3A+CjxwPk90aGVyIGlzc3VlcyBpZiB0d28gcmVzb3VyY2VzIC9QMS9Gb28udHh0IGFuZCAvUDIvRm9vLnR4dCBjb3JyZXNwb25kIHRvIHRoZQpzYW1lIGZpbGUgQzovU291cmNlcy9Gb28udHh0OjwvcD4KPHVsPgogIDxsaT5SZWZyZXNoOiBEb2VzIHJlZnJlc2hpbmcgb25lIHJlc291cmNlIGFsc28gcmVmcmVzaCB0aGUgb3RoZXI/PC9saT4KICA8bGk+VkNNOiBIb3cgdG8gZGVjaWRlIHdoaWNoIHByb2plY3QgaXMgcmVzcG9uc2libGUgZm9yIFZDTT88L2xpPgo8L3VsPgo8aDM+QXNzZXNzbWVudCA8L2gzPgo8dWw+CiAgPGxpPlYtMSBpcyBwcm9taXNpbmcuPC9saT4KICA8bGk+Vi0yIGlzIHByb21pc2luZywgYnV0IGhhcyBzb21lIEFQSSBicmVha2FnZSwgYW5kIHNvbWUgc2VtYW50aWMgcXVlc3Rpb25zCiAgICB0aGF0IG5lZWQgdG8gYmUgd29ya2VkIHRocm91Z2guPC9saT4KPC91bD4KPHA+T3B0aW9ucyBWLTEgYW5kIFYtMiBhcmUgbm90IG5lY2Vzc2FyaWx5IG11dHVhbGx5IGV4Y2x1c2l2ZS4gIFRoZXJlIG1heSBiZSByZWFzb24gdG8gYWxsb3cgb3ZlcmxhcHBpbmcgc291cmNlIGZvbGRlcnMgcmVnYXJkbGVzcyBvZiBtb3VudCBwb2ludHMsIGFuZCB2aWNlLXZlcnNhLjwvcD4KPC9ib2R5Pgo8L2h0bWw+