From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 88199 invoked by alias); 15 Aug 2015 17:02:13 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 88185 invoked by uid 89); 15 Aug 2015 17:02:13 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.3 required=5.0 tests=AWL,BAYES_99,BAYES_999,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=no version=3.3.2 X-HELO: na01-by2-obe.outbound.protection.outlook.com Received: from mail-by2on0081.outbound.protection.outlook.com (HELO na01-by2-obe.outbound.protection.outlook.com) (207.46.100.81) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA256 encrypted) ESMTPS; Sat, 15 Aug 2015 17:02:08 +0000 Received: from BL2FFO11FD007.protection.gbl (10.173.160.33) by BL2FFO11HUB007.protection.gbl (10.173.160.227) with Microsoft SMTP Server (TLS) id 15.1.243.9; Sat, 15 Aug 2015 17:02:03 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.83) smtp.mailfrom=xilinx.com; gcc.gnu.org; dkim=none (message not signed) header.d=none; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.83 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.83; helo=xsj-pvapsmtpgw01; Received: from xsj-pvapsmtpgw01 (149.199.60.83) by BL2FFO11FD007.mail.protection.outlook.com (10.173.161.3) with Microsoft SMTP Server (TLS) id 15.1.243.9 via Frontend Transport; Sat, 15 Aug 2015 17:02:02 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1ZQeqH-0004Ll-RP; Sat, 15 Aug 2015 10:02:01 -0700 Received: from [127.0.0.1] (helo=xsj-smtp-dlp2.xlnx.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1ZQeqH-00033J-C3; Sat, 15 Aug 2015 10:02:01 -0700 Received: from xsj-pvapsmtp01 (mailhub.xilinx.com [149.199.38.66]) by xsj-smtp-dlp2.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id t7FH1akY000536; Sat, 15 Aug 2015 10:01:36 -0700 Received: from [172.22.159.25] (helo=XAP-PVEXCAS01.xlnx.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1ZQeqF-00032L-Ks; Sat, 15 Aug 2015 10:02:00 -0700 Received: from XAP-PVEXMBX02.xlnx.xilinx.com ([fe80::6c95:7dae:8014:5ca1]) by XAP-PVEXCAS01.xlnx.xilinx.com ([::1]) with mapi id 14.03.0195.001; Sun, 16 Aug 2015 01:01:58 +0800 From: Ajit Kumar Agarwal To: Richard Biener , Jeff Law CC: GCC Patches , Vinod Kathail , Shail Aditya Gupta , Vidhumouli Hunsigida , Nagaraju Mekala Subject: RE: [Patch,tree-optimization]: Add new path Splitting pass on tree ssa representation Date: Sat, 15 Aug 2015 23:13:00 -0000 Message-ID: <37378DC5BCD0EE48BA4B082E0B55DFAA4295ADCB@XAP-PVEXMBX02.xlnx.xilinx.com> References: <37378DC5BCD0EE48BA4B082E0B55DFAA41F3F56C@XAP-PVEXMBX02.xlnx.xilinx.com> <37378DC5BCD0EE48BA4B082E0B55DFAA41F41150@XAP-PVEXMBX02.xlnx.xilinx.com> <37378DC5BCD0EE48BA4B082E0B55DFAA41F42541@XAP-PVEXMBX02.xlnx.xilinx.com> <37378DC5BCD0EE48BA4B082E0B55DFAA4295155D@XAP-PVEXMBX02.xlnx.xilinx.com> In-Reply-To: <37378DC5BCD0EE48BA4B082E0B55DFAA4295155D@XAP-PVEXMBX02.xlnx.xilinx.com> Content-Type: multipart/mixed; boundary="_002_37378DC5BCD0EE48BA4B082E0B55DFAA4295ADCBXAPPVEXMBX02xln_" MIME-Version: 1.0 X-RCIS-Action: ALLOW X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11FD007;1:f5gxSdgKIDwaUlVRAeIg3vbcnuv5ehHUX0J/QUWdM84bvHe7TE2aynPhaLlXzgHb51gLStjSg+XCJAd+xnL5YRXRz1+g4riVKo70yrt4SPgcGNHgkS/Hnkn9BzTvQ7yOXp4Ncbh78FTUJcqqS2TD2NHp0GoC2MnPYiL2iqGSQz1KI+TM/NwAMcJ/HCDTqfbIMEoA2ad4LuE2rS9Y3OSuEFYEftLXx0BgNS3j3hwAO1Bv+a6ZPoz0di6h02YcvsQh1INvNONlLNFTxzBzVMDrSRJN4j0woi2ZFnOa94LW9Lq2ILqFTbsxAg114edHlvEawknjey7MsQ/ZpKiuzpePDmsPjraiLEYQFcg4UKkTdBpvCV827SCr6eoYbI/ctf8L X-Forefront-Antispam-Report: CIP:149.199.60.83;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(438002)(3050300001)(199003)(54094003)(189002)(24454002)(377454003)(164054003)(13464003)(377424004)(54534003)(84326002)(81156007)(5260100001)(86362001)(512874002)(2920100001)(5890100001)(62966003)(107886002)(106466001)(189998001)(2940100001)(4001540100001)(5001830100001)(15975445007)(6806004)(5001860100001)(33656002)(92566002)(2950100001)(5001770100001)(5003600100002)(5001960100002)(77156002)(64706001)(63266004)(2900100001)(50986999)(2910100002)(102836002)(2656002)(99936001)(4610100001)(46102003)(54356999)(568964001)(5001920100001)(76176999)(93886004)(55846006)(19580405001)(19580395003)(575784001)(87936001)(5250100002)(2004002)(142933001)(107986001)(4001430100001);DIR:OUT;SFP:1101;SCL:1;SRVR:BL2FFO11HUB007;H:xsj-pvapsmtpgw01;FPR:;SPF:Pass;PTR:unknown-60-83.xilinx.com;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11HUB007;2:L63GR8rLcjBl6wT9yzN5wOTkhxS3OjbB3WUAyK+uMJmolBe7rZjkZ6eU9gGCj+cqW6iTfKW1elqc1ZOdaigm6CXKEdHrgWqOtYB5KEQWStGgWRpCIg8++pLrhRTubLkicCnECgcec99X+eUR78gg9a4VB0kcmLJkrdQBX7bnWGk=;3:JiL/pZJ1xFw+UUQjBQobc81Sh2NLEfVJ4VMIi8db4k0CWRVGcVjSDcnVoAYijCgphCLnjlScwuBrwCQlP6ufC3E5VNJMqLHCuDHL4sJtqV6UuqgTG4SdvXVVBKEnx9mY258QEQpUAcRFOxvnGnOZL9TX5hDEK0kY8ijSjrOhbzKwZPsxgpGpeZVGCmYjpB/UkQC0o0PAv+wKW56JtJoVJDabMoI4Egfo/itxuJLd4Rc=;25:i1L0xusPco5R6FLZAQLhgjxznJ9kRHnfVlDITTI/q0j/3l2UMJaYQjXJqVql0A7lmnXSktcK9E9EVozNWPkYkemMlyQ4b5GxU/HbenVGZ7PBJnXFfqDxujQO38RVAqR0zyiERJKtk/d2aDkxMno7K4ihkGceKXrsQgojuApzVuH0Sv+WyhPE4xV603OPbZpbc+4wOoWqk8qhop0dSNMEYXrT9QTz7pd/iNbvE/5NzfmeMZghHUuVDZJHcbXWT+Qw+YN24QCDoBv2DEImqkcxwQ== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BL2FFO11HUB007; X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11HUB007;20:Ku3uhANePqdgLWJhP7uYJNl6q5WrkKXPHxJW6CgGG8arKCLg4eZutzXwYVJhcihxVlJQCNEv4rqGeOgt1fZDw5In5m110k0i6NQ3cPFCcby9SeIJ9Q8sFctGCCcq9F/wc92FDAC65+Ft9pzGQclz0PnBsL33uM6/tCCX5QLq+Cywy9dVjTj/xWMuCqPswyJnqM1TMdxDBgUWZPTJkJTGqQYYDTLNHmQX47vr0J5CCgy/PS0mzvDlcM/xiP+eq46Utsz9nVsSCiWCtYaUR9Qqqd4AhMvHXvj/WBEdurSNwgV8yO3t2ZEMkGe1HmIhsGnbNnapKFlC8GbCMi5DkqhF3z3Y6nvfjl/kE6iYEKF3v8on3unqh5whRloRu6sVRRo6olF7HLJlVIQmcmX0RXXEmBQM8P0QKzGk2J3G0JBF/LgR4cy+iPYmYZzuVEiv8/gm8hlf/2v7hg2QH1/prQH7ZODerjG/VRcYS3TURb/eZYwyLK3N7fZIwNxp4zC9hvJX;4:yC4s5E1Q9c6jAGUrqIOtNEiM8sSR7P8GQSuhWOw49VDLcqdGOrQCIi7hAn/0XW0e7iE+3r8DKzO2qcTLrV9eqIMptUaO6ocMi36whncCxbXfhudM+hbl7YVhiEU5ehe1Mg6+4Yfeo8d229Dn6H1UFXLh4Pr5OPsTrX7qVJYmDrN+CeDL/w+nFw7FiNxxJo850s79787BcWSGyyC1BLFnYxYOyNFl7v+YF4ZvdYd1DAR4TEFRnZDh7OaJm7Bpjw0MkRw3ItWKLaDHmCxTgPEWHUQ2pJe2S0IO3yR4RR1ESWM1vX5YLsWkBn+FqJ+RIZGzRG3C/Jg6QUv2MXUXrMqdANzJOduz6vte2AuD7URapcEqt5t7zGvNmcDWWrApmJYE X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(8121501043)(8121501016)(8121501027)(5005006)(3002001);SRVR:BL2FFO11HUB007;BCL:0;PCL:0;RULEID:;SRVR:BL2FFO11HUB007; X-Forefront-PRVS: 06691A4183 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BL2FFO11HUB007;23:rBsGMnqTAaNoV+DxatbDW7DeTFSTOu5yqQlJx9/i?= =?us-ascii?Q?b1eHCQgkornuFPNGFMs/3GCcVKtiR27OtFaBzmOWAsLmkbk86HOyGB4sXIz9?= =?us-ascii?Q?W2RFzaerQCjPot38bQhfsInJp9rt+064K9chI5pEO17k8b4Kziv5qAbsbHsv?= =?us-ascii?Q?mcrmsAuMSr3qMP7Tx2o0aX/zDdFLqVY6KXdWDzs7kvxOnxJf1X0V1X08mFvV?= =?us-ascii?Q?2mC9GSwhPKZz+IEZXeL4E8A+Cs0QldBVhWu+9WX21o+mdP/gL34XPrJIKBFt?= =?us-ascii?Q?Ev0GoIrgJkroX8U6GVTHJUfWU3GFNJrRQbNC28nXOwr7k6cruDxImWTm5wbe?= =?us-ascii?Q?H/UnKZiEnf2IqCCQfCs+IOWuGEFwLRFxtoTd4sGubz72CAUwPWYMHvJ341to?= =?us-ascii?Q?Wb/minNk5xxUt2iPvfuAqODVde+EpVtm5+2S+4dQhcv5ZxMeEUgSI1GMVyvj?= =?us-ascii?Q?tE2O4mtOJGO38c26iIjmJrwTmpchikmAT39XhKXXEhEjpOJg0a/wKCOoMk0P?= =?us-ascii?Q?FhWNR0+B9eGPJSWtRWL6mYIk/y506pcrTY07f56YDQMuMPzbXBZ5rlnyGiM4?= =?us-ascii?Q?EQgB3MydGcdpw+jtjVjsfc+job/avLx6i7jUKG4l1pewd0PXFa3+KtMtF/KT?= =?us-ascii?Q?B0YJYiWeU+BMaSFgQqmyds8aNHa48GOGU+r0l4Rhywqx2U6II6PLY/gP7SJt?= =?us-ascii?Q?VyLt9IZrNRgCe87DJp9GRd9Ul38Ki+Es1QcfIIhD/oHgJqtX2W/IZc/l3LMp?= =?us-ascii?Q?NIfXniILrZ2Q3M+KWvUL40IOCGec2i8dxgLQcAT0MYHL596zIyIb8wph1qUH?= =?us-ascii?Q?yyl5GWmNo8Cxx9lDyazGTLOG7ZAcEGVGHgh+cPE72PwRF4fzFyCBxVNl4yG0?= =?us-ascii?Q?BkrTj8IWnU3r5tN10Vm7ADkkLETGoyKUBSMH9v9DAk1R8ZzxJXQuWRxuZTWg?= =?us-ascii?Q?b04yvgKogpGk4dKtnQU2vejIciMUkNXLYj04Eo8SifZ4/hOFbA+k0s8n7Evm?= =?us-ascii?Q?bo6f1F//D0MJzDP4zxoagxiC6fICNTOLgBDltimeYlxxd4/mcAwUB3GDOqs7?= =?us-ascii?Q?Ycdq3SSFQ2ON2DsmO54vd2MmUNmDQlTQhBDYM6oa72VdbxDML3PY7/Skqf5k?= =?us-ascii?Q?N8J+Luam3SGLr1R1eDPK1vHAhvoIZ1MEj4Zf0pM3onnYyXjtCfr0/z7/PcNA?= =?us-ascii?Q?ZgqwbU9wv9jGWMbf71DEWZ78I2DzUPrxiN6qooqBwHLK0xBEV5xhi7AXuH65?= =?us-ascii?Q?KARg/Qf7vjtmfurTOiRdEowL7qGlMqN1LXfHSMEoM/5sLVhooHErnl1x/a2k?= =?us-ascii?Q?FqKlWz6WVcmNtTYyVAthNyiq1Q798HL4kpJcmtqdpNrtph3p7GG1baS97iMK?= =?us-ascii?Q?3WA1BkPuxygT4+SummUzWfkdhO2C2LriWw2AYtqI9K7LS6ecqQBLMYwTkvX9?= =?us-ascii?Q?cKKvnuOOGWb0Jt39iMXtKThY1qmmWphkfs86u8NO09ornmahGsgREP0UKErR?= =?us-ascii?Q?6zdWX31/drVjkkFJ1C2m4Bsl75QU64S/tDiLosgNh0ZckewAecPc/8fREZgr?= =?us-ascii?Q?h8RJQgFVde2/NWWTZiGhM0KpQQQeBtn3y59+nbVuq9B94Hg/q3iKZW5EKjg1?= =?us-ascii?Q?jxqxyaQOVV+CrysaaaInacN9yMmIyt1H5nw4669Dm+o=3D?= X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11HUB007;5:cCoVbVtshvK8Zq7wLfNdCI0E0ywodUAsRJPjR88M8pgPpxFCDylN5Q/1PXYLSytgto/qQkmF1JTb1ONWo5mIyGYxQBxq3shFv9qaMHgI+EZBDaiRiJCdBzTdCsh/rgbmAe0k0ezhUlFvqQlM0yjnxQ==;24:AGnJWSOLvmn6HsLJqmp+6BA/g64iv41D0sVSNGoH2gLQopVQ365Tv54Fp/83gjgr3Z2FGn1+ArJFOq1lIKOFQuZE/zlFk1EcNdqlkGBJiTo= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Aug 2015 17:02:02.7360 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c;Ip=[149.199.60.83];Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2FFO11HUB007 X-SW-Source: 2015-08/txt/msg00856.txt.bz2 --_002_37378DC5BCD0EE48BA4B082E0B55DFAA4295ADCBXAPPVEXMBX02xln_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Content-length: 51899 QWxsOg0KDQpQbGVhc2UgZmluZCB0aGUgdXBkYXRlZCBwYXRjaCB3aXRoIHN1 Z2dlc3Rpb24gYW5kIGZlZWRiYWNrIGluY29ycG9yYXRlZC4NCg0KVGhhbmtz IEplZmYgYW5kIFJpY2hhcmQgZm9yIHRoZSByZXZpZXcgY29tbWVudHMuDQoN CkZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgZG9uZSBiYXNlZCBvbiB0aGUgZmVl ZGJhY2sgb24gUkZDIGNvbW1lbnRzLiBhbmQgdGhlIHJldmlldyBmb3IgdGhl IHByZXZpb3VzIHBhdGNoLg0KDQoxLiBCb3RoIHRyYWNlciBhbmQgcGF0aCBz cGxpdHRpbmcgcGFzcyBhcmUgc2VwYXJhdGUgcGFzc2VzIHNvICB0aGF0IHR3 byBpbnN0YW5jZXMgb2YgdGhlIHBhc3Mgd2lsbCBydW4gaW4gdGhlIGVuZCwg b25lIGRvaW5nIHBhdGggc3BsaXR0aW5nDQogYW5kIG9uZSBkb2luZyAgdHJh Y2luZywgYXQgZGlmZmVyZW50IHRpbWVzIGluIHRoZSBvcHRpbWl6YXRpb24g cGlwZWxpbmUuDQoyLiBUcmFuc2Zvcm0gY29kZSBpcyBzaGFyZWQgZm9yIHRy YWNlciBhbmQgcGF0aCBzcGxpdHRpbmcgcGFzcy4gVGhlIGNvbW1vbiBjb2Rl IGluIGV4dHJhY3RlZCBpbiBhIGdpdmVuIGZ1bmN0aW9uIHRyYW5zZm9ybV9k dXBsaWNhdGUNCkFuZCBwbGFjZSB0aGUgZnVuY3Rpb24gaW4gdHJhY2VyLmMg YW5kIHRoZSBwYXRoIHNwbGl0dGluZyBwYXNzIHVzZXMgdGhlIHRyYW5zZm9y bSBjb2RlLg0KMy4gQW5hbHlzaXMgZm9yIHRoZSBiYXNpYyBibG9jayBwb3B1 bGF0aW9uIGFuZCB0cmF2ZXJzaW5nIHRoZSBiYXNpYyBibG9jayB1c2luZyB0 aGUgRmlib25hY2NpIGhlYXAgaXMgY29tbW9ubHkgdXNlZC4gVGhpcyBjYW5u b3QgYmUNCkZhY3RvcmVkIG91dCBpbnRvIG5ldyBmdW5jdGlvbiBhcyB0aGUg dHJhY2VyIHBhc3MgZG9lcyBtb3JlIGFuYWx5c2lzIGJhc2VkIG9uIHRoZSBw cm9maWxlIGFuZCB0aGUgZGlmZmVyZW50IGhldXJpc3RpY3MgaXMgdXNlZCBp biB0cmFjZXINCkFuZCBwYXRoIHNwbGl0dGluZyBwYXNzLg0KNC4gVGhlIGlu Y2x1ZGUgaGVhZGVycyBpcyBtaW5pbWFsIGFuZCBwcmVzZW5jZSBvZiB3aGF0 IGlzIHJlcXVpcmVkIGZvciB0aGUgcGF0aCBzcGxpdHRpbmcgcGFzcy4NCjUu IFRoZSBlYXJsaWVyIHBhdGNoIGRvZXMgdGhlIFNTQSB1cGRhdGluZyAgd2l0 aCByZXBsYWNlIGZ1bmN0aW9uIHRvIHByZXNlcnZlIHRoZSBTU0EgcmVwcmVz ZW50YXRpb24gcmVxdWlyZWQgdG8gbW92ZSB0aGUgbG9vcCBsYXRjaCBub2Rl IHNhbWUgYXMgam9pbg0KQmxvY2sgdG8gaXRzIHByZWRlY2Vzc29ycyBhbmQg dGhlIGxvb3AgbGF0Y2ggbm9kZSBpcyBqdXN0IGZvcndhcmQgYmxvY2suIFN1 Y2ggcmVwbGFjZSBmdW5jdGlvbiBhcmUgbm90IHJlcXVpcmVkIGFzIHN1Z2dl c3RlZCBieSB0aGUgSmVmZi4gU3VjaCByZXBsYWNlDQpGdW5jdGlvbiBnb2Vz IGF3YXkgd2l0aCB0aGlzIHBhdGNoIGFuZCB0aGUgdHJhbnNmb3JtZWQgY29k ZSBpcyBmYWN0b3JlZCBpbnRvIGEgZ2l2ZW4gZnVuY3Rpb24gd2hpY2ggaXMg c2hhcmVkIGJldHdlZW4gdHJhY2VyIGFuZCBwYXRoIHNwbGl0dGluZyBwYXNz LiAgIA0KDQpCb290c3RyYXBwaW5nIHdpdGggaTM4NiBhbmQgTWljcm9ibGF6 ZSB0YXJnZXQgd29ya3MgZmluZS4gTm8gcmVncmVzc2lvbiBpcyBzZWVuIGlu IERlamEgR05VIHRlc3RzIGZvciBNaWNyb2JsYXplLiBUaGVyZQ0KYXJlIGxl c3NlciBmYWlsdXJlcy4gTWliZW5jaC9FRU1CQyBiZW5jaG1hcmtzIHdlcmUg cnVuIGZvciBNaWNyb2JsYXplIHRhcmdldCBhbmQgdGhlIGdhaW4gb2YNCjku MyUgaXMgc2VlbiBpbiByZ2JjbXlfbGl0ZSB0aGUgRUVNQkMgYmVuY2htYXJr cy4NCg0KU1BFQyAyMDAwIGJlbmNobWFya3Mgd2VyZSBydW4gd2l0aCBpMzg2 IHRhcmdldCBhbmQgdGhlIGZvbGxvd2luZyBwZXJmb3JtYW5jZSBudW1iZXIg aXMgYWNoaWV2ZWQuDQoNCklOVCBiZW5jaG1hcmtzIHdpdGggcGF0aCBzcGxp dHRpbmcocmF0aW8pIFZzIElOVCBiZW5jaG1hcmtzIHdpdGhvdXQgcGF0aCBz cGxpdHRpbmcocmF0aW8pID0gMzY2MS4yMjUwOTEgdnMgMzYyMS41MjA1NzIN CkZQIGJlbmNobWFya3Mgd2l0aCBwYXRoIHNwbGl0dGluZyhyYXRpbykgVnMg RlAgYmVuY2htYXJrcyB3aXRob3V0IHBhdGggc3BsaXR0aW5nKHJhdGlvICkg ID0gIDQzMzkuOTg2MjA5IHZzIDQzMzkuNzc1NTI3DQoNCk1heGltdW0gZ2Fp bnMgYWNoaWV2ZWQgd2l0aCAyNTIuZW9uIElOVCBiZW5jaG1hcmtzID0gOS4w MyUuDQoNCkNoYW5nZUxvZzoNCjIwMTUtMDgtMTUgIEFqaXQgQWdhcndhbCAg PGFqaXRrdW1AeGlsaW54LmNvbT4NCg0KICAgICAgICAqIGdjYy9NYWtlZmls ZS5pbjogQWRkIHRoZSBidWlsZCBvZiB0aGUgbmV3IGZpbGUNCiAgICAgICAg dHJlZS1zc2EtcGF0aC1zcGxpdC5jDQogICAgICAgICogZ2NjL2NvbW1vbi5v cHQgKGZ0cmVlLXBhdGgtc3BsaXQpOiBBZGQgdGhlIG5ldyBmbGFnLg0KICAg ICAgICAqIGdjYy9vcHRzLmMgKE9QVF9mdHJlZV9wYXRoX3NwbGl0KSA6IEFk ZCBhbiBlbnRyeSBmb3INCiAgICAgICAgUGF0aCBzcGxpdHRpbmcgcGFzcyB3 aXRoIG9wdGltaXphdGlvbiBmbGFnIGdyZWF0ZXIgYW5kDQogICAgICAgIGVx dWFsIHRvIE8yLg0KICAgICAgICAqIGdjYy9wYXNzZXMuZGVmIChwYXRoX3Nw bGl0KTogYWRkIG5ldyBwYXRoIHNwbGl0dGluZyBwYXNzLg0KICAgICAgICAq IGdjYy90aW1ldmFyLmRlZiAoVFZfVFJFRV9QQVRIX1NQTElUKTogTmV3Lg0K ICAgICAgICAqIGdjYy90cmVlLXBhc3MuaCAobWFrZV9wYXNzX3BhdGhfc3Bs aXQpOiBOZXcgZGVjbGFyYXRpb24uDQogICAgICAgKiBnY2MvdHJlZS1zc2Et cGF0aC1zcGxpdC5jOiBOZXcuDQogICAgICAgICogZ2NjL3RyYWNlci5jICh0 cmFuc2Zvcm1fZHVwbGljYXRlKTogTmV3Lg0KICAgICAgICAqIGdjYy90ZXN0 c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3BhdGgtc3BsaXQtMi5jOiBOZXcuDQog ICAgICAgICogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcGF0aC1zcGxpdC0xLmM6 IE5ldy4NCiAgICAgICAgKiBnY2MvZG9jL2ludm9rZS50ZXhpDQogICAgICAg IChmdHJlZS1wYXRoLXNwbGl0KTogRG9jdW1lbnQuDQogICAgICAgIChmZHVt cC10cmVlLXBhdGhfc3BsaXQpOiBEb2N1bWVudC4NCg0KU2lnbmVkLW9mZi1i eTpBaml0IEFnYXJ3YWwgYWppdGt1bUB4aWxpbnguY29tLg0KDQpUaGFua3Mg JiBSZWdhcmRzDQpBaml0DQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQpGcm9tOiBnY2MtcGF0Y2hlcy1vd25lckBnY2MuZ251Lm9yZyBbbWFpbHRv OmdjYy1wYXRjaGVzLW93bmVyQGdjYy5nbnUub3JnXSBPbiBCZWhhbGYgT2Yg QWppdCBLdW1hciBBZ2Fyd2FsDQpTZW50OiBXZWRuZXNkYXksIEp1bHkgMjks IDIwMTUgMTA6MTMgQU0NClRvOiBSaWNoYXJkIEJpZW5lcjsgSmVmZiBMYXcN CkNjOiBHQ0MgUGF0Y2hlczsgVmlub2QgS2F0aGFpbDsgU2hhaWwgQWRpdHlh IEd1cHRhOyBWaWRodW1vdWxpIEh1bnNpZ2lkYTsgTmFnYXJhanUgTWVrYWxh DQpTdWJqZWN0OiBSRTogW1BhdGNoLHRyZWUtb3B0aW1pemF0aW9uXTogQWRk IG5ldyBwYXRoIFNwbGl0dGluZyBwYXNzIG9uIHRyZWUgc3NhIHJlcHJlc2Vu dGF0aW9uDQoNCg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJv bTogUmljaGFyZCBCaWVuZXIgW21haWx0bzpyaWNoYXJkLmd1ZW50aGVyQGdt YWlsLmNvbV0NClNlbnQ6IFRodXJzZGF5LCBKdWx5IDE2LCAyMDE1IDQ6MzAg UE0NClRvOiBBaml0IEt1bWFyIEFnYXJ3YWwNCkNjOiBsYXdAcmVkaGF0LmNv bTsgR0NDIFBhdGNoZXM7IFZpbm9kIEthdGhhaWw7IFNoYWlsIEFkaXR5YSBH dXB0YTsgVmlkaHVtb3VsaSBIdW5zaWdpZGE7IE5hZ2FyYWp1IE1la2FsYQ0K U3ViamVjdDogUmU6IFtQYXRjaCx0cmVlLW9wdGltaXphdGlvbl06IEFkZCBu ZXcgcGF0aCBTcGxpdHRpbmcgcGFzcyBvbiB0cmVlIHNzYSByZXByZXNlbnRh dGlvbg0KDQpPbiBUdWUsIEp1bCA3LCAyMDE1IGF0IDM6MjIgUE0sIEFqaXQg S3VtYXIgQWdhcndhbCA8YWppdC5rdW1hci5hZ2Fyd2FsQHhpbGlueC5jb20+ IHdyb3RlOg0KPg0KPg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiBGcm9tOiBSaWNoYXJkIEJpZW5lciBbbWFpbHRvOnJpY2hhcmQuZ3VlbnRo ZXJAZ21haWwuY29tXQ0KPiBTZW50OiBUdWVzZGF5LCBKdWx5IDA3LCAyMDE1 IDI6MjEgUE0NCj4gVG86IEFqaXQgS3VtYXIgQWdhcndhbA0KPiBDYzogbGF3 QHJlZGhhdC5jb207IEdDQyBQYXRjaGVzOyBWaW5vZCBLYXRoYWlsOyBTaGFp bCBBZGl0eWEgR3VwdGE7IA0KPiBWaWRodW1vdWxpIEh1bnNpZ2lkYTsgTmFn YXJhanUgTWVrYWxhDQo+IFN1YmplY3Q6IFJlOiBbUGF0Y2gsdHJlZS1vcHRp bWl6YXRpb25dOiBBZGQgbmV3IHBhdGggU3BsaXR0aW5nIHBhc3Mgb24gDQo+ IHRyZWUgc3NhIHJlcHJlc2VudGF0aW9uDQo+DQo+IE9uIFNhdCwgSnVsIDQs IDIwMTUgYXQgMjozOSBQTSwgQWppdCBLdW1hciBBZ2Fyd2FsIDxhaml0Lmt1 bWFyLmFnYXJ3YWxAeGlsaW54LmNvbT4gd3JvdGU6DQo+Pg0KPj4NCj4+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+PiBGcm9tOiBSaWNoYXJkIEJp ZW5lciBbbWFpbHRvOnJpY2hhcmQuZ3VlbnRoZXJAZ21haWwuY29tXQ0KPj4g U2VudDogVHVlc2RheSwgSnVuZSAzMCwgMjAxNSA0OjQyIFBNDQo+PiBUbzog QWppdCBLdW1hciBBZ2Fyd2FsDQo+PiBDYzogbGF3QHJlZGhhdC5jb207IEdD QyBQYXRjaGVzOyBWaW5vZCBLYXRoYWlsOyBTaGFpbCBBZGl0eWEgR3VwdGE7 IA0KPj4gVmlkaHVtb3VsaSBIdW5zaWdpZGE7IE5hZ2FyYWp1IE1la2FsYQ0K Pj4gU3ViamVjdDogUmU6IFtQYXRjaCx0cmVlLW9wdGltaXphdGlvbl06IEFk ZCBuZXcgcGF0aCBTcGxpdHRpbmcgcGFzcyANCj4+IG9uIHRyZWUgc3NhIHJl cHJlc2VudGF0aW9uDQo+Pg0KPj4gT24gVHVlLCBKdW4gMzAsIDIwMTUgYXQg MTA6MTYgQU0sIEFqaXQgS3VtYXIgQWdhcndhbCA8YWppdC5rdW1hci5hZ2Fy d2FsQHhpbGlueC5jb20+IHdyb3RlOg0KPj4+IEFsbDoNCj4+Pg0KPj4+IFRo ZSBiZWxvdyBwYXRjaCBhZGRlZCBhIG5ldyBwYXRoIFNwbGl0dGluZyBvcHRp bWl6YXRpb24gcGFzcyBvbiBTU0EgDQo+Pj4gcmVwcmVzZW50YXRpb24uIFRo ZSBQYXRoIFNwbGl0dGluZyBvcHRpbWl6YXRpb24gUGFzcyBtb3ZlcyB0aGUg am9pbiANCj4+PiBibG9jayBvZiBpZi10aGVuLWVsc2Ugc2FtZSBhcyBsb29w IGxhdGNoIHRvIGl0cyBwcmVkZWNlc3NvcnMgYW5kIGdldCBtZXJnZWQgd2l0 aCB0aGUgcHJlZGVjZXNzb3JzIFByZXNlcnZpbmcgdGhlIFNTQSByZXByZXNl bnRhdGlvbi4NCj4+Pg0KPj4+IFRoZSBwYXRjaCBpcyB0ZXN0ZWQgZm9yIE1p Y3JvYmxhemUgYW5kIGkzODYgdGFyZ2V0LiBUaGUgDQo+Pj4gRUVNQkMvTWli ZW5jaCBiZW5jaG1hcmtzIGlzIHJ1biB3aXRoIHRoZSBNaWNyb2JsYXplIHRh cmdldCBBbmQgdGhlIA0KPj4+IHBlcmZvcm1hbmNlIGdhaW4gb2YgOS4xNSUg YW5kIHJnYmNteTAxX2xpdGUoRUVNQkMgYmVuY2htYXJrcykuIFRoZSBEZWph IEdOVSB0ZXN0cyBpcyBydW4gZm9yIE1pcmNyb2JsYXplIFRhcmdldCBhbmQg bm8gcmVncmVzc2lvbiBpcyBzZWVuIGZvciBNaWNyb2JsYXplIHRhcmdldCBh bmQgdGhlIG5ldyB0ZXN0Y2FzZSBhdHRhY2hlZCBhcmUgcGFzc2VkLg0KPj4+ DQo+Pj4gRm9yIGkzODYgYm9vdHN0cmFwcGluZyBnb2VzIHRocm91Z2ggZmlu ZSBhbmQgdGhlIFNwZWMgY3B1MjAwMCANCj4+PiBiZW5jaG1hcmtzIGlzIHJ1 biB3aXRoIHRoaXMgcGF0Y2guIEZvbGxvd2luZyBvYnNlcnZhdGlvbiB3ZXJl IHNlZW4gd2l0aCBzcGVjIGNwdTIwMDAgYmVuY2htYXJrcy4NCj4+Pg0KPj4+ IFJhdGlvIG9mIHBhdGggc3BsaXR0aW5nIGNoYW5nZSB2cyBSYXRpbyBvZiBu b3QgaGF2aW5nIHBhdGggc3BsaXR0aW5nIGNoYW5nZSBpcyAzNjUzLjM1MyB2 cyAzNjUyLjE0IGZvciBJTlQgYmVuY2htYXJrcy4NCj4+PiBSYXRpbyBvZiBw YXRoIHNwbGl0dGluZyBjaGFuZ2UgdnMgUmF0aW8gb2Ygbm90IGhhdmluZyBw YXRoIHNwbGl0dGluZyBjaGFuZ2UgaXMgIDQzNTMuODEyIHZzIDQzNDUuMzUx IGZvciBGUCBiZW5jaG1hcmtzLg0KPj4+DQo+Pj4gQmFzZWQgb24gY29tbWVu dHMgZnJvbSBSRkMgcGF0Y2ggZm9sbG93aW5nIGNoYW5nZXMgd2VyZSBkb25l Lg0KPj4+DQo+Pj4gMS4gQWRkZWQgYSBuZXcgcGFzcyBmb3IgcGF0aCBzcGxp dHRpbmcgY2hhbmdlcy4NCj4+PiAyLiBQbGFjZWQgdGhlIG5ldyBwYXRoICBT cGxpdHRpbmcgT3B0aW1pemF0aW9uIHBhc3MgYmVmb3JlIHRoZSBjb3B5IHBy b3BhZ2F0aW9uIHBhc3MuDQo+Pj4gMy4gVGhlIGpvaW4gYmxvY2sgc2FtZSBh cyB0aGUgTG9vcCBsYXRjaCBpcyB3aXJlZCBpbnRvIGl0cyANCj4+PiBwcmVk ZWNlc3NvcnMgc28gdGhhdCB0aGUgQ0ZHIENsZWFudXAgcGFzcyB3aWxsIG1l cmdlIHRoZSBibG9ja3MgV2lyZWQgdG9nZXRoZXIuDQo+Pj4gNC4gQ29weSBw cm9wYWdhdGlvbiByb3V0aW5lcyBhZGRlZCBmb3IgcGF0aCBzcGxpdHRpbmcg Y2hhbmdlcyBpcyBub3QgDQo+Pj4gbmVlZGVkIGFzIHN1Z2dlc3RlZCBieSBK ZWZmLiBUaGV5IGFyZSByZW1vdmVkIGluIHRoZSBwYXRjaCBhcyBUaGUgY29w eSBwcm9wYWdhdGlvbiBpbiB0aGUgY29waWVkIGpvaW4gYmxvY2tzIHdpbGwg YmUgZG9uZSBieSB0aGUgZXhpc3RpbmcgY29weSBwcm9wYWdhdGlvbiBwYXNz IGFuZCB0aGUgdXBkYXRlIHNzYSBwYXNzLg0KPj4+IDUuIE9ubHkgdGhlIHBy b3BhZ2F0aW9uIG9mIHBoaSByZXN1bHRzIG9mIHRoZSBqb2luIGJsb2NrIHdp dGggdGhlIA0KPj4+IHBoaSBhcmd1bWVudCBpcyBkb25lIHdoaWNoIHdpbGwg bm90IGJlIGRvbmUgYnkgdGhlIGV4aXN0aW5nIHVwZGF0ZV9zc2EgT3IgY29w eSBwcm9wYWdhdGlvbiBwYXNzIG9uIHRyZWUgc3NhIHJlcHJlc2VudGF0aW9u Lg0KPj4+IDYuIEFkZGVkIDIgdGVzdHMuDQo+Pj4gICAgIGEpIGNvbXBpbGF0 aW9uIGNoZWNrICB0ZXN0cy4NCj4+PiAgICBiKSBleGVjdXRpb24gdGVzdHMu DQo+Pj4gNy4gUmVmYWN0b3Jpbmcgb2YgdGhlIGNvZGUgZm9yIHRoZSBmZWFz aWJpbGl0eSBjaGVjayBhbmQgZmluZGluZyB0aGUgam9pbiBibG9jayBzYW1l IGFzIGxvb3AgbGF0Y2ggbm9kZS4NCj4+Pg0KPj4+ICAgICBbUGF0Y2gsdHJl ZS1vcHRpbWl6YXRpb25dOiBBZGQgbmV3IHBhdGggU3BsaXR0aW5nIHBhc3Mg b24gdHJlZSBzc2EgcmVwcmVzZW50YXRpb24uDQo+Pj4NCj4+PiAgICAgQWRk ZWQgYSBuZXcgcGFzcyBvbiBwYXRoIHNwbGl0dGluZyBvbiB0cmVlIFNTQSBy ZXByZXNlbnRhdGlvbi4gVGhlIHBhdGgNCj4+PiAgICAgc3BsaXR0aW5nIG9w dGltaXphdGlvbiBkb2VzIHRoZSBDRkcgdHJhbnNmb3JtYXRpb24gb2Ygam9p biBibG9jayBvZiB0aGUNCj4+PiAgICAgaWYtdGhlbi1lbHNlIHNhbWUgYXMg dGhlIGxvb3AgbGF0Y2ggbm9kZSBpcyBtb3ZlZCBhbmQgbWVyZ2VkIHdpdGgg dGhlDQo+Pj4gICAgIHByZWRlY2Vzc29yIGJsb2NrcyBhZnRlciBwcmVzZXJ2 aW5nIHRoZSBTU0EgcmVwcmVzZW50YXRpb24uDQo+Pj4NCj4+PiAgICAgQ2hh bmdlTG9nOg0KPj4+ICAgICAyMDE1LTA2LTMwICBBaml0IEFnYXJ3YWwgIDxh aml0a3VtQHhpbGlueC5jb20+DQo+Pj4NCj4+PiAgICAgICAgICogZ2NjL01h a2VmaWxlLmluOiBBZGQgdGhlIGJ1aWxkIG9mIHRoZSBuZXcgZmlsZQ0KPj4+ ICAgICAgICAgdHJlZS1zc2EtcGF0aC1zcGxpdC5jDQo+Pj4gICAgICAgICAq IGdjYy9jb21tb24ub3B0OiBBZGQgdGhlIG5ldyBmbGFnIGZ0cmVlLXBhdGgt c3BsaXQuDQo+Pj4gICAgICAgICAqIGdjYy9vcHRzLmM6IEFkZCBhbiBlbnRy eSBmb3IgUGF0aCBzcGxpdHRpbmcgcGFzcw0KPj4+ICAgICAgICAgd2l0aCBv cHRpbWl6YXRpb24gZmxhZyBncmVhdGVyIGFuZCBlcXVhbCB0byBPMi4NCj4+ PiAgICAgICAgICogZ2NjL3Bhc3Nlcy5kZWY6IEVuYWJsZSBhbmQgYWRkIG5l dyBwYXNzIHBhdGggc3BsaXR0aW5nLg0KPj4+ICAgICAgICAgKiBnY2MvdGlt ZXZhci5kZWY6IEFkZCB0aGUgbmV3IGVudHJ5IGZvciBUVl9UUkVFX1BBVEhf U1BMSVQuDQo+Pj4gICAgICAgICAqIGdjYy90cmVlLXBhc3MuaDogRXh0ZXJu IERlY2xhcmF0aW9uIG9mIG1ha2VfcGFzc19wYXRoX3NwbGl0Lg0KPj4+ICAg ICAgICAgKiBnY2MvdHJlZS1zc2EtcGF0aC1zcGxpdC5jOiBOZXcgZmlsZSBm b3IgcGF0aCBzcGxpdHRpbmcgcGFzcy4NCj4+PiAgICAgICAgICogZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcGF0aC1zcGxpdC0yLmM6IE5ldyB0 ZXN0Y2FzZS4NCj4+PiAgICAgICAgICogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv cGF0aC1zcGxpdC0xLmM6IE5ldyB0ZXN0Y2FzZS4NCj4+DQo+Pj4+SSdtIG5v dCAxMDAlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSB0cmFuc2Zvcm0gYnV0IHdo YXQgSSBzZWUgZnJvbSB0aGUgdGVzdGNhc2VzIGl0IHRhaWwtZHVwbGljYXRl cyBmcm9tIGEgY29uZGl0aW9uYWwgdXAgdG8gYSBsb29wIGxhdGNoIGJsb2Nr IChub3Qgc3VyZSBpZiBpdCA+PmluY2x1ZGVzIGl0IGFuZCB0aHVzIGVuZHMg dXAgY3JlYXRpbmcgYSBsb29wIG5lc3Qgb3Igbm90KS4NCj4+DQo+Pj4+QW4g b2JzZXJ2YXRpb24gSSBoYXZlIGlzIHRoYXQgdGhlIHBhc3Mgc2hvdWxkIGF0 IGxlYXN0IHNoYXJlIHRoZSB0cmFuc2Zvcm0gc3RhZ2UgdG8gc29tZSBleHRl bnQgd2l0aCB0aGUgZXhpc3RpbmcgdHJhY2VyIHBhc3MgKHRyYWNlci5jKSB3 aGljaCBlc3NlbnRpYWxseSBkb2VzID4+dGhlIHNhbWUgYnV0IG5vdCByZXN0 cmljdGVkIHRvIGxvb3BzIGluIGFueSB3YXkuDQo+Pg0KPj4gVGhlIGZvbGxv d2luZyBwaWVjZSBvZiBjb2RlIGZyb20gdHJhY2VyLmMgY2FuIGJlIHNoYXJl ZCB3aXRoIHRoZSBleGlzdGluZyBwYXRoIHNwbGl0dGluZyBwYXNzLg0KPj4N Cj4+IHsNCj4+ICAgICAgICAgICAgICBlID0gZmluZF9lZGdlIChiYiwgYmIy KTsNCj4+DQo+PiAgICAgICAgICAgICAgIGNvcHkgPSBkdXBsaWNhdGVfYmxv Y2sgKGJiMiwgZSwgYmIpOw0KPj4gICAgICAgICAgICAgICBmbHVzaF9wZW5k aW5nX3N0bXRzIChlKTsNCj4+DQo+PiAgICAgICAgICAgICAgIGFkZF9waGlf YXJnc19hZnRlcl9jb3B5ICgmY29weSwgMSwgTlVMTCk7IH0NCj4+DQo+PiBT aGFyaW5nIHRoZSBhYm92ZSBjb2RlIG9mIHRoZSB0cmFuc2Zvcm0gc3RhZ2Ug b2YgdHJhY2VyLmMgd2l0aCB0aGUgcGF0aCBzcGxpdHRpbmcgcGFzcyBoYXMg dGhlIGZvbGxvd2luZyBsaW1pdGF0aW9uLg0KPj4NCj4+IDEuIFRoZSBkdXBs aWNhdGVkIGxvb3AgbGF0Y2ggbm9kZSBpcyB3aXJlZCB0byBpdHMgcHJlZGVj ZXNzb3JzIGFuZCANCj4+IHRoZSBleGlzdGluZyBwaGkgbm9kZSBpbiB0aGUg bG9vcCBsYXRjaCBub2RlIHdpdGggdGhlIFBoaSBhcmd1bWVudHMgDQo+PiBm cm9tIGl0cyBjb3JyZXNwb25kaW5nIHByZWRlY2Vzc29ycyBpcyBtb3ZlZCB0 byB0aGUgZHVwbGljYXRlZCBsb29wIGxhdGNoIG5vZGUgdGhhdCBpcyB3aXJl ZCBpbnRvIGl0cyBwcmVkZWNlc3NvcnMuIER1ZSBUbyB0aGlzLCB0aGUgZHVw bGljYXRlZCBsb29wIGxhdGNoIG5vZGVzIHdpcmVkIGludG8gaXRzIHByZWRl Y2Vzc29ycyB3aWxsIG5vdCBiZSBtZXJnZWQgd2l0aCB0aGUgb3JpZ2luYWwg cHJlZGVjZXNzb3JzIGJ5IENGRyBjbGVhbnVwIHBoYXNlIC4NCj4+DQo+Pj4+ IFNvIEkgd29uZGVyIGlmIHlvdXIgcGFzcyBjb3VsZCBiZSBzaW1wbHkgYW5v dGhlciBoZXVyaXN0aWMgdG8gY29tcHV0ZSBwYXRocyB0byB0cmFjZSBpbiB0 aGUgZXhpc3RpbmcgdHJhY2VyIHBhc3MuDQo+Pg0KPj4gU29ycnksIEkgYW0g bm90IHZlcnkgY2xlYXIgd2hlbiB5b3Ugc2F5IHRoZSBhYm92ZS4gIEkgYW0g dHJ5aW5nIHRvIA0KPj4gZmlndXJlIG91dCB3aGV0aGVyIHlvdSBleHBlY3Qg dGhlIGV4aXN0aW5nIHBhc3Mgb2YgdHJhY2VyLmMgc2hvdWxkIGJlIG1vZGlm aWVkIE9yIHRoZSBwYXRoIHNwbGl0dGluZyBwYXNzIHNob3VsZCBjb2V4aXN0 Lg0KPg0KPj4+WWVzLCBJIHdhcyB3b25kZXJpbmcgd2hldGhlciB0cmFjZXIu YyBjb3VsZCBiZSBzaW1wbHkgbW9kaWZpZWQuICBCb3RoIHRyYW5zZm9ybXMg YXJlIGRvaW5nIHNvbWV0aGluZyB2ZXJ5IHNpbWlsYXIuDQo+Pj5ZZXMsIHlv dXIgcGFzcyB3b3VsZCBzaW1wbHkgY29tcHV0ZSBleHRyYSB0cmFjZXMgYmFz ZWQgb24gdGhlIG5ldyBoZXVyaXN0aWMuDQo+DQo+IEkgaGF2ZSBvYnNlcnZl ZCB0aGUgZm9sbG93aW5nIHdpdGggdGhlIHRyYWNlciBwYXNzIG9wdGltaXph dGlvbi4NCj4NCj4gVHJhY2VyIFBhc3M6DQo+DQo+IDEuIFRoZSB0cmFjZXIg cGFzcyBpcyBGRE8gb3B0aW1pemF0aW9ucyAgYW5kIGlzIG5vdCBlbmFibGVk IGJ5IGRlZmF1bHQgYXQgTzIuIFRoaXMgb3B0aW1pemF0aW9uIGlzIGVuYWJs ZWQgd2l0aCAtZnByb2ZpbGUtdXNlLg0KPiAyLiBUaGUgLWZ0cmFjZXIgZmxh ZyBpcyB1c2VkIHRvIGVuYWJsZSB0aGUgb3B0aW1pemF0aW9uIGV4cGxpY2l0 bHkgaW4gdGhlIGFic2VuY2Ugb2YgRkRPIG9wdGltaXphdGlvbi4NCj4gMy4g VGhlIHRyYWNlciBwYXNzIG9wdGltaXphdGlvbnMgaXMgcGxhY2VkIGF0IG9u bHkgcGxhY2UgYmVmb3JlIHRoZSANCj4gZG9taW5hdG9yX3Bhc3MuIE1vdmlu ZyB0aGUgdHJhY2VyIHBhc3MgYmVmb3JlIGNvcHlfcHJvcCBQYXNzIGdpdmVz IHRoZSBmb2xsb3dpbmcgZXJyb3IuICIgRXJyb3IgOiBwYXNzIHRyYWNlciBk b2VzIG5vdCBzdXBwb3J0IGNsb25pbmciLg0KDQpUaGlzIGlzIGFuIGVycm9y IGZyb20gdGhlIHBhc3MgbWFuYWdlciwgeW91IGFkZGVkIGEgc2Vjb25kIHRy YWNlciBwYXNzIGluc3RlYWQgb2YgbW92aW5nIGl0Lg0KDQo+IDQuIFRoZSBj b2RlIGZvciB0cmFjZXIgcGFzcyBpcyB0b3RhbGx5IGJhc2VkIG9uIHRoZSBG RE8gcmVsYXRlZCBpbmZvcm1hdGlvbiBhbmQgdGhlIGxvZ2ljIGlzIGJhc2Vk IG9uIHRoZSBwcm9maWxlIGRhdGEuDQoNCj4+WWVzLg0KDQo+IFBhdGggU3Bs aWl0aW5nIHBhc3M6DQo+DQo+IDEuIEhhdmluZyB0aGUgcGF0aCBzcGxpdHRp bmcgYXMgYSBzZXBhcmF0ZSBwYXNzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBh dCAgPj0gTzIuDQoNCj4+V2VsbCwgaXQncyBkZWJhdGFibGUgb24gd2hldGhl ciB5b3Ugd2FudCB0byBlbmFibGUgaXQgYXQgLU8yLiAgSSBzZXJpb3VzbHkg ZG91YnQgdGhhdC4NCg0KPiAyLiBObyBGRE8gaW5mb3JtYXRpb24gaXMgcmVx dWlyZWQgaW4gdGhlIHBhdGggc3BsaXR0aW5nIHBhc3MuDQo+IDMuIFRoZSBQ YXRoIFNwbGl0dGluZyBwYXNzIGNhbiBiZSBwbGFjZWQgYW55d2hlcmUgd2Vs bCBiZWZvcmUgYW55IA0KPiBvcHRpbWl6YXRpb25zIHBhc3MuIEkgaGF2ZSBw bGFjZWQgdGhlIHBhdGggc3BsaXR0aW5nIHBhc3MgYmVmb3JlIENvcHlfcHJv cCBhbmQgaXQgd29ya3MuIEFsc28gcGxhY2luZyBiZWZvcmUgdGhlIGRvbWlu YXRvciBhbHNvIHdvcmtzIGZpbmUuDQoNCj4+U2FtZSBmb3IgdHJhY2VyIC0g c2VlIGFib3ZlLg0KDQo+IDQuIFRoZSBjb2RlIGZvciBwYXRoIHNwbGl0dGlu ZyBhcyBhIHNlcGFyYXRlIHBhc3MgaXMgcHVyZWx5IGJhc2VkIG9uIG5vbiBw cm9maWxlIGFuZCBOb24gRkRPIGRhdGEuDQo+IDUuIFBsYWNpbmcgdGhlIHBh dGggc3BsaXR0aW5nIHBhc3MgYXMgYSBzZXBhcmF0ZSBwYXNzICBjYW4gYmUg cGxhY2VkIA0KPiBhbnl3aGVyZSBpbiB0aGUgb3B0aW1pemF0aW9ucy4gVGhl IG9wdGltaXphdGlvbnMgdGhhdCBnb3QgYmVuZWZpdHRlZCB3aXRoIHRoZSBQ YXRoIHNwbGl0dGluZyBwYXNzIGFyZSBQUkUgLCBDQ1AsIERDRSBhbmQgY2Fu IGJlIHBsYWNlZCB3ZWxsIGJlZm9yZSB0aGUgb3B0aW1pemF0aW9ucy4NCj4g Ni4gQXQgdGhlIGZpcnN0IHBoYXNlIG9mIHBhdGggc3BsaXR0aW5nIHBhc3Mg SSBhbSBkdXBsaWNhdGluZyB0aGUgbG9vcCANCj4gbGF0Y2ggbm9kZSB0byBp dHMgcHJlZGVjZXNzb3IgYW5kIG1ha2UgaXQgU1NBIGFuZCBsb29wIHN0cnVj dHVyZSANCj4gUHJlc2VydmVkLiBNYWtpbmcgdGhlIHBhdGggc3BsaXR0aW5n IGFzIHNlcGFyYXRlIHBhc3MgSSB3b3VsZCBsaWtlIHRvIGV4dGVuZCB0aGlz IHBhc3MgdG8gdGhlIG11bHRpcGxlIGxhdGNoIG5vZGUgd2l0aCBhIGZvcndh cmRpbmcgYmxvY2sgYW5kIHRoZSBtdWx0aXBsZSBsYXRjaCBub2RlcyBhcmUg ZWRnZWQgdG93YXJkcyB0aGUgZm9yd2FyZGVyIGJsb2NrIG1ha2luZyBpdCBv bmUgTG9vcCBsYXRjaCBlZGdlLg0KPg0KPiBXaXRoIHRoZSBhYm92ZSBvYnNl cnZhdGlvbiwgRG8geW91IHRoaW5rIHRoZSBleGlzdGluZyB0cmFjZXIgcGFz cyANCj4gc2hvdWxkIGJlIG1vZGlmaWVkIGFuZCB0aGUgcGF0aCBzcGxpdHRp bmcgcGFzcyBzaG91bGQgYmUgaW5jb3Jwb3JhdGVkIE9uIHRvcCBvZiB0aGUg ZXhpc3RpbmcgdHJhY2VyIHBhc3MuDQoNCj4+SSBzdGlsbCB0aGluayBib3Ro IHBhc3NlcyBkbyBhIGZ1bmRhbWVudGFsbHkgc2ltaWxhciB0cmFuc2Zvcm0g YW5kIHRodXMgc2hvdWxkIGJlIGFibGUgdG8gc2hhcmUgZGF0YSBzdHJ1Y3R1 cmVzICgncGF0aCcgcmVwcmVzZW50YXRpb24pLCBwYXJ0cyBvZiBhbmFseXNp cyAoY2FuID4+dGhpcyBwYXRoIGJlIGR1cGxpY2F0ZWQ/KSBhbmQgdGhlIHRy YW5zZm9ybSBzdGFnZS4gIFllcywgaXQgbWlnaHQgYmUgdGhhdCB0d28gaW5z dGFuY2VzIG9mIHRoZSBwYXNzIHdpbGwgcnVuIGluIHRoZSBlbmQsIG9uZSBk b2luZyBwYXRoIHNwbGl0dGluZyBhbmQgb25lIGRvaW5nID4+dHJhY2luZywg YXQgZGlmZmVyZW50IHRpbWVzIGluIHRoZSBvcHRpbWl6YXRpb24gcGlwZWxp bmUuDQoNCj4+V2UgaGF2ZSBhbm90aGVyIHNpbWlsYXIgdHJhbnNmb3JtIHdp dGggc2ltaWxhciBuZWVkcyBvbiBkYXRhIHN0cnVjdHVyZXMgYW5kIGFuYWx5 c2lzIC8gdHJhbnNmb3JtLiAgSnVtcCB0aHJlYWRpbmcuDQoNClRoYW5rcy4g SSBhbSBnb2luZyB0byBtYWtlIHRoZSBmb2xsb3dpbmcgY2hhbmdlIGFuZCBz ZW5kIGZvciByZXZpZXcuDQoNCiBCb3RoIHBhdGggc3BsaXR0aW5nIGFuZCB0 cmFjZXMgc2hvdWxkIGJlIGEgc2VwYXJhdGUgcGFzcyBhbmQgdGhlIGNvbW1v biBjb2RlIGJldHdlZW4gdGhlbSAgc2hvdWxkIEJlIGFic3RyYWN0ZWQgb3V0 IGFuZCB0aGUgcGF0aCBzcGxpdHRpbmcgcGFzcyBhbmQgdGhlIHRyYWNlciBw YXNzIHNob3VsZCB1c2UgdGhpcyBhYnN0cmFjdGVkIGNvbW1vbiBwaWVjZSBv ZiBjb2RlLg0KDQpJbiB0aGUgbmV4dCBwaGFzZSBvZiB0aGUgcGF0aCBzcGxp dHRpbmcgdHJhbnNmb3JtYXRpb24sIEkgd291bGQgbGlrZSB0byBtYWtlIHRo ZSBiYXNpYyBibG9jayB0aGF0IGRvbWluYXRlcyB0aGUgSUYgbm9kZSBhbmQg aGFzIHRoZSBzdWNjZXNzb3Igb2YgdGhlIGdpdmVuIGJsb2NrIGlzIElGLW5v ZGUgdGhlbiB0aGUgZ2l2ZW4gYmxvY2sgaXMgZHVwbGljYXRlZCB0byBUSEVO IGFuZCBFTFNFIHBhdGggc2ltaWxhciB0byBoZWFkIGR1cGxpY2F0aW9uIHRo dXMgbWFraW5nIHRoZSBzY29wZSBvZiBwYXRoIHNwbGl0dGluZyB0byBlbmFi bGUgbW9yZSBvZiBQUkUsRENFIGFuZCBDQ1Agb3B0aW1pemF0aW9ucy4NCg0K UGxlYXNlIGxldCBtZSBrbm93IGlmIHRoZXJlIGlzIGFueSBjb25jZXJuLg0K DQpUaGFua3MgJiBSZWdhcmRzDQpBaml0DQoNCj4+SXQgd291bGQgYmUgbmlj ZSB0byBoYXZlIGEgY29tbW9uIG1hY2hpbmVyeSBoZXJlLCBmb3IgZXhhbXBs ZSB0byBhc3Nlc3MgY29zdCBvZiBkb2luZyBhIHRyYWNlLg0KDQpSaWNoYXJk Lg0KDQo+IEtpbmRseSBnaXZlIHlvdXIgZmVlZGJhY2suDQo+DQo+IFRoYW5r cyAmIFJlZ2FyZHMNCj4gQWppdA0KPg0KPiBSaWNoYXJkLg0KPg0KPj4gVGhh bmtzICYgUmVnYXJkcw0KPj4gQWppdA0KPj4NCj4+IFRoYW5rcywNCj4+IFJp Y2hhcmQuDQo+Pg0KPj4+ICAgICBTaWduZWQtb2ZmLWJ5OkFqaXQgQWdhcndh bCBhaml0a3VtQHhpbGlueC5jb20uDQo+Pj4NCj4+PiBnY2MvTWFrZWZpbGUu aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQo+Pj4g IGdjYy9jb21tb24ub3B0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICA0ICsNCj4+PiAgZ2NjL29wdHMuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDEgKw0KPj4+ICBnY2MvcGFzc2VzLmRlZiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQo+Pj4gIGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL3BhdGgtc3BsaXQtMS5jICAgICAgICAgIHwg IDY1ICsrKysNCj4+PiAgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2Ev cGF0aC1zcGxpdC0yLmMgfCAgNjIgKysrKw0KPj4+ICBnY2MvdGltZXZhci5k ZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQo+Pj4g IGdjYy90cmVlLXBhc3MuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAxICsNCj4+PiAgZ2NjL3RyZWUtc3NhLXBhdGgtc3BsaXQuYyAgICAg ICAgICAgICAgICAgICAgfCA0NjIgKysrKysrKysrKysrKysrKysrKysrKysr KysrDQo+Pj4gIDkgZmlsZXMgY2hhbmdlZCwgNTk4IGluc2VydGlvbnMoKykN Cj4+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRn L3BhdGgtc3BsaXQtMS5jDQo+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9wYXRoLXNwbGl0LTIuYw0KPj4+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3RyZWUtc3NhLXBhdGgtc3BsaXQu Yw0KPj4+DQo+Pj4gZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2dj Yy9NYWtlZmlsZS5pbiBpbmRleA0KPj4+IDVmOTI2MWYuLjM1YWMzNjMNCj4+ PiAxMDA2NDQNCj4+PiAtLS0gYS9nY2MvTWFrZWZpbGUuaW4NCj4+PiArKysg Yi9nY2MvTWFrZWZpbGUuaW4NCj4+PiBAQCAtMTQ3Niw2ICsxNDc2LDcgQEAg T0JKUyA9IFwNCj4+PiAgICAgICAgIHRyZWUtdmVjdC1zbHAubyBcDQo+Pj4g ICAgICAgICB0cmVlLXZlY3Rvcml6ZXIubyBcDQo+Pj4gICAgICAgICB0cmVl LXZycC5vIFwNCj4+PiArICAgICAgICB0cmVlLXNzYS1wYXRoLXNwbGl0Lm8g XA0KPj4+ICAgICAgICAgdHJlZS5vIFwNCj4+PiAgICAgICAgIHZhbHRyYWNr Lm8gXA0KPj4+ICAgICAgICAgdmFsdWUtcHJvZi5vIFwNCj4+PiBkaWZmIC0t Z2l0IGEvZ2NjL2NvbW1vbi5vcHQgYi9nY2MvY29tbW9uLm9wdCBpbmRleCBl MTA0MjY5Li5jNjNiMTAwDQo+Pj4gMTAwNjQ0DQo+Pj4gLS0tIGEvZ2NjL2Nv bW1vbi5vcHQNCj4+PiArKysgYi9nY2MvY29tbW9uLm9wdA0KPj4+IEBAIC0y MzI4LDYgKzIzMjgsMTAgQEAgZnRyZWUtdnJwDQo+Pj4gIENvbW1vbiBSZXBv cnQgVmFyKGZsYWdfdHJlZV92cnApIEluaXQoMCkgT3B0aW1pemF0aW9uICBQ ZXJmb3JtIA0KPj4+IFZhbHVlIFJhbmdlIFByb3BhZ2F0aW9uIG9uIHRyZWVz DQo+Pj4NCj4+PiArZnRyZWUtcGF0aC1zcGxpdA0KPj4+ICtDb21tb24gUmVw b3J0IFZhcihmbGFnX3RyZWVfcGF0aF9zcGxpdCkgSW5pdCgwKSBPcHRpbWl6 YXRpb24gDQo+Pj4gK1BlcmZvcm0gUGF0aCBTcGxpdHRpbmcNCj4+PiArDQo+ Pj4gIGZ1bml0LWF0LWEtdGltZQ0KPj4+ICBDb21tb24gUmVwb3J0IFZhcihm bGFnX3VuaXRfYXRfYV90aW1lKSBJbml0KDEpIE9wdGltaXphdGlvbiBDb21w aWxlIA0KPj4+IHdob2xlIGNvbXBpbGF0aW9uIHVuaXQgYXQgYSB0aW1lIGRp ZmYgLS1naXQgYS9nY2Mvb3B0cy5jIA0KPj4+IGIvZ2NjL29wdHMuYyBpbmRl eCA4YTE2MTE2Li4zMTk0N2ZmIDEwMDY0NA0KPj4+IC0tLSBhL2djYy9vcHRz LmMNCj4+PiArKysgYi9nY2Mvb3B0cy5jDQo+Pj4gQEAgLTUwOCw2ICs1MDgs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRlZmF1bHRfb3B0aW9ucyBkZWZh dWx0X29wdGlvbnNfdGFibGVbXSA9DQo+Pj4gICAgICB7IE9QVF9MRVZFTFNf Ml9QTFVTLCBPUFRfZmlzb2xhdGVfZXJyb25lb3VzX3BhdGhzX2RlcmVmZXJl bmNlLCBOVUxMLCAxIH0sDQo+Pj4gICAgICB7IE9QVF9MRVZFTFNfMl9QTFVT LCBPUFRfZmlwYV9yYSwgTlVMTCwgMSB9LA0KPj4+ICAgICAgeyBPUFRfTEVW RUxTXzJfUExVUywgT1BUX2ZscmFfcmVtYXQsIE5VTEwsIDEgfSwNCj4+PiAr ICAgIHsgT1BUX0xFVkVMU18yX1BMVVMsIE9QVF9mdHJlZV9wYXRoX3NwbGl0 LCBOVUxMLCAxIH0sDQo+Pj4NCj4+PiAgICAgIC8qIC1PMyBvcHRpbWl6YXRp b25zLiAgKi8NCj4+PiAgICAgIHsgT1BUX0xFVkVMU18zX1BMVVMsIE9QVF9m dHJlZV9sb29wX2Rpc3RyaWJ1dGVfcGF0dGVybnMsIE5VTEwsDQo+Pj4gMSB9 LCBkaWZmIC0tZ2l0IGEvZ2NjL3Bhc3Nlcy5kZWYgYi9nY2MvcGFzc2VzLmRl ZiBpbmRleCANCj4+PiBjMGRkZWU0Li40MzYxOGViDQo+Pj4gMTAwNjQ0DQo+ Pj4gLS0tIGEvZ2NjL3Bhc3Nlcy5kZWYNCj4+PiArKysgYi9nY2MvcGFzc2Vz LmRlZg0KPj4+IEBAIC0xNTUsNiArMTU1LDcgQEAgYWxvbmcgd2l0aCBHQ0M7 IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUNCj4+PiAgICAg ICAgTkVYVF9QQVNTIChwYXNzX2NjcCk7DQo+Pj4gICAgICAgIC8qIEFmdGVy IENDUCB3ZSByZXdyaXRlIG5vIGxvbmdlciBhZGRyZXNzZWQgbG9jYWxzIGlu dG8gU1NBDQo+Pj4gICAgICAgICAgZm9ybSBpZiBwb3NzaWJsZS4gICovDQo+ Pj4gKyAgICAgIE5FWFRfUEFTUyAocGFzc19wYXRoX3NwbGl0KTsNCj4+PiAg ICAgICAgTkVYVF9QQVNTIChwYXNzX2NvcHlfcHJvcCk7DQo+Pj4gICAgICAg IE5FWFRfUEFTUyAocGFzc19jb21wbGV0ZV91bnJvbGxpKTsNCj4+PiAgICAg ICAgTkVYVF9QQVNTIChwYXNzX3BoaXByb3ApOw0KPj4+IGRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wYXRoLXNwbGl0LTEuYw0KPj4+IGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcGF0aC1zcGxpdC0xLmMNCj4+PiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPj4+IGluZGV4IDAwMDAwMDAuLjA3NWRjODcN Cj4+PiAtLS0gL2Rldi9udWxsDQo+Pj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvcGF0aC1zcGxpdC0xLmMNCj4+PiBAQCAtMCwwICsxLDY1IEBADQo+ Pj4gKy8qIHsgZGctZG8gcnVuIH0gKi8NCj4+PiArLyogeyBkZy1vcHRpb25z ICItTzIgIiB9ICovDQo+Pj4gKw0KPj4+ICsjaW5jbHVkZSA8c3RkaW8uaD4N Cj4+PiArI2luY2x1ZGUgPHN0ZGxpYi5oPg0KPj4+ICsNCj4+PiArI2RlZmlu ZSBSR0JNQVggMjU1DQo+Pj4gKw0KPj4+ICtpbnQNCj4+PiArdGVzdCgpDQo+ Pj4gK3sNCj4+PiArICBpbnQgaSwgUGVsczsNCj4+PiArICB1bnNpZ25lZCBj aGFyIHN1bSA9IDA7DQo+Pj4gKyAgdW5zaWduZWQgY2hhciB4ciwgeGcsIHhi Ow0KPj4+ICsgIHVuc2lnbmVkIGNoYXIgeGMsIHhtLCB4eSwgeGs7DQo+Pj4g KyAgdW5zaWduZWQgY2hhciAqUmVhZFB0ciwgKkVyaXRlUHRyOw0KPj4+ICsN Cj4+PiArICBSZWFkUHRyID0gKCB1bnNpZ25lZCBjaGFyICopIG1hbGxvYyAo c2l6ZW9mICh1bnNpZ25lZCBjaGFyKSAqIA0KPj4+ICsgMTAwKTsgRXJpdGVQ dHIgPSAoIHVuc2lnbmVkIGNoYXIgKikgbWFsbG9jIChzaXplb2YgKHVuc2ln bmVkIGNoYXIpDQo+Pj4gKyAqIDEwMCk7DQo+Pj4gKw0KPj4+ICsgIGZvciAo aSA9IDA7IGkgPCAxMDA7aSsrKQ0KPj4+ICsgICAgIHsNCj4+PiArICAgICAg IFJlYWRQdHJbaV0gPSAxMDAgLSBpOw0KPj4+ICsgICAgIH0NCj4+PiArDQo+ Pj4gKyAgZm9yIChpID0gMDsgaSA8IDEwMDsgaSsrKQ0KPj4+ICsgICAgIHsN Cj4+PiArICAgICAgIHhyID0gKlJlYWRQdHIrKzsNCj4+PiArICAgICAgIHhn ID0gKlJlYWRQdHIrKzsNCj4+PiArICAgICAgIHhiID0gKlJlYWRQdHIrKzsN Cj4+PiArDQo+Pj4gKyAgICAgICB4YyA9ICh1bnNpZ25lZCBjaGFyKSAoUkdC TUFYIC0geHIpOw0KPj4+ICsgICAgICAgeG0gPSAodW5zaWduZWQgY2hhcikg KFJHQk1BWCAtIHhnKTsNCj4+PiArICAgICAgIHh5ID0gKHVuc2lnbmVkIGNo YXIpIChSR0JNQVggLSB4Yik7DQo+Pj4gKw0KPj4+ICsgICAgICAgaWYgKHhj IDwgeG0pDQo+Pj4gKyAgICAgICAgIHsNCj4+PiArICAgICAgICAgICB4ayA9 ICh1bnNpZ25lZCBjaGFyKSAoeGMgPCB4eSA/IHhjIDogeHkpOw0KPj4+ICsg ICAgICAgICB9DQo+Pj4gKyAgICAgICBlbHNlDQo+Pj4gKyAgICAgICAgew0K Pj4+ICsgICAgICAgICAgeGsgPSAodW5zaWduZWQgY2hhcikgKHhtIDwgeHkg PyB4bSA6IHh5KTsNCj4+PiArICAgICAgICB9DQo+Pj4gKw0KPj4+ICsgICAg ICAgeGMgPSAodW5zaWduZWQgY2hhcikgKHhjIC0geGspOw0KPj4+ICsgICAg ICAgeG0gPSAodW5zaWduZWQgY2hhcikgKHhtIC0geGspOw0KPj4+ICsgICAg ICAgeHkgPSAodW5zaWduZWQgY2hhcikgKHh5IC0geGspOw0KPj4+ICsNCj4+ PiArICAgICAgICpFcml0ZVB0cisrID0geGM7DQo+Pj4gKyAgICAgICAqRXJp dGVQdHIrKyA9IHhtOw0KPj4+ICsgICAgICAgKkVyaXRlUHRyKysgPSB4eTsN Cj4+PiArICAgICAgICpFcml0ZVB0cisrID0geGs7DQo+Pj4gKyAgICAgICBz dW0gKz0gKkVyaXRlUHRyOw0KPj4+ICsgICAgfQ0KPj4+ICsgIHJldHVybiBz dW07DQo+Pj4gK30NCj4+PiArDQo+Pj4gK2ludA0KPj4+ICttYWluKCkNCj4+ PiArew0KPj4+ICsgIGlmICh0ZXN0KCkgIT0gMzMpDQo+Pj4gKyAgICBhYm9y dCgpOw0KPj4+ICsNCj4+PiArICByZXR1cm4gMDsNCj4+PiArfQ0KPj4+IGRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9wYXRo LXNwbGl0LTIuYw0KPj4+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1z c2EvcGF0aC1zcGxpdC0yLmMNCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K Pj4+IGluZGV4IDAwMDAwMDAuLjE5ZjI3N2MNCj4+PiAtLS0gL2Rldi9udWxs DQo+Pj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcGF0 aC1zcGxpdC0yLmMNCj4+PiBAQCAtMCwwICsxLDYyIEBADQo+Pj4gKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovDQo+Pj4gKy8qIHsgZGctb3B0aW9ucyAiLU8y IC1mZHVtcC10cmVlLXBhdGhfc3BsaXQiIH0gKi8NCj4+PiArDQo+Pj4gKyNp bmNsdWRlIDxzdGRpby5oPg0KPj4+ICsjaW5jbHVkZSA8c3RkbGliLmg+DQo+ Pj4gKw0KPj4+ICsjZGVmaW5lIFJHQk1BWCAyNTUNCj4+PiArDQo+Pj4gK2lu dA0KPj4+ICt0ZXN0KCkNCj4+PiArew0KPj4+ICsgIGludCBpLCBQZWxzOw0K Pj4+ICsgIHVuc2lnbmVkIGNoYXIgc3VtID0gMDsNCj4+PiArICB1bnNpZ25l ZCBjaGFyIHhyLCB4ZywgeGI7DQo+Pj4gKyAgdW5zaWduZWQgY2hhciB4Yywg eG0sIHh5LCB4azsNCj4+PiArICB1bnNpZ25lZCBjaGFyICpSZWFkUHRyLCAq RXJpdGVQdHI7DQo+Pj4gKw0KPj4+ICsgIFJlYWRQdHIgPSAodW5zaWduZWQg Y2hhciAqKSBtYWxsb2MgKHNpemVvZiAodW5zaWduZWQgY2hhcikgKiANCj4+ PiArIDEwMCk7IEVyaXRlUHRyID0gKCB1bnNpZ25lZCBjaGFyICopIG1hbGxv YyAoc2l6ZW9mICh1bnNpZ25lZCBjaGFyKQ0KPj4+ICsgKiAxMDApOw0KPj4+ ICsNCj4+PiArICBmb3IgKGkgPSAwOyBpIDwgMTAwO2krKykNCj4+PiArICAg ICB7DQo+Pj4gKyAgICAgICBSZWFkUHRyW2ldID0gMTAwIC0gaTsNCj4+PiAr ICAgICB9DQo+Pj4gKw0KPj4+ICsgIGZvciAoaSA9IDA7IGkgPCAxMDA7IGkr KykNCj4+PiArICAgICB7DQo+Pj4gKyAgICAgICB4ciA9ICpSZWFkUHRyKys7 DQo+Pj4gKyAgICAgICB4ZyA9ICpSZWFkUHRyKys7DQo+Pj4gKyAgICAgICB4 YiA9ICpSZWFkUHRyKys7DQo+Pj4gKw0KPj4+ICsgICAgICAgeGMgPSAoIHVu c2lnbmVkIGNoYXIpIChSR0JNQVggLSB4cik7DQo+Pj4gKyAgICAgICB4bSA9 ICggdW5zaWduZWQgY2hhcikgKFJHQk1BWCAtIHhnKTsNCj4+PiArICAgICAg IHh5ID0gKCB1bnNpZ25lZCBjaGFyKSAoUkdCTUFYIC0geGIpOw0KPj4+ICsN Cj4+PiArICAgICAgIGlmICh4YyA8IHhtKQ0KPj4+ICsgICAgICAgICB7DQo+ Pj4gKyAgICAgICAgICAgeGsgPSAoIHVuc2lnbmVkIGNoYXIpICh4YyA8IHh5 ID8geGMgOiB4eSk7DQo+Pj4gKyAgICAgICAgIH0NCj4+PiArICAgICAgIGVs c2UNCj4+PiArICAgICAgICAgew0KPj4+ICsgICAgICAgICAgIHhrID0gKCB1 bnNpZ25lZCBjaGFyKSAoeG0gPCB4eSA/IHhtIDogeHkpOw0KPj4+ICsgICAg ICAgICB9DQo+Pj4gKw0KPj4+ICsgICAgICAgeGMgPSAodW5zaWduZWQgY2hh cikgKHhjIC0geGspOw0KPj4+ICsgICAgICAgeG0gPSAodW5zaWduZWQgY2hh cikgKHhtIC0geGspOw0KPj4+ICsgICAgICAgeHkgPSAodW5zaWduZWQgY2hh cikgKHh5IC0geGspOw0KPj4+ICsNCj4+PiArICAgICAgICpFcml0ZVB0cisr ID0geGM7DQo+Pj4gKyAgICAgICAqRXJpdGVQdHIrKyA9IHhtOw0KPj4+ICsg ICAgICAgKkVyaXRlUHRyKysgPSB4eTsNCj4+PiArICAgICAgICpFcml0ZVB0 cisrID0geGs7DQo+Pj4gKyAgICAgICBzdW0gKz0gKkVyaXRlUHRyOw0KPj4+ ICsgICAgfQ0KPj4+ICsgIHJldHVybiBzdW07DQo+Pj4gK30NCj4+PiArDQo+ Pj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAieGNfWzAtOV1b MC05XSogLT4geyB4Y19bMC05XVswLTldKiB9Ig0KPj4+ICsicGF0aF9zcGxp dCJ9IH0gKi8NCj4+PiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICJ4bV9bMC05XVswLTldKiAtPiB7IHhtX1swLTldWzAtOV0qIH0iDQo+Pj4g KyJwYXRoX3NwbGl0In0gfSAqLw0KPj4+ICsvKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAgInh5X1swLTldWzAtOV0qIC0+IHsgeHlfWzAtOV1bMC05 XSogfSINCj4+PiArInBhdGhfc3BsaXQifSB9ICovDQo+Pj4gKy8qIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiTWVyZ2luZyBibG9ja3MiICJwYXRo X3NwbGl0In0gfSAqLw0KPj4+ICsvKiB7IGRnLWZpbmFsIHsgY2xlYW51cC10 cmVlLWR1bXAgInBhdGhfc3BsaXQiIH0gfSAqLw0KPj4+IGRpZmYgLS1naXQg YS9nY2MvdGltZXZhci5kZWYgYi9nY2MvdGltZXZhci5kZWYgaW5kZXggDQo+ Pj4gNzExYmJlZC4uNjIxN2E4ZQ0KPj4+IDEwMDY0NA0KPj4+IC0tLSBhL2dj Yy90aW1ldmFyLmRlZg0KPj4+ICsrKyBiL2djYy90aW1ldmFyLmRlZg0KPj4+ IEBAIC0yODgsMyArMjg4LDQgQEAgREVGVElNRVZBUiAoVFZfSklUX1JFUExB WSAgICAgICAgLCAicmVwbGF5IG9mIEpJVCBjbGllbnQgYWN0aXZpdHkiKQ0K Pj4+ICBERUZUSU1FVkFSIChUVl9BU1NFTUJMRSAgICAgICAgICAgICAsICJh c3NlbWJsZSBKSVQgY29kZSIpDQo+Pj4gIERFRlRJTUVWQVIgKFRWX0xJTksg ICAgICAgICAgICAgICAgICwgImxpbmsgSklUIGNvZGUiKQ0KPj4+ICBERUZU SU1FVkFSIChUVl9MT0FEICAgICAgICAgICAgICAgICAsICJsb2FkIEpJVCBy ZXN1bHQiKQ0KPj4+ICtERUZUSU1FVkFSIChUVl9UUkVFX1BBVEhfU1BMSVQg ICwgInRyZWUgcGF0aF9zcGxpdCIpDQo+Pj4gZGlmZiAtLWdpdCBhL2djYy90 cmVlLXBhc3MuaCBiL2djYy90cmVlLXBhc3MuaCBpbmRleCANCj4+PiAzOThh YjgzLi5lMDA2MzllDQo+Pj4gMTAwNjQ0DQo+Pj4gLS0tIGEvZ2NjL3RyZWUt cGFzcy5oDQo+Pj4gKysrIGIvZ2NjL3RyZWUtcGFzcy5oDQo+Pj4gQEAgLTM3 OSw2ICszNzksNyBAQCBleHRlcm4gZ2ltcGxlX29wdF9wYXNzICptYWtlX3Bh c3NfaXZfb3B0aW1pemUgDQo+Pj4gKGdjYzo6Y29udGV4dCAqY3R4dCk7ICBl eHRlcm4gZ2ltcGxlX29wdF9wYXNzIA0KPj4+ICptYWtlX3Bhc3NfdHJlZV9s b29wX2RvbmUgKGdjYzo6Y29udGV4dCAqY3R4dCk7ICBleHRlcm4gDQo+Pj4g Z2ltcGxlX29wdF9wYXNzICptYWtlX3Bhc3NfY2ggKGdjYzo6Y29udGV4dCAq Y3R4dCk7ICBleHRlcm4gDQo+Pj4gZ2ltcGxlX29wdF9wYXNzICptYWtlX3Bh c3NfY2NwIChnY2M6OmNvbnRleHQgKmN0eHQpOw0KPj4+ICtleHRlcm4gZ2lt cGxlX29wdF9wYXNzICptYWtlX3Bhc3NfcGF0aF9zcGxpdCAoZ2NjOjpjb250 ZXh0ICpjdHh0KTsNCj4+PiAgZXh0ZXJuIGdpbXBsZV9vcHRfcGFzcyAqbWFr ZV9wYXNzX3BoaV9vbmx5X2Nwcm9wIChnY2M6OmNvbnRleHQgDQo+Pj4gKmN0 eHQpOyAgZXh0ZXJuIGdpbXBsZV9vcHRfcGFzcyAqbWFrZV9wYXNzX2J1aWxk X3NzYSAoZ2NjOjpjb250ZXh0IA0KPj4+ICpjdHh0KTsgIGV4dGVybiBnaW1w bGVfb3B0X3Bhc3MgKm1ha2VfcGFzc19idWlsZF9hbGlhcyAoZ2NjOjpjb250 ZXh0IA0KPj4+ICpjdHh0KTsgZGlmZiAtLWdpdCBhL2djYy90cmVlLXNzYS1w YXRoLXNwbGl0LmMgDQo+Pj4gYi9nY2MvdHJlZS1zc2EtcGF0aC1zcGxpdC5j IG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+Pj4gMDAwMDAwMC4uM2Rh Nzc5MQ0KPj4+IC0tLSAvZGV2L251bGwNCj4+PiArKysgYi9nY2MvdHJlZS1z c2EtcGF0aC1zcGxpdC5jDQo+Pj4gQEAgLTAsMCArMSw0NjIgQEANCj4+PiAr LyogU3VwcG9ydCByb3V0aW5lcyBmb3IgUGF0aCBTcGxpdHRpbmcuDQo+Pj4g KyAgIENvcHlyaWdodCAoQykgMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4NCj4+PiArICAgQ29udHJpYnV0ZWQgYnkgQWppdCBLdW1hciBB Z2Fyd2FsIDxhaml0a3VtQHhpbGlueC5jb20+Lg0KPj4+ICsNCj4+PiArIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4NCj4+PiArDQo+Pj4gKyBHQ0MgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeSBpdCANCj4+PiArIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IA0KPj4+ ICsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMywgb3IgKGF0IHlvdXINCj4+PiArIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uDQo+Pj4gKw0KPj4+ICtHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgDQo+ Pj4gK0FOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSANCj4+PiArb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyANCj4+PiArTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KPj4+ ICsNCj4+PiArWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgDQo+Pj4gK2Fsb25nIHdp dGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlIA0K Pj4+ICs8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLw0KPj4+ ICsNCj4+PiArI2luY2x1ZGUgImNvbmZpZy5oIg0KPj4+ICsjaW5jbHVkZSAi c3lzdGVtLmgiDQo+Pj4gKyNpbmNsdWRlICJjb3JldHlwZXMuaCINCj4+PiAr I2luY2x1ZGUgInRtLmgiDQo+Pj4gKyNpbmNsdWRlICJmbGFncy5oIg0KPj4+ ICsjaW5jbHVkZSAidHJlZS5oIg0KPj4+ICsjaW5jbHVkZSAic3Rvci1sYXlv dXQuaCINCj4+PiArI2luY2x1ZGUgImNhbGxzLmgiDQo+Pj4gKyNpbmNsdWRl ICJwcmVkaWN0LmgiDQo+Pj4gKyNpbmNsdWRlICJ2ZWMuaCINCj4+PiArI2lu Y2x1ZGUgImhhc2h0YWIuaCINCj4+PiArI2luY2x1ZGUgImhhc2gtc2V0Lmgi DQo+Pj4gKyNpbmNsdWRlICJtYWNobW9kZS5oIg0KPj4+ICsjaW5jbHVkZSAi aGFyZC1yZWctc2V0LmgiDQo+Pj4gKyNpbmNsdWRlICJpbnB1dC5oIg0KPj4+ ICsjaW5jbHVkZSAiZnVuY3Rpb24uaCINCj4+PiArI2luY2x1ZGUgImRvbWlu YW5jZS5oIg0KPj4+ICsjaW5jbHVkZSAiY2ZnLmgiDQo+Pj4gKyNpbmNsdWRl ICJjZmdhbmFsLmgiDQo+Pj4gKyNpbmNsdWRlICJiYXNpYy1ibG9jay5oIg0K Pj4+ICsjaW5jbHVkZSAidHJlZS1zc2EtYWxpYXMuaCINCj4+PiArI2luY2x1 ZGUgImludGVybmFsLWZuLmgiDQo+Pj4gKyNpbmNsdWRlICJnaW1wbGUtZm9s ZC5oIg0KPj4+ICsjaW5jbHVkZSAidHJlZS1laC5oIg0KPj4+ICsjaW5jbHVk ZSAiZ2ltcGxlLWV4cHIuaCINCj4+PiArI2luY2x1ZGUgImlzLWEuaCINCj4+ PiArI2luY2x1ZGUgImdpbXBsZS5oIg0KPj4+ICsjaW5jbHVkZSAiZ2ltcGxl LWl0ZXJhdG9yLmgiDQo+Pj4gKyNpbmNsdWRlICJnaW1wbGUtd2Fsay5oIg0K Pj4+ICsjaW5jbHVkZSAiZ2ltcGxlLXNzYS5oIg0KPj4+ICsjaW5jbHVkZSAi dHJlZS1jZmcuaCINCj4+PiArI2luY2x1ZGUgInRyZWUtcGhpbm9kZXMuaCIN Cj4+PiArI2luY2x1ZGUgInNzYS1pdGVyYXRvcnMuaCINCj4+PiArI2luY2x1 ZGUgInN0cmluZ3Bvb2wuaCINCj4+PiArI2luY2x1ZGUgInRyZWUtc3NhbmFt ZXMuaCINCj4+PiArI2luY2x1ZGUgInRyZWUtc3NhLWxvb3AtbWFuaXAuaCIN Cj4+PiArI2luY2x1ZGUgInRyZWUtc3NhLWxvb3Atbml0ZXIuaCINCj4+PiAr I2luY2x1ZGUgInRyZWUtc3NhLWxvb3AuaCINCj4+PiArI2luY2x1ZGUgInRy ZWUtaW50by1zc2EuaCINCj4+PiArI2luY2x1ZGUgInRyZWUtc3NhLmgiDQo+ Pj4gKyNpbmNsdWRlICJ0cmVlLXBhc3MuaCINCj4+PiArI2luY2x1ZGUgInRy ZWUtZHVtcC5oIg0KPj4+ICsjaW5jbHVkZSAiZ2ltcGxlLXByZXR0eS1wcmlu dC5oIg0KPj4+ICsjaW5jbHVkZSAiZGlhZ25vc3RpYy1jb3JlLmgiDQo+Pj4g KyNpbmNsdWRlICJpbnRsLmgiDQo+Pj4gKyNpbmNsdWRlICJjZmdsb29wLmgi DQo+Pj4gKyNpbmNsdWRlICJ0cmVlLXNjYWxhci1ldm9sdXRpb24uaCINCj4+ PiArI2luY2x1ZGUgInRyZWUtc3NhLXByb3BhZ2F0ZS5oIg0KPj4+ICsjaW5j bHVkZSAidHJlZS1jaHJlYy5oIg0KPj4+ICsjaW5jbHVkZSAidHJlZS1zc2Et dGhyZWFkdXBkYXRlLmgiDQo+Pj4gKyNpbmNsdWRlICJleHByLmgiDQo+Pj4g KyNpbmNsdWRlICJpbnNuLWNvZGVzLmgiDQo+Pj4gKyNpbmNsdWRlICJvcHRh YnMuaCINCj4+PiArI2luY2x1ZGUgInRyZWUtc3NhLXRocmVhZGVkZ2UuaCIN Cj4+PiArI2luY2x1ZGUgIndpZGUtaW50LmgiDQo+Pj4gKw0KPj4+ICsvKiBS ZXBsYWNlX3VzZXNfcGhpIGZ1bmN0aW9uIHByb3BhZ2F0ZXMgdGhlIHBoaSBy ZXN1bHRzIHdpdGggdGhlDQo+Pj4gKyAgIGZpcnN0IHBoaSBhcmd1bWVudCBp bnRvIGVhY2ggb2YgdGhlIGNvcGllZCBqb2luIGJsb2NrcyB3aXJlZCBpbnRv DQo+Pj4gKyAgIGl0cyBwcmVkZWNlc3NvcnMuIFRoaXMgZnVuY3Rpb24gaXMg Y2FsbGVkIGZyb20gdGhlIHJlcGxhY2VfdXNlc19waGkNCj4+PiArICAgdG8g cmVwbGFjZSB0aGUgdXNlcyBvZiBmaXJzdCBwaGkgYXJndW1lbnRzIHdpdGgg dGhlIHNlY29uZA0KPj4+ICsgICBwaGkgYXJndW1lbnRzIGluIHRoZSBuZXh0 IGNvcHkgb2Ygam9pbiBibG9jay4gICovDQo+Pj4gKw0KPj4+ICtzdGF0aWMg dm9pZA0KPj4+ICtyZXBsYWNlX3VzZV9waGlfb3BlcmFuZDFfd2l0aF9vcGVy YW5kMiAoYmFzaWNfYmxvY2sgYiwNCj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRyZWUgdXNlMSwNCj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWUgdXNlMikg ew0KPj4+ICsgIHVzZV9vcGVyYW5kX3AgdXNlOw0KPj4+ICsgIHNzYV9vcF9p dGVyIGl0ZXI7DQo+Pj4gKyAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgZ3NpOw0K Pj4+ICsNCj4+PiArICBmb3IgKGdzaSA9IGdzaV9zdGFydF9iYiAoYik7ICFn c2lfZW5kX3AgKGdzaSk7KQ0KPj4+ICsgICAgIHsNCj4+PiArICAgICAgIGdp bXBsZSBzdG10ID0gZ3NpX3N0bXQgKGdzaSk7DQo+Pj4gKyAgICAgICBGT1Jf RUFDSF9TU0FfVVNFX09QRVJBTkQgKHVzZSwgc3RtdCwgaXRlciwgU1NBX09Q X1VTRSkNCj4+PiArICAgICAgIHsNCj4+PiArICAgICAgICAgdHJlZSB0dXNl ID0gVVNFX0ZST01fUFRSICh1c2UpOw0KPj4+ICsgICAgICAgICAgaWYgKHVz ZTEgPT0gdHVzZSB8fCB1c2UxID09IE5VTExfVFJFRSkNCj4+PiArICAgICAg ICAgICAgew0KPj4+ICsgICAgICAgICAgICAgIHByb3BhZ2F0ZV92YWx1ZSAo dXNlLCB1c2UyKTsNCj4+PiArICAgICAgICAgICAgICB1cGRhdGVfc3RtdChz dG10KTsNCj4+PiArICAgICAgICAgICAgfQ0KPj4+ICsgICAgICAgIH0NCj4+ PiArICAgICAgIGdzaV9uZXh0KCZnc2kpOw0KPj4+ICsgICAgIH0NCj4+PiAr fQ0KPj4+ICsNCj4+PiArLyogVGhpcyBmdW5jdGlvbiBwcm9wYWdhdGVzIHRo ZSBwaGkgcmVzdWx0IGludG8gdGhlIHVzZSBwb2ludHMgd2l0aA0KPj4+ICsg ICB0aGUgcGhpIGFyZ3VtZW50cy4gVGhlIGpvaW4gYmxvY2sgaXMgY29waWVk IGFuZCB3aXJlZCBpbnRvIHRoZQ0KPj4+ICsgICBwcmVkZWNlc3NvcnMuIFNp bmNlIHRoZSB1c2UgcG9pbnRzIG9mIHRoZSBwaGkgcmVzdWx0cyB3aWxsIGJl IHNhbWUNCj4+PiArICAgaW4gdGhlIGVhY2ggb2YgdGhlIGNvcHkgam9pbiBi bG9ja3MgaW4gdGhlICBwcmVkZWNlc3NvcnMsIGl0DQo+Pj4gKyAgIHByb3Bh Z2F0ZXMgdGhlIHBoaSBhcmd1bWVudHMgaW4gdGhlIGNvcHkgb2YgdGhlIGpv aW4gYmxvY2tzIHdpcmVkDQo+Pj4gKyAgIGludG8gaXRzIHByZWRlY2Vzc29y LiAgKi8NCj4+PiArDQo+Pj4gK3N0YXRpYw0KPj4+ICt2b2lkIHJlcGxhY2Vf dXNlc19waGkgKGJhc2ljX2Jsb2NrIGIsIGJhc2ljX2Jsb2NrIHRlbXBfYmIp IHsNCj4+PiArICBnaW1wbGVfc2VxIHBoaXMgPSBwaGlfbm9kZXMgKGIpOw0K Pj4+ICsgIGdpbXBsZSBwaGkgPSBnaW1wbGVfc2VxX2ZpcnN0X3N0bXQgKHBo aXMpOw0KPj4+ICsgIHRyZWUgZGVmID0gZ2ltcGxlX3BoaV9yZXN1bHQgKHBo aSksIHVzZSA9IGdpbXBsZV9waGlfYXJnX2RlZiANCj4+PiArKHBoaSwwKTsN Cj4+PiArICB0cmVlIHVzZTIgPSBnaW1wbGVfcGhpX2FyZ19kZWYgKHBoaSwx KTsNCj4+PiArDQo+Pj4gKyAgaWYgKHZpcnR1YWxfb3BlcmFuZF9wIChkZWYp KQ0KPj4+ICsgICAgew0KPj4+ICsgICAgICBpbW1fdXNlX2l0ZXJhdG9yIGl0 ZXI7DQo+Pj4gKyAgICAgIHVzZV9vcGVyYW5kX3AgdXNlX3A7DQo+Pj4gKyAg ICAgIGdpbXBsZSBzdG10Ow0KPj4+ICsNCj4+PiArICAgICAgRk9SX0VBQ0hf SU1NX1VTRV9TVE1UIChzdG10LCBpdGVyLCBkZWYpDQo+Pj4gKyAgICAgICAg Rk9SX0VBQ0hfSU1NX1VTRV9PTl9TVE1UICh1c2VfcCwgaXRlcikNCj4+PiAr ICAgICAgICAgIFNFVF9VU0UgKHVzZV9wLCB1c2UpOw0KPj4+ICsgICAgICBp ZiAoU1NBX05BTUVfT0NDVVJTX0lOX0FCTk9STUFMX1BISSAoZGVmKSkNCj4+ PiArICAgICAgICBTU0FfTkFNRV9PQ0NVUlNfSU5fQUJOT1JNQUxfUEhJICh1 c2UpID0gMTsNCj4+PiArICAgIH0NCj4+PiArICAgZWxzZQ0KPj4+ICsgICAg IHJlcGxhY2VfdXNlc19ieSAoZGVmLCB1c2UpOw0KPj4+ICsgICByZXBsYWNl X3VzZV9waGlfb3BlcmFuZDFfd2l0aF9vcGVyYW5kMiAodGVtcF9iYiwgdXNl LCB1c2UyKTsgfQ0KPj4+ICsNCj4+PiArLyogUmV0dXJucyB0cnVlIGlmIHRo ZSBibG9jayBiYiBoYXMgbGFiZWwgb3IgY2FsbCBzdGF0ZW1lbnRzLg0KPj4+ ICsgICBPdGhlcndpc2UgcmV0dXJuIGZhbHNlLiAgKi8NCj4+PiArDQo+Pj4g K3N0YXRpYyBib29sDQo+Pj4gK2lzX2Jsb2NrX2hhc19sYWJlbF9jYWxsIChi YXNpY19ibG9jayBiYikgew0KPj4+ICsgIGdpbXBsZV9zdG10X2l0ZXJhdG9y IGdzaTsNCj4+PiArDQo+Pj4gKyAgZm9yIChnc2kgPSBnc2lfc3RhcnRfYmIg KGJiKTsgIWdzaV9lbmRfcCAoZ3NpKTsgZ3NpX25leHQgKCZnc2kpKQ0KPj4+ ICsgICAgIHsNCj4+PiArICAgICAgIGdpbXBsZSBzdG10ID0gZ3NpX3N0bXQo Z3NpKTsNCj4+PiArICAgICAgIGlmIChkeW5fY2FzdCA8Z2xhYmVsICo+IChz dG10KSkNCj4+PiArICAgICAgICAgew0KPj4+ICsgICAgICAgICAgIHJldHVy biB0cnVlOw0KPj4+ICsgICAgICAgICB9DQo+Pj4gKyAgICAgICBpZiAoaXNf Z2ltcGxlX2NhbGwgKHN0bXQpKQ0KPj4+ICsgICAgICAgICByZXR1cm4gdHJ1 ZTsNCj4+PiArICAgICB9DQo+Pj4gKyAgcmV0dXJuIGZhbHNlOw0KPj4+ICt9 DQo+Pj4gKw0KPj4+ICsvKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIHRoZSBm ZWFzaWJpbGl0eSB0ZXN0cyBmb3IgcGF0aCBzcGxpdHRpbmcNCj4+PiArICAg dG8gcGVyZm9ybS4gUmV0dXJuIGZhbHNlIGlmIHRoZSBmZWFzaWJpbGl0eSBm b3IgcGF0aCBzcGxpdHRpbmcNCj4+PiArICAgaXMgbm90IGRvbmUgYW5kIHJl dHVybnMgdHJ1ZSBpZiB0aGUgZmVhc2JpbGl0eSBmb3IgcGF0aCBzcGxpdHRp bmcNCj4+PiArICAgaXMgZG9uZS4gRm9sbG93aW5nIGZlYXNpYmlsaXR5IHRl c3RzIGFyZSBwZXJmb3JtZWQuDQo+Pj4gKw0KPj4+ICsgICAxLiBSZXR1cm4g ZmFsc2UgaWYgdGhlIGpvaW4gYmxvY2sgaGFzIGNhbGwgZ2ltcGxlIHN0YXRl bWVudHMuDQo+Pj4gKyAgIDIuIFJldHVybiBmYWxzZSBpZiB0aGUgam9pbiBi bG9jayBoYXMgcmhzIGNhc3RpbmcgZm9yIGFzc2lnbg0KPj4+ICsgICAgICBn aW1wbGUgc3RhdGVtZW50cy4NCj4+PiArICAgMy4gSWYgdGhlIG51bWJlciBv ZiBwaGlzIGlzIGdyZWF0ZXIgdGhhbiAxIG9yIHRoZSBwaGkgbm9kZSBpbg0K Pj4+ICsgICAgICB0aGUgam9pbiBibG9jayBoYXMgdmlydHVhbCBvcGVyYW5k IHJldHVybiBmYWxzZS4NCj4+PiArICAgNC4gUmV0dXJuIGZhbHNlIGlmIHRo ZSBudW1iZXIgb2Ygc2VxdWVudGlhbCBzdGF0ZW1lbnRzIGlzDQo+Pj4gKyAg ICAgIGdyZWF0ZXIgdGhhbiAyLg0KPj4+ICsgICA1LiBJZiB0aGUgcHJlZGVj ZXNzb3JzIGJsb2NrcyBoYXMgbGFiZWxzIGFuZCBjYWxsIHN0YXRlbWVudHMN Cj4+PiArICAgICAgcmV0dXJuIGZhbHNlLg0KPj4+ICsgICA2LiBJZiB0aGUg cGhpIHJlc3VsdCBpbiB0aGUgcGhpIG5vZGUgb2YgdGhlIGpvaW4gYmxvY2sg aXMgbm90DQo+Pj4gKyAgICAgIHVzZWQgaW5zaWRlIHRoZSBzYW1lIGpvaW4g YmxvY2sgcmV0dXJuIGZhbHNlLg0KPj4+ICsgICA3LiBPdGhlcndpc2UgcmV0 dXJucyB0cnVlLiAgKi8NCj4+PiArDQo+Pj4gK3N0YXRpYyBib29sDQo+Pj4g K2lzX2ZlYXNpYmxlX3BhdGhfc3BsaXR0aW5nIChiYXNpY19ibG9jayBqb2lu X25vZGUsIGJhc2ljX2Jsb2NrIHByZWQxLA0KPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICBiYXNpY19ibG9jayBwcmVkMikgew0KPj4+ICsgIGlu dCBudW1fc3RtdCA9IDAsIG51bV9waGlzID0gMDsNCj4+PiArICBnaW1wbGVf c3RtdF9pdGVyYXRvciBwc2ksIGdzaTsNCj4+PiArDQo+Pj4gKyAgZm9yIChn c2kgPSBnc2lfc3RhcnRfYmIgKGpvaW5fbm9kZSk7ICFnc2lfZW5kX3AgKGdz aSk7IGdzaV9uZXh0ICgmZ3NpKSkNCj4+PiArICAgICB7DQo+Pj4gKyAgICAg ICBnaW1wbGUgc3RtdCA9IGdzaV9zdG10KGdzaSk7DQo+Pj4gKw0KPj4+ICsg ICAgICAgaWYgKGdpbXBsZV9hc3NpZ25fY2FzdF9wIChzdG10KSkNCj4+PiAr ICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPj4+ICsNCj4+PiArICAgICAgIGlm IChpc19naW1wbGVfY2FsbCAoc3RtdCkpDQo+Pj4gKyAgICAgICAgIHJldHVy biBmYWxzZTsNCj4+PiArDQo+Pj4gKyAgICAgICBpZiAoIWlzX2dpbXBsZV9k ZWJ1ZyhzdG10KSkNCj4+PiArICAgICAgICAgew0KPj4+ICsgICAgICAgICAg IG51bV9zdG10Kys7DQo+Pj4gKyAgICAgICAgIH0NCj4+PiArICAgICB9DQo+ Pj4gKw0KPj4+ICsgICBpZiAocHJlZDEgJiYgcHJlZDIgJiYgKG51bV9zdG10 ID4gMikpDQo+Pj4gKyAgICAgew0KPj4+ICsgICAgICAgYm9vbCBmb3VuZF92 aXJ0dWFsX3Jlc3VsdCA9IGZhbHNlOw0KPj4+ICsNCj4+PiArICAgICAgIGZv ciAocHNpID0gZ3NpX3N0YXJ0X3BoaXMgKGpvaW5fbm9kZSk7ICFnc2lfZW5k X3AgKHBzaSk7ICkNCj4+PiArICAgICAgICAgIHsNCj4+PiArICAgICAgICAg ICAgdXNlX29wZXJhbmRfcCB1c2VfcDsNCj4+PiArICAgICAgICAgICAgaW1t X3VzZV9pdGVyYXRvciBpdGVyOw0KPj4+ICsgICAgICAgICAgICBnaW1wbGUg c3RtdCA9IGdzaV9zdG10KHBzaSk7DQo+Pj4gKw0KPj4+ICsgICAgICAgICAg ICBpZiAoIXZpcnR1YWxfb3BlcmFuZF9wIChnaW1wbGVfcGhpX3Jlc3VsdCAo c3RtdCkpKQ0KPj4+ICsgICAgICAgICAgICAgIG51bV9waGlzKys7DQo+Pj4g KyAgICAgICAgICAgIGVsc2UNCj4+PiArICAgICAgICAgICAgICBmb3VuZF92 aXJ0dWFsX3Jlc3VsdCA9IHRydWU7DQo+Pj4gKw0KPj4+ICsgICAgICAgICAg ICBGT1JfRUFDSF9JTU1fVVNFX0ZBU1QgKHVzZV9wLCBpdGVyLCBnaW1wbGVf cGhpX3Jlc3VsdCAoc3RtdCkpDQo+Pj4gKyAgICAgICAgICAgIHsNCj4+PiAr ICAgICAgICAgICAgICBnaW1wbGUgdXNlX3N0bXQgPSBVU0VfU1RNVCAodXNl X3ApOw0KPj4+ICsNCj4+PiArICAgICAgICAgICAgICBpZiAoZ2ltcGxlX2Ji ICh1c2Vfc3RtdCkgIT0gam9pbl9ub2RlKQ0KPj4+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOw0KPj4+ICsgICAgICAgICAgICB9DQo+Pj4gKw0K Pj4+ICsgICAgICAgICAgICBnc2lfbmV4dCgmcHNpKTsNCj4+PiArICAgICAg ICAgfQ0KPj4+ICsNCj4+PiArICAgICAgIGlmICgobnVtX3BoaXMgPjEpIHx8 IGZvdW5kX3ZpcnR1YWxfcmVzdWx0KQ0KPj4+ICsgICAgICAgICAgcmV0dXJu IGZhbHNlOw0KPj4+ICsNCj4+PiArICAgICAgIGlmKGlzX2Jsb2NrX2hhc19s YWJlbF9jYWxsKHByZWQxKSB8fCBpc19ibG9ja19oYXNfbGFiZWxfY2FsbChw cmVkMikpDQo+Pj4gKyAgICAgICAgIHJldHVybiBmYWxzZTsNCj4+PiArDQo+ Pj4gKyAgICAgICByZXR1cm4gdHJ1ZTsNCj4+PiArICAgIH0NCj4+PiArICBy ZXR1cm4gZmFsc2U7DQo+Pj4gK30NCj4+PiArDQo+Pj4gKy8qIFVwZGF0ZSB0 aGUgc3RhdGVtZW50cyBpbiB0aGUgYmFzaWMgYmxvY2sgd2l0aCB0aGUgYmFz aWMNCj4+PiArICAgYmFzaWMgYmxvY2suICAqLw0KPj4+ICsNCj4+PiArc3Rh dGljIHZvaWQNCj4+PiArdXBkYXRlX3N0bXRfYmIoYmFzaWNfYmxvY2sgYikN Cj4+PiArew0KPj4+ICsgIGdpbXBsZV9zdG10X2l0ZXJhdG9yIGdzaTsNCj4+ PiArICBmb3IoZ3NpID0gZ3NpX3N0YXJ0X2JiKGIpOyAhZ3NpX2VuZF9wKGdz aSk7IGdzaV9uZXh0KCZnc2kpKQ0KPj4+ICsgICB7DQo+Pj4gKyAgICAgZ2lt cGxlIHN0bXQgPSBnc2lfc3RtdChnc2kpOw0KPj4+ICsgICAgIGdpbXBsZV9z ZXRfYmIoc3RtdCxiKTsNCj4+PiArICAgfQ0KPj4+ICt9DQo+Pj4gKw0KPj4+ ICsvKiBUaGlzIGZ1bmN0aW9uIGdldHMgdGhlIGpvaW4gYmxvY2tzIHNhbWUg YXMgdGhlIHNvdXJjZQ0KPj4+ICsgICBub2RlIG9mIHRoZSBsb29wIGxhdGNo IG5vZGVzIGFuZCB0aGUgcHJlZGVjZXNzb3JzIG9mDQo+Pj4gKyAgIHRoZSBq b2luIGJsb2NrIGlzIHVwZGF0ZWQgaW4gdGhlIHByZWQxIGFuZCBwcmVkMiBw YXNzZWQNCj4+PiArICAgYXMgdGhlIHJlZmVyZW5jZSBhcmd1bWVudHMgaW50 byB0aGUgZnVuY3Rpb24uIFJldHVybg0KPj4+ICsgICB0aGUgam9pbiBibG9j ay4gICovDQo+Pj4gKw0KPj4+ICtzdGF0aWMgYmFzaWNfYmxvY2sNCj4+PiAr Z2V0X2pvaW5fYmxrX3NhbWVfYXNfbG9vcF9sYXRjaCAoYmFzaWNfYmxvY2sg YmIsDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJh c2ljX2Jsb2NrICZwcmVkMSwNCj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYmFzaWNfYmxvY2sgJnByZWQyKSB7DQo+Pj4gKyAgdmVj PGJhc2ljX2Jsb2NrPiBiYnM7DQo+Pj4gKyAgYmFzaWNfYmxvY2sgYmIxOw0K Pj4+ICsgIHVuc2lnbmVkIGludCBpOw0KPj4+ICsgIGVkZ2VfaXRlcmF0b3Ig ZWk7DQo+Pj4gKyAgZWRnZSBlMTsNCj4+PiArICBib29sIGZvdW5kID0gZmFs c2UgLGZvdW5kMTsNCj4+PiArICBiYnMgPSBnZXRfYWxsX2RvbWluYXRlZF9i bG9ja3MgKENESV9ET01JTkFUT1JTLA0KPj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYmIgKTsNCj4+PiArICBGT1JfRUFDSF9WRUNf RUxUIChiYnMsIGksIGJiMSkNCj4+PiArICB7DQo+Pj4gKyAgICBmb3VuZDEg PSBmYWxzZTsNCj4+PiArICAgIEZPUl9FQUNIX0VER0UgKGUxLCBlaSwgYmIt PnN1Y2NzKQ0KPj4+ICsgICAgew0KPj4+ICsgICAgICBpZiAoIGJiMSA9PSBl MS0+ZGVzdCkNCj4+PiArICAgICAgICB7DQo+Pj4gKyAgICAgICAgICBmb3Vu ZCA9IHRydWU7DQo+Pj4gKyAgICAgICAgICBmb3VuZDEgPSB0cnVlOw0KPj4+ ICsgICAgICAgIH0NCj4+PiArICAgIH0NCj4+PiArICAgIGlmICghZm91bmQx ICYmIGZvdW5kKQ0KPj4+ICsgICAgICB7DQo+Pj4gKyAgICAgICAgZm91bmQg PSBmYWxzZTsNCj4+PiArICAgICAgICBGT1JfRUFDSF9FREdFIChlMSwgZWks IGJiMS0+c3VjY3MpDQo+Pj4gKyAgICAgICAgew0KPj4+ICsgICAgICAgICAg aWYgKGUxLT5mbGFncyAmIChFREdFX0RGU19CQUNLKSkNCj4+PiArICAgICAg ICAgICAgZm91bmQgPSB0cnVlOw0KPj4+ICsgICAgICAgIH0NCj4+PiArDQo+ Pj4gKyAgICAgICAgaWYgKGZvdW5kICYmIEVER0VfQ09VTlQoYmIxLT5wcmVk cykgPT0gMikNCj4+PiArICAgICAgICAgIHsNCj4+PiArICAgICAgICAgICAg dW5zaWduZWQgaW50IGsgPSAwOw0KPj4+ICsgICAgICAgICAgICBGT1JfRUFD SF9FREdFIChlMSwgZWksIGJiMS0+cHJlZHMpDQo+Pj4gKyAgICAgICAgICAg IHsNCj4+PiArICAgICAgICAgICAgICBpZiAoKGUxLT5mbGFncyAmIChFREdF X0RGU19CQUNLKSkpDQo+Pj4gKyAgICAgICAgICAgICAgICBjb250aW51ZTsN Cj4+PiArDQo+Pj4gKyAgICAgICAgICAgICAgaWYgKCBrID09IDEpDQo+Pj4g KyAgICAgICAgICAgICAgICB7DQo+Pj4gKyAgICAgICAgICAgICAgICAgIGlm IChzaW5nbGVfc3VjY19wKGUxLT5zcmMpICYmDQo+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICBzaW5nbGVfc3VjY19lZGdlIChlMS0+c3JjKS0+ZmxhZ3Mg JiBFREdFX0ZBTExUSFJVKQ0KPj4+ICsgICAgICAgICAgICAgICAgICAgIHsN Cj4+PiArICAgICAgICAgICAgICAgICAgICAgIHByZWQyID0gZTEtPnNyYzsN Cj4+PiArICAgICAgICAgICAgICAgICAgICB9DQo+Pj4gKyAgICAgICAgICAg ICAgICB9DQo+Pj4gKyAgICAgICAgICAgICAgICBlbHNlDQo+Pj4gKyAgICAg ICAgICAgICAgICAgIHsNCj4+PiArICAgICAgICAgICAgICAgICAgICBpZiAo c2luZ2xlX3N1Y2NfcChlMS0+c3JjKSAmJg0KPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICBzaW5nbGVfc3VjY19lZGdlIChlMS0+c3JjKS0+ZmxhZ3Mg JiBFREdFX0ZBTExUSFJVKQ0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ew0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBwcmVkMSA9IGUxLT5z cmM7DQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICB9DQo+Pj4gKyAgICAg ICAgICAgICAgICAgIH0NCj4+PiArICAgICAgICAgICAgICAgIGsrKzsNCj4+ PiArICAgICAgICAgICAgfQ0KPj4+ICsgICAgICAgICAgICBiYnMucmVsZWFz ZSgpOw0KPj4+ICsgICAgICAgICAgICByZXR1cm4gYmIxOw0KPj4+ICsgICAg ICAgICAgfQ0KPj4+ICsgICAgICAgfQ0KPj4+ICsgICB9DQo+Pj4gKyAgIGJi cy5yZWxlYXNlKCk7DQo+Pj4gKyAgIHJldHVybiBOVUxMOw0KPj4+ICt9DQo+ Pj4gKw0KPj4+ICsvKiBUaGlzIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIHRvIHBl cmZvcm0gcGF0aCBzcGxpdHRpbmcuIFRoZSBqb2luDQo+Pj4gKyAgIHNhbWUg YXMgdGhlIHNvdXJjZSBvZiB0aGUgbG9vcCBsYXRjaCBub2RlIGlzIGlkZW50 aWZpZWQgYWxvbmcNCj4+PiArICAgd2l0aCB0aGVpciBwcmVkZWNlc3NvcnMu IEJhc2VkIG9uIHRoZSBmZWFzaWJpbGl0eSB0ZXN0cyBmb3INCj4+PiArICAg cGF0aCBzcGxpdHRpbmcgdGhlIHBhdGggc3BsaXR0aW5nIGlzIHBlcmZvcm1l ZCBieSB3aXJpbmcgdGhlDQo+Pj4gKyAgIGNvcHkgb2Ygam9pbiBibG9ja3Mg aW50byB0aGUgcHJlZGVjZXNzb3JzIGFuZCBwcm9wYWdhdGluZyB0aGUgcGhp DQo+Pj4gKyAgIHJlc3VsdCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHBoaSBh cmd1bWVudHMgaW50byBlYWNoIG9mIHRoZSBjb3B5DQo+Pj4gKyAgIG9mIGpv aW4gYmxvY2tzIHdpcmVkIHdpdGggdGhlIG9yaWdpbmFsIHByZWRlY2Vzc29y cyBvZiB0aGUgam9pbg0KPj4+ICsgICBibG9jay4NCj4+PiArDQo+Pj4gKyAg IFRoZSAgdHJlZS1jZmctY2xlYW51cCB3aWxsIG1lcmdlIHRoZSBibG9ja3Mg aW4gdGhlIHByZWRlY2Vzc29ycw0KPj4+ICsgICBwYXRoIGFuZCB0aGUgdXBk YXRlLXNzYSB3aWxsIHVwZGF0ZSB0aGUgc3NhIHJlcHJlc2VudGF0aW9uIGFm dGVyDQo+Pj4gKyAgIHRoZSBwYXRoIHNwbGl0dGluZyBpcyBwZXJmb3JtZWQu ICAqLw0KPj4+ICsNCj4+PiArc3RhdGljIHZvaWQNCj4+PiArcGVyZm9ybV9w YXRoX3NwbGl0dGluZyAoYmFzaWNfYmxvY2sgYmIpIHsNCj4+PiArICBiYXNp Y19ibG9jayBwcmVkMSA9IE5VTEwsIHByZWQyID0gTlVMTCwgam9pbl9ibG9j ayA9IE5VTEw7DQo+Pj4gKw0KPj4+ICsgIGpvaW5fYmxvY2sgPSBnZXRfam9p bl9ibGtfc2FtZV9hc19sb29wX2xhdGNoIChiYiwgcHJlZDEsIHByZWQyKTsN Cj4+PiArDQo+Pj4gKyAgaWYgKGpvaW5fYmxvY2sgICYmDQo+Pj4gKyAgICAg IGlzX2ZlYXNpYmxlX3BhdGhfc3BsaXR0aW5nIChqb2luX2Jsb2NrLCBwcmVk MSwgcHJlZDIpKQ0KPj4+ICsgICAgew0KPj4+ICsgICAgICBiYXNpY19ibG9j ayBuZXdfYmIxID0gTlVMTCwgbmV3X2JiMiA9IE5VTEw7DQo+Pj4gKyAgICAg IGdpbXBsZV9zdG10X2l0ZXJhdG9yIGxhc3Q7DQo+Pj4gKyAgICAgIGJhc2lj X2Jsb2NrIHRlbXBfYmIgPSBOVUxMOw0KPj4+ICsgICAgICBlZGdlX2l0ZXJh dG9yIGVpOw0KPj4+ICsgICAgICBlZGdlIGUxOw0KPj4+ICsNCj4+PiArICAg ICAgdGVtcF9iYiA9IGR1cGxpY2F0ZV9ibG9jayAoam9pbl9ibG9jaywgTlVM TCwgTlVMTCk7DQo+Pj4gKw0KPj4+ICsgICAgICBGT1JfRUFDSF9FREdFIChl MSwgZWksIHByZWQxLT5zdWNjcykNCj4+PiArICAgICAgICBuZXdfYmIxID0g c3BsaXRfZWRnZSAoZTEpOw0KPj4+ICsNCj4+PiArICAgICAgRk9SX0VBQ0hf RURHRSAoZTEsIGVpLCBwcmVkMi0+c3VjY3MpDQo+Pj4gKyAgICAgICAgbmV3 X2JiMiA9IHNwbGl0X2VkZ2UgKGUxKTsNCj4+PiArDQo+Pj4gKyAgICAgIGxh c3QgPSBnc2lfc3RhcnRfYmIgKG5ld19iYjEpOw0KPj4+ICsgICAgICBnc2lf aW5zZXJ0X3NlcV9hZnRlciAoJmxhc3QsIGJiX3NlcSAoam9pbl9ibG9jayks IEdTSV9ORVdfU1RNVCk7DQo+Pj4gKyAgICAgIGxhc3QgPSBnc2lfc3RhcnRf YmIgKG5ld19iYjIpOw0KPj4+ICsgICAgICBnc2lfaW5zZXJ0X3NlcV9hZnRl ciAoJmxhc3QsIGJiX3NlcSAodGVtcF9iYiksIEdTSV9ORVdfU1RNVCk7DQo+ Pj4gKyAgICAgIHVwZGF0ZV9zdG10X2JiIChuZXdfYmIxKTsNCj4+PiArICAg ICAgdXBkYXRlX3N0bXRfYmIgKG5ld19iYjIpOw0KPj4+ICsNCj4+PiArICAg ICAgcmVwbGFjZV91c2VzX3BoaSAoam9pbl9ibG9jaywgbmV3X2JiMik7DQo+ Pj4gKw0KPj4+ICsgICAgICBzZXRfYmJfc2VxIChqb2luX2Jsb2NrLCBOVUxM KTsNCj4+PiArICAgICAgc2V0X2JiX3NlcSh0ZW1wX2JiLE5VTEwpOw0KPj4+ ICsgICAgICBkZWxldGVfYmFzaWNfYmxvY2sgKHRlbXBfYmIpOw0KPj4+ICsg ICAgICByZXR1cm47DQo+Pj4gKyAgICB9DQo+Pj4gK30NCj4+PiArDQo+Pj4g K3N0YXRpYyB1bnNpZ25lZCBpbnQNCj4+PiArZXhlY3V0ZV9wYXRoX3NwbGl0 ICh2b2lkKQ0KPj4+ICt7DQo+Pj4gKyAgYmFzaWNfYmxvY2sgYmI7DQo+Pj4g Kw0KPj4+ICsgIGxvb3Bfb3B0aW1pemVyX2luaXQgKExPT1BTX05PUk1BTCB8 IExPT1BTX0hBVkVfUkVDT1JERURfRVhJVFMpOyANCj4+PiArIGluaXRpYWxp emVfb3JpZ2luYWxfY29weV90YWJsZXMoKTsNCj4+PiArDQo+Pj4gKyAgY2Fs Y3VsYXRlX2RvbWluYW5jZV9pbmZvIChDRElfRE9NSU5BVE9SUyk7IA0KPj4+ ICsgY2FsY3VsYXRlX2RvbWluYW5jZV9pbmZvIChDRElfUE9TVF9ET01JTkFU T1JTKTsNCj4+PiArDQo+Pj4gKyAgbWFya19kZnNfYmFja19lZGdlcyAoKTsN Cj4+PiArDQo+Pj4gKyAgRk9SX0VBQ0hfQkJfRk4gKGJiLCBjZnVuKQ0KPj4+ ICsgIHsNCj4+PiArICAgIGdpbXBsZSBsYXN0Ow0KPj4+ICsNCj4+PiArICAg IC8qIFdlIG9ubHkgY2FyZSBhYm91dCBibG9ja3MgZW5kaW5nIGluIGEgQ09O RF9FWFBSLiAqLw0KPj4+ICsNCj4+PiArICAgIGxhc3QgPSBnc2lfc3RtdCAo Z3NpX2xhc3RfYmIgKGJiKSk7DQo+Pj4gKw0KPj4+ICsgICAgLyogV2UncmUg YmFzaWNhbGx5IGxvb2tpbmcgZm9yIGEgc3dpdGNoIG9yIGFueSBraW5kIG9m IGNvbmRpdGlvbmFsIHdpdGgNCj4+PiArICAgICAgIGludGVncmFsIG9yIHBv aW50ZXIgdHlwZSBhcmd1bWVudHMuICBOb3RlIHRoZSB0eXBlIG9mIHRoZSBz ZWNvbmQNCj4+PiArICAgICAgIGFyZ3VtZW50IHdpbGwgYmUgdGhlIHNhbWUg YXMgdGhlIGZpcnN0IGFyZ3VtZW50LCBzbyBubyBuZWVkIHRvDQo+Pj4gKyAg ICAgICBjaGVjayBpdCBleHBsaWNpdGx5LiAgKi8NCj4+PiArICAgIGlmICgo bGFzdCAmJiAoZ2ltcGxlX2NvZGUgKGxhc3QpID09IEdJTVBMRV9DT05EDQo+ Pj4gKyAgICAgICAgICAgICYmIFRSRUVfQ09ERSAoZ2ltcGxlX2NvbmRfbGhz IChsYXN0KSkgPT0gU1NBX05BTUUNCj4+PiArICAgICAgICAgICAgJiYgKElO VEVHUkFMX1RZUEVfUCAoVFJFRV9UWVBFIChnaW1wbGVfY29uZF9saHMgKGxh c3QpKSkNCj4+PiArICAgICAgICAgICAgfHwgUE9JTlRFUl9UWVBFX1AgKFRS RUVfVFlQRSAoZ2ltcGxlX2NvbmRfbGhzIChsYXN0KSkpKQ0KPj4+ICsgICAg ICAgICAgICAmJiAoVFJFRV9DT0RFIChnaW1wbGVfY29uZF9yaHMgKGxhc3Qp KSA9PSBTU0FfTkFNRQ0KPj4+ICsgICAgICAgICAgICB8fCBpc19naW1wbGVf bWluX2ludmFyaWFudCAoZ2ltcGxlX2NvbmRfcmhzIChsYXN0KSkpKSkpDQo+ Pj4gKyAgICAgIHsNCj4+PiArDQo+Pj4gKyAgICAgICAgIGlmIChnaW1wbGVf Y29kZShsYXN0KSA9PSBHSU1QTEVfQ09ORCkNCj4+PiArICAgICAgICAgICB7 DQo+Pj4gKyAgICAgICAgICAgICAgcGVyZm9ybV9wYXRoX3NwbGl0dGluZyAo YmIpOw0KPj4+ICsgICAgICAgICAgIH0NCj4+PiArICAgICAgfQ0KPj4+ICsg ICB9DQo+Pj4gKw0KPj4+ICsgICBsb29wX29wdGltaXplcl9maW5hbGl6ZSAo KTsNCj4+PiArICAgZnJlZV9vcmlnaW5hbF9jb3B5X3RhYmxlcyAoKTsNCj4+ PiArICAgZnJlZV9kb21pbmFuY2VfaW5mbyAoQ0RJX0RPTUlOQVRPUlMpOw0K Pj4+ICsgICBmcmVlX2RvbWluYW5jZV9pbmZvIChDRElfUE9TVF9ET01JTkFU T1JTKTsNCj4+PiArICAgcmV0dXJuIDA7DQo+Pj4gK30NCj4+PiArDQo+Pj4g K25hbWVzcGFjZSB7DQo+Pj4gKw0KPj4+ICtjb25zdCBwYXNzX2RhdGEgcGFz c19kYXRhX3BhdGhfc3BsaXQgPSB7DQo+Pj4gKyAgIEdJTVBMRV9QQVNTLCAv KiB0eXBlICovDQo+Pj4gKyAgICJwYXRoX3NwbGl0IiwgLyogbmFtZSAqLw0K Pj4+ICsgICAgT1BUR1JPVVBfTk9ORSwgLyogb3B0aW5mb19mbGFncyAqLw0K Pj4+ICsgICAgVFZfVFJFRV9QQVRIX1NQTElULCAvKiB0dl9pZCAqLw0KPj4+ ICsgICAgUFJPUF9zc2EsIC8qIHByb3BlcnRpZXNfcmVxdWlyZWQgKi8NCj4+ PiArICAgIDAsIC8qIHByb3BlcnRpZXNfcHJvdmlkZWQgKi8NCj4+PiArICAg IDAsIC8qIHByb3BlcnRpZXNfZGVzdHJveWVkICovDQo+Pj4gKyAgICAwLCAv KiB0b2RvX2ZsYWdzX3N0YXJ0ICovDQo+Pj4gKyAgICAoIFRPRE9fY2xlYW51 cF9jZmcgfCBUT0RPX3VwZGF0ZV9zc2EgKSwgLyogdG9kb19mbGFnc19maW5p c2ggKi8gDQo+Pj4gK307DQo+Pj4gKw0KPj4+ICtjbGFzcyBwYXNzX3BhdGhf c3BsaXQgOiBwdWJsaWMgZ2ltcGxlX29wdF9wYXNzIHsNCj4+PiArICAgcHVi bGljOg0KPj4+ICsgICAgcGFzc19wYXRoX3NwbGl0IChnY2M6OmNvbnRleHQg KmN0eHQpDQo+Pj4gKyAgICAgIDogZ2ltcGxlX29wdF9wYXNzIChwYXNzX2Rh dGFfcGF0aF9zcGxpdCwgY3R4dCkNCj4+PiArICAgIHt9DQo+Pj4gKw0KPj4+ ICsgICAvKiBvcHRfcGFzcyBtZXRob2RzOiAqLw0KPj4+ICsgICBvcHRfcGFz cyAqIGNsb25lICgpIHsgcmV0dXJuIG5ldyBwYXNzX3BhdGhfc3BsaXQgKG1f Y3R4dCk7IH0NCj4+PiArICAgdmlydHVhbCBib29sIGdhdGUgKGZ1bmN0aW9u ICopIHsgcmV0dXJuIGZsYWdfdHJlZV9wYXRoX3NwbGl0ICE9IDA7IH0NCj4+ PiArICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZXhlY3V0ZSAoZnVuY3Rpb24g KikgeyByZXR1cm4gDQo+Pj4gKyBleGVjdXRlX3BhdGhfc3BsaXQgKCk7IH0N Cj4+PiArDQo+Pj4gK307IC8vIGNsYXNzIHBhc3NfcGF0aF9zcGxpdA0KPj4+ ICsNCj4+PiArfSAvLyBhbm9uIG5hbWVzcGFjZQ0KPj4+ICsNCj4+PiArZ2lt cGxlX29wdF9wYXNzICoNCj4+PiArbWFrZV9wYXNzX3BhdGhfc3BsaXQgKGdj Yzo6Y29udGV4dCAqY3R4dCkgew0KPj4+ICsgIHJldHVybiBuZXcgcGFzc19w YXRoX3NwbGl0IChjdHh0KTsgfQ0KPj4+IC0tDQo+Pj4gMS44LjIuMQ0KPj4+ DQo+Pj4gVGhhbmtzICYgUmVnYXJkcw0KPj4+IEFqaXQNCg== --_002_37378DC5BCD0EE48BA4B082E0B55DFAA4295ADCBXAPPVEXMBX02xln_ Content-Type: application/octet-stream; name="path-splitting.patch" Content-Description: path-splitting.patch Content-Disposition: attachment; filename="path-splitting.patch"; size=21987; creation-date="Sat, 15 Aug 2015 16:57:20 GMT"; modification-date="Sat, 15 Aug 2015 16:38:38 GMT" Content-Transfer-Encoding: base64 Content-length: 29805 RnJvbSBjZjJiNjRjYzFkNjYyMzQyNGQ3NzBmMmE5ZWEyNTdlYjdlNThlODg3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBaml0IEt1bWFyIEFn YXJ3YWwgPGFqaXRrdW1AeGlsaXguY29tPgpEYXRlOiBTYXQsIDE1IEF1ZyAy MDE1IDE4OjE5OjE0ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gW1BhdGNoLHRy ZWUtb3B0aW1pemF0aW9uXTogQWRkIG5ldyBwYXRoIFNwbGl0dGluZyBwYXNz IG9uCiB0cmVlIHNzYSByZXByZXNlbnRhdGlvbi4KCkFkZGVkIGEgbmV3IHBh c3Mgb24gcGF0aCBzcGxpdHRpbmcgb24gdHJlZSBTU0EgcmVwcmVzZW50YXRp b24uIFRoZSBwYXRoCnNwbGl0dGluZyBvcHRpbWl6YXRpb24gZG9lcyB0aGUg Q0ZHIHRyYW5zZm9ybWF0aW9uIG9mIGpvaW4gYmxvY2sgb2YgdGhlCmlmLXRo ZW4tZWxzZSBzYW1lIGFzIHRoZSBsb29wIGxhdGNoIG5vZGUgaXMgbW92ZWQg YW5kIG1lcmdlZCB3aXRoIHRoZQpwcmVkZWNlc3NvciBibG9ja3MgYWZ0ZXIg cHJlc2VydmluZyB0aGUgU1NBIHJlcHJlc2VudGF0aW9uLgoKQ2hhbmdlTG9n OgoyMDE1LTA4LTE1ICBBaml0IEFnYXJ3YWwgIDxhaml0a3VtQHhpbGlueC5j b20+CgoJKiBnY2MvTWFrZWZpbGUuaW46IEFkZCB0aGUgYnVpbGQgb2YgdGhl IG5ldyBmaWxlCgl0cmVlLXNzYS1wYXRoLXNwbGl0LmMKCSogZ2NjL2NvbW1v bi5vcHQgKGZ0cmVlLXBhdGgtc3BsaXQpOiBBZGQgdGhlIG5ldyBmbGFnLgoJ KiBnY2Mvb3B0cy5jIChPUFRfZnRyZWVfcGF0aF9zcGxpdCkgOiBBZGQgYW4g ZW50cnkgZm9yCglQYXRoIHNwbGl0dGluZyBwYXNzIHdpdGggb3B0aW1pemF0 aW9uIGZsYWcgZ3JlYXRlciBhbmQKCWVxdWFsIHRvIE8yLgoJKiBnY2MvcGFz c2VzLmRlZiAocGF0aF9zcGxpdCk6IGFkZCBuZXcgcGF0aCBzcGxpdHRpbmcg cGFzcy4KCSogZ2NjL3RpbWV2YXIuZGVmIChUVl9UUkVFX1BBVEhfU1BMSVQp OiBOZXcuCgkqIGdjYy90cmVlLXBhc3MuaCAobWFrZV9wYXNzX3BhdGhfc3Bs aXQpOiBOZXcgZGVjbGFyYXRpb24uCgkqIGdjYy90cmVlLXNzYS1wYXRoLXNw bGl0LmM6IE5ldy4KCSogZ2NjL3RyYWNlci5jICh0cmFuc2Zvcm1fZHVwbGlj YXRlKTogTmV3LgoJKiBnY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9w YXRoLXNwbGl0LTIuYzogTmV3LgoJKiBnY2MvdGVzdHN1aXRlL2djYy5kZy9w YXRoLXNwbGl0LTEuYzogTmV3LgoJKiBnY2MvZG9jL2ludm9rZS50ZXhpCgko ZnRyZWUtcGF0aC1zcGxpdCk6IERvY3VtZW50LgoJKGZkdW1wLXRyZWUtcGF0 aF9zcGxpdCk6IERvY3VtZW50LgoKU2lnbmVkLW9mZi1ieTpBaml0IEFnYXJ3 YWwgYWppdGt1bUB4aWxpbnguY29tCi0tLQogZ2NjL01ha2VmaWxlLmluICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZ2NjL2NvbW1v bi5vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKwog Z2NjL2RvYy9pbnZva2UudGV4aSAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMTYgKy0KIGdjYy9vcHRzLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIGdjYy9wYXNzZXMuZGVmICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGdjYy90ZXN0c3VpdGUvZ2Nj LmRnL3BhdGgtc3BsaXQtMS5jICAgICAgICAgIHwgIDY1ICsrKysrKwogZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcGF0aC1zcGxpdC0yLmMgfCAg NjAgKysrKysKIGdjYy90aW1ldmFyLmRlZiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIGdjYy90cmFjZXIuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDM3ICstLQogZ2NjL3RyZWUtcGFzcy5o ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZ2NjL3Ry ZWUtc3NhLXBhdGgtc3BsaXQuYyAgICAgICAgICAgICAgICAgICAgfCAzMzAg KysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxMSBmaWxlcyBjaGFuZ2Vk LCA1MDMgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcGF0aC1zcGxpdC0x LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy90 cmVlLXNzYS9wYXRoLXNwbGl0LTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90cmVlLXNzYS1wYXRoLXNwbGl0LmMKCmRpZmYgLS1naXQgYS9nY2MvTWFr ZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KaW5kZXggYzFjYjRjZS4uZjAx Zjg4NSAxMDA2NDQKLS0tIGEvZ2NjL01ha2VmaWxlLmluCisrKyBiL2djYy9N YWtlZmlsZS5pbgpAQCAtMTQ2NSw2ICsxNDY1LDcgQEAgT0JKUyA9IFwKIAl0 cmVlLXNzYS1sb29wLm8gXAogCXRyZWUtc3NhLW1hdGgtb3B0cy5vIFwKIAl0 cmVlLXNzYS1vcGVyYW5kcy5vIFwKKyAgICAgICAgdHJlZS1zc2EtcGF0aC1z cGxpdC5vIFwKIAl0cmVlLXNzYS1waGlvcHQubyBcCiAJdHJlZS1zc2EtcGhp cHJvcC5vIFwKIAl0cmVlLXNzYS1wcmUubyBcCmRpZmYgLS1naXQgYS9nY2Mv Y29tbW9uLm9wdCBiL2djYy9jb21tb24ub3B0CmluZGV4IGU4MGVhZGYuLjFk MDI1ODIgMTAwNjQ0Ci0tLSBhL2djYy9jb21tb24ub3B0CisrKyBiL2djYy9j b21tb24ub3B0CkBAIC0yMzc4LDYgKzIzNzgsMTAgQEAgZnRyZWUtdnJwCiBD b21tb24gUmVwb3J0IFZhcihmbGFnX3RyZWVfdnJwKSBJbml0KDApIE9wdGlt aXphdGlvbgogUGVyZm9ybSBWYWx1ZSBSYW5nZSBQcm9wYWdhdGlvbiBvbiB0 cmVlcwogCitmdHJlZS1wYXRoLXNwbGl0CitDb21tb24gUmVwb3J0IFZhcihm bGFnX3RyZWVfcGF0aF9zcGxpdCkgSW5pdCgwKSBPcHRpbWl6YXRpb24KK1Bl cmZvcm0gUGF0aCBTcGxpdHRpbmcKKwogZnVuaXQtYXQtYS10aW1lCiBDb21t b24gUmVwb3J0IFZhcihmbGFnX3VuaXRfYXRfYV90aW1lKSBJbml0KDEpCiBD b21waWxlIHdob2xlIGNvbXBpbGF0aW9uIHVuaXQgYXQgYSB0aW1lCmRpZmYg LS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2Uu dGV4aQppbmRleCBjMjZjZDg3Li5kY2UzMWU3IDEwMDY0NAotLS0gYS9nY2Mv ZG9jL2ludm9rZS50ZXhpCisrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKQEAg LTM1MCw2ICszNTAsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMr KyBEaWFsZWN0c30uCiAtZmR1bXAtdHJlZS1mcmVAcntbfS1AdmFye259QHJ7 XX0gQGdvbAogLWZkdW1wLXRyZWUtdnRhYmxlLXZlcmlmeSBAZ29sCiAtZmR1 bXAtdHJlZS12cnBAcntbfS1AdmFye259QHJ7XX0gQGdvbAorLWZkdW1wLXRy ZWUtcGF0aF9zcGxpdEBye1t9LUB2YXJ7bn1AcntdfSBAZ29sCiAtZmR1bXAt dHJlZS1zdG9yZWNjcEBye1t9LUB2YXJ7bn1AcntdfSBAZ29sCiAtZmR1bXAt ZmluYWwtaW5zbnM9QHZhcntmaWxlfSBAZ29sCiAtZmNvbXBhcmUtZGVidWdA cntbfT1AdmFye29wdHN9QHJ7XX0gIC1mY29tcGFyZS1kZWJ1Zy1zZWNvbmQg QGdvbApAQCAtNDU4LDcgKzQ1OSw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmpl Y3RpdmUtQysrIERpYWxlY3RzfS4KIC1mdHJlZS1wYXJhbGxlbGl6ZS1sb29w cz1AdmFye259IC1mdHJlZS1wcmUgLWZ0cmVlLXBhcnRpYWwtcHJlIC1mdHJl ZS1wdGEgQGdvbAogLWZ0cmVlLXJlYXNzb2MgLWZ0cmVlLXNpbmsgLWZ0cmVl LXNsc3IgLWZ0cmVlLXNyYSBAZ29sCiAtZnRyZWUtc3dpdGNoLWNvbnZlcnNp b24gLWZ0cmVlLXRhaWwtbWVyZ2UgLWZ0cmVlLXRlciBAZ29sCi0tZnRyZWUt dmVjdG9yaXplIC1mdHJlZS12cnAgQGdvbAorLWZ0cmVlLXZlY3Rvcml6ZSAt ZnRyZWUtdnJwIEBnb2wgLWZ0cmVlLXBhdGgtc3BsaXQgQGdvbAogLWZ1bml0 LWF0LWEtdGltZSAtZnVucm9sbC1hbGwtbG9vcHMgLWZ1bnJvbGwtbG9vcHMg QGdvbAogLWZ1bnNhZmUtbG9vcC1vcHRpbWl6YXRpb25zIC1mdW5zYWZlLW1h dGgtb3B0aW1pemF0aW9ucyAtZnVuc3dpdGNoLWxvb3BzIEBnb2wKIC1maXBh LXJhIC1mdmFyaWFibGUtZXhwYW5zaW9uLWluLXVucm9sbGVyIC1mdmVjdC1j b3N0LW1vZGVsIC1mdnB0IEBnb2wKQEAgLTcxNTgsNiArNzE1OSwxMSBAQCBp cyBtYWRlIGJ5IGFwcGVuZGluZyBAZmlsZXsuc2xwfSB0byB0aGUgc291cmNl IGZpbGUgbmFtZS4KIER1bXAgZWFjaCBmdW5jdGlvbiBhZnRlciBWYWx1ZSBS YW5nZSBQcm9wYWdhdGlvbiAoVlJQKS4gIFRoZSBmaWxlIG5hbWUKIGlzIG1h ZGUgYnkgYXBwZW5kaW5nIEBmaWxley52cnB9IHRvIHRoZSBzb3VyY2UgZmls ZSBuYW1lLgogCitAaXRlbSBwYXRoX3NwbGl0IAorQG9waW5kZXggZmR1bXAt dHJlZS1wYXRoX3NwbGl0CitEdW1wIGVhY2ggZnVuY3Rpb24gYWZ0ZXIgcGF0 aCBzcGxpdHRpbmcuICBUaGUgZmlsZSBuYW1lIGlzIG1hZGUgYnkgCithcHBl bmRpbmcgQGZpbGV7LnBhdGhfc3BsaXR9IHRvIHRoZSBzb3VyY2UgZmlsZSBu YW1lLgorCiBAaXRlbSBhbGwKIEBvcGluZGV4IGZkdW1wLXRyZWUtYWxsCiBF bmFibGUgYWxsIHRoZSBhdmFpbGFibGUgdHJlZSBkdW1wcyB3aXRoIHRoZSBm bGFncyBwcm92aWRlZCBpbiB0aGlzIG9wdGlvbi4KQEAgLTc2NjAsNiArNzY2 Niw3IEBAIGFsc28gdHVybnMgb24gdGhlIGZvbGxvd2luZyBvcHRpbWl6YXRp b24gZmxhZ3M6CiAtZnRyZWUtc3dpdGNoLWNvbnZlcnNpb24gLWZ0cmVlLXRh aWwtbWVyZ2UgQGdvbAogLWZ0cmVlLXByZSBAZ29sCiAtZnRyZWUtdnJwIEBn b2wKKy1mdHJlZS1wYXRoLXNwbGl0IEBnb2wKIC1maXBhLXJhfQogCiBQbGVh c2Ugbm90ZSB0aGUgd2FybmluZyB1bmRlciBAb3B0aW9uey1mZ2NzZX0gYWJv dXQKQEAgLTkwNjgsNiArOTA3NSwxMyBAQCBlbmFibGVkIGJ5IGRlZmF1bHQg YXQgQG9wdGlvbnstTzJ9IGFuZCBoaWdoZXIuICBOdWxsIHBvaW50ZXIgY2hl Y2sKIGVsaW1pbmF0aW9uIGlzIG9ubHkgZG9uZSBpZiBAb3B0aW9uey1mZGVs ZXRlLW51bGwtcG9pbnRlci1jaGVja3N9IGlzCiBlbmFibGVkLgogCitAaXRl bSAtZnRyZWUtcGF0aC1zcGxpdAorQG9waW5kZXggZnRyZWUtcGF0aC1zcGxp dAorUGVyZm9ybSBQYXRoIFNwbGl0dGluZyAgb24gdHJlZXMuICBUaGUgam9p biBibG9ja3Mgb2YgSUYtVEhFTi1FTFNFIHNhbWUKK2FzIGxvb3AgbGF0Y2gg bm9kZSBpcyBtb3ZlZCB0byBpdHMgcHJlZGVjZXNzb3IgYW5kIHRoZSBsb29w IGxhdGNoIG5vZGUKK3dpbGwgYmUgZm9yd2FyZGluZyBibG9jay4gIFRoaXMg aXMgZW5hYmxlZCBieSBkZWZhdWx0IGF0IEBvcHRpb257LU8yfSAKK2FuZCBo aWdoZXIuICAKKwogQGl0ZW0gLWZzcGxpdC1pdnMtaW4tdW5yb2xsZXIKIEBv cGluZGV4IGZzcGxpdC1pdnMtaW4tdW5yb2xsZXIKIEVuYWJsZXMgZXhwcmVz c2lvbiBvZiB2YWx1ZXMgb2YgaW5kdWN0aW9uIHZhcmlhYmxlcyBpbiBsYXRl ciBpdGVyYXRpb25zCmRpZmYgLS1naXQgYS9nY2Mvb3B0cy5jIGIvZ2NjL29w dHMuYwppbmRleCA0NjhhODAyLi5jOTJmOTRlIDEwMDY0NAotLS0gYS9nY2Mv b3B0cy5jCisrKyBiL2djYy9vcHRzLmMKQEAgLTUwNiw2ICs1MDYsNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGRlZmF1bHRfb3B0aW9ucyBkZWZhdWx0X29w dGlvbnNfdGFibGVbXSA9CiAgICAgeyBPUFRfTEVWRUxTXzJfUExVUywgT1BU X2Zpc29sYXRlX2Vycm9uZW91c19wYXRoc19kZXJlZmVyZW5jZSwgTlVMTCwg MSB9LAogICAgIHsgT1BUX0xFVkVMU18yX1BMVVMsIE9QVF9maXBhX3JhLCBO VUxMLCAxIH0sCiAgICAgeyBPUFRfTEVWRUxTXzJfUExVUywgT1BUX2ZscmFf cmVtYXQsIE5VTEwsIDEgfSwKKyAgICB7IE9QVF9MRVZFTFNfMl9QTFVTLCBP UFRfZnRyZWVfcGF0aF9zcGxpdCwgTlVMTCwgMSB9LAogCiAgICAgLyogLU8z IG9wdGltaXphdGlvbnMuICAqLwogICAgIHsgT1BUX0xFVkVMU18zX1BMVVMs IE9QVF9mdHJlZV9sb29wX2Rpc3RyaWJ1dGVfcGF0dGVybnMsIE5VTEwsIDEg fSwKZGlmZiAtLWdpdCBhL2djYy9wYXNzZXMuZGVmIGIvZ2NjL3Bhc3Nlcy5k ZWYKaW5kZXggNmI2NmY4Zi4uMjBkZGYzZCAxMDA2NDQKLS0tIGEvZ2NjL3Bh c3Nlcy5kZWYKKysrIGIvZ2NjL3Bhc3Nlcy5kZWYKQEAgLTgyLDYgKzgyLDcg QEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElm IG5vdCBzZWUKIAkgIE5FWFRfUEFTUyAocGFzc19jY3ApOwogCSAgLyogQWZ0 ZXIgQ0NQIHdlIHJld3JpdGUgbm8gbG9uZ2VyIGFkZHJlc3NlZCBsb2NhbHMg aW50byBTU0EKIAkgICAgIGZvcm0gaWYgcG9zc2libGUuICAqLworICAgICAg ICAgIE5FWFRfUEFTUyAocGFzc19wYXRoX3NwbGl0KTsKIAkgIE5FWFRfUEFT UyAocGFzc19mb3J3cHJvcCk7CiAJICBORVhUX1BBU1MgKHBhc3Nfc3JhX2Vh cmx5KTsKIAkgIC8qIHBhc3NfYnVpbGRfZWFsaWFzIGlzIGEgZHVtbXkgcGFz cyB0aGF0IGVuc3VyZXMgdGhhdCB3ZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvcGF0aC1zcGxpdC0xLmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy9wYXRoLXNwbGl0LTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4wNzVkYzg3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvcGF0aC1zcGxpdC0xLmMKQEAgLTAsMCArMSw2NSBA QAorLyogeyBkZy1kbyBydW4gfSAqLworLyogeyBkZy1vcHRpb25zICItTzIg IiB9ICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxp Yi5oPgorCisjZGVmaW5lIFJHQk1BWCAyNTUKKworaW50Cit0ZXN0KCkKK3sK KyAgaW50IGksIFBlbHM7CisgIHVuc2lnbmVkIGNoYXIgc3VtID0gMDsKKyAg dW5zaWduZWQgY2hhciB4ciwgeGcsIHhiOworICB1bnNpZ25lZCBjaGFyIHhj LCB4bSwgeHksIHhrOworICB1bnNpZ25lZCBjaGFyICpSZWFkUHRyLCAqRXJp dGVQdHI7CisKKyAgUmVhZFB0ciA9ICggdW5zaWduZWQgY2hhciAqKSBtYWxs b2MgKHNpemVvZiAodW5zaWduZWQgY2hhcikgKiAxMDApOworICBFcml0ZVB0 ciA9ICggdW5zaWduZWQgY2hhciAqKSBtYWxsb2MgKHNpemVvZiAodW5zaWdu ZWQgY2hhcikgKiAxMDApOworCisgIGZvciAoaSA9IDA7IGkgPCAxMDA7aSsr KQorICAgICB7CisgICAgICAgUmVhZFB0cltpXSA9IDEwMCAtIGk7CisgICAg IH0KKworICBmb3IgKGkgPSAwOyBpIDwgMTAwOyBpKyspCisgICAgIHsKKyAg ICAgICB4ciA9ICpSZWFkUHRyKys7CisgICAgICAgeGcgPSAqUmVhZFB0cisr OworICAgICAgIHhiID0gKlJlYWRQdHIrKzsKKworICAgICAgIHhjID0gKHVu c2lnbmVkIGNoYXIpIChSR0JNQVggLSB4cik7CisgICAgICAgeG0gPSAodW5z aWduZWQgY2hhcikgKFJHQk1BWCAtIHhnKTsKKyAgICAgICB4eSA9ICh1bnNp Z25lZCBjaGFyKSAoUkdCTUFYIC0geGIpOworCisgICAgICAgaWYgKHhjIDwg eG0pCisgICAgICAgICB7CisgICAgICAgICAgIHhrID0gKHVuc2lnbmVkIGNo YXIpICh4YyA8IHh5ID8geGMgOiB4eSk7CisgICAgICAgICB9CisgICAgICAg ZWxzZQorICAgICAgICB7CisgICAgICAgICAgeGsgPSAodW5zaWduZWQgY2hh cikgKHhtIDwgeHkgPyB4bSA6IHh5KTsKKyAgICAgICAgfQorCisgICAgICAg eGMgPSAodW5zaWduZWQgY2hhcikgKHhjIC0geGspOworICAgICAgIHhtID0g KHVuc2lnbmVkIGNoYXIpICh4bSAtIHhrKTsKKyAgICAgICB4eSA9ICh1bnNp Z25lZCBjaGFyKSAoeHkgLSB4ayk7CisKKyAgICAgICAqRXJpdGVQdHIrKyA9 IHhjOworICAgICAgICpFcml0ZVB0cisrID0geG07CisgICAgICAgKkVyaXRl UHRyKysgPSB4eTsKKyAgICAgICAqRXJpdGVQdHIrKyA9IHhrOworICAgICAg IHN1bSArPSAqRXJpdGVQdHI7CisgICAgfQorICByZXR1cm4gc3VtOworfQor CitpbnQKK21haW4oKQoreworICBpZiAodGVzdCgpICE9IDMzKQorICAgIGFi b3J0KCk7CisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy5kZy90cmVlLXNzYS9wYXRoLXNwbGl0LTIuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3BhdGgtc3BsaXQtMi5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3MjU3MGYKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9w YXRoLXNwbGl0LTIuYwpAQCAtMCwwICsxLDYwIEBACisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLWZkdW1wLXRyZWUt cGF0aF9zcGxpdCIgfSAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNs dWRlIDxzdGRsaWIuaD4KKworI2RlZmluZSBSR0JNQVggMjU1CisKK2ludAor dGVzdCgpCit7CisgIGludCBpLCBQZWxzOworICB1bnNpZ25lZCBjaGFyIHN1 bSA9IDA7CisgIHVuc2lnbmVkIGNoYXIgeHIsIHhnLCB4YjsKKyAgdW5zaWdu ZWQgY2hhciB4YywgeG0sIHh5LCB4azsKKyAgdW5zaWduZWQgY2hhciAqUmVh ZFB0ciwgKkVyaXRlUHRyOworCisgIFJlYWRQdHIgPSAodW5zaWduZWQgY2hh ciAqKSBtYWxsb2MgKHNpemVvZiAodW5zaWduZWQgY2hhcikgKiAxMDApOwor ICBFcml0ZVB0ciA9ICggdW5zaWduZWQgY2hhciAqKSBtYWxsb2MgKHNpemVv ZiAodW5zaWduZWQgY2hhcikgKiAxMDApOworCisgIGZvciAoaSA9IDA7IGkg PCAxMDA7aSsrKQorICAgICB7CisgICAgICAgUmVhZFB0cltpXSA9IDEwMCAt IGk7CisgICAgIH0KKworICBmb3IgKGkgPSAwOyBpIDwgMTAwOyBpKyspCisg ICAgIHsKKyAgICAgICB4ciA9ICpSZWFkUHRyKys7CisgICAgICAgeGcgPSAq UmVhZFB0cisrOworICAgICAgIHhiID0gKlJlYWRQdHIrKzsKKworICAgICAg IHhjID0gKCB1bnNpZ25lZCBjaGFyKSAoUkdCTUFYIC0geHIpOworICAgICAg IHhtID0gKCB1bnNpZ25lZCBjaGFyKSAoUkdCTUFYIC0geGcpOworICAgICAg IHh5ID0gKCB1bnNpZ25lZCBjaGFyKSAoUkdCTUFYIC0geGIpOworCisgICAg ICAgaWYgKHhjIDwgeG0pCisgICAgICAgICB7CisgICAgICAgICAgIHhrID0g KCB1bnNpZ25lZCBjaGFyKSAoeGMgPCB4eSA/IHhjIDogeHkpOworICAgICAg ICAgfQorICAgICAgIGVsc2UKKyAgICAgICAgIHsKKyAgICAgICAgICAgeGsg PSAoIHVuc2lnbmVkIGNoYXIpICh4bSA8IHh5ID8geG0gOiB4eSk7CisgICAg ICAgICB9CisKKyAgICAgICB4YyA9ICh1bnNpZ25lZCBjaGFyKSAoeGMgLSB4 ayk7CisgICAgICAgeG0gPSAodW5zaWduZWQgY2hhcikgKHhtIC0geGspOwor ICAgICAgIHh5ID0gKHVuc2lnbmVkIGNoYXIpICh4eSAtIHhrKTsKKworICAg ICAgICpFcml0ZVB0cisrID0geGM7CisgICAgICAgKkVyaXRlUHRyKysgPSB4 bTsKKyAgICAgICAqRXJpdGVQdHIrKyA9IHh5OworICAgICAgICpFcml0ZVB0 cisrID0geGs7CisgICAgICAgc3VtICs9ICpFcml0ZVB0cjsKKyAgICB9Cisg IHJldHVybiBzdW07Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcCAieGNfXFswLTlcXVxbMC05XF0qIC0+IHsgeGNfXFswLTlcXVxbMC05 XF0qIH0iICJwYXRoX3NwbGl0In0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wICJ4bV9cWzAtOVxdXFswLTlcXSogLT4geyB4bV9cWzAt OVxdXFswLTlcXSogfSIgInBhdGhfc3BsaXQifSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAgInh5X1xbMC05XF1cWzAtOVxdKiAtPiB7 IHh5X1xbMC05XF1cWzAtOVxdKiB9IiAicGF0aF9zcGxpdCJ9IH0gKi8KZGlm ZiAtLWdpdCBhL2djYy90aW1ldmFyLmRlZiBiL2djYy90aW1ldmFyLmRlZgpp bmRleCBhYzQxMDc1Li5mMmMxNDVlIDEwMDY0NAotLS0gYS9nY2MvdGltZXZh ci5kZWYKKysrIGIvZ2NjL3RpbWV2YXIuZGVmCkBAIC0yOTgsMyArMjk4LDQg QEAgREVGVElNRVZBUiAoVFZfTElOSwkJICAgICAsICJsaW5rIEpJVCBjb2Rl IikKIERFRlRJTUVWQVIgKFRWX0xPQUQJCSAgICAgLCAibG9hZCBKSVQgcmVz dWx0IikKIERFRlRJTUVWQVIgKFRWX0pJVF9BQ1FVSVJJTkdfTVVURVggICAs ICJhY3F1aXJpbmcgSklUIG11dGV4IikKIERFRlRJTUVWQVIgKFRWX0pJVF9D TElFTlRfQ09ERSAgICwgIkpJVCBjbGllbnQgY29kZSIpCitERUZUSU1FVkFS IChUVl9UUkVFX1BBVEhfU1BMSVQgICwgInRyZWUgcGF0aF9zcGxpdCIpCmRp ZmYgLS1naXQgYS9nY2MvdHJhY2VyLmMgYi9nY2MvdHJhY2VyLmMKaW5kZXgg Y2FkN2FiMS4uMjA2NjkyZiAxMDA2NDQKLS0tIGEvZ2NjL3RyYWNlci5jCisr KyBiL2djYy90cmFjZXIuYwpAQCAtNTgsMTEgKzU4LDEzIEBACiAjaW5jbHVk ZSAiZmlib25hY2NpX2hlYXAuaCIKIAogc3RhdGljIGludCBjb3VudF9pbnNu cyAoYmFzaWNfYmxvY2spOwotc3RhdGljIGJvb2wgaWdub3JlX2JiX3AgKGNv bnN0X2Jhc2ljX2Jsb2NrKTsKK2Jvb2wgaWdub3JlX2JiX3AgKGNvbnN0X2Jh c2ljX2Jsb2NrKTsKIHN0YXRpYyBib29sIGJldHRlcl9wIChjb25zdF9lZGdl LCBjb25zdF9lZGdlKTsKIHN0YXRpYyBlZGdlIGZpbmRfYmVzdF9zdWNjZXNz b3IgKGJhc2ljX2Jsb2NrKTsKIHN0YXRpYyBlZGdlIGZpbmRfYmVzdF9wcmVk ZWNlc3NvciAoYmFzaWNfYmxvY2spOwogc3RhdGljIGludCBmaW5kX3RyYWNl IChiYXNpY19ibG9jaywgYmFzaWNfYmxvY2sgKik7CitiYXNpY19ibG9jayB0 cmFuc2Zvcm1fZHVwbGljYXRlKGJhc2ljX2Jsb2NrIGJiLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBiYXNpY19ibG9jayAgYmIyKTsKIAog LyogTWluaW1hbCBvdXRnb2luZyBlZGdlIHByb2JhYmlsaXR5IGNvbnNpZGVy ZWQgZm9yIHN1cGVyYmxvY2sgZm9ybWF0aW9uLiAgKi8KIHN0YXRpYyBpbnQg cHJvYmFiaWxpdHlfY3V0b2ZmOwpAQCAtOTAsNyArOTIsNyBAQCBiYl9zZWVu X3AgKGJhc2ljX2Jsb2NrIGJiKQogfQogCiAvKiBSZXR1cm4gdHJ1ZSBpZiB3 ZSBzaG91bGQgaWdub3JlIHRoZSBiYXNpYyBibG9jayBmb3IgcHVycG9zZXMg b2YgdHJhY2luZy4gICovCi1zdGF0aWMgYm9vbAorYm9vbAogaWdub3JlX2Ji X3AgKGNvbnN0X2Jhc2ljX2Jsb2NrIGJiKQogewogICBnaW1wbGUgZzsKQEAg LTIyNCw2ICsyMjYsMjQgQEAgZmluZF90cmFjZSAoYmFzaWNfYmxvY2sgYmIs IGJhc2ljX2Jsb2NrICp0cmFjZSkKICAgcmV0dXJuIGk7CiB9CiAKKy8qIFRy YW5zZm9ybSB0aGUgYmxvY2sgdGhhdCBuZWVkcyB0byBiZSBkdXBsaWNhdGVk LiAgKi8KKworYmFzaWNfYmxvY2sKK3RyYW5zZm9ybV9kdXBsaWNhdGUoYmFz aWNfYmxvY2sgYmIsCisgICAgICAgICAgICAgICAgICAgIGJhc2ljX2Jsb2Nr ICBiYjIpCit7CisgIGVkZ2UgZTsKKyAgYmFzaWNfYmxvY2sgY29weTsKKwor ICBlID0gZmluZF9lZGdlIChiYiwgYmIyKTsKKworICBjb3B5ID0gZHVwbGlj YXRlX2Jsb2NrIChiYjIsIGUsIGJiKTsKKyAgZmx1c2hfcGVuZGluZ19zdG10 cyAoZSk7CisKKyAgYWRkX3BoaV9hcmdzX2FmdGVyX2NvcHkgKCZjb3B5LCAx LCBOVUxMKTsKKworICByZXR1cm4gKGNvcHkpOworfQogLyogTG9vayBmb3Ig YmFzaWMgYmxvY2tzIGluIGZyZXF1ZW5jeSBvcmRlciwgY29uc3RydWN0IHRy YWNlcyBhbmQgdGFpbCBkdXBsaWNhdGUKICAgIGlmIHByb2ZpdGFibGUuICAq LwogCkBAIC0zMTksMTcgKzMzOSw4IEBAIHRhaWxfZHVwbGljYXRlICh2b2lk KQogCQkgZW50cmllcyBvciBhdCBsZWFzdCByb3RhdGUgdGhlIGxvb3AuICAq LwogCSAgICAgICYmIGJiMi0+bG9vcF9mYXRoZXItPmhlYWRlciAhPSBiYjIp CiAJICAgIHsKLQkgICAgICBlZGdlIGU7Ci0JICAgICAgYmFzaWNfYmxvY2sg Y29weTsKLQotCSAgICAgIG5kdXBsaWNhdGVkICs9IGNvdW50cyBbYmIyLT5p bmRleF07Ci0KLQkgICAgICBlID0gZmluZF9lZGdlIChiYiwgYmIyKTsKLQot CSAgICAgIGNvcHkgPSBkdXBsaWNhdGVfYmxvY2sgKGJiMiwgZSwgYmIpOwot CSAgICAgIGZsdXNoX3BlbmRpbmdfc3RtdHMgKGUpOwotCi0JICAgICAgYWRk X3BoaV9hcmdzX2FmdGVyX2NvcHkgKCZjb3B5LCAxLCBOVUxMKTsKKyAgICAg ICAgICAgICAgbmR1cGxpY2F0ZWQgKz0gY291bnRzIFtiYjItPmluZGV4XTsK KyAgICAgICAgICAgICAgYmFzaWNfYmxvY2sgY29weSA9IHRyYW5zZm9ybV9k dXBsaWNhdGUgKGJiLGJiMik7CiAKIAkgICAgICAvKiBSZWNvbnNpZGVyIHRo ZSBvcmlnaW5hbCBjb3B5IG9mIGJsb2NrIHdlJ3ZlIGR1cGxpY2F0ZWQuCiAJ ICAgICAgICAgUmVtb3ZpbmcgdGhlIG1vc3QgY29tbW9uIHByZWRlY2Vzc29y IG1heSBtYWtlIGl0IHRvIGJlCmRpZmYgLS1naXQgYS9nY2MvdHJlZS1wYXNz LmggYi9nY2MvdHJlZS1wYXNzLmgKaW5kZXggN2I2NmExYy4uNmFmN2YwZCAx MDA2NDQKLS0tIGEvZ2NjL3RyZWUtcGFzcy5oCisrKyBiL2djYy90cmVlLXBh c3MuaApAQCAtMzgzLDYgKzM4Myw3IEBAIGV4dGVybiBnaW1wbGVfb3B0X3Bh c3MgKm1ha2VfcGFzc190cmVlX2xvb3BfZG9uZSAoZ2NjOjpjb250ZXh0ICpj dHh0KTsKIGV4dGVybiBnaW1wbGVfb3B0X3Bhc3MgKm1ha2VfcGFzc19jaCAo Z2NjOjpjb250ZXh0ICpjdHh0KTsKIGV4dGVybiBnaW1wbGVfb3B0X3Bhc3Mg Km1ha2VfcGFzc19jaF92ZWN0IChnY2M6OmNvbnRleHQgKmN0eHQpOwogZXh0 ZXJuIGdpbXBsZV9vcHRfcGFzcyAqbWFrZV9wYXNzX2NjcCAoZ2NjOjpjb250 ZXh0ICpjdHh0KTsKK2V4dGVybiBnaW1wbGVfb3B0X3Bhc3MgKm1ha2VfcGFz c19wYXRoX3NwbGl0IChnY2M6OmNvbnRleHQgKmN0eHQpOwogZXh0ZXJuIGdp bXBsZV9vcHRfcGFzcyAqbWFrZV9wYXNzX3BoaV9vbmx5X2Nwcm9wIChnY2M6 OmNvbnRleHQgKmN0eHQpOwogZXh0ZXJuIGdpbXBsZV9vcHRfcGFzcyAqbWFr ZV9wYXNzX2J1aWxkX3NzYSAoZ2NjOjpjb250ZXh0ICpjdHh0KTsKIGV4dGVy biBnaW1wbGVfb3B0X3Bhc3MgKm1ha2VfcGFzc19idWlsZF9hbGlhcyAoZ2Nj Ojpjb250ZXh0ICpjdHh0KTsKZGlmZiAtLWdpdCBhL2djYy90cmVlLXNzYS1w YXRoLXNwbGl0LmMgYi9nY2MvdHJlZS1zc2EtcGF0aC1zcGxpdC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZTRiODYKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdHJlZS1zc2EtcGF0aC1zcGxpdC5jCkBAIC0w LDAgKzEsMzMwIEBACisvKiBTdXBwb3J0IHJvdXRpbmVzIGZvciBQYXRoIFNw bGl0dGluZy4KKyAgIENvcHlyaWdodCAoQykgMjAxNSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKyAgIENvbnRyaWJ1dGVkIGJ5IEFqaXQgS3Vt YXIgQWdhcndhbCA8YWppdGt1bUB4aWxpbnguY29tPi4KKworIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIEdDQy4KKworIEdDQyBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCisg YW55IGxhdGVyIHZlcnNpb24uCisKK0dDQyBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKK0dOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKK1lvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCithbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAg SWYgbm90IHNlZQorPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInN5c3RlbS5o IgorI2luY2x1ZGUgImNvcmV0eXBlcy5oIgorI2luY2x1ZGUgImJhY2tlbmQu aCIKKyNpbmNsdWRlICJjZmdob29rcy5oIgorI2luY2x1ZGUgInRyZWUuaCIK KyNpbmNsdWRlICJnaW1wbGUuaCIKKyNpbmNsdWRlICJydGwuaCIKKyNpbmNs dWRlICJzc2EuaCIKKyNpbmNsdWRlICJmbGFncy5oIgorI2luY2x1ZGUgImFs aWFzLmgiCisjaW5jbHVkZSAiZm9sZC1jb25zdC5oIgorI2luY2x1ZGUgInN0 b3ItbGF5b3V0LmgiCisjaW5jbHVkZSAiY2FsbHMuaCIKKyNpbmNsdWRlICJj ZmdhbmFsLmgiCisjaW5jbHVkZSAiaW50ZXJuYWwtZm4uaCIKKyNpbmNsdWRl ICJnaW1wbGUtZm9sZC5oIgorI2luY2x1ZGUgInRyZWUtZWguaCIKKyNpbmNs dWRlICJnaW1wbGUtaXRlcmF0b3IuaCIKKyNpbmNsdWRlICJnaW1wbGUtd2Fs ay5oIgorI2luY2x1ZGUgInRyZWUtY2ZnLmgiCisjaW5jbHVkZSAidHJlZS1z c2EtbG9vcC1tYW5pcC5oIgorI2luY2x1ZGUgInRyZWUtc3NhLWxvb3Atbml0 ZXIuaCIKKyNpbmNsdWRlICJ0cmVlLXNzYS1sb29wLmgiCisjaW5jbHVkZSAi dHJlZS1pbnRvLXNzYS5oIgorI2luY2x1ZGUgInRyZWUtc3NhLmgiCisjaW5j bHVkZSAidHJlZS1wYXNzLmgiCisjaW5jbHVkZSAidHJlZS1kdW1wLmgiCisj aW5jbHVkZSAiZ2ltcGxlLXByZXR0eS1wcmludC5oIgorI2luY2x1ZGUgImRp YWdub3N0aWMtY29yZS5oIgorI2luY2x1ZGUgImludGwuaCIKKyNpbmNsdWRl ICJjZmdsb29wLmgiCisjaW5jbHVkZSAidHJlZS1zY2FsYXItZXZvbHV0aW9u LmgiCisjaW5jbHVkZSAidHJlZS1zc2EtcHJvcGFnYXRlLmgiCisjaW5jbHVk ZSAidHJlZS1jaHJlYy5oIgorI2luY2x1ZGUgImluc24tY29uZmlnLmgiCisj aW5jbHVkZSAiZXhwbWVkLmgiCisjaW5jbHVkZSAiZG9qdW1wLmgiCisjaW5j bHVkZSAiZXhwbG93LmgiCisjaW5jbHVkZSAiZW1pdC1ydGwuaCIKKyNpbmNs dWRlICJ2YXJhc20uaCIKKyNpbmNsdWRlICJzdG10LmgiCisjaW5jbHVkZSAi ZXhwci5oIgorI2luY2x1ZGUgImluc24tY29kZXMuaCIKKyNpbmNsdWRlICJv cHRhYnMuaCIKKyNpbmNsdWRlICJmaWJvbmFjY2lfaGVhcC5oIgorCitleHRl cm4gYmFzaWNfYmxvY2sgdHJhbnNmb3JtX2R1cGxpY2F0ZShiYXNpY19ibG9j ayBiYiwgYmFzaWNfYmxvY2sgIGJiMik7CitleHRlcm4gYm9vbCBpZ25vcmVf YmJfcCAoY29uc3RfYmFzaWNfYmxvY2sgYmIpOworCisvKiBUaGlzIGZ1bmN0 aW9uIGdldHMgdGhlIGpvaW4gYmxvY2tzIHNhbWUgYXMgdGhlIHNvdXJjZQor ICAgbm9kZSBvZiB0aGUgbG9vcCBsYXRjaCBub2RlcyBhbmQgZm9ybSB0aGUg dHJhY2Ugd2l0aAorICAgdGhlIGpvaW4gYmxvY2sgYW5kIGl0cyBwcmVkZWNl c3Nvci4gICovCisKK3N0YXRpYyBpbnQKK2ZpbmRfdHJhY2VfbG9vcF9sYXRj aF9zYW1lX2FzX2pvaW5fYmxrIChiYXNpY19ibG9jayBiYiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNpY19ibG9jayAq dHJhY2UpCit7CisgIHZlYzxiYXNpY19ibG9jaz4gYmJzOworICBiYXNpY19i bG9jayBiYjE7CisgIHVuc2lnbmVkIGludCBpOworICBlZGdlX2l0ZXJhdG9y IGVpOworICBlZGdlIGUxOworICBib29sIGZvdW5kID0gZmFsc2U7CisgIGlu dCBuID0gMDsKKworICBiYnMgPSBnZXRfYWxsX2RvbWluYXRlZF9ibG9ja3Mg KENESV9ET01JTkFUT1JTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJiICk7CisgIEZPUl9FQUNIX1ZFQ19FTFQgKGJicywgaSwgYmIx KQorICB7CisgICAgRk9SX0VBQ0hfRURHRSAoZTEsIGVpLCBiYi0+c3VjY3Mp CisgICAgeworICAgICAgaWYgKCBiYjEgPT0gZTEtPmRlc3QpCisgICAgICAg IHsKKyAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9 CisKKyAgICBpZiAoIWZvdW5kICYmIGJiMSAhPSBiYikKKyAgICAgIHsKKyAg ICAgICAgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgRk9SX0VBQ0hfRURHRSAo ZTEsIGVpLCBiYjEtPnN1Y2NzKQorICAgICAgICB7CisgICAgICAgICAgaWYg KGUxLT5mbGFncyAmIChFREdFX0RGU19CQUNLKSkKKyAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgdHJhY2VbMV0gPSBlMS0+c3JjOworICAgICAgICAg ICAgICBuKys7CisgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAg ICAgICAgIH0gIAorICAgICAgICB9CisKKyAgICAgICAgaWYgKGZvdW5kICYm IEVER0VfQ09VTlQoYmIxLT5wcmVkcykgPT0gMikKKyAgICAgICAgICB7Cisg ICAgICAgICAgICBGT1JfRUFDSF9FREdFIChlMSwgZWksIGJiMS0+cHJlZHMp CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGlmIChzaW5nbGVfc3Vj Y19wKGUxLT5zcmMpICYmCisgICAgICAgICAgICAgICAgICBzaW5nbGVfc3Vj Y19lZGdlIChlMS0+c3JjKS0+ZmxhZ3MgJiBFREdFX0ZBTExUSFJVKQorICAg ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICB0cmFjZVswXSA9 IGUxLT5zcmM7CisgICAgICAgICAgICAgICAgICAgbisrOworICAgICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBuOworICAgICAgICAgIH0KKyAg ICAgICB9CisgICB9CisgICByZXR1cm4gbjsKK30KKworLyogVGhpcyBmdW5j dGlvbiBwZXJmb3JtcyB0aGUgZmVhc2liaWxpdHkgdGVzdHMgZm9yIHBhdGgg c3BsaXR0aW5nCisgICB0byBwZXJmb3JtLiBSZXR1cm4gZmFsc2UgaWYgdGhl IGZlYXNpYmlsaXR5IGZvciBwYXRoIHNwbGl0dGluZworICAgaXMgbm90IGRv bmUgYW5kIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmVhc2JpbGl0eSBmb3IgcGF0 aCBzcGxpdHRpbmcKKyAgIGlzIGRvbmUuIEZvbGxvd2luZyBmZWFzaWJpbGl0 eSB0ZXN0cyBhcmUgcGVyZm9ybWVkLgorCisgICAxLiBSZXR1cm4gZmFsc2Ug aWYgdGhlIGpvaW4gYmxvY2sgaGFzIHJocyBjYXN0aW5nIGZvciBhc3NpZ24K KyAgICAgIGdpbXBsZSBzdGF0ZW1lbnRzLgorICAgMi4gSWYgdGhlIG51bWJl ciBvZiBwaGlzIGlzIGdyZWF0ZXIgdGhhbiAxIG9yIHRoZSBwaGkgbm9kZSBp bgorICAgICAgdGhlIGpvaW4gYmxvY2sgaGFzIHZpcnR1YWwgb3BlcmFuZCBy ZXR1cm4gZmFsc2UuCisgICAzLiBSZXR1cm4gdHJ1ZSBpZiB0aGUgbnVtYmVy IG9mIHNlcXVlbnRpYWwgc3RhdGVtZW50cyBpcworICAgICAgZ3JlYXRlciB0 aGFuIDIuCisgICA0LiBJZiB0aGUgcGhpIHJlc3VsdCBpbiB0aGUgcGhpIG5v ZGUgb2YgdGhlIGpvaW4gYmxvY2sgaXMgbm90CisgICAgICB1c2VkIGluc2lk ZSB0aGUgc2FtZSBqb2luIGJsb2NrIHJldHVybiBmYWxzZS4KKyAgIDcuIE90 aGVyd2lzZSByZXR1cm5zIHRydWUuICAqLworCitzdGF0aWMgYm9vbAoraXNf ZmVhc2libGVfdHJhY2UgKGJhc2ljX2Jsb2NrICp0cmFjZSkKK3sKKyAgaW50 IG51bV9zdG10ID0gMCwgbnVtX3BoaXMgPSAwOworICBnaW1wbGVfc3RtdF9p dGVyYXRvciBwc2ksIGdzaTsKKworICBmb3IgKGdzaSA9IGdzaV9zdGFydF9i YiAodHJhY2VbMV0pOyAhZ3NpX2VuZF9wIChnc2kpOyBnc2lfbmV4dCAoJmdz aSkpCisgICAgIHsKKyAgICAgICBnaW1wbGUgc3RtdCA9IGdzaV9zdG10IChn c2kpOworICAgICAgIGlmIChnaW1wbGVfYXNzaWduX2Nhc3RfcCAoc3RtdCkp CisgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICBpZiAoIWlzX2dp bXBsZV9kZWJ1ZyAoc3RtdCkpCisgICAgICAgICBudW1fc3RtdCsrOworICAg IH0KKworICAgaWYgKChudW1fc3RtdCA+IDEpKQorICAgICB7CisgICAgICAg Ym9vbCBmb3VuZF92aXJ0dWFsX3Jlc3VsdCA9IGZhbHNlOworCisgICAgICAg Zm9yIChwc2kgPSBnc2lfc3RhcnRfcGhpcyAodHJhY2VbMV0pOyAhZ3NpX2Vu ZF9wIChwc2kpOyApCisgICAgICAgICAgeworICAgICAgICAgICAgdXNlX29w ZXJhbmRfcCB1c2VfcDsKKyAgICAgICAgICAgIGltbV91c2VfaXRlcmF0b3Ig aXRlcjsKKyAgICAgICAgICAgIGdpbXBsZSBzdG10ID0gZ3NpX3N0bXQocHNp KTsKKworICAgICAgICAgICAgaWYgKCF2aXJ0dWFsX29wZXJhbmRfcCAoZ2lt cGxlX3BoaV9yZXN1bHQgKHN0bXQpKSkKKyAgICAgICAgICAgICAgbnVtX3Bo aXMrKzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgZm91bmRf dmlydHVhbF9yZXN1bHQgPSB0cnVlOworCisgICAgICAgICAgICAgRk9SX0VB Q0hfSU1NX1VTRV9GQVNUICh1c2VfcCwgaXRlciwgZ2ltcGxlX3BoaV9yZXN1 bHQgKHN0bXQpKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgIGdp bXBsZSB1c2Vfc3RtdCA9IFVTRV9TVE1UICh1c2VfcCk7CisKKyAgICAgICAg ICAgICAgIGlmIChnaW1wbGVfYmIgKHVzZV9zdG10KSAhPSB0cmFjZVsxXSkK KyAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICBnc2lfbmV4dCgmcHNpKTsKKyAgICAgICAgICB9 CisKKyAgICAgICAgaWYgKChudW1fcGhpcyA+MSkgfHwgZm91bmRfdmlydHVh bF9yZXN1bHQpCisgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg cmV0dXJuIHRydWU7CisgICAgfQorCisgIHJldHVybiBmYWxzZTsKK30KKwor LyogVGhpcyBpcyB0aGUgY29yZSBmdW5jdGlvbiB0byBwZXJmb3JtIHBhdGgg c3BsaXR0aW5nLiBUaGUgam9pbgorICAgc2FtZSBhcyB0aGUgc291cmNlIG9m IHRoZSBsb29wIGxhdGNoIG5vZGUgaXMgaWRlbnRpZmllZCBhbG9uZworICAg d2l0aCB0aGVpciBwcmVkZWNlc3NvcnMuIEJhc2VkIG9uIHRoZSBmZWFzaWJp bGl0eSB0ZXN0cyBmb3IKKyAgIHBhdGggc3BsaXR0aW5nIHRoZSBwYXRoIHNw bGl0dGluZyBpcyBwZXJmb3JtZWQgYnkgYWRkaW5nIHRoZQorICAgam9pbiBi bG9ja3MgaW50byB0aGUgcHJlZGVjZXNzb3JzIGFmdGVyIHByb3BhZ2F0aW5n IHRoZSBwaGkKKyAgIHJlc3VsdCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHBo aSBhcmd1bWVudHMgZm9yIHRoZSBwcmVkZWNlc3NvcnMuCisgICBUaGUgIHRy ZWUtY2ZnLWNsZWFudXAgd2lsbCBtZXJnZSB0aGUgYmxvY2tzIGluIHRoZSBw cmVkZWNlc3NvcnMKKyAgIHBhdGggYW5kIHRoZSB1cGRhdGUtc3NhIHdpbGwg dXBkYXRlIHRoZSBzc2EgcmVwcmVzZW50YXRpb24gYWZ0ZXIKKyAgIHRoZSBw YXRoIHNwbGl0dGluZyBpcyBwZXJmb3JtZWQuICAqLworCitzdGF0aWMgYm9v bAorcGVyZm9ybV9wYXRoX3NwbGl0dGluZyAoKQoreworICBib29sIGNoYW5n ZWQgPSBmYWxzZTsKKyAgYmFzaWNfYmxvY2sgdHJhY2VbMl0gPSB7TlVMTCxO VUxMfTsKKyAgYmFzaWNfYmxvY2sgYmI7CisgIGF1dG9fdmVjPGZpYm9uYWNj aV9ub2RlPGxvbmcsIGJhc2ljX2Jsb2NrX2RlZj4qPiBibG9ja3M7CisgIGJs b2Nrcy5zYWZlX2dyb3dfY2xlYXJlZCAobGFzdF9iYXNpY19ibG9ja19mb3Jf Zm4gKGNmdW4pKTsKKyAgZmlib25hY2NpX2hlYXA8bG9uZywgYmFzaWNfYmxv Y2tfZGVmPiBoZWFwIChMT05HX01JTik7CisgCisgIGluaXRpYWxpemVfb3Jp Z2luYWxfY29weV90YWJsZXMoKTsKKyAgY2FsY3VsYXRlX2RvbWluYW5jZV9p bmZvIChDRElfRE9NSU5BVE9SUyk7CisKKyAgRk9SX0VBQ0hfQkJfRk4gKGJi LCBjZnVuKQorICB7CisgICAgaWYgKCFpZ25vcmVfYmJfcCAoYmIpKQorICAg ICAgYmxvY2tzW2JiLT5pbmRleF0gPSBoZWFwLmluc2VydCAoLWJiLT5mcmVx dWVuY3ksIGJiKTsKKyAgfQorIAorICB3aGlsZSAoIWhlYXAuZW1wdHkoKSkK KyAgeworICAgIGJhc2ljX2Jsb2NrIGJiID0gaGVhcC5leHRyYWN0X21pbiAo KTsKKworICAgIGlmICghYmIpCisgICAgICBicmVhazsKKworICAgIGJsb2Nr c1tiYi0+aW5kZXhdID0gTlVMTDsKKyAgICBpZiAoaWdub3JlX2JiX3AgKGJi KSkKKyAgICAgICAgY29udGludWU7CisKKyAgICBnaW1wbGUgbGFzdCA9IGdz aV9zdG10IChnc2lfbGFzdF9iYiAoYmIpKTsKKworICAgIGlmIChsYXN0ICYm IGdpbXBsZV9jb2RlIChsYXN0KSAhPSBHSU1QTEVfQ09ORCkKKyAgICAgIGNv bnRpbnVlOworCisgICAgaW50IG4gPSBmaW5kX3RyYWNlX2xvb3BfbGF0Y2hf c2FtZV9hc19qb2luX2JsayAoYmIsIHRyYWNlKTsKKworICAgIGlmIChuID49 IDIgJiYgaXNfZmVhc2libGVfdHJhY2UgKHRyYWNlKSkKKyAgICAgIHsKKyAg ICAgICAgaWYgKGJsb2Nrc1t0cmFjZVswXS0+aW5kZXhdKQorICAgICAgICAg IHsKKyAgICAgICAgICAgIGhlYXAuZGVsZXRlX25vZGUgKGJsb2Nrc1t0cmFj ZVswXS0+aW5kZXhdKTsKKyAgICAgICAgICAgIGJsb2Nrc1t0cmFjZVswXS0+ aW5kZXhdID0gTlVMTDsKKyAgICAgICAgICB9CisgICAgICAgIGlmIChibG9j a3NbdHJhY2VbMV0tPmluZGV4XSkKKyAgICAgICAgICB7CisgICAgICAgICAg ICBoZWFwLmRlbGV0ZV9ub2RlIChibG9ja3NbdHJhY2VbMV0tPmluZGV4XSk7 CisgICAgICAgICAgICBibG9ja3NbdHJhY2VbMF0tPmluZGV4XSA9IE5VTEw7 CisgICAgICAgICAgfQorCisgICAgICAgIHRyYW5zZm9ybV9kdXBsaWNhdGUg KHRyYWNlWzBdLHRyYWNlWzFdKTsKKyAgICAgICAgcHJpbnRmKCJwYXRoIHNw bGl0dGluZyBzdWNjZXNzZnVsIFxuIik7CisgICAgICAgIGNoYW5nZWQgPSB0 cnVlOworICAgICB9CisgIH0KKyAKKyAgZnJlZV9vcmlnaW5hbF9jb3B5X3Rh YmxlcyAoKTsKKyAgcmV0dXJuIGNoYW5nZWQ7Cit9CisKK3N0YXRpYyB1bnNp Z25lZCBpbnQKK2V4ZWN1dGVfcGF0aF9zcGxpdCAodm9pZCkKK3sKKyAgYm9v bCBjaGFuZ2VkOworCisgIGlmIChuX2Jhc2ljX2Jsb2Nrc19mb3JfZm4gKGNm dW4pIDw9IE5VTV9GSVhFRF9CTE9DS1MgKyAxKQorICAgICAgcmV0dXJuIDA7 CisKKyAgbWFya19kZnNfYmFja19lZGdlcyAoKTsKKworICBjaGFuZ2VkID0g cGVyZm9ybV9wYXRoX3NwbGl0dGluZygpOworCisgIGlmIChjaGFuZ2VkKQor ICAgIHsKKyAgICAgICBmcmVlX2RvbWluYW5jZV9pbmZvIChDRElfRE9NSU5B VE9SUyk7CisgICAgICAgLyogSWYgd2UgY2hhbmdlZCB0aGUgQ0ZHIHNjaGVk dWxlIGxvb3BzIGZvciBmaXh1cCBieSBjbGVhbnVwX2NmZy4gICovCisgICAg ICAgaWYgKGN1cnJlbnRfbG9vcHMpCisgICAgICAgICBsb29wc19zdGF0ZV9z ZXQgKExPT1BTX05FRURfRklYVVApOworICAgIH0KKyAKKyAgcmV0dXJuIGNo YW5nZWQgPyBUT0RPX2NsZWFudXBfY2ZnIDogMDsKKworfQorCitzdGF0aWMg Ym9vbAorZ2F0ZV9wYXRoX3NwbGl0KHZvaWQpCit7CisgIHJldHVybiBmbGFn X3RyZWVfcGF0aF9zcGxpdCAhPSAwOworfQorCituYW1lc3BhY2UgeworCitj b25zdCBwYXNzX2RhdGEgcGFzc19kYXRhX3BhdGhfc3BsaXQgPQoreworICBH SU1QTEVfUEFTUywgLyogdHlwZSAqLworICAicGF0aF9zcGxpdCIsIC8qIG5h bWUgKi8KKyAgT1BUR1JPVVBfTk9ORSwgLyogb3B0aW5mb19mbGFncyAqLwor ICBUVl9UUkVFX1BBVEhfU1BMSVQsIC8qIHR2X2lkICovCisgIDAsIC8qIHBy b3BlcnRpZXNfcmVxdWlyZWQgKi8KKyAgMCwgLyogcHJvcGVydGllc19wcm92 aWRlZCAqLworICAwLCAvKiBwcm9wZXJ0aWVzX2Rlc3Ryb3llZCAqLworICAw LCAvKiB0b2RvX2ZsYWdzX3N0YXJ0ICovCisgIFRPRE9fdXBkYXRlX3NzYSwg LyogdG9kb19mbGFnc19maW5pc2ggKi8KK307CisKK2NsYXNzIHBhc3NfcGF0 aF9zcGxpdCA6IHB1YmxpYyBnaW1wbGVfb3B0X3Bhc3MKK3sKKyAgIHB1Ymxp YzoKKyAgICBwYXNzX3BhdGhfc3BsaXQgKGdjYzo6Y29udGV4dCAqY3R4dCkK KyAgICAgIDogZ2ltcGxlX29wdF9wYXNzIChwYXNzX2RhdGFfcGF0aF9zcGxp dCwgY3R4dCkKKyAgICB7fQorICAgLyogb3B0X3Bhc3MgbWV0aG9kczogKi8K KyAgIG9wdF9wYXNzICogY2xvbmUgKCkgeyByZXR1cm4gbmV3IHBhc3NfcGF0 aF9zcGxpdCAobV9jdHh0KTsgfQorICAgdmlydHVhbCBib29sIGdhdGUgKGZ1 bmN0aW9uICopIHsgcmV0dXJuIGdhdGVfcGF0aF9zcGxpdCAoKTsgfQorICAg dmlydHVhbCB1bnNpZ25lZCBpbnQgZXhlY3V0ZSAoZnVuY3Rpb24gKikgeyBy ZXR1cm4gZXhlY3V0ZV9wYXRoX3NwbGl0ICgpOyB9CisgCit9OyAvLyBjbGFz cyBwYXNzX3BhdGhfc3BsaXQKKworfSAvLyBhbm9uIG5hbWVzcGFjZQorCitn aW1wbGVfb3B0X3Bhc3MgKgorbWFrZV9wYXNzX3BhdGhfc3BsaXQgKGdjYzo6 Y29udGV4dCAqY3R4dCkKK3sKKyAgcmV0dXJuIG5ldyBwYXNzX3BhdGhfc3Bs aXQgKGN0eHQpOworfQotLSAKMS44LjIuMQoK --_002_37378DC5BCD0EE48BA4B082E0B55DFAA4295ADCBXAPPVEXMBX02xln_--