Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp11550789rwl; Tue, 3 Jan 2023 00:36:42 -0800 (PST) X-Google-Smtp-Source: AMrXdXsiou5vinh/ZA89H+gbgQXoLE0AxXnjEWkARDvS4iUvGXIX+ME81EOKTBneskRjYPZKXDp3 X-Received: by 2002:a17:902:ce04:b0:189:b4d0:aee with SMTP id k4-20020a170902ce0400b00189b4d00aeemr58403328plg.67.1672735002079; Tue, 03 Jan 2023 00:36:42 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1672735002; cv=pass; d=google.com; s=arc-20160816; b=vRqrG4M5trn6DS4HlIDy0R3hjgzoRIlcAuxeWFJ3tLGfkJUYTFleUtiVH24vy1zWG9 uUSGZH0RVwrUqsZKMr+GMthE4wMN5Ng8a0Tqlu81Kc441fHtTSaP8yFvlnlz7zb0ZtXG HydkOjmalhO273oatc2Nwqt3uC+NL8QQcV7rm3rde+aS+2pHdgZkS4Z+LRMY/bWP3Mmw 2fYnkU2GwyzSd/SHBKZUwgaIY81TaKanL7w7eGd/RFUu8XUHrykYSapaFXxsomnnkPl5 To7VxdDrYjvr6xUOnJTDYt+7cRmJ/x97hGWWmAszzgHyMvf4L9cx9z1SUjBwZis2Yj1Y 2STA== 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=VU5IuiYBKOgIXvQihKB9u5+sOFzypN8nZUIAXrqxdCI=; b=AZBI0Dd0CNCy5hM41c1pcc/f0DuWwPdkU4Fz7MF7ipgqt66JcxIWRIH+xdQAQdbExW F3b1IOY42PlxeB1M21aTinzw1gA7ItOypFXa5frZze9baxc9pXGNtk/2443Jbk2KSkmA PBXl3R0RleOp7gq0eiIpHbLy1m6x011FXv79jcUHuzQD9oOEnIJKW1hNmJEmxMvr9S3m olprvEE/760pJTTctT5t7sZyv1j/5Z6T1CnOCOqpnMvAcqn6dBljfmC23Bkm7FB/qacf 4U64JVdmn+mAdmH3bq7rXSTP3ju6fWzD+uVSO1GTqwnMxxx3FIHj/AwlxbRKBigZlSV0 onQw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b="n/99KmaO"; dkim=pass header.i=@mediateko365.onmicrosoft.com header.s=selector2-mediateko365-onmicrosoft-com header.b=Ptf+GaKm; 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 d14-20020a170903230e00b001836e510540si17655024plh.114.2023.01.03.00.36.33; Tue, 03 Jan 2023 00:36:42 -0800 (PST) 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="n/99KmaO"; dkim=pass header.i=@mediateko365.onmicrosoft.com header.s=selector2-mediateko365-onmicrosoft-com header.b=Ptf+GaKm; 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 S236631AbjACH5o (ORCPT + 61 others); Tue, 3 Jan 2023 02:57:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59448 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229822AbjACH5m (ORCPT ); Tue, 3 Jan 2023 02:57:42 -0500 Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C1C87D5B; Mon, 2 Jan 2023 23:57:35 -0800 (PST) X-UUID: 40742592020a486db05c0f90535d02eb-20230103 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=VU5IuiYBKOgIXvQihKB9u5+sOFzypN8nZUIAXrqxdCI=; b=n/99KmaONH9yi0skTPV/FIVSZHOZQ0eIkjr9y1qxOWSGT9HafxofMIGuQY2lGrpMcPyXBnEl3eZiCSJEfWrUNrPxDSXJ0Bhoz6RF6w/5ZhiKc9OJD5GDmnqE7fMYgn6ZMBhaOEqk95zzDoPGKt+Ci+HpRao3IXFdhgHP9nrSlEo=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.16,REQID:e9a6ec2a-6ba7-40ce-8a88-ef1c6343d343,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTION :release,TS:-5 X-CID-INFO: VERSION:1.1.16,REQID:e9a6ec2a-6ba7-40ce-8a88-ef1c6343d343,IP:0,URL :0,TC:0,Content:0,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTION:r elease,TS:-5 X-CID-META: VersionHash:09771b1,CLOUDID:a5bea3f4-ff42-4fb0-b929-626456a83c14,B ulkID:230103155729QY4EBXJZ,BulkQuantity:1,Recheck:0,SF:38|17|19|102,TC:nil ,Content:0,EDM:-3,IP:nil,URL:0,File:nil,Bulk:40,QS:nil,BEC:nil,COL:1,OSI:0 ,OSA:0 X-CID-BVR: 3,FCT|OSH X-UUID: 40742592020a486db05c0f90535d02eb-20230103 Received: from mtkcas11.mediatek.inc [(172.21.101.40)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1000023669; Tue, 03 Jan 2023 15:57:29 +0800 Received: from mtkmbs10n1.mediatek.inc (172.21.101.34) by mtkmbs11n2.mediatek.inc (172.21.101.187) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.792.15; Tue, 3 Jan 2023 15:57:27 +0800 Received: from APC01-SG2-obe.outbound.protection.outlook.com (172.21.101.239) by mtkmbs10n1.mediatek.com (172.21.101.34) with Microsoft SMTP Server id 15.2.792.15 via Frontend Transport; Tue, 3 Jan 2023 15:57:27 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nweHWJYr8MYGGlxWmzRgcPF+LG86OTX3mNSABOMafTluwSKY+f6ZYhWTatXyif/uDfZOzW4WQFggZC0H46yg0CIsFSXQCwR7eoyAM91/45RblyC4m4FJxNVBLF9/0XPZvMvVikLc/hHf2jZh/eGZ2ZcKHtskeE2DF7uT4cWo4ixGcjzKjpzv9efseY6tJVPRLINCbdJolEp764i928JkpbRmyTFztFlJQFZru87NJ2uVP56+yo34GVBMpRZBXPJhd0Qfaru4dH2rAXS9Ky1AYALreDfDHdz7j5up1BV24AJjJhSnRKIG5c2Lz8uuSh8b7GFA9rmrbOmioZBnbkKHVA== 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=VU5IuiYBKOgIXvQihKB9u5+sOFzypN8nZUIAXrqxdCI=; b=VFurf6ihAjfrShwlLeke/v67e5biI52G9ZR4px0tfvr4i42KOez/Q7x+IGb7eXo/QCxaVfePgGWuvlz0ICWZod8kirEdw/S1JcrzeCHd5BKdkYoMKzwsxQYsKmCYRhoIoo0f8jKBR608z3y9L9kBFnWHEwxNBdz56qlraST2xm5sin5aA7A+NgXS9aZnPel96IXweVab9E1s0kQAwnjLKAOb3jc9Fk+FsPCNd4xwTe+eNkvqbEPYgfmsgeSLmRVtJe+k8SMkgQuLjCUcjxBltsPLja2GgOwAkRNwZV616WZ+9Ond+w7xYpEjnoljVtn3/7Z+lrpHlFS+xA4bM2oNFA== 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=VU5IuiYBKOgIXvQihKB9u5+sOFzypN8nZUIAXrqxdCI=; b=Ptf+GaKmNIsYq17wf0rDnl2B8r/ZqLbEVHCZ5ffP5rUfTl8er5Se9yrApdwLYjsZklNFNp8snI5/0QrtYp5txg1kNlc2uw1aRyCiOYDEmmjS9as3TEL0W6bRwdDOx0LujtSslj25ZrcYkNgSmEQK+UnHRZY5DXJzFITLhloq710= Received: from PSAPR03MB5590.apcprd03.prod.outlook.com (2603:1096:301:90::8) by TY0PR03MB6354.apcprd03.prod.outlook.com (2603:1096:400:14a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Tue, 3 Jan 2023 07:57:22 +0000 Received: from PSAPR03MB5590.apcprd03.prod.outlook.com ([fe80::6e1c:cfc7:aa12:d73d]) by PSAPR03MB5590.apcprd03.prod.outlook.com ([fe80::6e1c:cfc7:aa12:d73d%8]) with mapi id 15.20.5944.019; Tue, 3 Jan 2023 07:57:21 +0000 From: =?utf-8?B?WGlhb3lvbmcgTHUgKOWNouWwj+WLhyk=?= To: "nicolas@ndufresne.ca" , "andrzej.p@collabora.com" , "robh+dt@kernel.org" , =?utf-8?B?VGlmZmFueSBMaW4gKOael+aFp+ePiik=?= , "mchehab@kernel.org" , =?utf-8?B?WXVuZmVpIERvbmcgKOiRo+S6kemjnik=?= , "tfiga@google.com" , "benjamin.gaignard@collabora.com" , "hverkuil-cisco@xs4all.nl" , "matthias.bgg@gmail.com" , =?utf-8?B?QW5kcmV3LUNUIENoZW4gKOmZs+aZuui/qik=?= , "angelogioacchino.delregno@collabora.com" , "acourbot@chromium.org" CC: =?utf-8?B?TW9ybmluZyBMaW5nICjlh4zmmagp?= , "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , =?utf-8?B?R2VvcmdlIFN1biAo5a2Z5p6XKQ==?= , "stevecho@chromium.org" , "frkoenig@chromium.org" , "devicetree@vger.kernel.org" , "linux-media@vger.kernel.org" , "daniel@ffwll.ch" , "dri-devel@lists.freedesktop.org" , =?utf-8?B?SXJ1aSBXYW5nICjnjovnkZ4p?= , "hsinyi@chromium.org" , "linux-arm-kernel@lists.infradead.org" , Project_Global_Chrome_Upstream_Group Subject: Re: [RFC PATCH v6] media: mediatek: vcodec: support stateless AV1 decoder Thread-Topic: [RFC PATCH v6] media: mediatek: vcodec: support stateless AV1 decoder Thread-Index: AQHY+kxxuH6TRfD420qC2M/XUDI/rq5DD3aAgBLNc4CAABwpgIA2o0AA Date: Tue, 3 Jan 2023 07:57:21 +0000 Message-ID: <46d38958e4572bcda2a19589c50e0f0685ddc7e6.camel@mediatek.com> References: <20221117061742.29702-1-xiaoyong.lu@mediatek.com> <0672e801-1489-f222-2143-e0e7317d7eaf@collabora.com> <8dc5139c-6435-ac71-9de2-a57cabbce5c8@collabora.com> In-Reply-To: <8dc5139c-6435-ac71-9de2-a57cabbce5c8@collabora.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: 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: PSAPR03MB5590:EE_|TY0PR03MB6354:EE_ x-ms-office365-filtering-correlation-id: 82606512-1785-46fb-9492-08daed6024be x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: l+edLuqkkdFncdNUb4oKHiI2osH9rfnRei96//PynU869TCMulqszKzi9dIsp6jy8kU0SZtDcpQF6pgNMOSxCovhPx/GJKJTBfZuTF+Tc63WE6IxHTNx1lvbZ3Y9YVO4bNzDgh7XnBdG+1PvLg4R8KKxoF6pbBVAgsRuzl6HXg/IcwMLDaPhrW5Xn6vt9JumhpY5bs1cLQd8ENLvSB06BgKYbzSylscWXKhaBpxO+eV/TI04mYyabt0M4zLayTOSub5dqbAbdbEnOMCs4p6R6cl0xVk/e3Oqs/nsUWwglcwTaR68l47vauOrQtgn+B0p1LwJGKPVht1sOTuzoZVJr3QRcaNLF9i/KFu26H+2aZoQbsa8s2JQh61uySnmZM9N+Wcj/eT2mjsrexS+6iOg9qDhcCEjk92S6lvU5i4uZBVKHWMjH7hLM78n/LROfHSiiNUi5/MnYla8jY5/FEDngmCU9SenE3YojSvuhJC99+VoFBoC/66LkQ6CSYYFMYN7uT+DhaFloE7E7/iSvFSjmyRHTT8ShLsOtz8kPj6uew2wnezHvALEDqu4T0JFdV0TovWcf04/pN3TLIP+PVRhFVGEckIlGUcNHXieaOIJpFYzYrEyU3AJX40BdKjfU9N2+hN36mQuLKM5lyyIXIOnp5sjDrFeDly5Gq9GM8s99sCwsKp/IB9WFkp/NX+5oJMgcw5Gd2/U5lphiOdvYLXxgsn444+4GeRmy9qyPT56vNBmz/hoKl2sYB2f9q7RGobg x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PSAPR03MB5590.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(376002)(136003)(396003)(346002)(366004)(84040400005)(451199015)(5660300002)(7416002)(4001150100001)(2906002)(8936002)(30864003)(8676002)(4326008)(41300700001)(66899015)(316002)(66476007)(66556008)(76116006)(91956017)(66946007)(110136005)(64756008)(54906003)(66446008)(478600001)(71200400001)(6486002)(2616005)(186003)(26005)(6512007)(107886003)(85182001)(6506007)(83380400001)(122000001)(38100700002)(921005)(38070700005)(86362001)(36756003)(22166006)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TnJNdkNZTXRMK3JrOUFRNkNIYmttazZuVldsRktUcnlJc0IwcURWWkRBTHUz?= =?utf-8?B?SXF6bXM4NHdxM1FSelhNT0hDc3hjOWRrZ3o1MHliRklFVW9WS0RkVlEzU3lG?= =?utf-8?B?bzJzbDQ4ajkza3JHaHhua1orVjRIMWpyN0dJUERScEpuTm4wOGM5MndwRWUv?= =?utf-8?B?TnU2cDZ6SWdOZG9DbEJWSnJYSWsvYUpPYW91RjJVQ0pnSHhxOVBIK1dOR0lm?= =?utf-8?B?bk1TL1k1d1JiUllPWTNiT0VRNlRaZWd5QnM2QlZYNDFhVzJ4ZUpYSkNXTjNk?= =?utf-8?B?RHNRQlZxWXpFV1Z4d0M2a0NPWnpndnIvemtPa21DNWNFOWFQVVUxaHRtL05E?= =?utf-8?B?by9mQU00K012VE1Pakd0ZGVHOGxZOG01dklRSmVieUcwRkczamdxclA3T1FF?= =?utf-8?B?R0FadHJySUdzallYQ2JuU2xUOXdmblJBYkwwb3BnYTdzTWF2K0ZJOW1Qdmx3?= =?utf-8?B?a2lkb3hvNzFrY0YzN3AyOWc0ZHJBYmNBdjl4VHZIYWdZTmRCS05PamR3Wm5l?= =?utf-8?B?ekdlcTlwdUZxVFJuMGpmdEZXL1JCdnhOaHVYS3gvV08wdzhUMzVuL2dRRXpt?= =?utf-8?B?RldhOFZBQ0dKM3Fhbnk3KzloZnpaNFZYaWEzTi9lYVVBRGwzWlpDY2s0SjFZ?= =?utf-8?B?ZFZzUFV5STBmYzUyWWJlcnliUmcvcUx6Qk9qKzRtL0NydU00b0pTMnlsTzkx?= =?utf-8?B?VHFaWktuVENmaXZhRHhkWlhkVm1WVWw5dndkbytmdytiZjF1UmZseHoyZndG?= =?utf-8?B?SWJSNm1EZlY5MHJ0WTRRSUJRMUEvK09XaHFUYnFWbjhYbjE1aWxidzhRK0Q3?= =?utf-8?B?ZmY4d2tvQTRHZnBoaXh3aHpmdjNTbXREck5WS1JNd0tXZ3FQUFEzV3UrQ2dX?= =?utf-8?B?N0FiMmhlWVg1cWVhMnRUNkRnVlUvVng2WjlxejNWYlNkRTBUSHlpbDRjTlJt?= =?utf-8?B?VEg3MCsvalB6REtnSG1CMFM3dlhZa09ubExlRng3WVJmRkdnaGhmK0t2SHZP?= =?utf-8?B?TitXOCtSZWlZQzhoc2U2NDFWdm00aTliR3l3ZlgzQlRxcmZ1dU55Tm4vbjBw?= =?utf-8?B?WnYyY2xUSVJaV0R4UUs4STdlRmgySjFUMG4rNnNsdkZoRGxlRnY2bUpGcTZi?= =?utf-8?B?aXU4K1ZmMHI5ekZwaXRtQlZsc1BrYVRHN1I2cVpyNUdhU3d4ZkN2MFNJL1Bh?= =?utf-8?B?Q3M1TzE4YUFZY0lKOEtSYk5YbDVOM0tOV2ROVklEbllqRTk5OHRLUG4wdnI2?= =?utf-8?B?VHUvbC8rWnZuc0QrVDhHV3NEenBVQ0tRTlZsczRROHFEMXYwWnRsUFBid3dn?= =?utf-8?B?WjZ0em1SY0xXQm9mVnlOMTdNOTVzOXRkUnNjM0wraENPTVJBRVczVU4zbXlG?= =?utf-8?B?R3pqS0NxelgrMDVocHdBR1BYa0Y5SDFlWDRHeFkzUG1CTUd4ZHVycG11ZHpl?= =?utf-8?B?ZDhKaGNab3c5NGpVUXdOSTNQRytlbnlsbWNOY09WNmorbDMyeEVYYjQ0amVG?= =?utf-8?B?SG53eEt6R2MvVHd6NEx4bWZmcXpQNTdtSUNVNW8zSHpQRWF3ODlUeWtnclV1?= =?utf-8?B?TUVTWTlSNXV4aGJlTmMxbGtmWlVKUmxhb0RzSEdlejJtMm05cU11WStFZ1U3?= =?utf-8?B?eS81a3l1emVsSG9pa05PRVNtZGZGcXBXT3pWdkNhQktmeWZORVZuMk5hcFlX?= =?utf-8?B?WEZ1NkFQU3R6elhuWUFEQk5TS003WnhIM3ZPSlQ3UzJaeFc2dFRXV2c5RFNE?= =?utf-8?B?TVMwRnpVeENDUHBHcW5CdTkrelVvNVRXanlUZkFHUzFXLzdqQWFiYlZ2TCtn?= =?utf-8?B?dFJkSkNKU2tRWEhoRzZPdmVKbU1IQXRMQ0NqajVTUjNjVWtLYmJsSHI2ellm?= =?utf-8?B?Qlg1dnNZaC95RVJkbmR6VzdIa1pxRkNOaGlNaWo2dXJHSWMvZVgzeDExcGUr?= =?utf-8?B?YTBNNUNDdmt3MnNLOFl0SER6bGYvK3ZiR2Y1UGhDeWxTdTZGNFVnNjhOY0l0?= =?utf-8?B?RUxjaXNkZUwraDFZbFdwTVVUbVROOTgyQmpxaXMrQzJNYzhBbE8rMFFGMFVq?= =?utf-8?B?YndDekptUVZ3THROMHhhbGtxNGtGY1Y3RSt1VlE3WXdZMnFjR0tyZzVIbjlR?= =?utf-8?B?UWRBb2xuUjlPSGtXN1FXdEoyeUJlVEdwU1V1SEJUaHFJcWVpZTIrRUowclZr?= =?utf-8?B?VFE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <39EAE30496050243B961C5B24B6340F7@apcprd03.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PSAPR03MB5590.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82606512-1785-46fb-9492-08daed6024be X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jan 2023 07:57:21.5303 (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: TSdvzO6SkVFJy3rCV6ik/nLfk+NLs3At+3QtiNNbtaxNfdgeyDqBZLK5WesQ+H4PwF7cWY1LMGYpj8QZiUb5l8n5M59IKpsZSyQqPNYa+Ms= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY0PR03MB6354 X-Spam-Status: No, score=-1.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HK_RANDOM_ENVFROM, HK_RANDOM_FROM,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS, UNPARSEABLE_RELAY 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 SGkgQW5kcnplaiwNCj4gSGksDQo+IA0KPiBXIGRuaXUgMjkuMTEuMjAyMiBvIDEyOjUwLCBYaWFv eW9uZyBMdSAo5Y2i5bCP5YuHKSBwaXN6ZToNCj4gPiBIaSBBbmRyemVqLA0KPiA+IA0KPiA+IFRo YW5rcyBmb3IgeW91ciBjb21tZW50cywgSSBoYXZlIGZpeGVkIGFsbCBleGNlcHQgZm9yIHNvbWUg aXRlbXMNCj4gPiB3aGljaA0KPiA+IG5lZWQgbW9yZSBkaXNjdXNzaW9uIHdpdGggeW91Lg0KPiA+ IA0KPiA+IA0KPiA+IDEuDQo+ID4gPiArICAgIGZvciAoaSA9IDA7IGkgPCBBVjFfTUFYX0ZSQU1F X0JVRl9DT1VOVDsgaSsrKSB7DQo+ID4gPiArICAgICAgICBpZiAoaW5zdGFuY2UtPmNkZltpXS52 YSkNCj4gPiA+ICsgICAgICAgICAgICBtdGtfdmNvZGVjX21lbV9mcmVlKGN0eCwgJmluc3RhbmNl LT5jZGZbaV0pOw0KPiA+ID4gKyAgICAgICAgaW5zdGFuY2UtPmNkZltpXS5zaXplID0gc2l6ZTsN Cj4gPiA+ICsgICAgICAgIHJldCA9IG10a192Y29kZWNfbWVtX2FsbG9jKGN0eCwgJmluc3RhbmNl LT5jZGZbaV0pOw0KPiA+ID4gKyAgICAgICAgaWYgKHJldCkNCj4gPiA+ICsgICAgICAgICAgICBn b3RvIGVycjsNCj4gPiA+ICsgICAgICAgIHdvcmtfYnVmZmVyW2ldLmNkZl9hZGRyLmJ1ZiA9IGlu c3RhbmNlLT5jZGZbaV0uZG1hX2FkZHI7DQo+ID4gPiArICAgICAgICB3b3JrX2J1ZmZlcltpXS5j ZGZfYWRkci5zaXplID0gc2l6ZTsNCj4gPiA+ICsgICAgfQ0KPiA+IA0KPiA+IFRoZSAzIGZvciBs b29wcyBhcmUgc3VwcG9zZWQgdG8gaXRlcmF0ZSBmcm9tIDAgdG8NCj4gPiBBVjFfTUFYX0ZSQU1F X0JVRl9DT1VOVCAtIDEsDQo+ID4gaW5jbHVzaXZlLiBJcyBpdCBwb3NzaWJsZSB0byBtZXJnZSB0 aGVtPw0KPiA+IA0KPiA+IC0tPmNhbiB5b3UgaGVscCB0byBleHBsYWluIG1vcmUgY2xlYXJseSwg YW5kIHdoYXQgIGRvZXMgICIzIiBzdGFuZA0KPiA+IGZvcj8NCj4gPiANCj4gDQo+IEluIHZkZWNf YXYxX3NsaWNlX2FsbG9jX3dvcmtpbmdfYnVmZmVyKCkgdGhlcmUgYXJlIDMgc2ltaWxhciAiZm9y Ig0KPiBsb29wcw0KPiB3aGljaCAoYXJlIHN1cHBvc2VkIHRvKSBpdGVyYXRlIHRoZSBzYW1lIG51 bWJlciBvZiB0aW1lcy4NCj4gSSB3YXMgd29uZGVyaW5nIGlmIHdhcyBwb3NzaWJsZSB0byBjb2xs YXBzZSB0aGVtIGludG8gb25lIGxvb3AuDQpPSyxpdCBjYW4gY29sbGFwc2UgaW50byBvbmUgbG9v cC4NCg0KPiA+IDIuDQo+ID4gPiArDQo+ID4gPiArICAgIHJldCA9IG10a192Y29kZWNfbWVtX2Fs bG9jKGN0eCwgJmluc3RhbmNlLT50aWxlKTsNCj4gPiA+ICsgICAgaWYgKHJldCkNCj4gPiA+ICsg ICAgICAgIGdvdG8gZXJyOw0KPiA+ID4gKw0KPiA+ID4gKyAgICB2c2ktPnRpbGUuYnVmID0gaW5z dGFuY2UtPnRpbGUuZG1hX2FkZHI7DQo+ID4gPiArICAgIHZzaS0+dGlsZS5zaXplID0gc2l6ZTsN Cj4gPiANCj4gPiB2c2ktPnRpbGUuc2l6ZSA9IGluc3RhbmNlLT50aWxlLnNpemU7DQo+ID4gDQo+ ID4gYW5kIG5vdyBpdCBpcyBjbGVhciB0aGUgc2l6ZSBpbiB2c2kgaXMgdGhlIHNhbWUgYXMgdGhl IG9uZSBpbg0KPiA+IGluc3RhbmNlLg0KPiA+IEJUVywgaXMgdnNpLT50aWxlLnNpemUgc3VwcG9z ZWQgdG8gYWx3YXlzIGJlIGVxdWFsIHRvIHRoZSBvbmUgaW4NCj4gPiBpbnN0YW5jZT8NCj4gPiBJ ZiB5ZXM6DQo+ID4gICAgLSBJcyBpbnN0YW5jZSBhdmFpbGFibGUgd2hlbmV2ZXIgd2UgbmVlZCB0 byBhY2Nlc3MgdnNpLQ0KPiA+ID50aWxlLnNpemU/DQo+ID4gICAgLSBXaGF0J3MgdGhlIHBvaW50 IG9mIGR1cGxpY2F0aW5nIHRoaXMgdmFsdWU/IENhbiBpdCBiZSBzdG9yZWQNCj4gPiBpbiBvbmUN Cj4gPiBwbGFjZT8NCj4gPiAgICANCj4gPiAtLT4gdnNpLT50aWxlLnNpemUgaXMgYWx3YXlzIGVx dWFsIHRvIGluc3RhbmNlLT50aWxlLnNpemUsIGJ1dCB0aGV5DQo+ID4gc2hvdWxkIG5vdCBiZSBz dG9yZWQgaW4gb25lIHBsYWNlLiBiZWNhdXNlIHZzaSB3aWxsIGJlIHVzZWQgZm9yDQo+ID4gbWlj cm8tDQo+ID4gcHJvY2Vzc29yLGFuZCBpbnN0YW5jZSBpcyBvbmx5IHVzZWQgaW4ga2VybmVsIHNp ZGUuDQo+IA0KPiBNYWtlcyBzZW5zZS4NCj4gDQo+ID4gQWxzbyBJIGNhbiByZW1vdmUgZm9sbG93 aW5nIHR3byBzdGF0ZW1lbnRzLg0KPiA+ID4gKyAgICB2c2ktPnRpbGUuYnVmID0gaW5zdGFuY2Ut PnRpbGUuZG1hX2FkZHI7DQo+ID4gPiArICAgIHZzaS0+dGlsZS5zaXplID0gc2l6ZTsNCj4gPiAN Cj4gPiBiZWNhdXNlICBpdCB3aWxsIHJlLWFzc2lnbiB2YWx1ZXMgZm9yIGVhY2ggZnJhbWUgYmVm b3JlIGVudGVyaW5nIHRvDQo+ID4gbWljcm8tcHJvY2Vzc29yIGluIHZkZWNfYXYxX3NsaWNlX3Nl dHVwX2xhdF9idWZmZXIuDQo+ID4gICAgDQo+IA0KPiB0aGUgZmV3ZXIgbGluZXMgdG8gcmV2aWV3 IGFuZCBjb21waWxlLCB0aGUgYmV0dGVyIDopDQo+IA0KPiA+IDMuDQo+ID4gPiArc3RhdGljIHZv aWQgdmRlY19hdjFfc2xpY2VfZnJlZV93b3JraW5nX2J1ZmZlcihzdHJ1Y3QNCj4gPiANCj4gPiB2 ZGVjX2F2MV9zbGljZV9pbnN0YW5jZSAqaW5zdGFuY2UpDQo+ID4gPiArew0KPiA+ID4gKyAgICBz dHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eCA9IGluc3RhbmNlLT5jdHg7DQo+ID4gPiArICAgIGlu dCBpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShpbnN0 YW5jZS0+bXYpOyBpKyspDQo+ID4gPiArICAgICAgICBpZiAoaW5zdGFuY2UtPm12W2ldLnZhKQ0K PiA+ID4gKyAgICAgICAgICAgIG10a192Y29kZWNfbWVtX2ZyZWUoY3R4LCAmaW5zdGFuY2UtPm12 W2ldKTsNCj4gPiANCj4gPiBQZXJoYXBzIG10a192Y29kZWNfbWVtX2ZyZWUoKSBjYW4gcHJvcGVy bHkgaGFuZGxlIHRoZSBjYXNlDQo+ID4gDQo+ID4gKCFpbnN0YW5jZS0+bXZbaV0udmEpID8gVGhp cyB3b3VsZCBlbGltaW5hdGUgNyBvZiAyMCBsaW5lcyBvZiBjb2RlDQo+ID4gaW4gdGhpcyBmdW5j dGlvbi4NCj4gPiANCj4gPiAtLT4gSSB0aGluayBpdCB3aWxsIGJlIGJldHRlciB0byBhZGQgdGhp cyAsIGJlY2F1c2UNCj4gPiAxLmlmIG10a192Y29kZWNfbWVtX2ZyZWUgaXMgY2hhbmdlZCBieSBz b21lb25lIGxhdGVyIGFuZCBkb25ub3QNCj4gPiBkbyAgdmENCj4gPiBudWxsIGNoZWNrLCAgaXQg d2lsbCBlbnN1cmUgc2FmZWx5IGluIGNhbGxlci4NCj4gDQo+IFRoZXJlJ3Mgbm8gc3RhYmxlIGlu dGVybmFsIGFwaSBpbiB0aGUga2VybmVsLiBXaG9ldmVyIGNoYW5nZXMNCj4gaW50ZXJuYWwgYXBp LA0KPiB0aGV5IGFyZSByZXNwb25zaWJsZSB0byBtYWtlIHN1cmUgZWl0ZXIgaXRzIHVzZXJzIGFy ZSB1bmFmZmVjdGVkLA0KPiBvciB0byBjaGFuZ2UgYWxsIHVzZXJzIGFjY29yZGluZ2x5LiBBbmQg eW91IGNhbid0IHRoaW5rIG9mIGFsbA0KPiBwb3NzaWJsZQ0KPiBjcmF6eSB3YXlzIHBlb3BsZSBt aWdodCB3YW50IHRvIGNoYW5nZSB0aGUgY29kZSA1IG9yIDEwIG9yIDIwIHllYXJzDQo+IGZyb20g bm93LiBJbiBvdGhlciB3b3JkcywgdHJ5aW5nIHRvIHByZXZlbnQgYSBzaXR1YXRpb24gdGhhdCBk b2VzDQo+IG5vdCBleGlzdCBpbiBleGNoYW5nZSBmb3IgbW9yZSBsaW5lcyBvZiBjb2RlIHNlZW1z IG5vdCBhIGdvb2QgZGVhbC4NCj4gDQo+ID4gMi5JZiBJIGRvbm5vdCBkbyAgdmEgbnVsbCBjaGVj aywgIHRoZXJlIHdpbGwgcHJpbnQgYW4gZXJyb3IgbG9nIGluDQo+ID4gbXRrX3Zjb2RlY19tZW1f ZnJlZSAgd2hlbiB2YSBpcyBudWxsLiBCdXQgaXQgbWF5IGJlIG5vcm1hbCBiZWhpdm9yLg0KPiA+ ICAgICAgIGlmICghbWVtLT52YSkgew0KPiA+ICAgICAgICAgIG10a192NGwyX2VycigiJXMgZG1h X2ZyZWUgc2l6ZT0lbGQgZmFpbGVkISIsDQo+ID4gZGV2X25hbWUoZGV2KSwNCj4gPiAgICAgICAg ICAgICAgICAgICBzaXplKTsNCj4gPiAgICAgICAgICByZXR1cm47DQo+ID4gfQ0KPiA+IHdoYXQg YWJvdXQgeW91ciBvcGluaW9uPw0KPiA+IA0KPiANCj4gV2hhdCBJIG1lYW50IGJ5ICJwcm9wZXJs eSBoYW5kbGluZyB0aGUgTlVMTCBjYXNlIiB3YXMgdG8gYmUgcHJlcGFyZWQNCj4gdG8gaGFuZGxl IHRoZSBOVUxMIGNhc2UgaW4gbXRrX3Zjb2RlY19tZW1fZnJlZSgpLCB0aGF0IGlzIHRvIGFzc3Vt ZQ0KPiB0aGF0IE5VTEwgY2FuIGFzIHdlbGwgYmUgcGFzc2VkIHRvIGl0LiBHaXZlbiBOVUxMIGlz IGFsbG93ZWQsIHRoZXJlJ3MNCj4gbm8gcG9pbnQgaW4gYW5ub3VuY2luZyB0aGF0ICJ3ZSd2ZSBi ZWVuIHBhc3NlZCBhIE5VTEwiLg0KPiBUaGF0J3MgaG93IGtmcmVlKCkgYmVoYXZlcywgZm9yIGV4 YW1wbGUuDQpPSywgSSB3aWxsIHJlbW92ZSBudWxsIGNoZWNrIGhlcmUuDQoNCj4gPiA0Lg0KPiA+ IA0KPiA+ICAgK3N0YXRpYyB2b2lkIHZkZWNfYXYxX3NsaWNlX3NldHVwX2dtKHN0cnVjdCB2ZGVj X2F2MV9zbGljZV9nbQ0KPiA+ICpnbSwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgIHN0cnVj dCB2NGwyX2F2MV9nbG9iYWxfbW90aW9uICpjdHJsX2dtKQ0KPiA+ID4gK3sNCj4gPiA+ICsgICAg dTMyIGksIGo7DQo+ID4gPiArDQo+ID4gPiArICAgIGZvciAoaSA9IDA7IGkgPCBWNEwyX0FWMV9U T1RBTF9SRUZTX1BFUl9GUkFNRTsgaSsrKSB7DQo+ID4gPiArICAgICAgICBnbVtpXS53bXR5cGUg PSBjdHJsX2dtLT50eXBlW2ldOw0KPiA+ID4gKyAgICAgICAgZm9yIChqID0gMDsgaiA8IDY7IGor KykNCj4gPiANCj4gPiBNYXliZSAjZGVmaW5lIHRoaXMgbWFnaWMgNj8NCj4gPiANCj4gPiAtLT4g SSAgc2VlIHVhcGkgIGRyaXZlciB1c2UgbWFnaWMgbnVtYmVyIDYgdG9vLCB3aGljaCBpcyBpbg0K PiA+IHN0cnVjdCB2NGwyX2F2MV9nbG9iYWxfbW90aW9uIHsNCj4gPiAgICAgIF9fdTggZmxhZ3Nb VjRMMl9BVjFfVE9UQUxfUkVGU19QRVJfRlJBTUVdOw0KPiA+ICAgICAgZW51bSB2NGwyX2F2MV93 YXJwX21vZGVsIHR5cGVbVjRMMl9BVjFfVE9UQUxfUkVGU19QRVJfRlJBTUVdOw0KPiA+ICAgICAg X191MzIgcGFyYW1zW1Y0TDJfQVYxX1RPVEFMX1JFRlNfUEVSX0ZSQU1FXVs2XTsNCj4gPiAgICAg IF9fdTggaW52YWxpZDsNCj4gPiB9Ow0KPiA+ICBGcm9tIGF2MSBvZmZpY2lhbCBkb2N1bWVudCBp biA1LjkuMjQgR2xvYmFsIG1vdGlvbiBwYXJhbXMgc3ludGF4DQo+ID4gc2VjdGlvbiwgaXQgYWxz byB1c2UgbWFnaWMgbnVtYmVyIDYuDQo+ID4gDQo+ID4gc28gaSB0aGluayBpdCB3aWxsIG5vdCBu ZWVkIHRvIGNoYW5nZSB0aGlzLg0KPiA+IA0KPiANCj4gZmFpciBlbm91Z2gNCj4gDQo+ID4gNS4N Cj4gPiBzdGF0aWMgdm9pZCB2ZGVjX2F2MV9zbGljZV9zZXR1cF9xdWFudChzdHJ1Y3QNCj4gPiB2 ZGVjX2F2MV9zbGljZV9xdWFudGl6YXRpb24gKnF1YW50LA0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IHY0bDJfYXYxX3F1YW50aXphdGlvbiAqY3RybF9xdWFudCkNCj4gPiA+ ICt7DQo+ID4gPiArICAgIHF1YW50LT5iYXNlX3FfaWR4ID0gY3RybF9xdWFudC0+YmFzZV9xX2lk eDsNCj4gPiA+ICsgICAgcXVhbnQtPmRlbHRhX3F5ZGMgPSBjdHJsX3F1YW50LT5kZWx0YV9xX3lf ZGM7DQo+ID4gPiArICAgIHF1YW50LT5kZWx0YV9xdWRjID0gY3RybF9xdWFudC0+ZGVsdGFfcV91 X2RjOw0KPiA+ID4gKyAgICBxdWFudC0+ZGVsdGFfcXVhYyA9IGN0cmxfcXVhbnQtPmRlbHRhX3Ff dV9hYzsNCj4gPiA+ICsgICAgcXVhbnQtPmRlbHRhX3F2ZGMgPSBjdHJsX3F1YW50LT5kZWx0YV9x X3ZfZGM7DQo+ID4gPiArICAgIHF1YW50LT5kZWx0YV9xdmFjID0gY3RybF9xdWFudC0+ZGVsdGFf cV92X2FjOw0KPiA+ID4gKyAgICBxdWFudC0+cW1feSA9IGN0cmxfcXVhbnQtPnFtX3k7DQo+ID4g PiArICAgIHF1YW50LT5xbV91ID0gY3RybF9xdWFudC0+cW1fdTsNCj4gPiA+ICsgICAgcXVhbnQt PnFtX3YgPSBjdHJsX3F1YW50LT5xbV92Ow0KPiA+IA0KPiA+IENhbiBhIGNvbW1vbiBzdHJ1Y3Qg YmUgaW50cm9kdWNlZCB0byBob2xkIHRoZXNlIHBhcmFtZXRlcnM/DQo+ID4gQW5kIHRoZW4gY29w aWVkIGluIG9uZSBnbz8NCj4gPiANCj4gPiBNYXliZSB0aGVyZSdzIGEgZ29vZCByZWFzb24gdGhl IGNvZGUgaXMgdGhlIHdheSBpdCBpcyBub3cuIEhvd2V2ZXIsDQo+ID4gYSBzZXJpZXMgb2YgImR1 bWIiIGFzc2lnbm1lbnRzIChubyB2YWx1ZSBtb2RpZmljYXRpb25zKSBtYWtlcyBtZQ0KPiA+IHdv bmRlci4NCj4gPiANCj4gPiAgICsgICAgICAgIGNkZWYtPmNkZWZfeV9zdHJlbmd0aFtpXSA9DQo+ ID4gPiArICAgICAgICAgICAgY3RybF9jZGVmLT55X3ByaV9zdHJlbmd0aFtpXSA8PA0KPiA+IA0K PiA+IFNFQ09OREFSWV9GSUxURVJfU1RSRU5HVEhfTlVNX0JJVFMgfA0KPiA+ID4gKyAgICAgICAg ICAgIGN0cmxfY2RlZi0+eV9zZWNfc3RyZW5ndGhbaV07DQo+ID4gPiArICAgICAgICBjZGVmLT5j ZGVmX3V2X3N0cmVuZ3RoW2ldID0NCj4gPiA+ICsgICAgICAgICAgICBjdHJsX2NkZWYtPnV2X3By aV9zdHJlbmd0aFtpXSA8PA0KPiA+IA0KPiA+IFNFQ09OREFSWV9GSUxURVJfU1RSRU5HVEhfTlVN X0JJVFMgfA0KPiA+ID4gKyAgICAgICAgICAgIGN0cmxfY2RlZi0+dXZfc2VjX3N0cmVuZ3RoW2ld Ow0KPiA+ID4gKyAgICB9DQo+ID4gPiArfQ0KPiA+IA0KPiA+IEJvdGggdmRlY19hdjFfc2xpY2Vf c2V0dXBfbGYoKSBhbmQgdmRlY19hdjFfc2xpY2Vfc2V0dXBfY2RlZigpOg0KPiA+IA0KPiA+IEkn bSB3b25kZXJpbmcgaWYgdGhlIHVzZXIgb2Ygc3RydWN0IHZkZWNfYXYxX3NsaWNlX2xvb3BfZmls dGVyIGFuZA0KPiA+IHN0cnVjdA0KPiA+IHZkZWNfYXYxX3NsaWNlX2NkZWYgY291bGQgd29yayB3 aXRoIHRoZSB1QVBJIHZhcmlhbnRzIG9mIHRoZXNlDQo+ID4gc3RydWN0cz8NCj4gPiBJcyB0aGVy ZQ0KPiA+IGEgbmVlZCBmb3IgZHJpdmVyLXNwZWNpZmljIG11dGF0aW9ucz8gKE1heWJlIHRoZXJl IGlzLCB0aGUgZHJpdmVyJ3MNCj4gPiBhdXRob3INCj4gPiBzaG91bGQga25vdykuDQo+ID4gDQo+ ID4gLS0+MS5UaGVyZSBpcyBhIG1lZGlhdGVrIG1hcCBzdHJ1Y3R1cmUgaW4ga2VybmVsIHBhcnQg d2hpY2ggYWxzbw0KPiA+IGhhcw0KPiA+IHRoZSBzYW1lIHN0cnVjdHVyZSBpbiBtaWNyby1wcm9j ZXNzb3IuDQo+ID4gMi5VYXBpIHY0bDIgc3RydWN0dXJlIHdpbGwgbm90IGFjY2VzcyBpbiBtaWNy by1wcm9jZXNzb3IsIGFuZA0KPiA+IG1lZGlhdGVrDQo+ID4gZHJpdmVyIHN0cnVjdHVyZSBtYXkg bm90IGJlIGFsbCB0aGUgc2FtZSB3aXRoIHY0bDIuDQo+ID4gDQo+ID4gc28gdGhlc2Ugd2lsbCBu b3QgbmVlZCB0byBjaGFuZ2UuDQo+IA0KPiBZb3Uga25vdyB5b3VyIGhhcmR3YXJlLiBJZiB5b3Ug c2F5IHNvLCB5b3UgbXVzdCBiZSByaWdodC4NCj4gDQo+ID4gDQo+ID4gNi4NCj4gPiA+ICsgICAg LyogYnMgTlVMTCBtZWFucyBmbHVzaCBkZWNvZGVyICovDQo+ID4gPiArICAgIGlmICghYnMpDQo+ ID4gPiArICAgICAgICByZXR1cm4gdmRlY19hdjFfc2xpY2VfZmx1c2goaF92ZGVjLCBicywgZmIs IHJlc19jaGcpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICBsYXRfYnVmID0gdmRlY19tc2dfcXVldWVf ZHFidWYoJmN0eC0+bXNnX3F1ZXVlLmxhdF9jdHgpOw0KPiA+ID4gKyAgICBpZiAoIWxhdF9idWYp IHsNCj4gPiA+ICsgICAgICAgIG10a192Y29kZWNfZXJyKGluc3RhbmNlLCAiZmFpbGVkIHRvIGdl dCBBVjEgbGF0IGJ1ZlxuIik7DQo+ID4gDQo+ID4gdGhlcmUgZXhpc3RzIHZkZWNfbXNnX3F1ZXVl X2RlaW5pdCgpLiBTaG91bGQgaXQgYmUgY2FsbGVkIGluIHRoaXMNCj4gPiAoYW5kDQo+ID4gc3Vi c2VxdWVudCkgZXJyb3IgcmVjb3ZlcnkgcGF0aChzKT8NCj4gPiANCj4gPiA+ICsgICAgICAgIHJl dHVybiAtRUJVU1k7DQo+ID4gPiArICAgIH0NCj4gPiANCj4gPiAtLT52ZGVjX21zZ19xdWV1ZV9k ZWluaXQgaXMgY2FsbGVkIHdoZW4gZG8gZGVpbml0IG9wZXJhdGlvbiBiZWZvcmUNCj4gPiBzdG9w DQo+ID4gc3RyZWFtaW5nLg0KPiA+IEJ1dCBoZXJlIGlzIGp1c3QgZXJyb3IgaGFuZGxlIGZvciBj dXJyZW50IGZyYW1lLCAgc28gaXQgc2hvdWxkbm90DQo+ID4gY2FsbA0KPiA+IHZkZWNfbXNnX3F1 ZXVlX2RlaW5pdCBoZXJlLg0KPiANCj4gVGhpcyBpcyBjb25mdXNpbmcuIEl0IHdvdWxkIGJlIGJl dHRlciBpZiB2ZGVjX21zZ19xdWV1ZV9kZWluaXQoKSB3ZXJlDQo+IGNhbGxlZCBmcm9tIGFub3Ro ZXIgcGxhY2UsIG5vdCBmcm9tIHRoZSBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQNCj4gcGVyLWZy YW1lLiBUaGUgIm1pcnJvciBsb2NhdGlvbiIgZm9yICJiZWZvcmUgc3RvcCBzdHJlYW1pbmciIHNl ZW1zDQo+ICJhZnRlciBzdGFydCBzdHJlYW1pbmciLCBidXQgSSBkb24ndCBrbm93Lg0KTm93LCB2 ZGVjX21zZ19xdWV1ZV9kZWluaXQoKSBpcyBjYWxsZWQgb25seSBvbmNlIGRydWluZyBvbmUgcGxh eWluZyBhdA0KcHJvcGVybHkgbG9jYXRpb24gd2hpY2ggaXMgbm90IGZyb20gdGhlIGZ1bmN0aW9u IGZvciBwZXItZnJhbWUuIA0KDQo+ID4gNy4NCj4gPiA+ICsgICAgc3JjID0gdjRsMl9tMm1fbmV4 dF9zcmNfYnVmKGluc3RhbmNlLT5jdHgtPm0ybV9jdHgpOw0KPiA+ID4gKyAgICBpZiAoIXNyYykN Cj4gPiA+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ID4gKw0KPiA+ID4gKyAgICBsYXRf YnVmLT5zcmNfYnVmX3JlcSA9IHNyYy0+dmIyX2J1Zi5yZXFfb2JqLnJlcTsNCj4gPiA+ICsgICAg ZHN0ID0gJmxhdF9idWYtPnRzX2luZm87DQo+ID4gDQo+ID4gdGhlICJ0c19pbmZvIiBhY3R1YWxs eSBjb250YWlucyBhIHN0cnVjdCB2YjJfdjRsMl9idWZmZXIuIFdoeSBzdWNoDQo+ID4gYQ0KPiA+ IG5hbWU/DQo+ID4gDQo+ID4gLS0+InRzX2luZm8iIGlzIG5vdCBuYW1lZCBieSBtZSwgYW5kIGkg anVzdCB1c2UgaXQgaGVyZSwgc28gaSB3aWxsDQo+ID4gbm90DQo+ID4gcmVuYW1lIGl0Lg0KPiA+ IA0KPiANCj4gZmFpciBlbm91Z2gNCj4gDQo+ID4gSSBhc2sgdGhlIG93bmVyIHdoeSBpdCBpcyBu YW1lZCB3aXRoIHRzX2luZm8gYW5kIHRoZSBhbnN3ZXIgaXM6DQo+ID4gIlRoaXMgcGFyYW1lIGlz IHVzZWQgdG8gc3RvcmUgdGltZXN0YW1wIHJlbGVhdGVkIGluZm9ybWF0aW9uIGZyb20NCj4gPiBv dXRwdXQgcXVldWUgdG8gY2FwdHVyZSBxdWV1ZS4iDQo+IA0KPiBTbyB5b3UgcmVhY2hlZCBvdXQg dG8gdGhlIGF1dGhvciBvZiB0aGUgInRzX2luZm8iIG5hbWUuDQo+IEkgaGF2ZW4ndCBzZWVuIHlv dSBhc2tpbmcgaGVyZSAobWF5YmUgSSBoYXZlbid0IG5vdGljZWQ/KS4NCj4gSXQgaXMgYmV0dGVy IHRvIGFzayBzdWNoIGEgcXVlc3Rpb24gaW4gdGhlIG1haWxpbmcgbGlzdCByYXRoZXIgdGhhbg0K PiBpbiBhIHByaXZhdGUgbWVzc2FnZS4NClRoZSBhdXRob3IgaXMgbXkgY29sbGVhZ3VlLCBzbyBJ IGNhbiBhc2sgaGltIGRpcmVjdGx5Lg0KPiA+IA0KPiA+IDguDQo+ID4gPiArICAgIC8qIGZyYW1l IGhlYWRlciAqLw0KPiA+ID4gKyAgICBjdHJsX2ZoID0gKHN0cnVjdCB2NGwyX2N0cmxfYXYxX2Zy YW1lICopDQo+ID4gPiArICAgICAgICAgIHZkZWNfYXYxX2dldF9jdHJsX3B0cihpbnN0YW5jZS0+ Y3R4LA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgVjRMMl9DSURfU1RBVEVMRVNTX0FWMV9G UkFNRSk7DQo+ID4gPiArICAgIGlmIChJU19FUlIoY3RybF9maCkpDQo+ID4gPiArICAgICAgICBy ZXR1cm4gUFRSX0VSUihjdHJsX2ZoKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgY3RybF9zZXEgPSAo c3RydWN0IHY0bDJfY3RybF9hdjFfc2VxdWVuY2UgKikNCj4gPiA+ICsgICAgICAgICAgIHZkZWNf YXYxX2dldF9jdHJsX3B0cihpbnN0YW5jZS0+Y3R4LA0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgIFY0TDJfQ0lEX1NUQVRFTEVTU19BVjFfU0VRVUVOQ0UpOw0KPiA+ID4gKyAgICBpZiAoSVNf RVJSKGN0cmxfc2VxKSkNCj4gPiA+ICsgICAgICAgIHJldHVybiBQVFJfRVJSKGN0cmxfc2VxKTsN Cj4gPiANCj4gPiBKdXN0IHRvIG1ha2Ugc3VyZTogSSBhc3N1bWUgcmVxdWVzdCBhcGkgaXMgdXNl ZD8gSWYgc28sIGRvZXMgdmRlYydzDQo+ID4gZnJhbWV3b3JrDQo+ID4gZW5zdXJlIHRoYXQgdjRs Ml9jdHJsX3JlcXVlc3Rfc2V0dXAoKSBoYXMgYmVlbiBjYWxsZWQ/IEl0DQo+ID4gaW5mbHVlbmNl cw0KPiA+IHdoYXQncw0KPiA+IGFjdHVhbGx5IGluIGN0cmwtPnBfY3VyLnAgKGN1cnJlbnQgb3Ig cHJldmlvdXMgdmFsdWUpLCBhbmQgdGhlDQo+ID4gdmRlY19hdjFfZ2V0X2N0cmxfcHRyKCkgd3Jh cHBlciByZXR1cm5zIGN0cmwtPnBfY3VyLnAuDQo+ID4gDQo+ID4gLS0+djRsMl9jdHJsX3JlcXVl c3Rfc2V0dXAoKSBpcyBjYWxsZWQgaW4gIG10a192ZGVjX3dvcmtlciB3aGljaCBpcw0KPiA+IGJl Zm9yZSB0aGlzIGZ1bmN0aW9uLg0KPiA+IA0KPiANCj4gZ3JlYXQNCj4gDQo+ID4gOS5lbnVtIHZk ZWNfYXYxX3NsaWNlX3Jlc29sdXRpb25fbGV2ZWwgbGV2ZWw7DQo+ID4gPiA+ICt1MzIgbWF4X3Ni X3csIG1heF9zYl9oLCBtYXhfdywgbWF4X2gsIHcsIGg7DQo+ID4gPiA+ICtzaXplX3Qgc2l6ZTsN Cj4gPiA+ID4gK2ludCBpLCByZXQ7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3cgPSB2c2ktPmZyYW1l LnVoLmZyYW1lX3dpZHRoOw0KPiA+ID4gPiAraCA9IHZzaS0+ZnJhbWUudWguZnJhbWVfaGVpZ2h0 Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICtpZiAodyA+IFZDT0RFQ19ERUNfNEtfQ09ERURfV0lEVEgg fHwgaCA+DQo+ID4gPiA+IFZDT0RFQ19ERUNfNEtfQ09ERURfSEVJR0hUKQ0KPiA+ID4gPiArLyog OEsgKi8NCj4gPiA+ID4gK3JldHVybiAtRUlOVkFMOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtpZiAo dyA+IE1US19WREVDX01BWF9XIHx8IGggPiBNVEtfVkRFQ19NQVhfSCkgew0KPiA+ID4gPiArLyog NEsgKi8NCj4gPiA+ID4gK2xldmVsID0gQVYxX1JFU180SzsNCj4gPiA+ID4gK21heF93ID0gVkNP REVDX0RFQ180S19DT0RFRF9XSURUSDsNCj4gPiA+ID4gK21heF9oID0gVkNPREVDX0RFQ180S19D T0RFRF9IRUlHSFQ7DQo+ID4gPiA+ICt9IGVsc2Ugew0KPiA+ID4gPiArLyogRkhEICovDQo+ID4g PiA+ICtsZXZlbCA9IEFWMV9SRVNfRkhEOw0KPiA+ID4gPiArbWF4X3cgPSBNVEtfVkRFQ19NQVhf VzsNCj4gPiA+ID4gK21heF9oID0gTVRLX1ZERUNfTUFYX0g7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ ICsNCj4gPiA+ID4gK2lmIChsZXZlbCA9PSBpbnN0YW5jZS0+bGV2ZWwpDQo+ID4gPiA+ICtyZXR1 cm4gMDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArbXRrX3Zjb2RlY19kZWJ1ZyhpbnN0YW5jZSwgInJl c29sdXRpb24gbGV2ZWwgY2hhbmdlZCBmcm9tICV1DQo+ID4gPiA+IHRvDQo+ID4gPiA+ICV1LCAl dXgldSIsDQo+ID4gPiA+ICsgaW5zdGFuY2UtPmxldmVsLCBsZXZlbCwgdywgaCk7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gK21heF9zYl93ID0gRElWX1JPVU5EX1VQKG1heF93LCAxMjgpOw0KPiA+ID4g PiArbWF4X3NiX2ggPSBESVZfUk9VTkRfVVAobWF4X2gsIDEyOCk7DQo+ID4gPiA+ICtzaXplID0g bWF4X3NiX3cgKiBtYXhfc2JfaCAqIFNaXzFLOw0KPiA+ID4gPiArZm9yIChpID0gMDsgaSA8IEFW MV9NQVhfRlJBTUVfQlVGX0NPVU5UOyBpKyspIHsNCj4gPiA+ID4gK2lmIChpbnN0YW5jZS0+bXZb aV0udmEpDQo+ID4gPiA+ICttdGtfdmNvZGVjX21lbV9mcmVlKGN0eCwgJmluc3RhbmNlLT5tdltp XSk7DQo+ID4gPiA+ICtpbnN0YW5jZS0+bXZbaV0uc2l6ZSA9IHNpemU7DQo+ID4gPiA+ICtyZXQg PSBtdGtfdmNvZGVjX21lbV9hbGxvYyhjdHgsICZpbnN0YW5jZS0+bXZbaV0pOw0KPiA+ID4gPiAr aWYgKHJldCkNCj4gPiA+ID4gK2dvdG8gZXJyOw0KPiA+ID4gDQo+ID4gPiBQbGVhc2UgaWdub3Jl IHRoaXMgY29tbWVudCBpZiB0aGlzIGhhcyBiZWVuIGRpc2N1c3NlZCBhbmQNCj4gPiA+IHNldHRs ZWQuDQo+ID4gPiBNYXliZSBpdCdzIGp1c3QgbWUsIGJ1dCBJIGZlZWwgaXQgaXMgaWRpb21hdGlj IGluIHRoZSBrZXJuZWwgdG8NCj4gPiA+IHVuZG8gYWxsIHByZXZpb3VzIGFsbG9jYXRpb25zIGlm IGF0IHNvbWUgaXRlcmF0aW9uIHdlIGZhaWwuIEhlcmUNCj4gPiA+IGENCj4gPiA+IGRpZmZlcmVu dA0KPiA+ID4gYXBwcm9hY2ggaXMgdGFrZW46IHdlIHN0b3AgaXRlcmF0aW5nIGFuZCByZXR1cm4g YW4gZXJyb3IsIGFuZA0KPiA+ID4gZnJlZQ0KPiA+ID4gbmV4dCB0aW1lDQo+ID4gPiB3ZSBhcmUg Y2FsbGVkLiBXaHk/DQpUaGUgYnVmZmVyIHNpemUgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIHBp Y3R1cmUgd2lkdGggYW5kIGhlaWdodCwgc28NCndoZW4gcmVzb2x1dGlvbiBpcyBjaGFuZ2VkLCBp dCB3aWxsIHJlLWFsbG9jYXRlIHRoZSBidWZmZXIuDQo+ID4gVGhhbmtzDQo+ID4gQmVzdCBSZWdh cmRzDQo+ID4geGlhb3lvbmcgTHUNCj4gPiANCj4gDQo+IFBsZWFzZSBhdm9pZCB0b3AtcG9zdGlu Zy4gSXQgaXMgZWFzaWVyIGZvciB5b3VyIHJldmlld2VyIHRvIHJlYWQgeW91cg0KPiBhbnN3ZXJz DQo+IGlubGluZS4gQW5kLCBhY3R1YWxseSwgaXQgaXMgZWFzaWVyIGZvciB5b3Ugbm90IGhhdmlu ZyB0byBmaW5kIHRoZQ0KPiByZWxldmFudA0KPiBmcmFnbWVudHMsIGNvcHkgYW5kIHRoZW4gcGFz dGUgb24gdG9wLiBJbnN0ZWFkLCB0cnkgYW5zd2VyaW5nIGp1c3QNCj4gYmVsb3cNCj4gcmV2aWV3 ZXIncyBjb21tZW50cy4NCj4gDQpUaGFua3MsIGkgd2lsbCBwYXkgYXR0ZW50aW9uIHRvIHRoaXMu DQo+IEFsc28sIHdoZW4gY29tbXVuaWNhdGluZyBvbiB0aGUgbWFpbGluZyBsaXN0IGVsaW1pbmF0 ZSB0aGUgZm9vdGVyDQo+IHdoaWNoIG1ha2VzIHRoZSByZWFkZXJzIHdvbmRlciBpZiB0aGV5IGFy ZSBhbGxvd2VkIHRvIHJlYWQgeW91cg0KPiBtZXNzYWdlcy4NCj4gDQo+IFJlZ2FyZHMsDQo+IA0K PiBBbmRyemVqDQo+IA0KPiA+IA0KPiA+IE9uIFRodSwgMjAyMi0xMS0xNyBhdCAxMzo0MiArMDEw MCwgQW5kcnplaiBQaWV0cmFzaWV3aWN6IHdyb3RlOg0KPiA+ID4gSGkgWGlhb3lvbmcgTHUsDQo+ ID4gPiANCj4gPiA+IFNvcnJ5IGFib3V0IGNoaW1pbmcgaW4gb25seSBhdCB2Ni4gUGxlYXNlIHNl ZSBpbmxpbmUgYmVsb3cuDQo+ID4gPiANCj4gPiA+IEFuZHJ6ZWoNCj4gPiA+IA0KPiA+ID4gVyBk bml1IDE3LjExLjIwMjIgbyAwNzoxNywgWGlhb3lvbmcgTHUgcGlzemU6DQo+ID4gPiA+IEFkZCBt ZWRpYXRlayBhdjEgZGVjb2RlciBsaW51eCBkcml2ZXIgd2hpY2ggdXNlIHRoZSBzdGF0ZWxlc3MN Cj4gPiA+ID4gQVBJDQo+ID4gPiA+IGluDQo+ID4gPiA+IE1UODE5NS4NCj4gPiA+ID4gDQo+ID4g PiA+IFNpZ25lZC1vZmYtYnk6IFhpYW95b25nIEx1PHhpYW95b25nLmx1QG1lZGlhdGVrLmNvbT4N Cj4gPiA+ID4gLS0tDQo+ID4gPiA+IENoYW5nZXMgZnJvbSB2NToNCj4gPiA+ID4gDQo+ID4gPiA+ IC0gY2hhbmdlIGF2MSBQUk9GSUxFIGFuZCBMRVZFTCBjZmcNCj4gPiA+ID4gLSB0ZXN0IGJ5IGF2 MSBmbHVzdGVyLCByZXN1bHQgaXMgMTczLzIzOQ0KPiA+ID4gPiANCj4gPiA+ID4gQ2hhbmdlcyBm cm9tIHY0Og0KPiA+ID4gPiANCj4gPiA+ID4gLSBjb252ZXJ0IHZiMl9maW5kX3RpbWVzdGFtcCB0 byB2YjJfZmluZF9idWZmZXINCj4gPiA+ID4gLSB0ZXN0IGJ5IGF2MSBmbHVzdGVyLCByZXN1bHQg aXMgMTczLzIzOQ0KPiA+ID4gPiANCj4gPiA+ID4gQ2hhbmdlcyBmcm9tIHYzOg0KPiA+ID4gPiAN Cj4gPiA+ID4gLSBtb2RpZnkgY29tbWVudCBmb3Igc3RydWN0IHZkZWNfYXYxX3NsaWNlX3Nsb3QN Cj4gPiA+ID4gLSBhZGQgZGVmaW5lIFNFR19MVkxfQUxUX1ENCj4gPiA+ID4gLSBjaGFuZ2UgdXNl X2xyL3VzZV9jaHJvbWFfbHIgcGFyc2UgZnJvbSBhdjEgc3BlYw0KPiA+ID4gPiAtIHVzZSBBUlJB WV9TSVpFIHRvIHJlcGxhY2Ugc2l6ZSBmb3IgbG9vcF9maWx0ZXJfbGV2ZWwgYW5kDQo+ID4gPiA+ IGxvb3BfZmlsdGVyX21vZGVfZGVsdGFzDQo+ID4gPiA+IC0gY2hhbmdlIGFycmF5IHNpemUgb2Yg bG9vcF9maWx0ZXJfbW9kZV9kZWx0YXMgZnJvbSA0IHRvIDINCj4gPiA+ID4gLSBhZGQgZGVmaW5l IFNFQ09OREFSWV9GSUxURVJfU1RSRU5HVEhfTlVNX0JJVFMNCj4gPiA+ID4gLSBjaGFuZ2Ugc29t ZSBoZXggdmFsdWVzIGZyb20gdXBwZXIgY2FzZSB0byBsb3dlciBjYXNlDQo+ID4gPiA+IC0gY2hh bmdlICpkcGJfc3ogZXF1YWwgdG8gVjRMMl9BVjFfVE9UQUxfUkVGU19QRVJfRlJBTUUgKyAxDQo+ ID4gPiA+IC0gdGVzdCBieSBhdjEgZmx1c3RlciwgcmVzdWx0IGlzIDE3My8yMzkNCj4gPiA+ID4g DQo+ID4gPiA+IENoYW5nZXMgZnJvbSB2MjoNCj4gPiA+ID4gDQo+ID4gPiA+IC0gTWF0Y2ggd2l0 aCBhdjEgdWFwaSB2MyBtb2RpZnkNCj4gPiA+ID4gLSB0ZXN0IGJ5IGF2MSBmbHVzdGVyLCByZXN1 bHQgaXMgMTczLzIzOQ0KPiA+ID4gPiANCj4gPiA+ID4gLS0tDQo+ID4gPiA+IFJlZmVyZW5jZSBz ZXJpZXM6DQo+ID4gPiA+IFsxXTogdjMgb2YgdGhpcyBzZXJpZXMgaXMgcHJlc2VuZCBieSBEYW5p ZWwgQWxtZWlkYS4NCj4gPiA+ID4gICAgICAgbWVzc2FnZS1pZDogDQo+ID4gPiA+IDIwMjIwODI1 MjI1MzEyLjU2NDYxOS0xLWRhbmllbC5hbG1laWRhQGNvbGxhYm9yYS5jb20NCj4gPiA+ID4gDQo+ ID4gPiA+ICAgLi4uL21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy9NYWtlZmlsZSAgIHwg ICAgMSArDQo+ID4gPiA+ICAgLi4uL3Zjb2RlYy9tdGtfdmNvZGVjX2RlY19zdGF0ZWxlc3MuYyAg ICAgICAgIHwgICA0NyArLQ0KPiA+ID4gPiAgIC4uLi9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMv bXRrX3Zjb2RlY19kcnYuaCB8ICAgIDEgKw0KPiA+ID4gPiAgIC4uLi92Y29kZWMvdmRlYy92ZGVj X2F2MV9yZXFfbGF0X2lmLmMgICAgICAgICB8IDIyMzQNCj4gPiA+ID4gKysrKysrKysrKysrKysr KysNCj4gPiA+ID4gICAuLi4vcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL3ZkZWNfZHJ2X2lmLmMg ICAgfCAgICA0ICsNCj4gPiA+ID4gICAuLi4vcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL3ZkZWNf ZHJ2X2lmLmggICAgfCAgICAxICsNCj4gPiA+ID4gICAuLi4vcGxhdGZvcm0vbWVkaWF0ZWsvdmNv ZGVjL3ZkZWNfbXNnX3F1ZXVlLmMgfCAgIDI3ICsNCj4gPiA+ID4gICAuLi4vcGxhdGZvcm0vbWVk aWF0ZWsvdmNvZGVjL3ZkZWNfbXNnX3F1ZXVlLmggfCAgICA0ICsNCj4gPiA+ID4gICA4IGZpbGVz IGNoYW5nZWQsIDIzMTggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiA+ID4gPiAgIGNy ZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlhdGVr L3Zjb2RlYy92ZGVjL3ZkZWNfYXYxX3JlcV9sYXRfaWYNCj4gPiA+ID4gLmMNCj4gPiA+ID4gDQo+ ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2Rl Yy9NYWtlZmlsZQ0KPiA+ID4gPiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNv ZGVjL01ha2VmaWxlDQo+ID4gPiA+IGluZGV4IDkzZTdhMzQzYjViMGUuLjc1MzcyNTkxMzAwNzIg MTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNv ZGVjL01ha2VmaWxlDQo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0 ZWsvdmNvZGVjL01ha2VmaWxlDQo+ID4gPiA+IEBAIC0xMCw2ICsxMCw3IEBAIG10ay12Y29kZWMt ZGVjLXkgOj0gdmRlYy92ZGVjX2gyNjRfaWYubyBcDQo+ID4gPiA+ICAgdmRlYy92ZGVjX3ZwOF9y ZXFfaWYubyBcDQo+ID4gPiA+ICAgdmRlYy92ZGVjX3ZwOV9pZi5vIFwNCj4gPiA+ID4gICB2ZGVj L3ZkZWNfdnA5X3JlcV9sYXRfaWYubyBcDQo+ID4gPiA+ICt2ZGVjL3ZkZWNfYXYxX3JlcV9sYXRf aWYubyBcDQo+ID4gPiA+ICAgdmRlYy92ZGVjX2gyNjRfcmVxX2lmLm8gXA0KPiA+ID4gPiAgIHZk ZWMvdmRlY19oMjY0X3JlcV9jb21tb24ubyBcDQo+ID4gPiA+ICAgdmRlYy92ZGVjX2gyNjRfcmVx X211bHRpX2lmLm8gXA0KPiA+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiA+IGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvbXRrX3Zjb2RlY19kZWNfc3RhdGVsZQ0KPiA+ID4g PiBzcy5jDQo+ID4gPiA+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMv bXRrX3Zjb2RlY19kZWNfc3RhdGVsZQ0KPiA+ID4gPiBzcy5jDQo+ID4gPiA+IGluZGV4IGM0NWJk MjU5OWJiMmQuLmNlYjZmYWJjNjc3NDkgMTAwNjQ0DQo+ID4gPiA+IC0tLQ0KPiA+ID4gPiBhL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL210a192Y29kZWNfZGVjX3N0YXRl bGUNCj4gPiA+ID4gc3MuYw0KPiA+ID4gPiArKysNCj4gPiA+ID4gYi9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL21lZGlhdGVrL3Zjb2RlYy9tdGtfdmNvZGVjX2RlY19zdGF0ZWxlDQo+ID4gPiA+IHNz LmMNCj4gPiA+ID4gQEAgLTEwNywxMSArMTA3LDUxIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRr X3N0YXRlbGVzc19jb250cm9sDQo+ID4gPiA+IG10a19zdGF0ZWxlc3NfY29udHJvbHNbXSA9IHsN Cj4gPiA+ID4gICB9LA0KPiA+ID4gPiAgIC5jb2RlY190eXBlID0gVjRMMl9QSVhfRk1UX1ZQOV9G UkFNRSwNCj4gPiA+ID4gICB9LA0KPiA+ID4gPiArew0KPiA+ID4gPiArLmNmZyA9IHsNCj4gPiA+ ID4gKy5pZCA9IFY0TDJfQ0lEX1NUQVRFTEVTU19BVjFfU0VRVUVOQ0UsDQo+ID4gPiA+ICsNCj4g PiA+ID4gK30sDQo+ID4gPiA+ICsuY29kZWNfdHlwZSA9IFY0TDJfUElYX0ZNVF9BVjFfRlJBTUUs DQo+ID4gPiA+ICt9LA0KPiA+ID4gPiArew0KPiA+ID4gPiArLmNmZyA9IHsNCj4gPiA+ID4gKy5p ZCA9IFY0TDJfQ0lEX1NUQVRFTEVTU19BVjFfRlJBTUUsDQo+ID4gPiA+ICsNCj4gPiA+ID4gK30s DQo+ID4gPiA+ICsuY29kZWNfdHlwZSA9IFY0TDJfUElYX0ZNVF9BVjFfRlJBTUUsDQo+ID4gPiA+ ICt9LA0KPiA+ID4gPiArew0KPiA+ID4gPiArLmNmZyA9IHsNCj4gPiA+ID4gKy5pZCA9IFY0TDJf Q0lEX1NUQVRFTEVTU19BVjFfVElMRV9HUk9VUF9FTlRSWSwNCj4gPiA+ID4gKy5kaW1zID0geyBW NEwyX0FWMV9NQVhfVElMRV9DT1VOVCB9LA0KPiA+ID4gPiArDQo+ID4gPiA+ICt9LA0KPiA+ID4g PiArLmNvZGVjX3R5cGUgPSBWNEwyX1BJWF9GTVRfQVYxX0ZSQU1FLA0KPiA+ID4gPiArfSwNCj4g PiA+ID4gK3sNCj4gPiA+ID4gKy5jZmcgPSB7DQo+ID4gPiA+ICsuaWQgPSBWNEwyX0NJRF9TVEFU RUxFU1NfQVYxX1BST0ZJTEUsDQo+ID4gPiA+ICsubWluID0gVjRMMl9TVEFURUxFU1NfQVYxX1BS T0ZJTEVfTUFJTiwNCj4gPiA+ID4gKy5kZWYgPSBWNEwyX1NUQVRFTEVTU19BVjFfUFJPRklMRV9N QUlOLA0KPiA+ID4gPiArLm1heCA9IFY0TDJfU1RBVEVMRVNTX0FWMV9QUk9GSUxFX01BSU4sDQo+ ID4gPiA+ICt9LA0KPiA+ID4gPiArLmNvZGVjX3R5cGUgPSBWNEwyX1BJWF9GTVRfQVYxX0ZSQU1F LA0KPiA+ID4gPiArfSwNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKy5jZmcgPSB7DQo+ID4gPiA+ICsu aWQgPSBWNEwyX0NJRF9TVEFURUxFU1NfQVYxX0xFVkVMLA0KPiA+ID4gPiArLm1pbiA9IFY0TDJf U1RBVEVMRVNTX0FWMV9MRVZFTF8yXzAsDQo+ID4gPiA+ICsuZGVmID0gVjRMMl9TVEFURUxFU1Nf QVYxX0xFVkVMXzRfMCwNCj4gPiA+ID4gKy5tYXggPSBWNEwyX1NUQVRFTEVTU19BVjFfTEVWRUxf NV8xLA0KPiA+ID4gPiArfSwNCj4gPiA+ID4gKy5jb2RlY190eXBlID0gVjRMMl9QSVhfRk1UX0FW MV9GUkFNRSwNCj4gPiA+ID4gK30sDQo+ID4gPiA+ICAgfTsNCj4gPiA+ID4gICANCj4gPiA+ID4g ICAjZGVmaW5lIE5VTV9DVFJMUyBBUlJBWV9TSVpFKG10a19zdGF0ZWxlc3NfY29udHJvbHMpDQo+ ID4gPiA+ICAgDQo+ID4gPiA+IC1zdGF0aWMgc3RydWN0IG10a192aWRlb19mbXQgbXRrX3ZpZGVv X2Zvcm1hdHNbNV07DQo+ID4gPiA+ICtzdGF0aWMgc3RydWN0IG10a192aWRlb19mbXQgbXRrX3Zp ZGVvX2Zvcm1hdHNbNl07DQo+ID4gPiA+ICAgDQo+ID4gPiA+ICAgc3RhdGljIHN0cnVjdCBtdGtf dmlkZW9fZm10IGRlZmF1bHRfb3V0X2Zvcm1hdDsNCj4gPiA+ID4gICBzdGF0aWMgc3RydWN0IG10 a192aWRlb19mbXQgZGVmYXVsdF9jYXBfZm9ybWF0Ow0KPiA+ID4gPiBAQCAtMzUxLDYgKzM5MSw3 IEBAIHN0YXRpYyB2b2lkIG10a192Y29kZWNfYWRkX2Zvcm1hdHModW5zaWduZWQNCj4gPiA+ID4g aW50DQo+ID4gPiA+IGZvdXJjYywNCj4gPiA+ID4gICBjYXNlIFY0TDJfUElYX0ZNVF9IMjY0X1NM SUNFOg0KPiA+ID4gPiAgIGNhc2UgVjRMMl9QSVhfRk1UX1ZQOF9GUkFNRToNCj4gPiA+ID4gICBj YXNlIFY0TDJfUElYX0ZNVF9WUDlfRlJBTUU6DQo+ID4gPiA+ICtjYXNlIFY0TDJfUElYX0ZNVF9B VjFfRlJBTUU6DQo+ID4gPiA+ICAgbXRrX3ZpZGVvX2Zvcm1hdHNbY291bnRfZm9ybWF0c10uZm91 cmNjID0gZm91cmNjOw0KPiA+ID4gPiAgIG10a192aWRlb19mb3JtYXRzW2NvdW50X2Zvcm1hdHNd LnR5cGUgPSBNVEtfRk1UX0RFQzsNCj4gPiA+ID4gICBtdGtfdmlkZW9fZm9ybWF0c1tjb3VudF9m b3JtYXRzXS5udW1fcGxhbmVzID0gMTsNCj4gPiA+ID4gQEAgLTQwNyw2ICs0NDgsMTAgQEAgc3Rh dGljIHZvaWQNCj4gPiA+ID4gbXRrX3Zjb2RlY19nZXRfc3VwcG9ydGVkX2Zvcm1hdHMoc3RydWN0 IG10a192Y29kZWNfY3R4ICpjdHgpDQo+ID4gPiA+ICAgbXRrX3Zjb2RlY19hZGRfZm9ybWF0cyhW NEwyX1BJWF9GTVRfVlA5X0ZSQU1FLCBjdHgpOw0KPiA+ID4gPiAgIG91dF9mb3JtYXRfY291bnQr KzsNCj4gPiA+ID4gICB9DQo+ID4gPiA+ICtpZiAoY3R4LT5kZXYtPmRlY19jYXBhYmlsaXR5ICYg TVRLX1ZERUNfRk9STUFUX0FWMV9GUkFNRSkgew0KPiA+ID4gPiArbXRrX3Zjb2RlY19hZGRfZm9y bWF0cyhWNEwyX1BJWF9GTVRfQVYxX0ZSQU1FLCBjdHgpOw0KPiA+ID4gPiArb3V0X2Zvcm1hdF9j b3VudCsrOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiAgIA0KPiA+ID4gPiAgIGlmIChjYXBfZm9ybWF0 X2NvdW50KQ0KPiA+ID4gPiAgIGRlZmF1bHRfY2FwX2Zvcm1hdCA9IG10a192aWRlb19mb3JtYXRz W2NhcF9mb3JtYXRfY291bnQNCj4gPiA+ID4gLSAxXTsNCj4gPiA+ID4gZGlmZiAtLWdpdA0KPiA+ ID4gPiBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL210a192Y29kZWNf ZHJ2LmgNCj4gPiA+ID4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy9t dGtfdmNvZGVjX2Rydi5oDQo+ID4gPiA+IGluZGV4IDZhNDdhMTFmZjY1NGEuLmE2ZGI5NzJiMWZm NzIgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsv dmNvZGVjL210a192Y29kZWNfZHJ2LmgNCj4gPiA+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9tZWRpYXRlay92Y29kZWMvbXRrX3Zjb2RlY19kcnYuaA0KPiA+ID4gPiBAQCAtMzQ0LDYg KzM0NCw3IEBAIGVudW0gbXRrX3ZkZWNfZm9ybWF0X3R5cGVzIHsNCj4gPiA+ID4gICBNVEtfVkRF Q19GT1JNQVRfSDI2NF9TTElDRSA9IDB4MTAwLA0KPiA+ID4gPiAgIE1US19WREVDX0ZPUk1BVF9W UDhfRlJBTUUgPSAweDIwMCwNCj4gPiA+ID4gICBNVEtfVkRFQ19GT1JNQVRfVlA5X0ZSQU1FID0g MHg0MDAsDQo+ID4gPiA+ICtNVEtfVkRFQ19GT1JNQVRfQVYxX0ZSQU1FID0gMHg4MDAsDQo+ID4g PiA+ICAgTVRLX1ZDT0RFQ19JTk5FUl9SQUNJTkcgPSAweDIwMDAwLA0KPiA+ID4gPiAgIH07DQo+ ID4gPiA+ICAgDQo+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4gYS9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL21lZGlhdGVrL3Zjb2RlYy92ZGVjL3ZkZWNfYXYxX3JlcV9sYXRfDQo+ID4gPiA+IGlm LmMNCj4gPiA+ID4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy92ZGVj L3ZkZWNfYXYxX3JlcV9sYXRfDQo+ID4gPiA+IGlmLmMNCj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwMC4uMmFjNzcxNzVkYWQ3Yw0KPiA+ID4g PiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ICsrKw0KPiA+ID4gPiBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vbWVkaWF0ZWsvdmNvZGVjL3ZkZWMvdmRlY19hdjFfcmVxX2xhdF8NCj4gPiA+ID4gaWYu Yw0KPiA+ID4gPiBAQCAtMCwwICsxLDIyMzQgQEANCj4gPiA+ID4gKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wDQo+ID4gPiA+ICsvKg0KPiA+ID4gPiArICogQ29weXJpZ2h0IChj KSAyMDIyIE1lZGlhVGVrIEluYy4NCj4gPiA+ID4gKyAqIEF1dGhvcjogWGlhb3lvbmcgTHUgPHhp YW95b25nLmx1QG1lZGlhdGVrLmNvbT4NCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArDQo+ID4gPiA+ ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvc2xh Yi5oPg0KPiA+ID4gPiArI2luY2x1ZGUgPG1lZGlhL3ZpZGVvYnVmMi1kbWEtY29udGlnLmg+DQo+ ID4gPiA+ICsNCj4gPiA+ID4gKyNpbmNsdWRlICIuLi9tdGtfdmNvZGVjX3V0aWwuaCINCj4gPiA+ ID4gKyNpbmNsdWRlICIuLi9tdGtfdmNvZGVjX2RlYy5oIg0KPiA+ID4gPiArI2luY2x1ZGUgIi4u L210a192Y29kZWNfaW50ci5oIg0KPiA+ID4gPiArI2luY2x1ZGUgIi4uL3ZkZWNfZHJ2X2Jhc2Uu aCINCj4gPiA+ID4gKyNpbmNsdWRlICIuLi92ZGVjX2Rydl9pZi5oIg0KPiA+ID4gPiArI2luY2x1 ZGUgIi4uL3ZkZWNfdnB1X2lmLmgiDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNkZWZpbmUgQVYxX01B WF9GUkFNRV9CVUZfQ09VTlQoVjRMMl9BVjFfVE9UQUxfUkVGU19QRQ0KPiA+ID4gPiBSX0ZSQU1F ICsgMSkNCj4gPiA+ID4gKyNkZWZpbmUgQVYxX1RJTEVfQlVGX1NJWkU2NA0KPiA+ID4gPiArI2Rl ZmluZSBBVjFfU0NBTEVfU1VCUEVMX0JJVFMxMA0KPiA+ID4gPiArI2RlZmluZSBBVjFfUkVGX1ND QUxFX1NISUZUMTQNCj4gPiA+ID4gKyNkZWZpbmUgQVYxX1JFRl9OT19TQ0FMRUJJVChBVjFfUkVG X1NDQUxFX1NISUZUKQ0KPiA+ID4gPiArI2RlZmluZSBBVjFfUkVGX0lOVkFMSURfU0NBTEUtMQ0K PiA+ID4gPiArDQo+ID4gPiA+ICsjZGVmaW5lIEFWMV9JTlZBTElEX0lEWC0xDQo+ID4gPiA+ICsN Cj4gPiA+ID4gKyNkZWZpbmUgQVYxX0RJVl9ST1VORF9VUF9QT1cyKHZhbHVlLCBuKVwNCj4gPiA+ ID4gKyh7XA0KPiA+ID4gPiArdHlwZW9mKG4pIF9uICA9IG47XA0KPiA+ID4gPiArdHlwZW9mKHZh bHVlKSBfdmFsdWUgPSB2YWx1ZTtcDQo+ID4gPiA+ICsoX3ZhbHVlICsgKEJJVChfbikgPj4gMSkp ID4+IF9uO1wNCj4gPiA+ID4gK30pDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNkZWZpbmUgQVYxX0RJ Vl9ST1VORF9VUF9QT1cyX1NJR05FRCh2YWx1ZSwgbikNCj4gPiA+ID4gXA0KPiA+ID4gPiArKHsN Cj4gPiA+ID4gXA0KPiA+ID4gPiArdHlwZW9mKG4pIF9uXyAgPSBuO1wNCj4gPiA+ID4gK3R5cGVv Zih2YWx1ZSkgX3ZhbHVlXyA9IHZhbHVlOw0KPiA+ID4gPiBcDQo+ID4gPiA+ICsoKChfdmFsdWVf KSA8IDApID8gLUFWMV9ESVZfUk9VTkRfVVBfUE9XMigtKF92YWx1ZV8pLCAoX25fKSkNCj4gPiA+ ID4gXA0KPiA+ID4gPiArOiBBVjFfRElWX1JPVU5EX1VQX1BPVzIoKF92YWx1ZV8pLCAoX25fKSkp O1wNCj4gPiA+ID4gK30pDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNkZWZpbmUgQklUX0ZMQUcoeCwg Yml0KSghISgoeCktPmZsYWdzICYgKGJpdCkpKQ0KPiA+ID4gPiArI2RlZmluZSBTRUdNRU5UQVRJ T05fRkxBRyh4LCBuYW1lKSghISgoeCktPmZsYWdzICYNCj4gPiA+ID4gVjRMMl9BVjFfU0VHTUVO VEFUSU9OX0ZMQUdfIyNuYW1lKSkNCj4gPiA+ID4gKyNkZWZpbmUgUVVBTlRfRkxBRyh4LCBuYW1l KSghISgoeCktPmZsYWdzICYNCj4gPiA+ID4gVjRMMl9BVjFfUVVBTlRJWkFUSU9OX0ZMQUdfIyNu YW1lKSkNCj4gPiA+ID4gKyNkZWZpbmUgU0VRVUVOQ0VfRkxBRyh4LCBuYW1lKSghISgoeCktPmZs YWdzICYNCj4gPiA+ID4gVjRMMl9BVjFfU0VRVUVOQ0VfRkxBR18jI25hbWUpKQ0KPiA+ID4gPiAr I2RlZmluZSBGSF9GTEFHKHgsIG5hbWUpKCEhKCh4KS0+ZmxhZ3MgJg0KPiA+ID4gPiBWNEwyX0FW MV9GUkFNRV9GTEFHXyMjbmFtZSkpDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNkZWZpbmUgTUlOUSAw DQo+ID4gPiA+ICsjZGVmaW5lIE1BWFEgMjU1DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNkZWZpbmUg RElWX0xVVF9QUkVDX0JJVFMgMTQNCj4gPiA+ID4gKyNkZWZpbmUgRElWX0xVVF9CSVRTIDgNCj4g PiA+ID4gKyNkZWZpbmUgRElWX0xVVF9OVU0gQklUKERJVl9MVVRfQklUUykNCj4gPiA+ID4gKyNk ZWZpbmUgV0FSUF9QQVJBTV9SRURVQ0VfQklUUyA2DQo+ID4gPiA+ICsjZGVmaW5lIFdBUlBFRE1P REVMX1BSRUNfQklUUyAxNg0KPiA+ID4gPiArDQo+ID4gPiA+ICsjZGVmaW5lIFNFR19MVkxfQUxU X1EgMA0KPiA+ID4gPiArI2RlZmluZSBTRUNPTkRBUllfRklMVEVSX1NUUkVOR1RIX05VTV9CSVRT IDINCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIGNvbnN0IHNob3J0IGRpdl9sdXRbRElWX0xV VF9OVU0gKyAxXSA9IHsNCj4gPiA+ID4gKzE2Mzg0LCAxNjMyMCwgMTYyNTcsIDE2MTk0LCAxNjEz MiwgMTYwNzAsIDE2MDA5LCAxNTk0OCwgMTU4ODgsDQo+ID4gPiA+IDE1ODI4LCAxNTc2OCwNCj4g PiA+ID4gKzE1NzA5LCAxNTY1MCwgMTU1OTIsIDE1NTM0LCAxNTQ3NywgMTU0MjAsIDE1MzY0LCAx NTMwOCwgMTUyNTIsDQo+ID4gPiA+IDE1MTk3LCAxNTE0MiwNCj4gPiA+ID4gKzE1MDg3LCAxNTAz MywgMTQ5ODAsIDE0OTI2LCAxNDg3MywgMTQ4MjEsIDE0NzY5LCAxNDcxNywgMTQ2NjUsDQo+ID4g PiA+IDE0NjE0LCAxNDU2NCwNCj4gPiA+ID4gKzE0NTEzLCAxNDQ2MywgMTQ0MTMsIDE0MzY0LCAx NDMxNSwgMTQyNjYsIDE0MjE4LCAxNDE3MCwgMTQxMjIsDQo+ID4gPiA+IDE0MDc1LCAxNDAyOCwN Cj4gPiA+ID4gKzEzOTgxLCAxMzkzNSwgMTM4ODgsIDEzODQzLCAxMzc5NywgMTM3NTIsIDEzNzA3 LCAxMzY2MiwgMTM2MTgsDQo+ID4gPiA+IDEzNTc0LCAxMzUzMCwNCj4gPiA+ID4gKzEzNDg3LCAx MzQ0MywgMTM0MDAsIDEzMzU4LCAxMzMxNSwgMTMyNzMsIDEzMjMxLCAxMzE5MCwgMTMxNDgsDQo+ ID4gPiA+IDEzMTA3LCAxMzA2NiwNCj4gPiA+ID4gKzEzMDI2LCAxMjk4NSwgMTI5NDUsIDEyOTA2 LCAxMjg2NiwgMTI4MjcsIDEyNzg4LCAxMjc0OSwgMTI3MTAsDQo+ID4gPiA+IDEyNjcyLCAxMjYz MywNCj4gPiA+ID4gKzEyNTk2LCAxMjU1OCwgMTI1MjAsIDEyNDgzLCAxMjQ0NiwgMTI0MDksIDEy MzczLCAxMjMzNiwgMTIzMDAsDQo+ID4gPiA+IDEyMjY0LCAxMjIyOCwNCj4gPiA+ID4gKzEyMTkz LCAxMjE1NywgMTIxMjIsIDEyMDg3LCAxMjA1MywgMTIwMTgsIDExOTg0LCAxMTk1MCwgMTE5MTYs DQo+ID4gPiA+IDExODgyLCAxMTg0OCwNCj4gPiA+ID4gKzExODE1LCAxMTc4MiwgMTE3NDksIDEx NzE2LCAxMTY4MywgMTE2NTEsIDExNjE5LCAxMTU4NiwgMTE1NTUsDQo+ID4gPiA+IDExNTIzLCAx MTQ5MSwNCj4gPiA+ID4gKzExNDYwLCAxMTQyOSwgMTEzOTgsIDExMzY3LCAxMTMzNiwgMTEzMDUs IDExMjc1LCAxMTI0NSwgMTEyMTUsDQo+ID4gPiA+IDExMTg1LCAxMTE1NSwNCj4gPiA+ID4gKzEx MTI1LCAxMTA5NiwgMTEwNjcsIDExMDM4LCAxMTAwOSwgMTA5ODAsIDEwOTUxLCAxMDkyMywgMTA4 OTQsDQo+ID4gPiA+IDEwODY2LCAxMDgzOCwNCj4gPiA+ID4gKzEwODEwLCAxMDc4MiwgMTA3NTUs IDEwNzI3LCAxMDcwMCwgMTA2NzMsIDEwNjQ1LCAxMDYxOCwgMTA1OTIsDQo+ID4gPiA+IDEwNTY1 LCAxMDUzOCwNCj4gPiA+ID4gKzEwNTEyLCAxMDQ4NiwgMTA0NjAsIDEwNDM0LCAxMDQwOCwgMTAz ODIsIDEwMzU2LCAxMDMzMSwgMTAzMDUsDQo+ID4gPiA+IDEwMjgwLCAxMDI1NSwNCj4gPiA+ID4g KzEwMjMwLCAxMDIwNSwgMTAxODAsIDEwMTU2LCAxMDEzMSwgMTAxMDcsIDEwMDgyLCAxMDA1OCwg MTAwMzQsDQo+ID4gPiA+IDEwMDEwLCA5OTg2LA0KPiA+ID4gPiArOTk2MywgIDk5MzksICA5OTE2 LCAgOTg5MiwgIDk4NjksICA5ODQ2LCAgOTgyMywgIDk4MDAsICA5Nzc3LCANCj4gPiA+ID4gIA0K PiA+ID4gPiA5NzU0LCAgOTczMiwNCj4gPiA+ID4gKzk3MDksICA5Njg3LCAgOTY2NCwgIDk2NDIs ICA5NjIwLCAgOTU5OCwgIDk1NzYsICA5NTU0LCAgOTUzMywgDQo+ID4gPiA+ICANCj4gPiA+ID4g OTUxMSwgIDk0ODksDQo+ID4gPiA+ICs5NDY4LCAgOTQ0NywgIDk0MjUsICA5NDA0LCAgOTM4Mywg IDkzNjIsICA5MzQxLCAgOTMyMSwgIDkzMDAsIA0KPiA+ID4gPiAgDQo+ID4gPiA+IDkyNzksICA5 MjU5LA0KPiA+ID4gPiArOTIzOSwgIDkyMTgsICA5MTk4LCAgOTE3OCwgIDkxNTgsICA5MTM4LCAg OTExOCwgIDkwOTgsICA5MDc5LCANCj4gPiA+ID4gIA0KPiA+ID4gPiA5MDU5LCAgOTAzOSwNCj4g PiA+ID4gKzkwMjAsICA5MDAxLCAgODk4MSwgIDg5NjIsICA4OTQzLCAgODkyNCwgIDg5MDUsICA4 ODg2LCAgODg2NywgDQo+ID4gPiA+ICANCj4gPiA+ID4gODg0OSwgIDg4MzAsDQo+ID4gPiA+ICs4 ODEyLCAgODc5MywgIDg3NzUsICA4NzU2LCAgODczOCwgIDg3MjAsICA4NzAyLCAgODY4NCwgIDg2 NjYsIA0KPiA+ID4gPiAgDQo+ID4gPiA+IDg2NDgsICA4NjMwLA0KPiA+ID4gPiArODYxMywgIDg1 OTUsICA4NTc3LCAgODU2MCwgIDg1NDIsICA4NTI1LCAgODUwOCwgIDg0OTAsICA4NDczLCANCj4g PiA+ID4gIA0KPiA+ID4gPiA4NDU2LCAgODQzOSwNCj4gPiA+ID4gKzg0MjIsICA4NDA1LCAgODM4 OSwgIDgzNzIsICA4MzU1LCAgODMzOSwgIDgzMjIsICA4MzA2LCAgODI4OSwgDQo+ID4gPiA+ICAN Cj4gPiA+ID4gODI3MywgIDgyNTcsDQo+ID4gPiA+ICs4MjQwLCAgODIyNCwgIDgyMDgsICA4MTky LA0KPiA+ID4gPiArfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgKiBzdHJ1 Y3QgdmRlY19hdjFfc2xpY2VfaW5pdF92c2kgLSBWU0kgdXNlZCB0byBpbml0aWFsaXplDQo+ID4g PiA+IGluc3RhbmNlDQo+ID4gPiA+ICsgKiBAYXJjaGl0ZWN0dXJlOmFyY2hpdGVjdHVyZSB0eXBl DQo+ID4gPiA+ICsgKiBAcmVzZXJ2ZWQ6cmVzZXJ2ZWQNCj4gPiA+ID4gKyAqIEBjb3JlX3ZzaTpm b3IgY29yZSB2c2kNCj4gPiA+ID4gKyAqIEBjZGZfdGFibGVfYWRkcjpjZGYgdGFibGUgYWRkcg0K PiA+ID4gPiArICogQGNkZl90YWJsZV9zaXplOmNkZiB0YWJsZSBzaXplDQo+ID4gPiA+ICsgKiBA aXFfdGFibGVfYWRkcjppcSB0YWJsZSBhZGRyDQo+ID4gPiA+ICsgKiBAaXFfdGFibGVfc2l6ZTpp cSB0YWJsZSBzaXplDQo+ID4gPiA+ICsgKiBAdnNpX3NpemU6c2hhcmUgdnNpIHN0cnVjdHVyZSBz aXplDQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV9pbml0X3Zz aSB7DQo+ID4gPiA+ICt1MzIgYXJjaGl0ZWN0dXJlOw0KPiA+ID4gPiArdTMyIHJlc2VydmVkOw0K PiA+ID4gPiArdTY0IGNvcmVfdnNpOw0KPiA+ID4gPiArdTY0IGNkZl90YWJsZV9hZGRyOw0KPiA+ ID4gPiArdTMyIGNkZl90YWJsZV9zaXplOw0KPiA+ID4gPiArdTY0IGlxX3RhYmxlX2FkZHI7DQo+ ID4gPiA+ICt1MzIgaXFfdGFibGVfc2l6ZTsNCj4gPiA+ID4gK3UzMiB2c2lfc2l6ZTsNCj4gPiA+ ID4gK307DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICogc3RydWN0IHZkZWNf YXYxX3NsaWNlX21lbSAtIG1lbW9yeSBhZGRyZXNzIGFuZCBzaXplDQo+ID4gPiA+ICsgKiBAYnVm OmRtYV9hZGRyIHBhZGRpbmcNCj4gPiA+ID4gKyAqIEBkbWFfYWRkcjpidWZmZXIgYWRkcmVzcw0K PiA+ID4gPiArICogQHNpemU6YnVmZmVyIHNpemUNCj4gPiA+ID4gKyAqIEBkbWFfYWRkcl9lbmQ6 YnVmZmVyIGVuZCBhZGRyZXNzDQo+ID4gPiA+ICsgKiBAcGFkZGluZzpmb3IgcGFkZGluZw0KPiA+ ID4gPiArICovDQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfbWVtIHsNCj4gPiA+ID4g K3VuaW9uIHsNCj4gPiA+ID4gK3U2NCBidWY7DQo+ID4gPiA+ICtkbWFfYWRkcl90IGRtYV9hZGRy Ow0KPiA+ID4gPiArfTsNCj4gPiA+ID4gK3VuaW9uIHsNCj4gPiA+ID4gK3NpemVfdCBzaXplOw0K PiA+ID4gPiArZG1hX2FkZHJfdCBkbWFfYWRkcl9lbmQ7DQo+ID4gPiA+ICt1NjQgcGFkZGluZzsN Cj4gPiA+ID4gK307DQo+ID4gPiA+ICt9Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ ID4gKyAqIHN0cnVjdCB2ZGVjX2F2MV9zbGljZV9zdGF0ZSAtIGRlY29kaW5nIHN0YXRlDQo+ID4g PiA+ICsgKiBAZXJyICAgICAgICAgICAgICAgICAgIDogZXJyIHR5cGUgZm9yIGRlY29kZQ0KPiA+ ID4gPiArICogQGZ1bGwgICAgICAgICAgICAgICAgICA6IHRyYW5zY29kZWQgYnVmZmVyIGlzIGZ1 bGwgb3Igbm90DQo+ID4gPiA+ICsgKiBAdGltZW91dCAgICAgICAgICAgICAgIDogZGVjb2RlIHRp bWVvdXQgb3Igbm90DQo+ID4gPiA+ICsgKiBAcGVyZiAgICAgICAgICAgICAgICAgIDogcGVyZm9y bWFuY2UgZW5hYmxlDQo+ID4gPiA+ICsgKiBAY3JjICAgICAgICAgICAgICAgICAgIDogaHcgY2hl Y2tzdW0NCj4gPiA+ID4gKyAqIEBvdXRfc2l6ZSAgICAgICAgICAgICAgOiBodyBvdXRwdXQgc2l6 ZQ0KPiA+ID4gPiArICovDQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2Vfc3RhdGUgew0K PiA+ID4gPiAraW50IGVycjsNCj4gPiA+ID4gK3UzMiBmdWxsOw0KPiA+ID4gPiArdTMyIHRpbWVv dXQ7DQo+ID4gPiA+ICt1MzIgcGVyZjsNCj4gPiA+ID4gK3UzMiBjcmNbMTZdOw0KPiA+ID4gPiAr dTMyIG91dF9zaXplOw0KPiA+ID4gPiArfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoNCj4gPiA+ ID4gKyAqIGVudW0gdmRlY19hdjFfc2xpY2VfcmVzb2x1dGlvbl9sZXZlbCAtIHJlc29sdXRpb24g bGV2ZWwNCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArZW51bSB2ZGVjX2F2MV9zbGljZV9yZXNvbHV0 aW9uX2xldmVsIHsNCj4gPiA+ID4gK0FWMV9SRVNfTk9ORSwNCj4gPiA+ID4gK0FWMV9SRVNfRkhE LA0KPiA+ID4gPiArQVYxX1JFU180SywNCj4gPiA+ID4gK0FWMV9SRVNfOEssDQo+ID4gPiA+ICt9 Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKg0KPiA+ID4gPiArICogZW51bSB2ZGVjX2F2MV9zbGlj ZV9mcmFtZV90eXBlIC0gYXYxIGZyYW1lIHR5cGUNCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArZW51 bSB2ZGVjX2F2MV9zbGljZV9mcmFtZV90eXBlIHsNCj4gPiA+ID4gK0FWMV9LRVlfRlJBTUUgPSAw LA0KPiA+ID4gPiArQVYxX0lOVEVSX0ZSQU1FLA0KPiA+ID4gPiArQVYxX0lOVFJBX09OTFlfRlJB TUUsDQo+ID4gPiA+ICtBVjFfU1dJVENIX0ZSQU1FLA0KPiA+ID4gPiArQVYxX0ZSQU1FX1RZUEVT LA0KPiA+ID4gPiArfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoNCj4gPiA+ID4gKyAqIGVudW0g dmRlY19hdjFfc2xpY2VfcmVmZXJlbmNlX21vZGUgLSByZWZlcmVuY2UgbW9kZSB0eXBlDQo+ID4g PiA+ICsgKi8NCj4gPiA+ID4gK2VudW0gdmRlY19hdjFfc2xpY2VfcmVmZXJlbmNlX21vZGUgew0K PiA+ID4gPiArQVYxX1NJTkdMRV9SRUZFUkVOQ0UgPSAwLA0KPiA+ID4gPiArQVYxX0NPTVBPVU5E X1JFRkVSRU5DRSwNCj4gPiA+ID4gK0FWMV9SRUZFUkVOQ0VfTU9ERV9TRUxFQ1QsDQo+ID4gPiA+ ICtBVjFfUkVGRVJFTkNFX01PREVTLA0KPiA+ID4gPiArfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAr LyoqDQo+ID4gPiA+ICsgKiBzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfdGlsZV9ncm91cCAtIGluZm8g Zm9yIGVhY2ggdGlsZQ0KPiA+ID4gPiArICogQG51bV90aWxlczp0aWxlIG51bWJlcg0KPiA+ID4g PiArICogQHRpbGVfc2l6ZTppbnB1dCBzaXplIGZvciBlYWNoIHRpbGUNCj4gPiA+ID4gKyAqIEB0 aWxlX3N0YXJ0X29mZnNldDp0aWxlIG9mZnNldCB0byBpbnB1dCBidWZmZXINCj4gPiA+ID4gKyAq Lw0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX3RpbGVfZ3JvdXAgew0KPiA+ID4gPiAr dTMyIG51bV90aWxlczsNCj4gPiA+ID4gK3UzMiB0aWxlX3NpemVbVjRMMl9BVjFfTUFYX1RJTEVf Q09VTlRdOw0KPiA+ID4gPiArdTMyIHRpbGVfc3RhcnRfb2Zmc2V0W1Y0TDJfQVYxX01BWF9USUxF X0NPVU5UXTsNCj4gPiA+ID4gK307DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiAr ICogc3RydWN0IHZkZWNfYXYxX3NsaWNlX3NjYWxlX2ZhY3RvcnMgLSBzY2FsZSBpbmZvIGZvciBl YWNoDQo+ID4gPiA+IHJlZg0KPiA+ID4gPiBmcmFtZQ0KPiA+ID4gPiArICogQGlzX3NjYWxlZDog IGZyYW1lIGlzIHNjYWxlZCBvciBub3QNCj4gPiA+ID4gKyAqIEB4X3NjYWxlOiAgICBmcmFtZSB3 aWR0aCBzY2FsZSBjb2VmZmljaWVudA0KPiA+ID4gPiArICogQHlfc2NhbGU6ICAgIGZyYW1lIGhl aWdodCBzY2FsZSBjb2VmZmljaWVudA0KPiA+ID4gPiArICogQHhfc3RlcDogICAgIHdpZHRoIHN0 ZXAgZm9yIHhfc2NhbGUNCj4gPiA+ID4gKyAqIEB5X3N0ZXA6ICAgICBoZWlnaHQgc3RlcCBmb3Ig eV9zY2FsZQ0KPiA+ID4gPiArICovDQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2Vfc2Nh bGVfZmFjdG9ycyB7DQo+ID4gPiA+ICt1OCBpc19zY2FsZWQ7DQo+ID4gPiA+ICtpbnQgeF9zY2Fs ZTsNCj4gPiA+ID4gK2ludCB5X3NjYWxlOw0KPiA+ID4gPiAraW50IHhfc3RlcDsNCj4gPiA+ID4g K2ludCB5X3N0ZXA7DQo+ID4gPiA+ICt9Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ ID4gKyAqIHN0cnVjdCB2ZGVjX2F2MV9zbGljZV9mcmFtZV9yZWZzIC0gcmVmIGZyYW1lIGluZm8N Cj4gPiA+ID4gKyAqIEByZWZfZmJfaWR4OiAgICAgICAgIHJlZiBzbG90IGluZGV4DQo+ID4gPiA+ ICsgKiBAcmVmX21hcF9pZHg6ICAgICAgICByZWYgZnJhbWUgaW5kZXgNCj4gPiA+ID4gKyAqIEBz Y2FsZV9mYWN0b3JzOiAgICAgIHNjYWxlIGZhY3RvcnMgZm9yIGVhY2ggcmVmIGZyYW1lDQo+ID4g PiA+ICsgKi8NCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV9mcmFtZV9yZWZzIHsNCj4g PiA+ID4gK2ludCByZWZfZmJfaWR4Ow0KPiA+ID4gPiAraW50IHJlZl9tYXBfaWR4Ow0KPiA+ID4g PiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX3NjYWxlX2ZhY3RvcnMgc2NhbGVfZmFjdG9yczsNCj4g PiA+ID4gK307DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICogc3RydWN0IHZk ZWNfYXYxX3NsaWNlX2dtIC0gQVYxIEdsb2JhbCBNb3Rpb24gcGFyYW1ldGVycw0KPiA+ID4gPiAr ICogQHdtdHlwZTogICAgIFRoZSB0eXBlIG9mIGdsb2JhbCBtb3Rpb24gdHJhbnNmb3JtIHVzZWQN Cj4gPiA+ID4gKyAqIEB3bW1hdDogICAgICBnbV9wYXJhbXMNCj4gPiA+ID4gKyAqIEBhbHBoYTog ICAgICBhbHBoYSBpbmZvDQo+ID4gPiA+ICsgKiBAYmV0YTogICAgICAgYmV0YSBpbmZvDQo+ID4g PiA+ICsgKiBAZ2FtbWE6ICAgICAgZ2FtbWEgaW5mbw0KPiA+ID4gPiArICogQGRlbHRhOiAgICAg IGRlbHRhIGluZm8NCj4gPiA+ID4gKyAqIEBpbnZhbGlkOiAgICBpcyBpbnZhbGlkIG9yIG5vdA0K PiA+ID4gPiArICovDQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfZ20gew0KPiA+ID4g PiAraW50IHdtdHlwZTsNCj4gPiA+ID4gK2ludCB3bW1hdFs4XTsNCj4gPiA+ID4gK3Nob3J0IGFs cGhhOw0KPiA+ID4gPiArc2hvcnQgYmV0YTsNCj4gPiA+ID4gK3Nob3J0IGdhbW1hOw0KPiA+ID4g PiArc2hvcnQgZGVsdGE7DQo+ID4gPiA+ICtjaGFyIGludmFsaWQ7DQo+ID4gPiA+ICt9Ow0KPiA+ ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIHN0cnVjdCB2ZGVjX2F2MV9zbGljZV9z bSAtIEFWMSBTa2lwIE1vZGUgcGFyYW1ldGVycw0KPiA+ID4gPiArICogQHNraXBfbW9kZV9hbGxv d2VkOiAgU2tpcCBNb2RlIGlzIGFsbG93ZWQgb3Igbm90DQo+ID4gPiA+ICsgKiBAc2tpcF9tb2Rl X3ByZXNlbnQ6ICBzcGVjaWZpZWQgdGhhdCB0aGUgc2tpcF9tb2RlIHdpbGwgYmUNCj4gPiA+ID4g cHJlc2VudCBvciBub3QNCj4gPiA+ID4gKyAqIEBza2lwX21vZGVfZnJhbWU6ICAgIHNwZWNpZmll cyB0aGUgZnJhbWVzIHRvIHVzZSBmb3INCj4gPiA+ID4gY29tcG91bmQNCj4gPiA+ID4gcHJlZGlj dGlvbg0KPiA+ID4gPiArICovDQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2Vfc20gew0K PiA+ID4gPiArdTggc2tpcF9tb2RlX2FsbG93ZWQ7DQo+ID4gPiA+ICt1OCBza2lwX21vZGVfcHJl c2VudDsNCj4gPiA+ID4gK2ludCBza2lwX21vZGVfZnJhbWVbMl07DQo+ID4gPiA+ICt9Ow0KPiA+ ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIHN0cnVjdCB2ZGVjX2F2MV9zbGljZV9z ZWcgLSBBVjEgU2VnbWVudGF0aW9uIHBhcmFtcw0KPiA+ID4gPiArICogQHNlZ21lbnRhdGlvbl9l bmFibGVkOiAgICAgICAgdGhpcyBmcmFtZSBtYWtlcyB1c2Ugb2YgdGhlDQo+ID4gPiA+IHNlZ21l bnRhdGlvbiB0b29sIG9yIG5vdA0KPiA+ID4gPiArICogQHNlZ21lbnRhdGlvbl91cGRhdGVfbWFw OiAgICAgc2VnbWVudGF0aW9uIG1hcCBhcmUgdXBkYXRlZA0KPiA+ID4gPiBkdXJpbmcgdGhlIGRl Y29kaW5nIGZyYW1lDQo+ID4gPiA+ICsgKiBAc2VnbWVudGF0aW9uX3RlbXBvcmFsX3VwZGF0ZTpz ZWdtZW50YXRpb24gbWFwIGFyZSBjb2RlZA0KPiA+ID4gPiByZWxhdGl2ZSB0aGUgZXhpc3Rpbmcg c2VnbWVudGFpb24gbWFwDQo+ID4gPiA+ICsgKiBAc2VnbWVudGF0aW9uX3VwZGF0ZV9kYXRhOiAg ICBuZXcgcGFyYW1ldGVycyBhcmUgYWJvdXQgdG8NCj4gPiA+ID4gYmUNCj4gPiA+ID4gc3BlY2lm aWVkIGZvciBlYWNoIHNlZ21lbnQNCj4gPiA+ID4gKyAqIEBmZWF0dXJlX2RhdGE6ICAgICAgICAg ICAgICAgIHNwZWNpZmllcyB0aGUgZmVhdHVyZSBkYXRhDQo+ID4gPiA+IGZvciBhDQo+ID4gPiA+ IHNlZ21lbnQgZmVhdHVyZQ0KPiA+ID4gPiArICogQGZlYXR1cmVfZW5hYmxlZF9tYXNrOiAgICAg ICAgdGhlIGNvcnJlc3BvbmRpbmcgZmVhdHVyZQ0KPiA+ID4gPiB2YWx1ZQ0KPiA+ID4gPiBpcyBj b2RlZCBvciBub3QuDQo+ID4gPiA+ICsgKiBAc2VnaWRfcHJlc2tpcDogICAgICAgICAgICAgICBz ZWdtZW50IGlkIHdpbGwgYmUgcmVhZA0KPiA+ID4gPiBiZWZvcmUNCj4gPiA+ID4gdGhlIHNraXAg c3ludGF4IGVsZW1lbnQuDQo+ID4gPiA+ICsgKiBAbGFzdF9hY3RpdmVfc2VnaWQ6ICAgICAgICAg ICB0aGUgaGlnaGVzdCBudW1iZXJlZCBzZWdtZW50DQo+ID4gPiA+IGlkDQo+ID4gPiA+IHRoYXQg aGFzIHNvbWUgZW5hYmxlZCBmZWF0dXJlDQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4gK3N0cnVjdCB2 ZGVjX2F2MV9zbGljZV9zZWcgew0KPiA+ID4gPiArdTggc2VnbWVudGF0aW9uX2VuYWJsZWQ7DQo+ ID4gPiA+ICt1OCBzZWdtZW50YXRpb25fdXBkYXRlX21hcDsNCj4gPiA+ID4gK3U4IHNlZ21lbnRh dGlvbl90ZW1wb3JhbF91cGRhdGU7DQo+ID4gPiA+ICt1OCBzZWdtZW50YXRpb25fdXBkYXRlX2Rh dGE7DQo+ID4gPiA+ICtpbnQgZmVhdHVyZV9kYXRhW1Y0TDJfQVYxX01BWF9TRUdNRU5UU11bVjRM Ml9BVjFfU0VHX0xWTF9NQVhdOw0KPiA+ID4gPiArdTE2IGZlYXR1cmVfZW5hYmxlZF9tYXNrW1Y0 TDJfQVYxX01BWF9TRUdNRU5UU107DQo+ID4gPiA+ICtpbnQgc2VnaWRfcHJlc2tpcDsNCj4gPiA+ ID4gK2ludCBsYXN0X2FjdGl2ZV9zZWdpZDsNCj4gPiA+ID4gK307DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKy8qKg0KPiA+ID4gPiArICogc3RydWN0IHZkZWNfYXYxX3NsaWNlX2RlbHRhX3FfbGYgLSBB VjEgTG9vcCBGaWx0ZXIgZGVsdGENCj4gPiA+ID4gcGFyYW1ldGVycw0KPiA+ID4gPiArICogQGRl bHRhX3FfcHJlc2VudDogICAgc3BlY2lmaWVkIHdoZXRoZXIgcXVhbnRpemVyIGluZGV4DQo+ID4g PiA+IGRlbHRhDQo+ID4gPiA+IHZhbHVlcyBhcmUgcHJlc2VudA0KPiA+ID4gPiArICogQGRlbHRh X3FfcmVzOiAgICAgICAgc3BlY2lmaWVzIHRoZSBsZWZ0IHNoaWZ0IHdoaWNoIHNob3VsZA0KPiA+ ID4gPiBiZQ0KPiA+ID4gPiBhcHBsaWVkIHRvIGRlY29kZWQgcXVhbnRpemVyIGluZGV4DQo+ID4g PiA+ICsgKiBAZGVsdGFfbGZfcHJlc2VudDogICBzcGVjaWZpZXMgd2hldGhlciBsb29wIGZpbHRl ciBkZWx0YQ0KPiA+ID4gPiB2YWx1ZXMNCj4gPiA+ID4gYXJlIHByZXNlbnQNCj4gPiA+ID4gKyAq IEBkZWx0YV9sZl9yZXM6ICAgICAgIHNwZWNpZmllcyB0aGUgbGVmdCBzaGlmdCB3aGljaCBzaG91 bGQNCj4gPiA+ID4gYmUNCj4gPiA+ID4gYXBwbGllZCB0byBkZWNvZGVkDQo+ID4gPiA+ICsgKiAg ICAgICAgICAgICAgICAgICAgICBsb29wIGZpbHRlciBkZWx0YSB2YWx1ZXMNCj4gPiA+ID4gKyAq IEBkZWx0YV9sZl9tdWx0aTogICAgIHNwZWNpZmllcyB0aGF0IHNlcGFyYXRlIGxvb3AgZmlsdGVy DQo+ID4gPiA+IGRlbHRhcw0KPiA+ID4gPiBhcmUgc2VudCBmb3IgaG9yaXpvbnRhbA0KPiA+ID4g PiArICogICAgICAgICAgICAgICAgICAgICAgbHVtYSBlZGdlcyx2ZXJ0aWNhbCBsdW1hIGVkZ2Vz LHRoZSB1DQo+ID4gPiA+IGVkZ2VzLCBhbmQgdGhlIHYgZWRnZXMuDQo+ID4gPiA+ICsgKi8NCj4g PiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV9kZWx0YV9xX2xmIHsNCj4gPiA+ID4gK3U4IGRl bHRhX3FfcHJlc2VudDsNCj4gPiA+ID4gK3U4IGRlbHRhX3FfcmVzOw0KPiA+ID4gPiArdTggZGVs dGFfbGZfcHJlc2VudDsNCj4gPiA+ID4gK3U4IGRlbHRhX2xmX3JlczsNCj4gPiA+ID4gK3U4IGRl bHRhX2xmX211bHRpOw0KPiA+ID4gPiArfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4g PiA+ICsgKiBzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfcXVhbnRpemF0aW9uIC0gQVYxIFF1YW50aXph dGlvbg0KPiA+ID4gPiBwYXJhbXMNCj4gPiA+ID4gKyAqIEBiYXNlX3FfaWR4OiAgICAgICAgIGlu ZGljYXRlcyB0aGUgYmFzZSBmcmFtZSBxaW5kZXguIFRoaXMNCj4gPiA+ID4gaXMNCj4gPiA+ID4g dXNlZCBmb3IgWSBBQw0KPiA+ID4gPiArICogICAgICAgICAgICAgICAgICAgICAgY29lZmZpY2ll bnRzIGFuZCBhcyB0aGUgYmFzZSB2YWx1ZSBmb3INCj4gPiA+ID4gdGhlDQo+ID4gPiA+IG90aGVy IHF1YW50aXplcnMuDQo+ID4gPiA+ICsgKiBAcWluZGV4OiAgICAgICAgICAgICBxaW5kZXgNCj4g PiA+ID4gKyAqIEBkZWx0YV9xeWRjOiAgICAgICAgIGluZGljYXRlcyB0aGUgWSBEQyBxdWFudGl6 ZXIgcmVsYXRpdmUNCj4gPiA+ID4gdG8NCj4gPiA+ID4gYmFzZV9xX2lkeA0KPiA+ID4gPiArICog QGRlbHRhX3F1ZGM6ICAgICAgICAgaW5kaWNhdGVzIHRoZSBVIERDIHF1YW50aXplciByZWxhdGl2 ZQ0KPiA+ID4gPiB0bw0KPiA+ID4gPiBiYXNlX3FfaWR4Lg0KPiA+ID4gPiArICogQGRlbHRhX3F1 YWM6ICAgICAgICAgaW5kaWNhdGVzIHRoZSBVIEFDIHF1YW50aXplciByZWxhdGl2ZQ0KPiA+ID4g PiB0bw0KPiA+ID4gPiBiYXNlX3FfaWR4DQo+ID4gPiA+ICsgKiBAZGVsdGFfcXZkYzogICAgICAg ICBpbmRpY2F0ZXMgdGhlIFYgREMgcXVhbnRpemVyIHJlbGF0aXZlDQo+ID4gPiA+IHRvDQo+ID4g PiA+IGJhc2VfcV9pZHgNCj4gPiA+ID4gKyAqIEBkZWx0YV9xdmFjOiAgICAgICAgIGluZGljYXRl cyB0aGUgViBBQyBxdWFudGl6ZXIgcmVsYXRpdmUNCj4gPiA+ID4gdG8NCj4gPiA+ID4gYmFzZV9x X2lkeA0KPiA+ID4gPiArICogQHVzaW5nX3FtYXRyaXg6ICAgICAgc3BlY2lmaWVzIHRoYXQgdGhl IHF1YW50aXplciBtYXRyaXgNCj4gPiA+ID4gd2lsbA0KPiA+ID4gPiBiZSB1c2VkIHRvDQo+ID4g PiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlIHF1YW50aXplcnMNCj4gPiA+ID4g KyAqIEBxbV95OiAgICAgICAgICAgICAgIHNwZWNpZmllcyB0aGUgbGV2ZWwgaW4gdGhlIHF1YW50 aXplcg0KPiA+ID4gPiBtYXRyaXggdGhhdCBzaG91bGQNCj4gPiA+ID4gKyAqICAgICAgICAgICAg ICAgICAgICAgIGJlIHVzZWQgZm9yIGx1bWEgcGxhbmUgZGVjb2RpbmcNCj4gPiA+ID4gKyAqIEBx bV91OiAgICAgICAgICAgICAgIHNwZWNpZmllcyB0aGUgbGV2ZWwgaW4gdGhlIHF1YW50aXplcg0K PiA+ID4gPiBtYXRyaXggdGhhdCBzaG91bGQNCj4gPiA+ID4gKyAqICAgICAgICAgICAgICAgICAg ICAgIGJlIHVzZWQgZm9yIGNocm9tYSBVIHBsYW5lIGRlY29kaW5nLg0KPiA+ID4gPiArICogQHFt X3Y6ICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSBsZXZlbCBpbiB0aGUgcXVhbnRpemVyDQo+ ID4gPiA+IG1hdHJpeCB0aGF0IHNob3VsZCBiZQ0KPiA+ID4gPiArICogICAgICAgICAgICAgICAg ICAgICAgdXNlZCBmb3IgY2hyb21hIFYgcGxhbmUgZGVjb2RpbmcNCj4gPiA+ID4gKyAqLw0KPiA+ ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX3F1YW50aXphdGlvbiB7DQo+ID4gPiA+ICtpbnQg YmFzZV9xX2lkeDsNCj4gPiA+ID4gK2ludCBxaW5kZXhbVjRMMl9BVjFfTUFYX1NFR01FTlRTXTsN Cj4gPiA+ID4gK2ludCBkZWx0YV9xeWRjOw0KPiA+ID4gPiAraW50IGRlbHRhX3F1ZGM7DQo+ID4g PiA+ICtpbnQgZGVsdGFfcXVhYzsNCj4gPiA+ID4gK2ludCBkZWx0YV9xdmRjOw0KPiA+ID4gPiAr aW50IGRlbHRhX3F2YWM7DQo+ID4gPiA+ICt1OCB1c2luZ19xbWF0cml4Ow0KPiA+ID4gPiArdTgg cW1feTsNCj4gPiA+ID4gK3U4IHFtX3U7DQo+ID4gPiA+ICt1OCBxbV92Ow0KPiA+ID4gPiArfTsN Cj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgKiBzdHJ1Y3QgdmRlY19hdjFfc2xp Y2VfbHIgLSBBVjEgTG9vcCBSZXN0YXVyYXRpb24gcGFyYW1ldGVycw0KPiA+ID4gPiArICogQHVz ZV9scjogICAgICAgICAgICAgICAgICAgICB3aGV0aGVyIHRvIHVzZSBsb29wDQo+ID4gPiA+IHJl c3RvcmF0aW9uDQo+ID4gPiA+ICsgKiBAdXNlX2Nocm9tYV9scjogICAgICAgICAgICAgIHdoZXRo ZXIgdG8gdXNlIGNocm9tYSBsb29wDQo+ID4gPiA+IHJlc3RvcmF0aW9uDQo+ID4gPiA+ICsgKiBA ZnJhbWVfcmVzdG9yYXRpb25fdHlwZTogICAgIHNwZWNpZmllcyB0aGUgdHlwZSBvZg0KPiA+ID4g PiByZXN0b3JhdGlvbg0KPiA+ID4gPiB1c2VkIGZvciBlYWNoIHBsYW5lDQo+ID4gPiA+ICsgKiBA bG9vcF9yZXN0b3JhdGlvbl9zaXplOiAgICAgIHBlY2lmaWVzIHRoZSBzaXplIG9mIGxvb3ANCj4g PiA+ID4gcmVzdG9yYXRpb24gdW5pdHMgaW4gdW5pdHMNCj4gPiA+ID4gKyAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb2Ygc2FtcGxlcyBpbiB0aGUgY3VycmVudA0KPiA+ID4gPiBwbGFu ZQ0KPiA+ID4gPiArICovDQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfbHIgew0KPiA+ ID4gPiArdTggdXNlX2xyOw0KPiA+ID4gPiArdTggdXNlX2Nocm9tYV9scjsNCj4gPiA+ID4gK3U4 IGZyYW1lX3Jlc3RvcmF0aW9uX3R5cGVbVjRMMl9BVjFfTlVNX1BMQU5FU19NQVhdOw0KPiA+ID4g PiArdTMyIGxvb3BfcmVzdG9yYXRpb25fc2l6ZVtWNEwyX0FWMV9OVU1fUExBTkVTX01BWF07DQo+ ID4gPiA+ICt9Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIHN0cnVjdCB2 ZGVjX2F2MV9zbGljZV9sb29wX2ZpbHRlciAtIEFWMSBMb29wIGZpbHRlcg0KPiA+ID4gPiBwYXJh bWV0ZXJzDQo+ID4gPiA+ICsgKiBAbG9vcF9maWx0ZXJfbGV2ZWw6ICAgICAgICAgIGFuIGFycmF5 IGNvbnRhaW5pbmcgbG9vcA0KPiA+ID4gPiBmaWx0ZXINCj4gPiA+ID4gc3RyZW5ndGggdmFsdWVz Lg0KPiA+ID4gPiArICogQGxvb3BfZmlsdGVyX3JlZl9kZWx0YXM6ICAgICBjb250YWlucyB0aGUg YWRqdXN0bWVudCBuZWVkZWQNCj4gPiA+ID4gZm9yDQo+ID4gPiA+IHRoZSBmaWx0ZXINCj4gPiA+ ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwgYmFzZWQgb24gdGhlIGNo b3Nlbg0KPiA+ID4gPiByZWZlcmVuY2UgZnJhbWUNCj4gPiA+ID4gKyAqIEBsb29wX2ZpbHRlcl9t b2RlX2RlbHRhczogICAgY29udGFpbnMgdGhlIGFkanVzdG1lbnQgbmVlZGVkDQo+ID4gPiA+IGZv cg0KPiA+ID4gPiB0aGUgZmlsdGVyDQo+ID4gPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxldmVsIGJhc2VkIG9uIHRoZSBjaG9zZW4gbW9kZQ0KPiA+ID4gPiArICogQGxvb3Bf ZmlsdGVyX3NoYXJwbmVzczogICAgICBpbmRpY2F0ZXMgdGhlIHNoYXJwbmVzcyBsZXZlbC4NCj4g PiA+ID4gVGhlDQo+ID4gPiA+IGxvb3BfZmlsdGVyX2xldmVsDQo+ID4gPiA+ICsgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFuZCBsb29wX2ZpbHRlcl9zaGFycG5lc3MNCj4gPiA+ID4g dG9nZXRoZXINCj4gPiA+ID4gZGV0ZXJtaW5lIHdoZW4NCj4gPiA+ID4gKyAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYSBibG9jayBlZGdlIGlzIGZpbHRlcmVkLCBhbmQNCj4gPiA+ID4g YnkNCj4gPiA+ID4gaG93IG11Y2ggdGhlDQo+ID4gPiA+ICsgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZpbHRlcmluZyBjYW4gY2hhbmdlIHRoZQ0KPiA+ID4gPiBzYW1wbGUNCj4gPiA+ ID4gdmFsdWVzDQo+ID4gPiA+ICsgKiBAbG9vcF9maWx0ZXJfZGVsdGFfZW5hYmxlZDogIGZpbGV0 ciBsZXZlbCBkZXBlbmRzIG9uIHRoZQ0KPiA+ID4gPiBtb2RlDQo+ID4gPiA+IGFuZCByZWZlcmVu Y2UNCj4gPiA+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUgdXNlZCB0 byBwcmVkaWN0IGEgYmxvY2sNCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYx X3NsaWNlX2xvb3BfZmlsdGVyIHsNCj4gPiA+ID4gK3U4IGxvb3BfZmlsdGVyX2xldmVsWzRdOw0K PiA+ID4gPiAraW50IGxvb3BfZmlsdGVyX3JlZl9kZWx0YXNbVjRMMl9BVjFfVE9UQUxfUkVGU19Q RVJfRlJBTUVdOw0KPiA+ID4gPiAraW50IGxvb3BfZmlsdGVyX21vZGVfZGVsdGFzWzJdOw0KPiA+ ID4gPiArdTggbG9vcF9maWx0ZXJfc2hhcnBuZXNzOw0KPiA+ID4gPiArdTggbG9vcF9maWx0ZXJf ZGVsdGFfZW5hYmxlZDsNCj4gPiA+ID4gK307DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ ID4gPiArICogc3RydWN0IHZkZWNfYXYxX3NsaWNlX2NkZWYgLSBBVjEgQ0RFRiBwYXJhbWV0ZXJz DQo+ID4gPiA+ICsgKiBAY2RlZl9kYW1waW5nOiAgICAgICBjb250cm9scyB0aGUgYW1vdW50IG9m IGRhbXBpbmcgaW4gdGhlDQo+ID4gPiA+IGRlcmluZ2luZyBmaWx0ZXINCj4gPiA+ID4gKyAqIEBj ZGVmX3lfc3RyZW5ndGg6ICAgIHNwZWNpZmllcyB0aGUgc3RyZW5ndGggb2YgdGhlIHByaW1hcnkN Cj4gPiA+ID4gZmlsdGVyIGFuZCBzZWNvbmRhcnkgZmlsdGVyDQo+ID4gPiA+ICsgKiBAY2RlZl91 dl9zdHJlbmd0aDogICBzcGVjaWZpZXMgdGhlIHN0cmVuZ3RoIG9mIHRoZSBwcmltYXJ5DQo+ID4g PiA+IGZpbHRlciBhbmQgc2Vjb25kYXJ5IGZpbHRlcg0KPiA+ID4gPiArICogQGNkZWZfYml0czog ICAgICAgICAgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYml0cyBuZWVkZWQgdG8NCj4gPiA+ID4g c3BlY2lmeSB3aGljaA0KPiA+ID4gPiArICogICAgICAgICAgICAgICAgICAgICAgQ0RFRiBmaWx0 ZXIgdG8gYXBwbHkNCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNl X2NkZWYgew0KPiA+ID4gPiArdTggY2RlZl9kYW1waW5nOw0KPiA+ID4gPiArdTggY2RlZl95X3N0 cmVuZ3RoWzhdOw0KPiA+ID4gPiArdTggY2RlZl91dl9zdHJlbmd0aFs4XTsNCj4gPiA+ID4gK3U4 IGNkZWZfYml0czsNCj4gPiA+ID4gK307DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4g PiArICogc3RydWN0IHZkZWNfYXYxX3NsaWNlX21mbXYgLSBBVjEgbWZtdiBwYXJhbWV0ZXJzDQo+ ID4gPiA+ICsgKiBAbWZtdl92YWxpZF9yZWY6ICAgICBtZm12X3ZhbGlkX3JlZg0KPiA+ID4gPiAr ICogQG1mbXZfZGlyOiAgICAgICAgICAgbWZtdl9kaXINCj4gPiA+ID4gKyAqIEBtZm12X3JlZl90 b19jdXI6ICAgIG1mbXZfcmVmX3RvX2N1cg0KPiA+ID4gPiArICogQG1mbXZfcmVmX2ZyYW1lX2lk eDogbWZtdl9yZWZfZnJhbWVfaWR4DQo+ID4gPiA+ICsgKiBAbWZtdl9jb3VudDogICAgICAgICBt Zm12X2NvdW50DQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV9t Zm12IHsNCj4gPiA+ID4gK3UzMiBtZm12X3ZhbGlkX3JlZlszXTsNCj4gPiA+ID4gK3UzMiBtZm12 X2RpclszXTsNCj4gPiA+ID4gK2ludCBtZm12X3JlZl90b19jdXJbM107DQo+ID4gPiA+ICtpbnQg bWZtdl9yZWZfZnJhbWVfaWR4WzNdOw0KPiA+ID4gPiAraW50IG1mbXZfY291bnQ7DQo+ID4gPiA+ ICt9Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIHN0cnVjdCB2ZGVjX2F2 MV9zbGljZV90aWxlIC0gQVYxIFRpbGUgaW5mbw0KPiA+ID4gPiArICogQHRpbGVfY29sczogICAg ICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiB0aWxlcw0KPiA+ID4gPiBhY3Jv c3MgdGhlIGZyYW1lDQo+ID4gPiA+ICsgKiBAdGlsZV9yb3dzOiAgICAgICAgICAgICAgICAgIHBl Y2lmaWVzIHRoZSBudW1iZXIgb2YgdGlsZXMNCj4gPiA+ID4gZG93bg0KPiA+ID4gPiB0aGUgZnJh bWUNCj4gPiA+ID4gKyAqIEBtaV9jb2xfc3RhcnRzOiAgICAgICAgICAgICAgYW4gYXJyYXkgc3Bl Y2lmeWluZyB0aGUgc3RhcnQNCj4gPiA+ID4gY29sdW1uDQo+ID4gPiA+ICsgKiBAbWlfcm93X3N0 YXJ0czogICAgICAgICAgICAgIGFuIGFycmF5IHNwZWNpZnlpbmcgdGhlIHN0YXJ0DQo+ID4gPiA+ IHJvdw0KPiA+ID4gPiArICogQGNvbnRleHRfdXBkYXRlX3RpbGVfaWQ6ICAgICBzcGVjaWZpZXMg d2hpY2ggdGlsZSB0byB1c2UNCj4gPiA+ID4gZm9yDQo+ID4gPiA+IHRoZSBDREYgdXBkYXRlDQo+ ID4gPiA+ICsgKiBAdW5pZm9ybV90aWxlX3NwYWNpbmdfZmxhZzogIHRpbGVzIGFyZSB1bmlmb3Jt bHkgc3BhY2VkDQo+ID4gPiA+IGFjcm9zcw0KPiA+ID4gPiB0aGUgZnJhbWUNCj4gPiA+ID4gKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgdGhlIHRpbGUgc2l6ZXMgYXJlIGNvZGVk DQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV90aWxlIHsNCj4g PiA+ID4gK3U4IHRpbGVfY29sczsNCj4gPiA+ID4gK3U4IHRpbGVfcm93czsNCj4gPiA+ID4gK2lu dCBtaV9jb2xfc3RhcnRzW1Y0TDJfQVYxX01BWF9USUxFX0NPTFMgKyAxXTsNCj4gPiA+ID4gK2lu dCBtaV9yb3dfc3RhcnRzW1Y0TDJfQVYxX01BWF9USUxFX1JPV1MgKyAxXTsNCj4gPiA+ID4gK3U4 IGNvbnRleHRfdXBkYXRlX3RpbGVfaWQ7DQo+ID4gPiA+ICt1OCB1bmlmb3JtX3RpbGVfc3BhY2lu Z19mbGFnOw0KPiA+ID4gPiArfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsg KiBzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfdW5jb21wcmVzc2VkX2hlYWRlciAtIFJlcHJlc2VudHMg YW4NCj4gPiA+ID4gQVYxDQo+ID4gPiA+IEZyYW1lIEhlYWRlciBPQlUNCj4gPiA+ID4gKyAqIEB1 c2VfcmVmX2ZyYW1lX212czogICAgICAgICAgdXNlX3JlZl9mcmFtZV9tdnMgZmxhZw0KPiA+ID4g PiArICogQG9yZGVyX2hpbnQ6ICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgT3JkZXJIaW50Qml0 cyBsZWFzdA0KPiA+ID4gPiBzaWduaWZpY2FudCBiaXRzIG9mIHRoZSBleHBlY3RlZA0KPiA+ID4g PiArICogQGdtOiAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwgbW90aW9uIHBhcmFtDQo+ ID4gPiA+ICsgKiBAdXBzY2FsZWRfd2lkdGg6ICAgICAgICAgICAgIHRoZSB1cHNjYWxlZCB3aWR0 aA0KPiA+ID4gPiArICogQGZyYW1lX3dpZHRoOiAgICAgICAgICAgICAgICBmcmFtZSdzIHdpZHRo DQo+ID4gPiA+ICsgKiBAZnJhbWVfaGVpZ2h0OiAgICAgICAgICAgICAgIGZyYW1lJ3MgaGVpZ2h0 DQo+ID4gPiA+ICsgKiBAcmVkdWNlZF90eF9zZXQ6ICAgICAgICAgICAgIGZyYW1lIGlzIHJlc3Ry aWN0ZWQgdG8gYQ0KPiA+ID4gPiByZWR1Y2VkDQo+ID4gPiA+IHN1YnNldCBvZiB0aGUgZnVsbA0K PiA+ID4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgb2YgdHJhbnNmb3Jt IHR5cGVzDQo+ID4gPiA+ICsgKiBAdHhfbW9kZTogICAgICAgICAgICAgICAgICAgIHNwZWNpZmll cyBob3cgdGhlIHRyYW5zZm9ybQ0KPiA+ID4gPiBzaXplDQo+ID4gPiA+IGlzIGRldGVybWluZWQN Cj4gPiA+ID4gKyAqIEB1bmlmb3JtX3RpbGVfc3BhY2luZ19mbGFnOiAgdGlsZXMgYXJlIHVuaWZv cm1seSBzcGFjZWQNCj4gPiA+ID4gYWNyb3NzDQo+ID4gPiA+IHRoZSBmcmFtZQ0KPiA+ID4gPiAr ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0aGUgdGlsZSBzaXplcyBhcmUgY29k ZWQNCj4gPiA+ID4gKyAqIEBpbnRlcnBvbGF0aW9uX2ZpbHRlcjogICAgICAgc3BlY2lmaWVzIHRo ZSBmaWx0ZXIgc2VsZWN0aW9uDQo+ID4gPiA+IHVzZWQgZm9yIHBlcmZvcm1pbmcgaW50ZXIgcHJl ZGljdGlvbg0KPiA+ID4gPiArICogQGFsbG93X3dhcnBlZF9tb3Rpb246ICAgICAgICBtb3Rpb25f bW9kZSBtYXkgYmUgcHJlc2VudCBvcg0KPiA+ID4gPiBub3QNCj4gPiA+ID4gKyAqIEBpc19tb3Rp b25fbW9kZV9zd2l0Y2hhYmxlIDogZXVxbHQgdG8gMCBzcGVjaWZpZXMgdGhhdCBvbmx5DQo+ID4g PiA+IHRoZQ0KPiA+ID4gPiBTSU1QTEUgbW90aW9uIG1vZGUgd2lsbCBiZSB1c2VkDQo+ID4gPiA+ ICsgKiBAcmVmZXJlbmNlX21vZGUgOiAgICAgICAgICAgIGZyYW1lIHJlZmVyZW5jZSBtb2RlIHNl bGVjdGVkDQo+ID4gPiA+ICsgKiBAYWxsb3dfaGlnaF9wcmVjaXNpb25fbXY6ICAgIHNwZWNpZmll cyB0aGF0IG1vdGlvbiB2ZWN0b3JzDQo+ID4gPiA+IGFyZQ0KPiA+ID4gPiBzcGVjaWZpZWQgdG8N Cj4gPiA+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVhcnRlciBwZWwgcHJl Y2lzaW9uIG9yIHRvDQo+ID4gPiA+IGVpZ2h0aA0KPiA+ID4gPiBwZWwgcHJlY2lzaW9uDQo+ID4g PiA+ICsgKiBAYWxsb3dfaW50cmFfYmM6ICAgICAgICAgICAgIHViZHVjYXRlcyB0aGF0IGludHJh IGJsb2NrDQo+ID4gPiA+IGNvcHkNCj4gPiA+ID4gbWF5IGJlIHVzZWQgaW4gdGhpcyBmcmFtZQ0K PiA+ID4gPiArICogQGZvcmNlX2ludGVnZXJfbXY6ICAgICAgICAgICBzcGVjaWZpZXMgbW90aW9u IHZlY3RvcnMgd2lsbA0KPiA+ID4gPiBhbHdheXMgYmUgaW50ZWdlcnMgb3INCj4gPiA+ID4gKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGNvbnRhaW4gZnJhY3Rpb25hbCBiaXRz DQo+ID4gPiA+ICsgKiBAYWxsb3dfc2NyZWVuX2NvbnRlbnRfdG9vbHM6IGludHJhIGJsb2NrcyBt YXkgdXNlIHBhbGV0dGUNCj4gPiA+ID4gZW5jb2RpbmcNCj4gPiA+ID4gKyAqIEBlcnJvcl9yZXNp bGllbnRfbW9kZTogICAgICAgZXJyb3IgcmVzaXNsZW50IG1vZGUgaXMNCj4gPiA+ID4gZW5hYmxl L2Rpc2FibGUNCj4gPiA+ID4gKyAqIEBmcmFtZV90eXBlOiAgICAgICAgICAgICAgICAgc3BlY2lm aWVzIHRoZSBBVjEgZnJhbWUgdHlwZQ0KPiA+ID4gPiArICogQHByaW1hcnlfcmVmX2ZyYW1lOiAg ICAgICAgICBzcGVjaWZpZXMgd2hpY2ggcmVmZXJlbmNlDQo+ID4gPiA+IGZyYW1lDQo+ID4gPiA+ IGNvbnRhaW5zIHRoZSBDREYgdmFsdWVzDQo+ID4gPiA+ICsgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFuZCBvdGhlciBzdGF0ZSB0aGF0IHNob3VsZCBiZQ0KPiA+ID4gPiBsb2FkZWQg YXQgdGhlIHN0YXJ0IG9mIHRoZSBmcmFtZQ0KPiA+ID4gPiArICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzbG90cyB3aWxsIGJlIHVwZGF0ZWQgd2l0aCB0aGUNCj4gPiA+ID4gY3VycmVu dCBmcmFtZSBhZnRlciBpdCBpcyBkZWNvZGVkDQo+ID4gPiA+ICsgKiBAZGlzYWJsZV9mcmFtZV9l bmRfdXBkYXRlX2NkZjppbmRpY2F0ZXMgdGhlIGVuZCBvZiBmcmFtZQ0KPiA+ID4gPiBDREYNCj4g PiA+ID4gdXBkYXRlIGlzIGRpc2FibGUgb3IgZW5hYmxlDQo+ID4gPiA+ICsgKiBAZGlzYWJsZV9j ZGZfdXBkYXRlOiAgICAgICAgIHNwZWNpZmllZCB3aGV0aGVyIHRoZSBDREYNCj4gPiA+ID4gdXBk YXRlDQo+ID4gPiA+IGluIHRoZSBzeW1ib2wNCj4gPiA+ID4gKyAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGVjb2RpbmcgcHJvY2VzcyBzaG91bGQgYmUNCj4gPiA+ID4gZGlzYWJsZXMN Cj4gPiA+ID4gKyAqIEBza2lwX21vZGU6ICAgICAgICAgICAgICAgICAgYXYxIHNraXAgbW9kZSBw YXJhbWV0ZXJzDQo+ID4gPiA+ICsgKiBAc2VnOiAgICAgICAgICAgICAgICAgICAgICAgIGF2MSBz ZWdtZW50YW9uIHBhcmFtZXRlcnMNCj4gPiA+ID4gKyAqIEBkZWx0YV9xX2xmOiAgICAgICAgICAg ICAgICAgYXYxIGRlbHRhIGxvb3AgZmlsZXRlcg0KPiA+ID4gPiArICogQHF1YW50OiAgICAgICAg ICAgICAgICAgICAgICBhdjEgUXVhbnRpemF0aW9uIHBhcmFtcw0KPiA+ID4gPiArICogQGxyOiAg ICAgICAgICAgICAgICAgICAgICAgICBhdjEgTG9vcCBSZXN0YXVyYXRpb24NCj4gPiA+ID4gcGFy YW1ldGVycw0KPiA+ID4gPiArICogQHN1cGVycmVzX2Rlbm9tOiAgICAgICAgICAgICB0aGUgZGVu b21pbmF0b3IgZm9yIHRoZQ0KPiA+ID4gPiB1cHNjYWxpbmcNCj4gPiA+ID4gcmF0aW8NCj4gPiA+ ID4gKyAqIEBsb29wX2ZpbHRlcjogICAgICAgICAgICAgICAgYXYxIExvb3AgZmlsdGVyIHBhcmFt ZXRlcnMNCj4gPiA+ID4gKyAqIEBjZGVmOiAgICAgICAgICAgICAgICAgICAgICAgYXYxIENERUYg cGFyYW1ldGVycw0KPiA+ID4gPiArICogQG1mbXY6ICAgICAgICAgICAgICAgICAgICAgICBhdjEg bWZtdiBwYXJhbWV0ZXJzDQo+ID4gPiA+ICsgKiBAdGlsZTogICAgICAgICAgICAgICAgICAgICAg IGF2MSBUaWxlIGluZm8NCj4gPiA+ID4gKyAqIEBmcmFtZV9pc19pbnRyYTogICAgICAgICAgICAg aW50cmEgZnJhbWUNCj4gPiA+ID4gKyAqIEBsb3NzX2xlc3NfYXJyYXk6ICAgICAgICAgICAgbG9z cyBsZXNzIGFycmF5DQo+ID4gPiA+ICsgKiBAY29kZWRfbG9zc19sZXNzOiAgICAgICAgICAgIGNv ZGVkIGxzc3MgbGVzcw0KPiA+ID4gPiArICogQG1pX3Jvd3M6ICAgICAgICAgICAgICAgICAgICBz aXplIG9mIG1pIHVuaXQgaW4gcm93cw0KPiA+ID4gPiArICogQG1pX2NvbHM6ICAgICAgICAgICAg ICAgICAgICBzaXplIG9mIG1pIHVuaXQgaW4gY29scw0KPiA+ID4gPiArICovDQo+ID4gPiA+ICtz dHJ1Y3QgdmRlY19hdjFfc2xpY2VfdW5jb21wcmVzc2VkX2hlYWRlciB7DQo+ID4gPiA+ICt1OCB1 c2VfcmVmX2ZyYW1lX212czsNCj4gPiA+ID4gK2ludCBvcmRlcl9oaW50Ow0KPiA+ID4gPiArc3Ry dWN0IHZkZWNfYXYxX3NsaWNlX2dtIGdtW1Y0TDJfQVYxX1RPVEFMX1JFRlNfUEVSX0ZSQU1FXTsN Cj4gPiA+ID4gK3UzMiB1cHNjYWxlZF93aWR0aDsNCj4gPiA+ID4gK3UzMiBmcmFtZV93aWR0aDsN Cj4gPiA+ID4gK3UzMiBmcmFtZV9oZWlnaHQ7DQo+ID4gPiA+ICt1OCByZWR1Y2VkX3R4X3NldDsN Cj4gPiA+ID4gK3U4IHR4X21vZGU7DQo+ID4gPiA+ICt1OCB1bmlmb3JtX3RpbGVfc3BhY2luZ19m bGFnOw0KPiA+ID4gPiArdTggaW50ZXJwb2xhdGlvbl9maWx0ZXI7DQo+ID4gPiA+ICt1OCBhbGxv d193YXJwZWRfbW90aW9uOw0KPiA+ID4gPiArdTggaXNfbW90aW9uX21vZGVfc3dpdGNoYWJsZTsN Cj4gPiA+ID4gK3U4IHJlZmVyZW5jZV9tb2RlOw0KPiA+ID4gPiArdTggYWxsb3dfaGlnaF9wcmVj aXNpb25fbXY7DQo+ID4gPiA+ICt1OCBhbGxvd19pbnRyYV9iYzsNCj4gPiA+ID4gK3U4IGZvcmNl X2ludGVnZXJfbXY7DQo+ID4gPiA+ICt1OCBhbGxvd19zY3JlZW5fY29udGVudF90b29sczsNCj4g PiA+ID4gK3U4IGVycm9yX3Jlc2lsaWVudF9tb2RlOw0KPiA+ID4gPiArdTggZnJhbWVfdHlwZTsN Cj4gPiA+ID4gK3U4IHByaW1hcnlfcmVmX2ZyYW1lOw0KPiA+ID4gPiArdTggZGlzYWJsZV9mcmFt ZV9lbmRfdXBkYXRlX2NkZjsNCj4gPiA+ID4gK3UzMiBkaXNhYmxlX2NkZl91cGRhdGU7DQo+ID4g PiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2Vfc20gc2tpcF9tb2RlOw0KPiA+ID4gPiArc3RydWN0 IHZkZWNfYXYxX3NsaWNlX3NlZyBzZWc7DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2Vf ZGVsdGFfcV9sZiBkZWx0YV9xX2xmOw0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX3F1 YW50aXphdGlvbiBxdWFudDsNCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV9sciBscjsN Cj4gPiA+ID4gK3UzMiBzdXBlcnJlc19kZW5vbTsNCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9z bGljZV9sb29wX2ZpbHRlciBsb29wX2ZpbHRlcjsNCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9z bGljZV9jZGVmIGNkZWY7DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfbWZtdiBtZm12 Ow0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX3RpbGUgdGlsZTsNCj4gPiA+ID4gK3U4 IGZyYW1lX2lzX2ludHJhOw0KPiA+ID4gPiArdTggbG9zc19sZXNzX2FycmF5W1Y0TDJfQVYxX01B WF9TRUdNRU5UU107DQo+ID4gPiA+ICt1OCBjb2RlZF9sb3NzX2xlc3M7DQo+ID4gPiA+ICt1MzIg bWlfcm93czsNCj4gPiA+ID4gK3UzMiBtaV9jb2xzOw0KPiA+ID4gPiArfTsNCj4gPiA+ID4gKw0K PiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgKiBzdHJ1Y3QgdmRlY19hdjFfc2xpY2Vfc2VxX2hlYWRl ciAtIFJlcHJlc2VudHMgYW4gQVYxDQo+ID4gPiA+IFNlcXVlbmNlDQo+ID4gPiA+IE9CVQ0KPiA+ ID4gPiArICogQGJpdGRlcHRoOiAgICAgICAgICAgICAgICAgICB0aGUgYml0ZGVwdGggdG8gdXNl IGZvciB0aGUNCj4gPiA+ID4gc2VxdWVuY2UNCj4gPiA+ID4gKyAqIEBlbmFibGVfc3VwZXJyZXM6 ICAgICAgICAgICAgc3BlY2lmaWVzIHdoZXRoZXIgdGhlDQo+ID4gPiA+IHVzZV9zdXBlcnJlcw0K PiA+ID4gPiBzeW50YXggZWxlbWVudCBtYXkgYmUgcHJlc2VudA0KPiA+ID4gPiArICogQGVuYWJs ZV9maWx0ZXJfaW50cmE6ICAgICAgICBzcGVjaWZpZXMgdGhlIHVzZV9maWx0ZXJfaW50cmENCj4g PiA+ID4gc3ludGF4IGVsZW1lbnQgbWF5IGJlIHByZXNlbnQNCj4gPiA+ID4gKyAqIEBlbmFibGVf aW50cmFfZWRnZV9maWx0ZXI6ICAgd2hldGhlciB0aGUgaW50cmEgZWRnZQ0KPiA+ID4gPiBmaWx0 ZXJpbmcNCj4gPiA+ID4gcHJvY2VzcyBzaG91bGQgYmUgZW5hYmxlZA0KPiA+ID4gPiArICogQGVu YWJsZV9pbnRlcmludHJhX2NvbXBvdW5kOiBzcGVjaWZpZXMgdGhlIG1vZGUgaW5mbyBmbw0KPiA+ ID4gPiByaW50ZXINCj4gPiA+ID4gYmxvY2tzIG1heQ0KPiA+ID4gPiArICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb250YWluIHRoZSBzeW50YXggZWxlbWVudA0KPiA+ID4gPiBpbnRl cmludHJhDQo+ID4gPiA+ICsgKiBAZW5hYmxlX21hc2tlZF9jb21wb3VuZDogICAgIHNwZWNpZmll cyB0aGUgbW9kZSBpbmZvIGZvDQo+ID4gPiA+IHJpbnRlcg0KPiA+ID4gPiBibG9ja3MgbWF5DQo+ ID4gPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW4gdGhlIHN5bnRh eCBlbGVtZW50DQo+ID4gPiA+IGNvbXBvdW5kX3R5cGUNCj4gPiA+ID4gKyAqIEBlbmFibGVfZHVh bF9maWx0ZXI6ICAgICAgICAgdGhlIGludGVyIHByZWRpY3Rpb24gZmlsdGVyDQo+ID4gPiA+IHR5 cGUNCj4gPiA+ID4gbWF5IGJlIHNwZWNpZmllZCBpbmRlcGVuZGVudGx5DQo+ID4gPiA+ICsgKiBA ZW5hYmxlX2pudF9jb21wOiAgICAgICAgICAgIGRpc3RhbmNlIHdlaWdodHMgcHJvY2VzcyBtYXkN Cj4gPiA+ID4gYmUNCj4gPiA+ID4gdXNlZCBmb3IgaW50ZXIgcHJlZGljdGlvbg0KPiA+ID4gPiAr ICogQG1vbm9fY2hyb21lOiAgICAgICAgICAgICAgICBpbmRpY2F0ZXMgdGhlIHZpZGVvIGRvZXMg bm90DQo+ID4gPiA+IGNvbnRhaW4gVSBhbmQgViBjb2xvciBwbGFuZXMNCj4gPiA+ID4gKyAqIEBl bmFibGVfb3JkZXJfaGludDogICAgICAgICAgdG9vbHMgYmFzZWQgb24gdGhlIHZhbHVlcyBvZg0K PiA+ID4gPiBvcmRlcg0KPiA+ID4gPiBoaW50cyBtYXkgYmUgdXNlZA0KPiA+ID4gPiArICogQG9y ZGVyX2hpbnRfYml0czogICAgICAgICAgICB0aGUgbnVtYmVyIG9mIGJpdHMgdXNlZCBmb3INCj4g PiA+ID4gdGhlDQo+ID4gPiA+IG9yZGVyX2hpbnQgZmllbGQgYXQgZWFjaCBmcmFtZQ0KPiA+ID4g PiArICogQHVzZV8xMjh4MTI4X3N1cGVyYmxvY2s6ICAgICBpbmRpY2F0ZXMgc3VwZXJibG9ja3Mg Y29udGFpbg0KPiA+ID4gPiAxMjgqMTI4IGx1bWEgc2FtcGxlcw0KPiA+ID4gPiArICogQHN1YnNh bXBsaW5nX3g6ICAgICAgICAgICAgICB0aGUgY2hyb21hIHN1YnNhbWxpbmcgZm9ybWF0DQo+ID4g PiA+ICsgKiBAc3Vic2FtcGxpbmdfeTogICAgICAgICAgICAgIHRoZSBjaHJvbWEgc3Vic2FtbGlu ZyBmb3JtYXQNCj4gPiA+ID4gKyAqIEBtYXhfZnJhbWVfd2lkdGg6ICAgICAgICAgICAgdGhlIG1h eGltdW0gZnJhbWUgd2lkdGggZm9yDQo+ID4gPiA+IHRoZQ0KPiA+ID4gPiBmcmFtZXMgcmVwcmVz ZW50ZWQgYnkgc2VxdWVuY2UNCj4gPiA+ID4gKyAqIEBtYXhfZnJhbWVfaGVpZ2h0OiAgICAgICAg ICAgdGhlIG1heGltdW0gZnJhbWUgaGVpZ2h0IGZvcg0KPiA+ID4gPiB0aGUNCj4gPiA+ID4gZnJh bWVzIHJlcHJlc2VudGVkIGJ5IHNlcXVlbmNlDQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4gK3N0cnVj dCB2ZGVjX2F2MV9zbGljZV9zZXFfaGVhZGVyIHsNCj4gPiA+ID4gK3U4IGJpdGRlcHRoOw0KPiA+ ID4gPiArdTggZW5hYmxlX3N1cGVycmVzOw0KPiA+ID4gPiArdTggZW5hYmxlX2ZpbHRlcl9pbnRy YTsNCj4gPiA+ID4gK3U4IGVuYWJsZV9pbnRyYV9lZGdlX2ZpbHRlcjsNCj4gPiA+ID4gK3U4IGVu YWJsZV9pbnRlcmludHJhX2NvbXBvdW5kOw0KPiA+ID4gPiArdTggZW5hYmxlX21hc2tlZF9jb21w b3VuZDsNCj4gPiA+ID4gK3U4IGVuYWJsZV9kdWFsX2ZpbHRlcjsNCj4gPiA+ID4gK3U4IGVuYWJs ZV9qbnRfY29tcDsNCj4gPiA+ID4gK3U4IG1vbm9fY2hyb21lOw0KPiA+ID4gPiArdTggZW5hYmxl X29yZGVyX2hpbnQ7DQo+ID4gPiA+ICt1OCBvcmRlcl9oaW50X2JpdHM7DQo+ID4gPiA+ICt1OCB1 c2VfMTI4eDEyOF9zdXBlcmJsb2NrOw0KPiA+ID4gPiArdTggc3Vic2FtcGxpbmdfeDsNCj4gPiA+ ID4gK3U4IHN1YnNhbXBsaW5nX3k7DQo+ID4gPiA+ICt1MzIgbWF4X2ZyYW1lX3dpZHRoOw0KPiA+ ID4gPiArdTMyIG1heF9mcmFtZV9oZWlnaHQ7DQo+ID4gPiA+ICt9Ow0KPiA+ID4gPiArDQo+ID4g PiA+ICsvKioNCj4gPiA+ID4gKyAqIHN0cnVjdCB2ZGVjX2F2MV9zbGljZV9mcmFtZSAtIFJlcHJl c2VudHMgY3VycmVudCBGcmFtZSBpbmZvDQo+ID4gPiA+ICsgKiBAdWg6ICAgICAgICAgICAgICAg ICAgICAgICAgIHVuY29tcHJlc3NlZCBoZWFkZXIgaW5mbw0KPiA+ID4gPiArICogQHNlcTogICAg ICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZSBoZWFkZXIgaW5mbw0KPiA+ID4gPiArICogQGxh cmdlX3NjYWxlX3RpbGU6ICAgICAgICAgICBpcyBsYXJnZSBzY2FsZSBtb2RlDQo+ID4gPiA+ICsg KiBAY3VyX3RzOiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgZnJhbWUgdGltZXN0YW1wDQo+ ID4gPiA+ICsgKiBAcHJldl9mYl9pZHg6ICAgICAgICAgICAgICAgIHByZXYgc2xvdCBpZA0KPiA+ ID4gPiArICogQHJlZl9mcmFtZV9zaWduX2JpYXM6ICAgICAgICBhcnJheXMgZm9yIHJlZl9mcmFt ZSBzaWduIGJpYXMNCj4gPiA+ID4gKyAqIEBvcmRlcl9oaW50czogICAgICAgICAgICAgICAgYXJy YXlzIGZvciByZWZfZnJhbWUgb3JkZXINCj4gPiA+ID4gaGludA0KPiA+ID4gPiArICogQHJlZl9m cmFtZV92YWxpZDogICAgICAgICAgICBhcnJheXMgZm9yIHZhbGlkIHJlZl9mcmFtZQ0KPiA+ID4g PiArICogQHJlZl9mcmFtZV9tYXA6ICAgICAgICAgICAgICBtYXAgdG8gc2xvdCBmcmFtZSBpbmZv DQo+ID4gPiA+ICsgKiBAZnJhbWVfcmVmczogICAgICAgICAgICAgICAgIHJlZl9mcmFtZSBpbmZv DQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV9mcmFtZSB7DQo+ ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfdW5jb21wcmVzc2VkX2hlYWRlciB1aDsNCj4g PiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV9zZXFfaGVhZGVyIHNlcTsNCj4gPiA+ID4gK3U4 IGxhcmdlX3NjYWxlX3RpbGU7DQo+ID4gPiA+ICt1NjQgY3VyX3RzOw0KPiA+ID4gPiAraW50IHBy ZXZfZmJfaWR4Ow0KPiA+ID4gPiArdTggcmVmX2ZyYW1lX3NpZ25fYmlhc1tWNEwyX0FWMV9UT1RB TF9SRUZTX1BFUl9GUkFNRV07DQo+ID4gPiA+ICt1MzIgb3JkZXJfaGludHNbVjRMMl9BVjFfUkVG U19QRVJfRlJBTUVdOw0KPiA+ID4gPiArdTMyIHJlZl9mcmFtZV92YWxpZFtWNEwyX0FWMV9SRUZT X1BFUl9GUkFNRV07DQo+ID4gPiA+ICtpbnQgcmVmX2ZyYW1lX21hcFtWNEwyX0FWMV9UT1RBTF9S RUZTX1BFUl9GUkFNRV07DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfZnJhbWVfcmVm cw0KPiA+ID4gPiBmcmFtZV9yZWZzW1Y0TDJfQVYxX1JFRlNfUEVSX0ZSQU1FXTsNCj4gPiA+ID4g K307DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICogc3RydWN0IHZkZWNfYXYx X3NsaWNlX3dvcmtfYnVmZmVyIC0gd29yayBidWZmZXIgZm9yIGxhdA0KPiA+ID4gPiArICogQG12 X2FkZHI6ICAgIG12IGJ1ZmZlciBtZW1vcnkgaW5mbw0KPiA+ID4gPiArICogQGNkZl9hZGRyOiAg IGNkZiBidWZmZXIgbWVtb3J5IGluZm8NCj4gPiA+ID4gKyAqIEBzZWdpZF9hZGRyOiBzZWdpZCBi dWZmZXIgbWVtb3J5IGluZm8NCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYx X3NsaWNlX3dvcmtfYnVmZmVyIHsNCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV9tZW0g bXZfYWRkcjsNCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV9tZW0gY2RmX2FkZHI7DQo+ ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfbWVtIHNlZ2lkX2FkZHI7DQo+ID4gPiA+ICt9 Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIHN0cnVjdCB2ZGVjX2F2MV9z bGljZV9mcmFtZV9pbmZvIC0gZnJhbWUgaW5mbyBmb3IgZWFjaCBzbG90DQo+ID4gPiA+ICsgKiBA ZnJhbWVfdHlwZTogICAgICAgICBmcmFtZSB0eXBlDQo+ID4gPiA+ICsgKiBAZnJhbWVfaXNfaW50 cmE6ICAgICBpcyBpbnRyYSBmcmFtZQ0KPiA+ID4gPiArICogQG9yZGVyX2hpbnQ6ICAgICAgICAg b3JkZXIgaGludA0KPiA+ID4gPiArICogQG9yZGVyX2hpbnRzOiAgICAgICAgcmVmZXJlY2UgZnJh bWUgb3JkZXIgaGludA0KPiA+ID4gPiArICogQHVwc2NhbGVkX3dpZHRoOiAgICAgdXBzY2FsZSB3 aWR0aA0KPiA+ID4gPiArICogQHBpY19waXRjaDogICAgICAgICAgYnVmZmVyIHBpdGNoDQo+ID4g PiA+ICsgKiBAZnJhbWVfd2lkdGg6ICAgICAgICBmcmFuZSB3aWR0aA0KPiA+ID4gPiArICogQGZy YW1lX2hlaWdodDogICAgICAgZnJhbWUgaGVpZ2h0DQo+ID4gPiA+ICsgKiBAbWlfcm93czogICAg ICAgICAgICByb3dzIGluIG1vZGUgaW5mbw0KPiA+ID4gPiArICogQG1pX2NvbHM6ICAgICAgICAg ICAgY29scyBpbiBtb2RlIGluZm8NCj4gPiA+ID4gKyAqIEByZWZfY291bnQ6ICAgICAgICAgIG1h cmsgdG8gcmVmZXJlbmNlIGZyYW1lIGNvdW50cw0KPiA+ID4gPiArICovDQo+ID4gPiA+ICtzdHJ1 Y3QgdmRlY19hdjFfc2xpY2VfZnJhbWVfaW5mbyB7DQo+ID4gPiA+ICt1OCBmcmFtZV90eXBlOw0K PiA+ID4gPiArdTggZnJhbWVfaXNfaW50cmE7DQo+ID4gPiA+ICtpbnQgb3JkZXJfaGludDsNCj4g PiA+ID4gK3UzMiBvcmRlcl9oaW50c1tWNEwyX0FWMV9SRUZTX1BFUl9GUkFNRV07DQo+ID4gPiA+ ICt1MzIgdXBzY2FsZWRfd2lkdGg7DQo+ID4gPiA+ICt1MzIgcGljX3BpdGNoOw0KPiA+ID4gPiAr dTMyIGZyYW1lX3dpZHRoOw0KPiA+ID4gPiArdTMyIGZyYW1lX2hlaWdodDsNCj4gPiA+ID4gK3Uz MiBtaV9yb3dzOw0KPiA+ID4gPiArdTMyIG1pX2NvbHM7DQo+ID4gPiA+ICtpbnQgcmVmX2NvdW50 Ow0KPiA+ID4gPiArfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgKiBzdHJ1 Y3QgdmRlY19hdjFfc2xpY2Vfc2xvdCAtIHNsb3QgaW5mbyB0aGF0IG5lZWRzIHRvIGJlDQo+ID4g PiA+IHNhdmVkDQo+ID4gPiA+IGluIHRoZSBnbG9iYWwgaW5zdGFuY2UNCj4gPiA+ID4gKyAqIEBm cmFtZV9pbmZvOiBmcmFtZSBpbmZvIGZvciBlYWNoIHNsb3QNCj4gPiA+ID4gKyAqIEB0aW1lc3Rh bXA6ICB0aW1lIHN0YW1wIGluZm8NCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArc3RydWN0IHZkZWNf YXYxX3NsaWNlX3Nsb3Qgew0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX2ZyYW1lX2lu Zm8NCj4gPiA+ID4gZnJhbWVfaW5mb1tBVjFfTUFYX0ZSQU1FX0JVRl9DT1VOVF07DQo+ID4gPiA+ ICt1NjQgdGltZXN0YW1wW0FWMV9NQVhfRlJBTUVfQlVGX0NPVU5UXTsNCj4gPiA+ID4gK307DQo+ ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICogc3RydWN0IHZkZWNfYXYxX3NsaWNl X2ZiIC0gZnJhbWUgYnVmZmVyIGZvciBkZWNvZGluZw0KPiA+ID4gPiArICogQHk6ICBjdXJyZW50 IHkgYnVmZmVyIGFkZHJlc3MgaW5mbw0KPiA+ID4gPiArICogQGM6ICBjdXJyZW50IGMgYnVmZmVy IGFkZHJlc3MgaW5mbw0KPiA+ID4gPiArICovDQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xp Y2VfZmIgew0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX21lbSB5Ow0KPiA+ID4gPiAr c3RydWN0IHZkZWNfYXYxX3NsaWNlX21lbSBjOw0KPiA+ID4gPiArfTsNCj4gPiA+ID4gKw0KPiA+ ID4gPiArLyoqDQo+ID4gPiA+ICsgKiBzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfdnNpIC0gZXhjaGFu Z2UgZnJhbWUgaW5mb3JtYXRpb24NCj4gPiA+ID4gYmV0d2Vlbg0KPiA+ID4gPiBNYWluIENQVSBh bmQgTWljcm9QDQo+ID4gPiA+ICsgKiBAYnM6aW5wdXQgYnVmZmVyIGluZm8NCj4gPiA+ID4gKyAq IEB3b3JrX2J1ZmZlcjp3b3JraW5nIGJ1ZmZlIGZvciBodw0KPiA+ID4gPiArICogQGNkZl90YWJs ZTpjZGZfdGFibGUgYnVmZmVyDQo+ID4gPiA+ICsgKiBAY2RmX3RtcDpjZGYgdGVtcCBidWZmZXIN Cj4gPiA+ID4gKyAqIEByZF9tdjptdiBidWZmZXIgZm9yIGxhdCBvdXRwdXQgLCBjb3JlIGlucHV0 DQo+ID4gPiA+ICsgKiBAdWJlOnViZSBidWZmZXINCj4gPiA+ID4gKyAqIEB0cmFuczp0cmFuc2Nv ZGVkIGJ1ZmZlcg0KPiA+ID4gPiArICogQGVycl9tYXA6ZXJyIG1hcCBidWZmZXINCj4gPiA+ID4g KyAqIEByb3dfaW5mbzpyb3cgaW5mbyBidWZmZXINCj4gPiA+ID4gKyAqIEBmYjpjdXJyZW50IHkv YyBidWZmZXINCj4gPiA+ID4gKyAqIEByZWY6cmVmIHkvYyBidWZmZXINCj4gPiA+ID4gKyAqIEBp cV90YWJsZTppcSB0YWJsZSBidWZmZXINCj4gPiA+ID4gKyAqIEB0aWxlOnRpbGUgYnVmZmVyDQo+ ID4gPiA+ICsgKiBAc2xvdHM6c2xvdHMgaW5mbyBmb3IgZWFjaCBmcmFtZQ0KPiA+ID4gPiArICog QHNsb3RfaWQ6Y3VycmVudCBmcmFtZSBzbG90IGlkDQo+ID4gPiA+ICsgKiBAZnJhbWU6Y3VycmVu dCBmcmFtZSBpbmZvDQo+ID4gPiA+ICsgKiBAc3RhdGU6c3RhdHVzIGFmdGVyIGRlY29kZSBkb25l DQo+ID4gPiA+ICsgKiBAY3VyX2xzdF90aWxlX2lkOnRpbGUgaWQgZm9yIGxhcmdlIHNjYWxlDQo+ ID4gPiA+ICsgKi8NCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV92c2kgew0KPiA+ID4g PiArLyogbGF0ICovDQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfbWVtIGJzOw0KPiA+ ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX3dvcmtfYnVmZmVyDQo+ID4gPiA+IHdvcmtfYnVm ZmVyW0FWMV9NQVhfRlJBTUVfQlVGX0NPVU5UXTsNCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9z bGljZV9tZW0gY2RmX3RhYmxlOw0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX21lbSBj ZGZfdG1wOw0KPiA+ID4gPiArLyogTEFUIHN0YWdlJ3Mgb3V0cHV0LCBDb3JlIHN0YWdlJ3MgaW5w dXQgKi8NCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV9tZW0gcmRfbXY7DQo+ID4gPiA+ ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfbWVtIHViZTsNCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2 MV9zbGljZV9tZW0gdHJhbnM7DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfbWVtIGVy cl9tYXA7DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfbWVtIHJvd19pbmZvOw0KPiA+ ID4gPiArLyogY29yZSAqLw0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX2ZiIGZiOw0K PiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX2ZiIHJlZltWNEwyX0FWMV9SRUZTX1BFUl9G UkFNRV07DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfbWVtIGlxX3RhYmxlOw0KPiA+ ID4gPiArLyogbGF0IGFuZCBjb3JlIHNoYXJlKi8NCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9z bGljZV9tZW0gdGlsZTsNCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV9zbG90IHNsb3Rz Ow0KPiA+ID4gPiArdTggc2xvdF9pZDsNCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV9m cmFtZSBmcmFtZTsNCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV9zdGF0ZSBzdGF0ZTsN Cj4gPiA+ID4gK3UzMiBjdXJfbHN0X3RpbGVfaWQ7DQo+ID4gPiA+ICt9Ow0KPiA+ID4gPiArDQo+ ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIHN0cnVjdCB2ZGVjX2F2MV9zbGljZV9wZmMgLSBwZXIt ZnJhbWUgY29udGV4dCB0aGF0IGNvbnRhaW5zDQo+ID4gPiA+IGENCj4gPiA+ID4gbG9jYWwgdnNp Lg0KPiA+ID4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgaXQgZnJvbSBs YXQgdG8gY29yZQ0KPiA+ID4gPiArICogQHZzaTogICAgICAgIGxvY2FsIHZzaS4gY29weSB0by9m cm9tIHJlbW90ZSB2c2kNCj4gPiA+ID4gYmVmb3JlL2FmdGVyDQo+ID4gPiA+IGRlY29kaW5nDQo+ ID4gPiA+ICsgKiBAcmVmX2lkeDogICAgcmVmZXJlbmNlIGJ1ZmZlciB0aW1lc3RhbXANCj4gPiA+ ID4gKyAqIEBzZXE6ICAgICAgICBwaWN0dXJlIHNlcXVlbmNlDQo+ID4gPiA+ICsgKi8NCj4gPiA+ ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV9wZmMgew0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYx X3NsaWNlX3ZzaSB2c2k7DQo+ID4gPiA+ICt1NjQgcmVmX2lkeFtWNEwyX0FWMV9SRUZTX1BFUl9G UkFNRV07DQo+ID4gPiA+ICtpbnQgc2VxOw0KPiA+ID4gPiArfTsNCj4gPiA+ID4gKw0KPiA+ID4g PiArLyoqDQo+ID4gPiA+ICsgKiBzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfaW5zdGFuY2UgLSByZXBy ZXNlbnQgb25lIGF2MSBpbnN0YW5jZQ0KPiA+ID4gPiArICogQGN0eDogICAgICAgICAgICAgICAg cG9pbnRlciB0byBjb2RlYydzIGNvbnRleHQNCj4gPiA+ID4gKyAqIEB2cHU6ICAgICAgICAgICAg ICAgIFZQVSBpbnN0YW5jZQ0KPiA+ID4gPiArICogQGlxX3RhYmxlOiAgICAgICAgICAgaXEgdGFi bGUgYnVmZmVyDQo+ID4gPiA+ICsgKiBAY2RmX3RhYmxlOiAgICAgICAgICBjZGYgdGFibGUgYnVm ZmVyDQo+ID4gPiA+ICsgKiBAbXY6ICAgICAgICAgICAgICAgICBtdiB3b3JraW5nIGJ1ZmZlcg0K PiA+ID4gPiArICogQGNkZjogICAgICAgICAgICAgICAgY2RmIHdvcmtpbmcgYnVmZmVyDQo+ID4g PiA+ICsgKiBAc2VnOiAgICAgICAgICAgICAgICBzZWdtZW50YXRpb24gd29ya2luZyBidWZmZXIN Cj4gPiA+ID4gKyAqIEBjZGZfdGVtcDogICAgICAgICAgIGNkZiB0ZW1wIGJ1ZmZlcg0KPiA+ID4g PiArICogQHRpbGU6ICAgICAgICAgICAgICAgdGlsZSBidWZmZXINCj4gPiA+ID4gKyAqIEBzbG90 czogICAgICAgICAgICAgIHNsb3RzIGluZm8NCj4gPiA+ID4gKyAqIEB0aWxlX2dyb3VwOiAgICAg ICAgIHRpbGVfZ3JvdXAgZW50cnkNCj4gPiA+ID4gKyAqIEBsZXZlbDogICAgICAgICAgICAgIGxl dmVsIG9mIGN1cnJlbnQgcmVzb2x1dGlvbg0KPiA+ID4gPiArICogQHdpZHRoOiAgICAgICAgICAg ICAgd2lkdGggb2YgbGFzdCBwaWN0dXJlDQo+ID4gPiA+ICsgKiBAaGVpZ2h0OiAgICAgICAgICAg ICBoZWlnaHQgb2YgbGFzdCBwaWN0dXJlDQo+ID4gPiA+ICsgKiBAZnJhbWVfdHlwZTogICAgICAg ICBmcmFtZV90eXBlIG9mIGxhc3QgcGljdHVyZQ0KPiA+ID4gPiArICogQGlycTogICAgICAgICAg ICAgICAgaXJxIHRvIE1haW4gQ1BVIG9yIE1pY3JvUA0KPiA+ID4gPiArICogQGlubmVyYWNpbmdf bW9kZTogICAgaXMgaW5uZXJhY2luZyBtb2RlDQo+ID4gPiA+ICsgKiBAaW5pdF92c2k6ICAgICAg ICAgICB2c2kgdXNlZCBmb3IgaW5pdGlhbGl6ZWQgQVYxIGluc3RhbmNlDQo+ID4gPiA+ICsgKiBA dnNpOiAgICAgICAgICAgICAgICB2c2kgdXNlZCBmb3IgZGVjb2RpbmcvZmx1c2ggLi4uDQo+ID4g PiA+ICsgKiBAY29yZV92c2k6ICAgICAgICAgICB2c2kgdXNlZCBmb3IgQ29yZSBzdGFnZQ0KPiA+ ID4gPiArICogQHNlcTogICAgICAgICAgICAgICAgZ2xvYmFsIHBpY3R1cmUgc2VxdWVuY2UNCj4g PiA+ID4gKyAqLw0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX2luc3RhbmNlIHsNCj4g PiA+ID4gK3N0cnVjdCBtdGtfdmNvZGVjX2N0eCAqY3R4Ow0KPiA+ID4gPiArc3RydWN0IHZkZWNf dnB1X2luc3QgdnB1Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdHJ1Y3QgbXRrX3Zjb2RlY19tZW0g aXFfdGFibGU7DQo+ID4gPiA+ICtzdHJ1Y3QgbXRrX3Zjb2RlY19tZW0gY2RmX3RhYmxlOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICtzdHJ1Y3QgbXRrX3Zjb2RlY19tZW0gbXZbQVYxX01BWF9GUkFNRV9C VUZfQ09VTlRdOw0KPiA+ID4gPiArc3RydWN0IG10a192Y29kZWNfbWVtIGNkZltBVjFfTUFYX0ZS QU1FX0JVRl9DT1VOVF07DQo+ID4gPiA+ICtzdHJ1Y3QgbXRrX3Zjb2RlY19tZW0gc2VnW0FWMV9N QVhfRlJBTUVfQlVGX0NPVU5UXTsNCj4gPiA+ID4gK3N0cnVjdCBtdGtfdmNvZGVjX21lbSBjZGZf dGVtcDsNCj4gPiA+ID4gK3N0cnVjdCBtdGtfdmNvZGVjX21lbSB0aWxlOw0KPiA+ID4gPiArc3Ry dWN0IHZkZWNfYXYxX3NsaWNlX3Nsb3Qgc2xvdHM7DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFf c2xpY2VfdGlsZV9ncm91cCB0aWxlX2dyb3VwOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKiBmb3Ig cmVzb2x1dGlvbiBjaGFuZ2UgYW5kIGdldF9waWNfaW5mbyAqLw0KPiA+ID4gPiArZW51bSB2ZGVj X2F2MV9zbGljZV9yZXNvbHV0aW9uX2xldmVsIGxldmVsOw0KPiA+ID4gPiArdTMyIHdpZHRoOw0K PiA+ID4gPiArdTMyIGhlaWdodDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArdTMyIGZyYW1lX3R5cGU7 DQo+ID4gPiA+ICt1MzIgaXJxOw0KPiA+ID4gPiArdTMyIGlubmVyYWNpbmdfbW9kZTsNCj4gPiA+ ID4gKw0KPiA+ID4gPiArLyogTWljcm9QIHZzaSAqLw0KPiA+ID4gPiArdW5pb24gew0KPiA+ID4g PiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX2luaXRfdnNpICppbml0X3ZzaTsNCj4gPiA+ID4gK3N0 cnVjdCB2ZGVjX2F2MV9zbGljZV92c2kgKnZzaTsNCj4gPiA+ID4gK307DQo+ID4gPiA+ICtzdHJ1 Y3QgdmRlY19hdjFfc2xpY2VfdnNpICpjb3JlX3ZzaTsNCj4gPiA+ID4gK2ludCBzZXE7DQo+ID4g PiA+ICt9Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgaW50IHZkZWNfYXYxX3NsaWNlX2Nv cmVfZGVjb2RlKHN0cnVjdCB2ZGVjX2xhdF9idWYNCj4gPiA+ID4gKmxhdF9idWYpOw0KPiA+ID4g PiArDQo+ID4gPiA+ICtzdGF0aWMgaW5saW5lIGludCB2ZGVjX2F2MV9zbGljZV9nZXRfbXNiKHUz MiBuKQ0KPiA+ID4gPiArew0KPiA+ID4gPiAraWYgKG4gPT0gMCkNCj4gPiA+ID4gK3JldHVybiAw Ow0KPiA+ID4gPiArcmV0dXJuIDMxIF4gX19idWlsdGluX2NseihuKTsNCj4gPiA+ID4gK30NCj4g PiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIGlubGluZSBib29sIHZkZWNfYXYxX3NsaWNlX25lZWRf c2NhbGUodTMyIHJlZl93aWR0aCwNCj4gPiA+ID4gdTMyDQo+ID4gPiA+IHJlZl9oZWlnaHQsDQo+ ID4gPiA+ICsgICAgIHUzMiB0aGlzX3dpZHRoLCB1MzINCj4gPiA+ID4gdGhpc19oZWlnaHQpDQo+ ID4gPiA+ICt7DQo+ID4gPiA+ICtyZXR1cm4gKCh0aGlzX3dpZHRoIDw8IDEpID49IHJlZl93aWR0 aCkgJiYNCj4gPiA+ID4gKygodGhpc19oZWlnaHQgPDwgMSkgPj0gcmVmX2hlaWdodCkgJiYNCj4g PiA+ID4gKyh0aGlzX3dpZHRoIDw9IChyZWZfd2lkdGggPDwgNCkpICYmDQo+ID4gPiA+ICsodGhp c19oZWlnaHQgPD0gKHJlZl9oZWlnaHQgPDwgNCkpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ ID4gPiA+ICtzdGF0aWMgdm9pZCAqdmRlY19hdjFfZ2V0X2N0cmxfcHRyKHN0cnVjdCBtdGtfdmNv ZGVjX2N0eCAqY3R4LA0KPiA+ID4gPiBpbnQNCj4gPiA+ID4gaWQpDQo+ID4gPiA+ICt7DQo+ID4g PiA+ICtzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsID0gdjRsMl9jdHJsX2ZpbmQoJmN0eC0+Y3RybF9o ZGwsIGlkKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAraWYgKCFjdHJsKQ0KPiA+ID4gPiArcmV0dXJu IEVSUl9QVFIoLUVJTlZBTCk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3JldHVybiBjdHJsLT5wX2N1 ci5wOw0KPiA+ID4gPiArfQ0KPiA+ID4gDQo+ID4gPiBJIHNlZSB3ZSBrZWVwIHJlcGVhdGluZyB0 aGlzIGtpbmQgb2YgYSB2NGwyX2N0cmxfZmluZCgpIHdyYXBwZXINCj4gPiA+IGluDQo+ID4gPiBk cml2ZXJzLg0KPiA+ID4gVGhlIG9ubHkgcmVhc29uIHRoaXMgY29kZSBjYW5ub3QgYmUgZmFjdG9y ZWQgb3V0IGlzIHRoZSAiY29udGV4dCINCj4gPiA+IHN0cnVjdCBwb2ludGVyDQo+ID4gPiBwb2lu dGluZyBhdCBzdHJ1Y3RzIG9mIGRpZmZlcmVudCB0eXBlcy4gTWF5YmUgd2UgY291bGQNCj4gPiA+ IA0KPiA+ID4gI2RlZmluZSB2NGwyX2dldF9jdHJsX3B0cihjdHgsIG1lbWJlciwgaWQpIFwNCj4g PiA+IF9fdjRsMl9nZXRfY3RybF9wdHIoKGN0eCksIG9mZnNldG9mKHR5cGVvZigqY3R4KSwgKG1l bWJlcikpLA0KPiA+ID4gKGlkKSkNCj4gPiA+IA0KPiA+ID4gdm9pZCAqX192NGwyX2dldF9jdHJs X3B0cih2b2lkICpjdHgsIHNpemVfdCBvZmZzZXQsIHUzMiBpZCkNCj4gPiA+IHsNCj4gPiA+IHN0 cnVjdCB2NGwyX2N0cmxfaGFuZGxlciAqaGRsID0gKHN0cnVjdCB2NGwyX2N0cmxfaGFuZGxlcg0K PiA+ID4gKikoY3R4ICsgb2Zmc2V0KTsNCj4gPiA+IHN0cnVjdCB2NGwyX2N0cmwgKmN0cmwgPSB2 NGwyX2N0cmxfZmluZChoZGwsIGlkKTsNCj4gPiA+IA0KPiA+ID4gaWYgKCFjdHJsKQ0KPiA+ID4g cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7DQo+ID4gPiANCj4gPiA+IHJldHVybiBjdHJsLT5wX2N1 ci5wOw0KPiA+ID4gfQ0KPiA+ID4gDQo+ID4gPiBhbmQgcmV1c2UgdjRsMl9nZXRfY3RybF9wdHIo KSBpbiBkcml2ZXJzPw0KPiA+ID4gDQo+ID4gPiBBIHNpbWlsYXIga2luZCBvZiB2b2lkKiBhcml0 aG1ldGljIGhhcHBlbnMgaW4gY29udGFpbmVyX29mLCBvbmx5DQo+ID4gPiB3aXRoDQo+ID4gPiAn LScuDQo+ID4gPiANCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIGludCB2ZGVjX2F2MV9zbGlj ZV9pbml0X2NkZl90YWJsZShzdHJ1Y3QNCj4gPiA+ID4gdmRlY19hdjFfc2xpY2VfaW5zdGFuY2Ug Kmluc3RhbmNlKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArdTggKnJlbW90ZV9jZGZfdGFibGU7DQo+ ID4gPiA+ICtzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eDsNCj4gPiA+ID4gK3N0cnVjdCB2ZGVj X2F2MV9zbGljZV9pbml0X3ZzaSAqdnNpOw0KPiA+ID4gPiAraW50IHJldDsNCj4gPiA+ID4gKw0K PiA+ID4gPiArY3R4ID0gaW5zdGFuY2UtPmN0eDsNCj4gPiA+ID4gK3ZzaSA9IGluc3RhbmNlLT52 cHUudnNpOw0KPiA+ID4gPiAraWYgKCFjdHggfHwgIXZzaSkgew0KPiA+ID4gPiArbXRrX3Zjb2Rl Y19lcnIoaW5zdGFuY2UsICJpbnZhbGlkIGN0eCBvciB2c2kgMHglcA0KPiA+ID4gPiAweCVwXG4i LA0KPiA+ID4gPiArICAgICAgIGN0eCwgdnNpKTsNCj4gPiA+ID4gK3JldHVybiAtRUlOVkFMOw0K PiA+ID4gPiArfQ0KPiA+ID4gDQo+ID4gPiBUaGUgYWJvdmUgaWYgYmxvY2sgaXMgcmVkdW5kYW50 LCBiZWNhdXNlIC0gZ2l2ZW4gdGhlIGN1cnJlbnQNCj4gPiA+IHNoYXBlIG9mDQo+ID4gPiB0aHMg ZHJpdmVyDQo+ID4gPiBjb2RlIC0gdGhlIGNvbmRpdGlvbiBpcyBuZXZlciB0cnVlLg0KPiA+ID4g DQo+ID4gPiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGZyb20gdmRlY19hdjFfc2xpY2Vf aW5pdCgpLCB3aGVyZQ0KPiA+ID4gYm90aA0KPiA+ID4gaW5zdGFuY2UtPmN0eCBhbmQgaW5zdGFu Y2UtPnZwdS52c2kgYXJlIHNldCB0byBzb21lIHZhbHVlcy4gVGhlDQo+ID4gPiBsYXR0ZXIgaXMg ZXZlbg0KPiA+ID4gY2hlY2tlZCBmb3IgYmVpbmcgbnVsbCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBp cyBjYWxsZWQuDQo+ID4gPiANCj4gPiA+IEluIHRoZSBjYWxsZXIsIGluc3RhbmNlLT5jdHggaXMg c2V0IHRvIHdoYXRldmVyIHRoZSBjYWxsZXINCj4gPiA+IHJlY2VpdmVzDQo+ID4gPiBmcm9tIGl0 cw0KPiA+ID4gY2FsbGVyLiBUaGlzIHBlcmhhcHMgbWlnaHQgYmUgY2hlY2tlZCwgYnV0IHZkZWNf YXYxX3NsaWNlX2luaXQoKQ0KPiA+ID4gZGVyZWZlcmVuY2VzDQo+ID4gPiBjdHggd2l0aG91dCBj aGVja2luZyBhbnl3YXkgKGluc3RhbmNlLT52cHUuY29kZWNfdHlwZSA9IGN0eC0NCj4gPiA+ID4g Y3VycmVudF9jb2RlYzspLg0KPiA+ID4gDQo+ID4gPiBTbyBtYXliZSBhZGQgYSBjaGVjayBpbiB2 ZGVjX2F2MV9zbGljZV9pbml0KCksIG9yIGVuc3VyZSB0aGF0DQo+ID4gPiB2ZGVjX2F2MV9zbGlj ZV9pbml0KCkgaXMgbmV2ZXIgcGFzc2VkIGEgTlVMTCBjdHguDQo+ID4gPiANCj4gPiA+ID4gKw0K PiA+ID4gPiArcmVtb3RlX2NkZl90YWJsZSA9IG10a192Y29kZWNfZndfbWFwX2RtX2FkZHIoY3R4 LT5kZXYtDQo+ID4gPiA+ID4gZndfaGFuZGxlciwNCj4gPiA+ID4gDQo+ID4gPiA+ICsgICAgICh1 MzIpdnNpLQ0KPiA+ID4gPiA+IGNkZl90YWJsZV9hZGRyKTsNCj4gPiA+ID4gDQo+ID4gPiA+ICtp ZiAoSVNfRVJSKHJlbW90ZV9jZGZfdGFibGUpKSB7DQo+ID4gPiA+ICttdGtfdmNvZGVjX2Vycihp bnN0YW5jZSwgImZhaWxlZCB0byBtYXAgY2RmIHRhYmxlXG4iKTsNCj4gPiA+ID4gK3JldHVybiBQ VFJfRVJSKHJlbW90ZV9jZGZfdGFibGUpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICttdGtfdmNvZGVjX2RlYnVnKGluc3RhbmNlLCAibWFwIGNkZiB0YWJsZSB0byAweCVwXG4iLA0K PiA+ID4gPiArIHJlbW90ZV9jZGZfdGFibGUpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtpZiAoaW5z dGFuY2UtPmNkZl90YWJsZS52YSkNCj4gPiA+ID4gK210a192Y29kZWNfbWVtX2ZyZWUoY3R4LCAm aW5zdGFuY2UtPmNkZl90YWJsZSk7DQo+ID4gPiA+ICtpbnN0YW5jZS0+Y2RmX3RhYmxlLnNpemUg PSB2c2ktPmNkZl90YWJsZV9zaXplOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtyZXQgPSBtdGtfdmNv ZGVjX21lbV9hbGxvYyhjdHgsICZpbnN0YW5jZS0+Y2RmX3RhYmxlKTsNCj4gPiA+ID4gK2lmIChy ZXQpDQo+ID4gPiA+ICtyZXR1cm4gcmV0Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICttZW1jcHkoaW5z dGFuY2UtPmNkZl90YWJsZS52YSwgcmVtb3RlX2NkZl90YWJsZSwgdnNpLQ0KPiA+ID4gPiA+IGNk Zl90YWJsZV9zaXplKTsNCj4gPiA+ID4gDQo+ID4gPiA+ICsNCj4gPiA+ID4gK3JldHVybiAwOw0K PiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgaW50IHZkZWNfYXYxX3NsaWNl X2luaXRfaXFfdGFibGUoc3RydWN0DQo+ID4gPiA+IHZkZWNfYXYxX3NsaWNlX2luc3RhbmNlICpp bnN0YW5jZSkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gK3U4ICpyZW1vdGVfaXFfdGFibGU7DQo+ID4g PiA+ICtzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eDsNCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2 MV9zbGljZV9pbml0X3ZzaSAqdnNpOw0KPiA+ID4gPiAraW50IHJldDsNCj4gPiA+ID4gKw0KPiA+ ID4gPiArY3R4ID0gaW5zdGFuY2UtPmN0eDsNCj4gPiA+ID4gK3ZzaSA9IGluc3RhbmNlLT52cHUu dnNpOw0KPiA+ID4gPiAraWYgKCFjdHggfHwgIXZzaSkgew0KPiA+ID4gPiArbXRrX3Zjb2RlY19l cnIoaW5zdGFuY2UsICJpbnZhbGlkIGN0eCBvciB2c2kgMHglcA0KPiA+ID4gPiAweCVwXG4iLA0K PiA+ID4gPiArICAgICAgIGN0eCwgdnNpKTsNCj4gPiA+ID4gK3JldHVybiAtRUlOVkFMOw0KPiA+ ID4gPiArfQ0KPiA+ID4gDQo+ID4gPiBkaXR0bw0KPiA+ID4gDQo+ID4gPiA+ICsNCj4gPiA+ID4g K3JlbW90ZV9pcV90YWJsZSA9IG10a192Y29kZWNfZndfbWFwX2RtX2FkZHIoY3R4LT5kZXYtDQo+ ID4gPiA+ID4gZndfaGFuZGxlciwNCj4gPiA+ID4gDQo+ID4gPiA+ICsgICAgKHUzMil2c2ktDQo+ ID4gPiA+ID4gaXFfdGFibGVfYWRkcik7DQo+ID4gPiA+IA0KPiA+ID4gPiAraWYgKElTX0VSUihy ZW1vdGVfaXFfdGFibGUpKSB7DQo+ID4gPiA+ICttdGtfdmNvZGVjX2VycihpbnN0YW5jZSwgImZh aWxlZCB0byBtYXAgaXEgdGFibGVcbiIpOw0KPiA+ID4gPiArcmV0dXJuIFBUUl9FUlIocmVtb3Rl X2lxX3RhYmxlKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArbXRrX3Zjb2RlY19k ZWJ1ZyhpbnN0YW5jZSwgIm1hcCBpcSB0YWJsZSB0byAweCVwXG4iLA0KPiA+ID4gPiByZW1vdGVf aXFfdGFibGUpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtpZiAoaW5zdGFuY2UtPmlxX3RhYmxlLnZh KQ0KPiA+ID4gPiArbXRrX3Zjb2RlY19tZW1fZnJlZShjdHgsICZpbnN0YW5jZS0+aXFfdGFibGUp Ow0KPiA+ID4gPiAraW5zdGFuY2UtPmlxX3RhYmxlLnNpemUgPSB2c2ktPmlxX3RhYmxlX3NpemU7 DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3JldCA9IG10a192Y29kZWNfbWVtX2FsbG9jKGN0eCwgJmlu c3RhbmNlLT5pcV90YWJsZSk7DQo+ID4gPiA+ICtpZiAocmV0KQ0KPiA+ID4gPiArcmV0dXJuIHJl dDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArbWVtY3B5KGluc3RhbmNlLT5pcV90YWJsZS52YSwgcmVt b3RlX2lxX3RhYmxlLCB2c2ktDQo+ID4gPiA+ID4gaXFfdGFibGVfc2l6ZSk7DQo+ID4gPiA+IA0K PiA+ID4gPiArDQo+ID4gPiA+ICtyZXR1cm4gMDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ ID4gPiArc3RhdGljIGludCB2ZGVjX2F2MV9zbGljZV9nZXRfbmV3X3Nsb3Qoc3RydWN0DQo+ID4g PiA+IHZkZWNfYXYxX3NsaWNlX3ZzaQ0KPiA+ID4gPiAqdnNpKQ0KPiA+ID4gPiArew0KPiA+ID4g PiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX3Nsb3QgKnNsb3RzID0gJnZzaS0+c2xvdHM7DQo+ID4g PiA+ICtpbnQgbmV3X3Nsb3RfaWR4ID0gQVYxX0lOVkFMSURfSURYOw0KPiA+ID4gPiAraW50IGk7 DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2ZvciAoaSA9IDA7IGkgPCBBVjFfTUFYX0ZSQU1FX0JVRl9D T1VOVDsgaSsrKSB7DQo+ID4gPiA+ICtpZiAoc2xvdHMtPmZyYW1lX2luZm9baV0ucmVmX2NvdW50 ID09IDApIHsNCj4gPiA+ID4gK25ld19zbG90X2lkeCA9IGk7DQo+ID4gPiA+ICticmVhazsNCj4g PiA+ID4gK30NCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiAraWYgKG5ld19zbG90X2lk eCAhPSBBVjFfSU5WQUxJRF9JRFgpIHsNCj4gPiA+ID4gK3Nsb3RzLT5mcmFtZV9pbmZvW25ld19z bG90X2lkeF0ucmVmX2NvdW50Kys7DQo+ID4gPiA+ICtzbG90cy0+dGltZXN0YW1wW25ld19zbG90 X2lkeF0gPSB2c2ktPmZyYW1lLmN1cl90czsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4g PiArcmV0dXJuIG5ld19zbG90X2lkeDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiAr c3RhdGljIHZvaWQgdmRlY19hdjFfc2xpY2VfY2xlYXJfZmIoc3RydWN0DQo+ID4gPiA+IHZkZWNf YXYxX3NsaWNlX2ZyYW1lX2luZm8gKmZyYW1lX2luZm8pDQo+ID4gPiANCj4gPiA+IHN0YXRpYyBp bmxpbmUgdm9pZD8NCj4gPiA+IA0KPiA+ID4gPiArew0KPiA+ID4gPiArbWVtc2V0KCh2b2lkICop ZnJhbWVfaW5mbywgMCwgc2l6ZW9mKHN0cnVjdA0KPiA+ID4gPiB2ZGVjX2F2MV9zbGljZV9mcmFt ZV9pbmZvKSk7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHZk ZWNfYXYxX3NsaWNlX2RlY3JlYXNlX3JlZl9jb3VudChzdHJ1Y3QNCj4gPiA+ID4gdmRlY19hdjFf c2xpY2Vfc2xvdCAqc2xvdHMsIGludCBmYl9pZHgpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICtzdHJ1 Y3QgdmRlY19hdjFfc2xpY2VfZnJhbWVfaW5mbyAqZnJhbWVfaW5mbyA9IHNsb3RzLQ0KPiA+ID4g PiA+IGZyYW1lX2luZm87DQo+ID4gPiA+IA0KPiA+ID4gPiArDQo+ID4gPiA+ICtpZiAoZmJfaWR4 IDwgMCB8fCBmYl9pZHggPj0gQVYxX01BWF9GUkFNRV9CVUZfQ09VTlQpIHsNCj4gPiA+ID4gK210 a192NGwyX2VycigiYXYxX2Vycm9yOiAlcygpIGludmFsaWQgZmJfaWR4ICVkXG4iLA0KPiA+ID4g PiBfX2Z1bmNfXywgZmJfaWR4KTsNCj4gPiA+ID4gK3JldHVybjsNCj4gPiA+ID4gK30NCj4gPiA+ IA0KPiA+ID4gVGhlIGFib3ZlIGlmIGJsb2NrIGlzIHJlZHVuZGFudCwgYmVjYXVzZSAtIGdpdmVu IHRoZSBjdXJyZW50DQo+ID4gPiBzaGFwZSBvZg0KPiA+ID4gdGhpcw0KPiA+ID4gZHJpdmVyIGNv ZGUgLSB0aGUgY29uZGl0aW9uIGlzIG5ldmVyIHRydWUuDQo+ID4gPiANCj4gPiA+IFRoaXMgZnVu Y3Rpb24gaXMgb25seSBjYWxsZWQgZnJvbSB0aGUgYmVsb3cNCj4gPiA+IHZkZWNfYXYxX3NsaWNl X2NsZWFudXBfc2xvdHMoKS4NCj4gPiA+IFRoZSBmYl9pZHggZm9ybWFsIHBhcmFtIGNvbWVzIGZy b20gdGhlIGNhbGxlcidzIHNsb3RfaWQgbG9jYWwNCj4gPiA+IHZhcmlhYmxlLCB3aG9zZQ0KPiA+ ID4gdmFsdWUgaXMgb25seSBhc3NpZ25lZCBpbiB0aGUgZm9yIGxvb3AsIGl0ZXJhdGluZyBmcm9t IDAgdG8NCj4gPiA+IEFWMV9NQVhfRlJBTUVfQlVGX0NPVU5UIC0gMSwgaW5jbHVzaXZlLiBIZW5j ZSBzbG90X2lkIGlzIG5ldmVyIDwNCj4gPiA+IDANCj4gPiA+IG5vciA+PSBBVjFfTUFYX0ZSQU1F X0JVRl9DT1VOVC4NCj4gPiA+IA0KPiA+ID4gPiArDQo+ID4gPiA+ICtmcmFtZV9pbmZvW2ZiX2lk eF0ucmVmX2NvdW50LS07DQo+ID4gPiA+ICtpZiAoZnJhbWVfaW5mb1tmYl9pZHhdLnJlZl9jb3Vu dCA8IDApIHsNCj4gPiA+ID4gK2ZyYW1lX2luZm9bZmJfaWR4XS5yZWZfY291bnQgPSAwOw0KPiA+ ID4gPiArbXRrX3Y0bDJfZXJyKCJhdjFfZXJyb3I6ICVzKCkgZmJfaWR4ICVkIGRlY3JlYXNlDQo+ ID4gPiA+IHJlZl9jb3VudCBlcnJvclxuIiwNCj4gPiA+ID4gKyAgICAgX19mdW5jX18sIGZiX2lk eCk7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICt2ZGVjX2F2MV9zbGljZV9jbGVhcl9mYigmZnJhbWVf aW5mb1tmYl9pZHhdKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIHZv aWQgdmRlY19hdjFfc2xpY2VfY2xlYW51cF9zbG90cyhzdHJ1Y3QNCj4gPiA+ID4gdmRlY19hdjFf c2xpY2Vfc2xvdCAqc2xvdHMsDQo+ID4gPiA+ICsgc3RydWN0IHZkZWNfYXYxX3NsaWNlX2ZyYW1l DQo+ID4gPiA+ICpmcmFtZSwNCj4gPiA+ID4gKyBzdHJ1Y3QgdjRsMl9jdHJsX2F2MV9mcmFtZQ0K PiA+ID4gPiAqY3RybF9maCkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gK2ludCBzbG90X2lkLCByZWZf aWQ7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2ZvciAocmVmX2lkID0gMDsgcmVmX2lkIDwgVjRMMl9B VjFfVE9UQUxfUkVGU19QRVJfRlJBTUU7DQo+ID4gPiA+IHJlZl9pZCsrKQ0KPiA+ID4gPiArZnJh bWUtPnJlZl9mcmFtZV9tYXBbcmVmX2lkXSA9IEFWMV9JTlZBTElEX0lEWDsNCj4gPiA+ID4gKw0K PiA+ID4gPiArZm9yIChzbG90X2lkID0gMDsgc2xvdF9pZCA8IEFWMV9NQVhfRlJBTUVfQlVGX0NP VU5UOw0KPiA+ID4gPiBzbG90X2lkKyspDQo+ID4gPiA+IHsNCj4gPiA+ID4gK3U2NCB0aW1lc3Rh bXAgPSBzbG90cy0+dGltZXN0YW1wW3Nsb3RfaWRdOw0KPiA+ID4gPiArYm9vbCByZWZfdXNlZCA9 IGZhbHNlOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKiBpZ25vcmVkIHVudXNlZCBzbG90cyAqLw0K PiA+ID4gPiAraWYgKHNsb3RzLT5mcmFtZV9pbmZvW3Nsb3RfaWRdLnJlZl9jb3VudCA9PSAwKQ0K PiA+ID4gPiArY29udGludWU7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2ZvciAocmVmX2lkID0gMDsg cmVmX2lkIDwNCj4gPiA+ID4gVjRMMl9BVjFfVE9UQUxfUkVGU19QRVJfRlJBTUU7IHJlZl9pZCsr KSB7DQo+ID4gPiA+ICtpZiAoY3RybF9maC0+cmVmZXJlbmNlX2ZyYW1lX3RzW3JlZl9pZF0gPT0N Cj4gPiA+ID4gdGltZXN0YW1wKSB7DQo+ID4gPiA+ICtmcmFtZS0+cmVmX2ZyYW1lX21hcFtyZWZf aWRdID0gc2xvdF9pZDsNCj4gPiA+ID4gK3JlZl91c2VkID0gdHJ1ZTsNCj4gPiA+ID4gK30NCj4g PiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiAraWYgKCFyZWZfdXNlZCkNCj4gPiA+ID4gK3Zk ZWNfYXYxX3NsaWNlX2RlY3JlYXNlX3JlZl9jb3VudChzbG90cywNCj4gPiA+ID4gc2xvdF9pZCk7 DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyB2b2lk IHZkZWNfYXYxX3NsaWNlX3NldHVwX3Nsb3Qoc3RydWN0DQo+ID4gPiA+IHZkZWNfYXYxX3NsaWNl X2luc3RhbmNlICppbnN0YW5jZSwNCj4gPiA+ID4gKyAgICAgIHN0cnVjdCB2ZGVjX2F2MV9zbGlj ZV92c2kgKnZzaSwNCj4gPiA+ID4gKyAgICAgIHN0cnVjdCB2NGwyX2N0cmxfYXYxX2ZyYW1lDQo+ ID4gPiA+ICpjdHJsX2ZoKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3Ns aWNlX2ZyYW1lX2luZm8gKmN1cl9mcmFtZV9pbmZvOw0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYx X3NsaWNlX3VuY29tcHJlc3NlZF9oZWFkZXIgKnVoID0gJnZzaS0NCj4gPiA+ID4gPmZyYW1lLnVo Ow0KPiA+ID4gPiAraW50IHJlZl9pZDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArbWVtY3B5KCZ2c2kt PnNsb3RzLCAmaW5zdGFuY2UtPnNsb3RzLCBzaXplb2YoaW5zdGFuY2UtDQo+ID4gPiA+ID5zbG90 cykpOw0KPiA+ID4gPiArdmRlY19hdjFfc2xpY2VfY2xlYW51cF9zbG90cygmdnNpLT5zbG90cywg JnZzaS0+ZnJhbWUsDQo+ID4gPiA+IGN0cmxfZmgpOw0KPiA+ID4gPiArdnNpLT5zbG90X2lkID0g dmRlY19hdjFfc2xpY2VfZ2V0X25ld19zbG90KHZzaSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2lm ICh2c2ktPnNsb3RfaWQgPT0gQVYxX0lOVkFMSURfSURYKSB7DQo+ID4gPiA+ICttdGtfdjRsMl9l cnIoIndhcm5pbmc6YXYxIGdldCBpbnZhbGlkIGluZGV4IHNsb3RcbiIpOw0KPiA+ID4gPiArdnNp LT5zbG90X2lkID0gMDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gK2N1cl9mcmFtZV9pbmZvID0gJnZz aS0+c2xvdHMuZnJhbWVfaW5mb1t2c2ktPnNsb3RfaWRdOw0KPiA+ID4gPiArY3VyX2ZyYW1lX2lu Zm8tPmZyYW1lX3R5cGUgPSB1aC0+ZnJhbWVfdHlwZTsNCj4gPiA+ID4gK2N1cl9mcmFtZV9pbmZv LT5mcmFtZV9pc19pbnRyYSA9ICgodWgtPmZyYW1lX3R5cGUgPT0NCj4gPiA+ID4gQVYxX0lOVFJB X09OTFlfRlJBTUUpIHx8DQo+ID4gPiA+ICsgICh1aC0+ZnJhbWVfdHlwZSA9PQ0KPiA+ID4gPiBB VjFfS0VZX0ZSQU1FKSk7DQo+ID4gPiA+ICtjdXJfZnJhbWVfaW5mby0+b3JkZXJfaGludCA9IHVo LT5vcmRlcl9oaW50Ow0KPiA+ID4gPiArY3VyX2ZyYW1lX2luZm8tPnVwc2NhbGVkX3dpZHRoID0g dWgtPnVwc2NhbGVkX3dpZHRoOw0KPiA+ID4gPiArY3VyX2ZyYW1lX2luZm8tPnBpY19waXRjaCA9 IDA7DQo+ID4gPiA+ICtjdXJfZnJhbWVfaW5mby0+ZnJhbWVfd2lkdGggPSB1aC0+ZnJhbWVfd2lk dGg7DQo+ID4gPiA+ICtjdXJfZnJhbWVfaW5mby0+ZnJhbWVfaGVpZ2h0ID0gdWgtPmZyYW1lX2hl aWdodDsNCj4gPiA+ID4gK2N1cl9mcmFtZV9pbmZvLT5taV9jb2xzID0gKCh1aC0+ZnJhbWVfd2lk dGggKyA3KSA+PiAzKSA8PCAxOw0KPiA+ID4gPiArY3VyX2ZyYW1lX2luZm8tPm1pX3Jvd3MgPSAo KHVoLT5mcmFtZV9oZWlnaHQgKyA3KSA+PiAzKSA8PCAxOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsv KiBlbnN1cmUgY3VycmVudCBmcmFtZSBpcyBwcm9wZXJseSBtYXBwZWQgaWYgcmVmZXJlbmNlZCAq Lw0KPiA+ID4gPiArZm9yIChyZWZfaWQgPSAwOyByZWZfaWQgPCBWNEwyX0FWMV9UT1RBTF9SRUZT X1BFUl9GUkFNRTsNCj4gPiA+ID4gcmVmX2lkKyspIHsNCj4gPiA+ID4gK3U2NCB0aW1lc3RhbXAg PSB2c2ktPnNsb3RzLnRpbWVzdGFtcFt2c2ktPnNsb3RfaWRdOw0KPiA+ID4gPiArDQo+ID4gPiA+ ICtpZiAoY3RybF9maC0+cmVmZXJlbmNlX2ZyYW1lX3RzW3JlZl9pZF0gPT0gdGltZXN0YW1wKQ0K PiA+ID4gPiArdnNpLT5mcmFtZS5yZWZfZnJhbWVfbWFwW3JlZl9pZF0gPSB2c2ktDQo+ID4gPiA+ ID4gc2xvdF9pZDsNCj4gPiA+ID4gDQo+ID4gPiA+ICt9DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsN Cj4gPiA+ID4gK3N0YXRpYyBpbnQgdmRlY19hdjFfc2xpY2VfYWxsb2Nfd29ya2luZ19idWZmZXIo c3RydWN0DQo+ID4gPiA+IHZkZWNfYXYxX3NsaWNlX2luc3RhbmNlICppbnN0YW5jZSwNCj4gPiA+ ID4gKyAgICAgICBzdHJ1Y3QNCj4gPiA+ID4gdmRlY19hdjFfc2xpY2VfdnNpICp2c2kpDQo+ID4g PiA+ICt7DQo+ID4gPiA+ICtzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eCA9IGluc3RhbmNlLT5j dHg7DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2Vfd29ya19idWZmZXIgKndvcmtfYnVm ZmVyID0gdnNpLQ0KPiA+ID4gPiA+IHdvcmtfYnVmZmVyOw0KPiA+ID4gPiANCj4gPiA+ID4gK2Vu dW0gdmRlY19hdjFfc2xpY2VfcmVzb2x1dGlvbl9sZXZlbCBsZXZlbDsNCj4gPiA+ID4gK3UzMiBt YXhfc2JfdywgbWF4X3NiX2gsIG1heF93LCBtYXhfaCwgdywgaDsNCj4gPiA+ID4gK3NpemVfdCBz aXplOw0KPiA+ID4gPiAraW50IGksIHJldDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArdyA9IHZzaS0+ ZnJhbWUudWguZnJhbWVfd2lkdGg7DQo+ID4gPiA+ICtoID0gdnNpLT5mcmFtZS51aC5mcmFtZV9o ZWlnaHQ7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2lmICh3ID4gVkNPREVDX0RFQ180S19DT0RFRF9X SURUSCB8fCBoID4NCj4gPiA+ID4gVkNPREVDX0RFQ180S19DT0RFRF9IRUlHSFQpDQo+ID4gPiA+ ICsvKiA4SyAqLw0KPiA+ID4gPiArcmV0dXJuIC1FSU5WQUw7DQo+ID4gPiA+ICsNCj4gPiA+ID4g K2lmICh3ID4gTVRLX1ZERUNfTUFYX1cgfHwgaCA+IE1US19WREVDX01BWF9IKSB7DQo+ID4gPiA+ ICsvKiA0SyAqLw0KPiA+ID4gPiArbGV2ZWwgPSBBVjFfUkVTXzRLOw0KPiA+ID4gPiArbWF4X3cg PSBWQ09ERUNfREVDXzRLX0NPREVEX1dJRFRIOw0KPiA+ID4gPiArbWF4X2ggPSBWQ09ERUNfREVD XzRLX0NPREVEX0hFSUdIVDsNCj4gPiA+ID4gK30gZWxzZSB7DQo+ID4gPiA+ICsvKiBGSEQgKi8N Cj4gPiA+ID4gK2xldmVsID0gQVYxX1JFU19GSEQ7DQo+ID4gPiA+ICttYXhfdyA9IE1US19WREVD X01BWF9XOw0KPiA+ID4gPiArbWF4X2ggPSBNVEtfVkRFQ19NQVhfSDsNCj4gPiA+ID4gK30NCj4g PiA+ID4gKw0KPiA+ID4gPiAraWYgKGxldmVsID09IGluc3RhbmNlLT5sZXZlbCkNCj4gPiA+ID4g K3JldHVybiAwOw0KPiA+ID4gPiArDQo+ID4gPiA+ICttdGtfdmNvZGVjX2RlYnVnKGluc3RhbmNl LCAicmVzb2x1dGlvbiBsZXZlbCBjaGFuZ2VkIGZyb20gJXUNCj4gPiA+ID4gdG8NCj4gPiA+ID4g JXUsICV1eCV1IiwNCj4gPiA+ID4gKyBpbnN0YW5jZS0+bGV2ZWwsIGxldmVsLCB3LCBoKTsNCj4g PiA+ID4gKw0KPiA+ID4gPiArbWF4X3NiX3cgPSBESVZfUk9VTkRfVVAobWF4X3csIDEyOCk7DQo+ ID4gPiA+ICttYXhfc2JfaCA9IERJVl9ST1VORF9VUChtYXhfaCwgMTI4KTsNCj4gPiA+ID4gK3Np emUgPSBtYXhfc2JfdyAqIG1heF9zYl9oICogU1pfMUs7DQo+ID4gPiA+ICtmb3IgKGkgPSAwOyBp IDwgQVYxX01BWF9GUkFNRV9CVUZfQ09VTlQ7IGkrKykgew0KPiA+ID4gPiAraWYgKGluc3RhbmNl LT5tdltpXS52YSkNCj4gPiA+ID4gK210a192Y29kZWNfbWVtX2ZyZWUoY3R4LCAmaW5zdGFuY2Ut Pm12W2ldKTsNCj4gPiA+ID4gK2luc3RhbmNlLT5tdltpXS5zaXplID0gc2l6ZTsNCj4gPiA+ID4g K3JldCA9IG10a192Y29kZWNfbWVtX2FsbG9jKGN0eCwgJmluc3RhbmNlLT5tdltpXSk7DQo+ID4g PiA+ICtpZiAocmV0KQ0KPiA+ID4gPiArZ290byBlcnI7DQo+ID4gPiANCj4gPiA+IFBsZWFzZSBp Z25vcmUgdGhpcyBjb21tZW50IGlmIHRoaXMgaGFzIGJlZW4gZGlzY3Vzc2VkIGFuZA0KPiA+ID4g c2V0dGxlZC4NCj4gPiA+IE1heWJlIGl0J3MganVzdCBtZSwgYnV0IEkgZmVlbCBpdCBpcyBpZGlv bWF0aWMgaW4gdGhlIGtlcm5lbCB0bw0KPiA+ID4gdW5kbyBhbGwgcHJldmlvdXMgYWxsb2NhdGlv bnMgaWYgYXQgc29tZSBpdGVyYXRpb24gd2UgZmFpbC4gSGVyZQ0KPiA+ID4gYQ0KPiA+ID4gZGlm ZmVyZW50DQo+ID4gPiBhcHByb2FjaCBpcyB0YWtlbjogd2Ugc3RvcCBpdGVyYXRpbmcgYW5kIHJl dHVybiBhbiBlcnJvciwgYW5kDQo+ID4gPiBmcmVlDQo+ID4gPiBuZXh0IHRpbWUNCj4gPiA+IHdl IGFyZSBjYWxsZWQuIFdoeT8NCj4gPiA+IA0KPiA+ID4gPiArd29ya19idWZmZXJbaV0ubXZfYWRk ci5idWYgPSBpbnN0YW5jZS0+bXZbaV0uZG1hX2FkZHI7DQo+ID4gPiA+ICt3b3JrX2J1ZmZlcltp XS5tdl9hZGRyLnNpemUgPSBzaXplOyA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3NpemUgPSBt YXhfc2JfdyAqIG1heF9zYl9oICogNTEyOw0KPiA+ID4gPiArZm9yIChpID0gMDsgaSA8IEFWMV9N QVhfRlJBTUVfQlVGX0NPVU5UOyBpKyspIHsNCj4gPiA+ID4gK2lmIChpbnN0YW5jZS0+c2VnW2ld LnZhKQ0KPiA+ID4gPiArbXRrX3Zjb2RlY19tZW1fZnJlZShjdHgsICZpbnN0YW5jZS0+c2VnW2ld KTsNCj4gPiA+ID4gK2luc3RhbmNlLT5zZWdbaV0uc2l6ZSA9IHNpemU7DQo+ID4gPiA+ICtyZXQg PSBtdGtfdmNvZGVjX21lbV9hbGxvYyhjdHgsICZpbnN0YW5jZS0+c2VnW2ldKTsNCj4gPiA+ID4g K2lmIChyZXQpDQo+ID4gPiA+ICtnb3RvIGVycjsNCj4gPiA+ID4gK3dvcmtfYnVmZmVyW2ldLnNl Z2lkX2FkZHIuYnVmID0gaW5zdGFuY2UtDQo+ID4gPiA+ID4gc2VnW2ldLmRtYV9hZGRyOw0KPiA+ ID4gPiANCj4gPiA+ID4gK3dvcmtfYnVmZmVyW2ldLnNlZ2lkX2FkZHIuc2l6ZSA9IHNpemU7DQo+ ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3NpemUgPSAxNjM4NDsNCj4gPiA+IA0KPiA+ ID4gI2RlZmluZSBhIG5hbWVkIGNvbnN0YW50IGZvciB0aGlzIG1hZ2ljIG51bWJlcj8NCj4gPiA+ IA0KPiA+ID4gPiArZm9yIChpID0gMDsgaSA8IEFWMV9NQVhfRlJBTUVfQlVGX0NPVU5UOyBpKysp IHsNCj4gPiA+ID4gK2lmIChpbnN0YW5jZS0+Y2RmW2ldLnZhKQ0KPiA+ID4gPiArbXRrX3Zjb2Rl Y19tZW1fZnJlZShjdHgsICZpbnN0YW5jZS0+Y2RmW2ldKTsNCj4gPiA+ID4gK2luc3RhbmNlLT5j ZGZbaV0uc2l6ZSA9IHNpemU7DQo+ID4gPiA+ICtyZXQgPSBtdGtfdmNvZGVjX21lbV9hbGxvYyhj dHgsICZpbnN0YW5jZS0+Y2RmW2ldKTsNCj4gPiA+ID4gK2lmIChyZXQpDQo+ID4gPiA+ICtnb3Rv IGVycjsNCj4gPiA+ID4gK3dvcmtfYnVmZmVyW2ldLmNkZl9hZGRyLmJ1ZiA9IGluc3RhbmNlLQ0K PiA+ID4gPiA+IGNkZltpXS5kbWFfYWRkcjsNCj4gPiA+ID4gDQo+ID4gPiA+ICt3b3JrX2J1ZmZl cltpXS5jZGZfYWRkci5zaXplID0gc2l6ZTsNCj4gPiA+ID4gK30NCj4gPiA+IA0KPiA+ID4gVGhl IDMgZm9yIGxvb3BzIGFyZSBzdXBwb3NlZCB0byBpdGVyYXRlIGZyb20gMCB0bw0KPiA+ID4gQVYx X01BWF9GUkFNRV9CVUZfQ09VTlQgLSAxLA0KPiA+ID4gaW5jbHVzaXZlLiBJcyBpdCBwb3NzaWJs ZSB0byBtZXJnZSB0aGVtPw0KPiA+ID4gDQo+ID4gPiA+ICtpZiAoIWluc3RhbmNlLT5jZGZfdGVt cC52YSkgew0KPiA+ID4gPiAraW5zdGFuY2UtPmNkZl90ZW1wLnNpemUgPSAoU1pfMUsgKiAxNiAq IDEwMCk7DQo+ID4gPiA+ICtyZXQgPSBtdGtfdmNvZGVjX21lbV9hbGxvYyhjdHgsICZpbnN0YW5j ZS0+Y2RmX3RlbXApOw0KPiA+ID4gPiAraWYgKHJldCkNCj4gPiA+ID4gK2dvdG8gZXJyOw0KPiA+ ID4gPiArdnNpLT5jZGZfdG1wLmJ1ZiA9IGluc3RhbmNlLT5jZGZfdGVtcC5kbWFfYWRkcjsNCj4g PiA+ID4gK3ZzaS0+Y2RmX3RtcC5zaXplID0gaW5zdGFuY2UtPmNkZl90ZW1wLnNpemU7DQo+ID4g PiA+ICt9DQo+ID4gPiA+ICtzaXplID0gQVYxX1RJTEVfQlVGX1NJWkUgKiBWNEwyX0FWMV9NQVhf VElMRV9DT1VOVDsNCj4gPiA+IA0KPiA+ID4gVGhpcyAic2l6ZSIgaXMgbmV2ZXIgY2hhbmdlZCB1 bnRpbCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24uDQo+ID4gPiBJdCBpcyBhIGNvbXBpbGUtdGlt ZSBjb25zdGFudCwgc28gdGhlcmUncyBubyBuZWVkIHRvIGFzc2lnbiBpdHMNCj4gPiA+IHZhbHVl IHRvIGFuIGludGVybWVkaWF0ZSB2YXJpYWJsZS4NCj4gPiA+IA0KPiA+ID4gPiArDQo+ID4gPiA+ ICtpZiAoaW5zdGFuY2UtPnRpbGUudmEpDQo+ID4gPiA+ICttdGtfdmNvZGVjX21lbV9mcmVlKGN0 eCwgJmluc3RhbmNlLT50aWxlKTsNCj4gPiA+ID4gK2luc3RhbmNlLT50aWxlLnNpemUgPSBzaXpl Ow0KPiA+ID4gDQo+ID4gPiBpbnN0YW5jZS0+dGlsZS5zaXplID0gQVYxX1RJTEVfQlVGX1NJWkUg Kg0KPiA+ID4gVjRMMl9BVjFfTUFYX1RJTEVfQ09VTlQ7DQo+ID4gPiANCj4gPiA+ID4gKw0KPiA+ ID4gPiArcmV0ID0gbXRrX3Zjb2RlY19tZW1fYWxsb2MoY3R4LCAmaW5zdGFuY2UtPnRpbGUpOw0K PiA+ID4gPiAraWYgKHJldCkNCj4gPiA+ID4gK2dvdG8gZXJyOw0KPiA+ID4gPiArDQo+ID4gPiA+ ICt2c2ktPnRpbGUuYnVmID0gaW5zdGFuY2UtPnRpbGUuZG1hX2FkZHI7DQo+ID4gPiA+ICt2c2kt PnRpbGUuc2l6ZSA9IHNpemU7DQo+ID4gPiANCj4gPiA+IHZzaS0+dGlsZS5zaXplID0gaW5zdGFu Y2UtPnRpbGUuc2l6ZTsNCj4gPiA+IA0KPiA+ID4gYW5kIG5vdyBpdCBpcyBjbGVhciB0aGUgc2l6 ZSBpbiB2c2kgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbg0KPiA+ID4gaW5zdGFuY2UuDQo+ID4g PiBCVFcsIGlzIHZzaS0+dGlsZS5zaXplIHN1cHBvc2VkIHRvIGFsd2F5cyBiZSBlcXVhbCB0byB0 aGUgb25lIGluDQo+ID4gPiBpbnN0YW5jZT8NCj4gPiA+IElmIHllczoNCj4gPiA+ICAgLSBJcyBp bnN0YW5jZSBhdmFpbGFibGUgd2hlbmV2ZXIgd2UgbmVlZCB0byBhY2Nlc3MgdnNpLQ0KPiA+ID4g PnRpbGUuc2l6ZT8NCj4gPiA+ICAgLSBXaGF0J3MgdGhlIHBvaW50IG9mIGR1cGxpY2F0aW5nIHRo aXMgdmFsdWU/IENhbiBpdCBiZSBzdG9yZWQNCj4gPiA+IGluDQo+ID4gPiBvbmUgcGxhY2U/DQo+ ID4gPiANCj4gPiA+ID4gKw0KPiA+ID4gPiAraW5zdGFuY2UtPmxldmVsID0gbGV2ZWw7DQo+ID4g PiA+ICtyZXR1cm4gMDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArZXJyOg0KPiA+ID4gPiAraW5zdGFu Y2UtPmxldmVsID0gQVYxX1JFU19OT05FOw0KPiA+ID4gPiArcmV0dXJuIHJldDsNCj4gPiA+ID4g K30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIHZvaWQgdmRlY19hdjFfc2xpY2VfZnJlZV93 b3JraW5nX2J1ZmZlcihzdHJ1Y3QNCj4gPiA+ID4gdmRlY19hdjFfc2xpY2VfaW5zdGFuY2UgKmlu c3RhbmNlKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArc3RydWN0IG10a192Y29kZWNfY3R4ICpjdHgg PSBpbnN0YW5jZS0+Y3R4Ow0KPiA+ID4gPiAraW50IGk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2Zv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGluc3RhbmNlLT5tdik7IGkrKykNCj4gPiA+ID4gK2lm IChpbnN0YW5jZS0+bXZbaV0udmEpDQo+ID4gPiA+ICttdGtfdmNvZGVjX21lbV9mcmVlKGN0eCwg Jmluc3RhbmNlLT5tdltpXSk7DQo+ID4gPiANCj4gPiA+IFBlcmhhcHMgbXRrX3Zjb2RlY19tZW1f ZnJlZSgpIGNhbiBwcm9wZXJseSBoYW5kbGUgdGhlIGNhc2UNCj4gPiA+IA0KPiA+ID4gKCFpbnN0 YW5jZS0+bXZbaV0udmEpID8gVGhpcyB3b3VsZCBlbGltaW5hdGUgNyBvZiAyMCBsaW5lcyBvZg0K PiA+ID4gY29kZQ0KPiA+ID4gaW4gdGhpcyBmdW5jdGlvbi4NCj4gPiA+IA0KPiA+ID4gPiArDQo+ ID4gPiA+ICtmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShpbnN0YW5jZS0+c2VnKTsgaSsrKQ0K PiA+ID4gPiAraWYgKGluc3RhbmNlLT5zZWdbaV0udmEpDQo+ID4gPiA+ICttdGtfdmNvZGVjX21l bV9mcmVlKGN0eCwgJmluc3RhbmNlLT5zZWdbaV0pOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShpbnN0YW5jZS0+Y2RmKTsgaSsrKQ0KPiA+ID4gPiAraWYg KGluc3RhbmNlLT5jZGZbaV0udmEpDQo+ID4gPiA+ICttdGtfdmNvZGVjX21lbV9mcmVlKGN0eCwg Jmluc3RhbmNlLT5jZGZbaV0pOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtpZiAoaW5zdGFuY2UtPnRp bGUudmEpDQo+ID4gPiA+ICttdGtfdmNvZGVjX21lbV9mcmVlKGN0eCwgJmluc3RhbmNlLT50aWxl KTsNCj4gPiA+ID4gK2lmIChpbnN0YW5jZS0+Y2RmX3RlbXAudmEpDQo+ID4gPiA+ICttdGtfdmNv ZGVjX21lbV9mcmVlKGN0eCwgJmluc3RhbmNlLT5jZGZfdGVtcCk7DQo+ID4gPiA+ICtpZiAoaW5z dGFuY2UtPmNkZl90YWJsZS52YSkNCj4gPiA+ID4gK210a192Y29kZWNfbWVtX2ZyZWUoY3R4LCAm aW5zdGFuY2UtPmNkZl90YWJsZSk7DQo+ID4gPiA+ICtpZiAoaW5zdGFuY2UtPmlxX3RhYmxlLnZh KQ0KPiA+ID4gPiArbXRrX3Zjb2RlY19tZW1fZnJlZShjdHgsICZpbnN0YW5jZS0+aXFfdGFibGUp Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICtpbnN0YW5jZS0+bGV2ZWwgPSBBVjFfUkVTX05PTkU7DQo+ ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHZkZWNfYXYxX3NsaWNl X3ZzaV9mcm9tX3JlbW90ZShzdHJ1Y3QNCj4gPiA+ID4gdmRlY19hdjFfc2xpY2VfdnNpICp2c2ks DQo+ID4gPiA+ICsgICBzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfdnNpDQo+ID4gPiA+ICpyZW1vdGVf dnNpKQ0KPiA+ID4gDQo+ID4gPiBzdGF0aWMgaW5saW5lIHZvaWQ/DQo+ID4gPiANCj4gPiA+ID4g K3sNCj4gPiA+ID4gK21lbWNweSgmdnNpLT50cmFucywgJnJlbW90ZV92c2ktPnRyYW5zLCBzaXpl b2YodnNpLT50cmFucykpOw0KPiA+ID4gPiArbWVtY3B5KCZ2c2ktPnN0YXRlLCAmcmVtb3RlX3Zz aS0+c3RhdGUsIHNpemVvZih2c2ktPnN0YXRlKSk7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4g PiA+ID4gK3N0YXRpYyB2b2lkIHZkZWNfYXYxX3NsaWNlX3ZzaV90b19yZW1vdGUoc3RydWN0DQo+ ID4gPiA+IHZkZWNfYXYxX3NsaWNlX3ZzaQ0KPiA+ID4gPiAqdnNpLA0KPiA+ID4gPiArIHN0cnVj dCB2ZGVjX2F2MV9zbGljZV92c2kNCj4gPiA+ID4gKnJlbW90ZV92c2kpDQo+ID4gPiANCj4gPiA+ IHN0YXRpYyBpbmxpbmUgdm9pZD8NCj4gPiA+IA0KPiA+ID4gPiArew0KPiA+ID4gPiArbWVtY3B5 KHJlbW90ZV92c2ksIHZzaSwgc2l6ZW9mKCp2c2kpKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0K PiA+ID4gPiArc3RhdGljIGludCB2ZGVjX2F2MV9zbGljZV9zZXR1cF9sYXRfZnJvbV9zcmNfYnVm KHN0cnVjdA0KPiA+ID4gPiB2ZGVjX2F2MV9zbGljZV9pbnN0YW5jZSAqaW5zdGFuY2UsDQo+ID4g PiA+ICsgc3RydWN0DQo+ID4gPiA+IHZkZWNfYXYxX3NsaWNlX3ZzaSAqdnNpLA0KPiA+ID4gPiAr IHN0cnVjdCB2ZGVjX2xhdF9idWYNCj4gPiA+ID4gKmxhdF9idWYpDQo+ID4gPiA+ICt7DQo+ID4g PiA+ICtzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICpzcmM7DQo+ID4gPiA+ICtzdHJ1Y3QgdmIyX3Y0 bDJfYnVmZmVyICpkc3Q7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3NyYyA9IHY0bDJfbTJtX25leHRf c3JjX2J1ZihpbnN0YW5jZS0+Y3R4LT5tMm1fY3R4KTsNCj4gPiA+ID4gK2lmICghc3JjKQ0KPiA+ ID4gPiArcmV0dXJuIC1FSU5WQUw7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2xhdF9idWYtPnNyY19i dWZfcmVxID0gc3JjLT52YjJfYnVmLnJlcV9vYmoucmVxOw0KPiA+ID4gPiArZHN0ID0gJmxhdF9i dWYtPnRzX2luZm87DQo+ID4gPiANCj4gPiA+IHRoZSAidHNfaW5mbyIgYWN0dWFsbHkgY29udGFp bnMgYSBzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyLiBXaHkNCj4gPiA+IHN1Y2ggYQ0KPiA+ID4gbmFt ZT8NCj4gPiA+IA0KPiA+ID4gPiArdjRsMl9tMm1fYnVmX2NvcHlfbWV0YWRhdGEoc3JjLCBkc3Qs IHRydWUpOw0KPiA+ID4gPiArdnNpLT5mcmFtZS5jdXJfdHMgPSBkc3QtPnZiMl9idWYudGltZXN0 YW1wOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtyZXR1cm4gMDsNCj4gPiA+ID4gK30NCj4gPiA+ID4g Kw0KPiA+ID4gPiArc3RhdGljIHNob3J0IHZkZWNfYXYxX3NsaWNlX3Jlc29sdmVfZGl2aXNvcl8z Mih1MzIgRCwgc2hvcnQNCj4gPiA+ID4gKnNoaWZ0KQ0KPiA+ID4gPiArew0KPiA+ID4gPiAraW50 IGY7DQo+ID4gPiA+ICtpbnQgZTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArKnNoaWZ0ID0gdmRlY19h djFfc2xpY2VfZ2V0X21zYihEKTsNCj4gPiA+ID4gKy8qIGUgaXMgb2J0YWluZWQgZnJvbSBEIGFm dGVyIHJlc2V0dGluZyB0aGUgbW9zdCBzaWduaWZpY2FudCAxDQo+ID4gPiA+IGJpdC4gKi8NCj4g PiA+ID4gK2UgPSBEIC0gKCh1MzIpMSA8PCAqc2hpZnQpOw0KPiA+ID4gPiArLyogR2V0IHRoZSBt b3N0IHNpZ25pZmljYW50IERJVl9MVVRfQklUUyAoOCkgYml0cyBvZiBlIGludG8gZg0KPiA+ID4g PiAqLw0KPiA+ID4gPiAraWYgKCpzaGlmdCA+IERJVl9MVVRfQklUUykNCj4gPiA+ID4gK2YgPSBB VjFfRElWX1JPVU5EX1VQX1BPVzIoZSwgKnNoaWZ0IC0gRElWX0xVVF9CSVRTKTsNCj4gPiA+ID4g K2Vsc2UNCj4gPiA+ID4gK2YgPSBlIDw8IChESVZfTFVUX0JJVFMgLSAqc2hpZnQpOw0KPiA+ID4g PiAraWYgKGYgPiBESVZfTFVUX05VTSkNCj4gPiA+ID4gK3JldHVybiAtMTsNCj4gPiA+ID4gKypz aGlmdCArPSBESVZfTFVUX1BSRUNfQklUUzsNCj4gPiA+ID4gKy8qIFVzZSBmIGFzIGxvb2t1cCBp bnRvIHRoZSBwcmVjb21wdXRlZCB0YWJsZSBvZiBtdWx0aXBsaWVycw0KPiA+ID4gPiAqLw0KPiA+ ID4gPiArcmV0dXJuIGRpdl9sdXRbZl07DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4g K3N0YXRpYyB2b2lkIHZkZWNfYXYxX3NsaWNlX2dldF9zaGVhcl9wYXJhbXMoc3RydWN0DQo+ID4g PiA+IHZkZWNfYXYxX3NsaWNlX2dtICpnbV9wYXJhbXMpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICtj b25zdCBpbnQgKm1hdCA9IGdtX3BhcmFtcy0+d21tYXQ7DQo+ID4gPiA+ICtzaG9ydCBzaGlmdDsN Cj4gPiA+ID4gK3Nob3J0IHk7DQo+ID4gPiA+ICtsb25nIGxvbmcgZ3YsIGR2Ow0KPiA+ID4gPiAr DQo+ID4gPiA+ICtpZiAoZ21fcGFyYW1zLT53bW1hdFsyXSA8PSAwKQ0KPiA+ID4gPiArcmV0dXJu Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICtnbV9wYXJhbXMtPmFscGhhID0gY2xhbXBfdmFsKG1hdFsy XSAtICgxIDw8DQo+ID4gPiA+IFdBUlBFRE1PREVMX1BSRUNfQklUUyksIFMxNl9NSU4sIFMxNl9N QVgpOw0KPiA+ID4gPiArZ21fcGFyYW1zLT5iZXRhID0gY2xhbXBfdmFsKG1hdFszXSwgUzE2X01J TiwgUzE2X01BWCk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3kgPSB2ZGVjX2F2MV9zbGljZV9yZXNv bHZlX2Rpdmlzb3JfMzIoYWJzKG1hdFsyXSksICZzaGlmdCkgKg0KPiA+ID4gPiAobWF0WzJdIDwg MCA/IC0xIDogMSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2d2ID0gKChsb25nIGxvbmcpbWF0WzRd ICogKDEgPDwgV0FSUEVETU9ERUxfUFJFQ19CSVRTKSkgKiB5Ow0KPiA+ID4gPiArZ21fcGFyYW1z LT5nYW1tYSA9DQo+ID4gPiA+IGNsYW1wX3ZhbCgoaW50KUFWMV9ESVZfUk9VTkRfVVBfUE9XMl9T SUdORUQoZ3YsIHNoaWZ0KSwNCj4gPiA+ID4gKyAgICAgUzE2X01JTiwgUzE2X01BWCk7DQo+ID4g PiA+ICsNCj4gPiA+ID4gK2R2ID0gKChsb25nIGxvbmcpbWF0WzNdICogbWF0WzRdKSAqIHk7DQo+ ID4gPiA+ICtnbV9wYXJhbXMtPmRlbHRhID0gY2xhbXBfdmFsKG1hdFs1XSAtDQo+ID4gPiA+IChp bnQpQVYxX0RJVl9ST1VORF9VUF9QT1cyX1NJR05FRChkdiwgc2hpZnQpIC0NCj4gPiA+ID4gKyAg ICAgKDEgPDwgV0FSUEVETU9ERUxfUFJFQ19CSVRTKSwNCj4gPiA+ID4gUzE2X01JTiwgUzE2X01B WCk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2dtX3BhcmFtcy0+YWxwaGEgPSBBVjFfRElWX1JPVU5E X1VQX1BPVzJfU0lHTkVEKGdtX3BhcmFtcy0NCj4gPiA+ID4gPiBhbHBoYSwgV0FSUF9QQVJBTV9S RURVQ0VfQklUUykgKg0KPiA+ID4gPiANCj4gPiA+ID4gKygxIDw8DQo+ID4gPiA+IFdBUlBfUEFS QU1fUkVEVUNFX0JJVFMpOw0KPiA+ID4gPiArZ21fcGFyYW1zLT5iZXRhID0gQVYxX0RJVl9ST1VO RF9VUF9QT1cyX1NJR05FRChnbV9wYXJhbXMtDQo+ID4gPiA+ID5iZXRhLCANCj4gPiA+ID4gV0FS UF9QQVJBTV9SRURVQ0VfQklUUykgKg0KPiA+ID4gPiArICAgICAgICgxIDw8DQo+ID4gPiA+IFdB UlBfUEFSQU1fUkVEVUNFX0JJVFMpOw0KPiA+ID4gPiArZ21fcGFyYW1zLT5nYW1tYSA9IEFWMV9E SVZfUk9VTkRfVVBfUE9XMl9TSUdORUQoZ21fcGFyYW1zLQ0KPiA+ID4gPiA+IGdhbW1hLCBXQVJQ X1BBUkFNX1JFRFVDRV9CSVRTKSAqDQo+ID4gPiA+IA0KPiA+ID4gPiArKDEgPDwNCj4gPiA+ID4g V0FSUF9QQVJBTV9SRURVQ0VfQklUUyk7DQo+ID4gPiA+ICtnbV9wYXJhbXMtPmRlbHRhID0gQVYx X0RJVl9ST1VORF9VUF9QT1cyX1NJR05FRChnbV9wYXJhbXMtDQo+ID4gPiA+ID4gZGVsdGEsIFdB UlBfUEFSQU1fUkVEVUNFX0JJVFMpICoNCj4gPiA+ID4gDQo+ID4gPiA+ICsoMSA8PA0KPiA+ID4g PiBXQVJQX1BBUkFNX1JFRFVDRV9CSVRTKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4g PiArc3RhdGljIHZvaWQgdmRlY19hdjFfc2xpY2Vfc2V0dXBfZ20oc3RydWN0IHZkZWNfYXYxX3Ns aWNlX2dtDQo+ID4gPiA+ICpnbSwNCj4gPiA+ID4gKyAgICBzdHJ1Y3QgdjRsMl9hdjFfZ2xvYmFs X21vdGlvbg0KPiA+ID4gPiAqY3RybF9nbSkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gK3UzMiBpLCBq Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICtmb3IgKGkgPSAwOyBpIDwgVjRMMl9BVjFfVE9UQUxfUkVG U19QRVJfRlJBTUU7IGkrKykgew0KPiA+ID4gPiArZ21baV0ud210eXBlID0gY3RybF9nbS0+dHlw ZVtpXTsNCj4gPiA+ID4gK2ZvciAoaiA9IDA7IGogPCA2OyBqKyspDQo+ID4gPiANCj4gPiA+IE1h eWJlICNkZWZpbmUgdGhpcyBtYWdpYyA2Pw0KPiA+ID4gDQo+ID4gPiA+ICtnbVtpXS53bW1hdFtq XSA9IGN0cmxfZ20tPnBhcmFtc1tpXVtqXTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArZ21baV0uaW52 YWxpZCA9ICEhKGN0cmxfZ20tPmludmFsaWQgJiBCSVQoaSkpOw0KPiA+ID4gPiArZ21baV0uYWxw aGEgPSAwOw0KPiA+ID4gPiArZ21baV0uYmV0YSA9IDA7DQo+ID4gPiA+ICtnbVtpXS5nYW1tYSA9 IDA7DQo+ID4gPiA+ICtnbVtpXS5kZWx0YSA9IDA7DQo+ID4gPiA+ICtpZiAoZ21baV0ud210eXBl IDw9IDMpDQo+ID4gPiANCj4gPiA+IEFuZCB0aGlzIDM/DQo+ID4gPiANCj4gPiA+ID4gK3ZkZWNf YXYxX3NsaWNlX2dldF9zaGVhcl9wYXJhbXMoJmdtW2ldKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4g K30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIHZvaWQgdmRlY19hdjFfc2xpY2Vfc2V0dXBf c2VnKHN0cnVjdCB2ZGVjX2F2MV9zbGljZV9zZWcNCj4gPiA+ID4gKnNlZywNCj4gPiA+ID4gKyAg ICAgc3RydWN0IHY0bDJfYXYxX3NlZ21lbnRhdGlvbg0KPiA+ID4gPiAqY3RybF9zZWcpDQo+ID4g PiA+ICt7DQo+ID4gPiA+ICt1MzIgaSwgajsNCj4gPiA+ID4gKw0KPiA+ID4gPiArc2VnLT5zZWdt ZW50YXRpb25fZW5hYmxlZCA9IFNFR01FTlRBVElPTl9GTEFHKGN0cmxfc2VnLA0KPiA+ID4gPiBF TkFCTEVEKTsNCj4gPiA+ID4gK3NlZy0+c2VnbWVudGF0aW9uX3VwZGF0ZV9tYXAgPSBTRUdNRU5U QVRJT05fRkxBRyhjdHJsX3NlZywNCj4gPiA+ID4gVVBEQVRFX01BUCk7DQo+ID4gPiA+ICtzZWct PnNlZ21lbnRhdGlvbl90ZW1wb3JhbF91cGRhdGUgPQ0KPiA+ID4gPiBTRUdNRU5UQVRJT05fRkxB RyhjdHJsX3NlZywNCj4gPiA+ID4gVEVNUE9SQUxfVVBEQVRFKTsNCj4gPiA+ID4gK3NlZy0+c2Vn bWVudGF0aW9uX3VwZGF0ZV9kYXRhID0gU0VHTUVOVEFUSU9OX0ZMQUcoY3RybF9zZWcsDQo+ID4g PiA+IFVQREFURV9EQVRBKTsNCj4gPiA+ID4gK3NlZy0+c2VnaWRfcHJlc2tpcCA9IFNFR01FTlRB VElPTl9GTEFHKGN0cmxfc2VnLA0KPiA+ID4gPiBTRUdfSURfUFJFX1NLSVApOw0KPiA+ID4gPiAr c2VnLT5sYXN0X2FjdGl2ZV9zZWdpZCA9IGN0cmxfc2VnLT5sYXN0X2FjdGl2ZV9zZWdfaWQ7DQo+ ID4gPiA+ICsNCj4gPiA+ID4gK2ZvciAoaSA9IDA7IGkgPCBWNEwyX0FWMV9NQVhfU0VHTUVOVFM7 IGkrKykgew0KPiA+ID4gPiArc2VnLT5mZWF0dXJlX2VuYWJsZWRfbWFza1tpXSA9IGN0cmxfc2Vn LQ0KPiA+ID4gPiA+IGZlYXR1cmVfZW5hYmxlZFtpXTsNCj4gPiA+ID4gDQo+ID4gPiA+ICtmb3Ig KGogPSAwOyBqIDwgVjRMMl9BVjFfU0VHX0xWTF9NQVg7IGorKykNCj4gPiA+ID4gK3NlZy0+ZmVh dHVyZV9kYXRhW2ldW2pdID0gY3RybF9zZWctDQo+ID4gPiA+ID4gZmVhdHVyZV9kYXRhW2ldW2pd Ow0KPiA+ID4gPiANCj4gPiA+ID4gK30NCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiAr c3RhdGljIHZvaWQgdmRlY19hdjFfc2xpY2Vfc2V0dXBfcXVhbnQoc3RydWN0DQo+ID4gPiA+IHZk ZWNfYXYxX3NsaWNlX3F1YW50aXphdGlvbiAqcXVhbnQsDQo+ID4gPiA+ICsgICAgICAgc3RydWN0 IHY0bDJfYXYxX3F1YW50aXphdGlvbg0KPiA+ID4gPiAqY3RybF9xdWFudCkNCj4gPiA+ID4gK3sN Cj4gPiA+ID4gK3F1YW50LT5iYXNlX3FfaWR4ID0gY3RybF9xdWFudC0+YmFzZV9xX2lkeDsNCj4g PiA+ID4gK3F1YW50LT5kZWx0YV9xeWRjID0gY3RybF9xdWFudC0+ZGVsdGFfcV95X2RjOw0KPiA+ ID4gPiArcXVhbnQtPmRlbHRhX3F1ZGMgPSBjdHJsX3F1YW50LT5kZWx0YV9xX3VfZGM7DQo+ID4g PiA+ICtxdWFudC0+ZGVsdGFfcXVhYyA9IGN0cmxfcXVhbnQtPmRlbHRhX3FfdV9hYzsNCj4gPiA+ ID4gK3F1YW50LT5kZWx0YV9xdmRjID0gY3RybF9xdWFudC0+ZGVsdGFfcV92X2RjOw0KPiA+ID4g PiArcXVhbnQtPmRlbHRhX3F2YWMgPSBjdHJsX3F1YW50LT5kZWx0YV9xX3ZfYWM7DQo+ID4gPiA+ ICtxdWFudC0+cW1feSA9IGN0cmxfcXVhbnQtPnFtX3k7DQo+ID4gPiA+ICtxdWFudC0+cW1fdSA9 IGN0cmxfcXVhbnQtPnFtX3U7DQo+ID4gPiA+ICtxdWFudC0+cW1fdiA9IGN0cmxfcXVhbnQtPnFt X3Y7DQo+ID4gPiANCj4gPiA+IENhbiBhIGNvbW1vbiBzdHJ1Y3QgYmUgaW50cm9kdWNlZCB0byBo b2xkIHRoZXNlIHBhcmFtZXRlcnM/DQo+ID4gPiBBbmQgdGhlbiBjb3BpZWQgaW4gb25lIGdvPw0K PiA+ID4gDQo+ID4gPiBNYXliZSB0aGVyZSdzIGEgZ29vZCByZWFzb24gdGhlIGNvZGUgaXMgdGhl IHdheSBpdCBpcyBub3cuDQo+ID4gPiBIb3dldmVyLA0KPiA+ID4gYSBzZXJpZXMgb2YgImR1bWIi IGFzc2lnbm1lbnRzIChubyB2YWx1ZSBtb2RpZmljYXRpb25zKSBtYWtlcyBtZQ0KPiA+ID4gd29u ZGVyLg0KPiA+ID4gDQo+ID4gPiA+ICtxdWFudC0+dXNpbmdfcW1hdHJpeCA9IFFVQU5UX0ZMQUco Y3RybF9xdWFudCwgVVNJTkdfUU1BVFJJWCk7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ ID4gK3N0YXRpYyBpbnQgdmRlY19hdjFfc2xpY2VfZ2V0X3FpbmRleChzdHJ1Y3QNCj4gPiA+ID4g dmRlY19hdjFfc2xpY2VfdW5jb21wcmVzc2VkX2hlYWRlciAqdWgsDQo+ID4gPiA+ICsgICAgIGlu dCBzZWdtZW50YXRpb25faWQpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFf c2xpY2Vfc2VnICpzZWcgPSAmdWgtPnNlZzsNCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGlj ZV9xdWFudGl6YXRpb24gKnF1YW50ID0gJnVoLT5xdWFudDsNCj4gPiA+ID4gK2ludCBkYXRhID0g MCwgcWluZGV4ID0gMDsNCj4gPiA+ID4gKw0KPiA+ID4gPiAraWYgKHNlZy0+c2VnbWVudGF0aW9u X2VuYWJsZWQgJiYNCj4gPiA+ID4gKyAgICAoc2VnLT5mZWF0dXJlX2VuYWJsZWRfbWFza1tzZWdt ZW50YXRpb25faWRdICYNCj4gPiA+ID4gQklUKFNFR19MVkxfQUxUX1EpKSkgew0KPiA+ID4gPiAr ZGF0YSA9IHNlZy0NCj4gPiA+ID4gPiBmZWF0dXJlX2RhdGFbc2VnbWVudGF0aW9uX2lkXVtTRUdf TFZMX0FMVF9RXTsNCj4gPiA+ID4gDQo+ID4gPiA+ICtxaW5kZXggPSBxdWFudC0+YmFzZV9xX2lk eCArIGRhdGE7DQo+ID4gPiA+ICtyZXR1cm4gY2xhbXBfdmFsKHFpbmRleCwgMCwgTUFYUSk7DQo+ ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3JldHVybiBxdWFudC0+YmFzZV9xX2lkeDsN Cj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIHZvaWQgdmRlY19hdjFfc2xp Y2Vfc2V0dXBfbHIoc3RydWN0IHZkZWNfYXYxX3NsaWNlX2xyDQo+ID4gPiA+ICpsciwNCj4gPiA+ ID4gKyAgICBzdHJ1Y3QNCj4gPiA+ID4gdjRsMl9hdjFfbG9vcF9yZXN0b3JhdGlvbiAgKmN0cmxf bHIpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICtpbnQgaTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArbHIt PnVzZV9sciA9IDA7DQo+ID4gPiA+ICtsci0+dXNlX2Nocm9tYV9sciA9IDA7DQo+ID4gPiA+ICtm b3IgKGkgPSAwOyBpIDwgVjRMMl9BVjFfTlVNX1BMQU5FU19NQVg7IGkrKykgew0KPiA+ID4gPiAr bHItPmZyYW1lX3Jlc3RvcmF0aW9uX3R5cGVbaV0gPSBjdHJsX2xyLQ0KPiA+ID4gPiA+IGZyYW1l X3Jlc3RvcmF0aW9uX3R5cGVbaV07DQo+ID4gPiA+IA0KPiA+ID4gPiArbHItPmxvb3BfcmVzdG9y YXRpb25fc2l6ZVtpXSA9IGN0cmxfbHItDQo+ID4gPiA+ID4gbG9vcF9yZXN0b3JhdGlvbl9zaXpl W2ldOw0KPiA+ID4gPiANCj4gPiA+ID4gK2lmIChsci0+ZnJhbWVfcmVzdG9yYXRpb25fdHlwZVtp XSkgew0KPiA+ID4gPiArbHItPnVzZV9sciA9IDE7DQo+ID4gPiA+ICtpZiAoaSA+IDApDQo+ID4g PiA+ICtsci0+dXNlX2Nocm9tYV9sciA9IDE7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICt9DQo+ID4g PiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHZkZWNfYXYxX3NsaWNlX3Nl dHVwX2xmKHN0cnVjdA0KPiA+ID4gPiB2ZGVjX2F2MV9zbGljZV9sb29wX2ZpbHRlciAqbGYsDQo+ ID4gPiA+ICsgICAgc3RydWN0IHY0bDJfYXYxX2xvb3BfZmlsdGVyDQo+ID4gPiA+ICpjdHJsX2xm KQ0KPiA+ID4gPiArew0KPiA+ID4gPiAraW50IGk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2ZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKGxmLT5sb29wX2ZpbHRlcl9sZXZlbCk7IGkrKykNCj4gPiA+ ID4gK2xmLT5sb29wX2ZpbHRlcl9sZXZlbFtpXSA9IGN0cmxfbGYtPmxldmVsW2ldOw0KPiA+ID4g PiArDQo+ID4gPiA+ICtmb3IgKGkgPSAwOyBpIDwgVjRMMl9BVjFfVE9UQUxfUkVGU19QRVJfRlJB TUU7IGkrKykNCj4gPiA+ID4gK2xmLT5sb29wX2ZpbHRlcl9yZWZfZGVsdGFzW2ldID0gY3RybF9s Zi0+cmVmX2RlbHRhc1tpXTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkUobGYtPmxvb3BfZmlsdGVyX21vZGVfZGVsdGFzKTsgaSsrKQ0KPiA+ID4gPiArbGYt Pmxvb3BfZmlsdGVyX21vZGVfZGVsdGFzW2ldID0gY3RybF9sZi0NCj4gPiA+ID4gPiBtb2RlX2Rl bHRhc1tpXTsNCj4gPiA+ID4gDQo+ID4gPiA+ICsNCj4gPiA+ID4gK2xmLT5sb29wX2ZpbHRlcl9z aGFycG5lc3MgPSBjdHJsX2xmLT5zaGFycG5lc3M7DQo+ID4gPiA+ICtsZi0+bG9vcF9maWx0ZXJf ZGVsdGFfZW5hYmxlZCA9DQo+ID4gPiA+ICsgICBCSVRfRkxBRyhjdHJsX2xmLA0KPiA+ID4gPiBW NEwyX0FWMV9MT09QX0ZJTFRFUl9GTEFHX0RFTFRBX0VOQUJMRUQpOw0KPiA+ID4gPiArfQ0KPiA+ ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgdm9pZCB2ZGVjX2F2MV9zbGljZV9zZXR1cF9jZGVmKHN0 cnVjdA0KPiA+ID4gPiB2ZGVjX2F2MV9zbGljZV9jZGVmDQo+ID4gPiA+ICpjZGVmLA0KPiA+ID4g PiArICAgICAgc3RydWN0IHY0bDJfYXYxX2NkZWYgKmN0cmxfY2RlZikNCj4gPiA+ID4gK3sNCj4g PiA+ID4gK2ludCBpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtjZGVmLT5jZGVmX2RhbXBpbmcgPSBj dHJsX2NkZWYtPmRhbXBpbmdfbWludXNfMyArIDM7DQo+ID4gPiA+ICtjZGVmLT5jZGVmX2JpdHMg PSBjdHJsX2NkZWYtPmJpdHM7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2ZvciAoaSA9IDA7IGkgPCBW NEwyX0FWMV9DREVGX01BWDsgaSsrKSB7DQo+ID4gPiA+ICtpZiAoY3RybF9jZGVmLT55X3NlY19z dHJlbmd0aFtpXSA9PSA0KQ0KPiA+ID4gPiArY3RybF9jZGVmLT55X3NlY19zdHJlbmd0aFtpXSAt PSAxOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtpZiAoY3RybF9jZGVmLT51dl9zZWNfc3RyZW5ndGhb aV0gPT0gNCkNCj4gPiA+ID4gK2N0cmxfY2RlZi0+dXZfc2VjX3N0cmVuZ3RoW2ldIC09IDE7DQo+ ID4gPiA+ICsNCj4gPiA+ID4gK2NkZWYtPmNkZWZfeV9zdHJlbmd0aFtpXSA9DQo+ID4gPiA+ICtj dHJsX2NkZWYtPnlfcHJpX3N0cmVuZ3RoW2ldIDw8DQo+ID4gPiA+IFNFQ09OREFSWV9GSUxURVJf U1RSRU5HVEhfTlVNX0JJVFMgfA0KPiA+ID4gPiArY3RybF9jZGVmLT55X3NlY19zdHJlbmd0aFtp XTsNCj4gPiA+ID4gK2NkZWYtPmNkZWZfdXZfc3RyZW5ndGhbaV0gPQ0KPiA+ID4gPiArY3RybF9j ZGVmLT51dl9wcmlfc3RyZW5ndGhbaV0gPDwNCj4gPiA+ID4gU0VDT05EQVJZX0ZJTFRFUl9TVFJF TkdUSF9OVU1fQklUUyB8DQo+ID4gPiA+ICtjdHJsX2NkZWYtPnV2X3NlY19zdHJlbmd0aFtpXTsN Cj4gPiA+ID4gK30NCj4gPiA+ID4gK30NCj4gPiA+IA0KPiA+ID4gQm90aCB2ZGVjX2F2MV9zbGlj ZV9zZXR1cF9sZigpIGFuZCB2ZGVjX2F2MV9zbGljZV9zZXR1cF9jZGVmKCk6DQo+ID4gPiANCj4g PiA+IEknbSB3b25kZXJpbmcgaWYgdGhlIHVzZXIgb2Ygc3RydWN0IHZkZWNfYXYxX3NsaWNlX2xv b3BfZmlsdGVyDQo+ID4gPiBhbmQNCj4gPiA+IHN0cnVjdCANCj4gPiA+IHZkZWNfYXYxX3NsaWNl X2NkZWYgY291bGQgd29yayB3aXRoIHRoZSB1QVBJIHZhcmlhbnRzIG9mIHRoZXNlDQo+ID4gPiBz dHJ1Y3RzPyBJcyB0aGVyZQ0KPiA+ID4gYSBuZWVkIGZvciBkcml2ZXItc3BlY2lmaWMgbXV0YXRp b25zPyAoTWF5YmUgdGhlcmUgaXMsIHRoZQ0KPiA+ID4gZHJpdmVyJ3MNCj4gPiA+IGF1dGhvcg0K PiA+ID4gc2hvdWxkIGtub3cpLg0KPiA+ID4gDQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyB2 b2lkIHZkZWNfYXYxX3NsaWNlX3NldHVwX3NlcShzdHJ1Y3QNCj4gPiA+ID4gdmRlY19hdjFfc2xp Y2Vfc2VxX2hlYWRlciAqc2VxLA0KPiA+ID4gPiArICAgICBzdHJ1Y3QgdjRsMl9jdHJsX2F2MV9z ZXF1ZW5jZQ0KPiA+ID4gPiAqY3RybF9zZXEpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICtzZXEtPmJp dGRlcHRoID0gY3RybF9zZXEtPmJpdF9kZXB0aDsNCj4gPiA+ID4gK3NlcS0+bWF4X2ZyYW1lX3dp ZHRoID0gY3RybF9zZXEtPm1heF9mcmFtZV93aWR0aF9taW51c18xICsgMTsNCj4gPiA+ID4gK3Nl cS0+bWF4X2ZyYW1lX2hlaWdodCA9IGN0cmxfc2VxLT5tYXhfZnJhbWVfaGVpZ2h0X21pbnVzXzEg Kw0KPiA+ID4gPiAxOw0KPiA+ID4gPiArc2VxLT5lbmFibGVfc3VwZXJyZXMgPSBTRVFVRU5DRV9G TEFHKGN0cmxfc2VxLA0KPiA+ID4gPiBFTkFCTEVfU1VQRVJSRVMpOw0KPiA+ID4gPiArc2VxLT5l bmFibGVfZmlsdGVyX2ludHJhID0gU0VRVUVOQ0VfRkxBRyhjdHJsX3NlcSwNCj4gPiA+ID4gRU5B QkxFX0ZJTFRFUl9JTlRSQSk7DQo+ID4gPiA+ICtzZXEtPmVuYWJsZV9pbnRyYV9lZGdlX2ZpbHRl ciA9IFNFUVVFTkNFX0ZMQUcoY3RybF9zZXEsDQo+ID4gPiA+IEVOQUJMRV9JTlRSQV9FREdFX0ZJ TFRFUik7DQo+ID4gPiA+ICtzZXEtPmVuYWJsZV9pbnRlcmludHJhX2NvbXBvdW5kID0gU0VRVUVO Q0VfRkxBRyhjdHJsX3NlcSwNCj4gPiA+ID4gRU5BQkxFX0lOVEVSSU5UUkFfQ09NUE9VTkQpOw0K PiA+ID4gPiArc2VxLT5lbmFibGVfbWFza2VkX2NvbXBvdW5kID0gU0VRVUVOQ0VfRkxBRyhjdHJs X3NlcSwNCj4gPiA+ID4gRU5BQkxFX01BU0tFRF9DT01QT1VORCk7DQo+ID4gPiA+ICtzZXEtPmVu YWJsZV9kdWFsX2ZpbHRlciA9IFNFUVVFTkNFX0ZMQUcoY3RybF9zZXEsDQo+ID4gPiA+IEVOQUJM RV9EVUFMX0ZJTFRFUik7DQo+ID4gPiA+ICtzZXEtPmVuYWJsZV9qbnRfY29tcCA9IFNFUVVFTkNF X0ZMQUcoY3RybF9zZXEsDQo+ID4gPiA+IEVOQUJMRV9KTlRfQ09NUCk7DQo+ID4gPiA+ICtzZXEt Pm1vbm9fY2hyb21lID0gU0VRVUVOQ0VfRkxBRyhjdHJsX3NlcSwgTU9OT19DSFJPTUUpOw0KPiA+ ID4gPiArc2VxLT5lbmFibGVfb3JkZXJfaGludCA9IFNFUVVFTkNFX0ZMQUcoY3RybF9zZXEsDQo+ ID4gPiA+IEVOQUJMRV9PUkRFUl9ISU5UKTsNCj4gPiA+ID4gK3NlcS0+b3JkZXJfaGludF9iaXRz ID0gY3RybF9zZXEtPm9yZGVyX2hpbnRfYml0czsNCj4gPiA+ID4gK3NlcS0+dXNlXzEyOHgxMjhf c3VwZXJibG9jayA9IFNFUVVFTkNFX0ZMQUcoY3RybF9zZXEsDQo+ID4gPiA+IFVTRV8xMjhYMTI4 X1NVUEVSQkxPQ0spOw0KPiA+ID4gPiArc2VxLT5zdWJzYW1wbGluZ194ID0gU0VRVUVOQ0VfRkxB RyhjdHJsX3NlcSwgU1VCU0FNUExJTkdfWCk7DQo+ID4gPiA+ICtzZXEtPnN1YnNhbXBsaW5nX3kg PSBTRVFVRU5DRV9GTEFHKGN0cmxfc2VxLCBTVUJTQU1QTElOR19ZKTsNCj4gPiA+ID4gK30NCj4g PiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIHZvaWQgdmRlY19hdjFfc2xpY2Vfc2V0dXBfdGlsZShz dHJ1Y3QNCj4gPiA+ID4gdmRlY19hdjFfc2xpY2VfZnJhbWUNCj4gPiA+ID4gKmZyYW1lLA0KPiA+ ID4gPiArICAgICAgc3RydWN0IHY0bDJfYXYxX3RpbGVfaW5mbw0KPiA+ID4gPiAqY3RybF90aWxl KQ0KPiA+ID4gPiArew0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX3NlcV9oZWFkZXIg KnNlcSA9ICZmcmFtZS0+c2VxOw0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX3RpbGUg KnRpbGUgPSAmZnJhbWUtPnVoLnRpbGU7DQo+ID4gPiA+ICt1MzIgbWliX3NpemVfbG9nMiA9IHNl cS0+dXNlXzEyOHgxMjhfc3VwZXJibG9jayA/IDUgOiA0Ow0KPiA+ID4gPiAraW50IGk7DQo+ID4g PiA+ICsNCj4gPiA+ID4gK3RpbGUtPnRpbGVfY29scyA9IGN0cmxfdGlsZS0+dGlsZV9jb2xzOw0K PiA+ID4gPiArdGlsZS0+dGlsZV9yb3dzID0gY3RybF90aWxlLT50aWxlX3Jvd3M7DQo+ID4gPiA+ ICt0aWxlLT5jb250ZXh0X3VwZGF0ZV90aWxlX2lkID0gY3RybF90aWxlLQ0KPiA+ID4gPiA+IGNv bnRleHRfdXBkYXRlX3RpbGVfaWQ7DQo+ID4gPiA+IA0KPiA+ID4gPiArdGlsZS0+dW5pZm9ybV90 aWxlX3NwYWNpbmdfZmxhZyA9DQo+ID4gPiA+ICtCSVRfRkxBRyhjdHJsX3RpbGUsDQo+ID4gPiA+ IFY0TDJfQVYxX1RJTEVfSU5GT19GTEFHX1VOSUZPUk1fVElMRV9TUEFDSU5HKTsNCj4gPiA+ID4g Kw0KPiA+ID4gPiArZm9yIChpID0gMDsgaSA8IHRpbGUtPnRpbGVfY29scyArIDE7IGkrKykNCj4g PiA+ID4gK3RpbGUtPm1pX2NvbF9zdGFydHNbaV0gPQ0KPiA+ID4gPiArQUxJR04oY3RybF90aWxl LT5taV9jb2xfc3RhcnRzW2ldLA0KPiA+ID4gPiBCSVQobWliX3NpemVfbG9nMikpID4+IG1pYl9z aXplX2xvZzI7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2ZvciAoaSA9IDA7IGkgPCB0aWxlLT50aWxl X3Jvd3MgKyAxOyBpKyspDQo+ID4gPiA+ICt0aWxlLT5taV9yb3dfc3RhcnRzW2ldID0NCj4gPiA+ ID4gK0FMSUdOKGN0cmxfdGlsZS0+bWlfcm93X3N0YXJ0c1tpXSwNCj4gPiA+ID4gQklUKG1pYl9z aXplX2xvZzIpKSA+PiBtaWJfc2l6ZV9sb2cyOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4g PiA+ICtzdGF0aWMgdm9pZCB2ZGVjX2F2MV9zbGljZV9zZXR1cF91aChzdHJ1Y3QNCj4gPiA+ID4g dmRlY19hdjFfc2xpY2VfaW5zdGFuY2UNCj4gPiA+ID4gKmluc3RhbmNlLA0KPiA+ID4gPiArICAg IHN0cnVjdCB2ZGVjX2F2MV9zbGljZV9mcmFtZSAqZnJhbWUsDQo+ID4gPiA+ICsgICAgc3RydWN0 IHY0bDJfY3RybF9hdjFfZnJhbWUNCj4gPiA+ID4gKmN0cmxfZmgpDQo+ID4gPiA+ICt7DQo+ID4g PiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfdW5jb21wcmVzc2VkX2hlYWRlciAqdWggPSAmZnJh bWUtPnVoOw0KPiA+ID4gPiAraW50IGk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3VoLT51c2VfcmVm X2ZyYW1lX212cyA9IEZIX0ZMQUcoY3RybF9maCwgVVNFX1JFRl9GUkFNRV9NVlMpOw0KPiA+ID4g PiArdWgtPm9yZGVyX2hpbnQgPSBjdHJsX2ZoLT5vcmRlcl9oaW50Ow0KPiA+ID4gPiArdmRlY19h djFfc2xpY2Vfc2V0dXBfZ20odWgtPmdtLCAmY3RybF9maC0+Z2xvYmFsX21vdGlvbik7DQo+ID4g PiA+ICt1aC0+dXBzY2FsZWRfd2lkdGggPSBjdHJsX2ZoLT51cHNjYWxlZF93aWR0aDsNCj4gPiA+ ID4gK3VoLT5mcmFtZV93aWR0aCA9IGN0cmxfZmgtPmZyYW1lX3dpZHRoX21pbnVzXzEgKyAxOw0K PiA+ID4gPiArdWgtPmZyYW1lX2hlaWdodCA9IGN0cmxfZmgtPmZyYW1lX2hlaWdodF9taW51c18x ICsgMTsNCj4gPiA+ID4gK3VoLT5taV9jb2xzID0gKCh1aC0+ZnJhbWVfd2lkdGggKyA3KSA+PiAz KSA8PCAxOw0KPiA+ID4gPiArdWgtPm1pX3Jvd3MgPSAoKHVoLT5mcmFtZV9oZWlnaHQgKyA3KSA+ PiAzKSA8PCAxOw0KPiA+ID4gPiArdWgtPnJlZHVjZWRfdHhfc2V0ID0gRkhfRkxBRyhjdHJsX2Zo LCBSRURVQ0VEX1RYX1NFVCk7DQo+ID4gPiA+ICt1aC0+dHhfbW9kZSA9IGN0cmxfZmgtPnR4X21v ZGU7DQo+ID4gPiA+ICt1aC0+dW5pZm9ybV90aWxlX3NwYWNpbmdfZmxhZyA9IEZIX0ZMQUcoY3Ry bF9maCwNCj4gPiA+ID4gVU5JRk9STV9USUxFX1NQQUNJTkcpOw0KPiA+ID4gPiArdWgtPmludGVy cG9sYXRpb25fZmlsdGVyID0gY3RybF9maC0+aW50ZXJwb2xhdGlvbl9maWx0ZXI7DQo+ID4gPiA+ ICt1aC0+YWxsb3dfd2FycGVkX21vdGlvbiA9IEZIX0ZMQUcoY3RybF9maCwNCj4gPiA+ID4gQUxM T1dfV0FSUEVEX01PVElPTik7DQo+ID4gPiA+ICt1aC0+aXNfbW90aW9uX21vZGVfc3dpdGNoYWJs ZSA9IEZIX0ZMQUcoY3RybF9maCwNCj4gPiA+ID4gSVNfTU9USU9OX01PREVfU1dJVENIQUJMRSk7 DQo+ID4gPiA+ICt1aC0+ZnJhbWVfdHlwZSA9IGN0cmxfZmgtPmZyYW1lX3R5cGU7DQo+ID4gPiA+ ICt1aC0+ZnJhbWVfaXNfaW50cmEgPSAodWgtPmZyYW1lX3R5cGUgPT0NCj4gPiA+ID4gVjRMMl9B VjFfSU5UUkFfT05MWV9GUkFNRSB8fA0KPiA+ID4gPiArICAgICAgdWgtPmZyYW1lX3R5cGUgPT0g VjRMMl9BVjFfS0VZX0ZSQU1FKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAraWYgKCF1aC0+ZnJhbWVf aXNfaW50cmEgJiYgRkhfRkxBRyhjdHJsX2ZoLCBSRUZFUkVOQ0VfU0VMRUNUKSkNCj4gPiA+ID4g K3VoLT5yZWZlcmVuY2VfbW9kZSA9IEFWMV9SRUZFUkVOQ0VfTU9ERV9TRUxFQ1Q7DQo+ID4gPiA+ ICtlbHNlDQo+ID4gPiA+ICt1aC0+cmVmZXJlbmNlX21vZGUgPSBBVjFfU0lOR0xFX1JFRkVSRU5D RTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArdWgtPmFsbG93X2hpZ2hfcHJlY2lzaW9uX212ID0gRkhf RkxBRyhjdHJsX2ZoLA0KPiA+ID4gPiBBTExPV19ISUdIX1BSRUNJU0lPTl9NVik7DQo+ID4gPiA+ ICt1aC0+YWxsb3dfaW50cmFfYmMgPSBGSF9GTEFHKGN0cmxfZmgsIEFMTE9XX0lOVFJBQkMpOw0K PiA+ID4gPiArdWgtPmZvcmNlX2ludGVnZXJfbXYgPSBGSF9GTEFHKGN0cmxfZmgsIEZPUkNFX0lO VEVHRVJfTVYpOw0KPiA+ID4gPiArdWgtPmFsbG93X3NjcmVlbl9jb250ZW50X3Rvb2xzID0gRkhf RkxBRyhjdHJsX2ZoLA0KPiA+ID4gPiBBTExPV19TQ1JFRU5fQ09OVEVOVF9UT09MUyk7DQo+ID4g PiA+ICt1aC0+ZXJyb3JfcmVzaWxpZW50X21vZGUgPSBGSF9GTEFHKGN0cmxfZmgsDQo+ID4gPiA+ IEVSUk9SX1JFU0lMSUVOVF9NT0RFKTsNCj4gPiA+ID4gK3VoLT5wcmltYXJ5X3JlZl9mcmFtZSA9 IGN0cmxfZmgtPnByaW1hcnlfcmVmX2ZyYW1lOw0KPiA+ID4gPiArdWgtPmRpc2FibGVfZnJhbWVf ZW5kX3VwZGF0ZV9jZGYgPQ0KPiA+ID4gPiArRkhfRkxBRyhjdHJsX2ZoLCBESVNBQkxFX0ZSQU1F X0VORF9VUERBVEVfQ0RGKTsNCj4gPiA+ID4gK3VoLT5kaXNhYmxlX2NkZl91cGRhdGUgPSBGSF9G TEFHKGN0cmxfZmgsIERJU0FCTEVfQ0RGX1VQREFURSk7DQo+ID4gPiA+ICt1aC0+c2tpcF9tb2Rl LnNraXBfbW9kZV9wcmVzZW50ID0gRkhfRkxBRyhjdHJsX2ZoLA0KPiA+ID4gPiBTS0lQX01PREVf UFJFU0VOVCk7DQo+ID4gPiA+ICt1aC0+c2tpcF9tb2RlLnNraXBfbW9kZV9mcmFtZVswXSA9DQo+ ID4gPiA+ICtjdHJsX2ZoLT5za2lwX21vZGVfZnJhbWVbMF0gLSBWNEwyX0FWMV9SRUZfTEFTVF9G UkFNRTsNCj4gPiA+ID4gK3VoLT5za2lwX21vZGUuc2tpcF9tb2RlX2ZyYW1lWzFdID0NCj4gPiA+ ID4gK2N0cmxfZmgtPnNraXBfbW9kZV9mcmFtZVsxXSAtIFY0TDJfQVYxX1JFRl9MQVNUX0ZSQU1F Ow0KPiA+ID4gPiArdWgtPnNraXBfbW9kZS5za2lwX21vZGVfYWxsb3dlZCA9IGN0cmxfZmgtPnNr aXBfbW9kZV9mcmFtZVswXQ0KPiA+ID4gPiA/DQo+ID4gPiA+IDEgOiAwOw0KPiA+ID4gPiArDQo+ ID4gPiA+ICt2ZGVjX2F2MV9zbGljZV9zZXR1cF9zZWcoJnVoLT5zZWcsICZjdHJsX2ZoLT5zZWdt ZW50YXRpb24pOw0KPiA+ID4gPiArdWgtPmRlbHRhX3FfbGYuZGVsdGFfcV9wcmVzZW50ID0gUVVB TlRfRkxBRygmY3RybF9maC0NCj4gPiA+ID4gPiBxdWFudGl6YXRpb24sIERFTFRBX1FfUFJFU0VO VCk7DQo+ID4gPiA+IA0KPiA+ID4gPiArdWgtPmRlbHRhX3FfbGYuZGVsdGFfcV9yZXMgPSAxIDw8 IGN0cmxfZmgtDQo+ID4gPiA+ID4gcXVhbnRpemF0aW9uLmRlbHRhX3FfcmVzOw0KPiA+ID4gPiAN Cj4gPiA+ID4gK3VoLT5kZWx0YV9xX2xmLmRlbHRhX2xmX3ByZXNlbnQgPQ0KPiA+ID4gPiArQklU X0ZMQUcoJmN0cmxfZmgtPmxvb3BfZmlsdGVyLA0KPiA+ID4gPiBWNEwyX0FWMV9MT09QX0ZJTFRF Ul9GTEFHX0RFTFRBX0xGX1BSRVNFTlQpOw0KPiA+ID4gPiArdWgtPmRlbHRhX3FfbGYuZGVsdGFf bGZfcmVzID0gY3RybF9maC0NCj4gPiA+ID4gPiBsb29wX2ZpbHRlci5kZWx0YV9sZl9yZXM7DQo+ ID4gPiA+IA0KPiA+ID4gPiArdWgtPmRlbHRhX3FfbGYuZGVsdGFfbGZfbXVsdGkgPQ0KPiA+ID4g PiArQklUX0ZMQUcoJmN0cmxfZmgtPmxvb3BfZmlsdGVyLA0KPiA+ID4gPiBWNEwyX0FWMV9MT09Q X0ZJTFRFUl9GTEFHX0RFTFRBX0xGX01VTFRJKTsNCj4gPiA+ID4gK3ZkZWNfYXYxX3NsaWNlX3Nl dHVwX3F1YW50KCZ1aC0+cXVhbnQsICZjdHJsX2ZoLQ0KPiA+ID4gPiA+cXVhbnRpemF0aW9uKTsN Cj4gPiA+ID4gKw0KPiA+ID4gPiArdWgtPmNvZGVkX2xvc3NfbGVzcyA9IDE7DQo+ID4gPiA+ICtm b3IgKGkgPSAwOyBpIDwgVjRMMl9BVjFfTUFYX1NFR01FTlRTOyBpKyspIHsNCj4gPiA+ID4gK3Vo LT5xdWFudC5xaW5kZXhbaV0gPSB2ZGVjX2F2MV9zbGljZV9nZXRfcWluZGV4KHVoLCBpKTsNCj4g PiA+ID4gK3VoLT5sb3NzX2xlc3NfYXJyYXlbaV0gPQ0KPiA+ID4gPiArKHVoLT5xdWFudC5xaW5k ZXhbaV0gPT0gMCAmJiB1aC0NCj4gPiA+ID4gPiBxdWFudC5kZWx0YV9xeWRjID09IDAgJiYNCj4g PiA+ID4gDQo+ID4gPiA+ICt1aC0+cXVhbnQuZGVsdGFfcXVhYyA9PSAwICYmIHVoLQ0KPiA+ID4g PiA+IHF1YW50LmRlbHRhX3F1ZGMgPT0gMCAmJg0KPiA+ID4gPiANCj4gPiA+ID4gK3VoLT5xdWFu dC5kZWx0YV9xdmFjID09IDAgJiYgdWgtDQo+ID4gPiA+ID4gcXVhbnQuZGVsdGFfcXZkYyA9PSAw KTsNCj4gPiA+ID4gDQo+ID4gPiA+ICsNCj4gPiA+ID4gK2lmICghdWgtPmxvc3NfbGVzc19hcnJh eVtpXSkNCj4gPiA+ID4gK3VoLT5jb2RlZF9sb3NzX2xlc3MgPSAwOw0KPiA+ID4gPiArfQ0KPiA+ ID4gPiArDQo+ID4gPiA+ICt2ZGVjX2F2MV9zbGljZV9zZXR1cF9scigmdWgtPmxyLCAmY3RybF9m aC0+bG9vcF9yZXN0b3JhdGlvbik7DQo+ID4gPiA+ICt1aC0+c3VwZXJyZXNfZGVub20gPSBjdHJs X2ZoLT5zdXBlcnJlc19kZW5vbTsNCj4gPiA+ID4gK3ZkZWNfYXYxX3NsaWNlX3NldHVwX2xmKCZ1 aC0+bG9vcF9maWx0ZXIsICZjdHJsX2ZoLQ0KPiA+ID4gPiA+IGxvb3BfZmlsdGVyKTsNCj4gPiA+ ID4gDQo+ID4gPiA+ICt2ZGVjX2F2MV9zbGljZV9zZXR1cF9jZGVmKCZ1aC0+Y2RlZiwgJmN0cmxf ZmgtPmNkZWYpOw0KPiA+ID4gPiArdmRlY19hdjFfc2xpY2Vfc2V0dXBfdGlsZShmcmFtZSwgJmN0 cmxfZmgtPnRpbGVfaW5mbyk7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRp YyBpbnQgdmRlY19hdjFfc2xpY2Vfc2V0dXBfdGlsZV9ncm91cChzdHJ1Y3QNCj4gPiA+ID4gdmRl Y19hdjFfc2xpY2VfaW5zdGFuY2UgKmluc3RhbmNlLA0KPiA+ID4gPiArICAgc3RydWN0IHZkZWNf YXYxX3NsaWNlX3ZzaQ0KPiA+ID4gPiAqdnNpKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArc3RydWN0 IHY0bDJfY3RybF9hdjFfdGlsZV9ncm91cF9lbnRyeSAqY3RybF90Z2U7DQo+ID4gPiA+ICtzdHJ1 Y3QgdmRlY19hdjFfc2xpY2VfdGlsZV9ncm91cCAqdGlsZV9ncm91cCA9ICZpbnN0YW5jZS0NCj4g PiA+ID4gPiB0aWxlX2dyb3VwOw0KPiA+ID4gPiANCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9z bGljZV91bmNvbXByZXNzZWRfaGVhZGVyICp1aCA9ICZ2c2ktDQo+ID4gPiA+ID5mcmFtZS51aDsN Cj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV90aWxlICp0aWxlID0gJnVoLT50aWxlOw0K PiA+ID4gPiArc3RydWN0IHY0bDJfY3RybCAqY3RybDsNCj4gPiA+ID4gK3UzMiB0Z2Vfc2l6ZTsN Cj4gPiA+ID4gK2ludCBpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtjdHJsID0gdjRsMl9jdHJsX2Zp bmQoJmluc3RhbmNlLT5jdHgtPmN0cmxfaGRsLA0KPiA+ID4gPiBWNEwyX0NJRF9TVEFURUxFU1Nf QVYxX1RJTEVfR1JPVVBfRU5UUlkpOw0KPiA+ID4gPiAraWYgKCFjdHJsKQ0KPiA+ID4gPiArcmV0 dXJuIC1FSU5WQUw7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3RnZV9zaXplID0gY3RybC0+ZWxlbXM7 DQo+ID4gPiA+ICtjdHJsX3RnZSA9IChzdHJ1Y3QgdjRsMl9jdHJsX2F2MV90aWxlX2dyb3VwX2Vu dHJ5ICopY3RybC0NCj4gPiA+ID4gPiBwX2N1ci5wOw0KPiA+ID4gPiANCj4gPiA+ID4gKw0KPiA+ ID4gPiArdGlsZV9ncm91cC0+bnVtX3RpbGVzID0gdGlsZS0+dGlsZV9jb2xzICogdGlsZS0+dGls ZV9yb3dzOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtpZiAodGlsZV9ncm91cC0+bnVtX3RpbGVzICE9 IHRnZV9zaXplIHx8DQo+ID4gPiA+ICsgICAgdGlsZV9ncm91cC0+bnVtX3RpbGVzID4gVjRMMl9B VjFfTUFYX1RJTEVfQ09VTlQpIHsNCj4gPiA+ID4gK210a192Y29kZWNfZXJyKGluc3RhbmNlLCAi aW52YWxpZCB0Z2Vfc2l6ZSAlZCwNCj4gPiA+ID4gdGlsZV9udW06JWRcbiIsDQo+ID4gPiA+ICsg ICAgICAgdGdlX3NpemUsIHRpbGVfZ3JvdXAtPm51bV90aWxlcyk7DQo+ID4gPiA+ICtyZXR1cm4g LUVJTlZBTDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArZm9yIChpID0gMDsgaSA8 IHRnZV9zaXplOyBpKyspIHsNCj4gPiA+ID4gK2lmIChpICE9IGN0cmxfdGdlW2ldLnRpbGVfcm93 ICogdnNpLQ0KPiA+ID4gPiA+IGZyYW1lLnVoLnRpbGUudGlsZV9jb2xzICsNCj4gPiA+ID4gDQo+ ID4gPiA+ICsgICAgY3RybF90Z2VbaV0udGlsZV9jb2wpIHsNCj4gPiA+ID4gK210a192Y29kZWNf ZXJyKGluc3RhbmNlLCAiaW52YWxpZCB0Z2UgaW5mbyAlZCwNCj4gPiA+ID4gJWQgJWQgJWRcbiIs DQo+ID4gPiA+ICsgICAgICAgaSwgY3RybF90Z2VbaV0udGlsZV9yb3csDQo+ID4gPiA+IGN0cmxf dGdlW2ldLnRpbGVfY29sLA0KPiA+ID4gPiArICAgICAgIHZzaS0+ZnJhbWUudWgudGlsZS50aWxl X3Jvd3MpOw0KPiA+ID4gPiArcmV0dXJuIC1FSU5WQUw7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICt0 aWxlX2dyb3VwLT50aWxlX3NpemVbaV0gPSBjdHJsX3RnZVtpXS50aWxlX3NpemU7DQo+ID4gPiA+ ICt0aWxlX2dyb3VwLT50aWxlX3N0YXJ0X29mZnNldFtpXSA9DQo+ID4gPiA+IGN0cmxfdGdlW2ld LnRpbGVfb2Zmc2V0Ow0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtyZXR1cm4gMDsN Cj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIHZvaWQgdmRlY19hdjFfc2xp Y2Vfc2V0dXBfc3RhdGUoc3RydWN0DQo+ID4gPiA+IHZkZWNfYXYxX3NsaWNlX3ZzaQ0KPiA+ID4g PiAqdnNpKQ0KPiA+ID4gDQo+ID4gPiBzdGF0aWMgaW5saW5lIHZvaWQ/DQo+ID4gPiANCj4gPiA+ ID4gK3sNCj4gPiA+ID4gK21lbXNldCgmdnNpLT5zdGF0ZSwgMCwgc2l6ZW9mKHZzaS0+c3RhdGUp KTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIHZvaWQgdmRlY19hdjFf c2xpY2Vfc2V0dXBfc2NhbGVfZmFjdG9ycyhzdHJ1Y3QNCj4gPiA+ID4gdmRlY19hdjFfc2xpY2Vf ZnJhbWVfcmVmcyAqZnJhbWVfcmVmLA0KPiA+ID4gPiArICAgICAgIHN0cnVjdA0KPiA+ID4gPiB2 ZGVjX2F2MV9zbGljZV9mcmFtZV9pbmZvICpyZWZfZnJhbWVfaW5mbywNCj4gPiA+ID4gKyAgICAg ICBzdHJ1Y3QNCj4gPiA+ID4gdmRlY19hdjFfc2xpY2VfdW5jb21wcmVzc2VkX2hlYWRlciAqdWgp DQo+ID4gPiA+ICt7DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2Vfc2NhbGVfZmFjdG9y cyAqc2NhbGVfZmFjdG9ycyA9DQo+ID4gPiA+ICZmcmFtZV9yZWYtPnNjYWxlX2ZhY3RvcnM7DQo+ ID4gPiA+ICt1MzIgcmVmX3Vwc2NhbGVkX3dpZHRoID0gcmVmX2ZyYW1lX2luZm8tPnVwc2NhbGVk X3dpZHRoOw0KPiA+ID4gPiArdTMyIHJlZl9mcmFtZV9oZWlnaHQgPSByZWZfZnJhbWVfaW5mby0+ ZnJhbWVfaGVpZ2h0Ow0KPiA+ID4gPiArdTMyIGZyYW1lX3dpZHRoID0gdWgtPmZyYW1lX3dpZHRo Ow0KPiA+ID4gPiArdTMyIGZyYW1lX2hlaWdodCA9IHVoLT5mcmFtZV9oZWlnaHQ7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gK2lmICghdmRlY19hdjFfc2xpY2VfbmVlZF9zY2FsZShyZWZfdXBzY2FsZWRf d2lkdGgsDQo+ID4gPiA+IHJlZl9mcmFtZV9oZWlnaHQsDQo+ID4gPiA+ICsgICAgICAgZnJhbWVf d2lkdGgsIGZyYW1lX2hlaWdodCkpIHsNCj4gPiA+ID4gK3NjYWxlX2ZhY3RvcnMtPnhfc2NhbGUg PSAtMTsNCj4gPiA+ID4gK3NjYWxlX2ZhY3RvcnMtPnlfc2NhbGUgPSAtMTsNCj4gPiA+ID4gK3Nj YWxlX2ZhY3RvcnMtPmlzX3NjYWxlZCA9IDA7DQo+ID4gPiA+ICtyZXR1cm47DQo+ID4gPiA+ICt9 DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3NjYWxlX2ZhY3RvcnMtPnhfc2NhbGUgPQ0KPiA+ID4gPiAr KChyZWZfdXBzY2FsZWRfd2lkdGggPDwgQVYxX1JFRl9TQ0FMRV9TSElGVCkgKw0KPiA+ID4gPiAo ZnJhbWVfd2lkdGggPj4gMSkpIC8gZnJhbWVfd2lkdGg7DQo+ID4gPiA+ICtzY2FsZV9mYWN0b3Jz LT55X3NjYWxlID0NCj4gPiA+ID4gKygocmVmX2ZyYW1lX2hlaWdodCA8PCBBVjFfUkVGX1NDQUxF X1NISUZUKSArDQo+ID4gPiA+IChmcmFtZV9oZWlnaHQgPj4gMSkpIC8gZnJhbWVfaGVpZ2h0Ow0K PiA+ID4gPiArc2NhbGVfZmFjdG9ycy0+aXNfc2NhbGVkID0NCj4gPiA+ID4gKyhzY2FsZV9mYWN0 b3JzLT54X3NjYWxlICE9IEFWMV9SRUZfSU5WQUxJRF9TQ0FMRSkgJiYNCj4gPiA+ID4gKyhzY2Fs ZV9mYWN0b3JzLT55X3NjYWxlICE9IEFWMV9SRUZfSU5WQUxJRF9TQ0FMRSkgJiYNCj4gPiA+ID4g KyhzY2FsZV9mYWN0b3JzLT54X3NjYWxlICE9IEFWMV9SRUZfTk9fU0NBTEUgfHwNCj4gPiA+ID4g KyBzY2FsZV9mYWN0b3JzLT55X3NjYWxlICE9IEFWMV9SRUZfTk9fU0NBTEUpOw0KPiA+ID4gPiAr c2NhbGVfZmFjdG9ycy0+eF9zdGVwID0NCj4gPiA+ID4gK0FWMV9ESVZfUk9VTkRfVVBfUE9XMihz Y2FsZV9mYWN0b3JzLT54X3NjYWxlLA0KPiA+ID4gPiArICAgICAgQVYxX1JFRl9TQ0FMRV9TSElG VCAtDQo+ID4gPiA+IEFWMV9TQ0FMRV9TVUJQRUxfQklUUyk7DQo+ID4gPiA+ICtzY2FsZV9mYWN0 b3JzLT55X3N0ZXAgPQ0KPiA+ID4gPiArQVYxX0RJVl9ST1VORF9VUF9QT1cyKHNjYWxlX2ZhY3Rv cnMtPnlfc2NhbGUsDQo+ID4gPiA+ICsgICAgICBBVjFfUkVGX1NDQUxFX1NISUZUIC0NCj4gPiA+ ID4gQVYxX1NDQUxFX1NVQlBFTF9CSVRTKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4g PiArc3RhdGljIGludCB2ZGVjX2F2MV9zbGljZV9nZXRfcmVsYXRpdmVfZGlzdChpbnQgYSwgaW50 IGIsIHU4DQo+ID4gPiA+IGVuYWJsZV9vcmRlcl9oaW50LCB1OCBvcmRlcl9oaW50X2JpdHMpDQo+ ID4gPiA+ICt7DQo+ID4gPiA+ICtpbnQgZGlmZiA9IDA7DQo+ID4gPiA+ICtpbnQgbSA9IDA7DQo+ ID4gPiA+ICsNCj4gPiA+ID4gK2lmICghZW5hYmxlX29yZGVyX2hpbnQpDQo+ID4gPiA+ICtyZXR1 cm4gMDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArZGlmZiA9IGEgLSBiOw0KPiA+ID4gPiArbSA9IDEg PDwgKG9yZGVyX2hpbnRfYml0cyAtIDEpOw0KPiA+ID4gPiArZGlmZiA9IChkaWZmICYgKG0gLSAx KSkgLSAoZGlmZiAmIG0pOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtyZXR1cm4gZGlmZjsNCj4gPiA+ ID4gK30NCj4gPiA+IA0KPiA+ID4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gb25lIHBsYWNl IG9ubHksIGFuZCBpdHMgcmVzdWx0IG5lZWRzDQo+ID4gPiB0byBiZQ0KPiA+ID4gaW50ZXJwcmV0 ZWQgYXQgY2FsbCBzaXRlLiBDYW4gaXQgcmV0dXJuIHRoZSByZXN1bHQgaW4gYSBmb3JtDQo+ID4g PiBleHBlY3RlZA0KPiA+ID4gYXQgY2FsbCBzaXRlLi4uDQo+ID4gPiANCj4gPiA+ID4gKw0KPiA+ ID4gPiArc3RhdGljIHZvaWQgdmRlY19hdjFfc2xpY2Vfc2V0dXBfcmVmKHN0cnVjdCB2ZGVjX2F2 MV9zbGljZV9wZmMNCj4gPiA+ID4gKnBmYywNCj4gPiA+ID4gKyAgICAgc3RydWN0IHY0bDJfY3Ry bF9hdjFfZnJhbWUNCj4gPiA+ID4gKmN0cmxfZmgpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICtzdHJ1 Y3QgdmRlY19hdjFfc2xpY2VfdnNpICp2c2kgPSAmcGZjLT52c2k7DQo+ID4gPiA+ICtzdHJ1Y3Qg dmRlY19hdjFfc2xpY2VfZnJhbWUgKmZyYW1lID0gJnZzaS0+ZnJhbWU7DQo+ID4gPiA+ICtzdHJ1 Y3QgdmRlY19hdjFfc2xpY2Vfc2xvdCAqc2xvdHMgPSAmdnNpLT5zbG90czsNCj4gPiA+ID4gK3N0 cnVjdCB2ZGVjX2F2MV9zbGljZV91bmNvbXByZXNzZWRfaGVhZGVyICp1aCA9ICZmcmFtZS0+dWg7 DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2Vfc2VxX2hlYWRlciAqc2VxID0gJmZyYW1l LT5zZXE7DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfZnJhbWVfaW5mbyAqY3VyX2Zy YW1lX2luZm8gPQ0KPiA+ID4gPiArJnNsb3RzLT5mcmFtZV9pbmZvW3ZzaS0+c2xvdF9pZF07DQo+ ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfZnJhbWVfaW5mbyAqZnJhbWVfaW5mbzsNCj4g PiA+ID4gK2ludCBpLCBzbG90X2lkOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtpZiAodWgtPmZyYW1l X2lzX2ludHJhKQ0KPiA+ID4gPiArcmV0dXJuOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtmb3IgKGkg PSAwOyBpIDwgVjRMMl9BVjFfUkVGU19QRVJfRlJBTUU7IGkrKykgew0KPiA+ID4gPiAraW50IHJl Zl9pZHggPSBjdHJsX2ZoLT5yZWZfZnJhbWVfaWR4W2ldOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtw ZmMtPnJlZl9pZHhbaV0gPSBjdHJsX2ZoLT5yZWZlcmVuY2VfZnJhbWVfdHNbcmVmX2lkeF07DQo+ ID4gPiA+ICtzbG90X2lkID0gZnJhbWUtPnJlZl9mcmFtZV9tYXBbcmVmX2lkeF07DQo+ID4gPiA+ ICtmcmFtZV9pbmZvID0gJnNsb3RzLT5mcmFtZV9pbmZvW3Nsb3RfaWRdOw0KPiA+ID4gPiAraWYg KHNsb3RfaWQgPT0gQVYxX0lOVkFMSURfSURYKSB7DQo+ID4gPiA+ICttdGtfdjRsMl9lcnIoImNh bm5vdCBtYXRjaCByZWZlcmVuY2VbJWRdDQo+ID4gPiA+IDB4JWxseFxuIiwgaSwNCj4gPiA+ID4g KyAgICAgY3RybF9maC0NCj4gPiA+ID4gPiByZWZlcmVuY2VfZnJhbWVfdHNbcmVmX2lkeF0pOw0K PiA+ID4gPiANCj4gPiA+ID4gK2ZyYW1lLT5vcmRlcl9oaW50c1tpXSA9IDA7DQo+ID4gPiA+ICtm cmFtZS0+cmVmX2ZyYW1lX3ZhbGlkW2ldID0gMDsNCj4gPiA+ID4gK2NvbnRpbnVlOw0KPiA+ID4g PiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtmcmFtZS0+ZnJhbWVfcmVmc1tpXS5yZWZfZmJfaWR4 ID0gc2xvdF9pZDsNCj4gPiA+ID4gK3ZkZWNfYXYxX3NsaWNlX3NldHVwX3NjYWxlX2ZhY3RvcnMo JmZyYW1lLQ0KPiA+ID4gPiA+IGZyYW1lX3JlZnNbaV0sDQo+ID4gPiA+IA0KPiA+ID4gPiArICAg ZnJhbWVfaW5mbywgdWgpOw0KPiA+ID4gPiAraWYgKCFzZXEtPmVuYWJsZV9vcmRlcl9oaW50KQ0K PiA+ID4gPiArZnJhbWUtPnJlZl9mcmFtZV9zaWduX2JpYXNbaSArIDFdID0gMDsNCj4gPiA+ID4g K2Vsc2UNCj4gPiA+ID4gK2ZyYW1lLT5yZWZfZnJhbWVfc2lnbl9iaWFzW2kgKyAxXSA9DQo+ID4g PiA+ICt2ZGVjX2F2MV9zbGljZV9nZXRfcmVsYXRpdmVfZGlzdChmcmFtZV8NCj4gPiA+ID4gaW5m by0+b3JkZXJfaGludCwNCj4gPiA+ID4gKyB1aC0NCj4gPiA+ID4gPiBvcmRlcl9oaW50LA0KPiA+ ID4gPiANCj4gPiA+ID4gKyBzZXEtDQo+ID4gPiA+ID4gZW5hYmxlX29yZGVyX2hpbnQsDQo+ID4g PiA+IA0KPiA+ID4gPiArIHNlcS0NCj4gPiA+ID4gPiBvcmRlcl9oaW50X2JpdHMpDQo+ID4gPiA+ IA0KPiA+ID4gPiArPD0gMCA/IDAgOiAxOw0KPiA+ID4gDQo+ID4gPiAuLi4gdG8gZ2V0IHJpZCBv ZiB0aGlzIHRyaS1hcmd1bWVudCBvcGVyYXRvciBhbHRvZ2V0aGVyPw0KPiA+ID4gDQo+ID4gPiA+ ICsNCj4gPiA+ID4gK2ZyYW1lLT5vcmRlcl9oaW50c1tpXSA9IGN0cmxfZmgtPm9yZGVyX2hpbnRz W2kgKyAxXTsNCj4gPiA+ID4gK2N1cl9mcmFtZV9pbmZvLT5vcmRlcl9oaW50c1tpXSA9IGZyYW1l LT5vcmRlcl9oaW50c1tpXTsNCj4gPiA+ID4gK2ZyYW1lLT5yZWZfZnJhbWVfdmFsaWRbaV0gPSAx Ow0KPiA+ID4gPiArfQ0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgdm9p ZCB2ZGVjX2F2MV9zbGljZV9nZXRfcHJldmlvdXMoc3RydWN0DQo+ID4gPiA+IHZkZWNfYXYxX3Ns aWNlX3ZzaQ0KPiA+ID4gPiAqdnNpKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArc3RydWN0IHZkZWNf YXYxX3NsaWNlX2ZyYW1lICpmcmFtZSA9ICZ2c2ktPmZyYW1lOw0KPiA+ID4gPiArDQo+ID4gPiA+ ICtpZiAoZnJhbWUtPnVoLnByaW1hcnlfcmVmX2ZyYW1lID09IDcpDQo+ID4gPiANCj4gPiA+ICNk ZWZpbmUgbWFnaWMgbnVtYmVyIDc/DQo+ID4gPiANCj4gPiA+ID4gK2ZyYW1lLT5wcmV2X2ZiX2lk eCA9IEFWMV9JTlZBTElEX0lEWDsNCj4gPiA+ID4gK2Vsc2UNCj4gPiA+ID4gK2ZyYW1lLT5wcmV2 X2ZiX2lkeCA9IGZyYW1lLT5mcmFtZV9yZWZzW2ZyYW1lLQ0KPiA+ID4gPiA+IHVoLnByaW1hcnlf cmVmX2ZyYW1lXS5yZWZfZmJfaWR4Ow0KPiA+ID4gPiANCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0K PiA+ID4gPiArc3RhdGljIHZvaWQgdmRlY19hdjFfc2xpY2Vfc2V0dXBfb3BlcmF0aW5nX21vZGUo c3RydWN0DQo+ID4gPiA+IHZkZWNfYXYxX3NsaWNlX2luc3RhbmNlICppbnN0YW5jZSwNCj4gPiA+ ID4gK3N0cnVjdA0KPiA+ID4gPiB2ZGVjX2F2MV9zbGljZV9mcmFtZSAqZnJhbWUpDQo+ID4gPiAN Cj4gPiA+IHN0YXRpYyBpbmxpbmUgdm9pZD8NCj4gPiA+IA0KPiA+ID4gPiArew0KPiA+ID4gPiAr ZnJhbWUtPmxhcmdlX3NjYWxlX3RpbGUgPSAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4g PiA+ICtzdGF0aWMgaW50IHZkZWNfYXYxX3NsaWNlX3NldHVwX3BmYyhzdHJ1Y3QNCj4gPiA+ID4g dmRlY19hdjFfc2xpY2VfaW5zdGFuY2UNCj4gPiA+ID4gKmluc3RhbmNlLA0KPiA+ID4gPiArICAg IHN0cnVjdCB2ZGVjX2F2MV9zbGljZV9wZmMgKnBmYykNCj4gPiA+ID4gK3sNCj4gPiA+ID4gK3N0 cnVjdCB2NGwyX2N0cmxfYXYxX2ZyYW1lICpjdHJsX2ZoOw0KPiA+ID4gPiArc3RydWN0IHY0bDJf Y3RybF9hdjFfc2VxdWVuY2UgKmN0cmxfc2VxOw0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3Ns aWNlX3ZzaSAqdnNpID0gJnBmYy0+dnNpOw0KPiA+ID4gPiAraW50IHJldCA9IDA7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKy8qIGZyYW1lIGhlYWRlciAqLw0KPiA+ID4gPiArY3RybF9maCA9IChzdHJ1 Y3QgdjRsMl9jdHJsX2F2MV9mcmFtZSAqKQ0KPiA+ID4gPiArICB2ZGVjX2F2MV9nZXRfY3RybF9w dHIoaW5zdGFuY2UtPmN0eCwNCj4gPiA+ID4gK1Y0TDJfQ0lEX1NUQVRFTEVTU19BVjFfRlJBTUUp Ow0KPiA+ID4gPiAraWYgKElTX0VSUihjdHJsX2ZoKSkNCj4gPiA+ID4gK3JldHVybiBQVFJfRVJS KGN0cmxfZmgpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtjdHJsX3NlcSA9IChzdHJ1Y3QgdjRsMl9j dHJsX2F2MV9zZXF1ZW5jZSAqKQ0KPiA+ID4gPiArICAgdmRlY19hdjFfZ2V0X2N0cmxfcHRyKGlu c3RhbmNlLT5jdHgsDQo+ID4gPiA+ICsgVjRMMl9DSURfU1RBVEVMRVNTX0FWMV9TRVFVRU5DDQo+ ID4gPiA+IEUpOw0KPiA+ID4gPiAraWYgKElTX0VSUihjdHJsX3NlcSkpDQo+ID4gPiA+ICtyZXR1 cm4gUFRSX0VSUihjdHJsX3NlcSk7DQo+ID4gPiANCj4gPiA+IEp1c3QgdG8gbWFrZSBzdXJlOiBJ IGFzc3VtZSByZXF1ZXN0IGFwaSBpcyB1c2VkPyBJZiBzbywgZG9lcw0KPiA+ID4gdmRlYydzDQo+ ID4gPiBmcmFtZXdvcmsNCj4gPiA+IGVuc3VyZSB0aGF0IHY0bDJfY3RybF9yZXF1ZXN0X3NldHVw KCkgaGFzIGJlZW4gY2FsbGVkPyBJdA0KPiA+ID4gaW5mbHVlbmNlcw0KPiA+ID4gd2hhdCdzDQo+ ID4gPiBhY3R1YWxseSBpbiBjdHJsLT5wX2N1ci5wIChjdXJyZW50IG9yIHByZXZpb3VzIHZhbHVl KSwgYW5kIHRoZQ0KPiA+ID4gdmRlY19hdjFfZ2V0X2N0cmxfcHRyKCkgd3JhcHBlciByZXR1cm5z IGN0cmwtPnBfY3VyLnAuDQo+ID4gPiANCj4gPiA+ID4gKw0KPiA+ID4gPiArLyogc2V0dXAgdnNp IGluZm9ybWF0aW9uICovDQo+ID4gPiA+ICt2ZGVjX2F2MV9zbGljZV9zZXR1cF9zZXEoJnZzaS0+ ZnJhbWUuc2VxLCBjdHJsX3NlcSk7DQo+ID4gPiA+ICt2ZGVjX2F2MV9zbGljZV9zZXR1cF91aChp bnN0YW5jZSwgJnZzaS0+ZnJhbWUsIGN0cmxfZmgpOw0KPiA+ID4gPiArdmRlY19hdjFfc2xpY2Vf c2V0dXBfb3BlcmF0aW5nX21vZGUoaW5zdGFuY2UsICZ2c2ktPmZyYW1lKTsNCj4gPiA+ID4gKw0K PiA+ID4gPiArdmRlY19hdjFfc2xpY2Vfc2V0dXBfc3RhdGUodnNpKTsNCj4gPiA+ID4gK3ZkZWNf YXYxX3NsaWNlX3NldHVwX3Nsb3QoaW5zdGFuY2UsIHZzaSwgY3RybF9maCk7DQo+ID4gPiA+ICt2 ZGVjX2F2MV9zbGljZV9zZXR1cF9yZWYocGZjLCBjdHJsX2ZoKTsNCj4gPiA+ID4gK3ZkZWNfYXYx X3NsaWNlX2dldF9wcmV2aW91cyh2c2kpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtwZmMtPnNlcSA9 IGluc3RhbmNlLT5zZXE7DQo+ID4gPiA+ICtpbnN0YW5jZS0+c2VxKys7DQo+ID4gPiA+ICsNCj4g PiA+ID4gK3JldHVybiByZXQ7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRp YyB2b2lkIHZkZWNfYXYxX3NsaWNlX3NldHVwX2xhdF9idWZmZXIoc3RydWN0DQo+ID4gPiA+IHZk ZWNfYXYxX3NsaWNlX2luc3RhbmNlICppbnN0YW5jZSwNCj4gPiA+ID4gKyAgICBzdHJ1Y3QgdmRl Y19hdjFfc2xpY2VfdnNpDQo+ID4gPiA+ICp2c2ksDQo+ID4gPiA+ICsgICAgc3RydWN0IG10a192 Y29kZWNfbWVtICpicywNCj4gPiA+ID4gKyAgICBzdHJ1Y3QgdmRlY19sYXRfYnVmDQo+ID4gPiA+ ICpsYXRfYnVmKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX3dv cmtfYnVmZmVyICp3b3JrX2J1ZmZlcjsNCj4gPiA+ID4gK2ludCBpOw0KPiA+ID4gPiArDQo+ID4g PiA+ICt2c2ktPmJzLmRtYV9hZGRyID0gYnMtPmRtYV9hZGRyOw0KPiA+ID4gPiArdnNpLT5icy5z aXplID0gYnMtPnNpemU7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3ZzaS0+dWJlLmRtYV9hZGRyID0g bGF0X2J1Zi0+Y3R4LQ0KPiA+ID4gPiA+bXNnX3F1ZXVlLndkbWFfYWRkci5kbWFfYWRkcjsNCj4g PiA+ID4gK3ZzaS0+dWJlLnNpemUgPSBsYXRfYnVmLT5jdHgtPm1zZ19xdWV1ZS53ZG1hX2FkZHIu c2l6ZTsNCj4gPiA+ID4gK3ZzaS0+dHJhbnMuZG1hX2FkZHIgPSBsYXRfYnVmLT5jdHgtPm1zZ19x dWV1ZS53ZG1hX3dwdHJfYWRkcjsNCj4gPiA+ID4gKy8qIHVzZWQgdG8gc3RvcmUgdHJhbnMgZW5k ICovDQo+ID4gPiA+ICt2c2ktPnRyYW5zLmRtYV9hZGRyX2VuZCA9IGxhdF9idWYtPmN0eC0NCj4g PiA+ID4gPiBtc2dfcXVldWUud2RtYV9ycHRyX2FkZHI7DQo+ID4gPiA+IA0KPiA+ID4gPiArdnNp LT5lcnJfbWFwLmRtYV9hZGRyID0gbGF0X2J1Zi0+d2RtYV9lcnJfYWRkci5kbWFfYWRkcjsNCj4g PiA+ID4gK3ZzaS0+ZXJyX21hcC5zaXplID0gbGF0X2J1Zi0+d2RtYV9lcnJfYWRkci5zaXplOw0K PiA+ID4gPiArdnNpLT5yZF9tdi5kbWFfYWRkciA9IGxhdF9idWYtPnJkX212X2FkZHIuZG1hX2Fk ZHI7DQo+ID4gPiA+ICt2c2ktPnJkX212LnNpemUgPSBsYXRfYnVmLT5yZF9tdl9hZGRyLnNpemU7 DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3ZzaS0+cm93X2luZm8uYnVmID0gMDsNCj4gPiA+ID4gK3Zz aS0+cm93X2luZm8uc2l6ZSA9IDA7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3dvcmtfYnVmZmVyID0g dnNpLT53b3JrX2J1ZmZlcjsNCj4gPiA+ID4gKw0KPiA+ID4gPiArZm9yIChpID0gMDsgaSA8IEFW MV9NQVhfRlJBTUVfQlVGX0NPVU5UOyBpKyspIHsNCj4gPiA+ID4gK3dvcmtfYnVmZmVyW2ldLm12 X2FkZHIuYnVmID0gaW5zdGFuY2UtPm12W2ldLmRtYV9hZGRyOw0KPiA+ID4gPiArd29ya19idWZm ZXJbaV0ubXZfYWRkci5zaXplID0gaW5zdGFuY2UtPm12W2ldLnNpemU7DQo+ID4gPiA+ICt3b3Jr X2J1ZmZlcltpXS5zZWdpZF9hZGRyLmJ1ZiA9IGluc3RhbmNlLQ0KPiA+ID4gPiA+IHNlZ1tpXS5k bWFfYWRkcjsNCj4gPiA+ID4gDQo+ID4gPiA+ICt3b3JrX2J1ZmZlcltpXS5zZWdpZF9hZGRyLnNp emUgPSBpbnN0YW5jZS0+c2VnW2ldLnNpemU7DQo+ID4gPiA+ICt3b3JrX2J1ZmZlcltpXS5jZGZf YWRkci5idWYgPSBpbnN0YW5jZS0NCj4gPiA+ID4gPiBjZGZbaV0uZG1hX2FkZHI7DQo+ID4gPiA+ IA0KPiA+ID4gPiArd29ya19idWZmZXJbaV0uY2RmX2FkZHIuc2l6ZSA9IGluc3RhbmNlLT5jZGZb aV0uc2l6ZTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArdnNpLT5jZGZfdG1wLmJ1 ZiA9IGluc3RhbmNlLT5jZGZfdGVtcC5kbWFfYWRkcjsNCj4gPiA+ID4gK3ZzaS0+Y2RmX3RtcC5z aXplID0gaW5zdGFuY2UtPmNkZl90ZW1wLnNpemU7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3ZzaS0+ dGlsZS5idWYgPSBpbnN0YW5jZS0+dGlsZS5kbWFfYWRkcjsNCj4gPiA+ID4gK3ZzaS0+dGlsZS5z aXplID0gaW5zdGFuY2UtPnRpbGUuc2l6ZTsNCj4gPiA+ID4gK21lbWNweShsYXRfYnVmLT50aWxl X2FkZHIudmEsIGluc3RhbmNlLT50aWxlLnZhLCA2NCAqDQo+ID4gPiA+IGluc3RhbmNlLQ0KPiA+ ID4gPiA+IHRpbGVfZ3JvdXAubnVtX3RpbGVzKTsNCj4gPiA+ID4gDQo+ID4gPiA+ICsNCj4gPiA+ ID4gK3ZzaS0+Y2RmX3RhYmxlLmJ1ZiA9IGluc3RhbmNlLT5jZGZfdGFibGUuZG1hX2FkZHI7DQo+ ID4gPiA+ICt2c2ktPmNkZl90YWJsZS5zaXplID0gaW5zdGFuY2UtPmNkZl90YWJsZS5zaXplOw0K PiA+ID4gPiArdnNpLT5pcV90YWJsZS5idWYgPSBpbnN0YW5jZS0+aXFfdGFibGUuZG1hX2FkZHI7 DQo+ID4gPiA+ICt2c2ktPmlxX3RhYmxlLnNpemUgPSBpbnN0YW5jZS0+aXFfdGFibGUuc2l6ZTsN Cj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIHZvaWQgdmRlY19hdjFfc2xp Y2Vfc2V0dXBfc2VnX2J1ZmZlcihzdHJ1Y3QNCj4gPiA+ID4gdmRlY19hdjFfc2xpY2VfaW5zdGFu Y2UgKmluc3RhbmNlLA0KPiA+ID4gPiArICAgIHN0cnVjdCB2ZGVjX2F2MV9zbGljZV92c2kNCj4g PiA+ID4gKnZzaSkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV91 bmNvbXByZXNzZWRfaGVhZGVyICp1aCA9ICZ2c2ktDQo+ID4gPiA+ID5mcmFtZS51aDsNCj4gPiA+ ID4gK3N0cnVjdCBtdGtfdmNvZGVjX21lbSAqYnVmOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKiBy ZXNldCBzZWdtZW50IGJ1ZmZlciAqLw0KPiA+ID4gPiAraWYgKHVoLT5wcmltYXJ5X3JlZl9mcmFt ZSA9PSA3IHx8ICF1aC0NCj4gPiA+ID4gPiBzZWcuc2VnbWVudGF0aW9uX2VuYWJsZWQpIHsNCj4g PiA+IA0KPiA+ID4gI2RlZmluZSBtYWdpYyA3Pw0KPiA+ID4gDQo+ID4gPiA+ICttdGtfdmNvZGVj X2RlYnVnKGluc3RhbmNlLCAicmVzZXQgc2VnICVkXG4iLCB2c2ktDQo+ID4gPiA+ID4gc2xvdF9p ZCk7DQo+ID4gPiA+IA0KPiA+ID4gPiAraWYgKHZzaS0+c2xvdF9pZCAhPSBBVjFfSU5WQUxJRF9J RFgpIHsNCj4gPiA+ID4gK2J1ZiA9ICZpbnN0YW5jZS0+c2VnW3ZzaS0+c2xvdF9pZF07DQo+ID4g PiA+ICttZW1zZXQoYnVmLT52YSwgMCwgYnVmLT5zaXplKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4g K30NCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIHZvaWQgdmRlY19hdjFf c2xpY2Vfc2V0dXBfdGlsZV9idWZmZXIoc3RydWN0DQo+ID4gPiA+IHZkZWNfYXYxX3NsaWNlX2lu c3RhbmNlICppbnN0YW5jZSwNCj4gPiA+ID4gKyAgICAgc3RydWN0IHZkZWNfYXYxX3NsaWNlX3Zz aQ0KPiA+ID4gPiAqdnNpLA0KPiA+ID4gPiArICAgICBzdHJ1Y3QgbXRrX3Zjb2RlY19tZW0gKmJz KQ0KPiA+ID4gPiArew0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX3RpbGVfZ3JvdXAg KnRpbGVfZ3JvdXAgPSAmaW5zdGFuY2UtDQo+ID4gPiA+ID4gdGlsZV9ncm91cDsNCj4gPiA+ID4g DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfdW5jb21wcmVzc2VkX2hlYWRlciAqdWgg PSAmdnNpLQ0KPiA+ID4gPiA+ZnJhbWUudWg7DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xp Y2VfdGlsZSAqdGlsZSA9ICZ1aC0+dGlsZTsNCj4gPiA+ID4gK3UzMiB0aWxlX251bSwgdGlsZV9y b3csIHRpbGVfY29sOw0KPiA+ID4gPiArdTMyIGFsbG93X3VwZGF0ZV9jZGYgPSAwOw0KPiA+ID4g PiArdTMyIHNiX2JvdW5kYXJ5X3hfbTEgPSAwLCBzYl9ib3VuZGFyeV95X20xID0gMDsNCj4gPiA+ ID4gK2ludCB0aWxlX2luZm9fYmFzZTsNCj4gPiA+ID4gK3UzMiB0aWxlX2J1Zl9wYTsNCj4gPiA+ ID4gK3UzMiAqdGlsZV9pbmZvX2J1ZiA9IGluc3RhbmNlLT50aWxlLnZhOw0KPiA+ID4gPiArdTMy IHBhID0gKHUzMilicy0+ZG1hX2FkZHI7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2lmICh1aC0+ZGlz YWJsZV9jZGZfdXBkYXRlID09IDApDQo+ID4gPiA+ICthbGxvd191cGRhdGVfY2RmID0gMTsNCj4g PiA+ID4gKw0KPiA+ID4gPiArZm9yICh0aWxlX251bSA9IDA7IHRpbGVfbnVtIDwgdGlsZV9ncm91 cC0+bnVtX3RpbGVzOw0KPiA+ID4gPiB0aWxlX251bSsrKSB7DQo+ID4gPiA+ICsvKiBlYWNoIHVp bnQzMiB0YWtlcyBwbGFjZSBvZiA0IGJ5dGVzICovDQo+ID4gPiA+ICt0aWxlX2luZm9fYmFzZSA9 IChBVjFfVElMRV9CVUZfU0laRSAqIHRpbGVfbnVtKSA+PiAyOw0KPiA+ID4gPiArdGlsZV9yb3cg PSB0aWxlX251bSAvIHRpbGUtPnRpbGVfY29sczsNCj4gPiA+ID4gK3RpbGVfY29sID0gdGlsZV9u dW0gJSB0aWxlLT50aWxlX2NvbHM7DQo+ID4gPiA+ICt0aWxlX2luZm9fYnVmW3RpbGVfaW5mb19i YXNlICsgMF0gPSAodGlsZV9ncm91cC0NCj4gPiA+ID4gPiB0aWxlX3NpemVbdGlsZV9udW1dIDw8 IDMpOw0KPiA+ID4gPiANCj4gPiA+ID4gK3RpbGVfYnVmX3BhID0gcGEgKyB0aWxlX2dyb3VwLQ0K PiA+ID4gPiA+IHRpbGVfc3RhcnRfb2Zmc2V0W3RpbGVfbnVtXTsNCj4gPiA+ID4gDQo+ID4gPiA+ ICsNCj4gPiA+ID4gK3RpbGVfaW5mb19idWZbdGlsZV9pbmZvX2Jhc2UgKyAxXSA9ICh0aWxlX2J1 Zl9wYSA+PiA0KQ0KPiA+ID4gPiA8PCA0Ow0KPiA+ID4gPiArdGlsZV9pbmZvX2J1Zlt0aWxlX2lu Zm9fYmFzZSArIDJdID0gKHRpbGVfYnVmX3BhICUgMTYpDQo+ID4gPiA+IDw8IDM7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gK3NiX2JvdW5kYXJ5X3hfbTEgPQ0KPiA+ID4gPiArKHRpbGUtPm1pX2NvbF9z dGFydHNbdGlsZV9jb2wgKyAxXSAtIHRpbGUtDQo+ID4gPiA+ID4gbWlfY29sX3N0YXJ0c1t0aWxl X2NvbF0gLSAxKSAmDQo+ID4gPiA+IA0KPiA+ID4gPiArMHgzZjsNCj4gPiA+ID4gK3NiX2JvdW5k YXJ5X3lfbTEgPQ0KPiA+ID4gPiArKHRpbGUtPm1pX3Jvd19zdGFydHNbdGlsZV9yb3cgKyAxXSAt IHRpbGUtDQo+ID4gPiA+ID4gbWlfcm93X3N0YXJ0c1t0aWxlX3Jvd10gLSAxKSAmDQo+ID4gPiA+ IA0KPiA+ID4gPiArMHgxZmY7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3RpbGVfaW5mb19idWZbdGls ZV9pbmZvX2Jhc2UgKyAzXSA9IChzYl9ib3VuZGFyeV95X20xDQo+ID4gPiA+IDw8IDcpIHwgc2Jf Ym91bmRhcnlfeF9tMTsNCj4gPiA+ID4gK3RpbGVfaW5mb19idWZbdGlsZV9pbmZvX2Jhc2UgKyA0 XSA9ICgoYWxsb3dfdXBkYXRlX2NkZg0KPiA+ID4gPiA8PCAxOCkgfCAoMSA8PCAxNikpOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICtpZiAodGlsZV9udW0gPT0gdGlsZS0+Y29udGV4dF91cGRhdGVfdGls ZV9pZCAmJg0KPiA+ID4gPiArICAgIHVoLT5kaXNhYmxlX2ZyYW1lX2VuZF91cGRhdGVfY2RmID09 IDApDQo+ID4gPiA+ICt0aWxlX2luZm9fYnVmW3RpbGVfaW5mb19iYXNlICsgNF0gfD0gKDEgPDwg MTcpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICttdGtfdmNvZGVjX2RlYnVnKGluc3RhbmNlLCAiLy8g dGlsZSBidWYgJWQgcG9zKCVkeCVkKQ0KPiA+ID4gPiBvZmZzZXQgMHgleFxuIiwNCj4gPiA+ID4g KyB0aWxlX251bSwgdGlsZV9yb3csIHRpbGVfY29sLA0KPiA+ID4gPiB0aWxlX2luZm9fYmFzZSk7 DQo+ID4gPiA+ICttdGtfdmNvZGVjX2RlYnVnKGluc3RhbmNlLCAiLy8gJTA4eCAlMDh4ICUwOHgg JTA4eFxuIiwNCj4gPiA+ID4gKyB0aWxlX2luZm9fYnVmW3RpbGVfaW5mb19iYXNlICsgMF0sDQo+ ID4gPiA+ICsgdGlsZV9pbmZvX2J1Zlt0aWxlX2luZm9fYmFzZSArIDFdLA0KPiA+ID4gPiArIHRp bGVfaW5mb19idWZbdGlsZV9pbmZvX2Jhc2UgKyAyXSwNCj4gPiA+ID4gKyB0aWxlX2luZm9fYnVm W3RpbGVfaW5mb19iYXNlICsgM10pOw0KPiA+ID4gPiArbXRrX3Zjb2RlY19kZWJ1ZyhpbnN0YW5j ZSwgIi8vICUwOHggJTA4eCAlMDh4ICUwOHhcbiIsDQo+ID4gPiA+ICsgdGlsZV9pbmZvX2J1Zlt0 aWxlX2luZm9fYmFzZSArIDRdLA0KPiA+ID4gPiArIHRpbGVfaW5mb19idWZbdGlsZV9pbmZvX2Jh c2UgKyA1XSwNCj4gPiA+ID4gKyB0aWxlX2luZm9fYnVmW3RpbGVfaW5mb19iYXNlICsgNl0sDQo+ ID4gPiA+ICsgdGlsZV9pbmZvX2J1Zlt0aWxlX2luZm9fYmFzZSArIDddKTsNCj4gPiA+ID4gK30N Cj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIGludCB2ZGVjX2F2MV9zbGlj ZV9zZXR1cF9sYXQoc3RydWN0DQo+ID4gPiA+IHZkZWNfYXYxX3NsaWNlX2luc3RhbmNlDQo+ID4g PiA+ICppbnN0YW5jZSwNCj4gPiA+ID4gKyAgICBzdHJ1Y3QgbXRrX3Zjb2RlY19tZW0gKmJzLA0K PiA+ID4gPiArICAgIHN0cnVjdCB2ZGVjX2xhdF9idWYgKmxhdF9idWYsDQo+ID4gPiA+ICsgICAg c3RydWN0IHZkZWNfYXYxX3NsaWNlX3BmYyAqcGZjKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArc3Ry dWN0IHZkZWNfYXYxX3NsaWNlX3ZzaSAqdnNpID0gJnBmYy0+dnNpOw0KPiA+ID4gPiAraW50IHJl dDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArcmV0ID0gdmRlY19hdjFfc2xpY2Vfc2V0dXBfbGF0X2Zy b21fc3JjX2J1ZihpbnN0YW5jZSwgdnNpLA0KPiA+ID4gPiBsYXRfYnVmKTsNCj4gPiA+ID4gK2lm IChyZXQpDQo+ID4gPiA+ICtyZXR1cm4gcmV0Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICtyZXQgPSB2 ZGVjX2F2MV9zbGljZV9zZXR1cF9wZmMoaW5zdGFuY2UsIHBmYyk7DQo+ID4gPiA+ICtpZiAocmV0 KQ0KPiA+ID4gPiArcmV0dXJuIHJldDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArcmV0ID0gdmRlY19h djFfc2xpY2Vfc2V0dXBfdGlsZV9ncm91cChpbnN0YW5jZSwgdnNpKTsNCj4gPiA+ID4gK2lmIChy ZXQpDQo+ID4gPiA+ICtyZXR1cm4gcmV0Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICtyZXQgPSB2ZGVj X2F2MV9zbGljZV9hbGxvY193b3JraW5nX2J1ZmZlcihpbnN0YW5jZSwgdnNpKTsNCj4gPiA+ID4g K2lmIChyZXQpDQo+ID4gPiA+ICtyZXR1cm4gcmV0Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICt2ZGVj X2F2MV9zbGljZV9zZXR1cF9zZWdfYnVmZmVyKGluc3RhbmNlLCB2c2kpOw0KPiA+ID4gPiArdmRl Y19hdjFfc2xpY2Vfc2V0dXBfdGlsZV9idWZmZXIoaW5zdGFuY2UsIHZzaSwgYnMpOw0KPiA+ID4g PiArdmRlY19hdjFfc2xpY2Vfc2V0dXBfbGF0X2J1ZmZlcihpbnN0YW5jZSwgdnNpLCBicywgbGF0 X2J1Zik7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3JldHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4g PiArDQo+ID4gPiA+ICtzdGF0aWMgaW50IHZkZWNfYXYxX3NsaWNlX3VwZGF0ZV9sYXQoc3RydWN0 DQo+ID4gPiA+IHZkZWNfYXYxX3NsaWNlX2luc3RhbmNlICppbnN0YW5jZSwNCj4gPiA+ID4gKyAg ICAgc3RydWN0IHZkZWNfbGF0X2J1ZiAqbGF0X2J1ZiwNCj4gPiA+ID4gKyAgICAgc3RydWN0IHZk ZWNfYXYxX3NsaWNlX3BmYyAqcGZjKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArc3RydWN0IHZkZWNf YXYxX3NsaWNlX3ZzaSAqdnNpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICt2c2kgPSAmcGZjLT52c2k7 DQo+ID4gPiA+ICttdGtfdmNvZGVjX2RlYnVnKGluc3RhbmNlLCAiZnJhbWUgJXUgTEFUIENSQyAw eCUwOHgsIG91dHB1dA0KPiA+ID4gPiBzaXplIGlzICVkXG4iLA0KPiA+ID4gPiArIHBmYy0+c2Vx LCB2c2ktPnN0YXRlLmNyY1swXSwgdnNpLQ0KPiA+ID4gPiA+IHN0YXRlLm91dF9zaXplKTsNCj4g PiA+ID4gDQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qIGJ1ZmZlciBmdWxsLCBuZWVkIHRvIHJlLWRl Y29kZSAqLw0KPiA+ID4gPiAraWYgKHZzaS0+c3RhdGUuZnVsbCkgew0KPiA+ID4gPiArLyogYnVm ZmVyIG5vdCBlbm91Z2ggKi8NCj4gPiA+ID4gK2lmICh2c2ktPnRyYW5zLmRtYV9hZGRyX2VuZCAt IHZzaS0+dHJhbnMuZG1hX2FkZHIgPT0NCj4gPiA+ID4gdnNpLT51YmUuc2l6ZSkNCj4gPiA+ID4g K3JldHVybiAtRU5PTUVNOw0KPiA+ID4gPiArcmV0dXJuIC1FQUdBSU47DQo+ID4gPiA+ICt9DQo+ ID4gPiA+ICsNCj4gPiA+ID4gK2luc3RhbmNlLT53aWR0aCA9IHZzaS0+ZnJhbWUudWgudXBzY2Fs ZWRfd2lkdGg7DQo+ID4gPiA+ICtpbnN0YW5jZS0+aGVpZ2h0ID0gdnNpLT5mcmFtZS51aC5mcmFt ZV9oZWlnaHQ7DQo+ID4gPiA+ICtpbnN0YW5jZS0+ZnJhbWVfdHlwZSA9IHZzaS0+ZnJhbWUudWgu ZnJhbWVfdHlwZTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArcmV0dXJuIDA7DQo+ID4gPiA+ICt9DQo+ ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBpbnQgdmRlY19hdjFfc2xpY2Vfc2V0dXBfY29yZV90 b19kc3RfYnVmKHN0cnVjdA0KPiA+ID4gPiB2ZGVjX2F2MV9zbGljZV9pbnN0YW5jZSAqaW5zdGFu Y2UsDQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19sYXRfYnVmDQo+ID4gPiA+ICpsYXRfYnVmKQ0KPiA+ ID4gPiArew0KPiA+ID4gPiArc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqZHN0Ow0KPiA+ID4gPiAr DQo+ID4gPiA+ICtkc3QgPSB2NGwyX20ybV9uZXh0X2RzdF9idWYoaW5zdGFuY2UtPmN0eC0+bTJt X2N0eCk7DQo+ID4gPiA+ICtpZiAoIWRzdCkNCj4gPiA+ID4gK3JldHVybiAtRUlOVkFMOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICt2NGwyX20ybV9idWZfY29weV9tZXRhZGF0YSgmbGF0X2J1Zi0+dHNf aW5mbywgZHN0LCB0cnVlKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArcmV0dXJuIDA7DQo+ID4gPiA+ ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBpbnQgdmRlY19hdjFfc2xpY2Vfc2V0dXBf Y29yZV9idWZmZXIoc3RydWN0DQo+ID4gPiA+IHZkZWNfYXYxX3NsaWNlX2luc3RhbmNlICppbnN0 YW5jZSwNCj4gPiA+ID4gKyAgICBzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfcGZjDQo+ID4gPiA+ICpw ZmMsDQo+ID4gPiA+ICsgICAgc3RydWN0IHZkZWNfYXYxX3NsaWNlX3ZzaQ0KPiA+ID4gPiAqdnNp LA0KPiA+ID4gPiArICAgIHN0cnVjdCB2ZGVjX2ZiICpmYiwNCj4gPiA+ID4gKyAgICBzdHJ1Y3Qg dmRlY19sYXRfYnVmDQo+ID4gPiA+ICpsYXRfYnVmKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArc3Ry dWN0IHZiMl9idWZmZXIgKnZiOw0KPiA+ID4gPiArc3RydWN0IHZiMl9xdWV1ZSAqdnE7DQo+ID4g PiA+ICtpbnQgdywgaCwgcGxhbmUsIHNpemU7DQo+ID4gPiA+ICtpbnQgaTsNCj4gPiA+ID4gKw0K PiA+ID4gPiArcGxhbmUgPSBpbnN0YW5jZS0+Y3R4LT5xX2RhdGFbTVRLX1FfREFUQV9EU1RdLmZt dC0+bnVtX3BsYW5lczsNCj4gPiA+ID4gK3cgPSB2c2ktPmZyYW1lLnVoLnVwc2NhbGVkX3dpZHRo Ow0KPiA+ID4gPiAraCA9IHZzaS0+ZnJhbWUudWguZnJhbWVfaGVpZ2h0Ow0KPiA+ID4gPiArc2l6 ZSA9IEFMSUdOKHcsIFZDT0RFQ19ERUNfQUxJR05FRF82NCkgKiBBTElHTihoLA0KPiA+ID4gPiBW Q09ERUNfREVDX0FMSUdORURfNjQpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKiBmcmFtZSBidWZm ZXIgKi8NCj4gPiA+ID4gK3ZzaS0+ZmIueS5kbWFfYWRkciA9IGZiLT5iYXNlX3kuZG1hX2FkZHI7 DQo+ID4gPiA+ICtpZiAocGxhbmUgPT0gMSkNCj4gPiA+ID4gK3ZzaS0+ZmIuYy5kbWFfYWRkciA9 IGZiLT5iYXNlX3kuZG1hX2FkZHIgKyBzaXplOw0KPiA+ID4gPiArZWxzZQ0KPiA+ID4gPiArdnNp LT5mYi5jLmRtYV9hZGRyID0gZmItPmJhc2VfYy5kbWFfYWRkcjsNCj4gPiA+ID4gKw0KPiA+ID4g PiArLyogcmVmZXJlbmNlIGJ1ZmZlcnMgKi8NCj4gPiA+ID4gK3ZxID0gdjRsMl9tMm1fZ2V0X3Zx KGluc3RhbmNlLT5jdHgtPm0ybV9jdHgsDQo+ID4gPiA+IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQ VFVSRV9NUExBTkUpOw0KPiA+ID4gPiAraWYgKCF2cSkNCj4gPiA+ID4gK3JldHVybiAtRUlOVkFM Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKiBnZXQgY3VycmVudCBvdXRwdXQgYnVmZmVyICovDQo+ ID4gPiA+ICt2YiA9ICZ2NGwyX20ybV9uZXh0X2RzdF9idWYoaW5zdGFuY2UtPmN0eC0+bTJtX2N0 eCktPnZiMl9idWY7DQo+ID4gPiA+ICtpZiAoIXZiKQ0KPiA+ID4gPiArcmV0dXJuIC1FSU5WQUw7 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qIGdldCBidWZmZXIgYWRkcmVzcyBmcm9tIHZiMmJ1ZiAq Lw0KPiA+ID4gPiArZm9yIChpID0gMDsgaSA8IFY0TDJfQVYxX1JFRlNfUEVSX0ZSQU1FOyBpKysp IHsNCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9zbGljZV9mYiAqdnJlZiA9ICZ2c2ktPnJlZltp XTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArdmIgPSB2YjJfZmluZF9idWZmZXIodnEsIHBmYy0+cmVm X2lkeFtpXSk7DQo+ID4gPiA+ICtpZiAoIXZiKSB7DQo+ID4gPiA+ICttZW1zZXQodnJlZiwgMCwg c2l6ZW9mKCp2cmVmKSk7DQo+ID4gPiA+ICtjb250aW51ZTsNCj4gPiA+ID4gK30NCj4gPiA+ID4g Kw0KPiA+ID4gPiArdnJlZi0+eS5kbWFfYWRkciA9IHZiMl9kbWFfY29udGlnX3BsYW5lX2RtYV9h ZGRyKHZiLA0KPiA+ID4gPiAwKTsNCj4gPiA+ID4gK2lmIChwbGFuZSA9PSAxKQ0KPiA+ID4gPiAr dnJlZi0+Yy5kbWFfYWRkciA9IHZyZWYtPnkuZG1hX2FkZHIgKyBzaXplOw0KPiA+ID4gPiArZWxz ZQ0KPiA+ID4gPiArdnJlZi0+Yy5kbWFfYWRkciA9DQo+ID4gPiA+IHZiMl9kbWFfY29udGlnX3Bs YW5lX2RtYV9hZGRyKHZiLCAxKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gK3ZzaS0+dGlsZS5kbWFf YWRkciA9IGxhdF9idWYtPnRpbGVfYWRkci5kbWFfYWRkcjsNCj4gPiA+ID4gK3ZzaS0+dGlsZS5z aXplID0gbGF0X2J1Zi0+dGlsZV9hZGRyLnNpemU7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3JldHVy biAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgaW50IHZkZWNfYXYx X3NsaWNlX3NldHVwX2NvcmUoc3RydWN0DQo+ID4gPiA+IHZkZWNfYXYxX3NsaWNlX2luc3RhbmNl ICppbnN0YW5jZSwNCj4gPiA+ID4gKyAgICAgc3RydWN0IHZkZWNfZmIgKmZiLA0KPiA+ID4gPiAr ICAgICBzdHJ1Y3QgdmRlY19sYXRfYnVmICpsYXRfYnVmLA0KPiA+ID4gPiArICAgICBzdHJ1Y3Qg dmRlY19hdjFfc2xpY2VfcGZjICpwZmMpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICtzdHJ1Y3QgdmRl Y19hdjFfc2xpY2VfdnNpICp2c2kgPSAmcGZjLT52c2k7DQo+ID4gPiA+ICtpbnQgcmV0Ow0KPiA+ ID4gPiArDQo+ID4gPiA+ICtyZXQgPSB2ZGVjX2F2MV9zbGljZV9zZXR1cF9jb3JlX3RvX2RzdF9i dWYoaW5zdGFuY2UsIGxhdF9idWYpOw0KPiA+ID4gPiAraWYgKHJldCkNCj4gPiA+ID4gK3JldHVy biByZXQ7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3JldCA9IHZkZWNfYXYxX3NsaWNlX3NldHVwX2Nv cmVfYnVmZmVyKGluc3RhbmNlLCBwZmMsIHZzaSwgZmIsDQo+ID4gPiA+IGxhdF9idWYpOw0KPiA+ ID4gPiAraWYgKHJldCkNCj4gPiA+ID4gK3JldHVybiByZXQ7DQo+ID4gPiA+ICsNCj4gPiA+ID4g K3JldHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgaW50IHZk ZWNfYXYxX3NsaWNlX3VwZGF0ZV9jb3JlKHN0cnVjdA0KPiA+ID4gPiB2ZGVjX2F2MV9zbGljZV9p bnN0YW5jZSAqaW5zdGFuY2UsDQo+ID4gPiA+ICsgICAgICBzdHJ1Y3QgdmRlY19sYXRfYnVmICps YXRfYnVmLA0KPiA+ID4gPiArICAgICAgc3RydWN0IHZkZWNfYXYxX3NsaWNlX3BmYyAqcGZjKQ0K PiA+ID4gPiArew0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3NsaWNlX3ZzaSAqdnNpID0gaW5z dGFuY2UtPmNvcmVfdnNpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKiBUT0RPOiBEbyBzb21ldGhp bmcgaGVyZSwgb3IgcmVtb3ZlIHRoaXMgZnVuY3Rpb24gZW50aXJlbHkNCj4gPiA+ID4gKi8NCj4g PiA+IA0KPiA+ID4gQW5kPw0KPiA+ID4gDQo+ID4gPiA+ICsNCj4gPiA+ID4gK210a192Y29kZWNf ZGVidWcoaW5zdGFuY2UsICJmcmFtZSAldSBZX0NSQyAlMDh4ICUwOHggJTA4eA0KPiA+ID4gPiAl MDh4XG4iLA0KPiA+ID4gPiArIHBmYy0+c2VxLCB2c2ktPnN0YXRlLmNyY1swXSwgdnNpLQ0KPiA+ ID4gPiA+IHN0YXRlLmNyY1sxXSwNCj4gPiA+ID4gDQo+ID4gPiA+ICsgdnNpLT5zdGF0ZS5jcmNb Ml0sIHZzaS0+c3RhdGUuY3JjWzNdKTsNCj4gPiA+ID4gK210a192Y29kZWNfZGVidWcoaW5zdGFu Y2UsICJmcmFtZSAldSBDX0NSQyAlMDh4ICUwOHggJTA4eA0KPiA+ID4gPiAlMDh4XG4iLA0KPiA+ ID4gPiArIHBmYy0+c2VxLCB2c2ktPnN0YXRlLmNyY1s4XSwgdnNpLQ0KPiA+ID4gPiA+IHN0YXRl LmNyY1s5XSwNCj4gPiA+ID4gDQo+ID4gPiA+ICsgdnNpLT5zdGF0ZS5jcmNbMTBdLCB2c2ktPnN0 YXRlLmNyY1sxMV0pOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtyZXR1cm4gMDsNCj4gPiA+ID4gK30N Cj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIGludCB2ZGVjX2F2MV9zbGljZV9pbml0KHN0cnVj dCBtdGtfdmNvZGVjX2N0eCAqY3R4KQ0KPiA+ID4gPiArew0KPiA+ID4gPiArc3RydWN0IHZkZWNf YXYxX3NsaWNlX2luc3RhbmNlICppbnN0YW5jZTsNCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2F2MV9z bGljZV9pbml0X3ZzaSAqdnNpOw0KPiA+ID4gPiAraW50IHJldDsNCj4gPiA+ID4gKw0KPiA+ID4g PiAraW5zdGFuY2UgPSBremFsbG9jKHNpemVvZigqaW5zdGFuY2UpLCBHRlBfS0VSTkVMKTsNCj4g PiA+ID4gK2lmICghaW5zdGFuY2UpDQo+ID4gPiA+ICtyZXR1cm4gLUVOT01FTTsNCj4gPiA+ID4g Kw0KPiA+ID4gPiAraW5zdGFuY2UtPmN0eCA9IGN0eDsNCj4gPiA+ID4gK2luc3RhbmNlLT52cHUu aWQgPSBTQ1BfSVBJX1ZERUNfTEFUOw0KPiA+ID4gPiAraW5zdGFuY2UtPnZwdS5jb3JlX2lkID0g U0NQX0lQSV9WREVDX0NPUkU7DQo+ID4gPiA+ICtpbnN0YW5jZS0+dnB1LmN0eCA9IGN0eDsNCj4g PiA+ID4gK2luc3RhbmNlLT52cHUuY29kZWNfdHlwZSA9IGN0eC0+Y3VycmVudF9jb2RlYzsNCj4g PiA+ID4gKw0KPiA+ID4gPiArcmV0ID0gdnB1X2RlY19pbml0KCZpbnN0YW5jZS0+dnB1KTsNCj4g PiA+ID4gK2lmIChyZXQpIHsNCj4gPiA+ID4gK210a192Y29kZWNfZXJyKGluc3RhbmNlLCAiZmFp bGVkIHRvIGluaXQgdnB1IGRlYywgcmV0DQo+ID4gPiA+ICVkXG4iLCByZXQpOw0KPiA+ID4gPiAr Z290byBlcnJvcl92cHVfaW5pdDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyog aW5pdCB2c2kgYW5kIGdsb2JhbCBmbGFncyAqLw0KPiA+ID4gPiArdnNpID0gaW5zdGFuY2UtPnZw dS52c2k7DQo+ID4gPiA+ICtpZiAoIXZzaSkgew0KPiA+ID4gPiArbXRrX3Zjb2RlY19lcnIoaW5z dGFuY2UsICJmYWlsZWQgdG8gZ2V0IEFWMSB2c2lcbiIpOw0KPiA+ID4gPiArcmV0ID0gLUVJTlZB TDsNCj4gPiA+ID4gK2dvdG8gZXJyb3JfdnNpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiAraW5zdGFu Y2UtPmluaXRfdnNpID0gdnNpOw0KPiA+ID4gPiAraW5zdGFuY2UtPmNvcmVfdnNpID0gbXRrX3Zj b2RlY19md19tYXBfZG1fYWRkcihjdHgtPmRldi0NCj4gPiA+ID4gPiBmd19oYW5kbGVyLCAodTMy KXZzaS0+Y29yZV92c2kpOw0KPiA+ID4gPiANCj4gPiA+ID4gKw0KPiA+ID4gPiAraWYgKCFpbnN0 YW5jZS0+Y29yZV92c2kpIHsNCj4gPiA+ID4gK210a192Y29kZWNfZXJyKGluc3RhbmNlLCAiZmFp bGVkIHRvIGdldCBBVjEgY29yZQ0KPiA+ID4gPiB2c2lcbiIpOw0KPiA+ID4gPiArcmV0ID0gLUVJ TlZBTDsNCj4gPiA+ID4gK2dvdG8gZXJyb3JfdnNpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ ID4gPiA+ICtpZiAodnNpLT52c2lfc2l6ZSAhPSBzaXplb2Yoc3RydWN0IHZkZWNfYXYxX3NsaWNl X3ZzaSkpDQo+ID4gPiA+ICttdGtfdmNvZGVjX2VycihpbnN0YW5jZSwgInJlbW90ZSB2c2kgc2l6 ZSAweCV4DQo+ID4gPiA+IG1pc21hdGNoISBleHBlY3RlZDogMHglbHhcbiIsDQo+ID4gPiA+ICsg ICAgICAgdnNpLT52c2lfc2l6ZSwgc2l6ZW9mKHN0cnVjdA0KPiA+ID4gPiB2ZGVjX2F2MV9zbGlj ZV92c2kpKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAraW5zdGFuY2UtPmlycSA9IDE7DQo+ID4gPiAN Cj4gPiA+IERvZXMgdGhpcyBtZWFuICJpcnFfZW5hYmxlZCI/IElmIHNvLCByZW5hbWU/DQo+ID4g PiANCj4gPiA+ID4gK2luc3RhbmNlLT5pbm5lcmFjaW5nX21vZGUgPSBJU19WREVDX0lOTkVSX1JB Q0lORyhpbnN0YW5jZS0NCj4gPiA+ID4gPmN0eC0NCj4gPiA+ID4gPiBkZXYtPmRlY19jYXBhYmls aXR5KTsNCj4gPiA+ID4gDQo+ID4gPiA+ICsNCj4gPiA+ID4gK210a192Y29kZWNfZGVidWcoaW5z dGFuY2UsICJ2c2kgMHglcCBjb3JlX3ZzaSAweCVsbHggMHglcCwNCj4gPiA+ID4gaW5uZXJhY2lu Z19tb2RlICVkXG4iLA0KPiA+ID4gPiArIHZzaSwgdnNpLT5jb3JlX3ZzaSwgaW5zdGFuY2UtPmNv cmVfdnNpLA0KPiA+ID4gPiBpbnN0YW5jZS0+aW5uZXJhY2luZ19tb2RlKTsNCj4gPiA+ID4gKw0K PiA+ID4gPiArcmV0ID0gdmRlY19hdjFfc2xpY2VfaW5pdF9jZGZfdGFibGUoaW5zdGFuY2UpOw0K PiA+ID4gPiAraWYgKHJldCkNCj4gPiA+ID4gK2dvdG8gZXJyb3JfdnNpOw0KPiA+ID4gPiArDQo+ ID4gPiA+ICtyZXQgPSB2ZGVjX2F2MV9zbGljZV9pbml0X2lxX3RhYmxlKGluc3RhbmNlKTsNCj4g PiA+ID4gK2lmIChyZXQpDQo+ID4gPiA+ICtnb3RvIGVycm9yX3ZzaTsNCj4gPiA+ID4gKw0KPiA+ ID4gPiArY3R4LT5kcnZfaGFuZGxlID0gaW5zdGFuY2U7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3Jl dHVybiAwOw0KPiA+ID4gPiArZXJyb3JfdnNpOg0KPiA+ID4gPiArdnB1X2RlY19kZWluaXQoJmlu c3RhbmNlLT52cHUpOw0KPiA+ID4gPiArZXJyb3JfdnB1X2luaXQ6DQo+ID4gPiA+ICtrZnJlZShp bnN0YW5jZSk7DQo+ID4gPiANCj4gPiA+IG5ld2xpbmU/DQo+ID4gPiANCj4gPiA+ID4gK3JldHVy biByZXQ7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHZkZWNf YXYxX3NsaWNlX2RlaW5pdCh2b2lkICpoX3ZkZWMpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICtzdHJ1 Y3QgdmRlY19hdjFfc2xpY2VfaW5zdGFuY2UgKmluc3RhbmNlID0gaF92ZGVjOw0KPiA+ID4gPiAr DQo+ID4gPiA+ICtpZiAoIWluc3RhbmNlKQ0KPiA+ID4gPiArcmV0dXJuOw0KPiA+ID4gPiArbXRr X3Zjb2RlY19kZWJ1ZyhpbnN0YW5jZSwgImhfdmRlYyAweCVwXG4iLCBoX3ZkZWMpOw0KPiA+ID4g PiArdnB1X2RlY19kZWluaXQoJmluc3RhbmNlLT52cHUpOw0KPiA+ID4gPiArdmRlY19hdjFfc2xp Y2VfZnJlZV93b3JraW5nX2J1ZmZlcihpbnN0YW5jZSk7DQo+ID4gPiA+ICt2ZGVjX21zZ19xdWV1 ZV9kZWluaXQoJmluc3RhbmNlLT5jdHgtPm1zZ19xdWV1ZSwgaW5zdGFuY2UtDQo+ID4gPiA+ID4g Y3R4KTsNCj4gPiA+ID4gDQo+ID4gPiA+ICtrZnJlZShpbnN0YW5jZSk7DQo+ID4gPiA+ICt9DQo+ ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBpbnQgdmRlY19hdjFfc2xpY2VfZmx1c2godm9pZCAq aF92ZGVjLCBzdHJ1Y3QNCj4gPiA+ID4gbXRrX3Zjb2RlY19tZW0gKmJzLA0KPiA+ID4gPiArc3Ry dWN0IHZkZWNfZmIgKmZiLCBib29sICpyZXNfY2hnKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArc3Ry dWN0IHZkZWNfYXYxX3NsaWNlX2luc3RhbmNlICppbnN0YW5jZSA9IGhfdmRlYzsNCj4gPiA+ID4g K2ludCBpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICttdGtfdmNvZGVjX2RlYnVnKGluc3RhbmNlLCAi Zmx1c2ggLi4uXG4iKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArZm9yIChpID0gMDsgaSA8IEFWMV9N QVhfRlJBTUVfQlVGX0NPVU5UOyBpKyspDQo+ID4gPiA+ICt2ZGVjX2F2MV9zbGljZV9jbGVhcl9m YigmaW5zdGFuY2UtDQo+ID4gPiA+ID4gc2xvdHMuZnJhbWVfaW5mb1tpXSk7DQo+ID4gPiA+IA0K PiA+ID4gPiArDQo+ID4gPiA+ICt2ZGVjX21zZ19xdWV1ZV93YWl0X2xhdF9idWZfZnVsbCgmaW5z dGFuY2UtPmN0eC0+bXNnX3F1ZXVlKTsNCj4gPiA+IA0KPiA+ID4gbmV3bGluZT8NCj4gPiA+IA0K PiA+ID4gPiArcmV0dXJuIHZwdV9kZWNfcmVzZXQoJmluc3RhbmNlLT52cHUpOw0KPiA+ID4gPiAr fQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgdm9pZCB2ZGVjX2F2MV9zbGljZV9nZXRfcGlj X2luZm8oc3RydWN0DQo+ID4gPiA+IHZkZWNfYXYxX3NsaWNlX2luc3RhbmNlICppbnN0YW5jZSkN Cj4gPiA+ID4gK3sNCj4gPiA+ID4gK3N0cnVjdCBtdGtfdmNvZGVjX2N0eCAqY3R4ID0gaW5zdGFu Y2UtPmN0eDsNCj4gPiA+ID4gK3UzMiBkYXRhWzNdOw0KPiA+ID4gPiArDQo+ID4gPiA+ICttdGtf dmNvZGVjX2RlYnVnKGluc3RhbmNlLCAidyAldSBoICV1XG4iLCBjdHgtPnBpY2luZm8ucGljX3cs DQo+ID4gPiA+IGN0eC0+cGljaW5mby5waWNfaCk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2RhdGFb MF0gPSBjdHgtPnBpY2luZm8ucGljX3c7DQo+ID4gPiA+ICtkYXRhWzFdID0gY3R4LT5waWNpbmZv LnBpY19oOw0KPiA+ID4gPiArZGF0YVsyXSA9IGN0eC0+Y2FwdHVyZV9mb3VyY2M7DQo+ID4gPiA+ ICt2cHVfZGVjX2dldF9wYXJhbSgmaW5zdGFuY2UtPnZwdSwgZGF0YSwgMywNCj4gPiA+ID4gR0VU X1BBUkFNX1BJQ19JTkZPKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArY3R4LT5waWNpbmZvLmJ1Zl93 ID0gQUxJR04oY3R4LT5waWNpbmZvLnBpY193LA0KPiA+ID4gPiBWQ09ERUNfREVDX0FMSUdORURf NjQpOw0KPiA+ID4gPiArY3R4LT5waWNpbmZvLmJ1Zl9oID0gQUxJR04oY3R4LT5waWNpbmZvLnBp Y19oLA0KPiA+ID4gPiBWQ09ERUNfREVDX0FMSUdORURfNjQpOw0KPiA+ID4gPiArY3R4LT5waWNp bmZvLmZiX3N6WzBdID0gaW5zdGFuY2UtPnZwdS5mYl9zelswXTsNCj4gPiA+ID4gK2N0eC0+cGlj aW5mby5mYl9zelsxXSA9IGluc3RhbmNlLT52cHUuZmJfc3pbMV07DQo+ID4gPiA+ICt9DQo+ID4g PiA+ICsNCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHZkZWNfYXYxX3NsaWNlX2dldF9kcGJfc2l6ZShz dHJ1Y3QNCj4gPiA+ID4gdmRlY19hdjFfc2xpY2VfaW5zdGFuY2UgKmluc3RhbmNlLCB1MzIgKmRw Yl9zeikNCj4gPiA+IA0KPiA+ID4gc3RhdGljIGlubGluZSB2b2lkPw0KPiA+ID4gDQo+ID4gPiA+ ICt7DQo+ID4gPiA+ICsvKiByZWZlciBhdjEgc3BlY2lmaWNhdGlvbiAqLw0KPiA+ID4gPiArKmRw Yl9zeiA9IFY0TDJfQVYxX1RPVEFMX1JFRlNfUEVSX0ZSQU1FICsgMTsNCj4gPiA+ID4gK30NCj4g PiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIHZvaWQgdmRlY19hdjFfc2xpY2VfZ2V0X2Nyb3BfaW5m byhzdHJ1Y3QNCj4gPiA+ID4gdmRlY19hdjFfc2xpY2VfaW5zdGFuY2UgKmluc3RhbmNlLA0KPiA+ ID4gPiArIHN0cnVjdCB2NGwyX3JlY3QgKmNyKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArc3RydWN0 IG10a192Y29kZWNfY3R4ICpjdHggPSBpbnN0YW5jZS0+Y3R4Ow0KPiA+ID4gPiArDQo+ID4gPiA+ ICtjci0+bGVmdCA9IDA7DQo+ID4gPiA+ICtjci0+dG9wID0gMDsNCj4gPiA+ID4gK2NyLT53aWR0 aCA9IGN0eC0+cGljaW5mby5waWNfdzsNCj4gPiA+ID4gK2NyLT5oZWlnaHQgPSBjdHgtPnBpY2lu Zm8ucGljX2g7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK210a192Y29kZWNfZGVidWcoaW5zdGFuY2Us ICJsPSVkLCB0PSVkLCB3PSVkLCBoPSVkXG4iLA0KPiA+ID4gPiArIGNyLT5sZWZ0LCBjci0+dG9w LCBjci0+d2lkdGgsIGNyLT5oZWlnaHQpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICtzdGF0aWMgaW50IHZkZWNfYXYxX3NsaWNlX2dldF9wYXJhbSh2b2lkICpoX3ZkZWMsIGVudW0N Cj4gPiA+ID4gdmRlY19nZXRfcGFyYW1fdHlwZSB0eXBlLCB2b2lkICpvdXQpDQo+ID4gPiA+ICt7 DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfaW5zdGFuY2UgKmluc3RhbmNlID0gaF92 ZGVjOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtzd2l0Y2ggKHR5cGUpIHsNCj4gPiA+ID4gK2Nhc2Ug R0VUX1BBUkFNX1BJQ19JTkZPOg0KPiA+ID4gPiArdmRlY19hdjFfc2xpY2VfZ2V0X3BpY19pbmZv KGluc3RhbmNlKTsNCj4gPiA+ID4gK2JyZWFrOw0KPiA+ID4gPiArY2FzZSBHRVRfUEFSQU1fRFBC X1NJWkU6DQo+ID4gPiA+ICt2ZGVjX2F2MV9zbGljZV9nZXRfZHBiX3NpemUoaW5zdGFuY2UsIG91 dCk7DQo+ID4gPiA+ICticmVhazsNCj4gPiA+ID4gK2Nhc2UgR0VUX1BBUkFNX0NST1BfSU5GTzoN Cj4gPiA+ID4gK3ZkZWNfYXYxX3NsaWNlX2dldF9jcm9wX2luZm8oaW5zdGFuY2UsIG91dCk7DQo+ ID4gPiA+ICticmVhazsNCj4gPiA+ID4gK2RlZmF1bHQ6DQo+ID4gPiA+ICttdGtfdmNvZGVjX2Vy cihpbnN0YW5jZSwgImludmFsaWQgZ2V0IHBhcmFtZXRlcg0KPiA+ID4gPiB0eXBlPSVkXG4iLCB0 eXBlKTsNCj4gPiA+ID4gK3JldHVybiAtRUlOVkFMOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ ID4gPiA+ICtyZXR1cm4gMDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGlj IGludCB2ZGVjX2F2MV9zbGljZV9sYXRfZGVjb2RlKHZvaWQgKmhfdmRlYywgc3RydWN0DQo+ID4g PiA+IG10a192Y29kZWNfbWVtICpicywNCj4gPiA+ID4gKyAgICAgc3RydWN0IHZkZWNfZmIgKmZi LCBib29sICpyZXNfY2hnKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3Ns aWNlX2luc3RhbmNlICppbnN0YW5jZSA9IGhfdmRlYzsNCj4gPiA+ID4gK3N0cnVjdCB2ZGVjX2xh dF9idWYgKmxhdF9idWY7DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfcGZjICpwZmM7 DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19hdjFfc2xpY2VfdnNpICp2c2k7DQo+ID4gPiA+ICtzdHJ1 Y3QgbXRrX3Zjb2RlY19jdHggKmN0eDsNCj4gPiA+ID4gK2ludCByZXQ7DQo+ID4gPiA+ICsNCj4g PiA+ID4gK2lmICghaW5zdGFuY2UgfHwgIWluc3RhbmNlLT5jdHgpDQo+ID4gPiA+ICtyZXR1cm4g LUVJTlZBTDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArY3R4ID0gaW5zdGFuY2UtPmN0eDsNCj4gPiA+ ID4gKy8qIGluaXQgbXNnUSBmb3IgdGhlIGZpcnN0IHRpbWUgKi8NCj4gPiA+ID4gK2lmICh2ZGVj X21zZ19xdWV1ZV9pbml0KCZjdHgtPm1zZ19xdWV1ZSwgY3R4LA0KPiA+ID4gPiArdmRlY19hdjFf c2xpY2VfY29yZV9kZWNvZGUsDQo+ID4gPiA+IHNpemVvZigqcGZjKSkpIHsNCj4gPiA+ID4gK210 a192Y29kZWNfZXJyKGluc3RhbmNlLCAiZmFpbGVkIHRvIGluaXQgQVYxIG1zZw0KPiA+ID4gPiBx dWV1ZVxuIik7DQo+ID4gPiA+ICtyZXR1cm4gLUVOT01FTTsNCj4gPiA+ID4gK30NCj4gPiA+ID4g Kw0KPiA+ID4gPiArLyogYnMgTlVMTCBtZWFucyBmbHVzaCBkZWNvZGVyICovDQo+ID4gPiA+ICtp ZiAoIWJzKQ0KPiA+ID4gPiArcmV0dXJuIHZkZWNfYXYxX3NsaWNlX2ZsdXNoKGhfdmRlYywgYnMs IGZiLCByZXNfY2hnKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArbGF0X2J1ZiA9IHZkZWNfbXNnX3F1 ZXVlX2RxYnVmKCZjdHgtPm1zZ19xdWV1ZS5sYXRfY3R4KTsNCj4gPiA+ID4gK2lmICghbGF0X2J1 Zikgew0KPiA+ID4gPiArbXRrX3Zjb2RlY19lcnIoaW5zdGFuY2UsICJmYWlsZWQgdG8gZ2V0IEFW MSBsYXQNCj4gPiA+ID4gYnVmXG4iKTsNCj4gPiA+IA0KPiA+ID4gdGhlcmUgZXhpc3RzIHZkZWNf bXNnX3F1ZXVlX2RlaW5pdCgpLiBTaG91bGQgaXQgYmUgY2FsbGVkIGluIHRoaXMNCj4gPiA+IChh bmQgDQo+ID4gPiBzdWJzZXF1ZW50KSBlcnJvciByZWNvdmVyeSBwYXRoKHMpPw0KPiA+ID4gDQo+ ID4gPiA+ICtyZXR1cm4gLUVCVVNZOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArcGZjID0gKHN0cnVj dCB2ZGVjX2F2MV9zbGljZV9wZmMgKilsYXRfYnVmLT5wcml2YXRlX2RhdGE7DQo+ID4gPiA+ICtp ZiAoIXBmYykgew0KPiA+ID4gPiArcmV0ID0gLUVJTlZBTDsNCj4gPiA+ID4gK2dvdG8gZXJyX2Zy ZWVfZmJfb3V0Ow0KPiA+ID4gPiArfQ0KPiA+ID4gPiArdnNpID0gJnBmYy0+dnNpOw0KPiA+ID4g PiArDQo+ID4gPiA+ICtyZXQgPSB2ZGVjX2F2MV9zbGljZV9zZXR1cF9sYXQoaW5zdGFuY2UsIGJz LCBsYXRfYnVmLCBwZmMpOw0KPiA+ID4gPiAraWYgKHJldCkgew0KPiA+ID4gPiArbXRrX3Zjb2Rl Y19lcnIoaW5zdGFuY2UsICJmYWlsZWQgdG8gc2V0dXAgQVYxIGxhdCByZXQNCj4gPiA+ID4gJWRc biIsIHJldCk7DQo+ID4gPiA+ICtnb3RvIGVycl9mcmVlX2ZiX291dDsNCj4gPiA+ID4gK30NCj4g PiA+ID4gKw0KPiA+ID4gPiArdmRlY19hdjFfc2xpY2VfdnNpX3RvX3JlbW90ZSh2c2ksIGluc3Rh bmNlLT52c2kpOw0KPiA+ID4gPiArcmV0ID0gdnB1X2RlY19zdGFydCgmaW5zdGFuY2UtPnZwdSwg TlVMTCwgMCk7DQo+ID4gPiA+ICtpZiAocmV0KSB7DQo+ID4gPiA+ICttdGtfdmNvZGVjX2Vycihp bnN0YW5jZSwgImZhaWxlZCB0byBkZWMgQVYxIHJldCAlZFxuIiwNCj4gPiA+ID4gcmV0KTsNCj4g PiA+ID4gK2dvdG8gZXJyX2ZyZWVfZmJfb3V0Ow0KPiA+ID4gPiArfQ0KPiA+ID4gPiAraWYgKGlu c3RhbmNlLT5pbm5lcmFjaW5nX21vZGUpDQo+ID4gPiA+ICt2ZGVjX21zZ19xdWV1ZV9xYnVmKCZj dHgtPmRldi0+bXNnX3F1ZXVlX2NvcmVfY3R4LA0KPiA+ID4gPiBsYXRfYnVmKTsNCj4gPiA+ID4g Kw0KPiA+ID4gPiAraWYgKGluc3RhbmNlLT5pcnEpIHsNCj4gPiA+ID4gK3JldCA9IG10a192Y29k ZWNfd2FpdF9mb3JfZG9uZV9jdHgoY3R4LA0KPiA+ID4gPiBNVEtfSU5TVF9JUlFfUkVDRUlWRUQs DQo+ID4gPiA+ICsgICBXQUlUX0lOVFJfVElNRU9VVF9NUw0KPiA+ID4gPiAsDQo+ID4gPiA+ICsg ICBNVEtfVkRFQ19MQVQwKTsNCj4gPiA+ID4gKy8qIHVwZGF0ZSByZW1vdGUgdnNpIGlmIGRlY29k ZSB0aW1lb3V0ICovDQo+ID4gPiA+ICtpZiAocmV0KSB7DQo+ID4gPiA+ICttdGtfdmNvZGVjX2Vy cihpbnN0YW5jZSwgIkFWMSBGcmFtZSAlZCBkZWNvZGUNCj4gPiA+ID4gdGltZW91dCAlZFxuIiwg cGZjLT5zZXEsIHJldCk7DQo+ID4gPiA+ICtXUklURV9PTkNFKGluc3RhbmNlLT52c2ktPnN0YXRl LnRpbWVvdXQsIDEpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArdnB1X2RlY19lbmQoJmluc3RhbmNl LT52cHUpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICt2ZGVjX2F2MV9zbGljZV92 c2lfZnJvbV9yZW1vdGUodnNpLCBpbnN0YW5jZS0+dnNpKTsNCj4gPiA+ID4gK3JldCA9IHZkZWNf YXYxX3NsaWNlX3VwZGF0ZV9sYXQoaW5zdGFuY2UsIGxhdF9idWYsIHBmYyk7DQo+ID4gPiA+ICsN Cj4gPiA+ID4gKy8qIExBVCB0cmFucyBmdWxsLCByZS1kZWNvZGUgKi8NCj4gPiA+ID4gK2lmIChy ZXQgPT0gLUVBR0FJTikgew0KPiA+ID4gPiArbXRrX3Zjb2RlY19lcnIoaW5zdGFuY2UsICJBVjEg RnJhbWUgJWQgdHJhbnMgZnVsbFxuIiwNCj4gPiA+ID4gcGZjLT5zZXEpOw0KPiA+ID4gPiAraWYg KCFpbnN0YW5jZS0+aW5uZXJhY2luZ19tb2RlKQ0KPiA+ID4gPiArdmRlY19tc2dfcXVldWVfcWJ1 ZigmY3R4LT5tc2dfcXVldWUubGF0X2N0eCwNCj4gPiA+ID4gbGF0X2J1Zik7DQo+ID4gPiA+ICty ZXR1cm4gMDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyogTEFUIHRyYW5zIGZ1 bGwsIG5vIG1vcmUgVUJFIG9yIGRlY29kZSB0aW1lb3V0ICovDQo+ID4gPiA+ICtpZiAocmV0ID09 IC1FTk9NRU0gfHwgdnNpLT5zdGF0ZS50aW1lb3V0KSB7DQo+ID4gPiA+ICttdGtfdmNvZGVjX2Vy cihpbnN0YW5jZSwgIkFWMSBGcmFtZSAlZCBpbnN1ZmZpY2llbnQNCj4gPiA+ID4gYnVmZmVyIG9y IHRpbWVvdXRcbiIsIHBmYy0+c2VxKTsNCj4gPiA+ID4gK2lmICghaW5zdGFuY2UtPmlubmVyYWNp bmdfbW9kZSkNCj4gPiA+ID4gK3ZkZWNfbXNnX3F1ZXVlX3FidWYoJmN0eC0+bXNnX3F1ZXVlLmxh dF9jdHgsDQo+ID4gPiA+IGxhdF9idWYpOw0KPiA+ID4gPiArcmV0dXJuIC1FQlVTWTsNCj4gPiA+ ID4gK30NCj4gPiA+ID4gK3ZzaS0+dHJhbnMuZG1hX2FkZHJfZW5kICs9IGN0eC0+bXNnX3F1ZXVl LndkbWFfYWRkci5kbWFfYWRkcjsNCj4gPiA+ID4gK210a192Y29kZWNfZGVidWcoaW5zdGFuY2Us ICJsYXQgZG1hIDEgMHglbGx4IDB4JWxseFxuIiwNCj4gPiA+ID4gKyBwZmMtPnZzaS50cmFucy5k bWFfYWRkciwgcGZjLQ0KPiA+ID4gPiA+IHZzaS50cmFucy5kbWFfYWRkcl9lbmQpOw0KPiA+ID4g PiANCj4gPiA+ID4gKw0KPiA+ID4gPiArdmRlY19tc2dfcXVldWVfdXBkYXRlX3ViZV93cHRyKCZj dHgtPm1zZ19xdWV1ZSwgdnNpLQ0KPiA+ID4gPiA+IHRyYW5zLmRtYV9hZGRyX2VuZCk7DQo+ID4g PiA+IA0KPiA+ID4gPiArDQo+ID4gPiA+ICtpZiAoIWluc3RhbmNlLT5pbm5lcmFjaW5nX21vZGUp DQo+ID4gPiA+ICt2ZGVjX21zZ19xdWV1ZV9xYnVmKCZjdHgtPmRldi0+bXNnX3F1ZXVlX2NvcmVf Y3R4LA0KPiA+ID4gPiBsYXRfYnVmKTsNCj4gPiA+ID4gK21lbWNweSgmaW5zdGFuY2UtPnNsb3Rz LCAmdnNpLT5zbG90cywgc2l6ZW9mKGluc3RhbmNlLQ0KPiA+ID4gPiA+c2xvdHMpKTsNCj4gPiA+ ID4gKw0KPiA+ID4gPiArcmV0dXJuIDA7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2Vycl9mcmVlX2Zi X291dDoNCj4gPiA+ID4gK3ZkZWNfbXNnX3F1ZXVlX3FidWYoJmN0eC0+bXNnX3F1ZXVlLmxhdF9j dHgsIGxhdF9idWYpOw0KPiA+ID4gPiArbXRrX3Zjb2RlY19lcnIoaW5zdGFuY2UsICJzbGljZSBk ZWMgbnVtYmVyOiAlZCBlcnI6ICVkIiwgcGZjLQ0KPiA+ID4gPiA+IHNlcSwgcmV0KTsNCj4gPiA+ ID4gDQo+ID4gPiA+ICtyZXR1cm4gcmV0Ow0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICtzdGF0aWMgaW50IHZkZWNfYXYxX3NsaWNlX2NvcmVfZGVjb2RlKHN0cnVjdCB2ZGVjX2xhdF9i dWYNCj4gPiA+ID4gKmxhdF9idWYpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICtzdHJ1Y3QgdmRlY19h djFfc2xpY2VfaW5zdGFuY2UgKmluc3RhbmNlOw0KPiA+ID4gPiArc3RydWN0IHZkZWNfYXYxX3Ns aWNlX3BmYyAqcGZjOw0KPiA+ID4gPiArc3RydWN0IG10a192Y29kZWNfY3R4ICpjdHggPSBOVUxM Ow0KPiA+ID4gPiArc3RydWN0IHZkZWNfZmIgKmZiID0gTlVMTDsNCj4gPiA+ID4gK2ludCByZXQg PSAtRUlOVkFMOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtpZiAoIWxhdF9idWYpDQo+ID4gPiA+ICty ZXR1cm4gLUVJTlZBTDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArcGZjID0gbGF0X2J1Zi0+cHJpdmF0 ZV9kYXRhOw0KPiA+ID4gPiArY3R4ID0gbGF0X2J1Zi0+Y3R4Ow0KPiA+ID4gPiAraWYgKCFwZmMg fHwgIWN0eCkNCj4gPiA+ID4gK3JldHVybiAtRUlOVkFMOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtp bnN0YW5jZSA9IGN0eC0+ZHJ2X2hhbmRsZTsNCj4gPiA+ID4gK2lmICghaW5zdGFuY2UpDQo+ID4g PiA+ICtnb3RvIGVycjsNCj4gPiA+ID4gKw0KPiA+ID4gPiArZmIgPSBjdHgtPmRldi0+dmRlY19w ZGF0YS0+Z2V0X2NhcF9idWZmZXIoY3R4KTsNCj4gPiA+ID4gK2lmICghZmIpIHsNCj4gPiA+ID4g K3JldCA9IC1FQlVTWTsNCj4gPiA+ID4gK2dvdG8gZXJyOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiAr DQo+ID4gPiA+ICtyZXQgPSB2ZGVjX2F2MV9zbGljZV9zZXR1cF9jb3JlKGluc3RhbmNlLCBmYiwg bGF0X2J1ZiwgcGZjKTsNCj4gPiA+ID4gK2lmIChyZXQpIHsNCj4gPiA+ID4gK210a192Y29kZWNf ZXJyKGluc3RhbmNlLA0KPiA+ID4gPiAidmRlY19hdjFfc2xpY2Vfc2V0dXBfY29yZVxuIik7DQo+ ID4gPiA+ICtnb3RvIGVycjsNCj4gPiA+ID4gK30NCj4gPiA+ID4gK3ZkZWNfYXYxX3NsaWNlX3Zz aV90b19yZW1vdGUoJnBmYy0+dnNpLCBpbnN0YW5jZS0+Y29yZV92c2kpOw0KPiA+ID4gPiArcmV0 ID0gdnB1X2RlY19jb3JlKCZpbnN0YW5jZS0+dnB1KTsNCj4gPiA+ID4gK2lmIChyZXQpIHsNCj4g PiA+ID4gK210a192Y29kZWNfZXJyKGluc3RhbmNlLCAidnB1X2RlY19jb3JlXG4iKTsNCj4gPiA+ ID4gK2dvdG8gZXJyOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtpZiAoaW5zdGFu Y2UtPmlycSkgew0KPiA+ID4gPiArcmV0ID0gbXRrX3Zjb2RlY193YWl0X2Zvcl9kb25lX2N0eChj dHgsDQo+ID4gPiA+IE1US19JTlNUX0lSUV9SRUNFSVZFRCwNCj4gPiA+ID4gKyAgIFdBSVRfSU5U Ul9USU1FT1VUX01TDQo+ID4gPiA+ICwNCj4gPiA+ID4gKyAgIE1US19WREVDX0NPUkUpOw0KPiA+ ID4gPiArLyogdXBkYXRlIHJlbW90ZSB2c2kgaWYgZGVjb2RlIHRpbWVvdXQgKi8NCj4gPiA+ID4g K2lmIChyZXQpIHsNCj4gPiA+ID4gK210a192Y29kZWNfZXJyKGluc3RhbmNlLCAiQVYxIGZyYW1l ICVkIGNvcmUNCj4gPiA+ID4gdGltZW91dFxuIiwgcGZjLT5zZXEpOw0KPiA+ID4gPiArV1JJVEVf T05DRShpbnN0YW5jZS0+dnNpLT5zdGF0ZS50aW1lb3V0LCAxKTsNCj4gPiA+ID4gK30NCj4gPiA+ ID4gK3ZwdV9kZWNfY29yZV9lbmQoJmluc3RhbmNlLT52cHUpOw0KPiA+ID4gPiArfQ0KPiA+ID4g PiArDQo+ID4gPiA+ICtyZXQgPSB2ZGVjX2F2MV9zbGljZV91cGRhdGVfY29yZShpbnN0YW5jZSwg bGF0X2J1ZiwgcGZjKTsNCj4gPiA+ID4gK2lmIChyZXQpIHsNCj4gPiA+ID4gK210a192Y29kZWNf ZXJyKGluc3RhbmNlLA0KPiA+ID4gPiAidmRlY19hdjFfc2xpY2VfdXBkYXRlX2NvcmVcbiIpOw0K PiA+ID4gPiArZ290byBlcnI7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK210a192 Y29kZWNfZGVidWcoaW5zdGFuY2UsICJjb3JlIGRtYV9hZGRyX2VuZCAweCVsbHhcbiIsDQo+ID4g PiA+ICsgaW5zdGFuY2UtPmNvcmVfdnNpLT50cmFucy5kbWFfYWRkcl9lbmQpOw0KPiA+ID4gPiAr dmRlY19tc2dfcXVldWVfdXBkYXRlX3ViZV9ycHRyKCZjdHgtPm1zZ19xdWV1ZSwgaW5zdGFuY2Ut DQo+ID4gPiA+ID4gY29yZV92c2ktPnRyYW5zLmRtYV9hZGRyX2VuZCk7DQo+ID4gPiA+IA0KPiA+ ID4gPiArDQo+ID4gPiA+ICtjdHgtPmRldi0+dmRlY19wZGF0YS0+Y2FwX3RvX2Rpc3AoY3R4LCAw LCBsYXRfYnVmLQ0KPiA+ID4gPiA+IHNyY19idWZfcmVxKTsNCj4gPiA+ID4gDQo+ID4gPiA+ICsN Cj4gPiA+ID4gK3JldHVybiAwOw0KPiA+ID4gPiArDQo+ID4gPiA+ICtlcnI6DQo+ID4gPiA+ICsv KiBhbHdheXMgdXBkYXRlIHJlYWQgcG9pbnRlciAqLw0KPiA+ID4gPiArdmRlY19tc2dfcXVldWVf dXBkYXRlX3ViZV9ycHRyKCZjdHgtPm1zZ19xdWV1ZSwgcGZjLQ0KPiA+ID4gPiA+IHZzaS50cmFu cy5kbWFfYWRkcl9lbmQpOw0KPiA+ID4gPiANCj4gPiA+ID4gKw0KPiA+ID4gPiAraWYgKGZiKQ0K PiA+ID4gPiArY3R4LT5kZXYtPnZkZWNfcGRhdGEtPmNhcF90b19kaXNwKGN0eCwgMSwgbGF0X2J1 Zi0NCj4gPiA+ID4gPiBzcmNfYnVmX3JlcSk7DQo+ID4gPiA+IA0KPiA+ID4gPiArDQo+ID4gPiA+ ICtyZXR1cm4gcmV0Ow0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtjb25zdCBzdHJ1 Y3QgdmRlY19jb21tb25faWYgdmRlY19hdjFfc2xpY2VfbGF0X2lmID0gew0KPiA+ID4gPiArLmlu aXQ9IHZkZWNfYXYxX3NsaWNlX2luaXQsDQo+ID4gPiA+ICsuZGVjb2RlPSB2ZGVjX2F2MV9zbGlj ZV9sYXRfZGVjb2RlLA0KPiA+ID4gPiArLmdldF9wYXJhbT0gdmRlY19hdjFfc2xpY2VfZ2V0X3Bh cmFtLA0KPiA+ID4gPiArLmRlaW5pdD0gdmRlY19hdjFfc2xpY2VfZGVpbml0LA0KPiA+ID4gPiAr fTsNCj4gPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4gPiBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v bWVkaWF0ZWsvdmNvZGVjL3ZkZWNfZHJ2X2lmLmMNCj4gPiA+ID4gYi9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL21lZGlhdGVrL3Zjb2RlYy92ZGVjX2Rydl9pZi5jDQo+ID4gPiA+IGluZGV4IGYzODA3 ZjAzZDg4MDYuLjRkZGE1OWE2YzgxNDEgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL3ZkZWNfZHJ2X2lmLmMNCj4gPiA+ID4gKysrIGIv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvdmRlY19kcnZfaWYuYw0KPiA+ ID4gPiBAQCAtNDksNiArNDksMTAgQEAgaW50IHZkZWNfaWZfaW5pdChzdHJ1Y3QgbXRrX3Zjb2Rl Y19jdHggKmN0eCwNCj4gPiA+ID4gdW5zaWduZWQgaW50IGZvdXJjYykNCj4gPiA+ID4gICBjdHgt PmRlY19pZiA9ICZ2ZGVjX3ZwOV9zbGljZV9sYXRfaWY7DQo+ID4gPiA+ICAgY3R4LT5od19pZCA9 IElTX1ZERUNfTEFUX0FSQ0goaHdfYXJjaCkgPyBNVEtfVkRFQ19MQVQwDQo+ID4gPiA+IDogTVRL X1ZERUNfQ09SRTsNCj4gPiA+ID4gICBicmVhazsNCj4gPiA+ID4gK2Nhc2UgVjRMMl9QSVhfRk1U X0FWMV9GUkFNRToNCj4gPiA+ID4gK2N0eC0+ZGVjX2lmID0gJnZkZWNfYXYxX3NsaWNlX2xhdF9p ZjsNCj4gPiA+ID4gK2N0eC0+aHdfaWQgPSBNVEtfVkRFQ19MQVQwOw0KPiA+ID4gPiArYnJlYWs7 DQo+ID4gPiA+ICAgZGVmYXVsdDoNCj4gPiA+ID4gICByZXR1cm4gLUVJTlZBTDsNCj4gPiA+ID4g ICB9DQo+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L21lZGlhdGVrL3Zjb2RlYy92ZGVjX2Rydl9pZi5oDQo+ID4gPiA+IGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvdmRlY19kcnZfaWYuaA0KPiA+ID4gPiBpbmRleCAwNzYz MDZmZjJkZDQ5Li5kYzZjOGVjZDk4NDNhIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy92ZGVjX2Rydl9pZi5oDQo+ID4gPiA+ICsrKyBi L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL3ZkZWNfZHJ2X2lmLmgNCj4g PiA+ID4gQEAgLTYxLDYgKzYxLDcgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCB2ZGVjX2NvbW1vbl9p Zg0KPiA+ID4gPiB2ZGVjX3ZwOF9pZjsNCj4gPiA+ID4gICBleHRlcm4gY29uc3Qgc3RydWN0IHZk ZWNfY29tbW9uX2lmIHZkZWNfdnA4X3NsaWNlX2lmOw0KPiA+ID4gPiAgIGV4dGVybiBjb25zdCBz dHJ1Y3QgdmRlY19jb21tb25faWYgdmRlY192cDlfaWY7DQo+ID4gPiA+ICAgZXh0ZXJuIGNvbnN0 IHN0cnVjdCB2ZGVjX2NvbW1vbl9pZiB2ZGVjX3ZwOV9zbGljZV9sYXRfaWY7DQo+ID4gPiA+ICtl eHRlcm4gY29uc3Qgc3RydWN0IHZkZWNfY29tbW9uX2lmIHZkZWNfYXYxX3NsaWNlX2xhdF9pZjsN Cj4gPiA+ID4gICANCj4gPiA+ID4gICAvKioNCj4gPiA+ID4gICAgKiB2ZGVjX2lmX2luaXQoKSAt IGluaXRpYWxpemUgZGVjb2RlIGRyaXZlcg0KPiA+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiA+IGEv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvdmRlY19tc2dfcXVldWUuYw0K PiA+ID4gPiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL3ZkZWNfbXNn X3F1ZXVlLmMNCj4gPiA+ID4gaW5kZXggYWU1MDA5ODBhZDQ1Yy4uMDViNTRiMGUzZjJkMiAxMDA2 NDQNCj4gPiA+ID4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMv dmRlY19tc2dfcXVldWUuYw0KPiA+ID4gPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21l ZGlhdGVrL3Zjb2RlYy92ZGVjX21zZ19xdWV1ZS5jDQo+ID4gPiA+IEBAIC0yMCw2ICsyMCw5IEBA DQo+ID4gPiA+ICAgLyogdGhlIHNpemUgdXNlZCB0byBzdG9yZSBhdmMgZXJyb3IgaW5mb3JtYXRp b24gKi8NCj4gPiA+ID4gICAjZGVmaW5lIFZERUNfRVJSX01BUF9TWl9BVkMgICAgICAgICAoMTcg KiBTWl8xSykNCj4gPiA+ID4gICANCj4gPiA+ID4gKyNkZWZpbmUgVkRFQ19SRF9NVl9CVUZGRVJf U1ogICAgICAgICgoKFNaXzRLICogMjMwNCA+PiA0KSArDQo+ID4gPiA+IFNaXzFLKQ0KPiA+ID4g PiA8PCAxKQ0KPiA+ID4gPiArI2RlZmluZSBWREVDX0xBVF9USUxFX1NaICAgICAgICAgICAgKDY0 ICogU1pfNEspDQo+ID4gPiA+ICsNCj4gPiA+ID4gICAvKiBjb3JlIHdpbGwgcmVhZCB0aGUgdHJh bnMgYnVmZmVyIHdoaWNoIGRlY29kZWQgYnkgbGF0IHRvDQo+ID4gPiA+IGRlY29kZQ0KPiA+ID4g PiBhZ2Fpbi4NCj4gPiA+ID4gICAgKiBUaGUgdHJhbnMgYnVmZmVyIHNpemUgb2YgRkhEIGFuZCA0 SyBiaXRzdHJlYW1zIGFyZQ0KPiA+ID4gPiBkaWZmZXJlbnQuDQo+ID4gPiA+ICAgICovDQo+ID4g PiA+IEBAIC0xOTQsNiArMTk3LDE0IEBAIHZvaWQgdmRlY19tc2dfcXVldWVfZGVpbml0KHN0cnVj dA0KPiA+ID4gPiB2ZGVjX21zZ19xdWV1ZSAqbXNnX3F1ZXVlLA0KPiA+ID4gPiAgIGlmIChtZW0t PnZhKQ0KPiA+ID4gPiAgIG10a192Y29kZWNfbWVtX2ZyZWUoY3R4LCBtZW0pOw0KPiA+ID4gPiAg IA0KPiA+ID4gPiArbWVtID0gJmxhdF9idWYtPnJkX212X2FkZHI7DQo+ID4gPiA+ICtpZiAobWVt LT52YSkNCj4gPiA+ID4gK210a192Y29kZWNfbWVtX2ZyZWUoY3R4LCBtZW0pOw0KPiA+ID4gPiAr DQo+ID4gPiA+ICttZW0gPSAmbGF0X2J1Zi0+dGlsZV9hZGRyOw0KPiA+ID4gPiAraWYgKG1lbS0+ dmEpDQo+ID4gPiA+ICttdGtfdmNvZGVjX21lbV9mcmVlKGN0eCwgbWVtKTsNCj4gPiA+ID4gKw0K PiA+ID4gPiAgIGtmcmVlKGxhdF9idWYtPnByaXZhdGVfZGF0YSk7DQo+ID4gPiA+ICAgfQ0KPiA+ ID4gPiAgIH0NCj4gPiA+ID4gQEAgLTI3MCw2ICsyODEsMjIgQEAgaW50IHZkZWNfbXNnX3F1ZXVl X2luaXQoc3RydWN0DQo+ID4gPiA+IHZkZWNfbXNnX3F1ZXVlDQo+ID4gPiA+ICptc2dfcXVldWUs DQo+ID4gPiA+ICAgZ290byBtZW1fYWxsb2NfZXJyOw0KPiA+ID4gPiAgIH0NCj4gPiA+ID4gICAN Cj4gPiA+ID4gK2lmIChjdHgtPmN1cnJlbnRfY29kZWMgPT0gVjRMMl9QSVhfRk1UX0FWMV9GUkFN RSkgew0KPiA+ID4gPiArbGF0X2J1Zi0+cmRfbXZfYWRkci5zaXplID0NCj4gPiA+ID4gVkRFQ19S RF9NVl9CVUZGRVJfU1o7DQo+ID4gPiA+ICtlcnIgPSBtdGtfdmNvZGVjX21lbV9hbGxvYyhjdHgs ICZsYXRfYnVmLQ0KPiA+ID4gPiA+IHJkX212X2FkZHIpOw0KPiA+ID4gPiANCj4gPiA+ID4gK2lm IChlcnIpIHsNCj4gPiA+ID4gK210a192NGwyX2VycigiZmFpbGVkIHRvIGFsbG9jYXRlDQo+ID4g PiA+IHJkX212X2FkZHIgYnVmWyVkXSIsIGkpOw0KPiA+ID4gPiArcmV0dXJuIC1FTk9NRU07DQo+ ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2xhdF9idWYtPnRpbGVfYWRkci5zaXplID0g VkRFQ19MQVRfVElMRV9TWjsNCj4gPiA+ID4gK2VyciA9IG10a192Y29kZWNfbWVtX2FsbG9jKGN0 eCwgJmxhdF9idWYtDQo+ID4gPiA+ID4gdGlsZV9hZGRyKTsNCj4gPiA+ID4gDQo+ID4gPiA+ICtp ZiAoZXJyKSB7DQo+ID4gPiA+ICttdGtfdjRsMl9lcnIoImZhaWxlZCB0byBhbGxvY2F0ZQ0KPiA+ ID4gPiB0aWxlX2FkZHIgYnVmWyVkXSIsIGkpOw0KPiA+ID4gPiArcmV0dXJuIC1FTk9NRU07DQo+ ID4gPiA+ICt9DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gICBsYXRfYnVmLT5wcml2 YXRlX2RhdGEgPSBremFsbG9jKHByaXZhdGVfc2l6ZSwNCj4gPiA+ID4gR0ZQX0tFUk5FTCk7DQo+ ID4gPiA+ICAgaWYgKCFsYXRfYnVmLT5wcml2YXRlX2RhdGEpIHsNCj4gPiA+ID4gICBlcnIgPSAt RU5PTUVNOw0KPiA+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiA+IGEvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9tZWRpYXRlay92Y29kZWMvdmRlY19tc2dfcXVldWUuaA0KPiA+ID4gPiBiL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvdmNvZGVjL3ZkZWNfbXNnX3F1ZXVlLmgNCj4gPiA+ID4g aW5kZXggYzQzZDQyN2Y1ZjU0NC4uNTI1MTcwZTQxMWVlMCAxMDA2NDQNCj4gPiA+ID4gLS0tIGEv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvdmRlY19tc2dfcXVldWUuaA0K PiA+ID4gPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy92ZGVj X21zZ19xdWV1ZS5oDQo+ID4gPiA+IEBAIC00Miw2ICs0Miw4IEBAIHN0cnVjdCB2ZGVjX21zZ19x dWV1ZV9jdHggew0KPiA+ID4gPiAgICAqIHN0cnVjdCB2ZGVjX2xhdF9idWYgLSBsYXQgYnVmZmVy IG1lc3NhZ2UgdXNlZCB0byBzdG9yZSBsYXQNCj4gPiA+ID4gaW5mbyBmb3IgY29yZSBkZWNvZGUN Cj4gPiA+ID4gICAgKiBAd2RtYV9lcnJfYWRkcjogd2RtYSBlcnJvciBhZGRyZXNzIHVzZWQgZm9y IGxhdCBoYXJkd2FyZQ0KPiA+ID4gPiAgICAqIEBzbGljZV9iY19hZGRyOiBzbGljZSBiYyBhZGRy ZXNzIHVzZWQgZm9yIGxhdCBoYXJkd2FyZQ0KPiA+ID4gPiArICogQHJkX212X2FkZHI6bXYgYWRk ciBmb3IgYXYxIGxhdCBoYXJkd2FyZSBvdXRwdXQsIGNvcmUNCj4gPiA+ID4gaGFyZHdhcmUgaW5w dXQNCj4gPiA+ID4gKyAqIEB0aWxlX2FkZHI6dGlsZSBidWZmZXIgZm9yIGF2MSBjb3JlIGlucHV0 DQo+ID4gPiA+ICAgICogQHRzX2luZm86IG5lZWQgdG8gc2V0IHRpbWVzdGFtcCBmcm9tIG91dHB1 dCB0byBjYXB0dXJlDQo+ID4gPiA+ICAgICogQHNyY19idWZfcmVxOiBvdXRwdXQgYnVmZmVyIG1l ZGlhIHJlcXVlc3Qgb2JqZWN0DQo+ID4gPiA+ICAgICoNCj4gPiA+ID4gQEAgLTU0LDYgKzU2LDgg QEAgc3RydWN0IHZkZWNfbXNnX3F1ZXVlX2N0eCB7DQo+ID4gPiA+ICAgc3RydWN0IHZkZWNfbGF0 X2J1ZiB7DQo+ID4gPiA+ICAgc3RydWN0IG10a192Y29kZWNfbWVtIHdkbWFfZXJyX2FkZHI7DQo+ ID4gPiA+ICAgc3RydWN0IG10a192Y29kZWNfbWVtIHNsaWNlX2JjX2FkZHI7DQo+ID4gPiA+ICtz dHJ1Y3QgbXRrX3Zjb2RlY19tZW0gcmRfbXZfYWRkcjsNCj4gPiA+ID4gK3N0cnVjdCBtdGtfdmNv ZGVjX21lbSB0aWxlX2FkZHI7DQo+ID4gPiA+ICAgc3RydWN0IHZiMl92NGwyX2J1ZmZlciB0c19p bmZvOw0KPiA+ID4gPiAgIHN0cnVjdCBtZWRpYV9yZXF1ZXN0ICpzcmNfYnVmX3JlcTsNCj4gPiA+ ID4gICANCg==