Received: by 2002:a05:6358:16cd:b0:dc:6189:e246 with SMTP id r13csp750168rwl; Fri, 4 Nov 2022 06:05:07 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7jqdTcy7ZpjFhYMrebQCeKX6Lye6pyZbTkLXB/5iC0ULnybKsbA2azkyq+HVmDsiTwkVOp X-Received: by 2002:a17:907:3ea2:b0:7ad:86f9:7b15 with SMTP id hs34-20020a1709073ea200b007ad86f97b15mr33946432ejc.272.1667567107040; Fri, 04 Nov 2022 06:05:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1667567107; cv=none; d=google.com; s=arc-20160816; b=zlqvf3fLpqBxixt1Vd4wKX7hvffRuJHF2ZXsWESJzqjfgcz7nt4gz3UZ1rye7pYPdj vC/EU8wFE9GNKabxBjeIIb3ujmKjA8jPAcZk9kHwQV9UxET5dImFfNwv+qIHOr6URxQ5 FVzV+VsqbhDlLi/Qum+zu5pjvPDcaf0cK5xp0TdAh6kdKh1Xpjvp1Z6RlPKdOpDhITWt zzYFsgtj34yKnIaqIRMZklPGnNlceDnLQLKaajB+n00N2gWoVA7qR7+dmfzguofN1L47 ZYqb124ctpL23xGvN34cLow4U6QPhx7Q6FvUX/qvmI0XhPni3UqMCq8riXSZMq2MW0tz MwQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:references:in-reply-to:date:to:from :subject:message-id:dkim-signature; bh=b1z0vDjHJEYeQEY9qHcJZlvl93ssThdJSk0p8TXwaYE=; b=Ab3MQ9zRocx8xjrl9lttcy1Pgx6dBsJKeAcAjnZIFm4x9RZ7319vn8zmMs8qFShAEe G4sGabbj1LVetZH/3pCI9srl2b/qe6WO2TY3GdZcvUCXjiZBp+kTHPba7xkySHHAop6K uKzxAIzcdpH5y4KhnkrhHz7Wcu4B2bF0JoBIyrm37VuWGhwrLQkRTT7Ch9p3bDodxsvR jzwiXkWWKboS6Z2jl9vt7/lunEYb4vdDUuLllUM6Uy8+BDa/3VganqTbD4vg2uVIyXCz nnxnV351R6RKhmfSCfijThAv+XyQfqx5VHoKblyghFgVS7z113ztN/eSv9casKtCqB7Z 4pdg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=DvL5SzOn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q6-20020a056402518600b00457f31c1a10si5812727edd.584.2022.11.04.06.04.42; Fri, 04 Nov 2022 06:05:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=DvL5SzOn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229994AbiKDLgt (ORCPT + 96 others); Fri, 4 Nov 2022 07:36:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55138 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229481AbiKDLgq (ORCPT ); Fri, 4 Nov 2022 07:36:46 -0400 Received: from mail-qv1-xf32.google.com (mail-qv1-xf32.google.com [IPv6:2607:f8b0:4864:20::f32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3071A25EBF; Fri, 4 Nov 2022 04:36:42 -0700 (PDT) Received: by mail-qv1-xf32.google.com with SMTP id x15so3007740qvp.1; Fri, 04 Nov 2022 04:36:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:to:from:subject:message-id:from:to:cc:subject:date :message-id:reply-to; bh=b1z0vDjHJEYeQEY9qHcJZlvl93ssThdJSk0p8TXwaYE=; b=DvL5SzOnNBkT9TW8MzlSKmoP1BgVpvJCRSIZacYtk/QBZhJLJMCxJG9JrW0WteZ7Fk +8RNTWfKZPswXSgMuuyPxZhI2PYGuNCGK4cHGuYRUOzLAyEXeYhRQI3+6ykUDvjO+s5q TKMqKdHEuqztzyzSnSjEX2CkYJBLeMTq9HfCDdC1mQXKg15yeJDv7yaDBXCj/pgZpdXr JRCETaFdmDlBgn7agYQAvKoZckqtfinDEtDVz1KfcHJt1NoA6eORn2d7anSGNdeVbSBK yBbClDIJw0pWp17rteb5FAo9wNQYPaKiFApVQ9SSRggqkhz8dcNfbQ2jL66qb+tx29wR TyHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:to:from:subject:message-id:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=b1z0vDjHJEYeQEY9qHcJZlvl93ssThdJSk0p8TXwaYE=; b=oea9tKeZdwWsF+1SA4HhZg4dmQjjZcSMg5huT/KdGQEBkbyYeRh/yzRU1IrP8WkORP 1h8hYBuW2fo0tnIJtbYTOWzt5EWA3/G5oIpH+U8rdLQowubMo9gg0uKamgaFLo7Y6eWX jriFypYRgXKuICVXF0zC+/LkV89tJGkiDERiMJxgwF4XUilF1WpuhBiTxjZubwn8SPfc 36dEUR/J2Dus/T7W2Zd6dsY83EWEudoEmmwmuYnGJcBhJNc9tywekOI3esDyckkf2mZn GhVDZ7ohYDtTDCEOkKILHYAcV3amLJEQ+4TiDesQbvcyI8S3hyP32OZKBoAjcVtnwBw3 vQrQ== X-Gm-Message-State: ACrzQf1RviNDZ7bb/k5U0UX3EyXu1Uov4xtxN/pJ9crJtkd6s9G46Nof wMuiXk9uZYRDRorhycNxdxA= X-Received: by 2002:a05:6214:ccd:b0:4bb:663c:8018 with SMTP id 13-20020a0562140ccd00b004bb663c8018mr32232797qvx.24.1667561801064; Fri, 04 Nov 2022 04:36:41 -0700 (PDT) Received: from p200300f6ef036f005de6a4d0d791ed01.dip0.t-ipconnect.de (p200300f6ef036f005de6a4d0d791ed01.dip0.t-ipconnect.de. [2003:f6:ef03:6f00:5de6:a4d0:d791:ed01]) by smtp.gmail.com with ESMTPSA id f11-20020a05620a280b00b006bbc09af9f5sm2780788qkp.101.2022.11.04.04.36.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Nov 2022 04:36:40 -0700 (PDT) Message-ID: <3417a0fd87e6f13207690e49b797f2d2689f802a.camel@gmail.com> Subject: Re: [PATCH 2/4] iio: frequency: adf4377: add support for ADF4377 From: Nuno =?ISO-8859-1?Q?S=E1?= To: Antoniu Miclaus , jic23@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Date: Fri, 04 Nov 2022 12:38:07 +0100 In-Reply-To: <20221104092802.90725-3-antoniu.miclaus@analog.com> References: <20221104092802.90725-1-antoniu.miclaus@analog.com> <20221104092802.90725-3-antoniu.miclaus@analog.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.44.4 MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gRnJpLCAyMDIyLTExLTA0IGF0IDExOjI4ICswMjAwLCBBbnRvbml1IE1pY2xhdXMgd3JvdGU6 Cj4gVGhlIEFERjQzNzcgaXMgYSBoaWdoIHBlcmZvcm1hbmNlLCB1bHRyYWxvdyBqaXR0ZXIsIGR1 YWwgb3V0cHV0Cj4gaW50ZWdlci1OCj4gcGhhc2VkIGxvY2tlZCBsb29wIChQTEwpIHdpdGggaW50 ZWdyYXRlZCB2b2x0YWdlIGNvbnRyb2xsZWQKPiBvc2NpbGxhdG9yCj4gKFZDTykgaWRlYWxseSBz dWl0ZWQgZm9yIGRhdGEgY29udmVydGVyIGFuZCBtaXhlZCBzaWduYWwgZnJvbnQgZW5kCj4gKE14 RkUpCj4gY2xvY2sgYXBwbGljYXRpb25zLgo+IAo+IERhdGFzaGVldDoKPiBodHRwczovL3d3dy5h bmFsb2cuY29tL21lZGlhL2VuL3RlY2huaWNhbC1kb2N1bWVudGF0aW9uL2RhdGEtc2hlZXRzL2Fk ZjQzNzcucGRmCj4gU2lnbmVkLW9mZi1ieTogQW50b25pdSBNaWNsYXVzIDxhbnRvbml1Lm1pY2xh dXNAYW5hbG9nLmNvbT4KPiAtLS0KPiDCoGRyaXZlcnMvaWlvL2ZyZXF1ZW5jeS9LY29uZmlnwqDC oCB8wqDCoCAxMCArCj4gwqBkcml2ZXJzL2lpby9mcmVxdWVuY3kvTWFrZWZpbGXCoCB8wqDCoMKg IDEgKwo+IMKgZHJpdmVycy9paW8vZnJlcXVlbmN5L2FkZjQzNzcuYyB8IDExNTQKPiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4gwqAzIGZpbGVzIGNoYW5nZWQsIDExNjUgaW5zZXJ0 aW9ucygrKQo+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvaWlvL2ZyZXF1ZW5jeS9hZGY0 Mzc3LmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vZnJlcXVlbmN5L0tjb25maWcKPiBi L2RyaXZlcnMvaWlvL2ZyZXF1ZW5jeS9LY29uZmlnCj4gaW5kZXggZjM3MDJmMzY0MzZjLi45ZTg1 ZGZhNTg1MDggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8vZnJlcXVlbmN5L0tjb25maWcKPiAr KysgYi9kcml2ZXJzL2lpby9mcmVxdWVuY3kvS2NvbmZpZwo+IEBAIC01MCw2ICs1MCwxNiBAQCBj b25maWcgQURGNDM3MQo+IMKgwqDCoMKgwqDCoMKgwqDCoCBUbyBjb21waWxlIHRoaXMgZHJpdmVy IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKPiDCoMKgwqDCoMKgwqDCoMKgwqAgbW9k dWxlIHdpbGwgYmUgY2FsbGVkIGFkZjQzNzEuCj4gwqAKPiArY29uZmlnIEFERjQzNzcKPiArwqDC oMKgwqDCoMKgwqB0cmlzdGF0ZSAiQW5hbG9nIERldmljZXMgQURGNDM3NyBNaWNyb3dhdmUgV2lk ZWJhbmQKPiBTeW50aGVzaXplciIKPiArwqDCoMKgwqDCoMKgwqBkZXBlbmRzIG9uIFNQSSAmJiBD T01NT05fQ0xLCj4gK8KgwqDCoMKgwqDCoMKgaGVscAo+ICvCoMKgwqDCoMKgwqDCoMKgIFNheSB5 ZXMgaGVyZSB0byBidWlsZCBzdXBwb3J0IGZvciBBbmFsb2cgRGV2aWNlcyBBREY0Mzc3Cj4gTWlj cm93YXZlCj4gK8KgwqDCoMKgwqDCoMKgwqAgV2lkZWJhbmQgU3ludGhlc2l6ZXIuCj4gKwo+ICvC oMKgwqDCoMKgwqDCoMKgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29z ZSBNIGhlcmU6IHRoZQo+ICvCoMKgwqDCoMKgwqDCoMKgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBh ZGY0Mzc3Lgo+ICsKPiDCoGNvbmZpZyBBRE1WMTAxMwo+IMKgwqDCoMKgwqDCoMKgwqB0cmlzdGF0 ZSAiQW5hbG9nIERldmljZXMgQURNVjEwMTMgTWljcm93YXZlIFVwY29udmVydGVyIgo+IMKgwqDC oMKgwqDCoMKgwqBkZXBlbmRzIG9uIFNQSSAmJiBDT01NT05fQ0xLCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvaWlvL2ZyZXF1ZW5jeS9NYWtlZmlsZQo+IGIvZHJpdmVycy9paW8vZnJlcXVlbmN5L01h a2VmaWxlCj4gaW5kZXggNDhhZGQ3MzJmMWQzLi5iNjE2YzI5YjRhMDggMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9paW8vZnJlcXVlbmN5L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9paW8vZnJlcXVl bmN5L01ha2VmaWxlCj4gQEAgLTcsNiArNyw3IEBACj4gwqBvYmotJChDT05GSUdfQUQ5NTIzKSAr PSBhZDk1MjMubwo+IMKgb2JqLSQoQ09ORklHX0FERjQzNTApICs9IGFkZjQzNTAubwo+IMKgb2Jq LSQoQ09ORklHX0FERjQzNzEpICs9IGFkZjQzNzEubwo+ICtvYmotJChDT05GSUdfQURGNDM3Nykg Kz0gYWRmNDM3Ny5vCj4gwqBvYmotJChDT05GSUdfQURNVjEwMTMpICs9IGFkbXYxMDEzLm8KPiDC oG9iai0kKENPTkZJR19BRE1WMTAxNCkgKz0gYWRtdjEwMTQubwo+IMKgb2JqLSQoQ09ORklHX0FE TVY0NDIwKSArPSBhZG12NDQyMC5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2ZyZXF1ZW5j eS9hZGY0Mzc3LmMKPiBiL2RyaXZlcnMvaWlvL2ZyZXF1ZW5jeS9hZGY0Mzc3LmMKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMTkwMWRkZTEwMDNlCj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvaWlvL2ZyZXF1ZW5jeS9hZGY0Mzc3LmMKPiBAQCAtMCww ICsxLDExNTQgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQo+ ICsvKgo+ICsgKiBBREY0Mzc3IGRyaXZlcgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgMjAyMiBBbmFs b2cgRGV2aWNlcyBJbmMuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2JpdGZpZWxkLmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9iaXRzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L2Nsa2Rldi5oPgo+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9ub3RpZmllci5oPgo+ICsjaW5jbHVkZSA8bGludXgvcHJvcGVydHku aD4KPiArI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGkuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lpby9p aW8uaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgo+ICsjaW5jbHVkZSA8bGludXgvdW5p dHMuaD4KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+Cj4gKwo+ICsvKiBB REY0Mzc3IFJFRzAwMDAgTWFwICovCj4gKyNkZWZpbmUgQURGNDM3N19TT0ZUX1JFU0VUX1JfTVNL wqDCoMKgwqDCoMKgwqBCSVQoNykKPiArI2RlZmluZSBBREY0Mzc3X0xTQl9GSVJTVF9SX01TS8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDYpCj4gKyNkZWZpbmUgQURGNDM3N19B RERSRVNTX0FTQ19SX01TS8KgwqDCoMKgwqDCoEJJVCg1KQo+ICsjZGVmaW5lIEFERjQzNzdfU0RP X0FDVElWRV9SX01TS8KgwqDCoMKgwqDCoMKgQklUKDQpCj4gKyNkZWZpbmUgQURGNDM3N19TRE9f QUNUSVZFX01TS8KgwqDCoMKgwqDCoMKgwqDCoEJJVCgzKQo+ICsjZGVmaW5lIEFERjQzNzdfQURE UkVTU19BU0NfTVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCSVQoMikKPiArI2Rl ZmluZSBBREY0Mzc3X0xTQl9GSVJTVF9NU0vCoMKgwqDCoMKgwqDCoMKgwqDCoEJJVCgxKQo+ICsj ZGVmaW5lIEFERjQzNzdfU09GVF9SRVNFVF9NU0vCoMKgwqDCoMKgwqDCoMKgwqBCSVQoMCkKPiAr Cj4gKy8qIEFERjQzNzcgUkVHMDAwMCBCaXQgRGVmaW5pdGlvbiAqLwo+ICsjZGVmaW5lIEFERjQz NzdfU0RPX0FDVElWRV9TUElfM1fCoMKgwqDCoMKgwqAweDAKPiArI2RlZmluZSBBREY0Mzc3X1NE T19BQ1RJVkVfU1BJXzRXwqDCoMKgwqDCoMKgMHgxCj4gKwo+ICsjZGVmaW5lIEFERjQzNzdfQURE Ul9BU0NfQVVUT19ERUNSwqDCoMKgwqDCoDB4MAo+ICsjZGVmaW5lIEFERjQzNzdfQUREUl9BU0Nf QVVUT19JTkNSwqDCoMKgwqDCoDB4MQo+ICsKPiArI2RlZmluZSBBREY0Mzc3X0xTQl9GSVJTVF9N U0LCoMKgwqDCoMKgwqDCoMKgwqDCoDB4MAo+ICsjZGVmaW5lIEFERjQzNzdfTFNCX0ZJUlNUX0xT QsKgwqDCoMKgwqDCoMKgwqDCoMKgMHgxCj4gKwo+ICsjZGVmaW5lIEFERjQzNzdfU09GVF9SRVNF VF9OX09QwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAweDAKPiArI2RlZmluZSBBREY0 Mzc3X1NPRlRfUkVTRVRfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoDB4MQo+ICsKPiArLyogQURGNDM3 NyBSRUcwMDAxIE1hcCAqLwo+ICsjZGVmaW5lIEFERjQzNzdfU0lOR0xFX0lOU1RSX01TS8KgwqDC oMKgwqDCoMKgQklUKDcpCj4gKyNkZWZpbmUgQURGNDM3N19NQVNURVJfUkJfQ1RSTF9NU0vCoMKg wqDCoMKgQklUKDUpCj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwMDEgQml0IERlZmluaXRpb24gKi8K PiArI2RlZmluZSBBREY0Mzc3X1NQSV9TVFJFQU1fRU7CoMKgwqDCoMKgwqDCoMKgwqDCoDB4MAo+ ICsjZGVmaW5lIEFERjQzNzdfU1BJX1NUUkVBTV9ESVPCoMKgwqDCoMKgwqDCoMKgwqAweDEKPiAr Cj4gKyNkZWZpbmUgQURGNDM3N19SQl9TTEFWRV9SRUfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgw Cj4gKyNkZWZpbmUgQURGNDM3N19SQl9NQVNURVJfUkVHwqDCoMKgwqDCoMKgwqDCoMKgwqAweDEK PiArCj4gKy8qIEFERjQzNzcgUkVHMDAwMyBCaXQgRGVmaW5pdGlvbiAqLwo+ICsjZGVmaW5lIEFE RjQzNzdfQ0hJUF9UWVBFwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4MDYKPiArCj4gKy8q IEFERjQzNzcgUkVHMDAwNCBCaXQgRGVmaW5pdGlvbiAqLwo+ICsjZGVmaW5lIEFERjQzNzdfUFJP RFVDVF9JRF9MU0LCoMKgwqDCoMKgwqDCoMKgwqAweDAwMDUKPiArCj4gKy8qIEFERjQzNzcgUkVH MDAwNSBCaXQgRGVmaW5pdGlvbiAqLwo+ICsjZGVmaW5lIEFERjQzNzdfUFJPRFVDVF9JRF9NU0LC oMKgwqDCoMKgwqDCoMKgwqAweDAwMDUKPiArCj4gKy8qIEFERjQzNzcgUkVHMDAwQSBNYXAgKi8K PiArI2RlZmluZSBBREY0Mzc3X1NDUkFUQ0hQQURfTVNLwqDCoMKgwqDCoMKgwqDCoMKgR0VOTUFT Syg3LCAwKQo+ICsKPiArLyogQURGNDM3NyBSRUcwMDBDIEJpdCBEZWZpbml0aW9uICovCj4gKyNk ZWZpbmUgQURGNDM3N19WRU5ET1JfSURfTFNCwqDCoMKgwqDCoMKgwqDCoMKgwqAweDU2Cj4gKwo+ ICsvKiBBREY0Mzc3IFJFRzAwMEQgQml0IERlZmluaXRpb24gKi8KPiArI2RlZmluZSBBREY0Mzc3 X1ZFTkRPUl9JRF9NU0LCoMKgwqDCoMKgwqDCoMKgwqDCoDB4MDQKPiArCj4gKy8qIEFERjQzNzcg UkVHMDAwRiBCaXQgRGVmaW5pdGlvbiAqLwo+ICsjZGVmaW5lIEFERjQzNzdfUjAwRl9SU1YxX01T S8KgwqDCoMKgwqDCoMKgwqDCoMKgR0VOTUFTSyg3LCAwKQo+ICsKPiArLyogQURGNDM3NyBSRUcw MDEwIE1hcCovCj4gKyNkZWZpbmUgQURGNDM3N19OX0lOVF9MU0JfTVNLwqDCoMKgwqDCoMKgwqDC oMKgwqBHRU5NQVNLKDcsIDApCj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwMTEgTWFwKi8KPiArI2Rl ZmluZSBBREY0Mzc3X0VOX0FVVE9DQUxfTVNLwqDCoMKgwqDCoMKgwqDCoMKgQklUKDcpCj4gKyNk ZWZpbmUgQURGNDM3N19FTl9SREJMUl9NU0vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDYpCj4g KyNkZWZpbmUgQURGNDM3N19EQ0xLX0RJVjJfTVNLwqDCoMKgwqDCoMKgwqDCoMKgwqBHRU5NQVNL KDUsIDQpCj4gKyNkZWZpbmUgQURGNDM3N19OX0lOVF9NU0JfTVNLwqDCoMKgwqDCoMKgwqDCoMKg wqBHRU5NQVNLKDMsIDApCj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwMTEgQml0IERlZmluaXRpb24g Ki8KPiArI2RlZmluZSBBREY0Mzc3X1ZDT19DQUxJQl9ESVPCoMKgwqDCoMKgwqDCoMKgwqDCoDB4 MAo+ICsjZGVmaW5lIEFERjQzNzdfVkNPX0NBTElCX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4 MQo+ICsKPiArI2RlZmluZSBBREY0Mzc3X1JFRl9EQkxSX0RJU8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAweDAKPiArI2RlZmluZSBBREY0Mzc3X1JFRl9EQkxSX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgMHgxCj4gKwo+ICsjZGVmaW5lIEFERjQzNzdfRENMS19ESVYyXzHCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAweDAKPiArI2RlZmluZSBBREY0Mzc3X0RDTEtfRElWMl8ywqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgMHgxCj4gKyNkZWZpbmUgQURGNDM3N19EQ0xLX0RJVjJfNMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoDB4Mgo+ICsjZGVmaW5lIEFERjQzNzdfRENMS19ESVYyXzjCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAweDMKPiArCj4gKy8qIEFERjQzNzcgUkVHMDAxMiBNYXAqLwo+ICsjZGVmaW5l IEFERjQzNzdfQ0xLT1VUX0RJVl9NU0vCoMKgwqDCoMKgwqDCoMKgwqBHRU5NQVNLKDcsIDYpCj4g KyNkZWZpbmUgQURGNDM3N19SX0RJVl9NU0vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgR0VO TUFTSyg1LCAwKQo+ICsKPiArLyogQURGNDM3NyBSRUcwMDEyIEJpdCBEZWZpbml0aW9uICovCj4g KyNkZWZpbmUgQURGNDM3N19DTEtPVVRfRElWXzHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgwCj4g KyNkZWZpbmUgQURGNDM3N19DTEtPVVRfRElWXzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgxCj4g KyNkZWZpbmUgQURGNDM3N19DTEtPVVRfRElWXzTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgyCj4g KyNkZWZpbmUgQURGNDM3N19DTEtPVVRfRElWXzjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgzCj4g Kwo+ICsvKiBBREY0Mzc3IFJFRzAwMTMgTWFwICovCj4gKyNkZWZpbmUgQURGNDM3N19NX1ZDT19D T1JFX01TS8KgwqDCoMKgwqDCoMKgwqDCoEdFTk1BU0soNSwgNCkKPiArI2RlZmluZSBBREY0Mzc3 X01fVkNPX0JJQVNfTVNLwqDCoMKgwqDCoMKgwqDCoMKgR0VOTUFTSygzLCAwKQo+ICsKPiArLyog QURGNDM3NyBSRUcwMDEzIEJpdCBEZWZpbml0aW9uICovCj4gKyNkZWZpbmUgQURGNDM3N19NX1ZD T18wwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgwCj4g KyNkZWZpbmUgQURGNDM3N19NX1ZDT18xwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgMHgxCj4gKyNkZWZpbmUgQURGNDM3N19NX1ZDT18ywqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgyCj4gKyNkZWZpbmUgQURGNDM3 N19NX1ZDT18zwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg MHgzCj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwMTQgTWFwICovCj4gKyNkZWZpbmUgQURGNDM3N19N X1ZDT19CQU5EX01TS8KgwqDCoMKgwqDCoMKgwqDCoEdFTk1BU0soNywgMCkKPiArCj4gKy8qIEFE RjQzNzcgUkVHMDAxNSBNYXAgKi8KPiArI2RlZmluZSBBREY0Mzc3X0JMRUVEX0lfTFNCX01TS8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgR0VOTUFTSyg3LCA2KQo+ICsjZGVmaW5lIEFE RjQzNzdfQkxFRURfUE9MX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDUpCj4gKyNkZWZpbmUg QURGNDM3N19FTl9CTEVFRF9NU0vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDQpCj4gKyNkZWZp bmUgQURGNDM3N19DUF9JX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEdFTk1BU0so MywgMCkKPiArCj4gKy8qIEFERjQzNzcgUkVHMDAxNSBCaXQgRGVmaW5pdGlvbiAqLwo+ICsjZGVm aW5lIEFERjQzNzdfQ1VSUkVOVF9TSU5LwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4MAo+ICsjZGVm aW5lIEFERjQzNzdfQ1VSUkVOVF9TT1VSQ0XCoMKgwqDCoMKgwqDCoMKgwqAweDEKPiArCj4gKyNk ZWZpbmUgQURGNDM3N19CTEVFRF9DVVJSX0RJU8KgwqDCoMKgwqDCoMKgwqDCoDB4MAo+ICsjZGVm aW5lIEFERjQzNzdfQkxFRURfQ1VSUl9FTsKgwqDCoMKgwqDCoMKgwqDCoMKgMHgxCj4gKwo+ICsj ZGVmaW5lIEFERjQzNzdfQ1BfME1BN8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoDB4MAo+ICsjZGVmaW5lIEFERjQzNzdfQ1BfME1BOcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4MQo+ICsjZGVmaW5lIEFERjQzNzdf Q1BfMU1BMcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4 Mgo+ICsjZGVmaW5lIEFERjQzNzdfQ1BfMU1BM8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoDB4Mwo+ICsjZGVmaW5lIEFERjQzNzdfQ1BfMU1BNMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4NAo+ICsjZGVmaW5lIEFE RjQzNzdfQ1BfMU1BOMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoDB4NQo+ICsjZGVmaW5lIEFERjQzNzdfQ1BfMk1BMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4Ngo+ICsjZGVmaW5lIEFERjQzNzdfQ1BfMk1BNcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4Nwo+ICsjZGVm aW5lIEFERjQzNzdfQ1BfMk1BOcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoDB4OAo+ICsjZGVmaW5lIEFERjQzNzdfQ1BfM01BNsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4OQo+ICsjZGVmaW5lIEFERjQzNzdfQ1Bf NE1BM8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4QQo+ ICsjZGVmaW5lIEFERjQzNzdfQ1BfNU1BMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoDB4Qgo+ICsjZGVmaW5lIEFERjQzNzdfQ1BfNU1BN8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4Qwo+ICsjZGVmaW5lIEFERjQz NzdfQ1BfN01BMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oDB4RAo+ICsjZGVmaW5lIEFERjQzNzdfQ1BfOE1BNsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4RQo+ICsjZGVmaW5lIEFERjQzNzdfQ1BfMTBNQTHCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAweEYKPiArCj4gKy8qIEFERjQzNzcgUkVHMDAxNiBN YXAgKi8KPiArI2RlZmluZSBBREY0Mzc3X0JMRUVEX0lfTVNCX01TS8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgR0VOTUFTSyg3LCAwKQo+ICsKPiArLyogQURGNDM3NyBSRUcwMDE3IE1h cCAqLwo+ICsjZGVmaW5lIEFERjQzNzdfSU5WX0NMS09VVF9NU0vCoMKgwqDCoMKgwqDCoMKgwqBC SVQoNykKPiArI2RlZmluZSBBREY0Mzc3X05fREVMX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBHRU5NQVNLKDYsIDApCj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwMTcgQml0IERlZmluaXRp b24gKi8KPiArI2RlZmluZSBBREY0Mzc3X0NMS09VVF9JTlZfRElTwqDCoMKgwqDCoMKgwqDCoMKg MHgwCj4gKyNkZWZpbmUgQURGNDM3N19DTEtPVVRfSU5WX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqAw eDEKPiArCj4gKy8qIEFERjQzNzcgUkVHMDAxOCBNYXAgKi8KPiArI2RlZmluZSBBREY0Mzc3X0NN T1NfT1ZfTVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDcpCj4gKyNkZWZpbmUgQURGNDM3 N19SX0RFTF9NU0vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgR0VOTUFTSyg2LCAwKQo+ICsK PiArLyogQURGNDM3NyBSRUcwMDE4IEJpdCBEZWZpbml0aW9uICovCj4gKyNkZWZpbmUgQURGNDM3 N18xVjhfTE9HSUPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgwCj4gKyNkZWZpbmUgQURG NDM3N18zVjNfTE9HSUPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgxCj4gKwo+ICsvKiBB REY0Mzc3IFJFRzAwMTkgTWFwICovCj4gKyNkZWZpbmUgQURGNDM3N19DTEtPVVQyX09QX01TS8Kg wqDCoMKgwqDCoMKgwqDCoEdFTk1BU0soNywgNikKPiArI2RlZmluZSBBREY0Mzc3X0NMS09VVDFf T1BfTVNLwqDCoMKgwqDCoMKgwqDCoMKgR0VOTUFTSyg1LCA0KQo+ICsjZGVmaW5lIEFERjQzNzdf UERfQ0xLX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDMpCj4gKyNkZWZpbmUgQURG NDM3N19QRF9SREVUX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJJVCgyKQo+ICsjZGVmaW5l IEFERjQzNzdfUERfQURDX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDEpCj4gKyNk ZWZpbmUgQURGNDM3N19QRF9DQUxBRENfTVNLwqDCoMKgwqDCoMKgwqDCoMKgwqBCSVQoMCkKPiAr Cj4gKy8qIEFERjQzNzcgUkVHMDAxOSBCaXQgRGVmaW5pdGlvbiAqLwo+ICsjZGVmaW5lIEFERjQz NzdfQ0xLT1VUXzMyME1WwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4MAo+ICsjZGVmaW5lIEFERjQz NzdfQ0xLT1VUXzQyME1WwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4MQo+ICsjZGVmaW5lIEFERjQz NzdfQ0xLT1VUXzUzME1WwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4Mgo+ICsjZGVmaW5lIEFERjQz NzdfQ0xLT1VUXzY0ME1WwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4Mwo+ICsKPiArI2RlZmluZSBB REY0Mzc3X1BEX0NMS19OX09QwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgwCj4gKyNkZWZpbmUg QURGNDM3N19QRF9DTEtfUETCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgxCj4gKwo+ICsj ZGVmaW5lIEFERjQzNzdfUERfUkRFVF9OX09QwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4MAo+ICsj ZGVmaW5lIEFERjQzNzdfUERfUkRFVF9QRMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgxCj4g Kwo+ICsjZGVmaW5lIEFERjQzNzdfUERfQURDX05fT1DCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAw eDAKPiArI2RlZmluZSBBREY0Mzc3X1BEX0FEQ19QRMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAweDEKPiArCj4gKyNkZWZpbmUgQURGNDM3N19QRF9DQUxBRENfTl9PUMKgwqDCoMKgwqDCoMKg wqDCoDB4MAo+ICsjZGVmaW5lIEFERjQzNzdfUERfQ0FMQURDX1BEwqDCoMKgwqDCoMKgwqDCoMKg wqDCoDB4MQo+ICsKPiArLyogQURGNDM3NyBSRUcwMDFBIE1hcCAqLwo+ICsjZGVmaW5lIEFERjQz NzdfUERfQUxMX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDcpCj4gKyNkZWZpbmUg QURGNDM3N19QRF9SRElWX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJJVCg2KQo+ICsjZGVm aW5lIEFERjQzNzdfUERfTkRJVl9NU0vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCSVQoNSkKPiAr I2RlZmluZSBBREY0Mzc3X1BEX1ZDT19NU0vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJJVCg0 KQo+ICsjZGVmaW5lIEFERjQzNzdfUERfTERfTVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oEJJVCgzKQo+ICsjZGVmaW5lIEFERjQzNzdfUERfUEZEQ1BfTVNLwqDCoMKgwqDCoMKgwqDCoMKg wqDCoEJJVCgyKQo+ICsjZGVmaW5lIEFERjQzNzdfUERfQ0xLT1VUMV9NU0vCoMKgwqDCoMKgwqDC oMKgwqBCSVQoMSkKPiArI2RlZmluZSBBREY0Mzc3X1BEX0NMS09VVDJfTVNLwqDCoMKgwqDCoMKg wqDCoMKgQklUKDApCj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwMUEgQml0IERlZmluaXRpb24gKi8K PiArI2RlZmluZSBBREY0Mzc3X1BEX0FMTF9OX09QwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgw Cj4gKyNkZWZpbmUgQURGNDM3N19QRF9BTExfUETCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg MHgxCj4gKwo+ICsjZGVmaW5lIEFERjQzNzdfUERfUkRJVl9OX09QwqDCoMKgwqDCoMKgwqDCoMKg wqDCoDB4MAo+ICsjZGVmaW5lIEFERjQzNzdfUERfUkRJVl9QRMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgMHgxCj4gKwo+ICsjZGVmaW5lIEFERjQzNzdfUERfTkRJVl9OX09QwqDCoMKgwqDCoMKg wqDCoMKgwqDCoDB4MAo+ICsjZGVmaW5lIEFERjQzNzdfUERfTkRJVl9QRMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgMHgxCj4gKwo+ICsjZGVmaW5lIEFERjQzNzdfUERfVkNPX05fT1DCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAweDAKPiArI2RlZmluZSBBREY0Mzc3X1BEX1ZDT19QRMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAweDEKPiArCj4gKyNkZWZpbmUgQURGNDM3N19QRF9MRF9OX09Q wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAweDAKPiArI2RlZmluZSBBREY0Mzc3X1BEX0xEX1BE wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgxCj4gKwo+ICsjZGVmaW5lIEFERjQzNzdf UERfUEZEQ1BfTl9PUMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgwCj4gKyNkZWZpbmUgQURGNDM3N19Q RF9QRkRDUF9QRMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4MQo+ICsKPiArI2RlZmluZSBBREY0 Mzc3X1BEX0NMS09VVDFfTl9PUMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgwCj4g KyNkZWZpbmUgQURGNDM3N19QRF9DTEtPVVQxX1BEwqDCoMKgwqDCoMKgwqDCoMKgwqAweDEKPiAr Cj4gKyNkZWZpbmUgQURGNDM3N19QRF9DTEtPVVQyX05fT1DCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoDB4MAo+ICsjZGVmaW5lIEFERjQzNzdfUERfQ0xLT1VUMl9QRMKgwqDCoMKgwqDC oMKgwqDCoMKgMHgxCj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwMUIgTWFwICovCj4gKyNkZWZpbmUg QURGNDM3N19FTl9MT0xfTVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCSVQoNykKPiArI2Rl ZmluZSBBREY0Mzc3X0xEV0lOX1BXX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqBCSVQoNikKPiAr I2RlZmluZSBBREY0Mzc3X0VOX0xEV0lOX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqBCSVQoNSkK PiArI2RlZmluZSBBREY0Mzc3X0xEX0NPVU5UX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqBHRU5N QVNLKDQsIDApCj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwMUIgQml0IERlZmluaXRpb24gKi8KPiAr I2RlZmluZSBBREY0Mzc3X0VOX0xPTF9ESVPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4MAo+ ICsjZGVmaW5lIEFERjQzNzdfRU5fTE9MX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4 MQo+ICsKPiArI2RlZmluZSBBREY0Mzc3X0xEV0lOX1BXX05BUlJPV8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgMHgwCj4gKyNkZWZpbmUgQURGNDM3N19MRFdJTl9QV19XSURFwqDCoMKg wqDCoMKgwqDCoMKgwqAweDEKPiArCj4gKyNkZWZpbmUgQURGNDM3N19FTl9MRFdJTl9ESVPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgMHgwCj4gKyNkZWZpbmUgQURGNDM3N19FTl9MRFdJTl9FTsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoDB4MQo+ICsKPiArLyogQURGNDM3NyBSRUcwMDFDIE1hcCAqLwo+ ICsjZGVmaW5lIEFERjQzNzdfRU5fRE5DTEtfTVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJJVCg3 KQo+ICsjZGVmaW5lIEFERjQzNzdfRU5fRFJDTEtfTVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJJ VCg2KQo+ICsjZGVmaW5lIEFERjQzNzdfUlNUX0xEX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgQklUKDIpCj4gKyNkZWZpbmUgQURGNDM3N19SMDFDX1JTVjFfTVNLwqDCoMKgwqDCoMKgwqDC oMKgwqBCSVQoMCkKPiArCj4gKy8qIEFERjQzNzcgUkVHMDAxQyBCaXQgRGVmaW5pdGlvbiAqLwo+ ICsjZGVmaW5lIEFERjQzNzdfRU5fRE5DTEtfT0ZGwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDAK PiArI2RlZmluZSBBREY0Mzc3X0VOX0ROQ0xLX09OwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4 MQo+ICsKPiArI2RlZmluZSBBREY0Mzc3X0VOX0RSQ0xLX09GRsKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgMHgwCj4gKyNkZWZpbmUgQURGNDM3N19FTl9EUkNMS19PTsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAweDEKPiArCj4gKyNkZWZpbmUgQURGNDM3N19SU1RfTERfSU5BQ1RJVkXCoMKgwqDCoMKg wqDCoMKgIDB4MAo+ICsjZGVmaW5lIEFERjQzNzdfUlNUX0xEX0FDVElWRcKgwqDCoMKgwqDCoMKg wqDCoMKgIDB4MQo+ICsKPiArLyogQURGNDM3NyBSRUcwMDFEIE1hcCAqLwo+ICsjZGVmaW5lIEFE RjQzNzdfTVVYT1VUX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgR0VOTUFTSyg3LCA0KQo+ ICsjZGVmaW5lIEFERjQzNzdfRU5fQ1BURVNUX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDIp Cj4gKyNkZWZpbmUgQURGNDM3N19DUF9ET1dOX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJJ VCgxKQo+ICsjZGVmaW5lIEFERjQzNzdfQ1BfVVBfTVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoEJJVCgwKQo+ICsKPiArI2RlZmluZSBBREY0Mzc3X0VOX0NQVEVTVF9PRkbCoMKgwqDCoMKg wqDCoMKgwqDCoDB4MAo+ICsjZGVmaW5lIEFERjQzNzdfRU5fQ1BURVNUX09OwqDCoMKgwqDCoMKg wqDCoMKgwqDCoDB4MQo+ICsKPiArI2RlZmluZSBBREY0Mzc3X0NQX0RPV05fT0ZGwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgMHgwCj4gKyNkZWZpbmUgQURGNDM3N19DUF9ET1dOX09OwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAweDEKPiArCj4gKyNkZWZpbmUgQURGNDM3N19DUF9VUF9PRkbCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgwCj4gKyNkZWZpbmUgQURGNDM3N19DUF9VUF9PTsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4MQo+ICsKPiArLyogQURGNDM3NyBSRUcwMDFG IE1hcCAqLwo+ICsjZGVmaW5lIEFERjQzNzdfQlNUX1JFRl9NU0vCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBCSVQoNykKPiArI2RlZmluZSBBREY0Mzc3X0ZJTFRfUkVGX01TS8KgwqDCoMKgwqDCoMKg wqDCoMKgwqBCSVQoNikKPiArI2RlZmluZSBBREY0Mzc3X1JFRl9TRUxfTVNLwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgQklUKDUpCj4gKyNkZWZpbmUgQURGNDM3N19SMDFGX1JTVjFfTVNLwqDCoMKg wqDCoMKgwqDCoMKgwqBHRU5NQVNLKDQsIDApCj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwMUYgQml0 IERlZmluaXRpb24gKi8KPiArI2RlZmluZSBBREY0Mzc3X0JTVF9MQVJHRV9SRUZfSU7CoMKgwqDC oMKgwqDCoDB4MAo+ICsjZGVmaW5lIEFERjQzNzdfQlNUX1NNQUxMX1JFRl9JTsKgwqDCoMKgwqDC oMKgMHgxCj4gKwo+ICsjZGVmaW5lIEFERjQzNzdfRklMVF9SRUZfT0ZGwqDCoMKgwqDCoMKgwqDC oMKgwqDCoDB4MAo+ICsjZGVmaW5lIEFERjQzNzdfRklMVF9SRUZfT07CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAweDEKPiArCj4gKyNkZWZpbmUgQURGNDM3N19SRUZfU0VMX0RNQcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoDB4MAo+ICsjZGVmaW5lIEFERjQzNzdfUkVGX1NFTF9MTkHCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAweDEKPiArCj4gKy8qIEFERjQzNzcgUkVHMDAyMCBNYXAgKi8KPiArI2Rl ZmluZSBBREY0Mzc3X1JTVF9TWVNfTVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDQpCj4g KyNkZWZpbmUgQURGNDM3N19FTl9BRENfQ0xLX01TS8KgwqDCoMKgwqDCoMKgwqDCoEJJVCgzKQo+ ICsjZGVmaW5lIEFERjQzNzdfUjAyMF9SU1YxX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDAp Cj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwMjAgQml0IERlZmluaXRpb24gKi8KPiArI2RlZmluZSBB REY0Mzc3X1JTVF9TWVNfSU5BQ1RJVkXCoMKgwqDCoMKgwqDCoDB4MAo+ICsjZGVmaW5lIEFERjQz NzdfUlNUX1NZU19BQ1RJVkXCoMKgwqDCoMKgwqDCoMKgwqAweDEKPiArCj4gKyNkZWZpbmUgQURG NDM3N19FTl9BRENfQ0xLX0RJU8KgwqDCoMKgwqDCoMKgwqDCoDB4MAo+ICsjZGVmaW5lIEFERjQz NzdfRU5fQURDX0NMS19FTsKgwqDCoMKgwqDCoMKgwqDCoMKgMHgxCj4gKwo+ICsvKiBBREY0Mzc3 IFJFRzAwMjEgQml0IERlZmluaXRpb24gKi8KPiArI2RlZmluZSBBREY0Mzc3X1IwMjFfUlNWMcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAweEQzCj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwMjIg Qml0IERlZmluaXRpb24gKi8KPiArI2RlZmluZSBBREY0Mzc3X1IwMjJfUlNWMcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAweDMyCj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwMjMgTWFwICovCj4g KyNkZWZpbmUgQURGNDM3N19DQVRfQ1RfU0VMwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCSVQo NykKPiArI2RlZmluZSBBREY0Mzc3X1IwMjNfUlNWMV9NU0vCoMKgwqDCoMKgwqDCoMKgwqDCoEdF Tk1BU0soNiwgMCkKPiArCj4gKy8qIEFERjQzNzcgUkVHMDAyNCBNYXAgKi8KPiArI2RlZmluZSBB REY0Mzc3X0RDTEtfTU9ERV9NU0vCoMKgwqDCoMKgwqDCoMKgwqDCoEJJVCgyKQo+ICsKPiArLyog QURGNDM3NyBSRUcwMDI0IEJpdCBEZWZpbml0aW9uICovCj4gKyNkZWZpbmUgQURGNDM3N19EQ0xL X01PREVfRElTwqDCoMKgwqDCoMKgwqDCoMKgwqAweDAKPiArI2RlZmluZSBBREY0Mzc3X0RDTEtf TU9ERV9FTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAweDEKPiArCj4gKy8qIEFERjQzNzcgUkVHMDAy NSBNYXAgKi8KPiArI2RlZmluZSBBREY0Mzc3X0NMS09ESVZfREJfTVNLwqDCoMKgwqDCoMKgwqDC oMKgQklUKDcpCj4gKyNkZWZpbmUgQURGNDM3N19EQ0xLX0RCX01TS8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoEJJVCg2KQo+ICsjZGVmaW5lIEFERjQzNzdfUjAyNV9SU1YxX01TS8KgwqDCoMKgwqDC oMKgwqDCoMKgR0VOTUFTSyg1LCAwKQo+ICsKPiArLyogQURGNDM3NyBSRUcwMDI1IEJpdCBEZWZp bml0aW9uICovCj4gKyNkZWZpbmUgQURGNDM3N19DTEtPRElWX0RCX0RJU8KgwqDCoMKgwqDCoMKg wqDCoDB4MAo+ICsjZGVmaW5lIEFERjQzNzdfQ0xLT0RJVl9EQl9FTsKgwqDCoMKgwqDCoMKgwqDC oMKgMHgxCj4gKwo+ICsjZGVmaW5lIEFERjQzNzdfRENMS19ESVZfREJfRElTwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAweDAKPiArI2RlZmluZSBBREY0Mzc3X0RDTEtfRElWX0RCX0VO wqDCoMKgwqDCoMKgwqDCoMKgMHgxCj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwMjYgTWFwICovCj4g KyNkZWZpbmUgQURGNDM3N19WQ09fQkFORF9ESVZfTVNLwqDCoMKgwqDCoMKgwqBHRU5NQVNLKDcs IDApCj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwMjcgTWFwICovCj4gKyNkZWZpbmUgQURGNDM3N19T WU5USF9MT0NLX1RPX0xTQl9NU0vCoMKgR0VOTUFTSyg3LCAwKQo+ICsKPiArLyogQURGNDM3NyBS RUcwMDI4IE1hcCAqLwo+ICsjZGVmaW5lIEFERjQzNzdfT19WQ09fREJfTVNLwqDCoMKgwqDCoMKg wqDCoMKgwqDCoEJJVCg3KQo+ICsjZGVmaW5lIEFERjQzNzdfU1lOVEhfTE9DS19UT19NU0JfTVNL wqDCoEdFTk1BU0soNiwgMCkKPiArCj4gKy8qIEFERjQzNzcgUkVHMDAyOCBCaXQgRGVmaW5pdGlv biAqLwo+ICsjZGVmaW5lIEFERjQzNzdfT19WQ09fREJfRElTwqDCoMKgwqDCoMKgwqDCoMKgwqDC oDB4MAo+ICsjZGVmaW5lIEFERjQzNzdfT19WQ09fREJfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAweDEKPiArCj4gKy8qIEFERjQzNzcgUkVHMDAyOSBNYXAgKi8KPiArI2RlZmluZSBBREY0Mzc3 X1ZDT19BTENfVE9fTFNCX01TS8KgwqDCoMKgwqBHRU5NQVNLKDcsIDApCj4gKwo+ICsvKiBBREY0 Mzc3IFJFRzAwMkEgTWFwICovCj4gKyNkZWZpbmUgQURGNDM3N19ERUxfQ1RSTF9EQl9NU0vCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJJVCg3KQo+ICsjZGVmaW5lIEFERjQzNzdfVkNP X0FMQ19UT19NU0JfTVNLwqDCoMKgwqDCoEdFTk1BU0soNiwgMCkKPiArCj4gKy8qIEFERjQzNzcg UkVHMDAyQSBCaXQgRGVmaW5pdGlvbiAqLwo+ICsjZGVmaW5lIEFERjQzNzdfREVMX0NUUkxfREJf RElTwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAweDAKPiArI2RlZmluZSBBREY0Mzc3 X0RFTF9DVFJMX0RCX0VOwqDCoMKgwqDCoMKgwqDCoMKgMHgxCj4gKwo+ICsvKiBBREY0Mzc3IFJF RzAwMkMgTWFwICovCj4gKyNkZWZpbmUgQURGNDM3N19SMDJDX1JTVjHCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgMHhDMAo+ICsKPiArLyogQURGNDM3NyBSRUcwMDJEIE1hcCAqLwo+ICsjZGVm aW5lIEFERjQzNzdfQURDX0NMS19ESVZfTVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBHRU5NQVNLKDcsIDApCj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwMkUgTWFwICovCj4gKyNkZWZp bmUgQURGNDM3N19FTl9BRENfQ05WX01TS8KgwqDCoMKgwqDCoMKgwqDCoEJJVCg3KQo+ICsjZGVm aW5lIEFERjQzNzdfRU5fQURDX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDEpCj4g KyNkZWZpbmUgQURGNDM3N19BRENfQV9DT05WX01TS8KgwqDCoMKgwqDCoMKgwqDCoEJJVCgwKQo+ ICsKPiArLyogQURGNDM3NyBSRUcwMDJFIEJpdCBEZWZpbml0aW9uICovCj4gKyNkZWZpbmUgQURG NDM3N19FTl9BRENfQ05WX0RJU8KgwqDCoMKgwqDCoMKgwqDCoDB4MAo+ICsjZGVmaW5lIEFERjQz NzdfRU5fQURDX0NOVl9FTsKgwqDCoMKgwqDCoMKgwqDCoMKgMHgxCj4gKwo+ICsjZGVmaW5lIEFE RjQzNzdfRU5fQURDX0RJU8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgwCj4gKyNkZWZpbmUg QURGNDM3N19FTl9BRENfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgxCj4gKwo+ICsj ZGVmaW5lIEFERjQzNzdfQURDX0FfQ09OVl9BRENfU1RfQ05WwqDCoDB4MAo+ICsjZGVmaW5lIEFE RjQzNzdfQURDX0FfQ09OVl9WQ09fQ0FMSULCoMKgwqAweDEKPiArCj4gKy8qIEFERjQzNzcgUkVH MDAyRiBNYXAgKi8KPiArI2RlZmluZSBBREY0Mzc3X0RDTEtfRElWMV9NU0vCoMKgwqDCoMKgwqDC oMKgwqDCoEdFTk1BU0soMSwgMCkKPiArCj4gKy8qIEFERjQzNzcgUkVHMDAyRiBCaXQgRGVmaW5p dGlvbiAqLwo+ICsjZGVmaW5lIEFERjQzNzdfRENMS19ESVYxXzHCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAweDAKPiArI2RlZmluZSBBREY0Mzc3X0RDTEtfRElWMV8ywqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgMHgxCj4gKyNkZWZpbmUgQURGNDM3N19EQ0xLX0RJVjFfOMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoDB4Mgo+ICsjZGVmaW5lIEFERjQzNzdfRENMS19ESVYxXzMywqDCoMKgwqDCoMKgwqDC oMKgwqDCoDB4Mwo+ICsKPiArLyogQURGNDM3NyBSRUcwMDMxIEJpdCBEZWZpbml0aW9uICovCj4g KyNkZWZpbmUgQURGNDM3N19SMDMxX1JTVjHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgw OQo+ICsKPiArLyogQURGNDM3NyBSRUcwMDMyIE1hcCAqLwo+ICsjZGVmaW5lIEFERjQzNzdfQURD X0NMS19TRUxfTVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBCSVQoNikKPiArI2Rl ZmluZSBBREY0Mzc3X1IwMzJfUlNWMV9NU0vCoMKgwqDCoMKgwqDCoMKgwqDCoEdFTk1BU0soNSwg MCkKPiArCj4gKy8qIEFERjQzNzcgUkVHMDAzMiBCaXQgRGVmaW5pdGlvbiAqLwo+ICsjZGVmaW5l IEFERjQzNzdfUjAzMl9SU1YxwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4OQo+ICsKPiAr LyogQURGNDM3NyBSRUcwMDMyIEJpdCBEZWZpbml0aW9uICovCj4gKyNkZWZpbmUgQURGNDM3N19B RENfQ0xLX1NFTF9OX09QwqDCoMKgwqDCoMKgwqAweDAKPiArI2RlZmluZSBBREY0Mzc3X0FEQ19D TEtfU0VMX1NQSV9DTEvCoMKgwqDCoDB4MQo+ICsKPiArLyogQURGNDM3NyBSRUcwMDMzIEJpdCBE ZWZpbml0aW9uICovCj4gKyNkZWZpbmUgQURGNDM3N19SMDMzX1JTVjHCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgMHgxOAo+ICsKPiArLyogQURGNDM3NyBSRUcwMDM0IEJpdCBEZWZpbml0aW9u ICovCj4gKyNkZWZpbmUgQURGNDM3N19SMDM0X1JTVjHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgMHgwOAo+ICsKPiArLyogQURGNDM3NyBSRUcwMDNBIEJpdCBEZWZpbml0aW9uICovCj4gKyNk ZWZpbmUgQURGNDM3N19SMDNBX1JTVjHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHg1RAo+ ICsKPiArLyogQURGNDM3NyBSRUcwMDNCIEJpdCBEZWZpbml0aW9uICovCj4gKyNkZWZpbmUgQURG NDM3N19SMDNCX1JTVjHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgyQgo+ICsKPiArLyog QURGNDM3NyBSRUcwMDNEIE1hcCAqLwo+ICsjZGVmaW5lIEFERjQzNzdfT19WQ09fQkFORF9NU0vC oMKgwqDCoMKgwqDCoMKgwqBCSVQoMykKPiArI2RlZmluZSBBREY0Mzc3X09fVkNPX0NPUkVfTVNL wqDCoMKgwqDCoMKgwqDCoMKgQklUKDIpCj4gKyNkZWZpbmUgQURGNDM3N19PX1ZDT19CSUFTX01T S8KgwqDCoMKgwqDCoMKgwqDCoEJJVCgxKQo+ICsKPiArLyogQURGNDM3NyBSRUcwMDNEIEJpdCBE ZWZpbml0aW9uICovCj4gKyNkZWZpbmUgQURGNDM3N19PX1ZDT19CQU5EX1ZDT19DQUxJQsKgwqDC oDB4MAo+ICsjZGVmaW5lIEFERjQzNzdfT19WQ09fQkFORF9NX1ZDT8KgwqDCoMKgwqDCoMKgMHgx Cj4gKwo+ICsjZGVmaW5lIEFERjQzNzdfT19WQ09fQ09SRV9WQ09fQ0FMSULCoMKgwqAweDAKPiAr I2RlZmluZSBBREY0Mzc3X09fVkNPX0NPUkVfTV9WQ0/CoMKgwqDCoMKgwqDCoDB4MQo+ICsKPiAr I2RlZmluZSBBREY0Mzc3X09fVkNPX0JJQVNfVkNPX0NBTElCwqDCoMKgMHgwCj4gKyNkZWZpbmUg QURGNDM3N19PX1ZDT19CSUFTX01fVkNPwqDCoMKgwqDCoMKgwqAweDEKPiArCj4gKy8qIEFERjQz NzcgUkVHMDA0MiBNYXAgKi8KPiArI2RlZmluZSBBREY0Mzc3X1IwNDJfUlNWMcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAweDA1Cj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwNDUgTWFwICovCj4g KyNkZWZpbmUgQURGNDM3N19BRENfU1RfQ05WX01TS8KgwqDCoMKgwqDCoMKgwqDCoEJJVCgwKQo+ ICsKPiArLyogQURGNDM3NyBSRUcwMDQ1IEJpdCBEZWZpbml0aW9uICovCj4gKyNkZWZpbmUgQURG NDM3N19BRENfU1RfQURDX0RJU8KgwqDCoMKgwqDCoMKgwqDCoDB4MAo+ICsjZGVmaW5lIEFERjQz NzdfQURDX1NUX0FEQ19FTsKgwqDCoMKgwqDCoMKgwqDCoMKgMHgxCj4gKwo+ICsvKiBBREY0Mzc3 IFJFRzAwNDkgTWFwICovCj4gKyNkZWZpbmUgQURGNDM3N19FTl9DTEsyX01TS8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoEJJVCg3KQo+ICsjZGVmaW5lIEFERjQzNzdfRU5fQ0xLMV9NU0vCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBCSVQoNikKPiArI2RlZmluZSBBREY0Mzc3X1JFRl9PS19NU0vCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJJVCgzKQo+ICsjZGVmaW5lIEFERjQzNzdfQURDX0JVU1lf TVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJJVCgyKQo+ICsjZGVmaW5lIEFERjQzNzdfRlNNX0JV U1lfTVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJJVCgxKQo+ICsjZGVmaW5lIEFERjQzNzdfTE9D S0VEX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDApCj4gKwo+ICsvKiBBREY0Mzc3 IFJFRzAwNEIgTWFwICovCj4gKyNkZWZpbmUgQURGNDM3N19WQ09fQ09SRV9NU0vCoMKgwqDCoMKg wqDCoMKgwqDCoMKgR0VOTUFTSygxLCAwKQo+ICsKPiArLyogQURGNDM3NyBSRUcwMDRDIE1hcCAq Lwo+ICsjZGVmaW5lIEFERjQzNzdfQ0hJUF9URU1QX0xTQl9NU0vCoMKgwqDCoMKgwqBHRU5NQVNL KDcsIDApCj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwNEQgTWFwICovCj4gKyNkZWZpbmUgQURGNDM3 N19DSElQX1RFTVBfTVNCX01TS8KgwqDCoMKgwqDCoEJJVCgwKQo+ICsKPiArLyogQURGNDM3NyBS RUcwMDRGIE1hcCAqLwo+ICsjZGVmaW5lIEFERjQzNzdfVkNPX0JBTkRfTVNLwqDCoMKgwqDCoMKg wqDCoMKgwqDCoEdFTk1BU0soNywgMCkKPiArCj4gKy8qIEFERjQzNzcgUkVHMDA1MSBNYXAgKi8K PiArI2RlZmluZSBBREY0Mzc3X1ZDT19CSUFTX01TS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqBHRU5N QVNLKDMsIDApCj4gKwo+ICsvKiBBREY0Mzc3IFJFRzAwNTQgTWFwICovCj4gKyNkZWZpbmUgQURG NDM3N19DSElQX1ZFUlNJT05fTVNLwqDCoMKgwqDCoMKgwqBHRU5NQVNLKDcsIDApCj4gKwo+ICsv KiBTcGVjaWZpY2F0aW9ucyAqLwo+ICsjZGVmaW5lIEFERjQzNzdfU1BJX1JFQURfQ01EwqDCoMKg wqDCoMKgwqDCoMKgwqDCoEJJVCg3KQo+ICsjZGVmaW5lIEFERjQzNzdfTUFYX1ZDT19GUkVRwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCgxMjgwMFVMTCAqIEhaX1BFUl9NSFopCj4gKyNkZWZpbmUgQURG NDM3N19NSU5fVkNPX0ZSRVHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKDY0MDBVTEwgKiBIWl9QRVJf TUhaKQo+ICsjZGVmaW5lIEFERjQzNzdfTUFYX1JFRklOX0ZSRVHCoMKgwqDCoMKgwqDCoMKgwqAo MTAwMCAqIEhaX1BFUl9NSFopCj4gKyNkZWZpbmUgQURGNDM3N19NSU5fUkVGSU5fRlJFUcKgwqDC oMKgwqDCoMKgwqDCoCgxMCAqIEhaX1BFUl9NSFopCj4gKyNkZWZpbmUgQURGNDM3N19NQVhfRlJF UV9QRkTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKDUwMCAqIEhaX1BFUl9NSFopCj4gKyNkZWZpbmUg QURGNDM3N19NSU5fRlJFUV9QRkTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKDMgKiBIWl9QRVJfTUha KQo+ICsjZGVmaW5lIEFERjQzNzdfTUFYX0NMS1BOX0ZSRVHCoMKgwqDCoMKgwqDCoMKgwqBBREY0 Mzc3X01BWF9WQ09fRlJFUQo+ICsjZGVmaW5lIEFERjQzNzdfTUlOX0NMS1BOX0ZSRVHCoMKgwqDC oMKgwqDCoMKgwqAoQURGNDM3N19NSU5fVkNPX0ZSRVEgLyA4KQo+ICsjZGVmaW5lIEFERjQzNzdf RlJFUV9QRkRfODBNSFrCoMKgwqDCoMKgwqDCoMKgwqAoODAgKiBIWl9QRVJfTUhaKQo+ICsjZGVm aW5lIEFERjQzNzdfRlJFUV9QRkRfMTI1TUhawqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAoMTI1ICogSFpfUEVSX01IWikKPiArI2RlZmluZSBBREY0Mzc3X0ZSRVFfUEZEXzE2ME1IWsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKDE2MCAqIEhaX1BFUl9NSFopCj4gKyNkZWZp bmUgQURGNDM3N19GUkVRX1BGRF8yNTBNSFrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCgyNTAgKiBIWl9QRVJfTUhaKQo+ICsjZGVmaW5lIEFERjQzNzdfRlJFUV9QRkRfMzIwTUhawqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoMzIwICogSFpfUEVSX01IWikKPiArCj4gK2Vu dW0gYWRmNDM3N19kZXZfdHlwZSB7Cj4gK8KgwqDCoMKgwqDCoMKgQURGNDM3NywKPiArwqDCoMKg wqDCoMKgwqBBREY0Mzc4LAo+ICt9Owo+ICsKPiArZW51bSB7Cj4gK8KgwqDCoMKgwqDCoMKgQURG NDM3N19GUkVRLAo+ICt9Owo+ICsKPiArZW51bSBtdXhvdXRfc2VsZWN0X21vZGVzIHsKPiArwqDC oMKgwqDCoMKgwqBBREY0Mzc3X01VWE9VVF9ISUdIX1ogPSAweDAsCj4gK8KgwqDCoMKgwqDCoMKg QURGNDM3N19NVVhPVVRfTEtERVQgPSAweDEsCj4gK8KgwqDCoMKgwqDCoMKgQURGNDM3N19NVVhP VVRfTE9XID0gMHgyLAo+ICvCoMKgwqDCoMKgwqDCoEFERjQzNzdfTVVYT1VUX0RJVl9SQ0xLXzIg PSAweDQsCj4gK8KgwqDCoMKgwqDCoMKgQURGNDM3N19NVVhPVVRfRElWX05DTEtfMiA9IDB4NSwK PiArwqDCoMKgwqDCoMKgwqBBREY0Mzc3X01VWE9VVF9ISUdIID0gMHg4LAo+ICt9Owo+ICsKPiAr c3RydWN0IGFkZjQzNzdfc3RhdGUgewo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBzcGlfZGV2aWNl wqDCoMKgwqDCoMKgwqAqc3BpOwo+ICvCoMKgwqDCoMKgwqDCoGVudW0gYWRmNDM3N19kZXZfdHlw ZcKgwqDCoHR5cGU7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHJlZ21hcMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAqcmVnbWFwOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgKmNsa2luOwo+ICvCoMKgwqDCoMKgwqDCoC8qIFByb3RlY3QgYWdhaW5z dCBjb25jdXJyZW50IGFjY2Vzc2VzIHRvIHRoZSBkZXZpY2UgYW5kIGRhdGEKPiBjb250ZW50ICov Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IG11dGV4wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbG9j azsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2vCoMKgwqBuYjsKPiArwqDC oMKgwqDCoMKgwqAvKiBSZWZlcmVuY2UgRGl2aWRlciAqLwo+ICvCoMKgwqDCoMKgwqDCoHVuc2ln bmVkIGludMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlZl9kaXZfZmFjdG9yOwo+ICvCoMKgwqDC oMKgwqDCoC8qIFBGRCBGcmVxdWVuY3kgKi8KPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnTC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmX3BmZDsKPiArwqDCoMKgwqDCoMKgwqAvKiBJbnB1dCBS ZWZlcmVuY2UgQ2xvY2sgKi8KPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnTCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjbGtpbl9mcmVxOwo+ICvCoMKgwqDCoMKgwqDCoC8qIENMS09VVCBEaXZp ZGVyICovCj4gK8KgwqDCoMKgwqDCoMKgdTjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNsa291dF9kaXZfc2VsOwo+ICvCoMKgwqDCoMKgwqDCoC8qIEZlZWRiYWNr IERpdmlkZXIgKE4pICovCj4gK8KgwqDCoMKgwqDCoMKgdTE2wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgbl9pbnQ7Cj4gK8KgwqDCoMKgwqDCoMKgdTE2wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGhfbG9ja190aW1lb3V0Owo+ICvC oMKgwqDCoMKgwqDCoHUxNsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHZjb19hbGNfdGltZW91dDsKPiArwqDCoMKgwqDCoMKgwqB1MTbCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhZGNfY2xrX2RpdjsKPiArwqDCoMKgwqDCoMKgwqB1MTbC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2Y29fYmFuZF9kaXY7Cj4g K8KgwqDCoMKgwqDCoMKgdTjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGRjbGtfZGl2MTsKPiArwqDCoMKgwqDCoMKgwqB1OMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZGNsa19kaXYyOwo+ICvCoMKgwqDCoMKgwqDCoHU4wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkY2xrX21vZGU7Cj4gK8KgwqDC oMKgwqDCoMKgdW5zaWduZWQgaW50wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZl9kaXZfcmNsazsK PiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZ3Bpb19kZXNjwqDCoMKgwqDCoMKgwqDCoCpncGlvX2Nl Owo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBncGlvX2Rlc2PCoMKgwqDCoMKgwqDCoMKgKmdwaW9f ZW5jbGsxOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBncGlvX2Rlc2PCoMKgwqDCoMKgwqDCoMKg KmdwaW9fZW5jbGsyOwo+ICvCoMKgwqDCoMKgwqDCoHU4wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBidWZbMl0gX19fX2NhY2hlbGluZV9hbGlnbmVkOwo+ICt9Owo+ ICsKPiArc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBhZGY0Mzc3X211eG91dF9tb2Rlc1tdID0g ewo+ICvCoMKgwqDCoMKgwqDCoFtBREY0Mzc3X01VWE9VVF9ISUdIX1pdID0gImhpZ2hfeiIsCj4g K8KgwqDCoMKgwqDCoMKgW0FERjQzNzdfTVVYT1VUX0xLREVUXSA9ICJsb2NrX2RldGVjdCIsCj4g K8KgwqDCoMKgwqDCoMKgW0FERjQzNzdfTVVYT1VUX0xPV10gPSAibXV4b3V0X2xvdyIsCj4gK8Kg wqDCoMKgwqDCoMKgW0FERjQzNzdfTVVYT1VUX0RJVl9SQ0xLXzJdID0gImZfZGl2X3JjbGtfMiIs Cj4gK8KgwqDCoMKgwqDCoMKgW0FERjQzNzdfTVVYT1VUX0RJVl9OQ0xLXzJdID0gImZfZGl2X25j bGtfMiIsCj4gK8KgwqDCoMKgwqDCoMKgW0FERjQzNzdfTVVYT1VUX0hJR0hdID0gIm11eG91dF9o aWdoIiwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBhZGY0 Mzc3X3JlZ21hcF9jb25maWcgPSB7Cj4gK8KgwqDCoMKgwqDCoMKgLnJlZ19iaXRzID0gMTYsCj4g K8KgwqDCoMKgwqDCoMKgLnZhbF9iaXRzID0gOCwKPiArwqDCoMKgwqDCoMKgwqAucmVhZF9mbGFn X21hc2sgPSBCSVQoNyksCj4gK8KgwqDCoMKgwqDCoMKgLm1heF9yZWdpc3RlciA9IDB4NTQsCj4g K307Cj4gKwo+ICtzdGF0aWMgaW50IGFkZjQzNzdfcmVnX2FjY2VzcyhzdHJ1Y3QgaWlvX2RldiAq aW5kaW9fZGV2LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgcmVnLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgd3JpdGVfdmFs LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1bnNpZ25lZCBpbnQgKnJlYWRfdmFsKQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0 IGFkZjQzNzdfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPiArCj4gK8KgwqDCoMKg wqDCoMKgaWYgKHJlYWRfdmFsKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gcmVnbWFwX3JlYWQoc3QtPnJlZ21hcCwgcmVnLCByZWFkX3ZhbCk7Cj4gKwo+ICvCoMKgwqDC oMKgwqDCoHJldHVybiByZWdtYXBfd3JpdGUoc3QtPnJlZ21hcCwgcmVnLCB3cml0ZV92YWwpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19pbmZvIGFkZjQzNzdfaW5mbyA9IHsK PiArwqDCoMKgwqDCoMKgwqAuZGVidWdmc19yZWdfYWNjZXNzID0gJmFkZjQzNzdfcmVnX2FjY2Vz cywKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgYWRmNDM3N19zb2Z0X3Jlc2V0KHN0cnVjdCBhZGY0 Mzc3X3N0YXRlICpzdCkKPiArewo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludCByZWFkX3Zh bDsKPiArwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXQgPSBy ZWdtYXBfdXBkYXRlX2JpdHMoc3QtPnJlZ21hcCwgMHgwLAo+IEFERjQzNzdfU09GVF9SRVNFVF9N U0sgfAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBBREY0Mzc3X1NPRlRfUkVTRVRfUl9NU0ssCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEZJRUxEX1BS RVAoQURGNDM3N19TT0ZUX1JFU0VUX01TSywKPiAxKSB8Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEZJRUxEX1BSRVAoQURG NDM3N19TT0ZUX1JFU0VUX1JfTVNLLAo+IDEpKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ICsKPiArwqDCoMKg wqDCoMKgwqByZXR1cm4gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHN0LT5yZWdtYXAsIDB4MCwg cmVhZF92YWwsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCEocmVhZF92YWwgJgo+IChBREY0Mzc3 X1NPRlRfUkVTRVRfUl9NU0sgfAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBBREY0Mzc3X1NPRlRf UkVTRVRfUl9NU0spKSwKPiAyMDAsIDIwMCAqIDEwMCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg YWRmNDM3N19zZXRfZGVmYXVsdChzdHJ1Y3QgYWRmNDM3N19zdGF0ZSAqc3QpCj4gK3sKPiArwqDC oMKgwqDCoMKgwqBpbnQgcmV0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKiBTZXQgZGVmYXVsdCBy ZWdpc3RlcnMgYml0cyAqLwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHJlZ21hcF93cml0ZShzdC0+ cmVnbWFwLCAweDQyLCBBREY0Mzc3X1IwNDJfUlNWMSk7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKHJl dCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiArCj4gK8Kg wqDCoMKgwqDCoMKgcmV0ID0gcmVnbWFwX3dyaXRlKHN0LT5yZWdtYXAsIDB4M0IsIEFERjQzNzdf UjAzQl9SU1YxKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXQgPSByZWdt YXBfd3JpdGUoc3QtPnJlZ21hcCwgMHgzQSwgQURGNDM3N19SMDNBX1JTVjEpOwo+ICvCoMKgwqDC oMKgwqDCoGlmIChyZXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBy ZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHJlZ21hcF93cml0ZShzdC0+cmVnbWFwLCAw eDM0LCBBREY0Mzc3X1IwMzRfUlNWMSk7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiArCj4gK8KgwqDCoMKgwqDC oMKgcmV0ID0gcmVnbWFwX3dyaXRlKHN0LT5yZWdtYXAsIDB4MzMsIEFERjQzNzdfUjAzM19SU1Yx KTsKPiArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gcmV0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXQgPSByZWdtYXBfdXBkYXRl X2JpdHMoc3QtPnJlZ21hcCwgMHgzMiwKPiBBREY0Mzc3X1IwMzJfUlNWMV9NU0ssCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEZJRUxEX1BSRVAoQURGNDM3N19SMDMyX1JTVjFfTVNLLAo+IDB4OSkpOwo+ICvCoMKgwqDCoMKg wqDCoGlmIChyZXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7 Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHJlZ21hcF93cml0ZShzdC0+cmVnbWFwLCAweDMx LCBBREY0Mzc3X1IwMzFfUlNWMSk7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiArCj4gK8KgwqDCoMKgwqDCoMKg cmV0ID0gcmVnbWFwX3dyaXRlKHN0LT5yZWdtYXAsIDB4MkMsIEFERjQzNzdfUjAyQ19SU1YxKTsK PiArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gcmV0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXQgPSByZWdtYXBfdXBkYXRlX2Jp dHMoc3QtPnJlZ21hcCwgMHgyNSwKPiBBREY0Mzc3X1IwMjVfUlNWMV9NU0ssCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEZJ RUxEX1BSRVAoQURGNDM3N19SMDI1X1JTVjFfTVNLLAo+IDB4MTYpKTsKPiArwqDCoMKgwqDCoMKg wqBpZiAocmV0KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ ICsKPiArwqDCoMKgwqDCoMKgwqByZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMoc3QtPnJlZ21hcCwg MHgyMywKPiBBREY0Mzc3X1IwMjNfUlNWMV9NU0ssCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEZJRUxEX1BSRVAoQURGNDM3 N19SMDIzX1JTVjFfTVNLLAo+IDB4MTgpKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ICsKPiArwqDCoMKgwqDC oMKgwqByZXQgPSByZWdtYXBfd3JpdGUoc3QtPnJlZ21hcCwgMHgyMiwgQURGNDM3N19SMDIyX1JT VjEpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHJlZ21hcF93cml0 ZShzdC0+cmVnbWFwLCAweDIxLCBBREY0Mzc3X1IwMjFfUlNWMSk7Cj4gK8KgwqDCoMKgwqDCoMKg aWYgKHJldCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiAr Cj4gK8KgwqDCoMKgwqDCoMKgcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHN0LT5yZWdtYXAsIDB4 MWYsCj4gQURGNDM3N19SMDFGX1JTVjFfTVNLLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEFERjQzNzdf UjAxRl9SU1YxX01TSywKPiAweDcpKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ICsKPiArwqDCoMKgwqDCoMKg wqByZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHN0LT5yZWdtYXAsIDB4MWMsCj4gQURGNDM3N19S MDFDX1JTVjFfTVNLLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEZJRUxEX1BSRVAoQURGNDM3N19SMDFDX1JTVjFfTVNL LAo+IDB4MSkpOwo+ICt9Cj4gKwo+ICtpbnQgYWRmNDM3N19nZXRfZnJlcShzdHJ1Y3QgYWRmNDM3 N19zdGF0ZSAqc3QsIHU2NCAqZnJlcSkKPiArewo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGlu dCByZWZfZGl2X2ZhY3Rvciwgbl9pbnQ7Cj4gK8KgwqDCoMKgwqDCoMKgdTY0IGNsa2luX2ZyZXE7 Cj4gK8KgwqDCoMKgwqDCoMKgaW50IHJldDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgbXV0ZXhfbG9j aygmc3QtPmxvY2spOwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHJlZ21hcF9yZWFkKHN0LT5yZWdt YXAsIDB4MTIsICZyZWZfZGl2X2ZhY3Rvcik7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBleGl0Owo+ICsKPiArwqDCoMKgwqDC oMKgwqByZXQgPSByZWdtYXBfYnVsa19yZWFkKHN0LT5yZWdtYXAsIDB4MTAsIHN0LT5idWYsIHNp emVvZihzdC0KPiA+YnVmKSk7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBleGl0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqBjbGtp bl9mcmVxID0gY2xrX2dldF9yYXRlKHN0LT5jbGtpbik7Cj4gK8KgwqDCoMKgwqDCoMKgcmVmX2Rp dl9mYWN0b3IgPSBGSUVMRF9HRVQoQURGNDM3N19SX0RJVl9NU0ssCj4gcmVmX2Rpdl9mYWN0b3Ip Owo+ICvCoMKgwqDCoMKgwqDCoG5faW50ID0gRklFTERfR0VUKEFERjQzNzdfTl9JTlRfTFNCX01T Sywgc3QtPmJ1ZlswXSkgfAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoRklFTERf R0VUKEFERjQzNzdfTl9JTlRfTVNCX01TSywgc3QtPmJ1ZlsxXSkgPDwgOCk7Cj4gKwoKTWF5YmUg d2UgY291bGQgcmVmYWN0b3IgdGhpcyB0byB1c2UgdGhlIHByb3BlciBnZXRfdW5hbGlnbmVkKCkg Y2FsbD8gSQp0aGluayB3ZSB3b3VsZCBhbHNvIG5lZWQgb25lIEZJRUxEX0dFVCgpIGluIHRoYXQg Y2FzZS4uLgoKPiArwqDCoMKgwqDCoMKgwqAqZnJlcSA9IGRpdl91NjQoY2xraW5fZnJlcSwgcmVm X2Rpdl9mYWN0b3IpICogbl9pbnQ7Cj4gK2V4aXQ6Cj4gK8KgwqDCoMKgwqDCoMKgbXV0ZXhfdW5s b2NrKCZzdC0+bG9jayk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gK30KPiAr Cj4gK2ludCBhZGY0Mzc3X3NldF9mcmVxKHN0cnVjdCBhZGY0Mzc3X3N0YXRlICpzdCwgdTY0IGZy ZXEpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgcmVhZF92YWw7Cj4gK8KgwqDC oMKgwqDCoMKgdTY0IGZfdmNvOwo+ICvCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gKwo+ICvCoMKg wqDCoMKgwqDCoHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhzdC0+cmVnbWFwLCAweDFDLAo+IEFE RjQzNzdfRU5fRE5DTEtfTVNLIHwgQURGNDM3N19FTl9EUkNMS19NU0ssCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEZJRUxE X1BSRVAoQURGNDM3N19FTl9ETkNMS19NU0ssCj4gQURGNDM3N19FTl9ETkNMS19PTikgfAo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBGSUVMRF9QUkVQKEFERjQzNzdfRU5fRFJDTEtfTVNLLAo+IEFERjQzNzdfRU5fRFJDTEtf T04pKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gcmV0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXQgPSByZWdtYXBfdXBk YXRlX2JpdHMoc3QtPnJlZ21hcCwgMHgxMSwKPiBBREY0Mzc3X0VOX0FVVE9DQUxfTVNLIHwgQURG NDM3N19EQ0xLX0RJVjJfTVNLLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEFERjQzNzdfRU5fQVVUT0NB TF9NU0ssCj4gQURGNDM3N19WQ09fQ0FMSUJfRU4pIHwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChBREY0 Mzc3X0RDTEtfRElWMl9NU0ssCj4gc3QtPmRjbGtfZGl2MikpOwo+ICvCoMKgwqDCoMKgwqDCoGlm IChyZXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gKwo+ ICvCoMKgwqDCoMKgwqDCoHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhzdC0+cmVnbWFwLCAweDJF LAo+IEFERjQzNzdfRU5fQURDX0NOVl9NU0sgfCBBREY0Mzc3X0VOX0FEQ19NU0sgfAo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBBREY0Mzc3X0FEQ19BX0NPTlZfTVNLLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEFERjQzNzdfRU5f QURDX0NOVl9NU0ssCj4gQURGNDM3N19FTl9BRENfQ05WX0VOKSB8Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEZJRUxEX1BS RVAoQURGNDM3N19FTl9BRENfTVNLLAo+IEFERjQzNzdfRU5fQURDX0VOKSB8Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEZJ RUxEX1BSRVAoQURGNDM3N19BRENfQV9DT05WX01TSywKPiBBREY0Mzc3X0FEQ19BX0NPTlZfVkNP X0NBTElCKSk7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0ID0gcmVnbWFw X3VwZGF0ZV9iaXRzKHN0LT5yZWdtYXAsIDB4MjAsCj4gQURGNDM3N19FTl9BRENfQ0xLX01TSywK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgRklFTERfUFJFUChBREY0Mzc3X0VOX0FEQ19DTEtfTVNLLAo+IEFERjQzNzdfRU5f QURDX0NMS19FTikpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHJl Z21hcF91cGRhdGVfYml0cyhzdC0+cmVnbWFwLCAweDJGLAo+IEFERjQzNzdfRENMS19ESVYxX01T SywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgRklFTERfUFJFUChBREY0Mzc3X0RDTEtfRElWMV9NU0ssCj4gc3QtPmRjbGtf ZGl2MSkpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHJlZ21hcF91 cGRhdGVfYml0cyhzdC0+cmVnbWFwLCAweDI0LAo+IEFERjQzNzdfRENMS19NT0RFX01TSywKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgRklFTERfUFJFUChBREY0Mzc3X0RDTEtfTU9ERV9NU0ssCj4gc3QtPmRjbGtfbW9kZSkp Owo+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldHVybiByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHJlZ21hcF93cml0ZShz dC0+cmVnbWFwLCAweDI3LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEFERjQzNzdfU1lOVEhfTE9DS19UT19MU0JfTVNLLAo+ IHN0LT5zeW50aF9sb2NrX3RpbWVvdXQpKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ICsKPiArwqDCoMKgwqDC oMKgwqByZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMoc3QtPnJlZ21hcCwgMHgyOCwKPiBBREY0Mzc3 X1NZTlRIX0xPQ0tfVE9fTVNCX01TSywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiBGSUVMRF9QUkVQKEFERjQzNzdfU1lO VEhfTE9DS19UT19NU0JfTVNLLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3QtPnN5 bnRoX2xvY2tfdGltZW91dCA+Pgo+IDgpKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ICsKPiArwqDCoMKgwqDC oMKgwqByZXQgPSByZWdtYXBfd3JpdGUoc3QtPnJlZ21hcCwgMHgyOSwKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChBREY0Mzc3 X1ZDT19BTENfVE9fTFNCX01TSywgc3QtCj4gPnZjb19hbGNfdGltZW91dCkpOwo+ICvCoMKgwqDC oMKgwqDCoGlmIChyZXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBy ZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhzdC0+cmVn bWFwLCAweDJBLAo+IEFERjQzNzdfVkNPX0FMQ19UT19NU0JfTVNLLAo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IEZJRUxE X1BSRVAoQURGNDM3N19WQ09fQUxDX1RPX01TQl9NU0ssIHN0LT52Y29fYWxjX3RpbWVvdXQgPj4g OCkpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHJlZ21hcF93cml0 ZShzdC0+cmVnbWFwLCAweDI2LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEFERjQzNzdfVkNPX0JBTkRfRElWX01TSywgc3Qt Cj4gPnZjb19iYW5kX2RpdikpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJl dCA9IHJlZ21hcF93cml0ZShzdC0+cmVnbWFwLCAweDJELAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEFERjQzNzdfQURDX0NM S19ESVZfTVNLLCBzdC0KPiA+YWRjX2Nsa19kaXYpKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAocmV0 KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ICsKPiArwqDC oMKgwqDCoMKgwqBzdC0+Y2xrb3V0X2Rpdl9zZWwgPSAwOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBp ZiAoZnJlcSA+IEFERjQzNzdfTUFYX0NMS1BOX0ZSRVEgfHwgZnJlcSA8Cj4gQURGNDM3N19NSU5f Q0xLUE5fRlJFUSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSAtRUlO VkFMOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ICvCoMKg wqDCoMKgwqDCoH0KPiArCj4gK8KgwqDCoMKgwqDCoMKgZl92Y28gPSBmcmVxOwo+ICsKPiArwqDC oMKgwqDCoMKgwqB3aGlsZSAoZl92Y28gPCBBREY0Mzc3X01JTl9WQ09fRlJFUSkgewo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmX3ZjbyA8PD0gMTsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgc3QtPmNsa291dF9kaXZfc2VsKys7Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ ICsKPiArwqDCoMKgwqDCoMKgwqBzdC0+bl9pbnQgPSBkaXZfdTY0KGZyZXEsIHN0LT5mX3BmZCk7 Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhzdC0+cmVnbWFw LCAweDExLAo+IEFERjQzNzdfRU5fUkRCTFJfTVNLIHwgQURGNDM3N19OX0lOVF9NU0JfTVNLLAo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBGSUVMRF9QUkVQKEFERjQzNzdfRU5fUkRCTFJfTVNLLAo+IEFERjQzNzdfUkVGX0RC TFJfRElTKSB8Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIEZJRUxEX1BSRVAoQURGNDM3N19OX0lOVF9NU0JfTVNLLAo+IHN0 LT5uX2ludCA+PiA4KSk7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0ID0g cmVnbWFwX3VwZGF0ZV9iaXRzKHN0LT5yZWdtYXAsIDB4MTIsIEFERjQzNzdfUl9ESVZfTVNLCj4g fCBBREY0Mzc3X0NMS09VVF9ESVZfTVNLLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEFERjQzNzdfQ0xL T1VUX0RJVl9NU0ssCj4gc3QtPmNsa291dF9kaXZfc2VsKSB8Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEZJRUxEX1BSRVAo QURGNDM3N19SX0RJVl9NU0ssIHN0LQo+ID5yZWZfZGl2X2ZhY3RvcikpOwo+ICvCoMKgwqDCoMKg wqDCoGlmIChyZXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7 Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHJlZ21hcF93cml0ZShzdC0+cmVnbWFwLCAweDEw LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBG SUVMRF9QUkVQKEFERjQzNzdfTl9JTlRfTFNCX01TSywgc3QtCj4gPm5faW50KSk7Cj4gK8KgwqDC oMKgwqDCoMKgaWYgKHJldCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IHJldDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0 KHN0LT5yZWdtYXAsIDB4NDksIHJlYWRfdmFsLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAhKHJlYWRf dmFsICYKPiAoQURGNDM3N19GU01fQlVTWV9NU0spKSwgMjAwLCAyMDAgKiAxMDApOwo+ICvCoMKg wqDCoMKgwqDCoGlmIChyZXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVy biByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8qIERpc2FibGUgRU5fRE5DTEssIEVOX0RSQ0xL ICovCj4gK8KgwqDCoMKgwqDCoMKgcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHN0LT5yZWdtYXAs IDB4MUMsCj4gQURGNDM3N19FTl9ETkNMS19NU0sgfCBBREY0Mzc3X0VOX0RSQ0xLX01TSywKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgRklFTERfUFJFUChBREY0Mzc3X0VOX0ROQ0xLX01TSywKPiBBREY0Mzc3X0VOX0ROQ0xL X09GRikgfAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEFERjQzNzdfRU5fRFJDTEtfTVNLLAo+IEFERjQz NzdfRU5fRFJDTEtfT0ZGKSk7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyog RGlzYWJsZSBFTl9BRENfQ0xLICovCj4gK8KgwqDCoMKgwqDCoMKgcmV0ID0gcmVnbWFwX3VwZGF0 ZV9iaXRzKHN0LT5yZWdtYXAsIDB4MjAsCj4gQURGNDM3N19FTl9BRENfQ0xLX01TSywKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgRklFTERfUFJFUChBREY0Mzc3X0VOX0FEQ19DTEtfTVNLLAo+IEFERjQzNzdfRU5fQURDX0NM S19ESVMpKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKiBTZXQgb3V0cHV0 IEFtcGxpdHVkZSAqLwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMo c3QtPnJlZ21hcCwgMHgxOSwKPiBBREY0Mzc3X0NMS09VVDJfT1BfTVNLIHwgQURGNDM3N19DTEtP VVQxX09QX01TSywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEFERjQzNzdfQ0xLT1VUMV9PUF9NU0ss Cj4gQURGNDM3N19DTEtPVVRfNDIwTVYpIHwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEFERjQzNzdf Q0xLT1VUMl9PUF9NU0ssCj4gQURGNDM3N19DTEtPVVRfNDIwTVYpKTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgYWRmNDM3N19ncGlvX2luaXQoc3RydWN0IGFkZjQzNzdfc3RhdGUgKnN0KQo+ICt7 Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKHN0LT5ncGlvX2NlKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGdwaW9kX3NldF92YWx1ZShzdC0+Z3Bpb19jZSwgMSk7Cj4gKwo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBEZWxheSBmb3IgU1BJIHJlZ2lzdGVyIGJpdHMg dG8gc2V0dGxlIHRvIHRoZWlyCj4gcG93ZXItb24gcmVzZXQgc3RhdGUgKi8KPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgdXNsZWVwX3JhbmdlKDIwMCwgMjUwKTsKCmZzbGVlcCgpPwoK PiArwqDCoMKgwqDCoMKgwqB9Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmIChzdC0+Z3Bpb19lbmNs azEpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdwaW9kX3NldF92YWx1ZShzdC0+ Z3Bpb19lbmNsazEsIDEpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBpZiAoc3QtPmdwaW9fZW5jbGsy ICYmIHN0LT50eXBlID09IEFERjQzNzcpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGdwaW9kX3NldF92YWx1ZShzdC0+Z3Bpb19lbmNsazIsIDEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50IGFkZjQzNzdfaW5pdChzdHJ1Y3QgYWRmNDM3N19zdGF0ZSAqc3QpCj4gK3sKPiArwqDCoMKg wqDCoMKgwqBpbnQgcmV0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKiBHUElPIEluaXRpdGFsaXph dGlvbiAqLwo+ICvCoMKgwqDCoMKgwqDCoGFkZjQzNzdfZ3Bpb19pbml0KHN0KTsKPiArCj4gK8Kg wqDCoMKgwqDCoMKgLyogU29mdHdhcmUgcmVzZXQgKi8KPiArwqDCoMKgwqDCoMKgwqByZXQgPSBh ZGY0Mzc3X3NvZnRfcmVzZXQoc3QpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDC oC8qIFNldCBEZWZhdWx0IFJlZ2lzdGVycyAqLwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IGFkZjQz Nzdfc2V0X2RlZmF1bHQoc3QpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJl dCA9IHJlZ21hcF91cGRhdGVfYml0cyhzdC0+cmVnbWFwLCAweDE1LCBBREY0Mzc3X0NQX0lfTVNL LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBGSUVMRF9QUkVQKEFERjQzNzdfQ1BfSV9NU0ssCj4gQURGNDM3N19DUF8xME1B MSkpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHJlZ21hcF91cGRh dGVfYml0cyhzdC0+cmVnbWFwLCAweDAwLAoKd2Ugc2hvdWxkIGhhdmUgc29tZSBtZWFuaW5nZnVs IG5hbWVzIGZvciB0aGUgcmVnaXN0ZXJzLi4uIAoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQURGNDM3N19TRE9fQUNUSVZF X01TSyB8Cj4gQURGNDM3N19TRE9fQUNUSVZFX1JfTVNLLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEFE RjQzNzdfU0RPX0FDVElWRV9NU0ssCj4gQURGNDM3N19TRE9fQUNUSVZFX1NQSV80VykgfAo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBGSUVMRF9QUkVQKEFERjQzNzdfU0RPX0FDVElWRV9SX01TSywKPiBBREY0Mzc3X1NET19B Q1RJVkVfU1BJXzRXKSk7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgc3QtPmNs a2luX2ZyZXEgPSBjbGtfZ2V0X3JhdGUoc3QtPmNsa2luKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKg LyogUG93ZXIgVXAgKi8KPiArwqDCoMKgwqDCoMKgwqByZXQgPSByZWdtYXBfd3JpdGUoc3QtPnJl Z21hcCwgMHgxYSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgRklFTERfUFJFUChBREY0Mzc3X1BEX0FMTF9NU0ssCj4gQURGNDM3N19QRF9BTExf Tl9PUCkgfAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBGSUVMRF9QUkVQKEFERjQzNzdfUERfUkRJVl9NU0ssCj4gQURGNDM3N19QRF9SRElWX05f T1ApIHwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgRklFTERfUFJFUChBREY0Mzc3X1BEX05ESVZfTVNLLAo+IEFERjQzNzdfUERfTkRJVl9OX09Q KSB8Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEZJRUxEX1BSRVAoQURGNDM3N19QRF9WQ09fTVNLLAo+IEFERjQzNzdfUERfVkNPX05fT1ApIHwK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRklF TERfUFJFUChBREY0Mzc3X1BEX0xEX01TSywKPiBBREY0Mzc3X1BEX0xEX05fT1ApIHwKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRklFTERfUFJF UChBREY0Mzc3X1BEX1BGRENQX01TSywKPiBBREY0Mzc3X1BEX1BGRENQX05fT1ApIHwKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRklFTERfUFJF UChBREY0Mzc3X1BEX0NMS09VVDFfTVNLLAo+IEFERjQzNzdfUERfQ0xLT1VUMV9OX09QKSB8Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEZJRUxE X1BSRVAoQURGNDM3N19QRF9DTEtPVVQyX01TSywKPiBBREY0Mzc3X1BEX0NMS09VVDJfTl9PUCkp Owo+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldHVybiByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8qIENvbXB1dGUgUEZEICovCj4g K8KgwqDCoMKgwqDCoMKgc3QtPnJlZl9kaXZfZmFjdG9yID0gMDsKPiArwqDCoMKgwqDCoMKgwqBk byB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0LT5yZWZfZGl2X2ZhY3Rvcisr Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdC0+Zl9wZmQgPSBzdC0+Y2xraW5f ZnJlcSAvIHN0LT5yZWZfZGl2X2ZhY3RvcjsKPiArwqDCoMKgwqDCoMKgwqB9IHdoaWxlIChzdC0+ Zl9wZmQgPiBBREY0Mzc3X01BWF9GUkVRX1BGRCk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmIChz dC0+Zl9wZmQgPiBBREY0Mzc3X01BWF9GUkVRX1BGRCB8fCBzdC0+Zl9wZmQgPAo+IEFERjQzNzdf TUlOX0ZSRVFfUEZEKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJ TlZBTDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgc3QtPmZfZGl2X3JjbGsgPSBzdC0+Zl9wZmQ7Cj4g Kwo+ICvCoMKgwqDCoMKgwqDCoGlmIChzdC0+Zl9wZmQgPD0gQURGNDM3N19GUkVRX1BGRF84ME1I Wikgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdC0+ZGNsa19kaXYxID0gQURG NDM3N19EQ0xLX0RJVjFfMTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3QtPmRj bGtfZGl2MiA9IEFERjQzNzdfRENMS19ESVYyXzE7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHN0LT5kY2xrX21vZGUgPSBBREY0Mzc3X0RDTEtfTU9ERV9ESVM7Cj4gK8KgwqDCoMKg wqDCoMKgfSBlbHNlIGlmIChzdC0+Zl9wZmQgPD0gQURGNDM3N19GUkVRX1BGRF8xMjVNSFopIHsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3QtPmRjbGtfZGl2MSA9IEFERjQzNzdf RENMS19ESVYxXzE7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0LT5kY2xrX2Rp djIgPSBBREY0Mzc3X0RDTEtfRElWMl8xOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzdC0+ZGNsa19tb2RlID0gQURGNDM3N19EQ0xLX01PREVfRU47Cj4gK8KgwqDCoMKgwqDCoMKg fSBlbHNlIGlmIChzdC0+Zl9wZmQgPD0gQURGNDM3N19GUkVRX1BGRF8xNjBNSFopIHsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3QtPmRjbGtfZGl2MSA9IEFERjQzNzdfRENMS19E SVYxXzI7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0LT5kY2xrX2RpdjIgPSBB REY0Mzc3X0RDTEtfRElWMl8xOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdC0+ ZGNsa19tb2RlID0gQURGNDM3N19EQ0xLX01PREVfRElTOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBzdC0+Zl9kaXZfcmNsayAvPSAyOwo+ICvCoMKgwqDCoMKgwqDCoH0gZWxzZSBp ZiAoc3QtPmZfcGZkIDw9IEFERjQzNzdfRlJFUV9QRkRfMjUwTUhaKSB7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHN0LT5kY2xrX2RpdjEgPSBBREY0Mzc3X0RDTEtfRElWMV8yOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdC0+ZGNsa19kaXYyID0gQURGNDM3N19E Q0xLX0RJVjJfMTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3QtPmRjbGtfbW9k ZSA9IEFERjQzNzdfRENMS19NT0RFX0VOOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzdC0+Zl9kaXZfcmNsayAvPSAyOwo+ICvCoMKgwqDCoMKgwqDCoH0gZWxzZSBpZiAoc3QtPmZf cGZkIDw9IEFERjQzNzdfRlJFUV9QRkRfMzIwTUhaKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHN0LT5kY2xrX2RpdjEgPSBBREY0Mzc3X0RDTEtfRElWMV8yOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdC0+ZGNsa19kaXYyID0gQURGNDM3N19EQ0xLX0RJVjJf MjsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3QtPmRjbGtfbW9kZSA9IEFERjQz NzdfRENMS19NT0RFX0RJUzsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3QtPmZf ZGl2X3JjbGsgLz0gNDsKPiArwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBzdC0+ZGNsa19kaXYxID0gQURGNDM3N19EQ0xLX0RJVjFfMjsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3QtPmRjbGtfZGl2MiA9IEFERjQzNzdfRENM S19ESVYyXzI7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0LT5kY2xrX21vZGUg PSBBREY0Mzc3X0RDTEtfTU9ERV9FTjsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg c3QtPmZfZGl2X3JjbGsgLz0gNDsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gKwo+ICvCoMKgwqDCoMKg wqDCoHN0LT5zeW50aF9sb2NrX3RpbWVvdXQgPSBESVZfUk9VTkRfVVAoc3QtPmZfZGl2X3JjbGss IDUwMDAwKTsKPiArwqDCoMKgwqDCoMKgwqBzdC0+dmNvX2FsY190aW1lb3V0ID0gRElWX1JPVU5E X1VQKHN0LT5mX2Rpdl9yY2xrLCAyMDAwMCk7Cj4gK8KgwqDCoMKgwqDCoMKgc3QtPnZjb19iYW5k X2RpdiA9IERJVl9ST1VORF9VUChzdC0+Zl9kaXZfcmNsaywgMTUwMDAwICogMTYgKgo+ICgxIDw8 IHN0LT5kY2xrX21vZGUpKTsKPiArwqDCoMKgwqDCoMKgwqBzdC0+YWRjX2Nsa19kaXYgPSBESVZf Uk9VTkRfVVAoKHN0LT5mX2Rpdl9yY2xrIC8gNDAwMDAwIC0gMiksCj4gNCk7Cj4gKwo+ICvCoMKg wqDCoMKgwqDCoHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdCBhZGY0Mzc3X3Jl YWQoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwgdWludHB0cl90Cj4gcHJpdmF0ZSwKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBz dHJ1Y3QgaWlvX2NoYW5fc3BlYyAqY2hhbiwgY2hhcgo+ICpidWYpCj4gK3sKPiArwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgYWRmNDM3N19zdGF0ZSAqc3QgPSBpaW9fcHJpdihpbmRpb19kZXYpOwo+ICvC oMKgwqDCoMKgwqDCoHU2NCB2YWwgPSAwOwo+ICvCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gKwo+ ICvCoMKgwqDCoMKgwqDCoHN3aXRjaCAoKHUzMilwcml2YXRlKSB7Cj4gK8KgwqDCoMKgwqDCoMKg Y2FzZSBBREY0Mzc3X0ZSRVE6Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9 IGFkZjQzNzdfZ2V0X2ZyZXEoc3QsICZ2YWwpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBicmVhazsKPiArwqDCoMKgwqDCoMKgwqBkZWZhdWx0Ogo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByZXQgPSAtRUlOVkFMOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB2YWwgPSAwOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiAr wqDCoMKgwqDCoMKgwqB9Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiByZXQgPzogc3lzZnNf ZW1pdChidWYsICIlbGx1XG4iLCB2YWwpOwoKSSB3b3VsZCBhbHNvIHJldHVybiBpbiBwbGFjZS4g SSd2ZSBjb21lIHRvIHByZWZlciBpdCBidXQgdGhhdCdzIG1lIDopCgo+ICt9Cj4gKwo+ICtzdGF0 aWMgc3NpemVfdCBhZGY0Mzc3X3dyaXRlKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsIHVpbnRw dHJfdAo+IHByaXZhdGUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyAqY2hhbiwgY29uc3QK PiBjaGFyICpidWYsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzaXplX3QgbGVuKQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGFk ZjQzNzdfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPiArwqDCoMKgwqDCoMKgwqB1 bnNpZ25lZCBsb25nIGxvbmcgZnJlcTsKPiArwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+ICsKPiAr wqDCoMKgwqDCoMKgwqBtdXRleF9sb2NrKCZzdC0+bG9jayk7Cj4gK8KgwqDCoMKgwqDCoMKgc3dp dGNoICgodTMyKXByaXZhdGUpIHsKPiArwqDCoMKgwqDCoMKgwqBjYXNlIEFERjQzNzdfRlJFUToK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0ga3N0cnRvdWxsKGJ1ZiwgMTAs ICZmcmVxKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ICsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gYWRmNDM3N19zZXRfZnJlcShzdCwg ZnJlcSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ICvCoMKgwqDC oMKgwqDCoGRlZmF1bHQ6Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IC1F SU5WQUw7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ICvCoMKgwqDC oMKgwqDCoH0KPiArCgpJIHRoaW5rIHdlIGNhbiBqdXN0IHJldHVybiBpbiBwbGFjZSBvbiB0aGUg ZWFjaCBzd2l0Y2goKS4uLiBXZSBjYW4ganVzdAptb3ZlIHRoZSBsb2NrIGluc2lkZSBhZGY0Mzc3 X3NldF9mcmVxKCk/Cgo+ICvCoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmc3QtPmxvY2spOwo+ ICsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0ID8gcmV0IDogbGVuOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IGFkZjQzNzdfc2V0X211eG91dF9tb2RlKHN0cnVjdCBpaW9fZGV2ICppbmRpb19k ZXYsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyAqY2hhbiwKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHVuc2lnbmVkIGludCBtb2RlKQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGFk ZjQzNzdfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPiArCj4gK8KgwqDCoMKgwqDC oMKgcmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhzdC0+cmVnbWFwLCAweDFELAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEFERjQzNzdfTVVYT1VUX01TSywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEFERjQzNzdfTVVYT1VU X01TSywKPiBtb2RlKSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgYWRmNDM3N19nZXRfbXV4b3V0 X21vZGUoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVj dCBpaW9fY2hhbl9zcGVjICpjaGFuKQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGFkZjQz Nzdfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPiArwqDCoMKgwqDCoMKgwqB1bnNp Z25lZCBpbnQgbW9kZTsKPiArwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+ICsKPiArwqDCoMKgwqDC oMKgwqByZXQgPSByZWdtYXBfcmVhZChzdC0+cmVnbWFwLCAweDFELCAmbW9kZSk7Cj4gKwoKTWF5 YmUgc29tZXRoaW5nIG1vcmUgZGVzY3JpcHRpdmUgdGhhbiAweDFEPwoKPiArwqDCoMKgwqDCoMKg wqByZXR1cm4gcmV0ID8gOiBGSUVMRF9HRVQoQURGNDM3N19NVVhPVVRfTVNLLCBtb2RlKTsKPiAr fQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpaW9fZW51bSBhZGY0Mzc3X211eG91dF9lbnVt ID0gewo+ICvCoMKgwqDCoMKgwqDCoC5pdGVtcyA9IGFkZjQzNzdfbXV4b3V0X21vZGVzLAo+ICvC oMKgwqDCoMKgwqDCoC5udW1faXRlbXMgPSBBUlJBWV9TSVpFKGFkZjQzNzdfbXV4b3V0X21vZGVz KSwKPiArwqDCoMKgwqDCoMKgwqAuZ2V0ID0gYWRmNDM3N19nZXRfbXV4b3V0X21vZGUsCj4gK8Kg wqDCoMKgwqDCoMKgLnNldCA9IGFkZjQzNzdfc2V0X211eG91dF9tb2RlLAo+ICt9Owo+ICsKPiAr I2RlZmluZSBfQURGNDM3N19FWFRfSU5GTyhfbmFtZSwgX3NoYXJlZCwgX2lkZW50KSB7IFwKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLm5hbWUgPSBfbmFtZSwgXAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAucmVhZCA9IGFkZjQzNzdfcmVhZCwgXAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAud3JpdGUgPSBhZGY0Mzc3X3dyaXRlLCBcCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5wcml2YXRlID0gX2lkZW50LCBcCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5zaGFyZWQgPSBfc2hhcmVkLCBcCj4gK8KgwqDCoMKgwqDC oMKgfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjX2V4dF9pbmZvIGFk ZjQzNzdfZXh0X2luZm9bXSA9IHsKPiArwqDCoMKgwqDCoMKgwqAvKgo+ICvCoMKgwqDCoMKgwqDC oCAqIFVzdWFsbHkgd2UgdXNlIElJT19DSEFOX0lORk9fRlJFUVVFTkNZLCBidXQgdGhlcmUgYXJl Cj4gK8KgwqDCoMKgwqDCoMKgICogdmFsdWVzID4gMl4zMiBpbiBvcmRlciB0byBzdXBwb3J0IHRo ZSBlbnRpcmUgZnJlcXVlbmN5Cj4gcmFuZ2UKPiArwqDCoMKgwqDCoMKgwqAgKiBpbiBIei4KPiAr wqDCoMKgwqDCoMKgwqAgKi8KPiArwqDCoMKgwqDCoMKgwqBfQURGNDM3N19FWFRfSU5GTygiZnJl cXVlbmN5IiwgSUlPX1NIQVJFRF9CWV9BTEwsCj4gQURGNDM3N19GUkVRKSwKCkNhbid0IHdlIGhh dmUgdTY0IGFscmVhZHkgaW4gSUlPX0NIQU5fSU5GT19GUkVRVUVOQ1k/IEkga25vdyB0aGUgd3Jp dGUKc2lkZSBpcyBhIGJpdCBhd2t3YXJkIGJ1dCBJIHRoaW5rIHdlIGNhbiBtYWtlIGl0IGJldHRl ci4KIAo+ICvCoMKgwqDCoMKgwqDCoElJT19FTlVNKCJtdXhvdXRfc2VsZWN0IiwgSUlPX1NIQVJF RF9CWV9BTEwsCj4gJmFkZjQzNzdfbXV4b3V0X2VudW0pLAo+ICvCoMKgwqDCoMKgwqDCoElJT19F TlVNX0FWQUlMQUJMRSgibXV4b3V0X3NlbGVjdCIsIElJT19TSEFSRURfQllfQUxMLAo+ICZhZGY0 Mzc3X211eG91dF9lbnVtKSwKPiArwqDCoMKgwqDCoMKgwqB7IH0sCj4gK307Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGlpb19jaGFuX3NwZWMgYWRmNDM3N19jaGFubmVsc1tdID0gewo+ICvC oMKgwqDCoMKgwqDCoHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLnR5cGUgPSBJ SU9fQUxUVk9MVEFHRSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLmluZGV4ZWQg PSAxLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAub3V0cHV0ID0gMSwKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLmNoYW5uZWwgPSAwLAo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAuZXh0X2luZm8gPSBhZGY0Mzc3X2V4dF9pbmZvLAo+ICvCoMKgwqDC oMKgwqDCoH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGFkZjQzNzdfcHJvcGVydGllc19wYXJz ZShzdHJ1Y3QgYWRmNDM3N19zdGF0ZSAqc3QpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg c3BpX2RldmljZSAqc3BpID0gc3QtPnNwaTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgc3QtPmNsa2lu ID0gZGV2bV9jbGtfZ2V0KCZzcGktPmRldiwgInJlZl9pbiIpOwo+ICvCoMKgwqDCoMKgwqDCoGlm IChJU19FUlIoc3QtPmNsa2luKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIGRldl9lcnJfcHJvYmUoJnNwaS0+ZGV2LCBQVFJfRVJSKHN0LT5jbGtpbiksCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgImZhaWxlZCB0byBnZXQgdGhlIHJlZmVyZW5jZQo+IGlucHV0IGNsb2NrXG4iKTsK PiArCj4gK8KgwqDCoMKgwqDCoMKgc3QtPmdwaW9fY2UgPSBkZXZtX2dwaW9kX2dldF9vcHRpb25h bCgmc3QtPnNwaS0+ZGV2LCAiY2UtZW4iLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIEdQSU9EX09VVF9ISUdIKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfRVJSKHN0LT5ncGlv X2NlKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGRldl9lcnJfcHJv YmUoJnNwaS0+ZGV2LCBQVFJfRVJSKHN0LT5ncGlvX2NlKSwKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiZmFp bGVkIHRvIGdldCB0aGUgQ0UgR1BJT1xuIik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHN0LT5ncGlv X2VuY2xrMSA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKCZzdC0+c3BpLT5kZXYsCj4gImVuY2xr MSIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHUElPRF9PVVRf SElHSCk7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKElTX0VSUihzdC0+Z3Bpb19lbmNsazEpKQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZGV2X2Vycl9wcm9iZSgmc3BpLT5k ZXYsIFBUUl9FUlIoc3QtCj4gPmdwaW9fZW5jbGsxKSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiZmFpbGVk IHRvIGdldCB0aGUgQ0UgR1BJT1xuIik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmIChzdC0+dHlw ZSA9PSBBREY0Mzc3KSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0LT5ncGlv X2VuY2xrMiA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKCZzdC0+c3BpLQo+ID5kZXYsICJlbmNs azIiLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgCj4gR1BJT0RfT1VUX0hJR0gpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAoSVNfRVJSKHN0LT5ncGlvX2VuY2xrMikpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZGV2X2Vycl9wcm9iZSgmc3BpLT5kZXYsIFBU Ul9FUlIoc3QtCj4gPmdwaW9fZW5jbGsyKSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgImZhaWxlZCB0byBnZXQgdGhlIENFCj4gR1BJT1xuIik7Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ ICsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBhZGY0 Mzc3X2ZyZXFfY2hhbmdlKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkCj4gbG9u ZyBhY3Rpb24sIHZvaWQgKmRhdGEpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYWRmNDM3 N19zdGF0ZSAqc3QgPSBjb250YWluZXJfb2YobmIsIHN0cnVjdAo+IGFkZjQzNzdfc3RhdGUsIG5i KTsKPiArwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqBpZiAoYWN0 aW9uID09IFBPU1RfUkFURV9DSEFOR0UpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgbXV0ZXhfbG9jaygmc3QtPmxvY2spOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXQgPSBub3RpZmllcl9mcm9tX2Vycm5vKGFkZjQzNzdfaW5pdChzdCkpOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2soJnN0LT5sb2NrKTsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiArwqDCoMKgwqDCoMKgwqB9Cj4g Kwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBOT1RJRllfT0s7Cj4gK30KPiArCj4gK3N0YXRpYyB2 b2lkIGFkZjQzNzdfY2xrX2Rpc2FibGUodm9pZCAqZGF0YSkKPiArewo+ICvCoMKgwqDCoMKgwqDC oGNsa19kaXNhYmxlX3VucHJlcGFyZShkYXRhKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBhZGY0 Mzc3X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2Owo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCByZWdtYXAg KnJlZ21hcDsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYWRmNDM3N19zdGF0ZSAqc3Q7Cj4gK8Kg wqDCoMKgwqDCoMKgaW50IHJldDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaW5kaW9fZGV2ID0gZGV2 bV9paW9fZGV2aWNlX2FsbG9jKCZzcGktPmRldiwgc2l6ZW9mKCpzdCkpOwo+ICvCoMKgwqDCoMKg wqDCoGlmICghaW5kaW9fZGV2KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gLUVOT01FTTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcmVnbWFwID0gZGV2bV9yZWdtYXBfaW5p dF9zcGkoc3BpLCAmYWRmNDM3N19yZWdtYXBfY29uZmlnKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAo SVNfRVJSKHJlZ21hcCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBQ VFJfRVJSKHJlZ21hcCk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHN0ID0gaWlvX3ByaXYoaW5kaW9f ZGV2KTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaW5kaW9fZGV2LT5pbmZvID0gJmFkZjQzNzdfaW5m bzsKPiArwqDCoMKgwqDCoMKgwqBpbmRpb19kZXYtPm5hbWUgPSAiYWRmNDM3NyI7Cj4gK8KgwqDC oMKgwqDCoMKgaW5kaW9fZGV2LT5jaGFubmVscyA9IGFkZjQzNzdfY2hhbm5lbHM7Cj4gK8KgwqDC oMKgwqDCoMKgaW5kaW9fZGV2LT5udW1fY2hhbm5lbHMgPSBBUlJBWV9TSVpFKGFkZjQzNzdfY2hh bm5lbHMpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBzdC0+cmVnbWFwID0gcmVnbWFwOwo+ICvCoMKg wqDCoMKgwqDCoHN0LT5zcGkgPSBzcGk7Cj4gK8KgwqDCoMKgwqDCoMKgc3QtPnR5cGUgPSBzcGlf Z2V0X2RldmljZV9pZChzcGkpLT5kcml2ZXJfZGF0YTsKCkhtbSB0aGlzIGlzIHNvbWV0aGluZyB0 aGF0IGNhbWUgdXAgaW50ZXJuYWxseSB0aGUgb3RoZXIgZGF5LiBBcmUgd2UKZ3VhcmFudGVlZCB0 aGF0IHRoaXMgd2lsbCBhbHdheXMgd29yaz8gRm9yIE9GIEkgdGhpbmsgaXQgaXMgYnV0IEknbSBu b3QKc3VyZSBhYm91dCBBQ1BJPyBBdCBmaXJzdCBnbGFuY2UsIGl0IHNlZW1zIHRoYXQgaXQgbWln aHQgYmUgb2sgYnV0IEkKZGlkIG5vdCB3ZW50IHRvbyBkZWVwIGluIHRoZSBBQ1BJIGNvZGUuCgo+ ICvCoMKgwqDCoMKgwqDCoG11dGV4X2luaXQoJnN0LT5sb2NrKTsKPiArCj4gK8KgwqDCoMKgwqDC oMKgcmV0ID0gYWRmNDM3N19wcm9wZXJ0aWVzX3BhcnNlKHN0KTsKPiArwqDCoMKgwqDCoMKgwqBp ZiAocmV0KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ICsK PiArwqDCoMKgwqDCoMKgwqByZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoc3QtPmNsa2luKTsKPiAr wqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gcmV0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXQgPSBkZXZtX2FkZF9hY3Rpb25fb3Jf cmVzZXQoJnNwaS0+ZGV2LAo+IGFkZjQzNzdfY2xrX2Rpc2FibGUsIHN0LT5jbGtpbik7Cj4gK8Kg wqDCoMKgwqDCoMKgaWYgKHJldCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIHJldDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgc3QtPm5iLm5vdGlmaWVyX2NhbGwgPSBhZGY0 Mzc3X2ZyZXFfY2hhbmdlOwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IGRldm1fY2xrX25vdGlmaWVy X3JlZ2lzdGVyKCZzcGktPmRldiwgc3QtPmNsa2luLCAmc3QtCj4gPm5iKTsKPiArwqDCoMKgwqDC oMKgwqBpZiAocmV0KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0 Owo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXQgPSBhZGY0Mzc3X2luaXQoc3QpOwo+ICvCoMKgwqDC oMKgwqDCoGlmIChyZXQpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X2Vy cigmc3BpLT5kZXYsICJhZGY0Mzc3IGluaXQgZmFpbGVkXG4iKTsKCkkgd291bGQgbWFrZSBzdXJl IHRvIHByaW50IGFsbCB0aGUgZXJyb3IgcGF0aHMgKHRoYXQgbWF0dGVyKSBpbgphZGY0Mzc3X2lu aXQoKSBhbmQganVzdCByZXR1cm4gaW4gaGVyZS4uLgoKCi0gTnVubyBTw6EKCg==