From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 86777 invoked by alias); 14 May 2017 16:20:23 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 86725 invoked by uid 89); 14 May 2017 16:20:21 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-22.5 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,LOTS_OF_MONEY,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=ham version=3.3.2 spammy=lone, tus, accurately, skeleton X-HELO: mail-yw0-f194.google.com Received: from mail-yw0-f194.google.com (HELO mail-yw0-f194.google.com) (209.85.161.194) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 14 May 2017 16:20:17 +0000 Received: by mail-yw0-f194.google.com with SMTP id h82so2368357ywb.3 for ; Sun, 14 May 2017 09:20:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=VI4h0VKW/pves1YOtqA3jn2amk3Yq0uOCP3yoXqfaUo=; b=Pdd/WJzBl9aESL/qbwUGstgOpaTJJhAxkWA47ZZxGMQQ9EsMNl+2BJwmp0WeHfCXs2 HiyH19Mqf+tNHi1uRJRgd80Pg4aU8yJA8UpH1A1rDu4sia7Fble1uCZE3qqdio27pcJ8 BefsCYjrmysi1C8hdca3UHj2FIvpOv1vmeW9q+dxmQmtfhnF9Ib3hSPJz5O1mRdybnq2 K6va/vzTRGORKDQyD8VRp6I3Vcvh3TNkF3e2yCwM49IrNVdQa3LAx69Iw0rX2ecvIf70 FYgYgWCLrMrf3b8wQ+xMOiPUkE3IgA8+gIuwCtCeys2HYBy0fHH60mvVfYMSqvevDNjv JFmg== X-Gm-Message-State: AODbwcA7nbdayN/BpYjKIzmkFkVNTh+vguruhZnyjzuE2OeYP8p3BujA 0kqmWjTrcMWbLyqGi6SmiGw/vxBOSw== X-Received: by 10.129.141.76 with SMTP id w12mr1612328ywj.131.1494778818796; Sun, 14 May 2017 09:20:18 -0700 (PDT) MIME-Version: 1.0 Received: by 10.83.33.141 with HTTP; Sun, 14 May 2017 09:20:18 -0700 (PDT) From: David Blaikie Date: Sun, 14 May 2017 16:20:00 -0000 Message-ID: Subject: [PATCH] Fission support for multiple CUs per DWO file To: gdb-patches , dje , Pedro Alves Content-Type: multipart/mixed; boundary="f403045e96c083f704054f7e50d3" X-IsSubscribed: yes X-SW-Source: 2017-05/txt/msg00318.txt.bz2 --f403045e96c083f704054f7e50d3 Content-Type: text/plain; charset="UTF-8" Content-length: 2895 (previous thread: https://sourceware.org/ml/gdb-patches/2017-04/msg00749.html ) LLVM LTO (ThinLTO, full LTO, any other situation where two LLVM modules with debug info are merged into one/cross imported, etc) produces multiple CUs in a single object file. The best guess at how this should be combined with Fission (though it seem there's any particular plan/spec for this, so it's a bit off-label, for sure), is that multiple skeletons and dwo CUs should be produced - but all dwo CUs in one .dwo file (matching (actually objcopy'd out of) the .o file produced) and all the skeleton CUs providing that one/same file name as the dwo_name. Here's a patch to support that and seems to work well with LLVM's output here. [An extra wrinkle is that LLVM would normally try to use DW_FORM_ref_addr to refer to entities across the CU boundary (types, to avoid duplicating type information in each CU, abstract subprograms/variables to avoid duplication and accurately reflect cross-CU inlining (eg: a file-local function (namespace static, or anonymous namespace) in one CU might end inlined into a function in another CU)). The problem with this is that the DWP format doesn't carry enough information currently to make this possible (the INFO column contains only the contribution of a single CU, even if it came from a multi-CU DWO file - so there's no way to know where to resolve the ref_addr relative to). So for now I've added a workaround to LLVM to duplicate rather than using ref_addr in this case. But I hope/plan to fix this as soon as possible once a reasonable format can be decided on (see dwarf-discuss mailing list thread) and DWP tool and GDB are fixed to address that. But for now, multiple CUs in a DWO without cross-CU references is still valuable] gdb/ChangeLog: 2017-05-12 David Blaikie * dwarf2read.c (struct dwo_file): Use a htab of dwo_unit* (rather than a singular dwo_unit*) to support multiple CUs in the same way that multiple TUs are supported. (static void create_cus_hash_table): Replace create_dwo_cu with a function for parsing multiple CUs from a DWO file. (open_and_init_dwo_file): Use create_cus_hash_table rather than create_dwo_cu. (lookup_dwo_cutu): Lookup CU in the hash table in the dwo_file with htab_find, rather than comparing the signature to a singleton CU in the dwo_file. gdb/testsuite/ChangeLog: 2017-05-12 David Blaikie * gdb.dwarf2/fission-multi-cu.S: Test containing multiple CUs in a DWO, built from fission-multi-cu{1,2}.c. * gdb.dwarf2/fission-multi-cu.exp: Test similar to fission-base.exp, except putting 'main' and 'func' in separate CUs while in the same DWO file. * gdb.dwarf2/fission-multi-cu1.c: First CU for the multi-CU-single-DWO test. * gdb.dwarf2/fission-multi-cu2.c: Second CU for the multi-CU-single-DWO test. --f403045e96c083f704054f7e50d3 Content-Type: text/plain; charset="US-ASCII"; name="multiple_cus_per_dwo.diff" Content-Disposition: attachment; filename="multiple_cus_per_dwo.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j2owphua0 Content-length: 35222 ZGlmZiAtLWdpdCBnZGIvZHdhcmYycmVhZC5jIGdkYi9kd2FyZjJyZWFkLmMK aW5kZXggYjU4ZDBmYzE2ZS4uMjllYjVhMTRiMiAxMDA2NDQKLS0tIGdkYi9k d2FyZjJyZWFkLmMKKysrIGdkYi9kd2FyZjJyZWFkLmMKQEAgLTg1MiwxMiAr ODUyLDkgQEAgc3RydWN0IGR3b19maWxlCiAgICAgIHNlY3Rpb25zIChmb3Ig bGFjayBvZiBhIGJldHRlciBuYW1lKS4gICovCiAgIHN0cnVjdCBkd29fc2Vj dGlvbnMgc2VjdGlvbnM7CiAKLSAgLyogVGhlIENVIGluIHRoZSBmaWxlLgot ICAgICBXZSBvbmx5IHN1cHBvcnQgb25lIGJlY2F1c2UgaGF2aW5nIG1vcmUg dGhhbiBvbmUgcmVxdWlyZXMgaGFja2luZyB0aGUKLSAgICAgZHdvX25hbWUg b2YgZWFjaCB0byBtYXRjaCwgd2hpY2ggaXMgaGlnaGx5IHVubGlrZWx5IHRv IGhhcHBlbi4KLSAgICAgRG9pbmcgdGhpcyBtZWFucyBhbGwgVFVzIGNhbiBz aGFyZSBjb21wX2RpcjogV2UgYWxzbyBhc3N1bWUgdGhhdAotICAgICBEV19B VF9jb21wX2RpciBhY3Jvc3MgYWxsIFRVcyBpbiBhIERXTyBmaWxlIHdpbGwg YmUgaWRlbnRpY2FsLiAgKi8KLSAgc3RydWN0IGR3b191bml0ICpjdTsKKyAg LyogVGhlIENVcyBpbiB0aGUgZmlsZS4KKyAgICAgRWFjaCBlbGVtZW50IGlz IGEgc3RydWN0IGR3b191bml0LiAqLworICBodGFiX3QgY3VzOwogCiAgIC8q IFRhYmxlIG9mIFRVcyBpbiB0aGUgZmlsZS4KICAgICAgRWFjaCBlbGVtZW50 IGlzIGEgc3RydWN0IGR3b191bml0LiAgKi8KQEAgLTk3MDIsNzIgKzk2OTks NzUgQEAgY3JlYXRlX2R3b19jdV9yZWFkZXIgKGNvbnN0IHN0cnVjdCBkaWVf cmVhZGVyX3NwZWNzICpyZWFkZXIsCiAJCQloZXhfc3RyaW5nIChkd29fdW5p dC0+c2lnbmF0dXJlKSk7CiB9CiAKLS8qIENyZWF0ZSB0aGUgZHdvX3VuaXQg Zm9yIHRoZSBsb25lIENVIGluIERXT19GSUxFLgotICAgTm90ZTogVGhpcyBm dW5jdGlvbiBwcm9jZXNzZXMgRFdPIGZpbGVzIG9ubHksIG5vdCBEV1AgZmls ZXMuICAqLwotCi1zdGF0aWMgc3RydWN0IGR3b191bml0ICoKLWNyZWF0ZV9k d29fY3UgKHN0cnVjdCBkd29fZmlsZSAqZHdvX2ZpbGUpCitzdGF0aWMgdm9p ZCBjcmVhdGVfY3VzX2hhc2hfdGFibGUgKHN0cnVjdCBkd29fZmlsZSAmZHdv X2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR3 YXJmMl9zZWN0aW9uX2luZm8gJnNlY3Rpb24sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGh0YWJfdCAmY3VzX2h0YWIpCiB7CiAgIHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5v YmpmaWxlOwotICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlv biA9ICZkd29fZmlsZS0+c2VjdGlvbnMuaW5mbzsKKyAgY29uc3Qgc3RydWN0 IGR3YXJmMl9zZWN0aW9uX2luZm8gKmFiYnJldl9zZWN0aW9uID0gJmR3b19m aWxlLnNlY3Rpb25zLmFiYnJldjsKICAgY29uc3QgZ2RiX2J5dGUgKmluZm9f cHRyLCAqZW5kX3B0cjsKLSAgc3RydWN0IGNyZWF0ZV9kd29fY3VfZGF0YSBj cmVhdGVfZHdvX2N1X2RhdGE7Ci0gIHN0cnVjdCBkd29fdW5pdCAqZHdvX3Vu aXQ7CiAKLSAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgc2VjdGlv bik7Ci0gIGluZm9fcHRyID0gc2VjdGlvbi0+YnVmZmVyOworICBkd2FyZjJf cmVhZF9zZWN0aW9uIChvYmpmaWxlLCAmc2VjdGlvbik7CisgIGluZm9fcHRy ID0gc2VjdGlvbi5idWZmZXI7CiAKICAgaWYgKGluZm9fcHRyID09IE5VTEwp Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuOwogCiAgIGlmIChkd2Fy Zl9yZWFkX2RlYnVnKQogICAgIHsKICAgICAgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywgIlJlYWRpbmcgJXMgZm9yICVzOlxuIiwKLQkJCSAg Z2V0X3NlY3Rpb25fbmFtZSAoc2VjdGlvbiksCi0JCQkgIGdldF9zZWN0aW9u X2ZpbGVfbmFtZSAoc2VjdGlvbikpOworCQkJICBnZXRfc2VjdGlvbl9uYW1l ICgmc2VjdGlvbiksCisJCQkgIGdldF9zZWN0aW9uX2ZpbGVfbmFtZSAoJnNl Y3Rpb24pKTsKICAgICB9CiAKLSAgY3JlYXRlX2R3b19jdV9kYXRhLmR3b19m aWxlID0gZHdvX2ZpbGU7Ci0gIGR3b191bml0ID0gTlVMTDsKLQotICBlbmRf cHRyID0gaW5mb19wdHIgKyBzZWN0aW9uLT5zaXplOworICBlbmRfcHRyID0g aW5mb19wdHIgICsgc2VjdGlvbi5zaXplOwogICB3aGlsZSAoaW5mb19wdHIg PCBlbmRfcHRyKQogICAgIHsKICAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdGEgcGVyX2N1OworICAgICAgc3RydWN0IGNyZWF0ZV9kd29fY3VfZGF0 YSBjcmVhdGVfZHdvX2N1X2RhdGE7CisgICAgICBzdHJ1Y3QgZHdvX3VuaXQg KmR3b191bml0OworICAgICAgdm9pZCAqKnNsb3Q7CisgICAgICBzZWN0X29m ZnNldCBzZWN0X29mZiA9IChzZWN0X29mZnNldCkgKGluZm9fcHRyIC0gc2Vj dGlvbi5idWZmZXIpOwogCiAgICAgICBtZW1zZXQgKCZjcmVhdGVfZHdvX2N1 X2RhdGEuZHdvX3VuaXQsIDAsCiAJICAgICAgc2l6ZW9mIChjcmVhdGVfZHdv X2N1X2RhdGEuZHdvX3VuaXQpKTsKICAgICAgIG1lbXNldCAoJnBlcl9jdSwg MCwgc2l6ZW9mIChwZXJfY3UpKTsKICAgICAgIHBlcl9jdS5vYmpmaWxlID0g b2JqZmlsZTsKICAgICAgIHBlcl9jdS5pc19kZWJ1Z190eXBlcyA9IDA7Ci0g ICAgICBwZXJfY3Uuc2VjdF9vZmYgPSBzZWN0X29mZnNldCAoaW5mb19wdHIg LSBzZWN0aW9uLT5idWZmZXIpOwotICAgICAgcGVyX2N1LnNlY3Rpb24gPSBz ZWN0aW9uOworICAgICAgcGVyX2N1LnNlY3Rfb2ZmID0gc2VjdF9vZmZzZXQg KGluZm9fcHRyIC0gc2VjdGlvbi5idWZmZXIpOworICAgICAgcGVyX2N1LnNl Y3Rpb24gPSAmc2VjdGlvbjsKKyAgICAgIGNyZWF0ZV9kd29fY3VfZGF0YS5k d29fZmlsZSA9ICZkd29fZmlsZTsKIAotICAgICAgaW5pdF9jdXR1X2FuZF9y ZWFkX2RpZXNfbm9fZm9sbG93ICgmcGVyX2N1LCBkd29fZmlsZSwKKyAgICAg IGluaXRfY3V0dV9hbmRfcmVhZF9kaWVzX25vX2ZvbGxvdyAoJnBlcl9jdSwg JmR3b19maWxlLAogCQkJCQkgY3JlYXRlX2R3b19jdV9yZWFkZXIsCiAJCQkJ CSAmY3JlYXRlX2R3b19jdV9kYXRhKTsKKyAgICAgIGluZm9fcHRyICs9IHBl cl9jdS5sZW5ndGg7CiAKLSAgICAgIGlmIChjcmVhdGVfZHdvX2N1X2RhdGEu ZHdvX3VuaXQuZHdvX2ZpbGUgIT0gTlVMTCkKLQl7Ci0JICAvKiBJZiB3ZSd2 ZSBhbHJlYWR5IGZvdW5kIG9uZSwgY29tcGxhaW4uICBXZSBvbmx5IHN1cHBv cnQgb25lCi0JICAgICBiZWNhdXNlIGhhdmluZyBtb3JlIHRoYW4gb25lIHJl cXVpcmVzIGhhY2tpbmcgdGhlIGR3b19uYW1lIG9mCi0JICAgICBlYWNoIHRv IG1hdGNoLCB3aGljaCBpcyBoaWdobHkgdW5saWtlbHkgdG8gaGFwcGVuLiAg Ki8KLQkgIGlmIChkd29fdW5pdCAhPSBOVUxMKQotCSAgICB7Ci0JICAgICAg Y29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotCQkJIF8oIk11bHRp cGxlIENVcyBpbiBEV08gZmlsZSAlcyBbaW4gbW9kdWxlICVzXSIpLAotCQkJ IGR3b19maWxlLT5kd29fbmFtZSwgb2JqZmlsZV9uYW1lIChvYmpmaWxlKSk7 Ci0JICAgICAgYnJlYWs7Ci0JICAgIH0KKyAgICAgIGlmIChjcmVhdGVfZHdv X2N1X2RhdGEuZHdvX3VuaXQuZHdvX2ZpbGUgPT0gTlVMTCkKKyAgICAgICAg Y29udGludWU7CiAKLQkgIGR3b191bml0ID0gT0JTVEFDS19aQUxMT0MgKCZv YmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHN0cnVjdCBkd29fdW5pdCk7Ci0J ICAqZHdvX3VuaXQgPSBjcmVhdGVfZHdvX2N1X2RhdGEuZHdvX3VuaXQ7Ci0J fQorICAgICAgaWYgKGN1c19odGFiID09IE5VTEwpCisgICAgICAgIHsKKyAg ICAgICAgICBjdXNfaHRhYiA9IGFsbG9jYXRlX2R3b191bml0X3RhYmxlIChv YmpmaWxlKTsKKyAgICAgICAgfQogCi0gICAgICBpbmZvX3B0ciArPSBwZXJf Y3UubGVuZ3RoOwotICAgIH0KKyAgICAgIGR3b191bml0ID0gT0JTVEFDS19a QUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHN0cnVjdCBkd29f dW5pdCk7CisgICAgICAqZHdvX3VuaXQgPSBjcmVhdGVfZHdvX2N1X2RhdGEu ZHdvX3VuaXQ7CisgICAgICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKGN1c19o dGFiLCBkd29fdW5pdCwgSU5TRVJUKTsKKyAgICAgIGdkYl9hc3NlcnQgKHNs b3QgIT0gTlVMTCk7CisgICAgICBpZiAoKnNsb3QgIT0gTlVMTCkKKyAgICAg ICAgeworICAgICAgICAgIGNvbnN0IHN0cnVjdCBkd29fdW5pdCAqZHVwX2N1 ID0gKGNvbnN0IHN0cnVjdCBkd29fdW5pdCAqKSAqc2xvdDsKKyAgICAgICAg ICBzZWN0X29mZnNldCBkdXBfc2VjdF9vZmYgPSBkdXBfY3UtPnNlY3Rfb2Zm OwogCi0gIHJldHVybiBkd29fdW5pdDsKKwkgIGNvbXBsYWludCAoJnN5bWZp bGVfY29tcGxhaW50cywKKwkJICAgICBfKCJkZWJ1ZyBjdSBlbnRyeSBhdCBv ZmZzZXQgMHgleCBpcyBkdXBsaWNhdGUgdG8iCisJCSAgICAgICAiIHRoZSBl bnRyeSBhdCBvZmZzZXQgMHgleCwgc2lnbmF0dXJlICVzIiksCisJCSAgICAg dG9fdW5kZXJseWluZyAoc2VjdF9vZmYpLCB0b191bmRlcmx5aW5nIChkdXBf c2VjdF9vZmYpLAorCQkgICAgIGhleF9zdHJpbmcgKGR3b191bml0LT5zaWdu YXR1cmUpKTsKKyAgICAgICAgfQorICAgICAgKnNsb3QgPSAodm9pZCAqKSBk d29fdW5pdDsKKyAgICB9CiB9CiAKIC8qIERXUCBmaWxlIC5kZWJ1Z197Y3Us dHV9X2luZGV4IHNlY3Rpb24gZm9ybWF0OgpAQCAtMTA3NzIsNyArMTA3NzIs NyBAQCBvcGVuX2FuZF9pbml0X2R3b19maWxlIChzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhICpwZXJfY3UsCiAgIGJmZF9tYXBfb3Zlcl9zZWN0aW9ucyAo ZHdvX2ZpbGUtPmRiZmQsIGR3YXJmMl9sb2NhdGVfZHdvX3NlY3Rpb25zLAog CQkJICZkd29fZmlsZS0+c2VjdGlvbnMpOwogCi0gIGR3b19maWxlLT5jdSA9 IGNyZWF0ZV9kd29fY3UgKGR3b19maWxlKTsKKyAgY3JlYXRlX2N1c19oYXNo X3RhYmxlICgqZHdvX2ZpbGUsIGR3b19maWxlLT5zZWN0aW9ucy5pbmZvLCBk d29fZmlsZS0+Y3VzKTsKIAogICBjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90 YWJsZSAoZHdvX2ZpbGUsIGR3b19maWxlLT5zZWN0aW9ucy50eXBlcywKIAkJ CQkgZHdvX2ZpbGUtPnR1cyk7CkBAIC0xMTEzOSwxMCArMTExMzksMTMgQEAg bG9va3VwX2R3b19jdXR1IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0 aGlzX3VuaXQsCiAJICAgICAgZHdvX2N1dHUKIAkJPSAoc3RydWN0IGR3b191 bml0ICopIGh0YWJfZmluZCAoZHdvX2ZpbGUtPnR1cywgJmZpbmRfZHdvX2N1 dHUpOwogCSAgICB9Ci0JICBlbHNlIGlmICghaXNfZGVidWdfdHlwZXMgJiYg ZHdvX2ZpbGUtPmN1KQorCSAgZWxzZSBpZiAoIWlzX2RlYnVnX3R5cGVzICYm IGR3b19maWxlLT5jdXMpCiAJICAgIHsKLQkgICAgICBpZiAoc2lnbmF0dXJl ID09IGR3b19maWxlLT5jdS0+c2lnbmF0dXJlKQotCQlkd29fY3V0dSA9IGR3 b19maWxlLT5jdTsKKyAgICAgICAgICAgICAgc3RydWN0IGR3b191bml0IGZp bmRfZHdvX2N1dHU7CisKKyAgICAgICAgICAgICAgbWVtc2V0ICgmZmluZF9k d29fY3V0dSwgMCwgc2l6ZW9mIChmaW5kX2R3b19jdXR1KSk7CisgICAgICAg ICAgICAgIGZpbmRfZHdvX2N1dHUuc2lnbmF0dXJlID0gc2lnbmF0dXJlOwor ICAgICAgICAgICAgICBkd29fY3V0dSA9IChzdHJ1Y3QgZHdvX3VuaXQgKikg aHRhYl9maW5kIChkd29fZmlsZS0+Y3VzLCAmZmluZF9kd29fY3V0dSk7CiAJ ICAgIH0KIAogCSAgaWYgKGR3b19jdXR1ICE9IE5VTEwpCmRpZmYgLS1naXQg Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2Zpc3Npb24tbXVsdGktY3UuUyBn ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZmlzc2lvbi1tdWx0aS1jdS5TCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmQwOWE3ZTU0 M2QKLS0tIC9kZXYvbnVsbAorKysgZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L2Zpc3Npb24tbXVsdGktY3UuUwpAQCAtMCwwICsxLDM3NCBAQAorLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K KworICAgQ29weXJpZ2h0IDIwMTItMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisgICBU aGlzIGZpbGUgd2FzIGNyZWF0ZWQgYnkgZG9pbmc6CisKKyAgIGNsYW5nIGZp c3Npb24tbXVsdGktY3UqLmMgLWcgLWZuby1zcGxpdC1kd2FyZi1pbmxpbmlu ZyAtZW1pdC1sbHZtIC1TIC1jCisgICBsbHZtLWxpbmsgZmlzc2lvbi1tdWx0 aS1jdSoubGwgLVMgLW8gZmlzc2lvbi1tdWx0aS1jdS5sbAorICAgY2xhbmct dG90IGZpc3Npb24tbXVsdGktY3UubGwgLWdzcGxpdC1kd2FyZiAtUworCisg ICBhbmQgdGhlbiBtYXNzYWdpbmcgdGhlIG91dHB1dC4KKyovCisJLnRleHQK KwkuZmlsZQkibGx2bS1saW5rIgorCS5nbG9ibAlmdW5jCisJLnAyYWxpZ24J NCwgMHg5MAorCS50eXBlCWZ1bmMsQGZ1bmN0aW9uCitmdW5jOiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBAZnVuYworLkxmdW5jX2Jl Z2luMDoKKwkuZmlsZQkxICJmaXNzaW9uLW11bHRpLWN1MS5jIgorCS5sb2MJ MSAyMCAwICAgICAgICAgICAgICAgICAgIyBmaXNzaW9uLW11bHRpLWN1MS5j OjIwOjAKKwkuY2ZpX3N0YXJ0cHJvYworIyBCQiMwOiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgJWVudHJ5CisJcHVzaHEJJXJicAorCS5j ZmlfZGVmX2NmYV9vZmZzZXQgMTYKKwkuY2ZpX29mZnNldCAlcmJwLCAtMTYK Kwltb3ZxCSVyc3AsICVyYnAKKwkuY2ZpX2RlZl9jZmFfcmVnaXN0ZXIgJXJi cAorCW1vdmwJJWVkaSwgLTQoJXJicCkKKwkubG9jCTEgMjEgMTAgcHJvbG9n dWVfZW5kICAgICMgZmlzc2lvbi1tdWx0aS1jdTEuYzoyMToxMAorCW1vdmwJ LTQoJXJicCksICVlZGkKKwkubG9jCTEgMjEgMTQgaXNfc3RtdCAwICAgICAg ICMgZmlzc2lvbi1tdWx0aS1jdTEuYzoyMToxNAorCWFkZGwJJDEsICVlZGkK KwkubG9jCTEgMjEgMyAgICAgICAgICAgICAgICAgICMgZmlzc2lvbi1tdWx0 aS1jdTEuYzoyMTozCisJbW92bAklZWRpLCAlZWF4CisJcG9wcQklcmJwCisJ cmV0cQorLkxmdW5jX2VuZDA6CisJLnNpemUJZnVuYywgLkxmdW5jX2VuZDAt ZnVuYworCS5jZmlfZW5kcHJvYworCisJLmdsb2JsCW1haW4KKwkucDJhbGln bgk0LCAweDkwCisJLnR5cGUJbWFpbixAZnVuY3Rpb24KK21haW46ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEBtYWluCisuTGZ1bmNf YmVnaW4xOgorCS5maWxlCTIgImZpc3Npb24tbXVsdGktY3UyLmMiCisJLmxv YwkyIDIzIDAgaXNfc3RtdCAxICAgICAgICAjIGZpc3Npb24tbXVsdGktY3Uy LmM6MjM6MAorCS5jZmlfc3RhcnRwcm9jCisjIEJCIzA6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyAlZW50cnkKKwlwdXNocQklcmJwCisJ LmNmaV9kZWZfY2ZhX29mZnNldCAxNgorCS5jZmlfb2Zmc2V0ICVyYnAsIC0x NgorCW1vdnEJJXJzcCwgJXJicAorCS5jZmlfZGVmX2NmYV9yZWdpc3RlciAl cmJwCisJbW92bAkkNDI5NDk2NzI5NSwgJWVkaSAgICAgICAjIGltbSA9IDB4 RkZGRkZGRkYKKwkubG9jCTIgMjQgMyBwcm9sb2d1ZV9lbmQgICAgICMgZmlz c2lvbi1tdWx0aS1jdTIuYzoyNDozCisJbW92YgkkMCwgJWFsCisJY2FsbHEJ ZnVuYworCXhvcmwJJWVheCwgJWVheAorCS5sb2MJMiAyNSAxICAgICAgICAg ICAgICAgICAgIyBmaXNzaW9uLW11bHRpLWN1Mi5jOjI1OjEKKwlwb3BxCSVy YnAKKwlyZXRxCisuTGZ1bmNfZW5kMToKKwkuc2l6ZQltYWluLCAuTGZ1bmNf ZW5kMS1tYWluCisJLmNmaV9lbmRwcm9jCisKKwkuc2VjdGlvbgkuZGVidWdf c3RyLCJNUyIsQHByb2diaXRzLDEKKy5Mc2tlbF9zdHJpbmcwOgorCS5hc2Np egkiZmlzc2lvbi1tdWx0aS1jdS5kd28iICAjIHN0cmluZyBvZmZzZXQ9MAor Lkxza2VsX3N0cmluZzE6CisJLmFzY2l6CSIvdG1wL3NyYy9nZGIvdGVzdHN1 aXRlIiAjIHN0cmluZyBvZmZzZXQ9MjEKKwkuc2VjdGlvbgkuZGVidWdfbG9j LmR3bywiIixAcHJvZ2JpdHMKKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2LCIi LEBwcm9nYml0cworCS5ieXRlCTEgICAgICAgICAgICAgICAgICAgICAgICMg QWJicmV2aWF0aW9uIENvZGUKKwkuYnl0ZQkxNyAgICAgICAgICAgICAgICAg ICAgICAjIERXX1RBR19jb21waWxlX3VuaXQKKwkuYnl0ZQkwICAgICAgICAg ICAgICAgICAgICAgICAjIERXX0NISUxEUkVOX25vCisJLmJ5dGUJMTYgICAg ICAgICAgICAgICAgICAgICAgIyBEV19BVF9zdG10X2xpc3QKKwkuYnl0ZQky MyAgICAgICAgICAgICAgICAgICAgICAjIERXX0ZPUk1fc2VjX29mZnNldAor CS5hc2NpaQkiXDI2MEIiICAgICAgICAgICAgICAgICAjIERXX0FUX0dOVV9k d29fbmFtZQorCS5ieXRlCTE0ICAgICAgICAgICAgICAgICAgICAgICMgRFdf Rk9STV9zdHJwCisJLmJ5dGUJMjcgICAgICAgICAgICAgICAgICAgICAgIyBE V19BVF9jb21wX2RpcgorCS5ieXRlCTE0ICAgICAgICAgICAgICAgICAgICAg ICMgRFdfRk9STV9zdHJwCisJLmFzY2lpCSJcMjYxQiIgICAgICAgICAgICAg ICAgICMgRFdfQVRfR05VX2R3b19pZAorCS5ieXRlCTcgICAgICAgICAgICAg ICAgICAgICAgICMgRFdfRk9STV9kYXRhOAorCS5hc2NpaQkiXDI2M0IiICAg ICAgICAgICAgICAgICAjIERXX0FUX0dOVV9hZGRyX2Jhc2UKKwkuYnl0ZQky MyAgICAgICAgICAgICAgICAgICAgICAjIERXX0ZPUk1fc2VjX29mZnNldAor CS5ieXRlCTE3ICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfbG93X3Bj CisJLmJ5dGUJMSAgICAgICAgICAgICAgICAgICAgICAgIyBEV19GT1JNX2Fk ZHIKKwkuYnl0ZQkxOCAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX2hp Z2hfcGMKKwkuYnl0ZQk2ICAgICAgICAgICAgICAgICAgICAgICAjIERXX0ZP Uk1fZGF0YTQKKwkuYnl0ZQkwICAgICAgICAgICAgICAgICAgICAgICAjIEVP TSgxKQorCS5ieXRlCTAgICAgICAgICAgICAgICAgICAgICAgICMgRU9NKDIp CisJLmJ5dGUJMCAgICAgICAgICAgICAgICAgICAgICAgIyBFT00oMykKKwku c2VjdGlvbgkuZGVidWdfaW5mbywiIixAcHJvZ2JpdHMKKy5MY3VfYmVnaW4w OgorCS5sb25nCTQ0ICAgICAgICAgICAgICAgICAgICAgICMgTGVuZ3RoIG9m IFVuaXQKKwkuc2hvcnQJNCAgICAgICAgICAgICAgICAgICAgICAgIyBEV0FS RiB2ZXJzaW9uIG51bWJlcgorCS5sb25nCS5kZWJ1Z19hYmJyZXYgICAgICAg ICAgICMgT2Zmc2V0IEludG8gQWJicmV2LiBTZWN0aW9uCisJLmJ5dGUJOCAg ICAgICAgICAgICAgICAgICAgICAgIyBBZGRyZXNzIFNpemUgKGluIGJ5dGVz KQorCS5ieXRlCTEgICAgICAgICAgICAgICAgICAgICAgICMgQWJicmV2IFsx XSAweGI6MHgyNSBEV19UQUdfY29tcGlsZV91bml0CisJLmxvbmcJLkxsaW5l X3RhYmxlX3N0YXJ0MCAgICAgIyBEV19BVF9zdG10X2xpc3QKKwkubG9uZwku THNrZWxfc3RyaW5nMCAgICAgICAgICAjIERXX0FUX0dOVV9kd29fbmFtZQor CS5sb25nCS5Mc2tlbF9zdHJpbmcxICAgICAgICAgICMgRFdfQVRfY29tcF9k aXIKKwkucXVhZAk3NjE1ODUyMDY3NzQ3NDMxNDEzICAgICAjIERXX0FUX0dO VV9kd29faWQKKwkubG9uZwkuZGVidWdfYWRkciAgICAgICAgICAgICAjIERX X0FUX0dOVV9hZGRyX2Jhc2UKKwkucXVhZAkuTGZ1bmNfYmVnaW4wICAgICAg ICAgICAjIERXX0FUX2xvd19wYworCS5sb25nCS5MZnVuY19lbmQwLS5MZnVu Y19iZWdpbjAgIyBEV19BVF9oaWdoX3BjCisuTGN1X2JlZ2luMToKKwkubG9u Zwk0NCAgICAgICAgICAgICAgICAgICAgICAjIExlbmd0aCBvZiBVbml0CisJ LnNob3J0CTQgICAgICAgICAgICAgICAgICAgICAgICMgRFdBUkYgdmVyc2lv biBudW1iZXIKKwkubG9uZwkuZGVidWdfYWJicmV2ICAgICAgICAgICAjIE9m ZnNldCBJbnRvIEFiYnJldi4gU2VjdGlvbgorCS5ieXRlCTggICAgICAgICAg ICAgICAgICAgICAgICMgQWRkcmVzcyBTaXplIChpbiBieXRlcykKKwkuYnl0 ZQkxICAgICAgICAgICAgICAgICAgICAgICAjIEFiYnJldiBbMV0gMHhiOjB4 MjUgRFdfVEFHX2NvbXBpbGVfdW5pdAorCS5sb25nCS5MbGluZV90YWJsZV9z dGFydDAgICAgICMgRFdfQVRfc3RtdF9saXN0CisJLmxvbmcJLkxza2VsX3N0 cmluZzAgICAgICAgICAgIyBEV19BVF9HTlVfZHdvX25hbWUKKwkubG9uZwku THNrZWxfc3RyaW5nMSAgICAgICAgICAjIERXX0FUX2NvbXBfZGlyCisJLnF1 YWQJMjAzNzY1MDI2MTU5OTY5MjMyNCAgICAgIyBEV19BVF9HTlVfZHdvX2lk CisJLmxvbmcJLmRlYnVnX2FkZHIgICAgICAgICAgICAgIyBEV19BVF9HTlVf YWRkcl9iYXNlCisJLnF1YWQJLkxmdW5jX2JlZ2luMSAgICAgICAgICAgIyBE V19BVF9sb3dfcGMKKwkubG9uZwkuTGZ1bmNfZW5kMS0uTGZ1bmNfYmVnaW4x ICMgRFdfQVRfaGlnaF9wYworCS5zZWN0aW9uCS5kZWJ1Z19yYW5nZXMsIiIs QHByb2diaXRzCisJLnNlY3Rpb24JLmRlYnVnX21hY2luZm8sIiIsQHByb2di aXRzCisuTGN1X21hY3JvX2JlZ2luMToKKy5MY3VfbWFjcm9fYmVnaW4zOgor CS5ieXRlCTAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kIE9mIE1hY3Jv IExpc3QgTWFyaworCS5zZWN0aW9uCS5kZWJ1Z19zdHIuZHdvLCJNUyIsQHBy b2diaXRzLDEKKy5MaW5mb19zdHJpbmcwOgorCS5hc2NpegkiZmlzc2lvbi1t dWx0aS1jdS5kd28iICAjIHN0cmluZyBvZmZzZXQ9MAorLkxpbmZvX3N0cmlu ZzE6CisJLmFzY2l6CSJjbGFuZyB2ZXJzaW9uIDUuMC4wICh0cnVuayAzMDI4 NTUpIChsbHZtL3RydW5rIDMwMjg1MykiICMgc3RyaW5nIG9mZnNldD0yMQor LkxpbmZvX3N0cmluZzI6CisJLmFzY2l6CSJmaXNzaW9uLW11bHRpLWN1MS5j IiAjIHN0cmluZyBvZmZzZXQ9NzYKKy5MaW5mb19zdHJpbmczOgorCS5hc2Np egkiZmlzc2lvbi1tdWx0aS1jdTIuYyIgIyBzdHJpbmcgb2Zmc2V0PTk2Cisu TGluZm9fc3RyaW5nNDoKKwkuYXNjaXoJImZ1bmMiICAgICAgICAgICAgICAg ICAgIyBzdHJpbmcgb2Zmc2V0PTExNgorLkxpbmZvX3N0cmluZzU6CisJLmFz Y2l6CSJpbnQiICAgICAgICAgICAgICAgICAgICMgc3RyaW5nIG9mZnNldD0x MjEKKy5MaW5mb19zdHJpbmc2OgorCS5hc2NpegkibWFpbiIgICAgICAgICAg ICAgICAgICAjIHN0cmluZyBvZmZzZXQ9MTI1CisuTGluZm9fc3RyaW5nNzoK KwkuYXNjaXoJImFyZyIgICAgICAgICAgICAgICAgICAgIyBzdHJpbmcgb2Zm c2V0PTEzMAorCS5zZWN0aW9uCS5kZWJ1Z19zdHJfb2Zmc2V0cy5kd28sIiIs QHByb2diaXRzCisJLmxvbmcJMAorCS5sb25nCTIxCisJLmxvbmcJNzYKKwku bG9uZwk5NgorCS5sb25nCTExNgorCS5sb25nCTEyMQorCS5sb25nCTEyNQor CS5sb25nCTEzMAorCS5zZWN0aW9uCS5kZWJ1Z19pbmZvLmR3bywiIixAcHJv Z2JpdHMKKwkubG9uZwk1MyAgICAgICAgICAgICAgICAgICAgICAjIExlbmd0 aCBvZiBVbml0CisJLnNob3J0CTQgICAgICAgICAgICAgICAgICAgICAgICMg RFdBUkYgdmVyc2lvbiBudW1iZXIKKwkubG9uZwkwICAgICAgICAgICAgICAg ICAgICAgICAjIE9mZnNldCBJbnRvIEFiYnJldi4gU2VjdGlvbgorCS5ieXRl CTggICAgICAgICAgICAgICAgICAgICAgICMgQWRkcmVzcyBTaXplIChpbiBi eXRlcykKKwkuYnl0ZQkxICAgICAgICAgICAgICAgICAgICAgICAjIEFiYnJl diBbMV0gMHhiOjB4MmUgRFdfVEFHX2NvbXBpbGVfdW5pdAorCS5ieXRlCTAg ICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfR05VX2R3b19uYW1lCisJ LmJ5dGUJMSAgICAgICAgICAgICAgICAgICAgICAgIyBEV19BVF9wcm9kdWNl cgorCS5zaG9ydAkxMiAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX2xh bmd1YWdlCisJLmJ5dGUJMiAgICAgICAgICAgICAgICAgICAgICAgIyBEV19B VF9uYW1lCisJLnF1YWQJNzYxNTg1MjA2Nzc0NzQzMTQxMyAgICAgIyBEV19B VF9HTlVfZHdvX2lkCisJLmJ5dGUJMiAgICAgICAgICAgICAgICAgICAgICAg IyBBYmJyZXYgWzJdIDB4MTk6MHgxYiBEV19UQUdfc3VicHJvZ3JhbQorCS5i eXRlCTAgICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfbG93X3BjCisJ LmxvbmcJLkxmdW5jX2VuZDAtLkxmdW5jX2JlZ2luMCAjIERXX0FUX2hpZ2hf cGMKKwkuYnl0ZQkxICAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX2Zy YW1lX2Jhc2UKKwkuYnl0ZQk4NgorCS5ieXRlCTQgICAgICAgICAgICAgICAg ICAgICAgICMgRFdfQVRfbmFtZQorCS5ieXRlCTEgICAgICAgICAgICAgICAg ICAgICAgICMgRFdfQVRfZGVjbF9maWxlCisJLmJ5dGUJMTkgICAgICAgICAg ICAgICAgICAgICAgIyBEV19BVF9kZWNsX2xpbmUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX3Byb3RvdHlwZWQK KwkubG9uZwk1MiAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX3R5cGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERX X0FUX2V4dGVybmFsCisJLmJ5dGUJMyAgICAgICAgICAgICAgICAgICAgICAg IyBBYmJyZXYgWzNdIDB4Mjg6MHhiIERXX1RBR19mb3JtYWxfcGFyYW1ldGVy CisJLmJ5dGUJMiAgICAgICAgICAgICAgICAgICAgICAgIyBEV19BVF9sb2Nh dGlvbgorCS5ieXRlCTE0NQorCS5ieXRlCTEyNAorCS5ieXRlCTcgICAgICAg ICAgICAgICAgICAgICAgICMgRFdfQVRfbmFtZQorCS5ieXRlCTEgICAgICAg ICAgICAgICAgICAgICAgICMgRFdfQVRfZGVjbF9maWxlCisJLmJ5dGUJMTkg ICAgICAgICAgICAgICAgICAgICAgIyBEV19BVF9kZWNsX2xpbmUKKwkubG9u Zwk1MiAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX3R5cGUKKwkuYnl0 ZQkwICAgICAgICAgICAgICAgICAgICAgICAjIEVuZCBPZiBDaGlsZHJlbiBN YXJrCisJLmJ5dGUJNCAgICAgICAgICAgICAgICAgICAgICAgIyBBYmJyZXYg WzRdIDB4MzQ6MHg0IERXX1RBR19iYXNlX3R5cGUKKwkuYnl0ZQk1ICAgICAg ICAgICAgICAgICAgICAgICAjIERXX0FUX25hbWUKKwkuYnl0ZQk1ICAgICAg ICAgICAgICAgICAgICAgICAjIERXX0FUX2VuY29kaW5nCisJLmJ5dGUJNCAg ICAgICAgICAgICAgICAgICAgICAgIyBEV19BVF9ieXRlX3NpemUKKwkuYnl0 ZQkwICAgICAgICAgICAgICAgICAgICAgICAjIEVuZCBPZiBDaGlsZHJlbiBN YXJrCisJLmxvbmcJNDEgICAgICAgICAgICAgICAgICAgICAgIyBMZW5ndGgg b2YgVW5pdAorCS5zaG9ydAk0ICAgICAgICAgICAgICAgICAgICAgICAjIERX QVJGIHZlcnNpb24gbnVtYmVyCisJLmxvbmcJMCAgICAgICAgICAgICAgICAg ICAgICAgIyBPZmZzZXQgSW50byBBYmJyZXYuIFNlY3Rpb24KKwkuYnl0ZQk4 ICAgICAgICAgICAgICAgICAgICAgICAjIEFkZHJlc3MgU2l6ZSAoaW4gYnl0 ZXMpCisJLmJ5dGUJMSAgICAgICAgICAgICAgICAgICAgICAgIyBBYmJyZXYg WzFdIDB4YjoweDIyIERXX1RBR19jb21waWxlX3VuaXQKKwkuYnl0ZQkwICAg ICAgICAgICAgICAgICAgICAgICAjIERXX0FUX0dOVV9kd29fbmFtZQorCS5i eXRlCTEgICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfcHJvZHVjZXIK Kwkuc2hvcnQJMTIgICAgICAgICAgICAgICAgICAgICAgIyBEV19BVF9sYW5n dWFnZQorCS5ieXRlCTMgICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRf bmFtZQorCS5xdWFkCTIwMzc2NTAyNjE1OTk2OTIzMjQgICAgICMgRFdfQVRf R05VX2R3b19pZAorCS5ieXRlCTUgICAgICAgICAgICAgICAgICAgICAgICMg QWJicmV2IFs1XSAweDE5OjB4ZiBEV19UQUdfc3VicHJvZ3JhbQorCS5ieXRl CTEgICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfbG93X3BjCisJLmxv bmcJLkxmdW5jX2VuZDEtLkxmdW5jX2JlZ2luMSAjIERXX0FUX2hpZ2hfcGMK KwkuYnl0ZQkxICAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX2ZyYW1l X2Jhc2UKKwkuYnl0ZQk4NgorCS5ieXRlCTYgICAgICAgICAgICAgICAgICAg ICAgICMgRFdfQVRfbmFtZQorCS5ieXRlCTIgICAgICAgICAgICAgICAgICAg ICAgICMgRFdfQVRfZGVjbF9maWxlCisJLmJ5dGUJMjIgICAgICAgICAgICAg ICAgICAgICAgIyBEV19BVF9kZWNsX2xpbmUKKwkubG9uZwk0MCAgICAgICAg ICAgICAgICAgICAgICAjIERXX0FUX3R5cGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX2V4dGVybmFsCisJLmJ5 dGUJNCAgICAgICAgICAgICAgICAgICAgICAgIyBBYmJyZXYgWzRdIDB4Mjg6 MHg0IERXX1RBR19iYXNlX3R5cGUKKwkuYnl0ZQk1ICAgICAgICAgICAgICAg ICAgICAgICAjIERXX0FUX25hbWUKKwkuYnl0ZQk1ICAgICAgICAgICAgICAg ICAgICAgICAjIERXX0FUX2VuY29kaW5nCisJLmJ5dGUJNCAgICAgICAgICAg ICAgICAgICAgICAgIyBEV19BVF9ieXRlX3NpemUKKwkuYnl0ZQkwICAgICAg ICAgICAgICAgICAgICAgICAjIEVuZCBPZiBDaGlsZHJlbiBNYXJrCisJLnNl Y3Rpb24JLmRlYnVnX2FiYnJldi5kd28sIiIsQHByb2diaXRzCisJLmJ5dGUJ MSAgICAgICAgICAgICAgICAgICAgICAgIyBBYmJyZXZpYXRpb24gQ29kZQor CS5ieXRlCTE3ICAgICAgICAgICAgICAgICAgICAgICMgRFdfVEFHX2NvbXBp bGVfdW5pdAorCS5ieXRlCTEgICAgICAgICAgICAgICAgICAgICAgICMgRFdf Q0hJTERSRU5feWVzCisJLmFzY2lpCSJcMjYwQiIgICAgICAgICAgICAgICAg ICMgRFdfQVRfR05VX2R3b19uYW1lCisJLmFzY2lpCSJcMjAyPiIgICAgICAg ICAgICAgICAgICMgRFdfRk9STV9HTlVfc3RyX2luZGV4CisJLmJ5dGUJMzcg ICAgICAgICAgICAgICAgICAgICAgIyBEV19BVF9wcm9kdWNlcgorCS5hc2Np aQkiXDIwMj4iICAgICAgICAgICAgICAgICAjIERXX0ZPUk1fR05VX3N0cl9p bmRleAorCS5ieXRlCTE5ICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRf bGFuZ3VhZ2UKKwkuYnl0ZQk1ICAgICAgICAgICAgICAgICAgICAgICAjIERX X0ZPUk1fZGF0YTIKKwkuYnl0ZQkzICAgICAgICAgICAgICAgICAgICAgICAj IERXX0FUX25hbWUKKwkuYXNjaWkJIlwyMDI+IiAgICAgICAgICAgICAgICAg IyBEV19GT1JNX0dOVV9zdHJfaW5kZXgKKwkuYXNjaWkJIlwyNjFCIiAgICAg ICAgICAgICAgICAgIyBEV19BVF9HTlVfZHdvX2lkCisJLmJ5dGUJNyAgICAg ICAgICAgICAgICAgICAgICAgIyBEV19GT1JNX2RhdGE4CisJLmJ5dGUJMCAg ICAgICAgICAgICAgICAgICAgICAgIyBFT00oMSkKKwkuYnl0ZQkwICAgICAg ICAgICAgICAgICAgICAgICAjIEVPTSgyKQorCS5ieXRlCTIgICAgICAgICAg ICAgICAgICAgICAgICMgQWJicmV2aWF0aW9uIENvZGUKKwkuYnl0ZQk0NiAg ICAgICAgICAgICAgICAgICAgICAjIERXX1RBR19zdWJwcm9ncmFtCisJLmJ5 dGUJMSAgICAgICAgICAgICAgICAgICAgICAgIyBEV19DSElMRFJFTl95ZXMK KwkuYnl0ZQkxNyAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX2xvd19w YworCS5hc2NpaQkiXDIwMT4iICAgICAgICAgICAgICAgICAjIERXX0ZPUk1f R05VX2FkZHJfaW5kZXgKKwkuYnl0ZQkxOCAgICAgICAgICAgICAgICAgICAg ICAjIERXX0FUX2hpZ2hfcGMKKwkuYnl0ZQk2ICAgICAgICAgICAgICAgICAg ICAgICAjIERXX0ZPUk1fZGF0YTQKKwkuYnl0ZQk2NCAgICAgICAgICAgICAg ICAgICAgICAjIERXX0FUX2ZyYW1lX2Jhc2UKKwkuYnl0ZQkyNCAgICAgICAg ICAgICAgICAgICAgICAjIERXX0ZPUk1fZXhwcmxvYworCS5ieXRlCTMgICAg ICAgICAgICAgICAgICAgICAgICMgRFdfQVRfbmFtZQorCS5hc2NpaQkiXDIw Mj4iICAgICAgICAgICAgICAgICAjIERXX0ZPUk1fR05VX3N0cl9pbmRleAor CS5ieXRlCTU4ICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfZGVjbF9m aWxlCisJLmJ5dGUJMTEgICAgICAgICAgICAgICAgICAgICAgIyBEV19GT1JN X2RhdGExCisJLmJ5dGUJNTkgICAgICAgICAgICAgICAgICAgICAgIyBEV19B VF9kZWNsX2xpbmUKKwkuYnl0ZQkxMSAgICAgICAgICAgICAgICAgICAgICAj IERXX0ZPUk1fZGF0YTEKKwkuYnl0ZQkzOSAgICAgICAgICAgICAgICAgICAg ICAjIERXX0FUX3Byb3RvdHlwZWQKKwkuYnl0ZQkyNSAgICAgICAgICAgICAg ICAgICAgICAjIERXX0ZPUk1fZmxhZ19wcmVzZW50CisJLmJ5dGUJNzMgICAg ICAgICAgICAgICAgICAgICAgIyBEV19BVF90eXBlCisJLmJ5dGUJMTkgICAg ICAgICAgICAgICAgICAgICAgIyBEV19GT1JNX3JlZjQKKwkuYnl0ZQk2MyAg ICAgICAgICAgICAgICAgICAgICAjIERXX0FUX2V4dGVybmFsCisJLmJ5dGUJ MjUgICAgICAgICAgICAgICAgICAgICAgIyBEV19GT1JNX2ZsYWdfcHJlc2Vu dAorCS5ieXRlCTAgICAgICAgICAgICAgICAgICAgICAgICMgRU9NKDEpCisJ LmJ5dGUJMCAgICAgICAgICAgICAgICAgICAgICAgIyBFT00oMikKKwkuYnl0 ZQkzICAgICAgICAgICAgICAgICAgICAgICAjIEFiYnJldmlhdGlvbiBDb2Rl CisJLmJ5dGUJNSAgICAgICAgICAgICAgICAgICAgICAgIyBEV19UQUdfZm9y bWFsX3BhcmFtZXRlcgorCS5ieXRlCTAgICAgICAgICAgICAgICAgICAgICAg ICMgRFdfQ0hJTERSRU5fbm8KKwkuYnl0ZQkyICAgICAgICAgICAgICAgICAg ICAgICAjIERXX0FUX2xvY2F0aW9uCisJLmJ5dGUJMjQgICAgICAgICAgICAg ICAgICAgICAgIyBEV19GT1JNX2V4cHJsb2MKKwkuYnl0ZQkzICAgICAgICAg ICAgICAgICAgICAgICAjIERXX0FUX25hbWUKKwkuYXNjaWkJIlwyMDI+IiAg ICAgICAgICAgICAgICAgIyBEV19GT1JNX0dOVV9zdHJfaW5kZXgKKwkuYnl0 ZQk1OCAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX2RlY2xfZmlsZQor CS5ieXRlCTExICAgICAgICAgICAgICAgICAgICAgICMgRFdfRk9STV9kYXRh MQorCS5ieXRlCTU5ICAgICAgICAgICAgICAgICAgICAgICMgRFdfQVRfZGVj bF9saW5lCisJLmJ5dGUJMTEgICAgICAgICAgICAgICAgICAgICAgIyBEV19G T1JNX2RhdGExCisJLmJ5dGUJNzMgICAgICAgICAgICAgICAgICAgICAgIyBE V19BVF90eXBlCisJLmJ5dGUJMTkgICAgICAgICAgICAgICAgICAgICAgIyBE V19GT1JNX3JlZjQKKwkuYnl0ZQkwICAgICAgICAgICAgICAgICAgICAgICAj IEVPTSgxKQorCS5ieXRlCTAgICAgICAgICAgICAgICAgICAgICAgICMgRU9N KDIpCisJLmJ5dGUJNCAgICAgICAgICAgICAgICAgICAgICAgIyBBYmJyZXZp YXRpb24gQ29kZQorCS5ieXRlCTM2ICAgICAgICAgICAgICAgICAgICAgICMg RFdfVEFHX2Jhc2VfdHlwZQorCS5ieXRlCTAgICAgICAgICAgICAgICAgICAg ICAgICMgRFdfQ0hJTERSRU5fbm8KKwkuYnl0ZQkzICAgICAgICAgICAgICAg ICAgICAgICAjIERXX0FUX25hbWUKKwkuYXNjaWkJIlwyMDI+IiAgICAgICAg ICAgICAgICAgIyBEV19GT1JNX0dOVV9zdHJfaW5kZXgKKwkuYnl0ZQk2MiAg ICAgICAgICAgICAgICAgICAgICAjIERXX0FUX2VuY29kaW5nCisJLmJ5dGUJ MTEgICAgICAgICAgICAgICAgICAgICAgIyBEV19GT1JNX2RhdGExCisJLmJ5 dGUJMTEgICAgICAgICAgICAgICAgICAgICAgIyBEV19BVF9ieXRlX3NpemUK KwkuYnl0ZQkxMSAgICAgICAgICAgICAgICAgICAgICAjIERXX0ZPUk1fZGF0 YTEKKwkuYnl0ZQkwICAgICAgICAgICAgICAgICAgICAgICAjIEVPTSgxKQor CS5ieXRlCTAgICAgICAgICAgICAgICAgICAgICAgICMgRU9NKDIpCisJLmJ5 dGUJNSAgICAgICAgICAgICAgICAgICAgICAgIyBBYmJyZXZpYXRpb24gQ29k ZQorCS5ieXRlCTQ2ICAgICAgICAgICAgICAgICAgICAgICMgRFdfVEFHX3N1 YnByb2dyYW0KKwkuYnl0ZQkwICAgICAgICAgICAgICAgICAgICAgICAjIERX X0NISUxEUkVOX25vCisJLmJ5dGUJMTcgICAgICAgICAgICAgICAgICAgICAg IyBEV19BVF9sb3dfcGMKKwkuYXNjaWkJIlwyMDE+IiAgICAgICAgICAgICAg ICAgIyBEV19GT1JNX0dOVV9hZGRyX2luZGV4CisJLmJ5dGUJMTggICAgICAg ICAgICAgICAgICAgICAgIyBEV19BVF9oaWdoX3BjCisJLmJ5dGUJNiAgICAg ICAgICAgICAgICAgICAgICAgIyBEV19GT1JNX2RhdGE0CisJLmJ5dGUJNjQg ICAgICAgICAgICAgICAgICAgICAgIyBEV19BVF9mcmFtZV9iYXNlCisJLmJ5 dGUJMjQgICAgICAgICAgICAgICAgICAgICAgIyBEV19GT1JNX2V4cHJsb2MK KwkuYnl0ZQkzICAgICAgICAgICAgICAgICAgICAgICAjIERXX0FUX25hbWUK KwkuYXNjaWkJIlwyMDI+IiAgICAgICAgICAgICAgICAgIyBEV19GT1JNX0dO VV9zdHJfaW5kZXgKKwkuYnl0ZQk1OCAgICAgICAgICAgICAgICAgICAgICAj IERXX0FUX2RlY2xfZmlsZQorCS5ieXRlCTExICAgICAgICAgICAgICAgICAg ICAgICMgRFdfRk9STV9kYXRhMQorCS5ieXRlCTU5ICAgICAgICAgICAgICAg ICAgICAgICMgRFdfQVRfZGVjbF9saW5lCisJLmJ5dGUJMTEgICAgICAgICAg ICAgICAgICAgICAgIyBEV19GT1JNX2RhdGExCisJLmJ5dGUJNzMgICAgICAg ICAgICAgICAgICAgICAgIyBEV19BVF90eXBlCisJLmJ5dGUJMTkgICAgICAg ICAgICAgICAgICAgICAgIyBEV19GT1JNX3JlZjQKKwkuYnl0ZQk2MyAgICAg ICAgICAgICAgICAgICAgICAjIERXX0FUX2V4dGVybmFsCisJLmJ5dGUJMjUg ICAgICAgICAgICAgICAgICAgICAgIyBEV19GT1JNX2ZsYWdfcHJlc2VudAor CS5ieXRlCTAgICAgICAgICAgICAgICAgICAgICAgICMgRU9NKDEpCisJLmJ5 dGUJMCAgICAgICAgICAgICAgICAgICAgICAgIyBFT00oMikKKwkuYnl0ZQkw ICAgICAgICAgICAgICAgICAgICAgICAjIEVPTSgzKQorCS5zZWN0aW9uCS5k ZWJ1Z19saW5lLmR3bywiIixAcHJvZ2JpdHMKKy5MdG1wNDoKKwkubG9uZwko Lkx0bXA1LS5MdG1wNCktNAorCS5zaG9ydAkyCisJLmxvbmcJKC5MdG1wNi0u THRtcDQpLTEwCisJLmJ5dGUJMQorCS5ieXRlCTEKKwkuYnl0ZQktNQorCS5i eXRlCTE0CisJLmJ5dGUJMQorCS5ieXRlCTAKKwkuYnl0ZQkwCisuTHRtcDY6 CisuTHRtcDU6CisJLnNlY3Rpb24JLmRlYnVnX2FkZHIsIiIsQHByb2diaXRz CisJLnF1YWQJLkxmdW5jX2JlZ2luMAorCS5xdWFkCS5MZnVuY19iZWdpbjEK Kwkuc2VjdGlvbgkuZGVidWdfcHVibmFtZXMsIiIsQHByb2diaXRzCisJLmxv bmcJLkxwdWJOYW1lc19lbmQwLS5McHViTmFtZXNfYmVnaW4wICMgTGVuZ3Ro IG9mIFB1YmxpYyBOYW1lcyBJbmZvCisuTHB1Yk5hbWVzX2JlZ2luMDoKKwku c2hvcnQJMiAgICAgICAgICAgICAgICAgICAgICAgIyBEV0FSRiBWZXJzaW9u CisJLmxvbmcJLkxjdV9iZWdpbjAgICAgICAgICAgICAgIyBPZmZzZXQgb2Yg Q29tcGlsYXRpb24gVW5pdCBJbmZvCisJLmxvbmcJNDggICAgICAgICAgICAg ICAgICAgICAgIyBDb21waWxhdGlvbiBVbml0IExlbmd0aAorCS5sb25nCTI1 ICAgICAgICAgICAgICAgICAgICAgICMgRElFIG9mZnNldAorCS5hc2Npegki ZnVuYyIgICAgICAgICAgICAgICAgICAjIEV4dGVybmFsIE5hbWUKKwkubG9u ZwkwICAgICAgICAgICAgICAgICAgICAgICAjIEVuZCBNYXJrCisuTHB1Yk5h bWVzX2VuZDA6CisJLmxvbmcJLkxwdWJOYW1lc19lbmQxLS5McHViTmFtZXNf YmVnaW4xICMgTGVuZ3RoIG9mIFB1YmxpYyBOYW1lcyBJbmZvCisuTHB1Yk5h bWVzX2JlZ2luMToKKwkuc2hvcnQJMiAgICAgICAgICAgICAgICAgICAgICAg IyBEV0FSRiBWZXJzaW9uCisJLmxvbmcJLkxjdV9iZWdpbjEgICAgICAgICAg ICAgIyBPZmZzZXQgb2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvCisJLmxvbmcJ NDggICAgICAgICAgICAgICAgICAgICAgIyBDb21waWxhdGlvbiBVbml0IExl bmd0aAorCS5sb25nCTI1ICAgICAgICAgICAgICAgICAgICAgICMgRElFIG9m ZnNldAorCS5hc2NpegkibWFpbiIgICAgICAgICAgICAgICAgICAjIEV4dGVy bmFsIE5hbWUKKwkubG9uZwkwICAgICAgICAgICAgICAgICAgICAgICAjIEVu ZCBNYXJrCisuTHB1Yk5hbWVzX2VuZDE6CisJLnNlY3Rpb24JLmRlYnVnX3B1 YnR5cGVzLCIiLEBwcm9nYml0cworCS5sb25nCS5McHViVHlwZXNfZW5kMC0u THB1YlR5cGVzX2JlZ2luMCAjIExlbmd0aCBvZiBQdWJsaWMgVHlwZXMgSW5m bworLkxwdWJUeXBlc19iZWdpbjA6CisJLnNob3J0CTIgICAgICAgICAgICAg ICAgICAgICAgICMgRFdBUkYgVmVyc2lvbgorCS5sb25nCS5MY3VfYmVnaW4w ICAgICAgICAgICAgICMgT2Zmc2V0IG9mIENvbXBpbGF0aW9uIFVuaXQgSW5m bworCS5sb25nCTQ4ICAgICAgICAgICAgICAgICAgICAgICMgQ29tcGlsYXRp b24gVW5pdCBMZW5ndGgKKwkubG9uZwk1MiAgICAgICAgICAgICAgICAgICAg ICAjIERJRSBvZmZzZXQKKwkuYXNjaXoJImludCIgICAgICAgICAgICAgICAg ICAgIyBFeHRlcm5hbCBOYW1lCisJLmxvbmcJMCAgICAgICAgICAgICAgICAg ICAgICAgIyBFbmQgTWFyaworLkxwdWJUeXBlc19lbmQwOgorCS5sb25nCS5M cHViVHlwZXNfZW5kMS0uTHB1YlR5cGVzX2JlZ2luMSAjIExlbmd0aCBvZiBQ dWJsaWMgVHlwZXMgSW5mbworLkxwdWJUeXBlc19iZWdpbjE6CisJLnNob3J0 CTIgICAgICAgICAgICAgICAgICAgICAgICMgRFdBUkYgVmVyc2lvbgorCS5s b25nCS5MY3VfYmVnaW4xICAgICAgICAgICAgICMgT2Zmc2V0IG9mIENvbXBp bGF0aW9uIFVuaXQgSW5mbworCS5sb25nCTQ4ICAgICAgICAgICAgICAgICAg ICAgICMgQ29tcGlsYXRpb24gVW5pdCBMZW5ndGgKKwkubG9uZwk0MCAgICAg ICAgICAgICAgICAgICAgICAjIERJRSBvZmZzZXQKKwkuYXNjaXoJImludCIg ICAgICAgICAgICAgICAgICAgIyBFeHRlcm5hbCBOYW1lCisJLmxvbmcJMCAg ICAgICAgICAgICAgICAgICAgICAgIyBFbmQgTWFyaworLkxwdWJUeXBlc19l bmQxOgorCisJLmlkZW50CSJjbGFuZyB2ZXJzaW9uIDUuMC4wICh0cnVuayAz MDI4NTUpIChsbHZtL3RydW5rIDMwMjg1MykiCisJLmlkZW50CSJjbGFuZyB2 ZXJzaW9uIDUuMC4wICh0cnVuayAzMDI4NTUpIChsbHZtL3RydW5rIDMwMjg1 MykiCisJLnNlY3Rpb24JIi5ub3RlLkdOVS1zdGFjayIsIiIsQHByb2diaXRz CisJLnNlY3Rpb24JLmRlYnVnX2xpbmUsIiIsQHByb2diaXRzCisuTGxpbmVf dGFibGVfc3RhcnQwOgpkaWZmIC0tZ2l0IGdkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9maXNzaW9uLW11bHRpLWN1LmV4cCBnZGIvdGVzdHN1aXRlL2dkYi5k d2FyZjIvZmlzc2lvbi1tdWx0aS1jdS5leHAKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uMWYyM2M1YjZlZQotLS0gL2Rldi9udWxs CisrKyBnZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZmlzc2lvbi1tdWx0aS1j dS5leHAKQEAgLTAsMCArMSw2NyBAQAorIyBDb3B5cmlnaHQgMjAxMi0yMDE3 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorCitsb2FkX2xpYiBkd2FyZi5leHAKKworIyBXZSBydW4gb2JqY29w eSBsb2NhbGx5IHRvIHNwbGl0IG91dCB0aGUgLmR3byBmaWxlLgoraWYgW2lz X3JlbW90ZSBob3N0XSB7CisgICAgcmV0dXJuIDAKK30KKworIyBUaGlzIHRl c3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2ggc3VwcG9ydCBE V0FSRi0yIGFuZCB1c2UgZ2FzLgoraWYgIVtkd2FyZjJfc3VwcG9ydF0gewor ICAgIHJldHVybiAwCit9CisKKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1 biBvbiB4ODYtNjQgdGFyZ2V0cy4KK2lmIHshW2lzdGFyZ2V0IHg4Nl82NC0q XSB8fCAhW2lzX2xwNjRfdGFyZ2V0XX0geworICAgIHJldHVybiAwCit9CisK K3N0YW5kYXJkX3Rlc3RmaWxlIC5TCisKK2lmIFtidWlsZF9leGVjdXRhYmxl X2Zyb21fZmlzc2lvbl9hc3NlbWJsZXIgXAorCSIkdGVzdGZpbGUuZXhwIiAi JGJpbmZpbGUiICIkc3JjZmlsZSIge25vZGVidWd9XSB7CisgICAgcmV0dXJu IC0xCit9CisKK2dkYl9leGl0CitnZGJfc3RhcnQKK2dkYl9yZWluaXRpYWxp emVfZGlyICRzcmNkaXIvJHN1YmRpcgorIyBNYWtlIHN1cmUgd2UgY2FuIGZp bmQgdGhlIC5kd28gZmlsZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHdlJ3Jl CisjIHJ1bm5pbmcgaW4gcGFyYWxsZWwgbW9kZS4KK2dkYl90ZXN0X25vX291 dHB1dCAic2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5IFtmaWxlIGRpcm5hbWUg JGJpbmZpbGVdIiBcCisgICAgInNldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeSIK K2dkYl9sb2FkICRiaW5maWxlCisKK2lmICFbcnVudG9fbWFpbl0geworICAg IHJldHVybiAtMQorfQorCisjIERvIGEgZmV3IGJhc2ljIHRoaW5ncyB0byB2 ZXJpZnkgd2UncmUgZmluZGluZyB0aGUgRFdPIGRlYnVnIGluZm8uCisKK2dk Yl90ZXN0ICJwdHlwZSBtYWluIiAidHlwZSA9IGludCBcXChcXCkiCitnZGJf dGVzdCAicHR5cGUgZnVuYyIgInR5cGUgPSBpbnQgXFwoaW50XFwpIgorCitn ZGJfdGVzdCAiZnJhbWUiICIjMCAqbWFpbiBcXChcXCkgYXQgJHt0ZXN0Zmls ZX0yXFwuYzokZGVjaW1hbC4qIiBcCisgICAgImZyYW1lIGluIG1haW4iCisK K2dkYl90ZXN0ICJicmVhayBmdW5jIiAiQnJlYWtwb2ludC4qYXQuKiBmaWxl IC4qJHt0ZXN0ZmlsZX0xXFwuYywgbGluZSAuKiIKKworZ2RiX3Rlc3QgImNv bnRpbnVlIiAiQnJlYWtwb2ludC4qIGZ1bmMgXFwoYXJnPS0xXFwpLioiIFwK KyAgICAiY29udGludWUgdG8gZnVuYyIKKworZ2RiX3Rlc3QgImZyYW1lIiAi IzAgKmZ1bmMgXFwoYXJnPS0xXFwpIGF0ICR7dGVzdGZpbGV9MVxcLmM6JGRl Y2ltYWwuKiIgXAorICAgICJmcmFtZSBpbiBmdW5jIgpkaWZmIC0tZ2l0IGdk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9maXNzaW9uLW11bHRpLWN1MS5jIGdk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9maXNzaW9uLW11bHRpLWN1MS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmQ5M2UyZjkx MmUKLS0tIC9kZXYvbnVsbAorKysgZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L2Zpc3Npb24tbXVsdGktY3UxLmMKQEAgLTAsMCArMSwyMiBAQAorLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K KworICAgQ29weXJpZ2h0IDIwMTItMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKwor aW50CitmdW5jIChpbnQgYXJnKQoreworICByZXR1cm4gYXJnICsgMTsKK30K ZGlmZiAtLWdpdCBnZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZmlzc2lvbi1t dWx0aS1jdTIuYyBnZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZmlzc2lvbi1t dWx0aS1jdTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi4wNTNiM2VhMTQxCi0tLSAvZGV2L251bGwKKysrIGdkYi90ZXN0c3Vp dGUvZ2RiLmR3YXJmMi9maXNzaW9uLW11bHRpLWN1Mi5jCkBAIC0wLDAgKzEs MjQgQEAKKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBH TlUgZGVidWdnZXIuCisKKyAgIENvcHlyaWdodCAyMDEyLTIwMTcgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCisKK3ZvaWQgZnVuYyAoKTsKKworaW50CittYWluICgpCit7 CisgIGZ1bmMgKC0xKTsKK30K --f403045e96c083f704054f7e50d3--