From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1681 invoked by alias); 8 Feb 2012 09:34:17 -0000 Received: (qmail 31708 invoked by uid 22791); 8 Feb 2012 09:34:10 -0000 X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,TW_DB,TW_XZ,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-qy0-f169.google.com (HELO mail-qy0-f169.google.com) (209.85.216.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 08 Feb 2012 09:33:47 +0000 Received: by qcsd16 with SMTP id d16so203668qcs.0 for ; Wed, 08 Feb 2012 01:33:47 -0800 (PST) Received: by 10.224.184.79 with SMTP id cj15mr25939101qab.78.1328693626966; Wed, 08 Feb 2012 01:33:46 -0800 (PST) MIME-Version: 1.0 Received: by 10.224.184.79 with SMTP id cj15mr25939093qab.78.1328693626869; Wed, 08 Feb 2012 01:33:46 -0800 (PST) Received: by 10.224.73.8 with HTTP; Wed, 8 Feb 2012 01:33:46 -0800 (PST) In-Reply-To: References: Date: Wed, 08 Feb 2012 09:34:00 -0000 Message-ID: Subject: Re: [RFC] A new command 'explore' From: Siva Chandra To: gdb-patches@sourceware.org X-System-Of-Record: true Content-Type: multipart/mixed; boundary=20cf30363f35a5187304b870971a X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-02/txt/msg00099.txt.bz2 --20cf30363f35a5187304b870971a Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Content-length: 3541 Hello, I have not yet seen anything about a policy on contributions implemented in extension languages. However, I have now implemented the 'explore' command in C. The patch is attached. I will add documentation after the basics of this patch are approved. 2012-02-08 Siva Chandra =A0 =A0 =A0 =A0 New command 'explore' which helps explore values in scope. =A0 =A0 =A0 =A0 * explore.c: Implemention of the 'explore' command. =A0 =A0 =A0 =A0 * Makefile.in: Add rules for compiling and linked explore.c. =A0 =A0 =A0 =A0 * testsuite/gdb.base/explore.c: C program used for testing =A0 =A0 =A0 =A0 the new 'explore' command. =A0 =A0 =A0 =A0 * testsuite/gdb.base/explore.exp: Tests for the new 'explor= e' =A0 =A0 =A0 =A0 command. =A0 =A0 =A0 =A0 * testsuite/gdb.base/Makefile.in: Add explore to EXECUTABLES To recollect, the idea behind the 'explore' command is as follows: Often, when exploring a new code base which has complicated data structures, we would like to explore the data structure values top-down. For example, if a struct is part of a struct/union is part of another struct/union, then we typically explore the top-level struct/union in the first pass. In subsequent passes, we might want to go deeper by exploring the structs/unions embedded in the top level struct. We might infact want to explore all the way up to the leaf values. The =91explore=92 command enables a user to do such a top-down exploration of data structures interactively. Not only values, even types can be explored in a similar fashion. Example of value exploration: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D (gdb) explore cs The value of 'cs' is of type 'struct ComplexStruct' with the following fiel= ds: s =3D u =3D sa =3D Enter the field number of choice: 2 'cs.sa' is an array of elements of type 'SS'. Enter the index you want to explore in 'cs.sa': 1 The value of '(cs.sa)[1]' is of type 'SS' which is a typedef of type 'struct SimpleStruct'. The value of '(cs.sa)[1]' is of type 'struct SimpleStruct' with the following fields: a =3D 1 .. (Value of type 'int') d =3D 11.1 .. (Value of type 'double') Press enter to return to parent value: Returning to parent value... 'cs.sa' is an array of elements of type 'SS'. Enter the index you want to explore in 'cs.sa': Returning to parent value... The value of 'cs' is of type 'struct ComplexStruct' with the following fiel= ds: s =3D u =3D sa =3D Enter the field number of choice: (gdb) Example of type exploration: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D (gdb) explore struct SimpleStruct 'struct SimpleStruct' has the following fields: a =3D d =3D Enter the field number of choice: 1 field 'd' of 'struct SimpleStruct' is of a scalar type 'double'. Press enter to return to enclosing type: Returning to parent type... 'struct SimpleStruct' has the following fields: a =3D d =3D Enter the field number of choice: (gdb) Thanks, Siva Chandra --20cf30363f35a5187304b870971a Content-Type: text/plain; charset=US-ASCII; name="c_explore_command_patch_v1.txt" Content-Disposition: attachment; filename="c_explore_command_patch_v1.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gye2fiwi1 Content-length: 68747 ZGlmZiAtcnVwTiBzcmMvZ2RiL2V4cGxvcmUuYyBzcmNfZXhwbG9yZS9zcmMv Z2RiL2V4cGxvcmUuYwotLS0gc3JjL2dkYi9leHBsb3JlLmMJMTk3MC0wMS0w MSAwNTozMDowMC4wMDAwMDAwMDAgKzA1MzAKKysrIHNyY19leHBsb3JlL3Ny Yy9nZGIvZXhwbG9yZS5jCTIwMTItMDItMDggMTI6MDY6MzAuMTA2MDcxMTMx ICswNTMwCkBAIC0wLDAgKzEsMTAxMCBAQAorLyogSW1wbGVtZW50YXRpb24g b2YgdGhlICdleHBsb3JlJyBjb21tYW5kLgorCisgICBDb3B5cmlnaHQgKEMp IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KKworI2luY2x1ZGUgImRlZnMuaCIKKworLyogRm9yIGRvbWFp bl9lbnVtICovCisjaW5jbHVkZSAic3ltdGFiLmgiCisKKyNpbmNsdWRlICJh cmNoLXV0aWxzLmgiCisjaW5jbHVkZSAiY29tbWFuZC5oIgorI2luY2x1ZGUg ImV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCisjaW5j bHVkZSAiZ2RiY21kLmgiCisjaW5jbHVkZSAiZ2RidHlwZXMuaCIKKyNpbmNs dWRlICJsYW5ndWFnZS5oIgorI2luY2x1ZGUgInVpLWZpbGUuaCIKKyNpbmNs dWRlICJ2YWx1ZS5oIgorI2luY2x1ZGUgInZhbHByaW50LmgiCisKK3N0YXRp YyB2b2lkIGV4cGxvcmVfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqLCBjb25zdCBj aGFyICosIGludCk7CitzdGF0aWMgdm9pZCBleHBsb3JlX3R5cGUgKHN0cnVj dCB0eXBlICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKworLyogRGlmZmVyZW50 IHR5cGVzIG9mIGV4cGxvcmF0aW9uLiAgKi8KKworZW51bSBleHBsb3JhdGlv bl90eXBlCit7CisgIC8qIEZvciB2YWx1ZSBleHBsb3JhdGlvbi4gICovCisg IFZBTFVFX0VYUExPUkFUSU9OID0gMCwKKworICAvKiBGb3IgdHlwZSBleHBs b3JhdGlvbi4gICovCisgIFRZUEVfRVhQTE9SQVRJT04gPSAxCit9OworCisv KiBSZXR1cm4gMSBpZiBTVFIgaXMgYWxsIHNwYWNlcy4gTyBvdGhlcndpc2Uu ICAqLworCitzdGF0aWMgaW50Citpc19hbGxfc3BhY2VzIChjb25zdCBjaGFy ICpzdHIpCit7CisgIGludCBpOworICBpbnQgbGVuID0gc3RybGVuIChzdHIp OworCisgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkKKyAgICB7CisgICAg ICBpZiAoc3RyW2ldICE9ICcgJykKKyAgICAgICAgeworICAgICAgICAgIHJl dHVybiAwOworICAgICAgICB9CisgICAgfQorCisgIHJldHVybiAxOworfQor CitzdGF0aWMgdm9pZAorc3RyaXBfbGVhZGluZ19zcGFjZXMgKGNoYXIgKipz dHJfcHRyKQoreworICBjaGFyICpzdHIgPSAqc3RyX3B0cjsKKyAgZm9yICg7 ICpzdHIgIT0gJ1wwJzsgc3RyKyspCisgICAgeworICAgICAgaWYgKCpzdHIg IT0gJyAnKQorICAgICAgICB7CisgICAgICAgICAgKnN0cl9wdHIgPSBzdHI7 CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCisv KiBQcm9tcHQgdGhlIHVzZXIgdG8gcmV0dXJuIHRoZSBzdGF0ZSBvZiBleHBs b3JhdGlvbiB0byB0aGUKKyAgIHBhcmVudCB2YWx1ZS4gVXNlZCBpbiB2YWx1 ZSBleHBsb3JhdGlvbi4gICovCisKK3N0YXRpYyB2b2lkCityZXR1cm5fdG9f cGFyZW50X3ZhbHVlX3Byb21wdCAodm9pZCkKK3sKKyAgeGZyZWUgKGdkYl9y ZWFkbGluZSAoXygiUHJlc3MgZW50ZXIgdG8gcmV0dXJuIHRvIHBhcmVudCB2 YWx1ZTogIikpKTsKKyAgcHJpbnRmX2ZpbHRlcmVkICgiXG4iKTsKK30KKwor LyogUHJvbXB0IHRoZSB1c2VyIHRvIHJldHVybiB0aGUgc3RhdGUgb2YgZXhw bG9yYXRpb24gdG8gdGhlCisgICBlbmNsb3NpbmcvcGFyZW50IHR5cGUuIFVz ZWQgaW4gdHlwZSBleHBsb3JhdGlvbi4gICovCisKK3N0YXRpYyB2b2lkCity ZXR1cm5fdG9fcGFyZW50X3R5cGVfcHJvbXB0ICh2b2lkKQoreworICB4ZnJl ZSAoZ2RiX3JlYWRsaW5lIChfKCJQcmVzcyBlbnRlciB0byByZXR1cm4gdG8g ZW5jbG9zaW5nIHR5cGU6ICIpKSk7CisgIHByaW50Zl9maWx0ZXJlZCAoIlxu Iik7Cit9CisKKy8qIFByaW50IGEgbWVzc2FnZSBmb3IgdGhlIHVzZXIgaW5m b3JtaW5nIHRoYXQgdGhlIHRoZSBzdGF0ZSBvZgorICAgZXhwbG9yYXRpb24g aXMgbW92aW5nIHRvIHRoZSBwYXJlbnQgdmFsdWUuICAqLworCitzdGF0aWMg dm9pZAorcmV0dXJuX3RvX3BhcmVudF92YWx1ZSAodm9pZCkKK3sKKyAgcHJp bnRmX2ZpbHRlcmVkIChfKCJSZXR1cm5pbmcgdG8gcGFyZW50IHZhbHVlLi4u XG4iKSk7Cit9CisKKy8qIFByaW50IGEgbWVzc2FnZSBmb3IgdGhlIHVzZXIg aW5mb3JtaW5nIHRoYXQgdGhlIHRoZSBzdGF0ZSBvZgorICAgZXhwbG9yYXRp b24gaXMgbW92aW5nIHRvIHRoZSBwYXJlbnQvZW5jbG9zaW5nIHR5cGUuICAq LworCitzdGF0aWMgdm9pZAorcmV0dXJuX3RvX3BhcmVudF90eXBlICh2b2lk KQoreworICBwcmludGZfZmlsdGVyZWQgKF8oIlJldHVybmluZyB0byBwYXJl bnQgdHlwZS4uLlxuIikpOworfQorCisvKiBSZXRydW4gdGhlIHN0cmluZyBy ZXByZXNlbnRhdGlvbiBvZiBWQUwuIFRoZSByZXR1cm5lZCB2YWx1ZQorICAg c2hvdWxkIGJlIGNsZWFuZWQgdXAgYWZ0ZXIgdXNlLiAgKi8KKworc3RhdGlj IGNoYXIgKgorZ2V0X3ZhbHVlX3N0cmluZyAoc3RydWN0IHZhbHVlICp2YWwp Cit7CisgIHN0cnVjdCB1aV9maWxlICptZW1fZmlsZSA9IG1lbV9maWxlb3Bl biAoKTsKKyAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKKyAg Y2hhciAqdmFsX3N0cmluZzsKKworICBnZXRfdXNlcl9wcmludF9vcHRpb25z ICgmb3B0cyk7CisgIGNvbW1vbl92YWxfcHJpbnQgKHZhbCwgbWVtX2ZpbGUs IDAsICZvcHRzLCBjdXJyZW50X2xhbmd1YWdlKTsKKyAgdmFsX3N0cmluZyA9 IHVpX2ZpbGVfeHN0cmR1cCAobWVtX2ZpbGUsIE5VTEwpOworICAKKyAgdWlf ZmlsZV9kZWxldGUgKG1lbV9maWxlKTsKKyAgcmV0dXJuIHZhbF9zdHJpbmc7 Cit9CisKKy8qIFJldHVybiB0aGUgdHlwZSBuYW1lIG9mIFZBTF9UWVBFLiBU aGUgcmV0dXJuZWQgdmFsdWUgc2hvdWxkIGJlIGNsZWFuZWQgdXAKKyAgIGFm dGVyIHVzZS4gICovCisKK3N0YXRpYyBjaGFyICoKK2dldF90eXBlX25hbWUg KHN0cnVjdCB0eXBlICp2YWxfdHlwZSkKK3sKKyAgc3RydWN0IHVpX2ZpbGUg Km1lbV9maWxlID0gbWVtX2ZpbGVvcGVuICgpOworICBjaGFyICp0eXBlX25h bWU7CisKKyAgTEFfUFJJTlRfVFlQRSAodmFsX3R5cGUsICIiLCBtZW1fZmls ZSwgMCwgMCk7CisgIHR5cGVfbmFtZSA9IHVpX2ZpbGVfeHN0cmR1cCAobWVt X2ZpbGUsIE5VTEwpOworCisgIHVpX2ZpbGVfZGVsZXRlIChtZW1fZmlsZSk7 CisgIHJldHVybiB0eXBlX25hbWU7Cit9CisKKy8qIEFkZCBwYXJlbnRoZXNl cyB0byBhbiBFWFBfU1RSIGlmIHJlcXVpcmVkLiBUaGUgYWRkZWQgcGFyZW50 aGVzaXMKKyAgIHNlcnZlcyBhcyBhIGd1YXJkIHdoaWNoIGVuc3VyZXMgcHJv cGVyIG9wZXJhdG9yIHByZWNlZGVuY2Ugd2hlbiwgZm9yCisgICBleGFtcGxl LCBkZXJlZmVyZW5jaW5nIHRoZSB2YWx1ZSBvZiB3aGljaCBFWFBfU1RSIGV2 YWx1YXRlcyB0by4gVGhlCisgICByZXR1cm5lZCB2YWx1ZSBzaG91bGQgYmUg Y2xlYW5lZCB1cCBhZnRlciB1c2UuICAqLworCitzdGF0aWMgY2hhciAqCitn dWFyZF9leHBfc3RyIChjb25zdCBjaGFyICpleHBfc3RyKQoreworICBpbnQg bGVuID0gc3RybGVuIChleHBfc3RyKTsKKyAgaW50IGksIGd1YXJkID0gMDsK KyAgY2hhciAqbmV3X2V4cDsKKworICBpZiAoZXhwX3N0clswXSA9PSAnKCcg JiYgZXhwX3N0cltsZW4gLSAxXSA9PSAnKScpCisgICAgeworICAgICAgOwor ICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBs ZW47IGkrKykKKyAgICAgICAgeworICAgICAgICAgIGNoYXIgYyA9IGV4cF9z dHJbaV07CisgICAgICAgICAgaWYgKGMgPT0gJ18nIHx8ICgnYScgPD0gYyAm JiBjIDw9ICd6JykgfHwgKCdBJyA8PSBjICYmIGMgPD0gJ1onKQorICAgICAg ICAgICAgICB8fCAoJzAnIDw9IGMgJiYgYyA8PSAnOScpKQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICA7CisgICAgICAgICAgICB9CisgICAgICAg ICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBndWFyZCA9 IDE7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg ICAgICB9CisgICAgfQorCisgIGlmIChndWFyZCkKKyAgICB7CisgICAgICBu ZXdfZXhwID0geHN0cnByaW50ZiAoXygiKCVzKSIpLCBleHBfc3RyKTsKKyAg ICB9CisgIGVsc2UKKyAgICB7CisgICAgICBuZXdfZXhwID0geHN0cnByaW50 ZiAoXygiJXMiKSwgZXhwX3N0cik7CisgICAgfQorCisgIHJldHVybiBuZXdf ZXhwOworfQorCisvKiBSZXR1cm4gMSBpZiBWQUxfVFlQRSBpcyBhIHNjYWxh ciB0eXBlLCAwIG90aGVyd2lzZS4gICovCisKK3N0YXRpYyBpbnQKK2lzX3Nj YWxhcl90eXBlIChzdHJ1Y3QgdHlwZSAqdmFsX3R5cGUpCit7CisgIHN3aXRj aCAoVFlQRV9DT0RFICh2YWxfdHlwZSkpCisgICAgeworICAgIGNhc2UgVFlQ RV9DT0RFX0lOVDoKKyAgICBjYXNlIFRZUEVfQ09ERV9GTFQ6CisgICAgY2Fz ZSBUWVBFX0NPREVfQ0hBUjoKKyAgICBjYXNlIFRZUEVfQ09ERV9CT09MOgor ICAgIGNhc2UgVFlQRV9DT0RFX0VOVU06CisgICAgICByZXR1cm4gMTsKKyAg ICBkZWZhdWx0OgorICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCisvKiBF eHBsb3JlIHNjYWxhciB2YWx1ZS4gICovCisKK3N0YXRpYyBpbnQKK2V4cGxv cmVfc2NhbGFyX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbCwgY29uc3QgY2hh ciAqZXhwX3N0ciwgaW50IGlzX2NoaWxkKQoreworICBzdHJ1Y3QgY2xlYW51 cCAqY2xlYW51cF9vYmogPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwg TlVMTCk7CisKKyAgY2hhciAqdHlwZV9uYW1lID0gZ2V0X3R5cGVfbmFtZSAo dmFsdWVfdHlwZSAodmFsKSk7CisgIGNoYXIgKnZhbF9zdHIgPSBnZXRfdmFs dWVfc3RyaW5nICh2YWwpOworICBtYWtlX2NsZWFudXAgKHhmcmVlLCB0eXBl X25hbWUpOworICBtYWtlX2NsZWFudXAgKHhmcmVlLCB2YWxfc3RyKTsKKwor ICBwcmludGZfZmlsdGVyZWQgKF8oIiclcycgaXMgYSBzY2FsYXIgdmFsdWUg b2YgdHlwZSAnJXMnLlxuIiksIGV4cF9zdHIsCisgICAgICAgICAgICAgICAg ICAgdHlwZV9uYW1lKTsKKyAgcHJpbnRmX2ZpbHRlcmVkIChfKCIlcyA9ICVz XG4iKSwgZXhwX3N0ciwgdmFsX3N0cik7CisKKyAgaWYgKGlzX2NoaWxkKQor ICAgIHsKKyAgICAgIHJldHVybl90b19wYXJlbnRfdmFsdWVfcHJvbXB0ICgp OworICAgICAgcmV0dXJuX3RvX3BhcmVudF92YWx1ZSAoKTsKKyAgICB9CisK KyAgZG9fY2xlYW51cHMgKGNsZWFudXBfb2JqKTsKKyAgcmV0dXJuIDA7Cit9 CisKKy8qIEV4cGxvcmUgc2NhbGFyIHR5cGUuICAqLworCitzdGF0aWMgaW50 CitleHBsb3JlX3NjYWxhcl90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29u c3QgY2hhciAqcGF0aCwgaW50IGlzX2NoaWxkKQoreworICBpZiAoaXNfY2hp bGQpCisgICAgeworICAgICAgY2hhciAqdHlwZV9uYW1lID0gZ2V0X3R5cGVf bmFtZSAodHlwZSk7CisgICAgICBwcmludGZfZmlsdGVyZWQgKF8oIiVzIGlz IG9mIGEgc2NhbGFyIHR5cGUgJyVzJy5cbiIpLCBwYXRoLCB0eXBlX25hbWUp OworICAgICAgcmV0dXJuX3RvX3BhcmVudF90eXBlX3Byb21wdCAoKTsKKyAg ICAgIHJldHVybl90b19wYXJlbnRfdHlwZSAoKTsKKworICAgICAgeGZyZWUg KHR5cGVfbmFtZSk7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgcHJp bnRmX2ZpbHRlcmVkIChfKCInJXMnIGlzIG9mIGEgc2NhbGFyIHR5cGUuXG4i KSwgcGF0aCk7CisgICAgfQorCisgIHJldHVybiAwOworfQorCisvKiBFeHBs b3JlIHBvaW50ZXIgdmFsdWUuICAqLworCitzdGF0aWMgaW50CitleHBsb3Jl X3BvaW50ZXJfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsLCBjb25zdCBjaGFy ICpleHBfc3RyLCBpbnQgaXNfY2hpbGQpCit7CisgIHN0cnVjdCB2YWx1ZSAq ZGVyZWZfdmFsID0gdmFsdWVfaW5kICh2YWwpOworICBzdHJ1Y3QgdHlwZSAq ZGVyZWZfdHlwZSA9IHZhbHVlX3R5cGUgKGRlcmVmX3ZhbCk7CisgIGNoYXIg KnJlc3AxLCAqZGVyZWZfdHlwZV9uYW1lLCAqZ3VhcmRlZF9leHBfc3RyOwor ICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cF9vYmogPSBtYWtlX2NsZWFudXAg KG51bGxfY2xlYW51cCwgTlVMTCk7CisKKyAgZGVyZWZfdHlwZV9uYW1lID0g Z2V0X3R5cGVfbmFtZSAoZGVyZWZfdHlwZSk7CisgIG1ha2VfY2xlYW51cCAo eGZyZWUsIGRlcmVmX3R5cGVfbmFtZSk7CisKKyAgZ3VhcmRlZF9leHBfc3Ry ID0gZ3VhcmRfZXhwX3N0ciAoZXhwX3N0cik7CisgIG1ha2VfY2xlYW51cCAo eGZyZWUsIGd1YXJkZWRfZXhwX3N0cik7CisKKyAgcHJpbnRmX2ZpbHRlcmVk IChfKCInJXMnIGlzIGEgcG9pbnRlciB0byBhIHZhbHVlIG9mIHR5cGUgJyVz Jy5cbiIpLAorICAgICAgICAgICAgICAgICAgIGV4cF9zdHIsIGRlcmVmX3R5 cGVfbmFtZSk7CisKKyAgaWYgKCFjYW5fZGVyZWZlcmVuY2UgKHZhbHVlX3R5 cGUgKHZhbCkpKQorICAgIHsKKyAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygi Q2Fubm90IGRlcmVmZXJlbmNlICclcycgZm9yIGZ1cnRoZXIgZXhwbG9yYXRp b24uXG4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgZXhwX3N0cik7Cisg ICAgICBpZiAoaXNfY2hpbGQpCisgICAgICAgIHsKKyAgICAgICAgICByZXR1 cm5fdG9fcGFyZW50X3ZhbHVlX3Byb21wdCAoKTsKKyAgICAgICAgfQorCisg ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgcmVzcDEgPSBnZGJfcmVhZGxp bmUgKF8oIkRvIHlvdSB3YW50IHRvIGV4cGxvcmUgaXQgYXMgYW4gYXJyYXkg b3IgYSBzaW5nbGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAidmFs dWUgcG9pbnRlciBbYS9zXSA6ICIpKTsKKyAgbWFrZV9jbGVhbnVwICh4ZnJl ZSwgcmVzcDEpOworICBpZiAoc3RyY21wIChyZXNwMSwgImEiKSA9PSAwKQor ICAgIHsKKyAgICAgIGNoYXIgKmFycmF5X2luZGV4X3Byb21wdCA9IHhzdHJw cmludGYgKF8oIkVudGVyIHRoZSBpbmRleCB5b3Ugd2FudCB0byAiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJl eHBsb3JlIGluICclcyc6ICIpLCBleHBfc3RyKTsKKyAgICAgIG1ha2VfY2xl YW51cCAoeGZyZWUsIGFycmF5X2luZGV4X3Byb21wdCk7CisKKyAgICAgIHdo aWxlICgxKQorICAgICAgICB7CisgICAgICAgICAgY2hhciAqcmVzcDIgPSBn ZGJfcmVhZGxpbmUgKGFycmF5X2luZGV4X3Byb21wdCk7CisgICAgICAgICAg bWFrZV9jbGVhbnVwICh4ZnJlZSwgcmVzcDIpOworICAgICAgICAgIHN0cmlw X2xlYWRpbmdfc3BhY2VzICgmcmVzcDIpOworICAgICAgICAgIGlmIChyZXNw MiAmJiByZXNwMlswXSAhPSAnXDAnICYmICFpc19hbGxfc3BhY2VzIChyZXNw MikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHN0cnVjdCB2YWx1 ZSAqZWxlbV92YWw7CisgICAgICAgICAgICAgIGNoYXIgKm5ld19leHA7CisK KyAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kcHRyOworICAgICAgICAg ICAgICBMT05HRVNUIGluZGV4ID0gc3RydG91bHN0IChyZXNwMiwgJmVuZHB0 ciwgMTApOworICAgICAgICAgICAgICBpZiAoZW5kcHRyID09IHJlc3AyKQor ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBlbGVtX3ZhbCA9 IHZhbHVlX3N1YnNjcmlwdCAodmFsLCBpbmRleCk7CisKKyAgICAgICAgICAg ICAgbmV3X2V4cCA9IHhzdHJwcmludGYgKCIlc1slbGRdIiwgZ3VhcmRlZF9l eHBfc3RyLCBpbmRleCk7CisgICAgICAgICAgICAgIG1ha2VfY2xlYW51cCAo eGZyZWUsIG5ld19leHApOworCisgICAgICAgICAgICAgIGV4cGxvcmVfdmFs dWUgKGVsZW1fdmFsLCBuZXdfZXhwLCAxKTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGJy ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICBlbHNl IGlmIChzdHJjbXAgKHJlc3AxLCAicyIpID09IDApCisgICAgeworICAgICAg Y2hhciAqbmV3X2V4cCA9IHhzdHJwcmludGYgKF8oIiolcyIpLCBndWFyZGVk X2V4cF9zdHIpOworICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgbmV3X2V4 cCk7CisKKyAgICAgIGV4cGxvcmVfdmFsdWUgKGRlcmVmX3ZhbCwgbmV3X2V4 cCwgaXNfY2hpbGQpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGlm IChpc19jaGlsZCkKKyAgICAgICAgeworICAgICAgICAgIHJldHVybl90b19w YXJlbnRfdmFsdWUgKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgZG9fY2xl YW51cHMgKGNsZWFudXBfb2JqKTsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIEV4 cGxvcmUgcG9pbnRlciB0eXBlLiAgKi8KKworc3RhdGljIGludAorZXhwbG9y ZV9wb2ludGVyX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBjaGFy ICpwYXRoLCBpbnQgaXNfY2hpbGQpCit7CisgIHN0cnVjdCB0eXBlICp0YXJn ZXRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOworICBjaGFyICp0 eXBlX25hbWUgPSBnZXRfdHlwZV9uYW1lICh0YXJnZXRfdHlwZSk7CisgIGNo YXIgKm5ld19wYXRoID0gTlVMTDsKKworICBwcmludGZfZmlsdGVyZWQgKF8o IiVzIGlzIG9mIGEgcG9pbnRlciB0eXBlIHBvaW50aW5nIHRvIGEgdmFsdWUg b2YgdHlwZSAiCisgICAgICAgICAgICAgICAgICAgICAiJyVzJy5cbiIpLCBw YXRoLCB0eXBlX25hbWUpOworCisgIG5ld19wYXRoID0geHN0cnByaW50ZiAo XygidGhlIHBvaW50ZWUgdHlwZSBvZiAlcyIpLCBwYXRoKTsKKyAgZXhwbG9y ZV90eXBlICh0YXJnZXRfdHlwZSwgbmV3X3BhdGgsIGlzX2NoaWxkKTsKKwor ICB4ZnJlZSAodHlwZV9uYW1lKTsKKyAgeGZyZWUgKG5ld19wYXRoKTsKKyAg cmV0dXJuIDA7Cit9CisKKy8qIEV4cGxvcmUgYXJyYXkgdmFsdWUuICAqLwor CitzdGF0aWMgaW50CitleHBsb3JlX2FycmF5X3ZhbHVlIChzdHJ1Y3QgdmFs dWUgKnZhbCwgY29uc3QgY2hhciAqZXhwX3N0ciwgaW50IGlzX2NoaWxkKQor eworICBjaGFyICphcnJheV9pbmRleF9wcm9tcHQsICpyZXNwLCAqZ3VhcmRl ZF9leHBfc3RyOworICBzdHJ1Y3QgdHlwZSAqZWxlbV90eXBlID0gVFlQRV9U QVJHRVRfVFlQRSAodmFsdWVfdHlwZSAodmFsKSk7CisgIHN0cnVjdCBjbGVh bnVwICpjbGVhbnVwX29iaiA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVw LCBOVUxMKTsKKworICBjaGFyICplbGVtX3R5cGVfbmFtZSA9IGdldF90eXBl X25hbWUgKGVsZW1fdHlwZSk7CisgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGVs ZW1fdHlwZV9uYW1lKTsKKworICBndWFyZGVkX2V4cF9zdHIgPSBndWFyZF9l eHBfc3RyIChleHBfc3RyKTsKKyAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZ3Vh cmRlZF9leHBfc3RyKTsKKworICBwcmludGZfZmlsdGVyZWQgKCInJXMnIGlz IGFuIGFycmF5IG9mIGVsZW1lbnRzIG9mIHR5cGUgJyVzJy5cbiIsIGV4cF9z dHIsCisgICAgICAgICAgICAgICAgICAgZWxlbV90eXBlX25hbWUpOworCisg IGFycmF5X2luZGV4X3Byb21wdCA9IHhzdHJwcmludGYgKF8oIkVudGVyIHRo ZSBpbmRleCB5b3Ugd2FudCB0byBleHBsb3JlICIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiaW4gJyVzJzogIiksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cF9zdHIpOworICBtYWtl X2NsZWFudXAgKHhmcmVlLCBhcnJheV9pbmRleF9wcm9tcHQpOworCisgIHJl c3AgPSBnZGJfcmVhZGxpbmUgKGFycmF5X2luZGV4X3Byb21wdCk7CisgIG1h a2VfY2xlYW51cCAoeGZyZWUsIHJlc3ApOworICBzdHJpcF9sZWFkaW5nX3Nw YWNlcyAoJnJlc3ApOworICBpZiAocmVzcCAmJiByZXNwWzBdICE9ICdcMCcg JiYgIWlzX2FsbF9zcGFjZXMocmVzcCkpCisgICAgeworICAgICAgc3RydWN0 IHZhbHVlICplbGVtX3ZhbDsKKyAgICAgIGNoYXIgKm5ld19leHA7CisKKyAg ICAgIGNvbnN0IGNoYXIgKmVuZHB0cjsKKyAgICAgIExPTkdFU1QgaW5kZXgg PSBzdHJ0b3Vsc3QgKHJlc3AsICZlbmRwdHIsIDEwKTsKKyAgICAgIGlmIChl bmRwdHIgPT0gcmVzcCkKKyAgICAgICAgeworICAgICAgICAgIGRvX2NsZWFu dXBzIChjbGVhbnVwX29iaik7CisgICAgICAgICAgcmV0dXJuIDA7CisgICAg ICAgIH0KKworICAgICAgZWxlbV92YWwgPSB2YWx1ZV9zdWJzY3JpcHQgKHZh bCwgaW5kZXgpOworCisgICAgICBuZXdfZXhwID0geHN0cnByaW50ZiAoIiVz WyVsZF0iLCBndWFyZGVkX2V4cF9zdHIsIGluZGV4KTsKKyAgICAgIG1ha2Vf Y2xlYW51cCAoeGZyZWUsIG5ld19leHApOworCisgICAgICBleHBsb3JlX3Zh bHVlIChlbGVtX3ZhbCwgbmV3X2V4cCwgMSk7CisKKyAgICAgIGRvX2NsZWFu dXBzIChjbGVhbnVwX29iaik7CisgICAgICByZXR1cm4gMTsKKyAgICB9ICAK KyAgZWxzZQorICAgIHsKKyAgICAgIGlmIChpc19jaGlsZCkKKyAgICAgICAg eworICAgICAgICAgIHJldHVybl90b19wYXJlbnRfdmFsdWUoKTsKKyAgICAg ICAgfQorCisgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cF9vYmopOworICAg ICAgcmV0dXJuIDA7CisgICAgfQorfQorCisvKiBFeHBsb3JlIGFycmF5IHR5 cGUuICAqLworCitzdGF0aWMgaW50CitleHBsb3JlX2FycmF5X3R5cGUgKHN0 cnVjdCB0eXBlICp0eXBlLCBjb25zdCBjaGFyICpwYXRoLCBpbnQgaXNfY2hp bGQpCit7CisgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZSA9IFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpOworICBjaGFyICp0eXBlX25hbWUgPSBnZXRfdHlw ZV9uYW1lICh0YXJnZXRfdHlwZSk7CisgIGNoYXIgKm5ld19wYXRoID0gTlVM TDsKKworICBwcmludGZfZmlsdGVyZWQgKF8oIiVzIGlzIGFuIGFycmF5IHR5 cGUgd2l0aCBlbGVtZW50cyBvZiB0eXBlICclcycuXG4iKSwKKyAgICAgICAg ICAgICAgICAgICBwYXRoLCB0eXBlX25hbWUpOworCisgIG5ld19wYXRoID0g eHN0cnByaW50ZiAoXygidGhlIGFycmF5IGVsZW1lbnQgb2YgJXMiKSwgcGF0 aCk7CisgIGV4cGxvcmVfdHlwZSAodGFyZ2V0X3R5cGUsIG5ld19wYXRoLCBp c19jaGlsZCk7CisKKyAgeGZyZWUgKHR5cGVfbmFtZSk7CisgIHhmcmVlIChu ZXdfcGF0aCk7CisgIHJldHVybiAwOworfQorCitzdHJ1Y3QgZmllbGRfZGVz YworeworICBjb25zdCBjaGFyICpmaWVsZF9uYW1lOworICBzdHJ1Y3QgdmFs dWUgKmZpZWxkX3ZhbHVlOworICBzdHJ1Y3QgdHlwZSAqZmllbGRfdHlwZTsK K307CisKKy8qIFByaW50IGZpZWxkcyBvZiBhIGNvbXBvdW5kIHR5cGUvdmFs dWUuIEZJRUxEUyBpcyBhbiBhcnJheSBvZiBzaXplIE5GSUVMRFMuCisgICBQ QVJFTlRfVkFMX1RZUEUgaXMgdGhlIHR5cGVfY29kZSBvZiB0aGUgY29tcG91 bmQgdHlwZS4gSXQgaXMgZWl0aGVyCisgICBUWVBFX0NPREVfU1RSVUNUIG9y IFRZUEVfQ09ERV9VTklPTi4gRVhQTFJfVFlQRSBpbmRpY2F0ZXMgdGhlIGV4 cGxvcmF0aW9uCisgICB0eXBlLCBWQUxVRV9FWFBMT1JBVElPTiBvciBUWVBF X0VYUExPUkFUSU9OLiAgKi8KKworc3RhdGljIHZvaWQKK3ByaW50X2ZpZWxk cyAoc3RydWN0IGZpZWxkX2Rlc2MgKmZpZWxkcywgaW50IG5maWVsZHMsCisg ICAgICAgICAgICAgIGVudW0gdHlwZV9jb2RlIHBhcmVudF92YWxfdHlwZSwK KyAgICAgICAgICAgICAgZW51bSBleHBsb3JhdGlvbl90eXBlIGV4cGxyX3R5 cGUpCit7CisgIGludCBtYXhfZmllbGRfbmFtZV9sZW5ndGggPSAwOworICBp bnQgaTsKKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBfb2JqID0gbWFrZV9j bGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworCisgIGZvciAoaSA9IDA7 IGkgPCBuZmllbGRzOyBpKyspCisgICAgeworICAgICAgaW50IGZpZWxkX25h bWVfbGVuZ3RoID0gc3RybGVuIChmaWVsZHNbaV0uZmllbGRfbmFtZSk7Cisg ICAgICBpZiAoZmllbGRfbmFtZV9sZW5ndGggPiBtYXhfZmllbGRfbmFtZV9s ZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICBtYXhfZmllbGRfbmFtZV9s ZW5ndGggPSBmaWVsZF9uYW1lX2xlbmd0aDsKKyAgICAgICAgfQorICAgIH0K KworICBmb3IgKGkgPSAwOyBpIDwgbmZpZWxkczsgaSsrKQorICAgIHsKKyAg ICAgIGludCBzcGFjZXMgPSBtYXhfZmllbGRfbmFtZV9sZW5ndGggLSBzdHJs ZW4gKGZpZWxkc1tpXS5maWVsZF9uYW1lKTsKKyAgICAgIHN0cnVjdCB0eXBl ICpmaWVsZF90eXBlID0gZmllbGRzW2ldLmZpZWxkX3R5cGU7CisgICAgICBj aGFyICpmaWVsZF90eXBlX25hbWUgPSBnZXRfdHlwZV9uYW1lIChmaWVsZF90 eXBlKTsKKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZpZWxkX3R5cGVf bmFtZSk7CisKKyAgICAgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoc3BhY2Vz ICsgMiwgZ2RiX3N0ZG91dCk7CisgICAgICBwcmludGZfZmlsdGVyZWQgKCIl cyA9ICIsIGZpZWxkc1tpXS5maWVsZF9uYW1lKTsKKyAgICAgIAorICAgICAg aWYgKGV4cGxyX3R5cGUgPT0gVkFMVUVfRVhQTE9SQVRJT04gJiYgcGFyZW50 X3ZhbF90eXBlID09IFRZUEVfQ09ERV9TVFJVQ1QKKyAgICAgICAgICAmJiBp c19zY2FsYXJfdHlwZSAoZmllbGRfdHlwZSkpCisgICAgICAgIHsKKyAgICAg ICAgICBjaGFyICpmaWVsZF92YWx1ZV9zdHJpbmcgPSBnZXRfdmFsdWVfc3Ry aW5nIChmaWVsZHNbaV0uZmllbGRfdmFsdWUpOworICAgICAgICAgIG1ha2Vf Y2xlYW51cCAoeGZyZWUsIGZpZWxkX3ZhbHVlX3N0cmluZyk7CisKKyAgICAg ICAgICBwcmludGZfZmlsdGVyZWQgKF8oIiVzIC4uIChWYWx1ZSBvZiB0eXBl ICclcycpXG4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxk X3ZhbHVlX3N0cmluZywgZmllbGRfdHlwZV9uYW1lKTsKKyAgICAgICAgfQor ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgcHJpbnRmX2ZpbHRl cmVkIChfKCI8RW50ZXIgJWQgdG8gZXhwbG9yZSB0aGlzIGZpZWxkIG9mIHR5 cGUgJyVzJz5cbiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwg ZmllbGRfdHlwZV9uYW1lKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLyog RXhwbG9yZSBjb21wb3VuZCB2YWx1ZS4gQSBjb21wb3VuZCB2YWx1ZSBpcyBh IHN0cnVjdCwgY2xhc3Mgb3IgYSB1bmlvbgorICAgdmFsdWUuICAqLworCitz dGF0aWMgaW50CitleHBsb3JlX2NvbXBvdW5kX3ZhbHVlIChzdHJ1Y3QgdmFs dWUgKnZhbCwgY29uc3QgY2hhciAqZXhwX3N0ciwgaW50IGlzX2NoaWxkKQor eworICBzdHJ1Y3QgdHlwZSAqdmFsX3R5cGUgPSB2YWx1ZV90eXBlICh2YWwp OworICBjaGFyICp0eXBlX25hbWU7CisgIGVudW0gdHlwZV9jb2RlIHZhbF90 eXBlX2NvZGUgPSBUWVBFX0NPREUgKHZhbF90eXBlKTsKKyAgaW50IG5maWVs ZHMgPSBUWVBFX05GSUVMRFMgKHZhbF90eXBlKTsKKyAgaW50IGk7CisgIGlu dCBmdXJ0aGVyX2V4cGxvcmF0aW9uID0gKHZhbF90eXBlX2NvZGUgPT0gVFlQ RV9DT0RFX1VOSU9OKSA/IDEgOiAwOworICBzdHJ1Y3QgZmllbGRfZGVzYyAq ZmllbGRzOworICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cF9vYmogPSBtYWtl X2NsZWFudXAgKG51bGxfY2xlYW51cCwgTlVMTCk7CisKKyAgZmllbGRzID0g KHN0cnVjdCBmaWVsZF9kZXNjICopIHh6YWxsb2MgKG5maWVsZHMgKiBzaXpl b2YgKHN0cnVjdCBmaWVsZF9kZXNjKSk7CisgIG1ha2VfY2xlYW51cCAoeGZy ZWUsIGZpZWxkcyk7CisKKyAgdHlwZV9uYW1lID0gZ2V0X3R5cGVfbmFtZSAo dmFsX3R5cGUpOworICBtYWtlX2NsZWFudXAgKHhmcmVlLCB0eXBlX25hbWUp OworCisgIHByaW50Zl9maWx0ZXJlZCAoXygiVGhlIHZhbHVlIG9mICclcycg aXMgb2YgdHlwZSAnJXMnIHdpdGggdGhlIGZvbGxvd2luZyAiCisgICAgICAg ICAgICAgICAgICAgICAiZmllbGRzOlxuIiksIGV4cF9zdHIsIHR5cGVfbmFt ZSk7CisKKyAgZm9yIChpID0gMDsgaSA8IG5maWVsZHM7IGkrKykKKyAgICB7 CisgICAgICBzdHJ1Y3QgdHlwZSAqZmllbGRfdHlwZSA9IFRZUEVfRklFTERf VFlQRSAodmFsX3R5cGUsIGkpOworICAgICAgY29uc3QgY2hhciAqZmllbGRf bmFtZSA9IFRZUEVfRklFTERfTkFNRSAodmFsX3R5cGUsIGkpOworCisgICAg ICBmaWVsZHNbaV0uZmllbGRfbmFtZSA9IGZpZWxkX25hbWU7CisgICAgICBm aWVsZHNbaV0uZmllbGRfdmFsdWUgPSB2YWx1ZV9maWVsZCAodmFsLCBpKTsK KyAgICAgIGZpZWxkc1tpXS5maWVsZF90eXBlID0gZmllbGRfdHlwZTsKKwor ICAgICAgaWYgKCFpc19zY2FsYXJfdHlwZSAoZmllbGRfdHlwZSkgJiYgdmFs X3R5cGVfY29kZSA9PSBUWVBFX0NPREVfU1RSVUNUKQorICAgICAgICB7Cisg ICAgICAgICAgZnVydGhlcl9leHBsb3JhdGlvbiA9IDE7CisgICAgICAgIH0K KyAgICB9CisKKyAgcHJpbnRfZmllbGRzIChmaWVsZHMsIG5maWVsZHMsIHZh bF90eXBlX2NvZGUsIFZBTFVFX0VYUExPUkFUSU9OKTsKKworICBpZiAoZnVy dGhlcl9leHBsb3JhdGlvbikKKyAgICB7CisgICAgICBjaGFyICpjaG9pY2Vf c3RyID0gZ2RiX3JlYWRsaW5lICgiXG5FbnRlciB0aGUgZmllbGQgbnVtYmVy IG9mIGNob2ljZTogIik7CisgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBj aG9pY2Vfc3RyKTsKKyAgICAgIHN0cmlwX2xlYWRpbmdfc3BhY2VzICgmY2hv aWNlX3N0cik7CisKKyAgICAgIGlmIChjaG9pY2Vfc3RyICYmIGNob2ljZV9z dHJbMF0gIT0gJ1wwJyAmJiAhaXNfYWxsX3NwYWNlcyAoY2hvaWNlX3N0cikp CisgICAgICAgIHsKKyAgICAgICAgICBjb25zdCBjaGFyICplbmRwdHI7Cisg ICAgICAgICAgTE9OR0VTVCBjaG9pY2UgPSBzdHJ0b3Vsc3QgKGNob2ljZV9z dHIsICZlbmRwdHIsIDEwKTsKKyAgICAgICAgICBpZiAoZW5kcHRyICE9IGNo b2ljZV9zdHIgJiYgY2hvaWNlID49IDAgJiYgY2hvaWNlIDwgbmZpZWxkcykK KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2hhciAqZ3VhcmRlZF9l eHBfc3RyID0gZ3VhcmRfZXhwX3N0ciAoZXhwX3N0cik7CisgICAgICAgICAg ICAgIGNoYXIgKm5ld19leHAgPSB4c3RycHJpbnRmICgiJXMuJXMiLCBndWFy ZGVkX2V4cF9zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmaWVsZHNbY2hvaWNlXS5maWVsZF9uYW1lKTsKKyAgICAg ICAgICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgbmV3X2V4cCk7CisgICAg ICAgICAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGd1YXJkZWRfZXhwX3N0 cik7CisKKyAgICAgICAgICAgICAgZXhwbG9yZV92YWx1ZSAoZmllbGRzW2No b2ljZV0uZmllbGRfdmFsdWUsIG5ld19leHAsIDEpOworCisgICAgICAgICAg ICAgIGRvX2NsZWFudXBzIChjbGVhbnVwX29iaik7CisgICAgICAgICAgICAg IHJldHVybiAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor ICBlbHNlCisgICAgeworICAgICAgaWYgKGlzX2NoaWxkKQorICAgICAgICB7 CisgICAgICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiXG4iKTsKKyAgICAgICAg ICByZXR1cm5fdG9fcGFyZW50X3ZhbHVlX3Byb21wdCAoKTsKKyAgICAgICAg fQorICAgIH0KKworICBpZiAoaXNfY2hpbGQpCisgICAgeworICAgICAgcmV0 dXJuX3RvX3BhcmVudF92YWx1ZSAoKTsKKyAgICAgIHByaW50Zl9maWx0ZXJl ZCAoIlxuIik7CisgICAgfQorCisgIGRvX2NsZWFudXBzIChjbGVhbnVwX29i aik7CisgIHJldHVybiAwOworfQorCisvKiBFeHBsb3JlIGNvbXBvdW5kIHR5 cGUuIEEgY29tcG91bmQgdHlwZSBpcyBhIHN0cnVjdCwgY2xhc3Mgb3IgYSB1 bmlvbgorICAgdHlwZS4gICovCisKK3N0YXRpYyBpbnQKK2V4cGxvcmVfY29t cG91bmRfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKnBh dGgsIGludCBpc19jaGlsZCkKK3sKKyAgY2hhciAqdHlwZV9uYW1lOworICBp bnQgbmZpZWxkcyA9IFRZUEVfTkZJRUxEUyAodHlwZSk7CisgIGludCBpOwor ICBzdHJ1Y3QgZmllbGRfZGVzYyAqZmllbGRzOworICBzdHJ1Y3QgY2xlYW51 cCAqY2xlYW51cF9vYmogPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwg TlVMTCk7CisgIAorICBmaWVsZHMgPSAoc3RydWN0IGZpZWxkX2Rlc2MgKikg eHphbGxvYyAobmZpZWxkcyAqIHNpemVvZiAoc3RydWN0IGZpZWxkX2Rlc2Mp KTsKKyAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZmllbGRzKTsKKworICB0eXBl X25hbWUgPSBnZXRfdHlwZV9uYW1lICh0eXBlKTsKKyAgbWFrZV9jbGVhbnVw ICh4ZnJlZSwgdHlwZV9uYW1lKTsKKworICBpZiAoaXNfY2hpbGQpCisgICAg eworICAgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCIlcyBpcyBvZiB0eXBlICcl cycgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczpcbiIpLAorICAgICAgICAg ICAgICAgICAgICAgICBwYXRoLCB0eXBlX25hbWUpOworICAgIH0KKyAgZWxz ZQorICAgIHsKKyAgICAgIHByaW50Zl9maWx0ZXJlZCAoIiclcycgaGFzIHRo ZSBmb2xsb3dpbmcgZmllbGRzOlxuIiwgcGF0aCk7CisgICAgfQorCisgIGZv ciAoaSA9IDA7IGkgPCBuZmllbGRzOyBpKyspCisgICAgeworICAgICAgZmll bGRzW2ldLmZpZWxkX25hbWUgPSBUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkp OworICAgICAgZmllbGRzW2ldLmZpZWxkX3R5cGUgPSBUWVBFX0ZJRUxEX1RZ UEUgKHR5cGUsIGkpOworICAgICAgZmllbGRzW2ldLmZpZWxkX3ZhbHVlID0g TlVMTDsKKyAgICB9CisKKyAgcHJpbnRfZmllbGRzIChmaWVsZHMsIG5maWVs ZHMsIFRZUEVfQ09ERSAodHlwZSksIFRZUEVfRVhQTE9SQVRJT04pOworCisg IGlmIChuZmllbGRzKQorICAgIHsKKyAgICAgIGNoYXIgKmNob2ljZV9zdHIg PSBnZGJfcmVhZGxpbmUgKF8oIlxuRW50ZXIgdGhlIGZpZWxkIG51bWJlciBv ZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJjaG9pY2U6ICIpKTsKKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGNo b2ljZV9zdHIpOworICAgICAgc3RyaXBfbGVhZGluZ19zcGFjZXMgKCZjaG9p Y2Vfc3RyKTsKKworICAgICAgaWYgKGNob2ljZV9zdHIgJiYgY2hvaWNlX3N0 clswXSAhPSAnXDAnICYmICFpc19hbGxfc3BhY2VzIChjaG9pY2Vfc3RyKSkK KyAgICAgICAgeworICAgICAgICAgIGNvbnN0IGNoYXIgKmVuZHB0cjsKKyAg ICAgICAgICBMT05HRVNUIGNob2ljZSA9IHN0cnRvdWxzdCAoY2hvaWNlX3N0 ciwgJmVuZHB0ciwgMTApOworICAgICAgICAgIGlmIChlbmRwdHIgIT0gY2hv aWNlX3N0ciAmJiBjaG9pY2UgPj0gMCAmJiBjaG9pY2UgPCBuZmllbGRzKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICBjaGFyICpuZXdfcGF0aDsK KyAgICAgICAgICAgICAgICBpZiAoaXNfY2hpbGQpCisgICAgICAgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgICAgIG5ld19wYXRoICA9IHhzdHJw cmludGYgKF8oImZpZWxkICclcycgb2YgJXMiKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzW2Nob2ljZV0u ZmllbGRfbmFtZSwgcGF0aCk7CisgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICBuZXdfcGF0aCAgPSB4c3RycHJpbnRmIChfKCJmaWVs ZCAnJXMnIG9mICclcyciKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmllbGRzW2Nob2ljZV0uZmllbGRfbmFtZSwg cGF0aCk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIG1h a2VfY2xlYW51cCAoeGZyZWUsIG5ld19wYXRoKTsKKworICAgICAgICAgICAg ICBleHBsb3JlX3R5cGUgKGZpZWxkc1tjaG9pY2VdLmZpZWxkX3R5cGUsIG5l d19wYXRoLCAxKTsKKworICAgICAgICAgICAgICBkb19jbGVhbnVwcyAoY2xl YW51cF9vYmopOworICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAg IGlmIChpc19jaGlsZCkKKyAgICAgICAgeworICAgICAgICAgIHByaW50Zl9m aWx0ZXJlZCAoIlxuIik7CisgICAgICAgICAgcmV0dXJuX3RvX3BhcmVudF90 eXBlX3Byb21wdCAoKTsKKyAgICAgICAgfQorICAgIH0KKworICBpZiAoaXNf Y2hpbGQpCisgICAgeworICAgICAgcmV0dXJuX3RvX3BhcmVudF90eXBlICgp OworICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiXG4iKTsKKyAgICB9CisKKyAg ZG9fY2xlYW51cHMgKGNsZWFudXBfb2JqKTsKKyAgcmV0dXJuIDA7Cit9CisK Ky8qIEV4cGxvcmUgYSB2YWx1ZSB3aGljaCBvZiBhIHR5cGVkZWYgdHlwZS4g ICovCisKK3N0YXRpYyBpbnQKK2V4cGxvcmVfdHlwZWRlZl92YWx1ZSAoc3Ry dWN0IHZhbHVlICp2YWwsIGNvbnN0IGNoYXIgKmV4cF9zdHIsIGludCBpc19j aGlsZCkKK3sKKyAgc3RydWN0IHR5cGUgKmN1cnJfdHlwZSwgKm9yaWdfdHlw ZTsKKyAgY2hhciAqY3Vycl90eXBlX25hbWUsICpvcmlnX3R5cGVfbmFtZTsK KyAgc3RydWN0IHZhbHVlICpjYXN0X3ZhbHVlOworICBzdHJ1Y3QgY2xlYW51 cCAqY2xlYW51cF9vYmogPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwg TlVMTCk7CisKKyAgY3Vycl90eXBlID0gdmFsdWVfdHlwZSAodmFsKTsKKyAg Y3Vycl90eXBlX25hbWUgPSBnZXRfdHlwZV9uYW1lIChjdXJyX3R5cGUpOwor ICBtYWtlX2NsZWFudXAgKHhmcmVlLCBjdXJyX3R5cGVfbmFtZSk7CisKKyAg b3JpZ190eXBlID0gY2hlY2tfdHlwZWRlZiAoY3Vycl90eXBlKTsKKyAgb3Jp Z190eXBlX25hbWUgPSBnZXRfdHlwZV9uYW1lIChvcmlnX3R5cGUpOworICBt YWtlX2NsZWFudXAgKHhmcmVlLCBvcmlnX3R5cGVfbmFtZSk7CisKKyAgcHJp bnRmX2ZpbHRlcmVkIChfKCJUaGUgdmFsdWUgb2YgJyVzJyBpcyBvZiB0eXBl ICclcycgd2hpY2ggaXMgYSB0eXBlZGVmIG9mICIKKyAgICAgICAgICAgICAg ICAgICAgICJ0eXBlICclcycuXG4iKSwgZXhwX3N0ciwgY3Vycl90eXBlX25h bWUsIG9yaWdfdHlwZV9uYW1lKTsKKworICBjYXN0X3ZhbHVlID0gdmFsdWVf Y2FzdCAob3JpZ190eXBlLCB2YWwpOworICBleHBsb3JlX3ZhbHVlIChjYXN0 X3ZhbHVlLCBleHBfc3RyLCBpc19jaGlsZCk7CisKKyAgZG9fY2xlYW51cHMg KGNsZWFudXBfb2JqKTsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIEV4cGxvcmUg YSB0eXBlIHdoaWNoIGlzIGEgdHlwZWRlZiBvZiBhbm90aGVyIHR5cGUuICAq LworCitzdGF0aWMgaW50CitleHBsb3JlX3R5cGVkZWZfdHlwZSAoc3RydWN0 IHR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKnBhdGgsIGludCBpc19jaGlsZCkK K3sKKyAgc3RydWN0IHR5cGUgKm9yaWdfdHlwZSA9IGNoZWNrX3R5cGVkZWYg KHR5cGUpOworICBjaGFyICpvcmlnX3R5cGVfbmFtZSA9IGdldF90eXBlX25h bWUgKG9yaWdfdHlwZSk7CisKKyAgaWYgKGlzX2NoaWxkKQorICAgIHsKKyAg ICAgIHByaW50Zl9maWx0ZXJlZCAoXygiVGhlIHR5cGUgb2YgJXMgaXMgYSB0 eXBlZGVmIG9mIHR5cGUgJyVzJy5cbiIpLCBwYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICBvcmlnX3R5cGVfbmFtZSk7CisgICAgfQorICBlbHNlCisg ICAgeworICAgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJUaGUgdHlwZSAnJXMn IGlzIGEgdHlwZWRlZiBvZiB0eXBlICclcycuXG4iKSwgcGF0aCwKKyAgICAg ICAgICAgICAgICAgICAgICAgb3JpZ190eXBlX25hbWUpOworICAgIH0KKwor ICBleHBsb3JlX3R5cGUgKG9yaWdfdHlwZSwgcGF0aCwgaXNfY2hpbGQpOwor ICByZXR1cm4gMDsKK30KKworLyogRXhwbG9yZSBWQUwgb2YgYW55IHR5cGUg KG9yIHR5cGVfY29kZSkuIEFSR19TVFIgaXMgdGhlIGV4cHJlc3Npb24gd2hp Y2gKKyAgIGV2YWx1YXRlcyB0byBWQUwgaW4gdGhlIGN1cnJlbnQgbGFuZ3Vh Z2UuIElTX0NISUxELCBpbiBhIHdheSwgZGVub3RlcyB0aGUKKyAgIHN0YXRl IG9mIHRoZSBleHBsb3JhdGlvbi4gSVNfQ0hJTEQgaXMgMCBpZiBBUkdfU1RS IGlzIHRoZSBzYW1lIGFzIHRoZQorICAgZXhwcmVzc2lvbiBzdHJpbmcgZW50 ZXJlZCBieSB0aGUgdXNlciwgMSBvdGhlcndpc2UuIEZvciBleGFtcGxlLCB0 aGUgdXNlcgorICAgaXMgcHJvYmFibHkgZXhwbG9yaW5nIGEgdmFyaWFibGUg J3MnIHdoaWNoIGlzIG9mIGEgc3RydWN0IHR5cGUgd2l0aCBhCisgICBmaWVs ZCAnYScuIFRoZW4sIGR1cmluZyB0aGUgZXhwbG9yYXRpb24gb2Ygcy5hLCB0 aGUgdmFsdWUgb2YgSVNfQ0hJTEQgd2lsbAorICAgYmUgMS4gICovCisKK3N0 YXRpYyB2b2lkCitleHBsb3JlX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbCwg Y29uc3QgY2hhciAqYXJnX3N0ciwgaW50IGlzX2NoaWxkKQoreworICBzdHJ1 Y3QgdHlwZSAqdmFsX3R5cGUgPSB2YWx1ZV90eXBlICh2YWwpOworICBpbnQg cmVwZWF0ID0gMDsKKyAgY2hhciAqdHlwZV9uYW1lID0gTlVMTDsKKworICBk bworICAgIHsKKyAgICAgIHN3aXRjaCAoVFlQRV9DT0RFICh2YWxfdHlwZSkp CisgICAgICAgIHsKKyAgICAgICAgY2FzZSBUWVBFX0NPREVfSU5UOgorICAg ICAgICBjYXNlIFRZUEVfQ09ERV9GTFQ6CisgICAgICAgIGNhc2UgVFlQRV9D T0RFX0NIQVI6CisgICAgICAgIGNhc2UgVFlQRV9DT0RFX0JPT0w6CisgICAg ICAgIGNhc2UgVFlQRV9DT0RFX0VOVU06CisgICAgICAgICAgcmVwZWF0ID0g ZXhwbG9yZV9zY2FsYXJfdmFsdWUgKHZhbCwgYXJnX3N0ciwgaXNfY2hpbGQp OworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRZUEVfQ09ERV9Q VFI6CisgICAgICAgICAgcmVwZWF0ID0gZXhwbG9yZV9wb2ludGVyX3ZhbHVl ICh2YWwsIGFyZ19zdHIsIGlzX2NoaWxkKTsKKyAgICAgICAgICBicmVhazsK KyAgICAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6CisgICAgICAgICAgcmVw ZWF0ID0gZXhwbG9yZV9hcnJheV92YWx1ZSAodmFsLCBhcmdfc3RyLCBpc19j aGlsZCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVFlQRV9D T0RFX1NUUlVDVDoKKyAgICAgICAgY2FzZSBUWVBFX0NPREVfVU5JT046Cisg ICAgICAgICAgcmVwZWF0ID0gZXhwbG9yZV9jb21wb3VuZF92YWx1ZSAodmFs LCBhcmdfc3RyLCBpc19jaGlsZCk7CisgICAgICAgICAgYnJlYWs7CisgICAg ICAgIGNhc2UgVFlQRV9DT0RFX1RZUEVERUY6CisgICAgICAgICAgcmVwZWF0 ID0gZXhwbG9yZV90eXBlZGVmX3ZhbHVlICh2YWwsIGFyZ19zdHIsIGlzX2No aWxkKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg ICAgICAgICB0eXBlX25hbWUgPSBnZXRfdHlwZV9uYW1lICh2YWxfdHlwZSk7 CisgICAgICAgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJFeHBsb3JhdGlvbiBv ZiB0eXBlICclcycgb2YgJyVzJyBpcyBub3QgeWV0ICIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImF2YWlsYWJsZS5cbiIpLCB0eXBlX25hbWUs IGFyZ19zdHIpOworICAgICAgICAgIHhmcmVlICh0eXBlX25hbWUpOworICAg ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICB3aGlsZSAocmVw ZWF0KTsKK30KKworLyogRXhwbG9yZSBhbnkgdHlwZSBDVVJSX1RZUEUuIFBB VEggaXMgdGhlIGRlc2NyaXB0aXZlIHBhdGggdG8gdGhlIGVudGl0eQorICAg ZXhwbG9yZWQuIElTX0NISUxELCBpbiBhIHdheSwgZGVub3RlcyB0aGUgc3Rh dGUgb2YgdGhlIGN1cnJlbnQgZXhwbG9yYXRpb24uCisgICBJZiBDVVJSX1RZ UEUgaXMgdGhlIHR5cGUgZW50ZXJlZCBieSB0aGUgdXNlciwgdGhlIElTX0NI SUxEIGlzIDAsIG90aGVyd2lzZQorICAgaXQgaXMgMS4gRm9yIGV4YW1wbGUs IHdoZW4gZXhwbG9yaW5nIHRoZSB0eXBlIG9mIHRoZSBmaWVsZCAnYScgb2Yg YSB0eXBlCisgICAnc3RydWN0IFMnICh3aGljaCB3YXMgdGhlIGFjdHVhbCB0 eXBlIGVudGVyZWQgYnkgdGhlIHVzZXIpLCB0aGUgdmFsdWUgb2YKKyAgIElT X0NISUxEIHdpbGwgYmUgMS4gICovCisKK3N0YXRpYyB2b2lkCitleHBsb3Jl X3R5cGUgKHN0cnVjdCB0eXBlICpjdXJyX3R5cGUsIGNvbnN0IGNoYXIgKnBh dGgsIGludCBpc19jaGlsZCkKK3sKKyAgY2hhciAqdHlwZV9uYW1lID0gTlVM TDsKKyAgaW50IHJlcGVhdCA9IDA7CisgIGRvCisgICAgeworICAgICAgc3dp dGNoIChUWVBFX0NPREUgKGN1cnJfdHlwZSkpCisgICAgICAgIHsKKyAgICAg ICAgY2FzZSBUWVBFX0NPREVfSU5UOgorICAgICAgICBjYXNlIFRZUEVfQ09E RV9GTFQ6CisgICAgICAgIGNhc2UgVFlQRV9DT0RFX0NIQVI6CisgICAgICAg IGNhc2UgVFlQRV9DT0RFX0JPT0w6CisgICAgICAgIGNhc2UgVFlQRV9DT0RF X0VOVU06CisgICAgICAgICAgcmVwZWF0ID0gZXhwbG9yZV9zY2FsYXJfdHlw ZSAoY3Vycl90eXBlLCBwYXRoLCBpc19jaGlsZCk7CisgICAgICAgICAgYnJl YWs7CisgICAgICAgIGNhc2UgVFlQRV9DT0RFX1BUUjoKKyAgICAgICAgICBy ZXBlYXQgPSBleHBsb3JlX3BvaW50ZXJfdHlwZSAoY3Vycl90eXBlLCBwYXRo LCBpc19jaGlsZCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug VFlQRV9DT0RFX0FSUkFZOgorICAgICAgICAgIHJlcGVhdCA9IGV4cGxvcmVf YXJyYXlfdHlwZSAoY3Vycl90eXBlLCBwYXRoLCBpc19jaGlsZCk7CisgICAg ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoK KyAgICAgICAgY2FzZSBUWVBFX0NPREVfVU5JT046CisgICAgICAgICAgcmVw ZWF0ID0gZXhwbG9yZV9jb21wb3VuZF90eXBlIChjdXJyX3R5cGUsIHBhdGgs IGlzX2NoaWxkKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBU WVBFX0NPREVfVFlQRURFRjoKKyAgICAgICAgICByZXBlYXQgPSBleHBsb3Jl X3R5cGVkZWZfdHlwZSAoY3Vycl90eXBlLCBwYXRoLCBpc19jaGlsZCk7Cisg ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg dHlwZV9uYW1lID0gZ2V0X3R5cGVfbmFtZSAoY3Vycl90eXBlKTsKKyAgICAg ICAgICBpZiAoaXNfY2hpbGQpCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgIHByaW50Zl9maWx0ZXJlZCAoXygiRXhwbG9yYXRpb24gb2YgdHlwZSAn JXMnIG9mICclcycgaXMgbm90IHlldCAiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiYXZhaWxhYmxlLlxuIiksIHR5cGVfbmFtZSwgcGF0 aCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgZWxzZQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICBwcmludGZfZmlsdGVyZWQgKF8oIkV4cGxv cmF0aW9uIG9mIHR5cGUgJyVzJyBpcyBub3QgeWV0ICIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJhdmFpbGFibGUuXG4iKSwgdHlwZV9u YW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB4ZnJlZSAodHlwZV9u YW1lKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAg d2hpbGUgKHJlcGVhdCk7Cit9CisKKy8qIFBhcnNlIGEgc3RyaW5nIGludG8g YSB2YWx1ZSBpbiB0aGUgY3VycmVudCBsYW5ndWFnZS4gUmV0dXJuIE5VTEwg aWYgdGhlCisgICBzdHJpbmcgU1RSIGRvZXMgbm90IGV2YWx1YXRlIHRvIGFu eSB2YWx1ZS4gICovCisKK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorcGFyc2Vf YXNfdmFsdWUgKGNoYXIgKnN0cikKK3sKKyAgc3RydWN0IGdkYl9leGNlcHRp b24gZXhjZXB0OworICBzdHJ1Y3QgdmFsdWUgKnN0cl92YWwgPSBOVUxMOwor CisgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19FUlJPUikKKyAg ICB7CisgICAgICBzdHJfdmFsID0gcGFyc2VfYW5kX2V2YWwgKHN0cik7Cisg ICAgfQorICBpZiAoZXhjZXB0LnJlYXNvbiA8IDApCisgICAgeworICAgICAg cmV0dXJuIE5VTEw7CisgICAgfQorCisgIHJldHVybiBzdHJfdmFsOworfQor CisvKiBQYXJzZSBhIHN0cmluZyBpbnRvIGEgdHlwZSBpbiB0aGUgY3VycmVu dCBsYW5ndWFnZS4gUmV0dXJuIE5VTEwgaWYgdGhlCisgICBzdHJpbmcgU1RS IGRvZXMgbm90IGV2YWx1YXRlIHRvIGFueSB0eXBlLiAgKi8KKworc3RhdGlj IHN0cnVjdCB0eXBlICoKK3BhcnNlX2FzX3R5cGUgKGNvbnN0IGNoYXIgKnN0 cikKK3sKKyAgc3RydWN0IHR5cGUgKnR5cGUgPSBOVUxMOworICB2b2xhdGls ZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7CisKKyAgaWYgKGN1cnJl bnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlID09IGxhbmd1YWdlX2MKKyAgICAg IHx8IGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlID09IGxhbmd1YWdl X2NwbHVzKQorICAgIHsKKyAgICAgIC8qIFRoaXMgaGVscHMgaW4gZXhwbG9y aW5nIHR5cGVzIGxpa2UgaW50KiwgaW50KiogYW5kIHRoZSBsaWtlLiAgKi8K KyAgICAgIGNoYXIgKmV4cCA9IHhzdHJwcmludGYgKF8oIiglcyAqKSAwIiks IHN0cik7CisgICAgICBzdHJ1Y3QgdmFsdWUgKmR1bW15X3ZhbHVlID0gcGFy c2VfYXNfdmFsdWUgKGV4cCk7CisKKyAgICAgIHhmcmVlIChleHApOworCisg ICAgICBpZiAoIWR1bW15X3ZhbHVlKQorICAgICAgICB7CisgICAgICAgICAg cmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgcmV0dXJuIHZhbHVl X3R5cGUgKHZhbHVlX2luZCAoZHVtbXlfdmFsdWUpKTsKKyAgICB9CisKKyAg VFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKKyAgICB7Cisg ICAgICBpZiAoIXN0cm5jbXAgKHN0ciwgInN0cnVjdCAiLCA3KSkKKwl0eXBl ID0gbG9va3VwX3N0cnVjdCAoc3RyICsgNywgTlVMTCk7CisgICAgICBlbHNl IGlmICghc3RybmNtcCAoc3RyLCAidW5pb24gIiwgNikpCisJdHlwZSA9IGxv b2t1cF91bmlvbiAoc3RyICsgNiwgTlVMTCk7CisgICAgICBlbHNlIGlmICgh c3RybmNtcCAoc3RyLCAiZW51bSAiLCA1KSkKKwl0eXBlID0gbG9va3VwX2Vu dW0gKHN0ciArIDUsIE5VTEwpOworICAgICAgZWxzZQorCXR5cGUgPSBsb29r dXBfdHlwZW5hbWUgKGN1cnJlbnRfbGFuZ3VhZ2UsIGdldF9jdXJyZW50X2Fy Y2goKSwKKwkJCQlzdHIsIE5VTEwsIDApOworICAgIH0KKyAgaWYgKGV4Y2Vw dC5yZWFzb24gPCAwKQorICAgIHsKKyAgICAgIHJldHVybiBOVUxMOworICAg IH0KKworICByZXR1cm4gdHlwZTsKK30KKworc3RhdGljIHZvaWQKK2V4cGxv cmVfY29tbWFuZCAoY2hhciogYXJnX3N0ciwgaW50IGZyb21fdHR5KQorewor ICBzdHJ1Y3QgdmFsdWUgKmV4cF92YWw7CisgIHN0cnVjdCB0eXBlICpzdHJf dHlwZTsKKworICBpZiAoIWFyZ19zdHIpCisgICAgeworICAgICAgcHJpbnRm X2ZpbHRlcmVkIChfKCInZXhwbG9yZScgY29tbWFuZCByZXF1aXJlcyBhbiBh cmd1bWVudC5cbiIpKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgLyog VHJ5IGlmIEFSR19TVFIgY2FuIGJlIHBhcnNlZCBpbnRvIGEgdmFsdWUuICAq LworICBleHBfdmFsID0gcGFyc2VfYXNfdmFsdWUgKGFyZ19zdHIpOworICBp ZiAoZXhwX3ZhbCkKKyAgICB7CisgICAgICBleHBsb3JlX3ZhbHVlIChleHBf dmFsLCBhcmdfc3RyLCAwKTsKKworICAgICAgZnJlZV9hbGxfdmFsdWVzICgp OworICAgICAgcmV0dXJuOworICAgIH0KKworICAvKiBUcnkgaWYgQVJHX1NU UiBjYW4gYmUgcGFyc2VkIGludG8gYSB0eXBlLiAgKi8KKyAgc3RyX3R5cGUg PSBwYXJzZV9hc190eXBlIChhcmdfc3RyKTsKKyAgaWYgKHN0cl90eXBlKQor ICAgIHsKKyAgICAgIGV4cGxvcmVfdHlwZSAoc3RyX3R5cGUsIGFyZ19zdHIs IDApOworICAgICAgcmV0dXJuOworICAgIH0KKworICAvKiBJZiBBUkdfU1RS IGNhbm5vdCBiZSBwYXJzZWQgaW50byBhIHZhbHVlIG9yIGEgdHlwZSwgcHJp bnQgYW4gZXJyb3IKKyAgICAgbWVzc2FnZS4gICovCisgIHByaW50Zl9maWx0 ZXJlZCAoXygiJyVzJyBkb2VzIG5vdCBldmFsdWF0ZSB0byBhbnkgdmFsdWUg b3IgdHlwZSBpbiB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgImN1cnJl bnQgY29udGV4dC5cbiIpLCBhcmdfc3RyKTsKK30KKworc3RhdGljIHZvaWQK K2V4cGxvcmVfdmFsdWVfY29tbWFuZCAoY2hhciogYXJnX3N0ciwgaW50IGZy b21fdHR5KQoreworICBzdHJ1Y3QgdmFsdWUgKmV4cF92YWw7CisKKyAgaWYg KCFhcmdfc3RyKQorICAgIHsKKyAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygi J2V4cGxvcmUgdmFsdWUnIGNvbW1hbmQgcmVxdWlyZXMgYW4gYXJndW1lbnQu XG4iKSk7CisgICAgICByZXR1cm47CisgICAgfQorCisgIGV4cF92YWwgPSBw YXJzZV9hc192YWx1ZSAoYXJnX3N0cik7CisgIGlmIChleHBfdmFsKQorICAg IHsKKyAgICAgIGV4cGxvcmVfdmFsdWUgKGV4cF92YWwsIGFyZ19zdHIsIDAp OworCisgICAgICBmcmVlX2FsbF92YWx1ZXMgKCk7CisgICAgICByZXR1cm47 CisgICAgfQorCisgIHByaW50Zl9maWx0ZXJlZCAoXygiJyVzJyBkb2VzIG5v dCBldmFsdWF0ZSB0byBhbnkgdmFsdWUgaW4gdGhlICIKKyAgICAgICAgICAg ICAgICAgICAgICJjdXJyZW50IGNvbnRleHQuXG4iKSwgYXJnX3N0cik7Cit9 CisKK3N0YXRpYyB2b2lkCitleHBsb3JlX3R5cGVfY29tbWFuZCAoY2hhciog YXJnX3N0ciwgaW50IGZyb21fdHR5KQoreworICBzdHJ1Y3QgdHlwZSAqc3Ry X3R5cGU7CisKKyAgaWYgKCFhcmdfc3RyKQorICAgIHsKKyAgICAgIHByaW50 Zl9maWx0ZXJlZCAoXygiJ2V4cGxvcmUgdHlwZScgY29tbWFuZCByZXF1aXJl cyBhbiBhcmd1bWVudC5cbiIpKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisK KyAgc3RyX3R5cGUgPSBwYXJzZV9hc190eXBlIChhcmdfc3RyKTsKKyAgaWYg KHN0cl90eXBlKQorICAgIHsKKyAgICAgIGV4cGxvcmVfdHlwZSAoc3RyX3R5 cGUsIGFyZ19zdHIsIDApOworICAgICAgcmV0dXJuOworICAgIH0KKworICBw cmludGZfZmlsdGVyZWQgKF8oIiclcycgZG9lcyBub3QgZXZhbHVhdGUgdG8g YW55IHR5cGUgaW4gdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICJjdXJy ZW50IGNvbnRleHQuXG4iKSwgYXJnX3N0cik7Cit9CisKK3N0cnVjdCBjbWRf bGlzdF9lbGVtZW50ICpleHBsb3JlX2xpc3QgPSBOVUxMOworCit2b2lkCitf aW5pdGlhbGl6ZV9leHBsb3JlICh2b2lkKQoreworICBhZGRfcHJlZml4X2Nt ZCAoImV4cGxvcmUiLCBub19jbGFzcywgZXhwbG9yZV9jb21tYW5kLCBfKCJc CitFeHBsb3JlIHZhbHVlcyBhbmQgdHlwZXMgdmFsaWQgaW4gdGhlIGN1cnJl bnQgY29udGV4dC5cblVzYWdlOlxuXG5cCitleHBsb3JlIEFSR1xuXG5BUkcg aXMgZWl0aGVyIGEgdmFsaWQgZXhwcmVzc2lvbiBvciBhIHR5cGUgbmFtZS4i KSwKKyAgICAgICAgICAgICAgICAgICZleHBsb3JlX2xpc3QsICJleHBsb3Jl ICIsIDEsICZjbWRsaXN0KTsKKworICBhZGRfY21kICgidmFsdWUiLCBub19j bGFzcywgZXhwbG9yZV92YWx1ZV9jb21tYW5kLCBfKCJcCitFeHBsb3JlIHZh bHVlcyBvZiBleHByZXNzaW9ucyB2YWxpZCBpbiB0aGUgY3VycmVudCBjb250 ZXh0LlxuVXNhZ2U6XG5cblwKK2V4cGxvcmUgdmFsdWUgQVJHXG5cbkFSRyBp cyBhIHZhbGlkIGV4cHJlc3Npb24uIiksICZleHBsb3JlX2xpc3QpOworCisg IGFkZF9jbWQgKCJ0eXBlIiwgbm9fY2xhc3MsIGV4cGxvcmVfdHlwZV9jb21t YW5kLCBfKCJcCitFeHBsb3JlIHR5cGVzIHZhbGlkIGluIHRoZSBjdXJyZW50 IGNvbnRleHQuXG5Vc2FnZTpcblxuXAorZXhwbG9yZSB0eXBlIEFSR1xuXG5B UkcgaXMgYSB2YWxpZCB0eXBlIG5hbWUuIiksICZleHBsb3JlX2xpc3QpOwor fQpkaWZmIC1ydXBOIHNyYy9nZGIvTWFrZWZpbGUuaW4gc3JjX2V4cGxvcmUv c3JjL2dkYi9NYWtlZmlsZS5pbgotLS0gc3JjL2dkYi9NYWtlZmlsZS5pbgky MDEyLTAyLTA3IDExOjUxOjU5LjQ1OTk1NTU5NSArMDUzMAorKysgc3JjX2V4 cGxvcmUvc3JjL2dkYi9NYWtlZmlsZS5pbgkyMDEyLTAyLTA3IDExOjUxOjQ5 LjMwOTg5NDA5OSArMDUzMApAQCAtNjk1LDcgKzY5NSw3IEBAIFNGSUxFUyA9 IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10eXBlcHIKIAlkd2FyZjJleHBy LmMgZHdhcmYybG9jLmMgZHdhcmYycmVhZC5jIGR3YXJmMi1mcmFtZS5jIFwK IAlkd2FyZjItZnJhbWUtdGFpbGNhbGwuYyBcCiAJZWxmcmVhZC5jIGVudmly b24uYyBldmFsLmMgZXZlbnQtbG9vcC5jIGV2ZW50LXRvcC5jIFwKLQlleGNl cHRpb25zLmMgZXhwcHJpbnQuYyBcCisJZXhjZXB0aW9ucy5jIGV4cGxvcmUu YyBleHBwcmludC5jIFwKIAlmLWV4cC55IGYtbGFuZy5jIGYtdHlwZXByaW50 LmMgZi12YWxwcmludC5jIGZpbGVzeXN0ZW0uYyBcCiAJZmluZGNtZC5jIGZp bmR2YXIuYyBmcmFtZS5jIGZyYW1lLWJhc2UuYyBmcmFtZS11bndpbmQuYyBc CiAJZ2RiYXJjaC5jIGFyY2gtdXRpbHMuYyBnZGJ0eXBlcy5jIGdudS12Mi1h YmkuYyBnbnUtdjMtYWJpLmMgXApAQCAtODYxLDYgKzg2MSw3IEBAIENPTU1P Tl9PQlMgPSAkKERFUEZJTEVTKSAkKENPTkZJR19PQlMpICQKIAlpbmZjbWQu byBpbmZydW4ubyBcCiAJZXhwcHJpbnQubyBlbnZpcm9uLm8gc3RhY2subyB0 aHJlYWQubyBcCiAJZXhjZXB0aW9ucy5vIFwKKwlleHBsb3JlLm8gXAogCWZp bGVzeXN0ZW0ubyBcCiAJaW5mLWNoaWxkLm8gXAogCWludGVycHMubyBcCmRp ZmYgLXJ1cE4gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZXhwbG9yZS5j IHNyY19leHBsb3JlL3NyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2V4cGxv cmUuYwotLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZXhwbG9yZS5j CTE5NzAtMDEtMDEgMDU6MzA6MDAuMDAwMDAwMDAwICswNTMwCisrKyBzcmNf ZXhwbG9yZS9zcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9leHBsb3JlLmMJ MjAxMi0wMi0wNCAxNzoyOTowMC4wNTUyMzg3MDYgKzA1MzAKQEAgLTAsMCAr MSw4MiBAQAorLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KKworICAgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisqLworCisjZGVmaW5lIEFSUkFZX1NJWkUgMTAKKworc3RydWN0IFNp bXBsZVN0cnVjdAoreworICBpbnQgYTsKKyAgZG91YmxlIGQ7Cit9OworCit1 bmlvbiBTaW1wbGVVbmlvbgoreworICBpbnQgaTsKKyAgY2hhciBjOworICBm bG9hdCBmOworICBkb3VibGUgZDsKK307CisKK3R5cGVkZWYgc3RydWN0IFNp bXBsZVN0cnVjdCBTUzsKKworc3RydWN0IENvbXBsZXhTdHJ1Y3QKK3sKKyAg c3RydWN0IFNpbXBsZVN0cnVjdCBzOworICB1bmlvbiBTaW1wbGVVbmlvbiB1 OworICBTUyBzYVtBUlJBWV9TSVpFXTsKK307CisKK3VuaW9uIENvbXBsZXhV bmlvbgoreworICBTUyBzOworICBzdHJ1Y3QgU2ltcGxlU3RydWN0IHNhW0FS UkFZX1NJWkVdOworfTsKKworaW50CittYWluICh2b2lkKQoreworICBzdHJ1 Y3QgU2ltcGxlU3RydWN0IHNzOworICBzdHJ1Y3QgU2ltcGxlU3RydWN0KiBz c19wdHIgPSAmc3M7CisgIFNTIHNzX3Q7CisKKyAgdW5pb24gU2ltcGxlVW5p b24gc3U7CisgIHN0cnVjdCBDb21wbGV4U3RydWN0IGNzOworICBzdHJ1Y3Qg Q29tcGxleFN0cnVjdCogY3NfcHRyID0gJmNzOworICB1bmlvbiBDb21wbGV4 VW5pb24gY3U7CisgIGludCBpOworICBkb3VibGUgZGFycmF5WzVdID0gezAu MSwgMC4yLCAwLjMsIDAuNCwgMC41fTsKKyAgZG91YmxlICpkYXJyYXlfcmVm ID0gZGFycmF5OworCisgIHNzLmEgPSAxMDsKKyAgc3MuZCA9IDEwMC4wMTsK KyAgc3NfdCA9IHNzOworICAKKyAgc3UuZCA9IDEwMC4xOworCisgIGNzLnMg PSBzczsKKyAgY3MudSA9IHN1OworICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRTsgaSsrKQorICAgIHsKKyAgICAgIGNzLnNhW2ldLmEgPSBpOworICAg ICAgY3Muc2FbaV0uZCA9IDEwLjEwICsgaTsKKyAgICAgIGN1LnNhW2ldLmEg PSBpOworICAgICAgY3Uuc2FbaV0uZCA9IDEwMC4xMCArIGk7CisgICAgfQor CisgIHJldHVybiAwOyAvKiBCcmVhayBoZXJlLiAqLworfQpkaWZmIC1ydXBO IHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2V4cGxvcmUuZXhwIHNyY19l eHBsb3JlL3NyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2V4cGxvcmUuZXhw Ci0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9leHBsb3JlLmV4cAkx OTcwLTAxLTAxIDA1OjMwOjAwLjAwMDAwMDAwMCArMDUzMAorKysgc3JjX2V4 cGxvcmUvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZXhwbG9yZS5leHAJ MjAxMi0wMi0wOCAxMToyODo0Ny4wNzg2MjcxMjQgKzA1MzAKQEAgLTAsMCAr MSw0MzAgQEAKKyMgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMK KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKK3NldCB0ZXN0Zmls ZSAiZXhwbG9yZSIKK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKK3NldCBi aW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KK2lmIHsg W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZp bGV9ICR7c3JjZmlsZX1dIH0geworICAgIHJldHVybiAtMQorfQorCitzZXQg U1MgInN0cnVjdCBTaW1wbGVTdHJ1Y3QiCitzZXQgU1UgInVuaW9uIFNpbXBs ZVVuaW9uIgorc2V0IENTICJzdHJ1Y3QgQ29tcGxleFN0cnVjdCIKK3NldCBD VSAidW5pb24gQ29tcGxleFVuaW9uIgorc2V0IGVudGVyX2ZpZWxkX251bWJl cl9wcm9tcHQgIHtFbnRlciB0aGUgZmllbGQgbnVtYmVyIG9mIGNob2ljZTog fQorc2V0IHJldHVybl90b19wYXJlbnRfcHJvbXB0IHtQcmVzcyBlbnRlciB0 byByZXR1cm4gdG8gcGFyZW50IHZhbHVlOiB9CitzZXQgYXJyYXlfaW5kZXhf cHJvbXB0IHtFbnRlciB0aGUgaW5kZXggeW91IHdhbnQgdG8gZXhwbG9yZSBp biAuKjogfQorCitwcm9jIGNvbXBvdW5kX2Rlc2NyaXB0aW9uIHsgdmFsdWVf bmFtZSB0eXBlX25hbWUgfSB7CisgICAgcmV0dXJuICJUaGUgdmFsdWUgb2Yg JyR2YWx1ZV9uYW1lJyBpcyBvZiB0eXBlICckdHlwZV9uYW1lJyB3aXRoIHRo ZSBmb2xsb3dpbmcgZmllbGRzOlxbXHJcblxdKyIKK30KKworcHJvYyB0eXBl ZGVmX2Rlc2NyaXB0aW9uIHsgdmFsdWVfbmFtZSB0eXBlZGVmX25hbWUgdHlw ZV9uYW1lIH0geworICAgIHJldHVybiAiVGhlIHZhbHVlIG9mICckdmFsdWVf bmFtZScgaXMgb2YgdHlwZSAnJHR5cGVkZWZfbmFtZScgd2hpY2ggaXMgYSB0 eXBlZGVmIG9mIHR5cGUgJyR0eXBlX25hbWUnXC5cW1xyXG5cXSsiCit9CisK K3Byb2Mgc2NhbGFyX2Rlc2NyaXB0aW9uIHsgdmFsdWVfbmFtZSB0eXBlIH0g eworICAgIHJldHVybiAiJyR2YWx1ZV9uYW1lJyBpcyBhIHNjYWxhciB2YWx1 ZSBvZiB0eXBlICckdHlwZSdcLlxbXHJcblxdKyIKK30KKworcHJvYyBhcnJh eV9kZXNjcmlwdGlvbiB7IHZhbHVlX25hbWUgdHlwZSB9IHsKKyAgICByZXR1 cm4gIickdmFsdWVfbmFtZScgaXMgYW4gYXJyYXkgb2YgZWxlbWVudHMgb2Yg dHlwZSAnJHR5cGUnXC5cW1xyXG5cXSsiCit9CisKK3Byb2MgcG9pbnRlcl9k ZXNjcmlwdGlvbiB7IHZhbHVlX25hbWUgdHlwZV9uYW1lIH0geworICAgIHNl dCB0eXBlX2Rlc2NyaXB0aW9uICInJHZhbHVlX25hbWUnIGlzIGEgcG9pbnRl ciB0byBhIHZhbHVlIG9mIHR5cGUgJyR0eXBlX25hbWUnXC5cW1xyXG5cXSsi CisgICAgc2V0IHByb21wdCAiRG8geW91IHdhbnQgdG8gZXhwbG9yZSBpdCBh cyBhbiBhcnJheSBvciBhIHNpbmdsZSB2YWx1ZSBwb2ludGVyIFxbXFtcXWEv c1xbXF1cXSA6ICIgCisgICAgcmV0dXJuICIkdHlwZV9kZXNjcmlwdGlvbiRw cm9tcHQiCit9CisKK3Byb2MgZmllbGRfdmFsdWVzIHsgYXJncyB9IHsKKyAg ICBzZXQgcmVzdWx0ICIiCisgICAgZm9yZWFjaCBmaWVsZCAkYXJncyB7Cisg ICAgICAgIHNldCByZXN1bHQgIiRyZXN1bHRcWyBcXSokZmllbGQgXFtcLlxd XFtcLlxdIFxbXChcXVZhbHVlIG9mIHR5cGUgLipcW1wpXF1cW1xyXG5cXSsi CisgICAgfQorICAgIHJldHVybiAkcmVzdWx0Cit9CisKK3Byb2MgZmllbGRf Y2hvaWNlcyB7IGFyZ3MgfSB7CisgICAgc2V0IHJlc3VsdCAiIgorICAgIHNl dCBmaWVsZF9udW0gMAorICAgIGZvcmVhY2ggZmllbGQgJGFyZ3MgeworICAg ICAgICBzZXQgcmVzdWx0ICIkcmVzdWx0JGZpZWxkXFsgXF0rPVxbIFxdKzxF bnRlciAkZmllbGRfbnVtIHRvIGV4cGxvcmUgdGhpcyBmaWVsZCBvZiB0eXBl IC4qIgorICAgICAgICBpbmNyIGZpZWxkX251bQorICAgIH0KKyAgICByZXR1 cm4gJHJlc3VsdAorfQorCitwcm9jIHNjYWxhcl92YWx1ZSB7IHZhbHVlX25h bWUgdmFsdWUgfSB7CisgICAgcmV0dXJuICIkdmFsdWVfbmFtZSA9ICR2YWx1 ZVxbclxuXF0rIgorfQorCitzZXQgU1NfZmllbGRzIFtmaWVsZF92YWx1ZXMg e2EgPSAxMH0ge2QgPSAxMDBbLl0uKn1dCisKK2lmICFbcnVudG9fbWFpbl0g eworICAgcmV0dXJuIC0xCit9CisKK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJCcmVhayBoZXJlLiJdCitnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAiQnJlYWsgaGVyZSIgIi4qQnJlYWsgaGVyZS4qIgorCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFZhbHVlIGV4cGxvcmF0aW9u IHRlc3RzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2dkYl90ZXN0 ICJleHBsb3JlIGkiICJbc2NhbGFyX2Rlc2NyaXB0aW9uIHtpfSB7aW50fV0u KmkgPSAuKiIKK2dkYl90ZXN0ICJleHBsb3JlIHNzIiAiW2NvbXBvdW5kX2Rl c2NyaXB0aW9uIHtzc30gJFNTXS4qJFNTX2ZpZWxkcyIKK2dkYl90ZXN0ICJl eHBsb3JlICpzc19wdHIiICJbY29tcG91bmRfZGVzY3JpcHRpb24ge1wqc3Nf cHRyfSAkU1NdLiokU1NfZmllbGRzIgorZ2RiX3Rlc3QgImV4cGxvcmUgc3Nf dCIgIlt0eXBlZGVmX2Rlc2NyaXB0aW9uIHtzc190fSB7U1N9ICRTU10uKltj b21wb3VuZF9kZXNjcmlwdGlvbiB7c3NfdH0gJFNTXS4qJFNTX2ZpZWxkcyIK KworZ2RiX3Rlc3RfbXVsdGlwbGUgImV4cGxvcmUgc3NfcHRyIiAiIiB7Cisg ICAgLXJlICJbcG9pbnRlcl9kZXNjcmlwdGlvbiB7c3NfcHRyfSAkU1NdLioi IHsKKyAgICAgICAgcGFzcyAiZXhwbG9yZSBzc19wdHIiCisgICAgICAgIGdk Yl90ZXN0X211bHRpcGxlICJzIiAiZXhwbG9yZV9hc19zaW5nbGVfdmFsdWVf cG9pbnRlciIgeworICAgICAgICAgICAgLXJlICIkU1NfZmllbGRzIiB7Cisg ICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZSBzc19wdHIgYXMgc2luZ2xl IHZhbHVlIHBvaW50ZXIiCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg ICB9Cit9CisKK2dkYl90ZXN0X211bHRpcGxlICJleHBsb3JlIGRhcnJheV9y ZWYiICIiIHsKKyAgICAtcmUgIltwb2ludGVyX2Rlc2NyaXB0aW9uIHtkYXJy YXlfcmVmfSB7ZG91YmxlfV0uKiIgeworICAgICAgICBwYXNzICJleHBsb3Jl IGRhcnJheV9yZWYiCisgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJhIiAi ZXhwbG9yZV9hc19hcnJheSIgeworICAgICAgICAgICAgLXJlICIuKkVudGVy IHRoZSBpbmRleCB5b3Ugd2FudCB0byBleHBsb3JlIGluICdkYXJyYXlfcmVm JzouKiIgIHsKKyAgICAgICAgICAgICAgICBwYXNzICJleHBsb3JlX2FzX2Fy cmF5IgorICAgICAgICAgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICIyIiAi ZXhwbG9yZV9hc19hcnJheV9pbmRleF8yIiB7CisgICAgICAgICAgICAgICAg ICAgIC1yZSAiLionZGFycmF5X3JlZlxcXFsyXFxcXScgaXMgYSBzY2FsYXIg dmFsdWUgb2YgdHlwZSAnZG91YmxlJ1wuLipkYXJyYXlfcmVmXFxcWzJcXFxd ID0gMC4qIiB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJleHBs b3JlX2FzX2FycmF5X2luZGV4XzIiCisgICAgICAgICAgICAgICAgICAgICAg ICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJlbmQgZXhwbG9yZV9hc19hcnJh eV9pbmRleF8yIiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXJl ICIuKlJldHVybmluZyB0byBwYXJlbnQgdmFsdWUuKkVudGVyIHRoZSBpbmRl eCB5b3Ugd2FudCB0byBleHBsb3JlIGluICdkYXJyYXlfcmVmJzouKiIgewor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJlbmQgZXhw bG9yZV9hc19hcnJheV9pbmRleF8yIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJlbmQgZXhwbG9y ZV9hc19hcnJheSIgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLXJlICJcW1xuXHJcXSsiIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwYXNzICJlbmQgZXhwbG9yZV9hc19hcnJh eSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gCisg ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK2dkYl90ZXN0 X211bHRpcGxlICJleHBsb3JlIHN1IiAiIiB7CisgICAgLXJlICJbY29tcG91 bmRfZGVzY3JpcHRpb24ge3N1fSB7dW5pb24gU2ltcGxlVW5pb259XS4qW2Zp ZWxkX2Nob2ljZXMge2l9IHtjfSB7Zn0ge2R9XS4qJGVudGVyX2ZpZWxkX251 bWJlcl9wcm9tcHQiIHsKKyAgICAgICAgcGFzcyAiZXhwbG9yZSBzdSIKKyAg ICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIjMiICJleHBsb3JlIHN1LmQiIHsK KyAgICAgICAgICAgIC1yZSAiW3NjYWxhcl9kZXNjcmlwdGlvbiB7c3UuZH0g e2RvdWJsZX1dLipbc2NhbGFyX3ZhbHVlIHtzdS5kfSB7MTAwWy5dLip9XS4q JHJldHVybl90b19wYXJlbnRfcHJvbXB0IiB7CisgICAgICAgICAgICAgICAg cGFzcyAiZXhwbG9yZSBzdS5kIgorICAgICAgICAgICAgICAgIGdkYl90ZXN0 X211bHRpcGxlICIgIiAiZW5kIHN1LmQgZXhwbG9yYXRpb24iIHsKKyAgICAg ICAgICAgICAgICAgICAgLXJlICIuKltjb21wb3VuZF9kZXNjcmlwdGlvbiB7 c3V9IHt1bmlvbiBTaW1wbGVVbmlvbn1dLipbZmllbGRfY2hvaWNlcyB7aX0g e2N9IHtmfSB7ZH1dLiokZW50ZXJfZmllbGRfbnVtYmVyX3Byb21wdCIgewor ICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAiZW5kIHN1LmQgZXhwbG9y YXRpb24iCisgICAgICAgICAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0 aXBsZSAiXDAiICJlbmQgc3UgZXhwbG9yYXRpb24iIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtcmUgIiRnZGJfcHJvbXB0IiB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgImVuZCBzdSBleHBsb3Jh dGlvbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg ICB9Cit9CisKK2dkYl90ZXN0X211bHRpcGxlICJleHBsb3JlIGNzIiAiIiB7 CisgICAgLXJlICJbY29tcG91bmRfZGVzY3JpcHRpb24ge2NzfSB7c3RydWN0 IENvbXBsZXhTdHJ1Y3R9XS4qW2ZpZWxkX2Nob2ljZXMge3N9IHt1fSB7c2F9 XS4qJGVudGVyX2ZpZWxkX251bWJlcl9wcm9tcHQiIHsKKyAgICAgICAgcGFz cyAiZXhwbG9yZSBjcyIKKyAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIjAi ICJleHBsb3JlIGNzLnMiIHsKKyAgICAgICAgICAgIC1yZSAiW2NvbXBvdW5k X2Rlc2NyaXB0aW9uIHtjcy5zfSB7c3RydWN0IFNpbXBsZVN0cnVjdH1dLipb ZmllbGRfdmFsdWVzIHthID0gMTB9IHtkID0gMTAwWy5dLip9XS4qJHJldHVy bl90b19wYXJlbnRfcHJvbXB0IiB7CisgICAgICAgICAgICAgICAgcGFzcyAi ZXhwbG9yZSBjcy5zIgorICAgICAgICAgICAgICAgIGdkYl90ZXN0X211bHRp cGxlICIgIiAiZW5kIGNzLnMgZXhwbG9yYXRpb24iIHsKKyAgICAgICAgICAg ICAgICAgICAgLXJlICIuKiRlbnRlcl9maWVsZF9udW1iZXJfcHJvbXB0IiB7 CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJlbmQgY3MucyBleHBs b3JhdGlvbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGdkYl90ZXN0X211 bHRpcGxlICJcMCIgImVuZCBjcyBleHBsb3JhdGlvbiIgeworICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC1yZSAiJGdkYl9wcm9tcHQiIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAiZW5kIGNzIGV4cGxv cmF0aW9uIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor ICAgIH0KK30KKworZ2RiX3Rlc3RfbXVsdGlwbGUgImV4cGxvcmUgY3UiICIi IHsKKyAgICAtcmUgIltjb21wb3VuZF9kZXNjcmlwdGlvbiB7Y3V9IHt1bmlv biBDb21wbGV4VW5pb259XS4qW2ZpZWxkX2Nob2ljZXMge3N9IHtzYX1dLiok ZW50ZXJfZmllbGRfbnVtYmVyX3Byb21wdCIgeworICAgICAgICBwYXNzICJl eHBsb3JlIGN1IgorICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMSIgImV4 cGxvcmUgY3Uuc2EiIHsKKyAgICAgICAgICAgIC1yZSAiLipbYXJyYXlfZGVz Y3JpcHRpb24ge2N1LnNhfSAkU1NdLiokYXJyYXlfaW5kZXhfcHJvbXB0IiB7 CisgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZSBjdS5zYSIKKyAgICAg ICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMCIgImV4cGxvcmUgY3Uu c2FcWzBcXSIgeworICAgICAgICAgICAgICAgICAgICAtcmUgIltjb21wb3Vu ZF9kZXNjcmlwdGlvbiB7XChjdS5zYVwpXFswXF19IHtzdHJ1Y3QgU2ltcGxl U3RydWN0fV0uKltmaWVsZF92YWx1ZXMge2EgPSAwfSB7ZCA9IDEwMFsuXS4q fV0uKiRyZXR1cm5fdG9fcGFyZW50X3Byb21wdCIgeworICAgICAgICAgICAg ICAgICAgICAgICAgcGFzcyAiZXhwbG9yZSBjdS5zYVxbMFxdIgorICAgICAg ICAgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAiZW5k IGN1LnNhXFswXF0gZXhwbG9yYXRpb24iIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtcmUgIlthcnJheV9kZXNjcmlwdGlvbiB7Y3Uuc2F9ICRT U10kYXJyYXlfaW5kZXhfcHJvbXB0IiB7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBhc3MgImVuZCBjdS5zYVxbMFxdIGV4cGxvcmF0aW9u IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBs ZSAiXDAiICJlbmQgY3Uuc2EgZXhwbG9yYXRpb24iIHsKKyAgICAgICAgICAg ICAgICAgICAgLXJlICIuKiRlbnRlcl9maWVsZF9udW1iZXJfcHJvbXB0IiB7 CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJlbmQgY3Uuc2EgZXhw bG9yYXRpb24iCisgICAgICAgICAgICAgICAgICAgICAgICBnZGJfdGVzdF9t dWx0aXBsZSAiXDAiICJlbmQgY3UgZXhwbG9yYXRpb24iIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtcmUgIiRnZGJfcHJvbXB0IiB7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgImVuZCBjdSBleHBs b3JhdGlvbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K KyAgICB9Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUeXBl IGV4cGxvcmF0aW9uIHRlc3RzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KworcHJvYyBzY2FsYXJfdHlwZV9kZWNzcmlwdGlvbiB7dHlwZX0geworICAg IHJldHVybiAiJyR0eXBlJyBpcyBvZiBhIHNjYWxhciB0eXBlXC4iCit9CisK K3Byb2MgY2hpbGRfc2NhbGFyX3R5cGVfZGVzY3JpcHRpb24ge3BhdGggdHlw ZX0geworICAgIHJldHVybiAiJHBhdGggaXMgb2YgYSBzY2FsYXIgdHlwZSAn JHR5cGUnXC4iCit9CisKK3Byb2MgY29tcG91bmRfdHlwZV9kZXNjcmlwdGlv biB7IHR5cGVfbmFtZSB9IHsKKyAgICByZXR1cm4gIickdHlwZV9uYW1lJyBo YXMgdGhlIGZvbGxvd2luZyBmaWVsZHM6IgorfQorCitwcm9jIGNoaWxkX2Nv bXBvdW5kX3R5cGVfZGVzY3JpcHRpb24geyBwYXRoIHR5cGVfbmFtZSB9IHsK KyAgICByZXR1cm4gIiRwYXRoIGlzIG9mIHR5cGUgJyR0eXBlX25hbWUnIHdp dGggdGhlIGZvbGxvd2luZyBmaWVsZHM6IgorfQorCitwcm9jIGNoaWxkX2Fy cmF5X3R5cGVfZGVzY3JpcHRpb24geyBwYXRoIHRhcmdldF90eXBlX25hbWUg fSB7CisgICAgcmV0dXJuICIkcGF0aCBpcyBhbiBhcnJheSB0eXBlIHdpdGgg ZWxlbWVudHMgb2YgdHlwZSAnJHRhcmdldF90eXBlX25hbWUnXC4iCit9CisK K3Byb2MgdHlwZWRlZl90eXBlX2Rlc2NyaXB0aW9uIHsgdHlwZV9uYW1lIHRh cmdldF9uYW1lIH0geworICAgIHJldHVybiAiVGhlIHR5cGUgJyR0eXBlX25h bWUnIGlzIGEgdHlwZWRlZiBvZiB0eXBlICckdGFyZ2V0X25hbWUnXC4iCit9 CisKK3NldCBTU19maWVsZHNfdHlwZXMgW2ZpZWxkX2Nob2ljZXMge2F9IHtk fV0KK3NldCBTVV9maWVsZHNfdHlwZXMgW2ZpZWxkX2Nob2ljZXMge2l9IHtj fSB7Zn0ge2R9XQorc2V0IENTX2ZpZWxkc190eXBlcyBbZmllbGRfY2hvaWNl cyB7c30ge3V9IHtzYX1dCitzZXQgQ1VfZmllbGRzX3R5cGVzIFtmaWVsZF9j aG9pY2VzIHtzfSB7c2F9XQorCitzZXQgQ1NfZmllbGRfMCAiZmllbGQgJ3Mn IG9mICdzdHJ1Y3QgQ29tcGxleFN0cnVjdCciCitzZXQgQ1NfZmllbGRfMSAi ZmllbGQgJ3UnIG9mICdzdHJ1Y3QgQ29tcGxleFN0cnVjdCciCitzZXQgQ1Nf ZmllbGRfMiAiZmllbGQgJ3NhJyBvZiAnc3RydWN0IENvbXBsZXhTdHJ1Y3Qn Igorc2V0IENTX2ZpZWxkXzJfYXJyYXlfZWxlbWVudCAiYW4gYXJyYXkgZWxl bWVudCBvZiAkQ1NfZmllbGRfMiIKKworc2V0IENVX2ZpZWxkXzAgImZpZWxk ICdzJyBvZiAndW5pb24gQ29tcGxleFVuaW9uJyIKK3NldCBDVV9maWVsZF8x ICJmaWVsZCAnc2EnIG9mICd1bmlvbiBDb21wbGV4VW5pb24nIgorc2V0IENV X2ZpZWxkXzFfYXJyYXlfZWxlbWVudCAiYW4gYXJyYXkgZWxlbWVudCBvZiAk Q1VfZmllbGRfMSIKKworZ2RiX3Rlc3QgImV4cGxvcmUgaW50IiAiLipbc2Nh bGFyX3R5cGVfZGVjc3JpcHRpb24ge2ludH1dLioiCisKK2dkYl90ZXN0X211 bHRpcGxlICJleHBsb3JlIHN0cnVjdCBTaW1wbGVTdHJ1Y3QiICIiIHsKKyAg ICAtcmUgIi4qW2NvbXBvdW5kX3R5cGVfZGVzY3JpcHRpb24gJFNTXS4qJFNT X2ZpZWxkc190eXBlcy4qIiB7CisgICAgICAgIHBhc3MgImV4cGxvcmUgc3Ry dWN0IFNpbXBsZVN0cnVjdCIKKyAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUg IjAiICJleHBsb3JlIHR5cGUgc3RydWN0IFNpbXBsZVN0cnVjdCBmZWlsZCAw IiB7CisgICAgICAgICAgICAtcmUgIi4qW2NoaWxkX3NjYWxhcl90eXBlX2Rl c2NyaXB0aW9uIHtmaWVsZCAnYScgb2YgJ3N0cnVjdCBTaW1wbGVTdHJ1Y3Qn fSB7aW50fV0uKiIgeworICAgICAgICAgICAgICAgIHBhc3MgImV4cGxvcmUg dHlwZSBzdHJ1Y3QgU2ltcGxlU3RydWN0IGZlaWxkIDAiCisgICAgICAgICAg ICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuIHRvIHN0cnVj dCBTaW1wbGVTdHJ1Y3QgZnJvbSBmaWVsZCAwIiB7CisgICAgICAgICAgICAg ICAgICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkU1Nd LiokU1NfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHBhc3MgInJldHVybiB0byBzdHJ1Y3QgU2ltcGxlU3RydWN0IGZyb20g ZmllbGQgMCIKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBnZGJf dGVzdF9tdWx0aXBsZSAiMSIgImV4cGxvcmUgdHlwZSBzdHJ1Y3QgU2ltcGxl U3RydWN0IGZlaWxkIDEiIHsKKyAgICAgICAgICAgIC1yZSAiLipbY2hpbGRf c2NhbGFyX3R5cGVfZGVzY3JpcHRpb24ge2ZpZWxkICdkJyBvZiAnc3RydWN0 IFNpbXBsZVN0cnVjdCd9IHtkb3VibGV9XS4qIiB7CisgICAgICAgICAgICAg ICAgcGFzcyAiZXhwbG9yZSB0eXBlIHN0cnVjdCBTaW1wbGVTdHJ1Y3QgZmVp bGQgMSIKKyAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAi ICJyZXR1cm4gdG8gc3RydWN0IFNpbXBsZVN0cnVjdCBmcm9tIGZpZWxkIDEi IHsKKyAgICAgICAgICAgICAgICAgICAgLXJlICIuKltjb21wb3VuZF90eXBl X2Rlc2NyaXB0aW9uICRTU10uKiRTU19maWVsZHNfdHlwZXMuKiIgeworICAg ICAgICAgICAgICAgICAgICAgICAgcGFzcyAicmV0dXJuIHRvIHN0cnVjdCBT aW1wbGVTdHJ1Y3QgZnJvbSBmaWVsZCAxIgorICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg ICB9CisgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIgInJldHVybiB0 byBHREIgcHJvbXB0IGZyb20gc3RydWN0IFNpbXBsZVN0cnVjdCIgeworICAg ICAgICAgICAgLXJlICIkZ2RiX3Byb21wdCIgeworICAgICAgICAgICAgICAg IHBhc3MgInJldHVybiB0byBHREIgcHJvbXB0IGZyb20gc3RydWN0IFNpbXBs ZVN0cnVjdCIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K KworZ2RiX3Rlc3RfbXVsdGlwbGUgImV4cGxvcmUgdW5pb24gU2ltcGxlVW5p b24iICIiIHsKKyAgLXJlICIuKltjb21wb3VuZF90eXBlX2Rlc2NyaXB0aW9u ICRTVV0uKiRTVV9maWVsZHNfdHlwZXMuKiIgeworICAgICAgcGFzcyAiZXhw bG9yZSB1bmlvbiBTaW1wbGVVbmlvbiIKKyAgICAgICAgZ2RiX3Rlc3RfbXVs dGlwbGUgIjAiICJleHBsb3JlIHR5cGUgdW5pb24gU2ltcGxlVW5pb24gZmVp bGQgMCIgeworICAgICAgICAgICAgLXJlICIuKltjaGlsZF9zY2FsYXJfdHlw ZV9kZXNjcmlwdGlvbiB7ZmllbGQgJ2knIG9mICd1bmlvbiBTaW1wbGVVbmlv bid9IHtpbnR9XS4qIiB7CisgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9y ZSB0eXBlIHVuaW9uIFNpbXBsZVVuaW9uIGZlaWxkIDAiCisgICAgICAgICAg ICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuIHRvIHVuaW9u IFNpbXBsZVVuaW9uIGZyb20gZmllbGQgMCIgeworICAgICAgICAgICAgICAg ICAgICAtcmUgIi4qW2NvbXBvdW5kX3R5cGVfZGVzY3JpcHRpb24gJFNVXS4q JFNVX2ZpZWxkc190eXBlcy4qIiB7CisgICAgICAgICAgICAgICAgICAgICAg ICBwYXNzICJyZXR1cm4gdG8gdW5pb24gU2ltcGxlVW5pb24gZnJvbSBmaWVs ZCAwIgorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGdkYl90ZXN0 X211bHRpcGxlICIxIiAiZXhwbG9yZSB0eXBlIHVuaW9uIFNpbXBsZVVuaW9u IGZlaWxkIDEiIHsKKyAgICAgICAgICAgIC1yZSAiLipbY2hpbGRfc2NhbGFy X3R5cGVfZGVzY3JpcHRpb24ge2ZpZWxkICdjJyBvZiAndW5pb24gU2ltcGxl VW5pb24nfSB7Y2hhcn1dLioiIHsKKyAgICAgICAgICAgICAgICBwYXNzICJl eHBsb3JlIHR5cGUgdW5pb24gU2ltcGxlVW5pb24gZmVpbGQgMSIKKyAgICAg ICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJyZXR1cm4gdG8g dW5pb24gU2ltcGxlVW5pb24gZnJvbSBmaWVsZCAxIiB7CisgICAgICAgICAg ICAgICAgICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAk U1VdLiokU1VfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgIHBhc3MgInJldHVybiB0byB1bmlvbiBTaW1wbGVVbmlvbiBmcm9t IGZpZWxkIDEiCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZ2Ri X3Rlc3RfbXVsdGlwbGUgIjIiICJleHBsb3JlIHR5cGUgdW5pb24gU2ltcGxl VW5pb24gZmVpbGQgMiIgeworICAgICAgICAgICAgLXJlICIuKltjaGlsZF9z Y2FsYXJfdHlwZV9kZXNjcmlwdGlvbiB7ZmllbGQgJ2YnIG9mICd1bmlvbiBT aW1wbGVVbmlvbid9IHtmbG9hdH1dLioiIHsKKyAgICAgICAgICAgICAgICBw YXNzICJleHBsb3JlIHR5cGUgdW5pb24gU2ltcGxlVW5pb24gZmVpbGQgMiIK KyAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJyZXR1 cm4gdG8gdW5pb24gU2ltcGxlVW5pb24gZnJvbSBmaWVsZCAyIiB7CisgICAg ICAgICAgICAgICAgICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlw dGlvbiAkU1VdLiokU1VfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgIHBhc3MgInJldHVybiB0byB1bmlvbiBTaW1wbGVVbmlv biBmcm9tIGZpZWxkIDIiCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg ICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIjMiICJleHBsb3JlIHR5cGUgdW5pb24g U2ltcGxlVW5pb24gZmVpbGQgMyIgeworICAgICAgICAgICAgLXJlICIuKltj aGlsZF9zY2FsYXJfdHlwZV9kZXNjcmlwdGlvbiB7ZmllbGQgJ2QnIG9mICd1 bmlvbiBTaW1wbGVVbmlvbid9IHtkb3VibGV9XS4qIiB7CisgICAgICAgICAg ICAgICAgcGFzcyAiZXhwbG9yZSB0eXBlIHVuaW9uIFNpbXBsZVVuaW9uIGZl aWxkIDMiCisgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlww IiAicmV0dXJuIHRvIHVuaW9uIFNpbXBsZVVuaW9uIGZyb20gZmllbGQgMyIg eworICAgICAgICAgICAgICAgICAgICAtcmUgIi4qW2NvbXBvdW5kX3R5cGVf ZGVzY3JpcHRpb24gJFNVXS4qJFNVX2ZpZWxkc190eXBlcy4qIiB7CisgICAg ICAgICAgICAgICAgICAgICAgICBwYXNzICJyZXR1cm4gdG8gdW5pb24gU2lt cGxlVW5pb24gZnJvbSBmaWVsZCAzIgorICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9 CisgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIgInJldHVybiB0byBH REIgcHJvbXB0IGZyb20gdW5pb24gU2ltcGxlVW5pb24iIHsKKyAgICAgICAg ICAgIC1yZSAiJGdkYl9wcm9tcHQiIHsKKyAgICAgICAgICAgICAgICBwYXNz ICJyZXR1cm4gdG8gR0RCIHByb21wdCBmcm9tIHVuaW9uIFNpbXBsZVVuaW9u IgorICAgICAgICAgICAgfQorICAgICAgICB9CisgIH0KK30KKworZ2RiX3Rl c3RfbXVsdGlwbGUgImV4cGxvcmUgU1MiICIiIHsKKyAgICAtcmUgIi4qW3R5 cGVkZWZfdHlwZV9kZXNjcmlwdGlvbiB7U1N9ICRTU10uKltjb21wb3VuZF90 eXBlX2Rlc2NyaXB0aW9uIHtTU31dLiokU1NfZmllbGRzX3R5cGVzLioiIHsK KyAgICAgICAgcGFzcyAiZXhwbG9yZSBTUyIKKyAgICAgICAgZ2RiX3Rlc3Rf bXVsdGlwbGUgIjAiICJleHBsb3JlIHR5cGUgU1MgZmVpbGQgMCIgeworICAg ICAgICAgICAgLXJlICIuKltjaGlsZF9zY2FsYXJfdHlwZV9kZXNjcmlwdGlv biB7ZmllbGQgJ2EnIG9mICdTUyd9IHtpbnR9XS4qIiB7CisgICAgICAgICAg ICAgICAgcGFzcyAiZXhwbG9yZSB0eXBlIFNTIGZlaWxkIDAiCisgICAgICAg ICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuIHRvIFNT IGZyb20gZmllbGQgMCIgeworICAgICAgICAgICAgICAgICAgICAtcmUgIi4q W2NvbXBvdW5kX3R5cGVfZGVzY3JpcHRpb24ge1NTfV0uKiRTU19maWVsZHNf dHlwZXMuKiIgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAicmV0 dXJuIHRvIFNTIGZyb20gZmllbGQgMCIKKyAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg fQorICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMSIgImV4cGxvcmUgdHlw ZSBTUyBmZWlsZCAxIiB7CisgICAgICAgICAgICAtcmUgIi4qW2NoaWxkX3Nj YWxhcl90eXBlX2Rlc2NyaXB0aW9uIHtmaWVsZCAnZCcgb2YgJ1NTJ30ge2Rv dWJsZX1dLioiIHsKKyAgICAgICAgICAgICAgICBwYXNzICJleHBsb3JlIHR5 cGUgU1MgZmVpbGQgMSIKKyAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0 aXBsZSAiXDAiICJyZXR1cm4gdG8gc3RydWN0IFNpbXBsZVN0cnVjdCBmcm9t IGZpZWxkIDEiIHsKKyAgICAgICAgICAgICAgICAgICAgLXJlICIuKltjb21w b3VuZF90eXBlX2Rlc2NyaXB0aW9uIHtTU31dLiokU1NfZmllbGRzX3R5cGVz LioiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgInJldHVybiB0 byBTUyBmaWVsZCAxIgorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg IGdkYl90ZXN0X211bHRpcGxlICJcMCIgInJldHVybiB0byBHREIgcHJvbXB0 IGZyb20gU1MiIHsKKyAgICAgICAgICAgIC1yZSAiJGdkYl9wcm9tcHQiIHsK KyAgICAgICAgICAgICAgICBwYXNzICJyZXR1cm4gdG8gR0RCIHByb21wdCBm cm9tIFNTIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQor CitnZGJfdGVzdF9tdWx0aXBsZSAiZXhwbG9yZSB0eXBlIHN0cnVjdCBDb21w bGV4U3RydWN0IiAiIiB7CisgICAgLXJlICIuKltjb21wb3VuZF90eXBlX2Rl c2NyaXB0aW9uICRDU10uKiRDU19maWVsZHNfdHlwZXMuKiIgeworICAgICAg ICBwYXNzICJleHBsb3JlIHR5cGUgc3RydWN0IENvbXBsZXhTdHJ1Y3QiCisg ICAgICAgIGdkYl90ZXN0X211bHRpcGxlICIwIiAiZXhwbG9yZSB0eXBlIHN0 cnVjdCBDb21wbGV4U3RydWN0IGZpZWxkIDAiIHsKKyAgICAgICAgICAgIC1y ZSAiLipbY2hpbGRfY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkQ1NfZmll bGRfMCAkU1NdLiokU1NfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgICAg ICAgICBwYXNzICJleHBsb3JlIHR5cGUgc3RydWN0IENvbXBsZXhTdHJ1Y3Qg ZmllbGQgMCIKKyAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAi XDAiICJyZXR1cm4gdG8gQ29tcGxleFN0cnVjdCBmcm9tIGZpZWxkIDAiIHsK KyAgICAgICAgICAgICAgICAgICAgLXJlICIuKltjb21wb3VuZF90eXBlX2Rl c2NyaXB0aW9uICRDU10uKiRDU19maWVsZHNfdHlwZXMuKiIgeworICAgICAg ICAgICAgICAgICAgICAgICAgcGFzcyAicmV0dXJuIHRvIENvbXBsZXhTdHJ1 Y3QgZnJvbSBmaWVsZCAwIgorICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg ICAgIGdkYl90ZXN0X211bHRpcGxlICIxIiAiZXhwbG9yZSB0eXBlIHN0cnVj dCBDb21wbGV4U3RydWN0IGZpZWxkIDEiIHsKKyAgICAgICAgICAgIC1yZSAi LipbY2hpbGRfY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkQ1NfZmllbGRf MSAkU1VdLiokU1VfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgICAgICAg ICBwYXNzICJleHBsb3JlIHR5cGUgc3RydWN0IENvbXBsZXhTdHJ1Y3QgZmll bGQgMSIKKyAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAi ICJyZXR1cm4gdG8gQ29tcGxleFN0cnVjdCBmcm9tIGZpZWxkIDEiIHsKKyAg ICAgICAgICAgICAgICAgICAgLXJlICIuKltjb21wb3VuZF90eXBlX2Rlc2Ny aXB0aW9uICRDU10uKiRDU19maWVsZHNfdHlwZXMuKiIgeworICAgICAgICAg ICAgICAgICAgICAgICAgcGFzcyAicmV0dXJuIHRvIENvbXBsZXhTdHJ1Y3Qg ZnJvbSBmaWVsZCAxIgorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg IGdkYl90ZXN0X211bHRpcGxlICIyIiAiZXhwbG9yZSB0eXBlIHN0cnVjdCBD b21wbGV4U3RydWN0IGZpZWxkIDIiIHsKKyAgICAgICAgICAgIC1yZSAiLipb Y2hpbGRfYXJyYXlfdHlwZV9kZXNjcmlwdGlvbiAkQ1NfZmllbGRfMiB7U1N9 XS4qIiB7CisgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZSB0eXBlIHN0 cnVjdCBDb21wbGV4U3RydWN0IGZpZWxkIDIiCisgICAgICAgICAgICAgICAg Z2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuIHRvIENvbXBsZXhTdHJ1 Y3QgZnJvbSBmaWVsZCAyIiB7CisgICAgICAgICAgICAgICAgICAgIC1yZSAi LipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkQ1NdLiokQ1NfZmllbGRz X3R5cGVzLioiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgInJl dHVybiB0byBDb21wbGV4U3RydWN0IGZyb20gZmllbGQgMiIKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0KKyAgICAgICAgfQorICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAi ICJyZXR1cm4gdG8gR0RCIHByb21wdCBmcm9tIENvbXBsZXhTdHJ1Y3QgdHlw ZSBleHBsb3JhdGlvbiIgeworICAgICAgICAgICAgLXJlICIkZ2RiX3Byb21w dCIgeworICAgICAgICAgICAgICAgIHBhc3MgInJldHVybiB0byBHREIgcHJv bXB0IGZyb20gQ29tcGxleFN0cnVjdCB0eXBlIGV4cGxvcmF0aW9uIgorICAg ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitnZGJfdGVzdF9t dWx0aXBsZSAiZXhwbG9yZSB0eXBlIHVuaW9uIENvbXBsZXhVbmlvbiIgIiIg eworICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkQ1Vd LiokQ1VfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgcGFzcyAiZXhwbG9y ZSB0eXBlIHVuaW9uIENvbXBsZXhVbmlvbiIKKyAgICAgICAgZ2RiX3Rlc3Rf bXVsdGlwbGUgIjAiICJleHBsb3JlIHR5cGUgdW5pb24gQ29tcGxleFN0cnVj dCBmaWVsZCAwIiB7CisgICAgICAgICAgICAtcmUgIi4qW2NoaWxkX2NvbXBv dW5kX3R5cGVfZGVzY3JpcHRpb24gJENVX2ZpZWxkXzAgJFNTXS4qJFNTX2Zp ZWxkc190eXBlcy4qIiB7CisgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9y ZSB0eXBlIHVuaW9uIENvbXBsZXhVbmlvbiBmaWVsZCAwIgorICAgICAgICAg ICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIgInJldHVybiB0byBDb21w bGV4VW5pb24gZnJvbSBmaWVsZCAwIiB7CisgICAgICAgICAgICAgICAgICAg IC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkQ1VdLiokQ1Vf ZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBh c3MgInJldHVybiB0byBDb21wbGV4VW5pb24gZnJvbSBmaWVsZCAwIgorICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGdkYl90ZXN0X211bHRpcGxl ICIxIiAiZXhwbG9yZSB0eXBlIHVuaW9uIENvbXBsZXhVbmlvbiBmaWVsZCAx IiB7CisgICAgICAgICAgICAtcmUgIi4qW2NoaWxkX2FycmF5X3R5cGVfZGVz Y3JpcHRpb24gJENVX2ZpZWxkXzEgJFNTXS4qIiB7CisgICAgICAgICAgICAg ICAgcGFzcyAiZXhwbG9yZSB0eXBlIHVuaW9uIENvbXBsZXhVbmlvbiBmaWVs ZCAxIgorICAgICAgICAgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIg InJldHVybiB0byBDb21wbGV4VW5pb24gYXJyYXkiIHsKKyAgICAgICAgICAg ICAgICAgICAgLXJlICIuKltjb21wb3VuZF90eXBlX2Rlc2NyaXB0aW9uICRD VV0uKiRDVV9maWVsZHNfdHlwZXMuKiIgeworICAgICAgICAgICAgICAgICAg ICAgICAgcGFzcyAicmV0dXJuIHRvIENvbXBsZXhVbmlvbiBmcm9tIGZpZWxk IDEiCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZ2RiX3Rlc3Rf bXVsdGlwbGUgIlwwIiAicmV0dXJuIHRvIEdEQiBwcm9tcHQgZnJvbSBDb21w bGV4VW5pb24gdHlwZSBleHBsb3JhdGlvbiIgeworICAgICAgICAgICAgLXJl ICIkZ2RiX3Byb21wdCIgeworICAgICAgICAgICAgICAgIHBhc3MgInJldHVy biB0byBHREIgcHJvbXB0IGZyb20gQ29tcGxleFVuaW9uIHR5cGUgZXhwbG9y YXRpb24iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRp ZmYgLXJ1cE4gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvTWFrZWZpbGUu aW4gc3JjX2V4cGxvcmUvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvTWFr ZWZpbGUuaW4KLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL01ha2Vm aWxlLmluCTIwMTEtMTEtMDEgMjA6MjE6MjUuMDAwMDAwMDAwICswNTMwCisr KyBzcmNfZXhwbG9yZS9zcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9NYWtl ZmlsZS5pbgkyMDEyLTAyLTA0IDEyOjAzOjEzLjgxMjg1Njg5MCArMDUzMApA QCAtMTEsNyArMTEsNyBAQCBFWEVDVVRBQkxFUyA9IGEyLXJ1biBhZHZhbmNl IGFsbC10eXBlcyBhCiAJY2huZy1zeW1zIGNvZGVfZWxpbTEgY29kZV9lbGlt MiBjb21tYW5kcyBjb21waWxlciBjb21wbGV4IFwKIAljb25kYnJlYWsgY29u c2VjdXRpdmUgY29uc3R2YXJzIGNvcmVtYWtlciBjdXJzYWwgY3ZleHByIFwK IAlkYngtdGVzdCBkZWwgZGlzYXNtLWVuZC1jdSBkaXNwbGF5IGR1bXAgZHVw LXNlY3QgZHVwLXNlY3QuZGVidWcgXAotCWR1cC1zZWN0LnN0cmlwcGVkIGVu ZGluZy1ydW4gZXhlY2QtcHJvZyBleHBhbmQtcHN5bXRhYnMgZXhwcnMgXAor CWR1cC1zZWN0LnN0cmlwcGVkIGVuZGluZy1ydW4gZXhlY2QtcHJvZyBleHBh bmQtcHN5bXRhYnMgZXhwbG9yZSBleHBycyBcCiAJZmlsZWlvIGZpbmQgZmlu aXNoIGZpeHNlY3Rpb24gZmxvYXQgZm9sbC1leGVjIGZvbGwtZm9yayBmb2xs LXZmb3JrIFwKIAlmcmFtZS1hcmdzIGZyZWVicGNtZCBmdWxsbmFtZSBmdW5j YXJncyBnY29yZSBcCiAJZ2NvcmUtYnVmZmVyLW92ZXJmbG93LTAxMiogXAo= --20cf30363f35a5187304b870971a--