From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: passt.top; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=PfQproQ6; dkim-atps=neutral Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by passt.top (Postfix) with ESMTPS id BBE575A065C for ; Wed, 26 Aug 2026 12:00:59 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787738458; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=cJdMmOtWvkLE7vUqhVdYRwqp2h9dlMKw4LR+zxncQJg=; b=PfQproQ6AWncrb4PA2OTXDaz0LOrc4uXpaHCpwRkqi4HT0F+b0d0rm+FJaNXSvjEa31TtI mHvJINJ72boaJpmrbouQm6hylWV63v19j6XsykO78GsrlCAT2pJ9PzLrNaooQ8QfbdzGBp nCBgPBubHwAu+w9SlWqng7p2x00RQZo= Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-193-fKi4h_8VMQmUF7ok36O7_w-1; Wed, 26 Aug 2026 06:00:56 -0400 X-MC-Unique: fKi4h_8VMQmUF7ok36O7_w-1 X-Mimecast-MFC-AGG-ID: fKi4h_8VMQmUF7ok36O7_w_1787738456 Received: by mail-ed1-f70.google.com with SMTP id 4fb4d7f45d1cf-6a5d169d698so803903a12.2 for ; Wed, 26 Aug 2026 03:00:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787738455; x=1788343255; h=content-transfer-encoding:content-type:in-reply-to:autocrypt:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=cJdMmOtWvkLE7vUqhVdYRwqp2h9dlMKw4LR+zxncQJg=; b=SrIziKN+NCGxzth3xV7xZiCukBzrCBkuDGGgr5DBNuNOOHMl8f8hZpHMpV2Mb14HkR f61nKE6wxdPpqUdmebSSTAhXKFhZFPeCnFuPw8rn/8b7C/MXNQdUy2DgHgpmiedTSIw3 sB6vtU0D4HJtB+L4G6mi7XmfaEsuyZWWzp+6EmdSSKcM54pRf5pdAhvUGoALrokTtiz1 D2FHjqc+3oH43JLUQiVFuePk9IhqxA2mQQiGxDRNclpraCrbdU00Mg1kuJEjZ3acEcY5 4jLTSMgeC4wELYM3meGTUF7Bkcb5JOEQ6XpkNfSD/7x1427Y8+Sri8DP/Ha7g5VfJ/Fx dFPQ== X-Forwarded-Encrypted: i=1; AHgh+RrVzaImXY4H8Shfp3/UzfgYQkmFMd2SzK3w1z1A3gbetacCejk+k9/BzYXVEJw1un4eVEGHXUOj/Ek=@passt.top X-Gm-Message-State: AFuF++mtPQoDSl0Lggts0CxY+GGH32OvPWmNaUEtSU8DfvpqFg6TGBn9 B/3RFSZRDyOkpPWsNpVY3AdwFzqu2VT/FVrg4aqISnBMUYzPz2w7OcwVML/60JzVFMXymvkiy7A +3TSGusrQ7FNSErEwrBM412VUWIEb9Wt8TaeRa8AINSo5Atvp5cY8gA== X-Gm-Gg: AR+sD11u2wYs8EpPCfeFyLacAfO6Vq6OpCcDU8JMiQjIbkt/wm+45N+QacRhCuspFGu zbRkzfWZhDuNqolILaaQEr3pCw0AZBe7QDlGwWYN4rKMLhw7GNYmkZjQvPdlkZN44sr1dRLdCxO VRQBNkt9JCtqBq36FZug3n8mdQ3gSqp0L2TE8VGk/c2W+IbQ+CMG+1wE7IZ1/ooxe4/T2CICjcu ntWQUxyECbq4AZHR2uYCfZowRWX0Ts51MSEoHd0RcW1kI1kXRTMrhqWjYUOmJXpiy3zE4eCITQX bJLWaMSUpWAMBUCa7iDOolkgB4Od5r4ay/us5gKhxhpAzU/ybSpR9erW6M0sPU3PfVeKyBKCCdc CGW73/f/yUhsiV984zwlNAQQlEO7jV0wRUiDzDyWOi0A= X-Received: by 2002:a05:6402:51d4:b0:6a0:9468:a025 with SMTP id 4fb4d7f45d1cf-6a5df66c7f2mr6902102a12.15.1787738455307; Wed, 26 Aug 2026 03:00:55 -0700 (PDT) X-Received: by 2002:a05:6402:51d4:b0:6a0:9468:a025 with SMTP id 4fb4d7f45d1cf-6a5df66c7f2mr6901990a12.15.1787738454595; Wed, 26 Aug 2026 03:00:54 -0700 (PDT) Received: from ?IPV6:2a01:e0a:e10:ef90:d92c:7e4a:47e6:1b23? ([2a01:e0a:e10:ef90:d92c:7e4a:47e6:1b23]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a5de5f7bb8sm3715500a12.0.2026.08.26.03.00.53 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 26 Aug 2026 03:00:53 -0700 (PDT) Message-ID: <82d09a88-1c99-4527-9f9d-06cab8c766e9@redhat.com> Date: Wed, 26 Aug 2026 12:00:52 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v6 4/6] dhcp: Add --dhcp-opt with option table and value parser To: Anshu Kumari , sbrivio@redhat.com, passt-dev@passt.top References: <20260824134436.282300-1-anskuma@redhat.com> <20260824134436.282300-5-anskuma@redhat.com> From: Laurent Vivier Autocrypt: addr=lvivier@redhat.com; keydata= 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 In-Reply-To: <20260824134436.282300-5-anskuma@redhat.com> X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: mlLyUAqAdoHKoGFB-7Wizx0IZnYBbwLCZCnOhhTBmBM_1787738456 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 Message-ID-Hash: JI3RC2DNXW23GTIOA3IFANICLRKRUAXW X-Message-ID-Hash: JI3RC2DNXW23GTIOA3IFANICLRKRUAXW X-MailFrom: lvivier@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: david@gibson.dropbear.id.au, jmaloy@redhat.com X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: T24gOC8yNC8yNiAxNTo0NCwgQW5zaHUgS3VtYXJpIHdyb3RlOg0KPiBJbnRyb2R1Y2UgdGhlIC0t ZGhjcC1vcHQgZmxhZyB0aGF0IGFsbG93cyBzZXR0aW5nIGFyYml0cmFyeSBESENQDQo+IG9wdGlv bnMgZnJvbSBjb21tYW5kLWxpbmUgaW4gdGhlIGZvcm0gWy0tZGhjcC1vcHQgQ09ERSxWQUxVRV0u DQo+IA0KPiBBZGQgYSB0eXBlIGxvb2t1cCB0YWJsZSBtYXBwaW5nIG9wdGlvbiBjb2RlcyB0byBS RkMgMjEzMiB2YWx1ZSB0eXBlcw0KPiAoSVB2NCwgSVB2NCBsaXN0LCBpbnRlZ2VyLCBzdHJpbmcp IGFuZCBkaGNwX29wdF9wYXJzZSgpIHRvIGNvbnZlcnQNCj4gQ0xJIHN0cmluZ3MgdG8gYmluYXJ5 IHdpcmUgZm9ybWF0LiAgUGFyc2VkIG9wdGlvbnMgYXJlIHN0b3JlZCBpbg0KPiBzdHJ1Y3Qgb3B0 c1tdIGFuZCBpbmplY3RlZCBpbnRvIERIQ1AgcmVwbGllcy4gIElmIHRoZSBzYW1lIG9wdGlvbiBj b2RlDQo+IGlzIGdpdmVuIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSB3aW5zLg0KPiAN Cj4gTGluazogaHR0cHM6Ly9idWdzLnBhc3N0LnRvcC9zaG93X2J1Zy5jZ2k/aWQ9MTkyDQo+IFNp Z25lZC1vZmYtYnk6IEFuc2h1IEt1bWFyaSA8YW5za3VtYUByZWRoYXQuY29tPg0KPiAtLS0NCj4g djY6DQo+ICAgIC0gZHJvcHBlZCBvcHRpb24gNTMuDQo+ICAgIC0gVXNlZCBwYXJzZV91bnNpZ25l ZCgpLCBwYXJzZV9saXRlcmFsKCksIHBhcnNlX2lwdjQoKQ0KPiAgICAgIGZyb20gcGFyc2UuYyBp bnN0ZWFkIG9mIG1hbnVhbCBzdHJ0b3VsL2luZXRfcHRvbi4NCj4gICAgLSBNb3ZlZCBvcHRpb24t cGFyc2luZyB2YXJpYWJsZXMgaW50byBjYXNlIDM0IGJsb2NrDQo+ICAgICAgc2NvcGUuDQo+ICAg IC0gVXNlZCBodG9ucygpL2h0b25sKCkgZm9yIGludGVnZXIgZW5jb2RpbmcuDQo+ICAgIC0gVXNl ZCBhc3NlcnQoKSBmb3IgYm91bmRhcnkgY2hlY2tzIGluIGRoY3Bfb3B0X3RvX3N0cigpLg0KPiAg ICAtIFVzZWQgc25wcmludGYoKSB3aXRoICUuKnMgZm9yIHN0cmluZyBmb3JtYXR0aW5nIGluDQo+ ICAgICAgZGhjcF9vcHRfdG9fc3RyKCkuDQo+ICAgIC0gVXNlZCBzaXplb2Yoc3RydWN0IGluX2Fk ZHIpIGluc3RlYWQgb2YgbGl0ZXJhbCA0Lg0KPiAgICAtIGRoY3Bfb3B0X3RvX3N0cigpIGNoZWNr cyBPUFRfVU5TRVQgZm9yIGFsbCBzdGF0ZXMsDQo+ICAgICAgbm90IGp1c3QgT1BUX1VTRVIuDQo+ ICAgIC0gQWRkZWQgY3VybHkgYnJhY2tldHMgZm9yIG11bHRpLWxpbmUgY29uZGl0aW9uYWxzLg0K PiAgICAtIERyb3BwZWQgdHJhaWxpbmcgY29tbWEgYWZ0ZXIgT1BUX0RFRkFVTFQgaW4NCj4gICAg ICBpbml0aWFsaXplcnMgdG8gcmVkdWNlIGxpbmUgbGVuZ3RoLg0KPiANCj4gdjU6DQo+ICAgIC0g UmVuYW1lIGVudW0gdmFsdWVzOiBJTlQ4L0lOVDE2L0lOVDMyL1NJTlQzMiDihpIgVUlOVDgvVUlO VDE2L1VJTlQzMi9JTlQzMg0KPiAgICAtIENoYW5nZSBpbnQgbGVuIHRvIHNpemVfdCBsZW4gaW4g ZGhjcF9vcHRfcGFyc2UoKSwgcmVtb3ZlIGludCBjYXN0cw0KPiAgICAtIE1ha2UgZGhjcF9vcHRf cGFyc2UoKSBzdGF0aWMsIGFkZCBkaGNwX3NldF9vcHQoKSB0byBzdG9yZSBvcHRpb25zDQo+ICAg ICAgZGlyZWN0bHkgaW4gb3B0c1tdIGF0IHN0YXJ0dXAgaW5zdGVhZCBvZiBkb3VibGUtcGFyc2lu ZyB2aWEgY3R4LT5kaGNwX29wdHMNCj4gICAgLSBBZGQgT1BUX1VTRVIgdG8gZW51bSBvcHRfc3Rh dGUgdG8gcHJvdGVjdCB1c2VyIG9wdGlvbnMgZnJvbSBiZWluZw0KPiAgICAgIG92ZXJ3cml0dGVu IGJ5IGJ1aWx0LWluIGRlZmF1bHRzDQo+ICAgIC0gQWRkIGRoY3Bfb3B0X3RvX3N0cigpIGZvciBj b25mX3ByaW50KCkgZGlzcGxheQ0KPiAgICAtIFJlbW92ZSBkaGNwX29wdHNbXSBmcm9tIHN0cnVj dCBjdHggaW4gcGFzc3QuaA0KPiAgICAtIFJlbW92ZSBjb25mX2RoY3Bfb3B0aW9uKCkgd3JhcHBl ciBmcm9tIGNvbmYuYw0KPiANCj4gdjQ6DQo+ICAgIC0gUmVuYW1lZCBjdXN0b21fb3B0cyB0byBk aGNwX29wdHMsIDI1NiBlbnRyaWVzIGluZGV4ZWQgYnkgb3B0aW9uDQo+ICAgICAgY29kZSwgcmVt b3ZlZCBNQVhfQ1VTVE9NX0RIQ1BfT1BUUyBhbmQgY291bnQgZmllbGQuDQo+ICAgIC0gQ2hhbmdl ZCBzdHIgYnVmZmVyIGZyb20gMjU2IHRvIDI1NSBieXRlcy4NCj4gICAgLSBNb3ZlZCBmdW5jdGlv biB0byBjb25mLmMgYXMgc3RhdGljIGNvbmZfZGhjcF9vcHRpb24oKSwgcmVuYW1lZA0KPiAgICAg IGZyb20gZGhjcF9hZGRfb3B0aW9uKCkuDQo+ICAgIC0gTWFkZSBkaGNwX29wdF9wYXJzZSgpIG5v bi1zdGF0aWMsIGRlY2xhcmVkIGluIGRoY3AuaA0KPiAgICAtIERyb3BwZWQgdmFsL2xlbiBmcm9t IGN0eCBzdHJ1Y3Q7IGNvbmZfZGhjcF9vcHRpb24oKSB2YWxpZGF0ZXMNCj4gICAgICB3aXRoIHRl bXAgYnVmZmVyLCBkaGNwKCkgcGFyc2VzIHN0ciBkaXJlY3RseSBpbnRvIG9wdHNbXSBhdA0KPiAg ICAgIHJlcGx5IHRpbWUuDQo+ICAgIC0gUmVwbGFjZWQgc3RydG9rX3IoKSArIDI1Ni1ieXRlIGJ1 ZmZlciB3aXRoIHN0cmNzcG4oKSArDQo+ICAgICAgSU5FVF9BRERSU1RSTEVOIGJ1ZmZlci4NCj4g ICAgLSBBZGRlZCBESENQX09QVF9TSU5UMzIgZm9yIG9wdGlvbiAyIChUaW1lIE9mZnNldCksIHVz ZXMgc3RydG9sKCkNCj4gICAgICBwZXIgUkZDIDIxMzIgU2VjdGlvbiA4LjIuDQo+ICAgIC0gQWxs IGVycm9ycyBpbiBkaGNwX29wdF9wYXJzZSgpIHJldHVybiAtMSwgcmVtb3ZlZCBkaWUoKSBjYWxs czsNCj4gICAgICBjYWxsZXIgaGFuZGxlcyBlcnJvciBtZXNzYWdlIGNvbnNpc3RlbnRseS4NCj4g ICAgLSBSZW1vdmVkIHJlZHVuZGFudCAhc2xlbiBjaGVjayBpbiBESENQX09QVF9TVFIgY2FzZS4N Cj4gICAgLSBPbWl0dGVkIGV4cGxpY2l0IGFycmF5IHNpemUgZm9yIGRoY3Bfb3B0X3R5cGVzW10s IGFycmF5ZGRlZCBib3VuZHMNCj4gICAgICBjaGVjayBiZWZvcmUgbG9va3VwLg0KPiAgICAtIEFk ZGVkIGVycm5vID0gMCArIGVycm5vIGNoZWNrIGZvciBzdHJ0b3VsKCkgaW4gY2FzZSAzNC4NCj4g ICAgLSBGaXhlZCB1c2FnZSB0ZXh0OiAiU2V0IERIQ1Agb3B0aW9uIENPREUgdG8gVkFMIi4NCj4g ICAgLSBJbXByb3ZlZCBtYW4gcGFnZTogYWRkZWQgZm9ybWF0IGRlc2NyaXB0aW9uIGFuZCBleGFt cGxlcw0KPiANCj4gdjM6DQo+ICAgIC0gUmVwbGFjZWQgREhDUF9PUFRfSU5URUdFUiB3aXRoIHNl cGFyYXRlIERIQ1BfT1BUX0lOVDgvSU5UMTYvSU5UMzINCj4gICAgICBlbnVtcywgcmVtb3ZlZCBk aGNwX29wdF9pbnRfd2lkdGhbXSBhcnJheS4NCj4gICAgLSBTaGFyZWQgbG9naWMgYmV0d2VlbiBE SENQX09QVF9JUFY0IGFuZCBESENQX09QVF9JUFY0X0xJU1Qg4oCUIHBhcnNlDQo+ICAgICAgYm90 aCBhcyBsaXN0LCBlcnJvciBpZiA+MSBpbiBzaW5nbGUgY2FzZS4NCj4gICAgLSBBZGRlZCBlcnJu byA9IDAgYmVmb3JlIHN0cnRvdWwoKSBhbmQgY2hlY2sgYWZ0ZXIuDQo+ICAgIC0gRml4ZWQgcmFu Z2UgY2hlY2s6IDFVTEwgPDwgKHdpZHRoICogOCkgZm9yIGFsbCB3aWR0aHMgaW5jbHVkaW5nDQo+ ICAgICAgd2lkdGg9PTQuDQo+ICAgIC0gc3RybmNweSDihpIgbWVtY3B5IGZvciBESENQX09QVF9T VFIuDQo+ICAgIC0gTW92ZWQgZW51bSB0byBkaGNwLmMgc2luY2Ugbm90IHVzZWQgaW4gb3RoZXIg ZmlsZXMuDQo+ICAgIC0gUmVtb3ZlZCBvcHRpb25zIDU1LCA2MSAoY2xpZW50LW9ubHkpLCAxMTkg KEROUyBjb21wcmVzc2lvbiwgdXNlDQo+ICAgICAgLS1kaGNwLXNlYXJjaCBpbnN0ZWFkKSwgMzMg KElQIHBhaXJzIG5vdCBzdXBwb3J0ZWQpLg0KPiAgICAtIERIQ1BfT1BUX1BBUlNFX0JVRiAxMDI0 IOKGkiBjaGFyIHRtcFsyNTZdLg0KPiAgICAtIFVwZ3JhZGVkIGRoY3BfYWRkX29wdGlvbigpIHRv IGNhbGwgZGhjcF9vcHRfcGFyc2UoKSBhbmQgcG9wdWxhdGUNCj4gICAgICB2YWxbXS9sZW4uDQo+ ICAgIC0gQWxpZ25lZCBhcnJheSBlbnRyaWVzIGZvciByZWFkYWJpbGl0eS4NCj4gICAgLSBBZGRl ZCB0YWIgYWZ0ZXIgQERIQ1BfT1BUX0lQVjRfTElTVDogaW4ga2VybmVsZG9jLg0KPiAgICAtIFJl amVjdCBlbXB0eSB2YWx1ZSBzdHJpbmdzIGJlZm9yZSBwYXJzaW5nDQo+ICAgIC0gUmVqZWN0IGxl YWRpbmcvdHJhaWxpbmcvY29uc2VjdXRpdmUgY29tbWFzIGluIElQIGxpc3QgdmFsdWVzLg0KPiAN Cj4gdjI6DQo+ICAgIC0gUmVwbGFjZWQgc3RydWN0IGxvb2t1cCB0YWJsZSArIGRoY3Bfb3B0X3R5 cGVfbG9va3VwKCkgZnVuY3Rpb24gd2l0aCBmbGF0IGRoY3Bfb3B0X3R5cGVzWzI1Nl0gYXJyYXkg aW5kZXhlZCBieSBjb2RlLg0KPiAgICAtIENvbnNvbGlkYXRlZCBESENQX09QVF9VSU5UOC9VSU5U MTYvVUlOVDMyIGludG8gc2luZ2xlIERIQ1BfT1BUX0lOVEVHRVIgd2l0aCBkaGNwX29wdF9pbnRf d2lkdGhbMjU2XSB0YWJsZS4NCj4gICAgLSBEcm9wcGVkIERIQ1BfT1BUX1JPVVRFUyAvIG9wdGlv biAxMjEgZW50aXJlbHkuDQo+ICAgIC0gQWRkZWQga2VybmVsZG9jIGZvciBlbnVtIGRoY3Bfb3B0 X3R5cGUgdmFsdWVzLg0KPiAgICAtIFJlbW92ZWQgY3VybHkgYnJhY2VzIGZyb20gc3dpdGNoIGNh c2VzLCBkZWNsYXJhdGlvbnMgYmVmb3JlIHN3aXRjaC4NCj4gICAgLSBBZGRlZCBuZXdsaW5lcyBi ZWZvcmUgcmV0dXJuIHN0YXRlbWVudHMuDQo+ICAgIC0gQ2hhbmdlZCBJUCBsaXN0IGRlbGltaXRl ciBmcm9tIHNwYWNlIHRvIGNvbW1hICgtLWRoY3Atb3B0IDYsMS4xLjEuMSw4LjguOC44KS4NCj4g ICAgLSBEZWZpbmVkIERIQ1BfT1BUX1BBUlNFX0JVRiBjb25zdGFudCBmb3IgYmFyZSAxMDI0Lg0K PiAgICAtIEFkZGVkIGxlbiBhbmQgdmFsWzI1NV0gZmllbGRzIHRvIHN0cnVjdCBoZXJlIChtb3Zl ZCBmcm9tIHBhdGNoIDEpLg0KPiAgICAtIEFkZGVkIGtlcm5lbGRvYyBmb3IgQGN1c3RvbV9vcHRz LmxlbiBhbmQgQGN1c3RvbV9vcHRzLnZhbC4NCj4gICAgLSBXaXJlZCBkaGNwX29wdF9wYXJzZSgp IGludG8gY2FzZSAzMiAoLS1kaGNwLWJvb3QpIHRvIHBvcHVsYXRlIHZhbC9sZW4uDQo+IC0tLQ0K PiAgIGNvbmYuYyAgfCAgMjYgKysrKy0NCj4gICBkaGNwLmMgIHwgMzI3ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tDQo+ICAgZGhjcC5oICB8 ICAgMiArDQo+ICAgcGFzc3QuMSB8ICA0MiArKysrKysrKw0KPiAgIDQgZmlsZXMgY2hhbmdlZCwg MzY5IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2Nv bmYuYyBiL2NvbmYuYw0KPiBpbmRleCBmYWYyNjgxLi5lNWYxMTA4IDEwMDY0NA0KPiAtLS0gYS9j b25mLmMNCj4gKysrIGIvY29uZi5jDQo+IEBAIC00Nyw2ICs0Nyw3IEBADQo+ICAgI2luY2x1ZGUg ImxpbmVyZWFkLmgiDQo+ICAgI2luY2x1ZGUgImlzb2xhdGlvbi5oIg0KPiAgICNpbmNsdWRlICJs b2cuaCINCj4gKyNpbmNsdWRlICJkaGNwLmgiDQo+ICAgI2luY2x1ZGUgInZob3N0X3VzZXIuaCIN Cj4gICAjaW5jbHVkZSAiZXBvbGxfY3RsLmgiDQo+ICAgI2luY2x1ZGUgImNvbmYuaCINCj4gQEAg LTYzMiw3ICs2MzMsOCBAQCBzdGF0aWMgdm9pZCB1c2FnZShjb25zdCBjaGFyICpuYW1lLCBGSUxF ICpmLCBpbnQgc3RhdHVzKQ0KPiAgIAkJIiAgLVMsIC0tc2VhcmNoIExJU1QJU3BhY2Utc2VwYXJh dGVkIGxpc3QsIHNlYXJjaCBkb21haW5zXG4iDQo+ICAgCQkiICAgIGEgc2luZ2xlLCBlbXB0eSBv cHRpb24gZGlzYWJsZXMgdGhlIEROUyBzZWFyY2ggbGlzdFxuIg0KPiAgIAkJIiAgLUgsIC0taG9z dG5hbWUgTkFNRSAJSG9zdG5hbWUgdG8gY29uZmlndXJlIGNsaWVudCB3aXRoXG4iDQo+IC0JCSIg IC0tZnFkbiBOQU1FCQlGUUROIHRvIGNvbmZpZ3VyZSBjbGllbnQgd2l0aFxuIik7DQo+ICsJCSIg IC0tZnFkbiBOQU1FCQlGUUROIHRvIGNvbmZpZ3VyZSBjbGllbnQgd2l0aFxuIg0KPiArCQkiICAt LWRoY3Atb3B0IENPREUsVkFMCVNldCBESENQIG9wdGlvbiBDT0RFIHRvIFZBTFxuIik7DQo+ICAg CWlmIChzdHJzdHIobmFtZSwgInBhc3RhIikpDQo+ICAgCQlGUFJJTlRGKGYsICIgICAgZGVmYXVs dDogZG9uJ3QgdXNlIGFueSBzZWFyY2ggbGlzdFxuIik7DQo+ICAgCWVsc2UNCj4gQEAgLTg2MCw2 ICs4NjIsOSBAQCBzdGF0aWMgdm9pZCBjb25mX3ByaW50KGNvbnN0IHN0cnVjdCBjdHggKmMpDQo+ ICAgCQkJaW5mbygiICAgIHJvdXRlcjogJXMiLA0KPiAgIAkJCSAgICAgaW5ldF9udG9wKEFGX0lO RVQsICZjLT5pcDQuZ3Vlc3RfZ3csDQo+ICAgCQkJCSAgICAgICBidWYsIHNpemVvZihidWYpKSk7 DQo+ICsJCQlmb3IgKGkgPSAxOyBpIDwgMjU1OyBpKyspDQo+ICsJCQkJaWYgKGRoY3Bfb3B0X3Rv X3N0cihpLCBidWYsIHNpemVvZihidWYpKSkNCj4gKwkJCQkJaW5mbygiICAgIG9wdGlvbiAldTog JXMiLCBpLCBidWYpOw0KPiAgIAkJfQ0KPiAgIA0KPiAgIAkJZm9yIChpID0gMDsgaSA8IEFSUkFZ X1NJWkUoYy0+aXA0LmRucyk7IGkrKykgew0KPiBAQCAtMTM0OCw2ICsxMzUzLDcgQEAgdm9pZCBj b25mKHN0cnVjdCBjdHggKmMsIGludCBhcmdjLCBjaGFyICoqYXJndikNCj4gICAJCXsic3RhdHMi LCByZXF1aXJlZF9hcmd1bWVudCwJCU5VTEwsCQkzMSB9LA0KPiAgIAkJeyJjb25mLXBhdGgiLAly ZXF1aXJlZF9hcmd1bWVudCwJTlVMTCwJCSdjJyB9LA0KPiAgIAkJeyJjaHJvb3QtZmFsbGJhY2si LCBub19hcmd1bWVudCwJTlVMTCwgCQkzMiB9LA0KPiArCQl7ImRoY3Atb3B0IiwgcmVxdWlyZWRf YXJndW1lbnQsCQlOVUxMLAkJMzQgfSwNCj4gICAJCXsgMCB9LA0KPiAgIAl9Ow0KPiAgIAljb25z dCBjaGFyICpvcHRzdHJpbmcgPSAiK2RxZmVsOmhzOmM6RjpJOnA6UDptOmE6bjpNOmc6aTpvOkQ6 UzpIOjQ2MXQ6dTpUOlU6IjsNCj4gQEAgLTE1ODksNiArMTU5NSwyNCBAQCB2b2lkIGNvbmYoc3Ry dWN0IGN0eCAqYywgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KPiAgIAkJY2FzZSAzMjoNCj4gICAJ CQljLT5jaHJvb3RfZmFsbGJhY2sgPSB0cnVlOw0KPiAgIAkJCWJyZWFrOw0KPiArCQljYXNlIDM0 OiB7DQo+ICsJCQl1bnNpZ25lZCBsb25nIG9wdGNvZGU7DQo+ICsNCj4gKwkJCXAgPSBvcHRhcmc7 DQo+ICsNCj4gKwkJCWlmICghcGFyc2VfdW5zaWduZWQoJnAsIDAsICZvcHRjb2RlKSB8fA0KPiAr CQkJICAgICFwYXJzZV9saXRlcmFsKCZwLCAiLCIpKSB7DQo+ICsJCQkJZGllKCItLWRoY3Atb3B0 IHJlcXVpcmVzIENPREUsVkFMVUUgZm9ybWF0Iik7DQo+ICsJCQl9DQo+ICsNCj4gKwkJCWlmIChv cHRjb2RlIDwgMSB8fCBvcHRjb2RlID4gMjU0KSB7DQo+ICsJCQkJZGllKCJESENQIG9wdGlvbiBj b2RlIG11c3QgYmUgMS0yNTQ6ICVzIiwNCj4gKwkJCQkgICAgb3B0YXJnKTsNCj4gKwkJCX0NCj4g Kw0KPiArCQkJZGhjcF9zZXRfb3B0KG9wdGNvZGUsIHApOw0KPiArCQkJYnJlYWs7DQo+ICsJCX0N Cj4gICAJCWNhc2UgJ2QnOg0KPiAgIAkJCWMtPmRlYnVnID0gMTsNCj4gICAJCQljLT5xdWlldCA9 IDA7DQo+IGRpZmYgLS1naXQgYS9kaGNwLmMgYi9kaGNwLmMNCj4gaW5kZXggMDJjNzc0NC4uNDNj ZTEzMyAxMDA2NDQNCj4gLS0tIGEvZGhjcC5jDQo+ICsrKyBiL2RoY3AuYw0KPiBAQCAtMjMsNiAr MjMsNyBAQA0KPiAgICNpbmNsdWRlIDx1bmlzdGQuaD4NCj4gICAjaW5jbHVkZSA8c3RyaW5nLmg+ DQo+ICAgI2luY2x1ZGUgPGxpbWl0cy5oPg0KPiArI2luY2x1ZGUgPGVycm5vLmg+DQo+ICAgDQo+ ICAgI2luY2x1ZGUgInV0aWwuaCINCj4gICAjaW5jbHVkZSAiaXAuaCINCj4gQEAgLTMyLDE1ICsz MywxOCBAQA0KPiAgICNpbmNsdWRlICJ0YXAuaCINCj4gICAjaW5jbHVkZSAibG9nLmgiDQo+ICAg I2luY2x1ZGUgImRoY3AuaCINCj4gKyNpbmNsdWRlICJwYXJzZS5oIg0KPiAgIA0KPiAgIC8qKg0K PiAgICAqIGVudW0gb3B0X3N0YXRlIC0gREhDUCBvcHRpb24gc3RhdGUNCj4gICAgKiBAT1BUX1VO U0VUOgkJT3B0aW9uIG5vdCBjb25maWd1cmVkDQo+ICAgICogQE9QVF9ERUZBVUxUOglPcHRpb24g ZGVyaXZlZCBmcm9tIGhvc3QgY29uZmlndXJhdGlvbg0KPiArICogQE9QVF9VU0VSOgkJT3B0aW9u IHNldCB2aWEgLS1kaGNwLW9wdCBjb21tYW5kIGxpbmUNCj4gICAgKi8NCj4gICBlbnVtIG9wdF9z dGF0ZSB7DQo+ICAgCU9QVF9VTlNFVCA9IDAsDQo+ICAgCU9QVF9ERUZBVUxULA0KPiArCU9QVF9V U0VSLA0KPiAgIH07DQo+ICAgDQo+ICAgLyoqDQo+IEBAIC01MCw3ICs1NCw3IEBAIGVudW0gb3B0 X3N0YXRlIHsNCj4gICAgKiBAczoJCU9wdGlvbiBwYXlsb2FkIGZyb20gc2VydmVyDQo+ICAgICog QGNsZW46CUxlbmd0aCBvZiBvcHRpb24gcmVjZWl2ZWQgZnJvbSBjbGllbnQsIC0xIGlmIG5vdCBy ZWNlaXZlZA0KPiAgICAqIEBjOgkJT3B0aW9uIHBheWxvYWQgZnJvbSBjbGllbnQNCj4gLSAqIEBz dGF0ZToJT3B0aW9uIHN0YXRlICh1bnNldCBvciBkZWZhdWx0KQ0KPiArICogQHN0YXRlOglPcHRp b24gc3RhdGUgKHVuc2V0LCBkZWZhdWx0LCBvciB1c2VyKQ0KPiAgICAqLw0KPiAgIHN0cnVjdCBv cHQgew0KPiAgIAlpbnQgc2VudDsNCj4gQEAgLTg1LDE3ICs4OSwyNCBAQCBzdGF0aWMgc3RydWN0 IG9wdCBvcHRzWzI1Nl07DQo+ICAgICovDQo+ICAgdm9pZCBkaGNwX2luaXQodm9pZCkNCj4gICB7 DQo+IC0JLyogTWFzayAqLw0KPiAtCW9wdHNbMV0gID0gKHN0cnVjdCBvcHQpIHsgMCwgNCwgeyAg MCB9LCAwLCB7IDAgfSwgT1BUX0RFRkFVTFQsIH07DQo+IC0JLyogUm91dGVyICovDQo+IC0Jb3B0 c1szXSAgPSAoc3RydWN0IG9wdCkgeyAwLCA0LCB7ICAwIH0sIDAsIHsgMCB9LCBPUFRfREVGQVVM VCwgfTsNCj4gLQkvKiBMZWFzZSB0aW1lICovDQo+IC0Jb3B0c1s1MV0gPSAoc3RydWN0IG9wdCkg eyAwLCA0LCB7IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYgfSwNCj4gLQkJCQkJCSAgICAgICAwLCB7 IDAgfSwgT1BUX0RFRkFVTFQgfTsNCj4gKwlpbnQgaTsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKG9wdHMpOyBpKyspDQo+ICsJCWlmIChvcHRzW2ldLnN0YXRlICE9IE9QVF9V U0VSKQ0KPiArCQkJb3B0c1tpXS5zdGF0ZSA9IE9QVF9VTlNFVDsNCg0KVGhpcyBpcyBkZWFkIGNv ZGUgYXMgc3RhdGUgd2lsbCBiZSBzZXQgYnkgZGVmYXVsdCB0byAwIChPUFRfVU5TRVQpDQoNCj4g Kw0KPiArCWlmIChvcHRzWzFdLnN0YXRlICE9IE9QVF9VU0VSKQkJCS8qIE1hc2sgKi8NCj4gKwkJ b3B0c1sxXSA9IChzdHJ1Y3Qgb3B0KSB7IDAsIDQsIHsgIDAgfSwgMCwgeyAwIH0sIE9QVF9ERUZB VUxUIH07DQo+ICsJaWYgKG9wdHNbM10uc3RhdGUgIT0gT1BUX1VTRVIpCQkJLyogUm91dGVyICov DQo+ICsJCW9wdHNbM10gPSAoc3RydWN0IG9wdCkgeyAwLCA0LCB7ICAwIH0sIDAsIHsgMCB9LCBP UFRfREVGQVVMVCB9Ow0KPiArCWlmIChvcHRzWzUxXS5zdGF0ZSAhPSBPUFRfVVNFUikJCQkvKiBM ZWFzZSB0aW1lICovDQo+ICsJCW9wdHNbNTFdID0gKHN0cnVjdCBvcHQpIHsgMCwgNCwgeyAweGZm LCAweGZmLCAweGZmLCAweGZmIH0sDQo+ICsJCQkJCSAgICAgICAwLCB7IDAgfSwgT1BUX0RFRkFV TFQgfTsNCj4gICAJLyogVHlwZSAqLw0KPiAtCW9wdHNbNTNdID0gKHN0cnVjdCBvcHQpIHsgMCwg MSwgeyAgMCB9LCAwLCB7IDAgfSwgT1BUX0RFRkFVTFQsIH07DQo+IC0JLyogU2VydmVyIElEICov DQo+IC0Jb3B0c1s1NF0gPSAoc3RydWN0IG9wdCkgeyAwLCA0LCB7ICAwIH0sIDAsIHsgMCB9LCBP UFRfREVGQVVMVCwgfTsNCj4gKwlvcHRzWzUzXSA9IChzdHJ1Y3Qgb3B0KSB7IDAsIDEsIHsgIDAg fSwgMCwgeyAwIH0sIE9QVF9ERUZBVUxUIH07DQo+ICsJaWYgKG9wdHNbNTRdLnN0YXRlICE9IE9Q VF9VU0VSKQkJCS8qIFNlcnZlciBJRCAqLw0KPiArCQlvcHRzWzU0XSA9IChzdHJ1Y3Qgb3B0KSB7 IDAsIDQsIHsgIDAgfSwgMCwgeyAwIH0sDQo+ICsJCQkJCQkJT1BUX0RFRkFVTFQgfTsNCj4gICB9 DQo+ICAgDQo+ICAgLyoqDQo+IEBAIC0xNDAsNiArMTUxLDI1OCBAQCBzdHJ1Y3QgbXNnIHsNCj4g ICAJdWludDhfdCBvW09QVF9NQVggKyAxIC8qIEVuZCBvcHRpb24gKi8gXTsNCj4gICB9IF9fYXR0 cmlidXRlX18oKF9fcGFja2VkX18pKTsNCj4gICANCj4gKy8qKg0KPiArICogZW51bSBkaGNwX29w dF90eXBlIC0gREhDUCBvcHRpb24gdmFsdWUgdHlwZXMgcGVyIFJGQyAyMTMyDQo+ICsgKiBAREhD UF9PUFRfTk9ORToJVW5zdXBwb3J0ZWQgb3IgdW5rbm93biBvcHRpb24NCj4gKyAqIEBESENQX09Q VF9TVFI6CVZhcmlhYmxlLWxlbmd0aCBzdHJpbmcNCj4gKyAqIEBESENQX09QVF9JUFY0OglTaW5n bGUgSVB2NCBhZGRyZXNzDQo+ICsgKiBAREhDUF9PUFRfSVBWNF9MSVNUOglNdWx0aXBsZSBJUHY0 IGFkZHJlc3NlcywgY29tbWEtc2VwYXJhdGVkDQo+ICsgKiBAREhDUF9PUFRfVUlOVDg6CVVuc2ln bmVkIDgtYml0IGludGVnZXINCj4gKyAqIEBESENQX09QVF9VSU5UMTY6CVVuc2lnbmVkIDE2LWJp dCBpbnRlZ2VyDQo+ICsgKiBAREhDUF9PUFRfVUlOVDMyOglVbnNpZ25lZCAzMi1iaXQgaW50ZWdl cg0KPiArICogQERIQ1BfT1BUX0lOVDMyOglTaWduZWQgMzItYml0IGludGVnZXINCj4gKyAqLw0K PiArZW51bSBkaGNwX29wdF90eXBlIHsNCj4gKwlESENQX09QVF9OT05FLA0KPiArCURIQ1BfT1BU X1NUUiwNCj4gKwlESENQX09QVF9JUFY0LA0KPiArCURIQ1BfT1BUX0lQVjRfTElTVCwNCj4gKwlE SENQX09QVF9VSU5UOCwNCj4gKwlESENQX09QVF9VSU5UMTYsDQo+ICsJREhDUF9PUFRfVUlOVDMy LA0KPiArCURIQ1BfT1BUX0lOVDMyLA0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBkaGNwX29w dF90eXBlcyAtIE1hcHMgb3B0aW9uIGNvZGUgdG8gUkZDIDIxMzIgdmFsdWUgdHlwZSwgaW5kZXhl ZCBieSBjb2RlDQo+ICsgKi8NCj4gK3N0YXRpYyBjb25zdCBlbnVtIGRoY3Bfb3B0X3R5cGUgZGhj cF9vcHRfdHlwZXNbXSA9IHsNCj4gKwlbMV0gICA9IERIQ1BfT1BUX0lQVjQsCQkvKiBTdWJuZXQg TWFzayAqLw0KPiArCVsyXSAgID0gREhDUF9PUFRfSU5UMzIsCQkvKiBUaW1lIE9mZnNldCAqLw0K PiArCVszXSAgID0gREhDUF9PUFRfSVBWNF9MSVNULAkvKiBSb3V0ZXIgKi8NCj4gKwlbNF0gICA9 IERIQ1BfT1BUX0lQVjRfTElTVCwJLyogVGltZSBTZXJ2ZXIgKi8NCj4gKwlbNV0gICA9IERIQ1Bf T1BUX0lQVjRfTElTVCwJLyogTmFtZSBTZXJ2ZXIgKi8NCj4gKwlbNl0gICA9IERIQ1BfT1BUX0lQ VjRfTElTVCwJLyogRG9tYWluIE5hbWUgU2VydmVyICovDQo+ICsJWzddICAgPSBESENQX09QVF9J UFY0X0xJU1QsCS8qIExvZyBTZXJ2ZXIgKi8NCj4gKwlbOF0gICA9IERIQ1BfT1BUX0lQVjRfTElT VCwJLyogQ29va2llIFNlcnZlciAqLw0KPiArCVs5XSAgID0gREhDUF9PUFRfSVBWNF9MSVNULAkv KiBMUFIgU2VydmVyICovDQo+ICsJWzEwXSAgPSBESENQX09QVF9JUFY0X0xJU1QsCS8qIEltcHJl c3MgU2VydmVyICovDQo+ICsJWzExXSAgPSBESENQX09QVF9JUFY0X0xJU1QsCS8qIFJlc291cmNl IExvY2F0aW9uIFNlcnZlciAqLw0KPiArCVsxMl0gID0gREhDUF9PUFRfU1RSLAkJLyogSG9zdCBO YW1lICovDQo+ICsJWzEzXSAgPSBESENQX09QVF9VSU5UMTYsCS8qIEJvb3QgRmlsZSBTaXplICov DQo+ICsJWzE1XSAgPSBESENQX09QVF9TVFIsCQkvKiBEb21haW4gTmFtZSAqLw0KPiArCVsxNl0g ID0gREhDUF9PUFRfSVBWNCwJCS8qIFN3YXAgU2VydmVyICovDQo+ICsJWzE3XSAgPSBESENQX09Q VF9TVFIsCQkvKiBSb290IFBhdGggKi8NCj4gKwlbMTldICA9IERIQ1BfT1BUX1VJTlQ4LAkJLyog SVAgRm9yd2FyZGluZyAqLw0KPiArCVsyM10gID0gREhDUF9PUFRfVUlOVDgsCQkvKiBEZWZhdWx0 IElQIFRUTCAqLw0KPiArCVsyNl0gID0gREhDUF9PUFRfVUlOVDE2LAkvKiBJbnRlcmZhY2UgTVRV ICovDQo+ICsJWzI4XSAgPSBESENQX09QVF9JUFY0LAkJLyogQnJvYWRjYXN0IEFkZHJlc3MgKi8N Cj4gKwlbMzddICA9IERIQ1BfT1BUX1VJTlQ4LAkJLyogVENQIERlZmF1bHQgVFRMICovDQo+ICsJ WzM4XSAgPSBESENQX09QVF9VSU5UMzIsCS8qIFRDUCBLZWVwYWxpdmUgSW50ZXJ2YWwgKi8NCj4g KwlbNDBdICA9IERIQ1BfT1BUX1NUUiwJCS8qIE5JUyBEb21haW4gTmFtZSAqLw0KPiArCVs0MV0g ID0gREhDUF9PUFRfSVBWNF9MSVNULAkvKiBOSVMgU2VydmVycyAqLw0KPiArCVs0Ml0gID0gREhD UF9PUFRfSVBWNF9MSVNULAkvKiBOVFAgU2VydmVycyAqLw0KPiArCVs0NF0gID0gREhDUF9PUFRf SVBWNF9MSVNULAkvKiBOZXRCSU9TIE5hbWUgU2VydmVyICovDQo+ICsJWzUwXSAgPSBESENQX09Q VF9JUFY0LAkJLyogUmVxdWVzdGVkIElQIEFkZHJlc3MgKi8NCg0KT3B0aW9uIDUwIGlzIGNsaWVu dCBvbmx5Lg0KIlRoaXMgb3B0aW9uIGlzIHVzZWQgaW4gYSBjbGllbnQgcmVxdWVzdCAoREhDUERJ U0NPVkVSKSINCg0KPiArCVs1MV0gID0gREhDUF9PUFRfVUlOVDMyLAkvKiBJUCBBZGRyZXNzIExl YXNlIFRpbWUgKi8NCj4gKwlbNTRdICA9IERIQ1BfT1BUX0lQVjQsCQkvKiBTZXJ2ZXIgSWRlbnRp ZmllciAqLw0KPiArCVs1N10gID0gREhDUF9PUFRfVUlOVDE2LAkvKiBNYXggREhDUCBNZXNzYWdl IFNpemUgKi8NCg0KT3B0aW9uIDU3IGlzIGNsaWVudCBvbmx5IChTZWUgUkZDIDIzMSBUYWJsZSAz KQ0KDQpUYWJsZSAzOiAgRmllbGRzIGFuZCBvcHRpb25zIHVzZWQgYnkgREhDUCBzZXJ2ZXJzDQpP cHRpb24gICAgICAgICAgICAgICAgICAgIERIQ1BPRkZFUiAgICBESENQQUNLICAgICAgICAgICAg REhDUE5BSw0KLS0tLS0tICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0gICAgLS0tLS0tLSAg ICAgICAgICAgIC0tLS0tLS0NClJlcXVlc3RlZCBJUCBhZGRyZXNzICAgICAgTVVTVCBOT1QgICAg IE1VU1QgTk9UICAgICAgICAgICBNVVNUIE5PVA0KLi4uDQpNYXhpbXVtIG1lc3NhZ2Ugc2l6ZSAg ICAgIE1VU1QgTk9UICAgICBNVVNUIE5PVCAgICAgICAgICAgTVVTVCBOT1QNCj4gKwlbNThdICA9 IERIQ1BfT1BUX1VJTlQzMiwJLyogUmVuZXdhbCAoVDEpIFRpbWUgKi8NCj4gKwlbNTldICA9IERI Q1BfT1BUX1VJTlQzMiwJLyogUmViaW5kaW5nIChUMikgVGltZSAqLw0KPiArCVs2MF0gID0gREhD UF9PUFRfU1RSLAkJLyogVmVuZG9yIENsYXNzIElkZW50aWZpZXIgKi8NCj4gKwlbNjZdICA9IERI Q1BfT1BUX1NUUiwJCS8qIFRGVFAgU2VydmVyIE5hbWUgKi8NCj4gKwlbNjddICA9IERIQ1BfT1BU X1NUUiwJCS8qIEJvb3RmaWxlIE5hbWUgKi8NCj4gKwlbMjUyXSA9IERIQ1BfT1BUX1NUUiwJCS8q IFdQQUQgVVJMICovDQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIGRoY3Bfb3B0X3BhcnNlKCkg LSBQYXJzZSBhIERIQ1Agb3B0aW9uIHZhbHVlDQo+ICsgKiBAY29kZToJREhDUCBvcHRpb24gY29k ZQ0KPiArICogQHN0cjoJVmFsdWUgc3RyaW5nIGZyb20gY29tbWFuZCBsaW5lDQo+ICsgKiBAYnVm OglPdXRwdXQgYnVmZmVyIGZvciBiaW5hcnkgdmFsdWUNCj4gKyAqIEBidWZfbGVuOglTaXplIG9m IG91dHB1dCBidWZmZXINCj4gKyAqDQo+ICsgKiBSZXR1cm46IG51bWJlciBvZiBieXRlcyB3cml0 dGVuIHRvIEBidWYsIG9yIC0xIG9uIGVycm9yDQo+ICsgKi8NCj4gK3N0YXRpYyBpbnQgZGhjcF9v cHRfcGFyc2UodWludDhfdCBjb2RlLCBjb25zdCBjaGFyICpzdHIsDQo+ICsJCQkgIHVpbnQ4X3Qg KmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4pDQo+ICt7DQo+ICsJZW51bSBkaGNwX29wdF90eXBlIHR5cGU7 DQo+ICsJdW5zaWduZWQgbG9uZyB2YWw7DQo+ICsJdWludDhfdCB3aWR0aDsNCj4gKwlzaXplX3Qg c2xlbjsNCj4gKwlzaXplX3QgbGVuOw0KPiArCWNoYXIgKmVuZDsNCj4gKw0KPiArCWlmIChjb2Rl ID49IEFSUkFZX1NJWkUoZGhjcF9vcHRfdHlwZXMpKQ0KPiArCQlyZXR1cm4gLTE7DQo+ICsNCj4g Kwl0eXBlID0gZGhjcF9vcHRfdHlwZXNbY29kZV07DQo+ICsNCj4gKwlpZiAoISpzdHIpDQo+ICsJ CXJldHVybiAtMTsNCj4gKw0KPiArCXN3aXRjaCAodHlwZSkgew0KPiArCWNhc2UgREhDUF9PUFRf Tk9ORToNCj4gKwkJcmV0dXJuIC0xOw0KPiArCWNhc2UgREhDUF9PUFRfSVBWNDoNCj4gKwljYXNl IERIQ1BfT1BUX0lQVjRfTElTVDoNCj4gKwkJbGVuID0gMDsNCj4gKw0KPiArCQlkbyB7DQo+ICsJ CQlpZiAobGVuICsgc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSA+IGJ1Zl9sZW4pDQo+ICsJCQkJcmV0 dXJuIC0xOw0KPiArDQo+ICsJCQlpZiAoIXBhcnNlX2lwdjQoJnN0ciwNCj4gKwkJCQkJKHN0cnVj dCBpbl9hZGRyICopKGJ1ZiArIGxlbikpKQ0KPiArCQkJCXJldHVybiAtMTsNCj4gKw0KPiArCQkJ bGVuICs9IHNpemVvZihzdHJ1Y3QgaW5fYWRkcik7DQo+ICsNCj4gKwkJCWlmICh0eXBlID09IERI Q1BfT1BUX0lQVjQpDQo+ICsJCQkJYnJlYWs7DQo+ICsJCX0gd2hpbGUgKHBhcnNlX2xpdGVyYWwo JnN0ciwgIiwiKSk7DQo+ICsNCj4gKwkJaWYgKCFsZW4gfHwgIXBhcnNlX2VvaShzdHIpKQ0KPiAr CQkJcmV0dXJuIC0xOw0KPiArDQo+ICsJCXJldHVybiBsZW47DQo+ICsJY2FzZSBESENQX09QVF9V SU5UODoNCj4gKwljYXNlIERIQ1BfT1BUX1VJTlQxNjoNCj4gKwljYXNlIERIQ1BfT1BUX1VJTlQz MjoNCj4gKwljYXNlIERIQ1BfT1BUX0lOVDMyOg0KPiArCQlpZiAodHlwZSA9PSBESENQX09QVF9V SU5UOCkNCj4gKwkJCXdpZHRoID0gMTsNCj4gKwkJZWxzZSBpZiAodHlwZSA9PSBESENQX09QVF9V SU5UMTYpDQo+ICsJCQl3aWR0aCA9IDI7DQo+ICsJCWVsc2UNCj4gKwkJCXdpZHRoID0gNDsNCj4g Kw0KPiArCQlpZiAoYnVmX2xlbiA8IHdpZHRoKQ0KPiArCQkJcmV0dXJuIC0xOw0KPiArDQo+ICsJ CWVycm5vID0gMDsNCj4gKwkJaWYgKHR5cGUgPT0gREhDUF9PUFRfSU5UMzIpIHsNCj4gKwkJCWxv bmcgc3ZhbDsNCj4gKw0KPiArCQkJc3ZhbCA9IHN0cnRvbChzdHIsICZlbmQsIDApOw0KPiArCQkJ aWYgKCplbmQgfHwgZXJybm8gfHwNCj4gKwkJCSAgICBzdmFsIDwgSU5UMzJfTUlOIHx8IHN2YWwg PiBJTlQzMl9NQVgpDQo+ICsJCQkJcmV0dXJuIC0xOw0KPiArCQkJdmFsID0gKHVpbnQzMl90KXN2 YWw7DQo+ICsJCX0gZWxzZSB7DQo+ICsJCQl2YWwgPSBzdHJ0b3VsKHN0ciwgJmVuZCwgMCk7DQo+ ICsJCQlpZiAoKmVuZCB8fCBlcnJubyB8fA0KPiArCQkJICAgIHZhbCA+PSAoMVVMTCA8PCAod2lk dGggKiA4KSkpDQo+ICsJCQkJcmV0dXJuIC0xOw0KPiArCQl9DQoNCmFzIGZvciBESENQVjZfT1BU LCB5b3Ugc2hvdWxkIHVzZSBwYXJzZV91bnNpZ25lZCgpDQoNCj4gKw0KPiArCQlpZiAodHlwZSA9 PSBESENQX09QVF9VSU5UMTYpDQo+ICsJCQkqKHVpbnQxNl90ICopYnVmID0gaHRvbnModmFsKTsN Cj4gKwkJZWxzZSBpZiAodHlwZSA9PSBESENQX09QVF9VSU5UMzIgfHwNCj4gKwkJCSB0eXBlID09 IERIQ1BfT1BUX0lOVDMyKQ0KPiArCQkJKih1aW50MzJfdCAqKWJ1ZiA9IGh0b25sKHZhbCk7DQoN CkFsaWdubWVudCBpc3N1ZSwgdXNlIHRlbXBvcmFyeSB2YXJpYWJsZSBhbmQgdGhlbiBtZW1jcHko KQ0KDQo+ICsJCWVsc2UNCj4gKwkJCWJ1ZlswXSA9IHZhbDsNCj4gKw0KPiArCQlyZXR1cm4gd2lk dGg7DQo+ICsJY2FzZSBESENQX09QVF9TVFI6DQo+ICsJCXNsZW4gPSBzdHJsZW4oc3RyKTsNCj4g Kw0KPiArCQlpZiAoc2xlbiA+PSBidWZfbGVuKQ0KDQpJdCBzaG91bGQgYmUgc2xlbiA+IGJ1Zl9s ZW4gYXMgaXQncyBub3QgbnVsIHRlcm1pbmF0ZWQuDQoNCj4gKwkJCXJldHVybiAtMTsNCj4gKw0K PiArCQltZW1jcHkoYnVmLCBzdHIsIHNsZW4pOw0KPiArDQo+ICsJCXJldHVybiBzbGVuOw0KPiAr CX0NCj4gKw0KPiArCXJldHVybiAtMTsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgKiBkaGNwX3Nl dF9vcHQoKSAtIFBhcnNlIGFuZCBzdG9yZSBhIHVzZXItc3BlY2lmaWVkIERIQ1Agb3B0aW9uDQo+ ICsgKiBAY29kZToJREhDUCBvcHRpb24gY29kZQ0KPiArICogQHZhbF9zdHI6CVZhbHVlIHN0cmlu ZyBmcm9tIGNvbW1hbmQgbGluZQ0KPiArICovDQo+ICt2b2lkIGRoY3Bfc2V0X29wdCh1aW50OF90 IGNvZGUsIGNvbnN0IGNoYXIgKnZhbF9zdHIpDQo+ICt7DQo+ICsJaW50IHJldDsNCj4gKw0KPiAr CXJldCA9IGRoY3Bfb3B0X3BhcnNlKGNvZGUsIHZhbF9zdHIsIG9wdHNbY29kZV0ucywgc2l6ZW9m KG9wdHNbY29kZV0ucykpOw0KPiArCWlmIChyZXQgPCAwKQ0KPiArCQlkaWUoIkludmFsaWQgdmFs dWUgZm9yIERIQ1Agb3B0aW9uICV1OiAlcyIsIGNvZGUsIHZhbF9zdHIpOw0KPiArDQo+ICsJb3B0 c1tjb2RlXS5zbGVuID0gcmV0Ow0KPiArCW9wdHNbY29kZV0uc3RhdGUgPSBPUFRfVVNFUjsNCj4g K30NCj4gKw0KPiArLyoqDQo+ICsgKiBkaGNwX29wdF90b19zdHIoKSAtIFJlbmRlciBhIGJpbmFy eSBESENQIG9wdGlvbiB2YWx1ZSB0byBhIHByaW50YWJsZSBzdHJpbmcNCj4gKyAqIEBjb2RlOglE SENQIG9wdGlvbiBjb2RlDQo+ICsgKiBAYnVmOglPdXRwdXQgc3RyaW5nIGJ1ZmZlcg0KPiArICog QGJ1Zl9sZW46CVNpemUgb2Ygb3V0cHV0IGJ1ZmZlcg0KPiArICoNCj4gKyAqIFJldHVybjogcG9p bnRlciB0byBAYnVmIGlmIG9wdGlvbiBpcyBzZXQsIE5VTEwgb3RoZXJ3aXNlDQo+ICsgKi8NCj4g K2NvbnN0IGNoYXIgKmRoY3Bfb3B0X3RvX3N0cih1aW50OF90IGNvZGUsIGNoYXIgKmJ1Ziwgc2l6 ZV90IGJ1Zl9sZW4pDQo+ICt7DQo+ICsJZW51bSBkaGNwX29wdF90eXBlIHR5cGU7DQo+ICsJdW5z aWduZWQgaW50IGk7DQo+ICsJaW50IG9mZiA9IDA7DQo+ICsNCj4gKwlpZiAob3B0c1tjb2RlXS5z dGF0ZSA9PSBPUFRfVU5TRVQpDQo+ICsJCXJldHVybiBOVUxMOw0KPiArDQo+ICsJYXNzZXJ0KGNv ZGUgPCBBUlJBWV9TSVpFKGRoY3Bfb3B0X3R5cGVzKSk7DQo+ICsNCj4gKwl0eXBlID0gZGhjcF9v cHRfdHlwZXNbY29kZV07DQo+ICsNCj4gKwlzd2l0Y2ggKHR5cGUpIHsNCj4gKwljYXNlIERIQ1Bf T1BUX0lQVjQ6DQo+ICsJY2FzZSBESENQX09QVF9JUFY0X0xJU1Q6DQo+ICsJCWZvciAoaSA9IDA7 IGkgKyBzaXplb2Yoc3RydWN0IGluX2FkZHIpIDw9ICh1bnNpZ25lZCBpbnQpb3B0c1tjb2RlXS5z bGVuOw0KPiArCQkgICAgIGkgKz0gc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSkgew0KPiArCQkJaWYg KG9mZikNCj4gKwkJCQlvZmYgKz0gc25wcmludGYoYnVmICsgb2ZmLCBidWZfbGVuIC0gb2ZmLCAi LCIpOw0KPiArCQkJaW5ldF9udG9wKEFGX0lORVQsIG9wdHNbY29kZV0ucyArIGksDQo+ICsJCQkJ ICBidWYgKyBvZmYsIGJ1Zl9sZW4gLSBvZmYpOw0KDQpTYW1lIGNvbW1lbnQgYXMgZm9yIERIQ1B2 NiwgY2hlY2sgaW5ldF9udG9wKCkgcmV0dXJuIHZhbHVlIChhbmQgeW91IGNhbiBhdm9pZCBzbnBy aW50ZigpKQ0KDQo+ICsJCQlvZmYgPSBzdHJsZW4oYnVmKTsNCj4gKwkJfQ0KPiArCQlyZXR1cm4g YnVmOw0KPiArCWNhc2UgREhDUF9PUFRfVUlOVDg6DQo+ICsJY2FzZSBESENQX09QVF9VSU5UMTY6 DQo+ICsJY2FzZSBESENQX09QVF9VSU5UMzI6IHsNCj4gKwkJdW5zaWduZWQgdmFsID0gMDsNCj4g KwkJaW50IGo7DQo+ICsNCj4gKwkJZm9yIChqID0gMDsgaiA8IG9wdHNbY29kZV0uc2xlbjsgaisr KQ0KPiArCQkJdmFsID0gKHZhbCA8PCA4KSB8IG9wdHNbY29kZV0uc1tqXTsNCg0KV2h5IGRvbid0 IHdlIHVzZSBudG9ocygpIGFuZCBudG9obCgpPw0KVG8gYmUgc3VyZSBzbGVuIGlzIGNvcnJlY3Rs eSBoYW5kbGVkPw0KDQo+ICsNCj4gKwkJaWYgKHNucHJpbnRmKGJ1ZiwgYnVmX2xlbiwgIiV1Iiwg dmFsKSA+PSAoaW50KWJ1Zl9sZW4pDQo+ICsJCQlyZXR1cm4gTlVMTDsNCj4gKwkJcmV0dXJuIGJ1 ZjsNCj4gKwl9DQo+ICsJY2FzZSBESENQX09QVF9JTlQzMjogew0KPiArCQlpbnQgdmFsID0gMDsN Cj4gKwkJaW50IGo7DQo+ICsNCj4gKwkJZm9yIChqID0gMDsgaiA8IG9wdHNbY29kZV0uc2xlbjsg aisrKQ0KPiArCQkJdmFsID0gKHZhbCA8PCA4KSB8IG9wdHNbY29kZV0uc1tqXTsNCg0Kd2VsbCBz bGVuIHNob3VsZCA0IGhlcmUgYXMgdHlwZSBpcyBpcyBESENQX09QVF9JTlQzMiwgcGVyaGFwcyB3 ZSBjYW4gdXNlIG50b2hsKCk/DQooYW5kIGNoZWNrIHNsZW4gPT0gNCkuDQoNCj4gKw0KPiArCQlp ZiAoc25wcmludGYoYnVmLCBidWZfbGVuLCAiJWQiLCB2YWwpID49IChpbnQpYnVmX2xlbikNCj4g KwkJCXJldHVybiBOVUxMOyAgICA+ICsJCXJldHVybiBidWY7DQo+ICsJfQ0KPiArCWNhc2UgREhD UF9PUFRfU1RSOg0KPiArCQkodm9pZClzbnByaW50ZihidWYsIGJ1Zl9sZW4sICIlLipzIiwNCj4g KwkJCSAgICAgICBvcHRzW2NvZGVdLnNsZW4sIG9wdHNbY29kZV0ucyk7DQo+ICsJCXJldHVybiBi dWY7DQo+ICsJZGVmYXVsdDoNCj4gKwkJYXNzZXJ0KDApOw0KPiArCX0NCj4gK30NCj4gKw0KPiAg IC8qKg0KPiAgICAqIGZpbGxfb25lKCkgLSBGaWxsIGEgc2luZ2xlIG9wdGlvbiBpbnRvIGEgYnVm ZmVyDQo+ICAgICogQGJ1ZjoJQnVmZmVyIHRvIHdyaXRlIG9wdGlvbg0KPiBAQCAtNDc0LDE0ICs3 MzcsMjAgQEAgaW50IGRoY3AoY29uc3Qgc3RydWN0IGN0eCAqYywgc3RydWN0IGlvdl90YWlsICpk YXRhKQ0KPiAgIAlpbmZvKCIgICAgZnJvbSAlcyIsIGV0aF9udG9wKG0tPmNoYWRkciwgbWFjc3Ry LCBzaXplb2YobWFjc3RyKSkpOw0KPiAgIA0KPiAgIAltYXNrLnNfYWRkciA9IGh0b25sKDB4ZmZm ZmZmZmYgPDwgKDMyIC0gYy0+aXA0LnByZWZpeF9sZW4pKTsNCj4gLQltZW1jcHkob3B0c1sxXS5z LCAgJm1hc2ssICAgICAgICAgICAgICAgIHNpemVvZihtYXNrKSk7DQo+IC0JbWVtY3B5KG9wdHNb M10ucywgICZjLT5pcDQuZ3Vlc3RfZ3csICAgICBzaXplb2YoYy0+aXA0Lmd1ZXN0X2d3KSk7DQo+ IC0JbWVtY3B5KG9wdHNbNTRdLnMsICZjLT5pcDQub3VyX3RhcF9hZGRyLCBzaXplb2YoYy0+aXA0 Lm91cl90YXBfYWRkcikpOw0KPiArCWlmIChvcHRzWzFdLnN0YXRlICE9IE9QVF9VU0VSKQ0KPiAr CQltZW1jcHkob3B0c1sxXS5zLCAmbWFzaywgc2l6ZW9mKG1hc2spKTsNCj4gKwlpZiAob3B0c1sz XS5zdGF0ZSAhPSBPUFRfVVNFUikNCj4gKwkJbWVtY3B5KG9wdHNbM10ucywgJmMtPmlwNC5ndWVz dF9ndywgc2l6ZW9mKGMtPmlwNC5ndWVzdF9ndykpOw0KPiArCWlmIChvcHRzWzU0XS5zdGF0ZSAh PSBPUFRfVVNFUikgew0KPiArCQltZW1jcHkob3B0c1s1NF0ucywgJmMtPmlwNC5vdXJfdGFwX2Fk ZHIsDQo+ICsJCSAgICAgICBzaXplb2YoYy0+aXA0Lm91cl90YXBfYWRkcikpOw0KPiArCX0NCg0K SSB0aGluayBpdCB3b3VsZCBiZSBtb3JlIGV4cGxpY2l0IHRvIGNoZWNrIGZvciBPUFRfREVGQVVM VCBhcyB3ZSBkb24ndCBzZXQgaXQgaW4gDQpvcHRzW10uc3RhdGUgaW4gdGhlIGJvZHkgb2YgdGhl IGNvbmRpdGlvbiBzdGF0ZW1lbnQuDQogID4NCj4gICAJLyogSWYgdGhlIGdhdGV3YXkgaXMgbm90 IG9uIHRoZSBhc3NpZ25lZCBzdWJuZXQsIHNlbmQgYW4gb3B0aW9uIDEyMQ0KPiAgIAkgKiAoQ2xh c3NsZXNzIFN0YXRpYyBSb3V0aW5nKSBhZGRpbmcgYSBkdW1teSByb3V0ZSB0byBpdC4NCj4gICAJ ICovDQo+IC0JaWYgKChjLT5pcDQuYWRkci5zX2FkZHIgJiBtYXNrLnNfYWRkcikNCj4gKwlpZiAo b3B0c1sxMjFdLnN0YXRlICE9IE9QVF9VU0VSICYmDQoNCk9wdGlvbiAxMjHCoGRvZXNuJ3QgZXhp c3QgaW4gZGhjcF9vcHRfdHlwZXNbXSBzbyB1c2VyIGNhbm5vdCBzZXQgaXQgKG5vIG5lZWQgdG8g Y2hlY2sgc3RhdGUpLg0KDQo+ICsJICAgIChjLT5pcDQuYWRkci5zX2FkZHIgJiBtYXNrLnNfYWRk cikNCj4gICAJICAgICE9IChjLT5pcDQuZ3Vlc3RfZ3cuc19hZGRyICYgbWFzay5zX2FkZHIpKSB7 DQo+ICAgCQkvKiBhLmIuYy5kLzMyOjAuMC4wLjAsIDA6YS5iLmMuZCAqLw0KPiAgIAkJb3B0c1sx MjFdLnNsZW4gPSAxNDsNCj4gQEAgLTQ5MywyNyArNzYyLDMxIEBAIGludCBkaGNwKGNvbnN0IHN0 cnVjdCBjdHggKmMsIHN0cnVjdCBpb3ZfdGFpbCAqZGF0YSkNCj4gICAJCSAgICAgICAmYy0+aXA0 Lmd1ZXN0X2d3LCBzaXplb2YoYy0+aXA0Lmd1ZXN0X2d3KSk7DQo+ICAgCX0NCj4gICANCj4gLQlp ZiAoYy0+bXR1KSB7DQo+ICsJaWYgKG9wdHNbMjZdLnN0YXRlICE9IE9QVF9VU0VSICYmIGMtPm10 dSkgew0KPiAgIAkJb3B0c1syNl0uc2xlbiA9IDI7DQo+ICAgCQlvcHRzWzI2XS5zdGF0ZSA9IE9Q VF9ERUZBVUxUOw0KPiAgIAkJb3B0c1syNl0uc1swXSA9IGMtPm10dSAvIDI1NjsNCj4gICAJCW9w dHNbMjZdLnNbMV0gPSBjLT5tdHUgJSAyNTY7DQoNCml0J3MgcHJlLWV4aXN0aW5nLCBidXQgaXQg d291bGQgYmUgY2xlYW5lciB3aXRoOg0KDQogICB1aW50MTZfdCBtdHUgPSBodG9ucyhjLT5tdHUp Ow0KICAgbWVtY3B5KG9wdHNbMjZdLnMsICZtdHUsIHNpemVvZihtdHUpOw0KDQo+ICAgCX0NCj4g ICANCj4gLQlmb3IgKGkgPSAwLCBvcHRzWzZdLnNsZW4gPSAwOw0KPiAtCSAgICAgIWMtPm5vX2Ro Y3BfZG5zICYmIGkgPCBBUlJBWV9TSVpFKGMtPmlwNC5kbnMpOyBpKyspIHsNCj4gLQkJaWYgKElO NF9JU19BRERSX1VOU1BFQ0lGSUVEKCZjLT5pcDQuZG5zW2ldKSkNCj4gLQkJCWJyZWFrOw0KPiAt CQkoKHN0cnVjdCBpbl9hZGRyICopb3B0c1s2XS5zKVtpXSA9IGMtPmlwNC5kbnNbaV07DQo+IC0J CW9wdHNbNl0uc2xlbiArPSBzaXplb2YodWludDMyX3QpOw0KPiArCWlmIChvcHRzWzZdLnN0YXRl ICE9IE9QVF9VU0VSKSB7DQo+ICsJCW9wdHNbNl0uc2xlbiA9IDA7DQo+ICsJCWZvciAoaSA9IDA7 DQo+ICsJCSAgICAgIWMtPm5vX2RoY3BfZG5zICYmIGkgPCBBUlJBWV9TSVpFKGMtPmlwNC5kbnMp Ow0KPiArCQkgICAgIGkrKykgew0KPiArCQkJaWYgKElONF9JU19BRERSX1VOU1BFQ0lGSUVEKCZj LT5pcDQuZG5zW2ldKSkNCj4gKwkJCQlicmVhazsNCj4gKwkJCSgoc3RydWN0IGluX2FkZHIgKilv cHRzWzZdLnMpW2ldID0gYy0+aXA0LmRuc1tpXTsNCj4gKwkJCW9wdHNbNl0uc2xlbiArPSBzaXpl b2YodWludDMyX3QpOw0KPiArCQl9DQo+ICsJCWlmIChvcHRzWzZdLnNsZW4pDQo+ICsJCQlvcHRz WzZdLnN0YXRlID0gT1BUX0RFRkFVTFQ7DQo+ICsJCWVsc2UNCj4gKwkJCW9wdHNbNl0uc3RhdGUg PSBPUFRfVU5TRVQ7DQo+ICAgCX0NCj4gLQlpZiAob3B0c1s2XS5zbGVuKQ0KPiAtCQlvcHRzWzZd LnN0YXRlID0gT1BUX0RFRkFVTFQ7DQo+IC0JZWxzZQ0KPiAtCQlvcHRzWzZdLnN0YXRlID0gT1BU X1VOU0VUOw0KPiAgIA0KPiAgIAlvcHRfbGVuID0gc3RybGVuKGMtPmhvc3RuYW1lKTsNCj4gLQlp ZiAob3B0X2xlbiA+IDApIHsNCj4gKwlpZiAob3B0c1sxMl0uc3RhdGUgIT0gT1BUX1VTRVIgJiYg b3B0X2xlbiA+IDApIHsNCj4gICAJCW9wdHNbMTJdLnNsZW4gPSBvcHRfbGVuOw0KPiAgIAkJb3B0 c1sxMl0uc3RhdGUgPSBPUFRfREVGQVVMVDsNCj4gICAJCW1lbWNweShvcHRzWzEyXS5zLCAmYy0+ aG9zdG5hbWUsIG9wdF9sZW4pOw0KPiBkaWZmIC0tZ2l0IGEvZGhjcC5oIGIvZGhjcC5oDQo+IGlu ZGV4IGNkNTBjOTkuLjgwYWJkYTYgMTAwNjQ0DQo+IC0tLSBhL2RoY3AuaA0KPiArKysgYi9kaGNw LmgNCj4gQEAgLTgsNSArOCw3IEBADQo+ICAgDQo+ICAgaW50IGRoY3AoY29uc3Qgc3RydWN0IGN0 eCAqYywgc3RydWN0IGlvdl90YWlsICpkYXRhKTsNCj4gICB2b2lkIGRoY3BfaW5pdCh2b2lkKTsN Cj4gK3ZvaWQgZGhjcF9zZXRfb3B0KHVpbnQ4X3QgY29kZSwgY29uc3QgY2hhciAqdmFsX3N0cik7 DQo+ICtjb25zdCBjaGFyICpkaGNwX29wdF90b19zdHIodWludDhfdCBjb2RlLCBjaGFyICpidWYs IHNpemVfdCBidWZfbGVuKTsNCj4gICANCj4gICAjZW5kaWYgLyogREhDUF9IICovDQo+IGRpZmYg LS1naXQgYS9wYXNzdC4xIGIvcGFzc3QuMQ0KPiBpbmRleCA1M2UwNzJhLi5iNGE0NGM1IDEwMDY0 NA0KPiAtLS0gYS9wYXNzdC4xDQo+ICsrKyBiL3Bhc3N0LjENCj4gQEAgLTQ0MCw2ICs0NDAsNDgg QEAgU2VuZCBcZkluYW1lXGZSIGFzIERIQ1Agb3B0aW9uIDEyIChob3N0bmFtZSkuDQo+ICAgRlFE TiB0byBjb25maWd1cmUgdGhlIGNsaWVudCB3aXRoLg0KPiAgIFNlbmQgXGZJbmFtZVxmUiBhcyBD bGllbnQgRlFETjogREhDUCBvcHRpb24gODEgYW5kIERIQ1B2NiBvcHRpb24gMzkuDQo+ICAgDQo+ ICsuVFANCj4gKy5CUiBcLVwtZGhjcC1vcHQgIiAiIFxmSUNPREVcZlIsXGZJVkFMVUVcZlINCj4g K1NldCBESENQIG9wdGlvbiBcZklDT0RFXGZSICgxXC0yNTQpIHRvIFxmSVZBTFVFXGZSLiBUaGUg dmFsdWUgZm9ybWF0IGRlcGVuZHMNCj4gK29uIHRoZSBvcHRpb24gdHlwZSBhbmQgaXMgZGV0ZXJt aW5lZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIG9wdGlvbiBjb2RlLg0KPiArTXVsdGlwbGUgSVB2 NCBhZGRyZXNzZXMgYXJlIGNvbW1hLXNlcGFyYXRlZC4NCj4gK1RoaXMgb3B0aW9uIGNhbiBiZSBz cGVjaWZpZWQgbXVsdGlwbGUgdGltZXMuIElmIHRoZSBzYW1lIG9wdGlvbiBjb2RlIGlzDQo+ICtn aXZlbiBtb3JlIHRoYW4gb25jZSwgdGhlIGxhc3QgdmFsdWUgd2lucy4gT3B0aW9ucyBzZXQgd2l0 aA0KPiArXGZCXC1cLWRoY3Atb3B0XGZSIG92ZXJyaWRlIGJ1aWx0LWluIHZhbHVlcy4NCj4gKy5Q UA0KPiArRXhhbXBsZXM6DQo+ICsubmYNCj4gKyAgXC1cLWRoY3Atb3B0IDYsOC44LjguOCw0LjQu NC40DQo+ICsgIFwtXC1kaGNwLW9wdCAxMixteWhvc3RuYW1lDQo+ICsuZmkNCj4gKy5QUA0KPiAr T25seSB0aGUgZm9sbG93aW5nIG9wdGlvbiBjb2RlcyBhcmUgc3VwcG9ydGVkICh1bnN1cHBvcnRl ZCBjb2RlcyBjYXVzZSBhbiBlcnJvcik6DQo+ICsuUlMNCj4gKy5UUA0KPiArLkIgSVB2NCBhZGRy ZXNzIG9wdGlvbnMNCj4gKzEgKFN1Ym5ldCBNYXNrKSwgMTYgKFN3YXAgU2VydmVyKSwgMjggKEJy b2FkY2FzdCBBZGRyZXNzKSwgNTAgKFJlcXVlc3RlZCBJUCksDQoNClJlbW92ZSA1MCAoY2xpZW50 IG9ubHkpDQoNCj4gKzU0IChTZXJ2ZXIgSWRlbnRpZmllcikNCj4gKy5UUA0KPiArLkIgSVB2NCBh ZGRyZXNzIGxpc3Qgb3B0aW9ucyAoY29tbWEtc2VwYXJhdGVkKQ0KPiArMyAoUm91dGVyKSwgNCAo VGltZSBTZXJ2ZXIpLCA1IChOYW1lIFNlcnZlciksIDYgKEROUyksIDcgKExvZyBTZXJ2ZXIpLA0K PiArOCAoQ29va2llIFNlcnZlciksIDkgKExQUiBTZXJ2ZXIpLCAxMCAoSW1wcmVzcyBTZXJ2ZXIp LA0KPiArMTEgKFJlc291cmNlIExvY2F0aW9uIFNlcnZlciksIDQxIChOSVMgU2VydmVycyksDQo+ ICs0MiAoTlRQIFNlcnZlcnMpLCA0NCAoTmV0QklPUyBOYW1lIFNlcnZlcikNCj4gKy5UUA0KPiAr LkIgSW50ZWdlciBvcHRpb25zDQo+ICsyIChUaW1lIE9mZnNldCwgMzItYml0KSwgMTMgKEJvb3Qg RmlsZSBTaXplLCAxNi1iaXQpLCAxOSAoSVAgRm9yd2FyZGluZywgOC1iaXQpLA0KPiArMjMgKERl ZmF1bHQgSVAgVFRMLCA4LWJpdCksIDI2IChJbnRlcmZhY2UgTVRVLCAxNi1iaXQpLA0KPiArMzcg KFRDUCBEZWZhdWx0IFRUTCwgOC1iaXQpLCAzOCAoVENQIEtlZXBhbGl2ZSBJbnRlcnZhbCwgMzIt Yml0KSwNCj4gKzUxIChJUCBBZGRyZXNzIExlYXNlIFRpbWUsIDMyLWJpdCksDQo+ICs1NyAoTWF4 IERIQ1AgTWVzc2FnZSBTaXplLCAxNi1iaXQpLA0KDQpSZW1vdmUgNTcgKENsaWVudCBvbmx5KQ0K DQo+ICs1OCAoUmVuZXdhbCBUaW1lLCAzMi1iaXQpLCA1OSAoUmViaW5kaW5nIFRpbWUsIDMyLWJp dCkNCj4gKy5UUA0KPiArLkIgU3RyaW5nIG9wdGlvbnMNCj4gKzEyIChIb3N0IE5hbWUpLCAxNSAo RG9tYWluIE5hbWUpLCAxNyAoUm9vdCBQYXRoKSwgNDAgKE5JUyBEb21haW4gTmFtZSksDQo+ICs2 MCAoVmVuZG9yIENsYXNzIElkZW50aWZpZXIpLCA2NiAoVEZUUCBTZXJ2ZXIgTmFtZSksDQo+ICs2 NyAoQm9vdGZpbGUgTmFtZSksIDI1MiAoV1BBRCBVUkwpDQo+ICsuUkUNCj4gKw0KPiAgIC5UUA0K PiAgIC5CUiBcLXQgIiwgIiBcLVwtdGNwLXBvcnRzICIgIiBcZklzcGVjDQo+ICAgQ29uZmlndXJl IFRDUCBwb3J0IGZvcndhcmRpbmcgdG8gZ3Vlc3Qgb3IgbmFtZXNwYWNlLiBcZklzcGVjXGZSIGNh biBiZSBlaXRoZXI6DQoNCg==