Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mmbcY-000705-7f for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Nov 2021 13:02:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mmbcW-00015R-Vm for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Nov 2021 13:02:00 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mmbcW-00014a-6r for pgsql-hackers@lists.postgresql.org; Mon, 15 Nov 2021 13:02:00 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mmbcQ-0002Dz-83 for pgsql-hackers@postgresql.org; Mon, 15 Nov 2021 13:01:59 +0000 Received: from mail.postgrespro.ru (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 0999F21C373F; Mon, 15 Nov 2021 16:01:52 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1636981312; bh=zF6sd5xtvcUf2HWX1PlzSzWv7spFUWvnXrIrecgejAI=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=YobeIOj0Ssu7FKE+8oNKIZ7sONuLWzKlJTACjw3JpDUnery2Vl3SoYP85nA6ue1C8 TpEwPT/bvWxRV31z6kTHz1t7L19MIK5pYPRtv1v1P9v7cQthmeLKiad9kgjVMQBePj 0PYBlA6FfF005bcsGQr24bAgxch16Ubrqc+rPjT8= MIME-Version: 1.0 Date: Mon, 15 Nov 2021 16:01:51 +0300 From: Alexander Pyhalov To: Daniel Gustafsson Cc: Ilya Gladyshev , pgsql-hackers@postgresql.org Subject: Re: Partial aggregates pushdown In-Reply-To: References: <2486a6db3f068efb97c1277c23402e0d@postgrespro.ru> <504e576d-984f-d73c-2694-8ee9624f8def@enterprisedb.com> <07fa4d5a56f402732acfce25e7207cae@postgrespro.ru> <0fbeb9d7-0a8f-8e2c-0687-2d4c32c66a9c@postgrespro.ru> <05d98f67a4f44b31d90dfb977db4ad71@postgrespro.ru> <317f8de58ce9889e056f2944e200a44d@postgrespro.ru> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <2ed9ad03bc17cfb86da900d541a270b0@postgrespro.ru> X-Sender: a.pyhalov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_2715c710af1ee47a7e10b1765691c08d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_2715c710af1ee47a7e10b1765691c08d Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Daniel Gustafsson писал 2021-11-15 13:16: >> On 3 Nov 2021, at 15:50, Alexander Pyhalov >> wrote: >> >> Daniel Gustafsson писал 2021-11-03 16:45: >>>> On 2 Nov 2021, at 10:12, Alexander Pyhalov >>>> wrote: >>>> Updated and rebased patch. >>> + state = (Int128AggState *) palloc0(sizeof(Int128AggState)); >>> + state->calcSumX2 = false; >>> + >>> + if (!PG_ARGISNULL(0)) >>> + { >>> +#ifdef HAVE_INT128 >>> + do_int128_accum(state, (int128) PG_GETARG_INT64(0)); >>> +#else >>> + do_numeric_accum(state, int64_to_numeric(PG_GETARG_INT64(0))); >>> +#endif >>> This fails on non-INT128 platforms as state cannot be cast to >>> Int128AggState >>> outside of HAVE_INT128; it's not defined there. This needs to be a >>> PolyNumAggState no? >> >> Hi. >> Thank you for noticing this. It's indeed fails with >> pgac_cv__128bit_int=no. >> Updated patch. > > The updated patch also fails to apply now, but on the catversion.h > bump. To > avoid having to rebase for that I recommend to skip that part in the > patch and > just mention the need in the thread, any committer picking this up for > commit > will know to bump the catversion so there is no use in risking > unneccesary > conflicts. I've updated patch - removed catversion dump. -- Best regards, Alexander Pyhalov, Postgres Professional --=_2715c710af1ee47a7e10b1765691c08d Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Partial-aggregates-push-down-v07.patch Content-Disposition: attachment; filename=0001-Partial-aggregates-push-down-v07.patch; size=59052 RnJvbSAyYWYxNmU2NjI3NjkzOGI4NjFjZjdhOGRiMmZlZjk2N2Y1NGI4MDBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBUaHUsIDE0IE9jdCAyMDIxIDE3OjMwOjM0ICswMzAwClN1YmplY3Q6IFtQ QVRDSF0gUGFydGlhbCBhZ2dyZWdhdGVzIHB1c2ggZG93bgoKLS0tCiBjb250cmliL3Bvc3RncmVz X2Zkdy9kZXBhcnNlLmMgICAgICAgICAgICAgICAgfCAgNTcgKysrKy0KIC4uLi9wb3N0Z3Jlc19m ZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8IDE4NSArKysrKysrKysrKysrKysrLQog Y29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgICAgICAgICAgIHwgMTk2ICsrKysr KysrKysrKysrKysrLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwg ICAgIHwgIDI3ICsrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuYyAgICAgICAg ICAgIHwgIDI4ICsrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYWdncmVnYXRlY21kcy5jICAgICAg ICAgIHwgIDIzICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jICAgICAgICAgICAg ICAgfCAgOTYgKysrKysrKysrCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAg ICAgICAgICAgfCAgMjEgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYWdncmVnYXRlLmRhdCAg ICAgICAgICB8IDEwNiArKysrKy0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0 ZS5oICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQg ICAgICAgICAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5z Lm91dCAgICAgICAgfCAgIDEgKwogMTIgZmlsZXMgY2hhbmdlZCwgNjczIGluc2VydGlvbnMoKyks IDgzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFy c2UuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2UuYwppbmRleCBiMjc2ODlkMDg2NC4u YTUxNWM1NjYyYmIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2UuYwor KysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9kZXBhcnNlLmMKQEAgLTE5Nyw2ICsxOTcsNyBAQCBz dGF0aWMgYm9vbCBpc19zdWJxdWVyeV92YXIoVmFyICpub2RlLCBSZWxPcHRJbmZvICpmb3JlaWdu cmVsLAogc3RhdGljIHZvaWQgZ2V0X3JlbGF0aW9uX2NvbHVtbl9hbGlhc19pZHMoVmFyICpub2Rl LCBSZWxPcHRJbmZvICpmb3JlaWducmVsLAogCQkJCQkJCQkJCSAgaW50ICpyZWxubywgaW50ICpj b2xubyk7CiAKK3N0YXRpYyBib29sIHBhcnRpYWxfYWdnX29rKEFnZ3JlZiAqYWdnKTsKIAogLyoK ICAqIEV4YW1pbmUgZWFjaCBxdWFsIGNsYXVzZSBpbiBpbnB1dF9jb25kcywgYW5kIGNsYXNzaWZ5 IHRoZW0gaW50byB0d28gZ3JvdXBzLApAQCAtODMyLDggKzgzMywxMCBAQCBmb3JlaWduX2V4cHJf d2Fsa2VyKE5vZGUgKm5vZGUsCiAJCQkJaWYgKCFJU19VUFBFUl9SRUwoZ2xvYl9jeHQtPmZvcmVp Z25yZWwpKQogCQkJCQlyZXR1cm4gZmFsc2U7CiAKLQkJCQkvKiBPbmx5IG5vbi1zcGxpdCBhZ2dy ZWdhdGVzIGFyZSBwdXNoYWJsZS4gKi8KLQkJCQlpZiAoYWdnLT5hZ2dzcGxpdCAhPSBBR0dTUExJ VF9TSU1QTEUpCisJCQkJaWYgKChhZ2ctPmFnZ3NwbGl0ICE9IEFHR1NQTElUX1NJTVBMRSkgJiYg KGFnZy0+YWdnc3BsaXQgIT0gQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwpKQorCQkJCQlyZXR1cm4g ZmFsc2U7CisKKwkJCQlpZiAoYWdnLT5hZ2dzcGxpdCA9PSBBR0dTUExJVF9JTklUSUFMX1NFUklB TCAmJiAhcGFydGlhbF9hZ2dfb2soYWdnKSkKIAkJCQkJcmV0dXJuIGZhbHNlOwogCiAJCQkJLyog QXMgdXN1YWwsIGl0IG11c3QgYmUgc2hpcHBhYmxlLiAqLwpAQCAtMzM0OSw3ICszMzUyLDcgQEAg ZGVwYXJzZUFnZ3JlZihBZ2dyZWYgKm5vZGUsIGRlcGFyc2VfZXhwcl9jeHQgKmNvbnRleHQpCiAJ Ym9vbAkJdXNlX3ZhcmlhZGljOwogCiAJLyogT25seSBiYXNpYywgbm9uLXNwbGl0IGFnZ3JlZ2F0 aW9uIGFjY2VwdGVkLiAqLwotCUFzc2VydChub2RlLT5hZ2dzcGxpdCA9PSBBR0dTUExJVF9TSU1Q TEUpOworCUFzc2VydChub2RlLT5hZ2dzcGxpdCA9PSBBR0dTUExJVF9TSU1QTEUgfHwgbm9kZS0+ YWdnc3BsaXQgPT0gQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwpOwogCiAJLyogQ2hlY2sgaWYgbmVl ZCB0byBwcmludCBWQVJJQURJQyAoY2YuIHJ1bGV1dGlscy5jKSAqLwogCXVzZV92YXJpYWRpYyA9 IG5vZGUtPmFnZ3ZhcmlhZGljOwpAQCAtMzgxOSwzICszODIyLDUxIEBAIGdldF9yZWxhdGlvbl9j b2x1bW5fYWxpYXNfaWRzKFZhciAqbm9kZSwgUmVsT3B0SW5mbyAqZm9yZWlnbnJlbCwKIAkvKiBT aG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBleHByZXNzaW9u IGluIHN1YnF1ZXJ5IG91dHB1dCIpOwogfQorCisvKgorICogQ2hlY2sgdGhhdCBwYXJ0aWFsIGFn Z3JlZ2F0ZSBhZ2cgaXMgZmluZSB0byBwdXNoIGRvd24KKyAqLworc3RhdGljIGJvb2wKK3BhcnRp YWxfYWdnX29rKEFnZ3JlZiAqYWdnKQoreworCUhlYXBUdXBsZQlhZ2d0dXA7CisJRm9ybV9wZ19h Z2dyZWdhdGUgYWdnZm9ybTsKKworCUFzc2VydChhZ2ctPmFnZ3NwbGl0ID09IEFHR1NQTElUX0lO SVRJQUxfU0VSSUFMKTsKKworCS8qIFdlIGRvbid0IHN1cHBvcnQgY29tcGxleCBwYXJ0aWFsIGFn Z3JlZ2F0ZXMgKi8KKwlpZiAoYWdnLT5hZ2dkaXN0aW5jdCB8fCBhZ2ctPmFnZ3ZhcmlhZGljIHx8 IGFnZy0+YWdna2luZCAhPSBBR0dLSU5EX05PUk1BTCB8fCBhZ2ctPmFnZ29yZGVyICE9IE5JTCkK KwkJcmV0dXJuIGZhbHNlOworCisJYWdndHVwID0gU2VhcmNoU3lzQ2FjaGUxKEFHR0ZOT0lELCBP YmplY3RJZEdldERhdHVtKGFnZy0+YWdnZm5vaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo YWdndHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1bmN0aW9u ICV1IiwgYWdnLT5hZ2dmbm9pZCk7CisJYWdnZm9ybSA9IChGb3JtX3BnX2FnZ3JlZ2F0ZSkgR0VU U1RSVUNUKGFnZ3R1cCk7CisKKwkvKiBPbmx5IGFnZ3JlZ2F0ZXMsIG1hcmtlZCBhcyBwdXNoZG93 biBzYWZlLCBhcmUgYWxsb3dlZCAqLworCWlmICghYWdnZm9ybS0+YWdncGFydGlhbHB1c2hkb3du c2FmZSkKKwl7CisJCVJlbGVhc2VTeXNDYWNoZShhZ2d0dXApOworCQlyZXR1cm4gZmFsc2U7CisJ fQorCisJLyoKKwkgKiBJZiBhbiBhZ2dyZWdhdGUgcmVxdWlyZXMgc2VyaWFsaXphdGlvbi9kZXNl cmlhbGl6YXRpb24sIHBhcnRpYWwKKwkgKiBjb252ZXJ0ZXIgc2hvdWxkIGJlIGRlZmluZWQKKwkg Ki8KKwlpZiAoYWdnLT5hZ2d0cmFuc3R5cGUgPT0gSU5URVJOQUxPSUQgJiYgYWdnZm9ybS0+YWdn cGFydGlhbGNvbnZlcnRlcmZuID09IEludmFsaWRPaWQpCisJeworCQlSZWxlYXNlU3lzQ2FjaGUo YWdndHVwKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIEluIHRoaXMgY2FzZSB3ZSBjdXJy ZW50bHkgZG9uJ3QgdXNlIGNvbnZlcnRlciAqLworCWlmIChhZ2ctPmFnZ3RyYW5zdHlwZSAhPSBJ TlRFUk5BTE9JRCAmJiBnZXRfZnVuY19yZXR0eXBlKGFnZy0+YWdnZm5vaWQpICE9IGFnZy0+YWdn dHJhbnN0eXBlKQorCXsKKwkJUmVsZWFzZVN5c0NhY2hlKGFnZ3R1cCk7CisJCXJldHVybiBmYWxz ZTsKKwl9CisKKwlSZWxlYXNlU3lzQ2FjaGUoYWdndHVwKTsKKwlyZXR1cm4gdHJ1ZTsKK30KZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQg Yi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4IDNj ZWUwYThjMTJiLi42ZmZhZjE1OGMwNiAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcv ZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBl Y3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC05MzI2LDEzICs5MzI2LDEzIEBAIFJFU0VUIGVuYWJs ZV9wYXJ0aXRpb253aXNlX2pvaW47CiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSB0ZXN0IHBhcnRpdGlvbndp c2UgYWdncmVnYXRlcwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiIChhIGlu dCwgYiBpbnQsIGMgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOworQ1JFQVRFIFRBQkxFIHBh Z2dfdGFiIChhIGludCwgYiBpbnQsIGMgdGV4dCwgZCBudW1lcmljKSBQQVJUSVRJT04gQlkgUkFO R0UoYSk7CiBDUkVBVEUgVEFCTEUgcGFnZ190YWJfcDEgKExJS0UgcGFnZ190YWIpOwogQ1JFQVRF IFRBQkxFIHBhZ2dfdGFiX3AyIChMSUtFIHBhZ2dfdGFiKTsKIENSRUFURSBUQUJMRSBwYWdnX3Rh Yl9wMyAoTElLRSBwYWdnX3RhYik7Ci1JTlNFUlQgSU5UTyBwYWdnX3RhYl9wMSBTRUxFQ1QgaSAl IDMwLCBpICUgNTAsIHRvX2NoYXIoaS8zMCwgJ0ZNMDAwMCcpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDMwMDApIGkgV0hFUkUgKGkgJSAzMCkgPCAxMDsKLUlOU0VSVCBJTlRPIHBhZ2dfdGFiX3Ay IFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJykgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVSRSAoaSAlIDMwKSA8IDIwIGFuZCAoaSAlIDMwKSA+ PSAxMDsKLUlOU0VSVCBJTlRPIHBhZ2dfdGFiX3AzIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9f Y2hhcihpLzMwLCAnRk0wMDAwJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVS RSAoaSAlIDMwKSA8IDMwIGFuZCAoaSAlIDMwKSA+PSAyMDsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFi X3AxIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJyksIGkgJSA0 MCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMDAwKSBpIFdIRVJFIChpICUgMzApIDwgMTA7CitJ TlNFUlQgSU5UTyBwYWdnX3RhYl9wMiBTRUxFQ1QgaSAlIDMwLCBpICUgNTAsIHRvX2NoYXIoaS8z MCwgJ0ZNMDAwMCcpLCBpICUgNDAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVS RSAoaSAlIDMwKSA8IDIwIGFuZCAoaSAlIDMwKSA+PSAxMDsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFi X3AzIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJyksIGkgJSA0 MCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMDAwKSBpIFdIRVJFIChpICUgMzApIDwgMzAgYW5k IChpICUgMzApID49IDIwOwogLS0gQ3JlYXRlIGZvcmVpZ24gcGFydGl0aW9ucwogQ1JFQVRFIEZP UkVJR04gVEFCTEUgZnBhZ2dfdGFiX3AxIFBBUlRJVElPTiBPRiBwYWdnX3RhYiBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxMCkgU0VSVkVSIGxvb3BiYWNrIE9QVElPTlMgKHRhYmxlX25hbWUgJ3Bh Z2dfdGFiX3AxJyk7CiBDUkVBVEUgRk9SRUlHTiBUQUJMRSBmcGFnZ190YWJfcDIgUEFSVElUSU9O IE9GIHBhZ2dfdGFiIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCkgU0VSVkVSIGxvb3BiYWNr IE9QVElPTlMgKHRhYmxlX25hbWUgJ3BhZ2dfdGFiX3AyJyk7CkBAIC05MzkxLDggKzkzOTEsOCBA QCBTRUxFQ1QgYSwgc3VtKGIpLCBtaW4oYiksIGNvdW50KCopIEZST00gcGFnZ190YWIgR1JPVVAg QlkgYSBIQVZJTkcgYXZnKGIpIDwgMjIgTwogLS0gU2hvdWxkIGhhdmUgYWxsIHRoZSBjb2x1bW5z IGluIHRoZSB0YXJnZXQgbGlzdCBmb3IgdGhlIGdpdmVuIHJlbGF0aW9uCiBFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpCiBTRUxFQ1QgYSwgY291bnQodDEpIEZST00gcGFnZ190YWIgdDEgR1JP VVAgQlkgYSBIQVZJTkcgYXZnKGIpIDwgMjIgT1JERVIgQlkgMTsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog IFNvcnQKICAgIE91dHB1dDogdDEuYSwgKGNvdW50KCgodDEuKik6OnBhZ2dfdGFiKSkpCiAgICBT b3J0IEtleTogdDEuYQpAQCAtOTQwMywyMSArOTQwMywyMSBAQCBTRUxFQ1QgYSwgY291bnQodDEp IEZST00gcGFnZ190YWIgdDEgR1JPVVAgQlkgYSBIQVZJTkcgYXZnKGIpIDwgMjIgT1JERVIgQlkg MTsKICAgICAgICAgICAgICAgIEZpbHRlcjogKGF2Zyh0MS5iKSA8ICcyMic6Om51bWVyaWMpCiAg ICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mcGFnZ190YWJfcDEgdDEK ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgdDEuKiwgdDEuYgotICAgICAgICAg ICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIsIGMgRlJPTSBwdWJsaWMucGFnZ190 YWJfcDEKKyAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiLCBjLCBk IEZST00gcHVibGljLnBhZ2dfdGFiX3AxCiAgICAgICAgICAtPiAgSGFzaEFnZ3JlZ2F0ZQogICAg ICAgICAgICAgICAgT3V0cHV0OiB0MV8xLmEsIGNvdW50KCgodDFfMS4qKTo6cGFnZ190YWIpKQog ICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLmEKICAgICAgICAgICAgICAgIEZpbHRlcjog KGF2Zyh0MV8xLmIpIDwgJzIyJzo6bnVtZXJpYykKICAgICAgICAgICAgICAgIC0+ICBGb3JlaWdu IFNjYW4gb24gcHVibGljLmZwYWdnX3RhYl9wMiB0MV8xCiAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzEuYSwgdDFfMS4qLCB0MV8xLmIKLSAgICAgICAgICAgICAgICAgICAgIFJlbW90 ZSBTUUw6IFNFTEVDVCBhLCBiLCBjIEZST00gcHVibGljLnBhZ2dfdGFiX3AyCisgICAgICAgICAg ICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYywgZCBGUk9NIHB1YmxpYy5wYWdn X3RhYl9wMgogICAgICAgICAgLT4gIEhhc2hBZ2dyZWdhdGUKICAgICAgICAgICAgICAgIE91dHB1 dDogdDFfMi5hLCBjb3VudCgoKHQxXzIuKik6OnBhZ2dfdGFiKSkKICAgICAgICAgICAgICAgIEdy b3VwIEtleTogdDFfMi5hCiAgICAgICAgICAgICAgICBGaWx0ZXI6IChhdmcodDFfMi5iKSA8ICcy Mic6Om51bWVyaWMpCiAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5m cGFnZ190YWJfcDMgdDFfMgogICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLmEsIHQx XzIuKiwgdDFfMi5iCi0gICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwg YiwgYyBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMworICAgICAgICAgICAgICAgICAgICAgUmVtb3Rl IFNRTDogU0VMRUNUIGEsIGIsIGMsIGQgRlJPTSBwdWJsaWMucGFnZ190YWJfcDMKICgyNSByb3dz KQogCiBTRUxFQ1QgYSwgY291bnQodDEpIEZST00gcGFnZ190YWIgdDEgR1JPVVAgQlkgYSBIQVZJ TkcgYXZnKGIpIDwgMjIgT1JERVIgQlkgMTsKQEAgLTk0NTMsNiArOTQ1MywxNzMgQEAgU0VMRUNU IGIsIGF2ZyhhKSwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIgSEFW SU5HIHN1bShhKSA8IDcwMAogICAgICAgICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbiBv biBmcGFnZ190YWJfcDMgcGFnZ190YWJfMgogKDE1IHJvd3MpCiAKKy0tIEl0J3MgdW5zYWZlIHRv IHB1c2ggZG93biBoYXZpbmcgY2xhdXNlIHdoZW4gdGhlcmUgYXJlIHBhcnRpYWwgYWdncmVnYXRl cworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIGIsIG1heChhKSwgY291bnQo KikgRlJPTSBwYWdnX3RhYiBHUk9VUCBCWSBiIEhBVklORyBzdW0oYSkgPCA3MDAgT1JERVIgQlkg MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgU29ydAorICAgT3V0cHV0OiBwYWdnX3RhYi5iLCAobWF4KHBhZ2dfdGFiLmEpKSwg KGNvdW50KCopKQorICAgU29ydCBLZXk6IHBhZ2dfdGFiLmIKKyAgIC0+ICBGaW5hbGl6ZSBIYXNo QWdncmVnYXRlCisgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiLmIsIG1heChwYWdnX3RhYi5hKSwg Y291bnQoKikKKyAgICAgICAgIEdyb3VwIEtleTogcGFnZ190YWIuYgorICAgICAgICAgRmlsdGVy OiAoc3VtKHBhZ2dfdGFiLmEpIDwgNzAwKQorICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAg ICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiBwYWdnX3RhYi5iLCBQQVJUSUFMIG1heChwYWdnX3RhYi5hKSwgUEFSVElBTCBjb3VudCgq KSwgUEFSVElBTCBzdW0ocGFnZ190YWIuYSkKKyAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtl eTogcGFnZ190YWIuYgorICAgICAgICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBw dWJsaWMuZnBhZ2dfdGFiX3AxIHBhZ2dfdGFiCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHBhZ2dfdGFiLmIsIHBhZ2dfdGFiLmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiIEZST00gcHVibGljLnBhZ2dfdGFiX3AxCisgICAgICAg ICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHBhZ2dfdGFiXzEuYiwgUEFSVElBTCBtYXgocGFnZ190YWJfMS5hKSwgUEFSVElBTCBj b3VudCgqKSwgUEFSVElBTCBzdW0ocGFnZ190YWJfMS5hKQorICAgICAgICAgICAgICAgICAgICAg R3JvdXAgS2V5OiBwYWdnX3RhYl8xLmIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBGb3JlaWdu IFNjYW4gb24gcHVibGljLmZwYWdnX3RhYl9wMiBwYWdnX3RhYl8xCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzEuYiwgcGFnZ190YWJfMS5hCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiBGUk9NIHB1YmxpYy5wYWdn X3RhYl9wMgorICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYl8yLmIsIFBBUlRJQUwgbWF4KHBhZ2dfdGFi XzIuYSksIFBBUlRJQUwgY291bnQoKiksIFBBUlRJQUwgc3VtKHBhZ2dfdGFiXzIuYSkKKyAgICAg ICAgICAgICAgICAgICAgIEdyb3VwIEtleTogcGFnZ190YWJfMi5iCisgICAgICAgICAgICAgICAg ICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mcGFnZ190YWJfcDMgcGFnZ190YWJfMgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYl8yLmIsIHBhZ2dfdGFi XzIuYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIg RlJPTSBwdWJsaWMucGFnZ190YWJfcDMKKygyNiByb3dzKQorCistLSBQYXJ0aWFsIGFnZ3JlZ2F0 ZXMgYXJlIGZpbmUgdG8gcHVzaCBkb3duIHdpdGhvdXQgaGF2aW5nIGNsYXVzZQorRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIGIsIG1heChhKSwgY291bnQoKikgRlJPTSBwYWdn X3RhYiBHUk9VUCBCWSBiIE9SREVSIEJZIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0 CisgICBPdXRwdXQ6IHBhZ2dfdGFiLmIsIChtYXgocGFnZ190YWIuYSkpLCAoY291bnQoKikpCisg ICBTb3J0IEtleTogcGFnZ190YWIuYgorICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAg ICAgICAgIE91dHB1dDogcGFnZ190YWIuYiwgbWF4KHBhZ2dfdGFiLmEpLCBjb3VudCgqKQorICAg ICAgICAgR3JvdXAgS2V5OiBwYWdnX3RhYi5iCisgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAg ICAgICAgICAtPiAgRm9yZWlnbiBTY2FuCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHBh Z2dfdGFiLmIsIChQQVJUSUFMIG1heChwYWdnX3RhYi5hKSksIChQQVJUSUFMIGNvdW50KCopKQor ICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mcGFn Z190YWJfcDEgcGFnZ190YWIpCisgICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxF Q1QgYiwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMSBHUk9VUCBCWSAx CisgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuCisgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHBhZ2dfdGFiXzEuYiwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiXzEuYSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uczogQWdncmVnYXRlIG9u IChwdWJsaWMuZnBhZ2dfdGFiX3AyIHBhZ2dfdGFiXzEpCisgICAgICAgICAgICAgICAgICAgICBS ZW1vdGUgU1FMOiBTRUxFQ1QgYiwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHB1YmxpYy5wYWdnX3Rh Yl9wMiBHUk9VUCBCWSAxCisgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuCisgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzIuYiwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFi XzIuYSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9u czogQWdncmVnYXRlIG9uIChwdWJsaWMuZnBhZ2dfdGFiX3AzIHBhZ2dfdGFiXzIpCisgICAgICAg ICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYiwgbWF4KGEpLCBjb3VudCgqKSBGUk9N IHB1YmxpYy5wYWdnX3RhYl9wMyBHUk9VUCBCWSAxCisoMTkgcm93cykKKworU0VMRUNUIGIsIG1h eChhKSwgY291bnQoKikgRlJPTSBwYWdnX3RhYiBHUk9VUCBCWSBiIE9SREVSIEJZIDE7CisgYiAg fCBtYXggfCBjb3VudCAKKy0tLS0rLS0tLS0rLS0tLS0tLQorICAwIHwgIDIwIHwgICAgNjAKKyAg MSB8ICAyMSB8ICAgIDYwCisgIDIgfCAgMjIgfCAgICA2MAorICAzIHwgIDIzIHwgICAgNjAKKyAg NCB8ICAyNCB8ICAgIDYwCisgIDUgfCAgMjUgfCAgICA2MAorICA2IHwgIDI2IHwgICAgNjAKKyAg NyB8ICAyNyB8ICAgIDYwCisgIDggfCAgMjggfCAgICA2MAorICA5IHwgIDI5IHwgICAgNjAKKyAx MCB8ICAyMCB8ICAgIDYwCisgMTEgfCAgMjEgfCAgICA2MAorIDEyIHwgIDIyIHwgICAgNjAKKyAx MyB8ICAyMyB8ICAgIDYwCisgMTQgfCAgMjQgfCAgICA2MAorIDE1IHwgIDI1IHwgICAgNjAKKyAx NiB8ICAyNiB8ICAgIDYwCisgMTcgfCAgMjcgfCAgICA2MAorIDE4IHwgIDI4IHwgICAgNjAKKyAx OSB8ICAyOSB8ICAgIDYwCisgMjAgfCAgMjAgfCAgICA2MAorIDIxIHwgIDIxIHwgICAgNjAKKyAy MiB8ICAyMiB8ICAgIDYwCisgMjMgfCAgMjMgfCAgICA2MAorIDI0IHwgIDI0IHwgICAgNjAKKyAy NSB8ICAyNSB8ICAgIDYwCisgMjYgfCAgMjYgfCAgICA2MAorIDI3IHwgIDI3IHwgICAgNjAKKyAy OCB8ICAyOCB8ICAgIDYwCisgMjkgfCAgMjkgfCAgICA2MAorIDMwIHwgIDIwIHwgICAgNjAKKyAz MSB8ICAyMSB8ICAgIDYwCisgMzIgfCAgMjIgfCAgICA2MAorIDMzIHwgIDIzIHwgICAgNjAKKyAz NCB8ICAyNCB8ICAgIDYwCisgMzUgfCAgMjUgfCAgICA2MAorIDM2IHwgIDI2IHwgICAgNjAKKyAz NyB8ICAyNyB8ICAgIDYwCisgMzggfCAgMjggfCAgICA2MAorIDM5IHwgIDI5IHwgICAgNjAKKyA0 MCB8ICAyMCB8ICAgIDYwCisgNDEgfCAgMjEgfCAgICA2MAorIDQyIHwgIDIyIHwgICAgNjAKKyA0 MyB8ICAyMyB8ICAgIDYwCisgNDQgfCAgMjQgfCAgICA2MAorIDQ1IHwgIDI1IHwgICAgNjAKKyA0 NiB8ICAyNiB8ICAgIDYwCisgNDcgfCAgMjcgfCAgICA2MAorIDQ4IHwgIDI4IHwgICAgNjAKKyA0 OSB8ICAyOSB8ICAgIDYwCisoNTAgcm93cykKKworLS0gUGFydGlhbCBhZ2dyZWdhdGVzIGFyZSBm aW5lIHRvIHB1c2ggZG93bgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIG1h eChhKSwgY291bnQoKiksIHN1bShkKSBGUk9NIHBhZ2dfdGFiOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiBtYXgocGFnZ190 YWIuYSksIGNvdW50KCopLCBzdW0ocGFnZ190YWIuZCkKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAg IC0+ICBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgIE91dHB1dDogKFBBUlRJQUwgbWF4KHBh Z2dfdGFiLmEpKSwgKFBBUlRJQUwgY291bnQoKikpLCAoUEFSVElBTCBzdW0ocGFnZ190YWIuZCkp CisgICAgICAgICAgICAgICBSZWxhdGlvbnM6IEFnZ3JlZ2F0ZSBvbiAocHVibGljLmZwYWdnX3Rh Yl9wMSBwYWdnX3RhYikKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBtYXgoYSks IGNvdW50KCopLCBzdW0oZCkgRlJPTSBwdWJsaWMucGFnZ190YWJfcDEKKyAgICAgICAgIC0+ICBG b3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgIE91dHB1dDogKFBBUlRJQUwgbWF4KHBhZ2dfdGFi XzEuYSkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIHN1bShwYWdnX3RhYl8xLmQpKQor ICAgICAgICAgICAgICAgUmVsYXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mcGFnZ190YWJf cDIgcGFnZ190YWJfMSkKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBtYXgoYSks IGNvdW50KCopLCBzdW0oZCkgRlJPTSBwdWJsaWMucGFnZ190YWJfcDIKKyAgICAgICAgIC0+ICBG b3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgIE91dHB1dDogKFBBUlRJQUwgbWF4KHBhZ2dfdGFi XzIuYSkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIHN1bShwYWdnX3RhYl8yLmQpKQor ICAgICAgICAgICAgICAgUmVsYXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mcGFnZ190YWJf cDMgcGFnZ190YWJfMikKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBtYXgoYSks IGNvdW50KCopLCBzdW0oZCkgRlJPTSBwdWJsaWMucGFnZ190YWJfcDMKKygxNSByb3dzKQorCitT RUxFQ1QgbWF4KGEpLCBjb3VudCgqKSwgc3VtKGQpIEZST00gcGFnZ190YWI7CisgbWF4IHwgY291 bnQgfCAgc3VtICAKKy0tLS0tKy0tLS0tLS0rLS0tLS0tLQorICAyOSB8ICAzMDAwIHwgNTg1MDAK KygxIHJvdykKKworLS0gU2hvdWxkbid0IHRyeSB0byBwdXNoIGRvd24KK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikKK1NFTEVDVCBtYXgoYSksIGNvdW50KGRpc3RpbmN0IGIpIEZST00gcGFn Z190YWI7CisgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiBtYXgocGFnZ190 YWIuYSksIGNvdW50KERJU1RJTkNUIHBhZ2dfdGFiLmIpCisgICAtPiAgQXBwZW5kCisgICAgICAg ICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mcGFnZ190YWJfcDEgcGFnZ190YWJfMQorICAg ICAgICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYl8xLmEsIHBhZ2dfdGFiXzEuYgorICAgICAgICAg ICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIgRlJPTSBwdWJsaWMucGFnZ190YWJfcDEKKyAg ICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gcHVibGljLmZwYWdnX3RhYl9wMiBwYWdnX3RhYl8y CisgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzIuYSwgcGFnZ190YWJfMi5iCisgICAg ICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiBGUk9NIHB1YmxpYy5wYWdnX3RhYl9w MgorICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuZnBhZ2dfdGFiX3AzIHBhZ2df dGFiXzMKKyAgICAgICAgICAgICAgIE91dHB1dDogcGFnZ190YWJfMy5hLCBwYWdnX3RhYl8zLmIK KyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiIEZST00gcHVibGljLnBhZ2df dGFiX3AzCisoMTIgcm93cykKKworU0VMRUNUIG1heChhKSwgY291bnQoZGlzdGluY3QgYikgRlJP TSBwYWdnX3RhYjsKKyBtYXggfCBjb3VudCAKKy0tLS0tKy0tLS0tLS0KKyAgMjkgfCAgICA1MAor KDEgcm93KQorCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSBhY2Nlc3MgcmlnaHRzIGFuZCBzdXBlcnVzZXIK IC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVz X2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKaW5kZXggNDVhMDkz MzdkMDguLmJhZDAzYzQ5ZTQ5IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0 Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAt MTgsNiArMTgsOCBAQAogI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRyLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzcy5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfYWdncmVnYXRlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXhwbGFpbi5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgpAQCAtNDgsNiArNTAsNyBAQAogI2luY2x1ZGUg InV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NhbXBsaW5nLmgiCiAjaW5jbHVkZSAidXRp bHMvc2VsZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCiBQR19NT0RVTEVf TUFHSUM7CiAKQEAgLTgwLDcgKzgzLDEyIEBAIGVudW0gRmR3U2NhblByaXZhdGVJbmRleAogCSAq IFN0cmluZyBkZXNjcmliaW5nIGpvaW4gaS5lLiBuYW1lcyBvZiByZWxhdGlvbnMgYmVpbmcgam9p bmVkIGFuZCB0eXBlcwogCSAqIG9mIGpvaW4sIGFkZGVkIHdoZW4gdGhlIHNjYW4gaXMgam9pbgog CSAqLwotCUZkd1NjYW5Qcml2YXRlUmVsYXRpb25zCisJRmR3U2NhblByaXZhdGVSZWxhdGlvbnMs CisKKwkvKgorCSAqIExpc3Qgb2YgZnVuY3Rpb25zIHRvIGNvbnZlcnQgcGFydGlhbCBhZ2dyZWdh dGUgcmVzdWx0CisJICovCisJRmR3U2NhblByaXZhdGVDb252ZXJ0b3JzCiB9OwogCiAvKgpAQCAt MTQzLDYgKzE1MSw3IEBAIHR5cGVkZWYgc3RydWN0IFBnRmR3U2NhblN0YXRlCiAJLyogZXh0cmFj dGVkIGZkd19wcml2YXRlIGRhdGEgKi8KIAljaGFyCSAgICpxdWVyeTsJCQkvKiB0ZXh0IG9mIFNF TEVDVCBjb21tYW5kICovCiAJTGlzdAkgICAqcmV0cmlldmVkX2F0dHJzOwkvKiBsaXN0IG9mIHJl dHJpZXZlZCBhdHRyaWJ1dGUgbnVtYmVycyAqLworCUxpc3QJICAgKmNvbnZfbGlzdDsJCS8qIGxp c3Qgb2YgY29udmVydGVycyAqLwogCiAJLyogZm9yIHJlbW90ZSBxdWVyeSBleGVjdXRpb24gKi8K IAlQR2Nvbm4JICAgKmNvbm47CQkJLyogY29ubmVjdGlvbiBmb3IgdGhlIHNjYW4gKi8KQEAgLTQ3 NCw2ICs0ODMsNyBAQCBzdGF0aWMgdm9pZCBzdG9yZV9yZXR1cm5pbmdfcmVzdWx0KFBnRmR3TW9k aWZ5U3RhdGUgKmZtc3RhdGUsCiAJCQkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpzbG90LCBQR3Jl c3VsdCAqcmVzKTsKIHN0YXRpYyB2b2lkIGZpbmlzaF9mb3JlaWduX21vZGlmeShQZ0Zkd01vZGlm eVN0YXRlICpmbXN0YXRlKTsKIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGVfcXVlcnkoUGdGZHdNb2Rp ZnlTdGF0ZSAqZm1zdGF0ZSk7CitzdGF0aWMgTGlzdCAqYnVpbGRfY29udl9saXN0KFJlbE9wdElu Zm8gKmZvcmVpZ25yZWwpOwogc3RhdGljIExpc3QgKmJ1aWxkX3JlbW90ZV9yZXR1cm5pbmcoSW5k ZXggcnRpbmRleCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJTGlzdCAqcmV0dXJuaW5nTGlzdCk7 CiBzdGF0aWMgdm9pZCByZWJ1aWxkX2Zkd19zY2FuX3RsaXN0KEZvcmVpZ25TY2FuICpmc2Nhbiwg TGlzdCAqdGxpc3QpOwpAQCAtNTEwLDYgKzUyMCw3IEBAIHN0YXRpYyBIZWFwVHVwbGUgbWFrZV90 dXBsZV9mcm9tX3Jlc3VsdF9yb3coUEdyZXN1bHQgKnJlcywKIAkJCQkJCQkJCQkJUmVsYXRpb24g cmVsLAogCQkJCQkJCQkJCQlBdHRJbk1ldGFkYXRhICphdHRpbm1ldGEsCiAJCQkJCQkJCQkJCUxp c3QgKnJldHJpZXZlZF9hdHRycywKKwkJCQkJCQkJCQkJTGlzdCAqY29udl9saXN0LAogCQkJCQkJ CQkJCQlGb3JlaWduU2NhblN0YXRlICpmc3N0YXRlLAogCQkJCQkJCQkJCQlNZW1vcnlDb250ZXh0 IHRlbXBfY29udGV4dCk7CiBzdGF0aWMgdm9pZCBjb252ZXJzaW9uX2Vycm9yX2NhbGxiYWNrKHZv aWQgKmFyZyk7CkBAIC01MTcsNyArNTI4LDcgQEAgc3RhdGljIGJvb2wgZm9yZWlnbl9qb2luX29r KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpqb2lucmVsLAogCQkJCQkJCUpvaW5UeXBl IGpvaW50eXBlLCBSZWxPcHRJbmZvICpvdXRlcnJlbCwgUmVsT3B0SW5mbyAqaW5uZXJyZWwsCiAJ CQkJCQkJSm9pblBhdGhFeHRyYURhdGEgKmV4dHJhKTsKIHN0YXRpYyBib29sIGZvcmVpZ25fZ3Jv dXBpbmdfb2soUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmdyb3VwZWRfcmVsLAotCQkJ CQkJCQlOb2RlICpoYXZpbmdRdWFsKTsKKwkJCQkJCQkJTm9kZSAqaGF2aW5nUXVhbCwgYm9vbCBw YXJ0aWFsKTsKIHN0YXRpYyBMaXN0ICpnZXRfdXNlZnVsX3BhdGhrZXlzX2Zvcl9yZWxhdGlvbihQ bGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJICBSZWxPcHRJbmZvICpyZWwpOwogc3RhdGlj IExpc3QgKmdldF91c2VmdWxfZWNzX2Zvcl9yZWxhdGlvbihQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcmVsKTsKQEAgLTUyNiw3ICs1MzcsOCBAQCBzdGF0aWMgdm9pZCBhZGRfcGF0aHNf d2l0aF9wYXRoa2V5c19mb3JfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWws CiBzdGF0aWMgdm9pZCBhZGRfZm9yZWlnbl9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9v dCwKIAkJCQkJCQkJCSAgIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCQkJCSAgIFJlbE9w dEluZm8gKmdyb3VwZWRfcmVsLAotCQkJCQkJCQkJICAgR3JvdXBQYXRoRXh0cmFEYXRhICpleHRy YSk7CisJCQkJCQkJCQkgICBHcm91cFBhdGhFeHRyYURhdGEgKmV4dHJhLAorCQkJCQkJCQkJICAg Ym9vbCBwYXJ0aWFsKTsKIHN0YXRpYyB2b2lkIGFkZF9mb3JlaWduX29yZGVyZWRfcGF0aHMoUGxh bm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkgIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJ CQkJCSAgUmVsT3B0SW5mbyAqb3JkZXJlZF9yZWwpOwpAQCAtNTQxLDcgKzU1Myw2IEBAIHN0YXRp YyB2b2lkIG1lcmdlX2Zkd19vcHRpb25zKFBnRmR3UmVsYXRpb25JbmZvICpmcGluZm8sCiAJCQkJ CQkJICBjb25zdCBQZ0Zkd1JlbGF0aW9uSW5mbyAqZnBpbmZvX2kpOwogc3RhdGljIGludAlnZXRf YmF0Y2hfc2l6ZV9vcHRpb24oUmVsYXRpb24gcmVsKTsKIAotCiAvKgogICogRm9yZWlnbi1kYXRh IHdyYXBwZXIgaGFuZGxlciBmdW5jdGlvbjogcmV0dXJuIGEgc3RydWN0IHdpdGggcG9pbnRlcnMK ICAqIHRvIG15IGNhbGxiYWNrIHJvdXRpbmVzLgpAQCAtMTIzMyw2ICsxMjQ0LDcgQEAgcG9zdGdy ZXNHZXRGb3JlaWduUGxhbihQbGFubmVySW5mbyAqcm9vdCwKIAlMaXN0CSAgICpsb2NhbF9leHBy cyA9IE5JTDsKIAlMaXN0CSAgICpwYXJhbXNfbGlzdCA9IE5JTDsKIAlMaXN0CSAgICpmZHdfc2Nh bl90bGlzdCA9IE5JTDsKKwlMaXN0CSAgICpmZHdfY29udl9saXN0ID0gTklMOwogCUxpc3QJICAg KmZkd19yZWNoZWNrX3F1YWxzID0gTklMOwogCUxpc3QJICAgKnJldHJpZXZlZF9hdHRyczsKIAlT dHJpbmdJbmZvRGF0YSBzcWw7CkBAIC0xMzM2LDYgKzEzNDgsOSBAQCBwb3N0Z3Jlc0dldEZvcmVp Z25QbGFuKFBsYW5uZXJJbmZvICpyb290LAogCQkvKiBCdWlsZCB0aGUgbGlzdCBvZiBjb2x1bW5z IHRvIGJlIGZldGNoZWQgZnJvbSB0aGUgZm9yZWlnbiBzZXJ2ZXIuICovCiAJCWZkd19zY2FuX3Rs aXN0ID0gYnVpbGRfdGxpc3RfdG9fZGVwYXJzZShmb3JlaWducmVsKTsKIAorCQkvKiBCdWlsZCB0 aGUgbGlzdCBvZiBjb252ZXJ0ZXJzIGZvciBwYXJ0aWFsIGFnZ3JlZ2F0ZXMuICovCisJCWZkd19j b252X2xpc3QgPSBidWlsZF9jb252X2xpc3QoZm9yZWlnbnJlbCk7CisKIAkJLyoKIAkJICogRW5z dXJlIHRoYXQgdGhlIG91dGVyIHBsYW4gcHJvZHVjZXMgYSB0dXBsZSB3aG9zZSBkZXNjcmlwdG9y CiAJCSAqIG1hdGNoZXMgb3VyIHNjYW4gdHVwbGUgc2xvdC4gIEFsc28sIHJlbW92ZSB0aGUgbG9j YWwgY29uZGl0aW9ucwpAQCAtMTQxNSw2ICsxNDMwLDggQEAgcG9zdGdyZXNHZXRGb3JlaWduUGxh bihQbGFubmVySW5mbyAqcm9vdCwKIAlpZiAoSVNfSk9JTl9SRUwoZm9yZWlnbnJlbCkgfHwgSVNf VVBQRVJfUkVMKGZvcmVpZ25yZWwpKQogCQlmZHdfcHJpdmF0ZSA9IGxhcHBlbmQoZmR3X3ByaXZh dGUsCiAJCQkJCQkJICBtYWtlU3RyaW5nKGZwaW5mby0+cmVsYXRpb25fbmFtZSkpOworCWlmIChJ U19VUFBFUl9SRUwoZm9yZWlnbnJlbCkpCisJCWZkd19wcml2YXRlID0gbGFwcGVuZChmZHdfcHJp dmF0ZSwgZmR3X2NvbnZfbGlzdCk7CiAKIAkvKgogCSAqIENyZWF0ZSB0aGUgRm9yZWlnblNjYW4g bm9kZSBmb3IgdGhlIGdpdmVuIHJlbGF0aW9uLgpAQCAtMTQzMyw2ICsxNDUwLDQ4IEBAIHBvc3Rn cmVzR2V0Rm9yZWlnblBsYW4oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJb3V0ZXJfcGxhbik7 CiB9CiAKKy8qCisgKiBHZW5lcmF0ZSBhdHRpbm1ldGEgaWYgdGhlcmUgYXJlIHNvbWUgY29udmVy dGVyczoKKyAqIHRoZXkgYXJlIGV4cGVjdGVkIHRvIHJldHVybiBCWVRFQSwgYnV0IHJlYWwgaW5w dXQgdHlwZSBpcyBsaWtlbHkgZGlmZmVyZW50LgorICovCitzdGF0aWMgQXR0SW5NZXRhZGF0YSAq CitnZXRfcmN2ZF9hdHRpbm1ldGEoVHVwbGVEZXNjIHR1cGRlc2MsIExpc3QgKmNvbnZfbGlzdCkK K3sKKwlUdXBsZURlc2MJcmN2ZF90dXBkZXNjOworCisJQXNzZXJ0KGNvbnZfbGlzdCAhPSBOSUwp OworCisJcmN2ZF90dXBkZXNjID0gQ3JlYXRlVHVwbGVEZXNjQ29weSh0dXBkZXNjKTsKKwlmb3Ig KGludCBpID0gMDsgaSA8IHJjdmRfdHVwZGVzYy0+bmF0dHM7IGkrKykKKwl7CisJCU9pZAkJCWNv bnZlcnRlciA9IEludmFsaWRPaWQ7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVz Y0F0dHIocmN2ZF90dXBkZXNjLCBpKTsKKworCQljb252ZXJ0ZXIgPSBsaXN0X250aF9vaWQoY29u dl9saXN0LCBpKTsKKwkJaWYgKGNvbnZlcnRlciAhPSBJbnZhbGlkT2lkKQorCQl7CisJCQlIZWFw VHVwbGUJcHJvY3R1cDsKKwkJCUZvcm1fcGdfcHJvYyBwcm9jZm9ybTsKKworCQkJcHJvY3R1cCA9 IFNlYXJjaFN5c0NhY2hlMShQUk9DT0lELCBPYmplY3RJZEdldERhdHVtKGNvbnZlcnRlcikpOwor CisJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocHJvY3R1cCkpCisJCQkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1bmN0aW9uICV1IiwgY29udmVydGVyKTsKKworCQkJcHJv Y2Zvcm0gPSAoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QocHJvY3R1cCk7CisKKwkJCWlmIChwcm9j Zm9ybS0+cHJvbmFyZ3MgIT0gMSkKKwkJCQllbG9nKEVSUk9SLCAiY29udmVydGVyICVzIGlzIGV4 cGVjdGVkIHRvIGhhdmUgb25lIGFyZ3VtZW50IiwgTmFtZVN0cihwcm9jZm9ybS0+cHJvbmFtZSkp OworCisJCQlhdHQtPmF0dHR5cGlkID0gcHJvY2Zvcm0tPnByb2FyZ3R5cGVzLnZhbHVlc1swXTsK KworCQkJUmVsZWFzZVN5c0NhY2hlKHByb2N0dXApOworCQl9CisJfQorCisJcmV0dXJuIFR1cGxl RGVzY0dldEF0dEluTWV0YWRhdGEocmN2ZF90dXBkZXNjKTsKK30KKwogLyoKICAqIENvbnN0cnVj dCBhIHR1cGxlIGRlc2NyaXB0b3IgZm9yIHRoZSBzY2FuIHR1cGxlcyBoYW5kbGVkIGJ5IGEgZm9y ZWlnbiBqb2luLgogICovCkBAIC0xNTQ1LDYgKzE2MDQsMTIgQEAgcG9zdGdyZXNCZWdpbkZvcmVp Z25TY2FuKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJCQkgRmR3 U2NhblByaXZhdGVTZWxlY3RTcWwpKTsKIAlmc3N0YXRlLT5yZXRyaWV2ZWRfYXR0cnMgPSAoTGlz dCAqKSBsaXN0X250aChmc3BsYW4tPmZkd19wcml2YXRlLAogCQkJCQkJCQkJCQkJIEZkd1NjYW5Q cml2YXRlUmV0cmlldmVkQXR0cnMpOworCisJaWYgKGxpc3RfbGVuZ3RoKGZzcGxhbi0+ZmR3X3By aXZhdGUpID4gRmR3U2NhblByaXZhdGVDb252ZXJ0b3JzKQorCQlmc3N0YXRlLT5jb252X2xpc3Qg PSAoTGlzdCAqKSBsaXN0X250aChmc3BsYW4tPmZkd19wcml2YXRlLAorCQkJCQkJCQkJCQkgICBG ZHdTY2FuUHJpdmF0ZUNvbnZlcnRvcnMpOworCisKIAlmc3N0YXRlLT5mZXRjaF9zaXplID0gaW50 VmFsKGxpc3RfbnRoKGZzcGxhbi0+ZmR3X3ByaXZhdGUsCiAJCQkJCQkJCQkJICBGZHdTY2FuUHJp dmF0ZUZldGNoU2l6ZSkpOwogCkBAIC0xNTcxLDcgKzE2MzYsMTAgQEAgcG9zdGdyZXNCZWdpbkZv cmVpZ25TY2FuKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUsIGludCBlZmxhZ3MpCiAJCWZzc3RhdGUt PnR1cGRlc2MgPSBnZXRfdHVwZGVzY19mb3Jfam9pbl9zY2FuX3R1cGxlcyhub2RlKTsKIAl9CiAK LQlmc3N0YXRlLT5hdHRpbm1ldGEgPSBUdXBsZURlc2NHZXRBdHRJbk1ldGFkYXRhKGZzc3RhdGUt PnR1cGRlc2MpOworCWlmIChmc3N0YXRlLT5jb252X2xpc3QgIT0gTklMKQorCQlmc3N0YXRlLT5h dHRpbm1ldGEgPSBnZXRfcmN2ZF9hdHRpbm1ldGEoZnNzdGF0ZS0+dHVwZGVzYywgZnNzdGF0ZS0+ Y29udl9saXN0KTsKKwllbHNlCisJCWZzc3RhdGUtPmF0dGlubWV0YSA9IFR1cGxlRGVzY0dldEF0 dEluTWV0YWRhdGEoZnNzdGF0ZS0+dHVwZGVzYyk7CiAKIAkvKgogCSAqIFByZXBhcmUgZm9yIHBy b2Nlc3Npbmcgb2YgcGFyYW1ldGVycyB1c2VkIGluIHJlbW90ZSBxdWVyeSwgaWYgYW55LgpAQCAt MzgyMiw2ICszODkwLDcgQEAgZmV0Y2hfbW9yZV9kYXRhKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUp CiAJCQkJCQkJCQkJICAgZnNzdGF0ZS0+cmVsLAogCQkJCQkJCQkJCSAgIGZzc3RhdGUtPmF0dGlu bWV0YSwKIAkJCQkJCQkJCQkgICBmc3N0YXRlLT5yZXRyaWV2ZWRfYXR0cnMsCisJCQkJCQkJCQkJ ICAgZnNzdGF0ZS0+Y29udl9saXN0LAogCQkJCQkJCQkJCSAgIG5vZGUsCiAJCQkJCQkJCQkJICAg ZnNzdGF0ZS0+dGVtcF9jeHQpOwogCQl9CkBAIC00MzA5LDYgKzQzNzgsNyBAQCBzdG9yZV9yZXR1 cm5pbmdfcmVzdWx0KFBnRmR3TW9kaWZ5U3RhdGUgKmZtc3RhdGUsCiAJCQkJCQkJCQkJCWZtc3Rh dGUtPnJlbCwKIAkJCQkJCQkJCQkJZm1zdGF0ZS0+YXR0aW5tZXRhLAogCQkJCQkJCQkJCQlmbXN0 YXRlLT5yZXRyaWV2ZWRfYXR0cnMsCisJCQkJCQkJCQkJCU5JTCwKIAkJCQkJCQkJCQkJTlVMTCwK IAkJCQkJCQkJCQkJZm1zdGF0ZS0+dGVtcF9jeHQpOwogCkBAIC00NjAzLDYgKzQ2NzMsNyBAQCBn ZXRfcmV0dXJuaW5nX2RhdGEoRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJCQkJCWRt c3RhdGUtPnJlbCwKIAkJCQkJCQkJCQkJCWRtc3RhdGUtPmF0dGlubWV0YSwKIAkJCQkJCQkJCQkJ CWRtc3RhdGUtPnJldHJpZXZlZF9hdHRycywKKwkJCQkJCQkJCQkJCU5JTCwKIAkJCQkJCQkJCQkJ CW5vZGUsCiAJCQkJCQkJCQkJCQlkbXN0YXRlLT50ZW1wX2N4dCk7CiAJCQlFeGVjU3RvcmVIZWFw VHVwbGUobmV3dHVwLCBzbG90LCBmYWxzZSk7CkBAIC01MTgzLDYgKzUyNTQsNyBAQCBhbmFseXpl X3Jvd19wcm9jZXNzb3IoUEdyZXN1bHQgKnJlcywgaW50IHJvdywgUGdGZHdBbmFseXplU3RhdGUg KmFzdGF0ZSkKIAkJCQkJCQkJCQkJCQkgICBhc3RhdGUtPnJlbCwKIAkJCQkJCQkJCQkJCQkgICBh c3RhdGUtPmF0dGlubWV0YSwKIAkJCQkJCQkJCQkJCQkgICBhc3RhdGUtPnJldHJpZXZlZF9hdHRy cywKKwkJCQkJCQkJCQkJCQkgICBOSUwsCiAJCQkJCQkJCQkJCQkJICAgTlVMTCwKIAkJCQkJCQkJ CQkJCQkgICBhc3RhdGUtPnRlbXBfY3h0KTsKIApAQCAtNjA4Myw3ICs2MTU1LDcgQEAgcG9zdGdy ZXNHZXRGb3JlaWduSm9pblBhdGhzKFBsYW5uZXJJbmZvICpyb290LAogICovCiBzdGF0aWMgYm9v bAogZm9yZWlnbl9ncm91cGluZ19vayhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqZ3Jv dXBlZF9yZWwsCi0JCQkJCU5vZGUgKmhhdmluZ1F1YWwpCisJCQkJCU5vZGUgKmhhdmluZ1F1YWws IGJvb2wgcGFydGlhbCkKIHsKIAlRdWVyeQkgICAqcXVlcnkgPSByb290LT5wYXJzZTsKIAlQZ0Zk d1JlbGF0aW9uSW5mbyAqZnBpbmZvID0gKFBnRmR3UmVsYXRpb25JbmZvICopIGdyb3VwZWRfcmVs LT5mZHdfcHJpdmF0ZTsKQEAgLTYwOTcsNiArNjE2OSwxMSBAQCBmb3JlaWduX2dyb3VwaW5nX29r KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwKIAlpZiAocXVlcnkt Pmdyb3VwaW5nU2V0cykKIAkJcmV0dXJuIGZhbHNlOwogCisKKwkvKiBJdCdzIHVuc2FmZSB0byBw dXNoIGhhdmluZyBzdGF0ZW1lbnRzIHdpdGggcGFydGlhbCBhZ2dyZWdhdGVzICovCisJaWYgKHBh cnRpYWwgJiYgaGF2aW5nUXVhbCkKKwkJcmV0dXJuIGZhbHNlOworCiAJLyogR2V0IHRoZSBmcGlu Zm8gb2YgdGhlIHVuZGVybHlpbmcgc2NhbiByZWxhdGlvbi4gKi8KIAlvZnBpbmZvID0gKFBnRmR3 UmVsYXRpb25JbmZvICopIGZwaW5mby0+b3V0ZXJyZWwtPmZkd19wcml2YXRlOwogCkBAIC02MzM2 LDYgKzY0MTMsNyBAQCBwb3N0Z3Jlc0dldEZvcmVpZ25VcHBlclBhdGhzKFBsYW5uZXJJbmZvICpy b290LCBVcHBlclJlbGF0aW9uS2luZCBzdGFnZSwKIAogCS8qIElnbm9yZSBzdGFnZXMgd2UgZG9u J3Qgc3VwcG9ydDsgYW5kIHNraXAgYW55IGR1cGxpY2F0ZSBjYWxscy4gKi8KIAlpZiAoKHN0YWdl ICE9IFVQUEVSUkVMX0dST1VQX0FHRyAmJgorCQkgc3RhZ2UgIT0gVVBQRVJSRUxfUEFSVElBTF9H Uk9VUF9BR0cgJiYKIAkJIHN0YWdlICE9IFVQUEVSUkVMX09SREVSRUQgJiYKIAkJIHN0YWdlICE9 IFVQUEVSUkVMX0ZJTkFMKSB8fAogCQlvdXRwdXRfcmVsLT5mZHdfcHJpdmF0ZSkKQEAgLTYzNTAs NyArNjQyOCwxMSBAQCBwb3N0Z3Jlc0dldEZvcmVpZ25VcHBlclBhdGhzKFBsYW5uZXJJbmZvICpy b290LCBVcHBlclJlbGF0aW9uS2luZCBzdGFnZSwKIAl7CiAJCWNhc2UgVVBQRVJSRUxfR1JPVVBf QUdHOgogCQkJYWRkX2ZvcmVpZ25fZ3JvdXBpbmdfcGF0aHMocm9vdCwgaW5wdXRfcmVsLCBvdXRw dXRfcmVsLAotCQkJCQkJCQkJICAgKEdyb3VwUGF0aEV4dHJhRGF0YSAqKSBleHRyYSk7CisJCQkJ CQkJCQkgICAoR3JvdXBQYXRoRXh0cmFEYXRhICopIGV4dHJhLCBmYWxzZSk7CisJCQlicmVhazsK KwkJY2FzZSBVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHRzoKKwkJCWFkZF9mb3JlaWduX2dyb3Vw aW5nX3BhdGhzKHJvb3QsIGlucHV0X3JlbCwgb3V0cHV0X3JlbCwKKwkJCQkJCQkJCSAgIChHcm91 cFBhdGhFeHRyYURhdGEgKikgZXh0cmEsIHRydWUpOwogCQkJYnJlYWs7CiAJCWNhc2UgVVBQRVJS RUxfT1JERVJFRDoKIAkJCWFkZF9mb3JlaWduX29yZGVyZWRfcGF0aHMocm9vdCwgaW5wdXRfcmVs LCBvdXRwdXRfcmVsKTsKQEAgLTYzNzUsNyArNjQ1Nyw4IEBAIHBvc3RncmVzR2V0Rm9yZWlnblVw cGVyUGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFVwcGVyUmVsYXRpb25LaW5kIHN0YWdlLAogc3Rh dGljIHZvaWQKIGFkZF9mb3JlaWduX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCQkJCQkgICBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwK LQkJCQkJCSAgIEdyb3VwUGF0aEV4dHJhRGF0YSAqZXh0cmEpCisJCQkJCQkgICBHcm91cFBhdGhF eHRyYURhdGEgKmV4dHJhLAorCQkJCQkJICAgYm9vbCBwYXJ0aWFsKQogewogCVF1ZXJ5CSAgICpw YXJzZSA9IHJvb3QtPnBhcnNlOwogCVBnRmR3UmVsYXRpb25JbmZvICppZnBpbmZvID0gaW5wdXRf cmVsLT5mZHdfcHJpdmF0ZTsKQEAgLTYzOTEsOCArNjQ3NCw5IEBAIGFkZF9mb3JlaWduX2dyb3Vw aW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCSFy b290LT5oYXNIYXZpbmdRdWFsKQogCQlyZXR1cm47CiAKLQlBc3NlcnQoZXh0cmEtPnBhdHlwZSA9 PSBQQVJUSVRJT05XSVNFX0FHR1JFR0FURV9OT05FIHx8Ci0JCSAgIGV4dHJhLT5wYXR5cGUgPT0g UEFSVElUSU9OV0lTRV9BR0dSRUdBVEVfRlVMTCk7CisJQXNzZXJ0KCgoZXh0cmEtPnBhdHlwZSA9 PSBQQVJUSVRJT05XSVNFX0FHR1JFR0FURV9OT05FIHx8CisJCQkgZXh0cmEtPnBhdHlwZSA9PSBQ QVJUSVRJT05XSVNFX0FHR1JFR0FURV9GVUxMKSAmJiAhcGFydGlhbCkgfHwKKwkJICAgKGV4dHJh LT5wYXR5cGUgPT0gUEFSVElUSU9OV0lTRV9BR0dSRUdBVEVfUEFSVElBTCAmJiBwYXJ0aWFsKSk7 CiAKIAkvKiBzYXZlIHRoZSBpbnB1dF9yZWwgYXMgb3V0ZXJyZWwgaW4gZnBpbmZvICovCiAJZnBp bmZvLT5vdXRlcnJlbCA9IGlucHV0X3JlbDsKQEAgLTY0MTIsNyArNjQ5Niw3IEBAIGFkZF9mb3Jl aWduX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9y ZWwsCiAJICogVXNlIEhBVklORyBxdWFsIGZyb20gZXh0cmEuIEluIGNhc2Ugb2YgY2hpbGQgcGFy dGl0aW9uLCBpdCB3aWxsIGhhdmUKIAkgKiB0cmFuc2xhdGVkIFZhcnMuCiAJICovCi0JaWYgKCFm b3JlaWduX2dyb3VwaW5nX29rKHJvb3QsIGdyb3VwZWRfcmVsLCBleHRyYS0+aGF2aW5nUXVhbCkp CisJaWYgKCFmb3JlaWduX2dyb3VwaW5nX29rKHJvb3QsIGdyb3VwZWRfcmVsLCBleHRyYS0+aGF2 aW5nUXVhbCwgcGFydGlhbCkpCiAJCXJldHVybjsKIAogCS8qCkBAIC03MTA4LDYgKzcxOTIsMzAg QEAgY29tcGxldGVfcGVuZGluZ19yZXF1ZXN0KEFzeW5jUmVxdWVzdCAqYXJlcSkKIAkJCQkJCQkg IFR1cElzTnVsbChhcmVxLT5yZXN1bHQpID8gMC4wIDogMS4wKTsKIH0KIAorLyoKKyAqIEludGVy ZmFjZSB0byBmbWdyIHRvIGNhbGwgY29udmVydGVycworICovCitzdGF0aWMgRGF0dW0KK2NhbGxf Y29udmVydGVyKE9pZCBjb252ZXJ0ZXIsIE9pZCBjb2xsYXRpb24sIERhdHVtIHZhbHVlLCBib29s IGlzbnVsbCwgYm9vbCAqcmVzX2lzbnVsbCkKK3sKKwlMT0NBTF9GQ0lORk8oZmNpbmZvLCAxKTsK KwlGbWdySW5mbwlmbGluZm87CisJRGF0dW0JCXJlc3VsdDsKKworCWZtZ3JfaW5mbyhjb252ZXJ0 ZXIsICZmbGluZm8pOworCisJSW5pdEZ1bmN0aW9uQ2FsbEluZm9EYXRhKCpmY2luZm8sICZmbGlu Zm8sIDEsIGNvbGxhdGlvbiwgTlVMTCwgTlVMTCk7CisKKwlmY2luZm8tPmFyZ3NbMF0udmFsdWUg PSB2YWx1ZTsKKwlmY2luZm8tPmFyZ3NbMF0uaXNudWxsID0gaXNudWxsOworCisJcmVzdWx0ID0g RnVuY3Rpb25DYWxsSW52b2tlKGZjaW5mbyk7CisKKwlpZiAocmVzX2lzbnVsbCkKKwkJKnJlc19p c251bGwgPSBmY2luZm8tPmlzbnVsbDsKKwlyZXR1cm4gcmVzdWx0OworfQorCiAvKgogICogQ3Jl YXRlIGEgdHVwbGUgZnJvbSB0aGUgc3BlY2lmaWVkIHJvdyBvZiB0aGUgUEdyZXN1bHQuCiAgKgpA QCAtNzEyNyw2ICs3MjM1LDcgQEAgbWFrZV90dXBsZV9mcm9tX3Jlc3VsdF9yb3coUEdyZXN1bHQg KnJlcywKIAkJCQkJCSAgIFJlbGF0aW9uIHJlbCwKIAkJCQkJCSAgIEF0dEluTWV0YWRhdGEgKmF0 dGlubWV0YSwKIAkJCQkJCSAgIExpc3QgKnJldHJpZXZlZF9hdHRycywKKwkJCQkJCSAgIExpc3Qg KmNvbnZfbGlzdCwKIAkJCQkJCSAgIEZvcmVpZ25TY2FuU3RhdGUgKmZzc3RhdGUsCiAJCQkJCQkg ICBNZW1vcnlDb250ZXh0IHRlbXBfY29udGV4dCkKIHsKQEAgLTcyMDksNiArNzMxOCwyMCBAQCBt YWtlX3R1cGxlX2Zyb21fcmVzdWx0X3JvdyhQR3Jlc3VsdCAqcmVzLAogCQkJCQkJCQkJCQkgIHZh bHN0ciwKIAkJCQkJCQkJCQkJICBhdHRpbm1ldGEtPmF0dGlvcGFyYW1zW2kgLSAxXSwKIAkJCQkJ CQkJCQkJICBhdHRpbm1ldGEtPmF0dHR5cG1vZHNbaSAtIDFdKTsKKwkJCWlmIChjb252X2xpc3Qg IT0gTklMKQorCQkJeworCQkJCU9pZAkJCWNvbnZlcnRlciA9IGxpc3RfbnRoX29pZChjb252X2xp c3QsIGkgLSAxKTsKKworCQkJCWlmIChjb252ZXJ0ZXIgIT0gSW52YWxpZE9pZCkKKwkJCQl7CisJ CQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgaSk7CisJ CQkJCWJvb2wJCXJlc19pc251bGw7CisKKwkJCQkJdmFsdWVzW2kgLSAxXSA9IGNhbGxfY29udmVy dGVyKGNvbnZlcnRlciwgYXR0LT5hdHRjb2xsYXRpb24sIHZhbHVlc1tpIC0gMV0sIG51bGxzW2kg LSAxXSwgJnJlc19pc251bGwpOworCisJCQkJCW51bGxzW2kgLSAxXSA9IHJlc19pc251bGw7CisJ CQkJfQorCQkJfQogCQl9CiAJCWVsc2UgaWYgKGkgPT0gU2VsZkl0ZW1Qb2ludGVyQXR0cmlidXRl TnVtYmVyKQogCQl7CkBAIC03NDcyLDMgKzc1OTUsNTQgQEAgZ2V0X2JhdGNoX3NpemVfb3B0aW9u KFJlbGF0aW9uIHJlbCkKIAogCXJldHVybiBiYXRjaF9zaXplOwogfQorCisvKgorICogRm9yIFVQ UEVSX1JFTCBidWlsZCBhIGxpc3Qgb2YgY29udmVydGVycywgY29ycmVzcG9uZGluZyB0byB0bGlz dCBlbnRyaWVzLgorICovCitzdGF0aWMgTGlzdCAqCitidWlsZF9jb252X2xpc3QoUmVsT3B0SW5m byAqZm9yZWlnbnJlbCkKK3sKKwlMaXN0CSAgICpjb252X2xpc3QgPSBOSUw7CisJUGdGZHdSZWxh dGlvbkluZm8gKmZwaW5mbyA9IChQZ0Zkd1JlbGF0aW9uSW5mbyAqKSBmb3JlaWducmVsLT5mZHdf cHJpdmF0ZTsKKwlMaXN0Q2VsbCAgICpsYzsKKworCWlmIChJU19VUFBFUl9SRUwoZm9yZWlnbnJl bCkpCisJeworCQkvKiBGb3IgVVBQRVJfUkVMIHRsaXN0IG1hdGNoZXMgZ3JvdXBlZF90bGlzdCAq LworCQlmb3JlYWNoKGxjLCBmcGluZm8tPmdyb3VwZWRfdGxpc3QpCisJCXsKKwkJCVRhcmdldEVu dHJ5ICp0bGVudHJ5ID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdChsYyk7CisJCQlPaWQJCQljb252 ZXJ0ZXJfb2lkID0gSW52YWxpZE9pZDsKKworCQkJaWYgKElzQSh0bGVudHJ5LT5leHByLCBBZ2dy ZWYpKQorCQkJeworCQkJCUFnZ3JlZgkgICAqYWdnID0gKEFnZ3JlZiAqKSB0bGVudHJ5LT5leHBy OworCisJCQkJaWYgKGFnZy0+YWdnc3BsaXQgPT0gQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwgJiYg YWdnLT5hZ2d0cmFuc3R5cGUgPT0gSU5URVJOQUxPSUQpCisJCQkJeworCQkJCQlIZWFwVHVwbGUJ YWdndHVwOworCQkJCQlGb3JtX3BnX2FnZ3JlZ2F0ZSBhZ2dmb3JtOworCisJCQkJCWFnZ3R1cCA9 IFNlYXJjaFN5c0NhY2hlMShBR0dGTk9JRCwgT2JqZWN0SWRHZXREYXR1bShhZ2ctPmFnZ2Zub2lk KSk7CisJCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChhZ2d0dXApKQorCQkJCQkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1bmN0aW9uICV1IiwgYWdnLT5hZ2dmbm9pZCk7 CisKKwkJCQkJYWdnZm9ybSA9IChGb3JtX3BnX2FnZ3JlZ2F0ZSkgR0VUU1RSVUNUKGFnZ3R1cCk7 CisKKwkJCQkJY29udmVydGVyX29pZCA9IGFnZ2Zvcm0tPmFnZ3BhcnRpYWxjb252ZXJ0ZXJmbjsK KwkJCQkJQXNzZXJ0KGNvbnZlcnRlcl9vaWQgIT0gSW52YWxpZE9pZCk7CisKKwkJCQkJUmVsZWFz ZVN5c0NhY2hlKGFnZ3R1cCk7CisJCQkJfQorCQkJfQorCisJCQkvKgorCQkJICogV2UgYXBwZW5k IEludmFsaWRPaWQgdG8gY29udl9saXN0IHRvIHByZXNlcnZlIG9uZS10by1vbmUKKwkJCSAqIG1h cHBpbmcgYmV0d2VlbiB0bGlzdCBhbmQgY29udl9saXN0IG1lbWJlcnMuCisJCQkgKi8KKwkJCWNv bnZfbGlzdCA9IGxhcHBlbmRfb2lkKGNvbnZfbGlzdCwgY29udmVydGVyX29pZCk7CisJCX0KKwl9 CisKKwlyZXR1cm4gY29udl9saXN0OworfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19m ZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdy ZXNfZmR3LnNxbAppbmRleCBlNDAxMTJlNDFkMy4uMzZmZThhNjliY2QgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCisrKyBiL2NvbnRyaWIvcG9z dGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCkBAIC0yNzQ3LDE1ICsyNzQ3LDE1IEBAIFJF U0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW47CiAtLSB0ZXN0IHBhcnRpdGlvbndpc2UgYWdn cmVnYXRlcwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQogCi1DUkVBVEUgVEFCTEUgcGFnZ190YWIgKGEgaW50LCBi IGludCwgYyB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CitDUkVBVEUgVEFCTEUgcGFnZ190 YWIgKGEgaW50LCBiIGludCwgYyB0ZXh0LCBkIG51bWVyaWMpIFBBUlRJVElPTiBCWSBSQU5HRShh KTsKIAogQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiX3AxIChMSUtFIHBhZ2dfdGFiKTsKIENSRUFURSBU QUJMRSBwYWdnX3RhYl9wMiAoTElLRSBwYWdnX3RhYik7CiBDUkVBVEUgVEFCTEUgcGFnZ190YWJf cDMgKExJS0UgcGFnZ190YWIpOwogCi1JTlNFUlQgSU5UTyBwYWdnX3RhYl9wMSBTRUxFQ1QgaSAl IDMwLCBpICUgNTAsIHRvX2NoYXIoaS8zMCwgJ0ZNMDAwMCcpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDMwMDApIGkgV0hFUkUgKGkgJSAzMCkgPCAxMDsKLUlOU0VSVCBJTlRPIHBhZ2dfdGFiX3Ay IFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJykgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVSRSAoaSAlIDMwKSA8IDIwIGFuZCAoaSAlIDMwKSA+ PSAxMDsKLUlOU0VSVCBJTlRPIHBhZ2dfdGFiX3AzIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9f Y2hhcihpLzMwLCAnRk0wMDAwJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVS RSAoaSAlIDMwKSA8IDMwIGFuZCAoaSAlIDMwKSA+PSAyMDsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFi X3AxIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJyksIGkgJSA0 MCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMDAwKSBpIFdIRVJFIChpICUgMzApIDwgMTA7CitJ TlNFUlQgSU5UTyBwYWdnX3RhYl9wMiBTRUxFQ1QgaSAlIDMwLCBpICUgNTAsIHRvX2NoYXIoaS8z MCwgJ0ZNMDAwMCcpLCBpICUgNDAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVS RSAoaSAlIDMwKSA8IDIwIGFuZCAoaSAlIDMwKSA+PSAxMDsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFi X3AzIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJyksIGkgJSA0 MCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMDAwKSBpIFdIRVJFIChpICUgMzApIDwgMzAgYW5k IChpICUgMzApID49IDIwOwogCiAtLSBDcmVhdGUgZm9yZWlnbiBwYXJ0aXRpb25zCiBDUkVBVEUg Rk9SRUlHTiBUQUJMRSBmcGFnZ190YWJfcDEgUEFSVElUSU9OIE9GIHBhZ2dfdGFiIEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEwKSBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAodGFibGVfbmFtZSAn cGFnZ190YWJfcDEnKTsKQEAgLTI3ODksNiArMjc4OSwyNSBAQCBTRUxFQ1QgYSwgY291bnQodDEp IEZST00gcGFnZ190YWIgdDEgR1JPVVAgQlkgYSBIQVZJTkcgYXZnKGIpIDwgMjIgT1JERVIgQlkg MTsKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBiLCBhdmcoYSksIG1heChhKSwgY291bnQo KikgRlJPTSBwYWdnX3RhYiBHUk9VUCBCWSBiIEhBVklORyBzdW0oYSkgPCA3MDAgT1JERVIgQlkg MTsKIAorLS0gSXQncyB1bnNhZmUgdG8gcHVzaCBkb3duIGhhdmluZyBjbGF1c2Ugd2hlbiB0aGVy ZSBhcmUgcGFydGlhbCBhZ2dyZWdhdGVzCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitT RUxFQ1QgYiwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIgSEFWSU5H IHN1bShhKSA8IDcwMCBPUkRFUiBCWSAxOworCistLSBQYXJ0aWFsIGFnZ3JlZ2F0ZXMgYXJlIGZp bmUgdG8gcHVzaCBkb3duIHdpdGhvdXQgaGF2aW5nIGNsYXVzZQorRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKQorU0VMRUNUIGIsIG1heChhKSwgY291bnQoKikgRlJPTSBwYWdnX3RhYiBHUk9V UCBCWSBiIE9SREVSIEJZIDE7CitTRUxFQ1QgYiwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2df dGFiIEdST1VQIEJZIGIgT1JERVIgQlkgMTsKKworLS0gUGFydGlhbCBhZ2dyZWdhdGVzIGFyZSBm aW5lIHRvIHB1c2ggZG93bgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIG1h eChhKSwgY291bnQoKiksIHN1bShkKSBGUk9NIHBhZ2dfdGFiOworU0VMRUNUIG1heChhKSwgY291 bnQoKiksIHN1bShkKSBGUk9NIHBhZ2dfdGFiOworCistLSBTaG91bGRuJ3QgdHJ5IHRvIHB1c2gg ZG93bgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIG1heChhKSwgY291bnQo ZGlzdGluY3QgYikgRlJPTSBwYWdnX3RhYjsKK1NFTEVDVCBtYXgoYSksIGNvdW50KGRpc3RpbmN0 IGIpIEZST00gcGFnZ190YWI7CisKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIGFjY2VzcyByaWdodHMgYW5k IHN1cGVydXNlcgogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19hZ2dyZWdhdGUuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfYWdncmVnYXRlLmMKaW5k ZXggMWY2M2Q4MDgxYjIuLjYzOWVhNGNmOWE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2FnZ3JlZ2F0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfYWdncmVnYXRl LmMKQEAgLTYwLDYgKzYwLDcgQEAgQWdncmVnYXRlQ3JlYXRlKGNvbnN0IGNoYXIgKmFnZ05hbWUs CiAJCQkJTGlzdCAqYWdnY29tYmluZWZuTmFtZSwKIAkJCQlMaXN0ICphZ2dzZXJpYWxmbk5hbWUs CiAJCQkJTGlzdCAqYWdnZGVzZXJpYWxmbk5hbWUsCisJCQkJTGlzdCAqYWdncGFydGlhbGNvbnZl cnRlcmZuTmFtZSwKIAkJCQlMaXN0ICphZ2dtdHJhbnNmbk5hbWUsCiAJCQkJTGlzdCAqYWdnbWlu dnRyYW5zZm5OYW1lLAogCQkJCUxpc3QgKmFnZ21maW5hbGZuTmFtZSwKQEAgLTc0LDcgKzc1LDgg QEAgQWdncmVnYXRlQ3JlYXRlKGNvbnN0IGNoYXIgKmFnZ05hbWUsCiAJCQkJaW50MzIgYWdnbVRy YW5zU3BhY2UsCiAJCQkJY29uc3QgY2hhciAqYWdnaW5pdHZhbCwKIAkJCQljb25zdCBjaGFyICph Z2dtaW5pdHZhbCwKLQkJCQljaGFyIHByb3BhcmFsbGVsKQorCQkJCWNoYXIgcHJvcGFyYWxsZWws CisJCQkJYm9vbCBwYXJ0aWFsUHVzaGRvd25TYWZlKQogewogCVJlbGF0aW9uCWFnZ2Rlc2M7CiAJ SGVhcFR1cGxlCXR1cDsKQEAgLTg4LDYgKzkwLDcgQEAgQWdncmVnYXRlQ3JlYXRlKGNvbnN0IGNo YXIgKmFnZ05hbWUsCiAJT2lkCQkJY29tYmluZWZuID0gSW52YWxpZE9pZDsgLyogY2FuIGJlIG9t aXR0ZWQgKi8KIAlPaWQJCQlzZXJpYWxmbiA9IEludmFsaWRPaWQ7CS8qIGNhbiBiZSBvbWl0dGVk ICovCiAJT2lkCQkJZGVzZXJpYWxmbiA9IEludmFsaWRPaWQ7CS8qIGNhbiBiZSBvbWl0dGVkICov CisJT2lkCQkJcGFydGlhbGNvbnZlcnRlcmZuID0gSW52YWxpZE9pZDsJLyogY2FuIGJlIG9taXR0 ZWQgKi8KIAlPaWQJCQltdHJhbnNmbiA9IEludmFsaWRPaWQ7CS8qIGNhbiBiZSBvbWl0dGVkICov CiAJT2lkCQkJbWludnRyYW5zZm4gPSBJbnZhbGlkT2lkOwkvKiBjYW4gYmUgb21pdHRlZCAqLwog CU9pZAkJCW1maW5hbGZuID0gSW52YWxpZE9pZDsJLyogY2FuIGJlIG9taXR0ZWQgKi8KQEAgLTU2 OSw2ICs1NzIsMjcgQEAgQWdncmVnYXRlQ3JlYXRlKGNvbnN0IGNoYXIgKmFnZ05hbWUsCiAJCQkJ CQkJZm9ybWF0X3R5cGVfYmUoZmluYWx0eXBlKSkpKTsKIAl9CiAKKwkvKgorCSAqIFZhbGlkYXRl IHRoZSBwYXJ0aWFsIGNvbnZlcnRlciwgaWYgcHJlc2VudC4KKwkgKi8KKwlpZiAoYWdncGFydGlh bGNvbnZlcnRlcmZuTmFtZSkKKwl7CisJCWZuQXJnc1swXSA9IGZpbmFsdHlwZTsKKworCQlwYXJ0 aWFsY29udmVydGVyZm4gPSBsb29rdXBfYWdnX2Z1bmN0aW9uKGFnZ3BhcnRpYWxjb252ZXJ0ZXJm bk5hbWUsIDEsCisJCQkJCQkJCQkJCSAgZm5BcmdzLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJCQkg ICZyZXR0eXBlKTsKKworCQlpZiAocmV0dHlwZSAhPSBCWVRFQU9JRCkKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkgZXJy bXNnKCJyZXR1cm4gdHlwZSBvZiBwYXJ0aWFsIHNlcmlhbGl6YXRpb24gZnVuY3Rpb24gJXMgaXMg bm90ICVzIiwKKwkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKGFnZ3NlcmlhbGZuTmFtZSksCisJCQkJ CQkJZm9ybWF0X3R5cGVfYmUoQllURUFPSUQpKSkpOworCisJfQorCisKIAkvKiBoYW5kbGUgc29y dG9wLCBpZiBzdXBwbGllZCAqLwogCWlmIChhZ2dzb3J0b3BOYW1lKQogCXsKQEAgLTY2NCw2ICs2 ODgsNyBAQCBBZ2dyZWdhdGVDcmVhdGUoY29uc3QgY2hhciAqYWdnTmFtZSwKIAl2YWx1ZXNbQW51 bV9wZ19hZ2dyZWdhdGVfYWdnY29tYmluZWZuIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGNvbWJp bmVmbik7CiAJdmFsdWVzW0FudW1fcGdfYWdncmVnYXRlX2FnZ3NlcmlhbGZuIC0gMV0gPSBPYmpl Y3RJZEdldERhdHVtKHNlcmlhbGZuKTsKIAl2YWx1ZXNbQW51bV9wZ19hZ2dyZWdhdGVfYWdnZGVz ZXJpYWxmbiAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShkZXNlcmlhbGZuKTsKKwl2YWx1ZXNbQW51 bV9wZ19hZ2dyZWdhdGVfYWdncGFydGlhbGNvbnZlcnRlcmZuIC0gMV0gPSBPYmplY3RJZEdldERh dHVtKHBhcnRpYWxjb252ZXJ0ZXJmbik7CiAJdmFsdWVzW0FudW1fcGdfYWdncmVnYXRlX2FnZ210 cmFuc2ZuIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKG10cmFuc2ZuKTsKIAl2YWx1ZXNbQW51bV9w Z19hZ2dyZWdhdGVfYWdnbWludnRyYW5zZm4gLSAxXSA9IE9iamVjdElkR2V0RGF0dW0obWludnRy YW5zZm4pOwogCXZhbHVlc1tBbnVtX3BnX2FnZ3JlZ2F0ZV9hZ2dtZmluYWxmbiAtIDFdID0gT2Jq ZWN0SWRHZXREYXR1bShtZmluYWxmbik7CkBAIC02NzYsNiArNzAxLDcgQEAgQWdncmVnYXRlQ3Jl YXRlKGNvbnN0IGNoYXIgKmFnZ05hbWUsCiAJdmFsdWVzW0FudW1fcGdfYWdncmVnYXRlX2FnZ3Ry YW5zc3BhY2UgLSAxXSA9IEludDMyR2V0RGF0dW0oYWdnVHJhbnNTcGFjZSk7CiAJdmFsdWVzW0Fu dW1fcGdfYWdncmVnYXRlX2FnZ210cmFuc3R5cGUgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oYWdn bVRyYW5zVHlwZSk7CiAJdmFsdWVzW0FudW1fcGdfYWdncmVnYXRlX2FnZ210cmFuc3NwYWNlIC0g MV0gPSBJbnQzMkdldERhdHVtKGFnZ21UcmFuc1NwYWNlKTsKKwl2YWx1ZXNbQW51bV9wZ19hZ2dy ZWdhdGVfYWdncGFydGlhbHB1c2hkb3duc2FmZSAtIDFdID0gQm9vbEdldERhdHVtKHBhcnRpYWxQ dXNoZG93blNhZmUpOwogCWlmIChhZ2dpbml0dmFsKQogCQl2YWx1ZXNbQW51bV9wZ19hZ2dyZWdh dGVfYWdnaW5pdHZhbCAtIDFdID0gQ1N0cmluZ0dldFRleHREYXR1bShhZ2dpbml0dmFsKTsKIAll bHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hZ2dyZWdhdGVjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9hZ2dyZWdhdGVjbWRzLmMKaW5kZXggMDQ2Y2YyZGYwOGYuLjNi N2MxNTk3MzE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hZ2dyZWdhdGVjbWRz LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWdncmVnYXRlY21kcy5jCkBAIC02OSwxMSAr NjksMTMgQEAgRGVmaW5lQWdncmVnYXRlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlMaXN0CSAgICpj b21iaW5lZnVuY05hbWUgPSBOSUw7CiAJTGlzdAkgICAqc2VyaWFsZnVuY05hbWUgPSBOSUw7CiAJ TGlzdAkgICAqZGVzZXJpYWxmdW5jTmFtZSA9IE5JTDsKKwlMaXN0CSAgICpwYXJ0aWFsY29udmVy dGVyZnVuY05hbWUgPSBOSUw7CiAJTGlzdAkgICAqbXRyYW5zZnVuY05hbWUgPSBOSUw7CiAJTGlz dAkgICAqbWludnRyYW5zZnVuY05hbWUgPSBOSUw7CiAJTGlzdAkgICAqbWZpbmFsZnVuY05hbWUg PSBOSUw7CiAJYm9vbAkJZmluYWxmdW5jRXh0cmFBcmdzID0gZmFsc2U7CiAJYm9vbAkJbWZpbmFs ZnVuY0V4dHJhQXJncyA9IGZhbHNlOworCWJvb2wJCXBhcnRpYWxQdXNoZG93blNhZmUgPSBmYWxz ZTsKIAljaGFyCQlmaW5hbGZ1bmNNb2RpZnkgPSAwOwogCWNoYXIJCW1maW5hbGZ1bmNNb2RpZnkg PSAwOwogCUxpc3QJICAgKnNvcnRvcGVyYXRvck5hbWUgPSBOSUw7CkBAIC0xNDIsNiArMTQ0LDgg QEAgRGVmaW5lQWdncmVnYXRlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCXNlcmlhbGZ1bmNOYW1l ID0gZGVmR2V0UXVhbGlmaWVkTmFtZShkZWZlbCk7CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ ZGVmbmFtZSwgImRlc2VyaWFsZnVuYyIpID09IDApCiAJCQlkZXNlcmlhbGZ1bmNOYW1lID0gZGVm R2V0UXVhbGlmaWVkTmFtZShkZWZlbCk7CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFt ZSwgInBhcnRpYWxjb252ZXJ0ZXJmdW5jIikgPT0gMCkKKwkJCXBhcnRpYWxjb252ZXJ0ZXJmdW5j TmFtZSA9IGRlZkdldFF1YWxpZmllZE5hbWUoZGVmZWwpOwogCQllbHNlIGlmIChzdHJjbXAoZGVm ZWwtPmRlZm5hbWUsICJtc2Z1bmMiKSA9PSAwKQogCQkJbXRyYW5zZnVuY05hbWUgPSBkZWZHZXRR dWFsaWZpZWROYW1lKGRlZmVsKTsKIAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAi bWludmZ1bmMiKSA9PSAwKQpAQCAtMTg5LDYgKzE5Myw4IEBAIERlZmluZUFnZ3JlZ2F0ZShQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQltaW5pdHZhbCA9IGRlZkdldFN0cmluZyhkZWZlbCk7CiAJCWVs c2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInBhcmFsbGVsIikgPT0gMCkKIAkJCXBhcmFs bGVsID0gZGVmR2V0U3RyaW5nKGRlZmVsKTsKKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZu YW1lLCAicGFydGlhbF9wdXNoZG93bl9zYWZlIikgPT0gMCkKKwkJCXBhcnRpYWxQdXNoZG93blNh ZmUgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKIAkJZWxzZQogCQkJZXJlcG9ydChXQVJOSU5HLAog CQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC0zNzIsNiArMzc4LDE4IEBA IERlZmluZUFnZ3JlZ2F0ZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJIGVycm1zZygibXVzdCBz cGVjaWZ5IGJvdGggb3IgbmVpdGhlciBvZiBzZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRp b24gZnVuY3Rpb25zIikpKTsKIAl9CiAKKwlpZiAocGFydGlhbGNvbnZlcnRlcmZ1bmNOYW1lKQor CXsKKwkJLyoKKwkJICogQ29udmVydGVyIGlzIG9ubHkgbmVlZGVkL2FsbG93ZWQgZm9yIHRyYW5z dHlwZSBJTlRFUk5BTC4KKwkJICovCisJCWlmICh0cmFuc1R5cGVJZCAhPSBJTlRFUk5BTE9JRCkK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GVU5DVElP Tl9ERUZJTklUSU9OKSwKKwkJCQkJIGVycm1zZygicGFydGlhbCBjb252ZXJ0ZXJzIG1heSBiZSBz cGVjaWZpZWQgb25seSB3aGVuIHRoZSBhZ2dyZWdhdGUgdHJhbnNpdGlvbiBkYXRhIHR5cGUgaXMg JXMiLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKElOVEVSTkFMT0lEKSkpKTsKKwl9CisKIAkvKgog CSAqIElmIGEgbW92aW5nLWFnZ3JlZ2F0ZSB0cmFuc3R5cGUgaXMgc3BlY2lmaWVkLCBsb29rIHRo YXQgdXAuICBTYW1lCiAJICogcmVzdHJpY3Rpb25zIGFzIGZvciB0cmFuc3R5cGUuCkBAIC00NTcs NiArNDc1LDggQEAgRGVmaW5lQWdncmVnYXRlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSAg IGNvbWJpbmVmdW5jTmFtZSwgLyogY29tYmluZSBmdW5jdGlvbiBuYW1lICovCiAJCQkJCQkgICBz ZXJpYWxmdW5jTmFtZSwJLyogc2VyaWFsIGZ1bmN0aW9uIG5hbWUgKi8KIAkJCQkJCSAgIGRlc2Vy aWFsZnVuY05hbWUsCS8qIGRlc2VyaWFsIGZ1bmN0aW9uIG5hbWUgKi8KKwkJCQkJCSAgIHBhcnRp YWxjb252ZXJ0ZXJmdW5jTmFtZSwJLyogcGFydGlhbCBjb252ZXJ0ZXIgZnVuY3Rpb24KKwkJCQkJ CQkJCQkJCQkgKiBuYW1lICovCiAJCQkJCQkgICBtdHJhbnNmdW5jTmFtZSwJLyogZndkIHRyYW5z IGZ1bmN0aW9uIG5hbWUgKi8KIAkJCQkJCSAgIG1pbnZ0cmFuc2Z1bmNOYW1lLAkvKiBpbnYgdHJh bnMgZnVuY3Rpb24gbmFtZSAqLwogCQkJCQkJICAgbWZpbmFsZnVuY05hbWUsCS8qIGZpbmFsIGZ1 bmN0aW9uIG5hbWUgKi8KQEAgLTQ3MSw3ICs0OTEsOCBAQCBEZWZpbmVBZ2dyZWdhdGUoUGFyc2VT dGF0ZSAqcHN0YXRlLAogCQkJCQkJICAgbXRyYW5zU3BhY2UsIC8qIHRyYW5zaXRpb24gc3BhY2Ug Ki8KIAkJCQkJCSAgIGluaXR2YWwsIC8qIGluaXRpYWwgY29uZGl0aW9uICovCiAJCQkJCQkgICBt aW5pdHZhbCwJLyogaW5pdGlhbCBjb25kaXRpb24gKi8KLQkJCQkJCSAgIHByb3BhcmFsbGVsKTsJ LyogcGFyYWxsZWwgc2FmZT8gKi8KKwkJCQkJCSAgIHByb3BhcmFsbGVsLCAvKiBwYXJhbGxlbCBz YWZlPyAqLworCQkJCQkJICAgcGFydGlhbFB1c2hkb3duU2FmZSk7CS8qIHBhcnRpYWwgcHVzaGRv d24gc2FmZT8gKi8KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9u dW1lcmljLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jCmluZGV4IDFkZTc0NDg1 NWYzLi5hYzkwMDg2N2U4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVy aWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jCkBAIC01NzcwLDYgKzU3 NzAsNTIgQEAgaW50OF9hdmdfZGVzZXJpYWxpemUoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRV Uk5fUE9JTlRFUihyZXN1bHQpOwogfQogCisvKgorICogaW50OF9zdW1fdG9faW50ZXJuYWxfc2Vy aWFsaXplCisgKgkJQ29udmVydCBpbnQ4IGFyZ3VtZW50IHRvIHNlcmlhbGl6ZWQgaW50ZXJuYWwg cmVwcmVzZW50YXRpb24KKyAqLworRGF0dW0KK2ludDhfc3VtX3RvX2ludGVybmFsX3NlcmlhbGl6 ZShQR19GVU5DVElPTl9BUkdTKQoreworCVBvbHlOdW1BZ2dTdGF0ZSAqc3RhdGUgPSBOVUxMOwor CVN0cmluZ0luZm9EYXRhIGJ1ZjsKKwlieXRlYQkgICAqcmVzdWx0OworCU51bWVyaWNWYXIJdG1w X3ZhcjsKKworCXN0YXRlID0gKFBvbHlOdW1BZ2dTdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihQb2x5 TnVtQWdnU3RhdGUpKTsKKwlzdGF0ZS0+Y2FsY1N1bVgyID0gZmFsc2U7CisKKwlpZiAoIVBHX0FS R0lTTlVMTCgwKSkKKwl7CisjaWZkZWYgSEFWRV9JTlQxMjgKKwkJZG9faW50MTI4X2FjY3VtKHN0 YXRlLCAoaW50MTI4KSBQR19HRVRBUkdfSU5UNjQoMCkpOworI2Vsc2UKKwkJZG9fbnVtZXJpY19h Y2N1bShzdGF0ZSwgaW50NjRfdG9fbnVtZXJpYyhQR19HRVRBUkdfSU5UNjQoMCkpKTsKKyNlbmRp ZgorCX0KKworCWluaXRfdmFyKCZ0bXBfdmFyKTsKKworCXBxX2JlZ2ludHlwc2VuZCgmYnVmKTsK KworCS8qIE4gKi8KKwlwcV9zZW5kaW50NjQoJmJ1Ziwgc3RhdGUtPk4pOworCisJLyogc3VtWCAq LworI2lmZGVmIEhBVkVfSU5UMTI4CisJaW50MTI4X3RvX251bWVyaWN2YXIoc3RhdGUtPnN1bVgs ICZ0bXBfdmFyKTsKKyNlbHNlCisJYWNjdW1fc3VtX2ZpbmFsKCZzdGF0ZS0+c3VtWCwgJnRtcF92 YXIpOworI2VuZGlmCisJbnVtZXJpY3Zhcl9zZXJpYWxpemUoJmJ1ZiwgJnRtcF92YXIpOworCisJ cmVzdWx0ID0gcHFfZW5kdHlwc2VuZCgmYnVmKTsKKworCWZyZWVfdmFyKCZ0bXBfdmFyKTsKKwor CVBHX1JFVFVSTl9CWVRFQV9QKHJlc3VsdCk7Cit9CisKIC8qCiAgKiBJbnZlcnNlIHRyYW5zaXRp b24gZnVuY3Rpb25zIHRvIGdvIHdpdGggdGhlIGFib3ZlLgogICovCkBAIC01OTk1LDYgKzYwNDEs NTYgQEAgbnVtZXJpY19zdW0oUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fTlVNRVJJQyhy ZXN1bHQpOwogfQogCisvKgorICogbnVtZXJpY19zdW1fdG9faW50ZXJuYWxfc2VyaWFsaXplCisg KgkJQ29udmVydCBudW1lcmljIGFyZ3VtZW50IHRvIHNlcmlhbGl6ZWQgaW50ZXJuYWwgcmVwcmVz ZW50YXRpb24KKyAqLworRGF0dW0KK251bWVyaWNfc3VtX3RvX2ludGVybmFsX3NlcmlhbGl6ZShQ R19GVU5DVElPTl9BUkdTKQoreworCU51bWVyaWNBZ2dTdGF0ZSAqc3RhdGUgPSBOVUxMOworCVN0 cmluZ0luZm9EYXRhIGJ1ZjsKKwlieXRlYQkgICAqcmVzdWx0OworCU51bWVyaWNWYXIJdG1wX3Zh cjsKKworCXN0YXRlID0gbWFrZU51bWVyaWNBZ2dTdGF0ZUN1cnJlbnRDb250ZXh0KGZhbHNlKTsK KworCWlmICghUEdfQVJHSVNOVUxMKDApKQorCQlkb19udW1lcmljX2FjY3VtKHN0YXRlLCBQR19H RVRBUkdfTlVNRVJJQygwKSk7CisKKwlpbml0X3ZhcigmdG1wX3Zhcik7CisKKwlwcV9iZWdpbnR5 cHNlbmQoJmJ1Zik7CisKKwkvKiBOICovCisJcHFfc2VuZGludDY0KCZidWYsIHN0YXRlLT5OKTsK KworCS8qIHN1bVggKi8KKwlhY2N1bV9zdW1fZmluYWwoJnN0YXRlLT5zdW1YLCAmdG1wX3Zhcik7 CisJbnVtZXJpY3Zhcl9zZXJpYWxpemUoJmJ1ZiwgJnRtcF92YXIpOworCisJLyogbWF4U2NhbGUg Ki8KKwlwcV9zZW5kaW50MzIoJmJ1Ziwgc3RhdGUtPm1heFNjYWxlKTsKKworCS8qIG1heFNjYWxl Q291bnQgKi8KKwlwcV9zZW5kaW50NjQoJmJ1Ziwgc3RhdGUtPm1heFNjYWxlQ291bnQpOworCisJ LyogTmFOY291bnQgKi8KKwlwcV9zZW5kaW50NjQoJmJ1Ziwgc3RhdGUtPk5hTmNvdW50KTsKKwor CS8qIHBJbmZjb3VudCAqLworCXBxX3NlbmRpbnQ2NCgmYnVmLCBzdGF0ZS0+cEluZmNvdW50KTsK KworCS8qIG5JbmZjb3VudCAqLworCXBxX3NlbmRpbnQ2NCgmYnVmLCBzdGF0ZS0+bkluZmNvdW50 KTsKKworCXJlc3VsdCA9IHBxX2VuZHR5cHNlbmQoJmJ1Zik7CisKKwlmcmVlX3ZhcigmdG1wX3Zh cik7CisKKwlQR19SRVRVUk5fQllURUFfUChyZXN1bHQpOworfQorCiAvKgogICogV29ya2hvcnNl IHJvdXRpbmUgZm9yIHRoZSBzdGFuZGFyZCBkZXZpYW5jZSBhbmQgdmFyaWFuY2UKICAqIGFnZ3Jl Z2F0ZXMuICdzdGF0ZScgaXMgYWdncmVnYXRlJ3MgdHJhbnNpdGlvbiBzdGF0ZS4KZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j CmluZGV4IDdlOTgzNzFkMjUzLi44NzdmZGU4MDlmMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0xNDA3Niwx MSArMTQwNzYsMTMgQEAgZHVtcEFnZyhBcmNoaXZlICpmb3V0LCBjb25zdCBBZ2dJbmZvICphZ2dp bmZvKQogCWNvbnN0IGNoYXIgKmFnZ2NvbWJpbmVmbjsKIAljb25zdCBjaGFyICphZ2dzZXJpYWxm bjsKIAljb25zdCBjaGFyICphZ2dkZXNlcmlhbGZuOworCWNvbnN0IGNoYXIgKmFnZ3BhcnRpYWxj b252ZXJ0ZXJmbjsKIAljb25zdCBjaGFyICphZ2dtdHJhbnNmbjsKIAljb25zdCBjaGFyICphZ2dt aW52dHJhbnNmbjsKIAljb25zdCBjaGFyICphZ2dtZmluYWxmbjsKIAlib29sCQlhZ2dmaW5hbGV4 dHJhOwogCWJvb2wJCWFnZ21maW5hbGV4dHJhOworCWJvb2wJCWFnZ3BhcnRpYWxwdXNoZG93bnNh ZmU7CiAJY2hhcgkJYWdnZmluYWxtb2RpZnk7CiAJY2hhcgkJYWdnbWZpbmFsbW9kaWZ5OwogCWNv bnN0IGNoYXIgKmFnZ3NvcnRvcDsKQEAgLTE0MTY1LDExICsxNDE2NywxOSBAQCBkdW1wQWdnKEFy Y2hpdmUgKmZvdXQsIGNvbnN0IEFnZ0luZm8gKmFnZ2luZm8pCiAJaWYgKGZvdXQtPnJlbW90ZVZl cnNpb24gPj0gMTEwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkg ImFnZ2ZpbmFsbW9kaWZ5LFxuIgotCQkJCQkJCSAiYWdnbWZpbmFsbW9kaWZ5XG4iKTsKKwkJCQkJ CQkgImFnZ21maW5hbG1vZGlmeSxcbiIpOwogCWVsc2UKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksCiAJCQkJCQkJICInMCcgQVMgYWdnZmluYWxtb2RpZnksXG4iCi0JCQkJCQkJICInMCcg QVMgYWdnbWZpbmFsbW9kaWZ5XG4iKTsKKwkJCQkJCQkgIicwJyBBUyBhZ2dtZmluYWxtb2RpZnks XG4iKTsKKwlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCisJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiYWdncGFydGlhbGNvbnZlcnRlcmZuLFxuIgorCQkJ CQkJCSAiYWdncGFydGlhbHB1c2hkb3duc2FmZVxuIik7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIictJyBBUyBhZ2dwYXJ0aWFsY29udmVydGVyZm4sXG4i CisJCQkJCQkJICJmYWxzZSBhcyBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlXG4iKTsKIAogCWFwcGVu ZFBRRXhwQnVmZmVyKHF1ZXJ5LAogCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfYWdncmVnYXRl IGEsIHBnX2NhdGFsb2cucGdfcHJvYyBwICIKQEAgLTE0MTg3LDYgKzE0MTk3LDggQEAgZHVtcEFn ZyhBcmNoaXZlICpmb3V0LCBjb25zdCBBZ2dJbmZvICphZ2dpbmZvKQogCWFnZ2NvbWJpbmVmbiA9 IFBRZ2V0dmFsdWUocmVzLCAwLCBQUWZudW1iZXIocmVzLCAiYWdnY29tYmluZWZuIikpOwogCWFn Z3NlcmlhbGZuID0gUFFnZXR2YWx1ZShyZXMsIDAsIFBRZm51bWJlcihyZXMsICJhZ2dzZXJpYWxm biIpKTsKIAlhZ2dkZXNlcmlhbGZuID0gUFFnZXR2YWx1ZShyZXMsIDAsIFBRZm51bWJlcihyZXMs ICJhZ2dkZXNlcmlhbGZuIikpOworCWFnZ3BhcnRpYWxjb252ZXJ0ZXJmbiA9IFBRZ2V0dmFsdWUo cmVzLCAwLCBQUWZudW1iZXIocmVzLCAiYWdncGFydGlhbGNvbnZlcnRlcmZuIikpOworCWFnZ3Bh cnRpYWxwdXNoZG93bnNhZmUgPSAoUFFnZXR2YWx1ZShyZXMsIDAsIFBRZm51bWJlcihyZXMsICJh Z2dwYXJ0aWFscHVzaGRvd25zYWZlIikpWzBdID09ICd0Jyk7CiAJYWdnbXRyYW5zZm4gPSBQUWdl dHZhbHVlKHJlcywgMCwgUFFmbnVtYmVyKHJlcywgImFnZ210cmFuc2ZuIikpOwogCWFnZ21pbnZ0 cmFuc2ZuID0gUFFnZXR2YWx1ZShyZXMsIDAsIFBRZm51bWJlcihyZXMsICJhZ2dtaW52dHJhbnNm biIpKTsKIAlhZ2dtZmluYWxmbiA9IFBRZ2V0dmFsdWUocmVzLCAwLCBQUWZudW1iZXIocmVzLCAi YWdnbWZpbmFsZm4iKSk7CkBAIC0xNDI4MSw2ICsxNDI5MywxMSBAQCBkdW1wQWdnKEFyY2hpdmUg KmZvdXQsIGNvbnN0IEFnZ0luZm8gKmFnZ2luZm8pCiAJaWYgKHN0cmNtcChhZ2dkZXNlcmlhbGZu LCAiLSIpICE9IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyKGRldGFpbHMsICIsXG4gICAgREVTRVJJ QUxGVU5DID0gJXMiLCBhZ2dkZXNlcmlhbGZuKTsKIAorCWlmIChzdHJjbXAoYWdncGFydGlhbGNv bnZlcnRlcmZuLCAiLSIpICE9IDApCisJCWFwcGVuZFBRRXhwQnVmZmVyKGRldGFpbHMsICIsXG4g ICAgUEFSVElBTENPTlZFUlRFUkZVTkMgPSAlcyIsIGFnZ3BhcnRpYWxjb252ZXJ0ZXJmbik7CisJ aWYgKGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGRldGFp bHMsICIsXG4gICAgUEFSVElBTF9QVVNIRE9XTl9TQUZFIik7CisKIAlpZiAoc3RyY21wKGFnZ210 cmFuc2ZuLCAiLSIpICE9IDApCiAJewogCQlhcHBlbmRQUUV4cEJ1ZmZlcihkZXRhaWxzLCAiLFxu ICAgIE1TRlVOQyA9ICVzLFxuICAgIE1JTlZGVU5DID0gJXMsXG4gICAgTVNUWVBFID0gJXMiLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuZGF0IGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuZGF0CmluZGV4IGZjNmQzYmZkOTQ1Li42MWM0ZDgx MmIzNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuZGF0Cisr KyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYWdncmVnYXRlLmRhdApAQCAtNTYsMjYgKzU2LDI3 IEBACiAgIGFnZ3NlcmlhbGZuID0+ICdpbnQ4X2F2Z19zZXJpYWxpemUnLCBhZ2dkZXNlcmlhbGZu ID0+ICdpbnQ4X2F2Z19kZXNlcmlhbGl6ZScsCiAgIGFnZ210cmFuc2ZuID0+ICdpbnQ4X2F2Z19h Y2N1bScsIGFnZ21pbnZ0cmFuc2ZuID0+ICdpbnQ4X2F2Z19hY2N1bV9pbnYnLAogICBhZ2dtZmlu YWxmbiA9PiAnbnVtZXJpY19wb2x5X3N1bScsIGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJuYWwnLAot ICBhZ2d0cmFuc3NwYWNlID0+ICc0OCcsIGFnZ210cmFuc3R5cGUgPT4gJ2ludGVybmFsJywgYWdn bXRyYW5zc3BhY2UgPT4gJzQ4JyB9LAorICBhZ2d0cmFuc3NwYWNlID0+ICc0OCcsIGFnZ210cmFu c3R5cGUgPT4gJ2ludGVybmFsJywgYWdnbXRyYW5zc3BhY2UgPT4gJzQ4JywKKyAgYWdncGFydGlh bGNvbnZlcnRlcmZuID0+ICdpbnQ4X3N1bV90b19pbnRlcm5hbF9zZXJpYWxpemUnLCBhZ2dwYXJ0 aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnc3VtKGludDQpJywgYWdn dHJhbnNmbiA9PiAnaW50NF9zdW0nLCBhZ2djb21iaW5lZm4gPT4gJ2ludDhwbCcsCiAgIGFnZ210 cmFuc2ZuID0+ICdpbnQ0X2F2Z19hY2N1bScsIGFnZ21pbnZ0cmFuc2ZuID0+ICdpbnQ0X2F2Z19h Y2N1bV9pbnYnLAogICBhZ2dtZmluYWxmbiA9PiAnaW50MmludDRfc3VtJywgYWdndHJhbnN0eXBl ID0+ICdpbnQ4JywKLSAgYWdnbXRyYW5zdHlwZSA9PiAnX2ludDgnLCBhZ2dtaW5pdHZhbCA9PiAn ezAsMH0nIH0sCisgIGFnZ210cmFuc3R5cGUgPT4gJ19pbnQ4JywgYWdnbWluaXR2YWwgPT4gJ3sw LDB9JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ3N1 bShpbnQyKScsIGFnZ3RyYW5zZm4gPT4gJ2ludDJfc3VtJywgYWdnY29tYmluZWZuID0+ICdpbnQ4 cGwnLAogICBhZ2dtdHJhbnNmbiA9PiAnaW50Ml9hdmdfYWNjdW0nLCBhZ2dtaW52dHJhbnNmbiA9 PiAnaW50Ml9hdmdfYWNjdW1faW52JywKICAgYWdnbWZpbmFsZm4gPT4gJ2ludDJpbnQ0X3N1bScs IGFnZ3RyYW5zdHlwZSA9PiAnaW50OCcsCi0gIGFnZ210cmFuc3R5cGUgPT4gJ19pbnQ4JywgYWdn bWluaXR2YWwgPT4gJ3swLDB9JyB9LAorICBhZ2dtdHJhbnN0eXBlID0+ICdfaW50OCcsIGFnZ21p bml0dmFsID0+ICd7MCwwfScsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFn Z2Zub2lkID0+ICdzdW0oZmxvYXQ0KScsIGFnZ3RyYW5zZm4gPT4gJ2Zsb2F0NHBsJywKLSAgYWdn Y29tYmluZWZuID0+ICdmbG9hdDRwbCcsIGFnZ3RyYW5zdHlwZSA9PiAnZmxvYXQ0JyB9LAorICBh Z2djb21iaW5lZm4gPT4gJ2Zsb2F0NHBsJywgYWdndHJhbnN0eXBlID0+ICdmbG9hdDQnLCBhZ2dw YXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnc3VtKGZsb2F0OCkn LCBhZ2d0cmFuc2ZuID0+ICdmbG9hdDhwbCcsCi0gIGFnZ2NvbWJpbmVmbiA9PiAnZmxvYXQ4cGwn LCBhZ2d0cmFuc3R5cGUgPT4gJ2Zsb2F0OCcgfSwKKyAgYWdnY29tYmluZWZuID0+ICdmbG9hdDhw bCcsIGFnZ3RyYW5zdHlwZSA9PiAnZmxvYXQ4JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAn dCcgfSwKIHsgYWdnZm5vaWQgPT4gJ3N1bShtb25leSknLCBhZ2d0cmFuc2ZuID0+ICdjYXNoX3Bs JywgYWdnY29tYmluZWZuID0+ICdjYXNoX3BsJywKICAgYWdnbXRyYW5zZm4gPT4gJ2Nhc2hfcGwn LCBhZ2dtaW52dHJhbnNmbiA9PiAnY2FzaF9taScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnbW9uZXkn LCBhZ2dtdHJhbnN0eXBlID0+ICdtb25leScgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdtb25leScs IGFnZ210cmFuc3R5cGUgPT4gJ21vbmV5JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcg fSwKIHsgYWdnZm5vaWQgPT4gJ3N1bShpbnRlcnZhbCknLCBhZ2d0cmFuc2ZuID0+ICdpbnRlcnZh bF9wbCcsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnaW50ZXJ2YWxfcGwnLCBhZ2dtdHJhbnNmbiA9PiAn aW50ZXJ2YWxfcGwnLAogICBhZ2dtaW52dHJhbnNmbiA9PiAnaW50ZXJ2YWxfbWknLCBhZ2d0cmFu c3R5cGUgPT4gJ2ludGVydmFsJywKLSAgYWdnbXRyYW5zdHlwZSA9PiAnaW50ZXJ2YWwnIH0sCisg IGFnZ210cmFuc3R5cGUgPT4gJ2ludGVydmFsJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAn dCcgfSwKIHsgYWdnZm5vaWQgPT4gJ3N1bShudW1lcmljKScsIGFnZ3RyYW5zZm4gPT4gJ251bWVy aWNfYXZnX2FjY3VtJywKICAgYWdnZmluYWxmbiA9PiAnbnVtZXJpY19zdW0nLCBhZ2djb21iaW5l Zm4gPT4gJ251bWVyaWNfYXZnX2NvbWJpbmUnLAogICBhZ2dzZXJpYWxmbiA9PiAnbnVtZXJpY19h dmdfc2VyaWFsaXplJywKQEAgLTgzLDE0NiArODQsMTQ5IEBACiAgIGFnZ210cmFuc2ZuID0+ICdu dW1lcmljX2F2Z19hY2N1bScsIGFnZ21pbnZ0cmFuc2ZuID0+ICdudW1lcmljX2FjY3VtX2ludics CiAgIGFnZ21maW5hbGZuID0+ICdudW1lcmljX3N1bScsIGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJu YWwnLAogICBhZ2d0cmFuc3NwYWNlID0+ICcxMjgnLCBhZ2dtdHJhbnN0eXBlID0+ICdpbnRlcm5h bCcsCi0gIGFnZ210cmFuc3NwYWNlID0+ICcxMjgnIH0sCisgIGFnZ210cmFuc3NwYWNlID0+ICcx MjgnLCBhZ2dwYXJ0aWFsY29udmVydGVyZm4gPT4gJ251bWVyaWNfc3VtX3RvX2ludGVybmFsX3Nl cmlhbGl6ZScsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiAKICMgbWF4CiB7IGFn Z2Zub2lkID0+ICdtYXgoaW50OCknLCBhZ2d0cmFuc2ZuID0+ICdpbnQ4bGFyZ2VyJywKICAgYWdn Y29tYmluZWZuID0+ICdpbnQ4bGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KGludDgsaW50OCknLAot ICBhZ2d0cmFuc3R5cGUgPT4gJ2ludDgnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnaW50OCcsIGFn Z3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgoaW50NCkn LCBhZ2d0cmFuc2ZuID0+ICdpbnQ0bGFyZ2VyJywKICAgYWdnY29tYmluZWZuID0+ICdpbnQ0bGFy Z2VyJywgYWdnc29ydG9wID0+ICc+KGludDQsaW50NCknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2lu dDQnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnaW50NCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUg PT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgoaW50MiknLCBhZ2d0cmFuc2ZuID0+ICdpbnQy bGFyZ2VyJywKICAgYWdnY29tYmluZWZuID0+ICdpbnQybGFyZ2VyJywgYWdnc29ydG9wID0+ICc+ KGludDIsaW50MiknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2ludDInIH0sCisgIGFnZ3RyYW5zdHlw ZSA9PiAnaW50MicsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lk ID0+ICdtYXgob2lkKScsIGFnZ3RyYW5zZm4gPT4gJ29pZGxhcmdlcicsCiAgIGFnZ2NvbWJpbmVm biA9PiAnb2lkbGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KG9pZCxvaWQpJywKLSAgYWdndHJhbnN0 eXBlID0+ICdvaWQnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnb2lkJywgYWdncGFydGlhbHB1c2hk b3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21heChmbG9hdDQpJywgYWdndHJhbnNm biA9PiAnZmxvYXQ0bGFyZ2VyJywKICAgYWdnY29tYmluZWZuID0+ICdmbG9hdDRsYXJnZXInLCBh Z2dzb3J0b3AgPT4gJz4oZmxvYXQ0LGZsb2F0NCknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2Zsb2F0 NCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdmbG9hdDQnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZl ID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWF4KGZsb2F0OCknLCBhZ2d0cmFuc2ZuID0+ICdm bG9hdDhsYXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2Zsb2F0OGxhcmdlcicsIGFnZ3NvcnRv cCA9PiAnPihmbG9hdDgsZmxvYXQ4KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnZmxvYXQ4JyB9LAor ICBhZ2d0cmFuc3R5cGUgPT4gJ2Zsb2F0OCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3Qn IH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgoZGF0ZSknLCBhZ2d0cmFuc2ZuID0+ICdkYXRlX2xhcmdl cicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnZGF0ZV9sYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4oZGF0 ZSxkYXRlKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnZGF0ZScgfSwKKyAgYWdndHJhbnN0eXBlID0+ ICdkYXRlJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4g J21heCh0aW1lKScsIGFnZ3RyYW5zZm4gPT4gJ3RpbWVfbGFyZ2VyJywKICAgYWdnY29tYmluZWZu ID0+ICd0aW1lX2xhcmdlcicsIGFnZ3NvcnRvcCA9PiAnPih0aW1lLHRpbWUpJywKLSAgYWdndHJh bnN0eXBlID0+ICd0aW1lJyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ3RpbWUnLCBhZ2dwYXJ0aWFs cHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWF4KHRpbWV0eiknLCBhZ2d0 cmFuc2ZuID0+ICd0aW1ldHpfbGFyZ2VyJywKICAgYWdnY29tYmluZWZuID0+ICd0aW1ldHpfbGFy Z2VyJywgYWdnc29ydG9wID0+ICc+KHRpbWV0eix0aW1ldHopJywKLSAgYWdndHJhbnN0eXBlID0+ ICd0aW1ldHonIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAndGltZXR6JywgYWdncGFydGlhbHB1c2hk b3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21heChtb25leSknLCBhZ2d0cmFuc2Zu ID0+ICdjYXNobGFyZ2VyJywKICAgYWdnY29tYmluZWZuID0+ICdjYXNobGFyZ2VyJywgYWdnc29y dG9wID0+ICc+KG1vbmV5LG1vbmV5KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnbW9uZXknIH0sCisg IGFnZ3RyYW5zdHlwZSA9PiAnbW9uZXknLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9 LAogeyBhZ2dmbm9pZCA9PiAnbWF4KHRpbWVzdGFtcCknLCBhZ2d0cmFuc2ZuID0+ICd0aW1lc3Rh bXBfbGFyZ2VyJywKICAgYWdnY29tYmluZWZuID0+ICd0aW1lc3RhbXBfbGFyZ2VyJywgYWdnc29y dG9wID0+ICc+KHRpbWVzdGFtcCx0aW1lc3RhbXApJywKLSAgYWdndHJhbnN0eXBlID0+ICd0aW1l c3RhbXAnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAndGltZXN0YW1wJywgYWdncGFydGlhbHB1c2hk b3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21heCh0aW1lc3RhbXB0eiknLCBhZ2d0 cmFuc2ZuID0+ICd0aW1lc3RhbXB0el9sYXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ3RpbWVz dGFtcHR6X2xhcmdlcicsCiAgIGFnZ3NvcnRvcCA9PiAnPih0aW1lc3RhbXB0eix0aW1lc3RhbXB0 eiknLCBhZ2d0cmFuc3R5cGUgPT4gJ3RpbWVzdGFtcHR6JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWF4 KGludGVydmFsKScsIGFnZ3RyYW5zZm4gPT4gJ2ludGVydmFsX2xhcmdlcicsCiAgIGFnZ2NvbWJp bmVmbiA9PiAnaW50ZXJ2YWxfbGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KGludGVydmFsLGludGVy dmFsKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJ2YWwnIH0sCisgIGFnZ3RyYW5zdHlwZSA9 PiAnaW50ZXJ2YWwnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9p ZCA9PiAnbWF4KHRleHQpJywgYWdndHJhbnNmbiA9PiAndGV4dF9sYXJnZXInLAogICBhZ2djb21i aW5lZm4gPT4gJ3RleHRfbGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KHRleHQsdGV4dCknLAotICBh Z2d0cmFuc3R5cGUgPT4gJ3RleHQnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAndGV4dCcsIGFnZ3Bh cnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgobnVtZXJpYykn LCBhZ2d0cmFuc2ZuID0+ICdudW1lcmljX2xhcmdlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnbnVt ZXJpY19sYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4obnVtZXJpYyxudW1lcmljKScsCi0gIGFnZ3Ry YW5zdHlwZSA9PiAnbnVtZXJpYycgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdudW1lcmljJywgYWdn cGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21heChhbnlhcnJh eSknLCBhZ2d0cmFuc2ZuID0+ICdhcnJheV9sYXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2Fy cmF5X2xhcmdlcicsIGFnZ3NvcnRvcCA9PiAnPihhbnlhcnJheSxhbnlhcnJheSknLAotICBhZ2d0 cmFuc3R5cGUgPT4gJ2FueWFycmF5JyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2FueWFycmF5Jywg YWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21heChicGNo YXIpJywgYWdndHJhbnNmbiA9PiAnYnBjaGFyX2xhcmdlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAn YnBjaGFyX2xhcmdlcicsIGFnZ3NvcnRvcCA9PiAnPihicGNoYXIsYnBjaGFyKScsCi0gIGFnZ3Ry YW5zdHlwZSA9PiAnYnBjaGFyJyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2JwY2hhcicsIGFnZ3Bh cnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgodGlkKScsIGFn Z3RyYW5zZm4gPT4gJ3RpZGxhcmdlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAndGlkbGFyZ2VyJywg YWdnc29ydG9wID0+ICc+KHRpZCx0aWQpJywKLSAgYWdndHJhbnN0eXBlID0+ICd0aWQnIH0sCisg IGFnZ3RyYW5zdHlwZSA9PiAndGlkJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwK IHsgYWdnZm5vaWQgPT4gJ21heChhbnllbnVtKScsIGFnZ3RyYW5zZm4gPT4gJ2VudW1fbGFyZ2Vy JywKICAgYWdnY29tYmluZWZuID0+ICdlbnVtX2xhcmdlcicsIGFnZ3NvcnRvcCA9PiAnPihhbnll bnVtLGFueWVudW0pJywKLSAgYWdndHJhbnN0eXBlID0+ICdhbnllbnVtJyB9LAorICBhZ2d0cmFu c3R5cGUgPT4gJ2FueWVudW0nLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBh Z2dmbm9pZCA9PiAnbWF4KGluZXQpJywgYWdndHJhbnNmbiA9PiAnbmV0d29ya19sYXJnZXInLAog ICBhZ2djb21iaW5lZm4gPT4gJ25ldHdvcmtfbGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KGluZXQs aW5ldCknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2luZXQnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAn aW5ldCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdt YXgocGdfbHNuKScsIGFnZ3RyYW5zZm4gPT4gJ3BnX2xzbl9sYXJnZXInLAogICBhZ2djb21iaW5l Zm4gPT4gJ3BnX2xzbl9sYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4ocGdfbHNuLHBnX2xzbiknLAot ICBhZ2d0cmFuc3R5cGUgPT4gJ3BnX2xzbicgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdwZ19sc24n LCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogCiAjIG1pbgogeyBhZ2dmbm9pZCA9 PiAnbWluKGludDgpJywgYWdndHJhbnNmbiA9PiAnaW50OHNtYWxsZXInLAogICBhZ2djb21iaW5l Zm4gPT4gJ2ludDhzbWFsbGVyJywgYWdnc29ydG9wID0+ICc8KGludDgsaW50OCknLAotICBhZ2d0 cmFuc3R5cGUgPT4gJ2ludDgnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnaW50OCcsIGFnZ3BhcnRp YWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4oaW50NCknLCBhZ2d0 cmFuc2ZuID0+ICdpbnQ0c21hbGxlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnaW50NHNtYWxsZXIn LCBhZ2dzb3J0b3AgPT4gJzwoaW50NCxpbnQ0KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnaW50NCcg fSwKKyAgYWdndHJhbnN0eXBlID0+ICdpbnQ0JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAn dCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21pbihpbnQyKScsIGFnZ3RyYW5zZm4gPT4gJ2ludDJzbWFs bGVyJywKICAgYWdnY29tYmluZWZuID0+ICdpbnQyc21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPChp bnQyLGludDIpJywKLSAgYWdndHJhbnN0eXBlID0+ICdpbnQyJyB9LAorICBhZ2d0cmFuc3R5cGUg PT4gJ2ludDInLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9 PiAnbWluKG9pZCknLCBhZ2d0cmFuc2ZuID0+ICdvaWRzbWFsbGVyJywKICAgYWdnY29tYmluZWZu ID0+ICdvaWRzbWFsbGVyJywgYWdnc29ydG9wID0+ICc8KG9pZCxvaWQpJywKLSAgYWdndHJhbnN0 eXBlID0+ICdvaWQnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnb2lkJywgYWdncGFydGlhbHB1c2hk b3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21pbihmbG9hdDQpJywgYWdndHJhbnNm biA9PiAnZmxvYXQ0c21hbGxlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnZmxvYXQ0c21hbGxlcics IGFnZ3NvcnRvcCA9PiAnPChmbG9hdDQsZmxvYXQ0KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnZmxv YXQ0JyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2Zsb2F0NCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNh ZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4oZmxvYXQ4KScsIGFnZ3RyYW5zZm4gPT4g J2Zsb2F0OHNtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2Zsb2F0OHNtYWxsZXInLCBhZ2dz b3J0b3AgPT4gJzwoZmxvYXQ4LGZsb2F0OCknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2Zsb2F0OCcg fSwKKyAgYWdndHJhbnN0eXBlID0+ICdmbG9hdDgnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKGRhdGUpJywgYWdndHJhbnNmbiA9PiAnZGF0ZV9z bWFsbGVyJywKICAgYWdnY29tYmluZWZuID0+ICdkYXRlX3NtYWxsZXInLCBhZ2dzb3J0b3AgPT4g JzwoZGF0ZSxkYXRlKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnZGF0ZScgfSwKKyAgYWdndHJhbnN0 eXBlID0+ICdkYXRlJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5v aWQgPT4gJ21pbih0aW1lKScsIGFnZ3RyYW5zZm4gPT4gJ3RpbWVfc21hbGxlcicsCiAgIGFnZ2Nv bWJpbmVmbiA9PiAndGltZV9zbWFsbGVyJywgYWdnc29ydG9wID0+ICc8KHRpbWUsdGltZSknLAot ICBhZ2d0cmFuc3R5cGUgPT4gJ3RpbWUnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAndGltZScsIGFn Z3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4odGltZXR6 KScsIGFnZ3RyYW5zZm4gPT4gJ3RpbWV0el9zbWFsbGVyJywKICAgYWdnY29tYmluZWZuID0+ICd0 aW1ldHpfc21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPCh0aW1ldHosdGltZXR6KScsCi0gIGFnZ3Ry YW5zdHlwZSA9PiAndGltZXR6JyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ3RpbWV0eicsIGFnZ3Bh cnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4obW9uZXkpJywg YWdndHJhbnNmbiA9PiAnY2FzaHNtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2Nhc2hzbWFs bGVyJywgYWdnc29ydG9wID0+ICc8KG1vbmV5LG1vbmV5KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAn bW9uZXknIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnbW9uZXknLCBhZ2dwYXJ0aWFscHVzaGRvd25z YWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKHRpbWVzdGFtcCknLCBhZ2d0cmFuc2Zu ID0+ICd0aW1lc3RhbXBfc21hbGxlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAndGltZXN0YW1wX3Nt YWxsZXInLCBhZ2dzb3J0b3AgPT4gJzwodGltZXN0YW1wLHRpbWVzdGFtcCknLAotICBhZ2d0cmFu c3R5cGUgPT4gJ3RpbWVzdGFtcCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ICd0aW1lc3RhbXAnLCBh Z2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKHRpbWVz dGFtcHR6KScsIGFnZ3RyYW5zZm4gPT4gJ3RpbWVzdGFtcHR6X3NtYWxsZXInLAogICBhZ2djb21i aW5lZm4gPT4gJ3RpbWVzdGFtcHR6X3NtYWxsZXInLAotICBhZ2dzb3J0b3AgPT4gJzwodGltZXN0 YW1wdHosdGltZXN0YW1wdHopJywgYWdndHJhbnN0eXBlID0+ICd0aW1lc3RhbXB0eicgfSwKKyAg YWdnc29ydG9wID0+ICc8KHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6KScsIGFnZ3RyYW5zdHlwZSA9 PiAndGltZXN0YW1wdHonLAorICBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBh Z2dmbm9pZCA9PiAnbWluKGludGVydmFsKScsIGFnZ3RyYW5zZm4gPT4gJ2ludGVydmFsX3NtYWxs ZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2ludGVydmFsX3NtYWxsZXInLCBhZ2dzb3J0b3AgPT4g JzwoaW50ZXJ2YWwsaW50ZXJ2YWwpJywKLSAgYWdndHJhbnN0eXBlID0+ICdpbnRlcnZhbCcgfSwK KyAgYWdndHJhbnN0eXBlID0+ICdpbnRlcnZhbCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4g J3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4odGV4dCknLCBhZ2d0cmFuc2ZuID0+ICd0ZXh0X3Nt YWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ3RleHRfc21hbGxlcicsIGFnZ3NvcnRvcCA9PiAn PCh0ZXh0LHRleHQpJywKLSAgYWdndHJhbnN0eXBlID0+ICd0ZXh0JyB9LAorICBhZ2d0cmFuc3R5 cGUgPT4gJ3RleHQnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9p ZCA9PiAnbWluKG51bWVyaWMpJywgYWdndHJhbnNmbiA9PiAnbnVtZXJpY19zbWFsbGVyJywKICAg YWdnY29tYmluZWZuID0+ICdudW1lcmljX3NtYWxsZXInLCBhZ2dzb3J0b3AgPT4gJzwobnVtZXJp YyxudW1lcmljKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnbnVtZXJpYycgfSwKKyAgYWdndHJhbnN0 eXBlID0+ICdudW1lcmljJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdn Zm5vaWQgPT4gJ21pbihhbnlhcnJheSknLCBhZ2d0cmFuc2ZuID0+ICdhcnJheV9zbWFsbGVyJywK ICAgYWdnY29tYmluZWZuID0+ICdhcnJheV9zbWFsbGVyJywgYWdnc29ydG9wID0+ICc8KGFueWFy cmF5LGFueWFycmF5KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnYW55YXJyYXknIH0sCisgIGFnZ3Ry YW5zdHlwZSA9PiAnYW55YXJyYXknLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAog eyBhZ2dmbm9pZCA9PiAnbWluKGJwY2hhciknLCBhZ2d0cmFuc2ZuID0+ICdicGNoYXJfc21hbGxl cicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnYnBjaGFyX3NtYWxsZXInLCBhZ2dzb3J0b3AgPT4gJzwo YnBjaGFyLGJwY2hhciknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2JwY2hhcicgfSwKKyAgYWdndHJh bnN0eXBlID0+ICdicGNoYXInLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBh Z2dmbm9pZCA9PiAnbWluKHRpZCknLCBhZ2d0cmFuc2ZuID0+ICd0aWRzbWFsbGVyJywKICAgYWdn Y29tYmluZWZuID0+ICd0aWRzbWFsbGVyJywgYWdnc29ydG9wID0+ICc8KHRpZCx0aWQpJywKLSAg YWdndHJhbnN0eXBlID0+ICd0aWQnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAndGlkJywgYWdncGFy dGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21pbihhbnllbnVtKScs IGFnZ3RyYW5zZm4gPT4gJ2VudW1fc21hbGxlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnZW51bV9z bWFsbGVyJywgYWdnc29ydG9wID0+ICc8KGFueWVudW0sYW55ZW51bSknLAotICBhZ2d0cmFuc3R5 cGUgPT4gJ2FueWVudW0nIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnYW55ZW51bScsIGFnZ3BhcnRp YWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4oaW5ldCknLCBhZ2d0 cmFuc2ZuID0+ICduZXR3b3JrX3NtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ25ldHdvcmtf c21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPChpbmV0LGluZXQpJywKLSAgYWdndHJhbnN0eXBlID0+ ICdpbmV0JyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2luZXQnLCBhZ2dwYXJ0aWFscHVzaGRvd25z YWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKHBnX2xzbiknLCBhZ2d0cmFuc2ZuID0+ ICdwZ19sc25fc21hbGxlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAncGdfbHNuX3NtYWxsZXInLCBh Z2dzb3J0b3AgPT4gJzwocGdfbHNuLHBnX2xzbiknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ3BnX2xz bicgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdwZ19sc24nICwgYWdncGFydGlhbHB1c2hkb3duc2Fm ZSA9PiAndCd9LAogCiAjIGNvdW50CiB7IGFnZ2Zub2lkID0+ICdjb3VudChhbnkpJywgYWdndHJh bnNmbiA9PiAnaW50OGluY19hbnknLAogICBhZ2djb21iaW5lZm4gPT4gJ2ludDhwbCcsIGFnZ210 cmFuc2ZuID0+ICdpbnQ4aW5jX2FueScsCiAgIGFnZ21pbnZ0cmFuc2ZuID0+ICdpbnQ4ZGVjX2Fu eScsIGFnZ3RyYW5zdHlwZSA9PiAnaW50OCcsCi0gIGFnZ210cmFuc3R5cGUgPT4gJ2ludDgnLCBh Z2dpbml0dmFsID0+ICcwJywgYWdnbWluaXR2YWwgPT4gJzAnIH0sCisgIGFnZ210cmFuc3R5cGUg PT4gJ2ludDgnLCBhZ2dpbml0dmFsID0+ICcwJywgYWdnbWluaXR2YWwgPT4gJzAnLAorICBhZ2dw YXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnY291bnQoKScsIGFn Z3RyYW5zZm4gPT4gJ2ludDhpbmMnLCBhZ2djb21iaW5lZm4gPT4gJ2ludDhwbCcsCiAgIGFnZ210 cmFuc2ZuID0+ICdpbnQ4aW5jJywgYWdnbWludnRyYW5zZm4gPT4gJ2ludDhkZWMnLCBhZ2d0cmFu c3R5cGUgPT4gJ2ludDgnLAotICBhZ2dtdHJhbnN0eXBlID0+ICdpbnQ4JywgYWdnaW5pdHZhbCA9 PiAnMCcsIGFnZ21pbml0dmFsID0+ICcwJyB9LAorICBhZ2dtdHJhbnN0eXBlID0+ICdpbnQ4Jywg YWdnaW5pdHZhbCA9PiAnMCcsIGFnZ21pbml0dmFsID0+ICcwJywKKyAgYWdncGFydGlhbHB1c2hk b3duc2FmZSA9PiAndCcgfSwKIAogIyB2YXJfcG9wCiB7IGFnZ2Zub2lkID0+ICd2YXJfcG9wKGlu dDgpJywgYWdndHJhbnNmbiA9PiAnaW50OF9hY2N1bScsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hZ2dyZWdh dGUuaAppbmRleCAwOGM5Mzc5YmE3Ny4uMmM2MzEwMmZmMzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfYWdncmVnYXRlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19h Z2dyZWdhdGUuaApAQCAtNTUsNiArNTUsOSBAQCBDQVRBTE9HKHBnX2FnZ3JlZ2F0ZSwyNjAwLEFn Z3JlZ2F0ZVJlbGF0aW9uSWQpCiAJLyogZnVuY3Rpb24gdG8gY29udmVydCBieXRlYSB0byB0cmFu c3R5cGUgKDAgaWYgbm9uZSkgKi8KIAlyZWdwcm9jCQlhZ2dkZXNlcmlhbGZuIEJLSV9ERUZBVUxU KC0pIEJLSV9MT09LVVBfT1BUKHBnX3Byb2MpOwogCisJLyogZnVuY3Rpb24gdG8gY29udmVydCBh Z2dyZWdhdGUgcmVzdWx0IHRvIGJ5dGVhICgwIGlmIG5vbmUpICovCisJcmVncHJvYwkJYWdncGFy dGlhbGNvbnZlcnRlcmZuIEJLSV9ERUZBVUxUKC0pIEJLSV9MT09LVVBfT1BUKHBnX3Byb2MpOwor CiAJLyogZm9yd2FyZCBmdW5jdGlvbiBmb3IgbW92aW5nLWFnZ3JlZ2F0ZSBtb2RlICgwIGlmIG5v bmUpICovCiAJcmVncHJvYwkJYWdnbXRyYW5zZm4gQktJX0RFRkFVTFQoLSkgQktJX0xPT0tVUF9P UFQocGdfcHJvYyk7CiAKQEAgLTkxLDYgKzk0LDkgQEAgQ0FUQUxPRyhwZ19hZ2dyZWdhdGUsMjYw MCxBZ2dyZWdhdGVSZWxhdGlvbklkKQogCS8qIGVzdGltYXRlZCBzaXplIG9mIG1vdmluZy1hZ2cg c3RhdGUgKDAgZm9yIGRlZmF1bHQgZXN0KSAqLwogCWludDMyCQlhZ2dtdHJhbnNzcGFjZSBCS0lf REVGQVVMVCgwKTsKIAorCS8qIHRydWUgaWYgcGFydGlhbCBhZ2dyZWdhdGUgaXMgZmluZSB0byBw dXNoIGRvd24gKi8KKwlib29sCQlhZ2dwYXJ0aWFscHVzaGRvd25zYWZlIEJLSV9ERUZBVUxUKGYp OworCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0 YXJ0IGhlcmUgKi8KIAogCS8qIGluaXRpYWwgdmFsdWUgZm9yIHRyYW5zaXRpb24gc3RhdGUgKGNh biBiZSBOVUxMKSAqLwpAQCAtMTYxLDYgKzE2Nyw3IEBAIGV4dGVybiBPYmplY3RBZGRyZXNzIEFn Z3JlZ2F0ZUNyZWF0ZShjb25zdCBjaGFyICphZ2dOYW1lLAogCQkJCQkJCQkJIExpc3QgKmFnZ2Nv bWJpbmVmbk5hbWUsCiAJCQkJCQkJCQkgTGlzdCAqYWdnc2VyaWFsZm5OYW1lLAogCQkJCQkJCQkJ IExpc3QgKmFnZ2Rlc2VyaWFsZm5OYW1lLAorCQkJCQkJCQkJIExpc3QgKmFnZ3BhcnRpYWxjb252 ZXJ0ZXJmbk5hbWUsCiAJCQkJCQkJCQkgTGlzdCAqYWdnbXRyYW5zZm5OYW1lLAogCQkJCQkJCQkJ IExpc3QgKmFnZ21pbnZ0cmFuc2ZuTmFtZSwKIAkJCQkJCQkJCSBMaXN0ICphZ2dtZmluYWxmbk5h bWUsCkBAIC0xNzUsNiArMTgyLDcgQEAgZXh0ZXJuIE9iamVjdEFkZHJlc3MgQWdncmVnYXRlQ3Jl YXRlKGNvbnN0IGNoYXIgKmFnZ05hbWUsCiAJCQkJCQkJCQkgaW50MzIgYWdnbVRyYW5zU3BhY2Us CiAJCQkJCQkJCQkgY29uc3QgY2hhciAqYWdnaW5pdHZhbCwKIAkJCQkJCQkJCSBjb25zdCBjaGFy ICphZ2dtaW5pdHZhbCwKLQkJCQkJCQkJCSBjaGFyIHByb3BhcmFsbGVsKTsKKwkJCQkJCQkJCSBj aGFyIHByb3BhcmFsbGVsLAorCQkJCQkJCQkJIGJvb2wgcGFydGlhbFB1c2hkb3duU2FmZSk7CiAK ICNlbmRpZgkJCQkJCQkvKiBQR19BR0dSRUdBVEVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK aW5kZXggZDA2OGQ2NTMyZWMuLjFjZjIzYjE1ZGYwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK QEAgLTQ3OTgsNiArNDc5OCwxMiBAQAogeyBvaWQgPT4gJzI3ODYnLCBkZXNjciA9PiAnYWdncmVn YXRlIHNlcmlhbCBmdW5jdGlvbicsCiAgIHByb25hbWUgPT4gJ2ludDhfYXZnX3NlcmlhbGl6ZScs IHByb3JldHR5cGUgPT4gJ2J5dGVhJywKICAgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywgcHJv c3JjID0+ICdpbnQ4X2F2Z19zZXJpYWxpemUnIH0sCit7IG9pZCA9PiAnOTYzMCcsIGRlc2NyID0+ ICdwYXJ0aWFsIGFnZ3JlZ2F0ZSBjb252ZXJ0ZXIgZnVuY3Rpb24nLAorICBwcm9uYW1lID0+ICdp bnQ4X3N1bV90b19pbnRlcm5hbF9zZXJpYWxpemUnLCBwcm9yZXR0eXBlID0+ICdieXRlYScsCisg IHByb2FyZ3R5cGVzID0+ICdpbnQ4JywgcHJvc3JjID0+ICdpbnQ4X3N1bV90b19pbnRlcm5hbF9z ZXJpYWxpemUnIH0sCit7IG9pZCA9PiAnOTYzMScsIGRlc2NyID0+ICdwYXJ0aWFsIGFnZ3JlZ2F0 ZSBjb252ZXJ0ZXIgZnVuY3Rpb24nLAorICBwcm9uYW1lID0+ICdudW1lcmljX3N1bV90b19pbnRl cm5hbF9zZXJpYWxpemUnLCBwcm9yZXR0eXBlID0+ICdieXRlYScsCisgIHByb2FyZ3R5cGVzID0+ ICdudW1lcmljJywgcHJvc3JjID0+ICdudW1lcmljX3N1bV90b19pbnRlcm5hbF9zZXJpYWxpemUn IH0sCiB7IG9pZCA9PiAnMjc4NycsIGRlc2NyID0+ICdhZ2dyZWdhdGUgZGVzZXJpYWwgZnVuY3Rp b24nLAogICBwcm9uYW1lID0+ICdpbnQ4X2F2Z19kZXNlcmlhbGl6ZScsIHByb3JldHR5cGUgPT4g J2ludGVybmFsJywKICAgcHJvYXJndHlwZXMgPT4gJ2J5dGVhIGludGVybmFsJywgcHJvc3JjID0+ ICdpbnQ4X2F2Z19kZXNlcmlhbGl6ZScgfSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvb2lkam9pbnMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vaWRqb2lu cy5vdXQKaW5kZXggMjE1ZWI4OTliZTMuLjg2NDE1MWJiY2EzIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL29pZGpvaW5zLm91dApAQCAtMTQ1LDYgKzE0NSw3IEBAIE5PVElDRTogIGNoZWNraW5n IHBnX2FnZ3JlZ2F0ZSB7YWdnZmluYWxmbn0gPT4gcGdfcHJvYyB7b2lkfQogTk9USUNFOiAgY2hl Y2tpbmcgcGdfYWdncmVnYXRlIHthZ2djb21iaW5lZm59ID0+IHBnX3Byb2Mge29pZH0KIE5PVElD RTogIGNoZWNraW5nIHBnX2FnZ3JlZ2F0ZSB7YWdnc2VyaWFsZm59ID0+IHBnX3Byb2Mge29pZH0K IE5PVElDRTogIGNoZWNraW5nIHBnX2FnZ3JlZ2F0ZSB7YWdnZGVzZXJpYWxmbn0gPT4gcGdfcHJv YyB7b2lkfQorTk9USUNFOiAgY2hlY2tpbmcgcGdfYWdncmVnYXRlIHthZ2dwYXJ0aWFsY29udmVy dGVyZm59ID0+IHBnX3Byb2Mge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX2FnZ3JlZ2F0ZSB7 YWdnbXRyYW5zZm59ID0+IHBnX3Byb2Mge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX2FnZ3Jl Z2F0ZSB7YWdnbWludnRyYW5zZm59ID0+IHBnX3Byb2Mge29pZH0KIE5PVElDRTogIGNoZWNraW5n IHBnX2FnZ3JlZ2F0ZSB7YWdnbWZpbmFsZm59ID0+IHBnX3Byb2Mge29pZH0KLS0gCjIuMjUuMQoK --=_2715c710af1ee47a7e10b1765691c08d--