Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1liSsn-0002Tz-Ad for pgsql-odbc@arkaria.postgresql.org; Mon, 17 May 2021 02:21:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1liSsm-0002jl-32 for pgsql-odbc@arkaria.postgresql.org; Mon, 17 May 2021 02:21:24 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1liSsl-0002jd-M2 for pgsql-odbc@lists.postgresql.org; Mon, 17 May 2021 02:21:23 +0000 Received: from mx08-00574e01.pphosted.com ([185.183.31.38]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1liSsZ-00071j-QT for pgsql-odbc@lists.postgresql.org; Mon, 17 May 2021 02:21:21 +0000 Received: from pps.filterd (m0213998.ppops.net [127.0.0.1]) by mx08-00574e01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 14H2HwA2004291 for ; Mon, 17 May 2021 03:21:08 +0100 Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by mx08-00574e01.pphosted.com with ESMTP id 38k6kercf4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 17 May 2021 03:21:07 +0100 Received: by mail-ed1-f69.google.com with SMTP id y19-20020a0564022713b029038a9f36060dso3049043edd.4 for ; Sun, 16 May 2021 19:21:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iress-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=hayuxhOYwG/RuC+Dze2TuRQWtR9NKQRv74T2nCEkOXk=; b=J5kJ77JR0PMgU5sMrJOTLoi4L7NYSrIQ4yMe6Y4rMcrA1HynTgcl17rc6wxhaUHHIK itWNCcFUkrS9zdmrLji60YG4W1UZjpYxuO9hL/BndLXOIYHkI1MpFzsUau8G1q/kwka0 uFWnDwg7kvwfSUdhSzvdxTWWwldJ2fQPX10k+KM5qVN8rzBdgfi/o4Q8+tDRD15efnDq KVxqle25W3Y/sUnVodQKdAm7YdD5FugnFxkNSLw665zVc2O2qAClmYmeoY5OkL0X50Jc BJq4CC/kQgnWSKfewfrJkGbIn02jBDaXfg+4kWfWX1v7+hYlA/VCIoFlUZ3gED3BPdtb Acow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=hayuxhOYwG/RuC+Dze2TuRQWtR9NKQRv74T2nCEkOXk=; b=Ht3MOlwu9jEXHghYoBY3RQ37eX6byBTG5pHh2nS+7vuTwaCTGS9XL4IW3whJIRjCnZ cJZowweVjeErmrGNrBEmg5WiMZRU0EvVl0/tEvimU0QwM0zcIcOVwBrvuZXbMxnqd+eY hvhZqVUrk9VF/0hlK0bq2KZtAdzwmd3/Xbib+gCVp3gLQYk1ttXrVtX/IYGpH4q5DLVU MuvOwhtSfmLunj3hf3L+1gcxVowNFpr0IXSokdw2qV3stuN52gCZHThoCbwwlPPL41Ch R/9lqxPiLRDdZ5vtEkcF3Rmzyx55od0KjAK5IuUqJLPjcJqfv2T7FJ9Q2b0ISQHIaDn3 TOzA== X-Gm-Message-State: AOAM532V/4xnF3IH4SBlQiukTdzGjnEqWcAMgf09rctp/8FlRxrZknuM ntSzFuabWlE5DUvlTZpeHBZjDz5jpOvjF6z1AVfdUbMqiZLrsKW/gQT7x2Y0Z96iwVXI34CY7oc VXIbjOAVa30gvbCfhByGXWSDSP/UW+q1N7G+Lpf7SOh7hnyAsSAEq0w== X-Received: by 2002:a17:907:9895:: with SMTP id ja21mr6543364ejc.426.1621218067376; Sun, 16 May 2021 19:21:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzbJf53bi/qOgwU35kW8iryFUoKQazMeDRXpV4+rS435rzwHMbKeFiYqKiFqMr+TWZnBDxNHWYEGHgY X-Received: by 2002:a17:907:9895:: with SMTP id ja21mr6543344ejc.426.1621218067129; Sun, 16 May 2021 19:21:07 -0700 (PDT) Received: from eu1.smtp.exclaimer.net (eu1.smtp.exclaimer.net. [104.40.229.156]) by smtp-relay.gmail.com with ESMTPS id v1sm321808ejd.106.2021.05.16.19.21.06 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 16 May 2021 19:21:07 -0700 (PDT) X-Relaying-Domain: iress.com Received: from mail-wr1-f70.google.com (209.85.221.70) by eu1.smtp.exclaimer.net (104.40.229.156) with Exclaimer Signature Manager ESMTP Proxy eu1.smtp.exclaimer.net (tlsversion=TLS12, tlscipher=TLS_ECDHE_WITH_AES256_SHA1); Mon, 17 May 2021 02:21:07 +0000 X-ExclaimerHostedSignatures-MessageProcessed: true X-ExclaimerProxyLatency: 4823155 X-ExclaimerImprintLatency: 3162212 X-ExclaimerImprintAction: 12889a21ef0645138a2cc3cd46c53b68 Received: by mail-wr1-f70.google.com with SMTP id f1-20020adf9f410000b029010e8048a0e3so3127193wrg.4 for ; Sun, 16 May 2021 19:21:06 -0700 (PDT) X-Received: by 2002:a1c:a758:: with SMTP id q85mr3848476wme.79.1621218065770; Sun, 16 May 2021 19:21:05 -0700 (PDT) X-Received: by 2002:a1c:a758:: with SMTP id q85mr3848454wme.79.1621218065376; Sun, 16 May 2021 19:21:05 -0700 (PDT) MIME-Version: 1.0 From: Adrian Grucza Date: Mon, 17 May 2021 12:20:54 +1000 Message-ID: Subject: [PATCH] Automatic fetching of refcursors To: pgsql-odbc@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000e47f4a05c27d3e3c" X-Proofpoint-GUID: hrPltLHPC4hb4fejeBGhDMkh5L-w_D58 X-Proofpoint-ORIG-GUID: hrPltLHPC4hb4fejeBGhDMkh5L-w_D58 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. --000000000000e47f4a05c27d3e3c Content-Type: multipart/alternative; boundary="000000000000e47f4805c27d3e3a" --000000000000e47f4805c27d3e3a Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi all, I've created a patch that enables automatic fetching of refcursors from a function/procedure. Functions/procedures can return one or more refcursors, and the client application can then consume them the way multiple result sets are normally consumed via ODBC. Below is a summary of the attached patches: 0001 (`regress.ps1` changes unrelated to refcursors) * Allow installation and testing of a debug build of the driver (useful for debugging) * Fixed a bug in `regress.ps1` where accepting the default password of `postgres` did not work 0002 * Added a FetchRefcursors setting * When FetchRefcursors is enabled, executes some refcursor code in `statement.c` that already existed but was not compiled in due to REFCUR_SUPPORT not being #defined 0003 * Enhanced refcursor code to support multiple refcursors * Fixed an issue where output parameter bindings were not processed when using refcursors * Added a `fetch-refcursors` regression test Notes: * Client application must execute the statement in a transaction to avoid cursors being closed prematurely (i.e. turn auto-commit off) * Works with both ODBC CALL and PostgreSQL CALL syntaxes * A search through the mailing list archive shows that refcursor support is a feature that multiple people have wanted Regards, Adrian Grucza Technical Lead Tel: +61390185800 adrian.grucza@iress.com www.iress.com Level 16, 385 Bourke Street, Melbourne, Victoria, 3000 The contents of this email originated from Iress. For this purpose Iress in= cludes Iress Limited and/or any of its subsidiaries, holding companies and = trading entities. =E2=80=8BIf you have received this email in error please = notify the sender immediately and delete this email. nosig --000000000000e47f4805c27d3e3a Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable
Hi all,

I've created a= patch that enables automatic fetching of refcursors from a function/proced= ure. Functions/procedures can return one or more refcursors, and the client= application can then consume them the way multiple result sets are normall= y consumed via ODBC.

Below is a summary of the attached patches:
=
0001 (`regress.ps1` changes unrelated to refcursors)
=C2=A0 * Allow = installation and testing of a debug build of the driver (useful for debuggi= ng)
=C2=A0 * Fixed a bug in `regress.ps1` where accepting the default p= assword of `postgres` did not work

0002
=C2=A0 * Added a FetchRef= cursors setting
=C2=A0 * When FetchRefcursors is enabled, executes some = refcursor code in `statement.c` that already existed but was not compiled i= n due to REFCUR_SUPPORT not being #defined

0003
=C2=A0 * Enhanced= refcursor code to support multiple refcursors
=C2=A0 * Fixed an issue w= here output parameter bindings were not processed when using refcursors
= =C2=A0 * Added a `fetch-refcursors` regression test

Notes:
=C2= =A0 * Client application must execute the statement in a transaction to avo= id cursors being closed prematurely (i.e. turn auto-commit off)
=C2=A0 *= Works with both ODBC CALL and PostgreSQL CALL syntaxes
=C2=A0 * A searc= h through the mailing list archive shows that refcursor support is a featur= e that multiple people have wanted

Regards,
3D"iress.com"
Adrian Grucza​  
<= /table><= /table>
Technical Lead
Tel: +61390185800
<= table cellpadding=3D"0" cellspacing=3D"0" border=3D"0" style=3D"font-size:0= ;color:#999999;font-style:normal;font-weight:400;white-space:nowrap;">
adrian.grucza@iress.com
www.iress.com
Level 16, 385 Bourke&n= bsp;Street,
 Melbourne, Victoria, 3000
The contents of= this email originated from Iress. For this purpose Iress includes Iress Li= mited and/or any of its subsidiaries, holding companies and trading entitie= s. ​If you have received this email in error please notify the sender= immediately and delete this email. 
nosig
--000000000000e47f4805c27d3e3a-- --000000000000e47f4a05c27d3e3c Content-Type: application/octet-stream; name="0001-Add-DriverConfiguration-param-fix-default-passwd.patch" Content-Disposition: attachment; filename="0001-Add-DriverConfiguration-param-fix-default-passwd.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_korzc0hs0 RnJvbSBiYzRkMDI1NmMzZDI0ZDU4NDYwMDQzZmJkYWRiMzgzZTIwNDc1NTgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBZHJpYW4gR3J1Y3phIDxhZHJpYW4uZ3J1Y3phQGlyZXNzLmNv bT4KRGF0ZTogV2VkLCAxMiBNYXkgMjAyMSAxNjo1MDo0MiArMTAwMApTdWJqZWN0OiBbUEFUQ0gg MS8zXSBBZGQgRHJpdmVyQ29uZmlndXJhdGlvbiBwYXJhbTsgZml4IGRlZmF1bHQgcGFzc3dkCgot LS0KIHdpbmJ1aWxkL3JlZ3Jlc3MucHMxIHwgMTEgKysrKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvd2luYnVpbGQv cmVncmVzcy5wczEgYi93aW5idWlsZC9yZWdyZXNzLnBzMQppbmRleCBiNWUxZjg1Li5mNDY0YTRh IDEwMDY0NAotLS0gYS93aW5idWlsZC9yZWdyZXNzLnBzMQorKysgYi93aW5idWlsZC9yZWdyZXNz LnBzMQpAQCAtMjcsNyArMjcsOSBAQAogICAgIGF1dG9tYXRpY2FsbHkgdW5sZXNzIHRoaXMgb3B0 aW9uIGlzIHNwZWNpZmllZC4gIEN1cnJlbnRseSAiNC4wIiwKICAgICAiMTIuMCIgb3IgIjE0LjAi IGlzIGF2YWlsYWJsZS4KIC5QQVJBTUVURVIgQ29uZmlndXJhdGlvbgotICAgIFNwZWNpZnkgIlJl bGVhc2UiKGRlZmF1bHQpIG9yICJEZWJ1ZyIuCisgICAgU3BlY2lmeSB0aGUgY29uZmlndXJhdGlv biB1c2VkIHRvIGJ1aWxkIHRoZSByZWdyZXNzaW9uIHRlc3RzLiAiUmVsZWFzZSIoZGVmYXVsdCkg b3IgIkRlYnVnIi4KKy5QQVJBTUVURVIgRHJpdmVyQ29uZmlndXJhdGlvbgorICAgIFNwZWNpZnkg dGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGRyaXZlciB0byB0ZXN0LiAiUmVsZWFzZSIoZGVmYXVs dCkgb3IgIkRlYnVnIi4KIC5QQVJBTUVURVIgQnVpbGRDb25maWdQYXRoCiAgICAgU3BlY2lmeSB0 aGUgY29uZmlndXJhdGlvbiB4bWwgZmlsZSBuYW1lIGlmIHlvdSB3YW50IHRvIHVzZQogICAgIHRo ZSBjb25maWd1cmF0aW9uIGZpbGUgb3RoZXIgdGhhbiBzdGFuZGFyZCBvbmUuCkBAIC03NCw2ICs3 Niw3IEBAIFBhcmFtKAogW3N0cmluZ10kTVNUb29sc1ZlcnNpb24sCiBbVmFsaWRhdGVTZXQoIkRl YnVnIiwgIlJlbGVhc2UiKV0KIFtTdHJpbmddJENvbmZpZ3VyYXRpb249IlJlbGVhc2UiLAorW1N0 cmluZ10kRHJpdmVyQ29uZmlndXJhdGlvbj0iUmVsZWFzZSIsCiBbc3RyaW5nXSRCdWlsZENvbmZp Z1BhdGgsCiBbVmFsaWRhdGVTZXQoIm9mZiIsICJvbiIsICJib3RoIildCiBbc3RyaW5nXSREZWNs YXJlRmV0Y2g9Im9uIiwKQEAgLTI2Myw3ICsyNjYsNyBAQCBmdW5jdGlvbiBTcGVjaWFsRHNuKCR0 ZXN0ZHNuLCAkdGVzdGRyaXZlcikKIAkJCSR1aWQgPSAkaW4KIAkJfQogCQkkaW4gPSByZWFkLWhv c3QgLWFzc2VjdXJlc3RyaW5nICJQYXNzd29yZCBbJHBhc3N3ZF0iCi0JCWlmICgiJGluIiAtbmUg IiIpIHsKKwkJaWYgKCRpbi5MZW5ndGggLW5lIDApIHsKIAkJCSRwdHIgPSBbU3lzdGVtLlJ1bnRp bWUuSW50ZXJvcFNlcnZpY2VzLk1hcnNoYWxdOjpTZWN1cmVTdHJpbmdUb0JTVFIoJGluKQogCQkJ JHBhc3N3ZCA9IFtTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMuTWFyc2hhbF06OlB0clRv U3RyaW5nQlNUUigkcHRyKQogCQl9CkBAIC0zOTQsMTIgKzM5NywxMiBAQCBmb3JlYWNoICgkcGwg aW4gJHBhcnkpIHsKIAkgIldpbjMyIiB7CiAJCQkkdGFyZ2V0ZGlyPSJ0ZXN0X3g4NiIKIAkJCSRi aXQ9IjMyLWJpdCIKLQkJCSRkbGxkaXI9IiRvYmpiYXNlXHg4Nl8ke2Fuc2lfZGlyX3BhcnR9X1Jl bGVhc2UiCisJCQkkZGxsZGlyPSIkb2JqYmFzZVx4ODZfJHthbnNpX2Rpcl9wYXJ0fV8kRHJpdmVy Q29uZmlndXJhdGlvbiIKIAkJfQogCSBkZWZhdWx0IHsKIAkJCSR0YXJnZXRkaXI9InRlc3RfeDY0 IgogCQkJJGJpdD0iNjQtYml0IgotCQkJJGRsbGRpcj0iJG9iamJhc2VceDY0XyR7YW5zaV9kaXJf cGFydH1fUmVsZWFzZSIKKwkJCSRkbGxkaXI9IiRvYmpiYXNlXHg2NF8ke2Fuc2lfZGlyX3BhcnR9 XyREcml2ZXJDb25maWd1cmF0aW9uIgogCQl9CiAJfQogCXB1c2hkICRwdXNoZGlyXCR0YXJnZXRk aXIKLS0gCjIuMzEuMS53aW5kb3dzLjEKCg== --000000000000e47f4a05c27d3e3c Content-Type: application/octet-stream; name="0002-Remove-REFCUR_SUPPORT-add-FetchRefcursors-setting.patch" Content-Disposition: attachment; filename="0002-Remove-REFCUR_SUPPORT-add-FetchRefcursors-setting.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_korzc0i61 RnJvbSAxNzMzMTFhMGE2YmE1OTk1NWJjMGEyNGNmZjY5NzBiM2MwMDA3OTU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBZHJpYW4gR3J1Y3phIDxhZHJpYW4uZ3J1Y3phQGlyZXNzLmNv bT4KRGF0ZTogV2VkLCAxMiBNYXkgMjAyMSAyMzoxNjozNSArMTAwMApTdWJqZWN0OiBbUEFUQ0gg Mi8zXSBSZW1vdmUgUkVGQ1VSX1NVUFBPUlQsIGFkZCBGZXRjaFJlZmN1cnNvcnMgc2V0dGluZwoK LS0tCiBkbGdfc3BlY2lmaWMuYyB8IDE4ICsrKysrKysrKysrKysrKysrKwogZGxnX3NwZWNpZmlj LmggfCAgNCArKysrCiBkbGdfd2luZ3VpLmMgICB8ICAyICsrCiBwc3Fsb2RiYy5oICAgICB8ICAx ICsKIHBzcWxvZGJjLnJjICAgIHwgIDQgKysrKwogcmVzb3VyY2UuaCAgICAgfCAgMyArKy0KIHN0 YXRlbWVudC5jICAgIHwgMjcgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiA3IGZpbGVzIGNo YW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Rs Z19zcGVjaWZpYy5jIGIvZGxnX3NwZWNpZmljLmMKaW5kZXggM2YyMTkyYy4uNDU2NjJhNiAxMDA2 NDQKLS0tIGEvZGxnX3NwZWNpZmljLmMKKysrIGIvZGxnX3NwZWNpZmljLmMKQEAgLTM2OSw2ICsz NjksNyBAQCBNWUxPRyhERVRBSUxfTE9HX0xFVkVMLCAiaGxlbj0iIEZPUk1BVF9TU0laRV9UICJc biIsIGhsZW4pOwogCQkJIiVzIgkJLyogSU5JS0VFUEFMSVZFIFRJTUUvSU5URVJWQUwgKi8KIAkJ CUFCQlJfTlVNRVJJQ19BUyAiPSVkOyIKIAkJCUlOSV9PUFRJT05BTF9FUlJPUlMgIj0lZDsiCisJ CQlJTklfRkVUQ0hSRUZDVVJTT1JTICI9JWQ7IgogI2lmZGVmCV9IQU5ETEVfRU5MSVNUX0lOX0RU Q18KIAkJCUlOSV9YQU9QVCAiPSVkIgkvKiBYQU9QVCAqLwogI2VuZGlmIC8qIF9IQU5ETEVfRU5M SVNUX0lOX0RUQ18gKi8KQEAgLTQwMyw2ICs0MDQsNyBAQCBNWUxPRyhERVRBSUxfTE9HX0xFVkVM LCAiaGxlbj0iIEZPUk1BVF9TU0laRV9UICJcbiIsIGhsZW4pOwogCQkJLG1ha2VLZWVwYWxpdmVD b25uZWN0U3RyaW5nKGtlZXBhbGl2ZVN0ciwgc2l6ZW9mKGtlZXBhbGl2ZVN0ciksIGNpLCBGQUxT RSkKIAkJCSxjaS0+bnVtZXJpY19hcwogCQkJLGNpLT5vcHRpb25hbF9lcnJvcnMKKwkJCSxjaS0+ ZmV0Y2hfcmVmY3Vyc29ycwogI2lmZGVmCV9IQU5ETEVfRU5MSVNUX0lOX0RUQ18KIAkJCSxjaS0+ eGFfb3B0CiAjZW5kaWYgLyogX0hBTkRMRV9FTkxJU1RfSU5fRFRDXyAqLwpAQCAtNDYxLDYgKzQ2 Myw4IEBAIE1ZTE9HKERFVEFJTF9MT0dfTEVWRUwsICJobGVuPSIgRk9STUFUX1NTSVpFX1QgIlxu IiwgaGxlbik7CiAJCQlmbGFnIHw9IEJJVF9MT1dFUkNBU0VJREVOVElGSUVSOwogCQlpZiAoY2kt Pm9wdGlvbmFsX2Vycm9ycykKIAkJCWZsYWcgfD0gQklUX09QVElPTkFMRVJST1JTOworCQlpZiAo Y2ktPmZldGNoX3JlZmN1cnNvcnMpCisJCQlmbGFnIHw9IEJJVF9GRVRDSFJFRkNVUlNPUlM7CiAK IAkJaWYgKGNpLT5zc2xtb2RlWzBdKQogCQl7CkBAIC01ODMsNiArNTg3LDcgQEAgdW5mb2xkQ1hB dHRyaWJ1dGUoQ29ubkluZm8gKmNpLCBjb25zdCBjaGFyICp2YWx1ZSkKIAljaS0+dXNlX3NlcnZl cl9zaWRlX3ByZXBhcmUgPSAoY2hhcikoKGZsYWcgJiBCSVRfVVNFU0VSVkVSU0lERVBSRVBBUkUp ICE9IDApOwogCWNpLT5sb3dlcl9jYXNlX2lkZW50aWZpZXIgPSAoY2hhcikoKGZsYWcgJiBCSVRf TE9XRVJDQVNFSURFTlRJRklFUikgIT0gMCk7CiAJY2ktPm9wdGlvbmFsX2Vycm9ycyA9IChjaGFy KSgoZmxhZyAmIEJJVF9PUFRJT05BTEVSUk9SUykgIT0gMCk7CisJY2ktPmZldGNoX3JlZmN1cnNv cnMgPSAoY2hhcikoKGZsYWcgJiBCSVRfRkVUQ0hSRUZDVVJTT1JTKSAhPSAwKTsKIH0KIAogQk9P TApAQCAtNzkzLDYgKzc5OCw4IEBAIGNvcHlDb25uQXR0cmlidXRlcyhDb25uSW5mbyAqY2ksIGNv bnN0IGNoYXIgKmF0dHJpYnV0ZSwgY29uc3QgY2hhciAqdmFsdWUpCiAJCWNpLT5kcml2ZXJzLmJv b2xzX2FzX2NoYXIgPSBhdG9pKHZhbHVlKTsKIAllbHNlIGlmIChzdHJpY21wKGF0dHJpYnV0ZSwg SU5JX0VYVFJBU1lTVEFCTEVQUkVGSVhFUykgPT0gMCB8fCBzdHJpY21wKGF0dHJpYnV0ZSwgQUJC Ul9FWFRSQVNZU1RBQkxFUFJFRklYRVMpID09IDApCiAJCVNUUkNQWV9GSVhFRChjaS0+ZHJpdmVy cy5leHRyYV9zeXN0YWJsZV9wcmVmaXhlcywgdmFsdWUpOworCWVsc2UgaWYgKHN0cmljbXAoYXR0 cmlidXRlLCBJTklfRkVUQ0hSRUZDVVJTT1JTKSA9PSAwIHx8IHN0cmljbXAoYXR0cmlidXRlLCBB QkJSX0ZFVENIUkVGQ1VSU09SUykgPT0gMCkKKwkJY2ktPmZldGNoX3JlZmN1cnNvcnMgPSBhdG9p KHZhbHVlKTsKIAllbHNlCiAJCWZvdW5kID0gRkFMU0U7CiAKQEAgLTg0Miw2ICs4NDksNyBAQCBn ZXRDaURlZmF1bHRzKENvbm5JbmZvICpjaSkKIAkJCQljaS0+d2NzX2RlYnVnID0gMTsKIAl9CiAJ Y2ktPmRpc2FibGVfY29udmVydF9mdW5jID0gMDsKKwljaS0+ZmV0Y2hfcmVmY3Vyc29ycyA9IERF RkFVTFRfRkVUQ0hSRUZDVVJTT1JTOwogI2lmZGVmCV9IQU5ETEVfRU5MSVNUX0lOX0RUQ18KIAlj aS0+eGFfb3B0ID0gREVGQVVMVF9YQU9QVDsKICNlbmRpZiAvKiBfSEFORExFX0VOTElTVF9JTl9E VENfICovCkBAIC0xMDgyLDYgKzEwOTAsOSBAQCBNWUxPRygwLCAiZHJpdmVybmFtZT0lc1xuIiwg ZHJpdmVybmFtZSk7CiAJaWYgKFNRTEdldFByaXZhdGVQcm9maWxlU3RyaW5nKERTTiwgSU5JX1NT TE1PREUsIE5VTExfU1RSSU5HLCB0ZW1wLCBzaXplb2YodGVtcCksIE9EQkNfSU5JKSA+IDApCiAJ CVNUUkNQWV9GSVhFRChjaS0+c3NsbW9kZSwgdGVtcCk7CiAKKwlpZiAoU1FMR2V0UHJpdmF0ZVBy b2ZpbGVTdHJpbmcoRFNOLCBJTklfRkVUQ0hSRUZDVVJTT1JTLCBOVUxMX1NUUklORywgdGVtcCwg c2l6ZW9mKHRlbXApLCBPREJDX0lOSSkgPiAwKQorCQljaS0+ZmV0Y2hfcmVmY3Vyc29ycyA9IGF0 b2kodGVtcCk7CisKICNpZmRlZglfSEFORExFX0VOTElTVF9JTl9EVENfCiAJaWYgKFNRTEdldFBy aXZhdGVQcm9maWxlU3RyaW5nKERTTiwgSU5JX1hBT1BULCBOVUxMX1NUUklORywgdGVtcCwgc2l6 ZW9mKHRlbXApLCBPREJDX0lOSSkgPiAwKQogCQljaS0+eGFfb3B0ID0gYXRvaSh0ZW1wKTsKQEAg LTEzNzQsNiArMTM4NSwxMSBAQCB3cml0ZURTTmluZm8oY29uc3QgQ29ubkluZm8gKmNpKQogCQkJ CQkJCQkgSU5JX0lHTk9SRVRJTUVPVVQsCiAJCQkJCQkJCSB0ZW1wLAogCQkJCQkJCQkgT0RCQ19J TkkpOworCUlUT0FfRklYRUQodGVtcCwgY2ktPmZldGNoX3JlZmN1cnNvcnMpOworCVNRTFdyaXRl UHJpdmF0ZVByb2ZpbGVTdHJpbmcoRFNOLAorCQkJCQkJCQkgSU5JX0ZFVENIUkVGQ1VSU09SUywK KwkJCQkJCQkJIHRlbXAsCisJCQkJCQkJCSBPREJDX0lOSSk7CiAjaWZkZWYJX0hBTkRMRV9FTkxJ U1RfSU5fRFRDXwogCUlUT0FfRklYRUQodGVtcCwgY2ktPnhhX29wdCk7CiAJU1FMV3JpdGVQcml2 YXRlUHJvZmlsZVN0cmluZyhEU04sIElOSV9YQU9QVCwgdGVtcCwgT0RCQ19JTkkpOwpAQCAtMTc4 OSw2ICsxODA1LDcgQEAgQ0NfY29ubmluZm9faW5pdChDb25uSW5mbyAqY29ubmluZm8sIFVJbnQ0 IG9wdGlvbikKIAljb25uaW5mby0+YmF0Y2hfc2l6ZSA9IERFRkFVTFRfQkFUQ0hfU0laRTsKIAlj b25uaW5mby0+aWdub3JlX3RpbWVvdXQgPSBERUZBVUxUX0lHTk9SRVRJTUVPVVQ7CiAJY29ubmlu Zm8tPndjc19kZWJ1ZyA9IC0xOworCWNvbm5pbmZvLT5mZXRjaF9yZWZjdXJzb3JzID0gLTE7CiAj aWZkZWYJX0hBTkRMRV9FTkxJU1RfSU5fRFRDXwogCWNvbm5pbmZvLT54YV9vcHQgPSAtMTsKICNl bmRpZiAvKiBfSEFORExFX0VOTElTVF9JTl9EVENfICovCkBAIC0xODkwLDYgKzE5MDcsNyBAQCBD Q19jb3B5X2Nvbm5pbmZvKENvbm5JbmZvICpjaSwgY29uc3QgQ29ubkluZm8gKnNjaSkKIAlDT1JS X1ZBTENQWShrZWVwYWxpdmVfaW50ZXJ2YWwpOwogCUNPUlJfVkFMQ1BZKGJhdGNoX3NpemUpOwog CUNPUlJfVkFMQ1BZKGlnbm9yZV90aW1lb3V0KTsKKwlDT1JSX1ZBTENQWShmZXRjaF9yZWZjdXJz b3JzKTsKICNpZmRlZglfSEFORExFX0VOTElTVF9JTl9EVENfCiAJQ09SUl9WQUxDUFkoeGFfb3B0 KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZGxnX3NwZWNpZmljLmggYi9kbGdfc3BlY2lmaWMuaApp bmRleCBjNTg1NzUwLi44N2QzMmM3IDEwMDY0NAotLS0gYS9kbGdfc3BlY2lmaWMuaAorKysgYi9k bGdfc3BlY2lmaWMuaApAQCAtMTczLDYgKzE3Myw4IEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBJ TklfSUdOT1JFVElNRU9VVAkJIklnbm9yZVRpbWVvdXQiCiAjZGVmaW5lIEFCQlJfSUdOT1JFVElN RU9VVAkJIkQ5IgogI2RlZmluZSBJTklfRFRDTE9HCQkJIkR0Y2xvZyIKKyNkZWZpbmUgSU5JX0ZF VENIUkVGQ1VSU09SUwkJIkZldGNoUmVmY3Vyc29ycyIKKyNkZWZpbmUgQUJCUl9GRVRDSFJFRkNV UlNPUlMJCSJEQSIKIC8qICJQcmVmZXJMaWJwcSIsIGFiYnJldmlhdGVkICJENCIsIHVzZWQgdG8g bWVhbiB3aGV0aGVyIHRvIHByZWZlciBsaWJwcS4KICAqIGxpYnBxIGlzIG5vdyByZXF1aXJlZAog I2RlZmluZSBJTklfUFJFRkVSTElCUFEJCQkiUHJlZmVyTGlicHEiCkBAIC0yMjAsNiArMjIyLDcg QEAgZXh0ZXJuICJDIiB7CiAjZGVmaW5lIEJJVF9VU0VTRVJWRVJTSURFUFJFUEFSRQkJKDFMPDwy NSkKICNkZWZpbmUgQklUX0xPV0VSQ0FTRUlERU5USUZJRVIJCQkoMUw8PDI2KQogI2RlZmluZSBC SVRfT1BUSU9OQUxFUlJPUlMJCQkoMUw8PDI3KQorI2RlZmluZSBCSVRfRkVUQ0hSRUZDVVJTT1JT CQkJKDFMPDwyOCkKIAogI2RlZmluZSBFRkZFQ1RJVkVfQklUX0NPVU5UCQkJMjgKIApAQCAtMjc0 LDYgKzI3Nyw3IEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBERUZBVUxUX09QVElPTkFMX0VSUk9S UwkJMAogI2RlZmluZSBERUZBVUxUX0JBVENIX1NJWkUJCTEwMAogI2RlZmluZSBERUZBVUxUX0lH Tk9SRVRJTUVPVVQJCTAKKyNkZWZpbmUgREVGQVVMVF9GRVRDSFJFRkNVUlNPUlMJCTAKIAogI2lm ZGVmCV9IQU5ETEVfRU5MSVNUX0lOX0RUQ18KICNkZWZpbmUgREVGQVVMVF9YQU9QVAkJCTEKZGlm ZiAtLWdpdCBhL2RsZ193aW5ndWkuYyBiL2RsZ193aW5ndWkuYwppbmRleCAyNzZkOGYxLi5jMzQ4 Y2NjIDEwMDY0NAotLS0gYS9kbGdfd2luZ3VpLmMKKysrIGIvZGxnX3dpbmd1aS5jCkBAIC01NzEs NiArNTcxLDcgQEAgZHNfb3B0aW9uc191cGRhdGUoSFdORCBoZGxnLCBDb25uSW5mbyAqY2kpCiAJ Y2ktPmFsbG93X2tleXNldCA9IElzRGxnQnV0dG9uQ2hlY2tlZChoZGxnLCBEU19VUERBVEFCTEVD VVJTT1JTKTsKIAljaS0+dXNlX3NlcnZlcl9zaWRlX3ByZXBhcmUgPSBJc0RsZ0J1dHRvbkNoZWNr ZWQoaGRsZywgRFNfU0VSVkVSU0lERVBSRVBBUkUpOwogCWNpLT5ieXRlYV9hc19sb25ndmFyYmlu YXJ5ID0gSXNEbGdCdXR0b25DaGVja2VkKGhkbGcsIERTX0JZVEVBQVNMT05HVkFSQklOQVJZKTsK KwljaS0+ZmV0Y2hfcmVmY3Vyc29ycyA9IElzRGxnQnV0dG9uQ2hlY2tlZChoZGxnLCBEU19GRVRD SF9SRUZDVVJTT1JTKTsKIAkvKmNpLT5sb3dlcl9jYXNlX2lkZW50aWZpZXIgPSBJc0RsZ0J1dHRv bkNoZWNrZWQoaGRsZywgRFNfTE9XRVJDQVNFSURFTlRJRklFUik7Ki8KIAogCS8qIE9JRCBPcHRp b25zICovCkBAIC03MjEsNiArNzIyLDcgQEAgZHNfb3B0aW9uczJQcm9jKEhXTkQgaGRsZywKIAkJ CUNoZWNrRGxnQnV0dG9uKGhkbGcsIERTX1VQREFUQUJMRUNVUlNPUlMsIGNpLT5hbGxvd19rZXlz ZXQpOwogCQkJQ2hlY2tEbGdCdXR0b24oaGRsZywgRFNfU0VSVkVSU0lERVBSRVBBUkUsIGNpLT51 c2Vfc2VydmVyX3NpZGVfcHJlcGFyZSk7CiAJCQlDaGVja0RsZ0J1dHRvbihoZGxnLCBEU19CWVRF QUFTTE9OR1ZBUkJJTkFSWSwgY2ktPmJ5dGVhX2FzX2xvbmd2YXJiaW5hcnkpOworCQkJQ2hlY2tE bGdCdXR0b24oaGRsZywgRFNfRkVUQ0hfUkVGQ1VSU09SUywgY2ktPmZldGNoX3JlZmN1cnNvcnMp OwogCQkJLypDaGVja0RsZ0J1dHRvbihoZGxnLCBEU19MT1dFUkNBU0VJREVOVElGSUVSLCBjaS0+ bG93ZXJfY2FzZV9pZGVudGlmaWVyKTsqLwogCiAJCQlFbmFibGVXaW5kb3coR2V0RGxnSXRlbSho ZGxnLCBEU19GQUtFT0lESU5ERVgpLCBhdG9pKGNpLT5zaG93X29pZF9jb2x1bW4pKTsKZGlmZiAt LWdpdCBhL3BzcWxvZGJjLmggYi9wc3Fsb2RiYy5oCmluZGV4IGY0MWZmOWIuLmNhOGJhYjUgMTAw NjQ0Ci0tLSBhL3BzcWxvZGJjLmgKKysrIGIvcHNxbG9kYmMuaApAQCAtNjQ1LDYgKzY0NSw3IEBA IHR5cGVkZWYgc3RydWN0CiAJc2lnbmVkIGNoYXIJbnVtZXJpY19hczsKIAlzaWduZWQgY2hhcglv cHRpb25hbF9lcnJvcnM7CiAJc2lnbmVkIGNoYXIJaWdub3JlX3RpbWVvdXQ7CisJc2lnbmVkIGNo YXIJZmV0Y2hfcmVmY3Vyc29yczsKIAlVSW50NAkJZXh0cmFfb3B0czsKIAlJbnQ0CQlrZWVwYWxp dmVfaWRsZTsKIAlJbnQ0CQlrZWVwYWxpdmVfaW50ZXJ2YWw7CmRpZmYgLS1naXQgYS9wc3Fsb2Ri Yy5yYyBiL3BzcWxvZGJjLnJjCmluZGV4IDJjNzZlZDYuLjc1MjY5YzkgMTAwNjQ0Ci0tLSBhL3Bz cWxvZGJjLnJjCisrKyBiL3BzcWxvZGJjLnJjCkBAIC0yMjEsNiArMjIxLDggQEAgQkVHSU4KICAg ICBQVVNIQlVUVE9OICAgICAgIpNLl3AiLElEQVBQTFksMTI4LEVORExJTkVfWSw1MCwxNAogICAg IENPTlRST0wgICAgICAgICAiYnl0ZWGC8ExPgsaCtYLEiLWCpCIsRFNfQllURUFBU0xPTkdWQVJC SU5BUlksIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdT X1RBQlNUT1AsMTUsODUsODcsMTAKKyAgICBDT05UUk9MICAgICAgICAgIoplcmVmY3Vyc29ygqmC 54yLicqC8I7mk76CtYLcgrciLERTX0ZFVENIX1JFRkNVUlNPUlMsCisgICAgICAgICAgICAgICAg ICAgICJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTM5LDg1LDE0MCwxMAog RU5ECiAKICNkZWZpbmUJRFRDX0dSUF9YCTEwCkBAIC02MzgsNiArNjQwLDggQEAgQkVHSU4KICAg ICBHUk9VUEJPWCAgICAgICAgIkludDggQXMiLElEQ19TVEFUSUMsNSw5NywyNTYsMjUKICAgICBD T05UUk9MICAgICAgICAgImRlZmF1bHQiLERTX0lOVDhfQVNfREVGQVVMVCwiQnV0dG9uIixCU19B VVRPUkFESU9CVVRUT04gfCAKICAgICAgICAgICAgICAgICAgICAgV1NfR1JPVVAsMTIsMTA3LDQw LDEwCisgICAgQ09OVFJPTCAgICAgICAgICJGZXRjaCByZXN1bHQgZnJvbSBlYWNoIHJlZmN1cnNv ciIsRFNfRkVUQ0hfUkVGQ1VSU09SUywKKyAgICAgICAgICAgICAgICAgICAgIkJ1dHRvbiIsQlNf QVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNjMsODQsMTIyLDEwCiAgICAgQ09OVFJPTCAgICAg ICAgICJiaWdpbnQiLERTX0lOVDhfQVNfQklHSU5ULCJCdXR0b24iLEJTX0FVVE9SQURJT0JVVFRP TiB8IAogICAgICAgICAgICAgICAgICAgICBXU19UQUJTVE9QLDU1LDEwNywzNSwxMAogICAgIENP TlRST0wgICAgICAgICAibnVtZXJpYyIsRFNfSU5UOF9BU19OVU1FUklDLCJCdXR0b24iLEJTX0FV VE9SQURJT0JVVFRPTiB8IApkaWZmIC0tZ2l0IGEvcmVzb3VyY2UuaCBiL3Jlc291cmNlLmgKaW5k ZXggZmFjMWZiYi4uNDgzZTYyMyAxMDA2NDQKLS0tIGEvcmVzb3VyY2UuaAorKysgYi9yZXNvdXJj ZS5oCkBAIC0xMTksNiArMTE5LDcgQEAKICNkZWZpbmUgRFNfTlVNRVJJQ19BU19MT05HVkFSQ0hB UgkxMTExCiAjZGVmaW5lIERTX0JBVENIX1NJWkUJCQkxMTEyCiAjZGVmaW5lIERTX0lHTk9SRVRJ TUVPVVQJCTExMTMKKyNkZWZpbmUgRFNfRkVUQ0hfUkVGQ1VSU09SUwkJMTExNAogCiAvLyBOZXh0 IGRlZmF1bHQgdmFsdWVzIGZvciBuZXcgb2JqZWN0cwogLy8KQEAgLTEyNiw3ICsxMjcsNyBAQAog I2lmbmRlZiBBUFNUVURJT19SRUFET05MWV9TWU1CT0xTCiAjZGVmaW5lIF9BUFNfTkVYVF9SRVNP VVJDRV9WQUxVRSAgICAgICAgMTA2CiAjZGVmaW5lIF9BUFNfTkVYVF9DT01NQU5EX1ZBTFVFICAg ICAgICAgNDAwMDEKLSNkZWZpbmUgX0FQU19ORVhUX0NPTlRST0xfVkFMVUUgICAgICAgICAxMTE0 CisjZGVmaW5lIF9BUFNfTkVYVF9DT05UUk9MX1ZBTFVFICAgICAgICAgMTExNQogI2RlZmluZSBf QVBTX05FWFRfU1lNRURfVkFMVUUgICAgICAgICAgIDEwMQogI2VuZGlmCiAjZW5kaWYKZGlmZiAt LWdpdCBhL3N0YXRlbWVudC5jIGIvc3RhdGVtZW50LmMKaW5kZXggOTcyYWE1MC4uOWY0N2I0MCAx MDA2NDQKLS0tIGEvc3RhdGVtZW50LmMKKysrIGIvc3RhdGVtZW50LmMKQEAgLTIyNDMsMzMgKzIy NDMsMzAgQEAgTVlMT0coREVUQUlMX0xPR19MRVZFTCwgIiEhJXAtPm1pc2NpbmZvPSV4IHJlcz0l cFxuIiwgc2VsZiwgc2VsZi0+bWlzY2luZm8sIGZpcnMKIAl7CiAJCUludDIJaW8sIG91dDsKIAkJ aGFzX291dF9wYXJhID0gKENvdW50UGFyYW1ldGVycyhzZWxmLCBOVUxMLCAmaW8sICZvdXQpID4g MCk7Ci0vKgotICoJSSdtIG5vdCBzdXJlIGlmIHRoZSBmb2xsb3dpbmcgUkVGQ1VSX1NVUFBPUlQg c3R1ZmYgaXMgdmFsdWFibGUKLSAqCW9yIG5vdC4KLSAqLwotI2lmZGVmCVJFRkNVUl9TVVBQT1JU CitpZiAoY2ktPmZldGNoX3JlZmN1cnNvcnMpCit7CiAKLU1ZTE9HKERFVEFJTF9MT0dfTEVWRUws ICIhISEgbnVtZmllbGQ9JWQgZmllbGRfdHlwZT0ldVxuIiwgUVJfTnVtUmVzdWx0Q29scyhyZXMp LCBRUl9nZXRfZmllbGRfdHlwZShyZXMsIDApKTsKK01ZTE9HKERFVEFJTF9MT0dfTEVWRUwsICIh ISEgbnVtZmllbGQ9JWQgZmllbGRfdHlwZT0ldVxuIiwgUVJfTnVtUmVzdWx0Q29scyhyaG9sZC5m aXJzdCksIFFSX2dldF9maWVsZF90eXBlKHJob2xkLmZpcnN0LCAwKSk7CiAJCWlmICghaGFzX291 dF9wYXJhICYmCi0JCSAgICAwIDwgUVJfTnVtUmVzdWx0Q29scyhyZXMpICYmCi0JCSAgICBQR19U WVBFX1JFRkNVUlNPUiA9PSBRUl9nZXRfZmllbGRfdHlwZShyZXMsIDApKQorCQkgICAgMCA8IFFS X051bVJlc3VsdENvbHMocmhvbGQuZmlyc3QpICYmCisJCSAgICBQR19UWVBFX1JFRkNVUlNPUiA9 PSBRUl9nZXRfZmllbGRfdHlwZShyaG9sZC5maXJzdCwgMCkpCiAJCXsKIAkJCWNoYXIJZmV0Y2hb MTI4XTsKIAkJCWludAlzdG10X3R5cGUgPSBzZWxmLT5zdGF0ZW1lbnRfdHlwZTsKIAotCQkJU1RS X1RPX05BTUUoc2VsZi0+Y3Vyc29yX25hbWUsIFFSX2dldF92YWx1ZV9iYWNrZW5kX3RleHQocmVz LCAwLCAwKSk7Ci0JCQlRUl9EZXN0cnVjdG9yKHJlcyk7CisJCQlTVFJfVE9fTkFNRShzZWxmLT5j dXJzb3JfbmFtZSwgUVJfZ2V0X3ZhbHVlX2JhY2tlbmRfdGV4dChyaG9sZC5maXJzdCwgMCwgMCkp OworCQkJUVJfRGVzdHJ1Y3RvcihyaG9sZC5maXJzdCk7CiAJCQlTQ19pbml0X1Jlc3VsdChzZWxm KTsKIAkJCVNDX3NldF9mZXRjaGN1cnNvcihzZWxmKTsKIAkJCXFpLnJlc3VsdF9pbiA9IE5VTEw7 CiAJCQlxaS5jdXJzb3IgPSBTQ19jdXJzb3JfbmFtZShzZWxmKTsKLQkJCXFpLmNhY2hlX3NpemUg PSBxaS5yb3dfc2l6ZSA9IGNpLT5kcml2ZXJzLmZldGNoX21heDsKKwkJCXFpLmZldGNoX3NpemUg PSBxaS5yb3dfc2l6ZSA9IGNpLT5kcml2ZXJzLmZldGNoX21heDsKIAkJCVNQUklOVEZfRklYRUQo ZmV0Y2gsICJmZXRjaCAiIEZPUk1BVF9MRU4gIiBpbiBcIiVzXCIiLCBxaS5mZXRjaF9zaXplLCBT Q19jdXJzb3JfbmFtZShzZWxmKSk7Ci0JCQlyZXMgPSBDQ19zZW5kX3F1ZXJ5KGNvbm4sIGZldGNo LCAmcWksIHFmbGFnIHwgUkVBRF9PTkxZX1FVRVJZLCBTQ19nZXRfYW5jZXN0b3Ioc2VsZikpOwot CQkJaWYgKE5VTEwgIT0gcmVzKQotCQkJCVNDX3NldF9SZXN1bHQoc2VsZiwgcmVzKTsKKwkJCXJo b2xkLmZpcnN0ID0gQ0Nfc2VuZF9xdWVyeShjb25uLCBmZXRjaCwgJnFpLCBxZmxhZyB8IFJFQURf T05MWV9RVUVSWSwgU0NfZ2V0X2FuY2VzdG9yKHNlbGYpKTsKKwkJCWlmIChOVUxMICE9IHJob2xk LmZpcnN0KQorCQkJCVNDX3NldF9SZXN1bHQoc2VsZiwgcmhvbGQuZmlyc3QpOwogCQl9Ci0jZW5k aWYJLyogUkVGQ1VSX1NVUFBPUlQgKi8KK30KIAl9CiAJaWYgKGhhc19vdXRfcGFyYSkKIAl7CS8q IGdldCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcm9jZWR1cmUgY2FsbCAqLwotLSAKMi4zMS4x LndpbmRvd3MuMQoK --000000000000e47f4a05c27d3e3c Content-Type: application/octet-stream; name="0003-Support-fetching-results-from-multiple-refcursors.patch" Content-Disposition: attachment; filename="0003-Support-fetching-results-from-multiple-refcursors.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_korzc0i92 RnJvbSBiYThkYmEwZjYwODQ2YjZiNWUxMjlkNDhlMmI0ZTY2ZjdjNmJmM2I3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBZHJpYW4gR3J1Y3phIDxhZHJpYW4uZ3J1Y3phQGlyZXNzLmNv bT4KRGF0ZTogVGh1LCAxMyBNYXkgMjAyMSAwMDoxNTowMiArMTAwMApTdWJqZWN0OiBbUEFUQ0gg My8zXSBTdXBwb3J0IGZldGNoaW5nIHJlc3VsdHMgZnJvbSBtdWx0aXBsZSByZWZjdXJzb3JzICoK IE11bHRpcGxlIHJlc3VsdCBzZXRzIGFyZSByZXR1cm5lZCBpZiBtdWx0aXBsZSByZWZjdXJzb3Jz IGFyZSBmb3VuZCAqIFdvcmtzCiB3aXRoIGJvdGggT0RCQyBDQUxMIGFuZCBQb3N0Z3JlU1FMIENB TEwgc3ludGF4ZXMgKiBRdWVyeSBtdXN0IGJlIGV4ZWN1dGVkIGluCiBhIHRyYW5zYWN0aW9uIHRv IGF2b2lkIGN1cnNvcnMgYmVpbmcgY2xvc2VkICogTm93IHdvcmtzIHdoZW4gb3V0cHV0CiBwYXJh bWV0ZXJzIGFyZSBwcmVzZW50ICogQWRkZWQgZmV0Y2gtcmVmY3Vyc29ycyByZWdyZXNzaW9uIHRl c3QKCi0tLQogc3RhdGVtZW50LmMgICAgICAgICAgICAgICAgICAgICAgICB8IDE1MCArKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLQogdGVzdC9leHBlY3RlZC9mZXRjaC1yZWZjdXJzb3JzLm91 dCB8ICAyOCArKysrKysKIHRlc3Qvc3JjL2ZldGNoLXJlZmN1cnNvcnMtdGVzdC5jICAgfCAxMTAg KysrKysrKysrKysrKysrKysrKysrCiB0ZXN0L3Rlc3RzICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAzICstCiA0IGZpbGVzIGNoYW5nZWQsIDIzMSBpbnNlcnRpb25zKCspLCA2MCBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0L2V4cGVjdGVkL2ZldGNoLXJlZmN1cnNvcnMu b3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9zcmMvZmV0Y2gtcmVmY3Vyc29ycy10ZXN0LmMK CmRpZmYgLS1naXQgYS9zdGF0ZW1lbnQuYyBiL3N0YXRlbWVudC5jCmluZGV4IDlmNDdiNDAuLmE0 MmY3Y2EgMTAwNjQ0Ci0tLSBhL3N0YXRlbWVudC5jCisrKyBiL3N0YXRlbWVudC5jCkBAIC01Niw2 ICs1Niw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QKIAksewogCQlTVE1UX1RZUEVfREVMRVRFLCAi REVMRVRFIgogCX0KKwkseworCQlTVE1UX1RZUEVfUFJPQ0NBTEwsICJDQUxMIgorCX0KIAksewog CQlTVE1UX1RZUEVfUFJPQ0NBTEwsICJ7IgogCX0KQEAgLTIyMzUsODEgKzIyMzgsMTEwIEBAIE1Z TE9HKERFVEFJTF9MT0dfTEVWRUwsICIhISVwLT5taXNjaW5mbz0leCByZXM9JXBcbiIsIHNlbGYs IHNlbGYtPm1pc2NpbmZvLCBmaXJzCiAJaWYgKE5VTEwgPT0gU0NfZ2V0X0N1cnJlcyhzZWxmKSkK IAkJU0Nfc2V0X0N1cnJlcyhzZWxmLCBTQ19nZXRfUmVzdWx0KHNlbGYpKTsKIAotCWlwZG9wdHMg PSBTQ19nZXRfSVBERihzZWxmKTsKLQloYXNfb3V0X3BhcmEgPSBGQUxTRTsKIAlpZiAoc2VsZi0+ c3RhdGVtZW50X3R5cGUgPT0gU1RNVF9UWVBFX1BST0NDQUxMICYmCiAJCShTQ19nZXRfZXJyb3Ju dW1iZXIoc2VsZikgPT0gU1RNVF9PSyB8fAogCQkgU0NfZ2V0X2Vycm9ybnVtYmVyKHNlbGYpID09 IFNUTVRfSU5GT19PTkxZKSkKIAl7CiAJCUludDIJaW8sIG91dDsKIAkJaGFzX291dF9wYXJhID0g KENvdW50UGFyYW1ldGVycyhzZWxmLCBOVUxMLCAmaW8sICZvdXQpID4gMCk7Ci1pZiAoY2ktPmZl dGNoX3JlZmN1cnNvcnMpCi17Ci0KLU1ZTE9HKERFVEFJTF9MT0dfTEVWRUwsICIhISEgbnVtZmll bGQ9JWQgZmllbGRfdHlwZT0ldVxuIiwgUVJfTnVtUmVzdWx0Q29scyhyaG9sZC5maXJzdCksIFFS X2dldF9maWVsZF90eXBlKHJob2xkLmZpcnN0LCAwKSk7Ci0JCWlmICghaGFzX291dF9wYXJhICYm Ci0JCSAgICAwIDwgUVJfTnVtUmVzdWx0Q29scyhyaG9sZC5maXJzdCkgJiYKLQkJICAgIFBHX1RZ UEVfUkVGQ1VSU09SID09IFFSX2dldF9maWVsZF90eXBlKHJob2xkLmZpcnN0LCAwKSkKLQkJewot CQkJY2hhcglmZXRjaFsxMjhdOwotCQkJaW50CXN0bXRfdHlwZSA9IHNlbGYtPnN0YXRlbWVudF90 eXBlOwotCi0JCQlTVFJfVE9fTkFNRShzZWxmLT5jdXJzb3JfbmFtZSwgUVJfZ2V0X3ZhbHVlX2Jh Y2tlbmRfdGV4dChyaG9sZC5maXJzdCwgMCwgMCkpOwotCQkJUVJfRGVzdHJ1Y3RvcihyaG9sZC5m aXJzdCk7Ci0JCQlTQ19pbml0X1Jlc3VsdChzZWxmKTsKLQkJCVNDX3NldF9mZXRjaGN1cnNvcihz ZWxmKTsKLQkJCXFpLnJlc3VsdF9pbiA9IE5VTEw7Ci0JCQlxaS5jdXJzb3IgPSBTQ19jdXJzb3Jf bmFtZShzZWxmKTsKLQkJCXFpLmZldGNoX3NpemUgPSBxaS5yb3dfc2l6ZSA9IGNpLT5kcml2ZXJz LmZldGNoX21heDsKLQkJCVNQUklOVEZfRklYRUQoZmV0Y2gsICJmZXRjaCAiIEZPUk1BVF9MRU4g IiBpbiBcIiVzXCIiLCBxaS5mZXRjaF9zaXplLCBTQ19jdXJzb3JfbmFtZShzZWxmKSk7Ci0JCQly aG9sZC5maXJzdCA9IENDX3NlbmRfcXVlcnkoY29ubiwgZmV0Y2gsICZxaSwgcWZsYWcgfCBSRUFE X09OTFlfUVVFUlksIFNDX2dldF9hbmNlc3RvcihzZWxmKSk7Ci0JCQlpZiAoTlVMTCAhPSByaG9s ZC5maXJzdCkKLQkJCQlTQ19zZXRfUmVzdWx0KHNlbGYsIHJob2xkLmZpcnN0KTsKKwkJaWYgKGhh c19vdXRfcGFyYSkKKwkJewkvKiBnZXQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJvY2VkdXJl IGNhbGwgKi8KKwkJCVJFVENPREUJCXJldDsKKwkJCUhTVE1UCQloc3RtdCA9IChIU1RNVCkgc2Vs ZjsKKworCQkJaXBkb3B0cyA9IFNDX2dldF9JUERGKHNlbGYpOworCQkJc2VsZi0+YmluZF9yb3cg PSAwOworCQkJcmV0ID0gU0NfZmV0Y2goaHN0bXQpOworTVlMT0coREVUQUlMX0xPR19MRVZFTCwg IiEhU0NfZmV0Y2ggcmV0dXJuID0lZFxuIiwgcmV0KTsKKwkJCWlmIChTUUxfU1VDQ0VFREVEKHJl dCkpCisJCQl7CisJCQkJQVBERmllbGRzCSphcGRvcHRzID0gU0NfZ2V0X0FQREYoc2VsZik7CisJ CQkJU1FMVUxFTgkJb2Zmc2V0ID0gYXBkb3B0cy0+cGFyYW1fb2Zmc2V0X3B0ciA/ICphcGRvcHRz LT5wYXJhbV9vZmZzZXRfcHRyIDogMDsKKwkJCQlBUkRGaWVsZHMJKmFyZG9wdHMgPSBTQ19nZXRf QVJERihzZWxmKTsKKwkJCQljb25zdCBQYXJhbWV0ZXJJbmZvQ2xhc3MJKmFwYXJhOworCQkJCWNv bnN0IFBhcmFtZXRlckltcGxDbGFzcwkqaXBhcmE7CisJCQkJaW50CXNhdmVfYmluZF9zaXplID0g YXJkb3B0cy0+YmluZF9zaXplLCBnaWR4LCBudW1fcDsKKworCQkJCWFyZG9wdHMtPmJpbmRfc2l6 ZSA9IGFwZG9wdHMtPnBhcmFtX2JpbmRfdHlwZTsKKwkJCQludW1fcCA9IHNlbGYtPm51bV9wYXJh bXM7CisJCQkJaWYgKGlwZG9wdHMtPmFsbG9jYXRlZCA8IG51bV9wKQorCQkJCQludW1fcCA9IGlw ZG9wdHMtPmFsbG9jYXRlZDsKKwkJCQlmb3IgKGkgPSAwLCBnaWR4ID0gMDsgaSA8IG51bV9wOyBp KyspCisJCQkJeworCQkJCQlpcGFyYSA9IGlwZG9wdHMtPnBhcmFtZXRlcnMgKyBpOworCQkJCQlp ZiAoaXBhcmEtPnBhcmFtVHlwZSA9PSBTUUxfUEFSQU1fT1VUUFVUIHx8CisJCQkJCSAgICBpcGFy YS0+cGFyYW1UeXBlID09IFNRTF9QQVJBTV9JTlBVVF9PVVRQVVQpCisJCQkJCXsKKwkJCQkJCWFw YXJhID0gYXBkb3B0cy0+cGFyYW1ldGVycyArIGk7CisJCQkJCQlyZXQgPSBQR0FQSV9HZXREYXRh KGhzdG10LCBnaWR4ICsgMSwgYXBhcmEtPkNUeXBlLCBhcGFyYS0+YnVmZmVyICsgb2Zmc2V0LCBh cGFyYS0+YnVmbGVuLCBhcGFyYS0+dXNlZCA/IExFTkFERFJfU0hJRlQoYXBhcmEtPnVzZWQsIG9m ZnNldCkgOiBOVUxMKTsKKwkJCQkJCWlmICghU1FMX1NVQ0NFRURFRChyZXQpKQorCQkJCQkJewor CQkJCQkJCVNDX3NldF9lcnJvcihzZWxmLCBTVE1UX0VYRUNfRVJST1IsICJHZXREYXRhIHRvIFBy b2NlZHVyZSByZXR1cm4gZmFpbGVkLiIsIGZ1bmMpOworCQkJCQkJCWJyZWFrOworCQkJCQkJfQor CQkJCQkJZ2lkeCsrOworCQkJCQl9CisJCQkJfQorCQkJCWFyZG9wdHMtPmJpbmRfc2l6ZSA9IHNh dmVfYmluZF9zaXplOyAvKiByZXN0b3JlICovCisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJU0Nf c2V0X2Vycm9yKHNlbGYsIFNUTVRfRVhFQ19FUlJPUiwgIlNDX2ZldGNoIHRvIGdldCBhIFByb2Nl ZHVyZSByZXR1cm4gZmFpbGVkLiIsIGZ1bmMpOworCQkJfQogCQl9Ci19Ci0JfQotCWlmIChoYXNf b3V0X3BhcmEpCi0JewkvKiBnZXQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJvY2VkdXJlIGNh bGwgKi8KLQkJUkVUQ09ERQkJcmV0OwotCQlIU1RNVAkJaHN0bXQgPSAoSFNUTVQpIHNlbGY7CiAK LQkJc2VsZi0+YmluZF9yb3cgPSAwOwotCQlyZXQgPSBTQ19mZXRjaChoc3RtdCk7Ci1NWUxPRyhE RVRBSUxfTE9HX0xFVkVMLCAiISFTQ19mZXRjaCByZXR1cm4gPSVkXG4iLCByZXQpOwotCQlpZiAo U1FMX1NVQ0NFRURFRChyZXQpKQorCQlpZiAoY2ktPmZldGNoX3JlZmN1cnNvcnMpCiAJCXsKLQkJ CUFQREZpZWxkcwkqYXBkb3B0cyA9IFNDX2dldF9BUERGKHNlbGYpOwotCQkJU1FMVUxFTgkJb2Zm c2V0ID0gYXBkb3B0cy0+cGFyYW1fb2Zmc2V0X3B0ciA/ICphcGRvcHRzLT5wYXJhbV9vZmZzZXRf cHRyIDogMDsKLQkJCUFSREZpZWxkcwkqYXJkb3B0cyA9IFNDX2dldF9BUkRGKHNlbGYpOwotCQkJ Y29uc3QgUGFyYW1ldGVySW5mb0NsYXNzCSphcGFyYTsKLQkJCWNvbnN0IFBhcmFtZXRlckltcGxD bGFzcwkqaXBhcmE7Ci0JCQlpbnQJc2F2ZV9iaW5kX3NpemUgPSBhcmRvcHRzLT5iaW5kX3NpemUs IGdpZHgsIG51bV9wOwotCi0JCQlhcmRvcHRzLT5iaW5kX3NpemUgPSBhcGRvcHRzLT5wYXJhbV9i aW5kX3R5cGU7Ci0JCQludW1fcCA9IHNlbGYtPm51bV9wYXJhbXM7Ci0JCQlpZiAoaXBkb3B0cy0+ YWxsb2NhdGVkIDwgbnVtX3ApCi0JCQkJbnVtX3AgPSBpcGRvcHRzLT5hbGxvY2F0ZWQ7Ci0JCQlm b3IgKGkgPSAwLCBnaWR4ID0gMDsgaSA8IG51bV9wOyBpKyspCisJCQljaGFyCQkJZmV0Y2hbMTI4 XTsKKwkJCVFSZXN1bHRDbGFzcyAJKmxhc3QgPSBOVUxMLCAqcmVzOworCisJCQkvKiBJdGVyYXRl IHRoZSBjb2x1bW5zIGluIHRoZSByZXN1bHQgdG8gbG9vayBmb3IgcmVmY3Vyc29ycyAqLworCQkJ bnVtY29scyA9IFFSX051bVJlc3VsdENvbHMocmhvbGQuZmlyc3QpOworCQkJZm9yIChpID0gMDsg aSA8IG51bWNvbHM7IGkrKykKIAkJCXsKLQkJCQlpcGFyYSA9IGlwZG9wdHMtPnBhcmFtZXRlcnMg KyBpOwotCQkJCWlmIChpcGFyYS0+cGFyYW1UeXBlID09IFNRTF9QQVJBTV9PVVRQVVQgfHwKLQkJ CQkgICAgaXBhcmEtPnBhcmFtVHlwZSA9PSBTUUxfUEFSQU1fSU5QVVRfT1VUUFVUKQorCQkJCU1Z TE9HKERFVEFJTF9MT0dfTEVWRUwsICIhISEgbnVtZmllbGQ9JWQgZmllbGRfdHlwZT0ldVxuIiwg bnVtY29scywgUVJfZ2V0X2ZpZWxkX3R5cGUocmhvbGQuZmlyc3QsIGkpKTsKKwkJCQlpZiAoUEdf VFlQRV9SRUZDVVJTT1IgPT0gUVJfZ2V0X2ZpZWxkX3R5cGUocmhvbGQuZmlyc3QsIGkpKQogCQkJ CXsKLQkJCQkJYXBhcmEgPSBhcGRvcHRzLT5wYXJhbWV0ZXJzICsgaTsKLQkJCQkJcmV0ID0gUEdB UElfR2V0RGF0YShoc3RtdCwgZ2lkeCArIDEsIGFwYXJhLT5DVHlwZSwgYXBhcmEtPmJ1ZmZlciAr IG9mZnNldCwgYXBhcmEtPmJ1ZmxlbiwgYXBhcmEtPnVzZWQgPyBMRU5BRERSX1NISUZUKGFwYXJh LT51c2VkLCBvZmZzZXQpIDogTlVMTCk7Ci0JCQkJCWlmICghU1FMX1NVQ0NFRURFRChyZXQpKQor CQkJCQlpZiAoIUNDX2lzX2luX3RyYW5zKGNvbm4pKQogCQkJCQl7Ci0JCQkJCQlTQ19zZXRfZXJy b3Ioc2VsZiwgU1RNVF9FWEVDX0VSUk9SLCAiR2V0RGF0YSB0byBQcm9jZWR1cmUgcmV0dXJuIGZh aWxlZC4iLCBmdW5jKTsKKwkJCQkJCVNDX3NldF9lcnJvcihzZWxmLCBTVE1UX0VYRUNfRVJST1Is ICJRdWVyeSBtdXN0IGJlIGV4ZWN1dGVkIGluIGEgdHJhbnNhY3Rpb24gd2hlbiBGZXRjaFJlZmN1 cnNvcnMgc2V0dGluZyBpcyBlbmFibGVkLiIsIGZ1bmMpOwogCQkJCQkJYnJlYWs7CiAJCQkJCX0K LQkJCQkJZ2lkeCsrOworCisJCQkJCVNUUl9UT19OQU1FKHNlbGYtPmN1cnNvcl9uYW1lLCBRUl9n ZXRfdmFsdWVfYmFja2VuZF90ZXh0KHJob2xkLmZpcnN0LCAwLCBpKSk7CisJCQkJCVNDX3NldF9m ZXRjaGN1cnNvcihzZWxmKTsKKwkJCQkJcWkucmVzdWx0X2luID0gTlVMTDsKKwkJCQkJcWkuY3Vy c29yID0gU0NfY3Vyc29yX25hbWUoc2VsZik7CisJCQkJCXFpLmZldGNoX3NpemUgPSBxaS5yb3df c2l6ZSA9IGNpLT5kcml2ZXJzLmZldGNoX21heDsKKwkJCQkJU1BSSU5URl9GSVhFRChmZXRjaCwg ImZldGNoICIgRk9STUFUX0xFTiAiIGluIFwiJXNcIiIsIHFpLmZldGNoX3NpemUsIFNDX2N1cnNv cl9uYW1lKHNlbGYpKTsKKwkJCQkJcmVzID0gQ0Nfc2VuZF9xdWVyeShjb25uLCBmZXRjaCwgJnFp LCBxZmxhZyB8IFJFQURfT05MWV9RVUVSWSwgU0NfZ2V0X2FuY2VzdG9yKHNlbGYpKTsKKwkJCQkJ aWYgKE5VTEwgIT0gcmVzKQorCQkJCQl7CisJCQkJCQlpZiAoTlVMTCA9PSBsYXN0KQorCQkJCQkJ eworCQkJCQkJCS8qIFJlaW5pdGlhbGlzZSB3aXRoIHJlc3VsdCBmZXRjaGVkIGZyb20gZmlyc3Qg cmVmY3Vyc29yICovCisJCQkJCQkJU0NfaW5pdF9SZXN1bHQoc2VsZik7CisJCQkJCQkJU0Nfc2V0 X1Jlc3VsdChzZWxmLCByZXMpOworCQkJCQkJfQorCQkJCQkJZWxzZQorCQkJCQkJeworCQkJCQkJ CS8qIEFkZCBhbm90aGVyIHJlc3VsdCBmZXRjaGVkIGZyb20gdGhlIG5leHQgcmVmY3Vyc29yICov CisJCQkJCQkJUVJfY29uY2F0KGxhc3QsIHJlcyk7CisJCQkJCQkJc2VsZi0+bXVsdGlfc3RhdGVt ZW50ID0gVFJVRTsKKwkJCQkJCX0KKwkJCQkJCWlmICghUVJfY29tbWFuZF9tYXliZV9zdWNjZXNz ZnVsKHJlcykpCisJCQkJCQl7CisJCQkJCQkJU0Nfc2V0X2Vycm9yaW5mbyhzZWxmLCByZXMsIDAp OworCQkJCQkJCVFSX0Rlc3RydWN0b3IocmhvbGQuZmlyc3QpOworCQkJCQkJCWJyZWFrOworCQkJ CQkJfQorCisJCQkJCQlsYXN0ID0gcmVzOworCQkJCQl9CiAJCQkJfQogCQkJfQotCQkJYXJkb3B0 cy0+YmluZF9zaXplID0gc2F2ZV9iaW5kX3NpemU7IC8qIHJlc3RvcmUgKi8KLQkJfQotCQllbHNl Ci0JCXsKLQkJCVNDX3NldF9lcnJvcihzZWxmLCBTVE1UX0VYRUNfRVJST1IsICJTQ19mZXRjaCB0 byBnZXQgYSBQcm9jZWR1cmUgcmV0dXJuIGZhaWxlZC4iLCBmdW5jKTsKKwkJCWlmIChsYXN0KQor CQkJCVFSX0Rlc3RydWN0b3IocmhvbGQuZmlyc3QpOwogCQl9CiAJfQogY2xlYW51cDoKZGlmZiAt LWdpdCBhL3Rlc3QvZXhwZWN0ZWQvZmV0Y2gtcmVmY3Vyc29ycy5vdXQgYi90ZXN0L2V4cGVjdGVk L2ZldGNoLXJlZmN1cnNvcnMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmZmZjllZTEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2V4cGVjdGVkL2ZldGNoLXJlZmN1cnNv cnMub3V0CkBAIC0wLDAgKzEsMjggQEAKK0NyZWF0aW5nIHByb2NlZHVyZSAncmVmcHJvYycKK2Nv bm5lY3RlZAorZGlzY29ubmVjdGluZworCistLSBURVNUIHVzaW5nIEZldGNoUmVmY3Vyc29ycz0w IGFuZCBTUUxfQVRUUl9BVVRPQ09NTUlUPTEKK2Nvbm5lY3RlZAorT3V0cHV0IHBhcmFtIG51bV9j dXJzb3IgaXMgMgorLS0xIFJlc3VsdCBzZXQ6CisyCXJlZjEJcmVmMgorZGlzY29ubmVjdGluZwor CistLSBURVNUIHVzaW5nIEZldGNoUmVmY3Vyc29ycz0xIGFuZCBTUUxfQVRUUl9BVVRPQ09NTUlU PTEKK2Nvbm5lY3RlZAorU1FMRXhlY3V0ZSBmYWlsZWQKK0hZMDAwPVF1ZXJ5IG11c3QgYmUgZXhl Y3V0ZWQgaW4gYSB0cmFuc2FjdGlvbiB3aGVuIEZldGNoUmVmY3Vyc29ycyBzZXR0aW5nIGlzIGVu YWJsZWQuCisKKy0tIFRFU1QgdXNpbmcgRmV0Y2hSZWZjdXJzb3JzPTEgYW5kIFNRTF9BVFRSX0FV VE9DT01NSVQ9MAorY29ubmVjdGVkCitPdXRwdXQgcGFyYW0gbnVtX2N1cnNvciBpcyAyCistLTEg UmVzdWx0IHNldDoKKzEJZm9vCisyCWJhcgorMwlmb29iYXIKKy0tMiBSZXN1bHQgc2V0OgorZm9v YmFyCTMKK2JhcgkyCitmb28JMQorZGlzY29ubmVjdGluZwpkaWZmIC0tZ2l0IGEvdGVzdC9zcmMv ZmV0Y2gtcmVmY3Vyc29ycy10ZXN0LmMgYi90ZXN0L3NyYy9mZXRjaC1yZWZjdXJzb3JzLXRlc3Qu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjdjODZmCi0tLSAvZGV2L251 bGwKKysrIGIvdGVzdC9zcmMvZmV0Y2gtcmVmY3Vyc29ycy10ZXN0LmMKQEAgLTAsMCArMSwxMTAg QEAKKy8qCisgKiBUZXN0IEZldGNoUmVmY3Vyc29ycyBzZXR0aW5nCisgKi8KKworI2luY2x1ZGUg ImNvbW1vbi5oIgorCisKK3N0YXRpYyB2b2lkIHByaW50X2FsbF9yZXN1bHRzKEhTVE1UIGhzdG10 KQoreworCWludCBpOworCWludCByYyA9IFNRTF9TVUNDRVNTOworCWZvciAoaSA9IDE7IHJjID09 IFNRTF9TVUNDRVNTIHx8IHJjID09IFNRTF9TVUNDRVNTX1dJVEhfSU5GTzsgaSsrKQorCXsKKwkJ cHJpbnRmKCItLSVkICIsIGkpOworCQlwcmludF9yZXN1bHQoaHN0bXQpOworCisJCXJjID0gU1FM TW9yZVJlc3VsdHMoaHN0bXQpOworCX0KKwlpZiAocmMgIT0gU1FMX05PX0RBVEEpCisJCUNIRUNL X1NUTVRfUkVTVUxUKHJjLCAiU1FMTW9yZVJlc3VsdHMgZmFpbGVkIiwgaHN0bXQpOworfQorCitz dGF0aWMgdm9pZCBzZXR1cF9wcm9jZWR1cmUoKQoreworCVNRTFJFVFVSTglyYzsKKwlIU1RNVAkJ aHN0bXQgPSBTUUxfTlVMTF9IU1RNVDsKKworCXByaW50ZigiQ3JlYXRpbmcgcHJvY2VkdXJlICdy ZWZwcm9jJ1xuIik7CisKKwl0ZXN0X2Nvbm5lY3QoKTsKKworCXJjID0gU1FMQWxsb2NIYW5kbGUo U1FMX0hBTkRMRV9TVE1ULCBjb25uLCAmaHN0bXQpOworCUNIRUNLX0NPTk5fUkVTVUxUKHJjLCAi ZmFpbGVkIHRvIGFsbG9jYXRlIHN0bXQgaGFuZGxlIiwgY29ubik7CisKKwlyYyA9IFNRTEV4ZWNE aXJlY3QoaHN0bXQsICJjcmVhdGUgb3IgcmVwbGFjZSBwcm9jZWR1cmUgcmVmcHJvYyIKKwkJCSIo aW5vdXQgbnVtX2N1cnNvciBpbnRlZ2VyLCBpbm91dCByZWYxIHJlZmN1cnNvciBkZWZhdWx0ICdy ZWYxJywgaW5vdXQgcmVmMiByZWZjdXJzb3IgZGVmYXVsdCAncmVmMicpIGFzICIKKwkJCSIkcHJv Y2VkdXJlJCBcbiIKKwkJCSJERUNMQVJFIFxuIgorCQkJIkJFR0lOIFxuIgorCQkJIm51bV9jdXJz b3IgOj0gMjsgXG4iCisJCQkiT1BFTiByZWYxIEZPUiBTRUxFQ1QgaWQsIHQgRlJPTSB0ZXN0dGFi MSBPUkRFUiBCWSBpZCBBU0M7IFxuIgorCQkJIk9QRU4gcmVmMiBGT1IgU0VMRUNUIHQsIGlkIEZS T00gdGVzdHRhYjEgT1JERVIgQlkgaWQgREVTQzsgXG4iCisJCQkiRU5EOyBcbiIKKwkJCSIkcHJv Y2VkdXJlJCBcbiIKKwkJCSJMQU5HVUFHRSBwbHBnc3FsXG4iCisJCQksIFNRTF9OVFMpOworCUNI RUNLX1NUTVRfUkVTVUxUKHJjLCAiY3JlYXRlIHByb2NlZHVyZSByZWZwcm9jIGZhaWxlZCIsIGhz dG10KTsKKworCXJjID0gU1FMRnJlZVN0bXQoaHN0bXQsIFNRTF9DTE9TRSk7CisJQ0hFQ0tfU1RN VF9SRVNVTFQocmMsICJTUUxGcmVlU3RtdCBmYWlsZWQiLCBoc3RtdCk7CisKKwl0ZXN0X2Rpc2Nv bm5lY3QoKTsKK30KKworc3RhdGljIHZvaWQgcmVmY3Vyc29yX3Rlc3QoY2hhciogY29ubmVjdHBh cmFtcywgU1FMUE9JTlRFUiBhdXRvY29tbWl0KQoreworCVNRTFJFVFVSTglyYzsKKwlIU1RNVAkJ aHN0bXQgPSBTUUxfTlVMTF9IU1RNVDsKKwlpbnQJICAgICAgICBudW1fY3Vyc29yID0gMDsKKwor CXByaW50ZigiXG4tLSBURVNUIHVzaW5nICVzIGFuZCBTUUxfQVRUUl9BVVRPQ09NTUlUPSVkXG4i LCBjb25uZWN0cGFyYW1zLCBhdXRvY29tbWl0KTsKKworCXRlc3RfY29ubmVjdF9leHQoY29ubmVj dHBhcmFtcyk7CisKKwkvKiBDb25kaXRpb25hbGx5IHN0YXJ0IGEgdHJhbnNhY3Rpb24gKi8KKwly YyA9IFNRTFNldENvbm5lY3RBdHRyKGNvbm4sIFNRTF9BVFRSX0FVVE9DT01NSVQsIGF1dG9jb21t aXQsIFNRTF9JU19VSU5URUdFUik7CisJQ0hFQ0tfU1RNVF9SRVNVTFQocmMsICJTUUxTZXRDb25u ZWN0QXR0ciBmYWlsZWQiLCBoc3RtdCk7CisKKwlyYyA9IFNRTEFsbG9jSGFuZGxlKFNRTF9IQU5E TEVfU1RNVCwgY29ubiwgJmhzdG10KTsKKwlDSEVDS19DT05OX1JFU1VMVChyYywgImZhaWxlZCB0 byBhbGxvY2F0ZSBzdG10IGhhbmRsZSIsIGNvbm4pOworCisJcmMgPSBTUUxQcmVwYXJlKGhzdG10 LCAiQ0FMTCByZWZwcm9jKD8pIiwgU1FMX05UUyk7CisJQ0hFQ0tfU1RNVF9SRVNVTFQocmMsICJT UUxQcmVwYXJlIGZhaWxlZCIsIGhzdG10KTsKKworCXJjID0gU1FMQmluZFBhcmFtZXRlcihoc3Rt dCwgMSwgU1FMX1BBUkFNX0lOUFVUX09VVFBVVCwKKwkJCQkJCSAgU1FMX0NfTE9ORywJLyogdmFs dWUgdHlwZSAqLworCQkJCQkJICBTUUxfSU5URUdFUiwJLyogcGFyYW0gdHlwZSAqLworCQkJCQkJ ICAwLAkJCS8qIGNvbHVtbiBzaXplICovCisJCQkJCQkgIDAsCQkJLyogZGVjIGRpZ2l0cyAqLwor CQkJCQkJICAmbnVtX2N1cnNvciwJLyogcGFyYW0gdmFsdWUgcHRyICovCisJCQkJCQkgIDAsCSAg ICAgICAgLyogYnVmZmVyIGxlbiAqLworCQkJCQkJICBOVUxMCQkgICAgLyogU3RyTGVuX29yX0lu ZFB0ciAqLyk7CisJQ0hFQ0tfU1RNVF9SRVNVTFQocmMsICJTUUxCaW5kUGFyYW1ldGVyIGZhaWxl ZCIsIGhzdG10KTsKKworCXJjID0gU1FMRXhlY3V0ZShoc3RtdCk7CisJaWYgKCFTUUxfU1VDQ0VF REVEKHJjKSkKKwl7CisJCXByaW50X2RpYWcoIlNRTEV4ZWN1dGUgZmFpbGVkIiwgU1FMX0hBTkRM RV9TVE1ULCBoc3RtdCk7CisJCXJldHVybjsKKwl9CisKKwlwcmludGYoIk91dHB1dCBwYXJhbSBu dW1fY3Vyc29yIGlzICVkXG4iLCBudW1fY3Vyc29yKTsKKwlwcmludF9hbGxfcmVzdWx0cyhoc3Rt dCk7CisKKwlyYyA9IFNRTEZyZWVTdG10KGhzdG10LCBTUUxfQ0xPU0UpOworCUNIRUNLX1NUTVRf UkVTVUxUKHJjLCAiU1FMRnJlZVN0bXQgZmFpbGVkIiwgaHN0bXQpOworCisJdGVzdF9kaXNjb25u ZWN0KCk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlzZXR1cF9w cm9jZWR1cmUoKTsKKworCXJlZmN1cnNvcl90ZXN0KCJGZXRjaFJlZmN1cnNvcnM9MCIsIFNRTF9B VVRPQ09NTUlUX09OKTsKKwlyZWZjdXJzb3JfdGVzdCgiRmV0Y2hSZWZjdXJzb3JzPTEiLCBTUUxf QVVUT0NPTU1JVF9PTik7CisJcmVmY3Vyc29yX3Rlc3QoIkZldGNoUmVmY3Vyc29ycz0xIiwgU1FM X0FVVE9DT01NSVRfT0ZGKTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvdGVzdC90ZXN0 cyBiL3Rlc3QvdGVzdHMKaW5kZXggMjc3M2JiZi4uYmM5OWQzMiAxMDA2NDQKLS0tIGEvdGVzdC90 ZXN0cworKysgYi90ZXN0L3Rlc3RzCkBAIC01Miw0ICs1Miw1IEBAIFRFU1RCSU5TID0gZXhlL2Nv bm5lY3QtdGVzdCBcCiAJZXhlL2xhcmdlLW9iamVjdC1kYXRhLWF0LWV4ZWMtdGVzdCBcCiAJZXhl L29kYmMtZXNjYXBlcy10ZXN0IFwKIAlleGUvd2NoYXItY2hhci10ZXN0IFwKLQlleGUvcGFyYW1z LWJhdGNoLWV4ZWMtdGVzdAorCWV4ZS9wYXJhbXMtYmF0Y2gtZXhlYy10ZXN0IFwKKwlleGUvZmV0 Y2gtcmVmY3Vyc29ycy10ZXN0Ci0tIAoyLjMxLjEud2luZG93cy4xCgo= --000000000000e47f4a05c27d3e3c--