Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp2508098rwd; Fri, 9 Jun 2023 12:17:36 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4u6v3R/JW9eFi45xVZblVC0CTRW0HOmQI1vGYq0L4r6oR5d/hRCrZKPAj006W/GvwoLKTR X-Received: by 2002:a17:90a:303:b0:256:d4a:ea4c with SMTP id 3-20020a17090a030300b002560d4aea4cmr1927423pje.30.1686338256446; Fri, 09 Jun 2023 12:17:36 -0700 (PDT) Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z12-20020a17090a8b8c00b0023b481b8dcesi4841333pjn.102.2023.06.09.12.17.24; Fri, 09 Jun 2023 12:17:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b="D6/ANwJv"; dkim=fail header.i=@mediateko365.onmicrosoft.com header.s=selector2-mediateko365-onmicrosoft-com header.b=A4iGr4HX; arc=fail (signature failed); spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230062AbjFITFM (ORCPT + 61 others); Fri, 9 Jun 2023 15:05:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33082 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229603AbjFITFL (ORCPT ); Fri, 9 Jun 2023 15:05:11 -0400 Received: from mailgw01.mediatek.com (unknown [60.244.123.138]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 45BD735B3 for ; Fri, 9 Jun 2023 12:05:06 -0700 (PDT) X-UUID: 884fd12606f811ee9cb5633481061a41-20230610 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=MIME-Version:Content-Transfer-Encoding:Content-ID:Content-Type:In-Reply-To:References:Message-ID:Date:Subject:CC:To:From; bh=rx7174Tq5LFu21HlAIdfrv8AY1JtA8S0pttQWMNv0J4=; b=D6/ANwJvjG9aE7kpjKQDN1cSgsfhq7xkmfrf4dS+K2H1bNw5L0m4khIJ8nb1uvfluZgt4U/HbAhtYcZsSGd3A5y0h4EM+ZTzMhsuSRYQS6mNpdRLbpvnqLVED+sJoyQ3kbAcI6190AcKqJbY4e4JgMqLKRf/lJKMaPhiAI889q4=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.26,REQID:1f39308e-4ddc-46ec-8717-b0106744a3c0,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:51,FILE:0,BULK:0,RULE:Release_Ham,ACTION :release,TS:51 X-CID-INFO: VERSION:1.1.26,REQID:1f39308e-4ddc-46ec-8717-b0106744a3c0,IP:0,URL :0,TC:0,Content:0,EDM:0,RT:0,SF:51,FILE:0,BULK:0,RULE:Release_Ham,ACTION:r elease,TS:51 X-CID-META: VersionHash:cb9a4e1,CLOUDID:ffcb996e-2f20-4998-991c-3b78627e4938,B ulkID:230610001557551Q2D5O,BulkQuantity:13,Recheck:0,SF:29|28|17|19|48|102 ,TC:nil,Content:0,EDM:-3,IP:nil,URL:11|1,File:nil,Bulk:40,QS:nil,BEC:nil,C OL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO X-CID-BVR: 0,NGT X-CID-BAS: 0,NGT,0,_ X-CID-FACTOR: TF_CID_SPAM_ULN,TF_CID_SPAM_SNR,TF_CID_SPAM_SDM,TF_CID_SPAM_FAS, TF_CID_SPAM_FSD,TF_CID_SPAM_OBB X-UUID: 884fd12606f811ee9cb5633481061a41-20230610 Received: from mtkmbs13n1.mediatek.inc [(172.21.101.193)] by mailgw01.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 1067545845; Sat, 10 Jun 2023 03:05:00 +0800 Received: from mtkmbs10n2.mediatek.inc (172.21.101.183) by mtkmbs11n2.mediatek.inc (172.21.101.187) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Sat, 10 Jun 2023 03:04:59 +0800 Received: from APC01-TYZ-obe.outbound.protection.outlook.com (172.21.101.237) by mtkmbs10n2.mediatek.inc (172.21.101.183) with Microsoft SMTP Server id 15.2.1118.26 via Frontend Transport; Sat, 10 Jun 2023 03:04:58 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ecvX3cOptpYGRINq3j0geB6ap2KeXrUbX+FHUjlKQHCSCa2/c2s9KjVuvep8I5/fBkXYUxfkd8+rFgu3cUWQYfg0zqMQfwrqqNwmPYwOfO4mA1A6SSD82pCYE5F+HvRH3tO9TA4hABS4k3Y+vGoEXF6JRw8Rtsh7s20Crs9nM0ohxVpbOtUJRlqFic0fEA6U6rDvdif8dmmXithXo/0JlukHP6ESNY+knY/xyzQryn4sOqg3BmhtctStZTUkbGWfh5Lf3nPysOOW2+BeQ375Ho2iMx/xyxuSP9JF3/O3fDCpjA2lFMZ+VFJKUqH9zKJ/wLKpzzvvOLXHIEX40Iq47Q== 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=rx7174Tq5LFu21HlAIdfrv8AY1JtA8S0pttQWMNv0J4=; b=CCY50ibehCwyuYMQwuUyuccXaYgBhRUia9WGA0gN7C95m4AVP0cOvvShY1kO+ipv+FAObGuK4or7AIFIJbpyL9i3Q0FldfV9MMru+hnZpvegL0oPG0SHMsK8BrMLy6AGln9Y726j0qg07JTz2ciGYxDCoNjMdHdsuFQrGGx6fwlAX4HtwswMvYuEa3F8RI9+jp2Po6JPw528V+e7Lj8NXYSdKmN2NN2CeoITJMRGP/MM9o9dT6Gm38yCS31DXkjd28G77CZqqTz+NLVtXqawrfXFb3hZDLGgjOqrz3juu2v/16t01SFciicHOLrmZtYiR3+aRmKZTdNM0B0T+p+yJQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mediatek.com; dmarc=pass action=none header.from=mediatek.com; dkim=pass header.d=mediatek.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mediateko365.onmicrosoft.com; s=selector2-mediateko365-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rx7174Tq5LFu21HlAIdfrv8AY1JtA8S0pttQWMNv0J4=; b=A4iGr4HX0eLqRxzvLfol8un2iPC7ktKxK202t7hFwasQbNN4Xk4LoLNCTlDwpNHimFvxYe9HVODMjOaD/s7cPmht60lpAP2LpK5A1tajwhIjTqPUDVMfOzJRXEc+HN2FPKrDiGlMK/CSNoGt+54hufletR3a4RVMG20tn1kXRv8= Received: from SEZPR03MB6468.apcprd03.prod.outlook.com (2603:1096:101:47::9) by SI2PR03MB5355.apcprd03.prod.outlook.com (2603:1096:4:ed::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.32; Fri, 9 Jun 2023 19:04:55 +0000 Received: from SEZPR03MB6468.apcprd03.prod.outlook.com ([fe80::662b:189f:a0dd:6734]) by SEZPR03MB6468.apcprd03.prod.outlook.com ([fe80::662b:189f:a0dd:6734%5]) with mapi id 15.20.6455.037; Fri, 9 Jun 2023 19:04:55 +0000 From: shayne.chen@mediatek.com To: "lorenzo@kernel.org" CC: "linux-wireless@vger.kernel.org" , "lorenzo.bianconi@redhat.com" , "nbd@nbd.name" , =?utf-8?B?RXZlbHluIFRzYWkgKOiUoeePiumIuik=?= , Ryder Lee , =?utf-8?B?RGVyZW4gV3UgKOatpuW+t+S7gSk=?= Subject: Re: [PATCH v2 15/15] wifi: mt76: connac: add connac3 mac library Thread-Topic: [PATCH v2 15/15] wifi: mt76: connac: add connac3 mac library Thread-Index: AQHZmqrcRFMjzjTTTkKq81fe2frDeq+CpeQAgAAFVgCAAAEZgIAAAdsAgAAXFdCAAAr1AIAABP4A Date: Fri, 9 Jun 2023 19:04:55 +0000 Message-ID: References: <5010e5e508e89041451288659390fde5ded94db5.camel@mediatek.com> <82971c76999ae90be44a524fb95141c5051a9ba0.camel@mediatek.com> <3cae89c45b0f17eaab20876eb50572ef202f92bc.camel@mediatek.com> In-Reply-To: <3cae89c45b0f17eaab20876eb50572ef202f92bc.camel@mediatek.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Evolution 3.28.5-0ubuntu0.18.04.2 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=mediatek.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SEZPR03MB6468:EE_|SI2PR03MB5355:EE_ x-ms-office365-filtering-correlation-id: 6feb709d-e82a-4b5b-828f-08db691c6975 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: QRgtkColFyTKn/VX6u0koJq9ex06mPbWJu5aLdCcN1TR3d8aiEleaCqNdFDEg6tnCN3zEa3Km4iA5/RetqhHn059sMpEMc//+YSEDbp9jH1pUfyJeyZWpwCLrutCuLKKiybWvIiEHpGT60aNMwbj2DiqJZTwSoG1MqamFpL+hbUVnwpLmy7bVEG5RCIKwE4gtFUGz4J5I/JYXyUOSQvlhtRCg4pqZYu4C+2gBxkTLuUzVHDG7D0xBPyVebbLTlMeg+92ZAoz9uKOMwiinpKxmxns5fnebB4lC25/ofka479wR6KC/TtbEFjdPtKH5doNSB3Ws17nOv0OIV6DLBI0DwHsMqElSiYyASefUpmIxbMjwsC18jB2BrBhceu7YaHSc6DfaL7Bf44dT26jHaoe8KsFTx0CMRdt8/94a+Vrzu9a9VTg7SgiMuRA1lrD7SgFs+kQ4ttwVDnrjtDMLhxhlG8FD8WlQmlaRhpYq655uNkrCSj8iQ/qtfjuiL231Wx8sGsPt7OdZ/8zX3KQ3gRiZ8mKwZFZZULN7YGcHvcknQ2QkVd41jeAPofoJOVJ0Zg16aL7Vc7BJHFa0zGRi6wnmVeDaxV2KHi9aL0ntsUXZGAUD8KO8aiwFWuedP78gIBkbLsKOkLbl8frXkyMPE12PGO3ehPSt9EhgXfUj1CisoY= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SEZPR03MB6468.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(376002)(39860400002)(366004)(136003)(396003)(346002)(451199021)(66946007)(66476007)(91956017)(2906002)(6916009)(30864003)(478600001)(54906003)(66446008)(4326008)(8936002)(8676002)(64756008)(316002)(41300700001)(5660300002)(66556008)(76116006)(71200400001)(6486002)(6506007)(26005)(6512007)(107886003)(186003)(2616005)(38100700002)(83380400001)(85182001)(36756003)(86362001)(38070700005)(122000001)(99106002)(559001)(579004)(309714004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RlU1eDAzWGFWRXQ5bkhVUVNDb3FmczN5L2t1eTU1aXQ0R3VuV1hKdkxUOXNa?= =?utf-8?B?ZHNKejlwQXhmK1Q0Q3RwbThEYm5IcU1sclVtck9naG8zQWdnZFg0SXpjZGU4?= =?utf-8?B?QkRhNlpaOFRsMG9HZm9tdHB0TDlXcmpNVVRENjFFWWFMMFBjV2RxSWUyQ0Q1?= =?utf-8?B?NktGUWNmZkw1WVBwcnVpM1d3UGQwNjdZZ1pMamxENFVuNlZPVlpBbjJCRzZv?= =?utf-8?B?TGZiSmc4VDhaUERBRUxtK1JjNTY3Y3pwbTlQd096TFJMRkdreTdiWmxIbnFq?= =?utf-8?B?U3NMSEVkZ1d1M1g1TE96U3JIVjlHM0ZtZTFTTGhCV0Q3RVZkZnRDU2ZCRXdk?= =?utf-8?B?NW1UU3hMeGdBSUV3V2RIcUltTmdKeWFHQ01ROTM1Q3NydW1rQTZ4YWN6SE51?= =?utf-8?B?SU4rNTYyTUx0elFTN01IYkFPeUNxUWo0L0IyU1dHcjdKVWVLYnl0ekd5SlNF?= =?utf-8?B?N20rUEIxaWVaRnk4dlFTMkxNbVR3QmhHcTk2NDRUSWdFdW96Nzgva2x4T2Y0?= =?utf-8?B?RGpmMmhXbk4xZHN3SFlSMUVhaTFhOFRTMlUvR1lESzlFMml6ODQ4T2NEQzNh?= =?utf-8?B?M3hrQTRLcUlLeGlNQWcyNFc4MmF1ekh3YmI4WXNySGdOSE1JcVptejNmKytG?= =?utf-8?B?enRmRC9oenpmb09ZaUQvTjJtOUlxOVdCekoxQmovbitKdThKRHdSUVZRRHhV?= =?utf-8?B?cG5tRVBiUS9DcngvQ2gzYTVBWjcrMHhaVWQ3OGtuUG4zdDFIQytUYThHZkNT?= =?utf-8?B?Wk5vZTVOZGtmY2hkaWsyTE9FM0FuUlZzM3BKaEh1OUhlNDJ1YWhVYjVyTXBL?= =?utf-8?B?Y2grelIxSDN3c2ZFVWoxZ2luRzJmQjVEUHNoN2hJN3RBM0NvOGVFdmVDZkZv?= =?utf-8?B?dFVuSHpiWTQrUElBVnduczhHci9SV2FYUWdSSWhFWXpBOGRIT0FOK2NJNWRp?= =?utf-8?B?UG5CMG9aNHJFclBZaXh0MGR5WmFaUnJ3YTBmN0lPNGh5Yzk3NGJDWEJBUi9N?= =?utf-8?B?UkJ6bGErbUlkZjE3bUgrMUVoSkpCekpiZ0QvMnVsOUdyWWdoQ2pXbWpham1Z?= =?utf-8?B?eGlWQkRLVlRJVzFsZ2F0emxlZkJZRitCK3kreWcyaVo0VXBKTHB4RUw5SDM0?= =?utf-8?B?c01yWm9TRTBvbXQrT0Vva1pqRzRWQVJJNmIrL3d4S2FXZEFNWmhIdGV5V2JJ?= =?utf-8?B?dEM0ODNQcXc2UERtQjRzT0ZLTXhzNm1mUUVYQ3JxbkRPc1dNbFcvK0I2S0FH?= =?utf-8?B?ejBWb2FDQnV0SnVsUzBxTGtDQWVuS1JyeE1KS1FOYy9NdUlVb2h1VHJsdE1a?= =?utf-8?B?L1N5UEQvZ21lZkNiUDFieng1Sm5UNXVVcUFCeXQ0OGQ5bVgxcExWZHlGSmN5?= =?utf-8?B?bHVXYXB2K3ZaZDJLS0RqOVR0aWFqN1h0bU9aTy9iMXlmTHAwaWk0dmgybzc1?= =?utf-8?B?SzN6OHJObVpoN0gwZFliT3lKQzUrUnF2V096MmZCSDNaTGNLNjRGWk4rd005?= =?utf-8?B?V1p6N3JxblA0WUhoRExhSG5JcUhjRTV2VHBGYVV2cFFPZmtBWG1NQTlCalds?= =?utf-8?B?NW5RclNYK2FSVFp4eUc5YmYwRXRFRjBKN29wQkFrdnM1L08raHRFQU1aWEtz?= =?utf-8?B?Qlp4dytaVnhyYThZdWFZVlJjWCtIbXBscWpXVTZNeS8xblVKWGd1VTNMSEpU?= =?utf-8?B?YXNiUEJwTEkvbW1rZk5Ucm9jVGIxVitTVVlnMElwNEc0Y3J5OWFPUlhwOU9j?= =?utf-8?B?M3RmN29MZnREREM5U3NSSXVPWTMwekZrbDZKOGRiNkxyR0crdHVxcVo4Q0hL?= =?utf-8?B?UnNQcFNIMzI4MFNGWkp5SHdHeUVDUElodDZQRG5kaS9GaVd2b1lURWpFOHZM?= =?utf-8?B?dWpUclA0ai90YkVnMGg1bk9MSzFCTnU3b1RpTDhHV1pFTUxObXdjQWRrNVJJ?= =?utf-8?B?R0QxOTdRZE9QMFNzcVcwbERaV2ZHVk9tZ0FjWkh3eGJDT0ZrSm11MXE0UTNL?= =?utf-8?B?VlVvSXZTWTNGekJzUUtFSXBUZGdZWHlIM2k5RHgwNW5ERHpQVkw0SnVwSmJZ?= =?utf-8?B?L1ptTjVPRnh3dFcrZ2JpbEdnVzlsRFhzL0QwQlVLUGpIaTNPWmVYU09CMUk3?= =?utf-8?B?OHBkcEZlanU4N1NFdjhXNU9Mc01OZ3h4NXZ3cmU1QzJMNlhzb2NhclBrenJi?= =?utf-8?B?UkE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <4B2674BDECE6EB4B8A79B5D0E46D8A7B@apcprd03.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SEZPR03MB6468.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6feb709d-e82a-4b5b-828f-08db691c6975 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jun 2023 19:04:55.1679 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a7687ede-7a6b-4ef6-bace-642f677fbe31 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: UeQ6MlMNidfKwxu+Q7iAWoPqJ3co8asZG5+TJv7+AOclaXdHXO+Hok0j0IN7mgo+M+NCUlkIF6w/4yw79/RhQFN1XmgpogM0u0bH8cdJjlE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SI2PR03MB5355 X-MTK: N X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org T24gU2F0LCAyMDIzLTA2LTEwIGF0IDAyOjQ3ICswODAwLCBTaGF5bmUgQ2hlbiB3cm90ZToNCj4g PiA+IE9uIEZyaSwgMjAyMy0wNi0wOSBhdCAxODozNCArMDIwMCwgbG9yZW56by5iaWFuY29uaUBy ZWRoYXQuY29tDQo+ID4gDQo+ID4gd3JvdGU6DQo+ID4gPiA+IE9uIEp1biAwOSwgUnlkZXIgTGVl IHdyb3RlOg0KPiA+ID4gPiA+IE9uIEZyaSwgMjAyMy0wNi0wOSBhdCAxMDoxNSArMDIwMCwgTG9y ZW56byBCaWFuY29uaSB3cm90ZToNCj4gPiA+ID4gPiA+ICAgDQo+ID4gPiA+ID4gPiBFeHRlcm5h bCBlbWFpbCA6IFBsZWFzZSBkbyBub3QgY2xpY2sgbGlua3Mgb3Igb3Blbg0KPiA+IA0KPiA+IGF0 dGFjaG1lbnRzIA0KPiA+ID4gPiA+ID4gdW50aWwgeW91IGhhdmUgdmVyaWZpZWQgdGhlIHNlbmRl ciBvciB0aGUgY29udGVudC4NCj4gPiA+ID4gPiA+ICBJbnRyb2R1Y2UgY29ubmFjM19tYWMgaW4g bXQ3Nl9jb25uYWMgbGlicmFyeSB0byByZXVzZSBtYWMNCj4gPiANCj4gPiBjb2RlIA0KPiA+ID4g PiA+ID4gc2hhcmVkIGJldHdlZW4gV2lGaTcgY2hpcHNldHMuDQo+ID4gPiA+ID4gPiANCj4gPiA+ ID4gPiA+IFNpZ25lZC1vZmYtYnk6IExvcmVuem8gQmlhbmNvbmkgPGxvcmVuem9Aa2VybmVsLm9y Zz4NCj4gDQo+IEhpIExvcmVuem8sDQo+IA0KPiBJIGRvbid0IHRoaW5rIGl0J3MgYSBnb29kIGlk ZWEgdG8gc3RhcnQgc2hhcmluZyBtYWMgb3IgbWN1IGZ1bmN0aW9ucw0KPiBmb3IgYWxsIFdpRmk3 IGNoaXBzZXRzIGF0IHN1Y2ggZWFybHkgc3RhZ2UuDQo+IA0KPiBUaGUgZHJpdmVyIGlzIHN0aWxs IHVuZGVyIG1hbnkgcHJvY2Vzc2VzIG9mIGJ1ZyBmaXhpbmcsIHBlcmZvcm1hbmNlDQo+IHR1bmlu ZywgYW5kIG5ldyBmZWF0dXJlcyBkZXZlbG9wbWVudC4NCj4gQ2hpcHNldHMgdGhhdCBtYWlubHkg dXNlZCBmb3IgQVAgb3IgU1RBIHNlZ21lbnQgaGF2ZSBkaWZmZXJlbnQNCj4gZGVzaWducw0KPiBh bmQgc2hvdWxkIGZhY2UgZGlmZmVyZW50IHByb2JsZW1zLg0KPiANCj4gU3RhcnQgc2hhcmluZyB0 aGUgY29kZSBhdCBlYXJseSBzdGFnZSB3aWxsIGJyZWFrIHRoZSBpbmRlcGVuZGVuY2UsDQo+IG1h a2UNCj4gaXQgbW9yZSBoYXJkIHRvIGRldmVsb3AgYW5kIGRvIHZlcmlmaWNhdGlvbnMsIHNpbmNl IG1hbnkgY2hhbmdlcyB3aWxsDQo+IGFmZmVjdCBjaGlwc2V0cyBvZiBib3RoIHNlZ21lbnRzLg0K PiANCj4gVGhhbmtzLA0KPiBTaGF5bmUNCj4gDQooUmVzZW5kIGZvciBtaXNzaW5nIENDKQ0KDQo+ ID4gPiA+ID4gPiAtLS0NCj4gPiA+ID4gPiA+ICBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRl ay9tdDc2L01ha2VmaWxlICAgfCAgIDIgKy0NCj4gPiA+ID4gPiA+ICAuLi4vbmV0L3dpcmVsZXNz L21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaCAgfCAgMTkgKyAgDQo+ID4gPiA+ID4gPiAuLi4v d2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYzNfbWFjLmMgfCA3NDINCj4gPiA+ID4g PiA+ICsrKysrKysrKysrKysrKysrDQo+ID4gPiA+ID4gPiAgLi4uL3dpcmVsZXNzL21lZGlhdGVr L210NzYvbXQ3Nl9jb25uYWMzX21hYy5oIHwgIDE4ICsNCj4gPiA+ID4gPiA+ICAuLi4vbmV0L3dp cmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYyAgfCAgIDQgKy0NCj4gPiA+ID4gPiA+ ICAuLi4vbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21hYy5jICAgfCA3NjEgKy0t LS0tDQo+ID4gPiA+ID4gPiAtLQ0KPiA+IA0KPiA+IC0tLS0NCj4gPiA+ID4gPiA+IC0tLS0NCj4g PiA+ID4gPiA+IC0tDQo+ID4gPiA+ID4gPiAgLi4uL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2 L210Nzk5Ni9tYWluLmMgIHwgICA4ICstDQo+ID4gPiA+ID4gPiAgLi4uL25ldC93aXJlbGVzcy9t ZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYyAgIHwgICA5ICstDQo+ID4gPiA+ID4gPiAgLi4uL3dp cmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oICAgIHwgIDI4ICstDQo+ID4gPiA+ ID4gPiAgOSBmaWxlcyBjaGFuZ2VkLCA4MDcgaW5zZXJ0aW9ucygrKSwgNzg0IGRlbGV0aW9ucygt DQo+ID4gDQo+ID4gKSAgY3JlYXRlIA0KPiA+ID4gPiA+ID4gbW9kZSAxMDA2NDQgDQo+ID4gPiA+ ID4gPiBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMu Yw0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ly ZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZQ0KPiA+ID4gPiA+ID4gYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlDQo+ID4gPiA+ID4gPiBpbmRleCA4NGM5OWI3 ZTU3ZjkuLmQ4ZTgwNzljOGI1NCAxMDA2NDQNCj4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUNCj4gPiA+ID4gPiA+ICsrKyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUNCj4gPiA+ID4gPiA+IEBAIC0y Nyw3ICsyNyw3IEBAIG10NzZ4MDItbGliLXkgOj0gbXQ3NngwMl91dGlsLm8NCj4gPiANCj4gPiBt dDc2eDAyX21hYy5vIA0KPiA+ID4gPiA+ID4gbXQ3NngwMl9tY3UubyBcDQo+ID4gPiA+ID4gPiAg DQo+ID4gPiA+ID4gPiAgbXQ3NngwMi11c2IteSA6PSBtdDc2eDAyX3VzYl9tY3UubyBtdDc2eDAy X3VzYl9jb3JlLm8NCj4gPiA+ID4gPiA+ICANCj4gPiA+ID4gPiA+IC1tdDc2LWNvbm5hYy1saWIt eSA6PSBtdDc2X2Nvbm5hY19tY3UubyBtdDc2X2Nvbm5hY19tYWMubw0KPiA+ID4gPiA+ID4gK210 NzYtY29ubmFjLWxpYi15IDo9IG10NzZfY29ubmFjX21jdS5vIG10NzZfY29ubmFjX21hYy5vDQo+ ID4gPiA+ID4gPiBtdDc2X2Nvbm5hYzNfbWFjLm8NCj4gPiA+ID4gPiA+ICANCj4gPiA+ID4gPiA+ ICBvYmotJChDT05GSUdfTVQ3NngwX0NPTU1PTikgKz0gbXQ3NngwLw0KPiA+ID4gPiA+ID4gIG9i ai0kKENPTkZJR19NVDc2eDJfQ09NTU9OKSArPSBtdDc2eDIvIGRpZmYgLS1naXQgDQo+ID4gPiA+ ID4gPiBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaA0K PiA+ID4gPiA+ID4gYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29u bmFjLmgNCj4gPiA+ID4gPiA+IGluZGV4IDY4YmRlYWRhMTQyMS4uMjAxMTE2Nzg1MzdiIDEwMDY0 NA0KPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9t dDc2X2Nvbm5hYy5oDQo+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRp YXRlay9tdDc2L210NzZfY29ubmFjLmgNCj4gPiA+ID4gPiA+IEBAIC00MTUsNCArNDE1LDIzIEBA IHZvaWQgbXQ3Nl9jb25uYWMyX3R4d2lfZnJlZShzdHJ1Y3QNCj4gPiANCj4gPiBtdDc2X2RldiAN Cj4gPiA+ID4gPiA+ICpkZXYsIHN0cnVjdCBtdDc2X3R4d2lfY2FjaGUgKnQsDQo+ID4gPiA+ID4g PiAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmZyZWVfbGlzdCk7ICB2b2lkIA0KPiA+ID4gPiA+ID4g bXQ3Nl9jb25uYWMyX3R4X3Rva2VuX3B1dChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldik7DQo+ID4gPiA+ ID4gPiAgDQo+ID4gPiA+ID4gPiArLyogY29ubmFjMyAqLw0KPiA+ID4gPiA+ID4gK3ZvaWQgbXQ3 Nl9jb25uYWMzX3R4X2NoZWNrX2FnZ3Ioc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwNCj4gPiA+ ID4gPiA+IF9fbGUzMg0KPiA+ID4gPiA+ID4gKnR4d2kpOw0KPiA+ID4gPiA+ID4gK3ZvaWQgbXQ3 Nl9jb25uYWMzX21hY19kZWNvZGVfaGVfcmFkaW90YXAoc3RydWN0IHNrX2J1ZmYNCj4gPiANCj4g PiAqc2tiLA0KPiA+ID4gPiA+ID4gX19sZTMyDQo+ID4gPiA+ID4gPiAqcnh2LA0KPiA+ID4gPiA+ ID4gKyB1OCBtb2RlKTsNCj4gPiA+ID4gPiA+ICtpbnQgbXQ3Nl9jb25uYWMzX21hY19maWxsX3J4 X3JhdGUoc3RydWN0IG10NzZfZGV2ICpkZXYsDQo+ID4gPiA+ID4gPiArICBzdHJ1Y3QgbXQ3Nl9y eF9zdGF0dXMgKnN0YXR1cywNCj4gPiA+ID4gPiA+ICsgIHN0cnVjdCBpZWVlODAyMTFfc3VwcG9y dGVkX2JhbmQNCj4gPiA+ID4gPiA+ICpzYmFuZCwNCj4gPiA+ID4gPiA+ICsgIF9fbGUzMiAqcnh2 LCB1OCAqbW9kZSk7DQo+ID4gPiA+ID4gPiArdm9pZCBtdDc2X2Nvbm5hYzNfbWFjX3dyaXRlX3R4 d2koc3RydWN0IG10NzZfZGV2ICpkZXYsDQo+ID4gDQo+ID4gX19sZTMyDQo+ID4gPiA+ID4gPiAq dHh3aSwNCj4gPiA+ID4gPiA+ICsgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2Np ZA0KPiA+ID4gPiA+ID4gKndjaWQsDQo+ID4gPiA+ID4gPiArIHN0cnVjdCBpZWVlODAyMTFfa2V5 X2NvbmYgKmtleSwgaW50DQo+ID4gPiA+ID4gPiBwaWQsDQo+ID4gPiA+ID4gPiArIGVudW0gbXQ3 Nl90eHFfaWQgcWlkLCB1MzIgY2hhbmdlZCk7IHZvaWQgDQo+ID4gPiA+ID4gPiArbXQ3Nl9jb25u YWMzX3R4d2lfZnJlZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0DQo+ID4gPiA+ID4gPiBt dDc2X3R4d2lfY2FjaGUgKnQsDQo+ID4gPiA+ID4gPiArICAgIHN0cnVjdCBpZWVlODAyMTFfc3Rh ICpzdGEsDQo+ID4gPiA+ID4gPiArICAgIHN0cnVjdCBsaXN0X2hlYWQgKmZyZWVfbGlzdCk7IHZv aWQgDQo+ID4gPiA+ID4gPiArbXQ3Nl9jb25uYWMzX21hY19hZGRfdHhzKHN0cnVjdCBtdDc2X2Rl diAqZGV2LCB2b2lkICpkYXRhLA0KPiA+ID4gPiA+ID4gKyAgICAgIHUzMiBtYXhfd3RibF9zaXpl KTsNCj4gPiA+ID4gPiA+ICt2b2lkIG10NzZfY29ubmFjM190eF90b2tlbl9wdXQoc3RydWN0IG10 NzZfZGV2ICpkZXYpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gICNlbmRpZiAvKiBfX01U NzZfQ09OTkFDX0ggKi8NCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4gPiA+IGEvZHJp dmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYzNfbWFjLmMNCj4gPiA+ ID4gPiA+IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYzNf bWFjLmMNCj4gPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ID4gPiBpbmRl eCAwMDAwMDAwMDAwMDAuLjRiNzQ1YmI3NGNhMA0KPiA+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0K PiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2 X2Nvbm5hYzNfbWFjLmMNCj4gPiA+ID4gPiA+IEBAIC0wLDAgKzEsNzQyIEBADQo+ID4gPiA+ID4g PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQw0KPiA+ID4gPiA+ID4gKy8qIENvcHly aWdodCAoQykgMjAyMyBNZWRpYVRlayBJbmMuICovDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArI2luY2x1ZGUgIm10NzZfY29ubmFjLmgiDQo+ID4gPiA+ID4gPiArI2luY2x1ZGUgIm10NzZf Y29ubmFjM19tYWMuaCINCj4gPiA+ID4gPiA+ICsjaW5jbHVkZSAiZG1hLmgiDQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArI2RlZmluZSBIRV9CSVRTKGYpY3B1X3RvX2xlMTYoSUVFRTgwMjEx X1JBRElPVEFQXw0KPiA+ID4gPiA+ID4gSEVfIyNmKQ0KPiA+ID4gPiA+ID4gKyNkZWZpbmUgSEVf UFJFUChmLCBtLCB2KWxlMTZfZW5jb2RlX2JpdHMobGUzMl9nZXRfYml0cyh2LA0KPiA+ID4gPiA+ ID4gTVRfQ1JYVl9IRV8jI20pLFwNCj4gPiA+ID4gPiA+ICsgSUVFRTgwMjExX1JBRElPVEFQX0hF Xw0KPiA+ID4gPiA+ID4gIyNmKQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK3ZvaWQgbXQ3 Nl9jb25uYWMzX3R4X2NoZWNrX2FnZ3Ioc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwNCj4gPiA+ ID4gPiA+IF9fbGUzMg0KPiA+ID4gPiA+ID4gKnR4d2kpDQo+ID4gPiA+ID4gPiArew0KPiA+ID4g PiA+ID4gK3N0cnVjdCBtdDc2X3djaWQgKndjaWQ7DQo+ID4gPiA+ID4gPiArdTE2IGZjLCB0aWQ7 DQo+ID4gPiA+ID4gPiArdTMyIHZhbDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtpZiAo IXN0YSB8fA0KPiA+ID4gPiA+ID4gKyAgICAhKHN0YS0+ZGVmbGluay5odF9jYXAuaHRfc3VwcG9y dGVkIHx8IHN0YS0NCj4gPiA+ID4gPiA+ID4gZGVmbGluay5oZV9jYXAuaGFzX2hlKSkNCj4gPiA+ ID4gPiA+IA0KPiA+ID4gPiA+ID4gK3JldHVybjsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICt0aWQgPSBsZTMyX2dldF9iaXRzKHR4d2lbMV0sIE1UX1RYRDFfVElEKTsNCj4gPiA+ID4gPiA+ ICtpZiAodGlkID49IDYpIC8qIHNraXAgVk8gcXVldWUgKi8NCj4gPiA+ID4gPiA+ICtyZXR1cm47 DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArdmFsID0gbGUzMl90b19jcHUodHh3aVsyXSk7 DQo+ID4gPiA+ID4gPiArZmMgPSBGSUVMRF9HRVQoTVRfVFhEMl9GUkFNRV9UWVBFLCB2YWwpIDw8 IDIgfA0KPiA+ID4gPiA+ID4gKyAgICAgRklFTERfR0VUKE1UX1RYRDJfU1VCX1RZUEUsIHZhbCkg PDwgNDsNCj4gPiA+ID4gPiA+ICtpZiAodW5saWtlbHkoZmMgIT0gKElFRUU4MDIxMV9GVFlQRV9E QVRBIHwNCj4gPiA+ID4gPiA+IElFRUU4MDIxMV9TVFlQRV9RT1NfREFUQSkpKQ0KPiA+ID4gPiA+ ID4gK3JldHVybjsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICt3Y2lkID0gKHN0cnVjdCBt dDc2X3djaWQgKilzdGEtPmRydl9wcml2Ow0KPiA+ID4gPiA+ID4gK2lmICghdGVzdF9hbmRfc2V0 X2JpdCh0aWQsICZ3Y2lkLT5hbXBkdV9zdGF0ZSkpDQo+ID4gPiA+ID4gPiAraWVlZTgwMjExX3N0 YXJ0X3R4X2JhX3Nlc3Npb24oc3RhLCB0aWQsIDApOyB9IA0KPiA+ID4gPiA+ID4gK0VYUE9SVF9T WU1CT0xfR1BMKG10NzZfY29ubmFjM190eF9jaGVja19hZ2dyKTsNCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICtzdGF0aWMgdm9pZA0KPiA+ID4gPiA+ID4gK210NzZfY29ubmFjM19tYWNfZGVj b2RlX2hlX3JhZGlvdGFwX3J1KHN0cnVjdA0KPiA+ID4gPiA+ID4gbXQ3Nl9yeF9zdGF0dXMNCj4g PiA+ID4gPiA+ICpzdGF0dXMsDQo+ID4gPiA+ID4gPiArICAgICAgIHN0cnVjdCBpZWVlODAyMTFf cmFkaW90YXBfaGUNCj4gPiA+ID4gPiA+ICpoZSwNCj4gPiA+ID4gPiA+ICsgICAgICAgX19sZTMy ICpyeHYpDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gK3UzMiBydSA9IGxlMzJfZ2V0X2Jp dHMocnh2WzBdLCBNVF9QUlhWX0hFX1JVX0FMTE9DKSwgb2Zmcw0KPiA+ID4gPiA+ID4gPQ0KPiA+ IA0KPiA+IDA7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArc3RhdHVzLT5idyA9IFJBVEVf SU5GT19CV19IRV9SVTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtzd2l0Y2ggKHJ1KSB7 DQo+ID4gPiA+ID4gPiArY2FzZSAwIC4uLiAzNjoNCj4gPiA+ID4gPiA+ICtzdGF0dXMtPmhlX3J1 ID0gTkw4MDIxMV9SQVRFX0lORk9fSEVfUlVfQUxMT0NfMjY7DQo+ID4gPiA+ID4gPiArb2ZmcyA9 IHJ1Ow0KPiA+ID4gPiA+ID4gK2JyZWFrOw0KPiA+ID4gPiA+ID4gK2Nhc2UgMzcgLi4uIDUyOg0K PiA+ID4gPiA+ID4gK3N0YXR1cy0+aGVfcnUgPSBOTDgwMjExX1JBVEVfSU5GT19IRV9SVV9BTExP Q181MjsNCj4gPiA+ID4gPiA+ICtvZmZzID0gcnUgLSAzNzsNCj4gPiA+ID4gPiA+ICticmVhazsN Cj4gPiA+ID4gPiA+ICtjYXNlIDUzIC4uLiA2MDoNCj4gPiA+ID4gPiA+ICtzdGF0dXMtPmhlX3J1 ID0gTkw4MDIxMV9SQVRFX0lORk9fSEVfUlVfQUxMT0NfMTA2Ow0KPiA+ID4gPiA+ID4gK29mZnMg PSBydSAtIDUzOw0KPiA+ID4gPiA+ID4gK2JyZWFrOw0KPiA+ID4gPiA+ID4gK2Nhc2UgNjEgLi4u IDY0Og0KPiA+ID4gPiA+ID4gK3N0YXR1cy0+aGVfcnUgPSBOTDgwMjExX1JBVEVfSU5GT19IRV9S VV9BTExPQ18yNDI7DQo+ID4gPiA+ID4gPiArb2ZmcyA9IHJ1IC0gNjE7DQo+ID4gPiA+ID4gPiAr YnJlYWs7DQo+ID4gPiA+ID4gPiArY2FzZSA2NSAuLi4gNjY6DQo+ID4gPiA+ID4gPiArc3RhdHVz LT5oZV9ydSA9IE5MODAyMTFfUkFURV9JTkZPX0hFX1JVX0FMTE9DXzQ4NDsNCj4gPiA+ID4gPiA+ ICtvZmZzID0gcnUgLSA2NTsNCj4gPiA+ID4gPiA+ICticmVhazsNCj4gPiA+ID4gPiA+ICtjYXNl IDY3Og0KPiA+ID4gPiA+ID4gK3N0YXR1cy0+aGVfcnUgPSBOTDgwMjExX1JBVEVfSU5GT19IRV9S VV9BTExPQ185OTY7DQo+ID4gPiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiArY2FzZSA2ODoN Cj4gPiA+ID4gPiA+ICtzdGF0dXMtPmhlX3J1ID0gTkw4MDIxMV9SQVRFX0lORk9fSEVfUlVfQUxM T0NfMng5OTY7DQo+ID4gPiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gK2hlLT5kYXRhMSB8PSBIRV9CSVRTKERBVEExX0JXX1JVX0FMTE9D X0tOT1dOKTsNCj4gPiA+ID4gPiA+ICtoZS0+ZGF0YTIgfD0gSEVfQklUUyhEQVRBMl9SVV9PRkZT RVRfS05PV04pIHwNCj4gPiA+ID4gPiA+ICsgICAgIGxlMTZfZW5jb2RlX2JpdHMob2ZmcywNCj4g PiA+ID4gPiA+ICsgICAgICBJRUVFODAyMTFfUkFESU9UQVBfSEVfREFUQTJfUlVfT0YNCj4gPiA+ ID4gPiA+IEZTRVQpOw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsjZGVmaW5lIE1VX1BSRVAoZiwgdilsZTE2X2VuY29kZV9iaXRzKHYsDQo+ID4gPiA+ID4gPiBJ RUVFODAyMTFfUkFESU9UQVBfSEVfTVVfIyNmKQ0KPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkDQo+ ID4gPiA+ID4gPiArbXQ3Nl9jb25uYWMzX21hY19kZWNvZGVfaGVfbXVfcmFkaW90YXAoc3RydWN0 IHNrX2J1ZmYNCj4gPiA+ID4gPiA+ICpza2IsDQo+ID4gPiA+ID4gPiBfX2xlMzINCj4gPiA+ID4g PiA+ICpyeHYpDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gK3N0cnVjdCBtdDc2X3J4X3N0 YXR1cyAqc3RhdHVzID0gKHN0cnVjdCBtdDc2X3J4X3N0YXR1cw0KPiA+IA0KPiA+ICopc2tiLQ0K PiA+ID4gPiA+ID4gPiBjYjsNCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgaWVlZTgwMjExX3JhZGlvdGFwX2hlX211IG11X2tub3duID0gew0KPiA+ID4gPiA+ ID4gKy5mbGFnczEgPSBIRV9CSVRTKE1VX0ZMQUdTMV9TSUdfQl9NQ1NfS05PV04pIHwNCj4gPiA+ ID4gPiA+ICsgIEhFX0JJVFMoTVVfRkxBR1MxX1NJR19CX0RDTV9LTk9XTikgfA0KPiA+ID4gPiA+ ID4gKyAgSEVfQklUUyhNVV9GTEFHUzFfQ0gxX1JVX0tOT1dOKSB8DQo+ID4gPiA+ID4gPiArICBI RV9CSVRTKE1VX0ZMQUdTMV9TSUdfQl9TWU1TX1VTRVJTX0tOT1dOKSwNCj4gPiA+ID4gPiA+ICsu ZmxhZ3MyID0gSEVfQklUUyhNVV9GTEFHUzJfQldfRlJPTV9TSUdfQV9CV19LTk9XTiksDQo+ID4g PiA+ID4gPiArfTsNCj4gPiA+ID4gPiA+ICtzdHJ1Y3QgaWVlZTgwMjExX3JhZGlvdGFwX2hlX211 ICpoZV9tdTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtzdGF0dXMtPmZsYWcgfD0gUlhf RkxBR19SQURJT1RBUF9IRV9NVTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtoZV9tdSA9 IHNrYl9wdXNoKHNrYiwgc2l6ZW9mKG11X2tub3duKSk7DQo+ID4gPiA+ID4gPiArbWVtY3B5KGhl X211LCAmbXVfa25vd24sIHNpemVvZihtdV9rbm93bikpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gK2hlX211LT5mbGFnczEgfD0gTVVfUFJFUChGTEFHUzFfU0lHX0JfTUNTLCBzdGF0dXMt DQo+ID4gPiANCj4gPiA+IHJhdGVfaWR4KTsNCj4gPiA+ID4gPiA+ICtpZiAoc3RhdHVzLT5oZV9k Y20pDQo+ID4gPiA+ID4gPiAraGVfbXUtPmZsYWdzMSB8PSBNVV9QUkVQKEZMQUdTMV9TSUdfQl9E Q00sIHN0YXR1cy0NCj4gPiA+ID4gPiA+ID4gaGVfZGNtKTsNCj4gPiA+ID4gPiA+IA0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gK2hlX211LT5mbGFnczIgfD0gTVVfUFJFUChGTEFHUzJfQldf RlJPTV9TSUdfQV9CVywgc3RhdHVzLQ0KPiA+ID4gDQo+ID4gPiBidykgfA0KPiA+ID4gPiA+ID4g KyBNVV9QUkVQKEZMQUdTMl9TSUdfQl9TWU1TX1VTRVJTLA0KPiA+ID4gPiA+ID4gKyBsZTMyX2dl dF9iaXRzKHJ4dls0XSwNCj4gPiA+ID4gPiA+IE1UX0NSWFZfSEVfTlVNX1VTRVIpKTsNCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtoZV9tdS0+cnVfY2gxWzBdID0gbGUzMl9nZXRfYml0cyhy eHZbMTZdLCBNVF9DUlhWX0hFX1JVMCkNCj4gPiA+ID4gPiA+ICYNCj4gPiA+ID4gPiA+IDB4ZmY7 DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAraWYgKHN0YXR1cy0+YncgPj0gUkFURV9JTkZP X0JXXzQwKSB7DQo+ID4gPiA+ID4gPiAraGVfbXUtPmZsYWdzMSB8PSBIRV9CSVRTKE1VX0ZMQUdT MV9DSDJfUlVfS05PV04pOw0KPiA+ID4gPiA+ID4gK2hlX211LT5ydV9jaDJbMF0gPSBsZTMyX2dl dF9iaXRzKHJ4dlsxNl0sDQo+ID4gPiA+ID4gPiBNVF9DUlhWX0hFX1JVMSkgJiAweGZmOw0KPiA+ ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtpZiAoc3RhdHVzLT5idyA+ PSBSQVRFX0lORk9fQldfODApIHsNCj4gPiA+ID4gPiA+ICt1MzIgcnVfaCwgcnVfbDsNCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtoZV9tdS0+cnVfY2gxWzFdID0gbGUzMl9nZXRfYml0cyhy eHZbMTZdLA0KPiA+ID4gPiA+ID4gTVRfQ1JYVl9IRV9SVTIpICYgMHhmZjsNCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICtydV9sID0gbGUzMl9nZXRfYml0cyhyeHZbMTZdLCBNVF9DUlhWX0hF X1JVM19MKTsNCj4gPiA+ID4gPiA+ICtydV9oID0gbGUzMl9nZXRfYml0cyhyeHZbMTddLCBNVF9D UlhWX0hFX1JVM19IKSAmIDB4NzsNCj4gPiA+ID4gPiA+ICtoZV9tdS0+cnVfY2gyWzFdID0gKHU4 KShydV9sIHwgcnVfaCA8PCA0KTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArfQ0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK3ZvaWQgbXQ3Nl9jb25uYWMzX21hY19kZWNvZGVfaGVf cmFkaW90YXAoc3RydWN0IHNrX2J1ZmYNCj4gPiANCj4gPiAqc2tiLA0KPiA+ID4gPiA+ID4gX19s ZTMyDQo+ID4gPiA+ID4gPiAqcnh2LA0KPiA+ID4gPiA+ID4gKyB1OCBtb2RlKQ0KPiA+ID4gPiA+ ID4gK3sNCj4gPiA+ID4gPiA+ICtzdHJ1Y3QgbXQ3Nl9yeF9zdGF0dXMgKnN0YXR1cyA9IChzdHJ1 Y3QgbXQ3Nl9yeF9zdGF0dXMNCj4gPiANCj4gPiAqKXNrYi0NCj4gPiA+ID4gPiA+ID4gY2I7DQo+ ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9y YWRpb3RhcF9oZSBrbm93biA9IHsNCj4gPiA+ID4gPiA+ICsuZGF0YTEgPSBIRV9CSVRTKERBVEEx X0RBVEFfTUNTX0tOT1dOKSB8DQo+ID4gPiA+ID4gPiArIEhFX0JJVFMoREFUQTFfREFUQV9EQ01f S05PV04pIHwNCj4gPiA+ID4gPiA+ICsgSEVfQklUUyhEQVRBMV9TVEJDX0tOT1dOKSB8DQo+ID4g PiA+ID4gPiArIEhFX0JJVFMoREFUQTFfQ09ESU5HX0tOT1dOKSB8DQo+ID4gPiA+ID4gPiArIEhF X0JJVFMoREFUQTFfTERQQ19YU1lNU0VHX0tOT1dOKSB8DQo+ID4gPiA+ID4gPiArIEhFX0JJVFMo REFUQTFfRE9QUExFUl9LTk9XTikgfA0KPiA+ID4gPiA+ID4gKyBIRV9CSVRTKERBVEExX1NQVExf UkVVU0VfS05PV04pIHwNCj4gPiA+ID4gPiA+ICsgSEVfQklUUyhEQVRBMV9CU1NfQ09MT1JfS05P V04pLA0KPiA+ID4gPiA+ID4gKy5kYXRhMiA9IEhFX0JJVFMoREFUQTJfR0lfS05PV04pIHwNCj4g PiA+ID4gPiA+ICsgSEVfQklUUyhEQVRBMl9UWEJGX0tOT1dOKSB8DQo+ID4gPiA+ID4gPiArIEhF X0JJVFMoREFUQTJfUEVfRElTQU1CSUdfS05PV04pIHwNCj4gPiA+ID4gPiA+ICsgSEVfQklUUyhE QVRBMl9UWE9QX0tOT1dOKSwNCj4gPiA+ID4gPiA+ICt9Ow0KPiA+ID4gPiA+ID4gK3UzMiBsdGZf c2l6ZSA9IGxlMzJfZ2V0X2JpdHMocnh2WzRdLCBNVF9DUlhWX0hFX0xURl9TSVpFKQ0KPiA+ID4g PiA+ID4gKw0KPiA+IA0KPiA+IDE7DQo+ID4gPiA+ID4gPiArc3RydWN0IGllZWU4MDIxMV9yYWRp b3RhcF9oZSAqaGU7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArc3RhdHVzLT5mbGFnIHw9 IFJYX0ZMQUdfUkFESU9UQVBfSEU7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAraGUgPSBz a2JfcHVzaChza2IsIHNpemVvZihrbm93bikpOw0KPiA+ID4gPiA+ID4gK21lbWNweShoZSwgJmtu b3duLCBzaXplb2Yoa25vd24pKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtoZS0+ZGF0 YTMgPSBIRV9QUkVQKERBVEEzX0JTU19DT0xPUiwgQlNTX0NPTE9SLCByeHZbOV0pIHwNCj4gPiA+ ID4gPiA+ICsgICAgSEVfUFJFUChEQVRBM19MRFBDX1hTWU1TRUcsIExEUENfRVhUX1NZTSwgcnh2 WzRdKTsNCj4gPiA+ID4gPiA+ICtoZS0+ZGF0YTQgPSBIRV9QUkVQKERBVEE0X1NVX01VX1NQVExf UkVVU0UsIFNSX01BU0ssDQo+ID4gDQo+ID4gcnh2WzEzXSk7DQo+ID4gPiA+ID4gPiAraGUtPmRh dGE1ID0gSEVfUFJFUChEQVRBNV9QRV9ESVNBTUJJRywgUEVfRElTQU1CSUcsDQo+ID4gPiA+ID4g PiByeHZbNV0pDQo+ID4gPiA+ID4gPiArICAgIGxlMTZfZW5jb2RlX2JpdHMobHRmX3NpemUsDQo+ ID4gPiA+ID4gPiArICAgICBJRUVFODAyMTFfUkFESU9UQVBfSEVfREFUQTVfTFRGX1NJDQo+ID4g PiA+ID4gPiBaRSk7DQo+ID4gPiA+ID4gPiAraWYgKGxlMzJfdG9fY3B1KHJ4dlswXSkgJiBNVF9Q UlhWX1RYQkYpDQo+ID4gPiA+ID4gPiAraGUtPmRhdGE1IHw9IEhFX0JJVFMoREFUQTVfVFhCRik7 DQo+ID4gPiA+ID4gPiAraGUtPmRhdGE2ID0gSEVfUFJFUChEQVRBNl9UWE9QLCBUWE9QX0RVUiwg cnh2WzldKSB8DQo+ID4gPiA+ID4gPiArICAgIEhFX1BSRVAoREFUQTZfRE9QUExFUiwgRE9QUExF Uiwgcnh2WzldKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtzd2l0Y2ggKG1vZGUpIHsN Cj4gPiA+ID4gPiA+ICtjYXNlIE1UX1BIWV9UWVBFX0hFX1NVOg0KPiA+ID4gPiA+ID4gK2hlLT5k YXRhMSB8PSBIRV9CSVRTKERBVEExX0ZPUk1BVF9TVSkgfA0KPiA+ID4gPiA+ID4gKyAgICAgSEVf QklUUyhEQVRBMV9VTF9ETF9LTk9XTikgfA0KPiA+ID4gPiA+ID4gKyAgICAgSEVfQklUUyhEQVRB MV9CRUFNX0NIQU5HRV9LTk9XTikgfA0KPiA+ID4gPiA+ID4gKyAgICAgSEVfQklUUyhEQVRBMV9C V19SVV9BTExPQ19LTk9XTik7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAraGUtPmRhdGEz IHw9IEhFX1BSRVAoREFUQTNfQkVBTV9DSEFOR0UsIEJFQU1fQ0hORywNCj4gPiA+ID4gPiA+IHJ4 dls4XSkgfA0KPiA+ID4gPiA+ID4gKyAgICAgSEVfUFJFUChEQVRBM19VTF9ETCwgVVBMSU5LLCBy eHZbNV0pOw0KPiA+ID4gPiA+ID4gK2JyZWFrOw0KPiA+ID4gPiA+ID4gK2Nhc2UgTVRfUEhZX1RZ UEVfSEVfRVhUX1NVOg0KPiA+ID4gPiA+ID4gK2hlLT5kYXRhMSB8PSBIRV9CSVRTKERBVEExX0ZP Uk1BVF9FWFRfU1UpIHwNCj4gPiA+ID4gPiA+ICsgICAgIEhFX0JJVFMoREFUQTFfVUxfRExfS05P V04pIHwNCj4gPiA+ID4gPiA+ICsgICAgIEhFX0JJVFMoREFUQTFfQldfUlVfQUxMT0NfS05PV04p Ow0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK2hlLT5kYXRhMyB8PSBIRV9QUkVQKERBVEEz X1VMX0RMLCBVUExJTkssIHJ4dls1XSk7DQo+ID4gPiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4g PiArY2FzZSBNVF9QSFlfVFlQRV9IRV9NVToNCj4gPiA+ID4gPiA+ICtoZS0+ZGF0YTEgfD0gSEVf QklUUyhEQVRBMV9GT1JNQVRfTVUpIHwNCj4gPiA+ID4gPiA+ICsgICAgIEhFX0JJVFMoREFUQTFf VUxfRExfS05PV04pOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK2hlLT5kYXRhMyB8PSBI RV9QUkVQKERBVEEzX1VMX0RMLCBVUExJTkssIHJ4dls1XSk7DQo+ID4gPiA+ID4gPiAraGUtPmRh dGE0IHw9IEhFX1BSRVAoREFUQTRfTVVfU1RBX0lELCBNVV9BSUQsIHJ4dls4XSk7DQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArbXQ3Nl9jb25uYWMzX21hY19kZWNvZGVfaGVfcmFkaW90YXBf cnUoc3RhdHVzLCBoZSwNCj4gPiA+ID4gPiA+IHJ4dik7DQo+ID4gPiA+ID4gPiArbXQ3Nl9jb25u YWMzX21hY19kZWNvZGVfaGVfbXVfcmFkaW90YXAoc2tiLCByeHYpOw0KPiA+ID4gPiA+ID4gK2Jy ZWFrOw0KPiA+ID4gPiA+ID4gK2Nhc2UgTVRfUEhZX1RZUEVfSEVfVEI6DQo+ID4gPiA+ID4gPiAr aGUtPmRhdGExIHw9IEhFX0JJVFMoREFUQTFfRk9STUFUX1RSSUcpIHwNCj4gPiA+ID4gPiA+ICsg ICAgIEhFX0JJVFMoREFUQTFfU1BUTF9SRVVTRTJfS05PV04pIHwNCj4gPiA+ID4gPiA+ICsgICAg IEhFX0JJVFMoREFUQTFfU1BUTF9SRVVTRTNfS05PV04pIHwNCj4gPiA+ID4gPiA+ICsgICAgIEhF X0JJVFMoREFUQTFfU1BUTF9SRVVTRTRfS05PV04pOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gK2hlLT5kYXRhNCB8PSBIRV9QUkVQKERBVEE0X1RCX1NQVExfUkVVU0UxLCBTUl9NQVNLLA0K PiA+ID4gPiA+ID4gcnh2WzEzXSkgfA0KPiA+ID4gPiA+ID4gKyAgICAgSEVfUFJFUChEQVRBNF9U Ql9TUFRMX1JFVVNFMiwgU1IxX01BU0ssDQo+ID4gPiA+ID4gPiByeHZbMTNdKSB8DQo+ID4gPiA+ ID4gPiArICAgICBIRV9QUkVQKERBVEE0X1RCX1NQVExfUkVVU0UzLCBTUjJfTUFTSywNCj4gPiA+ ID4gPiA+IHJ4dlsxM10pIHwNCj4gPiA+ID4gPiA+ICsgICAgIEhFX1BSRVAoREFUQTRfVEJfU1BU TF9SRVVTRTQsIFNSM19NQVNLLA0KPiA+ID4gPiA+ID4gcnh2WzEzXSk7DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArbXQ3Nl9jb25uYWMzX21hY19kZWNvZGVfaGVfcmFkaW90YXBfcnUoc3Rh dHVzLCBoZSwNCj4gPiA+ID4gPiA+IHJ4dik7DQo+ID4gPiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ ID4gPiArZGVmYXVsdDoNCj4gPiA+ID4gPiA+ICticmVhazsNCj4gPiA+ID4gPiA+ICt9DQo+ID4g PiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKG10NzZfY29ubmFjM19t YWNfZGVjb2RlX2hlX3JhZGlvdGFwKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtpbnQg bXQ3Nl9jb25uYWMzX21hY19maWxsX3J4X3JhdGUoc3RydWN0IG10NzZfZGV2ICpkZXYsDQo+ID4g PiA+ID4gPiArICBzdHJ1Y3QgbXQ3Nl9yeF9zdGF0dXMgKnN0YXR1cywNCj4gPiA+ID4gPiA+ICsg IHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQNCj4gPiA+ID4gPiA+ICpzYmFuZCwNCj4g PiA+ID4gPiA+ICsgIF9fbGUzMiAqcnh2LCB1OCAqbW9kZSkNCj4gPiA+ID4gPiA+ICt7DQo+ID4g PiA+ID4gPiArdTggc3RiYywgZ2ksIGJ3LCBkY20sIG5zczsNCj4gPiA+ID4gPiA+ICtib29sIGNj ayA9IGZhbHNlOw0KPiA+ID4gPiA+ID4gK3UzMiB2MCwgdjI7DQo+ID4gPiA+ID4gPiAraW50IGks IGlkeDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICt2MCA9IGxlMzJfdG9fY3B1KHJ4dlsw XSk7DQo+ID4gPiA+ID4gPiArdjIgPSBsZTMyX3RvX2NwdShyeHZbMl0pOw0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gK2lkeCA9IEZJRUxEX0dFVChNVF9QUlhWX1RYX1JBVEUsIHYwKTsNCj4g PiA+ID4gPiA+ICtpID0gaWR4Ow0KPiA+ID4gPiA+ID4gK25zcyA9IEZJRUxEX0dFVChNVF9QUlhW X05TVFMsIHYwKSArIDE7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArc3RiYyA9IEZJRUxE X0dFVChNVF9QUlhWX0hUX1NUQkMsIHYyKTsNCj4gPiA+ID4gPiA+ICtnaSA9IEZJRUxEX0dFVChN VF9QUlhWX0hUX1NIT1JUX0dJLCB2Mik7DQo+ID4gPiA+ID4gPiArKm1vZGUgPSBGSUVMRF9HRVQo TVRfUFJYVl9UWF9NT0RFLCB2Mik7DQo+ID4gPiA+ID4gPiArZGNtID0gRklFTERfR0VUKE1UX1BS WFZfRENNLCB2Mik7DQo+ID4gPiA+ID4gPiArYncgPSBGSUVMRF9HRVQoTVRfUFJYVl9GUkFNRV9N T0RFLCB2Mik7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArc3dpdGNoICgqbW9kZSkgew0K PiA+ID4gPiA+ID4gK2Nhc2UgTVRfUEhZX1RZUEVfQ0NLOg0KPiA+ID4gPiA+ID4gK2NjayA9IHRy dWU7DQo+ID4gPiA+ID4gPiArZmFsbHRocm91Z2g7DQo+ID4gPiA+ID4gPiArY2FzZSBNVF9QSFlf VFlQRV9PRkRNOg0KPiA+ID4gPiA+ID4gK2kgPSBtdDc2X2dldF9yYXRlKGRldiwgc2JhbmQsIGks IGNjayk7DQo+ID4gPiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiArY2FzZSBNVF9QSFlfVFlQ RV9IVF9HRjoNCj4gPiA+ID4gPiA+ICtjYXNlIE1UX1BIWV9UWVBFX0hUOg0KPiA+ID4gPiA+ID4g K3N0YXR1cy0+ZW5jb2RpbmcgPSBSWF9FTkNfSFQ7DQo+ID4gPiA+ID4gPiAraWYgKGdpKQ0KPiA+ ID4gPiA+ID4gK3N0YXR1cy0+ZW5jX2ZsYWdzIHw9IFJYX0VOQ19GTEFHX1NIT1JUX0dJOw0KPiA+ ID4gPiA+ID4gK2lmIChpID4gMzEpDQo+ID4gPiA+ID4gPiArcmV0dXJuIC1FSU5WQUw7DQo+ID4g PiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiArY2FzZSBNVF9QSFlfVFlQRV9WSFQ6DQo+ID4g PiA+ID4gPiArc3RhdHVzLT5uc3MgPSBuc3M7DQo+ID4gPiA+ID4gPiArc3RhdHVzLT5lbmNvZGlu ZyA9IFJYX0VOQ19WSFQ7DQo+ID4gPiA+ID4gPiAraWYgKGdpKQ0KPiA+ID4gPiA+ID4gK3N0YXR1 cy0+ZW5jX2ZsYWdzIHw9IFJYX0VOQ19GTEFHX1NIT1JUX0dJOw0KPiA+ID4gPiA+ID4gK2lmIChp ID4gMTEpDQo+ID4gPiA+ID4gPiArcmV0dXJuIC1FSU5WQUw7DQo+ID4gPiA+ID4gPiArYnJlYWs7 DQo+ID4gPiA+ID4gPiArY2FzZSBNVF9QSFlfVFlQRV9IRV9NVToNCj4gPiA+ID4gPiA+ICtjYXNl IE1UX1BIWV9UWVBFX0hFX1NVOg0KPiA+ID4gPiA+ID4gK2Nhc2UgTVRfUEhZX1RZUEVfSEVfRVhU X1NVOg0KPiA+ID4gPiA+ID4gK2Nhc2UgTVRfUEhZX1RZUEVfSEVfVEI6DQo+ID4gPiA+ID4gPiAr c3RhdHVzLT5uc3MgPSBuc3M7DQo+ID4gPiA+ID4gPiArc3RhdHVzLT5lbmNvZGluZyA9IFJYX0VO Q19IRTsNCj4gPiA+ID4gPiA+ICtpICY9IEdFTk1BU0soMywgMCk7DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiAraWYgKGdpIDw9IE5MODAyMTFfUkFURV9JTkZPX0hFX0dJXzNfMikNCj4gPiA+ ID4gPiA+ICtzdGF0dXMtPmhlX2dpID0gZ2k7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr c3RhdHVzLT5oZV9kY20gPSBkY207DQo+ID4gPiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiAr Y2FzZSBNVF9QSFlfVFlQRV9FSFRfU1U6DQo+ID4gPiA+ID4gPiArY2FzZSBNVF9QSFlfVFlQRV9F SFRfVFJJRzoNCj4gPiA+ID4gPiA+ICtjYXNlIE1UX1BIWV9UWVBFX0VIVF9NVToNCj4gPiA+ID4g PiA+ICtzdGF0dXMtPm5zcyA9IG5zczsNCj4gPiA+ID4gPiA+ICtzdGF0dXMtPmVuY29kaW5nID0g UlhfRU5DX0VIVDsNCj4gPiA+ID4gPiA+ICtpICY9IEdFTk1BU0soMywgMCk7DQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiAraWYgKGdpIDw9IE5MODAyMTFfUkFURV9JTkZPX0VIVF9HSV8zXzIp DQo+ID4gPiA+ID4gPiArc3RhdHVzLT5laHQuZ2kgPSBnaTsNCj4gPiA+ID4gPiA+ICticmVhazsN Cj4gPiA+ID4gPiA+ICtkZWZhdWx0Og0KPiA+ID4gPiA+ID4gK3JldHVybiAtRUlOVkFMOw0KPiA+ ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICtzdGF0dXMtPnJhdGVfaWR4ID0gaTsNCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICtzd2l0Y2ggKGJ3KSB7DQo+ID4gPiA+ID4gPiArY2FzZSBJRUVF ODAyMTFfU1RBX1JYX0JXXzIwOg0KPiA+ID4gPiA+ID4gK2JyZWFrOw0KPiA+ID4gPiA+ID4gK2Nh c2UgSUVFRTgwMjExX1NUQV9SWF9CV180MDoNCj4gPiA+ID4gPiA+ICtpZiAoKm1vZGUgJiBNVF9Q SFlfVFlQRV9IRV9FWFRfU1UgJiYNCj4gPiA+ID4gPiA+ICsgICAgKGlkeCAmIE1UX1BSWFZfVFhf RVJfU1VfMTA2VCkpIHsNCj4gPiA+ID4gPiA+ICtzdGF0dXMtPmJ3ID0gUkFURV9JTkZPX0JXX0hF X1JVOw0KPiA+ID4gPiA+ID4gK3N0YXR1cy0+aGVfcnUgPQ0KPiA+ID4gPiA+ID4gK05MODAyMTFf UkFURV9JTkZPX0hFX1JVX0FMTE9DXzEwNjsNCj4gPiA+ID4gPiA+ICt9IGVsc2Ugew0KPiA+ID4g PiA+ID4gK3N0YXR1cy0+YncgPSBSQVRFX0lORk9fQldfNDA7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ ID4gPiA+ID4gK2JyZWFrOw0KPiA+ID4gPiA+ID4gK2Nhc2UgSUVFRTgwMjExX1NUQV9SWF9CV184 MDoNCj4gPiA+ID4gPiA+ICtzdGF0dXMtPmJ3ID0gUkFURV9JTkZPX0JXXzgwOw0KPiA+ID4gPiA+ ID4gK2JyZWFrOw0KPiA+ID4gPiA+ID4gK2Nhc2UgSUVFRTgwMjExX1NUQV9SWF9CV18xNjA6DQo+ ID4gPiA+ID4gPiArc3RhdHVzLT5idyA9IFJBVEVfSU5GT19CV18xNjA7DQo+ID4gPiA+ID4gPiAr YnJlYWs7DQo+ID4gPiA+ID4gPiArY2FzZSBJRUVFODAyMTFfU1RBX1JYX0JXXzMyMDoNCj4gPiA+ ID4gPiA+ICtzdGF0dXMtPmJ3ID0gUkFURV9JTkZPX0JXXzMyMDsNCj4gPiA+ID4gPiA+ICticmVh azsNCj4gPiA+ID4gPiA+ICtkZWZhdWx0Og0KPiA+ID4gPiA+ID4gK3JldHVybiAtRUlOVkFMOw0K PiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtzdGF0dXMtPmVuY19m bGFncyB8PSBSWF9FTkNfRkxBR19TVEJDX01BU0sgKiBzdGJjOw0KPiA+ID4gPiA+ID4gK2lmICgq bW9kZSA8IE1UX1BIWV9UWVBFX0hFX1NVICYmIGdpKQ0KPiA+ID4gPiA+ID4gK3N0YXR1cy0+ZW5j X2ZsYWdzIHw9IFJYX0VOQ19GTEFHX1NIT1JUX0dJOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gK3JldHVybiAwOw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICtFWFBPUlRfU1lNQk9M X0dQTChtdDc2X2Nvbm5hYzNfbWFjX2ZpbGxfcnhfcmF0ZSk7DQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArc3RhdGljIHZvaWQNCj4gPiA+ID4gPiA+ICttdDc2X2Nvbm5hYzNfbWFjX3dyaXRl X3R4d2lfODAyMyhfX2xlMzIgKnR4d2ksIHN0cnVjdA0KPiA+IA0KPiA+IHNrX2J1ZmYNCj4gPiA+ ID4gPiA+ICpza2IsDQo+ID4gPiA+ID4gPiArIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpDQo+ID4g PiA+ID4gPiArew0KPiA+ID4gPiA+ID4gK3U4IHRpZCA9IHNrYi0+cHJpb3JpdHkgJiBJRUVFODAy MTFfUU9TX0NUTF9USURfTUFTSzsNCj4gPiA+ID4gPiA+ICt1OCBmY190eXBlLCBmY19zdHlwZTsN Cj4gPiA+ID4gPiA+ICt1MTYgZXRoZXJ0eXBlOw0KPiA+ID4gPiA+ID4gK2Jvb2wgd21tID0gZmFs c2U7DQo+ID4gPiA+ID4gPiArdTMyIHZhbDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtp ZiAod2NpZC0+c3RhKSB7DQo+ID4gPiA+ID4gPiArc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YTsN Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtzdGEgPSBjb250YWluZXJfb2YoKHZvaWQgKil3 Y2lkLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSwNCj4gPiA+ID4gPiA+IGRydl9wcml2KTsNCj4gPiA+ ID4gPiA+ICt3bW0gPSBzdGEtPndtZTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArdmFsID0gRklFTERfUFJFUChNVF9UWEQxX0hEUl9GT1JNQVQsIE1UX0hEUl9G T1JNQVRfODAyXzMpDQo+ID4gPiA+ID4gPiB8DQo+ID4gPiA+ID4gPiArICAgICAgRklFTERfUFJF UChNVF9UWEQxX1RJRCwgdGlkKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtldGhlcnR5 cGUgPSBnZXRfdW5hbGlnbmVkX2JlMTYoJnNrYi0+ZGF0YVsxMl0pOw0KPiA+ID4gPiA+ID4gK2lm IChldGhlcnR5cGUgPj0gRVRIX1BfODAyXzNfTUlOKQ0KPiA+ID4gPiA+ID4gK3ZhbCB8PSBNVF9U WEQxX0VUSF84MDJfMzsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICt0eHdpWzFdIHw9IGNw dV90b19sZTMyKHZhbCk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArZmNfdHlwZSA9IElF RUU4MDIxMV9GVFlQRV9EQVRBID4+IDI7DQo+ID4gPiA+ID4gPiArZmNfc3R5cGUgPSB3bW0gPyBJ RUVFODAyMTFfU1RZUEVfUU9TX0RBVEEgPj4gNCA6IDA7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArdmFsID0gRklFTERfUFJFUChNVF9UWEQyX0ZSQU1FX1RZUEUsIGZjX3R5cGUpIHwNCj4g PiA+ID4gPiA+ICsgICAgICBGSUVMRF9QUkVQKE1UX1RYRDJfU1VCX1RZUEUsIGZjX3N0eXBlKTsN Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICt0eHdpWzJdIHw9IGNwdV90b19sZTMyKHZhbCk7 DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lk DQo+ID4gPiA+ID4gPiArbXQ3Nl9jb25uYWMzX21hY193cml0ZV90eHdpXzgwMjExKHN0cnVjdCBt dDc2X2RldiAqZGV2LA0KPiA+IA0KPiA+IF9fbGUzMg0KPiA+ID4gPiA+ID4gKnR4d2ksDQo+ID4g PiA+ID4gPiArICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLA0KPiA+ID4gPiA+ID4gKyAgc3RydWN0IGll ZWU4MDIxMV9rZXlfY29uZiAqa2V5KSB7DQo+ID4gPiA+ID4gPiArc3RydWN0IGllZWU4MDIxMV9o ZHIgKmhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKXNrYi0NCj4gPiA+IA0KPiA+ID4gZGF0 YTsNCj4gPiA+ID4gPiA+ICtzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGll ZWU4MDIxMV9tZ210DQo+ID4gPiA+ID4gPiAqKXNrYi0NCj4gPiA+ID4gPiA+ID4gZGF0YTsNCj4g PiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gK3N0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyA9 IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTsNCj4gPiA+ID4gPiA+ICtib29sIG11bHRpY2FzdCA9IGlz X211bHRpY2FzdF9ldGhlcl9hZGRyKGhkci0+YWRkcjEpOw0KPiA+ID4gPiA+ID4gK3U4IHRpZCA9 IHNrYi0+cHJpb3JpdHkgJiBJRUVFODAyMTFfUU9TX0NUTF9USURfTUFTSzsNCj4gPiA+ID4gPiA+ ICtfX2xlMTYgZmMgPSBoZHItPmZyYW1lX2NvbnRyb2w7DQo+ID4gPiA+ID4gPiArdTggZmNfdHlw ZSwgZmNfc3R5cGU7DQo+ID4gPiA+ID4gPiArdTMyIHZhbDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ICtpZiAoaWVlZTgwMjExX2lzX2FjdGlvbihmYykgJiYNCj4gPiA+ID4gPiA+ICsgICAg bWdtdC0+dS5hY3Rpb24uY2F0ZWdvcnkgPT0gV0xBTl9DQVRFR09SWV9CQUNLICYmDQo+ID4gPiA+ ID4gPiArICAgIG1nbXQtPnUuYWN0aW9uLnUuYWRkYmFfcmVxLmFjdGlvbl9jb2RlID09DQo+ID4g PiA+ID4gPiBXTEFOX0FDVElPTl9BRERCQV9SRVEpDQo+ID4gPiA+ID4gPiArdGlkID0gTVRfVFhf QUREQkE7DQo+ID4gPiA+ID4gPiArZWxzZSBpZiAoaWVlZTgwMjExX2lzX21nbXQoaGRyLT5mcmFt ZV9jb250cm9sKSkNCj4gPiA+ID4gPiA+ICt0aWQgPSBNVF9UWF9OT1JNQUw7DQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArdmFsID0gRklFTERfUFJFUChNVF9UWEQxX0hEUl9GT1JNQVQsIE1U X0hEUl9GT1JNQVRfODAyXzExKQ0KPiA+ID4gPiA+ID4gfA0KPiA+ID4gPiA+ID4gKyAgICAgIEZJ RUxEX1BSRVAoTVRfVFhEMV9IRFJfSU5GTywNCj4gPiA+ID4gPiA+ICsgaWVlZTgwMjExX2dldF9o ZHJsZW5fZnJvbV9za2Ioc2tiKSAvIDIpIHwNCj4gPiA+ID4gPiA+ICsgICAgICBGSUVMRF9QUkVQ KE1UX1RYRDFfVElELCB0aWQpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK2lmICghaWVl ZTgwMjExX2lzX2RhdGEoZmMpIHx8IG11bHRpY2FzdCB8fA0KPiA+ID4gPiA+ID4gKyAgICBpbmZv LT5mbGFncyAmIElFRUU4MDIxMV9UWF9DVExfVVNFX01JTlJBVEUpDQo+ID4gPiA+ID4gPiArdmFs IHw9IE1UX1RYRDFfRklYRURfUkFURTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtpZiAo a2V5ICYmIG11bHRpY2FzdCAmJg0KPiA+ID4gPiA+ID4gaWVlZTgwMjExX2lzX3JvYnVzdF9tZ210 X2ZyYW1lKHNrYikNCj4gPiANCj4gPiAmJg0KPiA+ID4gPiA+ID4gKyAgICBrZXktPmNpcGhlciA9 PSBXTEFOX0NJUEhFUl9TVUlURV9BRVNfQ01BQykgew0KPiA+ID4gPiA+ID4gK3ZhbCB8PSBNVF9U WEQxX0JJUDsNCj4gPiA+ID4gPiA+ICt0eHdpWzNdICY9IH5jcHVfdG9fbGUzMihNVF9UWEQzX1BS T1RFQ1RfRlJBTUUpOw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICt0eHdpWzFdIHw9IGNwdV90b19sZTMyKHZhbCk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArZmNfdHlwZSA9IChsZTE2X3RvX2NwdShmYykgJiBJRUVFODAyMTFfRkNUTF9GVFlQRSkgPj4g MjsNCj4gPiA+ID4gPiA+ICtmY19zdHlwZSA9IChsZTE2X3RvX2NwdShmYykgJiBJRUVFODAyMTFf RkNUTF9TVFlQRSkgPj4gNDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICt2YWwgPSBGSUVM RF9QUkVQKE1UX1RYRDJfRlJBTUVfVFlQRSwgZmNfdHlwZSkgfA0KPiA+ID4gPiA+ID4gKyAgICAg IEZJRUxEX1BSRVAoTVRfVFhEMl9TVUJfVFlQRSwgZmNfc3R5cGUpOw0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gK3R4d2lbMl0gfD0gY3B1X3RvX2xlMzIodmFsKTsNCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICt0eHdpWzNdIHw9IGNwdV90b19sZTMyKEZJRUxEX1BSRVAoTVRfVFhEM19C Q00sDQo+ID4gPiA+ID4gPiBtdWx0aWNhc3QpKTsNCj4gPiA+ID4gPiA+ICtpZiAoaWVlZTgwMjEx X2lzX2JlYWNvbihmYykpIHsNCj4gPiA+ID4gPiA+ICt0eHdpWzNdICY9IH5jcHVfdG9fbGUzMihN VF9UWEQzX1NXX1BPV0VSX01HTVQpOw0KPiA+ID4gPiA+ID4gK3R4d2lbM10gfD0gY3B1X3RvX2xl MzIoTVRfVFhEM19SRU1fVFhfQ09VTlQpOw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICtpZiAoaW5mby0+ZmxhZ3MgJiBJRUVFODAyMTFfVFhfQ1RMX0lOSkVDVEVE KSB7DQo+ID4gPiA+ID4gPiArdTE2IHNlcW5vID0gbGUxNl90b19jcHUoaGRyLT5zZXFfY3RybCk7 DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAraWYgKGllZWU4MDIxMV9pc19iYWNrX3JlcSho ZHItPmZyYW1lX2NvbnRyb2wpKSB7DQo+ID4gPiA+ID4gPiArc3RydWN0IGllZWU4MDIxMV9iYXIg KmJhcjsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtiYXIgPSAoc3RydWN0IGllZWU4MDIx MV9iYXIgKilza2ItPmRhdGE7DQo+ID4gPiA+ID4gPiArc2Vxbm8gPSBsZTE2X3RvX2NwdShiYXIt PnN0YXJ0X3NlcV9udW0pOw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICt2YWwgPSBNVF9UWEQzX1NOX1ZBTElEIHwNCj4gPiA+ID4gPiA+ICsgICAgICBGSUVMRF9Q UkVQKE1UX1RYRDNfU0VRLA0KPiA+ID4gPiA+ID4gSUVFRTgwMjExX1NFUV9UT19TTihzZXFubykp Ow0KPiA+ID4gPiA+ID4gK3R4d2lbM10gfD0gY3B1X3RvX2xlMzIodmFsKTsNCj4gPiA+ID4gPiA+ ICt0eHdpWzNdICY9IH5jcHVfdG9fbGUzMihNVF9UWEQzX0hXX0FNU0RVKTsNCj4gPiA+ID4gPiA+ ICt9DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK3ZvaWQgbXQ3 Nl9jb25uYWMzX21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LA0KPiA+IA0KPiA+ IF9fbGUzMg0KPiA+ID4gPiA+ID4gKnR4d2ksDQo+ID4gPiA+ID4gPiArIHN0cnVjdCBza19idWZm ICpza2IsIHN0cnVjdCBtdDc2X3djaWQNCj4gPiA+ID4gPiA+ICp3Y2lkLA0KPiA+ID4gPiA+ID4g KyBzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXksIGludA0KPiA+ID4gPiA+ID4gcGlkLA0K PiA+ID4gPiA+ID4gKyBlbnVtIG10NzZfdHhxX2lkIHFpZCwgdTMyIGNoYW5nZWQpDQo+ID4gPiA+ ID4gPiArew0KPiA+ID4gPiA+ID4gK3UzMiB2YWwsIHN6X3R4ZCA9IG10NzZfaXNfbW1pbyhkZXYp ID8gTVRfVFhEX1NJWkUgOg0KPiA+ID4gPiA+ID4gTVRfU0RJT19UWERfU0laRTsNCj4gPiA+ID4g PiA+ICtzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm8gPSBJRUVFODAyMTFfU0tCX0NCKHNr Yik7DQo+ID4gPiA+ID4gPiArc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IGluZm8tPmNvbnRy b2wudmlmOw0KPiA+ID4gPiA+ID4gK3U4IGJhbmRfaWR4ID0gKGluZm8tPmh3X3F1ZXVlICYgTVRf VFhfSFdfUVVFVUVfUEhZKSA+PiAyOw0KPiA+ID4gPiA+ID4gK3U4IHBfZm10LCBxX2lkeCwgb21h Y19pZHggPSAwLCB3bW1faWR4ID0gMDsNCj4gPiA+ID4gPiA+ICtib29sIGlzXzgwMjMgPSBpbmZv LT5mbGFncyAmDQo+ID4gDQo+ID4gSUVFRTgwMjExX1RYX0NUTF9IV184MDIxMV9FTkNBUDsNCj4g PiA+ID4gPiA+ICtzdHJ1Y3QgbXQ3Nl92aWYgKm12aWY7DQo+ID4gPiA+ID4gPiArdTE2IHR4X2Nv dW50ID0gMTU7DQo+ID4gPiA+ID4gPiArYm9vbCBiZWFjb24gPSAhIShjaGFuZ2VkICYgKEJTU19D SEFOR0VEX0JFQUNPTiB8DQo+ID4gPiA+ID4gPiArICAgIEJTU19DSEFOR0VEX0JFQUNPTl9FTkFC TEVEKSk7DQo+ID4gPiA+ID4gPiArYm9vbCBpbmJhbmRfZGlzYyA9ICEhKGNoYW5nZWQgJg0KPiA+ ID4gPiA+ID4gKEJTU19DSEFOR0VEX1VOU09MX0JDQVNUX1BST0JFX1JFU1AgfA0KPiA+ID4gPiA+ ID4gKyBCU1NfQ0hBTkdFRF9GSUxTX0RJU0NPVkVSWSkpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gK212aWYgPSB2aWYgPyAoc3RydWN0IG10NzZfdmlmICopdmlmLT5kcnZfcHJpdiA6IE5V TEw7DQo+ID4gPiA+ID4gPiAraWYgKG12aWYpIHsNCj4gPiA+ID4gPiA+ICtvbWFjX2lkeCA9IG12 aWYtPm9tYWNfaWR4Ow0KPiA+ID4gPiA+ID4gK3dtbV9pZHggPSBtdmlmLT53bW1faWR4Ow0KPiA+ ID4gPiA+ID4gK2JhbmRfaWR4ID0gbXZpZi0+YmFuZF9pZHg7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK2lmIChpbmJhbmRfZGlzYykgew0KPiA+ID4gPiA+ID4g K3BfZm10ID0gTVRfVFhfVFlQRV9GVzsNCj4gPiA+ID4gPiA+ICtxX2lkeCA9IE1UX0xNQUNfQUxU WDA7DQo+ID4gPiA+ID4gPiArfSBlbHNlIGlmIChiZWFjb24pIHsNCj4gPiA+ID4gPiA+ICtwX2Zt dCA9IE1UX1RYX1RZUEVfRlc7DQo+ID4gPiA+ID4gPiArcV9pZHggPSBNVF9MTUFDX0JDTjA7DQo+ ID4gPiA+ID4gPiArfSBlbHNlIGlmIChxaWQgPj0gTVRfVFhRX1BTRCkgew0KPiA+ID4gPiA+ID4g K3BfZm10ID0gbXQ3Nl9pc19tbWlvKGRldikgPyBNVF9UWF9UWVBFX0NUIDoNCj4gPiA+ID4gPiA+ IE1UX1RYX1RZUEVfU0Y7DQo+ID4gPiA+ID4gPiArcV9pZHggPSBNVF9MTUFDX0FMVFgwOw0KPiA+ ID4gPiA+ID4gK30gZWxzZSB7DQo+ID4gPiA+ID4gPiArcF9mbXQgPSBtdDc2X2lzX21taW8oZGV2 KSA/IE1UX1RYX1RZUEVfQ1QgOg0KPiA+ID4gPiA+ID4gTVRfVFhfVFlQRV9TRjsNCj4gPiA+ID4g PiA+ICtxX2lkeCA9IHdtbV9pZHggKiBNVDc2X0NPTk5BQ19NQVhfV01NX1NFVFMgKw0KPiA+ID4g PiA+ID4gK210NzZfY29ubmFjX2xtYWNfbWFwcGluZyhza2JfZ2V0X3F1ZXVlX21hcHBpbmcoDQo+ ID4gPiA+ID4gPiBza2IpKTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArdmFsID0gRklFTERfUFJFUChNVF9UWEQwX1RYX0JZVEVTLCBza2ItPmxlbiArIHN6X3R4 ZCkgfA0KPiA+ID4gPiA+ID4gKyAgICAgIEZJRUxEX1BSRVAoTVRfVFhEMF9QS1RfRk1ULCBwX2Zt dCkgfA0KPiA+ID4gPiA+ID4gKyAgICAgIEZJRUxEX1BSRVAoTVRfVFhEMF9RX0lEWCwgcV9pZHgp Ow0KPiA+ID4gPiA+ID4gK3R4d2lbMF0gPSBjcHVfdG9fbGUzMih2YWwpOw0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gK3ZhbCA9IEZJRUxEX1BSRVAoTVRfVFhEMV9XTEFOX0lEWCwgd2NpZC0+ aWR4KSB8DQo+ID4gPiA+ID4gPiArICAgICAgRklFTERfUFJFUChNVF9UWEQxX09XTl9NQUMsIG9t YWNfaWR4KTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtpZiAoYmFuZF9pZHgpDQo+ID4g PiA+ID4gPiArdmFsIHw9IEZJRUxEX1BSRVAoTVRfVFhEMV9UR0lELCBiYW5kX2lkeCk7DQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArdHh3aVsxXSA9IGNwdV90b19sZTMyKHZhbCk7DQo+ID4g PiA+ID4gPiArdHh3aVsyXSA9IDA7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArdmFsID0g TVRfVFhEM19TV19QT1dFUl9NR01UIHwNCj4gPiA+ID4gPiA+ICsgICAgICBGSUVMRF9QUkVQKE1U X1RYRDNfUkVNX1RYX0NPVU5ULCB0eF9jb3VudCk7DQo+ID4gPiA+ID4gPiAraWYgKGtleSkNCj4g PiA+ID4gPiA+ICt2YWwgfD0gTVRfVFhEM19QUk9URUNUX0ZSQU1FOw0KPiA+ID4gPiA+ID4gK2lm IChpbmZvLT5mbGFncyAmIElFRUU4MDIxMV9UWF9DVExfTk9fQUNLKQ0KPiA+ID4gPiA+ID4gK3Zh bCB8PSBNVF9UWEQzX05PX0FDSzsNCj4gPiA+ID4gPiA+ICtpZiAod2NpZC0+YW1zZHUpDQo+ID4g PiA+ID4gPiArdmFsIHw9IE1UX1RYRDNfSFdfQU1TRFU7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArdHh3aVszXSA9IGNwdV90b19sZTMyKHZhbCk7DQo+ID4gPiA+ID4gPiArdHh3aVs0XSA9 IDA7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArdmFsID0gRklFTERfUFJFUChNVF9UWEQ1 X1BJRCwgcGlkKTsNCj4gPiA+ID4gPiA+ICtpZiAocGlkID49IE1UX1BBQ0tFVF9JRF9GSVJTVCkN Cj4gPiA+ID4gPiA+ICt2YWwgfD0gTVRfVFhENV9UWF9TVEFUVVNfSE9TVDsNCj4gPiA+ID4gPiA+ ICt0eHdpWzVdID0gY3B1X3RvX2xlMzIodmFsKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICt2YWwgPSBNVF9UWEQ2X0RJU19NQVQgfCBNVF9UWEQ2X0RBUyB8DQo+ID4gPiA+ID4gPiArICAg ICAgRklFTERfUFJFUChNVF9UWEQ2X01TRFVfQ05ULCAxKTsNCj4gPiA+ID4gPiA+ICt0eHdpWzZd ID0gY3B1X3RvX2xlMzIodmFsKTsNCj4gPiA+ID4gPiA+ICt0eHdpWzddID0gMDsNCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICtpZiAoaXNfODAyMykNCj4gPiA+ID4gPiA+ICttdDc2X2Nvbm5h YzNfbWFjX3dyaXRlX3R4d2lfODAyMyh0eHdpLCBza2IsIHdjaWQpOw0KPiA+ID4gPiA+ID4gK2Vs c2UNCj4gPiA+ID4gPiA+ICttdDc2X2Nvbm5hYzNfbWFjX3dyaXRlX3R4d2lfODAyMTEoZGV2LCB0 eHdpLCBza2IsIGtleSk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAraWYgKHR4d2lbMV0g JiBjcHVfdG9fbGUzMihNVF9UWEQxX0ZJWEVEX1JBVEUpKSB7DQo+ID4gPiA+ID4gPiArc3RydWN0 IGllZWU4MDIxMV9oZHIgKmhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkcg0KPiA+ID4gPiA+ID4g Kilza2ItPmRhdGE7DQo+ID4gPiA+ID4gPiArYm9vbCBtY2FzdCA9IGllZWU4MDIxMV9pc19kYXRh KGhkci0+ZnJhbWVfY29udHJvbCkgJiYNCj4gPiA+ID4gPiA+ICsgICAgIGlzX211bHRpY2FzdF9l dGhlcl9hZGRyKGhkci0+YWRkcjEpOw0KPiA+ID4gPiA+ID4gK3U4IGlkeCA9IE1UNzZfQ09OTkFD M19CQVNJQ19SQVRFU19UQkw7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAraWYgKG12aWYp IHsNCj4gPiA+ID4gPiA+ICtpZiAobWNhc3QgJiYgbXZpZi0+bWNhc3RfcmF0ZXNfaWR4KQ0KPiA+ ID4gPiA+ID4gK2lkeCA9IG12aWYtPm1jYXN0X3JhdGVzX2lkeDsNCj4gPiA+ID4gPiA+ICtlbHNl IGlmIChiZWFjb24gJiYgbXZpZi0+YmVhY29uX3JhdGVzX2lkeCkNCj4gPiA+ID4gPiA+ICtpZHgg PSBtdmlmLT5iZWFjb25fcmF0ZXNfaWR4Ow0KPiA+ID4gPiA+ID4gK2Vsc2UNCj4gPiA+ID4gPiA+ ICtpZHggPSBtdmlmLT5iYXNpY19yYXRlc19pZHg7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gK3R4d2lbNl0gfD0gY3B1X3RvX2xlMzIoRklFTERfUFJFUChNVF9U WEQ2X1RYX1JBVEUsDQo+ID4gPiA+ID4gPiBpZHgpKTsNCj4gPiA+ID4gPiA+ICt0eHdpWzNdIHw9 IGNwdV90b19sZTMyKE1UX1RYRDNfQkFfRElTQUJMRSk7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4g PiA+ID4gK30NCj4gPiA+ID4gPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChtdDc2X2Nvbm5hYzNfbWFj X3dyaXRlX3R4d2kpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK3ZvaWQgbXQ3Nl9jb25u YWMzX3R4d2lfZnJlZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0DQo+ID4gPiA+ID4gPiBt dDc2X3R4d2lfY2FjaGUgKnQsDQo+ID4gPiA+ID4gPiArICAgIHN0cnVjdCBpZWVlODAyMTFfc3Rh ICpzdGEsDQo+ID4gPiA+ID4gPiArICAgIHN0cnVjdCBsaXN0X2hlYWQgKmZyZWVfbGlzdCkNCj4g PiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArX19sZTMyICp0eHdpOw0KPiA+ID4gPiA+ID4gK3Ux NiB3Y2lkX2lkeDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICttdDc2X2Nvbm5hY190eHBf c2tiX3VubWFwKGRldiwgdCk7DQo+ID4gPiA+ID4gPiAraWYgKCF0LT5za2IpDQo+ID4gPiA+ID4g PiArZ290byBvdXQ7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArdHh3aSA9IChfX2xlMzIg KiltdDc2X2dldF90eHdpX3B0cihkZXYsIHQpOw0KPiA+ID4gPiA+ID4gK2lmIChzdGEpIHsNCj4g PiA+ID4gPiA+ICtzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkID0gKHN0cnVjdCBtdDc2X3djaWQgKilz dGEtDQo+ID4gPiA+ID4gPiA+IGRydl9wcml2Ow0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArd2NpZF9pZHggPSB3Y2lkLT5pZHg7DQo+ID4gPiA+ID4gPiAraWYgKGxp a2VseSh0LT5za2ItPnByb3RvY29sICE9IGNwdV90b19iZTE2KEVUSF9QX1BBRSkpKQ0KPiA+ID4g PiA+ID4gK210NzZfY29ubmFjM190eF9jaGVja19hZ2dyKHN0YSwgdHh3aSk7DQo+ID4gPiA+ID4g PiArfSBlbHNlIHsNCj4gPiA+ID4gPiA+ICt3Y2lkX2lkeCA9IGxlMzJfZ2V0X2JpdHModHh3aVsx XSwgTVRfVFhEMV9XTEFOX0lEWCk7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gK19fbXQ3Nl90eF9jb21wbGV0ZV9za2IoZGV2LCB3Y2lkX2lkeCwgdC0+c2tiLCBm cmVlX2xpc3QpOw0KPiA+ID4gPiA+ID4gK291dDoNCj4gPiA+ID4gPiA+ICt0LT5za2IgPSBOVUxM Ow0KPiA+ID4gPiA+ID4gK210NzZfcHV0X3R4d2koZGV2LCB0KTsNCj4gPiA+ID4gPiA+ICt9DQo+ ID4gPiA+ID4gPiArRVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9jb25uYWMzX3R4d2lfZnJlZSk7DQo+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArc3RhdGljIGJvb2wNCj4gPiA+ID4gPiA+ICttdDc2 X2Nvbm5hYzNfbWFjX2FkZF90eHNfc2tiKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3QNCj4g PiA+ID4gPiA+IG10NzZfd2NpZA0KPiA+ID4gPiA+ID4gKndjaWQsDQo+ID4gPiA+ID4gPiArICAg ICBpbnQgcGlkLCBfX2xlMzIgKnR4c19kYXRhKQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ ICtzdHJ1Y3QgbXQ3Nl9zdGFfc3RhdHMgKnN0YXRzID0gJndjaWQtPnN0YXRzOw0KPiA+ID4gPiA+ ID4gK3N0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kOw0KPiA+ID4gPiA+ID4g K3N0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbzsNCj4gPiA+ID4gPiA+ICt1MzIgdHhyYXRl LCB0eHMsIG1vZGUsIHN0YmM7DQo+ID4gPiA+ID4gPiArc3RydWN0IHJhdGVfaW5mbyByYXRlID0g e307DQo+ID4gPiA+ID4gPiArc3RydWN0IHNrX2J1ZmZfaGVhZCBsaXN0Ow0KPiA+ID4gPiA+ID4g K3N0cnVjdCBtdDc2X3BoeSAqbXBoeTsNCj4gPiA+ID4gPiA+ICtzdHJ1Y3Qgc2tfYnVmZiAqc2ti Ow0KPiA+ID4gPiA+ID4gK2Jvb2wgY2NrID0gZmFsc2U7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArbXQ3Nl90eF9zdGF0dXNfbG9jayhkZXYsICZsaXN0KTsNCj4gPiA+ID4gPiA+ICtza2Ig PSBtdDc2X3R4X3N0YXR1c19za2JfZ2V0KGRldiwgd2NpZCwgcGlkLCAmbGlzdCk7DQo+ID4gPiA+ ID4gPiAraWYgKCFza2IpDQo+ID4gPiA+ID4gPiArZ290byBvdXRfbm9fc2tiOw0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gK3R4cyA9IGxlMzJfdG9fY3B1KHR4c19kYXRhWzBdKTsNCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtpbmZvID0gSUVFRTgwMjExX1NLQl9DQihza2IpOw0KPiA+ ID4gPiA+ID4gK2lmICghKHR4cyAmIE1UX1RYUzBfQUNLX0VSUk9SX01BU0spKQ0KPiA+ID4gPiA+ ID4gK2luZm8tPmZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX0FDSzsNCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICtpbmZvLT5zdGF0dXMuYW1wZHVfbGVuID0gMTsNCj4gPiA+ID4gPiA+ICtp bmZvLT5zdGF0dXMuYW1wZHVfYWNrX2xlbiA9ICEhKGluZm8tPmZsYWdzICYNCj4gPiA+ID4gPiA+ ICtJRUVFODAyMTFfVFhfU1RBVF9BQ0spOw0KPiA+ID4gPiA+ID4gK2luZm8tPnN0YXR1cy5yYXRl c1swXS5pZHggPSAtMTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICt0eHJhdGUgPSBGSUVM RF9HRVQoTVRfVFhTMF9UWF9SQVRFLCB0eHMpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g K3JhdGUubWNzID0gRklFTERfR0VUKE1UX1RYX1JBVEVfSURYLCB0eHJhdGUpOw0KPiA+ID4gPiA+ ID4gK3JhdGUubnNzID0gRklFTERfR0VUKE1UX1RYX1JBVEVfTlNTLCB0eHJhdGUpICsgMTsNCj4g PiA+ID4gPiA+ICtzdGJjID0gbGUzMl9nZXRfYml0cyh0eHNfZGF0YVszXSwgTVRfVFhTM19SQVRF X1NUQkMpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK2lmIChzdGJjICYmIHJhdGUubnNz ID4gMSkNCj4gPiA+ID4gPiA+ICtyYXRlLm5zcyA+Pj0gMTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ICtpZiAocmF0ZS5uc3MgLSAxIDwgQVJSQVlfU0laRShzdGF0cy0+dHhfbnNzKSkNCj4g PiA+ID4gPiA+ICtzdGF0cy0+dHhfbnNzW3JhdGUubnNzIC0gMV0rKzsNCj4gPiA+ID4gPiA+ICtp ZiAocmF0ZS5tY3MgPCBBUlJBWV9TSVpFKHN0YXRzLT50eF9tY3MpKQ0KPiA+ID4gPiA+ID4gK3N0 YXRzLT50eF9tY3NbcmF0ZS5tY3NdKys7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArbW9k ZSA9IEZJRUxEX0dFVChNVF9UWF9SQVRFX01PREUsIHR4cmF0ZSk7DQo+ID4gPiA+ID4gPiArc3dp dGNoIChtb2RlKSB7DQo+ID4gPiA+ID4gPiArY2FzZSBNVF9QSFlfVFlQRV9DQ0s6DQo+ID4gPiA+ ID4gPiArY2NrID0gdHJ1ZTsNCj4gPiA+ID4gPiA+ICtmYWxsdGhyb3VnaDsNCj4gPiA+ID4gPiA+ ICtjYXNlIE1UX1BIWV9UWVBFX09GRE06DQo+ID4gPiA+ID4gPiArbXBoeSA9IG10NzZfZGV2X3Bo eShkZXYsIHdjaWQtPnBoeV9pZHgpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK2lmICht cGh5LT5jaGFuZGVmLmNoYW4tPmJhbmQgPT0gTkw4MDIxMV9CQU5EXzVHSFopDQo+ID4gPiA+ID4g PiArc2JhbmQgPSAmbXBoeS0+c2JhbmRfNWcuc2JhbmQ7DQo+ID4gPiA+ID4gPiArZWxzZSBpZiAo bXBoeS0+Y2hhbmRlZi5jaGFuLT5iYW5kID09IE5MODAyMTFfQkFORF82R0haKQ0KPiA+ID4gPiA+ ID4gK3NiYW5kID0gJm1waHktPnNiYW5kXzZnLnNiYW5kOw0KPiA+ID4gPiA+ID4gK2Vsc2UNCj4g PiA+ID4gPiA+ICtzYmFuZCA9ICZtcGh5LT5zYmFuZF8yZy5zYmFuZDsNCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICtyYXRlLm1jcyA9IG10NzZfZ2V0X3JhdGUobXBoeS0+ZGV2LCBzYmFuZCwg cmF0ZS5tY3MsDQo+ID4gPiA+ID4gPiBjY2spOw0KPiA+ID4gPiA+ID4gK3JhdGUubGVnYWN5ID0g c2JhbmQtPmJpdHJhdGVzW3JhdGUubWNzXS5iaXRyYXRlOw0KPiA+ID4gPiA+ID4gK2JyZWFrOw0K PiA+ID4gPiA+ID4gK2Nhc2UgTVRfUEhZX1RZUEVfSFQ6DQo+ID4gPiA+ID4gPiArY2FzZSBNVF9Q SFlfVFlQRV9IVF9HRjoNCj4gPiA+ID4gPiA+ICtpZiAocmF0ZS5tY3MgPiAzMSkNCj4gPiA+ID4g PiA+ICtnb3RvIG91dDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtyYXRlLmZsYWdzID0g UkFURV9JTkZPX0ZMQUdTX01DUzsNCj4gPiA+ID4gPiA+ICtpZiAod2NpZC0+cmF0ZS5mbGFncyAm IFJBVEVfSU5GT19GTEFHU19TSE9SVF9HSSkNCj4gPiA+ID4gPiA+ICtyYXRlLmZsYWdzIHw9IFJB VEVfSU5GT19GTEFHU19TSE9SVF9HSTsNCj4gPiA+ID4gPiA+ICticmVhazsNCj4gPiA+ID4gPiA+ ICtjYXNlIE1UX1BIWV9UWVBFX1ZIVDoNCj4gPiA+ID4gPiA+ICtpZiAocmF0ZS5tY3MgPiA5KQ0K PiA+ID4gPiA+ID4gK2dvdG8gb3V0Ow0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK3JhdGUu ZmxhZ3MgPSBSQVRFX0lORk9fRkxBR1NfVkhUX01DUzsNCj4gPiA+ID4gPiA+ICticmVhazsNCj4g PiA+ID4gPiA+ICtjYXNlIE1UX1BIWV9UWVBFX0hFX1NVOg0KPiA+ID4gPiA+ID4gK2Nhc2UgTVRf UEhZX1RZUEVfSEVfRVhUX1NVOg0KPiA+ID4gPiA+ID4gK2Nhc2UgTVRfUEhZX1RZUEVfSEVfVEI6 DQo+ID4gPiA+ID4gPiArY2FzZSBNVF9QSFlfVFlQRV9IRV9NVToNCj4gPiA+ID4gPiA+ICtpZiAo cmF0ZS5tY3MgPiAxMSkNCj4gPiA+ID4gPiA+ICtnb3RvIG91dDsNCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICtyYXRlLmhlX2dpID0gd2NpZC0+cmF0ZS5oZV9naTsNCj4gPiA+ID4gPiA+ICty YXRlLmhlX2RjbSA9IEZJRUxEX0dFVChNVF9UWF9SQVRFX0RDTSwgdHhyYXRlKTsNCj4gPiA+ID4g PiA+ICtyYXRlLmZsYWdzID0gUkFURV9JTkZPX0ZMQUdTX0hFX01DUzsNCj4gPiA+ID4gPiA+ICti cmVhazsNCj4gPiA+ID4gPiA+ICtjYXNlIE1UX1BIWV9UWVBFX0VIVF9TVToNCj4gPiA+ID4gPiA+ ICtjYXNlIE1UX1BIWV9UWVBFX0VIVF9UUklHOg0KPiA+ID4gPiA+ID4gK2Nhc2UgTVRfUEhZX1RZ UEVfRUhUX01VOg0KPiA+ID4gPiA+ID4gK2lmIChyYXRlLm1jcyA+IDEzKQ0KPiA+ID4gPiA+ID4g K2dvdG8gb3V0Ow0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK3JhdGUuZWh0X2dpID0gd2Np ZC0+cmF0ZS5laHRfZ2k7DQo+ID4gPiA+ID4gPiArcmF0ZS5mbGFncyA9IFJBVEVfSU5GT19GTEFH U19FSFRfTUNTOw0KPiA+ID4gPiA+ID4gK2JyZWFrOw0KPiA+ID4gPiA+ID4gK2RlZmF1bHQ6DQo+ ID4gPiA+ID4gPiArZ290byBvdXQ7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gK3N0YXRzLT50eF9tb2RlW21vZGVdKys7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArc3dpdGNoIChGSUVMRF9HRVQoTVRfVFhTMF9CVywgdHhzKSkgew0KPiA+ID4gPiA+ID4g K2Nhc2UgSUVFRTgwMjExX1NUQV9SWF9CV18zMjA6DQo+ID4gPiA+ID4gPiArcmF0ZS5idyA9IFJB VEVfSU5GT19CV18zMjA7DQo+ID4gPiA+ID4gPiArc3RhdHMtPnR4X2J3WzRdKys7DQo+ID4gPiA+ ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiArY2FzZSBJRUVFODAyMTFfU1RBX1JYX0JXXzE2MDoN Cj4gPiA+ID4gPiA+ICtyYXRlLmJ3ID0gUkFURV9JTkZPX0JXXzE2MDsNCj4gPiA+ID4gPiA+ICtz dGF0cy0+dHhfYndbM10rKzsNCj4gPiA+ID4gPiA+ICticmVhazsNCj4gPiA+ID4gPiA+ICtjYXNl IElFRUU4MDIxMV9TVEFfUlhfQldfODA6DQo+ID4gPiA+ID4gPiArcmF0ZS5idyA9IFJBVEVfSU5G T19CV184MDsNCj4gPiA+ID4gPiA+ICtzdGF0cy0+dHhfYndbMl0rKzsNCj4gPiA+ID4gPiA+ICti cmVhazsNCj4gPiA+ID4gPiA+ICtjYXNlIElFRUU4MDIxMV9TVEFfUlhfQldfNDA6DQo+ID4gPiA+ ID4gPiArcmF0ZS5idyA9IFJBVEVfSU5GT19CV180MDsNCj4gPiA+ID4gPiA+ICtzdGF0cy0+dHhf YndbMV0rKzsNCj4gPiA+ID4gPiA+ICticmVhazsNCj4gPiA+ID4gPiA+ICtkZWZhdWx0Og0KPiA+ ID4gPiA+ID4gK3JhdGUuYncgPSBSQVRFX0lORk9fQldfMjA7DQo+ID4gPiA+ID4gPiArc3RhdHMt PnR4X2J3WzBdKys7DQo+ID4gPiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4g PiA+ID4gK3djaWQtPnJhdGUgPSByYXRlOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK291 dDoNCj4gPiA+ID4gPiA+ICttdDc2X3R4X3N0YXR1c19za2JfZG9uZShkZXYsIHNrYiwgJmxpc3Qp Ow0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK291dF9ub19za2I6DQo+ID4gPiA+ID4gPiAr bXQ3Nl90eF9zdGF0dXNfdW5sb2NrKGRldiwgJmxpc3QpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gK3JldHVybiAhIXNrYjsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArdm9pZCBtdDc2X2Nvbm5hYzNfbWFjX2FkZF90eHMoc3RydWN0IG10NzZfZGV2ICpk ZXYsIHZvaWQNCj4gPiANCj4gPiAqZGF0YSwNCj4gPiA+ID4gPiA+ICsgICAgICB1MzIgbWF4X3d0 Ymxfc2l6ZSkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArc3RydWN0IG10NzZfd2NpZCAq d2NpZDsNCj4gPiA+ID4gPiA+ICtfX2xlMzIgKnR4c19kYXRhID0gZGF0YTsNCj4gPiA+ID4gPiA+ ICt1MTYgd2NpZHg7DQo+ID4gPiA+ID4gPiArdTggcGlkOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gK2lmIChsZTMyX2dldF9iaXRzKHR4c19kYXRhWzBdLCBNVF9UWFMwX1RYU19GT1JNQVQp ID4gMSkNCj4gPiA+ID4gPiA+ICtyZXR1cm47DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr d2NpZHggPSBsZTMyX2dldF9iaXRzKHR4c19kYXRhWzJdLCBNVF9UWFMyX1dDSUQpOw0KPiA+ID4g PiA+ID4gK3BpZCA9IGxlMzJfZ2V0X2JpdHModHhzX2RhdGFbM10sIE1UX1RYUzNfUElEKTsNCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtpZiAocGlkIDwgTVRfUEFDS0VUX0lEX0ZJUlNUKQ0K PiA+ID4gPiA+ID4gK3JldHVybjsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtpZiAod2Np ZHggPj0gbWF4X3d0Ymxfc2l6ZSkNCj4gPiA+ID4gPiA+ICtyZXR1cm47DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArcmN1X3JlYWRfbG9jaygpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gK3djaWQgPSByY3VfZGVyZWZlcmVuY2UoZGV2LT53Y2lkW3djaWR4XSk7DQo+ID4gPiA+ID4g PiAraWYgKCF3Y2lkKQ0KPiA+ID4gPiA+ID4gK2dvdG8gb3V0Ow0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gK210NzZfY29ubmFjM19tYWNfYWRkX3R4c19za2IoZGV2LCB3Y2lkLCBwaWQsIHR4 c19kYXRhKTsNCj4gPiA+ID4gPiA+ICtpZiAoIXdjaWQtPnN0YSkNCj4gPiA+ID4gPiA+ICtnb3Rv IG91dDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtzcGluX2xvY2tfYmgoJmRldi0+c3Rh X3BvbGxfbG9jayk7DQo+ID4gPiA+ID4gPiAraWYgKGxpc3RfZW1wdHkoJndjaWQtPnBvbGxfbGlz dCkpDQo+ID4gPiA+ID4gPiArbGlzdF9hZGRfdGFpbCgmd2NpZC0+cG9sbF9saXN0LCAmZGV2LT5z dGFfcG9sbF9saXN0KTsNCj4gPiA+ID4gPiA+ICtzcGluX3VubG9ja19iaCgmZGV2LT5zdGFfcG9s bF9sb2NrKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtvdXQ6DQo+ID4gPiA+ID4gPiAr cmN1X3JlYWRfdW5sb2NrKCk7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gK0VYUE9SVF9T WU1CT0xfR1BMKG10NzZfY29ubmFjM19tYWNfYWRkX3R4cyk7DQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArdm9pZCBtdDc2X2Nvbm5hYzNfdHhfdG9rZW5fcHV0KHN0cnVjdCBtdDc2X2RldiAq ZGV2KQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICtzdHJ1Y3QgbXQ3Nl90eHdpX2NhY2hl ICp0eHdpOw0KPiA+ID4gPiA+ID4gK2ludCBpZDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICtzcGluX2xvY2tfYmgoJmRldi0+dG9rZW5fbG9jayk7DQo+ID4gPiA+ID4gPiAraWRyX2Zvcl9l YWNoX2VudHJ5KCZkZXYtPnRva2VuLCB0eHdpLCBpZCkgew0KPiA+ID4gPiA+ID4gK210NzZfY29u bmFjM190eHdpX2ZyZWUoZGV2LCB0eHdpLCBOVUxMLCBOVUxMKTsNCj4gPiA+ID4gPiA+ICtkZXYt PnRva2VuX2NvdW50LS07DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gK3NwaW5fdW5sb2Nr X2JoKCZkZXYtPnRva2VuX2xvY2spOw0KPiA+ID4gPiA+ID4gK2lkcl9kZXN0cm95KCZkZXYtPnRv a2VuKTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArRVhQT1JUX1NZTUJPTF9HUEwobXQ3 Nl9jb25uYWMzX3R4X3Rva2VuX3B1dCk7DQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiA+ ID4gPiBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMzX21h Yy5oDQo+ID4gPiA+ID4gPiBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3 Nl9jb25uYWMzX21hYy5oDQo+ID4gPiA+ID4gPiBpbmRleCA2NjYzYTBiNDY1NDEuLmJjYzFkOTc2 YjJiMCAxMDA2NDQNCj4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlh dGVrL210NzYvbXQ3Nl9jb25uYWMzX21hYy5oDQo+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL25l dC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjM19tYWMuaA0KPiA+ID4gPiA+ID4g QEAgLTQsNiArNCwyNCBAQA0KPiA+ID4gPiA+ID4gICNpZm5kZWYgX19NVDc2X0NPTk5BQzNfTUFD X0gNCj4gPiA+ID4gPiA+ICAjZGVmaW5lIF9fTVQ3Nl9DT05OQUMzX01BQ19IDQo+ID4gPiA+ID4g PiAgDQo+ID4gPiA+ID4gPiArLyogTk9URTogdXNlZCB0byBtYXAgbXQ3Nl9yYXRlcy4gaWR4IG1h eSBjaGFuZ2UgaWYNCj4gPiA+ID4gPiA+IGZpcm13YXJlDQo+ID4gPiA+ID4gPiBleHBhbmRzDQo+ ID4gPiA+ID4gPiB0YWJsZSAqLw0KPiA+ID4gPiA+ID4gKyNkZWZpbmUgTVQ3Nl9DT05OQUMzX0JB U0lDX1JBVEVTX1RCTDExDQo+ID4gPiA+ID4gPiArI2RlZmluZSBNVDc2X0NPTk5BQzNfQkVBQ09O X1JBVEVTX1RCTDI1DQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBEaWZmZXJl bnQgZGV2aWNlcyBtYXkgaGF2ZSBkaWZmZXJlbnQgZGVmaW5lZCB2YWx1ZS4gDQo+ID4gPiA+IA0K PiA+ID4gPiBUaGUgb3RoZXIgV2lGaTcgZGV2aWNlIEkgYW0gd29ya2luZyBvbiByZWxpZXMgb24g dGhlIHZhbHVlcyBJDQo+ID4gDQo+ID4gbW92ZWQNCj4gPiA+ID4gaW4NCj4gPiA+ID4gbXQ3Nl9j b25uYWMzX21hYy5oIChpbiBjb21tb24gd2l0aCBtdDc5OTYpLiBNb3Jlb3ZlciB5b3UgY2FuDQo+ ID4gDQo+ID4gc3RpbGwNCj4gPiA+ID4gaGF2ZSBwZXItZGV2aWNlIHZhbHVlcyBpbiBtdDc5OTYv bWFjLmggKEkgaGF2ZSBub3QgcmVtb3ZlZCBpdCkuDQo+ID4gPiA+IA0KPiA+ID4gDQo+ID4gPiBQ bGVhc2UgZG91YmxlIGNoZWNrIHdpdGggdGhlIG10ayBmb2xrIHlvdSB3b3JrIHdpdGguIFRoZSAx MSBhbmQNCj4gPiA+IDI1DQo+ID4gDQo+ID4gaXMNCj4gPiA+IHRoZSB2YWx1ZSBJIGRpc2N1c3Nl ZCB3aXRoIGZpcm13YXJlIGZvbGtzIHRvIGF2b2lkIG92ZXJsYXBwaW5nDQo+ID4gPiB0aGUNCj4g PiANCj4gPiB0YmwNCj4gPiA+IG10Nzk5NiB1c2UgKE1VL290aGVyIGFsZ28gaW4gZncpLCBvciBp dCBjYXVzZXMgc29tZXRoaW5nIGhhcmRseQ0KPiA+IA0KPiA+IHNvbHZpbmcNCj4gPiA+IGlzc3Vl DQo+ID4gDQo+ID4gc3VyZSwgdGh4IGZvciBwb2ludGluZyB0aGlzIG91dC4NCj4gPiBARGVyZW46 IGNhbiB5b3UgcGxlYXNlIGRvdWJsZSBjaGVjaz8NCj4gPiANCj4gPiBSZWdhcmRzLA0KPiA+IExv cmVuem8NCj4gPiANCj4gPiA+ICANCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBJJ20gdGhpbmtpbmcg aWYgaXQncyB0b28gZWFybHkgdG8gY3JlYXRlIHRoaXMgcGF0Y2ggZm9yIGp1c3QNCj4gPiANCj4g PiBtb3ZpbmcNCj4gPiA+ID4gPiBtdDc5OTYgdG8gY29ubmFjM19saWI/DQo+ID4gPiA+IA0KPiA+ ID4gPiBUaGUgY29kZSBJIG1vdmVkIGlzIHVzZWQgYnkgdGhlIG90aGVyIGRldmljZSBhcyB3ZWxs LiBUaGlzDQo+ID4gPiA+IHNlcmllcw0KPiA+IA0KPiA+IGlzDQo+ID4gPiA+IGENCj4gPiA+ID4g cHJlbGltaW5hcnkgc2VyaWVzIHRvIHN1cHBvcnQgaXQuDQo+ID4gPiA+IA0KPiA+ID4gPiBSZWdh cmRzLA0KPiA+ID4gPiBMb3JlbnpvDQo+ID4gPiA+IA0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IFJ5 ZGVyDQo+ID4gPiA+ID4gDQo=