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 1sI5bv-00Cwyy-R5 for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Jun 2024 12:00:52 +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 1sI5bt-000AiR-KE for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Jun 2024 12:00:50 +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 1sI5bs-000Agw-TO for pgsql-hackers@lists.postgresql.org; Fri, 14 Jun 2024 12:00:50 +0000 Received: from mail-yb1-xb2b.google.com ([2607:f8b0:4864:20::b2b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sI5br-001HAr-7T for pgsql-hackers@postgresql.org; Fri, 14 Jun 2024 12:00:48 +0000 Received: by mail-yb1-xb2b.google.com with SMTP id 3f1490d57ef6-dff1ab3b2c5so548623276.3 for ; Fri, 14 Jun 2024 05:00:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1718366446; x=1718971246; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=w8L7+39zbwwxHi6GI4HK/UgoCmrGgYQOEL/cT/gkrPM=; b=lljv/hhg13ObQdovCEyURCpTaKbhtvl7rTgws5aKT66uzTc5Bpx+MaGOY+OqvFSqh6 tdh7YVwUwLndYuzYffTxj5ts5rI+rarP4+8SxPTqB8il7ZiEqObKvZGS4eI5IPWdRhyk XCEbyyK29fOYRJJf716DUD91AsUthcKnSDOed7vo0bICLsvetTTZdwhoeeNBxXJLvx4y jWZ0Uod2IdzGRS3WJLBOQhUSyATHiWJR5HrGZ4VviVZnsjqf5yxyBrxt66iYLcchccv7 aNRXTCRfwxAa14RT99zG+tDv6wBaqnwwsbMk0JVISoEYHMI6IJGuA8iw8ukd6esp5o+A VzFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718366446; x=1718971246; 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=w8L7+39zbwwxHi6GI4HK/UgoCmrGgYQOEL/cT/gkrPM=; b=vytYtkOUkUJ8euZY4i8KTfstuZz6DkwvRrs7puUqgX2Nd8ll8e8RkUbf2afjZxOqhy iP0NC24Vple9Ixrs+kyvB0ZRT2r4v0MvtPI7EJB4P6pKmqv/qBhGZs2PwIOcAISOgwL2 Re7UYLHhOywV0y2hsvp65TzCJCcpPpom3yZJ2fohlAZe3yLmoRQsgeJn3Ij6RuUIfG7c awcuKOtjC9PWxmJUqMbHDrThSA1BvmJzZ9ZSr62ffD9Jtd8Unz+AGkCaAd2mmQdQCtAR Fey5e2nqrER1ErmmmTb3tZ/ND1n8KOWvDmWqjcx9ND1J9QNO8zYMIHt1pXiXoNpHjo/R Z8uw== X-Forwarded-Encrypted: i=1; AJvYcCXyf/Riv487olTzf7zaw+gi2fpZBoA4KQ2SHha27Hc9UM72LSRoqpjb0ZCrEQCEJHWVCqnT1/CHfQ7RMVwavCrflDALOu5OBOuu8pYV X-Gm-Message-State: AOJu0YyyOzBb3YAJ3iNAanu+m+OeMgeYgAqiyfJIbF1p6eqWC2eUlAzD GbrSfuT33aRaue2IflY/RSliIjwIzDpmto+0pnwKzMDBuYf673A8Z4eLpDV/XDRcJWNH+OGzM3w VeXNhVExafzDv5XJTjSLud5thCO0= X-Google-Smtp-Source: AGHT+IHJ6P0JzwGbv2cHWKLF9OF1710e5zMwldIN8lo7wXIbisW0MRMSxxx9K/ciKAB8o1Mn6HhfQEsc2d5QHBObwn0= X-Received: by 2002:a25:6887:0:b0:dff:83e:b258 with SMTP id 3f1490d57ef6-dff1534bc4amr2321950276.7.1718366446330; Fri, 14 Jun 2024 05:00:46 -0700 (PDT) MIME-Version: 1.0 References: <567ED6CA.2040504@sigaev.ru> <380e5683-cdfd-4220-ab9b-7cccb9d3e480@postgrespro.ru> <7389d0dd-05d5-41b7-a12d-2e73f939f851@postgrespro.ru> <74e3c8bc-dccd-45e5-ad2d-6a6e96fc5864@postgrespro.ru> <6d27d752-db0b-4cac-9843-6ba3dd7a1e94@postgrespro.ru> In-Reply-To: From: Alexander Korotkov Date: Fri, 14 Jun 2024 15:00:33 +0300 Message-ID: Subject: Re: POC, WIP: OR-clause support for indexes To: Andrei Lepikhov Cc: jian he , Alena Rybakina , Robert Haas , pgsql-hackers@postgresql.org, Peter Geoghegan , "Finnerty, Jim" , Marcos Pegoraro , teodor@sigaev.ru, Tomas Vondra , Peter Eisentraut , Ranier Vilela Content-Type: multipart/mixed; boundary="000000000000a0c7a7061ad85d90" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a0c7a7061ad85d90 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Apr 8, 2024 at 1:34=E2=80=AFAM Alexander Korotkov wrote: > > I've revised the patch. Did some beautification, improvements for > documentation, commit messages etc. > > I've pushed the 0001 patch without 0002. I think 0001 is good by > itself given that there is the or_to_any_transform_limit GUC option. > The more similar OR clauses are here the more likely grouping them > into SOAP will be a win. But I've changed the default value to 5. > This will make it less invasive and affect only queries with obvious > repeating patterns. That also reduced the changes in the regression > tests expected outputs. > > Regarding 0002, it seems questionable since it could cause a planning > slowdown for SAOP's with large arrays. Also, it might reduce the win > of transformation made by 0001. So, I think we should skip it for > now. The patch has been reverted from pg17. Let me propose a new version for pg18 based on the valuable feedback from Tom Lane [1][2]. * The transformation is moved to the stage of adding restrictinfos to the base relation (in particular add_base_clause_to_rel()). This leads to interesting consequences. While this allows IndexScans to use transformed clauses, BitmapScans and SeqScans seem unaffected. Therefore, I wasn't able to find a planning regression. * As soon as there is no planning regression anymore, I've removed or_to_any_transform_limit GUC, which was a source of critics. * Now, not only Consts allowed in the SAOP's list, but also Params. * The criticized hash based on expression jumbling has been removed. Now, the plain list is used instead. * OrClauseGroup now gets a legal node tag. That allows to mix it in the list with other nodes without hacks. I think this patch shouldn't be as good as before for optimizing performance of large OR lists, given that BitmapScans and SeqScans still deal with ORs. However, it allows IndexScans to handle more, doesn't seem to cause planning regression and therefore introduce no extra GUC. Overall, this seems like a good compromise. This patch could use some polishing, but I'd like to first hear some feedback on general design. Links 1. https://www.postgresql.org/message-id/3604469.1712628736%40sss.pgh.pa.us 2. https://www.postgresql.org/message-id/3649287.1712642139%40sss.pgh.pa.us ------ Regards, Alexander Korotkov Supabase --000000000000a0c7a7061ad85d90 Content-Type: application/octet-stream; name="v25-0001-Transform-OR-clauses-to-ANY-expression.patch" Content-Disposition: attachment; filename="v25-0001-Transform-OR-clauses-to-ANY-expression.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lxemu1sp0 RnJvbSBjYWM5YTE1MDg1MmEzOTBmODllNTMyMjgyMTIyNDQ1M2M2NjRmNTY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogRnJpLCAxNCBKdW4gMjAyNCAxMDoxNjoyMiArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjI1XSBUcmFuc2Zvcm0gT1IgY2xhdXNlcyB0byBBTlkgZXhwcmVzc2lvbgoKUmVwbGFj ZSAoZXhwciBvcCBDMSkgT1IgKGV4cHIgb3AgQzIpIC4uLiB3aXRoIGV4cHIgb3AgQU5ZKEFSUkFZ W0MxLCBDMiwgLi4uXSkKZHVyaW5nIGFkZGluZyByZXN0cmljdGluZm8ncyB0byB0aGUgYmFzZSBy ZWxhdGlvbi4KCkhlcmUgQ24gaXMgYSBuLXRoIGNvbnN0YW50IG9yIHBhcmFtZXRlcnMgZXhwcmVz c2lvbiwgJ2V4cHInIGlzIG5vbi1jb25zdGFudApleHByZXNzaW9uLCAnb3AnIGlzIGFuIG9wZXJh dG9yIHdoaWNoIHJldHVybnMgYm9vbGVhbiByZXN1bHQgYW5kIGhhcyBhIGNvbW11dGVyCihmb3Ig dGhlIGNhc2Ugb2YgcmV2ZXJzZSBvcmRlciBvZiBjb25zdGFudCBhbmQgbm9uLWNvbnN0YW50IHBh cnRzIG9mIHRoZQpleHByZXNzaW9uLCBsaWtlICdDbiBvcCBleHByJykuCgpEaXNjdXNzaW9uOiBo dHRwczovL3Bvc3Rnci5lcy9tLzU2N0VENkNBLjIwNDA1MDQlNDBzaWdhZXYucnUKQXV0aG9yOiBB bGVuYSBSeWJha2luYSA8bGVuYS5yaWJhY2tpbmFAeWFuZGV4LnJ1PgpBdXRob3I6IEFuZHJleSBM ZXBpa2hvdiA8YS5sZXBpa2hvdkBwb3N0Z3Jlc3Byby5ydT4KUmV2aWV3ZWQtYnk6IFBldGVyIEdl b2doZWdhbiA8cGdAYm93dC5pZT4KUmV2aWV3ZWQtYnk6IFJhbmllciBWaWxlbGEgPHJhbmllci52 ZkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFla29yb3Rrb3ZA Z21haWwuY29tPgpSZXZpZXdlZC1ieTogUm9iZXJ0IEhhYXMgPHJvYmVydG1oYWFzQGdtYWlsLmNv bT4KUmV2aWV3ZWQtYnk6IEppYW4gSGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IFRvbSBMYW5lIDx0Z2xAc3NzLnBnaC5wYS51cz4KLS0tCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYyAgICAgfCAzMTAgKysrKysrKysrKysrKysrKysrKyst CiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAgICAgfCAgMjkgKysKIHNy Yy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmggICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgfCAxODkgKysrKysrKysrKystLQog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dCAgICAgICAgIHwgIDUyICsrKysKIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dCAgICB8ICAxMiArLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC90aWRzY2FuLm91dCAgICAgIHwgICA5ICstCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsICAgICAgfCAgNDIgKysrCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9qb2luLnNxbCAgICAgICAgICAgICAgfCAgIDkgKwogc3JjL3Rlc3QvcmVncmVzcy9z cWwvcGFydGl0aW9uX3BydW5lLnNxbCAgIHwgICAxICsKIHNyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0ICAgICAgICAgICB8ICAgMSArCiAxMSBmaWxlcyBjaGFuZ2VkLCA2MjcgaW5zZXJ0 aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vaW5pdHNwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3Bs YW4uYwppbmRleCBlMmM2OGZlNmY5OS4uMDAyMjUzNTMxOGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL2luaXRzcGxhbi5jCkBAIC0xNCw5ICsxNCwxMyBAQAogICovCiAjaW5jbHVkZSAicG9z dGdyZXMuaCIKIAorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1 ZGUgImNvbW1vbi9oYXNoZm4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNs dWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNsdWRlICJub2Rlcy9xdWVyeWp1bWJsZS5oIgog I2luY2x1ZGUgIm9wdGltaXplci9jbGF1c2VzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2Nvc3Qu aCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvaW5oZXJpdC5oIgpAQCAtMjksOCArMzMsMTEgQEAKICNp bmNsdWRlICJvcHRpbWl6ZXIvcGxhbm5lci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9yZXN0cmlj dGluZm8uaCIKICNpbmNsdWRlICJwYXJzZXIvYW5hbHl6ZS5oIgorI2luY2x1ZGUgInBhcnNlci9w YXJzZV9jb2VyY2UuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfb3Blci5oIgogI2luY2x1ZGUg InJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisj aW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNs dWRlICJ1dGlscy90eXBjYWNoZS5oIgogCkBAIC0zOCw3ICs0NSw2IEBACiBpbnQJCQlmcm9tX2Nv bGxhcHNlX2xpbWl0OwogaW50CQkJam9pbl9jb2xsYXBzZV9saW1pdDsKIAotCiAvKgogICogZGVj b25zdHJ1Y3Rfam9pbnRyZWUgcmVxdWlyZXMgbXVsdGlwbGUgcGFzc2VzIG92ZXIgdGhlIGpvaW4g dHJlZSwgYmVjYXVzZSB3ZQogICogbmVlZCB0byBmaW5pc2ggY29tcHV0aW5nIEpvaW5Eb21haW5z IGJlZm9yZSB3ZSBzdGFydCBkaXN0cmlidXRpbmcgcXVhbHMuCkBAIC0yNjE3LDYgKzI2MjMsMjk2 IEBAIGNoZWNrX3JlZHVuZGFudF9udWxsYWJpbGl0eV9xdWFsKFBsYW5uZXJJbmZvICpyb290LCBO b2RlICpjbGF1c2UpCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogdHJhbnNmb3JtX29yX3Rv X2FueSAtCisgKgkgIERpc2NvdmVyIHRoZSBhcmdzIG9mIGFuIE9SIGV4cHJlc3Npb24gYW5kIHRy eSB0byBncm91cCBzaW1pbGFyIE9SCisgKgkgIGV4cHJlc3Npb25zIHRvIFNBT1AgZXhwcmVzc2lv bnMuCisgKgorICogVGhpcyB0cmFuc2Zvcm1hdGlvbiBncm91cHMgdHdvLXNpZGVkIGVxdWFsaXR5 IGV4cHJlc3Npb24uICBPbmUgc2lkZSBvZgorICogc3VjaCBhbiBleHByZXNzaW9uIG11c3QgYmUg YSBwbGFpbiBjb25zdGFudCBvciBjb25zdGFudCBleHByZXNzaW9uLiAgVGhlCisgKiBvdGhlciBz aWRlIG11c3QgYmUgYSB2YXJpYWJsZSBleHByZXNzaW9uIHdpdGhvdXQgdm9sYXRpbGUgZnVuY3Rp b25zLgorICogVG8gZ3JvdXAgcXVhbHMsIG9wbm8sIGlucHV0Y29sbGlkIG9mIHZhcmlhYmxlIGV4 cHJlc3Npb24sIGFuZCB0eXBlIG9mCisgKiBjb25zdGFudCBleHByZXNzaW9uIG11c3QgYmUgZXF1 YWwgdG9vLgorICoKKyAqIFRoZSBncm91cGluZyB0ZWNobmlxdWUgaXMgYmFzZWQgb24gdGhlIGVx dWl2YWxlbmNlIG9mIHZhcmlhYmxlIHNpZGVzIG9mCisgKiB0aGUgZXhwcmVzc2lvbjogdXNpbmcg ZXhwcklkIGFuZCBlcXVhbCgpIHJvdXRpbmUsIGl0IGdyb3VwcyBjb25zdGFudCBzaWRlcworICog b2Ygc2ltaWxhciBjbGF1c2VzIGludG8gYW4gYXJyYXkuICBBZnRlciB0aGUgZ3JvdXBpbmcgcHJv Y2VkdXJlLCBlYWNoCisgKiBjb3VwbGUgKCd2YXJpYWJsZSBleHByZXNzaW9uJyBhbmQgJ2NvbnN0 YW50IGFycmF5JykgZm9ybXMgYSBuZXcgU0FPUAorICogb3BlcmF0aW9uLCB3aGljaCBpcyBhZGRl ZCB0byB0aGUgYXJncyBsaXN0IG9mIHRoZSByZXR1cm5pbmcgZXhwcmVzc2lvbi4KKyAqLworc3Rh dGljIExpc3QgKgordHJhbnNmb3JtX29yX3RvX2FueShQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAq b3JsaXN0KQoreworCUxpc3QJICAgKm5ld29ybGlzdCA9IE5JTDsKKwlMaXN0CSAgICplbnRyaWVz ID0gTklMOworCUxpc3RDZWxsICAgKmxjOworCWludAkJCWxlbl9vcnMgPSBsaXN0X2xlbmd0aChv cmxpc3QpOworCU9yQ2xhdXNlR3JvdXAgKmVudHJ5ID0gTlVMTDsKKworCUFzc2VydChsZW5fb3Jz ID49IDIpOworCisJZm9yZWFjaChsYywgb3JsaXN0KQorCXsKKwkJUmVzdHJpY3RJbmZvICpyaW5m byA9IChSZXN0cmljdEluZm8gKikgbGZpcnN0KGxjKTsKKwkJT3BFeHByCSAgICpvcnF1YWw7CisJ CU5vZGUJICAgKmNvbnN0X2V4cHI7CisJCU5vZGUJICAgKm5jb25zdF9leHByOworCQlib29sCQlm b3VuZCA9IGZhbHNlOworCQlPaWQJCQlvcG5vOworCQlPaWQJCQljb25zdHR5cGU7CisJCU5vZGUJ ICAgKmxlZnRvcCwKKwkJCQkgICAqcmlnaHRvcDsKKwkJTGlzdENlbGwgICAqbGMyOworCisJCWlm ICghSXNBKHJpbmZvLCBSZXN0cmljdEluZm8pIHx8ICFJc0EocmluZm8tPmNsYXVzZSwgT3BFeHBy KSkKKwkJeworCQkJZW50cmllcyA9IGxhcHBlbmQoZW50cmllcywgcmluZm8pOworCQkJY29udGlu dWU7CisJCX0KKworCQlvcnF1YWwgPSAoT3BFeHByICopIHJpbmZvLT5jbGF1c2U7CisJCW9wbm8g PSBvcnF1YWwtPm9wbm87CisJCWlmIChnZXRfb3BfcmV0dHlwZShvcG5vKSAhPSBCT09MT0lEKQor CQl7CisJCQkvKiBPbmx5IG9wZXJhdG9yIHJldHVybmluZyBib29sZWFuIHN1aXRzIE9SIC0+IEFO WSB0cmFuc2Zvcm1hdGlvbiAqLworCQkJZW50cmllcyA9IGxhcHBlbmQoZW50cmllcywgcmluZm8p OworCQkJY29udGludWU7CisJCX0KKworCQkvKgorCQkgKiBEZXRlY3QgdGhlIGNvbnN0YW50IHNp ZGUgb2YgdGhlIGNsYXVzZS4gUmVjYWxsIG5vbi1jb25zdGFudAorCQkgKiBleHByZXNzaW9uIGNh biBiZSBtYWRlIG5vdCBvbmx5IHdpdGggVmFycywgYnV0IGFsc28gd2l0aCBQYXJhbXMsCisJCSAq IHdoaWNoIGlzIG5vdCBib25kZWQgd2l0aCBhbnkgcmVsYXRpb24uIFRodXMsIHdlIGRldGVjdCB0 aGUgY29uc3QKKwkJICogc2lkZSAtIGlmIGFub3RoZXIgc2lkZSBpcyBjb25zdGFudCB0b28sIHRo ZSBvcnF1YWwgY291bGRuJ3QgYmUgYW4KKwkJICogT3BFeHByLiAgR2V0IHBvaW50ZXJzIHRvIGNv bnN0YW50IGFuZCBleHByZXNzaW9uIHNpZGVzIG9mIHRoZSBxdWFsLgorCQkgKi8KKwkJbGVmdG9w ID0gZ2V0X2xlZnRvcChvcnF1YWwpOworCQlpZiAoSXNBKGxlZnRvcCwgUmVsYWJlbFR5cGUpKQor CQkJbGVmdG9wID0gKE5vZGUgKikgKChSZWxhYmVsVHlwZSAqKSBsZWZ0b3ApLT5hcmc7CisJCXJp Z2h0b3AgPSBnZXRfcmlnaHRvcChvcnF1YWwpOworCQlpZiAoSXNBKHJpZ2h0b3AsIFJlbGFiZWxU eXBlKSkKKwkJCXJpZ2h0b3AgPSAoTm9kZSAqKSAoKFJlbGFiZWxUeXBlICopIHJpZ2h0b3ApLT5h cmc7CisKKwkJaWYgKElzQShsZWZ0b3AsIENvbnN0KSB8fCBJc0EobGVmdG9wLCBQYXJhbSkpCisJ CXsKKwkJCW9wbm8gPSBnZXRfY29tbXV0YXRvcihvcG5vKTsKKworCQkJaWYgKCFPaWRJc1ZhbGlk KG9wbm8pKQorCQkJeworCQkJCS8qIGNvbW11dGF0b3IgZG9lc24ndCBleGlzdCwgd2UgY2FuJ3Qg cmV2ZXJzZSB0aGUgb3JkZXIgKi8KKwkJCQllbnRyaWVzID0gbGFwcGVuZChlbnRyaWVzLCByaW5m byk7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCW5jb25zdF9leHByID0gZ2V0X3JpZ2h0b3Ao b3JxdWFsKTsKKwkJCWNvbnN0X2V4cHIgPSBnZXRfbGVmdG9wKG9ycXVhbCk7CisJCX0KKwkJZWxz ZSBpZiAoSXNBKHJpZ2h0b3AsIENvbnN0KSB8fCBJc0EocmlnaHRvcCwgUGFyYW0pKQorCQl7CisJ CQljb25zdF9leHByID0gZ2V0X3JpZ2h0b3Aob3JxdWFsKTsKKwkJCW5jb25zdF9leHByID0gZ2V0 X2xlZnRvcChvcnF1YWwpOworCQl9CisJCWVsc2UKKwkJeworCQkJZW50cmllcyA9IGxhcHBlbmQo ZW50cmllcywgcmluZm8pOworCQkJY29udGludWU7CisJCX0KKworCQkvKgorCQkgKiBGb3JiaWQg dHJhbnNmb3JtYXRpb24gZm9yIGNvbXBvc2l0ZSB0eXBlcywgcmVjb3JkcywgYW5kIHZvbGF0aWxl CisJCSAqIGV4cHJlc3Npb25zLgorCQkgKi8KKwkJY29uc3R0eXBlID0gZXhwclR5cGUoY29uc3Rf ZXhwcik7CisJCWlmICh0eXBlX2lzX3Jvd3R5cGUoZXhwclR5cGUoY29uc3RfZXhwcikpIHx8CisJ CQl0eXBlX2lzX3Jvd3R5cGUoY29uc3R0eXBlKSB8fAorCQkJY29udGFpbl92b2xhdGlsZV9mdW5j dGlvbnMoKE5vZGUgKikgbmNvbnN0X2V4cHIpKQorCQl7CisJCQllbnRyaWVzID0gbGFwcGVuZChl bnRyaWVzLCByaW5mbyk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWZvcmVhY2gobGMyLCBlbnRy aWVzKQorCQl7CisJCQlpZiAoIUlzQShsZmlyc3QobGMyKSwgT3JDbGF1c2VHcm91cCkpCisJCQkJ Y29udGludWU7CisKKwkJCWVudHJ5ID0gKE9yQ2xhdXNlR3JvdXAgKikgbGZpcnN0KGxjMik7CisK KwkJCWlmIChlbnRyeS0+b3BubyA9PSBvcG5vICYmCisJCQkJZW50cnktPmNvbnN0dHlwZSA9PSBj b25zdHR5cGUgJiYKKwkJCQllbnRyeS0+aW5wdXRjb2xsaWQgPT0gZXhwckNvbGxhdGlvbihjb25z dF9leHByKSAmJgorCQkJCWVxdWFsKGVudHJ5LT5leHByLCBuY29uc3RfZXhwcikpCisJCQl7CisJ CQkJZm91bmQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJaWYgKHVubGlrZWx5 KGZvdW5kKSkKKwkJeworCQkJZW50cnktPmNvbnN0cyA9IGxhcHBlbmQoZW50cnktPmNvbnN0cywg Y29uc3RfZXhwcik7CisJCQllbnRyeS0+ZXhwcnMgPSBsYXBwZW5kKGVudHJ5LT5leHBycywgcmlu Zm8pOworCQl9CisJCWVsc2UKKwkJeworCQkJZW50cnkgPSBtYWtlTm9kZShPckNsYXVzZUdyb3Vw KTsKKwkJCWVudHJ5LT5leHByID0gKEV4cHIgKikgbmNvbnN0X2V4cHI7CisJCQllbnRyeS0+b3Bu byA9IG9wbm87CisJCQllbnRyeS0+Y29uc3R0eXBlID0gY29uc3R0eXBlOworCQkJZW50cnktPmlu cHV0Y29sbGlkID0gZXhwckNvbGxhdGlvbihjb25zdF9leHByKTsKKworCQkJZW50cnktPmNvbnN0 cyA9IGxpc3RfbWFrZTEoY29uc3RfZXhwcik7CisJCQllbnRyeS0+ZXhwcnMgPSBsaXN0X21ha2Ux KHJpbmZvKTsKKworCQkJLyoKKwkJCSAqIEFkZCB0aGUgZW50cnkgdG8gdGhlIGxpc3QuICBJdCBp cyBuZWVkZWQgZXhjbHVzaXZlbHkgdG8gbWFuYWdlCisJCQkgKiB0aGUgcHJvYmxlbSB3aXRoIHRo ZSBvcmRlciBvZiB0cmFuc2Zvcm1lZCBjbGF1c2VzIGluIGV4cGxhaW4uCisJCQkgKiBIYXNoIHZh bHVlIGNhbiBkZXBlbmQgb24gdGhlIHBsYXRmb3JtIGFuZCB2ZXJzaW9uLiAgSGVuY2UsCisJCQkg KiBzZXF1ZW50YWwgc2NhbiBvZiB0aGUgaGFzaCB0YWJsZSB3b3VsZCBwcm9uZSB0byBjaGFuZ2Ug dGhlCisJCQkgKiBvcmRlciBvZiBjbGF1c2VzIGluIGxpc3RzIGFuZCwgYXMgYSByZXN1bHQsIGJy ZWFrIHJlZ3Jlc3Npb24KKwkJCSAqIHRlc3RzIGFjY2lkZW50aWFsbHkuCisJCQkgKi8KKwkJCWVu dHJpZXMgPSBsYXBwZW5kKGVudHJpZXMsIGVudHJ5KTsKKwkJfQorCX0KKworCS8qIExldCdzIGNv bnZlcnQgZWFjaCBncm91cCBvZiBjbGF1c2VzIHRvIGFuIEFOWSBleHByZXNzaW9uLiAqLworCisJ LyoKKwkgKiBHbyB0aHJvdWdoIHRoZSBsaXN0IG9mIGdyb3VwcyBhbmQgY29udmVydCBlYWNoLCB3 aGVyZSBudW1iZXIgb2YgY29uc3RzCisJICogbW9yZSB0aGFuIDEuIHRyaXZpYWwgZ3JvdXBzIG1v dmUgdG8gT1ItbGlzdCBhZ2FpbgorCSAqLworCWZvcmVhY2gobGMsIGVudHJpZXMpCisJeworCQlP aWQJCQlzY2FsYXJfdHlwZTsKKwkJT2lkCQkJYXJyYXlfdHlwZTsKKworCQlpZiAoIUlzQShsZmly c3QobGMpLCBPckNsYXVzZUdyb3VwKSkKKwkJeworCQkJbmV3b3JsaXN0ID0gbGFwcGVuZChuZXdv cmxpc3QsIGxmaXJzdChsYykpOworCQkJY29udGludWU7CisJCX0KKworCQllbnRyeSA9IChPckNs YXVzZUdyb3VwICopIGxmaXJzdChsYyk7CisKKwkJQXNzZXJ0KGxpc3RfbGVuZ3RoKGVudHJ5LT5j b25zdHMpID4gMCk7CisJCUFzc2VydChsaXN0X2xlbmd0aChlbnRyeS0+ZXhwcnMpID09IGxpc3Rf bGVuZ3RoKGVudHJ5LT5jb25zdHMpKTsKKworCQlpZiAobGlzdF9sZW5ndGgoZW50cnktPmNvbnN0 cykgPT0gMSkKKwkJeworCQkJLyoKKwkJCSAqIE9ubHkgb25lIGVsZW1lbnQgcmV0dXJucyBvcmln aW4gZXhwcmVzc2lvbiBpbnRvIHRoZSBCb29sRXhwcgorCQkJICogYXJncyBsaXN0IHVuY2hhbmdl ZC4KKwkJCSAqLworCQkJbGlzdF9mcmVlKGVudHJ5LT5jb25zdHMpOworCQkJbmV3b3JsaXN0ID0g bGlzdF9jb25jYXQobmV3b3JsaXN0LCBlbnRyeS0+ZXhwcnMpOworCQkJY29udGludWU7CisJCX0K KworCQkvKgorCQkgKiBEbyB0aGUgdHJhbnNmb3JtYXRpb24uCisJCSAqLworCQlzY2FsYXJfdHlw ZSA9IGVudHJ5LT5jb25zdHR5cGU7CisJCWFycmF5X3R5cGUgPSBPaWRJc1ZhbGlkKHNjYWxhcl90 eXBlKSA/IGdldF9hcnJheV90eXBlKHNjYWxhcl90eXBlKSA6CisJCQlJbnZhbGlkT2lkOworCisJ CWlmIChPaWRJc1ZhbGlkKGFycmF5X3R5cGUpKQorCQl7CisJCQkvKgorCQkJICogT0s6IGNvZXJj ZSBhbGwgdGhlIHJpZ2h0LWhhbmQgbm9uLVZhciBpbnB1dHMgdG8gdGhlIGNvbW1vbiB0eXBlCisJ CQkgKiBhbmQgYnVpbGQgYW4gQXJyYXlFeHByIGZvciB0aGVtLgorCQkJICovCisJCQlMaXN0CSAg ICphZXhwcnMgPSBOSUw7CisJCQlBcnJheUV4cHIgICpuZXdhID0gTlVMTDsKKwkJCVNjYWxhckFy cmF5T3BFeHByICpzYW9wZXhwciA9IE5VTEw7CisJCQlIZWFwVHVwbGUJb3BlcnR1cDsKKwkJCUZv cm1fcGdfb3BlcmF0b3Igb3BlcmZvcm07CisJCQlMaXN0CSAgICpuYW1lbGlzdCA9IE5JTDsKKwkJ CWJvb2wJCWlzX3B1c2hlZF9kb3duID0gZmFsc2U7CisJCQlib29sCQloYXNfY2xvbmUgPSBmYWxz ZTsKKwkJCUluZGV4CQlzZWN1cml0eV9sZXZlbCA9IDA7CisJCQlSZWxpZHMJCXJlcXVpcmVkX3Jl bGlkcyA9IE5VTEw7CisJCQlSZWxpZHMJCWluY29tcGF0aWJsZV9yZWxpZHMgPSBOVUxMOworCQkJ UmVsaWRzCQlvdXRlcl9yZWxpZHMgPSBOVUxMOworCQkJTGlzdENlbGwgICAqbGMyOworCisJCQlm b3JlYWNoKGxjMiwgZW50cnktPmNvbnN0cykKKwkJCXsKKwkJCQlOb2RlCSAgICpub2RlID0gKE5v ZGUgKikgbGZpcnN0KGxjMik7CisKKwkJCQlub2RlID0gY29lcmNlX3RvX2NvbW1vbl90eXBlKE5V TEwsIG5vZGUsIHNjYWxhcl90eXBlLAorCQkJCQkJCQkJCQkgIk9SIEFOWSBUcmFuc2Zvcm1hdGlv biIpOworCQkJCWFleHBycyA9IGxhcHBlbmQoYWV4cHJzLCBub2RlKTsKKwkJCX0KKworCQkJZm9y ZWFjaChsYzIsIGVudHJ5LT5leHBycykKKwkJCXsKKwkJCQlSZXN0cmljdEluZm8gKnJpbmZvID0g KFJlc3RyaWN0SW5mbyAqKSBsZmlyc3QobGMyKTsKKworCQkJCWlzX3B1c2hlZF9kb3duID0gaXNf cHVzaGVkX2Rvd24gfHwgcmluZm8tPmlzX3B1c2hlZF9kb3duOworCQkJCWhhc19jbG9uZSA9IGhh c19jbG9uZSB8fCByaW5mby0+aXNfcHVzaGVkX2Rvd247CisJCQkJc2VjdXJpdHlfbGV2ZWwgPSBN YXgoc2VjdXJpdHlfbGV2ZWwsIHJpbmZvLT5zZWN1cml0eV9sZXZlbCk7CisJCQkJcmVxdWlyZWRf cmVsaWRzID0gYm1zX3VuaW9uKHJlcXVpcmVkX3JlbGlkcywgcmluZm8tPnJlcXVpcmVkX3JlbGlk cyk7CisJCQkJaW5jb21wYXRpYmxlX3JlbGlkcyA9IGJtc191bmlvbihpbmNvbXBhdGlibGVfcmVs aWRzLCByaW5mby0+aW5jb21wYXRpYmxlX3JlbGlkcyk7CisJCQkJb3V0ZXJfcmVsaWRzID0gYm1z X3VuaW9uKG91dGVyX3JlbGlkcywgcmluZm8tPm91dGVyX3JlbGlkcyk7CisJCQl9CisKKwkJCW5l d2EgPSBtYWtlTm9kZShBcnJheUV4cHIpOworCQkJLyogYXJyYXlfY29sbGlkIHdpbGwgYmUgc2V0 IGJ5IHBhcnNlX2NvbGxhdGUuYyAqLworCQkJbmV3YS0+ZWxlbWVudF90eXBlaWQgPSBzY2FsYXJf dHlwZTsKKwkJCW5ld2EtPmFycmF5X3R5cGVpZCA9IGFycmF5X3R5cGU7CisJCQluZXdhLT5tdWx0 aWRpbXMgPSBmYWxzZTsKKwkJCW5ld2EtPmVsZW1lbnRzID0gYWV4cHJzOworCQkJbmV3YS0+bG9j YXRpb24gPSAtMTsKKworCQkJLyoKKwkJCSAqIFRyeSB0byBjYXN0IHRoaXMgZXhwcmVzc2lvbiB0 byBDb25zdC4gRHVlIHRvIGN1cnJlbnQgc3RyaWN0CisJCQkgKiB0cmFuc2Zvcm1hdGlvbiBydWxl cyBpdCBzaG91bGQgYmUgZG9uZSBbYWxtb3N0XSBldmVyeSB0aW1lLgorCQkJICovCisJCQluZXdh ID0gKEFycmF5RXhwciAqKSBldmFsX2NvbnN0X2V4cHJlc3Npb25zKE5VTEwsIChOb2RlICopIG5l d2EpOworCisJCQlvcGVydHVwID0gU2VhcmNoU3lzQ2FjaGUxKE9QRVJPSUQsCisJCQkJCQkJCQkg IE9iamVjdElkR2V0RGF0dW0oZW50cnktPm9wbm8pKTsKKwkJCWlmICghSGVhcFR1cGxlSXNWYWxp ZChvcGVydHVwKSkKKwkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3Bl cmF0b3IgJXUiLAorCQkJCQkgZW50cnktPm9wbm8pOworCisJCQlvcGVyZm9ybSA9IChGb3JtX3Bn X29wZXJhdG9yKSBHRVRTVFJVQ1Qob3BlcnR1cCk7CisJCQlpZiAoIU9wZXJhdG9ySXNWaXNpYmxl KGVudHJ5LT5vcG5vKSkKKwkJCQluYW1lbGlzdCA9IGxhcHBlbmQobmFtZWxpc3QsIG1ha2VTdHJp bmcoZ2V0X25hbWVzcGFjZV9uYW1lKG9wZXJmb3JtLT5vcHJuYW1lc3BhY2UpKSk7CisKKwkJCW5h bWVsaXN0ID0gbGFwcGVuZChuYW1lbGlzdCwgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIob3Bl cmZvcm0tPm9wcm5hbWUpKSkpOworCQkJUmVsZWFzZVN5c0NhY2hlKG9wZXJ0dXApOworCisJCQlz YW9wZXhwciA9CisJCQkJKFNjYWxhckFycmF5T3BFeHByICopCisJCQkJbWFrZV9zY2FsYXJfYXJy YXlfb3AoTlVMTCwKKwkJCQkJCQkJCSBuYW1lbGlzdCwKKwkJCQkJCQkJCSB0cnVlLAorCQkJCQkJ CQkJIChOb2RlICopIGVudHJ5LT5leHByLAorCQkJCQkJCQkJIChOb2RlICopIG5ld2EsCisJCQkJ CQkJCQkgLTEpOworCQkJc2FvcGV4cHItPmlucHV0Y29sbGlkID0gZW50cnktPmlucHV0Y29sbGlk OworCisJCQluZXdvcmxpc3QgPSBsYXBwZW5kKG5ld29ybGlzdCwgbWFrZV9yZXN0cmljdGluZm8o cm9vdCwgKEV4cHIgKikgc2FvcGV4cHIsIGlzX3B1c2hlZF9kb3duLCBoYXNfY2xvbmUsIGZhbHNl LCBmYWxzZSwgc2VjdXJpdHlfbGV2ZWwsIHJlcXVpcmVkX3JlbGlkcywgaW5jb21wYXRpYmxlX3Jl bGlkcywgb3V0ZXJfcmVsaWRzKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogSWYg dGhlIGNvbnN0IG5vZGUncyAocmlnaHQgc2lkZSBvZiBvcGVyYXRvciBleHByZXNzaW9uKSB0eXBl CisJCQkgKiBkb24ndCBoYXZlIOKAnHRydWXigJ0gYXJyYXkgdHlwZSwgdGhlbiB3ZSBjYW5ubm90 IGRvIHRoZQorCQkJICogdHJhbnNmb3JtYXRpb24uIFdlIHNpbXBseSBjb25jYXRlbmF0ZSB0aGUg ZXhwcmVzc2lvbiBub2RlLgorCQkJICovCisJCQlsaXN0X2ZyZWUoZW50cnktPmNvbnN0cyk7CisJ CQluZXdvcmxpc3QgPSBsaXN0X2NvbmNhdChuZXdvcmxpc3QsIGVudHJ5LT5leHBycyk7CisJCX0K Kwl9CisJbGlzdF9mcmVlKGVudHJpZXMpOworCisJLyogT25lIG1vcmUgdHJpY2s6IGFzc2VtYmxl IGNvcnJlY3QgY2xhdXNlICovCisJcmV0dXJuIG5ld29ybGlzdDsKK30KKwogLyoKICAqIGFkZF9i YXNlX2NsYXVzZV90b19yZWwKICAqCQlBZGQgJ3Jlc3RyaWN0aW5mbycgYXMgYSBiYXNlcmVzdHJp Y3RpbmZvIHRvIHRoZSBiYXNlIHJlbGF0aW9uIGRlbm90ZWQKQEAgLTI2NzcsNiArMjk3MywxOCBA QCBhZGRfYmFzZV9jbGF1c2VfdG9fcmVsKFBsYW5uZXJJbmZvICpyb290LCBJbmRleCByZWxpZCwK IAkJfQogCX0KIAorCWlmIChyZXN0cmljdGlvbl9pc19vcl9jbGF1c2UocmVzdHJpY3RpbmZvKSkK Kwl7CisJCUJvb2xFeHByICAgKm9yRXhwciA9IChCb29sRXhwciAqKSByZXN0cmljdGluZm8tPm9y Y2xhdXNlOworCisJCUFzc2VydChpc19vcmNsYXVzZShyZXN0cmljdGluZm8tPm9yY2xhdXNlKSk7 CisKKwkJaWYgKGxpc3RfbGVuZ3RoKG9yRXhwci0+YXJncykgPj0gMikKKwkJeworCQkJb3JFeHBy LT5hcmdzID0gdHJhbnNmb3JtX29yX3RvX2FueShyb290LCBvckV4cHItPmFyZ3MpOworCQl9CisJ fQorCiAJLyogQWRkIGNsYXVzZSB0byByZWwncyByZXN0cmljdGlvbiBsaXN0ICovCiAJcmVsLT5i YXNlcmVzdHJpY3RpbmZvID0gbGFwcGVuZChyZWwtPmJhc2VyZXN0cmljdGluZm8sIHJlc3RyaWN0 aW5mbyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggMmJhMjk3YzExNzIuLjlkNmMyZGEwZjg3 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMjcwOCw2ICsyNzA4LDM1IEBAIHR5cGVkZWYgc3Ry dWN0IFJlc3RyaWN0SW5mbwogCU9pZAkJCXJpZ2h0X2hhc2hlcW9wZXJhdG9yIHBnX25vZGVfYXR0 cihlcXVhbF9pZ25vcmUpOwogfSBSZXN0cmljdEluZm87CiAKKy8qCisgKiBUaGUgZ3JvdXAgb2Yg c2ltaWxhciBvcGVyYXRvciBleHByZXNzaW9ucyBpbiB0cmFuc2Zvcm1fb3JfdG9fYW55KCkuCisg Ki8KK3R5cGVkZWYgc3RydWN0IE9yQ2xhdXNlR3JvdXAKK3sKKwlwZ19ub2RlX2F0dHIobm9kZXRh Z19vbmx5KQorCisJTm9kZVRhZwkJdHlwZTsKKworCS8qIFRoZSBleHByZXNzaW9uIG9mIHRoZSB2 YXJpYWJsZSBzaWRlIG9mIG9wZXJhdG9yICovCisJRXhwcgkgICAqZXhwcjsKKwkvKiBUaGUgb3Bl cmF0b3Igb2YgdGhlIG9wZXJhdG9yIGV4cHJlc3Npb24gKi8KKwlPaWQJCQlvcG5vOworCS8qIFRo ZSBjb2xsYXRpb24gb2YgdGhlIG9wZXJhdG9yIGV4cHJlc3Npb24gKi8KKwlPaWQJCQlpbnB1dGNv bGxpZDsKKwkvKiBUaGUgdHlwZSBvZiBjb25zdGFudCBzaWRlIG9mIG9wZXJhdG9yICovCisJT2lk CQkJY29uc3R0eXBlOworCisJLyogVGhlIGxpc3Qgb2YgY29uc3RhbnQgc2lkZXMgb2Ygb3BlcmF0 b3JzICovCisJTGlzdAkgICAqY29uc3RzOworCisJLyoKKwkgKiBMaXN0IG9mIHNvdXJjZSBleHBy ZXNzaW9ucy4gIFdlIG5lZWQgdGhpcyBmb3IgY29udmVuaWVuY2UgaW4gY2FzZSB3ZQorCSAqIHdp bGwgZ2l2ZSB1cCBvbiB0cmFuc2Zvcm1hdGlvbi4KKwkgKi8KKwlMaXN0CSAgICpleHByczsKK30g T3JDbGF1c2VHcm91cDsKKworCiAvKgogICogVGhpcyBtYWNybyBlbWJvZGllcyB0aGUgY29ycmVj dCB3YXkgdG8gdGVzdCB3aGV0aGVyIGEgUmVzdHJpY3RJbmZvIGlzCiAgKiAicHVzaGVkIGRvd24i IHRvIGEgZ2l2ZW4gb3V0ZXIgam9pbiwgdGhhdCBpcywgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYSBm aWx0ZXIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmggYi9zcmMv aW5jbHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5oCmluZGV4IGYxYzU1YzgwNjdmLi41NjQzZWU4ZjY1 MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5oCkBAIC02NSw2ICs2NSw3IEBAIGV4dGVybiBQR0RM TElNUE9SVCBpbnQgY29tcHV0ZV9xdWVyeV9pZDsKIAogZXh0ZXJuIGNvbnN0IGNoYXIgKkNsZWFu UXVlcnl0ZXh0KGNvbnN0IGNoYXIgKnF1ZXJ5LCBpbnQgKmxvY2F0aW9uLCBpbnQgKmxlbik7CiBl eHRlcm4gSnVtYmxlU3RhdGUgKkp1bWJsZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSk7CitleHRlcm4gSnVt YmxlU3RhdGUgKkp1bWJsZUV4cHIoRXhwciAqZXhwciwgdWludDY0ICpleHBySWQpOwogZXh0ZXJu IHZvaWQgRW5hYmxlUXVlcnlJZCh2b2lkKTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgcXVl cnlfaWRfZW5hYmxlZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3Jl YXRlX2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91 dAppbmRleCBjZjZlYWM1NzM0OS4uNDIxYTY0NWZhZTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTE4NDQsMTggKzE4NDQsNzMgQEAgRFJPUCBUQUJM RSBvbmVrX3dpdGhfbnVsbDsKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCAqIEZST00gdGVu azEKICAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9 IDMgT1IgdGVudGhvdXMgPSA0Mik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQotICAgUmVjaGVjayBD b25kOiAoKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gMSkpIE9SICgodGhvdXNhbmQg PSA0MikgQU5EICh0ZW50aG91cyA9IDMpKSBPUiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhv dXMgPSA0MikpKQotICAgLT4gIEJpdG1hcE9yCi0gICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKLSAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgo dGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDEpKQotICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAgICBJbmRleCBD b25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSAzKSkKLSAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gNDIpKQotKDkgcm93 cykKKyAgIFJlY2hlY2sgQ29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gQU5Z ICgnezEsMyw0Mn0nOjppbnRlZ2VyW10pKSkKKyAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0 ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQy KSBBTkQgKHRlbnRob3VzID0gQU5ZICgnezEsMyw0Mn0nOjppbnRlZ2VyW10pKSkKKyg0IHJvd3Mp CisKK1NFTEVDVCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRo b3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7CisgdW5pcXVlMSB8IHVu aXF1ZTIgfCB0d28gfCBmb3VyIHwgdGVuIHwgdHdlbnR5IHwgaHVuZHJlZCB8IHRob3VzYW5kIHwg dHdvdGhvdXNhbmQgfCBmaXZldGhvdXMgfCB0ZW50aG91cyB8IG9kZCB8IGV2ZW4gfCBzdHJpbmd1 MSB8IHN0cmluZ3UyIHwgc3RyaW5nNCAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0rLS0tLS0t Ky0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLQorICAgICAgNDIgfCAgICA1NTMwIHwgICAwIHwgICAgMiB8ICAgMiB8ICAgICAgMiB8ICAg ICAgNDIgfCAgICAgICA0MiB8ICAgICAgICAgIDQyIHwgICAgICAgIDQyIHwgICAgICAgNDIgfCAg ODQgfCAgIDg1IHwgUUJBQUFBICAgfCBTRUlBQUEgICB8IE9PT094eAorKDEgcm93KQorCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0g NDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAoU0VMRUNUIDEgKyAyKSBPUiB0ZW50 aG91cyA9IDQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIHRl bmsxCisgICBSZWNoZWNrIENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IEFO WSAoQVJSQVlbMSwgKEluaXRQbGFuIDEpLmNvbDEsIDQyXSkpKQorICAgSW5pdFBsYW4gMQorICAg ICAtPiAgUmVzdWx0CisgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVu dGhvdXMKKyAgICAgICAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91 cyA9IEFOWSAoQVJSQVlbMSwgKEluaXRQbGFuIDEpLmNvbDEsIDQyXSkpKQorKDYgcm93cykKKwor U0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMg PSAxIE9SIHRlbnRob3VzID0gKFNFTEVDVCAxICsgMikgT1IgdGVudGhvdXMgPSA0Mik7CisgdW5p cXVlMSB8IHVuaXF1ZTIgfCB0d28gfCBmb3VyIHwgdGVuIHwgdHdlbnR5IHwgaHVuZHJlZCB8IHRo b3VzYW5kIHwgdHdvdGhvdXNhbmQgfCBmaXZldGhvdXMgfCB0ZW50aG91cyB8IG9kZCB8IGV2ZW4g fCBzdHJpbmd1MSB8IHN0cmluZ3UyIHwgc3RyaW5nNCAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0rLS0tLS0tKy0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLQorICAgICAgNDIgfCAgICA1NTMwIHwgICAwIHwgICAgMiB8ICAgMiB8ICAg ICAgMiB8ICAgICAgNDIgfCAgICAgICA0MiB8ICAgICAgICAgIDQyIHwgICAgICAgIDQyIHwgICAg ICAgNDIgfCAgODQgfCAgIDg1IHwgUUJBQUFBICAgfCBTRUlBQUEgICB8IE9PT094eAorKDEgcm93 KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBX SEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBS ZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQyKSBBTkQgKHRob3VzYW5kID0gQU5ZICgnezQyLDk5 fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKQorKDgg cm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQy IEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKKyBjb3VudCAKKy0tLS0tLS0K KyAgICAxMAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHRl bmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMg PSAzIE9SIHRlbnRob3VzID0gNDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCisgICBS ZWNoZWNrIENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IEFOWSAoJ3sxLDMs NDJ9Jzo6aW50ZWdlcltdKSkpCisgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhv dXNfdGVudGhvdXMKKyAgICAgICAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0 ZW50aG91cyA9IEFOWSAoJ3sxLDMsNDJ9Jzo6aW50ZWdlcltdKSkpCisoNCByb3dzKQogCiBTRUxF Q1QgKiBGUk9NIHRlbmsxCiAgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEg T1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOwpAQCAtMTg2NywyMyArMTkyMiwxMjMg QEAgU0VMRUNUICogRlJPTSB0ZW5rMQogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGNvdW50 KCopIEZST00gdGVuazEKICAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBP UiB0aG91c2FuZCA9IDk5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogIEFnZ3JlZ2F0ZQogICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVu azEKLSAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFORCAoKHRob3VzYW5k ID0gNDIpIE9SICh0aG91c2FuZCA9IDk5KSkpCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVu ZHJlZCA9IDQyKSBBTkQgKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpKQog ICAgICAgICAgLT4gIEJpdG1hcEFuZAogICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIHRlbmsxX2h1bmRyZWQKICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICho dW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVu azFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91 c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKQorKDggcm93cykKKworU0VMRUNUIGNv dW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0 MiBPUiB0aG91c2FuZCA9IDk5KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAxMAorKDEgcm93KQor CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVS RSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA8IDQyIE9SIHRob3VzYW5kIDwgOTkgT1IgNDMg PiB0aG91c2FuZCBPUiA0MiA+IHRob3VzYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisg ICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAgUmVjaGVjayBDb25kOiAo KGh1bmRyZWQgPSA0MikgQU5EICh0aG91c2FuZCA8IEFOWSAoJ3s0Miw5OSw0Myw0Mn0nOjppbnRl Z2VyW10pKSkKKyAgICAgICAgIC0+ICBCaXRtYXBBbmQKKyAgICAgICAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBD b25kOiAodGhvdXNhbmQgPCBBTlkgKCd7NDIsOTksNDMsNDJ9Jzo6aW50ZWdlcltdKSkKKyg4IHJv d3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBB TkQgKHRob3VzYW5kIDwgNDIgT1IgdGhvdXNhbmQgPCA5OSBPUiA0MyA+IHRob3VzYW5kIE9SIDQy ID4gdGhvdXNhbmQpOworIGNvdW50IAorLS0tLS0tLQorICAgIDEwCisoMSByb3cpCisKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3Vz YW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzKSBPUiB0aG91c2FuZCA9 IDQxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVh cCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoKCh0aG91c2FuZCA9IDQy KSBBTkQgKHRlbnRob3VzID0gMSkpIE9SICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9 IDMpKSkgT1IgKHRob3VzYW5kID0gNDEpKQorICAgICAgICAgLT4gIEJpdG1hcE9yCiAgICAgICAg ICAgICAgICAtPiAgQml0bWFwT3IKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gNDIpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSAxKSkKICAgICAg ICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50 aG91cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0g OTkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0g NDIpIEFORCAodGVudGhvdXMgPSAzKSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKHRob3VzYW5kID0gNDEpCiAoMTEgcm93cykKIAogU0VMRUNUIGNvdW50KCopIEZST00g dGVuazEKLSAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2Fu ZCA9IDk5KTsKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50 aG91cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CisgY291bnQgCistLS0tLS0tCisgICAgMTAKKygx IHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEK KyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5 IE9SIHRlbnRob3VzIDwgMikgT1IgdGhvdXNhbmQgPSA0MTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdn cmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAgUmVjaGVj ayBDb25kOiAoKChodW5kcmVkID0gNDIpIEFORCAoKHRob3VzYW5kID0gNDIpIE9SICh0aG91c2Fu ZCA9IDk5KSBPUiAodGVudGhvdXMgPCAyKSkpIE9SICh0aG91c2FuZCA9IDQxKSkKKyAgICAgICAg IC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAg ICAgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gNDIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVu dGhvdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91 c2FuZCA9IDk5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAodGVudGhvdXMgPCAyKQorICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0MSkKKygxNiByb3dzKQorCitTRUxFQ1QgY291bnQo KikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9S IHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9IDQxOworIGNvdW50 IAorLS0tLS0tLQorICAgIDIwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5k ID0gNDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9IDk5IEFORCB0ZW50aG91cyA9IDIp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAg SGVhcCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQy KSBBTkQgKCh0aG91c2FuZCA9IEFOWSAoJ3s0Miw0MX0nOjppbnRlZ2VyW10pKSBPUiAoKHRob3Vz YW5kID0gOTkpIEFORCAodGVudGhvdXMgPSAyKSkpKQorICAgICAgICAgRmlsdGVyOiAoKHRob3Vz YW5kID0gNDIpIE9SICh0aG91c2FuZCA9IDQxKSBPUiAoKHRob3VzYW5kID0gOTkpIEFORCAodGVu dGhvdXMgPSAyKSkpCisgICAgICAgICAtPiAgQml0bWFwQW5kCisgICAgICAgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAgICAgICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgor ICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3Vz X3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNh bmQgPSBBTlkgKCd7NDIsNDF9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAg ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDk5KSBBTkQgKHRlbnRob3Vz ID0gMikpCisoMTIgcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUg aHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9SIHRob3Vz YW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7CiAgY291bnQgCiAtLS0tLS0tCiAgICAgMTAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CmluZGV4IDZiMTZjM2E2NzY5Li4zY2ZjOGQ0ZTE0NiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CkBAIC00MjMzLDYgKzQyMzMsNTggQEAgc2Vs ZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSA3KQogKDE5IHJvd3MpCiAKK2V4cGxhaW4gKGNv c3RzIG9mZikKK3NlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KKyAgKGEudW5p cXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVu aXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0gNCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExvb3AK KyAgIEpvaW4gRmlsdGVyOiAoKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBP UiAoKChhLnVuaXF1ZTIgPSAzKSBPUiAoYS51bmlxdWUyID0gNykpIEFORCAoYi5odW5kcmVkID0g NCkpKQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYgorICAgICAgICAgUmVjaGVj ayBDb25kOiAoKHVuaXF1ZTEgPSAyKSBPUiAoaHVuZHJlZCA9IDQpKQorICAgICAgICAgLT4gIEJp dG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5p cXVlMQorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAyKQorICAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAg ICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNCkKKyAgIC0+ICBNYXRlcmlh bGl6ZQorICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYQorICAgICAgICAg ICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IDMpIE9SICh1 bmlxdWUyID0gNykpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDEpCisgICAgICAgICAgICAg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSAzKQorICAgICAgICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gNykKKygxOSByb3dzKQor CitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBi IG9uCisgIChhLnVuaXF1ZTEgPCAyMCBvciBhLnVuaXF1ZTEgPSAzIG9yIGEudW5pcXVlMSA9IDEg YW5kIGIudW5pcXVlMSA9IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3 KSBhbmQgYi5odW5kcmVkID0gNCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg TmVzdGVkIExvb3AKKyAgIEpvaW4gRmlsdGVyOiAoKGEudW5pcXVlMSA8IDIwKSBPUiAoYS51bmlx dWUxID0gMykgT1IgKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBPUiAoKChh LnVuaXF1ZTIgPSAzKSBPUiAoYS51bmlxdWUyID0gNykpIEFORCAoYi5odW5kcmVkID0gNCkpKQor ICAgLT4gIFNlcSBTY2FuIG9uIHRlbmsxIGIKKyAgIC0+ICBNYXRlcmlhbGl6ZQorICAgICAgICAg LT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYQorICAgICAgICAgICAgICAgUmVjaGVjayBD b25kOiAoKHVuaXF1ZTEgPCAyMCkgT1IgKHVuaXF1ZTEgPSAzKSBPUiAodW5pcXVlMSA9IDEpIE9S ICh1bmlxdWUyID0gMykgT1IgKHVuaXF1ZTIgPSA3KSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRt YXBPcgorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsx X3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUx IDwgMjApCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVu azFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1 ZTEgPSAzKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRl bmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlx dWUxID0gMSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0 ZW5rMV91bmlxdWUyCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5p cXVlMiA9IDMpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g dGVuazFfdW5pcXVlMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVu aXF1ZTIgPSA3KQorKDE3IHJvd3MpCisKIC0tCiAtLSB0ZXN0IHBsYWNlbWVudCBvZiBtb3ZhYmxl IHF1YWxzIGluIGEgcGFyYW1ldGVyaXplZCBqb2luIHRyZWUKIC0tCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N0YXRzX2V4dC5vdXQKaW5kZXggOGM0ZGE5NTUwODQuLjc2Nzg3NDQxODFjIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CkBAIC0xMzIyLDE5ICsxMzIyLDE5 IEBAIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVu Y3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVk X3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKGEgPSAx IE9SIGEgPSA1MSkgQU5EIGIgPSAnJzEnJycpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0t LS0tLS0tKy0tLS0tLS0tCi0gICAgICAgIDk5IHwgICAgMTAwCisgICAgICAgMTAwIHwgICAgMTAw CiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAq IEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKGEgPSAxIE9SIGEgPSA1MSkgQU5E IChiID0gJycxJycgT1IgYiA9ICcnMicnKScpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0t LS0tLS0tKy0tLS0tLS0tCi0gICAgICAgIDk5IHwgICAgMTAwCisgICAgICAgMTAwIHwgICAgMTAw CiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAq IEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKGEgPSAxIE9SIGEgPSAyIE9SIGEg PSA1MSBPUiBhID0gNTIpIEFORCAoYiA9ICcnMScnIE9SIGIgPSAnJzInJyknKTsKICBlc3RpbWF0 ZWQgfCBhY3R1YWwgCiAtLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAgIDE5NyB8ICAgIDIwMAor ICAgICAgIDIwMCB8ICAgIDIwMAogKDEgcm93KQogCiAtLSBPUiBjbGF1c2VzIHJlZmVyZW5jaW5n IGRpZmZlcmVudCBhdHRyaWJ1dGVzIGFyZSBpbmNvbXBhdGlibGUKQEAgLTE2NjQsMTkgKzE2NjQs MTkgQEAgU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBm dW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRQogU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0 ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRSAoKGEg KiAyKSA9IDIgT1IgKGEgKiAyKSA9IDEwMikgQU5EIHVwcGVyKGIpID0gJycxJycnKTsKICBlc3Rp bWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAgICA5OSB8ICAgIDEw MAorICAgICAgIDEwMCB8ICAgIDEwMAogKDEgcm93KQogCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2Vz dGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJF ICgoYSAqIDIpID0gMiBPUiAoYSAqIDIpID0gMTAyKSBBTkQgKHVwcGVyKGIpID0gJycxJycgT1Ig dXBwZXIoYikgPSAnJzInJyknKTsKICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0tLS0tLSst LS0tLS0tLQotICAgICAgICA5OSB8ICAgIDEwMAorICAgICAgIDEwMCB8ICAgIDEwMAogKDEgcm93 KQogCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1 bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFICgoYSAqIDIpID0gMiBPUiAoYSAqIDIpID0gNCBP UiAoYSAqIDIpID0gMTAyIE9SIChhICogMikgPSAxMDQpIEFORCAodXBwZXIoYikgPSAnJzEnJyBP UiB1cHBlcihiKSA9ICcnMicnKScpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0tLS0tLS0t Ky0tLS0tLS0tCi0gICAgICAgMTk3IHwgICAgMjAwCisgICAgICAgMjAwIHwgICAgMjAwCiAoMSBy b3cpCiAKIC0tIE9SIGNsYXVzZXMgcmVmZXJlbmNpbmcgZGlmZmVyZW50IGF0dHJpYnV0ZXMKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0CmluZGV4IGYxMzNiNWE0YWM3Li4wZjZkM2Qz MjNkNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90aWRzY2FuLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0CkBAIC00MywxMSArNDMs MTIgQEAgU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFICcoMCwxKScgPSBjdGlkOwog LS0gT1InZCBjbGF1c2VzCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgY3RpZCwgKiBGUk9N IHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgVGlkIFNjYW4gb24gdGlkc2NhbgotICAgVElEIENvbmQ6ICgoY3Rp ZCA9ICcoMCwyKSc6OnRpZCkgT1IgKCcoMCwxKSc6OnRpZCA9IGN0aWQpKQotKDIgcm93cykKKyAg IFRJRCBDb25kOiAoY3RpZCA9IEFOWSAoJ3siKDAsMikiLCIoMCwxKSJ9Jzo6dGlkW10pKQorICAg RmlsdGVyOiAoKGN0aWQgPSAnKDAsMiknOjp0aWQpIE9SICgnKDAsMSknOjp0aWQgPSBjdGlkKSkK KygzIHJvd3MpCiAKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygw LDIpJyBPUiAnKDAsMSknID0gY3RpZDsKICBjdGlkICB8IGlkIApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Ny ZWF0ZV9pbmRleC5zcWwKaW5kZXggZTI5Njg5MWNhYjguLmY3NGFkNDE1ZmJmIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKQEAgLTcyNiw2ICs3MjYsMjQgQEAgRFJPUCBUQUJM RSBvbmVrX3dpdGhfbnVsbDsKIC0tIENoZWNrIGJpdG1hcCBpbmRleCBwYXRoIHBsYW5uaW5nCiAt LQogCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRo b3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3Vz ID0gNDIpOworU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAo dGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKKworRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQy IEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gKFNFTEVDVCAxICsgMikgT1IgdGVudGhv dXMgPSA0Mik7CitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5E ICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAoU0VMRUNUIDEgKyAyKSBPUiB0ZW50aG91cyA9 IDQyKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEK KyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5 KTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQg KHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CisKIEVYUExBSU4gKENPU1RTIE9GRikK IFNFTEVDVCAqIEZST00gdGVuazEKICAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3Vz ID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7CkBAIC03MzgsNiArNzU2LDMw IEBAIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5r MQogICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0g OTkpOwogCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQor ICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA8IDQyIE9SIHRob3VzYW5kIDwgOTkg T1IgNDMgPiB0aG91c2FuZCBPUiA0MiA+IHRob3VzYW5kKTsKK1NFTEVDVCBjb3VudCgqKSBGUk9N IHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kIDwgNDIgT1IgdGhvdXNh bmQgPCA5OSBPUiA0MyA+IHRob3VzYW5kIE9SIDQyID4gdGhvdXNhbmQpOworCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9 IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMykgT1IgdGhvdXNhbmQgPSA0MTsK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0 ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzKSBPUiB0aG91c2FuZCA9IDQxOworCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVk ID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMgPCAy KSBPUiB0aG91c2FuZCA9IDQxOworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUg aHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5IE9SIHRlbnRo b3VzIDwgMikgT1IgdGhvdXNhbmQgPSA0MTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQg PSA0MiBPUiB0aG91c2FuZCA9IDQxIE9SIHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7 CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0 aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhv dXMgPSAyKTsKKwogLS0KIC0tIENoZWNrIGJlaGF2aW9yIHdpdGggZHVwbGljYXRlIGluZGV4IGNv bHVtbiBjb250ZW50cwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4u c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKaW5kZXggOGJmZTNiN2JhNjcuLjYw OGI5YWU3YjZlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbApAQCAtMTQwOSw2ICsxNDA5LDE1IEBAIHNl bGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KICAgKGEudW5pcXVlMSA9IDEgYW5k IGIudW5pcXVlMSA9IDIpIG9yCiAgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBh bmQgYi5odW5kcmVkID0gNCk7CiAKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20g dGVuazEgYSBqb2luIHRlbmsxIGIgb24KKyAgKGEudW5pcXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9 IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVk ID0gNCk7CitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0 ZW5rMSBiIG9uCisgIChhLnVuaXF1ZTEgPCAyMCBvciBhLnVuaXF1ZTEgPSAzIG9yIGEudW5pcXVl MSA9IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1 ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0gNCk7CisKIC0tCiAtLSB0ZXN0IHBsYWNlbWVudCBvZiBt b3ZhYmxlIHF1YWxzIGluIGEgcGFyYW1ldGVyaXplZCBqb2luIHRyZWUKIC0tCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbAppbmRleCBhMDliMjdkODIwYy4uMTUxMWM5OTgw MWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbApAQCAtMjEsNiAr MjEsNyBAQCBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBu b3QgbnVsbDsKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlz IG51bGw7CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSA9ICdh JyBvciBhID0gJ2MnOwogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJl IGEgaXMgbm90IG51bGwgYW5kIChhID0gJ2EnIG9yIGEgPSAnYycpOworCiBleHBsYWluIChjb3N0 cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSA8PiAnZyc7CiBleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSA8PiAnYScgYW5kIGEgPD4gJ2QnOwogZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgbm90IGluICgnYScsICdkJyk7 CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDRmNTcwNzhkMTMzLi43Mjc4ZDA0N2M4YyAx MDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE3MTQsNiArMTcxNCw3IEBAIE51bWVyaWNW YXIKIE9NX3VpbnQzMgogT1AKIE9TQVBlckdyb3VwU3RhdGUKK09yQ2xhdXNlR3JvdXAKIE9TQVBl clF1ZXJ5U3RhdGUKIE9TSW5mbwogT1NTTENpcGhlcgotLSAKMi4zOS4zIChBcHBsZSBHaXQtMTQ1 KQoK --000000000000a0c7a7061ad85d90--