From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 1F83E38515D6 for ; Fri, 9 Jul 2021 17:05:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1F83E38515D6 Received: from mail-io1-f70.google.com (mail-io1-f70.google.com [209.85.166.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-594-ks6Q8ZFsOQ-l97eIUxQZCA-1; Fri, 09 Jul 2021 13:05:52 -0400 X-MC-Unique: ks6Q8ZFsOQ-l97eIUxQZCA-1 Received: by mail-io1-f70.google.com with SMTP id n23-20020a0566022217b02905125dedcd4eso5087255ion.16 for ; Fri, 09 Jul 2021 10:05:51 -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; bh=XeWZsiZ3PfhzJUUQaqOmMuZaabRy1j85O5xKy4lfYPg=; b=DcaGAxM8WQAmSFlAMmDoQx644OuJrd7HXG02a6OURv0Ulg6GWG+xlABRv1HHWqFWeb 9pO8seABu9AU9aodFJZGcBej4CE++amkRcr1HxNPYRtTFlJ8OmgD5/EF4WDWeq8WCjh1 qLMR688Ff4W69IVzgC3fcQazv9m9qy+xQIKmg2uWmsxy1nQAlofqsDunlexOWdsni51X zBtEnhOCGsIUoabaVilwKVCpfY1yxjZiAYrHg1UpndJEBrP99uJ+yVBJo5T1CrkbmEi+ gWUSKcAH7VYWt3wL6v2vd4VGZnmBNfE/ORVzmmax5ovpmsIVkj93tIKr4fzxgdUUb9Gg 5oFw== X-Gm-Message-State: AOAM533ttI3L/+8Tq8jX+ytKfx+xwocSxc9jqo2wDHl/yRA9Dun2MTpB +krVUwDpz+rYoSoxLryajpOBHr216RzREhbg1RK/h5JrPKIZ5rZBD5zH7LiGpXshIfGNdOljmbs FUPQ/6NTtdMPyhUD1m7IFjAZNCHL1J2O3SsO4TBZmdw== X-Received: by 2002:a6b:b44e:: with SMTP id d75mr10113203iof.194.1625850351044; Fri, 09 Jul 2021 10:05:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyK6tc/g3gzt8UEYs/Rc+jZRSJ3MMLC4bMe+0wfEZBobNln6t2WWSBSJua8s38ZNpKICoUk5tl/UZsthgbmNZk= X-Received: by 2002:a6b:b44e:: with SMTP id d75mr10113190iof.194.1625850350809; Fri, 09 Jul 2021 10:05:50 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Noah Sanci Date: Fri, 9 Jul 2021 13:05:39 -0400 Message-ID: Subject: Re: [debuginfod/25978] To: Mark Wielaard , elfutils-devel@sourceware.org X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="0000000000009e620705c6b3c850" X-Spam-Status: No, score=-13.8 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: elfutils-devel@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Elfutils-devel mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jul 2021 17:05:57 -0000 --0000000000009e620705c6b3c850 Content-Type: text/plain; charset="UTF-8" Hello, That entire 'if' statement is a relic remaining from some ideas I had about testing. I am resending the patch. Thank you for bringing this to my attention, Noah On Fri, Jul 9, 2021 at 10:24 AM Mark Wielaard wrote: > > Hi Noah, > > On Thu, 2021-07-08 at 15:22 -0400, Noah Sanci via Elfutils-devel wrote: > > Please find the patch information for pr25978 attached. > > Thanks for allowing zero as fd and mb size, updating the documentation > and adding comments for where I misunderstood what the code was doing > in the previous review. I like the trick using grep of the vlog to make > sure the reported metrics are correct (although that is slightly > cheating, the metrics report what the log logs). Just one question > about the last test: > > > +######################################################################## > > +## PR25978 > > +# Ensure that the fdcache options are working. > > +grep "prefetch fds" vlog$PORT1 > > +grep "prefetch mbs" vlog$PORT1 > > +grep "fdcache fds" vlog$PORT1 > > +grep "fdcache mbs" vlog$PORT1 > > +# search the vlog to find what metric counts should be and check the correct metrics > > +# were incrimented > > +wait_ready $PORT1 'fdcache_op_count{op="enqueue"}' $( grep -c 'interned.*front=1' vlog$PORT1 ) > > +wait_ready $PORT1 'fdcache_op_count{op="evict"}' $( grep -c 'evicted a=.*' vlog$PORT1 ) > > +wait_ready $PORT1 'fdcache_op_count{op="prefetch_enqueue"}' $( grep -c 'interned.*front=0' vlog$PORT1 ) > > +wait_ready $PORT1 'fdcache_op_count{op="prefetch_evict"}' $( grep -c 'evicted from prefetch a=.*front=0' vlog$PORT1 || true ) > > +# if all enqueued items are also evicted then we should expect prefetch to be empty > > +if [ $PF_ENQUEUED -eq $PF_EVICTED ]; then > > + wait_ready $PORT1 'fdcache_prefetch_bytes' 0 > > + wait_ready $PORT1 'fdcache_prefetch_count' 0 > > +fi > > PF_ENQUEUED and PF_EVICTED are not used or set anywhere, so the if is > always true, so we always check that the prefetch bytes and counts are > zero. Is this intended? > > Thanks, > > Mark > --0000000000009e620705c6b3c850 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-debuginfod-PR25978-Created-the-prefetch-fdcache.patch" Content-Disposition: attachment; filename="0001-debuginfod-PR25978-Created-the-prefetch-fdcache.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kqwl7mk20 RnJvbSA5OTE3OTI3ZDAxMjEwNTgwYTAyMDVmMGVjNjlmZTE1OTQzYjhlOGM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FoIDxuc2FuY2lAcmVkaGF0LmNvbT4KRGF0ZTogVGh1LCAx MCBKdW4gMjAyMSAxMDoyOTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIGRlYnVnaW5mb2Q6IFBS MjU5NzggLSBDcmVhdGVkIHRoZSBwcmVmZXRjaCBmZGNhY2hlCgpUaGUgZGVidWdpbmZvZCBmZGNh Y2hlLXByZWZldGNoIGxvZ2ljIGhhcyBiZWVuIG9ic2VydmVkIHRvIHNob3cgc29tZQpkZWdlbmVy YWNpZXMgaW4gb3BlcmF0aW9uLiAgU2luY2UgZmRjYWNoZSBldmljdGlvbnMgYXJlIGRvbmUKZnJl cXVlbnRseSwgYW5kIGZyZXNobHkgcHJlZmV0Y2hlZCBhcmNoaXZlIGVsZW1lbnRzIGFyZSBwdXQg YXQgdGhlCmJhY2sgb2YgbHJ1W10sIGVhY2ggZXZpY3Rpb24gcm91bmQgY2FuIHN1bW1hcmlseSBu dWtlIHRoaW5ncyB0aGF0CndlcmUganVzdCBwcmVmZXRjaGVkIC4uLi4gYW5kIGFyZSBqdXN0IGdv aW5nIHRvIGJlIHByZWZldGNoZWQgYWdhaW4uCkl0IHdvdWxkIGJlIGJldHRlciB0byBoYXZlIHR3 byBscnUgbGlzdHMsIG9yIGJlaW5nIGFibGUgdG8gaW5zZXJ0Cm5ld2x5IHByZWZldGNoZWQgZW50 cmllcyBzb21ld2hlcmUgaW4gdGhlIG1pZGRsZSBvZiB0aGUgbGlzdCByYXRoZXIKdGhhbiBhdCB0 aGUgdmVyeSB2ZXJ5IGVuZC4KCmh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19i dWcuY2dpP2lkPTI1OTc4CgpTaWduZWQtb2ZmLWJ5OiBOb2FoIFNhbmNpIDxuc2FuY2lAcmVkaGF0 LmNvbT4KLS0tCiBkZWJ1Z2luZm9kL0NoYW5nZUxvZyAgICAgICAgIHwgIDE1ICsrKysKIGRlYnVn aW5mb2QvZGVidWdpbmZvZC5jeHggICAgfCAxNDYgKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0KIGRvYy9kZWJ1Z2luZm9kLjggICAgICAgICAgICAgfCAgMTAgKysrCiB0ZXN0cy9D aGFuZ2VMb2cgICAgICAgICAgICAgIHwgICA3ICsrCiB0ZXN0cy9ydW4tZGVidWdpbmZvZC1maW5k LnNoIHwgIDIwICsrKystCiA1IGZpbGVzIGNoYW5nZWQsIDE3MyBpbnNlcnRpb25zKCspLCAyNSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kZWJ1Z2luZm9kL0NoYW5nZUxvZyBiL2RlYnVnaW5m b2QvQ2hhbmdlTG9nCmluZGV4IDI4NmM5MTBhLi4wMmFkMzRiNCAxMDA2NDQKLS0tIGEvZGVidWdp bmZvZC9DaGFuZ2VMb2cKKysrIGIvZGVidWdpbmZvZC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA QAorMjAyMS0wNi0yOCBOb2FoIFNhbmNpIDxuc2FuY2lAcmVkaGF0LmNvbT4KKworCVBSMjU5NzgK KwkqIGRlYnVnaW5mb2QuY3h4IChvcHRpb25zKTogQWRkZWQgLS1mZGNhY2hlLXByZWZldGNoLWZk cy9tYnMgb3B0aW9ucy4KKwkoc2V0X21ldHJpYyk6IEFkZGVkIGEgY29uZGl0aW9uIGZvciBmZGNh Y2hlX21pbnRtcCB0byBlbnN1cmUgbm8KKwluZWdhdGl2ZSBwZXJjZW50YWdlcyBvciBwZXJjZW50 YWdlcyBsYXJnZXIgdGhhbiAxMDAlIGFyZSBnaXZlbi4KKwkoZ2xvYmFscyk6IEFkZGVkIGZkY2Fj aGVfcHJlZmV0Y2hfbWJzL2ZkY2FjaGVfcHJlZmV0Y2hfZmRzLgorCShzZXRfbWV0cmljcyk6IERp ZmZlcmVudGlhdGUgYmV0d2VlbiBscnUgYW5kIHByZWZldGNoIG1ldHJpY3MuCisJKGludGVybik6 IEFkZGVkIHByZWZldGNoIGZ1bmN0aW9uYWxpdHkgZm9yIG51a2luZyBwcmVleGlzdGluZyBjb3Bp ZXMKKwlhbmQgaW5jcmVtZW50aW5nIHByZWZldGNoIG1ldHJpY3MuCisJKGxvb2t1cCk6IFNlYXJj aCBwcmVmZXRjaCBjYWNoZSBhbmQgaW5jcmVtZW50IGFzc29jaWF0ZWQgbWV0cmljcy4gVXBvbgor CWZpbmRpbmcgaW4gdGhlIHByZWZldGNoIGNhY2hlIG1vdmUgdGhlIGVsZW1lbnQgdG8gdGhlIGxy dSBjYWNoZS4KKwkobGltaXQpOiBBcmd1bWVudHMgdXBkYXRlZC4gVXBkYXRlIHNpemUgb2YgcHJl ZmV0Y2ggY2FjaGUuCisJKG1haW4pOiBMb2cgcHJlZmV0Y2ggYW5kIGNhY2hlIGZkcy9tYnMKKwog MjAyMS0wNi0wMyAgRnJhbmsgQ2guIEVpZ2xlciA8ZmNoZUByZWRoYXQuY29tPgogCiAJUFIyNzg2 MwpkaWZmIC0tZ2l0IGEvZGVidWdpbmZvZC9kZWJ1Z2luZm9kLmN4eCBiL2RlYnVnaW5mb2QvZGVi dWdpbmZvZC5jeHgKaW5kZXggNTQzMDQ0YzYuLmMzNDhhYTYxIDEwMDY0NAotLS0gYS9kZWJ1Z2lu Zm9kL2RlYnVnaW5mb2QuY3h4CisrKyBiL2RlYnVnaW5mb2QvZGVidWdpbmZvZC5jeHgKQEAgLTM2 OCw3ICszNjgsMTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10g PQogICAgeyAiZmRjYWNoZS1wcmVmZXRjaCIsIEFSR1BfS0VZX0ZEQ0FDSEVfUFJFRkVUQ0gsICJO VU0iLCAwLCAiTnVtYmVyIG9mIGFyY2hpdmUgZmlsZXMgdG8gcHJlZmV0Y2ggaW50byBmZGNhY2hl LiIsIDAgfSwKICNkZWZpbmUgQVJHUF9LRVlfRkRDQUNIRV9NSU5UTVAgMHgxMDA0CiAgICB7ICJm ZGNhY2hlLW1pbnRtcCIsIEFSR1BfS0VZX0ZEQ0FDSEVfTUlOVE1QLCAiTlVNIiwgMCwgIk1pbmlt dW0gZnJlZSBzcGFjZSUgb24gdG1wZGlyLiIsIDAgfSwKLSAgIHsgTlVMTCwgMCwgTlVMTCwgMCwg TlVMTCwgMCB9CisjZGVmaW5lIEFSR1BfS0VZX0ZEQ0FDSEVfUFJFRkVUQ0hfTUJTIDB4MTAwNQor ICAgeyAiZmRjYWNoZS1wcmVmZXRjaC1tYnMiLCBBUkdQX0tFWV9GRENBQ0hFX1BSRUZFVENIX01C UywgIk1CIiwgMCwiTWVnYWJ5dGVzIGFsbG9jYXRlZCB0byB0aGUgXAorICAgICAgcHJlZmV0Y2gg Y2FjaGUuIiwgMH0sCisjZGVmaW5lIEFSR1BfS0VZX0ZEQ0FDSEVfUFJFRkVUQ0hfRkRTIDB4MTAw NgorICAgeyAiZmRjYWNoZS1wcmVmZXRjaC1mZHMiLCBBUkdQX0tFWV9GRENBQ0hFX1BSRUZFVENI X0ZEUywgIk5VTSIsIDAsIk51bWJlciBvZiBmaWxlcyBhbGxvY2F0ZWQgdG8gdGhlIFwKKyAgICAg IHByZWZldGNoIGNhY2hlLiIsIDB9LAorICAgeyBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMLCAwIH0s CiAgIH07CiAKIC8qIFNob3J0IGRlc2NyaXB0aW9uIG9mIHByb2dyYW0uICAqLwpAQCAtNDEyLDYg KzQxOCw4IEBAIHN0YXRpYyBsb25nIGZkY2FjaGVfZmRzOwogc3RhdGljIGxvbmcgZmRjYWNoZV9t YnM7CiBzdGF0aWMgbG9uZyBmZGNhY2hlX3ByZWZldGNoOwogc3RhdGljIGxvbmcgZmRjYWNoZV9t aW50bXA7CitzdGF0aWMgbG9uZyBmZGNhY2hlX3ByZWZldGNoX21iczsKK3N0YXRpYyBsb25nIGZk Y2FjaGVfcHJlZmV0Y2hfZmRzOwogc3RhdGljIHN0cmluZyB0bXBkaXI7CiAKIHN0YXRpYyB2b2lk IHNldF9tZXRyaWMoY29uc3Qgc3RyaW5nJiBrZXksIGRvdWJsZSB2YWx1ZSk7CkBAIC01MzgsMTAg KzU0NiwyMiBAQCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywKICAgICAgIGJyZWFrOwog ICAgIGNhc2UgQVJHUF9LRVlfRkRDQUNIRV9NSU5UTVA6CiAgICAgICBmZGNhY2hlX21pbnRtcCA9 IGF0b2wgKGFyZyk7CisgICAgICBpZiggZmRjYWNoZV9taW50bXAgPiAxMDAgfHwgZmRjYWNoZV9t aW50bXAgPCAwICkKKyAgICAgICAgYXJncF9mYWlsdXJlKHN0YXRlLCAxLCBFSU5WQUwsICJmZGNh Y2hlIG1pbnRtcCBwZXJjZW50Iik7CiAgICAgICBicmVhazsKICAgICBjYXNlIEFSR1BfS0VZX0FS RzoKICAgICAgIHNvdXJjZV9wYXRocy5pbnNlcnQoc3RyaW5nKGFyZykpOwogICAgICAgYnJlYWs7 CisgICAgY2FzZSBBUkdQX0tFWV9GRENBQ0hFX1BSRUZFVENIX0ZEUzoKKyAgICAgIGZkY2FjaGVf cHJlZmV0Y2hfZmRzID0gYXRvbChhcmcpOworICAgICAgaWYgKCBmZGNhY2hlX3ByZWZldGNoX2Zk cyA8IDApCisgICAgICAgIGFyZ3BfZmFpbHVyZShzdGF0ZSwgMSwgRUlOVkFMLCAiZmRjYWNoZSBw cmVmZXRjaCBmZHMiKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQVJHUF9LRVlfRkRDQUNIRV9Q UkVGRVRDSF9NQlM6CisgICAgICBmZGNhY2hlX3ByZWZldGNoX21icyA9IGF0b2woYXJnKTsKKyAg ICAgIGlmICggZmRjYWNoZV9wcmVmZXRjaF9tYnMgPCAwKQorICAgICAgICBhcmdwX2ZhaWx1cmUo c3RhdGUsIDEsIEVJTlZBTCwgImZkY2FjaGUgcHJlZmV0Y2ggbWJzIik7CisgICAgICBicmVhazsK ICAgICAgIC8vIGNhc2UgJ2gnOiBhcmdwX3N0YXRlX2hlbHAgKHN0YXRlLCBzdGRlcnIsIEFSR1Bf SEVMUF9MT05HfEFSR1BfSEVMUF9FWElUX09LKTsKICAgICBkZWZhdWx0OiByZXR1cm4gQVJHUF9F UlJfVU5LTk9XTjsKICAgICB9CkBAIC0xMTk5LDIzICsxMjE5LDMyIEBAIHByaXZhdGU6CiAgIH07 CiAgIGRlcXVlPGZkY2FjaGVfZW50cnk+IGxydTsgLy8gQGhlYWQ6IG1vc3QgcmVjZW50bHkgdXNl ZAogICBsb25nIG1heF9mZHM7CisgIGRlcXVlPGZkY2FjaGVfZW50cnk+IHByZWZldGNoOyAvLyBw cmVmZXRjaGVkCiAgIGxvbmcgbWF4X21iczsKKyAgbG9uZyBtYXhfcHJlZmV0Y2hfbWJzOworICBs b25nIG1heF9wcmVmZXRjaF9mZHM7CiAKIHB1YmxpYzoKICAgdm9pZCBzZXRfbWV0cmljcygpCiAg IHsKLSAgICBkb3VibGUgdG90YWxfbWIgPSAwLjA7CisgICAgZG91YmxlIGZkY2FjaGVfbWIgPSAw LjA7CisgICAgZG91YmxlIHByZWZldGNoX21iID0gMC4wOwogICAgIGZvciAoYXV0byBpID0gbHJ1 LmJlZ2luKCk7IGkgPCBscnUuZW5kKCk7IGkrKykKLSAgICAgIHRvdGFsX21iICs9IGktPmZkX3Np emVfbWI7Ci0gICAgc2V0X21ldHJpYygiZmRjYWNoZV9ieXRlcyIsIChpbnQ2NF90KSh0b3RhbF9t YioxMDI0LjAqMTAyNC4wKSk7CisgICAgICBmZGNhY2hlX21iICs9IGktPmZkX3NpemVfbWI7Cisg ICAgZm9yIChhdXRvIGogPSBwcmVmZXRjaC5iZWdpbigpOyBqIDwgcHJlZmV0Y2guZW5kKCk7IGor KykKKyAgICAgIHByZWZldGNoX21iICs9IGotPmZkX3NpemVfbWI7CisgICAgc2V0X21ldHJpYygi ZmRjYWNoZV9ieXRlcyIsIGZkY2FjaGVfbWIqMTAyNC4wKjEwMjQuMCk7CiAgICAgc2V0X21ldHJp YygiZmRjYWNoZV9jb3VudCIsIGxydS5zaXplKCkpOworICAgIHNldF9tZXRyaWMoImZkY2FjaGVf cHJlZmV0Y2hfYnl0ZXMiLCBwcmVmZXRjaF9tYioxMDI0LjAqMTAyNC4wKTsKKyAgICBzZXRfbWV0 cmljKCJmZGNhY2hlX3ByZWZldGNoX2NvdW50IiwgcHJlZmV0Y2guc2l6ZSgpKTsKICAgfQogCiAg IHZvaWQgaW50ZXJuKGNvbnN0IHN0cmluZyYgYSwgY29uc3Qgc3RyaW5nJiBiLCBzdHJpbmcgZmQs IG9mZl90IHN6LCBib29sIGZyb250X3ApCiAgIHsKICAgICB7CiAgICAgICB1bmlxdWVfbG9jazxt dXRleD4gbG9jayhmZGNhY2hlX2xvY2spOwotICAgICAgZm9yIChhdXRvIGkgPSBscnUuYmVnaW4o KTsgaSA8IGxydS5lbmQoKTsgaSsrKSAvLyBudWtlIHByZWV4aXN0aW5nIGNvcHkKKyAgICAgIC8v IG51a2UgcHJlZXhpc3RpbmcgY29weQorICAgICAgZm9yIChhdXRvIGkgPSBscnUuYmVnaW4oKTsg aSA8IGxydS5lbmQoKTsgaSsrKQogICAgICAgICB7CiAgICAgICAgICAgaWYgKGktPmFyY2hpdmUg PT0gYSAmJiBpLT5lbnRyeSA9PSBiKQogICAgICAgICAgICAgewpAQCAtMTIyNSwxNyArMTI1NCwy OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgIGJyZWFrOyAvLyBtdXN0IG5vdCBjb250aW51ZSBp dGVyYXRpbmcKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgLy8gbnVrZSBwcmVleGlz dGluZyBjb3B5IGluIHByZWZldGNoCisgICAgICBmb3IgKGF1dG8gaSA9IHByZWZldGNoLmJlZ2lu KCk7IGkgPCBwcmVmZXRjaC5lbmQoKTsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgaWYgKGkt PmFyY2hpdmUgPT0gYSAmJiBpLT5lbnRyeSA9PSBiKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICB1bmxpbmsgKGktPmZkLmNfc3RyKCkpOworICAgICAgICAgICAgICBwcmVmZXRjaC5lcmFz ZShpKTsKKyAgICAgICAgICAgICAgaW5jX21ldHJpYygiZmRjYWNoZV9vcF9jb3VudCIsIm9wIiwi cHJlZmV0Y2hfZGVxdWV1ZSIpOworICAgICAgICAgICAgICBicmVhazsgLy8gbXVzdCBub3QgY29u dGludWUgaXRlcmF0aW5nCisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgIGRvdWJsZSBt YiA9IChzeis2NTUzNSkvMTA0ODU3Ni4wOyAvLyByb3VuZCB1cCB0byA2NEsgYmxvY2sKICAgICAg IGZkY2FjaGVfZW50cnkgbiA9IHsgYSwgYiwgZmQsIG1iIH07CiAgICAgICBpZiAoZnJvbnRfcCkK ICAgICAgICAgewotICAgICAgICAgIGluY19tZXRyaWMoImZkY2FjaGVfb3BfY291bnQiLCJvcCIs ImVucXVldWVfZnJvbnQiKTsKKyAgICAgICAgICBpbmNfbWV0cmljKCJmZGNhY2hlX29wX2NvdW50 Iiwib3AiLCJlbnF1ZXVlIik7CiAgICAgICAgICAgbHJ1LnB1c2hfZnJvbnQobik7CiAgICAgICAg IH0KICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgIGluY19tZXRyaWMoImZkY2FjaGVf b3BfY291bnQiLCJvcCIsImVucXVldWVfYmFjayIpOwotICAgICAgICAgIGxydS5wdXNoX2JhY2so bik7CisgICAgICAgICAgaW5jX21ldHJpYygiZmRjYWNoZV9vcF9jb3VudCIsIm9wIiwicHJlZmV0 Y2hfZW5xdWV1ZSIpOworICAgICAgICAgIHByZWZldGNoLnB1c2hfZnJvbnQobik7CiAgICAgICAg IH0KICAgICAgIGlmICh2ZXJib3NlID4gMykKICAgICAgICAgb2JhdGNoZWQoY2xvZykgPDwgImZk Y2FjaGUgaW50ZXJuZWQgYT0iIDw8IGEgPDwgIiBiPSIgPDwgYgpAQCAtMTI0OCwxMCArMTI4OCwx MCBAQCBwdWJsaWM6CiAgICAgICB7CiAgICAgICAgIGluY19tZXRyaWMoImZkY2FjaGVfb3BfY291 bnQiLCJvcCIsImVtZXJnLWZsdXNoIik7CiAgICAgICAgIG9iYXRjaGVkKGNsb2cpIDw8ICJmZGNh Y2hlIGVtZXJnZW5jeSBmbHVzaCBmb3IgZmlsbGluZyB0bXBkaXIiIDw8IGVuZGw7Ci0gICAgICAg IHRoaXMtPmxpbWl0KDAsIDApOyAvLyBlbWVyZ2VuY3kgZmx1c2gKKyAgICAgICAgdGhpcy0+bGlt aXQoMCwgMCwgMCwgMCk7IC8vIGVtZXJnZW5jeSBmbHVzaAogICAgICAgfQogICAgIGVsc2UgaWYg KGZyb250X3ApCi0gICAgICB0aGlzLT5saW1pdChtYXhfZmRzLCBtYXhfbWJzKTsgLy8gYWdlIGNh Y2hlIGlmIHJlcXVpcmVkCisgICAgICB0aGlzLT5saW1pdChtYXhfZmRzLCBtYXhfbWJzLCBtYXhf cHJlZmV0Y2hfZmRzLCBtYXhfcHJlZmV0Y2hfbWJzKTsgLy8gYWdlIGNhY2hlIGlmIHJlcXVpcmVk CiAgIH0KIAogICBpbnQgbG9va3VwKGNvbnN0IHN0cmluZyYgYSwgY29uc3Qgc3RyaW5nJiBiKQpA QCAtMTI2Nyw3ICsxMzA3LDIxIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgbHJ1LmVyYXNlKGkp OyAvLyBpbnZhbGlkYXRlcyBpLCBzbyBubyBtb3JlIGl0ZXJhdGlvbiEKICAgICAgICAgICAgICAg bHJ1LnB1c2hfZnJvbnQobik7CiAgICAgICAgICAgICAgIGluY19tZXRyaWMoImZkY2FjaGVfb3Bf Y291bnQiLCJvcCIsInJlcXVldWVfZnJvbnQiKTsKLSAgICAgICAgICAgICAgZmQgPSBvcGVuKG4u ZmQuY19zdHIoKSwgT19SRE9OTFkpOyAvLyBOQjogbm8gcHJvYmxlbSBpZiBkdXAoKSBmYWlsczsg bG9va3MgbGlrZSBjYWNoZSBtaXNzCisgICAgICAgICAgICAgIGZkID0gb3BlbihuLmZkLmNfc3Ry KCksIE9fUkRPTkxZKTsgCisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg ICAgICB9CisgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggcHJlZmV0Y2ggd2hpbGUgZmQgPT0gLTEg dG8gZW5zdXJlIHRoYXQgbm8gZHVwbGljYXRpb24gYmV0d2VlbiBscnUgYW5kIAorICAgICAgLy8g cHJlZmV0Y2ggb2NjdXJzLgorICAgICAgZm9yICggYXV0byBpID0gcHJlZmV0Y2guYmVnaW4oKTsg ZmQgPT0gLTEgJiYgaSA8IHByZWZldGNoLmVuZCgpOyArK2kpCisgICAgICAgIHsKKyAgICAgICAg ICBpZiAoaS0+YXJjaGl2ZSA9PSBhICYmIGktPmVudHJ5ID09IGIpCisgICAgICAgICAgICB7IC8v IGZvdW5kIGl0OyB0YWtlIHRoZSBlbnRyeSBmcm9tIHRoZSBwcmVmZXRjaCBkZXF1ZSB0byB0aGUg bHJ1IGRlcXVlLCBzaW5jZSBpdCBoYXMgbm93IGJlZW4gYWNjZXNzZWQuCisgICAgICAgICAgICAg IGZkY2FjaGVfZW50cnkgbiA9ICppOworICAgICAgICAgICAgICBwcmVmZXRjaC5lcmFzZShpKTsK KyAgICAgICAgICAgICAgbHJ1LnB1c2hfZnJvbnQobik7CisgICAgICAgICAgICAgIGluY19tZXRy aWMoImZkY2FjaGVfb3BfY291bnQiLCJvcCIsInByZWZldGNoX2FjY2VzcyIpOworICAgICAgICAg ICAgICBmZCA9IG9wZW4obi5mZC5jX3N0cigpLCBPX1JET05MWSk7IAogICAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTI3NywxMCArMTMzMSwxMCBAQCBw dWJsaWM6CiAgICAgICB7CiAgICAgICAgIGluY19tZXRyaWMoImZkY2FjaGVfb3BfY291bnQiLCJv cCIsImVtZXJnLWZsdXNoIik7CiAgICAgICAgIG9iYXRjaGVkKGNsb2cpIDw8ICJmZGNhY2hlIGVt ZXJnZW5jeSBmbHVzaCBmb3IgZmlsbGluZyB0bXBkaXIiOwotICAgICAgICB0aGlzLT5saW1pdCgw LCAwKTsgLy8gZW1lcmdlbmN5IGZsdXNoCisgICAgICAgIHRoaXMtPmxpbWl0KDAsIDAsIDAsIDAp OyAvLyBlbWVyZ2VuY3kgZmx1c2gKICAgICAgIH0KICAgICBlbHNlIGlmIChmZCA+PSAwKQotICAg ICAgdGhpcy0+bGltaXQobWF4X2ZkcywgbWF4X21icyk7IC8vIGFnZSBjYWNoZSBpZiByZXF1aXJl ZAorICAgICAgdGhpcy0+bGltaXQobWF4X2ZkcywgbWF4X21icywgbWF4X3ByZWZldGNoX2Zkcywg bWF4X3ByZWZldGNoX21icyk7IC8vIGFnZSBjYWNoZSBpZiByZXF1aXJlZAogCiAgICAgcmV0dXJu IGZkOwogICB9CkBAIC0xMjk2LDYgKzEzNTAsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0 dXJuIHRydWU7CiAgICAgICAgICAgfQogICAgICAgfQorICAgIGZvciAoYXV0byBpID0gcHJlZmV0 Y2guYmVnaW4oKTsgaSA8IHByZWZldGNoLmVuZCgpOyBpKyspCisgICAgICB7CisgICAgICAgIGlm IChpLT5hcmNoaXZlID09IGEgJiYgaS0+ZW50cnkgPT0gYikKKyAgICAgICAgICB7CisgICAgICAg ICAgICBpbmNfbWV0cmljKCJmZGNhY2hlX29wX2NvdW50Iiwib3AiLCJwcmVmZXRjaF9wcm9iZV9o aXQiKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIH0KKyAgICAgIH0KICAg ICBpbmNfbWV0cmljKCJmZGNhY2hlX29wX2NvdW50Iiwib3AiLCJwcm9iZV9taXNzIik7CiAgICAg cmV0dXJuIGZhbHNlOwogICB9CkBAIC0xMzA2LDcgKzEzNjgsNyBAQCBwdWJsaWM6CiAgICAgZm9y IChhdXRvIGkgPSBscnUuYmVnaW4oKTsgaSA8IGxydS5lbmQoKTsgaSsrKQogICAgICAgewogICAg ICAgICBpZiAoaS0+YXJjaGl2ZSA9PSBhICYmIGktPmVudHJ5ID09IGIpCi0gICAgICAgICAgeyAv LyBmb3VuZCBpdDsgbW92ZSBpdCB0byBoZWFkIG9mIGxydQorICAgICAgICAgIHsgLy8gZm91bmQg aXQ7IGVyYXNlIGl0IGZyb20gbHJ1CiAgICAgICAgICAgICBmZGNhY2hlX2VudHJ5IG4gPSAqaTsK ICAgICAgICAgICAgIGxydS5lcmFzZShpKTsgLy8gaW52YWxpZGF0ZXMgaSwgc28gbm8gbW9yZSBp dGVyYXRpb24hCiAgICAgICAgICAgICBpbmNfbWV0cmljKCJmZGNhY2hlX29wX2NvdW50Iiwib3Ai LCJjbGVhciIpOwpAQCAtMTMxNSwxMCArMTM3NywyMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBy ZXR1cm47CiAgICAgICAgICAgfQogICAgICAgfQorICAgIGZvciAoYXV0byBpID0gcHJlZmV0Y2gu YmVnaW4oKTsgaSA8IHByZWZldGNoLmVuZCgpOyBpKyspCisgICAgICB7CisgICAgICAgIGlmIChp LT5hcmNoaXZlID09IGEgJiYgaS0+ZW50cnkgPT0gYikKKyAgICAgICAgICB7IC8vIGZvdW5kIGl0 OyBlcmFzZSBpdCBmcm9tIGxydQorICAgICAgICAgICAgZmRjYWNoZV9lbnRyeSBuID0gKmk7Cisg ICAgICAgICAgICBwcmVmZXRjaC5lcmFzZShpKTsgLy8gaW52YWxpZGF0ZXMgaSwgc28gbm8gbW9y ZSBpdGVyYXRpb24hCisgICAgICAgICAgICBpbmNfbWV0cmljKCJmZGNhY2hlX29wX2NvdW50Iiwi b3AiLCJwcmVmZXRjaF9jbGVhciIpOworICAgICAgICAgICAgdW5saW5rIChuLmZkLmNfc3RyKCkp OworICAgICAgICAgICAgc2V0X21ldHJpY3MoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg ICAgICB9CisgICAgICB9CiAgIH0KIAotCi0gIHZvaWQgbGltaXQobG9uZyBtYXhmZHMsIGxvbmcg bWF4bWJzLCBib29sIG1ldHJpY3NfcCA9IHRydWUpCisgIHZvaWQgbGltaXQobG9uZyBtYXhmZHMs IGxvbmcgbWF4bWJzLCBsb25nIG1heHByZWZldGNoZmRzLCBsb25nIG1heHByZWZldGNobWJzICwg Ym9vbCBtZXRyaWNzX3AgPSB0cnVlKQogICB7CiAgICAgaWYgKHZlcmJvc2UgPiAzICYmICh0aGlz LT5tYXhfZmRzICE9IG1heGZkcyB8fCB0aGlzLT5tYXhfbWJzICE9IG1heG1icykpCiAgICAgICBv YmF0Y2hlZChjbG9nKSA8PCAiZmRjYWNoZSBsaW1pdGVkIHRvIG1heGZkcz0iIDw8IG1heGZkcyA8 PCAiIG1heG1icz0iIDw8IG1heG1icyA8PCBlbmRsOwpAQCAtMTMyNiw3ICsxMzk5LDggQEAgcHVi bGljOgogICAgIHVuaXF1ZV9sb2NrPG11dGV4PiBsb2NrKGZkY2FjaGVfbG9jayk7CiAgICAgdGhp cy0+bWF4X2ZkcyA9IG1heGZkczsKICAgICB0aGlzLT5tYXhfbWJzID0gbWF4bWJzOwotCisgICAg dGhpcy0+bWF4X3ByZWZldGNoX2ZkcyA9IG1heHByZWZldGNoZmRzOworICAgIHRoaXMtPm1heF9w cmVmZXRjaF9tYnMgPSBtYXhwcmVmZXRjaG1iczsKICAgICBsb25nIHRvdGFsX2ZkID0gMDsKICAg ICBkb3VibGUgdG90YWxfbWIgPSAwLjA7CiAgICAgZm9yIChhdXRvIGkgPSBscnUuYmVnaW4oKTsg aSA8IGxydS5lbmQoKTsgaSsrKQpAQCAtMTMzNCw3ICsxNDA4LDcgQEAgcHVibGljOgogICAgICAg ICAvLyBhY2N1bXVsYXRlIHRvdGFscyBmcm9tIG1vc3QgcmVjZW50bHkgdXNlZCBvbmUgZ29pbmcg YmFja3dhcmQKICAgICAgICAgdG90YWxfZmQgKys7CiAgICAgICAgIHRvdGFsX21iICs9IGktPmZk X3NpemVfbWI7Ci0gICAgICAgIGlmICh0b3RhbF9mZCA+IG1heF9mZHMgfHwgdG90YWxfbWIgPiBt YXhfbWJzKQorICAgICAgICBpZiAodG90YWxfZmQgPiB0aGlzLT5tYXhfZmRzIHx8IHRvdGFsX21i ID4gdGhpcy0+bWF4X21icykKICAgICAgICAgICB7CiAgICAgICAgICAgICAvLyBmb3VuZCB0aGUg Y3V0IGhlcmUgcG9pbnQhCiAKQEAgLTEzNTIsNiArMTQyNiwyOSBAQCBwdWJsaWM6CiAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgICB9CiAgICAgICB9CisgICAgdG90YWxfZmQgPSAwOworICAg IHRvdGFsX21iID0gMC4wOworICAgIGZvcihhdXRvIGkgPSBwcmVmZXRjaC5iZWdpbigpOyBpIDwg cHJlZmV0Y2guZW5kKCk7IGkrKyl7CisgICAgICAvLyBhY2N1bXVsYXRlIHRvdGFscyBmcm9tIG1v c3QgcmVjZW50bHkgdXNlZCBvbmUgZ29pbmcgYmFja3dhcmQKKyAgICAgICAgdG90YWxfZmQgKys7 CisgICAgICAgIHRvdGFsX21iICs9IGktPmZkX3NpemVfbWI7CisgICAgICAgIGlmICh0b3RhbF9m ZCA+IHRoaXMtPm1heF9wcmVmZXRjaF9mZHMgfHwgdG90YWxfbWIgPiB0aGlzLT5tYXhfcHJlZmV0 Y2hfbWJzKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8vIGZvdW5kIHRoZSBjdXQgaGVyZSBw b2ludCEKKyAgICAgICAgICAgIGZvciAoYXV0byBqID0gaTsgaiA8IHByZWZldGNoLmVuZCgpOyBq KyspIC8vIGNsb3NlIGFsbCB0aGUgZmRzIGZyb20gaGVyZSBvbiBpbgorICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UgPiAzKQorICAgICAgICAgICAgICAgICAgb2Jh dGNoZWQoY2xvZykgPDwgImZkY2FjaGUgZXZpY3RlZCBmcm9tIHByZWZldGNoIGE9IiA8PCBqLT5h cmNoaXZlIDw8ICIgYj0iIDw8IGotPmVudHJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8PCAiIGZkPSIgPDwgai0+ZmQgPDwgIiBtYj0iIDw8IGotPmZkX3NpemVfbWIgPDwgZW5k bDsKKyAgICAgICAgICAgICAgICBpZiAobWV0cmljc19wKQorICAgICAgICAgICAgICAgICAgaW5j X21ldHJpYygiZmRjYWNoZV9vcF9jb3VudCIsIm9wIiwicHJlZmV0Y2hfZXZpY3QiKTsKKyAgICAg ICAgICAgICAgICB1bmxpbmsgKGotPmZkLmNfc3RyKCkpOworICAgICAgICAgICAgICB9CisKKyAg ICAgICAgICAgIHByZWZldGNoLmVyYXNlKGksIHByZWZldGNoLmVuZCgpKTsgLy8gZXJhc2UgdGhl IG5vZGVzIGdlbmVyYWxseQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgIH0K ICAgICBpZiAobWV0cmljc19wKSBzZXRfbWV0cmljcygpOwogICB9CiAKQEAgLTEzNjAsNyArMTQ1 Nyw3IEBAIHB1YmxpYzoKICAgewogICAgIC8vIHVubGluayBhbnkgZmRjYWNoZSBlbnRyaWVzIGlu ICRUTVBESVIKICAgICAvLyBkb24ndCB1cGRhdGUgbWV0cmljczsgdGhvc2UgZ2xvYmFscyBtYXkg YmUgYWxyZWFkeSBkZXN0cm95ZWQKLSAgICBsaW1pdCgwLCAwLCBmYWxzZSk7CisgICAgbGltaXQo MCwgMCwgMCwgMCwgZmFsc2UpOwogICB9CiB9Owogc3RhdGljIGxpYmFyY2hpdmVfZmRjYWNoZSBm ZGNhY2hlOwpAQCAtMTU0Nyw3ICsxNjQ0LDcgQEAgaGFuZGxlX2J1aWxkaWRfcl9tYXRjaCAoYm9v bCBpbnRlcm5hbF9yZXFfcCwKICAgICAgICAgICAvLyByZXNwb25zaWJsZSBmb3IgdW5saW5raW5n IGl0IGxhdGVyLgogICAgICAgICAgIGZkY2FjaGUuaW50ZXJuKGJfc291cmNlMCwgZm4sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgdG1wcGF0aCwgYXJjaGl2ZV9lbnRyeV9zaXplKGUpLAotICAg ICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsgLy8gcHJlZmV0Y2hlZCBvbmVzIGdvIHRvIGJh Y2sgb2YgbHJ1CisgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOyAvLyBwcmVmZXRjaGVk IG9uZXMgZ28gdG8gdGhlIHByZWZldGNoIGNhY2hlCiAgICAgICAgICAgcHJlZmV0Y2hfY291bnQg LS07CiAgICAgICAgICAgY2xvc2UgKGZkKTsgLy8gd2UncmUgbm90IHNhdmluZyB0aGlzIGZkIHRv IG1ha2UgYSBtaGQtcmVzcG9uc2UgZnJvbSEKICAgICAgICAgICBjb250aW51ZTsKQEAgLTMyOTMs OCArMzM5MCw4IEBAIHZvaWQgZ3Jvb20oKQogICBzcWxpdGUzX2RiX3JlbGVhc2VfbWVtb3J5KGRi cSk7IC8vIC4uLiBmb3IgYm90aCBjb25uZWN0aW9ucwogICBkZWJ1Z2luZm9kX3Bvb2xfZ3Jvb20o KTsgLy8gYW5kIHJlbGVhc2UgYW55IGRlYnVnaW5mb2RfY2xpZW50IG9iamVjdHMgd2UndmUgYmVl biBob2xkaW5nIG9udG8KIAotICBmZGNhY2hlLmxpbWl0KDAsMCk7IC8vIHJlbGVhc2UgdGhlIGZk Y2FjaGUgY29udGVudHMKLSAgZmRjYWNoZS5saW1pdChmZGNhY2hlX2ZkcyxmZGNhY2hlX21icyk7 IC8vIHJlc3RvcmUgc3RhdHVzIHF1byBwYXJhbWV0ZXJzCisgIGZkY2FjaGUubGltaXQoMCwwLDAs MCk7IC8vIHJlbGVhc2UgdGhlIGZkY2FjaGUgY29udGVudHMKKyAgZmRjYWNoZS5saW1pdChmZGNh Y2hlX2ZkcywgZmRjYWNoZV9tYnMsIGZkY2FjaGVfcHJlZmV0Y2hfZmRzLCBmZGNhY2hlX3ByZWZl dGNoX21icyk7IC8vIHJlc3RvcmUgc3RhdHVzIHF1byBwYXJhbWV0ZXJzCiAKICAgY2xvY2tfZ2V0 dGltZSAoQ0xPQ0tfTU9OT1RPTklDLCAmdHNfZW5kKTsKICAgZG91YmxlIGRlbHRhcyA9ICh0c19l bmQudHZfc2VjIC0gdHNfc3RhcnQudHZfc2VjKSArICh0c19lbmQudHZfbnNlYyAtIHRzX3N0YXJ0 LnR2X25zZWMpLzEuZTk7CkBAIC0zNDU2LDcgKzM1NTMsNyBAQCBtYWluIChpbnQgYXJnYywgY2hh ciAqYXJndltdKQogICBpZiAoc2Nhbl9hcmNoaXZlcy5zaXplKCk9PTAgJiYgIXNjYW5fZmlsZXMg JiYgc291cmNlX3BhdGhzLnNpemUoKT4wKQogICAgIG9iYXRjaGVkKGNsb2cpIDw8ICJ3YXJuaW5n OiB3aXRob3V0IC1GIC1SIC1VIC1aLCBpZ25vcmluZyBQQVRIcyIgPDwgZW5kbDsKIAotICBmZGNh Y2hlLmxpbWl0KGZkY2FjaGVfZmRzLCBmZGNhY2hlX21icyk7CisgIGZkY2FjaGUubGltaXQoZmRj YWNoZV9mZHMsIGZkY2FjaGVfbWJzLCBmZGNhY2hlX3ByZWZldGNoX2ZkcywgZmRjYWNoZV9wcmVm ZXRjaF9tYnMpOwogCiAgICh2b2lkKSBzaWduYWwgKFNJR1BJUEUsIFNJR19JR04pOyAvLyBtaWNy b2h0dHBkIGNhbiBnZW5lcmF0ZSBpdCBpbmNpZGVudGFsbHksIGlnbm9yZQogICAodm9pZCkgc2ln bmFsIChTSUdJTlQsIHNpZ25hbF9oYW5kbGVyKTsgLy8gXkMKQEAgLTM2MDAsNiArMzY5Nyw5IEBA IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgIG9iYXRjaGVkKGNsb2cpIDw8ICJmZGNh Y2hlIHRtcGRpciAiIDw8IHRtcGRpciA8PCBlbmRsOwogICBvYmF0Y2hlZChjbG9nKSA8PCAiZmRj YWNoZSB0bXBkaXIgbWluJSAiIDw8IGZkY2FjaGVfbWludG1wIDw8IGVuZGw7CiAgIG9iYXRjaGVk KGNsb2cpIDw8ICJncm9vbSB0aW1lICIgPDwgZ3Jvb21fcyA8PCBlbmRsOworICBvYmF0Y2hlZChj bG9nKSA8PCAicHJlZmV0Y2ggZmRzICIgPDwgZmRjYWNoZV9wcmVmZXRjaF9mZHMgPDwgZW5kbDsK KyAgb2JhdGNoZWQoY2xvZykgPDwgInByZWZldGNoIG1icyAiIDw8IGZkY2FjaGVfcHJlZmV0Y2hf bWJzIDw8IGVuZGw7CisKICAgaWYgKHNjYW5fYXJjaGl2ZXMuc2l6ZSgpPjApCiAgICAgewogICAg ICAgb2JhdGNoZWQgb2IoY2xvZyk7CmRpZmYgLS1naXQgYS9kb2MvZGVidWdpbmZvZC44IGIvZG9j L2RlYnVnaW5mb2QuOAppbmRleCAxYmE0MmNmNi4uMjMyNWU1ZjcgMTAwNjQ0Ci0tLSBhL2RvYy9k ZWJ1Z2luZm9kLjgKKysrIGIvZG9jL2RlYnVnaW5mb2QuOApAQCAtMjEyLDYgKzIxMiwxNiBAQCAk VE1QRElSIG9yIFxmQi90bXBcZlAgZmlsZXN5c3RlbS4gIFRoaXMgaXMgYmVjYXVzZSB0aGF0IGlz IHdoZXJlIHRoZQogbW9zdCByZWNlbnRseSB1c2VkIGV4dHJhY3RlZCBmaWxlcyBhcmUga2VwdC4g IEdyb29taW5nIGNsZWFucyB0aGlzCiBjYWNoZS4KIAorLlRQCisuQiAiXC1cLWZkY2FjaGVcLVwt cHJlZmV0Y2hcLWZkcz1OVU0iICAiXC1cLWZkY2FjaGVcLVwtcHJlZmV0Y2hcLW1icz1NQiIKK0Nv bmZpZ3VyZSBob3cgbWFueSBmaWxlIGRlc2NyaXB0b3JzIChmZHMpIGFuZCBtZWdhYnl0ZXMgKG1i cykgYXJlCithbGxvY2F0ZWQgdG8gdGhlIHByZWZldGNoIGZkY2FjaGUuIElmIHVuc3BlY2lmaWVk LCB2YWx1ZXMgb2YKK1xmQlwtXC1wcmVmZXRjaFwtZmRzXGZQIGFuZCBcZkJcLVwtcHJlZmV0Y2hc LW1ic1xmUCBkZXBlbmQKK29uIGNvbmN1cnJlbmN5IG9mIHRoZSBzeXN0ZW0gYW5kIG9uIHRoZSBh dmFpbGFibGUgZGlzayBzcGFjZSBvbgordGhlICRUTVBESVIuIEFsbG9jYXRpbmcgbW9yZSB0byB0 aGUgcHJlZmV0Y2ggY2FjaGUgd2lsbCBpbXByb3ZlCitwZXJmb3JtYW5jZSBpbiBlbnZpcm9ubWVu dHMgd2hlcmUgZGlmZmVyZW50IHBhcnRzIG9mIHNldmVyYWwgbGFyZ2UKK2FyY2hpdmVzIGFyZSBi ZWluZyBhY2Nlc3NlZC4KKwogLlRQCiAuQiAiXC1cLWZkY2FjaGVcLW1pbnRtcD1OVU0iCiBDb25m aWd1cmUgYSBkaXNrIHNwYWNlIHRocmVzaG9sZCBmb3IgZW1lcmdlbmN5IGZsdXNoaW5nIG9mIHRo ZSBjYWNoZS4KZGlmZiAtLWdpdCBhL3Rlc3RzL0NoYW5nZUxvZyBiL3Rlc3RzL0NoYW5nZUxvZwpp bmRleCBkOGZhOTdmYS4uOTQyMDE5NTkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL0NoYW5nZUxvZworKysg Yi90ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAyMS0wNi0yOCAgTm9haCBTYW5j aSA8bnNhbmNpQHJlZGhhdC5jb20+CisKKwlQUjI1OTc4CisJKiBydW4tZGVidWdpbmZvZC1maW5k LnNoOiBUZXN0IHRvIGVuc3VyZSBvcHRpb25zCisJZmRjYWNoZS1wcmVmZXRjaC1mZHMvbWJzIGFy ZSBzZXQuIENoZWNrIHRoYXQgaW5jX21ldHJpYyB3b3JrcyBmb3IgbHJ1CisJYW5kIHByZWZldGNo IGNhY2hlIG1ldHJpY3MuCisKIDIwMjEtMDYtMTYgIEZyYW5rIENoLiBFaWdsZXIgPGZjaGVAcmVk aGF0LmNvbT4KIAogCSogcnVuLWRlYnVnaW5mb2QtZmluZC5zaDogRml4IGludGVybWl0dGVudCBn cm9vbS9zdGFsZSBmYWlsdXJlLApkaWZmIC0tZ2l0IGEvdGVzdHMvcnVuLWRlYnVnaW5mb2QtZmlu ZC5zaCBiL3Rlc3RzL3J1bi1kZWJ1Z2luZm9kLWZpbmQuc2gKaW5kZXggNDU2ZGMyZjguLjkzOTg1 NTg3IDEwMDc1NQotLS0gYS90ZXN0cy9ydW4tZGVidWdpbmZvZC1maW5kLnNoCisrKyBiL3Rlc3Rz L3J1bi1kZWJ1Z2luZm9kLWZpbmQuc2gKQEAgLTExOSwxMiArMTE5LDE1IEBAIHdhaXRfcmVhZHko KQogICBmaQogfQogCitGRENBQ0hFX0ZEUz01MAorRkRDQUNIRV9NQlM9MTkwCitQUkVGRVRDSF9G RFM9MTAKK1BSRUZFVENIX01CUz0xMjAKICMgY3JlYXRlIGEgYm9ndXMgLnJwbSBmaWxlIHRvIGV2 b2tlIGEgbWV0cmljLXZpc2libGUgZXJyb3IKICMgVXNlIGEgY3ljbGljIHN5bWxpbmsgaW5zdGVh ZCBvZiBjaG1vZCAwMDAgdG8gbWFrZSBzdXJlIGV2ZW4gcm9vdAogIyB3b3VsZCBzZWUgYW4gZXJy b3IgKHJ1bm5pbmcgdGhlIHRlc3RzdWl0ZSB1bmRlciByb290IGlzIE5PVCBlbmNvdXJhZ2VkKS4K IGxuIC1zIFIvbm90aGluZy5ycG0gUi9ub3RoaW5nLnJwbQotCi1lbnYgTERfTElCUkFSWV9QQVRI PSRsZHBhdGggREVCVUdJTkZPRF9VUkxTPSAke2Fic19idWlsZGRpcn0vLi4vZGVidWdpbmZvZC9k ZWJ1Z2luZm9kICRWRVJCT1NFIC1GIC1SIC1kICREQiAtcCAkUE9SVDEgLXQwIC1nMCAtLWZkY2Fj aGUtZmRzIDEgLS1mZGNhY2hlLW1icyAyIC0tZmRjYWNoZS1taW50bXAgMCAtWiAudGFyLnh6IC1a IC50YXIuYnoyPWJ6Y2F0IC12IFIgRiBaIEwgPiB2bG9nJFBPUlQxIDI+JjEgJgorZW52IExEX0xJ QlJBUllfUEFUSD0kbGRwYXRoIERFQlVHSU5GT0RfVVJMUz0gJHthYnNfYnVpbGRkaXJ9Ly4uL2Rl YnVnaW5mb2QvZGVidWdpbmZvZCAkVkVSQk9TRSAtRiAtUiAtZCAkREIgLXAgJFBPUlQxIC10MCAt ZzAgLS1mZGNhY2hlLW1icz0kRkRDQUNIRV9NQlMgLS1mZGNhY2hlLWZkcz0kRkRDQUNIRV9GRFMg LS1mZGNhY2hlLXByZWZldGNoLW1icz0kUFJFRkVUQ0hfTUJTIC0tZmRjYWNoZS1wcmVmZXRjaC1m ZHM9JFBSRUZFVENIX0ZEUyAtLWZkY2FjaGUtbWludG1wIDAgLVogLnRhci54eiAtWiAudGFyLmJ6 Mj1iemNhdCAtdiBSIEYgWiBMID4gdmxvZyRQT1JUMSAyPiYxICYKIFBJRDE9JCEKIHRlbXBmaWxl cyB2bG9nJFBPUlQxCiBlcnJmaWxlcyB2bG9nJFBPUlQxCkBAIC00NzAsNiArNDczLDE5IEBAIGFy Y2hpdmVfdGVzdCBmMGFhMTViOGFiYTRmM2MyOGNhYzNjMmE3MzgwMWZlZmE2NDRhOWYyIC91c3Iv c3JjL2RlYnVnL2hlbGxvLTEuMC9oCiAKIGVncmVwICcobGliYy5lcnJvci4qcmhlbDcpfChiYzFm ZWJmZDAzY2EpfChmMGFhMTViOGFiYSknIHZsb2ckUE9SVDEKIAorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IyBQUjI1OTc4CisjIEVuc3VyZSB0aGF0IHRoZSBmZGNhY2hlIG9wdGlvbnMgYXJlIHdvcmtpbmcu CitncmVwICJwcmVmZXRjaCBmZHMiIHZsb2ckUE9SVDEKK2dyZXAgInByZWZldGNoIG1icyIgdmxv ZyRQT1JUMQorZ3JlcCAiZmRjYWNoZSBmZHMiIHZsb2ckUE9SVDEKK2dyZXAgImZkY2FjaGUgbWJz IiB2bG9nJFBPUlQxCisjIHNlYXJjaCB0aGUgdmxvZyB0byBmaW5kIHdoYXQgbWV0cmljIGNvdW50 cyBzaG91bGQgYmUgYW5kIGNoZWNrIHRoZSBjb3JyZWN0IG1ldHJpY3MKKyMgd2VyZSBpbmNyaW1l bnRlZAord2FpdF9yZWFkeSAkUE9SVDEgJ2ZkY2FjaGVfb3BfY291bnR7b3A9ImVucXVldWUifScg JCggZ3JlcCAtYyAnaW50ZXJuZWQuKmZyb250PTEnIHZsb2ckUE9SVDEgKQord2FpdF9yZWFkeSAk UE9SVDEgJ2ZkY2FjaGVfb3BfY291bnR7b3A9ImV2aWN0In0nICQoIGdyZXAgLWMgJ2V2aWN0ZWQg YT0uKicgdmxvZyRQT1JUMSApCit3YWl0X3JlYWR5ICRQT1JUMSAnZmRjYWNoZV9vcF9jb3VudHtv cD0icHJlZmV0Y2hfZW5xdWV1ZSJ9JyAkKCBncmVwIC1jICdpbnRlcm5lZC4qZnJvbnQ9MCcgdmxv ZyRQT1JUMSApCit3YWl0X3JlYWR5ICRQT1JUMSAnZmRjYWNoZV9vcF9jb3VudHtvcD0icHJlZmV0 Y2hfZXZpY3QifScgJCggZ3JlcCAtYyAnZXZpY3RlZCBmcm9tIHByZWZldGNoIGE9Lipmcm9udD0w JyB2bG9nJFBPUlQxIHx8IHRydWUgKQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICMgRmVkZXJhdGlvbiBt b2RlCi0tIAoyLjMxLjEKCg== --0000000000009e620705c6b3c850--