From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 46058 invoked by alias); 23 Apr 2019 20:10:49 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 46034 invoked by uid 89); 23 Apr 2019 20:10:48 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-19.7 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=Statement X-HELO: mail-qk1-f180.google.com Received: from mail-qk1-f180.google.com (HELO mail-qk1-f180.google.com) (209.85.222.180) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 23 Apr 2019 20:10:41 +0000 Received: by mail-qk1-f180.google.com with SMTP id n81so5552997qke.2 for ; Tue, 23 Apr 2019 13:10:41 -0700 (PDT) MIME-Version: 1.0 From: Iain Buclaw Date: Tue, 23 Apr 2019 20:28:00 -0000 Message-ID: Subject: [PATCH, d] Committed support for compiling without libphobos library. To: gcc-patches Content-Type: multipart/mixed; boundary="000000000000c464f20587382d02" X-IsSubscribed: yes X-SW-Source: 2019-04/txt/msg00890.txt.bz2 --000000000000c464f20587382d02 Content-Type: text/plain; charset="UTF-8" Content-length: 2362 Hi, This patch backports support from the dmd front-end the options to omit generating code that depends on libdruntime existing, and enables the controlling of them by adding the options -fdruntime, and -frtti. The other two options -fexceptions and -fmoduleinfo have also been adapted accordingly. Bootstrapped and regression tested on x86_64-linux-gnu. Committed to trunk as r270518. -- Iain --- gcc/d/ChangeLog: 2019-04-23 Iain Buclaw * d-builtins.cc (d_init_versions): Add D_BetterC, D_ModuleInfo, D_Exceptions, D_TypeInfo as predefined version conditions. * d-codegen.cc (build_bounds_condition): Generate trap if D asserts are turned off. * d-frontend.cc (getTypeInfoType): Add error when -fno-rtti is set. * d-lang.cc (d_init_options): Initialize new front-end options. (d_handle_option): Handle -fdruntime, -fexceptions, and -frtti. (d_post_options): Turn off D runtime features if -fno-druntime is set. * d-spec.cc (lang_specific_driver): Handle -fdruntime. * d-tree.h (have_typeinfo_p): Add prototype. (build_typeinfo): Update prototype. * decl.cc (DeclVisitor::visit(StructDeclaration)): Create typeinfo only if TypeInfo exists. (DeclVisitor::visit(ClassDeclaration)): Likewise. (DeclVisitor::visit(InterfaceDeclaration)): Likewise. (DeclVisitor::visit(EnumDeclaration)): Likewise. * expr.cc: Update all calls to build_typeinfo. * gdc.texi (Runtime Options): Document -fdruntime and -frtti. * lang.opt: Add -fdruntime and -frtti. * modules.cc (build_module_tree): Create module info only if ModuleInfo exists. * toir.cc (IRVisitor::visit(ThrowStatement)): Update test for -fno-exceptions. * typeinfo.cc (create_tinfo_types): Build internal typeinfo classes only if Object exists. (have_typeinfo_p): New function. (class TypeInfoVisitor): Update all calls to build_typeinfo. (build_typeinfo): Add error when -fno-rtti is set. gcc/testsuite/ChangeLog: 2019-04-23 Iain Buclaw * gdc.test/fail_compilation/fail2456.d: New test. * gdc.test/fail_compilation/test18312.d: New test. * gdc.test/gdc-test.exp (gdc-convert-args): Handle -betterC. --- --000000000000c464f20587382d02 Content-Type: text/x-patch; charset="US-ASCII"; name="nodruntime.patch" Content-Disposition: attachment; filename="nodruntime.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_juu81guo0 Content-length: 69845 ZGlmZiAtLWdpdCBhL2djYy9kL2QtYnVpbHRpbnMuY2MgYi9nY2MvZC9kLWJ1 aWx0aW5zLmNjCmluZGV4IGYyNjNhYWZiZDU5Li4zZGJkYWZiNDkyYSAxMDA2 NDQKLS0tIGEvZ2NjL2QvZC1idWlsdGlucy5jYworKysgYi9nY2MvZC9kLWJ1 aWx0aW5zLmNjCkBAIC00NDcsNiArNDQ3LDE1IEBAIGRfaW5pdF92ZXJzaW9u cyAodm9pZCkKICAgaWYgKGdsb2JhbC5wYXJhbXMudXNlQXJyYXlCb3VuZHMg PT0gQk9VTkRTQ0hFQ0tvZmYpCiAgICAgVmVyc2lvbkNvbmRpdGlvbjo6YWRk UHJlZGVmaW5lZEdsb2JhbElkZW50ICgiRF9Ob0JvdW5kc0NoZWNrcyIpOwog CisgIGlmIChnbG9iYWwucGFyYW1zLmJldHRlckMpCisgICAgVmVyc2lvbkNv bmRpdGlvbjo6YWRkUHJlZGVmaW5lZEdsb2JhbElkZW50ICgiRF9CZXR0ZXJD Iik7CisgIGVsc2UKKyAgICB7CisgICAgICBWZXJzaW9uQ29uZGl0aW9uOjph ZGRQcmVkZWZpbmVkR2xvYmFsSWRlbnQgKCJEX01vZHVsZUluZm8iKTsKKyAg ICAgIFZlcnNpb25Db25kaXRpb246OmFkZFByZWRlZmluZWRHbG9iYWxJZGVu dCAoIkRfRXhjZXB0aW9ucyIpOworICAgICAgVmVyc2lvbkNvbmRpdGlvbjo6 YWRkUHJlZGVmaW5lZEdsb2JhbElkZW50ICgiRF9UeXBlSW5mbyIpOworICAg IH0KKwogICBWZXJzaW9uQ29uZGl0aW9uOjphZGRQcmVkZWZpbmVkR2xvYmFs SWRlbnQgKCJhbGwiKTsKIAogICAvKiBFbWl0IGFsbCB0YXJnZXQtc3BlY2lm aWMgdmVyc2lvbiBpZGVudGlmaWVycy4gICovCmRpZmYgLS1naXQgYS9nY2Mv ZC9kLWNvZGVnZW4uY2MgYi9nY2MvZC9kLWNvZGVnZW4uY2MKaW5kZXggMjY5 MjkxMDliNDguLjJhYmZmOTJmYzg4IDEwMDY0NAotLS0gYS9nY2MvZC9kLWNv ZGVnZW4uY2MKKysrIGIvZ2NjL2QvZC1jb2RlZ2VuLmNjCkBAIC0xNzYyLDcg KzE3NjIsMTAgQEAgYnVpbGRfYm91bmRzX2NvbmRpdGlvbiAoY29uc3QgTG9j JiBsb2MsIHRyZWUgaW5kZXgsIHRyZWUgbGVuLCBib29sIGluY2x1c2l2ZSkK ICAgICAgaGF2ZSBhbHJlYWR5IHRha2VuIGNhcmUgb2YgaW1wbGljaXQgY2Fz dHMgdG8gdW5zaWduZWQuICAqLwogICB0cmVlIGNvbmRpdGlvbiA9IGZvbGRf YnVpbGQyIChpbmNsdXNpdmUgPyBHVF9FWFBSIDogR0VfRVhQUiwKIAkJCQlk X2Jvb2xfdHlwZSwgaW5kZXgsIGxlbik7Ci0gIHRyZWUgYm91bmRzZXJyID0g ZF9hc3NlcnRfY2FsbCAobG9jLCBMSUJDQUxMX0FSUkFZX0JPVU5EUyk7Cisg IC8qIFRlcm1pbmF0ZSB0aGUgcHJvZ3JhbSB3aXRoIGEgdHJhcCBpZiBubyBE IHJ1bnRpbWUgcHJlc2VudC4gICovCisgIHRyZWUgYm91bmRzZXJyID0gKGds b2JhbC5wYXJhbXMuY2hlY2tBY3Rpb24gPT0gQ0hFQ0tBQ1RJT05fRCkKKyAg ICA/IGRfYXNzZXJ0X2NhbGwgKGxvYywgTElCQ0FMTF9BUlJBWV9CT1VORFMp CisgICAgOiBidWlsZF9jYWxsX2V4cHIgKGJ1aWx0aW5fZGVjbF9leHBsaWNp dCAoQlVJTFRfSU5fVFJBUCksIDApOwogCiAgIHJldHVybiBidWlsZF9jb25k aXRpb24gKFRSRUVfVFlQRSAoaW5kZXgpLCBjb25kaXRpb24sIGJvdW5kc2Vy ciwgaW5kZXgpOwogfQpkaWZmIC0tZ2l0IGEvZ2NjL2QvZC1mcm9udGVuZC5j YyBiL2djYy9kL2QtZnJvbnRlbmQuY2MKaW5kZXggZDFkM2M3OGVjODYuLmNj ZDVmNTAxMzBmIDEwMDY0NAotLS0gYS9nY2MvZC9kLWZyb250ZW5kLmNjCisr KyBiL2djYy9kL2QtZnJvbnRlbmQuY2MKQEAgLTYxMiw4ICs2MTIsNDAgQEAg ZXZhbF9idWlsdGluIChMb2MgbG9jLCBGdW5jRGVjbGFyYXRpb24gKmZkLCBF eHByZXNzaW9ucyAqYXJndW1lbnRzKQogLyogQnVpbGQgYW5kIHJldHVybiB0 eXBlaW5mbyB0eXBlIGZvciBUWVBFLiAgKi8KIAogVHlwZSAqCi1nZXRUeXBl SW5mb1R5cGUgKFR5cGUgKnR5cGUsIFNjb3BlICpzYykKK2dldFR5cGVJbmZv VHlwZSAoTG9jIGxvYywgVHlwZSAqdHlwZSwgU2NvcGUgKnNjKQogeworICBp ZiAoIWdsb2JhbC5wYXJhbXMudXNlVHlwZUluZm8pCisgICAgeworICAgICAg LyogRXZlbiB3aGVuIGNvbXBpbGluZyB3aXRob3V0IFJUVEkgd2Ugc2hvdWxk IHN0aWxsIGJlIGFibGUgdG8gZXZhbHVhdGUKKwkgVHlwZUluZm8gYXQgY29t cGlsZS10aW1lLCBqdXN0IG5vdCBhdCBydW4tdGltZS4gICovCisgICAgICBp ZiAoIXNjIHx8ICEoc2MtPmZsYWdzICYgU0NPUEVjdGZlKSkKKwl7CisJICBz dGF0aWMgaW50IHdhcm5lZCA9IDA7CisKKwkgIGlmICghd2FybmVkKQorCSAg ICB7CisJICAgICAgZXJyb3JfYXQgKG1ha2VfbG9jYXRpb25fdCAobG9jKSwK KwkJCSIlPG9iamVjdC5UeXBlSW5mbyU+IGNhbm5vdCBiZSB1c2VkIHdpdGgg LWZuby1ydHRpIik7CisJICAgICAgd2FybmVkID0gMTsKKwkgICAgfQorCX0K KyAgICB9CisKKyAgaWYgKFR5cGU6OmR0eXBlaW5mbyA9PSBOVUxMCisgICAg ICB8fCAoVHlwZTo6ZHR5cGVpbmZvLT5zdG9yYWdlX2NsYXNzICYgU1RDdGVt cCkpCisgICAgeworICAgICAgLyogSWYgVHlwZUluZm8gaGFzIG5vdCBiZWVu IGRlY2xhcmVkLCB3YXJuIGFib3V0IGVhY2ggbG9jYXRpb24gb25jZS4gICov CisgICAgICBzdGF0aWMgTG9jIHdhcm5sb2M7CisKKyAgICAgIGlmICghbG9j LmVxdWFscyAod2FybmxvYykpCisJeworCSAgZXJyb3JfYXQgKG1ha2VfbG9j YXRpb25fdCAobG9jKSwKKwkJICAgICIlPG9iamVjdC5UeXBlSW5mbyU+IGNv dWxkIG5vdCBiZSBmb3VuZCwgIgorCQkgICAgImJ1dCBpcyBpbXBsaWNpdGx5 IHVzZWQiKTsKKwkgIHdhcm5sb2MgPSBsb2M7CisJfQorICAgIH0KKwogICBn Y2NfYXNzZXJ0ICh0eXBlLT50eSAhPSBUZXJyb3IpOwogICBjcmVhdGVfdHlw ZWluZm8gKHR5cGUsIHNjID8gc2MtPl9tb2R1bGUtPmltcG9ydGVkRnJvbSA6 IE5VTEwpOwogICByZXR1cm4gdHlwZS0+dnRpbmZvLT50eXBlOwpkaWZmIC0t Z2l0IGEvZ2NjL2QvZC1sYW5nLmNjIGIvZ2NjL2QvZC1sYW5nLmNjCmluZGV4 IGQ5NzUyNWE1OTBlLi42MmE4ZGRkNjliMiAxMDA2NDQKLS0tIGEvZ2NjL2Qv ZC1sYW5nLmNjCisrKyBiL2djYy9kL2QtbGFuZy5jYwpAQCAtMjc2LDYgKzI3 Niw5IEBAIGRfaW5pdF9vcHRpb25zICh1bnNpZ25lZCBpbnQsIGNsX2RlY29k ZWRfb3B0aW9uICpkZWNvZGVkX29wdGlvbnMpCiAgIGdsb2JhbC5wYXJhbXMu dXNlT3V0ID0gdHJ1ZTsKICAgZ2xvYmFsLnBhcmFtcy51c2VBcnJheUJvdW5k cyA9IEJPVU5EU0NIRUNLZGVmYXVsdDsKICAgZ2xvYmFsLnBhcmFtcy51c2VT d2l0Y2hFcnJvciA9IHRydWU7CisgIGdsb2JhbC5wYXJhbXMudXNlTW9kdWxl SW5mbyA9IHRydWU7CisgIGdsb2JhbC5wYXJhbXMudXNlVHlwZUluZm8gPSB0 cnVlOworICBnbG9iYWwucGFyYW1zLnVzZUV4Y2VwdGlvbnMgPSB0cnVlOwog ICBnbG9iYWwucGFyYW1zLnVzZUlubGluZSA9IGZhbHNlOwogICBnbG9iYWwu cGFyYW1zLm9iaiA9IHRydWU7CiAgIGdsb2JhbC5wYXJhbXMuaGRyU3RyaXBQ bGFpbkZ1bmN0aW9ucyA9IHRydWU7CkBAIC00NjcsMTAgKzQ3MCwxOCBAQCBk X2hhbmRsZV9vcHRpb24gKHNpemVfdCBzY29kZSwgY29uc3QgY2hhciAqYXJn LCBIT1NUX1dJREVfSU5UIHZhbHVlLAogICAgICAgZ2xvYmFsLnBhcmFtcy5k ZG9jZmlsZXMtPnB1c2ggKGFyZyk7CiAgICAgICBicmVhazsKIAorICAgIGNh c2UgT1BUX2ZkcnVudGltZToKKyAgICAgIGdsb2JhbC5wYXJhbXMuYmV0dGVy QyA9ICF2YWx1ZTsKKyAgICAgIGJyZWFrOworCiAgICAgY2FzZSBPUFRfZmR1 bXBfZF9vcmlnaW5hbDoKICAgICAgIGdsb2JhbC5wYXJhbXMudmNnX2FzdCA9 IHZhbHVlOwogICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIE9QVF9mZXhjZXB0 aW9uczoKKyAgICAgIGdsb2JhbC5wYXJhbXMudXNlRXhjZXB0aW9ucyA9IHZh bHVlOworICAgICAgYnJlYWs7CisKICAgICBjYXNlIE9QVF9maWdub3JlX3Vu a25vd25fcHJhZ21hczoKICAgICAgIGdsb2JhbC5wYXJhbXMuaWdub3JlVW5z dXBwb3J0ZWRQcmFnbWFzID0gdmFsdWU7CiAgICAgICBicmVhazsKQEAgLTQ5 MCw3ICs1MDEsNyBAQCBkX2hhbmRsZV9vcHRpb24gKHNpemVfdCBzY29kZSwg Y29uc3QgY2hhciAqYXJnLCBIT1NUX1dJREVfSU5UIHZhbHVlLAogICAgICAg YnJlYWs7CiAKICAgICBjYXNlIE9QVF9mbW9kdWxlaW5mbzoKLSAgICAgIGds b2JhbC5wYXJhbXMuYmV0dGVyQyA9ICF2YWx1ZTsKKyAgICAgIGdsb2JhbC5w YXJhbXMudXNlTW9kdWxlSW5mbyA9IHZhbHVlOwogICAgICAgYnJlYWs7CiAK ICAgICBjYXNlIE9QVF9mb25seV86CkBAIC01MDksNiArNTIwLDEwIEBAIGRf aGFuZGxlX29wdGlvbiAoc2l6ZV90IHNjb2RlLCBjb25zdCBjaGFyICphcmcs IEhPU1RfV0lERV9JTlQgdmFsdWUsCiAgICAgICBnbG9iYWwucGFyYW1zLnJl bGVhc2UgPSB2YWx1ZTsKICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBPUFRf ZnJ0dGk6CisgICAgICBnbG9iYWwucGFyYW1zLnVzZVR5cGVJbmZvID0gdmFs dWU7CisgICAgICBicmVhazsKKwogICAgIGNhc2UgT1BUX2Zzd2l0Y2hfZXJy b3JzOgogICAgICAgZ2xvYmFsLnBhcmFtcy51c2VTd2l0Y2hFcnJvciA9IHZh bHVlOwogICAgICAgYnJlYWs7CkBAIC03MjgsNiArNzQzLDIwIEBAIGRfcG9z dF9vcHRpb25zIChjb25zdCBjaGFyICoqIGZuKQogCWdsb2JhbC5wYXJhbXMu dXNlU3dpdGNoRXJyb3IgPSBmYWxzZTsKICAgICB9CiAKKyAgaWYgKGdsb2Jh bC5wYXJhbXMuYmV0dGVyQykKKyAgICB7CisgICAgICBpZiAoIWdsb2JhbF9v cHRpb25zX3NldC54X2ZsYWdfbW9kdWxlaW5mbykKKwlnbG9iYWwucGFyYW1z LnVzZU1vZHVsZUluZm8gPSBmYWxzZTsKKworICAgICAgaWYgKCFnbG9iYWxf b3B0aW9uc19zZXQueF9mbGFnX3J0dGkpCisJZ2xvYmFsLnBhcmFtcy51c2VU eXBlSW5mbyA9IGZhbHNlOworCisgICAgICBpZiAoIWdsb2JhbF9vcHRpb25z X3NldC54X2ZsYWdfZXhjZXB0aW9ucykKKwlnbG9iYWwucGFyYW1zLnVzZUV4 Y2VwdGlvbnMgPSBmYWxzZTsKKworICAgICAgZ2xvYmFsLnBhcmFtcy5jaGVj a0FjdGlvbiA9IENIRUNLQUNUSU9OX2hhbHQ7CisgICAgfQorCiAgIC8qIFR1 cm4gb2ZmIHBhcnRpdGlvbmluZyB1bmxlc3MgaXQgd2FzIGV4cGxpY2l0bHkg cmVxdWVzdGVkLCBhcyBpdCBkb2Vzbid0CiAgICAgIHdvcmsgd2l0aCBEIGV4 Y2VwdGlvbiBjaGFpbmluZywgd2hlcmUgRUggaGFuZGxlciB1c2VzIExTREEg dG8gZGV0ZXJtaW5lCiAgICAgIHdoZXRoZXIgdHdvIHRocm93biBleGNlcHRp b24gYXJlIGluIHRoZSBzYW1lIGNvbnRleHQuICAqLwpkaWZmIC0tZ2l0IGEv Z2NjL2QvZC1zcGVjLmNjIGIvZ2NjL2QvZC1zcGVjLmNjCmluZGV4IDNkNDkx ZjU2ZmE3Li45ZWJhNjkwMmJiOSAxMDA2NDQKLS0tIGEvZ2NjL2QvZC1zcGVj LmNjCisrKyBiL2djYy9kL2Qtc3BlYy5jYwpAQCAtMTQ0LDYgKzE0NCw3IEBA IGxhbmdfc3BlY2lmaWNfZHJpdmVyIChjbF9kZWNvZGVkX29wdGlvbiAqKmlu X2RlY29kZWRfb3B0aW9ucywKICAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkr KykKICAgICB7CiAgICAgICBjb25zdCBjaGFyICphcmcgPSBkZWNvZGVkX29w dGlvbnNbaV0uYXJnOworICAgICAgY29uc3QgaW50IHZhbHVlID0gZGVjb2Rl ZF9vcHRpb25zW2ldLnZhbHVlOwogCiAgICAgICBzd2l0Y2ggKGRlY29kZWRf b3B0aW9uc1tpXS5vcHRfaW5kZXgpCiAJewpAQCAtMTYxLDYgKzE2MiwxMSBA QCBsYW5nX3NwZWNpZmljX2RyaXZlciAoY2xfZGVjb2RlZF9vcHRpb24gKipp bl9kZWNvZGVkX29wdGlvbnMsCiAJICBhcmdzW2ldIHw9IFNLSVBPUFQ7CiAJ ICBicmVhazsKIAorCWNhc2UgT1BUX2ZkcnVudGltZToKKwkgIGlmICghdmFs dWUpCisJICAgIG5lZWRfcGhvYm9zID0gZmFsc2U7CisJICBicmVhazsKKwog CWNhc2UgT1BUX2RlZmF1bHRsaWJfOgogCSAgaWYgKGRlZmF1bHRsaWIgIT0g TlVMTCkKIAkgICAgZnJlZSAoQ09OU1RfQ0FTVCAoY2hhciAqLCBkZWZhdWx0 bGliKSk7CmRpZmYgLS1naXQgYS9nY2MvZC9kLXRyZWUuaCBiL2djYy9kL2Qt dHJlZS5oCmluZGV4IGNmZjgzMmNjNjQ1Li5hNTE0YmMzOTAyZiAxMDA2NDQK LS0tIGEvZ2NjL2QvZC10cmVlLmgKKysrIGIvZ2NjL2QvZC10cmVlLmgKQEAg LTY0NywxMSArNjQ3LDEyIEBAIGV4dGVybiB2b2lkIGRfZmluaXNoX2NvbXBp bGF0aW9uICh0cmVlICosIGludCk7CiBleHRlcm4gdHJlZSBidWlsZF9saWJj YWxsIChsaWJjYWxsX2ZuLCBUeXBlICosIGludCAuLi4pOwogCiAvKiBJbiB0 eXBlaW5mby5jYy4gICovCitleHRlcm4gYm9vbCBoYXZlX3R5cGVpbmZvX3Ag KENsYXNzRGVjbGFyYXRpb24gKik7CiBleHRlcm4gdHJlZSBsYXlvdXRfdHlw ZWluZm8gKFR5cGVJbmZvRGVjbGFyYXRpb24gKik7CiBleHRlcm4gdHJlZSBs YXlvdXRfY2xhc3NpbmZvIChDbGFzc0RlY2xhcmF0aW9uICopOwogZXh0ZXJu IHRyZWUgZ2V0X3R5cGVpbmZvX2RlY2wgKFR5cGVJbmZvRGVjbGFyYXRpb24g Kik7CiBleHRlcm4gdHJlZSBnZXRfY2xhc3NpbmZvX2RlY2wgKENsYXNzRGVj bGFyYXRpb24gKik7Ci1leHRlcm4gdHJlZSBidWlsZF90eXBlaW5mbyAoVHlw ZSAqKTsKK2V4dGVybiB0cmVlIGJ1aWxkX3R5cGVpbmZvIChjb25zdCBMb2Mg JiwgVHlwZSAqKTsKIGV4dGVybiB2b2lkIGNyZWF0ZV90eXBlaW5mbyAoVHlw ZSAqLCBNb2R1bGUgKik7CiBleHRlcm4gdm9pZCBjcmVhdGVfdGluZm9fdHlw ZXMgKE1vZHVsZSAqKTsKIGV4dGVybiB2b2lkIGxheW91dF9jcHBfdHlwZWlu Zm8gKENsYXNzRGVjbGFyYXRpb24gKik7CmRpZmYgLS1naXQgYS9nY2MvZC9k ZWNsLmNjIGIvZ2NjL2QvZGVjbC5jYwppbmRleCAyNmRlMjcyNDU1Yi4uNDk3 MjM2NDkyMzAgMTAwNjQ0Ci0tLSBhL2djYy9kL2RlY2wuY2MKKysrIGIvZ2Nj L2QvZGVjbC5jYwpAQCAtMzc5LDcgKzM3OSw4IEBAIHB1YmxpYzoKICAgICAg IHJldHVybjsKIAogICAgIC8qIEdlbmVyYXRlIFR5cGVJbmZvLiAgKi8KLSAg ICBjcmVhdGVfdHlwZWluZm8gKGQtPnR5cGUsIE5VTEwpOworICAgIGlmICho YXZlX3R5cGVpbmZvX3AgKFR5cGU6OmR0eXBlaW5mbykpCisgICAgICBjcmVh dGVfdHlwZWluZm8gKGQtPnR5cGUsIE5VTEwpOwogCiAgICAgLyogR2VuZXJh dGUgc3RhdGljIGluaXRpYWxpemVyLiAgKi8KICAgICBkLT5zaW5pdCA9IGFn Z3JlZ2F0ZV9pbml0aWFsaXplcl9kZWNsIChkKTsKQEAgLTUyMyw3ICs1MjQs OSBAQCBwdWJsaWM6CiAgICAgZF9maW5pc2hfZGVjbCAoZC0+c2luaXQpOwog CiAgICAgLyogUHV0IG91dCB0aGUgVHlwZUluZm8uICAqLwotICAgIGNyZWF0 ZV90eXBlaW5mbyAoZC0+dHlwZSwgTlVMTCk7CisgICAgaWYgKGhhdmVfdHlw ZWluZm9fcCAoVHlwZTo6ZHR5cGVpbmZvKSkKKyAgICAgIGNyZWF0ZV90eXBl aW5mbyAoZC0+dHlwZSwgTlVMTCk7CisKICAgICBERUNMX0lOSVRJQUwgKGQt PmNzeW0pID0gbGF5b3V0X2NsYXNzaW5mbyAoZCk7CiAgICAgZF9saW5rb25j ZV9saW5rYWdlIChkLT5jc3ltKTsKICAgICBkX2ZpbmlzaF9kZWNsIChkLT5j c3ltKTsKQEAgLTU4OCw4ICs1OTEsMTEgQEAgcHVibGljOgogICAgIGQtPmNz eW0gPSBnZXRfY2xhc3NpbmZvX2RlY2wgKGQpOwogCiAgICAgLyogUHV0IG91 dCB0aGUgVHlwZUluZm8uICAqLwotICAgIGNyZWF0ZV90eXBlaW5mbyAoZC0+ dHlwZSwgTlVMTCk7Ci0gICAgZC0+dHlwZS0+dnRpbmZvLT5hY2NlcHQgKHRo aXMpOworICAgIGlmIChoYXZlX3R5cGVpbmZvX3AgKFR5cGU6OmR0eXBlaW5m bykpCisgICAgICB7CisJY3JlYXRlX3R5cGVpbmZvIChkLT50eXBlLCBOVUxM KTsKKwlkLT50eXBlLT52dGluZm8tPmFjY2VwdCAodGhpcyk7CisgICAgICB9 CiAKICAgICBERUNMX0lOSVRJQUwgKGQtPmNzeW0pID0gbGF5b3V0X2NsYXNz aW5mbyAoZCk7CiAgICAgZF9saW5rb25jZV9saW5rYWdlIChkLT5jc3ltKTsK QEAgLTYyMiw3ICs2MjgsOCBAQCBwdWJsaWM6CiAgICAgICByZXR1cm47CiAK ICAgICAvKiBHZW5lcmF0ZSBUeXBlSW5mby4gICovCi0gICAgY3JlYXRlX3R5 cGVpbmZvIChkLT50eXBlLCBOVUxMKTsKKyAgICBpZiAoaGF2ZV90eXBlaW5m b19wIChUeXBlOjpkdHlwZWluZm8pKQorICAgICAgY3JlYXRlX3R5cGVpbmZv IChkLT50eXBlLCBOVUxMKTsKIAogICAgIFR5cGVFbnVtICp0YyA9IChUeXBl RW51bSAqKSBkLT50eXBlOwogICAgIGlmICh0Yy0+c3ltLT5tZW1iZXJzICYm ICFkLT50eXBlLT5pc1plcm9Jbml0ICgpKQpkaWZmIC0tZ2l0IGEvZ2NjL2Qv ZG1kL01FUkdFIGIvZ2NjL2QvZG1kL01FUkdFCmluZGV4IGMzNjBmZTVjMmVk Li43NDI0NTc2NTEyYiAxMDA2NDQKLS0tIGEvZ2NjL2QvZG1kL01FUkdFCisr KyBiL2djYy9kL2RtZC9NRVJHRQpAQCAtMSw0ICsxLDQgQEAKLTA2NWZiZDQ1 MmYyYWE0OThmYzNhNTU0YmU0OGE1NDk1YmQ5OGFhMTQKKzNiM2RjYThiZTIw MWI0NDNmMTc2MjFjZDI5Y2Y2MTQwMDdiNWM3NWUKIAogVGhlIGZpcnN0IGxp bmUgb2YgdGhpcyBmaWxlIGhvbGRzIHRoZSBnaXQgcmV2aXNpb24gbnVtYmVy IG9mIHRoZSBsYXN0CiBtZXJnZSBkb25lIGZyb20gdGhlIGRsYW5nL2RtZCBy ZXBvc2l0b3J5LgpkaWZmIC0tZ2l0IGEvZ2NjL2QvZG1kL2Nsb25lLmMgYi9n Y2MvZC9kbWQvY2xvbmUuYwppbmRleCA4ODhjYmE1ZGI3Zi4uZDlhOTA1NWNi OTkgMTAwNjQ0Ci0tLSBhL2djYy9kL2RtZC9jbG9uZS5jCisrKyBiL2djYy9k L2RtZC9jbG9uZS5jCkBAIC04MzksNyArODM5LDcgQEAgRnVuY0RlY2xhcmF0 aW9uICpidWlsZFBvc3RCbGl0KFN0cnVjdERlY2xhcmF0aW9uICpzZCwgU2Nv cGUgKnNjKQogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewot ICAgICAgICAgICAgLy8gX0FycmF5UG9zdGJsaXQoKGNhc3QoUyopdGhpcy52 LnB0cilbMCAuLiBuXSkKKyAgICAgICAgICAgIC8vIF9fQXJyYXlQb3N0Ymxp dCgoY2FzdChTKil0aGlzLnYucHRyKVswIC4uIG5dKQogCiAgICAgICAgICAg ICB1aW50ZWdlcl90IG4gPSAxOwogICAgICAgICAgICAgd2hpbGUgKHR2LT50 eSA9PSBUc2FycmF5KQpAQCAtODY1LDcgKzg2NSw3IEBAIEZ1bmNEZWNsYXJh dGlvbiAqYnVpbGRQb3N0QmxpdChTdHJ1Y3REZWNsYXJhdGlvbiAqc2QsIFNj b3BlICpzYykKICAgICAgICAgICAgICgoU2xpY2VFeHAgKilleCktPnVwcGVy SXNJbkJvdW5kcyA9IHRydWU7CiAgICAgICAgICAgICAoKFNsaWNlRXhwICop ZXgpLT5sb3dlcklzTGVzc1RoYW5VcHBlciA9IHRydWU7CiAKLSAgICAgICAg ICAgIGV4ID0gbmV3IENhbGxFeHAobG9jLCBuZXcgSWRlbnRpZmllckV4cChs b2MsIElkOjpfQXJyYXlQb3N0YmxpdCksIGV4KTsKKyAgICAgICAgICAgIGV4 ID0gbmV3IENhbGxFeHAobG9jLCBuZXcgSWRlbnRpZmllckV4cChsb2MsIElk OjpfX0FycmF5UG9zdGJsaXQpLCBleCk7CiAgICAgICAgIH0KICAgICAgICAg YS0+cHVzaChuZXcgRXhwU3RhdGVtZW50KGxvYywgZXgpKTsgLy8gY29tYmlu ZSBpbiBmb3J3YXJkIG9yZGVyCiAKQEAgLTg5Niw3ICs4OTYsNyBAQCBGdW5j RGVjbGFyYXRpb24gKmJ1aWxkUG9zdEJsaXQoU3RydWN0RGVjbGFyYXRpb24g KnNkLCBTY29wZSAqc2MpCiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAg ICAgICB7Ci0gICAgICAgICAgICAvLyBfQXJyYXlEdG9yKChjYXN0KFMqKXRo aXMudi5wdHIpWzAgLi4gbl0pCisgICAgICAgICAgICAvLyBfX0FycmF5RHRv cigoY2FzdChTKil0aGlzLnYucHRyKVswIC4uIG5dKQogCiAgICAgICAgICAg ICB1aW50ZWdlcl90IG4gPSAxOwogICAgICAgICAgICAgd2hpbGUgKHR2LT50 eSA9PSBUc2FycmF5KQpAQCAtOTIyLDcgKzkyMiw3IEBAIEZ1bmNEZWNsYXJh dGlvbiAqYnVpbGRQb3N0QmxpdChTdHJ1Y3REZWNsYXJhdGlvbiAqc2QsIFNj b3BlICpzYykKICAgICAgICAgICAgICgoU2xpY2VFeHAgKilleCktPnVwcGVy SXNJbkJvdW5kcyA9IHRydWU7CiAgICAgICAgICAgICAoKFNsaWNlRXhwICop ZXgpLT5sb3dlcklzTGVzc1RoYW5VcHBlciA9IHRydWU7CiAKLSAgICAgICAg ICAgIGV4ID0gbmV3IENhbGxFeHAobG9jLCBuZXcgSWRlbnRpZmllckV4cChs b2MsIElkOjpfQXJyYXlEdG9yKSwgZXgpOworICAgICAgICAgICAgZXggPSBu ZXcgQ2FsbEV4cChsb2MsIG5ldyBJZGVudGlmaWVyRXhwKGxvYywgSWQ6Ol9f QXJyYXlEdG9yKSwgZXgpOwogICAgICAgICB9CiAgICAgICAgIGEtPnB1c2go bmV3IE9uU2NvcGVTdGF0ZW1lbnQobG9jLCBUT0tvbl9zY29wZV9mYWlsdXJl LCBuZXcgRXhwU3RhdGVtZW50KGxvYywgZXgpKSk7CiAgICAgfQpAQCAtMTA0 Nyw3ICsxMDQ3LDcgQEAgRnVuY0RlY2xhcmF0aW9uICpidWlsZER0b3IoQWdn cmVnYXRlRGVjbGFyYXRpb24gKmFkLCBTY29wZSAqc2MpCiAgICAgICAgIH0K ICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyBfQXJy YXlEdG9yKChjYXN0KFMqKXRoaXMudi5wdHIpWzAgLi4gbl0pCisgICAgICAg ICAgICAvLyBfX0FycmF5RHRvcigoY2FzdChTKil0aGlzLnYucHRyKVswIC4u IG5dKQogCiAgICAgICAgICAgICB1aW50ZWdlcl90IG4gPSAxOwogICAgICAg ICAgICAgd2hpbGUgKHR2LT50eSA9PSBUc2FycmF5KQpAQCAtMTA3Myw3ICsx MDczLDcgQEAgRnVuY0RlY2xhcmF0aW9uICpidWlsZER0b3IoQWdncmVnYXRl RGVjbGFyYXRpb24gKmFkLCBTY29wZSAqc2MpCiAgICAgICAgICAgICAoKFNs aWNlRXhwICopZXgpLT51cHBlcklzSW5Cb3VuZHMgPSB0cnVlOwogICAgICAg ICAgICAgKChTbGljZUV4cCAqKWV4KS0+bG93ZXJJc0xlc3NUaGFuVXBwZXIg PSB0cnVlOwogCi0gICAgICAgICAgICBleCA9IG5ldyBDYWxsRXhwKGxvYywg bmV3IElkZW50aWZpZXJFeHAobG9jLCBJZDo6X0FycmF5RHRvciksIGV4KTsK KyAgICAgICAgICAgIGV4ID0gbmV3IENhbGxFeHAobG9jLCBuZXcgSWRlbnRp ZmllckV4cChsb2MsIElkOjpfX0FycmF5RHRvciksIGV4KTsKICAgICAgICAg fQogICAgICAgICBlID0gRXhwcmVzc2lvbjo6Y29tYmluZShleCwgZSk7IC8v IGNvbWJpbmUgaW4gcmV2ZXJzZSBvcmRlcgogICAgIH0KZGlmZiAtLWdpdCBh L2djYy9kL2RtZC9kY2FzdC5jIGIvZ2NjL2QvZG1kL2RjYXN0LmMKaW5kZXgg MmZhNzYyY2I1MjkuLmEzZGY3MDFjMzQxIDEwMDY0NAotLS0gYS9nY2MvZC9k bWQvZGNhc3QuYworKysgYi9nY2MvZC9kbWQvZGNhc3QuYwpAQCAtMTMxLDcg KzEzMSw3IEBAIEV4cHJlc3Npb24gKmltcGxpY2l0Q2FzdFRvKEV4cHJlc3Np b24gKmUsIFNjb3BlICpzYywgVHlwZSAqdCkKICAgICAgICAgICAgIHZpc2l0 KChFeHByZXNzaW9uICopZSk7CiAKICAgICAgICAgICAgIFR5cGUgKnRiID0g cmVzdWx0LT50eXBlLT50b0Jhc2V0eXBlKCk7Ci0gICAgICAgICAgICBpZiAo dGItPnR5ID09IFRhcnJheSkKKyAgICAgICAgICAgIGlmICh0Yi0+dHkgPT0g VGFycmF5ICYmIGdsb2JhbC5wYXJhbXMudXNlVHlwZUluZm8gJiYgVHlwZTo6 ZHR5cGVpbmZvKQogICAgICAgICAgICAgICAgIHNlbWFudGljVHlwZUluZm8o c2MsICgoVHlwZURBcnJheSAqKXRiKS0+bmV4dCk7CiAgICAgICAgIH0KIApk aWZmIC0tZ2l0IGEvZ2NjL2QvZG1kL2RlY2xhcmF0aW9uLmMgYi9nY2MvZC9k bWQvZGVjbGFyYXRpb24uYwppbmRleCA4MzVjNmFlZjgzMS4uZDA5MTFlMjE4 NTggMTAwNjQ0Ci0tLSBhL2djYy9kL2RtZC9kZWNsYXJhdGlvbi5jCisrKyBi L2djYy9kL2RtZC9kZWNsYXJhdGlvbi5jCkBAIC0yMTE4LDcgKzIxMTgsNyBA QCBFeHByZXNzaW9uICpWYXJEZWNsYXJhdGlvbjo6Y2FsbFNjb3BlRHRvcihT Y29wZSAqKQogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewot ICAgICAgICAgICAgLy8gX0FycmF5RHRvcih2WzAgLi4gbl0pCisgICAgICAg ICAgICAvLyBfX0FycmF5RHRvcih2WzAgLi4gbl0pCiAgICAgICAgICAgICBl ID0gbmV3IFZhckV4cChsb2MsIHRoaXMpOwogCiAgICAgICAgICAgICBjb25z dCBkX3VuczY0IHNkc3ogPSBzZC0+dHlwZS0+c2l6ZSgpOwpAQCAtMjEzMyw3 ICsyMTMzLDcgQEAgRXhwcmVzc2lvbiAqVmFyRGVjbGFyYXRpb246OmNhbGxT Y29wZUR0b3IoU2NvcGUgKikKICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBo YWNrIHNvIHdlIGNhbiBjYWxsIGRlc3RydWN0b3JzIG9uIGNvbnN0L2ltbXV0 YWJsZSBvYmplY3RzLgogICAgICAgICAgICAgZS0+dHlwZSA9IHNkLT50eXBl LT5hcnJheU9mKCk7CiAKLSAgICAgICAgICAgIGUgPSBuZXcgQ2FsbEV4cChs b2MsIG5ldyBJZGVudGlmaWVyRXhwKGxvYywgSWQ6Ol9BcnJheUR0b3IpLCBl KTsKKyAgICAgICAgICAgIGUgPSBuZXcgQ2FsbEV4cChsb2MsIG5ldyBJZGVu dGlmaWVyRXhwKGxvYywgSWQ6Ol9fQXJyYXlEdG9yKSwgZSk7CiAgICAgICAg IH0KICAgICAgICAgcmV0dXJuIGU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ2Nj L2QvZG1kL2RpbnRlcnByZXQuYyBiL2djYy9kL2RtZC9kaW50ZXJwcmV0LmMK aW5kZXggNDBmM2U3N2NiYzUuLmFjY2E0ZTgwOTdkIDEwMDY0NAotLS0gYS9n Y2MvZC9kbWQvZGludGVycHJldC5jCisrKyBiL2djYy9kL2RtZC9kaW50ZXJw cmV0LmMKQEAgLTQ2MzMsOCArNDYzMyw4IEBAIHB1YmxpYzoKICAgICAgICAg ICAgIGZkID0gKChWYXJFeHAgKillY2FsbCktPnZhci0+aXNGdW5jRGVjbGFy YXRpb24oKTsKICAgICAgICAgICAgIGFzc2VydChmZCk7CiAKLSAgICAgICAg ICAgIGlmIChmZC0+aWRlbnQgPT0gSWQ6Ol9BcnJheVBvc3RibGl0IHx8Ci0g ICAgICAgICAgICAgICAgZmQtPmlkZW50ID09IElkOjpfQXJyYXlEdG9yKQor ICAgICAgICAgICAgaWYgKGZkLT5pZGVudCA9PSBJZDo6X19BcnJheVBvc3Ri bGl0IHx8CisgICAgICAgICAgICAgICAgZmQtPmlkZW50ID09IElkOjpfX0Fy cmF5RHRvcikKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBhc3Nl cnQoZS0+YXJndW1lbnRzLT5kaW0gPT0gMSk7CiAgICAgICAgICAgICAgICAg RXhwcmVzc2lvbiAqZWEgPSAoKmUtPmFyZ3VtZW50cylbMF07CkBAIC00NjU0 LDcgKzQ2NTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKENU RkVFeHA6OmlzQ2FudEV4cChyZXN1bHQpKQogICAgICAgICAgICAgICAgICAg ICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICBpZiAoZmQtPmlkZW50ID09 IElkOjpfQXJyYXlQb3N0YmxpdCkKKyAgICAgICAgICAgICAgICBpZiAoZmQt PmlkZW50ID09IElkOjpfX0FycmF5UG9zdGJsaXQpCiAgICAgICAgICAgICAg ICAgICAgIHJlc3VsdCA9IGV2YWx1YXRlUG9zdGJsaXQoaXN0YXRlLCByZXN1 bHQpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg ICAgcmVzdWx0ID0gZXZhbHVhdGVEdG9yKGlzdGF0ZSwgcmVzdWx0KTsKZGlm ZiAtLWdpdCBhL2djYy9kL2RtZC9kbW9kdWxlLmMgYi9nY2MvZC9kbWQvZG1v ZHVsZS5jCmluZGV4IDA3ZTQ3MTI3MTMwLi4xZjZmZDlmMTBhNiAxMDA2NDQK LS0tIGEvZ2NjL2QvZG1kL2Rtb2R1bGUuYworKysgYi9nY2MvZC9kbWQvZG1v ZHVsZS5jCkBAIC01NzUsNjkgKzU3NSw2IEBAIE1vZHVsZSAqTW9kdWxlOjpw YXJzZSgpCiAgICAgICAgICAgICBlcnJvcigiaGFzIG5vbi1pZGVudGlmaWVy IGNoYXJhY3RlcnMgaW4gZmlsZW5hbWUsIHVzZSBtb2R1bGUgZGVjbGFyYXRp b24gaW5zdGVhZCIpOwogICAgIH0KIAotICAgIC8vIEFkZCBpbnRlcm5hbCB1 c2VkIGZ1bmN0aW9ucyBpbiAnb2JqZWN0JyBtb2R1bGUgbWVtYmVycy4KLSAg ICBpZiAoIXBhcmVudCAmJiBpZGVudCA9PSBJZDo6b2JqZWN0KQotICAgIHsK LSAgICAgICAgc3RhdGljIGNvbnN0IHV0ZjhfdCBjb2RlX0FycmF5RXFbXSA9 Ci0gICAgICAgICAgICAiYm9vbCBfQXJyYXlFcShUMSwgVDIpKFQxW10gYSwg VDJbXSBiKSB7XG4iCi0gICAgICAgICAgICAiIGlmIChhLmxlbmd0aCAhPSBi Lmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuIgotICAgICAgICAgICAgIiBmb3Jl YWNoIChzaXplX3QgaTsgMCAuLiBhLmxlbmd0aCkgeyBpZiAoYVtpXSAhPSBi W2ldKSByZXR1cm4gZmFsc2U7IH1cbiIKLSAgICAgICAgICAgICIgcmV0dXJu IHRydWU7IH1cbiI7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IHV0ZjhfdCBj b2RlX0FycmF5UG9zdGJsaXRbXSA9Ci0gICAgICAgICAgICAidm9pZCBfQXJy YXlQb3N0YmxpdChUKShUW10gYSkgeyBmb3JlYWNoIChyZWYgVCBlOyBhKSBl Ll9feHBvc3RibGl0KCk7IH1cbiI7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0 IHV0ZjhfdCBjb2RlX0FycmF5RHRvcltdID0KLSAgICAgICAgICAgICJ2b2lk IF9BcnJheUR0b3IoVCkoVFtdIGEpIHsgZm9yZWFjaF9yZXZlcnNlIChyZWYg VCBlOyBhKSBlLl9feGR0b3IoKTsgfVxuIjsKLQotICAgICAgICBzdGF0aWMg Y29uc3QgdXRmOF90IGNvZGVfeG9wRXF1YWxzW10gPQotICAgICAgICAgICAg ImJvb2wgX3hvcEVxdWFscyhpbiB2b2lkKiwgaW4gdm9pZCopIHsgdGhyb3cg bmV3IEVycm9yKFwiVHlwZUluZm8uZXF1YWxzIGlzIG5vdCBpbXBsZW1lbnRl ZFwiKTsgfVxuIjsKLQotICAgICAgICBzdGF0aWMgY29uc3QgdXRmOF90IGNv ZGVfeG9wQ21wW10gPQotICAgICAgICAgICAgImJvb2wgX3hvcENtcChpbiB2 b2lkKiwgaW4gdm9pZCopIHsgdGhyb3cgbmV3IEVycm9yKFwiVHlwZUluZm8u Y29tcGFyZSBpcyBub3QgaW1wbGVtZW50ZWRcIik7IH1cbiI7Ci0KLSAgICAg ICAgSWRlbnRpZmllciAqYXJyZXEgPSBJZDo6X0FycmF5RXE7Ci0gICAgICAg IElkZW50aWZpZXIgKnhvcGVxID0gSWRlbnRpZmllcjo6aWRQb29sKCJfeG9w RXF1YWxzIik7Ci0gICAgICAgIElkZW50aWZpZXIgKnhvcGNtcCA9IElkZW50 aWZpZXI6OmlkUG9vbCgiX3hvcENtcCIpOwotICAgICAgICBmb3IgKHNpemVf dCBpID0gMDsgaSA8IG1lbWJlcnMtPmRpbTsgaSsrKQotICAgICAgICB7Ci0g ICAgICAgICAgICBEc3ltYm9sICpzeCA9ICgqbWVtYmVycylbaV07Ci0gICAg ICAgICAgICBpZiAoIXN4KSBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChh cnJlcSAmJiBzeC0+aWRlbnQgPT0gYXJyZXEpIGFycmVxID0gTlVMTDsKLSAg ICAgICAgICAgIGlmICh4b3BlcSAmJiBzeC0+aWRlbnQgPT0geG9wZXEpIHhv cGVxID0gTlVMTDsKLSAgICAgICAgICAgIGlmICh4b3BjbXAgJiYgc3gtPmlk ZW50ID09IHhvcGNtcCkgeG9wY21wID0gTlVMTDsKLSAgICAgICAgfQotCi0g ICAgICAgIGlmIChhcnJlcSkKLSAgICAgICAgewotICAgICAgICAgICAgUGFy c2VyIHAobG9jLCB0aGlzLCBjb2RlX0FycmF5RXEsIHN0cmxlbigoY29uc3Qg Y2hhciAqKWNvZGVfQXJyYXlFcSksIDApOwotICAgICAgICAgICAgcC5uZXh0 VG9rZW4oKTsKLSAgICAgICAgICAgIG1lbWJlcnMtPmFwcGVuZChwLnBhcnNl RGVjbERlZnMoMCkpOwotICAgICAgICB9Ci0gICAgICAgIHsKLSAgICAgICAg ICAgIFBhcnNlciBwKGxvYywgdGhpcywgY29kZV9BcnJheVBvc3RibGl0LCBz dHJsZW4oKGNvbnN0IGNoYXIgKiljb2RlX0FycmF5UG9zdGJsaXQpLCAwKTsK LSAgICAgICAgICAgIHAubmV4dFRva2VuKCk7Ci0gICAgICAgICAgICBtZW1i ZXJzLT5hcHBlbmQocC5wYXJzZURlY2xEZWZzKDApKTsKLSAgICAgICAgfQot ICAgICAgICB7Ci0gICAgICAgICAgICBQYXJzZXIgcChsb2MsIHRoaXMsIGNv ZGVfQXJyYXlEdG9yLCBzdHJsZW4oKGNvbnN0IGNoYXIgKiljb2RlX0FycmF5 RHRvciksIDApOwotICAgICAgICAgICAgcC5uZXh0VG9rZW4oKTsKLSAgICAg ICAgICAgIG1lbWJlcnMtPmFwcGVuZChwLnBhcnNlRGVjbERlZnMoMCkpOwot ICAgICAgICB9Ci0gICAgICAgIGlmICh4b3BlcSkKLSAgICAgICAgewotICAg ICAgICAgICAgUGFyc2VyIHAobG9jLCB0aGlzLCBjb2RlX3hvcEVxdWFscywg c3RybGVuKChjb25zdCBjaGFyICopY29kZV94b3BFcXVhbHMpLCAwKTsKLSAg ICAgICAgICAgIHAubmV4dFRva2VuKCk7Ci0gICAgICAgICAgICBtZW1iZXJz LT5hcHBlbmQocC5wYXJzZURlY2xEZWZzKDApKTsKLSAgICAgICAgfQotICAg ICAgICBpZiAoeG9wY21wKQotICAgICAgICB7Ci0gICAgICAgICAgICBQYXJz ZXIgcChsb2MsIHRoaXMsIGNvZGVfeG9wQ21wLCBzdHJsZW4oKGNvbnN0IGNo YXIgKiljb2RlX3hvcENtcCksIDApOwotICAgICAgICAgICAgcC5uZXh0VG9r ZW4oKTsKLSAgICAgICAgICAgIG1lbWJlcnMtPmFwcGVuZChwLnBhcnNlRGVj bERlZnMoMCkpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gSW5zZXJ0 IG1vZHVsZSBpbnRvIHRoZSBzeW1ib2wgdGFibGUKICAgICBEc3ltYm9sICpz ID0gdGhpczsKICAgICBpZiAoaXNQYWNrYWdlRmlsZSkKZGlmZiAtLWdpdCBh L2djYy9kL2RtZC9kc3RydWN0LmMgYi9nY2MvZC9kbWQvZHN0cnVjdC5jCmlu ZGV4IGQzNWIwMDVhNDdkLi4xMzM4ZTFmNjliMCAxMDA2NDQKLS0tIGEvZ2Nj L2QvZG1kL2RzdHJ1Y3QuYworKysgYi9nY2MvZC9kbWQvZHN0cnVjdC5jCkBA IC0yMyw3ICsyMyw3IEBACiAjaW5jbHVkZSAidGVtcGxhdGUuaCIKICNpbmNs dWRlICJ0b2tlbnMuaCIKIAotVHlwZSAqZ2V0VHlwZUluZm9UeXBlKFR5cGUg KnQsIFNjb3BlICpzYyk7CitUeXBlICpnZXRUeXBlSW5mb1R5cGUoTG9jIGxv YywgVHlwZSAqdCwgU2NvcGUgKnNjKTsKIFR5cGVUdXBsZSAqdG9BcmdUeXBl cyhUeXBlICp0KTsKIHZvaWQgdW5TcGVjdWxhdGl2ZShTY29wZSAqc2MsIFJv b3RPYmplY3QgKm8pOwogYm9vbCBNT0RpbXBsaWNpdENvbnYoTU9EIG1vZGZy b20sIE1PRCBtb2R0byk7CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBzZW1h bnRpY1R5cGVJbmZvKFNjb3BlICpzYywgVHlwZSAqdCkKICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICBTY29wZSBzY3g7CiAgICAgICAgICAgICAg ICAgc2N4Ll9tb2R1bGUgPSBzZC0+Z2V0TW9kdWxlKCk7Ci0gICAgICAgICAg ICAgICAgZ2V0VHlwZUluZm9UeXBlKHQsICZzY3gpOworICAgICAgICAgICAg ICAgIGdldFR5cGVJbmZvVHlwZShzZC0+bG9jLCB0LCAmc2N4KTsKICAgICAg ICAgICAgICAgICBzZC0+cmVxdWVzdFR5cGVJbmZvID0gdHJ1ZTsKICAgICAg ICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKCFzYy0+bWluc3QpCkBA IC0xMTEsNyArMTExLDcgQEAgdm9pZCBzZW1hbnRpY1R5cGVJbmZvKFNjb3Bl ICpzYywgVHlwZSAqdCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVs c2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnZXRUeXBlSW5m b1R5cGUodCwgc2MpOworICAgICAgICAgICAgICAgIGdldFR5cGVJbmZvVHlw ZShzZC0+bG9jLCB0LCBzYyk7CiAgICAgICAgICAgICAgICAgc2QtPnJlcXVl c3RUeXBlSW5mbyA9IHRydWU7CiAKICAgICAgICAgICAgICAgICAvLyBCdWd6 aWxsYSAxNTE0OSwgaWYgdGhlIHR5cGVpZCBvcGVyYW5kIHR5cGUgY29tZXMg ZnJvbSBhCkBAIC0xMTY1LDkgKzExNjUsMTIgQEAgdm9pZCBTdHJ1Y3REZWNs YXJhdGlvbjo6c2VtYW50aWMoU2NvcGUgKnNjKQogICAgIGJ1aWxkT3BBc3Np Z24odGhpcywgc2MyKTsKICAgICBidWlsZE9wRXF1YWxzKHRoaXMsIHNjMik7 CiAKLSAgICB4ZXEgPSBidWlsZFhvcEVxdWFscyh0aGlzLCBzYzIpOwotICAg IHhjbXAgPSBidWlsZFhvcENtcCh0aGlzLCBzYzIpOwotICAgIHhoYXNoID0g YnVpbGRYdG9IYXNoKHRoaXMsIHNjMik7CisgICAgaWYgKGdsb2JhbC5wYXJh bXMudXNlVHlwZUluZm8gJiYgVHlwZTo6ZHR5cGVpbmZvKSAgLy8gdGhlc2Ug ZnVuY3Rpb25zIGFyZSB1c2VkIGZvciBUeXBlSW5mbworICAgIHsKKyAgICAg ICAgeGVxID0gYnVpbGRYb3BFcXVhbHModGhpcywgc2MyKTsKKyAgICAgICAg eGNtcCA9IGJ1aWxkWG9wQ21wKHRoaXMsIHNjMik7CisgICAgICAgIHhoYXNo ID0gYnVpbGRYdG9IYXNoKHRoaXMsIHNjMik7CisgICAgfQogCiAgICAgaW52 ID0gYnVpbGRJbnYodGhpcywgc2MyKTsKIApkaWZmIC0tZ2l0IGEvZ2NjL2Qv ZG1kL2V4cHJlc3Npb25zZW0uYyBiL2djYy9kL2RtZC9leHByZXNzaW9uc2Vt LmMKaW5kZXggYTg4ZmY4ODIyYWMuLjE5YjdjY2I3MjM2IDEwMDY0NAotLS0g YS9nY2MvZC9kbWQvZXhwcmVzc2lvbnNlbS5jCisrKyBiL2djYy9kL2RtZC9l eHByZXNzaW9uc2VtLmMKQEAgLTQ2LDcgKzQ2LDcgQEAgYm9vbCBjaGVja0Zy YW1lQWNjZXNzKExvYyBsb2MsIFNjb3BlICpzYywgQWdncmVnYXRlRGVjbGFy YXRpb24gKmFkLCBzaXplX3QgaXN0YXIKIGJvb2wgc3ltYm9sSXNWaXNpYmxl KE1vZHVsZSAqbW9kLCBEc3ltYm9sICpzKTsKIFZhckRlY2xhcmF0aW9uICpj b3B5VG9UZW1wKFN0b3JhZ2VDbGFzcyBzdGMsIGNvbnN0IGNoYXIgKm5hbWUs IEV4cHJlc3Npb24gKmUpOwogRXhwcmVzc2lvbiAqZXh0cmFjdFNpZGVFZmZl Y3QoU2NvcGUgKnNjLCBjb25zdCBjaGFyICpuYW1lLCBFeHByZXNzaW9uICoq ZTAsIEV4cHJlc3Npb24gKmUsIGJvb2wgYWx3YXlzQ29weSA9IGZhbHNlKTsK LVR5cGUgKmdldFR5cGVJbmZvVHlwZShUeXBlICp0LCBTY29wZSAqc2MpOwor VHlwZSAqZ2V0VHlwZUluZm9UeXBlKExvYyBsb2MsIFR5cGUgKnQsIFNjb3Bl ICpzYyk7CiBib29sIE1PRGltcGxpY2l0Q29udihNT0QgbW9kZnJvbSwgTU9E IG1vZHRvKTsKIE1BVENIIE1PRG1ldGhvZENvbnYoTU9EIG1vZGZyb20sIE1P RCBtb2R0byk7CiB2b2lkIE1PRE1hdGNoVG9CdWZmZXIoT3V0QnVmZmVyICpi dWYsIHVuc2lnbmVkIGNoYXIgbGhzTW9kLCB1bnNpZ25lZCBjaGFyIHJoc01v ZCk7CkBAIC03MTMsNyArNzEzLDggQEAgcHVibGljOgogICAgICAgICAgICAg cmV0dXJuIHNldEVycm9yKCk7CiAgICAgICAgIH0KIAotICAgICAgICBzZW1h bnRpY1R5cGVJbmZvKHNjLCBlLT50eXBlKTsKKyAgICAgICAgaWYgKGdsb2Jh bC5wYXJhbXMudXNlVHlwZUluZm8gJiYgVHlwZTo6ZHR5cGVpbmZvKQorICAg ICAgICAgICAgc2VtYW50aWNUeXBlSW5mbyhzYywgZS0+dHlwZSk7CiAKICAg ICAgICAgcmVzdWx0ID0gZTsKICAgICB9CkBAIC0xODE5LDcgKzE4MjAsNyBA QCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIEhhbmRsZSB0 aGlzIGluIHRoZSBnbHVlIGxheWVyCiAgICAgICAgICAgICBlID0gbmV3IFR5 cGVpZEV4cChleHAtPmxvYywgdGEpOwotICAgICAgICAgICAgZS0+dHlwZSA9 IGdldFR5cGVJbmZvVHlwZSh0YSwgc2MpOworICAgICAgICAgICAgZS0+dHlw ZSA9IGdldFR5cGVJbmZvVHlwZShleHAtPmxvYywgdGEsIHNjKTsKIAogICAg ICAgICAgICAgc2VtYW50aWNUeXBlSW5mbyhzYywgdGEpOwogCmRpZmYgLS1n aXQgYS9nY2MvZC9kbWQvZnVuYy5jIGIvZ2NjL2QvZG1kL2Z1bmMuYwppbmRl eCBhZmJhODJhYWM3ZC4uNTY4ZGVjYzhjZWUgMTAwNjQ0Ci0tLSBhL2djYy9k L2RtZC9mdW5jLmMKKysrIGIvZ2NjL2QvZG1kL2Z1bmMuYwpAQCAtMjQ2LDYg KzI0NiwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzLT5maW5hbGJvZHkg JiYgKGRlcyA9IHMtPmZpbmFsYm9keS0+aXNEdG9yRXhwU3RhdGVtZW50KCkp ICE9IE5VTEwgJiYKICAgICAgICAgICAgIGZkLT5ucnZvX3ZhciA9PSBkZXMt PnZhcikKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCEoZ2xvYmFsLnBh cmFtcy51c2VFeGNlcHRpb25zICYmIENsYXNzRGVjbGFyYXRpb246OnRocm93 YWJsZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLyogRG9u J3QgbmVlZCB0byBjYWxsIGRlc3RydWN0b3IgYXQgYWxsLCBzaW5jZSBpdCBp cyBucnZvCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAg cmVwbGFjZUN1cnJlbnQocy0+X2JvZHkpOworICAgICAgICAgICAgICAgIHMt Pl9ib2R5LT5hY2NlcHQodGhpcyk7CisgICAgICAgICAgICAgICAgcmV0dXJu OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvKiBOb3JtYWxseSBs b2NhbCB2YXJpYWJsZSBkdG9ycyBhcmUgY2FsbGVkIHJlZ2FyZGxlc3MgZXhj ZXB0aW9ucy4KICAgICAgICAgICAgICAqIEJ1dCBmb3IgbnJ2b192YXIsIGl0 cyBkdG9yIHNob3VsZCBiZSBjYWxsZWQgb25seSB3aGVuIGV4Y2VwdGlvbiBp cyB0aHJvd24uCiAgICAgICAgICAgICAgKgpAQCAtMTMyNSw2ICsxMzM0LDE2 IEBAIHN0YXRpYyB2b2lkIGJ1aWxkRW5zdXJlUmVxdWlyZShGdW5jRGVjbGFy YXRpb24gKmZkeCkKICAgICB9CiB9CiAKKy8qIERldGVybWluZSBpZiBmdW5j dGlvbiBzaG91bGQgYWRkIGByZXR1cm4gMDtgCisgKi8KK3N0YXRpYyBib29s IGFkZFJldHVybjAoRnVuY0RlY2xhcmF0aW9uICpmdW5jZGVjbCkKK3sKKyAg ICBUeXBlRnVuY3Rpb24gKmYgPSAoVHlwZUZ1bmN0aW9uICopZnVuY2RlY2wt PnR5cGU7CisKKyAgICByZXR1cm4gZi0+bmV4dC0+dHkgPT0gVHZvaWQgJiYK KyAgICAgICAgKGZ1bmNkZWNsLT5pc01haW4oKSB8fCAoZ2xvYmFsLnBhcmFt cy5iZXR0ZXJDICYmIGZ1bmNkZWNsLT5pc0NNYWluKCkpKTsKK30KKwogLy8g RG8gdGhlIHNlbWFudGljIGFuYWx5c2lzIG9uIHRoZSBpbnRlcm5hbHMgb2Yg dGhlIGZ1bmN0aW9uLgogCiB2b2lkIEZ1bmNEZWNsYXJhdGlvbjo6c2VtYW50 aWMzKFNjb3BlICpzYykKQEAgLTE3MDgsNyArMTcyNywxMCBAQCB2b2lkIEZ1 bmNEZWNsYXJhdGlvbjo6c2VtYW50aWMzKFNjb3BlICpzYykKICAgICAgICAg ICAgICAgICAgICAgRXhwcmVzc2lvbiAqZXhwID0gKCpyZXR1cm5zKVtpXS0+ ZXhwOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXhwLT5vcCA9PSBUT0t2 YXIgJiYgKChWYXJFeHAgKilleHApLT52YXIgPT0gdnJlc3VsdCkKICAgICAg ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgZXhw LT50eXBlID0gZi0+bmV4dDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm IChhZGRSZXR1cm4wKHRoaXMpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGV4cC0+dHlwZSA9IFR5cGU6OnRpbnQzMjsKKyAgICAgICAgICAgICAg ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl eHAtPnR5cGUgPSBmLT5uZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAg Ly8gUmVtb3ZlIGByZXR1cm4gdnJlc3VsdDtgIGZyb20gcmV0dXJucwogICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJucy0+cmVtb3ZlKGkpOwogICAg ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xOTAxLDcgKzE5 MjMsNyBAQCB2b2lkIEZ1bmNEZWNsYXJhdGlvbjo6c2VtYW50aWMzKFNjb3Bl ICpzYykKIAogICAgICAgICAgICAgaWYgKHJldHVybnMpCiAgICAgICAgICAg ICB7Ci0gICAgICAgICAgICAgICAgYm9vbCBpbXBsaWNpdDAgPSAoZi0+bmV4 dC0+dHkgPT0gVHZvaWQgJiYgaXNNYWluKCkpOworICAgICAgICAgICAgICAg IGJvb2wgaW1wbGljaXQwID0gYWRkUmV0dXJuMCh0aGlzKTsKICAgICAgICAg ICAgICAgICBUeXBlICp0cmV0ID0gaW1wbGljaXQwID8gVHlwZTo6dGludDMy IDogZi0+bmV4dDsKICAgICAgICAgICAgICAgICBhc3NlcnQodHJldC0+dHkg IT0gVHZvaWQpOwogICAgICAgICAgICAgICAgIGlmICh2cmVzdWx0IHx8IHJl dHVybkxhYmVsKQpAQCAtMjEyMyw3ICsyMTQ1LDcgQEAgdm9pZCBGdW5jRGVj bGFyYXRpb246OnNlbWFudGljMyhTY29wZSAqc2MpCiAgICAgICAgICAgICAg ICAgICAgIGEtPnB1c2gocyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgfQotICAgICAgICAgICAgaWYgKGlzTWFpbigpICYmIGYtPm5leHQt PnR5ID09IFR2b2lkKQorICAgICAgICAgICAgaWYgKGFkZFJldHVybjAodGhp cykpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLy8gQWRkIGEg cmV0dXJuIDA7IHN0YXRlbWVudAogICAgICAgICAgICAgICAgIFN0YXRlbWVu dCAqcyA9IG5ldyBSZXR1cm5TdGF0ZW1lbnQoTG9jKCksIG5ldyBJbnRlZ2Vy RXhwKDApKTsKZGlmZiAtLWdpdCBhL2djYy9kL2RtZC9nbG9iYWxzLmggYi9n Y2MvZC9kbWQvZ2xvYmFscy5oCmluZGV4IGUyZDQyYzdiNjdiLi4xMDk0Njc5 YjgzNyAxMDA2NDQKLS0tIGEvZ2NjL2QvZG1kL2dsb2JhbHMuaAorKysgYi9n Y2MvZC9kbWQvZ2xvYmFscy5oCkBAIC0zNiw2ICszNiwxNCBAQCBlbnVtIEJP VU5EU0NIRUNLCiAgICAgQk9VTkRTQ0hFQ0tzYWZlb25seSAvLyBkbyBib3Vu ZHMgY2hlY2tpbmcgb25seSBpbiBAc2FmZSBmdW5jdGlvbnMKIH07CiAKK3R5 cGVkZWYgdW5zaWduZWQgY2hhciBDSEVDS0FDVElPTjsKK2VudW0KK3sKKyAg ICBDSEVDS0FDVElPTl9ELCAgICAgICAgLy8gY2FsbCBEIGFzc2VydCBvbiBm YWlsdXJlCisgICAgQ0hFQ0tBQ1RJT05fQywgICAgICAgIC8vIGNhbGwgQyBh c3NlcnQgb24gZmFpbHVyZQorICAgIENIRUNLQUNUSU9OX2hhbHQgICAgICAv LyBjYXVzZSBwcm9ncmFtIGhhbHQgb24gZmFpbHVyZQorfTsKKwogZW51bSBD UFUKIHsKICAgICB4ODcsCkBAIC0xMTYsNiArMTI0LDkgQEAgc3RydWN0IFBh cmFtCiAgICAgYm9vbCBub2Zsb2F0OyAgICAgICAvLyBjb2RlIHNob3VsZCBu b3QgcHVsbCBpbiBmbG9hdGluZyBwb2ludCBzdXBwb3J0CiAgICAgYm9vbCBp Z25vcmVVbnN1cHBvcnRlZFByYWdtYXM7ICAgICAgLy8gcmF0aGVyIHRoYW4g ZXJyb3Igb24gdGhlbQogICAgIGJvb2wgZW5mb3JjZVByb3BlcnR5U3ludGF4 OworICAgIGJvb2wgdXNlTW9kdWxlSW5mbzsgLy8gZ2VuZXJhdGUgcnVudGlt ZSBtb2R1bGUgaW5mb3JtYXRpb24KKyAgICBib29sIHVzZVR5cGVJbmZvOyAg IC8vIGdlbmVyYXRlIHJ1bnRpbWUgdHlwZSBpbmZvcm1hdGlvbgorICAgIGJv b2wgdXNlRXhjZXB0aW9uczsgLy8gc3VwcG9ydCBleGNlcHRpb24gaGFuZGxp bmcKICAgICBib29sIGJldHRlckM7ICAgICAgIC8vIGJlIGEgImJldHRlciBD IiBjb21waWxlcjsgbm8gZGVwZW5kZW5jeSBvbiBEIHJ1bnRpbWUKICAgICBi b29sIGFkZE1haW47ICAgICAgIC8vIGFkZCBhIGRlZmF1bHQgbWFpbigpIGZ1 bmN0aW9uCiAgICAgYm9vbCBhbGxJbnN0OyAgICAgICAvLyBnZW5lcmF0ZSBj b2RlIGZvciBhbGwgdGVtcGxhdGUgaW5zdGFudGlhdGlvbnMKQEAgLTEyNiw3 ICsxMzcsOSBAQCBzdHJ1Y3QgUGFyYW0KICAgICBib29sIHNob3dHYWdnZWRF cnJvcnM7ICAvLyBwcmludCBnYWdnZWQgZXJyb3JzIGFueXdheQogCiAgICAg Q1BVIGNwdTsgICAgICAgICAgICAgICAgLy8gQ1BVIGluc3RydWN0aW9uIHNl dCB0byB0YXJnZXQKLSAgICBCT1VORFNDSEVDSyB1c2VBcnJheUJvdW5kczsK KworICAgIEJPVU5EU0NIRUNLIHVzZUFycmF5Qm91bmRzOyAgICAvLyB3aGVu IHRvIGdlbmVyYXRlIGNvZGUgZm9yIGFycmF5IGJvdW5kcyBjaGVja3MKKyAg ICBDSEVDS0FDVElPTiBjaGVja0FjdGlvbjsgICAgICAgLy8gYWN0aW9uIHRv IHRha2Ugd2hlbiBib3VuZHMsIGFzc2VydHMgb3Igc3dpdGNoIGRlZmF1bHRz IGFyZSB2aW9sYXRlZAogCiAgICAgY29uc3QgY2hhciAqYXJndjA7ICAgIC8v IHByb2dyYW0gbmFtZQogICAgIEFycmF5PGNvbnN0IGNoYXIgKj4gKm1vZEZp bGVBbGlhc1N0cmluZ3M7IC8vIGFycmF5IG9mIGNoYXIqJ3Mgb2YgLUkgbW9k dWxlIGZpbGVuYW1lIGFsaWFzIHN0cmluZ3MKZGlmZiAtLWdpdCBhL2djYy9k L2RtZC9pZGdlbi5jIGIvZ2NjL2QvZG1kL2lkZ2VuLmMKaW5kZXggZTc1MDA0 ODkzYWEuLmRjMGVjZDEzODYxIDEwMDY0NAotLS0gYS9nY2MvZC9kbWQvaWRn ZW4uYworKysgYi9nY2MvZC9kbWQvaWRnZW4uYwpAQCAtMjY0LDkgKzI2NCw5 IEBAIE1zZ3RhYmxlIG1zZ3RhYmxlW10gPQogICAgIHsgIm1vbml0b3JleGl0 IiwgIl9kX21vbml0b3JleGl0IiB9LAogICAgIHsgImNyaXRpY2FsZW50ZXIi LCAiX2RfY3JpdGljYWxlbnRlciIgfSwKICAgICB7ICJjcml0aWNhbGV4aXQi LCAiX2RfY3JpdGljYWxleGl0IiB9LAotICAgIHsgIl9BcnJheUVxIiwgTlVM TCB9LAotICAgIHsgIl9BcnJheVBvc3RibGl0IiwgTlVMTCB9LAotICAgIHsg Il9BcnJheUR0b3IiLCBOVUxMIH0sCisgICAgeyAiX19BcnJheUVxIiwgTlVM TCB9LAorICAgIHsgIl9fQXJyYXlQb3N0YmxpdCIsIE5VTEwgfSwKKyAgICB7 ICJfX0FycmF5RHRvciIsIE5VTEwgfSwKICAgICB7ICJkdXAiLCBOVUxMIH0s CiAgICAgeyAiX2FhQXBwbHkiLCBOVUxMIH0sCiAgICAgeyAiX2FhQXBwbHky IiwgTlVMTCB9LApkaWZmIC0tZ2l0IGEvZ2NjL2QvZG1kL29wb3Zlci5jIGIv Z2NjL2QvZG1kL29wb3Zlci5jCmluZGV4IDQ1M2JhNjU4NTJjLi5iM2VhNmNm NDY3MSAxMDA2NDQKLS0tIGEvZ2NjL2QvZG1kL29wb3Zlci5jCisrKyBiL2dj Yy9kL2RtZC9vcG92ZXIuYwpAQCAtOTAwLDcgKzkwMCw5IEBAIEV4cHJlc3Np b24gKm9wX292ZXJsb2FkKEV4cHJlc3Npb24gKmUsIFNjb3BlICpzYykKICAg ICAgICAgICAgIGlmICh0LT50eSAhPSBUc3RydWN0KQogICAgICAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgc2VtYW50aWNUeXBl SW5mbyhzYywgdCk7CisgICAgICAgICAgICBpZiAoZ2xvYmFsLnBhcmFtcy51 c2VUeXBlSW5mbyAmJiBUeXBlOjpkdHlwZWluZm8pCisgICAgICAgICAgICAg ICAgc2VtYW50aWNUeXBlSW5mbyhzYywgdCk7CisKICAgICAgICAgICAgIHJl dHVybiAoKFR5cGVTdHJ1Y3QgKil0KS0+c3ltLT5oYXNJZGVudGl0eUVxdWFs czsKICAgICAgICAgfQogCkBAIC05MTksOSArOTIxLDkgQEAgRXhwcmVzc2lv biAqb3Bfb3ZlcmxvYWQoRXhwcmVzc2lvbiAqZSwgU2NvcGUgKnNjKQogICAg ICAgICAgICAgICAgIGlmIChuZWVkc0RpcmVjdEVxKHQxLCB0Miwgc2MpKQog ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgLyogUmV3 cml0ZSBhczoKLSAgICAgICAgICAgICAgICAgICAgICogICAgICBfQXJyYXlF cShlMSwgZTIpCisgICAgICAgICAgICAgICAgICAgICAqICAgICAgX19BcnJh eUVxKGUxLCBlMikKICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAg ICAgICAgICAgICAgIEV4cHJlc3Npb24gKmVlcSA9IG5ldyBJZGVudGlmaWVy RXhwKGUtPmxvYywgSWQ6Ol9BcnJheUVxKTsKKyAgICAgICAgICAgICAgICAg ICAgRXhwcmVzc2lvbiAqZWVxID0gbmV3IElkZW50aWZpZXJFeHAoZS0+bG9j LCBJZDo6X19BcnJheUVxKTsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0 ID0gbmV3IENhbGxFeHAoZS0+bG9jLCBlZXEsIGUtPmUxLCBlLT5lMik7CiAg ICAgICAgICAgICAgICAgICAgIGlmIChlLT5vcCA9PSBUT0tub3RlcXVhbCkK ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBOb3RFeHAo ZS0+bG9jLCByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvZ2NjL2QvZG1kL3BhcnNl LmMgYi9nY2MvZC9kbWQvcGFyc2UuYwppbmRleCAzYWZkYmMyNTdmOC4uOWRh NThhZjA0NmQgMTAwNjQ0Ci0tLSBhL2djYy9kL2RtZC9wYXJzZS5jCisrKyBi L2djYy9kL2RtZC9wYXJzZS5jCkBAIC03MCw3ICs3MCw2IEBAIFBhcnNlcjo6 UGFyc2VyKExvYyBsb2MsIE1vZHVsZSAqbW9kdWxlLCBjb25zdCB1dGY4X3Qg KmJhc2UsIHNpemVfdCBsZW5ndGgsIGJvb2wKICAgICAvL3ByaW50ZigiUGFy c2VyOjpQYXJzZXIoKVxuIik7CiAgICAgc2NhbmxvYyA9IGxvYzsKIAotI2lm bmRlZiBJTl9HQ0MKICAgICBpZiAobG9jLmZpbGVuYW1lKQogICAgIHsKICAg ICAgICAgLyogQ3JlYXRlIGEgcHNldWRvLWZpbGVuYW1lIGZvciB0aGUgbWl4 aW4gc3RyaW5nLCBhcyBpdCBtYXkgbm90IGV2ZW4gZXhpc3QKQEAgLTgwLDcg Kzc5LDYgQEAgUGFyc2VyOjpQYXJzZXIoTG9jIGxvYywgTW9kdWxlICptb2R1 bGUsIGNvbnN0IHV0ZjhfdCAqYmFzZSwgc2l6ZV90IGxlbmd0aCwgYm9vbAog ICAgICAgICBzcHJpbnRmKGZpbGVuYW1lLCAiJXMtbWl4aW4tJWQiLCBsb2Mu ZmlsZW5hbWUsIChpbnQpbG9jLmxpbm51bSk7CiAgICAgICAgIHNjYW5sb2Mu ZmlsZW5hbWUgPSBmaWxlbmFtZTsKICAgICB9Ci0jZW5kaWYKIAogICAgIG1v ZCA9IG1vZHVsZTsKICAgICBtZCA9IE5VTEw7CmRpZmYgLS1naXQgYS9nY2Mv ZC9kbWQvc3RhdGVtZW50c2VtLmMgYi9nY2MvZC9kbWQvc3RhdGVtZW50c2Vt LmMKaW5kZXggZjY5NGZiMWIyNzguLjY0Y2M0MmQ5Y2U5IDEwMDY0NAotLS0g YS9nY2MvZC9kbWQvc3RhdGVtZW50c2VtLmMKKysrIGIvZ2NjL2QvZG1kL3N0 YXRlbWVudHNlbS5jCkBAIC0yMDczLDggKzIwNzMsMTkgQEAgcHVibGljOgog ICAgICAgICAgICAgQ29tcG91bmRTdGF0ZW1lbnQgKmNzOwogICAgICAgICAg ICAgU3RhdGVtZW50ICpzOwogCi0gICAgICAgICAgICBpZiAoZ2xvYmFsLnBh cmFtcy51c2VTd2l0Y2hFcnJvcikKLSAgICAgICAgICAgICAgICBzID0gbmV3 IFN3aXRjaEVycm9yU3RhdGVtZW50KHNzLT5sb2MpOworICAgICAgICAgICAg aWYgKGdsb2JhbC5wYXJhbXMudXNlU3dpdGNoRXJyb3IgJiYKKyAgICAgICAg ICAgICAgICBnbG9iYWwucGFyYW1zLmNoZWNrQWN0aW9uICE9IENIRUNLQUNU SU9OX2hhbHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYg KGdsb2JhbC5wYXJhbXMuY2hlY2tBY3Rpb24gPT0gQ0hFQ0tBQ1RJT05fQykK KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8qIFJl d3JpdGUgYXMgYW4gYXNzZXJ0KDApIGFuZCBsZXQgZTJpciBnZW5lcmF0ZQor ICAgICAgICAgICAgICAgICAgICAgKiB0aGUgY2FsbCB0byB0aGUgQyBhc3Nl cnQgZmFpbHVyZSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgKi8K KyAgICAgICAgICAgICAgICAgICAgcyA9IG5ldyBFeHBTdGF0ZW1lbnQoc3Mt PmxvYywgbmV3IEFzc2VydEV4cChzcy0+bG9jLCBuZXcgSW50ZWdlckV4cChz cy0+bG9jLCAwLCBUeXBlOjp0aW50MzIpKSk7CisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg cyA9IG5ldyBTd2l0Y2hFcnJvclN0YXRlbWVudChzcy0+bG9jKTsKKyAgICAg ICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBz ID0gbmV3IEV4cFN0YXRlbWVudChzcy0+bG9jLCBuZXcgSGFsdEV4cChzcy0+ bG9jKSk7CiAKQEAgLTMxMTgsNiArMzEyOSwxOCBAQCBwdWJsaWM6CiAKICAg ICB2b2lkIHZpc2l0KFRyeUNhdGNoU3RhdGVtZW50ICp0Y3MpCiAgICAgewor ICAgICAgICBpZiAoIWdsb2JhbC5wYXJhbXMudXNlRXhjZXB0aW9ucykKKyAg ICAgICAgeworICAgICAgICAgICAgdGNzLT5lcnJvcigiQ2Fubm90IHVzZSB0 cnktY2F0Y2ggc3RhdGVtZW50cyB3aXRoIC1iZXR0ZXJDIik7CisgICAgICAg ICAgICByZXR1cm4gc2V0RXJyb3IoKTsKKyAgICAgICAgfQorCisgICAgICAg IGlmICghQ2xhc3NEZWNsYXJhdGlvbjo6dGhyb3dhYmxlKQorICAgICAgICB7 CisgICAgICAgICAgICB0Y3MtPmVycm9yKCJDYW5ub3QgdXNlIHRyeS1jYXRj aCBzdGF0ZW1lbnRzIGJlY2F1c2UgYG9iamVjdC5UaHJvd2FibGVgIHdhcyBu b3QgZGVjbGFyZWQiKTsKKyAgICAgICAgICAgIHJldHVybiBzZXRFcnJvcigp OworICAgICAgICB9CisKICAgICAgICAgdW5zaWduZWQgZmxhZ3MgPSAwOwog ICAgICAgICBjb25zdCB1bnNpZ25lZCBGTEFHY3BwID0gMTsKICAgICAgICAg Y29uc3QgdW5zaWduZWQgRkxBR2QgPSAyOwpAQCAtMzIyNyw3ICszMjUwLDE0 IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog Ci0gICAgICAgIGlmIChibG9ja0V4aXQodGZzLT5fYm9keSwgc2MtPmZ1bmMs IGZhbHNlKSA9PSBCRWZhbGx0aHJ1KQorICAgICAgICBpbnQgYmxvY2tleGl0 ID0gYmxvY2tFeGl0KHRmcy0+X2JvZHksIHNjLT5mdW5jLCBmYWxzZSk7CisK KyAgICAgICAgLy8gaWYgbm90IHdvcnJ5aW5nIGFib3V0IGV4Y2VwdGlvbnMK KyAgICAgICAgaWYgKCEoZ2xvYmFsLnBhcmFtcy51c2VFeGNlcHRpb25zICYm IENsYXNzRGVjbGFyYXRpb246OnRocm93YWJsZSkpCisgICAgICAgICAgICBi bG9ja2V4aXQgJj0gfkJFdGhyb3c7ICAgICAgICAgICAgLy8gZG9uJ3Qgd29y cnkgYWJvdXQgcGF0aHMgdGhhdCBvdGhlcndpc2UgbWF5IHRocm93CisKKyAg ICAgICAgLy8gRG9uJ3QgY2FyZSBhYm91dCBwYXRocyB0aGF0IGhhbHQsIGVp dGhlcgorICAgICAgICBpZiAoKGJsb2NrZXhpdCAmIH5CRWhhbHQpID09IEJF ZmFsbHRocnUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJlc3VsdCA9IG5l dyBDb21wb3VuZFN0YXRlbWVudCh0ZnMtPmxvYywgdGZzLT5fYm9keSwgdGZz LT5maW5hbGJvZHkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzIzNyw3 ICszMjY3LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCB2aXNpdChPblNjb3Bl U3RhdGVtZW50ICpvc3MpCiAgICAgewotI2lmbmRlZiBJTl9HQ0MKICAgICAg ICAgaWYgKG9zcy0+dG9rICE9IFRPS29uX3Njb3BlX2V4aXQpCiAgICAgICAg IHsKICAgICAgICAgICAgIC8vIHNjb3BlKHN1Y2Nlc3MpIGFuZCBzY29wZShm YWlsdXJlKSBhcmUgcmV3cml0dGVuIHRvIHRyeS1jYXRjaCgtZmluYWxseSkg c3RhdGVtZW50LApAQCAtMzI1NSw3ICszMjg0LDYgQEAgcHVibGljOgogICAg ICAgICAgICAgICAgIHJldHVybiBzZXRFcnJvcigpOwogICAgICAgICAgICAg fQogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICBzYyA9IHNjLT5wdXNo KCk7CiAgICAgICAgIHNjLT50ZiA9IE5VTEw7CkBAIC0zMjgxLDYgKzMzMDks MTggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgLy9wcmludGYoIlRocm93 U3RhdGVtZW50OjpzZW1hbnRpYygpXG4iKTsKIAorICAgICAgICBpZiAoIWds b2JhbC5wYXJhbXMudXNlRXhjZXB0aW9ucykKKyAgICAgICAgeworICAgICAg ICAgICAgdHMtPmVycm9yKCJDYW5ub3QgdXNlIGB0aHJvd2Agc3RhdGVtZW50 cyB3aXRoIC1iZXR0ZXJDIik7CisgICAgICAgICAgICByZXR1cm4gc2V0RXJy b3IoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghQ2xhc3NEZWNsYXJh dGlvbjo6dGhyb3dhYmxlKQorICAgICAgICB7CisgICAgICAgICAgICB0cy0+ ZXJyb3IoIkNhbm5vdCB1c2UgYHRocm93YCBzdGF0ZW1lbnRzIGJlY2F1c2Ug YG9iamVjdC5UaHJvd2FibGVgIHdhcyBub3QgZGVjbGFyZWQiKTsKKyAgICAg ICAgICAgIHJldHVybiBzZXRFcnJvcigpOworICAgICAgICB9CisKICAgICAg ICAgRnVuY0RlY2xhcmF0aW9uICpmZCA9IHNjLT5wYXJlbnQtPmlzRnVuY0Rl Y2xhcmF0aW9uKCk7CiAgICAgICAgIGZkLT5oYXNSZXR1cm5FeHAgfD0gMjsK IApAQCAtMzQ2Myw3ICszNTAzLDYgQEAgdm9pZCBzZW1hbnRpYyhDYXRjaCAq YywgU2NvcGUgKnNjKQogewogICAgIC8vcHJpbnRmKCJDYXRjaDo6c2VtYW50 aWMoJXMpXG4iLCBpZGVudC0+dG9DaGFycygpKTsKIAotI2lmbmRlZiBJTl9H Q0MKICAgICBpZiAoc2MtPm9zICYmIHNjLT5vcy0+dG9rICE9IFRPS29uX3Nj b3BlX2ZhaWx1cmUpCiAgICAgewogICAgICAgICAvLyBJZiBlbmNsb3Npbmcg aXMgc2NvcGUoc3VjY2Vzcykgb3Igc2NvcGUoZXhpdCksIHRoaXMgd2lsbCBi ZSBwbGFjZWQgaW4gZmluYWxseSBibG9jay4KQEAgLTM0ODEsNyArMzUyMCw2 IEBAIHZvaWQgc2VtYW50aWMoQ2F0Y2ggKmMsIFNjb3BlICpzYykKICAgICAg ICAgZXJyb3IoYy0+bG9jLCAiY2Fubm90IHB1dCBjYXRjaCBzdGF0ZW1lbnQg aW5zaWRlIGZpbmFsbHkgYmxvY2siKTsKICAgICAgICAgYy0+ZXJyb3JzID0g dHJ1ZTsKICAgICB9Ci0jZW5kaWYKIAogICAgIFNjb3BlRHN5bWJvbCAqc3lt ID0gbmV3IFNjb3BlRHN5bWJvbCgpOwogICAgIHN5bS0+cGFyZW50ID0gc2Mt PnNjb3Blc3ltOwpkaWZmIC0tZ2l0IGEvZ2NjL2QvZXhwci5jYyBiL2djYy9k L2V4cHIuY2MKaW5kZXggYWNmODFhNmNjYTAuLjY0OTc2MTllNWZkIDEwMDY0 NAotLS0gYS9nY2MvZC9leHByLmNjCisrKyBiL2djYy9kL2V4cHIuY2MKQEAg LTQyNCw3ICs0MjQsNyBAQCBwdWJsaWM6CiAJICAgIHRyZWUgcmVzdWx0ID0g YnVpbGRfbGliY2FsbCAoTElCQ0FMTF9BREVRMiwgZS0+dHlwZSwgMywKIAkJ CQkJIGRfYXJyYXlfY29udmVydCAoZS0+ZTEpLAogCQkJCQkgZF9hcnJheV9j b252ZXJ0IChlLT5lMiksCi0JCQkJCSBidWlsZF90eXBlaW5mbyAodDFhcnJh eSkpOworCQkJCQkgYnVpbGRfdHlwZWluZm8gKGUtPmxvYywgdDFhcnJheSkp OwogCiAJICAgIGlmIChlLT5vcCA9PSBUT0tub3RlcXVhbCkKIAkgICAgICBy ZXN1bHQgPSBidWlsZDEgKFRSVVRIX05PVF9FWFBSLCBidWlsZF9jdHlwZSAo ZS0+dHlwZSksIHJlc3VsdCk7CkBAIC00NDksNyArNDQ5LDcgQEAgcHVibGlj OgogCS8qIFVzZSBfYWFFcXVhbCgpIGZvciBhc3NvY2lhdGl2ZSBhcnJheXMu ICAqLwogCVR5cGVBQXJyYXkgKnRhYTEgPSAoVHlwZUFBcnJheSAqKSB0YjE7 CiAJdHJlZSByZXN1bHQgPSBidWlsZF9saWJjYWxsIChMSUJDQUxMX0FBRVFV QUwsIGUtPnR5cGUsIDMsCi0JCQkJICAgICBidWlsZF90eXBlaW5mbyAodGFh MSksCisJCQkJICAgICBidWlsZF90eXBlaW5mbyAoZS0+bG9jLCB0YWExKSwK IAkJCQkgICAgIGJ1aWxkX2V4cHIgKGUtPmUxKSwKIAkJCQkgICAgIGJ1aWxk X2V4cHIgKGUtPmUyKSk7CiAKQEAgLTQ4NSw3ICs0ODUsNyBAQCBwdWJsaWM6 CiAgICAgLyogQnVpbGQgYSBjYWxsIHRvIF9hYUluWCgpLiAgKi8KICAgICB0 aGlzLT5yZXN1bHRfID0gYnVpbGRfbGliY2FsbCAoTElCQ0FMTF9BQUlOWCwg ZS0+dHlwZSwgMywKIAkJCQkgICBidWlsZF9leHByIChlLT5lMiksCi0JCQkJ ICAgYnVpbGRfdHlwZWluZm8gKHRrZXkpLAorCQkJCSAgIGJ1aWxkX3R5cGVp bmZvIChlLT5sb2MsIHRrZXkpLAogCQkJCSAgIGJ1aWxkX2FkZHJlc3MgKGtl eSkpOwogICB9CiAKQEAgLTUzMyw3ICs1MzMsNyBAQCBwdWJsaWM6CiAJdHJl ZSBjYWxsID0gYnVpbGRfbGliY2FsbCAoTElCQ0FMTF9BRENNUDIsIFR5cGU6 OnRpbnQzMiwgMywKIAkJCQkgICBkX2FycmF5X2NvbnZlcnQgKGUtPmUxKSwK IAkJCQkgICBkX2FycmF5X2NvbnZlcnQgKGUtPmUyKSwKLQkJCQkgICBidWls ZF90eXBlaW5mbyAodGVsZW0tPmFycmF5T2YgKCkpKTsKKwkJCQkgICBidWls ZF90eXBlaW5mbyAoZS0+bG9jLCB0ZWxlbS0+YXJyYXlPZiAoKSkpOwogCXJl c3VsdCA9IGJ1aWxkX2Jvb2xvcCAoY29kZSwgY2FsbCwgaW50ZWdlcl96ZXJv X25vZGUpOwogCiAJdGhpcy0+cmVzdWx0XyA9IGRfY29udmVydCAoYnVpbGRf Y3R5cGUgKGUtPnR5cGUpLCByZXN1bHQpOwpAQCAtNzQ1LDEzICs3NDUsMTMg QEAgcHVibGljOgogCQkJCSAgIHNpemVfaW50IChuZGltcyksIGJ1aWxkX2Fk ZHJlc3MgKHZhcikpOwogCiAJcmVzdWx0ID0gYnVpbGRfbGliY2FsbCAoTElC Q0FMTF9BUlJBWUNBVE5UWCwgZS0+dHlwZSwgMiwKLQkJCQlidWlsZF90eXBl aW5mbyAoZS0+dHlwZSksIGFycnMpOworCQkJCWJ1aWxkX3R5cGVpbmZvIChl LT5sb2MsIGUtPnR5cGUpLCBhcnJzKTsKICAgICAgIH0KICAgICBlbHNlCiAg ICAgICB7CiAJLyogSGFuZGxlIHNpbmdsZSBjb25jYXRlbmF0aW9uIChhIH4g YikuICAqLwogCXJlc3VsdCA9IGJ1aWxkX2xpYmNhbGwgKExJQkNBTExfQVJS QVlDQVRULCBlLT50eXBlLCAzLAotCQkJCWJ1aWxkX3R5cGVpbmZvIChlLT50 eXBlKSwKKwkJCQlidWlsZF90eXBlaW5mbyAoZS0+bG9jLCBlLT50eXBlKSwK IAkJCQlkX2FycmF5X2NvbnZlcnQgKGV0eXBlLCBlLT5lMSwgJmVsZW12YXJz KSwKIAkJCQlkX2FycmF5X2NvbnZlcnQgKGV0eXBlLCBlLT5lMiwgJmVsZW12 YXJzKSk7CiAgICAgICB9CkBAIC04NTksNyArODU5LDcgQEAgcHVibGljOgog ICAgICAgewogCWdjY19hc3NlcnQgKHRiMS0+dHkgPT0gVGFycmF5IHx8IHRi Mi0+dHkgPT0gVHNhcnJheSk7CiAKLQl0cmVlIHRpbmZvID0gYnVpbGRfdHlw ZWluZm8gKGUtPnR5cGUpOworCXRyZWUgdGluZm8gPSBidWlsZF90eXBlaW5m byAoZS0+bG9jLCBlLT50eXBlKTsKIAl0cmVlIHB0ciA9IGJ1aWxkX2FkZHJl c3MgKGJ1aWxkX2V4cHIgKGUtPmUxKSk7CiAKIAlpZiAoKHRiMi0+dHkgPT0g VGFycmF5IHx8IHRiMi0+dHkgPT0gVHNhcnJheSkKQEAgLTkyNCw3ICs5MjQs NyBAQCBwdWJsaWM6CiAJICA/IExJQkNBTExfQVJSQVlTRVRMRU5HVEhUIDog TElCQ0FMTF9BUlJBWVNFVExFTkdUSElUOwogCiAJdHJlZSByZXN1bHQgPSBi dWlsZF9saWJjYWxsIChsaWJjYWxsLCBhbGUtPmUxLT50eXBlLCAzLAotCQkJ CSAgICAgYnVpbGRfdHlwZWluZm8gKGFsZS0+ZTEtPnR5cGUpLAorCQkJCSAg ICAgYnVpbGRfdHlwZWluZm8gKGFsZS0+bG9jLCBhbGUtPmUxLT50eXBlKSwK IAkJCQkgICAgIG5ld2xlbmd0aCwgcHRyKTsKIAogCXRoaXMtPnJlc3VsdF8g PSBkX2FycmF5X2xlbmd0aCAocmVzdWx0KTsKQEAgLTk1NCw3ICs5NTQsOCBA QCBwdWJsaWM6CiAJCWxpYmNhbGxfZm4gbGliY2FsbCA9IChlLT5vcCA9PSBU T0tjb25zdHJ1Y3QpCiAJCSAgPyBMSUJDQUxMX0FSUkFZU0VUQ1RPUiA6IExJ QkNBTExfQVJSQVlTRVRBU1NJR047CiAJCS8qIFNvIHdlIGNhbiBjYWxsIHBv c3RibGl0cyBvbiBjb25zdC9pbW11dGFibGUgb2JqZWN0cy4gICovCi0JCXRy ZWUgdGkgPSBidWlsZF90eXBlaW5mbyAoZXR5cGUtPnVuU2hhcmVkT2YgKCkt Pm11dGFibGVPZiAoKSk7CisJCVR5cGUgKnRtID0gZXR5cGUtPnVuU2hhcmVk T2YgKCktPm11dGFibGVPZiAoKTsKKwkJdHJlZSB0aSA9IGJ1aWxkX3R5cGVp bmZvIChlLT5sb2MsIHRtKTsKIAogCQl0cmVlIHJlc3VsdCA9IGJ1aWxkX2xp YmNhbGwgKGxpYmNhbGwsIFR5cGU6OnR2b2lkLCA0LAogCQkJCQkgICAgIGRf YXJyYXlfcHRyICh0MSksCkBAIC0xMDA0LDcgKzEwMDUsNyBAQCBwdWJsaWM6 CiAJCSAgPyBMSUJDQUxMX0FSUkFZQ1RPUiA6IExJQkNBTExfQVJSQVlBU1NJ R047CiAKIAkJdGhpcy0+cmVzdWx0XyA9IGJ1aWxkX2xpYmNhbGwgKGxpYmNh bGwsIGUtPnR5cGUsIDMsCi0JCQkJCSAgICAgICBidWlsZF90eXBlaW5mbyAo ZXR5cGUpLAorCQkJCQkgICAgICAgYnVpbGRfdHlwZWluZm8gKGUtPmxvYywg ZXR5cGUpLAogCQkJCQkgICAgICAgZF9hcnJheV9jb252ZXJ0IChlLT5lMiks CiAJCQkJCSAgICAgICBkX2FycmF5X2NvbnZlcnQgKGUtPmUxKSk7CiAJICAg ICAgfQpAQCAtMTEzMyw3ICsxMTM0LDcgQEAgcHVibGljOgogCSAgewogCSAg ICAvKiBHZW5lcmF0ZTogX2RfYXJyYXljdG9yKHRpLCBmcm9tLCB0bykgICov CiAJICAgIHJlc3VsdCA9IGJ1aWxkX2xpYmNhbGwgKExJQkNBTExfQVJSQVlD VE9SLCBhcnJ0eXBlLCAzLAotCQkJCSAgICBidWlsZF90eXBlaW5mbyAoZXR5 cGUpLAorCQkJCSAgICBidWlsZF90eXBlaW5mbyAoZS0+bG9jLCBldHlwZSks CiAJCQkJICAgIGRfYXJyYXlfY29udmVydCAoZS0+ZTIpLAogCQkJCSAgICBk X2FycmF5X2NvbnZlcnQgKGUtPmUxKSk7CiAJICB9CkBAIC0xMTQ2LDcgKzEx NDcsNyBAQCBwdWJsaWM6CiAJICAgIHRyZWUgZWxlbWJ1ZiA9IGJ1aWxkX2xv Y2FsX3RlbXAgKGJ1aWxkX2N0eXBlIChldHlwZSkpOwogCiAJICAgIHJlc3Vs dCA9IGJ1aWxkX2xpYmNhbGwgKGxpYmNhbGwsIGFycnR5cGUsIDQsCi0JCQkJ ICAgIGJ1aWxkX3R5cGVpbmZvIChldHlwZSksCisJCQkJICAgIGJ1aWxkX3R5 cGVpbmZvIChlLT5sb2MsIGV0eXBlKSwKIAkJCQkgICAgZF9hcnJheV9jb252 ZXJ0IChlLT5lMiksCiAJCQkJICAgIGRfYXJyYXlfY29udmVydCAoZS0+ZTEp LAogCQkJCSAgICBidWlsZF9hZGRyZXNzIChlbGVtYnVmKSk7CkBAIC0xMjEw LDEzICsxMjExLDEzIEBAIHB1YmxpYzoKIAkgIHsKIAkgICAgbGliY2FsbCA9 IExJQkNBTExfQUFHRVRZOwogCSAgICBwdHIgPSBidWlsZF9hZGRyZXNzIChi dWlsZF9leHByIChlLT5lMSkpOwotCSAgICB0aW5mbyA9IGJ1aWxkX3R5cGVp bmZvICh0YjEtPnVuU2hhcmVkT2YgKCktPm11dGFibGVPZiAoKSk7CisJICAg IHRpbmZvID0gYnVpbGRfdHlwZWluZm8gKGUtPmxvYywgdGIxLT51blNoYXJl ZE9mICgpLT5tdXRhYmxlT2YgKCkpOwogCSAgfQogCWVsc2UKIAkgIHsKIAkg ICAgbGliY2FsbCA9IExJQkNBTExfQUFHRVRSVkFMVUVYOwogCSAgICBwdHIg PSBidWlsZF9leHByIChlLT5lMSk7Ci0JICAgIHRpbmZvID0gYnVpbGRfdHlw ZWluZm8gKHRrZXkpOworCSAgICB0aW5mbyA9IGJ1aWxkX3R5cGVpbmZvIChl LT5sb2MsIHRrZXkpOwogCSAgfQogCiAJLyogSW5kZXggdGhlIGFzc29jaWF0 aXZlIGFycmF5LiAgKi8KQEAgLTEyMjcsNyArMTIyOCwxMCBAQCBwdWJsaWM6 CiAKIAlpZiAoIWUtPmluZGV4SXNJbkJvdW5kcyAmJiBhcnJheV9ib3VuZHNf Y2hlY2sgKCkpCiAJICB7Ci0JICAgIHRyZWUgdGFzc2VydCA9IGRfYXNzZXJ0 X2NhbGwgKGUtPmxvYywgTElCQ0FMTF9BUlJBWV9CT1VORFMpOworCSAgICB0 cmVlIHRhc3NlcnQgPSAoZ2xvYmFsLnBhcmFtcy5jaGVja0FjdGlvbiA9PSBD SEVDS0FDVElPTl9EKQorCSAgICAgID8gZF9hc3NlcnRfY2FsbCAoZS0+bG9j LCBMSUJDQUxMX0FSUkFZX0JPVU5EUykKKwkgICAgICA6IGJ1aWxkX2NhbGxf ZXhwciAoYnVpbHRpbl9kZWNsX2V4cGxpY2l0IChCVUlMVF9JTl9UUkFQKSwg MCk7CisKIAkgICAgcmVzdWx0ID0gZF9zYXZlX2V4cHIgKHJlc3VsdCk7CiAJ ICAgIHJlc3VsdCA9IGJ1aWxkX2NvbmRpdGlvbiAoVFJFRV9UWVBFIChyZXN1 bHQpLAogCQkJCSAgICAgIGRfdHJ1dGh2YWx1ZV9jb252ZXJzaW9uIChyZXN1 bHQpLApAQCAtMTQ4Niw3ICsxNDkwLDcgQEAgcHVibGljOgogCSAgICAvKiBN aWdodCBuZWVkIHRvIHJ1biBkZXN0cnVjdG9yIG9uIGFycmF5IGNvbnRlbnRz LiAgKi8KIAkgICAgVHlwZVN0cnVjdCAqdHMgPSAoVHlwZVN0cnVjdCAqKSB0 ZWxlbTsKIAkgICAgaWYgKHRzLT5zeW0tPmR0b3IpCi0JICAgICAgdGkgPSBi dWlsZF90eXBlaW5mbyAodGIxLT5uZXh0T2YgKCkpOworCSAgICAgIHRpID0g YnVpbGRfdHlwZWluZm8gKGUtPmxvYywgdGIxLT5uZXh0T2YgKCkpOwogCSAg fQogCiAJLyogR2VuZXJhdGU6IF9kZWxhcnJheV90ICgmdDEsIHRpKTsgICov CkBAIC0xNTA1LDggKzE1MDksOSBAQCBwdWJsaWM6CiAJICAgIFR5cGVTdHJ1 Y3QgKnRzID0gKFR5cGVTdHJ1Y3QgKil0bmV4dDsKIAkgICAgaWYgKHRzLT5z eW0tPmR0b3IpCiAJICAgICAgeworCQl0cmVlIHRpID0gYnVpbGRfdHlwZWlu Zm8gKGUtPmxvYywgdG5leHQpOwogCQl0aGlzLT5yZXN1bHRfID0gYnVpbGRf bGliY2FsbCAoTElCQ0FMTF9ERUxTVFJVQ1QsIFR5cGU6OnR2b2lkLAotCQkJ CQkgICAgICAgMiwgdDEsIGJ1aWxkX3R5cGVpbmZvICh0bmV4dCkpOworCQkJ CQkgICAgICAgMiwgdDEsIHRpKTsKIAkJcmV0dXJuOwogCSAgICAgIH0KIAkg IH0KQEAgLTE1MzYsNyArMTU0MSw3IEBAIHB1YmxpYzoKIAogCXRoaXMtPnJl c3VsdF8gPSBidWlsZF9saWJjYWxsIChMSUJDQUxMX0FBREVMWCwgVHlwZTo6 dGJvb2wsIDMsCiAJCQkJICAgICAgIGJ1aWxkX2V4cHIgKGUtPmUxKSwKLQkJ CQkgICAgICAgYnVpbGRfdHlwZWluZm8gKHRrZXkpLAorCQkJCSAgICAgICBi dWlsZF90eXBlaW5mbyAoZS0+bG9jLCB0a2V5KSwKIAkJCQkgICAgICAgYnVp bGRfYWRkcmVzcyAoaW5kZXgpKTsKICAgICAgIH0KICAgICBlbHNlCkBAIC0x OTY3LDcgKzE5NzIsOCBAQCBwdWJsaWM6CiAgICAgdHJlZSBhc3NlcnRfcGFz cyA9IHZvaWRfbm9kZTsKICAgICB0cmVlIGFzc2VydF9mYWlsOwogCi0gICAg aWYgKGdsb2JhbC5wYXJhbXMudXNlQXNzZXJ0KQorICAgIGlmIChnbG9iYWwu cGFyYW1zLnVzZUFzc2VydAorCSYmIGdsb2JhbC5wYXJhbXMuY2hlY2tBY3Rp b24gPT0gQ0hFQ0tBQ1RJT05fRCkKICAgICAgIHsKIAkvKiBHZW5lcmF0ZTog KChib29sKSBlMSAgPyAodm9pZCkwIDogX2RfYXNzZXJ0ICguLi4pKQogCQkg b3I6IChlMSAhPSBudWxsID8gZTEuX2ludmFyaWFudCgpIDogX2RfYXNzZXJ0 ICguLi4pKSAgKi8KQEAgLTIwMTEsNiArMjAxNywxMyBAQCBwdWJsaWM6CiAJ ICAgICAgfQogCSAgfQogICAgICAgfQorICAgIGVsc2UgaWYgKGdsb2JhbC5w YXJhbXMudXNlQXNzZXJ0CisJICAgICAmJiBnbG9iYWwucGFyYW1zLmNoZWNr QWN0aW9uID09IENIRUNLQUNUSU9OX0MpCisgICAgICB7CisJLyogR2VuZXJh dGU6IF9fYnVpbHRpbl90cmFwKCkgICovCisJdHJlZSBmbiA9IGJ1aWx0aW5f ZGVjbF9leHBsaWNpdCAoQlVJTFRfSU5fVFJBUCk7CisJYXNzZXJ0X2ZhaWwg PSBidWlsZF9jYWxsX2V4cHIgKGZuLCAwKTsKKyAgICAgIH0KICAgICBlbHNl CiAgICAgICB7CiAJLyogQXNzZXJ0IGNvbnRyYWN0cyBhcmUgdHVybmVkIG9m ZiwgaWYgdGhlIGNvbnRyYWN0IGNvbmRpdGlvbiBoYXMgbm8KQEAgLTIwNjYs NyArMjA3OSw3IEBAIHB1YmxpYzoKICAgewogICAgIGlmIChUeXBlICp0aWQg PSBpc1R5cGUgKGUtPm9iaikpCiAgICAgICB7Ci0JdHJlZSB0aSA9IGJ1aWxk X3R5cGVpbmZvICh0aWQpOworCXRyZWUgdGkgPSBidWlsZF90eXBlaW5mbyAo ZS0+bG9jLCB0aWQpOwogCiAJLyogSWYgdGhlIHR5cGVpbmZvIGlzIGF0IGFu IG9mZnNldC4gICovCiAJaWYgKHRpZC0+dnRpbmZvLT5vZmZzZXQpCkBAIC0y MzkwLDcgKzI0MDMsNyBAQCBwdWJsaWM6CiAJICAgIC8qIEdlbmVyYXRlOiBf ZF9uZXdpdGVtVCgpICAqLwogCSAgICBsaWJjYWxsX2ZuIGxpYmNhbGwgPSBo dHlwZS0+aXNaZXJvSW5pdCAoKQogCSAgICAgID8gTElCQ0FMTF9ORVdJVEVN VCA6IExJQkNBTExfTkVXSVRFTUlUOwotCSAgICB0cmVlIGFyZyA9IGJ1aWxk X3R5cGVpbmZvIChlLT5uZXd0eXBlKTsKKwkgICAgdHJlZSBhcmcgPSBidWls ZF90eXBlaW5mbyAoZS0+bG9jLCBlLT5uZXd0eXBlKTsKIAkgICAgbmV3X2Nh bGwgPSBidWlsZF9saWJjYWxsIChsaWJjYWxsLCB0YiwgMSwgYXJnKTsKIAkg IH0KIApAQCAtMjQ2MSw3ICsyNDc0LDcgQEAgcHVibGljOgogCSAgICBsaWJj YWxsX2ZuIGxpYmNhbGwgPSB0YXJyYXktPm5leHQtPmlzWmVyb0luaXQgKCkK IAkgICAgICA/IExJQkNBTExfTkVXQVJSQVlUIDogTElCQ0FMTF9ORVdBUlJB WUlUOwogCSAgICByZXN1bHQgPSBidWlsZF9saWJjYWxsIChsaWJjYWxsLCB0 YiwgMiwKLQkJCQkgICAgYnVpbGRfdHlwZWluZm8gKGUtPnR5cGUpLAorCQkJ CSAgICBidWlsZF90eXBlaW5mbyAoZS0+bG9jLCBlLT50eXBlKSwKIAkJCQkg ICAgYnVpbGRfZXhwciAoYXJnKSk7CiAJICB9CiAJZWxzZQpAQCAtMjQ5MSw3 ICsyNTA0LDcgQEAgcHVibGljOgogCSAgICBsaWJjYWxsX2ZuIGxpYmNhbGwg PSB0ZWxlbS0+aXNaZXJvSW5pdCAoKQogCSAgICAgID8gTElCQ0FMTF9ORVdB UlJBWU1UWCA6IExJQkNBTExfTkVXQVJSQVlNSVRYOwogCi0JICAgIHRyZWUg dGluZm8gPSBidWlsZF90eXBlaW5mbyAoZS0+dHlwZSk7CisJICAgIHRyZWUg dGluZm8gPSBidWlsZF90eXBlaW5mbyAoZS0+bG9jLCBlLT50eXBlKTsKIAkg ICAgdHJlZSBkaW1zID0gZF9hcnJheV92YWx1ZSAoYnVpbGRfY3R5cGUgKFR5 cGU6OnRzaXplX3QtPmFycmF5T2YgKCkpLAogCQkJCSAgICAgICBzaXplX2lu dCAoZS0+YXJndW1lbnRzLT5kaW0pLAogCQkJCSAgICAgICBidWlsZF9hZGRy ZXNzICh2YXIpKTsKQEAgLTI1MTksNyArMjUzMiw3IEBAIHB1YmxpYzoKIAls aWJjYWxsX2ZuIGxpYmNhbGwgPSB0cG9pbnRlci0+bmV4dC0+aXNaZXJvSW5p dCAoZS0+bG9jKQogCSAgPyBMSUJDQUxMX05FV0lURU1UIDogTElCQ0FMTF9O RVdJVEVNSVQ7CiAKLQl0cmVlIGFyZyA9IGJ1aWxkX3R5cGVpbmZvIChlLT5u ZXd0eXBlKTsKKwl0cmVlIGFyZyA9IGJ1aWxkX3R5cGVpbmZvIChlLT5sb2Ms IGUtPm5ld3R5cGUpOwogCXJlc3VsdCA9IGJ1aWxkX2xpYmNhbGwgKGxpYmNh bGwsIHRiLCAxLCBhcmcpOwogCiAJaWYgKGUtPmFyZ3VtZW50cyAmJiBlLT5h cmd1bWVudHMtPmRpbSA9PSAxKQpAQCAtMjc0Niw3ICsyNzU5LDcgQEAgcHVi bGljOgogCS8qIEFsbG9jYXRlIHNwYWNlIG9uIHRoZSBtZW1vcnkgbWFuYWdl ZCBoZWFwLiAgKi8KIAl0cmVlIG1lbSA9IGJ1aWxkX2xpYmNhbGwgKExJQkNB TExfQVJSQVlMSVRFUkFMVFgsCiAJCQkJICBldHlwZS0+cG9pbnRlclRvICgp LCAyLAotCQkJCSAgYnVpbGRfdHlwZWluZm8gKGV0eXBlLT5hcnJheU9mICgp KSwKKwkJCQkgIGJ1aWxkX3R5cGVpbmZvIChlLT5sb2MsIGV0eXBlLT5hcnJh eU9mICgpKSwKIAkJCQkgIHNpemVfaW50IChlLT5lbGVtZW50cy0+ZGltKSk7 CiAJbWVtID0gZF9zYXZlX2V4cHIgKG1lbSk7CiAKQEAgLTI4MjEsNyArMjgz NCw3IEBAIHB1YmxpYzoKIAkJCSAgICAgICBidWlsZF9hZGRyZXNzIChhdmFs cykpOwogCiAgICAgdHJlZSBtZW0gPSBidWlsZF9saWJjYWxsIChMSUJDQUxM X0FTU09DQVJSQVlMSVRFUkFMVFgsIFR5cGU6OnR2b2lkcHRyLCAzLAotCQkJ ICAgICAgYnVpbGRfdHlwZWluZm8gKHRhKSwga2V5cywgdmFscyk7CisJCQkg ICAgICBidWlsZF90eXBlaW5mbyAoZS0+bG9jLCB0YSksIGtleXMsIHZhbHMp OwogCiAgICAgLyogUmV0dXJuIGFuIGFzc29jaWF0aXZlIGFycmF5IHBvaW50 ZWQgdG8gYnkgTUVNLiAgKi8KICAgICB0cmVlIGFhdHlwZSA9IGJ1aWxkX2N0 eXBlICh0YSk7CmRpZmYgLS1naXQgYS9nY2MvZC9nZGMudGV4aSBiL2djYy9k L2dkYy50ZXhpCmluZGV4IGZhYWRmZmEyNTAyLi5iZjI2MjEwMzk4OCAxMDA2 NDQKLS0tIGEvZ2NjL2QvZ2RjLnRleGkKKysrIGIvZ2NjL2QvZ2RjLnRleGkK QEAgLTIzMyw2ICsyMzMsMTggQEAgaXMgY29tcGlsZWQgaW50byB0aGUgcHJv Z3JhbS4KIFR1cm5zIG9uIGNvbXBpbGF0aW9uIG9mIGFueSBAY29kZXtkZWJ1 Z30gY29kZSBpZGVudGlmaWVkIGJ5IEB2YXJ7aWRlbnR9LgogQGVuZCB0YWJs ZQogCitAaXRlbSAtZm5vLWRydW50aW1lCitAY2luZGV4IEBvcHRpb257LWZk cnVudGltZX0KK0BjaW5kZXggQG9wdGlvbnstZm5vLWRydW50aW1lfQorSW1w bGVtZW50cyBAdXJlZntodHRwczovL2RsYW5nLm9yZy9zcGVjL2JldHRlcmMu aHRtbH0uICBBc3N1bWVzIHRoYXQKK2NvbXBpbGF0aW9uIHRhcmdldHMgYW4g ZW52aXJvbm1lbnQgd2l0aG91dCBhIEQgcnVudGltZSBsaWJyYXJ5LgorCitU aGlzIGlzIGVxdWl2YWxlbnQgdG8gY29tcGlsaW5nIHdpdGggdGhlIGZvbGxv d2luZyBvcHRpb25zOgorCitAZXhhbXBsZQorZ2RjIC1ub3Bob2Jvc2xpYiAt Zm5vLWV4Y2VwdGlvbnMgLWZuby1tb2R1bGVpbmZvIC1mbm8tcnR0aQorQGVu ZCBleGFtcGxlCisKIEBpdGVtIC1mbm8taW52YXJpYW50cwogQGNpbmRleCBA b3B0aW9uey1maW52YXJpYW50c30KIEBjaW5kZXggQG9wdGlvbnstZm5vLWlu dmFyaWFudHN9CkBAIC0yNzksNiArMjkxLDEzIEBAIGdkYyAtZm5vLWFzc2Vy dCAtZmJvdW5kcy1jaGVjaz1zYWZlIC1mbm8taW52YXJpYW50cyBcCiAgICAg LWZuby1wb3N0Y29uZGl0aW9ucyAtZm5vLXByZWNvbmRpdGlvbnMgLWZuby1z d2l0Y2gtZXJyb3JzCiBAZW5kIGV4YW1wbGUKIAorQGl0ZW0gLWZuby1ydHRp CitAY2luZGV4IEBvcHRpb257LWZydHRpfQorQGNpbmRleCBAb3B0aW9uey1m bm8tcnR0aX0KK1R1cm5zIG9mZiBnZW5lcmF0aW9uIG9mIHJ1bi10aW1lIHR5 cGUgaW5mb3JtYXRpb24gZm9yIGFsbCB1c2VyIGRlZmluZWQgdHlwZXMuCitB bnkgY29kZSB0aGF0IHVzZXMgZmVhdHVyZXMgb2YgdGhlIGxhbmd1YWdlIHRo YXQgcmVxdWlyZSBhY2Nlc3MgdG8gdGhpcworaW5mb3JtYXRpb24gd2lsbCBy ZXN1bHQgaW4gYW4gZXJyb3IuCisKIEBpdGVtIC1mbm8tc3dpdGNoLWVycm9y cwogQGNpbmRleCBAb3B0aW9uey1mc3dpdGNoLWVycm9yc30KIEBjaW5kZXgg QG9wdGlvbnstZm5vLXN3aXRjaC1lcnJvcnN9CmRpZmYgLS1naXQgYS9nY2Mv ZC9sYW5nLm9wdCBiL2djYy9kL2xhbmcub3B0CmluZGV4IGY2NWJlNDQ0ZDQ1 Li4yNmNmNTJjNmNhNyAxMDA2NDQKLS0tIGEvZ2NjL2QvbGFuZy5vcHQKKysr IGIvZ2NjL2QvbGFuZy5vcHQKQEAgLTIyOSw2ICsyMjksMTAgQEAgZmRvYy1p bmM9CiBEIEpvaW5lZCBSZWplY3ROZWdhdGl2ZQogLWZkb2MtaW5jPTxmaWxl PglJbmNsdWRlIGEgRGRvYyBtYWNybyA8ZmlsZT4uCiAKK2ZkcnVudGltZQor RAorQXNzdW1lIHRoYXQgc3RhbmRhcmQgRCBydW50aW1lIGxpYnJhcmllcyBh bmQgXCJEIG1haW5cIiBleGlzdC4KKwogZmR1bXAtZC1vcmlnaW5hbAogRAog RGlzcGxheSB0aGUgZnJvbnRlbmQgQVNUIGFmdGVyIHBhcnNpbmcgYW5kIHNl bWFudGljIHBhc3Nlcy4KQEAgLTI1MCw3ICsyNTQsNyBAQCBEIEpvaW5lZCBS ZWplY3ROZWdhdGl2ZQogLWZtb2R1bGUtZmlsZT08cGFja2FnZS5tb2R1bGU+ PTxmaWxlc3BlYz4JdXNlIDxmaWxlc3BlYz4gYXMgc291cmNlIGZpbGUgZm9y IDxwYWNrYWdlLm1vZHVsZT4uCiAKIGZtb2R1bGVpbmZvCi1ECitEIFZhcihm bGFnX21vZHVsZWluZm8pCiBHZW5lcmF0ZSBNb2R1bGVJbmZvIHN0cnVjdCBm b3Igb3V0cHV0IG1vZHVsZS4KIAogZm9ubHk9CkBAIC0yNjksNiArMjczLDEw IEBAIGZyZWxlYXNlCiBECiBDb21waWxlIHJlbGVhc2UgdmVyc2lvbi4KIAor ZnJ0dGkKK0QKKzsgRG9jdW1lbnRlZCBpbiBDCisKIGZzd2l0Y2gtZXJyb3Jz CiBEIFZhcihmbGFnX3N3aXRjaF9lcnJvcnMpCiBHZW5lcmF0ZSBjb2RlIGZv ciBzd2l0Y2hlcyB3aXRob3V0IGEgZGVmYXVsdCBjYXNlLgpkaWZmIC0tZ2l0 IGEvZ2NjL2QvbW9kdWxlcy5jYyBiL2djYy9kL21vZHVsZXMuY2MKaW5kZXgg MzUwNTBjOGUxN2EuLjg4Y2M1ZTg5ZTlhIDEwMDY0NAotLS0gYS9nY2MvZC9t b2R1bGVzLmNjCisrKyBiL2djYy9kL21vZHVsZXMuY2MKQEAgLTc3Niw3ICs3 NzYsOCBAQCBidWlsZF9tb2R1bGVfdHJlZSAoTW9kdWxlICpkZWNsKQogCiAg IC8qIERlZmF1bHQgYmVoYXZpb3IgaXMgdG8gYWx3YXlzIGdlbmVyYXRlIG1v ZHVsZSBpbmZvIGJlY2F1c2Ugb2YgdGVtcGxhdGVzLgogICAgICBDYW4gYmUg c3dpdGNoZWQgb2ZmIGZvciBub3QgY29tcGlsaW5nIGFnYWluc3QgcnVudGlt ZSBsaWJyYXJ5LiAgKi8KLSAgaWYgKCFnbG9iYWwucGFyYW1zLmJldHRlckMK KyAgaWYgKGdsb2JhbC5wYXJhbXMudXNlTW9kdWxlSW5mbworICAgICAgJiYg TW9kdWxlOjptb2R1bGVpbmZvICE9IE5VTEwKICAgICAgICYmIGRlY2wtPmlk ZW50ICE9IElkZW50aWZpZXI6OmlkUG9vbCAoIl9fZW50cnlwb2ludCIpKQog ICAgIHsKICAgICAgIGlmIChtaS5jdG9ycyB8fCBtaS5jdG9yZ2F0ZXMpCmRp ZmYgLS1naXQgYS9nY2MvZC90b2lyLmNjIGIvZ2NjL2QvdG9pci5jYwppbmRl eCBlYmU3NjM4NjUwMC4uZjFiMmUwOWE5NGQgMTAwNjQ0Ci0tLSBhL2djYy9k L3RvaXIuY2MKKysrIGIvZ2NjL2QvdG9pci5jYwpAQCAtMTEyMCw3ICsxMTIw LDcgQEAgcHVibGljOgogICAgIEludGVyZmFjZURlY2xhcmF0aW9uICppZCA9 IGNkLT5pc0ludGVyZmFjZURlY2xhcmF0aW9uICgpOwogICAgIHRyZWUgYXJn ID0gYnVpbGRfZXhwcl9kdG9yIChzLT5leHApOwogCi0gICAgaWYgKCFmbGFn X2V4Y2VwdGlvbnMpCisgICAgaWYgKCFnbG9iYWwucGFyYW1zLnVzZUV4Y2Vw dGlvbnMpCiAgICAgICB7CiAJc3RhdGljIGludCB3YXJuZWQgPSAwOwogCWlm ICghd2FybmVkKQpkaWZmIC0tZ2l0IGEvZ2NjL2QvdHlwZWluZm8uY2MgYi9n Y2MvZC90eXBlaW5mby5jYwppbmRleCBkYWM2NmFjZGNkNC4uZmZhN2UyMzc4 NjUgMTAwNjQ0Ci0tLSBhL2djYy9kL3R5cGVpbmZvLmNjCisrKyBiL2djYy9k L3R5cGVpbmZvLmNjCkBAIC0yMjcsNiArMjI3LDEwIEBAIGNyZWF0ZV90aW5m b190eXBlcyAoTW9kdWxlICptb2QpCiAJCQkgIHB0cl90eXBlX25vZGUsIGRf dWludF90eXBlLCBwdHJfdHlwZV9ub2RlLAogCQkJICBhcnJheV90eXBlX25v ZGUsIHB0cl90eXBlX25vZGUsIHB0cl90eXBlX25vZGUsIE5VTEwpOwogCisg IC8qIElmIHRoZXJlJ3Mgbm8gT2JqZWN0IGNsYXNzIGRlZmluZWQsIHRoZW4g bmVpdGhlciBjYW4gVHlwZUluZm8gYmUuICAqLworICBpZiAoQ2xhc3NEZWNs YXJhdGlvbjo6b2JqZWN0ID09IE5VTEwpCisgICAgcmV0dXJuOworCiAgIC8q IENyZWF0ZSBhbGwgZnJvbnRlbmQgVHlwZUluZm8gY2xhc3NlcyBkZWNsYXJh dGlvbnMuICBXZSByZWx5IG9uIGFsbAogICAgICBleGlzdGluZywgZXZlbiBp ZiBvbmx5IGp1c3QgYXMgc3R1YnMuICAqLwogICBpZiAoIVR5cGU6OmR0eXBl aW5mbykKQEAgLTI4OSw2ICsyOTMsMjcgQEAgY3JlYXRlX3RpbmZvX3R5cGVz IChNb2R1bGUgKm1vZCkKIAkJCSAgICBDbGFzc0RlY2xhcmF0aW9uOjpvYmpl Y3QpOwogfQogCisvKiBSZXR1cm4gdHJ1ZSBpZiBUeXBlSW5mbyBjbGFzcyBU SU5GTyBpcyBhdmFpbGFibGUgaW4gdGhlIHJ1bnRpbWUgbGlicmFyeS4gICov CisKK2Jvb2wKK2hhdmVfdHlwZWluZm9fcCAoQ2xhc3NEZWNsYXJhdGlvbiAq dGluZm8pCit7CisgIC8qIFJ1bi10aW1lIHR5cGVpbmZvIGRpc2FibGVkIG9u IGNvbW1hbmQgbGluZS4gICovCisgIGlmICghZ2xvYmFsLnBhcmFtcy51c2VU eXBlSW5mbykKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgLyogQ2FuJ3QgbGF5 b3V0IFR5cGVJbmZvIGlmIHR5cGUgaXMgbm90IGRlY2xhcmVkLCBvciBpcyBh biBvcGFxdWUKKyAgICAgZGVjbGFyYXRpb24gaW4gdGhlIG9iamVjdCBtb2R1 bGUuICAqLworICBpZiAoIXRpbmZvIHx8ICF0aW5mby0+bWVtYmVycykKKyAg ICByZXR1cm4gZmFsc2U7CisKKyAgLyogVHlwZWluZm8gaXMgY29tcGlsZXIt Z2VuZXJhdGVkLiAgKi8KKyAgaWYgKHRpbmZvLT5zdG9yYWdlX2NsYXNzICYg U1RDdGVtcCkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgcmV0dXJuIHRydWU7 Cit9CisKIC8qIEltcGxlbWVudHMgdGhlIHZpc2l0b3IgaW50ZXJmYWNlIHRv IGJ1aWxkIHRoZSBUeXBlSW5mbyBsYXlvdXQgb2YgYWxsCiAgICBUeXBlSW5m b0RlY2xhcmF0aW9uIEFTVCBjbGFzc2VzIGVtaXR0ZWQgZnJvbSB0aGUgRCBG cm9udC1lbmQuCiAgICBBbGwgdmlzaXQgbWV0aG9kcyBhY2NlcHQgb25lIHBh cmFtZXRlciBELCB3aGljaCBob2xkcyB0aGUgZnJvbnRlbmQgQVNUCkBAIC0z MzgsNyArMzYzLDEyIEBAIGNsYXNzIFR5cGVJbmZvVmlzaXRvciA6IHB1Ymxp YyBWaXNpdG9yCiAgIHZvaWQgbGF5b3V0X2Jhc2UgKENsYXNzRGVjbGFyYXRp b24gKmNkKQogICB7CiAgICAgZ2NjX2Fzc2VydCAoY2QgIT0gTlVMTCk7Ci0g ICAgdGhpcy0+bGF5b3V0X2ZpZWxkIChidWlsZF9hZGRyZXNzIChnZXRfdnRh YmxlX2RlY2wgKGNkKSkpOworCisgICAgaWYgKGhhdmVfdHlwZWluZm9fcCAo Y2QpKQorICAgICAgdGhpcy0+bGF5b3V0X2ZpZWxkIChidWlsZF9hZGRyZXNz IChnZXRfdnRhYmxlX2RlY2wgKGNkKSkpOworICAgIGVsc2UKKyAgICAgIHRo aXMtPmxheW91dF9maWVsZCAobnVsbF9wb2ludGVyX25vZGUpOworCiAgICAg dGhpcy0+bGF5b3V0X2ZpZWxkIChudWxsX3BvaW50ZXJfbm9kZSk7CiAgIH0K IApAQCAtNDkwLDcgKzUyMCw3IEBAIHB1YmxpYzoKICAgICB0aGlzLT5sYXlv dXRfYmFzZSAoVHlwZTo6dHlwZWluZm9jb25zdCk7CiAKICAgICAvKiBUeXBl SW5mbyBmb3IgdGhlIG11dGFibGUgdHlwZS4gICovCi0gICAgdGhpcy0+bGF5 b3V0X2ZpZWxkIChidWlsZF90eXBlaW5mbyAodG0pKTsKKyAgICB0aGlzLT5s YXlvdXRfZmllbGQgKGJ1aWxkX3R5cGVpbmZvIChkLT5sb2MsIHRtKSk7CiAg IH0KIAogICAvKiBMYXlvdXQgb2YgVHlwZUluZm9fSW1tdXRhYmxlIGlzOgpA QCAtNTA3LDcgKzUzNyw3IEBAIHB1YmxpYzoKICAgICB0aGlzLT5sYXlvdXRf YmFzZSAoVHlwZTo6dHlwZWluZm9pbnZhcmlhbnQpOwogCiAgICAgLyogVHlw ZUluZm8gZm9yIHRoZSBtdXRhYmxlIHR5cGUuICAqLwotICAgIHRoaXMtPmxh eW91dF9maWVsZCAoYnVpbGRfdHlwZWluZm8gKHRtKSk7CisgICAgdGhpcy0+ bGF5b3V0X2ZpZWxkIChidWlsZF90eXBlaW5mbyAoZC0+bG9jLCB0bSkpOwog ICB9CiAKICAgLyogTGF5b3V0IG9mIFR5cGVJbmZvX1NoYXJlZCBpczoKQEAg LTUyNCw3ICs1NTQsNyBAQCBwdWJsaWM6CiAgICAgdGhpcy0+bGF5b3V0X2Jh c2UgKFR5cGU6OnR5cGVpbmZvc2hhcmVkKTsKIAogICAgIC8qIFR5cGVJbmZv IGZvciB0aGUgdW5zaGFyZWQgdHlwZS4gICovCi0gICAgdGhpcy0+bGF5b3V0 X2ZpZWxkIChidWlsZF90eXBlaW5mbyAodG0pKTsKKyAgICB0aGlzLT5sYXlv dXRfZmllbGQgKGJ1aWxkX3R5cGVpbmZvIChkLT5sb2MsIHRtKSk7CiAgIH0K IAogICAvKiBMYXlvdXQgb2YgVHlwZUluZm9fSW5vdXQgaXM6CkBAIC01NDEs NyArNTcxLDcgQEAgcHVibGljOgogICAgIHRoaXMtPmxheW91dF9iYXNlIChU eXBlOjp0eXBlaW5mb3dpbGQpOwogCiAgICAgLyogVHlwZUluZm8gZm9yIHRo ZSBtdXRhYmxlIHR5cGUuICAqLwotICAgIHRoaXMtPmxheW91dF9maWVsZCAo YnVpbGRfdHlwZWluZm8gKHRtKSk7CisgICAgdGhpcy0+bGF5b3V0X2ZpZWxk IChidWlsZF90eXBlaW5mbyAoZC0+bG9jLCB0bSkpOwogICB9CiAKICAgLyog TGF5b3V0IG9mIFR5cGVJbmZvX0VudW0gaXM6CkBAIC01NjEsNyArNTkxLDcg QEAgcHVibGljOgogICAgIHRoaXMtPmxheW91dF9iYXNlIChUeXBlOjp0eXBl aW5mb2VudW0pOwogCiAgICAgLyogVHlwZUluZm8gZm9yIGVudW0gbWVtYmVy cy4gICovCi0gICAgdHJlZSBtZW10eXBlID0gKGVkLT5tZW10eXBlKSA/IGJ1 aWxkX3R5cGVpbmZvIChlZC0+bWVtdHlwZSkKKyAgICB0cmVlIG1lbXR5cGUg PSAoZWQtPm1lbXR5cGUpID8gYnVpbGRfdHlwZWluZm8gKGQtPmxvYywgZWQt Pm1lbXR5cGUpCiAgICAgICA6IG51bGxfcG9pbnRlcl9ub2RlOwogICAgIHRo aXMtPmxheW91dF9maWVsZCAobWVtdHlwZSk7CiAKQEAgLTU5Myw3ICs2MjMs NyBAQCBwdWJsaWM6CiAgICAgdGhpcy0+bGF5b3V0X2Jhc2UgKFR5cGU6OnR5 cGVpbmZvcG9pbnRlcik7CiAKICAgICAvKiBUeXBlSW5mbyBmb3IgcG9pbnRl ci10byB0eXBlLiAgKi8KLSAgICB0aGlzLT5sYXlvdXRfZmllbGQgKGJ1aWxk X3R5cGVpbmZvICh0aS0+bmV4dCkpOworICAgIHRoaXMtPmxheW91dF9maWVs ZCAoYnVpbGRfdHlwZWluZm8gKGQtPmxvYywgdGktPm5leHQpKTsKICAgfQog CiAgIC8qIExheW91dCBvZiBUeXBlSW5mb19BcnJheSBpczoKQEAgLTYxMCw3 ICs2NDAsNyBAQCBwdWJsaWM6CiAgICAgdGhpcy0+bGF5b3V0X2Jhc2UgKFR5 cGU6OnR5cGVpbmZvYXJyYXkpOwogCiAgICAgLyogVHlwZUluZm8gZm9yIGFy cmF5IG9mIHR5cGUuICAqLwotICAgIHRoaXMtPmxheW91dF9maWVsZCAoYnVp bGRfdHlwZWluZm8gKHRpLT5uZXh0KSk7CisgICAgdGhpcy0+bGF5b3V0X2Zp ZWxkIChidWlsZF90eXBlaW5mbyAoZC0+bG9jLCB0aS0+bmV4dCkpOwogICB9 CiAKICAgLyogTGF5b3V0IG9mIFR5cGVJbmZvX1N0YXRpY0FycmF5IGlzOgpA QCAtNjI4LDcgKzY1OCw3IEBAIHB1YmxpYzoKICAgICB0aGlzLT5sYXlvdXRf YmFzZSAoVHlwZTo6dHlwZWluZm9zdGF0aWNhcnJheSk7CiAKICAgICAvKiBU eXBlSW5mbyBmb3IgYXJyYXkgb2YgdHlwZS4gICovCi0gICAgdGhpcy0+bGF5 b3V0X2ZpZWxkIChidWlsZF90eXBlaW5mbyAodGktPm5leHQpKTsKKyAgICB0 aGlzLT5sYXlvdXRfZmllbGQgKGJ1aWxkX3R5cGVpbmZvIChkLT5sb2MsIHRp LT5uZXh0KSk7CiAKICAgICAvKiBTdGF0aWMgYXJyYXkgbGVuZ3RoLiAgKi8K ICAgICB0aGlzLT5sYXlvdXRfZmllbGQgKHNpemVfaW50ICh0aS0+ZGltLT50 b0ludGVnZXIgKCkpKTsKQEAgLTY0OSwxMCArNjc5LDEwIEBAIHB1YmxpYzoK ICAgICB0aGlzLT5sYXlvdXRfYmFzZSAoVHlwZTo6dHlwZWluZm9hc3NvY2lh dGl2ZWFycmF5KTsKIAogICAgIC8qIFR5cGVJbmZvIGZvciB2YWx1ZSBvZiB0 eXBlLiAgKi8KLSAgICB0aGlzLT5sYXlvdXRfZmllbGQgKGJ1aWxkX3R5cGVp bmZvICh0aS0+bmV4dCkpOworICAgIHRoaXMtPmxheW91dF9maWVsZCAoYnVp bGRfdHlwZWluZm8gKGQtPmxvYywgdGktPm5leHQpKTsKIAogICAgIC8qIFR5 cGVJbmZvIGZvciBpbmRleCBvZiB0eXBlLiAgKi8KLSAgICB0aGlzLT5sYXlv dXRfZmllbGQgKGJ1aWxkX3R5cGVpbmZvICh0aS0+aW5kZXgpKTsKKyAgICB0 aGlzLT5sYXlvdXRfZmllbGQgKGJ1aWxkX3R5cGVpbmZvIChkLT5sb2MsIHRp LT5pbmRleCkpOwogICB9CiAKICAgLyogTGF5b3V0IG9mIFR5cGVJbmZvX1Zl Y3RvciBpczoKQEAgLTY2OSw3ICs2OTksNyBAQCBwdWJsaWM6CiAgICAgdGhp cy0+bGF5b3V0X2Jhc2UgKFR5cGU6OnR5cGVpbmZvdmVjdG9yKTsKIAogICAg IC8qIFR5cGVJbmZvIGZvciBlcXVpdmFsZW50IHN0YXRpYyBhcnJheS4gICov Ci0gICAgdGhpcy0+bGF5b3V0X2ZpZWxkIChidWlsZF90eXBlaW5mbyAodGkt PmJhc2V0eXBlKSk7CisgICAgdGhpcy0+bGF5b3V0X2ZpZWxkIChidWlsZF90 eXBlaW5mbyAoZC0+bG9jLCB0aS0+YmFzZXR5cGUpKTsKICAgfQogCiAgIC8q IExheW91dCBvZiBUeXBlSW5mb19GdW5jdGlvbiBpczoKQEAgLTY4Nyw3ICs3 MTcsNyBAQCBwdWJsaWM6CiAgICAgdGhpcy0+bGF5b3V0X2Jhc2UgKFR5cGU6 OnR5cGVpbmZvZnVuY3Rpb24pOwogCiAgICAgLyogVHlwZUluZm8gZm9yIGZ1 bmN0aW9uIHJldHVybiB2YWx1ZS4gICovCi0gICAgdGhpcy0+bGF5b3V0X2Zp ZWxkIChidWlsZF90eXBlaW5mbyAodGktPm5leHQpKTsKKyAgICB0aGlzLT5s YXlvdXRfZmllbGQgKGJ1aWxkX3R5cGVpbmZvIChkLT5sb2MsIHRpLT5uZXh0 KSk7CiAKICAgICAvKiBNYW5nbGVkIG5hbWUgb2YgZnVuY3Rpb24gZGVjbGFy YXRpb24uICAqLwogICAgIHRoaXMtPmxheW91dF9zdHJpbmcgKGQtPnRpbmZv LT5kZWNvKTsKQEAgLTcwOCw3ICs3MzgsNyBAQCBwdWJsaWM6CiAgICAgdGhp cy0+bGF5b3V0X2Jhc2UgKFR5cGU6OnR5cGVpbmZvZGVsZWdhdGUpOwogCiAg ICAgLyogVHlwZUluZm8gZm9yIGRlbGVnYXRlIHJldHVybiB2YWx1ZS4gICov Ci0gICAgdGhpcy0+bGF5b3V0X2ZpZWxkIChidWlsZF90eXBlaW5mbyAodGkt Pm5leHQpKTsKKyAgICB0aGlzLT5sYXlvdXRfZmllbGQgKGJ1aWxkX3R5cGVp bmZvIChkLT5sb2MsIHRpLT5uZXh0KSk7CiAKICAgICAvKiBNYW5nbGVkIG5h bWUgb2YgZGVsZWdhdGUgZGVjbGFyYXRpb24uICAqLwogICAgIHRoaXMtPmxh eW91dF9zdHJpbmcgKGQtPnRpbmZvLT5kZWNvKTsKQEAgLTEwMzgsMTIgKzEw NjgsMTIgQEAgcHVibGljOgogICAgIGlmIChnbG9iYWwucGFyYW1zLmlzNjRi aXQpCiAgICAgICB7CiAJLyogVHlwZUluZm8gbV9hcmcxOyAgKi8KLQl0cmVl IGFyZzF0eXBlID0gKHNkLT5hcmcxdHlwZSkgPyBidWlsZF90eXBlaW5mbyAo c2QtPmFyZzF0eXBlKQorCXRyZWUgYXJnMXR5cGUgPSAoc2QtPmFyZzF0eXBl KSA/IGJ1aWxkX3R5cGVpbmZvIChkLT5sb2MsIHNkLT5hcmcxdHlwZSkKIAkg IDogbnVsbF9wb2ludGVyX25vZGU7CiAJdGhpcy0+bGF5b3V0X2ZpZWxkIChh cmcxdHlwZSk7CiAKIAkvKiBUeXBlSW5mbyBtX2FyZzI7ICAqLwotCXRyZWUg YXJnMnR5cGUgPSAoc2QtPmFyZzJ0eXBlKSA/IGJ1aWxkX3R5cGVpbmZvIChz ZC0+YXJnMnR5cGUpCisJdHJlZSBhcmcydHlwZSA9IChzZC0+YXJnMnR5cGUp ID8gYnVpbGRfdHlwZWluZm8gKGQtPmxvYywgc2QtPmFyZzJ0eXBlKQogCSAg OiBudWxsX3BvaW50ZXJfbm9kZTsKIAl0aGlzLT5sYXlvdXRfZmllbGQgKGFy ZzJ0eXBlKTsKICAgICAgIH0KQEAgLTEwNzUsNyArMTEwNSw3IEBAIHB1Ymxp YzoKICAgICAgIHsKIAlQYXJhbWV0ZXIgKmFyZyA9ICgqdGktPmFyZ3VtZW50 cylbaV07CiAJQ09OU1RSVUNUT1JfQVBQRU5EX0VMVCAoZWxtcywgc2l6ZV9p bnQgKGkpLAotCQkJCWJ1aWxkX3R5cGVpbmZvIChhcmctPnR5cGUpKTsKKwkJ CQlidWlsZF90eXBlaW5mbyAoZC0+bG9jLCBhcmctPnR5cGUpKTsKICAgICAg IH0KICAgICB0cmVlIGN0b3IgPSBidWlsZF9jb25zdHJ1Y3RvciAoYnVpbGRf Y3R5cGUgKHNhdHlwZSksIGVsbXMpOwogICAgIHRyZWUgZGVjbCA9IGJ1aWxk X2FydGlmaWNpYWxfZGVjbCAoVFJFRV9UWVBFIChjdG9yKSwgY3Rvcik7CkBA IC0xMzExLDggKzEzNDEsMjAgQEAgZ2V0X2NsYXNzaW5mb19kZWNsIChDbGFz c0RlY2xhcmF0aW9uICpkZWNsKQogLyogUmV0dXJucyB0eXBlaW5mbyByZWZl cmVuY2UgZm9yIFRZUEUuICAqLwogCiB0cmVlCi1idWlsZF90eXBlaW5mbyAo VHlwZSAqdHlwZSkKK2J1aWxkX3R5cGVpbmZvIChjb25zdCBMb2MgJmxvYywg VHlwZSAqdHlwZSkKIHsKKyAgaWYgKCFnbG9iYWwucGFyYW1zLnVzZVR5cGVJ bmZvKQorICAgIHsKKyAgICAgIHN0YXRpYyBpbnQgd2FybmVkID0gMDsKKwor ICAgICAgaWYgKCF3YXJuZWQpCisJeworCSAgZXJyb3JfYXQgKG1ha2VfbG9j YXRpb25fdCAobG9jKSwKKwkJICAgICIlPG9iamVjdC5UeXBlSW5mbyU+IGNh bm5vdCBiZSB1c2VkIHdpdGggLWZuby1ydHRpIik7CisJICB3YXJuZWQgPSAx OworCX0KKyAgICB9CisKICAgZ2NjX2Fzc2VydCAodHlwZS0+dHkgIT0gVGVy cm9yKTsKICAgY3JlYXRlX3R5cGVpbmZvICh0eXBlLCBOVUxMKTsKICAgcmV0 dXJuIGJ1aWxkX2FkZHJlc3MgKGdldF90eXBlaW5mb19kZWNsICh0eXBlLT52 dGluZm8pKTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2RjLnRlc3Qv ZmFpbF9jb21waWxhdGlvbi9mYWlsMjQ1Ni5kIGIvZ2NjL3Rlc3RzdWl0ZS9n ZGMudGVzdC9mYWlsX2NvbXBpbGF0aW9uL2ZhaWwyNDU2LmQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU4Y2Y1YWJiYmY1Ci0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZGMudGVzdC9mYWls X2NvbXBpbGF0aW9uL2ZhaWwyNDU2LmQKQEAgLTAsMCArMSwxMTAgQEAKKy8q CitURVNUX09VVFBVVDoKKy0tLQorZmFpbF9jb21waWxhdGlvbi9mYWlsMjQ1 Ni5kKDE0KTogRXJyb3I6IGNhbm5vdCBwdXQgYHNjb3BlKHN1Y2Nlc3MpYCBz dGF0ZW1lbnQgaW5zaWRlIGZpbmFsbHkgYmxvY2sKKy0tLQorKi8KK3ZvaWQg dGVzdF9zdWNjZXNzKCkKK3sKKyAgICB0cnkKKyAgICB7CisgICAgfQorICAg IGZpbmFsbHkKKyAgICB7CisgICAgICAgIHNjb3BlKHN1Y2Nlc3MpIHt9ICAg ICAgICAgICAvLyBORworICAgIH0KK30KKworLyoKK1RFU1RfT1VUUFVUOgor LS0tCitmYWlsX2NvbXBpbGF0aW9uL2ZhaWwyNDU2LmQoMzEpOiBFcnJvcjog Y2Fubm90IHB1dCBgc2NvcGUoZmFpbHVyZSlgIHN0YXRlbWVudCBpbnNpZGUg ZmluYWxseSBibG9jaworLS0tCisqLwordm9pZCB0ZXN0X2ZhaWx1cmUoKQor eworICAgIHRyeQorICAgIHsKKyAgICB9CisgICAgZmluYWxseQorICAgIHsK KyAgICAgICAgc2NvcGUoZmFpbHVyZSkge30gICAgICAgICAgIC8vIE5HCisg ICAgfQorfQorCisvKgorVEVTVF9PVVRQVVQ6CistLS0KKy0tLQorKi8KK3Zv aWQgdGVzdF9leGl0KCkKK3sKKyAgICB0cnkKKyAgICB7CisgICAgfQorICAg IGZpbmFsbHkKKyAgICB7CisgICAgICAgIHNjb3BlKGV4aXQpIHt9ICAgICAg ICAgICAgICAvLyBPSworICAgIH0KK30KKworLyoKK1RFU1RfT1VUUFVUOgor LS0tCitmYWlsX2NvbXBpbGF0aW9uL2ZhaWwyNDU2LmQoNjQpOiBFcnJvcjog Y2Fubm90IHB1dCBgc2NvcGUoc3VjY2VzcylgIHN0YXRlbWVudCBpbnNpZGUg YHNjb3BlKHN1Y2Nlc3MpYAorZmFpbF9jb21waWxhdGlvbi9mYWlsMjQ1Ni5k KDY1KTogRXJyb3I6IGNhbm5vdCBwdXQgYHNjb3BlKGZhaWx1cmUpYCBzdGF0 ZW1lbnQgaW5zaWRlIGBzY29wZShzdWNjZXNzKWAKK2ZhaWxfY29tcGlsYXRp b24vZmFpbDI0NTYuZCg3OCk6IEVycm9yOiBjYW5ub3QgcHV0IGBzY29wZShz dWNjZXNzKWAgc3RhdGVtZW50IGluc2lkZSBgc2NvcGUoZXhpdClgCitmYWls X2NvbXBpbGF0aW9uL2ZhaWwyNDU2LmQoNzkpOiBFcnJvcjogY2Fubm90IHB1 dCBgc2NvcGUoZmFpbHVyZSlgIHN0YXRlbWVudCBpbnNpZGUgYHNjb3BlKGV4 aXQpYAorLS0tCisqLwordm9pZCB0ZXN0MjQ1NmEoKQoreworICAgIHNjb3Bl KHN1Y2Nlc3MpCisgICAgeworICAgICAgICBzY29wZShzdWNjZXNzKSB7fSAg IC8vIE5HCisgICAgICAgIHNjb3BlKGZhaWx1cmUpIHt9ICAgLy8gTkcKKyAg ICAgICAgc2NvcGUoZXhpdCkge30gICAgICAvLyBPSworICAgIH0KKworICAg IHNjb3BlKGZhaWx1cmUpCisgICAgeworICAgICAgICBzY29wZShzdWNjZXNz KSB7fSAgIC8vIE9LCisgICAgICAgIHNjb3BlKGZhaWx1cmUpIHt9ICAgLy8g T0sKKyAgICAgICAgc2NvcGUoZXhpdCkge30gICAgICAvLyBPSworICAgIH0K KworICAgIHNjb3BlKGV4aXQpCisgICAgeworICAgICAgICBzY29wZShzdWNj ZXNzKSB7fSAgIC8vIE5HCisgICAgICAgIHNjb3BlKGZhaWx1cmUpIHt9ICAg Ly8gTkcKKyAgICAgICAgc2NvcGUoZXhpdCkge30gICAgICAvLyBPSworICAg IH0KK30KKworLyoKK1RFU1RfT1VUUFVUOgorLS0tCitmYWlsX2NvbXBpbGF0 aW9uL2ZhaWwyNDU2LmQoOTYpOiBFcnJvcjogY2Fubm90IHB1dCBjYXRjaCBz dGF0ZW1lbnQgaW5zaWRlIGBzY29wZShzdWNjZXNzKWAKK2ZhaWxfY29tcGls YXRpb24vZmFpbDI0NTYuZCgxMDgpOiBFcnJvcjogY2Fubm90IHB1dCBjYXRj aCBzdGF0ZW1lbnQgaW5zaWRlIGBzY29wZShleGl0KWAKKy0tLQorKi8KK3Zv aWQgdGVzdDI0NTZiKCkKK3sKKyAgICBzY29wZShzdWNjZXNzKQorICAgIHsK KyAgICAgICAgdHJ5IHt9CisgICAgICAgIGNhdGNoIChUaHJvd2FibGUpIHt9 ICAgIC8vIE5HCisgICAgfQorCisgICAgc2NvcGUoZmFpbHVyZSkKKyAgICB7 CisgICAgICAgIHRyeSB7fQorICAgICAgICBjYXRjaCAoVGhyb3dhYmxlKSB7 fSAgICAvLyBPSworICAgIH0KKworICAgIHNjb3BlKGV4aXQpCisgICAgewor ICAgICAgICB0cnkge30KKyAgICAgICAgY2F0Y2ggKFRocm93YWJsZSkge30g ICAgLy8gTkcKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2dkYy50ZXN0L2ZhaWxfY29tcGlsYXRpb24vdGVzdDE4MzEyLmQgYi9nY2Mv dGVzdHN1aXRlL2dkYy50ZXN0L2ZhaWxfY29tcGlsYXRpb24vdGVzdDE4MzEy LmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmUz NTRhMTFlYWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n ZGMudGVzdC9mYWlsX2NvbXBpbGF0aW9uL3Rlc3QxODMxMi5kCkBAIC0wLDAg KzEsMTUgQEAKKy8qCitSRVFVSVJFRF9BUkdTOiAtYmV0dGVyQworVEVTVF9P VVRQVVQ6CistLS0KK2ZhaWxfY29tcGlsYXRpb24vdGVzdDE4MzEyLmQoMTQp OiBFcnJvcjogYXJyYXkgY29uY2F0ZW5hdGlvbiBvZiBleHByZXNzaW9uIGAi WyIgfiBzIH4gIl0iYCByZXF1aXJlcyB0aGUgR0Mgd2hpY2ggaXMgbm90IGF2 YWlsYWJsZSB3aXRoIC1iZXR0ZXJDCistLS0KKyovCisKKy8vIGh0dHBzOi8v aXNzdWVzLmRsYW5nLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMTIKKworZXh0 ZXJuIChDKSB2b2lkIG1haW4oKQoreworICAgIHNjb3BlIHN0cmluZyBzOwor ICAgIHMgPSAiWyIgfiBzIH4gIl0iOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nZGMudGVzdC9nZGMtdGVzdC5leHAgYi9nY2MvdGVzdHN1aXRl L2dkYy50ZXN0L2dkYy10ZXN0LmV4cAppbmRleCBhYjhhNGEzY2ZiZC4uY2U1 NTc1YzA3MWEgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2RjLnRlc3Qv Z2RjLXRlc3QuZXhwCisrKyBiL2djYy90ZXN0c3VpdGUvZ2RjLnRlc3QvZ2Rj LXRlc3QuZXhwCkBAIC0zOSw2ICszOSw5IEBAIHByb2MgZ2RjLWNvbnZlcnQt YXJncyB7IGFyZ3MgfSB7CiAJfSBlbHNlaWYgW3N0cmluZyBtYXRjaCAiLWFs bGluc3QiICRhcmddIHsKIAkgICAgbGFwcGVuZCBvdXQgIi1mYWxsLWluc3Rh bnRpYXRpb25zIgogCisJfSBlbHNlaWYgW3N0cmluZyBtYXRjaCAiLWJldHRl ckMiICRhcmddIHsKKwkgICAgbGFwcGVuZCBvdXQgIi1mbm8tZHJ1bnRpbWUi CisKIAl9IGVsc2VpZiB7IFtzdHJpbmcgbWF0Y2ggIi1ib3VuZHNjaGVjayIg JGFyZ10KIAkJIHx8IFtzdHJpbmcgbWF0Y2ggIi1ib3VuZHNjaGVjaz1vbiIg JGFyZ10gfSB7CiAJICAgIGxhcHBlbmQgb3V0ICItZmJvdW5kcy1jaGVjayIK --000000000000c464f20587382d02--