Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp27518321rwd; Tue, 4 Jul 2023 04:15:30 -0700 (PDT) X-Google-Smtp-Source: APBJJlFLWejrcd1dao5ZpIZirt/819HmmQ3DwjiRU0aNSIf802scsKXK9SoXKtGa/HwtE7I2Ma38 X-Received: by 2002:a17:90a:3e45:b0:263:72c5:9ac6 with SMTP id t5-20020a17090a3e4500b0026372c59ac6mr10455045pjm.11.1688469330514; Tue, 04 Jul 2023 04:15:30 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1688469330; cv=pass; d=google.com; s=arc-20160816; b=AoNPzaGkJ0Cqz+Kl4oH6pFzTOPgUSNUXRgyOxmBHESTQjBy65yrVzkzCbDnkMoyjSe DGIsskUyenJDRIVOWasDjDpzPgIqMhCcYvi6IgiXPnUyYQY4s5EDgQttjGNkQWnJm+Kz Rcuo1rtUWsPCdzQNU+8SZaKaCxRj5Egks/2Dt1RonVKBcwNTmHRKrWDgkhe/yOhYZDaX PhMhpIBv+MvkTH1psN4f8QVfcp6iK0J6a79Hb1TPdLPu9sNsj6Q0StiG/KTdJMOVU2Ty uxR0TRyoPBSzCfZnznHbznMdLF/1beFEvwGVCzfI1UVRoZXcXOOtmO+nET+QVWLXq1ZO 9Xmg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature:dkim-signature; bh=b8x7dGr4YWycZ/gOQ3M6WZRPqUzro8w2U31W9VN+PCA=; fh=zdjl0OT7UqPSxNmop3Uo+NaE8Oni+xybZt/iMBkBiK8=; b=iy6mkIbjPJo5hNZ9tk/TSdGfAO7jkjwW/fSYBHKwRegpLSMwynAnAVXEI9MziNouvx pyN75Sgz6KI7fW/F5cYZJo5IYv5eRG1KOHoEui8CSlYMpBrdvHo9PmeyrI0/I3PAgBHo QT+8/m9+Ps4YQNofEVMxe3OjQHmCjF043bKa6dMB/nKIR13h2XQrXvtVsDrhr7kWnsjX AWDpJf7By55qnUsifniVr1gtYpi/4IEH/FDdX4uZ8rP60jGQWYoDAoHVG/O/TwFOWxjH 3ukTNLzVAVnkDdnuoF2T1GLOJ/6cJmDJShXru6Zr4NOsz23UPmKDXGQkSv3egm0mKo/V 2ynA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=vDf2n4uc; dkim=pass header.i=@mediateko365.onmicrosoft.com header.s=selector2-mediateko365-onmicrosoft-com header.b=jDXVQXB0; arc=pass (i=1 spf=pass spfdomain=mediatek.com dkim=pass dkdomain=mediatek.com dmarc=pass fromdomain=mediatek.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=mediatek.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i36-20020a17090a3da700b0024e5ed38294si19901695pjc.66.2023.07.04.04.15.15; Tue, 04 Jul 2023 04:15:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=vDf2n4uc; dkim=pass header.i=@mediateko365.onmicrosoft.com header.s=selector2-mediateko365-onmicrosoft-com header.b=jDXVQXB0; arc=pass (i=1 spf=pass spfdomain=mediatek.com dkim=pass dkdomain=mediatek.com dmarc=pass fromdomain=mediatek.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231394AbjGDLJT (ORCPT + 99 others); Tue, 4 Jul 2023 07:09:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33684 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231218AbjGDLJR (ORCPT ); Tue, 4 Jul 2023 07:09:17 -0400 Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A9A06E52; Tue, 4 Jul 2023 04:09:11 -0700 (PDT) X-UUID: 2f7017fc1a5b11eeb20a276fd37b9834-20230704 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=MIME-Version:Content-Transfer-Encoding:Content-ID:Content-Type:In-Reply-To:References:Message-ID:Date:Subject:CC:To:From; bh=b8x7dGr4YWycZ/gOQ3M6WZRPqUzro8w2U31W9VN+PCA=; b=vDf2n4ucOTuW3rigTNyluhny8RBOyWOYDsJklMvGOZUTgpUImYse1cSWacQFdTuCm2ByTX7/YeToRdPzQq5Lg75csvTk33piSDfwS5XGMEIihCXBmFDlHNNSXWXTBtDWM8eL4oazfd1wGmAgJne4R9Lyr6u1w/rAzNlNQ/4QsT4=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.27,REQID:95fca899-9923-4dc8-b347-91ce3ee08896,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:45,FILE:0,BULK:0,RULE:Release_Ham,ACTION :release,TS:45 X-CID-INFO: VERSION:1.1.27,REQID:95fca899-9923-4dc8-b347-91ce3ee08896,IP:0,URL :0,TC:0,Content:0,EDM:0,RT:0,SF:45,FILE:0,BULK:0,RULE:Release_Ham,ACTION:r elease,TS:45 X-CID-META: VersionHash:01c9525,CLOUDID:a91dd90d-c22b-45ab-8a43-3004e9216b56,B ulkID:2307041909063M862SWC,BulkQuantity:0,Recheck:0,SF:17|19|48|38|29|28|1 02,TC:nil,Content:0,EDM:-3,IP:nil,URL:11|1,File:nil,Bulk:nil,QS:nil,BEC:ni l,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO X-CID-BVR: 0 X-CID-BAS: 0,_,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_SDM,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD, TF_CID_SPAM_ULN X-UUID: 2f7017fc1a5b11eeb20a276fd37b9834-20230704 Received: from mtkmbs14n2.mediatek.inc [(172.21.101.76)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 1098830967; Tue, 04 Jul 2023 19:09:03 +0800 Received: from mtkmbs10n2.mediatek.inc (172.21.101.183) by mtkmbs13n1.mediatek.inc (172.21.101.193) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Tue, 4 Jul 2023 19:09:02 +0800 Received: from APC01-TYZ-obe.outbound.protection.outlook.com (172.21.101.237) by mtkmbs10n2.mediatek.inc (172.21.101.183) with Microsoft SMTP Server id 15.2.1118.26 via Frontend Transport; Tue, 4 Jul 2023 19:09:02 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hIIOi8ORooZFEyJiKE7dk/CSQoRt/RbN/SUJqM2ph0qIBQlYzWyrdCOQhbbHHARLjQbb0e2RksDDXOv+gSYrDAtvLTsvGhVGcdJU+m4NpUCiNH4e3vLb8hareeQgwZ13WjknWprNvhhuZrz6wHVNQu+ijQzjc9vF/SaA103RFtAzClx5s/wl28ZDoRBX5/5C/W2sKNXxnA9vB6ONEYA9QfZpC74YZT/09mQW5e1yPvZ2dzFg6gcbanOK0eY+D2OzKiuRT0fA/7tsCYGeLnGpI2fEmH+ojqhlmAISuxP8nckVCm6z+vTiHDAM/YbKLvm6KtDqU+gfYWFrIaQjwmxL5Q== 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=b8x7dGr4YWycZ/gOQ3M6WZRPqUzro8w2U31W9VN+PCA=; b=nTmSxAKblTJC0ty04nazN5w7PzuIF+70Id226kWODlD9wHvmLExOyPzuY+vM3Sfbz786KKLSrgXb8ihYj3Plu3bLchyLQCaZhEN552tZSDNjAoetAzyIiEJKSVQGAnR6yQwjDfZFRu2cpysJD5rgm8sYkQbXJbJBubtfYmAqbksBSnyl/l9ja1PQQN7DCApjmhWwQEVik1CAJIA1VOBmffJPQeEJcSKR3U/rrYMy0c/do8SBrzqFEvxuzWKo7pS0SUi0fsjjsKJr2kza4Q7mX+2rv8hTAHGhLy2qnifHeqpduKVVS+B8e1wiWuAAm8wDyP1KP2gd3+0R5+tY6QnjEg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mediatek.com; dmarc=pass action=none header.from=mediatek.com; dkim=pass header.d=mediatek.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mediateko365.onmicrosoft.com; s=selector2-mediateko365-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=b8x7dGr4YWycZ/gOQ3M6WZRPqUzro8w2U31W9VN+PCA=; b=jDXVQXB0SVZGouUSLpGM5BtBMXrJAN2NQ77ycwSTqaNUVXNGfM16JLLKvCvYIdhvtkkAkFUhbkzY8v5NOxJh/EVAkUGM0FglAJW3IsLTiyJSJurBhyRJMbcVtEnfq+1CDvdDuQ6rX70I0UV4VCSapxj/v+yBVkV52ukMcGx8BVc= Received: from SL2PR03MB4153.apcprd03.prod.outlook.com (2603:1096:100:4e::10) by SI2PR03MB5998.apcprd03.prod.outlook.com (2603:1096:4:14a::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.24; Tue, 4 Jul 2023 11:08:58 +0000 Received: from SL2PR03MB4153.apcprd03.prod.outlook.com ([fe80::8fce:558a:2511:c41b]) by SL2PR03MB4153.apcprd03.prod.outlook.com ([fe80::8fce:558a:2511:c41b%4]) with mapi id 15.20.6544.024; Tue, 4 Jul 2023 11:08:58 +0000 From: =?utf-8?B?WXVuZmVpIERvbmcgKOiRo+S6kemjnik=?= To: "nhebert@chromium.org" , "benjamin.gaignard@collabora.com" , "nfraprado@collabora.com" , "angelogioacchino.delregno@collabora.com" , "nicolas.dufresne@collabora.com" , "hverkuil-cisco@xs4all.nl" CC: "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , "frkoenig@chromium.org" , "stevecho@chromium.org" , "wenst@chromium.org" , "linux-media@vger.kernel.org" , "devicetree@vger.kernel.org" , "daniel@ffwll.ch" , Project_Global_Chrome_Upstream_Group , "hsinyi@chromium.org" , "linux-arm-kernel@lists.infradead.org" Subject: Re: [PATCH v4,06/11] media: mediatek: vcodec: replace pr_* with dev_* for v4l2 debug message Thread-Topic: [PATCH v4,06/11] media: mediatek: vcodec: replace pr_* with dev_* for v4l2 debug message Thread-Index: AQHZrec4dr6aS4eOpU2liTzdlks+1q+pdAyA Date: Tue, 4 Jul 2023 11:08:58 +0000 Message-ID: <5259a230c47415dd440777469f149d4881a44795.camel@mediatek.com> References: <20230626035346.30654-1-yunfei.dong@mediatek.com> <20230626035346.30654-7-yunfei.dong@mediatek.com> <48b38696cd895b045b96e6076a844c3eeac90092.camel@collabora.com> In-Reply-To: <48b38696cd895b045b96e6076a844c3eeac90092.camel@collabora.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Evolution 3.28.5-0ubuntu0.18.04.2 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=mediatek.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SL2PR03MB4153:EE_|SI2PR03MB5998:EE_ x-ms-office365-filtering-correlation-id: d3e8d947-dd98-4063-8aa7-08db7c7f1078 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: x+hJ3hYkqhJ5KbvcQBxDffGXbyHHHIoU0hEGo+BUUDALR96owcQPxm/Rz08XNQ6giwufge7WM0Y6kRYm6xX5qjO7zI4lUiQQkQJEcZasKPvEgfH/nZhaQaGjgd2zGOJlUu3BRj07Y2fIZg6DVeybQTx5doYJfkmpuBr9Ttz4dMitIDBhnIgug6PLRRcJZK2n+Jbpjo6xx4UyiTZqfAEKBfAXU1MNEYbfOF3JYmrJ5GU2PnuZyFWvkeADKl1AlUtSGqsz8xQcq+hcOs6Txq2HtJKFkRvIMw5E4z7otdKFFdSyxBIG0jGhMJqmvhu62Hw9d1UXrIwJKEKJ0FLGhKRzdWv6LYsJdLsC426c7EQNpPAKbvaspDxKjl4iPsVD33JiIBkroN85ka7Ki8On8F6Xrr4eWsxGf25BVhnztexWt1NsZJQvn/RfzCZsCKKp4Z5KaVWLAfBn8QoF153ymgr+PeAqPFk//ldtk3Hz4+oL4BRbY/Wb4pdAsuudazKBQg4N7xr58s0IA+384wRsB4p0QgK3+jB/F7YgVHyxn6sEaobjowCiWbxxGKAANi69D+d7Kusoa2FsIMoCv+ZeEX6AJ/L5OeojMOkCGlk/buvGdlKLXs3ADlSpgMAtKSWU4DBal52gr/z8jP7jWT3jp6VKF3FEC0VblPGFNFA6RkfvpzN3M/Uo9PWHR4MK5xWD5iyN x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SL2PR03MB4153.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(39860400002)(376002)(346002)(396003)(136003)(366004)(451199021)(41300700001)(86362001)(38100700002)(30864003)(6486002)(2616005)(71200400001)(83380400001)(122000001)(186003)(6506007)(26005)(66574015)(6512007)(54906003)(110136005)(38070700005)(2906002)(478600001)(36756003)(316002)(85182001)(66476007)(4326008)(91956017)(76116006)(66446008)(66556008)(66946007)(8936002)(64756008)(8676002)(7416002)(5660300002)(15650500001)(99106002)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?KzJ2b0RjRk1RdDhWd2h1QkNMRmFXbGpsYVU2NG5DTmM2RXorSTZKcVU1bzhV?= =?utf-8?B?ejV1d3F4czhjVzBydktnRlk3QSs1dll2SHZvVjlDdHZrci9WUjdoUWY1VEdO?= =?utf-8?B?R2NJL0k0RHJBMlFtTmt3RUk1RWFacUpwdEUzTzBqSk5DUkw1K0F0ekpxSUND?= =?utf-8?B?MFBEWGhqSk42QkJHOTYwajlCRndlMzE3U0x6N25SVXpIci92NGovMzBnYld6?= =?utf-8?B?dnMxNThrN3FpQ2hhazYvR3BHdTRjeUFFRXdodVY0UWxkODhqRFBYSG9tODlt?= =?utf-8?B?OE15SVplWEFOY3BtRlFNNSt6eFVaaHowUUZ4OE9mV2VhWE1ZRWdmVzdKazRr?= =?utf-8?B?Z2xBTytJZkNkalZQenk5aDlJald0WC85TkpsVHIwUHcvbzBIV0gzdzlTTjNV?= =?utf-8?B?S3BlWmh4ejhRelFWTzJWOXhGRmw0T3NGbDNDOElRTEVzZmJZR0FYcEo0NnpO?= =?utf-8?B?cUlFU3UrZmdOQWlNa0h5Z0xOMnFHTnYrL095Z2FreHdQQmRFNEdhdWVJbUJq?= =?utf-8?B?cm1jL1l5Q3Uxd2xQZjZHWVNEU0pTemVKc2E5OStkWkJkSnhsbElsUnIveDBv?= =?utf-8?B?cERZeGZqNFprV0NOdlFzWXJqZC9ibzVnUDk0bkdpWGc0KzA0VEVJaHA3SFVm?= =?utf-8?B?V2NpejJTRXRDRDFucitPVDVOeGozRzVzN0xBeUxudWtFeXRqUkw5a3BiMHo4?= =?utf-8?B?NXd3b0U3OGliNjRHZ1g1K01uVFpyMi9sb3Zod0xoSmVZUFZibVQ3TlhQR2tt?= =?utf-8?B?VjRBUkxMcjFGY0ZJWlZNeHc4QjVwTWEydFB5Q3ErWnFPS3JldEp6TlhTWEox?= =?utf-8?B?Vis1QzZ3QmtWSklCRWZ4WnhNK2N2RGNWYi9sbCtteklNNytpSE9qZjVHWmdh?= =?utf-8?B?dzdYOGNzblBkTEN4aGRSbEppQ2FVb2Yva1hLZ1dtbnFJYi9VNnRZYmQvRmE1?= =?utf-8?B?cmQ3WWZNcTRWRVprTk9iVFljMy9COVhQaEZTWFZxNE5PREtVRExsRGlPTHJT?= =?utf-8?B?cHlveUJZYytqRTIzQkowYlZCY0tSa3dZNWpWYWhQZjFiTXIzSFh3ZWtvTURv?= =?utf-8?B?eWk3Y1dCYWtRT3FVMXdDVkVTWCtrUnd5UElyb2pvTy9IclBVYzNMRnVWUjlM?= =?utf-8?B?TUFOMGpKREROSHV0MVBxMHF1VWptem01MWg2aWRoWFJ0b00rdTNkYXRWbHI2?= =?utf-8?B?M3VsNkRQMUUvRnI3MDdYS2xjaWM1d3EzYW5OMFFmbVVRV0lRTUZsMDFObnI5?= =?utf-8?B?M1JXZmdZZW1SbHp4bCtBbURic0dzbUdHRTE0eTR4UjRGNjB0dEMwTkxWTC83?= =?utf-8?B?OWZxNDNNWVluTjgzdGNzS0xuZk1HTTV2MDhQSG5CKzh3V1ljbmhncWZnWm9H?= =?utf-8?B?UVFtdWZMRzgvV0R3c0poRFRLcm90anNHcExXYlZjQ1pLVXpsZmtFK3JkYjVt?= =?utf-8?B?Yy9kS0lQdElTc0ZPRkYrSmk1UDN2RUFSN0pwaFBTNmx0L2NDZjJTUWRxVWYz?= =?utf-8?B?cnFQT2x5Q3FnRUZNU3lBL2NXbkgyWTNPN1dnQmNNanlNRmhGU2FLSjdxK29a?= =?utf-8?B?a1VqaGRwZW9UajRFeGlzamFPZC9LaDJWSno1bVNnQzNWYnRlSWdGa3YzNjBP?= =?utf-8?B?STJwZksxWXNhajBMZVJDWGkwUGdYQ2paMW1KNHhaQ3N2TUF5Q0NINE1XbVBy?= =?utf-8?B?YTVzS1VDYlpqQnFUbmhqMVMzRGdtcGtsM0p4cmxuOGk3c3BTcDNXZ3VGSkNi?= =?utf-8?B?eEwzTW9MOGRLb1hxbUIzTUdYTERjM1hOWFBGU3Q1TEdBdXBFQm5PY0wzRG1Q?= =?utf-8?B?VEFtSE5YRXJwVnIxTm0ycmQ3VGNkM01zSEl0d0l1dEFiSkxHN1hqbEtmajM0?= =?utf-8?B?ZFp2QmdFcGVpd0tJbEgzVE0xa05iZnZtcUEzTk52U20xYk10VU4zYXZhcGlX?= =?utf-8?B?YzRFVVVtK0pWWFRXT21Ma1Y1dGRDT2FMVDByWTZPc3ZjTWdtRlBvcU03WWVE?= =?utf-8?B?clZrS2RrSStWNXBFdlV5dFJ0emkvYjdIQWEwUGlzN2tkckJ3OHRYeTIxYktK?= =?utf-8?B?TFB1aFRKWm53ejRkaUoyOG1GS3lLVGpBY3JqVkV3dC9UTmZ6cWs3cjAyWUJQ?= =?utf-8?B?Zys2UHVkUUtpNFBGRXVvVHBidHVZaytIRCt1dkNkUW1jWVBTZTZHS2ZvRzNX?= =?utf-8?B?aFE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <78B3465DCF245F429FBD31DD150C23A6@apcprd03.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SL2PR03MB4153.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d3e8d947-dd98-4063-8aa7-08db7c7f1078 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jul 2023 11:08:58.2053 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a7687ede-7a6b-4ef6-bace-642f677fbe31 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 7pGGI92I2bxkKt77gz34rfLujIcZaRKw6sn84pEE+4gq/0ZDLfrqc6/UTsPuSKN6snE5e+TSrU179O0cR5WqTsSMYhy2yaLGbwuABPZRHo4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SI2PR03MB5998 X-MTK: N X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS, SPF_PASS,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=ham 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 SGkgTmljb2xhcywNCg0KVGhhbmtzIGZvciB5b3VyIHN1Z2dlc3Rpb24uDQoNCk9uIE1vbiwgMjAy My0wNy0wMyBhdCAxNTo0NiAtMDQwMCwgTmljb2xhcyBEdWZyZXNuZSB3cm90ZToNCj4gIAkgDQo+ IEV4dGVybmFsIGVtYWlsIDogUGxlYXNlIGRvIG5vdCBjbGljayBsaW5rcyBvciBvcGVuIGF0dGFj aG1lbnRzIHVudGlsDQo+IHlvdSBoYXZlIHZlcmlmaWVkIHRoZSBzZW5kZXIgb3IgdGhlIGNvbnRl bnQuDQo+ICBMZSBsdW5kaSAyNiBqdWluIDIwMjMgw6AgMTE6NTMgKzA4MDAsIFl1bmZlaSBEb25n IGEgw6ljcml0IDoNCj4gPiBBZGRpbmcgZGlmZmVyZW50IG1hY3JvIG10a192NGwyX3ZkZWNfZGJn IGFuZCBtdGtfdjRsMl92ZW5jX2RiZyBmb3INCj4gPiBlbmNvZGVyIGFuZCBkZWNvZGVyLiBUaGVu IGNhbGxpbmcgdGhlIGNvbW1vbiBtYXJjbyBtdGtfdjRsMl9kZWJ1Zw0KPiB0bw0KPiA+IHByaW50 IGRlYnVnIG1lc3NhZ2UuDQo+ID4gDQo+ID4gUmVwbGFjZSBwcl9lcnIgd2l0aCBkZXZfZXJyIGZv ciAnbXRrX3Y0bDJfZXJyJyBkZWJ1ZyBtZXNzYWdlLg0KPiA+IFJlcGxhY2UgcHJfZGVidWcgd2l0 aCBkZXZfZGJnIGZvciAnbXRrX3Y0bDJfZGVidWcnIGRlYnVnIG1lc3NhZ2UuDQo+ID4gDQo+ID4g U2lnbmVkLW9mZi1ieTogWXVuZmVpIERvbmcgPHl1bmZlaS5kb25nQG1lZGlhdGVrLmNvbT4NCj4g PiAtLS0NCj4gPiAgLi4uL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy9tdGtfdmNvZGVjX2RlYy5j IHwgMTE2ICsrKysrLS0tLS0NCj4gPiAgLi4uL21lZGlhdGVrL3Zjb2RlYy9tdGtfdmNvZGVjX2Rl Y19kcnYuYyAgICAgIHwgIDUzICsrLS0tDQo+ID4gIC4uLi9tZWRpYXRlay92Y29kZWMvbXRrX3Zj b2RlY19kZWNfaHcuYyAgICAgICB8ICAgNyArLQ0KPiA+ICAuLi4vbWVkaWF0ZWsvdmNvZGVjL210 a192Y29kZWNfZGVjX3BtLmMgICAgICAgfCAgMTkgKy0NCj4gPiAgLi4uL21lZGlhdGVrL3Zjb2Rl Yy9tdGtfdmNvZGVjX2RlY19zdGF0ZWZ1bC5jIHwgMTQzICsrKysrKy0tLS0tLQ0KPiA+ICAuLi4v dmNvZGVjL210a192Y29kZWNfZGVjX3N0YXRlbGVzcy5jICAgICAgICAgfCAgNjIgKystLS0NCj4g PiAgLi4uL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy9tdGtfdmNvZGVjX2VuYy5jIHwgMjExICsr KysrKysrLS0tLQ0KPiAtLS0tLS0NCj4gPiAgLi4uL21lZGlhdGVrL3Zjb2RlYy9tdGtfdmNvZGVj X2VuY19kcnYuYyAgICAgIHwgIDQ1ICsrLS0NCj4gPiAgLi4uL21lZGlhdGVrL3Zjb2RlYy9tdGtf dmNvZGVjX2VuY19wbS5jICAgICAgIHwgICA4ICstDQo+ID4gIC4uLi9wbGF0Zm9ybS9tZWRpYXRl ay92Y29kZWMvbXRrX3Zjb2RlY19mdy5jICB8ICAgMiArLQ0KPiA+ICAuLi4vbWVkaWF0ZWsvdmNv ZGVjL210a192Y29kZWNfZndfc2NwLmMgICAgICAgfCAgIDIgKy0NCj4gPiAgLi4uL21lZGlhdGVr L3Zjb2RlYy9tdGtfdmNvZGVjX2Z3X3ZwdS5jICAgICAgIHwgICA3ICstDQo+ID4gIC4uLi9tZWRp YXRlay92Y29kZWMvbXRrX3Zjb2RlY19pbnRyLmMgICAgICAgICB8ICAxMiArLQ0KPiA+ICAuLi4v bWVkaWF0ZWsvdmNvZGVjL210a192Y29kZWNfdXRpbC5jICAgICAgICAgfCAgMzAgKystDQo+ID4g IC4uLi9tZWRpYXRlay92Y29kZWMvbXRrX3Zjb2RlY191dGlsLmggICAgICAgICB8ICAyNCArLQ0K PiA+ICAuLi4vdmNvZGVjL3ZkZWMvdmRlY19hdjFfcmVxX2xhdF9pZi5jICAgICAgICAgfCAgMTAg Ky0NCj4gPiAgLi4uL21lZGlhdGVrL3Zjb2RlYy92ZGVjL3ZkZWNfaDI2NF9yZXFfaWYuYyAgIHwg IDE0ICstDQo+ID4gIC4uLi92Y29kZWMvdmRlYy92ZGVjX2gyNjRfcmVxX211bHRpX2lmLmMgICAg ICB8ICAxNiArLQ0KPiA+ICAuLi4vdmNvZGVjL3ZkZWMvdmRlY19oZXZjX3JlcV9tdWx0aV9pZi5j ICAgICAgfCAgMTQgKy0NCj4gPiAgLi4uL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy92ZGVjX2Ry dl9pZi5jICAgIHwgICA0ICstDQo+ID4gIC4uLi9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvdmRl Y19tc2dfcXVldWUuYyB8ICA1MiArKystLQ0KPiA+ICAuLi4vcGxhdGZvcm0vbWVkaWF0ZWsvdmNv ZGVjL3ZkZWNfbXNnX3F1ZXVlLmggfCAgIDIgKw0KPiA+ICAuLi4vcGxhdGZvcm0vbWVkaWF0ZWsv dmNvZGVjL3ZkZWNfdnB1X2lmLmMgICAgfCAgIDIgKy0NCj4gPiAgMjMgZmlsZXMgY2hhbmdlZCwg NDEzIGluc2VydGlvbnMoKyksIDQ0MiBkZWxldGlvbnMoLSkNCj4gPiANCj4gPiBkaWZmIC0tZ2l0 DQo+IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvbXRrX3Zjb2RlY19k ZWMuYw0KPiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL210a192Y29k ZWNfZGVjLmMNCj4gPiBpbmRleCA5M2ZjZWE4MjEwMDEuLjI2OWY5MGZlMGExYSAxMDA2NDQNCj4g PiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy9tdGtfdmNvZGVj X2RlYy5jDQo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMv bXRrX3Zjb2RlY19kZWMuYw0KPiA+IEBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBpbnQgdmlkaW9j X2RlY29kZXJfY21kKHN0cnVjdCBmaWxlICpmaWxlLA0KPiB2b2lkICpwcml2LA0KPiA+ICBpZiAo cmV0KQ0KPiA+ICByZXR1cm4gcmV0Ow0KPiA+ICANCj4gPiAtbXRrX3Y0bDJfZGVidWcoMSwgImRl Y29kZXIgY21kPSV1IiwgY21kLT5jbWQpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2RiZygxLCBjdHgs ICJkZWNvZGVyIGNtZD0ldSIsIGNtZC0+Y21kKTsNCj4gPiAgZHN0X3ZxID0gdjRsMl9tMm1fZ2V0 X3ZxKGN0eC0+bTJtX2N0eCwNCj4gPiAgVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFX01QTEFO RSk7DQo+ID4gIHN3aXRjaCAoY21kLT5jbWQpIHsNCj4gPiBAQCAtOTAsMTEgKzkwLDExIEBAIHN0 YXRpYyBpbnQgdmlkaW9jX2RlY29kZXJfY21kKHN0cnVjdCBmaWxlDQo+ICpmaWxlLCB2b2lkICpw cml2LA0KPiA+ICBzcmNfdnEgPSB2NGwyX20ybV9nZXRfdnEoY3R4LT5tMm1fY3R4LA0KPiA+ICBW NEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExBTkUpOw0KPiA+ICBpZiAoIXZiMl9pc19zdHJl YW1pbmcoc3JjX3ZxKSkgew0KPiA+IC1tdGtfdjRsMl9kZWJ1ZygxLCAiT3V0cHV0IHN0cmVhbSBp cyBvZmYuIE5vIG5lZWQgdG8gZmx1c2guIik7DQo+ID4gK210a192NGwyX3ZkZWNfZGJnKDEsIGN0 eCwgIk91dHB1dCBzdHJlYW0gaXMgb2ZmLiBObyBuZWVkIHRvDQo+IGZsdXNoLiIpOw0KPiA+ICBy ZXR1cm4gMDsNCj4gPiAgfQ0KPiA+ICBpZiAoIXZiMl9pc19zdHJlYW1pbmcoZHN0X3ZxKSkgew0K PiA+IC1tdGtfdjRsMl9kZWJ1ZygxLCAiQ2FwdHVyZSBzdHJlYW0gaXMgb2ZmLiBObyBuZWVkIHRv IGZsdXNoLiIpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2RiZygxLCBjdHgsICJDYXB0dXJlIHN0cmVh bSBpcyBvZmYuIE5vIG5lZWQgdG8NCj4gZmx1c2guIik7DQo+ID4gIHJldHVybiAwOw0KPiA+ICB9 DQo+ID4gIHY0bDJfbTJtX2J1Zl9xdWV1ZShjdHgtPm0ybV9jdHgsICZjdHgtPmVtcHR5X2ZsdXNo X2J1Zi52Yik7DQo+ID4gQEAgLTE3Miw4ICsxNzIsNyBAQCBzdGF0aWMgaW50IHZpZGlvY192ZGVj X3FidWYoc3RydWN0IGZpbGUgKmZpbGUsDQo+IHZvaWQgKnByaXYsDQo+ID4gIHN0cnVjdCBtdGtf dmNvZGVjX2N0eCAqY3R4ID0gZmhfdG9fY3R4KHByaXYpOw0KPiA+ICANCj4gPiAgaWYgKGN0eC0+ c3RhdGUgPT0gTVRLX1NUQVRFX0FCT1JUKSB7DQo+ID4gLW10a192NGwyX2VycigiWyVkXSBDYWxs IG9uIFFCVUYgYWZ0ZXIgdW5yZWNvdmVyYWJsZSBlcnJvciIsDQo+ID4gLWN0eC0+aWQpOw0KPiA+ ICttdGtfdjRsMl92ZGVjX2VycihjdHgsICJbJWRdIENhbGwgb24gUUJVRiBhZnRlciB1bnJlY292 ZXJhYmxlDQo+IGVycm9yIiwgY3R4LT5pZCk7DQo+ID4gIHJldHVybiAtRUlPOw0KPiA+ICB9DQo+ ID4gIA0KPiA+IEBAIC0xODYsOCArMTg1LDcgQEAgc3RhdGljIGludCB2aWRpb2NfdmRlY19kcWJ1 ZihzdHJ1Y3QgZmlsZSAqZmlsZSwNCj4gdm9pZCAqcHJpdiwNCj4gPiAgc3RydWN0IG10a192Y29k ZWNfY3R4ICpjdHggPSBmaF90b19jdHgocHJpdik7DQo+ID4gIA0KPiA+ICBpZiAoY3R4LT5zdGF0 ZSA9PSBNVEtfU1RBVEVfQUJPUlQpIHsNCj4gPiAtbXRrX3Y0bDJfZXJyKCJbJWRdIENhbGwgb24g RFFCVUYgYWZ0ZXIgdW5yZWNvdmVyYWJsZSBlcnJvciIsDQo+ID4gLWN0eC0+aWQpOw0KPiA+ICtt dGtfdjRsMl92ZGVjX2VycihjdHgsICJbJWRdIENhbGwgb24gRFFCVUYgYWZ0ZXIgdW5yZWNvdmVy YWJsZQ0KPiBlcnJvciIsIGN0eC0+aWQpOw0KPiA+ICByZXR1cm4gLUVJTzsNCj4gPiAgfQ0KPiA+ ICANCj4gPiBAQCAtMjg4LDExICsyODYsMTAgQEAgc3RhdGljIGludCB2aWRpb2NfdHJ5X2ZtdChz dHJ1Y3QNCj4gbXRrX3Zjb2RlY19jdHggKmN0eCwgc3RydWN0IHY0bDJfZm9ybWF0ICpmLA0KPiA+ ICAgICAgKHBpeF9mbXRfbXAtPmhlaWdodCArIDY0KSA8PSBmcm1zaXplLT5tYXhfaGVpZ2h0KQ0K PiA+ICBwaXhfZm10X21wLT5oZWlnaHQgKz0gNjQ7DQo+ID4gIA0KPiA+IC1tdGtfdjRsMl9kZWJ1 ZygwLA0KPiA+IC0iYmVmb3JlIHJlc2l6ZSB3aWR0aD0lZCwgaGVpZ2h0PSVkLCBhZnRlciByZXNp emUgd2lkdGg9JWQsDQo+IGhlaWdodD0lZCwgc2l6ZWltYWdlPSVkIiwNCj4gPiAtdG1wX3csIHRt cF9oLCBwaXhfZm10X21wLT53aWR0aCwNCj4gPiAtcGl4X2ZtdF9tcC0+aGVpZ2h0LA0KPiA+IC1w aXhfZm10X21wLT53aWR0aCAqIHBpeF9mbXRfbXAtPmhlaWdodCk7DQo+ID4gK210a192NGwyX3Zk ZWNfZGJnKDAsIGN0eCwNCj4gPiArICAiYmVmb3JlIHJlc2l6ZSB3eGg9JWR4JWQsIGFmdGVyIHJl c2l6ZSB3eGg9JWR4JWQsIHNpemVpbWFnZT0lZCIsDQo+ID4gKyAgdG1wX3csIHRtcF9oLCBwaXhf Zm10X21wLT53aWR0aCwgcGl4X2ZtdF9tcC0+aGVpZ2h0LA0KPiA+ICsgIHBpeF9mbXRfbXAtPndp ZHRoICogcGl4X2ZtdF9tcC0+aGVpZ2h0KTsNCj4gPiAgDQo+ID4gIHBpeF9mbXRfbXAtPm51bV9w bGFuZXMgPSBmbXQtPm51bV9wbGFuZXM7DQo+ID4gIHBpeF9mbXRfbXAtPnBsYW5lX2ZtdFswXS5z aXplaW1hZ2UgPQ0KPiA+IEBAIC0zNDQsNyArMzQxLDcgQEAgc3RhdGljIGludCB2aWRpb2NfdHJ5 X2ZtdF92aWRfb3V0X21wbGFuZShzdHJ1Y3QNCj4gZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCj4g PiAgfQ0KPiA+ICANCj4gPiAgaWYgKHBpeF9mbXRfbXAtPnBsYW5lX2ZtdFswXS5zaXplaW1hZ2Ug PT0gMCkgew0KPiA+IC1tdGtfdjRsMl9lcnIoInNpemVpbWFnZSBvZiBvdXRwdXQgZm9ybWF0IG11 c3QgYmUgZ2l2ZW4iKTsNCj4gPiArbXRrX3Y0bDJfdmRlY19lcnIoY3R4LCAic2l6ZWltYWdlIG9m IG91dHB1dCBmb3JtYXQgbXVzdCBiZQ0KPiBnaXZlbiIpOw0KPiA+ICByZXR1cm4gLUVJTlZBTDsN Cj4gPiAgfQ0KPiA+ICANCj4gPiBAQCAtNDMyLDcgKzQyOSw3IEBAIHN0YXRpYyBpbnQgdmlkaW9j X3ZkZWNfc19mbXQoc3RydWN0IGZpbGUgKmZpbGUsDQo+IHZvaWQgKnByaXYsDQo+ID4gIGNvbnN0 IHN0cnVjdCBtdGtfdmlkZW9fZm10ICpmbXQ7DQo+ID4gIGNvbnN0IHN0cnVjdCBtdGtfdmNvZGVj X2RlY19wZGF0YSAqZGVjX3BkYXRhID0gY3R4LT5kZXYtDQo+ID52ZGVjX3BkYXRhOw0KPiA+ICAN Cj4gPiAtbXRrX3Y0bDJfZGVidWcoMywgIlslZF0iLCBjdHgtPmlkKTsNCj4gPiArbXRrX3Y0bDJf dmRlY19kYmcoMywgY3R4LCAiWyVkXSIsIGN0eC0+aWQpOw0KPiA+ICANCj4gPiAgcV9kYXRhID0g bXRrX3ZkZWNfZ2V0X3FfZGF0YShjdHgsIGYtPnR5cGUpOw0KPiA+ICBpZiAoIXFfZGF0YSkNCj4g PiBAQCAtNDQ2LDcgKzQ0Myw3IEBAIHN0YXRpYyBpbnQgdmlkaW9jX3ZkZWNfc19mbXQoc3RydWN0 IGZpbGUgKmZpbGUsDQo+IHZvaWQgKnByaXYsDQo+ID4gIGlmICghZGVjX3BkYXRhLT51c2VzX3N0 YXRlbGVzc19hcGkgJiYNCj4gPiAgICAgIGYtPnR5cGUgPT0gVjRMMl9CVUZfVFlQRV9WSURFT19P VVRQVVRfTVBMQU5FICYmDQo+ID4gICAgICB2YjJfaXNfYnVzeSgmY3R4LT5tMm1fY3R4LT5vdXRf cV9jdHgucSkpIHsNCj4gPiAtbXRrX3Y0bDJfZXJyKCJvdXRfcV9jdHggYnVmZmVycyBhbHJlYWR5 IHJlcXVlc3RlZCIpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2VycihjdHgsICJvdXRfcV9jdHggYnVm ZmVycyBhbHJlYWR5IHJlcXVlc3RlZCIpOw0KPiA+ICByZXQgPSAtRUJVU1k7DQo+ID4gIH0NCj4g PiAgDQo+ID4gQEAgLTQ1Niw3ICs0NTMsNyBAQCBzdGF0aWMgaW50IHZpZGlvY192ZGVjX3NfZm10 KHN0cnVjdCBmaWxlICpmaWxlLA0KPiB2b2lkICpwcml2LA0KPiA+ICAgKi8NCj4gPiAgaWYgKChm LT50eXBlID09IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRV9NUExBTkUpICYmDQo+ID4gICAg ICB2YjJfaXNfYnVzeSgmY3R4LT5tMm1fY3R4LT5jYXBfcV9jdHgucSkpIHsNCj4gPiAtbXRrX3Y0 bDJfZXJyKCJjYXBfcV9jdHggYnVmZmVycyBhbHJlYWR5IHJlcXVlc3RlZCIpOw0KPiA+ICttdGtf djRsMl92ZGVjX2VycihjdHgsICJjYXBfcV9jdHggYnVmZmVycyBhbHJlYWR5IHJlcXVlc3RlZCIp Ow0KPiA+ICByZXQgPSAtRUJVU1k7DQo+ID4gIH0NCj4gPiAgDQo+ID4gQEAgLTQ5MSw4ICs0ODgs OCBAQCBzdGF0aWMgaW50IHZpZGlvY192ZGVjX3NfZm10KHN0cnVjdCBmaWxlICpmaWxlLA0KPiB2 b2lkICpwcml2LA0KPiA+ICBpZiAoY3R4LT5zdGF0ZSA9PSBNVEtfU1RBVEVfRlJFRSkgew0KPiA+ ICByZXQgPSB2ZGVjX2lmX2luaXQoY3R4LCBxX2RhdGEtPmZtdC0+Zm91cmNjKTsNCj4gPiAgaWYg KHJldCkgew0KPiA+IC1tdGtfdjRsMl9lcnIoIlslZF06IHZkZWNfaWZfaW5pdCgpIGZhaWwgcmV0 PSVkIiwNCj4gPiAtY3R4LT5pZCwgcmV0KTsNCj4gPiArbXRrX3Y0bDJfdmRlY19lcnIoY3R4LCAi WyVkXTogdmRlY19pZl9pbml0KCkgZmFpbCByZXQ9JWQiLA0KPiA+ICsgIGN0eC0+aWQsIHJldCk7 DQo+ID4gIHJldHVybiAtRUlOVkFMOw0KPiA+ICB9DQo+ID4gIGN0eC0+c3RhdGUgPSBNVEtfU1RB VEVfSU5JVDsNCj4gPiBAQCAtNTE1LDggKzUxMiw4IEBAIHN0YXRpYyBpbnQgdmlkaW9jX3ZkZWNf c19mbXQoc3RydWN0IGZpbGUgKmZpbGUsDQo+IHZvaWQgKnByaXYsDQo+ID4gICAqLw0KPiA+ICBy ZXQgPSB2ZGVjX2lmX2dldF9wYXJhbShjdHgsIEdFVF9QQVJBTV9QSUNfSU5GTywgJmN0eC0+cGlj aW5mbyk7DQo+ID4gIGlmIChyZXQpIHsNCj4gPiAtbXRrX3Y0bDJfZXJyKCJbJWRdRXJyb3IhISBH ZXQgR0VUX1BBUkFNX1BJQ1RVUkVfSU5GTyBGYWlsIiwNCj4gPiAtICAgICBjdHgtPmlkKTsNCj4g PiArbXRrX3Y0bDJfdmRlY19lcnIoY3R4LCAiWyVkXUVycm9yISEgR2V0IEdFVF9QQVJBTV9QSUNU VVJFX0lORk8NCj4gRmFpbCIsDQo+ID4gKyAgY3R4LT5pZCk7DQo+ID4gIH0NCj4gPiAgDQo+ID4g IGN0eC0+bGFzdF9kZWNvZGVkX3BpY2luZm8gPSBjdHgtPnBpY2luZm87DQo+ID4gQEAgLTU0MCwx MSArNTM3LDEzIEBAIHN0YXRpYyBpbnQgdmlkaW9jX3ZkZWNfc19mbXQoc3RydWN0IGZpbGUNCj4g KmZpbGUsIHZvaWQgKnByaXYsDQo+ID4gIA0KPiA+ICBjdHgtPnFfZGF0YVtNVEtfUV9EQVRBX0RT VF0uY29kZWRfd2lkdGggPSBjdHgtPnBpY2luZm8uYnVmX3c7DQo+ID4gIGN0eC0+cV9kYXRhW01U S19RX0RBVEFfRFNUXS5jb2RlZF9oZWlnaHQgPSBjdHgtPnBpY2luZm8uYnVmX2g7DQo+ID4gLW10 a192NGwyX2RlYnVnKDIsICJbJWRdIHZkZWNfaWZfaW5pdCgpIG51bV9wbGFuZSA9ICVkIHd4aD0l ZHglZA0KPiBwaWMgd3hoPSVkeCVkIHN6WzBdPTB4JXggc3pbMV09MHgleCIsDQo+ID4gLSAgICAg ICBjdHgtPmlkLCBwaXhfbXAtPm51bV9wbGFuZXMsIGN0eC0+cGljaW5mby5idWZfdywgY3R4LQ0K PiA+cGljaW5mby5idWZfaCwNCj4gPiAtICAgICAgIGN0eC0+cGljaW5mby5waWNfdywgY3R4LT5w aWNpbmZvLnBpY19oLA0KPiA+IC0gICAgICAgY3R4LT5xX2RhdGFbTVRLX1FfREFUQV9EU1RdLnNp emVpbWFnZVswXSwNCj4gPiAtICAgICAgIGN0eC0+cV9kYXRhW01US19RX0RBVEFfRFNUXS5zaXpl aW1hZ2VbMV0pOw0KPiA+ICttdGtfdjRsMl92ZGVjX2RiZygyLCBjdHgsDQo+ID4gKyAgIlslZF0g aW5pdCgpIHBsYW5lOiVkIHd4aD0lZHglZCBwaWMgd3hoPSVkeCVkIHN6PTB4JXhfMHgleCIsDQo+ ID4gKyAgY3R4LT5pZCwgcGl4X21wLT5udW1fcGxhbmVzLA0KPiA+ICsgIGN0eC0+cGljaW5mby5i dWZfdywgY3R4LT5waWNpbmZvLmJ1Zl9oLA0KPiA+ICsgIGN0eC0+cGljaW5mby5waWNfdywgY3R4 LT5waWNpbmZvLnBpY19oLA0KPiA+ICsgIGN0eC0+cV9kYXRhW01US19RX0RBVEFfRFNUXS5zaXpl aW1hZ2VbMF0sDQo+ID4gKyAgY3R4LT5xX2RhdGFbTVRLX1FfREFUQV9EU1RdLnNpemVpbWFnZVsx XSk7DQo+ID4gIH0NCj4gPiAgcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiBAQCAtNTcwLDE0ICs1Njks MTEgQEAgc3RhdGljIGludCB2aWRpb2NfZW51bV9mcmFtZXNpemVzKHN0cnVjdCBmaWxlDQo+ICpm aWxlLCB2b2lkICpwcml2LA0KPiA+ICBmc2l6ZS0+dHlwZSA9IFY0TDJfRlJNU0laRV9UWVBFX1NU RVBXSVNFOw0KPiA+ICBmc2l6ZS0+c3RlcHdpc2UgPSBkZWNfcGRhdGEtPnZkZWNfZm9ybWF0c1tp XS5mcm1zaXplOw0KPiA+ICANCj4gPiAtbXRrX3Y0bDJfZGVidWcoMSwgIiV4LCAlZCAlZCAlZCAl ZCAlZCAlZCIsDQo+ID4gLWN0eC0+ZGV2LT5kZWNfY2FwYWJpbGl0eSwNCj4gPiAtZnNpemUtPnN0 ZXB3aXNlLm1pbl93aWR0aCwNCj4gPiAtZnNpemUtPnN0ZXB3aXNlLm1heF93aWR0aCwNCj4gPiAt ZnNpemUtPnN0ZXB3aXNlLnN0ZXBfd2lkdGgsDQo+ID4gLWZzaXplLT5zdGVwd2lzZS5taW5faGVp Z2h0LA0KPiA+IC1mc2l6ZS0+c3RlcHdpc2UubWF4X2hlaWdodCwNCj4gPiAtZnNpemUtPnN0ZXB3 aXNlLnN0ZXBfaGVpZ2h0KTsNCj4gPiArbXRrX3Y0bDJfdmRlY19kYmcoMSwgY3R4LCAiJXgsICVk ICVkICVkICVkICVkICVkIiwNCj4gPiArICBjdHgtPmRldi0+ZGVjX2NhcGFiaWxpdHksIGZzaXpl LT5zdGVwd2lzZS5taW5fd2lkdGgsDQo+ID4gKyAgZnNpemUtPnN0ZXB3aXNlLm1heF93aWR0aCwg ZnNpemUtPnN0ZXB3aXNlLnN0ZXBfd2lkdGgsDQo+ID4gKyAgZnNpemUtPnN0ZXB3aXNlLm1pbl9o ZWlnaHQsIGZzaXplLT5zdGVwd2lzZS5tYXhfaGVpZ2h0LA0KPiA+ICsgIGZzaXplLT5zdGVwd2lz ZS5zdGVwX2hlaWdodCk7DQo+ID4gIA0KPiA+ICByZXR1cm4gMDsNCj4gPiAgfQ0KPiA+IEBAIC02 NDEsNyArNjM3LDcgQEAgc3RhdGljIGludCB2aWRpb2NfdmRlY19nX2ZtdChzdHJ1Y3QgZmlsZSAq ZmlsZSwNCj4gdm9pZCAqcHJpdiwNCj4gPiAgDQo+ID4gIHZxID0gdjRsMl9tMm1fZ2V0X3ZxKGN0 eC0+bTJtX2N0eCwgZi0+dHlwZSk7DQo+ID4gIGlmICghdnEpIHsNCj4gPiAtbXRrX3Y0bDJfZXJy KCJubyB2YjIgcXVldWUgZm9yIHR5cGU9JWQiLCBmLT50eXBlKTsNCj4gPiArbXRrX3Y0bDJfdmRl Y19lcnIoY3R4LCAibm8gdmIyIHF1ZXVlIGZvciB0eXBlPSVkIiwgZi0+dHlwZSk7DQo+ID4gIHJl dHVybiAtRUlOVkFMOw0KPiA+ICB9DQo+ID4gIA0KPiA+IEBAIC03MTIsOCArNzA4LDggQEAgc3Rh dGljIGludCB2aWRpb2NfdmRlY19nX2ZtdChzdHJ1Y3QgZmlsZSAqZmlsZSwNCj4gdm9pZCAqcHJp diwNCj4gPiAgcGl4X21wLT5wbGFuZV9mbXRbMV0uYnl0ZXNwZXJsaW5lID0gcV9kYXRhLT5ieXRl c3BlcmxpbmVbMV07DQo+ID4gIHBpeF9tcC0+cGxhbmVfZm10WzFdLnNpemVpbWFnZSA9IHFfZGF0 YS0+c2l6ZWltYWdlWzFdOw0KPiA+ICANCj4gPiAtbXRrX3Y0bDJfZGVidWcoMSwgIlslZF0gdHlw ZT0lZCBzdGF0ZT0lZCBGb3JtYXQgaW5mb3JtYXRpb24gY291bGQNCj4gbm90IGJlIHJlYWQsIG5v dCByZWFkeSB5ZXQhIiwNCj4gPiAtY3R4LT5pZCwgZi0+dHlwZSwgY3R4LT5zdGF0ZSk7DQo+ID4g K210a192NGwyX3ZkZWNfZGJnKDEsIGN0eCwgIlslZF0gdHlwZT0lZCBzdGF0ZT0lZCBGb3JtYXQN Cj4gaW5mb3JtYXRpb24gbm90IHJlYWR5ISIsDQo+ID4gKyAgY3R4LT5pZCwgZi0+dHlwZSwgY3R4 LT5zdGF0ZSk7DQo+ID4gIH0NCj4gPiAgDQo+ID4gIHJldHVybiAwOw0KPiA+IEBAIC03MzAsNyAr NzI2LDcgQEAgaW50IHZiMm9wc192ZGVjX3F1ZXVlX3NldHVwKHN0cnVjdCB2YjJfcXVldWUNCj4g KnZxLCB1bnNpZ25lZCBpbnQgKm5idWZmZXJzLA0KPiA+ICBxX2RhdGEgPSBtdGtfdmRlY19nZXRf cV9kYXRhKGN0eCwgdnEtPnR5cGUpOw0KPiA+ICANCj4gPiAgaWYgKHFfZGF0YSA9PSBOVUxMKSB7 DQo+ID4gLW10a192NGwyX2VycigidnEtPnR5cGU9JWQgZXJyXG4iLCB2cS0+dHlwZSk7DQo+ID4g K210a192NGwyX3ZkZWNfZXJyKGN0eCwgInZxLT50eXBlPSVkIGVyclxuIiwgdnEtPnR5cGUpOw0K PiA+ICByZXR1cm4gLUVJTlZBTDsNCj4gPiAgfQ0KPiA+ICANCj4gPiBAQCAtNzU2LDEwICs3NTIs OSBAQCBpbnQgdmIyb3BzX3ZkZWNfcXVldWVfc2V0dXAoc3RydWN0IHZiMl9xdWV1ZQ0KPiAqdnEs IHVuc2lnbmVkIGludCAqbmJ1ZmZlcnMsDQo+ID4gIHNpemVzW2ldID0gcV9kYXRhLT5zaXplaW1h Z2VbaV07DQo+ID4gIH0NCj4gPiAgDQo+ID4gLW10a192NGwyX2RlYnVnKDEsDQo+ID4gLSJbJWRd XHQgdHlwZSA9ICVkLCBnZXQgJWQgcGxhbmUocyksICVkIGJ1ZmZlcihzKSBvZiBzaXplIDB4JXgg MHgleA0KPiAiLA0KPiA+IC1jdHgtPmlkLCB2cS0+dHlwZSwgKm5wbGFuZXMsICpuYnVmZmVycywN Cj4gPiAtc2l6ZXNbMF0sIHNpemVzWzFdKTsNCj4gPiArbXRrX3Y0bDJfdmRlY19kYmcoMSwgY3R4 LA0KPiA+ICsgICJbJWRdXHQgdHlwZSA9ICVkLCBnZXQgJWQgcGxhbmUocyksICVkIGJ1ZmZlcihz KSBvZiBzaXplIDB4JXgNCj4gMHgleCAiLA0KPiA+ICsgIGN0eC0+aWQsIHZxLT50eXBlLCAqbnBs YW5lcywgKm5idWZmZXJzLCBzaXplc1swXSwgc2l6ZXNbMV0pOw0KPiA+ICANCj4gPiAgcmV0dXJu IDA7DQo+ID4gIH0NCj4gPiBAQCAtNzcwLDE2ICs3NjUsMTUgQEAgaW50IHZiMm9wc192ZGVjX2J1 Zl9wcmVwYXJlKHN0cnVjdCB2YjJfYnVmZmVyDQo+ICp2YikNCj4gPiAgc3RydWN0IG10a19xX2Rh dGEgKnFfZGF0YTsNCj4gPiAgaW50IGk7DQo+ID4gIA0KPiA+IC1tdGtfdjRsMl9kZWJ1ZygzLCAi WyVkXSAoJWQpIGlkPSVkIiwNCj4gPiAtY3R4LT5pZCwgdmItPnZiMl9xdWV1ZS0+dHlwZSwgdmIt PmluZGV4KTsNCj4gPiArbXRrX3Y0bDJfdmRlY19kYmcoMywgY3R4LCAiWyVkXSAoJWQpIGlkPSVk IiwNCj4gPiArICBjdHgtPmlkLCB2Yi0+dmIyX3F1ZXVlLT50eXBlLCB2Yi0+aW5kZXgpOw0KPiA+ ICANCj4gPiAgcV9kYXRhID0gbXRrX3ZkZWNfZ2V0X3FfZGF0YShjdHgsIHZiLT52YjJfcXVldWUt PnR5cGUpOw0KPiA+ICANCj4gPiAgZm9yIChpID0gMDsgaSA8IHFfZGF0YS0+Zm10LT5udW1fcGxh bmVzOyBpKyspIHsNCj4gPiAgaWYgKHZiMl9wbGFuZV9zaXplKHZiLCBpKSA8IHFfZGF0YS0+c2l6 ZWltYWdlW2ldKSB7DQo+ID4gLW10a192NGwyX2VycigiZGF0YSB3aWxsIG5vdCBmaXQgaW50byBw bGFuZSAlZCAoJWx1IDwgJWQpIiwNCj4gPiAtaSwgdmIyX3BsYW5lX3NpemUodmIsIGkpLA0KPiA+ IC1xX2RhdGEtPnNpemVpbWFnZVtpXSk7DQo+ID4gK210a192NGwyX3ZkZWNfZXJyKGN0eCwgImRh dGEgd2lsbCBub3QgZml0IGludG8gcGxhbmUgJWQgKCVsdSA8DQo+ICVkKSIsDQo+ID4gKyAgaSwg dmIyX3BsYW5lX3NpemUodmIsIGkpLCBxX2RhdGEtPnNpemVpbWFnZVtpXSk7DQo+ID4gIHJldHVy biAtRUlOVkFMOw0KPiA+ICB9DQo+ID4gIGlmICghVjRMMl9UWVBFX0lTX09VVFBVVCh2Yi0+dHlw ZSkpDQo+ID4gQEAgLTgwNyw3ICs4MDEsNyBAQCB2b2lkIHZiMm9wc192ZGVjX2J1Zl9maW5pc2go c3RydWN0IHZiMl9idWZmZXINCj4gKnZiKQ0KPiA+ICBtdXRleF91bmxvY2soJmN0eC0+bG9jayk7 DQo+ID4gIA0KPiA+ICBpZiAoYnVmX2Vycm9yKSB7DQo+ID4gLW10a192NGwyX2VycigiVW5yZWNv dmVyYWJsZSBlcnJvciBvbiBidWZmZXIuIik7DQo+ID4gK210a192NGwyX3ZkZWNfZXJyKGN0eCwg IlVucmVjb3ZlcmFibGUgZXJyb3Igb24gYnVmZmVyLiIpOw0KPiA+ICBjdHgtPnN0YXRlID0gTVRL X1NUQVRFX0FCT1JUOw0KPiA+ICB9DQo+ID4gIH0NCj4gPiBAQCAtODQzLDggKzgzNyw4IEBAIHZv aWQgdmIyb3BzX3ZkZWNfc3RvcF9zdHJlYW1pbmcoc3RydWN0DQo+IHZiMl9xdWV1ZSAqcSkNCj4g PiAgc3RydWN0IG10a192Y29kZWNfY3R4ICpjdHggPSB2YjJfZ2V0X2Rydl9wcml2KHEpOw0KPiA+ ICBpbnQgcmV0Ow0KPiA+ICANCj4gPiAtbXRrX3Y0bDJfZGVidWcoMywgIlslZF0gKCVkKSBzdGF0 ZT0oJXgpIGN0eC0NCj4gPmRlY29kZWRfZnJhbWVfY250PSVkIiwNCj4gPiAtY3R4LT5pZCwgcS0+ dHlwZSwgY3R4LT5zdGF0ZSwgY3R4LT5kZWNvZGVkX2ZyYW1lX2NudCk7DQo+ID4gK210a192NGwy X3ZkZWNfZGJnKDMsIGN0eCwgIlslZF0gKCVkKSBzdGF0ZT0oJXgpIGN0eC0NCj4gPmRlY29kZWRf ZnJhbWVfY250PSVkIiwNCj4gPiArICBjdHgtPmlkLCBxLT50eXBlLCBjdHgtPnN0YXRlLCBjdHgt PmRlY29kZWRfZnJhbWVfY250KTsNCj4gPiAgDQo+ID4gIGlmIChxLT50eXBlID09IFY0TDJfQlVG X1RZUEVfVklERU9fT1VUUFVUX01QTEFORSkgew0KPiA+ICB3aGlsZSAoKHNyY19idWYgPSB2NGwy X20ybV9zcmNfYnVmX3JlbW92ZShjdHgtPm0ybV9jdHgpKSkgew0KPiA+IEBAIC04NzAsMTcgKzg2 NCwxNyBAQCB2b2lkIHZiMm9wc192ZGVjX3N0b3Bfc3RyZWFtaW5nKHN0cnVjdA0KPiB2YjJfcXVl dWUgKnEpDQo+ID4gICAqLw0KPiA+ICBjdHgtPnBpY2luZm8gPSBjdHgtPmxhc3RfZGVjb2RlZF9w aWNpbmZvOw0KPiA+ICANCj4gPiAtbXRrX3Y0bDJfZGVidWcoMiwNCj4gPiAtIlslZF0tPiBuZXco JWQsJWQpLCBvbGQoJWQsJWQpLCByZWFsKCVkLCVkKSIsDQo+ID4gLWN0eC0+aWQsIGN0eC0+bGFz dF9kZWNvZGVkX3BpY2luZm8ucGljX3csDQo+ID4gLWN0eC0+bGFzdF9kZWNvZGVkX3BpY2luZm8u cGljX2gsDQo+ID4gLWN0eC0+cGljaW5mby5waWNfdywgY3R4LT5waWNpbmZvLnBpY19oLA0KPiA+ IC1jdHgtPmxhc3RfZGVjb2RlZF9waWNpbmZvLmJ1Zl93LA0KPiA+IC1jdHgtPmxhc3RfZGVjb2Rl ZF9waWNpbmZvLmJ1Zl9oKTsNCj4gPiArbXRrX3Y0bDJfdmRlY19kYmcoMiwgY3R4LA0KPiA+ICsg ICJbJWRdLT4gbmV3KCVkLCVkKSwgb2xkKCVkLCVkKSwgcmVhbCglZCwlZCkiLA0KPiA+ICsgIGN0 eC0+aWQsIGN0eC0+bGFzdF9kZWNvZGVkX3BpY2luZm8ucGljX3csDQo+ID4gKyAgY3R4LT5sYXN0 X2RlY29kZWRfcGljaW5mby5waWNfaCwNCj4gPiArICBjdHgtPnBpY2luZm8ucGljX3csIGN0eC0+ cGljaW5mby5waWNfaCwNCj4gPiArICBjdHgtPmxhc3RfZGVjb2RlZF9waWNpbmZvLmJ1Zl93LA0K PiA+ICsgIGN0eC0+bGFzdF9kZWNvZGVkX3BpY2luZm8uYnVmX2gpOw0KPiA+ICANCj4gPiAgcmV0 ID0gY3R4LT5kZXYtPnZkZWNfcGRhdGEtPmZsdXNoX2RlY29kZXIoY3R4KTsNCj4gPiAgaWYgKHJl dCkNCj4gPiAtbXRrX3Y0bDJfZXJyKCJEZWNvZGVGaW5hbCBmYWlsZWQsIHJldD0lZCIsIHJldCk7 DQo+ID4gK210a192NGwyX3ZkZWNfZXJyKGN0eCwgIkRlY29kZUZpbmFsIGZhaWxlZCwgcmV0PSVk IiwgcmV0KTsNCj4gPiAgfQ0KPiA+ICBjdHgtPnN0YXRlID0gTVRLX1NUQVRFX0ZMVVNIOw0KPiA+ ICANCj4gPiBAQCAtOTA1LDcgKzg5OSw3IEBAIHN0YXRpYyBpbnQgbTJtb3BzX3ZkZWNfam9iX3Jl YWR5KHZvaWQNCj4gKm0ybV9wcml2KQ0KPiA+ICB7DQo+ID4gIHN0cnVjdCBtdGtfdmNvZGVjX2N0 eCAqY3R4ID0gbTJtX3ByaXY7DQo+ID4gIA0KPiA+IC1tdGtfdjRsMl9kZWJ1ZygzLCAiWyVkXSIs IGN0eC0+aWQpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2RiZygzLCBjdHgsICJbJWRdIiwgY3R4LT5p ZCk7DQo+ID4gIA0KPiA+ICBpZiAoY3R4LT5zdGF0ZSA9PSBNVEtfU1RBVEVfQUJPUlQpDQo+ID4g IHJldHVybiAwOw0KPiA+IEBAIC05NzMsNyArOTY3LDcgQEAgaW50IG10a192Y29kZWNfZGVjX3F1 ZXVlX2luaXQodm9pZCAqcHJpdiwNCj4gc3RydWN0IHZiMl9xdWV1ZSAqc3JjX3ZxLA0KPiA+ICBz dHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eCA9IHByaXY7DQo+ID4gIGludCByZXQgPSAwOw0KPiA+ ICANCj4gPiAtbXRrX3Y0bDJfZGVidWcoMywgIlslZF0iLCBjdHgtPmlkKTsNCj4gPiArbXRrX3Y0 bDJfdmRlY19kYmcoMywgY3R4LCAiWyVkXSIsIGN0eC0+aWQpOw0KPiA+ICANCj4gPiAgc3JjX3Zx LT50eXBlPSBWNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExBTkU7DQo+ID4gIHNyY192cS0+ aW9fbW9kZXM9IFZCMl9ETUFCVUYgfCBWQjJfTU1BUDsNCj4gPiBAQCAtOTg4LDcgKzk4Miw3IEBA IGludCBtdGtfdmNvZGVjX2RlY19xdWV1ZV9pbml0KHZvaWQgKnByaXYsDQo+IHN0cnVjdCB2YjJf cXVldWUgKnNyY192cSwNCj4gPiAgDQo+ID4gIHJldCA9IHZiMl9xdWV1ZV9pbml0KHNyY192cSk7 DQo+ID4gIGlmIChyZXQpIHsNCj4gPiAtbXRrX3Y0bDJfZXJyKCJGYWlsZWQgdG8gaW5pdGlhbGl6 ZSB2aWRlb2J1ZjIgcXVldWUob3V0cHV0KSIpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2VycihjdHgs ICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSB2aWRlb2J1ZjINCj4gcXVldWUob3V0cHV0KSIpOw0KPiA+ ICByZXR1cm4gcmV0Ow0KPiA+ICB9DQo+ID4gIGRzdF92cS0+dHlwZT0gVjRMMl9CVUZfVFlQRV9W SURFT19DQVBUVVJFX01QTEFORTsNCj4gPiBAQCAtMTAwNCw3ICs5OTgsNyBAQCBpbnQgbXRrX3Zj b2RlY19kZWNfcXVldWVfaW5pdCh2b2lkICpwcml2LA0KPiBzdHJ1Y3QgdmIyX3F1ZXVlICpzcmNf dnEsDQo+ID4gIA0KPiA+ICByZXQgPSB2YjJfcXVldWVfaW5pdChkc3RfdnEpOw0KPiA+ICBpZiAo cmV0KQ0KPiA+IC1tdGtfdjRsMl9lcnIoIkZhaWxlZCB0byBpbml0aWFsaXplIHZpZGVvYnVmMiBx dWV1ZShjYXB0dXJlKSIpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2VycihjdHgsICJGYWlsZWQgdG8g aW5pdGlhbGl6ZSB2aWRlb2J1ZjINCj4gcXVldWUoY2FwdHVyZSkiKTsNCj4gPiAgDQo+ID4gIHJl dHVybiByZXQ7DQo+ID4gIH0NCj4gPiBkaWZmIC0tZ2l0DQo+IGEvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9tZWRpYXRlay92Y29kZWMvbXRrX3Zjb2RlY19kZWNfZHJ2LmMNCj4gYi9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy9tdGtfdmNvZGVjX2RlY19kcnYuYw0KPiA+IGlu ZGV4IDAzNzIxZWRhMjc2OS4uNDQ2OWMyNDExZjQwIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL210a192Y29kZWNfZGVjX2Rydi5jDQo+ID4g KysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvbXRrX3Zjb2RlY19k ZWNfZHJ2LmMNCj4gPiBAQCAtMjUsNyArMjUsNyBAQA0KPiA+ICAjaW5jbHVkZSAibXRrX3Zjb2Rl Y191dGlsLmgiDQo+ID4gICNpbmNsdWRlICJtdGtfdmNvZGVjX2Z3LmgiDQo+ID4gIA0KPiA+IC1z dGF0aWMgaW50IG10a192Y29kZWNfZ2V0X2h3X2NvdW50KHN0cnVjdCBtdGtfdmNvZGVjX2RldiAq ZGV2KQ0KPiA+ICtzdGF0aWMgaW50IG10a192Y29kZWNfZ2V0X2h3X2NvdW50KHN0cnVjdCBtdGtf dmNvZGVjX2N0eCAqY3R4LA0KPiBzdHJ1Y3QgbXRrX3Zjb2RlY19kZXYgKmRldikNCj4gPiAgew0K PiA+ICBzd2l0Y2ggKGRldi0+dmRlY19wZGF0YS0+aHdfYXJjaCkgew0KPiA+ICBjYXNlIE1US19W REVDX1BVUkVfU0lOR0xFX0NPUkU6DQo+ID4gQEAgLTMzLDcgKzMzLDcgQEAgc3RhdGljIGludCBt dGtfdmNvZGVjX2dldF9od19jb3VudChzdHJ1Y3QNCj4gbXRrX3Zjb2RlY19kZXYgKmRldikNCj4g PiAgY2FzZSBNVEtfVkRFQ19MQVRfU0lOR0xFX0NPUkU6DQo+ID4gIHJldHVybiBNVEtfVkRFQ19P TkVfTEFUX09ORV9DT1JFOw0KPiA+ICBkZWZhdWx0Og0KPiA+IC1tdGtfdjRsMl9lcnIoImh3IGFy Y2ggJWQgbm90IHN1cHBvcnRlZCIsIGRldi0+dmRlY19wZGF0YS0NCj4gPmh3X2FyY2gpOw0KPiA+ ICttdGtfdjRsMl92ZGVjX2VycihjdHgsICJodyBhcmNoICVkIG5vdCBzdXBwb3J0ZWQiLCBkZXYt DQo+ID52ZGVjX3BkYXRhLT5od19hcmNoKTsNCj4gPiAgcmV0dXJuIE1US19WREVDX05PX0hXOw0K PiA+ICB9DQo+ID4gIH0NCj4gPiBAQCAtNTIsOCArNTIsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qg bXRrX3Zjb2RlY19kZWNfaXJxX2hhbmRsZXIoaW50DQo+IGlycSwgdm9pZCAqcHJpdikNCj4gPiAg LyogY2hlY2sgaWYgSFcgYWN0aXZlIG9yIG5vdCAqLw0KPiA+ICBjZ19zdGF0dXMgPSByZWFkbChk ZXYtPnJlZ19iYXNlWzBdKTsNCj4gPiAgaWYgKChjZ19zdGF0dXMgJiBWREVDX0hXX0FDVElWRSkg IT0gMCkgew0KPiA+IC1tdGtfdjRsMl9lcnIoIkRFQyBJU1IsIFZERUMgYWN0aXZlIGlzIG5vdCAw eDAgKDB4JTA4eCkiLA0KPiA+IC0gICAgIGNnX3N0YXR1cyk7DQo+ID4gK210a192NGwyX3ZkZWNf ZXJyKGN0eCwgIkRFQyBJU1IsIFZERUMgYWN0aXZlIGlzIG5vdCAweDAgKDB4JTA4eCkiLA0KPiBj Z19zdGF0dXMpOw0KPiA+ICByZXR1cm4gSVJRX0hBTkRMRUQ7DQo+ID4gIH0NCj4gPiAgDQo+ID4g QEAgLTcxLDkgKzcwLDcgQEAgc3RhdGljIGlycXJldHVybl90IG10a192Y29kZWNfZGVjX2lycV9o YW5kbGVyKGludA0KPiBpcnEsIHZvaWQgKnByaXYpDQo+ID4gIA0KPiA+ICB3YWtlX3VwX2N0eChj dHgsIE1US19JTlNUX0lSUV9SRUNFSVZFRCwgMCk7DQo+ID4gIA0KPiA+IC1tdGtfdjRsMl9kZWJ1 ZygzLA0KPiA+IC0ibXRrX3Zjb2RlY19kZWNfaXJxX2hhbmRsZXIgOndha2UgdXAgY3R4ICVkLCBk ZWNfZG9uZV9zdGF0dXM9JXgiLA0KPiA+IC1jdHgtPmlkLCBkZWNfZG9uZV9zdGF0dXMpOw0KPiA+ ICttdGtfdjRsMl92ZGVjX2RiZygzLCBjdHgsICJ3YWtlIHVwIGN0eCAlZCwgZGVjX2RvbmVfc3Rh dHVzPSV4IiwNCj4gY3R4LT5pZCwgZGVjX2RvbmVfc3RhdHVzKTsNCj4gPiAgDQo+ID4gIHJldHVy biBJUlFfSEFORExFRDsNCj4gPiAgfQ0KPiA+IEBAIC05Niw3ICs5Myw3IEBAIHN0YXRpYyBpbnQg bXRrX3Zjb2RlY19nZXRfcmVnX2Jhc2VzKHN0cnVjdA0KPiBtdGtfdmNvZGVjX2RldiAqZGV2KQ0K PiA+ICBpZiAoSVNfRVJSKGRldi0+cmVnX2Jhc2VbaV0pKQ0KPiA+ICByZXR1cm4gUFRSX0VSUihk ZXYtPnJlZ19iYXNlW2ldKTsNCj4gPiAgDQo+ID4gLW10a192NGwyX2RlYnVnKDIsICJyZWdbJWRd IGJhc2U9JXAiLCBpLCBkZXYtPnJlZ19iYXNlW2ldKTsNCj4gPiArZGV2X2RiZygmcGRldi0+ZGV2 LCAicmVnWyVkXSBiYXNlPSVwIiwgaSwgZGV2LT5yZWdfYmFzZVtpXSk7DQo+ID4gIH0NCj4gPiAg DQo+ID4gIHJldHVybiAwOw0KPiA+IEBAIC0xNTYsNyArMTUzLDcgQEAgc3RhdGljIGludCBmb3Bz X3Zjb2RlY19vcGVuKHN0cnVjdCBmaWxlICpmaWxlKQ0KPiA+ICBJTklUX0xJU1RfSEVBRCgmY3R4 LT5saXN0KTsNCj4gPiAgY3R4LT5kZXYgPSBkZXY7DQo+ID4gIGlmIChjdHgtPmRldi0+dmRlY19w ZGF0YS0+aXNfc3ViZGV2X3N1cHBvcnRlZCkgew0KPiA+IC1od19jb3VudCA9IG10a192Y29kZWNf Z2V0X2h3X2NvdW50KGRldik7DQo+ID4gK2h3X2NvdW50ID0gbXRrX3Zjb2RlY19nZXRfaHdfY291 bnQoY3R4LCBkZXYpOw0KPiA+ICBpZiAoIWh3X2NvdW50IHx8ICFkZXYtPnN1YmRldl9wcm9iX2Rv bmUpIHsNCj4gPiAgcmV0ID0gLUVJTlZBTDsNCj4gPiAgZ290byBlcnJfY3RybHNfc2V0dXA7DQo+ ID4gQEAgLTE3NiwxNSArMTczLDE0IEBAIHN0YXRpYyBpbnQgZm9wc192Y29kZWNfb3BlbihzdHJ1 Y3QgZmlsZQ0KPiAqZmlsZSkNCj4gPiAgY3R4LT50eXBlID0gTVRLX0lOU1RfREVDT0RFUjsNCj4g PiAgcmV0ID0gZGV2LT52ZGVjX3BkYXRhLT5jdHJsc19zZXR1cChjdHgpOw0KPiA+ICBpZiAocmV0 KSB7DQo+ID4gLW10a192NGwyX2VycigiRmFpbGVkIHRvIHNldHVwIG10IHZjb2RlYyBjb250cm9s cyIpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2VycihjdHgsICJGYWlsZWQgdG8gc2V0dXAgbXQgdmNv ZGVjIGNvbnRyb2xzIik7DQo+ID4gIGdvdG8gZXJyX2N0cmxzX3NldHVwOw0KPiA+ICB9DQo+ID4g IGN0eC0+bTJtX2N0eCA9IHY0bDJfbTJtX2N0eF9pbml0KGRldi0+bTJtX2Rldl9kZWMsIGN0eCwN Cj4gPiAgJm10a192Y29kZWNfZGVjX3F1ZXVlX2luaXQpOw0KPiA+ICBpZiAoSVNfRVJSKChfX2Zv cmNlIHZvaWQgKiljdHgtPm0ybV9jdHgpKSB7DQo+ID4gIHJldCA9IFBUUl9FUlIoKF9fZm9yY2Ug dm9pZCAqKWN0eC0+bTJtX2N0eCk7DQo+ID4gLW10a192NGwyX2VycigiRmFpbGVkIHRvIHY0bDJf bTJtX2N0eF9pbml0KCkgKCVkKSIsDQo+ID4gLXJldCk7DQo+ID4gK210a192NGwyX3ZkZWNfZXJy KGN0eCwgIkZhaWxlZCB0byB2NGwyX20ybV9jdHhfaW5pdCgpICglZCkiLCByZXQpOw0KPiA+ICBn b3RvIGVycl9tMm1fY3R4X2luaXQ7DQo+ID4gIH0NCj4gPiAgc3JjX3ZxID0gdjRsMl9tMm1fZ2V0 X3ZxKGN0eC0+bTJtX2N0eCwNCj4gPiBAQCAtMjAyLDE0ICsxOTgsMTQgQEAgc3RhdGljIGludCBm b3BzX3Zjb2RlY19vcGVuKHN0cnVjdCBmaWxlDQo+ICpmaWxlKQ0KPiA+ICAgKiBSZXR1cm4gMCBp ZiBkb3dubG9hZGluZyBmaXJtd2FyZSBzdWNjZXNzZnVsbHksDQo+ID4gICAqIG90aGVyd2lzZSBp dCBpcyBmYWlsZWQNCj4gPiAgICovDQo+ID4gLW10a192NGwyX2VycigiZmFpbGVkIHRvIGxvYWQg ZmlybXdhcmUhIik7DQo+ID4gK210a192NGwyX3ZkZWNfZXJyKGN0eCwgImZhaWxlZCB0byBsb2Fk IGZpcm13YXJlISIpOw0KPiA+ICBnb3RvIGVycl9sb2FkX2Z3Ow0KPiA+ICB9DQo+ID4gIA0KPiA+ ICBkZXYtPmRlY19jYXBhYmlsaXR5ID0NCj4gPiAgbXRrX3Zjb2RlY19md19nZXRfdmRlY19jYXBh KGRldi0+ZndfaGFuZGxlcik7DQo+ID4gIA0KPiA+IC1tdGtfdjRsMl9kZWJ1ZygwLCAiZGVjb2Rl ciBjYXBhYmlsaXR5ICV4IiwgZGV2LT5kZWNfY2FwYWJpbGl0eSk7DQo+ID4gK210a192NGwyX3Zk ZWNfZGJnKDAsIGN0eCwgImRlY29kZXIgY2FwYWJpbGl0eSAleCIsIGRldi0NCj4gPmRlY19jYXBh YmlsaXR5KTsNCj4gPiAgfQ0KPiA+ICANCj4gPiAgY3R4LT5kZXYtPnZkZWNfcGRhdGEtPmluaXRf dmRlY19wYXJhbXMoY3R4KTsNCj4gPiBAQCAtMjE4LDggKzIxNCw3IEBAIHN0YXRpYyBpbnQgZm9w c192Y29kZWNfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSkNCj4gPiAgbXRrX3Zjb2RlY19kYmdmc19j cmVhdGUoY3R4KTsNCj4gPiAgDQo+ID4gIG11dGV4X3VubG9jaygmZGV2LT5kZXZfbXV0ZXgpOw0K PiA+IC1tdGtfdjRsMl9kZWJ1ZygwLCAiJXMgZGVjb2RlciBbJWRdIiwgZGV2X25hbWUoJmRldi0+ cGxhdF9kZXYtDQo+ID5kZXYpLA0KPiA+IC1jdHgtPmlkKTsNCj4gPiArbXRrX3Y0bDJfdmRlY19k YmcoMCwgY3R4LCAiJXMgZGVjb2RlciBbJWRdIiwgZGV2X25hbWUoJmRldi0NCj4gPnBsYXRfZGV2 LT5kZXYpLCBjdHgtPmlkKTsNCj4gPiAgcmV0dXJuIHJldDsNCj4gPiAgDQo+ID4gIC8qIERlaW5p dCB3aGVuIGZhaWx1cmUgb2NjdXJyZWQgKi8NCj4gPiBAQCAtMjQxLDcgKzIzNiw3IEBAIHN0YXRp YyBpbnQgZm9wc192Y29kZWNfcmVsZWFzZShzdHJ1Y3QgZmlsZQ0KPiAqZmlsZSkNCj4gPiAgc3Ry dWN0IG10a192Y29kZWNfZGV2ICpkZXYgPSB2aWRlb19kcnZkYXRhKGZpbGUpOw0KPiA+ICBzdHJ1 Y3QgbXRrX3Zjb2RlY19jdHggKmN0eCA9IGZoX3RvX2N0eChmaWxlLT5wcml2YXRlX2RhdGEpOw0K PiA+ICANCj4gPiAtbXRrX3Y0bDJfZGVidWcoMCwgIlslZF0gZGVjb2RlciIsIGN0eC0+aWQpOw0K PiA+ICttdGtfdjRsMl92ZGVjX2RiZygwLCBjdHgsICJbJWRdIGRlY29kZXIiLCBjdHgtPmlkKTsN Cj4gPiAgbXV0ZXhfbG9jaygmZGV2LT5kZXZfbXV0ZXgpOw0KPiA+ICANCj4gPiAgLyoNCj4gPiBA QCAtMjk2LDcgKzI5MSw3IEBAIHN0YXRpYyBpbnQgbXRrX3Zjb2RlY19wcm9iZShzdHJ1Y3QNCj4g cGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICAgJnJwcm9jX3BoYW5kbGUpKSB7DQo+ID4gIGZ3 X3R5cGUgPSBTQ1A7DQo+ID4gIH0gZWxzZSB7DQo+ID4gLW10a192NGwyX2VycigiQ291bGQgbm90 IGdldCB2ZGVjIElQSSBkZXZpY2UiKTsNCj4gPiArZGV2X2RiZygmcGRldi0+ZGV2LCAiQ291bGQg bm90IGdldCB2ZGVjIElQSSBkZXZpY2UiKTsNCj4gPiAgcmV0dXJuIC1FTk9ERVY7DQo+ID4gIH0N Cj4gPiAgZG1hX3NldF9tYXhfc2VnX3NpemUoJnBkZXYtPmRldiwgVUlOVF9NQVgpOw0KPiA+IEBA IC0zMTYsNyArMzExLDcgQEAgc3RhdGljIGludCBtdGtfdmNvZGVjX3Byb2JlKHN0cnVjdA0KPiBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4gIGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKCJjb3Jl LWRlY29kZXIiLA0KPiA+ICBXUV9NRU1fUkVDTEFJTSB8IFdRX0ZSRUVaQUJMRSk7DQo+ID4gIGlm ICghZGV2LT5jb3JlX3dvcmtxdWV1ZSkgew0KPiA+IC1tdGtfdjRsMl9lcnIoIkZhaWxlZCB0byBj cmVhdGUgY29yZSB3b3JrcXVldWUiKTsNCj4gPiArZGV2X2RiZygmcGRldi0+ZGV2LCAiRmFpbGVk IHRvIGNyZWF0ZSBjb3JlIHdvcmtxdWV1ZSIpOw0KPiA+ICByZXQgPSAtRUlOVkFMOw0KPiA+ICBn b3RvIGVycl9yZXM7DQo+ID4gIH0NCj4gPiBAQCAtMzMyLDEzICszMjcsMTMgQEAgc3RhdGljIGlu dCBtdGtfdmNvZGVjX3Byb2JlKHN0cnVjdA0KPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4g IA0KPiA+ICByZXQgPSB2NGwyX2RldmljZV9yZWdpc3RlcigmcGRldi0+ZGV2LCAmZGV2LT52NGwy X2Rldik7DQo+ID4gIGlmIChyZXQpIHsNCj4gPiAtbXRrX3Y0bDJfZXJyKCJ2NGwyX2RldmljZV9y ZWdpc3RlciBlcnI9JWQiLCByZXQpOw0KPiA+ICtkZXZfZXJyKCZwZGV2LT5kZXYsICJ2NGwyX2Rl dmljZV9yZWdpc3RlciBlcnI9JWQiLCByZXQpOw0KPiA+ICBnb3RvIGVycl9jb3JlX3dvcmtxOw0K PiA+ICB9DQo+ID4gIA0KPiA+ICB2ZmRfZGVjID0gdmlkZW9fZGV2aWNlX2FsbG9jKCk7DQo+ID4g IGlmICghdmZkX2RlYykgew0KPiA+IC1tdGtfdjRsMl9lcnIoIkZhaWxlZCB0byBhbGxvY2F0ZSB2 aWRlbyBkZXZpY2UiKTsNCj4gPiArZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIGFsbG9j YXRlIHZpZGVvIGRldmljZSIpOw0KPiA+ICByZXQgPSAtRU5PTUVNOw0KPiA+ICBnb3RvIGVycl9k ZWNfYWxsb2M7DQo+ID4gIH0NCj4gPiBAQCAtMzU5LDcgKzM1NCw3IEBAIHN0YXRpYyBpbnQgbXRr X3Zjb2RlY19wcm9iZShzdHJ1Y3QNCj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICANCj4g PiAgZGV2LT5tMm1fZGV2X2RlYyA9IHY0bDJfbTJtX2luaXQoJm10a192ZGVjX20ybV9vcHMpOw0K PiA+ICBpZiAoSVNfRVJSKChfX2ZvcmNlIHZvaWQgKilkZXYtPm0ybV9kZXZfZGVjKSkgew0KPiA+ IC1tdGtfdjRsMl9lcnIoIkZhaWxlZCB0byBpbml0IG1lbTJtZW0gZGVjIGRldmljZSIpOw0KPiA+ ICtkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gaW5pdCBtZW0ybWVtIGRlYyBkZXZpY2Ui KTsNCj4gPiAgcmV0ID0gUFRSX0VSUigoX19mb3JjZSB2b2lkICopZGV2LT5tMm1fZGV2X2RlYyk7 DQo+ID4gIGdvdG8gZXJyX2RlY19hbGxvYzsNCj4gPiAgfQ0KPiA+IEBAIC0zNjgsNyArMzYzLDcg QEAgc3RhdGljIGludCBtdGtfdmNvZGVjX3Byb2JlKHN0cnVjdA0KPiBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpDQo+ID4gIGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKE1US19WQ09ERUNfREVDX05BTUUs DQo+ID4gIFdRX01FTV9SRUNMQUlNIHwgV1FfRlJFRVpBQkxFKTsNCj4gPiAgaWYgKCFkZXYtPmRl Y29kZV93b3JrcXVldWUpIHsNCj4gPiAtbXRrX3Y0bDJfZXJyKCJGYWlsZWQgdG8gY3JlYXRlIGRl Y29kZSB3b3JrcXVldWUiKTsNCj4gPiArZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIGNy ZWF0ZSBkZWNvZGUgd29ya3F1ZXVlIik7DQo+ID4gIHJldCA9IC1FSU5WQUw7DQo+ID4gIGdvdG8g ZXJyX2V2ZW50X3dvcmtxOw0KPiA+ICB9DQo+ID4gQEAgLTM3Nyw3ICszNzIsNyBAQCBzdGF0aWMg aW50IG10a192Y29kZWNfcHJvYmUoc3RydWN0DQo+IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4g PiAgcmV0ID0gb2ZfcGxhdGZvcm1fcG9wdWxhdGUocGRldi0+ZGV2Lm9mX25vZGUsIE5VTEwsIE5V TEwsDQo+ID4gICAgICZwZGV2LT5kZXYpOw0KPiA+ICBpZiAocmV0KSB7DQo+ID4gLW10a192NGwy X2VycigiTWFpbiBkZXZpY2Ugb2ZfcGxhdGZvcm1fcG9wdWxhdGUgZmFpbGVkLiIpOw0KPiA+ICtk ZXZfZXJyKCZwZGV2LT5kZXYsICJNYWluIGRldmljZSBvZl9wbGF0Zm9ybV9wb3B1bGF0ZSBmYWls ZWQuIik7DQo+ID4gIGdvdG8gZXJyX3JlZ19jb250Ow0KPiA+ICB9DQo+ID4gIH0gZWxzZSB7DQo+ ID4gQEAgLTM5MCw3ICszODUsNyBAQCBzdGF0aWMgaW50IG10a192Y29kZWNfcHJvYmUoc3RydWN0 DQo+IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPiAgDQo+ID4gIHJldCA9IHZpZGVvX3JlZ2lz dGVyX2RldmljZSh2ZmRfZGVjLCBWRkxfVFlQRV9WSURFTywgLTEpOw0KPiA+ICBpZiAocmV0KSB7 DQo+ID4gLW10a192NGwyX2VycigiRmFpbGVkIHRvIHJlZ2lzdGVyIHZpZGVvIGRldmljZSIpOw0K PiA+ICtkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgdmlkZW8gZGV2aWNl Iik7DQo+ID4gIGdvdG8gZXJyX3JlZ19jb250Ow0KPiA+ICB9DQo+ID4gIA0KPiA+IEBAIC00MDks MjEgKzQwNCwyMSBAQCBzdGF0aWMgaW50IG10a192Y29kZWNfcHJvYmUoc3RydWN0DQo+IHBsYXRm b3JtX2RldmljZSAqcGRldikNCj4gPiAgcmV0ID0gdjRsMl9tMm1fcmVnaXN0ZXJfbWVkaWFfY29u dHJvbGxlcihkZXYtPm0ybV9kZXZfZGVjLCBkZXYtDQo+ID52ZmRfZGVjLA0KPiA+ICAgTUVESUFf RU5UX0ZfUFJPQ19WSURFT19ERUNPREVSKTsNCj4gPiAgaWYgKHJldCkgew0KPiA+IC1tdGtfdjRs Ml9lcnIoIkZhaWxlZCB0byByZWdpc3RlciBtZWRpYSBjb250cm9sbGVyIik7DQo+ID4gK2Rldl9l cnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byByZWdpc3RlciBtZWRpYSBjb250cm9sbGVyIik7DQo+ ID4gIGdvdG8gZXJyX2RlY19tZW1faW5pdDsNCj4gPiAgfQ0KPiA+ICANCj4gPiAgcmV0ID0gbWVk aWFfZGV2aWNlX3JlZ2lzdGVyKCZkZXYtPm1kZXZfZGVjKTsNCj4gPiAgaWYgKHJldCkgew0KPiA+ IC1tdGtfdjRsMl9lcnIoIkZhaWxlZCB0byByZWdpc3RlciBtZWRpYSBkZXZpY2UiKTsNCj4gPiAr ZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIG1lZGlhIGRldmljZSIpOw0K PiA+ICBnb3RvIGVycl9tZWRpYV9yZWc7DQo+ID4gIH0NCj4gPiAgDQo+ID4gLW10a192NGwyX2Rl YnVnKDAsICJtZWRpYSByZWdpc3RlcmVkIGFzIC9kZXYvbWVkaWElZCIsIHZmZF9kZWMtDQo+ID5t aW5vcik7DQo+ID4gK2Rldl9kYmcoJnBkZXYtPmRldiwgIm1lZGlhIHJlZ2lzdGVyZWQgYXMgL2Rl di9tZWRpYSVkIiwgdmZkX2RlYy0NCj4gPm1pbm9yKTsNCj4gPiAgfQ0KPiA+ICANCj4gPiAgbXRr X3Zjb2RlY19kYmdmc19pbml0KGRldiwgZmFsc2UpOw0KPiA+IC1tdGtfdjRsMl9kZWJ1ZygwLCAi ZGVjb2RlciByZWdpc3RlcmVkIGFzIC9kZXYvdmlkZW8lZCIsIHZmZF9kZWMtDQo+ID5taW5vcik7 DQo+ID4gK2Rldl9kYmcoJnBkZXYtPmRldiwgImRlY29kZXIgcmVnaXN0ZXJlZCBhcyAvZGV2L3Zp ZGVvJWQiLCB2ZmRfZGVjLQ0KPiA+bWlub3IpOw0KPiA+ICANCj4gPiAgcmV0dXJuIDA7DQo+ID4g IA0KPiA+IGRpZmYgLS1naXQNCj4gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zj b2RlYy9tdGtfdmNvZGVjX2RlY19ody5jDQo+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRp YXRlay92Y29kZWMvbXRrX3Zjb2RlY19kZWNfaHcuYw0KPiA+IGluZGV4IGUxY2IyZjhkY2EzMy4u N2M0ZDhlYzIwMWUzIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVk aWF0ZWsvdmNvZGVjL210a192Y29kZWNfZGVjX2h3LmMNCj4gPiArKysgYi9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy9tdGtfdmNvZGVjX2RlY19ody5jDQo+ID4gQEAgLTc3 LDggKzc3LDcgQEAgc3RhdGljIGlycXJldHVybl90IG10a192ZGVjX2h3X2lycV9oYW5kbGVyKGlu dA0KPiBpcnEsIHZvaWQgKnByaXYpDQo+ID4gIC8qIGNoZWNrIGlmIEhXIGFjdGl2ZSBvciBub3Qg Ki8NCj4gPiAgY2dfc3RhdHVzID0gcmVhZGwoZGV2LT5yZWdfYmFzZVtWREVDX0hXX1NZU10pOw0K PiA+ICBpZiAoY2dfc3RhdHVzICYgVkRFQ19IV19BQ1RJVkUpIHsNCj4gPiAtbXRrX3Y0bDJfZXJy KCJ2ZGVjIGFjdGl2ZSBpcyBub3QgMHgwICgweCUwOHgpIiwNCj4gPiAtICAgICBjZ19zdGF0dXMp Ow0KPiA+ICttdGtfdjRsMl92ZGVjX2VycihjdHgsICJ2ZGVjIGFjdGl2ZSBpcyBub3QgMHgwICgw eCUwOHgpIiwNCj4gY2dfc3RhdHVzKTsNCj4gPiAgcmV0dXJuIElSUV9IQU5ETEVEOw0KPiA+ICB9 DQo+ID4gIA0KPiA+IEBAIC05Myw4ICs5Miw4IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBtdGtfdmRl Y19od19pcnFfaGFuZGxlcihpbnQNCj4gaXJxLCB2b2lkICpwcml2KQ0KPiA+ICANCj4gPiAgd2Fr ZV91cF9jdHgoY3R4LCBNVEtfSU5TVF9JUlFfUkVDRUlWRUQsIGRldi0+aHdfaWR4KTsNCj4gPiAg DQo+ID4gLW10a192NGwyX2RlYnVnKDMsICJ3YWtlIHVwIGN0eCAlZCwgZGVjX2RvbmVfc3RhdHVz PSV4IiwNCj4gPiAtICAgICAgIGN0eC0+aWQsIGRlY19kb25lX3N0YXR1cyk7DQo+ID4gK210a192 NGwyX3ZkZWNfZGJnKDMsIGN0eCwgIndha2UgdXAgY3R4ICVkLCBkZWNfZG9uZV9zdGF0dXM9JXgi LA0KPiA+ICsgIGN0eC0+aWQsIGRlY19kb25lX3N0YXR1cyk7DQo+ID4gIA0KPiA+ICByZXR1cm4g SVJRX0hBTkRMRUQ7DQo+ID4gIH0NCj4gPiBkaWZmIC0tZ2l0DQo+IGEvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvbXRrX3Zjb2RlY19kZWNfcG0uYw0KPiBiL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL210a192Y29kZWNfZGVjX3BtLmMNCj4gPiBp bmRleCA3NzdkNDQ1OTk5ZTkuLjNhYjk5NjcwNWI5NyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy9tdGtfdmNvZGVjX2RlY19wbS5jDQo+ID4g KysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvbXRrX3Zjb2RlY19k ZWNfcG0uYw0KPiA+IEBAIC0zMiw3ICszMiw3IEBAIGludCBtdGtfdmNvZGVjX2luaXRfZGVjX2Ns ayhzdHJ1Y3QNCj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgbXRrX3Zjb2RlY19wbSAq DQo+ID4gIGlmICghZGVjX2Nsay0+Y2xrX2luZm8pDQo+ID4gIHJldHVybiAtRU5PTUVNOw0KPiA+ ICB9IGVsc2Ugew0KPiA+IC1tdGtfdjRsMl9lcnIoIkZhaWxlZCB0byBnZXQgdmRlYyBjbG9jayBj b3VudCIpOw0KPiA+ICtkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gZ2V0IHZkZWMgY2xv Y2sgY291bnQiKTsNCj4gPiAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gIH0NCj4gPiAgDQo+ID4gQEAg LTQxLDE0ICs0MSwxMyBAQCBpbnQgbXRrX3Zjb2RlY19pbml0X2RlY19jbGsoc3RydWN0DQo+IHBs YXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IG10a192Y29kZWNfcG0gKg0KPiA+ICByZXQgPSBv Zl9wcm9wZXJ0eV9yZWFkX3N0cmluZ19pbmRleChwZGV2LT5kZXYub2Zfbm9kZSwNCj4gPiAgImNs b2NrLW5hbWVzIiwgaSwgJmNsa19pbmZvLT5jbGtfbmFtZSk7DQo+ID4gIGlmIChyZXQpIHsNCj4g PiAtbXRrX3Y0bDJfZXJyKCJGYWlsZWQgdG8gZ2V0IGNsb2NrIG5hbWUgaWQgPSAlZCIsIGkpOw0K PiA+ICtkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gZ2V0IGNsb2NrIG5hbWUgaWQgPSAl ZCIsIGkpOw0KPiA+ICByZXR1cm4gcmV0Ow0KPiA+ICB9DQo+ID4gIGNsa19pbmZvLT52Y29kZWNf Y2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsDQo+ID4gIGNsa19pbmZvLT5jbGtfbmFtZSk7 DQo+ID4gIGlmIChJU19FUlIoY2xrX2luZm8tPnZjb2RlY19jbGspKSB7DQo+ID4gLW10a192NGwy X2VycigiZGV2bV9jbGtfZ2V0ICglZCklcyBmYWlsIiwgaSwNCj4gPiAtY2xrX2luZm8tPmNsa19u YW1lKTsNCj4gPiArZGV2X2VycigmcGRldi0+ZGV2LCAiZGV2bV9jbGtfZ2V0ICglZCklcyBmYWls IiwgaSwgY2xrX2luZm8tDQo+ID5jbGtfbmFtZSk7DQo+ID4gIHJldHVybiBQVFJfRVJSKGNsa19p bmZvLT52Y29kZWNfY2xrKTsNCj4gPiAgfQ0KPiA+ICB9DQo+ID4gQEAgLTYzLDcgKzYyLDcgQEAg c3RhdGljIGludCBtdGtfdmNvZGVjX2RlY19wd19vbihzdHJ1Y3QNCj4gbXRrX3Zjb2RlY19wbSAq cG0pDQo+ID4gIA0KPiA+ICByZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KHBtLT5kZXYp Ow0KPiA+ICBpZiAocmV0KQ0KPiA+IC1tdGtfdjRsMl9lcnIoInBtX3J1bnRpbWVfcmVzdW1lX2Fu ZF9nZXQgZmFpbCAlZCIsIHJldCk7DQo+ID4gK2Rldl9lcnIocG0tPmRldiwgInBtX3J1bnRpbWVf cmVzdW1lX2FuZF9nZXQgZmFpbCAlZCIsIHJldCk7DQo+ID4gIA0KPiA+ICByZXR1cm4gcmV0Ow0K PiA+ICB9DQo+ID4gQEAgLTc0LDcgKzczLDcgQEAgc3RhdGljIHZvaWQgbXRrX3Zjb2RlY19kZWNf cHdfb2ZmKHN0cnVjdA0KPiBtdGtfdmNvZGVjX3BtICpwbSkNCj4gPiAgDQo+ID4gIHJldCA9IHBt X3J1bnRpbWVfcHV0KHBtLT5kZXYpOw0KPiA+ICBpZiAocmV0ICYmIHJldCAhPSAtRUFHQUlOKQ0K PiA+IC1tdGtfdjRsMl9lcnIoInBtX3J1bnRpbWVfcHV0IGZhaWwgJWQiLCByZXQpOw0KPiA+ICtk ZXZfZXJyKHBtLT5kZXYsICJwbV9ydW50aW1lX3B1dCBmYWlsICVkIiwgcmV0KTsNCj4gPiAgfQ0K PiA+ICANCj4gPiAgc3RhdGljIHZvaWQgbXRrX3Zjb2RlY19kZWNfY2xvY2tfb24oc3RydWN0IG10 a192Y29kZWNfcG0gKnBtKQ0KPiA+IEBAIC04Niw3ICs4NSw3IEBAIHN0YXRpYyB2b2lkIG10a192 Y29kZWNfZGVjX2Nsb2NrX29uKHN0cnVjdA0KPiBtdGtfdmNvZGVjX3BtICpwbSkNCj4gPiAgZm9y IChpID0gMDsgaSA8IGRlY19jbGstPmNsa19udW07IGkrKykgew0KPiA+ICByZXQgPSBjbGtfcHJl cGFyZV9lbmFibGUoZGVjX2Nsay0+Y2xrX2luZm9baV0udmNvZGVjX2Nsayk7DQo+ID4gIGlmIChy ZXQpIHsNCj4gPiAtbXRrX3Y0bDJfZXJyKCJjbGtfcHJlcGFyZV9lbmFibGUgJWQgJXMgZmFpbCAl ZCIsIGksDQo+ID4gK2Rldl9lcnIocG0tPmRldiwgImNsa19wcmVwYXJlX2VuYWJsZSAlZCAlcyBm YWlsICVkIiwgaSwNCj4gPiAgZGVjX2Nsay0+Y2xrX2luZm9baV0uY2xrX25hbWUsIHJldCk7DQo+ ID4gIGdvdG8gZXJyb3I7DQo+ID4gIH0NCj4gPiBAQCAtMTIwLDcgKzExOSw3IEBAIHN0YXRpYyB2 b2lkIG10a192Y29kZWNfZGVjX2VuYWJsZV9pcnEoc3RydWN0DQo+IG10a192Y29kZWNfZGV2ICp2 ZGVjX2RldiwgaW50IGh3X2lkDQo+ID4gIGlmIChzdWJkZXZfZGV2KQ0KPiA+ICBlbmFibGVfaXJx KHN1YmRldl9kZXYtPmRlY19pcnEpOw0KPiA+ICBlbHNlDQo+ID4gLW10a192NGwyX2VycigiRmFp bGVkIHRvIGdldCBodyBkZXZcbiIpOw0KPiA+ICtkZXZfZXJyKCZ2ZGVjX2Rldi0+cGxhdF9kZXYt PmRldiwgIkZhaWxlZCB0byBnZXQgaHcgZGV2XG4iKTsNCj4gPiAgfSBlbHNlIHsNCj4gPiAgZW5h YmxlX2lycSh2ZGVjX2Rldi0+ZGVjX2lycSk7DQo+ID4gIH0NCj4gPiBAQCAtMTM4LDcgKzEzNyw3 IEBAIHN0YXRpYyB2b2lkIG10a192Y29kZWNfZGVjX2Rpc2FibGVfaXJxKHN0cnVjdA0KPiBtdGtf dmNvZGVjX2RldiAqdmRlY19kZXYsIGludCBod19pDQo+ID4gIGlmIChzdWJkZXZfZGV2KQ0KPiA+ ICBkaXNhYmxlX2lycShzdWJkZXZfZGV2LT5kZWNfaXJxKTsNCj4gPiAgZWxzZQ0KPiA+IC1tdGtf djRsMl9lcnIoIkZhaWxlZCB0byBnZXQgaHcgZGV2XG4iKTsNCj4gPiArZGV2X2VycigmdmRlY19k ZXYtPnBsYXRfZGV2LT5kZXYsICJGYWlsZWQgdG8gZ2V0IGh3IGRldlxuIik7DQo+ID4gIH0gZWxz ZSB7DQo+ID4gIGRpc2FibGVfaXJxKHZkZWNfZGV2LT5kZWNfaXJxKTsNCj4gPiAgfQ0KPiA+IEBA IC0xODUsNyArMTg0LDcgQEAgc3RhdGljIHN0cnVjdCBtdGtfdmNvZGVjX3BtDQo+ICptdGtfdmNv ZGVjX2RlY19nZXRfcG0oc3RydWN0IG10a192Y29kZWNfZGV2ICp2ZGVjX2QNCj4gPiAgaWYgKHN1 YmRldl9kZXYpDQo+ID4gIHJldHVybiAmc3ViZGV2X2Rldi0+cG07DQo+ID4gIA0KPiA+IC1tdGtf djRsMl9lcnIoIkZhaWxlZCB0byBnZXQgaHcgZGV2XG4iKTsNCj4gPiArZGV2X2VycigmdmRlY19k ZXYtPnBsYXRfZGV2LT5kZXYsICJGYWlsZWQgdG8gZ2V0IGh3IGRldlxuIik7DQo+ID4gIHJldHVy biBOVUxMOw0KPiA+ICB9DQo+ID4gIA0KPiA+IGRpZmYgLS1naXQNCj4gYS9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy9tdGtfdmNvZGVjX2RlY19zdGF0ZWZ1bC5jDQo+IGIv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvbXRrX3Zjb2RlY19kZWNfc3Rh dGVmdWwuYw0KPiA+IGluZGV4IDBmYmQwMzAwMjZjNy4uM2MyODliMDhiYzg3IDEwMDY0NA0KPiA+ IC0tLQ0KPiBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL210a192Y29k ZWNfZGVjX3N0YXRlZnVsLmMNCj4gPiArKysNCj4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21l ZGlhdGVrL3Zjb2RlYy9tdGtfdmNvZGVjX2RlY19zdGF0ZWZ1bC5jDQo+ID4gQEAgLTYxLDE1ICs2 MSwxNiBAQCBzdGF0aWMgc3RydWN0IHZiMl9idWZmZXINCj4gKmdldF9kaXNwbGF5X2J1ZmZlcihz dHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eCkNCj4gPiAgc3RydWN0IG10a192aWRlb19kZWNfYnVm ICpkc3RidWY7DQo+ID4gIHN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnZiOw0KPiA+ICANCj4gPiAt bXRrX3Y0bDJfZGVidWcoMywgIlslZF0iLCBjdHgtPmlkKTsNCj4gPiArbXRrX3Y0bDJfdmRlY19k YmcoMywgY3R4LCAiWyVkXSIsIGN0eC0+aWQpOw0KPiA+ICBpZiAodmRlY19pZl9nZXRfcGFyYW0o Y3R4LCBHRVRfUEFSQU1fRElTUF9GUkFNRV9CVUZGRVIsDQo+ID4gICAgICAgICZkaXNwX2ZyYW1l X2J1ZmZlcikpIHsNCj4gPiAtbXRrX3Y0bDJfZXJyKCJbJWRdQ2Fubm90IGdldCBwYXJhbSA6IEdF VF9QQVJBTV9ESVNQX0ZSQU1FX0JVRkZFUiIsDQo+IGN0eC0+aWQpOw0KPiA+ICttdGtfdjRsMl92 ZGVjX2VycihjdHgsICJbJWRdQ2Fubm90IGdldCBwYXJhbSA6DQo+IEdFVF9QQVJBTV9ESVNQX0ZS QU1FX0JVRkZFUiIsDQo+ID4gKyAgY3R4LT5pZCk7DQo+ID4gIHJldHVybiBOVUxMOw0KPiA+ICB9 DQo+ID4gIA0KPiA+ICBpZiAoIWRpc3BfZnJhbWVfYnVmZmVyKSB7DQo+ID4gLW10a192NGwyX2Rl YnVnKDMsICJObyBkaXNwbGF5IGZyYW1lIGJ1ZmZlciIpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2Ri ZygzLCBjdHgsICJObyBkaXNwbGF5IGZyYW1lIGJ1ZmZlciIpOw0KPiA+ICByZXR1cm4gTlVMTDsN Cj4gPiAgfQ0KPiA+ICANCj4gPiBAQCAtNzgsOSArNzksOSBAQCBzdGF0aWMgc3RydWN0IHZiMl9i dWZmZXINCj4gKmdldF9kaXNwbGF5X2J1ZmZlcihzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eCkN Cj4gPiAgdmIgPSAmZHN0YnVmLT5tMm1fYnVmLnZiOw0KPiA+ICBtdXRleF9sb2NrKCZjdHgtPmxv Y2spOw0KPiA+ICBpZiAoZHN0YnVmLT51c2VkKSB7DQo+ID4gLW10a192NGwyX2RlYnVnKDIsICJb JWRdc3RhdHVzPSV4IHF1ZXVlIGlkPSVkIHRvIGRvbmVfbGlzdCAlZCIsDQo+ID4gLSAgICAgICBj dHgtPmlkLCBkaXNwX2ZyYW1lX2J1ZmZlci0+c3RhdHVzLA0KPiA+IC0gICAgICAgdmItPnZiMl9i dWYuaW5kZXgsIGRzdGJ1Zi0+cXVldWVkX2luX3ZiMik7DQo+ID4gK210a192NGwyX3ZkZWNfZGJn KDIsIGN0eCwgIlslZF1zdGF0dXM9JXggcXVldWUgaWQ9JWQgdG8gZG9uZV9saXN0DQo+ICVkIiwN Cj4gPiArICBjdHgtPmlkLCBkaXNwX2ZyYW1lX2J1ZmZlci0+c3RhdHVzLA0KPiA+ICsgIHZiLT52 YjJfYnVmLmluZGV4LCBkc3RidWYtPnF1ZXVlZF9pbl92YjIpOw0KPiA+ICANCj4gPiAgdjRsMl9t Mm1fYnVmX2RvbmUodmIsIFZCMl9CVUZfU1RBVEVfRE9ORSk7DQo+ID4gIGN0eC0+ZGVjb2RlZF9m cmFtZV9jbnQrKzsNCj4gPiBAQCAtMTA1LDE2ICsxMDYsMTYgQEAgc3RhdGljIHN0cnVjdCB2YjJf YnVmZmVyDQo+ICpnZXRfZnJlZV9idWZmZXIoc3RydWN0IG10a192Y29kZWNfY3R4ICpjdHgpDQo+ ID4gIA0KPiA+ICBpZiAodmRlY19pZl9nZXRfcGFyYW0oY3R4LCBHRVRfUEFSQU1fRlJFRV9GUkFN RV9CVUZGRVIsDQo+ID4gICAgICAgICZmcmVlX2ZyYW1lX2J1ZmZlcikpIHsNCj4gPiAtbXRrX3Y0 bDJfZXJyKCJbJWRdIEVycm9yISEgQ2Fubm90IGdldCBwYXJhbSIsIGN0eC0+aWQpOw0KPiA+ICtt dGtfdjRsMl92ZGVjX2VycihjdHgsICJbJWRdIEVycm9yISEgQ2Fubm90IGdldCBwYXJhbSIsIGN0 eC0+aWQpOw0KPiA+ICByZXR1cm4gTlVMTDsNCj4gPiAgfQ0KPiA+ICBpZiAoIWZyZWVfZnJhbWVf YnVmZmVyKSB7DQo+ID4gLW10a192NGwyX2RlYnVnKDMsICIgTm8gZnJlZSBmcmFtZSBidWZmZXIi KTsNCj4gPiArbXRrX3Y0bDJfdmRlY19kYmcoMywgY3R4LCAiIE5vIGZyZWUgZnJhbWUgYnVmZmVy Iik7DQo+ID4gIHJldHVybiBOVUxMOw0KPiA+ICB9DQo+ID4gIA0KPiA+IC1tdGtfdjRsMl9kZWJ1 ZygzLCAiWyVkXSB0bXBfZnJhbWVfYWRkciA9IDB4JXAiLCBjdHgtPmlkLA0KPiA+IC0gICAgICAg ZnJlZV9mcmFtZV9idWZmZXIpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2RiZygzLCBjdHgsICJbJWRd IHRtcF9mcmFtZV9hZGRyID0gMHglcCIsIGN0eC0+aWQsDQo+ID4gKyAgZnJlZV9mcmFtZV9idWZm ZXIpOw0KPiA+ICANCj4gPiAgZHN0YnVmID0gY29udGFpbmVyX29mKGZyZWVfZnJhbWVfYnVmZmVy LCBzdHJ1Y3QgbXRrX3ZpZGVvX2RlY19idWYsDQo+ID4gICAgICAgIGZyYW1lX2J1ZmZlcik7DQo+ ID4gQEAgLTEzMSw5ICsxMzIsOSBAQCBzdGF0aWMgc3RydWN0IHZiMl9idWZmZXINCj4gKmdldF9m cmVlX2J1ZmZlcihzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eCkNCj4gPiAgICogVGhpcyByZWR1 Y2Ugb3ZlcmhlYWRzIHRoYXQgZHEvcSB1bnVzZWQgY2FwdHVyZQ0KPiA+ICAgKiBidWZmZXIuIElu IHRoaXMgY2FzZSwgcXVldWVkX2luX3ZiMiA9IHRydWUuDQo+ID4gICAqLw0KPiA+IC1tdGtfdjRs Ml9kZWJ1ZygyLCAiWyVkXXN0YXR1cz0leCBxdWV1ZSBpZD0lZCB0byByZHlfcXVldWUgJWQiLA0K PiA+IC0gICAgICAgY3R4LT5pZCwgZnJlZV9mcmFtZV9idWZmZXItPnN0YXR1cywNCj4gPiAtICAg ICAgIHZiLT52YjJfYnVmLmluZGV4LCBkc3RidWYtPnF1ZXVlZF9pbl92YjIpOw0KPiA+ICttdGtf djRsMl92ZGVjX2RiZygyLCBjdHgsICJbJWRdc3RhdHVzPSV4IHF1ZXVlIGlkPSVkIHRvIHJkeV9x dWV1ZQ0KPiAlZCIsDQo+ID4gKyAgY3R4LT5pZCwgZnJlZV9mcmFtZV9idWZmZXItPnN0YXR1cywN Cj4gPiArICB2Yi0+dmIyX2J1Zi5pbmRleCwgZHN0YnVmLT5xdWV1ZWRfaW5fdmIyKTsNCj4gPiAg djRsMl9tMm1fYnVmX3F1ZXVlKGN0eC0+bTJtX2N0eCwgdmIpOw0KPiA+ICB9IGVsc2UgaWYgKCFk c3RidWYtPnF1ZXVlZF9pbl92YjIgJiYgZHN0YnVmLT5xdWV1ZWRfaW5fdjRsMikgew0KPiA+ICAv Kg0KPiA+IEBAIC0xNDYsMTAgKzE0NywxMCBAQCBzdGF0aWMgc3RydWN0IHZiMl9idWZmZXINCj4g KmdldF9mcmVlX2J1ZmZlcihzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eCkNCj4gPiAgICogbWVh bnMgdGhpcyBidWZmZXIgaXMgbm90IGZyb20gcHJldmlvdXMgZGVjb2RlDQo+ID4gICAqIG91dHB1 dC4NCj4gPiAgICovDQo+ID4gLW10a192NGwyX2RlYnVnKDIsDQo+ID4gLSAgICAgICAiWyVkXXN0 YXR1cz0leCBxdWV1ZSBpZD0lZCB0byByZHlfcXVldWUiLA0KPiA+IC0gICAgICAgY3R4LT5pZCwg ZnJlZV9mcmFtZV9idWZmZXItPnN0YXR1cywNCj4gPiAtICAgICAgIHZiLT52YjJfYnVmLmluZGV4 KTsNCj4gPiArbXRrX3Y0bDJfdmRlY19kYmcoMiwgY3R4LA0KPiA+ICsgICJbJWRdc3RhdHVzPSV4 IHF1ZXVlIGlkPSVkIHRvIHJkeV9xdWV1ZSIsDQo+ID4gKyAgY3R4LT5pZCwgZnJlZV9mcmFtZV9i dWZmZXItPnN0YXR1cywNCj4gPiArICB2Yi0+dmIyX2J1Zi5pbmRleCk7DQo+ID4gIHY0bDJfbTJt X2J1Zl9xdWV1ZShjdHgtPm0ybV9jdHgsIHZiKTsNCj4gPiAgZHN0YnVmLT5xdWV1ZWRfaW5fdmIy ID0gdHJ1ZTsNCj4gPiAgfSBlbHNlIHsNCj4gPiBAQCAtMTYxLDEwICsxNjIsMTAgQEAgc3RhdGlj IHN0cnVjdCB2YjJfYnVmZmVyDQo+ICpnZXRfZnJlZV9idWZmZXIoc3RydWN0IG10a192Y29kZWNf Y3R4ICpjdHgpDQo+ID4gICAqIFdoZW4gdGhpcyBidWZmZXIgcSBmcm9tIHVzZXIgc3BhY2UsIGl0 IGNvdWxkDQo+ID4gICAqIGRpcmVjdGx5IHEgdG8gdmIyIGJ1ZmZlcg0KPiA+ICAgKi8NCj4gPiAt bXRrX3Y0bDJfZGVidWcoMywgIlslZF1zdGF0dXM9JXggZXJyIHF1ZXVlIGlkPSVkICVkICVkIiwN Cj4gPiAtICAgICAgIGN0eC0+aWQsIGZyZWVfZnJhbWVfYnVmZmVyLT5zdGF0dXMsDQo+ID4gLSAg ICAgICB2Yi0+dmIyX2J1Zi5pbmRleCwgZHN0YnVmLT5xdWV1ZWRfaW5fdmIyLA0KPiA+IC0gICAg ICAgZHN0YnVmLT5xdWV1ZWRfaW5fdjRsMik7DQo+ID4gK210a192NGwyX3ZkZWNfZGJnKDMsIGN0 eCwgIlslZF1zdGF0dXM9JXggZXJyIHF1ZXVlIGlkPSVkICVkICVkIiwNCj4gPiArICBjdHgtPmlk LCBmcmVlX2ZyYW1lX2J1ZmZlci0+c3RhdHVzLA0KPiA+ICsgIHZiLT52YjJfYnVmLmluZGV4LCBk c3RidWYtPnF1ZXVlZF9pbl92YjIsDQo+ID4gKyAgZHN0YnVmLT5xdWV1ZWRfaW5fdjRsMik7DQo+ ID4gIH0NCj4gPiAgZHN0YnVmLT51c2VkID0gZmFsc2U7DQo+ID4gIH0NCj4gPiBAQCAtMTkxLDcg KzE5Miw3IEBAIHN0YXRpYyB2b2lkIG10a192ZGVjX3F1ZXVlX3Jlc19jaGdfZXZlbnQoc3RydWN0 DQo+IG10a192Y29kZWNfY3R4ICpjdHgpDQo+ID4gIC51LnNyY19jaGFuZ2UuY2hhbmdlcyA9IFY0 TDJfRVZFTlRfU1JDX0NIX1JFU09MVVRJT04sDQo+ID4gIH07DQo+ID4gIA0KPiA+IC1tdGtfdjRs Ml9kZWJ1ZygxLCAiWyVkXSIsIGN0eC0+aWQpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2RiZygxLCBj dHgsICJbJWRdIiwgY3R4LT5pZCk7DQo+ID4gIHY0bDJfZXZlbnRfcXVldWVfZmgoJmN0eC0+Zmgs ICZldl9zcmNfY2gpOw0KPiA+ICB9DQo+ID4gIA0KPiA+IEBAIC0yMDIsNyArMjAzLDcgQEAgc3Rh dGljIGludCBtdGtfdmRlY19mbHVzaF9kZWNvZGVyKHN0cnVjdA0KPiBtdGtfdmNvZGVjX2N0eCAq Y3R4KQ0KPiA+ICANCj4gPiAgcmV0ID0gdmRlY19pZl9kZWNvZGUoY3R4LCBOVUxMLCBOVUxMLCAm cmVzX2NoZyk7DQo+ID4gIGlmIChyZXQpDQo+ID4gLW10a192NGwyX2VycigiRGVjb2RlRmluYWwg ZmFpbGVkLCByZXQ9JWQiLCByZXQpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2VycihjdHgsICJEZWNv ZGVGaW5hbCBmYWlsZWQsIHJldD0lZCIsIHJldCk7DQo+ID4gIA0KPiA+ICBjbGVhbl9kaXNwbGF5 X2J1ZmZlcihjdHgpOw0KPiA+ICBjbGVhbl9mcmVlX2J1ZmZlcihjdHgpOw0KPiA+IEBAIC0yMjEs MTQgKzIyMiwxNCBAQCBzdGF0aWMgdm9pZCBtdGtfdmRlY191cGRhdGVfZm10KHN0cnVjdA0KPiBt dGtfdmNvZGVjX2N0eCAqY3R4LA0KPiA+ICBmb3IgKGsgPSAwOyBrIDwgbnVtX3N1cHBvcnRlZF9m b3JtYXRzOyBrKyspIHsNCj4gPiAgZm10ID0gJm10a192aWRlb19mb3JtYXRzW2tdOw0KPiA+ICBp ZiAoZm10LT5mb3VyY2MgPT0gcGl4ZWxmb3JtYXQpIHsNCj4gPiAtbXRrX3Y0bDJfZGVidWcoMSwg IlVwZGF0ZSBjYXAgZm91cmNjKCVkIC0+ICVkKSIsDQo+ID4gLSAgICAgICBkc3RfcV9kYXRhLT5m bXQtPmZvdXJjYywgcGl4ZWxmb3JtYXQpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2RiZygxLCBjdHgs ICJVcGRhdGUgY2FwIGZvdXJjYyglZCAtPiAlZCkiLA0KPiA+ICsgIGRzdF9xX2RhdGEtPmZtdC0+ Zm91cmNjLCBwaXhlbGZvcm1hdCk7DQo+ID4gIGRzdF9xX2RhdGEtPmZtdCA9IGZtdDsNCj4gPiAg cmV0dXJuOw0KPiA+ICB9DQo+ID4gIH0NCj4gPiAgDQo+ID4gLW10a192NGwyX2VycigiQ2Fubm90 IGdldCBmb3VyY2MoJWQpLCB1c2luZyBpbml0IHZhbHVlIiwNCj4gcGl4ZWxmb3JtYXQpOw0KPiA+ ICttdGtfdjRsMl92ZGVjX2VycihjdHgsICJDYW5ub3QgZ2V0IGZvdXJjYyglZCksIHVzaW5nIGlu aXQgdmFsdWUiLA0KPiBwaXhlbGZvcm1hdCk7DQo+ID4gIH0NCj4gPiAgDQo+ID4gIHN0YXRpYyBp bnQgbXRrX3ZkZWNfcGljX2luZm9fdXBkYXRlKHN0cnVjdCBtdGtfdmNvZGVjX2N0eCAqY3R4KQ0K PiA+IEBAIC0yMzgsNyArMjM5LDggQEAgc3RhdGljIGludCBtdGtfdmRlY19waWNfaW5mb191cGRh dGUoc3RydWN0DQo+IG10a192Y29kZWNfY3R4ICpjdHgpDQo+ID4gIA0KPiA+ICBpZiAodmRlY19p Zl9nZXRfcGFyYW0oY3R4LCBHRVRfUEFSQU1fUElDX0lORk8sDQo+ID4gICAgICAgICZjdHgtPmxh c3RfZGVjb2RlZF9waWNpbmZvKSkgew0KPiA+IC1tdGtfdjRsMl9lcnIoIlslZF1FcnJvciEhIENh bm5vdCBnZXQgcGFyYW0gOg0KPiBHRVRfUEFSQU1fUElDVFVSRV9JTkZPIEVSUiIsIGN0eC0+aWQp Ow0KPiA+ICttdGtfdjRsMl92ZGVjX2VycihjdHgsICJbJWRdRXJyb3IhISBDYW5ub3QgZ2V0IHBh cmFtIDoNCj4gR0VUX1BBUkFNX1BJQ1RVUkVfSU5GTyBFUlIiLA0KPiA+ICsgIGN0eC0+aWQpOw0K PiA+ICByZXR1cm4gLUVJTlZBTDsNCj4gPiAgfQ0KPiA+ICANCj4gPiBAQCAtMjQ2LDcgKzI0OCw3 IEBAIHN0YXRpYyBpbnQgbXRrX3ZkZWNfcGljX2luZm9fdXBkYXRlKHN0cnVjdA0KPiBtdGtfdmNv ZGVjX2N0eCAqY3R4KQ0KPiA+ICAgICAgY3R4LT5sYXN0X2RlY29kZWRfcGljaW5mby5waWNfaCA9 PSAwIHx8DQo+ID4gICAgICBjdHgtPmxhc3RfZGVjb2RlZF9waWNpbmZvLmJ1Zl93ID09IDAgfHwN Cj4gPiAgICAgIGN0eC0+bGFzdF9kZWNvZGVkX3BpY2luZm8uYnVmX2ggPT0gMCkgew0KPiA+IC1t dGtfdjRsMl9lcnIoIkNhbm5vdCBnZXQgY29ycmVjdCBwaWMgaW5mbyIpOw0KPiA+ICttdGtfdjRs Ml92ZGVjX2VycihjdHgsICJDYW5ub3QgZ2V0IGNvcnJlY3QgcGljIGluZm8iKTsNCj4gPiAgcmV0 dXJuIC1FSU5WQUw7DQo+ID4gIH0NCj4gPiAgDQo+ID4gQEAgLTI1OCwxNSArMjYwLDE1IEBAIHN0 YXRpYyBpbnQgbXRrX3ZkZWNfcGljX2luZm9fdXBkYXRlKHN0cnVjdA0KPiBtdGtfdmNvZGVjX2N0 eCAqY3R4KQ0KPiA+ICAgICAgY3R4LT5sYXN0X2RlY29kZWRfcGljaW5mby5waWNfaCA9PSBjdHgt PnBpY2luZm8ucGljX2gpDQo+ID4gIHJldHVybiAwOw0KPiA+ICANCj4gPiAtbXRrX3Y0bDJfZGVi dWcoMSwgIlslZF0tPiBuZXcoJWQsJWQpLCBvbGQoJWQsJWQpLCByZWFsKCVkLCVkKSIsDQo+IGN0 eC0+aWQsDQo+ID4gLSAgICAgICBjdHgtPmxhc3RfZGVjb2RlZF9waWNpbmZvLnBpY193LA0KPiA+ IC0gICAgICAgY3R4LT5sYXN0X2RlY29kZWRfcGljaW5mby5waWNfaCwgY3R4LT5waWNpbmZvLnBp Y193LA0KPiA+IC0gICAgICAgY3R4LT5waWNpbmZvLnBpY19oLCBjdHgtPmxhc3RfZGVjb2RlZF9w aWNpbmZvLmJ1Zl93LA0KPiA+IC0gICAgICAgY3R4LT5sYXN0X2RlY29kZWRfcGljaW5mby5idWZf aCk7DQo+ID4gK210a192NGwyX3ZkZWNfZGJnKDEsIGN0eCwgIlslZF0tPiBuZXcoJWQsJWQpLCBv bGQoJWQsJWQpLA0KPiByZWFsKCVkLCVkKSIsIGN0eC0+aWQsDQo+ID4gKyAgY3R4LT5sYXN0X2Rl Y29kZWRfcGljaW5mby5waWNfdywNCj4gPiArICBjdHgtPmxhc3RfZGVjb2RlZF9waWNpbmZvLnBp Y19oLCBjdHgtPnBpY2luZm8ucGljX3csDQo+ID4gKyAgY3R4LT5waWNpbmZvLnBpY19oLCBjdHgt Pmxhc3RfZGVjb2RlZF9waWNpbmZvLmJ1Zl93LA0KPiA+ICsgIGN0eC0+bGFzdF9kZWNvZGVkX3Bp Y2luZm8uYnVmX2gpOw0KPiA+ICANCj4gPiAgcmV0ID0gdmRlY19pZl9nZXRfcGFyYW0oY3R4LCBH RVRfUEFSQU1fRFBCX1NJWkUsICZkcGJzaXplKTsNCj4gPiAgaWYgKGRwYnNpemUgPT0gMCkNCj4g PiAtbXRrX3Y0bDJfZXJyKCJJbmNvcnJlY3QgZHBiIHNpemUsIHJldD0lZCIsIHJldCk7DQo+ID4g K210a192NGwyX3ZkZWNfZXJyKGN0eCwgIkluY29ycmVjdCBkcGIgc2l6ZSwgcmV0PSVkIiwgcmV0 KTsNCj4gPiAgDQo+ID4gIGN0eC0+ZHBiX3NpemUgPSBkcGJzaXplOw0KPiA+ICANCj4gPiBAQCAt Mjg4LDE0ICsyOTAsMTQgQEAgc3RhdGljIHZvaWQgbXRrX3ZkZWNfd29ya2VyKHN0cnVjdA0KPiB3 b3JrX3N0cnVjdCAqd29yaykNCj4gPiAgc3JjX2J1ZiA9IHY0bDJfbTJtX25leHRfc3JjX2J1Zihj dHgtPm0ybV9jdHgpOw0KPiA+ICBpZiAoIXNyY19idWYpIHsNCj4gPiAgdjRsMl9tMm1fam9iX2Zp bmlzaChkZXYtPm0ybV9kZXZfZGVjLCBjdHgtPm0ybV9jdHgpOw0KPiA+IC1tdGtfdjRsMl9kZWJ1 ZygxLCAiWyVkXSBzcmNfYnVmIGVtcHR5ISEiLCBjdHgtPmlkKTsNCj4gPiArbXRrX3Y0bDJfdmRl Y19kYmcoMSwgY3R4LCAiWyVkXSBzcmNfYnVmIGVtcHR5ISEiLCBjdHgtPmlkKTsNCj4gPiAgcmV0 dXJuOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICBkc3RfYnVmID0gdjRsMl9tMm1fbmV4dF9kc3RfYnVm KGN0eC0+bTJtX2N0eCk7DQo+ID4gIGlmICghZHN0X2J1Zikgew0KPiA+ICB2NGwyX20ybV9qb2Jf ZmluaXNoKGRldi0+bTJtX2Rldl9kZWMsIGN0eC0+bTJtX2N0eCk7DQo+ID4gLW10a192NGwyX2Rl YnVnKDEsICJbJWRdIGRzdF9idWYgZW1wdHkhISIsIGN0eC0+aWQpOw0KPiA+ICttdGtfdjRsMl92 ZGVjX2RiZygxLCBjdHgsICJbJWRdIGRzdF9idWYgZW1wdHkhISIsIGN0eC0+aWQpOw0KPiA+ICBy ZXR1cm47DQo+ID4gIH0NCj4gPiAgDQo+ID4gQEAgLTMxMywxNSArMzE1LDE1IEBAIHN0YXRpYyB2 b2lkIG10a192ZGVjX3dvcmtlcihzdHJ1Y3QNCj4gd29ya19zdHJ1Y3QgKndvcmspDQo+ID4gIHZi Ml9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRyKCZkc3RfYnVmLT52YjJfYnVmLCAxKTsNCj4gPiAg cGZiLT5iYXNlX2Muc2l6ZSA9IGN0eC0+cGljaW5mby5mYl9zelsxXTsNCj4gPiAgcGZiLT5zdGF0 dXMgPSAwOw0KPiA+IC1tdGtfdjRsMl9kZWJ1ZygzLCAiPT09PlslZF0gdmRlY19pZl9kZWNvZGUo KSA9PT0+IiwgY3R4LT5pZCk7DQo+ID4gK210a192NGwyX3ZkZWNfZGJnKDMsIGN0eCwgIj09PT5b JWRdIHZkZWNfaWZfZGVjb2RlKCkgPT09PiIsIGN0eC0NCj4gPmlkKTsNCj4gPiAgDQo+ID4gLW10 a192NGwyX2RlYnVnKDMsDQo+ID4gLSAgICAgICAiaWQ9JWQgRnJhbWVidWYgIHBmYj0lcCBWQT0l cCBZX0RNQT0lcGFkIENfRE1BPSVwYWQNCj4gU2l6ZT0lengiLA0KPiA+IC0gICAgICAgZHN0X2J1 Zi0+dmIyX2J1Zi5pbmRleCwgcGZiLCBwZmItPmJhc2VfeS52YSwNCj4gPiAtICAgICAgICZwZmIt PmJhc2VfeS5kbWFfYWRkciwgJnBmYi0+YmFzZV9jLmRtYV9hZGRyLCBwZmItDQo+ID5iYXNlX3ku c2l6ZSk7DQo+ID4gK210a192NGwyX3ZkZWNfZGJnKDMsIGN0eCwNCj4gPiArICAiaWQ9JWQgRnJh bWVidWYgIHBmYj0lcCBWQT0lcCBZX0RNQT0lcGFkIENfRE1BPSVwYWQgU2l6ZT0lengiLA0KPiA+ ICsgIGRzdF9idWYtPnZiMl9idWYuaW5kZXgsIHBmYiwgcGZiLT5iYXNlX3kudmEsDQo+ID4gKyAg JnBmYi0+YmFzZV95LmRtYV9hZGRyLCAmcGZiLT5iYXNlX2MuZG1hX2FkZHIsIHBmYi0+YmFzZV95 LnNpemUpOw0KPiA+ICANCj4gPiAgaWYgKHNyY19idWYgPT0gJmN0eC0+ZW1wdHlfZmx1c2hfYnVm LnZiKSB7DQo+ID4gLW10a192NGwyX2RlYnVnKDEsICJHb3QgZW1wdHkgZmx1c2ggaW5wdXQgYnVm ZmVyLiIpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2RiZygxLCBjdHgsICJHb3QgZW1wdHkgZmx1c2gg aW5wdXQgYnVmZmVyLiIpOw0KPiA+ICBzcmNfYnVmID0gdjRsMl9tMm1fc3JjX2J1Zl9yZW1vdmUo Y3R4LT5tMm1fY3R4KTsNCj4gPiAgDQo+ID4gIC8qIHVwZGF0ZSBkc3QgYnVmIHN0YXR1cyAqLw0K PiA+IEBAIC0zNTAsMTIgKzM1MiwxMiBAQCBzdGF0aWMgdm9pZCBtdGtfdmRlY193b3JrZXIoc3Ry dWN0DQo+IHdvcmtfc3RydWN0ICp3b3JrKQ0KPiA+ICBidWYuc2l6ZSA9IChzaXplX3Qpc3JjX2J1 Zi0+dmIyX2J1Zi5wbGFuZXNbMF0uYnl0ZXN1c2VkOw0KPiA+ICBpZiAoIWJ1Zi52YSkgew0KPiA+ ICB2NGwyX20ybV9qb2JfZmluaXNoKGRldi0+bTJtX2Rldl9kZWMsIGN0eC0+bTJtX2N0eCk7DQo+ ID4gLW10a192NGwyX2VycigiWyVkXSBpZD0lZCBzcmNfYWRkciBpcyBOVUxMISEiLCBjdHgtPmlk LA0KPiA+IC0gICAgIHNyY19idWYtPnZiMl9idWYuaW5kZXgpOw0KPiA+ICttdGtfdjRsMl92ZGVj X2VycihjdHgsICJbJWRdIGlkPSVkIHNyY19hZGRyIGlzIE5VTEwhISIsIGN0eC0+aWQsDQo+ID4g KyAgc3JjX2J1Zi0+dmIyX2J1Zi5pbmRleCk7DQo+ID4gIHJldHVybjsNCj4gPiAgfQ0KPiA+IC1t dGtfdjRsMl9kZWJ1ZygzLCAiWyVkXSBCaXRzdHJlYW0gVkE9JXAgRE1BPSVwYWQgU2l6ZT0lengg dmI9JXAiLA0KPiA+IC0gICAgICAgY3R4LT5pZCwgYnVmLnZhLCAmYnVmLmRtYV9hZGRyLCBidWYu c2l6ZSwgc3JjX2J1Zik7DQo+ID4gK210a192NGwyX3ZkZWNfZGJnKDMsIGN0eCwgIlslZF0gQml0 c3RyZWFtIFZBPSVwIERNQT0lcGFkIFNpemU9JXp4DQo+IHZiPSVwIiwNCj4gPiArICBjdHgtPmlk LCBidWYudmEsICZidWYuZG1hX2FkZHIsIGJ1Zi5zaXplLCBzcmNfYnVmKTsNCj4gPiAgZHN0X2J1 Zi0+dmIyX2J1Zi50aW1lc3RhbXAgPSBzcmNfYnVmLT52YjJfYnVmLnRpbWVzdGFtcDsNCj4gPiAg ZHN0X2J1Zi0+dGltZWNvZGUgPSBzcmNfYnVmLT50aW1lY29kZTsNCj4gPiAgbXV0ZXhfbG9jaygm Y3R4LT5sb2NrKTsNCj4gPiBAQCAtMzY2LDkgKzM2OCwxMCBAQCBzdGF0aWMgdm9pZCBtdGtfdmRl Y193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0DQo+ICp3b3JrKQ0KPiA+ICByZXQgPSB2ZGVjX2lm X2RlY29kZShjdHgsICZidWYsIHBmYiwgJnJlc19jaGcpOw0KPiA+ICANCj4gPiAgaWYgKHJldCkg ew0KPiA+IC1tdGtfdjRsMl9lcnIoIiA8PT09WyVkXSwgc3JjX2J1ZlslZF0gc3o9MHglenggcHRz PSVsbHUgZHN0X2J1ZlslZF0NCj4gdmRlY19pZl9kZWNvZGUoKSByZXQ9JWQgcmVzX2NoZz0lZD09 PT4iLA0KPiA+IC0gICAgIGN0eC0+aWQsIHNyY19idWYtPnZiMl9idWYuaW5kZXgsIGJ1Zi5zaXpl LA0KPiA+IC0gICAgIHNyY19idWYtPnZiMl9idWYudGltZXN0YW1wLCBkc3RfYnVmLT52YjJfYnVm LmluZGV4LCByZXQsDQo+IHJlc19jaGcpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2VycihjdHgsDQo+ ID4gKyAgIlslZF0gZGVjb2RlIHNyY1slZF0gc3o9MHglenggcHRzPSVsbHUgZHN0WyVkXSByZXQ9 JWQNCj4gcmVzX2NoZz0lZCIsDQo+ID4gKyAgY3R4LT5pZCwgc3JjX2J1Zi0+dmIyX2J1Zi5pbmRl eCwgYnVmLnNpemUsDQo+ID4gKyAgc3JjX2J1Zi0+dmIyX2J1Zi50aW1lc3RhbXAsIGRzdF9idWYt PnZiMl9idWYuaW5kZXgsIHJldCwNCj4gcmVzX2NoZyk7DQo+ID4gIHNyY19idWYgPSB2NGwyX20y bV9zcmNfYnVmX3JlbW92ZShjdHgtPm0ybV9jdHgpOw0KPiA+ICBpZiAocmV0ID09IC1FSU8pIHsN Cj4gPiAgbXV0ZXhfbG9jaygmY3R4LT5sb2NrKTsNCj4gPiBAQCAtNDIxLDggKzQyNCw4IEBAIHN0 YXRpYyB2b2lkDQo+IHZiMm9wc192ZGVjX3N0YXRlZnVsX2J1Zl9xdWV1ZShzdHJ1Y3QgdmIyX2J1 ZmZlciAqdmIpDQo+ID4gIHN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnZiMl92NGwyOw0KPiA+ICBz dHJ1Y3QgbXRrX3FfZGF0YSAqZHN0X3FfZGF0YTsNCj4gPiAgDQo+ID4gLW10a192NGwyX2RlYnVn KDMsICJbJWRdICglZCkgaWQ9JWQsIHZiPSVwIiwgY3R4LT5pZCwNCj4gPiAtICAgICAgIHZiLT52 YjJfcXVldWUtPnR5cGUsIHZiLT5pbmRleCwgdmIpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2RiZygz LCBjdHgsICJbJWRdICglZCkgaWQ9JWQsIHZiPSVwIiwgY3R4LT5pZCwNCj4gPiArICB2Yi0+dmIy X3F1ZXVlLT50eXBlLCB2Yi0+aW5kZXgsIHZiKTsNCj4gPiAgLyoNCj4gPiAgICogY2hlY2sgaWYg dGhpcyBidWZmZXIgaXMgcmVhZHkgdG8gYmUgdXNlZCBhZnRlciBkZWNvZGUNCj4gPiAgICovDQo+ ID4gQEAgLTQ0OCwyMCArNDUxLDE5IEBAIHN0YXRpYyB2b2lkDQo+IHZiMm9wc192ZGVjX3N0YXRl ZnVsX2J1Zl9xdWV1ZShzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIpDQo+ID4gIHY0bDJfbTJtX2J1Zl9x dWV1ZShjdHgtPm0ybV9jdHgsIHRvX3ZiMl92NGwyX2J1ZmZlcih2YikpOw0KPiA+ICANCj4gPiAg aWYgKGN0eC0+c3RhdGUgIT0gTVRLX1NUQVRFX0lOSVQpIHsNCj4gPiAtbXRrX3Y0bDJfZGVidWco MywgIlslZF0gYWxyZWFkeSBpbml0IGRyaXZlciAlZCIsIGN0eC0+aWQsDQo+ID4gLSAgICAgICBj dHgtPnN0YXRlKTsNCj4gPiArbXRrX3Y0bDJfdmRlY19kYmcoMywgY3R4LCAiWyVkXSBhbHJlYWR5 IGluaXQgZHJpdmVyICVkIiwgY3R4LT5pZCwNCj4gY3R4LT5zdGF0ZSk7DQo+ID4gIHJldHVybjsN Cj4gPiAgfQ0KPiA+ICANCj4gPiAgc3JjX2J1ZiA9IHY0bDJfbTJtX25leHRfc3JjX2J1ZihjdHgt Pm0ybV9jdHgpOw0KPiA+ICBpZiAoIXNyY19idWYpIHsNCj4gPiAtbXRrX3Y0bDJfZXJyKCJObyBz cmMgYnVmZmVyIik7DQo+ID4gK210a192NGwyX3ZkZWNfZXJyKGN0eCwgIk5vIHNyYyBidWZmZXIi KTsNCj4gPiAgcmV0dXJuOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICBpZiAoc3JjX2J1ZiA9PSAmY3R4 LT5lbXB0eV9mbHVzaF9idWYudmIpIHsNCj4gPiAgLyogVGhpcyBzaG91bGRuJ3QgaGFwcGVuLiBK dXN0IGluIGNhc2UuICovDQo+ID4gLW10a192NGwyX2VycigiSW52YWxpZCBmbHVzaCBidWZmZXIu Iik7DQo+ID4gK210a192NGwyX3ZkZWNfZXJyKGN0eCwgIkludmFsaWQgZmx1c2ggYnVmZmVyLiIp Ow0KPiA+ICB2NGwyX20ybV9zcmNfYnVmX3JlbW92ZShjdHgtPm0ybV9jdHgpOw0KPiA+ICByZXR1 cm47DQo+ID4gIH0NCj4gPiBAQCAtNDY5LDkgKzQ3MSw4IEBAIHN0YXRpYyB2b2lkDQo+IHZiMm9w c192ZGVjX3N0YXRlZnVsX2J1Zl9xdWV1ZShzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIpDQo+ID4gIHNy Y19tZW0udmEgPSB2YjJfcGxhbmVfdmFkZHIoJnNyY19idWYtPnZiMl9idWYsIDApOw0KPiA+ICBz cmNfbWVtLmRtYV9hZGRyID0gdmIyX2RtYV9jb250aWdfcGxhbmVfZG1hX2FkZHIoJnNyY19idWYt DQo+ID52YjJfYnVmLCAwKTsNCj4gPiAgc3JjX21lbS5zaXplID0gKHNpemVfdClzcmNfYnVmLT52 YjJfYnVmLnBsYW5lc1swXS5ieXRlc3VzZWQ7DQo+ID4gLW10a192NGwyX2RlYnVnKDIsICJbJWRd IGJ1ZiBpZD0lZCB2YT0lcCBkbWE9JXBhZCBzaXplPSV6eCIsIGN0eC0NCj4gPmlkLA0KPiA+IC0g ICAgICAgc3JjX2J1Zi0+dmIyX2J1Zi5pbmRleCwgc3JjX21lbS52YSwgJnNyY19tZW0uZG1hX2Fk ZHIsDQo+ID4gLSAgICAgICBzcmNfbWVtLnNpemUpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2RiZygy LCBjdHgsICJbJWRdIGJ1ZiBpZD0lZCB2YT0lcCBkbWE9JXBhZA0KPiBzaXplPSV6eCIsIGN0eC0+ aWQsDQo+ID4gKyAgc3JjX2J1Zi0+dmIyX2J1Zi5pbmRleCwgc3JjX21lbS52YSwgJnNyY19tZW0u ZG1hX2FkZHIsDQo+IHNyY19tZW0uc2l6ZSk7DQo+ID4gIA0KPiA+ICByZXQgPSB2ZGVjX2lmX2Rl Y29kZShjdHgsICZzcmNfbWVtLCBOVUxMLCAmcmVzX2NoZyk7DQo+ID4gIGlmIChyZXQgfHwgIXJl c19jaGcpIHsNCj4gPiBAQCAtNDg0LDIwICs0ODUsMjIgQEAgc3RhdGljIHZvaWQNCj4gdmIyb3Bz X3ZkZWNfc3RhdGVmdWxfYnVmX3F1ZXVlKHN0cnVjdCB2YjJfYnVmZmVyICp2YikNCj4gPiAgDQo+ ID4gIHNyY19idWYgPSB2NGwyX20ybV9zcmNfYnVmX3JlbW92ZShjdHgtPm0ybV9jdHgpOw0KPiA+ ICBpZiAocmV0ID09IC1FSU8pIHsNCj4gPiAtbXRrX3Y0bDJfZXJyKCJbJWRdIFVucmVjb3ZlcmFi bGUgZXJyb3IgaW4gdmRlY19pZl9kZWNvZGUuIiwgY3R4LQ0KPiA+aWQpOw0KPiA+ICttdGtfdjRs Ml92ZGVjX2VycihjdHgsICJbJWRdIFVucmVjb3ZlcmFibGUgZXJyb3IgaW4NCj4gdmRlY19pZl9k ZWNvZGUuIiwNCj4gPiArICBjdHgtPmlkKTsNCj4gPiAgY3R4LT5zdGF0ZSA9IE1US19TVEFURV9B Qk9SVDsNCj4gPiAgdjRsMl9tMm1fYnVmX2RvbmUoc3JjX2J1ZiwgVkIyX0JVRl9TVEFURV9FUlJP Uik7DQo+ID4gIH0gZWxzZSB7DQo+ID4gIHY0bDJfbTJtX2J1Zl9kb25lKHNyY19idWYsIFZCMl9C VUZfU1RBVEVfRE9ORSk7DQo+ID4gIH0NCj4gPiAtbXRrX3Y0bDJfZGVidWcocmV0ID8gMCA6IDEs DQo+ID4gLSAgICAgICAiWyVkXSB2ZGVjX2lmX2RlY29kZSgpIHNyY19idWY9JWQsIHNpemU9JXp1 LCBmYWlsPSVkLA0KPiByZXNfY2hnPSVkIiwNCj4gPiAtICAgICAgIGN0eC0+aWQsIHNyY19idWYt PnZiMl9idWYuaW5kZXgsIHNyY19tZW0uc2l6ZSwgcmV0LA0KPiByZXNfY2hnKTsNCj4gPiArbXRr X3Y0bDJfdmRlY19kYmcocmV0ID8gMCA6IDEsIGN0eCwNCj4gPiArICAiWyVkXSBkZWNvZGUoKSBz cmNfYnVmPSVkLCBzaXplPSV6dSwgZmFpbD0lZCwgcmVzX2NoZz0lZCIsDQo+ID4gKyAgY3R4LT5p ZCwgc3JjX2J1Zi0+dmIyX2J1Zi5pbmRleCwgc3JjX21lbS5zaXplLCByZXQsIHJlc19jaGcpOw0K PiA+ICByZXR1cm47DQo+ID4gIH0NCj4gPiAgDQo+ID4gIGlmICh2ZGVjX2lmX2dldF9wYXJhbShj dHgsIEdFVF9QQVJBTV9QSUNfSU5GTywgJmN0eC0+cGljaW5mbykpIHsNCj4gPiAtbXRrX3Y0bDJf ZXJyKCJbJWRdRXJyb3IhISBDYW5ub3QgZ2V0IHBhcmFtIDoNCj4gR0VUX1BBUkFNX1BJQ1RVUkVf SU5GTyBFUlIiLCBjdHgtPmlkKTsNCj4gPiArbXRrX3Y0bDJfdmRlY19lcnIoY3R4LCAiWyVkXUVy cm9yISEgQ2Fubm90IGdldCBwYXJhbSA6DQo+IEdFVF9QQVJBTV9QSUNUVVJFX0lORk8gRVJSIiwN Cj4gPiArICBjdHgtPmlkKTsNCj4gPiAgcmV0dXJuOw0KPiA+ICB9DQo+ID4gIA0KPiA+IEBAIC01 MDgsMTcgKzUxMSwxNyBAQCBzdGF0aWMgdm9pZA0KPiB2YjJvcHNfdmRlY19zdGF0ZWZ1bF9idWZf cXVldWUoc3RydWN0IHZiMl9idWZmZXIgKnZiKQ0KPiA+ICBkc3RfcV9kYXRhLT5ieXRlc3Blcmxp bmVbaV0gPSBjdHgtPnBpY2luZm8uYnVmX3c7DQo+ID4gIH0NCj4gPiAgDQo+ID4gLW10a192NGwy X2RlYnVnKDIsICJbJWRdIHZkZWNfaWZfaW5pdCgpIE9LIHd4aD0lZHglZCBwaWMgd3hoPSVkeCVk DQo+IHN6WzBdPTB4JXggc3pbMV09MHgleCIsDQo+ID4gLSAgICAgICBjdHgtPmlkLCBjdHgtPnBp Y2luZm8uYnVmX3csIGN0eC0+cGljaW5mby5idWZfaCwgY3R4LQ0KPiA+cGljaW5mby5waWNfdywN Cj4gPiAtICAgICAgIGN0eC0+cGljaW5mby5waWNfaCwgZHN0X3FfZGF0YS0+c2l6ZWltYWdlWzBd LCBkc3RfcV9kYXRhLQ0KPiA+c2l6ZWltYWdlWzFdKTsNCj4gPiArbXRrX3Y0bDJfdmRlY19kYmco MiwgY3R4LCAiWyVkXSBpbml0IE9LIHd4aD0lZHglZCBwaWMgd3hoPSVkeCVkDQo+IHN6WzBdPTB4 JXggc3pbMV09MHgleCIsDQo+ID4gKyAgY3R4LT5pZCwgY3R4LT5waWNpbmZvLmJ1Zl93LCBjdHgt PnBpY2luZm8uYnVmX2gsIGN0eC0NCj4gPnBpY2luZm8ucGljX3csDQo+ID4gKyAgY3R4LT5waWNp bmZvLnBpY19oLCBkc3RfcV9kYXRhLT5zaXplaW1hZ2VbMF0sIGRzdF9xX2RhdGEtDQo+ID5zaXpl aW1hZ2VbMV0pOw0KPiA+ICANCj4gPiAgcmV0ID0gdmRlY19pZl9nZXRfcGFyYW0oY3R4LCBHRVRf UEFSQU1fRFBCX1NJWkUsICZkcGJzaXplKTsNCj4gPiAgaWYgKGRwYnNpemUgPT0gMCkNCj4gPiAt bXRrX3Y0bDJfZXJyKCJbJWRdIEdFVF9QQVJBTV9EUEJfU0laRSBmYWlsPSVkIiwgY3R4LT5pZCwg cmV0KTsNCj4gPiArbXRrX3Y0bDJfdmRlY19lcnIoY3R4LCAiWyVkXSBHRVRfUEFSQU1fRFBCX1NJ WkUgZmFpbD0lZCIsIGN0eC0+aWQsIA0KPiByZXQpOw0KPiA+ICANCj4gPiAgY3R4LT5kcGJfc2l6 ZSA9IGRwYnNpemU7DQo+ID4gIGN0eC0+c3RhdGUgPSBNVEtfU1RBVEVfSEVBREVSOw0KPiA+IC1t dGtfdjRsMl9kZWJ1ZygxLCAiWyVkXSBkcGJzaXplPSVkIiwgY3R4LT5pZCwgY3R4LT5kcGJfc2l6 ZSk7DQo+ID4gK210a192NGwyX3ZkZWNfZGJnKDEsIGN0eCwgIlslZF0gZHBic2l6ZT0lZCIsIGN0 eC0+aWQsIGN0eC0NCj4gPmRwYl9zaXplKTsNCj4gPiAgDQo+ID4gIG10a192ZGVjX3F1ZXVlX3Jl c19jaGdfZXZlbnQoY3R4KTsNCj4gPiAgfQ0KPiA+IEBAIC01MzMsNyArNTM2LDcgQEAgc3RhdGlj IGludCBtdGtfdmRlY19nX3ZfY3RybChzdHJ1Y3QgdjRsMl9jdHJsDQo+ICpjdHJsKQ0KPiA+ICBp ZiAoY3R4LT5zdGF0ZSA+PSBNVEtfU1RBVEVfSEVBREVSKSB7DQo+ID4gIGN0cmwtPnZhbCA9IGN0 eC0+ZHBiX3NpemU7DQo+ID4gIH0gZWxzZSB7DQo+ID4gLW10a192NGwyX2RlYnVnKDAsICJTZXFp bmZvIG5vdCByZWFkeSIpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2RiZygwLCBjdHgsICJTZXFpbmZv IG5vdCByZWFkeSIpOw0KPiA+ICBjdHJsLT52YWwgPSAwOw0KPiA+ICB9DQo+ID4gIGJyZWFrOw0K PiA+IEBAIC01NzAsNyArNTczLDcgQEAgc3RhdGljIGludCBtdGtfdmNvZGVjX2RlY19jdHJsc19z ZXR1cChzdHJ1Y3QNCj4gbXRrX3Zjb2RlY19jdHggKmN0eCkNCj4gPiAgICAgICAgIFY0TDJfTVBF R19WSURFT19IMjY0X1BST0ZJTEVfTUFJTik7DQo+ID4gIA0KPiA+ICBpZiAoY3R4LT5jdHJsX2hk bC5lcnJvcikgew0KPiA+IC1tdGtfdjRsMl9lcnIoIkFkZGluZyBjb250cm9sIGZhaWxlZCAlZCIs IGN0eC0+Y3RybF9oZGwuZXJyb3IpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2VycihjdHgsICJBZGRp bmcgY29udHJvbCBmYWlsZWQgJWQiLCBjdHgtDQo+ID5jdHJsX2hkbC5lcnJvcik7DQo+ID4gIHJl dHVybiBjdHgtPmN0cmxfaGRsLmVycm9yOw0KPiA+ICB9DQo+ID4gIA0KPiA+IGRpZmYgLS1naXQN Cj4gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy9tdGtfdmNvZGVjX2Rl Y19zdGF0ZWxlc3MuYw0KPiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVj L210a192Y29kZWNfZGVjX3N0YXRlbGVzcy5jDQo+ID4gaW5kZXggZGIxZTE0YTFiZDZjLi5mZmUw NWZmMzFkZDEgMTAwNjQ0DQo+ID4gLS0tDQo+IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRp YXRlay92Y29kZWMvbXRrX3Zjb2RlY19kZWNfc3RhdGVsZXNzLmMNCj4gPiArKysNCj4gYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy9tdGtfdmNvZGVjX2RlY19zdGF0ZWxl c3MuYw0KPiA+IEBAIC0yMzIsMTAgKzIzMiwxMCBAQCBzdGF0aWMgdm9pZA0KPiBtdGtfdmRlY19z dGF0ZWxlc3NfY2FwX3RvX2Rpc3Aoc3RydWN0IG10a192Y29kZWNfY3R4ICpjdHgsIGludCBlcnJv cg0KPiA+ICB2YjJfZHN0ID0gdjRsMl9tMm1fZHN0X2J1Zl9yZW1vdmUoY3R4LT5tMm1fY3R4KTsN Cj4gPiAgaWYgKHZiMl9kc3QpIHsNCj4gPiAgdjRsMl9tMm1fYnVmX2RvbmUodmIyX2RzdCwgc3Rh dGUpOw0KPiA+IC1tdGtfdjRsMl9kZWJ1ZygyLCAiZnJlZSBmcmFtZSBidWZmZXIgaWQ6JWQgdG8g ZG9uZSBsaXN0IiwNCj4gPiAtICAgICAgIHZiMl9kc3QtPnZiMl9idWYuaW5kZXgpOw0KPiA+ICtt dGtfdjRsMl92ZGVjX2RiZygyLCBjdHgsICJmcmVlIGZyYW1lIGJ1ZmZlciBpZDolZCB0byBkb25l IGxpc3QiLA0KPiA+ICsgIHZiMl9kc3QtPnZiMl9idWYuaW5kZXgpOw0KPiA+ICB9IGVsc2Ugew0K PiA+IC1tdGtfdjRsMl9lcnIoImRzdCBidWZmZXIgaXMgTlVMTCIpOw0KPiA+ICttdGtfdjRsMl92 ZGVjX2VycihjdHgsICJkc3QgYnVmZmVyIGlzIE5VTEwiKTsNCj4gPiAgfQ0KPiA+ICANCj4gPiAg aWYgKHNyY19idWZfcmVxKQ0KPiA+IEBAIC0yNTEsNyArMjUxLDcgQEAgc3RhdGljIHN0cnVjdCB2 ZGVjX2ZiDQo+ICp2ZGVjX2dldF9jYXBfYnVmZmVyKHN0cnVjdCBtdGtfdmNvZGVjX2N0eCAqY3R4 KQ0KPiA+ICANCj4gPiAgdmIyX3Y0bDIgPSB2NGwyX20ybV9uZXh0X2RzdF9idWYoY3R4LT5tMm1f Y3R4KTsNCj4gPiAgaWYgKCF2YjJfdjRsMikgew0KPiA+IC1tdGtfdjRsMl9kZWJ1ZygxLCAiWyVk XSBkc3RfYnVmIGVtcHR5ISEiLCBjdHgtPmlkKTsNCj4gPiArbXRrX3Y0bDJfdmRlY19kYmcoMSwg Y3R4LCAiWyVkXSBkc3RfYnVmIGVtcHR5ISEiLCBjdHgtPmlkKTsNCj4gPiAgcmV0dXJuIE5VTEw7 DQo+ID4gIH0NCj4gPiAgDQo+ID4gQEAgLTI2OSw5ICsyNjksMTAgQEAgc3RhdGljIHN0cnVjdCB2 ZGVjX2ZiDQo+ICp2ZGVjX2dldF9jYXBfYnVmZmVyKHN0cnVjdCBtdGtfdmNvZGVjX2N0eCAqY3R4 KQ0KPiA+ICB2YjJfZG1hX2NvbnRpZ19wbGFuZV9kbWFfYWRkcihkc3RfYnVmLCAxKTsNCj4gPiAg cGZiLT5iYXNlX2Muc2l6ZSA9IGN0eC0+cV9kYXRhW01US19RX0RBVEFfRFNUXS5zaXplaW1hZ2Vb MV07DQo+ID4gIH0NCj4gPiAtbXRrX3Y0bDJfZGVidWcoMSwgImlkPSVkIEZyYW1lYnVmICBwZmI9 JXAgVkE9JXAgWV9ETUE9JXBhZA0KPiBDX0RNQT0lcGFkIFNpemU9JXp4IGZyYW1lX2NvdW50ID0g JWQiLA0KPiA+IC0gICAgICAgZHN0X2J1Zi0+aW5kZXgsIHBmYiwgcGZiLT5iYXNlX3kudmEsICZw ZmItPmJhc2VfeS5kbWFfYWRkciwNCj4gPiAtICAgICAgICZwZmItPmJhc2VfYy5kbWFfYWRkciwg cGZiLT5iYXNlX3kuc2l6ZSwgY3R4LQ0KPiA+ZGVjb2RlZF9mcmFtZV9jbnQpOw0KPiA+ICttdGtf djRsMl92ZGVjX2RiZygxLCBjdHgsDQo+ID4gKyAgImlkPSVkIEZyYW1lYnVmIHBmYj0lcCBWQT0l cCBZL0NfRE1BPSVwYWRfJXBhZCBTej0lengNCj4gZnJhbWVfY291bnQgPSAlZCIsDQo+ID4gKyAg ZHN0X2J1Zi0+aW5kZXgsIHBmYiwgcGZiLT5iYXNlX3kudmEsICZwZmItPmJhc2VfeS5kbWFfYWRk ciwNCj4gPiArICAmcGZiLT5iYXNlX2MuZG1hX2FkZHIsIHBmYi0+YmFzZV95LnNpemUsIGN0eC0N Cj4gPmRlY29kZWRfZnJhbWVfY250KTsNCj4gPiAgDQo+ID4gIHJldHVybiBwZmI7DQo+ID4gIH0N Cj4gPiBAQCAtMzAwLDcgKzMwMSw3IEBAIHN0YXRpYyB2b2lkIG10a192ZGVjX3dvcmtlcihzdHJ1 Y3Qgd29ya19zdHJ1Y3QNCj4gKndvcmspDQo+ID4gIHZiMl92NGwyX3NyYyA9IHY0bDJfbTJtX25l eHRfc3JjX2J1ZihjdHgtPm0ybV9jdHgpOw0KPiA+ICBpZiAoIXZiMl92NGwyX3NyYykgew0KPiA+ ICB2NGwyX20ybV9qb2JfZmluaXNoKGRldi0+bTJtX2Rldl9kZWMsIGN0eC0+bTJtX2N0eCk7DQo+ ID4gLW10a192NGwyX2RlYnVnKDEsICJbJWRdIG5vIGF2YWlsYWJsZSBzb3VyY2UgYnVmZmVyIiwg Y3R4LT5pZCk7DQo+ID4gK210a192NGwyX3ZkZWNfZGJnKDEsIGN0eCwgIlslZF0gbm8gYXZhaWxh YmxlIHNvdXJjZSBidWZmZXIiLCBjdHgtDQo+ID5pZCk7DQo+ID4gIHJldHVybjsNCj4gPiAgfQ0K PiA+ICANCj4gPiBAQCAtMzA5LDMzICszMTAsMzQgQEAgc3RhdGljIHZvaWQgbXRrX3ZkZWNfd29y a2VyKHN0cnVjdA0KPiB3b3JrX3N0cnVjdCAqd29yaykNCj4gPiAgICAgbTJtX2J1Zi52Yik7DQo+ ID4gIGJzX3NyYyA9ICZkZWNfYnVmX3NyYy0+YnNfYnVmZmVyOw0KPiA+ICANCj4gPiAtbXRrX3Y0 bDJfZGVidWcoMywgIlslZF0gKCVkKSBpZD0lZCwgdmI9JXAiLCBjdHgtPmlkLA0KPiA+IC0gICAg ICAgdmIyX3NyYy0+dmIyX3F1ZXVlLT50eXBlLCB2YjJfc3JjLT5pbmRleCwgdmIyX3NyYyk7DQo+ ID4gK210a192NGwyX3ZkZWNfZGJnKDMsIGN0eCwgIlslZF0gKCVkKSBpZD0lZCwgdmI9JXAiLCBj dHgtPmlkLA0KPiA+ICsgIHZiMl9zcmMtPnZiMl9xdWV1ZS0+dHlwZSwgdmIyX3NyYy0+aW5kZXgs IHZiMl9zcmMpOw0KPiA+ICANCj4gPiAgYnNfc3JjLT52YSA9IHZiMl9wbGFuZV92YWRkcih2YjJf c3JjLCAwKTsNCj4gPiAgYnNfc3JjLT5kbWFfYWRkciA9IHZiMl9kbWFfY29udGlnX3BsYW5lX2Rt YV9hZGRyKHZiMl9zcmMsIDApOw0KPiA+ICBic19zcmMtPnNpemUgPSAoc2l6ZV90KXZiMl9zcmMt PnBsYW5lc1swXS5ieXRlc3VzZWQ7DQo+ID4gIGlmICghYnNfc3JjLT52YSkgew0KPiA+ICB2NGwy X20ybV9qb2JfZmluaXNoKGRldi0+bTJtX2Rldl9kZWMsIGN0eC0+bTJtX2N0eCk7DQo+ID4gLW10 a192NGwyX2VycigiWyVkXSBpZD0lZCBzb3VyY2UgYnVmZmVyIGlzIE5VTEwiLCBjdHgtPmlkLA0K PiA+IC0gICAgIHZiMl9zcmMtPmluZGV4KTsNCj4gPiArbXRrX3Y0bDJfdmRlY19lcnIoY3R4LCAi WyVkXSBpZD0lZCBzb3VyY2UgYnVmZmVyIGlzIE5VTEwiLCBjdHgtDQo+ID5pZCwNCj4gPiArICB2 YjJfc3JjLT5pbmRleCk7DQo+ID4gIHJldHVybjsNCj4gPiAgfQ0KPiA+ICANCj4gPiAtbXRrX3Y0 bDJfZGVidWcoMywgIlslZF0gQml0c3RyZWFtIFZBPSVwIERNQT0lcGFkIFNpemU9JXp4IHZiPSVw IiwNCj4gPiAtICAgICAgIGN0eC0+aWQsIGJzX3NyYy0+dmEsICZic19zcmMtPmRtYV9hZGRyLCBi c19zcmMtPnNpemUsDQo+IHZiMl9zcmMpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2RiZygzLCBjdHgs ICJbJWRdIEJpdHN0cmVhbSBWQT0lcCBETUE9JXBhZCBTaXplPSV6eA0KPiB2Yj0lcCIsDQo+ID4g KyAgY3R4LT5pZCwgYnNfc3JjLT52YSwgJmJzX3NyYy0+ZG1hX2FkZHIsIGJzX3NyYy0+c2l6ZSwg dmIyX3NyYyk7DQo+ID4gIC8qIEFwcGx5IHJlcXVlc3QgY29udHJvbHMuICovDQo+ID4gIHNyY19i dWZfcmVxID0gdmIyX3NyYy0+cmVxX29iai5yZXE7DQo+ID4gIGlmIChzcmNfYnVmX3JlcSkNCj4g PiAgdjRsMl9jdHJsX3JlcXVlc3Rfc2V0dXAoc3JjX2J1Zl9yZXEsICZjdHgtPmN0cmxfaGRsKTsN Cj4gPiAgZWxzZQ0KPiA+IC1tdGtfdjRsMl9lcnIoInZiMiBidWZmZXIgbWVkaWEgcmVxdWVzdCBp cyBOVUxMIik7DQo+ID4gK210a192NGwyX3ZkZWNfZXJyKGN0eCwgInZiMiBidWZmZXIgbWVkaWEg cmVxdWVzdCBpcyBOVUxMIik7DQo+ID4gIA0KPiA+ICByZXQgPSB2ZGVjX2lmX2RlY29kZShjdHgs IGJzX3NyYywgTlVMTCwgJnJlc19jaGcpOw0KPiA+ICBpZiAocmV0ICYmIHJldCAhPSAtRUFHQUlO KSB7DQo+ID4gLW10a192NGwyX2VycigiIDw9PT1bJWRdLCBzcmNfYnVmWyVkXSBzej0weCV6eCBw dHM9JWxsdQ0KPiB2ZGVjX2lmX2RlY29kZSgpIHJldD0lZCByZXNfY2hnPSVkPT09PiIsDQo+ID4g LSAgICAgY3R4LT5pZCwgdmIyX3NyYy0+aW5kZXgsIGJzX3NyYy0+c2l6ZSwNCj4gPiAtICAgICB2 YjJfc3JjLT50aW1lc3RhbXAsIHJldCwgcmVzX2NoZyk7DQo+ID4gK210a192NGwyX3ZkZWNfZXJy KGN0eCwNCj4gPiArICAiWyVkXSBkZWNvZGUgc3JjX2J1ZlslZF0gc3o9MHglenggcHRzPSVsbHUg cmV0PSVkIHJlc19jaGc9JWQiLA0KPiA+ICsgIGN0eC0+aWQsIHZiMl9zcmMtPmluZGV4LCBic19z cmMtPnNpemUsDQo+ID4gKyAgdmIyX3NyYy0+dGltZXN0YW1wLCByZXQsIHJlc19jaGcpOw0KPiA+ ICBpZiAocmV0ID09IC1FSU8pIHsNCj4gPiAgbXV0ZXhfbG9jaygmY3R4LT5sb2NrKTsNCj4gPiAg ZGVjX2J1Zl9zcmMtPmVycm9yID0gdHJ1ZTsNCj4gPiBAQCAtMzYzLDcgKzM2NSw4IEBAIHN0YXRp YyB2b2lkDQo+IHZiMm9wc192ZGVjX3N0YXRlbGVzc19idWZfcXVldWUoc3RydWN0IHZiMl9idWZm ZXIgKnZiKQ0KPiA+ICBzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eCA9IHZiMl9nZXRfZHJ2X3By aXYodmItPnZiMl9xdWV1ZSk7DQo+ID4gIHN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnZiMl92NGwy ID0gdG9fdmIyX3Y0bDJfYnVmZmVyKHZiKTsNCj4gPiAgDQo+ID4gLW10a192NGwyX2RlYnVnKDMs ICJbJWRdICglZCkgaWQ9JWQsIHZiPSVwIiwgY3R4LT5pZCwgdmItDQo+ID52YjJfcXVldWUtPnR5 cGUsIHZiLT5pbmRleCwgdmIpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2RiZygzLCBjdHgsICJbJWRd ICglZCkgaWQ9JWQsIHZiPSVwIiwgY3R4LT5pZCwgdmItDQo+ID52YjJfcXVldWUtPnR5cGUsDQo+ ID4gKyAgdmItPmluZGV4LCB2Yik7DQo+ID4gIA0KPiA+ICBtdXRleF9sb2NrKCZjdHgtPmxvY2sp Ow0KPiA+ICB2NGwyX20ybV9idWZfcXVldWUoY3R4LT5tMm1fY3R4LCB2YjJfdjRsMik7DQo+ID4g QEAgLTM3NCw5ICszNzcsOSBAQCBzdGF0aWMgdm9pZA0KPiB2YjJvcHNfdmRlY19zdGF0ZWxlc3Nf YnVmX3F1ZXVlKHN0cnVjdCB2YjJfYnVmZmVyICp2YikNCj4gPiAgLyogSWYgYW4gT1VUUFVUIGJ1 ZmZlciwgd2UgbWF5IG5lZWQgdG8gdXBkYXRlIHRoZSBzdGF0ZSAqLw0KPiA+ICBpZiAoY3R4LT5z dGF0ZSA9PSBNVEtfU1RBVEVfSU5JVCkgew0KPiA+ICBjdHgtPnN0YXRlID0gTVRLX1NUQVRFX0hF QURFUjsNCj4gPiAtbXRrX3Y0bDJfZGVidWcoMSwgIkluaXQgZHJpdmVyIGZyb20gaW5pdCB0byBo ZWFkZXIuIik7DQo+ID4gK210a192NGwyX3ZkZWNfZGJnKDEsIGN0eCwgIkluaXQgZHJpdmVyIGZy b20gaW5pdCB0byBoZWFkZXIuIik7DQo+ID4gIH0gZWxzZSB7DQo+ID4gLW10a192NGwyX2RlYnVn KDMsICJbJWRdIGFscmVhZHkgaW5pdCBkcml2ZXIgJWQiLCBjdHgtPmlkLCBjdHgtDQo+ID5zdGF0 ZSk7DQo+ID4gK210a192NGwyX3ZkZWNfZGJnKDMsIGN0eCwgIlslZF0gYWxyZWFkeSBpbml0IGRy aXZlciAlZCIsIGN0eC0+aWQsDQo+IGN0eC0+c3RhdGUpOw0KPiA+ICB9DQo+ID4gIH0NCj4gPiAg DQo+ID4gQEAgLTM5Myw3ICszOTYsNyBAQCBzdGF0aWMgaW50IG10a192Y29kZWNfZGVjX2N0cmxz X3NldHVwKHN0cnVjdA0KPiBtdGtfdmNvZGVjX2N0eCAqY3R4KQ0KPiA+ICANCj4gPiAgdjRsMl9j dHJsX2hhbmRsZXJfaW5pdCgmY3R4LT5jdHJsX2hkbCwgTlVNX0NUUkxTKTsNCj4gPiAgaWYgKGN0 eC0+Y3RybF9oZGwuZXJyb3IpIHsNCj4gPiAtbXRrX3Y0bDJfZXJyKCJ2NGwyX2N0cmxfaGFuZGxl cl9pbml0IGZhaWxlZFxuIik7DQo+ID4gK210a192NGwyX3ZkZWNfZXJyKGN0eCwgInY0bDJfY3Ry bF9oYW5kbGVyX2luaXQgZmFpbGVkXG4iKTsNCj4gPiAgcmV0dXJuIGN0eC0+Y3RybF9oZGwuZXJy b3I7DQo+ID4gIH0NCj4gPiAgDQo+ID4gQEAgLTQwMiw3ICs0MDUsOCBAQCBzdGF0aWMgaW50IG10 a192Y29kZWNfZGVjX2N0cmxzX3NldHVwKHN0cnVjdA0KPiBtdGtfdmNvZGVjX2N0eCAqY3R4KQ0K PiA+ICANCj4gPiAgdjRsMl9jdHJsX25ld19jdXN0b20oJmN0eC0+Y3RybF9oZGwsICZjZmcsIE5V TEwpOw0KPiA+ICBpZiAoY3R4LT5jdHJsX2hkbC5lcnJvcikgew0KPiA+IC1tdGtfdjRsMl9lcnIo IkFkZGluZyBjb250cm9sICVkIGZhaWxlZCAlZCIsIGksIGN0eC0NCj4gPmN0cmxfaGRsLmVycm9y KTsNCj4gPiArbXRrX3Y0bDJfdmRlY19lcnIoY3R4LCAiQWRkaW5nIGNvbnRyb2wgJWQgZmFpbGVk ICVkIiwgaSwNCj4gPiArICBjdHgtPmN0cmxfaGRsLmVycm9yKTsNCj4gPiAgcmV0dXJuIGN0eC0+ Y3RybF9oZGwuZXJyb3I7DQo+ID4gIH0NCj4gPiAgfQ0KPiA+IEBAIC00MjEsMTEgKzQyNSwxMSBA QCBzdGF0aWMgaW50IGZvcHNfbWVkaWFfcmVxdWVzdF92YWxpZGF0ZShzdHJ1Y3QNCj4gbWVkaWFf cmVxdWVzdCAqbXJlcSkNCj4gPiAgLyogV2UgZXhwZWN0IGV4YWN0bHkgb25lIGJ1ZmZlciB3aXRo IHRoZSByZXF1ZXN0ICovDQo+ID4gIGJyZWFrOw0KPiA+ICBjYXNlIDA6DQo+ID4gLW10a192NGwy X2RlYnVnKDEsICJObyBidWZmZXIgcHJvdmlkZWQgd2l0aCB0aGUgcmVxdWVzdCIpOw0KPiA+ICtw cl9kZWJ1ZygiW01USyBWQ09ERUNdIE5vIGJ1ZmZlciBwcm92aWRlZCB3aXRoIHRoZSByZXF1ZXN0 Iik7DQo+ID4gDQo+IEkgc3VnZ2VzdCBmb2xsb3dpbmcgdGhlIHNhbWUgZm9ybWF0IGFzIHRoZSBt YWNybywgIjxkZXZuYW1lPjoNCj4gW01US19WNEwyXVtFUlJPUl0iLCB5b3UgY2FuIHByb2JhYmx5 IGhhdmUgYSBtYWNybyBmb3IgdGhhdA0KPiBmb3JtYXR0aW5nLiBUaGlzDQo+IHdvdWxkIGVuc3Vy ZSBjb25zaXRlbmN5IGZvciBhbGwgdGhlIHRyYWNlIHdpdGhvdXQgY29udGV4dC4gU29tZSBvZg0K PiB0aGUgdHJhY2UNCj4gZG9uJ3QgZXZlbiBuYW1lIGFueXRoaW5nIE1USy9WQ09ERUMsIGxpa2Ug YXYxX2Vycm9yOiBwcmVmaXguIEknZCBsaWtlDQo+IHRvIHNlZQ0KPiB0aGVzZSBmaXhlZC4NCj4g DQo+IHByX2RlYnVnKE1US19EQkdfU1RSICJObyBidWZmZXIgcHJvdmlkZWQgd2l0aC4uLiIpOw0K PiANCj4gT3IgYWRkIC4uLm5vX2N0eCgpIGRlYnVnIG1hY3JvLCBwcmVwZW5kaW5nIHRoZSBzdHJp bmcgPyBUaGlzIHdvdWxkIGJlDQo+IHVwIHRvIHlvdXINCj4gcHJlZmVyZW5jZS4NCj4gDQo+IHJl Z2FyZHMsDQo+IE5pY29sYXMNCj4gDQpGb3IgcHJfZGVidWcgYW5kIHByX2VyciBvbmx5IGJlIHVz ZWQgZm9yIHNldmVyYWwgZnVuY3Rpb25zLiBQcmVmZXIgdG8NCmFkZCB0d28gbWFjcm8gZm9yIHZj b2RlYyBhbmQgdjRsMiBkZWJ1Zy4NCg0KI2RlZmluZSBNVEtfREJHX1ZDT0RFQ19TVFIgIltNVEtf VkNPREVDXSINCiNkZWZpbmUgTVRLX0RCR19WNEwyX1NUUiAiW01US19WNEwyXSINCg0KQmVzdCBS ZWdhcmRzLA0KWXVuZmVpIERvbmcNCg0KDQo+ID4gIA0KPiA+ICAvKioNCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvdmRlY192cHVfaWYuYw0K PiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL3ZkZWNfdnB1X2lmLmMN Cj4gPiBpbmRleCBhYjE1ZWU2ZTIwMDUuLmQ4MjM5MTQxMWJhMSAxMDA2NDQNCj4gPiAtLS0gYS9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy92ZGVjX3ZwdV9pZi5jDQo+ID4g KysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvdmRlY192cHVfaWYu Yw0KPiA+IEBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyB2b2lkIHZwdV9kZWNfaXBpX2hhbmRsZXIo dm9pZCAqZGF0YSwNCj4gdW5zaWduZWQgaW50IGxlbiwgdm9pZCAqcHJpdikNCj4gPiAgKHVuc2ln bmVkIGxvbmcpbXNnLT5hcF9pbnN0X2FkZHI7DQo+ID4gIA0KPiA+ICBpZiAoIXZwdSkgew0KPiA+ IC1tdGtfdjRsMl9lcnIoImFwX2luc3RfYWRkciBpcyBOVUxMLCBkaWQgdGhlIFNDUCBoYW5nIG9y IGNyYXNoPyIpOw0KPiA+ICttdGtfdjRsMl92ZGVjX2Vycih2cHUtPmN0eCwgImFwX2luc3RfYWRk ciBpcyBOVUxMLCBkaWQgdGhlIFNDUA0KPiBoYW5nIG9yIGNyYXNoPyIpOw0KPiA+ICByZXR1cm47 DQo+ID4gIH0NCj4gPiAgDQo+IA0KPiANCg==