Received: by 2002:a05:6602:18e:0:0:0:0 with SMTP id m14csp5819504ioo; Wed, 1 Jun 2022 13:16:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzx+PtkxJ/WB5Mj6mMhKGQ8TdsDxESBKOd+zUDika02G1FgLzreYDUZzo9UKNKMPlEntSDe X-Received: by 2002:a17:903:2305:b0:163:64c7:f9ff with SMTP id d5-20020a170903230500b0016364c7f9ffmr1195890plh.46.1654114597904; Wed, 01 Jun 2022 13:16:37 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1654114597; cv=pass; d=google.com; s=arc-20160816; b=ifNQetJif21wimMl6XlnN88FgGQqCf3qzLEXpxJGFA3+QF6SQvJ5p+A7kDfYddmMx5 Opcu8rcaJ0G+ZYiEqEnN/coP6evqo3dFrNtHs5nOZK+XidmI8PDKGvOPrB3xi0LsyIyW XnN2HW1amMNJH0DjxEQLArYHR8+ufIcHHuUtWuxK8ojRjegFpKQINwcBdSPF9hB60zaF WGzrTnqry39tE4rITcRARlVmZZE+Kz9jeAXW74ySu4uIyC0jKHGei+SyTdD1U5s1/1nO siwR4NOEDNMsH25P9Bgudwf6g+otJaHmWObwOoaR1RMOYl3Cf6oS9r6Ue/J1q5OXqEY6 7Aww== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:msscp.transfermailtomossagent:mime-version :content-transfer-encoding:content-language:accept-language :in-reply-to:references:message-id:date:thread-index:thread-topic :subject:cc:to:from; bh=FtRH0UE5helG75iR1s0K7co7sli7zlC5FDcEgyNdBgQ=; b=KuEbd1RnfzrN6bN4Y7POKgJiYSmWLxu0eS+WbszcHB2/IaqJ/xXDx3wXr3MpLyPoPl 0iWlERwlRTH6RXOVKjb3EKXME8wWMknVGUe9HcEpEExUX4lrWK/WPLVOT6jWhMXKL9pS Vc64i2hVsEQDW7vpHPmUkK7A+XfefbRgHAX1zI4pRI/lCLGKTC4gj3kB1pJ4268wT2Xp kPxeDNEz+1SpOFYzAyYuZStEvLjzjrJauTvxwr4Tr3ezog1YF6ZsBRqG7vW2Ty+hqfuW 7Bc8JWT7WXChwndcvfXI8BmtnmWRwEcQ6lgGy9Fx+4ZQc/g6mnNwPGldByQwGHZkI6Pg KPsg== ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=toshiba.co.jp dkim=pass dkdomain=toshiba.co.jp dmarc=pass fromdomain=toshiba.co.jp); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=toshiba.co.jp Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id u14-20020a056a00124e00b0051bb98abf24si2595771pfi.197.2022.06.01.13.16.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Jun 2022 13:16:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=toshiba.co.jp dkim=pass dkdomain=toshiba.co.jp dmarc=pass fromdomain=toshiba.co.jp); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=toshiba.co.jp Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id CC1052EA2E; Wed, 1 Jun 2022 12:30:25 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349035AbiFABrJ (ORCPT + 99 others); Tue, 31 May 2022 21:47:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42372 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231584AbiFABrG (ORCPT ); Tue, 31 May 2022 21:47:06 -0400 Received: from mo-csw.securemx.jp (mo-csw1514.securemx.jp [210.130.202.153]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 07879DF78; Tue, 31 May 2022 18:47:02 -0700 (PDT) Received: by mo-csw.securemx.jp (mx-mo-csw1514) id 2511kWcN009034; Wed, 1 Jun 2022 10:46:32 +0900 X-Iguazu-Qid: 34trSfAbwQW1mZY42R X-Iguazu-QSIG: v=2; s=0; t=1654047992; q=34trSfAbwQW1mZY42R; m=UI8YS9DMVsSN9U8Hs496vHGW753ry6BEsrZOKJpZKTY= Received: from imx2-a.toshiba.co.jp (imx2-a.toshiba.co.jp [106.186.93.35]) by relay.securemx.jp (mx-mr1512) id 2511kVk3013414 (version=TLSv1.2 cipher=AES128-GCM-SHA256 bits=128 verify=NOT); Wed, 1 Jun 2022 10:46:31 +0900 X-SA-MID: 39011707 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E4XR+lm9LXcptJTnB9P5ZPaQoTBgEDV+2k0/+lan8/QkhgIeQDD4ZU3F4GJf4lKVZLHlM6XNbPQXR/DujGj9j7Ln2ZItptoufSIZgnqtnQ82FjQiCxdjrvAoZxo5XeDX8vfNcF93FW61KeXIFz7F1EzW8MRU5UiBZPmU6gDKYS5QJfbTSf1vgYJprdFR++ZhpNXRE94Ye2r83KtlwpTbgUcXjL3dnkrHOJPiL2d4wNlJXwd3SDQDX/ta64DC7W1D3pBOSMeA39vP8bJ9JZrpDIeFFH1N1RgBLFhBzytAdBOByameXgRSkFoInodI08Zy3SvlOd2DOddUyPKYUx3//g== 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=FtRH0UE5helG75iR1s0K7co7sli7zlC5FDcEgyNdBgQ=; b=GxOFo/n9cviIk5I7gqQSUB42h6gj3Rx4BFfws3wK5jmNtKRFadxekKYmHf29X189mlKGdMiVR9UlnQ7H2AK6vHNTMVgE9IZnxXh9G9XP/YfLJhfc+h5AcX417VQaVNrBdd/iUA0Z8QqiM7l6TYuvwkS6M/A03hprpnGW5r94z3VwkI5eHmF4UBvzSdauJxfC5XAMr4SUl4Op76XaR1sG9VIzqnzn5q03NwiQHKlicrFEt0D3d+rdBmQOyccwYkqO7MReyMAWyB1GZvaHX1VXVbIZ4r8VGL2hCiS5IJGbupzpBAQT2jxtDPksc9Y5HW7B2G/nXywP0up+zKhowUdwTw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=toshiba.co.jp; dmarc=pass action=none header.from=toshiba.co.jp; dkim=pass header.d=toshiba.co.jp; arc=none From: To: , , , , CC: , , , , Subject: RE: [PATCH v2 3/4] soc: visconti: Add Toshiba Visconti AFFINE image processing accelerator Thread-Topic: [PATCH v2 3/4] soc: visconti: Add Toshiba Visconti AFFINE image processing accelerator Thread-Index: AQHYWjoJG7hFnbOYkUqJ0Tf+DNvdw60bL7mAgB7M91A= Date: Wed, 1 Jun 2022 01:41:21 +0000 X-TSB-HOP2: ON Message-ID: References: <20220427132345.27327-1-yuji2.ishikawa@toshiba.co.jp> <20220427132345.27327-4-yuji2.ishikawa@toshiba.co.jp> In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=toshiba.co.jp; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 98adee39-9ff4-496b-89c7-08da436fd4c3 x-ms-traffictypediagnostic: OS3PR01MB8667:EE_ x-ld-processed: f109924e-fb71-4ba0-b2cc-65dcdf6fbe4f,ExtAddr,ExtFwd x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Umr/Fk+zWN+eLRI4On9GR2kht464aq/ZYkiI2/pVldBM6d7OelYlTT+WGi4Z7MkMldJXGCzTwgjNnFGy2grAotKqkEW9MDl9S5pR46Z4VBEeXg1uMM2iGvGEyucfVBNhAqTffyB+8BiB3nZcRD73UUJ9me/xHN8X+J7b+YD2K4KUw8Z0Dhgtk3ki8YdpzOuaV3oBjZ/Sc62D0LdQ/Mb0D3wcBYgjTd4Ez5zXhgUNrdcbMnMKmO9l7MvrsYne4w6CkRpQQMzP4iJt3VbV9vp65DFmiow58TgS4Ty4wK/vIVAka9aNwCOW1g4+HNcuUvyvMANOfi5a7u7L22YW08AlacgykqlLI9Wi3bdlE0f2qh8QTOumNxMoie+wngYSekn5S60Ss4P8gW+bLeKwEQu3En3wdcOMNTOq7PBvGU85P+11FFLNl5Beu6+mTLeR6999tMgcJCTNQC2gWP3OgB9Qro57v6E1O9LH4Ct7W/tWydfyYEYNgO4KQeWIHXnKH9k3XoNhGXwAe3WLnoWzcgi55bm9rOq6rRW+yNiJhAtnPT1xD3j9rT14ni1Ktz7YOuEPYPbrDJSEQsBG1JehnfmDFnmD2ka4+M8gN9BkuMX/gUCqX5LD67dwrJJUR+LD+IHfKTgURcFOILdV0fS1zomvHeVwcEVOEKj8HFQFqvjfqf8WEKwMS1DtQe3IaHTdvXrwIjvvimUtCfDFnRmzmlEcxYoOQpptWmbCCTdRnPk4bDiy1XuSsYOOLYWZfrCvajOkOGR13Btc811l3gwVIWk41wlgoeEADyJhQDBLcXGUfLU= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYAPR01MB6201.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(33656002)(30864003)(8936002)(966005)(5660300002)(7416002)(508600001)(38070700005)(122000001)(316002)(54906003)(110136005)(86362001)(71200400001)(52536014)(66476007)(66556008)(66946007)(66446008)(76116006)(64756008)(8676002)(4326008)(53546011)(7696005)(66574015)(6506007)(83380400001)(9686003)(186003)(26005)(2906002)(38100700002)(55016003)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UkJ6S0VkeU83VmpnUnVXT2RvZXd2NkRvUkRYTW9jSTVRaEV4Mk5leFBKTkxh?= =?utf-8?B?RUNIU2VuMVdMOWJLSmV3QllxTGxVWHRET0pac3RKdVZSQ1N6bXdERWZWOXk1?= =?utf-8?B?ME44QU9lNXVVWEFYMC9IdzM3aGJvN2FUN2swcXlqbXVHUFdQZEhWRGdSR0s3?= =?utf-8?B?K0dDMWVySVJxcyt2Z2hNbGtVem5xYllNQVIxK2VTenRoSmt3ekY4Q3Bjc0Vr?= =?utf-8?B?bmdjZmZsVzhldktWbGgra2JMbkQ2UHBrR1k4cGNEZXBNNkJncWw4bjUvUDFn?= =?utf-8?B?eDNYVWs1VDhldWIxMjJLL0tobDAwWHU1TEFtLzd4a0lVcHhjUDZBZGlNVkpE?= =?utf-8?B?THd2ejJLSXFqV1VNRkJpQjVBRmFNaGx2cUZOckszcUh1Q0l3TXFEYWYwT1kw?= =?utf-8?B?WkRkRzNscXE5b0owRisxTlFhckJVUXJvTFJnbExnQldDb2NjbG1XQXJYam5O?= =?utf-8?B?bEI5dG84eDJHcUxQNFc4a0pKSEhsVEVpcy9qRDg3c2tpdGcxMGxLdWJwbGMx?= =?utf-8?B?WTJyQmFPV3FyZFdzajIvR0pNOXhRM3JpWjlpeFNsWnN1UVkySzNoVkZZZGF4?= =?utf-8?B?SzJOWFc5Uk1jTVdBdmhabDhwd1NXeTJIbXJ6Q05FbjdCVExBS1c1RUQvOUIx?= =?utf-8?B?cDRqZkZtMitmMXBXbmVJSjY3VVRra1pDV2pxbGVWVFBZVkVqQnEwNlFlYWJP?= =?utf-8?B?WFNaTUYyTkQzT1IrdmdGS0t2c05pV0FRYVFGSWcrK05pUFJXclpjRFRxTUVt?= =?utf-8?B?clJLNmdiZnk0TFVBeXg1YXJTbVAwOVBUU0tDTkJnVmJIazlaYTIzUlh1UTVw?= =?utf-8?B?aDRUZ09RL2YwZm9KWEtlL0FoMk90NThOTUlRWXR5OGxhMk1SeW92a1YycW92?= =?utf-8?B?WS9QbXcvQTZLWm9zM0hYbkg3aStjaE5XWEFGNGtHTEtYRnc1aXFUOExwU01R?= =?utf-8?B?TSs0c0d4dCtEZnErd2RlRmFsVlZPQVZmQlNsN3JNb3lQL2ZEYm9EaXcrR210?= =?utf-8?B?aWVXeVVvczQrejQyb1VvQ1dSaUZ6RURMQ095WjhIYWVzaThWcUYzbG1kWFo5?= =?utf-8?B?aHkvMkJrNHVZaGd4VGdSRnk5czIxZXhDZktJVmhpeXMzdE9qak1jK1hTNTUv?= =?utf-8?B?YWljQ29YQjVxNjlROHRJYmFDMjVqUkxjbkZBV0NvY2JqcjlXdkJoZGxEdUZ2?= =?utf-8?B?Wmd3b3d5Q3NiS2JPWWc1NGZpRHBlVVR1UjNJQTR4aWtpRGk2bEpPaUp1eDNN?= =?utf-8?B?VFMrWjljakZnYUZEODZhTDRhL091cDdTUDFEMDBqVGZTNWw2VWppWW93NUcw?= =?utf-8?B?cHA3VUwzd3IwdS8vTU00UWVka2oxR1dXWWxRUjYwMWVrL0tJbmdvSDE2S3dq?= =?utf-8?B?bUFkNjBTUmFZcnVxcGhabmZXc0ovRVFETnNTb2h6bHZ3WlQ0Qk9JSnA3cTZ3?= =?utf-8?B?b0l2S1RMVTZHUXg0dE9UcEtqNzI0KzRyc3dTZ2xTbXRqd3RvdHhldE9BdHo0?= =?utf-8?B?ZjFURU01OGFmN2NadUIzK3JqYjBWM0VGTnIrSzNLelRoWlFPZnlSV3lia3BC?= =?utf-8?B?ZGo2SDh6VFNqQndUU0haeGN0MTQwbERWbW9aNVhXRlM0MEUzWHFLdm5ZRzRM?= =?utf-8?B?Qjh4Z2NsUGxRdWMzMUhvbVRHOVlqak9CVHBTTW1NczdvVXdPMnA3UW5IZTFu?= =?utf-8?B?Qlk4ZEIrUjlPS3NqekpUNU0zOHREZC9Ba1lFY2xuZHRBVEZCb01FSk5wSW4v?= =?utf-8?B?U0JKNzZYRDIrMXJDbnN4K2hYNVhsdUhpdGZ5Q1lIVkZkU0F0LzlzQlQyeGNT?= =?utf-8?B?MVNJWWRPblZaK0xoVUFKZWNJSGZzKzhnUXdNWjJEUUN6ekJoQmxnWW94ZitC?= =?utf-8?B?QnBDbjkxN0w0T2ZIL2Q4ME9vWjQ1bzBiOW9WeEdnV29lL3JFV2NjQVJwa21Z?= =?utf-8?B?aU5CNVdHc2VJcFV3V2xpVFlBUnVBQ2pLYTZSSUxOdlRoTkhwM205UXpuR2VE?= =?utf-8?B?dVVSRXkwandiYzVOYWxsMHJ6STZKUzhMYTltaE5CZURWQ0xzclRSMU9SQmtI?= =?utf-8?B?aCt3SkVoVzY5dFJPVmNIYWRxajZYTDdkWTR5V2FTOWorV3JxaCtxL3FEZlZ5?= =?utf-8?B?T2hnY20zRmF2aEM1c0JZbFZ5VUJhOXB6OXJIOWJXcENJNzF6QmpJalVmWmsz?= =?utf-8?B?aVFDeW45ZXlxaExGSERJK2JZSllTQ3l3V1JEVTJGT1BSaHMxN1NCWi96N0x6?= =?utf-8?B?WVQ4Q3YzdFB5V2FqQ2dPbE1XckNIcU9XWW9iMzB4Z25qK1p6MWRvb0dGN2ha?= =?utf-8?B?ZldFTW1SL0tac0lsczRmSThHdnZmVWJrV0tiWFRFRjBOY3ROWlBnOHpKWWZy?= =?utf-8?Q?yfKND2fgtk8IkGes=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYAPR01MB6201.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 98adee39-9ff4-496b-89c7-08da436fd4c3 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jun 2022 01:41:21.6049 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f109924e-fb71-4ba0-b2cc-65dcdf6fbe4f X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: aNtLb5Bk7aL5TAoW6rkiWMHQJR9UdzBIfS1uOV7xztXrOhxgAixwVLqNWCujpPG33ZYUgF3h44sj4HzdSr1nmPZRTm0Am7VPTuyMuIV/Pbc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB8667 X-OriginatorOrg: toshiba.co.jp MSSCP.TransferMailToMossAgent: 103 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGksIEhhbnMsDQoNCldpdGggeW91ciBhZHZpY2UgZm9yIEROTiBhY2NlbGVyYXRvciwgSSBwcmVw YXJlZCBzb21lIGRlc2NyaXB0aW9uIG9mIEFGRklORSBJUEEgYW5kIGl0cyB1c2FnZS4NCg0KIyMj IyBIYW5kbGluZyBtZW1vcnkgYmxvY2tzIGZvciBWaXNjb250aTUgYWNjZWxlcmF0b3JzIChzYW1l IGRlc2NyaXB0aW9uIGZvciBETk4gYWNjZWxlcmF0b3IpDQoNClZpc2NvbnRpNSBJbWFnZS1Qcm9j ZXNzaW5nLUFjY2VsZXJhdG9ycyBkbyBub3QgaGF2ZSBmaW5lIGdyYWluZWQgSU9NTVUsIGFzIENQ VSBoYXZlLg0KVGhlcmVmb3JlLCBtZW1vcnkgcmVnaW9uIHRvIGJlIHBhc3NlZCB0byB0aGUgYWNj ZWxlcmF0b3JzIHNob3VsZCBiZSBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMuDQpXZSB1c2UgRE1BLUJV RiBiYWNrZWQgYnkgQ01BIChDb250aWd1b3VzIE1lbW9yeSBBbGxvY2F0b3IpIHRvIGFsbG9jYXRl IG1lbW9yeSByZWdpb25zIGZvciBzaGFyaW5nIGJldHdlZW4gQ1BVL0lQQXMuDQpPcmlnaW5hbGx5 LCBpbiB2NC4xOSBiYXNlZCBpbXBsZW1lbnRhdGlvbiwgdGhlIElPTiBhbGxvY2F0b3Igd2FzIHVz ZWQgdG8gYWxsb2NhdGUgRE1BLUJVRiBpbnN0YW5jZXMuDQpGb3IgdGhlIGxhdGVzdCBpbXBsZW1l bnRhdGlvbiwgRE1BLUJVRiBIRUFQUyBpcyB1c2VkLg0KDQpUd28gc3RydWN0dXJlIHR5cGVzIGFy ZSB1c2VkIHRvIHJlcHJlc2VudCBtZW1vcnkgcmVnaW9uIHBhc3NlZCB0byBkcml2ZXJzLg0KKiBz dHJ1Y3QgZHJ2X2lwYV9idWZmZXJfaW5mbw0KICAqIHRvIGRlc2NyaWJlIHdob2xlIERNQS1CVUYg aW5zdGFuY2UNCiogc3RydWN0IGRydl9pcGFfYWRkcg0KICAqIHRvIGRlc2NyaWJlIGEgbWVtb3J5 IHJlZ2lvbiBpbiBhIERNQS1CVUYgaW5zdGFuY2UNCg0KZm9yIGRldGFpbHMsIHNlZSB1c2FnZSBz YW1wbGUgb2YgZWFjaCBJUEEgZHJpdmVyDQoNCg0KIyMjIyBJbWFnZSBQcm9jZXNzaW5nIEFjY2Vs ZXJhdG9ycyBvdmVydmlldyAoc2FtZSBkZXNjcmlwdGlvbiBmb3IgRE5OIGFjY2VsZXJhdG9yKQ0K DQpWaXNjb250aTUgU29DIGhhcyBmb2xsb3dpbmcgaW1hZ2UgcHJvY2Vzc2luZyBhY2NlcmVyYXRv cnMNCg0KKiBBRkZJTkU6IDEgaW5wdXQgaW1hZ2UsIDEgb3V0cHV0IGltYWdlOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFmZmluZSB0cmFuc2Zvcm0sIEhvbW9n cmFwaHkgdHJhbnNmb3JtLCBQb2x5bm9taWFsIGxlbnMgZGlzdG9ydGlvbiwgTFVUIHRyYW5zZm9y bQ0KKiBETk46ICAgIE4gaW5wdXQgZmVhdHVyZSB2ZWN0b3IsIE4gb3V0cHV0IGZlYXR1cmUgdmVj dG9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZXAgbmV1cmFsIG5ldHdvcmsgb3BlcmF0 aW9uDQoqIFBZUkFNSUQgMyBpbnB1dCBpbWFnZSwgMyAqIE4gb3V0cHV0IGltYWdlOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzaXplIGdyYXlzY2FsZS9jb2xvciBp bWFnZSB3aXRoIE4gZGlmZmVyZW50IHBhcmFtZXRlcnMNCiogRFNQSUY6ICBNIGlucHV0IGltYWdl LCBOIG91dHB1dCBpbWFnZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBWYXJpb3VzIG9wZWF0aW9ucyBvbiBpbWFnZXMNCiogSE9YOiAgICAxIGlucHV0IGltYWdl IChtdWx0aSBST0kpLCAxIGlucHV0IGRpY3Rpb25hcnkxIGxpa2VsaWhvb2QvZmVhdHVyZSB2ZWN0 b3I7ICBFeHRlbmRlZCBIaXN0b2dyYW0gb2YgT3JpZW50ZWQgR3JhZGllbnQgYmFzZWQgcGF0dGVy biBtYXRjaGluZw0KKiBIQU1BVDogIDIgaW5wdXQgZmVhdHVyZSB2ZWN0b3JzOiAxIG91dHB1dCBj b3JyZGluYXRlIHZlY3RvcjsgICAgICAgICAgICAgICAgICAgICAgIEhhbW1pbmcgZGlzdGFuY2Ug bWF0Y2hpbmcgZm9yIHN0ZXJlbyB2aXNpb24NCiogRkxNQVQ6ICAzIGlucHV0IGltYWdlLCBOIGlu cHV0IGZlYXR1cmUgcG9pbnQsIE4gb3V0cHV0IG1hdGNoZWQgcG9pbnQ7ICAgICAgICAgICAgICBP cHRpY2FsIGZsb3cgbWF0Y2hpbmcNCiogU01MREI6ICAxIGlucHV0IGltYWdlLCBOIGlucHV0IGZl YXR1cmUgcG9pbnQsIE4gb3V0cHV0IGZlYXR1cmUgdmVjdG9yOyAgICAgICAgICAgICBBY2NlbGVy YXRlZC1LQVpFIGZlYXR1cmUgZGVzY3JpcHRvciBhY2NlbGVyYXRvcg0KKiBTVE1BVDogIDIgaW5w dXQgaW1hZ2UsIDEgb3V0cHV0IGRpc3Bhcml0eSBpbWFnZTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFN0ZXJlbyBkaXNwYXJpdHkNCg0Kc2VlIFswXSBGaWcgNy4yLjEgZm9yIGJs b2NrIGRpYWdyYW0gKG9mIHByb3RvdHlwZSBjaGlwKQ0KDQoNCiMjIyMgQWZmaW5lIE92ZXJ2aWV3 DQoNCkFGRklORSBJUEEgaXMgYSBwcm9wcmlldGFyeSBpbWFnZSBwcm9jZXNzaW5nIGhhcmR3YXJl IGRldmVsb3BlZCBieSBUb3NoaWJhLg0KVmlzY29udGk1IFNvQyBoYXMgMiBpbnN0YW5jZXMgb2Yg QUZGSU5FIElQQSBoYXJkd2FyZS4NCkl0IGhhcyA0IG9wZXJhdGlvbiBtb2RlczoNCiAgKiBBZmZp bmUgKExpbmVhcikgdHJhbnNmb3JtYXRpb24NCiAgKiBIb21vZ3JhcGh5IHRyYW5zZm9ybWF0aW9u DQogICogUG9seW5vbWlhbCBsZW5zIGRpc3RvcnRpb24NCiAgKiBMVVQgYmFzZWQgdHJhbnNmb3Jt YXRpb24NCkl0IGFjY2VwdHMgMSBpbnB1dCBpbWFnZSBhbmQgeWllbGRzIDEgb3V0cHV0IGltYWdl IGF0IGFuIG9wZXJhdGlvbi4NCg0KDQojIyMjIElucHV0IC8gT3V0cHV0DQoNCklucHV0OiA4Yml0 IGdyYXlzY2FsZSBvciAxNmJpdCBncmF5c2NhbGUgaW1hZ2UNCk91dHB1dDogOGJpdCBncmF5c2Nh bGUgb3IgMTZiaXQgZ3JheXNjYWxlIGltYWdlDQoNCkFGRklORSBJUEEgZHJpdmVyIGFjY2VwdHMg YW4gaW5zdGFuY2Ugb2YgInN0cnVjdCBkcnZfYWZmaW5lX2Rlc2NyaXB0b3IiIHdoaWNoIGluY2x1 ZGVzIGlucHV0L291dHB1dCBpbWFnZXMgYW5kIG9wZXJhdGlvbiBwYXJhbWV0ZXJzLg0KDQoNCiMj IyMgRGVzY3JpcHRvciBCdWlsZGVyIGF0IHVzZXJsYW5kDQoNCkZvbGxvd2luZyBBUElzIGFyZSBw cm92aWRlZCB0byBidWlsZCBhIGRlc2NyaXB0b3IgaW5zdGFuY2UgYXQgdXNlcmxhbmQuDQoNCi8q IGRlZmluZWQgaW4gZHJ2X2FmZmluZV91dGlsLmggKi8NCmludDMyX3QgZHJ2X0FGRklORV9jb25m aWdfZGVzY3JpcHRfaW5pdChzdHJ1Y3QgZHJ2X2FmZmluZV9kZXNjcmlwdG9yICpkZXNjLCBzdHJ1 Y3QgZHJ2X2lwYV9idWZmZXJfaW5mbyAqYnVmZmVyLCBpbnQzMl90IGJ1ZmZlcl9udW0pOw0KaW50 MzJfdCBkcnZfQUZGSU5FX2NvbmZpZ19pbnB1dF9pbWFnZShzdHJ1Y3QgZHJ2X2FmZmluZV9kZXNj cmlwdG9yICpkZXNjLCBzdHJ1Y3QgZHJ2X2lwYV9hZGRyIHNyY19hZGRyLCBpbnQzMl90IHNyY193 aWR0aCwgaW50MzJfdCBzcmNfaGVpZ2h0LCBpbnQzMl90IHNyY19waXRjaCwgaW50MzJfdCBzcmNf ZGVwdGgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQppbnQzMl90IGRy dl9BRkZJTkVfY29uZmlnX291dHB1dF9pbWFnZShzdHJ1Y3QgZHJ2X2FmZmluZV9kZXNjcmlwdG9y ICpkZXNjLCBzdHJ1Y3QgZHJ2X2lwYV9hZGRyIGRzdF9hZGRyLCBpbnQzMl90IGRzdF93aWR0aCwg aW50MzJfdCBkc3RfaGVpZ2h0LCBpbnQzMl90IGRzdF9vZmZzZXRfeCwgaW50MzJfdCBkc3Rfb2Zm c2V0X3ksIHVpbnQxNl90IGZpbGxfdmFsdWUsIGludDMyX3QgZHN0X3BpdGNoLCBpbnQzMl90IGRz dF9kZXB0aCkNCmludDMyX3QgZHJ2X0FGRklORV9jb25maWdfaW50ZXJwb2xhdGlvbl9tb2RlKC4u LikNCmludDMyX3QgZHJ2X0FGRklORV9jb25maWdfbGluZWFyKC4uLikNCmludDMyX3QgZHJ2X0FG RklORV9jb25maWdfaG9tb2dyYXBoeSguLi4pDQppbnQzMl90IGRydl9BRkZJTkVfY29uZmlnX3Vu ZGlzdCguLi4pDQppbnQzMl90IGRydl9BRkZJTkVfY29uZmlnX3RhYmxlKC4uLikNCmludDMyX3Qg ZHJ2X0FGRklORV9jb25maWdfZGVzY3JpcHRfZmluYWxpemUoc3RydWN0IGRydl9hZmZpbmVfZGVz Y3JpcHRvciAqZGVzYykNCg0Kc3RydWN0IGRydl9hZmZpbmVfZGVzY3JpcHRvciBpcyBkZWZpbmVk IGluIGRyaXZlcnMvc29jL3Zpc2NvbnRpL3VhcGkvYWZmaW5lLmguDQpJIHRoaW5rIHRoaXMgaGVh ZGVyIHNob3VsZCBiZSBwbGFjZWQgYW55d2hlcmUgZWxzZSB0byBiZSBjb2xsZWN0ZWQgb24gIm1h a2UgaGVhZGVyc19pbnN0YWxsIiBhY3Rpb24gb2Yga2VybmVsIGJ1aWxkaW5nLg0KDQoNCiMjIyMg VXNhZ2Ugc2FtcGxlICh3aXRob3V0IGVycm9yIGhhbmRsZXJzKQ0KDQogICAgI2luY2x1ZGUgPGxp bnV4L2RtYS1oZWFwLmg+DQogICAgI2luY2x1ZGUgImRydl9pcGEuaCIgDQogICAgI2luY2x1ZGUg ImRydl9hZmZpbmUuaCINCiAgICAjaW5jbHVkZSAiZHJ2X2FmZmluZV91dGlsLmgiIA0KDQogICAg aW50IGFsbG9jYXRlX2J1ZmZlcihpbnQgZmRfaGVhcCwgaW50IHNpemUpIA0KICAgIHsNCiAgICAg ICAgc3RydWN0IGRtYV9oZWFwX2FsbG9jYXRpb25fZGF0YSBoZWFwX2RhdGFfaW49ezB9Ow0KICAg ICAgICBpbnQgcmV0Ow0KDQogICAgICAgIGhlYXBfZGF0YV9pbi5sZW4gPSBST1VORFVQX1BPVzIo c2l6ZSk7DQogICAgICAgIGhlYXBfZGF0YV9pbi5mZF9mbGFncyA9IE9fUkRXUiB8IE9fQ0xPRVhF QzsNCg0KICAgICAgICByZXQgPSBpb2N0bChmZF9oZWFwLCBETUFfSEVBUF9JT0NUTF9BTExPQywg JmhlYXBfZGF0YV9pbik7DQogICAgICAgIGlmIChyZXQgPDApDQogICAgICAgICAgICByZXR1cm4g LTE7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIHJldHVybiBoZWFwX2RhdGFfaW4uZmQ7DQog ICAgfQ0KDQogICAgdm9pZCBhZmZpbmVfc2FtcGxlKGludCBmZF9hZmZpbmUsIGludCBmZF9zcmMs IGludCBmZF9kc3QpIA0KICAgIHsNCiAgICAgICAgc3RydWN0IGRydl9pcGFfYnVmZmVyX2luZm8g YnVmaW5mb1syXSA9IHsNCiAgICAgICAgICAgIHsuZmQ9ZmRfc3JjLCAuY29oZXJlbnQ9dHJ1ZSwg LmRpcmVjdGlvbj1EUlZfSVBBX0RJUl9UT19ERVZJQ0V9LA0KICAgICAgICAgICAgey5mZD1mZF9k c3QsIC5jb2hlcmVudD10cnVlLCAuZGlyZWN0aW9uPURSVl9JUEFfRElSX0ZST01fREVWSUNFfSwN CiAgICAgICAgfTsNCiAgICAgICAgc3RydWN0IGRydl9pcGFfYWRkciBzcmNfYWRkciA9IHsuYnVm ZmVyX2luZGV4PTAsIC5vZmZzZXQ9MH07DQogICAgICAgIHN0cnVjdCBkcnZfaXBhX2FkZHIgZHN0 X2FkZHIgPSB7LmJ1ZmZlcl9pbmRleD0xLCAub2Zmc2V0PTB9Ow0KICAgICAgICBzdHJ1Y3QgZHJ2 X2FmZmluZV9kZXNjcmlwdG9yIGRlc2M7DQoNCiAgICAgICAgZHJ2X0FGRklORV9jb25maWdfZGVz Y3JpcHRfaW5pdCgmZGVzYywgYnVmaW5mbywgMik7DQogICAgICAgIGRydl9BRkZJTkVfY29uZmln X2lucHV0X2ltYWdlKCZkZXNjLCBzcmNfYWRkciwgU1JDX1dJRFRILCBTUkNfSEVJR0hULCBTUkNf UElUQ0gsIFNSQ19ERVBUSF84KTsNCiAgICAgICAgZHJ2X0FGRklORV9jb25maWdfb3V0cHV0X2lt YWdlKCZkZXNjLCBkc3RfYWRkciwgRFNUX1dJRFRILCBEU1RfSEVJR0hULCAwLCAwLCAwLCBEU1Rf UElUQ0gsIERTVF9ERVBUSF84KTsNCiAgICAgICAgZHJ2X0FGRklORV9jb25maWdfaW50ZXJwb2xh dGlvbl9tb2RlKCZkZXNjLCBEUlZfQUZGSU5FX0JJTElORUFSLCBEUlZfQUZGSU5FX0JJQ0JfQV8x XzAwKTsNCiAgICAgICAgZHJ2X0FGRklORV9jb25maWdfbGluZWFyKCZkZXNjLCAoZmxvYXQpKDEu NSksIDAuMCwgMC4wLCAwLjAsIChmbG9hdCkoMS41KSwgMC4wLCBEUlZfQUZGSU5FX0ZJUlNUX09S REVSKTsNCiAgICAgICAgZHJ2X0FGRklORV9jb25maWdfZGVzY3JpcHRfZmluYWxpemUoJmRlc2Mp Ow0KDQogICAgICAgIGlvY3RsKGZkX2FmZmluZSwgSU9DX0lQQV9TVEFSVCwgJmRlc2MpOw0KDQog ICAgICAgIHsNCiAgICAgICAgICAgIHN0cnVjdCBwb2xsZmQgZmRzW10gPSB7LmZkPWZkX2FmZmlu ZSwgLmV2ZW50cz1QT0xMX0lOLCAucmV2ZW50cyA9IDB9Ow0KICAgICAgICAgICAgcG9sbChmZHMs IDEsIDEwMDApOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdm9pZCBzYW1wbGUoKQ0KICAgIHsN CiAgICAgICAgaW50IGZkX2FmZmluZSwgZmRfaGVhcCwgZmRfc3JjLCBmZF9kc3Q7DQogICAgICAg IGZkX2FmZmluZSA9IG9wZW4oIi9kZXYvYWZmaW5lMCIsIE9fUkRXUik7DQogICAgICAgIGZkX2hl YXAgICA9IG9wZW4oIi9kZXYvZG1hX2hlYXAvbGludXgsY21hIiwgT19SRFdSKTsNCiAgICAgICAg ZmRfc3JjICAgID0gYWxsb2NhdGVfYnVmZmVyKGZkX2hlYXAsIFNSQ19QSVRDSCpTUkNfSEVJR0hU KTsNCiAgICAgICAgZmRfZHN0ICAgID0gYWxsb2NhdGVfYnVmZmVyKGZkX2hlYXAsIERTVF9QSVRD SCpEU1RfSEVJR0hUKTsNCg0KICAgICAgICAvKiBmaWxsIGluaXRpYWwgdmFsdWUgdG8gc3JjIGJ1 ZmZlciBoZXJlICovDQoNCiAgICAgICAgYWZmaW5lX3NhbXBsZShmZF9hZmZpbmUsIGZkX3NyYywg ZmRfZHN0KTsNCg0KICAgICAgICAuLi4NCiAgICB9DQoNCg0KIyMjIyBSZWZlcmVuY2UNCg0KKiBb MF0gaHR0cHM6Ly90b3NoaWJhLnNlbWljb24tc3RvcmFnZS5jb20vY29udGVudC9kYW0vdG9zaGli YS1zcy12Mi9tYXN0ZXIvZW4vY29tcGFueS90ZWNobmljYWwtcmV2aWV3L3BkZi90ZWNobmljYWwt cmV2aWV3LTE4X2UucGRmDQogICogRmlnIDcuMi4xIHNob3dzIHRoZSB3aG9sZSBhcmNoaXRlY3R1 cmUgb2YgcHJvdG90eXBlIGNoaXANCg0KUmVnYXJkcywNCll1amkNCg0KPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBIYW5zIFZlcmt1aWwgPGh2ZXJrdWlsQHhzNGFsbC5ubD4N Cj4gU2VudDogVGh1cnNkYXksIE1heSAxMiwgMjAyMiA4OjE5IFBNDQo+IFRvOiBpc2hpa2F3YSB5 dWppKOefs+W3nSDmgqDlj7gg4peL77yy77yk77yj4pah77yh77yp77y077yj4peL77yl77yh6ZaL KQ0KPiA8eXVqaTIuaXNoaWthd2FAdG9zaGliYS5jby5qcD47IFJvYiBIZXJyaW5nIDxyb2JoK2R0 QGtlcm5lbC5vcmc+Ow0KPiBpd2FtYXRzdSBub2J1aGlybyjlsqnmnb4g5L+h5rSLIOKWoe+8s++8 t++8o+KXr++8oe+8o++8tCkNCj4gPG5vYnVoaXJvMS5pd2FtYXRzdUB0b3NoaWJhLmNvLmpwPjsg U3VtaXQgU2Vtd2FsDQo+IDxzdW1pdC5zZW13YWxAbGluYXJvLm9yZz47IENocmlzdGlhbiBLw7Zu aWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4NCj4gQ2M6IGxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsNCj4gbGludXgt bWVkaWFAdmdlci5rZXJuZWwub3JnOyBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOw0K PiBsaW5hcm8tbW0tc2lnQGxpc3RzLmxpbmFyby5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2 MiAzLzRdIHNvYzogdmlzY29udGk6IEFkZCBUb3NoaWJhIFZpc2NvbnRpIEFGRklORSBpbWFnZQ0K PiBwcm9jZXNzaW5nIGFjY2VsZXJhdG9yDQo+IA0KPiBPbiA0LzI3LzIyIDE1OjIzLCBZdWppIElz aGlrYXdhIHdyb3RlOg0KPiA+IEFkZHMgc3VwcG9ydCB0byBBRkZJTkUgaW1hZ2UgcHJvY2Vzc2lu ZyBhY2NlbGVyYXRvciBvbiBUb3NoaWJhIFZpc2NvbnRpDQo+IEFSTSBTb0NzLg0KPiA+IFRoaXMg YWNjZWxlcmF0b3Igc3Vwb29ydHMgYWZmaW5lIHRyYW5zZm9ybSwgbGVucyB1bmRpc3RvcnRpb24g YW5kIExVVA0KPiB0cmFuc2Zvcm0uDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBZdWppIElzaGlr YXdhIDx5dWppMi5pc2hpa2F3YUB0b3NoaWJhLmNvLmpwPg0KPiA+IFJldmlld2VkLWJ5OiBOb2J1 aGlybyBJd2FtYXRzdSA8bm9idWhpcm8xLml3YW1hdHN1QHRvc2hpYmEuY28uanA+DQo+ID4gLS0t DQo+ID4gdjEgLT4gdjI6DQo+ID4gICAtIGFwcGx5IGNoZWNrcGF0Y2gucGwgLS1zdHJpY3QNCj4g PiAgIC0gcmVuYW1lZCBpZGVudGlmaWVyczsgaHdkX0FGRklORV94eHh4IHRvIGh3ZF9hZmZpbmVf eHh4eA0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL3NvYy92aXNjb250aS9LY29uZmlnICAgICAgICAg ICAgICAgICB8ICAgNiArDQo+ID4gIGRyaXZlcnMvc29jL3Zpc2NvbnRpL01ha2VmaWxlICAgICAg ICAgICAgICAgIHwgICAyICsNCj4gPiAgZHJpdmVycy9zb2MvdmlzY29udGkvYWZmaW5lL01ha2Vm aWxlICAgICAgICAgfCAgIDYgKw0KPiA+ICBkcml2ZXJzL3NvYy92aXNjb250aS9hZmZpbmUvYWZm aW5lLmMgICAgICAgICB8IDQ1MQ0KPiArKysrKysrKysrKysrKysrKysrDQo+ID4gIGRyaXZlcnMv c29jL3Zpc2NvbnRpL2FmZmluZS9od2RfYWZmaW5lLmMgICAgIHwgMjA2ICsrKysrKysrKw0KPiA+ ICBkcml2ZXJzL3NvYy92aXNjb250aS9hZmZpbmUvaHdkX2FmZmluZS5oICAgICB8ICA4MyArKysr DQo+ID4gIGRyaXZlcnMvc29jL3Zpc2NvbnRpL2FmZmluZS9od2RfYWZmaW5lX3JlZy5oIHwgIDQ1 ICsrDQo+ID4gIGRyaXZlcnMvc29jL3Zpc2NvbnRpL3VhcGkvYWZmaW5lLmggICAgICAgICAgIHwg IDg3ICsrKysNCj4gPiAgOCBmaWxlcyBjaGFuZ2VkLCA4ODYgaW5zZXJ0aW9ucygrKQ0KPiA+ICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zb2MvdmlzY29udGkvYWZmaW5lL01ha2VmaWxlDQo+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3NvYy92aXNjb250aS9hZmZpbmUvYWZmaW5l LmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc29jL3Zpc2NvbnRpL2FmZmluZS9o d2RfYWZmaW5lLmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc29jL3Zpc2NvbnRp L2FmZmluZS9od2RfYWZmaW5lLmgNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc29j L3Zpc2NvbnRpL2FmZmluZS9od2RfYWZmaW5lX3JlZy5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL3NvYy92aXNjb250aS91YXBpL2FmZmluZS5oDQo+ID4NCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zb2MvdmlzY29udGkvS2NvbmZpZw0KPiA+IGIvZHJpdmVycy9zb2MvdmlzY29u dGkvS2NvbmZpZyBpbmRleCA4YjEzNzg5MTcuLjAxNTgzZDQwNyAxMDA2NDQNCj4gPiAtLS0gYS9k cml2ZXJzL3NvYy92aXNjb250aS9LY29uZmlnDQo+ID4gKysrIGIvZHJpdmVycy9zb2MvdmlzY29u dGkvS2NvbmZpZw0KPiA+IEBAIC0xICsxLDcgQEANCj4gPiAraWYgQVJDSF9WSVNDT05USQ0KPiA+ ICsNCj4gPiArY29uZmlnIFZJU0NPTlRJX0FGRklORQ0KPiA+ICsgICAgYm9vbCAiVmlzY29udGkg QWZmaW5lIGRyaXZlciINCj4gPiArDQo+ID4gK2VuZGlmDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zb2MvdmlzY29udGkvTWFrZWZpbGUNCj4gPiBiL2RyaXZlcnMvc29jL3Zpc2NvbnRp L01ha2VmaWxlIGluZGV4IDhkNzEwZGEwOC4uYjI1YTcyNmMzIDEwMDY0NA0KPiA+IC0tLSBhL2Ry aXZlcnMvc29jL3Zpc2NvbnRpL01ha2VmaWxlDQo+ID4gKysrIGIvZHJpdmVycy9zb2MvdmlzY29u dGkvTWFrZWZpbGUNCj4gPiBAQCAtNCwzICs0LDUgQEANCj4gPiAgIw0KPiA+DQo+ID4gIG9iai15 ICs9IGlwYV9jb21tb24ubw0KPiA+ICsNCj4gPiArb2JqLSQoQ09ORklHX1ZJU0NPTlRJX0FGRklO RSkgKz0gYWZmaW5lLw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NvYy92aXNjb250aS9hZmZp bmUvTWFrZWZpbGUNCj4gPiBiL2RyaXZlcnMvc29jL3Zpc2NvbnRpL2FmZmluZS9NYWtlZmlsZQ0K PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwLi44MmY4M2IyZDYN Cj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9zb2MvdmlzY29udGkvYWZmaW5l L01ha2VmaWxlDQo+ID4gQEAgLTAsMCArMSw2IEBADQo+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjANCj4gPiArIw0KPiA+ICsjIE1ha2VmaWxlIGZvciB0aGUgVmlzY29udGkg QUZGSU5FIGRyaXZlciAjDQo+ID4gKw0KPiA+ICtvYmoteSArPSBhZmZpbmUubyBod2RfYWZmaW5l Lm8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2MvdmlzY29udGkvYWZmaW5lL2FmZmluZS5j DQo+ID4gYi9kcml2ZXJzL3NvYy92aXNjb250aS9hZmZpbmUvYWZmaW5lLmMNCj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMC4uZWVhMDQ1ZGNmDQo+ID4gLS0tIC9k ZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvc29jL3Zpc2NvbnRpL2FmZmluZS9hZmZpbmUuYw0K PiA+IEBAIC0wLDAgKzEsNDUxIEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wIE9SIEJTRC0yLUNsYXVzZQ0KPiA+ICsvKiBUb3NoaWJhIFZpc2NvbnRpIEFmZmluZSBB Y2NlbGVyYXRvciBTdXBwb3J0DQo+ID4gKyAqDQo+ID4gKyAqIChDKSBDb3B5cmlnaHQgMjAyMiBU T1NISUJBIENPUlBPUkFUSU9ODQo+ID4gKyAqIChDKSBDb3B5cmlnaHQgMjAyMiBUb3NoaWJhIEVs ZWN0cm9uaWMgRGV2aWNlcyAmIFN0b3JhZ2UNCj4gPiArQ29ycG9yYXRpb24gICovDQo+ID4gKw0K PiA+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2luaXQu aD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KPiA+ICsjaW5jbHVkZSA8bGlu dXgvaW9tbXUuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiA+ICsjaW5jbHVk ZSA8bGludXgvbWlzY2RldmljZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ ID4gKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2 aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4gPiArI2lu Y2x1ZGUgPGxpbnV4L3BvbGwuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4NCj4gPiAr DQo+ID4gKyNpbmNsdWRlICJod2RfYWZmaW5lLmgiDQo+ID4gKyNpbmNsdWRlICIuLi9pcGFfY29t bW9uLmgiDQo+ID4gKyNpbmNsdWRlICIuLi91YXBpL2FmZmluZS5oIg0KPiA+ICsNCj4gPiArc3Ry dWN0IGFmZmluZV9wcml2IHsNCj4gPiArCXN0cnVjdCBkZXZpY2UgKmRldjsNCj4gPiArCXN0cnVj dCBtaXNjZGV2aWNlIG1pc2NkZXY7DQo+ID4gKwlzdHJ1Y3QgbXV0ZXggbG9jazsNCj4gPiArCXZv aWQgX19pb21lbSAqcmVnczsNCj4gPiArCWludCBpcnE7DQo+ID4gKwl3YWl0X3F1ZXVlX2hlYWRf dCB3YWl0cTsNCj4gPiArCWVudW0gZHJ2X2lwYV9zdGF0ZSBzdGF0dXM7DQo+ID4gKwl1bnNpZ25l ZCBpbnQgaHdkX2V2ZW50Ow0KPiA+ICsJdW5zaWduZWQgaW50IHBvbGxfZXZlbnQ7DQo+ID4gKwlp bnQgaWQ7DQo+ID4gKwljaGFyIG5hbWVbMTZdOw0KPiA+ICsJYm9vbCBkbWFfY29oZXJlbnQ7DQo+ ID4gKwlzdHJ1Y3QgaHdkX2FmZmluZV9zdGF0dXMgaHdkX3N0YXR1czsNCj4gPiArDQo+ID4gKwlz dHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50DQo+ICpkYmFbRFJWX0FGRklORV9CVUZGRVJfSU5ERVhf TUFYXTsNCj4gPiArCXN0cnVjdCBzZ190YWJsZSAqc2d0W0RSVl9BRkZJTkVfQlVGRkVSX0lOREVY X01BWF07DQo+ID4gKwllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbg0KPiBkbWFfZGlyW0RSVl9BRkZJ TkVfQlVGRkVSX0lOREVYX01BWF07DQo+ID4gKwl1bnNpZ25lZCBpbnQgZG1hX2NvdW50Ow0KPiA+ ICsNCj4gPiArCWRtYV9hZGRyX3QgYnVmZmVyX2lvdmFbRFJWX0FGRklORV9CVUZGRVJfSU5ERVhf TUFYXTsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyB1MzIgYWZmaW5lX2lwYV9hZGRyX3Rv X2lvdmEoc3RydWN0IGFmZmluZV9wcml2ICpwcml2LCBzdHJ1Y3QNCj4gPiArZHJ2X2lwYV9hZGRy IGFkZHIpIHsNCj4gPiArCXUzMiBpb3ZhID0gMDsNCj4gPiArDQo+ID4gKwlpZiAoYWRkci5idWZm ZXJfaW5kZXggPCBwcml2LT5kbWFfY291bnQgJiYNCj4gPiArCSAgICBhZGRyLm9mZnNldCA8IHBy aXYtPmRiYVthZGRyLmJ1ZmZlcl9pbmRleF0tPmRtYWJ1Zi0+c2l6ZSkNCj4gPiArCQlpb3ZhID0g cHJpdi0+YnVmZmVyX2lvdmFbYWRkci5idWZmZXJfaW5kZXhdICsgYWRkci5vZmZzZXQ7DQo+ID4g KwlyZXR1cm4gaW92YTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBhZmZpbmVfYXR0 YWNoX2RtYV9idWYoc3RydWN0IGFmZmluZV9wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQNCj4gYnVm ZmVyX2luZGV4LA0KPiA+ICsJCQkJIHN0cnVjdCBkcnZfaXBhX2J1ZmZlcl9pbmZvICpidWZmZXJf aW5mbykgew0KPiA+ICsJaW50IHJldCA9IDA7DQo+ID4gKwlkbWFfYWRkcl90IGFkZHI7DQo+ID4g Kw0KPiA+ICsJaWYgKGJ1ZmZlcl9pbmRleCA+PSBEUlZfQUZGSU5FX0JVRkZFUl9JTkRFWF9NQVgp IHsNCj4gPiArCQlkZXZfZXJyKHByaXYtPmRldiwgIkJ1ZmZlciBpbmRleCBpbnZhbGlkOiBpbmRl eD0lZFxuIiwNCj4gYnVmZmVyX2luZGV4KTsNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiAr CX0NCj4gPiArDQo+ID4gKwlzd2l0Y2ggKGJ1ZmZlcl9pbmZvW2J1ZmZlcl9pbmRleF0uZGlyZWN0 aW9uKSB7DQo+ID4gKwljYXNlIERSVl9JUEFfRElSX05PTkU6DQo+ID4gKwkJcHJpdi0+ZG1hX2Rp cltwcml2LT5kbWFfY291bnRdID0gRE1BX05PTkU7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNl IERSVl9JUEFfRElSX1RPX0RFVklDRToNCj4gPiArCQlwcml2LT5kbWFfZGlyW3ByaXYtPmRtYV9j b3VudF0gPSBETUFfVE9fREVWSUNFOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBEUlZfSVBB X0RJUl9GUk9NX0RFVklDRToNCj4gPiArCQlwcml2LT5kbWFfZGlyW3ByaXYtPmRtYV9jb3VudF0g PSBETUFfRlJPTV9ERVZJQ0U7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNlIERSVl9JUEFfRElS X0JJRElSRUNUSU9OOg0KPiA+ICsJCXByaXYtPmRtYV9kaXJbcHJpdi0+ZG1hX2NvdW50XSA9IERN QV9CSURJUkVDVElPTkFMOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQlk ZXZfZXJyKHByaXYtPmRldiwgIkRNQSBkaXJlY3Rpb24gaW52YWxpZDogaW5kZXg9JWQNCj4gZGly PSVkXG4iLCBidWZmZXJfaW5kZXgsDQo+ID4gKwkJCWJ1ZmZlcl9pbmZvW2J1ZmZlcl9pbmRleF0u ZGlyZWN0aW9uKTsNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCX0NCj4gPiArDQo+ID4g KwlpZiAoIWJ1ZmZlcl9pbmZvW2J1ZmZlcl9pbmRleF0uY29oZXJlbnQpIHsNCj4gPiArCQlwcml2 LT5kZXYtPmRtYV9jb2hlcmVudCA9IGZhbHNlOw0KPiA+ICsJCWlmIChwcml2LT5kbWFfY29oZXJl bnQpDQo+ID4gKwkJCXByaXYtPmRtYV9kaXJbcHJpdi0+ZG1hX2NvdW50XSA9IERNQV9OT05FOw0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldCA9IGlwYV9hdHRhY2hfZG1hYnVmKHByaXYtPmRldiwg YnVmZmVyX2luZm9bYnVmZmVyX2luZGV4XS5mZCwNCj4gPiArCQkJCSZwcml2LT5kYmFbcHJpdi0+ ZG1hX2NvdW50XSwNCj4gJnByaXYtPnNndFtwcml2LT5kbWFfY291bnRdLCAmYWRkciwNCj4gPiAr CQkJCXByaXYtPmRtYV9kaXJbcHJpdi0+ZG1hX2NvdW50XSk7DQo+ID4gKwlpZiAocmV0ID09IDAp IHsNCj4gPiArCQlwcml2LT5kbWFfY291bnQrKzsNCj4gPiArCQlwcml2LT5idWZmZXJfaW92YVti dWZmZXJfaW5kZXhdID0gYWRkcjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlwcml2LT5kZXYtPmRt YV9jb2hlcmVudCA9IHByaXYtPmRtYV9jb2hlcmVudDsNCj4gPiArDQo+ID4gKwlyZXR1cm4gcmV0 Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBhZmZpbmVfZGV0YWNoX2RtYV9idWYo c3RydWN0IGFmZmluZV9wcml2ICpwcml2KSB7DQo+ID4gKwlzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVm Ow0KPiA+ICsJaW50IGk7DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IHByaXYtPmRtYV9j b3VudDsgaSsrKSB7DQo+ID4gKwkJZG1hYnVmID0gcHJpdi0+ZGJhW2ldLT5kbWFidWY7DQo+ID4g KwkJZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KHByaXYtPmRiYVtpXSwgcHJpdi0+c2d0W2ldLA0K PiBwcml2LT5kbWFfZGlyW2ldKTsNCj4gPiArCQlkbWFfYnVmX2RldGFjaChkbWFidWYsIHByaXYt PmRiYVtpXSk7DQo+ID4gKwkJZG1hX2J1Zl9wdXQoZG1hYnVmKTsNCj4gPiArCX0NCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIGlycXJldHVybl90IGFmZmluZV9pcnEoaW50IGlycSwgdm9pZCAq ZGV2X2lkKSB7DQo+ID4gKwlzdHJ1Y3QgYWZmaW5lX3ByaXYgKnByaXYgPSBkZXZfaWQ7DQo+ID4g Kw0KPiA+ICsJcHJpdi0+aHdkX2V2ZW50ID0gaHdkX2FmZmluZV9pcnFfaGFuZGxlcihwcml2LT5p ZCk7DQo+ID4gKw0KPiA+ICsJZGlzYWJsZV9pcnFfbm9zeW5jKHByaXYtPmlycSk7DQo+ID4gKw0K PiA+ICsJcmV0dXJuIElSUV9XQUtFX1RIUkVBRDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IGlycXJldHVybl90IGFmZmluZV9pcnFfdGhyZWFkKGludCBpcnEsIHZvaWQgKmRldl9pZCkgew0K PiA+ICsJc3RydWN0IGFmZmluZV9wcml2ICpwcml2ID0gZGV2X2lkOw0KPiA+ICsJdW5zaWduZWQg bG9uZyBkZWxheSA9IDE7DQo+ID4gKw0KPiA+ICsJbXV0ZXhfbG9jaygmcHJpdi0+bG9jayk7DQo+ ID4gKwlhZmZpbmVfZGV0YWNoX2RtYV9idWYocHJpdik7DQo+ID4gKw0KPiA+ICsJaHdkX2FmZmlu ZV9nZXRfc3RhdHVzKHByaXYtPmlkLCAmcHJpdi0+aHdkX3N0YXR1cyk7DQo+ID4gKw0KPiA+ICsJ cHJpdi0+c3RhdHVzID0gRFJWX0lQQV9TVEFURV9JRExFOw0KPiA+ICsNCj4gPiArCS8qIHN0YXR1 cyBzaG91bGQgYmUgdXBkYXRlZCBiZWZvcmUgcG9sbF9ldmVudCBzbyB0aGF0DQo+ID4gKwkgKiB3 aGVuIHBvbGwoKSByZXR1cm5zLCB1c2VyIGNvbnRleHQgbXVzdCBvYnNlcnZlIHN0YXRlIGFzIGlk bGUNCj4gPiArCSAqLw0KPiA+ICsJc21wX3dtYigpOw0KPiA+ICsNCj4gPiArCWlmIChwcml2LT5o d2RfZXZlbnQgPT0gSFdEX0FGRklORV9FVkVOVF9ET05FKQ0KPiA+ICsJCXByaXYtPnBvbGxfZXZl bnQgPSBJUEFfUE9MTF9FVkVOVF9ET05FOw0KPiA+ICsJZWxzZQ0KPiA+ICsJCXByaXYtPnBvbGxf ZXZlbnQgPSBJUEFfUE9MTF9FVkVOVF9FUlJPUjsNCj4gPiArDQo+ID4gKwkvKiBHZW5lcmFsIGJh cnJpZXIgdG8gYXZvaWQgcmUtb3JkZXJpbmcgb2YgcHJpdi0+cG9sbF9ldmVudD1OIGFuZA0KPiA+ ICsJICogd2FpdHF1ZXVlX2FjdGl2ZSgpDQo+ID4gKwkgKi8NCj4gPiArCXNtcF9tYigpOw0KPiA+ ICsNCj4gPiArCS8qIFRocmVhZHMgZ29pbmcgdG8gc2xlZXAgaW4gcG9sbCgpIGNhbiBtaXNzIHdh a2V1cCwgd2hlbiB3YWtldXAgaXMNCj4gZG9uZQ0KPiA+ICsJICogYmV0d2VlbiBldmVudCBjaGVj ayBpbiBpcGFfcG9sbCgpIGFuZCBzbGVlcGluZy4gV2FrZXVwIHJlcGVhdGVkbHkuDQo+ID4gKwkg Ki8NCj4gPiArCXdoaWxlICh3YWl0cXVldWVfYWN0aXZlKCZwcml2LT53YWl0cSkpIHsNCj4gPiAr CQl3YWtlX3VwX2ludGVycnVwdGlibGUoJnByaXYtPndhaXRxKTsNCj4gPiArDQo+ID4gKwkJV0FS Tl9PTihkZWxheSA+IElQQV9XQUtFVVBfUkVUUllfREVMQVkpOw0KPiA+ICsJCXVzbGVlcF9yYW5n ZShkZWxheSwgZGVsYXkgKyAxKTsNCj4gPiArCQlkZWxheSArPSBkZWxheTsNCj4gPiArCX0NCj4g PiArDQo+ID4gKwltdXRleF91bmxvY2soJnByaXYtPmxvY2spOw0KPiA+ICsNCj4gPiArCXJldHVy biBJUlFfSEFORExFRDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgYWZmaW5lX3N0 YXJ0KHN0cnVjdCBhZmZpbmVfcHJpdiAqcHJpdiwgc3RydWN0DQo+ID4gK2h3ZF9hZmZpbmVfZGVz Y3JpcHRvciAqZGVzYykgew0KPiA+ICsJaHdkX2FmZmluZV9zdGFydChwcml2LT5pZCwgZGVzYyk7 DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgYWZmaW5lX2lvY3RsX3N0YXJ0KHN0cnVj dCBhZmZpbmVfcHJpdiAqcHJpdiwgdW5zaWduZWQgbG9uZw0KPiA+ICthcmcpIHsNCj4gPiArCXN0 cnVjdCBod2RfYWZmaW5lX2Rlc2NyaXB0b3IgaHdkX2Rlc2M7DQo+ID4gKwlzdHJ1Y3QgZHJ2X2Fm ZmluZV9kZXNjcmlwdG9yIGRlc2M7DQo+ID4gKwlpbnQgcmV0ID0gMDsNCj4gPiArCWludCBpOw0K PiA+ICsNCj4gPiArCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmcHJpdi0+bG9jayk7 DQo+ID4gKwlpZiAocmV0KQ0KPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gKw0KPiA+ICsJaWYgKHBy aXYtPnN0YXR1cyA9PSBEUlZfSVBBX1NUQVRFX0JVU1kpIHsNCj4gPiArCQlkZXZfZGJnKHByaXYt PmRldiwgImJ1c3k6ICVkXG4iLCBwcml2LT5zdGF0dXMpOw0KPiA+ICsJCXJldCA9IC1FQlVTWTsN Cj4gPiArCQlnb3RvIGVycjE7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKGNvcHlfZnJvbV91 c2VyKCZkZXNjLCAodm9pZCBfX3VzZXIgKilhcmcsIHNpemVvZihzdHJ1Y3QNCj4gZHJ2X2FmZmlu ZV9kZXNjcmlwdG9yKSkpIHsNCj4gPiArCQlkZXZfZXJyKHByaXYtPmRldiwgIkRlc2NyaXB0b3Ig bWVtb3J5IGFjY2VzcyBlcnJvclxuIik7DQo+ID4gKwkJcmV0ID0gLUVGQVVMVDsNCj4gPiArCQln b3RvIGVycjE7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKERSVl9BRkZJTkVfQklUX0NPTkZJ R19ERVNDX0ZJTkFMICE9DQo+ID4gKwkgICAgKGRlc2MuY29uZmlnX2RvbmUgJiBEUlZfQUZGSU5F X0JJVF9DT05GSUdfREVTQ19GSU5BTCkpIHsNCj4gPiArCQlkZXZfZXJyKHByaXYtPmRldiwgIkRl c2NyaXB0b3IgY29uZmlndXJhdGlvbiBub3QNCj4gY29tcGxldGVcbiIpOw0KPiA+ICsJCXJldCA9 IC1FSU5WQUw7DQo+ID4gKwkJZ290byBlcnIxOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXByaXYt PmRtYV9jb3VudCA9IDA7DQo+ID4gKw0KPiA+ICsJLyogc2V0dXAgYnVmZmVyICovDQo+ID4gKwlm b3IgKGkgPSAwOyBpIDwgZGVzYy5idWZmZXJfaW5mb19udW07IGkrKykgew0KPiA+ICsJCXJldCA9 IGFmZmluZV9hdHRhY2hfZG1hX2J1Zihwcml2LCBpLCBkZXNjLmJ1ZmZlcl9pbmZvKTsNCj4gPiAr CQlpZiAocmV0KSB7DQo+ID4gKwkJCWRldl9lcnIocHJpdi0+ZGV2LCAiZG1hIGJ1ZiBhdHRhY2gg ZXJyb3I6DQo+IGluZGV4PSVkXG4iLCBpKTsNCj4gPiArCQkJZ290byBlcnIyOw0KPiA+ICsJCX0N Cj4gPiArCQlkZXZfZGJnKHByaXYtPmRldiwgIkBidWZmZXJbJWRdQDogZmQ9JWQgJXMgaW92YT0l bGx4XG4iLCBpLA0KPiBkZXNjLmJ1ZmZlcl9pbmZvW2ldLmZkLA0KPiA+ICsJCQlkZXNjLmJ1ZmZl cl9pbmZvW2ldLmNvaGVyZW50ID8gImNvaGVyZW50IiA6DQo+ICJub24tY29oZXJlbnQiLA0KPiA+ ICsJCQkodWludDY0X3QpcHJpdi0+YnVmZmVyX2lvdmFbaV0pOw0KPiA+ICsJfQ0KPiA+ICsNCj4g PiArCW1lbWNweSgmaHdkX2Rlc2MsICZkZXNjLCBzaXplb2Yoc3RydWN0IGh3ZF9hZmZpbmVfZGVz Y3JpcHRvcikpOw0KPiA+ICsNCj4gPiArCWh3ZF9kZXNjLnNyY19hZGRyID0gYWZmaW5lX2lwYV9h ZGRyX3RvX2lvdmEocHJpdiwgZGVzYy5zcmNfYWRkcik7DQo+ID4gKwlpZiAoaHdkX2Rlc2Muc3Jj X2FkZHIgPT0gMCkgew0KPiA+ICsJCWRldl9lcnIocHJpdi0+ZGV2LCAiSVBBIGFkZHJlc3MgdG8g aW92YSBjb252ZXJzaW9uIGVycm9yOg0KPiBzcmNfYWRkciAlczogJWRcbiIsDQo+ID4gKwkJCV9f ZnVuY19fLCBfX0xJTkVfXyk7DQo+ID4gKwkJcmV0ID0gLUVJTlZBTDsNCj4gPiArCQlnb3RvIGVy cjI7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaHdkX2Rlc2MuZHN0X2FkZHIgPSBhZmZpbmVfaXBh X2FkZHJfdG9faW92YShwcml2LCBkZXNjLmRzdF9hZGRyKTsNCj4gPiArCWlmIChod2RfZGVzYy5k c3RfYWRkciA9PSAwKSB7DQo+ID4gKwkJZGV2X2Vycihwcml2LT5kZXYsICJJUEEgYWRkcmVzcyB0 byBpb3ZhIGNvbnZlcnNpb24gZXJyb3I6DQo+IGRzdF9hZGRyICVzOiAlZFxuIiwNCj4gPiArCQkJ X19mdW5jX18sIF9fTElORV9fKTsNCj4gPiArCQlyZXQgPSAtRUlOVkFMOw0KPiA+ICsJCWdvdG8g ZXJyMjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlod2RfZGVzYy50YmxfYWRkciA9IDA7DQo+ID4g KwlpZiAoZGVzYy50YmxfcHRjaCAhPSAwKSB7DQo+ID4gKwkJaHdkX2Rlc2MudGJsX2FkZHIgPSBh ZmZpbmVfaXBhX2FkZHJfdG9faW92YShwcml2LA0KPiBkZXNjLnRibF9hZGRyKTsNCj4gPiArCQlp ZiAoaHdkX2Rlc2MudGJsX2FkZHIgPT0gMCkgew0KPiA+ICsJCQlkZXZfZXJyKHByaXYtPmRldiwN Cj4gPiArCQkJCSJJUEEgYWRkcmVzcyB0byBpb3ZhIGNvbnZlcnNpb24gZXJyb3I6DQo+IHRibF9h ZGRyICVzOiAlZFxuIiwgX19mdW5jX18sDQo+ID4gKwkJCQlfX0xJTkVfXyk7DQo+ID4gKwkJCXJl dCA9IC1FSU5WQUw7DQo+ID4gKwkJCWdvdG8gZXJyMjsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJZGV2X2RiZyhwcml2LT5kZXYsICJzcmM6IDB4JXhcbiIsIGh3ZF9kZXNjLnNyY19h ZGRyKTsNCj4gPiArCWRldl9kYmcocHJpdi0+ZGV2LCAiZHN0OiAweCV4XG4iLCBod2RfZGVzYy5k c3RfYWRkcik7DQo+ID4gKwlkZXZfZGJnKHByaXYtPmRldiwgInRibDogMHgleFxuIiwgaHdkX2Rl c2MudGJsX2FkZHIpOw0KPiA+ICsNCj4gPiArCWFmZmluZV9zdGFydChwcml2LCAmaHdkX2Rlc2Mp Ow0KPiA+ICsNCj4gPiArCXByaXYtPnBvbGxfZXZlbnQgPSBJUEFfUE9MTF9FVkVOVF9OT05FOw0K PiA+ICsJcHJpdi0+aHdkX2V2ZW50ID0gMDsNCj4gPiArCXByaXYtPnN0YXR1cyA9IERSVl9JUEFf U1RBVEVfQlVTWTsNCj4gPiArCS8qIEJhcnJpZXIgdG8gcHJldmVudCBhZmZpbmVfaXJxKCkgZnJv bSBzZXR0aW5nIHByaXYtPmh3ZF9ldmVudA0KPiA+ICsJICogYmVmb3JlIGl0IGlzIHJlc2V0IGFi b3ZlDQo+ID4gKwkgKi8NCj4gPiArCXNtcF93bWIoKTsNCj4gPiArCWVuYWJsZV9pcnEocHJpdi0+ aXJxKTsNCj4gPiArDQo+ID4gKwltdXRleF91bmxvY2soJnByaXYtPmxvY2spOw0KPiA+ICsNCj4g PiArCXJldHVybiByZXQ7DQo+ID4gKw0KPiA+ICtlcnIyOg0KPiA+ICsJYWZmaW5lX2RldGFjaF9k bWFfYnVmKHByaXYpOw0KPiA+ICtlcnIxOg0KPiA+ICsJbXV0ZXhfdW5sb2NrKCZwcml2LT5sb2Nr KTsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgYWZm aW5lX2lvY3RsX2dldF9zdGF0dXMoc3RydWN0IGFmZmluZV9wcml2ICpwcml2LCB1bnNpZ25lZA0K PiA+ICtsb25nIGFyZykgew0KPiA+ICsJc3RydWN0IGRydl9hZmZpbmVfc3RhdHVzIHN0YXR1czsN Cj4gPiArCXN0cnVjdCBod2RfYWZmaW5lX3N0YXR1cyBod2Rfc3RhdHVzOw0KPiA+ICsJaW50IHJl dCA9IDA7DQo+ID4gKw0KPiA+ICsJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZwcml2 LT5sb2NrKTsNCj4gPiArCWlmIChyZXQpDQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArDQo+ID4g KwlpZiAocHJpdi0+c3RhdHVzID09IERSVl9JUEFfU1RBVEVfQlVTWSkNCj4gPiArCQlod2RfYWZm aW5lX2dldF9zdGF0dXMocHJpdi0+aWQsICZod2Rfc3RhdHVzKTsNCj4gPiArCWVsc2UNCj4gPiAr CQlod2Rfc3RhdHVzID0gcHJpdi0+aHdkX3N0YXR1czsNCj4gPiArDQo+ID4gKwlzdGF0dXMuc3Rh dGUgPSBwcml2LT5zdGF0dXM7DQo+ID4gKwltdXRleF91bmxvY2soJnByaXYtPmxvY2spOw0KPiA+ ICsNCj4gPiArCXN0YXR1cy5jb21wX2xhY2tfZGF0YSA9IGh3ZF9zdGF0dXMuY29tcF9sYWNrX2Rh dGE7DQo+ID4gKwlzdGF0dXMuY29tcF9vdmVyX2Nvb3JkaW5hdGUgPSBod2Rfc3RhdHVzLmNvbXBf b3Zlcl9jb29yZGluYXRlOw0KPiA+ICsJc3RhdHVzLmNvbXBfb3Zlcl9kYXRhID0gaHdkX3N0YXR1 cy5jb21wX292ZXJfZGF0YTsNCj4gPiArCXN0YXR1cy5jb21wX3NpemUgPSBod2Rfc3RhdHVzLmNv bXBfc2l6ZTsNCj4gPiArCXN0YXR1cy5jb21wX3N5bnRheF9lcnJvciA9IGh3ZF9zdGF0dXMuY29t cF9zeW50YXhfZXJyb3I7DQo+ID4gKwlpZiAoY29weV90b191c2VyKCh2b2lkIF9fdXNlciAqKWFy ZywgJnN0YXR1cywgc2l6ZW9mKHN0cnVjdA0KPiBkcnZfYWZmaW5lX3N0YXR1cykpKSB7DQo+ID4g KwkJZGV2X2Vycihwcml2LT5kZXYsICJzdGF0dXMgbWVtb3J5IGFjY2VzcyBlcnJvclxuIik7DQo+ ID4gKwkJcmV0ID0gLUVGQVVMVDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4gcmV0Ow0K PiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgbG9uZyBhZmZpbmVfaW9jdGwoc3RydWN0IGZpbGUg KmZwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZA0KPiA+ICtsb25nIGFyZykgew0KPiA+ICsJ c3RydWN0IGFmZmluZV9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKGZwLT5wcml2YXRlX2RhdGEs IHN0cnVjdA0KPiBhZmZpbmVfcHJpdiwgbWlzY2Rldik7DQo+ID4gKwlpbnQgcmV0ID0gMDsNCj4g PiArDQo+ID4gKwlzd2l0Y2ggKGNtZCkgew0KPiA+ICsJY2FzZSBJT0NfSVBBX1NUQVJUOg0KPiA+ ICsJCXJldCA9IGFmZmluZV9pb2N0bF9zdGFydChwcml2LCBhcmcpOw0KPiA+ICsJCWJyZWFrOw0K PiA+ICsJY2FzZSBJT0NfSVBBX0dFVF9TVEFUVVM6DQo+ID4gKwkJcmV0ID0gYWZmaW5lX2lvY3Rs X2dldF9zdGF0dXMocHJpdiwgYXJnKTsNCj4gPiArCQlicmVhazsNCj4gPiArCWRlZmF1bHQ6DQo+ ID4gKwkJcmV0ID0gLUVOT0lPQ1RMQ01EOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJfQ0KPiA+ICsN Cj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBfX3BvbGxfdCBh ZmZpbmVfcG9sbChzdHJ1Y3QgZmlsZSAqZnAsIHBvbGxfdGFibGUgKndhaXQpIHsNCj4gPiArCXN0 cnVjdCBhZmZpbmVfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZihmcC0+cHJpdmF0ZV9kYXRhLCBz dHJ1Y3QNCj4gYWZmaW5lX3ByaXYsIG1pc2NkZXYpOw0KPiA+ICsJX19wb2xsX3QgbWFzayA9IDA7 DQo+ID4gKwl1bnNpZ25lZCBpbnQgcG9sbF9ldmVudDsNCj4gPiArDQo+ID4gKwlwb2xsX3dhaXQo ZnAsICZwcml2LT53YWl0cSwgd2FpdCk7DQo+ID4gKw0KPiA+ICsJLyogQmFycmllciB0byBhdm9p ZCByZS1vcmRlcmluZyBvZiBwb2xsX3dhaXQoKSBhbmQgZXZlbnQgbG9hZA0KPiA+ICsJICogUmVh ZCBiYXJyaWVyIGhlcmUgYW5kIHJlbGVhc2UgYmFycmllciBpbiBwb2xsX3dhaXQoKSB0b2dldGhl ciB3aWxsDQo+ID4gKwkgKiBwcmV2ZW50IHJlLW9yZGVyaW5nDQo+ID4gKwkgKi8NCj4gPiArCXNt cF9ybWIoKTsNCj4gPiArCXBvbGxfZXZlbnQgPSBwcml2LT5wb2xsX2V2ZW50Ow0KPiA+ICsJaWYg KHBvbGxfZXZlbnQgIT0gSVBBX1BPTExfRVZFTlRfTk9ORSkgew0KPiA+ICsJCWlmIChwb2xsX2V2 ZW50ID09IElQQV9QT0xMX0VWRU5UX0RPTkUpDQo+ID4gKwkJCW1hc2sgPSBFUE9MTElOIHwgRVBP TExSRE5PUk07DQo+ID4gKwkJZWxzZQ0KPiA+ICsJCQltYXNrID0gRVBPTExFUlI7DQo+ID4gKwl9 DQo+ID4gKwlyZXR1cm4gbWFzazsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBmaWxlX29wZXJhdGlvbnMgYWZmaW5lX2ZvcHMgPSB7DQo+ID4gKwkub3duZXIgPSBUSElT X01PRFVMRSwNCj4gPiArCS51bmxvY2tlZF9pb2N0bCA9IGFmZmluZV9pb2N0bCwNCj4gPiArCS5w b2xsID0gYWZmaW5lX3BvbGwsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGFmZmlu ZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KSB7DQo+ID4gKwlzdHJ1Y3QgZGV2 aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiA+ICsJc3RydWN0IGFmZmluZV9wcml2ICpwcml2Ow0K PiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwlwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6 ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7DQo+ID4gKwlpZiAoIXByaXYpDQo+ID4gKwkJcmV0dXJu IC1FTk9NRU07DQo+ID4gKw0KPiA+ICsJbXV0ZXhfaW5pdCgmcHJpdi0+bG9jayk7DQo+ID4gKw0K PiA+ICsJLyogdXBkYXRlIERNQSBtYXNrICovDQo+ID4gKwlwcml2LT5kbWFfY29oZXJlbnQgPSBk ZXYtPmRtYV9jb2hlcmVudDsNCj4gPiArCXJldCA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQo ZGV2LCBETUFfQklUX01BU0soMzYpKTsNCj4gPiArCWlmIChyZXQpDQo+ID4gKwkJcmV0dXJuIHJl dDsNCj4gPiArDQo+ID4gKwlwcml2LT5yZWdzID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291 cmNlKHBkZXYsIDApOw0KPiA+ICsJaWYgKElTX0VSUihwcml2LT5yZWdzKSkNCj4gPiArCQlyZXR1 cm4gUFRSX0VSUihwcml2LT5yZWdzKTsNCj4gPiArDQo+ID4gKwlwcml2LT5pcnEgPSBwbGF0Zm9y bV9nZXRfaXJxKHBkZXYsIDApOw0KPiA+ICsJaWYgKHByaXYtPmlycSA8IDApIHsNCj4gPiArCQlk ZXZfZXJyKGRldiwgImZhaWxlZCB0byBhY3F1aXJlIGlycSByZXNvdXJjZVxuIik7DQo+ID4gKwkJ cmV0dXJuIC1FTk9FTlQ7DQo+ID4gKwl9DQo+ID4gKwlyZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFk ZWRfaXJxKGRldiwgcHJpdi0+aXJxLCBhZmZpbmVfaXJxLA0KPiBhZmZpbmVfaXJxX3RocmVhZCwg MCwgImFmZmluZSIsDQo+ID4gKwkJCQkJcHJpdik7DQo+ID4gKwlpZiAocmV0KSB7DQo+ID4gKwkJ ZGV2X2VycihkZXYsICJpcnEgcmVxdWVzdCBmYWlsZWRcbiIpOw0KPiA+ICsJCXJldHVybiByZXQ7 DQo+ID4gKwl9DQo+ID4gKwlkaXNhYmxlX2lycShwcml2LT5pcnEpOw0KPiA+ICsNCj4gPiArCXJl dCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKGRldi0+b2Zfbm9kZSwgImluZGV4IiwgJnByaXYtPmlk KTsNCj4gPiArCWlmIChyZXQpIHsNCj4gPiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBhY3F1 aXJlIGlycSByZXNvdXJjZVxuIik7DQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArCX0NCj4gPiAr DQo+ID4gKwlod2RfYWZmaW5lX2luaXRpYWxpemUocHJpdi0+aWQsIHByaXYtPnJlZ3MpOw0KPiA+ ICsNCj4gPiArCXNucHJpbnRmKHByaXYtPm5hbWUsIHNpemVvZihwcml2LT5uYW1lKSwgImFmZmlu ZSVkIiwgcHJpdi0+aWQpOw0KPiA+ICsJcHJpdi0+bWlzY2Rldi5taW5vciA9IE1JU0NfRFlOQU1J Q19NSU5PUjsNCj4gPiArCXByaXYtPm1pc2NkZXYubmFtZSA9IHByaXYtPm5hbWU7DQo+ID4gKwlw cml2LT5taXNjZGV2LmZvcHMgPSAmYWZmaW5lX2ZvcHM7DQo+ID4gKwlyZXQgPSBtaXNjX3JlZ2lz dGVyKCZwcml2LT5taXNjZGV2KTsNCj4gPiArCWlmIChyZXQpIHsNCj4gPiArCQlkZXZfZXJyKGRl diwgIm1pc2MgcmVnaXN0cmF0aW9uIGZhaWxlZFxuIik7DQo+ID4gKwkJaHdkX2FmZmluZV91bmlu aXRpYWxpemUocHJpdi0+aWQpOw0KPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gKwl9DQo+ID4gKw0K PiA+ICsJcHJpdi0+ZGV2ID0gZGV2Ow0KPiA+ICsJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwg cHJpdik7DQo+ID4gKw0KPiA+ICsJaW5pdF93YWl0cXVldWVfaGVhZCgmcHJpdi0+d2FpdHEpOw0K PiA+ICsNCj4gPiArCXByaXYtPnN0YXR1cyA9IERSVl9JUEFfU1RBVEVfSURMRTsNCj4gPiArCXJl dHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGFmZmluZV9yZW1vdmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikgew0KPiA+ICsJc3RydWN0IGFmZmluZV9wcml2ICpw cml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQo+ID4gKw0KPiA+ICsJbWlzY19kZXJl Z2lzdGVyKCZwcml2LT5taXNjZGV2KTsNCj4gPiArCWh3ZF9hZmZpbmVfdW5pbml0aWFsaXplKHBy aXYtPmlkKTsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IG9mX2RldmljZV9pZCBhZmZpbmVfb2ZfbWF0Y2hbXSA9IHsNCj4gPiArCXsNCj4g PiArCQkuY29tcGF0aWJsZSA9ICJ0b3NoaWJhLHZpc2NvbnRpLWFmZmluZSIsDQo+ID4gKwl9LA0K PiA+ICsJe30sDQo+ID4gK307DQo+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUocGxhdGZvcm0sIGFm ZmluZV9vZl9tYXRjaCk7DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZl ciBhZmZpbmVfZHJpdmVyID0gew0KPiA+ICsJLnByb2JlID0gYWZmaW5lX3Byb2JlLA0KPiA+ICsJ LnJlbW92ZSA9IGFmZmluZV9yZW1vdmUsDQo+ID4gKwkuZHJpdmVyID0gew0KPiA+ICsJCS5uYW1l ID0gInZpc2NvbnRpX2FmZmluZSIsDQo+ID4gKwkJLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hf cHRyKGFmZmluZV9vZl9tYXRjaCksDQo+ID4gKwl9LA0KPiA+ICt9Ow0KPiA+ICttb2R1bGVfcGxh dGZvcm1fZHJpdmVyKGFmZmluZV9kcml2ZXIpOw0KPiA+ICsNCj4gPiArTU9EVUxFX0FVVEhPUigi WXVqaSBJc2hpa2F3YSA8eXVqaTIuaXNoaWthd2FAdG9zaGliYS5jby5qcD4iKTsNCj4gPiArTU9E VUxFX0RFU0NSSVBUSU9OKCJUb3NoaWJhIFZpc2NvbnRpIGFmZmluZSBkcml2ZXIiKTsNCj4gPiAr TU9EVUxFX0xJQ0VOU0UoIkR1YWwgQlNEL0dQTCIpOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3NvYy92aXNjb250aS9hZmZpbmUvaHdkX2FmZmluZS5jDQo+ID4gYi9kcml2ZXJzL3NvYy92aXNj b250aS9hZmZpbmUvaHdkX2FmZmluZS5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBp bmRleCAwMDAwMDAwMDAuLjY3MjBhMDIxMg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9k cml2ZXJzL3NvYy92aXNjb250aS9hZmZpbmUvaHdkX2FmZmluZS5jDQo+ID4gQEAgLTAsMCArMSwy MDYgQEANCj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTIt Q2xhdXNlDQo+ID4gKy8qIFRvc2hpYmEgVmlzY29udGkgQWZmaW5lIEFjY2VsZXJhdG9yIFN1cHBv cnQNCj4gPiArICoNCj4gPiArICogKEMpIENvcHlyaWdodCAyMDIyIFRPU0hJQkEgQ09SUE9SQVRJ T04NCj4gPiArICogKEMpIENvcHlyaWdodCAyMDIyIFRvc2hpYmEgRWxlY3Ryb25pYyBEZXZpY2Vz ICYgU3RvcmFnZQ0KPiA+ICtDb3Jwb3JhdGlvbiAgKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxs aW51eC9kZWxheS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4NCj4gPiArDQo+ID4gKyNp bmNsdWRlICJod2RfYWZmaW5lLmgiDQo+ID4gKyNpbmNsdWRlICJod2RfYWZmaW5lX3JlZy5oIg0K PiA+ICsNCj4gPiArI2RlZmluZSBIV0RfQUZGSU5FX0NMRUFSX0JJVFMJICBHRU5NQVNLKDE1LCAw KQ0KPiA+ICsjZGVmaW5lIEhXRF9BRkZJTkVfSU5UTUFTS19OT1JNQUwgKDB4MDQxMDApDQo+ID4g Kw0KPiA+ICsjZGVmaW5lIEhXRF9BRkZJTkVfSU5UX0VORAkgIEJJVCgwKQ0KPiA+ICsjZGVmaW5l IEhXRF9BRkZJTkVfSU5UX1RDT01QX0VSUjAgQklUKDE2KSAjZGVmaW5lDQo+ID4gK0hXRF9BRkZJ TkVfSU5UX1RDT01QX0VSUjEgQklUKDE3KSAjZGVmaW5lDQo+IEhXRF9BRkZJTkVfSU5UX1RDT01Q X0VSUjINCj4gPiArQklUKDE4KSAjZGVmaW5lIEhXRF9BRkZJTkVfSU5UX1RDT01QX0VSUjMgQklU KDE5KSAjZGVmaW5lDQo+ID4gK0hXRF9BRkZJTkVfSU5UX1RDT01QX1NJWkUgQklUKDIwKQ0KPiA+ ICsNCj4gPiArI2RlZmluZSBIV0RfQUZGSU5FX0hXRF9NQVNLX0FERFIgR0VOTUFTSygzMSwgMCkN Cj4gPiArDQo+ID4gKyNkZWZpbmUgSFdEX0FGRklORV9TVEFSVF9DTUQgQklUKDApDQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICogc3RydWN0IGh3ZF9hZmZpbmVfcmVzb3VyY2VzIC0gSFdEIGRyaXZl ciBpbnRlcm5hbCByZXNvdXJjZQ0KPiA+ICtzdHJ1Y3R1cmUgICovIHN0cnVjdCBod2RfYWZmaW5l X3Jlc291cmNlcyB7DQo+ID4gKwlzdHJ1Y3QgaHdkX2FmZmluZV9yZWcgKnJlZzsNCj4gPiArCXN0 cnVjdCBod2RfYWZmaW5lX3N0YXR1cyBzdGF0dXM7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKiBI V0QgZHJpdmVyIGludGVybmFsIHJlc291cmNlICovDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgaHdkX2Fm ZmluZV9yZXNvdXJjZXMNCj4gPiAraHdkX2FmZmluZV9yZXNvdXJjZXNbSFdEX0FGRklORV9ERVZJ Q0VfTUFYXSA9IHt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGh3ZF9hZmZpbmVfaW5pdGlh bGl6ZSgpIC0gSW5pdGlhbGl6ZSBBRkZJTkUgZGV2aWNlDQo+ID4gKyAqDQo+ID4gKyAqIEBtb2R1 bGVfaWQ6IEByZWYgaHdkX2FmZmluZV9kZXZpY2UgImlkIiBvZiB0aGUgaC93IG1vZHVsZQ0KPiA+ ICsgKiBAdmFkZHI6IHJlZ2lzdGVyIGJhc2UgdmlydHVhbCBhZGRyZXNzICAqLyB2b2lkDQo+ID4g K2h3ZF9hZmZpbmVfaW5pdGlhbGl6ZSh1MzIgbW9kdWxlX2lkLCB2b2lkICp2YWRkcikgew0KPiA+ ICsJc3RydWN0IGh3ZF9hZmZpbmVfcmVzb3VyY2VzICpyZXMgPQ0KPiAmaHdkX2FmZmluZV9yZXNv dXJjZXNbbW9kdWxlX2lkXTsNCj4gPiArDQo+ID4gKwkvKiBJbml0aWFsaXplIHRoZSBkZXZpY2Ug Ki8NCj4gPiArCXJlcy0+cmVnID0gKHN0cnVjdCBod2RfYWZmaW5lX3JlZyAqKXZhZGRyOyB9DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICogaHdkX2FmZmluZV91bmluaXRpYWxpemUoKSAtIFVuaW5p dGlhbGl6ZSBBRkZJTkUgZGV2aWNlDQo+ID4gKyAqDQo+ID4gKyAqIEBtb2R1bGVfaWQ6IEByZWYg aHdkX2FmZmluZV9kZXZpY2UgImlkIiBvZiB0aGUgaC93IG1vZHVsZSAgKi8gdm9pZA0KPiA+ICto d2RfYWZmaW5lX3VuaW5pdGlhbGl6ZSh1MzIgbW9kdWxlX2lkKSB7DQo+ID4gKwlzdHJ1Y3QgaHdk X2FmZmluZV9yZXNvdXJjZXMgKnJlcyA9DQo+ICZod2RfYWZmaW5lX3Jlc291cmNlc1ttb2R1bGVf aWRdOw0KPiA+ICsNCj4gPiArCS8qIERlaW5pdGlhbGl6ZSB0aGUgZGV2aWNlICovDQo+ID4gKwly ZXMtPnJlZyA9IE5VTEw7DQo+ID4gK30NCj4gPiArDQo+ID4gKyNkZWZpbmUgTlVNX0FGRklORV9Q QVJBTVMgIDYNCj4gPiArI2RlZmluZSBOVU1fSE9NT19QQVJBTVMJICAgMw0KPiA+ICsjZGVmaW5l IE5VTV9ESVNUT1JUX1BBUkFNUyAxMg0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGh3ZF9hZmZp bmVfc3RhcnQoKSAtIFN0YXJ0IEFGRklORSBkZXZpY2UNCj4gPiArICoNCj4gPiArICogQG1vZHVs ZV9pZDogQHJlZiBod2RfYWZmaW5lX2RldmljZSAiaWQiIG9mIHRoZSBoL3cgbW9kdWxlDQo+ID4g KyAqIEBkZXNjOiBQb2ludGVyIHRvIEFGRklORSBkZXNjcmlwdG9yIHN0cnVjdHVyZSAgKi8gdm9p ZA0KPiA+ICtod2RfYWZmaW5lX3N0YXJ0KHUzMiBtb2R1bGVfaWQsIGNvbnN0IHN0cnVjdCBod2Rf YWZmaW5lX2Rlc2NyaXB0b3INCj4gPiArKmRlc2MpIHsNCj4gPiArCXN0cnVjdCBod2RfYWZmaW5l X3Jlc291cmNlcyAqcmVzID0NCj4gJmh3ZF9hZmZpbmVfcmVzb3VyY2VzW21vZHVsZV9pZF07DQo+ ID4gKwlzdHJ1Y3QgaHdkX2FmZmluZV9yZWcgKnJlZzsNCj4gPiArCWludCBpOw0KPiA+ICsNCj4g PiArCXJlZyA9IHJlcy0+cmVnOw0KPiA+ICsNCj4gPiArCS8qIEluaXRpYWxpemUgc3RhdHVzICov DQo+ID4gKwlyZXMtPnN0YXR1cy5jb21wX3N5bnRheF9lcnJvciA9IDA7DQo+ID4gKwlyZXMtPnN0 YXR1cy5jb21wX292ZXJfY29vcmRpbmF0ZSA9IDA7DQo+ID4gKwlyZXMtPnN0YXR1cy5jb21wX292 ZXJfZGF0YSA9IDA7DQo+ID4gKwlyZXMtPnN0YXR1cy5jb21wX2xhY2tfZGF0YSA9IDA7DQo+ID4g KwlyZXMtPnN0YXR1cy5jb21wX3NpemUgPSAwOw0KPiA+ICsNCj4gPiArCS8qIENsZWFyIGludGVy cnVwdCBzdGF0dXMgKi8NCj4gPiArCXdyaXRlbChIV0RfQUZGSU5FX0NMRUFSX0JJVFMsICZyZWct PnN0YXRjKTsNCj4gPiArDQo+ID4gKwkvKiBSZXNldCBUX1JTVCBiaXQsIENfUlNUIGJpdCwgYW5k IE9fUlNUIGJpdHMqLw0KPiA+ICsJd3JpdGVsKGRlc2MtPmN0cmwsICZyZWctPmN0cmwpOw0KPiA+ ICsJcmVhZGwoJnJlZy0+Y3RybCk7DQo+ID4gKw0KPiA+ICsJd3JpdGVsKGRlc2MtPnNyY19zaXpl LCAmcmVnLT5zcmNfc2l6ZSk7DQo+ID4gKwl3cml0ZWwoKHUzMikoZGVzYy0+c3JjX2FkZHIgJiBI V0RfQUZGSU5FX0hXRF9NQVNLX0FERFIpLA0KPiAmcmVnLT5zcmNfYWRkcik7DQo+ID4gKwl3cml0 ZWwoZGVzYy0+ZHN0X2JnbiwgJnJlZy0+ZHN0X2Jnbik7DQo+ID4gKwl3cml0ZWwoZGVzYy0+ZHN0 X3NpemUsICZyZWctPmRzdF9zaXplKTsNCj4gPiArCXdyaXRlbCgodTMyKShkZXNjLT5kc3RfYWRk ciAmIEhXRF9BRkZJTkVfSFdEX01BU0tfQUREUiksDQo+ICZyZWctPmRzdF9hZGRyKTsNCj4gPiAr CXdyaXRlbChkZXNjLT5sX3B0Y2gsICZyZWctPmxfcHRjaCk7DQo+ID4gKw0KPiA+ICsJZm9yIChp ID0gMDsgaSA8IE5VTV9BRkZJTkVfUEFSQU1TOyBpKyspDQo+ID4gKwkJd3JpdGVsKGRlc2MtPmFm ZmluZV9wYXJhbVtpXSwgJnJlZy0+YWZmaW5lX3BhcmFtW2ldKTsNCj4gPiArDQo+ID4gKwlmb3Ig KGkgPSAwOyBpIDwgTlVNX0hPTU9fUEFSQU1TOyBpKyspDQo+ID4gKwkJd3JpdGVsKGRlc2MtPmhv bW9fcGFyYW1baV0sICZyZWctPmhvbW9fcGFyYW1baV0pOw0KPiA+ICsNCj4gPiArCS8qIEFGRklO RSBUYWJsZSAqLw0KPiA+ICsJd3JpdGVsKCh1MzIpKGRlc2MtPnRibF9hZGRyICYgSFdEX0FGRklO RV9IV0RfTUFTS19BRERSKSwNCj4gJnJlZy0+dGJsX2FkZHIpOw0KPiA+ICsJd3JpdGVsKGRlc2Mt PnRibF9wdGNoLCAmcmVnLT50YmxfcHRjaCk7DQo+ID4gKwl3cml0ZWwoZGVzYy0+dGJsX2NvbXBf c2l6ZSwgJnJlZy0+dGJsX2NvbXBfc2l6ZSk7DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8 IE5VTV9ESVNUT1JUX1BBUkFNUzsgaSsrKQ0KPiA+ICsJCXdyaXRlbChkZXNjLT5kaXN0X3BhcmFt W2ldLCAmcmVnLT5kaXN0X3BhcmFtW2ldKTsNCj4gPiArDQo+ID4gKwl3cml0ZWwoSFdEX0FGRklO RV9JTlRNQVNLX05PUk1BTCwgJnJlZy0+aW50bSk7DQo+ID4gKw0KPiA+ICsJd3JpdGVsKGRlc2Mt Pm1vZGUsICZyZWctPm1vZGUpOw0KPiA+ICsJd3JpdGVsKGRlc2MtPm1vZGUyLCAmcmVnLT5tb2Rl Mik7DQo+ID4gKwl3cml0ZWwoZGVzYy0+YWRqX3AsICZyZWctPmFkal9wKTsNCj4gPiArDQo+ID4g KwkvKiBEYXRhIFN5bmMgKi8NCj4gPiArCWRzYihzdCk7DQo+ID4gKw0KPiA+ICsJLyogS2ljayBB RkZJTkUgKi8NCj4gPiArCXdyaXRlbChIV0RfQUZGSU5FX1NUQVJUX0NNRCwgJnJlZy0+Y3RybCk7 IH0NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBod2RfYWZmaW5lX2lycV9oYW5kbGVyKCkgLSBI V0QgQUZGSU5FIGludGVycnVwdCBoYW5kbGVyDQo+ID4gKyAqDQo+ID4gKyAqIEBtb2R1bGVfaWQ6 IEByZWYgaHdkX2FmZmluZV9kZXZpY2UgImlkIiBvZiB0aGUgaC93IG1vZHVsZQ0KPiA+ICsgKiBS ZXR1cm46IGZvbGxvd2luZyBiaXRmaWVsZHMNCj4gPiArICogLSBIV0RfQUZGSU5FX0VWRU5UX0RP TkU6IEhXIHByb2Nlc3NpbmcgaXMgY29tcGxldGVkDQo+ID4gKyAqIC0gSFdEX0FGRklORV9FVkVO VF9TWU5UQVhfRVJST1I6IEhXIFRhYmxlIFN5bnRheCBlcnJvcg0KPiA+ICsgKiAtIEhXRF9BRkZJ TkVfRVZFTlRfT1ZFUl9DT09SRDogSFcgVGFibGUgZGVjb2RpbmcgY29vcmRpbmF0ZQ0KPiBlcnJv cg0KPiA+ICsgKiAtIEhXRF9BRkZJTkVfRVZFTlRfT1ZFUl9EQVRBOiBIVyBUYWJsZSBvdmVyIGNv bXByZXNzZWQgZGF0YQ0KPiBlcnJvcg0KPiA+ICsgKiAtIEhXRF9BRkZJTkVfRVZFTlRfTEFDS19E QVRBOiBIVyBUYWJsZSBjb21wcmVzc2VkIGRhdGENCj4gPiAraW5zdWZmaWNpZW50IGVycm9yDQo+ ID4gKyAqIC0gSFdEX0FGRklORV9FVkVOVF9TSVpFX0VSUk9SOiBIVyBUYWJsZSBzbWFsbGVyIHRo YW4gdGhlIHNpemUNCj4gPiArYWN0dWFsIHNpemUgb2YgY29tcHJlc3NlZCBkYXRhICAqLw0KPiA+ ICt1MzIgaHdkX2FmZmluZV9pcnFfaGFuZGxlcih1MzIgbW9kdWxlX2lkKSB7DQo+ID4gKwl1MzIg ZXZlbnQgPSAwOw0KPiA+ICsJc3RydWN0IGh3ZF9hZmZpbmVfcmVzb3VyY2VzICpyZXMgPQ0KPiAm aHdkX2FmZmluZV9yZXNvdXJjZXNbbW9kdWxlX2lkXTsNCj4gPiArCXN0cnVjdCBod2RfYWZmaW5l X3JlZyAqcmVnOw0KPiA+ICsJdTMyIGNhdXNlOw0KPiA+ICsNCj4gPiArCXJlZyA9IHJlcy0+cmVn Ow0KPiA+ICsNCj4gPiArCS8qIFJlYWQgYW5kIENsZWFyIHRoZSBpbnRlcnJ1cHQgY2F1c2VzICov DQo+ID4gKwljYXVzZSA9IHJlYWRsKCZyZWctPnN0YXRjKTsNCj4gPiArCXdyaXRlbChjYXVzZSwg JnJlZy0+c3RhdGMpOw0KPiA+ICsNCj4gPiArCWlmIChjYXVzZSAmIEhXRF9BRkZJTkVfSU5UX0VO RCkNCj4gPiArCQkvKiBFeGVjdXRpb24gRW5kICovDQo+ID4gKwkJZXZlbnQgfD0gSFdEX0FGRklO RV9FVkVOVF9ET05FOw0KPiA+ICsNCj4gPiArCWlmIChjYXVzZSAmIEhXRF9BRkZJTkVfSU5UX1RD T01QX0VSUjApIHsNCj4gPiArCQkvKiBTeW50YXggZXJyb3IgKi8NCj4gPiArCQlyZXMtPnN0YXR1 cy5jb21wX3N5bnRheF9lcnJvciA9IDE7DQo+ID4gKwkJZXZlbnQgfD0gSFdEX0FGRklORV9FVkVO VF9TWU5UQVhfRVJST1I7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKGNhdXNlICYgSFdEX0FG RklORV9JTlRfVENPTVBfRVJSMSkgew0KPiA+ICsJCS8qIERlY29kaW5nIGNvb3JkaW5hdGUgZXJy b3IgKi8NCj4gPiArCQlyZXMtPnN0YXR1cy5jb21wX292ZXJfY29vcmRpbmF0ZSA9IDE7DQo+ID4g KwkJZXZlbnQgfD0gSFdEX0FGRklORV9FVkVOVF9PVkVSX0NPT1JEOw0KPiA+ICsJfQ0KPiA+ICsN Cj4gPiArCWlmIChjYXVzZSAmIEhXRF9BRkZJTkVfSU5UX1RDT01QX0VSUjIpIHsNCj4gPiArCQkv KiBPdmVyIGNvbXByZXNzZWQgZGF0YSBlcnJvciAqLw0KPiA+ICsJCXJlcy0+c3RhdHVzLmNvbXBf b3Zlcl9kYXRhID0gMTsNCj4gPiArCQlldmVudCB8PSBIV0RfQUZGSU5FX0VWRU5UX09WRVJfREFU QTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAoY2F1c2UgJiBIV0RfQUZGSU5FX0lOVF9UQ09N UF9FUlIzKSB7DQo+ID4gKwkJLyogQ29tcHJlc3NlZCBkYXRhIGluc3VmZmljaWVudCBlcnJvciAq Lw0KPiA+ICsJCXJlcy0+c3RhdHVzLmNvbXBfbGFja19kYXRhID0gMTsNCj4gPiArCQlldmVudCB8 PSBIV0RfQUZGSU5FX0VWRU5UX0xBQ0tfREFUQTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAo Y2F1c2UgJiBIV0RfQUZGSU5FX0lOVF9UQ09NUF9TSVpFKSB7DQo+ID4gKwkJLyogU21hbGxlciB0 aGFuIHRoZSBhY3R1YWwgc2l6ZSBvZiBjb21wcmVzc2VkIGRhdGEgKi8NCj4gPiArCQlyZXMtPnN0 YXR1cy5jb21wX3NpemUgPSAxOw0KPiA+ICsJCWV2ZW50IHw9IEhXRF9BRkZJTkVfRVZFTlRfU0la RV9FUlJPUjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4gZXZlbnQ7DQo+ID4gK30NCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgKiBod2RfYWZmaW5lX2dldF9zdGF0dXMoKSAtIEhXRCBBRkZJ TkUgR2V0IFN0YXR1cw0KPiA+ICsgKg0KPiA+ICsgKiBAbW9kdWxlX2lkOiBAcmVmIGh3ZF9hZmZp bmVfZGV2aWNlICJpZCIgb2YgdGhlIGgvdyBtb2R1bGUNCj4gPiArICogQHN0YXR1czogUG9pbnRl ciB0byBzdGF0dXMgc3RydWN0dXJlDQo+ID4gKyAqIFJldHVybjogUkVUVVJOX09LIG9wZXJhdGlv biBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5ICAqLyB2b2lkDQo+ID4gK2h3ZF9hZmZpbmVfZ2V0X3N0 YXR1cyh1MzIgbW9kdWxlX2lkLCBzdHJ1Y3QgaHdkX2FmZmluZV9zdGF0dXMNCj4gPiArKnN0YXR1 cykgew0KPiA+ICsJY29uc3Qgc3RydWN0IGh3ZF9hZmZpbmVfcmVzb3VyY2VzICpyZXMgPQ0KPiA+ ICsmaHdkX2FmZmluZV9yZXNvdXJjZXNbbW9kdWxlX2lkXTsNCj4gPiArDQo+ID4gKwkqc3RhdHVz ID0gcmVzLT5zdGF0dXM7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2Mvdmlz Y29udGkvYWZmaW5lL2h3ZF9hZmZpbmUuaA0KPiA+IGIvZHJpdmVycy9zb2MvdmlzY29udGkvYWZm aW5lL2h3ZF9hZmZpbmUuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAw MDAwMDAwLi5lZDE3YjExMTYNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9z b2MvdmlzY29udGkvYWZmaW5lL2h3ZF9hZmZpbmUuaA0KPiA+IEBAIC0wLDAgKzEsODMgQEANCj4g PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTItQ2xhdXNlICov DQo+ID4gKy8qIFRvc2hpYmEgVmlzY29udGkgQWZmaW5lIEFjY2VsZXJhdG9yIFN1cHBvcnQNCj4g PiArICoNCj4gPiArICogKEMpIENvcHlyaWdodCAyMDIyIFRPU0hJQkEgQ09SUE9SQVRJT04NCj4g PiArICogKEMpIENvcHlyaWdodCAyMDIyIFRvc2hpYmEgRWxlY3Ryb25pYyBEZXZpY2VzICYgU3Rv cmFnZQ0KPiA+ICtDb3Jwb3JhdGlvbiAgKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgSFdEX0FGRklO RV9IDQo+ID4gKyNkZWZpbmUgSFdEX0FGRklORV9IDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICog ZW51bSBod2RfYWZmaW5lX2RldmljZV9pZCAtIEFGRklORSBIV0QgRGV2aWNlIElEICAqLyBlbnVt DQo+ID4gK2h3ZF9hZmZpbmVfZGV2aWNlX2lkIHsNCj4gPiArCUhXRF9BRkZJTkVfREVWSUNFXzAg PSAwLA0KPiA+ICsJSFdEX0FGRklORV9ERVZJQ0VfMSA9IDEsDQo+ID4gKwlIV0RfQUZGSU5FX0RF VklDRV9NQVggPSAyLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyogaHdkX2FmZmluZV9ldmVudF9m bGFncyAtIE1hY3JvIGZvciBBZmZpbmUgZHJpdmVyIGV2ZW50cyAqLw0KPiA+ICsjZGVmaW5lIEhX RF9BRkZJTkVfRVZFTlRfRE9ORQkgICAgICBCSVQoMCkNCj4gPiArI2RlZmluZSBIV0RfQUZGSU5F X0VWRU5UX1NZTlRBWF9FUlJPUiBCSVQoMSkNCj4gPiArI2RlZmluZSBIV0RfQUZGSU5FX0VWRU5U X09WRVJfQ09PUkQgICBCSVQoMikNCj4gPiArI2RlZmluZSBIV0RfQUZGSU5FX0VWRU5UX09WRVJf REFUQSAgICBCSVQoMykNCj4gPiArI2RlZmluZSBIV0RfQUZGSU5FX0VWRU5UX0xBQ0tfREFUQSAg ICBCSVQoNCkNCj4gPiArI2RlZmluZSBIV0RfQUZGSU5FX0VWRU5UX1NJWkVfRVJST1IgICBCSVQo NSkNCj4gPiArI2RlZmluZSBIV0RfQUZGSU5FX0VWRU5UX01BWAkgICAgICBCSVQoNikNCj4gPiAr DQo+ID4gKy8qIGh3ZF9hZmZpbmVfcGFyYW1fbnVtX2ZsYWdzIE1hY3JvIGZvciBBZmZpbmUgcGFy YW1ldGVyIG51bWJlciAqLw0KPiA+ICsjZGVmaW5lIEhXRF9BRkZJTkVfQUZGSU5FX1BBUkFNX05V TQkgKDZVKQ0KPiA+ICsjZGVmaW5lIEhXRF9BRkZJTkVfVU5ESVNUX1BBUkFNX05VTQkgKDEyVSkN Cj4gPiArI2RlZmluZSBIV0RfQUZGSU5FX0hPTU9fUEFSQU1fTlVNCSAoM1UpDQo+ID4gKyNkZWZp bmUgSFdEX0FGRklORV9URU1QX1VORElTVF9QQVJBTV9OVU0gKDEwVSkNCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgKiBzdHJ1Y3QgaHdkX2FmZmluZV9zdGF0dXMgLSBIV0QgQWZmaW5lIHN0YXR1cw0K PiA+ICsgKiBAY29tcF9zaXplOiBTZXR0aW5nIHNpemUgaXMgc21hbGxlciB0aGFuIGFjdHVhbCBz aXplDQo+ID4gKyAqIEBjb21wX2xhY2tfZGF0YTogQ29tcHJlc3NlZCB0YWJsZSBpcyBsYWNraW5n IGVub3VnaCBkYXRhIGZvcg0KPiA+ICtwcm9jZXNzaW5nDQo+ID4gKyAqIEBjb21wX292ZXJfZGF0 YTogQ29tcHJlc3NlZCB0YWJsZSBpcyBleGNlZWRpbmcgdGhlIGxpbWl0IG9mIGRhdGENCj4gPiAr dGhhdCBjYW4gYmUgcHJvY2Vzc2VkDQo+ID4gKyAqIEBjb21wX292ZXJfY29vcmRpbmF0ZTogTnVt YmVyIG9mIGNvb3JkaW5hdGVzIGluIGNvbXByZXNzZWQgdGFibGUNCj4gPiArZGF0YSBleGNlZWRl ZCB0aGUgbGltaXQNCj4gPiArICogQGNvbXBfc3ludGF4X2Vycm9yOiBTeW50YXggZXJyb3Igb2Yg Y29tcHJlc3NlZCB0YWJsZSBoYXMgb2NjdXJyZWQNCj4gPiArICogQHJlc2VydmVkOiBQYWRkaW5n DQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaHdkX2FmZmluZV9zdGF0dXMgew0KPiA+ICsJdTMyIGNv bXBfc2l6ZSA6IDE7DQo+ID4gKwl1MzIgY29tcF9sYWNrX2RhdGEgOiAxOw0KPiA+ICsJdTMyIGNv bXBfb3Zlcl9kYXRhIDogMTsNCj4gPiArCXUzMiBjb21wX292ZXJfY29vcmRpbmF0ZSA6IDE7DQo+ ID4gKwl1MzIgY29tcF9zeW50YXhfZXJyb3IgOiAxOw0KPiA+ICsJdTMyIHJlc2VydmVkIDogMjc7 DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGh3ZF9hZmZpbmVfZGVz Y3JpcHRvciAtIEhXRCBBRkZJTkUgRGVzY3JpcHRvciAgKi8gc3RydWN0DQo+ID4gK2h3ZF9hZmZp bmVfZGVzY3JpcHRvciB7DQo+ID4gKwl1MzIgY3RybDsNCj4gPiArCXUzMiBtb2RlMjsNCj4gPiAr CXUzMiBtb2RlOw0KPiA+ICsJdTMyIGFkal9wOw0KPiA+ICsJdTMyIHNyY19zaXplOw0KPiA+ICsJ dTMyIHNyY19hZGRyOw0KPiA+ICsJdTMyIGRzdF9iZ247DQo+ID4gKwl1MzIgZHN0X3NpemU7DQo+ ID4gKwl1MzIgZHN0X2FkZHI7DQo+ID4gKwl1MzIgbF9wdGNoOw0KPiA+ICsJdTMyIHRibF9hZGRy Ow0KPiA+ICsJdTMyIHRibF9wdGNoOw0KPiA+ICsJdTMyIGFmZmluZV9wYXJhbVtIV0RfQUZGSU5F X0FGRklORV9QQVJBTV9OVU1dOw0KPiA+ICsJdTMyIGRpc3RfcGFyYW1bSFdEX0FGRklORV9VTkRJ U1RfUEFSQU1fTlVNXTsNCj4gPiArCXUzMiBob21vX3BhcmFtW0hXRF9BRkZJTkVfSE9NT19QQVJB TV9OVU1dOw0KPiA+ICsJdTMyIHRibF9jb21wX3NpemU7DQo+ID4gKwlmbG9hdCB0ZW1wX2Rpc3Rf cFtIV0RfQUZGSU5FX1RFTVBfVU5ESVNUX1BBUkFNX05VTV07DQo+ID4gKwl1MTYgY29uZmlnX2Rv bmU7DQo+ID4gK307DQo+ID4gKw0KPiA+ICt2b2lkIGh3ZF9hZmZpbmVfaW5pdGlhbGl6ZSh1MzIg bW9kdWxlX2lkLCB2b2lkICp2YWRkcik7IHZvaWQNCj4gPiAraHdkX2FmZmluZV91bmluaXRpYWxp emUodTMyIG1vZHVsZV9pZCk7IHZvaWQgaHdkX2FmZmluZV9zdGFydCh1MzINCj4gPiArbW9kdWxl X2lkLCBjb25zdCBzdHJ1Y3QgaHdkX2FmZmluZV9kZXNjcmlwdG9yICpkZXNjKTsNCj4gPiArdTMy IGh3ZF9hZmZpbmVfaXJxX2hhbmRsZXIodTMyIG1vZHVsZV9pZCk7IHZvaWQNCj4gPiAraHdkX2Fm ZmluZV9nZXRfc3RhdHVzKHUzMiBtb2R1bGVfaWQsIHN0cnVjdCBod2RfYWZmaW5lX3N0YXR1cw0K PiA+ICsqc3RhdHVzKTsNCj4gPiArDQo+ID4gKyNlbmRpZiAvKiBIV0RfQUZGSU5FX0ggKi8NCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2MvdmlzY29udGkvYWZmaW5lL2h3ZF9hZmZpbmVfcmVn LmgNCj4gPiBiL2RyaXZlcnMvc29jL3Zpc2NvbnRpL2FmZmluZS9od2RfYWZmaW5lX3JlZy5oDQo+ ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAuLjQwN2Q4OThmYQ0K PiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL3NvYy92aXNjb250aS9hZmZpbmUv aHdkX2FmZmluZV9yZWcuaA0KPiA+IEBAIC0wLDAgKzEsNDUgQEANCj4gPiArLyogU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTItQ2xhdXNlICovDQo+ID4gKy8qIFRvc2hp YmEgVmlzY29udGkgQWZmaW5lIEFjY2VsZXJhdG9yIFN1cHBvcnQNCj4gPiArICoNCj4gPiArICog KEMpIENvcHlyaWdodCAyMDIyIFRPU0hJQkEgQ09SUE9SQVRJT04NCj4gPiArICogKEMpIENvcHly aWdodCAyMDIyIFRvc2hpYmEgRWxlY3Ryb25pYyBEZXZpY2VzICYgU3RvcmFnZQ0KPiA+ICtDb3Jw b3JhdGlvbiAgKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgSFdEX0FGRklORV9SRUdfSA0KPiA+ICsj ZGVmaW5lIEhXRF9BRkZJTkVfUkVHX0gNCj4gPiArDQo+ID4gKy8qIGh3ZF9hZmZpbmVfcGFyYW1z X251bV9mbGFncyAtIE1hY3JvIGZvciBBZmZpbmUgcGFyYW1ldGVyIG51bWJlciAqLw0KPiA+ICsj ZGVmaW5lIEhXRF9BRkZJTkVfQUZGSU5FX1BBUkFNU19OVU0gKDYpICNkZWZpbmUNCj4gPiArSFdE X0FGRklORV9VTkRJU1RfUEFSQU1TX05VTSAoMTIpDQo+ID4gKyNkZWZpbmUgSFdEX0FGRklORV9I T01PX1BBUkFNU19OVU0gICAoMykNCj4gPiArI2RlZmluZSBIV0RfQUZGSU5FX1JFU0VSVkVECSAg ICAgKDQ3MikNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaHdkX2FmZmluZV9yZWcg LSBTdHJ1Y3R1cmUgb2YgQWZmaW5lIHJlZ2lzdGVyIGRlc2NyaXB0b3INCj4gPiArKi8gc3RydWN0 IGh3ZF9hZmZpbmVfcmVnIHsNCj4gPiArCXUzMiBjdHJsOw0KPiA+ICsJdTMyIHJlc2VydmVkMFsy XTsNCj4gPiArCXUzMiBtb2RlMjsNCj4gPiArCXUzMiBtb2RlOw0KPiA+ICsJdTMyIGFkal9wOw0K PiA+ICsJdTMyIGludG07DQo+ID4gKwl1MzIgc3RhdGM7DQo+ID4gKwl1MzIgb3V0X2xwb3M7DQo+ ID4gKwl1MzIgc3JjX3NpemU7DQo+ID4gKwl1MzIgc3JjX2FkZHI7DQo+ID4gKwl1MzIgZHN0X2Jn bjsNCj4gPiArCXUzMiBkc3Rfc2l6ZTsNCj4gPiArCXUzMiBkc3RfYWRkcjsNCj4gPiArCXUzMiBs X3B0Y2g7DQo+ID4gKwl1MzIgdGJsX2FkZHI7DQo+ID4gKwl1MzIgdGJsX3B0Y2g7DQo+ID4gKwl1 MzIgYWZmaW5lX3BhcmFtW0hXRF9BRkZJTkVfQUZGSU5FX1BBUkFNU19OVU1dOw0KPiA+ICsJdTMy IGRpc3RfcGFyYW1bSFdEX0FGRklORV9VTkRJU1RfUEFSQU1TX05VTV07DQo+ID4gKwl1MzIgcmVz ZXJ2ZWQxOw0KPiA+ICsJdTMyIGhvbW9fcGFyYW1bSFdEX0FGRklORV9IT01PX1BBUkFNU19OVU1d Ow0KPiA+ICsJdTMyIHRibF9jb21wX3NpemU7DQo+ID4gKwl1MzIgcmVzZXJ2ZWQyW0hXRF9BRkZJ TkVfUkVTRVJWRURdOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2VuZGlmIC8qIEhXRF9BRkZJTkVf UkVHX0ggKi8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2MvdmlzY29udGkvdWFwaS9hZmZp bmUuaA0KPiA+IGIvZHJpdmVycy9zb2MvdmlzY29udGkvdWFwaS9hZmZpbmUuaA0KPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwLi41MzkyNjE0ODMNCj4gPiAtLS0g L2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9zb2MvdmlzY29udGkvdWFwaS9hZmZpbmUuaA0K PiA+IEBAIC0wLDAgKzEsODcgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAgKi8NCj4gPiArLyoNCj4gPiArICogKEMpIENvcHlyaWdodCAyMDIwIFRvc2hpYmEgRWxl Y3Ryb25pYyBEZXZpY2VzICYgU3RvcmFnZQ0KPiA+ICtDb3Jwb3JhdGlvbiAgKi8NCj4gPiArDQo+ ID4gKyNpZm5kZWYgX1VBUElfTElOVVhfQUZJSU5FX0gNCj4gDQo+IFR5cG86IEFGSUlORSAtPiBB RkZJTkUuDQo+IA0KPiBTYW1lIGNvbW1lbnQgYXMgZm9yIHRoZSBETk4gZHJpdmVyOiB0aGVyZSBp cyBubyBkb2N1bWVudGF0aW9uIHdoYXRzb2V2ZXINCj4gYWJvdXQgd2hhdCBpdCBkb2VzIG9yIHdo YXQgZGF0YSBpdCBleHBlY3RzLg0KPiANCj4gU29tZSBoaWdoLWxldmVsIGRvY3VtZW50YXRpb24g aXMgc29yZWx5IG5lZWRlZC4NCj4gDQo+IFJlZ2FyZHMsDQo+IA0KPiAJSGFucw0KPiANCj4gPiAr I2RlZmluZSBfVUFQSV9MSU5VWF9BRklJTkVfSA0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4 L2lvY3RsLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPg0KPiA+ICsjaW5jbHVkZSAi aXBhLmgiDQo+ID4gKw0KPiA+ICsjZGVmaW5lIERSVl9BRkZJTkVfQklUX0NPTkZJR19ERVNDX0ZJ TkFMICgweDgwMDBVKQ0KPiA+ICsjZGVmaW5lIERSVl9BRkZJTkVfQlVGRkVSX0lOREVYX01BWAkg KDMpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIERSVl9BRkZJTkVfQUZGSU5FX1BBUkFNX05VTQkgKDZV KQ0KPiA+ICsjZGVmaW5lIERSVl9BRkZJTkVfVU5ESVNUX1BBUkFNX05VTQkgKDEyVSkNCj4gPiAr I2RlZmluZSBEUlZfQUZGSU5FX0hPTU9fUEFSQU1fTlVNCSAoM1UpDQo+ID4gKyNkZWZpbmUgRFJW X0FGRklORV9URU1QX1VORElTVF9QQVJBTV9OVU0gKDEwVSkNCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgKiBzdHJ1Y3QgZHJ2X2FmZmluZV9zdGF0dXMgLSBBRkZJTkUgSVBBIHN0YXR1cyBmb3IgSU9D X0lQQV9HRVRfU1RBVFVTDQo+ID4gKyAqIEBzdGF0ZTogICAgICAgICAgICAgICAgU3RhdGUgb2Yg ZHJpdmVyDQo+ID4gKyAqIEBjb21wX3NpemU6ICAgICAgICAgICAgU2V0dGluZyBzaXplIGlzIHNt YWxsZXIgdGhhbiBhY3R1YWwgc2l6ZQ0KPiA+ICsgKiBAY29tcF9sYWNrX2RhdGE6ICAgICAgIENv bXByZXNzZWQgdGFibGUgaXMgbGFja2luZyBlbm91Z2ggZGF0YSBmb3INCj4gcHJvY2Vzc2luZw0K PiA+ICsgKiBAY29tcF9vdmVyX2RhdGE6ICAgICAgIENvbXByZXNzZWQgdGFibGUgaXMgZXhjZWVk aW5nIHRoZSBsaW1pdCBvZg0KPiBkYXRhIHRoYXQgY2FuIGJlIHByb2Nlc3NlZA0KPiA+ICsgKiBA Y29tcF9vdmVyX2Nvb3JkaW5hdGU6IE51bWJlciBvZiBjb29yZGluYXRlcyBpbiBjb21wcmVzc2Vk IHRhYmxlDQo+IGRhdGEgZXhjZWVkZWQgdGhlIGxpbWl0DQo+ID4gKyAqIEBjb21wX3N5bnRheF9l cnJvcjogICAgU3ludGF4IGVycm9yIG9mIGNvbXByZXNzZWQgdGFibGUgaGFzIG9jY3VycmVkDQo+ ID4gKyAqIEByZXNlcnZlZDogICAgICAgICAgICAgUGFkZGluZw0KPiA+ICsgKi8NCj4gPiArc3Ry dWN0IGRydl9hZmZpbmVfc3RhdHVzIHsNCj4gPiArCWVudW0gZHJ2X2lwYV9zdGF0ZSBzdGF0ZTsN Cj4gPiArCXVpbnQzMl90IGNvbXBfc2l6ZSA6IDE7DQo+ID4gKwl1aW50MzJfdCBjb21wX2xhY2tf ZGF0YSA6IDE7DQo+ID4gKwl1aW50MzJfdCBjb21wX292ZXJfZGF0YSA6IDE7DQo+ID4gKwl1aW50 MzJfdCBjb21wX292ZXJfY29vcmRpbmF0ZSA6IDE7DQo+ID4gKwl1aW50MzJfdCBjb21wX3N5bnRh eF9lcnJvciA6IDE7DQo+ID4gKwl1aW50MzJfdCByZXNlcnZlZCA6IDI3Ow0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBkcnZfYWZmaW5lX2Rlc2NyaXB0b3IgLSBBRkZJ TkUgSVBBIGRlc2NyaXB0b3IgZm9yIElPQ19JUEFfU1RBUlQNCj4gPiArICogQGN0cmw6ICAgICAg ICAgICAgT3BlcmF0aW9uIGNvbnRyb2wgb2YgQUZGSU5FDQo+ID4gKyAqIEBtb2RlMjogICAgICAg ICAgIE9wZXJhdGlvbiBtb2RlIGZvciB0aGUgQUZGSU5FIGV4ZWN1dGlvbg0KPiA+ICsgKiBAbW9k ZTogICAgICAgICAgICBPcGVyYXRpb24gbW9kZSBmb3IgdGhlIEFGRklORSBleGVjdXRpb24NCj4g PiArICogQGFkal9wOiAgICAgICAgICAgT3V0cHV0IFBpeGVsIFZhbHVlIEFkanVzdG1lbnQNCj4g PiArICogQHNyY19zaXplOiAgICAgICAgSW5wdXQgaW1hZ2Ugc2l6ZQ0KPiA+ICsgKiBAc3JjX2Fk ZHI6ICAgICAgICBTdGFydCBhZGRyZXNzIG9mIGlucHV0IGltYWdlDQo+ID4gKyAqIEBkc3RfYmdu OiAgICAgICAgIFN0YXJ0IGNvb3JkaW5hdGUgb2YgdGhlIG91dHB1dCByZWN0YW5nbGUgYXJlYQ0K PiA+ICsgKiBAZHN0X3NpemU6ICAgICAgICBTaXplIG9mIHRoZSBvdXRwdXQgcmVjdGFuZ2xlIGFy ZWENCj4gPiArICogQGRzdF9hZGRyOiAgICAgICAgQWRkcmVzcyBvZiB0aGUgb3V0cHV0IHJlY3Rh bmdsZSBhcmVhDQo+ID4gKyAqIEBsX3B0Y2g6ICAgICAgICAgIExpbmUgcGl0Y2ggb2YgYm90aCB0 aGUgaW5wdXQgaW1hZ2UgYW5kIG91dHB1dA0KPiByZWN0YW5nbGUgYXJlYQ0KPiA+ICsgKiBAdGJs X2FkZHI6ICAgICAgICBTdGFydCBhZGRyZXNzIG9mIHRoZSB0YWJsZSB1c2VkIGluIHRoZSB0YWJs ZSBjb252ZXJzaW9uDQo+IG1vZGUuDQo+ID4gKyAqIEB0YmxfcHRjaDogICAgICAgIExpbmUgcGl0 Y2ggb2YgdGhlIHRhYmxlIHVzZWQgaW4gdGhlIHRhYmxlIGNvbnZlcnNpb24NCj4gbW9kZQ0KPiA+ ICsgKiBAYWZmaW5lX3BhcmFtOiAgICBQYXJhbWV0ZXJzIGZvciBBZmZpbmUgdHJhbnNmb3JtYXRp b24NCj4gPiArICogQGRpc3RfcGFyYW06ICAgICAgUGFyYW1ldGVycyBmb3IgRGlzdG9ydGlvbiBj b3JyZWN0aW9uDQo+ID4gKyAqIEBob21vX3BhcmFtOiAgICAgIFBhcmFtZXRlcnMgSG9tb2dyYXBo eSB0cmFuc2Zvcm1hdGlvbg0KPiA+ICsgKiBAdGJsX2NvbXBfc2l6ZTogICBUYWJsZSBjb21wcmVz c2lvbiBzaXplDQo+ID4gKyAqIEB0ZW1wX2Rpc3RfcDogICAgIFRlbXBvcmFyeSBidWZmZXIgdG8g aG9sZCBkaXN0b3J0aW9uIGlucHV0IHBhcmFtZXRlcnMNCj4gPiArICogQGNvbmZpZ19kb25lOiAg ICAgRmxhZ3Mgb2YgY2FsbGVkIGNvbmZpZ3VyYXRpb24NCj4gPiArICogQGJ1ZmZlcl9pbmZvOiAg ICAgVGFibGUgb2YgYnVmZmVyIGluZm9ybWF0aW9uDQo+ID4gKyAqIEBidWZmZXJfaW5mb19udW06 IE51bWJlciBvZiBidWZmZXJfaW5mbyAgKi8gc3RydWN0DQo+ID4gK2Rydl9hZmZpbmVfZGVzY3Jp cHRvciB7DQo+ID4gKwl1aW50MzJfdCBjdHJsOw0KPiA+ICsJdWludDMyX3QgbW9kZTI7DQo+ID4g Kwl1aW50MzJfdCBtb2RlOw0KPiA+ICsJdWludDMyX3QgYWRqX3A7DQo+ID4gKwl1aW50MzJfdCBz cmNfc2l6ZTsNCj4gPiArCXN0cnVjdCBkcnZfaXBhX2FkZHIgc3JjX2FkZHI7DQo+ID4gKwl1aW50 MzJfdCBkc3RfYmduOw0KPiA+ICsJdWludDMyX3QgZHN0X3NpemU7DQo+ID4gKwlzdHJ1Y3QgZHJ2 X2lwYV9hZGRyIGRzdF9hZGRyOw0KPiA+ICsJdWludDMyX3QgbF9wdGNoOw0KPiA+ICsJc3RydWN0 IGRydl9pcGFfYWRkciB0YmxfYWRkcjsNCj4gPiArCXVpbnQzMl90IHRibF9wdGNoOw0KPiA+ICsJ dWludDMyX3QgYWZmaW5lX3BhcmFtW0RSVl9BRkZJTkVfQUZGSU5FX1BBUkFNX05VTV07DQo+ID4g Kwl1aW50MzJfdCBkaXN0X3BhcmFtW0RSVl9BRkZJTkVfVU5ESVNUX1BBUkFNX05VTV07DQo+ID4g Kwl1aW50MzJfdCBob21vX3BhcmFtW0RSVl9BRkZJTkVfSE9NT19QQVJBTV9OVU1dOw0KPiA+ICsJ dWludDMyX3QgdGJsX2NvbXBfc2l6ZTsNCj4gPiArCWZsb2F0IHRlbXBfZGlzdF9wW0RSVl9BRkZJ TkVfVEVNUF9VTkRJU1RfUEFSQU1fTlVNXTsNCj4gPiArCXVpbnQxNl90IGNvbmZpZ19kb25lOw0K PiA+ICsJc3RydWN0IGRydl9pcGFfYnVmZmVyX2luZm8NCj4gYnVmZmVyX2luZm9bRFJWX0FGRklO RV9CVUZGRVJfSU5ERVhfTUFYXTsNCj4gPiArCWludDMyX3QgYnVmZmVyX2luZm9fbnVtOw0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArI2VuZGlmIC8qIF9VQVBJX0xJTlVYX0FGSUlORV9IICovDQo=