From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x431.google.com (mail-pf1-x431.google.com [IPv6:2607:f8b0:4864:20::431]) by sourceware.org (Postfix) with ESMTPS id 7D3A73858D20; Sun, 9 Jun 2024 06:14:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7D3A73858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7D3A73858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::431 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1717913695; cv=none; b=ZBtQ1z9vKlkp4q/DlTv6rgm8DqLTC32mvZrRjXdMMG8T+tockXj6nZKDgNhk5Jzo8hyQIsDffF3gD1mcCWR+92bpaHG1a6ETnFTQVXNRoB1+nmmxg3H9BSrTL1ObZ+fH60M1iwzWy2/Nj3BvoCtAZ1aRMGNpiYZPYNT/v8eFXng= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1717913695; c=relaxed/simple; bh=DCFaH1FFfBZFj3zPjSQV+QrZgF/4M+SomkqJXb2ymDo=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=WZwntLWkZqrICfINP11GSy+WzkDbzybalQILh1EuGf+L72q7s4kBczSA7hiTbrBCTZCL8SHirg00Q4PkeKcM4OcHgQ1+Nczp4WaWtNmZXLtxO6+esBPMKhbWXDvQQnB8NESiVzLaN5YFITEAigU+o85C5beTEiwnWWGV3EOGzzI= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-704313fa830so307729b3a.3; Sat, 08 Jun 2024 23:14:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717913691; x=1718518491; darn=gcc.gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=PkQZqrdXu6udMyDh9q0zkz5o6TdmmpiaoJ/aed5yr80=; b=h4BW+h2CNWAibtcGY7VBEUF6Nv4q+/JtSrsVvt6qmtvKxxpc/lqetNOMzrV0YooFsi jcO2Ds7EgnGmyaolf9OlEpxcUWpyD7ch5xQfWaRJFVhlQ9Snh9SxPz4VSh0ZMfFWgnBg TR9iZWjB+hj0gtlBPCn2kLZfhwJzQo7IRkgXBmVvrFhy0lwyYLteQWd394C1cMf1xCOb NwBVOBjxCGLGFbKkQRVZLQ+v2CjTd6U2zhqL6lDzu9uAD5q409DCn9vHPlPcSBqGlogK RoJqb/746D+EXkeThaF3mGftZWP4R+F9rO9GfWtl2wgCAdxzpFih+2ql7dud/1GRYbY5 pN+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717913691; x=1718518491; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=PkQZqrdXu6udMyDh9q0zkz5o6TdmmpiaoJ/aed5yr80=; b=MpfubcJYcf66/Io4YJgFBmobYK44Ok5Vj2CzBzHW6LCZXqZMj6i3bwFeJvf+p5qPoZ edhBHy/DG1yxb+8ESqAQ3oewwbYcEAGYViSDMrVup/NEPVpsyMiH0VbTV9E/ZRIl08/p seBifYJPblxUiwLCpuyhdbpgaarcwNRer/YJjHU6n/fSiP37/Hc/lMSMy1XfIjtDZiL4 rZCKSA6VSlYzjN0MxWgDnX/ww/wFWROfAs51zjr1QbvnsHd3vjCVZENRXvqwLgqb64Qh eBs7l02CaR+Iy0OuiIhdWSd1Zh4Rwl361D1OkbSXeajQ4xEiSaNnFWwxoAQI8WZofTYJ 7NRw== X-Forwarded-Encrypted: i=1; AJvYcCXa3tOJ05B2Vk6NJ1Ck6ZKus9L8ioUE1wXOjqOuwzPKX98dfcCR9icesZQnCjWiaYR+s8mpjtZqBPHiNUzyyirGeW46wVnFcw== X-Gm-Message-State: AOJu0YwfLydPlvGLrvcEomf9WBdxTHvc67dHd9QyasfvlMQVjnCQ3guv z9BqQn7eKKS9pnjsVj02tq3sA0P7MaEYn63kT6tcCValL8VoIe0/oFQrbTUl+AufhZ/P2tTuSTj 3BiffBKA8N9nOiM5rm15DjZgOTPyhtX5b X-Google-Smtp-Source: AGHT+IH7Uk2nYYPTKNFO0sYfTqyIZqXX2Mg8OAKDPaR5jAdyJP8SeI7AkXf6QeAjkH4U6ADafCKbBvGJDNHB5wBMkOY= X-Received: by 2002:a05:6a20:da84:b0:1af:8c2f:5f5e with SMTP id adf61e73a8af0-1b2f9a60c73mr6872368637.28.1717913690683; Sat, 08 Jun 2024 23:14:50 -0700 (PDT) MIME-Version: 1.0 From: Paul Richard Thomas Date: Sun, 9 Jun 2024 07:14:39 +0100 Message-ID: Subject: [Patch, fortran] PR59104 To: "fortran@gcc.gnu.org" , gcc-patches Content-Type: multipart/mixed; boundary="0000000000004a3664061a6ef3f7" X-Spam-Status: No, score=-7.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,HTML_MESSAGE,KAM_NUMSUBJECT,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: --0000000000004a3664061a6ef3f7 Content-Type: multipart/alternative; boundary="0000000000004a3662061a6ef3f5" --0000000000004a3662061a6ef3f5 Content-Type: text/plain; charset="UTF-8" Hi All, The attached fixes a problem that, judging by the comments, has been looked at periodically over the last ten years but just looked to be too fiendishly complicated to fix. This is not in small part because of the confusing ordering of dummies in the tlink chain and the unintuitive placement of all deferred initializations to the front of the init chain in the wrapped block. The result of the existing ordering is that the initialization code for non-dummy variables that depends on the function result occurs before any initialization code for the function result itself. The fix ensures that: (i) These variables are placed correctly in the tlink chain, respecting inter-dependencies; and (ii) The dependent initializations are placed at the end of the wrapped block init chain. The details appear in the comments in the patch. It is entirely possible that a less clunky fix exists but I failed to find it. OK for mainline? Regards Paul --0000000000004a3662061a6ef3f5-- --0000000000004a3664061a6ef3f7 Content-Type: application/octet-stream; name="Change.Logs" Content-Disposition: attachment; filename="Change.Logs" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lx75e3j80 Rm9ydHJhbjogUHV0IGF1dG8gYXJyYXkgYWxsb2NhdGlvbiBhbmQgY2hhcmFj dGVyIGxlbmd0aCBjb252ZXJzaW9uIHdpdGgKZnVuY3Rpb24gcmVzdWx0IGRl cGVuZGVuY3kgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgW1BSNTkxMDRdCgoyMDI0 LTA2LTA5ICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKZ2Nj L2ZvcnRyYW4KCVBSIGZvcnRyYW4vNTkxMDQKCSogZGVwZW5kZW5jeS5jYyAo ZGVwZW5kZW5jeV9mY24sIGdmY19mdW5jdGlvbl9kZXBlbmRlbmN5KTogTmV3 CglmdW5jdGlvbnMgdG8gZGV0ZWN0IGRlcGVuZGVuY3kgaW4gYXJyYXkgYm91 bmRzIGFuZCBjaGFyYWN0ZXIKCWxlbmd0aHMgb24gb2xkIHN0eWxlIGZ1bmN0 aW9uIHJlc3VsdHMuCgkqIGRlcGVuZGVuY3kuaCA6IEFkZCBwcm90b3R5cGUg Zm9yIGdmY19mdW5jdGlvbl9kZXBlbmRlbmN5LgoJKiBlcnJvci5jYyAoZXJy b3JfcHJpbnQpOiBSZW1vdmUgdHJhaWxpbmcgc3BhY2UuCgkqIHN5bWJvbC5j YyA6IEluY2x1ZGUgZGVwZW5kZW5jeS5oLgoJKGdmY19zZXRfc3ltX3JlZmVy ZW5jZWQpOiBTZXQgZHVtbXlfb3JkZXIgZm9yIHN5bWJvbHMgd2l0aCBmY24K CWRlcGVuZGVuY2llcy4KCSogdHJhbnMtYXJyYXkuY2MgKGdmY190cmFuc19h dXRvX2FycmF5X2FsbG9jYXRpb24pOiBEZXRlY3QKCW5vbi1kdW1teSBzeW1i b2xzIHdpdGggZnVuY3Rpb24gZGVwZW5kZW5jaWVzIGFuZCBwdXQgdGhlCglh bGxvY2F0aW9uIGF0IHRoZSBlbmQgb2YgdGhlIGluaXRpYWxpemF0aW9uIGNv ZGUuCgkqIHRyYW5zLWRlY2wuY2MgOiBJbmNsdWRlIGRlcGVuZGVuY3kuaC4K CShnZmNfZGVmZXJfc3ltYm9sX2luaXQpOiBDYWxsIGdmY19mdW5jdGlvbl9k ZXBlbmRlbmN5IHRvIHB1dAoJZGVwZW5kZW50IHN5bWJvbHMgaW4gdGhlIHJp Z2h0IHBhcnQgb2YgdGhlIHRsaW5rIGNoYWluLgoJKGdmY190cmFuc19hdXRv X2NoYXJhY3Rlcl92YXJpYWJsZSk6IFB1dCBjaGFyYWN0ZXIgbGVuZ3RoCglp bml0aWFsaXphdGlvbiBvZiBkZXBlbmRlbnQgc3ltYm9scyBhdCB0aGUgZW5k IG9mIHRoZSBjaGFpbi4KCSogdHJhbnMuY2MgKGdmY19hZGRfaW5pdF9jbGVh bnVwKTogQWRkIGJvb2xlYW4gYXJndW1lbnQgd2l0aAoJZGVmYXVsdCB0cnVl IHRoYXQgZGV0ZXJtaW5lcyB3aHRoZXIgYW4gZXhwcmVzc2lvbiBpcyBwbGFj ZWQgYXQKCXRoZSBiYWNrIG9yIHRoZSBmcm9udCBvZiB0aGUgaW5pdGlhbGl6 YXRpb24gY2hhaW4uCgkqIHRyYW5zLmggOiBVcGRhdGUgdGhlIHByb3RvdHlw ZSBmb3IgZ2ZjX2FkZF9pbml0X2NsZWFudXAuCgpnY2MvdGVzdHN1aXRlLwoJ UFIgZm9ydHJhbi81OTEwNAoJKiBnZm9ydHJhbi5kZy9kZXBlbmRlbnRfZGVj bHNfMjogTmV3IHRlc3QuCg== --0000000000004a3664061a6ef3f7 Content-Type: text/x-patch; charset="US-ASCII"; name="submit.diff" Content-Disposition: attachment; filename="submit.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lx75eej51 ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2RlcGVuZGVuY3kuY2MgYi9nY2Mv Zm9ydHJhbi9kZXBlbmRlbmN5LmNjCmluZGV4IGJhZmU4Y2JjNWJjLi45N2Fj ZThjNzc4ZSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vZGVwZW5kZW5jeS5j YworKysgYi9nY2MvZm9ydHJhbi9kZXBlbmRlbmN5LmNjCkBAIC0yNDk3LDMg KzI0OTcsNjMgQEAgZ2ZjX29tcF9leHByX3ByZWZpeF9zYW1lIChnZmNfZXhw ciAqbGV4cHIsIGdmY19leHByICpyZXhwcikKIAogICByZXR1cm4gdHJ1ZTsK IH0KKworCisvKiBnZmNfZnVuY3Rpb25fZGVwZW5kZW5jeSByZXR1cm5zIHRy dWUgZm9yIG5vbi1kdW1teSBzeW1ib2xzIHdpdGggZGVwZW5kZW5jaWVzCisg ICBvbiBhbiBvbGQtZmFzaGlvbmVkIGZ1bmN0aW9uIHJlc3VsdCAoaWUuIHBy b2NfbmFtZSA9IHByb2NfbmFtZS0+cmVzdWx0KS4KKyAgIFRoaXMgaXMgdXNl ZCB0byBlbnN1cmUgdGhhdCBpbml0aWFsaXphdGlvbiBjb2RlIGFwcGVhcnMg YWZ0ZXIgdGhlIGZ1bmN0aW9uCisgICByZXN1bHQgaXMgdHJlYXRlZCBhbmQg dGhhdCBhbnkgbXV0dWFsIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZXNlIHN5 bWJvbHMgYXJlCisgICByZXNwZWN0ZWQuICAqLworCitzdGF0aWMgYm9vbAor ZGVwZW5kZW5jeV9mY24gKGdmY19leHByICplLCBnZmNfc3ltYm9sICpzeW0s CisJCSBpbnQgKmYgQVRUUklCVVRFX1VOVVNFRCkKK3sKKyAgaWYgKGUgPT0g TlVMTCkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgaWYgKGUgJiYgZS0+ZXhw cl90eXBlID09IEVYUFJfVkFSSUFCTEUKKyAgICAgICYmIGUtPnN5bXRyZWUK KyAgICAgICYmIGUtPnN5bXRyZWUtPm4uc3ltID09IHN5bSkKKyAgICByZXR1 cm4gdHJ1ZTsKKworICByZXR1cm4gZmFsc2U7Cit9CisKKworYm9vbAorZ2Zj X2Z1bmN0aW9uX2RlcGVuZGVuY3kgKGdmY19zeW1ib2wgKnN5bSwgZ2ZjX3N5 bWJvbCAqcHJvY19uYW1lKQoreworICBib29sIGZyb250ID0gZmFsc2U7CisK KyAgaWYgKHByb2NfbmFtZSAmJiBwcm9jX25hbWUtPmF0dHIuZnVuY3Rpb24K KyAgICAgICYmIHByb2NfbmFtZSA9PSBwcm9jX25hbWUtPnJlc3VsdAorICAg ICAgJiYgIShzeW0tPmF0dHIuZHVtbXkgfHwgc3ltLT5hdHRyLnJlc3VsdCkp CisgICAgeworICAgICAgaWYgKHN5bS0+YXMgJiYgc3ltLT5hcy0+dHlwZSA9 PSBBU19FWFBMSUNJVCkKKwl7CisJICBmb3IgKGludCBkaW0gPSAwOyBkaW0g PCBzeW0tPmFzLT5yYW5rOyBkaW0rKykKKwkgICAgeworCSAgICAgIGlmIChz eW0tPmFzLT5sb3dlcltkaW1dCisJCSAgJiYgc3ltLT5hcy0+bG93ZXJbZGlt XS0+ZXhwcl90eXBlICE9IEVYUFJfQ09OU1RBTlQpCisJCWZyb250ID0gZ2Zj X3RyYXZlcnNlX2V4cHIgKHN5bS0+YXMtPmxvd2VyW2RpbV0sIHByb2NfbmFt ZSwKKwkJCQkJICAgZGVwZW5kZW5jeV9mY24sIDApOworCSAgICAgIGlmIChm cm9udCkKKwkJYnJlYWs7CisJICAgICAgaWYgKHN5bS0+YXMtPnVwcGVyW2Rp bV0KKwkJICAmJiBzeW0tPmFzLT51cHBlcltkaW1dLT5leHByX3R5cGUgIT0g RVhQUl9DT05TVEFOVCkKKwkJZnJvbnQgPSBnZmNfdHJhdmVyc2VfZXhwciAo c3ltLT5hcy0+dXBwZXJbZGltXSwgcHJvY19uYW1lLAorCQkJCQkgICBkZXBl bmRlbmN5X2ZjbiwgMCk7CisJICAgICAgaWYgKGZyb250KQorCQlicmVhazsK KwkgICAgfQorCX0KKworICAgICAgaWYgKHN5bS0+dHMudHlwZSA9PSBCVF9D SEFSQUNURVIKKwkgICYmIHN5bS0+dHMudS5jbCAmJiBzeW0tPnRzLnUuY2wt Pmxlbmd0aAorCSAgJiYgc3ltLT50cy51LmNsLT5sZW5ndGgtPmV4cHJfdHlw ZSAhPSBFWFBSX0NPTlNUQU5UKQorCWZyb250ID0gZ2ZjX3RyYXZlcnNlX2V4 cHIgKHN5bS0+dHMudS5jbC0+bGVuZ3RoLCBwcm9jX25hbWUsCisJCQkJICAg ZGVwZW5kZW5jeV9mY24sIDApOworICAgIH0KKyAgcmV0dXJuIGZyb250Owor IH0KZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2RlcGVuZGVuY3kuaCBiL2dj Yy9mb3J0cmFuL2RlcGVuZGVuY3kuaAppbmRleCBlYTRiZDA0YjBlOC4uMGZh NWY5M2QwZmMgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL2RlcGVuZGVuY3ku aAorKysgYi9nY2MvZm9ydHJhbi9kZXBlbmRlbmN5LmgKQEAgLTIzLDcgKzIz LDcgQEAgZW51bSBnZmNfZGVwX2NoZWNrCiB7CiAgIE5PVF9FTEVNRU5UQUws ICAgICAgICAvKiBOb3QgZWxlbWVudGFsIGNhc2U6IG5vcm1hbCBkZXBlbmRl bmN5IGNoZWNrLiAgKi8KICAgRUxFTV9DSEVDS19WQVJJQUJMRSwgIC8qIFRl c3Qgd2hldGhlciB2YXJpYWJsZXMgb3ZlcmxhcC4gICovCi0gIEVMRU1fRE9O VF9DSEVDS19WQVJJQUJMRSAgLyogVGVzdCB3aGV0aGVyIHZhcmlhYmxlcyBv dmVybGFwIG9ubHkgaWYgdXNlZCAKKyAgRUxFTV9ET05UX0NIRUNLX1ZBUklB QkxFICAvKiBUZXN0IHdoZXRoZXIgdmFyaWFibGVzIG92ZXJsYXAgb25seSBp ZiB1c2VkCiAJCQkgICAgICAgaW4gYW4gZXhwcmVzc2lvbi4gICovCiB9Owog CkBAIC00MywzICs0Myw1IEBAIGJvb2wgZ2ZjX2FyZV9lcXVpdmFsZW5jZWRf YXJyYXlzIChnZmNfZXhwciAqLCBnZmNfZXhwciAqKTsKIGJvb2wgZ2ZjX29t cF9leHByX3ByZWZpeF9zYW1lIChnZmNfZXhwciAqLCBnZmNfZXhwciAqKTsK IAogZ2ZjX2V4cHIgKiBnZmNfZGlzY2FyZF9ub3BzIChnZmNfZXhwciAqKTsK KworYm9vbCBnZmNfZnVuY3Rpb25fZGVwZW5kZW5jeSAoZ2ZjX3N5bWJvbCAq LCBnZmNfc3ltYm9sICopOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2Vycm9yLmNjIGIvZ2NjL2ZvcnRy YW4vZXJyb3IuY2MKaW5kZXggNjVlMzhiMGU4NjYuLjYwZjYwN2VjYzRmIDEw MDY0NAotLS0gYS9nY2MvZm9ydHJhbi9lcnJvci5jYworKysgYi9nY2MvZm9y dHJhbi9lcnJvci5jYwpAQCAtODkyLDcgKzg5Miw3IEBAIGVycm9yX3ByaW50 IChjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpmb3JtYXQwLCB2YV9s aXN0IGFyZ3ApCiAjZWxzZQogCSAgICAgIG0gPSBJTlRUWVBFX01BWElNVU0g KHB0cmRpZmZfdCk7CiAjZW5kaWYKLQkgICAgICBtID0gMiAqIG0gKyAxOyAg CisJICAgICAgbSA9IDIgKiBtICsgMTsKIAkgICAgICBlcnJvcl91aW50ZWdl ciAoYSAmIG0pOwogCSAgICB9CiAJICBlbHNlCmRpZmYgLS1naXQgYS9nY2Mv Zm9ydHJhbi9zeW1ib2wuY2MgYi9nY2MvZm9ydHJhbi9zeW1ib2wuY2MKaW5k ZXggMGExNjQ2ZGVmNjcuLjdlMzk5ODFlODQzIDEwMDY0NAotLS0gYS9nY2Mv Zm9ydHJhbi9zeW1ib2wuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vc3ltYm9sLmNj CkBAIC0yNyw2ICsyNyw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZp bGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAjaW5jbHVkZSAicGFyc2UuaCIK ICNpbmNsdWRlICJtYXRjaC5oIgogI2luY2x1ZGUgImNvbnN0cnVjdG9yLmgi CisjaW5jbHVkZSAiZGVwZW5kZW5jeS5oIgogCiAKIC8qIFN0cmluZ3MgZm9y IGFsbCBzeW1ib2wgYXR0cmlidXRlcy4gIFdlIHVzZSB0aGVzZSBmb3IgZHVt cGluZyB0aGUKQEAgLTk0OCwxNSArOTQ5LDE4IEBAIGNvbmZsaWN0X3N0ZDoK IHZvaWQKIGdmY19zZXRfc3ltX3JlZmVyZW5jZWQgKGdmY19zeW1ib2wgKnN5 bSkKIHsKKyAgZ2ZjX3N5bWJvbCAqcHJvY19uYW1lID0gc3ltLT5ucy0+cHJv Y19uYW1lID8gc3ltLT5ucy0+cHJvY19uYW1lIDogTlVMTDsKIAogICBpZiAo c3ltLT5hdHRyLnJlZmVyZW5jZWQpCiAgICAgcmV0dXJuOwogCiAgIHN5bS0+ YXR0ci5yZWZlcmVuY2VkID0gMTsKIAotICAvKiBSZW1lbWJlciB3aGljaCBv cmRlciBkdW1teSB2YXJpYWJsZXMgYXJlIGFjY2Vzc2VkIGluLiAgKi8KLSAg aWYgKHN5bS0+YXR0ci5kdW1teSkKLSAgICBzeW0tPmR1bW15X29yZGVyID0g bmV4dF9kdW1teV9vcmRlcisrOworICAvKiBSZW1lbWJlciB3aGljaCBvcmRl ciBkdW1teSB2YXJpYWJsZXMgYW5kIHN5bWJvbHMgd2l0aCBmdW5jdGlvbiBy ZXN1bHQKKyAgICAgZGVwZW5kZW5jaWVzIGFyZSBhY2Nlc3NlZCBpbi4gICov CisgIGlmIChzeW0tPmF0dHIuZHVtbXkKKyAgICAgIHx8IChwcm9jX25hbWUg JiYgZ2ZjX2Z1bmN0aW9uX2RlcGVuZGVuY3kgKHN5bSwgcHJvY19uYW1lKSkp CisgIHN5bS0+ZHVtbXlfb3JkZXIgPSBuZXh0X2R1bW15X29yZGVyKys7CiB9 CiAKIApkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtYXJyYXkuY2Mg Yi9nY2MvZm9ydHJhbi90cmFucy1hcnJheS5jYwppbmRleCBjNWI1NmY0ZTI3 My4uNjc4Y2JiNmExMzggMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5z LWFycmF5LmNjCisrKyBiL2djYy9mb3J0cmFuL3RyYW5zLWFycmF5LmNjCkBA IC02ODY0LDYgKzY4NjQsNyBAQCBnZmNfdHJhbnNfYXV0b19hcnJheV9hbGxv Y2F0aW9uICh0cmVlIGRlY2wsIGdmY19zeW1ib2wgKiBzeW0sCiAgIHRyZWUg c3BhY2U7CiAgIHRyZWUgaW5pdHRyZWU7CiAgIGJvb2wgb25zdGFjazsKKyAg Ym9vbCBiYWNrOwogCiAgIGdjY19hc3NlcnQgKCEoc3ltLT5hdHRyLnBvaW50 ZXIgfHwgc3ltLT5hdHRyLmFsbG9jYXRhYmxlKSk7CiAKQEAgLTY4NzUsNiAr Njg3NiwxMiBAQCBnZmNfdHJhbnNfYXV0b19hcnJheV9hbGxvY2F0aW9uICh0 cmVlIGRlY2wsIGdmY19zeW1ib2wgKiBzeW0sCiAgIGdjY19hc3NlcnQgKEdG Q19BUlJBWV9UWVBFX1AgKHR5cGUpKTsKICAgb25zdGFjayA9IFRSRUVfQ09E RSAodHlwZSkgIT0gUE9JTlRFUl9UWVBFOwogCisgIC8qIEluIHRoZSBjYXNl IG9mIG5vbi1kdW1teSBzeW1ib2xzIHdpdGggZGVwZW5kZW5jaWVzIG9uIGFu IG9sZC1mYXNoaW9uZWQKKyAgICAgZnVuY3Rpb24gcmVzdWx0IChpZS4gcHJv Y19uYW1lID0gcHJvY19uYW1lLT5yZXN1bHQpLCBnZmNfYWRkX2luaXRfY2xl YW51cAorICAgICBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBsYXN0LCBvcHRp b25hbCBhcmd1bWVudCBmYWxzZSBzbyB0aGF0IHRoZSBhbGxvYy0KKyAgICAg YXRpb24gb2NjdXJzIGFmdGVyIHRoZSBwcm9jZXNzaW5nIG9mIHRoZSByZXN1 bHQuICAqLworICBiYWNrID0gIWdmY19mdW5jdGlvbl9kZXBlbmRlbmN5IChz eW0sIHN5bS0+bnMtPnByb2NfbmFtZSk7CisKICAgZ2ZjX2luaXRfYmxvY2sg KCZpbml0KTsKIAogICAvKiBFdmFsdWF0ZSBjaGFyYWN0ZXIgc3RyaW5nIGxl bmd0aC4gICovCkBAIC02OTAyLDcgKzY5MDksOCBAQCBnZmNfdHJhbnNfYXV0 b19hcnJheV9hbGxvY2F0aW9uICh0cmVlIGRlY2wsIGdmY19zeW1ib2wgKiBz eW0sCiAKICAgaWYgKG9uc3RhY2spCiAgICAgewotICAgICAgZ2ZjX2FkZF9p bml0X2NsZWFudXAgKGJsb2NrLCBnZmNfZmluaXNoX2Jsb2NrICgmaW5pdCks IE5VTExfVFJFRSk7CisgICAgICBnZmNfYWRkX2luaXRfY2xlYW51cCAoYmxv Y2ssIGdmY19maW5pc2hfYmxvY2sgKCZpbml0KSwgTlVMTF9UUkVFLAorCQkJ ICAgIGJhY2spOwogICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjk4OSwx MCArNjk5NywxMSBAQCBnZmNfdHJhbnNfYXV0b19hcnJheV9hbGxvY2F0aW9u ICh0cmVlIGRlY2wsIGdmY19zeW1ib2wgKiBzeW0sCiAgICAgICBhZGRyID0g Zm9sZF9idWlsZDFfbG9jIChnZmNfZ2V0X2xvY2F0aW9uICgmc3ltLT5kZWNs YXJlZF9hdCksCiAJCQkgICAgICBBRERSX0VYUFIsIFRSRUVfVFlQRSAoZGVj bCksIHNwYWNlKTsKICAgICAgIGdmY19hZGRfbW9kaWZ5ICgmaW5pdCwgZGVj bCwgYWRkcik7Ci0gICAgICBnZmNfYWRkX2luaXRfY2xlYW51cCAoYmxvY2ss IGdmY19maW5pc2hfYmxvY2sgKCZpbml0KSwgTlVMTF9UUkVFKTsKKyAgICAg IGdmY19hZGRfaW5pdF9jbGVhbnVwIChibG9jaywgZ2ZjX2ZpbmlzaF9ibG9j ayAoJmluaXQpLCBOVUxMX1RSRUUsCisJCQkgICAgYmFjayk7CiAgICAgICB0 bXAgPSBOVUxMX1RSRUU7CiAgICAgfQotICBnZmNfYWRkX2luaXRfY2xlYW51 cCAoYmxvY2ssIGluaXR0cmVlLCB0bXApOworICBnZmNfYWRkX2luaXRfY2xl YW51cCAoYmxvY2ssIGluaXR0cmVlLCB0bXAsIGJhY2spOwogfQogCiAKZGlm ZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLWRlY2wuY2MgYi9nY2MvZm9y dHJhbi90cmFucy1kZWNsLmNjCmluZGV4IGRjYTc3Nzk1MjhiLi5jYjM0YTA0 MDFkMSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jYwor KysgYi9nY2MvZm9ydHJhbi90cmFucy1kZWNsLmNjCkBAIC00OSw2ICs0OSw3 IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJ ZiBub3Qgc2VlCiAjaW5jbHVkZSAib21wLWdlbmVyYWwuaCIKICNpbmNsdWRl ICJhdHRyLWZuc3BlYy5oIgogI2luY2x1ZGUgInRyZWUtaXRlcmF0b3IuaCIK KyNpbmNsdWRlICJkZXBlbmRlbmN5LmgiCiAKICNkZWZpbmUgTUFYX0xBQkVM X1ZBTFVFIDk5OTk5CiAKQEAgLTg0Miw2ICs4NDMsNyBAQCBnZmNfZGVmZXJf c3ltYm9sX2luaXQgKGdmY19zeW1ib2wgKiBzeW0pCiAgIGdmY19zeW1ib2wg KnA7CiAgIGdmY19zeW1ib2wgKmxhc3Q7CiAgIGdmY19zeW1ib2wgKmhlYWQ7 CisgIGJvb2wgYmFjazsKIAogICAvKiBEb24ndCBhZGQgYSBzeW1ib2wgdHdp Y2UuICAqLwogICBpZiAoc3ltLT50bGluaykKQEAgLTg1MCw2ICs4NTIsOCBA QCBnZmNfZGVmZXJfc3ltYm9sX2luaXQgKGdmY19zeW1ib2wgKiBzeW0pCiAg IGxhc3QgPSBoZWFkID0gc3ltLT5ucy0+cHJvY19uYW1lOwogICBwID0gbGFz dC0+dGxpbms7CiAKKyAgYmFjayA9IGdmY19mdW5jdGlvbl9kZXBlbmRlbmN5 IChzeW0sIGhlYWQpOworCiAgIC8qIE1ha2Ugc3VyZSB0aGF0IHNldHVwIGNv ZGUgZm9yIGR1bW15IHZhcmlhYmxlcyB3aGljaCBhcmUgdXNlZCBpbiB0aGUK ICAgICAgc2V0dXAgb2Ygb3RoZXIgdmFyaWFibGVzIGlzIGdlbmVyYXRlZCBm aXJzdC4gICovCiAgIGlmIChzeW0tPmF0dHIuZHVtbXkpCkBAIC04NjMsNiAr ODY3LDIwIEBAIGdmY19kZWZlcl9zeW1ib2xfaW5pdCAoZ2ZjX3N5bWJvbCAq IHN5bSkKICAgICAgICAgICBwID0gcC0+dGxpbms7CiAgICAgICAgIH0KICAg ICB9CisgIGVsc2UgaWYgKGJhY2spCisgICAgeworICAgICAgLyogSW4gdGhl IGNhc2Ugb2Ygbm9uLWR1bW15IHN5bWJvbHMgd2l0aCBkZXBlbmRlbmNpZXMg b24gYW4gb2xkLWZhc2hpb25lZAorICAgICBmdW5jdGlvbiByZXN1bHQgKGll LiBwcm9jX25hbWUgPSBwcm9jX25hbWUtPnJlc3VsdCksIG1ha2Ugc3VyZSB0 aGF0IHRoZQorICAgICBvcmRlciBpbiB0aGUgdGxpbmsgY2hhaW4gaXMgc3Vj aCB0aGF0IHRoZSBjb2RlIGFwcGVhcnMgaW4gZGVjbGFyYXRpb24KKyAgICAg b3JkZXIuIFRoaXMgZW5zdXJlcyB0aGF0IG11dHVhbCBkZXBlbmRlbmNpZXMg YmV0d2VlbiB0aGVzZSBzeW1ib2xzIGFyZQorICAgICByZXNwZWN0ZWQuICAq LworICAgICAgd2hpbGUgKHAgIT0gaGVhZAorICAgICAgICAgICAgICYmICgh cC0+YXR0ci5yZXN1bHQgfHwgcC0+ZHVtbXlfb3JkZXIgPCBzeW0tPmR1bW15 X29yZGVyKSkKKyAgICAgICAgeworICAgICAgICAgIGxhc3QgPSBwOworICAg ICAgICAgIHAgPSBwLT50bGluazsKKyAgICAgICAgfQorICAgIH0KICAgLyog SW5zZXJ0IGluIGJldHdlZW4gbGFzdCBhbmQgcC4gICovCiAgIGxhc3QtPnRs aW5rID0gc3ltOwogICBzeW0tPnRsaW5rID0gcDsKQEAgLTQxODMsMTIgKzQy MDEsMTkgQEAgZ2ZjX3RyYW5zX2F1dG9fY2hhcmFjdGVyX3ZhcmlhYmxlIChn ZmNfc3ltYm9sICogc3ltLCBnZmNfd3JhcHBlZF9ibG9jayAqIGJsb2NrKQog ICBzdG10YmxvY2tfdCBpbml0OwogICB0cmVlIGRlY2w7CiAgIHRyZWUgdG1w OworICBib29sIGJhY2s7CiAKICAgZ2NjX2Fzc2VydCAoc3ltLT5iYWNrZW5k X2RlY2wpOwogICBnY2NfYXNzZXJ0IChzeW0tPnRzLnUuY2wgJiYgc3ltLT50 cy51LmNsLT5sZW5ndGgpOwogCiAgIGdmY19pbml0X2Jsb2NrICgmaW5pdCk7 CiAKKyAgLyogSW4gdGhlIGNhc2Ugb2Ygbm9uLWR1bW15IHN5bWJvbHMgd2l0 aCBkZXBlbmRlbmNpZXMgb24gYW4gb2xkLWZhc2hpb25lZAorICAgICBmdW5j dGlvbiByZXN1bHQgKGllLiBwcm9jX25hbWUgPSBwcm9jX25hbWUtPnJlc3Vs dCksIGdmY19hZGRfaW5pdF9jbGVhbnVwCisgICAgIG11c3QgYmUgY2FsbGVk IHdpdGggdGhlIGxhc3QsIG9wdGlvbmFsIGFyZ3VtZW50IGZhbHNlIHNvIHRo YXQgdGhlIHByb2Nlc3MKKyAgICAgaW5nIG9mIHRoZSBjaGFyYWN0ZXIgbGVu Z3RoIG9jY3VycyBhZnRlciB0aGUgcHJvY2Vzc2luZyBvZiB0aGUgcmVzdWx0 LiAgKi8KKyAgYmFjayA9ICFnZmNfZnVuY3Rpb25fZGVwZW5kZW5jeSAoc3lt LCBzeW0tPm5zLT5wcm9jX25hbWUpOworCiAgIC8qIEV2YWx1YXRlIHRoZSBz dHJpbmcgbGVuZ3RoIGV4cHJlc3Npb24uICAqLwogICBnZmNfY29udl9zdHJp bmdfbGVuZ3RoIChzeW0tPnRzLnUuY2wsIE5VTEwsICZpbml0KTsKIApAQCAt NDIwMSw3ICs0MjI2LDcgQEAgZ2ZjX3RyYW5zX2F1dG9fY2hhcmFjdGVyX3Zh cmlhYmxlIChnZmNfc3ltYm9sICogc3ltLCBnZmNfd3JhcHBlZF9ibG9jayAq IGJsb2NrKQogICB0bXAgPSBmb2xkX2J1aWxkMV9sb2MgKGlucHV0X2xvY2F0 aW9uLCBERUNMX0VYUFIsIFRSRUVfVFlQRSAoZGVjbCksIGRlY2wpOwogICBn ZmNfYWRkX2V4cHJfdG9fYmxvY2sgKCZpbml0LCB0bXApOwogCi0gIGdmY19h ZGRfaW5pdF9jbGVhbnVwIChibG9jaywgZ2ZjX2ZpbmlzaF9ibG9jayAoJmlu aXQpLCBOVUxMX1RSRUUpOworICBnZmNfYWRkX2luaXRfY2xlYW51cCAoYmxv Y2ssIGdmY19maW5pc2hfYmxvY2sgKCZpbml0KSwgTlVMTF9UUkVFLCBiYWNr KTsKIH0KIAogLyogU2V0IHRoZSBpbml0aWFsIHZhbHVlIG9mIEFTU0lHTiBz dGF0ZW1lbnQgYXV4aWxpYXJ5IHZhcmlhYmxlIGV4cGxpY2l0bHkuICAqLwpk aWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMuY2MgYi9nY2MvZm9ydHJh bi90cmFucy5jYwppbmRleCBiYWRhZDZhZTg5Mi4uYjEzMzIyMWViM2IgMTAw NjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLmNjCisrKyBiL2djYy9mb3J0 cmFuL3RyYW5zLmNjCkBAIC0yODAzLDE0ICsyODAzLDE1IEBAIGdmY19zdGFy dF93cmFwcGVkX2Jsb2NrIChnZmNfd3JhcHBlZF9ibG9jayogYmxvY2ssIHRy ZWUgY29kZSkKIC8qIEFkZCBhIG5ldyBwYWlyIG9mIGluaXRpYWxpemVycy9j bGVhbi11cCBjb2RlLiAgKi8KIAogdm9pZAotZ2ZjX2FkZF9pbml0X2NsZWFu dXAgKGdmY193cmFwcGVkX2Jsb2NrKiBibG9jaywgdHJlZSBpbml0LCB0cmVl IGNsZWFudXApCitnZmNfYWRkX2luaXRfY2xlYW51cCAoZ2ZjX3dyYXBwZWRf YmxvY2sqIGJsb2NrLCB0cmVlIGluaXQsIHRyZWUgY2xlYW51cCwKKwkJICAg ICAgYm9vbCBmcm9udCkKIHsKICAgZ2NjX2Fzc2VydCAoYmxvY2spOwogCiAg IC8qIFRoZSBuZXcgcGFpciBvZiBpbml0L2NsZWFudXAgc2hvdWxkIGJlICJ3 cmFwcGVkIGFyb3VuZCIgdGhlIGV4aXN0aW5nCiAgICAgIGJsb2NrIG9mIGNv ZGUsIHRodXMgdGhlIGluaXRpYWxpemF0aW9uIGlzIGFkZGVkIHRvIHRoZSBm cm9udCBhbmQgdGhlCiAgICAgIGNsZWFudXAgdG8gdGhlIGJhY2suICAqLwot ICBhZGRfZXhwcl90b19jaGFpbiAoJmJsb2NrLT5pbml0LCBpbml0LCB0cnVl KTsKKyAgYWRkX2V4cHJfdG9fY2hhaW4gKCZibG9jay0+aW5pdCwgaW5pdCwg ZnJvbnQpOwogICBhZGRfZXhwcl90b19jaGFpbiAoJmJsb2NrLT5jbGVhbnVw LCBjbGVhbnVwLCBmYWxzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL2djYy9mb3J0 cmFuL3RyYW5zLmggYi9nY2MvZm9ydHJhbi90cmFucy5oCmluZGV4IGY5NGZh NjAxNDAwLi5hOTQwYjg5NjBmOCAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4v dHJhbnMuaAorKysgYi9nY2MvZm9ydHJhbi90cmFucy5oCkBAIC00NzEsNyAr NDcxLDggQEAgdm9pZCBnZmNfY29udl9jbGFzc190b19jbGFzcyAoZ2ZjX3Nl ICosIGdmY19leHByICosIGdmY190eXBlc3BlYywgYm9vbCwgYm9vbCwKIHZv aWQgZ2ZjX3N0YXJ0X3dyYXBwZWRfYmxvY2sgKGdmY193cmFwcGVkX2Jsb2Nr KiBibG9jaywgdHJlZSBjb2RlKTsKIC8qIEFkZCBhIHBhaXIgb2YgaW5pdC9j bGVhbnVwIGNvZGUgdG8gdGhlIGJsb2NrLiAgRWFjaCBvbmUgbWlnaHQgYmUg YQogICAgTlVMTF9UUkVFIGlmIG5vdCByZXF1aXJlZC4gICovCi12b2lkIGdm Y19hZGRfaW5pdF9jbGVhbnVwIChnZmNfd3JhcHBlZF9ibG9jayogYmxvY2ss IHRyZWUgaW5pdCwgdHJlZSBjbGVhbnVwKTsKK3ZvaWQgZ2ZjX2FkZF9pbml0 X2NsZWFudXAgKGdmY193cmFwcGVkX2Jsb2NrKiBibG9jaywgdHJlZSBpbml0 LCB0cmVlIGNsZWFudXAsCisJCQkgICBib29sIGZyb250ID0gdHJ1ZSk7CiAv KiBGaW5hbGl6ZSB0aGUgYmxvY2ssIHRoYXQgaXMsIGNyZWF0ZSBhIHNpbmds ZSBleHByZXNzaW9uIGVuY2Fwc3VsYXRpbmcgdGhlCiAgICBvcmlnaW5hbCBj b2RlIHRvZ2V0aGVyIHdpdGggaW5pdCBhbmQgY2xlYW4tdXAgY29kZS4gICov CiB0cmVlIGdmY19maW5pc2hfd3JhcHBlZF9ibG9jayAoZ2ZjX3dyYXBwZWRf YmxvY2sqIGJsb2NrKTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvZGVwZW5kZW50X2RlY2xzXzIuZjkwIGIvZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9kZXBlbmRlbnRfZGVjbHNfMi5mOTAKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjViN2JkZDI3YTQwCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9k ZXBlbmRlbnRfZGVjbHNfMi5mOTAKQEAgLTAsMCArMSw2MyBAQAorISB7IGRn LWRvIHJ1biB9CishCishIEZpeCBmb3IgUFI1OTEwNCBpbiB3aGljaCB0aGUg ZGVwZW5kZW5jZSBvbiB0aGUgb2xkIHN0eWxlIGZ1bmN0aW9uIHJlc3VsdAor ISB3YXMgbm90IHRha2VuIGludG8gYWNjb3VudCBpbiB0aGUgb3JkZXJpbmcg b2YgYXV0byBhcnJheSBhbGxvY2F0aW9uIGFuZAorISBjaGFyYWN0ZXJzIHdp dGggZGVwZW5kZW50IGxlbmd0aHMuCishCishIENvbnRyaWJ1dGVkIGJ5IFRv YmlhcyBCdXJudXMgIDxidXJudXNAZ2NjLmdudS5vcmc+CishCittb2R1bGUg bQorICAgaW1wbGljaXQgbm9uZQorICAgaW50ZWdlciwgcGFyYW1ldGVyIDo6 IGRwID0ga2luZChbZG91YmxlIHByZWNpc2lvbjo6XSkKKyAgIGNvbnRhaW5z CisgICAgICBmdW5jdGlvbiBmKHgpCisgICAgICAgICBpbnRlZ2VyLCBpbnRl bnQoaW4pIDo6IHgKKyAgICAgICAgIHJlYWwoZHApIGYoeC8yKQorICAgICAg ICAgcmVhbChkcCkgZyh4LzIpCisgICAgICAgICBpbnRlZ2VyIHkoc2l6ZShm KSsxKSAgICAgICAgICEgVGhpcyB3YXMgdGhlIG9yaWdpbmFsIHByb2JsZW0K KyAgICAgICAgIGludGVnZXIgeihzaXplKGYpICsgc2l6ZSh5KSkgISBGb3Vu ZCBpbiBkZXZlbG9wbWVudCBvZiB0aGUgZml4CisgICAgICAgICBmID0gMTAu MAorICAgICAgICAgeSA9IDEgICAgICAgICAgICAgICAgICAgICAgICAhIFN0 b3AgLVdhbGwgZnJvbSBjb21wbGFpbmluZworICAgICAgICAgeiA9IDEKKyAg ICAgICAgIGcgPSAxCisgICAgICAgICBpZiAoc2l6ZShmKSAubmUuIDEpIHN0 b3AgMQorICAgICAgICAgaWYgKHNpemUoeSkgLm5lLiAyKSBzdG9wIDIKKyAg ICAgICAgIGlmIChzaXplKHopIC5uZS4gMykgc3RvcCAzCisgICAgICBlbmQg ZnVuY3Rpb24gZgorICAgICAgZnVuY3Rpb24gZSh4KSByZXN1bHQoZikKKyAg ICAgICAgIGludGVnZXIsIGludGVudChpbikgOjogeAorICAgICAgICAgcmVh bChkcCkgZih4LzIpCisgICAgICAgICByZWFsKGRwKSBnKHgvMikKKyAgICAg ICAgIGludGVnZXIgeShzaXplKGYpKzEpCisgICAgICAgICBpbnRlZ2VyIHoo c2l6ZShmKSArIHNpemUoeSkpICEgQXMgd2FzIHRoaXMuCisgICAgICAgICBm ID0gMTAuMAorICAgICAgICAgeSA9IDEKKyAgICAgICAgIHogPSAxCisgICAg ICAgICBnID0gMQorICAgICAgICAgaWYgKHNpemUoZikgLm5lLiAyKSBzdG9w IDQKKyAgICAgICAgIGlmIChzaXplKHkpIC5uZS4gMykgc3RvcCA1CisgICAg ICAgICBpZiAoc2l6ZSh6KSAubmUuIDUpIHN0b3AgNgorICAgICAgZW5kIGZ1 bmN0aW9uCisgICAgICBmdW5jdGlvbiBkKHgpICAhIEFmdGVyIGZpeGVzIHRv IGFycmF5cywgd2hhdCB3YXMgbmVlZGVkIHdhcyBrbm93biEKKyAgICAgICAg aW50ZWdlciwgaW50ZW50KGluKSA6OiB4CisgICAgICAgIGNoYXJhY3Rlcihs ZW4gPSB4LzIpIDo6IGQKKyAgICAgICAgY2hhcmFjdGVyKGxlbiA9IGxlbiAo ZCkpIDo6IGxpbmUKKyAgICAgICAgY2hhcmFjdGVyKGxlbiA9IGxlbiAoZCkg KyBsZW4gKGxpbmUpKSA6OiBsaW5lX3BsdXMKKyAgICAgICAgbGluZSA9IHJl cGVhdCAoImEiLCBsZW4gKGQpKQorICAgICAgICBsaW5lX3BsdXMgPSByZXBl YXQgKCJiIiwgeCkKKyAgICAgICAgaWYgKGxlbiAobGluZV9wbHVzKSAubmUu IHgpIHN0b3AgNworICAgICAgICBkID0gbGluZQorICAgICAgZW5kCitlbmQg bW9kdWxlIG0KKworcHJvZ3JhbSBwCisgICB1c2UgbQorICAgaW1wbGljaXQg bm9uZQorICAgcmVhbChkcCkgeQorCisgICB5ID0gc3VtKGYoMikpCisgICBp ZiAoaW50ICh5KSAubmUuIDEwKSBzdG9wIDgKKyAgIHkgPSBzdW0oZSg0KSkK KyAgIGlmIChpbnQgKHkpIC5uZS4gMjApIHN0b3AgOQorICAgaWYgKGQoNCkg Lm5lLiAiYWEiKSBzdG9wIDEwCitlbmQgcHJvZ3JhbSBwCg== --0000000000004a3664061a6ef3f7--