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 1wRdhx-002XsF-22 for pgsql-hackers@arkaria.postgresql.org; Mon, 25 May 2026 22:23:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wRdhv-002Hxz-28 for pgsql-hackers@arkaria.postgresql.org; Mon, 25 May 2026 22:23:36 +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 1wRdhu-002Hxr-3B for pgsql-hackers@lists.postgresql.org; Mon, 25 May 2026 22:23:36 +0000 Received: from mail-oi1-x234.google.com ([2607:f8b0:4864:20::234]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wRdhs-00000000lNb-44wV for pgsql-hackers@lists.postgresql.org; Mon, 25 May 2026 22:23:35 +0000 Received: by mail-oi1-x234.google.com with SMTP id 5614622812f47-47c6f914617so4727505b6e.1 for ; Mon, 25 May 2026 15:23:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779747812; cv=none; d=google.com; s=arc-20240605; b=lynn0G5PSQ0Hv+0ZWaqL8Yn1ewCmlpEIqp/B2vmYX03GaY5pkI2sYtdGcCdLmzgikX ztvQ4zjAAOHZ9hnZUoOdodXgMaEXhO36yAhh/M8b/z8m+xKDPsSQYeuu5jQStxmJPmyS D2Dpkl0LMwEvt2i+zboRmw3UDMbRKS38B78tLclKEypyX8aeTXsua5uOHQUPAXrfI/mu QSi5sZTFPsErWb/Qv2KD5WY6GZ94/wvvFOca5Wdnnjl/Lf+s38Dj0OfN0AGndxLq4IgW 8Ysnmhum5ZMKlNe0YYFPLb9plOjTP/3bGSTc9YP/YtTG43p0saaPDmhn5IXMYIF0ireO CEyg== 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=f4NWydkk+nOhnh4/j0Iyx+Plc4Hw1QUeteVDe57SMkg=; fh=1QlF/okY6VQM7e+mckEq5T/NyHvj+n8qNTDKd7jAtfw=; b=Ud6zrn6c/3FTmKunZ+UDjL63hcfh/cxawWKkE/d37v1p32QlCgugT3APITrVBMAsuh NZlVO8ycda5kEejcT1PFGJv4D1unEQdPKn8S+UxrwNZrj3pGEjJmIMdQPkBkKd8YBn2f w8H0YfZpFI2XAWdmJV1TFuNcfMJRD22xe2ySytYeJ2ye16DDWsLNepgyVknlstnnOeRA PxbNFLIiMr0j+y4CQDsiFmmSRg5jPVlxbFAq4mrSNGsWQNw7HF2q228kDGFf67py9xaA GLR+QMsQMWDrRu8mfapUR4nTqh4ySzkHaBNrsEoryNtMpX3vNvb2h5j0SlHclfX6aYO8 TRVw==; 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=illuminatedcomputing-com.20251104.gappssmtp.com; s=20251104; t=1779747812; x=1780352612; 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=f4NWydkk+nOhnh4/j0Iyx+Plc4Hw1QUeteVDe57SMkg=; b=Tl9+rqr49jc04OCo1cGySz37r3E3vux12Og7wUVRrQP+xQYB4B0S5W9oErKWL68m0j laxsP2Jbh8PXJHos9/pFdthSYXB8xCrvhzZUuJGtADgfNbGGoVTidqXjRojGaj2CKa4H ZMxvv6R/YDwC+9f2E771Tr9aLd4IBRMdwokxHnMO4v/VKcs48LqGMUWNnBRaT3jbF8d+ CD67RssKQO0Z3LVpWvAtaF8ClmYjU3mUREImRTwZgtdBoMJrh1ZCK/jY1YIMC5nKXZov nx0ZCCfCK8NyjpLbP8eCT8hjxL7T4n3yHkbzNKucSSQeviBnuT8xS3T8tgR/RAGCzLNN qUYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779747812; x=1780352612; 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=f4NWydkk+nOhnh4/j0Iyx+Plc4Hw1QUeteVDe57SMkg=; b=jDmHFGgPZyykZNW972ODjSYL+97+u9Bnge/iW0pifFxqhAIJ8e80R2eb44sIAZvthk ZlBIIpJWOq8TfIk/TWbE549X+dFGfgUPXRBkaG+SnJpHCUAdcerK2ICqM/Q7tL+a2nTT POzh8sZ94u3JSnUpaYc2nqf7atQGG+QP1j+StsFpIkdInYHSMPaVxn0GEL/3LCjKWW1Y 44LFPuVJz9xi3gpD/JdEfxI0IjM7IafgUlqGHZWNY/iV5B7EHBXf7N2IeD//V354gNNo 9MpY01bFcxNeiHksWJI6JYNonM8ekDk28kVNZcELrkRLm4laG3zkdpaHZoqsR9aR5cM3 LifA== X-Forwarded-Encrypted: i=1; AFNElJ831pHiBK7wdfRbnygm974V9JVFEE0HUYywHDExjHUEu4MeSSDXCjexaiFPe4IaXmLM0jShMynflYGiU27w@lists.postgresql.org X-Gm-Message-State: AOJu0YxadNAqUOE4Mzx38UXB0wWWyO3nPaO9HaL/Phckm1kaUA8F7oWh rqfkgp5zpgiyDnNUSPpADWuvpiiYXEztxKoSECDVhyB8wyAduai8b/yfbLqIMLHsYmsxw9AlM5e kkWu3Yf1GAyPo7BKBa2Dpx/aKKk1GFjKetIrhErcyvQ== X-Gm-Gg: Acq92OGqlRsxRm+I2Qd+j6iGTG23bG44hufPIY9p8RUJH36xPHyLC0L3HbYvPDcwWWA ZVgrUeO3im9opAdcX6Idq/lpzWy3imoLM7yu3UROTCdtgQhEinaf3RLIbCAgDlF8JVAhTSsqDao Qyr1SyxvzlkISSm8Oa6bO37MVmiHhNYor6vsiNwRXLBNj2TLmLm748QJzhkEozTCoRPxoOEViYG J/GW8TupP+lV0L23RxqgFruq0rLgbKW8/eSOHfSM6aZvbHePTfcigLqaDOnjfnmyHBvjRoUIWy2 btOFIJuOfvUwYoM= X-Received: by 2002:a4a:da0b:0:b0:69d:6c3c:e185 with SMTP id 006d021491bc7-69d7ec67cdcmr6923628eaf.36.1779747812252; Mon, 25 May 2026 15:23:32 -0700 (PDT) MIME-Version: 1.0 References: <27BD5D23-19C9-4FD1-8935-9C788C3C9869@gmail.com> <66C1555B-CA54-4ED1-AB4F-0EE97D24A006@gmail.com> <91B35E0F-5DC1-4417-A1B9-FAF4A3DCD2BD@gmail.com> <74C1863C-2C2A-423A-BDE7-0228889F1D80@gmail.com> In-Reply-To: From: Paul A Jungwirth Date: Mon, 25 May 2026 15:23:20 -0700 X-Gm-Features: AVHnY4KfYHrmGVU-46UpIy7uXTIaZN-c8GtvkWkY1t9QqjXBjqnzNq3lKr1uqmc Message-ID: Subject: Re: FOR PORTION OF does not recompute GENERATED STORED columns that depend on the range column To: Chao Li Cc: Peter Eisentraut , jian he , SATYANARAYANA NARLAPURAM , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000023ca810652abd484" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000023ca810652abd484 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, May 8, 2026 at 8:25=E2=80=AFAM Paul A Jungwirth wrote: > > On Fri, May 8, 2026 at 12:10=E2=80=AFAM Chao Li = wrote: > > > > > > > Thanks for updating the patch and making the separation. After reading = v11, I still have a few comments for 0001. > . . . > > v12 attached. After discussing this as PGConf.dev, Peter and I agreed that we *should* be checking for UPDATE permission on the application-time column. So we need to add the attno to updatedCols on the RTEPermissionInfo. That is great, because it fixes GENERATED column dependency tracking and also UPDATE OF triggers, without the complexity of changing ExecGetUpdatedCols. Note we still do not require INSERT permission for the temporal leftovers, which is what the SQL Standard says and also makes sense semantically, since those leftovers represent already-existing history. No RLS changes are needed because RLS policies aren't checked based on *column* changes. We still need a fix for non-partitioning inheritance, but the patch becomes a lot simpler. Here is a patch adding the application-time column to updatedCols, along with the tests we've written for GENERATED columns and UPDATE OF triggers. I'll submit a patch for inheritance on that thread. --=20 Paul ~{:-) pj@illuminatedcomputing.com --00000000000023ca810652abd484 Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0001-Require-UPDATE-permission-on-FOR-PORTION-OF-colu.patch" Content-Disposition: attachment; filename="v13-0001-Require-UPDATE-permission-on-FOR-PORTION-OF-colu.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mplrme6n0 RnJvbSAyOGQxMDcwMDgyNWE1YWI4NDU0MmQyMjU3M2E1NWFjZDdhOTQzOTlmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWluYXRlZGNv bXB1dGluZy5jb20+CkRhdGU6IE1vbiwgMjUgTWF5IDIwMjYgMDg6NTg6MzMgLTA3MDAKU3ViamVj dDogW1BBVENIIHYxM10gUmVxdWlyZSBVUERBVEUgcGVybWlzc2lvbiBvbiBGT1IgUE9SVElPTiBP RiBjb2x1bW4KCkl0IHNlZW1zIGxpa2UgdGhlIFNRTCBzdGFuZGFyZCBkb2VzIHJlcXVpcmUgdGhp cyBhZnRlciBhbGwsIGFuZCBpdCBtYWtlcyBzZW5zZQpiZWNhdXNlIHRoZXNlIGNvbHVtbnMgZ2V0 IGNoYW5nZWQuIChUaGlzIGlzIG5vdCB0byBiZSBjb25mdXNlZCB3aXRoICpub3QqCnJlcXVpcmlu ZyBJTlNFUlQgcGVybWlzc2lvbiB0byBhZGQgdGhlIHRlbXBvcmFsIGxlZnRvdmVycy4pCgpBZGRp bmcgdGhlIGNvbHVtbiB0byBSVEVQZXJtaXNzaW9uSW5mby0+dXBkYXRlZENvbHMgYWxzbyBmaXhl cyBhIGNvdXBsZQpvdXRzdGFuZGluZyBidWdzIGZyb20gb3RoZXIgKG5vbi1wZXJtaXNzaW9uKSBm ZWF0dXJlcyB1c2luZyB0aGF0IGJpdG1hcHNldCB0bwpkZXRlY3QgY2hhbmdlczogR0VORVJBVEVE IGNvbHVtbnMgYW5kIFVQREFURSBPRiB0cmlnZ2Vycy4gSSd2ZSBpbmNsdWRlZCB0ZXN0CmNhc2Vz IHRvIGV4ZXJjaXNlIHRob3NlIHNjZW5hcmlvcywgaW5jbHVkaW5nIG9uIHBhcnRpdGlvbmVkIHRh Ymxlcy4KLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAgICAgICAgICAgICAgICB8 ICAxMiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQgfCAx OTAgKysrKysrKysrKysrKystLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxl Z2VzLm91dCAgICAgfCAgMTIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29m LnNxbCAgICAgIHwgIDc2ICsrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wcml2aWxlZ2Vz LnNxbCAgICAgICAgICB8ICAxMCArLQogNSBmaWxlcyBjaGFuZ2VkLCAyNDEgaW5zZXJ0aW9ucygr KSwgNTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5 emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXggZmZjZjI1YTZiZTcuLjAz NzUzYjFjNWE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKQEAgLTE1NDksNiArMTU0OSw3IEBAIHRyYW5z Zm9ybUZvclBvcnRpb25PZkNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCUxpc3QJICAgKmZ1 bmNBcmdzOwogCQlOb2RlCSAgICpyYW5nZVRMRUV4cHI7CiAJCVRhcmdldEVudHJ5ICp0bGU7CisJ CVJURVBlcm1pc3Npb25JbmZvICp0YXJnZXRfcGVybWluZm8gPSBwc3RhdGUtPnBfdGFyZ2V0X25z aXRlbS0+cF9wZXJtaW5mbzsKIAogCQkvKgogCQkgKiBXaGF0ZXZlciBvcGVyYXRvciBpcyB1c2Vk IGZvciBpbnRlcnNlY3QgYnkgdGVtcG9yYWwgZm9yZWlnbiBrZXlzLApAQCAtMTU5OCwxNCArMTU5 OSw5IEBAIHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJCQkJICBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWUsIGZhbHNlKTsKIAkJcmVzdWx0LT5yYW5n ZVRhcmdldExpc3QgPSBsYXBwZW5kKHJlc3VsdC0+cmFuZ2VUYXJnZXRMaXN0LCB0bGUpOwogCi0J CS8qCi0JCSAqIFRoZSByYW5nZSBjb2x1bW4gd2lsbCBjaGFuZ2UsIGJ1dCB5b3UgZG9uJ3QgbmVl ZCBVUERBVEUgcGVybWlzc2lvbgotCQkgKiBvbiBpdCwgc28gd2UgZG9uJ3QgYWRkIHRvIHVwZGF0 ZWRDb2xzIGhlcmUuIFhYWDogSWYKLQkJICogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVz c2FnZS1pZC9DQUNKdWZ4RXRZMWhkTGN4JTNERmhucXAtRVJjVjFQaGJ2RUxHNUNPeV9DWmpvRVc3 NlpQUSU0MG1haWwuZ21haWwuY29tCi0JCSAqIGlzIG1lcmdlZCAob25seSB2YWxpZGF0ZSBDSEVD SyBjb25zdHJhaW50cyBpZiB0aGV5IGRlcGVuZCBvbiBvbmUgb2YKLQkJICogdGhlIGNvbHVtbnMg YmVpbmcgVVBEQVRFZCksIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgY29kZSBrbm93cwotCQkg KiB0aGF0IHdlIGFyZSB1cGRhdGluZyB0aGUgYXBwbGljYXRpb24tdGltZSBjb2x1bW4uCi0JCSAq LworCQkvKiBNYXJrIHRoZSByYW5nZSBjb2x1bW4gYXMgcmVxdWlyaW5nIHVwZGF0ZSBwZXJtaXNz aW9ucyAqLworCQl0YXJnZXRfcGVybWluZm8tPnVwZGF0ZWRDb2xzID0gYm1zX2FkZF9tZW1iZXIo dGFyZ2V0X3Blcm1pbmZvLT51cGRhdGVkQ29scywKKwkJCQlyYW5nZV9hdHRubyAtIEZpcnN0TG93 SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOwogCX0KIAllbHNlCiAJCXJlc3VsdC0+cmFuZ2VU YXJnZXRMaXN0ID0gTklMOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9m b3JfcG9ydGlvbl9vZi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9u X29mLm91dAppbmRleCAwYzBhMjA1YzQ0Yi4uZmUwODE4NmJjNWIgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CkBAIC0xMzY1LDYgKzEzNjUsOSBAQCAk JDsKIENSRUFURSBUUklHR0VSIGZwb19iZWZvcmVfc3RtdAogICBCRUZPUkUgSU5TRVJUIE9SIFVQ REFURSBPUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAogICBGT1IgRUFDSCBTVEFURU1F TlQgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CitDUkVBVEUg VFJJR0dFUiBmcG9fYmVmb3JlX3N0bXQxCisgIEJFRk9SRSBVUERBVEUgT0YgdmFsaWRfYXQgT04g Zm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURV UkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CiBDUkVBVEUgVFJJR0dFUiBmcG9fYWZ0ZXJf aW5zZXJ0X3N0bXQKICAgQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKICAgRk9S IEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFs c2UpOwpAQCAtMTM3OCw2ICsxMzgxLDkgQEAgQ1JFQVRFIFRSSUdHRVIgZnBvX2FmdGVyX2RlbGV0 ZV9zdG10CiBDUkVBVEUgVFJJR0dFUiBmcG9fYmVmb3JlX3JvdwogICBCRUZPUkUgSU5TRVJUIE9S IFVQREFURSBPUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAogICBGT1IgRUFDSCBST1cg RVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CitDUkVBVEUgVFJJ R0dFUiBmcG9fYmVmb3JlX3JvdzEKKyAgQkVGT1JFIFVQREFURSBPRiB2YWxpZF9hdCBPTiBmb3Jf cG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3Ry aWdnZXIoZmFsc2UsIGZhbHNlKTsKIENSRUFURSBUUklHR0VSIGZwb19hZnRlcl9pbnNlcnRfcm93 CiAgIEFGVEVSIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CiAgIEZPUiBFQUNIIFJPVyBF WEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoZmFsc2UsIGZhbHNlKTsKQEAgLTEzOTQsOSAr MTQwMCwxNSBAQCBVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAogTk9USUNFOiAgZnBvX2JlZm9y ZV9zdG10OiBCRUZPUkUgVVBEQVRFIFNUQVRFTUVOVDoKIE5PVElDRTogICAgb2xkOiA8TlVMTD4K IE5PVElDRTogICAgbmV3OiA8TlVMTD4KK05PVElDRTogIGZwb19iZWZvcmVfc3RtdDE6IEJFRk9S RSBVUERBVEUgU1RBVEVNRU5UOgorTk9USUNFOiAgICBvbGQ6IDxOVUxMPgorTk9USUNFOiAgICBu ZXc6IDxOVUxMPgogTk9USUNFOiAgZnBvX2JlZm9yZV9yb3c6IEJFRk9SRSBVUERBVEUgUk9XOgog Tk9USUNFOiAgICBvbGQ6IFsyMDE5LTAxLTAxLDIwMzAtMDEtMDEpCiBOT1RJQ0U6ICAgIG5ldzog WzIwMjEtMDEtMDEsMjAyMi0wMS0wMSkKK05PVElDRTogIGZwb19iZWZvcmVfcm93MTogQkVGT1JF IFVQREFURSBST1c6CitOT1RJQ0U6ICAgIG9sZDogWzIwMTktMDEtMDEsMjAzMC0wMS0wMSkKK05P VElDRTogICAgbmV3OiBbMjAyMS0wMS0wMSwyMDIyLTAxLTAxKQogTk9USUNFOiAgZnBvX2JlZm9y ZV9zdG10OiBCRUZPUkUgSU5TRVJUIFNUQVRFTUVOVDoKIE5PVElDRTogICAgb2xkOiA8TlVMTD4K IE5PVElDRTogICAgbmV3OiA8TlVMTD4KQEAgLTE5ODYsNiArMTk5OCw3IEBAIFNFTEVDVCAqIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogRFJPUCBUQUJM RSBmb3JfcG9ydGlvbl9vZl90ZXN0MjsKIERST1AgVFlQRSBteWRhdGVyYW5nZTsKIC0tIFRlc3Qg Rk9SIFBPUlRJT04gT0YgYWdhaW5zdCBhIHBhcnRpdGlvbmVkIHRhYmxlLgorLS0gSW5jbHVkZSBh IEdFTkVSQVRFRCBTVE9SRUQgY29sdW1uIHRvIHRlc3QgdXBkYXRlZENvbHMgY29sdW1uIG1hcHBp bmcuCiAtLSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8xIGhhcyB0aGUgc2FtZSBhdHRudW1zIGFzIHRo ZSByb290CiAtLSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIGhhcyB0aGUgZGlmZmVyZW50IGF0dG51 bXMgZnJvbSB0aGUgcm9vdAogLS0gdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBoYXMgdGhlIGRpZmZl cmVudCBhdHRudW1zIHRvbywgYnV0IHJldmVyc2VkCkBAIC0xOTkzLDI5ICsyMDA2LDM0IEBAIENS RUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoCiAgIGlkIGludDRyYW5nZSwKICAgdmFs aWRfYXQgZGF0ZXJhbmdlLAogICBuYW1lIHRleHQsCisgIHJhbmdlX2xlbiBpbnQgR0VORVJBVEVE IEFMV0FZUyBBUyAodXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKSBTVE9SRUQsCiAg IENPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF91cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwogQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzEgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk IEZPUiBWQUxVRVMgSU4gKCdbMSwyKScsICdbMiwzKScpOwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3BhcnRpdGlvbmVkXzMgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxV RVMgSU4gKCdbMyw0KScsICdbNCw1KScpOwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkXzUgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdb NSw2KScsICdbNiw3KScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgREVUQUNI IFBBUlRJVElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zOwotQUxURVIgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfMyBEUk9QIENPTFVNTiBpZCwgRFJPUCBDT0xVTU4gdmFsaWRfYXQ7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIERST1AgQ09MVU1OIGlkLCBEUk9QIENPTFVN TiB2YWxpZF9hdCBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBjb2x1bW4gcmFu Z2VfbGVuIG9mIHRhYmxlIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMKIEFMVEVSIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkXzMgQUREIENPTFVNTiBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsIEFERCBD T0xVTU4gdmFsaWRfYXQgZGF0ZXJhbmdlIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfMyBBREQgQ09MVU1OIHJhbmdlX2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAodXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKSBTVE9SRUQ7CiBBTFRFUiBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlv bmVkXzMgRk9SIFZBTFVFUyBJTiAoJ1szLDQpJywgJ1s0LDUpJyk7CiBBTFRFUiBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCBERVRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzU7 Ci1BTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IERST1AgQ09MVU1OIGlkLCBEUk9Q IENPTFVNTiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgRFJP UCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZhbGlkX2F0IENBU0NBREU7CitOT1RJQ0U6ICBkcm9w IGNhc2NhZGVzIHRvIGNvbHVtbiByYW5nZV9sZW4gb2YgdGFibGUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfNQogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBBREQgQ09MVU1OIHZhbGlk X2F0IGRhdGVyYW5nZSBOT1QgTlVMTCwgQUREIENPTFVNTiBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEw7 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IEFERCBDT0xVTU4gcmFuZ2VfbGVu IGludCBHRU5FUkFURUQgQUxXQVlTIEFTICh1cHBlcih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9h dCkpIFNUT1JFRDsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJU SVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBGT1IgVkFMVUVTIElOICgnWzUsNiknLCAnWzYs NyknKTsKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIChpZCwgdmFsaWRfYXQsIG5h bWUpIFZBTFVFUwogICAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEt MDEnKSwgJ29uZScpLAogICAoJ1szLDQpJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAt MDEtMDEnKSwgJ3RocmVlJyksCiAgICgnWzUsNiknLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAn MjAxMC0wMS0wMScpLCAnZml2ZScpOwogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZDsKLSAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAgCi0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQotIFsxLDIpIHwgWzIwMDAtMDEtMDEsMjAx MC0wMS0wMSkgfCBvbmUKLSBbMyw0KSB8IFsyMDAwLTAxLTAxLDIwMTAtMDEtMDEpIHwgdGhyZWUK LSBbNSw2KSB8IFsyMDAwLTAxLTAxLDIwMTAtMDEtMDEpIHwgZml2ZQorICBpZCAgIHwgICAgICAg IHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICB8IHJhbmdlX2xlbiAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEsMikgfCBbMjAwMC0wMS0w MSwyMDEwLTAxLTAxKSB8IG9uZSAgIHwgICAgICAzNjUzCisgWzMsNCkgfCBbMjAwMC0wMS0wMSwy MDEwLTAxLTAxKSB8IHRocmVlIHwgICAgICAzNjUzCisgWzUsNikgfCBbMjAwMC0wMS0wMSwyMDEw LTAxLTAxKSB8IGZpdmUgIHwgICAgICAzNjUzCiAoMyByb3dzKQogCiAtLSBVcGRhdGUgd2l0aG91 dCBtb3Zpbmcgd2l0aGluIHBhcnRpdGlvbiAxCkBAIC0yMDQ2LDU0ICsyMDY0LDU0IEBAIFVQREFU RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAw LTA2LTAxJyBUTyAnMjAwMC0wCiAgICAgICBpZCA9ICdbMyw0KScKICAgV0hFUkUgaWQgPSAnWzUs NiknOwogLS0gVXBkYXRlIGFsbCBwYXJ0aXRpb25zIGF0IG9uY2UgKGVhY2ggd2l0aCBsZWZ0b3Zl cnMpCi1TRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlkLCB2YWxp ZF9hdDsKLSAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgIG5hbWUgICAKLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KLSBbMSwyKSB8IFsyMDAwLTAx LTAxLDIwMDAtMDMtMDEpIHwgb25lCi0gWzEsMikgfCBbMjAwMC0wMy0wMSwyMDAwLTA0LTAxKSB8 IG9uZV4xCi0gWzEsMikgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8IG9uZQotIFsxLDIpIHwg WzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCBvbmUKLSBbMiwzKSB8IFsyMDAwLTA2LTAxLDIwMDAt MDctMDEpIHwgdGhyZWVeMgotIFszLDQpIHwgWzIwMDAtMDEtMDEsMjAwMC0wMy0wMSkgfCB0aHJl ZQotIFszLDQpIHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCB0aHJlZV4xCi0gWzMsNCkgfCBb MjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8IHRocmVlCi0gWzMsNCkgfCBbMjAwMC0wNi0wMSwyMDAw LTA3LTAxKSB8IGZpdmVeMgotIFszLDQpIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCB0aHJl ZQotIFs0LDUpIHwgWzIwMDAtMDYtMDEsMjAwMC0wNy0wMSkgfCBvbmVeMgotIFs1LDYpIHwgWzIw MDAtMDEtMDEsMjAwMC0wMy0wMSkgfCBmaXZlCi0gWzUsNikgfCBbMjAwMC0wMy0wMSwyMDAwLTA0 LTAxKSB8IGZpdmVeMQotIFs1LDYpIHwgWzIwMDAtMDQtMDEsMjAwMC0wNi0wMSkgfCBmaXZlCi0g WzUsNikgfCBbMjAwMC0wNy0wMSwyMDEwLTAxLTAxKSB8IGZpdmUKK1NFTEVDVCAqLCB1cHBlcih2 YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRF UiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8ICBu YW1lICAgfCByYW5nZV9sZW4gfCA/Y29sdW1uPyAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIFsxLDIpIHwgWzIwMDAt MDEtMDEsMjAwMC0wMy0wMSkgfCBvbmUgICAgIHwgICAgICAgIDYwIHwgICAgICAgNjAKKyBbMSwy KSB8IFsyMDAwLTAzLTAxLDIwMDAtMDQtMDEpIHwgb25lXjEgICB8ICAgICAgICAzMSB8ICAgICAg IDMxCisgWzEsMikgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8IG9uZSAgICAgfCAgICAgICAg NjEgfCAgICAgICA2MQorIFsxLDIpIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCBvbmUgICAg IHwgICAgICAzNDcxIHwgICAgIDM0NzEKKyBbMiwzKSB8IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEp IHwgdGhyZWVeMiB8ICAgICAgICAzMCB8ICAgICAgIDMwCisgWzMsNCkgfCBbMjAwMC0wMS0wMSwy MDAwLTAzLTAxKSB8IHRocmVlICAgfCAgICAgICAgNjAgfCAgICAgICA2MAorIFszLDQpIHwgWzIw MDAtMDMtMDEsMjAwMC0wNC0wMSkgfCB0aHJlZV4xIHwgICAgICAgIDMxIHwgICAgICAgMzEKKyBb Myw0KSB8IFsyMDAwLTA0LTAxLDIwMDAtMDYtMDEpIHwgdGhyZWUgICB8ICAgICAgICA2MSB8ICAg ICAgIDYxCisgWzMsNCkgfCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAxKSB8IGZpdmVeMiAgfCAgICAg ICAgMzAgfCAgICAgICAzMAorIFszLDQpIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCB0aHJl ZSAgIHwgICAgICAzNDcxIHwgICAgIDM0NzEKKyBbNCw1KSB8IFsyMDAwLTA2LTAxLDIwMDAtMDct MDEpIHwgb25lXjIgICB8ICAgICAgICAzMCB8ICAgICAgIDMwCisgWzUsNikgfCBbMjAwMC0wMS0w MSwyMDAwLTAzLTAxKSB8IGZpdmUgICAgfCAgICAgICAgNjAgfCAgICAgICA2MAorIFs1LDYpIHwg WzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCBmaXZlXjEgIHwgICAgICAgIDMxIHwgICAgICAgMzEK KyBbNSw2KSB8IFsyMDAwLTA0LTAxLDIwMDAtMDYtMDEpIHwgZml2ZSAgICB8ICAgICAgICA2MSB8 ICAgICAgIDYxCisgWzUsNikgfCBbMjAwMC0wNy0wMSwyMDEwLTAxLTAxKSB8IGZpdmUgICAgfCAg ICAgIDM0NzEgfCAgICAgMzQ3MQogKDE1IHJvd3MpCiAKIFNFTEVDVCAqIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7Ci0gIGlkICAgfCAgICAgICAgdmFs aWRfYXQgICAgICAgICB8ICBuYW1lICAgCi0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tCi0gWzEsMikgfCBbMjAwMC0wMS0wMSwyMDAwLTAzLTAxKSB8IG9uZQotIFsx LDIpIHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCBvbmVeMQotIFsxLDIpIHwgWzIwMDAtMDQt MDEsMjAwMC0wNi0wMSkgfCBvbmUKLSBbMSwyKSB8IFsyMDAwLTA3LTAxLDIwMTAtMDEtMDEpIHwg b25lCi0gWzIsMykgfCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAxKSB8IHRocmVlXjIKKyAgaWQgICB8 ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgIG5hbWUgICB8IHJhbmdlX2xlbiAKKy0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMSwyKSB8 IFsyMDAwLTAxLTAxLDIwMDAtMDMtMDEpIHwgb25lICAgICB8ICAgICAgICA2MAorIFsxLDIpIHwg WzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCBvbmVeMSAgIHwgICAgICAgIDMxCisgWzEsMikgfCBb MjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8IG9uZSAgICAgfCAgICAgICAgNjEKKyBbMSwyKSB8IFsy MDAwLTA3LTAxLDIwMTAtMDEtMDEpIHwgb25lICAgICB8ICAgICAgMzQ3MQorIFsyLDMpIHwgWzIw MDAtMDYtMDEsMjAwMC0wNy0wMSkgfCB0aHJlZV4yIHwgICAgICAgIDMwCiAoNSByb3dzKQogCiBT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgT1JERVIgQlkgaWQsIHZhbGlkX2F0 OwotICBuYW1lICAgfCAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIAotLS0tLS0tLS0t Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHRocmVlICAgfCBbMyw0KSB8IFsy MDAwLTAxLTAxLDIwMDAtMDMtMDEpCi0gdGhyZWVeMSB8IFszLDQpIHwgWzIwMDAtMDMtMDEsMjAw MC0wNC0wMSkKLSB0aHJlZSAgIHwgWzMsNCkgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKQotIGZp dmVeMiAgfCBbMyw0KSB8IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEpCi0gdGhyZWUgICB8IFszLDQp IHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkKLSBvbmVeMiAgIHwgWzQsNSkgfCBbMjAwMC0wNi0w MSwyMDAwLTA3LTAxKQorICBuYW1lICAgfCAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAg IHwgcmFuZ2VfbGVuIAorLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorIHRocmVlICAgfCBbMyw0KSB8IFsyMDAwLTAxLTAxLDIwMDAtMDMtMDEp IHwgICAgICAgIDYwCisgdGhyZWVeMSB8IFszLDQpIHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkg fCAgICAgICAgMzEKKyB0aHJlZSAgIHwgWzMsNCkgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8 ICAgICAgICA2MQorIGZpdmVeMiAgfCBbMyw0KSB8IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEpIHwg ICAgICAgIDMwCisgdGhyZWUgICB8IFszLDQpIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCAg ICAgIDM0NzEKKyBvbmVeMiAgIHwgWzQsNSkgfCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAxKSB8ICAg ICAgICAzMAogKDYgcm93cykKIAogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81 IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKLSAgbmFtZSAgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8ICBpZCAgIAotLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCi0g Zml2ZSAgIHwgWzIwMDAtMDEtMDEsMjAwMC0wMy0wMSkgfCBbNSw2KQotIGZpdmVeMSB8IFsyMDAw LTAzLTAxLDIwMDAtMDQtMDEpIHwgWzUsNikKLSBmaXZlICAgfCBbMjAwMC0wNC0wMSwyMDAwLTA2 LTAxKSB8IFs1LDYpCi0gZml2ZSAgIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCBbNSw2KQor ICBuYW1lICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgIGlkICAgfCByYW5nZV9sZW4gCist LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0KKyBm aXZlICAgfCBbMjAwMC0wMS0wMSwyMDAwLTAzLTAxKSB8IFs1LDYpIHwgICAgICAgIDYwCisgZml2 ZV4xIHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCBbNSw2KSB8ICAgICAgICAzMQorIGZpdmUg ICB8IFsyMDAwLTA0LTAxLDIwMDAtMDYtMDEpIHwgWzUsNikgfCAgICAgICAgNjEKKyBmaXZlICAg fCBbMjAwMC0wNy0wMSwyMDEwLTAxLTAxKSB8IFs1LDYpIHwgICAgICAzNDcxCiAoNCByb3dzKQog CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwpAQCAtMjE1Miw0ICsyMTcwLDg0IEBA IFNFTEVDVCAqIEZST00gZnBvX3J1bGUgT1JERVIgQlkgZjE7CiAoMiByb3dzKQogCiBEUk9QIFRB QkxFIGZwb19ydWxlOworLS0gVVBEQVRFIEZPUiBQT1JUSU9OIE9GIHdpdGggZ2VuZXJhdGVkIHN0 b3JlZCBjb2x1bW5zCistLSBUaGUgZ2VuZXJhdGVkIGNvbHVtbiBkZXBlbmRzIG9uIHRoZSByYW5n ZSBjb2x1bW4sIHNvIGl0IG11c3QgYmUKKy0tIHJlY29tcHV0ZWQgd2hlbiBGT1IgUE9SVElPTiBP RiBuYXJyb3dzIHRoZSByYW5nZS4KK0NSRUFURSBUQUJMRSBmcG9fZ2VuZXJhdGVkICgKKyAgaWQg aW50LAorICB2YWxpZF9hdCBpbnQ0cmFuZ2UsCisgIHJhbmdlX2xlbiBpbnQgR0VORVJBVEVEIEFM V0FZUyBBUyAodXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKSBTVE9SRUQsCisgIHJh bmdlX2xlbnYgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKHVwcGVyKHZhbGlkX2F0KSAtIGxvd2Vy KHZhbGlkX2F0KSkKKyk7CitJTlNFUlQgSU5UTyBmcG9fZ2VuZXJhdGVkIChpZCwgdmFsaWRfYXQp IFZBTFVFUyAoMSwgJ1sxMCwxMDApJyk7CitTRUxFQ1QgKiBGUk9NIGZwb19nZW5lcmF0ZWQgT1JE RVIgQlkgdmFsaWRfYXQ7CisgaWQgfCB2YWxpZF9hdCB8IHJhbmdlX2xlbiB8IHJhbmdlX2xlbnYg CistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgIDEgfCBbMTAsMTAw KSB8ICAgICAgICA5MCB8ICAgICAgICAgOTAKKygxIHJvdykKKworLS0gQWZ0ZXIgdGhlIEZPUiBQ T1JUSU9OIE9GIChGUE8pIHVwZGF0ZSwgYWxsIHRocmVlIHJlc3VsdGluZyByb3dzCistLSAobGVm dG92ZXItYmVmb3JlLCB1cGRhdGVkLCBhbmQgbGVmdG92ZXItYWZ0ZXIpIG11c3QgY29udGFpbiB0 aGUgY29ycmVjdAorLS0gdmFsdWVzIGZvciByYW5nZV9sZW4gYW5kIHJhbmdlX2xlbnYuCitVUERB VEUgZnBvX2dlbmVyYXRlZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDMwIFRPIDcw CisgIFNFVCBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGZwb19nZW5lcmF0ZWQgT1JERVIgQlkgdmFs aWRfYXQ7CisgaWQgfCB2YWxpZF9hdCB8IHJhbmdlX2xlbiB8IHJhbmdlX2xlbnYgCistLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgIDEgfCBbMTAsMzApICB8ICAgICAg ICAyMCB8ICAgICAgICAgMjAKKyAgMiB8IFszMCw3MCkgIHwgICAgICAgIDQwIHwgICAgICAgICA0 MAorICAxIHwgWzcwLDEwMCkgfCAgICAgICAgMzAgfCAgICAgICAgIDMwCisoMyByb3dzKQorCist LSBBbHNvIHRlc3Qgd2l0aCBhIGdlbmVyYXRlZCBjb2x1bW4gdGhhdCByZWZlcmVuY2VzIGJvdGgg YSBTRVQgY29sdW1uCistLSBhbmQgdGhlIHJhbmdlIGNvbHVtbi4KK0RST1AgVEFCTEUgZnBvX2dl bmVyYXRlZDsKK0NSRUFURSBUQUJMRSBmcG9fZ2VuZXJhdGVkICgKKyAgaWQgaW50LAorICB2YWxp ZF9hdCBpbnQ0cmFuZ2UsCisgIGlkX3BsdXNfbGVuIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChp ZCArIHVwcGVyKHZhbGlkX2F0KSAtIGxvd2VyKHZhbGlkX2F0KSkgU1RPUkVELAorICBpZF9wbHVz X2xlbnYgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGlkICsgdXBwZXIodmFsaWRfYXQpIC0gbG93 ZXIodmFsaWRfYXQpKQorKTsKK0lOU0VSVCBJTlRPIGZwb19nZW5lcmF0ZWQgKGlkLCB2YWxpZF9h dCkgVkFMVUVTICgxLCAnWzEwLDEwMCknKTsKK1NFTEVDVCAqIEZST00gZnBvX2dlbmVyYXRlZCBP UkRFUiBCWSB2YWxpZF9hdDsKKyBpZCB8IHZhbGlkX2F0IHwgaWRfcGx1c19sZW4gfCBpZF9wbHVz X2xlbnYgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorICAx IHwgWzEwLDEwMCkgfCAgICAgICAgICA5MSB8ICAgICAgICAgICA5MQorKDEgcm93KQorCitVUERB VEUgZnBvX2dlbmVyYXRlZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDMwIFRPIDcw CisgIFNFVCBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGZwb19nZW5lcmF0ZWQgT1JERVIgQlkgdmFs aWRfYXQ7CisgaWQgfCB2YWxpZF9hdCB8IGlkX3BsdXNfbGVuIHwgaWRfcGx1c19sZW52IAorLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyAgMSB8IFsxMCwzMCkg IHwgICAgICAgICAgMjEgfCAgICAgICAgICAgMjEKKyAgMiB8IFszMCw3MCkgIHwgICAgICAgICAg NDIgfCAgICAgICAgICAgNDIKKyAgMSB8IFs3MCwxMDApIHwgICAgICAgICAgMzEgfCAgICAgICAg ICAgMzEKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgZnBvX2dlbmVyYXRlZDsKKy0tIFRlc3QgdGhh dCBVUERBVEUgT0YgY29sbmFtZSB0cmlnZ2VycyBmaXJlIGlmIGNvbG5hbWUgaXMgdmFsaWRfYXQ6 CitDUkVBVEUgVEFCTEUgZnBvX3VwZGF0ZV9vZl90cmlnZ2VyICgKKyAgaWQgaW50LAorICB2YWxp ZF9hdCBpbnQ0cmFuZ2UKKyk7CitJTlNFUlQgSU5UTyBmcG9fdXBkYXRlX29mX3RyaWdnZXIgKGlk LCB2YWxpZF9hdCkgVkFMVUVTICgxLCAnWzEwLDEwMCknKTsKK0NSRUFURSBUUklHR0VSIGZwb19i ZWZvcmVfcm93MQorICBCRUZPUkUgVVBEQVRFIE9GIHZhbGlkX2F0IE9OIGZwb191cGRhdGVfb2Zf dHJpZ2dlcgorICBGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZh bHNlLCBmYWxzZSk7CitDUkVBVEUgVFJJR0dFUiBmcG9fYmVmb3JlX3JvdzIKKyAgQkVGT1JFIFVQ REFURSBPRiB2YWxpZF9hdCBPTiBmcG9fdXBkYXRlX29mX3RyaWdnZXIKKyAgRk9SIEVBQ0ggU1RB VEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOworVVBE QVRFIGZwb191cGRhdGVfb2ZfdHJpZ2dlcgorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N IDMwIFRPIDcwCisgIFNFVCBpZCA9IDI7CitOT1RJQ0U6ICBmcG9fYmVmb3JlX3JvdzI6IEJFRk9S RSBVUERBVEUgU1RBVEVNRU5UOgorTk9USUNFOiAgICBvbGQ6IDxOVUxMPgorTk9USUNFOiAgICBu ZXc6IDxOVUxMPgorTk9USUNFOiAgZnBvX2JlZm9yZV9yb3cxOiBCRUZPUkUgVVBEQVRFIFJPVzoK K05PVElDRTogICAgb2xkOiBbMTAsMTAwKQorTk9USUNFOiAgICBuZXc6IFszMCw3MCkKK0RST1Ag VEFCTEUgZnBvX3VwZGF0ZV9vZl90cmlnZ2VyOwogUkVTRVQgZGF0ZXN0eWxlOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQKaW5kZXggMGRlMTM2MTI4MTguLmY2Y2MxYTEw MjljIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQKQEAgLTExNTIs MTYgKzExNTIsMjYgQEAgQ1JFQVRFIFRBQkxFIHQxICgKICAgdmFsaWRfYXQgdHNyYW5nZSwKIAlD T05TVFJBSU5UIHQxcGsgUFJJTUFSWSBLRVkgKGMxLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KQogKTsKLS0tIFVQREFURSByZXF1aXJlcyBzZWxlY3QgcGVybWlzc2lvbiBvbiB0aGUgdmFsaWRf YXQgY29sdW1uIChidXQgbm90IHVwZGF0ZSk6CistLSBVUERBVEUgcmVxdWlyZXMgc2VsZWN0IGFu ZCB1cGRhdGUgcGVybWlzc2lvbiBvbiB0aGUgdmFsaWRfYXQgY29sdW1uOgogR1JBTlQgU0VMRUNU IChjMSkgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIyOwogR1JBTlQgVVBEQVRFIChjMSkgT04g dDEgVE8gcmVncmVzc19wcml2X3VzZXIyOwogR1JBTlQgU0VMRUNUIChjMSwgdmFsaWRfYXQpIE9O IHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMzsKIEdSQU5UIFVQREFURSAoYzEpIE9OIHQxIFRPIHJl Z3Jlc3NfcHJpdl91c2VyMzsKK0dSQU5UIFNFTEVDVCAoYzEpIE9OIHQxIFRPIHJlZ3Jlc3NfcHJp dl91c2VyNDsKK0dSQU5UIFVQREFURSAoYzEsIHZhbGlkX2F0KSBPTiB0MSBUTyByZWdyZXNzX3By aXZfdXNlcjQ7CitHUkFOVCBTRUxFQ1QgKGMxLCB2YWxpZF9hdCkgT04gdDEgVE8gcmVncmVzc19w cml2X3VzZXI1OworR1JBTlQgVVBEQVRFIChjMSwgdmFsaWRfYXQpIE9OIHQxIFRPIHJlZ3Jlc3Nf cHJpdl91c2VyNTsKIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIy OwogVVBEQVRFIHQxIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMDEnIFRP ICcyMDAxLTAxLTAxJyBTRVQgYzEgPSAnWzIsMyknOwogRVJST1I6ICBwZXJtaXNzaW9uIGRlbmll ZCBmb3IgdGFibGUgdDEKIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3Vz ZXIzOwogVVBEQVRFIHQxIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMDEn IFRPICcyMDAxLTAxLTAxJyBTRVQgYzEgPSAnWzIsMyknOworRVJST1I6ICBwZXJtaXNzaW9uIGRl bmllZCBmb3IgdGFibGUgdDEKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2 X3VzZXI0OworVVBEQVRFIHQxIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEt MDEnIFRPICcyMDAxLTAxLTAxJyBTRVQgYzEgPSAnWzIsMyknOworRVJST1I6ICBwZXJtaXNzaW9u IGRlbmllZCBmb3IgdGFibGUgdDEKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19w cml2X3VzZXI1OworVVBEQVRFIHQxIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAt MDEtMDEnIFRPICcyMDAxLTAxLTAxJyBTRVQgYzEgPSAnWzIsMyknOwogU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CiAtLSBERUxFVEUgcmVxdWlyZXMgc2VsZWN0 IHBlcm1pc3Npb24gb24gdGhlIHZhbGlkX2F0IGNvbHVtbjoKIEdSQU5UIERFTEVURSBPTiB0MSBU TyByZWdyZXNzX3ByaXZfdXNlcjI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9m b3JfcG9ydGlvbl9vZi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5z cWwKaW5kZXggZmQ3OWE5Yjc4ZTcuLjg1NmUzZjkxMjkxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Zm9yX3BvcnRpb25fb2Yuc3FsCkBAIC05MTMsNiArOTEzLDEwIEBAIENSRUFURSBUUklHR0VSIGZw b19iZWZvcmVfc3RtdAogICBCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gZm9y X3BvcnRpb25fb2ZfdGVzdAogICBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURVUkUg ZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CiAKK0NSRUFURSBUUklHR0VSIGZwb19iZWZvcmVf c3RtdDEKKyAgQkVGT1JFIFVQREFURSBPRiB2YWxpZF9hdCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0 CisgIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoZmFs c2UsIGZhbHNlKTsKKwogQ1JFQVRFIFRSSUdHRVIgZnBvX2FmdGVyX2luc2VydF9zdG10CiAgIEFG VEVSIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CiAgIEZPUiBFQUNIIFNUQVRFTUVOVCBF WEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoZmFsc2UsIGZhbHNlKTsKQEAgLTkzMSw2ICs5 MzUsMTAgQEAgQ1JFQVRFIFRSSUdHRVIgZnBvX2JlZm9yZV9yb3cKICAgQkVGT1JFIElOU0VSVCBP UiBVUERBVEUgT1IgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKICAgRk9SIEVBQ0ggUk9X IEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOwogCitDUkVBVEUg VFJJR0dFUiBmcG9fYmVmb3JlX3JvdzEKKyAgQkVGT1JFIFVQREFURSBPRiB2YWxpZF9hdCBPTiBm b3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBkdW1w X3RyaWdnZXIoZmFsc2UsIGZhbHNlKTsKKwogQ1JFQVRFIFRSSUdHRVIgZnBvX2FmdGVyX2luc2Vy dF9yb3cKICAgQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKICAgRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOwpAQCAtMTI5 Miw2ICsxMzAwLDcgQEAgRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0MjsKIERST1AgVFlQ RSBteWRhdGVyYW5nZTsKIAogLS0gVGVzdCBGT1IgUE9SVElPTiBPRiBhZ2FpbnN0IGEgcGFydGl0 aW9uZWQgdGFibGUuCistLSBJbmNsdWRlIGEgR0VORVJBVEVEIFNUT1JFRCBjb2x1bW4gdG8gdGVz dCB1cGRhdGVkQ29scyBjb2x1bW4gbWFwcGluZy4KIC0tIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzEg aGFzIHRoZSBzYW1lIGF0dG51bXMgYXMgdGhlIHJvb3QKIC0tIHRlbXBvcmFsX3BhcnRpdGlvbmVk XzMgaGFzIHRoZSBkaWZmZXJlbnQgYXR0bnVtcyBmcm9tIHRoZSByb290CiAtLSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF81IGhhcyB0aGUgZGlmZmVyZW50IGF0dG51bXMgdG9vLCBidXQgcmV2ZXJzZWQK QEAgLTEzMDAsNiArMTMwOSw3IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAo CiAgIGlkIGludDRyYW5nZSwKICAgdmFsaWRfYXQgZGF0ZXJhbmdlLAogICBuYW1lIHRleHQsCisg IHJhbmdlX2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAodXBwZXIodmFsaWRfYXQpIC0gbG93 ZXIodmFsaWRfYXQpKSBTVE9SRUQsCiAgIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF91 cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQogKSBQQVJUSVRJT04gQlkg TElTVCAoaWQpOwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzEgUEFSVElUSU9O IE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwyKScsICdbMiwzKScp OwpAQCAtMTMwNywxMyArMTMxNywxNSBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfMyBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUwogQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRp dGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbNSw2KScsICdbNiw3KScpOwogCiBBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZCBERVRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVk XzM7Ci1BTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIERST1AgQ09MVU1OIGlkLCBE Uk9QIENPTFVNTiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMg RFJPUCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZhbGlkX2F0IENBU0NBREU7CiBBTFRFUiBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIEFERCBDT0xVTU4gaWQgaW50NHJhbmdlIE5PVCBOVUxM LCBBREQgQ09MVU1OIHZhbGlkX2F0IGRhdGVyYW5nZSBOT1QgTlVMTDsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkXzMgQUREIENPTFVNTiByYW5nZV9sZW4gaW50IEdFTkVSQVRFRCBB TFdBWVMgQVMgKHVwcGVyKHZhbGlkX2F0KSAtIGxvd2VyKHZhbGlkX2F0KSkgU1RPUkVEOwogQUxU RVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgQVRUQUNIIFBBUlRJVElPTiB0ZW1wb3JhbF9w YXJ0aXRpb25lZF8zIEZPUiBWQUxVRVMgSU4gKCdbMyw0KScsICdbNCw1KScpOwogCiBBTFRFUiBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBERVRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRp dGlvbmVkXzU7Ci1BTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IERST1AgQ09MVU1O IGlkLCBEUk9QIENPTFVNTiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkXzUgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZhbGlkX2F0IENBU0NBREU7CiBBTFRF UiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IEFERCBDT0xVTU4gdmFsaWRfYXQgZGF0ZXJh bmdlIE5PVCBOVUxMLCBBREQgQ09MVU1OIGlkIGludDRyYW5nZSBOT1QgTlVMTDsKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgQUREIENPTFVNTiByYW5nZV9sZW4gaW50IEdFTkVS QVRFRCBBTFdBWVMgQVMgKHVwcGVyKHZhbGlkX2F0KSAtIGxvd2VyKHZhbGlkX2F0KSkgU1RPUkVE OwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgQVRUQUNIIFBBUlRJVElPTiB0ZW1w b3JhbF9wYXJ0aXRpb25lZF81IEZPUiBWQUxVRVMgSU4gKCdbNSw2KScsICdbNiw3KScpOwogCiBJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoaWQsIHZhbGlkX2F0LCBuYW1lKSBWQUxV RVMKQEAgLTEzNTgsNyArMTM3MCw3IEBAIFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA2LTAxJyBUTyAnMjAwMC0wCiAKIC0tIFVw ZGF0ZSBhbGwgcGFydGl0aW9ucyBhdCBvbmNlIChlYWNoIHdpdGggbGVmdG92ZXJzKQogCi1TRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKK1NF TEVDVCAqLCB1cHBlcih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X3BhcnRpdGlvbmVkXzEgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF8zIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKIFNFTEVDVCAqIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfNSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CkBAIC0xMzk4LDQg KzE0MTAsNjIgQEAgU0VMRUNUICogRlJPTSBmcG9fcnVsZSBPUkRFUiBCWSBmMTsKIAogRFJPUCBU QUJMRSBmcG9fcnVsZTsKIAorLS0gVVBEQVRFIEZPUiBQT1JUSU9OIE9GIHdpdGggZ2VuZXJhdGVk IHN0b3JlZCBjb2x1bW5zCistLSBUaGUgZ2VuZXJhdGVkIGNvbHVtbiBkZXBlbmRzIG9uIHRoZSBy YW5nZSBjb2x1bW4sIHNvIGl0IG11c3QgYmUKKy0tIHJlY29tcHV0ZWQgd2hlbiBGT1IgUE9SVElP TiBPRiBuYXJyb3dzIHRoZSByYW5nZS4KK0NSRUFURSBUQUJMRSBmcG9fZ2VuZXJhdGVkICgKKyAg aWQgaW50LAorICB2YWxpZF9hdCBpbnQ0cmFuZ2UsCisgIHJhbmdlX2xlbiBpbnQgR0VORVJBVEVE IEFMV0FZUyBBUyAodXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKSBTVE9SRUQsCisg IHJhbmdlX2xlbnYgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKHVwcGVyKHZhbGlkX2F0KSAtIGxv d2VyKHZhbGlkX2F0KSkKKyk7CitJTlNFUlQgSU5UTyBmcG9fZ2VuZXJhdGVkIChpZCwgdmFsaWRf YXQpIFZBTFVFUyAoMSwgJ1sxMCwxMDApJyk7CisKK1NFTEVDVCAqIEZST00gZnBvX2dlbmVyYXRl ZCBPUkRFUiBCWSB2YWxpZF9hdDsKKworLS0gQWZ0ZXIgdGhlIEZPUiBQT1JUSU9OIE9GIChGUE8p IHVwZGF0ZSwgYWxsIHRocmVlIHJlc3VsdGluZyByb3dzCistLSAobGVmdG92ZXItYmVmb3JlLCB1 cGRhdGVkLCBhbmQgbGVmdG92ZXItYWZ0ZXIpIG11c3QgY29udGFpbiB0aGUgY29ycmVjdAorLS0g dmFsdWVzIGZvciByYW5nZV9sZW4gYW5kIHJhbmdlX2xlbnYuCitVUERBVEUgZnBvX2dlbmVyYXRl ZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDMwIFRPIDcwCisgIFNFVCBpZCA9IDI7 CisKK1NFTEVDVCAqIEZST00gZnBvX2dlbmVyYXRlZCBPUkRFUiBCWSB2YWxpZF9hdDsKKworLS0g QWxzbyB0ZXN0IHdpdGggYSBnZW5lcmF0ZWQgY29sdW1uIHRoYXQgcmVmZXJlbmNlcyBib3RoIGEg U0VUIGNvbHVtbgorLS0gYW5kIHRoZSByYW5nZSBjb2x1bW4uCitEUk9QIFRBQkxFIGZwb19nZW5l cmF0ZWQ7CitDUkVBVEUgVEFCTEUgZnBvX2dlbmVyYXRlZCAoCisgIGlkIGludCwKKyAgdmFsaWRf YXQgaW50NHJhbmdlLAorICBpZF9wbHVzX2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoaWQg KyB1cHBlcih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkpIFNUT1JFRCwKKyAgaWRfcGx1c19s ZW52IGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpZCArIHVwcGVyKHZhbGlkX2F0KSAtIGxvd2Vy KHZhbGlkX2F0KSkKKyk7CisKK0lOU0VSVCBJTlRPIGZwb19nZW5lcmF0ZWQgKGlkLCB2YWxpZF9h dCkgVkFMVUVTICgxLCAnWzEwLDEwMCknKTsKK1NFTEVDVCAqIEZST00gZnBvX2dlbmVyYXRlZCBP UkRFUiBCWSB2YWxpZF9hdDsKKworVVBEQVRFIGZwb19nZW5lcmF0ZWQKKyAgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAzMCBUTyA3MAorICBTRVQgaWQgPSAyOworU0VMRUNUICogRlJPTSBm cG9fZ2VuZXJhdGVkIE9SREVSIEJZIHZhbGlkX2F0OworRFJPUCBUQUJMRSBmcG9fZ2VuZXJhdGVk OworCistLSBUZXN0IHRoYXQgVVBEQVRFIE9GIGNvbG5hbWUgdHJpZ2dlcnMgZmlyZSBpZiBjb2xu YW1lIGlzIHZhbGlkX2F0OgorQ1JFQVRFIFRBQkxFIGZwb191cGRhdGVfb2ZfdHJpZ2dlciAoCisg IGlkIGludCwKKyAgdmFsaWRfYXQgaW50NHJhbmdlCispOworSU5TRVJUIElOVE8gZnBvX3VwZGF0 ZV9vZl90cmlnZ2VyIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoMSwgJ1sxMCwxMDApJyk7CitDUkVB VEUgVFJJR0dFUiBmcG9fYmVmb3JlX3JvdzEKKyAgQkVGT1JFIFVQREFURSBPRiB2YWxpZF9hdCBP TiBmcG9fdXBkYXRlX29mX3RyaWdnZXIKKyAgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJF IGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOworQ1JFQVRFIFRSSUdHRVIgZnBvX2JlZm9yZV9y b3cyCisgIEJFRk9SRSBVUERBVEUgT0YgdmFsaWRfYXQgT04gZnBvX3VwZGF0ZV9vZl90cmlnZ2Vy CisgIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoZmFs c2UsIGZhbHNlKTsKK1VQREFURSBmcG9fdXBkYXRlX29mX3RyaWdnZXIKKyAgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAzMCBUTyA3MAorICBTRVQgaWQgPSAyOworRFJPUCBUQUJMRSBmcG9f dXBkYXRlX29mX3RyaWdnZXI7CisKIFJFU0VUIGRhdGVzdHlsZTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJp dmlsZWdlcy5zcWwKaW5kZXggOTVhNDY4NTRiMzcuLjZjZDliYjg0MGZmIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wcml2aWxlZ2VzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wcml2aWxlZ2VzLnNxbApAQCAtNzkwLDE1ICs3OTAsMjMgQEAgQ1JFQVRFIFRBQkxFIHQx ICgKICAgdmFsaWRfYXQgdHNyYW5nZSwKIAlDT05TVFJBSU5UIHQxcGsgUFJJTUFSWSBLRVkgKGMx LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQogKTsKLS0tIFVQREFURSByZXF1aXJlcyBzZWxl Y3QgcGVybWlzc2lvbiBvbiB0aGUgdmFsaWRfYXQgY29sdW1uIChidXQgbm90IHVwZGF0ZSk6Cist LSBVUERBVEUgcmVxdWlyZXMgc2VsZWN0IGFuZCB1cGRhdGUgcGVybWlzc2lvbiBvbiB0aGUgdmFs aWRfYXQgY29sdW1uOgogR1JBTlQgU0VMRUNUIChjMSkgT04gdDEgVE8gcmVncmVzc19wcml2X3Vz ZXIyOwogR1JBTlQgVVBEQVRFIChjMSkgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIyOwogR1JB TlQgU0VMRUNUIChjMSwgdmFsaWRfYXQpIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMzsKIEdS QU5UIFVQREFURSAoYzEpIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMzsKK0dSQU5UIFNFTEVD VCAoYzEpIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyNDsKK0dSQU5UIFVQREFURSAoYzEsIHZh bGlkX2F0KSBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjQ7CitHUkFOVCBTRUxFQ1QgKGMxLCB2 YWxpZF9hdCkgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXI1OworR1JBTlQgVVBEQVRFIChjMSwg dmFsaWRfYXQpIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyNTsKIFNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT04gcmVncmVzc19wcml2X3VzZXIyOwogVVBEQVRFIHQxIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMDAtMDEtMDEnIFRPICcyMDAxLTAxLTAxJyBTRVQgYzEgPSAnWzIsMykn OwogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjM7CiBVUERBVEUg dDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0wMScgVE8gJzIwMDEtMDEt MDEnIFNFVCBjMSA9ICdbMiwzKSc7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nf cHJpdl91c2VyNDsKK1VQREFURSB0MSBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAw LTAxLTAxJyBUTyAnMjAwMS0wMS0wMScgU0VUIGMxID0gJ1syLDMpJzsKK1NFVCBTRVNTSU9OIEFV VEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXI1OworVVBEQVRFIHQxIEZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMDEnIFRPICcyMDAxLTAxLTAxJyBTRVQgYzEgPSAnWzIs MyknOwogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CiAtLSBE RUxFVEUgcmVxdWlyZXMgc2VsZWN0IHBlcm1pc3Npb24gb24gdGhlIHZhbGlkX2F0IGNvbHVtbjoK IEdSQU5UIERFTEVURSBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjI7Ci0tIAoyLjQ3LjMKCg== --00000000000023ca810652abd484--