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.96) (envelope-from ) id 1wbH2d-002QIV-0e for pgsql-hackers@arkaria.postgresql.org; Sun, 21 Jun 2026 12:12:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wbH1a-002uV9-33 for pgsql-hackers@arkaria.postgresql.org; Sun, 21 Jun 2026 12:11:42 +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.96) (envelope-from ) id 1wbH1a-002uUx-17 for pgsql-hackers@lists.postgresql.org; Sun, 21 Jun 2026 12:11:42 +0000 Received: from mail-qv1-xf29.google.com ([2607:f8b0:4864:20::f29]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wbH1Y-00000001QzQ-1zp4 for pgsql-hackers@lists.postgresql.org; Sun, 21 Jun 2026 12:11:41 +0000 Received: by mail-qv1-xf29.google.com with SMTP id 6a1803df08f44-8dea42b54dfso26667166d6.1 for ; Sun, 21 Jun 2026 05:11:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782043898; cv=none; d=google.com; s=arc-20240605; b=Q04xsnd47aXErl6WolYny2BmCI1eq++sW1wjMCBrJ0UxBNm6BAzGEJZgStK0mwsoGU v/NhjMR2ofTwglIWmu4nhmQl+zMIvsRQDFaAybL6ZzAXRtakAD2uH4YPy8iz30R1J2rj 3FVat3e7MrlrVd6DBbI2WjtpHtLB75ulYD5AW3Pj8HYzvy/FW7jf31vbtOOrb9kRpFTl jeX8UQbKORVtMd2/hDpgy/xFDS+NMLNw+yVDFZQGLhslSPGzmKuDywqtbygcmUG4GX77 7jGUphMmzKJlzGS8Zj44i9jADfh3vrFBwoUuKXsyDavR6dhp1phtF9LSp26CCLHZDpgw f4wg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=WQ/ETA9Eq8ikghNsXRNOxbqMOvW1zIXmEsSLnzrlgmk=; fh=LlQzROKqsvDF6W3g1tHkUfvzWKOrIFTLpl8YLtPxJGY=; b=BCeYaT2FbJActyx2YTRkWvMWTZNCKaP1bos81oR1XnqOCYOU+/wrcV4BV1GT2Nlw8V GGj5KhumU8EIJ68OIPgOP974sPcU3lXcswJZDX0KkhaZZK7xOTFhaY+aLwY/dTiAMOhc VVzgHDI4AG9yecoS2Is2q2QwH/Kf+KIym4yCjF6DzNGN3xN07HrX+kpVf0GahyBAZPx5 OTz2E3ARG7v4uLtzYHWWyTdQVI7JqSBiMw0rObHEpweqY3+RoMUX2QY3vWtA64EB3pXL 27T0r3nbU+biaRGNoxGfVkwxoNqYqn8nT4f0dujR24uV1scO/ZvDGmp7W8LNcTicKO/5 Y44g==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782043898; x=1782648698; 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=WQ/ETA9Eq8ikghNsXRNOxbqMOvW1zIXmEsSLnzrlgmk=; b=SjBwnvcq2A2qlMdb5jf7HPkJeVuDTE5FedX2tolqfo7ejGY/G0h0imJB754wmkFXYu UQpF/Dgq6Vesmp77Y5bjy0BpS1ShvuQfWWH7pzuX4bavaaP6Q2ZBFbhJfC/5cgo153mw i3N56u3qYk1vY4oXlc5f/c8jYMkNX9QgU1TAa3e8u5pxy/1l600ON1lkX8FllNkq7fVI 48u3prk3qp0C7O2jdN98kfnTsKDDoOF9jsBvDmvj3wyXpp9atxOHg4AhNCSiTv5ssaqa SOJ9p4hsj+N6NHQmvCUUHDYhO+mwdNpZr+RdA2KSwMCJ6NBeryxmKfaFoEwPlInlslAv xPdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782043898; x=1782648698; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=WQ/ETA9Eq8ikghNsXRNOxbqMOvW1zIXmEsSLnzrlgmk=; b=gzWSwVZHLdQg+6j3A52CERvQKwZpnhoNPNN5lkneRNRvJFVDzuDplF6bn5ULqRfyfB +TBOrDBgAv2Dsa7z7vNlkemO0Zgdb0nY0D/7rDy/rhHmhp+vP0ritDFClJShwPwZ1stw 0krrJa8xo9JQVmUzWhPk7hnzWidqzQyD9/zIAktwcXxWNSW49xKXXIEHGQD2BIFu8ARp 8EFI0EStPGJ9t6eToOQKZovecR7gPG7GrNsDfJ82ZdAx8BmSIlYx1LVlGQ9+33Ujflco Nm51+mIVjWznNpQnXVBNYQAJYIMbzufJJBFugp1stdsJPtfIYsSRyPu6DKuM7y/KSALX Mdsg== X-Forwarded-Encrypted: i=1; AHgh+RqDqGQQT+nKVNfxDTmwxvKwfS2xAgBF4OaT7iSKmFVQNhYDoxajOGe9n4HEvXZux2dHliPoLMJ5OJVjA1x0@lists.postgresql.org X-Gm-Message-State: AOJu0YyeNCredzBgTENFBB2VfNgixDRbTYpy1RVrypYWTNChCVtnhgOd f2ydXRga3UqwUn2MLA3+9zesag8skV2HhZTZnNwpNpljlOGytCkLc2GCGsVRsrVToxkfpC/moG+ qflaT6NvPwas3h8Vq+TRBwTHeYGGVvRM= X-Gm-Gg: AfdE7cnGvWvpXYKv1RwG8pENBubBk4N0xvoXC1WzeDwzfefvJOz4aZyhxyBPSeQU4b6 c8vvKuwf+TV2TvDdW5K5H1y4EyagRxptB/Px4BRGFPON4sQqjseyzocUcRydQwY25GtQC5iho/w VlKy2AcGvRCjKokT64l1qP5mXBlFlR2uuYSimiAs+7KEYopSCfA9PhJQOb3bM+vfYcj7S+CiPPI 4g4VOcXgsl+e9v08/E5pM2LxiuY4j/mQDlzeQpHGLlDzNpG7eV692VmQFsYkOTladQdAt+KVLO7 ypyiuF0XRHI84d1MOR9Jr2KKkQs4lb204k6Yj4D6bRTMaDvWn9Zl7NnVlFXGDQRyLL/D+o0I X-Received: by 2002:a05:6214:5502:b0:8ce:9cbd:b0ce with SMTP id 6a1803df08f44-8dea45a2662mr161337106d6.34.1782043898400; Sun, 21 Jun 2026 05:11:38 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Alexander Korotkov Date: Sun, 21 Jun 2026 15:11:26 +0300 X-Gm-Features: AVVi8CeKSB5BoruF3VDI73KTOvF_0mrSLRoSZOYkA79PZX2w52ADtv6tMfGvJ-g Message-ID: Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Justin Pryzby Cc: Pavel Borisov , Dmitry Koval , Alexander Lakhin , pgsql-hackers@lists.postgresql.org, Tomas Vondra , Alvaro Herrera Content-Type: multipart/mixed; boundary="0000000000008a5d300654c26dcc" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008a5d300654c26dcc Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jun 18, 2026 at 6:49=E2=80=AFPM Justin Pryzby wrote: > On Thu, Jun 18, 2026 at 10:31:11AM +0300, Alexander Korotkov wrote: > > Pushed with your suggestions accepted. > > Thanks. When I went back to test this, I merged ~25 partitions that > were all on the same tablespace, but the merged table was created on the > default tablespace. > > I tried again with default_tablespace set, but it was ignored. I think > that's wrong. It's good to follow the tablespace of the parent table, > but if it has no tablespace set, default_tablespace should be obeyed. > See surrounding logic in DefineRelation. > > I see the docs say this: > + ALTER TABLE MERGE PARTITION uses the partition= ed > + table itself as the template to construct the new partition. > + The new partition will inherit the same table access method, pers= istence > + type, and tablespace as the partitioned table. Correct, please see the attached patch, it makes createPartitionTable() deal with tablespaces the same was as DefineRelation() does. ------ Regards, Alexander Korotkov Supabase --0000000000008a5d300654c26dcc Content-Type: application/octet-stream; name="v1-0001-Take-into-account-default_tablespace-during-MERGE.patch" Content-Disposition: attachment; filename="v1-0001-Take-into-account-default_tablespace-during-MERGE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnqvx6l0 RnJvbSBlMmU5YmFkNjU0YTIwODNkZWRhZTFiNzQyMGJkZTEwMzZmYjNlYWFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogVGh1LCAxOCBKdW4gMjAyNiAyMTo1MzozMiArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjFdIFRha2UgaW50byBhY2NvdW50IGRlZmF1bHRfdGFibGVzcGFjZSBkdXJpbmcgTUVS R0UvU1BMSVQKIFBBUlRJVElPTihTKQoKY3JlYXRlUGFydGl0aW9uVGFibGUoKSBwYXNzZWQgdGhl IHBhcnRpdGlvbmVkIHBhcmVudCdzIHJlbHRhYmxlc3BhY2Ugc3RyYWlnaHQKdG8gaGVhcF9jcmVh dGVfd2l0aF9jYXRhbG9nKCksIGJ5cGFzc2luZyB0aGUgZGVmYXVsdF90YWJsZXNwYWNlIEdVQyBm YWxsYmFjawp0aGF0IERlZmluZVJlbGF0aW9uKCkgYXBwbGllcyBmb3IgQ1JFQVRFIFRBQkxFIC4u LiBQQVJUSVRJT04gT0YuICBXaGVuIHRoZQpwYXJlbnQgaGFkIG5vIGV4cGxpY2l0IHRhYmxlc3Bh Y2UgKHJlbHRhYmxlc3BhY2UgPSAwKSwgdGhlIG5ldyBwYXJ0aXRpb24KdW5jb25kaXRpb25hbGx5 IGxhbmRlZCBpbiB0aGUgZGF0YWJhc2UgZGVmYXVsdCwgZXZlbiBpZiBkZWZhdWx0X3RhYmxlc3Bh Y2UKd2FzIHNldCB0byBzb21ldGhpbmcgZWxzZTsgbWVyZ2luZyBvciBzcGxpdHRpbmcgYSBzZXQg b2YgcGFydGl0aW9ucyB0aGF0IGFsbApsaXZlZCBpbiBhIG5vbi1kZWZhdWx0IHRhYmxlc3BhY2Ug cHJvZHVjZWQgYSBuZXcgcGFydGl0aW9uIGluIHRoZSBkYXRhYmFzZQpkZWZhdWx0LgoKTWlycm9y IERlZmluZVJlbGF0aW9uKCkncyBsb2dpYzogdGFrZSBwYXJlbnQncyByZWx0YWJsZXNwYWNlIGlm IHNldCwKb3RoZXJ3aXNlIGNoZWNrIEdldERlZmF1bHRUYWJsZXNwYWNlKCkgKHdoaWNoIHJlYWRz IGRlZmF1bHRfdGFibGVzcGFjZQphbmQgbm9ybWFsaXNlcyBwZ19kZWZhdWx0IC8gTXlEYXRhYmFz ZVRhYmxlU3BhY2UgdG8gSW52YWxpZE9pZCkuICBBbHNvCmFkZCB0aGUgQ1JFQVRFIEFDTCBjaGVj ayBvbiB0aGUgcmVzb2x2ZWQgdGFibGVzcGFjZSwgbWF0Y2hpbmcKRGVmaW5lUmVsYXRpb24oKSdz IGJlaGF2aW9yLgoKVXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBNRVJHRS9TUExJVCBQQVJU SVRJT04gdG8gc3BlbGwgb3V0IHRoZQp0YWJsZXNwYWNlLXNlbGVjdGlvbiBydWxlIGV4cGxpY2l0 bHkuCgpSZXBvcnRlZC1ieTogSnVzdGluIFByeXpieSA8cHJ5emJ5QHRlbHNhc29mdC5jb20+CkRp c2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vYWpRVGtsdjhRQXJ6VHAzaCU0MHByeXpieWoy MDIzCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAgICAgIHwg MTggKysrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAg fCAyNSArKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uu b3V0IHwgNDggKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRp dGlvbl9zcGxpdC5vdXQgfCA2MCArKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsICAgICAgfCAzNiArKysrKysrKysrKwogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbCAgICAgIHwgNDUgKysrKysrKysrKysrKysK IDYgZmlsZXMgY2hhbmdlZCwgMjI3IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4IGRlYzM0MzM3ZDFhLi4zNmM4NDBmNjhkOCAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApAQCAtMTIzMyw4ICsxMjMzLDEzIEBAIFdJVEggKCBN T0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3Jl cGxhY2VhYmxlPiwgUkVNCiAgICAgIDxwYXJhPgogICAgICAgIDxjb21tYW5kPkFMVEVSIFRBQkxF IE1FUkdFIFBBUlRJVElPTjwvY29tbWFuZD4gdXNlcyB0aGUgcGFydGl0aW9uZWQKICAgICAgICB0 YWJsZSBpdHNlbGYgYXMgdGhlIHRlbXBsYXRlIHRvIGNvbnN0cnVjdCB0aGUgbmV3IHBhcnRpdGlv bi4KLSAgICAgICBUaGUgbmV3IHBhcnRpdGlvbiB3aWxsIGluaGVyaXQgdGhlIHNhbWUgdGFibGUg YWNjZXNzIG1ldGhvZCwgcGVyc2lzdGVuY2UKLSAgICAgICB0eXBlLCBhbmQgdGFibGVzcGFjZSBh cyB0aGUgcGFydGl0aW9uZWQgdGFibGUuCisgICAgICAgVGhlIG5ldyBwYXJ0aXRpb24gaW5oZXJp dHMgdGhlIHRhYmxlIGFjY2VzcyBtZXRob2QgYW5kIHBlcnNpc3RlbmNlIHR5cGUKKyAgICAgICBv ZiB0aGUgcGFydGl0aW9uZWQgdGFibGUuICBJdHMgdGFibGVzcGFjZSBpcyBzZWxlY3RlZCBhcyBm b3IgYQorICAgICAgIDxjb21tYW5kPkNSRUFURSBUQUJMRSAuLi4gUEFSVElUSU9OIE9GPC9jb21t YW5kPiBjb21tYW5kIGlzc3VlZAorICAgICAgIHdpdGhvdXQgYSA8bGl0ZXJhbD5UQUJMRVNQQUNF PC9saXRlcmFsPiBjbGF1c2U6IGlmIHRoZSBwYXJ0aXRpb25lZAorICAgICAgIHRhYmxlIGhhcyBh biBleHBsaWNpdCB0YWJsZXNwYWNlLCB0aGUgbmV3IHBhcnRpdGlvbiB1c2VzIGl0OworICAgICAg IG90aGVyd2lzZSB0aGUgdmFsdWUgb2YgPHhyZWYgbGlua2VuZD0iZ3VjLWRlZmF1bHQtdGFibGVz cGFjZSIvPiBpcworICAgICAgIHRha2VuIGludG8gYWNjb3VudCwgZmFsbGluZyBiYWNrIHRvIHRo ZSBkYXRhYmFzZSdzIGRlZmF1bHQgdGFibGVzcGFjZS4KIAogICAgICAgIENvbnN0cmFpbnRzLCBj b2x1bW4gZGVmYXVsdHMsIGNvbHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Npb25zLCBpZGVudGl0eQog ICAgICAgIGNvbHVtbnMsIGluZGV4ZXMsIGFuZCB0cmlnZ2VycyBhcmUgY29waWVkIGZyb20gdGhl IHBhcnRpdGlvbmVkIHRhYmxlIHRvCkBAIC0xMzMxLDggKzEzMzYsMTMgQEAgV0lUSCAoIE1PRFVM VVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFj ZWFibGU+LCBSRU0KICAgICAgPHBhcmE+CiAgICAgICAgPGNvbW1hbmQ+QUxURVIgVEFCTEUgU1BM SVQgUEFSVElUSU9OPC9jb21tYW5kPiB1c2VzIHRoZSBwYXJ0aXRpb25lZAogICAgICAgIHRhYmxl IGl0c2VsZiBhcyB0aGUgdGVtcGxhdGUgdG8gY29uc3RydWN0IG5ldyBwYXJ0aXRpb25zLgotICAg ICAgIE5ldyBwYXJ0aXRpb25zIHdpbGwgaW5oZXJpdCB0aGUgc2FtZSB0YWJsZSBhY2Nlc3MgbWV0 aG9kLCBwZXJzaXN0ZW5jZQotICAgICAgIHR5cGUsIGFuZCB0YWJsZXNwYWNlIGFzIHRoZSBwYXJ0 aXRpb25lZCB0YWJsZS4KKyAgICAgICBOZXcgcGFydGl0aW9ucyBpbmhlcml0IHRoZSB0YWJsZSBh Y2Nlc3MgbWV0aG9kIGFuZCBwZXJzaXN0ZW5jZSB0eXBlIG9mCisgICAgICAgdGhlIHBhcnRpdGlv bmVkIHRhYmxlLiAgVGhlaXIgdGFibGVzcGFjZSBpcyBzZWxlY3RlZCBhcyBmb3IgYQorICAgICAg IDxjb21tYW5kPkNSRUFURSBUQUJMRSAuLi4gUEFSVElUSU9OIE9GPC9jb21tYW5kPiBjb21tYW5k IGlzc3VlZAorICAgICAgIHdpdGhvdXQgYSA8bGl0ZXJhbD5UQUJMRVNQQUNFPC9saXRlcmFsPiBj bGF1c2U6IGlmIHRoZSBwYXJ0aXRpb25lZAorICAgICAgIHRhYmxlIGhhcyBhbiBleHBsaWNpdCB0 YWJsZXNwYWNlLCB0aGUgbmV3IHBhcnRpdGlvbnMgdXNlIGl0OworICAgICAgIG90aGVyd2lzZSB0 aGUgdmFsdWUgb2YgPHhyZWYgbGlua2VuZD0iZ3VjLWRlZmF1bHQtdGFibGVzcGFjZSIvPiBpcwor ICAgICAgIHRha2VuIGludG8gYWNjb3VudCwgZmFsbGluZyBiYWNrIHRvIHRoZSBkYXRhYmFzZSdz IGRlZmF1bHQgdGFibGVzcGFjZS4KICAgICAgPC9wYXJhPgogCiAgICAgIDxwYXJhPgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYwppbmRleCAyNjVkY2ZlN2ZkYS4uZmNiZmI4OTY2MDcgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jCkBAIC0yMjczNSw2ICsyMjczNSw3IEBAIGNyZWF0ZVBhcnRpdGlv blRhYmxlKExpc3QgKip3cXVldWUsIFJhbmdlVmFyICpuZXdQYXJ0TmFtZSwKIAlSZWxhdGlvbglu ZXdSZWw7CiAJT2lkCQkJbmV3UmVsSWQ7CiAJT2lkCQkJZXhpc3RpbmdSZWxpZDsKKwlPaWQJCQl0 YWJsZXNwYWNlSWQ7CiAJVHVwbGVEZXNjCWRlc2NyaXB0b3I7CiAJTGlzdAkgICAqY29sTGlzdCA9 IE5JTDsKIAlPaWQJCQlyZWxhbUlkOwpAQCAtMjI3ODYsMTAgKzIyNzg3LDMyIEBAIGNyZWF0ZVBh cnRpdGlvblRhYmxlKExpc3QgKip3cXVldWUsIFJhbmdlVmFyICpuZXdQYXJ0TmFtZSwKIAkJCQll cnJtc2coImNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9m IHRlbXBvcmFyeSByZWxhdGlvbiBcIiVzXCIiLAogCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShwYXJlbnRfcmVsKSkpOwogCisJLyoKKwkgKiBTZWxlY3QgdGhlIHRhYmxlc3BhY2UgZm9y IHRoZSBuZXcgcGFydGl0aW9uLiAgTWlycm9yIHRoZSBsb2dpYyB0aGF0CisJICogQ1JFQVRFIFRB QkxFIGZvbyBQQVJUSVRJT04gT0YgLi4uIHVzZXMgaW4gRGVmaW5lUmVsYXRpb246IHRha2UgdGhl CisJICogcGFydGl0aW9uZWQgcGFyZW50J3MgZXhwbGljaXQgdGFibGVzcGFjZSBpZiBpdCBoYXMg b25lLCBvdGhlcndpc2UgdGFrZQorCSAqIGRlZmF1bHRfdGFibGVzcGFjZSBpbnRvIGFjY291bnQs IGFuZCBmaW5hbGx5IHVzZSB0aGUgZGF0YWJhc2UgZGVmYXVsdC4KKwkgKi8KKwl0YWJsZXNwYWNl SWQgPSBwYXJlbnRfcmVsZm9ybS0+cmVsdGFibGVzcGFjZTsKKwlpZiAoIU9pZElzVmFsaWQodGFi bGVzcGFjZUlkKSkKKwkJdGFibGVzcGFjZUlkID0gR2V0RGVmYXVsdFRhYmxlc3BhY2UobmV3UGFy dE5hbWUtPnJlbHBlcnNpc3RlbmNlLCBmYWxzZSk7CisKKwkvKiBDaGVjayBwZXJtaXNzaW9ucyBl eGNlcHQgd2hlbiB1c2luZyBkYXRhYmFzZSdzIGRlZmF1bHQgKi8KKwlpZiAoT2lkSXNWYWxpZCh0 YWJsZXNwYWNlSWQpICYmIHRhYmxlc3BhY2VJZCAhPSBNeURhdGFiYXNlVGFibGVTcGFjZSkKKwl7 CisJCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisKKwkJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNr KFRhYmxlU3BhY2VSZWxhdGlvbklkLCB0YWJsZXNwYWNlSWQsCisJCQkJCQkJCQlHZXRVc2VySWQo KSwgQUNMX0NSRUFURSk7CisJCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCQlhY2xj aGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9UQUJMRVNQQUNFLAorCQkJCQkJICAgZ2V0X3Rh Ymxlc3BhY2VfbmFtZSh0YWJsZXNwYWNlSWQpKTsKKwl9CisKIAkvKiBDcmVhdGUgdGhlIHJlbGF0 aW9uLiAqLwogCW5ld1JlbElkID0gaGVhcF9jcmVhdGVfd2l0aF9jYXRhbG9nKG5ld1BhcnROYW1l LT5yZWxuYW1lLAogCQkJCQkJCQkJCW5hbWVzcGFjZUlkLAotCQkJCQkJCQkJCXBhcmVudF9yZWxm b3JtLT5yZWx0YWJsZXNwYWNlLAorCQkJCQkJCQkJCXRhYmxlc3BhY2VJZCwKIAkJCQkJCQkJCQlJ bnZhbGlkT2lkLAogCQkJCQkJCQkJCUludmFsaWRPaWQsCiAJCQkJCQkJCQkJSW52YWxpZE9pZCwK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dAppbmRleCA0 ZjQyYWZjM2RjNy4uNDU4NmIyNWVmZTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BhcnRpdGlvbl9tZXJnZS5vdXQKQEAgLTExMTQsNiArMTExNCw1NCBAQCBTRUxFQ1QgbGVuZ3Ro KGEpIEZST00gdDsKICAgMTAwMDAKICgxIHJvdykKIAorRFJPUCBUQUJMRSB0OworLS0gVGFibGVz cGFjZSBzZWxlY3Rpb24gZm9yIHRoZSBuZXcgbWVyZ2VkIHBhcnRpdGlvbiBtaXJyb3JzCistLSBD UkVBVEUgVEFCTEUgLi4uIFBBUlRJVElPTiBPRjogdGhlIHBhcnRpdGlvbmVkIHJvb3QncyBleHBs aWNpdAorLS0gdGFibGVzcGFjZSB3aW5zOyBvdGhlcndpc2UgZGVmYXVsdF90YWJsZXNwYWNlIGFw cGxpZXM7IG90aGVyd2lzZSB0aGUKKy0tIGRhdGFiYXNlIGRlZmF1bHQgaXMgdXNlZC4KK0NSRUFU RSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGkpIFRBQkxFU1BBQ0UgcmVncmVz c190YmxzcGFjZTsKK0NSRUFURSBUQUJMRSB0cF8wXzUgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoNSk7CitDUkVBVEUgVEFCTEUgdHBfNV8xMCBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDUpIFRPICgxMCk7CitJTlNFUlQgSU5UTyB0IFNFTEVDVCBnZW5lcmF0 ZV9zZXJpZXMoMCwgOSk7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfNSwg dHBfNV8xMCkgSU5UTyB0cF9tZXJnZWQ7CitTRUxFQ1Qgc3BjbmFtZSBGUk9NIHBnX2NsYXNzIGMg TEVGVCBKT0lOIHBnX3RhYmxlc3BhY2UgcworICBPTiBjLnJlbHRhYmxlc3BhY2UgPSBzLm9pZCBX SEVSRSBjLnJlbG5hbWUgPSAndHBfbWVyZ2VkJzsKKyAgICAgc3BjbmFtZSAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tCisgcmVncmVzc190YmxzcGFjZQorKDEgcm93KQorCitEUk9QIFRBQkxFIHQ7 CistLSBQYXJlbnQgaGFzIG5vIGV4cGxpY2l0IHRhYmxlc3BhY2UsIGJ1dCBkZWZhdWx0X3RhYmxl c3BhY2UgaXMgc2V0OiB0aGUKKy0tIG5ldyBwYXJ0aXRpb24gbGFuZHMgb24gZGVmYXVsdF90YWJs ZXNwYWNlLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoaSk7CitD UkVBVEUgVEFCTEUgdHBfMF81IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDUpOworQ1JFQVRFIFRBQkxFIHRwXzVfMTAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9N ICg1KSBUTyAoMTApOworSU5TRVJUIElOVE8gdCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDAsIDkp OworU0VUIGRlZmF1bHRfdGFibGVzcGFjZSBUTyByZWdyZXNzX3RibHNwYWNlOworQUxURVIgVEFC TEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzUsIHRwXzVfMTApIElOVE8gdHBfbWVyZ2VkOwor UkVTRVQgZGVmYXVsdF90YWJsZXNwYWNlOworU0VMRUNUIHNwY25hbWUgRlJPTSBwZ19jbGFzcyBj IExFRlQgSk9JTiBwZ190YWJsZXNwYWNlIHMKKyAgT04gYy5yZWx0YWJsZXNwYWNlID0gcy5vaWQg V0hFUkUgYy5yZWxuYW1lID0gJ3RwX21lcmdlZCc7CisgICAgIHNwY25hbWUgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGJsc3BhY2UKKygxIHJvdykKKworRFJPUCBUQUJMRSB0 OworLS0gUGFyZW50IGhhcyBubyBleHBsaWNpdCB0YWJsZXNwYWNlIGFuZCBkZWZhdWx0X3RhYmxl c3BhY2UgaXMgZW1wdHk6IHRoZQorLS0gbmV3IHBhcnRpdGlvbiB1c2VzIHRoZSBkYXRhYmFzZSBk ZWZhdWx0IChyZWx0YWJsZXNwYWNlID0gMCkuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJ VElPTiBCWSBSQU5HRShpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzUgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoNSk7CitDUkVBVEUgVEFCTEUgdHBfNV8xMCBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDUpIFRPICgxMCk7CitJTlNFUlQgSU5UTyB0IFNFTEVDVCBn ZW5lcmF0ZV9zZXJpZXMoMCwgOSk7CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRw XzBfNSwgdHBfNV8xMCkgSU5UTyB0cF9tZXJnZWQ7CitTRUxFQ1QgcmVsdGFibGVzcGFjZSBGUk9N IHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAndHBfbWVyZ2VkJzsKKyByZWx0YWJsZXNwYWNlIAor LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMAorKDEgcm93KQorCiBEUk9QIFRBQkxFIHQ7 CiBSRVNFVCBzZWFyY2hfcGF0aDsKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bh cnRpdGlvbl9zcGxpdC5vdXQKaW5kZXggZmFhZjMyZWQyMGEuLmIxZGY4MjBhMTc3IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CkBAIC0xNjgzLDYg KzE2ODMsNjYgQEAgU0VMRUNUIGxlbmd0aChhKSBGUk9NIHQ7CiAgIDEwMDAwCiAoMSByb3cpCiAK K0RST1AgVEFCTEUgdDsKKy0tIFRhYmxlc3BhY2Ugc2VsZWN0aW9uIGZvciB0aGUgbmV3IHBhcnRp dGlvbnMgbWlycm9ycworLS0gQ1JFQVRFIFRBQkxFIC4uLiBQQVJUSVRJT04gT0Y6IHRoZSBwYXJ0 aXRpb25lZCByb290J3MgZXhwbGljaXQKKy0tIHRhYmxlc3BhY2Ugd2luczsgb3RoZXJ3aXNlIGRl ZmF1bHRfdGFibGVzcGFjZSBhcHBsaWVzOyBvdGhlcndpc2UgdGhlCistLSBkYXRhYmFzZSBkZWZh dWx0IGlzIHVzZWQuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRShp KSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfYWxsIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKK0lOU0VSVCBJTlRPIHQgU0VM RUNUIGdlbmVyYXRlX3NlcmllcygwLCA5KTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9O IHRwX2FsbCBJTlRPICgKKyAgICBQQVJUSVRJT04gdHBfbG8gRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoNSksCisgICAgUEFSVElUSU9OIHRwX2hpIEZPUiBWQUxVRVMgRlJPTSAoNSkgVE8gKDEwKQor KTsKK1NFTEVDVCBjLnJlbG5hbWUsIHMuc3BjbmFtZSBGUk9NIHBnX2NsYXNzIGMgTEVGVCBKT0lO IHBnX3RhYmxlc3BhY2UgcworICBPTiBjLnJlbHRhYmxlc3BhY2UgPSBzLm9pZCBXSEVSRSBjLnJl bG5hbWUgSU4gKCd0cF9sbycsICd0cF9oaScpCisgIE9SREVSIEJZIGMucmVsbmFtZTsKKyByZWxu YW1lIHwgICAgIHNwY25hbWUgICAgICAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0 cF9oaSAgIHwgcmVncmVzc190YmxzcGFjZQorIHRwX2xvICAgfCByZWdyZXNzX3RibHNwYWNlCiso MiByb3dzKQorCitEUk9QIFRBQkxFIHQ7CistLSBQYXJlbnQgaGFzIG5vIGV4cGxpY2l0IHRhYmxl c3BhY2UsIGJ1dCBkZWZhdWx0X3RhYmxlc3BhY2UgaXMgc2V0OiB0aGUKKy0tIG5ldyBwYXJ0aXRp b25zIGxhbmQgb24gZGVmYXVsdF90YWJsZXNwYWNlLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQ QVJUSVRJT04gQlkgUkFOR0UoaSk7CitDUkVBVEUgVEFCTEUgdHBfYWxsIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKK0lOU0VSVCBJTlRPIHQgU0VMRUNUIGdlbmVy YXRlX3NlcmllcygwLCA5KTsKK1NFVCBkZWZhdWx0X3RhYmxlc3BhY2UgVE8gcmVncmVzc190Ymxz cGFjZTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwX2FsbCBJTlRPICgKKyAgICBQ QVJUSVRJT04gdHBfbG8gRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoNSksCisgICAgUEFSVElUSU9O IHRwX2hpIEZPUiBWQUxVRVMgRlJPTSAoNSkgVE8gKDEwKQorKTsKK1JFU0VUIGRlZmF1bHRfdGFi bGVzcGFjZTsKK1NFTEVDVCBjLnJlbG5hbWUsIHMuc3BjbmFtZSBGUk9NIHBnX2NsYXNzIGMgTEVG VCBKT0lOIHBnX3RhYmxlc3BhY2UgcworICBPTiBjLnJlbHRhYmxlc3BhY2UgPSBzLm9pZCBXSEVS RSBjLnJlbG5hbWUgSU4gKCd0cF9sbycsICd0cF9oaScpCisgIE9SREVSIEJZIGMucmVsbmFtZTsK KyByZWxuYW1lIHwgICAgIHNwY25hbWUgICAgICAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0KKyB0cF9oaSAgIHwgcmVncmVzc190YmxzcGFjZQorIHRwX2xvICAgfCByZWdyZXNzX3RibHNw YWNlCisoMiByb3dzKQorCitEUk9QIFRBQkxFIHQ7CistLSBQYXJlbnQgaGFzIG5vIGV4cGxpY2l0 IHRhYmxlc3BhY2UgYW5kIGRlZmF1bHRfdGFibGVzcGFjZSBpcyBlbXB0eTogbmV3CistLSBwYXJ0 aXRpb25zIHVzZSB0aGUgZGF0YWJhc2UgZGVmYXVsdCAocmVsdGFibGVzcGFjZSA9IDApLgorQ1JF QVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoaSk7CitDUkVBVEUgVEFCTEUg dHBfYWxsIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKK0lOU0VS VCBJTlRPIHQgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygwLCA5KTsKK0FMVEVSIFRBQkxFIHQgU1BM SVQgUEFSVElUSU9OIHRwX2FsbCBJTlRPICgKKyAgICBQQVJUSVRJT04gdHBfbG8gRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoNSksCisgICAgUEFSVElUSU9OIHRwX2hpIEZPUiBWQUxVRVMgRlJPTSAo NSkgVE8gKDEwKQorKTsKK1NFTEVDVCByZWxuYW1lLCByZWx0YWJsZXNwYWNlIEZST00gcGdfY2xh c3MKKyAgV0hFUkUgcmVsbmFtZSBJTiAoJ3RwX2xvJywgJ3RwX2hpJykgT1JERVIgQlkgcmVsbmFt ZTsKKyByZWxuYW1lIHwgcmVsdGFibGVzcGFjZSAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0K KyB0cF9oaSAgIHwgICAgICAgICAgICAgMAorIHRwX2xvICAgfCAgICAgICAgICAgICAwCisoMiBy b3dzKQorCiBEUk9QIFRBQkxFIHQ7CiBSRVNFVCBzZWFyY2hfcGF0aDsKIC0tCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbAppbmRleCA0YzhjNjI1Zjk3Yi4uZDMxY2UxM2Rm ZjcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbApAQCAtNzk4LDYg Kzc5OCw0MiBAQCBTRUxFQ1QgcmVsdG9hc3RyZWxpZCA8PiAwIEFTIGhhc190b2FzdCwKIFNFTEVD VCBsZW5ndGgoYSkgRlJPTSB0OwogRFJPUCBUQUJMRSB0OwogCistLSBUYWJsZXNwYWNlIHNlbGVj dGlvbiBmb3IgdGhlIG5ldyBtZXJnZWQgcGFydGl0aW9uIG1pcnJvcnMKKy0tIENSRUFURSBUQUJM RSAuLi4gUEFSVElUSU9OIE9GOiB0aGUgcGFydGl0aW9uZWQgcm9vdCdzIGV4cGxpY2l0CistLSB0 YWJsZXNwYWNlIHdpbnM7IG90aGVyd2lzZSBkZWZhdWx0X3RhYmxlc3BhY2UgYXBwbGllczsgb3Ro ZXJ3aXNlIHRoZQorLS0gZGF0YWJhc2UgZGVmYXVsdCBpcyB1c2VkLgorQ1JFQVRFIFRBQkxFIHQg KGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoaSkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNl OworQ1JFQVRFIFRBQkxFIHRwXzBfNSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICg1KTsKK0NSRUFURSBUQUJMRSB0cF81XzEwIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMg RlJPTSAoNSkgVE8gKDEwKTsKK0lOU0VSVCBJTlRPIHQgU0VMRUNUIGdlbmVyYXRlX3Nlcmllcygw LCA5KTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF81LCB0cF81XzEwKSBJ TlRPIHRwX21lcmdlZDsKK1NFTEVDVCBzcGNuYW1lIEZST00gcGdfY2xhc3MgYyBMRUZUIEpPSU4g cGdfdGFibGVzcGFjZSBzCisgIE9OIGMucmVsdGFibGVzcGFjZSA9IHMub2lkIFdIRVJFIGMucmVs bmFtZSA9ICd0cF9tZXJnZWQnOworRFJPUCBUQUJMRSB0OworCistLSBQYXJlbnQgaGFzIG5vIGV4 cGxpY2l0IHRhYmxlc3BhY2UsIGJ1dCBkZWZhdWx0X3RhYmxlc3BhY2UgaXMgc2V0OiB0aGUKKy0t IG5ldyBwYXJ0aXRpb24gbGFuZHMgb24gZGVmYXVsdF90YWJsZXNwYWNlLgorQ1JFQVRFIFRBQkxF IHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF81IFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpOworQ1JFQVRFIFRBQkxFIHRw XzVfMTAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTApOworSU5TRVJU IElOVE8gdCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDAsIDkpOworU0VUIGRlZmF1bHRfdGFibGVz cGFjZSBUTyByZWdyZXNzX3RibHNwYWNlOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05T ICh0cF8wXzUsIHRwXzVfMTApIElOVE8gdHBfbWVyZ2VkOworUkVTRVQgZGVmYXVsdF90YWJsZXNw YWNlOworU0VMRUNUIHNwY25hbWUgRlJPTSBwZ19jbGFzcyBjIExFRlQgSk9JTiBwZ190YWJsZXNw YWNlIHMKKyAgT04gYy5yZWx0YWJsZXNwYWNlID0gcy5vaWQgV0hFUkUgYy5yZWxuYW1lID0gJ3Rw X21lcmdlZCc7CitEUk9QIFRBQkxFIHQ7CisKKy0tIFBhcmVudCBoYXMgbm8gZXhwbGljaXQgdGFi bGVzcGFjZSBhbmQgZGVmYXVsdF90YWJsZXNwYWNlIGlzIGVtcHR5OiB0aGUKKy0tIG5ldyBwYXJ0 aXRpb24gdXNlcyB0aGUgZGF0YWJhc2UgZGVmYXVsdCAocmVsdGFibGVzcGFjZSA9IDApLgorQ1JF QVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoaSk7CitDUkVBVEUgVEFCTEUg dHBfMF81IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpOworQ1JFQVRF IFRBQkxFIHRwXzVfMTAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTAp OworSU5TRVJUIElOVE8gdCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDAsIDkpOworQUxURVIgVEFC TEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzUsIHRwXzVfMTApIElOVE8gdHBfbWVyZ2VkOwor U0VMRUNUIHJlbHRhYmxlc3BhY2UgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3RwX21l cmdlZCc7CitEUk9QIFRBQkxFIHQ7CisKIAogUkVTRVQgc2VhcmNoX3BhdGg7CiAKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCmluZGV4IDllNDRhYTljYWYwLi5hMzliZTUz ZDNlMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNx bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCkBAIC0xMjA0 LDYgKzEyMDQsNTEgQEAgU0VMRUNUIHJlbG5hbWUsCiBTRUxFQ1QgbGVuZ3RoKGEpIEZST00gdDsK IERST1AgVEFCTEUgdDsKIAorLS0gVGFibGVzcGFjZSBzZWxlY3Rpb24gZm9yIHRoZSBuZXcgcGFy dGl0aW9ucyBtaXJyb3JzCistLSBDUkVBVEUgVEFCTEUgLi4uIFBBUlRJVElPTiBPRjogdGhlIHBh cnRpdGlvbmVkIHJvb3QncyBleHBsaWNpdAorLS0gdGFibGVzcGFjZSB3aW5zOyBvdGhlcndpc2Ug ZGVmYXVsdF90YWJsZXNwYWNlIGFwcGxpZXM7IG90aGVyd2lzZSB0aGUKKy0tIGRhdGFiYXNlIGRl ZmF1bHQgaXMgdXNlZC4KK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdF KGkpIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK0NSRUFURSBUQUJMRSB0cF9hbGwgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApOworSU5TRVJUIElOVE8gdCBT RUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDAsIDkpOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJ T04gdHBfYWxsIElOVE8gKAorICAgIFBBUlRJVElPTiB0cF9sbyBGT1IgVkFMVUVTIEZST00gKDAp IFRPICg1KSwKKyAgICBQQVJUSVRJT04gdHBfaGkgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTAp CispOworU0VMRUNUIGMucmVsbmFtZSwgcy5zcGNuYW1lIEZST00gcGdfY2xhc3MgYyBMRUZUIEpP SU4gcGdfdGFibGVzcGFjZSBzCisgIE9OIGMucmVsdGFibGVzcGFjZSA9IHMub2lkIFdIRVJFIGMu cmVsbmFtZSBJTiAoJ3RwX2xvJywgJ3RwX2hpJykKKyAgT1JERVIgQlkgYy5yZWxuYW1lOworRFJP UCBUQUJMRSB0OworCistLSBQYXJlbnQgaGFzIG5vIGV4cGxpY2l0IHRhYmxlc3BhY2UsIGJ1dCBk ZWZhdWx0X3RhYmxlc3BhY2UgaXMgc2V0OiB0aGUKKy0tIG5ldyBwYXJ0aXRpb25zIGxhbmQgb24g ZGVmYXVsdF90YWJsZXNwYWNlLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkg UkFOR0UoaSk7CitDUkVBVEUgVEFCTEUgdHBfYWxsIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEwKTsKK0lOU0VSVCBJTlRPIHQgU0VMRUNUIGdlbmVyYXRlX3Nlcmllcygw LCA5KTsKK1NFVCBkZWZhdWx0X3RhYmxlc3BhY2UgVE8gcmVncmVzc190YmxzcGFjZTsKK0FMVEVS IFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwX2FsbCBJTlRPICgKKyAgICBQQVJUSVRJT04gdHBf bG8gRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoNSksCisgICAgUEFSVElUSU9OIHRwX2hpIEZPUiBW QUxVRVMgRlJPTSAoNSkgVE8gKDEwKQorKTsKK1JFU0VUIGRlZmF1bHRfdGFibGVzcGFjZTsKK1NF TEVDVCBjLnJlbG5hbWUsIHMuc3BjbmFtZSBGUk9NIHBnX2NsYXNzIGMgTEVGVCBKT0lOIHBnX3Rh Ymxlc3BhY2UgcworICBPTiBjLnJlbHRhYmxlc3BhY2UgPSBzLm9pZCBXSEVSRSBjLnJlbG5hbWUg SU4gKCd0cF9sbycsICd0cF9oaScpCisgIE9SREVSIEJZIGMucmVsbmFtZTsKK0RST1AgVEFCTEUg dDsKKworLS0gUGFyZW50IGhhcyBubyBleHBsaWNpdCB0YWJsZXNwYWNlIGFuZCBkZWZhdWx0X3Rh Ymxlc3BhY2UgaXMgZW1wdHk6IG5ldworLS0gcGFydGl0aW9ucyB1c2UgdGhlIGRhdGFiYXNlIGRl ZmF1bHQgKHJlbHRhYmxlc3BhY2UgPSAwKS4KK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElU SU9OIEJZIFJBTkdFKGkpOworQ1JFQVRFIFRBQkxFIHRwX2FsbCBQQVJUSVRJT04gT0YgdCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxMCk7CitJTlNFUlQgSU5UTyB0IFNFTEVDVCBnZW5lcmF0ZV9z ZXJpZXMoMCwgOSk7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF9hbGwgSU5UTyAo CisgICAgUEFSVElUSU9OIHRwX2xvIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpLAorICAgIFBB UlRJVElPTiB0cF9oaSBGT1IgVkFMVUVTIEZST00gKDUpIFRPICgxMCkKKyk7CitTRUxFQ1QgcmVs bmFtZSwgcmVsdGFibGVzcGFjZSBGUk9NIHBnX2NsYXNzCisgIFdIRVJFIHJlbG5hbWUgSU4gKCd0 cF9sbycsICd0cF9oaScpIE9SREVSIEJZIHJlbG5hbWU7CitEUk9QIFRBQkxFIHQ7CisKIFJFU0VU IHNlYXJjaF9wYXRoOwogCiAtLQotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --0000000000008a5d300654c26dcc--