Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iWP8i-0005GR-41 for pgsql-hackers@arkaria.postgresql.org; Sun, 17 Nov 2019 18:19:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1iWP8e-00077d-VC for pgsql-hackers@arkaria.postgresql.org; Sun, 17 Nov 2019 18:19:08 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iWP8e-00073E-7P for pgsql-hackers@lists.postgresql.org; Sun, 17 Nov 2019 18:19:08 +0000 Received: from cyclops.postgrespro.ru ([93.174.131.138] helo=mail.postgrespro.ru) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1iWP8V-0000SO-Vd for pgsql-hackers@lists.postgresql.org; Sun, 17 Nov 2019 18:19:06 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id B14B321C3D77 for ; Sun, 17 Nov 2019 21:18:57 +0300 (MSK) X-Virus-Scanned: Debian amavisd-new at postgrespro.ru X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=x tagged_above=-99 required=4 WHITELISTED tests=[] autolearn=unavailable Received: from mail-il1-f170.google.com (mail-il1-f170.google.com [209.85.166.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (not verified)) by mail.postgrespro.ru (Postfix) with ESMTPSA id E8F1A21C3E70 for ; Sun, 17 Nov 2019 21:18:56 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1574014737; bh=jGrU+uGFMePSbfdfJ0zHB966SViUvGvy0H/3OAV9BFI=; h=References:In-Reply-To:From:Date:Subject:To:Cc; b=bhsOLAD7JWg8D/LRc/g5KussE1l5oFNRBOuK791pvCk9WlJVJWtHl/BrARkIpGmVz 6wpsOiVOaY6IXsOXP/Oq4BfJsv4+x+qfxOJy8D61IRTqMBnSk4xqTAshBskqDbPNmW eyg/t1uWqgeCUETTGyPq9Fy40PSzkmpYFz3F9fjY= Received: by mail-il1-f170.google.com with SMTP id q15so13877851ils.8 for ; Sun, 17 Nov 2019 10:18:56 -0800 (PST) X-Gm-Message-State: APjAAAVaMgVL00beKWQSZLE7jJIR5Pa7IhvY3bBY5IcRy3Vqa+kPfHpG xbCe8lfW9Y/1qdEYk018O2HbdotVbMXZ/GEOHPQ= X-Google-Smtp-Source: APXvYqy7MUj8otfMovjppbRD/JT5xL2TXO+VDaX8CAkbJs/XB7px+Vk1qHD2O29ACcjE5k5AGHe9iw6AcXiUr4vK9HA= X-Received: by 2002:a92:8388:: with SMTP id p8mr12331874ilk.49.1574014735101; Sun, 17 Nov 2019 10:18:55 -0800 (PST) MIME-Version: 1.0 References: <5c332bd1.87b6.16d7c17aa98.Coremail.chjischj@163.com> In-Reply-To: From: Alexander Korotkov Date: Sun, 17 Nov 2019 21:18:43 +0300 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: Connections hang indefinitely while taking a gin index's LWLock buffer_content lock(PG10.7) To: Peter Geoghegan Cc: chenhj , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000028d60005978edd21" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --00000000000028d60005978edd21 Content-Type: text/plain; charset="UTF-8" On Mon, Nov 11, 2019 at 2:42 AM Alexander Korotkov wrote: > I'm sorry for late reply. I was busy with various things. Also > digging into these details took some time. Please find my explanation > below. > > On Wed, Oct 30, 2019 at 2:34 AM Peter Geoghegan wrote: > > In general, it seems very important to be clear about exactly how the > > key space works. The nbtree work for v12 greatly benefitted from > > defining comparisons in a way that didn't really change how nbtree > > worked, while at the same time minimizing I/O and making nbtree > > faithful to Lehman & Yao's original design. It isn't obvious how > > valuable it is to really carefully define how invariants and key > > comparisons work, but it seems possible to solve a lot of problems > > that way. > > gin packs downlinks and pivot key into tuples in the different way > than nbtree does. Let's see the logical structure of internal B-tree > page. We can represent it as following. > > downlink_1, key_1_2, downlink_2, key_2_3, .... , downlink_n, highkey > > key_{i-1}_i is pivot key, which splits key space between > downlink_{i-1} and downlink_i. So, every key under downlink_{i-1} is > <= key_{i-1}_i. Every key under downlink_i is > key_{i-1}_i. And all > underlying keys are <= highkey. > > nbtree packs that into tuples as followings (tuples are shown in parentheses). > > (highkey), (-inf, downlink_1), (key_1_2, downlink_2), ... > (key_{n-1}_n, downlink_n) > > So, we store highkey separately. key_{i-1}_i and downlink_i form a > tuple together. downlink_1 is coupled with -inf key. > > gin packs tuples in a different way. > > (downlink_1, key_1_2), (downlink_2, key_2_3), ... , (downlink_n, highkey) > > So, in GIN key_{i-1}_i and downlink_{i-1} form a tuple. Highkey is > coupled with downlink_n. And -inf key is not needed here. > > But there is couple notes about highkey: > 1) In entry tree rightmost page, a key coupled with downlink_n doesn't > really matter. Highkey is assumed to be infinity. > 2) In posting tree, a key coupled with downlink_n always doesn't > matter. Highkey for non-rightmost pages is stored separately and > accessed via GinDataPageGetRightBound(). > > I think this explains following: > 1) The invariants in gin btree are same as they are in nbtree. Just > page layout is different. > 2) The way entryLocateEntry() works. In particular why it's OK to go > the mid downlink if corresponding key equals. > 3) There is no "negative infinity" item in internal pages. > > Does the explanation of above looks clear for you? If so, I can put > it into the README. So, I've put this explanation into README patch. I just change designation to better match with Lehman & Yao paper and did some minor enchantments. I'm going to push this patchset if no objections. ------ Alexander Korotkov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --00000000000028d60005978edd21 Content-Type: application/octet-stream; name="0002-Fix-traversing-to-the-deleted-GIN-page-via-downlin-4.patch" Content-Disposition: attachment; filename="0002-Fix-traversing-to-the-deleted-GIN-page-via-downlin-4.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k33bksvp1 RnJvbSA1ZThmMTZlMTIwZWJmNGYzODhiZjE2ZWZjMjllMGNjMjc0MjhjZWQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCAxNyBOb3YgMjAxOSAyMToxMDo0NSArMDMwMApTdWJqZWN0OiBb UEFUQ0ggMi8zXSBGaXggdHJhdmVyc2luZyB0byB0aGUgZGVsZXRlZCBHSU4gcGFnZSB2aWEgZG93 bmxpbmsKCkN1cnJlbnQgR0lOIGNvZGUgYXBwZWFycyB0byBkb24ndCBoYW5kbGUgdHJhdmVyc2lu ZyB0byB0aGUgZGVsZXRlZCBwYWdlIHZpYQpkb3dubGluay4gIFRoaXMgY29tbWl0IGZpeGVzIHRo YXQgYnkgc3RlcHBpbmcgcmlnaHQgZnJvbSB0aGUgZGVsZXRlIHBhZ2UgbGlrZQp3ZSBkbyBpbiBu YnRyZWUuCgpUaGlzIGNvbW1pdCBhbHNvIGZpeGVzIHNldHRpbmcgJ2RlbGV0ZWQnIGZsYWcgdG8g dGhlIEdJTiBwYWdlcy4gIE5vdyBvdGhlciBwYWdlCmZsYWdzIGFyZSBub3QgZXJhc2VkIG9uY2Ug cGFnZSBpcyBkZWxldGVkLiAgVGhhdCBoZWxwcyB0byBrZWVwIG91ciBhc3NlcnRpb25zCnRydWUg aWYgd2UgYXJyaXZlIGRlbGV0ZWQgcGFnZSB2aWEgZG93bmxpbmsuCgpEaXNjdXNzaW9uOiBodHRw czovL3Bvc3Rnci5lcy9tL0NBUHBIZmR2TXZzdy1OY0U1YlJTN1IxQmJ2QTRCeG9EblZWamtYQzVX MEN6dnk5TFZyZyU0MG1haWwuZ21haWwuY29tCkF1dGhvcjogQWxleGFuZGVyIEtvcm90a292ClJl dmlld2VkLWJ5OiBQZXRlciBHZW9naGVnYW4KQmFja3BhdGNoLXRocm91Z2g6IDkuNAotLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luYnRyZWUuYyAgICB8IDcgLS0tLS0tLQogc3JjL2JhY2tl bmQvYWNjZXNzL2dpbi9naW5kYXRhcGFnZS5jIHwgMyArKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9n aW4vZ2ludmFjdXVtLmMgICB8IDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2lueGxvZy5j ICAgICB8IDIgKy0KIDQgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luYnRyZWUuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luYnRyZWUuYwppbmRleCAyMGFkZmEyMTk0OC4uOGY4Y2Q4 NWRiNmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luYnRyZWUuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmJ0cmVlLmMKQEAgLTE4NywxMyArMTg3LDYgQEAg Z2luU3RlcFJpZ2h0KEJ1ZmZlciBidWZmZXIsIFJlbGF0aW9uIGluZGV4LCBpbnQgbG9ja21vZGUp CiAJaWYgKGlzTGVhZiAhPSBHaW5QYWdlSXNMZWFmKHBhZ2UpIHx8IGlzRGF0YSAhPSBHaW5QYWdl SXNEYXRhKHBhZ2UpKQogCQllbG9nKEVSUk9SLCAicmlnaHQgc2libGluZyBvZiBHSU4gcGFnZSBp cyBvZiBkaWZmZXJlbnQgdHlwZSIpOwogCi0JLyoKLQkgKiBHaXZlbiB0aGUgcHJvcGVyIGxvY2sg c2VxdWVuY2UgYWJvdmUsIHdlIHNob3VsZCBuZXZlciBsYW5kIG9uIGEgZGVsZXRlZAotCSAqIHBh Z2UuCi0JICovCi0JaWYgKEdpblBhZ2VJc0RlbGV0ZWQocGFnZSkpCi0JCWVsb2coRVJST1IsICJy aWdodCBzaWJsaW5nIG9mIEdJTiBwYWdlIHdhcyBkZWxldGVkIik7Ci0KIAlyZXR1cm4gbmV4dGJ1 ZmZlcjsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5kYXRhcGFn ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5kYXRhcGFnZS5jCmluZGV4IGU4YzM0ZDZi MWY2Li5lNDk3MjEwYjRjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5k YXRhcGFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZGF0YXBhZ2UuYwpAQCAt MjM4LDYgKzIzOCw5IEBAIGRhdGFJc01vdmVSaWdodChHaW5CdHJlZSBidHJlZSwgUGFnZSBwYWdl KQogCWlmIChHaW5QYWdlUmlnaHRNb3N0KHBhZ2UpKQogCQlyZXR1cm4gZmFsc2U7CiAKKwlpZiAo R2luUGFnZUlzRGVsZXRlZChwYWdlKSkKKwkJcmV0dXJuIHRydWU7CisKIAlyZXR1cm4gKGdpbkNv bXBhcmVJdGVtUG9pbnRlcnMoJmJ0cmVlLT5pdGVtcHRyLCBpcHRyKSA+IDApID8gdHJ1ZSA6IGZh bHNlOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYwppbmRleCA3MjE2OWJiMGJkYy4u MTFlMDUwMTcxYWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludmFjdXVt LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYwpAQCAtMTg2LDcgKzE4 Niw3IEBAIGdpbkRlbGV0ZVBhZ2UoR2luVmFjdXVtU3RhdGUgKmd2cywgQmxvY2tOdW1iZXIgZGVs ZXRlQmxrbm8sIEJsb2NrTnVtYmVyIGxlZnRCbGtuCiAJICogd2Ugc2hvdWxkbid0IGNoYW5nZSBy aWdodGxpbmsgZmllbGQgdG8gc2F2ZSB3b3JrYWJpbGl0eSBvZiBydW5uaW5nCiAJICogc2VhcmNo IHNjYW4KIAkgKi8KLQlHaW5QYWdlR2V0T3BhcXVlKHBhZ2UpLT5mbGFncyA9IEdJTl9ERUxFVEVE OworCUdpblBhZ2VTZXREZWxldGVkKHBhZ2UpOwogCiAJTWFya0J1ZmZlckRpcnR5KHBCdWZmZXIp OwogCU1hcmtCdWZmZXJEaXJ0eShsQnVmZmVyKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naW4vZ2lueGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW54bG9nLmMKaW5k ZXggYzk0NWIyODI3MjEuLjM4NzEwMmYyMWExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2luL2dpbnhsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnhsb2cuYwpA QCAtNTAwLDcgKzUwMCw3IEBAIGdpblJlZG9EZWxldGVQYWdlKFhMb2dSZWFkZXJTdGF0ZSAqcmVj b3JkKQogCXsKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoZGJ1ZmZlcik7CiAJCUFzc2VydChHaW5Q YWdlSXNEYXRhKHBhZ2UpKTsKLQkJR2luUGFnZUdldE9wYXF1ZShwYWdlKS0+ZmxhZ3MgPSBHSU5f REVMRVRFRDsKKwkJR2luUGFnZVNldERlbGV0ZWQocGFnZSk7CiAJCUdpblBhZ2VTZXREZWxldGVY aWQocGFnZSwgZGF0YS0+ZGVsZXRlWGlkKTsKIAkJUGFnZVNldExTTihwYWdlLCBsc24pOwogCQlN YXJrQnVmZmVyRGlydHkoZGJ1ZmZlcik7Ci0tIAoyLjE0LjMKCg== --00000000000028d60005978edd21 Content-Type: application/octet-stream; name="0001-Fix-deadlock-between-ginDeletePage-and-ginStepRigh-4.patch" Content-Disposition: attachment; filename="0001-Fix-deadlock-between-ginDeletePage-and-ginStepRigh-4.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k33bksv00 RnJvbSBhNzNkMDYzNmM5YzBjODM2M2E2Y2FlMjgxNWM5MzhjZjdkNzZlZjVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCAxNyBOb3YgMjAxOSAyMToxMDozNCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggMS8zXSBGaXggZGVhZGxvY2sgYmV0d2VlbiBnaW5EZWxldGVQYWdlKCkgYW5kIGdpblN0 ZXBSaWdodCgpCgpXaGVuIGdpbkRlbGV0ZVBhZ2UoKSBpcyBhYm91dCB0byBkZWxldGUgcGFnZSBp dCBsb2NrcyBpdHMgbGVmdCBzaWJsaW5nIHRvIHJldmlzZQp0aGUgcmlnaHRsaW5rLiAgU28sIGl0 IGxvY2tzIHBhZ2VzIGluIHJpZ2h0IHRvIGxlZnQgbWFubmVyLiAgSW50IGhlIHNhbWUgdGltZQpn aW5TdGVwUmlnaHQoKSBsb2NrcyBwYWdlcyBpbiBsZWZ0IHRvIHJpZ2h0IG1hbm5lciwgYW5kIHRo YXQgY291bGQgY2F1c2UgYQpkZWFkbG9jay4KClRoaXMgY29tbWl0IG1ha2VzIGdpblNjYW5Ub0Rl bGV0ZSgpIGtlZXAgZXhjbHVzaXZlIGxvY2sgb24gbGVmdCBzaWJsaW5ncyBvZgpjdXJyZW50bHkg aW52ZXN0aWdhdGVkIHBhdGguICBUaGF0IGVsaW1pdGVzIG5lZWQgdG8gcmVsb2NrIGxlZnQgc2li bGluZyBpbgpnaW5EZWxldGVQYWdlKCkuICBUaHVzLCBkZWFkbG9jayB3aXRoIGdpblN0ZXBSaWdo dCgpIGNhbid0IGhhcHBlbiBhbnltb3JlLgoKUmVwb3J0ZWQtYnk6IENoZW4gSHVhanVuCkRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vNWMzMzJiZDEuODdiNi4xNmQ3YzE3YWE5OC5Db3Jl bWFpbC5jaGppc2NoaiU0MDE2My5jb20KQXV0aG9yOiBBbGV4YW5kZXIgS29yb3Rrb3YKUmV2aWV3 ZWQtYnk6IFBldGVyIEdlb2doZWdhbgpCYWNrcGF0Y2gtdGhyb3VnaDogOS40Ci0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpbi9SRUFETUUgICAgICB8IDc5ICsrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jIHwgNTQg KysrKysrKysrKysrKysrKystLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgODEgaW5zZXJ0aW9u cygrKSwgNTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dp bi9SRUFETUUgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL1JFQURNRQppbmRleCA3NmMxMmFlMmY2 Yi4uZTQxNTI1MDBjYzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vUkVBRE1F CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vUkVBRE1FCkBAIC0yNzcsNTAgKzI3Nyw2MyBA QCBmb2xsb3dlZCBieSB0aGUgcGFja2VkIGl0ZW1zLgogQ29uY3VycmVuY3kKIC0tLS0tLS0tLS0t CiAKLVRoZSBlbnRyeSB0cmVlIGFuZCBlYWNoIHBvc3RpbmcgdHJlZSBpcyBhIEItdHJlZSwgd2l0 aCByaWdodC1saW5rcyBjb25uZWN0aW5nCitUaGUgZW50cnkgdHJlZSBhbmQgZWFjaCBwb3N0aW5n IHRyZWUgYXJlIEItdHJlZXMsIHdpdGggcmlnaHQtbGlua3MgY29ubmVjdGluZwogc2libGluZyBw YWdlcyBhdCB0aGUgc2FtZSBsZXZlbC4gVGhpcyBpcyB0aGUgc2FtZSBzdHJ1Y3R1cmUgdGhhdCBp cyB1c2VkIGluCiB0aGUgcmVndWxhciBCLXRyZWUgaW5kZXhhbSAoaW52ZW50ZWQgYnkgTGVobWFu ICYgWWFvKSwgYnV0IHdlIGRvbid0IHN1cHBvcnQKIHNjYW5uaW5nIGEgR0lOIHRyZWVzIGJhY2t3 YXJkcywgc28gd2UgZG9uJ3QgbmVlZCBsZWZ0LWxpbmtzLgogCiBUbyBhdm9pZCBkZWFkbG9ja3Ms IEItdHJlZSBwYWdlcyBtdXN0IGFsd2F5cyBiZSBsb2NrZWQgaW4gdGhlIHNhbWUgb3JkZXI6Ci1s ZWZ0IHRvIHJpZ2h0LCBhbmQgYm90dG9tIHRvIHRvcC4gV2hlbiBzZWFyY2hpbmcsIHRoZSB0cmVl IGlzIHRyYXZlcnNlZCBmcm9tCi10b3AgdG8gYm90dG9tLCBzbyB0aGUgbG9jayBvbiB0aGUgcGFy ZW50IHBhZ2UgbXVzdCBiZSByZWxlYXNlZCBiZWZvcmUKK2xlZnQgdG8gcmlnaHQsIGFuZCBib3R0 b20gdG8gdG9wLiBUaGUgZXhjZXB0aW9uIGlzIHBhZ2UgZGVsZXRpb24gZHVyaW5nIHZhY3V1bSwK K3doaWNoIHdvdWxkIGJlIGNvbnNpZGVyZWQgc2VwYXJhdGVseS4gIFdoZW4gc2VhcmNoaW5nLCB0 aGUgdHJlZSBpcyB0cmF2ZXJzZWQKK2Zyb20gdG9wIHRvIGJvdHRvbSwgc28gdGhlIGxvY2sgb24g dGhlIHBhcmVudCBwYWdlIG11c3QgYmUgcmVsZWFzZWQgYmVmb3JlCiBkZXNjZW5kaW5nIHRvIHRo ZSBuZXh0IGxldmVsLiBDb25jdXJyZW50IHBhZ2Ugc3BsaXRzIG1vdmUgdGhlIGtleXNwYWNlIHRv CiByaWdodCwgc28gYWZ0ZXIgZm9sbG93aW5nIGEgZG93bmxpbmssIHRoZSBwYWdlIGFjdHVhbGx5 IGNvbnRhaW5pbmcgdGhlIGtleQogd2UncmUgbG9va2luZyBmb3IgbWlnaHQgYmUgc29tZXdoZXJl IHRvIHRoZSByaWdodCBvZiB0aGUgcGFnZSB3ZSBsYW5kZWQgb24uCiBJbiB0aGF0IGNhc2UsIHdl IGZvbGxvdyB0aGUgcmlnaHQtbGlua3MgdW50aWwgd2UgZmluZCB0aGUgcGFnZSB3ZSdyZSBsb29r aW5nCi1mb3IuCi0KLVRvIGRlbGV0ZSBhIHBhZ2UsIHRoZSBwYWdlJ3MgbGVmdCBzaWJsaW5nLCB0 aGUgdGFyZ2V0IHBhZ2UsIGFuZCBpdHMgcGFyZW50LAotYXJlIGxvY2tlZCBpbiB0aGF0IG9yZGVy LCBhbmQgdGhlIHBhZ2UgaXMgbWFya2VkIGFzIGRlbGV0ZWQuIEhvd2V2ZXIsIGEKLWNvbmN1cnJl bnQgc2VhcmNoIG1pZ2h0IGFscmVhZHkgaGF2ZSByZWFkIGEgcG9pbnRlciB0byB0aGUgcGFnZSwg YW5kIG1pZ2h0IGJlCi1qdXN0IGFib3V0IHRvIGZvbGxvdyBpdC4gQSBwYWdlIGNhbiBiZSByZWFj aGVkIHZpYSB0aGUgcmlnaHQtbGluayBvZiBpdHMgbGVmdAotc2libGluZywgb3IgdmlhIGl0cyBk b3dubGluayBpbiB0aGUgcGFyZW50LgorZm9yLiBJbiBzcGl0ZSBvZiBzZWFyY2hlcywgaW5zZXJ0 aW9ucyBrZWVwcyBwaW5zIG9uIGFsbCBwYWdlcyBpbiBwYXRoIGZyb20KK3Jvb3QgdG8gdGhlIGN1 cnJlbnQgcGFnZS4gVGhlc2UgcGFnZXMgcG90ZW50aWFsbHkgcmVxdWllcyBkb3dubGluayBpbnNl cnRpb24sCit3aGlsZSBwaW5zIHByZXZlbnQgdGhlbSBmcm9tIGJlaW5nIGRlbGV0ZWQuCisKK1Zh Y3V1bSBuZXZlciBkZWxldGVzIHR1cGxlcyBvciBwYWdlcyBmcm9tIHRoZSBlbnRyeSB0cmVlLiBJ dCB0cmF2ZXJzZXMgZW50cnkKK3RyZWUgbGVhZnMgaW4gbG9naWNhbCBvcmRlciBieSByaWdodGxp bmtzIGFuZCByZW1vdmVzIGRlbGV0YWJsZSBUSURzIGZyb20KK3Bvc3RpbmcgbGlzdHMuIFBvc3Rp bmcgdHJlZXMgYXJlIHByb2Nlc3NlZCBieSBsaW5rcyBmcm9tIGVudHJ5IHRyZWUgbGVhZnMuIFRo ZXkKK2FyZSB2YWN1dW1lZCBpbiB0d28gc3RhZ2VzLiBBdCBmaXJzdCBzdGFnZSwgZGVsZXRhYmxl IFRJRHMgYXJlIHJlbW92ZWQgZnJvbQorbGVhZnMuIElmIGZpcnN0IHN0YWdlIGRldGVjdHMgYXQg bGVhc3Qgb25lIGVtcHR5IHBhZ2UsIHRoZW4gYXQgdGhlIHNlY29uZCBzdGFnZQorZ2luU2NhblRv RGVsZXRlKCkgZGVsZXRlcyBlbXB0eSBwYWdlcy4KKworZ2luU2NhblRvRGVsZXRlKCkgc2NhbnMg cG9zdGluZyB0cmVlIHRvIGRlbGV0ZSBlbXB0eSBwYWdlcywgd2hpbGUgdmFjdXVtIGhvbGRzCitj bGVhbnVwIGxvY2sgb24gdGhlIHBvc3RpbmcgdHJlZSByb290LiBUaGlzIGxvY2sgcHJldmVudCBj b25jdXJyZW50IGluc2VydHMsCitiZWNhdXNlIGluc2VydGVycyBob2xkIGEgcGluIG9uIHRoZSBy b290IHBhZ2UuIEluIHNwaXRlIG9mIGluc2VydGVycyBzZWFyY2hlcworZG9uJ3QgaG9sZCBwaW4g b24gcm9vdCBwYWdlLiBTbywgd2hpbGUgbmV3IHNlYXJjaGVzIGNhbm5vdCBiZWdpbiB3aGlsZSBy b290IHBhZ2UKK2lzIGxvY2tlZCwgYW55IGFscmVhZHktaW4tcHJvZ3Jlc3Mgc2NhbnMgY2FuIGNv bnRpbnVlIGNvbmN1cnJlbnRseSB3aXRoIHZhY3V1bS4KKworZ2luU2NhblRvRGVsZXRlKCkgZG9l cyBkZXB0aC1maXJzdCB0cmVlIHNjYW5uaW5nIHdoaWxlIGtlZXBpbmcgZWFjaCBwYWdlIGluIHBh dGgKK2Zyb20gcm9vdCB0byBjdXJyZW50IHBhZ2UgZXhjbHVzaXZlbHkgbG9ja2VkLiAgSXQgYWxz byBrZWVwcyBsZWZ0IHNpYmxpbmcgb2YKK2VhY2ggcGFnZSBpbiB0aGUgcGF0aCBsb2NrZWQuICBU aHVzLCBpZiBjdXJyZW50IHBhZ2UgaXMgdG8gYmUgcmVtb3ZlZCwgYWxsCityZXF1aXJlZCBwYWdl cyB0byByZW1vdmUgYm90aCBkb3dubGluayBhbmQgcmlnaHRsaW5rIGFyZSBhbHJlYWR5IGxvY2tl ZC4KK1RoZXJlZm9yZSwgcGFnZSBkZWxldGlvbiBsb2NrcyBwYWdlcyB0b3AgdG8gYm90dG9tIGFu ZCBsZWZ0IHRvIHJpZ2h0IGJyZWFraW5nCitvdXIgZ2VuZXJhbCBydWxlLiBCdXQgYXNzdW1pbmcg dGhlcmUgaXMgbm8gY29uY3VycmVudCBpbnNlcnRpb25zLCB0aGlzIGNhbid0CitjYXVzZSBhIGRl YWRsb2NrLgorCitEdXJpbmcgcmVwbGF5IG9kIHBhZ2UgZGVsZXRpb24gYXQgc3RhbmRieSwgdGhl IHBhZ2UncyBsZWZ0IHNpYmxpbmcsIHRoZSB0YXJnZXQKK3BhZ2UsIGFuZCBpdHMgcGFyZW50LCBh cmUgbG9ja2VkIGluIHRoYXQgb3JkZXIuIFNvIGl0IGZvbGxvd3MgYm90dG9tIHRvIHRvcCBhbmQK K2xlZnQgdG8gcmlnaHQgcnVsZS4KKworQSBzZWFyY2ggY29uY3VycmVudCB0byBwYWdlIGRlbGV0 aW9uIG1pZ2h0IGFscmVhZHkgaGF2ZSByZWFkIGEgcG9pbnRlciB0byB0aGUKK3BhZ2UgdG8gYmUg ZGVsZXRlZCwgYW5kIG1pZ2h0IGJlIGp1c3QgYWJvdXQgdG8gZm9sbG93IGl0LiBBIHBhZ2UgY2Fu IGJlIHJlYWNoZWQKK3ZpYSB0aGUgcmlnaHQtbGluayBvZiBpdHMgbGVmdCBzaWJsaW5nLCBvciB2 aWEgaXRzIGRvd25saW5rIGluIHRoZSBwYXJlbnQuCiAKIFRvIHByZXZlbnQgYSBiYWNrZW5kIGZy b20gcmVhY2hpbmcgYSBkZWxldGVkIHBhZ2UgdmlhIGEgcmlnaHQtbGluaywgd2hlbgotZm9sbG93 aW5nIGEgcmlnaHQtbGluayB0aGUgbG9jayBvbiB0aGUgcHJldmlvdXMgcGFnZSBpcyBub3QgcmVs ZWFzZWQgdW50aWwKLXRoZSBsb2NrIG9uIG5leHQgcGFnZSBoYXMgYmVlbiBhY3F1aXJlZC4KLQot VGhlIGRvd25saW5rIGlzIG1vcmUgdHJpY2t5LiBBIHNlYXJjaCBkZXNjZW5kaW5nIHRoZSB0cmVl IG11c3QgcmVsZWFzZSB0aGUKLWxvY2sgb24gdGhlIHBhcmVudCBwYWdlIGJlZm9yZSBsb2NraW5n IHRoZSBjaGlsZCwgb3IgaXQgY291bGQgZGVhZGxvY2sgd2l0aAotYSBjb25jdXJyZW50IHNwbGl0 IG9mIHRoZSBjaGlsZCBwYWdlOyBhIHBhZ2Ugc3BsaXQgbG9ja3MgdGhlIHBhcmVudCwgd2hpbGUK LWFscmVhZHkgaG9sZGluZyBhIGxvY2sgb24gdGhlIGNoaWxkIHBhZ2UuIFNvLCBkZWxldGVkIHBh Z2UgY2Fubm90IGJlIHJlY2xhaW1lZAotaW1tZWRpYXRlbHkuIEluc3RlYWQsIHdlIGhhdmUgdG8g d2FpdCBmb3IgZXZlcnkgdHJhbnNhY3Rpb24sIHdoaWNoIG1pZ2h0IHdhaXQKLXRvIHJlZmVyZW5j ZSB0aGlzIHBhZ2UsIHRvIGZpbmlzaC4gQ29ycmVzcG9uZGluZyBwcm9jZXNzZXMgbXVzdCBvYnNl cnZlIHRoYXQKLXRoZSBwYWdlIGlzIG1hcmtlZCBkZWxldGVkIGFuZCByZWNvdmVyIGFjY29yZGlu Z2x5LgotCi1UaGUgcHJldmlvdXMgcGFyYWdyYXBoJ3MgcmVhc29uaW5nIG9ubHkgYXBwbGllcyB0 byBzZWFyY2hlcywgYW5kIG9ubHkgdG8KLXBvc3RpbmcgdHJlZXMuIFRvIHByb3RlY3QgZnJvbSBp bnNlcnRlcnMgZm9sbG93aW5nIGEgZG93bmxpbmsgdG8gYSBkZWxldGVkCi1wYWdlLCB2YWN1dW0g c2ltcGx5IGxvY2tzIG91dCBhbGwgY29uY3VycmVudCBpbnNlcnRpb25zIHRvIHRoZSBwb3N0aW5n IHRyZWUsCi1ieSBob2xkaW5nIGEgc3VwZXItZXhjbHVzaXZlIGxvY2sgb24gdGhlIHBvc3Rpbmcg dHJlZSByb290LiBJbnNlcnRlcnMgaG9sZCBhCi1waW4gb24gdGhlIHJvb3QgcGFnZSwgYnV0IHNl YXJjaGVzIGRvIG5vdCwgc28gd2hpbGUgbmV3IHNlYXJjaGVzIGNhbm5vdCBiZWdpbgotd2hpbGUg cm9vdCBwYWdlIGlzIGxvY2tlZCwgYW55IGFscmVhZHktaW4tcHJvZ3Jlc3Mgc2NhbnMgY2FuIGNv bnRpbnVlCi1jb25jdXJyZW50bHkgd2l0aCB2YWN1dW0uIEluIHRoZSBlbnRyeSB0cmVlLCB3ZSBu ZXZlciBkZWxldGUgcGFnZXMuCi0KLShUaGlzIGlzIHF1aXRlIGRpZmZlcmVudCBmcm9tIHRoZSBt ZWNoYW5pc20gdGhlIGJ0cmVlIGluZGV4YW0gdXNlcyB0byBtYWtlCi1wYWdlLWRlbGV0aW9ucyBz YWZlOyBpdCBzdGFtcHMgdGhlIGRlbGV0ZWQgcGFnZXMgd2l0aCBhbiBYSUQgYW5kIGtlZXBzIHRo ZQotZGVsZXRlZCBwYWdlcyBhcm91bmQgd2l0aCB0aGUgcmlnaHQtbGluayBpbnRhY3QgdW50aWwg YWxsIGNvbmN1cnJlbnQgc2NhbnMKLWhhdmUgZmluaXNoZWQuKQorZm9sbG93aW5nIGEgcmlnaHQt bGluayB0aGUgbG9jayBvbiB0aGUgcHJldmlvdXMgcGFnZSBpcyBub3QgcmVsZWFzZWQgdW50aWwg dGhlCitsb2NrIG9uIG5leHQgcGFnZSBoYXMgYmVlbiBhY3F1aXJlZC4KKworVGhlIGRvd25saW5r IGlzIG1vcmUgdHJpY2t5LiBBIHNlYXJjaCBkZXNjZW5kaW5nIHRoZSB0cmVlIG11c3QgcmVsZWFz ZSB0aGUgbG9jaworb24gdGhlIHBhcmVudCBwYWdlIGJlZm9yZSBsb2NraW5nIHRoZSBjaGlsZCwg b3IgaXQgY291bGQgZGVhZGxvY2sgd2l0aCBhCitjb25jdXJyZW50IHNwbGl0IG9mIHRoZSBjaGls ZCBwYWdlOyBhIHBhZ2Ugc3BsaXQgbG9ja3MgdGhlIHBhcmVudCwgd2hpbGUgYWxyZWFkeQoraG9s ZGluZyBhIGxvY2sgb24gdGhlIGNoaWxkIHBhZ2UuIFNvLCBkZWxldGVkIHBhZ2UgY2Fubm90IGJl IHJlY2xhaW1lZAoraW1tZWRpYXRlbHkuIEluc3RlYWQsIHdlIGhhdmUgdG8gd2FpdCBmb3IgZXZl cnkgdHJhbnNhY3Rpb24sIHdoaWNoIG1pZ2h0IHdhaXQgdG8KK3JlZmVyZW5jZSB0aGlzIHBhZ2Us IHRvIGZpbmlzaC4gQ29ycmVzcG9uZGluZyBwcm9jZXNzZXMgbXVzdCBvYnNlcnZlIHRoYXQgdGhl CitwYWdlIGlzIG1hcmtlZCBkZWxldGVkIGFuZCByZWNvdmVyIGFjY29yZGluZ2x5LgogCiBQcmVk aWNhdGUgTG9ja2luZwogLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9naW4vZ2ludmFjdXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1 bS5jCmluZGV4IGRjNDZmMjQ2MGUyLi43MjE2OWJiMGJkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dp bnZhY3V1bS5jCkBAIC0xMTcsNyArMTE3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgRGF0YVBhZ2VEZWxl dGVTdGFjawogCXN0cnVjdCBEYXRhUGFnZURlbGV0ZVN0YWNrICpwYXJlbnQ7CiAKIAlCbG9ja051 bWJlciBibGtubzsJCQkvKiBjdXJyZW50IGJsb2NrIG51bWJlciAqLwotCUJsb2NrTnVtYmVyIGxl ZnRCbGtubzsJCS8qIHJpZ2h0ZXN0IG5vbi1kZWxldGVkIHBhZ2Ugb24gbGVmdCAqLworCUJ1ZmZl cgkJbGVmdEJ1ZmZlcjsJCS8qIHBpbm5lZCBhbmQgbG9ja2VkIHJpZ2h0ZXN0IG5vbi1kZWxldGVk IHBhZ2UKKwkJCQkJCQkJICogb24gbGVmdCAqLwogCWJvb2wJCWlzUm9vdDsKIH0gRGF0YVBhZ2VE ZWxldGVTdGFjazsKIApAQCAtMTM5LDExICsxNDAsOCBAQCBnaW5EZWxldGVQYWdlKEdpblZhY3V1 bVN0YXRlICpndnMsIEJsb2NrTnVtYmVyIGRlbGV0ZUJsa25vLCBCbG9ja051bWJlciBsZWZ0Qmxr bgogCS8qCiAJICogVGhpcyBmdW5jdGlvbiBNVVNUIGJlIGNhbGxlZCBvbmx5IGlmIHNvbWVvbmUg b2YgcGFyZW50IHBhZ2VzIGhvbGQKIAkgKiBleGNsdXNpdmUgY2xlYW51cCBsb2NrLiBUaGlzIGd1 YXJhbnRlZXMgdGhhdCBubyBpbnNlcnRpb25zIGN1cnJlbnRseQotCSAqIGhhcHBlbiBpbiB0aGlz IHN1YnRyZWUuIENhbGxlciBhbHNvIGFjcXVpcmUgRXhjbHVzaXZlIGxvY2sgb24gZGVsZXRhYmxl Ci0JICogcGFnZSBhbmQgaXMgYWNxdWlyaW5nIGFuZCByZWxlYXNpbmcgZXhjbHVzaXZlIGxvY2sg b24gbGVmdCBwYWdlIGJlZm9yZS4KLQkgKiBMZWZ0IHBhZ2Ugd2FzIGxvY2tlZCBhbmQgcmVsZWFz ZWQuIFRoZW4gcGFyZW50IGFuZCB0aGlzIHBhZ2UgYXJlCi0JICogbG9ja2VkLiBXZSBhY3F1aXJl IGxlZnQgcGFnZSBsb2NrIGhlcmUgb25seSB0byBtYXJrIHBhZ2UgZGlydHkgYWZ0ZXIKLQkgKiBj aGFuZ2luZyByaWdodCBwb2ludGVyLgorCSAqIGhhcHBlbiBpbiB0aGlzIHN1YnRyZWUuIENhbGxl ciBhbHNvIGFjcXVpcmVzIEV4Y2x1c2l2ZSBsb2NrcyBvbgorCSAqIGRlbGV0YWJsZSBhbmQgbGVm dCBwYWdlcy4KIAkgKi8KIAlsQnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKGd2cy0+aW5kZXgs IE1BSU5fRk9SS05VTSwgbGVmdEJsa25vLAogCQkJCQkJCQkgUkJNX05PUk1BTCwgZ3ZzLT5zdHJh dGVneSk7CkBAIC0xNTIsOCArMTUwLDYgQEAgZ2luRGVsZXRlUGFnZShHaW5WYWN1dW1TdGF0ZSAq Z3ZzLCBCbG9ja051bWJlciBkZWxldGVCbGtubywgQmxvY2tOdW1iZXIgbGVmdEJsa24KIAlwQnVm ZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKGd2cy0+aW5kZXgsIE1BSU5fRk9SS05VTSwgcGFyZW50 Qmxrbm8sCiAJCQkJCQkJCSBSQk1fTk9STUFMLCBndnMtPnN0cmF0ZWd5KTsKIAotCUxvY2tCdWZm ZXIobEJ1ZmZlciwgR0lOX0VYQ0xVU0lWRSk7Ci0KIAlwYWdlID0gQnVmZmVyR2V0UGFnZShkQnVm ZmVyKTsKIAlyaWdodGxpbmsgPSBHaW5QYWdlR2V0T3BhcXVlKHBhZ2UpLT5yaWdodGxpbms7CiAK QEAgLTIyNyw3ICsyMjMsNyBAQCBnaW5EZWxldGVQYWdlKEdpblZhY3V1bVN0YXRlICpndnMsIEJs b2NrTnVtYmVyIGRlbGV0ZUJsa25vLCBCbG9ja051bWJlciBsZWZ0QmxrbgogCX0KIAogCVJlbGVh c2VCdWZmZXIocEJ1ZmZlcik7Ci0JVW5sb2NrUmVsZWFzZUJ1ZmZlcihsQnVmZmVyKTsKKwlSZWxl YXNlQnVmZmVyKGxCdWZmZXIpOwogCVJlbGVhc2VCdWZmZXIoZEJ1ZmZlcik7CiAKIAlFTkRfQ1JJ VF9TRUNUSU9OKCk7CkBAIC0yMzcsNyArMjMzLDExIEBAIGdpbkRlbGV0ZVBhZ2UoR2luVmFjdXVt U3RhdGUgKmd2cywgQmxvY2tOdW1iZXIgZGVsZXRlQmxrbm8sIEJsb2NrTnVtYmVyIGxlZnRCbGtu CiAKIAogLyoKLSAqIHNjYW5zIHBvc3RpbmcgdHJlZSBhbmQgZGVsZXRlcyBlbXB0eSBwYWdlcwor ICogU2NhbnMgcG9zdGluZyB0cmVlIGFuZCBkZWxldGVzIGVtcHR5IHBhZ2VzLiAgQ2FsbGVyIG11 c3QgbG9jayByb290IHBhZ2UgZm9yCisgKiBjbGVhbnVwLiAgRHVyaW5nIHNjYW4gcGF0aCBmcm9t IHJvb3QgdG8gY3VycmVudCBwYWdlIGlzIGtlcHQgZXhjbHVzaXZlbHkKKyAqIGxvY2tlZC4gIEFs c28ga2VlcCBsZWZ0IHBhZ2UgZXhjbHVzaXZlbHkgbG9ja2VkLCBiZWNhdXNlIGdpbkRlbGV0ZVBh Z2UoKQorICogbmVlZHMgaXQuICBJZiB3ZSB0cnkgdG8gcmVsb2NrIGxlZnQgcGFnZSBsYXRlciwg aXQgY291bGQgZGVhZGxvY2sgd2l0aAorICogZ2luU3RlcFJpZ2h0KCkuCiAgKi8KIHN0YXRpYyBi b29sCiBnaW5TY2FuVG9EZWxldGUoR2luVmFjdXVtU3RhdGUgKmd2cywgQmxvY2tOdW1iZXIgYmxr bm8sIGJvb2wgaXNSb290LApAQCAtMjYwLDcgKzI2MCw3IEBAIGdpblNjYW5Ub0RlbGV0ZShHaW5W YWN1dW1TdGF0ZSAqZ3ZzLCBCbG9ja051bWJlciBibGtubywgYm9vbCBpc1Jvb3QsCiAJCQltZSA9 IChEYXRhUGFnZURlbGV0ZVN0YWNrICopIHBhbGxvYzAoc2l6ZW9mKERhdGFQYWdlRGVsZXRlU3Rh Y2spKTsKIAkJCW1lLT5wYXJlbnQgPSBwYXJlbnQ7CiAJCQlwYXJlbnQtPmNoaWxkID0gbWU7Ci0J CQltZS0+bGVmdEJsa25vID0gSW52YWxpZEJsb2NrTnVtYmVyOworCQkJbWUtPmxlZnRCdWZmZXIg PSBJbnZhbGlkQnVmZmVyOwogCQl9CiAJCWVsc2UKIAkJCW1lID0gcGFyZW50LT5jaGlsZDsKQEAg LTI4OCw2ICsyODgsMTIgQEAgZ2luU2NhblRvRGVsZXRlKEdpblZhY3V1bVN0YXRlICpndnMsIEJs b2NrTnVtYmVyIGJsa25vLCBib29sIGlzUm9vdCwKIAkJCWlmIChnaW5TY2FuVG9EZWxldGUoZ3Zz LCBQb3N0aW5nSXRlbUdldEJsb2NrTnVtYmVyKHBpdGVtKSwgZmFsc2UsIG1lLCBpKSkKIAkJCQlp LS07CiAJCX0KKworCQlpZiAoR2luUGFnZVJpZ2h0TW9zdChwYWdlKSAmJiBCdWZmZXJJc1ZhbGlk KG1lLT5jaGlsZC0+bGVmdEJ1ZmZlcikpCisJCXsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIobWUt PmNoaWxkLT5sZWZ0QnVmZmVyKTsKKwkJCW1lLT5jaGlsZC0+bGVmdEJ1ZmZlciA9IEludmFsaWRC dWZmZXI7CisJCX0KIAl9CiAKIAlpZiAoR2luUGFnZUlzTGVhZihwYWdlKSkKQEAgLTI5OCwyMSAr MzA0LDMxIEBAIGdpblNjYW5Ub0RlbGV0ZShHaW5WYWN1dW1TdGF0ZSAqZ3ZzLCBCbG9ja051bWJl ciBibGtubywgYm9vbCBpc1Jvb3QsCiAJaWYgKGlzZW1wdHkpCiAJewogCQkvKiB3ZSBuZXZlciBk ZWxldGUgdGhlIGxlZnQtIG9yIHJpZ2h0bW9zdCBicmFuY2ggKi8KLQkJaWYgKG1lLT5sZWZ0Qmxr bm8gIT0gSW52YWxpZEJsb2NrTnVtYmVyICYmICFHaW5QYWdlUmlnaHRNb3N0KHBhZ2UpKQorCQlp ZiAoQnVmZmVySXNWYWxpZChtZS0+bGVmdEJ1ZmZlcikgJiYgIUdpblBhZ2VSaWdodE1vc3QocGFn ZSkpCiAJCXsKIAkJCUFzc2VydCghaXNSb290KTsKLQkJCWdpbkRlbGV0ZVBhZ2UoZ3ZzLCBibGtu bywgbWUtPmxlZnRCbGtubywgbWUtPnBhcmVudC0+Ymxrbm8sIG15b2ZmLCBtZS0+cGFyZW50LT5p c1Jvb3QpOworCQkJZ2luRGVsZXRlUGFnZShndnMsIGJsa25vLCBCdWZmZXJHZXRCbG9ja051bWJl cihtZS0+bGVmdEJ1ZmZlciksCisJCQkJCQkgIG1lLT5wYXJlbnQtPmJsa25vLCBteW9mZiwgbWUt PnBhcmVudC0+aXNSb290KTsKIAkJCW1lRGVsZXRlID0gdHJ1ZTsKIAkJfQogCX0KIAotCWlmICgh aXNSb290KQotCQlMb2NrQnVmZmVyKGJ1ZmZlciwgR0lOX1VOTE9DSyk7CisJaWYgKCFtZURlbGV0 ZSkKKwl7CisJCWlmIChCdWZmZXJJc1ZhbGlkKG1lLT5sZWZ0QnVmZmVyKSkKKwkJCVVubG9ja1Jl bGVhc2VCdWZmZXIobWUtPmxlZnRCdWZmZXIpOworCQltZS0+bGVmdEJ1ZmZlciA9IGJ1ZmZlcjsK Kwl9CisJZWxzZQorCXsKKwkJaWYgKCFpc1Jvb3QpCisJCQlMb2NrQnVmZmVyKGJ1ZmZlciwgR0lO X1VOTE9DSyk7CiAKLQlSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJCVJlbGVhc2VCdWZmZXIoYnVm ZmVyKTsKKwl9CiAKLQlpZiAoIW1lRGVsZXRlKQotCQltZS0+bGVmdEJsa25vID0gYmxrbm87CisJ aWYgKGlzUm9vdCkKKwkJUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCiAJcmV0dXJuIG1lRGVsZXRl OwogfQpAQCAtNDA5LDcgKzQyNSw3IEBAIGdpblZhY3V1bVBvc3RpbmdUcmVlKEdpblZhY3V1bVN0 YXRlICpndnMsIEJsb2NrTnVtYmVyIHJvb3RCbGtubykKIAkJTG9ja0J1ZmZlckZvckNsZWFudXAo YnVmZmVyKTsKIAogCQltZW1zZXQoJnJvb3QsIDAsIHNpemVvZihEYXRhUGFnZURlbGV0ZVN0YWNr KSk7Ci0JCXJvb3QubGVmdEJsa25vID0gSW52YWxpZEJsb2NrTnVtYmVyOworCQlyb290LmxlZnRC dWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCQlyb290LmlzUm9vdCA9IHRydWU7CiAKIAkJZ2luU2Nh blRvRGVsZXRlKGd2cywgcm9vdEJsa25vLCB0cnVlLCAmcm9vdCwgSW52YWxpZE9mZnNldE51bWJl cik7Ci0tIAoyLjE0LjMKCg== --00000000000028d60005978edd21 Content-Type: application/octet-stream; name="0003-Revise-GIN-README-4.patch" Content-Disposition: attachment; filename="0003-Revise-GIN-README-4.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k33bksvq2 RnJvbSBhZGRlZTlkOGExYzBkNTk2Mzc3ZmE1OTg5Y2U2ZDZkYWE4NzZhNmExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCAxNyBOb3YgMjAxOSAyMToxMToyMiArMDMwMApTdWJqZWN0OiBb UEFUQ0ggMy8zXSBSZXZpc2UgR0lOIFJFQURNRQoKV2UgZmluZCBHSU4gY29uY3VycmVuY3kgYnVn cyBmcm9tIHRpbWUgdG8gdGltZS4gIE9uZSBvZiB0aGUgcHJvYmxlbXMgaGVyZSBpcwp0aGF0IGNv bmN1cnJlbmN5IG9mIEdJTiBpc24ndCB3ZWxsLWRvY3VtZW50ZWQgaW4gUkVBRE1FLiAgU28sIGl0 IG1pZ2h0IGJlIGV2ZW4KaGFyZCB0byBkaXN0aW5ndWlzaCBkZXNpZ24gYnVncyBmcm9tIGltcGxl bWVudGF0aW9uIGJ1Z3MuCgpUaGlzIGNvbW1pdCByZXZpc2VkIGNvbmN1cnJlbmN5IHNlY3Rpb24g aW4gR0lOIFJFQURNRSBwcm92aWRpbmcgbW9yZSBkZXRhaWxzLgpTb21lIGV4YW1wbGVzIGFyZSBp bGx1c3RyYXRlZCBpbiBBU0NJSSBhcnQuCgpBbHNvLCB0aGlzIGNvbW1pdCBhZGQgdGhlIGV4cGxh bmF0aW9uIG9mIGhvdyBpcyB0dXBsZSBsYXlvdXQgaW4gaW50ZXJuYWwgR0lOCkItdHJlZSBwYWdl IGRpZmZlcmVudCBpbiBjb21wYXJpc29uIHdpdGggbmJ0cmVlLgoKRGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS81YzMzMmJkMS44N2I2LjE2ZDdjMTdhYTk4LkNvcmVtYWlsLmNoamlzY2hq JTQwMTYzLmNvbQpBdXRob3I6IEFsZXhhbmRlciBLb3JvdGtvdgpSZXZpZXdlZC1ieTogUGV0ZXIg R2VvZ2hlZ2FuCkJhY2twYXRjaC10aHJvdWdoOiA5LjQKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv Z2luL1JFQURNRSB8IDIxNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0KIDEgZmlsZSBjaGFuZ2VkLCAxNzYgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9SRUFETUUgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL1JFQURNRQppbmRleCBlNDE1MjUwMGNjNi4uMTI1YTgyMjE5YjkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vUkVBRE1FCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vUkVBRE1FCkBAIC0yMTUsNiArMjE1LDM1IEBAIGZpdCBvbiBvbmUgcGVuZGluZy1saXN0 IHBhZ2UgbXVzdCBoYXZlIHRob3NlIHBhZ2VzIHRvIGl0c2VsZiwgZXZlbiBpZiB0aGlzCiByZXN1 bHRzIGluIHdhc3RpbmcgbXVjaCBvZiB0aGUgc3BhY2Ugb24gdGhlIHByZWNlZGluZyBwYWdlIGFu ZCB0aGUgbGFzdAogcGFnZSBmb3IgdGhlIHR1cGxlLikKIAorR0lOIHBhY2tzIGRvd25saW5rcyBh bmQgcGl2b3Qga2V5cyBpbnRvIGludGVybmFsIHBhZ2UgdHVwbGVzIGluIGEgZGlmZmVyZW50IHdh eQordGhhbiBuYnRyZWUgZG9lcy4gIExlaG1hbiAmIFlhbyBkZWZpbmVzIGl0IGFzIGZvbGxvd2lu Zy4KKworUF8wLCBLXzEsIFBfMSwgS18yLCBQXzIsIC4uLiAsIEtfbiwgUF9uLCBLX3tuKzF9CisK K1RoZXJlIFBfaSBpcyBhIGRvd25saW5rIGFuZCBLX2kgaXMgYSBrZXkuICBLX2kgc3BsaXRzIGtl eSBzcGFjZSBiZXR3ZWVuIFBfe2ktMX0KK2FuZCBQX2kgKDAgPD0gaSA8PSBuKS4gIEtfe24rMX0g aXMgaGlnaCBrZXkuCisKK0luIGludGVybmFsIHBhZ2UgdHVwbGUgaXMga2V5IGFuZCBkb3dubGlu ayBncm91cGVkIHRvZ2V0aGVyLiAgbmJ0cmVlIHBhY2tzCitrZXlzIGFuZCBkb3dubGlua3MgaW50 byB0dXBsZXMgYXMgZm9sbG93aW5nLgorCisoS197bisxfSwgTm9uZSksICgtSW5mLCBQXzApLCAo S18xLCBQXzEpLCAuLi4gLCAoS19uLCBQX24pCisKK1RoZXJlIHR1cGxlcyBhcmUgc2hvd24gaW4g cGFyZW50aGVzZXMuICBTbywgaGlnaGtleSBpcyBzdG9yZWQgc2VwYXJhdGVseS4gIFBfaQoraXMg Z3JvdXBlZCB3aXRoIEtfaS4gIFBfMCBpcyBncm91cGVkIHdpdGggLUluZiBrZXkuCisKK0dJTiBw YWNrcyBrZXlzIGFuZCBkb3dubGlua3MgaW50byB0dXBsZXMgaW4gYSBkaWZmZXJlbnQgd2F5Lgor CisoUF8wLCBLXzEpLCAoUF8xLCBLXzIpLCAuLi4gLCAoUF9uLCBLX3tuKzF9KQorCitQX2kgaXMg Z3JvdXBlZCB3aXRoIEtfe2krMX0uICAtSW5mIGtleSBpcyBub3QgbmVlZGVkLgorCitUaGVyZSBh cmUgY291cGxlIG9mIGFkZGl0aW9uYWwgbm90ZXMgcmVnYXJkaW5nIEtfe24rMX0ga2V5LgorMSkg SW4gZW50cnkgdHJlZSByaWdodG1vc3QgcGFnZSwgYSBrZXkgY291cGxlZCB3aXRoIFBfbiBkb2Vz bid0IHJlYWxseSBtYXR0ZXIuCitIaWdoa2V5IGlzIGFzc3VtZWQgdG8gYmUgaW5maW5pdHkuCisy KSBJbiBwb3N0aW5nIHRyZWUsIGEga2V5IGNvdXBsZWQgd2l0aCBQX24gYWx3YXlzIGRvZXNuJ3Qg bWF0dGVyLiAgSGlnaGtleSBmb3IKK25vbi1yaWdodG1vc3QgcGFnZXMgaXMgc3RvcmVkIHNlcGFy YXRlbHkgYW5kIGFjY2Vzc2VkIHZpYQorR2luRGF0YVBhZ2VHZXRSaWdodEJvdW5kKCkuCisKIFBv c3RpbmcgdHJlZQogLS0tLS0tLS0tLS0tCiAKQEAgLTI3OCwyMSArMzA3LDg2IEBAIENvbmN1cnJl bmN5CiAtLS0tLS0tLS0tLQogCiBUaGUgZW50cnkgdHJlZSBhbmQgZWFjaCBwb3N0aW5nIHRyZWUg YXJlIEItdHJlZXMsIHdpdGggcmlnaHQtbGlua3MgY29ubmVjdGluZwotc2libGluZyBwYWdlcyBh dCB0aGUgc2FtZSBsZXZlbC4gVGhpcyBpcyB0aGUgc2FtZSBzdHJ1Y3R1cmUgdGhhdCBpcyB1c2Vk IGluCitzaWJsaW5nIHBhZ2VzIGF0IHRoZSBzYW1lIGxldmVsLiAgVGhpcyBpcyB0aGUgc2FtZSBz dHJ1Y3R1cmUgdGhhdCBpcyB1c2VkIGluCiB0aGUgcmVndWxhciBCLXRyZWUgaW5kZXhhbSAoaW52 ZW50ZWQgYnkgTGVobWFuICYgWWFvKSwgYnV0IHdlIGRvbid0IHN1cHBvcnQKLXNjYW5uaW5nIGEg R0lOIHRyZWVzIGJhY2t3YXJkcywgc28gd2UgZG9uJ3QgbmVlZCBsZWZ0LWxpbmtzLgotCi1UbyBh dm9pZCBkZWFkbG9ja3MsIEItdHJlZSBwYWdlcyBtdXN0IGFsd2F5cyBiZSBsb2NrZWQgaW4gdGhl IHNhbWUgb3JkZXI6Ci1sZWZ0IHRvIHJpZ2h0LCBhbmQgYm90dG9tIHRvIHRvcC4gVGhlIGV4Y2Vw dGlvbiBpcyBwYWdlIGRlbGV0aW9uIGR1cmluZyB2YWN1dW0sCi13aGljaCB3b3VsZCBiZSBjb25z aWRlcmVkIHNlcGFyYXRlbHkuICBXaGVuIHNlYXJjaGluZywgdGhlIHRyZWUgaXMgdHJhdmVyc2Vk Ci1mcm9tIHRvcCB0byBib3R0b20sIHNvIHRoZSBsb2NrIG9uIHRoZSBwYXJlbnQgcGFnZSBtdXN0 IGJlIHJlbGVhc2VkIGJlZm9yZQotZGVzY2VuZGluZyB0byB0aGUgbmV4dCBsZXZlbC4gQ29uY3Vy cmVudCBwYWdlIHNwbGl0cyBtb3ZlIHRoZSBrZXlzcGFjZSB0bwotcmlnaHQsIHNvIGFmdGVyIGZv bGxvd2luZyBhIGRvd25saW5rLCB0aGUgcGFnZSBhY3R1YWxseSBjb250YWluaW5nIHRoZSBrZXkK LXdlJ3JlIGxvb2tpbmcgZm9yIG1pZ2h0IGJlIHNvbWV3aGVyZSB0byB0aGUgcmlnaHQgb2YgdGhl IHBhZ2Ugd2UgbGFuZGVkIG9uLgotSW4gdGhhdCBjYXNlLCB3ZSBmb2xsb3cgdGhlIHJpZ2h0LWxp bmtzIHVudGlsIHdlIGZpbmQgdGhlIHBhZ2Ugd2UncmUgbG9va2luZwotZm9yLiBJbiBzcGl0ZSBv ZiBzZWFyY2hlcywgaW5zZXJ0aW9ucyBrZWVwcyBwaW5zIG9uIGFsbCBwYWdlcyBpbiBwYXRoIGZy b20KLXJvb3QgdG8gdGhlIGN1cnJlbnQgcGFnZS4gVGhlc2UgcGFnZXMgcG90ZW50aWFsbHkgcmVx dWllcyBkb3dubGluayBpbnNlcnRpb24sCi13aGlsZSBwaW5zIHByZXZlbnQgdGhlbSBmcm9tIGJl aW5nIGRlbGV0ZWQuCitzY2FubmluZyBhIEdJTiB0cmVlcyBiYWNrd2FyZHMsIHNvIHdlIGRvbid0 IG5lZWQgbGVmdC1saW5rcy4gIFRoZSBlbnRyeSB0cmVlCitsZWF2ZXMgZG9uJ3QgaGF2ZSBkZWRp Y2F0ZWQgaGlnaCBrZXlzLCBpbnN0ZWFkIGdyZWF0ZXN0IGxlYWYgdHVwbGUgc2VydmVzIGFzCito aWdoIGtleS4gIFRoYXQgd29ya3MgYmVjYXVzZSB0dXBsZXMgYXJlIG5ldmVyIGRlbGV0ZWQgZnJv bSB0aGUgZW50cnkgdHJlZS4KKworVGhlIGFsZ29yaXRobXMgdXNlZCB0byBvcGVyYXRlIGVudHJ5 IGFuZCBwb3N0aW5nIHRyZWVzIGFyZSBjb25zaWRlcmVkIGJlbG93LgorCisjIyMgTG9jYXRpbmcg dGhlIGxlYWYgcGFnZQorCitXaGVuIHdlIHNlYXJjaCBmb3IgbGVhZiBwYWdlIGluIEdJTiBidHJl ZSB0byBwZXJmb3JtIGEgcmVhZCwgd2UgZGVzY2VuZCBmcm9tCit0aGUgcm9vdCBwYWdlIHRvIHRo ZSBsZWFmIHRocm91Z2ggdXNpbmcgZG93bmxpbmtzIHRha2luZyBwaW4gYW5kIHNoYXJlZCBsb2Nr IG9uCitvbmUgcGFnZSBhdCBvbmNlLiAgU28sIHdlIHJlbGVhc2UgcGluIGFuZCBzaGFyZWQgbG9j ayBvbiBwcmV2aW91cyBwYWdlIGJlZm9yZQorZ2V0dGluZyB0aGVtIG9uIHRoZSBuZXh0IHBhZ2Uu CisKK1RoZSBwaWN0dXJlIGJlbG93IHNob3dzIHRyZWUgc3RhdGUgYWZ0ZXIgZmluZGluZyB0aGUg bGVhZiBwYWdlLiAgTG93ZXIgY2FzZQorbGV0dGVycyBkZXBpY3RzIHRyZWUgcGFnZXMuICAnUycg ZGVwaWN0cyBzaGFyZWQgbG9jayBvbiB0aGUgcGFnZS4KKworICAgICAgICAgICAgICAgYQorICAg ICAgICAgICAvICAgfCAgIFwKKyAgICAgICBiICAgICAgIGMgICAgICAgZAorICAgICAvIHwgXCAg ICAgfCBcICAgICB8IFwKKyAgIGVTICBmICAgZyAgIGggICBpICAgaiAgIGsKKworIyMjIFN0ZXBp bmcgcmlnaHQKKworQ29uY3VycmVudCBwYWdlIHNwbGl0cyBtb3ZlIHRoZSBrZXlzcGFjZSB0byBy aWdodCwgc28gYWZ0ZXIgZm9sbG93aW5nIGEKK2Rvd25saW5rLCB0aGUgcGFnZSBhY3R1YWxseSBj b250YWluaW5nIHRoZSBrZXkgd2UncmUgbG9va2luZyBmb3IgbWlnaHQgYmUKK3NvbWV3aGVyZSB0 byB0aGUgcmlnaHQgb2YgdGhlIHBhZ2Ugd2UgbGFuZGVkIG9uLiAgSW4gdGhhdCBjYXNlLCB3ZSBm b2xsb3cgdGhlCityaWdodC1saW5rcyB1bnRpbCB3ZSBmaW5kIHRoZSBwYWdlIHdlJ3JlIGxvb2tp bmcgZm9yLgorCitEdXJpbmcgc3RlcHBpbmcgcmlnaHQgd2UgdGFrZSBwaW4gYW5kIHNoYXJlZCBs b2NrIG9uIHRoZSByaWdodCBzaWJsaW5nIGJlZm9yZQorcmVsZWFzaW5nIHRoZW0gZnJvbSB0aGUg Y3VycmVudCBwYWdlLiAgVGhpcyBtZWNoYW5pc20gd2FzIGRlc2lnbmVkIHRvIHByb3RlY3QKK2Zy b20gc3RlcHBpbmcgdG8gZGVsZXRlIHBhZ2UuICBXZSBzdGVwIHRvIHRoZSByaWdodCBzaWJsaW5n IHdoaWxlIGhvbGQgbG9jayBvbgordGhlIHJpZ2h0bGluayBwb2ludGluZyB0aGVyZS4gIFNvLCBp dCdzIGd1YXJhbnRlZWQgdGhhdCBub2JvZHkgdXBkYXRlcyByaWdodGxpbmsKK2NvbmN1cnJlbnRs eSBhbmQgZG9lc24ndCBkZWxldGUgcmlnaHQgc2libGluZyBhY2NvcmRpbmdseS4KKworVGhlIHBp Y3R1cmUgYmVsb3cgc2hvd3MgdHdvIHBhZ2VzIGxvY2tlZCBhdCBvbmNlIGR1cmluZyBzdGVwcGlu ZyByaWdodC4KKworICAgICAgICAgICAgICAgYQorICAgICAgICAgICAvICAgfCAgIFwKKyAgICAg ICBiICAgICAgIGMgICAgICAgZAorICAgICAvIHwgXCAgICAgfCBcICAgICB8IFwKKyAgIGVTICBm UyAgZyAgIGggICBpICAgaiAgIGsKKworIyMjIEluc2VydAorCitXaGlsZSBmaW5kaW5nIGFwcHJv cHJpYXRlIGxlYWYgZm9yIGluc2VydGlvbiB3ZSBhbHNvIGRlc2NlbmQgZnJvbSB0aGUgcm9vdCB0 bworbGVhZiwgd2hpbGUgc2hhcmVkIGxvY2tpbmcgb25lIHBhZ2UgYXQgb25jZSBpbi4gIEJ1dCBk dXJpbmcgaW5zZXJ0aW9uIHdlIGRvbid0CityZWxlYXNlIHBpbnMgZnJvbSByb290IGFuZCBpbnRl cm5hbCBwYWdlcy4gIFRoYXQgY291bGQgc2F2ZSB1cyBzb21lIGxvb2t1cHMgdG8KK3RoZSBidWZm ZXJzIGhhc2ggdGFibGUgZm9yIGRvd25saW5rcyBpbnNlcnRpb24gYXNzdW1pbmcgcGFyZW50cyBh cmUgbm90IGNoYW5nZWQKK2R1ZSB0byBjb25jdXJyZW50IHNwbGl0cy4gIE9uY2Ugd2UgcmVhY2gg bGVhZiB3ZSByZS1sb2NrIHRoZSBwYWdlIGluIGV4Y2x1c2l2ZQorbW9kZS4KKworVGhlIHBpY3R1 cmUgYmVsb3cgc2hvd3MgbGVhZiBwYWdlIGxvY2tlZCBpbiBleGNsdXNpdmUgbW9kZSBhbmQgcmVh ZHkgZm9yCitpbnNlcnRpb24uICAnUCcgYW5kICdFJyBkZXBpY3QgcGluIGFuZCBleGNsdXNpdmUg bG9jayBjb3JyZXNwb25kaW5nbHkuCisKKworICAgICAgICAgICAgICAgYVAKKyAgICAgICAgICAg LyAgIHwgICBcCisgICAgICAgYiAgICAgICBjUCAgICAgIGQKKyAgICAgLyB8IFwgICAgIHwgXCAg ICAgfCBcCisgICBlICAgZiAgIGcgICBoRSAgaSAgIGogICBrCisKKworSWYgaW5zZXJ0IGNhdXNl cyBhIHBhZ2Ugc3BsaXQsIHRoZSBwYXJlbnQgaXMgbG9ja2VkIGluIGV4Y2x1c2l2ZSBtb2RlIGJl Zm9yZQordW5sb2NraW5nIHRoZSBsZWZ0IGNoaWxkLiAgU28sIGluc2VydGlvbiBhbGdvcml0aG0g Y2FuIGV4Y2x1c2l2ZWx5IGxvY2sgYm90aAorcGFyZW50IGFuZCBjaGlsZCBwYWdlcyBhdCBvbmNl IHN0YXJ0aW5nIGZyb20gY2hpbGQuCisKK1RoZSBwaWN0dXJlIGJlbG93IHNob3dzIHRyZWUgc3Rh dGUgYWZ0ZXIgbGVhZiBwYWdlIHNwbGl0LiAgJ3EnIGlzIG5ldyBwYWdlCitwcm9kdWNlZCBieSBz cGxpdC4gIFBhcmVudCAnYycgaXMgYWJvdXQgdG8gaGF2ZSBkb3dubGluayBpbnNlcnRlZC4KKwor ICAgICAgICAgICAgICAgICAgYVAKKyAgICAgICAgICAgIC8gICAgIHwgICBcCisgICAgICAgYiAg ICAgICAgICBjRSAgICAgIGQKKyAgICAgLyB8IFwgICAgICAvIHwgXCAgICAgfCBcCisgICBlICAg ZiAgIGcgIGhFICBxICAgaSAgIGogICBrCisKKworIyMjIFBhZ2UgZGVsZXRpb24KIAogVmFjdXVt IG5ldmVyIGRlbGV0ZXMgdHVwbGVzIG9yIHBhZ2VzIGZyb20gdGhlIGVudHJ5IHRyZWUuIEl0IHRy YXZlcnNlcyBlbnRyeQogdHJlZSBsZWFmcyBpbiBsb2dpY2FsIG9yZGVyIGJ5IHJpZ2h0bGlua3Mg YW5kIHJlbW92ZXMgZGVsZXRhYmxlIFRJRHMgZnJvbQpAQCAtMzAxLDM5ICszOTUsODMgQEAgYXJl IHZhY3V1bWVkIGluIHR3byBzdGFnZXMuIEF0IGZpcnN0IHN0YWdlLCBkZWxldGFibGUgVElEcyBh cmUgcmVtb3ZlZCBmcm9tCiBsZWFmcy4gSWYgZmlyc3Qgc3RhZ2UgZGV0ZWN0cyBhdCBsZWFzdCBv bmUgZW1wdHkgcGFnZSwgdGhlbiBhdCB0aGUgc2Vjb25kIHN0YWdlCiBnaW5TY2FuVG9EZWxldGUo KSBkZWxldGVzIGVtcHR5IHBhZ2VzLgogCi1naW5TY2FuVG9EZWxldGUoKSBzY2FucyBwb3N0aW5n IHRyZWUgdG8gZGVsZXRlIGVtcHR5IHBhZ2VzLCB3aGlsZSB2YWN1dW0gaG9sZHMKLWNsZWFudXAg bG9jayBvbiB0aGUgcG9zdGluZyB0cmVlIHJvb3QuIFRoaXMgbG9jayBwcmV2ZW50IGNvbmN1cnJl bnQgaW5zZXJ0cywKLWJlY2F1c2UgaW5zZXJ0ZXJzIGhvbGQgYSBwaW4gb24gdGhlIHJvb3QgcGFn ZS4gSW4gc3BpdGUgb2YgaW5zZXJ0ZXJzIHNlYXJjaGVzCi1kb24ndCBob2xkIHBpbiBvbiByb290 IHBhZ2UuIFNvLCB3aGlsZSBuZXcgc2VhcmNoZXMgY2Fubm90IGJlZ2luIHdoaWxlIHJvb3QgcGFn ZQotaXMgbG9ja2VkLCBhbnkgYWxyZWFkeS1pbi1wcm9ncmVzcyBzY2FucyBjYW4gY29udGludWUg Y29uY3VycmVudGx5IHdpdGggdmFjdXVtLgorZ2luU2NhblRvRGVsZXRlKCkgdHJhdmVyc2VzIHRo ZSB3aG9sZSB0cmVlIGluIGRlcHRoLWZpcnN0IG1hbm5lci4gIEl0IHN0YXJ0cworZnJvbSB0aGUg c3VwZXItZXhjbHVzaXZlIGxvY2sgb24gdGhlIHRyZWUgcm9vdC4gIFRoaXMgbG9jayBwcmV2ZW50 cyBhbGwgdGhlCitjb25jdXJyZW50IGluc2VydGlvbnMgaW50byB0aGlzIHRyZWUgd2hpbGUgd2Un cmUgZGVsZXRpbmcgcGFnZXMuICBIb3dldmVyLAordGhlcmUgYXJlIHN0aWxsIG1pZ2h0IGJlIHNv bWUgaW4tcHJvZ3Jlc3MgcmVhZGVycywgd2hvIHRyYXZlcnNlZCByb290IGJlZm9yZQord2UgbG9j a2VkIGl0LgorCitUaGUgcGljdHVyZSBiZWxvdyBzaG93cyB0cmVlIHN0YXRlIGFmdGVyIHBhZ2Ug ZGVsZXRpb24gYWxnb3JpdGhtIHRyYXZlcnNlZCB0bworbGVmdG1vc3QgbGVhZiBvZiB0aGUgdHJl ZS4KIAotZ2luU2NhblRvRGVsZXRlKCkgZG9lcyBkZXB0aC1maXJzdCB0cmVlIHNjYW5uaW5nIHdo aWxlIGtlZXBpbmcgZWFjaCBwYWdlIGluIHBhdGgKLWZyb20gcm9vdCB0byBjdXJyZW50IHBhZ2Ug ZXhjbHVzaXZlbHkgbG9ja2VkLiAgSXQgYWxzbyBrZWVwcyBsZWZ0IHNpYmxpbmcgb2YKLWVhY2gg cGFnZSBpbiB0aGUgcGF0aCBsb2NrZWQuICBUaHVzLCBpZiBjdXJyZW50IHBhZ2UgaXMgdG8gYmUg cmVtb3ZlZCwgYWxsCi1yZXF1aXJlZCBwYWdlcyB0byByZW1vdmUgYm90aCBkb3dubGluayBhbmQg cmlnaHRsaW5rIGFyZSBhbHJlYWR5IGxvY2tlZC4KLVRoZXJlZm9yZSwgcGFnZSBkZWxldGlvbiBs b2NrcyBwYWdlcyB0b3AgdG8gYm90dG9tIGFuZCBsZWZ0IHRvIHJpZ2h0IGJyZWFraW5nCi1vdXIg Z2VuZXJhbCBydWxlLiBCdXQgYXNzdW1pbmcgdGhlcmUgaXMgbm8gY29uY3VycmVudCBpbnNlcnRp b25zLCB0aGlzIGNhbid0Ci1jYXVzZSBhIGRlYWRsb2NrLgorICAgICAgICAgICAgICAgYUUKKyAg ICAgICAgICAgLyAgIHwgICBcCisgICAgICAgYkUgICAgICBjICAgICAgIGQKKyAgICAgLyB8IFwg ICAgIHwgXCAgICAgfCBcCisgICBlRSAgZiAgIGcgICBoICAgaSAgIGogICBrCiAKLUR1cmluZyBy ZXBsYXkgb2QgcGFnZSBkZWxldGlvbiBhdCBzdGFuZGJ5LCB0aGUgcGFnZSdzIGxlZnQgc2libGlu ZywgdGhlIHRhcmdldAotcGFnZSwgYW5kIGl0cyBwYXJlbnQsIGFyZSBsb2NrZWQgaW4gdGhhdCBv cmRlci4gU28gaXQgZm9sbG93cyBib3R0b20gdG8gdG9wIGFuZAotbGVmdCB0byByaWdodCBydWxl LgorRGVsZXRpb24gYWxnb3JpdGhtIGtlZXBzIGV4Y2x1c2l2ZSBsb2NrcyBvbiBsZWZ0IHNpYmxp bmdzIG9mIHBhZ2VzIGNvbXByaXNpbmcKK2N1cnJlbnRseSBpbnZlc3RpZ2F0ZWQgcGF0aC4gIFRo dXMsIGlmIGN1cnJlbnQgcGFnZSBpcyB0byBiZSByZW1vdmVkLCBhbGwKK3JlcXVpcmVkIHBhZ2Vz IHRvIHJlbW92ZSBib3RoIGRvd25saW5rIGFuZCByaWdodGxpbmsgYXJlIGFscmVhZHkgbG9ja2Vk LiAgVGhhdAorZXZhZGVzIHBvdGVudGlhbCByaWdodCB0byBsZWZ0IHBhZ2UgbG9ja2luZyBvcmRl ciwgd2hpY2ggY291bGQgZGVhZGxvY2sgd2l0aAorY29uY3VycmVudCBzdGVwcGluZyByaWdodC4K IAogQSBzZWFyY2ggY29uY3VycmVudCB0byBwYWdlIGRlbGV0aW9uIG1pZ2h0IGFscmVhZHkgaGF2 ZSByZWFkIGEgcG9pbnRlciB0byB0aGUKLXBhZ2UgdG8gYmUgZGVsZXRlZCwgYW5kIG1pZ2h0IGJl IGp1c3QgYWJvdXQgdG8gZm9sbG93IGl0LiBBIHBhZ2UgY2FuIGJlIHJlYWNoZWQKK3BhZ2UgdG8g YmUgZGVsZXRlZCwgYW5kIG1pZ2h0IGJlIGp1c3QgYWJvdXQgdG8gZm9sbG93IGl0LiAgQSBwYWdl IGNhbiBiZSByZWFjaGVkCiB2aWEgdGhlIHJpZ2h0LWxpbmsgb2YgaXRzIGxlZnQgc2libGluZywg b3IgdmlhIGl0cyBkb3dubGluayBpbiB0aGUgcGFyZW50LgogCi1UbyBwcmV2ZW50IGEgYmFja2Vu ZCBmcm9tIHJlYWNoaW5nIGEgZGVsZXRlZCBwYWdlIHZpYSBhIHJpZ2h0LWxpbmssIHdoZW4KLWZv bGxvd2luZyBhIHJpZ2h0LWxpbmsgdGhlIGxvY2sgb24gdGhlIHByZXZpb3VzIHBhZ2UgaXMgbm90 IHJlbGVhc2VkIHVudGlsIHRoZQotbG9jayBvbiBuZXh0IHBhZ2UgaGFzIGJlZW4gYWNxdWlyZWQu CitUbyBwcmV2ZW50IGEgYmFja2VuZCBmcm9tIHJlYWNoaW5nIGEgZGVsZXRlZCBwYWdlIHZpYSBh IHJpZ2h0LWxpbmssIHN0ZXBwaW5nCityaWdodCBhbGdvcml0aG0gZG9lc24ndCByZWxlYXNlIGxv Y2sgb24gdGhlIGN1cnJlbnQgcGFnZSB1bnRpbCBsb2NrIG9mIHRoZQorcmlnaHQgcGFnZSBpcyBh Y3F1aXJlZC4KIAotVGhlIGRvd25saW5rIGlzIG1vcmUgdHJpY2t5LiBBIHNlYXJjaCBkZXNjZW5k aW5nIHRoZSB0cmVlIG11c3QgcmVsZWFzZSB0aGUgbG9jaworVGhlIGRvd25saW5rIGlzIG1vcmUg dHJpY2t5LiAgQSBzZWFyY2ggZGVzY2VuZGluZyB0aGUgdHJlZSBtdXN0IHJlbGVhc2UgdGhlIGxv Y2sKIG9uIHRoZSBwYXJlbnQgcGFnZSBiZWZvcmUgbG9ja2luZyB0aGUgY2hpbGQsIG9yIGl0IGNv dWxkIGRlYWRsb2NrIHdpdGggYQogY29uY3VycmVudCBzcGxpdCBvZiB0aGUgY2hpbGQgcGFnZTsg YSBwYWdlIHNwbGl0IGxvY2tzIHRoZSBwYXJlbnQsIHdoaWxlIGFscmVhZHkKLWhvbGRpbmcgYSBs b2NrIG9uIHRoZSBjaGlsZCBwYWdlLiBTbywgZGVsZXRlZCBwYWdlIGNhbm5vdCBiZSByZWNsYWlt ZWQKLWltbWVkaWF0ZWx5LiBJbnN0ZWFkLCB3ZSBoYXZlIHRvIHdhaXQgZm9yIGV2ZXJ5IHRyYW5z YWN0aW9uLCB3aGljaCBtaWdodCB3YWl0IHRvCi1yZWZlcmVuY2UgdGhpcyBwYWdlLCB0byBmaW5p c2guIENvcnJlc3BvbmRpbmcgcHJvY2Vzc2VzIG11c3Qgb2JzZXJ2ZSB0aGF0IHRoZQotcGFnZSBp cyBtYXJrZWQgZGVsZXRlZCBhbmQgcmVjb3ZlciBhY2NvcmRpbmdseS4KK2hvbGRpbmcgYSBsb2Nr IG9uIHRoZSBjaGlsZCBwYWdlLiAgU28sIGRlbGV0ZWQgcGFnZSBjYW5ub3QgYmUgcmVjbGFpbWVk CitpbW1lZGlhdGVseS4gIEluc3RlYWQsIHdlIGhhdmUgdG8gd2FpdCBmb3IgZXZlcnkgdHJhbnNh Y3Rpb24sIHdoaWNoIG1pZ2h0IHdhaXQKK3RvIHJlZmVyZW5jZSB0aGlzIHBhZ2UsIHRvIGZpbmlz aC4gIENvcnJlc3BvbmRpbmcgcHJvY2Vzc2VzIG11c3Qgb2JzZXJ2ZSB0aGF0Cit0aGUgcGFnZSBp cyBtYXJrZWQgZGVsZXRlZCBhbmQgcmVjb3ZlciBhY2NvcmRpbmdseS4KKworVGhlIHBpY3R1cmUg YmVsb3cgc2hvd3MgdHJlZSBzdGF0ZSBhZnRlciBwYWdlIGRlbGV0aW9uIGFsZ29yaXRobSBmdXJ0 aGVyCit0cmF2ZXJzZWQgdGhlIHRyZWUuICBDdXJyZW50bHkgaW52ZXN0aWdhdGVkIHBhdGggaXMg J2EtYy1oJy4gIExlZnQgc2libGluZ3MgJ2InCithbmQgJ2cnIG9mICdjJyBhbmQgJ2gnIGNvcnJl c3BvbmRpbmdseSBhcmUgYWxzbyBleGNsdXNpdmVseSBsb2NrZWQuCisKKyAgICAgICAgICAgICAg IGFFCisgICAgICAgICAgIC8gICB8ICAgXAorICAgICAgIGJFICAgICAgY0UgICAgICBkCisgICAg IC8gfCBcICAgICB8IFwgICAgIHwgXAorICAgZSAgIGYgICBnRSAgaEUgIGkgICBqICAgaworCitU aGUgbmV4dCBwaWN0dXJlIHNob3dzIHRyZWUgc3RhdGUgYWZ0ZXIgcGFnZSAnaCcgd2FzIGRlbGV0 ZWQuICBJdCdzIG1hcmtlZCB3aXRoCisnZGVsZXRlZCcgZmxhZyBhbmQgbmV3ZXN0IHhpZCwgd2hp Y2ggbWlnaHQgdmlzaXQgaXQuICBEb3dubGluayBmcm9tICdjJyB0byAnaCcKK2lzIGFsc28gZGVs ZXRlZC4KKworICAgICAgICAgICAgICAgYUUKKyAgICAgICAgICAgLyAgIHwgICBcCisgICAgICAg YkUgICAgICBjRSAgICAgIGQKKyAgICAgLyB8IFwgICAgICAgXCAgICAgfCBcCisgICBlICAgZiAg IGdFICBoRCAgaUUgIGogICBrCisKK0hvd2V2ZXIsIGl0J3Mgc3RpbGwgcG9zc2libGUgdGhhdCBj b25jdXJyZW50IHJlYWRlciBoYXMgc2VlbiBkb3dubGluayBmcm9tICdjJwordG8gJ2gnIGJlZm9y ZSB3ZSBkZWxldGVkIGl0LiAgSW4gdGhhdCBjYXNlIHRoaXMgcmVhZGVyIHdpbGwgc3RlcCByaWdo dCBmcm9tICdoJwordG8gdGlsbCBmaW5kIG5vbi1kZWxldGVkIHBhZ2UuICBYaWQtbWFya2luZyBv ZiBwYWdlICdoJyBndWFyYW50ZWVzIHRoYXQgdGhpcworcGFnZSB3b3VsZG4ndCBiZSByZXVzZWQg dGlsbCBhbGwgc3VjaCByZWFkZXJzIGdvbmUuICBOZXh0IGxlYWYgcGFnZSB1bmRlcgoraW52ZXN0 aWdhdGlvbiBpcyAnaScuICAnZycgcmVtYWlucyBsb2NrZWQgYXMgaXQgYmVjb21lcyBsZWZ0IHNp Ymxpbmcgb2YgJ2knLgorCitUaGUgbmV4dCBwaWN0dXJlIHNob3dzIHRyZWUgc3RhdGUgYWZ0ZXIg J2knIGFuZCAnYycgd2FzIGRlbGV0ZWQuICBJbnRlcm5hbCBwYWdlCisnYycgd2FzIGRlbGV0ZWQg YmVjYXVzZSBpdCBhcHBlYXJlZCB0byBoYXZlIG5vIGRvd25saW5rcy4gIFRoZSBwYXRoIHVuZGVy CitpbnZlc3RpZ2F0aW9uIGlzICdhLWQtaicuICBQYWdlcyAnYicgYW5kICdnJyBhcmUgbG9ja2Vk IGFzIHNlbGYgc2libGluZ3Mgb2YgJ2QnCithbmQgJ2onLgorCisgICAgICAgICAgICAgICBhRQor ICAgICAgICAgICAvICAgICAgIFwKKyAgICAgICBiRSAgICAgIGNEICAgICAgZEUKKyAgICAgLyB8 IFwgICAgICAgICAgICAgfCBcCisgICBlICAgZiAgIGdFICBoRCAgaUQgIGpFICBrCisKK0R1cmlu ZyB0aGUgcmVwbGF5IG9mIHBhZ2UgZGVsZXRpb24gYXQgc3RhbmRieSwgdGhlIHBhZ2UncyBsZWZ0 IHNpYmxpbmcsIHRoZQordGFyZ2V0IHBhZ2UsIGFuZCBpdHMgcGFyZW50LCBhcmUgbG9ja2VkIGlu IHRoYXQgb3JkZXIuICBUaGlzIG9yZGVyIGd1YXJhbnRlZXMKK25vIGRlYWRsb2NrIHdpdGggY29u Y3VycmVudCByZWFkcy4KIAogUHJlZGljYXRlIExvY2tpbmcKIC0tLS0tLS0tLS0tLS0tLS0tCi0t IAoyLjE0LjMKCg== --00000000000028d60005978edd21--