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.96) (envelope-from ) id 1w3ICW-0015Jp-0k for pgsql-hackers@arkaria.postgresql.org; Thu, 19 Mar 2026 18:34:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w3ICU-001udT-1z for pgsql-hackers@arkaria.postgresql.org; Thu, 19 Mar 2026 18:34:31 +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.96) (envelope-from ) id 1w3ICU-001udJ-0Y for pgsql-hackers@lists.postgresql.org; Thu, 19 Mar 2026 18:34:30 +0000 Received: from mail-qv1-xf33.google.com ([2607:f8b0:4864:20::f33]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w3ICR-000000003Bn-1ie3 for pgsql-hackers@lists.postgresql.org; Thu, 19 Mar 2026 18:34:30 +0000 Received: by mail-qv1-xf33.google.com with SMTP id 6a1803df08f44-89c5446f3caso15159186d6.2 for ; Thu, 19 Mar 2026 11:34:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1773945266; x=1774550066; darn=lists.postgresql.org; h=autocrypt:subject:to:content-language:from:user-agent:mime-version :date:message-id:from:to:cc:subject:date:message-id:reply-to; bh=J6F6YbjAqtHAd5VoHgpYuu4G3FPqaF38EGTIYeNixRw=; b=hU+KQW9sn/JDTLCMWzDOnZoYTk3ul2a23LqOeQdbR1DauAEj2HLNzPHuWzypkSr/tf QP6qeT1ch9ltONNKSRMjt3HiMxy92GKl3UKQTfSNS5L9RSxH39/PiTDrbHWSn8g7jub2 vozli0qNqmeYpMI1CCm3wyaHDj+2Xctsw0Nx6kZr9i+IBHVRZ+XQTBDOOyt7sT0Bpo8r hoNxlSqoZu5TBQyGXK2ozLVyE/L0SINO3jKdwP4XFlfP3J+hCUrnDeVnhzDeCtw3/3Px qx2CEtbru7/sS9sLOYrAR5WWnugsPxRwojr30BwIlDpwUpZKOBCfTC1HASCl5kvLJTLr DgDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773945266; x=1774550066; h=autocrypt:subject:to:content-language:from:user-agent:mime-version :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=J6F6YbjAqtHAd5VoHgpYuu4G3FPqaF38EGTIYeNixRw=; b=NQ1lAPiqzexKU6nOMVqi2dDxBg3fQOhhQtfwbbgjKJbpB1NdPq2Xniou6WOEya32LY BqLH7AUdYiHU+toQfg7Q6qko7o6sralYvwPjVU+BUEd6N2wI8diazcSP3sOXUWMyhHuo bBcJ8hP5VhaluizzTYvpJA92Q64OmdFOgdeaySr9y+6ELhVCTe1CkpqAVHtVSutRrhPW hsAT2xPqUIbtK0KgUMpV4ngBjobJ01gLHCdzEpIrDxQF+UiUBBOewUJZERysyfBOVKWu JwyP2yNfyu3taRR2L16JdMt5ultWzAIjbeYK0T3N1QYP493+YK4ORFwYr2Du2/CszD1Z W+jg== X-Gm-Message-State: AOJu0YwBqwq6UNZF817ilaGRMuB7jfTRXq0+sv6I+uskAVVaFDrOVyEw L1DDSLULTuVXlWONHCcwPkjeHr/QBo4WdrLuVWqTk6CT5dWLIEePt9AAc5bn4jSSSAQtD0VZnwt CPzYc X-Gm-Gg: ATEYQzxuZeHHSsXgEzYd1+R12KhadtpfFVN1+EEQx0LR0izclaROV5fA6eMGBxTQ/Eb HlX2k8N1Ibr5kCHi6iHBguVUw1NRoD7/zIv5rB65VD0eRsnerFAwdlyCzxUbKOERifz2t+vXlDA m7fxOnCl741DLelWwLU7bkf3Is8scYyCJ1+omKNBgitctPZXPme0J2cr0ko9IcOJJIImxLjyGXx 8weNRSBr5nN6Y+7/JT7cBPeKWRy8436ennJmN/ioj4ONOdOyAZew9iXqDFuhe5RUea4EOWuH5WX thpIqCtKcTu2melXKjpCIbAEC8oy8/chLLQLhCuD8th700mcuQleXhDaGj4j397J6PH1O9Nv/NH JL/gZiH4duVO1wICJHL2oKPXiYwNXth46/rlK3qbFX5kRuPKUhFBIgwgAlcyFcr/OhouAVHUAvn hD5wBtt1Bb3kWIdk3GKj7BOVzAtAAXlg== X-Received: by 2002:a05:6214:4e19:b0:89c:4f50:eb91 with SMTP id 6a1803df08f44-89c859be869mr2190136d6.8.1773945265058; Thu, 19 Mar 2026 11:34:25 -0700 (PDT) Received: from ?IPV6:2605:a601:a6b0:500::1cb? ([2605:a601:a6b0:500::1cb]) by smtp.googlemail.com with ESMTPSA id 6a1803df08f44-89c8521311esm3020446d6.7.2026.03.19.11.34.24 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 19 Mar 2026 11:34:24 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------FcdFh9wzeftJtDGwFgHbDoc4" Message-ID: Date: Thu, 19 Mar 2026 14:34:22 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Andrew Dunstan Content-Language: en-US To: PostgreSQL Hackers Subject: pg_get__*_ddl consolidation Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAlwQTAQgAQQIbAwIX gAIZAQULCQgHAwUVCgkICwUWAgMBAAIeBRYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNGd BQkdEO8nAAoJEJn6f8tZ/DuBq74H/jkTR4Zi3stbw+xC7v2u3QozssK7MYPL2AsVfh7OealS h182fiWXpfvmmAB7WUHbhk9GC2RAOnHI/2d2jgKaMLAHsGYOT0YopTVIwRY43fCw/mK67yxc wmDcX+zyKfLaivNbf5A7QPLNwda98bEAMSJ8Sn652Uc6cA8t3uKGsVzbRBQOoYzjgvBCfSrE 9ql3PDNg0l4BfAqabd2f70ZUm9VAMEPrgv/v2xI7M2XiL4g5BVmqLCOwxLM8RMCotCuoweUr VO43DeBCIDwLxotMJKvGWDjBzQYlU1NPUAtNcz/gN9ITUe1VUGjyvGj4u1lxBOcQQUw7l1+T 5moZ4iZxXzvOwE0ETspYWQEIANGc4zQULOxhbqO2dyD51YhqCNRmm9oKWaqf+wmW4tpDe/VV cxAnNizd4LWCHfzpb5cHAtGkOPePMfzWVf6nvdF7d3eglbtf59+zG7O7llV0xSSoFiieQBsr GvqDInXYX/4mRRXMtyhM353/tixC9RWLs1oofyYmCPPXXY7h9R7en3B8BoVrRFcdzlIY/NFN hFGW/9dkEiGjgna2Rk6e15kln4ZvFBWUg23p93w/pqXcxY6+k/8TEk+C4R+M6w7o2PLGOjdZ +kPiUcw5H85zf/yZJwQXzisXaNduwWB6Vads9YC9dj6kPR1c4VGRqAaYL++LAEOqrlvm2Tvq QqZRtnEAEQEAAcLAfAQYAQgAJgIbDBYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNI2BQkd EODdAAoJEJn6f8tZ/DuBfw0IAKTsfD40teP/pp+bsLLMSxPXUYrrprTj7WFB5v61p6dkpSr/ qXmMlyahdxQFaPmfVgVirB1Vk/kHiWNnnGjfUV9nB2Zg9LI0Xb9/ts3LsUiRWXzG3tkMY6XL vsVOxW4XFRND9l2q+WW93aZ1DZl+fqWfYgMvsusFRhmGFOKTRfKPta2Pkv+AhA24N4+PrR5p bU4k2MO8PAGiK8eaYKGFG1bHKuAvoDoF7WXJ3FHxuWqLnKEt4dfOLm5pAe3zq1Lt6q8azT9i QWGpSAK5vQUWQHBHpiDjdPeqKZ6HiAXIIKfSmb+jrvXBqoP+D6/K7rUjG2aXiRtTIAXms9sm VRu7cmw= 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. --------------FcdFh9wzeftJtDGwFgHbDoc4 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Greetings Euler Taveira and I have been working on consolidating these patches. These patches came out of a suggestion from me some time back [1], and I used it as the base for some work at an EDB internal program. Perhaps I was motivated a bit by Mao's dictum "Let a hundred flowers bloom; let a hundred schools of thought contend." I wanted to see what people would come up with. Therefore, if this has seemed a bit chaotic, I apologize, both to the authors and to the list. I won't do things quite this way in future. Rather than adding to the already huge ruleutils.c, we decided to create a new ddlutils.c file to contain these functions and their associated infrastructure. There is in fact a fairly clean separation between these functions and ruleutils. We just need to expose one function in ruleutils. We (Euler and I) decided to concentrate on setting up common infrastucture and ensuring a common argument and result structure. In this first round, we are proposing to add functions for getting the DDL for databases, tablespaces, and roles. We decided to stop there for now. This sets up a good basis for dealing with more object types in future. To the authors of the remaining patches - rest assured you have not been forgotten. Patch 1 sets up the functions used by the rest for option parsing. see [2] Patch 2 implements pg_get_role_dll see[3] Patch 3 implements pg_get_tabespace_ddl see [4] Patch 4 implements pg_get_database_ddl see [2] cheers andrew [1] https://www.postgresql.org/message-id/flat/945db7c5-be75-45bf-b55b-cb1e56f2e3e9%40dunslane.net [2] https://www.postgresql.org/message-id/flat/CANxoLDc6FHBYJvcgOnZyS+jF0NUo3Lq_83-rttBuJgs9id_UDg@mail.gmail.com [3] https://www.postgresql.org/message-id/flat/4c5f895e-3281-48f8-b943-9228b7da6471@gmail.com [4] https://www.postgresql.org/message-id/flat/CAKWEB6rmnmGKUA87Zmq-s=b3Scsnj02C0kObQjnbL2ajfPWGEw@mail.gmail.com -- Andrew Dunstan EDB: https://www.enterprisedb.com --------------FcdFh9wzeftJtDGwFgHbDoc4 Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-DDL-option-parsing-infrastructure-for-pg_get_-_d.patch" Content-Disposition: attachment; filename*0="0001-Add-DDL-option-parsing-infrastructure-for-pg_get_-_d.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwMzkyYzdhOTE1ZGQxMmZiZDI2NDU4NmNkY2M0MjE5NWQ0NjVkYmUxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVGh1LCAxOSBNYXIgMjAyNiAwOTo1MDo0MSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMS80XSBBZGQgRERMIG9wdGlvbiBwYXJzaW5nIGluZnJhc3RydWN0dXJlIGZvciBw Z19nZXRfKl9kZGwKIGZ1bmN0aW9ucwoKQWRkIHBhcnNlX2RkbF9vcHRpb25zKCkgYW5kIGFw cGVuZF9kZGxfb3B0aW9uKCkgaGVscGVyIGZ1bmN0aW9ucyBpbiBhCm5ldyBkZGx1dGlscy5j IGZpbGUgdGhhdCBwcm92aWRlIGNvbW1vbiBvcHRpb24gcGFyc2luZyBmb3IgdGhlCnBnX2dl dF8qX2RkbCBmYW1pbHkgb2YgZnVuY3Rpb25zIHdoaWNoIHdpbGwgZm9sbG93IGluIGxhdGVy IHBhdGNoZXMuClRoZXNlIGFjY2VwdCBWQVJJQURJQyB0ZXh0IGFyZ3VtZW50cyBhcyBhbHRl cm5hdGluZyBuYW1lL3ZhbHVlIHBhaXJzLgoKQ2FsbGVycyBkZWNsYXJlIGFuIGFycmF5IG9m IERkbE9wdGlvbiBkZXNjcmlwdG9ycyBzcGVjaWZ5aW5nIHRoZQphY2NlcHRlZCBvcHRpb24g bmFtZXMgYW5kIHRoZWlyIHR5cGVzIChib29sZWFuLCB0ZXh0LCBvciBpbnRlZ2VyKS4KcGFy c2VfZGRsX29wdGlvbnMoKSBtYXRjaGVzIGVhY2ggc3VwcGxpZWQgcGFpciBhZ2FpbnN0IHRo ZSBhcnJheSwKdmFsaWRhdGVzIHRoZSB2YWx1ZSwgYW5kIGZpbGxzIGluIHRoZSByZXN1bHQg ZmllbGRzLiAgVGhpcwpkZXNjcmlwdG9yLWJhc2VkIHNjaGVtZSBpcyBiYXNlZCBvbiBhbiBp ZGVhIGZyb20gRXVsZXIgVGF2ZWlyYS4KClRoaXMgaXMgcGxhY2VkIGluIGEgbmV3IGRkbHV0 aWxzLmMgZmlsZSB3aGljaCB3aWxsIGNvbnRhaW4gdGhlCnBnX2dldF8qX2RkbCBmdW5jdGlv bnMuCgpBdXRob3I6IEFrc2hheSBKb3NoaSA8YWtzaGF5Lmpvc2hpQGVudGVycHJpc2VkYi5j b20+CkNvLWF1dGhvcmVkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5l dD4KUmV2aWV3ZWQtYnk6IEV1bGVyIFRhdmVpcmEgPGV1bGVyQGV1bGVydG8uY29tPgpEaXNj dXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FL V0VCNnJtbm1HS1VBODdabXEtcz1iM1Njc25qMDJDMGtPYlFqbmJMMmFqZlBXR0V3QG1haWwu Z21haWwuY29tCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3Nh Z2UtaWQvZmxhdC80YzVmODk1ZS0zMjgxLTQ4ZjgtYjk0My05MjI4YjdkYTY0NzFAZ21haWwu Y29tCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQv ZmxhdC9DQU54b0xEYzZGSEJZSnZjZ09uWnlTK2pGME5VbzNMcV84My1ydHRCdUpnczlpZF9V RGdAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZpbGUg ICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RkbHV0aWxzLmMgIHwgMjEzICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21l c29uLmJ1aWxkIHwgICAxICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICB8 ICAgMiArCiA0IGZpbGVzIGNoYW5nZWQsIDIxNyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RkbHV0aWxzLmMKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvTWFrZWZpbGUKaW5kZXggYThmZDY4MDU4OWYuLjBjNzYyMTk1N2MxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L01ha2VmaWxlCkBAIC0zMSw2ICszMSw3IEBAIE9CSlMgPSBcCiAJZGF0ZXRpbWUu byBcCiAJZGF0dW0ubyBcCiAJZGJzaXplLm8gXAorCWRkbHV0aWxzLm8gXAogCWRvbWFpbnMu byBcCiAJZW5jb2RlLm8gXAogCWVudW0ubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvZGRsdXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xZWQ0NGNiY2IxYQot LS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5jCkBA IC0wLDAgKzEsMjEzIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBkZGx1dGls cy5jCisgKgkJVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcgRERMIHN0YXRlbWVu dHMKKyAqCisgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHBnX2dldF8qX2RkbCBmYW1pbHkg b2YgZnVuY3Rpb25zIHRoYXQgZ2VuZXJhdGUKKyAqIERETCBzdGF0ZW1lbnRzIHRvIHJlY3Jl YXRlIGRhdGFiYXNlIG9iamVjdHMgc3VjaCBhcyByb2xlcywgdGFibGVzcGFjZXMsCisgKiBh bmQgZGF0YWJhc2VzLCBhbG9uZyB3aXRoIGNvbW1vbiBpbmZyYXN0cnVjdHVyZSBmb3Igb3B0 aW9uIHBhcnNpbmcgYW5kCisgKiBwcmV0dHktcHJpbnRpbmcuCisgKgorICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhl IFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkg IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5jCisgKgorICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKyNpbmNsdWRlICJ1dGlscy92 YXJsZW5hLmgiCisKKy8qIE9wdGlvbiB2YWx1ZSB0eXBlcyBmb3IgRERMIG9wdGlvbiBwYXJz aW5nICovCit0eXBlZGVmIGVudW0KK3sKKwlERExfT1BUX0JPT0wsCisJRERMX09QVF9URVhU LAorCURETF9PUFRfSU5UCit9IERkbE9wdFR5cGU7CisKKy8qCisgKiBBIHNpbmdsZSBEREwg b3B0aW9uIGRlc2NyaXB0b3I6IGNhbGxlciBmaWxscyBpbiBuYW1lIGFuZCB0eXBlLAorICog cGFyc2VfZGRsX29wdGlvbnMgZmlsbHMgaW4gaXNzZXQgKyB0aGUgYXBwcm9wcmlhdGUgdmFs dWUgZmllbGQuCisgKi8KK3R5cGVkZWYgc3RydWN0IERkbE9wdGlvbgoreworCWNvbnN0IGNo YXIgKm5hbWU7CQkJLyogb3B0aW9uIG5hbWUgKGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2gpICov CisJRGRsT3B0VHlwZQl0eXBlOwkJCS8qIGV4cGVjdGVkIHZhbHVlIHR5cGUgKi8KKwlib29s CQlpc3NldDsJCQkvKiB0cnVlIGlmIGNhbGxlciBzdXBwbGllZCB0aGlzIG9wdGlvbiAqLwor CWJvb2wJCWJvb2x2YWw7CQkvKiBmaWxsZWQgaW4gZm9yIERETF9PUFRfQk9PTCAqLworCWNo YXIJICAgKnRleHR2YWw7CQkvKiBmaWxsZWQgaW4gZm9yIERETF9PUFRfVEVYVCAocGFsbG9j J2QpICovCisJaW50CQkJaW50dmFsOwkJCS8qIGZpbGxlZCBpbiBmb3IgRERMX09QVF9JTlQg Ki8KK30gRGRsT3B0aW9uOworCisKK3N0YXRpYyB2b2lkIHBhcnNlX2RkbF9vcHRpb25zKEZ1 bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBpbnQgdmFyaWFkaWNfc3RhcnQsCisJCQkJCQkJICBE ZGxPcHRpb24gKm9wdHMsIGludCBub3B0cyk7CitzdGF0aWMgdm9pZCBhcHBlbmRfZGRsX29w dGlvbihTdHJpbmdJbmZvIGJ1ZiwgYm9vbCBwcmV0dHksIGludCBpbmRlbnQsCisJCQkJCQkJ ICBjb25zdCBjaGFyICpmbXQsLi4uKQorCQkJcGdfYXR0cmlidXRlX3ByaW50Zig0LCA1KTsK KworCisvKgorICogcGFyc2VfZGRsX29wdGlvbnMKKyAqIAkJUGFyc2UgdmFyaWFkaWMgbmFt ZS92YWx1ZSBvcHRpb24gcGFpcnMKKyAqCisgKiBPcHRpb25zIGFyZSBwYXNzZWQgYXMgYWx0 ZXJuYXRpbmcga2V5L3ZhbHVlIHRleHQgcGFpcnMuICBUaGUgY2FsbGVyCisgKiBwcm92aWRl cyBhbiBhcnJheSBvZiBEZGxPcHRpb24gZGVzY3JpcHRvcnMgc3BlY2lmeWluZyB0aGUgYWNj ZXB0ZWQKKyAqIG9wdGlvbiBuYW1lcyBhbmQgdGhlaXIgdHlwZXM7IHRoaXMgZnVuY3Rpb24g bWF0Y2hlcyBlYWNoIHN1cHBsaWVkCisgKiBwYWlyIGFnYWluc3QgdGhlIGFycmF5LCB2YWxp ZGF0ZXMgdGhlIHZhbHVlLCBhbmQgZmlsbHMgaW4gdGhlCisgKiByZXN1bHQgZmllbGRzLgor ICovCitzdGF0aWMgdm9pZAorcGFyc2VfZGRsX29wdGlvbnMoRnVuY3Rpb25DYWxsSW5mbyBm Y2luZm8sIGludCB2YXJpYWRpY19zdGFydCwKKwkJCQkgIERkbE9wdGlvbiAqb3B0cywgaW50 IG5vcHRzKQoreworCURhdHVtCSAgICphcmdzOworCWJvb2wJICAgKm51bGxzOworCU9pZAkJ ICAgKnR5cGVzOworCWludAkJCW5hcmdzOworCisJLyogQ2xlYXIgYWxsIG91dHB1dCBmaWVs ZHMgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IG5vcHRzOyBpKyspCisJeworCQlvcHRzW2ld Lmlzc2V0ID0gZmFsc2U7CisJCW9wdHNbaV0uYm9vbHZhbCA9IGZhbHNlOworCQlvcHRzW2ld LnRleHR2YWwgPSBOVUxMOworCQlvcHRzW2ldLmludHZhbCA9IDA7CisJfQorCisJbmFyZ3Mg PSBleHRyYWN0X3ZhcmlhZGljX2FyZ3MoZmNpbmZvLCB2YXJpYWRpY19zdGFydCwgdHJ1ZSwK KwkJCQkJCQkJICAmYXJncywgJnR5cGVzLCAmbnVsbHMpOworCisJaWYgKG5hcmdzIDw9IDAp CisJCXJldHVybjsKKworCS8qIEhhbmRsZSBERUZBVUxUIE5VTEwgY2FzZSAqLworCWlmIChu YXJncyA9PSAxICYmIG51bGxzWzBdKQorCQlyZXR1cm47CisKKwlpZiAobmFyZ3MgJSAyICE9 IDApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygidmFyaWFkaWMgYXJndW1lbnRzIG11c3Qg YmUgbmFtZS92YWx1ZSBwYWlycyIpLAorCQkJCSBlcnJoaW50KCJQcm92aWRlIGFuIGV2ZW4g bnVtYmVyIG9mIHZhcmlhZGljIGFyZ3VtZW50cyB0aGF0IGNhbiBiZSBkaXZpZGVkIGludG8g cGFpcnMuIikpKTsKKworCS8qCisJICogRm9yIGVhY2ggb3B0aW9uIG5hbWUvdmFsdWUgcGFp ciwgZmluZCBjb3JyZXNwb25kaW5nIHBvc2l0aW9uYWwgb3B0aW9uCisJICogZm9yIHRoZSBv cHRpb24gbmFtZSwgYW5kIGFzc2lnbiB0aGUgb3B0aW9uIHZhbHVlLgorCSAqLworCWZvciAo aW50IGkgPSAwOyBpIDwgbmFyZ3M7IGkgKz0gMikKKwl7CisJCWNoYXIJICAgKm5hbWU7CisJ CWNoYXIJICAgKnZhbHN0cjsKKwkJRGRsT3B0aW9uICAqb3B0ID0gTlVMTDsKKworCQlpZiAo bnVsbHNbaV0pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygib3B0aW9uIG5hbWUgYXQg dmFyaWFkaWMgcG9zaXRpb24gJWQgaXMgbnVsbCIsIGkgKyAxKSkpOworCisJCW5hbWUgPSBU ZXh0RGF0dW1HZXRDU3RyaW5nKGFyZ3NbaV0pOworCisJCWlmIChudWxsc1tpICsgMV0pCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1F VEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygidmFsdWUgZm9yIG9wdGlvbiBcIiVzXCIgbXVz dCBub3QgYmUgbnVsbCIsIG5hbWUpKSk7CisKKwkJLyogRmluZCBtYXRjaGluZyBvcHRpb24g ZGVzY3JpcHRvciAqLworCQlmb3IgKGludCBqID0gMDsgaiA8IG5vcHRzOyBqKyspCisJCXsK KwkJCWlmIChwZ19zdHJjYXNlY21wKG5hbWUsIG9wdHNbal0ubmFtZSkgPT0gMCkKKwkJCXsK KwkJCQlvcHQgPSAmb3B0c1tqXTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlmIChv cHQgPT0gTlVMTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQg b3B0aW9uOiBcIiVzXCIiLCBuYW1lKSkpOworCisJCWlmIChvcHQtPmlzc2V0KQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9W QUxVRSksCisJCQkJCSBlcnJtc2coIm9wdGlvbiBcIiVzXCIgaXMgc3BlY2lmaWVkIG1vcmUg dGhhbiBvbmNlIiwKKwkJCQkJCQluYW1lKSkpOworCisJCXZhbHN0ciA9IFRleHREYXR1bUdl dENTdHJpbmcoYXJnc1tpICsgMV0pOworCisJCXN3aXRjaCAob3B0LT50eXBlKQorCQl7CisJ CQljYXNlIERETF9PUFRfQk9PTDoKKwkJCQlpZiAoIXBhcnNlX2Jvb2wodmFsc3RyLCAmb3B0 LT5ib29sdmFsKSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCQkgZXJybXNnKCJpbnZhbGlk IHZhbHVlIGZvciBib29sZWFuIG9wdGlvbiBcIiVzXCI6ICVzIiwKKwkJCQkJCQkJCW5hbWUs IHZhbHN0cikpKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBERExfT1BUX1RFWFQ6CisJCQkJ b3B0LT50ZXh0dmFsID0gdmFsc3RyOworCQkJCXZhbHN0ciA9IE5VTEw7CS8qIGRvbid0IHBm cmVlIGJlbG93ICovCisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRERMX09QVF9JTlQ6CisJCQkJ eworCQkJCQljaGFyCSAgICplbmRwOworCQkJCQlsb25nCQl2YWw7CisKKwkJCQkJZXJybm8g PSAwOworCQkJCQl2YWwgPSBzdHJ0b2wodmFsc3RyLCAmZW5kcCwgMTApOworCQkJCQlpZiAo KmVuZHAgIT0gJ1wwJyB8fCBlcnJubyA9PSBFUkFOR0UgfHwKKwkJCQkJCXZhbCA8IFBHX0lO VDMyX01JTiB8fCB2YWwgPiBQR19JTlQzMl9NQVgpCisJCQkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJ CQkJCQkJIGVycm1zZygiaW52YWxpZCB2YWx1ZSBmb3IgaW50ZWdlciBvcHRpb24gXCIlc1wi OiAlcyIsCisJCQkJCQkJCQkJbmFtZSwgdmFsc3RyKSkpOworCQkJCQlvcHQtPmludHZhbCA9 IChpbnQpIHZhbDsKKwkJCQl9CisJCQkJYnJlYWs7CisJCX0KKworCQlvcHQtPmlzc2V0ID0g dHJ1ZTsKKworCQlpZiAodmFsc3RyKQorCQkJcGZyZWUodmFsc3RyKTsKKwkJcGZyZWUobmFt ZSk7CisJfQorfQorCisvKgorICogSGVscGVyIHRvIGFwcGVuZCBhIGZvcm1hdHRlZCBzdHJp bmcgd2l0aCBvcHRpb25hbCBwcmV0dHktcHJpbnRpbmcuCisgKi8KK3N0YXRpYyB2b2lkCith cHBlbmRfZGRsX29wdGlvbihTdHJpbmdJbmZvIGJ1ZiwgYm9vbCBwcmV0dHksIGludCBpbmRl bnQsCisJCQkJICBjb25zdCBjaGFyICpmbXQsLi4uKQoreworCXZhX2xpc3QJCWFyZ3M7CisK KwlpZiAocHJldHR5KQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnXG4nKTsK KwkJYXBwZW5kU3RyaW5nSW5mb1NwYWNlcyhidWYsIGluZGVudCk7CisJfQorCWVsc2UKKwkJ YXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCisJZm9yICg7OykKKwl7CisJCWlu dAkJCW5lZWRlZDsKKworCQl2YV9zdGFydChhcmdzLCBmbXQpOworCQluZWVkZWQgPSBhcHBl bmRTdHJpbmdJbmZvVkEoYnVmLCBmbXQsIGFyZ3MpOworCQl2YV9lbmQoYXJncyk7CisJCWlm IChuZWVkZWQgPT0gMCkKKwkJCWJyZWFrOworCQllbmxhcmdlU3RyaW5nSW5mbyhidWYsIG5l ZWRlZCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21lc29u LmJ1aWxkIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21lc29uLmJ1aWxkCmluZGV4IGZiODI5 NGQ3ZTRhLi5kNzkzZjgxNDVmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tZXNvbi5idWlsZApA QCAtMzAsNiArMzAsNyBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdkYXRldGlt ZS5jJywKICAgJ2RhdHVtLmMnLAogICAnZGJzaXplLmMnLAorICAnZGRsdXRpbHMuYycsCiAg ICdkb21haW5zLmMnLAogICAnZW5jb2RlLmMnLAogICAnZW51bS5jJywKZGlmZiAtLWdpdCBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKaW5kZXggNDY3M2VjYTljZDYuLjAwNzM5MTQ4NGE0IDEwMDY0NAot LS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNjIwLDYgKzYyMCw4IEBAIERTTVJFbnRyeVR5 cGUKIERTTVJlZ2lzdHJ5Q3R4U3RydWN0CiBEU01SZWdpc3RyeUVudHJ5CiBEV09SRAorRGRs T3B0VHlwZQorRGRsT3B0aW9uCiBEYXRhRGlyU3luY01ldGhvZAogRGF0YUR1bXBlclB0cgog RGF0YVBhZ2VEZWxldGVTdGFjawotLSAKMi40My4wCgo= --------------FcdFh9wzeftJtDGwFgHbDoc4 Content-Type: text/x-patch; charset=UTF-8; name="0002-Add-pg_get_role_ddl-function.patch" Content-Disposition: attachment; filename="0002-Add-pg_get_role_ddl-function.patch" Content-Transfer-Encoding: base64 RnJvbSBiNjE1Zjg5Yjk4YjJlMDlmMjc1Y2I4MmNkZWE1NTdiZWQwYTJiNjhkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVGh1LCAxOSBNYXIgMjAyNiAwOTo1MjoyNSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMi80XSBBZGQgcGdfZ2V0X3JvbGVfZGRsKCkgZnVuY3Rpb24KCkFkZCBhIG5ldyBT UUwtY2FsbGFibGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBEREwgc3RhdGVtZW50cyBu ZWVkZWQKdG8gcmVjcmVhdGUgYSByb2xlLiBJdCB0YWtlcyBhIHJlZ3JvbGUgYXJndW1lbnQg YW5kIGFuIG9wdGlvbmFsIFZBUklBRElDCnRleHQgYXJndW1lbnQgZm9yIG9wdGlvbnMgdGhh dCBhcmUgc3BlY2lmaWVkIGFzIGFsdGVybmF0aW5nIG5hbWUvdmFsdWUKcGFpcnMuIFRoZSBm b2xsb3dpbmcgb3B0aW9uIGlzIHN1cHBvcnRlZDogcHJldHR5IChib29sZWFuKSBmb3IKZm9y bWF0dGVkIG91dHB1dC4gVGhlIHJldHVybiBpcyBvbmUgb3IgbXVsdGlwbGUgcm93cyB3aGVy ZSB0aGUgZmlyc3Qgcm93CmlzIGEgQ1JFQVRFIFJPTEUgc3RhdGVtZW50IGFuZCBzdWJzZXF1 ZW50IHJvd3MgYXJlIEFMVEVSIFJPTEUgc3RhdGVtZW50cwp0byBzZXQgc29tZSByb2xlIHBy b3BlcnRpZXMuCgpBdXRob3I6IE1hcmlvIEdvbnphbGV6IDxnb256YWxlbWFyaW9AZ21haWwu Y29tPgpBdXRob3I6IEJyeWFuIEdyZWVuIDxkYnJ5YW4uZ3JlZW5AZ21haWwuY29tPgpDby1h dXRob3JlZC1ieTogQW5kcmV3IER1bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5uZXQ+ClJldmll d2VkLWJ5OiBFdWxlciBUYXZlaXJhIDxldWxlckBldWxlcnRvLmNvbT4KUmV2aWV3ZWQtYnk6 IEphcGluIExpIDxqYXBpbmxpQGhvdG1haWwuY29tPgpSZXZpZXdlZC1ieTogUXVhbiBab25n bGlhbmcgPHF1YW56b25nbGlhbmdAeWVhaC5uZXQ+ClJldmlld2VkLWJ5OiBqaWFuIGhlIDxq aWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBv c3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC80YzVmODk1ZS0zMjgxLTQ4ZjgtYjk0My05 MjI4YjdkYTY0NzFAZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZv LnNnbWwgICAgICAgfCAgNTQgKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RkbHV0aWxz LmMgICAgICAgfCAzMzAgKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgfCAgIDggKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9yb2xlX2RkbC5vdXQgfCAxMDAgKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jv bGVfZGRsLnNxbCAgICAgIHwgIDYzICsrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDU1NyBpbnNl cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9yb2xlX2RkbC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9yb2xlX2RkbC5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWlu Zm8uc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21sCmluZGV4IDViNWYx ZjNjNWRmLi5hY2QxYTdjZmVlZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMvZnVu Yy1pbmZvLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwKQEAg LTM4NjAsNCArMzg2MCw1OCBAQCBhY2wgICAgICB8IHtwb3N0Z3Jlcz1hcndkRHh0bS9wb3N0 Z3Jlcyxmb289ci9wb3N0Z3Jlc30KIAogICA8L3NlY3QyPgogCisgIDxzZWN0MiBpZD0iZnVu Y3Rpb25zLWdldC1vYmplY3QtZGRsIj4KKyAgIDx0aXRsZT5HZXQgT2JqZWN0IERETCBGdW5j dGlvbnM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBUaGUgZnVuY3Rpb25zIHNob3duIGlu IDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1nZXQtb2JqZWN0LWRkbC10YWJsZSIvPgorICAg IHJlY29uc3RydWN0IERETCBzdGF0ZW1lbnRzIGZvciB2YXJpb3VzIGdsb2JhbCBkYXRhYmFz ZSBvYmplY3RzLgorICAgIEVhY2ggZnVuY3Rpb24gcmV0dXJucyBhIHNldCBvZiB0ZXh0IHJv d3MsIG9uZSBTUUwgc3RhdGVtZW50IHBlciByb3cuCisgICAgKFRoaXMgaXMgYSBkZWNvbXBp bGVkIHJlY29uc3RydWN0aW9uLCBub3QgdGhlIG9yaWdpbmFsIHRleHQgb2YgdGhlCisgICAg Y29tbWFuZC4pICBGdW5jdGlvbnMgdGhhdCBhY2NlcHQgPGxpdGVyYWw+VkFSSUFESUM8L2xp dGVyYWw+IG9wdGlvbnMKKyAgICB0YWtlIGFsdGVybmF0aW5nIG5hbWUvdmFsdWUgdGV4dCBw YWlyczsgdmFsdWVzIGFyZSBwYXJzZWQgYXMgYm9vbGVhbiwKKyAgICBpbnRlZ2VyIG9yIHRl eHQuCisgICA8L3BhcmE+CisKKyAgIDx0YWJsZSBpZD0iZnVuY3Rpb25zLWdldC1vYmplY3Qt ZGRsLXRhYmxlIj4KKyAgICA8dGl0bGU+R2V0IE9iamVjdCBEREwgRnVuY3Rpb25zPC90aXRs ZT4KKyAgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgICA8dGhlYWQ+CisgICAgICA8cm93Pgor ICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5j X3NpZ25hdHVyZSI+CisgICAgICAgIEZ1bmN0aW9uCisgICAgICAgPC9wYXJhPgorICAgICAg IDxwYXJhPgorICAgICAgICBEZXNjcmlwdGlvbgorICAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICAgPC9yb3c+CisgICAgIDwvdGhlYWQ+CisKKyAgICAgPHRib2R5PgorICAgICAgPHJv dz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i ZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1h cnk+cGdfZ2V0X3JvbGVfZGRsPC9wcmltYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAg ICAgICAgPGZ1bmN0aW9uPnBnX2dldF9yb2xlX2RkbDwvZnVuY3Rpb24+CisgICAgICAgICgg PHBhcmFtZXRlcj5yb2xlPC9wYXJhbWV0ZXI+IDx0eXBlPnJlZ3JvbGU8L3R5cGU+CisgICAg ICAgIDxvcHRpb25hbD4sIDxsaXRlcmFsPlZBUklBRElDPC9saXRlcmFsPiA8cGFyYW1ldGVy Pm9wdGlvbnM8L3BhcmFtZXRlcj4KKyAgICAgICAgPHR5cGU+dGV4dDwvdHlwZT4gPC9vcHRp b25hbD4gKQorICAgICAgICA8cmV0dXJudmFsdWU+c2V0b2YgdGV4dDwvcmV0dXJudmFsdWU+ CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBSZWNvbnN0cnVjdHMg dGhlIDxjb21tYW5kPkNSRUFURSBST0xFPC9jb21tYW5kPiBzdGF0ZW1lbnQgYW5kIGFueQor ICAgICAgICA8Y29tbWFuZD5BTFRFUiBST0xFIC4uLiBTRVQ8L2NvbW1hbmQ+IHN0YXRlbWVu dHMgZm9yIHRoZSBnaXZlbiByb2xlLgorICAgICAgICBFYWNoIHN0YXRlbWVudCBpcyByZXR1 cm5lZCBhcyBhIHNlcGFyYXRlIHJvdy4KKyAgICAgICAgUGFzc3dvcmQgaW5mb3JtYXRpb24g aXMgbmV2ZXIgaW5jbHVkZWQgaW4gdGhlIG91dHB1dC4KKyAgICAgICAgVGhlIGZvbGxvd2lu ZyBvcHRpb24gaXMgc3VwcG9ydGVkOiA8bGl0ZXJhbD5wcmV0dHk8L2xpdGVyYWw+IChib29s ZWFuKQorICAgICAgICBmb3IgcHJldHR5LXByaW50ZWQgb3V0cHV0LgorICAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgIDwvdGJvZHk+CisgICAgPC90Z3JvdXA+ CisgICA8L3RhYmxlPgorCisgIDwvc2VjdDI+CisKICAgPC9zZWN0MT4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2RkbHV0aWxzLmMKaW5kZXggMWVkNDRjYmNiMWEuLmMwNjdkZTBhM2QyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZGRsdXRpbHMuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvZGRsdXRpbHMuYwpAQCAtMTgsOCArMTgsMjQgQEAKICAqLwogI2luY2x1 ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNsdWRl ICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3JlbGF0aW9uLmgi CisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRo aWQuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2RiX3JvbGVfc2V0dGluZy5oIgorI2luY2x1 ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJ1dGls cy9hY2wuaCIKKyNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1 aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0ZXRpbWUuaCIKKyNpbmNsdWRlICJ1dGls cy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgorI2luY2x1ZGUgInV0aWxz L2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxz L3N5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAjaW5jbHVkZSAi dXRpbHMvdmFybGVuYS5oIgogCiAvKiBPcHRpb24gdmFsdWUgdHlwZXMgZm9yIERETCBvcHRp b24gcGFyc2luZyAqLwpAQCAtNTAsNiArNjYsNyBAQCBzdGF0aWMgdm9pZCBwYXJzZV9kZGxf b3B0aW9ucyhGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgaW50IHZhcmlhZGljX3N0YXJ0LAog c3RhdGljIHZvaWQgYXBwZW5kX2RkbF9vcHRpb24oU3RyaW5nSW5mbyBidWYsIGJvb2wgcHJl dHR5LCBpbnQgaW5kZW50LAogCQkJCQkJCSAgY29uc3QgY2hhciAqZm10LC4uLikKIAkJCXBn X2F0dHJpYnV0ZV9wcmludGYoNCwgNSk7CitzdGF0aWMgTGlzdCAqcGdfZ2V0X3JvbGVfZGRs X2ludGVybmFsKE9pZCByb2xlaWQsIGJvb2wgcHJldHR5KTsKIAogCiAvKgpAQCAtMjExLDMg KzIyOCwzMTYgQEAgYXBwZW5kX2RkbF9vcHRpb24oU3RyaW5nSW5mbyBidWYsIGJvb2wgcHJl dHR5LCBpbnQgaW5kZW50LAogCQllbmxhcmdlU3RyaW5nSW5mbyhidWYsIG5lZWRlZCk7CiAJ fQogfQorCisvKgorICogcGdfZ2V0X3JvbGVfZGRsX2ludGVybmFsCisgKgkJR2VuZXJhdGUg RERMIHN0YXRlbWVudHMgdG8gcmVjcmVhdGUgYSByb2xlCisgKgorICogUmV0dXJucyBhIExp c3Qgb2YgcGFsbG9jJ2Qgc3RyaW5ncywgZWFjaCBiZWluZyBhIGNvbXBsZXRlIFNRTCBzdGF0 ZW1lbnQuCisgKiBUaGUgZmlyc3QgbGlzdCBlbGVtZW50IGlzIGFsd2F5cyB0aGUgQ1JFQVRF IFJPTEUgc3RhdGVtZW50OyBzdWJzZXF1ZW50CisgKiBlbGVtZW50cyBhcmUgQUxURVIgUk9M RSBTRVQgc3RhdGVtZW50cyBmb3IgYW55IHJvbGUtc3BlY2lmaWMgb3IKKyAqIHJvbGUtaW4t ZGF0YWJhc2UgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4KKyAqLworc3RhdGljIExpc3QgKgor cGdfZ2V0X3JvbGVfZGRsX2ludGVybmFsKE9pZCByb2xlaWQsIGJvb2wgcHJldHR5KQorewor CUhlYXBUdXBsZQl0dXBsZTsKKwlGb3JtX3BnX2F1dGhpZCByb2xlZm9ybTsKKwlTdHJpbmdJ bmZvRGF0YSBidWY7CisJY2hhcgkgICAqcm9sbmFtZTsKKwlEYXR1bQkJcm9sZXZhbGlkdW50 aWw7CisJYm9vbAkJaXNudWxsOworCVJlbGF0aW9uCXJlbDsKKwlTY2FuS2V5RGF0YSBzY2Fu a2V5OworCVN5c1NjYW5EZXNjIHNjYW47CisJTGlzdAkgICAqc3RhdGVtZW50cyA9IE5JTDsK KworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKEFVVEhPSUQsIE9iamVjdElkR2V0RGF0dW0o cm9sZWlkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBl cnJtc2coInJvbGUgd2l0aCBPSUQgJXUgZG9lcyBub3QgZXhpc3QiLCByb2xlaWQpKSk7CisK Kwlyb2xlZm9ybSA9IChGb3JtX3BnX2F1dGhpZCkgR0VUU1RSVUNUKHR1cGxlKTsKKwlyb2xu YW1lID0gcHN0cmR1cChOYW1lU3RyKHJvbGVmb3JtLT5yb2xuYW1lKSk7CisKKwkvKgorCSAq IFdlIGRvbid0IHN1cHBvcnQgZ2VuZXJhdGluZyBEREwgZm9yIHN5c3RlbSByb2xlcy4gIFRo ZSBwcmltYXJ5IHJlYXNvbgorCSAqIGZvciB0aGlzIGlzIHRoYXQgdXNlcnMgc2hvdWxkbid0 IGJlIHJlY3JlYXRpbmcgdGhlbS4KKwkgKi8KKwlpZiAoSXNSZXNlcnZlZE5hbWUocm9sbmFt ZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9SRVNFUlZFRF9O QU1FKSwKKwkJCQkgZXJybXNnKCJyb2xlIG5hbWUgXCIlc1wiIGlzIHJlc2VydmVkIiwgcm9s bmFtZSksCisJCQkJIGVycmRldGFpbCgiUm9sZSBuYW1lcyBzdGFydGluZyB3aXRoIFwicGdf XCIgYXJlIHJlc2VydmVkIGZvciBzeXN0ZW0gcm9sZXMuIikpKTsKKworCWluaXRTdHJpbmdJ bmZvKCZidWYpOworCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkNSRUFURSBST0xFICVzIiwg cXVvdGVfaWRlbnRpZmllcihyb2xuYW1lKSk7CisKKwkvKgorCSAqIEFwcGVuZCByb2xlIGF0 dHJpYnV0ZXMuICBUaGUgb3JkZXIgaGVyZSBmb2xsb3dzIHRoZSBzYW1lIHNlcXVlbmNlIGFz CisJICogeW91J2QgdHlwaWNhbGx5IHdyaXRlIHRoZW0gaW4gYSBDUkVBVEUgUk9MRSBjb21t YW5kLCB0aG91Z2ggYW55IG9yZGVyCisJICogaXMgYWN0dWFsbHkgYWNjZXB0YWJsZSB0byB0 aGUgcGFyc2VyLgorCSAqLworCWFwcGVuZF9kZGxfb3B0aW9uKCZidWYsIHByZXR0eSwgNCwg IiVzIiwKKwkJCQkJICByb2xlZm9ybS0+cm9sc3VwZXIgPyAiU1VQRVJVU0VSIiA6ICJOT1NV UEVSVVNFUiIpOworCisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiJXMi LAorCQkJCQkgIHJvbGVmb3JtLT5yb2xpbmhlcml0ID8gIklOSEVSSVQiIDogIk5PSU5IRVJJ VCIpOworCisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiJXMiLAorCQkJ CQkgIHJvbGVmb3JtLT5yb2xjcmVhdGVyb2xlID8gIkNSRUFURVJPTEUiIDogIk5PQ1JFQVRF Uk9MRSIpOworCisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiJXMiLAor CQkJCQkgIHJvbGVmb3JtLT5yb2xjcmVhdGVkYiA/ICJDUkVBVEVEQiIgOiAiTk9DUkVBVEVE QiIpOworCisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiJXMiLAorCQkJ CQkgIHJvbGVmb3JtLT5yb2xjYW5sb2dpbiA/ICJMT0dJTiIgOiAiTk9MT0dJTiIpOworCisJ YXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiJXMiLAorCQkJCQkgIHJvbGVm b3JtLT5yb2xyZXBsaWNhdGlvbiA/ICJSRVBMSUNBVElPTiIgOiAiTk9SRVBMSUNBVElPTiIp OworCisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiJXMiLAorCQkJCQkg IHJvbGVmb3JtLT5yb2xieXBhc3NybHMgPyAiQllQQVNTUkxTIiA6ICJOT0JZUEFTU1JMUyIp OworCisJLyoKKwkgKiBDT05ORUNUSU9OIExJTUlUIGlzIG9ubHkgaW50ZXJlc3RpbmcgaWYg aXQncyBub3QgLTEgKHRoZSBkZWZhdWx0LAorCSAqIG1lYW5pbmcgbm8gbGltaXQpLgorCSAq LworCWlmIChyb2xlZm9ybS0+cm9sY29ubmxpbWl0ID49IDApCisJCWFwcGVuZF9kZGxfb3B0 aW9uKCZidWYsIHByZXR0eSwgNCwgIkNPTk5FQ1RJT04gTElNSVQgJWQiLAorCQkJCQkJICBy b2xlZm9ybS0+cm9sY29ubmxpbWl0KTsKKworCXJvbGV2YWxpZHVudGlsID0gU3lzQ2FjaGVH ZXRBdHRyKEFVVEhPSUQsIHR1cGxlLAorCQkJCQkJCQkJIEFudW1fcGdfYXV0aGlkX3JvbHZh bGlkdW50aWwsCisJCQkJCQkJCQkgJmlzbnVsbCk7CisJaWYgKCFpc251bGwpCisJeworCQlU aW1lc3RhbXBUeiB0czsKKwkJaW50CQkJdHo7CisJCXN0cnVjdCBwZ190bSB0bTsKKwkJZnNl Y190CQlmc2VjOworCQljb25zdCBjaGFyICp0em47CisJCWNoYXIJCXRzX3N0cltNQVhEQVRF TEVOICsgMV07CisKKwkJdHMgPSBEYXR1bUdldFRpbWVzdGFtcFR6KHJvbGV2YWxpZHVudGls KTsKKwkJaWYgKFRJTUVTVEFNUF9OT1RfRklOSVRFKHRzKSkKKwkJCUVuY29kZVNwZWNpYWxU aW1lc3RhbXAodHMsIHRzX3N0cik7CisJCWVsc2UgaWYgKHRpbWVzdGFtcDJ0bSh0cywgJnR6 LCAmdG0sICZmc2VjLCAmdHpuLCBOVUxMKSA9PSAwKQorCQkJRW5jb2RlRGF0ZVRpbWUoJnRt LCBmc2VjLCB0cnVlLCB0eiwgdHpuLCBEYXRlU3R5bGUsIHRzX3N0cik7CisJCWVsc2UKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFURVRJTUVfVkFMVUVf T1VUX09GX1JBTkdFKSwKKwkJCQkJIGVycm1zZygidGltZXN0YW1wIG91dCBvZiByYW5nZSIp KSk7CisKKwkJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiVkFMSUQgVU5U SUwgJXMiLAorCQkJCQkJICBxdW90ZV9saXRlcmFsX2NzdHIodHNfc3RyKSk7CisJfQorCisJ UmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKKworCS8qCisJICogV2UgaW50ZW50aW9uYWxseSBv bWl0IFBBU1NXT1JELiAgVGhlcmUncyBubyB3YXkgdG8gcmV0cmlldmUgdGhlCisJICogb3Jp Z2luYWwgcGFzc3dvcmQgdGV4dCBmcm9tIHRoZSBzdG9yZWQgaGFzaCwgYW5kIGV2ZW4gaWYg d2UgY291bGQsCisJICogZXhwb3NpbmcgcGFzc3dvcmRzIHRocm91Z2ggYSBTUUwgZnVuY3Rp b24gd291bGQgYmUgYSBzZWN1cml0eSBpc3N1ZS4KKwkgKiBVc2VycyBtdXN0IHNldCBwYXNz d29yZHMgc2VwYXJhdGVseSBhZnRlciByZWNyZWF0aW5nIHJvbGVzLgorCSAqLworCisJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJzsnKTsKKworCXN0YXRlbWVudHMgPSBsYXBwZW5k KHN0YXRlbWVudHMsIHBzdHJkdXAoYnVmLmRhdGEpKTsKKworCS8qCisJICogTm93IHNjYW4g cGdfZGJfcm9sZV9zZXR0aW5nIGZvciBBTFRFUiBST0xFIFNFVCBjb25maWd1cmF0aW9ucy4K KwkgKgorCSAqIFRoZXNlIGNhbiBiZSByb2xlLXdpZGUgKHNldGRhdGFiYXNlID0gMCkgb3Ig c3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyCisJICogZGF0YWJhc2UgKHNldGRhdGFiYXNlID0g YSB2YWxpZCBEQiBPSUQpLiAgSXQgZ2VuZXJhdGVzIG9uZSBBTFRFUgorCSAqIHN0YXRlbWVu dCBwZXIgc2V0dGluZy4KKwkgKi8KKwlyZWwgPSB0YWJsZV9vcGVuKERiUm9sZVNldHRpbmdS ZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCVNjYW5LZXlJbml0KCZzY2Fua2V5LAor CQkJCUFudW1fcGdfZGJfcm9sZV9zZXR0aW5nX3NldHJvbGUsCisJCQkJQlRFcXVhbFN0cmF0 ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0ocm9sZWlkKSk7CisJ c2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihyZWwsIERiUm9sZVNldHRpbmdEYXRpZFJvbGlk SW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkgIE5VTEwsIDEsICZzY2Fua2V5KTsKKworCXdoaWxl IChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJ eworCQlGb3JtX3BnX2RiX3JvbGVfc2V0dGluZyBzZXR0aW5nID0gKEZvcm1fcGdfZGJfcm9s ZV9zZXR0aW5nKSBHRVRTVFJVQ1QodHVwbGUpOworCQlPaWQJCQlkYXRpZCA9IHNldHRpbmct PnNldGRhdGFiYXNlOworCQlEYXR1bQkJZGF0dW07CisJCUFycmF5VHlwZSAgKnJlbG9wdGlv bnM7CisJCURhdHVtCSAgICpzZXR0aW5nczsKKwkJYm9vbAkgICAqbnVsbHM7CisJCWludAkJ CW5zZXR0aW5nczsKKwkJY2hhcgkgICAqZGF0bmFtZSA9IE5VTEw7CisKKwkJLyoKKwkJICog SWYgc2V0ZGF0YWJhc2UgaXMgdmFsaWQsIHRoaXMgaXMgYSByb2xlLWluLWRhdGFiYXNlIHNl dHRpbmc7CisJCSAqIG90aGVyd2lzZSBpdCdzIGEgcm9sZS13aWRlIHNldHRpbmcuICBMb29r IHVwIHRoZSBkYXRhYmFzZSBuYW1lIG9uY2UKKwkJICogZm9yIGFsbCBzZXR0aW5ncyBpbiB0 aGlzIHJvdy4KKwkJICovCisJCWlmIChPaWRJc1ZhbGlkKGRhdGlkKSkKKwkJeworCQkJZGF0 bmFtZSA9IGdldF9kYXRhYmFzZV9uYW1lKGRhdGlkKTsKKwkJCS8qIERhdGFiYXNlIGhhcyBi ZWVuIGRyb3BwZWQ7IHNraXAgYWxsIHNldHRpbmdzIGluIHRoaXMgcm93LiAqLworCQkJaWYg KGRhdG5hbWUgPT0gTlVMTCkKKwkJCQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIFRo ZSBzZXRjb25maWcgY29sdW1uIGlzIGEgdGV4dCBhcnJheSBpbiAibmFtZT12YWx1ZSIgZm9y bWF0LiBJdAorCQkgKiBzaG91bGQgbmV2ZXIgYmUgbnVsbCBmb3IgYSB2YWxpZCByb3csIGJ1 dCBiZSBkZWZlbnNpdmUuCisJCSAqLworCQlkYXR1bSA9IGhlYXBfZ2V0YXR0cih0dXBsZSwg QW51bV9wZ19kYl9yb2xlX3NldHRpbmdfc2V0Y29uZmlnLAorCQkJCQkJCSBSZWxhdGlvbkdl dERlc2NyKHJlbCksICZpc251bGwpOworCQlpZiAoaXNudWxsKQorCQkJY29udGludWU7CisK KwkJcmVsb3B0aW9ucyA9IERhdHVtR2V0QXJyYXlUeXBlUChkYXR1bSk7CisKKwkJZGVjb25z dHJ1Y3RfYXJyYXlfYnVpbHRpbihyZWxvcHRpb25zLCBURVhUT0lELCAmc2V0dGluZ3MsICZu dWxscywgJm5zZXR0aW5ncyk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBuc2V0dGluZ3M7 IGkrKykKKwkJeworCQkJY2hhcgkgICAqcywKKwkJCQkJICAgKnA7CisKKwkJCWlmIChudWxs c1tpXSkKKwkJCQljb250aW51ZTsKKworCQkJcyA9IFRleHREYXR1bUdldENTdHJpbmcoc2V0 dGluZ3NbaV0pOworCQkJcCA9IHN0cmNocihzLCAnPScpOworCQkJaWYgKHAgPT0gTlVMTCkK KwkJCXsKKwkJCQlwZnJlZShzKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCSpwKysgPSAn XDAnOworCisJCQkvKiBCdWlsZCBhIGZyZXNoIEFMVEVSIFJPTEUgc3RhdGVtZW50IGZvciB0 aGlzIHNldHRpbmcgKi8KKwkJCXJlc2V0U3RyaW5nSW5mbygmYnVmKTsKKwkJCWFwcGVuZFN0 cmluZ0luZm8oJmJ1ZiwgIkFMVEVSIFJPTEUgJXMiLCBxdW90ZV9pZGVudGlmaWVyKHJvbG5h bWUpKTsKKworCQkJaWYgKGRhdG5hbWUgIT0gTlVMTCkKKwkJCQlhcHBlbmRTdHJpbmdJbmZv KCZidWYsICIgSU4gREFUQUJBU0UgJXMiLAorCQkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihk YXRuYW1lKSk7CisKKwkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIiBTRVQgJXMgVE8gIiwK KwkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihzKSk7CisKKwkJCS8qCisJCQkgKiBWYXJpYWJs ZXMgdGhhdCBhcmUgbWFya2VkIEdVQ19MSVNUX1FVT1RFIHdlcmUgYWxyZWFkeSBmdWxseQor CQkJICogcXVvdGVkIGJlZm9yZSB0aGV5IHdlcmUgcHV0IGludG8gdGhlIHNldGNvbmZpZyBh cnJheS4gIEJyZWFrCisJCQkgKiB0aGUgbGlzdCB2YWx1ZSBhcGFydCBhbmQgdGhlbiBxdW90 ZSB0aGUgZWxlbWVudHMgYXMgc3RyaW5nCisJCQkgKiBsaXRlcmFscy4KKwkJCSAqLworCQkJ aWYgKEdldENvbmZpZ09wdGlvbkZsYWdzKHMsIHRydWUpICYgR1VDX0xJU1RfUVVPVEUpCisJ CQl7CisJCQkJTGlzdAkgICAqbmFtZWxpc3Q7CisJCQkJTGlzdENlbGwgICAqbGM7CisKKwkJ CQkvKiBQYXJzZSBzdHJpbmcgaW50byBsaXN0IG9mIGlkZW50aWZpZXJzICovCisJCQkJaWYg KCFTcGxpdEdVQ0xpc3QocCwgJywnLCAmbmFtZWxpc3QpKQorCQkJCXsKKwkJCQkJLyogdGhp cyBzaG91bGRuJ3QgZmFpbCByZWFsbHkgKi8KKwkJCQkJZWxvZyhFUlJPUiwgImludmFsaWQg bGlzdCBzeW50YXggaW4gc2V0Y29uZmlnIGl0ZW0iKTsKKwkJCQl9CisJCQkJLyogU3BlY2lh bCBjYXNlOiByZXByZXNlbnQgYW4gZW1wdHkgbGlzdCBhcyBOVUxMICovCisJCQkJaWYgKG5h bWVsaXN0ID09IE5JTCkKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiTlVM TCIpOworCQkJCWZvcmVhY2gobGMsIG5hbWVsaXN0KQorCQkJCXsKKwkJCQkJY2hhcgkgICAq Y3VybmFtZSA9IChjaGFyICopIGxmaXJzdChsYyk7CisKKwkJCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZygmYnVmLCBxdW90ZV9saXRlcmFsX2NzdHIoY3VybmFtZSkpOworCQkJCQlpZiAo bG5leHQobmFtZWxpc3QsIGxjKSkKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1 ZiwgIiwgIik7CisJCQkJfQorCQkJfQorCQkJZWxzZQorCQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmJ1ZiwgcXVvdGVfbGl0ZXJhbF9jc3RyKHApKTsKKworCQkJYXBwZW5kU3RyaW5n SW5mb0NoYXIoJmJ1ZiwgJzsnKTsKKworCQkJc3RhdGVtZW50cyA9IGxhcHBlbmQoc3RhdGVt ZW50cywgcHN0cmR1cChidWYuZGF0YSkpOworCisJCQlwZnJlZShzKTsKKwkJfQorCisJCXBm cmVlKHNldHRpbmdzKTsKKwkJcGZyZWUocmVsb3B0aW9ucyk7CisKKwkJaWYgKGRhdG5hbWUg IT0gTlVMTCkKKwkJCXBmcmVlKGRhdG5hbWUpOworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4o c2Nhbik7CisJdGFibGVfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcGZyZWUo YnVmLmRhdGEpOworCXBmcmVlKHJvbG5hbWUpOworCisJcmV0dXJuIHN0YXRlbWVudHM7Cit9 CisKKy8qCisgKiBwZ19nZXRfcm9sZV9kZGwKKyAqCQlSZXR1cm4gRERMIHRvIHJlY3JlYXRl IGEgcm9sZSBhcyBhIHNldCBvZiB0ZXh0IHJvd3MuCisgKgorICogRWFjaCByb3cgaXMgYSBj b21wbGV0ZSBTUUwgc3RhdGVtZW50LiAgVGhlIGZpcnN0IHJvdyBpcyBhbHdheXMgdGhlCisg KiBDUkVBVEUgUk9MRSBzdGF0ZW1lbnQ7IHN1YnNlcXVlbnQgcm93cyBhcmUgQUxURVIgUk9M RSBTRVQgc3RhdGVtZW50cy4KKyAqIFJldHVybnMgbm8gcm93cyBpZiB0aGUgcm9sZSBhcmd1 bWVudCBpcyBOVUxMLgorICovCitEYXR1bQorcGdfZ2V0X3JvbGVfZGRsKFBHX0ZVTkNUSU9O X0FSR1MpCit7CisJRnVuY0NhbGxDb250ZXh0ICpmdW5jY3R4OworCUxpc3QJICAgKnN0YXRl bWVudHM7CisJTGlzdENlbGwgICAqbGM7CisKKwlpZiAoU1JGX0lTX0ZJUlNUQ0FMTCgpKQor CXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCQlPaWQJCQlyb2xlaWQ7CisJCURk bE9wdGlvbglvcHRzW10gPSB7eyJwcmV0dHkiLCBERExfT1BUX0JPT0x9fTsKKworCQlmdW5j Y3R4ID0gU1JGX0ZJUlNUQ0FMTF9JTklUKCk7CisJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8oZnVuY2N0eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKKworCQlpZiAo UEdfQVJHSVNOVUxMKDApKQorCQl7CisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7CisJCQlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7CisJCX0KKworCQlyb2xlaWQg PSBQR19HRVRBUkdfT0lEKDApOworCQlwYXJzZV9kZGxfb3B0aW9ucyhmY2luZm8sIDEsIG9w dHMsIGxlbmd0aG9mKG9wdHMpKTsKKworCQlzdGF0ZW1lbnRzID0gcGdfZ2V0X3JvbGVfZGRs X2ludGVybmFsKHJvbGVpZCwKKwkJCQkJCQkJCQkJICBvcHRzWzBdLmlzc2V0ICYmIG9wdHNb MF0uYm9vbHZhbCk7CisJCWZ1bmNjdHgtPnVzZXJfZmN0eCA9IHN0YXRlbWVudHM7CisJCWZ1 bmNjdHgtPm1heF9jYWxscyA9IGxpc3RfbGVuZ3RoKHN0YXRlbWVudHMpOworCisJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwl9CisKKwlmdW5jY3R4ID0gU1JGX1BF UkNBTExfU0VUVVAoKTsKKwlzdGF0ZW1lbnRzID0gKExpc3QgKikgZnVuY2N0eC0+dXNlcl9m Y3R4OworCisJaWYgKGZ1bmNjdHgtPmNhbGxfY250ciA8IGZ1bmNjdHgtPm1heF9jYWxscykK Kwl7CisJCWNoYXIJICAgKnN0bXQ7CisKKwkJbGMgPSBsaXN0X250aF9jZWxsKHN0YXRlbWVu dHMsIGZ1bmNjdHgtPmNhbGxfY250cik7CisJCXN0bXQgPSAoY2hhciAqKSBsZmlyc3QobGMp OworCisJCVNSRl9SRVRVUk5fTkVYVChmdW5jY3R4LCBDU3RyaW5nR2V0VGV4dERhdHVtKHN0 bXQpKTsKKwl9CisJZWxzZQorCXsKKwkJbGlzdF9mcmVlX2RlZXAoc3RhdGVtZW50cyk7CisJ CVNSRl9SRVRVUk5fRE9ORShmdW5jY3R4KTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdAppbmRleCBmYzhkODI2NjViOC4uZTkwODE0NjY0NWYgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdApAQCAtODU4OCw2ICs4NTg4LDE0IEBACiB7IG9pZCA9PiAnMjUwOCcsIGRl c2NyID0+ICdjb25zdHJhaW50IGRlc2NyaXB0aW9uIHdpdGggcHJldHR5LXByaW50IG9wdGlv bicsCiAgIHByb25hbWUgPT4gJ3BnX2dldF9jb25zdHJhaW50ZGVmJywgcHJvdm9sYXRpbGUg PT4gJ3MnLCBwcm9yZXR0eXBlID0+ICd0ZXh0JywKICAgcHJvYXJndHlwZXMgPT4gJ29pZCBi b29sJywgcHJvc3JjID0+ICdwZ19nZXRfY29uc3RyYWludGRlZl9leHQnIH0sCit7IG9pZCA9 PiAnODc2MCcsIGRlc2NyID0+ICdnZXQgRERMIHRvIHJlY3JlYXRlIGEgcm9sZScsCisgIHBy b25hbWUgPT4gJ3BnX2dldF9yb2xlX2RkbCcsIHByb3ZhcmlhZGljID0+ICd0ZXh0JywgcHJv aXNzdHJpY3QgPT4gJ2YnLAorICBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHNldCA9PiAn dCcsIHByb3Jvd3MgPT4gJzEwJywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCisgIHByb2FyZ3R5 cGVzID0+ICdyZWdyb2xlIHRleHQnLAorICBwcm9hcmdtb2RlcyA9PiAne2ksdn0nLAorICBw cm9hbGxhcmd0eXBlcyA9PiAne3JlZ3JvbGUsdGV4dH0nLAorICBwcm9uYXJnZGVmYXVsdHMg PT4gJzEnLCBwcm9hcmdkZWZhdWx0cyA9PiAne05VTEx9JywKKyAgcHJvc3JjID0+ICdwZ19n ZXRfcm9sZV9kZGwnIH0sCiB7IG9pZCA9PiAnMjUwOScsCiAgIGRlc2NyID0+ICdkZXBhcnNl IGFuIGVuY29kZWQgZXhwcmVzc2lvbiB3aXRoIHByZXR0eS1wcmludCBvcHRpb24nLAogICBw cm9uYW1lID0+ICdwZ19nZXRfZXhwcicsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlw ZSA9PiAndGV4dCcsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jv bGVfZGRsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm9sZV9kZGwub3V0Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45OGVmNDJjOWUyOAotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm9sZV9kZGwub3V0 CkBAIC0wLDAgKzEsMTAwIEBACistLSBDb25zaXN0ZW50IHRlc3QgcmVzdWx0cworU0VUIHRp bWV6b25lIFRPICdVVEMnOworU0VUIERhdGVTdHlsZSBUTyAnSVNPLCBZTUQnOworLS0gQ3Jl YXRlIHRlc3QgZGF0YWJhc2UKK0NSRUFURSBEQVRBQkFTRSByZWdyZXNzaW9uX3JvbGVfZGRs X3Rlc3Q7CistLSBCYXNpYyByb2xlCitDUkVBVEUgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rl c3QxOworU0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZV9kZGxf dGVzdDEnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGdfZ2V0X3JvbGVfZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUk9MRSByZWdyZXNzX3JvbGVf ZGRsX3Rlc3QxIE5PU1VQRVJVU0VSIElOSEVSSVQgTk9DUkVBVEVST0xFIE5PQ1JFQVRFREIg Tk9MT0dJTiBOT1JFUExJQ0FUSU9OIE5PQllQQVNTUkxTOworKDEgcm93KQorCistLSBSb2xl IHdpdGggTE9HSU4KK0NSRUFURSBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDIgTE9HSU47 CitTRUxFQ1QgKiBGUk9NIHBnX2dldF9yb2xlX2RkbCgncmVncmVzc19yb2xlX2RkbF90ZXN0 MicpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBnX2dldF9yb2xlX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0 MiBOT1NVUEVSVVNFUiBJTkhFUklUIE5PQ1JFQVRFUk9MRSBOT0NSRUFURURCIExPR0lOIE5P UkVQTElDQVRJT04gTk9CWVBBU1NSTFM7CisoMSByb3cpCisKKy0tIFJvbGUgd2l0aCBtdWx0 aXBsZSBwcml2aWxlZ2VzCitDUkVBVEUgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3QzCisg IExPR0lOCisgIFNVUEVSVVNFUgorICBDUkVBVEVEQgorICBDUkVBVEVST0xFCisgIENPTk5F Q1RJT04gTElNSVQgNQorICBWQUxJRCBVTlRJTCAnMjAzMC0xMi0zMSAyMzo1OTo1OSswMCc7 CitTRUxFQ1QgKiBGUk9NIHBnX2dldF9yb2xlX2RkbCgncmVncmVzc19yb2xlX2RkbF90ZXN0 MycpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfcm9sZV9kZGwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIENSRUFURSBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDMgU1VQRVJV U0VSIElOSEVSSVQgQ1JFQVRFUk9MRSBDUkVBVEVEQiBMT0dJTiBOT1JFUExJQ0FUSU9OIE5P QllQQVNTUkxTIENPTk5FQ1RJT04gTElNSVQgNSBWQUxJRCBVTlRJTCAnMjAzMC0xMi0zMSAy Mzo1OTo1OSswMCc7CisoMSByb3cpCisKKy0tIFJvbGUgd2l0aCBjb25maWd1cmF0aW9uIHBh cmFtZXRlcnMKK0NSRUFURSBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDQ7CitBTFRFUiBS T0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDQgU0VUIHdvcmtfbWVtIFRPICcyNTZNQic7CitB TFRFUiBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDQgU0VUIHNlYXJjaF9wYXRoIFRPICdt eXNjaGVtYSwgcHVibGljJzsKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3JvbGVfZGRsKCdyZWdy ZXNzX3JvbGVfZGRsX3Rlc3Q0Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBnX2dldF9yb2xlX2RkbCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFJPTEUg cmVncmVzc19yb2xlX2RkbF90ZXN0NCBOT1NVUEVSVVNFUiBJTkhFUklUIE5PQ1JFQVRFUk9M RSBOT0NSRUFURURCIE5PTE9HSU4gTk9SRVBMSUNBVElPTiBOT0JZUEFTU1JMUzsKKyBBTFRF UiBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDQgU0VUIHdvcmtfbWVtIFRPICcyNTZNQic7 CisgQUxURVIgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3Q0IFNFVCBzZWFyY2hfcGF0aCBU TyAnbXlzY2hlbWEsIHB1YmxpYyc7CisoMyByb3dzKQorCistLSBSb2xlIHdpdGggZGF0YWJh c2Utc3BlY2lmaWMgY29uZmlndXJhdGlvbgorQ1JFQVRFIFJPTEUgcmVncmVzc19yb2xlX2Rk bF90ZXN0NTsKK0FMVEVSIFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0NSBJTiBEQVRBQkFT RSByZWdyZXNzaW9uX3JvbGVfZGRsX3Rlc3QgU0VUIHdvcmtfbWVtIFRPICcxMjhNQic7CitT RUxFQ1QgKiBGUk9NIHBnX2dldF9yb2xlX2RkbCgncmVncmVzc19yb2xlX2RkbF90ZXN0NScp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw Z19nZXRfcm9sZV9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVz dDUgTk9TVVBFUlVTRVIgSU5IRVJJVCBOT0NSRUFURVJPTEUgTk9DUkVBVEVEQiBOT0xPR0lO IE5PUkVQTElDQVRJT04gTk9CWVBBU1NSTFM7CisgQUxURVIgUk9MRSByZWdyZXNzX3JvbGVf ZGRsX3Rlc3Q1IElOIERBVEFCQVNFIHJlZ3Jlc3Npb25fcm9sZV9kZGxfdGVzdCBTRVQgd29y a19tZW0gVE8gJzEyOE1CJzsKKygyIHJvd3MpCisKKy0tIFJvbGUgd2l0aCBzcGVjaWFsIGNo YXJhY3RlcnMgKHJlcXVpcmVzIHF1b3RpbmcpCitDUkVBVEUgUk9MRSAicmVncmVzc19yb2xl LXdpdGgtZGFzaCI7CitTRUxFQ1QgKiBGUk9NIHBnX2dldF9yb2xlX2RkbCgncmVncmVzc19y b2xlLXdpdGgtZGFzaCcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGdfZ2V0X3JvbGVfZGRsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUk9MRSAi cmVncmVzc19yb2xlLXdpdGgtZGFzaCIgTk9TVVBFUlVTRVIgSU5IRVJJVCBOT0NSRUFURVJP TEUgTk9DUkVBVEVEQiBOT0xPR0lOIE5PUkVQTElDQVRJT04gTk9CWVBBU1NSTFM7CisoMSBy b3cpCisKKy0tIFByZXR0eS1wcmludGVkIG91dHB1dAorXHBzZXQgZm9ybWF0IHVuYWxpZ25l ZAorU0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZV9kZGxfdGVz dDMnLCAncHJldHR5JywgJ3RydWUnKTsKK3BnX2dldF9yb2xlX2RkbAorQ1JFQVRFIFJPTEUg cmVncmVzc19yb2xlX2RkbF90ZXN0MworICAgIFNVUEVSVVNFUgorICAgIElOSEVSSVQKKyAg ICBDUkVBVEVST0xFCisgICAgQ1JFQVRFREIKKyAgICBMT0dJTgorICAgIE5PUkVQTElDQVRJ T04KKyAgICBOT0JZUEFTU1JMUworICAgIENPTk5FQ1RJT04gTElNSVQgNQorICAgIFZBTElE IFVOVElMICcyMDMwLTEyLTMxIDIzOjU5OjU5KzAwJzsKKygxIHJvdykKK1xwc2V0IGZvcm1h dCBhbGlnbmVkCistLSBOb24tZXhpc3RlbnQgcm9sZSAoc2hvdWxkIHJldHVybiBubyByb3dz KQorU0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoOTk5OTk5OTo6b2lkKTsKK0VSUk9S OiAgcm9sZSB3aXRoIE9JRCA5OTk5OTk5IGRvZXMgbm90IGV4aXN0CistLSBOVUxMIGlucHV0 IChzaG91bGQgcmV0dXJuIG5vIHJvd3MpCitTRUxFQ1QgKiBGUk9NIHBnX2dldF9yb2xlX2Rk bChOVUxMKTsKKyBwZ19nZXRfcm9sZV9kZGwgCistLS0tLS0tLS0tLS0tLS0tLQorKDAgcm93 cykKKworLS0gQ2xlYW51cAorRFJPUCBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDE7CitE Uk9QIFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0MjsKK0RST1AgUk9MRSByZWdyZXNzX3Jv bGVfZGRsX3Rlc3QzOworRFJPUCBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDQ7CitEUk9Q IFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0NTsKK0RST1AgUk9MRSAicmVncmVzc19yb2xl LXdpdGgtZGFzaCI7CitEUk9QIERBVEFCQVNFIHJlZ3Jlc3Npb25fcm9sZV9kZGxfdGVzdDsK Ky0tIFJlc2V0IHRpbWV6b25lIHRvIGRlZmF1bHQKK1JFU0VUIHRpbWV6b25lOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggNzM0ZGEwNTdjMzQuLjdlMDU5Y2VmMDM0 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEzMCw2ICsxMzAsOCBA QCB0ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX3NwbGl0IHBhcnRpdGlvbl9qb2lu IHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zCiAjIG9pZGpvaW5zIGlzIHJlYWQtb25seSwg dGhvdWdoLCBhbmQgc2hvdWxkIHJ1biBsYXRlIGZvciBiZXN0IGNvdmVyYWdlCiB0ZXN0OiBv aWRqb2lucyBldmVudF90cmlnZ2VyCiAKK3Rlc3Q6IHJvbGVfZGRsCisKICMgZXZlbnRfdHJp Z2dlcl9sb2dpbiBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoIGFueSBvdGhlciB0ZXN0 cyBiZWNhdXNlCiAjIG9uLWxvZ2luIGV2ZW50IGhhbmRsaW5nIGNvdWxkIGNhdGNoIGNvbm5l Y3Rpb24gb2YgYSBjb25jdXJyZW50IHRlc3QuCiB0ZXN0OiBldmVudF90cmlnZ2VyX2xvZ2lu CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9yb2xlX2RkbC5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9yb2xlX2RkbC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmM5NTA5YWU0NzRlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcm9sZV9kZGwuc3FsCkBAIC0wLDAgKzEsNjMgQEAKKy0tIENvbnNp c3RlbnQgdGVzdCByZXN1bHRzCitTRVQgdGltZXpvbmUgVE8gJ1VUQyc7CitTRVQgRGF0ZVN0 eWxlIFRPICdJU08sIFlNRCc7CisKKy0tIENyZWF0ZSB0ZXN0IGRhdGFiYXNlCitDUkVBVEUg REFUQUJBU0UgcmVncmVzc2lvbl9yb2xlX2RkbF90ZXN0OworCistLSBCYXNpYyByb2xlCitD UkVBVEUgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3QxOworU0VMRUNUICogRlJPTSBwZ19n ZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDEnKTsKKworLS0gUm9sZSB3aXRo IExPR0lOCitDUkVBVEUgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3QyIExPR0lOOworU0VM RUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoJ3JlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDInKTsK KworLS0gUm9sZSB3aXRoIG11bHRpcGxlIHByaXZpbGVnZXMKK0NSRUFURSBST0xFIHJlZ3Jl c3Nfcm9sZV9kZGxfdGVzdDMKKyAgTE9HSU4KKyAgU1VQRVJVU0VSCisgIENSRUFURURCCisg IENSRUFURVJPTEUKKyAgQ09OTkVDVElPTiBMSU1JVCA1CisgIFZBTElEIFVOVElMICcyMDMw LTEyLTMxIDIzOjU5OjU5KzAwJzsKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3JvbGVfZGRsKCdy ZWdyZXNzX3JvbGVfZGRsX3Rlc3QzJyk7CisKKy0tIFJvbGUgd2l0aCBjb25maWd1cmF0aW9u IHBhcmFtZXRlcnMKK0NSRUFURSBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDQ7CitBTFRF UiBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDQgU0VUIHdvcmtfbWVtIFRPICcyNTZNQic7 CitBTFRFUiBST0xFIHJlZ3Jlc3Nfcm9sZV9kZGxfdGVzdDQgU0VUIHNlYXJjaF9wYXRoIFRP ICdteXNjaGVtYSwgcHVibGljJzsKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3JvbGVfZGRsKCdy ZWdyZXNzX3JvbGVfZGRsX3Rlc3Q0Jyk7CisKKy0tIFJvbGUgd2l0aCBkYXRhYmFzZS1zcGVj aWZpYyBjb25maWd1cmF0aW9uCitDUkVBVEUgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3Q1 OworQUxURVIgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3Q1IElOIERBVEFCQVNFIHJlZ3Jl c3Npb25fcm9sZV9kZGxfdGVzdCBTRVQgd29ya19tZW0gVE8gJzEyOE1CJzsKK1NFTEVDVCAq IEZST00gcGdfZ2V0X3JvbGVfZGRsKCdyZWdyZXNzX3JvbGVfZGRsX3Rlc3Q1Jyk7CisKKy0t IFJvbGUgd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMgKHJlcXVpcmVzIHF1b3RpbmcpCitDUkVB VEUgUk9MRSAicmVncmVzc19yb2xlLXdpdGgtZGFzaCI7CitTRUxFQ1QgKiBGUk9NIHBnX2dl dF9yb2xlX2RkbCgncmVncmVzc19yb2xlLXdpdGgtZGFzaCcpOworCistLSBQcmV0dHktcHJp bnRlZCBvdXRwdXQKK1xwc2V0IGZvcm1hdCB1bmFsaWduZWQKK1NFTEVDVCAqIEZST00gcGdf Z2V0X3JvbGVfZGRsKCdyZWdyZXNzX3JvbGVfZGRsX3Rlc3QzJywgJ3ByZXR0eScsICd0cnVl Jyk7CitccHNldCBmb3JtYXQgYWxpZ25lZAorCistLSBOb24tZXhpc3RlbnQgcm9sZSAoc2hv dWxkIHJldHVybiBubyByb3dzKQorU0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoOTk5 OTk5OTo6b2lkKTsKKworLS0gTlVMTCBpbnB1dCAoc2hvdWxkIHJldHVybiBubyByb3dzKQor U0VMRUNUICogRlJPTSBwZ19nZXRfcm9sZV9kZGwoTlVMTCk7CisKKy0tIENsZWFudXAKK0RS T1AgUk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3QxOworRFJPUCBST0xFIHJlZ3Jlc3Nfcm9s ZV9kZGxfdGVzdDI7CitEUk9QIFJPTEUgcmVncmVzc19yb2xlX2RkbF90ZXN0MzsKK0RST1Ag Uk9MRSByZWdyZXNzX3JvbGVfZGRsX3Rlc3Q0OworRFJPUCBST0xFIHJlZ3Jlc3Nfcm9sZV9k ZGxfdGVzdDU7CitEUk9QIFJPTEUgInJlZ3Jlc3Nfcm9sZS13aXRoLWRhc2giOworCitEUk9Q IERBVEFCQVNFIHJlZ3Jlc3Npb25fcm9sZV9kZGxfdGVzdDsKKworLS0gUmVzZXQgdGltZXpv bmUgdG8gZGVmYXVsdAorUkVTRVQgdGltZXpvbmU7Ci0tIAoyLjQzLjAKCg== --------------FcdFh9wzeftJtDGwFgHbDoc4 Content-Type: text/x-patch; charset=UTF-8; name="0004-Add-pg_get_database_ddl-function.patch" Content-Disposition: attachment; filename="0004-Add-pg_get_database_ddl-function.patch" Content-Transfer-Encoding: base64 RnJvbSBmMzQ0MDEwMDczYmI1NGM2OTM1ZDdkNzU5OWRkYjE3NDQ0NTg5ODgwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVGh1LCAxOSBNYXIgMjAyNiAwOTo1NzozNSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggNC80XSBBZGQgcGdfZ2V0X2RhdGFiYXNlX2RkbCgpIGZ1bmN0aW9uCk1JTUUtVmVy c2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250 ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpBZGQgYSBuZXcgU1FMLWNhbGxhYmxlIGZ1 bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgRERMIHN0YXRlbWVudHMgbmVlZGVkCnRvIHJlY3Jl YXRlIGEgZGF0YWJhc2UuIEl0IHRha2VzIGEgcmVnZGF0YWJhc2UgYXJndW1lbnQgYW5kIGFu IG9wdGlvbmFsClZBUklBRElDIHRleHQgYXJndW1lbnQgZm9yIG9wdGlvbnMgdGhhdCBhcmUg c3BlY2lmaWVkIGFzIGFsdGVybmF0aW5nCm5hbWUvdmFsdWUgcGFpcnMuIFRoZSBmb2xsb3dp bmcgb3B0aW9ucyBhcmUgc3VwcG9ydGVkOiBwcmV0dHkgKGJvb2xlYW4pCmZvciBmb3JtYXR0 ZWQgb3V0cHV0LCBvd25lciAoYm9vbGVhbikgdG8gaW5jbHVkZSBPV05FUiBhbmQgdGFibGVz cGFjZQooYm9vbGVhbikgdG8gaW5jbHVkZSBUQUJMRVNQQUNFLiBUaGUgcmV0dXJuIGlzIG9u ZSBvciBtdWx0aXBsZSByb3dzCndoZXJlIHRoZSBmaXJzdCByb3cgaXMgYSBDUkVBVEUgREFU QUJBU0Ugc3RhdGVtZW50IGFuZCBzdWJzZXF1ZW50IHJvd3MgYXJlCkFMVEVSIERBVEFCQVNF IHN0YXRlbWVudHMgdG8gc2V0IHNvbWUgZGF0YWJhc2UgcHJvcGVydGllcy4KCkF1dGhvcjog QWtzaGF5IEpvc2hpIDxha3NoYXkuam9zaGlAZW50ZXJwcmlzZWRiLmNvbT4KQ28tYXV0aG9y ZWQtYnk6IEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1i eTogSmFwaW4gTGkgPGphcGlubGlAaG90bWFpbC5jb20+ClJldmlld2VkLWJ5OiBDaGFvIExp IDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogw4FsdmFybyBIZXJyZXJh IDxhbHZoZXJyZUBrdXJpbGVtdS5kZT4KUmV2aWV3ZWQtYnk6IEV1bGVyIFRhdmVpcmEgPGV1 bGVyQGV1bGVydG8uY29tPgpSZXZpZXdlZC1ieTogUXVhbiBab25nbGlhbmcgPHF1YW56b25n bGlhbmdAeWVhaC5uZXQ+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3Jn L21lc3NhZ2UtaWQvZmxhdC9DQU54b0xEYzZGSEJZSnZjZ09uWnlTK2pGME5VbzNMcV84My1y dHRCdUpnczlpZF9VRGdAbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvZnVuYy9m dW5jLWluZm8uc2dtbCAgICAgICAgICAgfCAgMjMgKysKIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9kZGx1dGlscy5jICAgICAgICAgICB8IDM0OSArKysrKysrKysrKysrKysrKysrKysKIHNy Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICB8ICAgOCArCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2RhdGFiYXNlX2RkbC5vdXQgfCAxMDcgKysrKysrKwog c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgIHwgICAyICstCiBz cmMvdGVzdC9yZWdyZXNzL3NxbC9kYXRhYmFzZV9kZGwuc3FsICAgICAgfCAgODkgKysrKysr CiA2IGZpbGVzIGNoYW5nZWQsIDU3NyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9kYXRhYmFzZV9k ZGwub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvZGF0YWJh c2VfZGRsLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5z Z21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwKaW5kZXggZjQ0YmQwZDBm OGIuLmNlNjE5NGY2MDZkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWlu Zm8uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbApAQCAtMzkz NSw2ICszOTM1LDI5IEBAIGFjbCAgICAgIHwge3Bvc3RncmVzPWFyd2REeHRtL3Bvc3RncmVz LGZvbz1yL3Bvc3RncmVzfQogICAgICAgICBmb3IgZm9ybWF0dGVkIG91dHB1dC4KICAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgIDwvcm93PgorICAgICAgPHJvdz4KKyAgICAgICA8 ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1 cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+cGdfZ2V0X2Rh dGFiYXNlX2RkbDwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxm dW5jdGlvbj5wZ19nZXRfZGF0YWJhc2VfZGRsPC9mdW5jdGlvbj4KKyAgICAgICAgKCA8cGFy YW1ldGVyPmRhdGFiYXNlPC9wYXJhbWV0ZXI+IDx0eXBlPnJlZ2RhdGFiYXNlPC90eXBlPgor ICAgICAgICA8b3B0aW9uYWw+LCA8bGl0ZXJhbD5WQVJJQURJQzwvbGl0ZXJhbD4gPHBhcmFt ZXRlcj5vcHRpb25zPC9wYXJhbWV0ZXI+CisgICAgICAgIDx0eXBlPnRleHQ8L3R5cGU+IDwv b3B0aW9uYWw+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPnNldG9mIHRleHQ8L3JldHVybnZh bHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUmVjb25zdHJ1 Y3RzIHRoZSA8Y29tbWFuZD5DUkVBVEUgREFUQUJBU0U8L2NvbW1hbmQ+IHN0YXRlbWVudCBm b3IgdGhlCisgICAgICAgIHNwZWNpZmllZCBkYXRhYmFzZSwgZm9sbG93ZWQgYnkgPGNvbW1h bmQ+QUxURVIgREFUQUJBU0U8L2NvbW1hbmQ+CisgICAgICAgIHN0YXRlbWVudHMgZm9yIGNv bm5lY3Rpb24gbGltaXQsIHRlbXBsYXRlIHN0YXR1cywgYW5kIGNvbmZpZ3VyYXRpb24KKyAg ICAgICAgc2V0dGluZ3MuICBFYWNoIHN0YXRlbWVudCBpcyByZXR1cm5lZCBhcyBhIHNlcGFy YXRlIHJvdy4KKyAgICAgICAgVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBzdXBwb3J0ZWQ6 CisgICAgICAgIDxsaXRlcmFsPnByZXR0eTwvbGl0ZXJhbD4gKGJvb2xlYW4pIGZvciBmb3Jt YXR0ZWQgb3V0cHV0LAorICAgICAgICA8bGl0ZXJhbD5vd25lcjwvbGl0ZXJhbD4gKGJvb2xl YW4pIHRvIGluY2x1ZGUgPGxpdGVyYWw+T1dORVI8L2xpdGVyYWw+LAorICAgICAgICBhbmQg PGxpdGVyYWw+dGFibGVzcGFjZTwvbGl0ZXJhbD4gKGJvb2xlYW4pIHRvIGluY2x1ZGUKKyAg ICAgICAgPGxpdGVyYWw+VEFCTEVTUEFDRTwvbGl0ZXJhbD4uCisgICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgICA8L3Jvdz4KICAgICAgPC90Ym9keT4KICAgICA8L3Rncm91cD4KICAg IDwvdGFibGU+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZGRsdXRpbHMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5jCmluZGV4IDY1ZGYzYzcyM2Nj Li40MTgzOGU0MDNkMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RkbHV0 aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RkbHV0aWxzLmMKQEAgLTIyLDEx ICsyMiwxNCBAQAogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRl ICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2F1dGhpZC5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19k YXRhYmFzZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGJfcm9sZV9zZXR0aW5nLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv dGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNvbW1vbi9yZWxwYXRoLmgiCiAjaW5jbHVkZSAi ZnVuY2FwaS5oIgorI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYXJyYXku aCIKQEAgLTM1LDYgKzM4LDcgQEAKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2lu Y2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2lu Y2x1ZGUgInV0aWxzL3BnX2xvY2FsZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2lu Y2x1ZGUgInV0aWxzL3J1bGV1dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgi CkBAIC03Miw2ICs3Niw4IEBAIHN0YXRpYyB2b2lkIGFwcGVuZF9kZGxfb3B0aW9uKFN0cmlu Z0luZm8gYnVmLCBib29sIHByZXR0eSwgaW50IGluZGVudCwKIHN0YXRpYyBMaXN0ICpwZ19n ZXRfcm9sZV9kZGxfaW50ZXJuYWwoT2lkIHJvbGVpZCwgYm9vbCBwcmV0dHkpOwogc3RhdGlj IExpc3QgKnBnX2dldF90YWJsZXNwYWNlX2RkbF9pbnRlcm5hbChPaWQgdHNpZCwgYm9vbCBw cmV0dHkpOwogc3RhdGljIERhdHVtIHBnX2dldF90YWJsZXNwYWNlX2RkbF9zcmYoRnVuY3Rp b25DYWxsSW5mbyBmY2luZm8sIE9pZCB0c2lkLCBib29sIGlzbnVsbCk7CitzdGF0aWMgTGlz dCAqcGdfZ2V0X2RhdGFiYXNlX2RkbF9pbnRlcm5hbChPaWQgZGJpZCwgYm9vbCBwcmV0dHks CisJCQkJCQkJCQkJICBib29sIG5vX293bmVyLCBib29sIG5vX3RhYmxlc3BhY2UpOwogCiAK IC8qCkBAIC03MjksMyArNzM1LDM0NiBAQCBwZ19nZXRfdGFibGVzcGFjZV9kZGxfbmFtZShQ R19GVU5DVElPTl9BUkdTKQogCiAJcmV0dXJuIHBnX2dldF90YWJsZXNwYWNlX2RkbF9zcmYo ZmNpbmZvLCB0c2lkLCBpc251bGwpOwogfQorCisvKgorICogcGdfZ2V0X2RhdGFiYXNlX2Rk bF9pbnRlcm5hbAorICoJCUdlbmVyYXRlIERETCBzdGF0ZW1lbnRzIHRvIHJlY3JlYXRlIGEg ZGF0YWJhc2UuCisgKgorICogUmV0dXJucyBhIExpc3Qgb2YgcGFsbG9jJ2Qgc3RyaW5ncy4g IFRoZSBmaXJzdCBlbGVtZW50IGlzIHRoZQorICogQ1JFQVRFIERBVEFCQVNFIHN0YXRlbWVu dDsgc3Vic2VxdWVudCBlbGVtZW50cyBhcmUgQUxURVIgREFUQUJBU0UKKyAqIHN0YXRlbWVu dHMgZm9yIHByb3BlcnRpZXMgYW5kIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuCisgKi8KK3N0 YXRpYyBMaXN0ICoKK3BnX2dldF9kYXRhYmFzZV9kZGxfaW50ZXJuYWwoT2lkIGRiaWQsIGJv b2wgcHJldHR5LAorCQkJCQkJCSBib29sIG5vX293bmVyLCBib29sIG5vX3RhYmxlc3BhY2Up Cit7CisJSGVhcFR1cGxlCXR1cGxlOworCUZvcm1fcGdfZGF0YWJhc2UgZGJmb3JtOworCVN0 cmluZ0luZm9EYXRhIGJ1ZjsKKwlib29sCQlpc251bGw7CisJRGF0dW0JCWRhdHVtOworCWNv bnN0IGNoYXIgKmVuY29kaW5nOworCWNvbnN0IGNoYXIgKmRibmFtZTsKKwljaGFyCSAgICpj b2xsYXRlOworCWNoYXIJICAgKmN0eXBlOworCVJlbGF0aW9uCXJlbDsKKwlTY2FuS2V5RGF0 YSBzY2Fua2V5OworCVN5c1NjYW5EZXNjIHNjYW47CisJTGlzdAkgICAqc3RhdGVtZW50cyA9 IE5JTDsKKworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKERBVEFCQVNFT0lELCBPYmplY3RJ ZEdldERhdHVtKGRiaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCks CisJCQkJIGVycm1zZygiZGF0YWJhc2Ugd2l0aCBPSUQgJXUgZG9lcyBub3QgZXhpc3QiLCBk YmlkKSkpOworCisJZGJmb3JtID0gKEZvcm1fcGdfZGF0YWJhc2UpIEdFVFNUUlVDVCh0dXBs ZSk7CisJZGJuYW1lID0gcXVvdGVfaWRlbnRpZmllcihOYW1lU3RyKGRiZm9ybS0+ZGF0bmFt ZSkpOworCisJLyoKKwkgKiBXZSBkb24ndCBzdXBwb3J0IGdlbmVyYXRpbmcgRERMIGZvciBz eXN0ZW0gZGF0YWJhc2VzLiAgVGhlIHByaW1hcnkKKwkgKiByZWFzb24gZm9yIHRoaXMgaXMg dGhhdCB1c2VycyBzaG91bGRuJ3QgYmUgcmVjcmVhdGluZyB0aGVtLgorCSAqLworCWlmIChz dHJjbXAoZGJuYW1lLCAidGVtcGxhdGUwIikgPT0gMCB8fCBzdHJjbXAoZGJuYW1lLCAidGVt cGxhdGUxIikgPT0gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X1JFU0VSVkVEX05BTUUpLAorCQkJCSBlcnJtc2coImRhdGFiYXNlIFwiJXNcIiBpcyBhIHN5 c3RlbSBkYXRhYmFzZSIsIGRibmFtZSkpKTsKKworCWluaXRTdHJpbmdJbmZvKCZidWYpOwor CisJLyogLS0tIEJ1aWxkIENSRUFURSBEQVRBQkFTRSBzdGF0ZW1lbnQgLS0tICovCisJYXBw ZW5kU3RyaW5nSW5mbygmYnVmLCAiQ1JFQVRFIERBVEFCQVNFICVzIiwgZGJuYW1lKTsKKwor CWFwcGVuZF9kZGxfb3B0aW9uKCZidWYsIHByZXR0eSwgNCwgIldJVEggVEVNUExBVEUgPSB0 ZW1wbGF0ZTAiKTsKKworCS8qIEVOQ09ESU5HICovCisJZW5jb2RpbmcgPSBwZ19lbmNvZGlu Z190b19jaGFyKGRiZm9ybS0+ZW5jb2RpbmcpOworCWlmIChzdHJsZW4oZW5jb2RpbmcpID4g MCkKKwkJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiRU5DT0RJTkcgPSAl cyIsCisJCQkJCQkgIHF1b3RlX2xpdGVyYWxfY3N0cihlbmNvZGluZykpOworCisJLyogTE9D QUxFX1BST1ZJREVSICovCisJaWYgKGRiZm9ybS0+ZGF0bG9jcHJvdmlkZXIgPT0gQ09MTFBS T1ZJREVSX0JVSUxUSU4gfHwKKwkJZGJmb3JtLT5kYXRsb2Nwcm92aWRlciA9PSBDT0xMUFJP VklERVJfSUNVIHx8CisJCWRiZm9ybS0+ZGF0bG9jcHJvdmlkZXIgPT0gQ09MTFBST1ZJREVS X0xJQkMpCisJCWFwcGVuZF9kZGxfb3B0aW9uKCZidWYsIHByZXR0eSwgNCwgIkxPQ0FMRV9Q Uk9WSURFUiA9ICVzIiwKKwkJCQkJCSAgY29sbHByb3ZpZGVyX25hbWUoZGJmb3JtLT5kYXRs b2Nwcm92aWRlcikpOworCWVsc2UKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coInVucmVj b2duaXplZCBsb2NhbGUgcHJvdmlkZXI6ICVjIiwKKwkJCQkJCWRiZm9ybS0+ZGF0bG9jcHJv dmlkZXIpKSk7CisKKwkvKiBMT0NBTEUsIExDX0NPTExBVEUsIExDX0NUWVBFICovCisJZGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoREFUQUJBU0VPSUQsIHR1cGxlLAorCQkJCQkJCUFudW1f cGdfZGF0YWJhc2VfZGF0Y29sbGF0ZSwgJmlzbnVsbCk7CisJaWYgKCFpc251bGwpCisJCWNv bGxhdGUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKwllbHNlCisJCWNvbGxhdGUg PSAiIjsKKwlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihEQVRBQkFTRU9JRCwgdHVwbGUsCisJ CQkJCQkJQW51bV9wZ19kYXRhYmFzZV9kYXRjdHlwZSwgJmlzbnVsbCk7CisJaWYgKCFpc251 bGwpCisJCWN0eXBlID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJZWxzZQorCQlj dHlwZSA9ICIiOworCWlmIChzdHJsZW4oY29sbGF0ZSkgPiAwICYmIHN0cmNtcChjb2xsYXRl LCBjdHlwZSkgPT0gMCkKKwl7CisJCWFwcGVuZF9kZGxfb3B0aW9uKCZidWYsIHByZXR0eSwg NCwgIkxPQ0FMRSA9ICVzIiwKKwkJCQkJCSAgcXVvdGVfbGl0ZXJhbF9jc3RyKGNvbGxhdGUp KTsKKwl9CisJZWxzZQorCXsKKwkJaWYgKHN0cmxlbihjb2xsYXRlKSA+IDApCisJCQlhcHBl bmRfZGRsX29wdGlvbigmYnVmLCBwcmV0dHksIDQsICJMQ19DT0xMQVRFID0gJXMiLAorCQkJ CQkJCSAgcXVvdGVfbGl0ZXJhbF9jc3RyKGNvbGxhdGUpKTsKKwkJaWYgKHN0cmxlbihjdHlw ZSkgPiAwKQorCQkJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiTENfQ1RZ UEUgPSAlcyIsCisJCQkJCQkJICBxdW90ZV9saXRlcmFsX2NzdHIoY3R5cGUpKTsKKwl9CisK KwkvKiBMT0NBTEUgKHByb3ZpZGVyLXNwZWNpZmljKSAqLworCWRhdHVtID0gU3lzQ2FjaGVH ZXRBdHRyKERBVEFCQVNFT0lELCB0dXBsZSwKKwkJCQkJCQlBbnVtX3BnX2RhdGFiYXNlX2Rh dGxvY2FsZSwgJmlzbnVsbCk7CisJaWYgKCFpc251bGwpCisJeworCQljb25zdCBjaGFyICps b2NhbGUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKworCQlpZiAoZGJmb3JtLT5k YXRsb2Nwcm92aWRlciA9PSBDT0xMUFJPVklERVJfQlVJTFRJTikKKwkJCWFwcGVuZF9kZGxf b3B0aW9uKCZidWYsIHByZXR0eSwgNCwgIkJVSUxUSU5fTE9DQUxFID0gJXMiLAorCQkJCQkJ CSAgcXVvdGVfbGl0ZXJhbF9jc3RyKGxvY2FsZSkpOworCQllbHNlIGlmIChkYmZvcm0tPmRh dGxvY3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJCQlhcHBlbmRfZGRsX29wdGlv bigmYnVmLCBwcmV0dHksIDQsICJJQ1VfTE9DQUxFID0gJXMiLAorCQkJCQkJCSAgcXVvdGVf bGl0ZXJhbF9jc3RyKGxvY2FsZSkpOworCX0KKworCS8qIElDVV9SVUxFUyAqLworCWRhdHVt ID0gU3lzQ2FjaGVHZXRBdHRyKERBVEFCQVNFT0lELCB0dXBsZSwKKwkJCQkJCQlBbnVtX3Bn X2RhdGFiYXNlX2RhdGljdXJ1bGVzLCAmaXNudWxsKTsKKwlpZiAoIWlzbnVsbCAmJiBkYmZv cm0tPmRhdGxvY3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJCWFwcGVuZF9kZGxf b3B0aW9uKCZidWYsIHByZXR0eSwgNCwgIklDVV9SVUxFUyA9ICVzIiwKKwkJCQkJCSAgcXVv dGVfbGl0ZXJhbF9jc3RyKFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pKSk7CisKKwkvKiBU QUJMRVNQQUNFICovCisJaWYgKCFub190YWJsZXNwYWNlICYmIE9pZElzVmFsaWQoZGJmb3Jt LT5kYXR0YWJsZXNwYWNlKSkKKwl7CisJCWNoYXIJICAgKnNwY25hbWUgPSBnZXRfdGFibGVz cGFjZV9uYW1lKGRiZm9ybS0+ZGF0dGFibGVzcGFjZSk7CisKKwkJaWYgKHBnX3N0cmNhc2Vj bXAoc3BjbmFtZSwgInBnX2RlZmF1bHQiKSAhPSAwKQorCQkJYXBwZW5kX2RkbF9vcHRpb24o JmJ1ZiwgcHJldHR5LCA0LCAiVEFCTEVTUEFDRSA9ICVzIiwKKwkJCQkJCQkgIHF1b3RlX2lk ZW50aWZpZXIoc3BjbmFtZSkpOworCX0KKworCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYs ICc7Jyk7CisJc3RhdGVtZW50cyA9IGxhcHBlbmQoc3RhdGVtZW50cywgcHN0cmR1cChidWYu ZGF0YSkpOworCisJLyogT1dORVIgKi8KKwlpZiAoIW5vX293bmVyICYmIE9pZElzVmFsaWQo ZGJmb3JtLT5kYXRkYmEpKQorCXsKKwkJY2hhcgkgICAqb3duZXIgPSBHZXRVc2VyTmFtZUZy b21JZChkYmZvcm0tPmRhdGRiYSwgZmFsc2UpOworCisJCXJlc2V0U3RyaW5nSW5mbygmYnVm KTsKKwkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiQUxURVIgREFUQUJBU0UgJXMgT1dORVIg PSAlczsiLAorCQkJCQkJIGRibmFtZSwgcXVvdGVfaWRlbnRpZmllcihvd25lcikpOworCQlw ZnJlZShvd25lcik7CisJCXN0YXRlbWVudHMgPSBsYXBwZW5kKHN0YXRlbWVudHMsIHBzdHJk dXAoYnVmLmRhdGEpKTsKKwl9CisKKwkvKiBDT05ORUNUSU9OIExJTUlUICovCisJaWYgKGRi Zm9ybS0+ZGF0Y29ubmxpbWl0ICE9IC0xKQorCXsKKwkJcmVzZXRTdHJpbmdJbmZvKCZidWYp OworCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICJBTFRFUiBEQVRBQkFTRSAlcyBDT05ORUNU SU9OIExJTUlUID0gJWQ7IiwKKwkJCQkJCSBkYm5hbWUsIGRiZm9ybS0+ZGF0Y29ubmxpbWl0 KTsKKwkJc3RhdGVtZW50cyA9IGxhcHBlbmQoc3RhdGVtZW50cywgcHN0cmR1cChidWYuZGF0 YSkpOworCX0KKworCS8qIElTX1RFTVBMQVRFICovCisJaWYgKGRiZm9ybS0+ZGF0aXN0ZW1w bGF0ZSkKKwl7CisJCXJlc2V0U3RyaW5nSW5mbygmYnVmKTsKKwkJYXBwZW5kU3RyaW5nSW5m bygmYnVmLCAiQUxURVIgREFUQUJBU0UgJXMgSVNfVEVNUExBVEUgPSB0cnVlOyIsCisJCQkJ CQkgZGJuYW1lKTsKKwkJc3RhdGVtZW50cyA9IGxhcHBlbmQoc3RhdGVtZW50cywgcHN0cmR1 cChidWYuZGF0YSkpOworCX0KKworCS8qIEFMTE9XX0NPTk5FQ1RJT05TICovCisJaWYgKCFk YmZvcm0tPmRhdGFsbG93Y29ubikKKwl7CisJCXJlc2V0U3RyaW5nSW5mbygmYnVmKTsKKwkJ YXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiQUxURVIgREFUQUJBU0UgJXMgQUxMT1dfQ09OTkVD VElPTlMgPSBmYWxzZTsiLAorCQkJCQkJIGRibmFtZSk7CisJCXN0YXRlbWVudHMgPSBsYXBw ZW5kKHN0YXRlbWVudHMsIHBzdHJkdXAoYnVmLmRhdGEpKTsKKwl9CisKKwlSZWxlYXNlU3lz Q2FjaGUodHVwbGUpOworCisJLyoKKwkgKiBOb3cgc2NhbiBwZ19kYl9yb2xlX3NldHRpbmcg Zm9yIEFMVEVSIERBVEFCQVNFIFNFVCBjb25maWd1cmF0aW9ucy4KKwkgKgorCSAqIEl0IGlz IG9ubHkgZGF0YWJhc2Utd2lkZSAoc2V0cm9sZSA9IDApLiBJdCBnZW5lcmF0ZXMgb25lIEFM VEVSCisJICogc3RhdGVtZW50IHBlciBzZXR0aW5nLgorCSAqLworCXJlbCA9IHRhYmxlX29w ZW4oRGJSb2xlU2V0dGluZ1JlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJU2Nhbktl eUluaXQoJnNjYW5rZXksCisJCQkJQW51bV9wZ19kYl9yb2xlX3NldHRpbmdfc2V0ZGF0YWJh c2UsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElk R2V0RGF0dW0oZGJpZCkpOworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihyZWwsIERi Um9sZVNldHRpbmdEYXRpZFJvbGlkSW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkgIE5VTEwsIDEs ICZzY2Fua2V5KTsKKworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFi bGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlBcnJheVR5cGUgICpyZWxvcHRpb25zOworCQlE YXR1bQkgICAqc2V0dGluZ3M7CisJCWJvb2wJICAgKm51bGxzOworCQlpbnQJCQluc2V0dGlu Z3M7CisKKwkJLyoKKwkJICogVGhlIHNldGNvbmZpZyBjb2x1bW4gaXMgYSB0ZXh0IGFycmF5 IGluICJuYW1lPXZhbHVlIiBmb3JtYXQuIEl0CisJCSAqIHNob3VsZCBuZXZlciBiZSBudWxs IGZvciBhIHZhbGlkIHJvdywgYnV0IGJlIGRlZmVuc2l2ZS4KKwkJICovCisJCWRhdHVtID0g aGVhcF9nZXRhdHRyKHR1cGxlLCBBbnVtX3BnX2RiX3JvbGVfc2V0dGluZ19zZXRjb25maWcs CisJCQkJCQkJIFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgJmlzbnVsbCk7CisJCWlmIChpc251 bGwpCisJCQljb250aW51ZTsKKworCQlyZWxvcHRpb25zID0gRGF0dW1HZXRBcnJheVR5cGVQ KGRhdHVtKTsKKworCQlkZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKHJlbG9wdGlvbnMsIFRF WFRPSUQsICZzZXR0aW5ncywgJm51bGxzLCAmbnNldHRpbmdzKTsKKworCQlmb3IgKGludCBp ID0gMDsgaSA8IG5zZXR0aW5nczsgaSsrKQorCQl7CisJCQljaGFyCSAgICpzLAorCQkJCQkg ICAqcDsKKworCQkJaWYgKG51bGxzW2ldKQorCQkJCWNvbnRpbnVlOworCisJCQlzID0gVGV4 dERhdHVtR2V0Q1N0cmluZyhzZXR0aW5nc1tpXSk7CisJCQlwID0gc3RyY2hyKHMsICc9Jyk7 CisJCQlpZiAocCA9PSBOVUxMKQorCQkJeworCQkJCXBmcmVlKHMpOworCQkJCWNvbnRpbnVl OworCQkJfQorCQkJKnArKyA9ICdcMCc7CisKKwkJCXJlc2V0U3RyaW5nSW5mbygmYnVmKTsK KwkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkFMVEVSIERBVEFCQVNFICVzIFNFVCAlcyBU TyAiLAorCQkJCQkJCSBkYm5hbWUsCisJCQkJCQkJIHF1b3RlX2lkZW50aWZpZXIocykpOwor CisJCQkvKgorCQkJICogVmFyaWFibGVzIHRoYXQgYXJlIG1hcmtlZCBHVUNfTElTVF9RVU9U RSB3ZXJlIGFscmVhZHkgZnVsbHkKKwkJCSAqIHF1b3RlZCBiZWZvcmUgdGhleSB3ZXJlIHB1 dCBpbnRvIHRoZSBzZXRjb25maWcgYXJyYXkuICBCcmVhaworCQkJICogdGhlIGxpc3QgdmFs dWUgYXBhcnQgYW5kIHRoZW4gcXVvdGUgdGhlIGVsZW1lbnRzIGFzIHN0cmluZworCQkJICog bGl0ZXJhbHMuCisJCQkgKi8KKwkJCWlmIChHZXRDb25maWdPcHRpb25GbGFncyhzLCB0cnVl KSAmIEdVQ19MSVNUX1FVT1RFKQorCQkJeworCQkJCUxpc3QJICAgKm5hbWVsaXN0OworCQkJ CUxpc3RDZWxsICAgKmxjOworCisJCQkJLyogUGFyc2Ugc3RyaW5nIGludG8gbGlzdCBvZiBp ZGVudGlmaWVycyAqLworCQkJCWlmICghU3BsaXRHVUNMaXN0KHAsICcsJywgJm5hbWVsaXN0 KSkKKwkJCQl7CisJCQkJCS8qIHRoaXMgc2hvdWxkbid0IGZhaWwgcmVhbGx5ICovCisJCQkJ CWVsb2coRVJST1IsICJpbnZhbGlkIGxpc3Qgc3ludGF4IGluIHNldGNvbmZpZyBpdGVtIik7 CisJCQkJfQorCQkJCS8qIFNwZWNpYWwgY2FzZTogcmVwcmVzZW50IGFuIGVtcHR5IGxpc3Qg YXMgTlVMTCAqLworCQkJCWlmIChuYW1lbGlzdCA9PSBOSUwpCisJCQkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmJ1ZiwgIk5VTEwiKTsKKwkJCQlmb3JlYWNoKGxjLCBuYW1lbGlzdCkK KwkJCQl7CisJCQkJCWNoYXIJICAgKmN1cm5hbWUgPSAoY2hhciAqKSBsZmlyc3QobGMpOwor CisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgcXVvdGVfbGl0ZXJhbF9jc3Ry KGN1cm5hbWUpKTsKKwkJCQkJaWYgKGxuZXh0KG5hbWVsaXN0LCBsYykpCisJCQkJCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsICIsICIpOworCQkJCX0KKwkJCX0KKwkJCWVsc2UK KwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsIHF1b3RlX2xpdGVyYWxfY3N0cihw KSk7CisKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICc7Jyk7CisKKwkJCXN0YXRl bWVudHMgPSBsYXBwZW5kKHN0YXRlbWVudHMsIHBzdHJkdXAoYnVmLmRhdGEpKTsKKworCQkJ cGZyZWUocyk7CisJCX0KKworCQlwZnJlZShzZXR0aW5ncyk7CisJCXBmcmVlKHJlbG9wdGlv bnMpOworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2UocmVs LCBBY2Nlc3NTaGFyZUxvY2spOworCisJcGZyZWUoYnVmLmRhdGEpOworCisJcmV0dXJuIHN0 YXRlbWVudHM7Cit9CisKKy8qCisgKiBwZ19nZXRfZGF0YWJhc2VfZGRsCisgKgkJUmV0dXJu IERETCB0byByZWNyZWF0ZSBhIGRhdGFiYXNlIGFzIGEgc2V0IG9mIHRleHQgcm93cy4KKyAq LworRGF0dW0KK3BnX2dldF9kYXRhYmFzZV9kZGwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlG dW5jQ2FsbENvbnRleHQgKmZ1bmNjdHg7CisJTGlzdAkgICAqc3RhdGVtZW50czsKKwlMaXN0 Q2VsbCAgICpsYzsKKworCWlmIChTUkZfSVNfRklSU1RDQUxMKCkpCisJeworCQlNZW1vcnlD b250ZXh0IG9sZGNvbnRleHQ7CisJCU9pZAkJCWRiaWQ7CisJCURkbE9wdGlvbglvcHRzW10g PSB7CisJCQl7InByZXR0eSIsIERETF9PUFRfQk9PTH0sCisJCQl7Im93bmVyIiwgRERMX09Q VF9CT09MfSwKKwkJCXsidGFibGVzcGFjZSIsIERETF9PUFRfQk9PTH0sCisJCX07CisKKwkJ ZnVuY2N0eCA9IFNSRl9GSVJTVENBTExfSU5JVCgpOworCQlvbGRjb250ZXh0ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CisKKwkJ aWYgKFBHX0FSR0lTTlVMTCgwKSkKKwkJeworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGNvbnRleHQpOworCQkJU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOworCQl9CisKKwkJZGJp ZCA9IFBHX0dFVEFSR19PSUQoMCk7CisJCXBhcnNlX2RkbF9vcHRpb25zKGZjaW5mbywgMSwg b3B0cywgbGVuZ3Rob2Yob3B0cykpOworCisJCXN0YXRlbWVudHMgPSBwZ19nZXRfZGF0YWJh c2VfZGRsX2ludGVybmFsKGRiaWQsCisJCQkJCQkJCQkJCQkgIG9wdHNbMF0uaXNzZXQgJiYg b3B0c1swXS5ib29sdmFsLAorCQkJCQkJCQkJCQkJICBvcHRzWzFdLmlzc2V0ICYmICFvcHRz WzFdLmJvb2x2YWwsCisJCQkJCQkJCQkJCQkgIG9wdHNbMl0uaXNzZXQgJiYgIW9wdHNbMl0u Ym9vbHZhbCk7CisJCWZ1bmNjdHgtPnVzZXJfZmN0eCA9IHN0YXRlbWVudHM7CisJCWZ1bmNj dHgtPm1heF9jYWxscyA9IGxpc3RfbGVuZ3RoKHN0YXRlbWVudHMpOworCisJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwl9CisKKwlmdW5jY3R4ID0gU1JGX1BFUkNB TExfU0VUVVAoKTsKKwlzdGF0ZW1lbnRzID0gKExpc3QgKikgZnVuY2N0eC0+dXNlcl9mY3R4 OworCisJaWYgKGZ1bmNjdHgtPmNhbGxfY250ciA8IGZ1bmNjdHgtPm1heF9jYWxscykKKwl7 CisJCWNoYXIJICAgKnN0bXQ7CisKKwkJbGMgPSBsaXN0X250aF9jZWxsKHN0YXRlbWVudHMs IGZ1bmNjdHgtPmNhbGxfY250cik7CisJCXN0bXQgPSAoY2hhciAqKSBsZmlyc3QobGMpOwor CisJCVNSRl9SRVRVUk5fTkVYVChmdW5jY3R4LCBDU3RyaW5nR2V0VGV4dERhdHVtKHN0bXQp KTsKKwl9CisJZWxzZQorCXsKKwkJbGlzdF9mcmVlX2RlZXAoc3RhdGVtZW50cyk7CisJCVNS Rl9SRVRVUk5fRE9ORShmdW5jY3R4KTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dAppbmRleCBkMjViNjk2NmQ1Yi4uYjVhZDM0Y2NmMmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdApAQCAtODYxMiw2ICs4NjEyLDE0IEBACiAgIHByb2FsbGFyZ3R5cGVzID0+ICd7 bmFtZSx0ZXh0fScsCiAgIHByb25hcmdkZWZhdWx0cyA9PiAnMScsIHByb2FyZ2RlZmF1bHRz ID0+ICd7TlVMTH0nLAogICBwcm9zcmMgPT4gJ3BnX2dldF90YWJsZXNwYWNlX2RkbF9uYW1l JyB9LAoreyBvaWQgPT4gJzg3NjInLCBkZXNjciA9PiAnZ2V0IERETCB0byByZWNyZWF0ZSBh IGRhdGFiYXNlJywKKyAgcHJvbmFtZSA9PiAncGdfZ2V0X2RhdGFiYXNlX2RkbCcsIHByb3Zh cmlhZGljID0+ICd0ZXh0JywgcHJvaXNzdHJpY3QgPT4gJ2YnLAorICBwcm92b2xhdGlsZSA9 PiAncycsIHByb3JldHNldCA9PiAndCcsIHByb3Jvd3MgPT4gJzEwJywgcHJvcmV0dHlwZSA9 PiAndGV4dCcsCisgIHByb2FyZ3R5cGVzID0+ICdyZWdkYXRhYmFzZSB0ZXh0JywKKyAgcHJv YXJnbW9kZXMgPT4gJ3tpLHZ9JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tyZWdkYXRhYmFz ZSx0ZXh0fScsCisgIHByb25hcmdkZWZhdWx0cyA9PiAnMScsIHByb2FyZ2RlZmF1bHRzID0+ ICd7TlVMTH0nLAorICBwcm9zcmMgPT4gJ3BnX2dldF9kYXRhYmFzZV9kZGwnIH0sCiB7IG9p ZCA9PiAnMjUwOScsCiAgIGRlc2NyID0+ICdkZXBhcnNlIGFuIGVuY29kZWQgZXhwcmVzc2lv biB3aXRoIHByZXR0eS1wcmludCBvcHRpb24nLAogICBwcm9uYW1lID0+ICdwZ19nZXRfZXhw cicsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2RhdGFiYXNlX2RkbC5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2RhdGFiYXNlX2RkbC5vdXQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYwZjkzM2Y1N2YxCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9kYXRhYmFzZV9kZGwub3V0CkBAIC0wLDAg KzEsMTA3IEBACistLQorLS0gVGVzdHMgZm9yIHBnX2dldF9kYXRhYmFzZV9kZGwoKQorLS0K Ky0tIFRvIHByb2R1Y2Ugc3RhYmxlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQsIGl0J3MgdXN1 YWxseSBuZWNlc3NhcnkgdG8KKy0tIGlnbm9yZSBjb2xsYXRpb24gYW5kIGxvY2FsZSByZWxh dGVkIGRldGFpbHMuIFRoaXMgZmlsdGVyCistLSBmdW5jdGlvbiByZW1vdmVzIGNvbGxhdGlv biBhbmQgbG9jYWxlIHJlbGF0ZWQgZGV0YWlscy4KK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNU SU9OIGRkbF9maWx0ZXIoZGRsX2lucHV0IFRFWFQpCitSRVRVUk5TIFRFWFQgQVMgJCQKK0RF Q0xBUkUKKyAgICBjbGVhbmVkX2RkbCBURVhUOworQkVHSU4KKyAgICAtLSBSZW1vdmUgTE9D QUxFX1BST1ZJREVSIHBsYWNlaG9sZGVycworICAgIGNsZWFuZWRfZGRsIDo9IHJlZ2V4cF9y ZXBsYWNlKAorICAgICAgICBkZGxfaW5wdXQsCisgICAgICAgICdccypcbUxPQ0FMRV9QUk9W SURFUlxNXHMqPVxzKihbJyciXT9bXicnIlxzXStbJyciXT8pJywKKyAgICAgICAgJycsCisg ICAgICAgICdnaScKKyAgICApOworCisJLS0gUmVtb3ZlIExDX0NPTExBVEUgYXNzaWdubWVu dHMKKyAgICBjbGVhbmVkX2RkbCA6PSByZWdleHBfcmVwbGFjZSgKKyAgICAgICAgY2xlYW5l ZF9kZGwsCisgICAgICAgICdccypMQ19DT0xMQVRFXHMqPVxzKihbJyciXSlbXicnIl0qXDEn LAorICAgICAgICAnJywKKyAgICAgICAgJ2dpJworICAgICk7CisKKyAgICAtLSBSZW1vdmUg TENfQ1RZUEUgYXNzaWdubWVudHMKKyAgICBjbGVhbmVkX2RkbCA6PSByZWdleHBfcmVwbGFj ZSgKKyAgICAgICAgY2xlYW5lZF9kZGwsCisgICAgICAgICdccypMQ19DVFlQRVxzKj1ccyoo WycnIl0pW14nJyJdKlwxJywKKyAgICAgICAgJycsCisgICAgICAgICdnaScKKyAgICApOwor CisgICAgLS0gUmVtb3ZlIExPQ0FMRSBwbGFjZWhvbGRlcnMKKyAgICBjbGVhbmVkX2RkbCA6 PSByZWdleHBfcmVwbGFjZSgKKyAgICAgICAgY2xlYW5lZF9kZGwsCisgICAgICAgICdccypc UypMT0NBTEVcUypccyo9P1xzKihbJyciXSlbXicnIl0qXDEnLAorCQknJywKKwkJJ2dpJwor CSk7CisKKyAgICAtLSBSZW1vdmUgQ09MTEFUSU9OIHBsYWNlaG9sZGVycworICAgIGNsZWFu ZWRfZGRsIDo9IHJlZ2V4cF9yZXBsYWNlKAorICAgICAgICBjbGVhbmVkX2RkbCwKKyAgICAg ICAgJ1xzKlxTKkNPTExBVElPTlxTKlxzKj0/XHMqKFsnJyJdKVteJyciXSpcMScsCisgICAg ICAgICcnLAorICAgICAgICAnZ2knCisgICAgKTsKKworICAgIFJFVFVSTiBjbGVhbmVkX2Rk bDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUgUk9MRSByZWdyZXNzX2Rh dGRiYTsKK0NSRUFURSBEQVRBQkFTRSByZWdyZXNzX2RhdGFiYXNlX2RkbAorCUVOQ09ESU5H IHV0ZjggTENfQ09MTEFURSAiQyIgTENfQ1RZUEUgIkMiIFRFTVBMQVRFIHRlbXBsYXRlMAor CU9XTkVSIHJlZ3Jlc3NfZGF0ZGJhOworQUxURVIgREFUQUJBU0UgcmVncmVzc19kYXRhYmFz ZV9kZGwgQ09OTkVDVElPTl9MSU1JVCAxMjM7CistLSBEYXRhYmFzZSBkb2Vzbid0IGV4aXN0 CitTRUxFQ1QgKiBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3Npb25fZGF0YWJh c2UnKTsKK0VSUk9SOiAgZGF0YWJhc2UgInJlZ3Jlc3Npb25fZGF0YWJhc2UiIGRvZXMgbm90 IGV4aXN0CitMSU5FIDE6IFNFTEVDVCAqIEZST00gcGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVn cmVzc2lvbl9kYXRhYmFzZScpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gTlVMTCB2YWx1ZQorU0VMRUNUICogRlJPTSBwZ19nZXRfZGF0YWJh c2VfZGRsKE5VTEwpOworIHBnX2dldF9kYXRhYmFzZV9kZGwgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0KKygwIHJvd3MpCisKKy0tIEludmFsaWQgb3B0aW9uIHZhbHVlIChzaG91bGQgZXJy b3IpCitTRUxFQ1QgKiBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3NfZGF0YWJh c2VfZGRsJywgJ293bmVyJywgJ2ludmFsaWQnKTsKK0VSUk9SOiAgaW52YWxpZCB2YWx1ZSBm b3IgYm9vbGVhbiBvcHRpb24gIm93bmVyIjogaW52YWxpZAorLS0gRHVwbGljYXRlIG9wdGlv biAoc2hvdWxkIGVycm9yKQorU0VMRUNUICogRlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRsKCdy ZWdyZXNzX2RhdGFiYXNlX2RkbCcsICdvd25lcicsICdmYWxzZScsICdvd25lcicsICd0cnVl Jyk7CitFUlJPUjogIG9wdGlvbiAib3duZXIiIGlzIHNwZWNpZmllZCBtb3JlIHRoYW4gb25j ZQorLS0gV2l0aG91dCBvcHRpb25zCitTRUxFQ1QgZGRsX2ZpbHRlcihwZ19nZXRfZGF0YWJh c2VfZGRsKSBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3NfZGF0YWJhc2VfZGRs Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZGxfZmlsdGVyICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBDUkVBVEUgREFUQUJBU0UgcmVncmVzc19kYXRhYmFzZV9kZGwgV0lU SCBURU1QTEFURSA9IHRlbXBsYXRlMCBFTkNPRElORyA9ICdVVEY4JzsKKyBBTFRFUiBEQVRB QkFTRSByZWdyZXNzX2RhdGFiYXNlX2RkbCBPV05FUiA9IHJlZ3Jlc3NfZGF0ZGJhOworIEFM VEVSIERBVEFCQVNFIHJlZ3Jlc3NfZGF0YWJhc2VfZGRsIENPTk5FQ1RJT04gTElNSVQgPSAx MjM7CisoMyByb3dzKQorCistLSBXaXRob3V0IG93bmVyCitTRUxFQ1QgZGRsX2ZpbHRlcihw Z19nZXRfZGF0YWJhc2VfZGRsKSBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3Nf ZGF0YWJhc2VfZGRsJywgJ293bmVyJywgJ2ZhbHNlJyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkZGxfZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgREFU QUJBU0UgcmVncmVzc19kYXRhYmFzZV9kZGwgV0lUSCBURU1QTEFURSA9IHRlbXBsYXRlMCBF TkNPRElORyA9ICdVVEY4JzsKKyBBTFRFUiBEQVRBQkFTRSByZWdyZXNzX2RhdGFiYXNlX2Rk bCBDT05ORUNUSU9OIExJTUlUID0gMTIzOworKDIgcm93cykKKworLS0gUHJldHR5LXByaW50 ZWQgb3V0cHV0CitccHNldCBmb3JtYXQgdW5hbGlnbmVkCitTRUxFQ1QgZGRsX2ZpbHRlcihw Z19nZXRfZGF0YWJhc2VfZGRsKSBGUk9NIHBnX2dldF9kYXRhYmFzZV9kZGwoJ3JlZ3Jlc3Nf ZGF0YWJhc2VfZGRsJywgJ3ByZXR0eScsICd0cnVlJywgJ3RhYmxlc3BhY2UnLCAnZmFsc2Un KTsKK2RkbF9maWx0ZXIKK0NSRUFURSBEQVRBQkFTRSByZWdyZXNzX2RhdGFiYXNlX2RkbAor ICAgIFdJVEggVEVNUExBVEUgPSB0ZW1wbGF0ZTAKKyAgICBFTkNPRElORyA9ICdVVEY4JzsK K0FMVEVSIERBVEFCQVNFIHJlZ3Jlc3NfZGF0YWJhc2VfZGRsIE9XTkVSID0gcmVncmVzc19k YXRkYmE7CitBTFRFUiBEQVRBQkFTRSByZWdyZXNzX2RhdGFiYXNlX2RkbCBDT05ORUNUSU9O IExJTUlUID0gMTIzOworKDMgcm93cykKK1xwc2V0IGZvcm1hdCBhbGlnbmVkCitEUk9QIERB VEFCQVNFIHJlZ3Jlc3NfZGF0YWJhc2VfZGRsOworRFJPUCBGVU5DVElPTiBkZGxfZmlsdGVy KHRleHQpOworRFJPUCBST0xFIHJlZ3Jlc3NfZGF0ZGJhOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUKaW5kZXggZjNhMDFhZWNmMDQuLmQ5N2I5ZjE2OTA4IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEzMCw3ICsxMzAsNyBAQCB0ZXN0OiBwYXJ0 aXRpb25fbWVyZ2UgcGFydGl0aW9uX3NwbGl0IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9w cnVuZSByZWxvcHRpb25zCiAjIG9pZGpvaW5zIGlzIHJlYWQtb25seSwgdGhvdWdoLCBhbmQg c2hvdWxkIHJ1biBsYXRlIGZvciBiZXN0IGNvdmVyYWdlCiB0ZXN0OiBvaWRqb2lucyBldmVu dF90cmlnZ2VyCiAKLXRlc3Q6IHJvbGVfZGRsIHRhYmxlc3BhY2VfZGRsCit0ZXN0OiByb2xl X2RkbCB0YWJsZXNwYWNlX2RkbCBkYXRhYmFzZV9kZGwKIAogIyBldmVudF90cmlnZ2VyX2xv Z2luIGNhbm5vdCBydW4gY29uY3VycmVudGx5IHdpdGggYW55IG90aGVyIHRlc3RzIGJlY2F1 c2UKICMgb24tbG9naW4gZXZlbnQgaGFuZGxpbmcgY291bGQgY2F0Y2ggY29ubmVjdGlvbiBv ZiBhIGNvbmN1cnJlbnQgdGVzdC4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2RhdGFiYXNlX2RkbC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9kYXRhYmFzZV9kZGwu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40NDYwZGZlZGNk NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2RhdGFiYXNlX2Rk bC5zcWwKQEAgLTAsMCArMSw4OSBAQAorLS0KKy0tIFRlc3RzIGZvciBwZ19nZXRfZGF0YWJh c2VfZGRsKCkKKy0tCisKKy0tIFRvIHByb2R1Y2Ugc3RhYmxlIHJlZ3Jlc3Npb24gdGVzdCBv dXRwdXQsIGl0J3MgdXN1YWxseSBuZWNlc3NhcnkgdG8KKy0tIGlnbm9yZSBjb2xsYXRpb24g YW5kIGxvY2FsZSByZWxhdGVkIGRldGFpbHMuIFRoaXMgZmlsdGVyCistLSBmdW5jdGlvbiBy ZW1vdmVzIGNvbGxhdGlvbiBhbmQgbG9jYWxlIHJlbGF0ZWQgZGV0YWlscy4KKworQ1JFQVRF IE9SIFJFUExBQ0UgRlVOQ1RJT04gZGRsX2ZpbHRlcihkZGxfaW5wdXQgVEVYVCkKK1JFVFVS TlMgVEVYVCBBUyAkJAorREVDTEFSRQorICAgIGNsZWFuZWRfZGRsIFRFWFQ7CitCRUdJTgor ICAgIC0tIFJlbW92ZSBMT0NBTEVfUFJPVklERVIgcGxhY2Vob2xkZXJzCisgICAgY2xlYW5l ZF9kZGwgOj0gcmVnZXhwX3JlcGxhY2UoCisgICAgICAgIGRkbF9pbnB1dCwKKyAgICAgICAg J1xzKlxtTE9DQUxFX1BST1ZJREVSXE1ccyo9XHMqKFsnJyJdP1teJyciXHNdK1snJyJdPykn LAorICAgICAgICAnJywKKyAgICAgICAgJ2dpJworICAgICk7CisKKwktLSBSZW1vdmUgTENf Q09MTEFURSBhc3NpZ25tZW50cworICAgIGNsZWFuZWRfZGRsIDo9IHJlZ2V4cF9yZXBsYWNl KAorICAgICAgICBjbGVhbmVkX2RkbCwKKyAgICAgICAgJ1xzKkxDX0NPTExBVEVccyo9XHMq KFsnJyJdKVteJyciXSpcMScsCisgICAgICAgICcnLAorICAgICAgICAnZ2knCisgICAgKTsK KworICAgIC0tIFJlbW92ZSBMQ19DVFlQRSBhc3NpZ25tZW50cworICAgIGNsZWFuZWRfZGRs IDo9IHJlZ2V4cF9yZXBsYWNlKAorICAgICAgICBjbGVhbmVkX2RkbCwKKyAgICAgICAgJ1xz KkxDX0NUWVBFXHMqPVxzKihbJyciXSlbXicnIl0qXDEnLAorICAgICAgICAnJywKKyAgICAg ICAgJ2dpJworICAgICk7CisKKyAgICAtLSBSZW1vdmUgTE9DQUxFIHBsYWNlaG9sZGVycwor ICAgIGNsZWFuZWRfZGRsIDo9IHJlZ2V4cF9yZXBsYWNlKAorICAgICAgICBjbGVhbmVkX2Rk bCwKKyAgICAgICAgJ1xzKlxTKkxPQ0FMRVxTKlxzKj0/XHMqKFsnJyJdKVteJyciXSpcMScs CisJCScnLAorCQknZ2knCisJKTsKKworICAgIC0tIFJlbW92ZSBDT0xMQVRJT04gcGxhY2Vo b2xkZXJzCisgICAgY2xlYW5lZF9kZGwgOj0gcmVnZXhwX3JlcGxhY2UoCisgICAgICAgIGNs ZWFuZWRfZGRsLAorICAgICAgICAnXHMqXFMqQ09MTEFUSU9OXFMqXHMqPT9ccyooWycnIl0p W14nJyJdKlwxJywKKyAgICAgICAgJycsCisgICAgICAgICdnaScKKyAgICApOworCisgICAg UkVUVVJOIGNsZWFuZWRfZGRsOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JF QVRFIFJPTEUgcmVncmVzc19kYXRkYmE7CitDUkVBVEUgREFUQUJBU0UgcmVncmVzc19kYXRh YmFzZV9kZGwKKwlFTkNPRElORyB1dGY4IExDX0NPTExBVEUgIkMiIExDX0NUWVBFICJDIiBU RU1QTEFURSB0ZW1wbGF0ZTAKKwlPV05FUiByZWdyZXNzX2RhdGRiYTsKK0FMVEVSIERBVEFC QVNFIHJlZ3Jlc3NfZGF0YWJhc2VfZGRsIENPTk5FQ1RJT05fTElNSVQgMTIzOworCistLSBE YXRhYmFzZSBkb2Vzbid0IGV4aXN0CitTRUxFQ1QgKiBGUk9NIHBnX2dldF9kYXRhYmFzZV9k ZGwoJ3JlZ3Jlc3Npb25fZGF0YWJhc2UnKTsKKworLS0gTlVMTCB2YWx1ZQorU0VMRUNUICog RlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRsKE5VTEwpOworCistLSBJbnZhbGlkIG9wdGlvbiB2 YWx1ZSAoc2hvdWxkIGVycm9yKQorU0VMRUNUICogRlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRs KCdyZWdyZXNzX2RhdGFiYXNlX2RkbCcsICdvd25lcicsICdpbnZhbGlkJyk7CisKKy0tIER1 cGxpY2F0ZSBvcHRpb24gKHNob3VsZCBlcnJvcikKK1NFTEVDVCAqIEZST00gcGdfZ2V0X2Rh dGFiYXNlX2RkbCgncmVncmVzc19kYXRhYmFzZV9kZGwnLCAnb3duZXInLCAnZmFsc2UnLCAn b3duZXInLCAndHJ1ZScpOworCistLSBXaXRob3V0IG9wdGlvbnMKK1NFTEVDVCBkZGxfZmls dGVyKHBnX2dldF9kYXRhYmFzZV9kZGwpIEZST00gcGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVn cmVzc19kYXRhYmFzZV9kZGwnKTsKKworLS0gV2l0aG91dCBvd25lcgorU0VMRUNUIGRkbF9m aWx0ZXIocGdfZ2V0X2RhdGFiYXNlX2RkbCkgRlJPTSBwZ19nZXRfZGF0YWJhc2VfZGRsKCdy ZWdyZXNzX2RhdGFiYXNlX2RkbCcsICdvd25lcicsICdmYWxzZScpOworCistLSBQcmV0dHkt cHJpbnRlZCBvdXRwdXQKK1xwc2V0IGZvcm1hdCB1bmFsaWduZWQKK1NFTEVDVCBkZGxfZmls dGVyKHBnX2dldF9kYXRhYmFzZV9kZGwpIEZST00gcGdfZ2V0X2RhdGFiYXNlX2RkbCgncmVn cmVzc19kYXRhYmFzZV9kZGwnLCAncHJldHR5JywgJ3RydWUnLCAndGFibGVzcGFjZScsICdm YWxzZScpOworXHBzZXQgZm9ybWF0IGFsaWduZWQKKworRFJPUCBEQVRBQkFTRSByZWdyZXNz X2RhdGFiYXNlX2RkbDsKK0RST1AgRlVOQ1RJT04gZGRsX2ZpbHRlcih0ZXh0KTsKK0RST1Ag Uk9MRSByZWdyZXNzX2RhdGRiYTsKLS0gCjIuNDMuMAoK --------------FcdFh9wzeftJtDGwFgHbDoc4 Content-Type: text/x-patch; charset=UTF-8; name="0003-Add-pg_get_tablespace_ddl-function.patch" Content-Disposition: attachment; filename="0003-Add-pg_get_tablespace_ddl-function.patch" Content-Transfer-Encoding: base64 RnJvbSBjODJhOGM2MzRmYTgyOGQyYWUxYWViZjliODM5NGIzYTQyZTFmZTY1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVGh1LCAxOSBNYXIgMjAyNiAwOTo1NToxNiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMy80XSBBZGQgcGdfZ2V0X3RhYmxlc3BhY2VfZGRsKCkgZnVuY3Rpb24KTUlNRS1W ZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNv bnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkFkZCBhIG5ldyBTUUwtY2FsbGFibGUg ZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBEREwgc3RhdGVtZW50cyBuZWVkZWQKdG8gcmVj cmVhdGUgYSB0YWJsZXNwYWNlLiBJdCB0YWtlcyBhIHRhYmxlc3BhY2UgbmFtZSBvciBPSUQg YW5kIGFuCm9wdGlvbmFsIFZBUklBRElDIHRleHQgYXJndW1lbnQgZm9yIG9wdGlvbnMgdGhh dCBhcmUgc3BlY2lmaWVkIGFzCmFsdGVybmF0aW5nIG5hbWUvdmFsdWUgcGFpcnMuIFRoZSBm b2xsb3dpbmcgb3B0aW9uIGlzIHN1cHBvcnRlZDogcHJldHR5Cihib29sZWFuKSBmb3IgZm9y bWF0dGVkIG91dHB1dC4gKEl0IGluY2x1ZGVzIHR3byB2YXJpYW50cyBiZWNhdXNlIHRoZXJl CmlzIG5vIHJlZ3RhYmxlc3BhY2UgcHNldWRvdHlwZS4pIFRoZSByZXR1cm4gaXMgb25lIG9y IG11bHRpcGxlIHJvd3Mgd2hlcmUKdGhlIGZpcnN0IHJvdyBpcyBhIENSRUFURSBUQUJMRVNQ QUNFIHN0YXRlbWVudCBhbmQgc3Vic2VxdWVudCByb3dzIGFyZQpBTFRFUiBUQUJMRVNQQUNF IHN0YXRlbWVudHMgdG8gc2V0IHNvbWUgdGFibGVzcGFjZSBwcm9wZXJ0aWVzLgoKZ2V0X3Jl bG9wdGlvbnMoKSBpbiBydWxldXRpbHMuYyBpcyBtYWRlIG5vbi1zdGF0aWMgc28gaXQgY2Fu IGJlIGNhbGxlZApmcm9tIHRoZSBuZXcgZGRsdXRpbHMuYyBmaWxlLgoKQXV0aG9yOiBOaXNo YW50IFNoYXJtYSA8bmlzaGFudC5zaGFybWFAZW50ZXJwcmlzZWRiLmNvbT4KQXV0aG9yOiBN YW5uaSBXb29kIDxtYW5uaS53b29kQGVudGVycHJpc2VkYi5jb20+CkNvLWF1dGhvcmVkLWJ5 OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IEpp bSBKb25lcyA8amltLmpvbmVzQHVuaS1tdWVuc3Rlci5kZT4KUmV2aWV3ZWQtYnk6IMOBbHZh cm8gSGVycmVyYSA8YWx2aGVycmVAa3VyaWxlbXUuZGU+ClJldmlld2VkLWJ5OiBDaGFvIExp IDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogRXVsZXIgVGF2ZWlyYSA8 ZXVsZXJAZXVsZXJ0by5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwu b3JnL21lc3NhZ2UtaWQvZmxhdC9DQUtXRUI2cm1ubUdLVUE4N1ptcS1zPWIzU2NzbmowMkMw a09iUWpuYkwyYWpmUFdHRXdAbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvZnVu Yy9mdW5jLWluZm8uc2dtbCAgICAgICAgICAgICB8ICAyNyArKysKIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9kZGx1dGlscy5jICAgICAgICAgICAgIHwgMTkwICsrKysrKysrKysrKysrKysr Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgIHwgICA0 ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICB8ICAx NiArKwogc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmggICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90YWJsZXNwYWNlX2RkbC5vdXQgfCAg NjUgKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAg ICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2VfZGRsLnNxbCAg ICAgIHwgIDQzICsrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDM0NCBpbnNlcnRpb25zKCspLCA0 IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvdGFibGVzcGFjZV9kZGwub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv cmVncmVzcy9zcWwvdGFibGVzcGFjZV9kZGwuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8u c2dtbAppbmRleCBhY2QxYTdjZmVlZC4uZjQ0YmQwZDBmOGIgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1 bmMtaW5mby5zZ21sCkBAIC0zOTA4LDYgKzM5MDgsMzMgQEAgYWNsICAgICAgfCB7cG9zdGdy ZXM9YXJ3ZER4dG0vcG9zdGdyZXMsZm9vPXIvcG9zdGdyZXN9CiAgICAgICAgIGZvciBwcmV0 dHktcHJpbnRlZCBvdXRwdXQuCiAgICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgICA8L3Jv dz4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4KKyAg ICAgICAgIDxwcmltYXJ5PnBnX2dldF90YWJsZXNwYWNlX2RkbDwvcHJpbWFyeT4KKyAgICAg ICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5wZ19nZXRfdGFibGVzcGFjZV9k ZGw8L2Z1bmN0aW9uPgorICAgICAgICAoIDxwYXJhbWV0ZXI+dGFibGVzcGFjZTwvcGFyYW1l dGVyPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgIDxvcHRpb25hbD4sIDxsaXRlcmFsPlZB UklBRElDPC9saXRlcmFsPiA8cGFyYW1ldGVyPm9wdGlvbnM8L3BhcmFtZXRlcj4KKyAgICAg ICAgPHR5cGU+dGV4dDwvdHlwZT4gPC9vcHRpb25hbD4gKQorICAgICAgICA8cmV0dXJudmFs dWU+c2V0b2YgdGV4dDwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxw YXJhPgorICAgICAgICA8ZnVuY3Rpb24+cGdfZ2V0X3RhYmxlc3BhY2VfZGRsPC9mdW5jdGlv bj4KKyAgICAgICAgKCA8cGFyYW1ldGVyPnRhYmxlc3BhY2U8L3BhcmFtZXRlcj4gPHR5cGU+ bmFtZTwvdHlwZT4KKyAgICAgICAgPG9wdGlvbmFsPiwgPGxpdGVyYWw+VkFSSUFESUM8L2xp dGVyYWw+IDxwYXJhbWV0ZXI+b3B0aW9uczwvcGFyYW1ldGVyPgorICAgICAgICA8dHlwZT50 ZXh0PC90eXBlPiA8L29wdGlvbmFsPiApCisgICAgICAgIDxyZXR1cm52YWx1ZT5zZXRvZiB0 ZXh0PC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAg ICAgIFJlY29uc3RydWN0cyB0aGUgPGNvbW1hbmQ+Q1JFQVRFIFRBQkxFU1BBQ0U8L2NvbW1h bmQ+IHN0YXRlbWVudCBmb3IKKyAgICAgICAgdGhlIHNwZWNpZmllZCB0YWJsZXNwYWNlIChi eSBPSUQgb3IgbmFtZSkuICBJZiB0aGUgdGFibGVzcGFjZSBoYXMKKyAgICAgICAgb3B0aW9u cyBzZXQsIGFuIDxjb21tYW5kPkFMVEVSIFRBQkxFU1BBQ0UgLi4uIFNFVDwvY29tbWFuZD4g c3RhdGVtZW50CisgICAgICAgIGlzIGFsc28gcmV0dXJuZWQuICBFYWNoIHN0YXRlbWVudCBp cyByZXR1cm5lZCBhcyBhIHNlcGFyYXRlIHJvdy4KKyAgICAgICAgVGhlIGZvbGxvd2luZyBv cHRpb24gaXMgc3VwcG9ydGVkOiA8bGl0ZXJhbD5wcmV0dHk8L2xpdGVyYWw+IChib29sZWFu KQorICAgICAgICBmb3IgZm9ybWF0dGVkIG91dHB1dC4KKyAgICAgICA8L3BhcmE+PC9lbnRy eT4KKyAgICAgIDwvcm93PgogICAgICA8L3Rib2R5PgogICAgIDwvdGdyb3VwPgogICAgPC90 YWJsZT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kZGx1dGlscy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RkbHV0aWxzLmMKaW5kZXggYzA2N2RlMGEzZDIuLjY1 ZGYzYzcyM2NjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZGRsdXRpbHMu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGRsdXRpbHMuYwpAQCAtMjAsMTAgKzIw LDEyIEBACiAKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3Mv aHR1cF9kZXRhaWxzLmgiCi0jaW5jbHVkZSAiYWNjZXNzL3JlbGF0aW9uLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRoaWQuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX2RiX3JvbGVfc2V0dGluZy5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIK KyNpbmNsdWRlICJjb21tb24vcmVscGF0aC5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKQEAgLTM0LDYg KzM2LDcgQEAKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lz Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9ydWxl dXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3ZhcmxlbmEuaCIKQEAgLTY3LDYgKzcw LDggQEAgc3RhdGljIHZvaWQgYXBwZW5kX2RkbF9vcHRpb24oU3RyaW5nSW5mbyBidWYsIGJv b2wgcHJldHR5LCBpbnQgaW5kZW50LAogCQkJCQkJCSAgY29uc3QgY2hhciAqZm10LC4uLikK IAkJCXBnX2F0dHJpYnV0ZV9wcmludGYoNCwgNSk7CiBzdGF0aWMgTGlzdCAqcGdfZ2V0X3Jv bGVfZGRsX2ludGVybmFsKE9pZCByb2xlaWQsIGJvb2wgcHJldHR5KTsKK3N0YXRpYyBMaXN0 ICpwZ19nZXRfdGFibGVzcGFjZV9kZGxfaW50ZXJuYWwoT2lkIHRzaWQsIGJvb2wgcHJldHR5 KTsKK3N0YXRpYyBEYXR1bSBwZ19nZXRfdGFibGVzcGFjZV9kZGxfc3JmKEZ1bmN0aW9uQ2Fs bEluZm8gZmNpbmZvLCBPaWQgdHNpZCwgYm9vbCBpc251bGwpOwogCiAKIC8qCkBAIC01NDEs MyArNTQ2LDE4NiBAQCBwZ19nZXRfcm9sZV9kZGwoUEdfRlVOQ1RJT05fQVJHUykKIAkJU1JG X1JFVFVSTl9ET05FKGZ1bmNjdHgpOwogCX0KIH0KKworLyoKKyAqIHBnX2dldF90YWJsZXNw YWNlX2RkbF9pbnRlcm5hbAorICoJCUdlbmVyYXRlIERETCBzdGF0ZW1lbnRzIHRvIHJlY3Jl YXRlIGEgdGFibGVzcGFjZS4KKyAqCisgKiBSZXR1cm5zIGEgTGlzdCBvZiBwYWxsb2MnZCBz dHJpbmdzLiAgVGhlIGZpcnN0IGVsZW1lbnQgaXMgdGhlCisgKiBDUkVBVEUgVEFCTEVTUEFD RSBzdGF0ZW1lbnQ7IGlmIHRoZSB0YWJsZXNwYWNlIGhhcyByZWxvcHRpb25zLAorICogYSBz ZWNvbmQgZWxlbWVudCB3aXRoIEFMVEVSIFRBQkxFU1BBQ0UgU0VUICguLi4pIGlzIGFwcGVu ZGVkLgorICovCitzdGF0aWMgTGlzdCAqCitwZ19nZXRfdGFibGVzcGFjZV9kZGxfaW50ZXJu YWwoT2lkIHRzaWQsIGJvb2wgcHJldHR5KQoreworCUhlYXBUdXBsZQl0dXBsZTsKKwlGb3Jt X3BnX3RhYmxlc3BhY2UgdHNwRm9ybTsKKwlTdHJpbmdJbmZvRGF0YSBidWY7CisJY2hhcgkg ICAqc3BjbmFtZTsKKwljaGFyCSAgICpzcGNvd25lcjsKKwljaGFyCSAgICpwYXRoOworCWJv b2wJCWlzTnVsbDsKKwlEYXR1bQkJZGF0dW07CisJTGlzdAkgICAqc3RhdGVtZW50cyA9IE5J TDsKKworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFRBQkxFU1BBQ0VPSUQsIE9iamVjdElk R2V0RGF0dW0odHNpZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwK KwkJCQkgZXJybXNnKCJ0YWJsZXNwYWNlIHdpdGggT0lEICV1IGRvZXMgbm90IGV4aXN0IiwK KwkJCQkJCXRzaWQpKSk7CisKKwl0c3BGb3JtID0gKEZvcm1fcGdfdGFibGVzcGFjZSkgR0VU U1RSVUNUKHR1cGxlKTsKKwlzcGNuYW1lID0gcHN0cmR1cChOYW1lU3RyKHRzcEZvcm0tPnNw Y25hbWUpKTsKKworCS8qCisJICogV2UgZG9uJ3Qgc3VwcG9ydCBnZW5lcmF0aW5nIERETCBm b3Igc3lzdGVtIHRhYmxlc3BhY2VzLiAgVGhlIHByaW1hcnkKKwkgKiByZWFzb24gZm9yIHRo aXMgaXMgdGhhdCB1c2VycyBzaG91bGRuJ3QgYmUgcmVjcmVhdGluZyB0aGVtLgorCSAqLwor CWlmIChJc1Jlc2VydmVkTmFtZShzcGNuYW1lKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX1JFU0VSVkVEX05BTUUpLAorCQkJCSBlcnJtc2coInRhYmxlc3Bh Y2UgbmFtZSBcIiVzXCIgaXMgcmVzZXJ2ZWQiLCBzcGNuYW1lKSwKKwkJCQkgZXJyZGV0YWls KCJUYWJsZXNwYWNlIG5hbWVzIHN0YXJ0aW5nIHdpdGggXCJwZ19cIiBhcmUgcmVzZXJ2ZWQg Zm9yIHN5c3RlbSB0YWJsZXNwYWNlcy4iKSkpOworCisJaW5pdFN0cmluZ0luZm8oJmJ1Zik7 CisKKwkvKiBTdGFydCBidWlsZGluZyB0aGUgQ1JFQVRFIFRBQkxFU1BBQ0Ugc3RhdGVtZW50 ICovCisJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiQ1JFQVRFIFRBQkxFU1BBQ0UgJXMiLCBx dW90ZV9pZGVudGlmaWVyKHNwY25hbWUpKTsKKworCS8qIEFkZCBPV05FUiBjbGF1c2UgKi8K KwlzcGNvd25lciA9IEdldFVzZXJOYW1lRnJvbUlkKHRzcEZvcm0tPnNwY293bmVyLCBmYWxz ZSk7CisJYXBwZW5kX2RkbF9vcHRpb24oJmJ1ZiwgcHJldHR5LCA0LCAiT1dORVIgJXMiLAor CQkJCQkgIHF1b3RlX2lkZW50aWZpZXIoc3Bjb3duZXIpKTsKKwlwZnJlZShzcGNvd25lcik7 CisKKwkvKiBGaW5kIHRhYmxlc3BhY2UgZGlyZWN0b3J5IHBhdGggKi8KKwlwYXRoID0gZ2V0 X3RhYmxlc3BhY2VfbG9jYXRpb24odHNpZCk7CisKKwkvKiBBZGQgZGlyZWN0b3J5IExPQ0FU SU9OIChwYXRoKSwgaWYgaXQgZXhpc3RzICovCisJaWYgKHBhdGhbMF0gIT0gJ1wwJykKKwl7 CisJCS8qCisJCSAqIFNwZWNpYWwgY2FzZTogaWYgdGhlIHRhYmxlc3BhY2Ugd2FzIGNyZWF0 ZWQgd2l0aCBHVUMKKwkJICogImFsbG93X2luX3BsYWNlX3RhYmxlc3BhY2VzID0gdHJ1ZSIg YW5kICJMT0NBVElPTiAnJyIsIHBhdGggd2lsbAorCQkgKiBiZWdpbiB3aXRoICJwZ190Ymxz cGMvIi4gSW4gdGhhdCBjYXNlLCBzaG93ICJMT0NBVElPTiAnJyIgYXMgdGhlCisJCSAqIHVz ZXIgb3JpZ2luYWxseSBzcGVjaWZpZWQuCisJCSAqLworCQlpZiAoc3RybmNtcChQR19UQkxT UENfRElSX1NMQVNILCBwYXRoLCBzdHJsZW4oUEdfVEJMU1BDX0RJUl9TTEFTSCkpID09IDAp CisJCQlhcHBlbmRfZGRsX29wdGlvbigmYnVmLCBwcmV0dHksIDQsICJMT0NBVElPTiAnJyIp OworCQllbHNlCisJCQlhcHBlbmRfZGRsX29wdGlvbigmYnVmLCBwcmV0dHksIDQsICJMT0NB VElPTiAlcyIsCisJCQkJCQkJICBxdW90ZV9saXRlcmFsX2NzdHIocGF0aCkpOworCX0KKwlw ZnJlZShwYXRoKTsKKworCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICc7Jyk7CisJc3Rh dGVtZW50cyA9IGxhcHBlbmQoc3RhdGVtZW50cywgcHN0cmR1cChidWYuZGF0YSkpOworCisJ LyogQ2hlY2sgZm9yIHRhYmxlc3BhY2Ugb3B0aW9ucyAqLworCWRhdHVtID0gU3lzQ2FjaGVH ZXRBdHRyKFRBQkxFU1BBQ0VPSUQsIHR1cGxlLAorCQkJCQkJCUFudW1fcGdfdGFibGVzcGFj ZV9zcGNvcHRpb25zLCAmaXNOdWxsKTsKKwlpZiAoIWlzTnVsbCkKKwl7CisJCXJlc2V0U3Ry aW5nSW5mbygmYnVmKTsKKwkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiQUxURVIgVEFCTEVT UEFDRSAlcyBTRVQgKCIsCisJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihzcGNuYW1lKSk7CisJ CWdldF9yZWxvcHRpb25zKCZidWYsIGRhdHVtKTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZygmYnVmLCAiKTsiKTsKKwkJc3RhdGVtZW50cyA9IGxhcHBlbmQoc3RhdGVtZW50cywgcHN0 cmR1cChidWYuZGF0YSkpOworCX0KKworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisJcGZy ZWUoYnVmLmRhdGEpOworCisJcmV0dXJuIHN0YXRlbWVudHM7Cit9CisKKy8qCisgKiBwZ19n ZXRfdGFibGVzcGFjZV9kZGxfc3JmIC0gY29tbW9uIFNSRiBsb2dpYyBmb3IgdGFibGVzcGFj ZSBEREwKKyAqLworc3RhdGljIERhdHVtCitwZ19nZXRfdGFibGVzcGFjZV9kZGxfc3JmKEZ1 bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBPaWQgdHNpZCwgYm9vbCBpc251bGwpCit7CisJRnVu Y0NhbGxDb250ZXh0ICpmdW5jY3R4OworCUxpc3QJICAgKnN0YXRlbWVudHM7CisKKwlpZiAo U1JGX0lTX0ZJUlNUQ0FMTCgpKQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0Owor CQlEZGxPcHRpb24Jb3B0c1tdID0ge3sicHJldHR5IiwgRERMX09QVF9CT09MfX07CisKKwkJ ZnVuY2N0eCA9IFNSRl9GSVJTVENBTExfSU5JVCgpOworCQlvbGRjb250ZXh0ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CisKKwkJ aWYgKGlzbnVsbCkKKwkJeworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQp OworCQkJU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOworCQl9CisKKwkJcGFyc2VfZGRsX29w dGlvbnMoZmNpbmZvLCAxLCBvcHRzLCBsZW5ndGhvZihvcHRzKSk7CisKKwkJc3RhdGVtZW50 cyA9IHBnX2dldF90YWJsZXNwYWNlX2RkbF9pbnRlcm5hbCh0c2lkLAorCQkJCQkJCQkJCQkJ CW9wdHNbMF0uaXNzZXQgJiYgb3B0c1swXS5ib29sdmFsKTsKKwkJZnVuY2N0eC0+dXNlcl9m Y3R4ID0gc3RhdGVtZW50czsKKwkJZnVuY2N0eC0+bWF4X2NhbGxzID0gbGlzdF9sZW5ndGgo c3RhdGVtZW50cyk7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwor CX0KKworCWZ1bmNjdHggPSBTUkZfUEVSQ0FMTF9TRVRVUCgpOworCXN0YXRlbWVudHMgPSAo TGlzdCAqKSBmdW5jY3R4LT51c2VyX2ZjdHg7CisKKwlpZiAoZnVuY2N0eC0+Y2FsbF9jbnRy IDwgZnVuY2N0eC0+bWF4X2NhbGxzKQorCXsKKwkJY2hhcgkgICAqc3RtdDsKKworCQlzdG10 ID0gKGNoYXIgKikgbGlzdF9udGgoc3RhdGVtZW50cywgZnVuY2N0eC0+Y2FsbF9jbnRyKTsK KworCQlTUkZfUkVUVVJOX05FWFQoZnVuY2N0eCwgQ1N0cmluZ0dldFRleHREYXR1bShzdG10 KSk7CisJfQorCWVsc2UKKwl7CisJCWxpc3RfZnJlZV9kZWVwKHN0YXRlbWVudHMpOworCQlT UkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7CisJfQorfQorCisvKgorICogcGdfZ2V0X3RhYmxl c3BhY2VfZGRsX29pZAorICoJCVJldHVybiBEREwgdG8gcmVjcmVhdGUgYSB0YWJsZXNwYWNl LCB0YWtpbmcgT0lELgorICovCitEYXR1bQorcGdfZ2V0X3RhYmxlc3BhY2VfZGRsX29pZChQ R19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCXRzaWQgPSBJbnZhbGlkT2lkOworCWJvb2wJ CWlzbnVsbDsKKworCWlzbnVsbCA9IFBHX0FSR0lTTlVMTCgwKTsKKwl0c2lkID0gUEdfR0VU QVJHX09JRCgwKTsKKworCXJldHVybiBwZ19nZXRfdGFibGVzcGFjZV9kZGxfc3JmKGZjaW5m bywgdHNpZCwgaXNudWxsKTsKK30KKworLyoKKyAqIHBnX2dldF90YWJsZXNwYWNlX2RkbF9u YW1lCisgKgkJUmV0dXJuIERETCB0byByZWNyZWF0ZSBhIHRhYmxlc3BhY2UsIHRha2luZyBu YW1lLgorICovCitEYXR1bQorcGdfZ2V0X3RhYmxlc3BhY2VfZGRsX25hbWUoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwlPaWQJCQl0c2lkID0gSW52YWxpZE9pZDsKKwlOYW1lCQl0c3BuYW1l OworCWJvb2wJCWlzbnVsbDsKKworCWlzbnVsbCA9IFBHX0FSR0lTTlVMTCgwKTsKKworCWlm ICghaXNudWxsKQorCXsKKwkJdHNwbmFtZSA9IFBHX0dFVEFSR19OQU1FKDApOworCQl0c2lk ID0gZ2V0X3RhYmxlc3BhY2Vfb2lkKE5hbWVTdHIoKnRzcG5hbWUpLCBmYWxzZSk7CisJfQor CisJcmV0dXJuIHBnX2dldF90YWJsZXNwYWNlX2RkbF9zcmYoZmNpbmZvLCB0c2lkLCBpc251 bGwpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDdiYzEyNTg5ZTQw Li4xNDUwYzEwMWU5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1 dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtNTQ1 LDcgKzU0NSw3IEBAIHN0YXRpYyB2b2lkIGFkZF9jYXN0X3RvKFN0cmluZ0luZm8gYnVmLCBP aWQgdHlwaWQpOwogc3RhdGljIGNoYXIgKmdlbmVyYXRlX3F1YWxpZmllZF90eXBlX25hbWUo T2lkIHR5cGlkKTsKIHN0YXRpYyB0ZXh0ICpzdHJpbmdfdG9fdGV4dChjaGFyICpzdHIpOwog c3RhdGljIGNoYXIgKmZsYXR0ZW5fcmVsb3B0aW9ucyhPaWQgcmVsaWQpOwotc3RhdGljIHZv aWQgZ2V0X3JlbG9wdGlvbnMoU3RyaW5nSW5mbyBidWYsIERhdHVtIHJlbG9wdGlvbnMpOwor dm9pZAkJZ2V0X3JlbG9wdGlvbnMoU3RyaW5nSW5mbyBidWYsIERhdHVtIHJlbG9wdGlvbnMp Owogc3RhdGljIHZvaWQgZ2V0X2pzb25fcGF0aF9zcGVjKE5vZGUgKnBhdGhfc3BlYywgZGVw YXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCSAgIGJvb2wgc2hvd2ltcGxpY2l0KTsK IHN0YXRpYyB2b2lkIGdldF9qc29uX3RhYmxlX2NvbHVtbnMoVGFibGVGdW5jICp0ZiwgSnNv blRhYmxlUGF0aFNjYW4gKnNjYW4sCkBAIC0xNDE5OSw3ICsxNDE5OSw3IEBAIHN0cmluZ190 b190ZXh0KGNoYXIgKnN0cikKIC8qCiAgKiBHZW5lcmF0ZSBhIEMgc3RyaW5nIHJlcHJlc2Vu dGluZyBhIHJlbGF0aW9uIG9wdGlvbnMgZnJvbSB0ZXh0W10gZGF0dW0uCiAgKi8KLXN0YXRp YyB2b2lkCit2b2lkCiBnZXRfcmVsb3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0gcmVs b3B0aW9ucykKIHsKIAlEYXR1bQkgICAqb3B0aW9uczsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0CmluZGV4IGU5MDgxNDY2NDVmLi5kMjViNjk2NmQ1YiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CkBAIC04NTk2LDYgKzg1OTYsMjIgQEAKICAgcHJvYWxsYXJndHlwZXMgPT4g J3tyZWdyb2xlLHRleHR9JywKICAgcHJvbmFyZ2RlZmF1bHRzID0+ICcxJywgcHJvYXJnZGVm YXVsdHMgPT4gJ3tOVUxMfScsCiAgIHByb3NyYyA9PiAncGdfZ2V0X3JvbGVfZGRsJyB9LAor eyBvaWQgPT4gJzg3NTgnLCBkZXNjciA9PiAnZ2V0IERETCB0byByZWNyZWF0ZSBhIHRhYmxl c3BhY2UnLAorICBwcm9uYW1lID0+ICdwZ19nZXRfdGFibGVzcGFjZV9kZGwnLCBwcm92YXJp YWRpYyA9PiAndGV4dCcsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJvdm9sYXRpbGUgPT4g J3MnLCBwcm9yZXRzZXQgPT4gJ3QnLCBwcm9yb3dzID0+ICcxMCcsIHByb3JldHR5cGUgPT4g J3RleHQnLAorICBwcm9hcmd0eXBlcyA9PiAnb2lkIHRleHQnLAorICBwcm9hcmdtb2RlcyA9 PiAne2ksdn0nLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne29pZCx0ZXh0fScsCisgIHByb25h cmdkZWZhdWx0cyA9PiAnMScsIHByb2FyZ2RlZmF1bHRzID0+ICd7TlVMTH0nLAorICBwcm9z cmMgPT4gJ3BnX2dldF90YWJsZXNwYWNlX2RkbF9vaWQnIH0sCit7IG9pZCA9PiAnODc1OScs IGRlc2NyID0+ICdnZXQgRERMIHRvIHJlY3JlYXRlIGEgdGFibGVzcGFjZScsCisgIHByb25h bWUgPT4gJ3BnX2dldF90YWJsZXNwYWNlX2RkbCcsIHByb3ZhcmlhZGljID0+ICd0ZXh0Jywg cHJvaXNzdHJpY3QgPT4gJ2YnLAorICBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHNldCA9 PiAndCcsIHByb3Jvd3MgPT4gJzEwJywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCisgIHByb2Fy Z3R5cGVzID0+ICduYW1lIHRleHQnLAorICBwcm9hcmdtb2RlcyA9PiAne2ksdn0nLAorICBw cm9hbGxhcmd0eXBlcyA9PiAne25hbWUsdGV4dH0nLAorICBwcm9uYXJnZGVmYXVsdHMgPT4g JzEnLCBwcm9hcmdkZWZhdWx0cyA9PiAne05VTEx9JywKKyAgcHJvc3JjID0+ICdwZ19nZXRf dGFibGVzcGFjZV9kZGxfbmFtZScgfSwKIHsgb2lkID0+ICcyNTA5JywKICAgZGVzY3IgPT4g J2RlcGFyc2UgYW4gZW5jb2RlZCBleHByZXNzaW9uIHdpdGggcHJldHR5LXByaW50IG9wdGlv bicsCiAgIHByb25hbWUgPT4gJ3BnX2dldF9leHByJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBw cm9yZXR0eXBlID0+ICd0ZXh0JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3J1 bGV1dGlscy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKaW5kZXggOTA4YjI3 MDhlZDQuLmFjNDBkNGM3MTRlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9ydWxl dXRpbHMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaApAQCAtNTEsNiAr NTEsNyBAQCBleHRlcm4gY2hhciAqZ2V0X3dpbmRvd19mcmFtZV9vcHRpb25zX2Zvcl9leHBs YWluKGludCBmcmFtZU9wdGlvbnMsCiBleHRlcm4gY2hhciAqZ2VuZXJhdGVfY29sbGF0aW9u X25hbWUoT2lkIGNvbGxpZCk7CiBleHRlcm4gY2hhciAqZ2VuZXJhdGVfb3BjbGFzc19uYW1l KE9pZCBvcGNsYXNzKTsKIGV4dGVybiBjaGFyICpnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmlu ZyhMaXN0ICpib3VuZF9kYXR1bXMpOworZXh0ZXJuIHZvaWQgZ2V0X3JlbG9wdGlvbnMoU3Ry aW5nSW5mbyBidWYsIERhdHVtIHJlbG9wdGlvbnMpOwogCiBleHRlcm4gY2hhciAqcGdfZ2V0 X3N0YXRpc3RpY3NvYmpkZWZfc3RyaW5nKE9pZCBzdGF0ZXh0aWQpOwogCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RhYmxlc3BhY2VfZGRsLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGFibGVzcGFjZV9kZGwub3V0Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45OTM4NDFhN2RlMQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGFibGVzcGFjZV9kZGwub3V0CkBAIC0w LDAgKzEsNjUgQEAKKy0tCistLSBUZXN0cyBmb3IgcGdfZ2V0X3RhYmxlc3BhY2VfZGRsKCkK Ky0tCitTRVQgYWxsb3dfaW5fcGxhY2VfdGFibGVzcGFjZXMgPSB0cnVlOworQ1JFQVRFIFJP TEUgcmVncmVzc190YmxzcGNfZGRsX3VzZXI7CistLSBlcnJvcjogbm9uLWV4aXN0ZW50IHRh Ymxlc3BhY2UgYnkgbmFtZQorU0VMRUNUICogRlJPTSBwZ19nZXRfdGFibGVzcGFjZV9kZGwo J3JlZ3Jlc3Nfbm9uZXhpc3RlbnRfdGJsc3AnKTsKK0VSUk9SOiAgdGFibGVzcGFjZSAicmVn cmVzc19ub25leGlzdGVudF90YmxzcCIgZG9lcyBub3QgZXhpc3QKKy0tIGVycm9yOiBub24t ZXhpc3RlbnQgdGFibGVzcGFjZSBieSBPSUQKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3RhYmxl c3BhY2VfZGRsKDA6Om9pZCk7CitFUlJPUjogIHRhYmxlc3BhY2Ugd2l0aCBPSUQgMCBkb2Vz IG5vdCBleGlzdAorLS0gTlVMTCBpbnB1dCByZXR1cm5zIG5vIHJvd3MgKG5hbWUgdmFyaWFu dCkKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3RhYmxlc3BhY2VfZGRsKE5VTEw6Om5hbWUpOwor IHBnX2dldF90YWJsZXNwYWNlX2RkbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisoMCBy b3dzKQorCistLSBOVUxMIGlucHV0IHJldHVybnMgbm8gcm93cyAoT0lEIHZhcmlhbnQpCitT RUxFQ1QgKiBGUk9NIHBnX2dldF90YWJsZXNwYWNlX2RkbChOVUxMOjpvaWQpOworIHBnX2dl dF90YWJsZXNwYWNlX2RkbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisoMCByb3dzKQor CistLSB0YWJsZXNwYWNlIG5hbWUgcmVxdWlyaW5nIHF1b3RpbmcKK0NSRUFURSBUQUJMRVNQ QUNFICJyZWdyZXNzXyB0YmxzcCIgT1dORVIgcmVncmVzc190YmxzcGNfZGRsX3VzZXIgTE9D QVRJT04gJyc7CitTRUxFQ1QgKiBGUk9NIHBnX2dldF90YWJsZXNwYWNlX2RkbCgncmVncmVz c18gdGJsc3AnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3RhYmxl c3BhY2VfZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBDUkVBVEUgVEFCTEVTUEFDRSAicmVncmVzc18gdGJsc3AiIE9XTkVS IHJlZ3Jlc3NfdGJsc3BjX2RkbF91c2VyIExPQ0FUSU9OICcnOworKDEgcm93KQorCitEUk9Q IFRBQkxFU1BBQ0UgInJlZ3Jlc3NfIHRibHNwIjsKKy0tIHRhYmxlc3BhY2Ugd2l0aCBtdWx0 aXBsZSBvcHRpb25zCitDUkVBVEUgVEFCTEVTUEFDRSByZWdyZXNzX2FsbG9wdF90YmxzcCBP V05FUiByZWdyZXNzX3RibHNwY19kZGxfdXNlciBMT0NBVElPTiAnJworICBXSVRIIChzZXFf cGFnZV9jb3N0ID0gJzEuNScsIHJhbmRvbV9wYWdlX2Nvc3QgPSAnMS4xMjM0NTY3ODkwJywK KyAgICAgICAgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5ID0gJzE3JywgbWFpbnRlbmFuY2Vf aW9fY29uY3VycmVuY3kgPSAnMTgnKTsKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3RhYmxlc3Bh Y2VfZGRsKCdyZWdyZXNzX2FsbG9wdF90YmxzcCcpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19n ZXRfdGFibGVzcGFjZV9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBUQUJMRVNQ QUNFIHJlZ3Jlc3NfYWxsb3B0X3RibHNwIE9XTkVSIHJlZ3Jlc3NfdGJsc3BjX2RkbF91c2Vy IExPQ0FUSU9OICcnOworIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc19hbGxvcHRfdGJsc3Ag U0VUIChzZXFfcGFnZV9jb3N0PScxLjUnLCByYW5kb21fcGFnZV9jb3N0PScxLjEyMzQ1Njc4 OTAnLCBlZmZlY3RpdmVfaW9fY29uY3VycmVuY3k9JzE3JywgbWFpbnRlbmFuY2VfaW9fY29u Y3VycmVuY3k9JzE4Jyk7CisoMiByb3dzKQorCistLSBwcmV0dHktcHJpbnRlZCBvdXRwdXQK K1xwc2V0IGZvcm1hdCB1bmFsaWduZWQKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3RhYmxlc3Bh Y2VfZGRsKCdyZWdyZXNzX2FsbG9wdF90YmxzcCcsICdwcmV0dHknLCAndHJ1ZScpOworcGdf Z2V0X3RhYmxlc3BhY2VfZGRsCitDUkVBVEUgVEFCTEVTUEFDRSByZWdyZXNzX2FsbG9wdF90 YmxzcAorICAgIE9XTkVSIHJlZ3Jlc3NfdGJsc3BjX2RkbF91c2VyCisgICAgTE9DQVRJT04g Jyc7CitBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfYWxsb3B0X3RibHNwIFNFVCAoc2VxX3Bh Z2VfY29zdD0nMS41JywgcmFuZG9tX3BhZ2VfY29zdD0nMS4xMjM0NTY3ODkwJywgZWZmZWN0 aXZlX2lvX2NvbmN1cnJlbmN5PScxNycsIG1haW50ZW5hbmNlX2lvX2NvbmN1cnJlbmN5PScx OCcpOworKDIgcm93cykKK1xwc2V0IGZvcm1hdCBhbGlnbmVkCitEUk9QIFRBQkxFU1BBQ0Ug cmVncmVzc19hbGxvcHRfdGJsc3A7CistLSB0ZXN0IGJ5IE9JRAorQ1JFQVRFIFRBQkxFU1BB Q0UgcmVncmVzc19vaWRfdGJsc3AgT1dORVIgcmVncmVzc190YmxzcGNfZGRsX3VzZXIgTE9D QVRJT04gJyc7CitTRUxFQ1Qgb2lkIEFTIHRzaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJF IHNwY25hbWUgPSAncmVncmVzc19vaWRfdGJsc3AnIFxnc2V0CitTRUxFQ1QgKiBGUk9NIHBn X2dldF90YWJsZXNwYWNlX2RkbCg6dHNpZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBnX2dldF90YWJsZXNwYWNlX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVEFCTEVTUEFDRSByZWdy ZXNzX29pZF90YmxzcCBPV05FUiByZWdyZXNzX3RibHNwY19kZGxfdXNlciBMT0NBVElPTiAn JzsKKygxIHJvdykKKworRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3Nfb2lkX3RibHNwOworRFJP UCBST0xFIHJlZ3Jlc3NfdGJsc3BjX2RkbF91c2VyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxf c2NoZWR1bGUKaW5kZXggN2UwNTljZWYwMzQuLmYzYTAxYWVjZjA0IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEzMCw3ICsxMzAsNyBAQCB0ZXN0OiBwYXJ0aXRp b25fbWVyZ2UgcGFydGl0aW9uX3NwbGl0IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVu ZSByZWxvcHRpb25zCiAjIG9pZGpvaW5zIGlzIHJlYWQtb25seSwgdGhvdWdoLCBhbmQgc2hv dWxkIHJ1biBsYXRlIGZvciBiZXN0IGNvdmVyYWdlCiB0ZXN0OiBvaWRqb2lucyBldmVudF90 cmlnZ2VyCiAKLXRlc3Q6IHJvbGVfZGRsCit0ZXN0OiByb2xlX2RkbCB0YWJsZXNwYWNlX2Rk bAogCiAjIGV2ZW50X3RyaWdnZXJfbG9naW4gY2Fubm90IHJ1biBjb25jdXJyZW50bHkgd2l0 aCBhbnkgb3RoZXIgdGVzdHMgYmVjYXVzZQogIyBvbi1sb2dpbiBldmVudCBoYW5kbGluZyBj b3VsZCBjYXRjaCBjb25uZWN0aW9uIG9mIGEgY29uY3VycmVudCB0ZXN0LgpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGFibGVzcGFjZV9kZGwuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvdGFibGVzcGFjZV9kZGwuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi45MGVlNmMxZDcwMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2VfZGRsLnNxbApAQCAtMCwwICsxLDQzIEBACist LQorLS0gVGVzdHMgZm9yIHBnX2dldF90YWJsZXNwYWNlX2RkbCgpCistLQorCitTRVQgYWxs b3dfaW5fcGxhY2VfdGFibGVzcGFjZXMgPSB0cnVlOworQ1JFQVRFIFJPTEUgcmVncmVzc190 YmxzcGNfZGRsX3VzZXI7CisKKy0tIGVycm9yOiBub24tZXhpc3RlbnQgdGFibGVzcGFjZSBi eSBuYW1lCitTRUxFQ1QgKiBGUk9NIHBnX2dldF90YWJsZXNwYWNlX2RkbCgncmVncmVzc19u b25leGlzdGVudF90YmxzcCcpOworCistLSBlcnJvcjogbm9uLWV4aXN0ZW50IHRhYmxlc3Bh Y2UgYnkgT0lECitTRUxFQ1QgKiBGUk9NIHBnX2dldF90YWJsZXNwYWNlX2RkbCgwOjpvaWQp OworCistLSBOVUxMIGlucHV0IHJldHVybnMgbm8gcm93cyAobmFtZSB2YXJpYW50KQorU0VM RUNUICogRlJPTSBwZ19nZXRfdGFibGVzcGFjZV9kZGwoTlVMTDo6bmFtZSk7CisKKy0tIE5V TEwgaW5wdXQgcmV0dXJucyBubyByb3dzIChPSUQgdmFyaWFudCkKK1NFTEVDVCAqIEZST00g cGdfZ2V0X3RhYmxlc3BhY2VfZGRsKE5VTEw6Om9pZCk7CisKKy0tIHRhYmxlc3BhY2UgbmFt ZSByZXF1aXJpbmcgcXVvdGluZworQ1JFQVRFIFRBQkxFU1BBQ0UgInJlZ3Jlc3NfIHRibHNw IiBPV05FUiByZWdyZXNzX3RibHNwY19kZGxfdXNlciBMT0NBVElPTiAnJzsKK1NFTEVDVCAq IEZST00gcGdfZ2V0X3RhYmxlc3BhY2VfZGRsKCdyZWdyZXNzXyB0YmxzcCcpOworRFJPUCBU QUJMRVNQQUNFICJyZWdyZXNzXyB0YmxzcCI7CisKKy0tIHRhYmxlc3BhY2Ugd2l0aCBtdWx0 aXBsZSBvcHRpb25zCitDUkVBVEUgVEFCTEVTUEFDRSByZWdyZXNzX2FsbG9wdF90YmxzcCBP V05FUiByZWdyZXNzX3RibHNwY19kZGxfdXNlciBMT0NBVElPTiAnJworICBXSVRIIChzZXFf cGFnZV9jb3N0ID0gJzEuNScsIHJhbmRvbV9wYWdlX2Nvc3QgPSAnMS4xMjM0NTY3ODkwJywK KyAgICAgICAgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5ID0gJzE3JywgbWFpbnRlbmFuY2Vf aW9fY29uY3VycmVuY3kgPSAnMTgnKTsKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3RhYmxlc3Bh Y2VfZGRsKCdyZWdyZXNzX2FsbG9wdF90YmxzcCcpOworCistLSBwcmV0dHktcHJpbnRlZCBv dXRwdXQKK1xwc2V0IGZvcm1hdCB1bmFsaWduZWQKK1NFTEVDVCAqIEZST00gcGdfZ2V0X3Rh Ymxlc3BhY2VfZGRsKCdyZWdyZXNzX2FsbG9wdF90YmxzcCcsICdwcmV0dHknLCAndHJ1ZScp OworXHBzZXQgZm9ybWF0IGFsaWduZWQKK0RST1AgVEFCTEVTUEFDRSByZWdyZXNzX2FsbG9w dF90YmxzcDsKKworLS0gdGVzdCBieSBPSUQKK0NSRUFURSBUQUJMRVNQQUNFIHJlZ3Jlc3Nf b2lkX3RibHNwIE9XTkVSIHJlZ3Jlc3NfdGJsc3BjX2RkbF91c2VyIExPQ0FUSU9OICcnOwor U0VMRUNUIG9pZCBBUyB0c2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lID0g J3JlZ3Jlc3Nfb2lkX3RibHNwJyBcZ3NldAorU0VMRUNUICogRlJPTSBwZ19nZXRfdGFibGVz cGFjZV9kZGwoOnRzaWQpOworRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3Nfb2lkX3RibHNwOwor CitEUk9QIFJPTEUgcmVncmVzc190YmxzcGNfZGRsX3VzZXI7Ci0tIAoyLjQzLjAKCg== --------------FcdFh9wzeftJtDGwFgHbDoc4--