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 1rvaG7-00CvOj-J9 for pgsql-hackers@arkaria.postgresql.org; Sat, 13 Apr 2024 10:05:20 +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 1rvaG5-003m0L-NF for pgsql-hackers@arkaria.postgresql.org; Sat, 13 Apr 2024 10:05:17 +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 1rvaG5-003m0D-2R for pgsql-hackers@lists.postgresql.org; Sat, 13 Apr 2024 10:05:17 +0000 Received: from mail-yb1-xb2c.google.com ([2607:f8b0:4864:20::b2c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rvaG0-002e19-CP for pgsql-hackers@lists.postgresql.org; Sat, 13 Apr 2024 10:05:15 +0000 Received: by mail-yb1-xb2c.google.com with SMTP id 3f1490d57ef6-dcc80d6004bso1665748276.0 for ; Sat, 13 Apr 2024 03:05:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713002711; x=1713607511; darn=lists.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=iZ7zvWNB7RiTCKK2aL7modSB9bLJfd3M7QIIy3rgV3I=; b=erqF/WKz+ZtjIzq1hGjyPewuPQZ7GSOJ2r50mZOtz47nefTM1LkcbUDO/nJ+DcHqtT USthyV6HQ3nwDQ19krLhNiDM2BpO5VmcoCq4ChYz4dKv8CFw+RerrbchAHK5pYGQB/uj Srh6eSSDMDbBLkQzjw/9pxyC5Of1ssShi2HSEkpWatKWeJY7ApS6MnwJra0IkbPtNr8l 5Y8hdje+bqjnPCI0dpzswdfmrow5lx+ow+/SWhoqriAn6tbFXZ50UooQ3dqyEjiN9q06 0fEJwi+giqOxZY+9wIEXAuDQUqm7dVBgko8CcNYrM7IotCB+jdgouEhvxuUmvVv824A9 SpQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713002711; x=1713607511; 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=iZ7zvWNB7RiTCKK2aL7modSB9bLJfd3M7QIIy3rgV3I=; b=nfu738VvqYF3sM2sLWj8SIIrXMzjiosnDjEznZacgvIel4XE5mC9ZPh7lHZP2RG/EX qw3oan4AvCBhfpaaaDMS7Dl2jaTLQ3UG02AljBX2vBmvFD/h9U5+8aXioVFucmULHEm2 YshD6zoDFQ5vswyRgmfkkbIytXq0bqbGVlfko/kd9rVWTjxS4PWd4CXqDopSaLiJVExY bS0tR5Tc64FEmbd4uEPy47s3wVR7d3NfEAgRP57R95OOg49PWKIrTdvspdmfQkJlk8Tf J3zWPpE2EUz/6ObBl6mYMrG0DuDF5ygKDkHFZTBgq5rkMGdIBCwlBm+FOT4lgyC0aElc GQRQ== X-Forwarded-Encrypted: i=1; AJvYcCVT+Tx3ggx9Yq/RK/5zY1Fc1bUlkXbssEWRff6fXwuEzOxqIzigcU97b+s5m2rHBcEovC7bPAbQmN1ZJhBmudGNfOG7Jh+H8tCFeCVPiFmmc800 X-Gm-Message-State: AOJu0YwvCtU2qug73NEaz7zYXWj69ToME2fhTfGxBrw+XejajiozKknp tkGhwZurR0PtBzui5sRJzL6FuzoAtdINLqgO0ce9G9wNBUdqIsIOsdEracblDrPzA7TFCDwGBgB 3i+DxPSCEipTfflCi3wnlPwsQGjU= X-Google-Smtp-Source: AGHT+IGfa5QpNgaY9DtXIw1puc//m4ihqL761hooBYvzVA/XAGFvFMq3KLrnvoBuWm08hO7KU1yVSNmy19BO4hVkv6M= X-Received: by 2002:a25:3341:0:b0:dce:1871:3d30 with SMTP id z62-20020a253341000000b00dce18713d30mr4513535ybz.21.1713002711115; Sat, 13 Apr 2024 03:05:11 -0700 (PDT) MIME-Version: 1.0 References: <28ed1ee0-749d-9838-955e-abff42fc44be@gmail.com> <86bfd241-a58c-479a-9a72-2c67a02becf8@postgrespro.ru> <0f655bcd-6487-4179-f9cf-c248efbad510@gmail.com> In-Reply-To: From: Alexander Korotkov Date: Sat, 13 Apr 2024 13:04:58 +0300 Message-ID: Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Dmitry Koval Cc: Alexander Lakhin , Robert Haas , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000188cb70615f7865e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000188cb70615f7865e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Dmitry! On Fri, Apr 12, 2024 at 10:59=E2=80=AFPM Dmitry Koval wrote: > > Thanks, Alexander! > > > Still now we're able to create a partition in the pg_temp schema > > explicitly. > > Attached patches with fix. Please, find a my version of this fix attached. I think we need to check relpersistence in a similar way ATTACH PARTITION or CREATE TABLE ... PARTITION OF do. I'm going to polish this a little bit more. ------ Regards, Alexander Korotkov --000000000000188cb70615f7865e Content-Type: application/octet-stream; name="v6-0001-Fix-for-SPLIT-MERGE-partitions-of-temporary-table.patch" Content-Disposition: attachment; filename="v6-0001-Fix-for-SPLIT-MERGE-partitions-of-temporary-table.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_luxxj0e30 RnJvbSBhYmZiZDQ3YzRkNWFlNmNjNmZmNTM4Njg4ZmUyYjg1NjAxOTEyZTE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLb3ZhbCBEbWl0cnkgPGQua292YWxAcG9zdGdyZXNwcm8ucnU+ CkRhdGU6IFdlZCwgMTAgQXByIDIwMjQgMTg6NTQ6MDUgKzAzMDAKU3ViamVjdDogW1BBVENIIHY2 XSBGaXggZm9yIFNQTElUL01FUkdFIHBhcnRpdGlvbnMgb2YgdGVtcG9yYXJ5IHRhYmxlCgotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8IDg0ICsrKysr KysrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAg ICAgICB8ICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5v dXQgfCA3NSArKysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0 aXRpb25fc3BsaXQub3V0IHwgMjkgKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0 aW9uX21lcmdlLnNxbCAgICAgIHwgNjkgKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsICAgICAgfCAyMyArKysrKwogNiBmaWxlcyBjaGFuZ2Vk LCAyNTMgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYwppbmRleCAwMDAyMTJmMjRjNC4uZDM4ZWI1MTAwMmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCkBAIC0yMTEyNCwxNiArMjExMjQsMjQgQEAgbW92ZVNwbGl0VGFibGVSb3dzKFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gc3BsaXRSZWwsIExpc3QgKnBhcnRsaXN0LCBMaXN0ICpuZXdQYXIK ICAqIGNyZWF0ZVBhcnRpdGlvblRhYmxlOiBjcmVhdGUgdGFibGUgZm9yIGEgbmV3IHBhcnRpdGlv biB3aXRoIGdpdmVuIG5hbWUKICAqIChuZXdQYXJ0TmFtZSkgbGlrZSB0YWJsZSAobW9kZWxSZWxO YW1lKQogICoKLSAqIEVtdWxhdGVzIGNvbW1hbmQ6IENSRUFURSBUQUJMRSA8bmV3UGFydE5hbWU+ IChMSUtFIDxtb2RlbFJlbE5hbWU+CisgKiBFbXVsYXRlcyBjb21tYW5kOiBDUkVBVEUgW1RFTVBd IFRBQkxFIDxuZXdQYXJ0TmFtZT4gKExJS0UgPG1vZGVsUmVsTmFtZT4KICAqIElOQ0xVRElORyBB TEwgRVhDTFVESU5HIElOREVYRVMgRVhDTFVESU5HIElERU5USVRZKQogICovCi1zdGF0aWMgdm9p ZAotY3JlYXRlUGFydGl0aW9uVGFibGUoUmFuZ2VWYXIgKm5ld1BhcnROYW1lLCBSYW5nZVZhciAq bW9kZWxSZWxOYW1lLAorc3RhdGljIFJlbGF0aW9uCitjcmVhdGVQYXJ0aXRpb25UYWJsZShSZWxh dGlvbiByZWwsIFJhbmdlVmFyICpuZXdQYXJ0TmFtZSwgUmFuZ2VWYXIgKm1vZGVsUmVsTmFtZSwK IAkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCkKIHsKIAlDcmVhdGVTdG10 ICpjcmVhdGVTdG10OwogCVRhYmxlTGlrZUNsYXVzZSAqdGxjOwogCVBsYW5uZWRTdG10ICp3cmFw cGVyOworCVJlbGF0aW9uCW5ld1JlbDsKKworCS8qIElmIGV4aXN0aW5nIHJlbCBpcyB0ZW1wLCBp dCBtdXN0IGJlbG9uZyB0byB0aGlzIHNlc3Npb24gKi8KKwlpZiAocmVsLT5yZF9yZWwtPnJlbHBl cnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVAgJiYKKwkJIXJlbC0+cmRfaXNsb2NhbHRl bXApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1Rf VFlQRSksCisJCQkJIGVycm1zZygiY2Fubm90IGNyZWF0ZSBhcyBwYXJ0aXRpb24gb2YgdGVtcG9y YXJ5IHJlbGF0aW9uIG9mIGFub3RoZXIgc2Vzc2lvbiIpKSk7CiAKIAljcmVhdGVTdG10ID0gbWFr ZU5vZGUoQ3JlYXRlU3RtdCk7CiAJY3JlYXRlU3RtdC0+cmVsYXRpb24gPSBuZXdQYXJ0TmFtZTsK QEAgLTIxMTcyLDYgKzIxMTgwLDM1IEBAIGNyZWF0ZVBhcnRpdGlvblRhYmxlKFJhbmdlVmFyICpu ZXdQYXJ0TmFtZSwgUmFuZ2VWYXIgKm1vZGVsUmVsTmFtZSwKIAkJCQkgICBOVUxMLAogCQkJCSAg IE5vbmVfUmVjZWl2ZXIsCiAJCQkJICAgTlVMTCk7CisKKwkvKgorCSAqIE9wZW4gdGhlIG5ldyBw YXJ0aXRpb24gYW5kIGFjcXVpcmUgZXhjbHVzaXZlIGxvY2sgb24gaXQuICBUaGlzIHdpbGwKKwkg KiBzdG9wIGFsbCB0aGUgb3BlcmF0aW9ucyB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlLiAgVGhpcyBt aWdodCBzZWVtCisJICogZXhjZXNzaXZlLCBidXQgdGhpcyBpcyB0aGUgd2F5IHdlIG1ha2Ugc3Vy ZSBub2JvZHkgaXMgcGxhbm5pbmcgcXVlcmllcworCSAqIGludm9sdmluZyBtZXJnaW5nIHBhcnRp dGlvbnMuCisJICovCisJbmV3UmVsID0gdGFibGVfb3BlbnJ2KG5ld1BhcnROYW1lLCBBY2Nlc3NF eGNsdXNpdmVMb2NrKTsKKworCS8qCisJICogSWYgdGhlIHBhcmVudCBpcyBwZXJtYW5lbnQsIHNv IG11c3QgYmUgYWxsIG9mIGl0cyBwYXJ0aXRpb25zLiAgTm90ZQorCSAqIHRoYXQgaW5oZXJpdGFu Y2UgYWxsb3dzIHRoYXQgY2FzZS4KKwkgKi8KKwlpZiAocmVsLT5yZF9yZWwtPnJlbHBlcnNpc3Rl bmNlICE9IFJFTFBFUlNJU1RFTkNFX1RFTVAgJiYKKwkJbmV3UmVsLT5yZF9yZWwtPnJlbHBlcnNp c3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygiY2Fubm90IGNy ZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgcGVybWFuZW50IHJlbGF0 aW9uIFwiJXNcIiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCisJ LyogUGVybWFuZW50IHJlbHMgY2Fubm90IGluaGVyaXQgZnJvbSB0ZW1wb3Jhcnkgb25lcyAqLwor CWlmIChuZXdSZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVOQ0VfVEVN UCAmJgorCQlyZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVN UCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9U WVBFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50IHJlbGF0aW9uIGFz IHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisKKwlyZXR1cm4gbmV3UmVsOwogfQogCiAvKgpAQCAt MjEyNzAsMTEgKzIxMzA3LDcgQEAgQVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwg QWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCVNpbmdsZVBhcnRpdGlvblNw ZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKIAkJUmVs YXRpb24JbmV3UGFydFJlbDsKIAotCQljcmVhdGVQYXJ0aXRpb25UYWJsZShzcHMtPm5hbWUsIHBh cmVudE5hbWUsIGNvbnRleHQpOwotCi0JCS8qIE9wZW4gdGhlIG5ldyBwYXJ0aXRpb24gYW5kIGFj cXVpcmUgZXhjbHVzaXZlIGxvY2sgb24gaXQuICovCi0JCW5ld1BhcnRSZWwgPSB0YWJsZV9vcGVu cnYoc3BzLT5uYW1lLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKLQorCQluZXdQYXJ0UmVsID0gY3Jl YXRlUGFydGl0aW9uVGFibGUocmVsLCBzcHMtPm5hbWUsIHBhcmVudE5hbWUsIGNvbnRleHQpOwog CQluZXdQYXJ0UmVscyA9IGxhcHBlbmQobmV3UGFydFJlbHMsIG5ld1BhcnRSZWwpOwogCX0KIApA QCAtMjE0NjYsMjggKzIxNDk5LDE2IEBAIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1 ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJbWVyZ2VQYXJ0TmFt ZSA9IG1ha2VSYW5nZVZhcihnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2Uo cmVsKSksCiAJCQkJCQkJCQkgdG1wUmVsTmFtZSwgLTEpOwogCX0KLQljcmVhdGVQYXJ0aXRpb25U YWJsZShtZXJnZVBhcnROYW1lLAotCQkJCQkJIG1ha2VSYW5nZVZhcihnZXRfbmFtZXNwYWNlX25h bWUoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSksCi0JCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCksIC0xKSwKLQkJCQkJCSBjb250ZXh0KTsKIAotCS8qCi0JICogT3BlbiB0 aGUgbmV3IHBhcnRpdGlvbiBhbmQgYWNxdWlyZSBleGNsdXNpdmUgbG9jayBvbiBpdC4gIFRoaXMg d2lsbAotCSAqIHN0b3AgYWxsIHRoZSBvcGVyYXRpb25zIHdpdGggcGFydGl0aW9uZWQgdGFibGUu ICBUaGlzIG1pZ2h0IHNlZW0KLQkgKiBleGNlc3NpdmUsIGJ1dCB0aGlzIGlzIHRoZSB3YXkgd2Ug bWFrZSBzdXJlIG5vYm9keSBpcyBwbGFubmluZyBxdWVyaWVzCi0JICogaW52b2x2aW5nIG1lcmdp bmcgcGFydGl0aW9ucy4KLQkgKi8KLQluZXdQYXJ0UmVsID0gdGFibGVfb3BlbnJ2KG1lcmdlUGFy dE5hbWUsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCW5ld1BhcnRSZWwgPSBjcmVhdGVQYXJ0aXRp b25UYWJsZShyZWwsCisJCQkJCQkJCQkgIG1lcmdlUGFydE5hbWUsCisJCQkJCQkJCQkgIG1ha2VS YW5nZVZhcihnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSksCisJ CQkJCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCAtMSksCisJCQkJCQkJ CQkgIGNvbnRleHQpOwogCiAJLyogQ29weSBkYXRhIGZyb20gbWVyZ2VkIHBhcnRpdGlvbnMgdG8g bmV3IHBhcnRpdGlvbi4gKi8KIAltb3ZlTWVyZ2VkVGFibGVzUm93cyhyZWwsIG1lcmdpbmdQYXJ0 aXRpb25zTGlzdCwgbmV3UGFydFJlbCk7CiAKLQkvKgotCSAqIEF0dGFjaCBhIG5ldyBwYXJ0aXRp b24gdG8gdGhlIHBhcnRpdGlvbmVkIHRhYmxlLiB3cXVldWUgPSBOVUxMOgotCSAqIHZlcmlmaWNh dGlvbiBmb3IgZWFjaCBjbG9uZWQgY29uc3RyYWludCBpcyBub3QgbmVlZC4KLQkgKi8KLQlhdHRh Y2hQYXJ0aXRpb25UYWJsZShOVUxMLCByZWwsIG5ld1BhcnRSZWwsIGNtZC0+Ym91bmQpOwotCiAJ LyogVW5sb2NrIGFuZCBkcm9wIG1lcmdlZCBwYXJ0aXRpb25zLiAqLwogCWZvcmVhY2gobGlzdHB0 ciwgbWVyZ2luZ1BhcnRpdGlvbnNMaXN0KQogCXsKQEAgLTIxNTE3LDcgKzIxNTM4LDIwIEBAIEFU RXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwKIAkJLyogUmVuYW1lIHBhcnRpdGlvbi4gKi8KIAkJUmVuYW1lUmVsYXRp b25JbnRlcm5hbChSZWxhdGlvbkdldFJlbGlkKG5ld1BhcnRSZWwpLAogCQkJCQkJCSAgIGNtZC0+ bmFtZS0+cmVsbmFtZSwgZmFsc2UsIGZhbHNlKTsKKworCQkvKgorCQkgKiBCdW1wIHRoZSBjb21t YW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgdHVwbGUgb2YgcmVuYW1lZCBwYXJ0aXRpb24KKwkJICog dmlzaWJsZSBmb3IgYXR0YWNoIHBhcnRpdGlvbiBvcGVyYXRpb24uCisJCSAqLworCQlDb21tYW5k Q291bnRlckluY3JlbWVudCgpOwogCX0KKworCS8qCisJICogQXR0YWNoIGEgbmV3IHBhcnRpdGlv biB0byB0aGUgcGFydGl0aW9uZWQgdGFibGUuIHdxdWV1ZSA9IE5VTEw6CisJICogdmVyaWZpY2F0 aW9uIGZvciBlYWNoIGNsb25lZCBjb25zdHJhaW50IGlzIG5vdCBuZWVkZWQuCisJICovCisJYXR0 YWNoUGFydGl0aW9uVGFibGUoTlVMTCwgcmVsLCBuZXdQYXJ0UmVsLCBjbWQtPmJvdW5kKTsKKwog CS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLwogCXRhYmxlX2Nsb3NlKG5ld1BhcnRS ZWwsIE5vTG9jayk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRp bGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCBjZWJhMDY5 OTA1MC4uYTNiYmNjOTljMDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91 dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMzQz MCw3ICszNDMwLDcgQEAgY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9p ZCkKIAlpZiAocGFydFJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04pCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSks Ci0JCQkJIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHRhYmxlIiwKKwkJCQkgZXJybXNnKCJcIiVz XCIgaXMgbm90IGFuIG9yZGluYXJ5IHRhYmxlIiwKIAkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHBhcnRSZWwpKSkpOwogCiAJaWYgKCFwYXJ0UmVsLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9u KQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0CmluZGV4 IDYwZWFjZjZiZjM5Li5iMWQwYjUwYjBiNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcGFydGl0aW9uX21lcmdlLm91dApAQCAtMjUsOSArMjUsOSBAQCBBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBz YWxlc19mZQogRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBhbHJl YWR5IHVzZWQKIExJTkUgMTogLi4uZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBz YWxlc19tYXIyMDIyLCBzYWxlc19mZWIyLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotLS0gRVJST1I6ICAic2FsZXNfYXBy MjAyMiIgaXMgbm90IGEgdGFibGUKKy0tIEVSUk9SOiAgInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBh biBvcmRpbmFyeSB0YWJsZQogQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9O UyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfYXByMjAyMikgSU5UTyBzYWxl c19mZWJfbWFyX2FwcjIwMjI7Ci1FUlJPUjogICJzYWxlc19hcHIyMDIyIiBpcyBub3QgYSB0YWJs ZQorRVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGFuIG9yZGluYXJ5IHRhYmxlCiAtLSBF UlJPUjogIGludmFsaWQgcGFydGl0aW9ucyBvcmRlciwgcGFydGl0aW9uICJzYWxlc19tYXIyMDIy IiBjYW4gbm90IGJlIG1lcmdlZAogLS0gKHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfamFu MjAyMiBhbmQgc2FsZXNfbWFyMjAyMikKIEFMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX21hcjIwMjIpIElOVE8gc2FsZXNfamFuX21h cjIwMjI7CkBAIC03NDYsNCArNzQ2LDc1IEBAIERST1AgVEFCTEUgdDM7CiBEUk9QIFRBQkxFIHQy OwogRFJPUCBUQUJMRSB0MTsKIC0tCistLSBUcnkgdG8gTUVSR0UgcGFydGl0aW9ucyBvZiB0ZW1w b3JhcnkgdGFibGUuCistLQorQ1JFQVRFIFRFTVAgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBC WSBSQU5HRSAoaSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8xXzIgUEFSVElU SU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitTRUxFQ1QgYy5vaWQ6OnBnX2Nh dGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMu b2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdf Y2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5p bmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4 cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cu cmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgb2lkICAgfCAgICAgICAgcGdfZ2V0X2V4cHIg ICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8xIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSkgfCB0CisgdHBfMV8yIHwgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikgfCB0CisoMiBy b3dzKQorCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJ TlRPIHRwXzBfMjsKK0VSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBh cyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uICJ0IgorLS0gUGFydGl0aW9uIHNob3Vs ZCBiZSB0ZW1wb3JhcnkuCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBnX2Nh dGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5j ZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBp CisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2Ns YXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMu b2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cu dGV4dDsKKyAgb2lkICAgfCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICB8IHJlbHBlcnNpc3Rl bmNlIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tCisgdHBfMF8xIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSkgfCB0CisgdHBfMV8yIHwg Rk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikgfCB0CisoMiByb3dzKQorCitEUk9QIFRBQkxFIHQ7 CistLQorLS0gQ2hlY2sgdGhlIHBhcnRpdGlvbiBpbmRleCBuYW1lIGlmIHRoZSBwYXJ0aXRpb24g bmFtZSBpcyB0aGUgc2FtZSBhcyBvbmUKKy0tIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucy4KKy0t CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUg VEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOwor Q1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKK0NSRUFURSBJTkRFWCB0aWR4IE9OIHQoaSk7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBB UlRJVElPTlMgKHRwXzFfMiwgdHBfMF8xKSBJTlRPIHRwXzFfMjsKKy0tIEluZGV4bmFtZSB2YWx1 ZSBzaG91bGQgYmUgJ3RwXzFfMl9pX2lkeCcuCitTRUxFQ1QgaW5kZXhuYW1lIEZST00gcGdfaW5k ZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAndHBfMV8yJzsKKyAgaW5kZXhuYW1lICAgCistLS0tLS0t LS0tLS0tLQorIHRwXzFfMl9pX2lkeAorKDEgcm93KQorCitEUk9QIFRBQkxFIHQ7CistLQorLS0g VHJ5IGNyZWF0aW5nIGEgcGFydGl0aW9uIGluIHRoZSB0ZW1wb3Jhcnkgc2NoZW1hLgorLS0KK1NF VCBzZWFyY2hfcGF0aCA9IHB1YmxpYywgcGdfdGVtcDsKK0NSRUFURSBUQUJMRSB0IChpIGludCkg UEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworU0VUIHNlYXJjaF9wYXRoID0g cGdfdGVtcCwgcHVibGljOworLS0gQ2FuJ3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGlu dG8gYSB0ZW1wb3JhcnkgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMg KHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKK0VSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHRl bXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgcGVybWFuZW50IHJlbGF0aW9uICJ0Igor RFJPUCBUQUJMRSB0OworRFJPUCBUQWJsZSB0cF8wXzI7CitFUlJPUjogIHRhYmxlICJ0cF8wXzIi IGRvZXMgbm90IGV4aXN0CitCRUdJTjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9O IEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworU0VUIHNlYXJjaF9wYXRoID0gcHVibGljLCBw Z190ZW1wOworLS0gQ2FuJ3QgbWVyZ2UgdGVtcG9yYXJ5IHBhcnRpdGlvbnMgaW50byBhIHBlcnNp c3RlbnQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwg dHBfMV8yKSBJTlRPIHRwXzBfMjsKK0VSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHBlcm1hbmVudCBy ZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uICJ0IgorUk9MTEJBQ0s7 CitSRVNFVCBzZWFyY2hfcGF0aDsKKy0tCiBEUk9QIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3Nw bGl0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dApp bmRleCAyNmEwZDA5OTY5Ni4uNDZjZDgyY2UxOTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKQEAgLTE0MjcsNCArMTQyNywzMyBAQCBFUlJPUjog IHJlbGF0aW9uICJ0MXBhIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgogRFJP UCBUQUJMRSB0MjsKIERST1AgVEFCTEUgdDE7CiAtLQorLS0gVHJ5IHRvIFNQTElUIHBhcnRpdGlv biBvZiB0ZW1wb3JhcnkgdGFibGUuCistLQorQ1JFQVRFIFRFTVAgVEFCTEUgdCAoaSBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wXzIgUEFSVElUSU9O IE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFs b2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lk KSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0 YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhw YXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIo Yy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVn Y2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgb2lkICAgfCAgICAgICAgcGdfZ2V0X2V4cHIgICAg ICAgICB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8yIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MikgfCB0CisoMSByb3cpCisKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJ TlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAg UEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitFUlJPUjogIGNh bm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFy eSByZWxhdGlvbiAidCIKKy0tIFBhcnRpdGlvbnMgc2hvdWxkIGJlIHRlbXBvcmFyeS4KK1NFTEVD VCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJl bHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxvZy5w Z19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmlu aHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0 YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9p ZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICBvaWQgICB8ICAgICAg ICBwZ19nZXRfZXhwciAgICAgICAgIHwgcmVscGVyc2lzdGVuY2UgCistLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0cF8wXzIgfCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgyKSB8IHQKKygxIHJvdykKKworRFJPUCBUQUJMRSB0OworLS0KIERS T1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFy dGl0aW9uX21lcmdlLnNxbAppbmRleCA5YWZlZDcwMzY1Zi4uMmQ1NWUwZjVhMzggMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbApAQCAtMjgsNyArMjgsNyBAQCBDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOwog CiAtLSBFUlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGFscmVhZHkg dXNlZAogQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmVi MjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2Fw cjIwMjI7Ci0tLSBFUlJPUjogICJzYWxlc19hcHIyMDIyIiBpcyBub3QgYSB0YWJsZQorLS0gRVJS T1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGFuIG9yZGluYXJ5IHRhYmxlCiBBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIy MDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKIC0tIEVSUk9S OiAgaW52YWxpZCBwYXJ0aXRpb25zIG9yZGVyLCBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGNh biBub3QgYmUgbWVyZ2VkCiAtLSAoc3BhY2UgYmV0d2VlbiBzZWN0aW9ucyBzYWxlc19qYW4yMDIy IGFuZCBzYWxlc19tYXIyMDIyKQpAQCAtNDQ0LDUgKzQ0NCw3MiBAQCBEUk9QIFRBQkxFIHQzOwog RFJPUCBUQUJMRSB0MjsKIERST1AgVEFCTEUgdDE7CiAKKy0tCistLSBUcnkgdG8gTUVSR0UgcGFy dGl0aW9ucyBvZiB0ZW1wb3JhcnkgdGFibGUuCistLQorQ1JFQVRFIFRFTVAgVEFCTEUgdCAoaSBp bnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wXzEgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEVNUCBUQUJM RSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CisKK1NF TEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihj LnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdfY2F0YWxv Zy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBp LmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdf Y2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBj Lm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitBTFRFUiBUQUJM RSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKworLS0g UGFydGl0aW9uIHNob3VsZCBiZSB0ZW1wb3JhcnkuCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cu cmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwg Yy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxv Zy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJl bnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5y ZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xh c3M6OnBnX2NhdGFsb2cudGV4dDsKKworRFJPUCBUQUJMRSB0OworCistLQorLS0gQ2hlY2sgdGhl IHBhcnRpdGlvbiBpbmRleCBuYW1lIGlmIHRoZSBwYXJ0aXRpb24gbmFtZSBpcyB0aGUgc2FtZSBh cyBvbmUKKy0tIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucy4KKy0tCitDUkVBVEUgVEFCTEUgdCAo aSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CisKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBf MV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitDUkVBVEUg SU5ERVggdGlkeCBPTiB0KGkpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8x XzIsIHRwXzBfMSkgSU5UTyB0cF8xXzI7CisKKy0tIEluZGV4bmFtZSB2YWx1ZSBzaG91bGQgYmUg J3RwXzFfMl9pX2lkeCcuCitTRUxFQ1QgaW5kZXhuYW1lIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0 YWJsZW5hbWUgPSAndHBfMV8yJzsKKworRFJPUCBUQUJMRSB0OworCistLQorLS0gVHJ5IGNyZWF0 aW5nIGEgcGFydGl0aW9uIGluIHRoZSB0ZW1wb3Jhcnkgc2NoZW1hLgorLS0KK1NFVCBzZWFyY2hf cGF0aCA9IHB1YmxpYywgcGdfdGVtcDsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9O IEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitTRVQgc2VhcmNoX3BhdGggPSBwZ190ZW1w LCBwdWJsaWM7CisKKy0tIENhbid0IG1lcmdlIHBlcnNpc3RlbnQgcGFydGl0aW9ucyBpbnRvIGEg dGVtcG9yYXJ5IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8w XzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitEUk9QIFRBQkxFIHQ7CitEUk9QIFRBYmxlIHRwXzBf MjsKKworQkVHSU47CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAo aSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgyKTsKKworU0VUIHNlYXJjaF9wYXRoID0gcHVibGljLCBwZ190ZW1wOwor CistLSBDYW4ndCBtZXJnZSB0ZW1wb3JhcnkgcGFydGl0aW9ucyBpbnRvIGEgcGVyc2lzdGVudCBw YXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIp IElOVE8gdHBfMF8yOworUk9MTEJBQ0s7CisKK1JFU0VUIHNlYXJjaF9wYXRoOworCiAtLQogRFJP UCBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFy dGl0aW9uX3NwbGl0LnNxbAppbmRleCA2MjViMDFkZGQxZi4uNWRjMmZjMzljZDUgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbApAQCAtODQ0LDUgKzg0NCwyOCBAQCBB TFRFUiBUQUJMRSB0MiBTUExJVCBQQVJUSVRJT04gdDFwYSBJTlRPCiBEUk9QIFRBQkxFIHQyOwog RFJPUCBUQUJMRSB0MTsKIAorLS0KKy0tIFRyeSB0byBTUExJVCBwYXJ0aXRpb24gb2YgdGVtcG9y YXJ5IHRhYmxlLgorLS0KK0NSRUFURSBURU1QIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkg UkFOR0UgKGkpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDIpOworCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xh c3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxw ZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19p bmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAn dCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0 Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBn X2NhdGFsb2cudGV4dDsKKworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElO VE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQ QVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKworLS0gUGFydGl0 aW9ucyBzaG91bGQgYmUgdGVtcG9yYXJ5LgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2Ns YXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVs cGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdf aW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0g J3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFy dGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpw Z19jYXRhbG9nLnRleHQ7CisKK0RST1AgVEFCTEUgdDsKKwogLS0KIERST1AgU0NIRU1BIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWE7Ci0tIAoyLjM5LjMgKEFwcGxlIEdpdC0xNDUpCgo= --000000000000188cb70615f7865e--