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 1sP0o2-002S8P-RM for pgsql-hackers@arkaria.postgresql.org; Wed, 03 Jul 2024 14:17:58 +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 1sP0o0-009aFX-RS for pgsql-hackers@arkaria.postgresql.org; Wed, 03 Jul 2024 14:17:57 +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 1sP0o0-009aFP-Cq for pgsql-hackers@lists.postgresql.org; Wed, 03 Jul 2024 14:17:57 +0000 Received: from mail-qk1-x736.google.com ([2607:f8b0:4864:20::736]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sP0ny-000DEz-5k for pgsql-hackers@postgresql.org; Wed, 03 Jul 2024 14:17:55 +0000 Received: by mail-qk1-x736.google.com with SMTP id af79cd13be357-79c0f6b9032so40583385a.2 for ; Wed, 03 Jul 2024 07:17:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1720016273; x=1720621073; darn=postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=Ca8wHIO65iGUloOb4+lhAsSMFNjwII9pIWnS/aqEqaA=; b=aRj2NEAz/JbLT4hDl7b2AXcLU0rb98BuMnX9Nlr0VU4dO7yQSIE8PL7r0l2lwnuemK 2vrqQ7rTVW1ZKzWOUkCnw/z12CWUDKFxQaid8jfEaF+VPA2EE/FOkV+3lyFDZ0CDaOlD W/td/30nw+vcO/LKvXip6fkWQzDw0XsL+kSIEFXAE75KlSbWw0OGA+m1Q8Z/weyB6cjh WQ0bHnu1sTryjOteXzk36X/pXEamidlqHAii7w8Hp2WJFWnuACooQ8h4BdDCWB2rTgwI aXiGNJcOEqILyBQw3eE5SBeIfmy4GpZT19PBLx7VRDgiAqLSxbDXZxzA/7XkBXlGKW9f e2FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720016273; x=1720621073; h=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=Ca8wHIO65iGUloOb4+lhAsSMFNjwII9pIWnS/aqEqaA=; b=Hw+CFcRW5FPJ2tvJuE/tJC2yob85deXsN4RxhMpn4rt6kNql6ZjR/HrGQVXEGUIE7R 1wsR3j5Ox7oOHH3x/tSFDDdqYDijO3viCOyqniIRDmy+vKqhAvTPVwAX2NNcVpIsH1c1 LOO8x0vL7AwZxu1RgElInhYIT1vq90czVXoZU8q2V42QbXdZySaRcQ4sTCPipM2modZd mjG/bHkPlT2r85IP5oXRglhUTaSKo71+9x89YlWdnYu3EtF6d09Y8uwDdrmkN8GCSWet 5bC0nk2rNX8SM7Rg1kmlaXZtp+Qzf2AgcZ67Xgl8YNzwfLSm4UQ9KWoJke5olDLuAiMl xkSQ== X-Gm-Message-State: AOJu0YyHNAiucH9XDsYy2gWvYHbUvX5etIuGDQUjCcHKC5JKpemgM/DN e9Z/zZ6fcpweXhYyiR+BQWIKDHe+3GmvWCBZIStQCPffZLqoOcTYwzZsCYN1DSaF+WbBj7Svb2c tb49kxFSyoREXoEQk6dX8843xuwWIbinG X-Google-Smtp-Source: AGHT+IFTuN4UXw0uP2jhGhX6gfZjcdplKCj3BA1llLWnno5Oj8c+OdFNROfcSU2y04xXOBlmHHg4WaLrYzXa1caZZU8= X-Received: by 2002:a05:6214:2265:b0:6b5:de38:d6ee with SMTP id 6a1803df08f44-6b5de38dde1mr31796176d6.3.1720016270874; Wed, 03 Jul 2024 07:17:50 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Marat Buharov Date: Wed, 3 Jul 2024 17:17:39 +0300 Message-ID: Subject: Re: [PATCH] Add min/max aggregate functions to BYTEA To: pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="000000000000d598a9061c587e60" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d598a9061c587e60 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable V2 patch with fixed tests -- With best regards, Marat Bukharov =D1=81=D1=80, 3 =D0=B8=D1=8E=D0=BB. 2024=E2=80=AF=D0=B3. =D0=B2 16:03, Mara= t Buharov : > > Hello. BYTEA type has the ability to use comparison operations. But it > is absent of min/max aggregate functions. They are nice to have to > provide consistency with the TEXT type. > > > -- > > With best regards, > Marat Bukharov --000000000000d598a9061c587e60 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-add-bytea-agg-funcs.patch" Content-Disposition: attachment; filename="v2-0001-add-bytea-agg-funcs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ly5x9n7m0 RnJvbSBmNjg5NWZkNjE2OTZmNjViZGY3YTFiN2UyNTA4MjI4NDY4YWE1Y2FmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJhdCBCdWtoYXJvdiA8bWFyYXRpa0B5YW5kZXgtdGVhbS5y dT4KRGF0ZTogV2VkLCAzIEp1bCAyMDI0IDE3OjExOjExICswMzAwClN1YmplY3Q6IFtQQVRDSCB2 Ml0gYWRkIGJ5dGVhIGFnZyBmdW5jcwoKLS0tCiBkb2Mvc3JjL3NnbWwvZnVuYy5zZ21sICAgICAg ICAgICAgICAgICAgIHwgIDQgKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jICAg ICAgICAgIHwgMzggKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2FnZ3JlZ2F0ZS5kYXQgICAgIHwgIDYgKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdCAgICAgICAgICB8IDEzICsrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2FnZ3JlZ2F0ZXMub3V0IHwgMTQgKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L29wcl9zYW5pdHkub3V0IHwgIDIgKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0ZXMu c3FsICAgICAgfCAgNSArKystCiA3IGZpbGVzIGNoYW5nZWQsIDc4IGluc2VydGlvbnMoKyksIDQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9z cmMvc2dtbC9mdW5jLnNnbWwKaW5kZXggZjFmMjJhMTk2MC4uODkxZjdhNDI1OSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBA IC0yMTk3Niw3ICsyMTk3Niw3IEBAIFNFTEVDVCBOVUxMSUYodmFsdWUsICcobm9uZSknKSAuLi4K ICAgICAgICA8cGFyYT4KICAgICAgICAgQ29tcHV0ZXMgdGhlIG1heGltdW0gb2YgdGhlIG5vbi1u dWxsIGlucHV0CiAgICAgICAgIHZhbHVlcy4gIEF2YWlsYWJsZSBmb3IgYW55IG51bWVyaWMsIHN0 cmluZywgZGF0ZS90aW1lLCBvciBlbnVtIHR5cGUsCi0gICAgICAgIGFzIHdlbGwgYXMgPHR5cGU+ aW5ldDwvdHlwZT4sIDx0eXBlPmludGVydmFsPC90eXBlPiwKKyAgICAgICAgYXMgd2VsbCBhcyA8 dHlwZT5ieXRlYTwvdHlwZT4sIDx0eXBlPmluZXQ8L3R5cGU+LCA8dHlwZT5pbnRlcnZhbDwvdHlw ZT4sCiAgICAgICAgIDx0eXBlPm1vbmV5PC90eXBlPiwgPHR5cGU+b2lkPC90eXBlPiwgPHR5cGU+ cGdfbHNuPC90eXBlPiwKICAgICAgICAgPHR5cGU+dGlkPC90eXBlPiwgPHR5cGU+eGlkODwvdHlw ZT4sCiAgICAgICAgIGFuZCBhcnJheXMgb2YgYW55IG9mIHRoZXNlIHR5cGVzLgpAQCAtMjE5OTUs NyArMjE5OTUsNyBAQCBTRUxFQ1QgTlVMTElGKHZhbHVlLCAnKG5vbmUpJykgLi4uCiAgICAgICAg PHBhcmE+CiAgICAgICAgIENvbXB1dGVzIHRoZSBtaW5pbXVtIG9mIHRoZSBub24tbnVsbCBpbnB1 dAogICAgICAgICB2YWx1ZXMuICBBdmFpbGFibGUgZm9yIGFueSBudW1lcmljLCBzdHJpbmcsIGRh dGUvdGltZSwgb3IgZW51bSB0eXBlLAotICAgICAgICBhcyB3ZWxsIGFzIDx0eXBlPmluZXQ8L3R5 cGU+LCA8dHlwZT5pbnRlcnZhbDwvdHlwZT4sCisgICAgICAgIGFzIHdlbGwgYXMgPHR5cGU+Ynl0 ZWE8L3R5cGU+LCA8dHlwZT5pbmV0PC90eXBlPiwgPHR5cGU+aW50ZXJ2YWw8L3R5cGU+LAogICAg ICAgICA8dHlwZT5tb25leTwvdHlwZT4sIDx0eXBlPm9pZDwvdHlwZT4sIDx0eXBlPnBnX2xzbjwv dHlwZT4sCiAgICAgICAgIDx0eXBlPnRpZDwvdHlwZT4sIDx0eXBlPnhpZDg8L3R5cGU+LAogICAg ICAgICBhbmQgYXJyYXlzIG9mIGFueSBvZiB0aGVzZSB0eXBlcy4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVu YS5jCmluZGV4IGQyZTJlOWJiYmEuLjQwOGZmZjBhZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC92YXJsZW5hLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEu YwpAQCAtMzk1Niw2ICszOTU2LDQ0IEBAIGJ5dGVhY21wKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdf UkVUVVJOX0lOVDMyKGNtcCk7CiB9CiAKK0RhdHVtCitieXRlYV9sYXJnZXIoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlieXRlYQkgICAqYXJnMSA9IFBHX0dFVEFSR19CWVRFQV9QUCgwKTsKKwlieXRl YQkgICAqYXJnMiA9IFBHX0dFVEFSR19CWVRFQV9QUCgxKTsKKwlieXRlYQkgICAqcmVzdWx0Owor CWludAkJCWxlbjEsCisJCQkJbGVuMjsKKwlpbnQJCQljbXA7CisKKwlsZW4xID0gVkFSU0laRV9B TllfRVhIRFIoYXJnMSk7CisJbGVuMiA9IFZBUlNJWkVfQU5ZX0VYSERSKGFyZzIpOworCisJY21w ID0gbWVtY21wKFZBUkRBVEFfQU5ZKGFyZzEpLCBWQVJEQVRBX0FOWShhcmcyKSwgTWluKGxlbjEs IGxlbjIpKTsKKwlyZXN1bHQgPSAoKGNtcCA+IDApIHx8ICgoY21wID09IDApICYmIChsZW4xID49 IGxlbjIpKSA/IGFyZzEgOiBhcmcyKTsKKworCVBHX1JFVFVSTl9CWVRFQV9QKHJlc3VsdCk7Cit9 CisKK0RhdHVtCitieXRlYV9zbWFsbGVyKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJYnl0ZWEJICAg KmFyZzEgPSBQR19HRVRBUkdfVEVYVF9QUCgwKTsKKwlieXRlYQkgICAqYXJnMiA9IFBHX0dFVEFS R19URVhUX1BQKDEpOworCWJ5dGVhCSAgICpyZXN1bHQ7CisJaW50CQkJbGVuMSwKKwkJCQlsZW4y OworCWludAkJCWNtcDsKKworCWxlbjEgPSBWQVJTSVpFX0FOWV9FWEhEUihhcmcxKTsKKwlsZW4y ID0gVkFSU0laRV9BTllfRVhIRFIoYXJnMik7CisKKwljbXAgPSBtZW1jbXAoVkFSREFUQV9BTlko YXJnMSksIFZBUkRBVEFfQU5ZKGFyZzIpLCBNaW4obGVuMSwgbGVuMikpOworCXJlc3VsdCA9ICgo Y21wIDwgMCkgfHwgKChjbXAgPT0gMCkgJiYgKGxlbjEgPD0gbGVuMikpID8gYXJnMSA6IGFyZzIp OworCisJUEdfUkVUVVJOX0JZVEVBX1AocmVzdWx0KTsKK30KKwogRGF0dW0KIGJ5dGVhX3NvcnRz dXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2FnZ3JlZ2F0ZS5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5k YXQKaW5kZXggNWYxMzUzMmFiYy4uOTcwZDlhNzBmZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19hZ2dyZWdhdGUuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYWdn cmVnYXRlLmRhdApAQCAtMTU4LDYgKzE1OCw5IEBACiB7IGFnZ2Zub2lkID0+ICdtYXgoeGlkOCkn LCBhZ2d0cmFuc2ZuID0+ICd4aWQ4X2xhcmdlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAneGlkOF9s YXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4oeGlkOCx4aWQ4KScsCiAgIGFnZ3RyYW5zdHlwZSA9PiAn eGlkOCcgfSwKK3sgYWdnZm5vaWQgPT4gJ21heChieXRlYSknLCBhZ2d0cmFuc2ZuID0+ICdieXRl YV9sYXJnZXInLAorICBhZ2djb21iaW5lZm4gPT4gJ2J5dGVhX2xhcmdlcicsIGFnZ3NvcnRvcCA9 PiAnPihieXRlYSxieXRlYSknLAorICBhZ2d0cmFuc3R5cGUgPT4gJ2J5dGVhJyB9LAogCiAjIG1p bgogeyBhZ2dmbm9pZCA9PiAnbWluKGludDgpJywgYWdndHJhbnNmbiA9PiAnaW50OHNtYWxsZXIn LApAQCAtMjI2LDYgKzIyOSw5IEBACiB7IGFnZ2Zub2lkID0+ICdtaW4oeGlkOCknLCBhZ2d0cmFu c2ZuID0+ICd4aWQ4X3NtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ3hpZDhfc21hbGxlcics IGFnZ3NvcnRvcCA9PiAnPCh4aWQ4LHhpZDgpJywKICAgYWdndHJhbnN0eXBlID0+ICd4aWQ4JyB9 LAoreyBhZ2dmbm9pZCA9PiAnbWluKGJ5dGVhKScsIGFnZ3RyYW5zZm4gPT4gJ2J5dGVhX3NtYWxs ZXInLAorICBhZ2djb21iaW5lZm4gPT4gJ2J5dGVhX3NtYWxsZXInLCBhZ2dzb3J0b3AgPT4gJzwo Ynl0ZWEsYnl0ZWEpJywKKyAgYWdndHJhbnN0eXBlID0+ICdieXRlYScgfSwKIAogIyBjb3VudAog eyBhZ2dmbm9pZCA9PiAnY291bnQoYW55KScsIGFnZ3RyYW5zZm4gPT4gJ2ludDhpbmNfYW55JywK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGQ0YWM1NzhhZTYuLmYxNmYxN2VmM2EgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMTI3OCw2ICsxMjc4LDEzIEBACiAgIHByb25hbWUgPT4g J3RleHRfc21hbGxlcicsIHByb2xlYWtwcm9vZiA9PiAndCcsIHByb3JldHR5cGUgPT4gJ3RleHQn LAogICBwcm9hcmd0eXBlcyA9PiAndGV4dCB0ZXh0JywgcHJvc3JjID0+ICd0ZXh0X3NtYWxsZXIn IH0sCiAKK3sgb2lkID0+ICc2MzQ3JywgZGVzY3IgPT4gJ2xhcmdlciBvZiB0d28nLAorICBwcm9u YW1lID0+ICdieXRlYV9sYXJnZXInLCBwcm9sZWFrcHJvb2YgPT4gJ3QnLCBwcm9yZXR0eXBlID0+ ICdieXRlYScsCisgIHByb2FyZ3R5cGVzID0+ICdieXRlYSBieXRlYScsIHByb3NyYyA9PiAnYnl0 ZWFfbGFyZ2VyJyB9LAoreyBvaWQgPT4gJzYzNDgnLCBkZXNjciA9PiAnc21hbGxlciBvZiB0d28n LAorICBwcm9uYW1lID0+ICdieXRlYV9zbWFsbGVyJywgcHJvbGVha3Byb29mID0+ICd0JywgcHJv cmV0dHlwZSA9PiAnYnl0ZWEnLAorICBwcm9hcmd0eXBlcyA9PiAnYnl0ZWEgYnl0ZWEnLCBwcm9z cmMgPT4gJ2J5dGVhX3NtYWxsZXInIH0sCisKIHsgb2lkID0+ICc0NjAnLCBkZXNjciA9PiAnSS9P JywKICAgcHJvbmFtZSA9PiAnaW50OGluJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5 cGVzID0+ICdjc3RyaW5nJywKICAgcHJvc3JjID0+ICdpbnQ4aW4nIH0sCkBAIC02NzY0LDYgKzY3 NzEsOSBAQAogeyBvaWQgPT4gJzUwOTknLCBkZXNjciA9PiAnbWF4aW11bSB2YWx1ZSBvZiBhbGwg eGlkOCBpbnB1dCB2YWx1ZXMnLAogICBwcm9uYW1lID0+ICdtYXgnLCBwcm9raW5kID0+ICdhJywg cHJvaXNzdHJpY3QgPT4gJ2YnLCBwcm9yZXR0eXBlID0+ICd4aWQ4JywKICAgcHJvYXJndHlwZXMg PT4gJ3hpZDgnLCBwcm9zcmMgPT4gJ2FnZ3JlZ2F0ZV9kdW1teScgfSwKK3sgb2lkID0+ICc2MzQ5 JywgZGVzY3IgPT4gJ21heGltdW0gdmFsdWUgb2YgYWxsIGJ5dGVhIGlucHV0IHZhbHVlcycsCisg IHByb25hbWUgPT4gJ21heCcsIHByb2tpbmQgPT4gJ2EnLCBwcm9pc3N0cmljdCA9PiAnZicsIHBy b3JldHR5cGUgPT4gJ2J5dGVhJywKKyAgcHJvYXJndHlwZXMgPT4gJ2J5dGVhJywgcHJvc3JjID0+ ICdhZ2dyZWdhdGVfZHVtbXknIH0sCiAKIHsgb2lkID0+ICcyMTMxJywgZGVzY3IgPT4gJ21pbmlt dW0gdmFsdWUgb2YgYWxsIGJpZ2ludCBpbnB1dCB2YWx1ZXMnLAogICBwcm9uYW1lID0+ICdtaW4n LCBwcm9raW5kID0+ICdhJywgcHJvaXNzdHJpY3QgPT4gJ2YnLCBwcm9yZXR0eXBlID0+ICdpbnQ4 JywKQEAgLTY4MzQsNiArNjg0NCw5IEBACiB7IG9pZCA9PiAnNTEwMCcsIGRlc2NyID0+ICdtaW5p bXVtIHZhbHVlIG9mIGFsbCB4aWQ4IGlucHV0IHZhbHVlcycsCiAgIHByb25hbWUgPT4gJ21pbics IHByb2tpbmQgPT4gJ2EnLCBwcm9pc3N0cmljdCA9PiAnZicsIHByb3JldHR5cGUgPT4gJ3hpZDgn LAogICBwcm9hcmd0eXBlcyA9PiAneGlkOCcsIHByb3NyYyA9PiAnYWdncmVnYXRlX2R1bW15JyB9 LAoreyBvaWQgPT4gJzYzNTAnLCBkZXNjciA9PiAnbWluaW11bSB2YWx1ZSBvZiBhbGwgYnl0ZWEg aW5wdXQgdmFsdWVzJywKKyAgcHJvbmFtZSA9PiAnbWluJywgcHJva2luZCA9PiAnYScsIHByb2lz c3RyaWN0ID0+ICdmJywgcHJvcmV0dHlwZSA9PiAnYnl0ZWEnLAorICBwcm9hcmd0eXBlcyA9PiAn Ynl0ZWEnLCBwcm9zcmMgPT4gJ2FnZ3JlZ2F0ZV9kdW1teScgfSwKIAogIyBjb3VudCBoYXMgdHdv IGZvcm1zOiBjb3VudChhbnkpIGFuZCBjb3VudCgqKQogeyBvaWQgPT4gJzIxNDcnLApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hZ2dyZWdhdGVzLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRlcy5vdXQKaW5kZXggMWMxY2E3NTczYS4uZGI3NDFk MGMzNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hZ2dyZWdhdGVzLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FnZ3JlZ2F0ZXMub3V0CkBAIC0xOTI1 LDcgKzE5MjUsNyBAQCBzZWxlY3Qgc3RyaW5nX2FnZyhkaXN0aW5jdCBmMTo6dGV4dCwgJywnIG9y ZGVyIGJ5IGYxOjp0ZXh0KSBmcm9tIHZhcmNoYXJfdGJsOyAgLQogIGEsYWIsYWJjZAogKDEgcm93 KQogCi0tLSBzdHJpbmdfYWdnIGJ5dGVhIHRlc3RzCistLSBzdHJpbmdfYWdnLCBtaW4sIG1heCBi eXRlYSB0ZXN0cwogY3JlYXRlIHRhYmxlIGJ5dGVhX3Rlc3RfdGFibGUodiBieXRlYSk7CiBzZWxl Y3Qgc3RyaW5nX2FnZyh2LCAnJykgZnJvbSBieXRlYV90ZXN0X3RhYmxlOwogIHN0cmluZ19hZ2cg CkBAIC0xOTU5LDYgKzE5NTksMTggQEAgc2VsZWN0IHN0cmluZ19hZ2codiwgZGVjb2RlKCdlZScs ICdoZXgnKSkgZnJvbSBieXRlYV90ZXN0X3RhYmxlOwogIFx4ZmZlZWFhCiAoMSByb3cpCiAKK3Nl bGVjdCBtaW4odikgZnJvbSBieXRlYV90ZXN0X3RhYmxlOworIG1pbiAgCistLS0tLS0KKyBceGFh CisoMSByb3cpCisKK3NlbGVjdCBtYXgodikgZnJvbSBieXRlYV90ZXN0X3RhYmxlOworIG1heCAg CistLS0tLS0KKyBceGZmCisoMSByb3cpCisKIGRyb3AgdGFibGUgYnl0ZWFfdGVzdF90YWJsZTsK IC0tIFRlc3QgcGFyYWxsZWwgc3RyaW5nX2FnZyBhbmQgYXJyYXlfYWdnCiBjcmVhdGUgdGFibGUg cGFnZ190ZXN0ICh4IGludCwgeSBpbnQpIHdpdGggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZik7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dAppbmRleCA5ZDA0N2IyMWI4 Li4wODdlMzQ5ODk0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9z YW5pdHkub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQK QEAgLTg3NCw2ICs4NzQsOCBAQCB4aWQ4bmUoeGlkOCx4aWQ4KQogeGlkOGNtcCh4aWQ4LHhpZDgp CiB1dWlkX2V4dHJhY3RfdGltZXN0YW1wKHV1aWQpCiB1dWlkX2V4dHJhY3RfdmVyc2lvbih1dWlk KQorYnl0ZWFfbGFyZ2VyKGJ5dGVhLGJ5dGVhKQorYnl0ZWFfc21hbGxlcihieXRlYSxieXRlYSkK IC0tIHJlc3RvcmUgbm9ybWFsIG91dHB1dCBtb2RlCiBcYVx0CiAtLSBMaXN0IG9mIGZ1bmN0aW9u cyB1c2VkIGJ5IGxpYnBxJ3MgZmUtbG9iai5jCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9hZ2dyZWdhdGVzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0ZXMuc3Fs CmluZGV4IDFhMThjYTNkOGYuLjFmNDM4ZGJmNzkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2FnZ3JlZ2F0ZXMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0 ZXMuc3FsCkBAIC03NDEsNyArNzQxLDcgQEAgc2VsZWN0IHN0cmluZ19hZ2coZGlzdGluY3QgZjE6 OnRleHQsICcsJyBvcmRlciBieSBmMSkgZnJvbSB2YXJjaGFyX3RibDsgIC0tIG5vdAogc2VsZWN0 IHN0cmluZ19hZ2coZGlzdGluY3QgZjEsICcsJyBvcmRlciBieSBmMTo6dGV4dCkgZnJvbSB2YXJj aGFyX3RibDsgIC0tIG5vdCBvawogc2VsZWN0IHN0cmluZ19hZ2coZGlzdGluY3QgZjE6OnRleHQs ICcsJyBvcmRlciBieSBmMTo6dGV4dCkgZnJvbSB2YXJjaGFyX3RibDsgIC0tIG9rCiAKLS0tIHN0 cmluZ19hZ2cgYnl0ZWEgdGVzdHMKKy0tIHN0cmluZ19hZ2csIG1pbiwgbWF4IGJ5dGVhIHRlc3Rz CiBjcmVhdGUgdGFibGUgYnl0ZWFfdGVzdF90YWJsZSh2IGJ5dGVhKTsKIAogc2VsZWN0IHN0cmlu Z19hZ2codiwgJycpIGZyb20gYnl0ZWFfdGVzdF90YWJsZTsKQEAgLTc1Niw2ICs3NTYsOSBAQCBz ZWxlY3Qgc3RyaW5nX2FnZyh2LCAnJykgZnJvbSBieXRlYV90ZXN0X3RhYmxlOwogc2VsZWN0IHN0 cmluZ19hZ2codiwgTlVMTCkgZnJvbSBieXRlYV90ZXN0X3RhYmxlOwogc2VsZWN0IHN0cmluZ19h Z2codiwgZGVjb2RlKCdlZScsICdoZXgnKSkgZnJvbSBieXRlYV90ZXN0X3RhYmxlOwogCitzZWxl Y3QgbWluKHYpIGZyb20gYnl0ZWFfdGVzdF90YWJsZTsKK3NlbGVjdCBtYXgodikgZnJvbSBieXRl YV90ZXN0X3RhYmxlOworCiBkcm9wIHRhYmxlIGJ5dGVhX3Rlc3RfdGFibGU7CiAKIC0tIFRlc3Qg cGFyYWxsZWwgc3RyaW5nX2FnZyBhbmQgYXJyYXlfYWdnCi0tIAoyLjQ0LjIKCg== --000000000000d598a9061c587e60--