Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1f32Wt-0003Da-Ip for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Apr 2018 16:42:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1f32Ws-0001d3-8R for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Apr 2018 16:41:58 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1f32Wr-0001cu-S1 for pgsql-hackers@lists.postgresql.org; Mon, 02 Apr 2018 16:41:58 +0000 Received: from mail.postgrespro.ru ([93.174.131.138]) by magus.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1f32Wn-0004QS-2D for pgsql-hackers@lists.postgresql.org; Mon, 02 Apr 2018 16:41:57 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id E363721C1CB3; Mon, 2 Apr 2018 19:41:51 +0300 (MSK) X-Virus-Scanned: Debian amavisd-new at postgrespro.ru X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=x tagged_above=-99 required=4 WHITELISTED tests=[] autolearn=unavailable Received: from mail.postgrespro.ru (cyclops.l.postgrespro.ru [192.168.27.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 9C4EE21C1CB2; Mon, 2 Apr 2018 19:41:51 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1522687311; bh=JCRcdwRCcblKMNJSMNIkzBVlhlCnvC0ibl1BKR4bGF0=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=lfKQKyoxwHR0N/FIz2JzS4hF33GPmghLy213ik2Gu2/24Udowk76qiqpvwrPyKT6y Y1NsAcy6A1BoOMwME/tzDXYnbwy7ke+v18aRXo0gkezosZgx9p/KfdNOD7xFoJMnGF BFZbGO5DujBkQL0MibI0wqk5vBps1qCowPlmnWMs= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_3fc10a60ec75a876410f4e90c4b81b2e" Date: Mon, 02 Apr 2018 19:41:51 +0300 From: Dmitry Ivanov To: Aleksandr Parfenov Cc: Aleksander Alekseev , Thomas Munro , David Steele , PostgreSQL Hackers Subject: Re: new function for tsquery creartion Organization: Postgres Professional In-Reply-To: References: <20180302030605.5ur6ktkb2vyb46pb@alap3.anarazel.de> <152025433949.1548.16466871234054596674.pgcf@coridan.postgresql.org> <34280367-0dab-7f73-8d7c-d21c7276814b@pgmasters.net> <8df9de83119eb295f3424c573d64ff84@postgrespro.ru> <20180326092405.71820cf2@asp437-24-g082ur> <6754a224654a4f0339195b83b133d551@postgrespro.ru> <9153fb21831d0ba7c832960f37df2688@postgrespro.ru> <20180328092115.GA32581@e733.localdomain> <8829c490d0e17b6033b3fd622dfeed1e@postgrespro.ru> Message-ID: X-Sender: d.ivanov@postgrespro.ru User-Agent: Roundcube Webmail/1.2.4 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_3fc10a60ec75a876410f4e90c4b81b2e Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed I've fixed a bug and added some tests and documentation. -- Dmitry Ivanov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --=_3fc10a60ec75a876410f4e90c4b81b2e Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=websearch_to_tsquery_v5.diff Content-Disposition: attachment; filename=websearch_to_tsquery_v5.diff; size=40387 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5z Z21sCmluZGV4IDVhYmIxYzQ2ZmIuLmMzYjdiZTZlNGUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbApAQCAtOTYwOSw2ICs5NjA5 LDE4IEBAIENSRUFURSBUWVBFIHJhaW5ib3cgQVMgRU5VTSAoJ3JlZCcsICdvcmFuZ2UnLCAneWVs bG93JywgJ2dyZWVuJywgJ2JsdWUnLCAncHVycGxlCiAgICAgICAgIDxlbnRyeT48bGl0ZXJhbD5w aHJhc2V0b190c3F1ZXJ5KCdlbmdsaXNoJywgJ1RoZSBGYXQgUmF0cycpPC9saXRlcmFsPjwvZW50 cnk+CiAgICAgICAgIDxlbnRyeT48bGl0ZXJhbD4nZmF0JyAmbHQ7LSZndDsgJ3JhdCc8L2xpdGVy YWw+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnk+ CisgICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgIDxwcmltYXJ5PndlYnNlYXJjaF90b190 c3F1ZXJ5PC9wcmltYXJ5PgorICAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgICAgPGxpdGVy YWw+PGZ1bmN0aW9uPndlYnNlYXJjaF90b190c3F1ZXJ5KDxvcHRpb25hbD4gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbmZpZzwvcmVwbGFjZWFibGU+IDx0eXBlPnJlZ2NvbmZpZzwv dHlwZT4gLCA8L29wdGlvbmFsPiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cXVlcnk8 L3JlcGxhY2VhYmxlPiA8dHlwZT50ZXh0PC90eXBlPik8L2Z1bmN0aW9uPjwvbGl0ZXJhbD4KKyAg ICAgICAgIDwvZW50cnk+CisgICAgICAgIDxlbnRyeT48dHlwZT50c3F1ZXJ5PC90eXBlPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeT5wcm9kdWNlIDx0eXBlPnRzcXVlcnk8L3R5cGU+IGZyb20gYSB3 ZWIgc2VhcmNoIHN0eWxlIHF1ZXJ5PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PjxsaXRlcmFsPndl YnNlYXJjaF90b190c3F1ZXJ5KCdlbmdsaXNoJywgJyJmYXQgcmF0IiBvciByYXQnKTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnk+PGxpdGVyYWw+J2ZhdCcgJmx0Oy0mZ3Q7ICdyYXQn IHwgJ3JhdCc8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KICAgICAgICA8cm93Pgog ICAgICAgICA8ZW50cnk+CiAgICAgICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3RleHRzZWFyY2guc2dtbCBiL2RvYy9zcmMvc2dtbC90ZXh0c2VhcmNoLnNnbWwKaW5k ZXggNjEwYjdiZjAzMy4uMTlmNTg1MTFjOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3RleHRz ZWFyY2guc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvdGV4dHNlYXJjaC5zZ21sCkBAIC03OTcsMTMg Kzc5NywxNiBAQCBVUERBVEUgdHQgU0VUIHRpID0KICAgIDxwYXJhPgogICAgIDxwcm9kdWN0bmFt ZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gcHJvdmlkZXMgdGhlCiAgICAgZnVuY3Rpb25zIDxm dW5jdGlvbj50b190c3F1ZXJ5PC9mdW5jdGlvbj4sCi0gICAgPGZ1bmN0aW9uPnBsYWludG9fdHNx dWVyeTwvZnVuY3Rpb24+LCBhbmQKLSAgICA8ZnVuY3Rpb24+cGhyYXNldG9fdHNxdWVyeTwvZnVu Y3Rpb24+CisgICAgPGZ1bmN0aW9uPnBsYWludG9fdHNxdWVyeTwvZnVuY3Rpb24+LAorICAgIDxm dW5jdGlvbj5waHJhc2V0b190c3F1ZXJ5PC9mdW5jdGlvbj4gYW5kCisgICAgPGZ1bmN0aW9uPndl YnNlYXJjaF90b190c3F1ZXJ5PC9mdW5jdGlvbj4KICAgICBmb3IgY29udmVydGluZyBhIHF1ZXJ5 IHRvIHRoZSA8dHlwZT50c3F1ZXJ5PC90eXBlPiBkYXRhIHR5cGUuCiAgICAgPGZ1bmN0aW9uPnRv X3RzcXVlcnk8L2Z1bmN0aW9uPiBvZmZlcnMgYWNjZXNzIHRvIG1vcmUgZmVhdHVyZXMKICAgICB0 aGFuIGVpdGhlciA8ZnVuY3Rpb24+cGxhaW50b190c3F1ZXJ5PC9mdW5jdGlvbj4gb3IKLSAgICA8 ZnVuY3Rpb24+cGhyYXNldG9fdHNxdWVyeTwvZnVuY3Rpb24+LCBidXQgaXQgaXMgbGVzcyBmb3Jn aXZpbmcKLSAgICBhYm91dCBpdHMgaW5wdXQuCisgICAgPGZ1bmN0aW9uPnBocmFzZXRvX3RzcXVl cnk8L2Z1bmN0aW9uPiwgYnV0IGl0IGlzIGxlc3MgZm9yZ2l2aW5nIGFib3V0IGl0cworICAgIGlu cHV0LiA8ZnVuY3Rpb24+d2Vic2VhcmNoX3RvX3RzcXVlcnk8L2Z1bmN0aW9uPiBpcyBhIHNpbXBs aWZpZWQgdmVyc2lvbgorICAgIG9mIDxmdW5jdGlvbj50b190c3F1ZXJ5PC9mdW5jdGlvbj4gd2l0 aCBhbiBhbHRlcm5hdGl2ZSBzeW50YXgsIHNpbWlsYXIKKyAgICB0byB0aGUgb25lIHVzZWQgYnkg d2ViIHNlYXJjaCBlbmdpbmVzLgogICAgPC9wYXJhPgogCiAgICA8aW5kZXh0ZXJtPgpAQCAtOTYy LDYgKzk2NSw4NyBAQCBTRUxFQ1QgcGhyYXNldG9fdHNxdWVyeSgnZW5nbGlzaCcsICdUaGUgRmF0 ICZhbXA7IFJhdHM6QycpOwogPC9zY3JlZW4+CiAgICA8L3BhcmE+CiAKKzxzeW5vcHNpcz4KK3dl YnNlYXJjaF90b190c3F1ZXJ5KDxvcHRpb25hbD4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbmZpZzwvcmVwbGFjZWFibGU+IDx0eXBlPnJlZ2NvbmZpZzwvdHlwZT4sIDwvb3B0aW9u YWw+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5xdWVyeXRleHQ8L3JlcGxhY2VhYmxl PiA8dHlwZT50ZXh0PC90eXBlPikgcmV0dXJucyA8dHlwZT50c3F1ZXJ5PC90eXBlPgorPC9zeW5v cHNpcz4KKworICAgPHBhcmE+CisgICAgPGZ1bmN0aW9uPndlYnNlYXJjaF90b190c3F1ZXJ5PC9m dW5jdGlvbj4gY3JlYXRlcyBhIDx0eXBlPnRzcXVlcnk8L3R5cGU+CisgICAgdmFsdWUgZnJvbSA8 cmVwbGFjZWFibGU+cXVlcnl0ZXh0PC9yZXBsYWNlYWJsZT4gdXNpbmcgYW4gYWx0ZXJuYXRpdmUK KyAgICBzeW50YXggaW4gd2hpY2ggc2ltcGxlIHVuZm9ybWF0dGVkIHRleHQgaXMgYSB2YWxpZCBx dWVyeS4KKyAgICBVbmxpa2UgPGZ1bmN0aW9uPnBsYWludG9fdHNxdWVyeTwvZnVuY3Rpb24+Cisg ICAgYW5kIDxmdW5jdGlvbj5waHJhc2V0b190c3F1ZXJ5PC9mdW5jdGlvbj4sIGl0IGFsc28gcmVj b2duaXplcyBjZXJ0YWluCisgICAgb3BlcmF0b3JzLiBNb3Jlb3ZlciwgdGhpcyBmdW5jdGlvbiBz aG91bGQgbmV2ZXIgcmFpc2Ugc3ludGF4IGVycm9ycywKKyAgICB3aGljaCBtYWtlcyBpdCBwb3Nz aWJsZSB0byB1c2UgcmF3IHVzZXItc3VwcGxpZWQgaW5wdXQgZm9yIHNlYXJjaC4KKyAgICBUaGUg Zm9sbG93aW5nIHN5bnRheCBpcyBzdXBwb3J0ZWQ6CisgICAgPGl0ZW1pemVkbGlzdCAgc3BhY2lu Zz0iY29tcGFjdCIgbWFyaz0iYnVsbGV0Ij4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJh PgorICAgICAgICA8bGl0ZXJhbD51bnF1b3RlZCB0ZXh0PC9saXRlcmFsPjogdGV4dCBub3QgaW5z aWRlIHF1b3RlIG1hcmtzIHdpbGwgYmUKKyAgICAgICAgY29udmVydGVkIHRvIHRlcm1zIHNlcGFy YXRlZCBieSA8bGl0ZXJhbD4mYW1wOzwvbGl0ZXJhbD4gb3BlcmF0b3JzLCBhcworICAgICAgICBp ZiBwcm9jZXNzZWQgYnkKKyAgICAgICAgPGZ1bmN0aW9uPnBsYWludG9fdHNxdWVyeTwvZnVuY3Rp b24+LgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgICA8bGlzdGl0ZW0+Cisg ICAgICAgPHBhcmE+CisgICAgICAgIDxsaXRlcmFsPiJxdW90ZWQgdGV4dCI8L2xpdGVyYWw+OiB0 ZXh0IGluc2lkZSBxdW90ZSBtYXJrcyB3aWxsIGJlCisgICAgICAgIGNvbnZlcnRlZCB0byB0ZXJt cyBzZXBhcmF0ZWQgYnkgPGxpdGVyYWw+Jmx0Oy0mZ3Q7PC9saXRlcmFsPgorICAgICAgICBvcGVy YXRvcnMsIGFzIGlmIHByb2Nlc3NlZCBieSA8ZnVuY3Rpb24+cGhyYXNldG9fdHNxdWVyeTwvZnVu Y3Rpb24+LgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgICA8bGlzdGl0ZW0+ CisgICAgICA8cGFyYT4KKyAgICAgICA8bGl0ZXJhbD5PUjwvbGl0ZXJhbD46IGxvZ2ljYWwgb3Ig d2lsbCBiZSBjb252ZXJ0ZWQgdG8KKyAgICAgICB0aGUgPGxpdGVyYWw+fDwvbGl0ZXJhbD4gb3Bl cmF0b3IuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4K KyAgICAgIDxwYXJhPgorICAgICAgIDxsaXRlcmFsPi08L2xpdGVyYWw+OiB0aGUgbG9naWNhbCBu b3Qgb3BlcmF0b3IsIGNvbnZlcnRlZCB0byB0aGUKKyAgICAgICB0aGUgPGxpdGVyYWw+ITwvbGl0 ZXJhbD4gb3BlcmF0b3IuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC9p dGVtaXplZGxpc3Q+CisgICA8L3BhcmE+CisgICA8cGFyYT4KKyAgICBFeGFtcGxlczoKKyAgICA8 c2NyZWVuPgorICAgICAgc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdlbmdsaXNoJywgJ1Ro ZSBmYXQgcmF0cycpOworICAgICAgIHdlYnNlYXJjaF90b190c3F1ZXJ5CisgICAgICAtLS0tLS0t LS0tLS0tLS0tLQorICAgICAgICdmYXQnICZhbXA7ICdyYXQnCisgICAgICAoMSByb3cpCisgICAg PC9zY3JlZW4+CisgICAgPHNjcmVlbj4KKyAgICAgIHNlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVy eSgnZW5nbGlzaCcsICcic3VwZXJub3ZhZSBzdGFycyIgLWNyYWInKTsKKyAgICAgICAgICAgICB3 ZWJzZWFyY2hfdG9fdHNxdWVyeQorICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICdzdXBlcm5vdmEnICZsdDstJmd0OyAnc3RhcicgJmFtcDsgISdjcmFiJwor ICAgICAgKDEgcm93KQorICAgIDwvc2NyZWVuPgorICAgIDxzY3JlZW4+CisgICAgICBzZWxlY3Qg d2Vic2VhcmNoX3RvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAnInNhZCBjYXQiIG9yICJmYXQgcmF0Iicp OworICAgICAgICAgICAgIHdlYnNlYXJjaF90b190c3F1ZXJ5CisgICAgICAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICdzYWQnICZsdDstJmd0OyAnY2F0JyB8ICdm YXQnICZsdDstJmd0OyAncmF0JworICAgICAgKDEgcm93KQorICAgIDwvc2NyZWVuPgorICAgIDxz Y3JlZW4+CisgICAgICBzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAnc2ln bmFsIC0ic2VnbWVudGF0aW9uIGZhdWx0IicpOworICAgICAgICAgICAgICAgd2Vic2VhcmNoX3Rv X3RzcXVlcnkKKyAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICdzaWduYWwnICZhbXA7ICEoICdzZWdtZW50JyAmbHQ7LSZndDsgJ2ZhdWx0JyApCisg ICAgICAoMSByb3cpCisgICAgPC9zY3JlZW4+CisgICAgPHNjcmVlbj4KKyAgICAgIHNlbGVjdCB3 ZWJzZWFyY2hfdG9fdHNxdWVyeSgnZW5nbGlzaCcsICciIiIgKSggZHVtbXkgXFwgcXVlcnkgJmx0 Oy0mZ3Q7Jyk7CisgICAgICAgd2Vic2VhcmNoX3RvX3RzcXVlcnkKKyAgICAgIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAnZHVtbWknICZhbXA7ICdxdWVyaScKKyAgICAgICgxIHJvdykK KyAgICA8L3NjcmVlbj4KKyAgICA8L3BhcmE+CiAgIDwvc2VjdDI+CiAKICAgPHNlY3QyIGlkPSJ0 ZXh0c2VhcmNoLXJhbmtpbmciPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdHNlYXJjaC90b190 c2FueS5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90b190c2FueS5jCmluZGV4IGVhNTk0N2EzYTgu LjYwNTVmYjZiNGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvdG9fdHNhbnkuYwor KysgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RvX3RzYW55LmMKQEAgLTQ5MCw3ICs0OTAsNyBAQCB0 b190c3F1ZXJ5X2J5aWQoUEdfRlVOQ1RJT05fQVJHUykKIAlxdWVyeSA9IHBhcnNlX3RzcXVlcnko dGV4dF90b19jc3RyaW5nKGluKSwKIAkJCQkJCSAgcHVzaHZhbF9tb3JwaCwKIAkJCQkJCSAgUG9p bnRlckdldERhdHVtKCZkYXRhKSwKLQkJCQkJCSAgZmFsc2UpOworCQkJCQkJICAwKTsKIAogCVBH X1JFVFVSTl9UU1FVRVJZKHF1ZXJ5KTsKIH0KQEAgLTUyMCw3ICs1MjAsNyBAQCBwbGFpbnRvX3Rz cXVlcnlfYnlpZChQR19GVU5DVElPTl9BUkdTKQogCXF1ZXJ5ID0gcGFyc2VfdHNxdWVyeSh0ZXh0 X3RvX2NzdHJpbmcoaW4pLAogCQkJCQkJICBwdXNodmFsX21vcnBoLAogCQkJCQkJICBQb2ludGVy R2V0RGF0dW0oJmRhdGEpLAotCQkJCQkJICB0cnVlKTsKKwkJCQkJCSAgUF9UU1FfUExBSU4pOwog CiAJUEdfUkVUVVJOX1BPSU5URVIocXVlcnkpOwogfQpAQCAtNTUxLDcgKzU1MSw3IEBAIHBocmFz ZXRvX3RzcXVlcnlfYnlpZChQR19GVU5DVElPTl9BUkdTKQogCXF1ZXJ5ID0gcGFyc2VfdHNxdWVy eSh0ZXh0X3RvX2NzdHJpbmcoaW4pLAogCQkJCQkJICBwdXNodmFsX21vcnBoLAogCQkJCQkJICBQ b2ludGVyR2V0RGF0dW0oJmRhdGEpLAotCQkJCQkJICB0cnVlKTsKKwkJCQkJCSAgUF9UU1FfUExB SU4pOwogCiAJUEdfUkVUVVJOX1RTUVVFUlkocXVlcnkpOwogfQpAQCAtNTY3LDMgKzU2NywzNSBA QCBwaHJhc2V0b190c3F1ZXJ5KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQkJCQkJT2JqZWN0SWRH ZXREYXR1bShjZmdJZCksCiAJCQkJCQkJCQkJUG9pbnRlckdldERhdHVtKGluKSkpOwogfQorCitE YXR1bQord2Vic2VhcmNoX3RvX3RzcXVlcnlfYnlpZChQR19GVU5DVElPTl9BUkdTKQoreworCXRl eHQJICAgKmluID0gUEdfR0VUQVJHX1RFWFRfUFAoMSk7CisJTW9ycGhPcGFxdWUJZGF0YTsKKwlU U1F1ZXJ5CQlxdWVyeSA9IE5VTEw7CisKKwlkYXRhLmNmZ19pZCA9IFBHX0dFVEFSR19PSUQoMCk7 CisKKwlkYXRhLnFvcGVyYXRvciA9IE9QX0FORDsKKworCXF1ZXJ5ID0gcGFyc2VfdHNxdWVyeSh0 ZXh0X3RvX2NzdHJpbmcoaW4pLAorCQkJCQkJICBwdXNodmFsX21vcnBoLAorCQkJCQkJICBQb2lu dGVyR2V0RGF0dW0oJmRhdGEpLAorCQkJCQkJICBQX1RTUV9XRUIpOworCisJUEdfUkVUVVJOX1RT UVVFUlkocXVlcnkpOworfQorCitEYXR1bQord2Vic2VhcmNoX3RvX3RzcXVlcnkoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwl0ZXh0CSAgICppbiA9IFBHX0dFVEFSR19URVhUX1BQKDApOworCU9pZAkJ CWNmZ0lkOworCisJY2ZnSWQgPSBnZXRUU0N1cnJlbnRDb25maWcodHJ1ZSk7CisJUEdfUkVUVVJO X0RBVFVNKERpcmVjdEZ1bmN0aW9uQ2FsbDIod2Vic2VhcmNoX3RvX3RzcXVlcnlfYnlpZCwKKwkJ CQkJCQkJCQlPYmplY3RJZEdldERhdHVtKGNmZ0lkKSwKKwkJCQkJCQkJCQlQb2ludGVyR2V0RGF0 dW0oaW4pKSk7CisKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3F1ZXJ5 LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdHNxdWVyeS5jCmluZGV4IDFjY2JmNzkwMzAuLjU2 NTdhYWU3Y2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3F1ZXJ5LmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcXVlcnkuYwpAQCAtMzIsMTQgKzMyLDI3IEBAIGNv bnN0IGludAl0c2VhcmNoX29wX3ByaW9yaXR5W09QX0NPVU5UXSA9CiAJMwkJCQkJCQkvKiBPUF9Q SFJBU0UgKi8KIH07CiAKKy8qCisgKiBwYXJzZXIncyBzdGF0ZXMKKyAqLwordHlwZWRlZiBlbnVt Cit7CisJV0FJVE9QRVJBTkQgPSAxLAorCVdBSVRPUEVSQVRPUiA9IDIsCisJV0FJVEZJUlNUT1BF UkFORCA9IDMsCisJV0FJVFNJTkdMRU9QRVJBTkQgPSA0Cit9IHRzX3BhcnNlcnN0YXRlOworCiBz dHJ1Y3QgVFNRdWVyeVBhcnNlclN0YXRlRGF0YQogewogCS8qIFN0YXRlIGZvciBnZXR0b2tlbl9x dWVyeSAqLwogCWNoYXIJICAgKmJ1ZmZlcjsJCQkvKiBlbnRpcmUgc3RyaW5nIHdlIGFyZSBzY2Fu bmluZyAqLwogCWNoYXIJICAgKmJ1ZjsJCQkvKiBjdXJyZW50IHNjYW4gcG9pbnQgKi8KLQlpbnQJ CQlzdGF0ZTsKIAlpbnQJCQljb3VudDsJCQkvKiBuZXN0aW5nIGNvdW50LCBpbmNyZW1lbnRlZCBi eSAoLAogCQkJCQkJCQkgKiBkZWNyZW1lbnRlZCBieSApICovCisJYm9vbAkJaW5fcXVvdGVzOwkJ LyogcGhyYXNlIGluIHF1b3RlcyAiIiAqLworCWJvb2wJCWlzX3dlYjsJCQkvKiBpcyBpdCBhIHdl YiBzZWFyY2g/ICovCisJdHNfcGFyc2Vyc3RhdGUgc3RhdGU7CiAKIAkvKiBwb2xpc2ggKHByZWZp eCkgbm90YXRpb24gaW4gbGlzdCwgZmlsbGVkIGluIGJ5IHB1c2gqIGZ1bmN0aW9ucyAqLwogCUxp c3QJICAgKnBvbHN0cjsKQEAgLTU3LDEyICs3MCw2IEBAIHN0cnVjdCBUU1F1ZXJ5UGFyc2VyU3Rh dGVEYXRhCiAJVFNWZWN0b3JQYXJzZVN0YXRlIHZhbHN0YXRlOwogfTsKIAotLyogcGFyc2VyJ3Mg c3RhdGVzICovCi0jZGVmaW5lIFdBSVRPUEVSQU5EIDEKLSNkZWZpbmUgV0FJVE9QRVJBVE9SCTIK LSNkZWZpbmUgV0FJVEZJUlNUT1BFUkFORCAzCi0jZGVmaW5lIFdBSVRTSU5HTEVPUEVSQU5EIDQK LQogLyoKICAqIHN1YnJvdXRpbmUgdG8gcGFyc2UgdGhlIG1vZGlmaWVycyAod2VpZ2h0IGFuZCBw cmVmaXggZmxhZyBjdXJyZW50bHkpCiAgKiBwYXJ0LCBsaWtlICc6QUIqJyBvZiBhIHF1ZXJ5LgpA QCAtMTk3LDYgKzIwNCwyNiBAQCBlcnI6CiAJcmV0dXJuIGJ1ZjsKIH0KIAorLyoKKyAqIFBhcnNl IE9SIG9wZXJhdG9yIHVzZWQgaW4gd2Vic2VhcmNoX3RvX3RzcXVlcnkoKS4KKyAqLworc3RhdGlj IGJvb2wKK3BhcnNlX29yX29wZXJhdG9yKFRTUXVlcnlQYXJzZXJTdGF0ZSBzdGF0ZSkKK3sKKwlj aGFyICpidWYgPSBzdGF0ZS0+YnVmOworCisJaWYgKHN0YXRlLT5pbl9xdW90ZXMpCisJCXJldHVy biBmYWxzZTsKKworCXJldHVybiAodF9pc2VxKCZidWZbMF0sICdvJykgfHwgdF9pc2VxKCZidWZb MF0sICdPJykpICYmCisJCSAgICh0X2lzZXEoJmJ1ZlsxXSwgJ3InKSB8fCB0X2lzZXEoJmJ1Zlsx XSwgJ1InKSkgJiYKKwkJICAgKGJ1ZlsyXSAhPSAnXDAnICYmCisJCQkJIXRfaXNlcSgmYnVmWzJd LCAnLScpICYmCisJCQkJIXRfaXNlcSgmYnVmWzJdLCAnXycpICYmCisJCQkJIXRfaXNhbHBoYSgm YnVmWzJdKSAmJgorCQkJCSF0X2lzZGlnaXQoJmJ1ZlsyXSkpOworfQorCiAvKgogICogdG9rZW4g dHlwZXMgZm9yIHBhcnNpbmcKICAqLwpAQCAtMjE5LDEwICsyNDYsMTIgQEAgdHlwZWRlZiBlbnVt CiAgKgogICovCiBzdGF0aWMgdHNfdG9rZW50eXBlCi1nZXR0b2tlbl9xdWVyeShUU1F1ZXJ5UGFy c2VyU3RhdGUgc3RhdGUsCi0JCQkgICBpbnQ4ICpvcGVyYXRvciwKLQkJCSAgIGludCAqbGVudmFs LCBjaGFyICoqc3RydmFsLCBpbnQxNiAqd2VpZ2h0LCBib29sICpwcmVmaXgpCitnZXR0b2tlbl9x dWVyeShUU1F1ZXJ5UGFyc2VyU3RhdGUgc3RhdGUsIGludDggKm9wZXJhdG9yLAorCQkJICAgaW50 ICpsZW52YWwsIGNoYXIgKipzdHJ2YWwsCisJCQkgICBpbnQxNiAqd2VpZ2h0LCBib29sICpwcmVm aXgpCiB7CisJYm9vbCBpc193ZWIgPSBzdGF0ZS0+aXNfd2ViOworCiAJKndlaWdodCA9IDA7CiAJ KnByZWZpeCA9IGZhbHNlOwogCkBAIC0yMzIsMjggKzI2MSw3NiBAQCBnZXR0b2tlbl9xdWVyeShU U1F1ZXJ5UGFyc2VyU3RhdGUgc3RhdGUsCiAJCXsKIAkJCWNhc2UgV0FJVEZJUlNUT1BFUkFORDoK IAkJCWNhc2UgV0FJVE9QRVJBTkQ6Ci0JCQkJaWYgKHRfaXNlcShzdGF0ZS0+YnVmLCAnIScpKQor CQkJCWlmICgoISBpc193ZWIgJiYgdF9pc2VxKHN0YXRlLT5idWYsICchJykpIHx8CisJCQkJCShp c193ZWIgJiYgdF9pc2VxKHN0YXRlLT5idWYsICctJykpKQogCQkJCXsKLQkJCQkJKHN0YXRlLT5i dWYpKys7IC8qIGNhbiBzYWZlbHkgKyssIHRfaXNlcSBndWFyYW50ZWUgdGhhdAotCQkJCQkJCQkJ ICogcGdfbWJsZW4oKT09MSAqLwotCQkJCQkqb3BlcmF0b3IgPSBPUF9OT1Q7CisJCQkJCXN0YXRl LT5idWYrKzsKIAkJCQkJc3RhdGUtPnN0YXRlID0gV0FJVE9QRVJBTkQ7CisKKwkJCQkJaWYgKHN0 YXRlLT5pbl9xdW90ZXMpCisJCQkJCQljb250aW51ZTsKKworCQkJCQkqb3BlcmF0b3IgPSBPUF9O T1Q7CiAJCQkJCXJldHVybiBQVF9PUFI7CiAJCQkJfQogCQkJCWVsc2UgaWYgKHRfaXNlcShzdGF0 ZS0+YnVmLCAnKCcpKQogCQkJCXsKLQkJCQkJc3RhdGUtPmNvdW50Kys7Ci0JCQkJCShzdGF0ZS0+ YnVmKSsrOworCQkJCQlzdGF0ZS0+YnVmKys7CiAJCQkJCXN0YXRlLT5zdGF0ZSA9IFdBSVRPUEVS QU5EOworCisJCQkJCWlmIChpc193ZWIpCisJCQkJCQljb250aW51ZTsKKworCQkJCQlzdGF0ZS0+ Y291bnQrKzsKIAkJCQkJcmV0dXJuIFBUX09QRU47CiAJCQkJfQogCQkJCWVsc2UgaWYgKHRfaXNl cShzdGF0ZS0+YnVmLCAnOicpKQogCQkJCXsKKwkJCQkJc3RhdGUtPmJ1ZisrOworCQkJCQlzdGF0 ZS0+c3RhdGUgPSBXQUlUT1BFUkFORDsKKworCQkJCQlpZiAoaXNfd2ViKQorCQkJCQkJY29udGlu dWU7CisKIAkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCiAJCQkJCQkJIGVycm1zZygic3ludGF4IGVycm9yIGluIHRzcXVlcnk6IFwiJXNc IiIsCiAJCQkJCQkJCQlzdGF0ZS0+YnVmZmVyKSkpOwogCQkJCX0KKwkJCQllbHNlIGlmIChpc193 ZWIgJiYgdF9pc2VxKHN0YXRlLT5idWYsICciJykpCisJCQkJeworCQkJCQlzdGF0ZS0+YnVmKys7 CisKKwkJCQkJaWYgKCFzdGF0ZS0+aW5fcXVvdGVzKQorCQkJCQl7CisJCQkJCQlzdGF0ZS0+c3Rh dGUgPSBXQUlUT1BFUkFORDsKKworCQkJCQkJaWYgKHN0cmNocihzdGF0ZS0+YnVmLCAnIicpKQor CQkJCQkJeworCQkJCQkJCS8qIHF1b3RlZCB0ZXh0IHNob3VsZCBiZSBvcmRlcmVkIDwtPiAqLwor CQkJCQkJCXN0YXRlLT5pbl9xdW90ZXMgPSB0cnVlOworCQkJCQkJCXJldHVybiBQVF9PUEVOOwor CQkJCQkJfQorCisJCQkJCQkvKiB3ZWIgc2VhcmNoIHRvbGVyYXRlcyBtaXNzaW5nIHF1b3RlcyAq LworCQkJCQkJY29udGludWU7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQkvKiB3 ZSBoYXZlIHRvIHByb3ZpZGUgYW4gb3BlcmFuZCAqLworCQkJCQkJc3RhdGUtPmluX3F1b3RlcyA9 IGZhbHNlOworCQkJCQkJc3RhdGUtPnN0YXRlID0gV0FJVE9QRVJBVE9SOworCQkJCQkJcHVzaFN0 b3Aoc3RhdGUpOworCQkJCQkJcmV0dXJuIFBUX0NMT1NFOworCQkJCQl9CisJCQkJfQorCQkJCWVs c2UgaWYgKGlzX3dlYiAmJiBJU09QRVJBVE9SKHN0YXRlLT5idWYpKQorCQkJCXsKKwkJCQkJLyog b3IgZWxzZSBnZXR0b2tlbl90c3ZlY3RvcigpIHdpbGwgcmFpc2UgYW4gZXJyb3IgKi8KKwkJCQkJ c3RhdGUtPmJ1ZisrOworCQkJCQlzdGF0ZS0+c3RhdGUgPSBXQUlUT1BFUkFORDsKKwkJCQkJY29u dGludWU7CisJCQkJfQogCQkJCWVsc2UgaWYgKCF0X2lzc3BhY2Uoc3RhdGUtPmJ1ZikpCiAJCQkJ ewogCQkJCQkvKgpAQCAtMjYzLDEyICszNDAsMjQgQEAgZ2V0dG9rZW5fcXVlcnkoVFNRdWVyeVBh cnNlclN0YXRlIHN0YXRlLAogCQkJCQlyZXNldF90c3ZlY3Rvcl9wYXJzZXIoc3RhdGUtPnZhbHN0 YXRlLCBzdGF0ZS0+YnVmKTsKIAkJCQkJaWYgKGdldHRva2VuX3RzdmVjdG9yKHN0YXRlLT52YWxz dGF0ZSwgc3RydmFsLCBsZW52YWwsIE5VTEwsIE5VTEwsICZzdGF0ZS0+YnVmKSkKIAkJCQkJewot CQkJCQkJc3RhdGUtPmJ1ZiA9IGdldF9tb2RpZmllcnMoc3RhdGUtPmJ1Ziwgd2VpZ2h0LCBwcmVm aXgpOworCQkJCQkJaWYgKCFpc193ZWIpCisJCQkJCQl7CisJCQkJCQkJLyogd2ViIHNlYXJjaCBk b2VzIG5vdCBzdXBwb3J0IHdlaWdodHMgKi8KKwkJCQkJCQlzdGF0ZS0+YnVmID0gZ2V0X21vZGlm aWVycyhzdGF0ZS0+YnVmLCB3ZWlnaHQsIHByZWZpeCk7CisJCQkJCQl9CiAJCQkJCQlzdGF0ZS0+ c3RhdGUgPSBXQUlUT1BFUkFUT1I7CiAJCQkJCQlyZXR1cm4gUFRfVkFMOwogCQkJCQl9CiAJCQkJ CWVsc2UgaWYgKHN0YXRlLT5zdGF0ZSA9PSBXQUlURklSU1RPUEVSQU5EKQorCQkJCQl7CiAJCQkJ CQlyZXR1cm4gUFRfRU5EOworCQkJCQl9CisJCQkJCWVsc2UgaWYgKGlzX3dlYikKKwkJCQkJewor CQkJCQkJLyogZmluYWxseSwgd2UgaGF2ZSB0byBwcm92aWRlIGFuIG9wZXJhbmQgKi8KKwkJCQkJ CXB1c2hTdG9wKHN0YXRlKTsKKwkJCQkJCXJldHVybiBQVF9FTkQ7CisJCQkJCX0KIAkJCQkJZWxz ZQogCQkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhf RVJST1IpLApAQCAtMjc3LDQwICszNjYsOTAgQEAgZ2V0dG9rZW5fcXVlcnkoVFNRdWVyeVBhcnNl clN0YXRlIHN0YXRlLAogCQkJCX0KIAkJCQlicmVhazsKIAkJCWNhc2UgV0FJVE9QRVJBVE9SOgot CQkJCWlmICh0X2lzZXEoc3RhdGUtPmJ1ZiwgJyYnKSkKKwkJCQlpZiAoISBpc193ZWIgJiYgdF9p c2VxKHN0YXRlLT5idWYsICcmJykpCiAJCQkJeworCQkJCQlzdGF0ZS0+YnVmKys7CiAJCQkJCXN0 YXRlLT5zdGF0ZSA9IFdBSVRPUEVSQU5EOwogCQkJCQkqb3BlcmF0b3IgPSBPUF9BTkQ7Ci0JCQkJ CShzdGF0ZS0+YnVmKSsrOwogCQkJCQlyZXR1cm4gUFRfT1BSOwogCQkJCX0KLQkJCQllbHNlIGlm ICh0X2lzZXEoc3RhdGUtPmJ1ZiwgJ3wnKSkKKwkJCQllbHNlIGlmICghIGlzX3dlYiAmJiB0X2lz ZXEoc3RhdGUtPmJ1ZiwgJ3wnKSkKIAkJCQl7CisJCQkJCXN0YXRlLT5idWYrKzsKIAkJCQkJc3Rh dGUtPnN0YXRlID0gV0FJVE9QRVJBTkQ7CiAJCQkJCSpvcGVyYXRvciA9IE9QX09SOwotCQkJCQko c3RhdGUtPmJ1ZikrKzsKIAkJCQkJcmV0dXJuIFBUX09QUjsKIAkJCQl9Ci0JCQkJZWxzZSBpZiAo dF9pc2VxKHN0YXRlLT5idWYsICc8JykpCisJCQkJZWxzZSBpZiAoISBpc193ZWIgJiYgdF9pc2Vx KHN0YXRlLT5idWYsICc8JykpCiAJCQkJewotCQkJCQlzdGF0ZS0+c3RhdGUgPSBXQUlUT1BFUkFO RDsKLQkJCQkJKm9wZXJhdG9yID0gT1BfUEhSQVNFOwogCQkJCQkvKiB3ZWlnaHQgdmFyIGlzIHVz ZWQgYXMgc3RvcmFnZSBmb3IgZGlzdGFuY2UgKi8KIAkJCQkJc3RhdGUtPmJ1ZiA9IHBhcnNlX3Bo cmFzZV9vcGVyYXRvcihzdGF0ZS0+YnVmLCB3ZWlnaHQpOworCQkJCQlzdGF0ZS0+c3RhdGUgPSBX QUlUT1BFUkFORDsKKwkJCQkJKm9wZXJhdG9yID0gT1BfUEhSQVNFOwogCQkJCQlpZiAoKndlaWdo dCA8IDApCiAJCQkJCQlyZXR1cm4gUFRfRVJSOwogCQkJCQlyZXR1cm4gUFRfT1BSOwogCQkJCX0K LQkJCQllbHNlIGlmICh0X2lzZXEoc3RhdGUtPmJ1ZiwgJyknKSkKKwkJCQllbHNlIGlmICghIGlz X3dlYiAmJiB0X2lzZXEoc3RhdGUtPmJ1ZiwgJyknKSkKIAkJCQl7Ci0JCQkJCShzdGF0ZS0+YnVm KSsrOworCQkJCQlzdGF0ZS0+YnVmKys7CiAJCQkJCXN0YXRlLT5jb3VudC0tOwogCQkJCQlyZXR1 cm4gKHN0YXRlLT5jb3VudCA8IDApID8gUFRfRVJSIDogUFRfQ0xPU0U7CiAJCQkJfQorCQkJCWVs c2UgaWYgKGlzX3dlYiAmJiB0X2lzZXEoc3RhdGUtPmJ1ZiwgJyInKSkKKwkJCQl7CisJCQkJCWlm ICghc3RhdGUtPmluX3F1b3RlcykKKwkJCQkJeworCQkJCQkJLyoKKwkJCQkJCSAqIHB1dCBpbXBs aWNpdCBBTkQgYWZ0ZXIgYW4gb3BlcmFuZAorCQkJCQkJICogYW5kIGhhbmRsZSB0aGlzIHF1b3Rl IGluIFdBSVRPUEVSQU5ECisJCQkJCQkgKi8KKwkJCQkJCXN0YXRlLT5zdGF0ZSA9IFdBSVRPUEVS QU5EOworCQkJCQkJKm9wZXJhdG9yID0gT1BfQU5EOworCQkJCQkJcmV0dXJuIFBUX09QUjsKKwkJ CQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCXN0YXRlLT5idWYrKzsKKworCQkJCQkJLyog anVzdCBjbG9zZSBxdW90ZXMgKi8KKwkJCQkJCXN0YXRlLT5pbl9xdW90ZXMgPSBmYWxzZTsKKwkJ CQkJCXJldHVybiBQVF9DTE9TRTsKKwkJCQkJfQorCQkJCX0KKwkJCQllbHNlIGlmIChpc193ZWIg JiYgcGFyc2Vfb3Jfb3BlcmF0b3Ioc3RhdGUpKQorCQkJCXsKKwkJCQkJc3RhdGUtPmJ1ZiArPSAy OyAvKiBzdHJsZW4oIk9SIikgKi8KKwkJCQkJc3RhdGUtPnN0YXRlID0gV0FJVE9QRVJBTkQ7CisJ CQkJCSpvcGVyYXRvciA9IE9QX09SOworCQkJCQlyZXR1cm4gUFRfT1BSOworCQkJCX0KIAkJCQll bHNlIGlmICgqKHN0YXRlLT5idWYpID09ICdcMCcpCi0JCQkJCXJldHVybiAoc3RhdGUtPmNvdW50 KSA/IFBUX0VSUiA6IFBUX0VORDsKKwkJCQl7CisJCQkJCS8qIHdlYiBzZWFyY2ggdG9sZXJhdGVz IHVuZXhwZWN0ZWQgZW5kIG9mIGxpbmUgKi8KKwkJCQkJcmV0dXJuICghaXNfd2ViICYmIHN0YXRl LT5jb3VudCkgPyBQVF9FUlIgOiBQVF9FTkQ7CisJCQkJfQogCQkJCWVsc2UgaWYgKCF0X2lzc3Bh Y2Uoc3RhdGUtPmJ1ZikpCisJCQkJeworCQkJCQlpZiAoaXNfd2ViKQorCQkJCQl7CisJCQkJCQlp ZiAoc3RhdGUtPmluX3F1b3RlcykKKwkJCQkJCXsKKwkJCQkJCQkvKiBwdXQgaW1wbGljaXQgPC0+ IGFmdGVyIGFuIG9wZXJhbmQgKi8KKwkJCQkJCQkqb3BlcmF0b3IgPSBPUF9QSFJBU0U7CisJCQkJ CQkJKndlaWdodCA9IDE7CisJCQkJCQl9CisJCQkJCQllbHNlCisJCQkJCQl7CisJCQkJCQkJLyog cHV0IGltcGxpY2l0IEFORCBhZnRlciBhbiBvcGVyYW5kICovCisJCQkJCQkJKm9wZXJhdG9yID0g T1BfQU5EOworCQkJCQkJfQorCisJCQkJCQlzdGF0ZS0+c3RhdGUgPSBXQUlUT1BFUkFORDsKKwkJ CQkJCXJldHVybiBQVF9PUFI7CisJCQkJCX0KIAkJCQkJcmV0dXJuIFBUX0VSUjsKKwkJCQl9CiAJ CQkJYnJlYWs7CiAJCQljYXNlIFdBSVRTSU5HTEVPUEVSQU5EOgogCQkJCWlmICgqKHN0YXRlLT5i dWYpID09ICdcMCcpCkBAIC0zMjAsOSArNDU5LDYgQEAgZ2V0dG9rZW5fcXVlcnkoVFNRdWVyeVBh cnNlclN0YXRlIHN0YXRlLAogCQkJCXN0YXRlLT5idWYgKz0gc3RybGVuKHN0YXRlLT5idWYpOwog CQkJCXN0YXRlLT5jb3VudCsrOwogCQkJCXJldHVybiBQVF9WQUw7Ci0JCQlkZWZhdWx0OgotCQkJ CXJldHVybiBQVF9FUlI7Ci0JCQkJYnJlYWs7CiAJCX0KIAkJc3RhdGUtPmJ1ZiArPSBwZ19tYmxl bihzdGF0ZS0+YnVmKTsKIAl9CkBAIC02MDUsNyArNzQxLDcgQEAgVFNRdWVyeQogcGFyc2VfdHNx dWVyeShjaGFyICpidWYsCiAJCQkgIFB1c2hGdW5jdGlvbiBwdXNodmFsLAogCQkJICBEYXR1bSBv cGFxdWUsCi0JCQkgIGJvb2wgaXNwbGFpbikKKwkJCSAgaW50IGZsYWdzKQogewogCXN0cnVjdCBU U1F1ZXJ5UGFyc2VyU3RhdGVEYXRhIHN0YXRlOwogCWludAkJCWk7CkBAIC02MTMsMTcgKzc0OSwy OCBAQCBwYXJzZV90c3F1ZXJ5KGNoYXIgKmJ1ZiwKIAlpbnQJCQljb21tb25sZW47CiAJUXVlcnlJ dGVtICAqcHRyOwogCUxpc3RDZWxsICAgKmNlbGw7Ci0JYm9vbAkJbmVlZGNsZWFudXA7CisJYm9v bAkJbmVlZGNsZWFudXAsCisJCQkJaXNfcGxhaW4sCisJCQkJaXNfd2ViOworCWludAkJCXRzdl9m bGFncyA9IFBfVFNWX09QUl9JU19ERUxJTSB8IFBfVFNWX0lTX1RTUVVFUlk7CisKKwlpc19wbGFp biA9IChmbGFncyAmIFBfVFNRX1BMQUlOKSAhPSAwOworCWlzX3dlYiA9IChmbGFncyAmIFBfVFNR X1dFQikgIT0gMDsKKworCWlmIChpc193ZWIpCisJCXRzdl9mbGFncyB8PSBQX1RTVl9JU19XRUI7 CiAKIAkvKiBpbml0IHN0YXRlICovCiAJc3RhdGUuYnVmZmVyID0gYnVmOwogCXN0YXRlLmJ1ZiA9 IGJ1ZjsKLQlzdGF0ZS5zdGF0ZSA9IChpc3BsYWluKSA/IFdBSVRTSU5HTEVPUEVSQU5EIDogV0FJ VEZJUlNUT1BFUkFORDsKIAlzdGF0ZS5jb3VudCA9IDA7CisJc3RhdGUuaW5fcXVvdGVzID0gZmFs c2U7CisJc3RhdGUuaXNfd2ViID0gaXNfd2ViOworCXN0YXRlLnN0YXRlID0gaXNfcGxhaW4gPyBX QUlUU0lOR0xFT1BFUkFORCA6IFdBSVRGSVJTVE9QRVJBTkQ7CiAJc3RhdGUucG9sc3RyID0gTklM OwogCiAJLyogaW5pdCB2YWx1ZSBwYXJzZXIncyBzdGF0ZSAqLwotCXN0YXRlLnZhbHN0YXRlID0g aW5pdF90c3ZlY3Rvcl9wYXJzZXIoc3RhdGUuYnVmZmVyLCB0cnVlLCB0cnVlKTsKKwlzdGF0ZS52 YWxzdGF0ZSA9IGluaXRfdHN2ZWN0b3JfcGFyc2VyKHN0YXRlLmJ1ZmZlciwgdHN2X2ZsYWdzKTsK IAogCS8qIGluaXQgbGlzdCBvZiBvcGVyYW5kICovCiAJc3RhdGUuc3VtbGVuID0gMDsKQEAgLTcx Niw3ICs4NjMsNyBAQCB0c3F1ZXJ5aW4oUEdfRlVOQ1RJT05fQVJHUykKIHsKIAljaGFyCSAgICpp biA9IFBHX0dFVEFSR19DU1RSSU5HKDApOwogCi0JUEdfUkVUVVJOX1RTUVVFUlkocGFyc2VfdHNx dWVyeShpbiwgcHVzaHZhbF9hc2lzLCBQb2ludGVyR2V0RGF0dW0oTlVMTCksIGZhbHNlKSk7CisJ UEdfUkVUVVJOX1RTUVVFUlkocGFyc2VfdHNxdWVyeShpbiwgcHVzaHZhbF9hc2lzLCBQb2ludGVy R2V0RGF0dW0oTlVMTCksIDApKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC90c3ZlY3Rvci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVjdG9yLmMKaW5k ZXggNjRlMDJlZjQzNC4uN2EyN2JkMTJhMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3RzdmVjdG9yLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVjdG9yLmMKQEAg LTIwMCw3ICsyMDAsNyBAQCB0c3ZlY3RvcmluKFBHX0ZVTkNUSU9OX0FSR1MpCiAJY2hhcgkgICAq Y3VyOwogCWludAkJCWJ1ZmxlbiA9IDI1NjsJLyogYWxsb2NhdGVkIHNpemUgb2YgdG1wYnVmICov CiAKLQlzdGF0ZSA9IGluaXRfdHN2ZWN0b3JfcGFyc2VyKGJ1ZiwgZmFsc2UsIGZhbHNlKTsKKwlz dGF0ZSA9IGluaXRfdHN2ZWN0b3JfcGFyc2VyKGJ1ZiwgMCk7CiAKIAlhcnJsZW4gPSA2NDsKIAlh cnIgPSAoV29yZEVudHJ5SU4gKikgcGFsbG9jKHNpemVvZihXb3JkRW50cnlJTikgKiBhcnJsZW4p OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVjdG9yX3BhcnNlci5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVjdG9yX3BhcnNlci5jCmluZGV4IDczNjdiYTZhNDAu LmZlZDQxMWE4NDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3ZlY3Rvcl9w YXJzZXIuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdHN2ZWN0b3JfcGFyc2VyLmMKQEAg LTMzLDYgKzMzLDcgQEAgc3RydWN0IFRTVmVjdG9yUGFyc2VTdGF0ZURhdGEKIAlpbnQJCQllbWw7 CQkJLyogbWF4IGJ5dGVzIHBlciBjaGFyYWN0ZXIgKi8KIAlib29sCQlvcHJpc2RlbGltOwkJLyog dHJlYXQgISB8ICogKCApIGFzIGRlbGltaXRlcnM/ICovCiAJYm9vbAkJaXNfdHNxdWVyeTsJCS8q IHNheSAidHNxdWVyeSIgbm90ICJ0c3ZlY3RvciIgaW4gZXJyb3JzPyAqLworCWJvb2wJCWlzX3dl YjsJCQkvKiB3ZSdyZSBpbiB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgpICovCiB9OwogCiAKQEAgLTQy LDcgKzQzLDcgQEAgc3RydWN0IFRTVmVjdG9yUGFyc2VTdGF0ZURhdGEKICAqICEgfCAmICggKQog ICovCiBUU1ZlY3RvclBhcnNlU3RhdGUKLWluaXRfdHN2ZWN0b3JfcGFyc2VyKGNoYXIgKmlucHV0 LCBib29sIG9wcmlzZGVsaW0sIGJvb2wgaXNfdHNxdWVyeSkKK2luaXRfdHN2ZWN0b3JfcGFyc2Vy KGNoYXIgKmlucHV0LCBpbnQgZmxhZ3MpCiB7CiAJVFNWZWN0b3JQYXJzZVN0YXRlIHN0YXRlOwog CkBAIC01Miw4ICs1Myw5IEBAIGluaXRfdHN2ZWN0b3JfcGFyc2VyKGNoYXIgKmlucHV0LCBib29s IG9wcmlzZGVsaW0sIGJvb2wgaXNfdHNxdWVyeSkKIAlzdGF0ZS0+bGVuID0gMzI7CiAJc3RhdGUt PndvcmQgPSAoY2hhciAqKSBwYWxsb2Moc3RhdGUtPmxlbik7CiAJc3RhdGUtPmVtbCA9IHBnX2Rh dGFiYXNlX2VuY29kaW5nX21heF9sZW5ndGgoKTsKLQlzdGF0ZS0+b3ByaXNkZWxpbSA9IG9wcmlz ZGVsaW07Ci0Jc3RhdGUtPmlzX3RzcXVlcnkgPSBpc190c3F1ZXJ5OworCXN0YXRlLT5vcHJpc2Rl bGltID0gKGZsYWdzICYgUF9UU1ZfT1BSX0lTX0RFTElNKSAhPSAwOworCXN0YXRlLT5pc190c3F1 ZXJ5ID0gKGZsYWdzICYgUF9UU1ZfSVNfVFNRVUVSWSkgIT0gMDsKKwlzdGF0ZS0+aXNfd2ViID0g KGZsYWdzICYgUF9UU1ZfSVNfV0VCKSAhPSAwOwogCiAJcmV0dXJuIHN0YXRlOwogfQpAQCAtODks MTYgKzkxLDYgQEAgZG8geyBcCiAJfSBcCiB9IHdoaWxlICgwKQogCi0vKiBwaHJhc2Ugb3BlcmF0 b3IgYmVnaW5zIHdpdGggJzwnICovCi0jZGVmaW5lIElTT1BFUkFUT1IoeCkgXAotCSggcGdfbWJs ZW4oeCkgPT0gMSAmJiAoICooeCkgPT0gJyEnIHx8CVwKLQkJCQkJCQkqKHgpID09ICcmJyB8fAlc Ci0JCQkJCQkJKih4KSA9PSAnfCcgfHwJXAotCQkJCQkJCSooeCkgPT0gJygnIHx8CVwKLQkJCQkJ CQkqKHgpID09ICcpJyB8fAlcCi0JCQkJCQkJKih4KSA9PSAnPCcJCVwKLQkJCQkJCSAgKSApCi0K IC8qIEZpbGxzIGdldHRva2VuX3RzdmVjdG9yJ3Mgb3V0cHV0IHBhcmFtZXRlcnMsIGFuZCByZXR1 cm5zIHRydWUgKi8KICNkZWZpbmUgUkVUVVJOX1RPS0VOIFwKIGRvIHsgXApAQCAtMTgzLDE0ICsx NzUsMTUgQEAgZ2V0dG9rZW5fdHN2ZWN0b3IoVFNWZWN0b3JQYXJzZVN0YXRlIHN0YXRlLAogCQl7 CiAJCQlpZiAoKihzdGF0ZS0+cHJzYnVmKSA9PSAnXDAnKQogCQkJCXJldHVybiBmYWxzZTsKLQkJ CWVsc2UgaWYgKHRfaXNlcShzdGF0ZS0+cHJzYnVmLCAnXCcnKSkKKwkJCWVsc2UgaWYgKCFzdGF0 ZS0+aXNfd2ViICYmIHRfaXNlcShzdGF0ZS0+cHJzYnVmLCAnXCcnKSkKIAkJCQlzdGF0ZWNvZGUg PSBXQUlURU5EQ01QTFg7Ci0JCQllbHNlIGlmICh0X2lzZXEoc3RhdGUtPnByc2J1ZiwgJ1xcJykp CisJCQllbHNlIGlmICghc3RhdGUtPmlzX3dlYiAmJiB0X2lzZXEoc3RhdGUtPnByc2J1ZiwgJ1xc JykpCiAJCQl7CiAJCQkJc3RhdGVjb2RlID0gV0FJVE5FWFRDSEFSOwogCQkJCW9sZHN0YXRlID0g V0FJVEVORFdPUkQ7CiAJCQl9Ci0JCQllbHNlIGlmIChzdGF0ZS0+b3ByaXNkZWxpbSAmJiBJU09Q RVJBVE9SKHN0YXRlLT5wcnNidWYpKQorCQkJZWxzZSBpZiAoKHN0YXRlLT5vcHJpc2RlbGltICYm IElTT1BFUkFUT1Ioc3RhdGUtPnByc2J1ZikpIHx8CisJCQkJCSAoc3RhdGUtPmlzX3dlYiAmJiB0 X2lzZXEoc3RhdGUtPnByc2J1ZiwgJyInKSkpCiAJCQkJUFJTU1lOVEFYRVJST1I7CiAJCQllbHNl IGlmICghdF9pc3NwYWNlKHN0YXRlLT5wcnNidWYpKQogCQkJewpAQCAtMjE3LDEzICsyMTAsMTQg QEAgZ2V0dG9rZW5fdHN2ZWN0b3IoVFNWZWN0b3JQYXJzZVN0YXRlIHN0YXRlLAogCQl9CiAJCWVs c2UgaWYgKHN0YXRlY29kZSA9PSBXQUlURU5EV09SRCkKIAkJewotCQkJaWYgKHRfaXNlcShzdGF0 ZS0+cHJzYnVmLCAnXFwnKSkKKwkJCWlmICghc3RhdGUtPmlzX3dlYiAmJiB0X2lzZXEoc3RhdGUt PnByc2J1ZiwgJ1xcJykpCiAJCQl7CiAJCQkJc3RhdGVjb2RlID0gV0FJVE5FWFRDSEFSOwogCQkJ CW9sZHN0YXRlID0gV0FJVEVORFdPUkQ7CiAJCQl9CiAJCQllbHNlIGlmICh0X2lzc3BhY2Uoc3Rh dGUtPnByc2J1ZikgfHwgKihzdGF0ZS0+cHJzYnVmKSA9PSAnXDAnIHx8Ci0JCQkJCSAoc3RhdGUt Pm9wcmlzZGVsaW0gJiYgSVNPUEVSQVRPUihzdGF0ZS0+cHJzYnVmKSkpCisJCQkJCSAoc3RhdGUt Pm9wcmlzZGVsaW0gJiYgSVNPUEVSQVRPUihzdGF0ZS0+cHJzYnVmKSkgfHwKKwkJCQkJIChzdGF0 ZS0+aXNfd2ViICYmIHRfaXNlcShzdGF0ZS0+cHJzYnVmLCAnIicpKSkKIAkJCXsKIAkJCQlSRVNJ WkVQUlNCVUY7CiAJCQkJaWYgKGN1cnBvcyA9PSBzdGF0ZS0+d29yZCkKQEAgLTI1MCwxMSArMjQ0 LDExIEBAIGdldHRva2VuX3RzdmVjdG9yKFRTVmVjdG9yUGFyc2VTdGF0ZSBzdGF0ZSwKIAkJfQog CQllbHNlIGlmIChzdGF0ZWNvZGUgPT0gV0FJVEVORENNUExYKQogCQl7Ci0JCQlpZiAodF9pc2Vx KHN0YXRlLT5wcnNidWYsICdcJycpKQorCQkJaWYgKCFzdGF0ZS0+aXNfd2ViICYmIHRfaXNlcShz dGF0ZS0+cHJzYnVmLCAnXCcnKSkKIAkJCXsKIAkJCQlzdGF0ZWNvZGUgPSBXQUlUQ0hBUkNNUExY OwogCQkJfQotCQkJZWxzZSBpZiAodF9pc2VxKHN0YXRlLT5wcnNidWYsICdcXCcpKQorCQkJZWxz ZSBpZiAoIXN0YXRlLT5pc193ZWIgJiYgdF9pc2VxKHN0YXRlLT5wcnNidWYsICdcXCcpKQogCQkJ ewogCQkJCXN0YXRlY29kZSA9IFdBSVRORVhUQ0hBUjsKIAkJCQlvbGRzdGF0ZSA9IFdBSVRFTkRD TVBMWDsKQEAgLTI3MCw3ICsyNjQsNyBAQCBnZXR0b2tlbl90c3ZlY3RvcihUU1ZlY3RvclBhcnNl U3RhdGUgc3RhdGUsCiAJCX0KIAkJZWxzZSBpZiAoc3RhdGVjb2RlID09IFdBSVRDSEFSQ01QTFgp CiAJCXsKLQkJCWlmICh0X2lzZXEoc3RhdGUtPnByc2J1ZiwgJ1wnJykpCisJCQlpZiAoIXN0YXRl LT5pc193ZWIgJiYgdF9pc2VxKHN0YXRlLT5wcnNidWYsICdcJycpKQogCQkJewogCQkJCVJFU0la RVBSU0JVRjsKIAkJCQlDT1BZQ0hBUihjdXJwb3MsIHN0YXRlLT5wcnNidWYpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuaAppbmRleCA5MGQ5OTRjNzFhLi41NjA0MTY2MzZiIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu aApAQCAtNDk2Niw2ICs0OTY2LDggQEAgREFUQShpbnNlcnQgT0lEID0gMzc0NyAoICBwbGFpbnRv X3RzcXVlcnkJUEdOU1AgUEdVSUQgMTIgMTAwIDAgMCAwIGYgZiBmIHQgZiBpIHMKIERFU0NSKCJ0 cmFuc2Zvcm0gdG8gdHNxdWVyeSIpOwogREFUQShpbnNlcnQgT0lEID0gNTAwNiAoICBwaHJhc2V0 b190c3F1ZXJ5CVBHTlNQIFBHVUlEIDEyIDEwMCAwIDAgMCBmIGYgZiB0IGYgaSBzIDIgMCAzNjE1 ICIzNzM0IDI1IiBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIHBocmFzZXRvX3Rz cXVlcnlfYnlpZCBfbnVsbF8gX251bGxfIF9udWxsXyApKTsKIERFU0NSKCJ0cmFuc2Zvcm0gdG8g dHNxdWVyeSIpOworREFUQShpbnNlcnQgT0lEID0gODg4OSAoICB3ZWJzZWFyY2hfdG9fdHNxdWVy eQlQR05TUCBQR1VJRCAxMiAxMDAgMCAwIDAgZiBmIGYgIHQgZiBpIHMgMiAwIDM2MTUgIjM3MzQg MjUiIF9udWxsXyBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVsbF8gd2Vic2VhcmNoX3RvX3RzcXVl cnlfYnlpZCBfbnVsbF8gX251bGxfIF9udWxsXyApKTsKK0RFU0NSKCJ0cmFuc2Zvcm0gdG8gdHNx dWVyeSIpOwogREFUQShpbnNlcnQgT0lEID0gMzc0OSAoICB0b190c3ZlY3RvcgkJUEdOU1AgUEdV SUQgMTIgMTAwIDAgMCAwIGYgZiBmIHQgZiBzIHMgMSAwIDM2MTQgIjI1IiBfbnVsbF8gX251bGxf IF9udWxsXyBfbnVsbF8gX251bGxfIHRvX3RzdmVjdG9yIF9udWxsXyBfbnVsbF8gX251bGxfICkp OwogREVTQ1IoInRyYW5zZm9ybSB0byB0c3ZlY3RvciIpOwogREFUQShpbnNlcnQgT0lEID0gMzc1 MCAoICB0b190c3F1ZXJ5CQlQR05TUCBQR1VJRCAxMiAxMDAgMCAwIDAgZiBmIGYgdCBmIHMgcyAx IDAgMzYxNSAiMjUiIF9udWxsXyBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVsbF8gdG9fdHNxdWVy eSBfbnVsbF8gX251bGxfIF9udWxsXyApKTsKQEAgLTQ5NzQsNiArNDk3Niw4IEBAIERBVEEoaW5z ZXJ0IE9JRCA9IDM3NTEgKCAgcGxhaW50b190c3F1ZXJ5CVBHTlNQIFBHVUlEIDEyIDEwMCAwIDAg MCBmIGYgZiB0IGYgcyBzCiBERVNDUigidHJhbnNmb3JtIHRvIHRzcXVlcnkiKTsKIERBVEEoaW5z ZXJ0IE9JRCA9IDUwMDEgKCAgcGhyYXNldG9fdHNxdWVyeQlQR05TUCBQR1VJRCAxMiAxMDAgMCAw IDAgZiBmIGYgdCBmIHMgcyAxIDAgMzYxNSAiMjUiIF9udWxsXyBfbnVsbF8gX251bGxfIF9udWxs XyBfbnVsbF8gcGhyYXNldG9fdHNxdWVyeSBfbnVsbF8gX251bGxfIF9udWxsXyApKTsKIERFU0NS KCJ0cmFuc2Zvcm0gdG8gdHNxdWVyeSIpOworREFUQShpbnNlcnQgT0lEID0gODg5MCAoICB3ZWJz ZWFyY2hfdG9fdHNxdWVyeQlQR05TUCBQR1VJRCAxMiAxMDAgMCAwIDAgZiBmIGYgdCBmIHMgcyAx IDAgMzYxNSAiMjUiIF9udWxsXyBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVsbF8gd2Vic2VhcmNo X3RvX3RzcXVlcnkgX251bGxfIF9udWxsXyBfbnVsbF8gKSk7CitERVNDUigidHJhbnNmb3JtIHRv IHRzcXVlcnkiKTsKIERBVEEoaW5zZXJ0IE9JRCA9IDQyMDkgKCAgdG9fdHN2ZWN0b3IJCVBHTlNQ IFBHVUlEIDEyIDEwMCAwIDAgMCBmIGYgZiB0IGYgcyBzIDEgMCAzNjE0ICIzODAyIiBfbnVsbF8g X251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIGpzb25iX3RvX3RzdmVjdG9yIF9udWxsXyBfbnVs bF8gX251bGxfICkpOwogREVTQ1IoInRyYW5zZm9ybSBqc29uYiB0byB0c3ZlY3RvciIpOwogREFU QShpbnNlcnQgT0lEID0gNDIxMCAoICB0b190c3ZlY3RvcgkJUEdOU1AgUEdVSUQgMTIgMTAwIDAg MCAwIGYgZiBmIHQgZiBzIHMgMSAwIDM2MTQgIjExNCIgX251bGxfIF9udWxsXyBfbnVsbF8gX251 bGxfIF9udWxsXyBqc29uX3RvX3RzdmVjdG9yIF9udWxsXyBfbnVsbF8gX251bGxfICkpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdHNlYXJjaC90c191dGlscy5oIGIvc3JjL2luY2x1ZGUvdHNl YXJjaC90c191dGlscy5oCmluZGV4IGY4ZGRjZTVlY2IuLjczZTk2OWZlOWMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3RzZWFyY2gvdHNfdXRpbHMuaAorKysgYi9zcmMvaW5jbHVkZS90c2VhcmNo L3RzX3V0aWxzLmgKQEAgLTI1LDkgKzI1LDExIEBACiBzdHJ1Y3QgVFNWZWN0b3JQYXJzZVN0YXRl RGF0YTsJLyogb3BhcXVlIHN0cnVjdCBpbiB0c3ZlY3Rvcl9wYXJzZXIuYyAqLwogdHlwZWRlZiBz dHJ1Y3QgVFNWZWN0b3JQYXJzZVN0YXRlRGF0YSAqVFNWZWN0b3JQYXJzZVN0YXRlOwogCi1leHRl cm4gVFNWZWN0b3JQYXJzZVN0YXRlIGluaXRfdHN2ZWN0b3JfcGFyc2VyKGNoYXIgKmlucHV0LAot CQkJCQkgYm9vbCBvcHJpc2RlbGltLAotCQkJCQkgYm9vbCBpc190c3F1ZXJ5KTsKKyNkZWZpbmUg UF9UU1ZfT1BSX0lTX0RFTElNCSgxIDw8IDApCisjZGVmaW5lIFBfVFNWX0lTX1RTUVVFUlkJKDEg PDwgMSkKKyNkZWZpbmUgUF9UU1ZfSVNfV0VCCQkoMSA8PCAyKQorCitleHRlcm4gVFNWZWN0b3JQ YXJzZVN0YXRlIGluaXRfdHN2ZWN0b3JfcGFyc2VyKGNoYXIgKmlucHV0LCBpbnQgZmxhZ3MpOwog ZXh0ZXJuIHZvaWQgcmVzZXRfdHN2ZWN0b3JfcGFyc2VyKFRTVmVjdG9yUGFyc2VTdGF0ZSBzdGF0 ZSwgY2hhciAqaW5wdXQpOwogZXh0ZXJuIGJvb2wgZ2V0dG9rZW5fdHN2ZWN0b3IoVFNWZWN0b3JQ YXJzZVN0YXRlIHN0YXRlLAogCQkJCSAgY2hhciAqKnRva2VuLCBpbnQgKmxlbiwKQEAgLTM1LDYg KzM3LDE2IEBAIGV4dGVybiBib29sIGdldHRva2VuX3RzdmVjdG9yKFRTVmVjdG9yUGFyc2VTdGF0 ZSBzdGF0ZSwKIAkJCQkgIGNoYXIgKiplbmRwdHIpOwogZXh0ZXJuIHZvaWQgY2xvc2VfdHN2ZWN0 b3JfcGFyc2VyKFRTVmVjdG9yUGFyc2VTdGF0ZSBzdGF0ZSk7CiAKKy8qIHBocmFzZSBvcGVyYXRv ciBiZWdpbnMgd2l0aCAnPCcgKi8KKyNkZWZpbmUgSVNPUEVSQVRPUih4KSBcCisJKCBwZ19tYmxl bih4KSA9PSAxICYmICggKih4KSA9PSAnIScgfHwJXAorCQkJCQkJCSooeCkgPT0gJyYnIHx8CVwK KwkJCQkJCQkqKHgpID09ICd8JyB8fAlcCisJCQkJCQkJKih4KSA9PSAnKCcgfHwJXAorCQkJCQkJ CSooeCkgPT0gJyknIHx8CVwKKwkJCQkJCQkqKHgpID09ICc8JwkJXAorCQkJCQkJICApICkKKwog LyogcGFyc2VfdHNxdWVyeSAqLwogCiBzdHJ1Y3QgVFNRdWVyeVBhcnNlclN0YXRlRGF0YTsJLyog cHJpdmF0ZSBpbiBiYWNrZW5kL3V0aWxzL2FkdC90c3F1ZXJ5LmMgKi8KQEAgLTQ2LDkgKzU4LDEz IEBAIHR5cGVkZWYgdm9pZCAoKlB1c2hGdW5jdGlvbikgKERhdHVtIG9wYXF1ZSwgVFNRdWVyeVBh cnNlclN0YXRlIHN0YXRlLAogCQkJCQkJCQkJCQkJCSAqIFF1ZXJ5T3BlcmFuZCBzdHJ1Y3QgKi8K IAkJCQkJCQkgIGJvb2wgcHJlZml4KTsKIAorI2RlZmluZSBQX1RTUV9QTEFJTgkJKDEgPDwgMCkK KyNkZWZpbmUgUF9UU1FfV0VCCQkoMSA8PCAxKQorCiBleHRlcm4gVFNRdWVyeSBwYXJzZV90c3F1 ZXJ5KGNoYXIgKmJ1ZiwKLQkJCSAgUHVzaEZ1bmN0aW9uIHB1c2h2YWwsCi0JCQkgIERhdHVtIG9w YXF1ZSwgYm9vbCBpc3BsYWluKTsKKwkJCQkJCQkgUHVzaEZ1bmN0aW9uIHB1c2h2YWwsCisJCQkJ CQkJIERhdHVtIG9wYXF1ZSwKKwkJCQkJCQkgaW50IGZsYWdzKTsKIAogLyogRnVuY3Rpb25zIGZv ciB1c2UgYnkgUHVzaEZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucyAqLwogZXh0ZXJuIHZvaWQgcHVz aFZhbHVlKFRTUXVlcnlQYXJzZXJTdGF0ZSBzdGF0ZSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvdHNlYXJjaC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Rz ZWFyY2gub3V0CmluZGV4IGQ2M2ZiMTJmMWQuLjM3ODI1YTExMzAgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHNlYXJjaC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC90c2VhcmNoLm91dApAQCAtMTY3MiwzICsxNjcyLDQzMiBAQCBzZWxlY3QgKiBmcm9t IHBocmFzZV9pbmRleF90ZXN0IHdoZXJlIGZ0cyBAQCBwaHJhc2V0b190c3F1ZXJ5KCdlbmdsaXNo JywgJ2ZhdCBjYQogKDEgcm93KQogCiBzZXQgZW5hYmxlX3NlcXNjYW4gPSBvbjsKKy0tIHRlc3Qg d2Vic2VhcmNoX3RvX3RzcXVlcnkgZnVuY3Rpb24KK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVy eSgnc2ltcGxlJywgJ0kgaGF2ZSBhIGZhdDoqQUJDRCBjYXQnKTsKKyAgICAgICAgICAgIHdlYnNl YXJjaF90b190c3F1ZXJ5ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgJ2knICYgJ2hhdmUnICYgJ2EnICYgJ2ZhdCcgJiAnYWJjZCcg JiAnY2F0JworKDEgcm93KQorCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3NpbXBsZScs ICdvcmFuZ2U6KipBQUJCQ0NERCcpOworIHdlYnNlYXJjaF90b190c3F1ZXJ5ICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgJ29yYW5nZScgJiAnYWFiYmNjZGQnCisoMSByb3cpCisKK3NlbGVj dCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2ltcGxlJywgJ2ZhdDpBIWNhdDpCfHJhdDpDPCcpOwor ICAgICAgICAgIHdlYnNlYXJjaF90b190c3F1ZXJ5ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2ZhdCcgJiAnYScgJiAnY2F0JyAmICdiJyAm ICdyYXQnICYgJ2MnCisoMSByb3cpCisKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2lt cGxlJywgJ2ZhdDpBIDogY2F0OkInKTsKKyAgIHdlYnNlYXJjaF90b190c3F1ZXJ5ICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2ZhdCcgJiAnYScgJiAnY2F0JyAmICdiJworKDEg cm93KQorCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3NpbXBsZScsICdmYXQqcmF0Jyk7 Cisgd2Vic2VhcmNoX3RvX3RzcXVlcnkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2ZhdCcg JiAncmF0JworKDEgcm93KQorCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3NpbXBsZScs ICdmYXQtcmF0Jyk7CisgICB3ZWJzZWFyY2hfdG9fdHNxdWVyeSAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICdmYXQtcmF0JyAmICdmYXQnICYgJ3JhdCcKKygxIHJvdykKKworc2Vs ZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdzaW1wbGUnLCAnZmF0X3JhdCcpOworIHdlYnNlYXJj aF90b190c3F1ZXJ5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICdmYXQnICYgJ3JhdCcKKygx IHJvdykKKworLS0gd2VpZ2h0cyBhcmUgY29tcGxldGVseSBpZ25vcmVkCitzZWxlY3Qgd2Vic2Vh cmNoX3RvX3RzcXVlcnkoJ3NpbXBsZScsICdhYmMgOiBkZWYnKTsKKyB3ZWJzZWFyY2hfdG9fdHNx dWVyeSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAnYWJjJyAmICdkZWYnCisoMSByb3cpCisK K3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2ltcGxlJywgJ2FiYzpkZWYnKTsKKyB3ZWJz ZWFyY2hfdG9fdHNxdWVyeSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAnYWJjJyAmICdkZWYn CisoMSByb3cpCisKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2ltcGxlJywgJ2E6Ojpi Jyk7Cisgd2Vic2VhcmNoX3RvX3RzcXVlcnkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2En ICYgJ2InCisoMSByb3cpCisKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2ltcGxlJywg J2FiYzpkJyk7Cisgd2Vic2VhcmNoX3RvX3RzcXVlcnkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgJ2FiYycgJiAnZCcKKygxIHJvdykKKworc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdz aW1wbGUnLCAnOicpOworTk9USUNFOiAgdGV4dC1zZWFyY2ggcXVlcnkgY29udGFpbnMgb25seSBz dG9wIHdvcmRzIG9yIGRvZXNuJ3QgY29udGFpbiBsZXhlbWVzLCBpZ25vcmVkCisgd2Vic2VhcmNo X3RvX3RzcXVlcnkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIHRo ZXNlIG9wZXJhdG9ycyBhcmUgaWdub3JlZAorc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdz aW1wbGUnLCAnYWJjICYgZGVmJyk7Cisgd2Vic2VhcmNoX3RvX3RzcXVlcnkgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgJ2FiYycgJiAnZGVmJworKDEgcm93KQorCitzZWxlY3Qgd2Vic2VhcmNo X3RvX3RzcXVlcnkoJ3NpbXBsZScsICdhYmMgfCBkZWYnKTsKKyB3ZWJzZWFyY2hfdG9fdHNxdWVy eSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAnYWJjJyAmICdkZWYnCisoMSByb3cpCisKK3Nl bGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2ltcGxlJywgJ2FiYyA8LT4gZGVmJyk7Cisgd2Vi c2VhcmNoX3RvX3RzcXVlcnkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2FiYycgJiAnZGVm JworKDEgcm93KQorCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3NpbXBsZScsICdhYmMg KHBnIG9yIGNsYXNzKScpOworICB3ZWJzZWFyY2hfdG9fdHNxdWVyeSAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAnYWJjJyAmICdwZycgfCAnY2xhc3MnCisoMSByb3cpCisKKy0tIE5PVCBp cyBpZ25vcmVkIGluIHF1b3Rlcworc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdlbmdsaXNo JywgJ015IGJyYW5kIG5ldyBzbWFydHBob25lJyk7CisgICAgIHdlYnNlYXJjaF90b190c3F1ZXJ5 ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2JyYW5kJyAmICduZXcn ICYgJ3NtYXJ0cGhvbicKKygxIHJvdykKKworc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdl bmdsaXNoJywgJ015IGJyYW5kICJuZXcgc21hcnRwaG9uZSInKTsKKyAgICAgIHdlYnNlYXJjaF90 b190c3F1ZXJ5ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2Jy YW5kJyAmICduZXcnIDwtPiAnc21hcnRwaG9uJworKDEgcm93KQorCitzZWxlY3Qgd2Vic2VhcmNo X3RvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAnTXkgYnJhbmQgIm5ldyAtc21hcnRwaG9uZSInKTsKKyAg ICAgIHdlYnNlYXJjaF90b190c3F1ZXJ5ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgJ2JyYW5kJyAmICduZXcnIDwtPiAnc21hcnRwaG9uJworKDEgcm93KQorCist LSB0ZXN0IE9SIG9wZXJhdG9yCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3NpbXBsZScs ICdjYXQgb3IgcmF0Jyk7Cisgd2Vic2VhcmNoX3RvX3RzcXVlcnkgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgJ2NhdCcgfCAncmF0JworKDEgcm93KQorCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3Rz cXVlcnkoJ3NpbXBsZScsICdjYXQgT1IgcmF0Jyk7Cisgd2Vic2VhcmNoX3RvX3RzcXVlcnkgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2NhdCcgfCAncmF0JworKDEgcm93KQorCitzZWxlY3Qg d2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3NpbXBsZScsICdjYXQgIk9SIiByYXQnKTsKKyB3ZWJzZWFy Y2hfdG9fdHNxdWVyeSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAnY2F0JyAmICdvcicgJiAn cmF0JworKDEgcm93KQorCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3NpbXBsZScsICdj YXQgT1InKTsKKyB3ZWJzZWFyY2hfdG9fdHNxdWVyeSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAnY2F0JyAmICdvcicKKygxIHJvdykKKworc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdz aW1wbGUnLCAnT1IgcmF0Jyk7Cisgd2Vic2VhcmNoX3RvX3RzcXVlcnkgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgJ29yJyAmICdyYXQnCisoMSByb3cpCisKK3NlbGVjdCB3ZWJzZWFyY2hfdG9f dHNxdWVyeSgnc2ltcGxlJywgJyJmYXQgY2F0IE9SIHJhdCInKTsKKyAgICAgICAgd2Vic2VhcmNo X3RvX3RzcXVlcnkgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgJ2ZhdCcgPC0+ICdjYXQnIDwtPiAnb3InIDwtPiAncmF0JworKDEgcm93KQorCitzZWxlY3Qg d2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3NpbXBsZScsICdmYXQgKGNhdCBPUiByYXQnKTsKKyB3ZWJz ZWFyY2hfdG9fdHNxdWVyeSAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICdmYXQnICYgJ2Nh dCcgfCAncmF0JworKDEgcm93KQorCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3NpbXBs ZScsICdvciBPUiBvcicpOworIHdlYnNlYXJjaF90b190c3F1ZXJ5IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICdvcicgfCAnb3InCisoMSByb3cpCisKKy0tIE9SIGlzIGFuIG9wZXJhdG9yIGhl cmUgLi4uCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3NpbXBsZScsICciZmF0IGNhdCJv ciJmYXQgcmF0IicpOworICAgICAgIHdlYnNlYXJjaF90b190c3F1ZXJ5ICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2ZhdCcgPC0+ICdjYXQnIHwgJ2ZhdCcg PC0+ICdyYXQnCisoMSByb3cpCisKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2ltcGxl JywgJ2ZhdCBvcihyYXQnKTsKKyB3ZWJzZWFyY2hfdG9fdHNxdWVyeSAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAnZmF0JyB8ICdyYXQnCisoMSByb3cpCisKK3NlbGVjdCB3ZWJzZWFyY2hfdG9f dHNxdWVyeSgnc2ltcGxlJywgJ2ZhdCBvcilyYXQnKTsKKyB3ZWJzZWFyY2hfdG9fdHNxdWVyeSAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAnZmF0JyB8ICdyYXQnCisoMSByb3cpCisKK3NlbGVj dCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2ltcGxlJywgJ2ZhdCBvciZyYXQnKTsKKyB3ZWJzZWFy Y2hfdG9fdHNxdWVyeSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAnZmF0JyB8ICdyYXQnCiso MSByb3cpCisKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2ltcGxlJywgJ2ZhdCBvcnxy YXQnKTsKKyB3ZWJzZWFyY2hfdG9fdHNxdWVyeSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAn ZmF0JyB8ICdyYXQnCisoMSByb3cpCisKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2lt cGxlJywgJ2ZhdCBvciFyYXQnKTsKKyB3ZWJzZWFyY2hfdG9fdHNxdWVyeSAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAnZmF0JyB8ICdyYXQnCisoMSByb3cpCisKK3NlbGVjdCB3ZWJzZWFyY2hf dG9fdHNxdWVyeSgnc2ltcGxlJywgJ2ZhdCBvcjxyYXQnKTsKKyB3ZWJzZWFyY2hfdG9fdHNxdWVy eSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAnZmF0JyB8ICdyYXQnCisoMSByb3cpCisKK3Nl bGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2ltcGxlJywgJ2ZhdCBvcj5yYXQnKTsKKyB3ZWJz ZWFyY2hfdG9fdHNxdWVyeSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAnZmF0JyB8ICdyYXQn CisoMSByb3cpCisKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2ltcGxlJywgJ2ZhdCBv ciAnKTsKKyB3ZWJzZWFyY2hfdG9fdHNxdWVyeSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAn ZmF0JworKDEgcm93KQorCistLSAuLi4gYnV0IG5vdCBoZXJlCitzZWxlY3Qgd2Vic2VhcmNoX3Rv X3RzcXVlcnkoJ3NpbXBsZScsICdhYmMgb3JhbmdlJyk7Cisgd2Vic2VhcmNoX3RvX3RzcXVlcnkg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2FiYycgJiAnb3JhbmdlJworKDEgcm93KQorCitz ZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3NpbXBsZScsICdhYmMgb3LRgtC10YHRgicpOwor IHdlYnNlYXJjaF90b190c3F1ZXJ5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICdhYmMnICYg J29y0YLQtdGB0YInCisoMSByb3cpCisKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2lt cGxlJywgJ2FiYyBPUjEyMzQnKTsKKyB3ZWJzZWFyY2hfdG9fdHNxdWVyeSAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAnYWJjJyAmICdvcjEyMzQnCisoMSByb3cpCisKK3NlbGVjdCB3ZWJzZWFy Y2hfdG9fdHNxdWVyeSgnc2ltcGxlJywgJ2FiYyBvci1hYmMnKTsKKyAgICAgIHdlYnNlYXJjaF90 b190c3F1ZXJ5ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2Fi YycgJiAnb3ItYWJjJyAmICdvcicgJiAnYWJjJworKDEgcm93KQorCitzZWxlY3Qgd2Vic2VhcmNo X3RvX3RzcXVlcnkoJ3NpbXBsZScsICdhYmMgT1JfYWJjJyk7Cisgd2Vic2VhcmNoX3RvX3RzcXVl cnkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2FiYycgJiAnb3InICYgJ2FiYycKKygxIHJv dykKKworc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdzaW1wbGUnLCAnYWJjIG9yJyk7Cisg d2Vic2VhcmNoX3RvX3RzcXVlcnkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2FiYycgJiAn b3InCisoMSByb3cpCisKKy0tIHRlc3QgcXVvdGVzCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVl cnkoJ2VuZ2xpc2gnLCAnInBnX2NsYXNzIHBnJyk7Cisgd2Vic2VhcmNoX3RvX3RzcXVlcnkgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAncGcnICYgJ2NsYXNzJyAmICdwZycKKygxIHJvdykK Kworc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdlbmdsaXNoJywgJ3BnX2NsYXNzIHBnIicp OworIHdlYnNlYXJjaF90b190c3F1ZXJ5ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ3Bn JyAmICdjbGFzcycgJiAncGcnCisoMSByb3cpCisKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVy eSgnZW5nbGlzaCcsICcicGdfY2xhc3MgcGciJyk7CisgICAgd2Vic2VhcmNoX3RvX3RzcXVlcnkg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoICdwZycgJiAnY2xhc3MnICkg PC0+ICdwZycKKygxIHJvdykKKworc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdlbmdsaXNo JywgJ2FiYyAicGdfY2xhc3MgcGciJyk7CisgICAgICAgIHdlYnNlYXJjaF90b190c3F1ZXJ5ICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2FiYycgJiAo ICdwZycgJiAnY2xhc3MnICkgPC0+ICdwZycKKygxIHJvdykKKworc2VsZWN0IHdlYnNlYXJjaF90 b190c3F1ZXJ5KCdlbmdsaXNoJywgJyJwZ19jbGFzcyBwZyIgZGVmJyk7CisgICAgICAgIHdlYnNl YXJjaF90b190c3F1ZXJ5ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKCAncGcnICYgJ2NsYXNzJyApIDwtPiAncGcnICYgJ2RlZicKKygxIHJvdykKKwor c2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdlbmdsaXNoJywgJ2FiYyAicGcgcGdfY2xhc3Mg cGciIGRlZicpOworICAgICAgICAgICAgICAgICB3ZWJzZWFyY2hfdG9fdHNxdWVyeSAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAnYWJjJyAmICdwZycgPC0+ICggJ3BnJyAmICdjbGFzcycgKSA8LT4gJ3BnJyAm ICdkZWYnCisoMSByb3cpCisKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnZW5nbGlzaCcs ICcgb3IgInBnIHBnX2NsYXNzIHBnIiBvciAnKTsKKyAgICAgICAgIHdlYnNlYXJjaF90b190c3F1 ZXJ5ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICdw ZycgPC0+ICggJ3BnJyAmICdjbGFzcycgKSA8LT4gJ3BnJworKDEgcm93KQorCitzZWxlY3Qgd2Vi c2VhcmNoX3RvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAnIiJwZyBwZ19jbGFzcyBwZyIiJyk7CisgICAg IHdlYnNlYXJjaF90b190c3F1ZXJ5ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICdwZycgJiAncGcnICYgJ2NsYXNzJyAmICdwZycKKygxIHJvdykKKworc2VsZWN0IHdlYnNl YXJjaF90b190c3F1ZXJ5KCdlbmdsaXNoJywgJ2FiYyAiIiIiIiBkZWYnKTsKKyB3ZWJzZWFyY2hf dG9fdHNxdWVyeSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAnYWJjJyAmICdkZWYnCisoMSBy b3cpCisKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnZW5nbGlzaCcsICdjYXQgLSJmYXQg cmF0IicpOworICAgICB3ZWJzZWFyY2hfdG9fdHNxdWVyeSAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAnY2F0JyAmICEoICdmYXQnIDwtPiAncmF0JyApCisoMSByb3cpCisK K3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnZW5nbGlzaCcsICdjYXQgLSJmYXQgcmF0IiBj aGVlc2UnKTsKKyAgICAgICAgICB3ZWJzZWFyY2hfdG9fdHNxdWVyeSAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAnY2F0JyAmICEoICdmYXQnIDwt PiAncmF0JyApICYgJ2NoZWVzJworKDEgcm93KQorCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVl cnkoJ2VuZ2xpc2gnLCAnYWJjICJkZWYgLSInKTsKKyB3ZWJzZWFyY2hfdG9fdHNxdWVyeSAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAnYWJjJyAmICdkZWYnCisoMSByb3cpCisKK3NlbGVjdCB3 ZWJzZWFyY2hfdG9fdHNxdWVyeSgnZW5nbGlzaCcsICdhYmMgImRlZiA6IicpOworIHdlYnNlYXJj aF90b190c3F1ZXJ5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICdhYmMnICYgJ2RlZicKKygx IHJvdykKKworc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdlbmdsaXNoJywgJyJBIGZhdCBj YXQiIGhhcyBqdXN0IGVhdGVuIGEgLXJhdC4nKTsKKyAgICAgICAgd2Vic2VhcmNoX3RvX3RzcXVl cnkgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2ZhdCcg PC0+ICdjYXQnICYgJ2VhdGVuJyAmICEncmF0JworKDEgcm93KQorCitzZWxlY3Qgd2Vic2VhcmNo X3RvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAnIkEgZmF0IGNhdCIgaGFzIGp1c3QgZWF0ZW4gT1IgIXJh dC4nKTsKKyAgICAgICB3ZWJzZWFyY2hfdG9fdHNxdWVyeSAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICdmYXQnIDwtPiAnY2F0JyAmICdlYXRlbicgfCAncmF0 JworKDEgcm93KQorCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAnIkEg ZmF0IGNhdCIgaGFzIGp1c3QgKCtlYXRlbiBPUiAtcmF0KScpOworICAgICAgICB3ZWJzZWFyY2hf dG9fdHNxdWVyeSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAnZmF0JyA8LT4gJ2NhdCcgJiAnZWF0ZW4nIHwgISdyYXQnCisoMSByb3cpCisKK3NlbGVjdCB3 ZWJzZWFyY2hfdG9fdHNxdWVyeSgnZW5nbGlzaCcsICd0aGlzIGlzIC0tLS1maW5lJyk7Cisgd2Vi c2VhcmNoX3RvX3RzcXVlcnkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgISEhISdmaW5lJwor KDEgcm93KQorCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAnKCgpKSAp KSkpIHRoaXMgfHx8IGlzICYmIC1maW5lLCAiZGVhciBmcmllbmQiIE9SIGdvb2QnKTsKKyAgICAg ICAgICB3ZWJzZWFyY2hfdG9fdHNxdWVyeSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAhJ2ZpbmUnICYgJ2RlYXInIDwtPiAnZnJpZW5kJyB8ICdn b29kJworKDEgcm93KQorCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAn YW4gb2xkIDwtPiBjYXQgIiBpcyBmaW5lICYmJiB0b28nKTsKKyAgd2Vic2VhcmNoX3RvX3RzcXVl cnkgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ29sZCcgJiAnY2F0JyAmICdmaW5lJwor KDEgcm93KQorCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAnIkEgdGhl IiBPUiBqdXN0IG9uJyk7CitOT1RJQ0U6ICB0ZXh0LXNlYXJjaCBxdWVyeSBjb250YWlucyBvbmx5 IHN0b3Agd29yZHMgb3IgZG9lc24ndCBjb250YWluIGxleGVtZXMsIGlnbm9yZWQKKyB3ZWJzZWFy Y2hfdG9fdHNxdWVyeSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2Vs ZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdydXNzaWFuJywgJyLRgtC+0LvRgdGC0LDRjyDQutC+ 0YjQutCwIiDRgdGK0LXQu9CwINC60YDRi9GB0YMnKTsKKyAgICAgICAgIHdlYnNlYXJjaF90b190 c3F1ZXJ5ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICfRgtC+0LvRgdGCJyA8LT4gJ9C60L7RiNC6JyAmICfRgdGK0LXQuycgJiAn0LrRgNGL0YEnCiso MSByb3cpCisKK3NlbGVjdCB0b190c3ZlY3RvcigncnVzc2lhbicsICfRgdGK0LXQu9CwINGC0L7Q u9GB0YLQsNGPINC60L7RiNC60LAg0LrRgNGL0YHRgycpIEBACit3ZWJzZWFyY2hfdG9fdHNxdWVy eSgncnVzc2lhbicsICci0YLQvtC70YHRgtCw0Y8g0LrQvtGI0LrQsCIg0YHRitC10LvQsCDQutGA 0YvRgdGDJyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitzZWxlY3Qg dG9fdHN2ZWN0b3IoJ3J1c3NpYW4nLCAn0YHRitC10LvQsCDRgtC+0LvRgdGC0LDRjyDRgdC10YDQ sNGPINC60L7RiNC60LAg0LrRgNGL0YHRgycpIEBACit3ZWJzZWFyY2hfdG9fdHNxdWVyeSgncnVz c2lhbicsICci0YLQvtC70YHRgtCw0Y8g0LrQvtGI0LrQsCIg0YHRitC10LvQsCDQutGA0YvRgdGD Jyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZgorKDEgcm93KQorCistLSBjYXNlcyBoYW5k bGVkIGJ5IGdldHRva2VuX3RzdmVjdG9yKCkKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgn JycnKTsKK05PVElDRTogIHRleHQtc2VhcmNoIHF1ZXJ5IGNvbnRhaW5zIG9ubHkgc3RvcCB3b3Jk cyBvciBkb2Vzbid0IGNvbnRhaW4gbGV4ZW1lcywgaWdub3JlZAorIHdlYnNlYXJjaF90b190c3F1 ZXJ5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxlY3Qgd2Vic2Vh cmNoX3RvX3RzcXVlcnkoJycnYWJjJycnJ2RlZicnJyk7Cisgd2Vic2VhcmNoX3RvX3RzcXVlcnkg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgJ2FiYycgJiAnZGVmJworKDEgcm93KQorCitzZWxl Y3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ1xhYmMnKTsKKyB3ZWJzZWFyY2hfdG9fdHNxdWVyeSAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAnYWJjJworKDEgcm93KQorCitzZWxlY3Qgd2Vic2Vh cmNoX3RvX3RzcXVlcnkoJ1wnKTsKK05PVElDRTogIHRleHQtc2VhcmNoIHF1ZXJ5IGNvbnRhaW5z IG9ubHkgc3RvcCB3b3JkcyBvciBkb2Vzbid0IGNvbnRhaW4gbGV4ZW1lcywgaWdub3JlZAorIHdl YnNlYXJjaF90b190c3F1ZXJ5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90c2VhcmNoLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3RzZWFyY2guc3FsCmluZGV4IDFjODUyMGIzZTkuLmYyOTlhNWQzMmIgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RzZWFyY2guc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3RzZWFyY2guc3FsCkBAIC01MzksMyArNTM5LDk4IEBAIGNyZWF0ZSBpbmRl eCBwaHJhc2VfaW5kZXhfdGVzdF9pZHggb24gcGhyYXNlX2luZGV4X3Rlc3QgdXNpbmcgZ2luKGZ0 cyk7CiBzZXQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CiBzZWxlY3QgKiBmcm9tIHBocmFzZV9pbmRl eF90ZXN0IHdoZXJlIGZ0cyBAQCBwaHJhc2V0b190c3F1ZXJ5KCdlbmdsaXNoJywgJ2ZhdCBjYXQn KTsKIHNldCBlbmFibGVfc2Vxc2NhbiA9IG9uOworCistLSB0ZXN0IHdlYnNlYXJjaF90b190c3F1 ZXJ5IGZ1bmN0aW9uCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3NpbXBsZScsICdJIGhh dmUgYSBmYXQ6KkFCQ0QgY2F0Jyk7CitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3NpbXBs ZScsICdvcmFuZ2U6KipBQUJCQ0NERCcpOworc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdz aW1wbGUnLCAnZmF0OkEhY2F0OkJ8cmF0OkM8Jyk7CitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVl cnkoJ3NpbXBsZScsICdmYXQ6QSA6IGNhdDpCJyk7CisKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNx dWVyeSgnc2ltcGxlJywgJ2ZhdCpyYXQnKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgn c2ltcGxlJywgJ2ZhdC1yYXQnKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2ltcGxl JywgJ2ZhdF9yYXQnKTsKKworLS0gd2VpZ2h0cyBhcmUgY29tcGxldGVseSBpZ25vcmVkCitzZWxl Y3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3NpbXBsZScsICdhYmMgOiBkZWYnKTsKK3NlbGVjdCB3 ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2ltcGxlJywgJ2FiYzpkZWYnKTsKK3NlbGVjdCB3ZWJzZWFy Y2hfdG9fdHNxdWVyeSgnc2ltcGxlJywgJ2E6OjpiJyk7CitzZWxlY3Qgd2Vic2VhcmNoX3RvX3Rz cXVlcnkoJ3NpbXBsZScsICdhYmM6ZCcpOworc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdz aW1wbGUnLCAnOicpOworCistLSB0aGVzZSBvcGVyYXRvcnMgYXJlIGlnbm9yZWQKK3NlbGVjdCB3 ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2ltcGxlJywgJ2FiYyAmIGRlZicpOworc2VsZWN0IHdlYnNl YXJjaF90b190c3F1ZXJ5KCdzaW1wbGUnLCAnYWJjIHwgZGVmJyk7CitzZWxlY3Qgd2Vic2VhcmNo X3RvX3RzcXVlcnkoJ3NpbXBsZScsICdhYmMgPC0+IGRlZicpOworc2VsZWN0IHdlYnNlYXJjaF90 b190c3F1ZXJ5KCdzaW1wbGUnLCAnYWJjIChwZyBvciBjbGFzcyknKTsKKworLS0gTk9UIGlzIGln bm9yZWQgaW4gcXVvdGVzCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAn TXkgYnJhbmQgbmV3IHNtYXJ0cGhvbmUnKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgn ZW5nbGlzaCcsICdNeSBicmFuZCAibmV3IHNtYXJ0cGhvbmUiJyk7CitzZWxlY3Qgd2Vic2VhcmNo X3RvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAnTXkgYnJhbmQgIm5ldyAtc21hcnRwaG9uZSInKTsKKwor LS0gdGVzdCBPUiBvcGVyYXRvcgorc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdzaW1wbGUn LCAnY2F0IG9yIHJhdCcpOworc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdzaW1wbGUnLCAn Y2F0IE9SIHJhdCcpOworc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdzaW1wbGUnLCAnY2F0 ICJPUiIgcmF0Jyk7CitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3NpbXBsZScsICdjYXQg T1InKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2ltcGxlJywgJ09SIHJhdCcpOwor c2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdzaW1wbGUnLCAnImZhdCBjYXQgT1IgcmF0Iicp Oworc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdzaW1wbGUnLCAnZmF0IChjYXQgT1IgcmF0 Jyk7CitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3NpbXBsZScsICdvciBPUiBvcicpOwor CistLSBPUiBpcyBhbiBvcGVyYXRvciBoZXJlIC4uLgorc2VsZWN0IHdlYnNlYXJjaF90b190c3F1 ZXJ5KCdzaW1wbGUnLCAnImZhdCBjYXQib3IiZmF0IHJhdCInKTsKK3NlbGVjdCB3ZWJzZWFyY2hf dG9fdHNxdWVyeSgnc2ltcGxlJywgJ2ZhdCBvcihyYXQnKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9f dHNxdWVyeSgnc2ltcGxlJywgJ2ZhdCBvcilyYXQnKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNx dWVyeSgnc2ltcGxlJywgJ2ZhdCBvciZyYXQnKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVy eSgnc2ltcGxlJywgJ2ZhdCBvcnxyYXQnKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgn c2ltcGxlJywgJ2ZhdCBvciFyYXQnKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2lt cGxlJywgJ2ZhdCBvcjxyYXQnKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2ltcGxl JywgJ2ZhdCBvcj5yYXQnKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2ltcGxlJywg J2ZhdCBvciAnKTsKKworLS0gLi4uIGJ1dCBub3QgaGVyZQorc2VsZWN0IHdlYnNlYXJjaF90b190 c3F1ZXJ5KCdzaW1wbGUnLCAnYWJjIG9yYW5nZScpOworc2VsZWN0IHdlYnNlYXJjaF90b190c3F1 ZXJ5KCdzaW1wbGUnLCAnYWJjIG9y0YLQtdGB0YInKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNx dWVyeSgnc2ltcGxlJywgJ2FiYyBPUjEyMzQnKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVy eSgnc2ltcGxlJywgJ2FiYyBvci1hYmMnKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgn c2ltcGxlJywgJ2FiYyBPUl9hYmMnKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnc2lt cGxlJywgJ2FiYyBvcicpOworCistLSB0ZXN0IHF1b3Rlcworc2VsZWN0IHdlYnNlYXJjaF90b190 c3F1ZXJ5KCdlbmdsaXNoJywgJyJwZ19jbGFzcyBwZycpOworc2VsZWN0IHdlYnNlYXJjaF90b190 c3F1ZXJ5KCdlbmdsaXNoJywgJ3BnX2NsYXNzIHBnIicpOworc2VsZWN0IHdlYnNlYXJjaF90b190 c3F1ZXJ5KCdlbmdsaXNoJywgJyJwZ19jbGFzcyBwZyInKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9f dHNxdWVyeSgnZW5nbGlzaCcsICdhYmMgInBnX2NsYXNzIHBnIicpOworc2VsZWN0IHdlYnNlYXJj aF90b190c3F1ZXJ5KCdlbmdsaXNoJywgJyJwZ19jbGFzcyBwZyIgZGVmJyk7CitzZWxlY3Qgd2Vi c2VhcmNoX3RvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAnYWJjICJwZyBwZ19jbGFzcyBwZyIgZGVmJyk7 CitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAnIG9yICJwZyBwZ19jbGFz cyBwZyIgb3IgJyk7CitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAnIiJw ZyBwZ19jbGFzcyBwZyIiJyk7CitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ2VuZ2xpc2gn LCAnYWJjICIiIiIiIGRlZicpOworc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdlbmdsaXNo JywgJ2NhdCAtImZhdCByYXQiJyk7CitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ2VuZ2xp c2gnLCAnY2F0IC0iZmF0IHJhdCIgY2hlZXNlJyk7CitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVl cnkoJ2VuZ2xpc2gnLCAnYWJjICJkZWYgLSInKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVy eSgnZW5nbGlzaCcsICdhYmMgImRlZiA6IicpOworCitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVl cnkoJ2VuZ2xpc2gnLCAnIkEgZmF0IGNhdCIgaGFzIGp1c3QgZWF0ZW4gYSAtcmF0LicpOworc2Vs ZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdlbmdsaXNoJywgJyJBIGZhdCBjYXQiIGhhcyBqdXN0 IGVhdGVuIE9SICFyYXQuJyk7CitzZWxlY3Qgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ2VuZ2xpc2gn LCAnIkEgZmF0IGNhdCIgaGFzIGp1c3QgKCtlYXRlbiBPUiAtcmF0KScpOworCitzZWxlY3Qgd2Vi c2VhcmNoX3RvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAndGhpcyBpcyAtLS0tZmluZScpOworc2VsZWN0 IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdlbmdsaXNoJywgJygoKSkgKSkpKSB0aGlzIHx8fCBpcyAm JiAtZmluZSwgImRlYXIgZnJpZW5kIiBPUiBnb29kJyk7CitzZWxlY3Qgd2Vic2VhcmNoX3RvX3Rz cXVlcnkoJ2VuZ2xpc2gnLCAnYW4gb2xkIDwtPiBjYXQgIiBpcyBmaW5lICYmJiB0b28nKTsKKwor c2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdlbmdsaXNoJywgJyJBIHRoZSIgT1IganVzdCBv bicpOworc2VsZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdydXNzaWFuJywgJyLRgtC+0LvRgdGC 0LDRjyDQutC+0YjQutCwIiDRgdGK0LXQu9CwINC60YDRi9GB0YMnKTsKKworc2VsZWN0IHRvX3Rz dmVjdG9yKCdydXNzaWFuJywgJ9GB0YrQtdC70LAg0YLQvtC70YHRgtCw0Y8g0LrQvtGI0LrQsCDQ utGA0YvRgdGDJykgQEAKK3dlYnNlYXJjaF90b190c3F1ZXJ5KCdydXNzaWFuJywgJyLRgtC+0LvR gdGC0LDRjyDQutC+0YjQutCwIiDRgdGK0LXQu9CwINC60YDRi9GB0YMnKTsKKworc2VsZWN0IHRv X3RzdmVjdG9yKCdydXNzaWFuJywgJ9GB0YrQtdC70LAg0YLQvtC70YHRgtCw0Y8g0YHQtdGA0LDR jyDQutC+0YjQutCwINC60YDRi9GB0YMnKSBAQAord2Vic2VhcmNoX3RvX3RzcXVlcnkoJ3J1c3Np YW4nLCAnItGC0L7Qu9GB0YLQsNGPINC60L7RiNC60LAiINGB0YrQtdC70LAg0LrRgNGL0YHRgycp OworCistLSBjYXNlcyBoYW5kbGVkIGJ5IGdldHRva2VuX3RzdmVjdG9yKCkKK3NlbGVjdCB3ZWJz ZWFyY2hfdG9fdHNxdWVyeSgnJycnKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnJydh YmMnJycnZGVmJycnKTsKK3NlbGVjdCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnXGFiYycpOworc2Vs ZWN0IHdlYnNlYXJjaF90b190c3F1ZXJ5KCdcJyk7Cg== --=_3fc10a60ec75a876410f4e90c4b81b2e--