PCFkb2N0eXBlIGh0bWwgcHVibGljICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgo8aHRtbD4KCjxoZWFkPgo8bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1pY3Jvc29mdCBGcm9udFBhZ2UgNC4wIj4KPHRpdGxlPlJFQURNRSAtIE1pY3Jvc29mdCBGcm9udFBhZ2UgMjAwMCBTZXJ2ZXIgRXh0ZW5zaW9uczwvdGl0bGU+CjxtZXRhIG5hbWU9Ik1pY3Jvc29mdCBUaGVtZSIgY29udGVudD0ibm9uZSI+CjwvaGVhZD4KCjxib2R5Pgo8Zm9udCBmYWNlPSJWZXJkYW5hIj4KPGgxPjxhIG5hbWU9InRvcCI+TWljcm9zb2Z0IEZyb250UGFnZSAyMDAwIFNlcnZlciBFeHRlbnNpb25zLCBVTklYPC9hPjwvaDE+Cgo8Zm9udCBzaXplPSIyIj48aT6pIENvcHlyaWdodCBNaWNyb3NvZnQgQ29ycG9yYXRpb24sIDE5OTkmbmJzcDs8L2k+PC9mb250PgoKCjxwPlRoZSBGcm9udFBhZ2UgU2VydmVyIEV4dGVuc2lvbnMgYXJlIGEgc2V0IG9mIHByb2dyYW1zIG9uIHRoZSBXZWIgc2VydmVyIHRoYXQgc3VwcG9ydDogCgo8dWw+CiAgPGxpPkF1dGhvcmluZyBGcm9udFBhZ2Ugd2ViczwvbGk+CiAgPGxpPkFkbWluaXN0ZXJpbmcgRnJvbnRQYWdlIHdlYnM8L2xpPgogIDxsaT5Ccm93c2UtdGltZSBGcm9udFBhZ2Ugd2ViIGZ1bmN0aW9uYWxpdHk8L2xpPgo8L3VsPgoKCjxoMj5Db250ZW50cyZuYnNwOzwvaDI+Cgo8YSBocmVmPSIjcmVsbm90ZXMiPlJlbGVhc2UgTm90ZXM8L2E+PGJyPgo8YSBocmVmPSIjbW9yZWluZm8iPlJlc291cmNlcyBmb3IgTW9yZSBJbmZvcm1hdGlvbjwvYT4KPHA+Jm5ic3A7PC9wPgo8aHI+CjxoMj48YSBuYW1lPSJyZWxub3RlcyI+UmVsZWFzZSBOb3RlczwvYT48L2gyPgoKPHA+VGhpcyBzZWN0aW9uIHByb3ZpZGVzIGNvbXBsZW1lbnRhcnkgb3IgbGF0ZS1icmVha2luZyAKaW5mb3JtYXRpb24gdG8gc3VwcGxlbWVudCB0aGUgTWljcm9zb2Z0IEZyb250UGFnZSBTZXJ2ZXIgRXh0ZW5zaW9ucyBkb2N1bWVudGF0aW9uLjwvcD4KCjxwPjxhIGhyZWY9IiNhcGFjaGUiPkFwYWNoZSAxLjMuNCBTdXBwb3J0PC9hPjxicj4KPGEgaHJlZj0iI3VwZ3JhZGluZyI+VXBncmFkaW5nIGZyb20gcHJldmlvdXMgdmVyc2lvbiBvZiBGcm9udFBhZ2UgU2VydmVyIEV4dGVuc2lvbnM8L2E+PGJyPgo8YSBocmVmPSIjZXhlY3V0YWJsZXMiPlVwbG9hZGluZyBmaWxlcyBpbnRvIGV4ZWN1dGFibGUgZm9sZGVyczwvYT48L3A+CgoKPHAgYWxpZ249InJpZ2h0Ij48Zm9udCBzaXplPSIxIj48YSBocmVmPSIjdG9wIj5Ub3Agb2YgUGFnZTwvYT48L2ZvbnQ+PC9wPgoKCjxoMz48YSBuYW1lPSJhcGFjaGUiPkFwYWNoZSAxLjMuNCBTdXBwb3J0PC9hPjwvaDM+Cgo8cD5Zb3UgbmVlZCB0byB0YWtlIHNvbWUgc3BlY2lhbCBzdGVwcyB0byBydW4gdGhlIEZyb250UGFnZSBTZXJ2ZXIgRXh0ZW5zaW9ucyB3aXRoIEFwYWNoZSAxLjMuNC4KRnJvbnRQYWdlIFNlcnZlciBFeHRlbnNpb25zIGV4cGVjdCB0byBmaW5kIGFsbCByZXNvdXJjZSBkaXJlY3RpdmVzIGluIHRoZSBtYWluIHNlcnZlciAKY29uZmlndXJhdGlvbiBmaWxlLCB1c3VhbGx5IGh0dHAuY29uZi4gVG8gcHJldmVudCB0aGUgc2VydmVyIGV4dGVuc2lvbnMgZnJvbSB1c2luZyBhbnkgc2Vjb25kYXJ5CmNvbmZpZ3VyYXRpb24gZmlsZXMgKGFjY2Vzcy5jb25mLCBzcm0uY29uZiksIGFkZCB0aGUgZm9sbG93aW5nIGxpbmVzIHRvIGh0dHAuY29uZjo8L3A+CgoKPC9mb250Pgo8YmxvY2txdW90ZT4KICA8Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+ClJlc291cmNlQ29uZmlnIC9kZXYvbnVsbCZuYnNwOzxicj4KQWNjZXNzQ29uZmlnIC9kZXYvbnVsbDwvZm9udD4KPC9ibG9ja3F1b3RlPgo8Zm9udCBmYWNlPSJWZXJkYW5hIj4KCgo8cD5JZiB5b3UgaGF2ZSBzb21lIHNldHRpbmdzIHN0b3JlZCBpbiBzZWNvbmRhcnkgY29uZmlndXJhdGlvbiBmaWxlcywgbW92ZSB0aGVtIHRvIGh0dHAuY29uZi48L3A+Cgo8cD5Zb3UgbXVzdCBzdG9wIGFuZCByZXN0YXJ0IHRoZSB3ZWIgc2VydmVyIGZvciB5b3VyIGNoYW5nZXMgdG8gaHR0cC5jb25mIHRvIHRha2UgZWZmZWN0LjwvcD4KCgoKPHAgYWxpZ249InJpZ2h0Ij48Zm9udCBzaXplPSIxIj48YSBocmVmPSIjcmVsbm90ZXMiPlRvcCBvZiBTZWN0aW9uPC9hPjwvZm9udD48L3A+CgoKCjxoMz48YSBuYW1lPSJ1cGdyYWRpbmciPlVwZ3JhZGluZyBmcm9tIHByZXZpb3VzIHZlcnNpb24gb2YgRnJvbnRQYWdlIFNlcnZlciBFeHRlbnNpb25zPC9hPjwvaDM+Cgo8cD5DdXN0b20gZW50cmllcyBpbiBmcm9udHBhZ2UuY25mIGFyZSBub3QgbWlncmF0ZWQgdG8gRnJvbnRQYWdlIDIwMDAuPC9wPgoKPHA+V2hlbiB5b3UgaW5zdGFsbCBGcm9udFBhZ2UgMjAwMCBTZXJ2ZXIgRXh0ZW5zaW9ucywgYSBuZXcgZnJvbnRwYWdlLmNuZiBmaWxlIGlzIGNyZWF0ZWQgaW4gdGhlIC91c3IvbG9jYWwvZnJvbnRwYWdlL3ZlcnNpb240LjAgZGlyZWN0b3J5LiAKQW55IGN1c3RvbSBzZXR0aW5ncyBzdG9yZWQgaW4gYSBwcmV2aW91cy12ZXJzaW9uIGZyb250cGFnZS5jbmYgYXJlIG5vdCB1c2VkLiBIb3dldmVyLCB5b3UgY2FuIGNvcHkgCnlvdXIgY3VzdG9tIHNldHRpbmdzIGZyb20gdGhlIHByZXZpb3VzLXZlcnNpb24gZnJvbnRwYWdlLmNuZiBmaWxlIGFmdGVyIHlvdSBpbnN0YWxsIHRoZSBGcm9udFBhZ2UgMjAwMCBTZXJ2ZXIgRXh0ZW5zaW9ucy48L3A+Cgo8cD5EbyBub3Qgb3ZlcndyaXRlIHRoZSBGcm9udFBhZ2UgMjAwMCBmcm9udHBhZ2UuY25mIGZpbGUgd2l0aCBhIGZyb250cGFnZS5jbmYgZmlsZSBmcm9tIGFuIAplYXJsaWVyIHZlcnNpb24gb2YgdGhlIEZyb250UGFnZSBTZXJ2ZXIgRXh0ZW5zaW9ucy48L3A+CgoKCjxwIGFsaWduPSJyaWdodCI+PGZvbnQgc2l6ZT0iMSI+PGEgaHJlZj0iI3JlbG5vdGVzIj5Ub3Agb2YgU2VjdGlvbjwvYT48L2ZvbnQ+PC9wPgoKCgo8aDM+PGEgbmFtZT0iZXhlY3V0YWJsZXMiPlVwbG9hZGluZyBmaWxlcyBpbnRvIGV4ZWN1dGFibGUgZm9sZGVyczwvYT48L2gzPgoKCjxwPkFmdGVyIHVwZ3JhZGluZyB0byBGcm9udFBhZ2UgMjAwMCwgRnJvbnRQYWdlIGF1dGhvcnMgd2lsbCBub3QgYmUgYWJsZSB0byB1cGxvYWQgZmlsZXMgaW50bwpleGVjdXRhYmxlIGZvbGRlcnMuIEZvciBzZWN1cml0eSByZWFzb25zLCB0aGUgZGVmYXVsdCBzZXR0aW5nIG9uIEZyb250UGFnZSAyMDAwIHdlYnMgZG9lcyBub3QgCmFsbG93IGF1dGhvcnMgdG8gdXBsb2FkIGV4ZWN1dGFibGUgZmlsZXMgaW50byBleGVjdXRhYmxlIGZvbGRlcnMgaW4gYSBGcm9udFBhZ2Ugd2ViLiBUaGlzIApzZXR0aW5nIHByb3RlY3RzIHNlcnZlcnMgc28gdGhhdCBhdXRob3JzIGRvIG5vdCBpbmFkdmVydGVudGx5IHVwbG9hZCBhIHByb2dyYW0gY29udGFpbmluZyBhIGJ1ZyAKb3IgYSB2aXJ1cy48L3A+IAoKPHA+VG8gYWxsb3cgRnJvbnRQYWdlIGF1dGhvcnMgdG8gdXBsb2FkIGV4ZWN1dGFibGVzLCBzZXQgdGhlIE5vRXhlY3V0YWJsZUNnaVVwbG9hZCBjb25maWd1cmF0aW9uIAp2YXJpYWJsZSB0byB6ZXJvICgwKS4gRm9yIGluZm9ybWF0aW9uIGFib3V0IEZyb250UGFnZSBTZXJ2ZXIgRXh0ZW5zaW9uIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLCAKc2VlIHRoZSBGcm9udFBhZ2UgMjAwMCBTZXJ2ZXIgRXh0ZW5zaW9ucyBSZXNvdXJjZSBLaXQgYXQgPGEgaHJlZj0iaHR0cDovL29mZmljZXVwZGF0ZS5taWNyb3NvZnQuY29tL2Zyb250cGFnZS93cHAvc2Vyay8iPmh0dHA6Ly9vZmZpY2V1cGRhdGUubWljcm9zb2Z0LmNvbS9mcm9udHBhZ2Uvd3BwL3NlcmsvPC9hPi48L3A+CgoKCjxwIGFsaWduPSJyaWdodCI+PGZvbnQgc2l6ZT0iMSI+PGEgaHJlZj0iI3JlbG5vdGVzIj5Ub3Agb2YgU2VjdGlvbjwvYT48L2ZvbnQ+PC9wPgoKCgo8aHI+CgoKCjxoMj48YSBuYW1lPSJtb3JlaW5mbyI+UmVzb3VyY2VzIGZvciBNb3JlIEluZm9ybWF0aW9uPC9hPjwvaDI+Cgo8cD5UaGlzIHNlY3Rpb24gbGlzdHMgc291cmNlcyBvZiBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZQpGcm9udFBhZ2UgU2VydmVyIEV4dGVuc2lvbnMuPC9wPgoKPHA+PGEgaHJlZj0iI3NlcmsiPlNlcnZlciBFeHRlbnNpb25zIFJlc291cmNlIEtpdDwvYT48YnI+CjxhIGhyZWY9IiNzZXJrdXBkYXRlIj5TZXJ2ZXIgRXh0ZW5zaW9ucyBSZXNvdXJjZSBLaXQgVXBkYXRlPC9hPjxicj4KPGEgaHJlZj0iI2tiIj5Lbm93bGVkZ2UgQmFzZTwvYT48L3A+CgoKPHAgYWxpZ249InJpZ2h0Ij48Zm9udCBzaXplPSIxIj48YSBocmVmPSIjdG9wIj5Ub3Agb2YgUGFnZTwvYT48L2ZvbnQ+PC9wPgoKCjxoMz48YSBuYW1lPSJzZXJrIj5TZXJ2ZXIgRXh0ZW5zaW9ucyBSZXNvdXJjZSBLaXQ8L2E+PC9oMz4KCjxwPlRoZSBGcm9udFBhZ2UgMjAwMCBTZXJ2ZXIgRXh0ZW5zaW9ucyBpbmNsdWRlIGEgZnVsbCBzZXQgb2YgZG9jdW1lbnRhdGlvbjogdGhlIFNlcnZlcgpFeHRlbnNpb25zIFJlc291cmNlIEtpdC4gVGhpcyBpcyBhbiBIVE1MIGRvY3VtZW50IGluc3RhbGxlZCBvbiB0aGUgc2VydmVyIG1hY2hpbmUgKGJ5CmRlZmF1bHQpIGluIC91c3IvbG9jYWwvZnJvbnRwYWdlL3ZlcnNpb240LjAvc2Vyay4gVG8gdmlldyB0aGUgU2VydmVyIEV4dGVuc2lvbnMgUmVzb3VyY2UKS2l0LCBvcGVuIC91c3IvbG9jYWwvZnJvbnRwYWdlL3ZlcnNpb240LjAvc2Vyay9kZWZhdWx0Lmh0bSBpbiB5b3VyIFdlYiBicm93c2VyLjwvcD4KCjxwPlRoZSBTZXJ2ZXIgRXh0ZW5zaW9ucyBSZXNvdXJjZSBLaXQgY29udGFpbnMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgaW5zdGFsbGluZyBhbmQKYWRtaW5pc3RlcmluZyB0aGUgRnJvbnRQYWdlIFNlcnZlciBFeHRlbnNpb25zIGFsb25nIHdpdGggYW4gb3ZlcnZpZXcgb2YgdGhlIFNlcnZlcgpFeHRlbnNpb25zLCBhIGRldGFpbGVkIGRpc2N1c3Npb24gb2YgU2VydmVyIEV4dGVuc2lvbnMgc2VjdXJpdHkgb24gVU5JWCBhbmQgV2luZG93cywKdHJvdWJsZXNob290aW5nIGluZm9ybWF0aW9uLCBhbmQgYSBmdWxsIHNldCBvZiBhcHBlbmRpeGVzLjwvcD4KCjxwIGFsaWduPSJyaWdodCI+PGZvbnQgc2l6ZT0iMSI+PGEgaHJlZj0iI21vcmVpbmZvIj5Ub3Agb2YgU2VjdGlvbjwvYT48L2ZvbnQ+PC9wPgoKCjxoMz48YSBuYW1lPSJzZXJrdXBkYXRlIj5TZXJ2ZXIgRXh0ZW5zaW9ucyBSZXNvdXJjZSBLaXQgVXBkYXRlPC9hPjwvaDM+Cgo8cD5Gb3IgdXBkYXRlZCBpbmZvcm1hdGlvbiBhYm91dCBpbnN0YWxsaW5nLCBzZXR0aW5nIHVwLCBhbmQgYWRtaW5pc3RyYXRpbmcgdGhlIEZyb250UGFnZSBTZXJ2ZXIgCkV4dGVuc2lvbnMsIHNlZSB0aGUgU2VydmVyIEV4dGVuc2lvbnMgUmVzb3VyY2UgS2l0IFVwZGF0ZSBhdDogPGEgaHJlZj0iaHR0cDovL29mZmljZXVwZGF0ZS5taWNyb3NvZnQuY29tL2Zyb250cGFnZS93cHAvc2Vyay8iPmh0dHA6Ly9vZmZpY2V1cGRhdGUubWljcm9zb2Z0LmNvbS9mcm9udHBhZ2Uvd3BwL3NlcmsvPC9hPi48L3A+CgoKPHAgYWxpZ249InJpZ2h0Ij48Zm9udCBzaXplPSIxIj48YSBocmVmPSIjbW9yZWluZm8iPlRvcCBvZiBTZWN0aW9uPC9hPjwvZm9udD48L3A+CgoKPGgzPjxhIG5hbWU9ImtiIj5NaWNyb3NvZnQgS25vd2xlZGdlIEJhc2U8L2E+PC9oMz4KCjxwPkZvciBmdXJ0aGVyIHRlY2huaWNhbCBpbmZvcm1hdGlvbiBvbiBGcm9udFBhZ2UsIHBsZWFzZSBjb25zdWx0IFN1cHBvcnQgT25saW5lLiBVc2UgU3VwcG9ydApPbmxpbmUgdG8gZWFzaWx5IHNlYXJjaCBNaWNyb3NvZnQgUHJvZHVjdCBTdXBwb3J0IFNlcnZpY2VzJyBjb2xsZWN0aW9uIG9mIHJlc291cmNlcyBpbmNsdWRpbmcgCnRlY2huaWNhbCBhcnRpY2xlcyBmcm9tIE1pY3Jvc29mdCdzIGV4dGVuc2l2ZSBLbm93bGVkZ2UgQmFzZSwgRkFRcywgJiB0cm91Ymxlc2hvb3RlcnMgdG8gZmluZCAKZmFzdCwgYWNjdXJhdGUgYW5zd2Vycy4gWW91IGNhbiBhbHNvIGN1c3RvbWl6ZSB0aGUgc2l0ZSB0byBjb250cm9sIHlvdXIgc2VhcmNoIHVzaW5nIGVpdGhlciAKa2V5d29yZHMgb3IgdGhlIHNpdGUncyBuYXR1cmFsIGxhbmd1YWdlIHNlYXJjaCBlbmdpbmUsIHdoaWNoIHVzZXMgbm9ybWFsIGV2ZXJ5ZGF5IGxhbmd1YWdlIGZvciAKYW5zd2VyaW5nIGlucXVpcmllcywgc28geW91IGNhbiB3cml0ZSB5b3VyIHF1ZXN0aW9uIGluIHlvdXIgb3duIHdvcmRzLiBUbyBiZWdpbiwgZ28gdG8KPGEgaHJlZj0iaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9zdXBwb3J0LyI+aHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9zdXBwb3J0LzwvYT4uPC9wPiAgCgo8cCBhbGlnbj0icmlnaHQiPjxmb250IHNpemU9IjEiPjxhIGhyZWY9IiNtb3JlaW5mbyI+VG9wIG9mIFNlY3Rpb248L2E+PC9mb250PjwvcD4KCgo8cD4mbmJzcDs8L3A+ICAKCjwvZm9udD4KPC9ib2R5Pgo8L2h0bWw+Cg==