Y29tbWVudF9jaGFyICUKZXNjYXBlX2NoYXIgIC8KJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQolCiUgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSAgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZQolIGNvbnRyaWJ1dG9yICBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgIHRoZSBOT1RJQ0UgIGZpbGUgZGlzdHJpYnV0ZWQKJSB3aXRoICB0aGlzICB3b3JrICBmb3IgIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gIHJlZ2FyZGluZyAgY29weXJpZ2h0CiUgb3duZXJzaGlwLiAgIFRoZSBBU0YgIGxpY2Vuc2VzIHRoaXMgIGZpbGUgdG8gIHlvdSB1bmRlciAgdGhlIEFwYWNoZQolIExpY2Vuc2UsIFZlcnNpb24gIDIuMCAodGhlICBMaWNlbnNlKTsgeW91IG1heSAgbm90IHVzZSAgdGhpcyBmaWxlICAKJSBleGNlcHQgaW4gIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gICBZb3UgbWF5IG9idGFpbiAgYSBjb3B5IG9mCiUgdGhlIExpY2Vuc2UgYXQKJQolIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAolCiUgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQolIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSAgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAgIkFTIElTIiBCQVNJUywKJSBXSVRIT1VUICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgIE9GIEFOWSAgS0lORCwgZWl0aGVyICBleHByZXNzIG9yCiUgaW1wbGllZC4gICBTZWUgIHRoZSBMaWNlbnNlICBmb3IgIHRoZSAgc3BlY2lmaWMgbGFuZ3VhZ2UgIGdvdmVybmluZwolIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KJQolIENvcHlyaWdodCAxOTk5LTIwMDcgUm9ndWUgV2F2ZSBTb2Z0d2FyZSwgSW5jLgolCiUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUKJQolIFN3ZWRpc2ggbGFuZ3VhZ2UgbG9jYWxlIGZvciBTd2VkZW4KJSBTb3VyY2U6IFJBUAolIEFkZHJlc3M6IFNhbmt0IEpvLy9yZ2VucyBBbGxlIDgKJSAgICBESy0xNjE1IEtvLy9iZW5oYXZuIFYsIERhbm1hcmsKJSBDb250YWN0OiBLZWxkIFNpbW9uc2VuCiUgRW1haWw6IEtlbGQuU2ltb25zZW5AZGt1dWcuZGsKJSBUZWw6ICs0NSAtIDMxMjI2NTQzCiUgRmF4OiArNDUgLSAzMzI1NjU0MwolIExhbmd1YWdlOiBzdgolIFRlcnJpdG9yeTogU0UKJSBSZXZpc2lvbjogNC40CiUgRGF0ZTogMTk5Ny0wMy0xOAolIEFwcGxpY2F0aW9uOiBnZW5lcmFsCiUgVXNlcnM6IGdlbmVyYWwKJSBDaGFyc2V0OiBJU08tODg1OS0xCiUgRGlzdHJpYnV0aW9uIGFuZCB1c2UgaXMgZnJlZSwgYWxzbwolIGZvciBjb21tZXJjaWFsIHB1cnBvc2VzLgoKJSBUaGlzIGlzIGEgNCBzdGVwIHZlcnNpb24uCiUgVGhlIFN3ZWRpc2ggVGVjaG5pY2FsIFN0YW5kYXJkCiUgVE4zNDoxIHJlcXVpcmVzIDcgc3RlcHMsIG9mIHdoaWNoIHRoZQolIHN0ZXAgMyBoYW5kbGluZyBudW1lcmljcyBjYW5ub3QgYmUKJSBkZWFsdCB3aXRoIGNvcnJlY3RseSB3aXRoIGN1cnJlbnQKJSBQT1NJWCBzcGVjaWZpY2F0aW9ucy4KCkxDX0lERU5USUZJQ0FUSU9OCnRpdGxlICAgICAgIlN3ZWRpc2ggbG9jYWxlIGZvciBTd2VkZW4iCnNvdXJjZSAgICAgIlJBUCIKYWRkcmVzcyAgICAiU2Fua3QgSjxVMDBGOD5yZ2VucyBBbGxlIDgsIERLLTE2MTUgSzxVMDBGOD5iZW5oYXZuIFYsIERhbm1hcmsiCmNvbnRhY3QgICAgIiIKZW1haWwgICAgICAiYnVnLWdsaWJjQGdudS5vcmciCnRlbCAgICAgICAgIiIKZmF4ICAgICAgICAiIgpsYW5ndWFnZSAgICJTd2VkaXNoIgp0ZXJyaXRvcnkgICJTd2VkZW4iCnJldmlzaW9uICAgIjEuMCIKZGF0ZSAgICAgICAiMjAwMC0wNi0yOSIKJQpjYXRlZ29yeSAgInN2X1NFOjIwMDAiO0xDX0lERU5USUZJQ0FUSU9OCmNhdGVnb3J5ICAic3ZfU0U6MjAwMCI7TENfQ1RZUEUKY2F0ZWdvcnkgICJzdl9TRToyMDAwIjtMQ19DT0xMQVRFCmNhdGVnb3J5ICAic3ZfU0U6MjAwMCI7TENfVElNRQpjYXRlZ29yeSAgInN2X1NFOjIwMDAiO0xDX05VTUVSSUMKY2F0ZWdvcnkgICJzdl9TRToyMDAwIjtMQ19NT05FVEFSWQpjYXRlZ29yeSAgInN2X1NFOjIwMDAiO0xDX01FU1NBR0VTCmNhdGVnb3J5ICAic3ZfU0U6MjAwMCI7TENfUEFQRVIKY2F0ZWdvcnkgICJzdl9TRToyMDAwIjtMQ19OQU1FCmNhdGVnb3J5ICAic3ZfU0U6MjAwMCI7TENfQUREUkVTUwpjYXRlZ29yeSAgInN2X1NFOjIwMDAiO0xDX1RFTEVQSE9ORQoKRU5EIExDX0lERU5USUZJQ0FUSU9OCgpMQ19DT0xMQVRFCmNvcHkgImlzbzE0NjUxX3QxIgoKY29sbGF0aW5nLXN5bWJvbCA8YXJpbmc+CmNvbGxhdGluZy1zeW1ib2wgPGFlPgpjb2xsYXRpbmctc3ltYm9sIDxvdW1sYXV0Pgpjb2xsYXRpbmctc3ltYm9sIDxvc2xhc2g+CgolIOYgaXMgc29ydGVkIGFmdGVyIOQgYW5kIOUgZXRjLgpyZW9yZGVyLWFmdGVyIDxSRVU+CjxMSUc+CgpyZW9yZGVyLWFmdGVyIDx6Pgo8YXJpbmc+CjxhZT4KPG91bWxhdXQ+Cjxvc2xhc2g+CgolIFRoZSBsZXR0ZXIgdyBpcyBub3JtYWxseSBub3QgcHJlc2VudCBpbiB0aGUgU3dlZGlzaCBhbHBoYWJldC4gSXQKJSBleGlzdHMgaW4gc29tZSBuYW1lcyBpbiBTd2VkaXNoIGFuZCBmb3JlaWduIHdvcmRzLCBidXQgaXMgYWNjb3VudGVkCiUgZm9yIGFzIGEgdmFyaWFudCBvZiAndicuICBXb3JkcyBhbmQgbmFtZXMgd2l0aCAndycgYXJlIGluIFN3ZWRpc2gKJSBvcmRlcmVkIGFscGhhYmV0aWNhbGx5IGFtb25nIHRoZSB3b3JkcyBhbmQgbmFtZXMgd2l0aCAndicuIElmIHR3bwolIHdvcmRzIG9yIG5hbWVzIGFyZSBvbmx5IHRvIGJlIGRpc3Rpbmd1aXNoZWQgYnkgJ3YnIG9yICUgJ3cnLCAndicgaXMKJSBwbGFjZWQgYmVmb3JlICd3Jy4KcmVvcmRlci1hZnRlciA8VTAwNTY+CjxVMDA1Nz4gPHY+OzxCQVM+OzxDQVA+Ozx3PiAlIFcKcmVvcmRlci1hZnRlciA8VTAwNzY+CjxVMDA3Nz4gPHY+OzxCQVM+OzxNSU4+Ozx3PiAlIHcKCnJlb3JkZXItYWZ0ZXIgPFUwMEUzPgo8VTAwRTQ+IDxhZT47PFJFVT47PE1JTj47SUdOT1JFICUg5Ao8VTAwRTU+IDxhcmluZz47PFJORT47PE1JTj47SUdOT1JFICUg5Qo8VTAwRTY+IDxhZT47PExJRz47PE1JTj47SUdOT1JFICUg5gpyZW9yZGVyLWFmdGVyIDxVMDBGNT4KPFUwMEY2PiA8b3VtbGF1dD47PFJFVT47PE1JTj47SUdOT1JFICUg9go8VTAwRjg+IDxvc2xhc2g+OzxPQkw+OzxNSU4+O0lHTk9SRSAlIPgKCnJlb3JkZXItYWZ0ZXIgPFUwMEMzPgo8VTAwQzQ+IDxhZT47PFJFVT47PENBUD47SUdOT1JFICUgxAo8VTAwQzU+IDxhcmluZz47PFJORT47PENBUD47SUdOT1JFICUgxQo8VTAwQzY+IDxhZT47PExJRz47PENBUD47SUdOT1JFICUgxgpyZW9yZGVyLWFmdGVyIDxVMDBENT4KPFUwMEQ2PiA8b3VtbGF1dD47PFJFVT47PENBUD47SUdOT1JFICUg1go8VTAwRDg+IDxvc2xhc2g+OzxPQkw+OzxDQVA+O0lHTk9SRSAlINgKCiUg/C/cIGlzIHRyZWF0ZWQgbGlrZSB5L1kgYnV0IGlzIHNvcnRlZCBhZnRlciB0aGUgbGF0dGVyCnJlb3JkZXItYWZ0ZXIgPFUwMEZCPgo8VTAwRkM+IDx5Pjs8UkVVPjs8TUlOPjtJR05PUkUgJSD8CnJlb3JkZXItYWZ0ZXIgPFUwMERCPgo8VTAwREM+IDx5Pjs8UkVVPjs8Q0FQPjtJR05PUkUgJSDcCnJlb3JkZXItZW5kCgpFTkQgTENfQ09MTEFURQoKTENfQ1RZUEUKY29weSAiaTE4biIKRU5EIExDX0NUWVBFCgpMQ19NT05FVEFSWQppbnRfY3Vycl9zeW1ib2wgICAgICAgICAiPFUwMDUzPjxVMDA0NT48VTAwNEI+PFUwMDIwPiIKY3VycmVuY3lfc3ltYm9sICAgICAgICAgIjxVMDA2Qj48VTAwNzI+Igptb25fZGVjaW1hbF9wb2ludCAgICAgICAiPFUwMDJDPiIKbW9uX3Rob3VzYW5kc19zZXAgICAgICAgIjxVMDAyMD4iCm1vbl9ncm91cGluZyAgICAgICAgICAgIDM7Mwpwb3NpdGl2ZV9zaWduICAgICAgICAgICAiIgpuZWdhdGl2ZV9zaWduICAgICAgICAgICAiPFUwMDJEPiIKaW50X2ZyYWNfZGlnaXRzICAgICAgICAgMgpmcmFjX2RpZ2l0cyAgICAgICAgICAgICAyCnBfY3NfcHJlY2VkZXMgICAgICAgICAgIDAKcF9zZXBfYnlfc3BhY2UgICAgICAgICAgMQpuX2NzX3ByZWNlZGVzICAgICAgICAgICAwCm5fc2VwX2J5X3NwYWNlICAgICAgICAgIDEKcF9zaWduX3Bvc24gICAgICAgICAgICAgMQpuX3NpZ25fcG9zbiAgICAgICAgICAgICAxCkVORCBMQ19NT05FVEFSWQoKTENfTlVNRVJJQwpkZWNpbWFsX3BvaW50ICAgICAgICAgICAiPFUwMDJDPiIKdGhvdXNhbmRzX3NlcCAgICAgICAgICAgIjxVMDAyMD4iCmdyb3VwaW5nICAgICAgICAgICAgICAgIDM7MwpFTkQgTENfTlVNRVJJQwoKTENfVElNRQphYmRheSAgICAgIjxVMDA3Mz48VTAwRjY+PFUwMDZFPiI7IjxVMDA2RD48VTAwRTU+PFUwMDZFPiI7LwogICAgICAgICAgIjxVMDA3ND48VTAwNjk+PFUwMDczPiI7IjxVMDA2Rj48VTAwNkU+PFUwMDczPiI7LwogICAgICAgICAgIjxVMDA3ND48VTAwNkY+PFUwMDcyPiI7IjxVMDA2Nj48VTAwNzI+PFUwMDY1PiI7LwogICAgICAgICAgIjxVMDA2Qz48VTAwRjY+PFUwMDcyPiIKZGF5ICAgICAgICI8VTAwNzM+PFUwMEY2PjxVMDA2RT48VTAwNjQ+PFUwMDYxPjxVMDA2Nz4iOy8KICAgICAgICAgICI8VTAwNkQ+PFUwMEU1PjxVMDA2RT48VTAwNjQ+PFUwMDYxPjxVMDA2Nz4iOy8KICAgICAgICAgICI8VTAwNzQ+PFUwMDY5PjxVMDA3Mz48VTAwNjQ+PFUwMDYxPjxVMDA2Nz4iOy8KICAgICAgICAgICI8VTAwNkY+PFUwMDZFPjxVMDA3Mz48VTAwNjQ+PFUwMDYxPjxVMDA2Nz4iOy8KICAgICAgICAgICI8VTAwNzQ+PFUwMDZGPjxVMDA3Mj48VTAwNzM+PFUwMDY0PjxVMDA2MT48VTAwNjc+IjsvCiAgICAgICAgICAiPFUwMDY2PjxVMDA3Mj48VTAwNjU+PFUwMDY0PjxVMDA2MT48VTAwNjc+IjsvCiAgICAgICAgICAiPFUwMDZDPjxVMDBGNj48VTAwNzI+PFUwMDY0PjxVMDA2MT48VTAwNjc+IgphYm1vbiAgICAgIjxVMDA2QT48VTAwNjE+PFUwMDZFPiI7IjxVMDA2Nj48VTAwNjU+PFUwMDYyPiI7LwogICAgICAgICAgIjxVMDA2RD48VTAwNjE+PFUwMDcyPiI7IjxVMDA2MT48VTAwNzA+PFUwMDcyPiI7LwogICAgICAgICAgIjxVMDA2RD48VTAwNjE+PFUwMDZBPiI7IjxVMDA2QT48VTAwNzU+PFUwMDZFPiI7LwogICAgICAgICAgIjxVMDA2QT48VTAwNzU+PFUwMDZDPiI7IjxVMDA2MT48VTAwNzU+PFUwMDY3PiI7LwogICAgICAgICAgIjxVMDA3Mz48VTAwNjU+PFUwMDcwPiI7IjxVMDA2Rj48VTAwNkI+PFUwMDc0PiI7LwogICAgICAgICAgIjxVMDA2RT48VTAwNkY+PFUwMDc2PiI7IjxVMDA2ND48VTAwNjU+PFUwMDYzPiIKbW9uICAgICAgICI8VTAwNkE+PFUwMDYxPjxVMDA2RT48VTAwNzU+PFUwMDYxPjxVMDA3Mj48VTAwNjk+IjsvCiAgICAgICAgICAiPFUwMDY2PjxVMDA2NT48VTAwNjI+PFUwMDcyPjxVMDA3NT48VTAwNjE+PFUwMDcyPjxVMDA2OT4iOy8KICAgICAgICAgICI8VTAwNkQ+PFUwMDYxPjxVMDA3Mj48VTAwNzM+IjsvCiAgICAgICAgICAiPFUwMDYxPjxVMDA3MD48VTAwNzI+PFUwMDY5PjxVMDA2Qz4iOy8KICAgICAgICAgICI8VTAwNkQ+PFUwMDYxPjxVMDA2QT4iOy8KICAgICAgICAgICI8VTAwNkE+PFUwMDc1PjxVMDA2RT48VTAwNjk+IjsvCiAgICAgICAgICAiPFUwMDZBPjxVMDA3NT48VTAwNkM+PFUwMDY5PiI7LwogICAgICAgICAgIjxVMDA2MT48VTAwNzU+PFUwMDY3PjxVMDA3NT48VTAwNzM+PFUwMDc0PjxVMDA2OT4iOy8KICAgICAgICAgICI8VTAwNzM+PFUwMDY1PjxVMDA3MD48VTAwNzQ+PFUwMDY1PjxVMDA2RD48VTAwNjI+PFUwMDY1PjxVMDA3Mj4iOy8KICAgICAgICAgICI8VTAwNkY+PFUwMDZCPjxVMDA3ND48VTAwNkY+PFUwMDYyPjxVMDA2NT48VTAwNzI+IjsvCiAgICAgICAgICAiPFUwMDZFPjxVMDA2Rj48VTAwNzY+PFUwMDY1PjxVMDA2RD48VTAwNjI+PFUwMDY1PjxVMDA3Mj4iOy8KICAgICAgICAgICI8VTAwNjQ+PFUwMDY1PjxVMDA2Mz48VTAwNjU+PFUwMDZEPjxVMDA2Mj48VTAwNjU+PFUwMDcyPiIKZF90X2ZtdCAgICI8VTAwMjU+PFUwMDYxPjxVMDAyMD48VTAwMjU+PFUwMDY1PjxVMDAyMD48VTAwMjU+PFUwMDYyPjxVMDAyMD48VTAwMjU+PFUwMDU5PjxVMDAyMD48VTAwMjU+PFUwMDQ4PjxVMDAyRT48VTAwMjU+PFUwMDREPjxVMDAyRT48VTAwMjU+PFUwMDUzPiIKZF9mbXQgICAgICI8VTAwMjU+PFUwMDU5PjxVMDAyRD48VTAwMjU+PFUwMDZEPjxVMDAyRD48VTAwMjU+PFUwMDY0PiIKdF9mbXQgICAgICI8VTAwMjU+PFUwMDQ4PjxVMDAyRT48VTAwMjU+PFUwMDREPjxVMDAyRT48VTAwMjU+PFUwMDUzPiIKYW1fcG0gICAgICIiOyIiCnRfZm10X2FtcG0gICIiCmRhdGVfZm10ICAgICAgICI8VTAwMjU+PFUwMDYxPjxVMDAyMD48VTAwMjU+PFUwMDYyPjxVMDAyMD48VTAwMjU+PFUwMDY1Pi8KPFUwMDIwPjxVMDAyNT48VTAwNDg+PFUwMDNBPjxVMDAyNT48VTAwNEQ+PFUwMDNBPjxVMDAyNT48VTAwNTM+PFUwMDIwPi8KPFUwMDI1PjxVMDA1QT48VTAwMjA+PFUwMDI1PjxVMDA1OT4iCkVORCBMQ19USU1FCgpMQ19NRVNTQUdFUwp5ZXNleHByICI8VTAwNUU+PFUwMDVCPjxVMDA2QT48VTAwNEE+PFUwMDc5PjxVMDA1OT48VTAwNUQ+PFUwMDJFPjxVMDAyQT4iCm5vZXhwciAgIjxVMDA1RT48VTAwNUI+PFUwMDZFPjxVMDA0RT48VTAwNUQ+PFUwMDJFPjxVMDAyQT4iCkVORCBMQ19NRVNTQUdFUwoKTENfUEFQRVIKaGVpZ2h0ICAgMjk3CndpZHRoICAgIDIxMApFTkQgTENfUEFQRVIKCkxDX1RFTEVQSE9ORQp0ZWxfaW50X2ZtdCAgICAiPFUwMDJCPjxVMDAyNT48VTAwNjM+PFUwMDJEPjxVMDAyNT48VTAwNjE+PFUwMDJEPjxVMDAyNT4vCjxVMDA2Qz4iCnRlbF9kb21fZm10ICAgICI8VTAwMzA+PFUwMDI1PjxVMDA2MT48VTAwMkQ+PFUwMDI1PjxVMDA2Qz4iCmludF9zZWxlY3QgICAgICI8VTAwMzA+PFUwMDMwPiIKaW50X3ByZWZpeCAgICAgIjxVMDAzND48VTAwMzY+IgpFTkQgTENfVEVMRVBIT05FCgpMQ19NRUFTVVJFTUVOVAptZWFzdXJlbWVudCAgICAxCkVORCBMQ19NRUFTVVJFTUVOVAoKTENfTkFNRQpuYW1lX2ZtdCAgICAiPFUwMDI1PjxVMDA2ND48VTAwMjU+PFUwMDc0PjxVMDAyNT48VTAwNjc+PFUwMDI1PjxVMDA3ND4vCjxVMDAyNT48VTAwNkQ+PFUwMDI1PjxVMDA3ND48VTAwMjU+PFUwMDY2PiIKRU5EIExDX05BTUUKCkxDX0FERFJFU1MKcG9zdGFsX2ZtdCAgICAiPFUwMDI1PjxVMDA2Nj48VTAwMjU+PFUwMDRFPjxVMDAyNT48VTAwNjE+PFUwMDI1PjxVMDA0RT4vCjxVMDAyNT48VTAwNjQ+PFUwMDI1PjxVMDA0RT48VTAwMjU+PFUwMDYyPjxVMDAyNT48VTAwNEU+PFUwMDI1PjxVMDA3Mz4vCjxVMDAyMD48VTAwMjU+PFUwMDY4PjxVMDAyMD48VTAwMjU+PFUwMDY1PjxVMDAyMD48VTAwMjU+PFUwMDcyPjxVMDAyNT4vCjxVMDA0RT48VTAwMjU+PFUwMDI1PjxVMDA3QT48VTAwMjA+PFUwMDI1PjxVMDA1ND48VTAwMjU+Lwo8VTAwNEU+PFUwMDI1PjxVMDA2Mz48VTAwMjU+PFUwMDRFPiIKRU5EIExDX0FERFJFU1MK