Received: by 2002:a05:6359:6284:b0:131:369:b2a3 with SMTP id se4csp5504522rwb; Wed, 9 Aug 2023 05:22:36 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE0Y0RkOAIcgE/xWkUXvTVZNDhbC2spUhnsI1VbG5jZZxbZ91byI/d/5cRLZIUuB8ajU62H X-Received: by 2002:a9d:4f17:0:b0:6bd:836:4fca with SMTP id d23-20020a9d4f17000000b006bd08364fcamr2635395otl.6.1691583755768; Wed, 09 Aug 2023 05:22:35 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1691583755; cv=pass; d=google.com; s=arc-20160816; b=AwvGygyMVxr/89wPHC6239k8QY3PidQcecj195xyN5SEA+qnrZQxMiHL9d6YsWEP71 7EIo5u4ncQA3CkmsBvo8TpdiEbEuh5dCl8ssMqDtR/iHdOj35oxEiSc3gkrbI+yYzjY/ nz7TrI8isgLtd6DiNosw6epDQmxbcDeWKnBcGYVyz3hkX+gqLXhZsgslYLW0say7jcHJ QWM+fGDKR+MeaLmju+aHU9K7ZARUD4yAGoMLe6qYGpWVEC5+/O21/GJF9/Guv8NbY9EV 1iL2HyP1Ve2gNxvvW1VgxZnbGMHeHsMfty2Mgb/jOncWmaESGzOkF3RXB/IXoQwiz0oz Bhiw== 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:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:cc:to :from:dkim-signature; bh=Rj05Bik26JgRkVlqC7RdOKFdYtOP4Np1ST50ebX5yJs=; fh=jaIzQOXDvtR8dJcbzZuCDgkDqNsl3TI6O9bhOb5Ctgo=; b=x2FWoIxeO2fcPOALy6sybumyBsnHkysNXqeUcqAmnxTVDmAgH7oITrVTW6PhFelEp7 L7qn/1VpcjroD4oYUv2J3laWpJJpnAOj01rbr0pfqn8jXe9OAsduHSP1tGyeV41aihFN nFi105Tctv9wPOnDRI9iL8A/He3WyGiGov2M4Qe1KFJpMrV0DKl4YgOwirAUo4jr3pDW QQ03j3joxm3qq3ee9WCRhyzvLnF5eKH0/whxHD1TkNx3HA1S69Up4Si+OKc9GZAN8twM XLjYZRlnYKXPbK2lWbvYdJXI1YI8lDke+eH6Sy1NmiN4+aJ4uGjgkn+ouie09SVI2obJ ACaw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=GGCq4lrc; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.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=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a72-20020a63904b000000b00564bead481dsi8100049pge.40.2023.08.09.05.22.23; Wed, 09 Aug 2023 05:22:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=GGCq4lrc; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232095AbjHIMBg (ORCPT + 99 others); Wed, 9 Aug 2023 08:01:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43348 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229814AbjHIMBf (ORCPT ); Wed, 9 Aug 2023 08:01:35 -0400 Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8533010FE for ; Wed, 9 Aug 2023 05:01:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1691582494; x=1723118494; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=Rj05Bik26JgRkVlqC7RdOKFdYtOP4Np1ST50ebX5yJs=; b=GGCq4lrcb9IkOmgALQPVijqAH5MQmcwybQPXB2o1AB8OLzhDRNlAEvL7 fA+ED7HKm0fcii4lOVRufckVB+6X+W+h+nJpkhsC1dTXDXhKJH8daRTVN esESK1AdgQF8H00YCuBcbNJBXj44vLWHlfoQ3F1WDQxrpPDrWFMHVSPvW t6uUsWroTPl6KwwDMEYs0TpLsOA2gnjQt/zu1JeEoceQuJt7sJmZN6aF7 0nbdSW6GSUZBRqOt4Pxo6rCwwe4Kv4r2Ma2qztVXwYojH4+9TX649IeHt KfWk3sx5trBDtdiklBUlrkzABOKzoMIgEGQ3HVPwdX4k5+fNgzUuAOqK6 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10795"; a="374812815" X-IronPort-AV: E=Sophos;i="6.01,159,1684825200"; d="scan'208";a="374812815" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Aug 2023 05:01:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10795"; a="731784404" X-IronPort-AV: E=Sophos;i="6.01,159,1684825200"; d="scan'208";a="731784404" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga002.jf.intel.com with ESMTP; 09 Aug 2023 05:01:32 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Wed, 9 Aug 2023 05:01:31 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Wed, 9 Aug 2023 05:01:31 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.169) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.27; Wed, 9 Aug 2023 05:01:31 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FZm37SNjtNZl8cMtnYIn+1NXWkpGU48CVw/05E+xXNjI22wn6ury5FDWiHy0zcHjdVxCkdZz32nd+N0L7i8BnZYXUh33m8DwAK7hNaENMLvQEq+YqZLOhmp9UW7CbRO+a0pYS0ea+cv2U7+XP+HSTOHhCnugZmTTxiCVbY3gEvD91a/7NKjeVhdn/9wh7iaIdzP907DI+RQ30/6r7LInnygxkQdc+jVVh8fo6u3CtG/9XL6srwNlsjo1CGVOB294B04CLPtniaN/uiY5CPPOqAekesBIg7c+hX+bni7Msy8Wq3DDheGtkhIqww/TOohrE/2CnkwyxxxEmGoBAhoNQw== 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=Rj05Bik26JgRkVlqC7RdOKFdYtOP4Np1ST50ebX5yJs=; b=egxLnimg+KVd/44H/6eVFdOMDGFlw23rb11XAoeUmlgX6SoUhtYyhUWGr7EnPNRsL7P9mJYaWVjkHI+08Er+SJHNjmyq/rc3/JKoOxfBb2Tdh6humpOwEzNPQ1j8FPKWuXUntDTp4jz7+RgrdIBY+Fsi0Nlv2HRo25nXUVArGJbSTA1xik91/aMN6ascip5fD5KktDBq3bHNeZMh3KgAXWuYvjvm+xwug7Z1JHZA9UFRwUymhGyT19KuvTlble/EqwfKJlsMIIelU6WKz8MaZkVDbpeKGAoPIhtmpk6jVjWMizKUnaQF/de8jMJoW+omaAIXbBKQiefPGDbj6zsxZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SJ0PR11MB6622.namprd11.prod.outlook.com (2603:10b6:a03:478::6) by IA1PR11MB8248.namprd11.prod.outlook.com (2603:10b6:208:447::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.26; Wed, 9 Aug 2023 12:01:29 +0000 Received: from SJ0PR11MB6622.namprd11.prod.outlook.com ([fe80::a8a8:7f69:edc8:2d6b]) by SJ0PR11MB6622.namprd11.prod.outlook.com ([fe80::a8a8:7f69:edc8:2d6b%6]) with mapi id 15.20.6652.028; Wed, 9 Aug 2023 12:01:28 +0000 From: "Zhang, Rui" To: "tglx@linutronix.de" , "linux-kernel@vger.kernel.org" CC: "Gross, Jurgen" , "mikelley@microsoft.com" , "arjan@linux.intel.com" , "peterz@infradead.org" , "x86@kernel.org" , "thomas.lendacky@amd.com" , "wei.liu@kernel.org" , "pbonzini@redhat.com" , "andrew.cooper3@citrix.com" , "peter@keresztesschmidt.de" Subject: Re: [patch V3 45/60] x86/apic: Sanitize APID ID range validation Thread-Topic: [patch V3 45/60] x86/apic: Sanitize APID ID range validation Thread-Index: AQHZxGYYI3T9aYzZNkS9oCob6jE7D6/h6Z2A Date: Wed, 9 Aug 2023 12:01:28 +0000 Message-ID: <4c9761ad30351e5fb763da6e3c21ff2d2ac2ba3a.camel@intel.com> References: <20230801103042.936020332@linutronix.de> <20230801103817.624346203@linutronix.de> In-Reply-To: <20230801103817.624346203@linutronix.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu2 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ0PR11MB6622:EE_|IA1PR11MB8248:EE_ x-ms-office365-filtering-correlation-id: 630068e9-ecdf-4868-7216-08db98d05d4a x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: c1hjTvBgL97ZrpfK/QPzsJJsfceF11kEAE9FIiZlJABnAESglMyD2urjF2l8WmuGyszv/tGMATlM14fEiGag2FS/gHEyxY/MwQF/bwMVY6mdHeTpAs5sPUz3TcTgCXIidQJtmpkFYbOx2s3FacS+9DJLIb5UDEnoLEkuEm0pckk500xDsgFqzOyGuhM4S8o2ykenAhzkP0fLwfg2xhstZNY++P66S1AhvXun8zl6lYlyX5v1rI/Ep+Q0IAl/SI81zNcW0z5ieMGM8jsEZKyc2Fll0hlDTXTQsxesSIxcIz+Oqj0Wuwy98ONhr57ndEv17W3MW6eQcFyI8mlmZ0I6Rj5LADP2GOi5jTdbPVsiQCSCMSzT+ojzrfznvldaweAV8BX9thqgxmJlFp5EGIHC9yANSIUukjIfGlNEE9AYoXIK9Z6R3UZ5nQZ3OhAVaz2vyFQMtJO6qNGMWCqCAbx+21MNriNnJXXGa4jMxOxbw3QK+tN5FrC4Qa4iE/I+wmWpl2Vr446n4r94jF4tQojeH8Z8stWHET+vxqRJ+PawQlro7PdmGpZo+S6tTVJfPmokccsN+a3UsOjjZDtRnhZToeKqDv1Flc2hS6PBxRYznlaLDJvGPSZaqCoK63vdxt25 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR11MB6622.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(396003)(39860400002)(346002)(376002)(366004)(136003)(1800799006)(451199021)(186006)(2616005)(6512007)(36756003)(4326008)(316002)(122000001)(82960400001)(76116006)(38100700002)(6506007)(86362001)(66556008)(91956017)(478600001)(110136005)(66476007)(71200400001)(66446008)(66946007)(6486002)(54906003)(64756008)(26005)(38070700005)(41300700001)(8676002)(2906002)(8936002)(83380400001)(7416002)(5660300002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dzV1bzU2MmRGWWFxUHpCOE5UZENUamJtb1U0aUg3N2VKdTV4OTdhcWxQSWh6?= =?utf-8?B?c0p2RUdBNGlrcTl4RW1udE9WaUdVWHRuQWR1ZndZNG9tZ3dRTE5lVVNlWEZp?= =?utf-8?B?SW1TNUE5aGZIcHJRbVVRVVFUMWkvZEN5anU0ZFQ2RytnTW41ZHNORFJ6aXNw?= =?utf-8?B?dng4cHdGT0dKQlQzTnBSSDZCSEJ6enhqWExhaHVsL3BaenlmUE1CajJaRWZ4?= =?utf-8?B?WGZFM3c5RTJzdGVLQ01wcGgxMWZoTzV2Qkpjbkx2dW5aRXlidHA4Z2JoL3Bn?= =?utf-8?B?bjdzR1kxV2pIMENzR3Y3RnEySzM2UjhVaXBRaS84Z1BLSzkzcmFEbHUxTEZt?= =?utf-8?B?dkVPS3p3emRqWTE2RjUzbFZTSEtWbUJOZVFIUHBEd0tGS3dyRWpnV0c4TUpY?= =?utf-8?B?SEdRZUt2Q05qRXRGc29oQkV5OUdiQlV3YTErR2VrWVp4bXNmWHNjT1piNTcy?= =?utf-8?B?WU1ta3lDbzFxdmVSbXpnVnFwY2lRT0tSbGdDbnpBT1IxSkh1cWJpOFJKejBm?= =?utf-8?B?WHFON3N3Z25GYkhxR0VkVTdCcndXN2wrUWk3ZnVMODk2cldwS2FtREowTW5p?= =?utf-8?B?Y0ZqYmN6a211SEtKLzBSTHBGbHRuaDF5RmJGWTl4SE0yb3Yvazk5elhUZXNQ?= =?utf-8?B?V0w3MGRmVnk2YTJOQTBCcG1kV0FwYlZiVnhlM3JldVNnZGhod0xnOGJnalpF?= =?utf-8?B?TWQrbWZSM3lML0RvUG1IRytlTWtvZ1ZGVkRsanprcUE3RGwyUmZQd1Yydzky?= =?utf-8?B?dTVFeUlhWjYwMXEzdnBOTUsxejJWbjZRK2VlSUNoaFlXOTF1SzFFeC9NVWtx?= =?utf-8?B?c2pDZjdoazRKWnA0US91MWdNYnlqY2Y1blNDOHRGdjM3ak1FbVJlRXo5MWNl?= =?utf-8?B?TzRDZU04NnpteUJQaTV1L0VCRUdjVnBQd1B5U3lHdUM2azZueWJESExZaW9z?= =?utf-8?B?NkhNbTdMd3JzSVRkRWMxZHhsZFYvK1NKTzNaTTMyTmNUOGVURjFhOXBqbEp3?= =?utf-8?B?aVVpN1g1SGZnRHFpeHBCdWNLOHdncXNxaGZDRllzN2dMTDNwWDViWVVwRVJy?= =?utf-8?B?SmI5aUoyRGR1WHpsN28vby9Dd2ZiaUxHR05teUQxNkRNN0dDMkdxQWJTLytl?= =?utf-8?B?V0QzSU1xdlRVaTFFZnQ4UklqOVYvTzJlQ3pqcWt3Wkd2TzdCdW1aQmdnSlFJ?= =?utf-8?B?RDV4c0syTnFDRndKMWVMcEVEYzJ3a3JPZWlQZUdIUmNiazVweVlBUzlNVk9z?= =?utf-8?B?N3ZFUkFNZmhFSGxyakdXZkZiUDZGcjFSQkJsY1VzKzllNUhpV2oxOHlsL2dS?= =?utf-8?B?NmhYQk5qQmVMbUFMeldEeittYVJXL285eTIyMzdjTjhEQ2wwVm5ySVZiT1Yv?= =?utf-8?B?SkVkMGJxM2FpSkpUNjJBQTZucksyWmdJY2JRMEdBT1U4SDhoTlZEY0M3d0ZU?= =?utf-8?B?ZFdZM09LeHE3WENKQzAralBrQk9xc2tPYUZqc0pJWmUyR0ZJTEhqVkN2RHc3?= =?utf-8?B?Wmp6RzBHcjViMHFhTGtZM2hhOE9IbmErYVhrQWFFYWYrdTFlS0ZweHM3Rk9R?= =?utf-8?B?Q1E4L1ZUTDQvd0JNRW4yaXAwV1dLTXNYZC92dWptaklUcXJlQUJ5YjU0NzdI?= =?utf-8?B?dDVKRnc3bWQyV0I3RXExK25jdjdkangzbS9sMUQxZFRtRUFxSCs3b3NOWm1o?= =?utf-8?B?MG5ySTBuL2pJT1ZNWmZSb05PeHJKd0FSNWpYRlFjL2llNm0rdnQraUduZnky?= =?utf-8?B?Z3k0Tlh0cGQwWmZJRnVxQ3lLczNORUNTMUJUSlZSUzJkWTBFNkFid3BseEhw?= =?utf-8?B?TGRmbllpQk9UeHFRelpObVlCMFJBN1JrRGoxZDVXV04vcWNzZDVmRW5LUmJY?= =?utf-8?B?SDBEbGVteXpMU2Z4cTIyd1JlMGFVQno5a2gyUWJWZDVCK2ZrYm9ZZkcyK2ly?= =?utf-8?B?aStsbTJlRW9aSGduMGY5QXR5RUpVV2ZmK1E3WG5CV3Q0dlluZXBhQ1VodGJk?= =?utf-8?B?OU5hbUdOVlFUZGZvU3B6SDJydHBGQXZwY2swb2VwVVE4dzNpREQ2aDdMR29J?= =?utf-8?B?NnBGaEJmWGNhWUJWSnF3VVRsZjh5Rm1MelkybjY2bDZYQVJJVEZsYSs1aHFi?= =?utf-8?Q?OgiiK7a4ltwW9Lf4CQjBlwRvT?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB6622.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 630068e9-ecdf-4868-7216-08db98d05d4a X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Aug 2023 12:01:28.8745 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: LC4dBFQs++oanrCbrXil53UKmfY/jkGHfAZ2060QiY0hPiXyKAlhcbDcLN88jHbXNb1gIMpHvfFQDmLiME8emQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR11MB8248 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGksIFRob21hcywKCmluIHRoZSBzdWJqZWN0CnMvQVBJRC9BUElDCgp0aGFua3MsCnJ1aQoKT24g VHVlLCAyMDIzLTA4LTAxIGF0IDEyOjQ3ICswMjAwLCBUaG9tYXMgR2xlaXhuZXIgd3JvdGU6Cj4g Tm93IHRoYXQgZXZlcnl0aGluZyBoYXMgYXBpYzo6bWF4X2FwaWNfaWQgc2V0IGFuZCB0aGUgZXZl bnR1YWwgdXBkYXRlCj4gZm9yCj4gdGhlIHgyQVBJQyBjYXNlIGlzIGluIHBsYWNlLCBzd2l0Y2gg dGhlIGFwaWNfaWRfdmFsaWQoKSBoZWxwZXIgdG8gdXNlCj4gYXBpYzo6bWF4X2FwaWNfaWQgYW5k IHJlbW92ZSB0aGUgYXBpYzo6YXBpY19pZF92YWxpZCgpIGNhbGxiYWNrLgo+IAo+IFNpZ25lZC1v ZmYtYnk6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgo+IEFja2VkLWJ5OiBQ ZXRlciBaaWpsc3RyYSAoSW50ZWwpIDxwZXRlcnpAaW5mcmFkZWFkLm9yZz4KPiAtLS0KPiDCoGFy Y2gveDg2L2luY2x1ZGUvYXNtL2FwaWMuaMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqAgMyAr LS0KPiDCoGFyY2gveDg2L2tlcm5lbC9hcGljL2FwaWNfY29tbW9uLmPCoMKgwqAgfMKgwqDCoCA1 IC0tLS0tCj4gwqBhcmNoL3g4Ni9rZXJuZWwvYXBpYy9hcGljX2ZsYXRfNjQuY8KgwqAgfMKgwqDC oCAyIC0tCj4gwqBhcmNoL3g4Ni9rZXJuZWwvYXBpYy9hcGljX25vb3AuY8KgwqDCoMKgwqAgfMKg wqDCoCAyIC0tCj4gwqBhcmNoL3g4Ni9rZXJuZWwvYXBpYy9hcGljX251bWFjaGlwLmPCoCB8wqDC oMKgIDggLS0tLS0tLS0KPiDCoGFyY2gveDg2L2tlcm5lbC9hcGljL2JpZ3NtcF8zMi5jwqDCoMKg wqDCoCB8wqDCoMKgIDEgLQo+IMKgYXJjaC94ODYva2VybmVsL2FwaWMvbG9jYWwuaMKgwqDCoMKg wqDCoMKgwqDCoCB8wqDCoMKgIDEgLQo+IMKgYXJjaC94ODYva2VybmVsL2FwaWMvcHJvYmVfMzIu Y8KgwqDCoMKgwqDCoCB8wqDCoMKgIDEgLQo+IMKgYXJjaC94ODYva2VybmVsL2FwaWMveDJhcGlj X2NsdXN0ZXIuYyB8wqDCoMKgIDEgLQo+IMKgYXJjaC94ODYva2VybmVsL2FwaWMveDJhcGljX3Bo eXMuY8KgwqDCoCB8wqDCoMKgIDcgLS0tLS0tLQo+IMKgYXJjaC94ODYva2VybmVsL2FwaWMveDJh cGljX3V2X3guY8KgwqDCoCB8wqDCoMKgIDYgLS0tLS0tCj4gwqBhcmNoL3g4Ni94ZW4vYXBpYy5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqAgNiAtLS0tLS0KPiDC oDEyIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA0MiBkZWxldGlvbnMoLSkKPiAKPiAt LS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgKPiArKysgYi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9hcGljLmgKPiBAQCAtMjg0LDcgKzI4NCw2IEBAIHN0cnVjdCBhcGljIHsKPiDCoMKgwqDC oMKgwqDCoMKgLyogUHJvYmUsIHNldHVwIGFuZCBzbXBib290IGZ1bmN0aW9ucyAqLwo+IMKgwqDC oMKgwqDCoMKgwqBpbnTCoMKgwqDCoMKgKCpwcm9iZSkodm9pZCk7Cj4gwqDCoMKgwqDCoMKgwqDC oGludMKgwqDCoMKgwqAoKmFjcGlfbWFkdF9vZW1fY2hlY2spKGNoYXIgKm9lbV9pZCwgY2hhcgo+ ICpvZW1fdGFibGVfaWQpOwo+IC3CoMKgwqDCoMKgwqDCoGludMKgwqDCoMKgwqAoKmFwaWNfaWRf dmFsaWQpKHUzMiBhcGljaWQpOwo+IMKgwqDCoMKgwqDCoMKgwqBib29swqDCoMKgwqAoKmFwaWNf aWRfcmVnaXN0ZXJlZCkodm9pZCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgYm9vbMKgwqDCoMKg KCpjaGVja19hcGljaWRfdXNlZCkocGh5c2lkX21hc2tfdCAqbWFwLCBpbnQgYXBpY2lkKTsKPiBA QCAtMzc4LDcgKzM3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdTMyIHNhZmVfYXBpY193YWl0X2ljcl9p ZGwKPiDCoAo+IMKgc3RhdGljIGlubGluZSBib29sIGFwaWNfaWRfdmFsaWQodTMyIGFwaWNfaWQp Cj4gwqB7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIGFwaWMtPmFwaWNfaWRfdmFsaWQoYXBpY19p ZCk7Cj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIGFwaWNfaWQgPD0gYXBpYy0+bWF4X2FwaWNfaWQ7 Cj4gwqB9Cj4gwqAKPiDCoGV4dGVybiB2b2lkIF9faW5pdCBhcGljX3NldF9lb2lfd3JpdGUodm9p ZCAoKmVvaV93cml0ZSkodTMyIHJlZywgdTMyCj4gdikpOwo+IC0tLSBhL2FyY2gveDg2L2tlcm5l bC9hcGljL2FwaWNfY29tbW9uLmMKPiArKysgYi9hcmNoL3g4Ni9rZXJuZWwvYXBpYy9hcGljX2Nv bW1vbi5jCj4gQEAgLTM3LDExICszNyw2IEBAIGludCBkZWZhdWx0X2NwdV9wcmVzZW50X3RvX2Fw aWNpZChpbnQgbXAKPiDCoH0KPiDCoEVYUE9SVF9TWU1CT0xfR1BMKGRlZmF1bHRfY3B1X3ByZXNl bnRfdG9fYXBpY2lkKTsKPiDCoAo+IC1pbnQgZGVmYXVsdF9hcGljX2lkX3ZhbGlkKHUzMiBhcGlj aWQpCj4gLXsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gKGFwaWNpZCA8IDI1NSk7Cj4gLX0KPiAt Cj4gwqBib29sIGRlZmF1bHRfYXBpY19pZF9yZWdpc3RlcmVkKHZvaWQpCj4gwqB7Cj4gwqDCoMKg wqDCoMKgwqDCoHJldHVybiBwaHlzaWRfaXNzZXQocmVhZF9hcGljX2lkKCksIHBoeXNfY3B1X3By ZXNlbnRfbWFwKTsKPiAtLS0gYS9hcmNoL3g4Ni9rZXJuZWwvYXBpYy9hcGljX2ZsYXRfNjQuYwo+ ICsrKyBiL2FyY2gveDg2L2tlcm5lbC9hcGljL2FwaWNfZmxhdF82NC5jCj4gQEAgLTgwLDcgKzgw LDYgQEAgc3RhdGljIHN0cnVjdCBhcGljIGFwaWNfZmxhdCBfX3JvX2FmdGVyXwo+IMKgwqDCoMKg wqDCoMKgwqAubmFtZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoD0gImZsYXQiLAo+IMKgwqDCoMKgwqDCoMKgwqAucHJvYmXCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSBmbGF0X3Byb2JlLAo+IMKg wqDCoMKgwqDCoMKgwqAuYWNwaV9tYWR0X29lbV9jaGVja8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oD0gZmxhdF9hY3BpX21hZHRfb2VtX2NoZWNrLAo+IC3CoMKgwqDCoMKgwqDCoC5hcGljX2lkX3Zh bGlkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSBkZWZhdWx0X2FwaWNfaWRf dmFsaWQsCj4gwqDCoMKgwqDCoMKgwqDCoC5hcGljX2lkX3JlZ2lzdGVyZWTCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoD0gZGVmYXVsdF9hcGljX2lkX3JlZ2lzdGVyZWQsCj4gwqAKPiDCoMKgwqDC oMKgwqDCoMKgLmRlbGl2ZXJ5X21vZGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqA9IEFQSUNfREVMSVZFUllfTU9ERV9GSVhFRCwKPiBAQCAtMTU4LDcgKzE1Nyw2IEBAIHN0YXRp YyBzdHJ1Y3QgYXBpYyBhcGljX3BoeXNmbGF0IF9fcm9fYWYKPiDCoMKgwqDCoMKgwqDCoMKgLm5h bWXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9 ICJwaHlzaWNhbCBmbGF0IiwKPiDCoMKgwqDCoMKgwqDCoMKgLnByb2JlwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gcGh5c2ZsYXRfcHJvYmUsCj4g wqDCoMKgwqDCoMKgwqDCoC5hY3BpX21hZHRfb2VtX2NoZWNrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgPQo+IHBoeXNmbGF0X2FjcGlfbWFkdF9vZW1fY2hlY2ssCj4gLcKgwqDCoMKgwqDCoMKgLmFw aWNfaWRfdmFsaWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IGRlZmF1bHRf YXBpY19pZF92YWxpZCwKPiDCoMKgwqDCoMKgwqDCoMKgLmFwaWNfaWRfcmVnaXN0ZXJlZMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgPSBkZWZhdWx0X2FwaWNfaWRfcmVnaXN0ZXJlZCwKPiDCoAo+ IMKgwqDCoMKgwqDCoMKgwqAuZGVsaXZlcnlfbW9kZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoD0gQVBJQ19ERUxJVkVSWV9NT0RFX0ZJWEVELAo+IC0tLSBhL2FyY2gveDg2L2tl cm5lbC9hcGljL2FwaWNfbm9vcC5jCj4gKysrIGIvYXJjaC94ODYva2VybmVsL2FwaWMvYXBpY19u b29wLmMKPiBAQCAtNjcsOCArNjcsNiBAQCBzdHJ1Y3QgYXBpYyBhcGljX25vb3AgX19yb19hZnRl cl9pbml0ID0KPiDCoMKgwqDCoMKgwqDCoMKgLnByb2JlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gbm9vcF9wcm9iZSwKPiDCoMKgwqDCoMKgwqDC oMKgLmFjcGlfbWFkdF9vZW1fY2hlY2vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IE5VTEwsCj4g wqAKPiAtwqDCoMKgwqDCoMKgwqAuYXBpY19pZF92YWxpZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoD0gZGVmYXVsdF9hcGljX2lkX3ZhbGlkLAo+IC0KPiDCoMKgwqDCoMKgwqDC oMKgLmRlbGl2ZXJ5X21vZGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IEFQ SUNfREVMSVZFUllfTU9ERV9GSVhFRCwKPiDCoMKgwqDCoMKgwqDCoMKgLmRlc3RfbW9kZV9sb2dp Y2FswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gdHJ1ZSwKPiDCoAo+IC0tLSBhL2FyY2gv eDg2L2tlcm5lbC9hcGljL2FwaWNfbnVtYWNoaXAuYwo+ICsrKyBiL2FyY2gveDg2L2tlcm5lbC9h cGljL2FwaWNfbnVtYWNoaXAuYwo+IEBAIC01NiwxMiArNTYsNiBAQCBzdGF0aWMgdTMyIG51bWFj aGlwMl9zZXRfYXBpY19pZCh1bnNpZ25lCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBpZCA8PCAy NDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG51bWFjaGlwX2FwaWNfaWRfdmFsaWQodTMyIGFw aWNpZCkKPiAtewo+IC3CoMKgwqDCoMKgwqDCoC8qIFRydXN0IHdoYXQgYm9vdGxvYWRlciBwYXNz ZXMgaW4gTUFEVCAqLwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAxOwo+IC19Cj4gLQo+IMKgc3Rh dGljIGludCBudW1hY2hpcF9waHlzX3BrZ19pZChpbnQgaW5pdGlhbF9hcGljX2lkLCBpbnQgaW5k ZXhfbXNiKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gaW5pdGlhbF9hcGljX2lkID4+ IGluZGV4X21zYjsKPiBAQCAtMjI3LDcgKzIyMSw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXBp YyBhcGljX251bWFjaGlwMQo+IMKgwqDCoMKgwqDCoMKgwqAubmFtZcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gIk51bWFDb25uZWN0IHN5c3Rl bSIsCj4gwqDCoMKgwqDCoMKgwqDCoC5wcm9iZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IG51bWFjaGlwMV9wcm9iZSwKPiDCoMKgwqDCoMKgwqDC oMKgLmFjcGlfbWFkdF9vZW1fY2hlY2vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9Cj4gbnVtYWNo aXAxX2FjcGlfbWFkdF9vZW1fY2hlY2ssCj4gLcKgwqDCoMKgwqDCoMKgLmFwaWNfaWRfdmFsaWTC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IG51bWFjaGlwX2FwaWNfaWRfdmFs aWQsCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgLmRlbGl2ZXJ5X21vZGXCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqA9IEFQSUNfREVMSVZFUllfTU9ERV9GSVhFRCwKPiDCoMKgwqDC oMKgwqDCoMKgLmRlc3RfbW9kZV9sb2dpY2FswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0g ZmFsc2UsCj4gQEAgLTI2Nyw3ICsyNjAsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFwaWMgYXBp Y19udW1hY2hpcDIKPiDCoMKgwqDCoMKgwqDCoMKgLm5hbWXCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9ICJOdW1hQ29ubmVjdDIgc3lzdGVtIiwK PiDCoMKgwqDCoMKgwqDCoMKgLnByb2JlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoD0gbnVtYWNoaXAyX3Byb2JlLAo+IMKgwqDCoMKgwqDCoMKgwqAu YWNwaV9tYWR0X29lbV9jaGVja8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0KPiBudW1hY2hpcDJf YWNwaV9tYWR0X29lbV9jaGVjaywKPiAtwqDCoMKgwqDCoMKgwqAuYXBpY19pZF92YWxpZMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gbnVtYWNoaXBfYXBpY19pZF92YWxpZCwK PiDCoAo+IMKgwqDCoMKgwqDCoMKgwqAuZGVsaXZlcnlfbW9kZcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoD0gQVBJQ19ERUxJVkVSWV9NT0RFX0ZJWEVELAo+IMKgwqDCoMKgwqDC oMKgwqAuZGVzdF9tb2RlX2xvZ2ljYWzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSBmYWxz ZSwKPiAtLS0gYS9hcmNoL3g4Ni9rZXJuZWwvYXBpYy9iaWdzbXBfMzIuYwo+ICsrKyBiL2FyY2gv eDg2L2tlcm5lbC9hcGljL2JpZ3NtcF8zMi5jCj4gQEAgLTc5LDcgKzc5LDYgQEAgc3RhdGljIHN0 cnVjdCBhcGljIGFwaWNfYmlnc21wIF9fcm9fYWZ0ZQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoC5u YW1lwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg PSAiYmlnc21wIiwKPiDCoMKgwqDCoMKgwqDCoMKgLnByb2JlwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gcHJvYmVfYmlnc21wLAo+IC3CoMKgwqDC oMKgwqDCoC5hcGljX2lkX3ZhbGlkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg PSBkZWZhdWx0X2FwaWNfaWRfdmFsaWQsCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgLmRlbGl2ZXJ5 X21vZGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IEFQSUNfREVMSVZFUllf TU9ERV9GSVhFRCwKPiDCoMKgwqDCoMKgwqDCoMKgLmRlc3RfbW9kZV9sb2dpY2FswqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoD0gZmFsc2UsCj4gLS0tIGEvYXJjaC94ODYva2VybmVsL2FwaWMv bG9jYWwuaAo+ICsrKyBiL2FyY2gveDg2L2tlcm5lbC9hcGljL2xvY2FsLmgKPiBAQCAtMTQsNyAr MTQsNiBAQAo+IMKgI2luY2x1ZGUgPGFzbS9hcGljLmg+Cj4gwqAKPiDCoC8qIFgyQVBJQyAqLwo+ IC1pbnQgeDJhcGljX2FwaWNfaWRfdmFsaWQodTMyIGFwaWNpZCk7Cj4gwqB2b2lkIF9feDJhcGlj X3NlbmRfSVBJX2Rlc3QodW5zaWduZWQgaW50IGFwaWNpZCwgaW50IHZlY3RvciwKPiB1bnNpZ25l ZCBpbnQgZGVzdCk7Cj4gwqB1bnNpZ25lZCBpbnQgeDJhcGljX2dldF9hcGljX2lkKHVuc2lnbmVk IGxvbmcgaWQpOwo+IMKgdTMyIHgyYXBpY19zZXRfYXBpY19pZCh1bnNpZ25lZCBpbnQgaWQpOwo+ IC0tLSBhL2FyY2gveDg2L2tlcm5lbC9hcGljL3Byb2JlXzMyLmMKPiArKysgYi9hcmNoL3g4Ni9r ZXJuZWwvYXBpYy9wcm9iZV8zMi5jCj4gQEAgLTMzLDcgKzMzLDYgQEAgc3RhdGljIHN0cnVjdCBh cGljIGFwaWNfZGVmYXVsdCBfX3JvX2FmdAo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoC5uYW1lwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSAiZGVm YXVsdCIsCj4gwqDCoMKgwqDCoMKgwqDCoC5wcm9iZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IHByb2JlX2RlZmF1bHQsCj4gLcKgwqDCoMKgwqDC oMKgLmFwaWNfaWRfdmFsaWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IGRl ZmF1bHRfYXBpY19pZF92YWxpZCwKPiDCoMKgwqDCoMKgwqDCoMKgLmFwaWNfaWRfcmVnaXN0ZXJl ZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSBkZWZhdWx0X2FwaWNfaWRfcmVnaXN0ZXJlZCwK PiDCoAo+IMKgwqDCoMKgwqDCoMKgwqAuZGVsaXZlcnlfbW9kZcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoD0gQVBJQ19ERUxJVkVSWV9NT0RFX0ZJWEVELAo+IC0tLSBhL2FyY2gv eDg2L2tlcm5lbC9hcGljL3gyYXBpY19jbHVzdGVyLmMKPiArKysgYi9hcmNoL3g4Ni9rZXJuZWwv YXBpYy94MmFwaWNfY2x1c3Rlci5jCj4gQEAgLTIyNiw3ICsyMjYsNiBAQCBzdGF0aWMgc3RydWN0 IGFwaWMgYXBpY194MmFwaWNfY2x1c3RlciBfCj4gwqDCoMKgwqDCoMKgwqDCoC5uYW1lwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSAiY2x1c3Rl ciB4MmFwaWMiLAo+IMKgwqDCoMKgwqDCoMKgwqAucHJvYmXCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSB4MmFwaWNfY2x1c3Rlcl9wcm9iZSwKPiDC oMKgwqDCoMKgwqDCoMKgLmFjcGlfbWFkdF9vZW1fY2hlY2vCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqA9IHgyYXBpY19hY3BpX21hZHRfb2VtX2NoZWNrLAo+IC3CoMKgwqDCoMKgwqDCoC5hcGljX2lk X3ZhbGlkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSB4MmFwaWNfYXBpY19p ZF92YWxpZCwKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqAuZGVsaXZlcnlfbW9kZcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gQVBJQ19ERUxJVkVSWV9NT0RFX0ZJWEVELAo+IMKg wqDCoMKgwqDCoMKgwqAuZGVzdF9tb2RlX2xvZ2ljYWzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgPSB0cnVlLAo+IC0tLSBhL2FyY2gveDg2L2tlcm5lbC9hcGljL3gyYXBpY19waHlzLmMKPiAr KysgYi9hcmNoL3g4Ni9rZXJuZWwvYXBpYy94MmFwaWNfcGh5cy5jCj4gQEAgLTEyNCwxMiArMTI0 LDYgQEAgc3RhdGljIGludCB4MmFwaWNfcGh5c19wcm9iZSh2b2lkKQo+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gYXBpYyA9PSAmYXBpY194MmFwaWNfcGh5czsKPiDCoH0KPiDCoAo+IC0vKiBDb21t b24geDJhcGljIGZ1bmN0aW9ucywgYWxzbyB1c2VkIGJ5IHgyYXBpY19jbHVzdGVyICovCj4gLWlu dCB4MmFwaWNfYXBpY19pZF92YWxpZCh1MzIgYXBpY2lkKQo+IC17Cj4gLcKgwqDCoMKgwqDCoMKg cmV0dXJuIGFwaWNpZCA8PSB4MmFwaWNfbWF4X2FwaWNpZDsKPiAtfQo+IC0KPiDCoHVuc2lnbmVk IGludCB4MmFwaWNfZ2V0X2FwaWNfaWQodW5zaWduZWQgbG9uZyBpZCkKPiDCoHsKPiDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIGlkOwo+IEBAIC0xNTAsNyArMTQ0LDYgQEAgc3RhdGljIHN0cnVjdCBh cGljIGFwaWNfeDJhcGljX3BoeXMgX19ybwo+IMKgwqDCoMKgwqDCoMKgwqAubmFtZcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gInBoeXNpY2Fs IHgyYXBpYyIsCj4gwqDCoMKgwqDCoMKgwqDCoC5wcm9iZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IHgyYXBpY19waHlzX3Byb2JlLAo+IMKgwqDC oMKgwqDCoMKgwqAuYWNwaV9tYWR0X29lbV9jaGVja8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0g eDJhcGljX2FjcGlfbWFkdF9vZW1fY2hlY2ssCj4gLcKgwqDCoMKgwqDCoMKgLmFwaWNfaWRfdmFs aWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IHgyYXBpY19hcGljX2lkX3Zh bGlkLAo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoC5kZWxpdmVyeV9tb2RlwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgPSBBUElDX0RFTElWRVJZX01PREVfRklYRUQsCj4gwqDCoMKg wqDCoMKgwqDCoC5kZXN0X21vZGVfbG9naWNhbMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9 IGZhbHNlLAo+IC0tLSBhL2FyY2gveDg2L2tlcm5lbC9hcGljL3gyYXBpY191dl94LmMKPiArKysg Yi9hcmNoL3g4Ni9rZXJuZWwvYXBpYy94MmFwaWNfdXZfeC5jCj4gQEAgLTc4MCwxMSArNzgwLDYg QEAgc3RhdGljIHZvaWQgdXZfc2VuZF9JUElfYWxsKGludCB2ZWN0b3IpCj4gwqDCoMKgwqDCoMKg wqDCoHV2X3NlbmRfSVBJX21hc2soY3B1X29ubGluZV9tYXNrLCB2ZWN0b3IpOwo+IMKgfQo+IMKg Cj4gLXN0YXRpYyBpbnQgdXZfYXBpY19pZF92YWxpZCh1MzIgYXBpY2lkKQo+IC17Cj4gLcKgwqDC oMKgwqDCoMKgcmV0dXJuIDE7Cj4gLX0KPiAtCj4gwqBzdGF0aWMgdTMyIHNldF9hcGljX2lkKHVu c2lnbmVkIGludCBpZCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGlkOwo+IEBAIC04 MTAsNyArODA1LDYgQEAgc3RhdGljIHN0cnVjdCBhcGljIGFwaWNfeDJhcGljX3V2X3ggX19ybwo+ IMKgwqDCoMKgwqDCoMKgwqAubmFtZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoD0gIlVWIGxhcmdlIHN5c3RlbSIsCj4gwqDCoMKgwqDCoMKgwqDC oC5wcm9iZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqA9IHV2X3Byb2JlLAo+IMKgwqDCoMKgwqDCoMKgwqAuYWNwaV9tYWR0X29lbV9jaGVja8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoD0gdXZfYWNwaV9tYWR0X29lbV9jaGVjaywKPiAtwqDCoMKgwqDC oMKgwqAuYXBpY19pZF92YWxpZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0g dXZfYXBpY19pZF92YWxpZCwKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqAuZGVsaXZlcnlfbW9kZcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gQVBJQ19ERUxJVkVSWV9NT0RFX0ZJ WEVELAo+IMKgwqDCoMKgwqDCoMKgwqAuZGVzdF9tb2RlX2xvZ2ljYWzCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgPSBmYWxzZSwKPiAtLS0gYS9hcmNoL3g4Ni94ZW4vYXBpYy5jCj4gKysrIGIv YXJjaC94ODYveGVuL2FwaWMuYwo+IEBAIC0xMDUsMTEgKzEwNSw2IEBAIHN0YXRpYyBpbnQgeGVu X21hZHRfb2VtX2NoZWNrKGNoYXIgKm9lbV8KPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHhlbl9w dl9kb21haW4oKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHhlbl9pZF9hbHdheXNfdmFsaWQo dTMyIGFwaWNpZCkKPiAtewo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAxOwo+IC19Cj4gLQo+IMKg c3RhdGljIGludCB4ZW5fcGh5c19wa2dfaWQoaW50IGluaXRpYWxfYXBpY19pZCwgaW50IGluZGV4 X21zYikKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGluaXRpYWxfYXBpY19pZCA+PiBp bmRleF9tc2I7Cj4gQEAgLTEyNyw3ICsxMjIsNiBAQCBzdGF0aWMgc3RydWN0IGFwaWMgeGVuX3B2 X2FwaWMgPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoC5uYW1lwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSAiWGVuIFBWIiwKPiDCoMKgwqDCoMKgwqDC oMKgLnByb2JlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoD0geGVuX2FwaWNfcHJvYmVfcHYsCj4gwqDCoMKgwqDCoMKgwqDCoC5hY3BpX21hZHRfb2Vt X2NoZWNrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSB4ZW5fbWFkdF9vZW1fY2hlY2ssCj4gLcKg wqDCoMKgwqDCoMKgLmFwaWNfaWRfdmFsaWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqA9IHhlbl9pZF9hbHdheXNfdmFsaWQsCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgLyogLmRl bGl2ZXJ5X21vZGUgYW5kIC5kZXN0X21vZGVfbG9naWNhbCBub3QgdXNlZCBieSBYRU5QViAqLwo+ IMKgCj4gCgo=