From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-vs1-xe32.google.com (mail-vs1-xe32.google.com [IPv6:2607:f8b0:4864:20::e32]) by sourceware.org (Postfix) with ESMTPS id 44FE23858D33 for ; Sat, 7 Jan 2023 10:57:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 44FE23858D33 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-vs1-xe32.google.com with SMTP id i10so3948041vsr.12 for ; Sat, 07 Jan 2023 02:57:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=jD4OnGwn/s6LiGLrnuIo2Md8DzPunspr1sTSXlAvm28=; b=bR6xM/1V2RF/szgQJiCU6OjudRfr954eODZutDNLAaVzZOy/m/MXjQ09Xdkb32eywX lDQyaSjHAP4JQPlRPnAgUz8SURBXJgDGRbAcfgugwmuAo3d1vWcJNRva4voXO21uglfz DrIjA4lOQo3vvqoa7PgP/A6PoCQeXVOdyY3V9FAPr3f+HlNQzv8GQY+ALwcy+uEM0OyT I7IBltLltmh4KPZYqKtm4S7JACq0hII53Rg2aDxx3TKmdm2xn6kdaSX1FUuyy3IsnP7m BAR4SXYxONy56/sk3tfm/dE5dvwjEnAcofLNdyBc+xm7daAyyMoD9aXHpW7DP8mg4qFk AWaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=jD4OnGwn/s6LiGLrnuIo2Md8DzPunspr1sTSXlAvm28=; b=potB9iqxOADw7S6D/IiugFA6/JA0YZ8xI4hj9ZEO3H16opniy1dB/46AAZmKRO23jJ BpNSbchYUgBs3h9FqF3mgXBJvKZqzTH3VZmdpvO5lRo8+in/gHFFZyVrrv8DhHdSrk8/ W6xoRuJcJBVG4oQVXhR5MGod4AiF21FlDULRNa/1uedtbjmu1vEh59lbJMaVUA5SovC4 EY4+AlJp1HxuyYd2QVTUl12QylzXCOMV+qZ83Ypk7J3JGVRYHRflRWW7/Bh2GT4LLTHu 4crsq8p9lcci74sNP93ZmJ4QcTtRsyRX1/yKIA6Y8F1bqIA6WIROTwN6u7j/u+qAWs55 yqPA== X-Gm-Message-State: AFqh2kqo/lWwRCtuVBkEhrbwAdUzxzvAzl2MwoLFZ1VptqSWDfs6cJQK gMRLA347AghZWgCgoc/6uR/FjlX4Br37yQRm9m8= X-Google-Smtp-Source: AMrXdXsocrZm/r82NzNdrSjVUWJaIMWfUDfV7LlmuiMQ9aGecngYU5BBnpAWRwVYtO+Clhob3S6baUFFNXoIB0YBeqk= X-Received: by 2002:a67:ec8a:0:b0:3b7:c371:fa0b with SMTP id h10-20020a67ec8a000000b003b7c371fa0bmr7128940vsp.58.1673089074315; Sat, 07 Jan 2023 02:57:54 -0800 (PST) MIME-Version: 1.0 References: <9a2667e2-8055-bcac-1862-05c8ac60ce7a@gmx.de> <3cbaf568-84ac-8498-558f-9560fe395d66@gmx.de> <7ab973cd-f62e-28be-36e8-4e44252a4a38@gmx.de> <061aee5b-c27c-3a9f-419d-9893c2d744c4@netcologne.de> <78aafe8c-dcf9-55e6-50ce-c6289ea1f3fe@gmail.com> In-Reply-To: From: Paul Richard Thomas Date: Sat, 7 Jan 2023 10:57:43 +0000 Message-ID: Subject: Re: Fw: Re: [Patch, fortran] PR37336 (Finalization) - [F03] Finish derived-type finalization To: Harald Anlauf Cc: Jerry D , fortran Content-Type: multipart/mixed; boundary="000000000000f4185d05f1aa67fe" X-Spam-Status: No, score=-7.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --000000000000f4185d05f1aa67fe Content-Type: multipart/alternative; boundary="000000000000f4185b05f1aa67fc" --000000000000f4185b05f1aa67fc Content-Type: text/plain; charset="UTF-8" Hi All, Please find attached a patch for trans-array.cc that does what Harald suggests; ie. finalization of array and structure constructors only occurs with -std=f2003/8. Two versions of finalize_38.f90 are attached. One which tests -std=gnu/f20018 and the other -std=f2008. Frankly, I think that this is better. Finalization of these expressions must be handled with a lot of care and was deleted by f2018 for good reasons. Above all else, the results do not represent defined entities and so it does not really make sense to finalize them. My vote is to go with this version of the patch. I am struggling a bit with a nit in finalize_45. One of the other processors appears to nullify the pointer component of the result of construct_t during finalization of the result. I can see the sense in this but do not find any requirement to do so in the standard. Given the scale of the overall patch, I am beginning to have a lot of sympathy with Thomas's suggestion that the finalization calls should be moved to the front end! I will take a quick look to see how easy this would be to implement. Regards Paul On Fri, 6 Jan 2023 at 08:34, Harald Anlauf via Fortran wrote: > Hi Jerry, > > > Gesendet: Freitag, 06. Januar 2023 um 04:08 Uhr > > Von: "Jerry D" > > An: "Harald Anlauf" , "fortran" > > Betreff: Re: Fw: Re: [Patch, fortran] PR37336 (Finalization) - [F03] > Finish derived-type finalization > > > > On 1/5/23 1:14 PM, Harald Anlauf via Fortran wrote: > > > Resending as plain text, as the original version did not appear on the > fortran list... > > > > > > > > > Gesendet: Donnerstag, 05. Januar 2023 um 22:10 Uhr > > > Von: "Harald Anlauf" > > > An: "Paul Richard Thomas" > > > Cc: "fortran@gcc.gnu.org" , "Alessandro > Fanfarillo" , "Andrew Benson" < > abenson@carnegiescience.edu>, "Thomas Koenig" , > "Damian Rouson" > > > Betreff: Re: [Patch, fortran] PR37336 (Finalization) - [F03] Finish > derived-type finalization > > > > > > Dear Paul, all, > > > > > > I had a first look at the patch and the testcases, and I really look > forward to getting this into gfortran. > > > > > > A few questions surfaced when playing with it, which is why am asking > for others to comment. > > > > > > Testcase finalize_38.f90 exhibits a (potential) discrepancy to my > expections when playing with options -std=f2018 and -std=gnu (the default). > > > > > > What is the expected behavior of -std=gnu? My expectation is that > -std=gnu always corresponds to the latest implemented standard (currently > F2018), except for possibly allowing for GNU-extensions. This might imply > that corrigenda to a standard or a newer version may lead (over time) to an > adjustment of the behavior. Any opinions on it? Do we need to always test > (in the testsuite) for compliance with older standards? > > > > > > > My understanding is that -std=gnu tends to be the least restrictive and > > will allow finalize_38.f90 to compile possibly with warnings. The > > warnings are to allow the user to know thay are out of current > > compliance, but we should not fail on code that was previously compliant > > and less we specify -std=f2018 which is more restrictive. > > So if e.g. finalize_38.f90 compiles without warnings with -std=f2018, > it should also compile without warnings with -std=gnu, right? > > Harald > > > > Jerry > > > > > -- "If you can't explain it simply, you don't understand it well enough" - Albert Einstein --000000000000f4185b05f1aa67fc-- --000000000000f4185d05f1aa67fe Content-Type: text/x-fortran; charset="US-ASCII"; name="finalize_38.f90" Content-Disposition: attachment; filename="finalize_38.f90" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lclu01y00 ISB7IGRnLWRvIHJ1biB9CiEKISBUZXN0IGZpbmFsaXphdGlvbiBvbiBpbnRy aW5zaWMgYXNzaWdubWVudCAoRjIwMTggKDcuNS42LjMpKQohIFdpdGggLXN0 ZD1nbnUsIG5vIGZpbmFsaXphdGlvbiBvZiBhcnJheSBvciBzdHJ1Y3R1cmUg Y29uc3RydWN0b3JzIHNob3VsZCBvY2N1ci4KISBTZWUgZmluYWxpemVfMzhh LmY5MCBmb3IgdGhlIHJlc3VsdCB3aXRoIGYyMDA4LgohIFRlc3RzIGZpeCBm b3IgUFI2NDI5MCBhcyB3ZWxsLgohCm1vZHVsZSB0ZXN0bW9kZQogIGltcGxp Y2l0IG5vbmUKCiAgdHlwZSA6OiBzaW1wbGUKICAgIGludGVnZXIgOjogaW5k CiAgY29udGFpbnMKICAgIGZpbmFsIDo6IGRlc3RydWN0b3IxLCBkZXN0cnVj dG9yMgogIGVuZCB0eXBlIHNpbXBsZQoKICB0eXBlLCBleHRlbmRzKHNpbXBs ZSkgOjogY29tcGxpY2F0ZWQKICAgIHJlYWwgOjogcmluZAogIGNvbnRhaW5z CiAgICBmaW5hbCA6OiBkZXN0cnVjdG9yMywgZGVzdHJ1Y3RvcjQKICBlbmQg dHlwZSBjb21wbGljYXRlZAoKICBpbnRlZ2VyIDo6IGNoZWNrX3NjYWxhcgog IGludGVnZXIgOjogY2hlY2tfYXJyYXkoNCkKICByZWFsIDo6IGNoZWNrX3Jl YWwKICByZWFsIDo6IGNoZWNrX3JhcnJheSg0KQogIGludGVnZXIgOjogZmlu YWxfY291bnQgPSAwCgpjb250YWlucwoKICBzdWJyb3V0aW5lIGRlc3RydWN0 b3IxKHNlbGYpCiAgICB0eXBlKHNpbXBsZSksIGludGVudChpbm91dCkgOjog c2VsZgogICAgY2hlY2tfc2NhbGFyID0gc2VsZiVpbmQKICAgIGNoZWNrX2Fy cmF5ID0gMAogICAgZmluYWxfY291bnQgPSBmaW5hbF9jb3VudCArIDEKICBl bmQgc3Vicm91dGluZSBkZXN0cnVjdG9yMQoKICBzdWJyb3V0aW5lIGRlc3Ry dWN0b3IyKHNlbGYpCiAgICB0eXBlKHNpbXBsZSksIGludGVudChpbm91dCkg Ojogc2VsZig6KQogICAgY2hlY2tfc2NhbGFyID0gMAogICAgY2hlY2tfYXJy YXkoMTpzaXplKHNlbGYsIDEpKSA9IHNlbGYlaW5kCiAgICBmaW5hbF9jb3Vu dCA9IGZpbmFsX2NvdW50ICsgMQogIGVuZCBzdWJyb3V0aW5lIGRlc3RydWN0 b3IyCgogIHN1YnJvdXRpbmUgZGVzdHJ1Y3RvcjMoc2VsZikKICAgIHR5cGUo Y29tcGxpY2F0ZWQpLCBpbnRlbnQoaW5vdXQpIDo6IHNlbGYKICAgIGNoZWNr X3JlYWwgPSBzZWxmJXJpbmQKICAgIGNoZWNrX2FycmF5ID0gMC4wCiAgICBm aW5hbF9jb3VudCA9IGZpbmFsX2NvdW50ICsgMQogIGVuZCBzdWJyb3V0aW5l IGRlc3RydWN0b3IzCgogIHN1YnJvdXRpbmUgZGVzdHJ1Y3RvcjQoc2VsZikK ICAgIHR5cGUoY29tcGxpY2F0ZWQpLCBpbnRlbnQoaW5vdXQpIDo6IHNlbGYo OikKICAgIGNoZWNrX3JlYWwgPSAwLjAKICAgIGNoZWNrX3JhcnJheSgxOnNp emUoc2VsZiwgMSkpID0gc2VsZiVyaW5kCiAgICBmaW5hbF9jb3VudCA9IGZp bmFsX2NvdW50ICsgMQogIGVuZCBzdWJyb3V0aW5lIGRlc3RydWN0b3I0Cgog IGZ1bmN0aW9uIGNvbnN0cnVjdG9yMShpbmQpIHJlc3VsdChyZXMpCiAgICBj bGFzcyhzaW1wbGUpLCBhbGxvY2F0YWJsZSA6OiByZXMKICAgIGludGVnZXIs IGludGVudChpbikgOjogaW5kCiAgICBhbGxvY2F0ZSAocmVzLCBzb3VyY2Ug PSBzaW1wbGUgKGluZCkpCiAgZW5kIGZ1bmN0aW9uIGNvbnN0cnVjdG9yMQoK ICBmdW5jdGlvbiBjb25zdHJ1Y3RvcjIoaW5kLCByaW5kKSByZXN1bHQocmVz KQogICAgY2xhc3Moc2ltcGxlKSwgYWxsb2NhdGFibGUgOjogcmVzKDopCiAg ICBpbnRlZ2VyLCBpbnRlbnQoaW4pIDo6IGluZCg6KQogICAgcmVhbCwgaW50 ZW50KGluKSwgb3B0aW9uYWwgOjogcmluZCg6KQogICAgdHlwZShjb21wbGlj YXRlZCksIGFsbG9jYXRhYmxlIDo6IHNyYyg6KQogICAgaW50ZWdlciA6OiBz egogICAgaW50ZWdlciA6OiBpCiAgICBpZiAocHJlc2VudCAocmluZCkpIHRo ZW4KICAgICAgc3ogPSBtaW4gKHNpemUgKGluZCwgMSksIHNpemUgKHJpbmQs IDEpKQogICAgICBzcmMgID0gWyhjb21wbGljYXRlZCAoaW5kKGkpLCByaW5k KGkpKSwgaSA9IDEsIHN6KV0KICAgICAgYWxsb2NhdGUgKHJlcywgc291cmNl ID0gc3JjKQogICAgZWxzZQogICAgICBzeiA9IHNpemUgKGluZCwgMSkKICAg ICAgYWxsb2NhdGUgKHJlcywgc291cmNlID0gWyhzaW1wbGUgKGluZChpKSks IGkgPSAxLCBzeildKQogICAgZW5kIGlmCiAgZW5kIGZ1bmN0aW9uIGNvbnN0 cnVjdG9yMgoKICBzdWJyb3V0aW5lIHRlc3QgKGNudCwgc2NhbGFyLCBhcnJh eSwgb2ZmLCByaW5kLCByYXJyYXkpCiAgICBpbnRlZ2VyIDo6IGNudAogICAg aW50ZWdlciA6OiBzY2FsYXIKICAgIGludGVnZXIgOjogYXJyYXkoOikKICAg IGludGVnZXIgOjogb2ZmCiAgICByZWFsLCBvcHRpb25hbCA6OiByaW5kCiAg ICByZWFsLCBvcHRpb25hbCA6OiByYXJyYXkoOikKICAgIGlmIChmaW5hbF9j b3VudCAubmUuIGNudCkgdGhlbgogICAgICAgIHN0b3AgMSArIG9mZgogICAg ZW5kaWYKICAgIGlmIChjaGVja19zY2FsYXIgLm5lLiBzY2FsYXIpIHRoZW4K ICAgICAgICBzdG9wIDIgKyBvZmYKICAgIGVuZGlmCiAgICBpZiAoYW55IChj aGVja19hcnJheSgxOnNpemUgKGFycmF5LCAxKSkgLm5lLiBhcnJheSkpIHRo ZW4KICAgICAgICBzdG9wIDMgKyBvZmYKICAgIGVuZGlmCiAgICBpZiAocHJl c2VudCAocmluZCkpIHRoZW4KICAgICAgICBzdG9wIDQgKyBvZmYKICAgIGVu ZCBpZgogICAgaWYgKHByZXNlbnQgKHJhcnJheSkpIHRoZW4KICAgICAgaWYg KGFueSAoY2hlY2tfcmFycmF5KDE6c2l6ZSAocmFycmF5LCAxKSkgLm5lLiBy YXJyYXkpKSB0aGVuCiAgICAgICAgc3RvcCA1ICsgb2ZmCiAgICAgIGVuZGlm CiAgICBlbmQgaWYKICAgIGZpbmFsX2NvdW50ID0gMAogIGVuZCBzdWJyb3V0 aW5lIHRlc3QKZW5kIG1vZHVsZSB0ZXN0bW9kZQoKcHJvZ3JhbSB0ZXN0X2Zp bmFsCiAgdXNlIHRlc3Rtb2RlCiAgaW1wbGljaXQgbm9uZQoKICB0eXBlKHNp bXBsZSksIGFsbG9jYXRhYmxlIDo6IE15VHlwZSwgTXlUeXBlMgogIHR5cGUo c2ltcGxlKSwgYWxsb2NhdGFibGUgOjogTXlUeXBlQXJyYXkoOikKICB0eXBl KHNpbXBsZSkgOjogVGh5VHlwZSA9IHNpbXBsZSgyMSksIFRoeVR5cGUyID0g c2ltcGxlKDIyKQogIGNsYXNzKHNpbXBsZSksIGFsbG9jYXRhYmxlIDo6IE15 Q2xhc3MKICBjbGFzcyhzaW1wbGUpLCBhbGxvY2F0YWJsZSA6OiBNeUNsYXNz QXJyYXkoOikKCiEgKioqKioqKioqKioqKioqKioqKioqKioqCiEgRGVyaXZl ZCB0eXBlIGFzc2lnbm1lbnRzCiEgKioqKioqKioqKioqKioqKioqKioqKioq CgohIFRoZSBvcmlnaW5hbCBQUiAtIG5vIGZpbmFsaXphdGlvbiBvZiAndmFy JyBiZWZvcmUgKHJlKWFsbG9jYXRpb24KISBiZWNhdXNlIGl0IGlzIGRlYWxs b2NhdGVkIG9uIHNjb3BlIGVudHJ5IChwYXJhIDEgb2YgRjIwMTggNy41LjYu My4pCiAgTXlUeXBlID0gVGh5VHlwZQogIGNhbGwgdGVzdCgwLCAwLCBbMCww XSwgMCkKCiAgaWYgKC5ub3QuIGFsbG9jYXRlZChNeVR5cGUpKSBhbGxvY2F0 ZShNeVR5cGUpCiAgYWxsb2NhdGUoTXlUeXBlMikKICBNeVR5cGUlaW5kID0g MQogIE15VHlwZTIlaW5kID0gMgoKISBUaGlzIHNob3VsZCByZXN1bHQgaW4g YSBmaW5hbCBjYWxsIHdpdGggc2VsZiA9IHNpbXBsZSgxKSAocGFyYSAxIG9m IEYyMDE4IDcuNS42LjMuKS4KICBNeVR5cGUgPSBNeVR5cGUyCiAgY2FsbCB0 ZXN0KDEsIDEsIFswLDBdLCAxMCkKCiAgYWxsb2NhdGUoTXlUeXBlQXJyYXko MikpCiAgTXlUeXBlQXJyYXklaW5kID0gWzQyLCA0M10KISBUaGlzIHNob3Vs ZCByZXN1bHQgbm8gY2FsbHMuCiAgY2FsbCB0ZXN0KDAsIDEsIFswLDBdLCAy MCkKCiEgVGhpcyBzaG91bGQgcmVzdWx0IGluIGEgZmluYWwgY2FsbCAndmFy JyA9IGluaXRpYWxpemF0aW9uID0gc2ltcGxlKDIyKS4KICBUaHlUeXBlMiA9 IHNpbXBsZSg5OSkKICBjYWxsIHRlc3QoMSwgMjIsIFswLDBdLCAzMCkKCiEg VGhpcyBzaG91bGQgcmVzdWx0IGluIGEgZmluYWwgY2FsbCBmb3IgJ3Zhcicg d2l0aCBzZWxmID0gc2ltcGxlKDIxKS4KICBUaHlUeXBlID0gVGh5VHlwZTIK ICBjYWxsIHRlc3QoMSwgMjEsIFswLDBdLCA0MCkKCiEgVGhpcyBzaG91bGQg cmVzdWx0IGluIHR3byBmaW5hbCBjYWxsczsgdGhlIGxhc3QgaXMgZm9yIE15 dHlwZTIgPSBzaW1wbGUoMikuCiAgZGVhbGxvY2F0ZSAoTXlUeXBlLCBNeVR5 cGUyKQogIGNhbGwgdGVzdCgyLCAyLCBbMCwwXSwgNTApCgohIFRoaXMgc2hv dWxkIHJlc3VsdCBpbiBvbmUgZmluYWwgY2FsbDsgTXlUeXBlQXJyYXkgPSBb c2ltcGxlKDQyKSxzaW1wbGUoNDMpXS4KICBkZWFsbG9jYXRlIChNeVR5cGVB cnJheSkKICBjYWxsIHRlc3QoMSwgMCwgWzQyLDQzXSwgNjApCgohIFRoZSBs aHMgaXMgZmluYWxpemVkIGJlZm9yZSBhc3NpZ25tZW50LgohIFRoZSBmdW5j dGlvbiByZXN1bHQgaXMgZmluYWxpemVkIGFmdGVyIHRoZSBhc3NpZ25tZW50 LgohIE5BR0ZPUiBkb2Vzbid0IGZpbmFsaXplIHRoZSBmdW5jdGlvbiByZXN1 bHQuCiAgYWxsb2NhdGUgKE15VHlwZSwgc291cmNlID0gc2ltcGxlICgxMSkp CiAgTXlUeXBlID0gY29uc3RydWN0b3IxICg5OSkKICBjYWxsIHRlc3QoMiwg OTksIFswLDBdLCA3MCkKICBkZWFsbG9jYXRlIChNeVR5cGUpCiEgKioqKioq KioqKioqKioqKioKISBDbGFzcyBhc3NpZ25tZW50cwohICoqKioqKioqKioq KioqKioqCgogIGZpbmFsX2NvdW50ID0gMAoKISBUaGlzIHNob3VsZCByZXN1 bHQgaW4gYSBmaW5hbCBjYWxsIGZvciBNeUNsYXNzLCB3aGljaCBpcyBzaW1w bGUoMykuCiAgYWxsb2NhdGUgKE15Q2xhc3MsIHNvdXJjZSA9IHNpbXBsZSAo MykpCiAgTXlDbGFzcyA9IHNpbXBsZSAoNCkKICBjYWxsIHRlc3QoMSwgMywg WzAsMF0sIDEwMCkKCiEgVGhpcyBzaG91bGQgcmVzdWx0IGluIGEgZmluYWwg Y2FsbCB3aXRoIHRoZSBhc3NpZ25lZCB2YWx1ZSBvZiBzaW1wbGUoNCkuCiAg ZGVhbGxvY2F0ZSAoTXlDbGFzcykKICBjYWxsIHRlc3QoMSwgNCwgWzAsMF0s IDExMCkKCgogIGFsbG9jYXRlIChNeUNsYXNzQXJyYXksIHNvdXJjZSA9IFtz aW1wbGUgKDUpLCBzaW1wbGUgKDYpXSkKISBNYWtlIHN1cmUgdGhhdCB0aGVy ZSBpcyBubyBmaW5hbCBjYWxsIHNpbmNlIE15Q2xhc3NBcnJheSBpcyBub3Qg YWxsb2NhdGVkLgogIGNhbGwgdGVzdCgwLCA0LCBbMCwwXSwgMTIwKQoKICBN eUNsYXNzQXJyYXkgPSBbc2ltcGxlICg3KSwgc2ltcGxlICg4KV0KISBUaGUg b25seSBmaW5hbCBjYWxsIHNob3VsZCBmaW5hbGl6ZSAndmFyJy4KISBOQUdG T1IgZG9lcyBzb21ldGhpbmcgc3RyYW5nZSBoZXJlOiBtYWtlcyBhIHNjYWxh ciBmaW5hbCBjYWxsIHdpdGggdmFsdWUKISBzaW1wbGUoNSkuCiAgY2FsbCB0 ZXN0KDEsIDAsIFs1LDZdLCAxMzApCgohIFRoaXMgc2hvdWxkIHJlc3VsdCBp biBhIGZpbmFsIGNhbGwgd2l0aCB0aGUgYXNzaWduZWQgdmFsdWUuCiAgZGVh bGxvY2F0ZSAoTXlDbGFzc0FycmF5KQogIGNhbGwgdGVzdCgxLCAwLCBbNyw4 XSwgMTQwKQoKISBUaGlzIHNob3VsZCBwcm9kdWNlIG5vIGZpbmFsIGNhbGxz IHNpbmNlIE15Q2xhc3NBcnJheSB3YXMgZGVhbGxvY2F0ZWQuCiAgYWxsb2Nh dGUgKE15Q2xhc3NBcnJheSwgc291cmNlID0gW2NvbXBsaWNhdGVkKDEsIDIu MCksY29tcGxpY2F0ZWQoMywgNC4wKV0pCgohIFRoaXMgc2hvdWxkIHByb2R1 Y2UgY2FsbHMgdG8gZGVzdHJ1Y3RvcjQgdGhlbiBkZXN0cnVjdG9yMi4KICBk ZWFsbG9jYXRlIChNeUNsYXNzQXJyYXkpCgohIEYyMDE4IDcuNS42LjM6ICJJ ZiB0aGUgZW50aXR5IGlzIG9mIGV4dGVuZGVkIHR5cGUgYW5kIHRoZSBwYXJl bnQgdHlwZSBpcwohIGZpbmFsaXphYmxlLCB0aGUgcGFyZW50IGNvbXBvbmVu dCBpcyBmaW5hbGl6ZWQuCiAgY2FsbCB0ZXN0KDIsIDAsIFsxLCAzXSwgMTUw LCByYXJyYXkgPSBbMi4wLCA0LjBdKQoKISBUaGlzIHByb2R1Y2VzIDIgZmlu YWwgY2FsbHMgaW4gdHVybiBmb3IgJ3NyYycgYXMgaXQgZ29lcyBvdXQgb2Yg c2NvcGUsIGZvcgohIE15Q2xhc3NBcnJheSBiZWZvcmUgaXQgaXMgYXNzaWdu ZWQgdG8gYW5kIHRoZSByZXN1bHQgb2YgJ2NvbnN0cnVjdG9yMicgYWZ0ZXIK ISB0aGUgYXNzaWdubWVudCwgZm9yIHdoaWNoIHRoZSByZXN1bHQgc2hvdWxk IGJlIHNob3VsZCBiZSBbMTAsMjBdICYgWzEwLjAsMjAuMF0uCiAgTXlDbGFz c0FycmF5ID0gY29uc3RydWN0b3IyIChbMTAsMjBdLCBbMTAuMCwyMC4wXSkK ICBjYWxsIHRlc3QoNCwgMCwgWzEwLDIwXSwgMTYwLCByYXJyYXkgPSBbMTAu MCwyMC4wXSkKCiEgVGhpcyBwcm9kdWNlcyB0d28gZmluYWwgY2FsbHMgd2l0 aCB0aGUgY29udGVudHMgb2YgJ015Q2xhc3NBcnJheS4gYW5kIGl0cwohIHBh cmVudCBjb21wb25lbnQuCiAgZGVhbGxvY2F0ZSAoTXlDbGFzc0FycmF5KQog IGNhbGwgdGVzdCgyLCAwLCBbMTAsIDIwXSwgMTcwLCByYXJyYXkgPSBbMTAu MCwyMC4wXSkKCiEgQ2xlYW4gdXAgZm9yIHZhbGdyaW5kIHRlc3RpbmcKICBp ZiAoYWxsb2NhdGVkIChNeVR5cGUpKSBkZWFsbG9jYXRlIChNeVR5cGUpCiAg aWYgKGFsbG9jYXRlZCAoTXlUeXBlMikpIGRlYWxsb2NhdGUgKE15VHlwZTIp CiAgaWYgKGFsbG9jYXRlZCAoTXlUeXBlQXJyYXkpKSBkZWFsbG9jYXRlIChN eVR5cGVBcnJheSkKICBpZiAoYWxsb2NhdGVkIChNeUNsYXNzKSkgZGVhbGxv Y2F0ZSAoTXlDbGFzcykKZW5kIHByb2dyYW0gdGVzdF9maW5hbAo= --000000000000f4185d05f1aa67fe Content-Type: text/x-fortran; charset="US-ASCII"; name="finalize_38a.f90" Content-Disposition: attachment; filename="finalize_38a.f90" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lclu01yk1 ISB7IGRnLWRvIHJ1biB9CiEgeyBkZy1vcHRpb25zICItc3RkPWYyMDA4IiB9 CiEKISBUZXN0IGZpbmFsaXphdGlvbiBvbiBpbnRyaW5zaWMgYXNzaWdubWVu dCAoRjIwMTggKDcuNS42LjMpKQohIFdpdGggLXN0ZD1mMjAwOCwgc3RydWN0 dXJlIGFuZCBhcnJheSBjb25zdHJ1Y3RvcnMgYXJlIGZpbmFsaXplZC4KISBT ZWUgZmluYWxpemVfMzguZjkwIGZvciB0aGUgcmVzdWx0IHdpdGggLXN0ZD1n bnUuCiEgVGVzdHMgZml4IGZvciBQUjY0MjkwIGFzIHdlbGwuCiEKbW9kdWxl IHRlc3Rtb2RlCiAgaW1wbGljaXQgbm9uZQoKICB0eXBlIDo6IHNpbXBsZQog ICAgaW50ZWdlciA6OiBpbmQKICBjb250YWlucwogICAgZmluYWwgOjogZGVz dHJ1Y3RvcjEsIGRlc3RydWN0b3IyCiAgZW5kIHR5cGUgc2ltcGxlCgogIHR5 cGUsIGV4dGVuZHMoc2ltcGxlKSA6OiBjb21wbGljYXRlZAogICAgcmVhbCA6 OiByaW5kCiAgY29udGFpbnMKICAgIGZpbmFsIDo6IGRlc3RydWN0b3IzLCBk ZXN0cnVjdG9yNAogIGVuZCB0eXBlIGNvbXBsaWNhdGVkCgogIGludGVnZXIg OjogY2hlY2tfc2NhbGFyCiAgaW50ZWdlciA6OiBjaGVja19hcnJheSg0KQog IHJlYWwgOjogY2hlY2tfcmVhbAogIHJlYWwgOjogY2hlY2tfcmFycmF5KDQp CiAgaW50ZWdlciA6OiBmaW5hbF9jb3VudCA9IDAKICBpbnRlZ2VyIDo6IGZh aWxzID0gMAoKY29udGFpbnMKCiAgc3Vicm91dGluZSBkZXN0cnVjdG9yMShz ZWxmKQogICAgdHlwZShzaW1wbGUpLCBpbnRlbnQoaW5vdXQpIDo6IHNlbGYK ICAgIGNoZWNrX3NjYWxhciA9IHNlbGYlaW5kCiAgICBjaGVja19hcnJheSA9 IDAKICAgIGZpbmFsX2NvdW50ID0gZmluYWxfY291bnQgKyAxCiAgZW5kIHN1 YnJvdXRpbmUgZGVzdHJ1Y3RvcjEKCiAgc3Vicm91dGluZSBkZXN0cnVjdG9y MihzZWxmKQogICAgdHlwZShzaW1wbGUpLCBpbnRlbnQoaW5vdXQpIDo6IHNl bGYoOikKICAgIGNoZWNrX3NjYWxhciA9IDAKICAgIGNoZWNrX2FycmF5KDE6 c2l6ZShzZWxmLCAxKSkgPSBzZWxmJWluZAogICAgZmluYWxfY291bnQgPSBm aW5hbF9jb3VudCArIDEKICBlbmQgc3Vicm91dGluZSBkZXN0cnVjdG9yMgoK ICBzdWJyb3V0aW5lIGRlc3RydWN0b3IzKHNlbGYpCiAgICB0eXBlKGNvbXBs aWNhdGVkKSwgaW50ZW50KGlub3V0KSA6OiBzZWxmCiAgICBjaGVja19yZWFs ID0gc2VsZiVyaW5kCiAgICBjaGVja19hcnJheSA9IDAuMAogICAgZmluYWxf Y291bnQgPSBmaW5hbF9jb3VudCArIDEKICBlbmQgc3Vicm91dGluZSBkZXN0 cnVjdG9yMwoKICBzdWJyb3V0aW5lIGRlc3RydWN0b3I0KHNlbGYpCiAgICB0 eXBlKGNvbXBsaWNhdGVkKSwgaW50ZW50KGlub3V0KSA6OiBzZWxmKDopCiAg ICBjaGVja19yZWFsID0gMC4wCiAgICBjaGVja19yYXJyYXkoMTpzaXplKHNl bGYsIDEpKSA9IHNlbGYlcmluZAogICAgZmluYWxfY291bnQgPSBmaW5hbF9j b3VudCArIDEKICBlbmQgc3Vicm91dGluZSBkZXN0cnVjdG9yNAoKICBmdW5j dGlvbiBjb25zdHJ1Y3RvcjEoaW5kKSByZXN1bHQocmVzKQogICAgY2xhc3Mo c2ltcGxlKSwgYWxsb2NhdGFibGUgOjogcmVzCiAgICBpbnRlZ2VyLCBpbnRl bnQoaW4pIDo6IGluZAogICAgYWxsb2NhdGUgKHJlcywgc291cmNlID0gc2lt cGxlIChpbmQpKQogIGVuZCBmdW5jdGlvbiBjb25zdHJ1Y3RvcjEKCiAgZnVu Y3Rpb24gY29uc3RydWN0b3IyKGluZCwgcmluZCkgcmVzdWx0KHJlcykKICAg IGNsYXNzKHNpbXBsZSksIGFsbG9jYXRhYmxlIDo6IHJlcyg6KQogICAgaW50 ZWdlciwgaW50ZW50KGluKSA6OiBpbmQoOikKICAgIHJlYWwsIGludGVudChp biksIG9wdGlvbmFsIDo6IHJpbmQoOikKICAgIHR5cGUoY29tcGxpY2F0ZWQp LCBhbGxvY2F0YWJsZSA6OiBzcmMoOikKICAgIGludGVnZXIgOjogc3oKICAg IGludGVnZXIgOjogaQogICAgaWYgKHByZXNlbnQgKHJpbmQpKSB0aGVuCiAg ICAgIHN6ID0gbWluIChzaXplIChpbmQsIDEpLCBzaXplIChyaW5kLCAxKSkK ICAgICAgc3JjICA9IFsoY29tcGxpY2F0ZWQgKGluZChpKSwgcmluZChpKSks IGkgPSAxLCBzeildICAhIHsgZGctd2FybmluZyAiaGFzIGJlZW4gZmluYWxp emVkIiB9CiAgICAgIGFsbG9jYXRlIChyZXMsIHNvdXJjZSA9IHNyYykKICAg IGVsc2UKICAgICAgc3ogPSBzaXplIChpbmQsIDEpCiAgICAgIGFsbG9jYXRl IChyZXMsIHNvdXJjZSA9IFsoc2ltcGxlIChpbmQoaSkpLCBpID0gMSwgc3op XSkKICAgIGVuZCBpZgogIGVuZCBmdW5jdGlvbiBjb25zdHJ1Y3RvcjIKCiAg c3Vicm91dGluZSB0ZXN0IChjbnQsIHNjYWxhciwgYXJyYXksIG9mZiwgcmlu ZCwgcmFycmF5KQogICAgaW50ZWdlciA6OiBjbnQKICAgIGludGVnZXIgOjog c2NhbGFyCiAgICBpbnRlZ2VyIDo6IGFycmF5KDopCiAgICBpbnRlZ2VyIDo6 IG9mZgogICAgcmVhbCwgb3B0aW9uYWwgOjogcmluZAogICAgcmVhbCwgb3B0 aW9uYWwgOjogcmFycmF5KDopCiAgICBpZiAoZmluYWxfY291bnQgLm5lLiBj bnQpIHRoZW4KICAgICAgICBwcmludCAqLCAxICsgb2ZmLCBmaW5hbF9jb3Vu dCwgJygnLCBjbnQsICcpJwogICAgICAgIGZhaWxzID0gZmFpbHMgKyAxCiAg ICBlbmRpZgogICAgaWYgKGNoZWNrX3NjYWxhciAubmUuIHNjYWxhcikgdGhl bgogICAgICAgIHByaW50ICosIDIgKyBvZmYsIGNoZWNrX3NjYWxhciwgJygn LCBzY2FsYXIsICcpJwogICAgICAgIGZhaWxzID0gZmFpbHMgKyAxCiAgICBl bmRpZgogICAgaWYgKGFueSAoY2hlY2tfYXJyYXkoMTpzaXplIChhcnJheSwg MSkpIC5uZS4gYXJyYXkpKSB0aGVuCiAgICAgICAgcHJpbnQgKiwgMyArIG9m ZiwgY2hlY2tfYXJyYXkoMTpzaXplIChhcnJheSwgMSkpICwgJygnLCBhcnJh eSwgJyknCiAgICAgICAgZmFpbHMgPSBmYWlscyArIDEKICAgIGVuZGlmCiAg ICBpZiAocHJlc2VudCAocmluZCkpIHRoZW4KICAgICAgaWYgKGNoZWNrX3Jl YWwgLm5lLiByaW5kKSB0aGVuCiAgICAgICAgcHJpbnQgKiwgNCArIG9mZiwg Y2hlY2tfcmVhbCwnKCcsIHJpbmQsICcpJwogICAgICAgIGZhaWxzID0gZmFp bHMgKyAxCiAgICAgIGVuZGlmCiAgICBlbmQgaWYKICAgIGlmIChwcmVzZW50 IChyYXJyYXkpKSB0aGVuCiAgICAgIGlmIChhbnkgKGNoZWNrX3JhcnJheSgx OnNpemUgKHJhcnJheSwgMSkpIC5uZS4gcmFycmF5KSkgdGhlbgogICAgICAg IHByaW50ICosIDUgKyBvZmYsIGNoZWNrX3JhcnJheSgxOnNpemUgKHJhcnJh eSwgMSkpLCAnKCcsIHJhcnJheSwgJyknCiAgICAgICAgZmFpbHMgPSBmYWls cyArIDEKICAgICAgZW5kaWYKICAgIGVuZCBpZgogICAgZmluYWxfY291bnQg PSAwCiAgZW5kIHN1YnJvdXRpbmUgdGVzdAplbmQgbW9kdWxlIHRlc3Rtb2Rl Cgpwcm9ncmFtIHRlc3RfZmluYWwKICB1c2UgdGVzdG1vZGUKICBpbXBsaWNp dCBub25lCgogIHR5cGUoc2ltcGxlKSwgYWxsb2NhdGFibGUgOjogTXlUeXBl LCBNeVR5cGUyCiAgdHlwZShzaW1wbGUpLCBhbGxvY2F0YWJsZSA6OiBNeVR5 cGVBcnJheSg6KQogIHR5cGUoc2ltcGxlKSA6OiBUaHlUeXBlID0gc2ltcGxl KDIxKSwgVGh5VHlwZTIgPSBzaW1wbGUoMjIpCiAgY2xhc3Moc2ltcGxlKSwg YWxsb2NhdGFibGUgOjogTXlDbGFzcwogIGNsYXNzKHNpbXBsZSksIGFsbG9j YXRhYmxlIDo6IE15Q2xhc3NBcnJheSg6KQoKISAqKioqKioqKioqKioqKioq KioqKioqKioKISBEZXJpdmVkIHR5cGUgYXNzaWdubWVudHMKISAqKioqKioq KioqKioqKioqKioqKioqKioKCiEgVGhlIG9yaWdpbmFsIFBSIC0gbm8gZmlu YWxpemF0aW9uIG9mICd2YXInIGJlZm9yZSAocmUpYWxsb2NhdGlvbgohIGJl Y2F1c2UgaXQgaXMgZGVhbGxvY2F0ZWQgb24gc2NvcGUgZW50cnkgKHBhcmEg MSBvZiBGMjAxOCA3LjUuNi4zLikKICBNeVR5cGUgPSBUaHlUeXBlCiAgY2Fs bCB0ZXN0KDAsIDAsIFswLDBdLCAwKQoKICBpZiAoLm5vdC4gYWxsb2NhdGVk KE15VHlwZSkpIGFsbG9jYXRlKE15VHlwZSkKICBhbGxvY2F0ZShNeVR5cGUy KQogIE15VHlwZSVpbmQgPSAxCiAgTXlUeXBlMiVpbmQgPSAyCgohIFRoaXMg c2hvdWxkIHJlc3VsdCBpbiBhIGZpbmFsIGNhbGwgd2l0aCBzZWxmID0gc2lt cGxlKDEpIChwYXJhIDEgb2YgRjIwMTggNy41LjYuMy4pLgogIE15VHlwZSA9 IE15VHlwZTIKICBjYWxsIHRlc3QoMSwgMSwgWzAsMF0sIDEwKQoKICBhbGxv Y2F0ZShNeVR5cGVBcnJheSgyKSkKICBNeVR5cGVBcnJheSVpbmQgPSBbNDIs IDQzXQohIFRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIGZpbmFsIGNhbGwgd2l0 aCBzZWxmID0gW3NpbXBsZSg0Miksc2ltcGxlKDQzKV0sCiEgZm9sbG93ZWQg YnkgdGhlIGZpbmFsaXphdGlvbiBvZiB0aGUgYXJyYXkgY29uc3RydWN0b3Ig PSBzZWxmID0gW3NpbXBsZSgyMSksc2ltcGxlKDIyKV0uCiAgTXlUeXBlQXJy YXkgPSBbVGh5VHlwZSwgVGh5VHlwZTJdICEgeyBkZy13YXJuaW5nICJoYXMg YmVlbiBmaW5hbGl6ZWQiIH0KICBjYWxsIHRlc3QoMiwgMCwgWzIxLDIyXSwg MjApCgohIFRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIGZpbmFsIGNhbGwgJ3Zh cicgPSBpbml0aWFsaXphdGlvbiA9IHNpbXBsZSgyMiksCiEgZm9sbG93ZWQg Ynkgb25lIHdpdGggZm9yIHRoZSBzdHJ1Y3R1cmUgY29uc3RydWN0b3IuCiEg TkFHRk9SIGRvZXMgbm90IGZpbmFsaXplIHRoZSBjb25zdHJ1Y3Rvci4KICBU aHlUeXBlMiA9IHNpbXBsZSg5OSkgISB7IGRnLXdhcm5pbmcgImhhcyBiZWVu IGZpbmFsaXplZCIgfQogIGNhbGwgdGVzdCgyLCA5OSwgWzAsMF0sIDMwKQoK ISBUaGlzIHNob3VsZCByZXN1bHQgaW4gYSBmaW5hbCBjYWxsIGZvciAndmFy JyB3aXRoIHNlbGYgPSBzaW1wbGUoMjEpLgogIFRoeVR5cGUgPSBUaHlUeXBl MgogIGNhbGwgdGVzdCgxLCAyMSwgWzAsMF0sIDQwKQoKISBUaGlzIHNob3Vs ZCByZXN1bHQgaW4gdHdvIGZpbmFsIGNhbGxzOyB0aGUgbGFzdCBpcyBmb3Ig TXl0eXBlMiA9IHNpbXBsZSgyKS4KICBkZWFsbG9jYXRlIChNeVR5cGUsIE15 VHlwZTIpCiAgY2FsbCB0ZXN0KDIsIDIsIFswLDBdLCA1MCkKCiEgVGhpcyBz aG91bGQgcmVzdWx0IGluIG9uZSBmaW5hbCBjYWxsOyBNeVR5cGVBcnJheSA9 IFtzaW1wbGUoMjEpLHNpbXBsZSgyMildLgogIGRlYWxsb2NhdGUgKE15VHlw ZUFycmF5KQogIGNhbGwgdGVzdCgxLCAwLCBbMjEsMjJdLCA2MCkKCiEgVGhl IGxocyBpcyBmaW5hbGl6ZWQgYmVmb3JlIGFzc2lnbm1lbnQuCiEgVGhlIGZ1 bmN0aW9uIHJlc3VsdCBpcyBmaW5hbGl6ZWQgYWZ0ZXIgdGhlIGFzc2lnbm1l bnQuCiEgTkFHRk9SIGRvZXNuJ3QgZmluYWxpemUgdGhlIGZ1bmN0aW9uIHJl c3VsdC4KICBhbGxvY2F0ZSAoTXlUeXBlLCBzb3VyY2UgPSBzaW1wbGUgKDEx KSkKICBNeVR5cGUgPSBjb25zdHJ1Y3RvcjEgKDk5KQogIGNhbGwgdGVzdCgy LCA5OSwgWzAsMF0sIDcwKQogIGRlYWxsb2NhdGUgKE15VHlwZSkKISAqKioq KioqKioqKioqKioqKgohIENsYXNzIGFzc2lnbm1lbnRzCiEgKioqKioqKioq KioqKioqKioKCiAgZmluYWxfY291bnQgPSAwCgohIFRoaXMgc2hvdWxkIHJl c3VsdCBpbiBhIGZpbmFsIGNhbGwgZm9yIE15Q2xhc3MsIHdoaWNoIGlzIHNp bXBsZSgzKSBhbmQgdGhlbgohIHRoZSBzdHJ1Y3R1cmUgY29uc3RydWN0b3Ig d2l0aCB2YWx1ZSBzaW1wbGUoNCkpLgohIE5BR0ZPUiBkb2VzIG5vdCBmaW5h bGl6ZSB0aGUgY29uc3RydWN0b3IuCiAgYWxsb2NhdGUgKE15Q2xhc3MsIHNv dXJjZSA9IHNpbXBsZSAoMykpCiAgTXlDbGFzcyA9IHNpbXBsZSAoNCkgISB7 IGRnLXdhcm5pbmcgImhhcyBiZWVuIGZpbmFsaXplZCIgfQogIGNhbGwgdGVz dCgyLCA0LCBbMCwwXSwgMTAwKQoKISBUaGlzIHNob3VsZCByZXN1bHQgaW4g YSBmaW5hbCBjYWxsIHdpdGggdGhlIGFzc2lnbmVkIHZhbHVlIG9mIHNpbXBs ZSg0KS4KICBkZWFsbG9jYXRlIChNeUNsYXNzKQogIGNhbGwgdGVzdCgxLCA0 LCBbMCwwXSwgMTEwKQoKCiAgYWxsb2NhdGUgKE15Q2xhc3NBcnJheSwgc291 cmNlID0gW3NpbXBsZSAoNSksIHNpbXBsZSAoNildKQohIE1ha2Ugc3VyZSB0 aGF0IHRoZXJlIGlzIG5vIGZpbmFsIGNhbGwgc2luY2UgTXlDbGFzc0FycmF5 IGlzIG5vdCBhbGxvY2F0ZWQuCiAgY2FsbCB0ZXN0KDAsIDQsIFswLDBdLCAx MjApCgogIE15Q2xhc3NBcnJheSA9IFtzaW1wbGUgKDcpLCBzaW1wbGUgKDgp XSAhIHsgZGctd2FybmluZyAiaGFzIGJlZW4gZmluYWxpemVkIiB9CiEgVGhl IGZpcnN0IGZpbmFsIGNhbGwgc2hvdWxkIGZpbmFsaXplIE15Q2xhc3NBcnJh eSBhbmQgdGhlIHNlY29uZCBzaG91bGQgcmV0dXJuCiEgdGhlIHZhbHVlIG9m IHRoZSBhcnJheSBjb25zdHJ1Y3Rvci4KISBOQUdGT1IgbWFrZXMgYSBzaW5n bGUgc2NhbGFyIGZpbmFsIGNhbGwgd2l0aCB2YWx1ZSBzaW1wbGUoNSkgYW5k IGRvZXMgbm90CiEgZmluYWxpemUgdGhlIGFycmF5IGNvbnN0cnVjdG9yLgog IGNhbGwgdGVzdCgyLCAwLCBbNyw4XSwgMTMwKQoKISBUaGlzIHNob3VsZCBy ZXN1bHQgaW4gYSBmaW5hbCBjYWxsIHdpdGggdGhlIGFzc2lnbmVkIHZhbHVl LgogIGRlYWxsb2NhdGUgKE15Q2xhc3NBcnJheSkKICBjYWxsIHRlc3QoMSwg MCwgWzcsOF0sIDE0MCkKCiEgVGhpcyBzaG91bGQgcHJvZHVjZSBubyBmaW5h bCBjYWxscyBzaW5jZSBNeUNsYXNzQXJyYXkgd2FzIGRlYWxsb2NhdGVkLgog IGFsbG9jYXRlIChNeUNsYXNzQXJyYXksIHNvdXJjZSA9IFtjb21wbGljYXRl ZCgxLCAyLjApLGNvbXBsaWNhdGVkKDMsIDQuMCldKQoKISBUaGlzIHNob3Vs ZCBwcm9kdWNlIGNhbGxzIHRvIGRlc3RydWN0b3I0IHRoZW4gZGVzdHJ1Y3Rv cjIuCiAgZGVhbGxvY2F0ZSAoTXlDbGFzc0FycmF5KQoKISBGMjAxOCA3LjUu Ni4zOiAiSWYgdGhlIGVudGl0eSBpcyBvZiBleHRlbmRlZCB0eXBlIGFuZCB0 aGUgcGFyZW50IHR5cGUgaXMKISBmaW5hbGl6YWJsZSwgdGhlIHBhcmVudCBj b21wb25lbnQgaXMgZmluYWxpemVkLgogIGNhbGwgdGVzdCgyLCAwLCBbMSwg M10sIDE1MCwgcmFycmF5ID0gWzIuMCwgNC4wXSkKCiEgVGhpcyBwcm9kdWNl cyAyIGZpbmFsIGNhbGxzIGluIHR1cm4gZm9yICdzcmMnIGFzIGl0IGdvZXMg b3V0IG9mIHNjb3BlLCBmb3IKISBNeUNsYXNzQXJyYXkgYmVmb3JlIGl0IGlz IGFzc2lnbmVkIHRvIGFuZCB0aGUgcmVzdWx0IG9mICdjb25zdHJ1Y3RvcjIn IGFmdGVyCiEgdGhlIGFzc2lnbm1lbnQsIGZvciB3aGljaCB0aGUgcmVzdWx0 IHNob3VsZCBiZSBzaG91bGQgYmUgWzEwLDIwXSAmIFsxMC4wLDIwLjBdLgog IE15Q2xhc3NBcnJheSA9IGNvbnN0cnVjdG9yMiAoWzEwLDIwXSwgWzEwLjAs MjAuMF0pCiAgY2FsbCB0ZXN0KDYsIDAsIFsxMCwyMF0sIDE2MCwgcmFycmF5 ID0gWzEwLjAsMjAuMF0pCgohIFRoaXMgcHJvZHVjZXMgdHdvIGZpbmFsIGNh bGxzIHdpdGggdGhlIGNvbnRlbnRzIG9mICdNeUNsYXNzQXJyYXkuIGFuZCBp dHMKISBwYXJlbnQgY29tcG9uZW50LgogIGRlYWxsb2NhdGUgKE15Q2xhc3NB cnJheSkKICBjYWxsIHRlc3QoMiwgMCwgWzEwLCAyMF0sIDE3MCwgcmFycmF5 ID0gWzEwLjAsMjAuMF0pCgohIENsZWFuIHVwIGZvciB2YWxncmluZCB0ZXN0 aW5nCiAgaWYgKGFsbG9jYXRlZCAoTXlUeXBlKSkgZGVhbGxvY2F0ZSAoTXlU eXBlKQogIGlmIChhbGxvY2F0ZWQgKE15VHlwZTIpKSBkZWFsbG9jYXRlIChN eVR5cGUyKQogIGlmIChhbGxvY2F0ZWQgKE15VHlwZUFycmF5KSkgZGVhbGxv Y2F0ZSAoTXlUeXBlQXJyYXkpCiAgaWYgKGFsbG9jYXRlZCAoTXlDbGFzcykp IGRlYWxsb2NhdGUgKE15Q2xhc3MpCgohIEVycm9yIG1lc3NhZ2VzIHByaW50 ZWQgb3V0IGJ5ICd0ZXN0Jy4KICBpZiAoZmFpbHMgLm5lLiAwKSBzdG9wCmVu ZCBwcm9ncmFtIHRlc3RfZmluYWwK --000000000000f4185d05f1aa67fe Content-Type: text/x-patch; charset="US-ASCII"; name="trans-array.diff" Content-Disposition: attachment; filename="trans-array.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lclu0y912 ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLWFycmF5LmNjIGIvZ2Nj L2ZvcnRyYW4vdHJhbnMtYXJyYXkuY2MKaW5kZXggNDQxNzdhYTA4MTMuLjBi MzEyZjgwN2RmIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy1hcnJh eS5jYworKysgYi9nY2MvZm9ydHJhbi90cmFucy1hcnJheS5jYwpAQCAtOTk0 LDkgKzk5NCw5IEBAIGdmY19nZXRfYXJyYXlfc3BhbiAodHJlZSBkZXNjLCBn ZmNfZXhwciAqZXhwcikKICAgICAgIGlmICh0bXAgJiYgVFJFRV9DT0RFICh0 bXApID09IEFSUkFZX1RZUEUgJiYgVFlQRV9TVFJJTkdfRkxBRyAodG1wKSkK IAl7CiAJICBnY2NfYXNzZXJ0IChleHByLT50cy50eXBlID09IEJUX0NIQVJB Q1RFUik7Ci0JICAKKwogCSAgdG1wID0gZ2ZjX2dldF9jaGFyYWN0ZXJfbGVu X2luX2J5dGVzICh0bXApOwotCSAgCisKIAkgIGlmICh0bXAgPT0gTlVMTF9U UkVFIHx8IGludGVnZXJfemVyb3AgKHRtcCkpCiAJICAgIHsKIAkgICAgICB0 cmVlIGJzOwpAQCAtMTAwNyw3ICsxMDA3LDcgQEAgZ2ZjX2dldF9hcnJheV9z cGFuICh0cmVlIGRlc2MsIGdmY19leHByICpleHByKQogCSAgICAgIHRtcCA9 IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIE1VTFRfRVhQUiwK IAkJCQkgICAgIGdmY19hcnJheV9pbmRleF90eXBlLCB0bXAsIGJzKTsKIAkg ICAgfQotCSAgCisKIAkgIHRtcCA9ICh0bXAgJiYgIWludGVnZXJfemVyb3Ag KHRtcCkpCiAJICAgID8gKGZvbGRfY29udmVydCAoZ2ZjX2FycmF5X2luZGV4 X3R5cGUsIHRtcCkpIDogKE5VTExfVFJFRSk7CiAJfQpAQCAtMjAyNiwxMCAr MjAyNiwxMSBAQCBnZmNfdHJhbnNfYXJyYXlfY29uc3RydWN0b3Jfc3ViYXJy YXkgKHN0bXRibG9ja190ICogcGJsb2NrLAogICAgZm9yIHRoZSBkeW5hbWlj IHBhcnRzIG11c3QgYmUgYWxsb2NhdGVkIHVzaW5nIHJlYWxsb2MuICAqLwog CiBzdGF0aWMgdm9pZAotZ2ZjX3RyYW5zX2FycmF5X2NvbnN0cnVjdG9yX3Zh bHVlIChzdG10YmxvY2tfdCAqIHBibG9jaywgdHJlZSB0eXBlLAotCQkJCSAg IHRyZWUgZGVzYywgZ2ZjX2NvbnN0cnVjdG9yX2Jhc2UgYmFzZSwKLQkJCQkg ICB0cmVlICogcG9mZnNldCwgdHJlZSAqIG9mZnNldHZhciwKLQkJCQkgICBi b29sIGR5bmFtaWMpCitnZmNfdHJhbnNfYXJyYXlfY29uc3RydWN0b3JfdmFs dWUgKHN0bXRibG9ja190ICogcGJsb2NrLAorCQkJCSAgIHN0bXRibG9ja190 ICogZmluYWxibG9jaywKKwkJCQkgICB0cmVlIHR5cGUsIHRyZWUgZGVzYywK KwkJCQkgICBnZmNfY29uc3RydWN0b3JfYmFzZSBiYXNlLCB0cmVlICogcG9m ZnNldCwKKwkJCQkgICB0cmVlICogb2Zmc2V0dmFyLCBib29sIGR5bmFtaWMp CiB7CiAgIHRyZWUgdG1wOwogICB0cmVlIHN0YXJ0ID0gTlVMTF9UUkVFOwpA QCAtMjAzOSw2ICsyMDQwLDggQEAgZ2ZjX3RyYW5zX2FycmF5X2NvbnN0cnVj dG9yX3ZhbHVlIChzdG10YmxvY2tfdCAqIHBibG9jaywgdHJlZSB0eXBlLAog ICBnZmNfc2Ugc2U7CiAgIG1wel90IHNpemU7CiAgIGdmY19jb25zdHJ1Y3Rv ciAqYzsKKyAgZ2ZjX3R5cGVzcGVjIHRzOworICBpbnQgY3RyID0gMDsKIAog ICB0cmVlIHNoYWRvd19sb29wdmFyID0gTlVMTF9UUkVFOwogICBnZmNfc2F2 ZWRfdmFyIHNhdmVkX2xvb3B2YXI7CkBAIC0yMDQ2LDYgKzIwNDksNyBAQCBn ZmNfdHJhbnNfYXJyYXlfY29uc3RydWN0b3JfdmFsdWUgKHN0bXRibG9ja190 ICogcGJsb2NrLCB0cmVlIHR5cGUsCiAgIG1wel9pbml0IChzaXplKTsKICAg Zm9yIChjID0gZ2ZjX2NvbnN0cnVjdG9yX2ZpcnN0IChiYXNlKTsgYzsgYyA9 IGdmY19jb25zdHJ1Y3Rvcl9uZXh0IChjKSkKICAgICB7CisgICAgICBjdHIr KzsKICAgICAgIC8qIElmIHRoaXMgaXMgYW4gaXRlcmF0b3Igb3IgYW4gYXJy YXksIHRoZSBvZmZzZXQgbXVzdCBiZSBhIHZhcmlhYmxlLiAgKi8KICAgICAg IGlmICgoYy0+aXRlcmF0b3IgfHwgYy0+ZXhwci0+cmFuayA+IDApICYmIElO VEVHRVJfQ1NUX1AgKCpwb2Zmc2V0KSkKIAlnZmNfcHV0X29mZnNldF9pbnRv X3ZhciAocGJsb2NrLCBwb2Zmc2V0LCBvZmZzZXR2YXIpOwpAQCAtMjA5MSw4 ICsyMDk1LDggQEAgZ2ZjX3RyYW5zX2FycmF5X2NvbnN0cnVjdG9yX3ZhbHVl IChzdG10YmxvY2tfdCAqIHBibG9jaywgdHJlZSB0eXBlLAogICAgICAgaWYg KGMtPmV4cHItPmV4cHJfdHlwZSA9PSBFWFBSX0FSUkFZKQogCXsKIAkgIC8q IEFycmF5IGNvbnN0cnVjdG9ycyBjYW4gYmUgbmVzdGVkLiAgKi8KLQkgIGdm Y190cmFuc19hcnJheV9jb25zdHJ1Y3Rvcl92YWx1ZSAoJmJvZHksIHR5cGUs IGRlc2MsCi0JCQkJCSAgICAgYy0+ZXhwci0+dmFsdWUuY29uc3RydWN0b3Is CisJICBnZmNfdHJhbnNfYXJyYXlfY29uc3RydWN0b3JfdmFsdWUgKCZib2R5 LCBmaW5hbGJsb2NrLCB0eXBlLAorCQkJCQkgICAgIGRlc2MsIGMtPmV4cHIt PnZhbHVlLmNvbnN0cnVjdG9yLAogCQkJCQkgICAgIHBvZmZzZXQsIG9mZnNl dHZhciwgZHluYW1pYyk7CiAJfQogICAgICAgZWxzZSBpZiAoYy0+ZXhwci0+ cmFuayA+IDApCkBAIC0yMjAwLDYgKzIyMDQsNyBAQCBnZmNfdHJhbnNfYXJy YXlfY29uc3RydWN0b3JfdmFsdWUgKHN0bXRibG9ja190ICogcGJsb2NrLCB0 cmVlIHR5cGUsCiAgICAgICAgICAgICAgIGdmY19hZGRfbW9kaWZ5ICgmYm9k eSwgKm9mZnNldHZhciwgKnBvZmZzZXQpOwogICAgICAgICAgICAgICAqcG9m ZnNldCA9ICpvZmZzZXR2YXI7CiAgICAgICAgICAgICB9CisJICB0cyA9IGMt PmV4cHItPnRzOwogCX0KIAogICAgICAgLyogVGhlIGZyb250ZW5kIHNob3Vs ZCBhbHJlYWR5IGhhdmUgZG9uZSBhbnkgZXhwYW5zaW9ucwpAQCAtMjI5Miw2 ICsyMjk3LDM0IEBAIGdmY190cmFuc19hcnJheV9jb25zdHJ1Y3Rvcl92YWx1 ZSAoc3RtdGJsb2NrX3QgKiBwYmxvY2ssIHRyZWUgdHlwZSwKIAkgIGdmY19y ZXN0b3JlX3N5bSAoYy0+aXRlcmF0b3ItPnZhci0+c3ltdHJlZS0+bi5zeW0s ICZzYXZlZF9sb29wdmFyKTsKIAl9CiAgICAgfQorCisgIC8qIEYyMDA4IDQu NS42LjMgcGFyYSA1OiBJZiBhbiBleGVjdXRhYmxlIGNvbnN0cnVjdCByZWZl cmVuY2VzIGEgc3RydWN0dXJlCisgICAgIGNvbnN0cnVjdG9yIG9yIGFycmF5 IGNvbnN0cnVjdG9yLCB0aGUgZW50aXR5IGNyZWF0ZWQgYnkgdGhlIGNvbnN0 cnVjdG9yIGlzCisgICAgIGZpbmFsaXplZCBhZnRlciBleGVjdXRpb24gb2Yg dGhlIGlubmVybW9zdCBleGVjdXRhYmxlIGNvbnN0cnVjdCBjb250YWluaW5n CisgICAgIHRoZSByZWZlcmVuY2UuIFRoaXMsIGluIGZhY3QsIHdhcyBsYXRl ciBkZWxldGVkIGJ5IHRoZSBDb21iaW5lZCBUZWNoaWNhbAorICAgICBDb3Jy aWdlbmRhIDEgVE8gNCBmb3IgZm9ydHJhbiAyMDA4IChmMDgvMDAxMSkuCisK KyAgICAgVHJhbnNtaXQgZmluYWxpemF0aW9uIG9mIHRoaXMgY29uc3RydWN0 b3IgdGhyb3VnaCAnZmluYWxibG9jaycuICovCisgIGlmICghZ2ZjX25vdGlm aWNhdGlvbl9zdGQgKEdGQ19TVERfRjIwMThfREVMKSAmJiBmaW5hbGJsb2Nr ICE9IE5VTEwKKyAgICAgICYmIGdmY19tYXlfYmVfZmluYWxpemVkICh0cykK KyAgICAgICYmIGN0ciA+IDAgJiYgZGVzYyAhPSBOVUxMX1RSRUUKKyAgICAg ICYmIEdGQ19ERVNDUklQVE9SX1RZUEVfUCAoVFJFRV9UWVBFIChkZXNjKSkp CisgICAgeworICAgICAgc3ltYm9sX2F0dHJpYnV0ZSBhdHRyOworICAgICAg Z2ZjX3NlIGZzZTsKKyAgICAgIGdmY193YXJuaW5nICgwLCAiVGhlIHN0cnVj dHVyZSBjb25zdHJ1Y3RvciBhdCAlQyBoYXMgYmVlbiIKKwkJCSAiIGZpbmFs aXplZC4gVGhpcyBmZWF0dXJlIHdhcyByZW1vdmVkIGJ5IGYwOC8wMDExLiIK KwkJCSAiIFVzZSAtc3RkPWYyMDE4IG9yIC1zdGQ9Z251IHRvIGVsaW1pbmF0 ZSB0aGUiCisJCQkgIiBmaW5hbGl6YXRpb24uIik7CisgICAgICBhdHRyLnBv aW50ZXIgPSBhdHRyLmFsbG9jYXRhYmxlID0gMDsKKyAgICAgIGdmY19pbml0 X3NlICgmZnNlLCBOVUxMKTsKKyAgICAgIGZzZS5leHByID0gZGVzYzsKKyAg ICAgIGdmY19maW5hbGl6ZV9mdW5jdGlvbl9yZXN1bHQgKCZmc2UsIHRzLnUu ZGVyaXZlZCwgYXR0ciwgMSk7CisgICAgICBnZmNfYWRkX2Jsb2NrX3RvX2Js b2NrIChmaW5hbGJsb2NrLCAmZnNlLnByZSk7CisgICAgICBnZmNfYWRkX2Js b2NrX3RvX2Jsb2NrIChmaW5hbGJsb2NrLCAmZnNlLmZpbmFsYmxvY2spOwor ICAgICAgZ2ZjX2FkZF9ibG9ja190b19ibG9jayAoZmluYWxibG9jaywgJmZz ZS5wb3N0KTsKKyAgICB9CisKICAgbXB6X2NsZWFyIChzaXplKTsKIH0KIApA QCAtMjczOCw2ICsyNzcxLDcgQEAgdHJhbnNfYXJyYXlfY29uc3RydWN0b3Ig KGdmY19zcyAqIHNzLCBsb2N1cyAqIHdoZXJlKQogICBnZmNfc3MgKnM7CiAg IHRyZWUgbmVnX2xlbjsKICAgY2hhciAqbXNnOworICBzdG10YmxvY2tfdCBm aW5hbGJsb2NrOwogCiAgIC8qIFNhdmUgdGhlIG9sZCB2YWx1ZXMgZm9yIG5l c3RlZCBjaGVja2luZy4gICovCiAgIG9sZF9maXJzdF9sZW4gPSBmaXJzdF9s ZW47CkBAIC0yODk3LDggKzI5MzEsMTIgQEAgdHJhbnNfYXJyYXlfY29uc3Ry dWN0b3IgKGdmY19zcyAqIHNzLCBsb2N1cyAqIHdoZXJlKQogICBvZmZzZXR2 YXIgPSBnZmNfY3JlYXRlX3Zhcl9ucCAoZ2ZjX2FycmF5X2luZGV4X3R5cGUs ICJvZmZzZXQiKTsKICAgc3VwcHJlc3Nfd2FybmluZyAob2Zmc2V0dmFyKTsK ICAgVFJFRV9VU0VEIChvZmZzZXR2YXIpID0gMDsKLSAgZ2ZjX3RyYW5zX2Fy cmF5X2NvbnN0cnVjdG9yX3ZhbHVlICgmb3V0ZXJfbG9vcC0+cHJlLCB0eXBl LCBkZXNjLCBjLAotCQkJCSAgICAgJm9mZnNldCwgJm9mZnNldHZhciwgZHlu YW1pYyk7CisKKyAgZ2ZjX2luaXRfYmxvY2sgKCZmaW5hbGJsb2NrKTsKKyAg Z2ZjX3RyYW5zX2FycmF5X2NvbnN0cnVjdG9yX3ZhbHVlICgmb3V0ZXJfbG9v cC0+cHJlLAorCQkJCSAgICAgZXhwci0+bXVzdF9maW5hbGl6ZSA/ICZmaW5h bGJsb2NrIDogTlVMTCwKKwkJCQkgICAgIHR5cGUsIGRlc2MsIGMsICZvZmZz ZXQsICZvZmZzZXR2YXIsCisJCQkJICAgICBkeW5hbWljKTsKIAogICAvKiBJ ZiB0aGUgYXJyYXkgZ3Jvd3MgZHluYW1pY2FsbHksIHRoZSB1cHBlciBib3Vu ZCBvZiB0aGUgbG9vcCB2YXJpYWJsZQogICAgICBpcyBkZXRlcm1pbmVkIGJ5 IHRoZSBhcnJheSdzIGZpbmFsIHVwcGVyIGJvdW5kLiAgKi8KQEAgLTI5MzMs NiArMjk3MSwxNSBAQCBmaW5pc2g6CiAgIGZpcnN0X2xlbiA9IG9sZF9maXJz dF9sZW47CiAgIGZpcnN0X2xlbl92YWwgPSBvbGRfZmlyc3RfbGVuX3ZhbDsK ICAgdHlwZXNwZWNfY2hhcmFycmF5X2N0b3IgPSBvbGRfdHlwZXNwZWNfY2hh cmFycmF5X2N0b3I7CisKKyAgLyogRjIwMDggNC41LjYuMyBwYXJhIDU6IElm IGFuIGV4ZWN1dGFibGUgY29uc3RydWN0IHJlZmVyZW5jZXMgYSBzdHJ1Y3R1 cmUKKyAgICAgY29uc3RydWN0b3Igb3IgYXJyYXkgY29uc3RydWN0b3IsIHRo ZSBlbnRpdHkgY3JlYXRlZCBieSB0aGUgY29uc3RydWN0b3IgaXMKKyAgICAg ZmluYWxpemVkIGFmdGVyIGV4ZWN1dGlvbiBvZiB0aGUgaW5uZXJtb3N0IGV4 ZWN1dGFibGUgY29uc3RydWN0IGNvbnRhaW5pbmcKKyAgICAgdGhlIHJlZmVy ZW5jZS4gICovCisgIGlmICgoZXhwci0+dHMudHlwZSA9PSBCVF9ERVJJVkVE IHx8IGV4cHItPnRzLnR5cGUgPT0gQlRfQ0xBU1MpCisgICAgICAgJiYgZmlu YWxibG9jay5oZWFkICE9IE5VTExfVFJFRSkKKyAgICBnZmNfYWRkX2Jsb2Nr X3RvX2Jsb2NrICgmbG9vcC0+cG9zdCwgJmZpbmFsYmxvY2spOworCiB9CiAK IApAQCAtMzE2MSw2ICszMjA4LDcgQEAgZ2ZjX2FkZF9sb29wX3NzX2NvZGUg KGdmY19sb29waW5mbyAqIGxvb3AsIGdmY19zcyAqIHNzLCBib29sIHN1YnNj cmlwdCwKIAkgIGdmY19jb252X2V4cHIgKCZzZSwgZXhwcik7CiAJICBnZmNf YWRkX2Jsb2NrX3RvX2Jsb2NrICgmb3V0ZXJfbG9vcC0+cHJlLCAmc2UucHJl KTsKIAkgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZvdXRlcl9sb29wLT5w b3N0LCAmc2UucG9zdCk7CisJICBnZmNfYWRkX2Jsb2NrX3RvX2Jsb2NrICgm b3V0ZXJfbG9vcC0+cG9zdCwgJnNlLmZpbmFsYmxvY2spOwogCSAgc3NfaW5m by0+c3RyaW5nX2xlbmd0aCA9IHNlLnN0cmluZ19sZW5ndGg7CiAJICBicmVh azsKIApAQCAtNjQ1NywyMCArNjUwNSwyMiBAQCBnZmNfdHJhbnNfYXJyYXlf Y29ib3VuZHMgKHRyZWUgdHlwZSwgc3RtdGJsb2NrX3QgKiBwYmxvY2ssCiAg ICAgICAvKiBFdmFsdWF0ZSBub24tY29uc3RhbnQgYXJyYXkgYm91bmQgZXhw cmVzc2lvbnMuICAqLwogICAgICAgbGJvdW5kID0gR0ZDX1RZUEVfQVJSQVlf TEJPVU5EICh0eXBlLCBkaW0pOwogICAgICAgaWYgKGFzLT5sb3dlcltkaW1d ICYmICFJTlRFR0VSX0NTVF9QIChsYm91bmQpKQotICAgICAgICB7Ci0gICAg ICAgICAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7Ci0gICAgICAgICAgZ2Zj X2NvbnZfZXhwcl90eXBlICgmc2UsIGFzLT5sb3dlcltkaW1dLCBnZmNfYXJy YXlfaW5kZXhfdHlwZSk7Ci0gICAgICAgICAgZ2ZjX2FkZF9ibG9ja190b19i bG9jayAocGJsb2NrLCAmc2UucHJlKTsKLSAgICAgICAgICBnZmNfYWRkX21v ZGlmeSAocGJsb2NrLCBsYm91bmQsIHNlLmV4cHIpOwotICAgICAgICB9CisJ eworCSAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7CisJICBnZmNfY29udl9l eHByX3R5cGUgKCZzZSwgYXMtPmxvd2VyW2RpbV0sIGdmY19hcnJheV9pbmRl eF90eXBlKTsKKwkgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKHBibG9jaywg JnNlLnByZSk7CisJICBnZmNfYWRkX2Jsb2NrX3RvX2Jsb2NrIChwYmxvY2ss ICZzZS5maW5hbGJsb2NrKTsKKwkgIGdmY19hZGRfbW9kaWZ5IChwYmxvY2ss IGxib3VuZCwgc2UuZXhwcik7CisJfQogICAgICAgdWJvdW5kID0gR0ZDX1RZ UEVfQVJSQVlfVUJPVU5EICh0eXBlLCBkaW0pOwogICAgICAgaWYgKGFzLT51 cHBlcltkaW1dICYmICFJTlRFR0VSX0NTVF9QICh1Ym91bmQpKQotICAgICAg ICB7Ci0gICAgICAgICAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7Ci0gICAg ICAgICAgZ2ZjX2NvbnZfZXhwcl90eXBlICgmc2UsIGFzLT51cHBlcltkaW1d LCBnZmNfYXJyYXlfaW5kZXhfdHlwZSk7Ci0gICAgICAgICAgZ2ZjX2FkZF9i bG9ja190b19ibG9jayAocGJsb2NrLCAmc2UucHJlKTsKLSAgICAgICAgICBn ZmNfYWRkX21vZGlmeSAocGJsb2NrLCB1Ym91bmQsIHNlLmV4cHIpOwotICAg ICAgICB9CisJeworCSAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7CisJICBn ZmNfY29udl9leHByX3R5cGUgKCZzZSwgYXMtPnVwcGVyW2RpbV0sIGdmY19h cnJheV9pbmRleF90eXBlKTsKKwkgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sg KHBibG9jaywgJnNlLnByZSk7CisJICBnZmNfYWRkX2Jsb2NrX3RvX2Jsb2Nr IChwYmxvY2ssICZzZS5maW5hbGJsb2NrKTsKKwkgIGdmY19hZGRfbW9kaWZ5 IChwYmxvY2ssIHVib3VuZCwgc2UuZXhwcik7CisJfQogICAgIH0KIH0KIApA QCAtNjUwMiwyMCArNjU1MiwyMiBAQCBnZmNfdHJhbnNfYXJyYXlfYm91bmRz ICh0cmVlIHR5cGUsIGdmY19zeW1ib2wgKiBzeW0sIHRyZWUgKiBwb2Zmc2V0 LAogICAgICAgLyogRXZhbHVhdGUgbm9uLWNvbnN0YW50IGFycmF5IGJvdW5k IGV4cHJlc3Npb25zLiAgKi8KICAgICAgIGxib3VuZCA9IEdGQ19UWVBFX0FS UkFZX0xCT1VORCAodHlwZSwgZGltKTsKICAgICAgIGlmIChhcy0+bG93ZXJb ZGltXSAmJiAhSU5URUdFUl9DU1RfUCAobGJvdW5kKSkKLSAgICAgICAgewot ICAgICAgICAgIGdmY19pbml0X3NlICgmc2UsIE5VTEwpOwotICAgICAgICAg IGdmY19jb252X2V4cHJfdHlwZSAoJnNlLCBhcy0+bG93ZXJbZGltXSwgZ2Zj X2FycmF5X2luZGV4X3R5cGUpOwotICAgICAgICAgIGdmY19hZGRfYmxvY2tf dG9fYmxvY2sgKHBibG9jaywgJnNlLnByZSk7Ci0gICAgICAgICAgZ2ZjX2Fk ZF9tb2RpZnkgKHBibG9jaywgbGJvdW5kLCBzZS5leHByKTsKLSAgICAgICAg fQorCXsKKwkgIGdmY19pbml0X3NlICgmc2UsIE5VTEwpOworCSAgZ2ZjX2Nv bnZfZXhwcl90eXBlICgmc2UsIGFzLT5sb3dlcltkaW1dLCBnZmNfYXJyYXlf aW5kZXhfdHlwZSk7CisJICBnZmNfYWRkX2Jsb2NrX3RvX2Jsb2NrIChwYmxv Y2ssICZzZS5wcmUpOworCSAgZ2ZjX2FkZF9ibG9ja190b19ibG9jayAocGJs b2NrLCAmc2UuZmluYWxibG9jayk7CisJICBnZmNfYWRkX21vZGlmeSAocGJs b2NrLCBsYm91bmQsIHNlLmV4cHIpOworCX0KICAgICAgIHVib3VuZCA9IEdG Q19UWVBFX0FSUkFZX1VCT1VORCAodHlwZSwgZGltKTsKICAgICAgIGlmIChh cy0+dXBwZXJbZGltXSAmJiAhSU5URUdFUl9DU1RfUCAodWJvdW5kKSkKLSAg ICAgICAgewotICAgICAgICAgIGdmY19pbml0X3NlICgmc2UsIE5VTEwpOwot ICAgICAgICAgIGdmY19jb252X2V4cHJfdHlwZSAoJnNlLCBhcy0+dXBwZXJb ZGltXSwgZ2ZjX2FycmF5X2luZGV4X3R5cGUpOwotICAgICAgICAgIGdmY19h ZGRfYmxvY2tfdG9fYmxvY2sgKHBibG9jaywgJnNlLnByZSk7Ci0gICAgICAg ICAgZ2ZjX2FkZF9tb2RpZnkgKHBibG9jaywgdWJvdW5kLCBzZS5leHByKTsK LSAgICAgICAgfQorCXsKKwkgIGdmY19pbml0X3NlICgmc2UsIE5VTEwpOwor CSAgZ2ZjX2NvbnZfZXhwcl90eXBlICgmc2UsIGFzLT51cHBlcltkaW1dLCBn ZmNfYXJyYXlfaW5kZXhfdHlwZSk7CisJICBnZmNfYWRkX2Jsb2NrX3RvX2Js b2NrIChwYmxvY2ssICZzZS5wcmUpOworCSAgZ2ZjX2FkZF9ibG9ja190b19i bG9jayAocGJsb2NrLCAmc2UuZmluYWxibG9jayk7CisJICBnZmNfYWRkX21v ZGlmeSAocGJsb2NrLCB1Ym91bmQsIHNlLmV4cHIpOworCX0KICAgICAgIC8q IFRoZSBvZmZzZXQgb2YgdGhpcyBkaW1lbnNpb24uICBvZmZzZXQgPSBvZmZz ZXQgLSBsYm91bmQgKiBzdHJpZGUuICAqLwogICAgICAgdG1wID0gZm9sZF9i dWlsZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgTVVMVF9FWFBSLCBnZmNfYXJy YXlfaW5kZXhfdHlwZSwKIAkJCSAgICAgbGJvdW5kLCBzaXplKTsKQEAgLTY1 MjksMTkgKzY1ODEsMTkgQEAgZ2ZjX3RyYW5zX2FycmF5X2JvdW5kcyAodHJl ZSB0eXBlLCBnZmNfc3ltYm9sICogc3ltLCB0cmVlICogcG9mZnNldCwKIAlz dHJpZGUgPSBHRkNfVFlQRV9BUlJBWV9TSVpFICh0eXBlKTsKIAogICAgICAg aWYgKHVib3VuZCAhPSBOVUxMX1RSRUUgJiYgIShzdHJpZGUgJiYgSU5URUdF Ul9DU1RfUCAoc3RyaWRlKSkpCi0gICAgICAgIHsKLSAgICAgICAgICAvKiBD YWxjdWxhdGUgc3RyaWRlID0gc2l6ZSAqICh1Ym91bmQgKyAxIC0gbGJvdW5k KS4gICovCi0gICAgICAgICAgdG1wID0gZm9sZF9idWlsZDJfbG9jIChpbnB1 dF9sb2NhdGlvbiwgTUlOVVNfRVhQUiwKKwl7CisJICAvKiBDYWxjdWxhdGUg c3RyaWRlID0gc2l6ZSAqICh1Ym91bmQgKyAxIC0gbGJvdW5kKS4gICovCisJ ICB0bXAgPSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBNSU5V U19FWFBSLAogCQkJCSBnZmNfYXJyYXlfaW5kZXhfdHlwZSwKIAkJCQkgZ2Zj X2luZGV4X29uZV9ub2RlLCBsYm91bmQpOwotICAgICAgICAgIHRtcCA9IGZv bGRfYnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIFBMVVNfRVhQUiwKKwkg IHRtcCA9IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIFBMVVNf RVhQUiwKIAkJCQkgZ2ZjX2FycmF5X2luZGV4X3R5cGUsIHVib3VuZCwgdG1w KTsKLSAgICAgICAgICB0bXAgPSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xv Y2F0aW9uLCBNVUxUX0VYUFIsCisJICB0bXAgPSBmb2xkX2J1aWxkMl9sb2Mg KGlucHV0X2xvY2F0aW9uLCBNVUxUX0VYUFIsCiAJCQkJIGdmY19hcnJheV9p bmRleF90eXBlLCBzaXplLCB0bXApOwotICAgICAgICAgIGlmIChzdHJpZGUp Ci0gICAgICAgICAgICBnZmNfYWRkX21vZGlmeSAocGJsb2NrLCBzdHJpZGUs IHRtcCk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RyaWRlID0g Z2ZjX2V2YWx1YXRlX25vdyAodG1wLCBwYmxvY2spOworCSAgaWYgKHN0cmlk ZSkKKwkgICAgZ2ZjX2FkZF9tb2RpZnkgKHBibG9jaywgc3RyaWRlLCB0bXAp OworCSAgZWxzZQorCSAgICBzdHJpZGUgPSBnZmNfZXZhbHVhdGVfbm93ICh0 bXAsIHBibG9jayk7CiAKIAkgIC8qIE1ha2Ugc3VyZSB0aGF0IG5lZ2F0aXZl IHNpemUgYXJyYXlzIGFyZSB0cmFuc2xhdGVkCiAJICAgICB0byBiZWluZyB6 ZXJvIHNpemUuICAqLwpAQCAtNjU1MSw3ICs2NjAzLDcgQEAgZ2ZjX3RyYW5z X2FycmF5X2JvdW5kcyAodHJlZSB0eXBlLCBnZmNfc3ltYm9sICogc3ltLCB0 cmVlICogcG9mZnNldCwKIAkJCQkgZ2ZjX2FycmF5X2luZGV4X3R5cGUsIHRt cCwKIAkJCQkgc3RyaWRlLCBnZmNfaW5kZXhfemVyb19ub2RlKTsKIAkgIGdm Y19hZGRfbW9kaWZ5IChwYmxvY2ssIHN0cmlkZSwgdG1wKTsKLSAgICAgICAg fQorCX0KIAogICAgICAgc2l6ZSA9IHN0cmlkZTsKICAgICB9CkBAIC03NTMx LDcgKzc1ODMsNyBAQCBnZmNfY29udl9leHByX2Rlc2NyaXB0b3IgKGdmY19z ZSAqc2UsIGdmY19leHByICpleHByKQogCiAgIGlmICghc2UtPmRpcmVjdF9i eXJlZikKICAgICBzZS0+dW5saW1pdGVkX3BvbHltb3JwaGljID0gVU5MSU1J VEVEX1BPTFkgKGV4cHIpOwotICAKKwogICAvKiBTcGVjaWFsIGNhc2UgdGhp bmdzIHdlIGtub3cgd2UgY2FuIHBhc3MgZWFzaWx5LiAgKi8KICAgc3dpdGNo IChleHByLT5leHByX3R5cGUpCiAgICAgewpAQCAtODk3Myw5ICs5MDI1LDEx IEBAIGVudW0ge0RFQUxMT0NBVEVfQUxMT0NfQ09NUCA9IDEsIE5VTExJRllf QUxMT0NfQ09NUCwKIHN0YXRpYyBnZmNfYWN0dWFsX2FyZ2xpc3QgKnBkdF9w YXJhbV9saXN0OwogCiBzdGF0aWMgdHJlZQotc3RydWN0dXJlX2FsbG9jX2Nv bXBzIChnZmNfc3ltYm9sICogZGVyX3R5cGUsIHRyZWUgZGVjbCwKLQkJICAg ICAgIHRyZWUgZGVzdCwgaW50IHJhbmssIGludCBwdXJwb3NlLCBpbnQgY2Fm X21vZGUsCi0JCSAgICAgICBnZmNfY29fc3Vicm91dGluZXNfYXJncyAqYXJn cykKK3N0cnVjdHVyZV9hbGxvY19jb21wcyAoZ2ZjX3N5bWJvbCAqIGRlcl90 eXBlLCB0cmVlIGRlY2wsIHRyZWUgZGVzdCwKKwkJICAgICAgIGludCByYW5r LCBpbnQgcHVycG9zZSwgaW50IGNhZl9tb2RlLAorCQkgICAgICAgZ2ZjX2Nv X3N1YnJvdXRpbmVzX2FyZ3MgKmFyZ3MsCisJCSAgICAgICBib29sIG5vX2Zp bmFsaXphdGlvbiA9IGZhbHNlLAorCQkgICAgICAgYm9vbCBkZWxfcHRycyA9 IGZhbHNlKQogewogICBnZmNfY29tcG9uZW50ICpjOwogICBnZmNfbG9vcGlu Zm8gbG9vcDsKQEAgLTkwNjMsMTEgKzkxMTcsMTIgQEAgc3RydWN0dXJlX2Fs bG9jX2NvbXBzIChnZmNfc3ltYm9sICogZGVyX3R5cGUsIHRyZWUgZGVjbCwK IAkJCQkJICAgICBnZmNfY29udl9hcnJheV9kYXRhIChkZXN0KSk7CiAJICBk cmVmID0gZ2ZjX2J1aWxkX2FycmF5X3JlZiAodG1wLCBpbmRleCwgTlVMTCk7 CiAJICB0bXAgPSBzdHJ1Y3R1cmVfYWxsb2NfY29tcHMgKGRlcl90eXBlLCB2 cmVmLCBkcmVmLCByYW5rLAotCQkJCSAgICAgICBDT1BZX0FMTE9DX0NPTVAs IGNhZl9tb2RlLCBhcmdzKTsKKwkJCQkgICAgICAgQ09QWV9BTExPQ19DT01Q LCBjYWZfbW9kZSwgYXJncywKKwkJCQkgICAgICAgbm9fZmluYWxpemF0aW9u KTsKIAl9CiAgICAgICBlbHNlCiAJdG1wID0gc3RydWN0dXJlX2FsbG9jX2Nv bXBzIChkZXJfdHlwZSwgdnJlZiwgTlVMTF9UUkVFLCByYW5rLCBwdXJwb3Nl LAotCQkJCSAgICAgY2FmX21vZGUsIGFyZ3MpOworCQkJCSAgICAgY2FmX21v ZGUsIGFyZ3MsIG5vX2ZpbmFsaXphdGlvbik7CiAKICAgICAgIGdmY19hZGRf ZXhwcl90b19ibG9jayAoJmxvb3Bib2R5LCB0bXApOwogCkBAIC05MTAxLDEz ICs5MTU2LDE1IEBAIHN0cnVjdHVyZV9hbGxvY19jb21wcyAoZ2ZjX3N5bWJv bCAqIGRlcl90eXBlLCB0cmVlIGRlY2wsCiAgIGlmIChwdXJwb3NlID09IERF QUxMT0NBVEVfQUxMT0NfQ09NUCAmJiBkZXJfdHlwZS0+YXR0ci5wZHRfdHlw ZSkKICAgICB7CiAgICAgICB0bXAgPSBzdHJ1Y3R1cmVfYWxsb2NfY29tcHMg KGRlcl90eXBlLCBkZWNsLCBOVUxMX1RSRUUsIHJhbmssCi0JCQkJICAgREVB TExPQ0FURV9QRFRfQ09NUCwgMCwgYXJncyk7CisJCQkJICAgREVBTExPQ0FU RV9QRFRfQ09NUCwgMCwgYXJncywKKwkJCQkgICBub19maW5hbGl6YXRpb24p OwogICAgICAgZ2ZjX2FkZF9leHByX3RvX2Jsb2NrICgmZm5ibG9jaywgdG1w KTsKICAgICB9CiAgIGVsc2UgaWYgKHB1cnBvc2UgPT0gQUxMT0NBVEVfUERU X0NPTVAgJiYgZGVyX3R5cGUtPmF0dHIuYWxsb2NfY29tcCkKICAgICB7CiAg ICAgICB0bXAgPSBzdHJ1Y3R1cmVfYWxsb2NfY29tcHMgKGRlcl90eXBlLCBk ZWNsLCBOVUxMX1RSRUUsIHJhbmssCi0JCQkJICAgTlVMTElGWV9BTExPQ19D T01QLCAwLCBhcmdzKTsKKwkJCQkgICBOVUxMSUZZX0FMTE9DX0NPTVAsIDAs IGFyZ3MsCisJCQkJICAgbm9fZmluYWxpemF0aW9uKTsKICAgICAgIGdmY19h ZGRfZXhwcl90b19ibG9jayAoJmZuYmxvY2ssIHRtcCk7CiAgICAgfQogCkBA IC05MTY5LDcgKzkyMjYsNyBAQCBzdHJ1Y3R1cmVfYWxsb2NfY29tcHMgKGdm Y19zeW1ib2wgKiBkZXJfdHlwZSwgdHJlZSBkZWNsLAogCQkgIGFkZF93aGVu X2FsbG9jYXRlZAogCQkgICAgICA9IHN0cnVjdHVyZV9hbGxvY19jb21wcyAo Q0xBU1NfREFUQSAoYyktPnRzLnUuZGVyaXZlZCwKIAkJCQkJICAgICAgIGNv bXAsIE5VTExfVFJFRSwgcmFuaywgcHVycG9zZSwKLQkJCQkJICAgICAgIGNh Zl9tb2RlLCBhcmdzKTsKKwkJCQkJICAgICAgIGNhZl9tb2RlLCBhcmdzLCBu b19maW5hbGl6YXRpb24pOwogCQl9CiAJICAgICAgZWxzZQogCQl7CkBAIC05 MTc3LDcgKzkyMzQsOCBAQCBzdHJ1Y3R1cmVfYWxsb2NfY29tcHMgKGdmY19z eW1ib2wgKiBkZXJfdHlwZSwgdHJlZSBkZWNsLAogCQkgIGFkZF93aGVuX2Fs bG9jYXRlZCA9IHN0cnVjdHVyZV9hbGxvY19jb21wcyAoYy0+dHMudS5kZXJp dmVkLAogCQkJCQkJCSAgICAgIGNvbXAsIE5VTExfVFJFRSwKIAkJCQkJCQkg ICAgICByYW5rLCBwdXJwb3NlLAotCQkJCQkJCSAgICAgIGNhZl9tb2RlLCBh cmdzKTsKKwkJCQkJCQkgICAgICBjYWZfbW9kZSwgYXJncywKKwkJCQkJCQkg ICAgICBub19maW5hbGl6YXRpb24pOwogCQl9CiAJICAgIH0KIApAQCAtOTI5 Myw4ICs5MzUxLDggQEAgc3RydWN0dXJlX2FsbG9jX2NvbXBzIChnZmNfc3lt Ym9sICogZGVyX3R5cGUsIHRyZWUgZGVjbCwKIAkJY29udGludWU7CiAJICAg IH0KIAotCSAgaWYgKChjLT50cy50eXBlID09IEJUX0RFUklWRUQgJiYgIWMt PmF0dHIucG9pbnRlcikKLQkgICAgIHx8IChjLT50cy50eXBlID09IEJUX0NM QVNTICYmICFDTEFTU19EQVRBIChjKS0+YXR0ci5jbGFzc19wb2ludGVyKSkK KwkgIGlmICghbm9fZmluYWxpemF0aW9uICYmICgoYy0+dHMudHlwZSA9PSBC VF9ERVJJVkVEICYmICFjLT5hdHRyLnBvaW50ZXIpCisJICAgICB8fCAoYy0+ dHMudHlwZSA9PSBCVF9DTEFTUyAmJiAhQ0xBU1NfREFUQSAoYyktPmF0dHIu Y2xhc3NfcG9pbnRlcikpKQogCSAgICAvKiBDYWxsIHRoZSBmaW5hbGl6ZXIs IHdoaWNoIHdpbGwgZnJlZSB0aGUgbWVtb3J5IGFuZCBudWxsaWZ5IHRoZQog CSAgICAgICBwb2ludGVyIG9mIGFuIGFycmF5LiAgKi8KIAkgICAgZGVhbGxv Y2F0ZV9jYWxsZWQgPSBnZmNfYWRkX2NvbXBfZmluYWxpemVyX2NhbGwgKCZ0 bXBibG9jaywgY29tcCwgYywKQEAgLTkzMjIsNyArOTM4MCw3IEBAIHN0cnVj dHVyZV9hbGxvY19jb21wcyAoZ2ZjX3N5bWJvbCAqIGRlcl90eXBlLCB0cmVl IGRlY2wsCiAJCSAgYWRkX3doZW5fYWxsb2NhdGVkCiAJCSAgICAgID0gc3Ry dWN0dXJlX2FsbG9jX2NvbXBzIChDTEFTU19EQVRBIChjKS0+dHMudS5kZXJp dmVkLAogCQkJCQkgICAgICAgY29tcCwgTlVMTF9UUkVFLCByYW5rLCBwdXJw b3NlLAotCQkJCQkgICAgICAgY2FmX21vZGUsIGFyZ3MpOworCQkJCQkgICAg ICAgY2FmX21vZGUsIGFyZ3MsIG5vX2ZpbmFsaXphdGlvbik7CiAJCX0KIAkg ICAgICBlbHNlCiAJCXsKQEAgLTkzMzAsNyArOTM4OCw4IEBAIHN0cnVjdHVy ZV9hbGxvY19jb21wcyAoZ2ZjX3N5bWJvbCAqIGRlcl90eXBlLCB0cmVlIGRl Y2wsCiAJCSAgYWRkX3doZW5fYWxsb2NhdGVkID0gc3RydWN0dXJlX2FsbG9j X2NvbXBzIChjLT50cy51LmRlcml2ZWQsCiAJCQkJCQkJICAgICAgY29tcCwg TlVMTF9UUkVFLAogCQkJCQkJCSAgICAgIHJhbmssIHB1cnBvc2UsCi0JCQkJ CQkJICAgICAgY2FmX21vZGUsIGFyZ3MpOworCQkJCQkJCSAgICAgIGNhZl9t b2RlLCBhcmdzLAorCQkJCQkJCSAgICAgIG5vX2ZpbmFsaXphdGlvbik7CiAJ CX0KIAkgICAgfQogCkBAIC05NjI4LDcgKzk2ODcsOCBAQCBzdHJ1Y3R1cmVf YWxsb2NfY29tcHMgKGdmY19zeW1ib2wgKiBkZXJfdHlwZSwgdHJlZSBkZWNs LAogCQkJCSAgICAgIGRlY2wsIGNkZWNsLCBOVUxMX1RSRUUpOwogCSAgICAg IHJhbmsgPSBjLT5hcyA/IGMtPmFzLT5yYW5rIDogMDsKIAkgICAgICB0bXAg PSBzdHJ1Y3R1cmVfYWxsb2NfY29tcHMgKGMtPnRzLnUuZGVyaXZlZCwgY29t cCwgTlVMTF9UUkVFLAotCQkJCQkgICByYW5rLCBwdXJwb3NlLCBjYWZfbW9k ZSwgYXJncyk7CisJCQkJCSAgIHJhbmssIHB1cnBvc2UsIGNhZl9tb2RlLCBh cmdzLAorCQkJCQkgICBub19maW5hbGl6YXRpb24pOwogCSAgICAgIGdmY19h ZGRfZXhwcl90b19ibG9jayAoJmZuYmxvY2ssIHRtcCk7CiAJICAgIH0KIAkg IGJyZWFrOwpAQCAtOTY2NCwxNCArOTcyNCwxNCBAQCBzdHJ1Y3R1cmVfYWxs b2NfY29tcHMgKGdmY19zeW1ib2wgKiBkZXJfdHlwZSwgdHJlZSBkZWNsLAog CQkgIHRtcCA9IHN0cnVjdHVyZV9hbGxvY19jb21wcyAoYy0+dHMudS5kZXJp dmVkLCBjb21wLCBkY21wLAogCQkJCQkgICAgICAgcmFuaywgcHVycG9zZSwg Y2FmX21vZGUKIAkJCQkJICAgICAgIHwgR0ZDX1NUUlVDVFVSRV9DQUZfTU9E RV9JTl9DT0FSUkFZLAotCQkJCQkgICAgICAgYXJncyk7CisJCQkJCSAgICAg ICBhcmdzLCBub19maW5hbGl6YXRpb24pOwogCQkgIGdmY19hZGRfZXhwcl90 b19ibG9jayAoJmZuYmxvY2ssIHRtcCk7CiAJCX0KIAkgICAgfQogCSAgYnJl YWs7CiAKIAljYXNlIENPUFlfQUxMT0NfQ09NUDoKLQkgIGlmIChjLT5hdHRy LnBvaW50ZXIgfHwgYy0+YXR0ci5wcm9jX3BvaW50ZXIpCisJICBpZiAoKGMt PmF0dHIucG9pbnRlciAmJiAhZGVsX3B0cnMpIHx8IGMtPmF0dHIucHJvY19w b2ludGVyKQogCSAgICBjb250aW51ZTsKIAogCSAgLyogV2UgbmVlZCBzb3Vy Y2UgYW5kIGRlc3RpbmF0aW9uIGNvbXBvbmVudHMuICAqLwpAQCAtOTcxMyw2 ICs5NzczLDEzIEBAIHN0cnVjdHVyZV9hbGxvY19jb21wcyAoZ2ZjX3N5bWJv bCAqIGRlcl90eXBlLCB0cmVlIGRlY2wsCiAJCSAgZHN0X2RhdGEgPSBnZmNf Y29udl9kZXNjcmlwdG9yX2RhdGFfZ2V0IChkc3RfZGF0YSk7CiAJCX0KIAor CSAgICAgIGlmIChDTEFTU19EQVRBIChjKS0+YXR0ci5wb2ludGVyKQorCQl7 CisJCSAgZ2ZjX2FkZF9tb2RpZnkgKCZmbmJsb2NrLCBkc3RfZGF0YSwKKwkJ CQkgIGJ1aWxkX2ludF9jc3QgKFRSRUVfVFlQRSAoZHN0X2RhdGEpLCAwKSk7 CisJCSAgY29udGludWU7CisJCX0KKwogCSAgICAgIGdmY19pbml0X2Jsb2Nr ICgmdG1wYmxvY2spOwogCiAJICAgICAgZ2ZjX2FkZF9tb2RpZnkgKCZ0bXBi bG9jaywgZ2ZjX2NsYXNzX3ZwdHJfZ2V0IChkY21wKSwKQEAgLTk3NTksNiAr OTgyNiwxNiBAQCBzdHJ1Y3R1cmVfYWxsb2NfY29tcHMgKGdmY19zeW1ib2wg KiBkZXJfdHlwZSwgdHJlZSBkZWNsLAogCQkJCQkJCSB0bXAsIG51bGxfZGF0 YSkpOwogCSAgICAgIGNvbnRpbnVlOwogCSAgICB9CisJICBlbHNlIGlmIChj LT5hdHRyLnBvaW50ZXIpCisJICAgIHsKKwkgICAgICBpZiAoYy0+YXR0ci5k aW1lbnNpb24pCisJCXRtcCA9IGdmY19jb252X2Rlc2NyaXB0b3JfZGF0YV9n ZXQgKGRjbXApOworCSAgICAgIGVsc2UKKwkJdG1wID0gZGNtcDsKKwkgICAg ICBnZmNfYWRkX21vZGlmeSAoJmZuYmxvY2ssIHRtcCwKKwkJCSAgICAgIGJ1 aWxkX2ludF9jc3QgKFRSRUVfVFlQRSAodG1wKSwgMCkpOworCSAgICAgIGNv bnRpbnVlOworCSAgICB9CiAKIAkgIC8qIFRvIGltcGxlbWVudCBndWFyZGVk IGRlZXAgY29weSwgaS5lLiwgZGVlcCBjb3B5IG9ubHkgYWxsb2NhdGFibGUK IAkgICAgIGNvbXBvbmVudHMgdGhhdCBhcmUgcmVhbGx5IGFsbG9jYXRlZCwg dGhlIGRlZXAgY29weSBjb2RlIGhhcyB0bwpAQCAtOTc3Miw3ICs5ODQ5LDgg QEAgc3RydWN0dXJlX2FsbG9jX2NvbXBzIChnZmNfc3ltYm9sICogZGVyX3R5 cGUsIHRyZWUgZGVjbCwKIAkgICAgICBhZGRfd2hlbl9hbGxvY2F0ZWQgPSBz dHJ1Y3R1cmVfYWxsb2NfY29tcHMgKGMtPnRzLnUuZGVyaXZlZCwKIAkJCQkJ CQkgIGNvbXAsIGRjbXAsCiAJCQkJCQkJICByYW5rLCBwdXJwb3NlLAotCQkJ CQkJCSAgY2FmX21vZGUsIGFyZ3MpOworCQkJCQkJCSAgY2FmX21vZGUsIGFy Z3MsCisJCQkJCQkJICBub19maW5hbGl6YXRpb24pOwogCSAgICB9CiAJICBl bHNlCiAJICAgIGFkZF93aGVuX2FsbG9jYXRlZCA9IE5VTExfVFJFRTsKQEAg LTEwMTQ1LDcgKzEwMjIzLDggQEAgZ2ZjX251bGxpZnlfYWxsb2NfY29tcCAo Z2ZjX3N5bWJvbCAqIGRlcl90eXBlLCB0cmVlIGRlY2wsIGludCByYW5rLAog ewogICByZXR1cm4gc3RydWN0dXJlX2FsbG9jX2NvbXBzIChkZXJfdHlwZSwg ZGVjbCwgTlVMTF9UUkVFLCByYW5rLAogCQkJCU5VTExJRllfQUxMT0NfQ09N UCwKLQkJCQlHRkNfU1RSVUNUVVJFX0NBRl9NT0RFX0VOQUJMRV9DT0FSUkFZ IHwgY2FmX21vZGUsIE5VTEwpOworCQkJCUdGQ19TVFJVQ1RVUkVfQ0FGX01P REVfRU5BQkxFX0NPQVJSQVkgfCBjYWZfbW9kZSwKKwkJCQlOVUxMKTsKIH0K IAogCkBAIC0xMDE1OCw3ICsxMDIzNyw4IEBAIGdmY19kZWFsbG9jYXRlX2Fs bG9jX2NvbXAgKGdmY19zeW1ib2wgKiBkZXJfdHlwZSwgdHJlZSBkZWNsLCBp bnQgcmFuaywKIHsKICAgcmV0dXJuIHN0cnVjdHVyZV9hbGxvY19jb21wcyAo ZGVyX3R5cGUsIGRlY2wsIE5VTExfVFJFRSwgcmFuaywKIAkJCQlERUFMTE9D QVRFX0FMTE9DX0NPTVAsCi0JCQkJR0ZDX1NUUlVDVFVSRV9DQUZfTU9ERV9F TkFCTEVfQ09BUlJBWSB8IGNhZl9tb2RlLCBOVUxMKTsKKwkJCQlHRkNfU1RS VUNUVVJFX0NBRl9NT0RFX0VOQUJMRV9DT0FSUkFZIHwgY2FmX21vZGUsCisJ CQkJTlVMTCk7CiB9CiAKIHRyZWUKQEAgLTEwMTk2LDcgKzEwMjc2LDggQEAg Z2ZjX2JjYXN0X2FsbG9jX2NvbXAgKGdmY19zeW1ib2wgKmRlcml2ZWQsIGdm Y19leHByICpleHByLCBpbnQgcmFuaywKIAogICB0bXAgPSBzdHJ1Y3R1cmVf YWxsb2NfY29tcHMgKGRlcml2ZWQsIGFycmF5LCBOVUxMX1RSRUUsIHJhbmss CiAJCQkgICAgICAgQkNBU1RfQUxMT0NfQ09NUCwKLSAgCQkJICAgICAgIEdG Q19TVFJVQ1RVUkVfQ0FGX01PREVfRU5BQkxFX0NPQVJSQVksICZhcmdzKTsK KwkJCSAgICAgICBHRkNfU1RSVUNUVVJFX0NBRl9NT0RFX0VOQUJMRV9DT0FS UkFZLAorCQkJICAgICAgICZhcmdzKTsKICAgcmV0dXJuIHRtcDsKIH0KIApA QCAtMTAyMDYsMTAgKzEwMjg3LDEyIEBAIGdmY19iY2FzdF9hbGxvY19jb21w IChnZmNfc3ltYm9sICpkZXJpdmVkLCBnZmNfZXhwciAqZXhwciwgaW50IHJh bmssCiAgICBzdGF0dXMgb2YgY29hcnJheXMuICAqLwogCiB0cmVlCi1nZmNf ZGVhbGxvY2F0ZV9hbGxvY19jb21wX25vX2NhZiAoZ2ZjX3N5bWJvbCAqIGRl cl90eXBlLCB0cmVlIGRlY2wsIGludCByYW5rKQorZ2ZjX2RlYWxsb2NhdGVf YWxsb2NfY29tcF9ub19jYWYgKGdmY19zeW1ib2wgKiBkZXJfdHlwZSwgdHJl ZSBkZWNsLCBpbnQgcmFuaywKKwkJCQkgIGJvb2wgbm9fZmluYWxpemF0aW9u KQogewogICByZXR1cm4gc3RydWN0dXJlX2FsbG9jX2NvbXBzIChkZXJfdHlw ZSwgZGVjbCwgTlVMTF9UUkVFLCByYW5rLAotCQkJCURFQUxMT0NBVEVfQUxM T0NfQ09NUCwgMCwgTlVMTCk7CisJCQkJREVBTExPQ0FURV9BTExPQ19DT01Q LCAwLCBOVUxMLAorCQkJCW5vX2ZpbmFsaXphdGlvbik7CiB9CiAKIApAQCAt MTAyMTcsNyArMTAzMDAsOCBAQCB0cmVlCiBnZmNfcmVhc3NpZ25fYWxsb2Nf Y29tcF9jYWYgKGdmY19zeW1ib2wgKmRlcl90eXBlLCB0cmVlIGRlY2wsIHRy ZWUgZGVzdCkKIHsKICAgcmV0dXJuIHN0cnVjdHVyZV9hbGxvY19jb21wcyAo ZGVyX3R5cGUsIGRlY2wsIGRlc3QsIDAsIFJFQVNTSUdOX0NBRl9DT01QLAot CQkJCUdGQ19TVFJVQ1RVUkVfQ0FGX01PREVfRU5BQkxFX0NPQVJSQVksIE5V TEwpOworCQkJCUdGQ19TVFJVQ1RVUkVfQ0FGX01PREVfRU5BQkxFX0NPQVJS QVksCisJCQkJTlVMTCk7CiB9CiAKIApAQCAtMTAyMzMsNiArMTAzMTcsMjAg QEAgZ2ZjX2NvcHlfYWxsb2NfY29tcCAoZ2ZjX3N5bWJvbCAqIGRlcl90eXBl LCB0cmVlIGRlY2wsIHRyZWUgZGVzdCwgaW50IHJhbmssCiB9CiAKIAorLyog UmVjdXJzaXZlbHkgdHJhdmVyc2UgYW4gb2JqZWN0IG9mIGRlcml2ZWQgdHlw ZSwgZ2VuZXJhdGluZyBjb2RlIHRvCisgICBjb3B5IGl0IGFuZCBpdHMgYWxs b2NhdGFibGUgY29tcG9uZW50cywgd2hpbGUgc3VwcHJlc3NpbmcgYW55Cisg ICBmaW5hbGl6YXRpb24gdGhhdCBtaWdodCBvY2N1ci4gIFRoaXMgaXMgdXNl ZCBpbiB0aGUgZmluYWxpemF0aW9uIG9mCisgICBmdW5jdGlvbiByZXN1bHRz LiAgKi8KKwordHJlZQorZ2ZjX2NvcHlfYWxsb2NfY29tcF9kZWxfcHRycyAo Z2ZjX3N5bWJvbCAqIGRlcl90eXBlLCB0cmVlIGRlY2wsIHRyZWUgZGVzdCwK KwkJCSAgICAgIGludCByYW5rLCBpbnQgY2FmX21vZGUpCit7CisgIHJldHVy biBzdHJ1Y3R1cmVfYWxsb2NfY29tcHMgKGRlcl90eXBlLCBkZWNsLCBkZXN0 LCByYW5rLCBDT1BZX0FMTE9DX0NPTVAsCisJCQkJY2FmX21vZGUsIE5VTEws IHRydWUsIHRydWUpOworfQorCisKIC8qIFJlY3Vyc2l2ZWx5IHRyYXZlcnNl IGFuIG9iamVjdCBvZiBkZXJpdmVkIHR5cGUsIGdlbmVyYXRpbmcgY29kZSB0 bwogICAgY29weSBvbmx5IGl0cyBhbGxvY2F0YWJsZSBjb21wb25lbnRzLiAg Ki8KIApAQCAtMTA5NzIsNyArMTEwNzAsNyBAQCBnZmNfYWxsb2NfYWxsb2Nh dGFibGVfZm9yX2Fzc2lnbm1lbnQgKGdmY19sb29waW5mbyAqbG9vcCwKIAkm JiBleHByMS0+dHMudS5kZXJpdmVkLT5hdHRyLmFsbG9jX2NvbXApCiAgICAg ewogICAgICAgdG1wID0gZ2ZjX2RlYWxsb2NhdGVfYWxsb2NfY29tcF9ub19j YWYgKGV4cHIxLT50cy51LmRlcml2ZWQsIG9sZF9kZXNjLAotCQkJCQkgICAg ICBleHByMS0+cmFuayk7CisJCQkJCSAgICAgIGV4cHIxLT5yYW5rLCB0cnVl KTsKICAgICAgIGdmY19hZGRfZXhwcl90b19ibG9jayAoJnJlYWxsb2NfYmxv Y2ssIHRtcCk7CiAgICAgfQogCkBAIC0xMTE0NSw4ICsxMTI0Myw3IEBAIGdm Y190cmFuc19kZWZlcnJlZF9hcnJheSAoZ2ZjX3N5bWJvbCAqIHN5bSwgZ2Zj X3dyYXBwZWRfYmxvY2sgKiBibG9jaykKICAgc3ltX2hhc19hbGxvY19jb21w ID0gKHN5bS0+dHMudHlwZSA9PSBCVF9ERVJJVkVECiAJCQl8fCBzeW0tPnRz LnR5cGUgPT0gQlRfQ0xBU1MpCiAJCQkgICYmIHN5bS0+dHMudS5kZXJpdmVk LT5hdHRyLmFsbG9jX2NvbXA7Ci0gIGhhc19maW5hbGl6ZXIgPSBzeW0tPnRz LnR5cGUgPT0gQlRfQ0xBU1MgfHwgc3ltLT50cy50eXBlID09IEJUX0RFUklW RUQKLQkJICAgPyBnZmNfaXNfZmluYWxpemFibGUgKHN5bS0+dHMudS5kZXJp dmVkLCBOVUxMKSA6IGZhbHNlOworICBoYXNfZmluYWxpemVyID0gZ2ZjX21h eV9iZV9maW5hbGl6ZWQgKHN5bS0+dHMpOwogCiAgIC8qIE1ha2Ugc3VyZSB0 aGUgZnJvbnRlbmQgZ2V0cyB0aGVzZSByaWdodC4gICovCiAgIGdjY19hc3Nl cnQgKHN5bS0+YXR0ci5wb2ludGVyIHx8IHN5bS0+YXR0ci5hbGxvY2F0YWJs ZSB8fCBzeW1faGFzX2FsbG9jX2NvbXAK --000000000000f4185d05f1aa67fe--