From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Qiantan Hong Newsgroups: gmane.emacs.devel Subject: Re: [PATCH] Add user content APIs for WebKit Xwidgets Date: Sat, 15 Oct 2022 18:29:35 +0000 Message-ID: <77860A2D-FF21-4EF0-A2E8-769A041B0B55@stanford.edu> References: <763B89A7-AF82-4AAB-A0E9-A04D9958CAE8@stanford.edu> <878rlianx4.fsf@yahoo.com> <9FF9464C-1369-423E-A581-A900D132845F@stanford.edu> <87zgdy97t1.fsf@yahoo.com> <63F00459-018C-4634-9B52-A89A3ED1AA36@stanford.edu> <0F1442C8-45E2-408C-B310-448B4A26496E@stanford.edu> <87ilklnxei.fsf@yahoo.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="26088"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Lars Ingebrigtsen , "emacs-devel@gnu.org" To: Po Lu Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Oct 15 20:48:43 2022 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ojmDC-0006aY-Rt for ged-emacs-devel@m.gmane-mx.org; Sat, 15 Oct 2022 20:48:43 +0200 Original-Received: from localhost ([::1]:39020 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ojmDB-0002el-HI for ged-emacs-devel@m.gmane-mx.org; Sat, 15 Oct 2022 14:48:41 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:53314) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ojlut-0006Y7-43 for emacs-devel@gnu.org; Sat, 15 Oct 2022 14:29:47 -0400 Original-Received: from mx0b-00000d04.pphosted.com ([148.163.153.235]:35372) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ojlup-00051I-PQ for emacs-devel@gnu.org; Sat, 15 Oct 2022 14:29:46 -0400 Original-Received: from pps.filterd (m0102892.ppops.net [127.0.0.1]) by mx0a-00000d04.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 29F8c679028873; Sat, 15 Oct 2022 11:29:40 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stanford.edu; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=pps05272020; bh=DBxkStZEKiFHnCqr4RdlhWS4rAMqx9CLgM1UvDDn4DQ=; b=mpQy0obtK3m3xcrMdKExeNtvXlDDJOHv/Du+LXe5qiuueG7Zkv4YhmSvnXV3JJWpnSd5 Wcq/DOEBcYmCy7uryIofSsEjkp5JhthS2STO4CPjOLkgbWErhh2M+Zbk1jKyuff7D+ha m23FlCO/KEiBKCgvWnZobgz7gvVyOSqhpbkrFJXdARagCs/w6Ue57nYZrSSLot5zrNzL TawQsHr9H2FvBNw19CieKhphP55677YdemeLjp+4cOKTcpHewVDvfk5xiPWxJiiOezG7 i7C+qhw1GIx5UddEBSg4WYXShu2uzkIMxTWh86RhULXao9VaqcPrHE3Nfa/L3t6WdOkx bg== Original-Received: from mx0a-00000d03.pphosted.com (mx0a-00000d03.pphosted.com [148.163.149.244]) by mx0a-00000d04.pphosted.com (PPS) with ESMTPS id 3k7sgs99sm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 15 Oct 2022 11:29:40 -0700 Original-Received: from pps.filterd (m0102881.ppops.net [127.0.0.1]) by mx0a-00000d03.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 29F9EPPI018794; Sat, 15 Oct 2022 11:29:39 -0700 Original-Received: from mx0b-00000d06.pphosted.com (mx0b-00000d06.pphosted.com [148.163.139.119]) by mx0a-00000d03.pphosted.com (PPS) with ESMTPS id 3k7sswhgdq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 15 Oct 2022 11:29:39 -0700 Original-Received: from pps.filterd (m0167940.ppops.net [127.0.0.1]) by mx0b-00000d06.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 29FGAK3I018329; Sat, 15 Oct 2022 11:29:38 -0700 Original-Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2169.outbound.protection.outlook.com [104.47.57.169]) by mx0b-00000d06.pphosted.com (PPS) with ESMTPS id 3k7s01rctf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 15 Oct 2022 11:29:38 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iVJlhB5xy2DR1hKl56mHACyv5KRgBs0RkwRjJ56HpM5Na4zU5fK5plzsIK9OsfliopXWVAcGemVCBFJZunEZgsKI+cfDTaoSz2KxDzOoT4SikjKPsOiD6Furncv63pW9WbztMK1bX7QaLtpAh09wuTHKAf0puvYpt/nHMbcOjCUOZwO1VBF1rMuMeW5sMNK8PJ85F+bz/gUlCH1WLYt8dmfjN9JzhSPDl1S3lE+tJAKCltXJd9u5RXUz6l4NsDLJesqsmRqmqmJySuqSDXnJoPsEFOzj03aT+a6RaXuoIJytDDjVm2UY/0ZHEZ1JmW8IwVTfjt4Uds9VNvQnnfj7lQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=DBxkStZEKiFHnCqr4RdlhWS4rAMqx9CLgM1UvDDn4DQ=; b=dD1v2Dxw+PbHN0zL5kRxl9NUMCOq/02gYvR6BIn7INfNFZJcz/GB0i+GsM1RHNii/t6NHnARcmVl3we27mmxcF4/0bjJupG808nek0vP9UCxAh3OvQDrsM1Yq4AYY9e4A+GEHpWG5fftNg5vAfxM88nZajxjniuDOaKA4kigHN3IgXxRR750DnkLK/LmjmJae93STItoF+HBKzTi4ZR2I5jGCGkIDqO2pZ9BLVwf3a1xzzX1hDtU9NjfzY/3DyzuY67BmhdrVwDk1u085o9EUi9UJEILxq91ZNZOy8xIO/TDqwDzPY5IgU7OFbm9+OkU+E41EtWAkqHGvytOLL39/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=stanford.edu; dmarc=pass action=none header.from=stanford.edu; dkim=pass header.d=stanford.edu; arc=none Original-Received: from BY5PR02MB6771.namprd02.prod.outlook.com (2603:10b6:a03:200::10) by CH0PR02MB7977.namprd02.prod.outlook.com (2603:10b6:610:102::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.30; Sat, 15 Oct 2022 18:29:36 +0000 Original-Received: from BY5PR02MB6771.namprd02.prod.outlook.com ([fe80::9bf9:1cfb:b090:cc9]) by BY5PR02MB6771.namprd02.prod.outlook.com ([fe80::9bf9:1cfb:b090:cc9%6]) with mapi id 15.20.5723.026; Sat, 15 Oct 2022 18:29:35 +0000 Thread-Topic: [PATCH] Add user content APIs for WebKit Xwidgets Thread-Index: AQHY35b+ISYWRDJ9PkKWpJcMREJMA64NdpqagAAC6wCAAAZiuoAA5JIAgABJuICAAGkDAIAAOsDygAB3BIA= In-Reply-To: <87ilklnxei.fsf@yahoo.com> Accept-Language: en-US Content-Language: en-US x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BY5PR02MB6771:EE_|CH0PR02MB7977:EE_ x-ms-office365-filtering-correlation-id: ddd7b711-b55e-45b0-8a2d-08daaedb364d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ToLmQEO5ESDP0lz04W0yFH+KRyamt1rSOqDubfHGDIssvHAbbS1QKDb1Mtr+9RgTZZOwbMUhP7ZXFQYqCn404QAXF6YC2dg2p36Rxug/OWVWQsc9W/APxZnjkHXQ/c5toSBN2/4L5XV/Ny4cWa/KynzvxVNXHUSRrNaO6PnIHQWYc+vqJ0agJgIme/zy85Um0wzumnxgC8UmuxkhUuIIngBKoZK+Cq7AhQtxMaPgTpqdg0KsCRTl/81OCdf7EBPllRxIdOEtLhmRBuK98PonXq3/H0jHRo5TU5HW01oyWdk3vTMgdatjPZNP1oI8a3YER3BHD25O4E4rg9cLVA9MLOyVVt2GLuUGK9HgWiQ6GJc9+aJmwYkK1k9ow7U/mvv+SCUqbVjQcQ8AUqf/fGg0xCqaw/h0rsvQ2X6h0J4TX1fVRRrbhTs0G3PWcxjBMVrZYKaMnIBv8AImjxHC0Vrfp0zWc/kA1BBbp9a/x1AScIfU/vF8uOUSLCjrNC8jtaVuGXyBWz7eODJ3wy/Z06VF45axQzYxlLmhAzKFNgzx3sYDmuLB7ZNDlWKyDSufvTps5J/aJFSNZBUy9A/AnfVH/QHNA9HWrUoMNjzefJ7w3MvjdC9Dl6zrTmjMNbPESw051ZiMsHf8PY4MEKrcdL0GYeuYuvy/rlkUMl0V4rzv6GXtJLB800sTZC8nZGs3U9ieQeAyxPKpko1EQtun4iVGPSaLyuQ9ZN1UOePg+EbeK/Ju3jgqdDl/rs0t8c/do xNSWP/95ZVm6/1EhLdOLJUIvxNWUyuBnffXvYSiDEzpa/8= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR02MB6771.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(39860400002)(376002)(346002)(396003)(136003)(366004)(451199015)(478600001)(6916009)(38070700005)(66899015)(71200400001)(6486002)(54906003)(6512007)(26005)(316002)(8676002)(66556008)(66476007)(66446008)(64756008)(91956017)(4326008)(6506007)(36756003)(41300700001)(53546011)(66946007)(76116006)(38100700002)(5660300002)(8936002)(2906002)(186003)(86362001)(75432002)(33656002)(2616005)(122000001)(30864003)(786003)(41320700001)(83380400001)(45980500001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?b0N5L2dPRExxTE5ZL1BnTS84cG1taEpDYTZJYUhYdXFscG05Q1lRamhZM2d3?= =?utf-8?B?MGVHMXhDNEUrbncvT01Vcm0wMmdoU2JqVnhQK3N0UjJFZ1dzejQ2MytLbGFR?= =?utf-8?B?UHo2b0ErSmZvWDZPaVc4MFFQK0htYm1xdWdpWDlsZ1Q1Zk1iZUVxNGdpWU1O?= =?utf-8?B?U2Q1VS9rODdWaFQyYzcxYUw3SlptMG1NeXRocUZHRklZZU5SWkpDT1ZoOUcv?= =?utf-8?B?VFpaRDdHNm81TnFjK1pESCtad0NKNlBEUHVDd3NqNGFvK2o0ZXcvaHRZZWRq?= =?utf-8?B?YVJKelo5cFZVb1Vzdm45UDBoWTRRdjJxK1J3OXBqZ3JhdERwSXMwaGlRL0Q0?= =?utf-8?B?eXVwMlBMSEgwcDVXa25ZVjZUVitqaEMzaVpqRTV5MmtKVU53dlZPc0ltcHhY?= =?utf-8?B?SW1JTk42T2hsY1dxT1VOcVZHV2hDM1BLeGx1V2hSWGxXYTNzcVh0YWxyTjhx?= =?utf-8?B?KzEwMC92QXAwRWNQSlNLSXdrTE9PMnFJamtzUjhmWk9xeWlvMEFIWmI2ckxh?= =?utf-8?B?dlJaSHV4Y2V6ek0wRThOVzRUZzI0Z3JJSVRKZ25wSmlLYXFwRzRnZlFCR0ts?= =?utf-8?B?YXVHUU9KaW9KbmZrbi9NMnI5bWpNMCtTcllBZlVZR3FyRmNuanFQcXdsSmw5?= =?utf-8?B?d0owbkw5V2p2dzdwUXJPZ1JXNGpubWpXNVJvSX Content-ID: X-OriginatorOrg: stanford.edu X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR02MB6771.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ddd7b711-b55e-45b0-8a2d-08daaedb364d X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Oct 2022 18:29:35.8313 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 396573cb-f378-4b68-9bc8-15755c0c51f3 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: z1rncHyzOQA8isPrBRnqdGW1hwpw00zmkzK8TNuUxmPMdfOlaMWytxgasMw1QkgGyd5bLU+SJkgITf5TN9ZzwQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR02MB7977 x-proofpoint-stanford-dir: outbound X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-10-15_12,2022-10-14_01,2022-06-22_01 X-Proofpoint-GUID: NiRPawQ6oK_xVAXkubgptwTYJNsbsXVN X-Proofpoint-ORIG-GUID: NiRPawQ6oK_xVAXkubgptwTYJNsbsXVN X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-10-15_12,2022-10-14_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 bulkscore=0 spamscore=0 adultscore=100 impostorscore=0 mlxscore=0 mlxlogscore=999 malwarescore=0 lowpriorityscore=0 priorityscore=1501 clxscore=1015 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2210150111 Received-SPF: pass client-ip=148.163.153.235; envelope-from=qthong@stanford.edu; helo=mx0b-00000d04.pphosted.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Sat, 15 Oct 2022 14:47:43 -0400 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:297810 Archived-At: VGhhbmtzIGZvciB0aGUgZGV0YWlsZWQgY29tbWVudHMhIEEgZmV3IHF1ZXN0aW9uczoNCg0KPj4g K3ZvaWQNCj4+ICtzdG9yZV94d2lkZ2V0X3NjcmlwdF9tZXNzYWdlX2V2ZW50IChzdHJ1Y3QgeHdp ZGdldCAqeHcsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICpuYW1lLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzcF9PYmplY3QgYm9keSkNCj4+ICt7DQo+PiArICBzdHJ1Y3QgaW5wdXRfZXZlbnQg ZXZlbnQ7DQo+PiArICBMaXNwX09iamVjdCB4d2w7DQo+PiArICBYU0VUWFdJREdFVCAoeHdsLCB4 dyk7DQo+PiArICBFVkVOVF9JTklUIChldmVudCk7DQo+PiArICBldmVudC5raW5kID0gWFdJREdF VF9FVkVOVDsNCj4+ICsgIGV2ZW50LmZyYW1lX29yX3dpbmRvdyA9IFFuaWw7DQo+PiArICBldmVu dC5hcmcgPSBsaXN0NCAoaW50ZXJuICgic2NyaXB0LW1lc3NhZ2UiKSwgeHdsLCBpbnRlcm4gKG5h bWUpLCBib2R5KTsNCj4+ICsgIGtiZF9idWZmZXJfc3RvcmVfZXZlbnQgKCZldmVudCk7DQo+PiAr fQ0KPiANCj4gQ2FsbGluZyBpbnRlcm4gd2l0aCBhIHN0YXRpYyBzdHJpbmcgaXMgYmFkIHN0eWxl LiAgUGxlYXNlIHdyaXRlIHRoaXMgYXMNCj4gYSBERUZTWU0gaW5zdGVhZCwgaW4gc3ltc19vZl94 d2lkZ2V0Og0KPiANCj4gIERFRlNZTSAoUXNjcmlwdF9tZXNzYWdlLCAic2NyaXB0LW1lc3NhZ2Ui KTsNCj4gDQo+IGFuZCB1c2UgUXNjcmlwdF9tZXNzYWdlLg0KDQpJIHNlZSBzaW1pbGFyIGludGVy biB1c2FnZSBmb3IgInh3aWRnZXQtaW50ZXJuYWzigJ0sICJkb3dubG9hZC1jYWxsYmFja+KAnQ0K YW5kICJqYXZhc2NyaXB0LWNhbGxiYWNr4oCdIGluIHh3aWRnZXQuYy4gSSB3YXMgdHJ5aW5nIHRv IGJlIGNvbnNpc3RlbnQuDQpJZiBJ4oCZbSBjaGFuZ2luZyB0byBRc2NyaXB0X21lc3NhZ2Ugc2hv dWxkIHRob3NlIGJlIGNoYW5nZWQgdG9vPw0KDQo+IEluIGFkZGl0aW9uIHRvIHRoYXQsIHBsZWFz ZSBtYWtlICJuYW1lIiBhIHN0cmluZzsgSSBzZWUgbm8gcmVhc29uIGZvciBpdA0KPiB0byBiZSBh IHN5bWJvbC4NCm5hbWUgaXMgdXNlZCBhcyBhIHN5bWJvbC9pZGVudGlmaWVyIGluIGEgbmFtZXNw YWNlIGluIEphdmFTY3JpcHQuIA0KSXQgaXMgdXNlZCBpbiB0aGUgZm9ybSBvZiDigJxtZXNzYWdl SGFuZGxlcnMubmFtZeKAnS4gVGhlcmVmb3JlIEkgd2FudGVkDQp0byBtYXAgaXQgdG8gc29tZXRo aW5nIGNvbmNlcHR1YWxseSBzaW1pbGFyIGluIExpc3AsIGkuZS4gYSBMaXNwIHN5bWJvbC4NClRo YXQgd2F5IHdlIGdldCBlZmZpY2llbnQgY29tcGFyaXNvbiBhbmQgRVEgbG9va3VwICh1c2VmdWwg Zm9yIGlkZW50aWZpZXJzISkNCmJ5IHNhY3JpZmljaW5nIHN0cmluZy1tYW5pcHVsYXRpbmcgb3Bl cmF0aW9ucyAobm90IHRoYXQgb2Z0ZW4gZm9yIGlkZW50aWZpZXJzISkuDQpGb3IgZXhhbXBsZSwg SSBuZWVkIHRvIGxvb2t1cCBhIGhhbmRsZXIgaW4gYW4gQUxJU1QgZm9yIGV2ZXJ5IHNjcmlwdC1t ZXNzYWdlLg0KRG9lcyB0aGF0IG1ha2Ugc2Vuc2U/DQoNCkJlc3QsDQpRaWFudGFuDQoNCg0KDQo+ IE9uIE9jdCAxNSwgMjAyMiwgYXQgNDoyMyBBTSwgUG8gTHUgPGx1YW5ncnVvQHlhaG9vLmNvbT4g d3JvdGU6DQo+IA0KPiBRaWFudGFuIEhvbmcgPHF0aG9uZ0BzdGFuZm9yZC5lZHU+IHdyaXRlczoN Cj4gDQo+PiBJbXBsZW1lbnQgV2ViS2l0IHVzZXIgc2NyaXB0cyBhbmQgc2NyaXB0IG1lc3NhZ2Ug aGFuZGxlcnMuDQo+PiAqIHNyYy94d2lkZ2V0LmggKHN0b3JlX3h3aWRnZXRfc2NyaXB0X21lc3Nh Z2VfZXZlbnQpOiBzdG9yZSBzY3JpcHQNCj4+ICBtZXNzYWdlIGV2ZW50IGludG8gZXZlbnQgcXVl dWUNCj4+ICogc3JjL3h3aWRnZXQuYyAoc3RvcmVfeHdpZGdldF9zY3JpcHRfbWVzc2FnZV9ldmVu dCwgbWFrZS14d2lkZ2V0LA0KPj4gIHdlYmtpdF9zY3JpcHRfbWVzc2FnZV9jYiwgeHdpZGdldC13 ZWJraXQtYWRkLXVzZXItc2NyaXB0LA0KPj4gIHh3aWRnZXQtd2Via2l0LXJlbW92ZS1hbGwtdXNl ci1zY3JpcHRzLA0KPj4gIHh3aWRnZXQtd2Via2l0LXJlZ2lzdGVyLXNjcmlwdC1tZXNzYWdlLA0K Pj4gIHh3aWRnZXQtd2Via2l0LXVucmVnaXN0ZXItc2NyaXB0LW1lc3NhZ2UpOiBJbXBsZW1lbnQg dXNlciBzY3JpcHQNCj4+ICBhbmQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciBwcmltaXRpdmVzLg0K Pj4gKiBzcmMvbnN4d2lkZ2V0LmMgKG5zeHdpZGdldF93ZWJraXRfYWRkX3VzZXJfc2NyaXB0LA0K Pj4gIG5zeHdpZGdldF93ZWJraXRfcmVtb3ZlX2FsbF91c2VyX3NjcmlwdHMsDQo+PiAgbnN4d2lk Z2V0X3dlYmtpdF9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZSwNCj4+ICBuc3h3aWRnZXRfd2Via2l0 X3VucmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2UsDQo+PiAgaW5pdFdpdGhGcmFtZSwgaW5pdGlhbGl6 ZSwgdXNlckNvbnRlbnRDb250cm9sbGVyKTogTlMNCj4+ICBpbXBsZW1lbnRhdGlvbi4gQ2hhbmdl ZCBuYW1pbmcgb2YgYSBwcmV2aW91cyB1c2VkICBzY3JpcHQgbWVzc2FnZQ0KPj4gIGhhbmRsZXIg dG8gYXZvaWQgbmFtZXNwYWNlIHBvbGx1dGlvbi4NCj4+ICogc3JjL25zeHdpZGdldC5oIChuc3h3 aWRnZXRfd2Via2l0X2FkZF91c2VyX3NjcmlwdCwNCj4+ICBuc3h3aWRnZXRfd2Via2l0X3JlbW92 ZV9hbGxfdXNlcl9zY3JpcHRzLA0KPj4gIG5zeHdpZGdldF93ZWJraXRfcmVnaXN0ZXJfc2NyaXB0 X21lc3NhZ2UsDQo+PiAgbnN4d2lkZ2V0X3dlYmtpdF91bnJlZ2lzdGVyX3NjcmlwdF9tZXNzYWdl KTogTlMgaW1wbGVtZW50YXRpb24NCj4+ICogbGlzcC94d2lkZ2V0LmVsICh4d2lkZ2V0LXdlYmtp dC1jYWxsYmFjaywNCj4+ICB4d2lkZ2V0LXdlYmtpdC1wdXNoLXNjcmlwdC1tZXNzYWdlLWhhbmRs ZXIsDQo+PiAgeHdpZGdldC13ZWJraXQtcG9wLXNjcmlwdC1tZXNzYWdlLWhhbmRsZXIpOg0KPj4g IGxldCBsaXNwIHJlY29nbml6ZSBhbmQgZGlzcGF0Y2ggc2NyaXB0IG1lc3NhZ2UgZXZlbnRzDQo+ IA0KPiBUaGFua3M7IHRoaXMgaXMgbm90IGhvdyB3ZSB3cml0ZSBjb21taXQgbWVzc2FnZXMuICBJ dCBzaG91bGQgYmU6DQo+IA0KPiAqIHNyYy94d2lkZ2V0LmggKHN0b3JlX3h3aWRnZXRfc2NyaXB0 X21lc3NhZ2VfZXZlbnQpOg0KPiAqIHNyYy94d2lkZ2V0LmMgKHN0b3JlX3h3aWRnZXRfc2NyaXB0 X21lc3NhZ2VfZXZlbnQpOg0KPiAoeHdpZGdldF9zY3JpcHRfbWVzc2FnZV9jYik6DQo+IChGeHdp ZGdldF93ZWJraXRfYWRkX3VzZXJfc2NyaXB0KTogU3RvcmUgc2NyaXB0IG1lc3NhZ2UgZXZlbnQN Cj4gaW50byBldmVudCBxdWV1ZS4NCj4gDQo+IGFuZCBzbyBvbi4gIFBheSBhdHRlbnRpb24gdG8g aG93IHRoZSBuYW1lIG9mIHRoZSBDIGZ1bmN0aW9uIGlzIHdyaXR0ZW4NCj4gZm9yIGRlZnVucywg aG93IGNvbnRpbnVpbmcgbGluZXMgaW4gZWFjaCBtZXNzYWdlIGFyZSBub3QgaW5kZW50ZWQsIGFu ZA0KPiBob3cgYnJhY2tldHMgYXJlIHBsYWNlZCBhcm91bmQgZnVuY3Rpb25zLg0KPiANCj4+IEFj a2VkLWJ5OiBRaWFudGFuIEhvbmcgPHFob25nQG1pdC5lZHU+DQo+IA0KPiBQbGVhc2UgcmVtb3Zl IHRoaXMgZXh0cmFuZW91cyBsaW5lIGZyb20gdGhlIGNvbW1lbnQgbWVzc2FnZS4NCj4gDQo+PiAr ICAgICAgICAgICgoZXEgeHdpZGdldC1ldmVudC10eXBlICdzY3JpcHQtbWVzc2FnZSkNCj4+ICsg ICAgICAgICAgIChsZXQgKChuYW1lIChudGggMyBsYXN0LWlucHV0LWV2ZW50KSkNCj4+ICsgICAg ICAgICAgICAgICAgICh2YWx1ZSAobnRoIDQgbGFzdC1pbnB1dC1ldmVudCkpKQ0KPj4gKyAgICAg ICAgICAgICAobGV0ICgoaGFuZGxlci1wYWlyIChhc3NxIG5hbWUgKHh3aWRnZXQtZ2V0IHh3aWRn ZXQgJ3NjcmlwdC1tZXNzYWdlLWhhbmRsZXJzKSkpKQ0KPj4gKyAgICAgICAgICAgICAgIChpZiBo YW5kbGVyLXBhaXINCj4+ICsgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgKGNkciBoYW5kbGVy LXBhaXIpIHh3aWRnZXQgdmFsdWUpDQo+PiArICAgICAgICAgICAgICAgICAoeHdpZGdldC1sb2cg InVuaGFuZGxlZCBzY3JpcHQgbWVzc2FnZTolcyIgbmFtZSkpKSkpDQo+IA0KPiBQbGVhc2UgcGxh Y2UgYSBzcGFjZSBiZXR3ZWVuIDogYW5kICIgIi4NCj4gDQo+PiArKGRlZnVuIHh3aWRnZXQtd2Vi a2l0LXB1c2gtc2NyaXB0LW1lc3NhZ2UtaGFuZGxlciAoeHdpZGdldCBuYW1lIGhhbmRsZXIpDQo+ PiArICAiQXNzb2NpYXRlIEhBTkRMRVIgd2l0aCBzY3JpcHQgbWVzc2FnZXMgdW5kZXIgc3ltYm9s IE5BTUUgZm9yIFdlYmtpdCBYV0lER0VULg0KPj4gKw0KPj4gK0hBTkRMRVIgd2lsbCBiZSBjYWxs ZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgV2Via2l0IFhXSURHRVQgYW5kDQo+PiArdGhlIGph dmFzY3JpcHQgb2JqZWN0IHBhc3NlZCBmcm9tIHRoZSBzY3JpcHQgbWVzc2FnZSBjb252ZXJ0ZWQg dG8NCj4+ICthIExpc3Agb2JqZWN0LiINCj4+ICsgICh4d2lkZ2V0LXdlYmtpdC1yZWdpc3Rlci1z Y3JpcHQtbWVzc2FnZSAoeHdpZGdldC13ZWJraXQtY3VycmVudC1zZXNzaW9uKSBuYW1lKQ0KPiAN Cj4gODAgY29sdW1ucyBhbGVydCEgIFRoYXQgYXNpZGUsIHRoaXMgZG9lcyBub3QgZXhwbGFpbiB3 aGF0ICJzY3JpcHQNCj4gbWVzc2FnZXMiIGFyZS4gICJXZWJraXQiIGFuZCAiamF2YXNjcmlwdCIg c2hvdWxkIGFsc28gYmUgY2FwaXRhbGl6ZWQNCj4gIldlYktpdCIgYW5kICJKYXZhU2NyaXB0IiBy ZXNwZWN0aXZlbHkuDQo+IA0KPj4gKyhkZWZ1biB4d2lkZ2V0LXdlYmtpdC1wb3Atc2NyaXB0LW1l c3NhZ2UtaGFuZGxlciAoeHdpZGdldCBuYW1lKQ0KPj4gKyAgIlJlbW92ZSBhIGhhbmRsZXIgYXNz b2NpYXRlZCB3aXRoIHN5bWJvbCBOQU1FIGZvciBXZWJraXQgWFdJREdFVC4NCj4+ICsNCj4+ICtS ZXR1cm5zIHRoZSByZW1vdmVkIGhhbmRsZXIgZnVuY3Rpb24sIG9yIE5JTCBpZiBzdWNoIGhhbmRs ZXIgaXMNCj4+ICtub3QgZm91bmQuIg0KPj4gKyAgKGxldCogKChvbGQtYWxpc3QgKHh3aWRnZXQt Z2V0IHh3aWRnZXQgJ3NjcmlwdC1tZXNzYWdlLWhhbmRsZXJzKSkNCj4+ICsgICAgICAgICAoaGFu ZGxlci1wYWlyIChhc3NxIG5hbWUgb2xkLWFsaXN0KSkpDQo+PiArICAgICh3aGVuIGhhbmRsZXIt cGFpcg0KPj4gKyAgICAgIChsZXQgKChuZXctYWxpc3QgKGRlbHEgaGFuZGxlci1wYWlyIG9sZC1h bGlzdCkpKQ0KPj4gKyAgICAgICAgKHh3aWRnZXQtcHV0IHh3aWRnZXQgJ3NjcmlwdC1tZXNzYWdl LWhhbmRsZXJzIG5ldy1hbGlzdCkNCj4+ICsgICAgICAgICh1bmxlc3MgKGFzc3EgbmFtZSBuZXct YWxpc3QpDQo+PiArICAgICAgICAgICh4d2lkZ2V0LXdlYmtpdC11bnJlZ2lzdGVyLXNjcmlwdC1t ZXNzYWdlICh4d2lkZ2V0LXdlYmtpdC1jdXJyZW50LXNlc3Npb24pIG5hbWUpKSkNCj4gDQo+IDgw IGNvbHVtbnMgYWxlcnQhICBXaGF0IEkgc2FpZCBhYm91dCBkb2N1bWVudGF0aW9uIGFib3ZlIGFw cGxpZXMgaGVyZSBhcw0KPiB3ZWxsLg0KPiANCj4+ICsgIEB0cnkNCj4+ICsgICAgew0KPj4gKyAg ICAgIFtzY3JpcHRvciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjp4d1dlYlZpZXcgbmFtZTptZXNz YWdlTmFtZV07DQo+PiArICAgIH0NCj4+ICsgIEBjYXRjaCAoTlNFeGNlcHRpb24gKmUpDQo+PiAr ICAgIHsNCj4+ICsgICAgICByZXR1cm4gUW5pbDsNCj4+ICsgICAgfQ0KPiANCj4gUGxlYXNlIHJl bW92ZSB0aGUgdW5uZWNlc3NhcnkgYnJhY2VzIGhlcmUuDQo+IA0KPj4gZGlmZiAtLWdpdCBhL3Ny Yy94d2lkZ2V0LmMgYi9zcmMveHdpZGdldC5jDQo+PiBpbmRleCA4YmRmYWIwMmZkLi5lNDI1MDA2 NWI5IDEwMDY0NA0KPj4gLS0tIGEvc3JjL3h3aWRnZXQuYw0KPj4gKysrIGIvc3JjL3h3aWRnZXQu Yw0KPj4gQEAgLTEyNiw2ICsxMjYsMTYgQEAgd2Via2l0X2RlY2lkZV9wb2xpY3lfY2IgKFdlYktp dFdlYlZpZXcgKiwNCj4+IH07DQo+PiANCj4+IHN0YXRpYyB2b2lkIGZpbmRfd2lkZ2V0IChHdGtX aWRnZXQgKnQsIHN0cnVjdCB3aWRnZXRfc2VhcmNoX2RhdGEgKik7DQo+PiArDQo+PiArc3RydWN0 IHdlYmtpdF9zY3JpcHRfbWVzc2FnZV9jYl9kYXRhDQo+PiArew0KPj4gKyAgc3RydWN0IHh3aWRn ZXQgKnh3Ow0KPj4gKyAgY2hhciBuYW1lWzBdOw0KPj4gK307DQo+PiArc3RhdGljIHZvaWQgd2Vi a2l0X3NjcmlwdF9tZXNzYWdlX2NiIChXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKiwNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRKYXZhc2NyaXB0 UmVzdWx0ICosDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z3BvaW50ZXIpOw0KPj4gKw0KPiANCj4gWmVyby1sZW5ndGggYXJyYXlzIGFyZSBub3QgcG9ydGFi bGUsIGFuZCBpdCBpcyBiYWQgc3R5bGUgdG8gc3RvcmUgc3RyaW5nDQo+IGRhdGEgaW4gYXJyYXlz IHRoYXQgd2F5LiAgUGxlYXNlIGFsbG9jYXRlIGEgc2VwYXJhdGUgc3RyaW5nLCBhbmQgZnJlZSBp dA0KPiBtYW51YWxseSBpbiB0aGUgR0Rlc3Ryb3lOb3RpZnkuICBJbiBhZGRpdGlvbiwgcGxlYXNl IHdyaXRlIGEgY29tbWVudA0KPiBhYm92ZSBlYWNoIGZpZWxkIGRlc2NyaWJpbmcgaXRzIG1lYW5p bmcuDQo+IA0KPj4gKyAgICAgIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqc2NyaXB0b3IgPSB3 ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfbmV3ICgpOw0KPj4gKyAgICAgIHh3LT53aWRnZXRf b3NyID0gd2Via2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyIChzY3Jp cHRvcik7DQo+IA0KPiBzY3JpcHRvciBpcyBsZWFrZWQsIGFzIFdlYktpdFVzZXJDb250ZW50TWFu YWdlciBub3QgR0luaXRpYWxseVVub3duZWQuDQo+IERpZCB5b3UgZm9yZ2V0IGEgZ19vYmplY3Rf dW5yZWY/DQo+IA0KPj4gK3ZvaWQNCj4+ICtzdG9yZV94d2lkZ2V0X3NjcmlwdF9tZXNzYWdlX2V2 ZW50IChzdHJ1Y3QgeHdpZGdldCAqeHcsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLA0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzcF9PYmplY3QgYm9keSkNCj4+ICt7DQo+PiArICBzdHJ1 Y3QgaW5wdXRfZXZlbnQgZXZlbnQ7DQo+PiArICBMaXNwX09iamVjdCB4d2w7DQo+PiArICBYU0VU WFdJREdFVCAoeHdsLCB4dyk7DQo+PiArICBFVkVOVF9JTklUIChldmVudCk7DQo+PiArICBldmVu dC5raW5kID0gWFdJREdFVF9FVkVOVDsNCj4+ICsgIGV2ZW50LmZyYW1lX29yX3dpbmRvdyA9IFFu aWw7DQo+PiArICBldmVudC5hcmcgPSBsaXN0NCAoaW50ZXJuICgic2NyaXB0LW1lc3NhZ2UiKSwg eHdsLCBpbnRlcm4gKG5hbWUpLCBib2R5KTsNCj4+ICsgIGtiZF9idWZmZXJfc3RvcmVfZXZlbnQg KCZldmVudCk7DQo+PiArfQ0KPiANCj4gQ2FsbGluZyBpbnRlcm4gd2l0aCBhIHN0YXRpYyBzdHJp bmcgaXMgYmFkIHN0eWxlLiAgUGxlYXNlIHdyaXRlIHRoaXMgYXMNCj4gYSBERUZTWU0gaW5zdGVh ZCwgaW4gc3ltc19vZl94d2lkZ2V0Og0KPiANCj4gIERFRlNZTSAoUXNjcmlwdF9tZXNzYWdlLCAi c2NyaXB0LW1lc3NhZ2UiKTsNCj4gDQo+IGFuZCB1c2UgUXNjcmlwdF9tZXNzYWdlLg0KPiANCj4+ ICtzdGF0aWMgdm9pZCB3ZWJraXRfc2NyaXB0X21lc3NhZ2VfY2IgKFdlYktpdFVzZXJDb250ZW50 TWFuYWdlciAqc2NyaXB0b3IsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCAqanNfcmVzdWx0LA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIGRhdGEpDQo+PiArew0K Pj4gKyAgSlNDVmFsdWUgKnZhbHVlID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192 YWx1ZSAoanNfcmVzdWx0KTsNCj4+ICsgIHN0cnVjdCB3ZWJraXRfc2NyaXB0X21lc3NhZ2VfY2Jf ZGF0YSAqYXJnID0gZGF0YTsNCj4+ICsNCj4+ICsgIExpc3BfT2JqZWN0IGxpc3BfdmFsdWUgPSB3 ZWJraXRfanNfdG9fbGlzcCAodmFsdWUpOw0KPj4gKyAgc3RvcmVfeHdpZGdldF9zY3JpcHRfbWVz c2FnZV9ldmVudCAoYXJnLT54dywgYXJnLT5uYW1lLCBsaXNwX3ZhbHVlKTsNCj4+ICt9DQo+IA0K PiBQbGVhc2UgYWRkIGEgbmV3bGluZSBhZnRlciAic3RhdGljIHZvaWQiLiAgSXQgaXMgYWxzbyB2 ZXJ5IHVnbHkgdG8gcHV0IGENCj4gbmV3bGluZSBiZXR3ZWVuICJhcmciIGFuZCAibGlzcF92YWx1 ZSI7IEkgd291bGQgcHJlZmVyIHRoaXMgYmUgd3JpdHRlbjoNCj4gDQo+ICBKU0NWYWx1ZSAqdmFs dWU7DQo+ICBzdHJ1Y3Qgd2Via2l0X3NjcmlwdF9tZXNzYWdlX2NiX2RhdGEgKmFyZzsNCj4gIExp c3BfT2JqZWN0IGxpc3BfdmFsdWU7DQo+IA0KPiAgdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdC4u Lg0KPiANCj4gSW4gYWRkaXRpb24sIGRvbid0IHlvdSBoYXZlIHRvIGNhbGwgd2Via2l0X2phdmFz Y3JpcHRfcmVzdWx0X3VucmVmPw0KPiANCj4+ICsNCj4+ICNpZmRlZiBIQVZFX1hfV0lORE9XUw0K Pj4gICB4di0+ZHB5ID0gRlJBTUVfWF9ESVNQTEFZIChzLT5mKTsNCj4+IA0KPiANCj4gUGxlYXNl IHJlbW92ZSB0aGlzIHdoaXRlc3BhY2UgY2hhbmdlLg0KPiANCj4+ICsgICAgICAgZG9jOiAvKiBB ZGQgdXNlciBTQ1JJUFQgdG8gdGhlIFdlYmtpdCBYV0lER0VULg0KPiANCj4gVGhpcyBzaG91bGQg YmUgcmVhZCAiQWRkIHRoZSB1c2VyIHNjcmlwdCBTQ1JJUFQgdG8gdGhlIFdlYktpdCBYV0lER0VU LiIsDQo+IGZvbGxvd2VkIGJ5IGEgc2hvcnQgc3VtbWFyeSBvZiB3aGF0IHVzZXJzY3JpcHRzIGFy ZSwgYW5kIHdoYXQgdGhlIHNjcmlwdA0KPiBhcmd1bWVudCBzaG91bGQgYmUuDQo+IA0KPj4gK0lO SkVDVElPTi1USU1FIGlzIGEgc3ltYm9sIHdoaWNoIGNhbiB0YWtlIG9uZSBvZiB0aGUgZm9sbG93 aW5nIHZhbHVlczoNCj4gDQo+ICJXSEVOIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlcywg YW5kIHNwZWNpZmllcyB3aGVuIHRoZSBzY3JpcHQgaXMgcnVuOiINCj4gDQo+PiArLSBzdGFydDog U0NSSVBUIGlzIGluamVjdGVkIHdoZW4gZG9jdW1lbnQgc3RhcnRzIGxvYWRpbmcNCj4+ICstIGVu ZDogU0NSSVBUIGlzIGluamVjdGVkIHdoZW4gZG9jdW1lbnQgZmluaXNoZXMgbG9hZGluZw0KPiAN Cj4gIiAgLSBgc3RhcnQnLCB3aGljaCBtZWFucyB0aGUgc2NyaXB0IGlzIHJ1biB1cG9uIGZpcnN0 IGxvYWRpbmcgYSBkb2N1bWVudC4NCj4gICAtIGBlbmQnLCB3aGljaCBtZWFucyB0aGUgc2NyaXB0 IGlzIHJ1biBhZnRlciBhIGRvY3VtZW50IGxvYWRzLiINCj4gDQo+PiArSWYgTUFJTl9GUkFNRV9P TkxZIGlzIG5pbCwgU0NSSVBUIGlzIGluamVjdGVkIHRvIGFsbCBmcmFtZXMuDQo+IA0KPiAiSWYg TUFJTi1GUkFNRS1PTkxZIGlzIG5vbi1uaWwsIHJ1biBTQ1JJUFQgZm9yIGFsbCBmcmFtZXMuIiAg KEZvbGxvd2VkDQo+IGJ5IGEgZGVzY3JpcHRpb24gb2Ygd2hhdCAiZnJhbWVzIiBhcmUuKQ0KPiAN Cj4+ICtPdGhlcndpc2UsIFNDUklQVCBpcyBvbmx5IGluamVjdGVkIHRvIHRvcCBmcmFtZXMuDQo+ IA0KPiBXaGF0IGFyZSB0b3AgZnJhbWVzPw0KPiANCj4+ICsgIHNjcmlwdCA9IEVOQ09ERV9TWVNU RU0oc2NyaXB0KTsNCj4gDQo+IEFyZSB5b3Ugc3VyZSB0aGF0IGlzIHRoZSByaWdodCBjb2Rpbmcg c3lzdGVtPyAgV2ViS2l0IEFQSXMgdXN1YWxseSB0YWtlDQo+IFVURi04IHN0cmluZ3MuDQo+IA0K PiBJbiBhbnkgY2FzZSwgdGhpcyBzaG91bGQgYmU6DQo+IA0KPiAgc2NyaXB0ID0gRU5DT0RFX1NZ U1RFTSAoc2NyaXB0KTsNCj4gDQo+PiArICBpbnQgaW5qZWN0aW9uX3RpbWVfc3RhcnQsIG1mbzsN Cj4+ICsgIG1mbyA9ICFOSUxQIChtYWluX2ZyYW1lX29ubHkpOw0KPiANCj4gV2hhdCBpcyB0aGUg cHVycG9zZSBvZiB0aG9zZSB0d28gdmFyaWFibGVzPyAgSW4gZWl0aGVyIGNhc2UsIGBtZm8nDQo+ IHNob3VsZCBiZSBuYW1lZCBzb21ldGhpbmcgZWxzZSwgYXMgdGhhdCBuYW1lIGNhcnJpZXMgbm8g bWVhbmluZy4NCj4gDQo+IFdoZW4gY2hvc2luZyB2YXJpYWJsZSBuYW1lcywgdHJ5IHRvIGF2b2lk IHRydW5jYXRpbmcgd29yZHMsIG9yIHdvcnNlLA0KPiBzaW1wbHkgbWFraW5nIHVwIGFjcm9ueW1z LiAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZzoNCj4gDQo+ICBCb29sIHdpbmRvd19kYXRhX2V4aXN0 czsNCj4gDQo+ICB3aW5kb3dfZGF0YV9leGlzdHMgPSAoWEdldFdpbmRvd1Byb3BlcnR5IC4uLi4N Cj4gDQo+IG9yIGV2ZW4NCj4gDQo+ICBCb29sIGRhdGFfZXhpc3RzOw0KPiANCj4gIGRhdGFfZXhp c3RzID0gKFhHZXRXaW5kb3dQcm9wZXJ0eSAuLi4uDQo+IA0KPiBhbmQgbm90ZSBob3cgbXVjaCBj bGVhcmVyIGl0IGlzIGNvbXBhcmVkIHRvOg0KPiANCj4gIEJvb2wgd2RlOw0KPiANCj4gIHdkZSA9 IChYR2V0V2luZG93UHJvcGVydHkgLi4uDQo+IA0KPiBvcg0KPiANCj4gIEJvb2wgZGF0X3A7DQo+ IA0KPiAgZGF0X3AgPSAoWEdldFdpbmRvd1Byb3BlcnR5IC4uLg0KPiANCj4+ICsgIGlmIChFUSAo aW5qZWN0aW9uX3RpbWUsIFFzdGFydCkpDQo+PiArICAgIGluamVjdGlvbl90aW1lX3N0YXJ0ID0g MTsNCj4+ICsgIGVsc2UgaWYgKEVRIChpbmplY3Rpb25fdGltZSwgUWVuZCkpDQo+PiArICAgIGlu amVjdGlvbl90aW1lX3N0YXJ0ID0gMDsNCj4+ICsNCj4+ICsgICAgZXJyb3IgKCJVbmtub3duIFh3 aWRnZXQgV2Via2l0IHVzZXIgc2NyaXB0IGluamVjdGlvbiB0aW1lOiAlcyIsDQo+PiArICAgICAg ICAgICBTREFUQSAoU1lNQk9MX05BTUUgKGluamVjdGlvbl90aW1lKSkpOw0KPiANCj4gU2luY2Ug dGhlcmUgYXJlIG9ubHkgdHdvIHZhbHVlcywgaG93IGFib3V0IHJlcGxhY2luZyBgaW5qZWN0aW9u LXRpbWUnDQo+IHdpdGggYSBzaW5nbGUgYm9vbGVhbiBhcmd1bWVudCBgc3RhcnQnLCB3aGljaCBk ZXRlcm1pbmVzIHdoZXRoZXIgdG8gcnVuDQo+IHRoZSB1c2VyIHNjcmlwdCBhdCBvciBhZnRlciBw YWdlIGxvYWQ/DQo+IA0KPj4gKyAgaW50IHdlYmtpdF9pbmplY3RlZF9mcmFtZXMgPSBtZm8/DQo+ PiArICAgIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX1RPUF9GUkFNRSA6IFdFQktJVF9VU0VS X0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVM7DQo+IA0KPiBUaGlzIGlzIG5vdCBvdXIgY29kaW5n IHN0eWxlLiAgSXQgc2hvdWxkIGJlOg0KPiANCj4gICghTklMUCAobWFpbl9mcmFtZV9vbmx5KQ0K PiAgID8gV0VCS0lUX1VTRVJfQ09OVEVOVF9JTkpFQ1RfVE9QX0ZSQU1FDQo+ICAgOiBXRUJLSVRf VVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTKQ0KPiANCj4gZnVydGhlciBtb3JlLCB0aGUg dHlwZSBpcyBub3QgaW50LCBpdCBpcyBlbnVtDQo+IFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRG cmFtZXMuDQo+IA0KPj4gKyAgaW50IHdlYmtpdF9pbmplY3Rpb25fdGltZSA9IGluamVjdGlvbl90 aW1lX3N0YXJ0Pw0KPj4gKyAgICBXRUJLSVRfVVNFUl9TQ1JJUFRfSU5KRUNUX0FUX0RPQ1VNRU5U X1NUQVJUIDogV0VCS0lUX1VTRVJfU0NSSVBUX0lOSkVDVF9BVF9ET0NVTUVOVF9FTkQ7DQo+IA0K PiBMaWtld2lzZS4gIGVudW0gV2ViS2l0VXNlclNjcmlwdEluamVjdGlvblRpbWUuDQo+IA0KPj4g KyAgV2ViS2l0VXNlclNjcmlwdCAqdXNlclNjcmlwdCA9IHdlYmtpdF91c2VyX3NjcmlwdF9uZXcg KFNTREFUQSAoc2NyaXB0KSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfaW5qZWN0ZWRfZnJhbWVzLA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYmtp dF9pbmplY3Rpb25fdGltZSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsNCj4gDQo+IDgwIGNvbHVtbnMgYWxl cnQhICBQbGVhc2UgbmFtZSB0aGUgdmFyaWFibGUgInVzZXJfc2NyaXB0IiBpbnN0ZWFkOyB0aGlz DQo+IHBpZWNlIG9mIGNvZGUgc2hvdWxkIHByb2JhYmx5IGJlIHdyaXR0ZW4gYXMgZm9sbG93czoN Cj4gDQo+ICBXZWJLaXRVc2VyU2NyaXB0ICp1c2VyX3NjcmlwdA0KPiAgICA9IHdlYmtpdF91c2Vy X3NjcmlwdF9uZXcgKFNTREFUQSAoc2NyaXB0KSwNCj4gCQkJICAgICAgd2Via2l0X2luamVjdGVk X2ZyYW1lcywNCj4gCQkJICAgICAgd2Via2l0X2luamVjdGlvbl90aW1lLA0KPiAJCQkgICAgICBO VUxMLCBOVUxMKTsNCj4gDQo+PiArREVGVU4gKCJ4d2lkZ2V0LXdlYmtpdC1yZWdpc3Rlci1zY3Jp cHQtbWVzc2FnZSIsDQo+PiArICAgICAgIEZ4d2lkZ2V0X3dlYmtpdF9yZWdpc3Rlcl9zY3JpcHRf bWVzc2FnZSwgU3h3aWRnZXRfd2Via2l0X3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlLA0KPj4gKyAg ICAgICAyLCAyLCAwLA0KPj4gKyAgICAgICBkb2M6IC8qIFJlZ2lzdGVyIHNjcmlwdCBtZXNzYWdl IHdpdGggc3ltYm9sIE5BTUUgaW4gV2Via2l0DQo+PiBYV0lER0VULg0KPiANCj4gV2hhdCB3YXMg c2FpZCBhYm91dCBjYXBpdGFsaXphdGlvbiBhYm92ZSBhbHNvIGFwcGxpZXMgaGVyZS4gIFBsZWFz ZSBmaWxsDQo+IGV2ZXJ5dGhpbmcgdG8gODAgY29sdW1ucyBhcyB3ZWxsLg0KPiANCj4+ICtSZXR1 cm5zIFQgaWYgdGhlIG9wZXJhdGlvbiBpcyBzdWNjZXNzZnVsLCBOSUwgb3RoZXJ3aXNlLg0KPiAN Cj4gRW1hY3MgTGlzcCBpcyBub3QgQ29tbW9uIExpc3AsIGFuZCBkb2VzIG5vdCBjYXBpdGFsaXpl IHN5bWJvbCBuYW1lcyBieQ0KPiBkZWZhdWx0Lg0KPiANCj4+ICtUaGUgY2F1c2Ugb2YgZmFpbHVy ZSBpcyB1c3VhbGx5IHRoYXQgTkFNRSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQgZm9yIFhX SURHRVQuICAqLykNCj4gDQo+IFRoaXMgYmVsb25ncyBpbiB0aGUgTGlzcCByZWZlcmVuY2UgbWFu dWFsLCBhbmQgaXMgbGlrZWx5IHJlZHVuZGFudCBpbg0KPiBhbnkgY2FzZS4gIEFsc28sIHRoZSBm dW5jdGlvbiBzaG91bGQgc2lnbmFsIGFuIGVycm9yIGlmIE5BTUUgaGFzIGFscmVhZHkNCj4gYmVl biB1c2VkLCBpbnN0ZWFkIG9mIHNpbXBseSByZXR1cm5pbmcgbmlsLg0KPiANCj4+ICsgIGNvbnN0 IGNoYXIgKnNuYW1lID0gU1NEQVRBKCBTWU1CT0xfTkFNRSAobmFtZSkpOw0KPiANCj4gVGhpcyBp cyBhIHBvaW50ZXIgdG8gc3RyaW5nIGRhdGEuICBJdCBpcyBub3Qgc2FmZSB0byBhc3N1bWUgR0Mg ZG9lcyBub3QNCj4gaGFwcGVuIGFuZCByZWxvY2F0ZSBpdCBiZWxvdywgZHVlIHRvIHRoZSBtdWx0 aXR1ZGUgb2YgR0xpYiBjYWxsYmFja3MNCj4gaW5zdGFsbGVkIHRoYXQgY2FuIGNhbGwgR0MuICBD b25zaWRlciB1c2luZyB4bGlzcHN0cmR1cCBpbnN0ZWFkLg0KPiANCj4gSW4gYWRkaXRpb24gdG8g dGhhdCwgcGxlYXNlIG1ha2UgIm5hbWUiIGEgc3RyaW5nOyBJIHNlZSBubyByZWFzb24gZm9yIGl0 DQo+IHRvIGJlIGEgc3ltYm9sLg0KPiANCj4+ICsjaWZkZWYgVVNFX0dUSw0KPj4gKyAgV2ViS2l0 V2ViVmlldyAqd2t3diA9IFdFQktJVF9XRUJfVklFVyAoeHctPndpZGdldF9vc3IpOw0KPiANCj4g UGxlYXNlIG5hbWUgdGhpcyB2YXJpYWJsZSB2aWV3LCBub3QgIndrd3YiLCBmb3IgdGhlIHJlYXNv bnMgZXhwbGFpbmVkDQo+IGFib3ZlLg0KPiANCj4+ICsgIGdjaGFyICpzaWduYWxfbmFtZSA9IGdf c3RyY29uY2F0ICgic2NyaXB0LW1lc3NhZ2UtcmVjZWl2ZWQ6OiIsIHNuYW1lLCBOVUxMKTsNCj4g DQo+IFBsZWFzZSBjb25zaWRlciB1c2luZyBhbGxvY2Egb3IgU0FGRV9BTExPQ0EgdG8gYWxsb2Nh dGUgdGhpcyBidWZmZXIsIGFuZA0KPiB0aGVuIHVzaW5nIHN0cm5jcHkgb3IgbGlzcHN0cGNweSB0 byBjb3B5IHRoZSBkYXRhIG92ZXIuDQo+IA0KPiBTQUZFX0FMTE9DQSBpcyB1c2VkIGxpa2UgdGhp cywgd2hlbiB0aGVyZSBhcmUgbm8gY29uZmxpY3Rpbmcgc3BlY2JpbmRzOg0KPiANCj4gdm9pZA0K PiBmdW5jdGlvbl91c2luZ19zYWZlX2FsbG9jYSAodm9pZCkNCj4gew0KPiAgY2hhciAqbXlidWZm ZXI7DQo+IA0KPiAgVVNFX1NBRkVfQUxMT0NBOw0KPiAgbXlidWZmZXIgPSBTQUZFX0FMTE9DQSAo c2l6ZV9vZl9idWZmZXIpOw0KPiANCj4gIC8qIERvIHN0dWZmIHdpdGggbXlidWZmZXIuLi4gRmlu YWxseTogKi8NCj4gDQo+ICBTQUZFX0ZSRUUgKCk7DQo+IH0NCj4gDQo+PiArICBzdHJ1Y3Qgd2Vi a2l0X3NjcmlwdF9tZXNzYWdlX2NiX2RhdGEgKmFyZyA9IG1hbGxvYyAoc2l6ZW9mICphcmcgKyBu YW1lX2xlbmd0aCk7DQo+PiArICBhcmctPnh3ID0geHc7DQo+PiArICBnX3N0cmxjcHkgKGFyZy0+ bmFtZSwgc25hbWUsIG5hbWVfbGVuZ3RoKTsNCj4gDQo+IFJlY2FsbCB3aGF0IEkgc2FpZCBhYm91 dCB6ZXJvLWxlbmd0aCBvciB2YXJpYWJsZSBsZW5ndGggYXJyYXlzIGJlaW5nIGJhZA0KPiBzdHls ZSBoZXJlLiAgUGxlYXNlIGFsbG9jYXRlIGFyZy0+bmFtZSBzZXBhcmF0ZWx5LCBwcm9iYWJseSB3 aXRoDQo+IGxpc3BzdHBjcHkuLi4NCj4gDQo+PiArICBnX3NpZ25hbF9jb25uZWN0X2RhdGEoc2Ny aXB0b3IsIHNpZ25hbF9uYW1lLCBHX0NBTExCQUNLICh3ZWJraXRfc2NyaXB0X21lc3NhZ2VfY2Ip LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgKEdDbG9zdXJlTm90aWZ5KWZyZWUs IDApOw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5e Xl4NCj4gDQo+IGFuZCBmcmVlIGl0IGluIHRoZSBkZXN0cm95X2RhdGEgY2FsbGJhY2suICBJbiBh ZGRpdGlvbiwgcGxlYXNlIHB1dCBhDQo+IHNwYWNlIGJldHdlZW4gdGhlIGNhc3QgYW5kIHRoZSB0 eXBlLCBhbmQgdXNlIEdfQ09OTkVDVF9ERUZBVUxUIGFzDQo+IG9wcG9zZWQgdG8gMC4NCj4gDQo+ IEluIGFkZGl0aW9uLCB4dyBpcyBhIExpc3Agb2JqZWN0LiAgSXQgc2hvdWxkIGJlIG1hcmtlZCBm b3IgZ2FyYmFnZQ0KPiBjb2xsZWN0aW9uIGFzIGxvbmcgYXMgdGhlIHNpZ25hbCBoYW5kbGVyIGlz IGF0dGFjaGVkLCBhcyBtYWtpbmcNCj4gYXNzdW1wdGlvbnMgYWJvdXQgd2hlbiBzaWduYWxzIGFy ZSBydW4gaXMgbm90IHNhZmUuDQo+IA0KPj4gKyAgaWYgKHdlYmtpdF91c2VyX2NvbnRlbnRfbWFu YWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyIChzY3JpcHRvciwgc25hbWUpKQ0K Pj4gKyAgICB7DQo+PiArICAgICAgcmV0dXJuIFF0Ow0KPj4gKyAgICB9DQo+PiArICBlbHNlDQo+ PiArICAgIHsNCj4+ICsgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQg IChzY3JpcHRvciwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeDQo+IA0KPiBFeHRyYSB3aGl0ZXNwYWNlLiAgUGxlYXNlIGFsc28gcmVtb3ZlIHRoZSByZWR1 bmRhbnQgYnJhY2VzIGFib3ZlLg0KPiANCj4+ICsgIFdlYktpdFdlYlZpZXcgKndrd3YgPSBXRUJL SVRfV0VCX1ZJRVcgKHh3LT53aWRnZXRfb3NyKTsNCj4gDQo+ICJXZWJLaXRXZWJWaWV3ICp2aWV3 ID0gV0VCS0lUX1dFQl9WSUVXICguLi4iDQo+IA0KPj4gKyAgV2ViS2l0VXNlckNvbnRlbnRNYW5h Z2VyICpzY3JpcHRvciA9IHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIg KHdrd3YpOw0KPiANCj4gSG93IGFib3V0IG5hbWluZyBhbGwgdGhlICJzY3JpcHRvciIgdmFyaWFi bGVzICJjb250ZW50X21hbmFnZXIiLCBvcg0KPiAibWFuYWdlciIgaW5zdGVhZD8gIEFsc28sIHBs ZWFzZSBmaWxsIHRoaXMgZnVuY3Rpb24gdG8gODAgY29sdW1ucyBhcw0KPiB3ZWxsLg0KPiANCj4+ ICsgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hlZCAgKHNjcmlwdG9yLA0KPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfTUFUQ0hf RlVOQyB8IEdfU0lHTkFMX01BVENIX0RFVEFJTCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDAsIGdfcXVhcmtfZnJvbV9zdHJpbmcgKHNuYW1lKSwgMCwNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKHdl YmtpdF9zY3JpcHRfbWVzc2FnZV9jYiksIDApOw0KPiANCj4gVGhlcmUgaXMgZXh0cmEgd2hpdGVz cGFjZSBoZXJlLiAgDQo+IA0KPj4gKw0KPj4gREVGVU4gKCJ4d2lkZ2V0LXJlc2l6ZSIsIEZ4d2lk Z2V0X3Jlc2l6ZSwgU3h3aWRnZXRfcmVzaXplLCAzLCAzLCAwLA0KPj4gICAgICAgIGRvYzogLyog UmVzaXplIFhXSURHRVQgdG8gTkVXX1dJRFRILCBORVdfSEVJR0hULiAgKi8gKQ0KPj4gICAoTGlz cF9PYmplY3QgeHdpZGdldCwgTGlzcF9PYmplY3QgbmV3X3dpZHRoLCBMaXNwX09iamVjdCBuZXdf aGVpZ2h0KQ0KPj4gQEAgLTM5MTksNiArNDA5MiwxNCBAQCBzeW1zX29mX3h3aWRnZXQgKHZvaWQp DQo+PiAgIGRlZnN1YnIgKCZTeHdpZGdldF93ZWJraXRfZXhlY3V0ZV9zY3JpcHQpOw0KPj4gICBE RUZTWU0gKFF3ZWJraXQsICJ3ZWJraXQiKTsNCj4+IA0KPj4gKyAgZGVmc3ViciAoJlN4d2lkZ2V0 X3dlYmtpdF9hZGRfdXNlcl9zY3JpcHQpOw0KPj4gKyAgREVGU1lNIChRc3RhcnQsICJzdGFydCIp Ow0KPj4gKyAgREVGU1lNIChRZW5kLCAiZW5kIik7DQo+PiArICBkZWZzdWJyICgmU3h3aWRnZXRf d2Via2l0X3JlbW92ZV9hbGxfdXNlcl9zY3JpcHRzKTsNCj4+ICsNCj4+ICsgIGRlZnN1YnIgKCZT eHdpZGdldF93ZWJraXRfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2UpOw0KPj4gKyAgZGVmc3ViciAo JlN4d2lkZ2V0X3dlYmtpdF91bnJlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlKTsNCj4+ICsNCj4+ICAg ZGVmc3ViciAoJlN4d2lkZ2V0X3NpemVfcmVxdWVzdCk7DQo+PiAgIGRlZnN1YnIgKCZTZGVsZXRl X3h3aWRnZXRfdmlldyk7DQo+IA0KPiBXaHkgYXJlIG5vbmUgb2YgdGhlIG5ldyB4d2lkZ2V0IGV2 ZW50IGFuZCBhbGwgb2YgdGhlc2UgbmV3IGZ1bmN0aW9ucw0KPiBkb2N1bWVudGVkIGluIHRoZSBM aXNwIHJlZmVyZW5jZSBtYW51YWw/DQo+IA0KPiBJIGRpZCBub3QgbG9vayBhdCB0aGUgTlMgY29k ZSB2ZXJ5IGNsb3NlbHksIGJ1dCBJIGFsc28gY2FuJ3Qgc2VlIHdoZXJlDQo+IGFueXRoaW5nIGlz IGRlYWxsb2NhdGVkIHRoZXJlLiAgSWYgeW91IHdyb3RlIHRoYXQgY29kZSBhc3N1bWluZw0KPiBP YmplY3RpdmUtQyBhdXRvbWF0aWMgcmVmZXJlbmNlIGNvdW50aW5nIGlzIHVzZWQgaW4gRW1hY3Ms IGl0IHdpbGwgaGF2ZQ0KPiB0byBiZSByZXdyaXR0ZW4gdG8gdXNlIG1hbnVhbCBtZW1vcnkgbWFu YWdlbWVudCwgYXMgT2JqZWN0aXZlLUMgZmVhdHVyZXMNCj4gbm90IHN1cHBvcnRlZCBieSBHQ0Mg YXJlIG5vdCBhbGxvd2VkIGluIEVtYWNzLg0KPiANCg0K