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 1izWmP-0006lX-KE for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Feb 2020 02:20:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1izWmN-00023n-PX for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Feb 2020 02:20:31 +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 1izWmN-00020Z-4u for pgsql-hackers@lists.postgresql.org; Thu, 06 Feb 2020 02:20:31 +0000 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1izWmK-0005Bg-12 for pgsql-hackers@postgresql.org; Thu, 06 Feb 2020 02:20:29 +0000 Received: by mail-pg1-x536.google.com with SMTP id k3so1922628pgc.3 for ; Wed, 05 Feb 2020 18:20:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:cc:date:in-reply-to:references :mime-version; bh=9RJXZ+DkXo124U5VyYFfRqnfvIBhP5Z/Vhcr8fRQrk8=; b=h8qlWyWJDdAEkdumWTpc/B+dBs7Bsotnf5WU1NWeDQHL/L10RpelHumZxXawcw6l8T oQphqTSa4guHMWBQK0myc0Zbb9mijFHISC6bhsNSrX4JieK8T/lgbmhGgkHZrWruPLBI 0ekevPQtqG7ISqWh/XeuAGHFdp8oHjO0McUjm+4qpqdNhrHVq+0P4+NTOq+FTEytWnOs k9CQ/ZUaGZyxr1gMVBEnZIECMF0fj3/0sNwjGce+GkdRdowjrbVCjxD+Cfk6v6tY+S/J k1frfDDSeyzwd9cUFoOoiFZqgCqwHtSzyNswmbaYg7HwY7iCiVJUL5SIWjfkU+vBJMVm +tGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:mime-version; bh=9RJXZ+DkXo124U5VyYFfRqnfvIBhP5Z/Vhcr8fRQrk8=; b=b2w7edvIR+efFWU05qmdRCP5fLXMDciBMDkFbJUElIPZcJNCow6R8mY2AjlIh/tTB/ zpl07QJXZKw8d3PzQjzXUQMd0MtU74ECq/F4Le/tLaMBTzr9m7otgx8pg0ooe+lsyi78 GskVkYhrDISNtBupOOc98FjSbCpdJggSU4hYsxS7kbrzgSlylPiBvU/XW5S17a1tRiKA 8CV8c+8Qf3fpbnd2dTqQrO/IxgudcQoQcNij6zylB9YtLtyYEFuMRMOFDLJnlICTC3sd POW7n2cMrf5BKX9EFSH5e5YRWpBYF0h8Qd8YIKUPiIg9Un/pMbgpX319Yvw/UfeFdYEV mA3Q== X-Gm-Message-State: APjAAAVIKU2niSzH4ZIxZpsKhKTxJpXWnkfkt7QNKBBFLiefT1nU0nvU l2d+IhEnNu+xrTBJopCz5nyP7Q== X-Google-Smtp-Source: APXvYqw8VUrUY0rorfYZb2ghdDKRm1x6z29cTMAvz92t7cBD9P6vJ2PfE8Kwe10Loq93yzfslMtl8A== X-Received: by 2002:aa7:8ec1:: with SMTP id b1mr1193341pfr.95.1580955626856; Wed, 05 Feb 2020 18:20:26 -0800 (PST) Received: from jdavis ([2600:100f:b05f:7100:6458:80b:898f:69bc]) by smtp.gmail.com with ESMTPSA id a13sm835104pfl.162.2020.02.05.18.20.24 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 05 Feb 2020 18:20:25 -0800 (PST) Message-ID: <37091115219dd522fd9ed67333ee8ed1b7e09443.camel@j-davis.com> Subject: Re: Memory-Bounded Hash Aggregation From: Jeff Davis To: Heikki Linnakangas , Tomas Vondra Cc: Taylor Vesely , Adam Lee , Melanie Plageman , pgsql-hackers@postgresql.org Date: Wed, 05 Feb 2020 18:20:22 -0800 In-Reply-To: References: <507ac540ec7c20136364b5272acbcd4574aa76ef.camel@j-davis.com> <20190703001753.s5e5cme3ucjgeu6c@development> <20190711155520.zqipi23o3yybx7ym@development> <9be86fc1adc315f69b8af4b379087ab451008d8a.camel@j-davis.com> <20190802064405.GA94036@mars.local> <617fea8258ba3df7bc8b21cd7f3afc219f2383d9.camel@j-davis.com> <20190802152123.ichmacgx3y3x7dc3@development> <20191214173225.3kzsbncr6brpxdll@development> <775d754c-9a61-5363-6998-f87d15f1b592@iki.fi> Content-Type: multipart/mixed; boundary="=-n8ArYH8XbQtIA5IDvgyB" X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.1 Mime-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=-n8ArYH8XbQtIA5IDvgyB Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit On Fri, 2020-01-24 at 17:01 -0800, Jeff Davis wrote: > New patch attached. Three minor independent refactoring patches: 1. Add new entry points for the tuple hash table: TupleHashTableHash() LookupTupleHashEntryHash() which are useful for saving and reusing hash values to avoid recomputing. 2. Refactor hash_agg_entry_size() so that the callers don't need to do as much work. 3. Save calculated aggcosts->transitionSpace in the Agg node for later use, rather than discarding it. These are helpful for the upcoming Hash Aggregation work. Regards, Jeff Davis --=-n8ArYH8XbQtIA5IDvgyB Content-Disposition: attachment; filename*0=0001-HashAgg-TupleHashTableHash-and-LookupTupleHashEntryH.pat; filename*1=ch Content-Type: text/x-patch; name="0001-HashAgg-TupleHashTableHash-and-LookupTupleHashEntryH.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBmNDdjZGQxMGYwNGJhYTNiNDFlYWYwZmI4YzE3ZjQxZGRhNGQwYmQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBN b24sIDMgRmViIDIwMjAgMTQ6NDU6MjUgLTA4MDAKU3ViamVjdDogW1BBVENIIDEvMl0gSGFzaEFn ZzogVHVwbGVIYXNoVGFibGVIYXNoKCkgYW5kCiBMb29rdXBUdXBsZUhhc2hFbnRyeUhhc2goKS4K CkV4cG9zZSB0d28gbmV3IGVudHJ5IHBvaW50czsgb25lIGZvciBvbmx5IGNhbGN1bGF0aW5nIHRo ZSBoYXNoIHZhbHVlCm9mIGEgdHVwbGUsIGFuZCBhbm90aGVyIGZvciBsb29raW5nIHVwIGEgaGFz aCBlbnRyeSB3aGVuIHRoZSBoYXNoCnZhbHVlIGlzIGFscmVhZHkga25vd24uCi0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0dyb3VwaW5nLmMgfCAxMDUgKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgfCAgIDUgKysKIDIg ZmlsZXMgY2hhbmdlZCwgODAgaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0dyb3VwaW5nLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjR3JvdXBpbmcuYwppbmRleCAzNjAzYzU4YjYzZS4uOTQ0MzllMmFiOWUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNHcm91cGluZy5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNHcm91cGluZy5jCkBAIC0yNSw4ICsyNSw5IEBACiAjaW5jbHVk ZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIAotc3Rh dGljIHVpbnQzMiBUdXBsZUhhc2hUYWJsZUhhc2goc3RydWN0IHR1cGxlaGFzaF9oYXNoICp0Yiwg Y29uc3QgTWluaW1hbFR1cGxlIHR1cGxlKTsKIHN0YXRpYyBpbnQJVHVwbGVIYXNoVGFibGVNYXRj aChzdHJ1Y3QgdHVwbGVoYXNoX2hhc2ggKnRiLCBjb25zdCBNaW5pbWFsVHVwbGUgdHVwbGUxLCBj b25zdCBNaW5pbWFsVHVwbGUgdHVwbGUyKTsKK3N0YXRpYyBUdXBsZUhhc2hFbnRyeSBMb29rdXBU dXBsZUhhc2hFbnRyeV9pbnRlcm5hbCgKKwlUdXBsZUhhc2hUYWJsZSBoYXNodGFibGUsIFR1cGxl VGFibGVTbG90ICpzbG90LCBib29sICppc25ldywgdWludDMyIGhhc2gpOwogCiAvKgogICogRGVm aW5lIHBhcmFtZXRlcnMgZm9yIHR1cGxlIGhhc2ggdGFibGUgY29kZSBnZW5lcmF0aW9uLiBUaGUg aW50ZXJmYWNlIGlzCkBAIC0zMDAsMTAgKzMwMSw5IEBAIFR1cGxlSGFzaEVudHJ5CiBMb29rdXBU dXBsZUhhc2hFbnRyeShUdXBsZUhhc2hUYWJsZSBoYXNodGFibGUsIFR1cGxlVGFibGVTbG90ICpz bG90LAogCQkJCQkgYm9vbCAqaXNuZXcpCiB7Ci0JVHVwbGVIYXNoRW50cnlEYXRhICplbnRyeTsK LQlNZW1vcnlDb250ZXh0IG9sZENvbnRleHQ7Ci0JYm9vbAkJZm91bmQ7Ci0JTWluaW1hbFR1cGxl IGtleTsKKwlUdXBsZUhhc2hFbnRyeQllbnRyeTsKKwlNZW1vcnlDb250ZXh0CW9sZENvbnRleHQ7 CisJdWludDMyCQkJaGFzaDsKIAogCS8qIE5lZWQgdG8gcnVuIHRoZSBoYXNoIGZ1bmN0aW9ucyBp biBzaG9ydC1saXZlZCBjb250ZXh0ICovCiAJb2xkQ29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhoYXNodGFibGUtPnRlbXBjeHQpOwpAQCAtMzEzLDMyICszMTMsMjkgQEAgTG9va3VwVHVw bGVIYXNoRW50cnkoVHVwbGVIYXNoVGFibGUgaGFzaHRhYmxlLCBUdXBsZVRhYmxlU2xvdCAqc2xv dCwKIAloYXNodGFibGUtPmluX2hhc2hfZnVuY3MgPSBoYXNodGFibGUtPnRhYl9oYXNoX2Z1bmNz OwogCWhhc2h0YWJsZS0+Y3VyX2VxX2Z1bmMgPSBoYXNodGFibGUtPnRhYl9lcV9mdW5jOwogCi0J a2V5ID0gTlVMTDsJCQkJCS8qIGZsYWcgdG8gcmVmZXJlbmNlIGlucHV0c2xvdCAqLworCWhhc2gg PSBUdXBsZUhhc2hUYWJsZUhhc2goaGFzaHRhYmxlLT5oYXNodGFiLCBOVUxMKTsKKwllbnRyeSA9 IExvb2t1cFR1cGxlSGFzaEVudHJ5X2ludGVybmFsKGhhc2h0YWJsZSwgc2xvdCwgaXNuZXcsIGhh c2gpOwogCi0JaWYgKGlzbmV3KQotCXsKLQkJZW50cnkgPSB0dXBsZWhhc2hfaW5zZXJ0KGhhc2h0 YWJsZS0+aGFzaHRhYiwga2V5LCAmZm91bmQpOworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRD b250ZXh0KTsKIAotCQlpZiAoZm91bmQpCi0JCXsKLQkJCS8qIGZvdW5kIHByZS1leGlzdGluZyBl bnRyeSAqLwotCQkJKmlzbmV3ID0gZmFsc2U7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvKiBjcmVh dGVkIG5ldyBlbnRyeSAqLwotCQkJKmlzbmV3ID0gdHJ1ZTsKLQkJCS8qIHplcm8gY2FsbGVyIGRh dGEgKi8KLQkJCWVudHJ5LT5hZGRpdGlvbmFsID0gTlVMTDsKLQkJCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhoYXNodGFibGUtPnRhYmxlY3h0KTsKLQkJCS8qIENvcHkgdGhlIGZpcnN0IHR1cGxlIGlu dG8gdGhlIHRhYmxlIGNvbnRleHQgKi8KLQkJCWVudHJ5LT5maXJzdFR1cGxlID0gRXhlY0NvcHlT bG90TWluaW1hbFR1cGxlKHNsb3QpOwotCQl9Ci0JfQotCWVsc2UKLQl7Ci0JCWVudHJ5ID0gdHVw bGVoYXNoX2xvb2t1cChoYXNodGFibGUtPmhhc2h0YWIsIGtleSk7Ci0JfQorCXJldHVybiBlbnRy eTsKK30KKworLyoKKyAqIEEgdmFyaWFudCBvZiBMb29rdXBUdXBsZUhhc2hFbnRyeSBmb3IgY2Fs bGVycyB0aGF0IGhhdmUgYWxyZWFkeSBjb21wdXRlZAorICogdGhlIGhhc2ggdmFsdWUuCisgKi8K K1R1cGxlSGFzaEVudHJ5CitMb29rdXBUdXBsZUhhc2hFbnRyeUhhc2goVHVwbGVIYXNoVGFibGUg aGFzaHRhYmxlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKKwkJCQkJCSBib29sICppc25ldywgdWlu dDMyIGhhc2gpCit7CisJVHVwbGVIYXNoRW50cnkJZW50cnk7CisJTWVtb3J5Q29udGV4dAlvbGRD b250ZXh0OworCisJLyogTmVlZCB0byBydW4gdGhlIGhhc2ggZnVuY3Rpb25zIGluIHNob3J0LWxp dmVkIGNvbnRleHQgKi8KKwlvbGRDb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGhhc2h0 YWJsZS0+dGVtcGN4dCk7CisKKwllbnRyeSA9IExvb2t1cFR1cGxlSGFzaEVudHJ5X2ludGVybmFs KGhhc2h0YWJsZSwgc2xvdCwgaXNuZXcsIGhhc2gpOwogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZENvbnRleHQpOwogCkBAIC0zODksNyArMzg2LDcgQEAgRmluZFR1cGxlSGFzaEVudHJ5KFR1 cGxlSGFzaFRhYmxlIGhhc2h0YWJsZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAgKiBBbHNvLCB0 aGUgY2FsbGVyIG11c3Qgc2VsZWN0IGFuIGFwcHJvcHJpYXRlIG1lbW9yeSBjb250ZXh0IGZvciBy dW5uaW5nCiAgKiB0aGUgaGFzaCBmdW5jdGlvbnMuIChkeW5haGFzaC5jIGRvZXNuJ3QgY2hhbmdl IEN1cnJlbnRNZW1vcnlDb250ZXh0LikKICAqLwotc3RhdGljIHVpbnQzMgordWludDMyCiBUdXBs ZUhhc2hUYWJsZUhhc2goc3RydWN0IHR1cGxlaGFzaF9oYXNoICp0YiwgY29uc3QgTWluaW1hbFR1 cGxlIHR1cGxlKQogewogCVR1cGxlSGFzaFRhYmxlIGhhc2h0YWJsZSA9IChUdXBsZUhhc2hUYWJs ZSkgdGItPnByaXZhdGVfZGF0YTsKQEAgLTQ1MCw2ICs0NDcsNTQgQEAgVHVwbGVIYXNoVGFibGVI YXNoKHN0cnVjdCB0dXBsZWhhc2hfaGFzaCAqdGIsIGNvbnN0IE1pbmltYWxUdXBsZSB0dXBsZSkK IAlyZXR1cm4gbXVybXVyaGFzaDMyKGhhc2hrZXkpOwogfQogCisvKgorICogRG9lcyB0aGUgd29y ayBvZiBMb29rdXBUdXBsZUhhc2hFbnRyeSBhbmQgTG9va3VwVHVwbGVIYXNoRW50cnlIYXNoLiBV c2VmdWwKKyAqIHNvIHRoYXQgd2UgY2FuIGF2b2lkIHN3aXRjaGluZyB0aGUgbWVtb3J5IGNvbnRl eHQgbXVsdGlwbGUgdGltZXMgZm9yCisgKiBMb29rdXBUdXBsZUhhc2hFbnRyeS4KKyAqLworc3Rh dGljIFR1cGxlSGFzaEVudHJ5CitMb29rdXBUdXBsZUhhc2hFbnRyeV9pbnRlcm5hbChUdXBsZUhh c2hUYWJsZSBoYXNodGFibGUsIFR1cGxlVGFibGVTbG90ICpzbG90LAorCQkJCQkJCSAgYm9vbCAq aXNuZXcsIHVpbnQzMiBoYXNoKQoreworCVR1cGxlSGFzaEVudHJ5RGF0YSAqZW50cnk7CisJYm9v bAkJZm91bmQ7CisJTWluaW1hbFR1cGxlIGtleTsKKworCS8qIHNldCB1cCBkYXRhIG5lZWRlZCBi eSBoYXNoIGFuZCBtYXRjaCBmdW5jdGlvbnMgKi8KKwloYXNodGFibGUtPmlucHV0c2xvdCA9IHNs b3Q7CisJaGFzaHRhYmxlLT5pbl9oYXNoX2Z1bmNzID0gaGFzaHRhYmxlLT50YWJfaGFzaF9mdW5j czsKKwloYXNodGFibGUtPmN1cl9lcV9mdW5jID0gaGFzaHRhYmxlLT50YWJfZXFfZnVuYzsKKwor CWtleSA9IE5VTEw7CQkJCQkvKiBmbGFnIHRvIHJlZmVyZW5jZSBpbnB1dHNsb3QgKi8KKworCWlm IChpc25ldykKKwl7CisJCWVudHJ5ID0gdHVwbGVoYXNoX2luc2VydF9oYXNoKGhhc2h0YWJsZS0+ aGFzaHRhYiwga2V5LCBoYXNoLCAmZm91bmQpOworCisJCWlmIChmb3VuZCkKKwkJeworCQkJLyog Zm91bmQgcHJlLWV4aXN0aW5nIGVudHJ5ICovCisJCQkqaXNuZXcgPSBmYWxzZTsKKwkJfQorCQll bHNlCisJCXsKKwkJCS8qIGNyZWF0ZWQgbmV3IGVudHJ5ICovCisJCQkqaXNuZXcgPSB0cnVlOwor CQkJLyogemVybyBjYWxsZXIgZGF0YSAqLworCQkJZW50cnktPmFkZGl0aW9uYWwgPSBOVUxMOwor CQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKGhhc2h0YWJsZS0+dGFibGVjeHQpOworCQkJLyogQ29w eSB0aGUgZmlyc3QgdHVwbGUgaW50byB0aGUgdGFibGUgY29udGV4dCAqLworCQkJZW50cnktPmZp cnN0VHVwbGUgPSBFeGVjQ29weVNsb3RNaW5pbWFsVHVwbGUoc2xvdCk7CisJCX0KKwl9CisJZWxz ZQorCXsKKwkJZW50cnkgPSB0dXBsZWhhc2hfbG9va3VwX2hhc2goaGFzaHRhYmxlLT5oYXNodGFi LCBrZXksIGhhc2gpOworCX0KKworCXJldHVybiBlbnRyeTsKK30KKwogLyoKICAqIFNlZSB3aGV0 aGVyIHR3byB0dXBsZXMgKHByZXN1bWFibHkgb2YgdGhlIHNhbWUgaGFzaCB2YWx1ZSkgbWF0Y2gK ICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggNmVmM2UxZmUwNjkuLjc2MjE1OTkyNjQ3 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTE0MCwxMCArMTQwLDE1IEBAIGV4dGVybiBU dXBsZUhhc2hUYWJsZSBCdWlsZFR1cGxlSGFzaFRhYmxlRXh0KFBsYW5TdGF0ZSAqcGFyZW50LAog ZXh0ZXJuIFR1cGxlSGFzaEVudHJ5IExvb2t1cFR1cGxlSGFzaEVudHJ5KFR1cGxlSGFzaFRhYmxl IGhhc2h0YWJsZSwKIAkJCQkJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkJ CQkgICBib29sICppc25ldyk7CitleHRlcm4gVHVwbGVIYXNoRW50cnkgTG9va3VwVHVwbGVIYXNo RW50cnlIYXNoKFR1cGxlSGFzaFRhYmxlIGhhc2h0YWJsZSwKKwkJCQkJCQkJCQkJICAgVHVwbGVU YWJsZVNsb3QgKnNsb3QsCisJCQkJCQkJCQkJCSAgIGJvb2wgKmlzbmV3LCB1aW50MzIgaGFzaCk7 CiBleHRlcm4gVHVwbGVIYXNoRW50cnkgRmluZFR1cGxlSGFzaEVudHJ5KFR1cGxlSGFzaFRhYmxl IGhhc2h0YWJsZSwKIAkJCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJCQkJ IEV4cHJTdGF0ZSAqZXFjb21wLAogCQkJCQkJCQkJCSBGbWdySW5mbyAqaGFzaGZ1bmN0aW9ucyk7 CitleHRlcm4gdWludDMyIFR1cGxlSGFzaFRhYmxlSGFzaChzdHJ1Y3QgdHVwbGVoYXNoX2hhc2gg KnRiLAorCQkJCQkJCQkgY29uc3QgTWluaW1hbFR1cGxlIHR1cGxlKTsKIGV4dGVybiB2b2lkIFJl c2V0VHVwbGVIYXNoVGFibGUoVHVwbGVIYXNoVGFibGUgaGFzaHRhYmxlKTsKIAogLyoKLS0gCjIu MTcuMQoK --=-n8ArYH8XbQtIA5IDvgyB Content-Disposition: attachment; filename*0=0002-HashAgg-make-hash_agg_entry_size-account-for-all-spa.pat; filename*1=ch Content-Type: text/x-patch; name="0002-HashAgg-make-hash_agg_entry_size-account-for-all-spa.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAyZGI5YWU0M2RiMTFmYjI4ZDZiODM5N2ExODU4Yzk5NmE4YTAwYjE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBN b24sIDMgRmViIDIwMjAgMTU6MTI6NDEgLTA4MDAKU3ViamVjdDogW1BBVENIIDIvMl0gSGFzaEFn ZzogbWFrZSBoYXNoX2FnZ19lbnRyeV9zaXplKCkgYWNjb3VudCBmb3IgYWxsCiBzcGFjZS4KClBy ZXZpb3VzbHksIGl0IG5lZ2xlY3RlZCB0byBhY2NvdW50IGZvciBwYXNzLWJ5LXJlZmVyZW5jZSB0 cmFuc2l0aW9uCmRhdGEgdmFsdWVzIGFuZCB0aGUgcmVwcmVzZW50YXRpdmUgdHVwbGUsIHJlcXVp cmluZyB0aGUgY2FsbGVyIHRvIGRvCnNvLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVB Z2cuYyAgICAgICB8IDIzICsrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9wbGFubmVyLmMgfCAgOSArKy0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9zZWxmdW5jcy5jICAgICB8IDEyICsrLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3Iv bm9kZUFnZy5oICAgICAgIHwgIDMgKystCiA0IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMo KyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwppbmRleCA5MDczMzk1ZWFj Zi4uYWMzOTA4YmExNDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTE0MjMsMjMgKzE0MjMs MTggQEAgZmluZF9oYXNoX2NvbHVtbnMoQWdnU3RhdGUgKmFnZ3N0YXRlKQogCiAvKgogICogRXN0 aW1hdGUgcGVyLWhhc2gtdGFibGUtZW50cnkgb3ZlcmhlYWQgZm9yIHRoZSBwbGFubmVyLgotICoK LSAqIE5vdGUgdGhhdCB0aGUgZXN0aW1hdGUgZG9lcyBub3QgaW5jbHVkZSBzcGFjZSBmb3IgcGFz cy1ieS1yZWZlcmVuY2UKLSAqIHRyYW5zaXRpb24gZGF0YSB2YWx1ZXMsIG5vciBmb3IgdGhlIHJl cHJlc2VudGF0aXZlIHR1cGxlIG9mIGVhY2ggZ3JvdXAuCi0gKiBOb3IgZG9lcyB0aGlzIGFjY291 bnQgb2YgdGhlIHRhcmdldCBmaWxsLWZhY3RvciBhbmQgZ3Jvd3RoIHBvbGljeSBvZiB0aGUKLSAq IGhhc2ggdGFibGUuCiAgKi8KIFNpemUKLWhhc2hfYWdnX2VudHJ5X3NpemUoaW50IG51bUFnZ3Mp CitoYXNoX2FnZ19lbnRyeV9zaXplKGludCBudW1BZ2dzLCBTaXplIHR1cGxlV2lkdGgsIFNpemUg dHJhbnNpdGlvblNwYWNlKQogewotCVNpemUJCWVudHJ5c2l6ZTsKLQotCS8qIFRoaXMgbXVzdCBt YXRjaCBidWlsZF9oYXNoX3RhYmxlICovCi0JZW50cnlzaXplID0gc2l6ZW9mKFR1cGxlSGFzaEVu dHJ5RGF0YSkgKwotCQludW1BZ2dzICogc2l6ZW9mKEFnZ1N0YXRlUGVyR3JvdXBEYXRhKTsKLQll bnRyeXNpemUgPSBNQVhBTElHTihlbnRyeXNpemUpOwotCi0JcmV0dXJuIGVudHJ5c2l6ZTsKKwly ZXR1cm4KKwkJLyoga2V5ICovCisJCU1BWEFMSUdOKFNpemVvZk1pbmltYWxUdXBsZUhlYWRlcikg KworCQlNQVhBTElHTih0dXBsZVdpZHRoKSArCisJCS8qIGRhdGEgKi8KKwkJTUFYQUxJR04oc2l6 ZW9mKFR1cGxlSGFzaEVudHJ5RGF0YSkgKworCQkJCSBudW1BZ2dzICogc2l6ZW9mKEFnZ1N0YXRl UGVyR3JvdXBEYXRhKSkgKworCQl0cmFuc2l0aW9uU3BhY2U7CiB9CiAKIC8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggZDZmMjE1MzU5MzcuLmI0NGVmZDYzMTRjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC00ODY3LDEzICs0ODY3LDggQEAgY3Jl YXRlX2Rpc3RpbmN0X3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCQlhbGxvd19oYXNoID0gZmFs c2U7CQkvKiBwb2xpY3ktYmFzZWQgZGVjaXNpb24gbm90IHRvIGhhc2ggKi8KIAllbHNlCiAJewot CQlTaXplCQloYXNoZW50cnlzaXplOwotCi0JCS8qIEVzdGltYXRlIHBlci1oYXNoLWVudHJ5IHNw YWNlIGF0IHR1cGxlIHdpZHRoLi4uICovCi0JCWhhc2hlbnRyeXNpemUgPSBNQVhBTElHTihjaGVh cGVzdF9pbnB1dF9wYXRoLT5wYXRodGFyZ2V0LT53aWR0aCkgKwotCQkJTUFYQUxJR04oU2l6ZW9m TWluaW1hbFR1cGxlSGVhZGVyKTsKLQkJLyogcGx1cyB0aGUgcGVyLWhhc2gtZW50cnkgb3Zlcmhl YWQgKi8KLQkJaGFzaGVudHJ5c2l6ZSArPSBoYXNoX2FnZ19lbnRyeV9zaXplKDApOworCQlTaXpl CQloYXNoZW50cnlzaXplID0gaGFzaF9hZ2dfZW50cnlfc2l6ZSgKKwkJCTAsIGNoZWFwZXN0X2lu cHV0X3BhdGgtPnBhdGh0YXJnZXQtPndpZHRoLCAwKTsKIAogCQkvKiBBbGxvdyBoYXNoaW5nIG9u bHkgaWYgaGFzaHRhYmxlIGlzIHByZWRpY3RlZCB0byBmaXQgaW4gd29ya19tZW0gKi8KIAkJYWxs b3dfaGFzaCA9IChoYXNoZW50cnlzaXplICogbnVtRGlzdGluY3RSb3dzIDw9IHdvcmtfbWVtICog MTAyNEwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYwppbmRleCA3YzZmMDU3NGIzNy4uMGJlMjZm ZTAzNzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCkBAIC0zNTI2LDE2ICszNTI2LDggQEAg ZG91YmxlCiBlc3RpbWF0ZV9oYXNoYWdnX3RhYmxlc2l6ZShQYXRoICpwYXRoLCBjb25zdCBBZ2dD bGF1c2VDb3N0cyAqYWdnX2Nvc3RzLAogCQkJCQkJICAgZG91YmxlIGROdW1Hcm91cHMpCiB7Ci0J U2l6ZQkJaGFzaGVudHJ5c2l6ZTsKLQotCS8qIEVzdGltYXRlIHBlci1oYXNoLWVudHJ5IHNwYWNl IGF0IHR1cGxlIHdpZHRoLi4uICovCi0JaGFzaGVudHJ5c2l6ZSA9IE1BWEFMSUdOKHBhdGgtPnBh dGh0YXJnZXQtPndpZHRoKSArCi0JCU1BWEFMSUdOKFNpemVvZk1pbmltYWxUdXBsZUhlYWRlcik7 Ci0KLQkvKiBwbHVzIHNwYWNlIGZvciBwYXNzLWJ5LXJlZiB0cmFuc2l0aW9uIHZhbHVlcy4uLiAq LwotCWhhc2hlbnRyeXNpemUgKz0gYWdnX2Nvc3RzLT50cmFuc2l0aW9uU3BhY2U7Ci0JLyogcGx1 cyB0aGUgcGVyLWhhc2gtZW50cnkgb3ZlcmhlYWQgKi8KLQloYXNoZW50cnlzaXplICs9IGhhc2hf YWdnX2VudHJ5X3NpemUoYWdnX2Nvc3RzLT5udW1BZ2dzKTsKKwlTaXplCQloYXNoZW50cnlzaXpl ID0gaGFzaF9hZ2dfZW50cnlfc2l6ZSgKKwkJYWdnX2Nvc3RzLT5udW1BZ2dzLCBwYXRoLT5wYXRo dGFyZ2V0LT53aWR0aCwgYWdnX2Nvc3RzLT50cmFuc2l0aW9uU3BhY2UpOwogCiAJLyoKIAkgKiBO b3RlIHRoYXQgdGhpcyBkaXNyZWdhcmRzIHRoZSBlZmZlY3Qgb2YgZmlsbC1mYWN0b3IgYW5kIGdy b3d0aCBwb2xpY3kKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVBZ2cuaCBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVBZ2cuaAppbmRleCAyZmU4MmRhNmZmNy4uMjY0OTE2 ZjlhOTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVBZ2cuaAorKysgYi9z cmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQWdnLmgKQEAgLTMwOSw2ICszMDksNyBAQCBleHRlcm4g QWdnU3RhdGUgKkV4ZWNJbml0QWdnKEFnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpOwogZXh0ZXJuIHZvaWQgRXhlY0VuZEFnZyhBZ2dTdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9p ZCBFeGVjUmVTY2FuQWdnKEFnZ1N0YXRlICpub2RlKTsKIAotZXh0ZXJuIFNpemUgaGFzaF9hZ2df ZW50cnlfc2l6ZShpbnQgbnVtQWdncyk7CitleHRlcm4gU2l6ZSBoYXNoX2FnZ19lbnRyeV9zaXpl KGludCBudW1BZ2dzLCBTaXplIHR1cGxlV2lkdGgsCisJCQkJCQkJCVNpemUgdHJhbnNpdGlvblNw YWNlKTsKIAogI2VuZGlmCQkJCQkJCS8qIE5PREVBR0dfSCAqLwotLSAKMi4xNy4xCgo= --=-n8ArYH8XbQtIA5IDvgyB Content-Disposition: attachment; filename*0=0003-HashAgg-save-calculated-transitionSpace-in-Agg-node.patc; filename*1=h Content-Type: text/x-patch; name="0003-HashAgg-save-calculated-transitionSpace-in-Agg-node.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBiNjllNmZiY2I4YTkyZDBhZjRkOWJhMmYyNGNmYjdkMDdkZmRmZjlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBN b24sIDMgRmViIDIwMjAgMTU6MTg6NTIgLTA4MDAKU3ViamVjdDogW1BBVENIIDMvM10gSGFzaEFn Zzogc2F2ZSBjYWxjdWxhdGVkIHRyYW5zaXRpb25TcGFjZSBpbiBBZ2cgbm9kZS4KClRoaXMgaXMg dXNlZnVsIHRvIGltcHJvdmUgZXN0aW1hdGVzIG9mIGhvdyBtYW55IGdyb3VwcyBjYW4gZml0IGlu IHRoZQpoYXNoIHRhYmxlIHdpdGhvdXQgZXhjZWVkaW5nIHdvcmtfbWVtLgotLS0KIHNyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyB8IDkgKysrKysrKy0tCiBzcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jICAgfCAyICsrCiBzcmMvaW5jbHVkZS9ub2Rlcy9w YXRobm9kZXMuaCAgICAgICAgICAgfCAyICsrCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMu aCAgICAgICAgICAgfCAxICsKIHNyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oICAgICAg ICB8IDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4u YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCBlMDQ4ZDIw MGJiNC4uMDkwOTE5ZTM5YTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L2NyZWF0ZXBsYW4uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMKQEAgLTE2NDQsNiArMTY0NCw3IEBAIGNyZWF0ZV91bmlxdWVfcGxhbihQbGFubmVySW5mbyAq cm9vdCwgVW5pcXVlUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJCQkJCQkJCSBOSUwsCiAJ CQkJCQkJCSBOSUwsCiAJCQkJCQkJCSBiZXN0X3BhdGgtPnBhdGgucm93cywKKwkJCQkJCQkJIDAs CiAJCQkJCQkJCSBzdWJwbGFuKTsKIAl9CiAJZWxzZQpAQCAtMjA5Niw2ICsyMDk3LDcgQEAgY3Jl YXRlX2FnZ19wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBZ2dQYXRoICpiZXN0X3BhdGgpCiAJCQkJ CU5JTCwKIAkJCQkJTklMLAogCQkJCQliZXN0X3BhdGgtPm51bUdyb3VwcywKKwkJCQkJYmVzdF9w YXRoLT50cmFuc2l0aW9uU3BhY2UsCiAJCQkJCXN1YnBsYW4pOwogCiAJY29weV9nZW5lcmljX3Bh dGhfaW5mbygmcGxhbi0+cGxhbiwgKFBhdGggKikgYmVzdF9wYXRoKTsKQEAgLTIyNTcsNiArMjI1 OSw3IEBAIGNyZWF0ZV9ncm91cGluZ3NldHNfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgR3JvdXBp bmdTZXRzUGF0aCAqYmVzdF9wYXRoKQogCQkJCQkJCQkJCSByb2xsdXAtPmdzZXRzLAogCQkJCQkJ CQkJCSBOSUwsCiAJCQkJCQkJCQkJIHJvbGx1cC0+bnVtR3JvdXBzLAorCQkJCQkJCQkJCSBiZXN0 X3BhdGgtPnRyYW5zaXRpb25TcGFjZSwKIAkJCQkJCQkJCQkgc29ydF9wbGFuKTsKIAogCQkJLyoK QEAgLTIyOTUsNiArMjI5OCw3IEBAIGNyZWF0ZV9ncm91cGluZ3NldHNfcGxhbihQbGFubmVySW5m byAqcm9vdCwgR3JvdXBpbmdTZXRzUGF0aCAqYmVzdF9wYXRoKQogCQkJCQkJcm9sbHVwLT5nc2V0 cywKIAkJCQkJCWNoYWluLAogCQkJCQkJcm9sbHVwLT5udW1Hcm91cHMsCisJCQkJCQliZXN0X3Bh dGgtPnRyYW5zaXRpb25TcGFjZSwKIAkJCQkJCXN1YnBsYW4pOwogCiAJCS8qIENvcHkgY29zdCBk YXRhIGZyb20gUGF0aCB0byBQbGFuICovCkBAIC02MTkyLDggKzYxOTYsOCBAQCBBZ2cgKgogbWFr ZV9hZ2coTGlzdCAqdGxpc3QsIExpc3QgKnF1YWwsCiAJCSBBZ2dTdHJhdGVneSBhZ2dzdHJhdGVn eSwgQWdnU3BsaXQgYWdnc3BsaXQsCiAJCSBpbnQgbnVtR3JvdXBDb2xzLCBBdHRyTnVtYmVyICpn cnBDb2xJZHgsIE9pZCAqZ3JwT3BlcmF0b3JzLCBPaWQgKmdycENvbGxhdGlvbnMsCi0JCSBMaXN0 ICpncm91cGluZ1NldHMsIExpc3QgKmNoYWluLAotCQkgZG91YmxlIGROdW1Hcm91cHMsIFBsYW4g KmxlZnR0cmVlKQorCQkgTGlzdCAqZ3JvdXBpbmdTZXRzLCBMaXN0ICpjaGFpbiwgZG91YmxlIGRO dW1Hcm91cHMsCisJCSBpbnQzMiB0cmFuc2l0aW9uU3BhY2UsIFBsYW4gKmxlZnR0cmVlKQogewog CUFnZwkJICAgKm5vZGUgPSBtYWtlTm9kZShBZ2cpOwogCVBsYW4JICAgKnBsYW4gPSAmbm9kZS0+ cGxhbjsKQEAgLTYyMDksNiArNjIxMyw3IEBAIG1ha2VfYWdnKExpc3QgKnRsaXN0LCBMaXN0ICpx dWFsLAogCW5vZGUtPmdycE9wZXJhdG9ycyA9IGdycE9wZXJhdG9yczsKIAlub2RlLT5ncnBDb2xs YXRpb25zID0gZ3JwQ29sbGF0aW9uczsKIAlub2RlLT5udW1Hcm91cHMgPSBudW1Hcm91cHM7CisJ bm9kZS0+dHJhbnNpdGlvblNwYWNlID0gdHJhbnNpdGlvblNwYWNlOwogCW5vZGUtPmFnZ1BhcmFt cyA9IE5VTEw7CQkvKiBTU19maW5hbGl6ZV9wbGFuKCkgd2lsbCBmaWxsIHRoaXMgKi8KIAlub2Rl LT5ncm91cGluZ1NldHMgPSBncm91cGluZ1NldHM7CiAJbm9kZS0+Y2hhaW4gPSBjaGFpbjsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCmluZGV4IGU2ZDA4YWVkZTU2Li5kOWNlNTE2 MjExNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCkBAIC0yOTQ5LDYgKzI5 NDksNyBAQCBjcmVhdGVfYWdnX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsCiAJcGF0aG5vZGUtPmFn Z3N0cmF0ZWd5ID0gYWdnc3RyYXRlZ3k7CiAJcGF0aG5vZGUtPmFnZ3NwbGl0ID0gYWdnc3BsaXQ7 CiAJcGF0aG5vZGUtPm51bUdyb3VwcyA9IG51bUdyb3VwczsKKwlwYXRobm9kZS0+dHJhbnNpdGlv blNwYWNlID0gYWdnY29zdHMgPyBhZ2djb3N0cy0+dHJhbnNpdGlvblNwYWNlIDogMDsKIAlwYXRo bm9kZS0+Z3JvdXBDbGF1c2UgPSBncm91cENsYXVzZTsKIAlwYXRobm9kZS0+cXVhbCA9IHF1YWw7 CiAKQEAgLTMwMzYsNiArMzAzNyw3IEBAIGNyZWF0ZV9ncm91cGluZ3NldHNfcGF0aChQbGFubmVy SW5mbyAqcm9vdCwKIAlwYXRobm9kZS0+YWdnc3RyYXRlZ3kgPSBhZ2dzdHJhdGVneTsKIAlwYXRo bm9kZS0+cm9sbHVwcyA9IHJvbGx1cHM7CiAJcGF0aG5vZGUtPnF1YWwgPSBoYXZpbmdfcXVhbDsK KwlwYXRobm9kZS0+dHJhbnNpdGlvblNwYWNlID0gYWdnX2Nvc3RzID8gYWdnX2Nvc3RzLT50cmFu c2l0aW9uU3BhY2UgOiAwOwogCiAJQXNzZXJ0KHJvbGx1cHMgIT0gTklMKTsKIAlBc3NlcnQoYWdn c3RyYXRlZ3kgIT0gQUdHX1BMQUlOIHx8IGxpc3RfbGVuZ3RoKHJvbGx1cHMpID09IDEpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaAppbmRleCAzZDNiZTE5N2UwZS4uYmU1OTJkMGZlZTQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3Bh dGhub2Rlcy5oCkBAIC0xNjYzLDYgKzE2NjMsNyBAQCB0eXBlZGVmIHN0cnVjdCBBZ2dQYXRoCiAJ QWdnU3RyYXRlZ3kgYWdnc3RyYXRlZ3k7CS8qIGJhc2ljIHN0cmF0ZWd5LCBzZWUgbm9kZXMuaCAq LwogCUFnZ1NwbGl0CWFnZ3NwbGl0OwkJLyogYWdnLXNwbGl0dGluZyBtb2RlLCBzZWUgbm9kZXMu aCAqLwogCWRvdWJsZQkJbnVtR3JvdXBzOwkJLyogZXN0aW1hdGVkIG51bWJlciBvZiBncm91cHMg aW4gaW5wdXQgKi8KKwlpbnQzMgkJdHJhbnNpdGlvblNwYWNlOwkvKiBlc3RpbWF0ZWQgdHJhbnNp dGlvbiBzdGF0ZSBzaXplICovCiAJTGlzdAkgICAqZ3JvdXBDbGF1c2U7CS8qIGEgbGlzdCBvZiBT b3J0R3JvdXBDbGF1c2UncyAqLwogCUxpc3QJICAgKnF1YWw7CQkJLyogcXVhbHMgKEhBVklORyBx dWFscyksIGlmIGFueSAqLwogfSBBZ2dQYXRoOwpAQCAtMTcwMCw2ICsxNzAxLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgR3JvdXBpbmdTZXRzUGF0aAogCUFnZ1N0cmF0ZWd5IGFnZ3N0cmF0ZWd5OwkvKiBi YXNpYyBzdHJhdGVneSAqLwogCUxpc3QJICAgKnJvbGx1cHM7CQkvKiBsaXN0IG9mIFJvbGx1cERh dGEgKi8KIAlMaXN0CSAgICpxdWFsOwkJCS8qIHF1YWxzIChIQVZJTkcgcXVhbHMpLCBpZiBhbnkg Ki8KKwlpbnQzMgkJdHJhbnNpdGlvblNwYWNlOwkvKiBlc3RpbWF0ZWQgdHJhbnNpdGlvbiBzdGF0 ZSBzaXplICovCiB9IEdyb3VwaW5nU2V0c1BhdGg7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmlu ZGV4IDMyYzBkODdmODBlLi5mNDE4M2UxZWZhNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTgx Myw2ICs4MTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBBZ2cKIAlPaWQJCSAgICpncnBPcGVyYXRvcnM7 CS8qIGVxdWFsaXR5IG9wZXJhdG9ycyB0byBjb21wYXJlIHdpdGggKi8KIAlPaWQJCSAgICpncnBD b2xsYXRpb25zOwogCWxvbmcJCW51bUdyb3VwczsJCS8qIGVzdGltYXRlZCBudW1iZXIgb2YgZ3Jv dXBzIGluIGlucHV0ICovCisJaW50MzIJCXRyYW5zaXRpb25TcGFjZTsJLyogZXN0aW1hdGVkIHRy YW5zaXRpb24gc3RhdGUgc2l6ZSAqLwogCUJpdG1hcHNldCAgKmFnZ1BhcmFtczsJCS8qIElEcyBv ZiBQYXJhbXMgdXNlZCBpbiBBZ2dyZWYgaW5wdXRzICovCiAJLyogTm90ZTogcGxhbm5lciBwcm92 aWRlcyBudW1Hcm91cHMgJiBhZ2dQYXJhbXMgb25seSBpbiBIQVNIRUQvTUlYRUQgY2FzZSAqLwog CUxpc3QJICAgKmdyb3VwaW5nU2V0czsJLyogZ3JvdXBpbmcgc2V0cyB0byB1c2UgKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5oIGIvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL3BsYW5tYWluLmgKaW5kZXggZWFiNDg2YTYyMTQuLmM3YmRhMmIwOTE3IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaAorKysgYi9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvcGxhbm1haW4uaApAQCAtNTQsOCArNTQsOCBAQCBleHRlcm4gU29ydCAqbWFrZV9z b3J0X2Zyb21fc29ydGNsYXVzZXMoTGlzdCAqc29ydGNscywgUGxhbiAqbGVmdHRyZWUpOwogZXh0 ZXJuIEFnZyAqbWFrZV9hZ2coTGlzdCAqdGxpc3QsIExpc3QgKnF1YWwsCiAJCQkJCSBBZ2dTdHJh dGVneSBhZ2dzdHJhdGVneSwgQWdnU3BsaXQgYWdnc3BsaXQsCiAJCQkJCSBpbnQgbnVtR3JvdXBD b2xzLCBBdHRyTnVtYmVyICpncnBDb2xJZHgsIE9pZCAqZ3JwT3BlcmF0b3JzLCBPaWQgKmdycENv bGxhdGlvbnMsCi0JCQkJCSBMaXN0ICpncm91cGluZ1NldHMsIExpc3QgKmNoYWluLAotCQkJCQkg ZG91YmxlIGROdW1Hcm91cHMsIFBsYW4gKmxlZnR0cmVlKTsKKwkJCQkJIExpc3QgKmdyb3VwaW5n U2V0cywgTGlzdCAqY2hhaW4sIGRvdWJsZSBkTnVtR3JvdXBzLAorCQkJCQkgaW50MzIgdHJhbnNp dGlvblNwYWNlLCBQbGFuICpsZWZ0dHJlZSk7CiBleHRlcm4gTGltaXQgKm1ha2VfbGltaXQoUGxh biAqbGVmdHRyZWUsIE5vZGUgKmxpbWl0T2Zmc2V0LCBOb2RlICpsaW1pdENvdW50KTsKIAogLyoK LS0gCjIuMTcuMQoK --=-n8ArYH8XbQtIA5IDvgyB--