From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by mx.groups.io with SMTP id smtpd.web09.4181.1608156255632202800 for ; Wed, 16 Dec 2020 14:04:15 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=dXwzYnQE; spf=pass (domain: redhat.com, ip: 63.128.21.124, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608156254; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JMKdf9UuIO6rnLcr6NLaLHoR0GPC4frjF94qRGMPFdY=; b=dXwzYnQEJUTUELep/aO5vOLFm83Jz141waox0icVXHUuMgfihxcTnRuR9C+4So/k3jLy2A IpPVux9y9QsOi8/rkro30578JZvs8SPwQAqkJDj8rex0/i6MdOZe/D6BRvewRq7xJKuA7g UANq9Qu4evYXyo1llFK3gktaFXPWf9U= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-532-GAuqssMqOoihV3Gh8yUUBQ-1; Wed, 16 Dec 2020 17:04:09 -0500 X-MC-Unique: GAuqssMqOoihV3Gh8yUUBQ-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A134C107ACE8; Wed, 16 Dec 2020 22:04:08 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-114-152.ams2.redhat.com [10.36.114.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id C663819CAC; Wed, 16 Dec 2020 22:04:03 +0000 (UTC) From: "Laszlo Ersek" To: devel@edk2.groups.io, virtio-fs@redhat.com, lersek@redhat.com Cc: Ard Biesheuvel , Jordan Justen , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [edk2 PATCH 25/48] OvmfPkg/VirtioFsDxe: implement the wrapper function for FUSE_GETATTR Date: Wed, 16 Dec 2020 22:11:02 +0100 Message-Id: <20201216211125.19496-26-lersek@redhat.com> In-Reply-To: <20201216211125.19496-1-lersek@redhat.com> References: <20201216211125.19496-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lersek@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 QWRkIHRoZSBWaXJ0aW9Gc0Z1c2VHZXRBdHRyKCkgZnVuY3Rpb24sIGZvciBzZW5kaW5nIHRoZSBG VVNFX0dFVEFUVFIKY29tbWFuZCB0byB0aGUgVmlydGlvIEZpbGVzeXN0ZW0gZGV2aWNlLgoKQ2M6 IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBhcm0uY29tPgpDYzogSm9yZGFuIEp1c3Rl biA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT4KQ2M6IFBoaWxpcHBlIE1hdGhpZXUtRGF1ZMOp IDxwaGlsbWRAcmVkaGF0LmNvbT4KUmVmOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcv c2hvd19idWcuY2dpP2lkPTMwOTcKU2lnbmVkLW9mZi1ieTogTGFzemxvIEVyc2VrIDxsZXJzZWtA cmVkaGF0LmNvbT4KLS0tCiBPdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9WaXJ0aW9G cy5oIHwgIDE2ICsrKwogT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9WaXJ0aW9Gc0R4ZS5pbmYgICAgICAg ICB8ICAgMSArCiBPdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmggICAgICAgICAgIHwg ICA3ICsrCiBPdm1mUGtnL1ZpcnRpb0ZzRHhlL0Z1c2VHZXRBdHRyLmMgICAgICAgICAgIHwgMTE2 ICsrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDE0MCBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvVmlydGlvRnMu aCBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1ZpcnRpb0ZzLmgKaW5kZXggZjQ5 NDUyODMwYWJjLi5lZmNmNTc5NDFjNTkgMTAwNjQ0Ci0tLSBhL092bWZQa2cvSW5jbHVkZS9JbmR1 c3RyeVN0YW5kYXJkL1ZpcnRpb0ZzLmgKKysrIGIvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3Rh bmRhcmQvVmlydGlvRnMuaApAQCAtMTA5LDE2ICsxMDksMTcgQEAgdHlwZWRlZiBzdHJ1Y3Qgewog I2RlZmluZSBWSVJUSU9fRlNfRlVTRV9PUEVOX1JFUV9GX1JEV1IgICAyDQogDQogLy8NCiAvLyBG VVNFIG9wZXJhdGlvbiBjb2Rlcy4NCiAvLw0KIHR5cGVkZWYgZW51bSB7DQogICBWaXJ0aW9Gc0Z1 c2VPcExvb2t1cCAgICAgID0gIDEsDQogICBWaXJ0aW9Gc0Z1c2VPcEZvcmdldCAgICAgID0gIDIs DQorICBWaXJ0aW9Gc0Z1c2VPcEdldEF0dHIgICAgID0gIDMsDQogICBWaXJ0aW9Gc0Z1c2VPcE1r RGlyICAgICAgID0gIDksDQogICBWaXJ0aW9Gc0Z1c2VPcFVubGluayAgICAgID0gMTAsDQogICBW aXJ0aW9Gc0Z1c2VPcFJtRGlyICAgICAgID0gMTEsDQogICBWaXJ0aW9Gc0Z1c2VPcE9wZW4gICAg ICAgID0gMTQsDQogICBWaXJ0aW9Gc0Z1c2VPcFJlbGVhc2UgICAgID0gMTgsDQogICBWaXJ0aW9G c0Z1c2VPcEZzeW5jICAgICAgID0gMjAsDQogICBWaXJ0aW9Gc0Z1c2VPcEZsdXNoICAgICAgID0g MjUsDQogICBWaXJ0aW9Gc0Z1c2VPcEluaXQgICAgICAgID0gMjYsDQpAQCAtMTkwLDE2ICsxOTEs MzEgQEAgdHlwZWRlZiBzdHJ1Y3QgewogDQogLy8NCiAvLyBIZWFkZXIgZm9yIFZpcnRpb0ZzRnVz ZU9wRm9yZ2V0Lg0KIC8vDQogdHlwZWRlZiBzdHJ1Y3Qgew0KICAgVUlOVDY0IE51bWJlck9mTG9v a3VwczsNCiB9IFZJUlRJT19GU19GVVNFX0ZPUkdFVF9SRVFVRVNUOw0KIA0KKy8vDQorLy8gSGVh ZGVycyBmb3IgVmlydGlvRnNGdXNlT3BHZXRBdHRyLg0KKy8vDQordHlwZWRlZiBzdHJ1Y3Qgew0K KyAgVUlOVDMyIEdldEF0dHJGbGFnczsNCisgIFVJTlQzMiBEdW1teTsNCisgIFVJTlQ2NCBGaWxl SGFuZGxlOw0KK30gVklSVElPX0ZTX0ZVU0VfR0VUQVRUUl9SRVFVRVNUOw0KKw0KK3R5cGVkZWYg c3RydWN0IHsNCisgIFVJTlQ2NCBBdHRyVmFsaWQ7DQorICBVSU5UMzIgQXR0clZhbGlkTnNlYzsN CisgIFVJTlQzMiBEdW1teTsNCit9IFZJUlRJT19GU19GVVNFX0dFVEFUVFJfUkVTUE9OU0U7DQor DQogLy8NCiAvLyBIZWFkZXIgZm9yIFZpcnRpb0ZzRnVzZU9wTWtEaXIuDQogLy8NCiB0eXBlZGVm IHN0cnVjdCB7DQogICBVSU5UMzIgTW9kZTsNCiAgIFVJTlQzMiBVbWFzazsNCiB9IFZJUlRJT19G U19GVVNFX01LRElSX1JFUVVFU1Q7DQogDQpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9WaXJ0aW9Gc0R4 ZS9WaXJ0aW9Gc0R4ZS5pbmYgYi9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmluZgpp bmRleCAyMzMyYWEzZWU1NTEuLjIzM2MwYzVjMGY5YSAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9WaXJ0 aW9Gc0R4ZS9WaXJ0aW9Gc0R4ZS5pbmYKKysrIGIvT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9WaXJ0aW9G c0R4ZS5pbmYKQEAgLTgxLDE2ICs4MSwxNyBAQCBbUGFja2FnZXNdCiAgIE1kZVBrZy9NZGVQa2cu ZGVjDQogICBPdm1mUGtnL092bWZQa2cuZGVjDQogDQogW1NvdXJjZXNdDQogICBEcml2ZXJCaW5k aW5nLmMNCiAgIEZ1c2VGbHVzaC5jDQogICBGdXNlRm9yZ2V0LmMNCiAgIEZ1c2VGc3luYy5jDQor ICBGdXNlR2V0QXR0ci5jDQogICBGdXNlSW5pdC5jDQogICBGdXNlTG9va3VwLmMNCiAgIEZ1c2VN a0Rpci5jDQogICBGdXNlT3Blbi5jDQogICBGdXNlT3BlbkRpci5jDQogICBGdXNlT3Blbk9yQ3Jl YXRlLmMNCiAgIEZ1c2VSZWxlYXNlLmMNCiAgIEZ1c2VVbmxpbmsuYw0KZGlmZiAtLWdpdCBhL092 bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUuaCBiL092bWZQa2cvVmlydGlvRnNEeGUvVmly dGlvRnNEeGUuaAppbmRleCAwZTRmMjEwOWViMDIuLjNiZjY0YzAxNDZmYSAxMDA2NDQKLS0tIGEv T3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9WaXJ0aW9Gc0R4ZS5oCisrKyBiL092bWZQa2cvVmlydGlvRnNE eGUvVmlydGlvRnNEeGUuaApAQCAtMjU0LDE2ICsyNTQsMjMgQEAgVmlydGlvRnNGdXNlTG9va3Vw ICgKICAgKTsNCiANCiBFRklfU1RBVFVTDQogVmlydGlvRnNGdXNlRm9yZ2V0ICgNCiAgIElOIE9V VCBWSVJUSU9fRlMgKlZpcnRpb0ZzLA0KICAgSU4gICAgIFVJTlQ2NCAgICBOb2RlSWQNCiAgICk7 DQogDQorRUZJX1NUQVRVUw0KK1ZpcnRpb0ZzRnVzZUdldEF0dHIgKA0KKyAgSU4gT1VUIFZJUlRJ T19GUyAgICAgICAgICAgICAgICAgICAgICAgICAgKlZpcnRpb0ZzLA0KKyAgSU4gICAgIFVJTlQ2 NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZUlkLA0KKyAgICAgT1VUIFZJUlRJT19G U19GVVNFX0FUVFJJQlVURVNfUkVTUE9OU0UgKkZ1c2VBdHRyDQorICApOw0KKw0KIEVGSV9TVEFU VVMNCiBWaXJ0aW9Gc0Z1c2VNa0RpciAoDQogICBJTiBPVVQgVklSVElPX0ZTICpWaXJ0aW9GcywN CiAgIElOICAgICBVSU5UNjQgICAgUGFyZW50Tm9kZUlkLA0KICAgSU4gICAgIENIQVI4ICAgICAq TmFtZSwNCiAgICAgIE9VVCBVSU5UNjQgICAgKk5vZGVJZA0KICAgKTsNCiANCmRpZmYgLS1naXQg YS9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL0Z1c2VHZXRBdHRyLmMgYi9Pdm1mUGtnL1ZpcnRpb0ZzRHhl L0Z1c2VHZXRBdHRyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4y OWQ4ZWM4MTkwZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL0Z1c2VH ZXRBdHRyLmMKQEAgLTAsMCArMSwxMTYgQEAKKy8qKiBAZmlsZQ0KKyAgRlVTRV9HRVRBVFRSIHdy YXBwZXIgZm9yIHRoZSBWaXJ0aW8gRmlsZXN5c3RlbSBkZXZpY2UuDQorDQorICBDb3B5cmlnaHQg KEMpIDIwMjAsIFJlZCBIYXQsIEluYy4NCisNCisgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UtUGF0ZW50DQorKiovDQorDQorI2luY2x1ZGUgIlZpcnRpb0ZzRHhlLmgiDQor DQorLyoqDQorICBTZW5kIGEgRlVTRV9HRVRBVFRSIHJlcXVlc3QgdG8gdGhlIFZpcnRpbyBGaWxl c3lzdGVtIGRldmljZSwgZm9yIGZldGNoaW5nIHRoZQ0KKyAgYXR0cmlidXRlcyBvZiBhbiBpbm9k ZS4NCisNCisgIFRoZSBmdW5jdGlvbiBtYXkgb25seSBiZSBjYWxsZWQgYWZ0ZXIgVmlydGlvRnNG dXNlSW5pdFNlc3Npb24oKSByZXR1cm5zDQorICBzdWNjZXNzZnVsbHkgYW5kIGJlZm9yZSBWaXJ0 aW9Gc1VuaW5pdCgpIGlzIGNhbGxlZC4NCisNCisgIEBwYXJhbVtpbixvdXRdIFZpcnRpb0ZzICBU aGUgVmlydGlvIEZpbGVzeXN0ZW0gZGV2aWNlIHRvIHNlbmQgdGhlDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgRlVTRV9HRVRBVFRSIHJlcXVlc3QgdG8uIE9uIG91dHB1dCwgdGhlIEZVU0Ug cmVxdWVzdA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgIlZpcnRpb0ZzLT5S ZXF1ZXN0SWQiIHdpbGwgaGF2ZSBiZWVuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5j cmVtZW50ZWQuDQorDQorICBAcGFyYW1baW5dIE5vZGVJZCAgICAgICAgVGhlIGlub2RlIG51bWJl ciBmb3Igd2hpY2ggdGhlIGF0dHJpYnV0ZXMgc2hvdWxkIGJlDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0cmlldmVkLg0KKw0KKyAgQHBhcmFtW291dF0gRnVzZUF0dHIgICAgIFRoZSBW SVJUSU9fRlNfRlVTRV9BVFRSSUJVVEVTX1JFU1BPTlNFIG9iamVjdA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRlc2NyaWJpbmcgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGlub2RlLg0KKw0K KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgRnVzZUF0dHIgaGFzIGJlZW4gZmlsbGVkIGluLg0KKw0K KyAgQHJldHVybiAgICAgICAgICAgICAgVGhlICJlcnJubyIgdmFsdWUgbWFwcGVkIHRvIGFuIEVG SV9TVEFUVVMgY29kZSwgaWYgdGhlDQorICAgICAgICAgICAgICAgICAgICAgICBWaXJ0aW8gRmls ZXN5c3RlbSBkZXZpY2UgZXhwbGljaXRseSByZXBvcnRlZCBhbiBlcnJvci4NCisNCisgIEByZXR1 cm4gICAgICAgICAgICAgIEVycm9yIGNvZGVzIHByb3BhZ2F0ZWQgZnJvbSBWaXJ0aW9Gc1NnTGlz dHNWYWxpZGF0ZSgpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgVmlydGlvRnNGdXNlTmV3UmVx dWVzdCgpLCBWaXJ0aW9Gc1NnTGlzdHNTdWJtaXQoKSwNCisgICAgICAgICAgICAgICAgICAgICAg IFZpcnRpb0ZzRnVzZUNoZWNrUmVzcG9uc2UoKS4NCisqKi8NCitFRklfU1RBVFVTDQorVmlydGlv RnNGdXNlR2V0QXR0ciAoDQorICBJTiBPVVQgVklSVElPX0ZTICAgICAgICAgICAgICAgICAgICAg ICAgICAqVmlydGlvRnMsDQorICBJTiAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOb2RlSWQsDQorICAgICBPVVQgVklSVElPX0ZTX0ZVU0VfQVRUUklCVVRFU19SRVNQT05T RSAqRnVzZUF0dHINCisgICkNCit7DQorICBWSVJUSU9fRlNfRlVTRV9SRVFVRVNUICAgICAgICAg IENvbW1vblJlcTsNCisgIFZJUlRJT19GU19GVVNFX0dFVEFUVFJfUkVRVUVTVCAgR2V0QXR0clJl cTsNCisgIFZJUlRJT19GU19JT19WRUNUT1IgICAgICAgICAgICAgUmVxSW9WZWNbMl07DQorICBW SVJUSU9fRlNfU0NBVFRFUl9HQVRIRVJfTElTVCAgIFJlcVNnTGlzdDsNCisgIFZJUlRJT19GU19G VVNFX1JFU1BPTlNFICAgICAgICAgQ29tbW9uUmVzcDsNCisgIFZJUlRJT19GU19GVVNFX0dFVEFU VFJfUkVTUE9OU0UgR2V0QXR0clJlc3A7DQorICBWSVJUSU9fRlNfSU9fVkVDVE9SICAgICAgICAg ICAgIFJlc3BJb1ZlY1szXTsNCisgIFZJUlRJT19GU19TQ0FUVEVSX0dBVEhFUl9MSVNUICAgUmVz cFNnTGlzdDsNCisgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KKw0K KyAgLy8NCisgIC8vIFNldCB1cCB0aGUgc2NhdHRlci1nYXRoZXIgbGlzdHMuDQorICAvLw0KKyAg UmVxSW9WZWNbMF0uQnVmZmVyID0gJkNvbW1vblJlcTsNCisgIFJlcUlvVmVjWzBdLlNpemUgICA9 IHNpemVvZiBDb21tb25SZXE7DQorICBSZXFJb1ZlY1sxXS5CdWZmZXIgPSAmR2V0QXR0clJlcTsN CisgIFJlcUlvVmVjWzFdLlNpemUgICA9IHNpemVvZiBHZXRBdHRyUmVxOw0KKyAgUmVxU2dMaXN0 LklvVmVjICAgID0gUmVxSW9WZWM7DQorICBSZXFTZ0xpc3QuTnVtVmVjICAgPSBBUlJBWV9TSVpF IChSZXFJb1ZlYyk7DQorDQorICBSZXNwSW9WZWNbMF0uQnVmZmVyID0gJkNvbW1vblJlc3A7DQor ICBSZXNwSW9WZWNbMF0uU2l6ZSAgID0gc2l6ZW9mIENvbW1vblJlc3A7DQorICBSZXNwSW9WZWNb MV0uQnVmZmVyID0gJkdldEF0dHJSZXNwOw0KKyAgUmVzcElvVmVjWzFdLlNpemUgICA9IHNpemVv ZiBHZXRBdHRyUmVzcDsNCisgIFJlc3BJb1ZlY1syXS5CdWZmZXIgPSBGdXNlQXR0cjsNCisgIFJl c3BJb1ZlY1syXS5TaXplICAgPSBzaXplb2YgKkZ1c2VBdHRyOw0KKyAgUmVzcFNnTGlzdC5Jb1Zl YyAgICA9IFJlc3BJb1ZlYzsNCisgIFJlc3BTZ0xpc3QuTnVtVmVjICAgPSBBUlJBWV9TSVpFIChS ZXNwSW9WZWMpOw0KKw0KKyAgLy8NCisgIC8vIFZhbGlkYXRlIHRoZSBzY2F0dGVyLWdhdGhlciBs aXN0czsgY2FsY3VsYXRlIHRoZSB0b3RhbCB0cmFuc2ZlciBzaXplcy4NCisgIC8vDQorICBTdGF0 dXMgPSBWaXJ0aW9Gc1NnTGlzdHNWYWxpZGF0ZSAoVmlydGlvRnMsICZSZXFTZ0xpc3QsICZSZXNw U2dMaXN0KTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgcmV0dXJuIFN0YXR1 czsNCisgIH0NCisNCisgIC8vDQorICAvLyBQb3B1bGF0ZSB0aGUgY29tbW9uIHJlcXVlc3QgaGVh ZGVyLg0KKyAgLy8NCisgIFN0YXR1cyA9IFZpcnRpb0ZzRnVzZU5ld1JlcXVlc3QgKFZpcnRpb0Zz LCAmQ29tbW9uUmVxLCBSZXFTZ0xpc3QuVG90YWxTaXplLA0KKyAgICAgICAgICAgICBWaXJ0aW9G c0Z1c2VPcEdldEF0dHIsIE5vZGVJZCk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQor ICAgIHJldHVybiBTdGF0dXM7DQorICB9DQorDQorICAvLw0KKyAgLy8gUG9wdWxhdGUgdGhlIEZV U0VfR0VUQVRUUi1zcGVjaWZpYyBmaWVsZHMuDQorICAvLw0KKyAgR2V0QXR0clJlcS5HZXRBdHRy RmxhZ3MgPSAwOw0KKyAgR2V0QXR0clJlcS5EdW1teSAgICAgICAgPSAwOw0KKyAgR2V0QXR0clJl cS5GaWxlSGFuZGxlICAgPSAwOw0KKw0KKyAgLy8NCisgIC8vIFN1Ym1pdCB0aGUgcmVxdWVzdC4N CisgIC8vDQorICBTdGF0dXMgPSBWaXJ0aW9Gc1NnTGlzdHNTdWJtaXQgKFZpcnRpb0ZzLCAmUmVx U2dMaXN0LCAmUmVzcFNnTGlzdCk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAg IHJldHVybiBTdGF0dXM7DQorICB9DQorDQorICAvLw0KKyAgLy8gVmVyaWZ5IHRoZSByZXNwb25z ZSAoYWxsIHJlc3BvbnNlIGJ1ZmZlcnMgYXJlIGZpeGVkIHNpemUpLg0KKyAgLy8NCisgIFN0YXR1 cyA9IFZpcnRpb0ZzRnVzZUNoZWNrUmVzcG9uc2UgKCZSZXNwU2dMaXN0LCBDb21tb25SZXEuVW5p cXVlLCBOVUxMKTsNCisgIGlmIChTdGF0dXMgPT0gRUZJX0RFVklDRV9FUlJPUikgew0KKyAgICBE RUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IExhYmVsPVwiJXNcIiBOb2RlSWQ9JUx1IEVycm5vPSVk XG4iLA0KKyAgICAgIF9fRlVOQ1RJT05fXywgVmlydGlvRnMtPkxhYmVsLCBOb2RlSWQsIENvbW1v blJlc3AuRXJyb3IpKTsNCisgICAgU3RhdHVzID0gVmlydGlvRnNFcnJub1RvRWZpU3RhdHVzIChD b21tb25SZXNwLkVycm9yKTsNCisgIH0NCisgIHJldHVybiBTdGF0dXM7DQorfQ0KLS0gCjIuMTku MS4zLmczMDI0N2FhNWQyMDEKCgo=