PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIGh0bWwKICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sPgo8aGVhZD4KPCEtLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDUgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCiAqIAogKiBDb250cmlidXRvcnM6CiAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIC0tPgo8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi9vcmcuZWNsaXBzZS53c3QuZG9jLnVzZXIvY29tbW9uLmNzcyIgLz4KPC9oZWFkPgo8Ym9keSBpZD0idHdlZHR3YngxIj48YSBuYW1lPSJ0d2VkdHdieDEiPjwhLS0gLS0+PC9hPgoKPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+V29ya2luZyBpbiB0aGUgT3ZlcnZpZXcgcGFnZTwvaDE+CjxkaXY+PGRpdiBjbGFzcz0ic2tpcHNwYWNlIj5JbiB0aGUgPGI+T3ZlcnZpZXc8L2I+IHBhZ2Ugb2YgdGhlIDxhIGhyZWY9ImNjd2VieG1sLmh0bWwiPldlYgpkZXBsb3ltZW50IGRlc2NyaXB0b3IgZWRpdG9yPC9hPiwgeW91IGNhbiBnZXQgYSBxdWljayBzdW1tYXJ5IG9mIHRoZSBjb250ZW50cwpvZiB0aGUgV2ViIGRlcGxveW1lbnQgZGVzY3JpcHRvciBpbiBhZGRpdGlvbiB0byBhZGp1c3RpbmcgdmFyaW91cyBzZXR0aW5ncy4gPHA+VG8Kd29yayBpbiB0aGUgPGI+IE92ZXJ2aWV3PC9iPiBwYWdlLCBjb21wbGV0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOjwvcD4KPC9kaXY+CjxvbD48bGk+PHNwYW4+T3BlbiBhIFdlYiBwcm9qZWN0IGluIHRoZSBQcm9qZWN0IEV4cGxvcmVyLjwvc3Bhbj48L2xpPgo8bGk+PHNwYW4+RG91YmxlLWNsaWNrIHRoZSBXZWIgcHJvamVjdCdzIDxiPldlYiBEZXBsb3ltZW50IERlc2NyaXB0b3I8L2I+IGZpbGUKaW4gdGhlIFByb2plY3QgRXhwbG9yZXIuIFRoZSBXZWIgZGVwbG95bWVudCBkZXNjcmlwdG9yIGVkaXRvciBvcGVucy48L3NwYW4+PC9saT4KPGxpPjxzcGFuPkNsaWNrIHRoZSA8Yj5PdmVydmlldzwvYj4gdGFiIHRvIG9wZW4gdGhlIDxiPk92ZXJ2aWV3PC9iPiBwYWdlLjwvc3Bhbj48L2xpPgo8bGk+PHNwYW4+WW91IGNhbiBlZGl0IHNldHRpbmdzIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgb2YgdGhlIDxiPk92ZXJ2aWV3PC9iPiBwYWdlOgooWW91IG1heSBhbHNvIHdhbnQgdG8gb3BlbiB0aGlzIHBhZ2UgdG8gdmlldyB0aGUgc2V0dGluZ3MuKSA8L3NwYW4+PHVsPjxsaT5HZW5lcmFsIEluZm9ybWF0aW9uIC0gbGV0cyB5b3UgdmlldyBhbmQgZWRpdCBnZW5lcmFsIGluZm9ybWF0aW9uLAppbmNsdWRpbmcgdGhlIGRpc3BsYXkgbmFtZSwgZGVzY3JpcHRpb24gKG5vdCBkaXNwbGF5ZWQgdG8gZW5kIHVzZXJzKSwgYW5kCmNsaWVudCBzZXNzaW9uIHRpbWUgb3V0IChpbiBtaW51dGVzKS48L2xpPgo8bGk+U2VydmxldHMgYW5kIEpTUHMgLSBsZXRzIHlvdSB2aWV3IHRoZSBzZXJ2bGV0cyBhbmQgSlNQcyB1c2VkIGluIHRoZQphcHBsaWNhdGlvbi48L2xpPgo8bGk+RmlsdGVycyAtIGxldHMgeW91IHZpZXcgZmlsdGVycyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi48L2xpPgo8bGk+UGFnZXMgLSBsZXRzIHlvdSB2aWV3IHdlbGNvbWUgcGFnZXMgdXNlZCBpbiB0aGUgYXBwbGljYXRpb24uPC9saT4KPGxpPk1pbWUgdHlwZSAtIGxldHMgeW91IHZpZXcgZmlsZSBleHRlbnNpb25zIHRoYXQgYXJlIG1hcHBlZCB0byBtaW1lCnR5cGVzLjwvbGk+CjxsaT5TZWN1cml0eSAtIGxldHMgeW91IHZpZXcgdGhlIHNlY3VyaXR5IHJvbGVzIGFuZCB0aGVpciBjb25zdHJhaW50cwpkZWZpbmVkIGZvciB0aGUgV2ViIGFwcGxpY2F0aW9uLjwvbGk+CjxsaT5JY29ucyAtIGxldHMgeW91IHZpZXcsIGNoYW5nZSwgb3IgYWRkIGljb25zIHJlcHJlc2VudGluZyB0aGUgV2ViIGFwcGxpY2F0aW9uLjwvbGk+CjxsaT5Vc2FnZSAtIGxpc3QgdGhlIGVudGVycHJpc2UgYXBwbGljYXRpb25zIHRoYXQgYXJlIHVzaW5nIHRoaXMgV2ViIG1vZHVsZS48L2xpPgo8bGk+V2ViIExpYnJhcnkgcHJvamVjdHMgLSBsZXRzIHlvdSB2aWV3LCBhZGQsIG9yIHJlbW92ZSByZWZlcmVuY2VzIHRvCkpBUiBmaWxlcyBtYXBwZWQgdG8gSmF2YZkgcHJvamVjdHMuPC9saT4KPGxpPkxpc3RlbmVycyAtIGxldHMgeW91IHZpZXcgbGlzdGVuZXJzIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uLjwvbGk+CjxsaT5SZWZlcmVuY2VzIC0gbGV0cyB5b3UgdmlldyByZXNvdXJjZXMgdGhhdCB0aGUgV2ViIGFwcGxpY2F0aW9uIHJlZmVyZW5jZXMuIDwvbGk+CjxsaT5FbnZpcm9ubWVudCBWYXJpYWJsZXMgLSBsZXRzIHlvdSB2aWV3IGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFyZQpyZWxldmFudCB0byB0aGUgV2ViIGFwcGxpY2F0aW9uLjwvbGk+CjxsaT5Db250ZXh0IFBhcmFtZXRlcnMgLSBsZXRzIHlvdSB2aWV3IHRoZSBjb250ZXh0IGluaXRpYWxpemF0aW9uIHBhcmFtZXRlcnMKdGhhdCBhcHBseSB0byBhbGwgdGhlIHNlcnZsZXRzIGluIHRoZSBXZWIgYXBwbGljYXRpb24uPC9saT4KPC91bD4KPC9saT4KPC9vbD4KPC9kaXY+CjxkaXY+PHA+PGIgY2xhc3M9InJlbHRhc2tzaGQiPlJlbGF0ZWQgdGFza3M8L2I+PGJyIC8+CjxhIGhyZWY9InR3ZWR0d2J4Lmh0bWwiIHRpdGxlPSIiPkNvbmZpZ3VyaW5nIFdlYiBhcHBsaWNhdGlvbnMgdXNpbmcgdGhlIFdlYiBkZXBsb3ltZW50IGRlc2NyaXB0b3IgZWRpdG9yPC9hPjxiciAvPgo8L3A+CjwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4=