From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: 312 Newsgroups: gmane.emacs.devel Subject: etags missing tag for static prototypes in header file Date: Wed, 20 Jul 2016 07:22:43 +0800 (CST) Message-ID: <4ff1ba0e.d13.1560577f7b7.Coremail.moan1223@163.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_16640_1581173518.1468970563510" X-Trace: ger.gmane.org 1468981829 20371 80.91.229.3 (20 Jul 2016 02:30:29 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 20 Jul 2016 02:30:29 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Jul 20 04:30:17 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1bPhH6-0008FR-NX for ged-emacs-devel@m.gmane.org; Wed, 20 Jul 2016 04:30:17 +0200 Original-Received: from localhost ([::1]:60179 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bPhH0-0002Rj-Tz for ged-emacs-devel@m.gmane.org; Tue, 19 Jul 2016 22:30:10 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:53890) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bPeph-0000K7-5r for emacs-devel@gnu.org; Tue, 19 Jul 2016 19:53:50 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bPepc-0004Z8-Vm for emacs-devel@gnu.org; Tue, 19 Jul 2016 19:53:48 -0400 Original-Received: from mproxyhzb1.163.com ([123.58.178.201]:39975) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bPepb-0004XZ-1d for emacs-devel@gnu.org; Tue, 19 Jul 2016 19:53:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Date:From:Subject:MIME-Version:Message-ID; bh=JaEj1 Fh38rqauDmbiuUTJcPbJ/JOnaa2wDjdk4isBUs=; b=M5L1mlKRmmp6j68TdmLxt 1cykVLlkKGm2CCZrip2ajF9LBw51K9ng4LlsAJoodU7aUl/aKbHfnDUDtEgoQnA5 vny6aAjRol9mRsa7QcHOfVPVzEK/Tbl99TvTcx0lHP+Kb0RdIM9Twy0/N8aymE57 Kd2/4iXM8pwebdRGzJfT4A= Original-Received: from moan1223$163.com ( [61.164.212.228] ) by ajax-webmail-wmsvr110 (Coremail) ; Wed, 20 Jul 2016 07:22:43 +0800 (CST) X-Originating-IP: [61.164.212.228] X-Priority: 3 X-Mailer: Coremail Webmail Server Version SP_ntes V3.5 build 20160420(83524.8626) Copyright (c) 2002-2016 www.mailtech.cn 163com X-CM-CTRLDATA: nNzOAWZvb3Rlcl9odG09MTEzMDo1Ng== X-Coremail-Locale: zh_CN X-CM-TRANSID: bsGowEC5cEBDto5XK3IGAA--.43672W X-CM-SenderInfo: xprd0iqsstqiywtou0bp/xtbBygerolO+klDayQABs5 X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 123.58.178.201 X-Mailman-Approved-At: Tue, 19 Jul 2016 22:30:03 -0400 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:205856 Archived-At: ------=_Part_16640_1581173518.1468970563510 Content-Type: multipart/alternative; boundary="----=_Part_16642_490203633.1468970563511" ------=_Part_16642_490203633.1468970563511 Content-Type: text/plain; charset=GBK Content-Transfer-Encoding: base64 SGkgRXZlcnlvbmUsCgpJIGZvdW5kIGV0YWdzIGZhaWxzIHRvIGNyZWF0ZSBzb21lIHRhZ3MgZm9y IHN0YXRpYyBtZXRob2QgaW4gaGVhZGVyIGZpbGUuIElzIHRoaXMgYSBrbm93biBpc3N1ZS4KCmZv ciBleGFtcGxlOgoKZXRhZ3MgTmVzdGVkTmFtZVNwZWNpZmllci5oCgpsaW5lcyBiZXR3ZWVuIDEw MCBhbmQgMTYyIGlzIGlnbm9yZWQsIHRob3NlIGFyZSBhbGwgc3RhdGljIHByb3RvdHlwZS4KCkRv bqGvdCBrbm93IHdoeSB0aGlzIGhhcHBlbmVkLgoKTXkgZW1hY3MgdmVyc2lvbiBpcyAyNS4xLjUw CgpCZXN0IFJlZ2FyZHMKCkphY2tzb24gWmhlbmc= ------=_Part_16642_490203633.1468970563511 Content-Type: text/html; charset=GBK Content-Transfer-Encoding: base64 PGRpdiBzdHlsZT0ibGluZS1oZWlnaHQ6MS43O2NvbG9yOiMwMDAwMDA7Zm9udC1zaXplOjE0cHg7 Zm9udC1mYW1pbHk6QXJpYWwiPgoKCgoKCgoKPHAgY2xhc3M9InAxIj48c3BhbiBjbGFzcz0iczEi PkhpIEV2ZXJ5b25lLDwvc3Bhbj48L3A+CjxwIGNsYXNzPSJwMiI+PHNwYW4gc3R5bGU9ImxpbmUt aGVpZ2h0OiAxLjc7Ij5JIGZvdW5kIGV0YWdzIGZhaWxzIHRvIGNyZWF0ZSBzb21lIHRhZ3MgZm9y IHN0YXRpYyBtZXRob2QgaW4gaGVhZGVyIGZpbGUuIElzIHRoaXMgYSBrbm93biBpc3N1ZS48L3Nw YW4+PHNwYW4gY2xhc3M9InMxIj48L3NwYW4+PC9wPgo8cCBjbGFzcz0icDIiPjxzcGFuIHN0eWxl PSJsaW5lLWhlaWdodDogMS43OyI+Zm9yIGV4YW1wbGU6PC9zcGFuPjxzcGFuIGNsYXNzPSJzMSI+ PC9zcGFuPjwvcD4KPHAgY2xhc3M9InAyIj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6IDEuNzsi PmV0YWdzIE5lc3RlZE5hbWVTcGVjaWZpZXIuaDwvc3Bhbj48c3BhbiBjbGFzcz0iczEiPjwvc3Bh bj48L3A+PHAgY2xhc3M9InAyIj48c3BhbiBjbGFzcz0iczEiPjwvc3Bhbj48L3A+CjxwIGNsYXNz PSJwMiI+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0OiAxLjc7Ij5saW5lcyBiZXR3ZWVuIDEwMCBh bmQgMTYyIGlzIGlnbm9yZWQsIHRob3NlIGFyZSBhbGwgc3RhdGljIHByb3RvdHlwZS48L3NwYW4+ PHNwYW4gY2xhc3M9InMxIj48L3NwYW4+PC9wPgo8cCBjbGFzcz0icDIiPjxzcGFuIHN0eWxlPSJs aW5lLWhlaWdodDogMS43OyI+RG9uoa90IGtub3cgd2h5IHRoaXMgaGFwcGVuZWQuPC9zcGFuPjxz cGFuIGNsYXNzPSJzMSI+PC9zcGFuPjwvcD4KPHAgY2xhc3M9InAyIj48c3BhbiBzdHlsZT0ibGlu ZS1oZWlnaHQ6IDEuNzsiPk15IGVtYWNzIHZlcnNpb24gaXMgMjUuMS41MDwvc3Bhbj48c3BhbiBj bGFzcz0iczEiPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJwMiI+PHNwYW4gc3R5bGU9ImxpbmUtaGVp Z2h0OiAxLjc7Ij5CZXN0IFJlZ2FyZHM8L3NwYW4+PHNwYW4gY2xhc3M9InMxIj48L3NwYW4+PC9w PjxwIGNsYXNzPSJwMiI+PHNwYW4gY2xhc3M9InMxIj48L3NwYW4+PC9wPgo8cCBjbGFzcz0icDEi PjxzcGFuIGNsYXNzPSJzMSI+SmFja3NvbiBaaGVuZzwvc3Bhbj48L3A+PC9kaXY+PGJyPjxicj48 c3BhbiB0aXRsZT0ibmV0ZWFzZWZvb3RlciI+PHA+Jm5ic3A7PC9wPjwvc3Bhbj4= ------=_Part_16642_490203633.1468970563511-- ------=_Part_16640_1581173518.1468970563510 Content-Type: application/octet-stream; name="NestedNameSpecifier.h" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="NestedNameSpecifier.h" Ly89PT0tLS0gTmVzdGVkTmFtZVNwZWNpZmllci5oIC0gQysrIG5lc3RlZCBuYW1lIHNwZWNpZmll cnMgLS0tLS0qLSBDKysgLSotPT09Ly8KLy8KLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExW TSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQovLwovLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQg dW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLy8gTGljZW5zZS4g U2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgovLwovLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwov LwovLyAgVGhpcyBmaWxlIGRlZmluZXMgdGhlIE5lc3RlZE5hbWVTcGVjaWZpZXIgY2xhc3MsIHdo aWNoIHJlcHJlc2VudHMKLy8gIGEgQysrIG5lc3RlZC1uYW1lLXNwZWNpZmllci4KLy8KLy89PT0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tPT09Ly8KI2lmbmRlZiBMTFZNX0NMQU5HX0FTVF9ORVNURUROQU1FU1BFQ0lG SUVSX0gKI2RlZmluZSBMTFZNX0NMQU5HX0FTVF9ORVNURUROQU1FU1BFQ0lGSUVSX0gKCiNpbmNs dWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljLmgiCiNpbmNsdWRlICJsbHZtL0FEVC9Gb2xkaW5n U2V0LmgiCiNpbmNsdWRlICJsbHZtL0FEVC9Qb2ludGVySW50UGFpci5oIgojaW5jbHVkZSAibGx2 bS9TdXBwb3J0L0NvbXBpbGVyLmgiCgpuYW1lc3BhY2UgY2xhbmcgewoKY2xhc3MgQVNUQ29udGV4 dDsKY2xhc3MgQ1hYUmVjb3JkRGVjbDsKY2xhc3MgTmFtZXNwYWNlQWxpYXNEZWNsOwpjbGFzcyBO YW1lc3BhY2VEZWNsOwpjbGFzcyBJZGVudGlmaWVySW5mbzsKc3RydWN0IFByaW50aW5nUG9saWN5 OwpjbGFzcyBUeXBlOwpjbGFzcyBUeXBlTG9jOwpjbGFzcyBMYW5nT3B0aW9uczsKCi8vLyBcYnJp ZWYgUmVwcmVzZW50cyBhIEMrKyBuZXN0ZWQgbmFtZSBzcGVjaWZpZXIsIHN1Y2ggYXMKLy8vICJc OjpzdGQ6OnZlY3RvcjxpbnQ+OjoiLgovLy8KLy8vIEMrKyBuZXN0ZWQgbmFtZSBzcGVjaWZpZXJz IGFyZSB0aGUgcHJlZml4ZXMgdG8gcXVhbGlmaWVkCi8vLyBuYW1lc3BhY2VzLiBGb3IgZXhhbXBs ZSwgImZvbzo6IiBpbiAiZm9vOjp4IiBpcyBhIG5lc3RlZCBuYW1lCi8vLyBzcGVjaWZpZXIuIE5l c3RlZCBuYW1lIHNwZWNpZmllcnMgYXJlIG1hZGUgdXAgb2YgYSBzZXF1ZW5jZSBvZgovLy8gc3Bl Y2lmaWVycywgZWFjaCBvZiB3aGljaCBjYW4gYmUgYSBuYW1lc3BhY2UsIHR5cGUsIGlkZW50aWZp ZXIKLy8vIChmb3IgZGVwZW5kZW50IG5hbWVzKSwgZGVjbHR5cGUgc3BlY2lmaWVyLCBvciB0aGUg Z2xvYmFsIHNwZWNpZmllciAoJzo6JykuCi8vLyBUaGUgbGFzdCB0d28gc3BlY2lmaWVycyBjYW4g b25seSBhcHBlYXIgYXQgdGhlIHN0YXJ0IG9mIGEgCi8vLyBuZXN0ZWQtbmFtZXNwYWNlLXNwZWNp Zmllci4KY2xhc3MgTmVzdGVkTmFtZVNwZWNpZmllciA6IHB1YmxpYyBsbHZtOjpGb2xkaW5nU2V0 Tm9kZSB7CgogIC8vLyBcYnJpZWYgRW51bWVyYXRpb24gZGVzY3JpYmluZwogIGVudW0gU3RvcmVk U3BlY2lmaWVyS2luZCB7CiAgICBTdG9yZWRJZGVudGlmaWVyID0gMCwKICAgIFN0b3JlZERlY2wg PSAxLAogICAgU3RvcmVkVHlwZVNwZWMgPSAyLAogICAgU3RvcmVkVHlwZVNwZWNXaXRoVGVtcGxh dGUgPSAzCiAgfTsKCiAgLy8vIFxicmllZiBUaGUgbmVzdGVkIG5hbWUgc3BlY2lmaWVyIHRoYXQg cHJlY2VkZXMgdGhpcyBuZXN0ZWQgbmFtZQogIC8vLyBzcGVjaWZpZXIuCiAgLy8vCiAgLy8vIFRo ZSBwb2ludGVyIGlzIHRoZSBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIgdGhhdCBwcmVjZWRlcyB0aGlz CiAgLy8vIG9uZS4gVGhlIGludGVnZXIgc3RvcmVzIG9uZSBvZiB0aGUgZmlyc3QgZm91ciB2YWx1 ZXMgb2YgdHlwZQogIC8vLyBTcGVjaWZpZXJLaW5kLgogIGxsdm06OlBvaW50ZXJJbnRQYWlyPE5l c3RlZE5hbWVTcGVjaWZpZXIgKiwgMiwgU3RvcmVkU3BlY2lmaWVyS2luZD4gUHJlZml4OwoKICAv Ly8gXGJyaWVmIFRoZSBsYXN0IGNvbXBvbmVudCBpbiB0aGUgbmVzdGVkIG5hbWUgc3BlY2lmaWVy LCB3aGljaAogIC8vLyBjYW4gYmUgYW4gaWRlbnRpZmllciwgYSBkZWNsYXJhdGlvbiwgb3IgYSB0 eXBlLgogIC8vLwogIC8vLyBXaGVuIHRoZSBwb2ludGVyIGlzIE5VTEwsIHRoaXMgc3BlY2lmaWVy IHJlcHJlc2VudHMgdGhlIGdsb2JhbAogIC8vLyBzcGVjaWZpZXIgJzo6Jy4gT3RoZXJ3aXNlLCB0 aGUgcG9pbnRlciBpcyBvbmUgb2YKICAvLy8gSWRlbnRpZmllckluZm8qLCBOYW1lc3BhY2UqLCBv ciBUeXBlKiwgZGVwZW5kaW5nIG9uIHRoZSBraW5kIG9mCiAgLy8vIHNwZWNpZmllciBhcyBlbmNv ZGVkIHdpdGhpbiB0aGUgcHJlZml4LgogIHZvaWQqIFNwZWNpZmllcjsKCnB1YmxpYzoKICAvLy8g XGJyaWVmIFRoZSBraW5kIG9mIHNwZWNpZmllciB0aGF0IGNvbXBsZXRlcyB0aGlzIG5lc3RlZCBu YW1lCiAgLy8vIHNwZWNpZmllci4KICBlbnVtIFNwZWNpZmllcktpbmQgewogICAgLy8vIFxicmll ZiBBbiBpZGVudGlmaWVyLCBzdG9yZWQgYXMgYW4gSWRlbnRpZmllckluZm8qLgogICAgSWRlbnRp ZmllciwKICAgIC8vLyBcYnJpZWYgQSBuYW1lc3BhY2UsIHN0b3JlZCBhcyBhIE5hbWVzcGFjZURl Y2wqLgogICAgTmFtZXNwYWNlLAogICAgLy8vIFxicmllZiBBIG5hbWVzcGFjZSBhbGlhcywgc3Rv cmVkIGFzIGEgTmFtZXNwYWNlQWxpYXNEZWNsKi4KICAgIE5hbWVzcGFjZUFsaWFzLAogICAgLy8v IFxicmllZiBBIHR5cGUsIHN0b3JlZCBhcyBhIFR5cGUqLgogICAgVHlwZVNwZWMsCiAgICAvLy8g XGJyaWVmIEEgdHlwZSB0aGF0IHdhcyBwcmVjZWRlZCBieSB0aGUgJ3RlbXBsYXRlJyBrZXl3b3Jk LAogICAgLy8vIHN0b3JlZCBhcyBhIFR5cGUqLgogICAgVHlwZVNwZWNXaXRoVGVtcGxhdGUsCiAg ICAvLy8gXGJyaWVmIFRoZSBnbG9iYWwgc3BlY2lmaWVyICc6OicuIFRoZXJlIGlzIG5vIHN0b3Jl ZCB2YWx1ZS4KICAgIEdsb2JhbCwKICAgIC8vLyBcYnJpZWYgTWljcm9zb2Z0J3MgJ19fc3VwZXIn IHNwZWNpZmllciwgc3RvcmVkIGFzIGEgQ1hYUmVjb3JkRGVjbCogb2YKICAgIC8vLyB0aGUgY2xh c3MgaXQgYXBwZWFyZWQgaW4uCiAgICBTdXBlcgogIH07Cgpwcml2YXRlOgogIC8vLyBcYnJpZWYg QnVpbGRzIHRoZSBnbG9iYWwgc3BlY2lmaWVyLgogIE5lc3RlZE5hbWVTcGVjaWZpZXIoKQogICAg OiBQcmVmaXgobnVsbHB0ciwgU3RvcmVkSWRlbnRpZmllciksIFNwZWNpZmllcihudWxscHRyKSB7 fQoKICAvLy8gXGJyaWVmIENvcHkgY29uc3RydWN0b3IgdXNlZCBpbnRlcm5hbGx5IHRvIGNsb25l IG5lc3RlZCBuYW1lCiAgLy8vIHNwZWNpZmllcnMuCiAgTmVzdGVkTmFtZVNwZWNpZmllcihjb25z dCBOZXN0ZWROYW1lU3BlY2lmaWVyICZPdGhlcikKICAgIDogbGx2bTo6Rm9sZGluZ1NldE5vZGUo T3RoZXIpLCBQcmVmaXgoT3RoZXIuUHJlZml4KSwKICAgICAgU3BlY2lmaWVyKE90aGVyLlNwZWNp ZmllcikgewogIH0KCiAgdm9pZCBvcGVyYXRvcj0oY29uc3QgTmVzdGVkTmFtZVNwZWNpZmllciAm KSA9IGRlbGV0ZTsKCiAgLy8vIFxicmllZiBFaXRoZXIgZmluZCBvciBpbnNlcnQgdGhlIGdpdmVu IG5lc3RlZCBuYW1lIHNwZWNpZmllcgogIC8vLyBtb2NrdXAgaW4gdGhlIGdpdmVuIGNvbnRleHQu CiAgc3RhdGljIE5lc3RlZE5hbWVTcGVjaWZpZXIgKkZpbmRPckluc2VydChjb25zdCBBU1RDb250 ZXh0ICZDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgTmVzdGVkTmFtZVNwZWNpZmllciAmTW9ja3VwKTsKCnB1YmxpYzoKICAvLy8gXGJyaWVm IEJ1aWxkcyBhIHNwZWNpZmllciBjb21iaW5pbmcgYSBwcmVmaXggYW5kIGFuIGlkZW50aWZpZXIu CiAgLy8vCiAgLy8vIFRoZSBwcmVmaXggbXVzdCBiZSBkZXBlbmRlbnQsIHNpbmNlIG5lc3RlZCBu YW1lIHNwZWNpZmllcnMKICAvLy8gcmVmZXJlbmNpbmcgYW4gaWRlbnRpZmllciBhcmUgb25seSBw ZXJtaXR0ZWQgd2hlbiB0aGUgaWRlbnRpZmllcgogIC8vLyBjYW5ub3QgYmUgcmVzb2x2ZWQuCiAg c3RhdGljIE5lc3RlZE5hbWVTcGVjaWZpZXIgKkNyZWF0ZShjb25zdCBBU1RDb250ZXh0ICZDb250 ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmVzdGVkTmFtZVNwZWNp ZmllciAqUHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWRlbnRp ZmllckluZm8gKklJKTsKCiAgLy8vIFxicmllZiBCdWlsZHMgYSBuZXN0ZWQgbmFtZSBzcGVjaWZp ZXIgdGhhdCBuYW1lcyBhIG5hbWVzcGFjZS4KICBzdGF0aWMgTmVzdGVkTmFtZVNwZWNpZmllciAq Q3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOZXN0ZWROYW1lU3BlY2lmaWVyICpQcmVmaXgsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOYW1lc3BhY2VEZWNsICpOUyk7CgogIC8vLyBc YnJpZWYgQnVpbGRzIGEgbmVzdGVkIG5hbWUgc3BlY2lmaWVyIHRoYXQgbmFtZXMgYSBuYW1lc3Bh Y2UgYWxpYXMuCiAgc3RhdGljIE5lc3RlZE5hbWVTcGVjaWZpZXIgKkNyZWF0ZShjb25zdCBBU1RD b250ZXh0ICZDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmVz dGVkTmFtZVNwZWNpZmllciAqUHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTmFtZXNwYWNlQWxpYXNEZWNsICpBbGlhcyk7CgogIC8vLyBcYnJpZWYgQnVpbGRzIGEg bmVzdGVkIG5hbWUgc3BlY2lmaWVyIHRoYXQgbmFtZXMgYSB0eXBlLgogIHN0YXRpYyBOZXN0ZWRO YW1lU3BlY2lmaWVyICpDcmVhdGUoY29uc3QgQVNUQ29udGV4dCAmQ29udGV4dCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5lc3RlZE5hbWVTcGVjaWZpZXIgKlByZWZpeCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVGVtcGxhdGUsIGNvbnN0 IFR5cGUgKlQpOwoKICAvLy8gXGJyaWVmIEJ1aWxkcyBhIHNwZWNpZmllciB0aGF0IGNvbnNpc3Rz IG9mIGp1c3QgYW4gaWRlbnRpZmllci4KICAvLy8KICAvLy8gVGhlIG5lc3RlZC1uYW1lLXNwZWNp ZmllciBpcyBhc3N1bWVkIHRvIGJlIGRlcGVuZGVudCwgYnV0IGhhcyBubwogIC8vLyBwcmVmaXgg YmVjYXVzZSB0aGUgcHJlZml4IGlzIGltcGxpZWQgYnkgc29tZXRoaW5nIG91dHNpZGUgb2YgdGhl CiAgLy8vIG5lc3RlZCBuYW1lIHNwZWNpZmllciwgZS5nLiwgaW4gIngtPkJhc2U6OmYiLCB0aGUg IngiIGhhcyBhIGRlcGVuZGVudAogIC8vLyB0eXBlLgogIHN0YXRpYyBOZXN0ZWROYW1lU3BlY2lm aWVyICpDcmVhdGUoY29uc3QgQVNUQ29udGV4dCAmQ29udGV4dCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXJJbmZvICpJSSk7CgogIC8vLyBcYnJpZWYgUmV0 dXJucyB0aGUgbmVzdGVkIG5hbWUgc3BlY2lmaWVyIHJlcHJlc2VudGluZyB0aGUgZ2xvYmFsCiAg Ly8vIHNjb3BlLgogIHN0YXRpYyBOZXN0ZWROYW1lU3BlY2lmaWVyICpHbG9iYWxTcGVjaWZpZXIo Y29uc3QgQVNUQ29udGV4dCAmQ29udGV4dCk7CgogIC8vLyBcYnJpZWYgUmV0dXJucyB0aGUgbmVz dGVkIG5hbWUgc3BlY2lmaWVyIHJlcHJlc2VudGluZyB0aGUgX19zdXBlciBzY29wZQogIC8vLyBm b3IgdGhlIGdpdmVuIENYWFJlY29yZERlY2wuCiAgc3RhdGljIE5lc3RlZE5hbWVTcGVjaWZpZXIg KlN1cGVyU3BlY2lmaWVyKGNvbnN0IEFTVENvbnRleHQgJkNvbnRleHQsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENYWFJlY29yZERlY2wgKlJEKTsKCiAgLy8v IFxicmllZiBSZXR1cm4gdGhlIHByZWZpeCBvZiB0aGlzIG5lc3RlZCBuYW1lIHNwZWNpZmllci4K ICAvLy8KICAvLy8gVGhlIHByZWZpeCBjb250YWlucyBhbGwgb2YgdGhlIHBhcnRzIG9mIHRoZSBu ZXN0ZWQgbmFtZQogIC8vLyBzcGVjaWZpZXIgdGhhdCBwcmVjZWQgdGhpcyBjdXJyZW50IHNwZWNp Zmllci4gRm9yIGV4YW1wbGUsIGZvciBhCiAgLy8vIG5lc3RlZCBuYW1lIHNwZWNpZmllciB0aGF0 IHJlcHJlc2VudHMgImZvbzo6YmFyOjoiLCB0aGUgY3VycmVudAogIC8vLyBzcGVjaWZpZXIgd2ls bCBjb250YWluICJiYXI6OiIgYW5kIHRoZSBwcmVmaXggd2lsbCBjb250YWluCiAgLy8vICJmb286 OiIuCiAgTmVzdGVkTmFtZVNwZWNpZmllciAqZ2V0UHJlZml4KCkgY29uc3QgeyByZXR1cm4gUHJl Zml4LmdldFBvaW50ZXIoKTsgfQoKICAvLy8gXGJyaWVmIERldGVybWluZSB3aGF0IGtpbmQgb2Yg bmVzdGVkIG5hbWUgc3BlY2lmaWVyIGlzIHN0b3JlZC4KICBTcGVjaWZpZXJLaW5kIGdldEtpbmQo KSBjb25zdDsKCiAgLy8vIFxicmllZiBSZXRyaWV2ZSB0aGUgaWRlbnRpZmllciBzdG9yZWQgaW4g dGhpcyBuZXN0ZWQgbmFtZQogIC8vLyBzcGVjaWZpZXIuCiAgSWRlbnRpZmllckluZm8gKmdldEFz SWRlbnRpZmllcigpIGNvbnN0IHsKICAgIGlmIChQcmVmaXguZ2V0SW50KCkgPT0gU3RvcmVkSWRl bnRpZmllcikKICAgICAgcmV0dXJuIChJZGVudGlmaWVySW5mbyAqKVNwZWNpZmllcjsKCiAgICBy ZXR1cm4gbnVsbHB0cjsKICB9CgogIC8vLyBcYnJpZWYgUmV0cmlldmUgdGhlIG5hbWVzcGFjZSBz dG9yZWQgaW4gdGhpcyBuZXN0ZWQgbmFtZQogIC8vLyBzcGVjaWZpZXIuCiAgTmFtZXNwYWNlRGVj bCAqZ2V0QXNOYW1lc3BhY2UoKSBjb25zdDsKCiAgLy8vIFxicmllZiBSZXRyaWV2ZSB0aGUgbmFt ZXNwYWNlIGFsaWFzIHN0b3JlZCBpbiB0aGlzIG5lc3RlZCBuYW1lCiAgLy8vIHNwZWNpZmllci4K ICBOYW1lc3BhY2VBbGlhc0RlY2wgKmdldEFzTmFtZXNwYWNlQWxpYXMoKSBjb25zdDsKCiAgLy8v IFxicmllZiBSZXRyaWV2ZSB0aGUgcmVjb3JkIGRlY2xhcmF0aW9uIHN0b3JlZCBpbiB0aGlzIG5l c3RlZCBuYW1lCiAgLy8vIHNwZWNpZmllci4KICBDWFhSZWNvcmREZWNsICpnZXRBc1JlY29yZERl Y2woKSBjb25zdDsKCiAgLy8vIFxicmllZiBSZXRyaWV2ZSB0aGUgdHlwZSBzdG9yZWQgaW4gdGhp cyBuZXN0ZWQgbmFtZSBzcGVjaWZpZXIuCiAgY29uc3QgVHlwZSAqZ2V0QXNUeXBlKCkgY29uc3Qg ewogICAgaWYgKFByZWZpeC5nZXRJbnQoKSA9PSBTdG9yZWRUeXBlU3BlYyB8fAogICAgICAgIFBy ZWZpeC5nZXRJbnQoKSA9PSBTdG9yZWRUeXBlU3BlY1dpdGhUZW1wbGF0ZSkKICAgICAgcmV0dXJu IChjb25zdCBUeXBlICopU3BlY2lmaWVyOwoKICAgIHJldHVybiBudWxscHRyOwogIH0KCiAgLy8v IFxicmllZiBXaGV0aGVyIHRoaXMgbmVzdGVkIG5hbWUgc3BlY2lmaWVyIHJlZmVycyB0byBhIGRl cGVuZGVudAogIC8vLyB0eXBlIG9yIG5vdC4KICBib29sIGlzRGVwZW5kZW50KCkgY29uc3Q7Cgog IC8vLyBcYnJpZWYgV2hldGhlciB0aGlzIG5lc3RlZCBuYW1lIHNwZWNpZmllciBpbnZvbHZlcyBh IHRlbXBsYXRlCiAgLy8vIHBhcmFtZXRlci4KICBib29sIGlzSW5zdGFudGlhdGlvbkRlcGVuZGVu dCgpIGNvbnN0OwoKICAvLy8gXGJyaWVmIFdoZXRoZXIgdGhpcyBuZXN0ZWQtbmFtZS1zcGVjaWZp ZXIgY29udGFpbnMgYW4gdW5leHBhbmRlZAogIC8vLyBwYXJhbWV0ZXIgcGFjayAoZm9yIEMrKzEx IHZhcmlhZGljIHRlbXBsYXRlcykuCiAgYm9vbCBjb250YWluc1VuZXhwYW5kZWRQYXJhbWV0ZXJQ YWNrKCkgY29uc3Q7CgogIC8vLyBcYnJpZWYgUHJpbnQgdGhpcyBuZXN0ZWQgbmFtZSBzcGVjaWZp ZXIgdG8gdGhlIGdpdmVuIG91dHB1dAogIC8vLyBzdHJlYW0uCiAgdm9pZCBwcmludChyYXdfb3N0 cmVhbSAmT1MsIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3kpIGNvbnN0OwoKICB2b2lkIFBy b2ZpbGUobGx2bTo6Rm9sZGluZ1NldE5vZGVJRCAmSUQpIGNvbnN0IHsKICAgIElELkFkZFBvaW50 ZXIoUHJlZml4LmdldE9wYXF1ZVZhbHVlKCkpOwogICAgSUQuQWRkUG9pbnRlcihTcGVjaWZpZXIp OwogIH0KCiAgLy8vIFxicmllZiBEdW1wIHRoZSBuZXN0ZWQgbmFtZSBzcGVjaWZpZXIgdG8gc3Rh bmRhcmQgb3V0cHV0IHRvIGFpZAogIC8vLyBpbiBkZWJ1Z2dpbmcuCiAgdm9pZCBkdW1wKGNvbnN0 IExhbmdPcHRpb25zICZMTyk7Cn07CgovLy8gXGJyaWVmIEEgQysrIG5lc3RlZC1uYW1lLXNwZWNp ZmllciBhdWdtZW50ZWQgd2l0aCBzb3VyY2UgbG9jYXRpb24KLy8vIGluZm9ybWF0aW9uLgpjbGFz cyBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jIHsKICBOZXN0ZWROYW1lU3BlY2lmaWVyICpRdWFsaWZp ZXI7CiAgdm9pZCAqRGF0YTsKCiAgLy8vIFxicmllZiBEZXRlcm1pbmVzIHRoZSBkYXRhIGxlbmd0 aCBmb3IgdGhlIGxhc3QgY29tcG9uZW50IGluIHRoZQogIC8vLyBnaXZlbiBuZXN0ZWQtbmFtZS1z cGVjaWZpZXIuCiAgc3RhdGljIHVuc2lnbmVkIGdldExvY2FsRGF0YUxlbmd0aChOZXN0ZWROYW1l U3BlY2lmaWVyICpRdWFsaWZpZXIpOwoKICAvLy8gXGJyaWVmIERldGVybWluZXMgdGhlIGRhdGEg bGVuZ3RoIGZvciB0aGUgZW50aXJlCiAgLy8vIG5lc3RlZC1uYW1lLXNwZWNpZmllci4KICBzdGF0 aWMgdW5zaWduZWQgZ2V0RGF0YUxlbmd0aChOZXN0ZWROYW1lU3BlY2lmaWVyICpRdWFsaWZpZXIp OwoKcHVibGljOgogIC8vLyBcYnJpZWYgQ29uc3RydWN0IGFuIGVtcHR5IG5lc3RlZC1uYW1lLXNw ZWNpZmllci4KICBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jKCkgOiBRdWFsaWZpZXIobnVsbHB0ciks IERhdGEobnVsbHB0cikgeyB9CgogIC8vLyBcYnJpZWYgQ29uc3RydWN0IGEgbmVzdGVkLW5hbWUt c3BlY2lmaWVyIHdpdGggc291cmNlIGxvY2F0aW9uIGluZm9ybWF0aW9uCiAgLy8vIGZyb20KICBO ZXN0ZWROYW1lU3BlY2lmaWVyTG9jKE5lc3RlZE5hbWVTcGVjaWZpZXIgKlF1YWxpZmllciwgdm9p ZCAqRGF0YSkKICAgIDogUXVhbGlmaWVyKFF1YWxpZmllciksIERhdGEoRGF0YSkgeyB9CgogIC8v LyBcYnJpZWYgRXZhbHV0ZXMgdHJ1ZSB3aGVuIHRoaXMgbmVzdGVkLW5hbWUtc3BlY2lmaWVyIGxv Y2F0aW9uIGlzCiAgLy8vIG5vbi1lbXB0eS4KICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u c3QgeyByZXR1cm4gUXVhbGlmaWVyOyB9CgogIC8vLyBcYnJpZWYgRXZhbHV0ZXMgdHJ1ZSB3aGVu IHRoaXMgbmVzdGVkLW5hbWUtc3BlY2lmaWVyIGxvY2F0aW9uIGlzCiAgLy8vIGVtcHR5LgogIGJv b2wgaGFzUXVhbGlmaWVyKCkgY29uc3QgeyByZXR1cm4gUXVhbGlmaWVyOyB9CgogIC8vLyBcYnJp ZWYgUmV0cmlldmUgdGhlIG5lc3RlZC1uYW1lLXNwZWNpZmllciB0byB3aGljaCB0aGlzIGluc3Rh bmNlCiAgLy8vIHJlZmVycy4KICBOZXN0ZWROYW1lU3BlY2lmaWVyICpnZXROZXN0ZWROYW1lU3Bl Y2lmaWVyKCkgY29uc3QgewogICAgcmV0dXJuIFF1YWxpZmllcjsKICB9CgogIC8vLyBcYnJpZWYg UmV0cmlldmUgdGhlIG9wYXF1ZSBwb2ludGVyIHRoYXQgcmVmZXJzIHRvIHNvdXJjZS1sb2NhdGlv biBkYXRhLgogIHZvaWQgKmdldE9wYXF1ZURhdGEoKSBjb25zdCB7IHJldHVybiBEYXRhOyB9Cgog IC8vLyBcYnJpZWYgUmV0cmlldmUgdGhlIHNvdXJjZSByYW5nZSBjb3ZlcmluZyB0aGUgZW50aXJl dHkgb2YgdGhpcwogIC8vLyBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIuCiAgLy8vCiAgLy8vIEZvciBl eGFtcGxlLCBpZiB0aGlzIGluc3RhbmNlIHJlZmVycyB0byBhIG5lc3RlZC1uYW1lLXNwZWNpZmll cgogIC8vLyBcYyBcOjpzdGQ6OnZlY3RvcjxpbnQ+OjosIHRoZSByZXR1cm5lZCBzb3VyY2UgcmFu Z2Ugd291bGQgY292ZXIKICAvLy8gZnJvbSB0aGUgaW5pdGlhbCAnOjonIHRvIHRoZSBsYXN0ICc6 OicuCiAgU291cmNlUmFuZ2UgZ2V0U291cmNlUmFuZ2UoKSBjb25zdCBMTFZNX1JFQURPTkxZOwoK ICAvLy8gXGJyaWVmIFJldHJpZXZlIHRoZSBzb3VyY2UgcmFuZ2UgY292ZXJpbmcganVzdCB0aGUg bGFzdCBwYXJ0IG9mCiAgLy8vIHRoaXMgbmVzdGVkLW5hbWUtc3BlY2lmaWVyLCBub3QgaW5jbHVk aW5nIHRoZSBwcmVmaXguCiAgLy8vCiAgLy8vIEZvciBleGFtcGxlLCBpZiB0aGlzIGluc3RhbmNl IHJlZmVycyB0byBhIG5lc3RlZC1uYW1lLXNwZWNpZmllcgogIC8vLyBcYyBcOjpzdGQ6OnZlY3Rv cjxpbnQ+OjosIHRoZSByZXR1cm5lZCBzb3VyY2UgcmFuZ2Ugd291bGQgY292ZXIKICAvLy8gZnJv bSAidmVjdG9yIiB0byB0aGUgbGFzdCAnOjonLgogIFNvdXJjZVJhbmdlIGdldExvY2FsU291cmNl UmFuZ2UoKSBjb25zdDsKCiAgLy8vIFxicmllZiBSZXRyaWV2ZSB0aGUgbG9jYXRpb24gb2YgdGhl IGJlZ2lubmluZyBvZiB0aGlzCiAgLy8vIG5lc3RlZC1uYW1lLXNwZWNpZmllci4KICBTb3VyY2VM b2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IHsKICAgIHJldHVybiBnZXRTb3VyY2VSYW5nZSgp LmdldEJlZ2luKCk7CiAgfQoKICAvLy8gXGJyaWVmIFJldHJpZXZlIHRoZSBsb2NhdGlvbiBvZiB0 aGUgZW5kIG9mIHRoaXMKICAvLy8gbmVzdGVkLW5hbWUtc3BlY2lmaWVyLgogIFNvdXJjZUxvY2F0 aW9uIGdldEVuZExvYygpIGNvbnN0IHsKICAgIHJldHVybiBnZXRTb3VyY2VSYW5nZSgpLmdldEVu ZCgpOwogIH0KCiAgLy8vIFxicmllZiBSZXRyaWV2ZSB0aGUgbG9jYXRpb24gb2YgdGhlIGJlZ2lu bmluZyBvZiB0aGlzCiAgLy8vIGNvbXBvbmVudCBvZiB0aGUgbmVzdGVkLW5hbWUtc3BlY2lmaWVy LgogIFNvdXJjZUxvY2F0aW9uIGdldExvY2FsQmVnaW5Mb2MoKSBjb25zdCB7CiAgICByZXR1cm4g Z2V0TG9jYWxTb3VyY2VSYW5nZSgpLmdldEJlZ2luKCk7CiAgfQoKICAvLy8gXGJyaWVmIFJldHJp ZXZlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZW5kIG9mIHRoaXMgY29tcG9uZW50IG9mIHRoZQogIC8v LyBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIuCiAgU291cmNlTG9jYXRpb24gZ2V0TG9jYWxFbmRMb2Mo KSBjb25zdCB7CiAgICByZXR1cm4gZ2V0TG9jYWxTb3VyY2VSYW5nZSgpLmdldEVuZCgpOwogIH0K CiAgLy8vIFxicmllZiBSZXR1cm4gdGhlIHByZWZpeCBvZiB0aGlzIG5lc3RlZC1uYW1lLXNwZWNp Zmllci4KICAvLy8KICAvLy8gRm9yIGV4YW1wbGUsIGlmIHRoaXMgaW5zdGFuY2UgcmVmZXJzIHRv IGEgbmVzdGVkLW5hbWUtc3BlY2lmaWVyCiAgLy8vIFxjIFw6OnN0ZDo6dmVjdG9yPGludD46Oiwg dGhlIHByZWZpeCBpcyBcYyBcOjpzdGQ6Oi4gTm90ZSB0aGF0IHRoZQogIC8vLyByZXR1cm5lZCBw cmVmaXggbWF5IGJlIGVtcHR5LCBpZiB0aGlzIGlzIHRoZSBmaXJzdCBjb21wb25lbnQgb2YKICAv Ly8gdGhlIG5lc3RlZC1uYW1lLXNwZWNpZmllci4KICBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jIGdl dFByZWZpeCgpIGNvbnN0IHsKICAgIGlmICghUXVhbGlmaWVyKQogICAgICByZXR1cm4gKnRoaXM7 CgogICAgcmV0dXJuIE5lc3RlZE5hbWVTcGVjaWZpZXJMb2MoUXVhbGlmaWVyLT5nZXRQcmVmaXgo KSwgRGF0YSk7CiAgfQoKICAvLy8gXGJyaWVmIEZvciBhIG5lc3RlZC1uYW1lLXNwZWNpZmllciB0 aGF0IHJlZmVycyB0byBhIHR5cGUsCiAgLy8vIHJldHJpZXZlIHRoZSB0eXBlIHdpdGggc291cmNl LWxvY2F0aW9uIGluZm9ybWF0aW9uLgogIFR5cGVMb2MgZ2V0VHlwZUxvYygpIGNvbnN0OwoKICAv Ly8gXGJyaWVmIERldGVybWluZXMgdGhlIGRhdGEgbGVuZ3RoIGZvciB0aGUgZW50aXJlCiAgLy8v IG5lc3RlZC1uYW1lLXNwZWNpZmllci4KICB1bnNpZ25lZCBnZXREYXRhTGVuZ3RoKCkgY29uc3Qg eyByZXR1cm4gZ2V0RGF0YUxlbmd0aChRdWFsaWZpZXIpOyB9CgogIGZyaWVuZCBib29sIG9wZXJh dG9yPT0oTmVzdGVkTmFtZVNwZWNpZmllckxvYyBYLAogICAgICAgICAgICAgICAgICAgICAgICAg TmVzdGVkTmFtZVNwZWNpZmllckxvYyBZKSB7CiAgICByZXR1cm4gWC5RdWFsaWZpZXIgPT0gWS5R dWFsaWZpZXIgJiYgWC5EYXRhID09IFkuRGF0YTsKICB9CgogIGZyaWVuZCBib29sIG9wZXJhdG9y IT0oTmVzdGVkTmFtZVNwZWNpZmllckxvYyBYLAogICAgICAgICAgICAgICAgICAgICAgICAgTmVz dGVkTmFtZVNwZWNpZmllckxvYyBZKSB7CiAgICByZXR1cm4gIShYID09IFkpOwogIH0KfTsKCi8v LyBcYnJpZWYgQ2xhc3MgdGhhdCBhaWRzIGluIHRoZSBjb25zdHJ1Y3Rpb24gb2YgbmVzdGVkLW5h bWUtc3BlY2lmaWVycyBhbG9uZwovLy8gd2l0aCBzb3VyY2UtbG9jYXRpb24gaW5mb3JtYXRpb24g Zm9yIGFsbCBvZiB0aGUgY29tcG9uZW50cyBvZiB0aGUKLy8vIG5lc3RlZC1uYW1lLXNwZWNpZmll ci4KY2xhc3MgTmVzdGVkTmFtZVNwZWNpZmllckxvY0J1aWxkZXIgewogIC8vLyBcYnJpZWYgVGhl IGN1cnJlbnQgcmVwcmVzZW50YXRpb24gb2YgdGhlIG5lc3RlZC1uYW1lLXNwZWNpZmllciB3ZSdy ZQogIC8vLyBidWlsZGluZy4KICBOZXN0ZWROYW1lU3BlY2lmaWVyICpSZXByZXNlbnRhdGlvbjsK CiAgLy8vIFxicmllZiBCdWZmZXIgdXNlZCB0byBzdG9yZSBzb3VyY2UtbG9jYXRpb24gaW5mb3Jt YXRpb24gZm9yIHRoZQogIC8vLyBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIuCiAgLy8vCiAgLy8vIE5v dGUgdGhhdCB3ZSBleHBsaWNpdGx5IG1hbmFnZSB0aGUgYnVmZmVyIChyYXRoZXIgdGhhbiB1c2lu ZyBhCiAgLy8vIFNtYWxsVmVjdG9yKSBiZWNhdXNlIFxjIERlY2xhcmF0b3IgZXhwZWN0cyBpdCB0 byBiZSBwb3NzaWJsZSB0byBtZW1jcHkoKQogIC8vLyBhIFxjIENYWFNjb3BlU3BlYywgYW5kIENY WFNjb3BlU3BlYyB1c2VzIGEgTmVzdGVkTmFtZVNwZWNpZmllckxvY0J1aWxkZXIuCiAgY2hhciAq QnVmZmVyOwoKICAvLy8gXGJyaWVmIFRoZSBzaXplIG9mIHRoZSBidWZmZXIgdXNlZCB0byBzdG9y ZSBzb3VyY2UtbG9jYXRpb24gaW5mb3JtYXRpb24KICAvLy8gZm9yIHRoZSBuZXN0ZWQtbmFtZS1z cGVjaWZpZXIuCiAgdW5zaWduZWQgQnVmZmVyU2l6ZTsKCiAgLy8vIFxicmllZiBUaGUgY2FwYWNp dHkgb2YgdGhlIGJ1ZmZlciB1c2VkIHRvIHN0b3JlIHNvdXJjZS1sb2NhdGlvbgogIC8vLyBpbmZv cm1hdGlvbiBmb3IgdGhlIG5lc3RlZC1uYW1lLXNwZWNpZmllci4KICB1bnNpZ25lZCBCdWZmZXJD YXBhY2l0eTsKCnB1YmxpYzoKICBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jQnVpbGRlcigpCiAgICA6 IFJlcHJlc2VudGF0aW9uKG51bGxwdHIpLCBCdWZmZXIobnVsbHB0ciksIEJ1ZmZlclNpemUoMCks CiAgICAgIEJ1ZmZlckNhcGFjaXR5KDApIHt9CgogIE5lc3RlZE5hbWVTcGVjaWZpZXJMb2NCdWls ZGVyKGNvbnN0IE5lc3RlZE5hbWVTcGVjaWZpZXJMb2NCdWlsZGVyICZPdGhlcik7CgogIE5lc3Rl ZE5hbWVTcGVjaWZpZXJMb2NCdWlsZGVyICYKICBvcGVyYXRvcj0oY29uc3QgTmVzdGVkTmFtZVNw ZWNpZmllckxvY0J1aWxkZXIgJk90aGVyKTsKCiAgfk5lc3RlZE5hbWVTcGVjaWZpZXJMb2NCdWls ZGVyKCkgewogICAgaWYgKEJ1ZmZlckNhcGFjaXR5KQogICAgICBmcmVlKEJ1ZmZlcik7CiAgfQoK ICAvLy8gXGJyaWVmIFJldHJpZXZlIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbmVzdGVkLW5h bWUtc3BlY2lmaWVyLgogIE5lc3RlZE5hbWVTcGVjaWZpZXIgKmdldFJlcHJlc2VudGF0aW9uKCkg Y29uc3QgeyByZXR1cm4gUmVwcmVzZW50YXRpb247IH0KCiAgLy8vIFxicmllZiBFeHRlbmQgdGhl IGN1cnJlbnQgbmVzdGVkLW5hbWUtc3BlY2lmaWVyIGJ5IGFub3RoZXIKICAvLy8gbmVzdGVkLW5h bWUtc3BlY2lmaWVyIGNvbXBvbmVudCBvZiB0aGUgZm9ybSAndHlwZTo6Jy4KICAvLy8KICAvLy8g XHBhcmFtIENvbnRleHQgVGhlIEFTVCBjb250ZXh0IGluIHdoaWNoIHRoaXMgbmVzdGVkLW5hbWUt c3BlY2lmaWVyCiAgLy8vIHJlc2lkZXMuCiAgLy8vCiAgLy8vIFxwYXJhbSBUZW1wbGF0ZUtXTG9j IFRoZSBsb2NhdGlvbiBvZiB0aGUgJ3RlbXBsYXRlJyBrZXl3b3JkLCBpZiBwcmVzZW50LgogIC8v LwogIC8vLyBccGFyYW0gVEwgVGhlIFR5cGVMb2MgdGhhdCBkZXNjcmliZXMgdGhlIHR5cGUgcHJl Y2VkaW5nIHRoZSAnOjonLgogIC8vLwogIC8vLyBccGFyYW0gQ29sb25Db2xvbkxvYyBUaGUgbG9j YXRpb24gb2YgdGhlIHRyYWlsaW5nICc6OicuCiAgdm9pZCBFeHRlbmQoQVNUQ29udGV4dCAmQ29u dGV4dCwgU291cmNlTG9jYXRpb24gVGVtcGxhdGVLV0xvYywgVHlwZUxvYyBUTCwKICAgICAgICAg ICAgICBTb3VyY2VMb2NhdGlvbiBDb2xvbkNvbG9uTG9jKTsKCiAgLy8vIFxicmllZiBFeHRlbmQg dGhlIGN1cnJlbnQgbmVzdGVkLW5hbWUtc3BlY2lmaWVyIGJ5IGFub3RoZXIKICAvLy8gbmVzdGVk LW5hbWUtc3BlY2lmaWVyIGNvbXBvbmVudCBvZiB0aGUgZm9ybSAnaWRlbnRpZmllcjo6Jy4KICAv Ly8KICAvLy8gXHBhcmFtIENvbnRleHQgVGhlIEFTVCBjb250ZXh0IGluIHdoaWNoIHRoaXMgbmVz dGVkLW5hbWUtc3BlY2lmaWVyCiAgLy8vIHJlc2lkZXMuCiAgLy8vCiAgLy8vIFxwYXJhbSBJZGVu dGlmaWVyIFRoZSBpZGVudGlmaWVyLgogIC8vLwogIC8vLyBccGFyYW0gSWRlbnRpZmllckxvYyBU aGUgbG9jYXRpb24gb2YgdGhlIGlkZW50aWZpZXIuCiAgLy8vCiAgLy8vIFxwYXJhbSBDb2xvbkNv bG9uTG9jIFRoZSBsb2NhdGlvbiBvZiB0aGUgdHJhaWxpbmcgJzo6Jy4KICB2b2lkIEV4dGVuZChB U1RDb250ZXh0ICZDb250ZXh0LCBJZGVudGlmaWVySW5mbyAqSWRlbnRpZmllciwKICAgICAgICAg ICAgICBTb3VyY2VMb2NhdGlvbiBJZGVudGlmaWVyTG9jLCBTb3VyY2VMb2NhdGlvbiBDb2xvbkNv bG9uTG9jKTsKCiAgLy8vIFxicmllZiBFeHRlbmQgdGhlIGN1cnJlbnQgbmVzdGVkLW5hbWUtc3Bl Y2lmaWVyIGJ5IGFub3RoZXIKICAvLy8gbmVzdGVkLW5hbWUtc3BlY2lmaWVyIGNvbXBvbmVudCBv ZiB0aGUgZm9ybSAnbmFtZXNwYWNlOjonLgogIC8vLwogIC8vLyBccGFyYW0gQ29udGV4dCBUaGUg QVNUIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIKICAvLy8gcmVz aWRlcy4KICAvLy8KICAvLy8gXHBhcmFtIE5hbWVzcGFjZSBUaGUgbmFtZXNwYWNlLgogIC8vLwog IC8vLyBccGFyYW0gTmFtZXNwYWNlTG9jIFRoZSBsb2NhdGlvbiBvZiB0aGUgbmFtZXNwYWNlIG5h bWUuCiAgLy8vCiAgLy8vIFxwYXJhbSBDb2xvbkNvbG9uTG9jIFRoZSBsb2NhdGlvbiBvZiB0aGUg dHJhaWxpbmcgJzo6Jy4KICB2b2lkIEV4dGVuZChBU1RDb250ZXh0ICZDb250ZXh0LCBOYW1lc3Bh Y2VEZWNsICpOYW1lc3BhY2UsCiAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gTmFtZXNwYWNl TG9jLCBTb3VyY2VMb2NhdGlvbiBDb2xvbkNvbG9uTG9jKTsKCiAgLy8vIFxicmllZiBFeHRlbmQg dGhlIGN1cnJlbnQgbmVzdGVkLW5hbWUtc3BlY2lmaWVyIGJ5IGFub3RoZXIKICAvLy8gbmVzdGVk LW5hbWUtc3BlY2lmaWVyIGNvbXBvbmVudCBvZiB0aGUgZm9ybSAnbmFtZXNwYWNlLWFsaWFzOjon LgogIC8vLwogIC8vLyBccGFyYW0gQ29udGV4dCBUaGUgQVNUIGNvbnRleHQgaW4gd2hpY2ggdGhp cyBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIKICAvLy8gcmVzaWRlcy4KICAvLy8KICAvLy8gXHBhcmFt IEFsaWFzIFRoZSBuYW1lc3BhY2UgYWxpYXMuCiAgLy8vCiAgLy8vIFxwYXJhbSBBbGlhc0xvYyBU aGUgbG9jYXRpb24gb2YgdGhlIG5hbWVzcGFjZSBhbGlhcwogIC8vLyBuYW1lLgogIC8vLwogIC8v LyBccGFyYW0gQ29sb25Db2xvbkxvYyBUaGUgbG9jYXRpb24gb2YgdGhlIHRyYWlsaW5nICc6Oicu CiAgdm9pZCBFeHRlbmQoQVNUQ29udGV4dCAmQ29udGV4dCwgTmFtZXNwYWNlQWxpYXNEZWNsICpB bGlhcywKICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBBbGlhc0xvYywgU291cmNlTG9jYXRp b24gQ29sb25Db2xvbkxvYyk7CgogIC8vLyBcYnJpZWYgVHVybiB0aGlzIChlbXB0eSkgbmVzdGVk LW5hbWUtc3BlY2lmaWVyIGludG8gdGhlIGdsb2JhbAogIC8vLyBuZXN0ZWQtbmFtZS1zcGVjaWZp ZXIgJzo6Jy4KICB2b2lkIE1ha2VHbG9iYWwoQVNUQ29udGV4dCAmQ29udGV4dCwgU291cmNlTG9j YXRpb24gQ29sb25Db2xvbkxvYyk7CiAgCiAgLy8vIFxicmllZiBUdXJucyB0aGlzIChlbXB0eSkg bmVzdGVkLW5hbWUtc3BlY2lmaWVyIGludG8gJ19fc3VwZXInCiAgLy8vIG5lc3RlZC1uYW1lLXNw ZWNpZmllci4KICAvLy8KICAvLy8gXHBhcmFtIENvbnRleHQgVGhlIEFTVCBjb250ZXh0IGluIHdo aWNoIHRoaXMgbmVzdGVkLW5hbWUtc3BlY2lmaWVyCiAgLy8vIHJlc2lkZXMuCiAgLy8vCiAgLy8v IFxwYXJhbSBSRCBUaGUgZGVjbGFyYXRpb24gb2YgdGhlIGNsYXNzIGluIHdoaWNoIG5lc3RlZC1u YW1lLXNwZWNpZmllcgogIC8vLyBhcHBlYXJlZC4KICAvLy8KICAvLy8gXHBhcmFtIFN1cGVyTG9j IFRoZSBsb2NhdGlvbiBvZiB0aGUgJ19fc3VwZXInIGtleXdvcmQuCiAgLy8vIG5hbWUuCiAgLy8v CiAgLy8vIFxwYXJhbSBDb2xvbkNvbG9uTG9jIFRoZSBsb2NhdGlvbiBvZiB0aGUgdHJhaWxpbmcg Jzo6Jy4KICB2b2lkIE1ha2VTdXBlcihBU1RDb250ZXh0ICZDb250ZXh0LCBDWFhSZWNvcmREZWNs ICpSRCwgCiAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gU3VwZXJMb2MsIFNvdXJjZUxv Y2F0aW9uIENvbG9uQ29sb25Mb2MpOwogIC8vLyBcYnJpZWYgTWFrZSBhIG5ldyBuZXN0ZWQtbmFt ZS1zcGVjaWZpZXIgZnJvbSBpbmNvbXBsZXRlIHNvdXJjZS1sb2NhdGlvbgogIC8vLyBpbmZvcm1h dGlvbi4KICAvLy8KICAvLy8gVGhpcyByb3V0aW5lIHNob3VsZCBiZSB1c2VkIHZlcnksIHZlcnkg cmFyZWx5LCBpbiBjYXNlcyB3aGVyZSB3ZQogIC8vLyBuZWVkIHRvIHN5bnRoZXNpemUgYSBuZXN0 ZWQtbmFtZS1zcGVjaWZpZXIuIE1vc3QgY29kZSBzaG91bGQgaW5zdGVhZCB1c2UKICAvLy8gXGMg QWRvcHQoKSB3aXRoIGEgcHJvcGVyIFxjIE5lc3RlZE5hbWVTcGVjaWZpZXJMb2MuCiAgdm9pZCBN YWtlVHJpdmlhbChBU1RDb250ZXh0ICZDb250ZXh0LCBOZXN0ZWROYW1lU3BlY2lmaWVyICpRdWFs aWZpZXIsCiAgICAgICAgICAgICAgICAgICBTb3VyY2VSYW5nZSBSKTsKCiAgLy8vIFxicmllZiBB ZG9wdCBhbiBleGlzdGluZyBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIgKHdpdGggc291cmNlLXJhbmdl CiAgLy8vIGluZm9ybWF0aW9uKS4KICB2b2lkIEFkb3B0KE5lc3RlZE5hbWVTcGVjaWZpZXJMb2Mg T3RoZXIpOwoKICAvLy8gXGJyaWVmIFJldHJpZXZlIHRoZSBzb3VyY2UgcmFuZ2UgY292ZXJlZCBi eSB0aGlzIG5lc3RlZC1uYW1lLXNwZWNpZmllci4KICBTb3VyY2VSYW5nZSBnZXRTb3VyY2VSYW5n ZSgpIGNvbnN0IExMVk1fUkVBRE9OTFkgewogICAgcmV0dXJuIE5lc3RlZE5hbWVTcGVjaWZpZXJM b2MoUmVwcmVzZW50YXRpb24sIEJ1ZmZlcikuZ2V0U291cmNlUmFuZ2UoKTsKICB9CgogIC8vLyBc YnJpZWYgUmV0cmlldmUgYSBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIgd2l0aCBsb2NhdGlvbiBpbmZv cm1hdGlvbiwKICAvLy8gY29waWVkIGludG8gdGhlIGdpdmVuIEFTVCBjb250ZXh0LgogIC8vLwog IC8vLyBccGFyYW0gQ29udGV4dCBUaGUgY29udGV4dCBpbnRvIHdoaWNoIHRoaXMgbmVzdGVkLW5h bWUtc3BlY2lmaWVyIHdpbGwgYmUKICAvLy8gY29waWVkLgogIE5lc3RlZE5hbWVTcGVjaWZpZXJM b2MgZ2V0V2l0aExvY0luQ29udGV4dChBU1RDb250ZXh0ICZDb250ZXh0KSBjb25zdDsKCiAgLy8v IFxicmllZiBSZXRyaWV2ZSBhIG5lc3RlZC1uYW1lLXNwZWNpZmllciB3aXRoIGxvY2F0aW9uCiAg Ly8vIGluZm9ybWF0aW9uIGJhc2VkIG9uIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGlzIGJ1aWxkZXIu CiAgLy8vCiAgLy8vIFRoaXMgbG9jIHdpbGwgY29udGFpbiByZWZlcmVuY2VzIHRvIHRoZSBidWls ZGVyJ3MgaW50ZXJuYWwgZGF0YSBhbmQgbWF5CiAgLy8vIGJlIGludmFsaWRhdGVkIGJ5IGFueSBj aGFuZ2UgdG8gdGhlIGJ1aWxkZXIuCiAgTmVzdGVkTmFtZVNwZWNpZmllckxvYyBnZXRUZW1wb3Jh cnkoKSBjb25zdCB7CiAgICByZXR1cm4gTmVzdGVkTmFtZVNwZWNpZmllckxvYyhSZXByZXNlbnRh dGlvbiwgQnVmZmVyKTsKICB9CgogIC8vLyBcYnJpZWYgQ2xlYXIgb3V0IHRoaXMgYnVpbGRlciwg YW5kIHByZXBhcmUgaXQgdG8gYnVpbGQgYW5vdGhlcgogIC8vLyBuZXN0ZWQtbmFtZS1zcGVjaWZp ZXIgd2l0aCBzb3VyY2UtbG9jYXRpb24gaW5mb3JtYXRpb24uCiAgdm9pZCBDbGVhcigpIHsKICAg IFJlcHJlc2VudGF0aW9uID0gbnVsbHB0cjsKICAgIEJ1ZmZlclNpemUgPSAwOwogIH0KCiAgLy8v IFxicmllZiBSZXRyaWV2ZSB0aGUgdW5kZXJseWluZyBidWZmZXIuCiAgLy8vCiAgLy8vIFxyZXR1 cm5zIEEgcGFpciBjb250YWluaW5nIGEgcG9pbnRlciB0byB0aGUgYnVmZmVyIG9mIHNvdXJjZS1s b2NhdGlvbgogIC8vLyBkYXRhIGFuZCB0aGUgc2l6ZSBvZiB0aGUgc291cmNlLWxvY2F0aW9uIGRh dGEgdGhhdCByZXNpZGVzIGluIHRoYXQKICAvLy8gYnVmZmVyLgogIHN0ZDo6cGFpcjxjaGFyICos IHVuc2lnbmVkPiBnZXRCdWZmZXIoKSBjb25zdCB7CiAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo QnVmZmVyLCBCdWZmZXJTaXplKTsKICB9Cn07CgovLy8gSW5zZXJ0aW9uIG9wZXJhdG9yIGZvciBk aWFnbm9zdGljcy4gIFRoaXMgYWxsb3dzIHNlbmRpbmcKLy8vIE5lc3RlZE5hbWVTcGVjaWZpZXJz IGludG8gYSBkaWFnbm9zdGljIHdpdGggPDwuCmlubGluZSBjb25zdCBEaWFnbm9zdGljQnVpbGRl ciAmb3BlcmF0b3I8PChjb25zdCBEaWFnbm9zdGljQnVpbGRlciAmREIsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXN0ZWROYW1lU3BlY2lmaWVyICpOTlMpIHsK ICBEQi5BZGRUYWdnZWRWYWwocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oTk5TKSwKICAgICAg ICAgICAgICAgICAgRGlhZ25vc3RpY3NFbmdpbmU6OmFrX25lc3RlZG5hbWVzcGVjKTsKICByZXR1 cm4gREI7Cn0KCn0KCiNlbmRpZgo= ------=_Part_16640_1581173518.1468970563510--