Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r7wYb-007aA9-0i for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Nov 2023 11:47:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1r7wYX-004bEE-FS for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Nov 2023 11:47:09 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r7wYW-004bE0-KH for pgsql-hackers@lists.postgresql.org; Tue, 28 Nov 2023 11:47:09 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r7wYO-007lQH-Tw for pgsql-hackers@postgresql.org; Tue, 28 Nov 2023 11:47:07 +0000 Received: from [10.10.20.89] (node-794.pool-101-109.dynamic.totinternet.net [101.109.36.184]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: a.lepikhov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 4B7CCE20E5F; Tue, 28 Nov 2023 14:46:54 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1701172017; bh=E1+vVWlD0TSWtUpmjbiFDfpiU+/ie7+6Viwhe3VweAg=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=boHeRl8NmB+boqOwxzogrT/UXOeGnkQVvTmKDlc0L47IYaVtPlIMSedeM2NqRBtn+ X7Sw4GEG2NtytoWlOABO8b+Wx9LGCky6b+cW6HwOxGY0B5NE7CXhOrz3CevWMQOqYi jjhDfhRk+crpuw1Ot/5Ds4AxnsdbkhFdB38/Cf17gcxqwu6cPfomNx2ZQbNOM7cigT inL+LBnEvkcnh0HiLgFfUFYnG7aKeeDaU5rPSbLfsvoPxKh0N7bzbT8HfM9ZXCiWqs GplKtihzCp7wpL48Chub6nbAxUAXIX5JuBvE5rgiaC0PoIhjQAyKo7tztR3WcOxJi1 ZS6CWmMQB/QYg== Content-Type: multipart/mixed; boundary="------------WDML1OgqtvPaBusjifp4b9F0" Message-ID: Date: Tue, 28 Nov 2023 18:46:51 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC, WIP: OR-clause support for indexes Content-Language: en-US To: Robert Haas , pgsql-hackers@postgresql.org Cc: Alexander Korotkov , Alena Rybakina , Peter Geoghegan , "Finnerty, Jim" , Marcos Pegoraro , teodor@sigaev.ru, Ranier Vilela , Tomas Vondra , Peter Eisentraut References: <567ED6CA.2040504@sigaev.ru> <16a7e3aa-24c0-4986-8820-ea2857bd7b6b@postgrespro.ru> <421656a9-5df7-41bb-9d58-1c1edbd5dc3e@postgrespro.ru> <28c727ba-5260-42a8-88b0-4ecdeeca6ef8@postgrespro.ru> <4c1c2c0b-802f-45ae-a7cd-007bfd8957cf@postgrespro.ru> <52f0d302-7963-452f-8c5a-f66d261514eb@postgrespro.ru> <43ad8a48-b980-410d-a83c-5beebf82a4ed@postgrespro.ru> <04ef16eb-46c1-4ce7-9f68-d1c80ef0be81@postgrespro.ru> From: Andrei Lepikhov Organization: Postgres Professional In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------WDML1OgqtvPaBusjifp4b9F0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 28/11/2023 04:03, Robert Haas wrote: > On Mon, Nov 27, 2023 at 3:02 AM Andrei Lepikhov > wrote: >> On 25/11/2023 08:23, Alexander Korotkov wrote: >>> I think patch certainly gets better in this aspect. One thing I can't >>> understand is why do we use home-grown code for resolving >>> hash-collisions. You can just define custom hash and match functions >>> in HASHCTL. Even if we need to avoid repeated JumbleExpr calls, we >>> still can save pre-calculated hash value into hash entry and use >>> custom hash and match. This doesn't imply us to write our own >>> collision-resolving code. >> >> Thanks, it was an insightful suggestion. >> I implemented it, and the code has become shorter (see attachment). > > Neither the code comments nor the commit message really explain the > design idea here. That's unfortunate, principally because it makes > review difficult. Yeah, it is still an issue. We will think about how to improve this; any suggestions are welcome. > I'm very skeptical about the idea of using JumbleExpr for any part of > this. It seems fairly expensive, and it might produce false matches. > If expensive is OK, then why not just use equal()? If it's not, then > this probably isn't really OK either. But in any case there should be > comments explaining why this strategy was chosen. We used the equal() routine without hashing in earlier versions. Hashing resolves issues with many different OR clauses. Is it expensive? Maybe, but we assume this transformation should be applied to simple enough expressions. > The use of op_mergejoinable() seems pretty random to me. Why should we > care about that? If somebody writes a<1 or a<2 or a<3 or a<4, you can > transform that to a good idea, but I think it's a legal transformation. You are right. The only reason was to obtain a working patch to benchmark and look for corner cases. We would rewrite that place but still live with the equivalence operator. > The reader shouldn't be left to guess whether a rule like this was made for > reasons of correctness or for reasons of efficiency or something else. > Looking further, I see that the reason for this is likely that the > operator for the transformation result is constructing using > list_make1(makeString((char *) "=")), but trying to choose an operator > based on the operator name is, I think, pretty clearly unacceptable. Yes, it was a big mistake. It is fixed in the new version (I guess). > I am extremely dubious about the use of select_common_type() here. Why > not do this only when the types already match exactly? Maybe the > concern is unknown literals, but perhaps that should be handled in > some other way. If you do this kind of thing, you need to justify why > it can't fail or produce wrong answers. Perhaps. We implemented your approach in the next version. At least we could see consequences. > Honestly, it seems very hard to avoid the conclusion that this > transformation is being done at too early a stage. Parse analysis is > not the time to try to do query optimization. I can't really believe > that there's a way to produce a committable patch along these lines. > Ideally, a transformation like this should be done after we know what > plan shape we're using (or considering using), so that we can make > cost-based decisions about whether to transform or not. But at the > very least it should happen somewhere in the planner. There's really > no justification for parse analysis rewriting the SQL that the user > entered. Here, we assume that array operation is generally better than many ORs. As a result, it should be more effective to make OR->ANY transformation in the parser (it is a relatively lightweight operation here) and, as a second phase, decompose that in the optimizer. We implemented earlier prototypes in different places of the optimizer, and I'm convinced that only this approach resolves the issues we found. Does this approach look weird? Maybe. We can debate it in this thread. -- regards, Andrei Lepikhov Postgres Professional --------------WDML1OgqtvPaBusjifp4b9F0 Content-Type: text/plain; charset=UTF-8; name="v13-0001-Transform-OR-clause-to-ANY-expressions.patch" Content-Disposition: attachment; filename="v13-0001-Transform-OR-clause-to-ANY-expressions.patch" Content-Transfer-Encoding: base64 RnJvbSBhNWY4ZWJhNTIyZmY5MDdmN2EzZmZmYjA2MzViNjFkMzg5MzNlMzg1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmV5IFYuIExlcGlraG92IiA8YS5sZXBpa2hv dkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogVGh1LCAyMyBOb3YgMjAyMyAxNjowMDoxMyArMDcw MApTdWJqZWN0OiBbUEFUQ0hdIFRyYW5zZm9ybSBPUiBjbGF1c2UgdG8gQU5ZIGV4cHJlc3Np b25zLgoKUmVwbGFjZSAoWD1OMSkgT1IgKFg9TjIpIC4uLiB3aXRoIFggPSBBTlkoTjEsIE4y KSBvbiB0aGUgcHJlbGltaW5hcnkgc3RhZ2Ugb2YKb3B0aW1pemF0aW9uIHdoZW4gd2UgYXJl IHN0aWxsIHdvcmtpbmcgd2l0aCBhIHRyZWUgZXhwcmVzc2lvbi4KU29tZXRpbWVzIGl0IGNh biBsZWFkIHRvIG5vdCBvcHRpbWFsIHBsYW4uIEJ1dCB3ZSB0aGluayBpdCBpcyBiZXR0ZXIg dG8gaGF2ZQphcnJheSBvZiBlbGVtZW50cyBpbnN0ZWFkIG9mIGEgbG90IG9mIE9SIGNsYXVz ZXMuIEhlcmUgaXMgYSByb29tIGZvciBmdXJ0aGVyCm9wdGltaXphdGlvbnMgb24gZGVjb21w b3NpbmcgdGhhdCBhcnJheSBpbnRvIG1vcmUgb3B0aW1hbCBwYXJ0cy4KLS0tCiAuLi4vcG9z dGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgICAgfCAgIDggKy0KIHNyYy9i YWNrZW5kL25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYyAgICAgICAgICB8ICAzMCArKwogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgICAgIHwgMjg5ICsrKysr KysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAg ICAgICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25m LnNhbXBsZSB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5oICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaCAgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2lu ZGV4Lm91dCAgICB8IDE0MSArKysrKysrLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Z3VjLm91dCAgICAgICAgICAgICB8ICAgMyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9pbmhlcml0Lm91dCAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2pvaW4ub3V0ICAgICAgICAgICAgfCAgNjIgKysrLQogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fam9pbi5vdXQgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQgfCAyMTUgKysrKysrKysrKystLQogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgICA0ICstCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NlbGVjdC5vdXQgICAgICAgICAgfCAgIDYgKy0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dCAgICAgICB8ICAxMiAr LQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgICAgICAgIHwgICAz ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0ICAgICAgICAgfCAg MjMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgICAgICAgICB8 ICAzMiArKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwgICAgICAgICAgICAgICAg IHwgIDEwICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwgICAg ICB8ICAyMiArKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGlkc2Nhbi5zcWwgICAgICAgICAg ICAgIHwgICA2ICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAg ICAgICB8ICAgMiArCiAyMyBmaWxlcyBjaGFuZ2VkLCA4MTkgaW5zZXJ0aW9ucygrKSwgNjYg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0 ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bv c3RncmVzX2Zkdy5vdXQKaW5kZXggMjJjYWUzN2ExZS4uZmRmZWNkNTFjNyAxMDA2NDQKLS0t IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysg Yi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC04 NTM3LDE4ICs4NTM3LDE4IEBAIGluc2VydCBpbnRvIHV0cnRlc3QgdmFsdWVzICgyLCAncXV4 Jyk7CiAtLSBDaGVjayBjYXNlIHdoZXJlIHRoZSBmb3JlaWduIHBhcnRpdGlvbiBpcyBhIHN1 YnBsYW4gdGFyZ2V0IHJlbAogZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKQogdXBkYXRl IHV0cnRlc3Qgc2V0IGEgPSAxIHdoZXJlIGEgPSAxIG9yIGEgPSAyIHJldHVybmluZyAqOwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgVXBk YXRlIG9uIHB1YmxpYy51dHJ0ZXN0CiAgICBPdXRwdXQ6IHV0cnRlc3RfMS5hLCB1dHJ0ZXN0 XzEuYgogICAgRm9yZWlnbiBVcGRhdGUgb24gcHVibGljLnJlbXAgdXRydGVzdF8xCiAgICBV cGRhdGUgb24gcHVibGljLmxvY3AgdXRydGVzdF8yCiAgICAtPiAgQXBwZW5kCiAgICAgICAg ICAtPiAgRm9yZWlnbiBVcGRhdGUgb24gcHVibGljLnJlbXAgdXRydGVzdF8xCi0gICAgICAg ICAgICAgICBSZW1vdGUgU1FMOiBVUERBVEUgcHVibGljLmxvY3QgU0VUIGEgPSAxIFdIRVJF ICgoKGEgPSAxKSBPUiAoYSA9IDIpKSkgUkVUVVJOSU5HIGEsIGIKKyAgICAgICAgICAgICAg IFJlbW90ZSBTUUw6IFVQREFURSBwdWJsaWMubG9jdCBTRVQgYSA9IDEgV0hFUkUgKChhID0g QU5ZICgnezEsMn0nOjppbnRlZ2VyW10pKSkgUkVUVVJOSU5HIGEsIGIKICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMubG9jcCB1dHJ0ZXN0XzIKICAgICAgICAgICAgICAgIE91 dHB1dDogMSwgdXRydGVzdF8yLnRhYmxlb2lkLCB1dHJ0ZXN0XzIuY3RpZCwgTlVMTDo6cmVj b3JkCi0gICAgICAgICAgICAgICBGaWx0ZXI6ICgodXRydGVzdF8yLmEgPSAxKSBPUiAodXRy dGVzdF8yLmEgPSAyKSkKKyAgICAgICAgICAgICAgIEZpbHRlcjogKHV0cnRlc3RfMi5hID0g QU5ZICgnezEsMn0nOjppbnRlZ2VyW10pKQogKDEwIHJvd3MpCiAKIC0tIFRoZSBuZXcgdmFs dWVzIGFyZSBjb25jYXRlbmF0ZWQgd2l0aCAnIHRyaWdnZXJlZCAhJwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9k ZXMvcXVlcnlqdW1ibGVmdW5jcy5jCmluZGV4IDI4MTkwN2E0ZDguLjk5MjA3YTg2NzAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYworKysgYi9z cmMvYmFja2VuZC9ub2Rlcy9xdWVyeWp1bWJsZWZ1bmNzLmMKQEAgLTEzNSw2ICsxMzUsMzYg QEAgSnVtYmxlUXVlcnkoUXVlcnkgKnF1ZXJ5KQogCXJldHVybiBqc3RhdGU7CiB9CiAKK0p1 bWJsZVN0YXRlICoKK0p1bWJsZUV4cHIoRXhwciAqZXhwciwgdWludDY0ICpxdWVyeUlkKQor eworCUp1bWJsZVN0YXRlICpqc3RhdGUgPSBOVUxMOworCisJQXNzZXJ0KHF1ZXJ5SWQgIT0g TlVMTCk7CisKKwlqc3RhdGUgPSAoSnVtYmxlU3RhdGUgKikgcGFsbG9jKHNpemVvZihKdW1i bGVTdGF0ZSkpOworCisJLyogU2V0IHVwIHdvcmtzcGFjZSBmb3IgcXVlcnkganVtYmxpbmcg Ki8KKwlqc3RhdGUtPmp1bWJsZSA9ICh1bnNpZ25lZCBjaGFyICopIHBhbGxvYyhKVU1CTEVf U0laRSk7CisJanN0YXRlLT5qdW1ibGVfbGVuID0gMDsKKwlqc3RhdGUtPmNsb2NhdGlvbnNf YnVmX3NpemUgPSAzMjsKKwlqc3RhdGUtPmNsb2NhdGlvbnMgPSAoTG9jYXRpb25MZW4gKikK KwkJcGFsbG9jKGpzdGF0ZS0+Y2xvY2F0aW9uc19idWZfc2l6ZSAqIHNpemVvZihMb2NhdGlv bkxlbikpOworCWpzdGF0ZS0+Y2xvY2F0aW9uc19jb3VudCA9IDA7CisJanN0YXRlLT5oaWdo ZXN0X2V4dGVybl9wYXJhbV9pZCA9IDA7CisKKwkvKiBDb21wdXRlIHF1ZXJ5IElEICovCisJ X2p1bWJsZU5vZGUoanN0YXRlLCAoTm9kZSAqKSBleHByKTsKKwkqcXVlcnlJZCA9IERhdHVt R2V0VUludDY0KGhhc2hfYW55X2V4dGVuZGVkKGpzdGF0ZS0+anVtYmxlLAorCQkJCQkJCQkJ CQkJanN0YXRlLT5qdW1ibGVfbGVuLAorCQkJCQkJCQkJCQkJMCkpOworCisJaWYgKCpxdWVy eUlkID09IFVJTlQ2NENPTlNUKDApKQorCQkqcXVlcnlJZCA9IFVJTlQ2NENPTlNUKDEpOwor CisJcmV0dXJuIGpzdGF0ZTsKK30KKwogLyoKICAqIEVuYWJsZXMgcXVlcnkgaWRlbnRpZmll ciBjb21wdXRhdGlvbi4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCA2NGM1 ODJjMzQ0Li5kOGM2MDk2MTQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTE2 LDEyICsxNiwxNCBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJjYXRh bG9nL3BnX2FnZ3JlZ2F0ZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5 cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9k ZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAibm9kZXMvcXVlcnlqdW1ibGUuaCIKICNpbmNs dWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAicGFyc2VyL2FuYWx5emUu aCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfYWdnLmgiCkBAIC0zOCwxMSArNDAsMTMgQEAK ICNpbmNsdWRlICJ1dGlscy9kYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIK ICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNo ZS5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3ht bC5oIgogCiAvKiBHVUMgcGFyYW1ldGVycyAqLwogYm9vbAkJVHJhbnNmb3JtX251bGxfZXF1 YWxzID0gZmFsc2U7Citib29sCQllbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSB0cnVlOwog CiAKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1FeHByUmVjdXJzZShQYXJzZVN0YXRlICpwc3Rh dGUsIE5vZGUgKmV4cHIpOwpAQCAtOTksNiArMTAzLDI4OSBAQCBzdGF0aWMgRXhwciAqbWFr ZV9kaXN0aW5jdF9vcChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9wbmFtZSwKIHN0YXRp YyBOb2RlICptYWtlX251bGx0ZXN0X2Zyb21fZGlzdGluY3QoUGFyc2VTdGF0ZSAqcHN0YXRl LAogCQkJCQkJCQkJCSBBX0V4cHIgKmRpc3RpbmN0YSwgTm9kZSAqYXJnKTsKIAordHlwZWRl ZiBzdHJ1Y3QgT3JDbGF1c2VHcm91cEtleQoreworCUV4cHIgICAqZXhwcjsgLyogUG9pbnRl ciB0byB0aGUgZXhwcmVzc2lvbiB0cmVlIHdoaWNoIGhhcyBiZWVuIGEgc291cmNlIGZvcgor CQkJCQl0aGUgaGFzaGtleSB2YWx1ZSAqLworCU9pZAkJb3BubzsKKwlPaWQJCWV4cHJ0eXBl OworfSBPckNsYXVzZUdyb3VwS2V5OworCit0eXBlZGVmIHN0cnVjdCBPckNsYXVzZUdyb3Vw RW50cnkKK3sKKwlPckNsYXVzZUdyb3VwS2V5IGtleTsKKworCU5vZGUJCSAgICpub2RlOwor CUxpc3QJCSAgICpjb25zdHM7CisJT2lkCQkJCXNjYWxhcl90eXBlOworCUxpc3QgCQkgICAq ZXhwcnM7Cit9IE9yQ2xhdXNlR3JvdXBFbnRyeTsKKworLyoKKyAqIEhhc2ggZnVuY3Rpb24g dGhhdCdzIGNvbXBhdGlibGUgd2l0aCBndWNfbmFtZV9jb21wYXJlCisgKi8KK3N0YXRpYyB1 aW50MzIKK29yY2xhdXNlX2hhc2goY29uc3Qgdm9pZCAqZGF0YSwgU2l6ZSBrZXlzaXplKQor eworCU9yQ2xhdXNlR3JvdXBLZXkgICAqa2V5ID0gKE9yQ2xhdXNlR3JvdXBLZXkgKikgZGF0 YTsKKwl1aW50NjQJCQkJaGFzaDsKKworCSh2b2lkKSBKdW1ibGVFeHByKGtleS0+ZXhwciwg Jmhhc2gpOworCWhhc2ggKz0gKCh1aW50NjQpIGtleS0+b3BubyArICh1aW50NjQpIGtleS0+ ZXhwcnR5cGUpICUgVUlOVDY0X01BWDsKKwlyZXR1cm4gaGFzaDsKK30KKworc3RhdGljIHZv aWQgKgorb3JjbGF1c2Vfa2V5Y29weSh2b2lkICpkZXN0LCBjb25zdCB2b2lkICpzcmMsIFNp emUga2V5c2l6ZSkKK3sKKwlPckNsYXVzZUdyb3VwS2V5ICpzcmNfa2V5ID0gKE9yQ2xhdXNl R3JvdXBLZXkgKikgc3JjOworCU9yQ2xhdXNlR3JvdXBLZXkgKmRzdF9rZXkgPSAoT3JDbGF1 c2VHcm91cEtleSAqKSBkZXN0OworCisJQXNzZXJ0KHNpemVvZihPckNsYXVzZUdyb3VwS2V5 KSA9PSBrZXlzaXplKTsKKworCWRzdF9rZXktPmV4cHIgPSBzcmNfa2V5LT5leHByOworCWRz dF9rZXktPm9wbm8gPSBzcmNfa2V5LT5vcG5vOworCWRzdF9rZXktPmV4cHJ0eXBlID0gc3Jj X2tleS0+ZXhwcnR5cGU7CisJcmV0dXJuIGRzdF9rZXk7Cit9CisKKy8qCisgKiBEeW5haGFz aCBtYXRjaCBmdW5jdGlvbiB0byB1c2UgaW4gZ3VjX2hhc2h0YWIKKyAqLworc3RhdGljIGlu dAorb3JjbGF1c2VfbWF0Y2goY29uc3Qgdm9pZCAqZGF0YTEsIGNvbnN0IHZvaWQgKmRhdGEy LCBTaXplIGtleXNpemUpCit7CisJT3JDbGF1c2VHcm91cEtleSAgICprZXkxID0gKE9yQ2xh dXNlR3JvdXBLZXkgKikgZGF0YTE7CisJT3JDbGF1c2VHcm91cEtleSAgICprZXkyID0gKE9y Q2xhdXNlR3JvdXBLZXkgKikgZGF0YTI7CisKKwlBc3NlcnQoc2l6ZW9mKE9yQ2xhdXNlR3Jv dXBLZXkpID09IGtleXNpemUpOworCisJaWYgKGtleTEtPm9wbm8gPT0ga2V5Mi0+b3BubyAm JiBrZXkxLT5leHBydHlwZSA9PSBrZXkyLT5leHBydHlwZSAmJgorCQllcXVhbChrZXkxLT5l eHByLCBrZXkyLT5leHByKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gMTsKK30KKworc3Rh dGljIE5vZGUgKgordHJhbnNmb3JtQm9vbEV4cHJPcihQYXJzZVN0YXRlICpwc3RhdGUsIEJv b2xFeHByICpleHByKQoreworCUxpc3QJCQkJICAgKm9yX2xpc3QgPSBOSUw7CisJTGlzdENl bGwJCQkgICAqbGM7CisJSEFTSENUTAkJCQkJaW5mbzsKKwlIVEFCIAkJCQkgICAqb3JfZ3Jv dXBfaHRhYiA9IE5VTEw7CisJaW50IAkJCQkJbGVuX29ycyA9IGxpc3RfbGVuZ3RoKGV4cHIt PmFyZ3MpOworCUhBU0hfU0VRX1NUQVRVUwkJCWhhc2hfc2VxOworCU9yQ2xhdXNlR3JvdXBF bnRyeQkgICAqZW50cnkgPSBOVUxMOworCisJLyogSWYgdGhpcyBpcyBub3QgYW4gJ09SJyBl eHByZXNzaW9uLCBza2lwIHRoZSB0cmFuc2Zvcm1hdGlvbiAqLworCWlmICghZW5hYmxlX29y X3RyYW5zZm9ybWF0aW9uIHx8IGV4cHItPmJvb2xvcCAhPSBPUl9FWFBSIHx8IGxlbl9vcnMg PCAyKQorCQlyZXR1cm4gdHJhbnNmb3JtQm9vbEV4cHIocHN0YXRlLCAoQm9vbEV4cHIgKikg ZXhwcik7CisKKwlNZW1TZXQoJmluZm8sIDAsIHNpemVvZihpbmZvKSk7CisJaW5mby5rZXlz aXplID0gc2l6ZW9mKE9yQ2xhdXNlR3JvdXBLZXkpOworCWluZm8uZW50cnlzaXplID0gc2l6 ZW9mKE9yQ2xhdXNlR3JvdXBFbnRyeSk7CisJaW5mby5oYXNoID0gb3JjbGF1c2VfaGFzaDsK KwlpbmZvLmtleWNvcHkgPSBvcmNsYXVzZV9rZXljb3B5OworCWluZm8ubWF0Y2ggPSBvcmNs YXVzZV9tYXRjaDsKKwlvcl9ncm91cF9odGFiID0gaGFzaF9jcmVhdGUoIk9SIEdyb3VwcyIs CisJCQkJCQkJCWxlbl9vcnMsCisJCQkJCQkJCSZpbmZvLAorCQkJCQkJCQlIQVNIX0VMRU0g fCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9LRVlDT1BZKTsKKworCWZv cmVhY2gobGMsIGV4cHItPmFyZ3MpCisJeworCQlOb2RlCQkJCSAgICphcmcgPSBsZmlyc3Qo bGMpOworCQlOb2RlCQkJCSAgICpvcnF1YWw7CisJCU5vZGUJCQkJICAgKmNvbnN0X2V4cHI7 CisJCU5vZGUJCQkJICAgKm5jb25zdF9leHByOworCQlPckNsYXVzZUdyb3VwS2V5CQloYXNo a2V5OworCQlib29sCQkJCQlmb3VuZDsKKworCQkvKiBBdCBmaXJzdCwgdHJhbnNmb3JtIHRo ZSBhcmcgYW5kIGV2YWx1YXRlIGNvbnN0YW50IGV4cHJlc3Npb25zLiAqLworCQlvcnF1YWwg PSB0cmFuc2Zvcm1FeHByUmVjdXJzZShwc3RhdGUsIChOb2RlICopIGFyZyk7CisJCW9ycXVh bCA9IGNvZXJjZV90b19ib29sZWFuKHBzdGF0ZSwgb3JxdWFsLCAiT1IiKTsKKworCQlpZiAo IUlzQShvcnF1YWwsIE9wRXhwcikpCisJCXsKKwkJCW9yX2xpc3QgPSBsYXBwZW5kKG9yX2xp c3QsIG9ycXVhbCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIERldGVjdCB0 aGUgY29uc3RhbnQgc2lkZSBvZiB0aGUgY2xhdXNlLiBSZWNhbGwgbm9uLWNvbnN0YW50CisJ CSAqIGV4cHJlc3Npb24gY2FuIGJlIG1hZGUgbm90IG9ubHkgd2l0aCBWYXJzLCBidXQgYWxz byB3aXRoIFBhcmFtcywKKwkJICogd2hpY2ggaXMgbm90IGJvbmRlZCB3aXRoIGFueSByZWxh dGlvbi4gVGh1cywgd2UgZGV0ZWN0IHRoZSBjb25zdAorCQkgKiBzaWRlIC0gaWYgYW5vdGhl ciBzaWRlIGlzIGNvbnN0YW50IHRvbywgdGhlIG9ycXVhbCBjb3VsZG4ndCBiZQorCQkgKiBh biBPcEV4cHIuCisJCSAqIEdldCBwb2ludGVycyB0byBjb25zdGFudCBhbmQgZXhwcmVzc2lv biBzaWRlcyBvZiB0aGUgcXVhbC4KKwkJICovCisJCWlmIChJc0EoZ2V0X2xlZnRvcChvcnF1 YWwpLCBDb25zdCkpCisJCXsKKwkJCW5jb25zdF9leHByID0gZ2V0X3JpZ2h0b3Aob3JxdWFs KTsKKwkJCWNvbnN0X2V4cHIgPSBnZXRfbGVmdG9wKG9ycXVhbCk7CisJCX0KKwkJZWxzZSBp ZiAoSXNBKGdldF9yaWdodG9wKG9ycXVhbCksIENvbnN0KSkKKwkJeworCQkJY29uc3RfZXhw ciA9IGdldF9yaWdodG9wKG9ycXVhbCk7CisJCQluY29uc3RfZXhwciA9IGdldF9sZWZ0b3Ao b3JxdWFsKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCW9yX2xpc3QgPSBsYXBwZW5kKG9yX2xp c3QsIG9ycXVhbCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWlmICghb3BfbWVyZ2Vqb2lu YWJsZSgoKE9wRXhwciAqKSBvcnF1YWwpLT5vcG5vLCBleHByVHlwZShuY29uc3RfZXhwcikp KQorCQl7CisJCQlvcl9saXN0ID0gbGFwcGVuZChvcl9saXN0LCBvcnF1YWwpOworCQkJY29u dGludWU7CisJCX0KKworCQkvKgorCQkqIEF0IHRoaXMgcG9pbnQgd2UgZGVmaW5pdGVseSBo YXZlIGEgdHJhbnNmb3JtYWJsZSBjbGF1c2UuCisJCSogQ2xhc3NpZnkgaXQgYW5kIGFkZCBp bnRvIHNwZWNpZmljIGdyb3VwIG9mIGNsYXVzZXMsIG9yIGNyZWF0ZSBuZXcKKwkJKiBncm91 cC4KKwkJKiBUT0RPOiB0byBtYW5hZ2UgY29tcGxleGl0eSBpbiB0aGUgY2FzZSBvZiBtYW55 IGRpZmZlcmVudCBjbGF1c2VzCisJCSogKFgxPUMxKSBPUiAoWDI9QzIgT1IpIC4uLiAoWE4g PSBDTikgd2UgY291bGQgaW52ZW50IHNvbWV0aGluZworCQkqIGxpa2UgYSBoYXNoIHRhYmxl LiBCdXQgYWxzbyB3ZSBiZWxpZXZlLCB0aGF0IHRoZSBjYXNlIG9mIG1hbnkKKwkJKiBkaWZm ZXJlbnQgdmFyaWFibGUgc2lkZXMgaXMgdmVyeSByYXJlLgorCQkqLworCQloYXNoa2V5LmV4 cHIgPSAoRXhwciAqKSBuY29uc3RfZXhwcjsKKwkJaGFzaGtleS5vcG5vID0gKChPcEV4cHIg Kikgb3JxdWFsKS0+b3BubzsKKwkJaGFzaGtleS5leHBydHlwZSA9IGV4cHJUeXBlKG5jb25z dF9leHByKTsKKwkJZW50cnkgPSBoYXNoX3NlYXJjaChvcl9ncm91cF9odGFiLCAmaGFzaGtl eSwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKworCQlpZiAodW5saWtlbHkoZm91bmQpKQorCQl7 CisJCQllbnRyeS0+Y29uc3RzID0gbGFwcGVuZChlbnRyeS0+Y29uc3RzLCBjb25zdF9leHBy KTsKKwkJCWVudHJ5LT5leHBycyA9IGxhcHBlbmQoZW50cnktPmV4cHJzLCBvcnF1YWwpOwor CQl9CisJCWVsc2UKKwkJeworCQkJZW50cnktPm5vZGUgPSBuY29uc3RfZXhwcjsKKwkJCWVu dHJ5LT5jb25zdHMgPSBsaXN0X21ha2UxKGNvbnN0X2V4cHIpOworCQkJZW50cnktPmV4cHJz ID0gbGlzdF9tYWtlMShvcnF1YWwpOworCQl9CisJfQorCisJaWYgKGxpc3RfbGVuZ3RoKG9y X2xpc3QpID09IGxlbl9vcnMpCisJeworCQkvKgorCQkqIE5vIGFueSB0cmFuc2Zvcm1hdGlv bnMgcG9zc2libGUgd2l0aCB0aGlzIGxpc3Qgb2YgYXJndW1lbnRzLiBIZXJlIHdlCisJCSog YWxyZWFkeSBtYWRlIGFsbCB1bmRlcmx5aW5nIHRyYW5zZm9ybWF0aW9ucy4gVGh1cywganVz dCByZXR1cm4gdGhlCisJCSogdHJhbnNmb3JtZWQgYm9vbCBleHByZXNzaW9uLgorCQkqLwor CQloYXNoX2Rlc3Ryb3kob3JfZ3JvdXBfaHRhYik7CisJCXJldHVybiAoTm9kZSAqKSBtYWtl Qm9vbEV4cHIoT1JfRVhQUiwgb3JfbGlzdCwgZXhwci0+bG9jYXRpb24pOworCX0KKworCWhh c2hfc2VxX2luaXQoJmhhc2hfc2VxLCBvcl9ncm91cF9odGFiKTsKKworCS8qIExldCdzIGNv bnZlcnQgZWFjaCBncm91cCBvZiBjbGF1c2VzIHRvIGFuIElOIG9wZXJhdGlvbi4gKi8KKwor CS8qCisJICogR28gdGhyb3VnaCB0aGUgbGlzdCBvZiBncm91cHMgYW5kIGNvbnZlcnQgZWFj aCwgd2hlcmUgbnVtYmVyIG9mCisJKiBjb25zdHMgbW9yZSB0aGFuIDEuIHRyaXZpYWwgZ3Jv dXBzIG1vdmUgdG8gT1ItbGlzdCBhZ2FpbgorCSovCisKKwl3aGlsZSAoKGVudHJ5ID0gKE9y Q2xhdXNlR3JvdXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVM TCkKKwl7CisJCUxpc3QJCQkgICAqYWxsZXhwcnM7CisJCU9pZAkJCQkgICAgc2NhbGFyX3R5 cGU7CisJCU9pZAkJCQkJYXJyYXlfdHlwZTsKKworCQlBc3NlcnQobGlzdF9sZW5ndGgoZW50 cnktPmNvbnN0cykgPiAwKTsKKwkJQXNzZXJ0KGxpc3RfbGVuZ3RoKGVudHJ5LT5leHBycykg PT0gbGlzdF9sZW5ndGgoZW50cnktPmNvbnN0cykpOworCisJCWlmIChsaXN0X2xlbmd0aChl bnRyeS0+Y29uc3RzKSA9PSAxKQorCQl7CisJCQkvKgorCQkJICogT25seSBvbmUgZWxlbWVu dCBpbiB0aGUgY2xhc3MuIFJldHVybiByaW5mbyBpbnRvIHRoZSBCb29sRXhwcgorCQkJICog YXJncyBsaXN0IHVuY2hhbmdlZC4KKwkJCSAqLworCQkJbGlzdF9mcmVlKGVudHJ5LT5jb25z dHMpOworCQkJb3JfbGlzdCA9IGxpc3RfY29uY2F0KG9yX2xpc3QsIGVudHJ5LT5leHBycyk7 CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIERvIHRoZSB0cmFuc2Zvcm1hdGlv bi4KKwkJICovCisJCWFsbGV4cHJzID0gbGlzdF9jb25jYXQobGlzdF9tYWtlMShlbnRyeS0+ bm9kZSksIGVudHJ5LT5jb25zdHMpOworCQlzY2FsYXJfdHlwZSA9IGVudHJ5LT5rZXkuZXhw cnR5cGU7CisKKwkJaWYgKHNjYWxhcl90eXBlICE9IFJFQ09SRE9JRCAmJiBPaWRJc1ZhbGlk KHNjYWxhcl90eXBlKSkKKwkJCWFycmF5X3R5cGUgPSBnZXRfYXJyYXlfdHlwZShzY2FsYXJf dHlwZSk7CisJCWVsc2UKKwkJCWFycmF5X3R5cGUgPSBJbnZhbGlkT2lkOworCisJCWlmIChh cnJheV90eXBlICE9IEludmFsaWRPaWQpCisJCXsKKwkJCS8qCisJCQkgKiBPSzogY29lcmNl IGFsbCB0aGUgcmlnaHQtaGFuZCBub24tVmFyIGlucHV0cyB0byB0aGUgY29tbW9uCisJCQkg KiB0eXBlIGFuZCBidWlsZCBhbiBBcnJheUV4cHIgZm9yIHRoZW0uCisJCQkgKi8KKwkJCUxp c3QJCQkgICAqYWV4cHJzID0gTklMOworCQkJQXJyYXlFeHByCQkgICAqbmV3YSA9IE5VTEw7 CisJCQlTY2FsYXJBcnJheU9wRXhwciAgKnNhb3BleHByID0gTlVMTDsKKwkJCUxpc3RDZWxs CQkgICAqbDsKKwkJCUhlYXBUdXBsZQkJCW9wZXJ0dXA7CisJCQlGb3JtX3BnX29wZXJhdG9y CW9wZXJmb3JtOworCQkJTGlzdAkJCSAgICpuYW1lbGlzdCA9IE5JTDsKKworCQkJYWV4cHJz ID0gZW50cnktPmNvbnN0czsKKworCQkJbmV3YSA9IG1ha2VOb2RlKEFycmF5RXhwcik7CisJ CQkvKiBhcnJheV9jb2xsaWQgd2lsbCBiZSBzZXQgYnkgcGFyc2VfY29sbGF0ZS5jICovCisJ CQluZXdhLT5lbGVtZW50X3R5cGVpZCA9IHNjYWxhcl90eXBlOworCQkJbmV3YS0+YXJyYXlf dHlwZWlkID0gYXJyYXlfdHlwZTsKKwkJCW5ld2EtPm11bHRpZGltcyA9IGZhbHNlOworCQkJ bmV3YS0+ZWxlbWVudHMgPSBhZXhwcnM7CisJCQluZXdhLT5sb2NhdGlvbiA9IC0xOworCisJ CQlvcGVydHVwID0gU2VhcmNoU3lzQ2FjaGUxKE9QRVJPSUQsCisJCQkJCQkJCQkgIE9iamVj dElkR2V0RGF0dW0oZW50cnktPmtleS5vcG5vKSk7CisJCQlpZiAoIUhlYXBUdXBsZUlzVmFs aWQob3BlcnR1cCkpCisJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9y IG9wZXJhdG9yICV1IiwKKwkJCQkJIGVudHJ5LT5rZXkub3Bubyk7CisKKwkJCW9wZXJmb3Jt ID0gKEZvcm1fcGdfb3BlcmF0b3IpIEdFVFNUUlVDVChvcGVydHVwKTsKKwkJCWlmICghT3Bl cmF0b3JJc1Zpc2libGUoZW50cnktPmtleS5vcG5vKSkKKwkJCQluYW1lbGlzdCA9IGxhcHBl bmQobmFtZWxpc3QsIG1ha2VTdHJpbmcoZ2V0X25hbWVzcGFjZV9uYW1lKG9wZXJmb3JtLT5v cHJuYW1lc3BhY2UpKSk7CisKKwkJCW5hbWVsaXN0ID0gbGFwcGVuZChuYW1lbGlzdCwgbWFr ZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIob3BlcmZvcm0tPm9wcm5hbWUpKSkpOworCQkJUmVs ZWFzZVN5c0NhY2hlKG9wZXJ0dXApOworCisJCQlzYW9wZXhwciA9CisJCQkJKFNjYWxhckFy cmF5T3BFeHByICopCisJCQkJCW1ha2Vfc2NhbGFyX2FycmF5X29wKHBzdGF0ZSwKKwkJCQkJ CQkJCQkgbmFtZWxpc3QsCisJCQkJCQkJCQkJIHRydWUsCisJCQkJCQkJCQkJIGVudHJ5LT5u b2RlLAorCQkJCQkJCQkJCSAoTm9kZSAqKSBuZXdhLAorCQkJCQkJCQkJCSAtMSk7CisKKwkJ CW9yX2xpc3QgPSBsYXBwZW5kKG9yX2xpc3QsICh2b2lkICopIHNhb3BleHByKTsKKwkJfQor CQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBUaGlzIHBhcnQgd29ya3Mgb24gaW50YXJyYXkg dGVzdCAoT1IgdGhlcmUgaXMgbWFkZSBvbgorCQkJICogZWxlbWVudHMgb2YgYSBjdXN0b20g dHlwZSkKKwkJCSAqLworCQkJbGlzdF9mcmVlKGVudHJ5LT5jb25zdHMpOworCQkJb3JfbGlz dCA9IGxpc3RfY29uY2F0KG9yX2xpc3QsIGVudHJ5LT5leHBycyk7CisJCX0KKwkJaGFzaF9z ZWFyY2gob3JfZ3JvdXBfaHRhYiwgJmVudHJ5LT5rZXksIEhBU0hfUkVNT1ZFLCBOVUxMKTsK Kwl9CisJaGFzaF9kZXN0cm95KG9yX2dyb3VwX2h0YWIpOworCisJLyogT25lIG1vcmUgdHJp Y2s6IGFzc2VtYmxlIGNvcnJlY3QgY2xhdXNlICovCisJcmV0dXJuIChOb2RlICopICgobGlz dF9sZW5ndGgob3JfbGlzdCkgPiAxKSA/CisJCQkJCSBtYWtlQm9vbEV4cHIoT1JfRVhQUiwg b3JfbGlzdCwgZXhwci0+bG9jYXRpb24pIDoKKwkJCQkJIGxpbml0aWFsKG9yX2xpc3QpKTsK K30KIAogLyoKICAqIHRyYW5zZm9ybUV4cHIgLQpAQCAtMjEyLDcgKzQ5OSw3IEBAIHRyYW5z Zm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJCX0K IAogCQljYXNlIFRfQm9vbEV4cHI6Ci0JCQlyZXN1bHQgPSB0cmFuc2Zvcm1Cb29sRXhwcihw c3RhdGUsIChCb29sRXhwciAqKSBleHByKTsKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUJvb2xF eHByT3IocHN0YXRlLCAoQm9vbEV4cHIgKikgZXhwcik7CiAJCQlicmVhazsKIAogCQljYXNl IFRfRnVuY0NhbGw6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IGI3 NjRlZjY5OTguLjJjYThhMjFjYWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxl cy5jCkBAIC0xMDQ4LDYgKzEwNDgsMTYgQEAgc3RydWN0IGNvbmZpZ19ib29sIENvbmZpZ3Vy ZU5hbWVzQm9vbFtdID0KIAkJdHJ1ZSwKIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCisJewor CQl7ImVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiIsIFBHQ19VU0VSU0VULCBRVUVSWV9UVU5J TkdfT1RIRVIsCisJCQlnZXR0ZXh0X25vb3AoIlRyYW5zZm9ybSBhIHNlcXVlbmNlIG9mIE9S IGNsYXVzZXMgdG8gYW4gSU4gZXhwcmVzc2lvbi4iKSwKKwkJCWdldHRleHRfbm9vcCgiVGhl IHBsYW5uZXIgd2lsbCByZXBsYWNlIGNsYXVzZXMgbGlrZSAneD1jMSBPUiB4PWMyIC4uIgor CQkJCQkJICJ0byB0aGUgY2xhdXNlICd4IElOIChjMSxjMiwuLi4pJyIpCisJCX0sCisJCSZl bmFibGVfb3JfdHJhbnNmb3JtYXRpb24sCisJCXRydWUsCisJCU5VTEwsIE5VTEwsIE5VTEwK Kwl9LAogCXsKIAkJLyoKIAkJICogTm90IGZvciBnZW5lcmFsIHVzZSAtLS0gdXNlZCBieSBT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIGFuZCBTRVQKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBlNDhjMDY2YTViLi4yNmJl ZTMwYWQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNv bmYuc2FtcGxlCkBAIC0zNzEsNiArMzcxLDcgQEAKICMgLSBQbGFubmVyIE1ldGhvZCBDb25m aWd1cmF0aW9uIC0KIAogI2VuYWJsZV9hc3luY19hcHBlbmQgPSBvbgorI2VuYWJsZV9vcl90 cmFuc2Zvcm1hdGlvbiA9IG9uCiAjZW5hYmxlX2JpdG1hcHNjYW4gPSBvbgogI2VuYWJsZV9n YXRoZXJtZXJnZSA9IG9uCiAjZW5hYmxlX2hhc2hhZ2cgPSBvbgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5 anVtYmxlLmgKaW5kZXggMDc2OTA4MWM3YS4uNGFhYTMxYWE4MCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9x dWVyeWp1bWJsZS5oCkBAIC02NSw2ICs2NSw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQg Y29tcHV0ZV9xdWVyeV9pZDsKIAogZXh0ZXJuIGNvbnN0IGNoYXIgKkNsZWFuUXVlcnl0ZXh0 KGNvbnN0IGNoYXIgKnF1ZXJ5LCBpbnQgKmxvY2F0aW9uLCBpbnQgKmxlbik7CiBleHRlcm4g SnVtYmxlU3RhdGUgKkp1bWJsZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSk7CitleHRlcm4gSnVtYmxl U3RhdGUgKkp1bWJsZUV4cHIoRXhwciAqZXhwciwgdWludDY0ICpxdWVyeUlkKTsKIGV4dGVy biB2b2lkIEVuYWJsZVF1ZXJ5SWQodm9pZCk7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBib29s IHF1ZXJ5X2lkX2VuYWJsZWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2VfZXhwci5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaAppbmRleCA3ZDM4 Y2E3NWY3Li4zYTg3ZGUwMjg1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2VfZXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9leHByLmgKQEAgLTE3 LDYgKzE3LDcgQEAKIAogLyogR1VDIHBhcmFtZXRlcnMgKi8KIGV4dGVybiBQR0RMTElNUE9S VCBib29sIFRyYW5zZm9ybV9udWxsX2VxdWFsczsKK2V4dGVybiBQR0RMTElNUE9SVCBib29s IGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKIAogZXh0ZXJuIE5vZGUgKnRyYW5zZm9ybUV4 cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByLCBQYXJzZUV4cHJLaW5kIGV4cHJL aW5kKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVf aW5kZXgub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0 CmluZGV4IGFjZmQ5ZDFmNGYuLjNiYjRiYmNhNDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTE4MzgsMTggKzE4MzgsNTAgQEAgRFJP UCBUQUJMRSBvbmVrX3dpdGhfbnVsbDsKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCAq IEZST00gdGVuazEKICAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBP UiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBCaXRtYXAgSGVh cCBTY2FuIG9uIHRlbmsxCi0gICBSZWNoZWNrIENvbmQ6ICgoKHRob3VzYW5kID0gNDIpIEFO RCAodGVudGhvdXMgPSAxKSkgT1IgKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0g MykpIE9SICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDQyKSkpCi0gICAtPiAg Qml0bWFwT3IKLSAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91 c190ZW50aG91cwotICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQy KSBBTkQgKHRlbnRob3VzID0gMSkpCi0gICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gdGVuazFfdGhvdXNfdGVudGhvdXMKLSAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgo dGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDMpKQotICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSA0MikpCi0oOSBy b3dzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBJbmRleCBTY2FuIHVzaW5nIHRlbmsxX3Rob3VzX3RlbnRob3VzIG9uIHRlbmsxCisg ICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSBBTlkgKCd7 MSwzLDQyfSc6OmludGVnZXJbXSkpKQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSB0ZW5r MQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3Vz ID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKKyB1bmlxdWUxIHwgdW5pcXVlMiB8IHR3byB8IGZv dXIgfCB0ZW4gfCB0d2VudHkgfCBodW5kcmVkIHwgdGhvdXNhbmQgfCB0d290aG91c2FuZCB8 IGZpdmV0aG91cyB8IHRlbnRob3VzIHwgb2RkIHwgZXZlbiB8IHN0cmluZ3UxIHwgc3RyaW5n dTIgfCBzdHJpbmc0IAorLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tCisgICAgICA0MiB8ICAgIDU1MzAgfCAgIDAgfCAgICAyIHwgICAyIHwgICAgICAyIHwg ICAgICA0MiB8ICAgICAgIDQyIHwgICAgICAgICAgNDIgfCAgICAgICAgNDIgfCAgICAgICA0 MiB8ICA4NCB8ICAgODUgfCBRQkFBQUEgICB8IFNFSUFBQSAgIHwgT09PT3h4CisoMSByb3cp CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisg IFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5 OSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24g dGVuazEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFORCAodGhv dXNhbmQgPSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAtPiAgQml0 bWFwQW5kCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFf aHVuZHJlZAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0 MikKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91 c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5k ID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpCisoOCByb3dzKQorCitTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9 IDQyIE9SIHRob3VzYW5kID0gOTkpOworIGNvdW50IAorLS0tLS0tLQorICAgIDEwCisoMSBy b3cpCisKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBB TkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIElu ZGV4IFNjYW4gdXNpbmcgdGVuazFfdGhvdXNfdGVudGhvdXMgb24gdGVuazEKKyAgIEluZGV4 IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IEFOWSAoJ3sxLDMsNDJ9 Jzo6aW50ZWdlcltdKSkpCisoMiByb3dzKQogCiBTRUxFQ1QgKiBGUk9NIHRlbmsxCiAgIFdI RVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9S IHRlbnRob3VzID0gNDIpOwpAQCAtMTg2MSwyOCArMTg5MywxMDEgQEAgU0VMRUNUICogRlJP TSB0ZW5rMQogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGNvdW50KCopIEZST00gdGVu azEKICAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2Fu ZCA9IDk5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEFnZ3JlZ2F0ZQogICAgLT4gIEJpdG1hcCBIZWFw IFNjYW4gb24gdGVuazEKLSAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIp IEFORCAoKHRob3VzYW5kID0gNDIpIE9SICh0aG91c2FuZCA9IDk5KSkpCisgICAgICAgICBS ZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQyKSBBTkQgKHRob3VzYW5kID0gQU5ZICgnezQy LDk5fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAg ICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAg ICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0n OjppbnRlZ2VyW10pKQorKDggcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEK KyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9 IDk5KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAxMAorKDEgcm93KQorCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2Fu ZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMykgT1IgdGhvdXNhbmQg PSA0MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKKyAgICAg ICAgIFJlY2hlY2sgQ29uZDogKCgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IEFO WSAoJ3sxLDN9Jzo6aW50ZWdlcltdKSkpIE9SICh0aG91c2FuZCA9IDQxKSkKKyAgICAgICAg IC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSBBTlkgKCd7MSwzfSc6OmludGVn ZXJbXSkpKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsx X3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhv dXNhbmQgPSA0MSkKKyg4IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisg IFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAz KSBPUiB0aG91c2FuZCA9IDQxOworIGNvdW50IAorLS0tLS0tLQorICAgIDEwCisoMSByb3cp CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisg IFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5 OSBPUiB0ZW50aG91cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBT Y2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoKGh1bmRyZWQgPSA0Mikg QU5EICgodGVudGhvdXMgPCAyKSBPUiAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9Jzo6aW50 ZWdlcltdKSkpKSBPUiAodGhvdXNhbmQgPSA0MSkpCisgICAgICAgICAtPiAgQml0bWFwT3IK KyAgICAgICAgICAgICAgIC0+ICBCaXRtYXBBbmQKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgICAgICAg ICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0ZW50aG91cyA8IDIpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhv dXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENv bmQ6ICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKQorICAgICAgICAg ICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisg ICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0MSkKKygxNCBy b3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0g NDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMgPCAy KSBPUiB0aG91c2FuZCA9IDQxOworIGNvdW50IAorLS0tLS0tLQorICAgIDIwCisoMSByb3cp CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisg IFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA0 MSBPUiB0aG91c2FuZCA9IDk5IEFORCB0ZW50aG91cyA9IDIpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVh cCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQy KSBBTkQgKCgodGhvdXNhbmQgPSA5OSkgQU5EICh0ZW50aG91cyA9IDIpKSBPUiAodGhvdXNh bmQgPSBBTlkgKCd7NDIsNDF9Jzo6aW50ZWdlcltdKSkpKQogICAgICAgICAgLT4gIEJpdG1h cEFuZAogICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1 bmRyZWQKICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIp CiAgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKICAgICAgICAgICAgICAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gNDIpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gOTkpIEFORCAo dGVudGhvdXMgPSAyKSkKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gOTkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSBBTlkgKCd7NDIsNDF9Jzo6aW50ZWdlcltd KSkKICgxMSByb3dzKQogCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQotICBXSEVSRSBo dW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworICBX SEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gNDEg T1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKICBjb3VudCAKIC0tLS0tLS0K ICAgICAxMAogKDEgcm93KQogCitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAt LQogLS0gQ2hlY2sgYmVoYXZpb3Igd2l0aCBkdXBsaWNhdGUgaW5kZXggY29sdW1uIGNvbnRl bnRzCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ndWMub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ndWMub3V0CmluZGV4IDEyN2M5NTMyOTcu LjBmMmIxYjE2MjAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3Vj Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2d1Yy5vdXQKQEAgLTg2MSw3 ICs4NjEsOCBAQCBTRUxFQ1QgbmFtZSBGUk9NIHRhYl9zZXR0aW5nc19mbGFncwogICAgICAg ICAgICBuYW1lICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBk ZWZhdWx0X3N0YXRpc3RpY3NfdGFyZ2V0Ci0oMSByb3cpCisgZW5hYmxlX29yX3RyYW5zZm9y bWF0aW9uCisoMiByb3dzKQogCiAtLSBSdW50aW1lLWNvbXB1dGVkIEdVQ3Mgc2hvdWxkIGJl IHBhcnQgb2YgdGhlIHByZXNldCBjYXRlZ29yeS4KIFNFTEVDVCBuYW1lIEZST00gdGFiX3Nl dHRpbmdzX2ZsYWdzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2lu aGVyaXQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmhlcml0Lm91dAppbmRl eCAwZjFhYTgzMWY2Li4xNzgxMjUwMTIyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2luaGVyaXQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv aW5oZXJpdC5vdXQKQEAgLTI1NjAsNyArMjU2MCw3IEBAIGV4cGxhaW4gKGNvc3RzIG9mZikg c2VsZWN0ICogZnJvbSBsaXN0X3BhcnRlZCB3aGVyZSBhID0gJ2FiJyBvciBhIGluIChudWxs LCAnY2QnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogIFNlcSBTY2FuIG9uIHBhcnRfYWJfY2QgbGlzdF9wYXJ0ZWQKLSAgIEZp bHRlcjogKCgoYSk6OnRleHQgPSAnYWInOjp0ZXh0KSBPUiAoKGEpOjp0ZXh0ID0gQU5ZICgn e05VTEwsY2R9Jzo6dGV4dFtdKSkpCisgICBGaWx0ZXI6ICgoKGEpOjp0ZXh0ID0gQU5ZICgn e05VTEwsY2R9Jzo6dGV4dFtdKSkgT1IgKChhKTo6dGV4dCA9ICdhYic6OnRleHQpKQogKDIg cm93cykKIAogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxpc3RfcGFydGVk IHdoZXJlIGEgPSAnYWInOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9qb2luLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKaW5kZXgg MmM3MzI3MDE0My4uZTk1MmU1NDAxZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9qb2luLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4u b3V0CkBAIC00MjEwLDEwICs0MjEwLDEwIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikKIHNlbGVj dCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KICAgKGEudW5pcXVlMSA9IDEgYW5k IGIudW5pcXVlMSA9IDIpIG9yCiAgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3 KSBhbmQgYi5odW5kcmVkID0gNCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogIE5lc3RlZCBMb29wCi0gICBKb2luIEZpbHRlcjogKCgo YS51bmlxdWUxID0gMSkgQU5EIChiLnVuaXF1ZTEgPSAyKSkgT1IgKCgoYS51bmlxdWUyID0g MykgT1IgKGEudW5pcXVlMiA9IDcpKSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkKKyAgIEpvaW4g RmlsdGVyOiAoKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBPUiAoKGEu dW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkgQU5EIChiLmh1bmRyZWQgPSA0 KSkpCiAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBiCiAgICAgICAgICBSZWNo ZWNrIENvbmQ6ICgodW5pcXVlMSA9IDIpIE9SIChodW5kcmVkID0gNCkpCiAgICAgICAgICAt PiAgQml0bWFwT3IKQEAgLTQyMjMsMTYgKzQyMjMsNjQgQEAgc2VsZWN0ICogZnJvbSB0ZW5r MSBhIGpvaW4gdGVuazEgYiBvbgogICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KGh1bmRyZWQgPSA0KQogICAgLT4gIE1hdGVyaWFsaXplCiAgICAgICAgICAtPiAgQml0bWFw IEhlYXAgU2NhbiBvbiB0ZW5rMSBhCi0gICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgo dW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gMykgT1IgKHVuaXF1ZTIgPSA3KSkKKyAgICAg ICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSBB TlkgKCd7Myw3fSc6OmludGVnZXJbXSkpKQogICAgICAgICAgICAgICAgLT4gIEJpdG1hcE9y CiAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFf dW5pcXVlMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1 ZTEgPSAxKQogICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IHRlbmsxX3VuaXF1ZTIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 ICh1bmlxdWUyID0gMykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 ICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKQorKDE3IHJvd3MpCisKK1NF VCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikK K3NlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KKyAgKGEudW5pcXVlMSA9 IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1 ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0gNCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIE5lc3RlZCBMb29wCisgICBKb2luIEZpbHRlcjogKCgoYS51bmlxdWUxID0gMSkgQU5E IChiLnVuaXF1ZTEgPSAyKSkgT1IgKChhLnVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVn ZXJbXSkpIEFORCAoYi5odW5kcmVkID0gNCkpKQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4g b24gdGVuazEgYgorICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAyKSBPUiAo aHVuZHJlZCA9IDQpKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAyKQorICAgICAgICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6IChodW5kcmVkID0gNCkKKyAgIC0+ICBNYXRlcmlhbGl6ZQorICAgICAg ICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYQorICAgICAgICAgICAgICAgUmVj aGVjayBDb25kOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6 aW50ZWdlcltdKSkpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDEpCiAgICAg ICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVl MgotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSA3 KQotKDE5IHJvd3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo dW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkKKygxNyByb3dzKQorCitleHBs YWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9u CisgIChhLnVuaXF1ZTEgPCAyMCBvciBhLnVuaXF1ZTEgPSAzIG9yIGEudW5pcXVlMSA9IDEg YW5kIGIudW5pcXVlMSA9IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIg PSA3KSBhbmQgYi5odW5kcmVkID0gNCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29wCisgICBKb2luIEZpbHRlcjog KChhLnVuaXF1ZTEgPCAyMCkgT1IgKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9 IDIpKSBPUiAoKGEudW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkgQU5EIChi Lmh1bmRyZWQgPSA0KSkgT1IgKGEudW5pcXVlMSA9IDMpKQorICAgLT4gIFNlcSBTY2FuIG9u IHRlbmsxIGIKKyAgIC0+ICBNYXRlcmlhbGl6ZQorICAgICAgICAgLT4gIEJpdG1hcCBIZWFw IFNjYW4gb24gdGVuazEgYQorICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1 ZTEgPCAyMCkgT1IgKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6 aW50ZWdlcltdKSkgT1IgKHVuaXF1ZTEgPSAzKSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRt YXBPcgorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRl bmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1 bmlxdWUxIDwgMjApCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKHVuaXF1ZTEgPSAxKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6ICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKQorICAg ICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1 ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0g MykKKygxNSByb3dzKQogCitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAtLQog LS0gdGVzdCBwbGFjZW1lbnQgb2YgbW92YWJsZSBxdWFscyBpbiBhIHBhcmFtZXRlcml6ZWQg am9pbiB0cmVlCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w YXJ0aXRpb25fam9pbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlv bl9qb2luLm91dAppbmRleCA2NTYwZmUyNDE2Li42ZThkNjQ2NTViIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91dApAQCAtMjk2LDcgKzI5 Niw3IEBAIFNFTEVDVCB0MS5hLCB0MS5jLCB0Mi5iLCB0Mi5jIEZST00gKFNFTEVDVCAqIEZS T00gcHJ0MSBXSEVSRSBhIDwgNDUwKSB0MSBGVUxMIEpPCiAgICBTb3J0IEtleTogcHJ0MS5h LCBwcnQyLmIKICAgIC0+ICBIYXNoIEZ1bGwgSm9pbgogICAgICAgICAgSGFzaCBDb25kOiAo cHJ0MS5hID0gcHJ0Mi5iKQotICAgICAgICAgRmlsdGVyOiAoKHBydDEuYiA9IDApIE9SIChw cnQyLmEgPSAwKSkKKyAgICAgICAgIEZpbHRlcjogKChwcnQyLmEgPSAwKSBPUiAocHJ0MS5i ID0gMCkpCiAgICAgICAgICAtPiAgQXBwZW5kCiAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHJ0MV9wMSBwcnQxXzEKICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKGEg PCA0NTApCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlv bl9wcnVuZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVu ZS5vdXQKaW5kZXggOWE0YzQ4YzA1NS4uMTRhMjU0ZmJhNyAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dApAQCAtODIsMjUgKzgyLDQ3 IEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG51 bGw7CiAoMiByb3dzKQogCiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAg d2hlcmUgYSA9ICdhJyBvciBhID0gJ2MnOwotICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQXBwZW5kCiAgICAtPiAgU2VxIFNjYW4g b24gbHBfYWQgbHBfMQotICAgICAgICAgRmlsdGVyOiAoKGEgPSAnYSc6OmJwY2hhcikgT1Ig KGEgPSAnYyc6OmJwY2hhcikpCisgICAgICAgICBGaWx0ZXI6IChhID0gQU5ZICgne2EsY30n OjpicGNoYXJbXSkpCiAgICAtPiAgU2VxIFNjYW4gb24gbHBfYmMgbHBfMgotICAgICAgICAg RmlsdGVyOiAoKGEgPSAnYSc6OmJwY2hhcikgT1IgKGEgPSAnYyc6OmJwY2hhcikpCisgICAg ICAgICBGaWx0ZXI6IChhID0gQU5ZICgne2EsY30nOjpicGNoYXJbXSkpCiAoNSByb3dzKQog CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBub3Qg bnVsbCBhbmQgKGEgPSAnYScgb3IgYSA9ICdjJyk7Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgQXBwZW5kCiAgICAtPiAgU2VxIFNjYW4gb24gbHBfYWQgbHBfMQot ICAgICAgICAgRmlsdGVyOiAoKGEgSVMgTk9UIE5VTEwpIEFORCAoKGEgPSAnYSc6OmJwY2hh cikgT1IgKGEgPSAnYyc6OmJwY2hhcikpKQorICAgICAgICAgRmlsdGVyOiAoKGEgSVMgTk9U IE5VTEwpIEFORCAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10pKSkKICAgIC0+ICBTZXEg U2NhbiBvbiBscF9iYyBscF8yCi0gICAgICAgICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkg QU5EICgoYSA9ICdhJzo6YnBjaGFyKSBPUiAoYSA9ICdjJzo6YnBjaGFyKSkpCisgICAgICAg ICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5EIChhID0gQU5ZICgne2EsY30nOjpicGNo YXJbXSkpKQogKDUgcm93cykKIAorU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9u OworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPSAnYScg b3IgYSA9ICdjJzsKKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2FkIGxwXzEKKyAgICAgICAgIEZp bHRlcjogKGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkKKyAgIC0+ICBTZXEgU2NhbiBv biBscF9iYyBscF8yCisgICAgICAgICBGaWx0ZXI6IChhID0gQU5ZICgne2EsY30nOjpicGNo YXJbXSkpCisoNSByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20g bHAgd2hlcmUgYSBpcyBub3QgbnVsbCBhbmQgKGEgPSAnYScgb3IgYSA9ICdjJyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2Fu IG9uIGxwX2FkIGxwXzEKKyAgICAgICAgIEZpbHRlcjogKChhIElTIE5PVCBOVUxMKSBBTkQg KGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkpCisgICAtPiAgU2VxIFNjYW4gb24gbHBf YmMgbHBfMgorICAgICAgICAgRmlsdGVyOiAoKGEgSVMgTk9UIE5VTEwpIEFORCAoYSA9IEFO WSAoJ3thLGN9Jzo6YnBjaGFyW10pKSkKKyg1IHJvd3MpCisKK1JFU0VUIGVuYWJsZV9vcl90 cmFuc2Zvcm1hdGlvbjsKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3 aGVyZSBhIDw+ICdnJzsKICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgIAog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01MTUsMTAgKzUzNywx MCBAQCBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPD0g MzE7CiAoMjcgcm93cykKIAogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJs cCB3aGVyZSBhID0gMSBvciBhID0gNzsKLSAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICBTZXEgU2NhbiBvbiBybHAyIHJscAotICAgRmlsdGVyOiAo KGEgPSAxKSBPUiAoYSA9IDcpKQorICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3sxLDd9Jzo6aW50 ZWdlcltdKSkKICgyIHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJv bSBybHAgd2hlcmUgYSA9IDEgb3IgYiA9ICdhYic7CkBAIC01OTYsMTMgKzYxOCwxMyBAQCBl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPCAxIG9yIChh ID4gMjAgYW5kIGEgPCAyNSk7CiAKIC0tIHdoZXJlIGNsYXVzZSBjb250cmFkaWN0cyBzdWIt cGFydGl0aW9uJ3MgY29uc3RyYWludAogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBm cm9tIHJscCB3aGVyZSBhID0gMjAgb3IgYSA9IDQwOwotICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgQXBwZW5kCiAgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8xIHJscF8xCi0gICAgICAg ICBGaWx0ZXI6ICgoYSA9IDIwKSBPUiAoYSA9IDQwKSkKKyAgICAgICAgIEZpbHRlcjogKGEg PSBBTlkgKCd7MjAsNDB9Jzo6aW50ZWdlcltdKSkKICAgIC0+ICBTZXEgU2NhbiBvbiBybHA1 X2RlZmF1bHQgcmxwXzIKLSAgICAgICAgIEZpbHRlcjogKChhID0gMjApIE9SIChhID0gNDAp KQorICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3syMCw0MH0nOjppbnRlZ2VyW10pKQog KDUgcm93cykKIAogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscDMgd2hl cmUgYSA9IDIwOyAgIC8qIGVtcHR5ICovCkBAIC02NzEsNiArNjkzLDE2MyBAQCBleHBsYWlu IChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIChhID0gMSBhbmQgYSA9IDMp IG9yIChhID4gMSBhbmQgYSA9CiAgICAgICAgICBGaWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEg PSAzKSkgT1IgKChhID4gMSkgQU5EIChhID0gMTUpKSkKICgxMSByb3dzKQogCitTRVQgZW5h YmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVj dCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGEgPSA3OworICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBybHAyIHJscAorICAgRmlsdGVyOiAoYSA9 IEFOWSAoJ3sxLDd9Jzo6aW50ZWdlcltdKSkKKygyIHJvd3MpCisKK2V4cGxhaW4gKGNvc3Rz IG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYiA9ICdhYic7CisgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwMSBybHBfMQorICAgICAgICAgRmls dGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2Vx IFNjYW4gb24gcmxwMiBybHBfMgorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIp Ojp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwM2FiY2Qgcmxw XzMKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRl eHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMSBybHBfNAorICAgICAgICAgRmlsdGVy OiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNj YW4gb24gcmxwNF8yIHJscF81CisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6 OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0X2RlZmF1bHQg cmxwXzYKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6 OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfMSBybHBfNworICAgICAgICAgRmls dGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2Vx IFNjYW4gb24gcmxwNV9kZWZhdWx0IHJscF84CisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEp IE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHBf ZGVmYXVsdF8xMCBybHBfOQorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0 ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfMzAg cmxwXzEwCisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWIn Ojp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF9udWxsIHJscF8xMQor ICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkp CisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfZGVmYXVsdCBybHBfMTIKKyAgICAg ICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorKDI1 IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUg YSA+IDIwIGFuZCBhIDwgMjc7CisgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBB cHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzEgcmxwXzEKKyAgICAgICAgIEZpbHRl cjogKChhID4gMjApIEFORCAoYSA8IDI3KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzIg cmxwXzIKKyAgICAgICAgIEZpbHRlcjogKChhID4gMjApIEFORCAoYSA8IDI3KSkKKyg1IHJv d3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9 IDI5OworICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBybHA0X2RlZmF1bHQgcmxwCisgICBGaWx0 ZXI6IChhID0gMjkpCisoMiByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAq IGZyb20gcmxwIHdoZXJlIGEgPj0gMjk7CisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfZGVmYXVsdCBy bHBfMQorICAgICAgICAgRmlsdGVyOiAoYSA+PSAyOSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBy bHA1XzEgcmxwXzIKKyAgICAgICAgIEZpbHRlcjogKGEgPj0gMjkpCisgICAtPiAgU2VxIFNj YW4gb24gcmxwNV9kZWZhdWx0IHJscF8zCisgICAgICAgICBGaWx0ZXI6IChhID49IDI5KQor ICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0XzMwIHJscF80CisgICAgICAgICBGaWx0 ZXI6IChhID49IDI5KQorICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0X2RlZmF1bHQg cmxwXzUKKyAgICAgICAgIEZpbHRlcjogKGEgPj0gMjkpCisoMTEgcm93cykKKworZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhIDwgMSBvciAoYSA+IDIw IGFuZCBhIDwgMjUpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAxIHJs cF8xCisgICAgICAgICBGaWx0ZXI6ICgoYSA8IDEpIE9SICgoYSA+IDIwKSBBTkQgKGEgPCAy NSkpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMSBybHBfMgorICAgICAgICAgRmlsdGVy OiAoKGEgPCAxKSBPUiAoKGEgPiAyMCkgQU5EIChhIDwgMjUpKSkKKyg1IHJvd3MpCisKK2V4 cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDIwIG9yIGEg PSA0MDsKKyAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMSBybHBfMQorICAgICAgICAg RmlsdGVyOiAoYSA9IEFOWSAoJ3syMCw0MH0nOjppbnRlZ2VyW10pKQorICAgLT4gIFNlcSBT Y2FuIG9uIHJscDVfZGVmYXVsdCBybHBfMgorICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAo J3syMCw0MH0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2Zm KSBzZWxlY3QgKiBmcm9tIHJscDMgd2hlcmUgYSA9IDIwOyAgIC8qIGVtcHR5ICovCisgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBS ZXN1bHQKKyAgIE9uZS1UaW1lIEZpbHRlcjogZmFsc2UKKygyIHJvd3MpCisKK2V4cGxhaW4g KGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+IDEgYW5kIGEgPSAxMDsJ Lyogb25seSBkZWZhdWx0ICovCisgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcmxw X2RlZmF1bHRfMTAgcmxwCisgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA9IDEwKSkKKygy IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUg YSA+IDEgYW5kIGEgPj0xNTsJLyogcmxwMyBvbndhcmRzLCBpbmNsdWRpbmcgZGVmYXVsdCAq LworICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAor ICAgLT4gIFNlcSBTY2FuIG9uIHJscDNhYmNkIHJscF8xCisgICAgICAgICBGaWx0ZXI6ICgo YSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwM2VmZ2ggcmxw XzIKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBT ZXEgU2NhbiBvbiBybHAzbnVsbHh5IHJscF8zCisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEp IEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwM19kZWZhdWx0IHJscF80 CisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2Vx IFNjYW4gb24gcmxwNF8xIHJscF81CisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAo YSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8yIHJscF82CisgICAgICAgICBG aWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxw NF9kZWZhdWx0IHJscF83CisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAx NSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNV8xIHJscF84CisgICAgICAgICBGaWx0ZXI6 ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNV9kZWZh dWx0IHJscF85CisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisg ICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfMzAgcmxwXzEwCisgICAgICAgICBGaWx0 ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2Rl ZmF1bHRfZGVmYXVsdCBybHBfMTEKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChh ID49IDE1KSkKKygyMyByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZy b20gcmxwIHdoZXJlIGEgPSAxIGFuZCBhID0gMzsJLyogZW1wdHkgKi8KKyAgICAgICAgUVVF UlkgUExBTiAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAor ICAgT25lLVRpbWUgRmlsdGVyOiBmYWxzZQorKDIgcm93cykKKworZXhwbGFpbiAoY29zdHMg b2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSAoYSA9IDEgYW5kIGEgPSAzKSBvciAoYSA+ IDEgYW5kIGEgPSAxNSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5k CisgICAtPiAgU2VxIFNjYW4gb24gcmxwMiBybHBfMQorICAgICAgICAgRmlsdGVyOiAoKChh ID0gMSkgQU5EIChhID0gMykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCisgICAtPiAg U2VxIFNjYW4gb24gcmxwM2FiY2QgcmxwXzIKKyAgICAgICAgIEZpbHRlcjogKCgoYSA9IDEp IEFORCAoYSA9IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQorICAgLT4gIFNlcSBT Y2FuIG9uIHJscDNlZmdoIHJscF8zCisgICAgICAgICBGaWx0ZXI6ICgoKGEgPSAxKSBBTkQg KGEgPSAzKSkgT1IgKChhID4gMSkgQU5EIChhID0gMTUpKSkKKyAgIC0+ICBTZXEgU2NhbiBv biBybHAzbnVsbHh5IHJscF80CisgICAgICAgICBGaWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEg PSAzKSkgT1IgKChhID4gMSkgQU5EIChhID0gMTUpKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBy bHAzX2RlZmF1bHQgcmxwXzUKKyAgICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFORCAoYSA9 IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQorKDExIHJvd3MpCisKK1JFU0VUIGVu YWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKIC0tIG11bHRpLWNvbHVtbiBrZXlzCiBjcmVhdGUg dGFibGUgbWMzcCAoYSBpbnQsIGIgaW50LCBjIGludCkgcGFydGl0aW9uIGJ5IHJhbmdlIChh LCBhYnMoYiksIGMpOwogY3JlYXRlIHRhYmxlIG1jM3BfZGVmYXVsdCBwYXJ0aXRpb24gb2Yg bWMzcCBkZWZhdWx0OwpAQCAtMTkzMywxMCArMjExMiwxMCBAQCBleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gaHAgd2hlcmUgYSA9IDEgYW5kIGIgPSAnYWJjZGUnOwogCiBl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gaHAgd2hlcmUgYSA9IDEgYW5kIGIg PSAnYWJjZGUnIGFuZAogICAoYyA9IDIgb3IgYyA9IDMpOwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgU2VxIFNjYW4gb24gaHAyIGhwCi0gICBGaWx0ZXI6ICgo YSA9IDEpIEFORCAoYiA9ICdhYmNkZSc6OnRleHQpIEFORCAoKGMgPSAyKSBPUiAoYyA9IDMp KSkKKyAgIEZpbHRlcjogKChjID0gQU5ZICgnezIsM30nOjppbnRlZ2VyW10pKSBBTkQgKGEg PSAxKSBBTkQgKGIgPSAnYWJjZGUnOjp0ZXh0KSkKICgyIHJvd3MpCiAKIGRyb3AgdGFibGUg aHAyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCAwNTA3MDM5M2I5 Li5jOTI3YzIxZGQ0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAt MjQ5NSw3ICsyNDk1LDcgQEAgcGdfc3RhdHN8IFNFTEVDVCBuLm5zcG5hbWUgQVMgc2NoZW1h bmFtZSwKICAgICAgSk9JTiBwZ19jbGFzcyBjIE9OICgoYy5vaWQgPSBzLnN0YXJlbGlkKSkp CiAgICAgIEpPSU4gcGdfYXR0cmlidXRlIGEgT04gKCgoYy5vaWQgPSBhLmF0dHJlbGlkKSBB TkQgKGEuYXR0bnVtID0gcy5zdGFhdHRudW0pKSkpCiAgICAgIExFRlQgSk9JTiBwZ19uYW1l c3BhY2UgbiBPTiAoKG4ub2lkID0gYy5yZWxuYW1lc3BhY2UpKSkKLSAgV0hFUkUgKChOT1Qg YS5hdHRpc2Ryb3BwZWQpIEFORCBoYXNfY29sdW1uX3ByaXZpbGVnZShjLm9pZCwgYS5hdHRu dW0sICdzZWxlY3QnOjp0ZXh0KSBBTkQgKChjLnJlbHJvd3NlY3VyaXR5ID0gZmFsc2UpIE9S IChOT1Qgcm93X3NlY3VyaXR5X2FjdGl2ZShjLm9pZCkpKSk7CisgIFdIRVJFICgoTk9UIGEu YXR0aXNkcm9wcGVkKSBBTkQgaGFzX2NvbHVtbl9wcml2aWxlZ2UoYy5vaWQsIGEuYXR0bnVt LCAnc2VsZWN0Jzo6dGV4dCkgQU5EICgoTk9UIHJvd19zZWN1cml0eV9hY3RpdmUoYy5vaWQp KSBPUiAoYy5yZWxyb3dzZWN1cml0eSA9IGZhbHNlKSkpOwogcGdfc3RhdHNfZXh0fCBTRUxF Q1QgY24ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAogICAgIGMucmVsbmFtZSBBUyB0YWJsZW5h bWUsCiAgICAgc24ubnNwbmFtZSBBUyBzdGF0aXN0aWNzX3NjaGVtYW5hbWUsCkBAIC0yNTI2 LDcgKzI1MjYsNyBAQCBwZ19zdGF0c19leHR8IFNFTEVDVCBjbi5uc3BuYW1lIEFTIHNjaGVt YW5hbWUsCiAgIFdIRVJFICgoTk9UIChFWElTVFMgKCBTRUxFQ1QgMQogICAgICAgICAgICBG Uk9NICh1bm5lc3Qocy5zdHhrZXlzKSBrKGspCiAgICAgICAgICAgICAgSk9JTiBwZ19hdHRy aWJ1dGUgYSBPTiAoKChhLmF0dHJlbGlkID0gcy5zdHhyZWxpZCkgQU5EIChhLmF0dG51bSA9 IGsuaykpKSkKLSAgICAgICAgICBXSEVSRSAoTk9UIGhhc19jb2x1bW5fcHJpdmlsZWdlKGMu b2lkLCBhLmF0dG51bSwgJ3NlbGVjdCc6OnRleHQpKSkpKSBBTkQgKChjLnJlbHJvd3NlY3Vy aXR5ID0gZmFsc2UpIE9SIChOT1Qgcm93X3NlY3VyaXR5X2FjdGl2ZShjLm9pZCkpKSk7Cisg ICAgICAgICAgV0hFUkUgKE5PVCBoYXNfY29sdW1uX3ByaXZpbGVnZShjLm9pZCwgYS5hdHRu dW0sICdzZWxlY3QnOjp0ZXh0KSkpKSkgQU5EICgoTk9UIHJvd19zZWN1cml0eV9hY3RpdmUo Yy5vaWQpKSBPUiAoYy5yZWxyb3dzZWN1cml0eSA9IGZhbHNlKSkpOwogcGdfc3RhdHNfZXh0 X2V4cHJzfCBTRUxFQ1QgY24ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAogICAgIGMucmVsbmFt ZSBBUyB0YWJsZW5hbWUsCiAgICAgc24ubnNwbmFtZSBBUyBzdGF0aXN0aWNzX3NjaGVtYW5h bWUsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NlbGVjdC5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NlbGVjdC5vdXQKaW5kZXggMzNhNmRjZWIw ZS4uN2E4MjljNDRjNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z ZWxlY3Qub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0Lm91dApA QCAtODY4LDEzICs4NjgsMTMgQEAgc2VsZWN0IHVuaXF1ZTEsIHVuaXF1ZTIgZnJvbSBvbmVr MgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgQml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgotICAgUmVjaGVjayBDb25kOiAoKCh1 bmlxdWUyID0gMTEpIEFORCAoc3RyaW5ndTEgPCAnQic6Om5hbWUpKSBPUiAodW5pcXVlMSA9 IDApKQorICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAwKSBPUiAoKHVuaXF1ZTIgPSAx MSkgQU5EIChzdHJpbmd1MSA8ICdCJzo6bmFtZSkpKQogICAgRmlsdGVyOiAoc3RyaW5ndTEg PCAnQic6Om5hbWUpCiAgICAtPiAgQml0bWFwT3IKLSAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiBvbmVrMl91Ml9wcnRsCi0gICAgICAgICAgICAgICBJbmRleCBDb25kOiAo dW5pcXVlMiA9IDExKQogICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsy X3UxX3BydGwKICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMCkKKyAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91Ml9wcnRsCisgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IDExKQogKDggcm93cykKIAogc2VsZWN0 IHVuaXF1ZTEsIHVuaXF1ZTIgZnJvbSBvbmVrMgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zdGF0c19leHQub3V0CmluZGV4IGE0MzAxNTNiMjIuLjY1OWQ3MTJmNzUgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQKQEAgLTEzMjIsMTkgKzEzMjIs MTkgQEAgU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJP TSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRQogU0VMRUNUICogRlJPTSBjaGVja19l c3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBX SEVSRSAoYSA9IDEgT1IgYSA9IDUxKSBBTkQgYiA9ICcnMScnJyk7CiAgZXN0aW1hdGVkIHwg YWN0dWFsIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAgICAgICAgOTkgfCAgICAxMDAKKyAg ICAgICAxMDAgfCAgICAxMDAKICgxIHJvdykKIAogU0VMRUNUICogRlJPTSBjaGVja19lc3Rp bWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVS RSAoYSA9IDEgT1IgYSA9IDUxKSBBTkQgKGIgPSAnJzEnJyBPUiBiID0gJycyJycpJyk7CiAg ZXN0aW1hdGVkIHwgYWN0dWFsIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAgICAgICAgOTkg fCAgICAxMDAKKyAgICAgICAxMDAgfCAgICAxMDAKICgxIHJvdykKIAogU0VMRUNUICogRlJP TSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVu ZGVuY2llcyBXSEVSRSAoYSA9IDEgT1IgYSA9IDIgT1IgYSA9IDUxIE9SIGEgPSA1MikgQU5E IChiID0gJycxJycgT1IgYiA9ICcnMicnKScpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0t LS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgMTk3IHwgICAgMjAwCisgICAgICAgMjAwIHwg ICAgMjAwCiAoMSByb3cpCiAKIC0tIE9SIGNsYXVzZXMgcmVmZXJlbmNpbmcgZGlmZmVyZW50 IGF0dHJpYnV0ZXMgYXJlIGluY29tcGF0aWJsZQpAQCAtMTY2NCwxOSArMTY2NCwxOSBAQCBT RUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1bmN0 aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRl ZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFICgo YSAqIDIpID0gMiBPUiAoYSAqIDIpID0gMTAyKSBBTkQgdXBwZXIoYikgPSAnJzEnJycpOwog IGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgIDk5 IHwgICAgMTAwCisgICAgICAgMTAwIHwgICAgMTAwCiAoMSByb3cpCiAKIFNFTEVDVCAqIEZS T00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBl bmRlbmNpZXMgV0hFUkUgKChhICogMikgPSAyIE9SIChhICogMikgPSAxMDIpIEFORCAodXBw ZXIoYikgPSAnJzEnJyBPUiB1cHBlcihiKSA9ICcnMicnKScpOwogIGVzdGltYXRlZCB8IGFj dHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgIDk5IHwgICAgMTAwCisgICAg ICAgMTAwIHwgICAgMTAwCiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1h dGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUg KChhICogMikgPSAyIE9SIChhICogMikgPSA0IE9SIChhICogMikgPSAxMDIgT1IgKGEgKiAy KSA9IDEwNCkgQU5EICh1cHBlcihiKSA9ICcnMScnIE9SIHVwcGVyKGIpID0gJycyJycpJyk7 CiAgZXN0aW1hdGVkIHwgYWN0dWFsIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAgICAgICAx OTcgfCAgICAyMDAKKyAgICAgICAyMDAgfCAgICAyMDAKICgxIHJvdykKIAogLS0gT1IgY2xh dXNlcyByZWZlcmVuY2luZyBkaWZmZXJlbnQgYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N5c3ZpZXdzLm91dAppbmRleCAyNzEzMTNlYmY4Li5jNmM2YjlmYjhkIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dApAQCAtMTIzLDYgKzEy Myw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFt ZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVfbWVtb2l6ZSAgICAgICAgICAgICAgICAgfCBv bgogIGVuYWJsZV9tZXJnZWpvaW4gICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX25lc3Rs b29wICAgICAgICAgICAgICAgIHwgb24KKyBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gICAg ICAgfCBvbgogIGVuYWJsZV9wYXJhbGxlbF9hcHBlbmQgICAgICAgICB8IG9uCiAgZW5hYmxl X3BhcmFsbGVsX2hhc2ggICAgICAgICAgIHwgb24KICBlbmFibGVfcGFydGl0aW9uX3BydW5p bmcgICAgICAgfCBvbgpAQCAtMTMzLDcgKzEzNCw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5n IGZyb20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVf c2Vxc2NhbiAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9zb3J0ICAgICAgICAgICAg ICAgICAgICB8IG9uCiAgZW5hYmxlX3RpZHNjYW4gICAgICAgICAgICAgICAgIHwgb24KLSgy MiByb3dzKQorKDIzIHJvd3MpCiAKIC0tIFRoZXJlIGFyZSBhbHdheXMgd2FpdCBldmVudCBk ZXNjcmlwdGlvbnMgZm9yIHZhcmlvdXMgdHlwZXMuCiBzZWxlY3QgdHlwZSwgY291bnQoKikg PiAwIGFzIG9rIEZST00gcGdfd2FpdF9ldmVudHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3RpZHNjYW4ub3V0CmluZGV4IGYxMzNiNWE0YWMuLjJhMDc5ZTk5NmIgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC90aWRzY2FuLm91dApAQCAtNDMsMTAgKzQzLDI2IEBAIFNFTEVD VCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSAnKDAsMSknID0gY3RpZDsKIC0tIE9SJ2Qg Y2xhdXNlcwogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGN0aWQsICogRlJPTSB0aWRz Y2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlkOwotICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgVGlkIFNjYW4gb24gdGlkc2NhbgorICAgVElEIENvbmQ6IChj dGlkID0gQU5ZICgneyIoMCwyKSIsIigwLDEpIn0nOjp0aWRbXSkpCisoMiByb3dzKQorCitT RUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygw LDEpJyA9IGN0aWQ7CisgY3RpZCAgfCBpZCAKKy0tLS0tLS0rLS0tLQorICgwLDEpIHwgIDEK KyAoMCwyKSB8ICAyCisoMiByb3dzKQorCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9u ID0gb247CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNj YW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CisgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgVGlk IFNjYW4gb24gdGlkc2NhbgotICAgVElEIENvbmQ6ICgoY3RpZCA9ICcoMCwyKSc6OnRpZCkg T1IgKCcoMCwxKSc6OnRpZCA9IGN0aWQpKQorICAgVElEIENvbmQ6IChjdGlkID0gQU5ZICgn eyIoMCwyKSIsIigwLDEpIn0nOjp0aWRbXSkpCiAoMiByb3dzKQogCiBTRUxFQ1QgY3RpZCwg KiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7 CkBAIC01Niw2ICs3Miw3IEBAIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBj dGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKICAoMCwyKSB8ICAyCiAoMiByb3dz KQogCitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAtLSBjdGlkID0gU2NhbGFy QXJyYXlPcCAtIGltcGxlbWVudGVkIGFzIHRpZHNjYW4KIEVYUExBSU4gKENPU1RTIE9GRikK IFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gQU5ZKEFSUkFZWyco MCwxKScsICcoMCwyKSddOjp0aWRbXSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jcmVhdGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2lu ZGV4LnNxbAppbmRleCBkNDljZTlmMzAwLi40OGJiMWJjMGEwIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKQEAgLTczNyw2ICs3MzcsMzggQEAgU0VMRUNUIGNv dW50KCopIEZST00gdGVuazEKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiAgIFdIRVJF IGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CiAK K1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRl bnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7CitTRUxFQ1Qg KiBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEg T1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOworCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIg QU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworU0VMRUNUIGNvdW50KCop IEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBP UiB0aG91c2FuZCA9IDk5KTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50 KCopIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0g MSBPUiB0ZW50aG91cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CitTRUxFQ1QgY291bnQoKikg RlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9S IHRlbnRob3VzID0gMykgT1IgdGhvdXNhbmQgPSA0MTsKKworRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFO RCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5IE9SIHRlbnRob3VzIDwgMikgT1Ig dGhvdXNhbmQgPSA0MTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1 bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSBPUiB0ZW50 aG91cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRo b3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9IDk5IEFORCB0ZW50 aG91cyA9IDIpOworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJl ZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9SIHRob3VzYW5k ID0gOTkgQU5EIHRlbnRob3VzID0gMik7CitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRp b247CisKIC0tCiAtLSBDaGVjayBiZWhhdmlvciB3aXRoIGR1cGxpY2F0ZSBpbmRleCBjb2x1 bW4gY29udGVudHMKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2lu LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsCmluZGV4IDhhOGE2M2JkMmYu LjU1ZDdlMmFlN2QgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3Fs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsCkBAIC0xNDA4LDYgKzE0MDgs MTYgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKQogc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4g dGVuazEgYiBvbgogICAoYS51bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IKICAg KChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsK K1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9m ZikKK3NlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KKyAgKGEudW5pcXVl MSA9IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVu aXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0gNCk7CitleHBsYWluIChjb3N0cyBvZmYpCitz ZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCisgIChhLnVuaXF1ZTEgPCAy MCBvciBhLnVuaXF1ZTEgPSAzIG9yIGEudW5pcXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9IDIp IG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVk ID0gNCk7CitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAKIC0tCiAtLSB0ZXN0 IHBsYWNlbWVudCBvZiBtb3ZhYmxlIHF1YWxzIGluIGEgcGFyYW1ldGVyaXplZCBqb2luIHRy ZWUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsCmluZGV4IDdi ZjM5MjA4MjcuLjFlMjcwYWU5YzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3BhcnRpdGlvbl9wcnVuZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0 aW9uX3BydW5lLnNxbApAQCAtMjEsNiArMjEsMTIgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKSBz ZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbm90IG51bGw7CiBleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBudWxsOwogZXhwbGFpbiAoY29zdHMg b2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPSAnYScgb3IgYSA9ICdjJzsKIGV4cGxh aW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsIGFu ZCAoYSA9ICdhJyBvciBhID0gJ2MnKTsKKworU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlv biA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEg PSAnYScgb3IgYSA9ICdjJzsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBs cCB3aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9ICdhJyBvciBhID0gJ2MnKTsKK1JFU0VU IGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKKwogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxl Y3QgKiBmcm9tIGxwIHdoZXJlIGEgPD4gJ2cnOwogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxl Y3QgKiBmcm9tIGxwIHdoZXJlIGEgPD4gJ2EnIGFuZCBhIDw+ICdkJzsKIGV4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIG5vdCBpbiAoJ2EnLCAnZCcpOwpA QCAtOTksNiArMTA1LDIyIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBy bHAgd2hlcmUgYSA+IDEgYW5kIGEgPj0xNTsJLyogcmxwMyBvbndhcmRzLCBpCiBleHBsYWlu IChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIGFuZCBhID0gMzsJ LyogZW1wdHkgKi8KIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hl cmUgKGEgPSAxIGFuZCBhID0gMykgb3IgKGEgPiAxIGFuZCBhID0gMTUpOwogCisKK1NFVCBl bmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2Vs ZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYSA9IDc7CitleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGIgPSAnYWInOworZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMjAgYW5kIGEgPCAy NzsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDI5 OworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID49IDI5 OworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhIDwgMSBv ciAoYSA+IDIwIGFuZCBhIDwgMjUpOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBm cm9tIHJscCB3aGVyZSBhID0gMjAgb3IgYSA9IDQwOworZXhwbGFpbiAoY29zdHMgb2ZmKSBz ZWxlY3QgKiBmcm9tIHJscDMgd2hlcmUgYSA9IDIwOyAgIC8qIGVtcHR5ICovCitleHBsYWlu IChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPiAxIGFuZCBhID0gMTA7 CS8qIG9ubHkgZGVmYXVsdCAqLworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9t IHJscCB3aGVyZSBhID4gMSBhbmQgYSA+PTE1OwkvKiBybHAzIG9ud2FyZHMsIGluY2x1ZGlu ZyBkZWZhdWx0ICovCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdo ZXJlIGEgPSAxIGFuZCBhID0gMzsJLyogZW1wdHkgKi8KK2V4cGxhaW4gKGNvc3RzIG9mZikg c2VsZWN0ICogZnJvbSBybHAgd2hlcmUgKGEgPSAxIGFuZCBhID0gMykgb3IgKGEgPiAxIGFu ZCBhID0gMTUpOworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOworCiAtLSBtdWx0 aS1jb2x1bW4ga2V5cwogY3JlYXRlIHRhYmxlIG1jM3AgKGEgaW50LCBiIGludCwgYyBpbnQp IHBhcnRpdGlvbiBieSByYW5nZSAoYSwgYWJzKGIpLCBjKTsKIGNyZWF0ZSB0YWJsZSBtYzNw X2RlZmF1bHQgcGFydGl0aW9uIG9mIG1jM3AgZGVmYXVsdDsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3RpZHNjYW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGlk c2Nhbi5zcWwKaW5kZXggMzEzZTBmYjliNi4uMDQ5OWJlZGI5ZSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvdGlkc2Nhbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvdGlkc2Nhbi5zcWwKQEAgLTIyLDYgKzIyLDEyIEBAIEVYUExBSU4gKENPU1RTIE9GRikK IFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAn KDAsMSknID0gY3RpZDsKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlk ID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKIAorU0VUIGVuYWJsZV9vcl90cmFuc2Zv cm1hdGlvbiA9IG9uOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGN0aWQsICogRlJP TSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlkOworU0VM RUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwx KScgPSBjdGlkOworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOworCiAtLSBjdGlk ID0gU2NhbGFyQXJyYXlPcCAtIGltcGxlbWVudGVkIGFzIHRpZHNjYW4KIEVYUExBSU4gKENP U1RTIE9GRikKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gQU5Z KEFSUkFZWycoMCwxKScsICcoMCwyKSddOjp0aWRbXSk7CmRpZmYgLS1naXQgYS9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CmluZGV4IDg2YTk4ODZkNGYuLmQ5YTdkOWMyODQgMTAwNjQ0Ci0tLSBhL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CkBAIC0xNjQyLDYgKzE2NDIsOCBAQCBOdW1lcmljVmFyCiBPTV91aW50 MzIKIE9QCiBPU0FQZXJHcm91cFN0YXRlCitPckNsYXVzZUdyb3VwRW50cnkKK09yQ2xhdXNl R3JvdXBLZXkKIE9TQVBlclF1ZXJ5U3RhdGUKIE9TSW5mbwogT1NTTENpcGhlcgotLSAKMi40 My4wCgo= --------------WDML1OgqtvPaBusjifp4b9F0--