Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vDpdF-00HDQl-SI for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Oct 2025 19:45:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vDpdE-00EqQQ-3m for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Oct 2025 19:45:23 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vDpdD-00EqQI-BW for pgsql-hackers@lists.postgresql.org; Tue, 28 Oct 2025 19:45:22 +0000 Received: from mail-lf1-x130.google.com ([2a00:1450:4864:20::130]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vDpd8-004G1o-2s for pgsql-hackers@postgresql.org; Tue, 28 Oct 2025 19:45:21 +0000 Received: by mail-lf1-x130.google.com with SMTP id 2adb3069b0e04-592f1988a2dso262149e87.0 for ; Tue, 28 Oct 2025 12:45:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1761680716; x=1762285516; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=pFbITEEw3BdRP2th+fpamhTgDZ7fYj56VOFVGH5TScw=; b=VTCzYT6J1JSjxHF5URWyUq0IyF9l4ayefjuDYatkDd4WcO7LzsfYaR1PcRLR+Palai +4erNcPmdybyRbhG/Z8Hq1PFIZDnPwV1SmfP4gFWOAyih6ty8ntAUjpSTWZWi1DWMOM5 WqZ9H/8gHhDoYtIW439cGOW7eeI0VNSz/CN8MZ820T9uEoaLU7nIoIzWNBvktHkbMSsb ImvZg6ptjmmcfCL3QQ2hZy8Zn7egRNEUs0MC20K3hCZkKJ0mhwvv4oclfdZuEJ+9jom1 zO4U2Daf+LJjIolONmRK9OSWqJyJyunOlZFjLbOk2ACH9ZEGEEXnXHKvMx4ZFBlLqG60 9Z9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761680716; x=1762285516; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=pFbITEEw3BdRP2th+fpamhTgDZ7fYj56VOFVGH5TScw=; b=Fzfe8L5nsCirMP6REKlMabI5O7UmiHBcyJibXIPbKyErumLSk3AddPG6Ih3BoKKd+h Nt6RYjeDcJyCdbXkGrY3jjSwtoyjpOMzB9BwJCK9Y5am363ztub1rQUnsxJsiLwDtCBw 1naFt9T8oXPJ3Mj1braVazZN4GtO37T4u0ZCrUvLfKXPiu/6JiEE1UrhHuRRjcWrVHDc BSus8H9yli9nfUaZ/oJ4IU87y3yitjbyBWQ7DD0VBkSDDjkGbJxHSAORCz49475R2Ipp Su27TEFLHF8wVJCZyvDvP61fXnmJsKpFneG+dt86UK0ttgUEqk8kDpbq5SnDxEolmwXI 4PGQ== X-Forwarded-Encrypted: i=1; AJvYcCX/aNowbXYiig50mwL6AsDkAEpye3AsGVi9Jxo1Bd/FEnspmy+vWQaAy5fGzCeqpY8Hr9fH128PWZXm9ukJ@postgresql.org X-Gm-Message-State: AOJu0Yz/OZynpnPlRfroyMFLp+qqfF1znfrhM/nUJI0nJOBqL8o9tu7U pTnlFJhkaeCm3x8hKWTd9l+7k2P12Gwr6JjrbyodaGOfzFSj9LgjFS3cYcW241/ClGlgeMhiG3Z F4tVxRHJAeaW5emf3c7d6ZhRC2OiBQ7A= X-Gm-Gg: ASbGncu7THWDbbI0cOcg3PksC5ZgL1JFovo6YT1ZYTN/EYnrZuaVz7NUxWsvgc0f+3p FDVPzKpcURLopGYxIbMw6sCMzuz8SDTFzDxf0jgnVtTtwXdxIXO3XUh/x0p1adB8aKCUouYV0yN F3hLoZLpFHWCUxo5KpOmisTgk37V7VQ841+2OSG+JPNbMl3FA/oM25olJapwPOaLMyiGWb/fBIy N8nBfZjNai0Y/xY+L1XIgW/W/x3N45wYzjQf9O21Wiy5HplP8qqDH+xA5LuaQ== X-Google-Smtp-Source: AGHT+IETNRzCupJfV288+gjEw6yui1XlEjvaMpXlgi/Zu66IdgDSUPdVAQS/tHHysx0LZ5pxxKRJj5ahpB/qVFOA4+A= X-Received: by 2002:a05:6512:1391:b0:592:f390:1bf0 with SMTP id 2adb3069b0e04-59412c4c6b6mr147641e87.8.1761680715417; Tue, 28 Oct 2025 12:45:15 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Mihail Nikalayeu Date: Tue, 28 Oct 2025 20:44:00 +0100 X-Gm-Features: AWmQ_blMGWWGg1yIjeaXW5heusVQR_ZmEiyas_Dq8-0kjXrOKpMjJx0r_8WR-L4 Message-ID: Subject: Re: [BUG?] check_exclusion_or_unique_constraint false negative To: Amit Kapila Cc: "Zhijie Hou (Fujitsu)" , Peter Geoghegan , "Hayato Kuroda (Fujitsu)" , PostgreSQL Hackers , Andres Freund , peter@eisentraut.org Content-Type: multipart/mixed; boundary="000000000000402e1f06423d413f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000402e1f06423d413f Content-Type: text/plain; charset="UTF-8" And rebased :) --000000000000402e1f06423d413f Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0001-This-patch-introduces-new-injection-points-and-T.patch" Content-Disposition: attachment; filename="v16-0001-This-patch-introduces-new-injection-points-and-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhax1d230 RnJvbSA2YTRlMzc5ZGYyNTFkMjdlNDJiODE5MWJkMTUzNjkxZjRkMmQ5ODg2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyMyBOb3YgMjAyNCAxMzoyNToxMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE2IDEv Ml0gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBpbmplY3Rpb24gcG9pbnRzIGFuZCBUQVAKIHRl c3RzIHRvIHJlcHJvZHVjZSBhbmQgdmVyaWZ5IGNvbmZsaWN0IGRldGVjdGlvbiBpc3N1ZXMgdGhh dCBhcmlzZSBkdXJpbmcKIFNOQVBTSE9UX0RJUlRZIGluZGV4IHNjYW5zIGluIGxvZ2ljYWwgcmVw bGljYXRpb24uCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgICAgICAg ICAgICB8ICAgOSArKwogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUgICAgICAgICAg ICAgIHwgICA5ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyAgICAgICAg ICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAg ICB8ICAgNCArCiBzcmMvaW5jbHVkZS91dGlscy9zbmFwc2hvdC5oICAgICAgICAgICAgICAgICAg fCAgMTQgKysKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8 ICAgNCArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDM3X2RlbGV0ZV9taXNzaW5nX3JhY2UucGwgfCAx MzkgKysrKysrKysrKysrKysrKysKIC4uLi9zdWJzY3JpcHRpb24vdC8wMzhfdXBkYXRlX21pc3Np bmdfcmFjZS5wbCB8IDE0MSArKysrKysrKysrKysrKysrKwogLi4uL3QvMDM5X3VwZGF0ZV9taXNz aW5nX3dpdGhfcmV0YWluLnBsICAgICAgIHwgMTQzICsrKysrKysrKysrKysrKysrKwogLi4uL3Qv MDQwX3VwZGF0ZV9taXNzaW5nX3NpbXVsYXRpb24ucGwgICAgICAgIHwgMTI1ICsrKysrKysrKysr KysrKwogMTAgZmlsZXMgY2hhbmdlZCwgNTk0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZGVsZXRlX21p c3NpbmdfcmFjZS5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzOF91cGRhdGVfbWlzc2luZ19yYWNlLnBsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDM5X3VwZGF0ZV9taXNzaW5nX3dpdGhfcmV0YWluLnBsCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQwX3VwZGF0ZV9taXNzaW5nX3Np bXVsYXRpb24ucGwKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhh bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwppbmRleCAwNDkyZDkyZDIz Yi4uNTk4N2Q5MGVlMDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRl eGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtNTIsMTEg KzUyLDEzIEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAibm9kZXMv ZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24v bG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvcnVsZXV0aWxzLmgiCiAjaW5jbHVk ZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVk ZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzUxLDYgKzc1 MywxMyBAQCBpbmRleF9nZXRuZXh0X3Nsb3QoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0 aW9uIGRpcmVjdGlvbiwgVHVwbGVUYWJsZVNsb3QgKgogCQkgKiB0aGUgaW5kZXguCiAJCSAqLwog CQlBc3NlcnQoSXRlbVBvaW50ZXJJc1ZhbGlkKCZzY2FuLT54c19oZWFwdGlkKSk7CisjaWZkZWYg VVNFX0lOSkVDVElPTl9QT0lOVFMKKwkJaWYgKCFJc0NhdGFsb2dSZWxhdGlvbihzY2FuLT5oZWFw UmVsYXRpb24pICYmIElzTG9naWNhbFdvcmtlcigpKQorCQl7CisJCQlJTkpFQ1RJT05fUE9JTlQo ImluZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHkiLCBOVUxMKTsKKwkJ fQorI2VuZGlmCisKIAkJaWYgKGluZGV4X2ZldGNoX2hlYXAoc2Nhbiwgc2xvdCkpCiAJCQlyZXR1 cm4gdHJ1ZTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL1JFQURN RSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvUkVBRE1FCmluZGV4IDUzZDRhNjFkYzNmLi42 MzRhM2QxMGJiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUKQEAgLTEwMyw2ICsxMDMsMTUg QEAgV2UgYWxzbyByZW1lbWJlciB0aGUgbGVmdC1saW5rLCBhbmQgZm9sbG93IGl0IHdoZW4gdGhl IHNjYW4gbW92ZXMgYmFja3dhcmRzCiAodGhvdWdoIHRoaXMgcmVxdWlyZXMgZXh0cmEgaGFuZGxp bmcgdG8gYWNjb3VudCBmb3IgY29uY3VycmVudCBzcGxpdHMgb2YKIHRoZSBsZWZ0IHNpYmxpbmc7 IHNlZSBkZXRhaWxlZCBtb3ZlLWxlZnQgYWxnb3JpdGhtIGJlbG93KS4KIAorRGVzcGl0ZSB0aGUg ZGVzY3JpYmVkIG1lY2hhbmljcyBpbiBwbGFjZSwgaW5jb25zaXN0ZW50IHJlc3VsdHMgbWF5IHN0 aWxsIG9jY3VyCitkdXJpbmcgbm9uLU1WQ0Mgc2NhbnMgKFNuYXBzaG90RGlydHkgYW5kIFNuYXBz aG90U2VsZikuIFRoaXMgaXNzdWUgY2FuIG9jY3VyIGlmIGEgCitjb25jdXJyZW50IHRyYW5zYWN0 aW9uIGRlbGV0ZXMgYSB0dXBsZSBhbmQgaW5zZXJ0cyBhIG5ldyB0dXBsZSB3aXRoIGEgbmV3IFRJ RCBpbiB0aGUgCitzYW1lIHBhZ2Ugb3IgdG8gdGhlIGxlZnQvcmlnaHQgKGRlcGVuZGluZyBvbiBz Y2FuIGRpcmVjdGlvbikgb2YgY3VycmVudCBzY2FuIHBvc2l0aW9uLgorSWYgdGhlIHNjYW4gaGFz IGFscmVhZHkgdmlzaXRlZCB0aGUgcGFnZSBhbmQgY2FjaGVkIGl0cyBjb250ZW50IGluIHRoZQor YmFja2VuZC1sb2NhbCBzdG9yYWdlLCBpdCBtaWdodCBza2lwIHRoZSBvbGQgdHVwbGUgZHVlIHRv IGRlbGV0aW9uIGFuZCBtaXNzIHRoZSBuZXcgCit0dXBsZSBiZWNhdXNlIHRoZSBzY2FuIGRvZXMg bm90IHJlLXJlYWQgdGhlIHBhZ2UuIE5vdGUgaXQgYWZmZWN0cyBub3Qgb25seSBidHJlZQorc2Nh biBidXQgYWxzbyBhIGhlYXAgc2Nhbi4KKwogSW4gbW9zdCBjYXNlcyB3ZSByZWxlYXNlIG91ciBs b2NrIGFuZCBwaW4gb24gYSBwYWdlIGJlZm9yZSBhdHRlbXB0aW5nCiB0byBhY3F1aXJlIHBpbiBh bmQgbG9jayBvbiB0aGUgcGFnZSB3ZSBhcmUgbW92aW5nIHRvLiAgSW4gYSBmZXcgcGxhY2VzCiBp dCBpcyBuZWNlc3NhcnkgdG8gbG9jayB0aGUgbmV4dCBwYWdlIGJlZm9yZSByZWxlYXNpbmcgdGhl IGN1cnJlbnQgb25lLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4 aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCBjYTMzYTg1 NDI3OC4uNjFhNTA5N2Y3ODkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC0x MTcsNiArMTE3LDcgQEAKICNpbmNsdWRlICJ1dGlscy9tdWx0aXJhbmdldHlwZXMuaCIKICNpbmNs dWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2lu Y2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAvKiB3YWl0TW9kZSBhcmd1bWVudCB0 byBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnQoKSAqLwogdHlwZWRlZiBlbnVt CkBAIC03ODAsNyArNzgxLDkgQEAgY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50 KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCS8qCiAJICogU2VhcmNoIHRoZSB0dXBs ZXMgdGhhdCBhcmUgaW4gdGhlIGluZGV4IGZvciBhbnkgdmlvbGF0aW9ucywgaW5jbHVkaW5nCiAJ ICogdHVwbGVzIHRoYXQgYXJlbid0IHZpc2libGUgeWV0LgotCSAqLworCSAqIFNuYXBzaG90IGRp cnR5IG1heSBtaXNzIHNvbWUgdHVwbGVzIGluIHRoZSBjYXNlIG9mIHBhcmFsbGVsIHVwZGF0ZXMs CisJICogYnV0IGl0IGlzIGFjY2VwdGFibGUgaGVyZS4KKwkqLwogCUluaXREaXJ0eVNuYXBzaG90 KERpcnR5U25hcHNob3QpOwogCiAJZm9yIChpID0gMDsgaSA8IGluZG5rZXlhdHRzOyBpKyspCkBA IC05NDMsNiArOTQ2LDggQEAgcmV0cnk6CiAKIAlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90 KGV4aXN0aW5nX3Nsb3QpOwogCisJaWYgKCFjb25mbGljdCkKKwkJSU5KRUNUSU9OX1BPSU5UKCJj aGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnRfbm9fY29uZmxpY3QiLCBOVUxMKTsK IAlyZXR1cm4gIWNvbmZsaWN0OwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYwppbmRleCA3ZWRkMWM5Y2YwNi4uMGYyZmZjNzU0YzkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMjg2LDYgKzI4Niw3IEBACiAjaW5jbHVkZSAi dGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxz L2d1Yy5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0 aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKQEAgLTI5NjIsNyArMjk2MywxMCBAQCBhcHBseV9oYW5kbGVfdXBkYXRl X2ludGVybmFsKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJCQljb25mbGljdHR1cGxlLm9y aWdpbiAhPSByZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luKQogCQkJdHlwZSA9IENUX1VQREFURV9E RUxFVEVEOwogCQllbHNlCisJCXsKKwkJCUlOSkVDVElPTl9QT0lOVCgiYXBwbHlfaGFuZGxlX3Vw ZGF0ZV9pbnRlcm5hbF91cGRhdGVfbWlzc2luZyIsIE5VTEwpOwogCQkJdHlwZSA9IENUX1VQREFU RV9NSVNTSU5HOworCQl9CiAKIAkJLyogU3RvcmUgdGhlIG5ldyB0dXBsZSBmb3IgY29uZmxpY3Qg cmVwb3J0aW5nICovCiAJCXNsb3Rfc3RvcmVfZGF0YShuZXdzbG90LCByZWxtYXBlbnRyeSwgbmV3 dHVwKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3NuYXBzaG90LmggYi9zcmMvaW5j bHVkZS91dGlscy9zbmFwc2hvdC5oCmluZGV4IDBlNTQ2ZWMxNDk3Li4xODlkZmQ3MTEwMyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvc25hcHNob3QuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9zbmFwc2hvdC5oCkBAIC01Myw2ICs1MywxMyBAQCB0eXBlZGVmIGVudW0gU25hcHNob3RU eXBlCiAJICogLSBwcmV2aW91cyBjb21tYW5kcyBvZiB0aGlzIHRyYW5zYWN0aW9uCiAJICogLSBj aGFuZ2VzIG1hZGUgYnkgdGhlIGN1cnJlbnQgY29tbWFuZAogCSAqCisJICogTm90ZTogc3VjaCBh IHNuYXBzaG90IG1heSBtaXNzIGFuIGV4aXN0aW5nIGxvZ2ljYWwgdHVwbGUgaW4gY2FzZSBvZgor CSAqIHBhcmFsbGVsIHVwZGF0ZS4KKwkgKiBJZiBhIG5ldyB2ZXJzaW9uIG9mIGEgdHVwbGUgaXMg aW5zZXJ0ZWQgaW50byBhbiBhbHJlYWR5IHByb2Nlc3NlZCBwYWdlCisJICogYnV0IHRoZSBvbGQg b25lIG1hcmtlZCB3aXRoIGNvbW1pdHRlZCB4bWF4IC0gc25hcHNob3Qgd2lsbCBza2lwIHRoZSBv bGQKKwkgKiBvbmUgYW5kIG5ldmVyIG1lZXQgdGhlIG5ldyBvbmUgZHVyaW5nIHRoYXQgc2NhbiAt IHJlc3VsdGluZyBpbiBza2lwcGluZworCSAqIHRoYXQgdHVwbGUgYXQgYWxsLgorCSAqCiAJICog RG9lcyBfbm90XyBpbmNsdWRlOgogCSAqIC0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIChhcyBv ZiB0aGUgY3VycmVudCBpbnN0YW50KQogCSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTgyLDYgKzg5 LDEzIEBAIHR5cGVkZWYgZW51bSBTbmFwc2hvdFR5cGUKIAkgKiB0cmFuc2FjdGlvbiBhbmQgY29t bWl0dGVkL2Fib3J0ZWQgeGFjdHMgYXJlIGNvbmNlcm5lZC4gIEhvd2V2ZXIsIGl0CiAJICogYWxz byBpbmNsdWRlcyB0aGUgZWZmZWN0cyBvZiBvdGhlciB4YWN0cyBzdGlsbCBpbiBwcm9ncmVzcy4K IAkgKgorCSAqIE5vdGU6IHN1Y2ggYSBzbmFwc2hvdCBtYXkgbWlzcyBhbiBleGlzdGluZyBsb2dp Y2FsIHR1cGxlIGluIGNhc2Ugb2YKKwkgKiBwYXJhbGxlbCB1cGRhdGUuCisJICogSWYgYSBuZXcg dmVyc2lvbiBvZiBhIHR1cGxlIGlzIGluc2VydGVkIGludG8gYW4gYWxyZWFkeSBwcm9jZXNzZWQg cGFnZSBidXQgdGhlCisJICogb2xkIG9uZSBtYXJrZWQgd2l0aCBjb21taXR0ZWQvaW4tcHJvZ3Jl c3MgeG1heCAtIHNuYXBzaG90IHdpbGwgc2tpcCB0aGUgb2xkIG9uZQorCSAqIGFuZCBuZXZlciBt ZWV0IHRoZSBuZXcgb25lIGR1cmluZyB0aGF0IHNjYW4gLSByZXN1bHRpbmcgaW4gc2tpcHBpbmcg dGhhdCB0dXBsZQorCSAqIGF0IGFsbC4KKwkgKgogCSAqIEEgc3BlY2lhbCBoYWNrIGlzIHRoYXQg d2hlbiBhIHNuYXBzaG90IG9mIHRoaXMgdHlwZSBpcyB1c2VkIHRvCiAJICogZGV0ZXJtaW5lIHR1 cGxlIHZpc2liaWxpdHksIHRoZSBwYXNzZWQtaW4gc25hcHNob3Qgc3RydWN0IGlzIHVzZWQgYXMg YW4KIAkgKiBvdXRwdXQgYXJndW1lbnQgdG8gcmV0dXJuIHRoZSB4aWRzIG9mIGNvbmN1cnJlbnQg eGFjdHMgdGhhdCBhZmZlY3RlZApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21l c29uLmJ1aWxkIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCmluZGV4IDg1ZDEw YTg5OTk0Li5iNTUyYWU2MGE4OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21l c29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZApAQCAtNDYs NiArNDYsMTAgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDM0X3RlbXBvcmFsLnBsJywKICAgICAg ICd0LzAzNV9jb25mbGljdHMucGwnLAogICAgICAgJ3QvMDM2X3NlcXVlbmNlcy5wbCcsCisJICAn dC8wMzdfZGVsZXRlX21pc3NpbmdfcmFjZS5wbCcsCisJICAndC8wMzhfdXBkYXRlX21pc3Npbmdf cmFjZS5wbCcsCisJICAndC8wMzlfdXBkYXRlX21pc3Npbmdfd2l0aF9yZXRhaW4ucGwnLAorCSAg J3QvMDQwX3VwZGF0ZV9taXNzaW5nX3NpbXVsYXRpb24ucGwnLAogICAgICAgJ3QvMTAwX2J1Z3Mu cGwnLAogICAgIF0sCiAgIH0sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MzdfZGVsZXRlX21pc3NpbmdfcmFjZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19k ZWxldGVfbWlzc2luZ19yYWNlLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi41MWRkMzUxZGMxMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAzN19kZWxldGVfbWlzc2luZ19yYWNlLnBsCkBAIC0wLDAgKzEsMTM5IEBACisjIENvcHly aWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBU ZXN0IHRoZSBjb25mbGljdCBkZXRlY3Rpb24gYW5kIHJlc29sdXRpb24gaW4gbG9naWNhbCByZXBs aWNhdGlvbgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwor dXNlIFRlc3Q6Ok1vcmU7CisKK2lmICgkRU5We2VuYWJsZV9pbmplY3Rpb25fcG9pbnRzfSBuZSAn eWVzJykKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdJbmplY3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0 ZWQgYnkgdGhpcyBidWlsZCc7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBT ZXQgaXQgdG8gMCB0byBtYWtlIHNldCBzdWNjZXNzOyBUT0RPOiBkZWxldGUgdGhhdCBmb3IgY29t bWl0CitteSAkc2ltdWxhdGVfcmFjZV9jb25kaXRpb24gPSAxOworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgU2V0dXAK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBJbml0aWFsaXplIHB1Ymxpc2hl ciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcg PT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwu Y29uZicsCisJcXEodHJhY2tfY29tbWl0X3RpbWVzdGFtcCA9IG9uKSk7Ciskbm9kZV9wdWJsaXNo ZXItPnN0YXJ0OworCisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZSB3aXRoIHRyYWNrX2NvbW1p dF90aW1lc3RhbXAgZW5hYmxlZAorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsK KyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxKHRy YWNrX2NvbW1pdF90aW1lc3RhbXAgPSBvbikpOworJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisK KworIyBDaGVjayBpZiB0aGUgZXh0ZW5zaW9uIGluamVjdGlvbl9wb2ludHMgaXMgYXZhaWxhYmxl LCBhcyBpdCBtYXkgYmUKKyMgcG9zc2libGUgdGhhdCB0aGlzIHNjcmlwdCBpcyBydW4gd2l0aCBp bnN0YWxsY2hlY2ssIHdoZXJlIHRoZSBtb2R1bGUKKyMgd291bGQgbm90IGJlIGluc3RhbGxlZCBi eSBkZWZhdWx0LgoraWYgKCEkbm9kZV9zdWJzY3JpYmVyLT5jaGVja19leHRlbnNpb24oJ2luamVj dGlvbl9wb2ludHMnKSkKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdFeHRlbnNpb24gaW5qZWN0aW9u X3BvaW50cyBub3QgaW5zdGFsbGVkJzsKK30KKworIyBDcmVhdGUgdGFibGUgb24gcHVibGlzaGVy Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFC TEUgY29uZl90YWIoYSBpbnQgUFJJTUFSWSBrZXksIGRhdGEgdGV4dCk7Iik7CisKKyMgQ3JlYXRl IHNpbWlsYXIgdGFibGUgb24gc3Vic2NyaWJlciB3aXRoIGFkZGl0aW9uYWwgaW5kZXggdG8gZGlz YWJsZSBIT1QgdXBkYXRlcworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsCisJIkNSRUFURSBUQUJMRSBjb25mX3RhYihhIGludCBQUklNQVJZIGtleSwgZGF0YSB0ZXh0 KTsKKwkgQ1JFQVRFIElOREVYIGRhdGFfaW5kZXggT04gY29uZl90YWIoZGF0YSk7Iik7CisKKyMg U2V0IHVwIGV4dGVuc2lvbiB0byBzaW11bGF0ZSByYWNlIGNvbmRpdGlvbgorJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9w b2ludHM7Jyk7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkgJHB1Ymxpc2hlcl9j b25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FU SU9OIHRhcF9wdWIgRk9SIFRBQkxFIGNvbmZfdGFiIik7CisKKyMgSW5zZXJ0IHJvdyB0byBiZSB1 cGRhdGVkIGxhdGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJ TlNFUlQgSU5UTyBjb25mX3RhYihhLCBkYXRhKSBWQUxVRVMgKDEsJ2Zyb21wdWInKSIpOworCisj IENyZWF0ZSB0aGUgc3Vic2NyaXB0aW9uCitteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBU SU9OIHRhcF9zdWIKKwkgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9u X25hbWU9JGFwcG5hbWUnCisJIFBVQkxJQ0FUSU9OIHRhcF9wdWIiKTsKKworIyBXYWl0IGZvciBp bml0aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNoCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9z dWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICRhcHBuYW1lKTsKKworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmFjZSBjb25kaXRpb24gYmVj YXVzZSBvZiBEaXJ0eVNuYXBzaG90CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCitteSAkcHNxbF9zZXNzaW9uX3N1YnNjcmliZXIgPSAkbm9kZV9zdWJzY3Jp YmVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CitpZiAoJHNpbXVsYXRlX3JhY2VfY29u ZGl0aW9uKQoreworCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3Jl X2ZldGNoX2FwcGx5X2RpcnR5JywgJ3dhaXQnKSIpOworfQorCitteSAkbG9nX29mZnNldCA9IC1z ICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyMgRGVsZXRlIHR1cGxlIG9uIHB1Ymxpc2hl cgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIGNv bmZfdGFiIFdIRVJFIGE9MTsiKTsKKworaWYgKCRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbikKK3sK KwkjIFdhaXQgYXBwbHkgd29ya2VyIHRvIHN0YXJ0IHRoZSBzZWFyY2ggZm9yIHRoZSB0dXBsZSB1 c2luZyBpbmRleAorCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2V2ZW50KCdsb2dpY2FsIHJl cGxpY2F0aW9uIGFwcGx5IHdvcmtlcicsCisJCSdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2Zl dGNoX2FwcGx5X2RpcnR5Jyk7Cit9CisKKyMgVXBkYXRlciB0dXBsZSBvbiBzdWJzY3JpYmVyCisk cHNxbF9zZXNzaW9uX3N1YnNjcmliZXItPnF1ZXJ5X3VudGlsKAorCXFyL3N0YXJ0LywgcXFbCisJ XFxlY2hvIHN0YXJ0CisJVVBEQVRFIGNvbmZfdGFiIFNFVCBkYXRhID0gJ2Zyb21zdWJuZXcnIFdI RVJFIChhPTEpOworXSk7CisKKworaWYgKCRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbikKK3sKKwkj IFdha2UgdXAgYXBwbHkgd29ya2VyCisJJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIgorCQlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2luZGV4X2dldG5leHRf c2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknKTsKKwkJU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfd2FrZXVwKCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5Jyk7 CisJCSIpOworfQorCisjIFR1cGxlIHdhcyB1cGRhdGVkIC0gc28sIHdlIGhhdmUgY29uZmxpY3QK KyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9jb25mbGljdCBkZXRlY3RlZCBv biByZWxhdGlvbiBcInB1YmxpYy5jb25mX3RhYlwiLywKKwkkbG9nX29mZnNldCk7CisKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgQnV0IHR1cGxlIHNo b3VsZCBiZSBkZWxldGVkIG9uIHN1YnNjcmliZXIgYW55IHdheQoraXMoJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgY291bnQoKikgZnJvbSBjb25mX3RhYicp LCAwLCAncmVjb3JkIGRlbGV0ZWQgb24gc3Vic2NyaWJlcicpOworCitvayghJG5vZGVfc3Vic2Ny aWJlci0+bG9nX2NvbnRhaW5zKAorCQlxci9MT0c6ICBjb25mbGljdCBkZXRlY3RlZCBvbiByZWxh dGlvbiBcInB1YmxpYy5jb25mX3RhYlwiOiBjb25mbGljdD1kZWxldGVfbWlzc2luZy8sCisJCSRs b2dfb2Zmc2V0KSwgJ2ludmFsaWQgY29uZmxpY3QgZGV0ZWN0ZWQnKTsKKworb2soJG5vZGVfc3Vi c2NyaWJlci0+bG9nX2NvbnRhaW5zKAorCQlxci9MT0c6ICBjb25mbGljdCBkZXRlY3RlZCBvbiBy ZWxhdGlvbiBcInB1YmxpYy5jb25mX3RhYlwiOiBjb25mbGljdD1kZWxldGVfb3JpZ2luX2RpZmZl cnMvLAorCQkkbG9nX29mZnNldCksICdjb3JyZWN0IGNvbmZsaWN0IGRldGVjdGVkJyk7CisKK2Rv bmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM4X3Vw ZGF0ZV9taXNzaW5nX3JhY2UucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzhfdXBkYXRl X21pc3NpbmdfcmFjZS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MWUxMjBmNzRiYmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MzhfdXBkYXRlX21pc3NpbmdfcmFjZS5wbApAQCAtMCwwICsxLDE0MSBAQAorIyBDb3B5cmlnaHQg KGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCB0 aGUgY29uZmxpY3QgZGV0ZWN0aW9uIGFuZCByZXNvbHV0aW9uIGluIGxvZ2ljYWwgcmVwbGljYXRp b24KK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBU ZXN0OjpNb3JlOworCitpZiAoJEVOVntlbmFibGVfaW5qZWN0aW9uX3BvaW50c30gbmUgJ3llcycp Cit7CisJcGxhbiBza2lwX2FsbCA9PiAnSW5qZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIGJ5 IHRoaXMgYnVpbGQnOworfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgU2V0IGl0 IHRvIDAgdG8gbWFrZSBzZXQgc3VjY2VzczsgVE9ETzogZGVsZXRlIHRoYXQgZm9yIGNvbW1pdAor bXkgJHNpbXVsYXRlX3JhY2VfY29uZGl0aW9uID0gMTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFNldHVwCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgSW5pdGlhbGl6ZSBwdWJsaXNoZXIgbm9k ZQorbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdw dWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICds b2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LAorCXFxKHRyYWNrX2NvbW1pdF90aW1lc3RhbXAgPSBvbikpOworJG5vZGVfcHVibGlzaGVyLT5z dGFydDsKKworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUgd2l0aCB0cmFja19jb21taXRfdGlt ZXN0YW1wIGVuYWJsZWQKK215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmluaXQ7Ciskbm9k ZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwlxcSh0cmFja19j b21taXRfdGltZXN0YW1wID0gb24pKTsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisKKyMg Q2hlY2sgaWYgdGhlIGV4dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRzIGlzIGF2YWlsYWJsZSwgYXMg aXQgbWF5IGJlCisjIHBvc3NpYmxlIHRoYXQgdGhpcyBzY3JpcHQgaXMgcnVuIHdpdGggaW5zdGFs bGNoZWNrLCB3aGVyZSB0aGUgbW9kdWxlCisjIHdvdWxkIG5vdCBiZSBpbnN0YWxsZWQgYnkgZGVm YXVsdC4KK2lmICghJG5vZGVfc3Vic2NyaWJlci0+Y2hlY2tfZXh0ZW5zaW9uKCdpbmplY3Rpb25f cG9pbnRzJykpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnRXh0ZW5zaW9uIGluamVjdGlvbl9wb2lu dHMgbm90IGluc3RhbGxlZCc7Cit9CisKKyMgQ3JlYXRlIHRhYmxlIG9uIHB1Ymxpc2hlcgorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIGNv bmZfdGFiKGEgaW50IFBSSU1BUlkga2V5LCBkYXRhIHRleHQpOyIpOworCisjIENyZWF0ZSBzaW1p bGFyIHRhYmxlIG9uIHN1YnNjcmliZXIgd2l0aCBhZGRpdGlvbmFsIGluZGV4IHRvIGRpc2FibGUg SE9UIHVwZGF0ZXMgYW5kIGFkZGl0aW9uYWwgY29sdW1uCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIGNvbmZfdGFiKGEgaW50IFBSSU1B Ulkga2V5LCBkYXRhIHRleHQsIGkgaW50IERFRkFVTFQgMCk7CisJIENSRUFURSBJTkRFWCBpX2lu ZGV4IE9OIGNvbmZfdGFiKGkpOyIpOworCisjIFNldCB1cCBleHRlbnNpb24gdG8gc2ltdWxhdGUg cmFjZSBjb25kaXRpb24KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAn Q1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOycpOworCisjIFNldHVwIGxvZ2ljYWwg cmVwbGljYXRpb24KK215ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29u bnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSBjb25mX3Rh YiIpOworCisjIEluc2VydCByb3cgdG8gYmUgdXBkYXRlZCBsYXRlcgorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gY29uZl90YWIoYSwgZGF0YSkg VkFMVUVTICgxLCdmcm9tcHViJykiKTsKKworIyBDcmVhdGUgdGhlIHN1YnNjcmlwdGlvbgorbXkg JGFwcG5hbWUgPSAndGFwX3N1Yic7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bv c3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViCisJIENPTk5FQ1RJT04gJyRw dWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJworCSBQVUJMSUNBVElP TiB0YXBfcHViIik7CisKKyMgV2FpdCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRvIGZpbmlzaAor JG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlz aGVyLCAkYXBwbmFtZSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjIFJhY2UgY29uZGl0aW9uIGJlY2F1c2Ugb2YgRGlydHlTbmFwc2hvdAorIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworbXkgJHBzcWxfc2Vzc2lv bl9zdWJzY3JpYmVyID0gJG5vZGVfc3Vic2NyaWJlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycpOworaWYgKCRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbikKK3sKKwkkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn aW5kZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9mZXRjaF9hcHBseV9kaXJ0eScsICd3YWl0JykiKTsK K30KKworbXkgJGxvZ19vZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisj IFVwZGF0ZSB0dXBsZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlVQREFURSBjb25mX3RhYiBTRVQgZGF0YSA9ICdmcm9tcHVibmV3JyBXSEVS RSAoYT0xKTsiKTsKKworCitpZiAoJHNpbXVsYXRlX3JhY2VfY29uZGl0aW9uKQoreworCSMgV2Fp dCBhcHBseSB3b3JrZXIgdG8gc3RhcnQgdGhlIHNlYXJjaCBmb3IgdGhlIHR1cGxlIHVzaW5nIGlu ZGV4CisJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfZXZlbnQoJ2xvZ2ljYWwgcmVwbGljYXRp b24gYXBwbHkgd29ya2VyJywgJ2luZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlf ZGlydHknKTsKK30KKworIyBVcGRhdGUgYWRkaXRpb25hbCghKSBjb2x1bW4gb24gdGhlIHN1YnNj cmliZXIKKyRwc3FsX3Nlc3Npb25fc3Vic2NyaWJlci0+cXVlcnlfdW50aWwoCisJcXIvc3RhcnQv LCBxcVsKKwlcXGVjaG8gc3RhcnQKKwlVUERBVEUgY29uZl90YWIgU0VUIGkgPSAxIFdIRVJFIChh PTEpOworXSk7CisKKworaWYgKCRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbikKK3sKKwkjIFdha2Ug dXAgYXBwbHkgd29ya2VyCisJJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs IgorCQlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2luZGV4X2dldG5leHRfc2xvdF9i ZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknKTsKKwkJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2Fr ZXVwKCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5Jyk7CisJCSIp OworfQorCisjIFR1cGxlIHdhcyB1cGRhdGVkIC0gc28sIHdlIGhhdmUgY29uZmxpY3QKKyRub2Rl X3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9jb25mbGljdCBkZXRlY3RlZCBvbiByZWxh dGlvbiBcInB1YmxpYy5jb25mX3RhYlwiLywKKwkkbG9nX29mZnNldCk7CisKKyRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgV2UgbmVlZCBuZXcgY29sdW1u IHZhbHVlIGJlIHN5bmNlZCB3aXRoIHN1YnNjcmliZXIKK2lzKCRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNUIGRhdGEgZnJvbSBjb25mX3RhYiBXSEVSRSBhID0g MScpLCAnZnJvbXB1Ym5ldycsICdyZWNvcmQgdXBkYXRlZCBvbiBzdWJzY3JpYmVyJyk7CisjIEFu ZCBhZGRpdGlvbmFsIGNvbHVtbiBtYWludGFpbiB1cGRhdGVkIHZhbHVlCitpcygkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCBpIGZyb20gY29uZl90YWIgV0hF UkUgYSA9IDEnKSwgMSwgJ2NvbHVtbiByZWNvcmQgdXBkYXRlZCBvbiBzdWJzY3JpYmVyJyk7CisK K29rKCEkbm9kZV9zdWJzY3JpYmVyLT5sb2dfY29udGFpbnMoCisJCXFyL0xPRzogIGNvbmZsaWN0 IGRldGVjdGVkIG9uIHJlbGF0aW9uIFwicHVibGljLmNvbmZfdGFiXCI6IGNvbmZsaWN0PXVwZGF0 ZV9taXNzaW5nLywKKwkJJGxvZ19vZmZzZXQpLCAnaW52YWxpZCBjb25mbGljdCBkZXRlY3RlZCcp OworCitvaygkbm9kZV9zdWJzY3JpYmVyLT5sb2dfY29udGFpbnMoCisJCXFyL0xPRzogIGNvbmZs aWN0IGRldGVjdGVkIG9uIHJlbGF0aW9uIFwicHVibGljLmNvbmZfdGFiXCI6IGNvbmZsaWN0PXVw ZGF0ZV9vcmlnaW5fZGlmZmVycy8sCisJCSRsb2dfb2Zmc2V0KSwgJ2NvcnJlY3QgY29uZmxpY3Qg ZGV0ZWN0ZWQnKTsKKworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzlfdXBkYXRlX21pc3Npbmdfd2l0aF9yZXRhaW4ucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzlfdXBkYXRlX21pc3Npbmdfd2l0aF9yZXRhaW4ucGwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdiMjI1ZDQ1ZjdmCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM5X3VwZGF0ZV9taXNzaW5nX3dpdGhfcmV0 YWluLnBsCkBAIC0wLDAgKzEsMTQzIEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IHRoZSBjb25mbGljdCBkZXRlY3Rp b24gYW5kIHJlc29sdXRpb24gaW4gbG9naWNhbCByZXBsaWNhdGlvbgordXNlIHN0cmljdDsKK3Vz ZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK2lmICgk RU5We2VuYWJsZV9pbmplY3Rpb25fcG9pbnRzfSBuZSAneWVzJykKK3sKKwlwbGFuIHNraXBfYWxs ID0+ICdJbmplY3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCc7Cit9CisK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBTZXQgaXQgdG8gMCB0byBtYWtlIHNldCBz dWNjZXNzOyBUT0RPOiBkZWxldGUgdGhhdCBmb3IgY29tbWl0CitteSAkc2ltdWxhdGVfcmFjZV9j b25kaXRpb24gPSAxOworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgU2V0dXAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworIyBJbml0aWFsaXplIHB1Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNo ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVf cHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1 Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXEodHJhY2tfY29tbWl0 X3RpbWVzdGFtcCA9IG9uKSk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0OworCisKKyMgQ3JlYXRl IHN1YnNjcmliZXIgbm9kZSB3aXRoIHRyYWNrX2NvbW1pdF90aW1lc3RhbXAgZW5hYmxlZAorbXkg JG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2Ny aWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxKHRyYWNrX2NvbW1pdF90aW1lc3RhbXAgPSBv bikpOworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ cXEod2FsX2xldmVsID0gJ3JlcGxpY2EnKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKwor CisjIENoZWNrIGlmIHRoZSBleHRlbnNpb24gaW5qZWN0aW9uX3BvaW50cyBpcyBhdmFpbGFibGUs IGFzIGl0IG1heSBiZQorIyBwb3NzaWJsZSB0aGF0IHRoaXMgc2NyaXB0IGlzIHJ1biB3aXRoIGlu c3RhbGxjaGVjaywgd2hlcmUgdGhlIG1vZHVsZQorIyB3b3VsZCBub3QgYmUgaW5zdGFsbGVkIGJ5 IGRlZmF1bHQuCitpZiAoISRub2RlX3N1YnNjcmliZXItPmNoZWNrX2V4dGVuc2lvbignaW5qZWN0 aW9uX3BvaW50cycpKQoreworCXBsYW4gc2tpcF9hbGwgPT4gJ0V4dGVuc2lvbiBpbmplY3Rpb25f cG9pbnRzIG5vdCBpbnN0YWxsZWQnOworfQorCisjIENyZWF0ZSB0YWJsZSBvbiBwdWJsaXNoZXIK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJM RSBjb25mX3RhYihhIGludCBQUklNQVJZIGtleSwgZGF0YSB0ZXh0KTsiKTsKKworIyBDcmVhdGUg c2ltaWxhciB0YWJsZSBvbiBzdWJzY3JpYmVyIHdpdGggYWRkaXRpb25hbCBpbmRleCB0byBkaXNh YmxlIEhPVCB1cGRhdGVzIGFuZCBhZGRpdGlvbmFsIGNvbHVtbgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSBjb25mX3RhYihhIGludCBQ UklNQVJZIGtleSwgZGF0YSB0ZXh0LCBpIGludCBERUZBVUxUIDApOworCSBDUkVBVEUgSU5ERVgg aV9pbmRleCBPTiBjb25mX3RhYihpKTsiKTsKKworIyBTZXQgdXAgZXh0ZW5zaW9uIHRvIHNpbXVs YXRlIHJhY2UgY29uZGl0aW9uCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgJ0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsnKTsKKworIyBTZXR1cCBsb2dp Y2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXIt PmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgY29u Zl90YWIiKTsKKworIyBJbnNlcnQgcm93IHRvIGJlIHVwZGF0ZWQgbGF0ZXIKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIGNvbmZfdGFiKGEsIGRh dGEpIFZBTFVFUyAoMSwnZnJvbXB1YicpIik7CisKKyMgQ3JlYXRlIHRoZSBzdWJzY3JpcHRpb24K K215ICRhcHBuYW1lID0gJ3RhcF9zdWInOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAor CSdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YgorCSBDT05ORUNUSU9O ICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScKKwkgUFVCTElD QVRJT04gdGFwX3B1YiBXSVRIIChyZXRhaW5fZGVhZF90dXBsZXMgPSB0cnVlKSIpOworCisjIFdh aXQgZm9yIGluaXRpYWwgdGFibGUgc3luYyB0byBmaW5pc2gKKyRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJGFwcG5hbWUpOworCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSYWNlIGNvbmRp dGlvbiBiZWNhdXNlIG9mIERpcnR5U25hcHNob3QKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKK215ICRwc3FsX3Nlc3Npb25fc3Vic2NyaWJlciA9ICRub2Rl X3N1YnNjcmliZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKK2lmICgkc2ltdWxhdGVf cmFjZV9jb25kaXRpb24pCit7CisJJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2luZGV4X2dldG5leHRfc2xvdF9i ZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknLCAnd2FpdCcpIik7Cit9CisKK215ICRsb2dfb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworIyBVcGRhdGUgdHVwbGUgb24gcHVi bGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJVUERBVEUg Y29uZl90YWIgU0VUIGRhdGEgPSAnZnJvbXB1Ym5ldycgV0hFUkUgKGE9MSk7Iik7CisKKworaWYg KCRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbikKK3sKKwkjIFdhaXQgYXBwbHkgd29ya2VyIHRvIHN0 YXJ0IHRoZSBzZWFyY2ggZm9yIHRoZSB0dXBsZSB1c2luZyBpbmRleAorCSRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2V2ZW50KCdsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlcicsICdp bmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5Jyk7Cit9CisKKyMgVXBk YXRlIGFkZGl0aW9uYWwoISkgY29sdW1uIG9uIHRoZSBzdWJzY3JpYmVyCiskcHNxbF9zZXNzaW9u X3N1YnNjcmliZXItPnF1ZXJ5X3VudGlsKAorCXFyL3N0YXJ0LywgcXFbCisJXFxlY2hvIHN0YXJ0 CisJVVBEQVRFIGNvbmZfdGFiIFNFVCBpID0gMSBXSEVSRSAoYT0xKTsKK10pOworCisKK2lmICgk c2ltdWxhdGVfcmFjZV9jb25kaXRpb24pCit7CisJIyBXYWtlIHVwIGFwcGx5IHdvcmtlcgorCSRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCIKKwkJU0VMRUNUIGluamVjdGlv bl9wb2ludHNfZGV0YWNoKCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2FwcGx5X2Rp cnR5Jyk7CisJCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaW5kZXhfZ2V0bmV4dF9z bG90X2JlZm9yZV9mZXRjaF9hcHBseV9kaXJ0eScpOworCQkiKTsKK30KKworIyBUdXBsZSB3YXMg dXBkYXRlZCAtIHNvLCB3ZSBoYXZlIGNvbmZsaWN0Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2coCisJcXIvY29uZmxpY3QgZGV0ZWN0ZWQgb24gcmVsYXRpb24gXCJwdWJsaWMuY29uZl90 YWJcIi8sCisJJGxvZ19vZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisjIFdlIG5lZWQgbmV3IGNvbHVtbiB2YWx1ZSBiZSBzeW5jZWQgd2l0 aCBzdWJzY3JpYmVyCitpcygkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg J1NFTEVDVCBkYXRhIGZyb20gY29uZl90YWIgV0hFUkUgYSA9IDEnKSwgJ2Zyb21wdWJuZXcnLCAn cmVjb3JkIHVwZGF0ZWQgb24gc3Vic2NyaWJlcicpOworIyBBbmQgYWRkaXRpb25hbCBjb2x1bW4g bWFpbnRhaW4gdXBkYXRlZCB2YWx1ZQoraXMoJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICdTRUxFQ1QgaSBmcm9tIGNvbmZfdGFiIFdIRVJFIGEgPSAxJyksIDEsICdjb2x1 bW4gcmVjb3JkIHVwZGF0ZWQgb24gc3Vic2NyaWJlcicpOworCitvayghJG5vZGVfc3Vic2NyaWJl ci0+bG9nX2NvbnRhaW5zKAorCQlxci9MT0c6ICBjb25mbGljdCBkZXRlY3RlZCBvbiByZWxhdGlv biBcInB1YmxpYy5jb25mX3RhYlwiOiBjb25mbGljdD11cGRhdGVfZGVsZXRlZC8sCisJCSRsb2df b2Zmc2V0KSwgJ2ludmFsaWQgY29uZmxpY3QgZGV0ZWN0ZWQnKTsKKworb2soJG5vZGVfc3Vic2Ny aWJlci0+bG9nX2NvbnRhaW5zKAorCQlxci9MT0c6ICBjb25mbGljdCBkZXRlY3RlZCBvbiByZWxh dGlvbiBcInB1YmxpYy5jb25mX3RhYlwiOiBjb25mbGljdD11cGRhdGVfb3JpZ2luX2RpZmZlcnMv LAorCQkkbG9nX29mZnNldCksICdjb3JyZWN0IGNvbmZsaWN0IGRldGVjdGVkJyk7CisKK2RvbmVf dGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQwX3VwZGF0 ZV9taXNzaW5nX3NpbXVsYXRpb24ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNDBfdXBk YXRlX21pc3Npbmdfc2ltdWxhdGlvbi5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uMjFmY2QxY2ViNTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wNDBfdXBkYXRlX21pc3Npbmdfc2ltdWxhdGlvbi5wbApAQCAtMCwwICsxLDEyNSBA QAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisKKyMgVGVzdCB0aGUgY29uZmxpY3QgZGV0ZWN0aW9uIGFuZCByZXNvbHV0aW9uIGluIGxv Z2ljYWwgcmVwbGljYXRpb24KKyMgTm90IGludGVuZGVkIHRvIGJlIGNvbW1pdHRlZCBiZWNhdXNl IHF1aXRlIGhlYXZ5CisjIEhlcmUgdG8gZGVtb25zdHJhdGUgcmVwcm9kdWNpYmlsaXR5IHdpdGgg cGdiZW5jaAordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwor dXNlIElQQzo6UnVuIHF3KHN0YXJ0IGZpbmlzaCk7Cit1c2UgVGVzdDo6TW9yZTsKKworaWYgKCRF TlZ7ZW5hYmxlX2luamVjdGlvbl9wb2ludHN9IG5lICd5ZXMnKQoreworCXBsYW4gc2tpcF9hbGwg PT4gJ0luamVjdGlvbiBwb2ludHMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxkJzsKK30KKwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBTZXR1cAorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisjIEluaXRpYWxpemUgcHVibGlzaGVyIG5vZGUKK215ICRub2Rl X3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7 Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwor JG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwlxcSh0cmFj a19jb21taXRfdGltZXN0YW1wID0gb24pKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMg Q3JlYXRlIHN1YnNjcmliZXIgbm9kZSB3aXRoIHRyYWNrX2NvbW1pdF90aW1lc3RhbXAgZW5hYmxl ZAorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygn c3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKKyRub2RlX3N1YnNjcmliZXIt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxKHRyYWNrX2NvbW1pdF90aW1lc3Rh bXAgPSBvbikpOworJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKKyMgQ2hlY2sgaWYgdGhlIGV4 dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRzIGlzIGF2YWlsYWJsZSwgYXMgaXQgbWF5IGJlCisjIHBv c3NpYmxlIHRoYXQgdGhpcyBzY3JpcHQgaXMgcnVuIHdpdGggaW5zdGFsbGNoZWNrLCB3aGVyZSB0 aGUgbW9kdWxlCisjIHdvdWxkIG5vdCBiZSBpbnN0YWxsZWQgYnkgZGVmYXVsdC4KK2lmICghJG5v ZGVfc3Vic2NyaWJlci0+Y2hlY2tfZXh0ZW5zaW9uKCdpbmplY3Rpb25fcG9pbnRzJykpCit7CisJ cGxhbiBza2lwX2FsbCA9PiAnRXh0ZW5zaW9uIGluamVjdGlvbl9wb2ludHMgbm90IGluc3RhbGxl ZCc7Cit9CisKKyMgQ3JlYXRlIHRhYmxlIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRibChhIGludCBQUklNQVJZ IGtleSwgZGF0YV9wdWIgaW50KTsiKTsKKworIyBDcmVhdGUgc2ltaWxhciB0YWJsZSBvbiBzdWJz Y3JpYmVyIHdpdGggYWRkaXRpb25hbCBpbmRleCB0byBkaXNhYmxlIEhPVCB1cGRhdGVzCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRi bChhIGludCBQUklNQVJZIGtleSwgZGF0YV9wdWIgaW50LCBkYXRhX3N1YiBpbnQgZGVmYXVsdCAw KTsKKwkgQ1JFQVRFIElOREVYIGRhdGFfaW5kZXggT04gdGJsKGRhdGFfcHViKTsiKTsKKworIyBT ZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9w dWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1Ig VEFCTEUgdGJsIik7CisKKyMgQ3JlYXRlIHRoZSBzdWJzY3JpcHRpb24KK215ICRhcHBuYW1lID0g J3RhcF9zdWInOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJ IkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YgorCSBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nv bm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScKKwkgUFVCTElDQVRJT04gdGFwX3B1YiIp OworCitteSAkbnVtX3Jvd3MgPSAxMDsKK215ICRudW1fdXBkYXRlcyA9IDEwMDAwOworbXkgJG51 bV9jbGllbnRzID0gMTA7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi SU5TRVJUIElOVE8gdGJsIFNFTEVDVCBpLCBpICogaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCRu dW1fcm93cykgaSIpOworCisjIFdhaXQgZm9yIGluaXRpYWwgdGFibGUgc3luYyB0byBmaW5pc2gK KyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxp c2hlciwgJGFwcG5hbWUpOworCisjIFByZXBhcmUgc21hbGwgcGdiZW5jaCBzY3JpcHRzIGFzIGZp bGVzCitteSAkc3ViX3NxbCA9ICRub2RlX3N1YnNjcmliZXItPmJhc2VkaXIgLiAnL3N1Yl91cGRh dGUuc3FsJzsKK215ICRwdWJfc3FsID0gJG5vZGVfcHVibGlzaGVyLT5iYXNlZGlyIC4gJy9wdWJf ZGVsZXRlLnNxbCc7CisKK29wZW4gbXkgJGZoMSwgJz4nLCAkc3ViX3NxbCBvciBkaWUgJCE7Citw cmludCAkZmgxICJcXHNldCBudW0gcmFuZG9tKDEsJG51bV9yb3dzKVxuVVBEQVRFIHRibCBTRVQg ZGF0YV9zdWIgPSBkYXRhX3N1YiArIDEgV0hFUkUgYSA9IDpudW07XG4iOworY2xvc2UgJGZoMTsK Kworb3BlbiBteSAkZmgyLCAnPicsICRwdWJfc3FsIG9yIGRpZSAkITsKK3ByaW50ICRmaDIgIlxc c2V0IG51bSByYW5kb20oMSwkbnVtX3Jvd3MpXG5VUERBVEUgdGJsIFNFVCBkYXRhX3B1YiA9IGRh dGFfcHViICsgMSBXSEVSRSBhID0gOm51bTtcbiI7CitjbG9zZSAkZmgyOworCitteSBAc3ViX2Nt ZCA9ICgKKwkncGdiZW5jaCcsCisJJy0tbm8tdmFjdXVtJywgIi0tY2xpZW50PSRudW1fY2xpZW50 cyIsICctLWpvYnM9NCcsICctLWV4aXQtb24tYWJvcnQnLCAiLS10cmFuc2FjdGlvbnM9JG51bV91 cGRhdGVzIiwKKwknLXAnLCAkbm9kZV9zdWJzY3JpYmVyLT5wb3J0LCAnLWgnLCAkbm9kZV9zdWJz Y3JpYmVyLT5ob3N0LCAnLWYnLCAkc3ViX3NxbCwgJ3Bvc3RncmVzJworKTsKKworbXkgQHB1Yl9j bWQgPSAoCisJJ3BnYmVuY2gnLAorCSctLW5vLXZhY3V1bScsICItLWNsaWVudD0kbnVtX2NsaWVu dHMiLCAnLS1qb2JzPTQnLCAnLS1leGl0LW9uLWFib3J0JywgIi0tdHJhbnNhY3Rpb25zPSRudW1f dXBkYXRlcyIsCisJJy1wJywgJG5vZGVfcHVibGlzaGVyLT5wb3J0LCAnLWgnLCAkbm9kZV9wdWJs aXNoZXItPmhvc3QsICctZicsICRwdWJfc3FsLCAncG9zdGdyZXMnCispOworCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9u X3BvaW50czsnKTsKKyMgVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuCiskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCgnYXBwbHlfaGFuZGxlX3VwZGF0ZV9pbnRlcm5hbF91cGRhdGVfbWlzc2luZycsICdlcnJvcicp Iik7CitteSAkbG9nX29mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyMg U3RhcnQgYm90aCBjb25jdXJyZW50bHkKK215ICgkc3ViX291dCwgJHN1Yl9lcnIsICRwdWJfb3V0 LCAkcHViX2VycikgPSAoJycsICcnLCAnJywgJycpOworbXkgJHN1Yl9oID0gc3RhcnQgXEBzdWJf Y21kLCAnPicsIFwkc3ViX291dCwgJzI+JywgXCRzdWJfZXJyOworbXkgJHB1Yl9oID0gc3RhcnQg XEBwdWJfY21kLCAnPicsIFwkcHViX291dCwgJzI+JywgXCRwdWJfZXJyOworCisjIFdhaXQgZm9y IGNvbXBsZXRpb24KK2ZpbmlzaCAkc3ViX2g7CitmaW5pc2ggJHB1Yl9oOworCitsaWtlKCRzdWJf b3V0LCBxci9hY3R1YWxseSBwcm9jZXNzZWQvLCAnc3Vic2NyaWJlciBwZ2JlbmNoIGNvbXBsZXRl ZCcpOworbGlrZSgkcHViX291dCwgcXIvYWN0dWFsbHkgcHJvY2Vzc2VkLywgJ3B1Ymxpc2hlciBw Z2JlbmNoIGNvbXBsZXRlZCcpOworCisjIExldCBzdWJzY3JpcHRpb24gY2F0Y2ggdXAsIHRoZW4g Y2hlY2sgZXhwZWN0YXRpb25zCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRp b25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViJyk7CisKK29rKCEkbm9kZV9zdWJzY3Jp YmVyLT5sb2dfY29udGFpbnMoCisJCXFyL0VSUk9SOiAgZXJyb3IgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgYXBwbHlfaGFuZGxlX3VwZGF0ZV9pbnRlcm5hbF91cGRhdGVfbWlzc2luZy8s CisJCSRsb2dfb2Zmc2V0KSwgJ2ludmFsaWQgY29uZmxpY3QgZGV0ZWN0ZWQnKTsKKworZG9uZV90 ZXN0aW5nKCk7Ci0tIAoyLjQ4LjEKCg== --000000000000402e1f06423d413f Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0002-Fix-logical-replication-conflict-detection-durin.patch" Content-Disposition: attachment; filename="v16-0002-Fix-logical-replication-conflict-detection-durin.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhax1d261 RnJvbSBmZTA2NWJhZTE1MTU2Y2NlNTkwMjcxYjI5NzdmNTE2ZWIyYWU3NTY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxua2V5QHRvbG9rYS5haT4KRGF0ZTogV2VkLCAzIFNl cCAyMDI1IDE5OjA4OjU1ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2MTYgMi8yXSBGaXggbG9naWNh bCByZXBsaWNhdGlvbiBjb25mbGljdCBkZXRlY3Rpb24gZHVyaW5nCiB0dXBsZSBsb29rdXAKClNO QVBTSE9UX0RJUlRZIHNjYW5zIGNvdWxkIG1pc3MgY29uZmxpY3QgZGV0ZWN0aW9uIHdpdGggY29u Y3VycmVudCB0cmFuc2FjdGlvbnMgZHVyaW5nIGxvZ2ljYWwgcmVwbGljYXRpb24uClJlcGxhY2Ug U05BUFNIT1RfRElSVFkgc2NhbiB3aXRoIHRoZSBHZXRMYXRlc3RTbmFwc2hvdCBpbiBSZWxhdGlv bkZpbmRSZXBsVHVwbGVCeUluZGV4IGFuZCBSZWxhdGlvbkZpbmRSZXBsVHVwbGVTZXEuCi0tLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgfCA2MyArKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDQ1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlv bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKaW5kZXggZGVmMzI3 NzRjOTAuLjFlNDM0YWI2OTdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UmVwbGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24u YwpAQCAtMTg2LDggKzE4Niw2IEBAIFJlbGF0aW9uRmluZFJlcGxUdXBsZUJ5SW5kZXgoUmVsYXRp b24gcmVsLCBPaWQgaWR4b2lkLAogCVNjYW5LZXlEYXRhIHNrZXlbSU5ERVhfTUFYX0tFWVNdOwog CWludAkJCXNrZXlfYXR0b2ZmOwogCUluZGV4U2NhbkRlc2Mgc2NhbjsKLQlTbmFwc2hvdERhdGEg c25hcDsKLQlUcmFuc2FjdGlvbklkIHh3YWl0OwogCVJlbGF0aW9uCWlkeHJlbDsKIAlib29sCQlm b3VuZDsKIAlUeXBlQ2FjaGVFbnRyeSAqKmVxID0gTlVMTDsKQEAgLTE5OCwxNyArMTk2LDE3IEBA IFJlbGF0aW9uRmluZFJlcGxUdXBsZUJ5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4b2lkLAog CiAJaXNJZHhTYWZlVG9Ta2lwRHVwbGljYXRlcyA9IChHZXRSZWxhdGlvbklkZW50aXR5T3JQSyhy ZWwpID09IGlkeG9pZCk7CiAKLQlJbml0RGlydHlTbmFwc2hvdChzbmFwKTsKLQogCS8qIEJ1aWxk IHNjYW4ga2V5LiAqLwogCXNrZXlfYXR0b2ZmID0gYnVpbGRfcmVwbGluZGV4X3NjYW5fa2V5KHNr ZXksIHJlbCwgaWR4cmVsLCBzZWFyY2hzbG90KTsKIAotCS8qIFN0YXJ0IGFuIGluZGV4IHNjYW4u ICovCi0Jc2NhbiA9IGluZGV4X2JlZ2luc2NhbihyZWwsIGlkeHJlbCwgJnNuYXAsIE5VTEwsIHNr ZXlfYXR0b2ZmLCAwKTsKKwkvKiBTdGFydCBhbiBpbmRleCBzY2FuLiBTbmFwc2hvdEFueSB3aWxs IGJlIHJlcGxhY2VkIGJlbG93LiAqLworCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4ocmVsLCBpZHhy ZWwsIFNuYXBzaG90QW55LCBOVUxMLCBza2V5X2F0dG9mZiwgMCk7CiAKIHJldHJ5OgogCWZvdW5k ID0gZmFsc2U7Ci0KKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJ LyogVXBkYXRlIHRoZSBhY3R1YWwgc2NhbiBzbmFwc2hvdCBlYWNoIHJldHJ5ICovCisJc2Nhbi0+ eHNfc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOwogCWluZGV4X3Jlc2NhbihzY2FuLCBz a2V5LCBza2V5X2F0dG9mZiwgTlVMTCwgMCk7CiAKIAkvKiBUcnkgdG8gZmluZCB0aGUgdHVwbGUg Ki8KQEAgLTIyOSwxOSArMjI3LDYgQEAgcmV0cnk6CiAKIAkJRXhlY01hdGVyaWFsaXplU2xvdChv dXRzbG90KTsKIAotCQl4d2FpdCA9IFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNuYXAueG1pbikgPwot CQkJc25hcC54bWluIDogc25hcC54bWF4OwotCi0JCS8qCi0JCSAqIElmIHRoZSB0dXBsZSBpcyBs b2NrZWQsIHdhaXQgZm9yIGxvY2tpbmcgdHJhbnNhY3Rpb24gdG8gZmluaXNoIGFuZAotCQkgKiBy ZXRyeS4KLQkJICovCi0JCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh4d2FpdCkpCi0JCXsKLQkJ CVhhY3RMb2NrVGFibGVXYWl0KHh3YWl0LCBOVUxMLCBOVUxMLCBYTFRXX05vbmUpOwotCQkJZ290 byByZXRyeTsKLQkJfQotCiAJCS8qIEZvdW5kIG91ciB0dXBsZSBhbmQgaXQncyBub3QgbG9ja2Vk ICovCiAJCWZvdW5kID0gdHJ1ZTsKIAkJYnJlYWs7CkBAIC0yNTMsOCArMjM4LDYgQEAgcmV0cnk6 CiAJCVRNX0ZhaWx1cmVEYXRhIHRtZmQ7CiAJCVRNX1Jlc3VsdAlyZXM7CiAKLQkJUHVzaEFjdGl2 ZVNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCiAJCXJlcyA9IHRhYmxlX3R1cGxlX2xv Y2socmVsLCAmKG91dHNsb3QtPnR0c190aWQpLCBHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJ CSAgIG91dHNsb3QsCiAJCQkJCQkJICAgR2V0Q3VycmVudENvbW1hbmRJZChmYWxzZSksCkBAIC0y NjMsMTMgKzI0NiwxNSBAQCByZXRyeToKIAkJCQkJCQkgICAwIC8qIGRvbid0IGZvbGxvdyB1cGRh dGVzICovICwKIAkJCQkJCQkgICAmdG1mZCk7CiAKLQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQog CQlpZiAoc2hvdWxkX3JlZmV0Y2hfdHVwbGUocmVzLCAmdG1mZCkpCisJCXsKKwkJCVBvcEFjdGl2 ZVNuYXBzaG90KCk7CiAJCQlnb3RvIHJldHJ5OworCQl9CiAJfQogCiAJaW5kZXhfZW5kc2Nhbihz Y2FuKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJLyogRG9uJ3QgcmVsZWFzZSBsb2NrIHVu dGlsIGNvbW1pdC4gKi8KIAlpbmRleF9jbG9zZShpZHhyZWwsIE5vTG9jayk7CkBAIC0zNzAsOSAr MzU1LDcgQEAgUmVsYXRpb25GaW5kUmVwbFR1cGxlU2VxKFJlbGF0aW9uIHJlbCwgTG9ja1R1cGxl TW9kZSBsb2NrbW9kZSwKIHsKIAlUdXBsZVRhYmxlU2xvdCAqc2NhbnNsb3Q7CiAJVGFibGVTY2Fu RGVzYyBzY2FuOwotCVNuYXBzaG90RGF0YSBzbmFwOwogCVR5cGVDYWNoZUVudHJ5ICoqZXE7Ci0J VHJhbnNhY3Rpb25JZCB4d2FpdDsKIAlib29sCQlmb3VuZDsKIAlUdXBsZURlc2MJZGVzYyBQR19V U0VEX0ZPUl9BU1NFUlRTX09OTFkgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CiAKQEAgLTM4MCwx MyArMzYzLDE1IEBAIFJlbGF0aW9uRmluZFJlcGxUdXBsZVNlcShSZWxhdGlvbiByZWwsIExvY2tU dXBsZU1vZGUgbG9ja21vZGUsCiAKIAllcSA9IHBhbGxvYzAoc2l6ZW9mKCplcSkgKiBvdXRzbG90 LT50dHNfdHVwbGVEZXNjcmlwdG9yLT5uYXR0cyk7CiAKLQkvKiBTdGFydCBhIGhlYXAgc2Nhbi4g Ki8KLQlJbml0RGlydHlTbmFwc2hvdChzbmFwKTsKLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJl bCwgJnNuYXAsIDAsIE5VTEwpOworCS8qIFN0YXJ0IGEgaGVhcCBzY2FuLiBTbmFwc2hvdEFueSB3 aWxsIGJlIHJlcGxhY2VkIGJlbG93LiAqLworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBT bmFwc2hvdEFueSwgMCwgTlVMTCk7CiAJc2NhbnNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShyZWws IE5VTEwpOwogCiByZXRyeToKIAlmb3VuZCA9IGZhbHNlOworCVB1c2hBY3RpdmVTbmFwc2hvdChH ZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwkvKiBVcGRhdGUgdGhlIGFjdHVhbCBzY2FuIHNuYXBzaG90 IGVhY2ggcmV0cnkgKi8KKwlzY2FuLT5yc19zbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7 CiAKIAl0YWJsZV9yZXNjYW4oc2NhbiwgTlVMTCk7CiAKQEAgLTM5OSwxOSArMzg0LDYgQEAgcmV0 cnk6CiAJCWZvdW5kID0gdHJ1ZTsKIAkJRXhlY0NvcHlTbG90KG91dHNsb3QsIHNjYW5zbG90KTsK IAotCQl4d2FpdCA9IFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNuYXAueG1pbikgPwotCQkJc25hcC54 bWluIDogc25hcC54bWF4OwotCi0JCS8qCi0JCSAqIElmIHRoZSB0dXBsZSBpcyBsb2NrZWQsIHdh aXQgZm9yIGxvY2tpbmcgdHJhbnNhY3Rpb24gdG8gZmluaXNoIGFuZAotCQkgKiByZXRyeS4KLQkJ ICovCi0JCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh4d2FpdCkpCi0JCXsKLQkJCVhhY3RMb2Nr VGFibGVXYWl0KHh3YWl0LCBOVUxMLCBOVUxMLCBYTFRXX05vbmUpOwotCQkJZ290byByZXRyeTsK LQkJfQotCiAJCS8qIEZvdW5kIG91ciB0dXBsZSBhbmQgaXQncyBub3QgbG9ja2VkICovCiAJCWJy ZWFrOwogCX0KQEAgLTQyMiw4ICszOTQsNiBAQCByZXRyeToKIAkJVE1fRmFpbHVyZURhdGEgdG1m ZDsKIAkJVE1fUmVzdWx0CXJlczsKIAotCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0TGF0ZXN0U25h cHNob3QoKSk7Ci0KIAkJcmVzID0gdGFibGVfdHVwbGVfbG9jayhyZWwsICYob3V0c2xvdC0+dHRz X3RpZCksIEdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJICAgb3V0c2xvdCwKIAkJCQkJCQkg ICBHZXRDdXJyZW50Q29tbWFuZElkKGZhbHNlKSwKQEAgLTQzMiwxMyArNDAyLDE2IEBAIHJldHJ5 OgogCQkJCQkJCSAgIDAgLyogZG9uJ3QgZm9sbG93IHVwZGF0ZXMgKi8gLAogCQkJCQkJCSAgICZ0 bWZkKTsKIAotCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJCWlmIChzaG91bGRfcmVmZXRjaF90 dXBsZShyZXMsICZ0bWZkKSkKKwkJeworCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJCWdvdG8g cmV0cnk7CisJCX0KIAl9CiAKIAl0YWJsZV9lbmRzY2FuKHNjYW4pOworCVBvcEFjdGl2ZVNuYXBz aG90KCk7CiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzY2Fuc2xvdCk7CiAKIAlyZXR1 cm4gZm91bmQ7Ci0tIAoyLjQ4LjEKCg== --000000000000402e1f06423d413f--