From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by sourceware.org (Postfix) with ESMTPS id CF66C3835E01 for ; Mon, 29 May 2023 10:26:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CF66C3835E01 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685356003; x=1716892003; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=5GSkF7QP1/Ej4kqnznLKM6+vQrlmpC1cP67nm2TFD9o=; b=W/gxirQOvi/2C5ETNOo8rdrP59A6r4PssZgT2Ua+PfGF/P/0ZqXrLpgc UsgiIg6Mc4uAHuJdq4bJ36tIktUWdvY5H4/SQzpdl+58w2ljW/eHTcs7N TXfYNn/6R4oumV43Q/5qOYkeB/Ub7bHdh/ECrESJeV5QPrlDVJQZV9Oft adC/CLFWo3PyVJtz5B5Bg08V9jNMD+OtzDbiRQAj4jXKKAJjkTMkoGl69 fZsBMgNRhVPLplqG+zHtdPj+BFCNYWVHZMrqoM7vGYW8/6s1yiUL/KVJJ cV/6MVTnRtwZuizR42gj/dDgbi9lTrMqkg/DZfclqY2LpdISFutzrkVZS w==; X-IronPort-AV: E=McAfee;i="6600,9927,10724"; a="353519996" X-IronPort-AV: E=Sophos;i="6.00,201,1681196400"; d="scan'208";a="353519996" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 May 2023 03:26:42 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10724"; a="739107325" X-IronPort-AV: E=Sophos;i="6.00,201,1681196400"; d="scan'208";a="739107325" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga001.jf.intel.com with ESMTP; 29 May 2023 03:26:39 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Mon, 29 May 2023 03:26:38 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Mon, 29 May 2023 03:26:38 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.49) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Mon, 29 May 2023 03:26:38 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O/f+dEoSw4jgvLRy4aT0rorUQTQl9AsbbhM27F3xo+vrKGVQhF3JAZ78DGOB2kwb9nzIZlDzp/chKlX8V+oflsIvwTJJgzPXRyFPDGU1LqA+EmNZta+XEVkfovqJQX864hqPuAzFEwNlAinmzF/Y828qYFjJlSDbSz5yyUDW5ClKxFzjvCRdWMwZgv0KIfa1RruU1Ff19iZy8eE6FX8yFSWsjyEDhWO2kK2694dz5emgI/4nOfNYMtuuGbrgADHcK6hC10ELPsQ8xZmFmuAk+k7G1HzWYjhNpntVlnV/wsIZYMAeqs+bguWgr/nbh42L7z1QtoY3QMWuNuFhyzvIQA== 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=5GSkF7QP1/Ej4kqnznLKM6+vQrlmpC1cP67nm2TFD9o=; b=Uc6K1h11kX/gdWN2E9YO0snyhzlyTEhdyL9JZThct29afKQ/+qZRuAOFEUvlARXRauJjUu770YxoSxVPRNR+63jQMEChgPl+VRItIGvvfwdhNucMgq95Q0kc4BXS5girsqnaS8lx6Ss5eF2w2B+0GjRvG1gwKq00cZJHpgvo7MHsxIUbMdJbEQYG0i4qSUFckg6dQ0mUY0PIg3rBqtirMKuArvyLjG7KoDiBqSpfCsyN5L7LCRtotx8W56LTI5hJ21XJ/zkPP997Mb+0oqj0jYkjtBOYxjcLIEmxNAipROWgs/oSrxFyHCGHCCTGZKB2G0s8qkTodub/KrCzfA5Jqg== 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 MW5PR11MB5908.namprd11.prod.outlook.com (2603:10b6:303:194::10) by CO1PR11MB4817.namprd11.prod.outlook.com (2603:10b6:303:98::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.23; Mon, 29 May 2023 10:26:36 +0000 Received: from MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::720:4293:3c39:acd9]) by MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::720:4293:3c39:acd9%6]) with mapi id 15.20.6433.020; Mon, 29 May 2023 10:26:36 +0000 From: "Li, Pan2" To: Kito Cheng CC: "gcc-patches@gcc.gnu.org" , "juzhe.zhong@rivai.ai" , "kito.cheng@sifive.com" , "Wang, Yanzhang" Subject: RE: [PATCH v7] RISC-V: Using merge approach to optimize repeating sequence in vec_init Thread-Topic: [PATCH v7] RISC-V: Using merge approach to optimize repeating sequence in vec_init Thread-Index: AQHZkgiQfZFPQ+I6yEGBCgw+0II6S69w/PwAgAAO/OA= Date: Mon, 29 May 2023 10:26:36 +0000 Message-ID: References: <20230525030920.2569553-1-pan2.li@intel.com> <20230529083530.495654-1-pan2.li@intel.com> In-Reply-To: Accept-Language: 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=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW5PR11MB5908:EE_|CO1PR11MB4817:EE_ x-ms-office365-filtering-correlation-id: 21dce15d-8d33-4863-266c-08db602f2e9a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: FBFObbvGNcLdIzlTMNpxCQa0x3uXym9/42O5PBbEhInzS+84AkghFcQ6LOeltzI6beGiSizQqVP7b4xVc9j/qIqW82YpdS0TepW6SCRlNooa+hLv+WROxl12CH+JrqseeByD9NmpXJeTBOaZ176VqgnhXCw/m4c/8bbFBdtvBVHAzU3v+M+AARbr6P1zQzQsS9gkQ4Wb8INxa8aHz0YQ41BAnlEmsP6IknKRBQRLbx7clGLzw3WGySNS5sVoCDck13wKccLLB49MgQNQwpXeocfB3Xyxa9po5Xk/qL59K8nxA6Ik2wNIRjMotV++Ga99Z50UwmqXfsoTR5xIMRvlX8Xhcle1ylCwecOdPzU3D1gIuFDCWgMOhU/kzHa9bwX5cJtota8nvaBlUqBaJ5fkpcOvGsfwMdssgQa86QtJoalx32XRMKvI1x+++L9vo2TGSmJwL/Bj6RZrGySfY8KnhBnehKf/R8n9qKEGNQKpyxf9ThEnnJ5O81soTCJ7Q90nkkBmc8ciSzHtRqsIWFgyIJWxWvQreD3QTcbovVLuJhtZTVDras/M3/6Sx8oz/G5ZxOJlCwk+d1vWUf3ywJWI8wZm1vg9bphrL5NIsGL6C1qbA8n1MRksiY6U+1fbLgOg x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW5PR11MB5908.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(396003)(376002)(346002)(39850400004)(366004)(451199021)(478600001)(83380400001)(55016003)(5660300002)(186003)(33656002)(71200400001)(6916009)(4326008)(52536014)(30864003)(86362001)(7696005)(8676002)(8936002)(2906002)(41300700001)(38100700002)(122000001)(316002)(82960400001)(38070700005)(6506007)(26005)(66946007)(76116006)(84970400001)(107886003)(54906003)(9686003)(66556008)(66446008)(66476007)(64756008)(53546011)(559001)(579004)(473944003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?M2NnOVBBb3B5MTdBWnl5bS9XcXV3NW5BN1dPS0hOSWMyZFpLZzhsWXZBNEtI?= =?utf-8?B?REpJYVcwUDNHQmRyNzRYQmRzMzBOdWFMbWI0eE1oRCtaSFU5a1hvM1JOR1N4?= =?utf-8?B?QkxIcU1PZnlwYS9RU25lZ1pKdkphaXp1Zy95eUVwdVNjTUQzWXZjaEdpdERm?= =?utf-8?B?a3cvZFNHM1M3UlByeTlrN1c2dmtxUk1tOVNwd0VaYVVJQ01qVUxOK1NwRFZk?= =?utf-8?B?ejEyOFpFMFZFaDFJSjdLMHZvRHNLTXM3Z0gyYXJMMjVXQUl0S1RkUTQwOFJO?= =?utf-8?B?NDBtVVFWa0UyamdRbnVrMCtweEhKdUVoeGxwSUs5MnZ1TkhWTTQwMkw3Z2Yx?= =?utf-8?B?RGRsc0QramxEZDkyQkdrYzE0RW51a2g1Vzk2andlWTBrTUVrUFJNcEsyYUN0?= =?utf-8?B?ZlBna1JWNjdmNDhqd1ZiN0xISVhGbTNxTlB5TlNQL3JWWU5kbDFnK2dGUUx1?= =?utf-8?B?b0Z2SzB1Y3lwWG5WaVhrQUpjalZzeHZlakQvdDhLYUxRaUxkYjV3c2hoRGIz?= =?utf-8?B?ZHp3YWlPdkVIRHp5eHNaQ1lKNGJoWHFKS1drMUJHbjl4VTdOVlQ2bmRjKzFY?= =?utf-8?B?UHRrUUZzOE12WENpcUtzbk1KL001RTEwc1lqb1Bjdm0wY3NPYkdzY25rUERF?= =?utf-8?B?RTE1eGVvSUhUSUpVeFRSMzI3NWdXbzQyQmxxQVlDUndiZDlnaloxK0cyampW?= =?utf-8?B?eDYrMlNpRkNtSEo3dTUyS3FHNHI4b3pkcVgyZGJaM0N1T0FnbkZyQ3I4RXE0?= =?utf-8?B?dUV0SHNhcE9rQ0FyQXVFK3ZnUG9YS1YxWHcvNGxCK0JpLzY3bG14WmlESlNR?= =?utf-8?B?L2t5Mm9NTkN1MWhqTGdLa3NNdCtEVlBPY3gxcWl4azFKMUZSQVpvRGlqSHJp?= =?utf-8?B?NlpyWW1SWkwvcnBjdGxnS1NCZDJmYkR1OTlua2RwRDJIcWNuY3FDQ0NvSUh4?= =?utf-8?B?Y0wxdUt6Nk1tMDcxVTJSTG91RmpEUW9uYUxDVVdtR2hVbUJlekxJRE9aekM0?= =?utf-8?B?WFVDRGh4N2VLR1VxQ0F2ckt4NFU5aDRpRDM1WUViSTJ1TnhIRXN4UkZUbUpD?= =?utf-8?B?bHN3ZG00cWsvbzcvbTBDOVJZdVczd2xpU2ZwL2Z5UUlMZzY5SzZvbUc5Wkt1?= =?utf-8?B?TVlTb3JhVGRTZTBkUnpSaTR2cG5pam05M3dCYnNVZkRKYWhyRmVYMkxQUi9a?= =?utf-8?B?ck5QZDE3RE5SMlBGVVp2UFhBWE5QSWxuRTFuclEwdG1RYkppL3FaOHZONWFa?= =?utf-8?B?WEl5ZnpvUzhmbUJnSWtLeDdjNlZUcWJMOWRIZnlmL3BIbllFcVg4UHduL3dO?= =?utf-8?B?ZEdqZUtBQzFwbndJMkdpeXE5NktQY2JWbEVEQ1BpVzBlMHlUek9FQ0pHaS9k?= =?utf-8?B?TzlKd2h4K0xmbW1DMDZ2R0lmdit6eFlYaXdncHQwVzhkSERjWnJ1Um0wQW9F?= =?utf-8?B?MUdNT0k5YzVoYmkrT0ZzelhvYmNweW1pNEpJWGhETTFmSDJEYXJoN1dwRFli?= =?utf-8?B?TDVlUGoyNGJhNnY1Wm1oUjhTS21JWXN2UUYwLzB3MXQ1UG9IQ3NwSFMyZk1C?= =?utf-8?B?VVErRlFicTIxR3hHOXF3SmdKZm8xQVgxUnRnMENrczkyNFBwSFVNblYxWmlX?= =?utf-8?B?MFR1cm1iS3cyUkNIL0ZJemcrcTJoZE1MZlRZTXp4SDVFT3UxTWdwbzczNUk1?= =?utf-8?B?VGRFRnNJVFpoYWxUSHU4cmNnVWtBNVM3aE9vWGl2NTI3OEFIRXVjRkxUdi84?= =?utf-8?B?N3ZiSk5MTmpFall1ZUdTV1hoNk5ZcW5HckFnbGd0ME1hYzFaSnpGNE9uNURn?= =?utf-8?B?dnNXU0NrQ1MzV1pmUXV3czdUSUtxdStaK3NrRjRBTk5NbnNINUF3NUhacGhn?= =?utf-8?B?aHljTWRlZlN0NjBHTEQyQXQzaFZ6M1dZVGN4SXRmYUlLTWk0NS9sRHZYbkxX?= =?utf-8?B?WmZaTDE5R2NzWkdHa1ZRT3U0NXBsdVRMWTlpbm5uMzdlVXlqOCtTTXVoVXZt?= =?utf-8?B?VStacFk2czl2anpXb2h5RHY3alBFY2ducjFKMGZHbEkvMzNUUXpoSXNMQTF5?= =?utf-8?B?MmlrbjZVQWdXakR5a0VjMlBQRU41Y3ZZcVlmT2VMYWFTeThSc0wwT3NaMlov?= =?utf-8?Q?E/0o=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW5PR11MB5908.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 21dce15d-8d33-4863-266c-08db602f2e9a X-MS-Exchange-CrossTenant-originalarrivaltime: 29 May 2023 10:26:36.4607 (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: P+vZNxC1N3dZl/5nIIyCXozCH6rKxhJSr1D0vKBXbmcGQeFo7s8m+iD8bENcuGYY02GXeS8SWrrOuWSdd42g+Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR11MB4817 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,SCC_10_SHORT_WORD_LINES,SCC_5_SHORT_WORD_LINES,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Q29tbWl0dGVkLCB0aGFua3MgS2l0by4NCg0KUGFuDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQpGcm9tOiBLaXRvIENoZW5nIDxraXRvLmNoZW5nQGdtYWlsLmNvbT4gDQpTZW50OiBNb25k YXksIE1heSAyOSwgMjAyMyA1OjMzIFBNDQpUbzogTGksIFBhbjIgPHBhbjIubGlAaW50ZWwuY29t Pg0KQ2M6IGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnOyBqdXpoZS56aG9uZ0ByaXZhaS5haTsga2l0 by5jaGVuZ0BzaWZpdmUuY29tOyBXYW5nLCBZYW56aGFuZyA8eWFuemhhbmcud2FuZ0BpbnRlbC5j b20+DQpTdWJqZWN0OiBSZTogW1BBVENIIHY3XSBSSVNDLVY6IFVzaW5nIG1lcmdlIGFwcHJvYWNo IHRvIG9wdGltaXplIHJlcGVhdGluZyBzZXF1ZW5jZSBpbiB2ZWNfaW5pdA0KDQpMR1RNLCB0aGFu a3MNCg0KT24gTW9uLCBNYXkgMjksIDIwMjMgYXQgNDo1NOKAr1BNIFBhbiBMaSB2aWEgR2NjLXBh dGNoZXMgPGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnPiB3cm90ZToNCj4NCj4gRnJvbTogUGFuIExp IDxwYW4yLmxpQGludGVsLmNvbT4NCj4NCj4gVGhpcyBwYXRjaCB3b3VsZCBsaWtlIHRvIG9wdGlt aXplIHRoZSBWTFMgdmVjdG9yIGluaXRpYWxpemF0aW9uIGxpa2UgDQo+IHJlcGVhdGluZyBzZXF1 ZW5jZS4gRnJvbSB0aGUgdnNsaWRlMWRvd24gdG8gdGhlIHZtZXJnZSB3aXRoIGEgc2ltcGxlIA0K PiBjb3N0IG1vZGVsLCBha2EgZXZlcnkgaW5zdHJ1Y3Rpb24gb25seSBoYXMgMSBjb3N0Lg0KPg0K PiBHaXZlbiBjb2RlIHdpdGggLW1hcmNoPXJ2NjRnY3ZfenZsMjU2YiAtLXBhcmFtIA0KPiByaXNj di1hdXRvdmVjLXByZWZlcmVuY2U9Zml4ZWQtdmxtYXgNCj4gdHlwZWRlZiBpbnQ2NF90IHZueDMy ZGkgX19hdHRyaWJ1dGVfXyAoKHZlY3Rvcl9zaXplICgyNTYpKSk7DQo+DQo+IF9fYXR0cmlidXRl X18gKChub2lwYSkpIHZvaWQNCj4gZl92bngzMmRpIChpbnQ2NF90IGEsIGludDY0X3QgYiwgaW50 NjRfdCAqb3V0KSB7DQo+ICAgdm54MzJkaSB2ID0gew0KPiAgICAgYSwgYiwgYSwgYiwgYSwgYiwg YSwgYiwNCj4gICAgIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsDQo+ICAgICBhLCBiLCBhLCBiLCBh LCBiLCBhLCBiLA0KPiAgICAgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwNCj4gICB9Ow0KPiAgICoo dm54MzJkaSAqKSBvdXQgPSB2Ow0KPiB9DQo+DQo+IEJlZm9yZSB0aGlzIHBhdGNoOg0KPiB2c2xp ZGUxZG93bi52eCAoeDMxIHRpbWVzKQ0KPg0KPiBBZnRlciB0aGlzIHBhdGNoOg0KPiBsaSAgICAg IGE1LC0xNDMxNjU0NDAwDQo+IGFkZGkgICAgYTUsYTUsLTEzNjUNCj4gbGkgICAgICBhMywtMTQz MTY1NDQwMA0KPiBhZGRpICAgIGEzLGEzLC0xMzY2DQo+IHNsbGkgICAgYTUsYTUsMzINCj4gYWRk ICAgICBhNSxhNSxhMw0KPiB2c2V0dmxpIGE0LHplcm8sZTY0LG04LHRhLG1hDQo+IHZtdi52Lngg djgsYTANCj4gdm12LnMueCB2MCxhNQ0KPiB2bWVyZ2UudnhtICAgICAgdjgsdjgsYTEsdjANCj4g dnM4ci52ICB2OCwwKGEyKQ0KPg0KPiBTaW5jZSB3ZSBkb250J3QgaGF2ZSBTRVcgPSAxMjggaW4g dmVjX2R1cGxpY2F0ZSwgd2UgY2FuJ3QgY29tYmluZSBhYiANCj4gaW50byBTRVcgPSAxMjggZWxl bWVudCBhbmQgdGhlbiBicm9hZGNhc3QgdGhpcyBiaWcgZWxlbWVudC4NCj4NCj4gU2lnbmVkLW9m Zi1ieTogUGFuIExpIDxwYW4yLmxpQGludGVsLmNvbT4gQ28tQXV0aG9yZWQgYnk6IEp1emhlLVpo b25nIA0KPiA8anV6aGUuemhvbmdAcml2YWkuYWk+DQo+DQo+IGdjYy9DaGFuZ2VMb2c6DQo+DQo+ ICAgICAgICAgKiBjb25maWcvcmlzY3YvcmlzY3YtcHJvdG9zLmggKGVudW0gaW5zbl90eXBlKTog TmV3IHR5cGUuDQo+ICAgICAgICAgKiBjb25maWcvcmlzY3YvcmlzY3Ytdi5jYyAoUlZWX0lOU05f T1BFUkFORFNfTUFYKTogTmV3IG1hY3JvLg0KPiAgICAgICAgIChydnZfYnVpbGRlcjo6Y2FuX2R1 cGxpY2F0ZV9yZXBlYXRpbmdfc2VxdWVuY2VfcCk6IEFsaWduIHRoZSByZWZlcmVuY2VkDQo+ICAg ICAgICAgY2xhc3MgbWVtYmVyLg0KPiAgICAgICAgIChydnZfYnVpbGRlcjo6Z2V0X21lcmdlZF9y ZXBlYXRpbmdfc2VxdWVuY2UpOiBEaXR0by4NCj4gICAgICAgICAocnZ2X2J1aWxkZXI6OnJlcGVh dGluZ19zZXF1ZW5jZV91c2VfbWVyZ2VfcHJvZml0YWJsZV9wKTogTmV3IGZ1bmN0aW9uDQo+ICAg ICAgICAgdG8gZXZhbHVhdGUgdGhlIG9wdGltaXphdGlvbiBjb3N0Lg0KPiAgICAgICAgIChydnZf YnVpbGRlcjo6Z2V0X21lcmdlX3NjYWxhcl9tYXNrKTogTmV3IGZ1bmN0aW9uIHRvIGdldCB0aGUg bWVyZ2UNCj4gICAgICAgICBtYXNrLg0KPiAgICAgICAgIChlbWl0X3NjYWxhcl9tb3ZlX2luc24p OiBOZXcgZnVuY3Rpb24gdG8gZW1pdCB2bXYucy54Lg0KPiAgICAgICAgIChlbWl0X3ZsbWF4X2lu dGVnZXJfbW92ZV9pbnNuKTogTmV3IGZ1bmN0aW9uIHRvIGVtaXQgdmxtYXggdm12LnYueC4NCj4g ICAgICAgICAoZW1pdF9ub252bG1heF9pbnRlZ2VyX21vdmVfaW5zbik6IE5ldyBmdW5jdGlvbiB0 byBlbWl0IG5vbnZsbWF4DQo+ICAgICAgICAgdm12LnYueC4NCj4gICAgICAgICAoZ2V0X3JlcGVh dGluZ19zZXF1ZW5jZV9kdXBfbWFjaGluZV9tb2RlKTogTmV3IGZ1bmN0aW9uIHRvIGdldCB0aGUg ZHVwDQo+ICAgICAgICAgbWFjaGluZSBtb2RlLg0KPiAgICAgICAgIChleHBhbmRfdmVjdG9yX2lu aXRfbWVyZ2VfcmVwZWF0aW5nX3NlcXVlbmNlKTogTmV3IGZ1bmN0aW9uIHRvIHBlcmZvcm0NCj4g ICAgICAgICB0aGUgb3B0aW1pemF0aW9uLg0KPiAgICAgICAgIChleHBhbmRfdmVjX2luaXQpOiBB ZGQgdGhpcyB2ZWN0b3IgaW5pdCBvcHRpbWl6YXRpb24uDQo+ICAgICAgICAgKiBjb25maWcvcmlz Y3YvcmlzY3YuaCAoQklUU19QRVJfV09SRCk6IE5ldyBtYWNyby4NCj4NCj4gZ2NjL3Rlc3RzdWl0 ZS9DaGFuZ2VMb2c6DQo+DQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVj L3Zscy12bG1heC9pbml0LXJlcGVhdC1zZXF1ZW5jZS0xLmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAg ICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy92bHMtdmxtYXgvaW5pdC1yZXBlYXQtc2Vx dWVuY2UtMi5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvdmxzLXZsbWF4L2luaXQtcmVwZWF0LXNlcXVlbmNlLTMuYzogTmV3IHRlc3QuDQo+ICAg ICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Zscy12bG1heC9pbml0LXJlcGVh dC1zZXF1ZW5jZS00LmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9y dnYvYXV0b3ZlYy92bHMtdmxtYXgvaW5pdC1yZXBlYXQtc2VxdWVuY2UtNS5jOiBOZXcgdGVzdC4N Cj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdmxzLXZsbWF4L2luaXQt cmVwZWF0LXNlcXVlbmNlLXJ1bi0xLmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYXV0b3ZlYy92bHMtdmxtYXgvaW5pdC1yZXBlYXQtc2VxdWVuY2UtcnVuLTIu YzogTmV3IHRlc3QuDQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Zs cy12bG1heC9pbml0LXJlcGVhdC1zZXF1ZW5jZS1ydW4tMy5jOiBOZXcgdGVzdC4NCj4NCj4gU2ln bmVkLW9mZi1ieTogUGFuIExpIDxwYW4yLmxpQGludGVsLmNvbT4NCj4gLS0tDQo+ICBnY2MvY29u ZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oICAgICAgICAgICAgICAgfCAgIDEgKw0KPiAgZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi12LmNjICAgICAgICAgICAgICAgICAgIHwgMjI1ICsrKysrKysrKysr KysrKysrLQ0KPiAgZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5oICAgICAgICAgICAgICAgICAgICAg IHwgICAxICsNCj4gIC4uLi92bHMtdmxtYXgvaW5pdC1yZXBlYXQtc2VxdWVuY2UtMS5jICAgICAg ICB8ICAyMSArKw0KPiAgLi4uL3Zscy12bG1heC9pbml0LXJlcGVhdC1zZXF1ZW5jZS0yLmMgICAg ICAgIHwgIDI0ICsrDQo+ICAuLi4vdmxzLXZsbWF4L2luaXQtcmVwZWF0LXNlcXVlbmNlLTMuYyAg ICAgICAgfCAgMjUgKysNCj4gIC4uLi92bHMtdmxtYXgvaW5pdC1yZXBlYXQtc2VxdWVuY2UtNC5j ICAgICAgICB8ICAxNSArKw0KPiAgLi4uL3Zscy12bG1heC9pbml0LXJlcGVhdC1zZXF1ZW5jZS01 LmMgICAgICAgIHwgIDE3ICsrDQo+ICAuLi4vdmxzLXZsbWF4L2luaXQtcmVwZWF0LXNlcXVlbmNl LXJ1bi0xLmMgICAgfCAgNDcgKysrKw0KPiAgLi4uL3Zscy12bG1heC9pbml0LXJlcGVhdC1zZXF1 ZW5jZS1ydW4tMi5jICAgIHwgIDQ2ICsrKysNCj4gIC4uLi92bHMtdmxtYXgvaW5pdC1yZXBlYXQt c2VxdWVuY2UtcnVuLTMuYyAgICB8ICA0MSArKysrDQo+ICAxMSBmaWxlcyBjaGFuZ2VkLCA0NTcg aW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkgIGNyZWF0ZSBtb2RlIA0KPiAxMDA2NDQgDQo+ IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy92bHMtdmxtYXgvaW5p dC1yZXBlYXQtc2VxdWUNCj4gbmNlLTEuYyAgY3JlYXRlIG1vZGUgMTAwNjQ0IA0KPiBnY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdmxzLXZsbWF4L2luaXQtcmVwZWF0 LXNlcXVlDQo+IG5jZS0yLmMgIGNyZWF0ZSBtb2RlIDEwMDY0NCANCj4gZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Zscy12bG1heC9pbml0LXJlcGVhdC1zZXF1ZQ0K PiBuY2UtMy5jICBjcmVhdGUgbW9kZSAxMDA2NDQgDQo+IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYXV0b3ZlYy92bHMtdmxtYXgvaW5pdC1yZXBlYXQtc2VxdWUNCj4gbmNlLTQu YyAgY3JlYXRlIG1vZGUgMTAwNjQ0IA0KPiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvdmxzLXZsbWF4L2luaXQtcmVwZWF0LXNlcXVlDQo+IG5jZS01LmMgIGNyZWF0 ZSBtb2RlIDEwMDY0NCANCj4gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRv dmVjL3Zscy12bG1heC9pbml0LXJlcGVhdC1zZXF1ZQ0KPiBuY2UtcnVuLTEuYyAgY3JlYXRlIG1v ZGUgMTAwNjQ0IA0KPiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMv dmxzLXZsbWF4L2luaXQtcmVwZWF0LXNlcXVlDQo+IG5jZS1ydW4tMi5jICBjcmVhdGUgbW9kZSAx MDA2NDQgDQo+IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy92bHMt dmxtYXgvaW5pdC1yZXBlYXQtc2VxdWUNCj4gbmNlLXJ1bi0zLmMNCj4NCj4gZGlmZiAtLWdpdCBh L2djYy9jb25maWcvcmlzY3YvcmlzY3YtcHJvdG9zLmggDQo+IGIvZ2NjL2NvbmZpZy9yaXNjdi9y aXNjdi1wcm90b3MuaCBpbmRleCAwNDYyZjk2YzhkNS4uMjc3ODQ1NjczZDQgDQo+IDEwMDY0NA0K PiAtLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oDQo+ICsrKyBiL2djYy9jb25m aWcvcmlzY3YvcmlzY3YtcHJvdG9zLmgNCj4gQEAgLTE0Miw2ICsxNDIsNyBAQCBlbnVtIGluc25f dHlwZQ0KPiAgICBSVlZfQ01QX01VX09QID0gUlZWX0NNUF9PUCArIDIsIC8qICsyIG1lYW5zIG1h c2sgYW5kIG1hc2tvZmYgb3BlcmFuZC4gICovDQo+ICAgIFJWVl9VTk9QX01VID0gUlZWX1VOT1Ag KyAyLCAgICAvKiBMaWtld2lzZS4gICovDQo+ICAgIFJWVl9URVJOT1AgPSA1LA0KPiArICBSVlZf U0NBTEFSX01PVl9PUCA9IDQsIC8qICsxIGZvciBWVU5ERUYgYWNjb3JkaW5nIHRvIHZlY3Rvci5t ZC4gICovDQo+ICB9Ow0KPiAgZW51bSB2bG11bF90eXBlDQo+ICB7DQo+IGRpZmYgLS1naXQgYS9n Y2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXYuY2MgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXYuY2Mg DQo+IGluZGV4IGE1NzE1YmI0NjZjLi44YzkyMDUzMjU0OSAxMDA2NDQNCj4gLS0tIGEvZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi12LmNjDQo+ICsrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3Ytdi5j Yw0KPiBAQCAtMjEsNiArMjEsMTAgQEANCj4NCj4gICNkZWZpbmUgSU5fVEFSR0VUX0NPREUgMQ0K Pg0KPiArLyogV2UgaGF2ZSBhIG1heGltdW0gb2YgMTEgb3BlcmFuZHMgZm9yIFJWViBpbnN0cnVj dGlvbiBwYXR0ZXJucyBhY2NvcmRpbmcgdG8NCj4gKyAgIHRoZSB2ZWN0b3IubWQuICAqLw0KPiAr I2RlZmluZSBSVlZfSU5TTl9PUEVSQU5EU19NQVggMTENCj4gKw0KPiAgI2luY2x1ZGUgImNvbmZp Zy5oIg0KPiAgI2luY2x1ZGUgInN5c3RlbS5oIg0KPiAgI2luY2x1ZGUgImNvcmV0eXBlcy5oIg0K PiBAQCAtMTI4NiwxOSArMTI5MCwzMiBAQCBwdWJsaWM6DQo+ICAgICAgOiBydHhfdmVjdG9yX2J1 aWxkZXIgKG1vZGUsIG5wYXR0ZXJucywgbmVsdHNfcGVyX3BhdHRlcm4pDQo+ICAgIHsNCj4gICAg ICBtX2lubmVyX21vZGUgPSBHRVRfTU9ERV9JTk5FUiAobW9kZSk7DQo+IC0gICAgbV9pbm5lcl9z aXplID0gR0VUX01PREVfQklUU0laRSAobV9pbm5lcl9tb2RlKS50b19jb25zdGFudCAoKTsNCj4g KyAgICBtX2lubmVyX2JpdHNfc2l6ZSA9IEdFVF9NT0RFX0JJVFNJWkUgKG1faW5uZXJfbW9kZSk7 DQo+ICsgICAgbV9pbm5lcl9ieXRlc19zaXplID0gR0VUX01PREVfU0laRSAobV9pbm5lcl9tb2Rl KTsNCj4gKw0KPiArICAgIGdjY19hc3NlcnQgKA0KPiArICAgICAgaW50X21vZGVfZm9yX3NpemUg KGlubmVyX2JpdHNfc2l6ZSAoKSwgMCkuZXhpc3RzIA0KPiArICgmbV9pbm5lcl9pbnRfbW9kZSkp Ow0KPiAgICB9DQo+DQo+ICAgIGJvb2wgY2FuX2R1cGxpY2F0ZV9yZXBlYXRpbmdfc2VxdWVuY2Vf cCAoKTsNCj4gICAgcnR4IGdldF9tZXJnZWRfcmVwZWF0aW5nX3NlcXVlbmNlICgpOw0KPg0KPiAr ICBib29sIHJlcGVhdGluZ19zZXF1ZW5jZV91c2VfbWVyZ2VfcHJvZml0YWJsZV9wICgpOyAgcnR4 IA0KPiArIGdldF9tZXJnZV9zY2FsYXJfbWFzayAodW5zaWduZWQgaW50KSBjb25zdDsNCj4gKw0K PiAgICBtYWNoaW5lX21vZGUgbmV3X21vZGUgKCkgY29uc3QgeyByZXR1cm4gbV9uZXdfbW9kZTsg fQ0KPiArICBzY2FsYXJfbW9kZSBpbm5lcl9tb2RlICgpIGNvbnN0IHsgcmV0dXJuIG1faW5uZXJf bW9kZTsgfSAgDQo+ICsgc2NhbGFyX2ludF9tb2RlIGlubmVyX2ludF9tb2RlICgpIGNvbnN0IHsg cmV0dXJuIG1faW5uZXJfaW50X21vZGU7IH0gIA0KPiArIHVuc2lnbmVkIGludCBpbm5lcl9iaXRz X3NpemUgKCkgY29uc3QgeyByZXR1cm4gbV9pbm5lcl9iaXRzX3NpemU7IH0gIA0KPiArIHVuc2ln bmVkIGludCBpbm5lcl9ieXRlc19zaXplICgpIGNvbnN0IHsgcmV0dXJuIG1faW5uZXJfYnl0ZXNf c2l6ZTsgDQo+ICsgfQ0KPg0KPiAgcHJpdmF0ZToNCj4gLSAgbWFjaGluZV9tb2RlIG1faW5uZXJf bW9kZTsNCj4gKyAgc2NhbGFyX21vZGUgbV9pbm5lcl9tb2RlOw0KPiArICBzY2FsYXJfaW50X21v ZGUgbV9pbm5lcl9pbnRfbW9kZTsNCj4gICAgbWFjaGluZV9tb2RlIG1fbmV3X21vZGU7DQo+ICAg IHNjYWxhcl9pbnRfbW9kZSBtX25ld19pbm5lcl9tb2RlOw0KPiAtICB1bnNpZ25lZCBpbnQgbV9p bm5lcl9zaXplOw0KPiArICB1bnNpZ25lZCBpbnQgbV9pbm5lcl9iaXRzX3NpemU7DQo+ICsgIHVu c2lnbmVkIGludCBtX2lubmVyX2J5dGVzX3NpemU7DQo+ICB9Ow0KPg0KPiAgLyogUmV0dXJuIHRy dWUgaWYgdGhlIHZlY3RvciBkdXBsaWNhdGVkIGJ5IGEgc3VwZXIgZWxlbWVudCB3aGljaCBpcyAN Cj4gdGhlIGZ1c2lvbiBAQCAtMTMwOSw3ICsxMzI2LDcgQEAgYm9vbCAgDQo+IHJ2dl9idWlsZGVy OjpjYW5fZHVwbGljYXRlX3JlcGVhdGluZ19zZXF1ZW5jZV9wICgpICB7DQo+ICAgIHBvbHlfdWlu dDY0IG5ld19zaXplID0gZXhhY3RfZGl2IChmdWxsX25lbHRzICgpLCBucGF0dGVybnMgKCkpOw0K PiAtICB1bnNpZ25lZCBpbnQgbmV3X2lubmVyX3NpemUgPSBtX2lubmVyX3NpemUgKiBucGF0dGVy bnMgKCk7DQo+ICsgIHVuc2lnbmVkIGludCBuZXdfaW5uZXJfc2l6ZSA9IG1faW5uZXJfYml0c19z aXplICogbnBhdHRlcm5zICgpOw0KPiAgICBpZiAoIWludF9tb2RlX2Zvcl9zaXplIChuZXdfaW5u ZXJfc2l6ZSwgMCkuZXhpc3RzICgmbV9uZXdfaW5uZXJfbW9kZSkNCj4gICAgICAgIHx8IEdFVF9N T0RFX1NJWkUgKG1fbmV3X2lubmVyX21vZGUpID4gVU5JVFNfUEVSX1dPUkQNCj4gICAgICAgIHx8 ICFnZXRfdmVjdG9yX21vZGUgKG1fbmV3X2lubmVyX21vZGUsIG5ld19zaXplKS5leGlzdHMgDQo+ ICgmbV9uZXdfbW9kZSkpIEBAIC0xMzE3LDYgKzEzMzQsNjEgQEAgcnZ2X2J1aWxkZXI6OmNhbl9k dXBsaWNhdGVfcmVwZWF0aW5nX3NlcXVlbmNlX3AgKCkNCj4gICAgcmV0dXJuIHJlcGVhdGluZ19z ZXF1ZW5jZV9wICgwLCBmdWxsX25lbHRzICgpLnRvX2NvbnN0YW50ICgpLCANCj4gbnBhdHRlcm5z ICgpKTsgIH0NCj4NCj4gKy8qIFJldHVybiB0cnVlIGlmIGl0IGlzIGEgcmVwZWF0aW5nIHNlcXVl bmNlIHRoYXQgdXNpbmcNCj4gKyAgIG1lcmdlIGFwcHJvYWNoIGhhcyBiZXR0ZXIgY29kZWdlbiB0 aGFuIHVzaW5nIGRlZmF1bHQNCj4gKyAgIGFwcHJvYWNoIChzbGlkZTFkb3duKS4NCj4gKw0KPiAr ICAgU2VxdWVuY2UgQToNCj4gKyAgICAge2EsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEs IGIsIGEsIGIsIGEsIGJ9DQo+ICsNCj4gKyAgIG5lbHRzID0gMTYNCj4gKyAgIG5wYXR0ZXJucyA9 IDINCj4gKw0KPiArICAgZm9yIG1lcmdpbmcgYSB3ZSBuZWVkIG1hc2sgMTAxMDEwLi4uLg0KPiAr ICAgZm9yIG1lcmdpbmcgYiB3ZSBuZWVkIG1hc2sgMDEwMTAxLi4uLg0KPiArDQo+ICsgICBGb3Jl YWNoIGVsZW1lbnQgaW4gdGhlIG5wYXR0ZXJuLCB3ZSBuZWVkIHRvIGJ1aWxkIGEgbWFzayBpbiBz Y2FsYXIgcmVnaXN0ZXIuDQo+ICsgICBNb3N0ZWx5IHdlIG5lZWQgMyBpbnN0cnVjdGlvbnMgKGFr YSBDT1NUID0gMyksIHdoaWNoIGlzIGNvbnNpc3Qgb2YgMiBzY2FsYXINCj4gKyAgIGluc3RydWN0 aW9uIGFuZCAxIHNjYWxhciBtb3ZlIHRvIHYwIHJlZ2lzdGVyLiAgRmluYWxseSB3ZSBuZWVkIHZl Y3RvciBtZXJnZQ0KPiArICAgdG8gbWVyZ2UgdGhlbS4NCj4gKw0KPiArICAgbHVpICAgICAgICAg YTUsICNpbW0NCj4gKyAgIGFkZCAgICAgICAgIGE1LCAjaW1tDQo+ICsgICB2bW92LnMueCAgICB2 MCwgYTUNCj4gKyAgIHZtZXJnZS52eG0gIHY5LCB2OSwgYTEsIHYwDQo+ICsNCj4gKyAgIFNvIHRo ZSBvdmVyYWxsIChyb3VnaGx5KSBDT1NUIG9mIFNlcXVlbmNlIEEgPSAoMyArIDEpICogbnBhdHRl cm5zID0gOC4NCj4gKyAgIElmIHdlIHVzZSBzbGlkZTFkb3duLCB0aGUgQ09TVCA9IG5lbHRzID0g MTYgPiA4IChDT1NUIG9mIG1lcmdlKS4NCj4gKyAgIFNvIHJldHVybiB0cnVlIGluIHRoaXMgY2Fz ZSBhcyBpdCBpcyBwcm9maXRhYmxlLg0KPiArDQo+ICsgICBTZXF1ZW5jZSBCOg0KPiArICAgICB7 YSwgYiwgYywgZCwgZSwgZiwgZywgaCwgYSwgYiwgYywgZCwgZSwgZiwgZywgaH0NCj4gKw0KPiAr ICAgbmVsdHMgPSAxNg0KPiArICAgbnBhdHRlcm5zID0gOA0KPiArDQo+ICsgICBDT1NUIG9mIG1l cmdlIGFwcHJvYWNoID0gKDMgKyAxKSAqIG5wYXR0ZXJucyA9IDI0DQo+ICsgICBDT1NUIG9mIHNs aWRlMWRvd24gYXBwcm9hY2ggPSBuZWx0cyA9IDE2DQo+ICsgICBSZXR1cm4gZmFsc2UgaW4gdGhp cyBjYXNlIGFzIGl0IGlzIE5PVCBwcm9maXRhYmxlIGluIG1lcmdlIGFwcHJvYWNoLg0KPiArKi8N Cj4gK2Jvb2wNCj4gK3J2dl9idWlsZGVyOjpyZXBlYXRpbmdfc2VxdWVuY2VfdXNlX21lcmdlX3By b2ZpdGFibGVfcCAoKSB7DQo+ICsgIGlmIChpbm5lcl9ieXRlc19zaXplICgpID4gVU5JVFNfUEVS X1dPUkQpDQo+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsgIHVuc2lnbmVkIGludCBuZWx0 cyA9IGZ1bGxfbmVsdHMgKCkudG9fY29uc3RhbnQgKCk7DQo+ICsNCj4gKyAgaWYgKCFyZXBlYXRp bmdfc2VxdWVuY2VfcCAoMCwgbmVsdHMsIG5wYXR0ZXJucyAoKSkpDQo+ICsgICAgcmV0dXJuIGZh bHNlOw0KPiArDQo+ICsgIHVuc2lnbmVkIGludCBtZXJnZV9jb3N0ID0gMTsNCj4gKyAgdW5zaWdu ZWQgaW50IGJ1aWxkX21lcmdlX21hc2tfY29zdCA9IDM7ICB1bnNpZ25lZCBpbnQgDQo+ICsgc2xp ZGUxZG93bl9jb3N0ID0gbmVsdHM7DQo+ICsNCj4gKyAgcmV0dXJuIChidWlsZF9tZXJnZV9tYXNr X2Nvc3QgKyBtZXJnZV9jb3N0KSAqIG5wYXR0ZXJucyAoKSA8IA0KPiArc2xpZGUxZG93bl9jb3N0 OyB9DQo+ICsNCj4gIC8qIE1lcmdlIHRoZSByZXBlYXRpbmcgc2VxdWVuY2UgaW50byBhIHNpbmds ZSBlbGVtZW50IGFuZCByZXR1cm4gdGhlIA0KPiBSVFguICAqLyAgcnR4ICBydnZfYnVpbGRlcjo6 Z2V0X21lcmdlZF9yZXBlYXRpbmdfc2VxdWVuY2UgKCkgQEAgDQo+IC0xMzI0LDExICsxMzk2LDEx IEBAIHJ2dl9idWlsZGVyOjpnZXRfbWVyZ2VkX3JlcGVhdGluZ19zZXF1ZW5jZSAoKQ0KPiAgICBz Y2FsYXJfaW50X21vZGUgbW9kZSA9IFBtb2RlOw0KPiAgICBydHggdGFyZ2V0ID0gZ2VuX3JlZ19y dHggKG1vZGUpOw0KPiAgICBlbWl0X21vdmVfaW5zbiAodGFyZ2V0LCBjb25zdDBfcnR4KTsNCj4g LSAgcnR4IGltbSA9IGdlbl9pbnRfbW9kZSAoKDFVTEwgPDwgbV9pbm5lcl9zaXplKSAtIDEsIG1v ZGUpOw0KPiArICBydHggaW1tID0gZ2VuX2ludF9tb2RlICgoMVVMTCA8PCBtX2lubmVyX2JpdHNf c2l6ZSkgLSAxLCBtb2RlKTsNCj4gICAgLyogeyBhLCBiLCBhLCBiIH06IEdlbmVyYXRlIGR1cGxp Y2F0ZSBlbGVtZW50ID0gYiA8PCBiaXRzIHwgYS4gICovDQo+ICAgIGZvciAodW5zaWduZWQgaW50 IGkgPSAwOyBpIDwgbnBhdHRlcm5zICgpOyBpKyspDQo+ICAgICAgew0KPiAtICAgICAgdW5zaWdu ZWQgaW50IGxvYyA9IG1faW5uZXJfc2l6ZSAqIGk7DQo+ICsgICAgICB1bnNpZ25lZCBpbnQgbG9j ID0gbV9pbm5lcl9iaXRzX3NpemUgKiBpOw0KPiAgICAgICAgcnR4IHNoaWZ0ID0gZ2VuX2ludF9t b2RlIChsb2MsIG1vZGUpOw0KPiAgICAgICAgcnR4IGVsZSA9IGdlbl9sb3dwYXJ0IChtb2RlLCBl bHQgKGkpKTsNCj4gICAgICAgIHJ0eCB0bXAgPSBleHBhbmRfc2ltcGxlX2Jpbm9wIChtb2RlLCBB TkQsIGVsZSwgaW1tLCBOVUxMX1JUWCwgDQo+IGZhbHNlLCBAQCAtMTM0NCw2ICsxNDE2LDI5IEBA IHJ2dl9idWlsZGVyOjpnZXRfbWVyZ2VkX3JlcGVhdGluZ19zZXF1ZW5jZSAoKQ0KPiAgICByZXR1 cm4gdGFyZ2V0Ow0KPiAgfQ0KPg0KPiArLyogR2V0IHRoZSBtYXNrIGZvciBtZXJnZSBhcHByb2Fj aC4NCj4gKw0KPiArICAgQ29uc2lkZXIgc3VjaCBmb2xsb3dpbmcgY2FzZToNCj4gKyAgICAge2Es IGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGJ9DQo+ICsgICBUbyBt ZXJnZSAiYSIsIHRoZSBtYXNrIHNob3VsZCBiZSAxMDEwLi4uLg0KPiArICAgVG8gbWVyZ2UgImIi LCB0aGUgbWFzayBzaG91bGQgYmUgMDEwMS4uLi4NCj4gKyovDQo+ICtydHgNCj4gK3J2dl9idWls ZGVyOjpnZXRfbWVyZ2Vfc2NhbGFyX21hc2sgKHVuc2lnbmVkIGludCBpbmRleF9pbl9wYXR0ZXJu KSANCj4gK2NvbnN0IHsNCj4gKyAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCBtYXNrID0gMDsNCj4g KyAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCBiYXNlX21hc2sgPSAoMVVMTCA8PCBpbmRleF9pbl9w YXR0ZXJuKTsNCj4gKw0KPiArICBnY2NfYXNzZXJ0IChCSVRTX1BFUl9XT1JEICUgbnBhdHRlcm5z ICgpID09IDApOw0KPiArDQo+ICsgIGludCBsaW1pdCA9IEJJVFNfUEVSX1dPUkQgLyBucGF0dGVy bnMgKCk7DQo+ICsNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaW1pdDsgaSsrKQ0KPiArICAg IG1hc2sgfD0gYmFzZV9tYXNrIDw8IChpICogbnBhdHRlcm5zICgpKTsNCj4gKw0KPiArICByZXR1 cm4gZ2VuX2ludF9tb2RlIChtYXNrLCBpbm5lcl9pbnRfbW9kZSAoKSk7IH0NCj4gKw0KPiAgLyog U3Vicm91dGluZSBvZiByaXNjdl92ZWN0b3JfZXhwYW5kX3ZlY3Rvcl9pbml0Lg0KPiAgICAgV29y a3MgYXMgZm9sbG93czoNCj4gICAgIChhKSBJbml0aWFsaXplIFRBUkdFVCBieSBicm9hZGNhc3Rp bmcgZWxlbWVudCBORUxUU19SRVFEIC0gMSBvZiBCVUlMREVSLg0KPiBAQCAtMTM3MSw2ICsxNDY2 LDExMSBAQCBleHBhbmRfdmVjdG9yX2luaXRfaW5zZXJ0X2VsZW1zIChydHggdGFyZ2V0LCBjb25z dCBydnZfYnVpbGRlciAmYnVpbGRlciwNCj4gICAgICB9DQo+ICB9DQo+DQo+ICsvKiBFbWl0IHZt di5zLnggaW5zdHJ1Y3Rpb24uICAqLw0KPiArDQo+ICtzdGF0aWMgdm9pZA0KPiArZW1pdF9zY2Fs YXJfbW92ZV9pbnNuICh1bnNpZ25lZCBpY29kZSwgcnR4ICpvcHMpIHsNCj4gKyAgbWFjaGluZV9t b2RlIGRhdGFfbW9kZSA9IEdFVF9NT0RFIChvcHNbMF0pOw0KPiArICBtYWNoaW5lX21vZGUgbWFz a19tb2RlID0gZ2V0X21hc2tfbW9kZSAoZGF0YV9tb2RlKS5yZXF1aXJlICgpOw0KPiArICBpbnNu X2V4cGFuZGVyPFJWVl9JTlNOX09QRVJBTkRTX01BWD4gZSAocmlzY3ZfdmVjdG9yOjpSVlZfU0NB TEFSX01PVl9PUCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogSEFTX0RFU1RfUCAqLyB0cnVlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiBGVUxMWV9VTk1BU0tFRF9QICovIGZhbHNlLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0VfUkVBTF9NRVJHRV9QICovIHRydWUs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEhBU19BVkxf UCAqLyB0cnVlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv KiBWTE1BWF9QICovIGZhbHNlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhX21vZGUsIG1hc2tfbW9kZSk7DQo+ICsgIGUuc2V0X3BvbGljeSAoVEFJTF9B TlkpOw0KPiArICBlLnNldF9wb2xpY3kgKE1BU0tfQU5ZKTsNCj4gKyAgZS5zZXRfdmwgKENPTlNU MV9SVFggKFBtb2RlKSk7DQo+ICsgIGUuZW1pdF9pbnNuICgoZW51bSBpbnNuX2NvZGUpIGljb2Rl LCBvcHMpOyB9DQo+ICsNCj4gKy8qIEVtaXQgdm12LnYueCBpbnN0cnVjdGlvbiB3aXRoIHZsbWF4 LiAgKi8NCj4gKw0KPiArc3RhdGljIHZvaWQNCj4gK2VtaXRfdmxtYXhfaW50ZWdlcl9tb3ZlX2lu c24gKHVuc2lnbmVkIGljb2RlLCBydHggKm9wcywgcnR4IHZsKSB7DQo+ICsgIGVtaXRfdmxtYXhf aW5zbiAoaWNvZGUsIHJpc2N2X3ZlY3Rvcjo6UlZWX1VOT1AsIG9wcywgdmwpOyB9DQo+ICsNCj4g Ky8qIEVtaXQgdm12LnYueCBpbnN0cnVjdGlvbiB3aXRoIG5vbnZsbWF4LiAgKi8NCj4gKw0KPiAr c3RhdGljIHZvaWQNCj4gK2VtaXRfbm9udmxtYXhfaW50ZWdlcl9tb3ZlX2luc24gKHVuc2lnbmVk IGljb2RlLCBydHggKm9wcywgcnR4IGF2bCkgew0KPiArICBlbWl0X25vbnZsbWF4X2luc24gKGlj b2RlLCByaXNjdl92ZWN0b3I6OlJWVl9VTk9QLCBvcHMsIGF2bCk7IH0NCj4gKw0KPiArLyogRW1p dCBtZXJnZSBpbnN0cnVjdGlvbi4gICovDQo+ICsNCj4gK3N0YXRpYyBtYWNoaW5lX21vZGUNCj4g K2dldF9yZXBlYXRpbmdfc2VxdWVuY2VfZHVwX21hY2hpbmVfbW9kZSAoY29uc3QgcnZ2X2J1aWxk ZXIgJmJ1aWxkZXIpIA0KPiArew0KPiArICBwb2x5X3VpbnQ2NCBkdXBfbnVuaXRzID0gR0VUX01P REVfTlVOSVRTIChidWlsZGVyLm1vZGUgKCkpOw0KPiArDQo+ICsgIGlmIChrbm93bl9nZSAoR0VU X01PREVfU0laRSAoYnVpbGRlci5tb2RlICgpKSwgQllURVNfUEVSX1JJU0NWX1ZFQ1RPUikpDQo+ ICsgICAgew0KPiArICAgICAgZHVwX251bml0cyA9IGV4YWN0X2RpdiAoQllURVNfUEVSX1JJU0NW X1ZFQ1RPUiwNCj4gKyAgICAgICBidWlsZGVyLmlubmVyX2J5dGVzX3NpemUgKCkpOw0KPiArICAg IH0NCj4gKw0KPiArICByZXR1cm4gZ2V0X3ZlY3Rvcl9tb2RlIChidWlsZGVyLmlubmVyX2ludF9t b2RlICgpLCANCj4gK2R1cF9udW5pdHMpLnJlcXVpcmUgKCk7IH0NCj4gKw0KPiArLyogVXNlIG1l cmdlIGFwcHJvYWNoIHRvIGluaXRpYWxpemUgdGhlIHZlY3RvciB3aXRoIHJlcGVhdGluZyBzZXF1 ZW5jZS4NCj4gKyAgIHYgPSB7YSwgYiwgYSwgYiwgYSwgYiwgYSwgYn0uDQo+ICsNCj4gKyAgIHYg PSBicm9hZGNhc3QgKGEpLg0KPiArICAgbWFzayA9IDBiMDEwMTAxMDEuLi4uDQo+ICsgICB2ID0g bWVyZ2UgKHYsIGIsIG1hc2spDQo+ICsqLw0KPiArc3RhdGljIHZvaWQNCj4gK2V4cGFuZF92ZWN0 b3JfaW5pdF9tZXJnZV9yZXBlYXRpbmdfc2VxdWVuY2UgKHJ0eCB0YXJnZXQsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ2dl9idWlsZGVyIA0K PiArJmJ1aWxkZXIpIHsNCj4gKyAgbWFjaGluZV9tb2RlIGR1cF9tb2RlID0gZ2V0X3JlcGVhdGlu Z19zZXF1ZW5jZV9kdXBfbWFjaGluZV9tb2RlIA0KPiArKGJ1aWxkZXIpOw0KPiArICBtYWNoaW5l X21vZGUgZHVwX21hc2tfbW9kZSA9IGdldF9tYXNrX21vZGUgKGR1cF9tb2RlKS5yZXF1aXJlICgp Ow0KPiArICBtYWNoaW5lX21vZGUgbWFza19tb2RlID0gZ2V0X21hc2tfbW9kZSAoYnVpbGRlci5t b2RlICgpKS5yZXF1aXJlIA0KPiArKCk7DQo+ICsgIHVpbnQ2NF90IGZ1bGxfbmVsdHMgPSBidWls ZGVyLmZ1bGxfbmVsdHMgKCkudG9fY29uc3RhbnQgKCk7DQo+ICsNCj4gKyAgLyogU3RlcCAxOiBC cm9hZGNhc3QgdGhlIGZpcnN0IHBhdHRlcm4uICAqLyAgcnR4IG9wc1tdID0ge3RhcmdldCwgDQo+ ICsgZm9yY2VfcmVnIChHRVRfTU9ERV9JTk5FUiAoZHVwX21vZGUpLCBidWlsZGVyLmVsdCAoMCkp fTsgIA0KPiArIGVtaXRfdmxtYXhfaW50ZWdlcl9tb3ZlX2luc24gKGNvZGVfZm9yX3ByZWRfYnJv YWRjYXN0IChidWlsZGVyLm1vZGUgKCkpLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9wcywgTlVMTF9SVFgpOw0KPiArDQo+ICsgIC8qIFN0ZXAgMjogTWVyZ2UgdGhlIHJlc3Qg aXRlcmF0aW9uIG9mIHBhdHRlcm4uICAqLyAgZm9yICh1bnNpZ25lZCANCj4gKyBpbnQgaSA9IDE7 IGkgPCBidWlsZGVyLm5wYXR0ZXJucyAoKTsgaSsrKQ0KPiArICAgIHsNCj4gKyAgICAgIC8qIFN0 ZXAgMi0xOiBHZW5lcmF0ZSBtYXNrIHJlZ2lzdGVyIHYwIGZvciBlYWNoIG1lcmdlLiAgKi8NCj4g KyAgICAgIHJ0eCBtZXJnZV9tYXNrID0gYnVpbGRlci5nZXRfbWVyZ2Vfc2NhbGFyX21hc2sgKGkp Ow0KPiArICAgICAgcnR4IG1hc2sgPSBnZW5fcmVnX3J0eCAobWFza19tb2RlKTsNCj4gKyAgICAg IHJ0eCBkdXAgPSBnZW5fcmVnX3J0eCAoZHVwX21vZGUpOw0KPiArDQo+ICsgICAgICBpZiAoZnVs bF9uZWx0cyA8PSBCSVRTX1BFUl9XT1JEKSAvKiB2bXYucy54LiAgKi8NCj4gKyAgICAgICB7DQo+ ICsgICAgICAgICBydHggb3BzW10gPSB7ZHVwLCBnZW5fc2NhbGFyX21vdmVfbWFzayAoZHVwX21h c2tfbW9kZSksDQo+ICsgICAgICAgICAgIFJWVl9WVU5ERUYgKGR1cF9tb2RlKSwgbWVyZ2VfbWFz a307DQo+ICsgICAgICAgICBlbWl0X3NjYWxhcl9tb3ZlX2luc24gKGNvZGVfZm9yX3ByZWRfYnJv YWRjYXN0IChHRVRfTU9ERSAoZHVwKSksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9wcyk7DQo+ICsgICAgICAgfQ0KPiArICAgICAgZWxzZSAvKiB2bXYudi54LiAgKi8NCj4g KyAgICAgICB7DQo+ICsgICAgICAgICBydHggb3BzW10gPSB7ZHVwLCBmb3JjZV9yZWcgKEdFVF9N T0RFX0lOTkVSIChkdXBfbW9kZSksIG1lcmdlX21hc2spfTsNCj4gKyAgICAgICAgIHJ0eCB2bCA9 IGdlbl9pbnRfbW9kZSAoQ0VJTCAoZnVsbF9uZWx0cywgQklUU19QRVJfV09SRCksIFBtb2RlKTsN Cj4gKyAgICAgICAgIGVtaXRfbm9udmxtYXhfaW50ZWdlcl9tb3ZlX2luc24gKGNvZGVfZm9yX3By ZWRfYnJvYWRjYXN0IChkdXBfbW9kZSksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvcHMsIHZsKTsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgIGVtaXRf bW92ZV9pbnNuIChtYXNrLCBnZW5fbG93cGFydCAobWFza19tb2RlLCBkdXApKTsNCj4gKw0KPiAr ICAgICAgLyogU3RlcCAyLTI6IE1lcmdlIHBhdHRlcm4gYWNjb3JkaW5nIHRvIHRoZSBtYXNrLiAg Ki8NCj4gKyAgICAgIHJ0eCBvcHNbXSA9IHt0YXJnZXQsIHRhcmdldCwgYnVpbGRlci5lbHQgKGkp LCBtYXNrfTsNCj4gKyAgICAgIGVtaXRfdmxtYXhfbWVyZ2VfaW5zbiAoY29kZV9mb3JfcHJlZF9t ZXJnZV9zY2FsYXIgKEdFVF9NT0RFICh0YXJnZXQpKSwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICByaXNjdl92ZWN0b3I6OlJWVl9NRVJHRV9PUCwgb3BzKTsNCj4gKyAgICB9DQo+ICt9 DQo+ICsNCj4gIC8qIEluaXRpYWxpemUgcmVnaXN0ZXIgVEFSR0VUIGZyb20gdGhlIGVsZW1lbnRz IGluIFBBUkFMTEVMIHJ0eCBWQUxTLiAgDQo+ICovDQo+DQo+ICB2b2lkDQo+IEBAIC0xMzk0LDYg KzE1OTQsMTkgQEAgZXhwYW5kX3ZlY19pbml0IChydHggdGFyZ2V0LCBydHggdmFscykNCj4gICAg ICAgICAgIGVtaXRfbW92ZV9pbnNuICh0YXJnZXQsIGdlbl9sb3dwYXJ0IChtb2RlLCBkdXApKTsN Cj4gICAgICAgICAgIHJldHVybjsNCj4gICAgICAgICB9DQo+ICsNCj4gKyAgICAgIC8qIENhc2Ug MjogT3B0aW1pemUgcmVwZWF0aW5nIHNlcXVlbmNlIGNhc2VzIHRoYXQgQ2FzZSAxIGNhbg0KPiAr ICAgICAgICBub3QgaGFuZGxlIGFuZCBpdCBpcyBwcm9maXRhYmxlLiAgRm9yIGV4YW1wbGU6DQo+ ICsgICAgICAgIEVMRU1FTlQgQklUU0laRSA9IDY0Lg0KPiArICAgICAgICB2ID0ge2EsIGIsIGEs IGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGJ9Lg0KPiArICAgICAgICBXZSBj YW4ndCBmaW5kIGEgdmVjdG9yIG1vZGUgZm9yICJhYiIgd2hpY2ggd2lsbCBiZSBjb21iaW5lZCBp bnRvDQo+ICsgICAgICAgIDEyOC1iaXQgZWxlbWVudCB0byBkdXBsaWNhdGUuICAqLw0KPiArICAg ICAgaWYgKHYucmVwZWF0aW5nX3NlcXVlbmNlX3VzZV9tZXJnZV9wcm9maXRhYmxlX3AgKCkpDQo+ ICsgICAgICAgew0KPiArICAgICAgICAgZXhwYW5kX3ZlY3Rvcl9pbml0X21lcmdlX3JlcGVhdGlu Z19zZXF1ZW5jZSAodGFyZ2V0LCB2KTsNCj4gKyAgICAgICAgIHJldHVybjsNCj4gKyAgICAgICB9 DQo+ICsNCj4gICAgICAgIC8qIFRPRE86IFdlIHdpbGwgc3VwcG9ydCBtb3JlIEluaXRpYWxpemF0 aW9uIG9mIHZlY3RvciBpbiB0aGUgZnV0dXJlLiAgKi8NCj4gICAgICB9DQo+DQo+IGRpZmYgLS1n aXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmggYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lmgg aW5kZXggDQo+IDgwN2IwYmNjYzE4Li40NTQxMjU1YThhZSAxMDA2NDQNCj4gLS0tIGEvZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi5oDQo+ICsrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YuaA0KPiBA QCAtMTUwLDYgKzE1MCw3IEBAIEFTTV9NSVNBX1NQRUMNCj4NCj4gIC8qIFdpZHRoIG9mIGEgd29y ZCwgaW4gdW5pdHMgKGJ5dGVzKS4gICovICAjZGVmaW5lIFVOSVRTX1BFUl9XT1JEIA0KPiAoVEFS R0VUXzY0QklUID8gOCA6IDQpDQo+ICsjZGVmaW5lIEJJVFNfUEVSX1dPUkQgKEJJVFNfUEVSX1VO SVQgKiBVTklUU19QRVJfV09SRCkNCj4gICNpZm5kZWYgSU5fTElCR0NDMg0KPiAgI2RlZmluZSBN SU5fVU5JVFNfUEVSX1dPUkQgNA0KPiAgI2VuZGlmDQo+IGRpZmYgLS1naXQgDQo+IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Zscy12bG1heC9pbml0LXJlcGVh dC1zZXENCj4gdWVuY2UtMS5jIA0KPiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9y dnYvYXV0b3ZlYy92bHMtdmxtYXgvaW5pdC1yZXBlYXQtc2VxDQo+IHVlbmNlLTEuYw0KPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uNTlhZDQ5Y2Y3OTUNCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvdmxzLXZsbWF4L2luaXQtcmVwZWF0DQo+ICsrKyAtc2VxdWVuY2UtMS5jDQo+IEBAIC0w LDAgKzEsMjEgQEANCj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ICsvKiB7IGRnLWFkZGl0 aW9uYWwtb3B0aW9ucyAiLW1hcmNoPXJ2NjRnY3ZfenZsMTAyNGIgLW1hYmk9bHA2NGQiIH0gKi8N Cj4gKw0KPiArI2luY2x1ZGUgPHN0ZGludC1nY2MuaD4NCj4gKw0KPiArdHlwZWRlZiBpbnQ2NF90 IHZueDE2ZGkgX19hdHRyaWJ1dGVfXyAoKHZlY3Rvcl9zaXplICgxMDI0KSkpOw0KPiArDQo+ICtf X2F0dHJpYnV0ZV9fICgobm9pcGEpKSB2b2lkDQo+ICtmX3ZueDE2ZGkgKGludDY0X3QgYSwgaW50 NjRfdCBiLCBpbnQ2NF90ICpvdXQpIHsNCj4gKyAgdm54MTZkaSB2ID0gew0KPiArICAgIGEsIGIs IGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEs IGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsDQo+ICsgICAgYSwgYiwgYSwgYiwgYSwg YiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwg YSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwNCj4gKyAgICBhLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBh LCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBi LCBhLCBiLCBhLCBiLA0KPiArICAgIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIs IGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIA0KPiArYSwgYiwgYSwgYiwgYSwgYiwgYSwg YiwgYSwgYiwNCj4gKyAgfTsNCj4gKyAgKih2bngxNmRpICopIG91dCA9IHY7DQo+ICt9DQo+ICsN Cj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyANCj4gK3t2bXZcLnZcLnhc cyt2WzAtOV0rLFxzKlthLXgwLTldK30gMiB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci10aW1lcyANCj4gK3t2bWVyZ2VcLnZ4bVxzK3ZbMC05XSssXHMqdlswLTldKyxc cypbYS14MC05XSssXHMqdjB9IDEgfSB9ICovDQo+IGRpZmYgLS1naXQgDQo+IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Zscy12bG1heC9pbml0LXJlcGVhdC1z ZXENCj4gdWVuY2UtMi5jIA0KPiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYv YXV0b3ZlYy92bHMtdmxtYXgvaW5pdC1yZXBlYXQtc2VxDQo+IHVlbmNlLTIuYw0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uZmUzNzQxZTNiZTcNCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92 ZWMvdmxzLXZsbWF4L2luaXQtcmVwZWF0DQo+ICsrKyAtc2VxdWVuY2UtMi5jDQo+IEBAIC0wLDAg KzEsMjQgQEANCj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9u YWwtb3B0aW9ucyAiLW1hcmNoPXJ2NjRnY3YgLW1hYmk9bHA2NGQiIH0gKi8NCj4gKw0KPiArI2lu Y2x1ZGUgPHN0ZGludC1nY2MuaD4NCj4gKw0KPiArdHlwZWRlZiBkb3VibGUgdm54OGRmIF9fYXR0 cmlidXRlX18gKCh2ZWN0b3Jfc2l6ZSAoNjQpKSk7IHR5cGVkZWYgDQo+ICtkb3VibGUgdm54MTZk ZiBfX2F0dHJpYnV0ZV9fICgodmVjdG9yX3NpemUgKDEyOCkpKTsNCj4gKw0KPiArX19hdHRyaWJ1 dGVfXyAoKG5vaXBhKSkgdm9pZA0KPiArZl92bng4ZGYgKGRvdWJsZSBhLCBkb3VibGUgYiwgZG91 YmxlICpvdXQpIHsNCj4gKyAgdm54OGRmIHYgPSB7YSwgYiwgYSwgYiwgYSwgYiwgYSwgYn07DQo+ ICsgICoodm54OGRmICopIG91dCA9IHY7DQo+ICt9DQo+ICsNCj4gK19fYXR0cmlidXRlX18gKChu b2lwYSkpIHZvaWQNCj4gK2Zfdm54MTZkZiAoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgKm91 dCkgew0KPiArICB2bngxNmRmIHYgPSB7YSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwg YiwgYSwgYiwgYSwgYn07DQo+ICsgICoodm54MTZkZiAqKSBvdXQgPSB2Ow0KPiArfQ0KPiArDQo+ ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgDQo+ICt7dm12XC5zXC54XHR2 WzAtOV0rLFxzKlthLXgwLTldK30gMSB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyANCj4gK3t2Zm1lcmdlXC52Zm1cdHZbMC05XSssXHMqdlswLTldKyxccypb YS14MC05XSssXHMqdjB9IDEgfSB9ICovDQo+IGRpZmYgLS1naXQgDQo+IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Zscy12bG1heC9pbml0LXJlcGVhdC1zZXEN Cj4gdWVuY2UtMy5jIA0KPiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0 b3ZlYy92bHMtdmxtYXgvaW5pdC1yZXBlYXQtc2VxDQo+IHVlbmNlLTMuYw0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uNzQ3NzZkZWY5NjMNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMv dmxzLXZsbWF4L2luaXQtcmVwZWF0DQo+ICsrKyAtc2VxdWVuY2UtMy5jDQo+IEBAIC0wLDAgKzEs MjUgQEANCj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9uYWwt b3B0aW9ucyAiLW1hcmNoPXJ2NjRnY3YgLW1hYmk9bHA2NGQiIH0gKi8NCj4gKw0KPiArI2luY2x1 ZGUgPHN0ZGludC1nY2MuaD4NCj4gKw0KPiArdHlwZWRlZiBpbnQ2NF90IHZueDhkaSBfX2F0dHJp YnV0ZV9fICgodmVjdG9yX3NpemUgKDY0KSkpOyB0eXBlZGVmIA0KPiAraW50NjRfdCB2bngxNmRp IF9fYXR0cmlidXRlX18gKCh2ZWN0b3Jfc2l6ZSAoMTI4KSkpOw0KPiArDQo+ICtfX2F0dHJpYnV0 ZV9fICgobm9pcGEpKSB2b2lkDQo+ICtmX3ZueDhkaSAoaW50NjRfdCBhLCBpbnQ2NF90IGIsIGlu dDY0X3QgKm91dCkgew0KPiArICB2bng4ZGkgdiA9IHthLCBiLCBhLCBiLCBhLCBiLCBhLCBifTsN Cj4gKyAgKih2bng4ZGkgKikgb3V0ID0gdjsNCj4gK30NCj4gKw0KPiArX19hdHRyaWJ1dGVfXyAo KG5vaXBhKSkgdm9pZA0KPiArZl92bngxNmRpIChpbnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRf dCAqb3V0KSB7DQo+ICsgIHZueDE2ZGkgdiA9IHthLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBi LCBhLCBiLCBhLCBiLCBhLCBifTsNCj4gKyAgKih2bngxNmRpICopIG91dCA9IHY7DQo+ICt9DQo+ ICsNCj4gKw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIA0KPiAre3Zt dlwuc1wueFx0dlswLTldKyxccypbYS14MC05XSt9IDEgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgDQo+ICt7dm1lcmdlXC52eG1cdHZbMC05XSssXHMqdlsw LTldKyxccypbYS14MC05XSssXHMqdjB9IDEgfSB9ICovDQo+IGRpZmYgLS1naXQgDQo+IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Zscy12bG1heC9pbml0LXJl cGVhdC1zZXENCj4gdWVuY2UtNC5jIA0KPiBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYXV0b3ZlYy92bHMtdmxtYXgvaW5pdC1yZXBlYXQtc2VxDQo+IHVlbmNlLTQuYw0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uMmY2MTQ2NWU4NGYNCj4g LS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2 L2F1dG92ZWMvdmxzLXZsbWF4L2luaXQtcmVwZWF0DQo+ICsrKyAtc2VxdWVuY2UtNC5jDQo+IEBA IC0wLDAgKzEsMTUgQEANCj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ICsvKiB7IGRnLWFk ZGl0aW9uYWwtb3B0aW9ucyAiLW1hcmNoPXJ2NjRnY3YgLW1hYmk9bHA2NGQiIH0gKi8NCj4gKw0K PiArI2luY2x1ZGUgPHN0ZGludC1nY2MuaD4NCj4gKw0KPiArdHlwZWRlZiBpbnQ2NF90IHZueDhk aSBfX2F0dHJpYnV0ZV9fICgodmVjdG9yX3NpemUgKDY0KSkpOw0KPiArDQo+ICtfX2F0dHJpYnV0 ZV9fICgobm9pcGEpKSB2b2lkDQo+ICtmX3ZueDhkaSAoaW50NjRfdCBhLCBpbnQ2NF90IGIsIGlu dDY0X3QgYywgaW50NjRfdCBkLCBpbnQ2NF90ICpvdXQpIHsNCj4gKyAgdm54OGRpIHYgPSB7YSwg YiwgYywgZCwgYSwgYiwgYywgZH07DQo+ICsgICoodm54OGRpICopIG91dCA9IHY7DQo+ICt9DQo+ ICsNCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyANCj4gK3t2c2xpZGUx ZG93blwudnhcdHZbMC05XSssXHMqdlswLTldKyxccypbYS14MC05XSt9IDcgfSB9ICovDQo+IGRp ZmYgLS1naXQgDQo+IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVj L3Zscy12bG1heC9pbml0LXJlcGVhdC1zZXENCj4gdWVuY2UtNS5jIA0KPiBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy92bHMtdmxtYXgvaW5pdC1yZXBlYXQtc2Vx DQo+IHVlbmNlLTUuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAw MC4uN2Y0ZTY3ODNmOGUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdmxzLXZsbWF4L2luaXQtcmVwZWF0DQo+ICsrKyAt c2VxdWVuY2UtNS5jDQo+IEBAIC0wLDAgKzEsMTcgQEANCj4gKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1hcmNoPXJ2NjRnY3YgLW1hYmk9 bHA2NGQiIH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgPHN0ZGludC1nY2MuaD4NCj4gKw0KPiArdHlw ZWRlZiBpbnQ2NF90IHZueDE2ZGkgX19hdHRyaWJ1dGVfXyAoKHZlY3Rvcl9zaXplICgxMjgpKSk7 DQo+ICsNCj4gK19fYXR0cmlidXRlX18gKChub2lwYSkpIHZvaWQNCj4gK2Zfdm54MTZkaSAoaW50 NjRfdCBhLCBpbnQ2NF90IGIsIGludDY0X3QgYywgaW50NjRfdCBkLCBpbnQ2NF90ICpvdXQpIA0K PiArew0KPiArICB2bngxNmRpIHYgPSB7YSwgYiwgYywgZCwgYSwgYiwgYywgZCwgYSwgYiwgYywg ZCwgYSwgYiwgYywgZCx9Ow0KPiArICAqKHZueDE2ZGkgKikgb3V0ID0gdjsNCj4gK30NCj4gKw0K PiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIA0KPiAre3ZtdlwudlwueFx0 dlswLTldKyxccypbYS14MC05XSt9IDEgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgDQo+ICt7dm12XC5zXC54XHR2WzAtOV0rLFxzKlthLXgwLTldK30gMCB9 IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyANCj4gK3t2bWVy Z2VcLnZ4bVx0dlswLTldKyxccyp2WzAtOV0rLFxzKlthLXgwLTldKyxccyp2MH0gMCB9IH0gKi8N Cj4gZGlmZiAtLWdpdCANCj4gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvdmxzLXZsbWF4L2luaXQtcmVwZWF0LXNlcQ0KPiB1ZW5jZS1ydW4tMS5jIA0KPiBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy92bHMtdmxtYXgvaW5pdC1y ZXBlYXQtc2VxDQo+IHVlbmNlLXJ1bi0xLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXggMDAwMDAwMDAwMDAuLjE5MzFkM2Y1ZmEwDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Zscy12bG1heC9pbml0LXJl cGVhdA0KPiArKysgLXNlcXVlbmNlLXJ1bi0xLmMNCj4gQEAgLTAsMCArMSw0NyBAQA0KPiArLyog eyBkZy1kbyBydW4geyB0YXJnZXQgeyByaXNjdl92ZWN0b3IgfSB9IH0gKi8NCj4gKy8qIHsgZGct b3B0aW9ucyAiLS1wYXJhbSByaXNjdi1hdXRvdmVjLXByZWZlcmVuY2U9Zml4ZWQtdmxtYXggLU8z IiB9IA0KPiArKi8NCj4gKw0KPiArI2luY2x1ZGUgImluaXQtcmVwZWF0LXNlcXVlbmNlLTIuYyIN Cj4gKw0KPiAraW50DQo+ICttYWluICgpDQo+ICt7DQo+ICsgIGRvdWJsZSBhID0gLTE3ODkwODku MjM0MjM7DQo+ICsgIGRvdWJsZSBiID0gLTg5MTYxNTYuNDU2NDQ7DQo+ICsNCj4gKyAgZG91Ymxl IHZfdm54OGRmW3NpemVvZiAodm54OGRmKSAvIHNpemVvZiAoZG91YmxlKV07ICBmX3ZueDhkZiAo YSwgDQo+ICsgYiwgdl92bng4ZGYpOw0KPiArDQo+ICsgIHJldHVybiAwOw0KPiArICBmb3IgKGlu dCBpID0gMDsgaSA8IHNpemVvZiAodm54OGRmKSAvIHNpemVvZiAoZG91YmxlKTsgaSsrKQ0KPiAr ICAgIHsNCj4gKyAgICAgIGlmIChpICUgMiA9PSAwKQ0KPiArICAgICAgIHsNCj4gKyAgICAgICAg IGlmICh2X3ZueDhkZltpXSAhPSBhKQ0KPiArICAgICAgICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7 DQo+ICsgICAgICAgfQ0KPiArICAgICAgZWxzZQ0KPiArICAgICAgIHsNCj4gKyAgICAgICAgIGlm ICh2X3ZueDhkZltpXSAhPSBiKQ0KPiArICAgICAgICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ ICsgICAgICAgfQ0KPiArICAgIH0NCj4gKw0KPiArICBkb3VibGUgdl92bngxNmRmW3NpemVvZiAo dm54MTZkZikgLyBzaXplb2YgKGRvdWJsZSldOyAgZl92bngxNmRmIA0KPiArIChhLCBiLCB2X3Zu eDE2ZGYpOyAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YgKHZueDE2ZGYpIC8gc2l6ZW9mIA0K PiArIChkb3VibGUpOyBpKyspDQo+ICsgICAgew0KPiArICAgICAgaWYgKGkgJSAyID09IDApDQo+ ICsgICAgICAgew0KPiArICAgICAgICAgaWYgKHZfdm54MTZkZltpXSAhPSBhKQ0KPiArICAgICAg ICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsgICAgICAgfQ0KPiArICAgICAgZWxzZQ0KPiAr ICAgICAgIHsNCj4gKyAgICAgICAgIGlmICh2X3ZueDE2ZGZbaV0gIT0gYikNCj4gKyAgICAgICAg ICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiArICAgICAgIH0NCj4gKyAgICB9DQo+ICsNCj4gKyAg cmV0dXJuIDA7DQo+ICt9DQo+IGRpZmYgLS1naXQgDQo+IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Zscy12bG1heC9pbml0LXJlcGVhdC1zZXENCj4gdWVuY2Ut cnVuLTIuYyANCj4gYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMv dmxzLXZsbWF4L2luaXQtcmVwZWF0LXNlcQ0KPiB1ZW5jZS1ydW4tMi5jDQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi41NTY0ZGQ0YTA1YQ0KPiAtLS0gL2Rldi9u dWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy92 bHMtdmxtYXgvaW5pdC1yZXBlYXQNCj4gKysrIC1zZXF1ZW5jZS1ydW4tMi5jDQo+IEBAIC0wLDAg KzEsNDYgQEANCj4gKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IHsgcmlzY3ZfdmVjdG9yIH0gfSB9 ICovDQo+ICsvKiB7IGRnLW9wdGlvbnMgIi0tcGFyYW0gcmlzY3YtYXV0b3ZlYy1wcmVmZXJlbmNl PWZpeGVkLXZsbWF4IC1PMyIgfSANCj4gKyovDQo+ICsNCj4gKyNpbmNsdWRlICJpbml0LXJlcGVh dC1zZXF1ZW5jZS0zLmMiDQo+ICsNCj4gK2ludA0KPiArbWFpbiAoKQ0KPiArew0KPiArICBpbnQ2 NF90IGEgPSAtMTc4OTA4OTIzNDIzOw0KPiArICBpbnQ2NF90IGIgPSAtODkxNjE1NjQ1NjQ0Ow0K PiArDQo+ICsgIGludDY0X3Qgdl92bng4ZGlbc2l6ZW9mICh2bng4ZGkpIC8gc2l6ZW9mIChpbnQ2 NF90KV07ICBmX3ZueDhkaSAoYSwgDQo+ICsgYiwgdl92bng4ZGkpOyAgZm9yIChpbnQgaSA9IDA7 IGkgPCBzaXplb2YgKHZueDhkaSkgLyBzaXplb2YgDQo+ICsgKGludDY0X3QpOyBpKyspDQo+ICsg ICAgew0KPiArICAgICAgaWYgKGkgJSAyID09IDApDQo+ICsgICAgICAgew0KPiArICAgICAgICAg aWYgKHZfdm54OGRpW2ldICE9IGEpDQo+ICsgICAgICAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsN Cj4gKyAgICAgICB9DQo+ICsgICAgICBlbHNlDQo+ICsgICAgICAgew0KPiArICAgICAgICAgaWYg KHZfdm54OGRpW2ldICE9IGIpDQo+ICsgICAgICAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4g KyAgICAgICB9DQo+ICsgICAgfQ0KPiArDQo+ICsgIGludDY0X3Qgdl92bngxNmRpW3NpemVvZiAo dm54MTZkaSkgLyBzaXplb2YgKGludDY0X3QpXTsgIGZfdm54MTZkaSANCj4gKyAoYSwgYiwgdl92 bngxNmRpKTsNCj4gKw0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IHNpemVvZiAodm54MTZkaSkg LyBzaXplb2YgKGludDY0X3QpOyBpKyspDQo+ICsgICAgew0KPiArICAgICAgaWYgKGkgJSAyID09 IDApDQo+ICsgICAgICAgew0KPiArICAgICAgICAgaWYgKHZfdm54MTZkaVtpXSAhPSBhKQ0KPiAr ICAgICAgICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsgICAgICAgfQ0KPiArICAgICAgZWxz ZQ0KPiArICAgICAgIHsNCj4gKyAgICAgICAgIGlmICh2X3ZueDE2ZGlbaV0gIT0gYikNCj4gKyAg ICAgICAgICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiArICAgICAgIH0NCj4gKyAgICB9DQo+ICsN Cj4gKyAgcmV0dXJuIDA7DQo+ICt9DQo+IGRpZmYgLS1naXQgDQo+IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Zscy12bG1heC9pbml0LXJlcGVhdC1zZXENCj4g dWVuY2UtcnVuLTMuYyANCj4gYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvdmxzLXZsbWF4L2luaXQtcmVwZWF0LXNlcQ0KPiB1ZW5jZS1ydW4tMy5jDQo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi5mZWM1YWRjNTZkZQ0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0 b3ZlYy92bHMtdmxtYXgvaW5pdC1yZXBlYXQNCj4gKysrIC1zZXF1ZW5jZS1ydW4tMy5jDQo+IEBA IC0wLDAgKzEsNDEgQEANCj4gKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IHsgcmlzY3ZfdmVjdG9y IH0gfSB9ICovDQo+ICsvKiB7IGRnLW9wdGlvbnMgIi0tcGFyYW0gcmlzY3YtYXV0b3ZlYy1wcmVm ZXJlbmNlPWZpeGVkLXZsbWF4IC1PMyIgfSANCj4gKyovDQo+ICsNCj4gKyNpbmNsdWRlICJpbml0 LXJlcGVhdC1zZXF1ZW5jZS01LmMiDQo+ICsNCj4gK2ludA0KPiArbWFpbiAoKQ0KPiArew0KPiAr ICBpbnQ2NF90IGEgPSAtMTc4OTA4OTIzNDIzOw0KPiArICBpbnQ2NF90IGIgPSAtODkxNjE1NjQ1 NjQ0Ow0KPiArICBpbnQ2NF90IGMgPSA3ODkwODkyMzQyMzsNCj4gKyAgaW50NjRfdCBkID0gODE2 MTU2NDU2NDQ7DQo+ICsNCj4gKyAgaW50NjRfdCB2X3ZueDE2ZGlbc2l6ZW9mICh2bngxNmRpKSAv IHNpemVvZiAoaW50NjRfdCldOyAgZl92bngxNmRpIA0KPiArIChhLCBiLCBjLCBkLCB2X3ZueDE2 ZGkpOyAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YgKHZueDE2ZGkpIC8gDQo+ICsgc2l6ZW9m IChpbnQ2NF90KTsgaSsrKQ0KPiArICAgIHsNCj4gKyAgICAgIGlmIChpICUgNCA9PSAwKQ0KPiAr ICAgICAgIHsNCj4gKyAgICAgICAgIGlmICh2X3ZueDE2ZGlbaV0gIT0gYSkNCj4gKyAgICAgICAg ICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiArICAgICAgIH0NCj4gKyAgICAgIGVsc2UgaWYgKGkg JSA0ID09IDEpDQo+ICsgICAgICAgew0KPiArICAgICAgICAgaWYgKHZfdm54MTZkaVtpXSAhPSBi KQ0KPiArICAgICAgICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsgICAgICAgfQ0KPiArICAg ICAgZWxzZSBpZiAoaSAlIDQgPT0gMikNCj4gKyAgICAgICB7DQo+ICsgICAgICAgICBpZiAodl92 bngxNmRpW2ldICE9IGMpDQo+ICsgICAgICAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4gKyAg ICAgICB9DQo+ICsgICAgICBlbHNlDQo+ICsgICAgICAgew0KPiArICAgICAgICAgaWYgKHZfdm54 MTZkaVtpXSAhPSBkKQ0KPiArICAgICAgICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsgICAg ICAgfQ0KPiArICAgIH0NCj4gKw0KPiArICByZXR1cm4gMDsNCj4gK30NCj4gLS0NCj4gMi4zNC4x DQo+DQo=