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 1rrBJE-00G6Fh-IA for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Apr 2024 06:38:22 +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 1rrBJC-00Eu3c-S0 for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Apr 2024 06:38:18 +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 1rrBJC-00Eu3U-7q for pgsql-hackers@lists.postgresql.org; Mon, 01 Apr 2024 06:38:18 +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 1rrBJ1-007zwr-VH for pgsql-hackers@postgresql.org; Mon, 01 Apr 2024 06:38:16 +0000 Received: from [192.168.1.83] (unknown [118.174.213.54]) (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 4A165E20442; Mon, 1 Apr 2024 09:38:01 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1711953486; bh=npLdFq18X4lb358zJ2O1zfEqbSt8E4FgMoXV79lOfrk=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=LCQ/7tgS++p6f/vDNUCKQUO0B/EHO8Ybz+62OIxgOWJhZmUyZWXqxE/Oh644hvXzE QcNM1hDLKu5R5C7T/zTUWSTrwYbWCbLzej0Wprz2wgEEiZbPxbr5mWM6CipHuDaBDb pc99zUU7KB6Z2xQGzM2yFPgsu+gv62QKKbfCeEJGDK5BBx0zfVfhaSSiwtiAjWPwBQ KqyZRefBI2pHZ4os701yQbPwJLSaU6m82+UNKOJr8n1UycBbLTiDugTU80yGbmkU+M 6fImbZut0x7Ks6gWqyK7kXdqaivKPBgmcPyxuDLZCMXEMIWYuQNbFgXVDmObG2ey38 9ldpmAI8NJhsQ== Content-Type: multipart/mixed; boundary="------------e8Hdmy4jnGQ6as0lvJNbF0h5" Message-ID: Date: Mon, 1 Apr 2024 13:37:58 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC, WIP: OR-clause support for indexes To: Alexander Korotkov Cc: jian he , Alena Rybakina , Robert Haas , pgsql-hackers@postgresql.org, Peter Geoghegan , "Finnerty, Jim" , Marcos Pegoraro , teodor@sigaev.ru, Tomas Vondra , Peter Eisentraut , Ranier Vilela References: <567ED6CA.2040504@sigaev.ru> <380e5683-cdfd-4220-ab9b-7cccb9d3e480@postgrespro.ru> <7389d0dd-05d5-41b7-a12d-2e73f939f851@postgrespro.ru> <74e3c8bc-dccd-45e5-ad2d-6a6e96fc5864@postgrespro.ru> <6d27d752-db0b-4cac-9843-6ba3dd7a1e94@postgrespro.ru> Content-Language: en-US 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. --------------e8Hdmy4jnGQ6as0lvJNbF0h5 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 28/3/2024 16:54, Alexander Korotkov wrote: > The current patch has a boolean guc enable_or_transformation. > However, when we have just a few ORs to be transformated, then we > should get less performance gain from the transformation and higher > chances to lose a good bitmap scan plan from that. When there is a > huge list of ORs to be transformed, then the performance gain is > greater and it is less likely we could lose a good bitmap scan plan. > > What do you think about introducing a GUC threshold value: the minimum > size of list to do OR-to-ANY transformation? > min_list_or_transformation or something. I labelled it or_transformation_limit (see in attachment). Feel free to rename it. It's important to note that the limiting GUC doesn't operate symmetrically for forward, OR -> SAOP, and backward SAOP -> OR operations. In the forward case, it functions as you've proposed. However, in the backward case, we only check whether the feature is enabled or not. This is due to our existing limitation, MAX_SAOP_ARRAY_SIZE, and the fact that we can't match the length of the original OR list with the sizes of the resulting SAOPs. For instance, a lengthy OR list with 100 elements can be transformed into 3 SAOPs, each with a size of around 30 elements. One aspect that requires attention is the potential inefficiency of our OR -> ANY transformation when we have a number of elements less than MAX_SAOP_ARRAY_SIZE. This is because we perform a reverse transformation ANY -> OR at the stage of generating bitmap scans. If the BitmapScan path dominates, we may have done unnecessary work. Is this an occurrence that we should address? But the concern above may just be a point of improvement later: We can add one more strategy to the optimizer: testing each array element as an OR clause; we can also provide a BitmapOr path, where SAOP is covered with a minimal number of partial indexes (likewise, previous version). -- regards, Andrei Lepikhov Postgres Professional --------------e8Hdmy4jnGQ6as0lvJNbF0h5 Content-Type: text/plain; charset=UTF-8; name="v24-0001-Transform-OR-clauses-to-ANY-expression.patch" Content-Disposition: attachment; filename="v24-0001-Transform-OR-clauses-to-ANY-expression.patch" Content-Transfer-Encoding: base64 RnJvbSBlNDJhNzExMWExMmVmODJlZWNkYjJlNjkyZDY1ZTdiYTZlNDNhZDc5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogRnJpLCAyIEZlYiAyMDI0IDIyOjAxOjA5ICswMzAwClN1Ympl Y3Q6IFtQQVRDSCAxLzJdIFRyYW5zZm9ybSBPUiBjbGF1c2VzIHRvIEFOWSBleHByZXNzaW9u LgoKUmVwbGFjZSAoZXhwciBvcCBDMSkgT1IgKGV4cHIgb3AgQzIpIC4uLiB3aXRoIGV4cHIg b3AgQU5ZKEFSUkFZW0MxLCBDMiwgLi4uXSkgb24gdGhlCnByZWxpbWluYXJ5IHN0YWdlIG9m IG9wdGltaXphdGlvbiB3aGVuIHdlIGFyZSBzdGlsbCB3b3JraW5nIHdpdGggdGhlCmV4cHJl c3Npb24gdHJlZS4KSGVyZSBDPFg+IGlzIGEgY29uc3RhbnQgZXhwcmVzc2lvbiwgJ2V4cHIn IGlzIG5vbi1jb25zdGFudCBleHByZXNzaW9uLCAnb3AnIGlzCmFuIG9wZXJhdG9yIHdoaWNo IHJldHVybnMgYm9vbGVhbiByZXN1bHQgYW5kIGhhcyBhIGNvbW11dGVyIChmb3IgdGhlIGNh c2Ugb2YKcmV2ZXJzZSBvcmRlciBvZiBjb25zdGFudCBhbmQgbm9uLWNvbnN0YW50IHBhcnRz IG9mIHRoZSBleHByZXNzaW9uLApsaWtlICdDWCBvcCBleHByJykuClNvbWV0aW1lcyBpdCBj YW4gbGVhZCB0byBub3Qgb3B0aW1hbCBwbGFuLiBCdXQgd2UgdGhpbmsgaXQgaXMgYmV0dGVy IHRvIGhhdmUKYXJyYXkgb2YgZWxlbWVudHMgaW5zdGVhZCBvZiBhIGxvdCBvZiBPUiBjbGF1 c2VzLiBIZXJlIGlzIGEgcm9vbSBmb3IgZnVydGhlcgpvcHRpbWl6YXRpb25zIG9uIGRlY29t cG9zaW5nIHRoYXQgYXJyYXkgaW50byBtb3JlIG9wdGltYWwgcGFydHMuCkF1dGhvcnM6IEFs ZW5hIFJ5YmFraW5hIDxsZW5hLnJpYmFja2luYUB5YW5kZXgucnU+LCBBbmRyZXkgTGVwaWto b3YgPGEubGVwaWtob3ZAcG9zdGdyZXNwcm8ucnU+ClJldmlld2VkLWJ5OiBQZXRlciBHZW9n aGVnYW4gPHBnQGJvd3QuaWU+LCBSYW5pZXIgVmlsZWxhIDxyYW5pZXIudmZAZ21haWwuY29t PgpSZXZpZXdlZC1ieTogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWlsLmNv bT4sIFJvYmVydCBIYWFzIDxyb2JlcnRtaGFhc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBq aWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+Ci0tLQogLi4uL3Bvc3RncmVz X2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgICA4ICstCiBkb2Mvc3JjL3Nn bWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgMTggKwogc3JjL2JhY2tl bmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jICAgICAgICAgIHwgIDI3ICsrCiBzcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwcXVhbC5jICAgICAgICAgfCAzNzkgKysrKysrKysr KysrKysrKystCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAg ICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmggICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmggICAgICAg ICAgICAgfCAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgu b3V0ICAgIHwgMTcyICsrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4u b3V0ICAgICAgICAgICAgfCAgNjAgKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bh cnRpdGlvbl9wcnVuZS5vdXQgfCAyMTEgKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9zdGF0c19leHQub3V0ICAgICAgIHwgIDEyICstCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3RpZHNjYW4ub3V0ICAgICAgICAgfCAgMjEgKy0KIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgICAgICAgICB8ICA0NCArKwogc3JjL3Rlc3QvcmVn cmVzcy9zcWwvam9pbi5zcWwgICAgICAgICAgICAgICAgIHwgICA4ICsKIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwgICAgICB8ICAxOCArCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC90aWRzY2FuLnNxbCAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAyICsKIDE4IGZpbGVz IGNoYW5nZWQsIDk1MCBpbnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0IGIv Y29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAppbmRleCBi N2FmODZkMzUxLi4yNzdlZjNmMzg1IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zk dy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKQEAgLTg4NTMsMTggKzg4NTMsMTggQEAgaW5z ZXJ0IGludG8gdXRydGVzdCB2YWx1ZXMgKDIsICdxdXgnKTsKIC0tIENoZWNrIGNhc2Ugd2hl cmUgdGhlIGZvcmVpZ24gcGFydGl0aW9uIGlzIGEgc3VicGxhbiB0YXJnZXQgcmVsCiBleHBs YWluICh2ZXJib3NlLCBjb3N0cyBvZmYpCiB1cGRhdGUgdXRydGVzdCBzZXQgYSA9IDEgd2hl cmUgYSA9IDEgb3IgYSA9IDIgcmV0dXJuaW5nICo7Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBVcGRhdGUgb24gcHVibGljLnV0cnRlc3QK ICAgIE91dHB1dDogdXRydGVzdF8xLmEsIHV0cnRlc3RfMS5iCiAgICBGb3JlaWduIFVwZGF0 ZSBvbiBwdWJsaWMucmVtcCB1dHJ0ZXN0XzEKICAgIFVwZGF0ZSBvbiBwdWJsaWMubG9jcCB1 dHJ0ZXN0XzIKICAgIC0+ICBBcHBlbmQKICAgICAgICAgIC0+ICBGb3JlaWduIFVwZGF0ZSBv biBwdWJsaWMucmVtcCB1dHJ0ZXN0XzEKLSAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFVQ REFURSBwdWJsaWMubG9jdCBTRVQgYSA9IDEgV0hFUkUgKCgoYSA9IDEpIE9SIChhID0gMikp KSBSRVRVUk5JTkcgYSwgYgorICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogVVBEQVRFIHB1 YmxpYy5sb2N0IFNFVCBhID0gMSBXSEVSRSAoKGEgPSBBTlkgKCd7MSwyfSc6OmludGVnZXJb XSkpKSBSRVRVUk5JTkcgYSwgYgogICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5s b2NwIHV0cnRlc3RfMgogICAgICAgICAgICAgICAgT3V0cHV0OiAxLCB1dHJ0ZXN0XzIudGFi bGVvaWQsIHV0cnRlc3RfMi5jdGlkLCBOVUxMOjpyZWNvcmQKLSAgICAgICAgICAgICAgIEZp bHRlcjogKCh1dHJ0ZXN0XzIuYSA9IDEpIE9SICh1dHJ0ZXN0XzIuYSA9IDIpKQorICAgICAg ICAgICAgICAgRmlsdGVyOiAodXRydGVzdF8yLmEgPSBBTlkgKCd7MSwyfSc6OmludGVnZXJb XSkpCiAoMTAgcm93cykKIAogLS0gVGhlIG5ldyB2YWx1ZXMgYXJlIGNvbmNhdGVuYXRlZCB3 aXRoICcgdHJpZ2dlcmVkICEnCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggNTQ2ODYzN2UyZS4uZjM4NGVk ZGUwNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbApAQCAtNTQ3Miw2ICs1NDcyLDI0IEBAIEFOWSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBs YWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtZW5hYmxlLW9yLXRyYW5zZm9ybWF0 aW9uIiB4cmVmbGFiZWw9Im9yX3RyYW5zZm9ybWF0aW9uX2xpbWl0Ij4KKyAgICAgIDx0ZXJt Pjx2YXJuYW1lPm9yX3RyYW5zZm9ybWF0aW9uX2xpbWl0PC92YXJuYW1lPiAoPHR5cGU+Ym9v bGVhbjwvdHlwZT4pCisgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgPHByaW1hcnk+PHZh cm5hbWU+b3JfdHJhbnNmb3JtYXRpb25fbGltaXQ8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24g cGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJt PgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBTZXRzIHRoZSBt aW5pbXVtIGxlbmd0aCBvZiBhcmd1bWVudHMgaW4gYW4gT1IgZXhwcmVzc2lvbiBleGNlZWRp bmcgd2hpY2gKKyAgICAgICAgcGxhbm5lciB3aWxsIHRyeSB0byBsb29rdXAgYW5kIGdyb3Vw IG11bHRpcGxlIHNpbWlsYXIgT1IgZXhwcmVzc2lvbnMgdG8KKyAgICAgICAgQU5ZICg8eHJl ZiBsaW5rZW5kPSJmdW5jdGlvbnMtY29tcGFyaXNvbnMtYW55LXNvbWUiLz4pIGV4cHJlc3Np b25zLgorICAgICAgICBUaGUgZ3JvdXBpbmcgdGVjaG5pcXVlIG9mIHRoaXMgdHJhbnNmb3Jt YXRpb24gaXMgYmFzZWQgb24gdGhlIGVxdWl2YWxlbmNlIG9mIHZhcmlhYmxlIHNpZGVzLgor ICAgICAgICBPbmUgc2lkZSBvZiBzdWNoIGFuIGV4cHJlc3Npb24gbXVzdCBiZSBhIGNvbnN0 YW50IGNsYXVzZSwgYW5kIHRoZSBvdGhlciBtdXN0IGNvbnRhaW4gYSB2YXJpYWJsZSBjbGF1 c2UuCisgICAgICAgIFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPm9uPC9saXRlcmFsPi4KKyAg ICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+ CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVuYWJsZS1wYXJhbGxlbC1hcHBlbmQi IHhyZWZsYWJlbD0iZW5hYmxlX3BhcmFsbGVsX2FwcGVuZCI+CiAgICAgICA8dGVybT48dmFy bmFtZT5lbmFibGVfcGFyYWxsZWxfYXBwZW5kPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwv dHlwZT4pCiAgICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9k ZXMvcXVlcnlqdW1ibGVmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVm dW5jcy5jCmluZGV4IGJlODIzYTdmOGYuLmVkY2IwMGJkMzEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rl cy9xdWVyeWp1bWJsZWZ1bmNzLmMKQEAgLTE0MSw2ICsxNDEsMzMgQEAgSnVtYmxlUXVlcnko UXVlcnkgKnF1ZXJ5KQogCXJldHVybiBqc3RhdGU7CiB9CiAKK0p1bWJsZVN0YXRlICoKK0p1 bWJsZUV4cHIoRXhwciAqZXhwciwgdWludDY0ICpxdWVyeUlkKQoreworCUp1bWJsZVN0YXRl ICpqc3RhdGUgPSBOVUxMOworCisJQXNzZXJ0KHF1ZXJ5SWQgIT0gTlVMTCk7CisKKwlqc3Rh dGUgPSAoSnVtYmxlU3RhdGUgKikgcGFsbG9jKHNpemVvZihKdW1ibGVTdGF0ZSkpOworCisJ LyogU2V0IHVwIHdvcmtzcGFjZSBmb3IgcXVlcnkganVtYmxpbmcgKi8KKwlqc3RhdGUtPmp1 bWJsZSA9ICh1bnNpZ25lZCBjaGFyICopIHBhbGxvYyhKVU1CTEVfU0laRSk7CisJanN0YXRl LT5qdW1ibGVfbGVuID0gMDsKKwlqc3RhdGUtPmNsb2NhdGlvbnNfYnVmX3NpemUgPSAzMjsK Kwlqc3RhdGUtPmNsb2NhdGlvbnMgPSAoTG9jYXRpb25MZW4gKikKKwkJcGFsbG9jKGpzdGF0 ZS0+Y2xvY2F0aW9uc19idWZfc2l6ZSAqIHNpemVvZihMb2NhdGlvbkxlbikpOworCWpzdGF0 ZS0+Y2xvY2F0aW9uc19jb3VudCA9IDA7CisJanN0YXRlLT5oaWdoZXN0X2V4dGVybl9wYXJh bV9pZCA9IDA7CisKKwkvKiBDb21wdXRlIHF1ZXJ5IElEICovCisJX2p1bWJsZU5vZGUoanN0 YXRlLCAoTm9kZSAqKSBleHByKTsKKwkqcXVlcnlJZCA9IERhdHVtR2V0VUludDY0KGhhc2hf YW55X2V4dGVuZGVkKGpzdGF0ZS0+anVtYmxlLAorCQkJCQkJCQkJCQkJanN0YXRlLT5qdW1i bGVfbGVuLAorCQkJCQkJCQkJCQkJMCkpOworCisJcmV0dXJuIGpzdGF0ZTsKK30KKwogLyoK ICAqIEVuYWJsZXMgcXVlcnkgaWRlbnRpZmllciBjb21wdXRhdGlvbi4KICAqCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwcXVhbC5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3ByZXAvcHJlcHF1YWwuYwppbmRleCBjYmNmODNmODQ3Li5lMjdiMDdl NmE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwcXVhbC5j CisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBxdWFsLmMKQEAgLTMxLDE2 ICszMSwyNSBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImNhdGFs b2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgorI2lu Y2x1ZGUgImNvbW1vbi9oYXNoZm4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIK ICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNsdWRlICJub2Rlcy9xdWVyeWp1 bWJsZS5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKKyNpbmNsdWRlICJw YXJzZXIvcGFyc2VfY29lcmNlLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX29wZXIuaCIK ICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNo ZS5oIgogCitpbnQJCW9yX3RyYW5zZm9ybWF0aW9uX2xpbWl0ID0gMDsKIAogc3RhdGljIExp c3QgKnB1bGxfYW5kcyhMaXN0ICphbmRsaXN0KTsKIHN0YXRpYyBMaXN0ICpwdWxsX29ycyhM aXN0ICpvcmxpc3QpOwogc3RhdGljIEV4cHIgKmZpbmRfZHVwbGljYXRlX29ycyhFeHByICpx dWFsLCBib29sIGlzX2NoZWNrKTsKIHN0YXRpYyBFeHByICpwcm9jZXNzX2R1cGxpY2F0ZV9v cnMoTGlzdCAqb3JsaXN0KTsKK3N0YXRpYyBMaXN0ICpvcl90cmFuc2Zvcm1hdGlvbihMaXN0 ICpvcmxpc3QpOwogCiAKIC8qCkBAIC0yNjYsNiArMjc1LDM1NyBAQCBuZWdhdGVfY2xhdXNl KE5vZGUgKm5vZGUpCiAJcmV0dXJuIChOb2RlICopIG1ha2Vfbm90Y2xhdXNlKChFeHByICop IG5vZGUpOwogfQogCit0eXBlZGVmIHN0cnVjdCBPckNsYXVzZUdyb3VwS2V5Cit7CisJTm9k ZVRhZwl0eXBlOworCisJRXhwciAgICpleHByOyAvKiBQb2ludGVyIHRvIHRoZSBleHByZXNz aW9uIHRyZWUgd2hpY2ggaGFzIGJlZW4gYSBzb3VyY2UgZm9yCisJCQkJCXRoZSBoYXNoa2V5 IHZhbHVlICovCisJT2lkCQlvcG5vOworCU9pZAkJY29uc3R0eXBlOworCU9pZAkJaW5wdXRj b2xsaWQ7IC8qIFhYWDogQ291bGQgd2UgbG9va3VwIGZvciBjb21tb24gY29sbGF0aW9uPyAq LworfSBPckNsYXVzZUdyb3VwS2V5OworCit0eXBlZGVmIHN0cnVjdCBPckNsYXVzZUdyb3Vw RW50cnkKK3sKKwlPckNsYXVzZUdyb3VwS2V5CWtleTsKKworCUxpc3QJCQkgICAqY29uc3Rz OworCUxpc3QgCQkJICAgKmV4cHJzOworfSBPckNsYXVzZUdyb3VwRW50cnk7CisKKy8qCisg KiBIYXNoIGZ1bmN0aW9uIHRvIGZpbmQgY2FuZGlkYXRlIGNsYXVzZXMuCisgKi8KK3N0YXRp YyB1aW50MzIKK29yY2xhdXNlX2hhc2goY29uc3Qgdm9pZCAqZGF0YSwgU2l6ZSBrZXlzaXpl KQoreworCU9yQ2xhdXNlR3JvdXBLZXkgICAqa2V5ID0gKE9yQ2xhdXNlR3JvdXBLZXkgKikg ZGF0YTsKKwl1aW50NjQJCQkJZXhwckhhc2g7CisKKwlBc3NlcnQoa2V5c2l6ZSA9PSBzaXpl b2YoT3JDbGF1c2VHcm91cEtleSkpOworCUFzc2VydChJc0EoZGF0YSwgSW52YWxpZCkpOwor CisJKHZvaWQpIEp1bWJsZUV4cHIoa2V5LT5leHByLCAmZXhwckhhc2gpOworCisJcmV0dXJu IGhhc2hfY29tYmluZSgodWludDMyKSBleHBySGFzaCwKKwkJCQkJCWhhc2hfY29tYmluZSgo dWludDMyKSBrZXktPm9wbm8sCisJCQkJCQkJaGFzaF9jb21iaW5lKCh1aW50MzIpIGtleS0+ Y29uc3R0eXBlLAorCQkJCQkJCQkJCSAodWludDMyKSBrZXktPmlucHV0Y29sbGlkKSkpOwor fQorCitzdGF0aWMgdm9pZCAqCitvcmNsYXVzZV9rZXljb3B5KHZvaWQgKmRlc3QsIGNvbnN0 IHZvaWQgKnNyYywgU2l6ZSBrZXlzaXplKQoreworCU9yQ2xhdXNlR3JvdXBLZXkgKnNyY19r ZXkgPSAoT3JDbGF1c2VHcm91cEtleSAqKSBzcmM7CisJT3JDbGF1c2VHcm91cEtleSAqZHN0 X2tleSA9IChPckNsYXVzZUdyb3VwS2V5ICopIGRlc3Q7CisKKwlBc3NlcnQoc2l6ZW9mKE9y Q2xhdXNlR3JvdXBLZXkpID09IGtleXNpemUpOworCUFzc2VydChJc0Eoc3JjLCBJbnZhbGlk KSk7CisKKwlkc3Rfa2V5LT50eXBlID0gVF9JbnZhbGlkOworCWRzdF9rZXktPmV4cHIgPSBz cmNfa2V5LT5leHByOworCWRzdF9rZXktPm9wbm8gPSBzcmNfa2V5LT5vcG5vOworCWRzdF9r ZXktPmNvbnN0dHlwZSA9IHNyY19rZXktPmNvbnN0dHlwZTsKKwlkc3Rfa2V5LT5pbnB1dGNv bGxpZCA9IHNyY19rZXktPmlucHV0Y29sbGlkOworCisJcmV0dXJuIGRzdF9rZXk7Cit9CisK Ky8qCisgKiBEeW5haGFzaCBtYXRjaCBmdW5jdGlvbiB0byB1c2UgaW4gb3JfZ3JvdXBfaHRh YgorICovCitzdGF0aWMgaW50CitvcmNsYXVzZV9tYXRjaChjb25zdCB2b2lkICpkYXRhMSwg Y29uc3Qgdm9pZCAqZGF0YTIsIFNpemUga2V5c2l6ZSkKK3sKKwlPckNsYXVzZUdyb3VwS2V5 ICAgKmtleTEgPSAoT3JDbGF1c2VHcm91cEtleSAqKSBkYXRhMTsKKwlPckNsYXVzZUdyb3Vw S2V5ICAgKmtleTIgPSAoT3JDbGF1c2VHcm91cEtleSAqKSBkYXRhMjsKKworCUFzc2VydChz aXplb2YoT3JDbGF1c2VHcm91cEtleSkgPT0ga2V5c2l6ZSk7CisJQXNzZXJ0KElzQShrZXkx LCBJbnZhbGlkKSk7CisJQXNzZXJ0KElzQShrZXkyLCBJbnZhbGlkKSk7CisKKwlpZiAoa2V5 MS0+b3BubyA9PSBrZXkyLT5vcG5vICYmCisJCWtleTEtPmNvbnN0dHlwZSA9PSBrZXkyLT5j b25zdHR5cGUgJiYKKwkJa2V5MS0+aW5wdXRjb2xsaWQgPT0ga2V5Mi0+aW5wdXRjb2xsaWQg JiYKKwkJZXF1YWwoa2V5MS0+ZXhwciwga2V5Mi0+ZXhwcikpCisJCXJldHVybiAwOworCisJ cmV0dXJuIDE7Cit9CisKKy8qCisgKiBvcl90cmFuc2Zvcm1hdGlvbiAtCisgKgkgIERpc2Nv dmVyIHRoZSBhcmdzIG9mIGFuIE9SIGV4cHJlc3Npb24gYW5kIHRyeSB0byBncm91cCBzaW1p bGFyIE9SCisgKgkgIGV4cHJlc3Npb25zIHRvIGFuIFNBT1Agb3BlcmF0aW9uLgorICoJICBU cmFuc2Zvcm1hdGlvbiBncm91cHMgdHdvLXNpZGVkIGVxdWFsaXR5IG9wZXJhdGlvbnMuIE9u ZSBzaWRlIG9mIHN1Y2ggYW4KKyAqCSAgb3BlcmF0aW9uIG11c3QgYmUgcGxhaW4gY29uc3Rh bnQgb3IgY29uc3RhbnQgZXhwcmVzc2lvbi4gVGhlIG90aGVyIHNpZGUgb2YKKyAqCSAgdGhl IGNsYXVzZSBtdXN0IGJlIGEgdmFyaWFibGUgZXhwcmVzc2lvbiB3aXRob3V0IHZvbGF0aWxl IGZ1bmN0aW9ucy4KKyAqCSAgVG8gZ3JvdXAgcXVhbHMsIGlucHV0Y29sbGlkLCBvcG5vIGFu ZCBjb25zdHlwZSBvZiB0aGUgT1IgT3BFeHByIHF1YWxzIG11c3QKKyAqCSAgYmUgZXF1YWwg dG9vLgorICoJICBUaGUgZ3JvdXBpbmcgdGVjaG5pcXVlIGlzIGJhc2VkIG9uIGFuIGVxdWl2 YWxlbmNlIG9mIHZhcmlhYmxlIHNpZGVzIG9mIHRoZQorICoJICBleHByZXNzaW9uOiB1c2lu ZyBxdWVyeUlkIGFuZCBlcXVhbCgpIHJvdXRpbmUsIGl0IGdyb3VwcyBjb25zdGFudCBzaWRl cyBvZgorICoJICBzaW1pbGFyIGNsYXVzZXMgaW50byBhbiBhcnJheS4gQWZ0ZXIgdGhlIGdy b3VwaW5nIHByb2NlZHVyZSwgZWFjaCBjb3VwbGUKKyAqCSAgKCd2YXJpYWJsZSBleHByZXNz aW9uJyBhbmQgJ2NvbnN0YW50IGFycmF5JykgZm9ybSBhIG5ldyBTQU9QIG9wZXJhdGlvbiwK KyAqCSAgd2hpY2ggaXMgYWRkZWQgdG8gdGhlIGFyZ3MgbGlzdCBvZiB0aGUgcmV0dXJuaW5n IGV4cHJlc3Npb24uCisgKi8KK3N0YXRpYyBMaXN0ICoKK29yX3RyYW5zZm9ybWF0aW9uKExp c3QgKm9ybGlzdCkKK3sKKwlMaXN0CQkJCSAgICpuZXdvcmxpc3QgPSBOSUw7CisJTGlzdAkJ CQkgICAqZW50cmllcyA9IE5JTDsKKwlMaXN0Q2VsbAkJCSAgICpsYzsKKwlIQVNIQ1RMCQkJ CQlpbmZvOworCUhUQUIgCQkJCSAgICpvcl9ncm91cF9odGFiID0gTlVMTDsKKwlpbnQgCQkJ CQlsZW5fb3JzID0gbGlzdF9sZW5ndGgob3JsaXN0KTsKKwlPckNsYXVzZUdyb3VwRW50cnkJ ICAgKmVudHJ5ID0gTlVMTDsKKworCUFzc2VydChvcl90cmFuc2Zvcm1hdGlvbl9saW1pdCA+ PSAwICYmIGxlbl9vcnMgPiBvcl90cmFuc2Zvcm1hdGlvbl9saW1pdCk7CisKKwlNZW1TZXQo JmluZm8sIDAsIHNpemVvZihpbmZvKSk7CisJaW5mby5rZXlzaXplID0gc2l6ZW9mKE9yQ2xh dXNlR3JvdXBLZXkpOworCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKE9yQ2xhdXNlR3JvdXBF bnRyeSk7CisJaW5mby5oYXNoID0gb3JjbGF1c2VfaGFzaDsKKwlpbmZvLmtleWNvcHkgPSBv cmNsYXVzZV9rZXljb3B5OworCWluZm8ubWF0Y2ggPSBvcmNsYXVzZV9tYXRjaDsKKwlvcl9n cm91cF9odGFiID0gaGFzaF9jcmVhdGUoIk9SIEdyb3VwcyIsCisJCQkJCQkJCWxlbl9vcnMs CisJCQkJCQkJCSZpbmZvLAorCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwg SEFTSF9DT01QQVJFIHwgSEFTSF9LRVlDT1BZKTsKKworCWZvcmVhY2gobGMsIG9ybGlzdCkK Kwl7CisJCU5vZGUJCQkJICAgKm9ycXVhbCA9IGxmaXJzdChsYyk7CisJCU5vZGUJCQkJICAg KmNvbnN0X2V4cHI7CisJCU5vZGUJCQkJICAgKm5jb25zdF9leHByOworCQlPckNsYXVzZUdy b3VwS2V5CQloYXNoa2V5OworCQlib29sCQkJCQlmb3VuZDsKKwkJT2lkCQkJCQkJb3BubzsK KwkJT2lkCQkJCQkJY29uc3R0eXBlOworCQlOb2RlCQkJCSAgICpsZWZ0b3AsICpyaWdodG9w OworCisJCWlmICghSXNBKG9ycXVhbCwgT3BFeHByKSkKKwkJeworCQkJZW50cmllcyA9IGxh cHBlbmQoZW50cmllcywgb3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJb3BubyA9 ICgoT3BFeHByICopIG9ycXVhbCktPm9wbm87CisJCWlmIChnZXRfb3BfcmV0dHlwZShvcG5v KSAhPSBCT09MT0lEKQorCQl7CisJCQkvKiBPbmx5IG9wZXJhdG9yIHJldHVybmluZyBib29s ZWFuIHN1aXRzIE9SIC0+IEFOWSB0cmFuc2Zvcm1hdGlvbiAqLworCQkJZW50cmllcyA9IGxh cHBlbmQoZW50cmllcywgb3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyoKKwkJ ICogRGV0ZWN0IHRoZSBjb25zdGFudCBzaWRlIG9mIHRoZSBjbGF1c2UuIFJlY2FsbCBub24t Y29uc3RhbnQKKwkJICogZXhwcmVzc2lvbiBjYW4gYmUgbWFkZSBub3Qgb25seSB3aXRoIFZh cnMsIGJ1dCBhbHNvIHdpdGggUGFyYW1zLAorCQkgKiB3aGljaCBpcyBub3QgYm9uZGVkIHdp dGggYW55IHJlbGF0aW9uLiBUaHVzLCB3ZSBkZXRlY3QgdGhlIGNvbnN0CisJCSAqIHNpZGUg LSBpZiBhbm90aGVyIHNpZGUgaXMgY29uc3RhbnQgdG9vLCB0aGUgb3JxdWFsIGNvdWxkbid0 IGJlCisJCSAqIGFuIE9wRXhwci4KKwkJICogR2V0IHBvaW50ZXJzIHRvIGNvbnN0YW50IGFu ZCBleHByZXNzaW9uIHNpZGVzIG9mIHRoZSBxdWFsLgorCQkgKi8KKwkJbGVmdG9wID0gZ2V0 X2xlZnRvcChvcnF1YWwpOworCQlpZiAoSXNBKGxlZnRvcCwgUmVsYWJlbFR5cGUpKQorCQkJ bGVmdG9wID0gKE5vZGUgKikgKChSZWxhYmVsVHlwZSAqKSBsZWZ0b3ApLT5hcmc7CisJCXJp Z2h0b3AgPSBnZXRfcmlnaHRvcChvcnF1YWwpOworCQlpZiAoSXNBKHJpZ2h0b3AsIFJlbGFi ZWxUeXBlKSkKKwkJCXJpZ2h0b3AgPSAoTm9kZSAqKSAoKFJlbGFiZWxUeXBlICopIHJpZ2h0 b3ApLT5hcmc7CisKKwkJaWYgKElzQShsZWZ0b3AsIENvbnN0KSkKKwkJeworCQkJb3BubyA9 IGdldF9jb21tdXRhdG9yKG9wbm8pOworCisJCQlpZiAoIU9pZElzVmFsaWQob3BubykpCisJ CQl7CisJCQkJLyogY29tbXV0YXRvciBkb2Vzbid0IGV4aXN0LCB3ZSBjYW4ndCByZXZlcnNl IHRoZSBvcmRlciAqLworCQkJCWVudHJpZXMgPSBsYXBwZW5kKGVudHJpZXMsIG9ycXVhbCk7 CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCW5jb25zdF9leHByID0gZ2V0X3JpZ2h0b3Ao b3JxdWFsKTsKKwkJCWNvbnN0X2V4cHIgPSBnZXRfbGVmdG9wKG9ycXVhbCk7CisJCX0KKwkJ ZWxzZSBpZiAoSXNBKHJpZ2h0b3AsIENvbnN0KSkKKwkJeworCQkJY29uc3RfZXhwciA9IGdl dF9yaWdodG9wKG9ycXVhbCk7CisJCQluY29uc3RfZXhwciA9IGdldF9sZWZ0b3Aob3JxdWFs KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWVudHJpZXMgPSBsYXBwZW5kKGVudHJpZXMsIG9y cXVhbCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIFRyYW5zZm9ybWF0aW9u IG9ubHkgd29ya3Mgd2l0aCBib3RoIHNpZGUgdHlwZSBpcyBub3QKKwkJICogeyBhcnJheSB8 IGNvbXBvc2l0ZSB8IGRvbWFpbiB8IHJlY29yZCB9LgorCQkgKiBBbHNvLCBmb3JiaWQgaXQg Zm9yIHZvbGF0aWxlIGV4cHJlc3Npb25zLgorCQkgKi8KKwkJY29uc3R0eXBlID0gZXhwclR5 cGUoY29uc3RfZXhwcik7CisJCWlmICh0eXBlX2lzX3Jvd3R5cGUoZXhwclR5cGUoY29uc3Rf ZXhwcikpIHx8CisJCQl0eXBlX2lzX3Jvd3R5cGUoY29uc3R0eXBlKSB8fAorCQkJY29udGFp bl92b2xhdGlsZV9mdW5jdGlvbnMoKE5vZGUgKikgbmNvbnN0X2V4cHIpKQorCQl7CisJCQll bnRyaWVzID0gbGFwcGVuZChlbnRyaWVzLCBvcnF1YWwpOworCQkJY29udGludWU7CisJCX0K KworCQkvKgorCQkqIEF0IHRoaXMgcG9pbnQgd2UgZGVmaW5pdGVseSBoYXZlIGEgdHJhbnNm b3JtYWJsZSBjbGF1c2UuCisJCSogQ2xhc3NpZnkgaXQgYW5kIGFkZCBpbnRvIHNwZWNpZmlj IGdyb3VwIG9mIGNsYXVzZXMsIG9yIGNyZWF0ZSBuZXcKKwkJKiBncm91cC4KKwkJKi8KKwkJ aGFzaGtleS50eXBlID0gVF9JbnZhbGlkOworCQloYXNoa2V5LmV4cHIgPSAoRXhwciAqKSBu Y29uc3RfZXhwcjsKKwkJaGFzaGtleS5vcG5vID0gb3BubzsKKwkJaGFzaGtleS5jb25zdHR5 cGUgPSBjb25zdHR5cGU7CisJCWhhc2hrZXkuaW5wdXRjb2xsaWQgPSBleHByQ29sbGF0aW9u KGNvbnN0X2V4cHIpOworCQllbnRyeSA9IGhhc2hfc2VhcmNoKG9yX2dyb3VwX2h0YWIsICZo YXNoa2V5LCBIQVNIX0VOVEVSLCAmZm91bmQpOworCisJCWlmICh1bmxpa2VseShmb3VuZCkp CisJCXsKKwkJCWVudHJ5LT5jb25zdHMgPSBsYXBwZW5kKGVudHJ5LT5jb25zdHMsIGNvbnN0 X2V4cHIpOworCQkJZW50cnktPmV4cHJzID0gbGFwcGVuZChlbnRyeS0+ZXhwcnMsIG9ycXVh bCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQllbnRyeS0+Y29uc3RzID0gbGlzdF9tYWtlMShj b25zdF9leHByKTsKKwkJCWVudHJ5LT5leHBycyA9IGxpc3RfbWFrZTEob3JxdWFsKTsKKwor CQkJLyoKKwkJCSAqIEFkZCB0aGUgZW50cnkgdG8gdGhlIGxpc3QuIEl0IGlzIG5lZWRlZCBl eGNsdXNpdmVseSB0byBtYW5hZ2UgdGhlCisJCQkgKiBwcm9ibGVtIHdpdGggdGhlIG9yZGVy IG9mIHRyYW5zZm9ybWVkIGNsYXVzZXMgaW4gZXhwbGFpbi4KKwkJCSAqIEhhc2ggdmFsdWUg Y2FuIGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0gYW5kIHZlcnNpb24uIEhlbmNlLAorCQkJICog c2VxdWVudGFsIHNjYW4gb2YgdGhlIGhhc2ggdGFibGUgd291bGQgcHJvbmUgdG8gY2hhbmdl IHRoZSBvcmRlcgorCQkJICogb2YgY2xhdXNlcyBpbiBsaXN0cyBhbmQsIGFzIGEgcmVzdWx0 LCBicmVhayByZWdyZXNzaW9uIHRlc3RzCisJCQkgKiBhY2NpZGVudGlhbGx5LgorCQkJICov CisJCQllbnRyaWVzID0gbGFwcGVuZChlbnRyaWVzLCBlbnRyeSk7CisJCX0KKwl9CisKKwkv KiBMZXQncyBjb252ZXJ0IGVhY2ggZ3JvdXAgb2YgY2xhdXNlcyB0byBhbiBJTiBvcGVyYXRp b24uICovCisKKwkvKgorCSAqIEdvIHRocm91Z2ggdGhlIGxpc3Qgb2YgZ3JvdXBzIGFuZCBj b252ZXJ0IGVhY2gsIHdoZXJlIG51bWJlciBvZgorCSAqIGNvbnN0cyBtb3JlIHRoYW4gMS4g dHJpdmlhbCBncm91cHMgbW92ZSB0byBPUi1saXN0IGFnYWluCisJICovCisJZm9yZWFjaCAo bGMsIGVudHJpZXMpCisJeworCQlPaWQJCQkJICAgIHNjYWxhcl90eXBlOworCQlPaWQJCQkJ CWFycmF5X3R5cGU7CisKKwkJaWYgKCFJc0EobGZpcnN0KGxjKSwgSW52YWxpZCkpCisJCXsK KwkJCW5ld29ybGlzdCA9IGxhcHBlbmQobmV3b3JsaXN0LCBsZmlyc3QobGMpKTsKKwkJCWNv bnRpbnVlOworCQl9CisKKwkJZW50cnkgPSAoT3JDbGF1c2VHcm91cEVudHJ5ICopIGxmaXJz dChsYyk7CisKKwkJQXNzZXJ0KGxpc3RfbGVuZ3RoKGVudHJ5LT5jb25zdHMpID4gMCk7CisJ CUFzc2VydChsaXN0X2xlbmd0aChlbnRyeS0+ZXhwcnMpID09IGxpc3RfbGVuZ3RoKGVudHJ5 LT5jb25zdHMpKTsKKworCQlpZiAobGlzdF9sZW5ndGgoZW50cnktPmNvbnN0cykgPT0gMSkK KwkJeworCQkJLyoKKwkJCSAqIE9ubHkgb25lIGVsZW1lbnQgcmV0dXJucyBvcmlnaW4gZXhw cmVzc2lvbiBpbnRvIHRoZSBCb29sRXhwciBhcmdzCisJCQkgKiBsaXN0IHVuY2hhbmdlZC4K KwkJCSAqLworCQkJbGlzdF9mcmVlKGVudHJ5LT5jb25zdHMpOworCQkJbmV3b3JsaXN0ID0g bGlzdF9jb25jYXQobmV3b3JsaXN0LCBlbnRyeS0+ZXhwcnMpOworCQkJY29udGludWU7CisJ CX0KKworCQkvKgorCQkgKiBEbyB0aGUgdHJhbnNmb3JtYXRpb24uCisJCSAqLworCisJCXNj YWxhcl90eXBlID0gZW50cnktPmtleS5jb25zdHR5cGU7CisJCWFycmF5X3R5cGUgPSBPaWRJ c1ZhbGlkKHNjYWxhcl90eXBlKSA/IGdldF9hcnJheV90eXBlKHNjYWxhcl90eXBlKSA6CisJ CQkJCQkJCQkJCSAgIEludmFsaWRPaWQ7CisKKwkJaWYgKE9pZElzVmFsaWQoYXJyYXlfdHlw ZSkpCisJCXsKKwkJCS8qCisJCQkgKiBPSzogY29lcmNlIGFsbCB0aGUgcmlnaHQtaGFuZCBu b24tVmFyIGlucHV0cyB0byB0aGUgY29tbW9uCisJCQkgKiB0eXBlIGFuZCBidWlsZCBhbiBB cnJheUV4cHIgZm9yIHRoZW0uCisJCQkgKi8KKwkJCUxpc3QJCQkgICAqYWV4cHJzID0gTklM OworCQkJQXJyYXlFeHByCQkgICAqbmV3YSA9IE5VTEw7CisJCQlTY2FsYXJBcnJheU9wRXhw ciAgKnNhb3BleHByID0gTlVMTDsKKwkJCUhlYXBUdXBsZQkJCW9wZXJ0dXA7CisJCQlGb3Jt X3BnX29wZXJhdG9yCW9wZXJmb3JtOworCQkJTGlzdAkJCSAgICpuYW1lbGlzdCA9IE5JTDsK KworCQkJZm9yZWFjaChsYywgZW50cnktPmNvbnN0cykKKwkJCXsKKwkJCQlOb2RlICpub2Rl ID0gKE5vZGUgKikgbGZpcnN0KGxjKTsKKworCQkJCW5vZGUgPSBjb2VyY2VfdG9fY29tbW9u X3R5cGUoTlVMTCwgbm9kZSwgc2NhbGFyX3R5cGUsCisJCQkJCQkJCQkJCSAiT1IgQU5ZIFRy YW5zZm9ybWF0aW9uIik7CisJCQkJYWV4cHJzID0gbGFwcGVuZChhZXhwcnMsIG5vZGUpOwor CQkJfQorCisJCQluZXdhID0gbWFrZU5vZGUoQXJyYXlFeHByKTsKKwkJCS8qIGFycmF5X2Nv bGxpZCB3aWxsIGJlIHNldCBieSBwYXJzZV9jb2xsYXRlLmMgKi8KKwkJCW5ld2EtPmVsZW1l bnRfdHlwZWlkID0gc2NhbGFyX3R5cGU7CisJCQluZXdhLT5hcnJheV90eXBlaWQgPSBhcnJh eV90eXBlOworCQkJbmV3YS0+bXVsdGlkaW1zID0gZmFsc2U7CisJCQluZXdhLT5lbGVtZW50 cyA9IGFleHByczsKKwkJCW5ld2EtPmxvY2F0aW9uID0gLTE7CisKKwkJCS8qCisJCQkgKiBU cnkgdG8gY2FzdCB0aGlzIGV4cHJlc3Npb24gdG8gQ29uc3QuIER1ZSB0byBjdXJyZW50IHN0 cmljdAorCQkJICogdHJhbnNmb3JtYXRpb24gcnVsZXMgaXQgc2hvdWxkIGJlIGRvbmUgW2Fs bW9zdF0gZXZlcnkgdGltZS4KKwkJCSAqLworCQkJbmV3YSA9IChBcnJheUV4cHIgKikgZXZh bF9jb25zdF9leHByZXNzaW9ucyhOVUxMLCAoTm9kZSAqKSBuZXdhKTsKKworCQkJb3BlcnR1 cCA9IFNlYXJjaFN5c0NhY2hlMShPUEVST0lELAorCQkJCQkJCQkJICBPYmplY3RJZEdldERh dHVtKGVudHJ5LT5rZXkub3BubykpOworCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKG9wZXJ0 dXApKQorCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGVyYXRv ciAldSIsCisJCQkJCSBlbnRyeS0+a2V5Lm9wbm8pOworCisJCQlvcGVyZm9ybSA9IChGb3Jt X3BnX29wZXJhdG9yKSBHRVRTVFJVQ1Qob3BlcnR1cCk7CisJCQlpZiAoIU9wZXJhdG9ySXNW aXNpYmxlKGVudHJ5LT5rZXkub3BubykpCisJCQkJbmFtZWxpc3QgPSBsYXBwZW5kKG5hbWVs aXN0LCBtYWtlU3RyaW5nKGdldF9uYW1lc3BhY2VfbmFtZShvcGVyZm9ybS0+b3BybmFtZXNw YWNlKSkpOworCisJCQluYW1lbGlzdCA9IGxhcHBlbmQobmFtZWxpc3QsIG1ha2VTdHJpbmco cHN0cmR1cChOYW1lU3RyKG9wZXJmb3JtLT5vcHJuYW1lKSkpKTsKKwkJCVJlbGVhc2VTeXND YWNoZShvcGVydHVwKTsKKworCQkJc2FvcGV4cHIgPQorCQkJCShTY2FsYXJBcnJheU9wRXhw ciAqKQorCQkJCQltYWtlX3NjYWxhcl9hcnJheV9vcChOVUxMLAorCQkJCQkJCQkJCSBuYW1l bGlzdCwKKwkJCQkJCQkJCQkgdHJ1ZSwKKwkJCQkJCQkJCQkgKE5vZGUgKikgZW50cnktPmtl eS5leHByLAorCQkJCQkJCQkJCSAoTm9kZSAqKSBuZXdhLAorCQkJCQkJCQkJCSAtMSk7CisJ CQlzYW9wZXhwci0+aW5wdXRjb2xsaWQgPSBlbnRyeS0+a2V5LmlucHV0Y29sbGlkOworCisJ CQluZXdvcmxpc3QgPSBsYXBwZW5kKG5ld29ybGlzdCwgKHZvaWQgKikgc2FvcGV4cHIpOwor CQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIElmIHRoZSBjb25zdCBub2RlIChyaWdo dCBzaWRlIG9mIG9wZXJhdG9yIGV4cHJlc3Npb24pICdzIHR5cGUKKwkJCSAqICBkb24ndCBo YXZlIOKAnHRydWXigJ0gYXJyYXkgdHlwZSwgdGhlbiB3ZSBjYW5ubm90IGRvIHRoZSB0cmFu c2Zvcm1hdGlvbi4KKwkJCSAqIFdlIHNpbXBseSBjb25jYXRlbmF0ZSB0aGUgZXhwcmVzc2lv biBub2RlLgorCQkJICoKKwkJCSAqLworCQkJbGlzdF9mcmVlKGVudHJ5LT5jb25zdHMpOwor CQkJbmV3b3JsaXN0ID0gbGlzdF9jb25jYXQobmV3b3JsaXN0LCBlbnRyeS0+ZXhwcnMpOwor CQl9CisJfQorCWhhc2hfZGVzdHJveShvcl9ncm91cF9odGFiKTsKKwlsaXN0X2ZyZWUoZW50 cmllcyk7CisKKwkvKiBPbmUgbW9yZSB0cmljazogYXNzZW1ibGUgY29ycmVjdCBjbGF1c2Ug Ki8KKwlyZXR1cm4gbmV3b3JsaXN0OworfQogCiAvKgogICogY2Fub25pY2FsaXplX3F1YWwK QEAgLTYwNCw3ICs5NjQsMTkgQEAgcHJvY2Vzc19kdXBsaWNhdGVfb3JzKExpc3QgKm9ybGlz dCkKIAkgKiBJZiBubyB3aW5uZXJzLCB3ZSBjYW4ndCB0cmFuc2Zvcm0gdGhlIE9SCiAJICov CiAJaWYgKHdpbm5lcnMgPT0gTklMKQotCQlyZXR1cm4gbWFrZV9vcmNsYXVzZShvcmxpc3Qp OworCXsKKwkJLyoKKwkJICogTWFrZSBhbiBhdHRlbXB0IHRvIGdyb3VwIHNpbWlsYXIgT1Ig Y2xhdXNlcyBpbnRvIFNBT1AgaWYgdGhlIGxpc3QgaXMKKwkJICogbGVuZ3RoeSBlbm91Z2gu CisJCSAqLworCQlpZiAob3JfdHJhbnNmb3JtYXRpb25fbGltaXQgPj0gMCAmJgorCQkJbGlz dF9sZW5ndGgob3JsaXN0KSA+IG9yX3RyYW5zZm9ybWF0aW9uX2xpbWl0KQorCQkJb3JsaXN0 ID0gb3JfdHJhbnNmb3JtYXRpb24ob3JsaXN0KTsKKworCQkvKiBUcmFuc2Zvcm1hdGlvbiBj b3VsZCBncm91cCBhbGwgT1IgY2xhdXNlcyB0byBhIHNpbmdsZSBTQU9QICovCisJCXJldHVy biAobGlzdF9sZW5ndGgob3JsaXN0KSA9PSAxKSA/CisJCQkJCQkJKEV4cHIgKikgbGluaXRp YWwob3JsaXN0KSA6IG1ha2Vfb3JjbGF1c2Uob3JsaXN0KTsKKwl9CiAKIAkvKgogCSAqIEdl bmVyYXRlIG5ldyBPUiBsaXN0IGNvbnNpc3Rpbmcgb2YgdGhlIHJlbWFpbmluZyBzdWItY2xh dXNlcy4KQEAgLTY1MSw2ICsxMDIzLDExIEBAIHByb2Nlc3NfZHVwbGljYXRlX29ycyhMaXN0 ICpvcmxpc3QpCiAJCX0KIAl9CiAKKwkvKiBNYWtlIGFuIGF0dGVtcHQgdG8gZ3JvdXAgc2lt aWxhciBPUiBjbGF1c2VzIGludG8gQU5ZIG9wZXJhdGlvbiAqLworCWlmIChvcl90cmFuc2Zv cm1hdGlvbl9saW1pdCA+PSAwICYmCisJCWxpc3RfbGVuZ3RoKG5ld29ybGlzdCkgPiBvcl90 cmFuc2Zvcm1hdGlvbl9saW1pdCkKKwkJbmV3b3JsaXN0ID0gb3JfdHJhbnNmb3JtYXRpb24o bmV3b3JsaXN0KTsKKwogCS8qCiAJICogQXBwZW5kIHJlZHVjZWQgT1IgdG8gdGhlIHdpbm5l cnMgbGlzdCwgaWYgaXQncyBub3QgZGVnZW5lcmF0ZSwgaGFuZGxpbmcKIAkgKiB0aGUgc3Bl Y2lhbCBjYXNlIG9mIG9uZSBlbGVtZW50IGNvcnJlY3RseSAoY2FuIHRoYXQgcmVhbGx5IGhh cHBlbj8pLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVz LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCBhYmQ5MDI5 NDUxLi5hOGRkNzAxZTdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpA QCAtMzYyNiw2ICszNjI2LDE5IEBAIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVz SW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJvcl90cmFuc2Zv cm1hdGlvbl9saW1pdCIsIFBHQ19VU0VSU0VULCBRVUVSWV9UVU5JTkdfT1RIRVIsCisJCQln ZXR0ZXh0X25vb3AoIlNldCB0aGUgbWluaW11bSBsZW5ndGggb2YgdGhlIGxpc3Qgb2YgT1Ig Y2xhdXNlcyB0byAiCisJCQkJCQkgImF0dGVtcHQgdGhlIHRyYW5zZm9ybWF0aW9uLiIpLAor CQkJZ2V0dGV4dF9ub29wKCJUaGUgcGxhbm5lciB3aWxsIHRyeSB0byByZXBsYWNlIGV4cHJl c3Npb24gbGlrZSAiCisJCQkJCQkgIid4PWMxIE9SIHg9YzIgLi4nIHRvIHRoZSBleHByZXNz aW9uICd4ID0gQU5ZKEFSUkFZW2MxLGMyLC4uXSknIiksCisJCQlHVUNfRVhQTEFJTgorCQl9 LAorCQkmb3JfdHJhbnNmb3JtYXRpb25fbGltaXQsCisJCTAsIC0xLCBJTlRfTUFYLAorCQlO VUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCS8qIEVuZC1vZi1saXN0IG1hcmtlciAqLwogCXsK IAkJe05VTEwsIDAsIDAsIE5VTEwsIE5VTEx9LCBOVUxMLCAwLCAwLCAwLCBOVUxMLCBOVUxM LCBOVUxMCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUKaW5kZXggMjI0NGVlNTJmNy4uMDM3NDVjMjYzMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMzkxLDYgKzM5MSw3 IEBACiAjIC0gUGxhbm5lciBNZXRob2QgQ29uZmlndXJhdGlvbiAtCiAKICNlbmFibGVfYXN5 bmNfYXBwZW5kID0gb24KKyNvcl90cmFuc2Zvcm1hdGlvbl9saW1pdCA9IDAKICNlbmFibGVf Yml0bWFwc2NhbiA9IG9uCiAjZW5hYmxlX2dhdGhlcm1lcmdlID0gb24KICNlbmFibGVfaGFz aGFnZyA9IG9uCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5o IGIvc3JjL2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaAppbmRleCBmMWM1NWM4MDY3Li5h OWFlMDQ4YWY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmgKQEAgLTY1LDYgKzY1LDcg QEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBjb21wdXRlX3F1ZXJ5X2lkOwogCiBleHRlcm4g Y29uc3QgY2hhciAqQ2xlYW5RdWVyeXRleHQoY29uc3QgY2hhciAqcXVlcnksIGludCAqbG9j YXRpb24sIGludCAqbGVuKTsKIGV4dGVybiBKdW1ibGVTdGF0ZSAqSnVtYmxlUXVlcnkoUXVl cnkgKnF1ZXJ5KTsKK2V4dGVybiBKdW1ibGVTdGF0ZSAqSnVtYmxlRXhwcihFeHByICpleHBy LCB1aW50NjQgKnF1ZXJ5SWQpOwogZXh0ZXJuIHZvaWQgRW5hYmxlUXVlcnlJZCh2b2lkKTsK IAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgcXVlcnlfaWRfZW5hYmxlZDsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaCBiL3NyYy9pbmNsdWRlL29w dGltaXplci9vcHRpbWl6ZXIuaAppbmRleCA3YjYzYzVjZjcxLi40YzYxMzQwMWQ2IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKKysrIGIvc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCkBAIC0xMzMsNiArMTMzLDggQEAgZXh0ZXJu IHZvaWQgZXh0cmFjdF9xdWVyeV9kZXBlbmRlbmNpZXMoTm9kZSAqcXVlcnksCiAKIC8qIGlu IHByZXAvcHJlcHF1YWwuYzogKi8KIAorZXh0ZXJuIFBHRExMSU1QT1JUIGludCBvcl90cmFu c2Zvcm1hdGlvbl9saW1pdDsKKwogZXh0ZXJuIE5vZGUgKm5lZ2F0ZV9jbGF1c2UoTm9kZSAq bm9kZSk7CiBleHRlcm4gRXhwciAqY2Fub25pY2FsaXplX3F1YWwoRXhwciAqcXVhbCwgYm9v bCBpc19jaGVjayk7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y3JlYXRlX2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2lu ZGV4Lm91dAppbmRleCA3MGFiNDdhOTJmLi5lOWZiODJiNjRjIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CkBAIC0xODM2LDYgKzE4MzYsNzIg QEAgRFJPUCBUQUJMRSBvbmVrX3dpdGhfbnVsbDsKIC0tIENoZWNrIGJpdG1hcCBpbmRleCBw YXRoIHBsYW5uaW5nCiAtLQogRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSB0 ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRo b3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyB0ZW5rMV90aG91 c190ZW50aG91cyBvbiB0ZW5rMQorICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBB TkQgKHRlbnRob3VzID0gQU5ZICgnezEsMyw0Mn0nOjppbnRlZ2VyW10pKSkKKygyIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRl bnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7CisgdW5pcXVl MSB8IHVuaXF1ZTIgfCB0d28gfCBmb3VyIHwgdGVuIHwgdHdlbnR5IHwgaHVuZHJlZCB8IHRo b3VzYW5kIHwgdHdvdGhvdXNhbmQgfCBmaXZldGhvdXMgfCB0ZW50aG91cyB8IG9kZCB8IGV2 ZW4gfCBzdHJpbmd1MSB8IHN0cmluZ3UyIHwgc3RyaW5nNCAKKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0rLS0tLS0tKy0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorICAgICAgNDIgfCAgICA1NTMwIHwgICAwIHwg ICAgMiB8ICAgMiB8ICAgICAgMiB8ICAgICAgNDIgfCAgICAgICA0MiB8ICAgICAgICAgIDQy IHwgICAgICAgIDQyIHwgICAgICAgNDIgfCAgODQgfCAgIDg1IHwgUUJBQUFBICAgfCBTRUlB QUEgICB8IE9PT094eAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2Fu ZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgo aHVuZHJlZCA9IDQyKSBBTkQgKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJb XSkpKQorICAgICAgICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKQor KDggcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJl ZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKKyBjb3VudCAK Ky0tLS0tLS0KKyAgICAxMAorKDEgcm93KQorCitTRVQgb3JfdHJhbnNmb3JtYXRpb25fbGlt aXQgPSAwOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSB0ZW5rMQorICBX SEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBP UiB0ZW50aG91cyA9IDQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyB0ZW5rMV90aG91c190ZW50aG91 cyBvbiB0ZW5rMQorICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRo b3VzID0gQU5ZICgnezEsMyw0Mn0nOjppbnRlZ2VyW10pKSkKKygyIHJvd3MpCisKK1NFTEVD VCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0g MSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7CisgdW5pcXVlMSB8IHVuaXF1 ZTIgfCB0d28gfCBmb3VyIHwgdGVuIHwgdHdlbnR5IHwgaHVuZHJlZCB8IHRob3VzYW5kIHwg dHdvdGhvdXNhbmQgfCBmaXZldGhvdXMgfCB0ZW50aG91cyB8IG9kZCB8IGV2ZW4gfCBzdHJp bmd1MSB8IHN0cmluZ3UyIHwgc3RyaW5nNCAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0r LS0tLS0tKy0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLQorICAgICAgNDIgfCAgICA1NTMwIHwgICAwIHwgICAgMiB8ICAg MiB8ICAgICAgMiB8ICAgICAgNDIgfCAgICAgICA0MiB8ICAgICAgICAgIDQyIHwgICAgICAg IDQyIHwgICAgICAgNDIgfCAgODQgfCAgIDg1IHwgUUJBQUFBICAgfCBTRUlBQUEgICB8IE9P T094eAorKDEgcm93KQorCitTRVQgb3JfdHJhbnNmb3JtYXRpb25fbGltaXQgPSAyOworRVhQ TEFJTiAoQ09TVFMgT0ZGKSAtLSBvcl90cmFuc2Zvcm1hdGlvbiBzdGlsbCB3b3JrcworU0VM RUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMg PSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2lu ZyB0ZW5rMV90aG91c190ZW50aG91cyBvbiB0ZW5rMQorICAgSW5kZXggQ29uZDogKCh0aG91 c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gQU5ZICgnezEsMyw0Mn0nOjppbnRlZ2VyW10p KSkKKygyIHJvd3MpCisKK1NFVCBvcl90cmFuc2Zvcm1hdGlvbl9saW1pdCA9IDM7CitFWFBM QUlOIChDT1NUUyBPRkYpIC0tIG9yX3RyYW5zZm9ybWF0aW9uIG11c3QgYmUgZGlzYWJsZWQK IFNFTEVDVCAqIEZST00gdGVuazEKICAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRo b3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIApAQCAtMTg1MSwzOCArMTkxNywxMjAgQEAgU0VMRUNUICog RlJPTSB0ZW5rMQogICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQy KSBBTkQgKHRlbnRob3VzID0gNDIpKQogKDkgcm93cykKIAotU0VMRUNUICogRlJPTSB0ZW5r MQotICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3Vz ID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKLSB1bmlxdWUxIHwgdW5pcXVlMiB8IHR3byB8IGZv dXIgfCB0ZW4gfCB0d2VudHkgfCBodW5kcmVkIHwgdGhvdXNhbmQgfCB0d290aG91c2FuZCB8 IGZpdmV0aG91cyB8IHRlbnRob3VzIHwgb2RkIHwgZXZlbiB8IHN0cmluZ3UxIHwgc3RyaW5n dTIgfCBzdHJpbmc0IAotLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tCi0gICAgICA0MiB8ICAgIDU1MzAgfCAgIDAgfCAgICAyIHwgICAyIHwgICAgICAyIHwg ICAgICA0MiB8ICAgICAgIDQyIHwgICAgICAgICAgNDIgfCAgICAgICAgNDIgfCAgICAgICA0 MiB8ICA4NCB8ICAgODUgfCBRQkFBQUEgICB8IFNFSUFBQSAgIHwgT09PT3h4CitSRVNFVCBv cl90cmFuc2Zvcm1hdGlvbl9saW1pdDsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBj b3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5k ID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4g IEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKCho dW5kcmVkID0gNDIpIEFORCAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltd KSkpCisgICAgICAgICAtPiAgQml0bWFwQW5kCisgICAgICAgICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKGh1bmRyZWQgPSA0MikKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpCiso OCByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVk ID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworIGNvdW50IAor LS0tLS0tLQorICAgIDEwCiAoMSByb3cpCiAKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVD VCBjb3VudCgqKSBGUk9NIHRlbmsxCi0gIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3Vz YW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBXSEVSRSBodW5kcmVkID0gNDIg QU5EICh0aG91c2FuZCA8IDQyIE9SIHRob3VzYW5kIDwgOTkgT1IgNDMgPiB0aG91c2FuZCBP UiA0MiA+IHRob3VzYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisg ICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAgUmVjaGVjayBDb25k OiAoKGh1bmRyZWQgPSA0MikgQU5EICh0aG91c2FuZCA8IEFOWSAoJ3s0Miw5OSw0Myw0Mn0n OjppbnRlZ2VyW10pKSkKKyAgICAgICAgIC0+ICBCaXRtYXBBbmQKKyAgICAgICAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAg ICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPCBBTlkgKCd7NDIsOTksNDMsNDJ9 Jzo6aW50ZWdlcltdKSkKKyg4IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50 aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzKSBPUiB0aG91c2FuZCA9IDQxOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQWdncmVnYXRlCiAg ICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQotICAgICAgICAgUmVjaGVjayBDb25k OiAoKGh1bmRyZWQgPSA0MikgQU5EICgodGhvdXNhbmQgPSA0MikgT1IgKHRob3VzYW5kID0g OTkpKSkKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKCgodGhvdXNhbmQgPSA0MikgQU5EICh0 ZW50aG91cyA9IEFOWSAoJ3sxLDN9Jzo6aW50ZWdlcltdKSkpIE9SICh0aG91c2FuZCA9IDQx KSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSBBTlkgKCd7 MSwzfSc6OmludGVnZXJbXSkpKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAodGhvdXNhbmQgPSA0MSkKKyg4IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1Ig dGVudGhvdXMgPSAzKSBPUiB0aG91c2FuZCA9IDQxOworIGNvdW50IAorLS0tLS0tLQorICAg IDEwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1Ig dGhvdXNhbmQgPSA5OSBPUiB0ZW50aG91cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBC aXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoKGh1 bmRyZWQgPSA0MikgQU5EICgodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltd KSkgT1IgKHRlbnRob3VzIDwgMikpKSBPUiAodGhvdXNhbmQgPSA0MSkpCisgICAgICAgICAt PiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXBBbmQKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAg ICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9 IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGVudGhvdXMgPCAy KQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3Vz X3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQg PSA0MSkKKygxNCByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVS RSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkgT1Ig dGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9IDQxOworIGNvdW50IAorLS0tLS0tLQorICAg IDIwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1Ig dGhvdXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9IDk5IEFORCB0ZW50aG91cyA9IDIpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgo aHVuZHJlZCA9IDQyKSBBTkQgKCh0aG91c2FuZCA9IEFOWSAoJ3s0Miw0MX0nOjppbnRlZ2Vy W10pKSBPUiAoKHRob3VzYW5kID0gOTkpIEFORCAodGVudGhvdXMgPSAyKSkpKQogICAgICAg ICAgLT4gIEJpdG1hcEFuZAogICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIHRlbmsxX2h1bmRyZWQKICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICho dW5kcmVkID0gNDIpCiAgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IKICAgICAgICAgICAg ICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91 cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0g NDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQg PSBBTlkgKCd7NDIsNDF9Jzo6aW50ZWdlcltdKSkKICAgICAgICAgICAgICAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gOTkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gOTkpIEFORCAo dGVudGhvdXMgPSAyKSkKICgxMSByb3dzKQogCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5r MQotICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5k ID0gOTkpOworICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRo b3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKICBjb3Vu dCAKIC0tLS0tLS0KICAgICAxMAogKDEgcm93KQogCitSRVNFVCBvcl90cmFuc2Zvcm1hdGlv bl9saW1pdDsKIC0tCiAtLSBDaGVjayBiZWhhdmlvciB3aXRoIGR1cGxpY2F0ZSBpbmRleCBj b2x1bW4gY29udGVudHMKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2pvaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dAppbmRl eCA2M2NkZGFjMGQ2Li40MWUyYTVlZDk4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2pvaW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9p bi5vdXQKQEAgLTQyMTAsMTAgKzQyMTAsMTAgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKQogc2Vs ZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgogICAoYS51bmlxdWUxID0gMSBh bmQgYi51bmlxdWUxID0gMikgb3IKICAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9 IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgTmVzdGVkIExvb3AKLSAgIEpvaW4gRmlsdGVyOiAo KChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBPUiAoKChhLnVuaXF1ZTIg PSAzKSBPUiAoYS51bmlxdWUyID0gNykpIEFORCAoYi5odW5kcmVkID0gNCkpKQorICAgSm9p biBGaWx0ZXI6ICgoKGEudW5pcXVlMSA9IDEpIEFORCAoYi51bmlxdWUxID0gMikpIE9SICgo YS51bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKSBBTkQgKGIuaHVuZHJlZCA9 IDQpKSkKICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGIKICAgICAgICAgIFJl Y2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMikgT1IgKGh1bmRyZWQgPSA0KSkKICAgICAgICAg IC0+ICBCaXRtYXBPcgpAQCAtNDIyMywxNSArNDIyMyw2MSBAQCBzZWxlY3QgKiBmcm9tIHRl bmsxIGEgam9pbiB0ZW5rMSBiIG9uCiAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAoaHVuZHJlZCA9IDQpCiAgICAtPiAgTWF0ZXJpYWxpemUKICAgICAgICAgIC0+ICBCaXRt YXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEKLSAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDog KCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSAzKSBPUiAodW5pcXVlMiA9IDcpKQorICAg ICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9 IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkpCiAgICAgICAgICAgICAgICAtPiAgQml0bWFw T3IKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5r MV91bmlxdWUxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5p cXVlMSA9IDEpCiAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gdGVuazFfdW5pcXVlMgotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKHVuaXF1ZTIgPSAzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKHVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpCisoMTcgcm93cykKKwor ZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEg YiBvbgorICAoYS51bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IKKyAgKChhLnVu aXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExvb3AKKyAgIEpvaW4gRmlsdGVyOiAo KChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBPUiAoKGEudW5pcXVlMiA9 IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkgQU5EIChiLmh1bmRyZWQgPSA0KSkpCisgICAt PiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBiCisgICAgICAgICBSZWNoZWNrIENvbmQ6 ICgodW5pcXVlMSA9IDIpIE9SIChodW5kcmVkID0gNCkpCisgICAgICAgICAtPiAgQml0bWFw T3IKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlx dWUxCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDIpCisg ICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAor ICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0KQorICAgLT4g IE1hdGVyaWFsaXplCisgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBh CisgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDEpIE9SICh1bmlx dWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgICAgICAgIC0+ICBC aXRtYXBPcgorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IHRlbmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 ICh1bmlxdWUxID0gMSkKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiB0ZW5rMV91bmlxdWUyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAodW5pcXVlMiA9IDcpCi0oMTkgcm93cykKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10p KQorKDE3IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gdGVu azEgYSBqb2luIHRlbmsxIGIgb24KKyAgKGEudW5pcXVlMSA8IDIwIG9yIGEudW5pcXVlMSA9 IDMgb3IgYS51bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IKKyAgKChhLnVuaXF1 ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExv b3AKKyAgIEpvaW4gRmlsdGVyOiAoKGEudW5pcXVlMSA8IDIwKSBPUiAoYS51bmlxdWUxID0g MykgT1IgKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBPUiAoKGEudW5p cXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkgQU5EIChiLmh1bmRyZWQgPSA0KSkp CisgICAtPiAgU2VxIFNjYW4gb24gdGVuazEgYgorICAgLT4gIE1hdGVyaWFsaXplCisgICAg ICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBhCisgICAgICAgICAgICAgICBS ZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA8IDIwKSBPUiAodW5pcXVlMSA9IDMpIE9SICh1bmlx dWUxID0gMSkgT1IgKHVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpKQorICAg ICAgICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPCAyMCkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDMpCisgICAgICAgICAgICAg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAxKQorICAgICAg ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gQU5Z ICgnezMsN30nOjppbnRlZ2VyW10pKQorKDE1IHJvd3MpCiAKIC0tCiAtLSB0ZXN0IHBsYWNl bWVudCBvZiBtb3ZhYmxlIHF1YWxzIGluIGEgcGFyYW1ldGVyaXplZCBqb2luIHRyZWUKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dAppbmRl eCA0NmI3OGJhM2M0Li4zODhiN2Y4MzhiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0CkBAIC04MiwyMyArODIsNDMgQEAgZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbnVsbDsKICgyIHJv d3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID0g J2EnIG9yIGEgPSAnYyc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICBBcHBlbmQKICAgIC0+ICBTZXEgU2NhbiBvbiBscF9hZCBs cF8xCi0gICAgICAgICBGaWx0ZXI6ICgoYSA9ICdhJzo6YnBjaGFyKSBPUiAoYSA9ICdjJzo6 YnBjaGFyKSkKKyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltd KSkKICAgIC0+ICBTZXEgU2NhbiBvbiBscF9iYyBscF8yCi0gICAgICAgICBGaWx0ZXI6ICgo YSA9ICdhJzo6YnBjaGFyKSBPUiAoYSA9ICdjJzo6YnBjaGFyKSkKKyAgICAgICAgIEZpbHRl cjogKGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkKICg1IHJvd3MpCiAKIGV4cGxhaW4g KGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAo YSA9ICdhJyBvciBhID0gJ2MnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICBBcHBlbmQKICAgIC0+ICBTZXEgU2NhbiBvbiBscF9hZCBscF8xCi0gICAgICAgICBG aWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5EICgoYSA9ICdhJzo6YnBjaGFyKSBPUiAoYSA9 ICdjJzo6YnBjaGFyKSkpCisgICAgICAgICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5E IChhID0gQU5ZICgne2EsY30nOjpicGNoYXJbXSkpKQogICAgLT4gIFNlcSBTY2FuIG9uIGxw X2JjIGxwXzIKLSAgICAgICAgIEZpbHRlcjogKChhIElTIE5PVCBOVUxMKSBBTkQgKChhID0g J2EnOjpicGNoYXIpIE9SIChhID0gJ2MnOjpicGNoYXIpKSkKKyAgICAgICAgIEZpbHRlcjog KChhIElTIE5PVCBOVUxMKSBBTkQgKGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkpCiso NSByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUg YSA9ICdhJyBvciBhID0gJ2MnOworICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gbHBfYWQgbHBfMQorICAg ICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10pKQorICAgLT4gIFNl cSBTY2FuIG9uIGxwX2JjIGxwXzIKKyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7YSxj fSc6OmJwY2hhcltdKSkKKyg1IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0 ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9ICdhJyBvciBhID0gJ2Mn KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAg U2VxIFNjYW4gb24gbHBfYWQgbHBfMQorICAgICAgICAgRmlsdGVyOiAoKGEgSVMgTk9UIE5V TEwpIEFORCAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10pKSkKKyAgIC0+ICBTZXEgU2Nh biBvbiBscF9iYyBscF8yCisgICAgICAgICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5E IChhID0gQU5ZICgne2EsY30nOjpicGNoYXJbXSkpKQogKDUgcm93cykKIAogZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPD4gJ2cnOwpAQCAtNTE1LDEw ICs1MzUsMTAgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVy ZSBhIDw9IDMxOwogKDI3IHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYSA9IDc7Ci0gICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgU2VxIFNjYW4gb24gcmxwMiBybHAKLSAgIEZp bHRlcjogKChhID0gMSkgT1IgKGEgPSA3KSkKKyAgIEZpbHRlcjogKGEgPSBBTlkgKCd7MSw3 fSc6OmludGVnZXJbXSkpCiAoMiByb3dzKQogCiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVj dCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGIgPSAnYWInOwpAQCAtNTk2LDEzICs2MTYs MTMgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhIDwg MSBvciAoYSA+IDIwIGFuZCBhIDwgMjUpOwogCiAtLSB3aGVyZSBjbGF1c2UgY29udHJhZGlj dHMgc3ViLXBhcnRpdGlvbidzIGNvbnN0cmFpbnQKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2Vs ZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDIwIG9yIGEgPSA0MDsKLSAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogIEFwcGVuZAogICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMSBybHBfMQot ICAgICAgICAgRmlsdGVyOiAoKGEgPSAyMCkgT1IgKGEgPSA0MCkpCisgICAgICAgICBGaWx0 ZXI6IChhID0gQU5ZICgnezIwLDQwfSc6OmludGVnZXJbXSkpCiAgICAtPiAgU2VxIFNjYW4g b24gcmxwNV9kZWZhdWx0IHJscF8yCi0gICAgICAgICBGaWx0ZXI6ICgoYSA9IDIwKSBPUiAo YSA9IDQwKSkKKyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7MjAsNDB9Jzo6aW50ZWdl cltdKSkKICg1IHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBy bHAzIHdoZXJlIGEgPSAyMDsgICAvKiBlbXB0eSAqLwpAQCAtNjcxLDYgKzY5MSwxNjEgQEAg ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSAoYSA9IDEgYW5k IGEgPSAzKSBvciAoYSA+IDEgYW5kIGEgPQogICAgICAgICAgRmlsdGVyOiAoKChhID0gMSkg QU5EIChhID0gMykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCiAoMTEgcm93cykKIAor ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBvciBh ID0gNzsKKyAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24g cmxwMiBybHAKKyAgIEZpbHRlcjogKGEgPSBBTlkgKCd7MSw3fSc6OmludGVnZXJbXSkpCiso MiByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJl IGEgPSAxIG9yIGIgPSAnYWInOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9u IHJscDEgcmxwXzEKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9 ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDIgcmxwXzIKKyAgICAgICAg IEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4g IFNlcSBTY2FuIG9uIHJscDNhYmNkIHJscF8zCisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEp IE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0 XzEgcmxwXzQKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdh Yic6OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMiBybHBfNQorICAgICAgICAg RmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAg U2VxIFNjYW4gb24gcmxwNF9kZWZhdWx0IHJscF82CisgICAgICAgICBGaWx0ZXI6ICgoYSA9 IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBy bHA1XzEgcmxwXzcKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9 ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfZGVmYXVsdCBybHBfOAor ICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkp CisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfMTAgcmxwXzkKKyAgICAgICAgIEZp bHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNl cSBTY2FuIG9uIHJscF9kZWZhdWx0XzMwIHJscF8xMAorICAgICAgICAgRmlsdGVyOiAoKGEg PSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24g cmxwX2RlZmF1bHRfbnVsbCBybHBfMTEKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1Ig KChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZh dWx0X2RlZmF1bHQgcmxwXzEyCisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6 OnRleHQgPSAnYWInOjp0ZXh0KSkKKygyNSByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYp IHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPiAyMCBhbmQgYSA8IDI3OworICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxw NF8xIHJscF8xCisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDIwKSBBTkQgKGEgPCAyNykpCisg ICAtPiAgU2VxIFNjYW4gb24gcmxwNF8yIHJscF8yCisgICAgICAgICBGaWx0ZXI6ICgoYSA+ IDIwKSBBTkQgKGEgPCAyNykpCisoNSByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNl bGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAyOTsKKyAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24g cmxwNF9kZWZhdWx0IHJscAorICAgRmlsdGVyOiAoYSA9IDI5KQorKDIgcm93cykKKworZXhw bGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID49IDI5OworICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBT ZXEgU2NhbiBvbiBybHA0X2RlZmF1bHQgcmxwXzEKKyAgICAgICAgIEZpbHRlcjogKGEgPj0g MjkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNV8xIHJscF8yCisgICAgICAgICBGaWx0ZXI6 IChhID49IDI5KQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfZGVmYXVsdCBybHBfMworICAg ICAgICAgRmlsdGVyOiAoYSA+PSAyOSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVs dF8zMCBybHBfNAorICAgICAgICAgRmlsdGVyOiAoYSA+PSAyOSkKKyAgIC0+ICBTZXEgU2Nh biBvbiBybHBfZGVmYXVsdF9kZWZhdWx0IHJscF81CisgICAgICAgICBGaWx0ZXI6IChhID49 IDI5KQorKDExIHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBy bHAgd2hlcmUgYSA8IDEgb3IgKGEgPiAyMCBhbmQgYSA8IDI1KTsKKyAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisg ICAtPiAgU2VxIFNjYW4gb24gcmxwMSBybHBfMQorICAgICAgICAgRmlsdGVyOiAoKGEgPCAx KSBPUiAoKGEgPiAyMCkgQU5EIChhIDwgMjUpKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0 XzEgcmxwXzIKKyAgICAgICAgIEZpbHRlcjogKChhIDwgMSkgT1IgKChhID4gMjApIEFORCAo YSA8IDI1KSkpCisoNSByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZy b20gcmxwIHdoZXJlIGEgPSAyMCBvciBhID0gNDA7CisgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBv biBybHA0XzEgcmxwXzEKKyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7MjAsNDB9Jzo6 aW50ZWdlcltdKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1X2RlZmF1bHQgcmxwXzIKKyAg ICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7MjAsNDB9Jzo6aW50ZWdlcltdKSkKKyg1IHJv d3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAzIHdoZXJlIGEg PSAyMDsgICAvKiBlbXB0eSAqLworICAgICAgICBRVUVSWSBQTEFOICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPbmUtVGltZSBGaWx0ZXI6IGZh bHNlCisoMiByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxw IHdoZXJlIGEgPiAxIGFuZCBhID0gMTA7CS8qIG9ubHkgZGVmYXVsdCAqLworICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0XzEwIHJscAorICAgRmlsdGVyOiAo KGEgPiAxKSBBTkQgKGEgPSAxMCkpCisoMiByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYp IHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPiAxIGFuZCBhID49MTU7CS8qIHJscDMgb253 YXJkcywgaW5jbHVkaW5nIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzYWJjZCBy bHBfMQorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4g IFNlcSBTY2FuIG9uIHJscDNlZmdoIHJscF8yCisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEp IEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwM251bGx4eSBybHBfMwor ICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBT Y2FuIG9uIHJscDNfZGVmYXVsdCBybHBfNAorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBB TkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMSBybHBfNQorICAgICAg ICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9u IHJscDRfMiBybHBfNgorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUp KQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfZGVmYXVsdCBybHBfNworICAgICAgICAgRmls dGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDVf MSBybHBfOAorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAg LT4gIFNlcSBTY2FuIG9uIHJscDVfZGVmYXVsdCBybHBfOQorICAgICAgICAgRmlsdGVyOiAo KGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0 XzMwIHJscF8xMAorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQor ICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0X2RlZmF1bHQgcmxwXzExCisgICAgICAg ICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisoMjMgcm93cykKKworZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBhbmQgYSA9IDM7 CS8qIGVtcHR5ICovCisgICAgICAgIFFVRVJZIFBMQU4gICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE9uZS1UaW1lIEZpbHRlcjogZmFsc2UKKygy IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUg KGEgPSAxIGFuZCBhID0gMykgb3IgKGEgPiAxIGFuZCBhID0gMTUpOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDIgcmxw XzEKKyAgICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFORCAoYSA9IDMpKSBPUiAoKGEgPiAx KSBBTkQgKGEgPSAxNSkpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDNhYmNkIHJscF8yCisg ICAgICAgICBGaWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEgPSAzKSkgT1IgKChhID4gMSkgQU5E IChhID0gMTUpKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzZWZnaCBybHBfMworICAgICAg ICAgRmlsdGVyOiAoKChhID0gMSkgQU5EIChhID0gMykpIE9SICgoYSA+IDEpIEFORCAoYSA9 IDE1KSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwM251bGx4eSBybHBfNAorICAgICAgICAg RmlsdGVyOiAoKChhID0gMSkgQU5EIChhID0gMykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1 KSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwM19kZWZhdWx0IHJscF81CisgICAgICAgICBG aWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEgPSAzKSkgT1IgKChhID4gMSkgQU5EIChhID0gMTUp KSkKKygxMSByb3dzKQorCiAtLSBtdWx0aS1jb2x1bW4ga2V5cwogY3JlYXRlIHRhYmxlIG1j M3AgKGEgaW50LCBiIGludCwgYyBpbnQpIHBhcnRpdGlvbiBieSByYW5nZSAoYSwgYWJzKGIp LCBjKTsKIGNyZWF0ZSB0YWJsZSBtYzNwX2RlZmF1bHQgcGFydGl0aW9uIG9mIG1jM3AgZGVm YXVsdDsKQEAgLTIwNzIsMTAgKzIyNDcsMTAgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxl Y3QgKiBmcm9tIGhwIHdoZXJlIGEgPSAxIGFuZCBiID0gJ2FiY2RlJzsKIAogZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGhwIHdoZXJlIGEgPSAxIGFuZCBiID0gJ2FiY2Rl JyBhbmQKICAgKGMgPSAyIG9yIGMgPSAzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogIFNlcSBTY2FuIG9uIGhwMiBocAotICAgRmlsdGVyOiAoKGEgPSAxKSBB TkQgKGIgPSAnYWJjZGUnOjp0ZXh0KSBBTkQgKChjID0gMikgT1IgKGMgPSAzKSkpCisgICBG aWx0ZXI6ICgoYyA9IEFOWSAoJ3syLDN9Jzo6aW50ZWdlcltdKSkgQU5EIChhID0gMSkgQU5E IChiID0gJ2FiY2RlJzo6dGV4dCkpCiAoMiByb3dzKQogCiBkcm9wIHRhYmxlIGhwMjsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dAppbmRleCAxMDkwM2JkYWIw Li42ZjU1YjllM2VjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0 YXRzX2V4dC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQu b3V0CkBAIC0xMzIyLDE5ICsxMzIyLDE5IEBAIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1h dGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUK IFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVu Y3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKGEgPSAxIE9SIGEgPSA1MSkgQU5EIGIgPSAn JzEnJycpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0g ICAgICAgIDk5IHwgICAgMTAwCisgICAgICAgMTAwIHwgICAgMTAwCiAoMSByb3cpCiAKIFNF TEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rp b25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKGEgPSAxIE9SIGEgPSA1MSkgQU5EIChiID0gJycx JycgT1IgYiA9ICcnMicnKScpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0tLS0tLS0t Ky0tLS0tLS0tCi0gICAgICAgIDk5IHwgICAgMTAwCisgICAgICAgMTAwIHwgICAgMTAwCiAo MSByb3cpCiAKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAq IEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKGEgPSAxIE9SIGEgPSAyIE9S IGEgPSA1MSBPUiBhID0gNTIpIEFORCAoYiA9ICcnMScnIE9SIGIgPSAnJzInJyknKTsKICBl c3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAgIDE5NyB8 ICAgIDIwMAorICAgICAgIDIwMCB8ICAgIDIwMAogKDEgcm93KQogCiAtLSBPUiBjbGF1c2Vz IHJlZmVyZW5jaW5nIGRpZmZlcmVudCBhdHRyaWJ1dGVzIGFyZSBpbmNvbXBhdGlibGUKQEAg LTE2NjQsMTkgKzE2NjQsMTkgQEAgU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93 cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRQogU0VMRUNU ICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFs X2RlcGVuZGVuY2llcyBXSEVSRSAoKGEgKiAyKSA9IDIgT1IgKGEgKiAyKSA9IDEwMikgQU5E IHVwcGVyKGIpID0gJycxJycnKTsKICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0tLS0t LSstLS0tLS0tLQotICAgICAgICA5OSB8ICAgIDEwMAorICAgICAgIDEwMCB8ICAgIDEwMAog KDEgcm93KQogCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1Qg KiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFICgoYSAqIDIpID0gMiBPUiAo YSAqIDIpID0gMTAyKSBBTkQgKHVwcGVyKGIpID0gJycxJycgT1IgdXBwZXIoYikgPSAnJzIn JyknKTsKICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0tLS0tLSstLS0tLS0tLQotICAg ICAgICA5OSB8ICAgIDEwMAorICAgICAgIDEwMCB8ICAgIDEwMAogKDEgcm93KQogCiBTRUxF Q1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1bmN0aW9u YWxfZGVwZW5kZW5jaWVzIFdIRVJFICgoYSAqIDIpID0gMiBPUiAoYSAqIDIpID0gNCBPUiAo YSAqIDIpID0gMTAyIE9SIChhICogMikgPSAxMDQpIEFORCAodXBwZXIoYikgPSAnJzEnJyBP UiB1cHBlcihiKSA9ICcnMicnKScpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0tLS0t LS0tKy0tLS0tLS0tCi0gICAgICAgMTk3IHwgICAgMjAwCisgICAgICAgMjAwIHwgICAgMjAw CiAoMSByb3cpCiAKIC0tIE9SIGNsYXVzZXMgcmVmZXJlbmNpbmcgZGlmZmVyZW50IGF0dHJp YnV0ZXMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0CmluZGV4IGYxMzNi NWE0YWMuLmYxMTJlNjRhODcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvdGlkc2Nhbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90aWRzY2Fu Lm91dApAQCAtNDMsMTAgKzQzLDI1IEBAIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBX SEVSRSAnKDAsMSknID0gY3RpZDsKIC0tIE9SJ2QgY2xhdXNlcwogRVhQTEFJTiAoQ09TVFMg T0ZGKQogU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMikn IE9SICcoMCwxKScgPSBjdGlkOwotICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVGlkIFNj YW4gb24gdGlkc2NhbgorICAgVElEIENvbmQ6IChjdGlkID0gQU5ZICgneyIoMCwyKSIsIigw LDEpIn0nOjp0aWRbXSkpCisoMiByb3dzKQorCitTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNj YW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CisgY3RpZCAgfCBp ZCAKKy0tLS0tLS0rLS0tLQorICgwLDEpIHwgIDEKKyAoMCwyKSB8ICAyCisoMiByb3dzKQor CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hF UkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CisgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgVGlkIFNjYW4g b24gdGlkc2NhbgotICAgVElEIENvbmQ6ICgoY3RpZCA9ICcoMCwyKSc6OnRpZCkgT1IgKCco MCwxKSc6OnRpZCA9IGN0aWQpKQorICAgVElEIENvbmQ6IChjdGlkID0gQU5ZICgneyIoMCwy KSIsIigwLDEpIn0nOjp0aWRbXSkpCiAoMiByb3dzKQogCiBTRUxFQ1QgY3RpZCwgKiBGUk9N IHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAppbmRleCBkNDljZTlmMzAwLi4yZjY5 MWVmY2M1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXgu c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKQEAgLTcz Nyw2ICs3MzcsNTAgQEAgU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKIFNFTEVDVCBjb3Vu dCgqKSBGUk9NIHRlbmsxCiAgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0g NDIgT1IgdGhvdXNhbmQgPSA5OSk7CiAKK1NFVCBvcl90cmFuc2Zvcm1hdGlvbl9saW1pdCA9 IDA7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJF IHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRl bnRob3VzID0gNDIpOworU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9 IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQy KTsKK1NFVCBvcl90cmFuc2Zvcm1hdGlvbl9saW1pdCA9IDI7CitFWFBMQUlOIChDT1NUUyBP RkYpIC0tIG9yX3RyYW5zZm9ybWF0aW9uIHN0aWxsIHdvcmtzCitTRUxFQ1QgKiBGUk9NIHRl bmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhv dXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOworU0VUIG9yX3RyYW5zZm9ybWF0aW9uX2xpbWl0 ID0gMzsKK0VYUExBSU4gKENPU1RTIE9GRikgLS0gb3JfdHJhbnNmb3JtYXRpb24gbXVzdCBi ZSBkaXNhYmxlZAorU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQy IEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsK K1JFU0VUIG9yX3RyYW5zZm9ybWF0aW9uX2xpbWl0OworCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5E ICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworU0VMRUNUIGNvdW50KCopIEZS T00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0 aG91c2FuZCA9IDk5KTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kIDwgNDIgT1Ig dGhvdXNhbmQgPCA5OSBPUiA0MyA+IHRob3VzYW5kIE9SIDQyID4gdGhvdXNhbmQpOworCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVS RSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMykgT1Ig dGhvdXNhbmQgPSA0MTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIHRo b3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzKSBPUiB0aG91 c2FuZCA9IDQxOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJP TSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRo b3VzYW5kID0gOTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9IDQxOworU0VMRUNU IGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNh bmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5IE9SIHRlbnRob3VzIDwgMikgT1IgdGhvdXNhbmQg PSA0MTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVu azEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2Fu ZCA9IDQxIE9SIHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7CitTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9 IDQyIE9SIHRob3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAy KTsKK1JFU0VUIG9yX3RyYW5zZm9ybWF0aW9uX2xpbWl0OworCiAtLQogLS0gQ2hlY2sgYmVo YXZpb3Igd2l0aCBkdXBsaWNhdGUgaW5kZXggY29sdW1uIGNvbnRlbnRzCiAtLQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9qb2luLnNxbAppbmRleCBjNGM2YzdiOGJhLi44MTU4YTdkZDI0IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9qb2luLnNxbApAQCAtMTQwOCw2ICsxNDA4LDE0IEBAIGV4cGxhaW4gKGNvc3RzIG9m ZikKIHNlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KICAgKGEudW5pcXVl MSA9IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9yCiAgICgoYS51bmlxdWUyID0gMyBvciBhLnVu aXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0gNCk7CitleHBsYWluIChjb3N0cyBvZmYpCitz ZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCisgIChhLnVuaXF1ZTEgPSAx IGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgorICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUy ID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOworZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0 ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgorICAoYS51bmlxdWUxIDwgMjAgb3Ig YS51bmlxdWUxID0gMyBvciBhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgor ICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQp OwogCiAtLQogLS0gdGVzdCBwbGFjZW1lbnQgb2YgbW92YWJsZSBxdWFscyBpbiBhIHBhcmFt ZXRlcml6ZWQgam9pbiB0cmVlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w YXJ0aXRpb25fcHJ1bmUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3By dW5lLnNxbAppbmRleCBkYzcxNjkzODYxLi5lNjc3Y2U3MjUwIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwKQEAgLTIxLDYgKzIxLDEwIEBAIGV4cGxh aW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsOwog ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbnVsbDsK IGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID0gJ2EnIG9y IGEgPSAnYyc7CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUg YSBpcyBub3QgbnVsbCBhbmQgKGEgPSAnYScgb3IgYSA9ICdjJyk7CisKK2V4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID0gJ2EnIG9yIGEgPSAnYyc7Citl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBub3QgbnVs bCBhbmQgKGEgPSAnYScgb3IgYSA9ICdjJyk7CisKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2Vs ZWN0ICogZnJvbSBscCB3aGVyZSBhIDw+ICdnJzsKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2Vs ZWN0ICogZnJvbSBscCB3aGVyZSBhIDw+ICdhJyBhbmQgYSA8PiAnZCc7CiBleHBsYWluIChj b3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBub3QgaW4gKCdhJywgJ2QnKTsK QEAgLTk5LDYgKzEwMywyMCBAQCBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20g cmxwIHdoZXJlIGEgPiAxIGFuZCBhID49MTU7CS8qIHJscDMgb253YXJkcywgaQogZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBhbmQgYSA9IDM7 CS8qIGVtcHR5ICovCiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdo ZXJlIChhID0gMSBhbmQgYSA9IDMpIG9yIChhID4gMSBhbmQgYSA9IDE1KTsKIAorCitleHBs YWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGEgPSA3 OworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBv ciBiID0gJ2FiJzsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hl cmUgYSA+IDIwIGFuZCBhIDwgMjc7CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZy b20gcmxwIHdoZXJlIGEgPSAyOTsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJv bSBybHAgd2hlcmUgYSA+PSAyOTsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJv bSBybHAgd2hlcmUgYSA8IDEgb3IgKGEgPiAyMCBhbmQgYSA8IDI1KTsKK2V4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDIwIG9yIGEgPSA0MDsKK2V4 cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAzIHdoZXJlIGEgPSAyMDsgICAv KiBlbXB0eSAqLworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVy ZSBhID4gMSBhbmQgYSA9IDEwOwkvKiBvbmx5IGRlZmF1bHQgKi8KK2V4cGxhaW4gKGNvc3Rz IG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+IDEgYW5kIGEgPj0xNTsJLyogcmxw MyBvbndhcmRzLCBpbmNsdWRpbmcgZGVmYXVsdCAqLworZXhwbGFpbiAoY29zdHMgb2ZmKSBz ZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBhbmQgYSA9IDM7CS8qIGVtcHR5ICovCitl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIChhID0gMSBhbmQg YSA9IDMpIG9yIChhID4gMSBhbmQgYSA9IDE1KTsKKwogLS0gbXVsdGktY29sdW1uIGtleXMK IGNyZWF0ZSB0YWJsZSBtYzNwIChhIGludCwgYiBpbnQsIGMgaW50KSBwYXJ0aXRpb24gYnkg cmFuZ2UgKGEsIGFicyhiKSwgYyk7CiBjcmVhdGUgdGFibGUgbWMzcF9kZWZhdWx0IHBhcnRp dGlvbiBvZiBtYzNwIGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC90aWRzY2FuLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RpZHNjYW4uc3FsCmluZGV4 IDMxM2UwZmI5YjYuLjI4M2UwMjY3NTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3RpZHNjYW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RpZHNjYW4uc3Fs CkBAIC0yMiw2ICsyMiwxMCBAQCBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgY3RpZCwg KiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7 CiBTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1Ig JygwLDEpJyA9IGN0aWQ7CiAKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjdGlkLCAq IEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsK K1NFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAn KDAsMSknID0gY3RpZDsKKwogLS0gY3RpZCA9IFNjYWxhckFycmF5T3AgLSBpbXBsZW1lbnRl ZCBhcyB0aWRzY2FuCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgY3RpZCwgKiBGUk9N IHRpZHNjYW4gV0hFUkUgY3RpZCA9IEFOWShBUlJBWVsnKDAsMSknLCAnKDAsMiknXTo6dGlk W10pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBjZmE5ZDVhYWVhLi40Zjc5 MjVkNzhjIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAor KysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTY3Miw2ICsxNjcy LDggQEAgTnVtZXJpY1ZhcgogT01fdWludDMyCiBPUAogT1NBUGVyR3JvdXBTdGF0ZQorT3JD bGF1c2VHcm91cEVudHJ5CitPckNsYXVzZUdyb3VwS2V5CiBPU0FQZXJRdWVyeVN0YXRlCiBP U0luZm8KIE9TU0xDaXBoZXIKLS0gCjIuNDQuMAoK --------------e8Hdmy4jnGQ6as0lvJNbF0h5 Content-Type: text/plain; charset=UTF-8; name="v24-0002-Teach-generate_bitmap_or_paths-to-build-BitmapOr-pat.patch" Content-Disposition: attachment; filename*0="v24-0002-Teach-generate_bitmap_or_paths-to-build-BitmapOr-pa"; filename*1="t.patch" Content-Transfer-Encoding: base64 RnJvbSAzNzgzMWViNDdmZTg5MGQ0MWU1ZjY2YmVkYzVkNjE2YzBmMWFkNTcwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmV5IFYuIExlcGlraG92IiA8YS5sZXBpa2hv dkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogV2VkLCAxMyBNYXIgMjAyNCAxMjoyNjowMiArMDcw MApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBUZWFjaCBnZW5lcmF0ZV9iaXRtYXBfb3JfcGF0aHMg dG8gYnVpbGQgQml0bWFwT3IgcGF0aHMKIG92ZXIgU0FPUCBjbGF1c2VzLgoKTGlrZXdpc2Ug T1IgY2xhdXNlcywgZGlzY292ZXIgU0FPUCBhcnJheSBhbmQgdHJ5IHRvIHNwbGl0IGl0cyBl bGVtZW50cwpiZXR3ZWVuIHNtYWxsZXIgc2l6ZWQgYXJyYXlzIHRvIGZpdCBhIHNldCBvZiBw YXJ0aWFsIGluZGV4ZXMuCi0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAg ICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRo LmMgICAgICB8ICA4MiArKysrKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0 ZXN0LmMgICAgICB8ICAzNyArKysKIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Jlc3Ry aWN0aW5mby5jICB8ICAxMyArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgg ICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jlc3RyaWN0aW5mby5o ICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4 Lm91dCB8ICAyNCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZWxlY3Qub3V0ICAg ICAgIHwgMjgwICsrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv c2VsZWN0LnNxbCAgICAgICAgICAgIHwgIDgyICsrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCA1 MDggaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IGYz ODRlZGRlMDUuLjU3NzI1NzQ2MzQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTU0ODYsNiArNTQ4Niw5 IEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxh Y2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICAgIFRoZSBncm91cGluZyB0 ZWNobmlxdWUgb2YgdGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBiYXNlZCBvbiB0aGUgZXF1aXZh bGVuY2Ugb2YgdmFyaWFibGUgc2lkZXMuCiAgICAgICAgIE9uZSBzaWRlIG9mIHN1Y2ggYW4g ZXhwcmVzc2lvbiBtdXN0IGJlIGEgY29uc3RhbnQgY2xhdXNlLCBhbmQgdGhlIG90aGVyIG11 c3QgY29udGFpbiBhIHZhcmlhYmxlIGNsYXVzZS4KICAgICAgICAgVGhlIGRlZmF1bHQgaXMg PGxpdGVyYWw+b248L2xpdGVyYWw+LgorICAgICAgICBBbHNvLCBkdXJpbmcgQml0bWFwU2Nh biBwYXRocyBnZW5lcmF0aW9uIGl0IGVuYWJsZXMgYW5hbHlzaXMgb2YgZWxlbWVudHMKKyAg ICAgICAgb2YgSU4gb3IgQU5ZIGNvbnN0YW50IGFycmF5cyB0byBjb3ZlciBzdWNoIGNsYXVz ZSB3aXRoIEJpdG1hcE9yIHNldCBvZgorICAgICAgICBwYXJ0aWFsIGluZGV4IHNjYW5zLgog ICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4IDMyYzZhOGJi ZGMuLmY3OGRhZTI1ZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRo L2luZHhwYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGgu YwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5oIgogI2lu Y2x1ZGUgIm9wdGltaXplci9wcmVwLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3Jlc3RyaWN0 aW5mby5oIgorI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5 c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3MuaCIKIApAQCAtMTIyMCwxMSAr MTIyMSw3MyBAQCBidWlsZF9wYXRoc19mb3JfT1IoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnJlbCwKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogRXhwYW5kIFNBT1Ag bm9kZSB0byB1c2UgaXQgaW4gYml0bWFwc2NhbiBwYXRoIGJ1aWxkaW5nIHJvdXRpbmUuCisg KgorICogSWYgUmVzdHJpY3RJbmZvIGlzIGFuIE9SIGJvb2wgZXhwcmVzc2lvbiwgZXh0cmFj dCBlYWNoIFNBT1AgZnJvbSB0aGUgbGlzdCBvZgorICogYXJndW1lbnRzLCBpZiBwb3NzaWJs ZS4KKyAqIFdvcmtpbmcgam9pbnRseSB3aXRoIHRoZSBUcmFuc2Zvcm1PckV4cHJUb0FOWSBy b3V0aW5lLCBpdCBwcm92aWRlcyBhIHVzZXIKKyAqIHdpdGggc29tZSBzb3J0IG9mIGluZGVw ZW5kZW5jZSBvZiB0aGUgcXVlcnkgcGxhbiBmcm9tIHRoZSBhcHByb2FjaCB0byB3cml0aW5n CisgKiBhbHRlcm5hdGl2ZXMgZm9yIHRoZSBzYW1lIGVudGl0eSBpbiB0aGUgV0hFUkUgc2Vj dGlvbi4KKyAqLworc3RhdGljIExpc3QgKgorZXh0cmFjdF9zYW9wX29ycyhQbGFubmVySW5m byAqcm9vdCwgUmVzdHJpY3RJbmZvICpyaW5mbykKK3sKKwlMaXN0CQkgICAqb3JsaXN0ID0g TklMOworCUxpc3QJCSAgICpyZXN1bHQgPSBOSUw7CisJTGlzdENlbGwJICAgKmxjOworCisJ QXNzZXJ0KElzQShyaW5mbywgUmVzdHJpY3RJbmZvKSk7CisKKwlpZiAocmVzdHJpY3Rpb25f aXNfb3JfY2xhdXNlKHJpbmZvKSkKKwkJb3JsaXN0ID0gKChCb29sRXhwciAqKSByaW5mby0+ b3JjbGF1c2UpLT5hcmdzOworCisJLyoKKwkgKiBEb24ndCBzcGVuZCBjeWNsZXMgaGVyZSBp ZiB0aGUgdHJhbnNmb3JtYXRpb24gaXMgZGlzYWJsZWQuCisJICogV2UgZG9uJ3QgYmVoYXZl IHN5bW1ldHJpY2FsbHkgaGVyZSB3aXRoIHRoZSBPUiAtPiBBTlkgdHJhbnNmb3JtYXRpb24s IHNlZQorCSAqIHRoZSBwcm9jZXNzX2R1cGxpY2F0ZV9vcnMgcm91dGluZSwgYmVjYXVzZSBv cmlnaW4gbGlzdCBvZiBPUnMgYW5kCisJICogcmVzdWx0aW5nIFNBT1AgYXJncyBsaXN0IGxl bmd0aHMgY2FuIGRpZmZlciBzaWduaWZpY2FudGx5LiBNb3Jlb3ZlciwKKwkgKiBIZXJlIHdl IGFscmVhZHkgbGltaXRlZCBieSB0aGUgTUFYX1NBT1BfQVJSQVlfU0laRSB2YWx1ZS4KKwkg Ki8KKwlpZiAob3JfdHJhbnNmb3JtYXRpb25fbGltaXQgPCAwKQorCQlyZXR1cm4gb3JsaXN0 OworCisJaWYgKHJlc3RyaWN0aW9uX2lzX3Nhb3BfY2xhdXNlKHJpbmZvKSkKKwl7CisJCXJl c3VsdCA9IHRyYW5zZm9ybV9zYW9wX3RvX29ycyhyb290LCByaW5mbyk7CisJCXJldHVybiBy ZXN1bHQ7CisJfQorCisJZm9yZWFjaChsYywgb3JsaXN0KQorCXsKKwkJRXhwciAqZXhwciA9 IChFeHByICopIGxmaXJzdChsYyk7CisKKwkJaWYgKElzQShleHByLCBSZXN0cmljdEluZm8p ICYmIHJlc3RyaWN0aW9uX2lzX3Nhb3BfY2xhdXNlKChSZXN0cmljdEluZm8gKikgZXhwcikp CisJCXsKKwkJCUxpc3QgKnN1Ymxpc3Q7CisKKwkJCXN1Ymxpc3QgPSBleHRyYWN0X3Nhb3Bf b3JzKHJvb3QsIChSZXN0cmljdEluZm8gKikgbGZpcnN0KGxjKSk7CisJCQlpZiAoc3VibGlz dCAhPSBOSUwpCisJCQl7CisJCQkJcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LCBzdWJs aXN0KTsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJLyogTmVlZCB0byByZXR1cm4gZXhw ciB0byB0aGUgcmVzdWx0IGxpc3QgKi8KKwkJfQorCisJCXJlc3VsdCA9IGxhcHBlbmQocmVz dWx0LCBleHByKTsKKwl9CisKKwlyZXR1cm4gcmVzdWx0OworfQorCiAvKgogICogZ2VuZXJh dGVfYml0bWFwX29yX3BhdGhzCi0gKgkJTG9vayB0aHJvdWdoIHRoZSBsaXN0IG9mIGNsYXVz ZXMgdG8gZmluZCBPUiBjbGF1c2VzLCBhbmQgZ2VuZXJhdGUKLSAqCQlhIEJpdG1hcE9yUGF0 aCBmb3IgZWFjaCBvbmUgd2UgY2FuIGhhbmRsZSB0aGF0IHdheS4gIFJldHVybiBhIGxpc3QK LSAqCQlvZiB0aGUgZ2VuZXJhdGVkIEJpdG1hcE9yUGF0aHMuCisgKgkJTG9vayB0aHJvdWdo IHRoZSBsaXN0IG9mIGNsYXVzZXMgdG8gZmluZCBPUiBhbmQgU0FPUCBjbGF1c2VzLCBhbmQK KyAqCQlFYWNoIHNhb3AgY2xhdXNlIGFyZSBzcGxpdHRlZCB0byBiZSBjb3ZlcmVkIGJ5IHBh cnRpYWwgaW5kZXhlcy4KKyAqCQlnZW5lcmF0ZSBhIEJpdG1hcE9yUGF0aCBmb3IgZWFjaCBv bmUgd2UgY2FuIGhhbmRsZSB0aGF0IHdheS4KKyAqCQlSZXR1cm4gYSBsaXN0IG9mIHRoZSBn ZW5lcmF0ZWQgQml0bWFwT3JQYXRocy4KICAqCiAgKiBvdGhlcl9jbGF1c2VzIGlzIGEgbGlz dCBvZiBhZGRpdGlvbmFsIGNsYXVzZXMgdGhhdCBjYW4gYmUgYXNzdW1lZCB0cnVlCiAgKiBm b3IgdGhlIHB1cnBvc2Ugb2YgZ2VuZXJhdGluZyBpbmRleHF1YWxzLCBidXQgYXJlIG5vdCB0 byBiZSBzZWFyY2hlZCBmb3IKQEAgLTEyNDcsMjAgKzEzMTAsMjUgQEAgZ2VuZXJhdGVfYml0 bWFwX29yX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJZm9y ZWFjaChsYywgY2xhdXNlcykKIAl7CiAJCVJlc3RyaWN0SW5mbyAqcmluZm8gPSBsZmlyc3Rf bm9kZShSZXN0cmljdEluZm8sIGxjKTsKLQkJTGlzdAkgICAqcGF0aGxpc3Q7CisJCUxpc3QJ ICAgKnBhdGhsaXN0ID0gTklMOwogCQlQYXRoCSAgICpiaXRtYXBxdWFsOwogCQlMaXN0Q2Vs bCAgICpqOworCQlMaXN0CSAgICpvcmxpc3QgPSBOSUw7CiAKLQkJLyogSWdub3JlIFJlc3Ry aWN0SW5mb3MgdGhhdCBhcmVuJ3QgT1JzICovCi0JCWlmICghcmVzdHJpY3Rpb25faXNfb3Jf Y2xhdXNlKHJpbmZvKSkKKwkJb3JsaXN0ID0gZXh0cmFjdF9zYW9wX29ycyhyb290LCByaW5m byk7CisJCWlmIChvcmxpc3QgPT0gTklMKQorCQkJLyogSWdub3JlIFJlc3RyaWN0SW5mbyB0 aGF0IGRvZXNuJ3QgcHJvdmlkZSBwcm9wZXIgT1IgbGlzdCAqLwogCQkJY29udGludWU7CiAK KwkJLyogU0FPUCBoYXZlIHNwbGl0dGVkLCByZW1vdmUgYWxyZWFkeSByZWR1bmRhbnQgY2xh dXNlICovCisJCWFsbF9jbGF1c2VzID0gbGlzdF9kZWxldGUoYWxsX2NsYXVzZXMsIHJpbmZv KTsKKwogCQkvKgogCQkgKiBXZSBtdXN0IGJlIGFibGUgdG8gbWF0Y2ggYXQgbGVhc3Qgb25l IGluZGV4IHRvIGVhY2ggb2YgdGhlIGFybXMgb2YKIAkJICogdGhlIE9SLCBlbHNlIHdlIGNh bid0IHVzZSBpdC4KIAkJICovCiAJCXBhdGhsaXN0ID0gTklMOwotCQlmb3JlYWNoKGosICgo Qm9vbEV4cHIgKikgcmluZm8tPm9yY2xhdXNlKS0+YXJncykKKwkJZm9yZWFjaChqLCBvcmxp c3QpCiAJCXsKIAkJCU5vZGUJICAgKm9yYXJnID0gKE5vZGUgKikgbGZpcnN0KGopOwogCQkJ TGlzdAkgICAqaW5kbGlzdDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL3ByZWR0ZXN0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5j CmluZGV4IDZlM2IzNzZmM2QuLmZlODg2MmIwYTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcHJlZHRlc3QuYwpAQCAtMTExLDYgKzExMSw0MyBAQCBzdGF0aWMgYm9vbCBvcGVy YXRvcl9zYW1lX3N1YmV4cHJzX2xvb2t1cChPaWQgcHJlZF9vcCwgT2lkIGNsYXVzZV9vcCwK IHN0YXRpYyBPaWQJZ2V0X2J0cmVlX3Rlc3Rfb3AoT2lkIHByZWRfb3AsIE9pZCBjbGF1c2Vf b3AsIGJvb2wgcmVmdXRlX2l0KTsKIHN0YXRpYyB2b2lkIEludmFsaWRhdGVPcHJQcm9vZkNh Y2hlQ2FsbEJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSk7 CiAKKy8qCisgKiBFeHBhbmQgYSBTQU9QIG9wZXJhdGlvbiBpbnRvIHRoZSBsaXN0IG9mIE9S IGV4cHJlc3Npb25zCisgKi8KK0xpc3QgKgordHJhbnNmb3JtX3Nhb3BfdG9fb3JzKFBsYW5u ZXJJbmZvICpyb290LCBSZXN0cmljdEluZm8gKnJpbmZvKQoreworCVByZWRJdGVySW5mb0Rh dGEJY2xhdXNlX2luZm87CisJTGlzdAkJCSAgICpvcmxpc3QgPSBOSUw7CisJTm9kZQkJCSAg ICpzYW9wID0gKE5vZGUgKikgcmluZm8tPmNsYXVzZTsKKworCUFzc2VydChJc0Eoc2FvcCwg U2NhbGFyQXJyYXlPcEV4cHIpKTsKKworCWlmIChwcmVkaWNhdGVfY2xhc3NpZnkoc2FvcCwg JmNsYXVzZV9pbmZvKSAhPSBDTEFTU19PUikKKwkJcmV0dXJuIE5JTDsKKworCWl0ZXJhdGVf YmVnaW4ocGl0ZW0sIHNhb3AsIGNsYXVzZV9pbmZvKQorCXsKKwkJUmVzdHJpY3RJbmZvICAg KnJpbmZvMTsKKworCQkvKiBQcmVkaWNhdGUgaXMgZm91bmQuIEFkZCB0aGUgZWxlbSB0byB0 aGUgc2FvcCBjbGF1c2UgKi8KKwkJQXNzZXJ0KElzQShwaXRlbSwgT3BFeHByKSk7CisKKwkJ LyogRXh0cmFjdCBjb25zdGFudCBmcm9tIHRoZSBleHByZXNzaW9uICovCisJCXJpbmZvMSA9 IG1ha2VfcmVzdHJpY3RpbmZvKHJvb3QsIChFeHByICopIGNvcHlPYmplY3QocGl0ZW0pLAor CQkJCQkJCQkgICByaW5mby0+aXNfcHVzaGVkX2Rvd24sCisJCQkJCQkJCSAgIHJpbmZvLT5o YXNfY2xvbmUsIHJpbmZvLT5pc19jbG9uZSwKKwkJCQkJCQkJICAgcmluZm8tPnBzZXVkb2Nv bnN0YW50LAorCQkJCQkJCQkgICByaW5mby0+c2VjdXJpdHlfbGV2ZWwsCisJCQkJCQkJCSAg IHJpbmZvLT5yZXF1aXJlZF9yZWxpZHMsCisJCQkJCQkJCSAgIHJpbmZvLT5pbmNvbXBhdGli bGVfcmVsaWRzLAorCQkJCQkJCQkgICByaW5mby0+b3V0ZXJfcmVsaWRzKTsKKwkJb3JsaXN0 ID0gbGFwcGVuZChvcmxpc3QsIHJpbmZvMSk7CisJfQorCWl0ZXJhdGVfZW5kKGNsYXVzZV9p bmZvKTsKKworCXJldHVybiBvcmxpc3Q7Cit9CiAKIC8qCiAgKiBwcmVkaWNhdGVfaW1wbGll ZF9ieQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVzdHJpY3Rp bmZvLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZXN0cmljdGluZm8uYwppbmRl eCAwYjQwNmU5MzM0Li4xZGFkMWRjNjU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvdXRpbC9yZXN0cmljdGluZm8uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9yZXN0cmljdGluZm8uYwpAQCAtNDIxLDYgKzQyMSwxOSBAQCByZXN0cmljdGlvbl9p c19vcl9jbGF1c2UoUmVzdHJpY3RJbmZvICpyZXN0cmljdGluZm8pCiAJCXJldHVybiBmYWxz ZTsKIH0KIAorYm9vbAorcmVzdHJpY3Rpb25faXNfc2FvcF9jbGF1c2UoUmVzdHJpY3RJbmZv ICpyZXN0cmljdGluZm8pCit7CisJaWYgKHJlc3RyaWN0aW5mby0+Y2xhdXNlICYmIElzQShy ZXN0cmljdGluZm8tPmNsYXVzZSwgU2NhbGFyQXJyYXlPcEV4cHIpKQorCXsKKwkJU2NhbGFy QXJyYXlPcEV4cHIgKnNhb3AgPSAoU2NhbGFyQXJyYXlPcEV4cHIgKikgcmVzdHJpY3RpbmZv LT5jbGF1c2U7CisKKwkJaWYgKHNhb3AtPnVzZU9yKQorCQkJcmV0dXJuIHRydWU7CisJfQor CXJldHVybiBmYWxzZTsKK30KKwogLyoKICAqIHJlc3RyaWN0aW9uX2lzX3NlY3VyZWx5X3By b21vdGFibGUKICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1p emVyLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKaW5kZXggNGM2MTM0 MDFkNi4uNGNhMjZmNjVkMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29w dGltaXplci5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaApAQCAt MjMsNiArMjMsNyBAQAogI2RlZmluZSBPUFRJTUlaRVJfSAogCiAjaW5jbHVkZSAibm9kZXMv cGFyc2Vub2Rlcy5oIgorI2luY2x1ZGUgIm9wdGltaXplci9yZXN0cmljdGluZm8uaCIKIAog LyoKICAqIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSBub2Rlcy9wYXRobm9kZXMuaCBoZXJl LCBiZWNhdXNlIG5vbi1wbGFubmVyCkBAIC0xNjEsNiArMTYyLDggQEAgZXh0ZXJuIExpc3Qg KmV4cGFuZF9mdW5jdGlvbl9hcmd1bWVudHMoTGlzdCAqYXJncywgYm9vbCBpbmNsdWRlX291 dF9hcmd1bWVudHMsCiAKIC8qIGluIHV0aWwvcHJlZHRlc3QuYzogKi8KIAorCitleHRlcm4g TGlzdCAqdHJhbnNmb3JtX3Nhb3BfdG9fb3JzKFBsYW5uZXJJbmZvICpyb290LCBSZXN0cmlj dEluZm8gKnJpbmZvKTsKIGV4dGVybiBib29sIHByZWRpY2F0ZV9pbXBsaWVkX2J5KExpc3Qg KnByZWRpY2F0ZV9saXN0LCBMaXN0ICpjbGF1c2VfbGlzdCwKIAkJCQkJCQkJIGJvb2wgd2Vh ayk7CiBleHRlcm4gYm9vbCBwcmVkaWNhdGVfcmVmdXRlZF9ieShMaXN0ICpwcmVkaWNhdGVf bGlzdCwgTGlzdCAqY2xhdXNlX2xpc3QsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRp bWl6ZXIvcmVzdHJpY3RpbmZvLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcmVzdHJpY3Rp bmZvLmgKaW5kZXggMWI0MmM4MzJjNS4uMmNkNWZiZjk0MyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL3Jlc3RyaWN0aW5mby5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGlt aXplci9yZXN0cmljdGluZm8uaApAQCAtMzQsNiArMzQsNyBAQCBleHRlcm4gUmVzdHJpY3RJ bmZvICptYWtlX3Jlc3RyaWN0aW5mbyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCSAg IFJlbGlkcyBvdXRlcl9yZWxpZHMpOwogZXh0ZXJuIFJlc3RyaWN0SW5mbyAqY29tbXV0ZV9y ZXN0cmljdGluZm8oUmVzdHJpY3RJbmZvICpyaW5mbywgT2lkIGNvbW1fb3ApOwogZXh0ZXJu IGJvb2wgcmVzdHJpY3Rpb25faXNfb3JfY2xhdXNlKFJlc3RyaWN0SW5mbyAqcmVzdHJpY3Rp bmZvKTsKK2V4dGVybiBib29sIHJlc3RyaWN0aW9uX2lzX3Nhb3BfY2xhdXNlKFJlc3RyaWN0 SW5mbyAqcmVzdHJpY3RpbmZvKTsKIGV4dGVybiBib29sIHJlc3RyaWN0aW9uX2lzX3NlY3Vy ZWx5X3Byb21vdGFibGUoUmVzdHJpY3RJbmZvICpyZXN0cmljdGluZm8sCiAJCQkJCQkJCQkJ CSAgIFJlbE9wdEluZm8gKnJlbCk7CiBleHRlcm4gTGlzdCAqZ2V0X2FjdHVhbF9jbGF1c2Vz KExpc3QgKnJlc3RyaWN0aW5mb19saXN0KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvY3JlYXRlX2luZGV4Lm91dAppbmRleCBlOWZiODJiNjRjLi4wZDljOTMzNGY5IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CkBAIC0xOTgw LDIzICsxOTgwLDI1IEBAIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiBFWFBMQUlOIChD T1NUUyBPRkYpCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogICBXSEVSRSBodW5kcmVk ID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMg PCAyKSBPUiB0aG91c2FuZCA9IDQxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEFnZ3JlZ2F0ZQogICAgLT4g IEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKLSAgICAgICAgIFJlY2hlY2sgQ29uZDogKCgo aHVuZHJlZCA9IDQyKSBBTkQgKCh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2Vy W10pKSBPUiAodGVudGhvdXMgPCAyKSkpIE9SICh0aG91c2FuZCA9IDQxKSkKKyAgICAgICAg IFJlY2hlY2sgQ29uZDogKCgoaHVuZHJlZCA9IDQyKSBBTkQgKCh0aG91c2FuZCA9IDQyKSBP UiAodGhvdXNhbmQgPSA5OSkgT1IgKHRlbnRob3VzIDwgMikpKSBPUiAodGhvdXNhbmQgPSA0 MSkpCiAgICAgICAgICAtPiAgQml0bWFwT3IKICAgICAgICAgICAgICAgIC0+ICBCaXRtYXBB bmQKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5r MV9odW5kcmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVu ZHJlZCA9IDQyKQogICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhv dXNfdGVudGhvdXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENv bmQ6ICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10pKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gNDIpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVu azFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6ICh0aG91c2FuZCA9IDk5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGVudGhvdXMgPCAyKQog ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3Rl bnRob3VzCiAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0 MSkKLSgxNCByb3dzKQorKDE2IHJvd3MpCiAKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsx CiAgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQg PSA5OSBPUiB0ZW50aG91cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7CkBAIC0yMDA4LDIwICsy MDEwLDIyIEBAIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiBFWFBMQUlOIChDT1NUUyBP RkYpCiBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogICBXSEVSRSBodW5kcmVkID0gNDIg QU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBB TkQgdGVudGhvdXMgPSAyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQWdncmVnYXRlCiAgICAtPiAg Qml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQotICAgICAgICAgUmVjaGVjayBDb25kOiAoKGh1 bmRyZWQgPSA0MikgQU5EICgodGhvdXNhbmQgPSBBTlkgKCd7NDIsNDF9Jzo6aW50ZWdlcltd KSkgT1IgKCh0aG91c2FuZCA9IDk5KSBBTkQgKHRlbnRob3VzID0gMikpKSkKKyAgICAgICAg IFJlY2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFORCAoKHRob3VzYW5kID0gNDIpIE9S ICh0aG91c2FuZCA9IDQxKSBPUiAoKHRob3VzYW5kID0gOTkpIEFORCAodGVudGhvdXMgPSAy KSkpKQogICAgICAgICAgLT4gIEJpdG1hcEFuZAogICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKICAgICAgICAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCiAgICAgICAgICAgICAgICAtPiAgQml0bWFwT3IK ICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90 aG91c190ZW50aG91cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KHRob3VzYW5kID0gQU5ZICgnezQyLDQxfSc6OmludGVnZXJbXSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0MikKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91 cworICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0g NDEpCiAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVu azFfdGhvdXNfdGVudGhvdXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENv bmQ6ICgodGhvdXNhbmQgPSA5OSkgQU5EICh0ZW50aG91cyA9IDIpKQotKDExIHJvd3MpCiso MTMgcm93cykKIAogU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKICAgV0hFUkUgaHVuZHJl ZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9SIHRob3VzYW5k ID0gOTkgQU5EIHRlbnRob3VzID0gMik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3NlbGVjdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NlbGVj dC5vdXQKaW5kZXggMzNhNmRjZWIwZS4uYjVmZGRlNDdhYyAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zZWxlY3Qub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc2VsZWN0Lm91dApAQCAtOTA3LDYgKzkwNywyODYgQEAgc2VsZWN0IHVuaXF1 ZTEsIHVuaXF1ZTIgZnJvbSBvbmVrMgogICAgICAgIDAgfCAgICAgOTk4CiAoMiByb3dzKQog CitTRVQgZW5hYmxlX3NlcXNjYW4gVE8gb2ZmOworU0VUIGVuYWJsZV9pbmRleHNjYW4gVE8g b2ZmOyAtLSBPbmx5IEJpdG1hcFNjYW4gaXMgYSBzdWJqZWN0IG1hdHRlciBoZXJlCitTRVQg b3JfdHJhbnNmb3JtYXRpb25fbGltaXQgPSAtMTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmluZ3UxID0gJ0EnIE9SIHN0cmlu Z3UxID0gJ0onOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgICAg ICAgUmVjaGVjayBDb25kOiAoKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSBPUiAoc3RyaW5ndTEg PSAnSic6Om5hbWUpKQorICAgICAgICAgRmlsdGVyOiAoKHN0cmluZ3UxID0gJ0EnOjpuYW1l KSBPUiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisg ICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAor ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3N0dTFfcHJ0 bAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHN0cmluZ3UxID0gJ0onOjpu YW1lKQorKDggcm93cykKKworLS0gV2l0aG91dCB0aGUgdHJhbnNmb3JtYXRpb24gb25seSBz ZXFzY2FuIHBvc3NpYmxlIGhlcmUKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlx dWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUyIDwgMSBBTkQgc3RyaW5n dTEgSU4gKCdBJywnSicpIEFORCBzdHJpbmd1MSA8ICdaJzsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgU2VxIFNjYW4gb24gb25lazIKKyAgIEZpbHRlcjogKCh1bmlxdWUyIDwg MSkgQU5EIChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkgQU5EIChzdHJpbmd1 MSA8ICdaJzo6bmFtZSkpCisoMiByb3dzKQorCistLSBVc2UgcGFydGlhbCBpbmRleGVzCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMgorV0hFUkUg c3RyaW5ndTEgSU4gKCdCJywnSicpIEFORCAoc3RyaW5ndTEgPSAnQScgT1IgdW5pcXVlMSA9 IDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIKKyAgICAgICAgIFJlY2hl Y2sgQ29uZDogKChzdHJpbmd1MSA8ICdCJzo6bmFtZSkgT1IgKHVuaXF1ZTEgPSAxKSkKKyAg ICAgICAgIEZpbHRlcjogKChzdHJpbmd1MSA9IEFOWSAoJ3tCLEp9Jzo6bmFtZVtdKSkgQU5E ICgoc3RyaW5ndTEgPSAnQSc6Om5hbWUpIE9SICh1bmlxdWUxID0gMSkpKQorICAgICAgICAg LT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g b25lazJfdTJfcHJ0bAorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IG9uZWsyX3UxX3BydGwKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlx dWUxID0gMSkKKyg4IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlx dWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxIDwgMSBPUiAoc3RyaW5n dTEgPSAnQScgT1Igc3RyaW5ndTEgPSAnSicpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFw IFNjYW4gb24gb25lazIKKyAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxIDwgMSkgT1IgKHN0 cmluZ3UxIDwgJ0InOjpuYW1lKSBPUiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpKQorICAgRmls dGVyOiAoKHVuaXF1ZTEgPCAxKSBPUiAoc3RyaW5ndTEgPSAnQSc6Om5hbWUpIE9SIChzdHJp bmd1MSA9ICdKJzo6bmFtZSkpCisgICAtPiAgQml0bWFwT3IKKyAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBD b25kOiAodW5pcXVlMSA8IDEpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g b25lazJfdTJfcHJ0bAorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsy X3N0dTFfcHJ0bAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHN0cmluZ3UxID0gJ0on OjpuYW1lKQorKDkgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1 ZTIsIHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgPSAxIE9SIHVuaXF1ZTIg PSBQSSgpOjppbnRlZ2VyOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgU2VxIFNjYW4gb24gb25lazIKKyAgIEZpbHRlcjogKCh1bmlxdWUxID0gMSkgT1IgKHVu aXF1ZTIgPSAzKSkKKygyIHJvd3MpCisKK1JFU0VUIG9yX3RyYW5zZm9ybWF0aW9uX2xpbWl0 OworLS0gT1IgPC0+IEFOWSB0cmFuc2Zvcm1hdGlvbiBtdXN0IGZpbmQgYSBwYXRoIHdpdGgg cGFydGlhbCBpbmRleGVzIHNjYW4KKy0tIHJlZ2FyZGxlc3MgdGhlIGNsYXVzZSByZXByZXNl bnRhdGlvbi4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9u ZWsyIFdIRVJFIHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0onOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAg Qml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgICAgICAgUmVjaGVjayBDb25kOiAoKHN0 cmluZ3UxIDwgJ0InOjpuYW1lKSBPUiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpKQorICAgICAg ICAgRmlsdGVyOiAoc3RyaW5ndTEgPSBBTlkgKCd7QSxKfSc6Om5hbWVbXSkpCisgICAgICAg ICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biBvbmVrMl91Ml9wcnRsCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo c3RyaW5ndTEgPSAnSic6Om5hbWUpCisoOCByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1MSBJTiAoJ0EnLCdK Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dy ZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICAgICAgICBSZWNo ZWNrIENvbmQ6ICgoc3RyaW5ndTEgPCAnQic6Om5hbWUpIE9SIChzdHJpbmd1MSA9ICdKJzo6 bmFtZSkpCisgICAgICAgICBGaWx0ZXI6IChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFt ZVtdKSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyAgICAgICAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwKKyAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6IChzdHJpbmd1MSA9ICdKJzo6bmFtZSkKKyg4IHJvd3MpCisKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmlu Z3UxID0gQU5ZICgne0EsSn0nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gb25l azIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzdHJpbmd1MSA8ICdCJzo6bmFtZSkgT1Ig KHN0cmluZ3UxID0gJ0onOjpuYW1lKSkKKyAgICAgICAgIEZpbHRlcjogKHN0cmluZ3UxID0g QU5ZICgne0EsSn0nOjpuYW1lW10pKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAorICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3N0dTFfcHJ0bAorICAg ICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHN0cmluZ3UxID0gJ0onOjpuYW1lKQor KDggcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00g b25lazIgV0hFUkUgc3RyaW5ndTEgSU4gKCdBJykgT1Igc3RyaW5ndTEgSU4gKCdKJyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUK KyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICAgICAgICBSZWNoZWNrIENv bmQ6ICgoc3RyaW5ndTEgPCAnQic6Om5hbWUpIE9SIChzdHJpbmd1MSA9ICdKJzo6bmFtZSkp CisgICAgICAgICBGaWx0ZXI6IChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkK KyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6IChzdHJpbmd1MSA9ICdKJzo6bmFtZSkKKyg4IHJvd3MpCisKKy0tIERvbid0IHNj YW4gcGFydGlhbCBpbmRleGVzIGJlY2F1c2Ugb2YgZXh0cmEgdmFsdWUuCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1MSBJ TiAoJ0EnLCAnSicsICdDJyk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIFNlcSBTY2FuIG9u IG9uZWsyCisgICAgICAgICBGaWx0ZXI6IChzdHJpbmd1MSA9IEFOWSAoJ3tBLEosQ30nOjpu YW1lW10pKQorKDMgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1 ZTIgRlJPTSBvbmVrMgorV0hFUkUgc3RyaW5ndTEgSU4gKCdBJywgJ0EnKSBBTkQgKHN0cmlu Z3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0EnKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAg UmVjaGVjayBDb25kOiAoc3RyaW5ndTEgPCAnQic6Om5hbWUpCisgICBGaWx0ZXI6ICgoc3Ry aW5ndTEgPSBBTlkgKCd7QSxBfSc6Om5hbWVbXSkpIEFORCAoc3RyaW5ndTEgPSAnQSc6Om5h bWUpKQorICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyg0IHJv d3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBG Uk9NIG9uZWsyCitXSEVSRSB1bmlxdWUyIDwgMSBBTkQgc3RyaW5ndTEgSU4gKCdBJywnSicp IEFORCBzdHJpbmd1MSA8ICdaJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFwIEhl YXAgU2NhbiBvbiBvbmVrMgorICAgUmVjaGVjayBDb25kOiAoKCh1bmlxdWUyIDwgMSkgQU5E IChzdHJpbmd1MSA8ICdCJzo6bmFtZSkpIE9SICgoc3RyaW5ndTEgPSAnSic6Om5hbWUpIEFO RCAoc3RyaW5ndTEgPCAnWic6Om5hbWUpKSkKKyAgIEZpbHRlcjogKCh1bmlxdWUyIDwgMSkg QU5EIChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkpCisgICAtPiAgQml0bWFw T3IKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91Ml9wcnRsCisg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA8IDEpCisgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoKHN0cmluZ3UxID0gJ0onOjpuYW1lKSBBTkQgKHN0cmluZ3UxIDwgJ1on OjpuYW1lKSkKKyg4IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlx dWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxID0gMSBPUiB1bmlxdWUx ID0gUEkoKTo6aW50ZWdlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIG9u ZWsyCisgICBSZWNoZWNrIENvbmQ6ICh1bmlxdWUxID0gQU5ZICgnezEsM30nOjppbnRlZ2Vy W10pKQorICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UxX3BydGwKKyAgICAg ICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gQU5ZICgnezEsM30nOjppbnRlZ2VyW10pKQor KDQgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmlu Z3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgSU4gKDEsIFBJKCk6OmludGVnZXIpOwor ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIKKyAgIFJlY2hlY2sgQ29u ZDogKHVuaXF1ZTEgPSBBTlkgKCd7MSwzfSc6OmludGVnZXJbXSkpCisgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gb25lazJfdTFfcHJ0bAorICAgICAgICAgSW5kZXggQ29uZDogKHVu aXF1ZTEgPSBBTlkgKCd7MSwzfSc6OmludGVnZXJbXSkpCisoNCByb3dzKQorCistLSBEb24n dCBhcHBseSB0aGUgb3B0aW1pemF0aW9uIHRvIGNsYXVzZXMsIGNvbnRhaW5pbmcgdm9sYXRp bGUgZnVuY3Rpb25zCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMixzdHJp bmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxID0gKHJhbmRvbSgpKjIpOjppbnRlZ2Vy IE9SIHVuaXF1ZTEgPSAocmFuZG9tKCkqMyk6OmludGVnZXI7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIG9uZWsy CisgICBGaWx0ZXI6ICgodW5pcXVlMSA9ICgocmFuZG9tKCkgKiAnMic6OmRvdWJsZSBwcmVj aXNpb24pKTo6aW50ZWdlcikgT1IgKHVuaXF1ZTEgPSAoKHJhbmRvbSgpICogJzMnOjpkb3Vi bGUgcHJlY2lzaW9uKSk6OmludGVnZXIpKQorKDIgcm93cykKKworRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIHVuaXF1ZTIsc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVl MSBJTiAoKHJhbmRvbSgpKjIpOjppbnRlZ2VyLCAocmFuZG9tKCkqMyk6OmludGVnZXIpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2Nh biBvbiBvbmVrMgorICAgRmlsdGVyOiAodW5pcXVlMSA9IEFOWSAoQVJSQVlbKChyYW5kb20o KSAqICcyJzo6ZG91YmxlIHByZWNpc2lvbikpOjppbnRlZ2VyLCAoKHJhbmRvbSgpICogJzMn Ojpkb3VibGUgcHJlY2lzaW9uKSk6OmludGVnZXJdKSkKKygyIHJvd3MpCisKKy0tIENvbWJp bmUgZGlmZmVyZW50IHNhb3BzLiBTb21lIG9mIHRoZW0gZG9lc250JyBmaXQgYSBzZXQgb2Yg cGFydGlhbCBpbmRleGVzLAorLS0gYnV0IG90aGVyIGZpdHMuCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgdW5pcXVlMixzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRQorICB1bmlx dWUxIElOICgxLDIsMjEpIEFORAorICAoc3RyaW5ndTEgSU4gKCdBJywnSicpIE9SIHVuaXF1 ZTEgSU4gKDMsNCkgT1Igc3RyaW5ndTEgPSAnSicpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24g b25lazIKKyAgIFJlY2hlY2sgQ29uZDogKChzdHJpbmd1MSA8ICdCJzo6bmFtZSkgT1IgKHN0 cmluZ3UxID0gJ0onOjpuYW1lKSBPUiAodW5pcXVlMSA9IDMpIE9SICh1bmlxdWUxID0gNCkg T1IgKHN0cmluZ3UxID0gJ0onOjpuYW1lKSkKKyAgIEZpbHRlcjogKCh1bmlxdWUxID0gQU5Z ICgnezEsMiwyMX0nOjppbnRlZ2VyW10pKSBBTkQgKChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9 Jzo6bmFtZVtdKSkgT1IgKHVuaXF1ZTEgPSBBTlkgKCd7Myw0fSc6OmludGVnZXJbXSkpIE9S IChzdHJpbmd1MSA9ICdKJzo6bmFtZSkpKQorICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAorICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3N0dTFfcHJ0bAorICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHN0cmluZ3UxID0gJ0onOjpuYW1lKQorICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIG9uZWsyX3UxX3BydGwKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 ICh1bmlxdWUxID0gMykKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVr Ml91MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDQpCisg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfc3R1MV9wcnRsCisgICAg ICAgICAgICAgICBJbmRleCBDb25kOiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpCisoMTMgcm93 cykKKworLS0gQ2hlY2sgcmVjdXJzaXZlIGNvbWJpbmF0aW9uIG9mIE9SIGFuZCBTQU9QIGV4 cHJlc3Npb25zCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5n dTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA8IDEgT1IgKHN0cmluZ3UxID0gJ0EnIE9S IHN0cmluZ3UxID0gJ0onKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIG9u ZWsyCisgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA8IDEpIE9SIChzdHJpbmd1MSA8ICdC Jzo6bmFtZSkgT1IgKHN0cmluZ3UxID0gJ0onOjpuYW1lKSkKKyAgIEZpbHRlcjogKCh1bmlx dWUxIDwgMSkgT1IgKHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpuYW1lW10pKSkKKyAgIC0+ ICBCaXRtYXBPcgorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3Ux X3BydGwKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxIDwgMSkKKyAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91Ml9wcnRsCisgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpCisoOSByb3dzKQorCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgor V0hFUkUgKHVuaXF1ZTEgPCAxIE9SIHN0cmluZ3UxIElOICgnQScsJ0onKSk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgQml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgUmVjaGVjayBDb25kOiAoKHVu aXF1ZTEgPCAxKSBPUiAoc3RyaW5ndTEgPCAnQic6Om5hbWUpIE9SIChzdHJpbmd1MSA9ICdK Jzo6bmFtZSkpCisgICBGaWx0ZXI6ICgodW5pcXVlMSA8IDEpIE9SIChzdHJpbmd1MSA9IEFO WSAoJ3tBLEp9Jzo6bmFtZVtdKSkpCisgICAtPiAgQml0bWFwT3IKKyAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAodW5pcXVlMSA8IDEpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gb25lazJfdTJfcHJ0bAorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9u ZWsyX3N0dTFfcHJ0bAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHN0cmluZ3UxID0g J0onOjpuYW1lKQorKDkgcm93cykKKworLS0gQWx0aG91Z2ggU0FPUCBkb2Vzbid0IGZpdCBw YXJ0aWFsIGluZGV4ZXMgZnVsbHksIHdlIGNhbiB1c2UgYW5kZWQgT1IgY2xhdXNlCistLSB0 byBzY2FuIGFub3RoZXIgY291cGxlIG9mIHBhcnRpYWwgaW5kZXhlcy4KK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyCitXSEVSRSBzdHJpbmd1MSBJ TiAoJ0InLCdKJykgQU5EIChzdHJpbmd1MSA9ICdBJyBPUiB1bmlxdWUxID0gMSk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAt PiAgQml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgICAgICAgUmVjaGVjayBDb25kOiAo KHN0cmluZ3UxIDwgJ0InOjpuYW1lKSBPUiAodW5pcXVlMSA9IDEpKQorICAgICAgICAgRmls dGVyOiAoKHN0cmluZ3UxID0gQU5ZICgne0IsSn0nOjpuYW1lW10pKSBBTkQgKChzdHJpbmd1 MSA9ICdBJzo6bmFtZSkgT1IgKHVuaXF1ZTEgPSAxKSkpCisgICAgICAgICAtPiAgQml0bWFw T3IKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91Ml9w cnRsCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTFf cHJ0bAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAxKQor KDggcm93cykKKworUkVTRVQgZW5hYmxlX2luZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFz Y2FuOwogLS0KIC0tIFRlc3Qgc29tZSBjb3JuZXIgY2FzZXMgdGhhdCBoYXZlIGJlZW4ga25v d24gdG8gY29uZnVzZSB0aGUgcGxhbm5lcgogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3NlbGVjdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zZWxlY3Quc3Fs CmluZGV4IDAxOWYxZTc2NzMuLjEwZWQ2ZjBhOWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3NlbGVjdC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2VsZWN0 LnNxbApAQCAtMjM0LDYgKzIzNCw4OCBAQCBzZWxlY3QgdW5pcXVlMSwgdW5pcXVlMiBmcm9t IG9uZWsyCiBzZWxlY3QgdW5pcXVlMSwgdW5pcXVlMiBmcm9tIG9uZWsyCiAgIHdoZXJlICh1 bmlxdWUyID0gMTEgYW5kIHN0cmluZ3UxIDwgJ0InKSBvciB1bmlxdWUxID0gMDsKIAorU0VU IGVuYWJsZV9zZXFzY2FuIFRPIG9mZjsKK1NFVCBlbmFibGVfaW5kZXhzY2FuIFRPIG9mZjsg LS0gT25seSBCaXRtYXBTY2FuIGlzIGEgc3ViamVjdCBtYXR0ZXIgaGVyZQorU0VUIG9yX3Ry YW5zZm9ybWF0aW9uX2xpbWl0ID0gLTE7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Y291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1MSA9ICdBJyBPUiBzdHJpbmd1MSA9 ICdKJzsKKy0tIFdpdGhvdXQgdGhlIHRyYW5zZm9ybWF0aW9uIG9ubHkgc2Vxc2NhbiBwb3Nz aWJsZSBoZXJlCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5n dTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMiA8IDEgQU5EIHN0cmluZ3UxIElOICgnQScs J0onKSBBTkQgc3RyaW5ndTEgPCAnWic7CistLSBVc2UgcGFydGlhbCBpbmRleGVzCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMgorV0hFUkUgc3Ry aW5ndTEgSU4gKCdCJywnSicpIEFORCAoc3RyaW5ndTEgPSAnQScgT1IgdW5pcXVlMSA9IDEp OworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZST00g b25lazIKK1dIRVJFIHVuaXF1ZTEgPCAxIE9SIChzdHJpbmd1MSA9ICdBJyBPUiBzdHJpbmd1 MSA9ICdKJyk7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5n dTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA9IDEgT1IgdW5pcXVlMiA9IFBJKCk6Omlu dGVnZXI7CitSRVNFVCBvcl90cmFuc2Zvcm1hdGlvbl9saW1pdDsKKworLS0gT1IgPC0+IEFO WSB0cmFuc2Zvcm1hdGlvbiBtdXN0IGZpbmQgYSBwYXRoIHdpdGggcGFydGlhbCBpbmRleGVz IHNjYW4KKy0tIHJlZ2FyZGxlc3MgdGhlIGNsYXVzZSByZXByZXNlbnRhdGlvbi4KK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmlu Z3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0onOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIGNvdW50KCopIEZST00gb25lazIgV0hFUkUgc3RyaW5ndTEgSU4gKCdBJywnSicpOwor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIgV0hFUkUg c3RyaW5ndTEgPSBBTlkgKCd7QSxKfScpOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IGNvdW50KCopIEZST00gb25lazIgV0hFUkUgc3RyaW5ndTEgSU4gKCdBJykgT1Igc3RyaW5n dTEgSU4gKCdKJyk7CisKKy0tIERvbid0IHNjYW4gcGFydGlhbCBpbmRleGVzIGJlY2F1c2Ug b2YgZXh0cmEgdmFsdWUuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikg RlJPTSBvbmVrMiBXSEVSRSBzdHJpbmd1MSBJTiAoJ0EnLCAnSicsICdDJyk7CitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiBGUk9NIG9uZWsyCitXSEVSRSBzdHJpbmd1 MSBJTiAoJ0EnLCAnQScpIEFORCAoc3RyaW5ndTEgPSAnQScgT1Igc3RyaW5ndTEgPSAnQScp OworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJP TSBvbmVrMgorV0hFUkUgdW5pcXVlMiA8IDEgQU5EIHN0cmluZ3UxIElOICgnQScsJ0onKSBB TkQgc3RyaW5ndTEgPCAnWic7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVl Miwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA9IDEgT1IgdW5pcXVlMSA9 IFBJKCk6OmludGVnZXI7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiwg c3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSBJTiAoMSwgUEkoKTo6aW50ZWdl cik7CisKKy0tIERvbid0IGFwcGx5IHRoZSBvcHRpbWl6YXRpb24gdG8gY2xhdXNlcywgY29u dGFpbmluZyB2b2xhdGlsZSBmdW5jdGlvbnMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCB1bmlxdWUyLHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgPSAocmFuZG9t KCkqMik6OmludGVnZXIgT1IgdW5pcXVlMSA9IChyYW5kb20oKSozKTo6aW50ZWdlcjsKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLHN0cmluZ3UxIEZST00gb25lazIK K1dIRVJFIHVuaXF1ZTEgSU4gKChyYW5kb20oKSoyKTo6aW50ZWdlciwgKHJhbmRvbSgpKjMp OjppbnRlZ2VyKTsKKworLS0gQ29tYmluZSBkaWZmZXJlbnQgc2FvcHMuIFNvbWUgb2YgdGhl bSBkb2VzbnQnIGZpdCBhIHNldCBvZiBwYXJ0aWFsIGluZGV4ZXMsCistLSBidXQgb3RoZXIg Zml0cy4KKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIsc3RyaW5ndTEg RlJPTSBvbmVrMgorV0hFUkUKKyAgdW5pcXVlMSBJTiAoMSwyLDIxKSBBTkQKKyAgKHN0cmlu Z3UxIElOICgnQScsJ0onKSBPUiB1bmlxdWUxIElOICgzLDQpIE9SIHN0cmluZ3UxID0gJ0on KTsKKworLS0gQ2hlY2sgcmVjdXJzaXZlIGNvbWJpbmF0aW9uIG9mIE9SIGFuZCBTQU9QIGV4 cHJlc3Npb25zCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5n dTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA8IDEgT1IgKHN0cmluZ3UxID0gJ0EnIE9S IHN0cmluZ3UxID0gJ0onKTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUy LCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSAodW5pcXVlMSA8IDEgT1Igc3RyaW5ndTEg SU4gKCdBJywnSicpKTsKKy0tIEFsdGhvdWdoIFNBT1AgZG9lc24ndCBmaXQgcGFydGlhbCBp bmRleGVzIGZ1bGx5LCB3ZSBjYW4gdXNlIGFuZGVkIE9SIGNsYXVzZQorLS0gdG8gc2NhbiBh bm90aGVyIGNvdXBsZSBvZiBwYXJ0aWFsIGluZGV4ZXMuCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMgorV0hFUkUgc3RyaW5ndTEgSU4gKCdCJywn SicpIEFORCAoc3RyaW5ndTEgPSAnQScgT1IgdW5pcXVlMSA9IDEpOworCitSRVNFVCBlbmFi bGVfaW5kZXhzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKIC0tCiAtLSBUZXN0IHNv bWUgY29ybmVyIGNhc2VzIHRoYXQgaGF2ZSBiZWVuIGtub3duIHRvIGNvbmZ1c2UgdGhlIHBs YW5uZXIKIC0tCi0tIAoyLjQ0LjAKCg== --------------e8Hdmy4jnGQ6as0lvJNbF0h5--