From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x1034.google.com (mail-pj1-x1034.google.com [IPv6:2607:f8b0:4864:20::1034]) by sourceware.org (Postfix) with ESMTPS id E43343858CD9 for ; Sat, 25 May 2024 18:42:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E43343858CD9 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=ventanamicro.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E43343858CD9 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::1034 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716662527; cv=none; b=w8ZX3U0gcU6CaowWD8AUjEf8fbCvSsa/VuWSeO1kkWvdTKfmAqbGWz22JOQ2ynKS+g6end7ZqPcnlk87bEw5NmmDsYq+8LCwKBqlmkCa2uZlTrZffGQ1/aYZAlHqHBwAFoj2ioir3rPwpGrJhlJh7BtZyPYGqQ/1UMAG58H/DLE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716662527; c=relaxed/simple; bh=JjUa/reDamY5Z+yygdQ5xt4HReokWsuvZzPC0KgNl3I=; h=DKIM-Signature:Message-ID:Date:MIME-Version:From:To:Subject; b=ai5RcDldDvK2EXh7RwpGhjO0VQp5KYmkv3ZhFHD00JeL5fPFyeKlG+zd2a8lW3lnjujeplWRFWbv3sO6S4PxQnPMSzu7Qp6nzWLKQqfCy6xJtuOuoYp3RsMP9PCM9Iw2+ZJtrXL3Z4trRxv+piUf9+2gw1kp6HDvy9WeJZhRXx0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-2bf629ff55bso1450152a91.1 for ; Sat, 25 May 2024 11:42:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1716662523; x=1717267323; darn=gcc.gnu.org; h=subject:to:from:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=Z3Rc0crE/WlNj5FNYfDtP2/N+lC7SVw4w7tFzwg4458=; b=n2xTrtkqdpIrT3n8cqiDTUOiSWRz9Qm9EDUZjBv1TtN/M668n82emIHnzwZvz4Q8co E2OJrZUDDOYScE7yAYO2mAzbsSL7rc8fVXLCUJW9Bj/hj4BLsycmpuBoBJiYak9fugMF x1iie4aSqhxA7gZB6wUKg/OSK904pC2gWT8KAEJkZ3EpYNaejQxyoCqSzkO5Qd4CcojR jE2klqZi8zLN9yX+Gf3Y4TyVXx5knz40Xw44Fx18UXWyDMcQKw4fxNmkuZJXsV6l8ZTL ugLp116ytqLxa4vZRto6tpYMgKpmSl+3mBjBO/NstUrSJAMWP4lm3B711hkGxvR4iah/ wZig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716662523; x=1717267323; h=subject:to:from:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Z3Rc0crE/WlNj5FNYfDtP2/N+lC7SVw4w7tFzwg4458=; b=P9Q1Id4BSUENug/ZLgRMappyz7xRlVcFoWk39RPQMGTtDGifNrZkgiIlneew5+S9Iq W/93fzJrVFB42SNI0wc7qLepsnas8qDEjntJavzn9MjskMjz1pTBXAJnehKXU+1PvrKg m5OR6EXN/T7q+uJdsm5wUrGL0wBb3UeS8GudGeq7otu/uxePOPt6Xj1rCnjCoMZL0TSq Y2sKZIpH/Sz1TvzEE4MHN//w40XhbSg84eoopzWzfN5BtZf674wusjbNg9KHD9RLQ5MI 6NqpA4xDJnprukUx7I3XAIhPy0ymbHMxzMm27M7kZA7EW1P7+dYpD8b6r0gJw8hlzVjL tlMg== X-Gm-Message-State: AOJu0YxjSbkEDlPZCA1HGd0k5MZAnLUI9icQwUR44i9/3y+TYsXf/TXx F+H4qAU9/y4Aj117ocIJLnxvSWJydY0Azb8itbUsu/itkIDnSSnLEAlogslBjp19O95SN/Wmbd9 G X-Google-Smtp-Source: AGHT+IFcZAdbK+MRl9bDsW1zV9+aUC5uZ4CQcgwq4xmXleuyN47MyHjot5viaAdmcgDMMbHlDccFFg== X-Received: by 2002:a17:90a:e295:b0:2bf:1962:ea08 with SMTP id 98e67ed59e1d1-2bf5f74d855mr4343360a91.45.1716662522861; Sat, 25 May 2024 11:42:02 -0700 (PDT) Received: from [172.31.0.109] ([136.36.72.243]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2bf7dde2486sm1870514a91.54.2024.05.25.11.42.01 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 25 May 2024 11:42:01 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------zBJt54Fz9ABdPepF1IjnVl1O" Message-ID: Date: Sat, 25 May 2024 12:42:00 -0600 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Beta Content-Language: en-US From: Jeff Law To: "gcc-patches@gcc.gnu.org" Subject: [committed] [v2] More logical op simplifications in simplify-rtx.cc X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP 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. --------------zBJt54Fz9ABdPepF1IjnVl1O Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This is a revamp of what started as a target specific patch. Basically xalan (corrected, I originally thought it was perlbench) has a bitset implementation with a bit of an oddity. Specifically setBit will clear the bit before it is set: > if (bitToSet < 32) > { > fBits1 &= ~mask; > fBits1 |= mask; > } > else > { > fBits2 &= ~mask; > fBits2 |= mask; > } We can clean this up pretty easily in RTL with a small bit of code in simplify-rtx. While xalan doesn't have other cases, we can synthesize tests pretty easily and handle them as well. It turns out we don't actually have to recognize this stuff at the bit level, just standard logical identities are sufficient. For example (X | Y) & ~Y -> X & ~Y Andrew P. might poke at this at the gimple level. The type changes kindof get in the way in gimple but he's much better at match.pd than I am, so if he wants to chase it from the gimple side, I'll fully support that. Bootstrapped and regression tested on x86. Also run through my tester on its embedded targets. Pushing to the trunk. jeff --------------zBJt54Fz9ABdPepF1IjnVl1O Content-Type: text/plain; charset=UTF-8; name="P" Content-Disposition: attachment; filename="P" Content-Transfer-Encoding: base64 Y29tbWl0IDA1ZGFmNjE3ZWEyMmUxZDgxODI5NWVkMmQwMzc0NTY5MzdlMjM1MzAKQXV0aG9y OiBKZWZmIExhdyA8amxhd0B2ZW50YW5hbWljcm8uY29tPgpEYXRlOiAgIFNhdCBNYXkgMjUg MTI6Mzk6MDUgMjAyNCAtMDYwMAoKICAgIFtjb21taXR0ZWRdIFt2Ml0gTW9yZSBsb2dpY2Fs IG9wIHNpbXBsaWZpY2F0aW9ucyBpbiBzaW1wbGlmeS1ydHguY2MKICAgIAogICAgVGhpcyBp cyBhIHJldmFtcCBvZiB3aGF0IHN0YXJ0ZWQgYXMgYSB0YXJnZXQgc3BlY2lmaWMgcGF0Y2gu CiAgICAKICAgIEJhc2ljYWxseSB4YWxhbiAoY29ycmVjdGVkLCBJIG9yaWdpbmFsbHkgdGhv dWdodCBpdCB3YXMgcGVybGJlbmNoKSBoYXMgYSBiaXRzZXQKICAgIGltcGxlbWVudGF0aW9u IHdpdGggYSBiaXQgb2YgYW4gb2RkaXR5LiAgU3BlY2lmaWNhbGx5IHNldEJpdCB3aWxsIGNs ZWFyIHRoZSBiaXQKICAgIGJlZm9yZSBpdCBpcyBzZXQ6CiAgICAKICAgID4gICAgICAgICAg ICAgaWYgKGJpdFRvU2V0IDwgMzIpCiAgICA+ICAgICAgICAgICAgIHsKICAgID4gICAgICAg ICAgICAgICAgIGZCaXRzMSAmPSB+bWFzazsKICAgID4gICAgICAgICAgICAgICAgIGZCaXRz MSB8PSBtYXNrOwogICAgPiAgICAgICAgICAgICB9CiAgICA+ICAgICAgICAgICAgICBlbHNl CiAgICA+ICAgICAgICAgICAgIHsKICAgID4gICAgICAgICAgICAgICAgIGZCaXRzMiAmPSB+ bWFzazsKICAgID4gICAgICAgICAgICAgICAgIGZCaXRzMiB8PSBtYXNrOwogICAgPiAgICAg ICAgICAgICB9CiAgICBXZSBjYW4gY2xlYW4gdGhpcyB1cCBwcmV0dHkgZWFzaWx5IGluIFJU TCB3aXRoIGEgc21hbGwgYml0IG9mIGNvZGUgaW4KICAgIHNpbXBsaWZ5LXJ0eC4gIFdoaWxl IHhhbGFuIGRvZXNuJ3QgaGF2ZSBvdGhlciBjYXNlcywgd2UgY2FuIHN5bnRoZXNpemUgdGVz dHMKICAgIHByZXR0eSBlYXNpbHkgYW5kIGhhbmRsZSB0aGVtIGFzIHdlbGwuCiAgICAKICAg IEl0IHR1cm5zIG91dCB3ZSBkb24ndCBhY3R1YWxseSBoYXZlIHRvIHJlY29nbml6ZSB0aGlz IHN0dWZmIGF0IHRoZSBiaXQgbGV2ZWwsCiAgICBqdXN0IHN0YW5kYXJkIGxvZ2ljYWwgaWRl bnRpdGllcyBhcmUgc3VmZmljaWVudC4gIEZvciBleGFtcGxlCiAgICAKICAgIChYIHwgWSkg JiB+WSAtPiBYICYgflkKICAgIAogICAgQW5kcmV3IFAuIG1pZ2h0IHBva2UgYXQgdGhpcyBh dCB0aGUgZ2ltcGxlIGxldmVsLiAgVGhlIHR5cGUgY2hhbmdlcyBraW5kb2YgZ2V0CiAgICBp biB0aGUgd2F5IGluIGdpbXBsZSBidXQgaGUncyBtdWNoIGJldHRlciBhdCBtYXRjaC5wZCB0 aGFuIEkgYW0sIHNvIGlmIGhlIHdhbnRzCiAgICB0byBjaGFzZSBpdCBmcm9tIHRoZSBnaW1w bGUgc2lkZSwgSSdsbCBmdWxseSBzdXBwb3J0IHRoYXQuCiAgICAKICAgIEJvb3RzdHJhcHBl ZCBhbmQgcmVncmVzc2lvbiB0ZXN0ZWQgb24geDg2LiAgQWxzbyBydW4gdGhyb3VnaCBteSB0 ZXN0ZXIgb24gaXRzCiAgICBlbWJlZGRlZCB0YXJnZXRzLgogICAgCiAgICBQdXNoaW5nIHRv IHRoZSB0cnVuay4KICAgIAogICAgZ2NjLwogICAgCiAgICAgICAgICAgICogc2ltcGxpZnkt cnR4LmNjIChzaW1wbGlmeV9jb250ZXh0OjpzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uXzEp OiBIYW5kbGUKICAgICAgICAgICAgbW9yZSBsb2dpY2FsIHNpbXBsaWZpY2F0aW9ucy4KICAg IAogICAgZ2NjL3Rlc3RzdWl0ZS8KICAgIAogICAgICAgICAgICAqIGcrKy50YXJnZXQvcmlz Y3YvcmVkdW5kYW50LWJpdG1hcC0xLkM6IE5ldyB0ZXN0LgogICAgICAgICAgICAqIGcrKy50 YXJnZXQvcmlzY3YvcmVkdW5kYW50LWJpdG1hcC0yLkM6IE5ldyB0ZXN0LgogICAgICAgICAg ICAqIGcrKy50YXJnZXQvcmlzY3YvcmVkdW5kYW50LWJpdG1hcC0zLkM6IE5ldyB0ZXN0Lgog ICAgICAgICAgICAqIGcrKy50YXJnZXQvcmlzY3YvcmVkdW5kYW50LWJpdG1hcC00LkM6IE5l dyB0ZXN0LgoKZGlmZiAtLWdpdCBhL2djYy9zaW1wbGlmeS1ydHguY2MgYi9nY2Mvc2ltcGxp ZnktcnR4LmNjCmluZGV4IDUzZjU0ZDFkMzkyLi41Y2FmMWRmZDk1NyAxMDA2NDQKLS0tIGEv Z2NjL3NpbXBsaWZ5LXJ0eC5jYworKysgYi9nY2Mvc2ltcGxpZnktcnR4LmNjCkBAIC0zNTQ5 LDYgKzM1NDksMTIgQEAgc2ltcGxpZnlfY29udGV4dDo6c2ltcGxpZnlfYmluYXJ5X29wZXJh dGlvbl8xIChydHhfY29kZSBjb2RlLAogCSAgICByZXR1cm4gdGVtOwogCX0KIAorICAgICAg LyogQ29udmVydCAoaW9yIChhbmQgKG5vdCBBKSBCKSBBKSBpbnRvIEEgfCBCLiAgKi8KKyAg ICAgIGlmIChHRVRfQ09ERSAob3AwKSA9PSBBTkQKKwkgICYmIEdFVF9DT0RFIChYRVhQIChv cDAsIDApKSA9PSBOT1QKKwkgICYmIHJ0eF9lcXVhbF9wIChYRVhQIChYRVhQIChvcDAsIDAp LCAwKSwgb3AxKSkKKwlyZXR1cm4gc2ltcGxpZnlfZ2VuX2JpbmFyeSAoSU9SLCBtb2RlLCBY RVhQIChvcDAsIDEpLCBvcDEpOworCiAgICAgICB0ZW0gPSBzaW1wbGlmeV9ieXRlX3N3YXBw aW5nX29wZXJhdGlvbiAoY29kZSwgbW9kZSwgb3AwLCBvcDEpOwogICAgICAgaWYgKHRlbSkK IAlyZXR1cm4gdGVtOwpAQCAtMzgwMSw2ICszODA3LDEyIEBAIHNpbXBsaWZ5X2NvbnRleHQ6 OnNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb25fMSAocnR4X2NvZGUgY29kZSwKIAkgICAgcmV0 dXJuIHRlbTsKIAl9CiAKKyAgICAgIC8qIENvbnZlcnQgKHhvciAoYW5kIChub3QgQSkgQikg QSkgaW50byBBIHwgQi4gICovCisgICAgICBpZiAoR0VUX0NPREUgKG9wMCkgPT0gQU5ECisJ ICAmJiBHRVRfQ09ERSAoWEVYUCAob3AwLCAwKSkgPT0gTk9UCisJICAmJiBydHhfZXF1YWxf cCAoWEVYUCAoWEVYUCAob3AwLCAwKSwgMCksIG9wMSkpCisJcmV0dXJuIHNpbXBsaWZ5X2dl bl9iaW5hcnkgKElPUiwgbW9kZSwgWEVYUCAob3AwLCAxKSwgb3AxKTsKKwogICAgICAgdGVt ID0gc2ltcGxpZnlfYnl0ZV9zd2FwcGluZ19vcGVyYXRpb24gKGNvZGUsIG1vZGUsIG9wMCwg b3AxKTsKICAgICAgIGlmICh0ZW0pCiAJcmV0dXJuIHRlbTsKQEAgLTQwMDYsNiArNDAxOCwy MyBAQCBzaW1wbGlmeV9jb250ZXh0OjpzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uXzEgKHJ0 eF9jb2RlIGNvZGUsCiAJICAmJiBydHhfZXF1YWxfcCAob3AxLCBYRVhQIChYRVhQIChvcDAs IDEpLCAwKSkpCiAJcmV0dXJuIHNpbXBsaWZ5X2dlbl9iaW5hcnkgKEFORCwgbW9kZSwgb3Ax LCBYRVhQIChvcDAsIDApKTsKIAorICAgICAgLyogKGFuZCAoaW9yL3hvciAoWCBZKSAobm90 IFkpKSAtPiBYICYgflkgKi8KKyAgICAgIGlmICgoR0VUX0NPREUgKG9wMCkgPT0gSU9SIHx8 IEdFVF9DT0RFIChvcDApID09IFhPUikKKwkgICYmIEdFVF9DT0RFIChvcDEpID09IE5PVAor CSAgJiYgcnR4X2VxdWFsX3AgKFhFWFAgKG9wMSwgMCksIFhFWFAgKG9wMCwgMSkpKQorCXJl dHVybiBzaW1wbGlmeV9nZW5fYmluYXJ5IChBTkQsIG1vZGUsIFhFWFAgKG9wMCwgMCksCisJ CQkJICAgIHNpbXBsaWZ5X2dlbl91bmFyeSAoTk9ULCBtb2RlLAorCQkJCQkJCVhFWFAgKG9w MSwgMCksCisJCQkJCQkJbW9kZSkpOworICAgICAgLyogKGFuZCAoaW9yL3hvciAoWSBYKSAo bm90IFkpKSAtPiBYICYgflkgKi8KKyAgICAgIGlmICgoR0VUX0NPREUgKG9wMCkgPT0gSU9S IHx8IEdFVF9DT0RFIChvcDApID09IFhPUikKKwkgICYmIEdFVF9DT0RFIChvcDEpID09IE5P VAorCSAgJiYgcnR4X2VxdWFsX3AgKFhFWFAgKG9wMSwgMCksIFhFWFAgKG9wMCwgMCkpKQor CXJldHVybiBzaW1wbGlmeV9nZW5fYmluYXJ5IChBTkQsIG1vZGUsIFhFWFAgKG9wMCwgMSks CisJCQkJICAgIHNpbXBsaWZ5X2dlbl91bmFyeSAoTk9ULCBtb2RlLAorCQkJCQkJCVhFWFAg KG9wMSwgMCksCisJCQkJCQkJbW9kZSkpOworCiAgICAgICAvKiBDb252ZXJ0IChhbmQgKGlv ciBBIEMpIChpb3IgQiBDKSkgaW50byAoaW9yIChhbmQgQSBCKSBDKS4gICovCiAgICAgICBp ZiAoR0VUX0NPREUgKG9wMCkgPT0gR0VUX0NPREUgKG9wMSkKIAkgICYmIChHRVRfQ09ERSAo b3AwKSA9PSBBTkQKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLnRhcmdldC9yaXNj di9yZWR1bmRhbnQtYml0bWFwLTEuQyBiL2djYy90ZXN0c3VpdGUvZysrLnRhcmdldC9yaXNj di9yZWR1bmRhbnQtYml0bWFwLTEuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uMzcwNjZmMTBlZWEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRl L2crKy50YXJnZXQvcmlzY3YvcmVkdW5kYW50LWJpdG1hcC0xLkMKQEAgLTAsMCArMSwxNCBA QAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYXJj aD1ydjY0Z2NfemJhX3piYl96YnMgLW1hYmk9bHA2NCIgfSAqLworCit2b2lkIHNldEJpdChj aGFyICZhLCBpbnQgYikgeworICAgIGNoYXIgYyA9IDB4MVVMIDw8IGI7CisgICAgYSAmPSB+ YzsKKyAgICBhIHw9IGM7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1u b3QgImJjbHJcdCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90 ICJhbmRuXHQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAi b3JcdCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImJz ZXRcdCIgMSB9IH0gKi8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysudGFyZ2V0 L3Jpc2N2L3JlZHVuZGFudC1iaXRtYXAtMi5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysudGFyZ2V0 L3Jpc2N2L3JlZHVuZGFudC1iaXRtYXAtMi5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi44NmFjYWJhMjk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvZysrLnRhcmdldC9yaXNjdi9yZWR1bmRhbnQtYml0bWFwLTIuQwpAQCAtMCwwICsx LDE0IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIg LW1hcmNoPXJ2NjRnY196YmFfemJiX3picyAtbWFiaT1scDY0IiB9ICovCisKK3ZvaWQgc2V0 Qml0KGNoYXIgJmEsIGludCBiKSB7CisgICAgY2hhciBjID0gMHgxVUwgPDwgYjsKKyAgICBh ICY9IH5jOworICAgIGEgXj0gYzsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLW5vdCAiYmNsclx0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci1ub3QgInhvclx0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1u b3QgImFuZG5cdCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGlt ZXMgImJzZXRcdCIgMSB9IH0gKi8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysu dGFyZ2V0L3Jpc2N2L3JlZHVuZGFudC1iaXRtYXAtMy5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu dGFyZ2V0L3Jpc2N2L3JlZHVuZGFudC1iaXRtYXAtMy5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi4xNmJkN2MxNzg1ZQotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZysrLnRhcmdldC9yaXNjdi9yZWR1bmRhbnQtYml0bWFwLTMuQwpAQCAt MCwwICsxLDE0IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25z ICItTzIgLW1hcmNoPXJ2NjRnY196YmFfemJiX3picyAtbWFiaT1scDY0IiB9ICovCisKK3Zv aWQgc2V0Qml0KGNoYXIgJmEsIGludCBiKSB7CisgICAgY2hhciBjID0gMHgxVUwgPDwgYjsK KyAgICBhIHw9IGM7CisgICAgYSAmPSB+YzsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLW5vdCAiYnNldFx0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci1ub3QgIm9yXHQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLW5vdCAiYW5kblx0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyAiYmNsclx0IiAxIH0gfSAqLworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2crKy50YXJnZXQvcmlzY3YvcmVkdW5kYW50LWJpdG1hcC00LkMgYi9nY2MvdGVzdHN1aXRl L2crKy50YXJnZXQvcmlzY3YvcmVkdW5kYW50LWJpdG1hcC00LkMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY2NjRlZTAxYTAxCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nKysudGFyZ2V0L3Jpc2N2L3JlZHVuZGFudC1iaXRtYXAtNC5D CkBAIC0wLDAgKzEsMTQgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1PMiAtbWFyY2g9cnY2NGdjX3piYV96YmJfemJzIC1tYWJpPWxwNjQiIH0gKi8K Kwordm9pZCBzZXRCaXQoY2hhciAmYSwgaW50IGIpIHsKKyAgICBjaGFyIGMgPSAweDFVTCA8 PCBiOworICAgIGEgXj0gYzsKKyAgICBhICY9IH5jOworfQorCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItbm90ICJiaW52XHQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLW5vdCAieG9yXHQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLW5vdCAiYW5kblx0IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAiYmNsclx0IiAxIH0gfSAqLworCg== --------------zBJt54Fz9ABdPepF1IjnVl1O--