From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x136.google.com (mail-il1-x136.google.com [IPv6:2607:f8b0:4864:20::136]) by sourceware.org (Postfix) with ESMTPS id 01C603870C38 for ; Fri, 29 Sep 2023 22:37:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 01C603870C38 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-il1-x136.google.com with SMTP id e9e14a558f8ab-3512b425662so39824035ab.0 for ; Fri, 29 Sep 2023 15:37:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1696027043; x=1696631843; darn=gcc.gnu.org; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=66X8kCd023xU52dERsUe2jHwiaHEsiAV/r6iR1qVzS0=; b=AJ8SEacdN8Be/OXsAkqPtr/EA28gUMFMxw8gQb8yRrurgxJPh1ZiBRrSmqptP21jfr 1FB/MkjIODHt8tiMQ7fkYjO3OcgDnyd5Jj/67L/T6H5ZYz9btX3jzzBpE0tnYI2KwBRS 6VzVnCI9eY8e1zD5/ZzLKUUk6ZUBFJOQAnvKNnk+UzvcBp4DnML8s83IRyUnTsirWZ1q 9oKAxltyOjDclAmRtjYcMRpqYSyhFNF3n4Y58V6dG0M5NKneJDokkX9ZpFiwx8ZUTWri CEXU+ChNfFUKpli1oyTFQ6BktCQfUhIyz5hlcqEChM2bUr0la0s5NTaG7yA/XvGDkX5l Vmrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696027043; x=1696631843; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=66X8kCd023xU52dERsUe2jHwiaHEsiAV/r6iR1qVzS0=; b=dFxCxU6+VpuOI6W58+bchxmiPX6yDAiH2UJTWxSG5YbGPI3JuIgq+cviKGrxnONPCZ 1h/Gt393Pa+8PQ1FcnEDZ+276ANluOKCiZvWhmBHvwfMGb4KrBVn3hP1Ny1ticrIexSt cAIck0Yac0funelM3/Jd/wlpDyRxWCVbLvHorvLVk3vyuRpkhNNgfP23pg1LBnQtBWBX Cl6TkxUhTA7h3VL+J/sdVweIkfv62UGQxayuxqh3f3y437m7GkaLWDf9GN4+9gn8iyR9 Lq0DhHwgX1R5kGdekAuk4L3amRg1j8P9menyZ3rKExilXmVXqsd4UoH8O+rh89PMHFg9 qgcQ== X-Gm-Message-State: AOJu0YyVxCJI804/G3kdXg8ctWZ1CwAEu0bKsvLjfnJejxsDjzPZnqOx On+WJMxpi466JID/JNlExEbrufX6apk= X-Google-Smtp-Source: AGHT+IG3WpSb+oym14nTAmD5aO3cwZoglVdnxyeqlP38+DhrwQxTqOuEZXhrPamEphdJnUwS/5xejQ== X-Received: by 2002:a05:6e02:1c46:b0:34f:d665:4c2e with SMTP id d6-20020a056e021c4600b0034fd6654c2emr6554185ilg.30.1696027043315; Fri, 29 Sep 2023 15:37:23 -0700 (PDT) Received: from [172.31.0.109] ([136.36.130.248]) by smtp.gmail.com with ESMTPSA id a17-20020a056638005100b0042bb1c9b59csm5525937jap.126.2023.09.29.15.37.22 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 29 Sep 2023 15:37:22 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------iP8i0Ec9F1l4MJptwxHshcpy" Message-ID: Date: Fri, 29 Sep 2023 16:37:21 -0600 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US From: Jeff Law Subject: [committed] RISC-V: Fix INSN costing and more zicond tests To: "gcc-patches@gcc.gnu.org" X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,LIKELY_SPAM_BODY,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,URIBL_BLACK 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. --------------iP8i0Ec9F1l4MJptwxHshcpy Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit So this ends up looking a lot like the bits that I had to revert several weeks ago :-) The core issue we have is given an INSN the generic code will cost the SET_SRC and SET_DEST and sum them. But that's far from ideal on a RISC target. For a register destination, the cost can be determined be looking at just the SET_SRC. Which is precisely what this patch does. When the outer code is an INSN and we're presented with a SET we take one of two paths. If the destination is a register, then we recurse just on the SET_SRC and we're done. Otherwise we fall back to the existing code which sums the cost of the SET_SRC and SET_DEST. That fallback path isn't great and probably could be further improved (just costing SET_DEST in that case is probably quite reasonable). The difference between this version and the bits that slipped through by accident several weeks ago is that old version mis-used the API due to a thinko on my part. This tightens up various zicond tests to avoid undesirable matching. This has been tested on rv64gc -- the only difference it makes on the testsuite is the new tests (included in this patch) flip from failing to passing. Pushed to the trunk. Jeff --------------iP8i0Ec9F1l4MJptwxHshcpy Content-Type: text/plain; charset=UTF-8; name="P" Content-Disposition: attachment; filename="P" Content-Transfer-Encoding: base64 Y29tbWl0IDQ0ZWZjNzQzYWNjMDEzNTRiNmI5ZWIxOTM5YWVkZmRjYzQ0ZTcxZjMKQXV0aG9y OiBYaWFvIFplbmcgPHplbmd4aWFvQGVzd2luY29tcHV0aW5nLmNvbT4KRGF0ZTogICBGcmkg U2VwIDI5IDE2OjI5OjAyIDIwMjMgLTA2MDAKCiAgICBGaXggSU5TTiBjb3N0aW5nIGFuZCBt b3JlIHppY29uZCB0ZXN0cwogICAgCiAgICBTbyB0aGlzIGVuZHMgdXAgbG9va2luZyBhIGxv dCBsaWtlIHRoZSBiaXRzIHRoYXQgSSBoYWQgdG8gcmV2ZXJ0IHNldmVyYWwgd2Vla3MKICAg IGFnbyA6LSkKICAgIAogICAgVGhlIGNvcmUgaXNzdWUgd2UgaGF2ZSBpcyBnaXZlbiBhbiBJ TlNOIHRoZSBnZW5lcmljIGNvZGUgd2lsbCBjb3N0IHRoZSBTRVRfU1JDCiAgICBhbmQgU0VU X0RFU1QgYW5kIHN1bSB0aGVtLiAgQnV0IHRoYXQncyBmYXIgZnJvbSBpZGVhbCBvbiBhIFJJ U0MgdGFyZ2V0LgogICAgCiAgICBGb3IgYSByZWdpc3RlciBkZXN0aW5hdGlvbiwgdGhlIGNv c3QgY2FuIGJlIGRldGVybWluZWQgYmUgbG9va2luZyBhdCBqdXN0IHRoZQogICAgU0VUX1NS Qy4gIFdoaWNoIGlzIHByZWNpc2VseSB3aGF0IHRoaXMgcGF0Y2ggZG9lcy4gIFdoZW4gdGhl IG91dGVyIGNvZGUgaXMgYW4KICAgIElOU04gYW5kIHdlJ3JlIHByZXNlbnRlZCB3aXRoIGEg U0VUIHdlIHRha2Ugb25lIG9mIHR3byBwYXRocy4KICAgIAogICAgSWYgdGhlIGRlc3RpbmF0 aW9uIGlzIGEgcmVnaXN0ZXIsIHRoZW4gd2UgcmVjdXJzZSBqdXN0IG9uIHRoZSBTRVRfU1JD IGFuZCB3ZSdyZQogICAgZG9uZS4gIE90aGVyd2lzZSB3ZSBmYWxsIGJhY2sgdG8gdGhlIGV4 aXN0aW5nIGNvZGUgd2hpY2ggc3VtcyB0aGUgY29zdCBvZiB0aGUKICAgIFNFVF9TUkMgYW5k IFNFVF9ERVNULiAgVGhhdCBmYWxsYmFjayBwYXRoIGlzbid0IGdyZWF0IGFuZCBwcm9iYWJs eSBjb3VsZCBiZQogICAgZnVydGhlciBpbXByb3ZlZCAoanVzdCBjb3N0aW5nIFNFVF9ERVNU IGluIHRoYXQgY2FzZSBpcyBwcm9iYWJseSBxdWl0ZQogICAgcmVhc29uYWJsZSkuCiAgICAK ICAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyB2ZXJzaW9uIGFuZCB0aGUgYml0cyB0 aGF0IHNsaXBwZWQgdGhyb3VnaCBieQogICAgYWNjaWRlbnQgc2V2ZXJhbCB3ZWVrcyBhZ28g aXMgdGhhdCBvbGQgdmVyc2lvbiBtaXMtdXNlZCB0aGUgQVBJIGR1ZSB0byBhIHRoaW5rbwog ICAgb24gbXkgcGFydC4KICAgIAogICAgVGhpcyB0aWdodGVucyB1cCB2YXJpb3VzIHppY29u ZCB0ZXN0cyB0byBhdm9pZCB1bmRlc2lyYWJsZSBtYXRjaGluZy4KICAgIAogICAgVGhpcyBo YXMgYmVlbiB0ZXN0ZWQgb24gcnY2NGdjIC0tIHRoZSBvbmx5IGRpZmZlcmVuY2UgaXQgbWFr ZXMgb24gdGhlIHRlc3RzdWl0ZQogICAgaXMgdGhlIG5ldyB0ZXN0cyAoaW5jbHVkZWQgaW4g dGhpcyBwYXRjaCkgZmxpcCBmcm9tIGZhaWxpbmcgdG8gcGFzc2luZy4KICAgIAogICAgUHVz aGVkIHRvIHRoZSB0cnVuay4KICAgIAogICAgZ2NjLwogICAgICAgICAgICAqIGNvbmZpZy9y aXNjdi9yaXNjdi5jYyAocmlzY3ZfcnR4X2Nvc3RzKTogQmV0dGVyIGhhbmRsZSBjb3N0aW5n CiAgICAgICAgICAgIFNFVHMgd2hlbiB0aGUgb3V0ZXIgY29kZSBpcyBJTlNOLgogICAgCiAg ICBnY2MvdGVzdHN1aXRlCiAgICAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi96aWNvbmQt cHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfaW1tLmM6IE5ldyB0ZXN0LgogICAgICAgICAg ICAqIGdjYy50YXJnZXQvcmlzY3Yvemljb25kLXByaW1pdGl2ZVNlbWFudGljc19jb21wYXJl X2ltbV9yZXR1cm5fMF9pbW0uYzoKICAgICAgICAgICAgTGlrZXdpc2UuCiAgICAgICAgICAg ICogZ2NjLnRhcmdldC9yaXNjdi96aWNvbmQtcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVf aW1tX3JldHVybl9pbW1faW1tLmM6CiAgICAgICAgICAgIExpa2V3aXNlLgogICAgICAgICAg ICAqIGdjYy50YXJnZXQvcmlzY3Yvemljb25kLXByaW1pdGl2ZVNlbWFudGljc19jb21wYXJl X2ltbV9yZXR1cm5faW1tX3JlZy5jOgogICAgICAgICAgICBMaWtld2lzZS4KICAgICAgICAg ICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3ppY29uZC1wcmltaXRpdmVTZW1hbnRpY3NfY29tcGFy ZV9pbW1fcmV0dXJuX3JlZ19yZWcuYzoKICAgICAgICAgICAgTGlrZXdpc2UuCiAgICAgICAg ICAgICogZ2NjLnRhcmdldC9yaXNjdi96aWNvbmQtcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBh cmVfcmVnLmM6IExpa2V3aXNlLgogICAgICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3Yvemlj b25kLXByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX3JlZ19yZXR1cm5fMF9pbW0uYzoKICAg ICAgICAgICAgTGlrZXdpc2UuCiAgICAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi96aWNv bmQtcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVybl9pbW1faW1tLmM6CiAg ICAgICAgICAgIExpa2V3aXNlLgogICAgICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3Yvemlj b25kLXByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX3JlZ19yZXR1cm5faW1tX3JlZy5jOgog ICAgICAgICAgICBMaWtld2lzZS4KICAgICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3pp Y29uZC1wcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9yZWdfcmV0dXJuX3JlZ19yZWcuYzoK ICAgICAgICAgICAgTGlrZXdpc2UuCiAgICAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi96 aWNvbmQtcHJpbWl0aXZlU2VtYW50aWNzLmM6IFRpZ2h0ZW4gZXhwZWN0ZWQgcmVnZXhwLgog ICAgICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3Yvemljb25kLXByaW1pdGl2ZVNlbWFudGlj c19yZXR1cm5fMF9pbW0uYzogTGlrZXdpc2UuCiAgICAgICAgICAgICogZ2NjLnRhcmdldC9y aXNjdi96aWNvbmQtcHJpbWl0aXZlU2VtYW50aWNzX3JldHVybl9pbW1faW1tLmM6IExpa2V3 aXNlLgogICAgICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3Yvemljb25kLXByaW1pdGl2ZVNl bWFudGljc19yZXR1cm5faW1tX3JlZy5jOiBMaWtld2lzZS4KICAgICAgICAgICAgKiBnY2Mu dGFyZ2V0L3Jpc2N2L3ppY29uZC1wcmltaXRpdmVTZW1hbnRpY3NfcmV0dXJuX3JlZ19yZWcu YzogTGlrZXdpc2UuCiAgICAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi96aWNvbmQteG9y LTAxLmM6IExpa2V3aXNlLgoKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Yu Y2MgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmNjCmluZGV4IDZlN2E3MTllN2EwLi5kNTQ0 NmI2M2RiZiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jYworKysgYi9n Y2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmNjCkBAIC0yNzY4LDYgKzI3NjgsMTkgQEAgcmlzY3Zf cnR4X2Nvc3RzIChydHggeCwgbWFjaGluZV9tb2RlIG1vZGUsIGludCBvdXRlcl9jb2RlLCBp bnQgb3BubyBBVFRSSUJVVEVfVU4KIAogICBzd2l0Y2ggKEdFVF9DT0RFICh4KSkKICAgICB7 CisgICAgY2FzZSBTRVQ6CisgICAgICAvKiBJZiB3ZSBhcmUgY2FsbGVkIGZvciBhbiBJTlNO IHRoYXQncyBhIHNpbXBsZSBzZXQgb2YgYSByZWdpc3RlciwKKwkgdGhlbiBjb3N0IGJhc2Vk IG9uIHRoZSBTRVRfU1JDIGFsb25lLiAgKi8KKyAgICAgIGlmIChvdXRlcl9jb2RlID09IElO U04gJiYgUkVHX1AgKFNFVF9ERVNUICh4KSkpCisJeworCSAgcmlzY3ZfcnR4X2Nvc3RzIChT RVRfU1JDICh4KSwgbW9kZSwgb3V0ZXJfY29kZSwgb3BubywgdG90YWwsIHNwZWVkKTsKKwkg IHJldHVybiB0cnVlOworCX0KKworICAgICAgLyogT3RoZXJ3aXNlIHJldHVybiBGQUxTRSBp bmRpY2F0aW5nIHdlIHNob3VsZCByZWN1cnNlIGludG8gYm90aCB0aGUKKwkgU0VUX0RFU1Qg YW5kIFNFVF9TUkMgY29tYmluaW5nIHRoZSBjb3N0IG9mIGJvdGguICAqLworICAgICAgcmV0 dXJuIGZhbHNlOworCiAgICAgY2FzZSBDT05TVF9JTlQ6CiAgICAgICAvKiB0cml2aWFsIGNv bnN0YW50cyBjaGVja2VkIHVzaW5nIE9VVEVSX0NPREUgaW4gY2FzZSB0aGV5IGFyZQogCSBl bmNvZGFibGUgaW4gaW5zbiBpdHNlbGYgdy9vIG5lZWQgZm9yIGFkZGl0aW9uYWwgaW5zbihz KS4gICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvemlj b25kLXByaW1pdGl2ZVNlbWFudGljcy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3ppY29uZC1wcmltaXRpdmVTZW1hbnRpY3MuYwppbmRleCBiY2ZhMDRiZWY5MS4uMjc2 ZGFjNzA4NTIgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96 aWNvbmQtcHJpbWl0aXZlU2VtYW50aWNzLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3ppY29uZC1wcmltaXRpdmVTZW1hbnRpY3MuYwpAQCAtNDUsNSArNDUsNSBA QCBpbnQgcHJpbWl0aXZlU2VtYW50aWNzXzExKGludCBhLCBpbnQgYikgewogCiAvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1xtY3plcm9cLmVxelxNfSA2IH0gfSAq LwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcbWN6ZXJvXC5uZXpc TX0gNiB9IH0gKi8KLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1xtYmVx fSB9IH0gKi8KLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1xtYm5lfSB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1xtYmVxXE19IH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XG1ibmVcTX0gfSB9 ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvemljb25k LXByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3ppY29uZC1wcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9pbW0uYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTUzYTkwOGZmMjUKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvemljb25k LXByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbS5jCkBAIC0wLDAgKzEsNTcgQEAKKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjY0Z2Nf emljb25kIC1tYWJpPWxwNjRkIiB7IHRhcmdldCB7IHJ2NjQgfSB9IH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLW1hcmNoPXJ2MzJnY196aWNvbmQgLW1hYmk9aWxwMzJmIiB7IHRhcmdldCB7 IHJ2MzIgfSB9IH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyItTzAiICIt T2ciICItT3MiICItT3oifSB9ICovCisKK2xvbmcgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBh cmVfaW1tXzAwKGxvbmcgYSwgbG9uZyBiKSB7CisgIHJldHVybiBhID09IDIgPyAwIDogYjsK K30KKworbG9uZyBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9pbW1fMDEobG9uZyBhLCBs b25nIGIpIHsKKyAgcmV0dXJuIGEgIT0gMiA/IDAgOiBiOworfQorCitsb25nIHByaW1pdGl2 ZVNlbWFudGljc19jb21wYXJlX2ltbV8wMihsb25nIGEsIGxvbmcgYikgeworICByZXR1cm4g YSA9PSAyID8gYiA6IDA7Cit9CisKK2xvbmcgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVf aW1tXzAzKGxvbmcgYSwgbG9uZyBiKSB7CisgIHJldHVybiBhICE9IDIgPyBiIDogMDsKK30K KworbG9uZyBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9pbW1fMDQobG9uZyBhLCBsb25n IGIpIHsKKyAgaWYgKGEgPT0gMikKKyAgICBiID0gMDsKKyAgcmV0dXJuIGI7Cit9CisKK2xv bmcgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfaW1tXzA1KGxvbmcgYSwgbG9uZyBiKSB7 CisgIGlmICghKGEgPT0gMikpCisgICAgYiA9IDA7CisgIHJldHVybiBiOworfQorCitpbnQg cHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfaW1tXzA2KGludCBhLCBpbnQgYikgeyByZXR1 cm4gYSA9PSAyID8gMCA6IGI7IH0KKworaW50IHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJl X2ltbV8wNyhpbnQgYSwgaW50IGIpIHsgcmV0dXJuIGEgIT0gMiA/IDAgOiBiOyB9CisKK2lu dCBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9pbW1fMDgoaW50IGEsIGludCBiKSB7IHJl dHVybiBhID09IDIgPyBiIDogMDsgfQorCitpbnQgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBh cmVfaW1tXzA5KGludCBhLCBpbnQgYikgeyByZXR1cm4gYSAhPSAyID8gYiA6IDA7IH0KKwor aW50IHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV8xMChpbnQgYSwgaW50IGIpIHsK KyAgaWYgKChhID09IDIpKQorICAgIGIgPSAwOworICByZXR1cm4gYjsKK30KKworaW50IHBy aW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV8xMShpbnQgYSwgaW50IGIpIHsKKyAgaWYg KCEoYSA9PSAyKSkKKyAgICBiID0gMDsKKyAgcmV0dXJuIGI7Cit9CisKKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XG1jemVyby5lcXpcTX0gNiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XG1jemVyby5uZXpcTX0gNiB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1xtYmVxXE19IH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XG1ibmVcTX0gfSB9 ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvemljb25k LXByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9yZXR1cm5fMF9pbW0uYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96aWNvbmQtcHJpbWl0aXZlU2VtYW50aWNzX2Nv bXBhcmVfaW1tX3JldHVybl8wX2ltbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5jOTBlZDEwMGIzMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9yaXNjdi96aWNvbmQtcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVf aW1tX3JldHVybl8wX2ltbS5jCkBAIC0wLDAgKzEsNzMgQEAKKy8qIHsgZGctZG8gY29tcGls ZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjY0Z2Nfemljb25kIC1tYWJpPWxw NjRkIiB7IHRhcmdldCB7IHJ2NjQgfSB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNo PXJ2MzJnY196aWNvbmQgLW1hYmk9aWxwMzJmIiB7IHRhcmdldCB7IHJ2MzIgfSB9IH0gKi8K Ky8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyItTzAiICItT2ciICItT3MiICItT3oi fSB9ICovCisKK2xvbmcgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfaW1tX3JldHVybl8w X2ltbV8wMChsb25nIGEsIGxvbmcgYikgeworICByZXR1cm4gYSA9PSAyID8gMCA6IDU7Cit9 CisKK2xvbmcgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfaW1tX3JldHVybl8wX2ltbV8w MShsb25nIGEsIGxvbmcgYikgeworICByZXR1cm4gYSAhPSAyID8gMCA6IDU7Cit9CisKK2xv bmcgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfaW1tX3JldHVybl8wX2ltbV8wMihsb25n IGEsIGxvbmcgYikgeworICByZXR1cm4gYSA9PSAyID8gNSA6IDA7Cit9CisKK2xvbmcgcHJp bWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfaW1tX3JldHVybl8wX2ltbV8wMyhsb25nIGEsIGxv bmcgYikgeworICByZXR1cm4gYSAhPSAyID8gNSA6IDA7Cit9CisKK2xvbmcgcHJpbWl0aXZl U2VtYW50aWNzX2NvbXBhcmVfaW1tX3JldHVybl8wX2ltbV8wNChsb25nIGEsIGxvbmcgYikg eworICBpZiAoYSA9PSAyKQorICAgIGIgPSAwOworICBlbHNlCisgICAgYiA9IDU7CisgIHJl dHVybiBiOworfQorCitsb25nIHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9yZXR1 cm5fMF9pbW1fMDUobG9uZyBhLCBsb25nIGIpIHsKKyAgaWYgKCEoYSA9PSAyKSkKKyAgICBi ID0gMDsKKyAgZWxzZQorICAgIGIgPSA1OworICByZXR1cm4gYjsKK30KKworaW50IHByaW1p dGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9yZXR1cm5fMF9pbW1fMDYoaW50IGEsIGludCBi KSB7CisgIHJldHVybiBhID09IDIgPyAwIDogNTsKK30KKworaW50IHByaW1pdGl2ZVNlbWFu dGljc19jb21wYXJlX2ltbV9yZXR1cm5fMF9pbW1fMDcoaW50IGEsIGludCBiKSB7CisgIHJl dHVybiBhICE9IDIgPyAwIDogNTsKK30KKworaW50IHByaW1pdGl2ZVNlbWFudGljc19jb21w YXJlX2ltbV9yZXR1cm5fMF9pbW1fMDgoaW50IGEsIGludCBiKSB7CisgIHJldHVybiBhID09 IDIgPyA1IDogMDsKK30KKworaW50IHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9y ZXR1cm5fMF9pbW1fMDkoaW50IGEsIGludCBiKSB7CisgIHJldHVybiBhICE9IDIgPyA1IDog MDsKK30KKworaW50IHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9yZXR1cm5fMF9p bW1fMTAoaW50IGEsIGludCBiKSB7CisgIGlmICgoYSA9PSAyKSkKKyAgICBiID0gMDsKKyAg ZWxzZQorICAgIGIgPSA1OworICByZXR1cm4gYjsKK30KKworaW50IHByaW1pdGl2ZVNlbWFu dGljc19jb21wYXJlX2ltbV9yZXR1cm5fMF9pbW1fMTEoaW50IGEsIGludCBiKSB7CisgIGlm ICghKGEgPT0gMikpCisgICAgYiA9IDA7CisgIGVsc2UKKyAgICBiID0gNTsKKyAgcmV0dXJu IGI7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XG1jemVy by5lcXpcTX0gNiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyB7XG1jemVyby5uZXpcTX0gNiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci1ub3Qge1xtYmVxXE19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLW5vdCB7XG1ibmVcTX0gfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcmlzY3Yvemljb25kLXByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9y ZXR1cm5faW1tX2ltbS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3ppY29u ZC1wcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9pbW1fcmV0dXJuX2ltbV9pbW0uYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTgwNmY2ZjA4MDcKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvemljb25kLXBy aW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9yZXR1cm5faW1tX2ltbS5jCkBAIC0wLDAg KzEsNzMgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1t YXJjaD1ydjY0Z2Nfemljb25kIC1tYWJpPWxwNjRkIiB7IHRhcmdldCB7IHJ2NjQgfSB9IH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY196aWNvbmQgLW1hYmk9aWxwMzJm IiB7IHRhcmdldCB7IHJ2MzIgfSB9IH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0q IH0geyItTzAiICItT2ciICItT3MiICItT3oifSB9ICovCisKK2xvbmcgcHJpbWl0aXZlU2Vt YW50aWNzX2NvbXBhcmVfaW1tX3JldHVybl9pbW1faW1tXzAwKGxvbmcgYSwgbG9uZyBiKSB7 CisgIHJldHVybiBhID09IDIgPyA3IDogNDsKK30KKworbG9uZyBwcmltaXRpdmVTZW1hbnRp Y3NfY29tcGFyZV9pbW1fcmV0dXJuX2ltbV9pbW1fMDEobG9uZyBhLCBsb25nIGIpIHsKKyAg cmV0dXJuIGEgIT0gMiA/IDcgOiA0OworfQorCitsb25nIHByaW1pdGl2ZVNlbWFudGljc19j b21wYXJlX2ltbV9yZXR1cm5faW1tX2ltbV8wMihsb25nIGEsIGxvbmcgYikgeworICByZXR1 cm4gYSA9PSAyID8gNyA6IDQ7Cit9CisKK2xvbmcgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBh cmVfaW1tX3JldHVybl9pbW1faW1tXzAzKGxvbmcgYSwgbG9uZyBiKSB7CisgIHJldHVybiBh ICE9IDIgPyA3IDogNDsKK30KKworbG9uZyBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9p bW1fcmV0dXJuX2ltbV9pbW1fMDQobG9uZyBhLCBsb25nIGIpIHsKKyAgaWYgKGEgPT0gMikK KyAgICBiID0gNzsKKyAgZWxzZQorICAgIGIgPSA0OworICByZXR1cm4gYjsKK30KKworbG9u ZyBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9pbW1fcmV0dXJuX2ltbV9pbW1fMDUobG9u ZyBhLCBsb25nIGIpIHsKKyAgaWYgKCEoYSA9PSAyKSkKKyAgICBiID0gNzsKKyAgZWxzZQor ICAgIGIgPSA0OworICByZXR1cm4gYjsKK30KKworaW50IHByaW1pdGl2ZVNlbWFudGljc19j b21wYXJlX2ltbV9yZXR1cm5faW1tX2ltbV8wNihpbnQgYSwgaW50IGIpIHsKKyAgcmV0dXJu IGEgPT0gMiA/IDcgOiA0OworfQorCitpbnQgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVf aW1tX3JldHVybl9pbW1faW1tXzA3KGludCBhLCBpbnQgYikgeworICByZXR1cm4gYSAhPSAy ID8gNyA6IDQ7Cit9CisKK2ludCBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9pbW1fcmV0 dXJuX2ltbV9pbW1fMDgoaW50IGEsIGludCBiKSB7CisgIHJldHVybiBhID09IDIgPyA3IDog NDsKK30KKworaW50IHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9yZXR1cm5faW1t X2ltbV8wOShpbnQgYSwgaW50IGIpIHsKKyAgcmV0dXJuIGEgIT0gMiA/IDcgOiA0OworfQor CitpbnQgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfaW1tX3JldHVybl9pbW1faW1tXzEw KGludCBhLCBpbnQgYikgeworICBpZiAoKGEgPT0gMikpCisgICAgYiA9IDc7CisgIGVsc2UK KyAgICBiID0gNDsKKyAgcmV0dXJuIGI7Cit9CisKK2ludCBwcmltaXRpdmVTZW1hbnRpY3Nf Y29tcGFyZV9pbW1fcmV0dXJuX2ltbV9pbW1fMTEoaW50IGEsIGludCBiKSB7CisgIGlmICgh KGEgPT0gMikpCisgICAgYiA9IDc7CisgIGVsc2UKKyAgICBiID0gNDsKKyAgcmV0dXJuIGI7 Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XG1jemVyby5l cXpcTX0gNiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7 XG1jemVyby5uZXpcTX0gNiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci1ub3Qge1xtYmVxXE19IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LW5vdCB7XG1ibmVcTX0gfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvcmlzY3Yvemljb25kLXByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9yZXR1 cm5faW1tX3JlZy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3ppY29uZC1w cmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9pbW1fcmV0dXJuX2ltbV9yZWcuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjk3NmQ2MDhhMDMKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvemljb25kLXByaW1p dGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9yZXR1cm5faW1tX3JlZy5jCkBAIC0wLDAgKzEs NjUgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJj aD1ydjY0Z2Nfemljb25kIC1tYWJpPWxwNjRkIiB7IHRhcmdldCB7IHJ2NjQgfSB9IH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY196aWNvbmQgLW1hYmk9aWxwMzJmIiB7 IHRhcmdldCB7IHJ2MzIgfSB9IH0gKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0g eyItTzAiICItT2ciICItT3MiICItT3oifSB9ICovCisKK2xvbmcgcHJpbWl0aXZlU2VtYW50 aWNzX2NvbXBhcmVfaW1tX3JldHVybl9pbW1fcmVnXzAwKGxvbmcgYSwgbG9uZyBiKSB7Cisg IHJldHVybiBhID09IDIgPyAzIDogYjsKK30KKworbG9uZyBwcmltaXRpdmVTZW1hbnRpY3Nf Y29tcGFyZV9pbW1fcmV0dXJuX2ltbV9yZWdfMDEobG9uZyBhLCBsb25nIGIpIHsKKyAgcmV0 dXJuIGEgIT0gMiA/IDMgOiBiOworfQorCitsb25nIHByaW1pdGl2ZVNlbWFudGljc19jb21w YXJlX2ltbV9yZXR1cm5faW1tX3JlZ18wMihsb25nIGEsIGxvbmcgYikgeworICByZXR1cm4g YSA9PSAyID8gYiA6IDM7Cit9CisKK2xvbmcgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVf aW1tX3JldHVybl9pbW1fcmVnXzAzKGxvbmcgYSwgbG9uZyBiKSB7CisgIHJldHVybiBhICE9 IDIgPyBiIDogMzsKK30KKworbG9uZyBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9pbW1f cmV0dXJuX2ltbV9yZWdfMDQobG9uZyBhLCBsb25nIGIpIHsKKyAgaWYgKGEgPT0gMikKKyAg ICBiID0gMzsKKyAgcmV0dXJuIGI7Cit9CisKK2xvbmcgcHJpbWl0aXZlU2VtYW50aWNzX2Nv bXBhcmVfaW1tX3JldHVybl9pbW1fcmVnXzA1KGxvbmcgYSwgbG9uZyBiKSB7CisgIGlmICgh KGEgPT0gMikpCisgICAgYiA9IDM7CisgIHJldHVybiBiOworfQorCitpbnQgcHJpbWl0aXZl U2VtYW50aWNzX2NvbXBhcmVfaW1tX3JldHVybl9pbW1fcmVnXzA2KGludCBhLCBpbnQgYikg eworICByZXR1cm4gYSA9PSAyID8gMyA6IGI7Cit9CisKK2ludCBwcmltaXRpdmVTZW1hbnRp Y3NfY29tcGFyZV9pbW1fcmV0dXJuX2ltbV9yZWdfMDcoaW50IGEsIGludCBiKSB7CisgIHJl dHVybiBhICE9IDIgPyAzIDogYjsKK30KKworaW50IHByaW1pdGl2ZVNlbWFudGljc19jb21w YXJlX2ltbV9yZXR1cm5faW1tX3JlZ18wOChpbnQgYSwgaW50IGIpIHsKKyAgcmV0dXJuIGEg PT0gMiA/IGIgOiAzOworfQorCitpbnQgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfaW1t X3JldHVybl9pbW1fcmVnXzA5KGludCBhLCBpbnQgYikgeworICByZXR1cm4gYSAhPSAyID8g YiA6IDM7Cit9CisKK2ludCBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9pbW1fcmV0dXJu X2ltbV9yZWdfMTAoaW50IGEsIGludCBiKSB7CisgIGlmICgoYSA9PSAyKSkKKyAgICBiID0g MzsKKyAgcmV0dXJuIGI7Cit9CisKK2ludCBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9p bW1fcmV0dXJuX2ltbV9yZWdfMTEoaW50IGEsIGludCBiKSB7CisgIGlmICghKGEgPT0gMikp CisgICAgYiA9IDM7CisgIHJldHVybiBiOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMge1xtY3plcm8uZXF6XE19IDYgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1xtY3plcm8ubmV6XE19IDYgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcbWJlcVxNfSB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1xtYm5lXE19IH0gfSAqLwpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3ppY29uZC1wcmltaXRpdmVT ZW1hbnRpY3NfY29tcGFyZV9pbW1fcmV0dXJuX3JlZ19yZWcuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi96aWNvbmQtcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfaW1t X3JldHVybl9yZWdfcmVnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjkwZTkxMTkyMzczCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3ppY29uZC1wcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9pbW1fcmV0 dXJuX3JlZ19yZWcuYwpAQCAtMCwwICsxLDY1IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAq LworLyogeyBkZy1vcHRpb25zICItbWFyY2g9cnY2NGdjX3ppY29uZCAtbWFiaT1scDY0ZCIg eyB0YXJnZXQgeyBydjY0IH0gfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjMy Z2Nfemljb25kIC1tYWJpPWlscDMyZiIgeyB0YXJnZXQgeyBydjMyIH0gfSB9ICovCisvKiB7 IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsiLU8wIiAiLU9nIiAiLU9zIiAiLU96In0gfSAq LworCitsb25nIHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9yZXR1cm5fcmVnX3Jl Z18wMChsb25nIGEsIGxvbmcgYiwgbG9uZyBjKSB7CisgIHJldHVybiBhID09IDIgPyBjIDog YjsKK30KKworbG9uZyBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9pbW1fcmV0dXJuX3Jl Z19yZWdfMDEobG9uZyBhLCBsb25nIGIsIGxvbmcgYykgeworICByZXR1cm4gYSAhPSAyID8g YyA6IGI7Cit9CisKK2xvbmcgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfaW1tX3JldHVy bl9yZWdfcmVnXzAyKGxvbmcgYSwgbG9uZyBiLCBsb25nIGMpIHsKKyAgcmV0dXJuIGEgPT0g MiA/IGIgOiBjOworfQorCitsb25nIHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9y ZXR1cm5fcmVnX3JlZ18wMyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjKSB7CisgIHJldHVybiBh ICE9IDIgPyBiIDogYzsKK30KKworbG9uZyBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9p bW1fcmV0dXJuX3JlZ19yZWdfMDQobG9uZyBhLCBsb25nIGIsIGxvbmcgYykgeworICBpZiAo YSA9PSAyKQorICAgIGIgPSBjOworICByZXR1cm4gYjsKK30KKworbG9uZyBwcmltaXRpdmVT ZW1hbnRpY3NfY29tcGFyZV9pbW1fcmV0dXJuX3JlZ19yZWdfMDUobG9uZyBhLCBsb25nIGIs IGxvbmcgYykgeworICBpZiAoIShhID09IDIpKQorICAgIGIgPSBjOworICByZXR1cm4gYjsK K30KKworaW50IHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9yZXR1cm5fcmVnX3Jl Z18wNihpbnQgYSwgaW50IGIsIGludCBjKSB7CisgIHJldHVybiBhID09IDIgPyBjIDogYjsK K30KKworaW50IHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9yZXR1cm5fcmVnX3Jl Z18wNyhpbnQgYSwgaW50IGIsIGludCBjKSB7CisgIHJldHVybiBhICE9IDIgPyBjIDogYjsK K30KKworaW50IHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9yZXR1cm5fcmVnX3Jl Z18wOChpbnQgYSwgaW50IGIsIGludCBjKSB7CisgIHJldHVybiBhID09IDIgPyBiIDogYzsK K30KKworaW50IHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9yZXR1cm5fcmVnX3Jl Z18wOShpbnQgYSwgaW50IGIsIGludCBjKSB7CisgIHJldHVybiBhICE9IDIgPyBiIDogYzsK K30KKworaW50IHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX2ltbV9yZXR1cm5fcmVnX3Jl Z18xMChpbnQgYSwgaW50IGIsIGludCBjKSB7CisgIGlmICgoYSA9PSAyKSkKKyAgICBiID0g YzsKKyAgcmV0dXJuIGI7Cit9CisKK2ludCBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9p bW1fcmV0dXJuX3JlZ19yZWdfMTEoaW50IGEsIGludCBiLCBpbnQgYykgeworICBpZiAoIShh ID09IDIpKQorICAgIGIgPSBjOworICByZXR1cm4gYjsKK30KKworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcbWN6ZXJvLmVxelxNfSAxMiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XG1jemVyby5uZXpcTX0gMTIgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcbWJlcVxNfSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1xtYm5lXE19IH0gfSAq LwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3ppY29uZC1w cmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9yZWcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi96aWNvbmQtcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJmZThjMDZlMWE5Ci0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3ppY29uZC1w cmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9yZWcuYwpAQCAtMCwwICsxLDY1IEBACisvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItbWFyY2g9cnY2NGdjX3pp Y29uZCAtbWFiaT1scDY0ZCIgeyB0YXJnZXQgeyBydjY0IH0gfSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1tYXJjaD1ydjMyZ2Nfemljb25kIC1tYWJpPWlscDMyZiIgeyB0YXJnZXQgeyBy djMyIH0gfSB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsiLU8wIiAiLU9n IiAiLU9zIiAiLU96In0gfSAqLworCitsb25nIHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJl X3JlZ18wMChsb25nIGEsIGxvbmcgYiwgbG9uZyBjKSB7CisgIHJldHVybiBhID09IGMgPyAw IDogYjsKK30KKworbG9uZyBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9yZWdfMDEobG9u ZyBhLCBsb25nIGIsIGxvbmcgYykgeworICByZXR1cm4gYSAhPSBjID8gMCA6IGI7Cit9CisK K2xvbmcgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnXzAyKGxvbmcgYSwgbG9uZyBi LCBsb25nIGMpIHsKKyAgcmV0dXJuIGEgPT0gYyA/IGIgOiAwOworfQorCitsb25nIHByaW1p dGl2ZVNlbWFudGljc19jb21wYXJlX3JlZ18wMyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjKSB7 CisgIHJldHVybiBhICE9IGMgPyBiIDogMDsKK30KKworbG9uZyBwcmltaXRpdmVTZW1hbnRp Y3NfY29tcGFyZV9yZWdfMDQobG9uZyBhLCBsb25nIGIsIGxvbmcgYykgeworICBpZiAoYSA9 PSBjKQorICAgIGIgPSAwOworICByZXR1cm4gYjsKK30KKworbG9uZyBwcmltaXRpdmVTZW1h bnRpY3NfY29tcGFyZV9yZWdfMDUobG9uZyBhLCBsb25nIGIsIGxvbmcgYykgeworICBpZiAo IShhID09IGMpKQorICAgIGIgPSAwOworICByZXR1cm4gYjsKK30KKworaW50IHByaW1pdGl2 ZVNlbWFudGljc19jb21wYXJlX3JlZ18wNihpbnQgYSwgaW50IGIsIGludCBjKSB7CisgIHJl dHVybiBhID09IGMgPyAwIDogYjsKK30KKworaW50IHByaW1pdGl2ZVNlbWFudGljc19jb21w YXJlX3JlZ18wNyhpbnQgYSwgaW50IGIsIGludCBjKSB7CisgIHJldHVybiBhICE9IGMgPyAw IDogYjsKK30KKworaW50IHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX3JlZ18wOChpbnQg YSwgaW50IGIsIGludCBjKSB7CisgIHJldHVybiBhID09IGMgPyBiIDogMDsKK30KKworaW50 IHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX3JlZ18wOShpbnQgYSwgaW50IGIsIGludCBj KSB7CisgIHJldHVybiBhICE9IGMgPyBiIDogMDsKK30KKworaW50IHByaW1pdGl2ZVNlbWFu dGljc19jb21wYXJlX3JlZ18xMChpbnQgYSwgaW50IGIsIGludCBjKSB7CisgIGlmICgoYSA9 PSBjKSkKKyAgICBiID0gMDsKKyAgcmV0dXJuIGI7Cit9CisKK2ludCBwcmltaXRpdmVTZW1h bnRpY3NfY29tcGFyZV9yZWdfMTEoaW50IGEsIGludCBiLCBpbnQgYykgeworICBpZiAoIShh ID09IGMpKQorICAgIGIgPSAwOworICByZXR1cm4gYjsKK30KKworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcbWN6ZXJvLmVxelxNfSA2IH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcbWN6ZXJvLm5lelxNfSA2IH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XG1iZXFcTX0gfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcbWJuZVxNfSB9IH0gKi8K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96aWNvbmQtcHJp bWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVybl8wX2ltbS5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3ppY29uZC1wcmltaXRpdmVTZW1hbnRpY3NfY29tcGFy ZV9yZWdfcmV0dXJuXzBfaW1tLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjE2NGRlMDY5NTM5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3ppY29uZC1wcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9yZWdf cmV0dXJuXzBfaW1tLmMKQEAgLTAsMCArMSw3MyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2NjRnY196aWNvbmQgLW1hYmk9bHA2NGQi IHsgdGFyZ2V0IHsgcnY2NCB9IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItbWFyY2g9cnYz MmdjX3ppY29uZCAtbWFiaT1pbHAzMmYiIHsgdGFyZ2V0IHsgcnYzMiB9IH0gfSAqLworLyog eyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7Ii1PMCIgIi1PZyIgIi1PcyIgIi1PeiJ9IH0g Ki8KKworbG9uZyBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9yZWdfcmV0dXJuXzBfaW1t XzAwKGxvbmcgYSwgbG9uZyBiLCBsb25nIGMpIHsKKyAgcmV0dXJuIGEgPT0gYyA/IDAgOiA5 OworfQorCitsb25nIHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX3JlZ19yZXR1cm5fMF9p bW1fMDEobG9uZyBhLCBsb25nIGIsIGxvbmcgYykgeworICByZXR1cm4gYSAhPSBjID8gMCA6 IDk7Cit9CisKK2xvbmcgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVybl8w X2ltbV8wMihsb25nIGEsIGxvbmcgYiwgbG9uZyBjKSB7CisgIHJldHVybiBhID09IGMgPyA5 IDogMDsKK30KKworbG9uZyBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9yZWdfcmV0dXJu XzBfaW1tXzAzKGxvbmcgYSwgbG9uZyBiLCBsb25nIGMpIHsKKyAgcmV0dXJuIGEgIT0gYyA/ IDkgOiAwOworfQorCitsb25nIHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX3JlZ19yZXR1 cm5fMF9pbW1fMDQobG9uZyBhLCBsb25nIGIsIGxvbmcgYykgeworICBpZiAoYSA9PSBjKQor ICAgIGIgPSAwOworICBlbHNlCisgICAgYiA9IDk7CisgIHJldHVybiBiOworfQorCitsb25n IHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX3JlZ19yZXR1cm5fMF9pbW1fMDUobG9uZyBh LCBsb25nIGIsIGxvbmcgYykgeworICBpZiAoIShhID09IGMpKQorICAgIGIgPSAwOworICBl bHNlCisgICAgYiA9IDk7CisgIHJldHVybiBiOworfQorCitpbnQgcHJpbWl0aXZlU2VtYW50 aWNzX2NvbXBhcmVfcmVnX3JldHVybl8wX2ltbV8wNihpbnQgYSwgaW50IGIsIGludCBjKSB7 CisgIHJldHVybiBhID09IGMgPyAwIDogOTsKK30KKworaW50IHByaW1pdGl2ZVNlbWFudGlj c19jb21wYXJlX3JlZ19yZXR1cm5fMF9pbW1fMDcoaW50IGEsIGludCBiLCBpbnQgYykgewor ICByZXR1cm4gYSAhPSBjID8gMCA6IDk7Cit9CisKK2ludCBwcmltaXRpdmVTZW1hbnRpY3Nf Y29tcGFyZV9yZWdfcmV0dXJuXzBfaW1tXzA4KGludCBhLCBpbnQgYiwgaW50IGMpIHsKKyAg cmV0dXJuIGEgPT0gYyA/IDkgOiAwOworfQorCitpbnQgcHJpbWl0aXZlU2VtYW50aWNzX2Nv bXBhcmVfcmVnX3JldHVybl8wX2ltbV8wOShpbnQgYSwgaW50IGIsIGludCBjKSB7CisgIHJl dHVybiBhICE9IGMgPyA5IDogMDsKK30KKworaW50IHByaW1pdGl2ZVNlbWFudGljc19jb21w YXJlX3JlZ19yZXR1cm5fMF9pbW1fMTAoaW50IGEsIGludCBiLCBpbnQgYykgeworICBpZiAo KGEgPT0gYykpCisgICAgYiA9IDA7CisgIGVsc2UKKyAgICBiID0gOTsKKyAgcmV0dXJuIGI7 Cit9CisKK2ludCBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9yZWdfcmV0dXJuXzBfaW1t XzExKGludCBhLCBpbnQgYiwgaW50IGMpIHsKKyAgaWYgKCEoYSA9PSBjKSkKKyAgICBiID0g MDsKKyAgZWxzZQorICAgIGIgPSA5OworICByZXR1cm4gYjsKK30KKworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcbWN6ZXJvLmVxelxNfSA2IH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcbWN6ZXJvLm5lelxNfSA2IH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XG1iZXFcTX0gfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcbWJuZVxNfSB9IH0g Ki8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96aWNvbmQt cHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVybl9pbW1faW1tLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvemljb25kLXByaW1pdGl2ZVNlbWFudGljc19j b21wYXJlX3JlZ19yZXR1cm5faW1tX2ltbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi44YWQ5N2FiYzMyMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96aWNvbmQtcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBh cmVfcmVnX3JldHVybl9pbW1faW1tLmMKQEAgLTAsMCArMSw3MyBAQAorLyogeyBkZy1kbyBj b21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2NjRnY196aWNvbmQgLW1h Ymk9bHA2NGQiIHsgdGFyZ2V0IHsgcnY2NCB9IH0gfSAqLworLyogeyBkZy1vcHRpb25zICIt bWFyY2g9cnYzMmdjX3ppY29uZCAtbWFiaT1pbHAzMmYiIHsgdGFyZ2V0IHsgcnYzMiB9IH0g fSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7Ii1PMCIgIi1PZyIgIi1PcyIg Ii1PeiJ9IH0gKi8KKworbG9uZyBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9yZWdfcmV0 dXJuX2ltbV9pbW1fMDAobG9uZyBhLCBsb25nIGIsIGxvbmcgYykgeworICByZXR1cm4gYSA9 PSBjID8gNyA6IDQ7Cit9CisKK2xvbmcgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVn X3JldHVybl9pbW1faW1tXzAxKGxvbmcgYSwgbG9uZyBiLCBsb25nIGMpIHsKKyAgcmV0dXJu IGEgIT0gYyA/IDcgOiA0OworfQorCitsb25nIHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJl X3JlZ19yZXR1cm5faW1tX2ltbV8wMihsb25nIGEsIGxvbmcgYiwgbG9uZyBjKSB7CisgIHJl dHVybiBhID09IGMgPyA3IDogNDsKK30KKworbG9uZyBwcmltaXRpdmVTZW1hbnRpY3NfY29t cGFyZV9yZWdfcmV0dXJuX2ltbV9pbW1fMDMobG9uZyBhLCBsb25nIGIsIGxvbmcgYykgewor ICByZXR1cm4gYSAhPSBjID8gNyA6IDQ7Cit9CisKK2xvbmcgcHJpbWl0aXZlU2VtYW50aWNz X2NvbXBhcmVfcmVnX3JldHVybl9pbW1faW1tXzA0KGxvbmcgYSwgbG9uZyBiLCBsb25nIGMp IHsKKyAgaWYgKGEgPT0gYykKKyAgICBiID0gNzsKKyAgZWxzZQorICAgIGIgPSA0OworICBy ZXR1cm4gYjsKK30KKworbG9uZyBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9yZWdfcmV0 dXJuX2ltbV9pbW1fMDUobG9uZyBhLCBsb25nIGIsIGxvbmcgYykgeworICBpZiAoIShhID09 IGMpKQorICAgIGIgPSA3OworICBlbHNlCisgICAgYiA9IDQ7CisgIHJldHVybiBiOworfQor CitpbnQgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVybl9pbW1faW1tXzA2 KGludCBhLCBpbnQgYiwgaW50IGMpIHsKKyAgcmV0dXJuIGEgPT0gYyA/IDcgOiA0OworfQor CitpbnQgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVybl9pbW1faW1tXzA3 KGludCBhLCBpbnQgYiwgaW50IGMpIHsKKyAgcmV0dXJuIGEgIT0gYyA/IDcgOiA0OworfQor CitpbnQgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVybl9pbW1faW1tXzA4 KGludCBhLCBpbnQgYiwgaW50IGMpIHsKKyAgcmV0dXJuIGEgPT0gYyA/IDcgOiA0OworfQor CitpbnQgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVybl9pbW1faW1tXzA5 KGludCBhLCBpbnQgYiwgaW50IGMpIHsKKyAgcmV0dXJuIGEgIT0gYyA/IDcgOiA0OworfQor CitpbnQgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVybl9pbW1faW1tXzEw KGludCBhLCBpbnQgYiwgaW50IGMpIHsKKyAgaWYgKChhID09IGMpKQorICAgIGIgPSA3Owor ICBlbHNlCisgICAgYiA9IDQ7CisgIHJldHVybiBiOworfQorCitpbnQgcHJpbWl0aXZlU2Vt YW50aWNzX2NvbXBhcmVfcmVnX3JldHVybl9pbW1faW1tXzExKGludCBhLCBpbnQgYiwgaW50 IGMpIHsKKyAgaWYgKCEoYSA9PSBjKSkKKyAgICBiID0gNzsKKyAgZWxzZQorICAgIGIgPSA0 OworICByZXR1cm4gYjsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRp bWVzIHtcbWN6ZXJvLmVxelxNfSA2IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLXRpbWVzIHtcbWN6ZXJvLm5lelxNfSA2IH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLW5vdCB7XG1iZXFcTX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItbm90IHtcbWJuZVxNfSB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96aWNvbmQtcHJpbWl0aXZlU2VtYW50aWNzX2Nv bXBhcmVfcmVnX3JldHVybl9pbW1fcmVnLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3Yvemljb25kLXByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX3JlZ19yZXR1cm5faW1t X3JlZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MTk5YmE3 MWVmNAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di96aWNvbmQtcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVybl9pbW1fcmVn LmMKQEAgLTAsMCArMSw2NSBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLW1hcmNoPXJ2NjRnY196aWNvbmQgLW1hYmk9bHA2NGQiIHsgdGFyZ2V0IHsg cnY2NCB9IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItbWFyY2g9cnYzMmdjX3ppY29uZCAt bWFiaT1pbHAzMmYiIHsgdGFyZ2V0IHsgcnYzMiB9IH0gfSAqLworLyogeyBkZy1za2lwLWlm ICIiIHsgKi0qLSogfSB7Ii1PMCIgIi1PZyIgIi1PcyIgIi1PeiJ9IH0gKi8KKworbG9uZyBw cmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9yZWdfcmV0dXJuX2ltbV9yZWdfMDAobG9uZyBh LCBsb25nIGIsIGxvbmcgYykgeworICByZXR1cm4gYSA9PSBjID8gMTAgOiBiOworfQorCits b25nIHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX3JlZ19yZXR1cm5faW1tX3JlZ18wMShs b25nIGEsIGxvbmcgYiwgbG9uZyBjKSB7CisgIHJldHVybiBhICE9IGMgPyAxMCA6IGI7Cit9 CisKK2xvbmcgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVybl9pbW1fcmVn XzAyKGxvbmcgYSwgbG9uZyBiLCBsb25nIGMpIHsKKyAgcmV0dXJuIGEgPT0gYyA/IGIgOiAx MDsKK30KKworbG9uZyBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9yZWdfcmV0dXJuX2lt bV9yZWdfMDMobG9uZyBhLCBsb25nIGIsIGxvbmcgYykgeworICByZXR1cm4gYSAhPSBjID8g YiA6IDEwOworfQorCitsb25nIHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX3JlZ19yZXR1 cm5faW1tX3JlZ18wNChsb25nIGEsIGxvbmcgYiwgbG9uZyBjKSB7CisgIGlmIChhID09IGMp CisgICAgYiA9IDEwOworICByZXR1cm4gYjsKK30KKworbG9uZyBwcmltaXRpdmVTZW1hbnRp Y3NfY29tcGFyZV9yZWdfcmV0dXJuX2ltbV9yZWdfMDUobG9uZyBhLCBsb25nIGIsIGxvbmcg YykgeworICBpZiAoIShhID09IGMpKQorICAgIGIgPSAxMDsKKyAgcmV0dXJuIGI7Cit9CisK K2ludCBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9yZWdfcmV0dXJuX2ltbV9yZWdfMDYo aW50IGEsIGludCBiLCBpbnQgYykgeworICByZXR1cm4gYSA9PSBjID8gMTAgOiBiOworfQor CitpbnQgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVybl9pbW1fcmVnXzA3 KGludCBhLCBpbnQgYiwgaW50IGMpIHsKKyAgcmV0dXJuIGEgIT0gYyA/IDEwIDogYjsKK30K KworaW50IHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX3JlZ19yZXR1cm5faW1tX3JlZ18w OChpbnQgYSwgaW50IGIsIGludCBjKSB7CisgIHJldHVybiBhID09IGMgPyBiIDogMTA7Cit9 CisKK2ludCBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9yZWdfcmV0dXJuX2ltbV9yZWdf MDkoaW50IGEsIGludCBiLCBpbnQgYykgeworICByZXR1cm4gYSAhPSBjID8gYiA6IDEwOwor fQorCitpbnQgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVybl9pbW1fcmVn XzEwKGludCBhLCBpbnQgYiwgaW50IGMpIHsKKyAgaWYgKChhID09IGMpKQorICAgIGIgPSAx MDsKKyAgcmV0dXJuIGI7Cit9CisKK2ludCBwcmltaXRpdmVTZW1hbnRpY3NfY29tcGFyZV9y ZWdfcmV0dXJuX2ltbV9yZWdfMTEoaW50IGEsIGludCBiLCBpbnQgYykgeworICBpZiAoIShh ID09IGMpKQorICAgIGIgPSAxMDsKKyAgcmV0dXJuIGI7Cit9CisKKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XG1jemVyby5lcXpcTX0gNiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XG1jemVyby5uZXpcTX0gNiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1xtYmVxXE19IH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XG1ibmVcTX0gfSB9ICov CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvemljb25kLXBy aW1pdGl2ZVNlbWFudGljc19jb21wYXJlX3JlZ19yZXR1cm5fcmVnX3JlZy5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3ppY29uZC1wcmltaXRpdmVTZW1hbnRpY3NfY29t cGFyZV9yZWdfcmV0dXJuX3JlZ19yZWcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uZWVjYjk1Njg4ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3Yvemljb25kLXByaW1pdGl2ZVNlbWFudGljc19jb21wYXJl X3JlZ19yZXR1cm5fcmVnX3JlZy5jCkBAIC0wLDAgKzEsNzcgQEAKKy8qIHsgZGctZG8gY29t cGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjY0Z2Nfemljb25kIC1tYWJp PWxwNjRkIiB7IHRhcmdldCB7IHJ2NjQgfSB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1h cmNoPXJ2MzJnY196aWNvbmQgLW1hYmk9aWxwMzJmIiB7IHRhcmdldCB7IHJ2MzIgfSB9IH0g Ki8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyItTzAiICItT2ciICItT3MiICIt T3oifSB9ICovCisKK2xvbmcgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVy bl9yZWdfcmVnXzAwKGxvbmcgYSwgbG9uZyBiLCBsb25nIGMsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGQpIHsKKyAgcmV0 dXJuIGEgPT0gYyA/IGQgOiBiOworfQorCitsb25nIHByaW1pdGl2ZVNlbWFudGljc19jb21w YXJlX3JlZ19yZXR1cm5fcmVnX3JlZ18wMShsb25nIGEsIGxvbmcgYiwgbG9uZyBjLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9u ZyBkKSB7CisgIHJldHVybiBhICE9IGMgPyBkIDogYjsKK30KKworbG9uZyBwcmltaXRpdmVT ZW1hbnRpY3NfY29tcGFyZV9yZWdfcmV0dXJuX3JlZ19yZWdfMDIobG9uZyBhLCBsb25nIGIs IGxvbmcgYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxvbmcgZCkgeworICByZXR1cm4gYSA9PSBjID8gYiA6IGQ7Cit9CisKK2xv bmcgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVybl9yZWdfcmVnXzAzKGxv bmcgYSwgbG9uZyBiLCBsb25nIGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsb25nIGQpIHsKKyAgcmV0dXJuIGEgIT0gYyA/IGIg OiBkOworfQorCitsb25nIHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX3JlZ19yZXR1cm5f cmVnX3JlZ18wNChsb25nIGEsIGxvbmcgYiwgbG9uZyBjLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkKSB7CisgIGlmIChh ID09IGMpCisgICAgYiA9IGQ7CisgIHJldHVybiBiOworfQorCitsb25nIHByaW1pdGl2ZVNl bWFudGljc19jb21wYXJlX3JlZ19yZXR1cm5fcmVnX3JlZ18wNShsb25nIGEsIGxvbmcgYiwg bG9uZyBjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbG9uZyBkKSB7CisgIGlmICghKGEgPT0gYykpCisgICAgYiA9IGQ7CisgIHJl dHVybiBiOworfQorCitpbnQgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVy bl9yZWdfcmVnXzA2KGludCBhLCBpbnQgYiwgaW50IGMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkKSB7CisgIHJldHVybiBh ID09IGMgPyBkIDogYjsKK30KKworaW50IHByaW1pdGl2ZVNlbWFudGljc19jb21wYXJlX3Jl Z19yZXR1cm5fcmVnX3JlZ18wNyhpbnQgYSwgaW50IGIsIGludCBjLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZCkgeworICBy ZXR1cm4gYSAhPSBjID8gZCA6IGI7Cit9CisKK2ludCBwcmltaXRpdmVTZW1hbnRpY3NfY29t cGFyZV9yZWdfcmV0dXJuX3JlZ19yZWdfMDgoaW50IGEsIGludCBiLCBpbnQgYywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGQp IHsKKyAgcmV0dXJuIGEgPT0gYyA/IGIgOiBkOworfQorCitpbnQgcHJpbWl0aXZlU2VtYW50 aWNzX2NvbXBhcmVfcmVnX3JldHVybl9yZWdfcmVnXzA5KGludCBhLCBpbnQgYiwgaW50IGMs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBkKSB7CisgIHJldHVybiBhICE9IGMgPyBiIDogZDsKK30KKworaW50IHByaW1pdGl2 ZVNlbWFudGljc19jb21wYXJlX3JlZ19yZXR1cm5fcmVnX3JlZ18xMChpbnQgYSwgaW50IGIs IGludCBjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgZCkgeworICBpZiAoKGEgPT0gYykpCisgICAgYiA9IGQ7CisgIHJldHVy biBiOworfQorCitpbnQgcHJpbWl0aXZlU2VtYW50aWNzX2NvbXBhcmVfcmVnX3JldHVybl9y ZWdfcmVnXzExKGludCBhLCBpbnQgYiwgaW50IGMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkKSB7CisgIGlmICghKGEgPT0g YykpCisgICAgYiA9IGQ7CisgIHJldHVybiBiOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMge1xtY3plcm8uZXF6XE19IDEyIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcbWN6ZXJvLm5lelxNfSAxMiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1xtYmVxXE19IH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XG1ibmVcTX0gfSB9ICovCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvemljb25kLXByaW1p dGl2ZVNlbWFudGljc19yZXR1cm5fMF9pbW0uYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi96aWNvbmQtcHJpbWl0aXZlU2VtYW50aWNzX3JldHVybl8wX2ltbS5jCmluZGV4 IDA3NjRkMjkxOWQ0Li5lM2NjYjE3MDMyZSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3ppY29uZC1wcmltaXRpdmVTZW1hbnRpY3NfcmV0dXJuXzBfaW1t LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3ppY29uZC1wcmltaXRp dmVTZW1hbnRpY3NfcmV0dXJuXzBfaW1tLmMKQEAgLTYxLDUgKzYxLDUgQEAgaW50IHByaW1p dGl2ZVNlbWFudGljc19yZXR1cm5fMF9pbW1fMTEoaW50IGEsIGludCBiKSB7CiAKIC8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XG1jemVyb1wuZXF6XE19IDYgfSB9 ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1xtY3plcm9cLm5l elxNfSA2IH0gfSAqLwotLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XG1i ZXF9IH0gfSAqLwotLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XG1ibmV9 IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XG1iZXFcTX0g fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcbWJuZVxNfSB9 IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96aWNv bmQtcHJpbWl0aXZlU2VtYW50aWNzX3JldHVybl9pbW1faW1tLmMgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3Yvemljb25kLXByaW1pdGl2ZVNlbWFudGljc19yZXR1cm5faW1t X2ltbS5jCmluZGV4IDJmZjUwMzNiYjA0Li42MmY5ZmIyOTE2OSAxMDA2NDQKLS0tIGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3ppY29uZC1wcmltaXRpdmVTZW1hbnRpY3Nf cmV0dXJuX2ltbV9pbW0uYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv emljb25kLXByaW1pdGl2ZVNlbWFudGljc19yZXR1cm5faW1tX2ltbS5jCkBAIC02OSw1ICs2 OSw1IEBAIGludCBwcmltaXRpdmVTZW1hbnRpY3NfcmV0dXJuX2ltbV9pbW1fMTEoaW50IGEs IGludCBiKSB7CiAKIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XG1j emVyb1wuZXF6XE19IDYgfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt dGltZXMge1xtY3plcm9cLm5lelxNfSA2IH0gfSAqLwotLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLW5vdCB7XG1iZXF9IH0gfSAqLwotLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLW5vdCB7XG1ibmV9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLW5vdCB7XG1iZXFcTX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItbm90IHtcbWJuZVxNfSB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9yaXNjdi96aWNvbmQtcHJpbWl0aXZlU2VtYW50aWNzX3JldHVybl9pbW1fcmVn LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvemljb25kLXByaW1pdGl2ZVNl bWFudGljc19yZXR1cm5faW1tX3JlZy5jCmluZGV4IDkzODQ0ZDE2NmMzLi4wODY2Zjg2ZTZj ZSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3ppY29uZC1w cmltaXRpdmVTZW1hbnRpY3NfcmV0dXJuX2ltbV9yZWcuYworKysgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3Yvemljb25kLXByaW1pdGl2ZVNlbWFudGljc19yZXR1cm5faW1t X3JlZy5jCkBAIC02MSw1ICs2MSw1IEBAIGludCBwcmltaXRpdmVTZW1hbnRpY3NfcmV0dXJu X2ltbV9yZWdfMTEoaW50IGEsIGludCBiKSB7CiAKIC8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyB7XG1jemVyb1wuZXF6XE19IDYgfSB9ICovCiAvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1xtY3plcm9cLm5lelxNfSA2IH0gfSAqLwotLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XG1iZXF9IH0gfSAqLwotLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XG1ibmV9IH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XG1iZXFcTX0gfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcbWJuZVxNfSB9IH0gKi8KZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96aWNvbmQtcHJpbWl0aXZlU2VtYW50 aWNzX3JldHVybl9yZWdfcmVnLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv emljb25kLXByaW1pdGl2ZVNlbWFudGljc19yZXR1cm5fcmVnX3JlZy5jCmluZGV4IDYxOWFk OGVjZjdkLi5lYjE3NjRhMjdiYSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3ppY29uZC1wcmltaXRpdmVTZW1hbnRpY3NfcmV0dXJuX3JlZ19yZWcuYwor KysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvemljb25kLXByaW1pdGl2ZVNl bWFudGljc19yZXR1cm5fcmVnX3JlZy5jCkBAIC02MSw1ICs2MSw1IEBAIGludCBwcmltaXRp dmVTZW1hbnRpY3NfcmV0dXJuX3JlZ19yZWdfMTEoaW50IGEsIGludCBiLCBpbnQgYykgewog CiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1xtY3plcm9cLmVxelxN fSAxMiB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XG1j emVyb1wubmV6XE19IDEyIH0gfSAqLwotLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LW5vdCB7XG1iZXF9IH0gfSAqLwotLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5v dCB7XG1ibmV9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7 XG1iZXFcTX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtc bWJuZVxNfSB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi96aWNvbmQteG9yLTAxLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv emljb25kLXhvci0wMS5jCmluZGV4IDgzNjJmZmFmNWFiLi4yMDA3OWZkNDM1MSAxMDA2NDQK LS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3ppY29uZC14b3ItMDEuYwor KysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yvemljb25kLXhvci0wMS5jCkBA IC0xMCw1ICsxMCw1IEBAIGxvbmcgeG9yMShsb25nIGNyYywgbG9uZyBwb2x5KQogICByZXR1 cm4gY3JjOwogfQogCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImN6 ZXJvLmVxelx0IiAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRp bWVzIHtcbWN6ZXJvLmVxelxNfSAxIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLXRpbWVzICJ4b3JcdCIgMSB9IH0gKi8K --------------iP8i0Ec9F1l4MJptwxHshcpy--