From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9433 invoked by alias); 28 Aug 2002 20:16:02 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 9392 invoked by uid 71); 28 Aug 2002 20:16:01 -0000 Resent-Date: 28 Aug 2002 20:16:01 -0000 Resent-Message-ID: <20020828201601.9391.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org, java-prs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, ch_roux@club-internet.fr Received: (qmail 7376 invoked by uid 61); 28 Aug 2002 20:09:58 -0000 Message-Id: <20020828200958.7375.qmail@sources.redhat.com> Date: Wed, 28 Aug 2002 14:47:00 -0000 From: ch_roux@club-internet.fr Reply-To: ch_roux@club-internet.fr To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: libgcj/7752: connection with a POST http request X-SW-Source: 2002-08/txt/msg00595.txt.bz2 List-Id: >Number: 7752 >Category: libgcj >Synopsis: connection with a POST http request >Confidential: no >Severity: serious >Priority: low >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Aug 28 13:16:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Christophe Roux >Release: gcc-3.1.1 >Organization: >Environment: tomcat3.2.3 from rhug >Description: The gnu.gcj.protocol.http.Connection.java allows only Get requests as the function getHttpHeaders is invoked before getOutputStream so that I can't send data before read. >How-To-Repeat: try a http POST request >Fix: The solution consist in calling getHttpHeaders from getInputStream, after the stuff for sending data with getOutputStream is done. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: text/x-java; name="Connection.java" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Connection.java" Ly8gQ29ubmVjdGlvbi5qYXZhIC0gSW1wbGVtZW50YXRpb24gb2YgSHR0cFVSTENvbm5lY3Rpb24g Zm9yIGh0dHAgcHJvdG9jb2wuCgovKiBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbgoKICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgbGliZ2NqLgoKVGhpcyBz b2Z0d2FyZSBpcyBjb3B5cmlnaHRlZCB3b3JrIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUKTGliZ2NqIExpY2Vuc2UuICBQbGVhc2UgY29uc3VsdCB0aGUgZmlsZSAiTElCR0NKX0xJQ0VO U0UiIGZvcgpkZXRhaWxzLiAgKi8KCnBhY2thZ2UgZ251Lmdjai5wcm90b2NvbC5odHRwOwoKaW1w b3J0IGphdmEubmV0Lio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwuVmVjdG9y OwppbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlv bjsKCi8qKgogKiBAYXV0aG9yIFdhcnJlbiBMZXZ5IDx3YXJyZW5sQGN5Z251cy5jb20+CiAqIEBk YXRlIE1hcmNoIDI5LCAxOTk5LgogKi8KCi8qKgogKiBXcml0dGVuIHVzaW5nIG9uLWxpbmUgSmF2 YSBQbGF0Zm9ybSAxLjIgQVBJIFNwZWNpZmljYXRpb24sIGFzIHdlbGwKICogYXMgIlRoZSBKYXZh IENsYXNzIExpYnJhcmllcyIsIDJuZCBlZGl0aW9uIChBZGRpc29uLVdlc2xleSwgMTk5OCkuCiAq IFN0YXR1czogIE1pbmltYWwgc3Vic2V0IG9mIGZ1bmN0aW9uYWxpdHkuICBQcm94aWVzIGFuZCBS ZWRpcmVjdHMKICogICAgICBub3QgeWV0IGhhbmRsZWQuICBGaWxlTmFtZU1hcCBoYW5kbGluZyBu ZWVkcyB0byBiZSBjb25zaWRlcmVkLgogKiAgICAgIHVzZUNhY2hlcywgaWZNb2RpZmllZFNpbmNl LCBhbmQgYWxsb3dVc2VySW50ZXJhY3Rpb24gbmVlZAogKiAgICAgIGNvbnNpZGVyYXRpb24gYXMg d2VsbCBhcyBkb0lucHV0IGFuZCBkb091dHB1dC4KICovCgpjbGFzcyBDb25uZWN0aW9uIGV4dGVu ZHMgSHR0cFVSTENvbm5lY3Rpb24KewogIHByb3RlY3RlZCBTb2NrZXQgc29jayA9IG51bGw7CiAg cHJpdmF0ZSBzdGF0aWMgSGFzaHRhYmxlIGRlZlJlcXVlc3RQcm9wZXJ0aWVzID0gbmV3IEhhc2h0 YWJsZSgpOwogIHByaXZhdGUgSGFzaHRhYmxlIHJlcXVlc3RQcm9wZXJ0aWVzOwogIHByaXZhdGUg SGFzaHRhYmxlIGhkckhhc2ggPSBuZXcgSGFzaHRhYmxlKCk7CiAgcHJpdmF0ZSBWZWN0b3IgaGRy VmVjID0gbmV3IFZlY3RvcigpOwogIHByaXZhdGUgQnVmZmVyZWRJbnB1dFN0cmVhbSBidWZmZXJl ZEluOwogIHByaXZhdGUgYm9vbGVhbiBoZWFkZXJzID0gZmFsc2U7CgogIHB1YmxpYyBDb25uZWN0 aW9uKFVSTCB1cmwpCiAgewogICAgc3VwZXIodXJsKTsKICAgIHJlcXVlc3RQcm9wZXJ0aWVzID0g KEhhc2h0YWJsZSkgZGVmUmVxdWVzdFByb3BlcnRpZXMuY2xvbmUoKTsKICB9CgogIC8vIE92ZXJy aWRlIG1ldGhvZCBpbiBVUkxDb25uZWN0aW9uLgogIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXREZWZh dWx0UmVxdWVzdFByb3BlcnR5KFN0cmluZyBrZXksIFN0cmluZyB2YWx1ZSkKICB7CiAgICBkZWZS ZXF1ZXN0UHJvcGVydGllcy5wdXQoa2V5LCB2YWx1ZSk7CiAgfQoKICAvLyBPdmVycmlkZSBtZXRo b2QgaW4gVVJMQ29ubmVjdGlvbi4KICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXREZWZhdWx0UmVx dWVzdFByb3BlcnR5KFN0cmluZyBrZXkpCiAgewogICAgcmV0dXJuIChTdHJpbmcpIGRlZlJlcXVl c3RQcm9wZXJ0aWVzLmdldChrZXkpOwogIH0KCiAgLy8gT3ZlcnJpZGUgbWV0aG9kIGluIFVSTENv bm5lY3Rpb24uCiAgcHVibGljIHZvaWQgc2V0UmVxdWVzdFByb3BlcnR5KFN0cmluZyBrZXksIFN0 cmluZyB2YWx1ZSkKICB7CiAgICBpZiAoY29ubmVjdGVkKQogICAgICB0aHJvdyBuZXcgSWxsZWdh bEFjY2Vzc0Vycm9yKCJDb25uZWN0aW9uIGFscmVhZHkgZXN0YWJsaXNoZWQuIik7CgogICAgcmVx dWVzdFByb3BlcnRpZXMucHV0KGtleSwgdmFsdWUpOwogIH0KCiAgLy8gT3ZlcnJpZGUgbWV0aG9k IGluIFVSTENvbm5lY3Rpb24uCiAgcHVibGljIFN0cmluZyBnZXRSZXF1ZXN0UHJvcGVydHkoU3Ry aW5nIGtleSkKICB7CiAgICBpZiAoY29ubmVjdGVkKQogICAgICB0aHJvdyBuZXcgSWxsZWdhbEFj Y2Vzc0Vycm9yKCJDb25uZWN0aW9uIGFscmVhZHkgZXN0YWJsaXNoZWQuIik7CgogICAgcmV0dXJu IChTdHJpbmcpIHJlcXVlc3RQcm9wZXJ0aWVzLmdldChrZXkpOwogIH0KCiAgLy8gSW1wbGVtZW50 YXRpb24gb2YgYWJzdHJhY3QgbWV0aG9kLgogIHB1YmxpYyB2b2lkIGNvbm5lY3QoKSB0aHJvd3Mg SU9FeGNlcHRpb24KICB7CiAgICAvLyBDYWxsIGlzIGlnbm9yZWQgaWYgYWxyZWFkeSBjb25uZWN0 ZWQuCiAgICBpZiAoY29ubmVjdGVkKQogICAgICByZXR1cm47CgogICAgLy8gR2V0IGFkZHJlc3Mg YW5kIHBvcnQgbnVtYmVyLgogICAgaW50IHBvcnQ7CiAgICBJbmV0QWRkcmVzcyBkZXN0QWRkciA9 IEluZXRBZGRyZXNzLmdldEJ5TmFtZSh1cmwuZ2V0SG9zdCgpKTsKICAgIGlmICgocG9ydCA9IHVy bC5nZXRQb3J0KCkpID09IC0xKQogICAgICBwb3J0ID0gODA7CgogICAgLy8gT3BlbiBzb2NrZXQg YW5kIG91dHB1dCBzdHJlYW0uCiAgICBzb2NrID0gbmV3IFNvY2tldChkZXN0QWRkciwgcG9ydCk7 CgogICAgUHJpbnRXcml0ZXIgb3V0ID0gbmV3IFByaW50V3JpdGVyKHNvY2suZ2V0T3V0cHV0U3Ry ZWFtKCkpOwoKICAgIC8vIFNlbmQgcmVxdWVzdCBpbmNsdWRpbmcgYW55IHJlcXVlc3QgcHJvcGVy dGllcyB0aGF0IHdlcmUgc2V0LgogICAgb3V0LnByaW50KGdldFJlcXVlc3RNZXRob2QoKSArICIg IiArIHVybC5nZXRGaWxlKCkgKyAiIEhUVFAvMS4wXHJcbiIpOwogICAgb3V0LnByaW50KCJIb3N0 OiAiICsgdXJsLmdldEhvc3QoKSArICI6IiArIHBvcnQgKyAiXHJcbiIpOwogICAgRW51bWVyYXRp b24gcmVxS2V5cyA9IHJlcXVlc3RQcm9wZXJ0aWVzLmtleXMoKTsKICAgIEVudW1lcmF0aW9uIHJl cVZhbHMgPSByZXF1ZXN0UHJvcGVydGllcy5lbGVtZW50cygpOwogICAgd2hpbGUgKHJlcUtleXMu aGFzTW9yZUVsZW1lbnRzKCkpCiAgICAgIG91dC5wcmludChyZXFLZXlzLm5leHRFbGVtZW50KCkg KyAiOiAiICsgcmVxVmFscy5uZXh0RWxlbWVudCgpICsgIlxyXG4iKTsKICAgIG91dC5wcmludCgi XHJcbiIpOwogICAgb3V0LmZsdXNoKCk7ICAgIAogICAgY29ubmVjdGVkID0gdHJ1ZTsKICAgIGhl YWRlcnMgPSBmYWxzZTsKICB9CgogIC8vIEltcGxlbWVudGF0aW9uIG9mIGFic3RyYWN0IG1ldGhv ZC4KICBwdWJsaWMgdm9pZCBkaXNjb25uZWN0KCkKICB7CiAgICBpZiAoc29jayAhPSBudWxsKQog ICAgICB7CiAgICAgICAgdHJ5CiAgICAgICAgICB7CiAgICAgICAgICAgIHNvY2suY2xvc2UoKTsK ICAgICAgICAgIH0KICAgICAgICBjYXRjaCAoSU9FeGNlcHRpb24gZXgpCiAgICAgICAgICB7CiAg ICAgICAgICAgIDsgLy8gSWdub3JlIGVycm9ycyBpbiBjbG9zaW5nIHNvY2tldC4KICAgICAgICAg IH0KICAgICAgICBzb2NrID0gbnVsbDsKICAgICAgfQogIH0KCiAgLy8gVE9ETzogcHVibGljIGJv b2xlYW4gdXNpbmdQcm94eSgpCiAgcHVibGljIGJvb2xlYW4gdXNpbmdQcm94eSgpCiAgewogICAg dGhyb3cgbmV3IEludGVybmFsRXJyb3IoIkh0dHBVUkxDb25uZWN0aW9uLnVzaW5nUHJveHkgbm90 IGltcGxlbWVudGVkIik7CiAgfQoKICAvLyBPdmVycmlkZSBkZWZhdWx0IG1ldGhvZCBpbiBVUkxD b25uZWN0aW9uLgogIHB1YmxpYyBJbnB1dFN0cmVhbSBnZXRJbnB1dFN0cmVhbSgpIHRocm93cyBJ T0V4Y2VwdGlvbgogIHsKICAgIGlmICghY29ubmVjdGVkKQogICAgICBjb25uZWN0KCk7CgogICAg aWYgKCAhaGVhZGVycyApCiAgICAJZ2V0SHR0cEhlYWRlcnMoKTsKICAgIAogICAgaWYgKCFkb0lu cHV0KQogICAgICB0aHJvdyBuZXcgUHJvdG9jb2xFeGNlcHRpb24oIkNhbid0IG9wZW4gSW5wdXRT dHJlYW0gaWYgZG9JbnB1dCBpcyBmYWxzZSIpOwogICAgcmV0dXJuIGJ1ZmZlcmVkSW47CiAgfQoK ICAvLyBPdmVycmlkZSBkZWZhdWx0IG1ldGhvZCBpbiBVUkxDb25uZWN0aW9uLgogIHB1YmxpYyBP dXRwdXRTdHJlYW0gZ2V0T3V0cHV0U3RyZWFtKCkgdGhyb3dzIElPRXhjZXB0aW9uCiAgewogICAg aWYgKCFjb25uZWN0ZWQpCiAgICAgIGNvbm5lY3QoKTsKCiAgICBpZiAoISBkb091dHB1dCkKICAg ICAgdGhyb3cgbmV3CiAgICAgICAgUHJvdG9jb2xFeGNlcHRpb24oIkNhbid0IG9wZW4gT3V0cHV0 U3RyZWFtIGlmIGRvT3V0cHV0IGlzIGZhbHNlIik7CiAgICByZXR1cm4gc29jay5nZXRPdXRwdXRT dHJlYW0oKTsKICB9CgogIC8vIE92ZXJyaWRlIGRlZmF1bHQgbWV0aG9kIGluIFVSTENvbm5lY3Rp b24uCiAgcHVibGljIFN0cmluZyBnZXRIZWFkZXJGaWVsZChTdHJpbmcgbmFtZSkKICB7CiAgICBp ZiAoIWNvbm5lY3RlZCkKICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgY29ubmVjdCgpOwog ICAgICAgIH0KICAgICAgY2F0Y2ggKElPRXhjZXB0aW9uIHgpCiAgICAgICAgewogICAgICAgICAg cmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgIHJldHVybiAoU3RyaW5nKSBoZHJIYXNoLmdldChu YW1lLnRvTG93ZXJDYXNlKCkpOwogIH0KCiAgLy8gT3ZlcnJpZGUgZGVmYXVsdCBtZXRob2QgaW4g VVJMQ29ubmVjdGlvbi4KICBwdWJsaWMgU3RyaW5nIGdldEhlYWRlckZpZWxkKGludCBuKQogIHsK ICAgIGlmICghY29ubmVjdGVkKQogICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICBjb25uZWN0 KCk7CiAgICAgICAgfQogICAgICBjYXRjaCAoSU9FeGNlcHRpb24geCkKICAgICAgICB7CiAgICAg ICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgaWYgKG4gPCBoZHJWZWMuc2l6ZSgpKQog ICAgICByZXR1cm4gZ2V0RmllbGQoKFN0cmluZykgaGRyVmVjLmVsZW1lbnRBdChuKSk7CiAgICBy ZXR1cm4gbnVsbDsKICB9CgogIC8vIE92ZXJyaWRlIGRlZmF1bHQgbWV0aG9kIGluIFVSTENvbm5l Y3Rpb24uCiAgcHVibGljIFN0cmluZyBnZXRIZWFkZXJGaWVsZEtleShpbnQgbikKICB7CiAgICBp ZiAoIWNvbm5lY3RlZCkKICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgY29ubmVjdCgpOwog ICAgICAgIH0KICAgICAgY2F0Y2ggKElPRXhjZXB0aW9uIHgpCiAgICAgICAgewogICAgICAgICAg cmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgIGlmIChuIDwgaGRyVmVjLnNpemUoKSkKICAgICAg cmV0dXJuIGdldEtleSgoU3RyaW5nKSBoZHJWZWMuZWxlbWVudEF0KG4pKTsKICAgIHJldHVybiBu dWxsOwogIH0KCiAgcHJpdmF0ZSBTdHJpbmcgZ2V0S2V5KFN0cmluZyBzdHIpCiAgewogICAgaWYg KHN0ciA9PSBudWxsKQogICAgICByZXR1cm4gbnVsbDsKICAgIGludCBpbmRleCA9IHN0ci5pbmRl eE9mKCc6Jyk7CiAgICBpZiAoaW5kZXggPj0gMCkKICAgICAgcmV0dXJuIHN0ci5zdWJzdHJpbmco MCwgaW5kZXgpOwogICAgZWxzZQogICAgICByZXR1cm4gbnVsbDsKICB9CgogIHByaXZhdGUgU3Ry aW5nIGdldEZpZWxkKFN0cmluZyBzdHIpCiAgewogICAgaWYgKHN0ciA9PSBudWxsKQogICAgICBy ZXR1cm4gbnVsbDsKICAgIGludCBpbmRleCA9IHN0ci5pbmRleE9mKCc6Jyk7CiAgICBpZiAoaW5k ZXggPj0gMCkKICAgICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoaW5kZXggKyAxKS50cmltKCk7CiAg ICBlbHNlCiAgICAgIHJldHVybiBzdHI7CiAgfQoKICBwcml2YXRlIHZvaWQgZ2V0SHR0cEhlYWRl cnMoKSB0aHJvd3MgSU9FeGNlcHRpb24KICB7CiAgICAvLyBPcmlnaW5hbGx5IHRyaWVkIHVzaW5n IGEgQnVmZmVyZWRSZWFkZXIgaGVyZSB0byB0YWtlIGFkdmFudGFnZSBvZgogICAgLy8gdGhlIHJl YWRMaW5lIG1ldGhvZCBhbmQgYXZvaWQgdGhlIGZvbGxvd2luZywgYnV0IHRoZSBidWZmZXIgcmVh ZAogICAgLy8gcGFzdCB0aGUgZW5kIG9mIHRoZSBoZWFkZXJzIHNvIHRoZSBmaXJzdCBwYXJ0IG9m IHRoZSBjb250ZW50IHdhcyBsb3N0LgogICAgLy8gSXQgaXMgcHJvYmFibHkgbW9yZSByb2J1c3Qg dGhhbiBpdCBuZWVkcyB0byBiZSwgZS5nLiB0aGUgYnl0ZVtdCiAgICAvLyBpcyB1bmxpa2VseSB0 byBvdmVyZmxvdyBhbmQgYSAnXHInIHNob3VsZCBhbHdheXMgYmUgZm9sbG93ZWQgYnkgYSAnXG4n LAogICAgLy8gYnV0IGl0IGlzIGJldHRlciB0byBiZSBzYWZlIGp1c3QgaW4gY2FzZS4KICAgIHNv Y2suc2V0UmVjZWl2ZUJ1ZmZlclNpemUoNDA5Nik7CiAgICBidWZmZXJlZEluID0gbmV3IEJ1ZmZl cmVkSW5wdXRTdHJlYW0oc29jay5nZXRJbnB1dFN0cmVhbSgpKTsKCiAgICBpbnQgYnVmbGVuID0g MTAwOwogICAgYnl0ZVtdIGJ1ZiA9IG5ldyBieXRlW2J1Zmxlbl07CiAgICBTdHJpbmcgbGluZSA9 ICIiOwogICAgYm9vbGVhbiBnb3RubCA9IGZhbHNlOwogICAgYnl0ZVtdIGNoID0gbmV3IGJ5dGVb MV07CiAgICBjaFswXSA9IChieXRlKSAnXG4nOwoKICAgIHdoaWxlICh0cnVlKQogICAgICB7CiAg ICAgICAgLy8gQ2hlY2sgZm9yIGxlZnRvdmVyIGJ5dGUgZnJvbSBub24tJ1xuJyBhZnRlciBhICdc cicuCiAgICAgICAgaWYgKGNoWzBdICE9ICdcbicpCiAgICAgICAgICBsaW5lID0gbGluZSArICdc cicgKyBuZXcgU3RyaW5nKGNoLCAwLCAxKTsKCiAgICAgICAgaW50IGk7CiAgICAgICAgLy8gRklY TUU6IFRoaXMgaXMgcmF0aGVyIGluZWZmaWNpZW50LgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBi dWZsZW47IGkrKykKICAgICAgICAgIHsKICAgICAgICAgICAgYnVmW2ldID0gKGJ5dGUpIGJ1ZmZl cmVkSW4ucmVhZCgpOwogICAgICAgICAgICBpZiAoYnVmW2ldID09IC0xKQogICAgICAgICAgICAg IHRocm93IG5ldyBJT0V4Y2VwdGlvbigiTWFsZm9ybWVkIEhUVFAgaGVhZGVyIik7CiAgICAgICAg ICAgIGlmIChidWZbaV0gPT0gJ1xyJykKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBi dWZmZXJlZEluLnJlYWQoY2gsIDAsIDEpOwogICAgICAgICAgICAgICAgaWYgKGNoWzBdID09ICdc bicpCiAgICAgICAgICAgICAgICAgIGdvdG5sID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBsaW5lID0gbGluZSArIG5ldyBT dHJpbmcoYnVmLCAwLCBpKTsKCiAgICAgICAgLy8gQSAnXHInICdcbicgY29tYm8gaW5kaWNhdGVz IHRoZSBlbmQgb2YgdGhlIGhlYWRlciBlbnRyeS4KICAgICAgICAvLyBJZiBpdCB3YXNuJ3QgZm91 bmQsIGN5Y2xlIGJhY2sgdGhyb3VnaCB0aGUgbG9vcCBhbmQgYXBwZW5kCiAgICAgICAgLy8gdG8g J2xpbmUnIHVudGlsIG9uZSBpcyBmb3VuZC4KICAgICAgICBpZiAoZ290bmwpCiAgICAgICAgICB7 CiAgICAgICAgICAgIC8vIEEgemVybyBsZW5ndGggZW50cnkgc2lnbmFscyB0aGUgZW5kIG9mIHRo ZSBoZWFkZXJzLgogICAgICAgICAgICBpZiAobGluZS5sZW5ndGgoKSA9PSAwKQogICAgICAgICAg ICAgIGJyZWFrOwoKICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGhlYWRlciBhbmQgcmVpbml0aWFs aXplIGZvciBuZXh0IGN5Y2xlLgogICAgICAgICAgICBoZHJWZWMuYWRkRWxlbWVudChsaW5lKTsK ICAgICAgICAgICAgU3RyaW5nIGtleSA9IGdldEtleShsaW5lKTsKICAgICAgICAgICAgaWYgKGtl eSAhPSBudWxsKQogICAgICAgICAgICAgIGhkckhhc2gucHV0KGtleS50b0xvd2VyQ2FzZSgpLCBn ZXRGaWVsZChsaW5lKSk7CiAgICAgICAgICAgIGxpbmUgPSAiIjsKICAgICAgICAgICAgY2hbMF0g PSAoYnl0ZSkgJ1xuJzsKICAgICAgICAgICAgZ290bmwgPSBmYWxzZTsKICAgICAgICAgIH0KICAg ICAgfQogIH0KfQoKCg==