From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 01D9DE95A8F for ; Mon, 9 Oct 2023 02:29:34 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 0695786550; Mon, 9 Oct 2023 04:29:32 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=matrox.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=matrox0.onmicrosoft.com header.i=@matrox0.onmicrosoft.com header.b="lpmEb1lc"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id D98E386D59; Mon, 9 Oct 2023 03:24:53 +0200 (CEST) Received: from CAN01-YQB-obe.outbound.protection.outlook.com (mail-yqbcan01on2062a.outbound.protection.outlook.com [IPv6:2a01:111:f403:7052::62a]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 69B2786D78 for ; Mon, 9 Oct 2023 03:24:41 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=matrox.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=agendin@matrox.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i6maJgMYrJk05vfmfqoNVNxf4PQy6e00a0pMJVJNpM/RmxuZqdErCTsWz7D4XgMVlY/dQZ8krANgggBoqJn1rXbsJQ8t26VVPCAF+Ppfi5hAdqdDhZJTFZkKyJajb0ta46nehF7NNwwfxUYcXqI/DTqm2gRsTkB8n9oIGB2Uv2HM5FEqRoVrJflBX1jeQop4YUvtNn2V0Pp/hJcPj2NJpyTSseDYL+X6JfmcmjgCLcWn1ky8HUtQX7YkVDzvnsgCQ3H2F8xGQosw1Yslq7gZZU7LDX8RppEyilLsCGYViV358CX/unQg+D/gJm1bVqZO+8sRYNuo+7J3TVEXJdkxWA== 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=aeBQ1iHgRC8RDiam5mi0YV7610Jy9QSThDCMD5fWTBY=; b=PPl12iBBXpJa0cZm9UJZ1RPBqDdL3goV0ynnLtBzAl+cW3wBW6wu08Qp1tDJozin9uDVRApOOoty6UMFYUkyYfBVA58ObLklkDRchMwlcY2nvHqqtnX9fC/lDtU5C8jdjl26eZFIz8CVoaq5SMO790rX+awILx1bXmyMxOrnQ0IphQaI85+CIoUpCGmtC7Ctdv3rsGC1PlLcGvEYlrk7gd9KVXvPnc4BKiXAikx5B6LGT061RxyczyCVpsW1hHewL4J2MeYCoNF3T+oDIdt0XyMYLkUCsZxBNJmj4UmHrgFocg66kWgdNrVCZnyOQs017HmG3GOOjAnG+C+Kmgfgjw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=matrox.com; dmarc=pass action=none header.from=matrox.com; dkim=pass header.d=matrox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=matrox0.onmicrosoft.com; s=selector1-matrox0-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aeBQ1iHgRC8RDiam5mi0YV7610Jy9QSThDCMD5fWTBY=; b=lpmEb1lcapqQIkmCoUDW3skeoEAnEPzINsYtSvX7ovx38dnGqM5ty1DtlysQidugaZuC7uQb7BdfZDM1MCOBtU7gEciSxWfUuzMCgZ+DgrUCvwXalFO/15x+V3AOzLPTyGus2mMDyBXkn+3bxfrvEW/iUbuxleEvSIWkIVDOFmI= Received: from YT3PR01MB5626.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:60::18) by YT3PR01MB5972.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:69::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.37; Mon, 9 Oct 2023 01:24:37 +0000 Received: from YT3PR01MB5626.CANPRD01.PROD.OUTLOOK.COM ([fe80::8342:9266:7d61:ca95]) by YT3PR01MB5626.CANPRD01.PROD.OUTLOOK.COM ([fe80::8342:9266:7d61:ca95%6]) with mapi id 15.20.6863.032; Mon, 9 Oct 2023 01:24:37 +0000 From: Alexander Gendin To: "u-boot@lists.denx.de" CC: Simon Glass , Tom Rini Subject: [PATCH v2] cmd: mbr: Allow 4 MBR partitions without need for extended Thread-Topic: [PATCH v2] cmd: mbr: Allow 4 MBR partitions without need for extended Thread-Index: AQHZ+k9dCItca0gIZES1lxigibb+6w== Date: Mon, 9 Oct 2023 01:24:36 +0000 Message-ID: References: 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=matrox.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: YT3PR01MB5626:EE_|YT3PR01MB5972:EE_ x-ms-office365-filtering-correlation-id: cf0efac0-362a-4f32-3c8f-08dbc866806a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: hhzZqbPNukgfMEn3IGHntRvMR/SLgWwuW7YxJGuiAPPf0vUknW/9OpI7v7nhF2UYGk81KV4Uvu4pmCQiLo9EcZ+xJP4VWKCjpBAv2CKA0jQowF4lOo/63AHWsaoKhl17f7rMKavWIupzCaoY1tpcQTL3f+Mv6PWrO8CuRJ72RGWFJVHVR52KHZr8UvpKfanfBGTF2i9YSgR8x+dPYhj+QVNbhhRIHKVpw5/bDMoyF3uQD6K0fKFQhbr8aG/Acl3rWJEgPa+iA0i9BNpaIUBdiMCkBnvkHq9eAje+l9an0j0qIKI6I3aYoABGt5GpfTOYarkKY7mNHTNapZj2m0NUHicqjEti6XxRe7CK42kUXCes3GqGf16NIPuJk5RGRq/zpsp1DHu6IUo/dnupNWhkZXipm3NWp6QdOzOxtwSDQH1DQyX1fvYeJUZtbXaBg4Gcl9eMckHhfjU4kIBw7YrDsfg08Hz2ngWo0krk3TN3qyrV7hZsl+HAWkLgF7PySBxi9ATlyUX48mdx0X+ES06vkzmnaogCOBSzfrdWQvA7R73/9AIv3NN4GE2GotuMZ3VKalthdMiiuGSgrim8TS6meb33kmt0pk6620eRk0V1NGUjgm7hhyPohAJie9NimZCfedePg5f1T8atGHSFqoy4Mw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:YT3PR01MB5626.CANPRD01.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230031)(7916004)(366004)(396003)(39830400003)(346002)(376002)(136003)(230922051799003)(451199024)(186009)(64100799003)(1800799009)(66899024)(6506007)(9686003)(6512007)(38070700005)(86362001)(122000001)(38100700002)(26005)(83380400001)(30864003)(2906002)(6486002)(71200400001)(41300700001)(478600001)(8676002)(4326008)(316002)(8936002)(33716001)(5660300002)(91956017)(76116006)(66476007)(66556008)(64756008)(66946007)(6916009)(54906003)(66446008)(559001)(579004)(505234007); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UUVPR014bnR3M1RQaTFCQXhZY0VoYTV5ell3VXpsb2xVMWpqeEQ2OGdrVW1z?= =?utf-8?B?ZEU1Uzc2VlFQRFQ5N1NNb3NnY3BVQlJiYTcwZ0VZVEdzbTlHaEFRVWRaSkU4?= =?utf-8?B?TTRXYVdBV3lFTWc3T1FTZHEwSGt6eUJuL3kycnlUQUtZY0E3NUd5amNmcEVZ?= =?utf-8?B?c1NlUUxaVWNyTVNhQlYrRlY3UEQ5V0pSMlBHMm54V2dlOUxsZ0VMTlZjcEtq?= =?utf-8?B?VktYTEwyb0tFRGlEL1NSYUROd3NIbEdsMmNpMXFwNk9DbHBXUVRwNS9YYk5T?= =?utf-8?B?d3JhZUFOaXJ1a2tvbzNhankvbFhqRjhFV2xvbGRMN1JHRExGU3NQb3pFRTFh?= =?utf-8?B?WWg5Ti8yZGVHbHJjV1kyQStCVDRqelB4emUrbk1iQXZEdWdKZEJXenVuQmRs?= =?utf-8?B?MEFlY21maDN6OHZOUGp4K0VjeG9WTmhreUUwVzEzb2R5bzhQdjVSRVpDaCtt?= =?utf-8?B?aUkveXc5anV2aVE4SnJCdXNEN1dpYVdiNldjVGtUM0VtL0lKUnJqTVcxU2VE?= =?utf-8?B?NlJZTzF1ZThKRU5CamExdHk2UmoxWEZxYkhzNmZlUkdWbW1jQzVJbzVEbERw?= =?utf-8?B?cEI0MU80Rnk3MlhPMGxYZnozbi9WTnZZMEVXVjNkLytLNzRvbmIvVGxmT080?= =?utf-8?B?NlJMQ3JQWU85enVaNjMxcFFRTVlFR3FSWGlLb282VHI2VjFhRGJrU0pYRUZt?= =?utf-8?B?VEZNaUhaNmJCNGYvTWFjaE1UL2ZuOTAxbmw5RmFFZG9GNjVRcER6QlBEYXlk?= =?utf-8?B?SGJlVzFjUnlUNzF3NVUyMHRFZU85U0g2WXZjczJzbUpuNXlZdjc4V2wrYlJ2?= =?utf-8?B?WFFzWktObXRUTGd1bDRaRnowOWticnphNUNKc3ZvMGlIYXFGZU5xVzFyVmtG?= =?utf-8?B?S1B5Um9sazQzUWFTN1JGVzJ4M2prR0piT3IyT01KelBZL3ZXa1UwVVlycEd2?= =?utf-8?B?N05lN2RJcHJiZ285anRIQmhTK0ZOYWhWN3hYaWcxcXQ1Qm5JSnp1WE9pTUdW?= =?utf-8?B?Q3ludFVIRTdkVjhHQkk2TEdZWUQzWVV5NktuRk5kenBhOStpYXo0U1kyclJY?= =?utf-8?B?QzRsenBFOWFBUEcwR1pONFhWbkhUbGpvZDAzNXJzN0lYcGpPNHRsWXZtVk44?= =?utf-8?B?aUNXZlc3bVV4dG1xTkNpdDlwTGRnOUUwVzZpa3cyV0thRnJQbmRUZ2tjMVNY?= =?utf-8?B?K0EwYS9pMUJKSFVzK2hOZENhMzRxRnRuM2w3SXJtOUgwYkJMcTQzVlQ1amN5?= =?utf-8?B?WTdDWUF6V2hORnpzanFnaGJ6dlZxd1M4VytqbXd5REZ2bExEcktnQ3VWNzJX?= =?utf-8?B?NFBWVE90TDFUWFdCNXZQTHU2Qms5VEY2MVZjUWlvMzJ3R3dNd3hHbzJxUEx0?= =?utf-8?B?ZWowVE1pRDdIb0ZUMEVSUXFzZVRUWFNCR0YramZpNTlXYU9TN3psaDF5ZzA1?= =?utf-8?B?NndtbkxkaGZYOEtxYW8zUFh1N1dCQk1YRFhZN2N6enFqN2R5MVgwbWYxOFN3?= =?utf-8?B?azRlZlFVV2R5WWU5UysxbXllUjQ2RzFiREppd01LQlRielloN1J3Qy9GbTds?= =?utf-8?B?U0NPTWU0R0NVZ29aZzlRYzltM21iWTB2RkFjOWhRZVBQWUxiWDVFUXowdm5x?= =?utf-8?B?bGtPN01LTW9qNlZmYnpiTzU0dFltVStXLzdmSDFvQk42cXExVEJsQXNtakFD?= =?utf-8?B?dTJXQVhzYUV3a2xueE03N0hETDI5UTVUMy81dnBXWjVxOWsxdHUzZ0VzdmFV?= =?utf-8?B?K0tnYzlFcGJTSHZiVUJxQ0ZjUHA2aS95MjBuOXpMTlJzaDRZMUNnSitQMFVT?= =?utf-8?B?azZsWXl6d1BrdU8vNWlLOG11YnRTRGt6V0QxWGhBSVpEemQvQ0JwWDQ1dlNC?= =?utf-8?B?T0Jreko3bS8zNzgvK3RWQm1DMHJHN05XdlJLeVYzK05pTG1FZVIyVzUrMEM5?= =?utf-8?B?OW53bU9OVEF6c0NsZis3czc4SVVyc2x2bnZMTG1vZll6c2hHczVRZVplVEhs?= =?utf-8?B?Vy9XZzNRQVAyWm5EWm1HN0ZUSGF3cnRXQWhDNWxKaEovNURydkNVUHp1aCto?= =?utf-8?B?TUVCTnB0eDFxZ0FQMXlVc1JFNmw4TkFKR0haNFBHRFVQUldUOUF2RjFBQnpH?= =?utf-8?Q?tp4WeGBxAB85wYAttynuOGA41?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: matrox.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: YT3PR01MB5626.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: cf0efac0-362a-4f32-3c8f-08dbc866806a X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Oct 2023 01:24:36.9345 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 09c2e324-8cf7-459c-b6b4-e23db24b9d4a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Q7ag4v8ypR8IU753lX8bzmr4rrQviq+X1IaNbUQSBOLPS3Lc+8sEzaSdCGRHh+LStDfeFhRvjnhChj2ffoCMCg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: YT3PR01MB5972 X-Mailman-Approved-At: Mon, 09 Oct 2023 04:29:31 +0200 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean Q3VycmVudCBjb2RlIGFsbG93cyB1cCB0byAzIE1CUiBwYXJ0aXRpb25zIHdpdGhvdXQgZXh0ZW5k ZWQgb25lLg0KSWYgbW9yZSB0aGFuIDMgcGFydGl0aW9ucyBhcmUgcmVxdWlyZWQsIHRoZW4gZXh0 ZW5kZWQgcGFydGl0aW9uKHMpDQptdXN0IGJlIHVzZWQuDQpUaGlzIGNvbW1pdCBhbGxvd3MgdXAg dG8gNCBwcmltYXJ5IE1CUiBwYXJ0aXRpb25zIHdpdGhvdXQgdGhlDQpuZWVkIGZvciBleHRlbmRl ZCBwYXJ0aXRpb24uDQoNCkFkZCBtYnIgdGVzdCB1bml0LiBJbiBvcmRlciB0byBydW4gdGhlIHRl c3QgbWFudWFsbHksIG1tYzYuaW1nIGZpbGUNCm9mIHNpemUgMTIgTWlCIG9yIGdyZWF0ZXIgaXMg cmVxdWlyZWQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHUtYm9vdC4NClRlc3QgYWxzbyBydW5z IGF1dG9tYXRpY2FsbHkgdmlhIC4vdGVzdC9weS90ZXN0LnB5IHRvb2wuDQpSdW5uaW5nIG1iciB0 ZXN0IGlzIG9ubHkgc3VwcG9ydGVkIGluIHNhbmRib3ggbW9kZS4NCg0KU2lnbmVkLW9mZi1ieTog QWxleCBHZW5kaW4gPGFnZW5kaW5AbWF0cm94LmNvbT4NCi0tLQ0KQ2hhbmdlcyBmb3IgdjI6DQot IENsZWFudXAgY29kaW5nIHN0eWxlDQotIEFkanVzdCBjb21taXQgbWVzc2FnZSB0byB0aGUgY2hh bmdlcyBpbiB2Mg0KLSBBZGQgbW1jNiBkZXZpY2UgdG8gc2FuZGJveCBkZXZpY2UgdHJlZQ0KLSBB ZGp1c3QgYm9vdC9ib290ZGV2LmMgYW5kIGRtL2Jsay5jIHRlc3RzIHRvIGluY2x1ZGUgbW1jNiBp biB0ZXN0cw0KLSBBdXRvLWNyZWF0ZSBtbWM2LmltZyBpbiB0ZXN0X3V0X2RtX2luaXQoKQ0KLSBB ZGQgbWJyIHRlc3QgdG8gdGhlIGxpc3Qgb2YgdGVzdHMgcnVuIGJ5IHRlc3QucHkuIFRlc3QgY2Fu IGJlIHJ1biBtYW51YWxseQ0KICB0b28gdmlhICd1dCBtYnInLg0KLSBDaGFuZ2UgbWJyIHRlc3Qg dG8gdXNlIG1tYzYuaW1nIGRlZGljYXRlZCB0byB0aGUgdGVzdCwgaW5zdGVhZCBvZiBtbWMxLmlt Zy4NCi0gQ2xlYXIgcmVhZCBidWZmZXIgYmVmb3JlIHJlYWRpbmcgZGF0YSBmcm9tIHRlc3QgZmls ZS4NCg0KIGFyY2gvc2FuZGJveC9kdHMvdGVzdC5kdHMgfCAgIDcgKw0KIGRpc2svcGFydF9kb3Mu YyAgICAgICAgICAgfCAgIDIgKy0NCiBpbmNsdWRlL3Rlc3Qvc3VpdGVzLmggICAgIHwgICAxICsN CiB0ZXN0L2Jvb3QvYm9vdGRldi5jICAgICAgIHwgICAyICstDQogdGVzdC9jbWQvTWFrZWZpbGUg ICAgICAgICB8ICAgMSArDQogdGVzdC9jbWQvbWJyLmMgICAgICAgICAgICB8IDQ3MSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIHRlc3QvY21kX3V0LmMgICAgICAgICAg ICAgfCAgIDQgKw0KIHRlc3QvZG0vYmxrLmMgICAgICAgICAgICAgfCAgNDQgKystLQ0KIHRlc3Qv cHkvdGVzdHMvdGVzdF91dC5weSAgfCAgIDcgKy0NCiA5IGZpbGVzIGNoYW5nZWQsIDUyMiBpbnNl cnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkNCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9jbWQv bWJyLmMNCg0KZGlmZiAtLWdpdCBhL2FyY2gvc2FuZGJveC9kdHMvdGVzdC5kdHMgYi9hcmNoL3Nh bmRib3gvZHRzL3Rlc3QuZHRzDQppbmRleCA2YWJjZTllMzk2Li41OWI3ZjhlZjEwIDEwMDY0NA0K LS0tIGEvYXJjaC9zYW5kYm94L2R0cy90ZXN0LmR0cw0KKysrIGIvYXJjaC9zYW5kYm94L2R0cy90 ZXN0LmR0cw0KQEAgLTQxLDYgKzQxLDcgQEANCiAJCW1tYzMgPSAiL21tYzMiOw0KIAkJbW1jNCA9 ICIvbW1jNCI7DQogCQltbWM1ID0gIi9tbWM1IjsNCisJCW1tYzYgPSAiL21tYzYiOw0KIAkJcGNp MCA9ICZwY2kwOw0KIAkJcGNpMSA9ICZwY2kxOw0KIAkJcGNpMiA9ICZwY2kyOw0KQEAgLTExMDEs NiArMTEwMiwxMiBAQA0KIAkJZmlsZW5hbWUgPSAibW1jNS5pbWciOw0KIAl9Ow0KIA0KKwkvKiBU aGlzIGlzIHVzZWQgZm9yIG1iciB0ZXN0cyAqLw0KKwltbWM2IHsNCisJCWNvbXBhdGlibGUgPSAi c2FuZGJveCxtbWMiOw0KKwkJZmlsZW5hbWUgPSAibW1jNi5pbWciOw0KKwl9Ow0KKw0KIAlwY2gg ew0KIAkJY29tcGF0aWJsZSA9ICJzYW5kYm94LHBjaCI7DQogCX07DQpkaWZmIC0tZ2l0IGEvZGlz ay9wYXJ0X2Rvcy5jIGIvZGlzay9wYXJ0X2Rvcy5jDQppbmRleCAzMzM3NDM4NDM3Li41NjdlYWQ3 NTExIDEwMDY0NA0KLS0tIGEvZGlzay9wYXJ0X2Rvcy5jDQorKysgYi9kaXNrL3BhcnRfZG9zLmMN CkBAIC00NjYsNyArNDY2LDcgQEAgaW50IGxheW91dF9tYnJfcGFydGl0aW9ucyhzdHJ1Y3QgZGlz a19wYXJ0aXRpb24gKnAsIGludCBjb3VudCwNCiAJCQlleHQgPSAmcFtpXTsNCiAJfQ0KIA0KLQlp ZiAoY291bnQgPCA0KQ0KKwlpZiAoY291bnQgPD0gNCkNCiAJCXJldHVybiAwOw0KIA0KIAlpZiAo IWV4dCkgew0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdGVzdC9zdWl0ZXMuaCBiL2luY2x1ZGUvdGVz dC9zdWl0ZXMuaA0KaW5kZXggMWM3ZGM2NTk2Ni4uNTFhY2JlNDdiMiAxMDA2NDQNCi0tLSBhL2lu Y2x1ZGUvdGVzdC9zdWl0ZXMuaA0KKysrIGIvaW5jbHVkZS90ZXN0L3N1aXRlcy5oDQpAQCAtNDUs NiArNDUsNyBAQCBpbnQgZG9fdXRfZm9udChzdHJ1Y3QgY21kX3RibCAqY21kdHAsIGludCBmbGFn LCBpbnQgYXJnYywgY2hhciAqY29uc3QgYXJndltdKTsNCiBpbnQgZG9fdXRfbGliKHN0cnVjdCBj bWRfdGJsICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICpjb25zdCBhcmd2W10pOw0K IGludCBkb191dF9sb2FkbShzdHJ1Y3QgY21kX3RibCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJn YywgY2hhciAqY29uc3QgYXJndltdKTsNCiBpbnQgZG9fdXRfbG9nKHN0cnVjdCBjbWRfdGJsICpj bWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICogY29uc3QgYXJndltdKTsNCitpbnQgZG9f dXRfbWJyKHN0cnVjdCBjbWRfdGJsICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICpj b25zdCBhcmd2W10pOw0KIGludCBkb191dF9tZW0oc3RydWN0IGNtZF90YmwgKmNtZHRwLCBpbnQg ZmxhZywgaW50IGFyZ2MsIGNoYXIgKmNvbnN0IGFyZ3ZbXSk7DQogaW50IGRvX3V0X29wdGVlKHN0 cnVjdCBjbWRfdGJsICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICpjb25zdCBhcmd2 W10pOw0KIGludCBkb191dF9vdmVybGF5KHN0cnVjdCBjbWRfdGJsICpjbWR0cCwgaW50IGZsYWcs IGludCBhcmdjLA0KZGlmZiAtLWdpdCBhL3Rlc3QvYm9vdC9ib290ZGV2LmMgYi90ZXN0L2Jvb3Qv Ym9vdGRldi5jDQppbmRleCA2YjI5MjEzNDE2Li40ZDEyNTEwNGM3IDEwMDY0NA0KLS0tIGEvdGVz dC9ib290L2Jvb3RkZXYuYw0KKysrIGIvdGVzdC9ib290L2Jvb3RkZXYuYw0KQEAgLTEyOCw3ICsx MjgsNyBAQCBzdGF0aWMgaW50IGJvb3RkZXZfdGVzdF9sYWJlbHMoc3RydWN0IHVuaXRfdGVzdF9z dGF0ZSAqdXRzKQ0KIAkJICAgIGJvb3RkZXZfZmluZF9ieV9sYWJlbCgiZnJlZDAiLCAmZGV2LCAm bWZsYWdzKSk7DQogDQogCS8qIENoZWNrIHVua25vd24gc2VxdWVuY2UgbnVtYmVyICovDQotCXV0 X2Fzc2VydGVxKC1FTk9FTlQsIGJvb3RkZXZfZmluZF9ieV9sYWJlbCgibW1jNiIsICZkZXYsICZt ZmxhZ3MpKTsNCisJdXRfYXNzZXJ0ZXEoLUVOT0VOVCwgYm9vdGRldl9maW5kX2J5X2xhYmVsKCJt bWM3IiwgJmRldiwgJm1mbGFncykpOw0KIA0KIAlyZXR1cm4gMDsNCiB9DQpkaWZmIC0tZ2l0IGEv dGVzdC9jbWQvTWFrZWZpbGUgYi90ZXN0L2NtZC9NYWtlZmlsZQ0KaW5kZXggNmUzZDdlOTE5ZS4u MmYyNTFlMDdiNCAxMDA2NDQNCi0tLSBhL3Rlc3QvY21kL01ha2VmaWxlDQorKysgYi90ZXN0L2Nt ZC9NYWtlZmlsZQ0KQEAgLTIzLDYgKzIzLDcgQEAgb2JqLSQoQ09ORklHX0NNRF9QSU5NVVgpICs9 IHBpbm11eC5vDQogb2JqLSQoQ09ORklHX0NNRF9QV00pICs9IHB3bS5vDQogb2JqLSQoQ09ORklH X0NNRF9TRUFNQSkgKz0gc2VhbWEubw0KIGlmZGVmIENPTkZJR19TQU5EQk9YDQorb2JqLSQoQ09O RklHX0NNRF9NQlIpICs9IG1ici5vDQogb2JqLSQoQ09ORklHX0NNRF9SRUFEKSArPSBydy5vDQog b2JqLSQoQ09ORklHX0NNRF9TRVRFWFBSKSArPSBzZXRleHByLm8NCiBvYmotJChDT05GSUdfQVJN X0ZGQV9UUkFOU1BPUlQpICs9IGFybWZmYS5vDQpkaWZmIC0tZ2l0IGEvdGVzdC9jbWQvbWJyLmMg Yi90ZXN0L2NtZC9tYnIuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAu LjQwOTFlYTY4N2YNCi0tLSAvZGV2L251bGwNCisrKyBiL3Rlc3QvY21kL21ici5jDQpAQCAtMCww ICsxLDQ3MSBAQA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKw0KKy8qDQor ICogVGVzdHMgZm9yIG1iciBjb21tYW5kDQorICoNCisgKiBDb3B5cmlnaHQgMjAyMyBNYXRyb3gg VmlkZW8NCisgKiBXcml0dGVuIGJ5IEFsZXggR2VuZGluIDxhZ2VuZGluQG1hdHJveC5jb20+DQor ICovDQorDQorI2luY2x1ZGUgPGNvbW1vbi5oPg0KKyNpbmNsdWRlIDxhc20vZ2xvYmFsX2RhdGEu aD4NCisjaW5jbHVkZSA8Y29uc29sZS5oPg0KKyNpbmNsdWRlIDxkbS90ZXN0Lmg+DQorI2luY2x1 ZGUgPG1hcG1lbS5oPg0KKyNpbmNsdWRlIDxwYXJ0Lmg+DQorI2luY2x1ZGUgPHRlc3Qvc3VpdGVz Lmg+DQorI2luY2x1ZGUgPHRlc3QvdXQuaD4NCisNCitERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsN CisvKg0KKyAqIFJlcXVpcmVtZW50cyBmb3IgcnVubmluZyB0ZXN0IG1hbnVhbGx5Og0KKyAqIG1t YzYuaW1nIC0gRmlsZSBzaXplIG5lZWRzIHRvIGJlIGF0IGxlYXN0IDEyIE1pQg0KKyAqDQorICog Q29tbWFuZCB0byBjcmVhdGUgbW1jNi5pbWc6DQorICogJCBkZCBpZj0vZGV2L3plcm8gb2Y9bW1j Ni5pbWcgYnM9MTJNIGNvdW50PTENCisgKg0KKyAqIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHks IHBsYWNlIG1tYzYuaW1nIGludG8gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHUtYm9vdCwNCisgKiB0 aGVuIHJ1bjoNCisgKiAkIC4vdS1ib290IC1UYyAndXQgbWJyJw0KKyAqDQorICogVG8gcnVuIHRo aXMgdGVzdCBhcyBwYXJ0IG9mIFUtQm9vdCB0ZXN0Og0KKyAqICQgLi90ZXN0L3B5L3Rlc3QucHkg LS1iZCBzYW5kYm94IC0tYnVpbGQgLWsgdXRfZG0gLXYNCisgKiBOb3RlOiBtbWM2LmltZyB3aWxs IGJlIGNyZWF0ZWQgYnkgdGhlIHRlc3Qgc3VpdC4NCisgKi8NCisNCitzdGF0aWMgY2hhciAqIG1i cl9wYXJ0c19oZWFkZXIgPSAic2V0ZW52IG1icl9wYXJ0cyAnIjsNCitzdGF0aWMgY2hhciAqIG1i cl9wYXJ0c19wMSA9ICJ1dWlkX2Rpc2s9MHgxMjM0NTY3ODtuYW1lPXAxLHN0YXJ0PThNLGJvb3Rh YmxlLHNpemU9MU0saWQ9MHgwZSI7DQorc3RhdGljIGNoYXIgKiBtYnJfcGFydHNfcDIgPSAiO25h bWU9cDIsc2l6ZT0xTSxpZD0weDBlIjsNCitzdGF0aWMgY2hhciAqIG1icl9wYXJ0c19wMyA9ICI7 bmFtZT1wMyxzaXplPTFNLGlkPTB4MGUiOw0KK3N0YXRpYyBjaGFyICogbWJyX3BhcnRzX3A0ID0g IjtuYW1lPXA0LHNpemU9MU0saWQ9MHgwZSI7DQorc3RhdGljIGNoYXIgKiBtYnJfcGFydHNfcDUg PSAiO25hbWU9W2V4dF0sc2l6ZT0yTSxpZD0weDA1O25hbWU9cDUsc2l6ZT0xTSxpZD0weDBlIjsN CitzdGF0aWMgY2hhciAqIG1icl9wYXJ0c190YWlsID0gIiciOw0KKw0KKy8qDQorICogT25lIE1C UiBwYXJ0aXRpb24NCiswMDAwMDFiMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIDc4IDU2IDM0 IDEyIDAwIDAwIDgwIDA1ICB8Li4uLi4uLi54VjQuLi4uLnwNCiswMDAwMDFjMCAgMDUgMDEgMGUg MjUgMjQgMDEgMDAgNDAgIDAwIDAwIDAwIDA4IDAwIDAwIDAwIDAwICB8Li4uJSQuLkAuLi4uLi4u LnwNCiswMDAwMDFkMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIDAwIDAwIDAwIDAwIDAwIDAw IDAwIDAwICB8Li4uLi4uLi4uLi4uLi4uLnwNCiswMDAwMDFlMCAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICB8Li4uLi4uLi4uLi4uLi4uLnwNCiswMDAw MDFmMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIDAwIDAwIDAwIDAwIDAwIDAwIDU1IGFhICB8 Li4uLi4uLi4uLi4uLi5VLnwNCisqLw0KK3N0YXRpYyB1bnNpZ25lZCBtYnJfY21wX3N0YXJ0ID0g MHgxQjg7DQorc3RhdGljIHVuc2lnbmVkIG1icl9jbXBfc2l6ZSA9IDB4NDg7DQorc3RhdGljIHVu c2lnbmVkIGNoYXIgbWJyX3BhcnRzX3JlZl9wMVtdID0gew0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NzgsIDB4NTYsIDB4MzQsIDB4MTIsIDB4MDAs IDB4MDAsIDB4ODAsIDB4MDUsDQorMHgwNSwgMHgwMSwgMHgwZSwgMHgyNSwgMHgyNCwgMHgwMSwg MHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwNCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLA0KKzB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsDQorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHg1NSwgMHhhYQ0KK307DQorDQorLyoNCisgKiBUd28gTUJSIHBhcnRpdGlvbnMNCiswMDAwMDFi MCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIDc4IDU2IDM0IDEyIDAwIDAwIDgwIDA1ICB8Li4u Li4uLi54VjQuLi4uLnwNCiswMDAwMDFjMCAgMDUgMDEgMGUgMjUgMjQgMDEgMDAgNDAgIDAwIDAw IDAwIDA4IDAwIDAwIDAwIDI1ICB8Li4uJSQuLkAuLi4uLi4uJXwNCiswMDAwMDFkMCAgMjUgMDEg MGUgNDYgMDUgMDEgMDAgNDggIDAwIDAwIDAwIDA4IDAwIDAwIDAwIDAwICB8JS4uRi4uLkguLi4u Li4uLnwNCiswMDAwMDFlMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIDAwIDAwIDAwIDAwIDAw IDAwIDAwIDAwICB8Li4uLi4uLi4uLi4uLi4uLnwNCiswMDAwMDFmMCAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgIDAwIDAwIDAwIDAwIDAwIDAwIDU1IGFhICB8Li4uLi4uLi4uLi4uLi5VLnwNCisq Lw0KK3N0YXRpYyB1bnNpZ25lZCBjaGFyIG1icl9wYXJ0c19yZWZfcDJbXSA9IHsNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4LCAweDU2LCAweDM0 LCAweDEyLCAweDAwLCAweDAwLCAweDgwLCAweDA1LA0KKzB4MDUsIDB4MDEsIDB4MGUsIDB4MjUs IDB4MjQsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MjUsDQorMHgyNSwgMHgwMSwgMHgwZSwgMHg0NiwgMHgwNSwgMHgwMSwgMHgw MCwgMHg0OCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwN CisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLA0KKzB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4NTUsIDB4YWENCit9Ow0KKw0KKy8qDQorICogVGhyZWUgTUJSIHBhcnRp dGlvbnMNCiswMDAwMDFiMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIDc4IDU2IDM0IDEyIDAw IDAwIDgwIDA1ICB8Li4uLi4uLi54VjQuLi4uLnwNCiswMDAwMDFjMCAgMDUgMDEgMGUgMjUgMjQg MDEgMDAgNDAgIDAwIDAwIDAwIDA4IDAwIDAwIDAwIDI1ICB8Li4uJSQuLkAuLi4uLi4uJXwNCisw MDAwMDFkMCAgMjUgMDEgMGUgNDYgMDUgMDEgMDAgNDggIDAwIDAwIDAwIDA4IDAwIDAwIDAwIDQ2 ICB8JS4uRi4uLkguLi4uLi4uRnwNCiswMDAwMDFlMCAgMDYgMDEgMGUgNjYgMjUgMDEgMDAgNTAg IDAwIDAwIDAwIDA4IDAwIDAwIDAwIDAwICB8Li4uZiUuLlAuLi4uLi4uLnwNCiswMDAwMDFmMCAg MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIDAwIDAwIDAwIDAwIDAwIDAwIDU1IGFhICB8Li4uLi4u Li4uLi4uLi5VLnwNCisqLw0KK3N0YXRpYyB1bnNpZ25lZCBjaGFyIG1icl9wYXJ0c19yZWZfcDNb XSA9IHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDc4LCAweDU2LCAweDM0LCAweDEyLCAweDAwLCAweDAwLCAweDgwLCAweDA1LA0KKzB4MDUsIDB4 MDEsIDB4MGUsIDB4MjUsIDB4MjQsIDB4MDEsIDB4MDAsIDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjUsDQorMHgyNSwgMHgwMSwgMHgwZSwgMHg0Niwg MHgwNSwgMHgwMSwgMHgwMCwgMHg0OCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgw MCwgMHgwMCwgMHg0NiwNCisweDA2LCAweDAxLCAweDBlLCAweDY2LCAweDI1LCAweDAxLCAweDAw LCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLA0K KzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTUsIDB4YWENCit9Ow0KKw0KKy8qDQorICog Rm91ciBNQlIgcGFydGl0aW9ucw0KKzAwMDAwMWIwICAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAg NzggNTYgMzQgMTIgMDAgMDAgODAgMDUgIHwuLi4uLi4uLnhWNC4uLi4ufA0KKzAwMDAwMWMwICAw NSAwMSAwZSAyNSAyNCAwMSAwMCA0MCAgMDAgMDAgMDAgMDggMDAgMDAgMDAgMjUgIHwuLi4lJC4u QC4uLi4uLi4lfA0KKzAwMDAwMWQwICAyNSAwMSAwZSA0NiAwNSAwMSAwMCA0OCAgMDAgMDAgMDAg MDggMDAgMDAgMDAgNDYgIHwlLi5GLi4uSC4uLi4uLi5GfA0KKzAwMDAwMWUwICAwNiAwMSAwZSA2 NiAyNSAwMSAwMCA1MCAgMDAgMDAgMDAgMDggMDAgMDAgMDAgNjYgIHwuLi5mJS4uUC4uLi4uLi5m fA0KKzAwMDAwMWYwICAyNiAwMSAwZSA4NyAwNiAwMSAwMCA1OCAgMDAgMDAgMDAgMDggMDAgMDAg NTUgYWEgIHwmLi4uLi4uWC4uLi4uLlUufA0KKyovDQorc3RhdGljIHVuc2lnbmVkIGNoYXIgbWJy X3BhcnRzX3JlZl9wNFtdID0gew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4NzgsIDB4NTYsIDB4MzQsIDB4MTIsIDB4MDAsIDB4MDAsIDB4ODAsIDB4 MDUsDQorMHgwNSwgMHgwMSwgMHgwZSwgMHgyNSwgMHgyNCwgMHgwMSwgMHgwMCwgMHg0MCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyNSwNCisweDI1LCAweDAx LCAweDBlLCAweDQ2LCAweDA1LCAweDAxLCAweDAwLCAweDQ4LCAweDAwLCAweDAwLCAweDAwLCAw eDA4LCAweDAwLCAweDAwLCAweDAwLCAweDQ2LA0KKzB4MDYsIDB4MDEsIDB4MGUsIDB4NjYsIDB4 MjUsIDB4MDEsIDB4MDAsIDB4NTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAs IDB4MDAsIDB4NjYsDQorMHgyNiwgMHgwMSwgMHgwZSwgMHg4NywgMHgwNiwgMHgwMSwgMHgwMCwg MHg1OCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg1NSwgMHhhYQ0KK307 DQorDQorLyoNCisgKiBGaXZlIE1CUiBwYXJ0aXRpb25zDQorMDAwMDAxYjAgIDAwIDAwIDAwIDAw IDAwIDAwIDAwIDAwICA3OCA1NiAzNCAxMiAwMCAwMCA4MCAwNSAgfC4uLi4uLi4ueFY0Li4uLi58 DQorMDAwMDAxYzAgIDA1IDAxIDBlIDI1IDI0IDAxIDAwIDQwICAwMCAwMCAwMCAwOCAwMCAwMCAw MCAyNSAgfC4uLiUkLi5ALi4uLi4uLiV8DQorMDAwMDAxZDAgIDI1IDAxIDBlIDQ2IDA1IDAxIDAw IDQ4ICAwMCAwMCAwMCAwOCAwMCAwMCAwMCA0NiAgfCUuLkYuLi5ILi4uLi4uLkZ8DQorMDAwMDAx ZTAgIDA2IDAxIDBlIDY2IDI1IDAxIDAwIDUwICAwMCAwMCAwMCAwOCAwMCAwMCAwMCA2NiAgfC4u LmYlLi5QLi4uLi4uLmZ8DQorMDAwMDAxZjAgIDI2IDAxIDA1IGE3IDI2IDAxIDAwIDU4ICAwMCAw MCAwMCAxMCAwMCAwMCA1NSBhYSAgfCYuLi4mLi5YLi4uLi4uVS58DQorKi8NCitzdGF0aWMgdW5z aWduZWQgY2hhciBtYnJfcGFydHNfcmVmX3A1W10gPSB7DQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg1NiwgMHgzNCwgMHgxMiwgMHgwMCwg MHgwMCwgMHg4MCwgMHgwNSwNCisweDA1LCAweDAxLCAweDBlLCAweDI1LCAweDI0LCAweDAxLCAw eDAwLCAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDI1 LA0KKzB4MjUsIDB4MDEsIDB4MGUsIDB4NDYsIDB4MDUsIDB4MDEsIDB4MDAsIDB4NDgsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDYsDQorMHgwNiwgMHgwMSwg MHgwZSwgMHg2NiwgMHgyNSwgMHgwMSwgMHgwMCwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw OCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwNCisweDI2LCAweDAxLCAweDA1LCAweGE3LCAweDI2 LCAweDAxLCAweDAwLCAweDU4LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAw eDU1LCAweGFhDQorfTsNCitzdGF0aWMgdW5zaWduZWQgZWJyX2NtcF9zdGFydCA9IDB4MUI4Ow0K K3N0YXRpYyB1bnNpZ25lZCBlYnJfY21wX3NpemUgPSAweDQ4Ow0KKy8qDQorICogRUJSDQorMDBi MDAxYjAgIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NyAg fC4uLi4uLi4uLi4uLi4uLi58DQorMDBiMDAxYzAgIDA3IDAxIDBlIGE3IDI2IDAxIDAwIDA4ICAw MCAwMCAwMCAwOCAwMCAwMCAwMCAwMCAgfC4uLi4mLi4uLi4uLi4uLi58DQorMDBiMDAxZDAgIDAw IDAwIDAwIDAwIDAwIDAwIDAwIDAwICAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgfC4uLi4uLi4u Li4uLi4uLi58DQorMDBiMDAxZTAgIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAwMCAwMCAwMCAw MCAwMCAwMCAwMCAwMCAgfC4uLi4uLi4uLi4uLi4uLi58DQorMDBiMDAxZjAgIDAwIDAwIDAwIDAw IDAwIDAwIDAwIDAwICAwMCAwMCAwMCAwMCAwMCAwMCA1NSBhYSAgfC4uLi4uLi4uLi4uLi4uVS58 DQorKi8NCitzdGF0aWMgdW5zaWduZWQgY2hhciBlYnJfcGFydHNfcmVmX3A1W10gPSB7DQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4NywNCisweDA3LCAweDAxLCAweDBlLCAw eGE3LCAweDI2LCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAw LCAweDAwLCAweDAwLCAweDAwLA0KKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsDQorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCisweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDU1LCAweGFhDQorfTsNCisNCisvKiBGaWxsIHdyaXRlIGJ1ZmZl cnMgd2l0aCBwc2V1ZG8tcmFuZG9tIGRhdGEgKi8NCitzdGF0aWMgdm9pZCBpbml0X3dyaXRlX2J1 ZmZlcnMoY2hhciAqbWJyX3diLCBzaXplX3QgbWJyX3diX3NpemUsDQorCQkJY2hhciAqZWJyX3di LCBzaXplX3QgZWJyX3diX3NpemUsIHVuc2lnbmVkIHNlZWQpDQorew0KKwl3aGlsZSAobWJyX3di X3NpemUtLSkgew0KKwkJKm1icl93YisrID0gc2VlZDsNCisJCXNlZWQgKj0gNDM7DQorCQlzZWVk ICs9IDE3ICsgbWJyX3diX3NpemUvNDsNCisJfQ0KKwl3aGlsZSAoZWJyX3diX3NpemUtLSkgew0K KwkJKmVicl93YisrID0gc2VlZDsNCisJCXNlZWQgKj0gNDM7DQorCQlzZWVkICs9IDE3ICsgZWJy X3diX3NpemUvNDsNCisJfQ0KK30NCisNCisvKiBCdWlsZCBzdHJpbmcgd2l0aCBNQlIgcGFydGl0 aW9uKHMpIGxheW91dCAqLw0KK3N0YXRpYyB1bnNpZ25lZCBidWlsZF9tYnJfcGFydHMoY2hhciAq YnVmLCBzaXplX3QgYnVmX3NpemUsIHVuc2lnbmVkIG51bV9wYXJ0cykNCit7DQorCXNpemVfdCBi eXRlc19yZW1haW5pbmcsIGN1cl9zdHJfc2l6ZTsNCisJY2hhciAqIGN1cl9idWY7DQorDQorCWlm ICghbnVtX3BhcnRzIHx8IG51bV9wYXJ0cyA+IDUgfHwgIWJ1ZikNCisJCXJldHVybiAxOw0KKw0K KwljdXJfYnVmID0gYnVmOw0KKwkqY3VyX2J1ZiA9ICdcMCc7DQorCWJ5dGVzX3JlbWFpbmluZyA9 IGJ1Zl9zaXplOw0KKw0KKwljdXJfc3RyX3NpemUgPSBzaXplb2YobWJyX3BhcnRzX2hlYWRlcik7 DQorCWlmIChjdXJfc3RyX3NpemUgKyAxID4gYnl0ZXNfcmVtYWluaW5nKQ0KKwkJcmV0dXJuIDE7 DQorCXN0cmNhdChjdXJfYnVmLCBtYnJfcGFydHNfaGVhZGVyKTsNCisJYnl0ZXNfcmVtYWluaW5n IC09IGN1cl9zdHJfc2l6ZTsNCisNCisJaWYgKG51bV9wYXJ0cyA+PSAxKSB7DQorCQljdXJfc3Ry X3NpemUgPSBzaXplb2YobWJyX3BhcnRzX3AxKTsNCisJCWlmIChjdXJfc3RyX3NpemUgKyAxID4g Ynl0ZXNfcmVtYWluaW5nKQ0KKwkJCXJldHVybiAxOw0KKwkJc3RyY2F0KGN1cl9idWYsIG1icl9w YXJ0c19wMSk7DQorCQlieXRlc19yZW1haW5pbmcgLT0gY3VyX3N0cl9zaXplOw0KKw0KKwkJaWYg KG51bV9wYXJ0cyA+PSAyKSB7DQorCQkJY3VyX3N0cl9zaXplID0gc2l6ZW9mKG1icl9wYXJ0c19w Mik7DQorCQkJaWYgKGN1cl9zdHJfc2l6ZSArIDEgPiBieXRlc19yZW1haW5pbmcpDQorCQkJCXJl dHVybiAxOw0KKwkJCXN0cmNhdChjdXJfYnVmLCBtYnJfcGFydHNfcDIpOw0KKwkJCWJ5dGVzX3Jl bWFpbmluZyAtPSBjdXJfc3RyX3NpemU7DQorDQorCQkJaWYgKG51bV9wYXJ0cyA+PSAzKSB7DQor CQkJCWN1cl9zdHJfc2l6ZSA9IHNpemVvZihtYnJfcGFydHNfcDMpOw0KKwkJCQlpZiAoY3VyX3N0 cl9zaXplICsgMSA+IGJ5dGVzX3JlbWFpbmluZykNCisJCQkJCXJldHVybiAxOw0KKwkJCQlzdHJj YXQoY3VyX2J1ZiwgbWJyX3BhcnRzX3AzKTsNCisJCQkJYnl0ZXNfcmVtYWluaW5nIC09IGN1cl9z dHJfc2l6ZTsNCisNCisJCQkJaWYgKG51bV9wYXJ0cyA9PSA0KSB7DQorCQkJCQljdXJfc3RyX3Np emUgPSBzaXplb2YobWJyX3BhcnRzX3A0KTsNCisJCQkJCWlmIChjdXJfc3RyX3NpemUgKyAxID4g Ynl0ZXNfcmVtYWluaW5nKQ0KKwkJCQkJCXJldHVybiAxOw0KKwkJCQkJc3RyY2F0KGN1cl9idWYs IG1icl9wYXJ0c19wNCk7DQorCQkJCQlieXRlc19yZW1haW5pbmcgLT0gY3VyX3N0cl9zaXplOw0K Kw0KKwkJCQl9DQorCQkJZWxzZSBpZiAobnVtX3BhcnRzID09IDUpIHsNCisJCQkJY3VyX3N0cl9z aXplID0gc2l6ZW9mKG1icl9wYXJ0c19wNSk7DQorCQkJCWlmIChjdXJfc3RyX3NpemUgKyAxID4g Ynl0ZXNfcmVtYWluaW5nKQ0KKwkJCQkJcmV0dXJuIDE7DQorCQkJCXN0cmNhdChjdXJfYnVmLCBt YnJfcGFydHNfcDUpOw0KKwkJCQlieXRlc19yZW1haW5pbmcgLT0gY3VyX3N0cl9zaXplOw0KKw0K KwkJCX0NCisJCQllbHNlIGlmIChudW1fcGFydHMgPiA1KQ0KKwkJCQlyZXR1cm4gMTsNCisJCQl9 DQorCQl9DQorCX0NCisNCisJY3VyX3N0cl9zaXplID0gc2l6ZW9mKG1icl9wYXJ0c190YWlsKTsN CisJaWYgKGN1cl9zdHJfc2l6ZSArIDEgPiBieXRlc19yZW1haW5pbmcpDQorCQlyZXR1cm4gMTsN CisJc3RyY2F0KGN1cl9idWYsIG1icl9wYXJ0c190YWlsKTsNCisNCisJcmV0dXJuIDA7DQorfQ0K Kw0KK3N0YXRpYyBpbnQgbWJyX3Rlc3RfcnVuKHN0cnVjdCB1bml0X3Rlc3Rfc3RhdGUgKnV0cykN Cit7DQorCXN0cnVjdCBibGtfZGVzYyAqbW1jX2Rldl9kZXNjOw0KKwl1bnNpZ25lZCBjaGFyIG1i cl93YnVmWzUxMl0sIGVicl93YnVmWzUxMl0sIHJidWZbNTEyXTsNCisJY2hhciBtYnJfcGFydHNf YnVmWzI1Nl07DQorCXVsb25nIG1icl93YSwgZWJyX3dhLCByYSwgZWJyX2JsaywgbWJyX3BhcnRz X21heDsNCisNCisJbWJyX3BhcnRzX21heCA9IHNpemVvZignXDAnKSArIDIgKw0KKwkJc3RybGVu KG1icl9wYXJ0c19oZWFkZXIpICsNCisJCXN0cmxlbihtYnJfcGFydHNfcDEpICsNCisJCXN0cmxl bihtYnJfcGFydHNfcDIpICsNCisJCXN0cmxlbihtYnJfcGFydHNfcDMpICsNCisJCW1heChzdHJs ZW4obWJyX3BhcnRzX3A0KSwgc3RybGVuKG1icl9wYXJ0c19wNSkpICsNCisJCXN0cmxlbihtYnJf cGFydHNfdGFpbCk7DQorCXV0X2Fzc2VydGYoc2l6ZW9mKG1icl9wYXJ0c19idWYpID49IG1icl9w YXJ0c19tYXgsICJCdWZmZXIgYXZhaWw6ICVsZDsgYnVmZmVyIHJlcTogJWxkXG4iLA0KKwkJc2l6 ZW9mKG1icl9wYXJ0c19idWYpLCBtYnJfcGFydHNfbWF4KTsNCisNCisJbWJyX3dhID0gbWFwX3Rv X3N5c21lbShtYnJfd2J1Zik7DQorCWVicl93YSA9IG1hcF90b19zeXNtZW0oZWJyX3didWYpOw0K KwlyYSA9IG1hcF90b19zeXNtZW0ocmJ1Zik7DQorCWVicl9ibGsgPSAodWxvbmcpMHhCMDAwMDAg LyAweDIwMDsNCisNCisJLyogTWFrZSBzdXJlIG1tYzYgZXhpc3RzICovDQorCXV0X2Fzc2VydGVx KDYsIGJsa19nZXRfZGV2aWNlX2J5X3N0cigibW1jIiwgIjYiLCAmbW1jX2Rldl9kZXNjKSk7DQor CXV0X2Fzc2VydG9rKGNvbnNvbGVfcmVjb3JkX3Jlc2V0X2VuYWJsZSgpKTsNCisJdXRfYXNzZXJ0 b2socnVuX2NvbW1hbmRmKCJtbWMgZGV2IDYiKSk7DQorCXV0X2Fzc2VydF9uZXh0bGluZSgic3dp dGNoIHRvIHBhcnRpdGlvbnMgIzAsIE9LIik7DQorCXV0X2Fzc2VydF9uZXh0bGluZSgibW1jNiBp cyBjdXJyZW50IGRldmljZSIpOw0KKwl1dF9hc3NlcnRvayh1dF9jaGVja19jb25zb2xlX2VuZCh1 dHMpKTsNCisNCisJLyogTWFrZSBzdXJlIG1tYzYgaXMgMTIrIE1pQiBpbiBzaXplICovDQorCXV0 X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigibW1jIHJlYWQgMHglbHggMHglbHggMSIsIHJhLCAodWxv bmcpMHhCRkZFMDAgLyAweDIwMCkpOw0KKw0KKwkvKiBUZXN0IG9uZSBNQlIgcGFydGl0aW9uICov DQorCWluaXRfd3JpdGVfYnVmZmVycyhtYnJfd2J1Ziwgc2l6ZW9mKG1icl93YnVmKSwgZWJyX3di dWYsIHNpemVvZihlYnJfd2J1ZiksIF9fTElORV9fKTsNCisJdXRfYXNzZXJ0b2soYnVpbGRfbWJy X3BhcnRzKG1icl9wYXJ0c19idWYsIHNpemVvZihtYnJfcGFydHNfYnVmKSwgMSkpOw0KKwl1dF9h c3NlcnRvayhydW5fY29tbWFuZGYoIndyaXRlIG1tYyA2OjAgMHglbHggMCAxIiwgbWJyX3dhKSk7 DQorCW1lbXNldChyYnVmLCAwLCBzaXplb2YocmJ1ZikpOw0KKwl1dF9hc3NlcnRvayhydW5fY29t bWFuZGYoInJlYWQgbW1jIDY6MCAweCVseCAwIDEiLCByYSkpOw0KKwl1dF9hc3NlcnRvayhtZW1j bXAobWJyX3didWYsIHJidWYsIDUxMikpOw0KKwl1dF9hc3NlcnRvayhydW5fY29tbWFuZGYoIndy aXRlIG1tYyA2OjAgMHglbHggMHglbHggMSIsIGVicl93YSwgZWJyX2JsaykpOw0KKwltZW1zZXQo cmJ1ZiwgMCwgc2l6ZW9mKHJidWYpKTsNCisJdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJyZWFk IG1tYyA2OjAgMHglbHggMHglbHggMSIsIHJhLCBlYnJfYmxrKSk7DQorCXV0X2Fzc2VydG9rKG1l bWNtcChlYnJfd2J1ZiwgcmJ1ZiwgNTEyKSk7DQorCXV0X2Fzc2VydG9rKGNvbnNvbGVfcmVjb3Jk X3Jlc2V0X2VuYWJsZSgpKTsNCisJdXRfYXNzZXJ0ZigwID09IHJ1bl9jb21tYW5kZihtYnJfcGFy dHNfYnVmKSwgIkludmFsaWQgcGFydGl0aW9ucyBzdHJpbmc6ICVzXG4iLCBtYnJfcGFydHNfYnVm KTsNCisJdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJtYnIgd3JpdGUgbW1jIDYiKSk7DQorCXV0 X2Fzc2VydF9uZXh0bGluZSgiTUJSOiB3cml0ZSBzdWNjZXNzISIpOw0KKwl1dF9hc3NlcnRvayhy dW5fY29tbWFuZGYoIm1iciB2ZXJpZnkgbW1jIDYiKSk7DQorCXV0X2Fzc2VydF9uZXh0bGluZSgi TUJSOiB2ZXJpZnkgc3VjY2VzcyEiKTsNCisJbWVtc2V0KHJidWYsIDAsIHNpemVvZihyYnVmKSk7 DQorCXV0X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigicmVhZCBtbWMgNjowIDB4JWx4IDB4JWx4IDEi LCByYSwgZWJyX2JsaykpOw0KKwl1dF9hc3NlcnRvayhtZW1jbXAoZWJyX3didWYsIHJidWYsIDUx MikpOw0KKwl1dF9hc3NlcnRvayh1dF9jaGVja19jb25zb2xlX2VuZCh1dHMpKTsNCisJLyoNCisJ MDAwMDAxYjAgIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICA3OCA1NiAzNCAxMiAwMCAwMCA4MCAw NSAgfC4uLi4uLi4ueFY0Li4uLi58DQorCTAwMDAwMWMwICAwNSAwMSAwZSAyNSAyNCAwMSAwMCA0 MCAgMDAgMDAgMDAgMDggMDAgMDAgMDAgMDAgIHwuLi4lJC4uQC4uLi4uLi4ufA0KKwkwMDAwMDFk MCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICB8Li4u Li4uLi4uLi4uLi4uLnwNCisJMDAwMDAxZTAgIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAwMCAw MCAwMCAwMCAwMCAwMCAwMCAwMCAgfC4uLi4uLi4uLi4uLi4uLi58DQorCTAwMDAwMWYwICAwMCAw MCAwMCAwMCAwMCAwMCAwMCAwMCAgMDAgMDAgMDAgMDAgMDAgMDAgNTUgYWEgIHwuLi4uLi4uLi4u Li4uLlUufA0KKwkqLw0KKwltZW1zZXQocmJ1ZiwgMCwgc2l6ZW9mKHJidWYpKTsNCisJdXRfYXNz ZXJ0b2socnVuX2NvbW1hbmRmKCJyZWFkIG1tYyA2OjAgMHglbHggMCAxIiwgcmEpKTsNCisJZm9y ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1icl9jbXBfc2l6ZTsgaSsrKSB7DQorCQl1dF9hc3NlcnRm KHJidWZbbWJyX2NtcF9zdGFydCArIGldID09IG1icl9wYXJ0c19yZWZfcDFbaV0sDQorCQkJIjFQ IE1CUisweCUwNFg6IGV4cGVjdGVkIDB4JTAyWCwgYWN0dWFsOiAweCUwMlhcbiIsDQorCQkJbWJy X2NtcF9zdGFydCArIGksIG1icl9wYXJ0c19yZWZfcDFbaV0sIHJidWZbbWJyX2NtcF9zdGFydCAr IGldKTsNCisJfQ0KKw0KKwkvKiBUZXN0IHR3byBNQlIgcGFydGl0aW9ucyAqLw0KKwlpbml0X3dy aXRlX2J1ZmZlcnMobWJyX3didWYsIHNpemVvZihtYnJfd2J1ZiksIGVicl93YnVmLCBzaXplb2Yo ZWJyX3didWYpLCBfX0xJTkVfXyk7DQorCXV0X2Fzc2VydG9rKGJ1aWxkX21icl9wYXJ0cyhtYnJf cGFydHNfYnVmLCBzaXplb2YobWJyX3BhcnRzX2J1ZiksIDIpKTsNCisJdXRfYXNzZXJ0b2socnVu X2NvbW1hbmRmKCJ3cml0ZSBtbWMgNjowIDB4JWx4IDAgMSIsIG1icl93YSkpOw0KKwltZW1zZXQo cmJ1ZiwgMCwgc2l6ZW9mKHJidWYpKTsNCisJdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJyZWFk IG1tYyA2OjAgMHglbHggMCAxIiwgcmEpKTsNCisJdXRfYXNzZXJ0b2sobWVtY21wKG1icl93YnVm LCByYnVmLCA1MTIpKTsNCisJdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJ3cml0ZSBtbWMgNjow IDB4JWx4IDB4JWx4IDEiLCBlYnJfd2EsIGVicl9ibGspKTsNCisJbWVtc2V0KHJidWYsIDAsIHNp emVvZihyYnVmKSk7DQorCXV0X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigicmVhZCBtbWMgNjowIDB4 JWx4IDB4JWx4IDEiLCByYSwgZWJyX2JsaykpOw0KKwl1dF9hc3NlcnRvayhtZW1jbXAoZWJyX3di dWYsIHJidWYsIDUxMikpOw0KKwl1dF9hc3NlcnRvayhjb25zb2xlX3JlY29yZF9yZXNldF9lbmFi bGUoKSk7DQorCXV0X2Fzc2VydGYoMCA9PSBydW5fY29tbWFuZGYobWJyX3BhcnRzX2J1ZiksICJJ bnZhbGlkIHBhcnRpdGlvbnMgc3RyaW5nOiAlc1xuIiwgbWJyX3BhcnRzX2J1Zik7DQorCXV0X2Fz c2VydG9rKHJ1bl9jb21tYW5kZigibWJyIHdyaXRlIG1tYyA2IikpOw0KKwl1dF9hc3NlcnRfbmV4 dGxpbmUoIk1CUjogd3JpdGUgc3VjY2VzcyEiKTsNCisJdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRm KCJtYnIgdmVyaWZ5IG1tYyA2IikpOw0KKwl1dF9hc3NlcnRfbmV4dGxpbmUoIk1CUjogdmVyaWZ5 IHN1Y2Nlc3MhIik7DQorCW1lbXNldChyYnVmLCAwLCBzaXplb2YocmJ1ZikpOw0KKwl1dF9hc3Nl cnRvayhydW5fY29tbWFuZGYoInJlYWQgbW1jIDY6MCAweCVseCAweCVseCAxIiwgcmEsIGVicl9i bGspKTsNCisJdXRfYXNzZXJ0b2sobWVtY21wKGVicl93YnVmLCByYnVmLCA1MTIpKTsNCisJdXRf YXNzZXJ0b2sodXRfY2hlY2tfY29uc29sZV9lbmQodXRzKSk7DQorCS8qDQorCTAwMDAwMWIwICAw MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgNzggNTYgMzQgMTIgMDAgMDAgODAgMDUgIHwuLi4uLi4u LnhWNC4uLi4ufA0KKwkwMDAwMDFjMCAgMDUgMDEgMGUgMjUgMjQgMDEgMDAgNDAgIDAwIDAwIDAw IDA4IDAwIDAwIDAwIDI1ICB8Li4uJSQuLkAuLi4uLi4uJXwNCisJMDAwMDAxZDAgIDI1IDAxIDBl IDQ2IDA1IDAxIDAwIDQ4ICAwMCAwMCAwMCAwOCAwMCAwMCAwMCAwMCAgfCUuLkYuLi5ILi4uLi4u Li58DQorCTAwMDAwMWUwICAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgIHwuLi4uLi4uLi4uLi4uLi4ufA0KKwkwMDAwMDFmMCAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgIDAwIDAwIDAwIDAwIDAwIDAwIDU1IGFhICB8Li4uLi4uLi4uLi4uLi5VLnwNCisJ Ki8NCisJbWVtc2V0KHJidWYsIDAsIHNpemVvZihyYnVmKSk7DQorCXV0X2Fzc2VydG9rKHJ1bl9j b21tYW5kZigicmVhZCBtbWMgNjowIDB4JWx4IDAgMSIsIHJhKSk7DQorCWZvciAodW5zaWduZWQg aSA9IDA7IGkgPCBtYnJfY21wX3NpemU7IGkrKykgew0KKwkJdXRfYXNzZXJ0ZihyYnVmW21icl9j bXBfc3RhcnQgKyBpXSA9PSBtYnJfcGFydHNfcmVmX3AyW2ldLA0KKwkJCSIyUCBNQlIrMHglMDRY OiBleHBlY3RlZCAweCUwMlgsIGFjdHVhbDogMHglMDJYXG4iLA0KKwkJCW1icl9jbXBfc3RhcnQg KyBpLCBtYnJfcGFydHNfcmVmX3AyW2ldLCByYnVmW21icl9jbXBfc3RhcnQgKyBpXSk7DQorCX0N CisNCisJLyogVGVzdCB0aHJlZSBNQlIgcGFydGl0aW9ucyAqLw0KKwlpbml0X3dyaXRlX2J1ZmZl cnMobWJyX3didWYsIHNpemVvZihtYnJfd2J1ZiksIGVicl93YnVmLCBzaXplb2YoZWJyX3didWYp LCBfX0xJTkVfXyk7DQorCXV0X2Fzc2VydG9rKGJ1aWxkX21icl9wYXJ0cyhtYnJfcGFydHNfYnVm LCBzaXplb2YobWJyX3BhcnRzX2J1ZiksIDMpKTsNCisJdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRm KCJ3cml0ZSBtbWMgNjowIDB4JWx4IDAgMSIsIG1icl93YSkpOw0KKwltZW1zZXQocmJ1ZiwgMCwg c2l6ZW9mKHJidWYpKTsNCisJdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJyZWFkIG1tYyA2OjAg MHglbHggMCAxIiwgcmEpKTsNCisJdXRfYXNzZXJ0b2sobWVtY21wKG1icl93YnVmLCByYnVmLCA1 MTIpKTsNCisJdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJ3cml0ZSBtbWMgNjowIDB4JWx4IDB4 JWx4IDEiLCBlYnJfd2EsIGVicl9ibGspKTsNCisJbWVtc2V0KHJidWYsIDAsIHNpemVvZihyYnVm KSk7DQorCXV0X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigicmVhZCBtbWMgNjowIDB4JWx4IDB4JWx4 IDEiLCByYSwgZWJyX2JsaykpOw0KKwl1dF9hc3NlcnRvayhtZW1jbXAoZWJyX3didWYsIHJidWYs IDUxMikpOw0KKwl1dF9hc3NlcnRvayhjb25zb2xlX3JlY29yZF9yZXNldF9lbmFibGUoKSk7DQor CXV0X2Fzc2VydGYoMCA9PSBydW5fY29tbWFuZGYobWJyX3BhcnRzX2J1ZiksICJJbnZhbGlkIHBh cnRpdGlvbnMgc3RyaW5nOiAlc1xuIiwgbWJyX3BhcnRzX2J1Zik7DQorCXV0X2Fzc2VydG9rKHJ1 bl9jb21tYW5kZigibWJyIHdyaXRlIG1tYyA2IikpOw0KKwl1dF9hc3NlcnRfbmV4dGxpbmUoIk1C Ujogd3JpdGUgc3VjY2VzcyEiKTsNCisJdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJtYnIgdmVy aWZ5IG1tYyA2IikpOw0KKwl1dF9hc3NlcnRfbmV4dGxpbmUoIk1CUjogdmVyaWZ5IHN1Y2Nlc3Mh Iik7DQorCW1lbXNldChyYnVmLCAwLCBzaXplb2YocmJ1ZikpOw0KKwl1dF9hc3NlcnRvayhydW5f Y29tbWFuZGYoInJlYWQgbW1jIDY6MCAweCVseCAweCVseCAxIiwgcmEsIGVicl9ibGspKTsNCisJ dXRfYXNzZXJ0b2sobWVtY21wKGVicl93YnVmLCByYnVmLCA1MTIpKTsNCisJdXRfYXNzZXJ0b2so dXRfY2hlY2tfY29uc29sZV9lbmQodXRzKSk7DQorCS8qDQorCTAwMDAwMWIwICAwMCAwMCAwMCAw MCAwMCAwMCAwMCAwMCAgNzggNTYgMzQgMTIgMDAgMDAgODAgMDUgIHwuLi4uLi4uLnhWNC4uLi4u fA0KKwkwMDAwMDFjMCAgMDUgMDEgMGUgMjUgMjQgMDEgMDAgNDAgIDAwIDAwIDAwIDA4IDAwIDAw IDAwIDI1ICB8Li4uJSQuLkAuLi4uLi4uJXwNCisJMDAwMDAxZDAgIDI1IDAxIDBlIDQ2IDA1IDAx IDAwIDQ4ICAwMCAwMCAwMCAwOCAwMCAwMCAwMCA0NiAgfCUuLkYuLi5ILi4uLi4uLkZ8DQorCTAw MDAwMWUwICAwNiAwMSAwZSA2NiAyNSAwMSAwMCA1MCAgMDAgMDAgMDAgMDggMDAgMDAgMDAgMDAg IHwuLi5mJS4uUC4uLi4uLi4ufA0KKwkwMDAwMDFmMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg IDAwIDAwIDAwIDAwIDAwIDAwIDU1IGFhICB8Li4uLi4uLi4uLi4uLi5VLnwNCisJKi8NCisJbWVt c2V0KHJidWYsIDAsIHNpemVvZihyYnVmKSk7DQorCXV0X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigi cmVhZCBtbWMgNjowIDB4JWx4IDAgMSIsIHJhKSk7DQorCWZvciAodW5zaWduZWQgaSA9IDA7IGkg PCBtYnJfY21wX3NpemU7IGkrKykgew0KKwkJdXRfYXNzZXJ0ZihyYnVmW21icl9jbXBfc3RhcnQg KyBpXSA9PSBtYnJfcGFydHNfcmVmX3AzW2ldLA0KKwkJCSIzUCBNQlIrMHglMDRYOiBleHBlY3Rl ZCAweCUwMlgsIGFjdHVhbDogMHglMDJYXG4iLA0KKwkJCW1icl9jbXBfc3RhcnQgKyBpLCBtYnJf cGFydHNfcmVmX3AzW2ldLCByYnVmW21icl9jbXBfc3RhcnQgKyBpXSk7DQorCX0NCisNCisJLyog VGVzdCBmb3VyIE1CUiBwYXJ0aXRpb25zICovDQorCWluaXRfd3JpdGVfYnVmZmVycyhtYnJfd2J1 Ziwgc2l6ZW9mKG1icl93YnVmKSwgZWJyX3didWYsIHNpemVvZihlYnJfd2J1ZiksIF9fTElORV9f KTsNCisJdXRfYXNzZXJ0b2soYnVpbGRfbWJyX3BhcnRzKG1icl9wYXJ0c19idWYsIHNpemVvZiht YnJfcGFydHNfYnVmKSwgNCkpOw0KKwl1dF9hc3NlcnRvayhydW5fY29tbWFuZGYoIndyaXRlIG1t YyA2OjAgMHglbHggMCAxIiwgbWJyX3dhKSk7DQorCW1lbXNldChyYnVmLCAwLCBzaXplb2YocmJ1 ZikpOw0KKwl1dF9hc3NlcnRvayhydW5fY29tbWFuZGYoInJlYWQgbW1jIDY6MCAweCVseCAwIDEi LCByYSkpOw0KKwl1dF9hc3NlcnRvayhtZW1jbXAobWJyX3didWYsIHJidWYsIDUxMikpOw0KKwl1 dF9hc3NlcnRvayhydW5fY29tbWFuZGYoIndyaXRlIG1tYyA2OjAgMHglbHggMHglbHggMSIsIGVi cl93YSwgZWJyX2JsaykpOw0KKwltZW1zZXQocmJ1ZiwgMCwgc2l6ZW9mKHJidWYpKTsNCisJdXRf YXNzZXJ0b2socnVuX2NvbW1hbmRmKCJyZWFkIG1tYyA2OjAgMHglbHggMHglbHggMSIsIHJhLCBl YnJfYmxrKSk7DQorCXV0X2Fzc2VydG9rKG1lbWNtcChlYnJfd2J1ZiwgcmJ1ZiwgNTEyKSk7DQor CXV0X2Fzc2VydG9rKGNvbnNvbGVfcmVjb3JkX3Jlc2V0X2VuYWJsZSgpKTsNCisJdXRfYXNzZXJ0 ZigwID09IHJ1bl9jb21tYW5kZihtYnJfcGFydHNfYnVmKSwgIkludmFsaWQgcGFydGl0aW9ucyBz dHJpbmc6ICVzXG4iLCBtYnJfcGFydHNfYnVmKTsNCisJdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRm KCJtYnIgd3JpdGUgbW1jIDYiKSk7DQorCXV0X2Fzc2VydF9uZXh0bGluZSgiTUJSOiB3cml0ZSBz dWNjZXNzISIpOw0KKwl1dF9hc3NlcnRvayhydW5fY29tbWFuZGYoIm1iciB2ZXJpZnkgbW1jIDYi KSk7DQorCXV0X2Fzc2VydF9uZXh0bGluZSgiTUJSOiB2ZXJpZnkgc3VjY2VzcyEiKTsNCisJbWVt c2V0KHJidWYsIDAsIHNpemVvZihyYnVmKSk7DQorCXV0X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigi cmVhZCBtbWMgNjowIDB4JWx4IDB4JWx4IDEiLCByYSwgZWJyX2JsaykpOw0KKwl1dF9hc3NlcnRv ayhtZW1jbXAoZWJyX3didWYsIHJidWYsIDUxMikpOw0KKwl1dF9hc3NlcnRvayh1dF9jaGVja19j b25zb2xlX2VuZCh1dHMpKTsNCisJLyoNCisJMDAwMDAxYjAgIDAwIDAwIDAwIDAwIDAwIDAwIDAw IDAwICA3OCA1NiAzNCAxMiAwMCAwMCA4MCAwNSAgfC4uLi4uLi4ueFY0Li4uLi58DQorCTAwMDAw MWMwICAwNSAwMSAwZSAyNSAyNCAwMSAwMCA0MCAgMDAgMDAgMDAgMDggMDAgMDAgMDAgMjUgIHwu Li4lJC4uQC4uLi4uLi4lfA0KKwkwMDAwMDFkMCAgMjUgMDEgMGUgNDYgMDUgMDEgMDAgNDggIDAw IDAwIDAwIDA4IDAwIDAwIDAwIDQ2ICB8JS4uRi4uLkguLi4uLi4uRnwNCisJMDAwMDAxZTAgIDA2 IDAxIDBlIDY2IDI1IDAxIDAwIDUwICAwMCAwMCAwMCAwOCAwMCAwMCAwMCA2NiAgfC4uLmYlLi5Q Li4uLi4uLmZ8DQorCTAwMDAwMWYwICAyNiAwMSAwZSA4NyAwNiAwMSAwMCA1OCAgMDAgMDAgMDAg MDggMDAgMDAgNTUgYWEgIHwmLi4uLi4uWC4uLi4uLlUufA0KKwkqLw0KKwltZW1zZXQocmJ1Ziwg MCwgc2l6ZW9mKHJidWYpKTsNCisJdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJyZWFkIG1tYyA2 OjAgMHglbHggMCAxIiwgcmEpKTsNCisJZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1icl9jbXBf c2l6ZTsgaSsrKSB7DQorCQl1dF9hc3NlcnRmKHJidWZbbWJyX2NtcF9zdGFydCArIGldID09IG1i cl9wYXJ0c19yZWZfcDRbaV0sDQorCQkJIjRQIE1CUisweCUwNFg6IGV4cGVjdGVkIDB4JTAyWCwg YWN0dWFsOiAweCUwMlhcbiIsDQorCQkJbWJyX2NtcF9zdGFydCArIGksIG1icl9wYXJ0c19yZWZf cDRbaV0sIHJidWZbbWJyX2NtcF9zdGFydCArIGldKTsNCisJfQ0KKw0KKwkvKiBUZXN0IGZpdmUg TUJSIHBhcnRpdGlvbnMgKi8NCisJaW5pdF93cml0ZV9idWZmZXJzKG1icl93YnVmLCBzaXplb2Yo bWJyX3didWYpLCBlYnJfd2J1Ziwgc2l6ZW9mKGVicl93YnVmKSwgX19MSU5FX18pOw0KKwl1dF9h c3NlcnRvayhidWlsZF9tYnJfcGFydHMobWJyX3BhcnRzX2J1Ziwgc2l6ZW9mKG1icl9wYXJ0c19i dWYpLCA1KSk7DQorCXV0X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigid3JpdGUgbW1jIDY6MCAweCVs eCAwIDEiLCBtYnJfd2EpKTsNCisJbWVtc2V0KHJidWYsIDAsIHNpemVvZihyYnVmKSk7DQorCXV0 X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigicmVhZCBtbWMgNjowIDB4JWx4IDAgMSIsIHJhKSk7DQor CXV0X2Fzc2VydG9rKG1lbWNtcChtYnJfd2J1ZiwgcmJ1ZiwgNTEyKSk7DQorCXV0X2Fzc2VydG9r KHJ1bl9jb21tYW5kZigid3JpdGUgbW1jIDY6MCAweCVseCAweCVseCAxIiwgZWJyX3dhLCBlYnJf YmxrKSk7DQorCW1lbXNldChyYnVmLCAwLCBzaXplb2YocmJ1ZikpOw0KKwl1dF9hc3NlcnRvayhy dW5fY29tbWFuZGYoInJlYWQgbW1jIDY6MCAweCVseCAweCVseCAxIiwgcmEsIGVicl9ibGspKTsN CisJdXRfYXNzZXJ0b2sobWVtY21wKGVicl93YnVmLCByYnVmLCA1MTIpKTsNCisJdXRfYXNzZXJ0 b2soY29uc29sZV9yZWNvcmRfcmVzZXRfZW5hYmxlKCkpOw0KKwl1dF9hc3NlcnRmKDAgPT0gcnVu X2NvbW1hbmRmKG1icl9wYXJ0c19idWYpLCAiSW52YWxpZCBwYXJ0aXRpb25zIHN0cmluZzogJXNc biIsIG1icl9wYXJ0c19idWYpOw0KKwl1dF9hc3NlcnRmKDAgPT0gcnVuX2NvbW1hbmRmKCJtYnIg d3JpdGUgbW1jIDYiKSwgIkludmFsaWQgcGFydGl0aW9ucyBzdHJpbmc6ICVzXG4iLCBtYnJfcGFy dHNfYnVmKTsNCisJdXRfYXNzZXJ0X25leHRsaW5lKCJNQlI6IHdyaXRlIHN1Y2Nlc3MhIik7DQor CXV0X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigibWJyIHZlcmlmeSBtbWMgNiIpKTsNCisJdXRfYXNz ZXJ0X25leHRsaW5lKCJNQlI6IHZlcmlmeSBzdWNjZXNzISIpOw0KKwl1dF9hc3NlcnRvayh1dF9j aGVja19jb25zb2xlX2VuZCh1dHMpKTsNCisJLyoNCisJMDAwMDAxYjAgIDAwIDAwIDAwIDAwIDAw IDAwIDAwIDAwICA3OCA1NiAzNCAxMiAwMCAwMCA4MCAwNSAgfC4uLi4uLi4ueFY0Li4uLi58DQor CTAwMDAwMWMwICAwNSAwMSAwZSAyNSAyNCAwMSAwMCA0MCAgMDAgMDAgMDAgMDggMDAgMDAgMDAg MjUgIHwuLi4lJC4uQC4uLi4uLi4lfA0KKwkwMDAwMDFkMCAgMjUgMDEgMGUgNDYgMDUgMDEgMDAg NDggIDAwIDAwIDAwIDA4IDAwIDAwIDAwIDQ2ICB8JS4uRi4uLkguLi4uLi4uRnwNCisJMDAwMDAx ZTAgIDA2IDAxIDBlIDY2IDI1IDAxIDAwIDUwICAwMCAwMCAwMCAwOCAwMCAwMCAwMCA2NiAgfC4u LmYlLi5QLi4uLi4uLmZ8DQorCTAwMDAwMWYwICAyNiAwMSAwNSBhNyAyNiAwMSAwMCA1OCAgMDAg MDAgMDAgMTAgMDAgMDAgNTUgYWEgIHwmLi4uJi4uWC4uLi4uLlUufA0KKwkqLw0KKwltZW1zZXQo cmJ1ZiwgMCwgc2l6ZW9mKHJidWYpKTsNCisJdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJyZWFk IG1tYyA2OjAgMHglbHggMCAxIiwgcmEpKTsNCisJZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1i cl9jbXBfc2l6ZTsgaSsrKSB7DQorCQl1dF9hc3NlcnRmKHJidWZbbWJyX2NtcF9zdGFydCArIGld ID09IG1icl9wYXJ0c19yZWZfcDVbaV0sDQorCQkJIjVQIE1CUisweCUwNFg6IGV4cGVjdGVkIDB4 JTAyWCwgYWN0dWFsOiAweCUwMlhcbiIsDQorCQkJbWJyX2NtcF9zdGFydCArIGksIG1icl9wYXJ0 c19yZWZfcDVbaV0sIHJidWZbbWJyX2NtcF9zdGFydCArIGldKTsNCisJfQ0KKwkvKg0KKwkwMGIw MDFiMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg3ICB8 Li4uLi4uLi4uLi4uLi4uLnwNCisJMDBiMDAxYzAgIDA3IDAxIDBlIGE3IDI2IDAxIDAwIDA4ICAw MCAwMCAwMCAwOCAwMCAwMCAwMCAwMCAgfC4uLi4mLi4uLi4uLi4uLi58DQorCTAwYjAwMWQwICAw MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIHwuLi4uLi4u Li4uLi4uLi4ufA0KKwkwMGIwMDFlMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIDAwIDAwIDAw IDAwIDAwIDAwIDAwIDAwICB8Li4uLi4uLi4uLi4uLi4uLnwNCisJMDBiMDAxZjAgIDAwIDAwIDAw IDAwIDAwIDAwIDAwIDAwICAwMCAwMCAwMCAwMCAwMCAwMCA1NSBhYSAgfC4uLi4uLi4uLi4uLi4u VS58DQorCSovDQorCW1lbXNldChyYnVmLCAwLCBzaXplb2YocmJ1ZikpOw0KKwl1dF9hc3NlcnRv ayhydW5fY29tbWFuZGYoInJlYWQgbW1jIDY6MCAweCVseCAweCVseCAxIiwgcmEsIGVicl9ibGsp KTsNCisJZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVicl9jbXBfc2l6ZTsgaSsrKSB7DQorCQl1 dF9hc3NlcnRmKHJidWZbZWJyX2NtcF9zdGFydCArIGldID09IGVicl9wYXJ0c19yZWZfcDVbaV0s DQorCQkJIjVQIEVCUisweCUwNFg6IGV4cGVjdGVkIDB4JTAyWCwgYWN0dWFsOiAweCUwMlhcbiIs DQorCQkJZWJyX2NtcF9zdGFydCArIGksIGVicl9wYXJ0c19yZWZfcDVbaV0sIHJidWZbZWJyX2Nt cF9zdGFydCArIGldKTsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorLyogRGVjbGFyZSBt YnIgdGVzdCAqLw0KK1VOSVRfVEVTVChtYnJfdGVzdF9ydW4sIFVUX1RFU1RGX0NPTlNPTEVfUkVD LCBtYnJfdGVzdCk7DQorDQoraW50IGRvX3V0X21icihzdHJ1Y3QgY21kX3RibCAqY21kdHAsIGlu dCBmbGFnLCBpbnQgYXJnYywgY2hhciAqY29uc3QgYXJndltdKQ0KK3sNCisJc3RydWN0IHVuaXRf dGVzdCAqdGVzdHMgPSBVTklUX1RFU1RfU1VJVEVfU1RBUlQobWJyX3Rlc3QpOw0KKwljb25zdCBp bnQgbl9lbnRzID0gVU5JVF9URVNUX1NVSVRFX0NPVU5UKG1icl90ZXN0KTsNCisNCisJcmV0dXJu IGNtZF91dF9jYXRlZ29yeSgibWJyIiwgIm1icl90ZXN0XyIsIHRlc3RzLCBuX2VudHMsIGFyZ2Ms IGFyZ3YpOw0KK30NCisNCitzdGF0aWMgaW50IGRtX3Rlc3RfY21kX21icihzdHJ1Y3QgdW5pdF90 ZXN0X3N0YXRlICp1dHMpDQorew0KKwlyZXR1cm4gbWJyX3Rlc3RfcnVuKHV0cyk7DQorfQ0KKw0K K0RNX1RFU1QoZG1fdGVzdF9jbWRfbWJyLCBVVF9URVNURl9TQ0FOX0ZEVCB8IFVUX1RFU1RGX0NP TlNPTEVfUkVDKTsNCmRpZmYgLS1naXQgYS90ZXN0L2NtZF91dC5jIGIvdGVzdC9jbWRfdXQuYw0K aW5kZXggMGY1NjQwOWU4MC4uMTIzZGI3Y2M3ZCAxMDA2NDQNCi0tLSBhL3Rlc3QvY21kX3V0LmMN CisrKyBiL3Rlc3QvY21kX3V0LmMNCkBAIC04Niw2ICs4NiwxMCBAQCBzdGF0aWMgc3RydWN0IGNt ZF90YmwgY21kX3V0X3N1YltdID0gew0KICNlbmRpZg0KICNpZmRlZiBDT05GSUdfVVRfTE9HDQog CVVfQk9PVF9DTURfTUtFTlQobG9nLCBDT05GSUdfU1lTX01BWEFSR1MsIDEsIGRvX3V0X2xvZywg IiIsICIiKSwNCisjZW5kaWYNCisjaWYgZGVmaW5lZChDT05GSUdfU0FOREJPWCkgJiYgZGVmaW5l ZChDT05GSUdfQ01EX01CUikgJiYgZGVmaW5lZChDT05GSUdfQ01EX01NQykgXA0KKyAgICAgICAg JiYgZGVmaW5lZChDT05GSUdfTU1DX1NBTkRCT1gpICYmIGRlZmluZWQoQ09ORklHX01NQ19XUklU RSkNCisJVV9CT09UX0NNRF9NS0VOVChtYnIsIENPTkZJR19TWVNfTUFYQVJHUywgMSwgZG9fdXRf bWJyLCAiIiwgIiIpLA0KICNlbmRpZg0KIAlVX0JPT1RfQ01EX01LRU5UKG1lbSwgQ09ORklHX1NZ U19NQVhBUkdTLCAxLCBkb191dF9tZW0sICIiLCAiIiksDQogI2lmIGRlZmluZWQoQ09ORklHX1NB TkRCT1gpICYmIGRlZmluZWQoQ09ORklHX0NNRF9TRVRFWFBSKQ0KZGlmZiAtLWdpdCBhL3Rlc3Qv ZG0vYmxrLmMgYi90ZXN0L2RtL2Jsay5jDQppbmRleCA0NDZjNDQyM2U2Li44ZWM1MDg3YmY0IDEw MDY0NA0KLS0tIGEvdGVzdC9kbS9ibGsuYw0KKysrIGIvdGVzdC9kbS9ibGsuYw0KQEAgLTgyLDEy ICs4MiwxMiBAQCBzdGF0aWMgaW50IGRtX3Rlc3RfYmxrX3VzYihzdHJ1Y3QgdW5pdF90ZXN0X3N0 YXRlICp1dHMpDQogCXV0X2Fzc2VydGVxX3B0cih1c2JfZGV2LCBkZXZfZ2V0X3BhcmVudChkZXYp KTsNCiANCiAJLyogQ2hlY2sgd2UgaGF2ZSBvbmUgYmxvY2sgZGV2aWNlIGZvciBlYWNoIG1hc3Mg c3RvcmFnZSBkZXZpY2UgKi8NCi0JdXRfYXNzZXJ0ZXEoNiwgY291bnRfYmxrX2RldmljZXMoKSk7 DQorCXV0X2Fzc2VydGVxKDcsIGNvdW50X2Jsa19kZXZpY2VzKCkpOw0KIA0KIAkvKiBOb3cgZ28g YXJvdW5kIGFnYWluLCBtYWtpbmcgc3VyZSB0aGUgb2xkIGRldmljZXMgd2VyZSB1bmJvdW5kICov DQogCXV0X2Fzc2VydG9rKHVzYl9zdG9wKCkpOw0KIAl1dF9hc3NlcnRvayh1c2JfaW5pdCgpKTsN Ci0JdXRfYXNzZXJ0ZXEoNiwgY291bnRfYmxrX2RldmljZXMoKSk7DQorCXV0X2Fzc2VydGVxKDcs IGNvdW50X2Jsa19kZXZpY2VzKCkpOw0KIAl1dF9hc3NlcnRvayh1c2Jfc3RvcCgpKTsNCiANCiAJ cmV0dXJuIDA7DQpAQCAtMTkwLDYgKzE5MCw4IEBAIHN0YXRpYyBpbnQgZG1fdGVzdF9ibGtfaXRl cihzdHJ1Y3QgdW5pdF90ZXN0X3N0YXRlICp1dHMpDQogCXV0X2Fzc2VydGVxX3N0cigibW1jMS5i bGsiLCBkZXYtPm5hbWUpOw0KIAl1dF9hc3NlcnRvayhibGtfbmV4dF9kZXZpY2VfZXJyKEJMS0Zf UkVNT1ZBQkxFLCAmZGV2KSk7DQogCXV0X2Fzc2VydGVxX3N0cigibW1jMC5ibGsiLCBkZXYtPm5h bWUpOw0KKwl1dF9hc3NlcnRvayhibGtfbmV4dF9kZXZpY2VfZXJyKEJMS0ZfUkVNT1ZBQkxFLCAm ZGV2KSk7DQorCXV0X2Fzc2VydGVxX3N0cigibW1jNi5ibGsiLCBkZXYtPm5hbWUpOw0KIAl1dF9h c3NlcnRlcSgtRU5PREVWLCBibGtfbmV4dF9kZXZpY2VfZXJyKEJMS0ZfUkVNT1ZBQkxFLCAmZGV2 KSk7DQogDQogCXV0X2Fzc2VydG9rKGJsa19maXJzdF9kZXZpY2VfZXJyKEJMS0ZfQk9USCwgJmRl dikpOw0KQEAgLTIwMSw4ICsyMDMsOCBAQCBzdGF0aWMgaW50IGRtX3Rlc3RfYmxrX2l0ZXIoc3Ry dWN0IHVuaXRfdGVzdF9zdGF0ZSAqdXRzKQ0KIAl1dF9hc3NlcnRlcSgtRU5PREVWLCBibGtfbmV4 dF9kZXZpY2VfZXJyKEJMS0ZfRklYRUQsICZkZXYpKTsNCiANCiAJdXRfYXNzZXJ0ZXEoMSwgYmxr X2NvdW50X2RldmljZXMoQkxLRl9GSVhFRCkpOw0KLQl1dF9hc3NlcnRlcSgyLCBibGtfY291bnRf ZGV2aWNlcyhCTEtGX1JFTU9WQUJMRSkpOw0KLQl1dF9hc3NlcnRlcSgzLCBibGtfY291bnRfZGV2 aWNlcyhCTEtGX0JPVEgpKTsNCisJdXRfYXNzZXJ0ZXEoMywgYmxrX2NvdW50X2RldmljZXMoQkxL Rl9SRU1PVkFCTEUpKTsNCisJdXRfYXNzZXJ0ZXEoNCwgYmxrX2NvdW50X2RldmljZXMoQkxLRl9C T1RIKSk7DQogDQogCWkgPSAwOw0KIAlibGtfZm9yZWFjaF9wcm9iZShCTEtGX0ZJWEVELCBkZXYp DQpAQCAtMjExLDE0ICsyMTMsMTYgQEAgc3RhdGljIGludCBkbV90ZXN0X2Jsa19pdGVyKHN0cnVj dCB1bml0X3Rlc3Rfc3RhdGUgKnV0cykNCiANCiAJaSA9IDA7DQogCWJsa19mb3JlYWNoX3Byb2Jl KEJMS0ZfUkVNT1ZBQkxFLCBkZXYpDQotCQl1dF9hc3NlcnRlcV9zdHIoaSsrID8gIm1tYzAuYmxr IiA6ICJtbWMxLmJsayIsIGRldi0+bmFtZSk7DQotCXV0X2Fzc2VydGVxKDIsIGkpOw0KKwkJdXRf YXNzZXJ0ZXFfc3RyKCgrK2kgPT0gMSA/ICJtbWMxLmJsayIgOiBpID09IDIgPw0KKwkJCSJtbWMw LmJsayIgOiAibW1jNi5ibGsiKSwgZGV2LT5uYW1lKTsNCisJdXRfYXNzZXJ0ZXEoMywgaSk7DQog DQogCWkgPSAwOw0KIAlibGtfZm9yZWFjaF9wcm9iZShCTEtGX0JPVEgsIGRldikNCiAJCXV0X2Fz c2VydGVxX3N0cigoKytpID09IDEgPyAibW1jMi5ibGsiIDogaSA9PSAyID8NCi0JCQkibW1jMS5i bGsiIDogIm1tYzAuYmxrIiksIGRldi0+bmFtZSk7DQotCXV0X2Fzc2VydGVxKDMsIGkpOw0KKwkJ CSJtbWMxLmJsayIgOiBpID09IDMgPyAibW1jMC5ibGsiIDogIm1tYzYuYmxrIiksDQorCQkJZGV2 LT5uYW1lKTsNCisJdXRfYXNzZXJ0ZXEoNCwgaSk7DQogDQogCXJldHVybiAwOw0KIH0NCkBAIC0y NDIsNiArMjQ2LDEwIEBAIHN0YXRpYyBpbnQgZG1fdGVzdF9ibGtfZmxhZ3Moc3RydWN0IHVuaXRf dGVzdF9zdGF0ZSAqdXRzKQ0KIAl1dF9hc3NlcnRub25udWxsKGRldik7DQogCXV0X2Fzc2VydGVx X3N0cigibW1jMC5ibGsiLCBkZXYtPm5hbWUpOw0KIA0KKwl1dF9hc3NlcnRvayhibGtfZmluZF9u ZXh0KEJMS0ZfQk9USCwgJmRldikpOw0KKwl1dF9hc3NlcnRub25udWxsKGRldik7DQorCXV0X2Fz c2VydGVxX3N0cigibW1jNi5ibGsiLCBkZXYtPm5hbWUpOw0KKw0KIAl1dF9hc3NlcnRlcSgtRU5P REVWLCBibGtfZmluZF9uZXh0KEJMS0ZfQk9USCwgJmRldikpOw0KIAl1dF9hc3NlcnRudWxsKGRl dik7DQogDQpAQCAtMjY1LDYgKzI3MywxMCBAQCBzdGF0aWMgaW50IGRtX3Rlc3RfYmxrX2ZsYWdz KHN0cnVjdCB1bml0X3Rlc3Rfc3RhdGUgKnV0cykNCiAJdXRfYXNzZXJ0bm9ubnVsbChkZXYpOw0K IAl1dF9hc3NlcnRlcV9zdHIoIm1tYzAuYmxrIiwgZGV2LT5uYW1lKTsNCiANCisJdXRfYXNzZXJ0 b2soYmxrX25leHRfZGV2aWNlX2VycihCTEtGX0JPVEgsICZkZXYpKTsNCisJdXRfYXNzZXJ0bm9u bnVsbChkZXYpOw0KKwl1dF9hc3NlcnRlcV9zdHIoIm1tYzYuYmxrIiwgZGV2LT5uYW1lKTsNCisN CiAJdXRfYXNzZXJ0ZXEoLUVOT0RFViwgYmxrX25leHRfZGV2aWNlX2VycihCTEtGX0JPVEgsICZk ZXYpKTsNCiANCiAJLyogTG9vayBvbmx5IGZvciBmaXhlZCBkZXZpY2VzICovDQpAQCAtMjgzLDYg KzI5NSwxMCBAQCBzdGF0aWMgaW50IGRtX3Rlc3RfYmxrX2ZsYWdzKHN0cnVjdCB1bml0X3Rlc3Rf c3RhdGUgKnV0cykNCiAJdXRfYXNzZXJ0bm9ubnVsbChkZXYpOw0KIAl1dF9hc3NlcnRlcV9zdHIo Im1tYzAuYmxrIiwgZGV2LT5uYW1lKTsNCiANCisJdXRfYXNzZXJ0b2soYmxrX25leHRfZGV2aWNl X2VycihCTEtGX1JFTU9WQUJMRSwgJmRldikpOw0KKwl1dF9hc3NlcnRub25udWxsKGRldik7DQor CXV0X2Fzc2VydGVxX3N0cigibW1jNi5ibGsiLCBkZXYtPm5hbWUpOw0KKw0KIAl1dF9hc3NlcnRl cSgtRU5PREVWLCBibGtfbmV4dF9kZXZpY2VfZXJyKEJMS0ZfUkVNT1ZBQkxFLCAmZGV2KSk7DQog DQogCXJldHVybiAwOw0KQEAgLTI5OSw3ICszMTUsNyBAQCBzdGF0aWMgaW50IGRtX3Rlc3RfYmxr X2ZvcmVhY2goc3RydWN0IHVuaXRfdGVzdF9zdGF0ZSAqdXRzKQ0KIAlmb3VuZCA9IDA7DQogCWJs a19mb3JlYWNoKEJMS0ZfQk9USCwgZGV2KQ0KIAkJZm91bmQgfD0gMSA8PCBkZWN0b3VsKCZkZXYt Pm5hbWVbM10sIE5VTEwpOw0KLQl1dF9hc3NlcnRlcSg3LCBmb3VuZCk7DQorCXV0X2Fzc2VydGVx KDB4NDcsIGZvdW5kKTsNCiANCiAJLyogQWxsIGRldmljZXMgYXJlIHJlbW92YWJsZSB1bnRpbCBw cm9iZWQgKi8NCiAJZm91bmQgPSAwOw0KQEAgLTMxMCwxNCArMzI2LDE0IEBAIHN0YXRpYyBpbnQg ZG1fdGVzdF9ibGtfZm9yZWFjaChzdHJ1Y3QgdW5pdF90ZXN0X3N0YXRlICp1dHMpDQogCWZvdW5k ID0gMDsNCiAJYmxrX2ZvcmVhY2goQkxLRl9SRU1PVkFCTEUsIGRldikNCiAJCWZvdW5kIHw9IDEg PDwgZGVjdG91bCgmZGV2LT5uYW1lWzNdLCBOVUxMKTsNCi0JdXRfYXNzZXJ0ZXEoNywgZm91bmQp Ow0KKwl1dF9hc3NlcnRlcSgweDQ3LCBmb3VuZCk7DQogDQogCS8qIE5vdyB0cnkgYWdhaW4gd2l0 aCB0aGUgcHJvYmluZyBmdW5jdGlvbnMgKi8NCiAJZm91bmQgPSAwOw0KIAlibGtfZm9yZWFjaF9w cm9iZShCTEtGX0JPVEgsIGRldikNCiAJCWZvdW5kIHw9IDEgPDwgZGVjdG91bCgmZGV2LT5uYW1l WzNdLCBOVUxMKTsNCi0JdXRfYXNzZXJ0ZXEoNywgZm91bmQpOw0KLQl1dF9hc3NlcnRlcSgzLCBi bGtfY291bnRfZGV2aWNlcyhCTEtGX0JPVEgpKTsNCisJdXRfYXNzZXJ0ZXEoMHg0NywgZm91bmQp Ow0KKwl1dF9hc3NlcnRlcSg0LCBibGtfY291bnRfZGV2aWNlcyhCTEtGX0JPVEgpKTsNCiANCiAJ Zm91bmQgPSAwOw0KIAlibGtfZm9yZWFjaF9wcm9iZShCTEtGX0ZJWEVELCBkZXYpDQpAQCAtMzI4 LDggKzM0NCw4IEBAIHN0YXRpYyBpbnQgZG1fdGVzdF9ibGtfZm9yZWFjaChzdHJ1Y3QgdW5pdF90 ZXN0X3N0YXRlICp1dHMpDQogCWZvdW5kID0gMDsNCiAJYmxrX2ZvcmVhY2hfcHJvYmUoQkxLRl9S RU1PVkFCTEUsIGRldikNCiAJCWZvdW5kIHw9IDEgPDwgZGVjdG91bCgmZGV2LT5uYW1lWzNdLCBO VUxMKTsNCi0JdXRfYXNzZXJ0ZXEoMywgZm91bmQpOw0KLQl1dF9hc3NlcnRlcSgyLCBibGtfY291 bnRfZGV2aWNlcyhCTEtGX1JFTU9WQUJMRSkpOw0KKwl1dF9hc3NlcnRlcSgweDQzLCBmb3VuZCk7 DQorCXV0X2Fzc2VydGVxKDMsIGJsa19jb3VudF9kZXZpY2VzKEJMS0ZfUkVNT1ZBQkxFKSk7DQog DQogCXJldHVybiAwOw0KIH0NCmRpZmYgLS1naXQgYS90ZXN0L3B5L3Rlc3RzL3Rlc3RfdXQucHkg Yi90ZXN0L3B5L3Rlc3RzL3Rlc3RfdXQucHkNCmluZGV4IDgyOTMyYTY2MmIuLjFkOTE0OWEzZjYg MTAwNjQ0DQotLS0gYS90ZXN0L3B5L3Rlc3RzL3Rlc3RfdXQucHkNCisrKyBiL3Rlc3QvcHkvdGVz dHMvdGVzdF91dC5weQ0KQEAgLTQzMyw3ICs0MzMsNiBAQCBkZWYgc2V0dXBfY2VkaXRfZmlsZShj b25zKToNCiAgICAgdV9ib290X3V0aWxzLnJ1bl9hbmRfbG9nKA0KICAgICAgICAgY29ucywgZid7 ZXhwb190b29sfSAtZSB7aW5obmFtZX0gLWwge2luZm5hbWV9IC1vIHtvdXRmbmFtZX0nKQ0KIA0K LQ0KIEBweXRlc3QubWFyay5idWlsZGNvbmZpZ3NwZWMoJ3V0X2RtJykNCiBkZWYgdGVzdF91dF9k bV9pbml0KHVfYm9vdF9jb25zb2xlKToNCiAgICAgIiIiSW5pdGlhbGl6ZSBkYXRhIGZvciB1dCBk bSB0ZXN0cy4iIiINCkBAIC00NjMsNiArNDYyLDEyIEBAIGRlZiB0ZXN0X3V0X2RtX2luaXQodV9i b290X2NvbnNvbGUpOg0KICAgICBmc19oZWxwZXIubWtfZnModV9ib290X2NvbnNvbGUuY29uZmln LCAnZXh0MicsIDB4MjAwMDAwLCAnMk1CJykNCiAgICAgZnNfaGVscGVyLm1rX2ZzKHVfYm9vdF9j b25zb2xlLmNvbmZpZywgJ2ZhdDMyJywgMHgxMDAwMDAsICcxTUInKQ0KIA0KKyAgICBtbWNfZGV2 ID0gNg0KKyAgICBmbiA9IG9zLnBhdGguam9pbih1X2Jvb3RfY29uc29sZS5jb25maWcuc291cmNl X2RpciwgZidtbWN7bW1jX2Rldn0uaW1nJykNCisgICAgZGF0YSA9IGInXHgwMCcgKiAoMTIgKiAx MDI0ICogMTAyNCkNCisgICAgd2l0aCBvcGVuKGZuLCAnd2InKSBhcyBmaDoNCisgICAgICAgIGZo LndyaXRlKGRhdGEpDQorDQogQHB5dGVzdC5tYXJrLmJ1aWxkY29uZmlnc3BlYygnY21kX2Jvb3Rm bG93JykNCiBkZWYgdGVzdF91dF9kbV9pbml0X2Jvb3RzdGQodV9ib290X2NvbnNvbGUpOg0KICAg ICAiIiJJbml0aWFsaXNlIGRhdGEgZm9yIGJvb3RmbG93IHRlc3RzIiIiDQotLSANCjIuNDEuMA0K DQoNCk9uIFNhdCwgT2N0IDA3LCAyMDIzIGF0IDA1OjEwOjAyUE0gLTA2MDAsIFNpbW9uIEdsYXNz IDxzamdAZ29vZ2xlLmNvbT4gd3JvdGU6DQo+IEhpIEFsZXhhbmRlciwNCj4gDQo+IE9uIEZyaSwg NiBPY3QgMjAyMyBhdCAyMTo1OCwgQWxleGFuZGVyIEdlbmRpbiA8YWdlbmRpbkBtYXRyb3guY29t PiB3cm90ZToNCj4gPg0KPiA+IEN1cnJlbnQgY29kZSBhbGxvd3MgdXAgdG8gMyBNQlIgcGFydGl0 aW9ucyB3aXRob3V0IGV4dGVuZGVkIG9uZS4NCj4gPiBJZiBtb3JlIHRoYW4gMyBwYXJ0aXRpb25z IGFyZSByZXF1aXJlZCwgdGhlbiBleHRlbmRlZCBwYXJ0aXRpb24ocykNCj4gPiBtdXN0IGJlIHVz ZWQuDQo+ID4gVGhpcyBjb21taXQgYWxsb3dzIHVwIHRvIDQgcHJpbWFyeSBNQlIgcGFydGl0aW9u cyB3aXRob3V0IHRoZQ0KPiA+IG5lZWQgZm9yIGV4dGVuZGVkIHBhcnRpdGlvbi4NCj4gPg0KPiA+ IEFkZCBtYnIgdGVzdCB1bml0LiBJbiBvcmRlciB0byB1c2UgdGhlIHRlc3QsIG1tYzEuaW1nIGZp bGUgb2Ygc2l6ZQ0KPiA+IDEyIE1pQiBvciBncmVhdGVyIGlzIHJlcXVpcmVkIGluIHRoZSBzYW1l IGRpcmVjdG9yeSBhcyB1LWJvb3QuDQo+ID4gUnVubmluZyBtYnIgdGVzdCBpcyBvbmx5IHN1cHBv cnRlZCBpbiBzYW5kYm94IG1vZGUuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBBbGV4IEdlbmRp biA8YWdlbmRpbkBtYXRyb3guY29tPg0KPiA+IC0tLQ0KPiA+ICBkaXNrL3BhcnRfZG9zLmMgICAg ICAgfCAgIDIgKy0NCj4gPiAgaW5jbHVkZS90ZXN0L3N1aXRlcy5oIHwgICAxICsNCj4gPiAgdGVz dC9jbWQvTWFrZWZpbGUgICAgIHwgICAxICsNCj4gPiAgdGVzdC9jbWQvbWJyLmMgICAgICAgIHwg NDQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICB0ZXN0 L2NtZF91dC5jICAgICAgICAgfCAgIDQgKw0KPiA+ICA1IGZpbGVzIGNoYW5nZWQsIDQ0NyBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0L2Nt ZC9tYnIuYw0KPiANCj4gVGhpcyBsb29rcyBPSyBhcGFydCBmcm9tIG9uZSB0aGluZy4uLmFsc28g SSBoYXZlIGEgZmV3IHN1Z2dlc3Rpb25zIC8NCj4gcXVlc3Rpb25zIGJlbG93Lg0KPiANCj4gPg0K PiA+IGRpZmYgLS1naXQgYS9kaXNrL3BhcnRfZG9zLmMgYi9kaXNrL3BhcnRfZG9zLmMNCj4gPiBp bmRleCAzMzM3NDM4NDM3Li41NjdlYWQ3NTExIDEwMDY0NA0KPiA+IC0tLSBhL2Rpc2svcGFydF9k b3MuYw0KPiA+ICsrKyBiL2Rpc2svcGFydF9kb3MuYw0KPiA+IEBAIC00NjYsNyArNDY2LDcgQEAg aW50IGxheW91dF9tYnJfcGFydGl0aW9ucyhzdHJ1Y3QgZGlza19wYXJ0aXRpb24gKnAsIGludCBj b3VudCwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBleHQgPSAmcFtpXTsNCj4gPiAgICAg ICAgIH0NCj4gPg0KPiA+IC0gICAgICAgaWYgKGNvdW50IDwgNCkNCj4gPiArICAgICAgIGlmIChj b3VudCA8PSA0KQ0KPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4gPg0KPiA+ICAgICAg ICAgaWYgKCFleHQpIHsNCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS90ZXN0L3N1aXRlcy5oIGIv aW5jbHVkZS90ZXN0L3N1aXRlcy5oDQo+ID4gaW5kZXggMWM3ZGM2NTk2Ni4uNTFhY2JlNDdiMiAx MDA2NDQNCj4gPiAtLS0gYS9pbmNsdWRlL3Rlc3Qvc3VpdGVzLmgNCj4gPiArKysgYi9pbmNsdWRl L3Rlc3Qvc3VpdGVzLmgNCj4gPiBAQCAtNDUsNiArNDUsNyBAQCBpbnQgZG9fdXRfZm9udChzdHJ1 Y3QgY21kX3RibCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqY29uc3QgYXJndltd KTsNCj4gPiAgaW50IGRvX3V0X2xpYihzdHJ1Y3QgY21kX3RibCAqY21kdHAsIGludCBmbGFnLCBp bnQgYXJnYywgY2hhciAqY29uc3QgYXJndltdKTsNCj4gPiAgaW50IGRvX3V0X2xvYWRtKHN0cnVj dCBjbWRfdGJsICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICpjb25zdCBhcmd2W10p Ow0KPiA+ICBpbnQgZG9fdXRfbG9nKHN0cnVjdCBjbWRfdGJsICpjbWR0cCwgaW50IGZsYWcsIGlu dCBhcmdjLCBjaGFyICogY29uc3QgYXJndltdKTsNCj4gPiAraW50IGRvX3V0X21icihzdHJ1Y3Qg Y21kX3RibCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqY29uc3QgYXJndltdKTsN Cj4gPiAgaW50IGRvX3V0X21lbShzdHJ1Y3QgY21kX3RibCAqY21kdHAsIGludCBmbGFnLCBpbnQg YXJnYywgY2hhciAqY29uc3QgYXJndltdKTsNCj4gPiAgaW50IGRvX3V0X29wdGVlKHN0cnVjdCBj bWRfdGJsICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICpjb25zdCBhcmd2W10pOw0K PiA+ICBpbnQgZG9fdXRfb3ZlcmxheShzdHJ1Y3QgY21kX3RibCAqY21kdHAsIGludCBmbGFnLCBp bnQgYXJnYywNCj4gPiBkaWZmIC0tZ2l0IGEvdGVzdC9jbWQvTWFrZWZpbGUgYi90ZXN0L2NtZC9N YWtlZmlsZQ0KPiA+IGluZGV4IDZlM2Q3ZTkxOWUuLjJmMjUxZTA3YjQgMTAwNjQ0DQo+ID4gLS0t IGEvdGVzdC9jbWQvTWFrZWZpbGUNCj4gPiArKysgYi90ZXN0L2NtZC9NYWtlZmlsZQ0KPiA+IEBA IC0yMyw2ICsyMyw3IEBAIG9iai0kKENPTkZJR19DTURfUElOTVVYKSArPSBwaW5tdXgubw0KPiA+ ICBvYmotJChDT05GSUdfQ01EX1BXTSkgKz0gcHdtLm8NCj4gPiAgb2JqLSQoQ09ORklHX0NNRF9T RUFNQSkgKz0gc2VhbWEubw0KPiA+ICBpZmRlZiBDT05GSUdfU0FOREJPWA0KPiA+ICtvYmotJChD T05GSUdfQ01EX01CUikgKz0gbWJyLm8NCj4gPiAgb2JqLSQoQ09ORklHX0NNRF9SRUFEKSArPSBy dy5vDQo+ID4gIG9iai0kKENPTkZJR19DTURfU0VURVhQUikgKz0gc2V0ZXhwci5vDQo+ID4gIG9i ai0kKENPTkZJR19BUk1fRkZBX1RSQU5TUE9SVCkgKz0gYXJtZmZhLm8NCj4gPiBkaWZmIC0tZ2l0 IGEvdGVzdC9jbWQvbWJyLmMgYi90ZXN0L2NtZC9tYnIuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uYmVkY2VmMDYzOA0KPiA+IC0tLSAvZGV2L251bGwN Cj4gPiArKysgYi90ZXN0L2NtZC9tYnIuYw0KPiA+IEBAIC0wLDAgKzEsNDQwIEBADQo+ID4gKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKw0KPiA+ICsvKg0KPiA+ICsgKiBUZXN0 cyBmb3IgbWJyIGNvbW1hbmQNCj4gPiArICoNCj4gPiArICogQ29weXJpZ2h0IDIwMjMgTWF0cm94 IFZpZGVvDQo+ID4gKyAqIFdyaXR0ZW4gYnkgQWxleCBHZW5kaW4gPGFnZW5kaW5AbWF0cm94LmNv bT4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8Y29tbW9uLmg+DQo+ID4gKyNpbmNs dWRlIDxjb25zb2xlLmg+DQo+ID4gKyNpbmNsdWRlIDxtYXBtZW0uaD4NCj4gPiArI2luY2x1ZGUg PHBhcnQuaD4NCj4gPiArI2luY2x1ZGUgPGFzbS9nbG9iYWxfZGF0YS5oPg0KPiA+ICsjaW5jbHVk ZSA8dGVzdC9zdWl0ZXMuaD4NCj4gPiArI2luY2x1ZGUgPHRlc3QvdXQuaD4NCj4gPiArDQo+ID4g K0RFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOw0KPiA+ICsvKg0KPiA+ICsgKiBUZXN0IHJlcXVpcmVt ZW50czoNCj4gPiArICogbW1jMS5pbWcgLSBGaWxlIHNpemUgbmVlZHMgdG8gYmUgYXQgbGVhc3Qg MTIgTWlCDQo+ID4gKyAqDQo+ID4gKyAqIENvbW1hbmQgdG8gY3JlYXRlIG1tYzEuaW1nOg0KPiA+ ICsgKiAkIGRkIGlmPS9kZXYvemVybyBvZj1tbWMxLmltZyBicz0xMk0gY291bnQ9MQ0KPiA+ICsg Kg0KPiA+ICsgKiBQbGFjZSBtbWMxLmltZyBpbnRvIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyBzYW5k Ym94ZWQgdS1ib290DQo+ID4gKyAqDQo+ID4gKyAqIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHk6 DQo+ID4gKyAqICQgLi91LWJvb3QgLVRjICd1dCBtYnInDQo+IA0KPiBUaGVzZSByZXF1aXJlbWVu dHMgbmVlZCB0byBiZSBkZWFsdCB3aXRoIGJ5IGEgdGVzdCBzY3JpcHQuIFlvdSBjYW4gc2V0DQo+ IHVwIHRoaXMgZGV2aWNlIGluIHRlc3RfdXRfZG1faW5pdF9ib290c3RkKCkuIFlvdSBtYXkgbmVl ZCB0byBjcmVhdGUgYQ0KPiBuZXcgbW1jIGFzIHRoZSBvdGhlcnMgYXJlIGluIHVzZS4NCg0KRG9u ZSwgaW4gdGVzdF91dF9kbV9pbml0KCkuIE5ldyBtbWM2IGlzIGFkZGVkIGZvciB0aGlzIHRlc3Qu DQoNCj4gDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArc3RhdGljIGNoYXIgKiBtYnJfcGFydHNfaGVh ZGVyID0gInNldGVudiBtYnJfcGFydHMgJyI7DQo+ID4gK3N0YXRpYyBjaGFyICogbWJyX3BhcnRz X3AxID0gInV1aWRfZGlzaz0weDEyMzQ1Njc4O25hbWU9cDEsc3RhcnQ9OE0sYm9vdGFibGUsc2l6 ZT0xTSxpZD0weDBlIjsNCj4gPiArc3RhdGljIGNoYXIgKiBtYnJfcGFydHNfcDIgPSAiO25hbWU9 cDIsc2l6ZT0xTSxpZD0weDBlIjsNCj4gPiArc3RhdGljIGNoYXIgKiBtYnJfcGFydHNfcDMgPSAi O25hbWU9cDMsc2l6ZT0xTSxpZD0weDBlIjsNCj4gPiArc3RhdGljIGNoYXIgKiBtYnJfcGFydHNf cDQgPSAiO25hbWU9cDQsc2l6ZT0xTSxpZD0weDBlIjsNCj4gPiArc3RhdGljIGNoYXIgKiBtYnJf cGFydHNfcDUgPSAiO25hbWU9W2V4dF0sc2l6ZT0yTSxpZD0weDA1O25hbWU9cDUsc2l6ZT0xTSxp ZD0weDBlIjsNCj4gPiArc3RhdGljIGNoYXIgKiBtYnJfcGFydHNfdGFpbCA9ICInIjsNCj4gPiAr DQo+ID4gKy8qDQo+ID4gKyAqIE9uZSBNQlIgcGFydGl0aW9uDQo+ID4gKzAwMDAwMWIwICAwMCAw MCAwMCAwMCAwMCAwMCAwMCAwMCAgNzggNTYgMzQgMTIgMDAgMDAgODAgMDUgIHwuLi4uLi4uLnhW NC4uLi4ufA0KPiA+ICswMDAwMDFjMCAgMDUgMDEgMGUgMjUgMjQgMDEgMDAgNDAgIDAwIDAwIDAw IDA4IDAwIDAwIDAwIDAwICB8Li4uJSQuLkAuLi4uLi4uLnwNCj4gPiArMDAwMDAxZDAgIDAwIDAw IDAwIDAwIDAwIDAwIDAwIDAwICAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgfC4uLi4uLi4uLi4u Li4uLi58DQo+ID4gKzAwMDAwMWUwICAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgMDAgIHwuLi4uLi4uLi4uLi4uLi4ufA0KPiA+ICswMDAwMDFmMCAgMDAgMDAg MDAgMDAgMDAgMDAgMDAgMDAgIDAwIDAwIDAwIDAwIDAwIDAwIDU1IGFhICB8Li4uLi4uLi4uLi4u Li5VLnwNCj4gPiArKi8NCj4gPiArc3RhdGljIHVuc2lnbmVkIG1icl9jbXBfc3RhcnQgPSAweDFC ODsNCj4gPiArc3RhdGljIHVuc2lnbmVkIG1icl9jbXBfc2l6ZSA9IDB4NDg7DQo+ID4gK3N0YXRp YyB1bnNpZ25lZCBjaGFyIG1icl9wYXJ0c19yZWZfcDFbXSA9IHsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg1NiwgMHgzNCwgMHgx MiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwNSwNCj4gPiArMHgwNSwgMHgwMSwgMHgwZSwgMHgyNSwg MHgyNCwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwNCj4gPiArMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwNCj4gPiArMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCj4gPiArMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHhhYQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr LyoNCj4gPiArICogVHdvIE1CUiBwYXJ0aXRpb25zDQo+ID4gKzAwMDAwMWIwICAwMCAwMCAwMCAw MCAwMCAwMCAwMCAwMCAgNzggNTYgMzQgMTIgMDAgMDAgODAgMDUgIHwuLi4uLi4uLnhWNC4uLi4u fA0KPiA+ICswMDAwMDFjMCAgMDUgMDEgMGUgMjUgMjQgMDEgMDAgNDAgIDAwIDAwIDAwIDA4IDAw IDAwIDAwIDI1ICB8Li4uJSQuLkAuLi4uLi4uJXwNCj4gPiArMDAwMDAxZDAgIDI1IDAxIDBlIDQ2 IDA1IDAxIDAwIDQ4ICAwMCAwMCAwMCAwOCAwMCAwMCAwMCAwMCAgfCUuLkYuLi5ILi4uLi4uLi58 DQo+ID4gKzAwMDAwMWUwICAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgIHwuLi4uLi4uLi4uLi4uLi4ufA0KPiA+ICswMDAwMDFmMCAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgIDAwIDAwIDAwIDAwIDAwIDAwIDU1IGFhICB8Li4uLi4uLi4uLi4uLi5VLnwN Cj4gPiArKi8NCj4gPiArc3RhdGljIHVuc2lnbmVkIGNoYXIgbWJyX3BhcnRzX3JlZl9wMltdID0g ew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDc4LCAweDU2LCAweDM0LCAweDEyLCAweDAwLCAweDAwLCAweDgwLCAweDA1LA0KPiA+ICsweDA1 LCAweDAxLCAweDBlLCAweDI1LCAweDI0LCAweDAxLCAweDAwLCAweDQwLCAweDAwLCAweDAwLCAw eDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDI1LA0KPiA+ICsweDI1LCAweDAxLCAweDBl LCAweDQ2LCAweDA1LCAweDAxLCAweDAwLCAweDQ4LCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAw eDAwLCAweDAwLCAweDAwLCAweDAwLA0KPiA+ICsweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLA0KPiA+ICsweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU1LCAweGFhDQo+ ID4gK307DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBUaHJlZSBNQlIgcGFydGl0aW9ucw0KPiA+ ICswMDAwMDFiMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIDc4IDU2IDM0IDEyIDAwIDAwIDgw IDA1ICB8Li4uLi4uLi54VjQuLi4uLnwNCj4gPiArMDAwMDAxYzAgIDA1IDAxIDBlIDI1IDI0IDAx IDAwIDQwICAwMCAwMCAwMCAwOCAwMCAwMCAwMCAyNSAgfC4uLiUkLi5ALi4uLi4uLiV8DQo+ID4g KzAwMDAwMWQwICAyNSAwMSAwZSA0NiAwNSAwMSAwMCA0OCAgMDAgMDAgMDAgMDggMDAgMDAgMDAg NDYgIHwlLi5GLi4uSC4uLi4uLi5GfA0KPiA+ICswMDAwMDFlMCAgMDYgMDEgMGUgNjYgMjUgMDEg MDAgNTAgIDAwIDAwIDAwIDA4IDAwIDAwIDAwIDAwICB8Li4uZiUuLlAuLi4uLi4uLnwNCj4gPiAr MDAwMDAxZjAgIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAwMCAwMCAwMCAwMCAwMCAwMCA1NSBh YSAgfC4uLi4uLi4uLi4uLi4uVS58DQo+ID4gKyovDQo+ID4gK3N0YXRpYyB1bnNpZ25lZCBjaGFy IG1icl9wYXJ0c19yZWZfcDNbXSA9IHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg1NiwgMHgzNCwgMHgxMiwgMHgwMCwgMHgwMCwg MHg4MCwgMHgwNSwNCj4gPiArMHgwNSwgMHgwMSwgMHgwZSwgMHgyNSwgMHgyNCwgMHgwMSwgMHgw MCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyNSwN Cj4gPiArMHgyNSwgMHgwMSwgMHgwZSwgMHg0NiwgMHgwNSwgMHgwMSwgMHgwMCwgMHg0OCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwNCj4gPiArMHgwNiwg MHgwMSwgMHgwZSwgMHg2NiwgMHgyNSwgMHgwMSwgMHgwMCwgMHg1MCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwNCj4gPiArMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHg1NSwgMHhhYQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogRm91 ciBNQlIgcGFydGl0aW9ucw0KPiA+ICswMDAwMDFiMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg IDc4IDU2IDM0IDEyIDAwIDAwIDgwIDA1ICB8Li4uLi4uLi54VjQuLi4uLnwNCj4gPiArMDAwMDAx YzAgIDA1IDAxIDBlIDI1IDI0IDAxIDAwIDQwICAwMCAwMCAwMCAwOCAwMCAwMCAwMCAyNSAgfC4u LiUkLi5ALi4uLi4uLiV8DQo+ID4gKzAwMDAwMWQwICAyNSAwMSAwZSA0NiAwNSAwMSAwMCA0OCAg MDAgMDAgMDAgMDggMDAgMDAgMDAgNDYgIHwlLi5GLi4uSC4uLi4uLi5GfA0KPiA+ICswMDAwMDFl MCAgMDYgMDEgMGUgNjYgMjUgMDEgMDAgNTAgIDAwIDAwIDAwIDA4IDAwIDAwIDAwIDY2ICB8Li4u ZiUuLlAuLi4uLi4uZnwNCj4gPiArMDAwMDAxZjAgIDI2IDAxIDBlIDg3IDA2IDAxIDAwIDU4ICAw MCAwMCAwMCAwOCAwMCAwMCA1NSBhYSAgfCYuLi4uLi5YLi4uLi4uVS58DQo+ID4gKyovDQo+ID4g K3N0YXRpYyB1bnNpZ25lZCBjaGFyIG1icl9wYXJ0c19yZWZfcDRbXSA9IHsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OCwgMHg1NiwgMHgz NCwgMHgxMiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwNSwNCj4gPiArMHgwNSwgMHgwMSwgMHgwZSwg MHgyNSwgMHgyNCwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgyNSwNCj4gPiArMHgyNSwgMHgwMSwgMHgwZSwgMHg0NiwgMHgwNSwg MHgwMSwgMHgwMCwgMHg0OCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgw MCwgMHg0NiwNCj4gPiArMHgwNiwgMHgwMSwgMHgwZSwgMHg2NiwgMHgyNSwgMHgwMSwgMHgwMCwg MHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwNCj4g PiArMHgyNiwgMHgwMSwgMHgwZSwgMHg4NywgMHgwNiwgMHgwMSwgMHgwMCwgMHg1OCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHg1NSwgMHhhYQ0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArLyoNCj4gPiArICogRml2ZSBNQlIgcGFydGl0aW9ucw0KPiA+ICswMDAwMDFiMCAgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDAgIDc4IDU2IDM0IDEyIDAwIDAwIDgwIDA1ICB8Li4uLi4uLi54 VjQuLi4uLnwNCj4gPiArMDAwMDAxYzAgIDA1IDAxIDBlIDI1IDI0IDAxIDAwIDQwICAwMCAwMCAw MCAwOCAwMCAwMCAwMCAyNSAgfC4uLiUkLi5ALi4uLi4uLiV8DQo+ID4gKzAwMDAwMWQwICAyNSAw MSAwZSA0NiAwNSAwMSAwMCA0OCAgMDAgMDAgMDAgMDggMDAgMDAgMDAgNDYgIHwlLi5GLi4uSC4u Li4uLi5GfA0KPiA+ICswMDAwMDFlMCAgMDYgMDEgMGUgNjYgMjUgMDEgMDAgNTAgIDAwIDAwIDAw IDA4IDAwIDAwIDAwIDY2ICB8Li4uZiUuLlAuLi4uLi4uZnwNCj4gPiArMDAwMDAxZjAgIDI2IDAx IDA1IGE3IDI2IDAxIDAwIDU4ICAwMCAwMCAwMCAxMCAwMCAwMCA1NSBhYSAgfCYuLi4mLi5YLi4u Li4uVS58DQo+ID4gKyovDQo+ID4gK3N0YXRpYyB1bnNpZ25lZCBjaGFyIG1icl9wYXJ0c19yZWZf cDVbXSA9IHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHg3OCwgMHg1NiwgMHgzNCwgMHgxMiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwNSwNCj4g PiArMHgwNSwgMHgwMSwgMHgwZSwgMHgyNSwgMHgyNCwgMHgwMSwgMHgwMCwgMHg0MCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyNSwNCj4gPiArMHgyNSwgMHgw MSwgMHgwZSwgMHg0NiwgMHgwNSwgMHgwMSwgMHgwMCwgMHg0OCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiwNCj4gPiArMHgwNiwgMHgwMSwgMHgwZSwgMHg2 NiwgMHgyNSwgMHgwMSwgMHgwMCwgMHg1MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwg MHgwMCwgMHgwMCwgMHg2NiwNCj4gPiArMHgyNiwgMHgwMSwgMHgwNSwgMHhhNywgMHgyNiwgMHgw MSwgMHgwMCwgMHg1OCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg1NSwg MHhhYQ0KPiA+ICt9Ow0KPiA+ICtzdGF0aWMgdW5zaWduZWQgZWJyX2NtcF9zdGFydCA9IDB4MUI4 Ow0KPiA+ICtzdGF0aWMgdW5zaWduZWQgZWJyX2NtcF9zaXplID0gMHg0ODsNCj4gPiArLyoNCj4g PiArICogRUJSDQo+ID4gKzAwYjAwMWIwICAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgMDAgMDAg MDAgMDAgMDAgMDAgMDAgODcgIHwuLi4uLi4uLi4uLi4uLi4ufA0KPiA+ICswMGIwMDFjMCAgMDcg MDEgMGUgYTcgMjYgMDEgMDAgMDggIDAwIDAwIDAwIDA4IDAwIDAwIDAwIDAwICB8Li4uLiYuLi4u Li4uLi4uLnwNCj4gPiArMDBiMDAxZDAgIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAwMCAwMCAw MCAwMCAwMCAwMCAwMCAwMCAgfC4uLi4uLi4uLi4uLi4uLi58DQo+ID4gKzAwYjAwMWUwICAwMCAw MCAwMCAwMCAwMCAwMCAwMCAwMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIHwuLi4uLi4uLi4u Li4uLi4ufA0KPiA+ICswMGIwMDFmMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIDAwIDAwIDAw IDAwIDAwIDAwIDU1IGFhICB8Li4uLi4uLi4uLi4uLi5VLnwNCj4gPiArKi8NCj4gPiArc3RhdGlj IHVuc2lnbmVkIGNoYXIgZWJyX3BhcnRzX3JlZl9wNVtdID0gew0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDg3LA0KPiA+ICsweDA3LCAweDAxLCAweDBlLCAweGE3LCAw eDI2LCAweDAxLCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDA4LCAweDAwLCAweDAw LCAweDAwLCAweDAwLA0KPiA+ICsweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LA0KPiA+ICsweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLA0KPiA+ICsweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDU1LCAweGFhDQo+ID4gK307DQo+IA0KPiBXaGF0IGRv IHlvdSB0aGluayBhYm91dCBjcmVhdGluZyB0aGVzZSBpbiBjb2RlPyBFLmcuIGhhdmUgYSBmdW5j dGlvbg0KPiB3aGljaCBvdXRwdXRzIHRoZSBieXRlcyBmb3IgYSBwYXJ0aXRpb24gYW5kIHRoZW4g Y2FsbCBpdCAxIHRvIDQgdGltZXM/DQoNCkkgZG9uJ3QgZm9sbG93IGV4YWN0IHF1ZXN0aW9uLg0K VGhlIHJlYXNvbiBmb3IgaGF2aW5nIHRoZXNlIGluIGNvZGUgd2FzIHRvIG1ha2Ugc3VyZSB0aGF0 IGFsbCBieXRlcyBpbg0KcGFydGl0aW9uIHRhYmxlIGFyZSBwcm9wZXJseSBwcm9ncmFtbWVkLiBU aGUgd2hvbGUgTUJSIHNlY3RvciBpcyBlcmFzZWQgd2l0aA0KcmFuZG9tIGRhdGEgYmVmb3JlIHBh cnRpdGlvbiB0YWJsZSBpcyB3cml0dGVuIGJ5IFUtQm9vdC4NClRoZSBtYWluIG9iamVjdGl2ZSBo ZXJlIGlzIHRvIGNoZWNrIGhvdyBwYXJ0aXRpb24gZW50cmllcyBhcmUgcHJvY2Vzc2VkIGZyb20g YQ0KdGV4dCBzdHJpbmcuIFRoaXMgaXMgd2hlcmUgdGhlIG9yaWdpbmFsIGJ1ZyB3YXMgZm91bmQs IHdoZXJlIGl0IHdhcyBpbXBvc3NpYmxlDQp0byBoYXZlIGV4YWN0bHkgNCBwcmltYXJ5IHBhcnRp dGlvbnMgaW4gdGhlIE1CUi4gU28sIHRoZSBpZGVhIG9mIGEgdGVzdCB3YXMgdG8NCmNyZWF0ZSBh IHBhcnRpdGlvbiBsYXlvdXQgYXMgYSB0ZXh0IHN0cmluZyB3aXRoIDEsIDIsIDMsIHRoZW4gNCBw cmltYXJ5DQpwYXJ0aXRpb25zLCB3cml0ZSB0aGUgbGF5b3V0IGludG8gdGVzdCBmaWxlIGFuZCB0 aGVuIHJlYWQgbGF5b3V0IGJhY2sgdG8gbWFrZQ0Kc3VyZSBhIHByb3BlciByZXN1bHQuIE9yaWdp bmFsIGNvZGUgd291bGQgZmFpbCBhdHRlbXB0aW5nIHRvIGNyZWF0ZSA0IHByaW1hcnkNCnBhcnRp dGlvbnMuDQoNCj4gDQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpbml0X2J1ZmZlcnMoY2hhciAq cmIsIHNpemVfdCByYl9zaXplLCBjaGFyICptYnJfd2IsIHNpemVfdCBtYnJfd2Jfc2l6ZSwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICBjaGFyICplYnJfd2IsIHNpemVfdCBlYnJfd2Jfc2l6 ZSwgdW5zaWduZWQgc2VlZCkNCj4gDQo+IE5lZWRzIGEgY29tbWVudA0KPiANCj4gPiArew0KPiA+ ICsgICAgICAgbWVtc2V0KHJiLCAwLCByYl9zaXplKTsNCj4gPiArICAgICAgIHdoaWxlIChtYnJf d2Jfc2l6ZS0tKSB7DQo+ID4gKyAgICAgICAgICAgICAgICptYnJfd2IrKyA9IHNlZWQ7DQo+ID4g KyAgICAgICAgICAgICAgIHNlZWQgKj0gNDM7DQo+ID4gKyAgICAgICAgICAgICAgIHNlZWQgKz0g MTcgKyBtYnJfd2Jfc2l6ZS80Ow0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAgd2hpbGUgKGVi cl93Yl9zaXplLS0pIHsNCj4gPiArICAgICAgICAgICAgICAgKmVicl93YisrID0gc2VlZDsNCj4g PiArICAgICAgICAgICAgICAgc2VlZCAqPSA0MzsNCj4gPiArICAgICAgICAgICAgICAgc2VlZCAr PSAxNyArIGVicl93Yl9zaXplLzQ7DQo+ID4gKyAgICAgICB9DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyB1bnNpZ25lZCBidWlsZF9tYnJfcGFydHMoY2hhciAqYnVmLCBzaXplX3QgYnVmX3Np emUsIHVuc2lnbmVkIG51bV9wYXJ0cykNCj4gPiArew0KPiA+ICsgICAgICAgc2l6ZV90IGJ5dGVz X3JlbWFpbmluZywgY3VyX3N0cl9zaXplOw0KPiA+ICsgICAgICAgY2hhciAqIGN1cl9idWY7DQo+ ID4gKw0KPiA+ICsgICAgICAgaWYgKDAgPT0gbnVtX3BhcnRzIHx8IDUgPCBudW1fcGFydHMgfHwg TlVMTCA9PSBidWYpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAxOw0KPiANCj4gIW51bV9w YXJ0cw0KPiAhYnVmDQoNCkRvbmUuDQoNCj4gDQo+ICh3ZSBub3JtYWxseSBwdXQgdGhlIHZhciBi ZWZvcmUgdGhlIHZhbHVlLCBzbyBudW1wYXJ0cyA+PSA1KQ0KPiANCj4gPiArDQo+ID4gKyAgICAg ICBjdXJfYnVmID0gYnVmOw0KPiA+ICsgICAgICAgKmN1cl9idWYgPSAnXDAnOw0KPiA+ICsgICAg ICAgYnl0ZXNfcmVtYWluaW5nID0gYnVmX3NpemU7DQo+ID4gKw0KPiA+ICsgICAgICAgY3VyX3N0 cl9zaXplID0gc2l6ZW9mKG1icl9wYXJ0c19oZWFkZXIpOw0KPiA+ICsgICAgICAgaWYgKDEgKyBj dXJfc3RyX3NpemUgPiBieXRlc19yZW1haW5pbmcpDQo+IA0KPiBBZ2FpbiwgYmV0dGVyIHRvIHVz ZSBjdXJfc3RyX3NpemUgKyAxDQoNCkNoYW5nZWQgdGhlIHN0eWxlIGFjY29yZGluZ2x5IGZvciB0 aGUgd2hvbGUgcGF0Y2guDQoNCj4gDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAxOw0KPiA+ ICsgICAgICAgc3RyY2F0KGN1cl9idWYsIG1icl9wYXJ0c19oZWFkZXIpOw0KPiA+ICsgICAgICAg Ynl0ZXNfcmVtYWluaW5nIC09IGN1cl9zdHJfc2l6ZTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAo MSA8PSBudW1fcGFydHMpIHsNCj4gPiArICAgICAgICAgICAgICAgY3VyX3N0cl9zaXplID0gc2l6 ZW9mKG1icl9wYXJ0c19wMSk7DQo+ID4gKyAgICAgICAgICAgICAgIGlmICgxICsgY3VyX3N0cl9z aXplID4gYnl0ZXNfcmVtYWluaW5nKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biAxOw0KPiA+ICsgICAgICAgICAgICAgICBzdHJjYXQoY3VyX2J1ZiwgbWJyX3BhcnRzX3AxKTsN Cj4gPiArICAgICAgICAgICAgICAgYnl0ZXNfcmVtYWluaW5nIC09IGN1cl9zdHJfc2l6ZTsNCj4g PiArDQo+ID4gKyAgICAgICAgICAgICAgIGlmICgyIDw9IG51bV9wYXJ0cykgew0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIGN1cl9zdHJfc2l6ZSA9IHNpemVvZihtYnJfcGFydHNfcDIpOw0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICgxICsgY3VyX3N0cl9zaXplID4gYnl0ZXNf cmVtYWluaW5nKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RyY2F0KGN1cl9idWYsIG1icl9wYXJ0c19w Mik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfcmVtYWluaW5nIC09IGN1cl9z dHJfc2l6ZTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKDMgPD0gbnVt X3BhcnRzKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJfc3RyX3Np emUgPSBzaXplb2YobWJyX3BhcnRzX3AzKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmICgxICsgY3VyX3N0cl9zaXplID4gYnl0ZXNfcmVtYWluaW5nKQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNhdChjdXJfYnVmLCBtYnJfcGFydHNfcDMpOw0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfcmVtYWluaW5nIC09IGN1 cl9zdHJfc2l6ZTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoNCA9PSBudW1fcGFydHMpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY3VyX3N0cl9zaXplID0gc2l6ZW9mKG1icl9wYXJ0c19wNCk7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgxICsgY3VyX3N0cl9zaXplID4g Ynl0ZXNfcmVtYWluaW5nKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAxOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJjYXQoY3VyX2J1ZiwgbWJyX3BhcnRzX3A0KTsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfcmVtYWluaW5nIC09IGN1cl9zdHJf c2l6ZTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoNSA9PSBudW1fcGFydHMpIHsNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cl9zdHJfc2l6ZSA9IHNpemVvZihtYnJf cGFydHNfcDUpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDEgKyBj dXJfc3RyX3NpemUgPiBieXRlc19yZW1haW5pbmcpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAxOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RyY2F0KGN1cl9idWYsIG1icl9wYXJ0c19wNSk7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBieXRlc19yZW1haW5pbmcgLT0gY3VyX3N0cl9zaXplOw0KPiA+ ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgZWxzZSBpZiAoNSA8IG51bV9wYXJ0cykNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAxOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiAr ICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGN1cl9z dHJfc2l6ZSA9IHNpemVvZihtYnJfcGFydHNfdGFpbCk7DQo+ID4gKyAgICAgICBpZiAoMSArIGN1 cl9zdHJfc2l6ZSA+IGJ5dGVzX3JlbWFpbmluZykNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJu IDE7DQo+ID4gKyAgICAgICBzdHJjYXQoY3VyX2J1ZiwgbWJyX3BhcnRzX3RhaWwpOw0KPiA+ICsN Cj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IG1i cl90ZXN0X3J1bihzdHJ1Y3QgdW5pdF90ZXN0X3N0YXRlICp1dHMpDQo+ID4gK3sNCj4gPiArICAg ICAgIHN0cnVjdCBibGtfZGVzYyAqbW1jX2Rldl9kZXNjOw0KPiA+ICsgICAgICAgdW5zaWduZWQg Y2hhciBtYnJfd2J1Zls1MTJdLCBlYnJfd2J1Zls1MTJdLCByYnVmWzUxMl07DQo+ID4gKyAgICAg ICBjaGFyIG1icl9wYXJ0c19idWZbMjU2XTsNCj4gPiArICAgICAgIHVsb25nIG1icl93YSwgZWJy X3dhLCByYSwgZWJyX2JsaywgbWJyX3BhcnRzX21heDsNCj4gPiArDQo+ID4gKyAgICAgICBtYnJf cGFydHNfbWF4ID0gMiArIHNpemVvZignXDAnKQ0KPiA+ICsgICAgICAgICAgICAgICArIHN0cmxl bihtYnJfcGFydHNfaGVhZGVyKQ0KPiA+ICsgICAgICAgICAgICAgICArIHN0cmxlbihtYnJfcGFy dHNfcDEpDQo+ID4gKyAgICAgICAgICAgICAgICsgc3RybGVuKG1icl9wYXJ0c19wMikNCj4gPiAr ICAgICAgICAgICAgICAgKyBzdHJsZW4obWJyX3BhcnRzX3AzKQ0KPiA+ICsgICAgICAgICAgICAg ICArIHN0cmxlbihtYnJfcGFydHNfcDQpDQo+ID4gKyAgICAgICAgICAgICAgICsgc3RybGVuKG1i cl9wYXJ0c19wNSkNCj4gPiArICAgICAgICAgICAgICAgKyBzdHJsZW4obWJyX3BhcnRzX3RhaWwp Ow0KPiA+ICsgICAgICAgdXRfYXNzZXJ0ZihzaXplb2YobWJyX3BhcnRzX2J1ZikgPj0gbWJyX3Bh cnRzX21heCwgIkJ1ZmZlciBhdmFpbDogJWxkOyBidWZmZXIgcmVxOiAlbGRcbiIsDQo+ID4gKyAg ICAgICAgICAgICAgIHNpemVvZihtYnJfcGFydHNfYnVmKSwgbWJyX3BhcnRzX21heCk7DQo+ID4g Kw0KPiA+ICsgICAgICAgbWJyX3dhID0gbWFwX3RvX3N5c21lbShtYnJfd2J1Zik7DQo+ID4gKyAg ICAgICBlYnJfd2EgPSBtYXBfdG9fc3lzbWVtKGVicl93YnVmKTsNCj4gPiArICAgICAgIHJhID0g bWFwX3RvX3N5c21lbShyYnVmKTsNCj4gPiArICAgICAgIGVicl9ibGsgPSAodWxvbmcpMHhCMDAw MDAgLyAweDIwMDsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBNYWtlIHN1cmUgbW1jMSBleGlzdHMg Ki8NCj4gPiArICAgICAgIHV0X2Fzc2VydGVxKDEsIGJsa19nZXRfZGV2aWNlX2J5X3N0cigibW1j IiwgIjEiLCAmbW1jX2Rldl9kZXNjKSk7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRvayhjb25zb2xl X3JlY29yZF9yZXNldF9lbmFibGUoKSk7DQo+IA0KPiBZb3Ugc2hvdWxkbid0IG5lZWQgdGhlc2UN Cg0KVGhlIGNvZGUgZG9lc24ndCB3b3JrIHdpdGhvdXQgdGhpcyBsaW5lIChjaGFuZ2VkIDEgdG8g NiBhY2NvcmRpbmcgdG8gbGF0ZXN0DQpwYXRjaCk6DQoJdXRfYXNzZXJ0ZXEoMSwgYmxrX2dldF9k ZXZpY2VfYnlfc3RyKCJtbWMiLCAiNiIsICZtbWNfZGV2X2Rlc2MpKTsNCkkgZG8gbm90IGhhdmUg ZW5vdWdoIGtub3dsZWRnZSBvZiBVLUJvb3QgdG8gZmlndXJlIG91dCB3aHkuDQoNCj4gDQo+ID4g KyAgICAgICB1dF9hc3NlcnRvayhydW5fY29tbWFuZGYoIm1tYyBkZXYgMSIpKTsNCj4gPiArICAg ICAgIHV0X2Fzc2VydF9uZXh0bGluZSgic3dpdGNoIHRvIHBhcnRpdGlvbnMgIzAsIE9LIik7DQo+ ID4gKyAgICAgICB1dF9hc3NlcnRfbmV4dGxpbmUoIm1tYzEgaXMgY3VycmVudCBkZXZpY2UiKTsN Cj4gPiArICAgICAgIHV0X2Fzc2VydG9rKHV0X2NoZWNrX2NvbnNvbGVfZW5kKHV0cykpOw0KPiA+ ICsNCj4gPiArICAgICAgIC8qIE1ha2Ugc3VyZSBtbWMxIGlzIDEyKyBNaUIgaW4gc2l6ZSAqLw0K PiA+ICsgICAgICAgdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJtbWMgcmVhZCAweCVseCAweCVs eCAxIiwgcmEsICh1bG9uZykweEJGRkUwMCAvIDB4MjAwKSk7DQo+ID4gKw0KPiA+ICsgICAgICAg LyogVGVzdCBvbmUgTUJSIHBhcnRpdGlvbiAqLw0KPiA+ICsgICAgICAgaW5pdF9idWZmZXJzKHJi dWYsIHNpemVvZihyYnVmKSwgbWJyX3didWYsIHNpemVvZihtYnJfd2J1ZiksIGVicl93YnVmLCBz aXplb2YoZWJyX3didWYpLCBfX0xJTkVfXyk7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRvayhidWls ZF9tYnJfcGFydHMobWJyX3BhcnRzX2J1Ziwgc2l6ZW9mKG1icl9wYXJ0c19idWYpLCAxKSk7DQo+ ID4gKyAgICAgICB1dF9hc3NlcnRvayhydW5fY29tbWFuZGYoIndyaXRlIG1tYyAxOjAgMHglbHgg MCAxIiwgbWJyX3dhKSk7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRvayhydW5fY29tbWFuZGYoInJl YWQgbW1jIDE6MCAweCVseCAwIDEiLCByYSkpOw0KPiA+ICsgICAgICAgdXRfYXNzZXJ0b2sobWVt Y21wKG1icl93YnVmLCByYnVmLCA1MTIpKTsNCj4gPiArICAgICAgIHV0X2Fzc2VydG9rKHJ1bl9j b21tYW5kZigid3JpdGUgbW1jIDE6MCAweCVseCAweCVseCAxIiwgZWJyX3dhLCBlYnJfYmxrKSk7 DQo+ID4gKyAgICAgICB1dF9hc3NlcnRvayhydW5fY29tbWFuZGYoInJlYWQgbW1jIDE6MCAweCVs eCAweCVseCAxIiwgcmEsIGVicl9ibGspKTsNCj4gPiArICAgICAgIHV0X2Fzc2VydG9rKG1lbWNt cChlYnJfd2J1ZiwgcmJ1ZiwgNTEyKSk7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRvayhjb25zb2xl X3JlY29yZF9yZXNldF9lbmFibGUoKSk7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRmKDAgPT0gcnVu X2NvbW1hbmRmKG1icl9wYXJ0c19idWYpLCAiSW52YWxpZCBwYXJ0aXRpb25zIHN0cmluZzogJXNc biIsIG1icl9wYXJ0c19idWYpOw0KPiA+ICsgICAgICAgdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRm KCJtYnIgd3JpdGUgbW1jIDEiKSk7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRfbmV4dGxpbmUoIk1C Ujogd3JpdGUgc3VjY2VzcyEiKTsNCj4gPiArICAgICAgIHV0X2Fzc2VydG9rKHJ1bl9jb21tYW5k ZigibWJyIHZlcmlmeSBtbWMgMSIpKTsNCj4gPiArICAgICAgIHV0X2Fzc2VydF9uZXh0bGluZSgi TUJSOiB2ZXJpZnkgc3VjY2VzcyEiKTsNCj4gPiArICAgICAgIHV0X2Fzc2VydG9rKHJ1bl9jb21t YW5kZigicmVhZCBtbWMgMTowIDB4JWx4IDB4JWx4IDEiLCByYSwgZWJyX2JsaykpOw0KPiA+ICsg ICAgICAgdXRfYXNzZXJ0b2sobWVtY21wKGVicl93YnVmLCByYnVmLCA1MTIpKTsNCj4gPiArICAg ICAgIHV0X2Fzc2VydG9rKHV0X2NoZWNrX2NvbnNvbGVfZW5kKHV0cykpOw0KPiA+ICsgICAgICAg LyoNCj4gPiArICAgICAgIDAwMDAwMWIwICAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgNzggNTYg MzQgMTIgMDAgMDAgODAgMDUgIHwuLi4uLi4uLnhWNC4uLi4ufA0KPiA+ICsgICAgICAgMDAwMDAx YzAgIDA1IDAxIDBlIDI1IDI0IDAxIDAwIDQwICAwMCAwMCAwMCAwOCAwMCAwMCAwMCAwMCAgfC4u LiUkLi5ALi4uLi4uLi58DQo+ID4gKyAgICAgICAwMDAwMDFkMCAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICB8Li4uLi4uLi4uLi4uLi4uLnwNCj4gPiAr ICAgICAgIDAwMDAwMWUwICAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgIHwuLi4uLi4uLi4uLi4uLi4ufA0KPiA+ICsgICAgICAgMDAwMDAxZjAgIDAwIDAw IDAwIDAwIDAwIDAwIDAwIDAwICAwMCAwMCAwMCAwMCAwMCAwMCA1NSBhYSAgfC4uLi4uLi4uLi4u Li4uVS58DQo+ID4gKyAgICAgICAqLw0KPiA+ICsgICAgICAgdXRfYXNzZXJ0b2socnVuX2NvbW1h bmRmKCJyZWFkIG1tYyAxOjAgMHglbHggMCAxIiwgcmEpKTsNCj4gPiArICAgICAgIGZvciAodW5z aWduZWQgaSA9IDA7IGkgPCBtYnJfY21wX3NpemU7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAg ICB1dF9hc3NlcnRmKHJidWZbbWJyX2NtcF9zdGFydCArIGldID09IG1icl9wYXJ0c19yZWZfcDFb aV0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIjFQIE1CUisweCUwNFg6IGV4cGVjdGVk IDB4JTAyWCwgYWN0dWFsOiAweCUwMlhcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg bWJyX2NtcF9zdGFydCArIGksIG1icl9wYXJ0c19yZWZfcDFbaV0sIHJidWZbbWJyX2NtcF9zdGFy dCArIGldKTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAvKiBUZXN0IHR3byBN QlIgcGFydGl0aW9ucyAqLw0KPiA+ICsgICAgICAgaW5pdF9idWZmZXJzKHJidWYsIHNpemVvZihy YnVmKSwgbWJyX3didWYsIHNpemVvZihtYnJfd2J1ZiksIGVicl93YnVmLCBzaXplb2YoZWJyX3di dWYpLCBfX0xJTkVfXyk7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRvayhidWlsZF9tYnJfcGFydHMo bWJyX3BhcnRzX2J1Ziwgc2l6ZW9mKG1icl9wYXJ0c19idWYpLCAyKSk7DQo+ID4gKyAgICAgICB1 dF9hc3NlcnRvayhydW5fY29tbWFuZGYoIndyaXRlIG1tYyAxOjAgMHglbHggMCAxIiwgbWJyX3dh KSk7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRvayhydW5fY29tbWFuZGYoInJlYWQgbW1jIDE6MCAw eCVseCAwIDEiLCByYSkpOw0KPiA+ICsgICAgICAgdXRfYXNzZXJ0b2sobWVtY21wKG1icl93YnVm LCByYnVmLCA1MTIpKTsNCj4gPiArICAgICAgIHV0X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigid3Jp dGUgbW1jIDE6MCAweCVseCAweCVseCAxIiwgZWJyX3dhLCBlYnJfYmxrKSk7DQo+ID4gKyAgICAg ICB1dF9hc3NlcnRvayhydW5fY29tbWFuZGYoInJlYWQgbW1jIDE6MCAweCVseCAweCVseCAxIiwg cmEsIGVicl9ibGspKTsNCj4gPiArICAgICAgIHV0X2Fzc2VydG9rKG1lbWNtcChlYnJfd2J1Ziwg cmJ1ZiwgNTEyKSk7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRvayhjb25zb2xlX3JlY29yZF9yZXNl dF9lbmFibGUoKSk7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRmKDAgPT0gcnVuX2NvbW1hbmRmKG1i cl9wYXJ0c19idWYpLCAiSW52YWxpZCBwYXJ0aXRpb25zIHN0cmluZzogJXNcbiIsIG1icl9wYXJ0 c19idWYpOw0KPiA+ICsgICAgICAgdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJtYnIgd3JpdGUg bW1jIDEiKSk7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRfbmV4dGxpbmUoIk1CUjogd3JpdGUgc3Vj Y2VzcyEiKTsNCj4gPiArICAgICAgIHV0X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigibWJyIHZlcmlm eSBtbWMgMSIpKTsNCj4gPiArICAgICAgIHV0X2Fzc2VydF9uZXh0bGluZSgiTUJSOiB2ZXJpZnkg c3VjY2VzcyEiKTsNCj4gPiArICAgICAgIHV0X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigicmVhZCBt bWMgMTowIDB4JWx4IDB4JWx4IDEiLCByYSwgZWJyX2JsaykpOw0KPiA+ICsgICAgICAgdXRfYXNz ZXJ0b2sobWVtY21wKGVicl93YnVmLCByYnVmLCA1MTIpKTsNCj4gPiArICAgICAgIHV0X2Fzc2Vy dG9rKHV0X2NoZWNrX2NvbnNvbGVfZW5kKHV0cykpOw0KPiA+ICsgICAgICAgLyoNCj4gPiArICAg ICAgIDAwMDAwMWIwICAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgNzggNTYgMzQgMTIgMDAgMDAg ODAgMDUgIHwuLi4uLi4uLnhWNC4uLi4ufA0KPiA+ICsgICAgICAgMDAwMDAxYzAgIDA1IDAxIDBl IDI1IDI0IDAxIDAwIDQwICAwMCAwMCAwMCAwOCAwMCAwMCAwMCAyNSAgfC4uLiUkLi5ALi4uLi4u LiV8DQo+ID4gKyAgICAgICAwMDAwMDFkMCAgMjUgMDEgMGUgNDYgMDUgMDEgMDAgNDggIDAwIDAw IDAwIDA4IDAwIDAwIDAwIDAwICB8JS4uRi4uLkguLi4uLi4uLnwNCj4gPiArICAgICAgIDAwMDAw MWUwICAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIHwu Li4uLi4uLi4uLi4uLi4ufA0KPiA+ICsgICAgICAgMDAwMDAxZjAgIDAwIDAwIDAwIDAwIDAwIDAw IDAwIDAwICAwMCAwMCAwMCAwMCAwMCAwMCA1NSBhYSAgfC4uLi4uLi4uLi4uLi4uVS58DQo+ID4g KyAgICAgICAqLw0KPiA+ICsgICAgICAgdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJyZWFkIG1t YyAxOjAgMHglbHggMCAxIiwgcmEpKTsNCj4gPiArICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7 IGkgPCBtYnJfY21wX3NpemU7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgICB1dF9hc3NlcnRm KHJidWZbbWJyX2NtcF9zdGFydCArIGldID09IG1icl9wYXJ0c19yZWZfcDJbaV0sDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIjJQIE1CUisweCUwNFg6IGV4cGVjdGVkIDB4JTAyWCwgYWN0 dWFsOiAweCUwMlhcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbWJyX2NtcF9zdGFy dCArIGksIG1icl9wYXJ0c19yZWZfcDJbaV0sIHJidWZbbWJyX2NtcF9zdGFydCArIGldKTsNCj4g PiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAvKiBUZXN0IHRocmVlIE1CUiBwYXJ0aXRp b25zICovDQo+ID4gKyAgICAgICBpbml0X2J1ZmZlcnMocmJ1Ziwgc2l6ZW9mKHJidWYpLCBtYnJf d2J1Ziwgc2l6ZW9mKG1icl93YnVmKSwgZWJyX3didWYsIHNpemVvZihlYnJfd2J1ZiksIF9fTElO RV9fKTsNCj4gPiArICAgICAgIHV0X2Fzc2VydG9rKGJ1aWxkX21icl9wYXJ0cyhtYnJfcGFydHNf YnVmLCBzaXplb2YobWJyX3BhcnRzX2J1ZiksIDMpKTsNCj4gPiArICAgICAgIHV0X2Fzc2VydG9r KHJ1bl9jb21tYW5kZigid3JpdGUgbW1jIDE6MCAweCVseCAwIDEiLCBtYnJfd2EpKTsNCj4gPiAr ICAgICAgIHV0X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigicmVhZCBtbWMgMTowIDB4JWx4IDAgMSIs IHJhKSk7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRvayhtZW1jbXAobWJyX3didWYsIHJidWYsIDUx MikpOw0KPiA+ICsgICAgICAgdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJ3cml0ZSBtbWMgMTow IDB4JWx4IDB4JWx4IDEiLCBlYnJfd2EsIGVicl9ibGspKTsNCj4gPiArICAgICAgIHV0X2Fzc2Vy dG9rKHJ1bl9jb21tYW5kZigicmVhZCBtbWMgMTowIDB4JWx4IDB4JWx4IDEiLCByYSwgZWJyX2Js aykpOw0KPiA+ICsgICAgICAgdXRfYXNzZXJ0b2sobWVtY21wKGVicl93YnVmLCByYnVmLCA1MTIp KTsNCj4gPiArICAgICAgIHV0X2Fzc2VydG9rKGNvbnNvbGVfcmVjb3JkX3Jlc2V0X2VuYWJsZSgp KTsNCj4gPiArICAgICAgIHV0X2Fzc2VydGYoMCA9PSBydW5fY29tbWFuZGYobWJyX3BhcnRzX2J1 ZiksICJJbnZhbGlkIHBhcnRpdGlvbnMgc3RyaW5nOiAlc1xuIiwgbWJyX3BhcnRzX2J1Zik7DQo+ ID4gKyAgICAgICB1dF9hc3NlcnRvayhydW5fY29tbWFuZGYoIm1iciB3cml0ZSBtbWMgMSIpKTsN Cj4gPiArICAgICAgIHV0X2Fzc2VydF9uZXh0bGluZSgiTUJSOiB3cml0ZSBzdWNjZXNzISIpOw0K PiA+ICsgICAgICAgdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJtYnIgdmVyaWZ5IG1tYyAxIikp Ow0KPiA+ICsgICAgICAgdXRfYXNzZXJ0X25leHRsaW5lKCJNQlI6IHZlcmlmeSBzdWNjZXNzISIp Ow0KPiA+ICsgICAgICAgdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJyZWFkIG1tYyAxOjAgMHgl bHggMHglbHggMSIsIHJhLCBlYnJfYmxrKSk7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRvayhtZW1j bXAoZWJyX3didWYsIHJidWYsIDUxMikpOw0KPiA+ICsgICAgICAgdXRfYXNzZXJ0b2sodXRfY2hl Y2tfY29uc29sZV9lbmQodXRzKSk7DQo+ID4gKyAgICAgICAvKg0KPiA+ICsgICAgICAgMDAwMDAx YjAgIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICA3OCA1NiAzNCAxMiAwMCAwMCA4MCAwNSAgfC4u Li4uLi4ueFY0Li4uLi58DQo+ID4gKyAgICAgICAwMDAwMDFjMCAgMDUgMDEgMGUgMjUgMjQgMDEg MDAgNDAgIDAwIDAwIDAwIDA4IDAwIDAwIDAwIDI1ICB8Li4uJSQuLkAuLi4uLi4uJXwNCj4gPiAr ICAgICAgIDAwMDAwMWQwICAyNSAwMSAwZSA0NiAwNSAwMSAwMCA0OCAgMDAgMDAgMDAgMDggMDAg MDAgMDAgNDYgIHwlLi5GLi4uSC4uLi4uLi5GfA0KPiA+ICsgICAgICAgMDAwMDAxZTAgIDA2IDAx IDBlIDY2IDI1IDAxIDAwIDUwICAwMCAwMCAwMCAwOCAwMCAwMCAwMCAwMCAgfC4uLmYlLi5QLi4u Li4uLi58DQo+ID4gKyAgICAgICAwMDAwMDFmMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIDAw IDAwIDAwIDAwIDAwIDAwIDU1IGFhICB8Li4uLi4uLi4uLi4uLi5VLnwNCj4gPiArICAgICAgICov DQo+ID4gKyAgICAgICB1dF9hc3NlcnRvayhydW5fY29tbWFuZGYoInJlYWQgbW1jIDE6MCAweCVs eCAwIDEiLCByYSkpOw0KPiA+ICsgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1icl9j bXBfc2l6ZTsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHV0X2Fzc2VydGYocmJ1ZlttYnJf Y21wX3N0YXJ0ICsgaV0gPT0gbWJyX3BhcnRzX3JlZl9wM1tpXSwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAiM1AgTUJSKzB4JTA0WDogZXhwZWN0ZWQgMHglMDJYLCBhY3R1YWw6IDB4JTAy WFxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBtYnJfY21wX3N0YXJ0ICsgaSwgbWJy X3BhcnRzX3JlZl9wM1tpXSwgcmJ1ZlttYnJfY21wX3N0YXJ0ICsgaV0pOw0KPiA+ICsgICAgICAg fQ0KPiA+ICsNCj4gPiArICAgICAgIC8qIFRlc3QgZm91ciBNQlIgcGFydGl0aW9ucyAqLw0KPiA+ ICsgICAgICAgaW5pdF9idWZmZXJzKHJidWYsIHNpemVvZihyYnVmKSwgbWJyX3didWYsIHNpemVv ZihtYnJfd2J1ZiksIGVicl93YnVmLCBzaXplb2YoZWJyX3didWYpLCBfX0xJTkVfXyk7DQo+ID4g KyAgICAgICB1dF9hc3NlcnRvayhidWlsZF9tYnJfcGFydHMobWJyX3BhcnRzX2J1Ziwgc2l6ZW9m KG1icl9wYXJ0c19idWYpLCA0KSk7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRvayhydW5fY29tbWFu ZGYoIndyaXRlIG1tYyAxOjAgMHglbHggMCAxIiwgbWJyX3dhKSk7DQo+ID4gKyAgICAgICB1dF9h c3NlcnRvayhydW5fY29tbWFuZGYoInJlYWQgbW1jIDE6MCAweCVseCAwIDEiLCByYSkpOw0KPiA+ ICsgICAgICAgdXRfYXNzZXJ0b2sobWVtY21wKG1icl93YnVmLCByYnVmLCA1MTIpKTsNCj4gPiAr ICAgICAgIHV0X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigid3JpdGUgbW1jIDE6MCAweCVseCAweCVs eCAxIiwgZWJyX3dhLCBlYnJfYmxrKSk7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRvayhydW5fY29t bWFuZGYoInJlYWQgbW1jIDE6MCAweCVseCAweCVseCAxIiwgcmEsIGVicl9ibGspKTsNCj4gPiAr ICAgICAgIHV0X2Fzc2VydG9rKG1lbWNtcChlYnJfd2J1ZiwgcmJ1ZiwgNTEyKSk7DQo+ID4gKyAg ICAgICB1dF9hc3NlcnRvayhjb25zb2xlX3JlY29yZF9yZXNldF9lbmFibGUoKSk7DQo+ID4gKyAg ICAgICB1dF9hc3NlcnRmKDAgPT0gcnVuX2NvbW1hbmRmKG1icl9wYXJ0c19idWYpLCAiSW52YWxp ZCBwYXJ0aXRpb25zIHN0cmluZzogJXNcbiIsIG1icl9wYXJ0c19idWYpOw0KPiA+ICsgICAgICAg dXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJtYnIgd3JpdGUgbW1jIDEiKSk7DQo+ID4gKyAgICAg ICB1dF9hc3NlcnRfbmV4dGxpbmUoIk1CUjogd3JpdGUgc3VjY2VzcyEiKTsNCj4gPiArICAgICAg IHV0X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigibWJyIHZlcmlmeSBtbWMgMSIpKTsNCj4gPiArICAg ICAgIHV0X2Fzc2VydF9uZXh0bGluZSgiTUJSOiB2ZXJpZnkgc3VjY2VzcyEiKTsNCj4gPiArICAg ICAgIHV0X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigicmVhZCBtbWMgMTowIDB4JWx4IDB4JWx4IDEi LCByYSwgZWJyX2JsaykpOw0KPiA+ICsgICAgICAgdXRfYXNzZXJ0b2sobWVtY21wKGVicl93YnVm LCByYnVmLCA1MTIpKTsNCj4gPiArICAgICAgIHV0X2Fzc2VydG9rKHV0X2NoZWNrX2NvbnNvbGVf ZW5kKHV0cykpOw0KPiA+ICsgICAgICAgLyoNCj4gPiArICAgICAgIDAwMDAwMWIwICAwMCAwMCAw MCAwMCAwMCAwMCAwMCAwMCAgNzggNTYgMzQgMTIgMDAgMDAgODAgMDUgIHwuLi4uLi4uLnhWNC4u Li4ufA0KPiA+ICsgICAgICAgMDAwMDAxYzAgIDA1IDAxIDBlIDI1IDI0IDAxIDAwIDQwICAwMCAw MCAwMCAwOCAwMCAwMCAwMCAyNSAgfC4uLiUkLi5ALi4uLi4uLiV8DQo+ID4gKyAgICAgICAwMDAw MDFkMCAgMjUgMDEgMGUgNDYgMDUgMDEgMDAgNDggIDAwIDAwIDAwIDA4IDAwIDAwIDAwIDQ2ICB8 JS4uRi4uLkguLi4uLi4uRnwNCj4gPiArICAgICAgIDAwMDAwMWUwICAwNiAwMSAwZSA2NiAyNSAw MSAwMCA1MCAgMDAgMDAgMDAgMDggMDAgMDAgMDAgNjYgIHwuLi5mJS4uUC4uLi4uLi5mfA0KPiA+ ICsgICAgICAgMDAwMDAxZjAgIDI2IDAxIDBlIDg3IDA2IDAxIDAwIDU4ICAwMCAwMCAwMCAwOCAw MCAwMCA1NSBhYSAgfCYuLi4uLi5YLi4uLi4uVS58DQo+ID4gKyAgICAgICAqLw0KPiA+ICsgICAg ICAgdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJyZWFkIG1tYyAxOjAgMHglbHggMCAxIiwgcmEp KTsNCj4gPiArICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYnJfY21wX3NpemU7IGkr Kykgew0KPiA+ICsgICAgICAgICAgICAgICB1dF9hc3NlcnRmKHJidWZbbWJyX2NtcF9zdGFydCAr IGldID09IG1icl9wYXJ0c19yZWZfcDRbaV0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IjRQIE1CUisweCUwNFg6IGV4cGVjdGVkIDB4JTAyWCwgYWN0dWFsOiAweCUwMlhcbiIsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgbWJyX2NtcF9zdGFydCArIGksIG1icl9wYXJ0c19yZWZf cDRbaV0sIHJidWZbbWJyX2NtcF9zdGFydCArIGldKTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ ID4gKyAgICAgICAvKiBUZXN0IGZpdmUgTUJSIHBhcnRpdGlvbnMgKi8NCj4gPiArICAgICAgIGlu aXRfYnVmZmVycyhyYnVmLCBzaXplb2YocmJ1ZiksIG1icl93YnVmLCBzaXplb2YobWJyX3didWYp LCBlYnJfd2J1Ziwgc2l6ZW9mKGVicl93YnVmKSwgX19MSU5FX18pOw0KPiA+ICsgICAgICAgdXRf YXNzZXJ0b2soYnVpbGRfbWJyX3BhcnRzKG1icl9wYXJ0c19idWYsIHNpemVvZihtYnJfcGFydHNf YnVmKSwgNSkpOw0KPiA+ICsgICAgICAgdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJ3cml0ZSBt bWMgMTowIDB4JWx4IDAgMSIsIG1icl93YSkpOw0KPiA+ICsgICAgICAgdXRfYXNzZXJ0b2socnVu X2NvbW1hbmRmKCJyZWFkIG1tYyAxOjAgMHglbHggMCAxIiwgcmEpKTsNCj4gPiArICAgICAgIHV0 X2Fzc2VydG9rKG1lbWNtcChtYnJfd2J1ZiwgcmJ1ZiwgNTEyKSk7DQo+ID4gKyAgICAgICB1dF9h c3NlcnRvayhydW5fY29tbWFuZGYoIndyaXRlIG1tYyAxOjAgMHglbHggMHglbHggMSIsIGVicl93 YSwgZWJyX2JsaykpOw0KPiA+ICsgICAgICAgdXRfYXNzZXJ0b2socnVuX2NvbW1hbmRmKCJyZWFk IG1tYyAxOjAgMHglbHggMHglbHggMSIsIHJhLCBlYnJfYmxrKSk7DQo+ID4gKyAgICAgICB1dF9h c3NlcnRvayhtZW1jbXAoZWJyX3didWYsIHJidWYsIDUxMikpOw0KPiA+ICsgICAgICAgdXRfYXNz ZXJ0b2soY29uc29sZV9yZWNvcmRfcmVzZXRfZW5hYmxlKCkpOw0KPiA+ICsgICAgICAgdXRfYXNz ZXJ0ZigwID09IHJ1bl9jb21tYW5kZihtYnJfcGFydHNfYnVmKSwgIkludmFsaWQgcGFydGl0aW9u cyBzdHJpbmc6ICVzXG4iLCBtYnJfcGFydHNfYnVmKTsNCj4gPiArICAgICAgIHV0X2Fzc2VydGYo MCA9PSBydW5fY29tbWFuZGYoIm1iciB3cml0ZSBtbWMgMSIpLCAiSW52YWxpZCBwYXJ0aXRpb25z IHN0cmluZzogJXNcbiIsIG1icl9wYXJ0c19idWYpOw0KPiA+ICsgICAgICAgdXRfYXNzZXJ0X25l eHRsaW5lKCJNQlI6IHdyaXRlIHN1Y2Nlc3MhIik7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRvayhy dW5fY29tbWFuZGYoIm1iciB2ZXJpZnkgbW1jIDEiKSk7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRf bmV4dGxpbmUoIk1CUjogdmVyaWZ5IHN1Y2Nlc3MhIik7DQo+ID4gKyAgICAgICB1dF9hc3NlcnRv ayh1dF9jaGVja19jb25zb2xlX2VuZCh1dHMpKTsNCj4gPiArICAgICAgIC8qDQo+ID4gKyAgICAg ICAwMDAwMDFiMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIDc4IDU2IDM0IDEyIDAwIDAwIDgw IDA1ICB8Li4uLi4uLi54VjQuLi4uLnwNCj4gPiArICAgICAgIDAwMDAwMWMwICAwNSAwMSAwZSAy NSAyNCAwMSAwMCA0MCAgMDAgMDAgMDAgMDggMDAgMDAgMDAgMjUgIHwuLi4lJC4uQC4uLi4uLi4l fA0KPiA+ICsgICAgICAgMDAwMDAxZDAgIDI1IDAxIDBlIDQ2IDA1IDAxIDAwIDQ4ICAwMCAwMCAw MCAwOCAwMCAwMCAwMCA0NiAgfCUuLkYuLi5ILi4uLi4uLkZ8DQo+ID4gKyAgICAgICAwMDAwMDFl MCAgMDYgMDEgMGUgNjYgMjUgMDEgMDAgNTAgIDAwIDAwIDAwIDA4IDAwIDAwIDAwIDY2ICB8Li4u ZiUuLlAuLi4uLi4uZnwNCj4gPiArICAgICAgIDAwMDAwMWYwICAyNiAwMSAwNSBhNyAyNiAwMSAw MCA1OCAgMDAgMDAgMDAgMTAgMDAgMDAgNTUgYWEgIHwmLi4uJi4uWC4uLi4uLlUufA0KPiA+ICsg ICAgICAgKi8NCj4gPiArICAgICAgIHV0X2Fzc2VydG9rKHJ1bl9jb21tYW5kZigicmVhZCBtbWMg MTowIDB4JWx4IDAgMSIsIHJhKSk7DQo+ID4gKyAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp IDwgbWJyX2NtcF9zaXplOyBpKyspIHsNCj4gPiArICAgICAgICAgICAgICAgdXRfYXNzZXJ0Zihy YnVmW21icl9jbXBfc3RhcnQgKyBpXSA9PSBtYnJfcGFydHNfcmVmX3A1W2ldLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICI1UCBNQlIrMHglMDRYOiBleHBlY3RlZCAweCUwMlgsIGFjdHVh bDogMHglMDJYXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG1icl9jbXBfc3RhcnQg KyBpLCBtYnJfcGFydHNfcmVmX3A1W2ldLCByYnVmW21icl9jbXBfc3RhcnQgKyBpXSk7DQo+ID4g KyAgICAgICB9DQo+ID4gKyAgICAgICAvKg0KPiA+ICsgICAgICAgMDBiMDAxYjAgIDAwIDAwIDAw IDAwIDAwIDAwIDAwIDAwICAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NyAgfC4uLi4uLi4uLi4uLi4u Li58DQo+ID4gKyAgICAgICAwMGIwMDFjMCAgMDcgMDEgMGUgYTcgMjYgMDEgMDAgMDggIDAwIDAw IDAwIDA4IDAwIDAwIDAwIDAwICB8Li4uLiYuLi4uLi4uLi4uLnwNCj4gPiArICAgICAgIDAwYjAw MWQwICAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIHwu Li4uLi4uLi4uLi4uLi4ufA0KPiA+ICsgICAgICAgMDBiMDAxZTAgIDAwIDAwIDAwIDAwIDAwIDAw IDAwIDAwICAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgfC4uLi4uLi4uLi4uLi4uLi58DQo+ID4g KyAgICAgICAwMGIwMDFmMCAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIDAwIDAwIDAwIDAwIDAw IDAwIDU1IGFhICB8Li4uLi4uLi4uLi4uLi5VLnwNCj4gPiArICAgICAgICovDQo+ID4gKyAgICAg ICB1dF9hc3NlcnRvayhydW5fY29tbWFuZGYoInJlYWQgbW1jIDE6MCAweCVseCAweCVseCAxIiwg cmEsIGVicl9ibGspKTsNCj4gPiArICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlYnJf Y21wX3NpemU7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgICB1dF9hc3NlcnRmKHJidWZbZWJy X2NtcF9zdGFydCArIGldID09IGVicl9wYXJ0c19yZWZfcDVbaV0sDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIjVQIEVCUisweCUwNFg6IGV4cGVjdGVkIDB4JTAyWCwgYWN0dWFsOiAweCUw MlhcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZWJyX2NtcF9zdGFydCArIGksIGVi cl9wYXJ0c19yZWZfcDVbaV0sIHJidWZbZWJyX2NtcF9zdGFydCArIGldKTsNCj4gPiArICAgICAg IH0NCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyog RGVjbGFyZSBtYnIgdGVzdCAqLw0KPiA+ICtVTklUX1RFU1QobWJyX3Rlc3RfcnVuLCBVVF9URVNU Rl9DT05TT0xFX1JFQywgbWJyX3Rlc3QpOw0KPiA+ICsNCj4gPiAraW50IGRvX3V0X21icihzdHJ1 Y3QgY21kX3RibCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqY29uc3QgYXJndltd KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgdW5pdF90ZXN0ICp0ZXN0cyA9IFVOSVRfVEVT VF9TVUlURV9TVEFSVChtYnJfdGVzdCk7DQo+ID4gKyAgICAgICBjb25zdCBpbnQgbl9lbnRzID0g VU5JVF9URVNUX1NVSVRFX0NPVU5UKG1icl90ZXN0KTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1 cm4gY21kX3V0X2NhdGVnb3J5KCJtYnIiLCAibWJyX3Rlc3RfIiwgdGVzdHMsIG5fZW50cywgYXJn YywgYXJndik7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEvdGVzdC9jbWRfdXQuYyBiL3Rlc3Qv Y21kX3V0LmMNCj4gPiBpbmRleCAwZjU2NDA5ZTgwLi4xMjNkYjdjYzdkIDEwMDY0NA0KPiA+IC0t LSBhL3Rlc3QvY21kX3V0LmMNCj4gPiArKysgYi90ZXN0L2NtZF91dC5jDQo+ID4gQEAgLTg2LDYg Kzg2LDEwIEBAIHN0YXRpYyBzdHJ1Y3QgY21kX3RibCBjbWRfdXRfc3ViW10gPSB7DQo+ID4gICNl bmRpZg0KPiA+ICAjaWZkZWYgQ09ORklHX1VUX0xPRw0KPiA+ICAgICAgICAgVV9CT09UX0NNRF9N S0VOVChsb2csIENPTkZJR19TWVNfTUFYQVJHUywgMSwgZG9fdXRfbG9nLCAiIiwgIiIpLA0KPiA+ ICsjZW5kaWYNCj4gPiArI2lmIGRlZmluZWQoQ09ORklHX1NBTkRCT1gpICYmIGRlZmluZWQoQ09O RklHX0NNRF9NQlIpICYmIGRlZmluZWQoQ09ORklHX0NNRF9NTUMpIFwNCj4gPiArICAgICAgICAm JiBkZWZpbmVkKENPTkZJR19NTUNfU0FOREJPWCkgJiYgZGVmaW5lZChDT05GSUdfTU1DX1dSSVRF KQ0KPiA+ICsgICAgICAgVV9CT09UX0NNRF9NS0VOVChtYnIsIENPTkZJR19TWVNfTUFYQVJHUywg MSwgZG9fdXRfbWJyLCAiIiwgIiIpLA0KPiA+ICAjZW5kaWYNCj4gPiAgICAgICAgIFVfQk9PVF9D TURfTUtFTlQobWVtLCBDT05GSUdfU1lTX01BWEFSR1MsIDEsIGRvX3V0X21lbSwgIiIsICIiKSwN Cj4gPiAgI2lmIGRlZmluZWQoQ09ORklHX1NBTkRCT1gpICYmIGRlZmluZWQoQ09ORklHX0NNRF9T RVRFWFBSKQ0KPiA+IC0tDQo+ID4gMi40MS4wDQo+IA0KPiBSZWdhcmRzLA0KPiBTaW1vbg==