X-Original-To: alpine-devel@lists.alpinelinux.org Delivered-To: alpine-devel@mail.alpinelinux.org Received: from mail-pa0-f54.google.com (mail-pa0-f54.google.com [209.85.220.54]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mail.alpinelinux.org (Postfix) with ESMTPS id C57FEDC00E4 for ; Sun, 14 Sep 2014 06:39:01 +0000 (UTC) Received: by mail-pa0-f54.google.com with SMTP id lj1so4343567pab.27 for ; Sat, 13 Sep 2014 23:39:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; bh=3Ws5RQWm25689e21uH6OUkLMFdsGnMakG0c0g4Na1po=; b=YDNdqlXc0ZSJLIZ0+P0psPtLYiZ7XYCzIcygGrZ65vP8pEgrGnGiHIXpp5rG5G06CM BUzyFSlXSxpWpCxA5+gatZQDyhjsm37kEj7tdHf9gGZ5lj4eTk6M7Qj8XyEfisAy+X2D qiykFImjTojNT87PslbPp4sqfqHCrTF60509/lbH2TnaQTVklzgkUd4w+Cvlf+qIsCuX ZfJK4P/YnQFlwAwYRVwl37xh401k0hy7MyLPYVui+qM3rI7eS+rKGAqW5W4yjJ6qr0dT WLBHMLhO+fZVt4PcLW8vImVEGeLMeYU0HwmwFXRfzbSRmiV3Ox4DG6bsBEgijP4UXtg5 B/MQ== X-Received: by 10.68.102.132 with SMTP id fo4mr27972470pbb.96.1410676320832; Sat, 13 Sep 2014 23:32:00 -0700 (PDT) Received: from localhost.localdomain ([50.0.225.123]) by mx.google.com with ESMTPSA id du5sm8003928pbb.80.2014.09.13.23.31.58 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 13 Sep 2014 23:31:59 -0700 (PDT) From: Isaac Dunham To: alpine-devel@lists.alpinelinux.org Cc: Isaac Dunham Subject: [alpine-devel] [PATCH] testing/heirloom-mailx: new aport Date: Sat, 13 Sep 2014 23:31:40 -0700 Message-Id: <1410676300-7510-1-git-send-email-ibid.ag@gmail.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <20140913203317.GA5578@newbook> References: <20140913203317.GA5578@newbook> X-Mailinglist: alpine-devel Precedence: list List-Id: Alpine Development List-Unsubscribe: List-Post: List-Help: List-Subscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 aGVpcmxvb20tbWFpbHggaXMgYSBjbG9uZSBvZiBTeXN0ZW0gViAibWFpbHgiLCBiYXNlZCBvbiBC ZXJrZWxleSBNYWlsIDguMS4NCg0KSXQgaGFzIGJlZW4gZW5oYW5jZWQgdG8gcHJvdmlkZSBhbGwg dGhlIGNvbW1hbmQgbGluZSBvcHRpb25zDQpyZXF1aXJlZCBieSBQT1NJWCwgYXMgd2VsbCBhcyBz ZXZlcmFsIG90aGVyIGZlYXR1cmVzOg0KKiBzdXBwb3J0IGZvciBNSU1FLCBTL01JTUUsIGFuZCBh dHRhY2htZW50cw0KKiBzdXBwb3J0IGZvciBTTVRQKFMpLCBQT1AzKFMpLCBhbmQgSU1BUChTKQ0K KiBzdXBwb3J0IGZvciBtYWlsZGlyLWZvcm1hdCBlbWFpbCBhcmNoaXZlcw0KLi4uIGFuZCBtdWNo ICBtb3JlLg0KLS0tDQogdGVzdGluZy9oZWlybG9vbS1tYWlseC8xMi40LXRvLTEyLjVwcmUucGF0 Y2ggfCAxMDAxICsrKysrKysrKysrKysrKysrKysrKysrKysrDQogdGVzdGluZy9oZWlybG9vbS1t YWlseC9BUEtCVUlMRCAgICAgICAgICAgICAgfCAgIDQ5ICsrDQogdGVzdGluZy9oZWlybG9vbS1t YWlseC9tYWtldmFycy5wYXRjaCAgICAgICAgfCAgIDMzICsNCiAzIGZpbGVzIGNoYW5nZWQsIDEw ODMgaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0aW5nL2hlaXJsb29tLW1h aWx4LzEyLjQtdG8tMTIuNXByZS5wYXRjaA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0aW5nL2hl aXJsb29tLW1haWx4L0FQS0JVSUxEDQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RpbmcvaGVpcmxv b20tbWFpbHgvbWFrZXZhcnMucGF0Y2gNCg0KZGlmZiAtLWdpdCBhL3Rlc3RpbmcvaGVpcmxvb20t bWFpbHgvMTIuNC10by0xMi41cHJlLnBhdGNoIGIvdGVzdGluZy9oZWlybG9vbS1tYWlseC8xMi40 LXRvLTEyLjVwcmUucGF0Y2gNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi45 ZmQ1YzhmDQotLS0gL2Rldi9udWxsDQorKysgYi90ZXN0aW5nL2hlaXJsb29tLW1haWx4LzEyLjQt dG8tMTIuNXByZS5wYXRjaA0KQEAgLTAsMCArMSwxMDAxIEBADQorLS0tIG1haWx4LTEyLjQvQ2hh bmdlTG9nDQorKysrIG5haWwvQ2hhbmdlTG9nDQorQEAgLTEsMyArMSwzOCBAQA0KKytbMTIuNV0g YXMgb2YgNy81LzEwDQorKyogVGhlIHVuZG9jdW1lbnRlZCBjb250ZW50dHlwZS1jbnRybCBvcHRp b24gd29ya3MgYWdhaW4gKHBhdGNoIGJ5DQorKyAgTGF1cmVudCBQYXJlbnRlYXUpLg0KKysNCisr WzEyLjVdIGFzIG9mIDYvMjAvMTANCisrKiBGaXhlZCBhIG1lc3NhZ2UgY29ycnVwdGlvbiB0aGF0 IG9jY3VycmVkIHdoZW4gdGhlICJpbmMiIGNvbW1hbmQgd2FzIHVzZWQNCisrICB3aXRoIGEgbWJv eCBmb3JtYXQgbWFpbGJveCBhZnRlciBlbmNyeXB0ZWQgbWVzc2FnZXMgaGFkIGJlZW4gdmlld2Vk DQorKyAgKHJlcG9ydGVkIGJ5IE1hcnRpbiBOZWl0emVsKS4NCisrKiBGaXhlZCBhIGNvbmRpdGlv biB0aGF0IGNhdXNlZCBtYWlseCB0byBoYW5nIHdoZW4gbG9va2luZyBhdCBhIG1lc3NhZ2UsDQor KyAgY29weWluZyB0aGF0IG1lc3NhZ2UsIGFuZCBpc3N1aW5nIGEgInoiIGNvbW1hbmQgZXZhbHVh dGluZyBhbiB1bmNhY2hlZA0KKysgIHBvcnRpb24gb2YgYW4gSU1BUCBmb2xkZXIuDQorKyogTWFr ZSBpdCBjb21waWxlIHdpdGggT3BlblNTTCAxLjAuMC1iZXRhMiAocGF0Y2ggYnkgQmVybmhhcmQg Um9zZW5rcsOkbnplcikuDQorKyogV2hlbiBleGVjdXRpbmcgYW4gImFjY291bnQiIGNvbW1hbmQs IGVuc3VyZSB0aGF0IHRoZSB2YWx1ZXMgb2YgdGhlICJob2xkIiwNCisrICAia2VlcHNhdmUiLCAi YXBwZW5kIiwgYW5kICJlbXB0eWJveCIgdmFyaWFibGVzIHJlbWFpbiB0aG9zZSBvZiB0aGUgcHJl dmlvdXMNCisrICBhY2NvdW50IGZvciBhbGwgb3V0c3RhbmRpbmcgb3BlcmF0aW9ucyBvbiB0aGF0 IGFjY291bnQgKGJ1ZyByZXBvcnRlZCBieQ0KKysgIEplZmYgV29vZGFsbCkuDQorKyogU3VwcG9y dCBHbWFpbCBJTUFQIHNlbWFudGljcyBvZiAiZGVsZXRlIiB0dXJuaW5nIGludG8gImFyY2hpdmUi LiBQcmV2aW91c2x5LA0KKysgIHdoZW4gbWFpbHggd2FzIHNldHRpbmcgdGhlICJcRGVsZXRlZCIg ZmxhZyBvbiBhIG1lc3NhZ2UsIGl0IGRpZCBub3Qgc2V0IGFueQ0KKysgIG90aGVyIGZsYWdzLiBU aGlzIGNhdXNlZCBtYWlscyB0aGF0IGhhZCBiZWVuIHJlYWQgYW5kIHRoZW4gZGVsZXRlZCB0byBh cHBlYXINCisrICBhcyB1bnJlYWQgaW4gR21haWwncyAiQWxsIE1haWwiLiBOb3csIGZsYWdzIGJl c2lkZXMgIlxEZWxldGVkIiBhcmUgYWxzbyBzZXQsDQorKyAgc28gdGhhdCB0aGV5IGFyZSBrZXB0 IGluIHRoZSBhcmNoaXZlZCBjb3B5IChyZXBvcnRlZCBieSBKZXJlbXkgTydCcmllbikuDQorKyog Rm9yIFJGQyAyMDQ3IE1JTUUgImVuY29kZWQtd29yZCIgcGFydHMgaW4gaGVhZGVycywgYXNzdW1l IHRoYXQgdGhlIGVuZCBvZg0KKysgIGVhY2ggd29yZCByZXNldHMgdGhlIGNvbnZlcnNpb24gc3Rh dGUgKFllZGlkeWFoIEJhci1EYXZpZCkuDQorKyogV2hlbiB0aGUgT1JHQU5JWkFUSU9OIHZhcmlh YmxlIGhhcyBhbiBlbXB0eSB2YWx1ZSwgZG8gbm90IGdlbmVyYXRlIGFuDQorKyAgIk9yZ2FuaXph dGlvbjoiIGhlYWRlciBmaWVsZC4gUHJldmlvdXNseSwgdGhpcyBjb25kaXRpb24gcmVzdWx0ZWQg aW4NCisrICBtYWlseCByZWZ1c2luZyB0byBzZW5kIG1haWwgKFRob21hcyBFLiBLYW1tZXllciku DQorKyogV2hlbiBjbGFzc2lmeWluZyBtZXNzYWdlcyB3aXRoIHRoZSBqdW5rIGZpbHRlciwgd2hl biBzZWxlY3RpbmcgdGhlIG1vc3QNCisrICByZXByZXNlbnRhdGl2ZSB0b2tlbnMsIHByZWZlciBu b24tanVuayB0b2tlbnMgb3ZlciBqdW5rIHRva2VucyBpZiBib3RoDQorKyAgaGF2ZSB0aGUgc2Ft ZSAocmV2ZXJzZWQpIHByb2JhYmlsaXR5LCBpbiBvcmRlciB0byBhdm9pZCBmYWxzZSBwb3NpdGl2 ZXMuDQorKyogV2hlbiBjYWxjdWxhdGluZyB0aGUgcHJvYmFiaWxpdGllcyBvZiB0b2tlbnMgdGhh dCBoYXZlIG9jY3VycmVkIG9ubHkgaW4NCisrICBnb29kIG1lc3NhZ2VzIG9yIG9ubHkgaW4ganVu ayBtZXNzYWdlcyBzbyBmYXIsIGFuZCB0aGVzZSB0b2tlbnMgb2NjdXJyZWQNCisrICBsZXNzIHRo YW4gdGVuIHRpbWVzLCBnaXZlIHRoZW0gc2xpZ2h0bHkgbGVzcyB0aGFuIHRoZSBtaW5pbXVtL21h eGltdW0uDQorKyogRml4ZWQgInVuaWdub3JlIiBhbmQgc2ltaWxhciBjb21tYW5kczsgdGhleSBk aWQgbm90IHdvcmsgYXQgYWxsIHNvIGZhcg0KKysgIChodHRwOi8vd3d3LmZyZWVic2Qub3JnL2Nn aS9xdWVyeS1wci5jZ2k/cHI9MTQ2MjgwKS4NCisrDQorIFsxMi40XSByZWxlYXNlZCA3LzI5LzA4 DQorICogV2l0aCB0aGUgIi1FIiBjb21tYW5kIGxpbmUgb3B0aW9uIG9yIGlmIHRoZSAic2tpcGVt cHR5Ym9keSIgdmFyaWFibGUgaXMNCisgICBzZXQsIG91dGdvaW5nIG1lc3NhZ2VzIHRoYXQgY29u dGFpbiBubyB0ZXh0IGluIHRoZWlyIGZpcnN0IG9yIG9ubHkgcGFydA0KKy0tLSBtYWlseC0xMi40 L2NtZDIuYw0KKysrKyBuYWlsL2NtZDIuYw0KK0BAIC0zOCw3ICszOCw3IEBADQorIA0KKyAjaWZu ZGVmIGxpbnQNCisgI2lmZGVmCURPU0NDUw0KKy1zdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMp Y21kMi5jCTIuNDYgKGdyaXR0ZXIpIDMvNC8wNiI7DQorK3N0YXRpYyBjaGFyIHNjY3NpZFtdID0g IkAoIyljbWQyLmMJMi40NyAoZ3JpdHRlcikgNS85LzEwIjsNCisgI2VuZGlmDQorICNlbmRpZiAv KiBub3QgbGludCAqLw0KKyANCitAQCAtODAzLDE2ICs4MDMsMTcgQEANCisgCWludCBoID0gaGFz aChuYW1lKTsNCisgDQorIAlmb3IgKGlwID0gdGFiLT5pX2hlYWRbaF07IGlwOyBpcCA9IGlwLT5p X2xpbmspIHsNCistCQlpZiAoYXNjY2FzZWNtcChpcC0+aV9maWVsZCwgbmFtZSkpIHsNCisrCQlp ZiAoYXNjY2FzZWNtcChpcC0+aV9maWVsZCwgbmFtZSkgPT0gMCkgew0KKyAJCQlmcmVlKGlwLT5p X2ZpZWxkKTsNCisgCQkJaWYgKGlxICE9IE5VTEwpDQorIAkJCQlpcS0+aV9saW5rID0gaXAtPmlf bGluazsNCisgCQkJZWxzZQ0KKy0JCQkJdGFiLT5pX2hlYWRbaF0gPSBOVUxMOw0KKysJCQkJdGFi LT5pX2hlYWRbaF0gPSBpcC0+aV9saW5rOw0KKyAJCQlmcmVlKGlwKTsNCisgCQkJdGFiLT5pX2Nv dW50LS07DQorIAkJCWJyZWFrOw0KKyAJCX0NCisrCQlpcSA9IGlwOw0KKyAJfQ0KKyB9DQorIA0K Ky0tLSBtYWlseC0xMi40L2NtZDMuYw0KKysrKyBuYWlsL2NtZDMuYw0KK0BAIC0zOCw3ICszOCw3 IEBADQorIA0KKyAjaWZuZGVmIGxpbnQNCisgI2lmZGVmCURPU0NDUw0KKy1zdGF0aWMgY2hhciBz Y2NzaWRbXSA9ICJAKCMpY21kMy5jCTIuODYgKGdyaXR0ZXIpIDEwLzEvMDciOw0KKytzdGF0aWMg Y2hhciBzY2NzaWRbXSA9ICJAKCMpY21kMy5jCTIuODcgKGdyaXR0ZXIpIDEwLzEvMDgiOw0KKyAj ZW5kaWYNCisgI2VuZGlmIC8qIG5vdCBsaW50ICovDQorIA0KK0BAIC0xMzExLDcgKzEzMTEsNyBA QA0KKyAJY2hhcgkqKmFyZ3MgPSAoY2hhciAqKil2Ow0KKyAJc3RydWN0IG9sZGFjY291bnQJKmE7 DQorIAljaGFyCSpjcDsNCistCWludAlpLCBtYzsNCisrCWludAlpLCBtYywgb3FmLCBucWY7DQor IAlGSUxFCSpmcCA9IHN0ZG91dDsNCisgDQorIAlpZiAoYXJnc1swXSA9PSBOVUxMKSB7DQorQEAg LTEzNDUsNiArMTM0NSw3IEBADQorIAkJcmV0dXJuIGRlZmluZTEoYXJnc1swXSwgMSk7DQorIAl9 DQorIAlzdHJuY3B5KG1ib3huYW1lLCBleHBhbmQoIiYiKSwgc2l6ZW9mIG1ib3huYW1lKVtzaXpl b2YgbWJveG5hbWUtMV09J1wwJzsNCisrCW9xZiA9IHNhdmVxdWl0ZmxhZ3MoKTsNCisgCWlmICgo YSA9IGdldF9vbGRhY2NvdW50KGFyZ3NbMF0pKSA9PSBOVUxMKSB7DQorIAkJaWYgKGFyZ3NbMV0p IHsNCisgCQkJYSA9IHNjYWxsb2MoMSwgc2l6ZW9mICphKTsNCitAQCAtMTM2OCw4ICsxMzY5LDEz IEBADQorIAkJdW5zZXRfYWxsb3dfdW5kZWZpbmVkID0gMTsNCisgCQlzZXQoYS0+YWNfdmFycyk7 DQorIAkJdW5zZXRfYWxsb3dfdW5kZWZpbmVkID0gMDsNCistCXNldGY6CWlmICghc3RhcnRpbmcp DQorLQkJCXJldHVybiBmaWxlMSgiJSIpOw0KKysJc2V0ZjoJaWYgKCFzdGFydGluZykgew0KKysJ CQlucWYgPSBzYXZlcXVpdGZsYWdzKCk7DQorKwkJCXJlc3RvcmVxdWl0ZmxhZ3Mob3FmKTsNCisr CQkJaSA9IGZpbGUxKCIlIik7DQorKwkJCXJlc3RvcmVxdWl0ZmxhZ3MobnFmKTsNCisrCQkJcmV0 dXJuIGk7DQorKwkJfQ0KKyAJfQ0KKyAJcmV0dXJuIDA7DQorIH0NCistLS0gbWFpbHgtMTIuNC9l eHRlcm4uaA0KKysrKyBuYWlsL2V4dGVybi5oDQorQEAgLTM1LDcgKzM1LDcgQEANCisgICogT1VU IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT SUJJTElUWSBPRg0KKyAgKiBTVUNIIERBTUFHRS4NCisgICoNCistICoJU2Njc2lkIEAoIylleHRl cm4uaAkyLjE2MSAoZ3JpdHRlcikgMTAvMS8wNw0KKysgKglTY2NzaWQgQCgjKWV4dGVybi5oCTIu MTYyIChncml0dGVyKSAxMC8xLzA4DQorICAqLw0KKyANCisgLyogYXV4LmMgKi8NCitAQCAtNDQ2 LDYgKzQ0Niw4IEBADQorIHZvaWQgcXVpdCh2b2lkKTsNCisgaW50IGhvbGRiaXRzKHZvaWQpOw0K KyBlbnVtIG9rYXkgbWFrZW1ib3godm9pZCk7DQorK2ludCBzYXZlcXVpdGZsYWdzKHZvaWQpOw0K Kyt2b2lkIHJlc3RvcmVxdWl0ZmxhZ3MoaW50KTsNCisgLyogc2VuZC5jICovDQorIGNoYXIgKmZv bGRlcmdldHMoY2hhciAqKnMsIHNpemVfdCAqc2l6ZSwgc2l6ZV90ICpjb3VudCwgc2l6ZV90ICps bGVuLA0KKyAJCUZJTEUgKnN0cmVhbSk7DQorQEAgLTUxMywxMiArNTE1LDEyIEBADQorIHZvaWQg ZGVtYWlsKHZvaWQpOw0KKyBjaGFyICp1c2VybmFtZSh2b2lkKTsNCisgLyogdmFycy5jICovDQor LXZvaWQgYXNzaWduKGNoYXIgKm5hbWUsIGNoYXIgKnZhbHVlKTsNCisrdm9pZCBhc3NpZ24oY29u c3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOw0KKyBjaGFyICp2Y29weShjb25zdCBj aGFyICpzdHIpOw0KKyBjaGFyICp2YWx1ZShjb25zdCBjaGFyICpuYW1lKTsNCisgc3RydWN0IGdy b3VwaGVhZCAqZmluZGdyb3VwKGNoYXIgKm5hbWUpOw0KKyB2b2lkIHByaW50Z3JvdXAoY2hhciAq bmFtZSk7DQorIGludCBoYXNoKGNvbnN0IGNoYXIgKm5hbWUpOw0KKy1pbnQgdW5zZXRfaW50ZXJu YWwoY2hhciAqbmFtZSk7DQorK2ludCB1bnNldF9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1lKTsN Cisgdm9pZCByZW1vdmVfZ3JvdXAoY29uc3QgY2hhciAqbmFtZSk7DQorIC8qIHZlcnNpb24uYyAq Lw0KKy0tLSBtYWlseC0xMi40L2Zpby5jDQorKysrIG5haWwvZmlvLmMNCitAQCAtMzgsNyArMzgs NyBAQA0KKyANCisgI2lmbmRlZiBsaW50DQorICNpZmRlZglET1NDQ1MNCistc3RhdGljIGNoYXIg c2Njc2lkW10gPSAiQCgjKWZpby5jCTIuNzMgKGdyaXR0ZXIpIDEvNy8wOCI7DQorK3N0YXRpYyBj aGFyIHNjY3NpZFtdID0gIkAoIylmaW8uYwkyLjc2IChncml0dGVyKSA5LzE2LzA5IjsNCisgI2Vu ZGlmDQorICNlbmRpZiAvKiBub3QgbGludCAqLw0KKyANCitAQCAtMTA4LDYgKzEwOCw3IEBADQor IAltZW1zZXQoJnRoaXMsIDAsIHNpemVvZiB0aGlzKTsNCisgCXRoaXMubV9mbGFnID0gTVVTRUR8 TU5FV3xNTkVXRVNUOw0KKyAJZmlsZXNpemUgPSBtYWlsc2l6ZSAtIG9mZnNldDsNCisrCW9mZnNl dCA9IGZ0ZWxsKG1iLm1iX290Zik7DQorIAlmb3IgKDs7KSB7DQorIAkJaWYgKGZnZXRsaW5lKCZs aW5lYnVmLCAmbGluZXNpemUsICZmaWxlc2l6ZSwgJmNvdW50LCBpYnVmLCAwKQ0KKyAJCQkJPT0g TlVMTCkgew0KK0BAIC0xMDUwLDcgKzEwNTEsOCBAQA0KKyAJCQkJCQlOSV9OVU1FUklDSE9TVCkg IT0gMCkNCisgCQkJCXN0cmNweShoYnVmLCAidW5rbm93biBob3N0Iik7DQorIAkJCWZwcmludGYo c3RkZXJyLCBjYXRnZXRzKGNhdGQsIENBVFNFVCwgMTkyLA0KKy0JCQkJCSJDb25uZWN0aW5nIHRv ICVzIC4gLiAuIiksIGhidWYpOw0KKysJCQkJCSJDb25uZWN0aW5nIHRvICVzOiVzIC4gLiAuIiks DQorKwkJCQkJaGJ1ZiwgcG9ydHN0cik7DQorIAkJfQ0KKyAJCWlmICgoc29ja2ZkID0gc29ja2V0 KHJlcy0+YWlfZmFtaWx5LCByZXMtPmFpX3NvY2t0eXBlLA0KKyAJCQkJcmVzLT5haV9wcm90b2Nv bCkpID49IDApIHsNCitAQCAtMTA2OCwyNiArMTA3MCwyNSBAQA0KKyAJZnJlZWFkZHJpbmZvKHJl czApOw0KKyAjZWxzZQkvKiAhSEFWRV9JUHY2X0ZVTkNTICovDQorIAlpZiAocG9ydCA9PSAwKSB7 DQorLQkJaWYgKChlcCA9IGdldHNlcnZieW5hbWUoKGNoYXIgKilwb3J0c3RyLCAidGNwIikpID09 IE5VTEwpIHsNCistCQkJaWYgKGVxdWFsKHBvcnRzdHIsICJzbXRwIikpDQorLQkJCQlwb3J0ID0g aHRvbnMoMjUpOw0KKy0JCQllbHNlIGlmIChlcXVhbChwb3J0c3RyLCAic210cHMiKSkNCistCQkJ CXBvcnQgPSBodG9ucyg0NjUpOw0KKy0JCQllbHNlIGlmIChlcXVhbChwb3J0c3RyLCAiaW1hcCIp KQ0KKy0JCQkJcG9ydCA9IGh0b25zKDE0Myk7DQorLQkJCWVsc2UgaWYgKGVxdWFsKHBvcnRzdHIs ICJpbWFwcyIpKQ0KKy0JCQkJcG9ydCA9IGh0b25zKDk5Myk7DQorLQkJCWVsc2UgaWYgKGVxdWFs KHBvcnRzdHIsICJwb3AzIikpDQorLQkJCQlwb3J0ID0gaHRvbnMoMTEwKTsNCistCQkJZWxzZSBp ZiAoZXF1YWwocG9ydHN0ciwgInBvcDNzIikpDQorLQkJCQlwb3J0ID0gaHRvbnMoOTk1KTsNCist CQkJZWxzZSB7DQorLQkJCQlmcHJpbnRmKHN0ZGVyciwgY2F0Z2V0cyhjYXRkLCBDQVRTRVQsIDI1 MSwNCistCQkJCQkiVW5rbm93biBzZXJ2aWNlOiAlc1xuIiksIHBvcnRzdHIpOw0KKy0JCQkJcmV0 dXJuIFNUT1A7DQorLQkJCX0NCistCQl9IGVsc2UNCisrCQlpZiAoZXF1YWwocG9ydHN0ciwgInNt dHAiKSkNCisrCQkJcG9ydCA9IGh0b25zKDI1KTsNCisrCQllbHNlIGlmIChlcXVhbChwb3J0c3Ry LCAic210cHMiKSkNCisrCQkJcG9ydCA9IGh0b25zKDQ2NSk7DQorKwkJZWxzZSBpZiAoZXF1YWwo cG9ydHN0ciwgImltYXAiKSkNCisrCQkJcG9ydCA9IGh0b25zKDE0Myk7DQorKwkJZWxzZSBpZiAo ZXF1YWwocG9ydHN0ciwgImltYXBzIikpDQorKwkJCXBvcnQgPSBodG9ucyg5OTMpOw0KKysJCWVs c2UgaWYgKGVxdWFsKHBvcnRzdHIsICJwb3AzIikpDQorKwkJCXBvcnQgPSBodG9ucygxMTApOw0K KysJCWVsc2UgaWYgKGVxdWFsKHBvcnRzdHIsICJwb3AzcyIpKQ0KKysJCQlwb3J0ID0gaHRvbnMo OTk1KTsNCisrCQllbHNlIGlmICgoZXAgPSBnZXRzZXJ2YnluYW1lKChjaGFyICopcG9ydHN0ciwg InRjcCIpKSAhPSBOVUxMKQ0KKyAJCQlwb3J0ID0gZXAtPnNfcG9ydDsNCisrCQllbHNlIHsNCisr CQkJZnByaW50ZihzdGRlcnIsIGNhdGdldHMoY2F0ZCwgQ0FUU0VULCAyNTEsDQorKwkJCQkiVW5r bm93biBzZXJ2aWNlOiAlc1xuIiksIHBvcnRzdHIpOw0KKysJCQlyZXR1cm4gU1RPUDsNCisrCQl9 DQorIAl9IGVsc2UNCisgCQlwb3J0ID0gaHRvbnMocG9ydCk7DQorIAlpZiAodmVyYm9zZSkNCitA QCAtMTEwOSw3ICsxMTEwLDggQEANCisgCW1lbWNweSgmc2VydmFkZHIuc2luX2FkZHIsICpwcHRy LCBzaXplb2Yoc3RydWN0IGluX2FkZHIpKTsNCisgCWlmICh2ZXJib3NlKQ0KKyAJCWZwcmludGYo c3RkZXJyLCBjYXRnZXRzKGNhdGQsIENBVFNFVCwgMTkyLA0KKy0JCQkJIkNvbm5lY3RpbmcgdG8g JXMgLiAuIC4iKSwgaW5ldF9udG9hKCoqcHB0cikpOw0KKysJCQkJIkNvbm5lY3RpbmcgdG8gJXM6 JWQgLiAuIC4iKSwNCisrCQkJCWluZXRfbnRvYSgqKnBwdHIpLCBudG9ocyhwb3J0KSk7DQorIAlp ZiAoY29ubmVjdChzb2NrZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2VydmFkZHIsIHNpemVvZiBz ZXJ2YWRkcikNCisgCQkJIT0gMCkgew0KKyAJCXBlcnJvcihjYXRnZXRzKGNhdGQsIENBVFNFVCwg MjU0LCAiY291bGQgbm90IGNvbm5lY3QiKSk7DQorLS0tIG1haWx4LTEyLjQvaW1hcC5jDQorKysr IG5haWwvaW1hcC5jDQorQEAgLTM4LDcgKzM4LDcgQEANCisgDQorICNpZm5kZWYgbGludA0KKyAj aWZkZWYJRE9TQ0NTDQorLXN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylpbWFwLmMJMS4yMTkg KGdyaXR0ZXIpIDEvNi8wOCI7DQorK3N0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylpbWFwLmMJ MS4yMjIgKGdyaXR0ZXIpIDMvMTMvMDkiOw0KKyAjZW5kaWYNCisgI2VuZGlmIC8qIG5vdCBsaW50 ICovDQorIA0KK0BAIC0xODIxLDU3ICsxODIxLDYyIEBADQorIAkJICogcmVhZGluZyB0aGVpciBy ZXN1bHRzLg0KKyAJCSAqLw0KKyAJCW5lZWRzdGF0ID0gc3RvcmVkID4gMCAmJiBzdG9yZWQgJSA4 MDAgPT0gMDsNCisrCQkvKg0KKysJCSAqIEV2ZW4gaWYgdGhpcyBtZXNzYWdlIGhhcyBiZWVuIGRl bGV0ZWQsIGNvbnRpbnVlDQorKwkJICogdG8gc2V0IGZ1cnRoZXIgZmxhZ3MuIFRoaXMgaXMgbmVj ZXNzYXJ5IHRvIHN1cHBvcnQNCisrCQkgKiBHbWFpbCBzZW1hbnRpY3MsIHdoZXJlICJkZWxldGUi IGFjdHVhbGx5IG1lYW5zDQorKwkJICogImFyY2hpdmUiLCBhbmQgdGhlIGZsYWdzIGFyZSBhcHBs aWVkIHRvIHRoZSBjb3B5DQorKwkJICogaW4gIkFsbCBNYWlsIi4NCisrCQkgKi8NCisrCQlpZiAo KG0tPm1fZmxhZyYoTVJFQUR8TVNUQVRVUykpID09IChNUkVBRHxNU1RBVFVTKSkgew0KKysJCQlp bWFwX3N0b3JlKG1wLCBtLCBtLW1lc3NhZ2UrMSwNCisrCQkJCQknKycsICJcXFNlZW4iLCBuZWVk c3RhdCk7DQorKwkJCXN0b3JlZCsrOw0KKysJCX0NCisrCQlpZiAobS0+bV9mbGFnICYgTUZMQUcp IHsNCisrCQkJaW1hcF9zdG9yZShtcCwgbSwgbS1tZXNzYWdlKzEsDQorKwkJCQkJJysnLCAiXFxG bGFnZ2VkIiwgbmVlZHN0YXQpOw0KKysJCQlzdG9yZWQrKzsNCisrCQl9DQorKwkJaWYgKG0tPm1f ZmxhZyAmIE1VTkZMQUcpIHsNCisrCQkJaW1hcF9zdG9yZShtcCwgbSwgbS1tZXNzYWdlKzEsDQor KwkJCQkJJy0nLCAiXFxGbGFnZ2VkIiwgbmVlZHN0YXQpOw0KKysJCQlzdG9yZWQrKzsNCisrCQl9 DQorKwkJaWYgKG0tPm1fZmxhZyAmIE1BTlNXRVIpIHsNCisrCQkJaW1hcF9zdG9yZShtcCwgbSwg bS1tZXNzYWdlKzEsDQorKwkJCQkJJysnLCAiXFxBbnN3ZXJlZCIsIG5lZWRzdGF0KTsNCisrCQkJ c3RvcmVkKys7DQorKwkJfQ0KKysJCWlmIChtLT5tX2ZsYWcgJiBNVU5BTlNXRVIpIHsNCisrCQkJ aW1hcF9zdG9yZShtcCwgbSwgbS1tZXNzYWdlKzEsDQorKwkJCQkJJy0nLCAiXFxBbnN3ZXJlZCIs IG5lZWRzdGF0KTsNCisrCQkJc3RvcmVkKys7DQorKwkJfQ0KKysJCWlmIChtLT5tX2ZsYWcgJiBN RFJBRlQpIHsNCisrCQkJaW1hcF9zdG9yZShtcCwgbSwgbS1tZXNzYWdlKzEsDQorKwkJCQkJJysn LCAiXFxEcmFmdCIsIG5lZWRzdGF0KTsNCisrCQkJc3RvcmVkKys7DQorKwkJfQ0KKysJCWlmICht LT5tX2ZsYWcgJiBNVU5EUkFGVCkgew0KKysJCQlpbWFwX3N0b3JlKG1wLCBtLCBtLW1lc3NhZ2Ur MSwNCisrCQkJCQknLScsICJcXERyYWZ0IiwgbmVlZHN0YXQpOw0KKysJCQlzdG9yZWQrKzsNCisr CQl9DQorIAkJaWYgKGRvZGVsKSB7DQorIAkJCWltYXBfZGVsZXRlKG1wLCBtLW1lc3NhZ2UrMSwg bSwgbmVlZHN0YXQpOw0KKyAJCQlzdG9yZWQrKzsNCisgCQkJZ290Y2hhKys7DQorLQkJfSBlbHNl IHsNCistCQkJaWYgKChtLT5tX2ZsYWcmKE1SRUFEfE1TVEFUVVMpKSA9PSAoTVJFQUR8TVNUQVRV UykpIHsNCistCQkJCWltYXBfc3RvcmUobXAsIG0sIG0tbWVzc2FnZSsxLA0KKy0JCQkJCQknKycs ICJcXFNlZW4iLCBuZWVkc3RhdCk7DQorLQkJCQlzdG9yZWQrKzsNCistCQkJfQ0KKy0JCQlpZiAo bS0+bV9mbGFnICYgTUZMQUcpIHsNCistCQkJCWltYXBfc3RvcmUobXAsIG0sIG0tbWVzc2FnZSsx LA0KKy0JCQkJCQknKycsICJcXEZsYWdnZWQiLCBuZWVkc3RhdCk7DQorLQkJCQlzdG9yZWQrKzsN CistCQkJfQ0KKy0JCQlpZiAobS0+bV9mbGFnICYgTVVORkxBRykgew0KKy0JCQkJaW1hcF9zdG9y ZShtcCwgbSwgbS1tZXNzYWdlKzEsDQorLQkJCQkJCSctJywgIlxcRmxhZ2dlZCIsIG5lZWRzdGF0 KTsNCistCQkJCXN0b3JlZCsrOw0KKy0JCQl9DQorLQkJCWlmIChtLT5tX2ZsYWcgJiBNQU5TV0VS KSB7DQorLQkJCQlpbWFwX3N0b3JlKG1wLCBtLCBtLW1lc3NhZ2UrMSwNCistCQkJCQkJJysnLCAi XFxBbnN3ZXJlZCIsIG5lZWRzdGF0KTsNCistCQkJCXN0b3JlZCsrOw0KKy0JCQl9DQorLQkJCWlm IChtLT5tX2ZsYWcgJiBNVU5BTlNXRVIpIHsNCistCQkJCWltYXBfc3RvcmUobXAsIG0sIG0tbWVz c2FnZSsxLA0KKy0JCQkJCQknLScsICJcXEFuc3dlcmVkIiwgbmVlZHN0YXQpOw0KKy0JCQkJc3Rv cmVkKys7DQorLQkJCX0NCistCQkJaWYgKG0tPm1fZmxhZyAmIE1EUkFGVCkgew0KKy0JCQkJaW1h cF9zdG9yZShtcCwgbSwgbS1tZXNzYWdlKzEsDQorLQkJCQkJCScrJywgIlxcRHJhZnQiLCBuZWVk c3RhdCk7DQorLQkJCQlzdG9yZWQrKzsNCistCQkJfQ0KKy0JCQlpZiAobS0+bV9mbGFnICYgTVVO RFJBRlQpIHsNCistCQkJCWltYXBfc3RvcmUobXAsIG0sIG0tbWVzc2FnZSsxLA0KKy0JCQkJCQkn LScsICJcXERyYWZ0IiwgbmVlZHN0YXQpOw0KKy0JCQkJc3RvcmVkKys7DQorLQkJCX0NCistCQkJ aWYgKG1wLT5tYl90eXBlICE9IE1CX0NBQ0hFIHx8DQorLQkJCQkhZWRpdCAmJiAoIShtLT5tX2Zs YWcmKE1CT1hFRHxNU0FWRUR8TURFTEVURUQpKQ0KKy0JCQkJCXx8IChtLT5tX2ZsYWcgJg0KKy0J CQkJCQkoTUJPWEVEfE1QUkVTRVJWRXxNVE9VQ0gpKSA9PQ0KKy0JCQkJICAJCShNUFJFU0VSVkV8 TVRPVUNIKSkgfHwNCistCQkJCQllZGl0ICYmICEobS0+bV9mbGFnICYgTURFTEVURUQpKQ0KKy0J CQkJaGVsZCsrOw0KKy0JCQlpZiAobS0+bV9mbGFnICYgTU5FVykgew0KKy0JCQkJbS0+bV9mbGFn ICY9IH5NTkVXOw0KKy0JCQkJbS0+bV9mbGFnIHw9IE1TVEFUVVM7DQorLQkJCX0NCisrCQl9IGVs c2UgaWYgKG1wLT5tYl90eXBlICE9IE1CX0NBQ0hFIHx8DQorKwkJCSFlZGl0ICYmICghKG0tPm1f ZmxhZyYoTUJPWEVEfE1TQVZFRHxNREVMRVRFRCkpDQorKwkJCQl8fCAobS0+bV9mbGFnICYNCisr CQkJCQkoTUJPWEVEfE1QUkVTRVJWRXxNVE9VQ0gpKSA9PQ0KKysJCQkJCShNUFJFU0VSVkV8TVRP VUNIKSkgfHwNCisrCQkJCWVkaXQgJiYgIShtLT5tX2ZsYWcgJiBNREVMRVRFRCkpDQorKwkJCWhl bGQrKzsNCisrCQlpZiAobS0+bV9mbGFnICYgTU5FVykgew0KKysJCQltLT5tX2ZsYWcgJj0gfk1O RVc7DQorKwkJCW0tPm1fZmxhZyB8PSBNU1RBVFVTOw0KKyAJCX0NCisgCX0NCisgYnlwYXNzOglp ZiAocmVhZHN0YXQgIT0gTlVMTCkNCitAQCAtMjU3MSw2ICsyNTc2LDcgQEANCisgCWNvbnN0IGNo YXIJKnFuYW1lOw0KKyAJZW51bSBva2F5CW9rID0gU1RPUDsNCisgCWludAl0d2ljZSA9IDA7DQor KwlpbnQJc3RvcmVkID0gMDsNCisgCUZJTEUJKnF1ZXVlZnAgPSBOVUxMOw0KKyANCisgCWlmICht cC0+bWJfdHlwZSA9PSBNQl9DQUNIRSkgew0KK0BAIC0yNjI5LDIwICsyNjM1LDM4IEBADQorIAkg KiAuLi4gYW5kIHJlc2V0IHRoZSBmbGFnIHRvIGl0cyBpbml0aWFsIHZhbHVlIHNvIHRoYXQNCisg CSAqIHRoZSAnZXhpdCcgY29tbWFuZCBzdGlsbCBsZWF2ZXMgdGhlIG1lc3NhZ2UgdW5yZWFkLg0K KyAJICovDQorLW91dDoJaWYgKChtLT5tX2ZsYWcmKE1SRUFEfE1TVEFUVVMpKSA9PSAoTVJFQUR8 TVNUQVRVUykpDQorK291dDoJaWYgKChtLT5tX2ZsYWcmKE1SRUFEfE1TVEFUVVMpKSA9PSAoTVJF QUR8TVNUQVRVUykpIHsNCisgCQlpbWFwX3N0b3JlKG1wLCBtLCBuLCAnLScsICJcXFNlZW4iLCAw KTsNCistCWlmIChtLT5tX2ZsYWcmTUZMQUcpDQorKwkJc3RvcmVkKys7DQorKwl9DQorKwlpZiAo bS0+bV9mbGFnJk1GTEFHKSB7DQorIAkJaW1hcF9zdG9yZShtcCwgbSwgbiwgJy0nLCAiXFxGbGFn Z2VkIiwgMCk7DQorLQlpZiAobS0+bV9mbGFnJk1VTkZMQUcpDQorKwkJc3RvcmVkKys7DQorKwl9 DQorKwlpZiAobS0+bV9mbGFnJk1VTkZMQUcpIHsNCisgCQlpbWFwX3N0b3JlKG1wLCBtLCBuLCAn KycsICJcXEZsYWdnZWQiLCAwKTsNCistCWlmIChtLT5tX2ZsYWcmTUFOU1dFUikNCisrCQlzdG9y ZWQrKzsNCisrCX0NCisrCWlmIChtLT5tX2ZsYWcmTUFOU1dFUikgew0KKyAJCWltYXBfc3RvcmUo bXAsIG0sIG4sICctJywgIlxcQW5zd2VyZWQiLCAwKTsNCistCWlmIChtLT5tX2ZsYWcmTVVOQU5T V0VSKQ0KKysJCXN0b3JlZCsrOw0KKysJfQ0KKysJaWYgKG0tPm1fZmxhZyZNVU5BTlNXRVIpIHsN CisgCQlpbWFwX3N0b3JlKG1wLCBtLCBuLCAnKycsICJcXEFuc3dlcmVkIiwgMCk7DQorLQlpZiAo bS0+bV9mbGFnJk1EUkFGVCkNCisrCQlzdG9yZWQrKzsNCisrCX0NCisrCWlmIChtLT5tX2ZsYWcm TURSQUZUKSB7DQorIAkJaW1hcF9zdG9yZShtcCwgbSwgbiwgJy0nLCAiXFxEcmFmdCIsIDApOw0K Ky0JaWYgKG0tPm1fZmxhZyZNVU5EUkFGVCkNCisrCQlzdG9yZWQrKzsNCisrCX0NCisrCWlmICht LT5tX2ZsYWcmTVVORFJBRlQpIHsNCisgCQlpbWFwX3N0b3JlKG1wLCBtLCBuLCAnKycsICJcXERy YWZ0IiwgMCk7DQorKwkJc3RvcmVkKys7DQorKwl9DQorKwlpZiAoc3RvcmVkKSB7DQorKwkJbXAt Pm1iX2FjdGl2ZSB8PSBNQl9DT01EOw0KKysJCWltYXBfZmluaXNoKG1wKTsNCisrCX0NCisgCXJl dHVybiBvazsNCisgfQ0KKyANCistLS0gbWFpbHgtMTIuNC9qdW5rLmMNCisrKysgbmFpbC9qdW5r LmMNCitAQCAtMzgsNyArMzgsNyBAQA0KKyANCisgI2lmbmRlZiBsaW50DQorICNpZmRlZglET1ND Q1MNCistc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKWp1bmsuYwkxLjczIChncml0dGVyKSAz LzQvMDYiOw0KKytzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpanVuay5jCTEuNzUgKGdyaXR0 ZXIpIDkvMTQvMDgiOw0KKyAjZW5kaWYNCisgI2VuZGlmIC8qIG5vdCBsaW50ICovDQorIA0KK0BA IC05MjAsNiArOTIwLDEwIEBADQorIAkJCSBzbWluKDEuMCwgbmJhZCA/IChmbG9hdCliL25iYWQg OiAwLjApKTsNCisgCQlwID0gc21pbihUT1AsIHApOw0KKyAJCXAgPSBzbWF4KEJPVCwgcCk7DQor KwkJaWYgKHAgPT0gVE9QICYmIGIgPD0gMTAgJiYgZyA9PSAwKQ0KKysJCQlwIC09IEJPVDsNCisr CQllbHNlIGlmIChwID09IEJPVCAmJiBnIDw9IDEwICYmIGIgPT0gMCkNCisrCQkJcCArPSBCT1Q7 DQorIAl9IGVsc2UgaWYgKGcgPT0gMCAmJiBiID09IDApDQorIAkJcCA9IERGTDsNCisgCWVsc2UN CitAQCAtMTA5NSwxMyArMTA5OSwyMCBAQA0KKyAJCQlpZiAoaDEgPT0gYmVzdFtpXS5oYXNoMSAm JiBoMiA9PSBiZXN0W2ldLmhhc2gyKQ0KKyAJCQkJYnJlYWs7DQorIAkJCS8qDQorLQkJCSAqIFRo aXMgc2VsZWN0aW9uIHByZWZlcnMgd29yZHMgZnJvbSB0aGUgZW5kIG9mIHRoZQ0KKy0JCQkgKiBo ZWFkZXIgYW5kIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBib2R5LiBJdCBkb2VzDQorLQkJCSAqIHBy b2JhYmx5IG5vdCBtYXR0ZXIgbXVjaCBhdCBhbGwsIGJ1dCBnaXZlcyBhdA0KKy0JCQkgKiBsZWFz dCB0aGUgbW9zdCBpbnRlcmVzdGluZyB2ZXJib3NlIG91dHB1dC4NCisrCQkJICogRm9yIGVxdWFs IGRpc3RhbmNlLCB0aGlzIHNlbGVjdGlvbiBwcmVmZXJzDQorKwkJCSAqIHdvcmRzIHdpdGggYSBs b3cgcHJvYmFiaWxpdHksIHNpbmNlIGEgZmFsc2UNCisrCQkJICogbmVnYXRpdmUgaXMgYmV0dGVy IHRoYW4gYSBmYWxzZSBwb3NpdGl2ZSwNCisrCQkJICogYW5kIHNpbmNlIGV4cGVyaWVuY2UgaGFz IHNob3duIHRoYXQgZmFsc2UNCisrCQkJICogcG9zaXRpdmVzIGFyZSBtb3JlIGxpa2VseSBvdGhl cndpc2UuIFRoZW4sDQorKwkJCSAqIHdvcmRzIGZyb20gdGhlIGVuZCBvZiB0aGUgaGVhZGVyIGFu ZCBmcm9tDQorKwkJCSAqIHRoZSBzdGFydCBvZiB0aGUgYm9keSBhcmUgcHJlZmVycmVkLiBUaGlz DQorKwkJCSAqIGdpdmVzIHRoZSBtb3N0IGludGVyZXN0aW5nIHZlcmJvc2Ugb3V0cHV0Lg0KKyAJ CQkgKi8NCistCQkJaWYgKGQgPiBiZXN0W2ldLmRpc3QgfHwgYmVzdFtpXS5sb2MgPT0gSEVBREVS ICYmDQorLQkJCQkJZCA+PSBiZXN0W2ldLmRpc3QpIHsNCisrCQkJaWYgKGQgPiBiZXN0W2ldLmRp c3QgfHwNCisrCQkJCQlkID09IGJlc3RbaV0uZGlzdCAmJg0KKysJCQkJCQlwIDwgYmVzdFtpXS5w cm9iIHx8DQorKwkJCQkJYmVzdFtpXS5sb2MgPT0gSEVBREVSICYmDQorKwkJCQkJCWQgPT0gYmVz dFtpXS5kaXN0KSB7DQorIAkJCQlmb3IgKGogPSBCRVNULTI7IGogPj0gaTsgai0tKQ0KKyAJCQkJ CWJlc3RbaisxXSA9IGJlc3Rbal07DQorIAkJCQliZXN0W2ldLmRpc3QgPSBkOw0KKy0tLSBtYWls eC0xMi40L2xpc3QuYw0KKysrKyBuYWlsL2xpc3QuYw0KK0BAIC0zOCw3ICszOCw3IEBADQorIA0K KyAjaWZuZGVmIGxpbnQNCisgI2lmZGVmCURPU0NDUw0KKy1zdGF0aWMgY2hhciBzY2NzaWRbXSA9 ICJAKCMpbGlzdC5jCTIuNjEgKGdyaXR0ZXIpIDAxLzA3LzA3IjsNCisrc3RhdGljIGNoYXIgc2Nj c2lkW10gPSAiQCgjKWxpc3QuYwkyLjYyIChncml0dGVyKSAxMi8xMS8wOCI7DQorICNlbmRpZg0K KyAjZW5kaWYgLyogbm90IGxpbnQgKi8NCisgDQorQEAgLTQzOCw3ICs0MzgsNyBAQA0KKyAJCQlp ZiAoIWluaG9vaykNCisgCQkJCXByaW50Zih0YmFjayA/DQorIAkJCQkJIk5vIHByZXZpb3VzbHkg bWFya2VkIG1lc3NhZ2VzLlxuIiA6DQorLQkJCQkJIk5vIG1lc3NhZ2VzIHNhdGlmeSAoY3JpdGVy aWEpLlxuIik7DQorKwkJCQkJIk5vIG1lc3NhZ2VzIHNhdGlzZnkgKGNyaXRlcmlhKS5cbiIpOw0K KyAJCQltYXJrYWxsX3JldCgtMSkNCisgCQl9DQorIAl9DQorLS0tIG1haWx4LTEyLjQvbWFpbHgu MQ0KKysrKyBuYWlsL21haWx4LjENCitAQCAtMzQsOSArMzQsOSBAQA0KKyAuXCIgT1VUIE9GIFRI RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU WSBPRg0KKyAuXCIgU1VDSCBEQU1BR0UuDQorIC5cIg0KKy0uXCIgICAgIFNjY3NpZDogQCgjKW1h aWx4LjEJMi4zMjYgKGdyaXR0ZXIpIDEwLzEvMDcNCisrLlwiICAgICBTY2NzaWQ6IEAoIyltYWls eC4xCTIuMzI5IChncml0dGVyKSAxMC85LzEwDQorIC5cIg0KKy0uVEggTUFJTFggMSAiMTAvMS8w NyIgIkhlaXJsb29tIG1haWx4IDEyLjQiICJVc2VyIENvbW1hbmRzIg0KKysuVEggTUFJTFggMSAi MTAvOS8xMCIgIkhlaXJsb29tIG1haWx4IDEyLjUiICJVc2VyIENvbW1hbmRzIg0KKyAuU0ggTkFN RQ0KKyBtYWlseCBcLSBzZW5kIGFuZCByZWNlaXZlIEludGVybmV0IG1haWwNCisgLlNIIFNZTk9Q U0lTDQorQEAgLTQxOCw2ICs0MTgsMjEgQEANCisgLkkgYWRkcmVzcw0KKyBBbGwgbWVzc2FnZXMg ZnJvbQ0KKyAuSVIgYWRkcmVzcyAuDQorK0J5IGRlZmF1bHQsIHRoaXMgaXMgYSBjYXNlLXNlbnNp dGl2ZSBzZWFyY2gNCisrZm9yIHRoZSBjb21wbGV0ZSBlbWFpbCBhZGRyZXNzLg0KKytJZiB0aGUN CisrLkkgYWxsbmV0DQorK3ZhcmlhYmxlIGlzIHNldCwNCisrb25seSB0aGUgbG9jYWwgcGFydCBv ZiB0aGUgYWRkcmVzc2VzIGlzIGV2YWx1YXRlZCBmb3IgdGhlIGNvbXBhcmlzb24uDQorK090aGVy d2lzZSBpZiB0aGUNCisrLkkgc2hvd25hbWUNCisrdmFyaWFibGUgaXMgc2V0LA0KKythIGNhc2Ut c2Vuc2l0aXZlIHNlYXJjaCBmb3IgdGhlIGNvbXBsZXRlIHJlYWwgbmFtZQ0KKytvZiBhIHNlbmRl ciBpcyBwZXJmb3JtZWQuDQorK1RoZSBJTUFQLXN0eWxlDQorKy5CSSAoZnJvbVwgIGFkZHJlc3Mp DQorK2V4cHJlc3Npb24gY2FuIGJlIHVzZWQgaW5zdGVhZA0KKytpZiBzdWJzdHJpbmcgbWF0Y2hl cyBhcmUgZGVzaXJlZC4NCisgLlRQDQorIC5CSSAoIGNyaXRlcmlvbiApDQorIEFsbCBtZXNzYWdl cyB0aGF0IHNhdGlzZnkgdGhlIGdpdmVuIElNQVAtc3R5bGUgU0VBUkNIDQorQEAgLTM3NjYsNyAr Mzc4MSw3IEBADQorIC5zcA0KKyAuZmkNCisgd2hpY2ggbWlnaHQgY2F1c2UNCistLk4gbWFpbHgN CisrLkIgbWFpbHgNCisgdG8gcmVzcG9uZCB3aXRoLCBmb3IgZXhhbXBsZToNCisgLm5mDQorIC5z cA0KKy0tLSBtYWlseC0xMi40L21ha2Vjb25maWcNCisrKysgbmFpbC9tYWtlY29uZmlnDQorQEAg LTEsNyArMSw3IEBADQorICMhL2Jpbi9zaA0KKyANCisgIw0KKy0jIFNjY3NpZCBAKCMpbWFrZWNv bmZpZwkxLjQzIChncml0dGVyKSA0LzE0LzA3DQorKyMgU2Njc2lkIEAoIyltYWtlY29uZmlnCTEu NDQgKGdyaXR0ZXIpIDUvMjYvMDkNCisgIw0KKyANCisgdG1wPV9fX2J1aWxkJCQNCitAQCAtMzkz LDYgKzM5MywyNSBAQA0KKyAhDQorIGZpDQorIA0KKytpZiB0ZXN0IHgkaGF2ZV9vcGVuc3NsID0g eHllcw0KKyt0aGVuDQorKwljb21waWxlX2NoZWNrIHN0YWNrX29mICdmb3IgU1RBQ0tfT0YoKScg JyNkZWZpbmUgSEFWRV9TVEFDS19PRicgPDxcIQ0KKysjaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4N CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+DQorKyNpbmNsdWRlIDxvcGVuc3NsL3g1MDl2My5o Pg0KKysjaW5jbHVkZSA8b3BlbnNzbC94NTA5Lmg+DQorKyNpbmNsdWRlIDxvcGVuc3NsL3JhbmQu aD4NCisrDQorK2ludCBtYWluKHZvaWQpDQorK3sNCisrCVNUQUNLX09GKEdFTkVSQUxfTkFNRSkJ KmdlbnMgPSBOVUxMOw0KKysJcHJpbnRmKCIlcCIsIGdlbnMpOwkvKiB0byBtYWtlIGl0IHVzZWQg Ki8NCisrCVNTTHYyM19jbGllbnRfbWV0aG9kKCk7DQorKwlQRU1fcmVhZF9Qcml2YXRlS2V5KDAs IDAsIDAsIDApOw0KKysJcmV0dXJuIDA7DQorK30NCisrIQ0KKytmaQ0KKyANCisgY2F0ID4kdG1w Mi5jIDw8XCENCisgI2luY2x1ZGUgPGdzc2FwaS9nc3NhcGkuaD4NCistLS0gbWFpbHgtMTIuNC9t aW1lLmMNCisrKysgbmFpbC9taW1lLmMNCitAQCAtNDAsNyArNDAsNyBAQA0KKyAjaWZkZWYJRE9T Q0NTDQorIHN0YXRpYyBjaGFyIGNvcHlyaWdodFtdDQorID0gIkAoIykgQ29weXJpZ2h0IChjKSAy MDAwLCAyMDAyIEd1bm5hciBSaXR0ZXIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4iOw0KKy1zdGF0 aWMgY2hhciBzY2NzaWRbXSAgPSAiQCgjKW1pbWUuYwkyLjY5IChncml0dGVyKSA2LzI5LzA4IjsN Cisrc3RhdGljIGNoYXIgc2Njc2lkW10gID0gIkAoIyltaW1lLmMJMi43MSAoZ3JpdHRlcikgNy81 LzEwIjsNCisgI2VuZGlmIC8qIERPU0NDUyAqLw0KKyAjZW5kaWYgLyogbm90IGxpbnQgKi8NCisg DQorQEAgLTc4OCw4ICs3ODgsNyBAQA0KKyANCisgCSppc2NsZWFuID0gbWltZV9pc2NsZWFuKGZw KTsNCisgCWlmICgqaXNjbGVhbiAmIE1JTUVfSEFTTlVMIHx8DQorLQkJCSpjb250ZW50dHlwZSAm JiBhc2NuY2FzZWNtcCgqY29udGVudHR5cGUsICJ0ZXh0LyIsIDUpIHx8DQorLQkJCSpjb250ZW50 dHlwZSA9PSBOVUxMICYmICppc2NsZWFuICYgTUlNRV9DVFJMQ0hBUikgew0KKysJCQkqY29udGVu dHR5cGUgJiYgYXNjbmNhc2VjbXAoKmNvbnRlbnR0eXBlLCAidGV4dC8iLCA1KSkgew0KKyAJCWNv bnZlcnQgPSBDT05WX1RPQjY0Ow0KKyAJCWlmICgqY29udGVudHR5cGUgPT0gTlVMTCB8fA0KKyAJ CQkJYXNjbmNhc2VjbXAoKmNvbnRlbnR0eXBlLCAidGV4dC8iLCA1KSA9PSAwKQ0KK0BAIC04MDks NiArODA4LDcgQEANCisgCQkJKmNvbnRlbnR0eXBlID0gImFwcGxpY2F0aW9uL29jdGV0LXN0cmVh bSI7DQorIAkJCSpjaGFyc2V0ID0gTlVMTDsNCisgCQl9IGlmICgqaXNjbGVhbiAmIE1JTUVfQ1RS TENIQVIpIHsNCisrCQkJY29udmVydCA9IENPTlZfVE9CNjQ7DQorIAkJCS8qDQorIAkJCSAqIFJG QyAyMDQ2IGZvcmJpZHMgY29udHJvbCBjaGFyYWN0ZXJzIG90aGVyIHRoYW4NCisgCQkJICogXkkg b3IgXkwgaW4gdGV4dC9wbGFpbiBib2RpZXMuIEhvd2V2ZXIsIHNvbWUNCitAQCAtMTA0OCwxMiAr MTA0OCwyMiBAQA0KKyAJCQkJdXB0ciA9IG5wdHIgKyBvdXRsZWZ0Ow0KKyAJCQkJaXB0ciA9IGNv dXQuczsNCisgCQkJCWlmIChpY29udl9mdChmaGljZCwgJmlwdHIsICZpbmxlZnQsDQorLQkJCQkJ CSZucHRyLCAmb3V0bGVmdCkgIT0gMCAmJg0KKysJCQkJCSZucHRyLCAmb3V0bGVmdCkgPT0gKHNp emVfdCktMSAmJg0KKyAJCQkJCQllcnJubyA9PSBFMkJJRykgew0KKyAJCQkJCWljb252KGZoaWNk LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsNCisgCQkJCQltaW1lX2Zyb21oZHJfaW5jKGlubGVm dCk7DQorIAkJCQkJZ290byBhZ2FpbjsNCisgCQkJCX0NCisrCQkJCS8qDQorKwkJCQkgKiBGb3Ig c3RhdGUtZGVwZW5kZW50IGVuY29kaW5ncywNCisrCQkJCSAqIHJlc2V0IHRoZSBzdGF0ZSBoZXJl LCBhc3N1bWluZw0KKysJCQkJICogdGhhdCBzdGF0ZXMgYXJlIHJlc3RyaWN0ZWQgdG8NCisrCQkJ CSAqIHNpbmdsZSBlbmNvZGVkLXdvcmQgcGFydHMuDQorKwkJCQkgKi8NCisrCQkJCXdoaWxlIChp Y29udihmaGljZCwgTlVMTCwgTlVMTCwNCisrCQkJCQkmbnB0ciwgJm91dGxlZnQpID09IChzaXpl X3QpLTEgJiYNCisrCQkJCQkJZXJybm8gPT0gRTJCSUcpDQorKwkJCQkJbWltZV9mcm9taGRyX2lu YygxNik7DQorIAkJCQlvdXQtPmwgKz0gdXB0ciAtIG1wdHIgLSBvdXRsZWZ0Ow0KKyAJCQkJcSAr PSB1cHRyIC0gbXB0ciAtIG91dGxlZnQ7DQorIAkJCX0gZWxzZSB7DQorQEAgLTEyOTUsNyArMTMw NSw3IEBADQorIAkJaXN6ID0gbGVuOw0KKyAJCW9wID0gY2J1ZjsNCisgCQlvc3ogPSBjYnVmc3o7 DQorLQkJaWYgKGljb252KGljb252ZCwgJmlwLCAmaXN6LCAmb3AsICZvc3opICE9IDApIHsNCisr CQlpZiAoaWNvbnYoaWNvbnZkLCAmaXAsICZpc3osICZvcCwgJm9zeikgPT0gKHNpemVfdCktMSkg ew0KKyAJCQlpZiAoZXJybm8gIT0gRTJCSUcpIHsNCisgCQkJCWFjX2ZyZWUoY2J1Zik7DQorIAkJ CQlyZXR1cm4gMDsNCitAQCAtMTQ4OSw3ICsxNDk5LDggQEANCisgCQlvdXRsZWZ0ID0gbXB0cnN6 Ow0KKyAJCW5wdHIgPSBtcHRyOw0KKyAJCWlwdHIgPSBwdHI7DQorLQkJaWYgKGljb252X2Z0KGlj b252ZCwgJmlwdHIsICZpbmxlZnQsICZucHRyLCAmb3V0bGVmdCkgIT0gMCAmJg0KKysJCWlmIChp Y29udl9mdChpY29udmQsICZpcHRyLCAmaW5sZWZ0LCAmbnB0ciwgJm91dGxlZnQpID09DQorKwkJ CQkJKHNpemVfdCktMSAmJg0KKyAJCQkJZXJybm8gPT0gRTJCSUcpIHsNCisgCQkJaWNvbnYoaWNv bnZkLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsNCisgCQkJYWNfZnJlZShtcHRyKTsNCistLS0g bWFpbHgtMTIuNC9uYWlsLnJjDQorKysrIG5haWwvbmFpbC5yYw0KK0BAIC00LDcgKzQsNyBAQA0K KyAjIFRoaXMgZmlsZSBpcyBub3Qgb3ZlcndyaXR0ZW4gd2hlbiAnbWFrZSBpbnN0YWxsJyBpcyBy dW4gaW4NCisgIyB0aGUgbWFpbHggYnVpbGQgcHJvY2VzcyBhZ2Fpbi4NCisgDQorLSMgU2Njc2lk IEAoIyluYWlsLnJjCTIuMTAgKGdyaXR0ZXIpIDMvNC8wNg0KKysjIFNjY3NpZCBAKCMpbmFpbC5y YwkyLjExIChncml0dGVyKSA4LzIvMDgNCisgDQorICMgRG8gbm90IGZvcndhcmQgdG8gbWJveCBi eSBkZWZhdWx0IHNpbmNlIHRoaXMgaXMgbGlrZWx5IHRvIGJlDQorICMgaXJyaXRhdGluZyBmb3Ig bW9zdCB1c2VycyB0b2RheS4NCitAQCAtNTQsNiArNTQsOSBAQA0KKyANCisgIyBJZiB0aHJlYWRl ZCBtb2RlIGlzIGFjdGl2YXRlZCwgYXV0b21hdGljYWxseSBjb2xsYXBzZSB0aHJlYWQuDQorIHNl dCBhdXRvY29sbGFwc2UNCisrDQorKyMgTWFyayBtZXNzYWdlcyB0aGF0IGhhdmUgYmVlbiBhbnN3 ZXJlZC4NCisrc2V0IG1hcmthbnN3ZXJlZA0KKyANCisgIyBIaWRlIHNvbWUgaGVhZGVyIGZpZWxk cyB3aGljaCBhcmUgdW5pbnRlcmVzdGluZyBmb3IgbW9zdCBodW1hbiByZWFkZXJzLg0KKyBpZ25v cmUgcmVjZWl2ZWQgaW4tcmVwbHktdG8gbWVzc2FnZS1pZCByZWZlcmVuY2VzDQorLS0tIG1haWx4 LTEyLjQvb3BlbnNzbC5jDQorKysrIG5haWwvb3BlbnNzbC5jDQorQEAgLTM4LDcgKzM4LDcgQEAN CisgDQorICNpZm5kZWYgbGludA0KKyAjaWZkZWYJRE9TQ0NTDQorLXN0YXRpYyBjaGFyIHNjY3Np ZFtdID0gIkAoIylvcGVuc3NsLmMJMS4yNSAoZ3JpdHRlcikgOC80LzA3IjsNCisrc3RhdGljIGNo YXIgc2Njc2lkW10gPSAiQCgjKW9wZW5zc2wuYwkxLjI2IChncml0dGVyKSA1LzI2LzA5IjsNCisg I2VuZGlmDQorICNlbmRpZiAvKiBub3QgbGludCAqLw0KKyANCitAQCAtMTAxLDEyICsxMDEsMTcg QEANCisgc3RhdGljIGludCBzc2xfcmFuZF9pbml0KHZvaWQpOw0KKyBzdGF0aWMgdm9pZCBzc2xf aW5pdCh2b2lkKTsNCisgc3RhdGljIGludCBzc2xfdmVyaWZ5X2NiKGludCBzdWNjZXNzLCBYNTA5 X1NUT1JFX0NUWCAqc3RvcmUpOw0KKy1zdGF0aWMgU1NMX01FVEhPRCAqc3NsX3NlbGVjdF9tZXRo b2QoY29uc3QgY2hhciAqdWhwKTsNCisrc3RhdGljIGNvbnN0IFNTTF9NRVRIT0QgKnNzbF9zZWxl Y3RfbWV0aG9kKGNvbnN0IGNoYXIgKnVocCk7DQorIHN0YXRpYyB2b2lkIHNzbF9sb2FkX3Zlcmlm aWNhdGlvbnMoc3RydWN0IHNvY2sgKnNwKTsNCisgc3RhdGljIHZvaWQgc3NsX2NlcnRpZmljYXRl KHN0cnVjdCBzb2NrICpzcCwgY29uc3QgY2hhciAqdWhwKTsNCisgc3RhdGljIGVudW0gb2theSBz c2xfY2hlY2tfaG9zdChjb25zdCBjaGFyICpzZXJ2ZXIsIHN0cnVjdCBzb2NrICpzcCk7DQorKyNp ZmRlZiBIQVZFX1NUQUNLX09GDQorK3N0YXRpYyBpbnQgc21pbWVfdmVyaWZ5KHN0cnVjdCBtZXNz YWdlICptLCBpbnQgbiwgU1RBQ0tfT0YoWDUwOSkgKmNoYWluLA0KKysJCVg1MDlfU1RPUkUgKnN0 b3JlKTsNCisrI2Vsc2UNCisgc3RhdGljIGludCBzbWltZV92ZXJpZnkoc3RydWN0IG1lc3NhZ2Ug Km0sIGludCBuLCBTVEFDSyAqY2hhaW4sDQorIAkJWDUwOV9TVE9SRSAqc3RvcmUpOw0KKysjZW5k aWYNCisgc3RhdGljIEVWUF9DSVBIRVIgKnNtaW1lX2NpcGhlcihjb25zdCBjaGFyICpuYW1lKTsN Cisgc3RhdGljIGludCBzc2xfcGFzc3dvcmRfY2IoY2hhciAqYnVmLCBpbnQgc2l6ZSwgaW50IHJ3 ZmxhZywgdm9pZCAqdXNlcmRhdGEpOw0KKyBzdGF0aWMgRklMRSAqc21pbWVfc2lnbl9jZXJ0KGNv bnN0IGNoYXIgKnhuYW1lLCBjb25zdCBjaGFyICp4bmFtZTIsIGludCB3YXJuKTsNCitAQCAtMjAz LDEwICsyMDgsMTAgQEANCisgCXJldHVybiAxOw0KKyB9DQorIA0KKy1zdGF0aWMgU1NMX01FVEhP RCAqDQorK3N0YXRpYyBjb25zdCBTU0xfTUVUSE9EICoNCisgc3NsX3NlbGVjdF9tZXRob2QoY29u c3QgY2hhciAqdWhwKQ0KKyB7DQorLQlTU0xfTUVUSE9EICptZXRob2Q7DQorKwljb25zdCBTU0xf TUVUSE9EICptZXRob2Q7DQorIAljaGFyCSpjcDsNCisgDQorIAljcCA9IHNzbF9tZXRob2Rfc3Ry aW5nKHVocCk7DQorQEAgLTMwOCw3ICszMTMsMTEgQEANCisgCVg1MDkgKmNlcnQ7DQorIAlYNTA5 X05BTUUgKnN1Ymo7DQorIAljaGFyIGRhdGFbMjU2XTsNCisrI2lmZGVmIEhBVkVfU1RBQ0tfT0YN CisrCVNUQUNLX09GKEdFTkVSQUxfTkFNRSkJKmdlbnM7DQorKyNlbHNlDQorIAkvKkdFTkVSQUxf TkFNRVMqL1NUQUNLCSpnZW5zOw0KKysjZW5kaWYNCisgCUdFTkVSQUxfTkFNRQkqZ2VuOw0KKyAJ aW50CWk7DQorIA0KK0BAIC0zNTcsNyArMzY2LDggQEANCisgDQorIAlzc2xfaW5pdCgpOw0KKyAJ c3NsX3NldF92cmZ5X2xldmVsKHVocCk7DQorLQlpZiAoKHNwLT5zX2N0eCA9IFNTTF9DVFhfbmV3 KHNzbF9zZWxlY3RfbWV0aG9kKHVocCkpKSA9PSBOVUxMKSB7DQorKwlpZiAoKHNwLT5zX2N0eCA9 DQorKwkgICAgIFNTTF9DVFhfbmV3KChTU0xfTUVUSE9EICopc3NsX3NlbGVjdF9tZXRob2QodWhw KSkpID09IE5VTEwpIHsNCisgCQlzc2xfZ2VuX2VycihjYXRnZXRzKGNhdGQsIENBVFNFVCwgMjYx LCAiU1NMX0NUWF9uZXcoKSBmYWlsZWQiKSk7DQorIAkJcmV0dXJuIFNUT1A7DQorIAl9DQorQEAg LTQ5Niw3ICs1MDYsMTEgQEANCisgfQ0KKyANCisgc3RhdGljIGludA0KKysjaWZkZWYgSEFWRV9T VEFDS19PRg0KKytzbWltZV92ZXJpZnkoc3RydWN0IG1lc3NhZ2UgKm0sIGludCBuLCBTVEFDS19P RihYNTA5KSAqY2hhaW4sIFg1MDlfU1RPUkUgKnN0b3JlKQ0KKysjZWxzZQ0KKyBzbWltZV92ZXJp Znkoc3RydWN0IG1lc3NhZ2UgKm0sIGludCBuLCBTVEFDSyAqY2hhaW4sIFg1MDlfU1RPUkUgKnN0 b3JlKQ0KKysjZW5kaWYNCisgew0KKyAJc3RydWN0IG1lc3NhZ2UJKng7DQorIAljaGFyCSpjcCwg KnNlbmRlciwgKnRvLCAqY2MsICpjbnR0eXBlOw0KK0BAIC01MDUsNyArNTE5LDEyIEBADQorIAlv ZmZfdAlzaXplOw0KKyAJQklPCSpmYiwgKnBiOw0KKyAJUEtDUzcJKnBrY3M3Ow0KKysjaWZkZWYg SEFWRV9TVEFDS19PRg0KKysJU1RBQ0tfT0YoWDUwOSkJKmNlcnRzOw0KKysJU1RBQ0tfT0YoR0VO RVJBTF9OQU1FKQkqZ2VuczsNCisrI2Vsc2UNCisgCVNUQUNLCSpjZXJ0cywgKmdlbnM7DQorKyNl bmRpZg0KKyAJWDUwOQkqY2VydDsNCisgCVg1MDlfTkFNRQkqc3ViajsNCisgCWNoYXIJZGF0YVtM SU5FU0laRV07DQorQEAgLTYxNCw3ICs2MzMsMTEgQEANCisgew0KKyAJaW50CSptc2d2ZWMgPSB2 cCwgKmlwOw0KKyAJaW50CWVjID0gMDsNCisrI2lmZGVmIEhBVkVfU1RBQ0tfT0YNCisrCVNUQUNL X09GKFg1MDkpCSpjaGFpbiA9IE5VTEw7DQorKyNlbHNlDQorIAlTVEFDSwkqY2hhaW4gPSBOVUxM Ow0KKysjZW5kaWYNCisgCVg1MDlfU1RPUkUJKnN0b3JlOw0KKyAJY2hhcgkqY2FfZGlyLCAqY2Ff ZmlsZTsNCisgDQorQEAgLTY4Nyw3ICs3MTAsMTEgQEANCisgCVg1MDkJKmNlcnQ7DQorIAlQS0NT NwkqcGtjczc7DQorIAlCSU8JKmJiLCAqeWI7DQorKyNpZmRlZiBIQVZFX1NUQUNLX09GDQorKwlT VEFDS19PRihYNTA5KQkqY2VydHM7DQorKyNlbHNlDQorIAlTVEFDSwkqY2VydHM7DQorKyNlbmRp Zg0KKyAJRVZQX0NJUEhFUgkqY2lwaGVyOw0KKyANCisgCWNlcnRmaWxlID0gZXhwYW5kKChjaGFy ICopY2VydGZpbGUpOw0KK0BAIC05NTAsOSArOTc3LDE0IEBADQorIAlvZmZfdAlzaXplOw0KKyAJ QklPCSpmYiwgKnBiOw0KKyAJUEtDUzcJKnBrY3M3Ow0KKysjaWZkZWYgSEFWRV9TVEFDS19PRg0K KysJU1RBQ0tfT0YoWDUwOSkJKmNlcnRzOw0KKysJU1RBQ0tfT0YoWDUwOSkJKmNoYWluID0gTlVM TDsNCisrI2Vsc2UNCisgCVNUQUNLCSpjZXJ0czsNCistCVg1MDkJKmNlcnQ7DQorIAlTVEFDSwkq Y2hhaW4gPSBOVUxMOw0KKysjZW5kaWYNCisrCVg1MDkJKmNlcnQ7DQorIAllbnVtIG9rYXkJb2sg PSBPS0FZOw0KKyANCisgCW1lc3NhZ2VfbnVtYmVyID0gbjsNCistLS0gbWFpbHgtMTIuNC9xdWl0 LmMNCisrKysgbmFpbC9xdWl0LmMNCitAQCAtMzgsNyArMzgsNyBAQA0KKyANCisgI2lmbmRlZiBs aW50DQorICNpZmRlZglET1NDQ1MNCistc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKXF1aXQu YwkyLjI4IChncml0dGVyKSAzLzQvMDYiOw0KKytzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMp cXVpdC5jCTIuMzAgKGdyaXR0ZXIpIDExLzExLzA4IjsNCisgI2VuZGlmDQorICNlbmRpZiAvKiBu b3QgbGludCAqLw0KKyANCitAQCAtNTg0LDQgKzU4NCw0NyBAQA0KKyANCisgZG9uZToNCisgCXJl bHNlc2lncygpOw0KKyt9DQorKw0KKytlbnVtIHF1aXRmbGFncyB7DQorKwlRVUlURkxBR19IT0xE ICAgICAgPSAwMDEsDQorKwlRVUlURkxBR19LRUVQU0FWRSAgPSAwMDIsDQorKwlRVUlURkxBR19B UFBFTkQgICAgPSAwMDQsDQorKwlRVUlURkxBR19FTVBUWUJPWCAgPSAwMTANCisrfTsNCisrDQor K3N0YXRpYyBjb25zdCBzdHJ1Y3QgcXVpdG5hbWVzIHsNCisrCWVudW0gcXVpdGZsYWdzCWZsYWc7 DQorKwljb25zdCBjaGFyCSpuYW1lOw0KKyt9IHF1aXRuYW1lc1tdID0gew0KKysJeyBRVUlURkxB R19IT0xELAkiaG9sZCIgfSwNCisrCXsgUVVJVEZMQUdfS0VFUFNBVkUsCSJrZWVwc2F2ZSIgfSwN CisrCXsgUVVJVEZMQUdfQVBQRU5ELAkiYXBwZW5kIiB9LA0KKysJeyBRVUlURkxBR19FTVBUWUJP WCwJImVtcHR5Ym94IiB9LA0KKysJeyAwLAkJCU5VTEwgfQ0KKyt9Ow0KKysNCisraW50DQorK3Nh dmVxdWl0ZmxhZ3Modm9pZCkNCisrew0KKysJZW51bSBxdWl0ZmxhZ3MJcWYgPSAwOw0KKysJaW50 CWk7DQorKw0KKysJZm9yIChpID0gMDsgcXVpdG5hbWVzW2ldLm5hbWU7IGkrKykNCisrCQlpZiAo dmFsdWUocXVpdG5hbWVzW2ldLm5hbWUpKQ0KKysJCQlxZiB8PSBxdWl0bmFtZXNbaV0uZmxhZzsN CisrCXJldHVybiBxZjsNCisrfQ0KKysNCisrdm9pZA0KKytyZXN0b3JlcXVpdGZsYWdzKGludCBx ZikNCisrew0KKysJaW50CWk7DQorKw0KKysJZm9yIChpID0gMDsgcXVpdG5hbWVzW2ldLm5hbWU7 IGkrKykNCisrCQlpZiAocWYgJiBxdWl0bmFtZXNbaV0uZmxhZykgew0KKysJCQlpZiAodmFsdWUo cXVpdG5hbWVzW2ldLm5hbWUpID09IE5VTEwpDQorKwkJCQlhc3NpZ24ocXVpdG5hbWVzW2ldLm5h bWUsICIiKTsNCisrCQl9IGVsc2UgaWYgKHZhbHVlKHF1aXRuYW1lc1tpXS5uYW1lKSkNCisrCQkJ dW5zZXRfaW50ZXJuYWwocXVpdG5hbWVzW2ldLm5hbWUpOw0KKyB9DQorLS0tIG1haWx4LTEyLjQv c2VuZG91dC5jDQorKysrIG5haWwvc2VuZG91dC5jDQorQEAgLTM4LDcgKzM4LDcgQEANCisgDQor ICNpZm5kZWYgbGludA0KKyAjaWZkZWYJRE9TQ0NTDQorLXN0YXRpYyBjaGFyIHNjY3NpZFtdID0g IkAoIylzZW5kb3V0LmMJMi45OSAoZ3JpdHRlcikgNy80LzA4IjsNCisrc3RhdGljIGNoYXIgc2Nj c2lkW10gPSAiQCgjKXNlbmRvdXQuYwkyLjEwMCAoZ3JpdHRlcikgMy8xLzA5IjsNCisgI2VuZGlm DQorICNlbmRpZiAvKiBub3QgbGludCAqLw0KKyANCitAQCAtMTIxOSw4ICsxMjE5LDkgQEANCisg CQkJaWYgKHB1dG5hbWUoYWRkciwgdywgYWN0aW9uLCAmZ290Y2hhLCAiRnJvbToiLCBmbywNCisg CQkJCQkJJmZyb21maWVsZCkpDQorIAkJCQlyZXR1cm4gMTsNCistCQlpZiAoKGFkZHIgPSBocC0+ aF9vcmdhbml6YXRpb24pICE9IE5VTEwgfHwNCistCQkJCShhZGRyID0gdmFsdWUoIk9SR0FOSVpB VElPTiIpKSAhPSBOVUxMKSB7DQorKwkJaWYgKCgoYWRkciA9IGhwLT5oX29yZ2FuaXphdGlvbikg IT0gTlVMTCB8fA0KKysJCQkJKGFkZHIgPSB2YWx1ZSgiT1JHQU5JWkFUSU9OIikpICE9IE5VTEwp DQorKwkJCQkmJiBzdHJsZW4oYWRkcikgPiAwKSB7DQorIAkJCWZ3cml0ZSgiT3JnYW5pemF0aW9u OiAiLCBzaXplb2YgKGNoYXIpLCAxNCwgZm8pOw0KKyAJCQlpZiAobWltZV93cml0ZShhZGRyLCBz dHJsZW4oYWRkciksIGZvLA0KKyAJCQkJCWFjdGlvbiA9PSBTRU5EX1RPRElTUCA/DQorQEAgLTEy NjksNyArMTI3MCw4IEBADQorIAkJZndyaXRlKCJTdWJqZWN0OiAiLCBzaXplb2YgKGNoYXIpLCA5 LCBmbyk7DQorIAkJaWYgKGFzY25jYXNlY21wKGhwLT5oX3N1YmplY3QsICJyZTogIiwgNCkgPT0g MCkgew0KKyAJCQlmd3JpdGUoIlJlOiAiLCBzaXplb2YgKGNoYXIpLCA0LCBmbyk7DQorLQkJCWlm IChtaW1lX3dyaXRlKGhwLT5oX3N1YmplY3QgKyA0LA0KKysJCQlpZiAoc3RybGVuKGhwLT5oX3N1 YmplY3QgKyA0KSA+IDAgJiYNCisrCQkJCW1pbWVfd3JpdGUoaHAtPmhfc3ViamVjdCArIDQsDQor IAkJCQkJc3RybGVuKGhwLT5oX3N1YmplY3QgKyA0KSwNCisgCQkJCQlmbywgYWN0aW9uID09IFNF TkRfVE9ESVNQID8NCisgCQkJCQlDT05WX05PTkU6Q09OVl9UT0hEUiwNCistLS0gbWFpbHgtMTIu NC92YXJzLmMNCisrKysgbmFpbC92YXJzLmMNCitAQCAtMzgsNyArMzgsNyBAQA0KKyANCisgI2lm bmRlZiBsaW50DQorICNpZmRlZglET1NDQ1MNCistc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgj KXZhcnMuYwkyLjExIChncml0dGVyKSAzLzQvMDYiOw0KKytzdGF0aWMgY2hhciBzY2NzaWRbXSA9 ICJAKCMpdmFycy5jCTIuMTIgKGdyaXR0ZXIpIDEwLzEvMDgiOw0KKyAjZW5kaWYNCisgI2VuZGlm IC8qIG5vdCBsaW50ICovDQorIA0KK0BAIC04MSw3ICs4MSw3IEBADQorICAqIEFzc2lnbiBhIHZh bHVlIHRvIGEgdmFyaWFibGUuDQorICAqLw0KKyB2b2lkIA0KKy1hc3NpZ24oY2hhciAqbmFtZSwg Y2hhciAqdmFsdWUpDQorK2Fzc2lnbihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1 ZSkNCisgew0KKyAJc3RydWN0IHZhciAqdnA7DQorIAlpbnQgaDsNCitAQCAtMjIxLDcgKzIyMSw3 IEBADQorIH0NCisgDQorIGludCANCistdW5zZXRfaW50ZXJuYWwoY2hhciAqbmFtZSkNCisrdW5z ZXRfaW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSkNCisgew0KKyAJc3RydWN0IHZhciAqdnAsICp2 cDI7DQorIAlpbnQgaDsNCistLS0gbWFpbHgtMTIuNC92ZXJzaW9uLmMNCisrKysgbmFpbC92ZXJz aW9uLmMNCitAQCAtMSw0ICsxLDQgQEANCistI2RlZmluZQlWCSIxMi40Ig0KKysjZGVmaW5lCVYJ IjEyLjUiDQorIC8qDQorICAqIEhlaXJsb29tIG1haWx4IC0gYSBtYWlsIHVzZXIgYWdlbnQgZGVy aXZlZCBmcm9tIEJlcmtlbGV5IE1haWwuDQorICAqDQorQEAgLTM5LDcgKzM5LDcgQEANCisgDQor ICNpZm5kZWYgbGludA0KKyAjaWZkZWYJRE9TQ0NTDQorLXN0YXRpYyBjaGFyIHNjY3NpZFtdID0g IkAoIyl2ZXJzaW9uLmMJMi4zODYgKGdyaXR0ZXIpIDcvMjkvMDgiOw0KKytzdGF0aWMgY2hhciBz Y2NzaWRbXSA9ICJAKCMpdmVyc2lvbi5jCTIuNDA0IChncml0dGVyKSA3LzUvMTAiOw0KKyAjZW5k aWYNCisgI2VuZGlmIC8qIG5vdCBsaW50ICovDQorIA0KK0BAIC00OCw3ICs0OCw3IEBADQorICAq IExvYWQgdGhpcyBmaWxlIGZpcnN0IHRvIGdldCBhICJ0b3RhbCIgTWFpbCB2ZXJzaW9uLg0KKyAg Ki8NCisgLypjaGFyCSp2ZXJzaW9uID0gIjguMSA2LzYvOTMiOyovDQorLWNvbnN0IGNoYXIgKnZl cnNpb24gPSBWICIgNy8yOS8wOCI7DQorK2NvbnN0IGNoYXIgKnZlcnNpb24gPSBWICIgNy81LzEw IjsNCisgI2lmbmRlZglsaW50DQorICNpZiBfX0dOVUNfXyA+PSAzICYmIF9fR05VQ19NSU5PUl9f ID49IDQgfHwgX19HTlVDX18gPj0gNA0KKyAjZGVmaW5lIFVTRUQgICAgX19hdHRyaWJ1dGVfXyAo KHVzZWQpKQ0KK0BAIC01Nyw3ICs1Nyw3IEBADQorICNlbHNlDQorICNkZWZpbmUgVVNFRA0KKyAj ZW5kaWYNCistc3RhdGljIGNvbnN0IGNoYXIgKnZlcnNpb25pZCBVU0VEID0gIkAoIyltYWlseCAi IFYgIiAoZ3JpdHRlcikgNy8yOS8wOCI7DQorK3N0YXRpYyBjb25zdCBjaGFyICp2ZXJzaW9uaWQg VVNFRCA9ICJAKCMpbWFpbHggIiBWICIgKGdyaXR0ZXIpIDcvNS8xMCI7DQorICNlbmRpZgkvKiAh bGludCAqLw0KKyAvKiBTTElTVCAqLw0KKyAvKg0KK0BAIC02NSw0MiArNjUsNDIgQEANCisgYmFz ZTY0LmM6c3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKWJhc2U2NC5jCTIuMTQgKGdyaXR0ZXIp IDQvMjEvMDYiOw0KKyBjYWNoZS5jOnN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIyljYWNoZS5j CTEuNjEgKGdyaXR0ZXIpIDMvNC8wNiI7DQorIGNtZDEuYzpzdGF0aWMgY2hhciBzY2NzaWRbXSA9 ICJAKCMpY21kMS5jCTIuOTcgKGdyaXR0ZXIpIDYvMTYvMDciOw0KKy1jbWQyLmM6c3RhdGljIGNo YXIgc2Njc2lkW10gPSAiQCgjKWNtZDIuYwkyLjQ2IChncml0dGVyKSAzLzQvMDYiOw0KKy1jbWQz LmM6c3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKWNtZDMuYwkyLjg2IChncml0dGVyKSAxMC8x LzA3IjsNCisrY21kMi5jOnN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIyljbWQyLmMJMi40NyAo Z3JpdHRlcikgNS85LzEwIjsNCisrY21kMy5jOnN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylj bWQzLmMJMi44NyAoZ3JpdHRlcikgMTAvMS8wOCI7DQorIGNtZHRhYi5jOnN0YXRpYyBjaGFyIHNj Y3NpZFtdID0gIkAoIyljbWR0YWIuYwkyLjUxIChncml0dGVyKSAzLzQvMDYiOw0KKyBjb2xsZWN0 LmM6c3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKWNvbGxlY3QuYwkyLjU0IChncml0dGVyKSA2 LzE2LzA3IjsNCisgZGVmLmg6ICoJU2Njc2lkIEAoIylkZWYuaAkyLjEwNCAoZ3JpdHRlcikgMy80 LzA2DQorIGRvdGxvY2suYzpzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpZG90bG9jay5jCTIu OSAoZ3JpdHRlcikgMy8yMC8wNiI7DQorIGVkaXQuYzpzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJA KCMpZWRpdC5jCTIuMjQgKGdyaXR0ZXIpIDMvNC8wNiI7DQorLWV4dGVybi5oOiAqCVNjY3NpZCBA KCMpZXh0ZXJuLmgJMi4xNjEgKGdyaXR0ZXIpIDEwLzEvMDcNCistZmlvLmM6c3RhdGljIGNoYXIg c2Njc2lkW10gPSAiQCgjKWZpby5jCTIuNzMgKGdyaXR0ZXIpIDEvNy8wOCI7DQorK2V4dGVybi5o OiAqCVNjY3NpZCBAKCMpZXh0ZXJuLmgJMi4xNjIgKGdyaXR0ZXIpIDEwLzEvMDgNCisrZmlvLmM6 c3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKWZpby5jCTIuNzYgKGdyaXR0ZXIpIDkvMTYvMDki Ow0KKyBnZXRuYW1lLmM6c3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKWdldG5hbWUuYwkyLjUg KGdyaXR0ZXIpIDMvNC8wNiI7DQorIGdldG9wdC5jOglTY2NzaWQgQCgjKWdldG9wdC5jCTEuNyAo Z3JpdHRlcikgMTIvMTYvMDcJDQorIGdsb2IuaDogKglTY2NzaWQgQCgjKWdsb2IuaAkyLjI3IChn cml0dGVyKSA2LzE2LzA3DQorIGhlYWQuYzpzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpaGVh ZC5jCTIuMTcgKGdyaXR0ZXIpIDMvNC8wNiI7DQorIGhtYWMuYzoJU2Njc2lkIEAoIylobWFjLmMJ MS44IChncml0dGVyKSAzLzQvMDYJDQorLWltYXAuYzpzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJA KCMpaW1hcC5jCTEuMjE5IChncml0dGVyKSAxLzYvMDgiOw0KKytpbWFwLmM6c3RhdGljIGNoYXIg c2Njc2lkW10gPSAiQCgjKWltYXAuYwkxLjIyMiAoZ3JpdHRlcikgMy8xMy8wOSI7DQorIGltYXBf Z3NzYXBpLmM6c3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKWltYXBfZ3NzYXBpLmMJMS4xMCAo Z3JpdHRlcikgMy80LzA2IjsNCisgaW1hcF9zZWFyY2guYzpzdGF0aWMgY2hhciBzY2NzaWRbXSA9 ICJAKCMpaW1hcF9zZWFyY2guYwkxLjI5IChncml0dGVyKSAzLzQvMDYiOw0KKy1qdW5rLmM6c3Rh dGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKWp1bmsuYwkxLjczIChncml0dGVyKSAzLzQvMDYiOw0K KytqdW5rLmM6c3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKWp1bmsuYwkxLjc1IChncml0dGVy KSA5LzE0LzA4IjsNCisgbGV4LmM6c3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKWxleC5jCTIu ODYgKGdyaXR0ZXIpIDEyLzI1LzA2IjsNCistbGlzdC5jOnN0YXRpYyBjaGFyIHNjY3NpZFtdID0g IkAoIylsaXN0LmMJMi42MSAoZ3JpdHRlcikgMDEvMDcvMDciOw0KKytsaXN0LmM6c3RhdGljIGNo YXIgc2Njc2lkW10gPSAiQCgjKWxpc3QuYwkyLjYyIChncml0dGVyKSAxMi8xMS8wOCI7DQorIGx6 dy5jOiAqIFNjY3NpZCBAKCMpbHp3LmMJMS4xMSAoZ3JpdHRlcikgMy80LzA2DQorIG1hY3JvLmM6 c3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKW1hY3JvLmMJMS4xMyAoZ3JpdHRlcikgMy80LzA2 IjsNCisgbWFpbGRpci5jOnN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIyltYWlsZGlyLmMJMS4y MCAoZ3JpdHRlcikgMTIvMjgvMDYiOw0KKyBtYWluLmM6c3RhdGljIGNoYXIgc2Njc2lkW10gPSAi QCgjKW1haW4uYwkyLjUxIChncml0dGVyKSAxMC8xLzA3IjsNCisgbWQ1LmM6CVNjY3NpZCBAKCMp bWQ1LmMJMS44IChncml0dGVyKSAzLzQvMDYJDQorIG1kNS5oOglTY2NzaWQgQCgjKW1kNS5oCTEu OCAoZ3JpdHRlcikgMy80LzA2CQ0KKy1taW1lLmM6c3RhdGljIGNoYXIgc2Njc2lkW10gID0gIkAo IyltaW1lLmMJMi42OSAoZ3JpdHRlcikgNi8yOS8wOCI7DQorK21pbWUuYzpzdGF0aWMgY2hhciBz Y2NzaWRbXSAgPSAiQCgjKW1pbWUuYwkyLjcxIChncml0dGVyKSA3LzUvMTAiOw0KKyBuYW1lcy5j OnN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIyluYW1lcy5jCTIuMjIgKGdyaXR0ZXIpIDMvNC8w NiI7DQorIG5zcy5jOnN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIyluc3MuYwkxLjQ4IChncml0 dGVyKSA4LzQvMDciOw0KKy1vcGVuc3NsLmM6c3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKW9w ZW5zc2wuYwkxLjI1IChncml0dGVyKSA4LzQvMDciOw0KKytvcGVuc3NsLmM6c3RhdGljIGNoYXIg c2Njc2lkW10gPSAiQCgjKW9wZW5zc2wuYwkxLjI2IChncml0dGVyKSA1LzI2LzA5IjsNCisgcG9w My5jOnN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylwb3AzLmMJMi40MyAoZ3JpdHRlcikgMy80 LzA2IjsNCisgcG9wZW4uYzpzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpcG9wZW4uYwkyLjIw IChncml0dGVyKSAzLzQvMDYiOw0KKy1xdWl0LmM6c3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgj KXF1aXQuYwkyLjI4IChncml0dGVyKSAzLzQvMDYiOw0KKytxdWl0LmM6c3RhdGljIGNoYXIgc2Nj c2lkW10gPSAiQCgjKXF1aXQuYwkyLjMwIChncml0dGVyKSAxMS8xMS8wOCI7DQorIHJjdi5oOiAq CVNjY3NpZCBAKCMpcmN2LmgJMi43IChncml0dGVyKSAzLzQvMDYNCisgc2VuZC5jOnN0YXRpYyBj aGFyIHNjY3NpZFtdID0gIkAoIylzZW5kLmMJMi44NiAoZ3JpdHRlcikgMi80LzA4IjsNCistc2Vu ZG91dC5jOnN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylzZW5kb3V0LmMJMi45OSAoZ3JpdHRl cikgNy80LzA4IjsNCisrc2VuZG91dC5jOnN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylzZW5k b3V0LmMJMi4xMDAgKGdyaXR0ZXIpIDMvMS8wOSI7DQorIHNtdHAuYzpzdGF0aWMgY2hhciBzY2Nz aWRbXSA9ICJAKCMpc210cC5jCTIuNDMgKGdyaXR0ZXIpIDgvNC8wNyI7DQorIHNzbC5jOnN0YXRp YyBjaGFyIHNjY3NpZFtdID0gIkAoIylzc2wuYwkxLjM5IChncml0dGVyKSA2LzEyLzA2IjsNCisg c3RyaW5ncy5jOnN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylzdHJpbmdzLmMJMi42IChncml0 dGVyKSAzLzQvMDYiOw0KK0BAIC0xMDgsNSArMTA4LDUgQEANCisgdGhyZWFkLmM6c3RhdGljIGNo YXIgc2Njc2lkW10gPSAiQCgjKXRocmVhZC5jCTEuNTcgKGdyaXR0ZXIpIDMvNC8wNiI7DQorIHR0 eS5jOnN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIyl0dHkuYwkyLjI5IChncml0dGVyKSAzLzkv MDciOw0KKyB2Ny5sb2NhbC5jOnN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIyl2Ny5sb2NhbC5j CTIuMTAgKGdyaXR0ZXIpIDMvNC8wNiI7DQorLXZhcnMuYzpzdGF0aWMgY2hhciBzY2NzaWRbXSA9 ICJAKCMpdmFycy5jCTIuMTEgKGdyaXR0ZXIpIDMvNC8wNiI7DQorK3ZhcnMuYzpzdGF0aWMgY2hh ciBzY2NzaWRbXSA9ICJAKCMpdmFycy5jCTIuMTIgKGdyaXR0ZXIpIDEwLzEvMDgiOw0KKyAqLw0K ZGlmZiAtLWdpdCBhL3Rlc3RpbmcvaGVpcmxvb20tbWFpbHgvQVBLQlVJTEQgYi90ZXN0aW5nL2hl aXJsb29tLW1haWx4L0FQS0JVSUxEDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw MC4uN2FhMTVhNw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvdGVzdGluZy9oZWlybG9vbS1tYWlseC9B UEtCVUlMRA0KQEAgLTAsMCArMSw0OSBAQA0KKyMgQ29udHJpYnV0b3I6IElzYWFjIER1bmhhbSA8 aWJpZC5hZ0BnbWFpbC5jb20+DQorIyBNYWludGFpbmVyOiBJc2FhYyBEdW5oYW0gPGliaWQuYWdA Z21haWwuY29tPg0KK3BrZ25hbWU9aGVpcmxvb20tbWFpbHgNCitwa2d2ZXI9MTIuNA0KK3BrZ3Jl bD0wDQorcGtnZGVzYz0iQSBmcmVlIGNsb25lIG9mIFN5c1YgbWFpbHgiDQordXJsPSJodHRwOi8v aGVpcmxvb20uc291cmNlZm9yZ2UubmV0L21haWx4Lmh0bWwiDQorYXJjaD0iYWxsIg0KK2xpY2Vu c2U9IkJTRCINCitkZXBlbmRzPSIiDQorbWFrZWRlcGVuZHM9Im9wZW5zc2wtZGV2Ig0KK2luc3Rh bGw9IiINCitzdWJwYWNrYWdlcz0iJHBrZ25hbWUtZG9jIg0KK3NvdXJjZT0iaHR0cDovL3NvdXJj ZWZvcmdlLm5ldC9wcm9qZWN0cy9oZWlybG9vbS9maWxlcy9oZWlybG9vbS1tYWlseC8kcGtndmVy L21haWx4LSRwa2d2ZXIudGFyLmJ6Mg0KKwkxMi40LXRvLTEyLjVwcmUucGF0Y2gNCisJbWFrZXZh cnMucGF0Y2giDQorDQorX2J1aWxkZGlyPSIkc3JjZGlyIi9tYWlseC0kcGtndmVyDQorcHJlcGFy ZSgpIHsNCisJbG9jYWwgaQ0KKwljZCAiJF9idWlsZGRpciINCisJZm9yIGkgaW4gJHNvdXJjZTsg ZG8NCisJCWNhc2UgJGkgaW4NCisJCSoucGF0Y2gpIG1zZyAkaTsgcGF0Y2ggLXAxIC1pICIkc3Jj ZGlyIi8kaSB8fCByZXR1cm4gMTs7DQorCQllc2FjDQorCWRvbmUNCit9DQorDQorYnVpbGQoKSB7 DQorCWNkICIkX2J1aWxkZGlyIg0KKwltYWtlIHx8IHJldHVybiAxDQorfQ0KKw0KK3BhY2thZ2Uo KSB7DQorCWNkICIkX2J1aWxkZGlyIg0KKwltYWtlIERFU1RESVI9IiRwa2dkaXIiIGluc3RhbGwg fHwgcmV0dXJuIDENCisJaW5zdGFsbCAtRG0gMDY0NCBDT1BZSU5HICIkcGtnZGlyIi91c3Ivc2hh cmUvbGljZW5zZXMvIiRwa2duYW1lIi9DT1BZSU5HIHx8IHJldHVybiAxDQorCWNkICIkcGtnZGly Ii91c3Ivc2hhcmUvbWFuL21hbjEvICYmIG12IG1haWx4LjEgIiRwa2duYW1lIi4xDQorfQ0KKw0K K21kNXN1bXM9IjBjOTM3NTllMzQyMDBlYjU2YTBlN2M0NjQ2ODBhNTRhICBtYWlseC0xMi40LnRh ci5iejINCithNGE5MTM5MWFkYTMyYTdiODdmZjUyNTVkMmYwNmM0NyAgMTIuNC10by0xMi41cHJl LnBhdGNoDQorNzVhYmY5ZWZjOWZhYmVlNTk4ZDU1MDA5NTEwNzNjYjYgIG1ha2V2YXJzLnBhdGNo Ig0KK3NoYTI1NnN1bXM9IjkyMjAxZTc2OWZlMzQ2YmMwMzY0Yzg3NDM3YTMzMGVmM2M5N2FiM2U5 ZDdiMjIzNWI5M2Y1MDllODVlNTcxNmEgIG1haWx4LTEyLjQudGFyLmJ6Mg0KK2QzNjI5NzgyYzJi NGQ2NzZhYWRlYTgyMzMzNWE1N2M4ZWQ1Zjg2ZTZkNmZkZTMxYjE4MzEzYjljMDcwNzI3YmMgIDEy LjQtdG8tMTIuNXByZS5wYXRjaA0KKzVkZjc2ZGMwODU2MmJmMTJhYjBjMmFjMWUzMmZlNzBmMTM3 YzE4MjU4YWYyOTI4NDQ0ODQ0OGYwYjU4NDhhY2UgIG1ha2V2YXJzLnBhdGNoIg0KK3NoYTUxMnN1 bXM9ImEwZTI5OTcyZjU1MmJkNjMwY2UxYTE0ZjcwZTYxNjYxODE1MTE4NTIwYmNkNGEwMGI2Y2Fk NTNmMzI3MGQzZDA4YzgzNWZmNjk4MmJhODgwMGViMzgwYTViNDZmNTRlYjZlNjBmYjc1MzNiNWY0 MWM5MTZhZjQ1ZDI5NjA1YWY4ICBtYWlseC0xMi40LnRhci5iejINCitjMjQzNWMxOGIzZTk3MmE3 N2JiYWExYjkxNWNhZTU2N2NhZmNkNjVjYmExNzEwY2Q3OGU3YjkzNGQzMzY2MjM2MWFhMWU3MmZi OTlkMGYxMDk5NDVjNjAzZWM4NDc1NTIzNDVhNGE1YzNlYzY0ZGJjMzA3Y2JiODExYTZkNzRkMCAg MTIuNC10by0xMi41cHJlLnBhdGNoDQorYjgzMTU0NGU5MmIwMjYyYjZkNTI3NmNiN2U3ODQyN2Ni MzNmZDA5YmMzY2IyZmZjMzk4Y2IzZjkzMGYwNTc2NGJjZWNjOGU1YjE3NDM1NTRkYWRjNWUwYmQ3 OTFkNTZiNGE3MmI3YTA1MDg5ZGI3MTcwNDM3ZGQ1MjU0YjkwODAgIG1ha2V2YXJzLnBhdGNoIg0K ZGlmZiAtLWdpdCBhL3Rlc3RpbmcvaGVpcmxvb20tbWFpbHgvbWFrZXZhcnMucGF0Y2ggYi90ZXN0 aW5nL2hlaXJsb29tLW1haWx4L21ha2V2YXJzLnBhdGNoDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0K aW5kZXggMDAwMDAwMC4uOTRkOTdlYg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvdGVzdGluZy9oZWly bG9vbS1tYWlseC9tYWtldmFycy5wYXRjaA0KQEAgLTAsMCArMSwzMyBAQA0KK2NvbW1pdCAzMTUy N2ZmZDVkNzdjNmNmMjE4NTBiZGRkOWFlN2U5N2UzNzcyMWNhDQorQXV0aG9yOiBJc2FhYyBEdW5o YW0gPGliaWQuYWdAZ21haWwuY29tPg0KK0RhdGU6ICAgU2F0IFNlcCAxMyAwOTo0ODozNCAyMDE0 IC0wNzAwDQorDQorICAgIFVzZSBtb3JlIHN0YW5kYXJkIGRlZmF1bHRzDQorDQorZGlmZiAtLWdp dCBhL01ha2VmaWxlIGIvTWFrZWZpbGUNCitpbmRleCA1ZjRiMTI0Li4wNWQwNjM1IDEwMDY0NA0K Ky0tLSBhL01ha2VmaWxlDQorKysrIGIvTWFrZWZpbGUNCitAQCAtNiwxOCArNiwxOCBAQA0KKyAj IFNlZSB0aGUgZmlsZSBJTlNUQUxMIGlmIHlvdSBuZWVkIGhlbHAuDQorICMNCisgDQorLVBSRUZJ WAkJPSAvdXNyL2xvY2FsDQorK1BSRUZJWAkJPSAvdXNyDQorIEJJTkRJUgkJPSAkKFBSRUZJWCkv YmluDQorIE1BTkRJUgkJPSAkKFBSRUZJWCkvc2hhcmUvbWFuDQorIFNZU0NPTkZESVIJPSAvZXRj DQorIA0KKyBNQUlMUkMJCT0gJChTWVNDT05GRElSKS9uYWlsLnJjDQorLU1BSUxTUE9PTAk9IC92 YXIvbWFpbA0KKy1TRU5ETUFJTAk9IC91c3IvbGliL3NlbmRtYWlsDQorK01BSUxTUE9PTAk9IC92 YXIvc3Bvb2wvbWFpbA0KKytTRU5ETUFJTAk9IC91c3Ivc2Jpbi9zZW5kbWFpbA0KKyANCisgREVT VERJUgkJPQ0KKyANCistVUNCSU5TVEFMTAk9IC91c3IvdWNiL2luc3RhbGwNCisrVUNCSU5TVEFM TAk9IC91c3IvYmluL2luc3RhbGwNCisgDQorICMgRGVmaW5lIGNvbXBpbGVyLCBwcmVwcm9jZXNz b3IsIGFuZCBsaW5rZXIgZmxhZ3MgaGVyZS4NCisgIyBOb3RlIHRoYXQgc29tZSBMaW51eC9nbGli YyB2ZXJzaW9ucyBuZWVkIC1EX0dOVV9TT1VSQ0UgaW4gQ1BQRkxBR1MsIG9yDQotLSANCjIuMS4w DQoNCg0KDQotLS0NClVuc3Vic2NyaWJlOiAgYWxwaW5lLWRldmVsK3Vuc3Vic2NyaWJlQGxpc3Rz LmFscGluZWxpbnV4Lm9yZw0KSGVscDogICAgICAgICBhbHBpbmUtZGV2ZWwraGVscEBsaXN0cy5h bHBpbmVsaW51eC5vcmcNCi0tLQ0K