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 1r8elr-00B0nl-I4 for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Nov 2023 10:59:52 +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 1r8elq-00GhjG-4o for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Nov 2023 10:59:50 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r8ejb-00GfBS-UL for pgsql-hackers@lists.postgresql.org; Thu, 30 Nov 2023 10:57:32 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r8ejX-009KxM-VN for pgsql-hackers@postgresql.org; Thu, 30 Nov 2023 10:57:31 +0000 Received: from [10.4.14.67] (unknown [93.174.131.141]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: a.rybakina@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 67D87E21039; Thu, 30 Nov 2023 13:57:26 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1701341846; bh=68fDhOcCvlWZYFcZf0HamfIJIcOc1jWGrfYA8Y4X7fE=; h=Message-ID:Date:User-Agent:Subject:From:To:Cc:References: In-Reply-To:From; b=GiCNfkFZrpKP+0uecZV4Ot8ZtPgoggFtxAivSbROF8/WlatG05dgm1/zv5tI8qwEv X594OGJOy6QqKd31s2b7dgOllgIVINIDMs3oAvs68o/L1HhyEfLeRd7hSqOm/KgLie 5sSTETepvBK3pUl8J4Oz8tEp2oP4wTfq7jxoIJL1sxB58RUgabm68b+hf+Aj89qO4e +33rG1gL6AfBXKJB3/gy7M0ClJrUrP0qo7EcJumouYz+yDyppD7kkGaSR7DXHfwMvN tiDOGT5mC/HtuJwcMIMyJADAU5B/TUeZjmfR2xhb6U8PmFqiWSQOLdNU1G6Wz6xmSB oLQfrPC0+xCyQ== Content-Type: multipart/mixed; boundary="------------ATUK6aBJusl9JS4l10AqjW0x" Message-ID: <59b77a8a-29d6-4727-bf26-4a30a6a9719a@postgrespro.ru> Date: Thu, 30 Nov 2023 13:57:26 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC, WIP: OR-clause support for indexes Content-Language: en-US From: Alena Rybakina To: Andrei Lepikhov , Robert Haas , pgsql-hackers@postgresql.org, Alexander Korotkov Cc: 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> <59e67a40-95a8-4d74-ae4e-027ea0f59084@postgrespro.ru> In-Reply-To: <59e67a40-95a8-4d74-ae4e-027ea0f59084@postgrespro.ru> 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. --------------ATUK6aBJusl9JS4l10AqjW0x Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 30.11.2023 11:00, Alena Rybakina wrote: > Hi! > >> >>> 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. > > I think this is incorrect, and the example of A. Korotkov confirms > this. If we perform the conversion at the parsing stage, we will skip > the more important conversion using OR expressions. I'll show you in > the example below. > > First of all, I will describe my idea to combine two approaches to > obtaining plans with OR to ANY transformation and ANY to OR > transformation. I think they are both good, and we can't work with > just one of them, we should consider both the option of OR > expressions, and with ANY. > Just in case, I have attached a patch or->any transformation where this happens at the index creation stage. I get diff file during make check, but judging by the changes, it shows that the transformation is going well. I also attached it. -- Regards, Alena Rybakina Postgres Professional --------------ATUK6aBJusl9JS4l10AqjW0x Content-Type: text/x-patch; charset=UTF-8; name="v14-0001-Transform-OR-clause-to ANY-expressions.patch" Content-Disposition: attachment; filename="v14-0001-Transform-OR-clause-to ANY-expressions.patch" Content-Transfer-Encoding: base64 RnJvbSA5Zjc1YjU4NTI1YjQ4OTJkYjJjMzYwNDAxNzcxZjY5NTk5ZWQyMWM4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogV2VkLCAyOSBOb3YgMjAyMyAxODo1ODo1NSArMDMwMApTdWJq ZWN0OiBbUEFUQ0hdIFRyYW5zZm9ybSBPUiBjbGF1c2UgdG8gQU5ZIGV4cHJlc3Npb25zLgoK UmVwbGFjZSAoWD1OMSkgT1IgKFg9TjIpIC4uLiB3aXRoIFggPSBBTlkoTjEsIE4yKSBvbiB0 aGUgcHJlbGltaW5hcnkgc3RhZ2Ugb2YKb3B0aW1pemF0aW9uIHdoZW4gd2UgYXJlIHN0aWxs IHdvcmtpbmcgd2l0aCBhIHRyZWUgZXhwcmVzc2lvbi4KU29tZXRpbWVzIGl0IGNhbiBsZWFk IHRvIG5vdCBvcHRpbWFsIHBsYW4uIEJ1dCB3ZSB0aGluayBpdCBpcyBiZXR0ZXIgdG8gaGF2 ZQphcnJheSBvZiBlbGVtZW50cyBpbnN0ZWFkIG9mIGEgbG90IG9mIE9SIGNsYXVzZXMuIEhl cmUgaXMgYSByb29tIGZvciBmdXJ0aGVyCm9wdGltaXphdGlvbnMgb24gZGVjb21wb3Npbmcg dGhhdCBhcnJheSBpbnRvIG1vcmUgb3B0aW1hbCBwYXJ0cy4KCi0tLQogc3JjL2JhY2tlbmQv bm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jICAgICAgICAgIHwgIDMwICsrCiBzcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jICAgICAgICAgfCAzOTQgKysrKysrKysrKysr KysrKystCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAgICAg fCAgMTAgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxl IHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmggICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCAgICAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0 ICAgIHwgMTIwICsrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ndWMub3V0ICAg ICAgICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0 ICAgICAgICAgICAgfCAgNDggKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRp dGlvbl9wcnVuZS5vdXQgfCAxNzkgKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAgMyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC90aWRzY2FuLm91dCAgICAgICAgIHwgIDE3ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NyZWF0ZV9pbmRleC5zcWwgICAgICAgICB8ICAzMiArKwogc3JjL3Rlc3QvcmVncmVzcy9z cWwvam9pbi5zcWwgICAgICAgICAgICAgICAgIHwgIDEwICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwgICAgICB8ICAyMiArCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC90aWRzY2FuLnNxbCAgICAgICAgICAgICAgfCAgIDYgKwogc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAxICsKIDE3IGZpbGVzIGNoYW5n ZWQsIDg3NSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVz L3F1ZXJ5anVtYmxlZnVuY3MuYwppbmRleCAyODE5MDdhNGQ4My4uYzk4ZmRhNzNkMTcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYworKysgYi9z cmMvYmFja2VuZC9ub2Rlcy9xdWVyeWp1bWJsZWZ1bmNzLmMKQEAgLTI4Myw2ICsyODMsMzYg QEAgX2p1bWJsZU5vZGUoSnVtYmxlU3RhdGUgKmpzdGF0ZSwgTm9kZSAqbm9kZSkKIAl9CiB9 CiAKK0p1bWJsZVN0YXRlICoKK0p1bWJsZUV4cHIoRXhwciAqZXhwciwgdWludDY0ICpxdWVy eUlkKQoreworCUp1bWJsZVN0YXRlICpqc3RhdGUgPSBOVUxMOworCisJQXNzZXJ0KHF1ZXJ5 SWQgIT0gTlVMTCk7CisKKwlqc3RhdGUgPSAoSnVtYmxlU3RhdGUgKikgcGFsbG9jKHNpemVv ZihKdW1ibGVTdGF0ZSkpOworCisJLyogU2V0IHVwIHdvcmtzcGFjZSBmb3IgcXVlcnkganVt YmxpbmcgKi8KKwlqc3RhdGUtPmp1bWJsZSA9ICh1bnNpZ25lZCBjaGFyICopIHBhbGxvYyhK VU1CTEVfU0laRSk7CisJanN0YXRlLT5qdW1ibGVfbGVuID0gMDsKKwlqc3RhdGUtPmNsb2Nh dGlvbnNfYnVmX3NpemUgPSAzMjsKKwlqc3RhdGUtPmNsb2NhdGlvbnMgPSAoTG9jYXRpb25M ZW4gKikKKwkJcGFsbG9jKGpzdGF0ZS0+Y2xvY2F0aW9uc19idWZfc2l6ZSAqIHNpemVvZihM b2NhdGlvbkxlbikpOworCWpzdGF0ZS0+Y2xvY2F0aW9uc19jb3VudCA9IDA7CisJanN0YXRl LT5oaWdoZXN0X2V4dGVybl9wYXJhbV9pZCA9IDA7CisKKwkvKiBDb21wdXRlIHF1ZXJ5IElE ICovCisJX2p1bWJsZU5vZGUoanN0YXRlLCAoTm9kZSAqKSBleHByKTsKKwkqcXVlcnlJZCA9 IERhdHVtR2V0VUludDY0KGhhc2hfYW55X2V4dGVuZGVkKGpzdGF0ZS0+anVtYmxlLAorCQkJ CQkJCQkJCQkJanN0YXRlLT5qdW1ibGVfbGVuLAorCQkJCQkJCQkJCQkJMCkpOworCisJaWYg KCpxdWVyeUlkID09IFVJTlQ2NENPTlNUKDApKQorCQkqcXVlcnlJZCA9IFVJTlQ2NENPTlNU KDEpOworCisJcmV0dXJuIGpzdGF0ZTsKK30KKwogc3RhdGljIHZvaWQKIF9qdW1ibGVMaXN0 KEp1bWJsZVN0YXRlICpqc3RhdGUsIE5vZGUgKm5vZGUpCiB7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BhdGgvaW5keHBhdGguYwppbmRleCAwM2E1ZmJkYzZkYy4uYWNmNDkzN2RiMDEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMKKysrIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYwpAQCAtMzQsNyArMzQsMTIg QEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgiCiAjaW5jbHVkZSAidXRp bHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3MuaCIKLQorI2luY2x1 ZGUgInBhcnNlci9wYXJzZV9jb2VyY2UuaCIKKyNpbmNsdWRlICJjb21tb24vaGFzaGZuLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgIm5vZGVzL3F1 ZXJ5anVtYmxlLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJj YXRhbG9nL25hbWVzcGFjZS5oIgogCiAvKiBYWFggc2VlIFBhcnRDb2xsTWF0Y2hlc0V4cHJD b2xsICovCiAjZGVmaW5lIEluZGV4Q29sbE1hdGNoZXNFeHByQ29sbChpZHhjb2xsYXRpb24s IGV4cHJjb2xsYXRpb24pIFwKQEAgLTE5Myw2ICsxOTgsMzkwIEBAIHN0YXRpYyBib29sIGVj X21lbWJlcl9tYXRjaGVzX2luZGV4Y29sKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpyZWwsCiAJCQkJCQkJCQkgICBFcXVpdmFsZW5jZUNsYXNzICplYywgRXF1aXZhbGVuY2VN ZW1iZXIgKmVtLAogCQkJCQkJCQkJICAgdm9pZCAqYXJnKTsKIAorYm9vbAkJZW5hYmxlX29y X3RyYW5zZm9ybWF0aW9uID0gdHJ1ZTsKK3R5cGVkZWYgc3RydWN0IE9yQ2xhdXNlR3JvdXBL ZXkKK3sKKwlFeHByICAgKmV4cHI7IC8qIFBvaW50ZXIgdG8gdGhlIGV4cHJlc3Npb24gdHJl ZSB3aGljaCBoYXMgYmVlbiBhIHNvdXJjZSBmb3IKKwkJCQkJdGhlIGhhc2hrZXkgdmFsdWUg Ki8KKwlPaWQJCW9wbm87CisJT2lkCQlleHBydHlwZTsKK30gT3JDbGF1c2VHcm91cEtleTsK KwordHlwZWRlZiBzdHJ1Y3QgT3JDbGF1c2VHcm91cEVudHJ5Cit7CisJT3JDbGF1c2VHcm91 cEtleSBrZXk7CisJTm9kZQkJICAgKm5vZGU7CisJTGlzdAkJICAgKmNvbnN0czsKKwlPaWQJ CQkJY29sbGF0aW9uOworCVJlc3RyaWN0SW5mbyAgICpyaW5mbzsKKwlMaXN0IAkJICAgKmV4 cHJzOworfSBPckNsYXVzZUdyb3VwRW50cnk7CisKKy8qCisgKiBIYXNoIGZ1bmN0aW9uIHRo YXQncyBjb21wYXRpYmxlIHdpdGggZ3VjX25hbWVfY29tcGFyZQorICovCitzdGF0aWMgdWlu dDMyCitvcmNsYXVzZV9oYXNoKGNvbnN0IHZvaWQgKmRhdGEsIFNpemUga2V5c2l6ZSkKK3sK KwlPckNsYXVzZUdyb3VwS2V5ICAgKmtleSA9IChPckNsYXVzZUdyb3VwS2V5ICopIGRhdGE7 CisJdWludDY0CQkJCWhhc2g7CisKKwkodm9pZCkgSnVtYmxlRXhwcihrZXktPmV4cHIsICZo YXNoKTsKKwloYXNoID0gKCh1aW50NjQpIGtleS0+b3BubyArICh1aW50NjQpIGtleS0+ZXhw cnR5cGUpICUgVUlOVDY0X01BWDsKKwlyZXR1cm4gaGFzaDsKK30KKworc3RhdGljIHZvaWQg Kgorb3JjbGF1c2Vfa2V5Y29weSh2b2lkICpkZXN0LCBjb25zdCB2b2lkICpzcmMsIFNpemUg a2V5c2l6ZSkKK3sKKwlPckNsYXVzZUdyb3VwS2V5ICpzcmNfa2V5ID0gKE9yQ2xhdXNlR3Jv dXBLZXkgKikgc3JjOworCU9yQ2xhdXNlR3JvdXBLZXkgKmRzdF9rZXkgPSAoT3JDbGF1c2VH cm91cEtleSAqKSBkZXN0OworCisJQXNzZXJ0KHNpemVvZihPckNsYXVzZUdyb3VwS2V5KSA9 PSBrZXlzaXplKTsKKworCWRzdF9rZXktPmV4cHIgPSBzcmNfa2V5LT5leHByOworCWRzdF9r ZXktPm9wbm8gPSBzcmNfa2V5LT5vcG5vOworCWRzdF9rZXktPmV4cHJ0eXBlID0gc3JjX2tl eS0+ZXhwcnR5cGU7CisJcmV0dXJuIGRzdF9rZXk7Cit9CisKKy8qCisgKiBEeW5haGFzaCBt YXRjaCBmdW5jdGlvbiB0byB1c2UgaW4gZ3VjX2hhc2h0YWIKKyAqLworc3RhdGljIGludAor b3JjbGF1c2VfbWF0Y2goY29uc3Qgdm9pZCAqZGF0YTEsIGNvbnN0IHZvaWQgKmRhdGEyLCBT aXplIGtleXNpemUpCit7CisJT3JDbGF1c2VHcm91cEtleSAgICprZXkxID0gKE9yQ2xhdXNl R3JvdXBLZXkgKikgZGF0YTE7CisJT3JDbGF1c2VHcm91cEtleSAgICprZXkyID0gKE9yQ2xh dXNlR3JvdXBLZXkgKikgZGF0YTI7CisKKwlBc3NlcnQoc2l6ZW9mKE9yQ2xhdXNlR3JvdXBL ZXkpID09IGtleXNpemUpOworCisJaWYgKGtleTEtPm9wbm8gPT0ga2V5Mi0+b3BubyAmJiBr ZXkxLT5leHBydHlwZSA9PSBrZXkyLT5leHBydHlwZSAmJgorCQllcXVhbChrZXkxLT5leHBy LCBrZXkyLT5leHByKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gMTsKK30KKworLyoKKyAq IFBhc3MgdGhyb3VnaCBiYXNlcmVzdHJpY3RpbmZvIGNsYXVzZXMgYW5kIHRyeSB0byBjb252 ZXJ0IE9SIGNsYXVzZXMgaW50byBJTgorICogUmV0dXJuIGEgbW9kaWZpZWQgY2xhdXNlIGxp c3Qgb3IganVzdCB0aGUgc2FtZSBiYXNlcmVzdHJpY3RpbmZvLCBpZiBubworICogY2hhbmdl cyBoYXZlIG1hZGUuCisgKiBYWFg6IGRvIG5vdCBjaGFuZ2Ugc291cmNlIGxpc3Qgb2YgY2xh dXNlcyBhdCBhbGwuCisgKi8KK3N0YXRpYyBMaXN0ICoKK3RyYW5zZm9ybV9vcnMoUGxhbm5l ckluZm8gKnJvb3QsIExpc3QgKmJhc2VyZXN0cmljdGluZm8pCit7CisJTGlzdENlbGwgICAq bGM7CisJTGlzdAkgICAqbW9kaWZpZWRfcmluZm8gPSBOSUw7CisJYm9vbAkJc29tZXRoaW5n X2NoYW5nZWQgPSBmYWxzZTsKKworCS8qCisJICogQ29tcGxleGl0eSBvZiBhIGNsYXVzZSBj b3VsZCBiZSBhcmJpdHJhcmlseSBzb3BoaXN0aWNhdGVkLiBIZXJlLCB3ZSB3aWxsCisJICog bG9vayB1cCBvbmx5IG9uIHRoZSB0b3AgbGV2ZWwgb2YgY2xhdXNlIGxpc3QuCisJICogWFhY OiBJdCBpcyBzdWJzdGFudGlhdGVkPyBDb3VsZCB3ZSBjaGFuZ2Ugc29tZXRoaW5nIGhlcmU/ CisJICovCisJZm9yZWFjaCAobGMsIGJhc2VyZXN0cmljdGluZm8pCisJeworCQlSZXN0cmlj dEluZm8gICAqcmluZm8gPSBsZmlyc3Rfbm9kZShSZXN0cmljdEluZm8sIGxjKTsKKwkJUmVz dHJpY3RJbmZvICAgKnJpbmZvX2Jhc2UgPSBjb3B5T2JqZWN0KHJpbmZvKTsKKwkJTGlzdAkJ ICAgKm9yX2xpc3QgPSBOSUw7CisJCUxpc3RDZWxsCSAgICpsY19lYXJncywKKwkJCQkJICAg KmxjX3JhcmdzOworCQlib29sCQkJY2hhbmdlX2FwcGx5ID0gZmFsc2U7CisJCUhBU0hDVEwJ CQlpbmZvOworCQlIVEFCIAkJICAgKm9yX2dyb3VwX2h0YWIgPSBOVUxMOworCQlpbnQgCQkJ bGVuX29yczsKKwkJSEFTSF9TRVFfU1RBVFVTCQloYXNoX3NlcTsKKwkJT3JDbGF1c2VHcm91 cEVudHJ5ICpnZW50cnk7CisKKwkJaWYgKCFlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gfHwg IXJlc3RyaWN0aW9uX2lzX29yX2NsYXVzZShyaW5mbykpCisJCXsKKwkJCS8qIEFkZCBhIGNs YXVzZSB3aXRob3V0IGNoYW5nZXMgKi8KKwkJCW1vZGlmaWVkX3JpbmZvID0gbGFwcGVuZCht b2RpZmllZF9yaW5mbywgcmluZm8pOworCQkJY29udGludWU7CisJCX0KKworCQlsZW5fb3Jz ID0gKChCb29sRXhwciAqKSByaW5mby0+Y2xhdXNlKS0+YXJncz8gbGlzdF9sZW5ndGgoKChC b29sRXhwciAqKSByaW5mby0+Y2xhdXNlKS0+YXJncykgOiAwOworCisJCWlmIChsZW5fb3Jz IDwgMikKKwkJeworCQkJLyogQWRkIGEgY2xhdXNlIHdpdGhvdXQgY2hhbmdlcyAqLworCQkJ bW9kaWZpZWRfcmluZm8gPSBsYXBwZW5kKG1vZGlmaWVkX3JpbmZvLCByaW5mbyk7CisJCQlj b250aW51ZTsKKwkJfQorCisJCU1lbVNldCgmaW5mbywgMCwgc2l6ZW9mKGluZm8pKTsKKwkJ aW5mby5rZXlzaXplID0gc2l6ZW9mKE9yQ2xhdXNlR3JvdXBLZXkpOworCQlpbmZvLmVudHJ5 c2l6ZSA9IHNpemVvZihPckNsYXVzZUdyb3VwRW50cnkpOworCQlpbmZvLmhhc2ggPSBvcmNs YXVzZV9oYXNoOworCQlpbmZvLmtleWNvcHkgPSBvcmNsYXVzZV9rZXljb3B5OworCQlpbmZv Lm1hdGNoID0gb3JjbGF1c2VfbWF0Y2g7CisJCW9yX2dyb3VwX2h0YWIgPSBoYXNoX2NyZWF0 ZSgiT1IgR3JvdXBzIiwKKwkJCQkJCQkJCWxlbl9vcnMsCisJCQkJCQkJCQkmaW5mbywKKwkJ CQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUgfCBIQVNI X0tFWUNPUFkpOworCisJCS8qCisJCSAqIE5PVEU6CisJCSAqIEl0IGlzIGFuIE9SLWNsYXVz ZS4gU28sIHJpbmZvLT5vcmNsYXVzZSBpcyBhIEJvb2xFeHByIG5vZGUsIGNvbnRhaW5zCisJ CSAqIGEgbGlzdCBvZiBzdWItcmVzdHJpY3RpbmZvIGFyZ3MsIGFuZCByaW5mby0+Y2xhdXNl IC0gd2hpY2ggaXMgdGhlCisJCSAqIHNhbWUgZXhwcmVzc2lvbiwgbWFkZSBmcm9tIGJhcmUg Y2xhdXNlcy4gVG8gbm90IGJyZWFrIHNlbGVjdGl2aXR5CisJCSAqIGNhY2hlcyBhbmQgb3Ro ZXIgb3B0aW1pemF0aW9ucywgdXNlIGJvdGg6CisJCSAqIC0gdXNlIHJpbmZvcyBmcm9tIG9y Y2xhdXNlIGlmIG5vIHRyYW5zZm9ybWF0aW9uIG5lZWRlZAorCQkgKiAtIHVzZSAgYmFyZSBx dWFscyBmcm9tIHJpbmZvLT5jbGF1c2UgaW4gdGhlIGNhc2Ugb2YgdHJhbnNmb3JtYXRpb24s CisJCSAqIHRvIGNyZWF0ZSBuZXcgUmVzdHJpY3RJbmZvOiBpbiB0aGlzIGNhc2Ugd2UgaGF2 ZSBubyBvcHRpb25zIHRvIGF2b2lkCisJCSAqIHNlbGVjdGl2aXR5IGVzdGltYXRpb24gcHJv Y2VkdXJlLgorCQkgKi8KKwkJZm9yYm90aChsY19lYXJncywgKChCb29sRXhwciAqKSByaW5m by0+Y2xhdXNlKS0+YXJncywKKwkJCQlsY19yYXJncywgKChCb29sRXhwciAqKSByaW5mby0+ b3JjbGF1c2UpLT5hcmdzKQorCQl7CisJCQlFeHByCQkJICAgKm9yX3F1YWwgPSAoRXhwciAq KSBsZmlyc3QobGNfZWFyZ3MpOworCQkJUmVzdHJpY3RJbmZvCSAgICpzdWJfcmluZm87CisJ CQlOb2RlCQkJICAgKmNvbnN0X2V4cHI7CisJCQlOb2RlCQkJICAgKm5jb25zdF9leHByOwor CQkJT3JDbGF1c2VHcm91cEtleQkJaGFzaGtleTsKKwkJCWJvb2wgZm91bmQgPSBmYWxzZTsK KworCQkJLyogSXQgbWF5IGJlIG9uZSBtb3JlIGJvb2xlYW4gZXhwcmVzc2lvbiwgc2tpcCBp dCBmb3Igbm93ICovCisJCQlpZiAoIUlzQShsZmlyc3QobGNfcmFyZ3MpLCBSZXN0cmljdElu Zm8pKQorCQkJeworCQkJCW9yX2xpc3QgPSBsYXBwZW5kKG9yX2xpc3QsICh2b2lkICopIG9y X3F1YWwpOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQlzdWJfcmluZm8gPSBsZmlyc3Rf bm9kZShSZXN0cmljdEluZm8sIGxjX3JhcmdzKTsKKworCQkJLyogQ2hlY2s6IGl0IGlzIGFu IGV4cHIgb2YgdGhlIGZvcm0gJ0YoeCkgb3BlciBDb25zdEV4cHInICovCisJCQlpZiAoIUlz QShvcl9xdWFsLCBPcEV4cHIpIHx8CisJCQkJIShibXNfaXNfZW1wdHkoc3ViX3JpbmZvLT5s ZWZ0X3JlbGlkcykgXgorCQkJCWJtc19pc19lbXB0eShzdWJfcmluZm8tPnJpZ2h0X3JlbGlk cykpIHx8CisJCQkJY29udGFpbl92b2xhdGlsZV9mdW5jdGlvbnMoKE5vZGUgKikgb3JfcXVh bCkpCisJCQl7CisJCQkJLyogQWdhaW4sIGl0J3Mgbm90IHRoZSBleHByIHdlIGNhbiB0cmFu c2Zvcm0gKi8KKwkJCQlvcl9saXN0ID0gbGFwcGVuZChvcl9saXN0LCAodm9pZCAqKSBvcl9x dWFsKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJLyogR2V0IHBvaW50ZXJzIHRvIGNv bnN0YW50IGFuZCBleHByZXNzaW9uIHNpZGVzIG9mIHRoZSBjbGF1c2UgKi8KKwkJCWNvbnN0 X2V4cHIgPWJtc19pc19lbXB0eShzdWJfcmluZm8tPmxlZnRfcmVsaWRzKSA/CisJCQkJCQkJ CQkJCQlnZXRfbGVmdG9wKHN1Yl9yaW5mby0+Y2xhdXNlKSA6CisJCQkJCQkJCQkJCQlnZXRf cmlnaHRvcChzdWJfcmluZm8tPmNsYXVzZSk7CisJCQluY29uc3RfZXhwciA9IGJtc19pc19l bXB0eShzdWJfcmluZm8tPmxlZnRfcmVsaWRzKSA/CisJCQkJCQkJCQkJCQlnZXRfcmlnaHRv cChzdWJfcmluZm8tPmNsYXVzZSkgOgorCQkJCQkJCQkJCQkJZ2V0X2xlZnRvcChzdWJfcmlu Zm8tPmNsYXVzZSk7CisKKwkJCWlmICghb3BfbWVyZ2Vqb2luYWJsZSgoKE9wRXhwciAqKSBz dWJfcmluZm8tPmNsYXVzZSktPm9wbm8sIGV4cHJUeXBlKG5jb25zdF9leHByKSkpCisJCQl7 CisJCQkJLyogQW5kIGFnYWluLCBmaWx0ZXIgb3V0IG5vbi1lcXVhbGl0eSBvcGVyYXRvcnMg Ki8KKwkJCQlvcl9saXN0ID0gbGFwcGVuZChvcl9saXN0LCAodm9pZCAqKSBvcl9xdWFsKTsK KwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIEF0IHRoaXMgcG9pbnQgd2Ug ZGVmaW5pdGVseSBoYXZlIGEgdHJhbnNmb3JtYWJsZSBjbGF1c2UuCisJCQkgKiBDbGFzc2lm eSBpdCBhbmQgYWRkIGludG8gc3BlY2lmaWMgZ3JvdXAgb2YgY2xhdXNlcywgb3IgY3JlYXRl IG5ldworCQkJICogZ3JvdXAuCisJCQkgKi8KKwkJCWhhc2hrZXkuZXhwciA9IChFeHByICop IG5jb25zdF9leHByOworCQkJaGFzaGtleS5vcG5vID0gKChPcEV4cHIgKikgb3JfcXVhbCkt Pm9wbm87CisJCQloYXNoa2V5LmV4cHJ0eXBlID0gZXhwclR5cGUobmNvbnN0X2V4cHIpOwor CQkJZ2VudHJ5ID0gaGFzaF9zZWFyY2gob3JfZ3JvdXBfaHRhYiwgJmhhc2hrZXksIEhBU0hf RU5URVIsICZmb3VuZCk7CisKKwkJCWlmICh1bmxpa2VseShmb3VuZCkpCisJCQl7CisJCQkJ Z2VudHJ5LT5jb25zdHMgPSBsYXBwZW5kKGdlbnRyeS0+Y29uc3RzLCBjb25zdF9leHByKTsK KwkJCQlnZW50cnktPmV4cHJzID0gbGFwcGVuZChnZW50cnktPmV4cHJzLCBvcl9xdWFsKTsK KwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlnZW50cnktPm5vZGUgPSBuY29uc3RfZXhwcjsK KwkJCQlnZW50cnktPmNvbnN0cyA9IGxpc3RfbWFrZTEoY29uc3RfZXhwcik7CisJCQkJZ2Vu dHJ5LT5leHBycyA9IGxpc3RfbWFrZTEob3JfcXVhbCk7CisJCQkJZ2VudHJ5LT5yaW5mbyA9 IHN1Yl9yaW5mbzsKKwkJCQlnZW50cnktPmNvbGxhdGlvbiA9IGV4cHJJbnB1dENvbGxhdGlv bigoTm9kZSAqKXN1Yl9yaW5mby0+Y2xhdXNlKTsKKwkJCX0KKwkJfQorCisJCWlmIChsaXN0 X2xlbmd0aChvcl9saXN0KSA9PSBsZW5fb3JzKQorCQl7CisJCQkvKgorCQkJKiBObyBhbnkg dHJhbnNmb3JtYXRpb25zIHBvc3NpYmxlIHdpdGggdGhpcyBsaXN0IG9mIGFyZ3VtZW50cy4g SGVyZSB3ZQorCQkJKiBhbHJlYWR5IG1hZGUgYWxsIHVuZGVybHlpbmcgdHJhbnNmb3JtYXRp b25zLiBUaHVzLCBqdXN0IHJldHVybiB0aGUKKwkJCSogdHJhbnNmb3JtZWQgYm9vbCBleHBy ZXNzaW9uLgorCQkJKi8KKwkJCW1vZGlmaWVkX3JpbmZvID0gbGFwcGVuZChtb2RpZmllZF9y aW5mbywgcmluZm8pOworCQkJY29udGludWU7CisJCX0KKworCQlpZiAoIW9yX2dyb3VwX2h0 YWIgJiYgaGFzaF9nZXRfbnVtX2VudHJpZXMob3JfZ3JvdXBfaHRhYikgPCAxKQorCQl7CisJ CQkvKgorCQkJICogTm8gYW55IHRyYW5zZm9ybWF0aW9ucyBwb3NzaWJsZSB3aXRoIHRoaXMg cmluZm8sIGp1c3QgYWRkIGl0c2VsZgorCQkJICogdG8gdGhlIGxpc3QgYW5kIGdvIGZ1cnRo ZXIuCisJCQkgKi8KKwkJCW1vZGlmaWVkX3JpbmZvID0gbGFwcGVuZChtb2RpZmllZF9yaW5m bywgcmluZm8pOworCQkJY29udGludWU7CisJCX0KKworCQloYXNoX3NlcV9pbml0KCZoYXNo X3NlcSwgb3JfZ3JvdXBfaHRhYik7CisKKwkJLyogTGV0J3MgY29udmVydCBlYWNoIGdyb3Vw IG9mIGNsYXVzZXMgdG8gYW4gSU4gb3BlcmF0aW9uLiAqLworCisJCS8qCisJCSogR28gdGhy b3VnaCB0aGUgbGlzdCBvZiBncm91cHMgYW5kIGNvbnZlcnQgZWFjaCwgd2hlcmUgbnVtYmVy IG9mCisJCSogY29uc3RzIG1vcmUgdGhhbiAxLiB0cml2aWFsIGdyb3VwcyBtb3ZlIHRvIE9S LWxpc3QgYWdhaW4KKwkJKi8KKworCQl3aGlsZSAoKGdlbnRyeSA9IChPckNsYXVzZUdyb3Vw RW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJCXsKKwkJ CU9pZAkJCQkgICAgc2NhbGFyX3R5cGU7CisJCQlPaWQJCQkJCWFycmF5X3R5cGU7CisKKwkJ CUFzc2VydChsaXN0X2xlbmd0aChnZW50cnktPmNvbnN0cykgPiAwKTsKKwkJCUFzc2VydChs aXN0X2xlbmd0aChnZW50cnktPmV4cHJzKSA9PSBsaXN0X2xlbmd0aChnZW50cnktPmNvbnN0 cykpOworCisJCQlpZiAobGlzdF9sZW5ndGgoZ2VudHJ5LT5jb25zdHMpID09IDEpCisJCQl7 CisJCQkJLyoKKwkJCQkqIE9ubHkgb25lIGVsZW1lbnQgaW4gdGhlIGNsYXNzLiBSZXR1cm4g cmluZm8gaW50byB0aGUgQm9vbEV4cHIKKwkJCQkqIGFyZ3MgbGlzdCB1bmNoYW5nZWQuCisJ CQkJKi8KKwkJCQlsaXN0X2ZyZWUoZ2VudHJ5LT5jb25zdHMpOworCQkJCW9yX2xpc3QgPSBs aXN0X2NvbmNhdChvcl9saXN0LCBnZW50cnktPmV4cHJzKTsKKwkJCQljb250aW51ZTsKKwkJ CX0KKworCQkJLyoKKwkJCSogRG8gdGhlIHRyYW5zZm9ybWF0aW9uLgorCQkJKgorCQkJKiBG aXJzdCBvZiBhbGwsIHRyeSB0byBzZWxlY3QgYSBjb21tb24gdHlwZSBmb3IgdGhlIGFycmF5 IGVsZW1lbnRzLgorCQkJKiBOb3RlIHRoYXQgc2luY2UgdGhlIExIUycgdHlwZSBpcyBmaXJz dCBpbiB0aGUgbGlzdCwgaXQgd2lsbCBiZQorCQkJKiBwcmVmZXJyZWQgd2hlbiB0aGVyZSBp cyBkb3VidCAoZWcsIHdoZW4gYWxsIHRoZSBSSFMgaXRlbXMgYXJlCisJCQkqIHVua25vd24g bGl0ZXJhbHMpLgorCQkJKgorCQkJKiBOb3RlOiB1c2UgbGlzdF9jb25jYXQgaGVyZSBub3Qg bGNvbnMsIHRvIGF2b2lkIGRhbWFnaW5nIHJub252YXJzLgorCQkJKgorCQkJKiBBcyBhIHNv dXJjZSBvZiBpbnNpZGVzLCB1c2UgbWFrZV9zY2FsYXJfYXJyYXlfb3AoKQorCQkJKi8KKwkJ CXNjYWxhcl90eXBlID0gZ2VudHJ5LT5rZXkuZXhwcnR5cGU7CisKKwkJCWlmIChzY2FsYXJf dHlwZSAhPSBSRUNPUkRPSUQgJiYgT2lkSXNWYWxpZChzY2FsYXJfdHlwZSkpCisJCQkJYXJy YXlfdHlwZSA9IGdldF9hcnJheV90eXBlKHNjYWxhcl90eXBlKTsKKwkJCWVsc2UKKwkJCQlh cnJheV90eXBlID0gSW52YWxpZE9pZDsKKworCQkJaWYgKGFycmF5X3R5cGUgIT0gSW52YWxp ZE9pZCAmJiBzY2FsYXJfdHlwZSAhPSBJbnZhbGlkT2lkKQorCQkJeworCQkJCS8qCisJCQkJ KiBPSzogY29lcmNlIGFsbCB0aGUgcmlnaHQtaGFuZCBub24tVmFyIGlucHV0cyB0byB0aGUg Y29tbW9uCisJCQkJKiB0eXBlIGFuZCBidWlsZCBhbiBBcnJheUV4cHIgZm9yIHRoZW0uCisJ CQkJKi8KKwkJCQlMaXN0CSAgICphZXhwcnMgPSBOVUxMOworCQkJCUFycmF5RXhwciAgKm5l d2EgPSBOVUxMOworCQkJCVNjYWxhckFycmF5T3BFeHByICpzYW9wZXhwciA9IE5VTEw7CisJ CQkJSGVhcFR1cGxlCQkJb3BlcnR1cDsKKwkJCQlGb3JtX3BnX29wZXJhdG9yCW9wZXJmb3Jt OworCQkJCUxpc3QJCQkgICAqbmFtZWxpc3QgPSBOSUw7CisKKwkJCQlhZXhwcnMgPSBnZW50 cnktPmNvbnN0czsKKworCQkJCW5ld2EgPSBtYWtlTm9kZShBcnJheUV4cHIpOworCQkJCS8q IGFycmF5X2NvbGxpZCB3aWxsIGJlIHNldCBieSBwYXJzZV9jb2xsYXRlLmMgKi8KKwkJCQlu ZXdhLT5lbGVtZW50X3R5cGVpZCA9IHNjYWxhcl90eXBlOworCQkJCW5ld2EtPmFycmF5X3R5 cGVpZCA9IGFycmF5X3R5cGU7CisJCQkJbmV3YS0+bXVsdGlkaW1zID0gZmFsc2U7CisJCQkJ bmV3YS0+ZWxlbWVudHMgPSBhZXhwcnM7CisJCQkJbmV3YS0+bG9jYXRpb24gPSAtMTsKKwor CQkJCW9wZXJ0dXAgPSBTZWFyY2hTeXNDYWNoZTEoT1BFUk9JRCwKKwkJCQkJCQkJCSAgT2Jq ZWN0SWRHZXREYXR1bShnZW50cnktPmtleS5vcG5vKSk7CisKKwkJCQlpZiAoIUhlYXBUdXBs ZUlzVmFsaWQob3BlcnR1cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciBvcGVyYXRvciAldSIsCisJCQkJCQlnZW50cnktPmtleS5vcG5vKTsKKworCQkJ CW9wZXJmb3JtID0gKEZvcm1fcGdfb3BlcmF0b3IpIEdFVFNUUlVDVChvcGVydHVwKTsKKwkJ CQlpZiAoIU9wZXJhdG9ySXNWaXNpYmxlKGdlbnRyeS0+a2V5Lm9wbm8pKQorCQkJCQluYW1l bGlzdCA9IGxhcHBlbmQobmFtZWxpc3QsIG1ha2VTdHJpbmcoZ2V0X25hbWVzcGFjZV9uYW1l KG9wZXJmb3JtLT5vcHJuYW1lc3BhY2UpKSk7CisKKwkJCQluYW1lbGlzdCA9IGxhcHBlbmQo bmFtZWxpc3QsIG1ha2VTdHJpbmcocHN0cmR1cChOYW1lU3RyKG9wZXJmb3JtLT5vcHJuYW1l KSkpKTsKKwkJCQlSZWxlYXNlU3lzQ2FjaGUob3BlcnR1cCk7CisKKwkJCQlzYW9wZXhwciA9 IG1ha2VOb2RlKFNjYWxhckFycmF5T3BFeHByKTsKKwkJCQlzYW9wZXhwci0+b3BubyA9ICgo T3BFeHByICopIGdlbnRyeS0+cmluZm8tPmNsYXVzZSktPm9wbm87CisJCQkJc2FvcGV4cHIt PnVzZU9yID0gdHJ1ZTsKKwkJCQlzYW9wZXhwci0+aW5wdXRjb2xsaWQgPSBnZW50cnktPmNv bGxhdGlvbjsKKwkJCQlzYW9wZXhwci0+YXJncyA9IGxpc3RfbWFrZTIoZ2VudHJ5LT5ub2Rl LCBuZXdhKTsKKwkJCQlzYW9wZXhwci0+bG9jYXRpb24gPSAtMTsKKworCisJCQkJb3JfbGlz dCA9IGxhcHBlbmQob3JfbGlzdCwgKHZvaWQgKikgc2FvcGV4cHIpOworCisJCQkJc29tZXRo aW5nX2NoYW5nZWQgPSB0cnVlOworCQkJCWNoYW5nZV9hcHBseSA9IHRydWU7CisKKwkJCX0K KwkJCWVsc2UKKwkJCXsKKwkJCQlsaXN0X2ZyZWUoZ2VudHJ5LT5jb25zdHMpOworCQkJCW9y X2xpc3QgPSBsYXBwZW5kKG9yX2xpc3QsICh2b2lkICopIGdlbnRyeS0+cmluZm8tPmNsYXVz ZSk7CisJCQl9CisJCQloYXNoX3NlYXJjaChvcl9ncm91cF9odGFiLCAmZ2VudHJ5LT5rZXks IEhBU0hfUkVNT1ZFLCBOVUxMKTsKKwkJfQorCisJCWhhc2hfZGVzdHJveShvcl9ncm91cF9o dGFiKTsKKworCQlpZiAoIWNoYW5nZV9hcHBseSkKKwkJeworCQkJLyoKKwkJCSAqIEVhY2gg Z3JvdXAgY29udGFpbnMgb25seSBvbmUgZWxlbWVudCAtIHVzZSByaW5mbyBhcyBpcy4KKwkJ CSAqLworCQkJbW9kaWZpZWRfcmluZm8gPSBsYXBwZW5kKG1vZGlmaWVkX3JpbmZvLCByaW5m byk7CisJCQlsaXN0X2ZyZWUob3JfbGlzdCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8q CisJCSAqIE1ha2UgYSBuZXcgdmVyc2lvbiBvZiB0aGUgcmVzdHJpY3Rpb24uIFJlbWVtYmVy IHNvdXJjZSByZXN0cmljdGlvbgorCQkgKiBjYW4gYmUgdXNlZCBpbiBhbm90aGVyIHBhdGgg KFNlcVNjYW4sIGZvciBleGFtcGxlKS4KKwkJICovCisKKwkJLyogT25lIG1vcmUgdHJpY2s6 IGFzc2VtYmxlIGNvcnJlY3QgY2xhdXNlICovCisJCXJpbmZvID0gbWFrZV9yZXN0cmljdGlu Zm8ocm9vdCwKKwkJCQkgIGxpc3RfbGVuZ3RoKG9yX2xpc3QpID4gMSA/IG1ha2VCb29sRXhw cihPUl9FWFBSLCBvcl9saXN0LCAoKEJvb2xFeHByICopIHJpbmZvLT5jbGF1c2UpLT5sb2Nh dGlvbikgOgorCQkJCQkJCQkJCQkgbGluaXRpYWwob3JfbGlzdCksCisJCQkJICByaW5mby0+ aXNfcHVzaGVkX2Rvd24sCisJCQkJICByaW5mby0+aGFzX2Nsb25lLAorCQkJCSAgcmluZm8t PmlzX2Nsb25lLAorCQkJCSAgcmluZm8tPnBzZXVkb2NvbnN0YW50LAorCQkJCSAgcmluZm8t PnNlY3VyaXR5X2xldmVsLAorCQkJCSAgcmluZm8tPnJlcXVpcmVkX3JlbGlkcywKKwkJCQkg IHJpbmZvLT5pbmNvbXBhdGlibGVfcmVsaWRzLAorCQkJCSAgcmluZm8tPm91dGVyX3JlbGlk cyk7CisJCXJpbmZvLT5ldmFsX2Nvc3Q9cmluZm9fYmFzZS0+ZXZhbF9jb3N0OworCQlyaW5m by0+bm9ybV9zZWxlYz1yaW5mb19iYXNlLT5ub3JtX3NlbGVjOworCQlyaW5mby0+b3V0ZXJf c2VsZWM9cmluZm9fYmFzZS0+b3V0ZXJfc2VsZWM7CisJCXJpbmZvLT5sZWZ0X2J1Y2tldHNp emU9cmluZm9fYmFzZS0+bGVmdF9idWNrZXRzaXplOworCQlyaW5mby0+cmlnaHRfYnVja2V0 c2l6ZT1yaW5mb19iYXNlLT5yaWdodF9idWNrZXRzaXplOworCQlyaW5mby0+bGVmdF9tY3Zm cmVxPXJpbmZvX2Jhc2UtPmxlZnRfbWN2ZnJlcTsKKwkJcmluZm8tPnJpZ2h0X21jdmZyZXE9 cmluZm9fYmFzZS0+cmlnaHRfbWN2ZnJlcTsKKwkJbW9kaWZpZWRfcmluZm8gPSBsYXBwZW5k KG1vZGlmaWVkX3JpbmZvLCByaW5mbyk7CisJCXNvbWV0aGluZ19jaGFuZ2VkID0gdHJ1ZTsK Kwl9CisKKwkvKgorCSAqIENoZWNrIGlmIHRyYW5zZm9ybWF0aW9uIGhhcyBtYWRlLiBJZiBu b3RoaW5nIGNoYW5nZWQgLSByZXR1cm4KKwkgKiBiYXNlcmVzdHJpY3RpbmZvIGFzIGlzLgor CSAqLworCWlmIChzb21ldGhpbmdfY2hhbmdlZCkKKwl7CisJCXJldHVybiBtb2RpZmllZF9y aW5mbzsKKwl9CisKKwlsaXN0X2ZyZWUobW9kaWZpZWRfcmluZm8pOworCXJldHVybiBiYXNl cmVzdHJpY3RpbmZvOworfQogCiAvKgogICogY3JlYXRlX2luZGV4X3BhdGhzKCkKQEAgLTcx OSw2ICsxMTA4LDkgQEAgZ2V0X2luZGV4X3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxP cHRJbmZvICpyZWwsCiAJYm9vbAkJc2tpcF9sb3dlcl9zYW9wID0gZmFsc2U7CiAJTGlzdENl bGwgICAqbGM7CiAKKwlpZiAocmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9CQVNFUkVMKQor CQlyZWwtPmJhc2VyZXN0cmljdGluZm8gPSB0cmFuc2Zvcm1fb3JzKHJvb3QsIHJlbC0+YmFz ZXJlc3RyaWN0aW5mbyk7CisKIAkvKgogCSAqIEJ1aWxkIHNpbXBsZSBpbmRleCBwYXRocyB1 c2luZyB0aGUgY2xhdXNlcy4gIEFsbG93IFNjYWxhckFycmF5T3BFeHByCiAJICogY2xhdXNl cyBvbmx5IGlmIHRoZSBpbmRleCBBTSBzdXBwb3J0cyB0aGVtIG5hdGl2ZWx5LCBhbmQgc2tp cCBhbnkgc3VjaApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCBiNzY0 ZWY2OTk4MC4uMmNhOGEyMWNhZjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxl cy5jCkBAIC0xMDQ4LDYgKzEwNDgsMTYgQEAgc3RydWN0IGNvbmZpZ19ib29sIENvbmZpZ3Vy ZU5hbWVzQm9vbFtdID0KIAkJdHJ1ZSwKIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCisJewor CQl7ImVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiIsIFBHQ19VU0VSU0VULCBRVUVSWV9UVU5J TkdfT1RIRVIsCisJCQlnZXR0ZXh0X25vb3AoIlRyYW5zZm9ybSBhIHNlcXVlbmNlIG9mIE9S IGNsYXVzZXMgdG8gYW4gSU4gZXhwcmVzc2lvbi4iKSwKKwkJCWdldHRleHRfbm9vcCgiVGhl IHBsYW5uZXIgd2lsbCByZXBsYWNlIGNsYXVzZXMgbGlrZSAneD1jMSBPUiB4PWMyIC4uIgor CQkJCQkJICJ0byB0aGUgY2xhdXNlICd4IElOIChjMSxjMiwuLi4pJyIpCisJCX0sCisJCSZl bmFibGVfb3JfdHJhbnNmb3JtYXRpb24sCisJCXRydWUsCisJCU5VTEwsIE5VTEwsIE5VTEwK Kwl9LAogCXsKIAkJLyoKIAkJICogTm90IGZvciBnZW5lcmFsIHVzZSAtLS0gdXNlZCBieSBT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIGFuZCBTRVQKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBlNDhjMDY2YTViMS4uZjMx Nzc4MDc0YjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNx bC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUKQEAgLTM3MCw2ICszNzAsNyBAQAogCiAjIC0gUGxhbm5lciBNZXRob2Qg Q29uZmlndXJhdGlvbiAtCiAKKyNlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbgogI2Vu YWJsZV9hc3luY19hcHBlbmQgPSBvbgogI2VuYWJsZV9iaXRtYXBzY2FuID0gb24KICNlbmFi bGVfZ2F0aGVybWVyZ2UgPSBvbgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcXVl cnlqdW1ibGUuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmgKaW5kZXggMDc2 OTA4MWM3YWIuLjRhYWEzMWFhODBlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9x dWVyeWp1bWJsZS5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmgKQEAg LTY1LDYgKzY1LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBjb21wdXRlX3F1ZXJ5X2lk OwogCiBleHRlcm4gY29uc3QgY2hhciAqQ2xlYW5RdWVyeXRleHQoY29uc3QgY2hhciAqcXVl cnksIGludCAqbG9jYXRpb24sIGludCAqbGVuKTsKIGV4dGVybiBKdW1ibGVTdGF0ZSAqSnVt YmxlUXVlcnkoUXVlcnkgKnF1ZXJ5KTsKK2V4dGVybiBKdW1ibGVTdGF0ZSAqSnVtYmxlRXhw cihFeHByICpleHByLCB1aW50NjQgKnF1ZXJ5SWQpOwogZXh0ZXJuIHZvaWQgRW5hYmxlUXVl cnlJZCh2b2lkKTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgcXVlcnlfaWRfZW5hYmxl ZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oIGIvc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgKaW5kZXggOWU3NDA4YzdlY2YuLmY4YmU5ZjlmNjA1 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAorKysgYi9zcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaApAQCAtMjQsNiArMjQsNyBAQCBleHRlcm4gUEdE TExJTVBPUlQgYm9vbCBlbmFibGVfZ2VxbzsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgZ2Vx b190aHJlc2hvbGQ7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1pbl9wYXJhbGxlbF90YWJs ZV9zY2FuX3NpemU7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1pbl9wYXJhbGxlbF9pbmRl eF9zY2FuX3NpemU7CitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBlbmFibGVfb3JfdHJhbnNm b3JtYXRpb247CiAKIC8qIEhvb2sgZm9yIHBsdWdpbnMgdG8gZ2V0IGNvbnRyb2wgaW4gc2V0 X3JlbF9wYXRobGlzdCgpICovCiB0eXBlZGVmIHZvaWQgKCpzZXRfcmVsX3BhdGhsaXN0X2hv b2tfdHlwZSkgKFBsYW5uZXJJbmZvICpyb290LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9jcmVhdGVfaW5kZXgub3V0CmluZGV4IGFjZmQ5ZDFmNGY3Li41YTczYzhmNTFhNiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dApAQCAt MTg4Myw2ICsxODgzLDEyNiBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogICAgIDEw CiAoMSByb3cpCiAKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQg PSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0 Mik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNj YW4gdXNpbmcgdGVuazFfdGhvdXNfdGVudGhvdXMgb24gdGVuazEKKyAgIEluZGV4IENvbmQ6 ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IEFOWSAoQVJSQVlbMSwgMywgNDJd KSkpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5k ID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3VzID0g NDIpOworIHVuaXF1ZTEgfCB1bmlxdWUyIHwgdHdvIHwgZm91ciB8IHRlbiB8IHR3ZW50eSB8 IGh1bmRyZWQgfCB0aG91c2FuZCB8IHR3b3Rob3VzYW5kIHwgZml2ZXRob3VzIHwgdGVudGhv dXMgfCBvZGQgfCBldmVuIHwgc3RyaW5ndTEgfCBzdHJpbmd1MiB8IHN0cmluZzQgCistLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLSstLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0r LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAgICAgIDQyIHwgICAg NTUzMCB8ICAgMCB8ICAgIDIgfCAgIDIgfCAgICAgIDIgfCAgICAgIDQyIHwgICAgICAgNDIg fCAgICAgICAgICA0MiB8ICAgICAgICA0MiB8ICAgICAgIDQyIHwgIDg0IHwgICA4NSB8IFFC QUFBQSAgIHwgU0VJQUFBICAgfCBPT09PeHgKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQy IEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4g IEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKCho dW5kcmVkID0gNDIpIEFORCAodGhvdXNhbmQgPSBBTlkgKEFSUkFZWzQyLCA5OV0pKSkKKyAg ICAgICAgIC0+ICBCaXRtYXBBbmQKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBD b25kOiAodGhvdXNhbmQgPSBBTlkgKEFSUkFZWzQyLCA5OV0pKQorKDggcm93cykKKworU0VM RUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhv dXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAx MAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJP TSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRl bnRob3VzID0gMykgT1IgdGhvdXNhbmQgPSA0MTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5r MQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKCgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50 aG91cyA9IDEpKSBPUiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSAzKSkpIE9S ICh0aG91c2FuZCA9IDQxKSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAg ICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDEpKQor ICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Ro b3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo KHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSAzKSkKKyAgICAgICAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gNDEpCisoMTEgcm93cykKKwor U0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQg KHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CisgY291 bnQgCistLS0tLS0tCisgICAgMTAKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAo dGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5IE9SIHRlbnRob3VzIDwgMikgT1IgdGhv dXNhbmQgPSA0MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisg ICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAgUmVjaGVjayBDb25k OiAoKChodW5kcmVkID0gNDIpIEFORCAoKHRob3VzYW5kID0gNDIpIE9SICh0aG91c2FuZCA9 IDk5KSBPUiAodGVudGhvdXMgPCAyKSkpIE9SICh0aG91c2FuZCA9IDQxKSkKKyAgICAgICAg IC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisg ICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5k ID0gNDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IDk5KQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3Vz CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGVudGhv dXMgPCAyKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsx X3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhv dXNhbmQgPSA0MSkKKygxNiByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQor ICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0g OTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9IDQxOworIGNvdW50IAorLS0tLS0t LQorICAgIDIwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3Vu dCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0g NDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9IDk5IEFORCB0ZW50aG91cyA9IDIp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFw IEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKGh1bmRyZWQg PSA0MikgQU5EICgoKHRob3VzYW5kID0gOTkpIEFORCAodGVudGhvdXMgPSAyKSkgT1IgKHRo b3VzYW5kID0gQU5ZIChBUlJBWVs0MiwgNDFdKSkpKQorICAgICAgICAgLT4gIEJpdG1hcEFu ZAorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRy ZWQKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisg ICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAg ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDk5KSBBTkQgKHRlbnRo b3VzID0gMikpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6ICh0aG91c2FuZCA9IEFOWSAoQVJSQVlbNDIsIDQxXSkpCisoMTEgcm93cykK KworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFO RCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9SIHRob3VzYW5kID0gOTkgQU5E IHRlbnRob3VzID0gMik7CisgY291bnQgCistLS0tLS0tCisgICAgMTAKKygxIHJvdykKKwor UkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwogLS0KIC0tIENoZWNrIGJlaGF2aW9y IHdpdGggZHVwbGljYXRlIGluZGV4IGNvbHVtbiBjb250ZW50cwogLS0KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3VjLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvZ3VjLm91dAppbmRleCAxMjdjOTUzMjk3Ni4uMGYyYjFiMTYyMDAgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3VjLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2d1Yy5vdXQKQEAgLTg2MSw3ICs4NjEsOCBAQCBTRUxFQ1Qg bmFtZSBGUk9NIHRhYl9zZXR0aW5nc19mbGFncwogICAgICAgICAgICBuYW1lICAgICAgICAg ICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBkZWZhdWx0X3N0YXRpc3RpY3Nf dGFyZ2V0Ci0oMSByb3cpCisgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uCisoMiByb3dzKQog CiAtLSBSdW50aW1lLWNvbXB1dGVkIEdVQ3Mgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIHByZXNl dCBjYXRlZ29yeS4KIFNFTEVDVCBuYW1lIEZST00gdGFiX3NldHRpbmdzX2ZsYWdzCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9qb2luLm91dAppbmRleCAyYzczMjcwMTQzYi4uNTRiOGZkYjJl ODggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dApAQCAtNDIzMyw2ICs0MjMz LDU0IEBAIHNlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gNykKICgxOSByb3dz KQogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWluIChjb3N0 cyBvZmYpCitzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCisgIChhLnVu aXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgorICAoKGEudW5pcXVlMiA9IDMgb3Ig YS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIE5lc3RlZCBMb29wCisgICBKb2luIEZpbHRlcjogKCgoYS51bmlxdWUxID0gMSkg QU5EIChiLnVuaXF1ZTEgPSAyKSkgT1IgKCgoYS51bmlxdWUyID0gMykgT1IgKGEudW5pcXVl MiA9IDcpKSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2Fu IG9uIHRlbmsxIGIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMikgT1Ig KGh1bmRyZWQgPSA0KSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMikKKyAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQpCisgICAtPiAgTWF0ZXJpYWxpemUKKyAgICAg ICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEKKyAgICAgICAgICAgICAgIFJl Y2hlY2sgQ29uZDogKCh1bmlxdWUyID0gQU5ZIChBUlJBWVszLCA3XSkpIE9SICh1bmlxdWUx ID0gMSkpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUyCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IEFOWSAoQVJSQVlbMywg N10pKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRl bmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1 bmlxdWUxID0gMSkKKygxNyByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3Qg KiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCisgIChhLnVuaXF1ZTEgPCAyMCBvciBh LnVuaXF1ZTEgPSAzIG9yIGEudW5pcXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9yCisg ICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0gNCk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVz dGVkIExvb3AKKyAgIEpvaW4gRmlsdGVyOiAoKGEudW5pcXVlMSA8IDIwKSBPUiAoYS51bmlx dWUxID0gMykgT1IgKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBPUiAo KChhLnVuaXF1ZTIgPSAzKSBPUiAoYS51bmlxdWUyID0gNykpIEFORCAoYi5odW5kcmVkID0g NCkpKQorICAgLT4gIFNlcSBTY2FuIG9uIHRlbmsxIGIKKyAgIC0+ICBNYXRlcmlhbGl6ZQor ICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYQorICAgICAgICAgICAg ICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPCAyMCkgT1IgKHVuaXF1ZTEgPSBBTlkgKEFS UkFZWzMsIDFdKSkgT1IgKHVuaXF1ZTIgPSBBTlkgKEFSUkFZWzMsIDddKSkpCisgICAgICAg ICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAodW5pcXVlMSA8IDIwKQorICAgICAgICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gQU5ZIChBUlJBWVszLCAxXSkpCisg ICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5p cXVlMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIg PSBBTlkgKEFSUkFZWzMsIDddKSkKKygxMyByb3dzKQorCitSRVNFVCBlbmFibGVfb3JfdHJh bnNmb3JtYXRpb247CiAtLQogLS0gdGVzdCBwbGFjZW1lbnQgb2YgbW92YWJsZSBxdWFscyBp biBhIHBhcmFtZXRlcml6ZWQgam9pbiB0cmVlCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0CmluZGV4IDlhNGM0OGMwNTU2Li4zOGI0 ZWM5ODQwMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRp b25fcHJ1bmUub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9u X3BydW5lLm91dApAQCAtMTAxLDYgKzEwMSwyOCBAQCBleHBsYWluIChjb3N0cyBvZmYpIHNl bGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBub3QgbnVsbCBhbmQgKGEgPSAnYScgb3IgYSA9 ICdjJwogICAgICAgICAgRmlsdGVyOiAoKGEgSVMgTk9UIE5VTEwpIEFORCAoKGEgPSAnYSc6 OmJwY2hhcikgT1IgKGEgPSAnYyc6OmJwY2hhcikpKQogKDUgcm93cykKIAorU0VUIGVuYWJs ZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3Qg KiBmcm9tIGxwIHdoZXJlIGEgPSAnYScgb3IgYSA9ICdjJzsKKyAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBl bmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9hZCBscF8xCisgICAgICAgICBGaWx0ZXI6ICgo YSA9ICdhJzo6YnBjaGFyKSBPUiAoYSA9ICdjJzo6YnBjaGFyKSkKKyAgIC0+ICBTZXEgU2Nh biBvbiBscF9iYyBscF8yCisgICAgICAgICBGaWx0ZXI6ICgoYSA9ICdhJzo6YnBjaGFyKSBP UiAoYSA9ICdjJzo6YnBjaGFyKSkKKyg1IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikg c2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9ICdhJyBvciBh ID0gJ2MnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2FkIGxwXzEKKyAg ICAgICAgIEZpbHRlcjogKChhIElTIE5PVCBOVUxMKSBBTkQgKChhID0gJ2EnOjpicGNoYXIp IE9SIChhID0gJ2MnOjpicGNoYXIpKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9iYyBscF8y CisgICAgICAgICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5EICgoYSA9ICdhJzo6YnBj aGFyKSBPUiAoYSA9ICdjJzo6YnBjaGFyKSkpCisoNSByb3dzKQorCitSRVNFVCBlbmFibGVf b3JfdHJhbnNmb3JtYXRpb247CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20g bHAgd2hlcmUgYSA8PiAnZyc7CiAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjcxLDYgKzY5 MywxNjMgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSAo YSA9IDEgYW5kIGEgPSAzKSBvciAoYSA+IDEgYW5kIGEgPQogICAgICAgICAgRmlsdGVyOiAo KChhID0gMSkgQU5EIChhID0gMykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCiAoMTEg cm93cykKIAorU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBvciBhID0gNzsKKyAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHJscDIgcmxwCisgICBGaWx0ZXI6ICgoYSA9IDEp IE9SIChhID0gNykpCisoMiByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAq IGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGIgPSAnYWInOworICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAg LT4gIFNlcSBTY2FuIG9uIHJscDEgcmxwXzEKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkg T1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDIg cmxwXzIKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6 OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDNhYmNkIHJscF8zCisgICAgICAgICBG aWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBT ZXEgU2NhbiBvbiBybHA0XzEgcmxwXzQKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1Ig KChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMiBy bHBfNQorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6 dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF9kZWZhdWx0IHJscF82CisgICAgICAg ICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ ICBTZXEgU2NhbiBvbiBybHA1XzEgcmxwXzcKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkg T1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDVf ZGVmYXVsdCBybHBfOAorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0 ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfMTAgcmxw XzkKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRl eHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0XzMwIHJscF8xMAorICAgICAg ICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAt PiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfbnVsbCBybHBfMTEKKyAgICAgICAgIEZpbHRl cjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBT Y2FuIG9uIHJscF9kZWZhdWx0X2RlZmF1bHQgcmxwXzEyCisgICAgICAgICBGaWx0ZXI6ICgo YSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKygyNSByb3dzKQorCitleHBs YWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPiAyMCBhbmQgYSA8 IDI3OworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAg U2VxIFNjYW4gb24gcmxwNF8xIHJscF8xCisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDIwKSBB TkQgKGEgPCAyNykpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8yIHJscF8yCisgICAgICAg ICBGaWx0ZXI6ICgoYSA+IDIwKSBBTkQgKGEgPCAyNykpCisoNSByb3dzKQorCitleHBsYWlu IChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAyOTsKKyAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgU2VxIFNjYW4gb24gcmxwNF9kZWZhdWx0IHJscAorICAgRmlsdGVyOiAoYSA9IDI5KQor KDIgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVy ZSBhID49IDI5OworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBB cHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0X2RlZmF1bHQgcmxwXzEKKyAgICAgICAg IEZpbHRlcjogKGEgPj0gMjkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNV8xIHJscF8yCisg ICAgICAgICBGaWx0ZXI6IChhID49IDI5KQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfZGVm YXVsdCBybHBfMworICAgICAgICAgRmlsdGVyOiAoYSA+PSAyOSkKKyAgIC0+ICBTZXEgU2Nh biBvbiBybHBfZGVmYXVsdF8zMCBybHBfNAorICAgICAgICAgRmlsdGVyOiAoYSA+PSAyOSkK KyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF9kZWZhdWx0IHJscF81CisgICAgICAg ICBGaWx0ZXI6IChhID49IDI5KQorKDExIHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikg c2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA8IDEgb3IgKGEgPiAyMCBhbmQgYSA8IDI1KTsK KyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwMSBybHBfMQorICAgICAgICAg RmlsdGVyOiAoKGEgPCAxKSBPUiAoKGEgPiAyMCkgQU5EIChhIDwgMjUpKSkKKyAgIC0+ICBT ZXEgU2NhbiBvbiBybHA0XzEgcmxwXzIKKyAgICAgICAgIEZpbHRlcjogKChhIDwgMSkgT1Ig KChhID4gMjApIEFORCAoYSA8IDI1KSkpCisoNSByb3dzKQorCitleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAyMCBvciBhID0gNDA7CisgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxw NF8xIHJscF8xCisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDIwKSBPUiAoYSA9IDQwKSkKKyAg IC0+ICBTZXEgU2NhbiBvbiBybHA1X2RlZmF1bHQgcmxwXzIKKyAgICAgICAgIEZpbHRlcjog KChhID0gMjApIE9SIChhID0gNDApKQorKDUgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2Zm 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 bWMzcCBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z eXN2aWV3cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dApp bmRleCAyNzEzMTNlYmY4Ni4uNTY2ZjUxZGY0MjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3lzdmlld3Mub3V0CkBAIC0xMjMsNiArMTIzLDcgQEAgc2VsZWN0IG5hbWUsIHNl dHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVu YWJsZV9tZW1vaXplICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX21lcmdlam9pbiAg ICAgICAgICAgICAgIHwgb24KICBlbmFibGVfbmVzdGxvb3AgICAgICAgICAgICAgICAgfCBv bgorIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiAgICAgICB8IG9mZgogIGVuYWJsZV9wYXJh bGxlbF9hcHBlbmQgICAgICAgICB8IG9uCiAgZW5hYmxlX3BhcmFsbGVsX2hhc2ggICAgICAg ICAgIHwgb24KICBlbmFibGVfcGFydGl0aW9uX3BydW5pbmcgICAgICAgfCBvbgpAQCAtMTMz LDcgKzEzNCw3IEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0dGluZ3Mgd2hl cmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVfc2Vxc2NhbiAgICAgICAgICAgICAg ICAgfCBvbgogIGVuYWJsZV9zb3J0ICAgICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxl X3RpZHNjYW4gICAgICAgICAgICAgICAgIHwgb24KLSgyMiByb3dzKQorKDIzIHJvd3MpCiAK IC0tIFRoZXJlIGFyZSBhbHdheXMgd2FpdCBldmVudCBkZXNjcmlwdGlvbnMgZm9yIHZhcmlv dXMgdHlwZXMuCiBzZWxlY3QgdHlwZSwgY291bnQoKikgPiAwIGFzIG9rIEZST00gcGdfd2Fp dF9ldmVudHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nh bi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0CmluZGV4IGYx MzNiNWE0YWM3Li4yZTEyOTQ0YmQxMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC90aWRzY2FuLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Rp ZHNjYW4ub3V0CkBAIC01Niw2ICs1NiwyMyBAQCBTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNj YW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CiAgKDAsMikgfCAg MgogKDIgcm93cykKIAorU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0 aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlkOworICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg VGlkIFNjYW4gb24gdGlkc2NhbgorICAgVElEIENvbmQ6IChjdGlkID0gQU5ZIChBUlJBWVsn KDAsMiknOjp0aWQsICcoMCwxKSc6OnRpZF0pKQorKDIgcm93cykKKworU0VMRUNUIGN0aWQs ICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlk OworIGN0aWQgIHwgaWQgCistLS0tLS0tKy0tLS0KKyAoMCwxKSB8ICAxCisgKDAsMikgfCAg MgorKDIgcm93cykKKworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwogLS0gY3Rp ZCA9IFNjYWxhckFycmF5T3AgLSBpbXBsZW1lbnRlZCBhcyB0aWRzY2FuCiBFWFBMQUlOIChD T1NUUyBPRkYpCiBTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9IEFO WShBUlJBWVsnKDAsMSknLCAnKDAsMiknXTo6dGlkW10pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NyZWF0ZV9pbmRleC5zcWwKaW5kZXggZDQ5Y2U5ZjMwMDcuLjQ4YmIxYmMwYTBhIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKQEAgLTczNyw2ICs3MzcsMzgg QEAgU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRl bmsxCiAgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNh bmQgPSA5OSk7CiAKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQg PSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0 Mik7CitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0 ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOworCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBo dW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworU0VM RUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhv dXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQg KHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CitTRUxF Q1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVu dGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMykgT1IgdGhvdXNhbmQgPSA0MTsKKworRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVu ZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5IE9SIHRlbnRo b3VzIDwgMikgT1IgdGhvdXNhbmQgPSA0MTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsx CisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQg PSA5OSBPUiB0ZW50aG91cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7CisKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQg PSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9 IDk5IEFORCB0ZW50aG91cyA9IDIpOworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAg V0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQx IE9SIHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7CitSRVNFVCBlbmFibGVfb3Jf dHJhbnNmb3JtYXRpb247CisKIC0tCiAtLSBDaGVjayBiZWhhdmlvciB3aXRoIGR1cGxpY2F0 ZSBpbmRleCBjb2x1bW4gY29udGVudHMKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9qb2luLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsCmluZGV4 IDhhOGE2M2JkMmYxLi41NWQ3ZTJhZTdkNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvam9pbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKQEAg LTE0MDgsNiArMTQwOCwxNiBAQCBleHBsYWluIChjb3N0cyBvZmYpCiBzZWxlY3QgKiBmcm9t IHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCiAgIChhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1 ZTEgPSAyKSBvcgogICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIu aHVuZHJlZCA9IDQpOworU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworZXhw bGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBv bgorICAoYS51bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IKKyAgKChhLnVuaXF1 ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKK2V4cGxhaW4g KGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KKyAg KGEudW5pcXVlMSA8IDIwIG9yIGEudW5pcXVlMSA9IDMgb3IgYS51bmlxdWUxID0gMSBhbmQg Yi51bmlxdWUxID0gMikgb3IKKyAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcp IGFuZCBiLmh1bmRyZWQgPSA0KTsKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsK IAogLS0KIC0tIHRlc3QgcGxhY2VtZW50IG9mIG1vdmFibGUgcXVhbHMgaW4gYSBwYXJhbWV0 ZXJpemVkIGpvaW4gdHJlZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFy dGl0aW9uX3BydW5lLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVu ZS5zcWwKaW5kZXggN2JmMzkyMDgyN2YuLjFlMjcwYWU5YzA2IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwKQEAgLTIxLDYgKzIxLDEyIEBAIGV4cGxh aW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsOwog ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbnVsbDsK IGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID0gJ2EnIG9y IGEgPSAnYyc7CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUg YSBpcyBub3QgbnVsbCBhbmQgKGEgPSAnYScgb3IgYSA9ICdjJyk7CisKK1NFVCBlbmFibGVf b3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSBscCB3aGVyZSBhID0gJ2EnIG9yIGEgPSAnYyc7CitleHBsYWluIChjb3N0cyBvZmYp IHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBub3QgbnVsbCBhbmQgKGEgPSAnYScgb3Ig YSA9ICdjJyk7CitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CisKIGV4cGxhaW4g KGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIDw+ICdnJzsKIGV4cGxhaW4g KGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIDw+ICdhJyBhbmQgYSA8PiAn ZCc7CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBub3Qg aW4gKCdhJywgJ2QnKTsKQEAgLTk5LDYgKzEwNSwyMiBAQCBleHBsYWluIChjb3N0cyBvZmYp IHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPiAxIGFuZCBhID49MTU7CS8qIHJscDMgb253 YXJkcywgaQogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBh ID0gMSBhbmQgYSA9IDM7CS8qIGVtcHR5ICovCiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVj dCAqIGZyb20gcmxwIHdoZXJlIChhID0gMSBhbmQgYSA9IDMpIG9yIChhID4gMSBhbmQgYSA9 IDE1KTsKIAorCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWlu IChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGEgPSA3Owor ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBvciBi ID0gJ2FiJzsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUg YSA+IDIwIGFuZCBhIDwgMjc7CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20g cmxwIHdoZXJlIGEgPSAyOTsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBy bHAgd2hlcmUgYSA+PSAyOTsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBy bHAgd2hlcmUgYSA8IDEgb3IgKGEgPiAyMCBhbmQgYSA8IDI1KTsKK2V4cGxhaW4gKGNvc3Rz IG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDIwIG9yIGEgPSA0MDsKK2V4cGxh aW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAzIHdoZXJlIGEgPSAyMDsgICAvKiBl bXB0eSAqLworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBh ID4gMSBhbmQgYSA9IDEwOwkvKiBvbmx5IGRlZmF1bHQgKi8KK2V4cGxhaW4gKGNvc3RzIG9m Zikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+IDEgYW5kIGEgPj0xNTsJLyogcmxwMyBv bndhcmRzLCBpbmNsdWRpbmcgZGVmYXVsdCAqLworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxl Y3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBhbmQgYSA9IDM7CS8qIGVtcHR5ICovCitleHBs YWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIChhID0gMSBhbmQgYSA9 IDMpIG9yIChhID4gMSBhbmQgYSA9IDE1KTsKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1h dGlvbjsKKwogLS0gbXVsdGktY29sdW1uIGtleXMKIGNyZWF0ZSB0YWJsZSBtYzNwIChhIGlu dCwgYiBpbnQsIGMgaW50KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEsIGFicyhiKSwgYyk7CiBj cmVhdGUgdGFibGUgbWMzcF9kZWZhdWx0IHBhcnRpdGlvbiBvZiBtYzNwIGRlZmF1bHQ7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90aWRzY2FuLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3RpZHNjYW4uc3FsCmluZGV4IDMxM2UwZmI5YjY3Li4wNDk5YmVkYjll YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGlkc2Nhbi5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvdGlkc2Nhbi5zcWwKQEAgLTIyLDYgKzIyLDEyIEBAIEVY UExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBj dGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKIFNFTEVDVCBjdGlkLCAqIEZST00g dGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKIAorU0VU IGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICco MCwxKScgPSBjdGlkOworU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQg PSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlkOworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9y bWF0aW9uOworCiAtLSBjdGlkID0gU2NhbGFyQXJyYXlPcCAtIGltcGxlbWVudGVkIGFzIHRp ZHNjYW4KIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2Nh biBXSEVSRSBjdGlkID0gQU5ZKEFSUkFZWycoMCwxKScsICcoMCwyKSddOjp0aWRbXSk7CmRp ZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGRiYTM0OThhMTNlLi5jOTAwNDI1MGE1 ZiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE2NDEsNiArMTY0MSw3IEBA IE51bWVyaWNWYXIKIE9NX3VpbnQzMgogT1AKIE9TQVBlckdyb3VwU3RhdGUKK09yQ2xhdXNl R3JvdXBFbnRyeQogT1NBUGVyUXVlcnlTdGF0ZQogT1NJbmZvCiBPU1NMQ2lwaGVyCi0tIAoy LjM0LjEKCg== --------------ATUK6aBJusl9JS4l10AqjW0x Content-Type: text/plain; charset=UTF-8; name="regression.diffs" Content-Disposition: attachment; filename="regression.diffs" Content-Transfer-Encoding: base64 ZGlmZiAtVTMgL2hvbWUvYWxlbmEvcG9zdGdyZXNwcm9fX2NvcHkzMi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgL2hvbWUvYWxlbmEvcG9zdGdyZXNwcm9f X2NvcHkzMi9zcmMvdGVzdC9yZWdyZXNzL3Jlc3VsdHMvY3JlYXRlX2luZGV4Lm91dAotLS0g L2hvbWUvYWxlbmEvcG9zdGdyZXNwcm9fX2NvcHkzMi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NyZWF0ZV9pbmRleC5vdXQJMjAyMy0xMS0zMCAxMzo1MDozNC41NzY1MzcxMTAgKzAz MDAKKysrIC9ob21lL2FsZW5hL3Bvc3RncmVzcHJvX19jb3B5MzIvc3JjL3Rlc3QvcmVncmVz cy9yZXN1bHRzL2NyZWF0ZV9pbmRleC5vdXQJMjAyMy0xMS0zMCAxMzo1MjoxMC45NDA0MTI4 NDIgKzAzMDAKQEAgLTE4MzgsMTggKzE4MzgsMTQgQEAKIEVYUExBSU4gKENPU1RTIE9GRikK IFNFTEVDVCAqIEZST00gdGVuazEKICAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRo b3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBCaXRtYXAg SGVhcCBTY2FuIG9uIHRlbmsxCi0gICBSZWNoZWNrIENvbmQ6ICgoKHRob3VzYW5kID0gNDIp IEFORCAodGVudGhvdXMgPSAxKSkgT1IgKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3Vz ID0gMykpIE9SICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDQyKSkpCi0gICAt PiAgQml0bWFwT3IKLSAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90 aG91c190ZW50aG91cwotICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9 IDQyKSBBTkQgKHRlbnRob3VzID0gMSkpCi0gICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKLSAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDMpKQotICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAg ICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSA0MikpCi0o OSByb3dzKQorICAgUmVjaGVjayBDb25kOiAodGhvdXNhbmQgPSA0MikKKyAgIEZpbHRlcjog KHRlbnRob3VzID0gQU5ZIChBUlJBWVsxLCAzLCA0Ml0pKQorICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICBJbmRleCBDb25kOiAo dGhvdXNhbmQgPSA0MikKKyg1IHJvd3MpCiAKIFNFTEVDVCAqIEZST00gdGVuazEKICAgV0hF UkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1Ig dGVudGhvdXMgPSA0Mik7CkBAIC0xODYxLDIwICsxODU3LDE1IEBACiBFWFBMQUlOIChDT1NU UyBPRkYpCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogICBXSEVSRSBodW5kcmVkID0g NDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEFnZ3JlZ2F0ZQog ICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKLSAgICAgICAgIFJlY2hlY2sgQ29u ZDogKChodW5kcmVkID0gNDIpIEFORCAoKHRob3VzYW5kID0gNDIpIE9SICh0aG91c2FuZCA9 IDk5KSkpCi0gICAgICAgICAtPiAgQml0bWFwQW5kCi0gICAgICAgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAotICAgICAgICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKLSAgICAgICAgICAgICAgIC0+ICBCaXRtYXBP cgotICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsx X3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAodGhvdXNhbmQgPSA0MikKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gOTkpCi0oMTEgcm93cykKKyAgICAgICAg IFJlY2hlY2sgQ29uZDogKGh1bmRyZWQgPSA0MikKKyAgICAgICAgIEZpbHRlcjogKHRob3Vz YW5kID0gQU5ZIChBUlJBWVs0MiwgOTldKSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVu ZHJlZCA9IDQyKQorKDYgcm93cykKIAogU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKICAg V0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5 KTsKQEAgLTE4ODcsMTEgKzE4NzgsMTQgQEAKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVD VCAqIEZST00gdGVuazEKICAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0g MSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIEluZGV4IFNjYW4gdXNpbmcgdGVuazFfdGhvdXNf dGVudGhvdXMgb24gdGVuazEKLSAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5E ICh0ZW50aG91cyA9IEFOWSAoQVJSQVlbMSwgMywgNDJdKSkpCi0oMiByb3dzKQorICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFw IFNjYW4gb24gdGVuazEKKyAgIFJlY2hlY2sgQ29uZDogKHRob3VzYW5kID0gNDIpCisgICBG aWx0ZXI6ICh0ZW50aG91cyA9IEFOWSAoQVJSQVlbMSwgMywgNDJdKSkKKyAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgSW5kZXgg Q29uZDogKHRob3VzYW5kID0gNDIpCisoNSByb3dzKQogCiBTRUxFQ1QgKiBGUk9NIHRlbmsx CiAgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMg PSAzIE9SIHRlbnRob3VzID0gNDIpOwpAQCAtMTkwMywxNyArMTg5NywxNSBAQAogRVhQTEFJ TiAoQ09TVFMgT0ZGKQogU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKICAgV0hFUkUgaHVu ZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQWdncmVnYXRlCiAg ICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQotICAgICAgICAgUmVjaGVjayBDb25k OiAoKGh1bmRyZWQgPSA0MikgQU5EICh0aG91c2FuZCA9IEFOWSAoQVJSQVlbNDIsIDk5XSkp KQotICAgICAgICAgLT4gIEJpdG1hcEFuZAotICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKLSAgICAgICAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6IChodW5kcmVkID0gNDIpCi0gICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKLSAgICAgICAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6ICh0aG91c2FuZCA9IEFOWSAoQVJSQVlbNDIsIDk5XSkpCi0oOCByb3dzKQor ICAgICAgICAgUmVjaGVjayBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgRmlsdGVy OiAodGhvdXNhbmQgPSBBTlkgKEFSUkFZWzQyLCA5OV0pKQorICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgIEluZGV4IENv bmQ6IChodW5kcmVkID0gNDIpCisoNiByb3dzKQogCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZW5rMQogICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3Vz YW5kID0gOTkpOwpkaWZmIC1VMyAvaG9tZS9hbGVuYS9wb3N0Z3Jlc3Byb19fY29weTMyL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQgL2hvbWUvYWxlbmEvcG9zdGdyZXNw cm9fX2NvcHkzMi9zcmMvdGVzdC9yZWdyZXNzL3Jlc3VsdHMvam9pbi5vdXQKLS0tIC9ob21l L2FsZW5hL3Bvc3RncmVzcHJvX19jb3B5MzIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q b2luLm91dAkyMDIzLTExLTMwIDEzOjUwOjM0LjU3NjUzNzExMCArMDMwMAorKysgL2hvbWUv YWxlbmEvcG9zdGdyZXNwcm9fX2NvcHkzMi9zcmMvdGVzdC9yZWdyZXNzL3Jlc3VsdHMvam9p bi5vdXQJMjAyMy0xMS0zMCAxMzo1MjoxNC45NzI0MDc1OTAgKzAzMDAKQEAgLTQyMjMsMTUg KzQyMjMsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVk ID0gNCkKICAgIC0+ICBNYXRlcmlhbGl6ZQogICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNj YW4gb24gdGVuazEgYQotICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEg PSAxKSBPUiAodW5pcXVlMiA9IDMpIE9SICh1bmlxdWUyID0gNykpCisgICAgICAgICAgICAg ICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gQU5ZIChBUlJB WVszLCA3XSkpKQogICAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yCiAgICAgICAgICAgICAg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAxKQogICAgICAg ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIK LSAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gMykK LSAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91 bmlxdWUyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVl MiA9IDcpCi0oMTkgcm93cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENv bmQ6ICh1bmlxdWUyID0gQU5ZIChBUlJBWVszLCA3XSkpCisoMTcgcm93cykKIAogU0VUIGVu YWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOwogZXhwbGFpbiAoY29zdHMgb2ZmKQpAQCAt NDI1MSwxMiArNDI0OSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KGh1bmRyZWQgPSA0KQogICAgLT4gIE1hdGVyaWFsaXplCiAgICAgICAgICAtPiAgQml0bWFw IEhlYXAgU2NhbiBvbiB0ZW5rMSBhCi0gICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgo dW5pcXVlMiA9IEFOWSAoQVJSQVlbMywgN10pKSBPUiAodW5pcXVlMSA9IDEpKQorICAgICAg ICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IEFO WSAoQVJSQVlbMywgN10pKSkKICAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgotICAgICAg ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIK LSAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gQU5Z IChBUlJBWVszLCA3XSkpCiAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gdGVuazFfdW5pcXVlMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHVuaXF1ZTEgPSAxKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gQU5ZIChBUlJBWVszLCA3XSkpCiAoMTcgcm93 cykKIAogZXhwbGFpbiAoY29zdHMgb2ZmKQpkaWZmIC1VMyAvaG9tZS9hbGVuYS9wb3N0Z3Jl c3Byb19fY29weTMyL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0IC9o b21lL2FsZW5hL3Bvc3RncmVzcHJvX19jb3B5MzIvc3JjL3Rlc3QvcmVncmVzcy9yZXN1bHRz L3N5c3ZpZXdzLm91dAotLS0gL2hvbWUvYWxlbmEvcG9zdGdyZXNwcm9fX2NvcHkzMi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dAkyMDIzLTExLTMwIDEzOjUwOjM0 LjU4NDUzNzEwMCArMDMwMAorKysgL2hvbWUvYWxlbmEvcG9zdGdyZXNwcm9fX2NvcHkzMi9z cmMvdGVzdC9yZWdyZXNzL3Jlc3VsdHMvc3lzdmlld3Mub3V0CTIwMjMtMTEtMzAgMTM6NTI6 MjQuNTI0Mzk1MTMwICswMzAwCkBAIC0xMjMsNyArMTIzLDcgQEAKICBlbmFibGVfbWVtb2l6 ZSAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9tZXJnZWpvaW4gICAgICAgICAgICAg ICB8IG9uCiAgZW5hYmxlX25lc3Rsb29wICAgICAgICAgICAgICAgIHwgb24KLSBlbmFibGVf b3JfdHJhbnNmb3JtYXRpb24gICAgICAgfCBvZmYKKyBlbmFibGVfb3JfdHJhbnNmb3JtYXRp b24gICAgICAgfCBvbgogIGVuYWJsZV9wYXJhbGxlbF9hcHBlbmQgICAgICAgICB8IG9uCiAg ZW5hYmxlX3BhcmFsbGVsX2hhc2ggICAgICAgICAgIHwgb24KICBlbmFibGVfcGFydGl0aW9u X3BydW5pbmcgICAgICAgfCBvbgpkaWZmIC1VMyAvaG9tZS9hbGVuYS9wb3N0Z3Jlc3Byb19f Y29weTMyL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5vdXQgL2hvbWUvYWxl bmEvcG9zdGdyZXNwcm9fX2NvcHkzMi9zcmMvdGVzdC9yZWdyZXNzL3Jlc3VsdHMvdGlkc2Nh bi5vdXQKLS0tIC9ob21lL2FsZW5hL3Bvc3RncmVzcHJvX19jb3B5MzIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC90aWRzY2FuLm91dAkyMDIzLTExLTMwIDEzOjUwOjM0LjU4NDUzNzEw MCArMDMwMAorKysgL2hvbWUvYWxlbmEvcG9zdGdyZXNwcm9fX2NvcHkzMi9zcmMvdGVzdC9y ZWdyZXNzL3Jlc3VsdHMvdGlkc2Nhbi5vdXQJMjAyMy0xMS0zMCAxMzo1MjoyNC4zMjgzOTUz ODYgKzAzMDAKQEAgLTYyLDcgKzYyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFRpZCBT Y2FuIG9uIHRpZHNjYW4KLSAgIFRJRCBDb25kOiAoY3RpZCA9IEFOWSAoQVJSQVlbJygwLDIp Jzo6dGlkLCAnKDAsMSknOjp0aWRdKSkKKyAgIFRJRCBDb25kOiAoKGN0aWQgPSAnKDAsMikn Ojp0aWQpIE9SICgnKDAsMSknOjp0aWQgPSBjdGlkKSkKICgyIHJvd3MpCiAKIFNFTEVDVCBj dGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0g Y3RpZDsK --------------ATUK6aBJusl9JS4l10AqjW0x--