From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qt1-x833.google.com (mail-qt1-x833.google.com [IPv6:2607:f8b0:4864:20::833]) by sourceware.org (Postfix) with ESMTPS id B68A73858434 for ; Wed, 17 May 2023 19:06:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B68A73858434 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-qt1-x833.google.com with SMTP id d75a77b69052e-3f4c8d78a18so12732931cf.2 for ; Wed, 17 May 2023 12:06:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684350365; x=1686942365; h=in-reply-to:from:references:to:content-language:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=Zb2SgHsdXRo85OdpbX8ZckToxscSd3ecYER2kpUV8O4=; b=TO+sczWQvz4Khqj0Vqu/I3L++C9zjKpjNTaA1vG1aVLhRDLIBfo8XjRDEgXejno1WG 5JjLGi+3usQZVtImCiI9BF/NHbX9TRVZqCCWQTPbTdxxjM0RKGrriBasBsNksDpt17Bb jbNWpxvt7/u/L1sQDSq/ds+9gF8JV5betW6cM0Inj5PFS5of7h5/3JriyO5h8cob2wCB TaJhuWMBDkcPFVZDc1euqZXxLFyDr7vyXP86L/ssdLcQLCu8Zc7wpuPxCtvjBzmVUC7m OhtzQN64+llgdWHnVOEy7cQyL1oNT/xH3j0JALgMpd7KskrwBTYxJjyRcTvuBFDLQxFu FqZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684350365; x=1686942365; h=in-reply-to:from:references:to:content-language:subject:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=Zb2SgHsdXRo85OdpbX8ZckToxscSd3ecYER2kpUV8O4=; b=UW1TzOxCR7kn/WIavgmg/GUVJH+q39RHjqfn2a0rQYblsgKtdVw87iwdV3SmN/ixjw 3/ujsMHrLoEJ3g2ZLM+keW/Hon4kQxLzzXgYAOBrOEovAjQFE5g5pB83apDQvyMqRkxM tD5iUbYWyuF1WK5FcLK/KQc7yWglWcYFi1RnUCNwe2ihe0MzOfsprd42mtnyZJ1bWhHR o9faMlFCTYL9yqrXTohxqlBiyU0E8ERFpsrCqYF3/Ede5nkQCBOJSleaIo6F0aXl0TEC nUbNnHR7eukfEL05L8kEJUeUJ1E1tfgF8Rq08dU0+mOg5KkalEr2yrpLRssa5RtICvtZ IGsw== X-Gm-Message-State: AC+VfDyQXzRZwgp+XYBMwdRlOrN8LEF5l6gpOyAPuPel1veRBVXyudDm nL0ugb/0mepo4d7Uz7IUv1a72wQHx3A= X-Google-Smtp-Source: ACHHUZ5n6rEzzO8ZcVhbu80q5Esn4sXgyLsC2hK8SUVlIG7xSXTz7Nyj/Fvyk08pafZktmpxKdpZZg== X-Received: by 2002:a05:622a:1994:b0:3f5:3711:f862 with SMTP id u20-20020a05622a199400b003f53711f862mr1304461qtc.57.1684350364916; Wed, 17 May 2023 12:06:04 -0700 (PDT) Received: from ?IPV6:2607:fb90:461:5e86:7cc0:9d3:e8af:b99e? ([2607:fb90:461:5e86:7cc0:9d3:e8af:b99e]) by smtp.gmail.com with ESMTPSA id bc5-20020a05622a1cc500b003ef5dc13bbbsm7262844qtb.85.2023.05.17.12.06.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 17 May 2023 12:06:04 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------7BEsiN09Qm0KyXc9S8AKwsSf" Message-ID: Date: Wed, 17 May 2023 13:06:01 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Subject: Re: [v2] RISC-V: Remove masking third operand of rotate instructions Content-Language: en-US To: Jivan Hakobyan , gcc-patches@gcc.gnu.org References: From: Jeff Law In-Reply-To: X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_SHORT,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------7BEsiN09Qm0KyXc9S8AKwsSf Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 5/17/23 10:02, Jivan Hakobyan via Gcc-patches wrote: > Subject: > [v2] RISC-V: Remove masking third operand of rotate instructions > From: > Jivan Hakobyan via Gcc-patches > Date: > 5/17/23, 10:02 > > To: > gcc-patches@gcc.gnu.org > > > Rotate instructions do not need to mask the third operand. > For example, RV64 the following code: > > unsigned long foo1(unsigned long rs1, unsigned long rs2) > { > long shamt = rs2 & (64 - 1); > return (rs1 << shamt) | (rs1 >> ((64 - shamt) & (64 - 1))); > } > > Compiles to: > foo1: > andi a1,a1,63 > rol a0,a0,a1 > ret > > This patch removes unnecessary masking. > Besides, I have merged masking insns for shifts that were written before. > > > gcc/ChangeLog: > * config/riscv/riscv.md (*3_mask): New pattern, > combined from ... > (*si3_mask, *di3_mask): Here. > (*3_mask_1): New pattern, combined from ... > (*si3_mask_1, *di3_mask_1): Here. > * config/riscv/bitmanip.md (*3_mask): New > pattern. > (*si3_sext_mask): Likewise. > * config/riscv/iterators.md (shiftm1): Generalize to handle more > masking constants. > (bitmanip_rotate): New iterator. > (bitmanip_optab): Add rotates. > * config/riscv/predicates.md (const_si_mask_operand): Renamed > from const31_operand. Generalize to handle more mask constants. > (const_di_mask_operand): Similarly. > > gcc/testsuite/ChangeLog: > * testsuite/gcc.target/riscv/shift-and-2.c: Fixed test > * testsuite/gcc.target/riscv/zbb-rol-ror-01.c: New test > * testsuite/gcc.target/riscv/zbb-rol-ror-02.c: New test > * testsuite/gcc.target/riscv/zbb-rol-ror-03.c: New test > * testsuite/gcc.target/riscv/zbb-rol-ror-04.c: New test > * testsuite/gcc.target/riscv/zbb-rol-ror-05.c: New test > * testsuite/gcc.target/riscv/zbb-rol-ror-06.c: New test > * testsuite/gcc.target/riscv/zbb-rol-ror-07.c: New test Thanks for the updated patch. A few comments. > > > > > -- With the best regards Jivan Hakobyan > > > rotate_mask.patch > > diff --git a/gcc/config/riscv/bitmanip.md b/gcc/config/riscv/bitmanip.md > index a27fc3e34a1..0fd0cbdeb04 100644 > --- a/gcc/config/riscv/bitmanip.md > +++ b/gcc/config/riscv/bitmanip.md > @@ -351,6 +351,42 @@ > "rolw\t%0,%1,%2" > [(set_attr "type" "bitmanip")]) > > +(define_insn_and_split "*3_mask" > + [(set (match_operand:X 0 "register_operand" "= r") > + (bitmanip_rotate:X > + (match_operand:X 1 "register_operand" " r") > + (match_operator 4 "subreg_lowpart_operator" > + [(and:X > + (match_operand:X 2 "register_operand" "r") > + (match_operand 3 "" ""))])))] > + "TARGET_ZBB || TARGET_ZBKB" > + "#" > + "&& 1" > + [(set (match_dup 0) > + (bitmanip_rotate:X (match_dup 1) > + (match_dup 2)))] > + "operands[2] = gen_lowpart (QImode, operands[2]);" > + [(set_attr "type" "bitmanip") > + (set_attr "mode" "")]) So I couldn't resist the temptation to look at the mode iterator improvements a bit after our call this morning. As you note, the most obvious changes will regress the testsuite. But it turns out there are things we can do to further simplify/combine patterns. So the trick for the above pattern is to use GPR2 rather than X for the mode of the bitwise-and subexpression. That allows the mode of that subexpression to vary independently of the mode of the output. Similarly for the other pattern that you're adding to bitmanip.md. We can use GPR/GPR2 iterators in the riscv.md changes as well. The primary benefit in doing so is we can eliminate another pair of patterns. With those change we have simpler code that still passes all the new tests. I've regression tested this V3 variant with no issues. I'll commit it to the trunk under your name since the bulk of the work is yours. Thanks, jeff --------------7BEsiN09Qm0KyXc9S8AKwsSf Content-Type: text/plain; charset=UTF-8; name="P" Content-Disposition: attachment; filename="P" Content-Transfer-Encoding: base64 Y29tbWl0IDZkYTZlZDk1YzljYTI0N2Q0MDVkYTNkZmI3MzdiNzQzNjg2ZmU1ZTYKQXV0aG9y OiBKaXZhbiBIYWtvYnlhbiA8aml2YW5oYWtvYnlhbjlAZ21haWwuY29tPgpEYXRlOiAgIFdl ZCBNYXkgMTcgMTM6MDA6MjggMjAyMyAtMDYwMAoKICAgIFJJU0MtVjogUmVtb3ZlIG1hc2tp bmcgdGhpcmQgb3BlcmFuZCBvZiByb3RhdGUgaW5zdHJ1Y3Rpb25zCiAgICAKICAgICAgICBS b3RhdGUgaW5zdHJ1Y3Rpb25zIGRvIG5vdCBuZWVkIHRvIG1hc2sgdGhlIHRoaXJkIG9wZXJh bmQuCiAgICAgICAgRm9yIGV4YW1wbGUsICBSVjY0IHRoZSBmb2xsb3dpbmcgY29kZToKICAg IAogICAgICAgIHVuc2lnbmVkIGxvbmcgZm9vMSh1bnNpZ25lZCBsb25nIHJzMSwgdW5zaWdu ZWQgbG9uZyByczIpCiAgICAgICAgewogICAgICAgICAgICBsb25nIHNoYW10ID0gcnMyICYg KDY0IC0gMSk7CiAgICAgICAgICAgIHJldHVybiAocnMxIDw8IHNoYW10KSB8IChyczEgPj4g KCg2NCAtIHNoYW10KSAmICg2NCAtIDEpKSk7CiAgICAgICAgfQogICAgCiAgICAgICAgQ29t cGlsZXMgdG86CiAgICAgICAgZm9vMToKICAgICAgICAgICAgICAgIGFuZGkgICAgYTEsYTEs NjMKICAgICAgICAgICAgICAgIHJvbCAgICAgYTAsYTAsYTEKICAgICAgICAgICAgICAgIHJl dAogICAgCiAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHVubmVjZXNzYXJ5IG1hc2tpbmcu CiAgICAgICAgQmVzaWRlcywgSSBoYXZlIG1lcmdlZCBtYXNraW5nIGluc25zIGZvciBzaGlm dHMgdGhhdCB3ZXJlIHdyaXR0ZW4gYmVmb3JlLgogICAgCiAgICBnY2MvQ2hhbmdlTG9nOgog ICAgICAgICAgICAqIGNvbmZpZy9yaXNjdi9yaXNjdi5tZCAoKjxvcHRhYj48R1BSOm1vZGU+ M19tYXNrKTogTmV3IHBhdHRlcm4sCiAgICAgICAgICAgIGNvbWJpbmVkIGZyb20gLi4uCiAg ICAgICAgICAgICgqPG9wdGFiPnNpM19tYXNrLCAqPG9wdGFiPmRpM19tYXNrKTogSGVyZS4K ICAgICAgICAgICAgKCo8b3B0YWI+c2kzX21hc2tfMSwgKjxvcHRhYj5kaTNfbWFza18xKTog QW5kIGhlcmUuCiAgICAgICAgICAgICogY29uZmlnL3Jpc2N2L2JpdG1hbmlwLm1kICgqPGJp dG1hbmlwX29wdGFiPjxHUFI6bW9kZT4zX21hc2spOiBOZXcKICAgICAgICAgICAgcGF0dGVy bi4KICAgICAgICAgICAgKCo8Yml0bWFuaXBfb3B0YWI+c2kzX3NleHRfbWFzayk6IExpa2V3 aXNlLgogICAgICAgICAgICAqIGNvbmZpZy9yaXNjdi9pdGVyYXRvcnMubWQgKHNoaWZ0bTEp OiBVc2UgY29uc3Rfc2lfbWFza19vcGVyYW5kCiAgICAgICAgICAgIGFuZCBjb25zdF9kaV9t YXNrX29wZXJhbmQuCiAgICAgICAgICAgIChiaXRtYW5pcF9yb3RhdGUpOiBOZXcgaXRlcmF0 b3IuCiAgICAgICAgICAgIChiaXRtYW5pcF9vcHRhYik6IEFkZCByb3RhdGVzLgogICAgICAg ICAgICAqIGNvbmZpZy9yaXNjdi9wcmVkaWNhdGVzLm1kIChjb25zdF9zaV9tYXNrX29wZXJh bmQpOiBSZW5hbWVkCiAgICAgICAgICAgIGZyb20gY29uc3QzMV9vcGVyYW5kLiAgR2VuZXJh bGl6ZSB0byBoYW5kbGUgbW9yZSBtYXNrIGNvbnN0YW50cy4KICAgICAgICAgICAgKGNvbnN0 X2RpX21hc2tfb3BlcmFuZCk6IFNpbWlsYXJseS4KICAgIAogICAgZ2NjL3Rlc3RzdWl0ZS9D aGFuZ2VMb2c6CiAgICAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9zaGlmdC1hbmQtMi5j OiBGaXhlZCB0ZXN0CiAgICAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi96YmItcm9sLXJv ci0wMS5jOiBOZXcgdGVzdAogICAgICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvemJiLXJv bC1yb3ItMDIuYzogTmV3IHRlc3QKICAgICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3pi Yi1yb2wtcm9yLTAzLmM6IE5ldyB0ZXN0CiAgICAgICAgICAgICogZ2NjLnRhcmdldC9yaXNj di96YmItcm9sLXJvci0wNC5jOiBOZXcgdGVzdAogICAgICAgICAgICAqIGdjYy50YXJnZXQv cmlzY3YvemJiLXJvbC1yb3ItMDUuYzogTmV3IHRlc3QKICAgICAgICAgICAgKiBnY2MudGFy Z2V0L3Jpc2N2L3piYi1yb2wtcm9yLTA2LmM6IE5ldyB0ZXN0CiAgICAgICAgICAgICogZ2Nj LnRhcmdldC9yaXNjdi96YmItcm9sLXJvci0wNy5jOiBOZXcgdGVzdAoKZGlmZiAtLWdpdCBh L2djYy9jb25maWcvcmlzY3YvYml0bWFuaXAubWQgYi9nY2MvY29uZmlnL3Jpc2N2L2JpdG1h bmlwLm1kCmluZGV4IGEyN2ZjM2UzNGExLi42ZjNkMjRhOGE4OCAxMDA2NDQKLS0tIGEvZ2Nj L2NvbmZpZy9yaXNjdi9iaXRtYW5pcC5tZAorKysgYi9nY2MvY29uZmlnL3Jpc2N2L2JpdG1h bmlwLm1kCkBAIC0zNTEsNiArMzUxLDQyIEBAIChkZWZpbmVfaW5zbiAicm90bHNpM19zZXh0 IgogICAicm9sd1x0JTAsJTEsJTIiCiAgIFsoc2V0X2F0dHIgInR5cGUiICJiaXRtYW5pcCIp XSkKIAorKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKjxiaXRtYW5pcF9vcHRhYj48R1BSOm1v ZGU+M19tYXNrIgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpHUFIgICAgIDAgInJlZ2lzdGVy X29wZXJhbmQiICI9IHIiKQorICAgICAgICAoYml0bWFuaXBfcm90YXRlOkdQUgorICAgICAg ICAgICAgKG1hdGNoX29wZXJhbmQ6R1BSIDEgInJlZ2lzdGVyX29wZXJhbmQiICIgIHIiKQor ICAgICAgICAgICAgKG1hdGNoX29wZXJhdG9yIDQgInN1YnJlZ19sb3dwYXJ0X29wZXJhdG9y IgorICAgICAgICAgICAgIFsoYW5kOkdQUjIKKyAgICAgICAgICAgICAgIChtYXRjaF9vcGVy YW5kOkdQUjIgMiAicmVnaXN0ZXJfb3BlcmFuZCIgICJyIikKKyAgICAgICAgICAgICAgICht YXRjaF9vcGVyYW5kIDMgIjxHUFI6c2hpZnRtMT4iICI8R1BSOnNoaWZ0bTFwPiIpKV0pKSld CisgICJUQVJHRVRfWkJCIHx8IFRBUkdFVF9aQktCIgorICAiIyIKKyAgIiYmIDEiCisgIFso c2V0IChtYXRjaF9kdXAgMCkKKyAgICAgICAgKGJpdG1hbmlwX3JvdGF0ZTpHUFIgKG1hdGNo X2R1cCAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hfZHVwIDIpKSld CisgICJvcGVyYW5kc1syXSA9IGdlbl9sb3dwYXJ0IChRSW1vZGUsIG9wZXJhbmRzWzJdKTsi CisgIFsoc2V0X2F0dHIgInR5cGUiICJiaXRtYW5pcCIpCisgICAoc2V0X2F0dHIgIm1vZGUi ICI8R1BSOk1PREU+IildKQorCisoZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqPGJpdG1hbmlw X29wdGFiPnNpM19zZXh0X21hc2siCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRJICAgICAw ICJyZWdpc3Rlcl9vcGVyYW5kIiAiPSByIikKKyAgKHNpZ25fZXh0ZW5kOkRJIChiaXRtYW5p cF9yb3RhdGU6U0kKKyAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlNJIDEgInJlZ2lzdGVy X29wZXJhbmQiICIgIHIiKQorICAgICAgICAgICAgKG1hdGNoX29wZXJhdG9yIDQgInN1YnJl Z19sb3dwYXJ0X29wZXJhdG9yIgorICAgICAgICAgICAgIFsoYW5kOkdQUgorICAgICAgICAg ICAgICAgKG1hdGNoX29wZXJhbmQ6R1BSIDIgInJlZ2lzdGVyX29wZXJhbmQiICAiciIpCisg ICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZCAzICJjb25zdF9zaV9tYXNrX29wZXJhbmQi KSldKSkpKV0KKyAgIlRBUkdFVF82NEJJVCAmJiAoVEFSR0VUX1pCQiB8fCBUQVJHRVRfWkJL QikiCisgICIjIgorICAiJiYgMSIKKyAgWyhzZXQgKG1hdGNoX2R1cCAwKQorICAoc2lnbl9l eHRlbmQ6REkgKGJpdG1hbmlwX3JvdGF0ZTpTSSAobWF0Y2hfZHVwIDEpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAobWF0Y2hfZHVwIDIpKSkpXQorICAib3BlcmFuZHNbMl0gPSBn ZW5fbG93cGFydCAoUUltb2RlLCBvcGVyYW5kc1syXSk7IgorICBbKHNldF9hdHRyICJ0eXBl IiAiYml0bWFuaXAiKQorICAgKHNldF9hdHRyICJtb2RlIiAiREkiKV0pCisKIDs7IG9yYy5i IChvci1jb21iaW5lKSBpcyBhZGRlZCBhcyBhbiB1bnNwZWMgZm9yIHRoZSBiZW5lZml0IG9m IHRoZSBzdXBwb3J0CiA7OyBmb3Igb3B0aW1pemVkIHN0cmluZyBmdW5jdGlvbnMgKHN1Y2gg YXMgc3RyY21wKS4KIChkZWZpbmVfaW5zbiAib3JjYjxtb2RlPjIiCmRpZmYgLS1naXQgYS9n Y2MvY29uZmlnL3Jpc2N2L2l0ZXJhdG9ycy5tZCBiL2djYy9jb25maWcvcmlzY3YvaXRlcmF0 b3JzLm1kCmluZGV4IDFkNTYzMjRkZjAzLi44YWZlOThlNDQxMCAxMDA2NDQKLS0tIGEvZ2Nj L2NvbmZpZy9yaXNjdi9pdGVyYXRvcnMubWQKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9pdGVy YXRvcnMubWQKQEAgLTExNyw3ICsxMTcsNyBAQCAoZGVmaW5lX21vZGVfYXR0ciBVTklUTU9E RSBbKEhGICJIRiIpIChTRiAiU0YiKSAoREYgIkRGIildKQogKGRlZmluZV9tb2RlX2F0dHIg SEFMRk1PREUgWyhERiAiU0kiKSAoREkgIlNJIikgKFRGICJESSIpXSkKIAogOyBiaXRtYW5p cCBtb2RlIGF0dHJpYnV0ZQotKGRlZmluZV9tb2RlX2F0dHIgc2hpZnRtMSBbKFNJICJjb25z dDMxX29wZXJhbmQiKSAoREkgImNvbnN0NjNfb3BlcmFuZCIpXSkKKyhkZWZpbmVfbW9kZV9h dHRyIHNoaWZ0bTEgWyhTSSAiY29uc3Rfc2lfbWFza19vcGVyYW5kIikgKERJICJjb25zdF9k aV9tYXNrX29wZXJhbmQiKV0pCiAoZGVmaW5lX21vZGVfYXR0ciBzaGlmdG0xcCBbKFNJICJE c1MiKSAoREkgIkRzRCIpXSkKIAogOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTc0LDYgKzE3NCw4 IEBAIChkZWZpbmVfY29kZV9pdGVyYXRvciBiaXRtYW5pcF9taW5tYXggW3NtaW4gdW1pbiBz bWF4IHVtYXhdKQogCiAoZGVmaW5lX2NvZGVfaXRlcmF0b3IgY2x6X2N0el9wY250IFtjbHog Y3R6IHBvcGNvdW50XSkKIAorKGRlZmluZV9jb2RlX2l0ZXJhdG9yIGJpdG1hbmlwX3JvdGF0 ZSBbcm90YXRlIHJvdGF0ZXJ0XSkKKwogOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogOzsgQ29kZSBBdHRy aWJ1dGVzCiA7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yNzEsNyArMjczLDkgQEAgKGRlZmluZV9j b2RlX2F0dHIgYml0bWFuaXBfb3B0YWIgWyhzbWluICJzbWluIikKIAkJCQkgICh1bWF4ICJ1 bWF4IikKIAkJCQkgIChjbHogImNseiIpCiAJCQkJICAoY3R6ICJjdHoiKQotCQkJCSAgKHBv cGNvdW50ICJwb3Bjb3VudCIpXSkKKwkJCQkgIChwb3Bjb3VudCAicG9wY291bnQiKQorCQkJ CSAgKHJvdGF0ZSAicm90bCIpCisJCQkJICAocm90YXRlcnQgInJvdHIiKV0pCiAoZGVmaW5l X2NvZGVfYXR0ciBiaXRtYW5pcF9pbnNuIFsoc21pbiAibWluIikKIAkJCQkgKHNtYXggIm1h eCIpCiAJCQkJICh1bWluICJtaW51IikKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3Yv cHJlZGljYXRlcy5tZCBiL2djYy9jb25maWcvcmlzY3YvcHJlZGljYXRlcy5tZAppbmRleCBl NWFkZjA2ZmEyNS4uZmZjYmI5YTc1ODkgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvcmlzY3Yv cHJlZGljYXRlcy5tZAorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3ByZWRpY2F0ZXMubWQKQEAg LTIzNSwxMyArMjM1LDE1IEBAIChkZWZpbmVfcHJlZGljYXRlICJub3Rfc2luZ2xlX2JpdF9t YXNrX29wZXJhbmQiCiAgIChhbmQgKG1hdGNoX2NvZGUgImNvbnN0X2ludCIpCiAgICAgICAg KG1hdGNoX3Rlc3QgIlNJTkdMRV9CSVRfTUFTS19PUEVSQU5EICh+VUlOVFZBTCAob3ApKSIp KSkKIAotKGRlZmluZV9wcmVkaWNhdGUgImNvbnN0MzFfb3BlcmFuZCIKKyhkZWZpbmVfcHJl ZGljYXRlICJjb25zdF9zaV9tYXNrX29wZXJhbmQiCiAgIChhbmQgKG1hdGNoX2NvZGUgImNv bnN0X2ludCIpCi0gICAgICAgKG1hdGNoX3Rlc3QgIklOVFZBTCAob3ApID09IDMxIikpKQor ICAgICAgIChtYXRjaF90ZXN0ICIoSU5UVkFMIChvcCkgJiAoR0VUX01PREVfQklUU0laRSAo U0ltb2RlKSAtIDEpKQorICAgICAgICAgICAgICAgICAgICA9PSBHRVRfTU9ERV9CSVRTSVpF IChTSW1vZGUpIC0gMSIpKSkKIAotKGRlZmluZV9wcmVkaWNhdGUgImNvbnN0NjNfb3BlcmFu ZCIKKyhkZWZpbmVfcHJlZGljYXRlICJjb25zdF9kaV9tYXNrX29wZXJhbmQiCiAgIChhbmQg KG1hdGNoX2NvZGUgImNvbnN0X2ludCIpCi0gICAgICAgKG1hdGNoX3Rlc3QgIklOVFZBTCAo b3ApID09IDYzIikpKQorICAgICAgIChtYXRjaF90ZXN0ICIoSU5UVkFMIChvcCkgJiAoR0VU X01PREVfQklUU0laRSAoREltb2RlKSAtIDEpKQorICAgICAgICAgICAgICAgICAgICA9PSBH RVRfTU9ERV9CSVRTSVpFIChESW1vZGUpIC0gMSIpKSkKIAogKGRlZmluZV9wcmVkaWNhdGUg ImltbTVfb3BlcmFuZCIKICAgKGFuZCAobWF0Y2hfY29kZSAiY29uc3RfaW50IikKZGlmZiAt LWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YubWQgYi9nY2MvY29uZmlnL3Jpc2N2L3Jp c2N2Lm1kCmluZGV4IGE5MTc5OTMxMjE3Li5lNzczYmM3NDhiZiAxMDA2NDQKLS0tIGEvZ2Nj L2NvbmZpZy9yaXNjdi9yaXNjdi5tZAorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm1k CkBAIC0yMDQ4LDQ1ICsyMDQ4LDYgQEAgKGRlZmluZV9pbnNuICI8b3B0YWI+c2kzIgogICBb KHNldF9hdHRyICJ0eXBlIiAic2hpZnQiKQogICAgKHNldF9hdHRyICJtb2RlIiAiU0kiKV0p CiAKLShkZWZpbmVfaW5zbl9hbmRfc3BsaXQgIio8b3B0YWI+c2kzX21hc2siCi0gIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlNJICAgICAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPSByIikKLQko YW55X3NoaWZ0OlNJCi0JICAgIChtYXRjaF9vcGVyYW5kOlNJIDEgInJlZ2lzdGVyX29wZXJh bmQiICIgIHIiKQotCSAgICAobWF0Y2hfb3BlcmF0b3IgNCAic3VicmVnX2xvd3BhcnRfb3Bl cmF0b3IiCi0JICAgICBbKGFuZDpTSQotCSAgICAgICAobWF0Y2hfb3BlcmFuZDpTSSAyICJy ZWdpc3Rlcl9vcGVyYW5kIiAgInIiKQotCSAgICAgICAobWF0Y2hfb3BlcmFuZCAzICJjb25z dF9pbnRfb3BlcmFuZCIpKV0pKSldCi0gICIoSU5UVkFMIChvcGVyYW5kc1szXSkgJiAoR0VU X01PREVfQklUU0laRSAoU0ltb2RlKS0xKSkKLSAgID09IEdFVF9NT0RFX0JJVFNJWkUgKFNJ bW9kZSktMSIKLSAgIiMiCi0gICImJiAxIgotICBbKHNldCAobWF0Y2hfZHVwIDApCi0JKGFu eV9zaGlmdDpTSSAobWF0Y2hfZHVwIDEpCi0JCSAgICAgIChtYXRjaF9kdXAgMikpKV0KLSAg Im9wZXJhbmRzWzJdID0gZ2VuX2xvd3BhcnQgKFFJbW9kZSwgb3BlcmFuZHNbMl0pOyIKLSAg WyhzZXRfYXR0ciAidHlwZSIgInNoaWZ0IikKLSAgIChzZXRfYXR0ciAibW9kZSIgIlNJIild KQotCi0oZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqPG9wdGFiPnNpM19tYXNrXzEiCi0gIFso c2V0IChtYXRjaF9vcGVyYW5kOlNJICAgICAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPSByIikK LQkoYW55X3NoaWZ0OlNJCi0JICAgIChtYXRjaF9vcGVyYW5kOlNJIDEgInJlZ2lzdGVyX29w ZXJhbmQiICIgIHIiKQotCSAgICAobWF0Y2hfb3BlcmF0b3IgNCAic3VicmVnX2xvd3BhcnRf b3BlcmF0b3IiCi0JICAgICBbKGFuZDpESQotCSAgICAgICAobWF0Y2hfb3BlcmFuZDpESSAy ICJyZWdpc3Rlcl9vcGVyYW5kIiAgInIiKQotCSAgICAgICAobWF0Y2hfb3BlcmFuZCAzICJj b25zdF9pbnRfb3BlcmFuZCIpKV0pKSldCi0gICJUQVJHRVRfNjRCSVQKLSAgICYmIChJTlRW QUwgKG9wZXJhbmRzWzNdKSAmIChHRVRfTU9ERV9CSVRTSVpFIChTSW1vZGUpLTEpKQotICAg ICAgID09IEdFVF9NT0RFX0JJVFNJWkUgKFNJbW9kZSktMSIKLSAgIiMiCi0gICImJiAxIgot ICBbKHNldCAobWF0Y2hfZHVwIDApCi0JKGFueV9zaGlmdDpTSSAobWF0Y2hfZHVwIDEpCi0J CSAgICAgIChtYXRjaF9kdXAgMikpKV0KLSAgIm9wZXJhbmRzWzJdID0gZ2VuX2xvd3BhcnQg KFFJbW9kZSwgb3BlcmFuZHNbMl0pOyIKLSAgWyhzZXRfYXR0ciAidHlwZSIgInNoaWZ0IikK LSAgIChzZXRfYXR0ciAibW9kZSIgIlNJIildKQotCiAoZGVmaW5lX2luc24gIjxvcHRhYj5k aTMiCiAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRJIDAgInJlZ2lzdGVyX29wZXJhbmQiICAg ICAiPSByIikKIAkoYW55X3NoaWZ0OkRJCkBAIC0yMTAzLDQ1ICsyMDY0LDIzIEBAIChkZWZp bmVfaW5zbiAiPG9wdGFiPmRpMyIKICAgWyhzZXRfYXR0ciAidHlwZSIgInNoaWZ0IikKICAg IChzZXRfYXR0ciAibW9kZSIgIkRJIildKQogCi0oZGVmaW5lX2luc25fYW5kX3NwbGl0ICIq PG9wdGFiPmRpM19tYXNrIgotICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAgICAgMCAicmVn aXN0ZXJfb3BlcmFuZCIgIj0gciIpCi0JKGFueV9zaGlmdDpESQotCSAgICAobWF0Y2hfb3Bl cmFuZDpESSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiICByIikKKyhkZWZpbmVfaW5zbl9hbmRf c3BsaXQgIio8b3B0YWI+PEdQUjptb2RlPjNfbWFza18xIgorICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpHUFIgICAgIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9IHIiKQorCShhbnlfc2hpZnQ6 R1BSCisJICAgIChtYXRjaF9vcGVyYW5kOkdQUiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiICBy IikKIAkgICAgKG1hdGNoX29wZXJhdG9yIDQgInN1YnJlZ19sb3dwYXJ0X29wZXJhdG9yIgot CSAgICAgWyhhbmQ6U0kKLQkgICAgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAicmVnaXN0ZXJf b3BlcmFuZCIgICJyIikKLQkgICAgICAgKG1hdGNoX29wZXJhbmQgMyAiY29uc3RfaW50X29w ZXJhbmQiKSldKSkpXQotICAiVEFSR0VUXzY0QklUCi0gICAmJiAoSU5UVkFMIChvcGVyYW5k c1szXSkgJiAoR0VUX01PREVfQklUU0laRSAoREltb2RlKS0xKSkKLSAgICAgICA9PSBHRVRf TU9ERV9CSVRTSVpFIChESW1vZGUpLTEiCi0gICIjIgotICAiJiYgMSIKLSAgWyhzZXQgKG1h dGNoX2R1cCAwKQotCShhbnlfc2hpZnQ6REkgKG1hdGNoX2R1cCAxKQotCQkgICAgICAobWF0 Y2hfZHVwIDIpKSldCi0gICJvcGVyYW5kc1syXSA9IGdlbl9sb3dwYXJ0IChRSW1vZGUsIG9w ZXJhbmRzWzJdKTsiCi0gIFsoc2V0X2F0dHIgInR5cGUiICJzaGlmdCIpCi0gICAoc2V0X2F0 dHIgIm1vZGUiICJESSIpXSkKLQotKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKjxvcHRhYj5k aTNfbWFza18xIgotICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAgICAgMCAicmVnaXN0ZXJf b3BlcmFuZCIgIj0gciIpCi0JKGFueV9zaGlmdDpESQotCSAgICAobWF0Y2hfb3BlcmFuZDpE SSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiICByIikKLQkgICAgKG1hdGNoX29wZXJhdG9yIDQg InN1YnJlZ19sb3dwYXJ0X29wZXJhdG9yIgotCSAgICAgWyhhbmQ6REkKLQkgICAgICAgKG1h dGNoX29wZXJhbmQ6REkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgICJyIikKLQkgICAgICAgKG1h dGNoX29wZXJhbmQgMyAiY29uc3RfaW50X29wZXJhbmQiKSldKSkpXQotICAiVEFSR0VUXzY0 QklUCi0gICAmJiAoSU5UVkFMIChvcGVyYW5kc1szXSkgJiAoR0VUX01PREVfQklUU0laRSAo REltb2RlKS0xKSkKLSAgICAgICA9PSBHRVRfTU9ERV9CSVRTSVpFIChESW1vZGUpLTEiCisJ ICAgICBbKGFuZDpHUFIyCisJICAgICAgIChtYXRjaF9vcGVyYW5kOkdQUjIgMiAicmVnaXN0 ZXJfb3BlcmFuZCIgICJyIikKKwkgICAgICAgKG1hdGNoX29wZXJhbmQgMyAiPEdQUjpzaGlm dG0xPiIpKV0pKSldCisgICIiCiAgICIjIgogICAiJiYgMSIKICAgWyhzZXQgKG1hdGNoX2R1 cCAwKQotCShhbnlfc2hpZnQ6REkgKG1hdGNoX2R1cCAxKQorCShhbnlfc2hpZnQ6R1BSICht YXRjaF9kdXAgMSkKIAkJICAgICAgKG1hdGNoX2R1cCAyKSkpXQogICAib3BlcmFuZHNbMl0g PSBnZW5fbG93cGFydCAoUUltb2RlLCBvcGVyYW5kc1syXSk7IgogICBbKHNldF9hdHRyICJ0 eXBlIiAic2hpZnQiKQotICAgKHNldF9hdHRyICJtb2RlIiAiREkiKV0pCisgICAoc2V0X2F0 dHIgIm1vZGUiICI8R1BSOk1PREU+IildKQogCiAoZGVmaW5lX2luc24gIio8b3B0YWI+c2kz X2V4dGVuZCIKICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REkgICAgICAgICAgICAgICAgICAg MCAicmVnaXN0ZXJfb3BlcmFuZCIgIj0gciIpCkBAIC0yMTY0LDM0ICsyMTAzLDEwIEBAIChk ZWZpbmVfaW5zbl9hbmRfc3BsaXQgIio8b3B0YWI+c2kzX2V4dGVuZF9tYXNrIgogCSAgICAo YW55X3NoaWZ0OlNJCiAJICAgICAobWF0Y2hfb3BlcmFuZDpTSSAxICJyZWdpc3Rlcl9vcGVy YW5kIiAiICByIikKIAkgICAgIChtYXRjaF9vcGVyYXRvciA0ICJzdWJyZWdfbG93cGFydF9v cGVyYXRvciIKLQkgICAgICBbKGFuZDpTSQotCSAgICAgICAgKG1hdGNoX29wZXJhbmQ6U0kg MiAicmVnaXN0ZXJfb3BlcmFuZCIgIiByIikKLQkgICAgICAgIChtYXRjaF9vcGVyYW5kIDMg ImNvbnN0X2ludF9vcGVyYW5kIikpXSkpKSldCi0gICJUQVJHRVRfNjRCSVQKLSAgICYmIChJ TlRWQUwgKG9wZXJhbmRzWzNdKSAmIChHRVRfTU9ERV9CSVRTSVpFIChTSW1vZGUpLTEpKQot ICAgICAgID09IEdFVF9NT0RFX0JJVFNJWkUgKFNJbW9kZSktMSIKLSAgIiMiCi0gICImJiAx IgotICBbKHNldCAobWF0Y2hfZHVwIDApCi0JKHNpZ25fZXh0ZW5kOkRJCi0JIChhbnlfc2hp ZnQ6U0kgKG1hdGNoX2R1cCAxKQotCQkgICAgICAgKG1hdGNoX2R1cCAyKSkpKV0KLSAgIm9w ZXJhbmRzWzJdID0gZ2VuX2xvd3BhcnQgKFFJbW9kZSwgb3BlcmFuZHNbMl0pOyIKLSAgWyhz ZXRfYXR0ciAidHlwZSIgInNoaWZ0IikKLSAgIChzZXRfYXR0ciAibW9kZSIgIlNJIildKQot Ci0oZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqPG9wdGFiPnNpM19leHRlbmRfbWFza18xIgot ICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAgICAgICAgICAgICAgICAgICAwICJyZWdpc3Rl cl9vcGVyYW5kIiAiPSByIikKLQkoc2lnbl9leHRlbmQ6REkKLQkgICAgKGFueV9zaGlmdDpT SQotCSAgICAgKG1hdGNoX29wZXJhbmQ6U0kgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIiAgciIp Ci0JICAgICAobWF0Y2hfb3BlcmF0b3IgNCAic3VicmVnX2xvd3BhcnRfb3BlcmF0b3IiCi0J ICAgICAgWyhhbmQ6REkKLQkgICAgICAgIChtYXRjaF9vcGVyYW5kOkRJIDIgInJlZ2lzdGVy X29wZXJhbmQiICIgciIpCi0JICAgICAgICAobWF0Y2hfb3BlcmFuZCAzICJjb25zdF9pbnRf b3BlcmFuZCIpKV0pKSkpXQotICAiVEFSR0VUXzY0QklUCi0gICAmJiAoSU5UVkFMIChvcGVy YW5kc1szXSkgJiAoR0VUX01PREVfQklUU0laRSAoU0ltb2RlKS0xKSkKLSAgICAgICA9PSBH RVRfTU9ERV9CSVRTSVpFIChTSW1vZGUpLTEiCisJICAgICAgWyhhbmQ6R1BSCisJICAgICAg ICAobWF0Y2hfb3BlcmFuZDpHUFIgMiAicmVnaXN0ZXJfb3BlcmFuZCIgIiByIikKKwkgICAg ICAgIChtYXRjaF9vcGVyYW5kIDMgImNvbnN0X3NpX21hc2tfb3BlcmFuZCIpKV0pKSkpXQor ICAiVEFSR0VUXzY0QklUIgogICAiIyIKICAgIiYmIDEiCiAgIFsoc2V0IChtYXRjaF9kdXAg MCkKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9zaGlmdC1h bmQtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3NoaWZ0LWFuZC0yLmMK aW5kZXggMzYwZDg0MTcyMDkuLmJjMDFlOGVmOTkyIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3Yvc2hpZnQtYW5kLTIuYworKysgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3Yvc2hpZnQtYW5kLTIuYwpAQCAtMTEsMTAgKzExLDEwIEBAIHN1 YjIgKGludCBpLCBsb25nIGopCiB9CiAKIC8qIFRlc3QgZm9yIDxvcHRhYj5zaTNfZXh0ZW5k X21hc2suICAqLwotdW5zaWduZWQgbG9uZwotc3ViMyAoaW50IG1hc2spCitpbnQKK3N1YjMg KHNob3J0IG1hc2spCiB7Ci0gIHJldHVybiAxIDw8IChtYXNrICYgMHhmZik7CisgIHJldHVy biAxIDw8ICgoaW50KW1hc2sgJiAweDFmKTsKIH0KIAogLyogVGVzdCBmb3IgPG9wdGFiPnNp M19leHRlbmRfbWFza18xLiAgKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi96YmItcm9sLXJvci0wMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3piYi1yb2wtcm9yLTAxLmMKaW5kZXggMjBjMWIyODU2ZWYuLjBhNWI1ZTEyZWIy IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvemJiLXJvbC1y b3ItMDEuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvemJiLXJvbC1y b3ItMDEuYwpAQCAtMTQsNCArMTQsNSBAQCB1bnNpZ25lZCBsb25nIGZvbzIodW5zaWduZWQg bG9uZyByczEsIHVuc2lnbmVkIGxvbmcgcnMyKQogfQogCiAvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMgInJvbCIgMiB9IH0gKi8KLS8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci10aW1lcyAicm9yIiAyIH0gfSAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicm9yIiAyIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiYW5kIiB9IH0gKi8K XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3YvemJiLXJvbC1yb3ItMDIuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9yaXNjdi96YmItcm9sLXJvci0wMi5jCmluZGV4IDE0MTk2YzExZmI5Li5kMGQ1 ODEzNTgwOSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3pi Yi1yb2wtcm9yLTAyLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3pi Yi1yb2wtcm9yLTAyLmMKQEAgLTE0LDQgKzE0LDUgQEAgdW5zaWduZWQgaW50IGZvbzIodW5z aWduZWQgaW50IHJzMSwgdW5zaWduZWQgaW50IHJzMikKIH0KIAogLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJyb2wiIDIgfSB9ICovCi0vKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItdGltZXMgInJvciIgMiB9IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInJvciIg MiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge2FuZH0geyB0 YXJnZXQgeyBuby1vcHRzICItTzAiIH0gfSB9IH0gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvemJi LXJvbC1yb3ItMDMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96YmItcm9s LXJvci0wMy5jCmluZGV4IGVkNDY4NWRjN2FjLi5iNDRkN2ZlODkyMCAxMDA2NDQKLS0tIGEv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3piYi1yb2wtcm9yLTAzLmMKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3piYi1yb2wtcm9yLTAzLmMKQEAgLTE1 LDQgKzE1LDUgQEAgdW5zaWduZWQgaW50IHJvcih1bnNpZ25lZCBpbnQgcnMxLCB1bnNpZ25l ZCBpbnQgcnMyKQogfQogCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg InJvbHciIDEgfSB9ICovCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg InJvcnciIDEgfSB9ICovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJyb3J3IiAxIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiYW5kIiB9IH0gKi8KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlz Y3YvemJiLXJvbC1yb3ItMDQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96 YmItcm9sLXJvci0wNC5jCmluZGV4IDA4MDUzNDg0Y2IyLi43ZWY0YzI5ZGQ1YiAxMDA2NDQK LS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3piYi1yb2wtcm9yLTA0LmMK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3piYi1yb2wtcm9yLTA0LmMK QEAgLTIsNiArMiw3IEBACiAvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjY0Z2NfemJiIC1t YWJpPWxwNjRkIC1mbm8tbHRvIC1PMiIgfSAqLwogLyogeyBkZy1za2lwLWlmICIiIHsgKi0q LSogfSB7ICItZyIgfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9k aWVzICIqKiIgIiIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90 ICJhbmQiIH0gfSAqLwogCiAvKgogKipmb28xOgpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3piYi1yb2wtcm9yLTA1LmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcmlzY3YvemJiLXJvbC1yb3ItMDUuYwppbmRleCA4NTA5MGIxYjBmYy4uMjEw OGNjYzNlNzcgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96 YmItcm9sLXJvci0wNS5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96 YmItcm9sLXJvci0wNS5jCkBAIC0yLDYgKzIsNyBAQAogLyogeyBkZy1vcHRpb25zICItbWFy Y2g9cnYzMmdjX3piYiAtbWFiaT1pbHAzMiAtZm5vLWx0byAtTzIiIH0gKi8KIC8qIHsgZGct c2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLWciIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IGNo ZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLW5vdCAiYW5kIiB9IH0gKi8KIAogLyoKICoqZm9vMToKZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96YmItcm9sLXJvci0wNi5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3piYi1yb2wtcm9yLTA2LmMKaW5kZXgg NzBiNzlhYmI2ZWQuLjhjMDcxMWQ2Zjk0IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcmlzY3YvemJiLXJvbC1yb3ItMDYuYworKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcmlzY3YvemJiLXJvbC1yb3ItMDYuYwpAQCAtMiw2ICsyLDcgQEAKIC8qIHsg ZGctb3B0aW9ucyAiLW1hcmNoPXJ2NjRnY196YmIgLW1hYmk9bHA2NGQgLWZuby1sdG8gLU8y IiB9ICovCiAvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1nIiB9IH0gKi8KIC8q IHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImFuZCIgfSB9ICovCiAKIC8qCiAq KmZvbzE6CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvemJi LXJvbC1yb3ItMDcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96YmItcm9s LXJvci0wNy5jCmluZGV4IDNiNmFiMzg1YTg1Li5iZGEzZjBlNDc0ZCAxMDA2NDQKLS0tIGEv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3piYi1yb2wtcm9yLTA3LmMKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3piYi1yb2wtcm9yLTA3LmMKQEAgLTIs NiArMiw3IEBACiAvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjY0Z2NfemJiIC1tYWJpPWxw NjRkIC1mbm8tbHRvIC1PMiIgfSAqLwogLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7 ICItZyIgfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIq KiIgIiIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJhbmQi IH0gfSAqLwogCiAvKgogKipmb28xOgo= --------------7BEsiN09Qm0KyXc9S8AKwsSf--