PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgkKCSMKCSMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuIAoJJHBhZ2VUaXRsZSAJCT0gIkVjbGlwc2UgRm91bmRhdGlvbiBKb2lucyBUaHJlZSBJbmR1c3RyeSBTcGVjaWZpY2F0aW9uIEdyb3VwcyI7CgkkcGFnZUtleXdvcmRzCT0gIkVjbGlwc2UsIEluZHVzdHJ5LCBTcGVjaWZpY2F0aW9ucyI7CgkkcGFnZUF1dGhvcgkJPSAiSWFuIFNrZXJyZXR0IjsKCQoJIyBBZGQgcGFnZS1zcGVjaWZpYyBOYXYgYmFycyBoZXJlCgkjIEZvcm1hdCBpcyBMaW5rIHRleHQsIGxpbmsgVVJMIChjYW4gYmUgaHR0cDovL3d3dy5zb21lb3RoZXJzaXRlLmNvbS8pLCB0YXJnZXQgKF9zZWxmLCBfYmxhbmspCgkjICROYXYtPmFkZEN1c3RvbU5hdigiTXkgTGluayIsICJteXBhZ2UucGhwIiwgIl9zZWxmIik7CgkjICROYXYtPmFkZEN1c3RvbU5hdigiR29vZ2xlIiwgImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iLCAiX2JsYW5rIik7CgoJIyBFbmQ6IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MKCSMKCQoJIyBQYXN0ZSB5b3VyIEhUTUwgY29udGVudCBiZXR3ZWVuIHRoZSBFT0hUTUwgbWFya2VycyEJCgkkaHRtbCA9IDw8PEVPSFRNTAo8ZGl2IGlkPSJtYWluY29udGVudCI+Cgk8ZGl2IGlkPSJtaWRjb2x1bW4iPgoJCTxoMj5QcmVzcyBSZWxlYXNlPC9oMj4KCQk8aDE+JHBhZ2VUaXRsZTwvaDE+CgkJPHA+PGk+TWVtYmVyc2hpcCBpbiB0aGUgSmF2YSBDb21tdW5pdHkgUHJvY2VzcywgT2JqZWN0IE1hbmFnZW1lbnQgR3JvdXAgYW5kIE9TR2kgQWxsaWFuY2UgRGVzaWduZWQgdG8gUHJvbW90ZSBJbmR1c3RyeSBTdGFuZGFyZHMgYW5kIE9wZW4gU291cmNlIEltcGxlbWVudGF0aW9ucyA8L2k+PC9wPgoJCTxwPjxzdHJvbmc+T1RUQVdBIC0gSmFudWFyeSAxMiwgMjAwNyAtIDwvc3Ryb25nPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIGFuIG9wZW4gc291cmNlIGNvbW11bml0eSBjb21taXR0ZWQgdG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgdW5pdmVyc2FsIHNvZnR3YXJlIGRldmVsb3BtZW50IHBsYXRmb3JtLCB0b2RheSBhbm5vdW5jZWQgaXQgaGFzIGJlY29tZSBhIG1lbWJlciBvZiB0aHJlZSBpbmR1c3RyeSBzcGVjaWZpY2F0aW9uIGdyb3VwczogSmF2YSBDb21tdW5pdHkgUHJvY2VzcyAoSkNQKSwgT2JqZWN0IE1hbmFnZW1lbnQgR3JvdXAgKE9NRykgYW5kIHRoZSBPU0dpIEFsbGlhbmNlLiBUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIGhhcyBqb2luZWQgdGhlc2Ugb3JnYW5pemF0aW9ucyB0byBmdXJ0aGVyIHByb21vdGUgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIG9wZW4gc3RhbmRhcmRzIGFuZCBvcGVuIHNvdXJjZSBpbXBsZW1lbnRhdGlvbnMuIAoJCTwvcD4KCQk8cD4iUGFydGljaXBhdGluZyBtb3JlIGZ1bGx5IGluIGluZHVzdHJ5IG9yZ2FuaXphdGlvbnMgaXMgYSBzaWduIG9mIEVjbGlwc2UncyBncm93aW5nIHJvbGUgYW5kIG1hdHVyaXR5IGluIHRoZSBzb2Z0d2FyZSBtYXJrZXRwbGFjZSIgc2FpZCBNaWtlIE1pbGlua292aWNoLCBleGVjdXRpdmUgZGlyZWN0b3Igb2YgdGhlIEVjbGlwc2UgRm91bmRhdGlvbi4gIldlJ3JlIGhhcHB5IHRvIHN1cHBvcnQgdGhlc2UgY29tbXVuaXR5IG9yZ2FuaXphdGlvbnMgYXMgbWVtYmVycy4gVGhpcyBjb21wbGVtZW50cyBvdXIgbG9uZyBzdGFuZGluZyBwb2xpY3kgb2YgaW1wbGVtZW50aW5nIGJhc2VkIG9uIHN0YW5kYXJkcyB3aGVyZXZlciBwb3NzaWJsZS4iPC9wPgoJCQoJCTxwPkVjbGlwc2Ugb3BlbiBzb3VyY2UgcHJvamVjdHMgYXJlIHByb3ZpZGluZyBvcGVuIHNvdXJjZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHN0YW5kYXJkcyBzZXQgYnkgdGhlc2UgZGlmZmVyZW50IG9yZ2FuaXphdGlvbnMuIEZvciBleGFtcGxlLCB0aGUgRWNsaXBzZSBXZWIgVG9vbHMgUHJvamVjdCAoV1RQKSBwcm92aWRlcyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIEpDUCBKU1IgMjQ0IChKRUUgNSksIEpTUiAyMjAgKEVKQjMpLCBKU1IgMTI3IChKU0YpIGFuZCBvdGhlcnM7IHRoZSBFY2xpcHNlIEVxdWlub3ggcHJvamVjdCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgT1NHaSB2NCBzcGVjaWZpY2F0aW9uOyBhbmQgdGhlIEVjbGlwc2UgTW9kZWxpbmcgUHJvamVjdCBwcm92aWRlcyBpbXBsZW1lbnRhdGlvbnMgZm9yIE9NR5JzIFVNTDIsIE9DTCBhbmQgb3RoZXIgc3BlY2lmaWNhdGlvbnMuPC9wPgoKCQk8cD4iSZJtIHBsZWFzZWQgdG8gd2VsY29tZSBFY2xpcHNlIHRvIHRoZSBKQ1AslCBzYWlkIE9ubm8gS2x1eXQsIGNoYWlyIG9mIHRoZSBKQ1AgYW5kIGRpcmVjdG9yIG9mIHRoZSBKQ1AgUHJvZ3JhbSBhdCBTdW4gTWljcm9zeXN0ZW1zLiAiRWNsaXBzZSB3aWxsIGZpbmQgbWFueSBvdGhlciBvcGVuIHNvdXJjZSBzb2Z0d2FyZSBvcmdhbml6YXRpb25zIGFuZCBwcm9qZWN0cyByZXByZXNlbnRlZCBpbiB0aGUgSkNQIE1lbWJlcnNoaXAsIHN1Y2ggYXMgdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBNeVNRTCwgSkJvc3MsIGFuZCB0aGUgT3BlbkpESywgR2xhc3NmaXNoIGFuZCBNb2JpbGUgJiBFbWJlZGRlZCBjb21tdW5pdGllcy4gRWNsaXBzZSBicmluZ3MgaXRzIGV4cGVydGlzZSB0byB0aGUgZm9sZCB0byBiZW5lZml0IHN0YW5kYXJkcywgY29tbXVuaXR5IGFuZCBkZXZlbG9wZXJzLiBNYW55IG9mIHRoZSBFY2xpcHNlIHByb2plY3RzIGFscmVhZHkgaW1wbGVtZW50IHN0YW5kYXJkcyBkZXZlbG9wZWQgdGhyb3VnaCB0aGUgSkNQIGFuZCB0aGUgbW92ZSB0byBmb3JtYWxseSBqb2luIHRoZSBjb21tdW5pdHkgaXMgYW4gaW5kaWNhdGlvbiB0aGF0IGFuIGV2ZW4gZ3JlYXRlciBpbnZvbHZlbWVudCB3aXRoIEphdmEgc3RhbmRhcmRzIGRldmVsb3BtZW50IGFuZCBpbXBsZW1lbnRhdGlvbiBpcyB0byBiZSBleHBlY3RlZC4gVGhpcyBpcyBncmVhdCBuZXdzIGZvciB0aGUgRWNsaXBzZSBwbGF0Zm9ybSBhbmQgZm9yIEphdmEgdGVjaG5vbG9neSBhbmQgZGV2ZWxvcGVycy6UPC9wPgoJCgkJPHA+IlRoZSBPYmplY3QgTWFuYWdlbWVudCBHcm91cCAoT01HKSBhbmQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBoYXZlIGhhZCBhIHZlcnkgY2xvc2UgcmVsYXRpb25zaGlwIHNpbmNlIEVjbGlwc2Ugd2FzIGZvdW5kZWQsIHdoZW4gSSB3YXMgaG9ub3JlZCB0byBzZXJ2ZSBvbiB0aGUgb3JpZ2luYWwgQm9hcmQgb2YgU3Rld2FyZHMgdGhhdCBraWNrZWQgb2ZmIHRoZSBwcm9qZWN0LCIgc2FpZCBEci4gUmljaGFyZCBTb2xleSwgY2hhaXJtYW4gYW5kIENFTywgT01HLiAiTW9yZSBpbXBvcnRhbnRseSwgdGhlIHN5bmVyZ2llcyBiZXR3ZWVuIHRoZSBvcmdhbml6YXRpb25zIGNvbnRpbnVlIHRvIGdyb3csIGVzcGVjaWFsbHkgaW4gdGhlIG1vZGVsaW5nIGFyZWFzLiAgT01HJ3Mgb3BlbiBzdGFuZGFyZHMgYW5kIEVjbGlwc2UncyBvcGVuIHNvdXJjZSBkZXZlbG9wbWVudCB0b2dldGhlciBwcm92aWRlIGFuIHVuYmVhdGFibGUgY29tYmluYXRpb24gdG8gdXNlcnMgYW5kIHZlbmRvcnMgLS0gc29saWQsIGRlcGVuZGFibGUgc3RhbmRhcmRzLCBhbmQgc29saWQsIGRlcGVuZGFibGUgaW1wbGVtZW50YXRpb25zLiAgV2UncmUgZGVsaWdodGVkIHRvIGZvY3VzIHRoaXMgcmVsYXRpb25zaGlwIGZ1cnRoZXIgd2l0aCB0aGlzIGFubm91bmNlbWVudC4iPC9wPgoKCQk8cD4iV2UgdGFrZSBwbGVhc3VyZSBpbiB3ZWxjb21pbmcgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBhcyBhbiBBZG9wdGVyIEFzc29jaWF0ZSBtZW1iZXIgb2YgdGhlIEFsbGlhbmNlLCIgc2FpZCBTdGFuIE1veWVyLCBwcmVzaWRlbnQgb2YgdGhlIE9TR2kgQWxsaWFuY2UgYW5kIGV4ZWN1dGl2ZSBkaXJlY3RvciBpbiB0aGUgQXBwbGllZCBSZXNlYXJjaCBhcmVhIG9mIFRlbGNvcmRpYSBUZWNobm9sb2dpZXMuIJNPdmVyIHRoZSB5ZWFycyBPU0dpIHRlY2hub2xvZ3kgYW5kIEVjbGlwc2Ugc29sdXRpb25zIGhhdmUgaW5jcmVhc2luZ2x5IGFkZHJlc3NlZCBzaW1pbGFyIG1hcmtldCBuZWVkcyBhbmQgbm93IEVjbGlwc2UgdXRpbGl6ZXMgT1NHaSB0ZWNobm9sb2d5IGluIHRoZWlyIGJhc2UgcGxhdGZvcm0uIFdlIGxvb2sgZm9yd2FyZCB0byBlbmdhZ2luZyBldmVuIG1vcmUgd2l0aCB0aGUgZGV2ZWxvcGVycyBhbmQgbGVhZGVycyBpbiB0aGUgRWNsaXBzZSBjb21tdW5pdHkgdG8gcHJvdmlkZSBwbGF0Zm9ybXMsIGZyYW1ld29ya3MsIGFuZCBzb2x1dGlvbnMgcmVsZXZhbnQgdG8gdGhlIG9wZW4gc291cmNlIGVudmlyb25tZW50IjwvcD4KCQkKCQk8cD48c3Ryb25nPkFib3V0IHRoZSBFY2xpcHNlIEZvdW5kYXRpb248L3N0cm9uZz48YnIgLz4KCQlFY2xpcHNlIGlzIGFuIG9wZW4gc291cmNlIGNvbW11bml0eSB3aG9zZSBwcm9qZWN0cyBhcmUgZm9jdXNlZCBvbiBwcm92aWRpbmcgYW4gZXh0ZW5zaWJsZSBkZXZlbG9wbWVudCBwbGF0Zm9ybSBhbmQgYXBwbGljYXRpb24gZnJhbWV3b3JrcyBmb3IgYnVpbGRpbmcgc29mdHdhcmUuIEVjbGlwc2UgcHJvdmlkZXMgZXh0ZW5zaWJsZSB0b29scyBhbmQgZnJhbWV3b3JrcyB0aGF0IHNwYW4gdGhlIHNvZnR3YXJlIGRldmVsb3BtZW50IGxpZmVjeWNsZSwgaW5jbHVkaW5nIHN1cHBvcnQgZm9yIG1vZGVsaW5nLCBsYW5ndWFnZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgZm9yIEphdmEsIEMvQysrIGFuZCBvdGhlcnMsIHRlc3RpbmcgYW5kIHBlcmZvcm1hbmNlLCBidXNpbmVzcyBpbnRlbGxpZ2VuY2UsIHJpY2ggY2xpZW50IGFwcGxpY2F0aW9ucyBhbmQgZW1iZWRkZWQgZGV2ZWxvcG1lbnQuIEEgbGFyZ2UsIHZpYnJhbnQgZWNvc3lzdGVtIG9mIG1ham9yIHRlY2hub2xvZ3kgdmVuZG9ycywgaW5ub3ZhdGl2ZSBzdGFydC11cHMsIHVuaXZlcnNpdGllcyBhbmQgcmVzZWFyY2ggaW5zdGl0dXRpb25zIGFuZCBpbmRpdmlkdWFscyBleHRlbmQsIGNvbXBsZW1lbnQgYW5kIHN1cHBvcnQgdGhlIEVjbGlwc2UgUGxhdGZvcm0uPC9wPgoJCTxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgYSBub3QtZm9yLXByb2ZpdCwgbWVtYmVyIHN1cHBvcnRlZCBjb3Jwb3JhdGlvbiB0aGF0IGhvc3RzIHRoZSBFY2xpcHNlIHByb2plY3RzLiBGdWxsIGRldGFpbHMgb2YgRWNsaXBzZSBhbmQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBhcmUgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmciPnd3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPgoJCQoJCTxwPjxjZW50ZXI+PGk+QWxsIGNvbXBhbnkvcHJvZHVjdCBuYW1lcyBhbmQgc2VydmljZSBtYXJrcyBtYXkgYmUgdHJhZGVtYXJrcyBvciByZWdpc3RlcmVkIHRyYWRlbWFya3Mgb2YgdGhlaXIgcmVzcGVjdGl2ZSBjb21wYW5pZXMuPC9pPjwvY2VudGVyPjwvcD4KCQkKCQk8YnIgLz48YnIgLz48c3Ryb25nPlByZXNzIENvbnRhY3Q8L3N0cm9uZz48YnI+CQoJCUpvaG4gTW9yYW4gb3IgTG9yaSBLcm9sbDxici8+CgkJU2Nod2FydHogQ29tbXVuaWNhdGlvbnM8YnIvPgoJCTc4MS02ODQtMDc3MDxici8+CgkJZWNsaXBzZUBzY2h3YXJ0ei1wci5jb20gPGJyLz4KCQk8YnIgLz4KCQkKCQk8Y2VudGVyPiMgIyAjPC9jZW50ZXI+IAoJCTxiciAvPgoJCTxicj4KCQkJPGJyPgoJPC9kaXY+Cgo8L2Rpdj4KCgoJCQoKRU9IVE1MOwoKCgkjIEdlbmVyYXRlIHRoZSB3ZWIgcGFnZQoJJEFwcC0+Z2VuZXJhdGVQYWdlKCR0aGVtZSwgJE1lbnUsICROYXYsICRwYWdlQXV0aG9yLCAkcGFnZUtleXdvcmRzLCAkcGFnZVRpdGxlLCAkaHRtbCk7Cj8+Cgo=