From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x12c.google.com (mail-il1-x12c.google.com [IPv6:2607:f8b0:4864:20::12c]) by sourceware.org (Postfix) with ESMTPS id 25E243857024 for ; Tue, 28 Jul 2020 19:22:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 25E243857024 Received: by mail-il1-x12c.google.com with SMTP id c16so5412815ils.8 for ; Tue, 28 Jul 2020 12:22:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=RRiMR0ilwEhpzXf7WHj4JPsMQtxrfHW8a/Xjof9RKss=; b=HqdEKHNXZ1qSqDfeeQnC0nxrIV/y/bXeYVd6B6vd41GtpgCE0EgZ8IeCSNWjqp0zjV ohoZwa8JUaSEytDUalAr+NPLGbtpookbUef6ZUdIOY1HoM8AHAAE/hgLCWBBKEILZnaq NAUdRqLTSMzzbIAtPDOJ83QzJ/W6S502Sk3h0OMJ5C95wotnpAU6YTVNlF3O0LGaJamE EbwNFKE70xzpY1I6nLFTQ3tmkXM4q7gQOacwwqqNJkpNlUa3YXHncM5uF0yhO5lLBh64 AkvwEq/j3FPv04rW7BP8ikh+ERivPILhv7W1nz38rwHMQZG4Rx1u5DjkAdYkZ6z6tSJh NB6A== X-Gm-Message-State: AOAM532e3urkPgKl/GwNuq8xb7TPZKpMAde6uOd6rNmseVLZmoO/w1Jl zJZ7DZ8F7HThV/ddNgVD35y+Zdmmqv1Ef6pf7nkABg== X-Google-Smtp-Source: ABdhPJwaqHCyhu4Kwf1OD+J20tO4lNMr4pEVL7A9KCW5DVmu7wJAc3Hm13qJ6vCSRvXaLGJPvYK8+3AFWKlt0kr1Puo= X-Received: by 2002:a92:c0c9:: with SMTP id t9mr25110441ilf.82.1595964132277; Tue, 28 Jul 2020 12:22:12 -0700 (PDT) MIME-Version: 1.0 References: <5e77197d-dbb3-5718-bfe8-e263c4006a06@simark.ca> In-Reply-To: <5e77197d-dbb3-5718-bfe8-e263c4006a06@simark.ca> From: Caroline Tice Date: Tue, 28 Jul 2020 12:22:00 -0700 Message-ID: Subject: Re: [PATCH, v2] Add code for processing version 5 DWP files (for use with DWARF v5) To: Simon Marchi Cc: Caroline Tice via Gdb-patches , Tom Tromey , Eric Christopher Content-Type: multipart/mixed; boundary="0000000000002e6dba05ab855bb9" X-Spam-Status: No, score=-19.8 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, USER_IN_DEF_DKIM_WL, USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Jul 2020 19:22:31 -0000 --0000000000002e6dba05ab855bb9 Content-Type: text/plain; charset="UTF-8" On Wed, Jul 22, 2020 at 6:04 AM Simon Marchi wrote: > On 2020-07-21 12:06 a.m., Caroline Tice wrote: > > The DWARF v5 Spec describes a (slightly) new format for V5 .dwp files. > > This patch updates GDB to allow it to read/process .dwp files in the > > new DWARF v5 format, while continuing to be able to read/process .dwp > > files in the older V1 & V2 formats. > > Can you please describe in the commit message what those differences are? > > Done. > > The one thing I felt a little odd about in this patch: I couldn't > > re-use the enum dwarf_sect > > definitions, because in version 5 several of the sections have the > > same name as in the previous versions, but have a different ordering, > > with different numbers attached. So I had to create a new enum, > > dwarf_sect_v5 for this purpose. > > That part would need to be cross-posted to the binutils mailing list. > binutils > does use the DW_SECT_* enumerators, presumably to read dwp files too, so > they > would likely use those new DWARF 5 enumerators eventually. > > I will create/submit a patch to the binutils mailing list. > > Is this patch ok to commit? > > It would be useful to precise somewhere, perhaps in the comment on `struct > dwp_sections`. > that versions 1 and 2 are pre-standard versions, and that version 5 was > introduced in > DWARF5. And that versions 3 and 4 don't exist. > Done. > > I don't have time to do an in-depth review right now, but one question > that came to mind > is: is an advantage of having virtual_v2_or_v5_dwo_sections over having > separate > virtual_v2_dwo_sections and virtual_v5_dwo_sections? Not particularly; I was just trying to avoid code duplication. > Now when using v2 or v5, there are > fields you don't use (because they are either v2-specific or v5-specific), > so I imagine > it's just more error prone. Does it avoid a lot of code duplication? > A small amount, but not a lot. > > Simon > Below is my updated patch (mostly just updated comments & commit message) --0000000000002e6dba05ab855bb9 Content-Type: application/x-patch; name="v2-0001-Add-code-for-processing-version-5-DWP-files-for-u.patch" Content-Disposition: attachment; filename="v2-0001-Add-code-for-processing-version-5-DWP-files-for-u.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kd6bq6860 RnJvbSBjZTBmNjI3MTI5YzNlN2Q4MDU0NmVjMTczY2UxYjJkN2U0NDJjZDcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDYXJvbGluZSBUaWNlIDxjbXRpY2VAZ29vZ2xlLmNvbT4KRGF0 ZTogTW9uLCAyMCBKdWwgMjAyMCAxNjo0NDo0OSAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjJdIEFk ZCBjb2RlIGZvciBwcm9jZXNzaW5nIHZlcnNpb24gNSBEV1AgZmlsZXMgKGZvciB1c2Ugd2l0aAog RFdBUkYgdjUpLgoKVGhlIERXQVJGIHY1IFNwZWMgZGVzY3JpYmVzIGEgKHNsaWdodGx5KSBuZXcg Zm9ybWF0IGZvciBWNSAuZHdwIGZpbGVzLgpUaGlzIHBhdGNoIHVwZGF0ZXMgR0RCIHRvIGFsbG93 IGl0IHRvIHJlYWQvcHJvY2VzcyAuZHdwIGZpbGVzIGluIHRoZQpuZXcgRFdBUkYgdjUgZm9ybWF0 LCB3aGlsZSBjb250aW51aW5nIHRvIGJlIGFibGUgdG8gcmVhZC9wcm9jZXNzIC5kd3AgZmlsZXMK aW4gdGhlIG9sZGVyIFYxICYgVjIgZm9ybWF0cyAob2xkZXIsIHByZS1zdGFuZGFyZCBmb3JtYXRz KS4KClRoZSB0d28gbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgVjIgYW5kIHRoZSBWNSBm b3JtYXQgYXJlOgogICAgLSBUaGUgaW5jbHVzaW9uIG9mIERXQVJGLXY1LXNwZWNpZmljIHNlY3Rp b25zOgogICAgICAgICAgLmRlYnVnX2xvY2xpc3RzLmR3bwoJICAuZGVidWdfcm5nbGlzdHMuZHdv CiAgICAtIFRoZSAuZHdwIHNlY3Rpb24gaWRlbnRpZmllciBlbmNvZGluZ3MgaGF2ZSBjaGFuZ2Vk LiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkKICAgICAgdW5mb3J0dW5hdGUsIGFzIGlmIHRoZSBlbmNv ZGluZ3MgaGFkIHJlbWFpbmVkIHJvdWdobHkgdGhlIHNhbWUsIHRoZQogICAgICBjb2RlIGNoYW5n ZXMgZm9yIHRoaXMgd291bGQgaGF2ZSBiZWVuIG11Y2ggc21hbGxlci4gIFRoZSB0YWJsZSBiZWxv dwogICAgICBzaG93cyB0aGUgb2xkICYgbmV3IGVuY29kaW5ncy4gIE5vdGljZSB0aGUgcmUtcHVy cG9zaW5nIG9mIDUsIDcgJiA4CiAgICAgIGluIHBhcnRpY3VsYXIuCgpWYWwgIERXNCBzZWN0aW9u ICAgICAgIERXNCBzZWN0aW9uIGlkICBEVzUgc2VjdGlvbiAgICAgICAgIERXNSBzZWN0aW9uIGlk Ci0tLSAtLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0t ICAgLS0tLS0tLS0tLS0tLS0KIDEgIC5kZWJ1Z19pbmZvLmR3byAgICBEV19TRUNUX0lORk8gICAg LmRlYnVnX2luZm8uZHdvICAgICBEV19TRUNUX0lORk8KIDIgIC5kZWJ1Z190eXBlcy5kd28gICBE V19TRUNUX1RZUEVTICAgICAgICAgLS0gICAgICAgICAgICAgIHJlc2VydmVkCiAzICAuZGVidWdf YWJicmV2LmR3byAgRFdfU0VDVF9BQkJSRVYgIC5kZWJ1Z19hYmJyZXYuZHdvICAgRFdfU0VDVF9B QkJSRVYKIDQgIC5kZWJ1Z19saW5lLmR3byAgICBEV19TRUNUX0xJTkUgICAgLmRlYnVnX2xpbmUu ZHdvICAgICBEV19TRUNUX0xJTkUKIDUgIC5kZWJ1Z19sb2MuZHdvICAgICBEV19TRUNUX0xPQyAg ICAgLmRlYnVnX2xvY2xpc3RzLmR3byBEV19TRUNUX0xPQ0xJU1RTCiA2ICAuZGVidWdfc3RyX29m ZnNldHMuZHdvICAgICAgICAgICAgIC5kZWJ1Z19zdHJfb2Zmc2V0cy5kd28KICAgICAgICAgICAg ICAgICAgICAgICBEV19TRUNUX1NUUl9PRkZTRVRTICAgICAgICAgICAgICAgICBEV19TRUNUX1NU Ul9PRkZTRVRTCiA3ICAuZGVidWdfbWFjaW5mby5kd28gRFdfU0VDVF9NQUNJTkZPIC5kZWJ1Z19t YWNyby5kd28gICAgRFdfU0VDVF9NQUNSTwogOCAgLmRlYnVnX21hY3JvLmR3byAgIERXX1NFQ1Rf TUFDUk8gICAuZGVidWdfcm5nbGlzdHMuZHdvIERXX1NFQ1RfUk5HTElTVFMKLS0tCiBnZGIvZHdh cmYyL3JlYWQuYyB8IDQ3MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tCiBpbmNsdWRlL2R3YXJmMi5oICB8ICAxNSArKwogMiBmaWxlcyBjaGFuZ2VkLCA0MzYg aW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi9y ZWFkLmMgYi9nZGIvZHdhcmYyL3JlYWQuYwppbmRleCA0ZTcwZGNjZWNiLi42NDQxZTgyZDMwIDEw MDY0NAotLS0gYS9nZGIvZHdhcmYyL3JlYWQuYworKysgYi9nZGIvZHdhcmYyL3JlYWQuYwpAQCAt NzI4LDcgKzcyOCw3IEBAIHN0cnVjdCBkd29fZmlsZQogICBnZGJfYmZkX3JlZl9wdHIgZGJmZDsK IAogICAvKiBUaGUgc2VjdGlvbnMgdGhhdCBtYWtlIHVwIHRoaXMgRFdPIGZpbGUuCi0gICAgIFJl bWVtYmVyIHRoYXQgZm9yIHZpcnR1YWwgRFdPIGZpbGVzIGluIERXUCBWMiwgdGhlc2UgYXJlIHZp cnR1YWwKKyAgICAgUmVtZW1iZXIgdGhhdCBmb3IgdmlydHVhbCBEV08gZmlsZXMgaW4gRFdQIFYy IG9yIERXUCBWNSwgdGhlc2UgYXJlIHZpcnR1YWwKICAgICAgc2VjdGlvbnMgKGZvciBsYWNrIG9m IGEgYmV0dGVyIG5hbWUpLiAgKi8KICAgc3RydWN0IGR3b19zZWN0aW9ucyBzZWN0aW9ucyB7fTsK IApAQCAtNzQ3LDI1ICs3NDcsMjcgQEAgc3RydWN0IGR3b19maWxlCiAKIHN0cnVjdCBkd3Bfc2Vj dGlvbnMKIHsKLSAgLyogVGhlc2UgYXJlIHVzZWQgYnkgYm90aCBEV1AgdmVyc2lvbiAxIGFuZCAy LiAgKi8KKyAgLyogVGhlc2UgYXJlIHVzZWQgYnkgYWxsIERXUCB2ZXJzaW9ucyAoMSwgMiBhbmQg NSkuICAqLwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBzdHI7CiAgIHN0cnVjdCBkd2Fy ZjJfc2VjdGlvbl9pbmZvIGN1X2luZGV4OwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyB0 dV9pbmRleDsKIAotICAvKiBUaGVzZSBhcmUgb25seSB1c2VkIGJ5IERXUCB2ZXJzaW9uIDIgZmls ZXMuCisgIC8qIFRoZXNlIGFyZSBvbmx5IHVzZWQgYnkgRFdQIHZlcnNpb24gMiBhbmQgdmVyc2lv biA1IGZpbGVzLgogICAgICBJbiBEV1AgdmVyc2lvbiAxIHRoZSAuZGVidWdfaW5mby5kd28sIC5k ZWJ1Z190eXBlcy5kd28sIGFuZCBvdGhlcgogICAgICBzZWN0aW9ucyBhcmUgcmVmZXJlbmNlZCBi eSBzZWN0aW9uIG51bWJlciwgYW5kIGFyZSBub3QgcmVjb3JkZWQgaGVyZS4KLSAgICAgSW4gRFdQ IHZlcnNpb24gMiB0aGVyZSBpcyBhdCBtb3N0IG9uZSBjb3B5IG9mIGFsbCB0aGVzZSBzZWN0aW9u cywgZWFjaAotICAgICBzZWN0aW9uIGJlaW5nIChlZmZlY3RpdmVseSkgY29tcHJpc2VkIG9mIHRo ZSBjb25jYXRlbmF0aW9uIG9mIGFsbCBvZiB0aGUKLSAgICAgaW5kaXZpZHVhbCBzZWN0aW9ucyB0 aGF0IGV4aXN0IGluIHRoZSB2ZXJzaW9uIDEgZm9ybWF0LgorICAgICBJbiBEV1AgdmVyc2lvbiAy IG9yIDUgdGhlcmUgaXMgYXQgbW9zdCBvbmUgY29weSBvZiBhbGwgdGhlc2Ugc2VjdGlvbnMsCisg ICAgIGVhY2ggc2VjdGlvbiBiZWluZyAoZWZmZWN0aXZlbHkpIGNvbXByaXNlZCBvZiB0aGUgY29u Y2F0ZW5hdGlvbiBvZiBhbGwgb2YKKyAgICAgdGhlIGluZGl2aWR1YWwgc2VjdGlvbnMgdGhhdCBl eGlzdCBpbiB0aGUgdmVyc2lvbiAxIGZvcm1hdC4KICAgICAgVG8ga2VlcCB0aGUgY29kZSBzaW1w bGUgd2UgdHJlYXQgZWFjaCBvZiB0aGVzZSBjb25jYXRlbmF0ZWQgcGllY2VzIGFzIGEKICAgICAg c2VjdGlvbiBpdHNlbGYgKGEgdmlydHVhbCBzZWN0aW9uPykuICAqLwogICBzdHJ1Y3QgZHdhcmYy X3NlY3Rpb25faW5mbyBhYmJyZXY7CiAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGluZm87 CiAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGxpbmU7CiAgIHN0cnVjdCBkd2FyZjJfc2Vj dGlvbl9pbmZvIGxvYzsKKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gbG9jbGlzdHM7CiAg IHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIG1hY2luZm87CiAgIHN0cnVjdCBkd2FyZjJfc2Vj dGlvbl9pbmZvIG1hY3JvOworICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBybmdsaXN0czsK ICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gc3RyX29mZnNldHM7CiAgIHN0cnVjdCBkd2Fy ZjJfc2VjdGlvbl9pbmZvIHR5cGVzOwogfTsKQEAgLTc4NiwxMiArNzg4LDEyIEBAIHN0cnVjdCB2 aXJ0dWFsX3YxX2R3b19zZWN0aW9ucwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBpbmZv X29yX3R5cGVzOwogfTsKIAotLyogU2ltaWxhciB0byB2aXJ0dWFsX3YxX2R3b19zZWN0aW9ucywg YnV0IGZvciBEV1AgdmVyc2lvbiAyLgorLyogU2ltaWxhciB0byB2aXJ0dWFsX3YxX2R3b19zZWN0 aW9ucywgYnV0IGZvciBEV1AgdmVyc2lvbiAyIG9yIDUuCiAgICBJbiB2ZXJzaW9uIDIsIHRoZSBz ZWN0aW9ucyBvZiB0aGUgRFdPIGZpbGVzIGFyZSBjb25jYXRlbmF0ZWQgdG9nZXRoZXIKICAgIGFu ZCBzdG9yZWQgaW4gb25lIHNlY3Rpb24gb2YgdGhhdCBuYW1lLiAgVGh1cyBlYWNoIEVMRiBzZWN0 aW9uIGNvbnRhaW5zCiAgICBzZXZlcmFsICJ2aXJ0dWFsIiBzZWN0aW9ucy4gICovCiAKLXN0cnVj dCB2aXJ0dWFsX3YyX2R3b19zZWN0aW9ucworc3RydWN0IHZpcnR1YWxfdjJfb3JfdjVfZHdvX3Nl Y3Rpb25zCiB7CiAgIGJmZF9zaXplX3R5cGUgYWJicmV2X29mZnNldDsKICAgYmZkX3NpemVfdHlw ZSBhYmJyZXZfc2l6ZTsKQEAgLTgwMiwxMiArODA0LDE4IEBAIHN0cnVjdCB2aXJ0dWFsX3YyX2R3 b19zZWN0aW9ucwogICBiZmRfc2l6ZV90eXBlIGxvY19vZmZzZXQ7CiAgIGJmZF9zaXplX3R5cGUg bG9jX3NpemU7CiAKKyAgYmZkX3NpemVfdHlwZSBsb2NsaXN0c19vZmZzZXQ7CisgIGJmZF9zaXpl X3R5cGUgbG9jbGlzdHNfc2l6ZTsKKwogICBiZmRfc2l6ZV90eXBlIG1hY2luZm9fb2Zmc2V0Owog ICBiZmRfc2l6ZV90eXBlIG1hY2luZm9fc2l6ZTsKIAogICBiZmRfc2l6ZV90eXBlIG1hY3JvX29m ZnNldDsKICAgYmZkX3NpemVfdHlwZSBtYWNyb19zaXplOwogCisgIGJmZF9zaXplX3R5cGUgcm5n bGlzdHNfb2Zmc2V0OworICBiZmRfc2l6ZV90eXBlIHJuZ2xpc3RzX3NpemU7CisKICAgYmZkX3Np emVfdHlwZSBzdHJfb2Zmc2V0c19vZmZzZXQ7CiAgIGJmZF9zaXplX3R5cGUgc3RyX29mZnNldHNf c2l6ZTsKIApAQCAtODQ1LDYgKzg1MywyMiBAQCBzdHJ1Y3QgZHdwX2hhc2hfdGFibGUKICAgICAg IGNvbnN0IGdkYl9ieXRlICpvZmZzZXRzOwogICAgICAgY29uc3QgZ2RiX2J5dGUgKnNpemVzOwog ICAgIH0gdjI7CisgICAgc3RydWN0CisgICAgeworICAgICAgLyogVGhpcyBpcyBpbmRleGVkIGJ5 IGNvbHVtbiBudW1iZXIgYW5kIGdpdmVzIHRoZSBpZCBvZiB0aGUgc2VjdGlvbgorCSBpbiB0aGF0 IGNvbHVtbi4gICovCisjZGVmaW5lIE1BWF9OUl9WNV9EV09fU0VDVElPTlMgXAorICAoMSAvKiAu ZGVidWdfaW5mbyAqLyBcCisgICArIDEgLyogLmRlYnVnX2FiYnJldiAqLyBcCisgICArIDEgLyog LmRlYnVnX2xpbmUgKi8gXAorICAgKyAxIC8qIC5kZWJ1Z19sb2NsaXN0cyAqLyBcCisgICArIDEg LyogLmRlYnVnX3N0cl9vZmZzZXRzICovIFwKKyAgICsgMSAvKiAuZGVidWdfbWFjcm8gKi8gXAor ICAgKyAxIC8qIC5kZWJ1Z19ybmdsaXN0cyAqLykKKyAgICAgIGludCBzZWN0aW9uX2lkc1tNQVhf TlJfVjVfRFdPX1NFQ1RJT05TXTsKKyAgICAgIGNvbnN0IGdkYl9ieXRlICpvZmZzZXRzOworICAg ICAgY29uc3QgZ2RiX2J5dGUgKnNpemVzOworICAgIH0gdjU7CiAgIH0gc2VjdGlvbl9wb29sOwog fTsKIApAQCAtMTE1MDUsNiArMTE1MjksMTEgQEAgY3JlYXRlX2N1c19oYXNoX3RhYmxlIChkd2Fy ZjJfcGVyX29iamZpbGUgKnBlcl9vYmpmaWxlLAogCiAvKiBEV1AgZmlsZSAuZGVidWdfe2N1LHR1 fV9pbmRleCBzZWN0aW9uIGZvcm1hdDoKICAgIFtyZWY6IGh0dHA6Ly9nY2MuZ251Lm9yZy93aWtp L0RlYnVnRmlzc2lvbkRXUF0KKyAgIFtyZWY6IGh0dHA6Ly9kd2FyZnN0ZC5vcmcvZG9jL0RXQVJG NS5wZGYsIHNlY3QgNy4zLjUgIkRXQVJGIFBhY2thZ2UgRmlsZXMiXQorCisgICBEV1AgVmVyc2lv bnMgMSAmIDIgYXJlIG9sZGVyLCBwcmUtc3RhbmRhcmQgZm9ybWF0IHZlcnNpb25zLiAgVGhlIGZp cnN0CisgICBvZmZpY2lhbGx5IHN0YW5kYXJkIERXUCBmb3JtYXQgd2FzIHB1Ymxpc2hlZCB3aXRo IERXQVJGIHY1IGFuZCBpcyBjYWxsZWQKKyAgIFZlcnNpb24gNS4gIFRoZXJlIGFyZSBubyB2ZXJz aW9ucyAzIG9yIDQuCiAKICAgIERXUCBWZXJzaW9uIDE6CiAKQEAgLTExNTQ5LDkgKzExNTc4LDkg QEAgY3JlYXRlX2N1c19oYXNoX3RhYmxlIChkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9vYmpmaWxl LAogCiAgICAtLS0KIAotICAgRFdQIFZlcnNpb24gMjoKKyAgIERXUCBWZXJzaW9ucyAyIGFuZCA1 OgogCi0gICBEV1AgVmVyc2lvbiAyIGNvbWJpbmVzIGFsbCB0aGUgLmRlYnVnX2luZm8sIGV0Yy4g c2VjdGlvbnMgaW50byBvbmUsCisgICBEV1AgVmVyc2lvbnMgMiBhbmQgNSBjb21iaW5lIGFsbCB0 aGUgLmRlYnVnX2luZm8sIGV0Yy4gc2VjdGlvbnMgaW50byBvbmUsCiAgICBhbmQgdGhlIGVudHJp ZXMgaW4gdGhlIGluZGV4IHRhYmxlcyBhcmUgbm93IG9mZnNldHMgaW50byB0aGVzZSBzZWN0aW9u cy4KICAgIENVIG9mZnNldHMgYmVnaW4gYXQgMC4gIFRVIG9mZnNldHMgYmVnaW4gYXQgdGhlIHNp emUgb2YgdGhlIC5kZWJ1Z19pbmZvCiAgICBzZWN0aW9uLgpAQCAtMTE1NjAsOCArMTE1ODksOCBA QCBjcmVhdGVfY3VzX2hhc2hfdGFibGUgKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUs CiAgICAgSGVhZGVyCiAgICAgSGFzaCBUYWJsZSBvZiBTaWduYXR1cmVzICAgZHdwX2hhc2hfdGFi bGUuaGFzaF90YWJsZQogICAgIFBhcmFsbGVsIFRhYmxlIG9mIEluZGljZXMgIGR3cF9oYXNoX3Rh YmxlLnVuaXRfdGFibGUKLSAgICBUYWJsZSBvZiBTZWN0aW9uIE9mZnNldHMgICBkd3BfaGFzaF90 YWJsZS52Mi57c2VjdGlvbl9pZHMsb2Zmc2V0c30KLSAgICBUYWJsZSBvZiBTZWN0aW9uIFNpemVz ICAgICBkd3BfaGFzaF90YWJsZS52Mi5zaXplcworICAgIFRhYmxlIG9mIFNlY3Rpb24gT2Zmc2V0 cyAgIGR3cF9oYXNoX3RhYmxlLnt2Mnx2NX0ue3NlY3Rpb25faWRzLG9mZnNldHN9CisgICAgVGFi bGUgb2YgU2VjdGlvbiBTaXplcyAgICAgZHdwX2hhc2hfdGFibGUue3YyfHY1fS5zaXplcwogCiAg ICBUaGUgaW5kZXggc2VjdGlvbiBoZWFkZXIgY29uc2lzdHMgb2Y6CiAKQEAgLTExNTg0LDcgKzEx NjEzLDcgQEAgY3JlYXRlX2N1c19oYXNoX3RhYmxlIChkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9v YmpmaWxlLAogICAgRWFjaCByb3cgaW4gdGhlIGFycmF5IGlzIGluZGV4ZWQgc3RhcnRpbmcgZnJv bSAwLiAgVGhlIGZpcnN0IHJvdyBwcm92aWRlcwogICAgYSBrZXkgdG8gdGhlIHJlbWFpbmluZyBy b3dzOiBlYWNoIGNvbHVtbiBpbiB0aGlzIHJvdyBwcm92aWRlcyBhbiBpZGVudGlmaWVyCiAgICBm b3IgYSBkZWJ1ZyBzZWN0aW9uLCBhbmQgdGhlIG9mZnNldHMgaW4gdGhlIHNhbWUgY29sdW1uIG9m IHN1YnNlcXVlbnQgcm93cwotICAgcmVmZXIgdG8gdGhhdCBzZWN0aW9uLiAgVGhlIHNlY3Rpb24g aWRlbnRpZmllcnMgYXJlOgorICAgcmVmZXIgdG8gdGhhdCBzZWN0aW9uLiAgVGhlIHNlY3Rpb24g aWRlbnRpZmllcnMgZm9yIFZlcnNpb24gMiBhcmU6CiAKICAgICBEV19TRUNUX0lORk8gICAgICAg ICAxICAuZGVidWdfaW5mby5kd28KICAgICBEV19TRUNUX1RZUEVTICAgICAgICAyICAuZGVidWdf dHlwZXMuZHdvCkBAIC0xMTU5NSw2ICsxMTYyNCwxNyBAQCBjcmVhdGVfY3VzX2hhc2hfdGFibGUg KGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUsCiAgICAgRFdfU0VDVF9NQUNJTkZPICAg ICAgNyAgLmRlYnVnX21hY2luZm8uZHdvCiAgICAgRFdfU0VDVF9NQUNSTyAgICAgICAgOCAgLmRl YnVnX21hY3JvLmR3bwogCisgICBUaGUgc2VjdGlvbiBpZGVudGlmaWVycyBmb3IgVmVyc2lvbiA1 IGFyZToKKworICAgIERXX1NFQ1RfSU5GT19WNSAgICAgICAgIDEgIC5kZWJ1Z19pbmZvLmR3bwor ICAgIERXX1NFQ1RfUkVTRVJWRURfVjUgICAgIDIgIC0tCisgICAgRFdfU0VDVF9BQkJSRVZfVjUg ICAgICAgMyAgLmRlYnVnX2FiYnJldi5kd28KKyAgICBEV19TRUNUX0xJTkVfVjUgICAgICAgICA0 ICAuZGVidWdfbGluZS5kd28KKyAgICBEV19TRUNUX0xPQ0xJU1RTX1Y1ICAgICA1ICAuZGVidWdf bG9jbGlzdHMuZHdvCisgICAgRFdfU0VDVF9TVFJfT0ZGU0VUU19WNSAgNiAgLmRlYnVnX3N0cl9v ZmZzZXRzLmR3bworICAgIERXX1NFQ1RfTUFDUk9fVjUgICAgICAgIDcgIC5kZWJ1Z19tYWNyby5k d28KKyAgICBEV19TRUNUX1JOR0xJU1RTX1Y1ICAgICA4ICAuZGVidWdfcm5nbGlzdHMuZHdvCisK ICAgIFRoZSBvZmZzZXRzIHByb3ZpZGVkIGJ5IHRoZSBDVSBhbmQgVFUgaW5kZXggc2VjdGlvbnMg YXJlIHRoZSBiYXNlIG9mZnNldHMKICAgIGZvciB0aGUgY29udHJpYnV0aW9ucyBtYWRlIGJ5IGVh Y2ggQ1Ugb3IgVFUgdG8gdGhlIGNvcnJlc3BvbmRpbmcgc2VjdGlvbgogICAgaW4gdGhlIHBhY2th Z2UgZmlsZS4gIEVhY2ggQ1UgYW5kIFRVIGhlYWRlciBjb250YWlucyBhbiBhYmJyZXZfb2Zmc2V0 CkBAIC0xMTY2Myw5ICsxMTcwMywxMiBAQCBjcmVhdGVfZHdwX2hhc2hfdGFibGUgKGR3YXJmMl9w ZXJfb2JqZmlsZSAqcGVyX29iamZpbGUsCiAgIGluZGV4X3B0ciA9IGluZGV4LT5idWZmZXI7CiAg IGluZGV4X2VuZCA9IGluZGV4X3B0ciArIGluZGV4LT5zaXplOwogCisgIC8qIEZvciBWZXJzaW9u IDUsIHRoZSB2ZXJzaW9uIGlzIHJlYWxseSAyIGJ5dGVzIG9mIGRhdGEgJiAyIGJ5dGVzIG9mIHBh ZGRpbmcuCisgICAgIEZvciBub3cgaXQncyBzYWZlIHRvIGp1c3QgcmVhZCA0IGJ5dGVzIChwYXJ0 aWN1bGFybHkgYXMgaXQncyBkaWZmaWN1bHQgdG8KKyAgICAgdGVsbCBpZiB5b3UncmUgZGVhbGlu ZyB3aXRoIFZlcnNpb24gNSBiZWZvcmUgeW91J3ZlIHJlYWQgdGhlIHZlcnNpb24pLiAgICovCiAg IHZlcnNpb24gPSByZWFkXzRfYnl0ZXMgKGRiZmQsIGluZGV4X3B0cik7CiAgIGluZGV4X3B0ciAr PSA0OwotICBpZiAodmVyc2lvbiA9PSAyKQorICBpZiAoKHZlcnNpb24gPT0gMikgfHwgKHZlcnNp b24gPT0gNSkpCiAgICAgbnJfY29sdW1ucyA9IHJlYWRfNF9ieXRlcyAoZGJmZCwgaW5kZXhfcHRy KTsKICAgZWxzZQogICAgIG5yX2NvbHVtbnMgPSAwOwpAQCAtMTE2NzUsNyArMTE3MTgsNyBAQCBj cmVhdGVfZHdwX2hhc2hfdGFibGUgKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUsCiAg IG5yX3Nsb3RzID0gcmVhZF80X2J5dGVzIChkYmZkLCBpbmRleF9wdHIpOwogICBpbmRleF9wdHIg Kz0gNDsKIAotICBpZiAodmVyc2lvbiAhPSAxICYmIHZlcnNpb24gIT0gMikKKyAgaWYgKHZlcnNp b24gIT0gMSAmJiB2ZXJzaW9uICE9IDIgJiYgdmVyc2lvbiAhPSA1KQogICAgIHsKICAgICAgIGVy cm9yIChfKCJEd2FyZiBFcnJvcjogdW5zdXBwb3J0ZWQgRFdQIGZpbGUgdmVyc2lvbiAoJXMpIgog CSAgICAgICAiIFtpbiBtb2R1bGUgJXNdIiksCkBAIC0xMTY5OCwxMSArMTE3NDEsMTMgQEAgY3Jl YXRlX2R3cF9oYXNoX3RhYmxlIChkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9vYmpmaWxlLAogCiAg IC8qIEV4aXQgZWFybHkgaWYgdGhlIHRhYmxlIGlzIGVtcHR5LiAgKi8KICAgaWYgKG5yX3Nsb3Rz ID09IDAgfHwgbnJfdW5pdHMgPT0gMAotICAgICAgfHwgKHZlcnNpb24gPT0gMiAmJiBucl9jb2x1 bW5zID09IDApKQorICAgICAgfHwgKHZlcnNpb24gPT0gMiAmJiBucl9jb2x1bW5zID09IDApCisg ICAgICB8fCAodmVyc2lvbiA9PSA1ICYmIG5yX2NvbHVtbnMgPT0gMCkpCiAgICAgewogICAgICAg LyogQWxsIG11c3QgYmUgemVyby4gICovCiAgICAgICBpZiAobnJfc2xvdHMgIT0gMCB8fCBucl91 bml0cyAhPSAwCi0JICB8fCAodmVyc2lvbiA9PSAyICYmIG5yX2NvbHVtbnMgIT0gMCkpCisJICB8 fCAodmVyc2lvbiA9PSAyICYmIG5yX2NvbHVtbnMgIT0gMCkKKwkgIHx8ICh2ZXJzaW9uID09IDUg JiYgbnJfY29sdW1ucyAhPSAwKSkKIAl7CiAJICBjb21wbGFpbnQgKF8oIkVtcHR5IERXUCBidXQg bnJfc2xvdHMsbnJfdW5pdHMsbnJfY29sdW1ucyBub3QiCiAJCSAgICAgICAiIGFsbCB6ZXJvIFtp biBtb2R1bGVzICVzXSIpLApAQCAtMTE3MTgsNyArMTE3NjMsNyBAQCBjcmVhdGVfZHdwX2hhc2hf dGFibGUgKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUsCiAgICAgICAvKiBJdCdzIGhh cmRlciB0byBkZWNpZGUgd2hldGhlciB0aGUgc2VjdGlvbiBpcyB0b28gc21hbGwgaW4gdjEuCiAJ IFYxIGlzIGRlcHJlY2F0ZWQgYW55d2F5IHNvIHdlIHB1bnQuICAqLwogICAgIH0KLSAgZWxzZQor ICBlbHNlIGlmICh2ZXJzaW9uID09IDIpCiAgICAgewogICAgICAgY29uc3QgZ2RiX2J5dGUgKmlk c19wdHIgPSBodGFiLT51bml0X3RhYmxlICsgc2l6ZW9mICh1aW50MzJfdCkgKiBucl9zbG90czsK ICAgICAgIGludCAqaWRzID0gaHRhYi0+c2VjdGlvbl9wb29sLnYyLnNlY3Rpb25faWRzOwpAQCAt MTE3ODksNiArMTE4MzQsNzUgQEAgY3JlYXRlX2R3cF9oYXNoX3RhYmxlIChkd2FyZjJfcGVyX29i amZpbGUgKnBlcl9vYmpmaWxlLAogCQkgZHdwX2ZpbGUtPm5hbWUpOwogCX0KICAgICB9CisgIGVs c2UgLy8gdmVyc2lvbiA9PSA1CisgICAgeworICAgICAgY29uc3QgZ2RiX2J5dGUgKmlkc19wdHIg PSBodGFiLT51bml0X3RhYmxlICsgc2l6ZW9mICh1aW50MzJfdCkgKiBucl9zbG90czsKKyAgICAg IGludCAqaWRzID0gaHRhYi0+c2VjdGlvbl9wb29sLnY1LnNlY3Rpb25faWRzOworICAgICAgc2l6 ZV90IHNpemVvZl9pZHMgPSBzaXplb2YgKGh0YWItPnNlY3Rpb25fcG9vbC52NS5zZWN0aW9uX2lk cyk7CisgICAgICAvKiBSZXZlcnNlIG1hcCBmb3IgZXJyb3IgY2hlY2tpbmcuICAqLworICAgICAg aW50IGlkc19zZWVuW0RXX1NFQ1RfTUFYX1Y1ICsgMV07CisgICAgICBpbnQgaTsKKworICAgICAg aWYgKG5yX2NvbHVtbnMgPCAyKQorCXsKKwkgIGVycm9yIChfKCJEd2FyZiBFcnJvcjogYmFkIERX UCBoYXNoIHRhYmxlLCB0b28gZmV3IGNvbHVtbnMiCisJCSAgICIgaW4gc2VjdGlvbiB0YWJsZSBb aW4gbW9kdWxlICVzXSIpLAorCQkgZHdwX2ZpbGUtPm5hbWUpOworCX0KKyAgICAgIGlmIChucl9j b2x1bW5zID4gTUFYX05SX1Y1X0RXT19TRUNUSU9OUykKKwl7CisJICBlcnJvciAoXygiRHdhcmYg RXJyb3I6IGJhZCBEV1AgaGFzaCB0YWJsZSwgdG9vIG1hbnkgY29sdW1ucyIKKwkJICAgIiBpbiBz ZWN0aW9uIHRhYmxlIFtpbiBtb2R1bGUgJXNdIiksCisJCSBkd3BfZmlsZS0+bmFtZSk7CisJfQor ICAgICAgbWVtc2V0IChpZHMsIDI1NSwgc2l6ZW9mX2lkcyk7CisgICAgICBtZW1zZXQgKGlkc19z ZWVuLCAyNTUsIHNpemVvZiAoaWRzX3NlZW4pKTsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBucl9j b2x1bW5zOyArK2kpCisJeworCSAgaW50IGlkID0gcmVhZF80X2J5dGVzIChkYmZkLCBpZHNfcHRy ICsgaSAqIHNpemVvZiAodWludDMyX3QpKTsKKworCSAgaWYgKGlkIDwgRFdfU0VDVF9NSU4gfHwg aWQgPiBEV19TRUNUX01BWF9WNSkKKwkgICAgeworCSAgICAgIGVycm9yIChfKCJEd2FyZiBFcnJv cjogYmFkIERXUCBoYXNoIHRhYmxlLCBiYWQgc2VjdGlvbiBpZCAlZCIKKwkJICAgICAgICIgaW4g c2VjdGlvbiB0YWJsZSBbaW4gbW9kdWxlICVzXSIpLAorCQkgICAgIGlkLCBkd3BfZmlsZS0+bmFt ZSk7CisJICAgIH0KKwkgIGlmIChpZHNfc2VlbltpZF0gIT0gLTEpCisJICAgIHsKKwkgICAgICBl cnJvciAoXygiRHdhcmYgRXJyb3I6IGJhZCBEV1AgaGFzaCB0YWJsZSwgZHVwbGljYXRlIHNlY3Rp b24iCisJCSAgICAgICAiIGlkICVkIGluIHNlY3Rpb24gdGFibGUgW2luIG1vZHVsZSAlc10iKSwK KwkJICAgICBpZCwgZHdwX2ZpbGUtPm5hbWUpOworCSAgICB9CisJICBpZHNfc2VlbltpZF0gPSBp OworCSAgaWRzW2ldID0gaWQ7CisJfQorICAgICAgLyogTXVzdCBoYXZlIHNlZW4gYW4gaW5mbyBz ZWN0aW9uLiAgKi8KKyAgICAgIGlmIChpZHNfc2VlbltEV19TRUNUX0lORk9fVjVdID09IC0xKQor CXsKKwkgIGVycm9yIChfKCJEd2FyZiBFcnJvcjogYmFkIERXUCBoYXNoIHRhYmxlLCBtaXNzaW5n L2R1cGxpY2F0ZSIKKwkJICAgIiBEV08gaW5mby90eXBlcyBzZWN0aW9uIFtpbiBtb2R1bGUgJXNd IiksCisJCSBkd3BfZmlsZS0+bmFtZSk7CisJfQorICAgICAgLyogTXVzdCBoYXZlIGFuIGFiYnJl diBzZWN0aW9uLiAgKi8KKyAgICAgIGlmIChpZHNfc2VlbltEV19TRUNUX0FCQlJFVl9WNV0gPT0g LTEpCisJeworCSAgZXJyb3IgKF8oIkR3YXJmIEVycm9yOiBiYWQgRFdQIGhhc2ggdGFibGUsIG1p c3NpbmcgRFdPIGFiYnJldiIKKwkJICAgIiBzZWN0aW9uIFtpbiBtb2R1bGUgJXNdIiksCisJCSBk d3BfZmlsZS0+bmFtZSk7CisJfQorICAgICAgaHRhYi0+c2VjdGlvbl9wb29sLnY1Lm9mZnNldHMg PSBpZHNfcHRyICsgc2l6ZW9mICh1aW50MzJfdCkgKiBucl9jb2x1bW5zOworICAgICAgaHRhYi0+ c2VjdGlvbl9wb29sLnY1LnNpemVzID0KKwlodGFiLT5zZWN0aW9uX3Bvb2wudjUub2Zmc2V0cyAr IChzaXplb2YgKHVpbnQzMl90KQorCQkJCQkgKiBucl91bml0cyAqIG5yX2NvbHVtbnMpOworICAg ICAgaWYgKChodGFiLT5zZWN0aW9uX3Bvb2wudjUuc2l6ZXMgKyAoc2l6ZW9mICh1aW50MzJfdCkK KwkJCQkJICAqIG5yX3VuaXRzICogbnJfY29sdW1ucykpCisJICA+IGluZGV4X2VuZCkKKwl7CisJ ICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IERXUCBpbmRleCBzZWN0aW9uIGlzIGNvcnJ1cHQgKHRv byBzbWFsbCkiCisJCSAgICIgW2luIG1vZHVsZSAlc10iKSwKKwkJIGR3cF9maWxlLT5uYW1lKTsK Kwl9CisgICAgfQogCiAgIHJldHVybiBodGFiOwogfQpAQCAtMTIwMjgsMTUgKzEyMTQyLDE1IEBA IGNyZWF0ZV9kd29fdW5pdF9pbl9kd3BfdjEgKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZp bGUsCiAgIHJldHVybiBkd29fdW5pdDsKIH0KIAotLyogU3Vicm91dGluZSBvZiBjcmVhdGVfZHdv X3VuaXRfaW5fZHdwX3YyIHRvIHNpbXBsaWZ5IGl0LgotICAgR2l2ZW4gYSBwb2ludGVyIHRvIHRo ZSBjb250YWluaW5nIHNlY3Rpb24gU0VDVElPTiwgYW5kIE9GRlNFVCxTSVpFIG9mIHRoZQotICAg cGllY2Ugd2l0aGluIHRoYXQgc2VjdGlvbiB1c2VkIGJ5IGEgVFUvQ1UsIHJldHVybiBhIHZpcnR1 YWwgc2VjdGlvbgotICAgb2YganVzdCB0aGF0IHBpZWNlLiAgKi8KKy8qIFN1YnJvdXRpbmUgb2Yg Y3JlYXRlX2R3b191bml0X2luX2R3cF92MiBhbmQgY3JlYXRlX2R3b191bml0X2luX2R3cF92NSB0 bworICAgc2ltcGxpZnkgdGhlbS4gIEdpdmVuIGEgcG9pbnRlciB0byB0aGUgY29udGFpbmluZyBz ZWN0aW9uIFNFQ1RJT04sIGFuZAorICAgT0ZGU0VULFNJWkUgb2YgdGhlIHBpZWNlIHdpdGhpbiB0 aGF0IHNlY3Rpb24gdXNlZCBieSBhIFRVL0NVLCByZXR1cm4gYQorICAgdmlydHVhbCBzZWN0aW9u IG9mIGp1c3QgdGhhdCBwaWVjZS4gICovCiAKIHN0YXRpYyBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25f aW5mbwotY3JlYXRlX2R3cF92Ml9zZWN0aW9uIChkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9vYmpm aWxlLAotCQkgICAgICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKnNlY3Rpb24sCi0JCSAg ICAgICBiZmRfc2l6ZV90eXBlIG9mZnNldCwgYmZkX3NpemVfdHlwZSBzaXplKQorY3JlYXRlX2R3 cF92Ml9vcl92NV9zZWN0aW9uIChkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9vYmpmaWxlLAorCQkJ ICAgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbiwKKwkJCSAgICAgYmZkX3Np emVfdHlwZSBvZmZzZXQsIGJmZF9zaXplX3R5cGUgc2l6ZSkKIHsKICAgc3RydWN0IGR3YXJmMl9z ZWN0aW9uX2luZm8gcmVzdWx0OwogICBhc2VjdGlvbiAqc2VjdHA7CkBAIC0xMjA1OSw3ICsxMjE3 Myw3IEBAIGNyZWF0ZV9kd3BfdjJfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJfb2Jq ZmlsZSwKICAgaWYgKHNlY3RwID09IE5VTEwKICAgICAgIHx8IG9mZnNldCArIHNpemUgPiBiZmRf c2VjdGlvbl9zaXplIChzZWN0cCkpCiAgICAgewotICAgICAgZXJyb3IgKF8oIkR3YXJmIEVycm9y OiBCYWQgRFdQIFYyIHNlY3Rpb24gaW5mbywgZG9lc24ndCBmaXQiCisgICAgICBlcnJvciAoXygi RHdhcmYgRXJyb3I6IEJhZCBEV1AgVjIgb3IgVjUgc2VjdGlvbiBpbmZvLCBkb2Vzbid0IGZpdCIK IAkgICAgICAgIiBpbiBzZWN0aW9uICVzIFtpbiBtb2R1bGUgJXNdIiksCiAJICAgICBzZWN0cCA/ IGJmZF9zZWN0aW9uX25hbWUgKHNlY3RwKSA6ICI8dW5rbm93bj4iLAogCSAgICAgb2JqZmlsZV9u YW1lIChwZXJfb2JqZmlsZS0+b2JqZmlsZSkpOwpAQCAtMTIwODgsNyArMTIyMDIsNyBAQCBjcmVh dGVfZHdvX3VuaXRfaW5fZHdwX3YyIChkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9vYmpmaWxlLAog ICBjb25zdCBjaGFyICpraW5kID0gaXNfZGVidWdfdHlwZXMgPyAiVFUiIDogIkNVIjsKICAgc3Ry dWN0IGR3b19maWxlICpkd29fZmlsZTsKICAgc3RydWN0IGR3b191bml0ICpkd29fdW5pdDsKLSAg c3RydWN0IHZpcnR1YWxfdjJfZHdvX3NlY3Rpb25zIHNlY3Rpb25zOworICBzdHJ1Y3QgdmlydHVh bF92Ml9vcl92NV9kd29fc2VjdGlvbnMgc2VjdGlvbnM7CiAgIHZvaWQgKipkd29fZmlsZV9zbG90 OwogICBpbnQgaTsKIApAQCAtMTIxODQsMjUgKzEyMjk4LDI5IEBAIGNyZWF0ZV9kd29fdW5pdF9p bl9kd3BfdjIgKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUsCiAgICAgICBkd29fZmls ZS0+ZHdvX25hbWUgPSBwZXJfb2JqZmlsZS0+b2JqZmlsZS0+aW50ZXJuICh2aXJ0dWFsX2R3b19u YW1lKTsKICAgICAgIGR3b19maWxlLT5jb21wX2RpciA9IGNvbXBfZGlyOwogICAgICAgZHdvX2Zp bGUtPnNlY3Rpb25zLmFiYnJldiA9Ci0JY3JlYXRlX2R3cF92Ml9zZWN0aW9uIChwZXJfb2JqZmls ZSwgJmR3cF9maWxlLT5zZWN0aW9ucy5hYmJyZXYsCi0JCQkgICAgICAgc2VjdGlvbnMuYWJicmV2 X29mZnNldCwgc2VjdGlvbnMuYWJicmV2X3NpemUpOworCWNyZWF0ZV9kd3BfdjJfb3JfdjVfc2Vj dGlvbiAocGVyX29iamZpbGUsICZkd3BfZmlsZS0+c2VjdGlvbnMuYWJicmV2LAorCQkJCSAgICAg c2VjdGlvbnMuYWJicmV2X29mZnNldCwKKwkJCQkgICAgIHNlY3Rpb25zLmFiYnJldl9zaXplKTsK ICAgICAgIGR3b19maWxlLT5zZWN0aW9ucy5saW5lID0KLQljcmVhdGVfZHdwX3YyX3NlY3Rpb24g KHBlcl9vYmpmaWxlLCAmZHdwX2ZpbGUtPnNlY3Rpb25zLmxpbmUsCi0JCQkgICAgICAgc2VjdGlv bnMubGluZV9vZmZzZXQsIHNlY3Rpb25zLmxpbmVfc2l6ZSk7CisJY3JlYXRlX2R3cF92Ml9vcl92 NV9zZWN0aW9uIChwZXJfb2JqZmlsZSwgJmR3cF9maWxlLT5zZWN0aW9ucy5saW5lLAorCQkJCSAg ICAgc2VjdGlvbnMubGluZV9vZmZzZXQsCisJCQkJICAgICBzZWN0aW9ucy5saW5lX3NpemUpOwog ICAgICAgZHdvX2ZpbGUtPnNlY3Rpb25zLmxvYyA9Ci0JY3JlYXRlX2R3cF92Ml9zZWN0aW9uIChw ZXJfb2JqZmlsZSwgJmR3cF9maWxlLT5zZWN0aW9ucy5sb2MsCi0JCQkgICAgICAgc2VjdGlvbnMu bG9jX29mZnNldCwgc2VjdGlvbnMubG9jX3NpemUpOworCWNyZWF0ZV9kd3BfdjJfb3JfdjVfc2Vj dGlvbiAocGVyX29iamZpbGUsICZkd3BfZmlsZS0+c2VjdGlvbnMubG9jLAorCQkJCSAgICAgc2Vj dGlvbnMubG9jX29mZnNldCwgc2VjdGlvbnMubG9jX3NpemUpOwogICAgICAgZHdvX2ZpbGUtPnNl Y3Rpb25zLm1hY2luZm8gPQotCWNyZWF0ZV9kd3BfdjJfc2VjdGlvbiAocGVyX29iamZpbGUsICZk d3BfZmlsZS0+c2VjdGlvbnMubWFjaW5mbywKLQkJCSAgICAgICBzZWN0aW9ucy5tYWNpbmZvX29m ZnNldCwgc2VjdGlvbnMubWFjaW5mb19zaXplKTsKKwljcmVhdGVfZHdwX3YyX29yX3Y1X3NlY3Rp b24gKHBlcl9vYmpmaWxlLCAmZHdwX2ZpbGUtPnNlY3Rpb25zLm1hY2luZm8sCisJCQkJICAgICBz ZWN0aW9ucy5tYWNpbmZvX29mZnNldCwKKwkJCQkgICAgIHNlY3Rpb25zLm1hY2luZm9fc2l6ZSk7 CiAgICAgICBkd29fZmlsZS0+c2VjdGlvbnMubWFjcm8gPQotCWNyZWF0ZV9kd3BfdjJfc2VjdGlv biAocGVyX29iamZpbGUsICZkd3BfZmlsZS0+c2VjdGlvbnMubWFjcm8sCi0JCQkgICAgICAgc2Vj dGlvbnMubWFjcm9fb2Zmc2V0LCBzZWN0aW9ucy5tYWNyb19zaXplKTsKKwljcmVhdGVfZHdwX3Yy X29yX3Y1X3NlY3Rpb24gKHBlcl9vYmpmaWxlLCAmZHdwX2ZpbGUtPnNlY3Rpb25zLm1hY3JvLAor CQkJCSAgICAgc2VjdGlvbnMubWFjcm9fb2Zmc2V0LAorCQkJCSAgICAgc2VjdGlvbnMubWFjcm9f c2l6ZSk7CiAgICAgICBkd29fZmlsZS0+c2VjdGlvbnMuc3RyX29mZnNldHMgPQotCWNyZWF0ZV9k d3BfdjJfc2VjdGlvbiAocGVyX29iamZpbGUsCi0JCQkgICAgICAgJmR3cF9maWxlLT5zZWN0aW9u cy5zdHJfb2Zmc2V0cywKLQkJCSAgICAgICBzZWN0aW9ucy5zdHJfb2Zmc2V0c19vZmZzZXQsCi0J CQkgICAgICAgc2VjdGlvbnMuc3RyX29mZnNldHNfc2l6ZSk7CisJY3JlYXRlX2R3cF92Ml9vcl92 NV9zZWN0aW9uIChwZXJfb2JqZmlsZSwKKwkJCQkgICAgICZkd3BfZmlsZS0+c2VjdGlvbnMuc3Ry X29mZnNldHMsCisJCQkJICAgICBzZWN0aW9ucy5zdHJfb2Zmc2V0c19vZmZzZXQsCisJCQkJICAg ICBzZWN0aW9ucy5zdHJfb2Zmc2V0c19zaXplKTsKICAgICAgIC8qIFRoZSAic3RyIiBzZWN0aW9u IGlzIGdsb2JhbCB0byB0aGUgZW50aXJlIERXUCBmaWxlLiAgKi8KICAgICAgIGR3b19maWxlLT5z ZWN0aW9ucy5zdHIgPSBkd3BfZmlsZS0+c2VjdGlvbnMuc3RyOwogICAgICAgLyogVGhlIGluZm8g b3IgdHlwZXMgc2VjdGlvbiBpcyBhc3NpZ25lZCBiZWxvdyB0byBkd29fdW5pdCwKQEAgLTEyMjI5 LDEyICsxMjM0NywyMDAgQEAgY3JlYXRlX2R3b191bml0X2luX2R3cF92MiAoZHdhcmYyX3Blcl9v YmpmaWxlICpwZXJfb2JqZmlsZSwKICAgZHdvX3VuaXQtPnNpZ25hdHVyZSA9IHNpZ25hdHVyZTsK ICAgZHdvX3VuaXQtPnNlY3Rpb24gPQogICAgIFhPQk5FVyAoJnBlcl9vYmpmaWxlLT5wZXJfYmZk LT5vYnN0YWNrLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyk7Ci0gICpkd29fdW5pdC0+c2Vj dGlvbiA9IGNyZWF0ZV9kd3BfdjJfc2VjdGlvbiAocGVyX29iamZpbGUsCi0JCQkJCSAgICAgIGlz X2RlYnVnX3R5cGVzCi0JCQkJCSAgICAgID8gJmR3cF9maWxlLT5zZWN0aW9ucy50eXBlcwotCQkJ CQkgICAgICA6ICZkd3BfZmlsZS0+c2VjdGlvbnMuaW5mbywKLQkJCQkJICAgICAgc2VjdGlvbnMu aW5mb19vcl90eXBlc19vZmZzZXQsCi0JCQkJCSAgICAgIHNlY3Rpb25zLmluZm9fb3JfdHlwZXNf c2l6ZSk7CisgICpkd29fdW5pdC0+c2VjdGlvbiA9IGNyZWF0ZV9kd3BfdjJfb3JfdjVfc2VjdGlv bgorICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJfb2JqZmlsZSwKKwkJCSAgaXNfZGVidWdf dHlwZXMKKwkJCSAgPyAmZHdwX2ZpbGUtPnNlY3Rpb25zLnR5cGVzCisJCQkgIDogJmR3cF9maWxl LT5zZWN0aW9ucy5pbmZvLAorCQkJICBzZWN0aW9ucy5pbmZvX29yX3R5cGVzX29mZnNldCwKKwkJ CSAgc2VjdGlvbnMuaW5mb19vcl90eXBlc19zaXplKTsKKyAgLyogZHdvX3VuaXQtPntvZmZzZXQs bGVuZ3RoLHR5cGVfb2Zmc2V0X2luX3R1fSBhcmUgc2V0IGxhdGVyLiAgKi8KKworICByZXR1cm4g ZHdvX3VuaXQ7Cit9CisKKy8qIENyZWF0ZSBhIGR3b191bml0IG9iamVjdCBmb3IgdGhlIERXTyB1 bml0IHdpdGggc2lnbmF0dXJlIFNJR05BVFVSRS4KKyAgIFVOSVRfSU5ERVggaXMgdGhlIGluZGV4 IG9mIHRoZSBEV08gdW5pdCBpbiB0aGUgRFdQIGhhc2ggdGFibGUuCisgICBDT01QX0RJUiBpcyB0 aGUgRFdfQVRfY29tcF9kaXIgYXR0cmlidXRlIG9mIHRoZSByZWZlcmVuY2luZyBDVS4KKyAgIFRo aXMgaXMgZm9yIERXUCB2ZXJzaW9uIDUgZmlsZXMuICAqLworCitzdGF0aWMgc3RydWN0IGR3b191 bml0ICoKK2NyZWF0ZV9kd29fdW5pdF9pbl9kd3BfdjUgKHN0cnVjdCBkd2FyZjJfcGVyX29iamZp bGUgKmR3YXJmMl9wZXJfb2JqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBkd3BfZmlsZSAqZHdwX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCB1bml0X2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29t cF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVTE9OR0VTVCBzaWduYXR1cmUsIGlu dCBpc19kZWJ1Z190eXBlcykKK3sKKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJf cGVyX29iamZpbGUtPm9iamZpbGU7CisgIGNvbnN0IHN0cnVjdCBkd3BfaGFzaF90YWJsZSAqZHdw X2h0YWIgPQorICAgIGlzX2RlYnVnX3R5cGVzID8gZHdwX2ZpbGUtPnR1cyA6IGR3cF9maWxlLT5j dXM7CisgIGJmZCAqZGJmZCA9IGR3cF9maWxlLT5kYmZkLmdldCAoKTsKKyAgY29uc3QgY2hhciAq a2luZCA9IGlzX2RlYnVnX3R5cGVzID8gIlRVIiA6ICJDVSI7CisgIHN0cnVjdCBkd29fZmlsZSAq ZHdvX2ZpbGU7CisgIHN0cnVjdCBkd29fdW5pdCAqZHdvX3VuaXQ7CisgIHN0cnVjdCB2aXJ0dWFs X3YyX29yX3Y1X2R3b19zZWN0aW9ucyBzZWN0aW9uczsKKyAgdm9pZCAqKmR3b19maWxlX3Nsb3Q7 CisgIGludCBpOworCisgIGdkYl9hc3NlcnQgKGR3cF9maWxlLT52ZXJzaW9uID09IDUpOworCisg IGlmIChkd2FyZl9yZWFkX2RlYnVnKQorICAgIHsKKyAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywgIlJlYWRpbmcgJXMgJXMvJXMgaW4gRFdQIFY1IGZpbGU6ICVzXG4iLAorICAg ICAgICAgICAgICAgICAgICAgICAgICBraW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICBw dWxvbmdlc3QgKHVuaXRfaW5kZXgpLCBoZXhfc3RyaW5nIChzaWduYXR1cmUpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICBkd3BfZmlsZS0+bmFtZSk7CisgICAgfQorCisgIC8qIEZldGNoIHRo ZSBzZWN0aW9uIG9mZnNldHMgb2YgdGhpcyBEV08gdW5pdC4gICovCisKKyAgbWVtc2V0ICgmc2Vj dGlvbnMsIDAsIHNpemVvZiAoc2VjdGlvbnMpKTsKKworICBmb3IgKGkgPSAwOyBpIDwgZHdwX2h0 YWItPm5yX2NvbHVtbnM7ICsraSkKKyAgICB7CisgICAgICB1aW50MzJfdCBvZmZzZXQgPSByZWFk XzRfYnl0ZXMgKGRiZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR3 cF9odGFiLT5zZWN0aW9uX3Bvb2wudjUub2Zmc2V0cworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArICgoKHVuaXRfaW5kZXggLSAxKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKiBkd3BfaHRhYi0+bnJfY29sdW1ucworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqIHNpemVvZiAodWludDMyX3QpKSk7CisgICAgICB1aW50MzJf dCBzaXplID0gcmVhZF80X2J5dGVzIChkYmZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZHdwX2h0YWItPnNlY3Rpb25fcG9vbC52NS5zaXplcworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKyAoKCh1bml0X2luZGV4IC0gMSkgKiBkd3BfaHRhYi0+bnJf Y29sdW1ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgaSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc2l6ZW9mICh1aW50MzJfdCkp KTsKKworICAgICAgc3dpdGNoIChkd3BfaHRhYi0+c2VjdGlvbl9wb29sLnY1LnNlY3Rpb25faWRz W2ldKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBEV19TRUNUX0FCQlJFVl9WNToKKyAgICAg ICAgICAgIHNlY3Rpb25zLmFiYnJldl9vZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgICAgICBzZWN0 aW9ucy5hYmJyZXZfc2l6ZSA9IHNpemU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBj YXNlIERXX1NFQ1RfSU5GT19WNToKKyAgICAgICAgICAgIHNlY3Rpb25zLmluZm9fb3JfdHlwZXNf b2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICAgICAgc2VjdGlvbnMuaW5mb19vcl90eXBlc19zaXpl ID0gc2l6ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRFdfU0VDVF9MSU5F X1Y1OgorICAgICAgICAgICAgc2VjdGlvbnMubGluZV9vZmZzZXQgPSBvZmZzZXQ7CisgICAgICAg ICAgICBzZWN0aW9ucy5saW5lX3NpemUgPSBzaXplOworICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgY2FzZSBEV19TRUNUX0xPQ0xJU1RTX1Y1OgorICAgICAgICAgICAgc2VjdGlvbnMubG9j bGlzdHNfb2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICAgICAgc2VjdGlvbnMubG9jbGlzdHNfc2l6 ZSA9IHNpemU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIERXX1NFQ1RfTUFD Uk9fVjU6CisgICAgICAgICAgICBzZWN0aW9ucy5tYWNyb19vZmZzZXQgPSBvZmZzZXQ7CisgICAg ICAgICAgICBzZWN0aW9ucy5tYWNyb19zaXplID0gc2l6ZTsKKyAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgIGNhc2UgRFdfU0VDVF9STkdMSVNUU19WNToKKyAgICAgICAgICAgIHNlY3Rpb25z LnJuZ2xpc3RzX29mZnNldCA9IG9mZnNldDsKKyAgICAgICAgICAgIHNlY3Rpb25zLnJuZ2xpc3Rz X3NpemUgPSBzaXplOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBEV19TRUNU X1NUUl9PRkZTRVRTX1Y1OgorICAgICAgICAgICAgc2VjdGlvbnMuc3RyX29mZnNldHNfb2Zmc2V0 ID0gb2Zmc2V0OworICAgICAgICAgICAgc2VjdGlvbnMuc3RyX29mZnNldHNfc2l6ZSA9IHNpemU7 CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIERXX1NFQ1RfUkVTRVJWRURfVjU6 CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg fQorCisgIC8qIEl0J3MgZWFzaWVyIGZvciB0aGUgcmVzdCBvZiB0aGUgY29kZSBpZiB3ZSBmYWtl IGEgc3RydWN0IGR3b19maWxlIGFuZAorICAgICBoYXZlIGR3b191bml0ICJsaXZlIiBpbiB0aGF0 LiAgQXQgbGVhc3QgZm9yIG5vdy4KKworICAgICBUaGUgRFdQIGZpbGUgY2FuIGJlIG1hZGUgdXAg b2YgYSByYW5kb20gY29sbGVjdGlvbiBvZiBDVXMgYW5kIFRVcy4KKyAgICAgSG93ZXZlciwgZm9y IGVhY2ggQ1UgKyBzZXQgb2YgVFVzIHRoYXQgY2FtZSBmcm9tIHRoZSBzYW1lIG9yaWdpbmFsIERX TworICAgICBmaWxlLCB3ZSBjYW4gY29tYmluZSB0aGVtIGJhY2sgaW50byBhIHZpcnR1YWwgRFdP IGZpbGUgdG8gc2F2ZSBzcGFjZQorICAgICAoZmV3ZXIgc3RydWN0IGR3b19maWxlIG9iamVjdHMg dG8gYWxsb2NhdGUpLiAgUmVtZW1iZXIgdGhhdCBmb3IgcmVhbGx5CisgICAgIGxhcmdlIGFwcHMg dGhlcmUgY2FuIGJlIG9uIHRoZSBvcmRlciBvZiA4SyBDVXMgYW5kIDIwMEsgVFVzLCBvciBtb3Jl LiAgKi8KKworICBzdGQ6OnN0cmluZyB2aXJ0dWFsX2R3b19uYW1lID0KKyAgICBzdHJpbmdfcHJp bnRmICgidmlydHVhbC1kd28vJWxkLSVsZC0lbGQtJWxkLSVsZC0lbGQiLAorICAgICAgICAgICAg ICAgICAobG9uZykgKHNlY3Rpb25zLmFiYnJldl9zaXplID8gc2VjdGlvbnMuYWJicmV2X29mZnNl dCA6IDApLAorICAgICAgICAgICAgICAgICAobG9uZykgKHNlY3Rpb25zLmxpbmVfc2l6ZSA/IHNl Y3Rpb25zLmxpbmVfb2Zmc2V0IDogMCksCisgICAgICAgICAgICAgICAgIChsb25nKSAoc2VjdGlv bnMubG9jbGlzdHNfc2l6ZSA/IHNlY3Rpb25zLmxvY2xpc3RzX29mZnNldCA6IDApLAorICAgICAg ICAgICAgICAgICAobG9uZykgKHNlY3Rpb25zLnN0cl9vZmZzZXRzX3NpemUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICA/IHNlY3Rpb25zLnN0cl9vZmZzZXRzX29mZnNldCA6IDApLAorICAg ICAgICAgICAgICAgICAobG9uZykgKHNlY3Rpb25zLm1hY3JvX3NpemUgPyBzZWN0aW9ucy5tYWNy b19vZmZzZXQgOiAwKSwKKyAgICAgICAgICAgICAgICAgKGxvbmcpIChzZWN0aW9ucy5ybmdsaXN0 c19zaXplID8gc2VjdGlvbnMucm5nbGlzdHNfb2Zmc2V0OiAwKSk7CisgIC8qIENhbiB3ZSB1c2Ug YW4gZXhpc3RpbmcgdmlydHVhbCBEV08gZmlsZT8gICovCisgIGR3b19maWxlX3Nsb3QgPSBsb29r dXBfZHdvX2ZpbGVfc2xvdCAoZHdhcmYyX3Blcl9vYmpmaWxlLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxfZHdvX25hbWUuY19zdHIgKCksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcF9kaXIpOworICAvKiBDcmVhdGUg b25lIGlmIG5lY2Vzc2FyeS4gICovCisgIGlmICgqZHdvX2ZpbGVfc2xvdCA9PSBOVUxMKQorICAg IHsKKyAgICAgIGlmIChkd2FyZl9yZWFkX2RlYnVnKQorICAgICAgICB7CisgICAgICAgICAgZnBy aW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiQ3JlYXRpbmcgdmlydHVhbCBEV086ICVzXG4i LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbF9kd29fbmFtZS5jX3N0ciAo KSk7CisgICAgICAgIH0KKyAgICAgIGR3b19maWxlID0gbmV3IHN0cnVjdCBkd29fZmlsZTsKKyAg ICAgIGR3b19maWxlLT5kd29fbmFtZSA9IG9ic3RhY2tfc3RyZHVwICgmb2JqZmlsZS0+b2JqZmls ZV9vYnN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZp cnR1YWxfZHdvX25hbWUpOworICAgICAgZHdvX2ZpbGUtPmNvbXBfZGlyID0gY29tcF9kaXI7Cisg ICAgICBkd29fZmlsZS0+c2VjdGlvbnMuYWJicmV2ID0KKyAgICAgICAgY3JlYXRlX2R3cF92Ml9v cl92NV9zZWN0aW9uIChkd2FyZjJfcGVyX29iamZpbGUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmR3cF9maWxlLT5zZWN0aW9ucy5hYmJyZXYsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMuYWJicmV2X29mZnNldCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy5hYmJyZXZfc2l6ZSk7CisgICAg ICBkd29fZmlsZS0+c2VjdGlvbnMubGluZSA9CisgICAgICAgIGNyZWF0ZV9kd3BfdjJfb3JfdjVf c2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZkd3BfZmlsZS0+c2VjdGlvbnMubGluZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWN0aW9ucy5saW5lX29mZnNldCwgc2VjdGlvbnMubGluZV9zaXpl KTsKKyAgICAgIGR3b19maWxlLT5zZWN0aW9ucy5tYWNybyA9CisgICAgICAgIGNyZWF0ZV9kd3Bf djJfb3JfdjVfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZkd3BfZmlsZS0+c2VjdGlvbnMubWFjcm8sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMubWFjcm9fb2Zmc2V0LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zLm1hY3JvX3NpemUpOworICAg ICAgZHdvX2ZpbGUtPnNlY3Rpb25zLmxvY2xpc3RzID0KKyAgICAgICAgY3JlYXRlX2R3cF92Ml9v cl92NV9zZWN0aW9uIChkd2FyZjJfcGVyX29iamZpbGUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmR3cF9maWxlLT5zZWN0aW9ucy5sb2NsaXN0cywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy5sb2NsaXN0c19vZmZzZXQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMubG9jbGlzdHNfc2l6ZSk7 CisgICAgICBkd29fZmlsZS0+c2VjdGlvbnMucm5nbGlzdHMgPQorICAgICAgICBjcmVhdGVfZHdw X3YyX29yX3Y1X3NlY3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmZHdwX2ZpbGUtPnNlY3Rpb25zLnJuZ2xpc3RzLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zLnJuZ2xpc3RzX29mZnNldCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy5ybmdsaXN0c19z aXplKTsKKyAgICAgIGR3b19maWxlLT5zZWN0aW9ucy5zdHJfb2Zmc2V0cyA9CisgICAgICAgIGNy ZWF0ZV9kd3BfdjJfb3JfdjVfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkd3BfZmlsZS0+c2VjdGlvbnMuc3RyX29mZnNl dHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMuc3RyX29m ZnNldHNfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rp b25zLnN0cl9vZmZzZXRzX3NpemUpOworICAgICAgLyogVGhlICJzdHIiIHNlY3Rpb24gaXMgZ2xv YmFsIHRvIHRoZSBlbnRpcmUgRFdQIGZpbGUuICAqLworICAgICAgZHdvX2ZpbGUtPnNlY3Rpb25z LnN0ciA9IGR3cF9maWxlLT5zZWN0aW9ucy5zdHI7CisgICAgICAvKiBUaGUgaW5mbyBvciB0eXBl cyBzZWN0aW9uIGlzIGFzc2lnbmVkIGJlbG93IHRvIGR3b191bml0LAorICAgICAgICAgdGhlcmUn cyBubyBuZWVkIHRvIHJlY29yZCBpdCBpbiBkd29fZmlsZS4KKyAgICAgICAgIEFsc28sIHdlIGNh bid0IHNpbXBseSByZWNvcmQgdHlwZSBzZWN0aW9ucyBpbiBkd29fZmlsZSBiZWNhdXNlCisgICAg ICAgICB3ZSByZWNvcmQgYSBwb2ludGVyIGludG8gdGhlIHZlY3RvciBpbiBkd29fdW5pdC4gIEFz IHdlIGNvbGxlY3QgbW9yZQorICAgICAgICAgdHlwZXMgd2UnbGwgZ3JvdyB0aGUgdmVjdG9yIGFu ZCBldmVudHVhbGx5IGhhdmUgdG8gcmVhbGxvY2F0ZSBzcGFjZQorICAgICAgICAgZm9yIGl0LCBp bnZhbGlkYXRpbmcgYWxsIGNvcGllcyBvZiBwb2ludGVycyBpbnRvIHRoZSBwcmV2aW91cworICAg ICAgICAgY29udGVudHMuICAqLworICAgICAgKmR3b19maWxlX3Nsb3QgPSBkd29fZmlsZTsKKyAg ICB9CisgIGVsc2UKKyAgICB7CisgICAgICBpZiAoZHdhcmZfcmVhZF9kZWJ1ZykKKyAgICAgICAg eworICAgICAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIlVzaW5nIGV4aXN0 aW5nIHZpcnR1YWwgRFdPOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZp cnR1YWxfZHdvX25hbWUuY19zdHIgKCkpOworICAgICAgICB9CisgICAgICBkd29fZmlsZSA9IChz dHJ1Y3QgZHdvX2ZpbGUgKikgKmR3b19maWxlX3Nsb3Q7CisgICAgfQorCisgIGR3b191bml0ID0g T0JTVEFDS19aQUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHN0cnVjdCBkd29fdW5p dCk7CisgIGR3b191bml0LT5kd29fZmlsZSA9IGR3b19maWxlOworICBkd29fdW5pdC0+c2lnbmF0 dXJlID0gc2lnbmF0dXJlOworICBkd29fdW5pdC0+c2VjdGlvbiA9CisgICAgWE9CTkVXICgmb2Jq ZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyk7CisgICpk d29fdW5pdC0+c2VjdGlvbiA9IGNyZWF0ZV9kd3BfdjJfb3JfdjVfc2VjdGlvbiAoZHdhcmYyX3Bl cl9vYmpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlzX2RlYnVnX3R5cGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPyAmZHdwX2ZpbGUtPnNlY3Rpb25zLnR5cGVzCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOiAmZHdwX2ZpbGUtPnNlY3Rpb25zLmluZm8sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMuaW5mb19v cl90eXBlc19vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VjdGlvbnMuaW5mb19vcl90eXBlc19zaXplKTsKICAgLyogZHdvX3VuaXQtPntvZmZz ZXQsbGVuZ3RoLHR5cGVfb2Zmc2V0X2luX3R1fSBhcmUgc2V0IGxhdGVyLiAgKi8KIAogICByZXR1 cm4gZHdvX3VuaXQ7CkBAIC0xMjI4NywxMiArMTI1OTMsMTggQEAgbG9va3VwX2R3b191bml0X2lu X2R3cCAoZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJfb2JqZmlsZSwKIAkJCQkJCSB1bml0X2luZGV4 LCBjb21wX2RpciwKIAkJCQkJCSBzaWduYXR1cmUsIGlzX2RlYnVnX3R5cGVzKTsKIAkgICAgfQot CSAgZWxzZQorCSAgZWxzZSBpZiAoZHdwX2ZpbGUtPnZlcnNpb24gPT0gMikKIAkgICAgewogCSAg ICAgICpzbG90ID0gY3JlYXRlX2R3b191bml0X2luX2R3cF92MiAocGVyX29iamZpbGUsIGR3cF9m aWxlLAogCQkJCQkJIHVuaXRfaW5kZXgsIGNvbXBfZGlyLAogCQkJCQkJIHNpZ25hdHVyZSwgaXNf ZGVidWdfdHlwZXMpOwogCSAgICB9CisJICBlbHNlIC8vIHZlcnNpb24gPT0gNQorCSAgICB7CisJ ICAgICAgKnNsb3QgPSBjcmVhdGVfZHdvX3VuaXRfaW5fZHdwX3Y1IChwZXJfb2JqZmlsZSwgZHdw X2ZpbGUsCisJCQkJCQkgdW5pdF9pbmRleCwgY29tcF9kaXIsCisJCQkJCQkgc2lnbmF0dXJlLCBp c19kZWJ1Z190eXBlcyk7CisJICAgIH0KIAkgIHJldHVybiAoc3RydWN0IGR3b191bml0ICopICpz bG90OwogCX0KICAgICAgIGlmIChzaWduYXR1cmVfaW5fdGFibGUgPT0gMCkKQEAgLTEyNTU5LDcg KzEyODcxLDcgQEAgZHdhcmYyX2xvY2F0ZV9jb21tb25fZHdwX3NlY3Rpb25zIChiZmQgKmFiZmQs IGFzZWN0aW9uICpzZWN0cCwKIC8qIFRoaXMgZnVuY3Rpb24gaXMgbWFwcGVkIGFjcm9zcyB0aGUg c2VjdGlvbnMgYW5kIHJlbWVtYmVycyB0aGUgb2Zmc2V0IGFuZAogICAgc2l6ZSBvZiBlYWNoIG9m IHRoZSBEV1AgdmVyc2lvbiAyIGRlYnVnZ2luZyBzZWN0aW9ucyB0aGF0IHdlIGFyZSBpbnRlcmVz dGVkCiAgICBpbi4gIFRoaXMgaXMgc3BsaXQgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uIGJlY2F1 c2Ugd2UgZG9uJ3Qga25vdyBpZiB3ZQotICAgaGF2ZSB2ZXJzaW9uIDEgb3IgMiB1bnRpbCB3ZSBw YXJzZSB0aGUgY3VfaW5kZXgvdHVfaW5kZXggc2VjdGlvbnMuICAqLworICAgaGF2ZSB2ZXJzaW9u IDEgb3IgMiBvciA1IHVudGlsIHdlIHBhcnNlIHRoZSBjdV9pbmRleC90dV9pbmRleCBzZWN0aW9u cy4gICovCiAKIHN0YXRpYyB2b2lkCiBkd2FyZjJfbG9jYXRlX3YyX2R3cF9zZWN0aW9ucyAoYmZk ICphYmZkLCBhc2VjdGlvbiAqc2VjdHAsIHZvaWQgKmR3cF9maWxlX3B0cikKQEAgLTEyNjE2LDYg KzEyOTI4LDYxIEBAIGR3YXJmMl9sb2NhdGVfdjJfZHdwX3NlY3Rpb25zIChiZmQgKmFiZmQsIGFz ZWN0aW9uICpzZWN0cCwgdm9pZCAqZHdwX2ZpbGVfcHRyKQogICAgIH0KIH0KIAorLyogVGhpcyBm dW5jdGlvbiBpcyBtYXBwZWQgYWNyb3NzIHRoZSBzZWN0aW9ucyBhbmQgcmVtZW1iZXJzIHRoZSBv ZmZzZXQgYW5kCisgICBzaXplIG9mIGVhY2ggb2YgdGhlIERXUCB2ZXJzaW9uIDUgZGVidWdnaW5n IHNlY3Rpb25zIHRoYXQgd2UgYXJlIGludGVyZXN0ZWQKKyAgIGluLiAgVGhpcyBpcyBzcGxpdCBp bnRvIGEgc2VwYXJhdGUgZnVuY3Rpb24gYmVjYXVzZSB3ZSBkb24ndCBrbm93IGlmIHdlCisgICBo YXZlIHZlcnNpb24gMSBvciAyIG9yIDUgdW50aWwgd2UgcGFyc2UgdGhlIGN1X2luZGV4L3R1X2lu ZGV4IHNlY3Rpb25zLiAgKi8KKworc3RhdGljIHZvaWQKK2R3YXJmMl9sb2NhdGVfdjVfZHdwX3Nl Y3Rpb25zIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0cCwgdm9pZCAqZHdwX2ZpbGVfcHRyKQor eworICBzdHJ1Y3QgZHdwX2ZpbGUgKmR3cF9maWxlID0gKHN0cnVjdCBkd3BfZmlsZSAqKSBkd3Bf ZmlsZV9wdHI7CisgIGNvbnN0IHN0cnVjdCBkd29wX3NlY3Rpb25fbmFtZXMgKm5hbWVzID0gJmR3 b3Bfc2VjdGlvbl9uYW1lczsKKyAgdW5zaWduZWQgaW50IGVsZl9zZWN0aW9uX25yID0gZWxmX3Nl Y3Rpb25fZGF0YSAoc2VjdHApLT50aGlzX2lkeDsKKworICAvKiBSZWNvcmQgdGhlIEVMRiBzZWN0 aW9uIG51bWJlciBmb3IgbGF0ZXIgbG9va3VwOiB0aGlzIGlzIHdoYXQgdGhlCisgICAgIC5kZWJ1 Z19jdV9pbmRleCwuZGVidWdfdHVfaW5kZXggdGFibGVzIHVzZSBpbiBEV1AgVjEuICAqLworICBn ZGJfYXNzZXJ0IChlbGZfc2VjdGlvbl9uciA8IGR3cF9maWxlLT5udW1fc2VjdGlvbnMpOworICBk d3BfZmlsZS0+ZWxmX3NlY3Rpb25zW2VsZl9zZWN0aW9uX25yXSA9IHNlY3RwOworCisgIC8qIExv b2sgZm9yIHNwZWNpZmljIHNlY3Rpb25zIHRoYXQgd2UgbmVlZC4gICovCisgIGlmIChzZWN0aW9u X2lzX3AgKHNlY3RwLT5uYW1lLCAmbmFtZXMtPmFiYnJldl9kd28pKQorICAgIHsKKyAgICAgIGR3 cF9maWxlLT5zZWN0aW9ucy5hYmJyZXYucy5zZWN0aW9uID0gc2VjdHA7CisgICAgICBkd3BfZmls ZS0+c2VjdGlvbnMuYWJicmV2LnNpemUgPSBiZmRfc2VjdGlvbl9zaXplIChzZWN0cCk7CisgICAg fQorICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAmbmFtZXMtPmluZm9fZHdv KSkKKyAgICB7CisgICAgICBkd3BfZmlsZS0+c2VjdGlvbnMuaW5mby5zLnNlY3Rpb24gPSBzZWN0 cDsKKyAgICAgIGR3cF9maWxlLT5zZWN0aW9ucy5pbmZvLnNpemUgPSBiZmRfc2VjdGlvbl9zaXpl IChzZWN0cCk7CisgICAgfQorICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAm bmFtZXMtPmxpbmVfZHdvKSkKKyAgIHsKKyAgICAgZHdwX2ZpbGUtPnNlY3Rpb25zLmxpbmUucy5z ZWN0aW9uID0gc2VjdHA7CisgICAgIGR3cF9maWxlLT5zZWN0aW9ucy5saW5lLnNpemUgPSBiZmRf c2VjdGlvbl9zaXplIChzZWN0cCk7CisgICAgfQorICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNl Y3RwLT5uYW1lLCAmbmFtZXMtPmxvY2xpc3RzX2R3bykpCisgICAgeworICAgICAgZHdwX2ZpbGUt PnNlY3Rpb25zLmxvY2xpc3RzLnMuc2VjdGlvbiA9IHNlY3RwOworICAgICAgZHdwX2ZpbGUtPnNl Y3Rpb25zLmxvY2xpc3RzLnNpemUgPSBiZmRfc2VjdGlvbl9zaXplIChzZWN0cCk7CisgICAgfQor ICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAmbmFtZXMtPm1hY3JvX2R3bykp CisgICAgeworICAgICAgZHdwX2ZpbGUtPnNlY3Rpb25zLm1hY3JvLnMuc2VjdGlvbiA9IHNlY3Rw OworICAgICAgZHdwX2ZpbGUtPnNlY3Rpb25zLm1hY3JvLnNpemUgPSBiZmRfc2VjdGlvbl9zaXpl IChzZWN0cCk7CisgICAgfQorICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAm bmFtZXMtPnJuZ2xpc3RzX2R3bykpCisgICAgeworICAgICAgZHdwX2ZpbGUtPnNlY3Rpb25zLnJu Z2xpc3RzLnMuc2VjdGlvbiA9IHNlY3RwOworICAgICAgZHdwX2ZpbGUtPnNlY3Rpb25zLnJuZ2xp c3RzLnNpemUgPSBiZmRfc2VjdGlvbl9zaXplIChzZWN0cCk7CisgICAgfQorICBlbHNlIGlmIChz ZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAmbmFtZXMtPnN0cl9vZmZzZXRzX2R3bykpCisgICAg eworICAgICAgZHdwX2ZpbGUtPnNlY3Rpb25zLnN0cl9vZmZzZXRzLnMuc2VjdGlvbiA9IHNlY3Rw OworICAgICAgZHdwX2ZpbGUtPnNlY3Rpb25zLnN0cl9vZmZzZXRzLnNpemUgPSBiZmRfc2VjdGlv bl9zaXplIChzZWN0cCk7CisgICAgfQorfQorCiAvKiBIYXNoIGZ1bmN0aW9uIGZvciBkd3BfZmls ZSBsb2FkZWQgQ1VzL1RVcy4gICovCiAKIHN0YXRpYyBoYXNodmFsX3QKQEAgLTEyNzcwLDYgKzEz MTM3LDExIEBAIG9wZW5fYW5kX2luaXRfZHdwX2ZpbGUgKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVy X29iamZpbGUpCiAgICAgYmZkX21hcF9vdmVyX3NlY3Rpb25zIChkd3BfZmlsZS0+ZGJmZC5nZXQg KCksCiAJCQkgICBkd2FyZjJfbG9jYXRlX3YyX2R3cF9zZWN0aW9ucywKIAkJCSAgIGR3cF9maWxl LmdldCAoKSk7CisgIGVsc2UgaWYgKGR3cF9maWxlLT52ZXJzaW9uID09IDUpCisgICAgYmZkX21h cF9vdmVyX3NlY3Rpb25zIChkd3BfZmlsZS0+ZGJmZC5nZXQgKCksCisJCQkgICBkd2FyZjJfbG9j YXRlX3Y1X2R3cF9zZWN0aW9ucywKKwkJCSAgIGR3cF9maWxlLmdldCAoKSk7CisKIAogICBkd3Bf ZmlsZS0+bG9hZGVkX2N1cyA9IGFsbG9jYXRlX2R3cF9sb2FkZWRfY3V0dXNfdGFibGUgKCk7CiAg IGR3cF9maWxlLT5sb2FkZWRfdHVzID0gYWxsb2NhdGVfZHdwX2xvYWRlZF9jdXR1c190YWJsZSAo KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHdhcmYyLmggYi9pbmNsdWRlL2R3YXJmMi5oCmluZGV4 IDg4MjQ1M2RjZTAuLmM1OGYzZjVkNTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHdhcmYyLmgKKysr IGIvaW5jbHVkZS9kd2FyZjIuaApAQCAtNTAyLDYgKzUwMiwyMSBAQCBlbnVtIGR3YXJmX3NlY3QK ICAgICBEV19TRUNUX01BWCA9IDgKICAgfTsKIAorLyogQ29kZXMgZm9yIHRoZSBkZWJ1ZyBzZWN0 aW9ucyBpbiBhIGR3YXJmIHBhY2thZ2UgKC5kd3ApIGZpbGUsCisgICBhY2NvcmRpbmcgdG8gdGhl IG9mZmljaWFsIERXQVJGIHY1IHNwZWMuICovCitlbnVtIGR3YXJmX3NlY3RfdjUKK3sKKyAgICBE V19TRUNUX0lORk9fVjUgPSAxLAorICAgIERXX1NFQ1RfUkVTRVJWRURfVjUgPSAyLAorICAgIERX X1NFQ1RfQUJCUkVWX1Y1ID0gMywKKyAgICBEV19TRUNUX0xJTkVfVjUgPSA0LAorICAgIERXX1NF Q1RfTE9DTElTVFNfVjUgPSA1LAorICAgIERXX1NFQ1RfU1RSX09GRlNFVFNfVjUgPSA2LAorICAg IERXX1NFQ1RfTUFDUk9fVjUgPSA3LAorICAgIERXX1NFQ1RfUk5HTElTVFNfVjUgPSA4LAorICAg IERXX1NFQ1RfTUFYX1Y1ID0gOAorfTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMi IHsKICNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwotLSAKMi4yOC4wLnJjMC4xNDIuZzNjNzU1MTgw Y2UtZ29vZwoK --0000000000002e6dba05ab855bb9--