From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x102b.google.com (mail-pj1-x102b.google.com [IPv6:2607:f8b0:4864:20::102b]) by sourceware.org (Postfix) with ESMTPS id 537E738582A2 for ; Mon, 4 Jul 2022 20:34:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 537E738582A2 Received: by mail-pj1-x102b.google.com with SMTP id o5-20020a17090a3d4500b001ef76490983so6065591pjf.2 for ; Mon, 04 Jul 2022 13:34:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=UqNR7oU15JLKx9YFdjdi2ilBEJmVZYqizvq9/ETEY64=; b=XCEhGjdzWmQwGVwBtxPeVgWd1VPrA4+tcw61DIIngI27yOmpposmEj4+zcBAMQdPC2 UfoHb85rXOr0+jE/0u5dwdSY7A61KkIfhzKqf1V0yVO3PFoVeAcF0tBH9MgOxsoT5m1h yQJq2vdrYscB1/Wg5UnNnex6mqb7xrZbXyKa5PALfRdVuOi3AcbchkocUjnjNbHwzC/J 4bPIky4jA8c4G0tH72WY9uveturOAm2GT4cpMuUUZLjgPZhKaViDG5w4STiBUtAyphvl rGVQWLTt9vroAWX0O/hBCeu0xGz0l+OmrP+57Fjqj3PenkiCUYUwR/eRxW3ghKgijrvt CQKw== X-Gm-Message-State: AJIora/+LEEg8uEa+6oHk75XHkrQ+GPaM5564v8eRZEQfGbtinwb1cve LElSRvfq0VmaxywPLu/IfIH+4k0b0Ge640QSooe+2vCwTeo67g== X-Google-Smtp-Source: AGRyM1tjmPqMyRjEMAHrzcoFauhIf2cfWNEBPe9jUQ6WF8b+nDonnbbM66X1SCHG47VERTXAXyf9oakC9nuXAmWban0= X-Received: by 2002:a17:902:6a81:b0:16b:d807:9acd with SMTP id n1-20020a1709026a8100b0016bd8079acdmr11827019plk.40.1656966856093; Mon, 04 Jul 2022 13:34:16 -0700 (PDT) MIME-Version: 1.0 From: Ahmed Sayed Mousse Date: Mon, 4 Jul 2022 22:34:03 +0200 Message-ID: Subject: [patch] libgompd: Add thread handles To: gcc-patches@gcc.gnu.org Cc: jakub@redhat.com Content-Type: multipart/mixed; boundary="000000000000dd0aa905e300a831" X-Spam-Status: No, score=-8.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, HTML_MESSAGE, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Jul 2022 20:34:22 -0000 --000000000000dd0aa905e300a831 Content-Type: text/plain; charset="UTF-8" *This patch is the initial implementation of OpenMP-API specs book section **20.5.5 with title "Thread Handles".* *I have fixed the first version after revising the notes on it.* *libgomp/ChangeLog 2022-07-01 Ahmed Sayed > * ** Makefile.am (libgompd_la_SOURCES): Add ompd-threads.c.* ** Makefile.in: Regenerate.* ** team.c ( gomp_free_thread ): Called ompd_bp_thread_end ().* ** ompd-support.c ( gompd_thread_initial_tls_bias ): New Variable.* * (gompd_load): Initialize gompd_thread_initial_tls_bias.* ** ompd-threads.c: New File.* --000000000000dd0aa905e300a831 Content-Type: text/plain; charset="US-ASCII"; name="diff.txt" Content-Disposition: attachment; filename="diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l5778f6k0 ZGlmZiAtLWdpdCBhL2xpYmdvbXAvTWFrZWZpbGUuYW0gYi9saWJnb21wL01ha2VmaWxlLmFtCmlu ZGV4IDZkOTEzYTkzZTdmLi4yM2Y1YmVkZTFiZiAxMDA2NDQKLS0tIGEvbGliZ29tcC9NYWtlZmls ZS5hbQorKysgYi9saWJnb21wL01ha2VmaWxlLmFtCkBAIC05NCw3ICs5NCw3IEBAIGxpYmdvbXBf bGFfU09VUkNFUyA9IGFsbG9jLmMgYXRvbWljLmMgYmFycmllci5jIGNyaXRpY2FsLmMgZW52LmMg ZXJyb3IuYyBcCiAJcHJpb3JpdHlfcXVldWUuYyBhZmZpbml0eS1mbXQuYyB0ZWFtcy5jIGFsbG9j YXRvci5jIG9hY2MtcHJvZmlsaW5nLmMgXAogCW9hY2MtdGFyZ2V0LmMgb21wZC1zdXBwb3J0LmMK IAotbGliZ29tcGRfbGFfU09VUkNFUyA9IG9tcGQtaW5pdC5jIG9tcGQtaGVscGVyLmMgb21wZC1p Y3YuYworbGliZ29tcGRfbGFfU09VUkNFUyA9IG9tcGQtaW5pdC5jIG9tcGQtaGVscGVyLmMgb21w ZC1pY3YuYyBvbXBkLXRocmVhZHMuYwogCiBpbmNsdWRlICQodG9wX3NyY2RpcikvcGx1Z2luL01h a2VmcmFnLmFtCiAKZGlmZiAtLWdpdCBhL2xpYmdvbXAvTWFrZWZpbGUuaW4gYi9saWJnb21wL01h a2VmaWxlLmluCmluZGV4IDQwZjg5NmI1ZjAzLi44YmJjNDZjY2EyNSAxMDA2NDQKLS0tIGEvbGli Z29tcC9NYWtlZmlsZS5pbgorKysgYi9saWJnb21wL01ha2VmaWxlLmluCkBAIC0xMzMsMjEgKzEz Myw4IEBAIHRhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKIEBVU0VfRk9SVFJBTl9UUlVFQGFtX19h cHBlbmRfNyA9IG9wZW5hY2MuZjkwCiBzdWJkaXIgPSAuCiBBQ0xPQ0FMX000ID0gJCh0b3Bfc3Jj ZGlyKS9hY2xvY2FsLm00Ci1hbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS8uLi9j b25maWcvYWN4Lm00IFwKLQkkKHRvcF9zcmNkaXIpLy4uL2NvbmZpZy9heF9jb3VudF9jcHVzLm00 IFwKLQkkKHRvcF9zcmNkaXIpLy4uL2NvbmZpZy9kZXBzdGFuZC5tNCBcCi0JJCh0b3Bfc3JjZGly KS8uLi9jb25maWcvZW5hYmxlLm00IFwKLQkkKHRvcF9zcmNkaXIpLy4uL2NvbmZpZy9mdXRleC5t NCBcCi0JJCh0b3Bfc3JjZGlyKS8uLi9jb25maWcvbGVhZC1kb3QubTQgXAotCSQodG9wX3NyY2Rp cikvLi4vY29uZmlnL2x0aG9zdGZsYWdzLm00IFwKLQkkKHRvcF9zcmNkaXIpLy4uL2NvbmZpZy9t dWx0aS5tNCBcCi0JJCh0b3Bfc3JjZGlyKS8uLi9jb25maWcvb3ZlcnJpZGUubTQgXAotCSQodG9w X3NyY2RpcikvLi4vY29uZmlnL3Rscy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS8uLi9jb25maWcvdG9v bGV4ZWNsaWJkaXIubTQgXAotCSQodG9wX3NyY2RpcikvLi4vbHRvcHRpb25zLm00ICQodG9wX3Ny Y2RpcikvLi4vbHRzdWdhci5tNCBcCi0JJCh0b3Bfc3JjZGlyKS8uLi9sdHZlcnNpb24ubTQgJCh0 b3Bfc3JjZGlyKS8uLi9sdH5vYnNvbGV0ZS5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9hY2luY2x1ZGUu bTQgJCh0b3Bfc3JjZGlyKS8uLi9saWJ0b29sLm00IFwKLQkkKHRvcF9zcmNkaXIpLy4uL2NvbmZp Zy9jZXQubTQgXAorYW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2RpcikvYWNpbmNsdWRl Lm00IFwKKwkkKHRvcF9zcmNkaXIpLy4uL2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS8uLi9jb25m aWcvY2V0Lm00IFwKIAkkKHRvcF9zcmNkaXIpL3BsdWdpbi9jb25maWdmcmFnLmFjICQodG9wX3Ny Y2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200 X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKQEAgLTIz Myw3ICsyMjAsOCBAQCBhbV9saWJnb21wX2xhX09CSkVDVFMgPSBhbGxvYy5sbyBhdG9taWMubG8g YmFycmllci5sbyBjcml0aWNhbC5sbyBcCiAJYWZmaW5pdHktZm10LmxvIHRlYW1zLmxvIGFsbG9j YXRvci5sbyBvYWNjLXByb2ZpbGluZy5sbyBcCiAJb2FjYy10YXJnZXQubG8gb21wZC1zdXBwb3J0 LmxvICQoYW1fX29iamVjdHNfMSkKIGxpYmdvbXBfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ29tcF9s YV9PQkpFQ1RTKQotYW1fbGliZ29tcGRfbGFfT0JKRUNUUyA9IG9tcGQtaW5pdC5sbyBvbXBkLWhl bHBlci5sbyBvbXBkLWljdi5sbworYW1fbGliZ29tcGRfbGFfT0JKRUNUUyA9IG9tcGQtaW5pdC5s byBvbXBkLWhlbHBlci5sbyBvbXBkLWljdi5sbyBcCisJb21wZC10aHJlYWRzLmxvCiBsaWJnb21w ZF9sYV9PQkpFQ1RTID0gJChhbV9saWJnb21wZF9sYV9PQkpFQ1RTKQogQU1fVl9QID0gJChhbV9f dl9QX0BBTV9WQCkKIGFtX192X1BfID0gJChhbV9fdl9QX0BBTV9ERUZBVUxUX1ZAKQpAQCAtNDg1 LDcgKzQ3Myw2IEBAIGR2aWRpciA9IEBkdmlkaXJACiBlbmFibGVfc2hhcmVkID0gQGVuYWJsZV9z aGFyZWRACiBlbmFibGVfc3RhdGljID0gQGVuYWJsZV9zdGF0aWNACiBleGVjX3ByZWZpeCA9IEBl eGVjX3ByZWZpeEAKLWdldF9nY2NfYmFzZV92ZXIgPSBAZ2V0X2djY19iYXNlX3ZlckAKIGhvc3Qg PSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1 QApAQCAtNTAxLDEwICs0ODgsOCBAQCBsaWJ0b29sX1ZFUlNJT04gPSBAbGlidG9vbF9WRVJTSU9O QAogbGlua19nb21wID0gQGxpbmtfZ29tcEAKIGxvY2FsZWRpciA9IEBsb2NhbGVkaXJACiBsb2Nh bHN0YXRlZGlyID0gQGxvY2Fsc3RhdGVkaXJACi1sdF9ob3N0X2ZsYWdzID0gQGx0X2hvc3RfZmxh Z3NACiBtYW5kaXIgPSBAbWFuZGlyQAogbWtkaXJfcCA9IEBta2Rpcl9wQAotbXVsdGlfYmFzZWRp ciA9IEBtdWx0aV9iYXNlZGlyQAogb2ZmbG9hZF9hZGRpdGlvbmFsX2xpYl9wYXRocyA9IEBvZmZs b2FkX2FkZGl0aW9uYWxfbGliX3BhdGhzQAogb2ZmbG9hZF9hZGRpdGlvbmFsX29wdGlvbnMgPSBA b2ZmbG9hZF9hZGRpdGlvbmFsX29wdGlvbnNACiBvZmZsb2FkX3BsdWdpbnMgPSBAb2ZmbG9hZF9w bHVnaW5zQApAQCAtNTE0LDYgKzQ5OSw3IEBAIHBkZmRpciA9IEBwZGZkaXJACiBwcmVmaXggPSBA cHJlZml4QAogcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSA9IEBwcm9ncmFtX3RyYW5zZm9ybV9uYW1l QAogcHNkaXIgPSBAcHNkaXJACitydW5zdGF0ZWRpciA9IEBydW5zdGF0ZWRpckAKIHNiaW5kaXIg PSBAc2JpbmRpckAKIHNoYXJlZHN0YXRlZGlyID0gQHNoYXJlZHN0YXRlZGlyQAogc3JjZGlyID0g QHNyY2RpckAKQEAgLTU4Myw3ICs1NjksNyBAQCBsaWJnb21wX2xhX1NPVVJDRVMgPSBhbGxvYy5j IGF0b21pYy5jIGJhcnJpZXIuYyBjcml0aWNhbC5jIGVudi5jIFwKIAlvYWNjLWFzeW5jLmMgb2Fj Yy1wbHVnaW4uYyBvYWNjLWN1ZGEuYyBwcmlvcml0eV9xdWV1ZS5jIFwKIAlhZmZpbml0eS1mbXQu YyB0ZWFtcy5jIGFsbG9jYXRvci5jIG9hY2MtcHJvZmlsaW5nLmMgXAogCW9hY2MtdGFyZ2V0LmMg b21wZC1zdXBwb3J0LmMgJChhbV9fYXBwZW5kXzcpCi1saWJnb21wZF9sYV9TT1VSQ0VTID0gb21w ZC1pbml0LmMgb21wZC1oZWxwZXIuYyBvbXBkLWljdi5jCitsaWJnb21wZF9sYV9TT1VSQ0VTID0g b21wZC1pbml0LmMgb21wZC1oZWxwZXIuYyBvbXBkLWljdi5jIG9tcGQtdGhyZWFkcy5jCiAKICMg TnZpZGlhIFBUWCBPcGVuQUNDIHBsdWdpbi4KIEBQTFVHSU5fTlZQVFhfVFJVRUBsaWJnb21wX3Bs dWdpbl9udnB0eF92ZXJzaW9uX2luZm8gPSAtdmVyc2lvbi1pbmZvICQobGlidG9vbF9WRVJTSU9O KQpAQCAtODAxLDYgKzc4Nyw3IEBAIGRpc3RjbGVhbi1jb21waWxlOgogQEFNREVQX1RSVUVAQGFt X19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL29tcGQtaWN2LlBsb0BhbV9fcXVvdGVA CiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvb21wZC1p bml0LlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVA Li8kKERFUERJUikvb21wZC1zdXBwb3J0LlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1f X2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvb21wZC10aHJlYWRzLlBsb0BhbV9fcXVv dGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvb3Jk ZXJlZC5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3Rl QC4vJChERVBESVIpL3BhcmFsbGVsLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2lu Y2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvcHJpb3JpdHlfcXVldWUuUGxvQGFtX19xdW90 ZUAKZGlmZiAtLWdpdCBhL2xpYmdvbXAvYWNsb2NhbC5tNCBiL2xpYmdvbXAvYWNsb2NhbC5tNApp bmRleCA1NWQ5ZDcxODk1YS4uNDE5MTUyMTZiZWIgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvYWNsb2Nh bC5tNAorKysgYi9saWJnb21wL2FjbG9jYWwubTQKQEAgLTYyNiw2ICs2MjYsMjUgQEAgaWYgdGVz dCB4IiR7aW5zdGFsbF9zaCtzZXR9IiAhPSB4c2V0OyB0aGVuCiBmaQogQUNfU1VCU1QoW2luc3Rh bGxfc2hdKV0pCiAKKyMgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkg YW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBh cyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBDaGVjayB3aGV0aGVyIHRo ZSB1bmRlcmx5aW5nIGZpbGUtc3lzdGVtIHN1cHBvcnRzIGZpbGVuYW1lcworIyB3aXRoIGEgbGVh ZGluZyBkb3QuICBGb3IgaW5zdGFuY2UgTVMtRE9TIGRvZXNuJ3QuCitBQ19ERUZVTihbQU1fU0VU X0xFQURJTkdfRE9UXSwKK1tybSAtcmYgLnRzdCAyPi9kZXYvbnVsbAorbWtkaXIgLnRzdCAyPi9k ZXYvbnVsbAoraWYgdGVzdCAtZCAudHN0OyB0aGVuCisgIGFtX19sZWFkaW5nX2RvdD0uCitlbHNl CisgIGFtX19sZWFkaW5nX2RvdD1fCitmaQorcm1kaXIgLnRzdCAyPi9kZXYvbnVsbAorQUNfU1VC U1QoW2FtX19sZWFkaW5nX2RvdF0pXSkKKwogIyBBZGQgLS1lbmFibGUtbWFpbnRhaW5lci1tb2Rl IG9wdGlvbiB0byBjb25maWd1cmUuICAgICAgICAgLSotIEF1dG9jb25mIC0qLQogIyBGcm9tIEpp bSBNZXllcmluZwogCkBAIC0xMTY3LDE5ICsxMTg2LDQgQEAgQUNfU1VCU1QoW2FtX190YXJdKQog QUNfU1VCU1QoW2FtX191bnRhcl0pCiBdKSAjIF9BTV9QUk9HX1RBUgogCi1tNF9pbmNsdWRlKFsu Li9jb25maWcvYWN4Lm00XSkKLW00X2luY2x1ZGUoWy4uL2NvbmZpZy9heF9jb3VudF9jcHVzLm00 XSkKLW00X2luY2x1ZGUoWy4uL2NvbmZpZy9kZXBzdGFuZC5tNF0pCi1tNF9pbmNsdWRlKFsuLi9j b25maWcvZW5hYmxlLm00XSkKLW00X2luY2x1ZGUoWy4uL2NvbmZpZy9mdXRleC5tNF0pCi1tNF9p bmNsdWRlKFsuLi9jb25maWcvbGVhZC1kb3QubTRdKQotbTRfaW5jbHVkZShbLi4vY29uZmlnL2x0 aG9zdGZsYWdzLm00XSkKLW00X2luY2x1ZGUoWy4uL2NvbmZpZy9tdWx0aS5tNF0pCi1tNF9pbmNs dWRlKFsuLi9jb25maWcvb3ZlcnJpZGUubTRdKQotbTRfaW5jbHVkZShbLi4vY29uZmlnL3Rscy5t NF0pCi1tNF9pbmNsdWRlKFsuLi9jb25maWcvdG9vbGV4ZWNsaWJkaXIubTRdKQotbTRfaW5jbHVk ZShbLi4vbHRvcHRpb25zLm00XSkKLW00X2luY2x1ZGUoWy4uL2x0c3VnYXIubTRdKQotbTRfaW5j bHVkZShbLi4vbHR2ZXJzaW9uLm00XSkKLW00X2luY2x1ZGUoWy4uL2x0fm9ic29sZXRlLm00XSkK IG00X2luY2x1ZGUoW2FjaW5jbHVkZS5tNF0pCmRpZmYgLS1naXQgYS9saWJnb21wL2NvbmZpZ3Vy ZSBiL2xpYmdvbXAvY29uZmlndXJlCmluZGV4IGIyNTFhMzg5ZDg5Li45NjgyYTgzNjAyOSAxMDA3 NTUKLS0tIGEvbGliZ29tcC9jb25maWd1cmUKKysrIGIvbGliZ29tcC9jb25maWd1cmUKQEAgLTcy MCw3ICs3MjAsNiBAQCBhbV9fbm9kZXAKIEFNREVQQkFDS1NMQVNICiBBTURFUF9GQUxTRQogQU1E RVBfVFJVRQotYW1fX3F1b3RlCiBhbV9faW5jbHVkZQogREVQRElSCiBPQkpFWFQKQEAgLTgxMSw3 ICs4MTAsOCBAQCBQQUNLQUdFX1ZFUlNJT04KIFBBQ0tBR0VfVEFSTkFNRQogUEFDS0FHRV9OQU1F CiBQQVRIX1NFUEFSQVRPUgotU0hFTEwnCitTSEVMTAorYW1fX3F1b3RlJwogYWNfc3Vic3RfZmls ZXM9JycKIGFjX3VzZXJfb3B0cz0nCiBlbmFibGVfb3B0aW9uX2NoZWNraW5nCkBAIC0yODcwLDcg KzI4NzAsNyBAQCB0YXJnZXRfYWxpYXM9JHt0YXJnZXRfYWxpYXMtJGhvc3RfYWxpYXN9CiAjICAt V2FsbDogIHR1cm5zIG9uIGFsbCBhdXRvbWFrZSB3YXJuaW5ncy4uLgogIyAgLVduby1wb3J0YWJp bGl0eTogIC4uLmV4Y2VwdCB0aGlzIG9uZSwgc2luY2UgR05VIG1ha2UgaXMgcmVxdWlyZWQuCiAj ICAtV25vLW92ZXJyaWRlOiAuLi4gYW5kIHRoaXMgb25lLCBzaW5jZSB3ZSBkbyB3YW50IHRoaXMg aW4gdGVzdHN1aXRlLgotYW1fX2FwaV92ZXJzaW9uPScxLjE1JworYW1fX2FwaV92ZXJzaW9uPScx LjE2JwogCiAjIEZpbmQgYSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBhIEMgcHJv Z3JhbSAoZmFzdGVyKSwKICMgc28gb25lIHNjcmlwdCBpcyBhcyBnb29kIGFzIGFub3RoZXIuICBC dXQgYXZvaWQgdGhlIGJyb2tlbiBvcgpAQCAtMzM4Niw4ICszMzg2LDggQEAgTUFLRUlORk89JHtN QUtFSU5GTy0iJHthbV9taXNzaW5nX3J1bn1tYWtlaW5mbyJ9CiAKICMgRm9yIGJldHRlciBiYWNr d2FyZCBjb21wYXRpYmlsaXR5LiAgVG8gYmUgcmVtb3ZlZCBvbmNlIEF1dG9tYWtlIDEuOS54CiAj IGRpZXMgb3V0IGZvciBnb29kLiAgRm9yIG1vcmUgYmFja2dyb3VuZCwgc2VlOgotIyA8aHR0cDov L2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2F1dG9tYWtlLzIwMTItMDcvbXNnMDAwMDEuaHRt bD4KLSMgPGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9hdXRvbWFrZS8yMDEyLTA3 L21zZzAwMDE0Lmh0bWw+CisjIDxodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2F1 dG9tYWtlLzIwMTItMDcvbXNnMDAwMDEuaHRtbD4KKyMgPGh0dHBzOi8vbGlzdHMuZ251Lm9yZy9h cmNoaXZlL2h0bWwvYXV0b21ha2UvMjAxMi0wNy9tc2cwMDAxNC5odG1sPgogbWtkaXJfcD0nJChN S0RJUl9QKScKIAogIyBXZSBuZWVkIGF3ayBmb3IgdGhlICJjaGVjayIgdGFyZ2V0IChhbmQgcG9z c2libHkgdGhlIFRBUCBkcml2ZXIpLiAgVGhlCkBAIC0zNDM4LDcgKzM0MzgsNyBAQCBFTkQKIEFi b3J0aW5nIHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3MsIHRvIGVuc3VyZSB5b3UgdGFrZSBub3Rp Y2Ugb2YgdGhlIGlzc3VlLgogCiBZb3UgY2FuIGRvd25sb2FkIGFuZCBpbnN0YWxsIEdOVSBjb3Jl dXRpbHMgdG8gZ2V0IGFuICdybScgaW1wbGVtZW50YXRpb24KLXRoYXQgYmVoYXZlcyBwcm9wZXJs eTogPGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9jb3JldXRpbHMvPi4KK3RoYXQgYmVoYXZl cyBwcm9wZXJseTogPGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvY29yZXV0aWxzLz4uCiAK IElmIHlvdSB3YW50IHRvIGNvbXBsZXRlIHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3MgdXNpbmcg eW91ciBwcm9ibGVtYXRpYwogJ3JtJyBhbnl3YXksIGV4cG9ydCB0aGUgZW52aXJvbm1lbnQgdmFy aWFibGUgQUNDRVBUX0lORkVSSU9SX1JNX1BST0dSQU0KQEAgLTQzOTksNDUgKzQzOTksNDUgQEAg REVQRElSPSIke2FtX19sZWFkaW5nX2RvdH1kZXBzIgogCiBhY19jb25maWdfY29tbWFuZHM9IiRh Y19jb25maWdfY29tbWFuZHMgZGVwZmlsZXMiCiAKLQotYW1fbWFrZT0ke01BS0UtbWFrZX0KLWNh dCA+IGNvbmZpbmMgPDwgJ0VORCcKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc3VwcG9ydHMgdGhlIGluY2x1ZGUg ZGlyZWN0aXZlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9 IHN1cHBvcnRzIHRoZSBpbmNsdWRlIGRpcmVjdGl2ZS4uLiAiID4mNjsgfQorY2F0ID4gY29uZmlu Yy5tayA8PCAnRU5EJwogYW1fX2RvaXQ6Ci0JQGVjaG8gdGhpcyBpcyB0aGUgYW1fX2RvaXQgdGFy Z2V0CisJQGVjaG8gdGhpcyBpcyB0aGUgYW1fX2RvaXQgdGFyZ2V0ID5jb25maW5jLm91dAogLlBI T05ZOiBhbV9fZG9pdAogRU5ECi0jIElmIHdlIGRvbid0IGZpbmQgYW4gaW5jbHVkZSBkaXJlY3Rp dmUsIGp1c3QgY29tbWVudCBvdXQgdGhlIGNvZGUuCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdHlsZSBvZiBpbmNsdWRlIHVzZWQgYnkgJGFt X21ha2UiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN0eWxlIG9mIGluY2x1ZGUgdXNl ZCBieSAkYW1fbWFrZS4uLiAiID4mNjsgfQogYW1fX2luY2x1ZGU9IiMiCiBhbV9fcXVvdGU9Ci1f YW1fcmVzdWx0PW5vbmUKLSMgRmlyc3QgdHJ5IEdOVSBtYWtlIHN0eWxlIGluY2x1ZGUuCi1lY2hv ICJpbmNsdWRlIGNvbmZpbmMiID4gY29uZm1mCi0jIElnbm9yZSBhbGwga2luZHMgb2YgYWRkaXRp b25hbCBvdXRwdXQgZnJvbSAnbWFrZScuCi1jYXNlIGAkYW1fbWFrZSAtcyAtZiBjb25mbWYgMj4g L2Rldi9udWxsYCBpbiAjKAotKnRoZVwgYW1fX2RvaXRcIHRhcmdldCopCi0gIGFtX19pbmNsdWRl PWluY2x1ZGUKLSAgYW1fX3F1b3RlPQotICBfYW1fcmVzdWx0PUdOVQotICA7OwotZXNhYwotIyBO b3cgdHJ5IEJTRCBtYWtlIHN0eWxlIGluY2x1ZGUuCi1pZiB0ZXN0ICIkYW1fX2luY2x1ZGUiID0g IiMiOyB0aGVuCi0gICBlY2hvICcuaW5jbHVkZSAiY29uZmluYyInID4gY29uZm1mCi0gICBjYXNl IGAkYW1fbWFrZSAtcyAtZiBjb25mbWYgMj4gL2Rldi9udWxsYCBpbiAjKAotICAgKnRoZVwgYW1f X2RvaXRcIHRhcmdldCopCi0gICAgIGFtX19pbmNsdWRlPS5pbmNsdWRlCi0gICAgIGFtX19xdW90 ZT0iXCIiCi0gICAgIF9hbV9yZXN1bHQ9QlNECisjIEJTRCBtYWtlIGRvZXMgaXQgbGlrZSB0aGlz LgorZWNobyAnLmluY2x1ZGUgImNvbmZpbmMubWsiICMgaWdub3JlZCcgPiBjb25mbWYuQlNECisj IE90aGVyIG1ha2UgaW1wbGVtZW50YXRpb25zIChHTlUsIFNvbGFyaXMgMTAsIEFJWCkgZG8gaXQg bGlrZSB0aGlzLgorZWNobyAnaW5jbHVkZSBjb25maW5jLm1rICMgaWdub3JlZCcgPiBjb25mbWYu R05VCitfYW1fcmVzdWx0PW5vCitmb3IgcyBpbiBHTlUgQlNEOyBkbworICB7IGVjaG8gIiRhc19t ZTokTElORU5POiAke01BS0UtbWFrZX0gLWYgY29uZm1mLiRzICYmIGNhdCBjb25maW5jLm91dCIg PiY1CisgICAoJHtNQUtFLW1ha2V9IC1mIGNvbmZtZi4kcyAmJiBjYXQgY29uZmluYy5vdXQpID4m NSAyPiY1CisgICBhY19zdGF0dXM9JD8KKyAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAk YWNfc3RhdHVzIiA+JjUKKyAgIChleGl0ICRhY19zdGF0dXMpOyB9CisgIGNhc2UgJD86YGNhdCBj b25maW5jLm91dCAyPi9kZXYvbnVsbGAgaW4gIygKKyAgJzA6dGhpcyBpcyB0aGUgYW1fX2RvaXQg dGFyZ2V0JykgOgorICAgIGNhc2UgJHMgaW4gIygKKyAgQlNEKSA6CisgICAgYW1fX2luY2x1ZGU9 Jy5pbmNsdWRlJyBhbV9fcXVvdGU9JyInIDs7ICMoCisgICopIDoKKyAgICBhbV9faW5jbHVkZT0n aW5jbHVkZScgYW1fX3F1b3RlPScnIDs7Citlc2FjIDs7ICMoCisgICopIDoKICAgICAgOzsKLSAg IGVzYWMKLWZpCi0KLQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICRfYW1fcmVzdWx0IiA+JjUKLSRhc19lY2hvICIkX2FtX3Jlc3VsdCIgPiY2OyB9Ci1y bSAtZiBjb25maW5jIGNvbmZtZgorZXNhYworICBpZiB0ZXN0ICIkYW1fX2luY2x1ZGUiICE9ICIj IjsgdGhlbgorICAgIF9hbV9yZXN1bHQ9InllcyAoJHMgc3R5bGUpIgorICAgIGJyZWFrCisgIGZp Citkb25lCitybSAtZiBjb25maW5jLiogY29uZm1mLioKK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke19hbV9yZXN1bHR9IiA+JjUKKyRhc19lY2hvICIk e19hbV9yZXN1bHR9IiA+JjY7IH0KIAogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWRlcGVuZGVu Y3ktdHJhY2tpbmcgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfZGVwZW5kZW5jeV90cmFj a2luZytzZXR9IiA9IHNldDsgdGhlbiA6CkBAIC0xNzc1OSw3ICsxNzc1OSw3IEBAIENDPSIkQ0Mi CiBDWFg9IiRDWFgiCiBHRk9SVFJBTj0iJEdGT1JUUkFOIgogR0RDPSIkR0RDIgotQU1ERVBfVFJV RT0iJEFNREVQX1RSVUUiIGFjX2F1eF9kaXI9IiRhY19hdXhfZGlyIgorQU1ERVBfVFJVRT0iJEFN REVQX1RSVUUiIE1BS0U9IiR7TUFLRS1tYWtlfSIKIAogCiAjIFRoZSBIUC1VWCBrc2ggYW5kIFBP U0lYIHNoZWxsIHByaW50IHRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIHN0ZG91dApAQCAtMTg3NTEs MjkgKzE4NzUxLDM1IEBAIGVzYWMgOzsKICAgIyBPbGRlciBBdXRvY29uZiBxdW90ZXMgLS1maWxl IGFyZ3VtZW50cyBmb3IgZXZhbCwgYnV0IG5vdCB3aGVuIGZpbGVzCiAgICMgYXJlIGxpc3RlZCB3 aXRob3V0IC0tZmlsZS4gIExldCdzIHBsYXkgc2FmZSBhbmQgb25seSBlbmFibGUgdGhlIGV2YWwK ICAgIyBpZiB3ZSBkZXRlY3QgdGhlIHF1b3RpbmcuCi0gIGNhc2UgJENPTkZJR19GSUxFUyBpbgot ICAqXCcqKSBldmFsIHNldCB4ICIkQ09ORklHX0ZJTEVTIiA7OwotICAqKSAgIHNldCB4ICRDT05G SUdfRklMRVMgOzsKLSAgZXNhYworICAjIFRPRE86IHNlZSB3aGV0aGVyIHRoaXMgZXh0cmEgaGFj ayBjYW4gYmUgcmVtb3ZlZCBvbmNlIHdlIHN0YXJ0CisgICMgcmVxdWlyaW5nIEF1dG9jb25mIDIu NzAgb3IgbGF0ZXIuCisgIGNhc2UgJENPTkZJR19GSUxFUyBpbiAjKAorICAqXCcqKSA6CisgICAg ZXZhbCBzZXQgeCAiJENPTkZJR19GSUxFUyIgOzsgIygKKyAgKikgOgorICAgIHNldCB4ICRDT05G SUdfRklMRVMgOzsgIygKKyAgKikgOgorICAgICA7OworZXNhYwogICBzaGlmdAotICBmb3IgbWYK KyAgIyBVc2VkIHRvIGZsYWcgYW5kIHJlcG9ydCBib290c3RyYXBwaW5nIGZhaWx1cmVzLgorICBh bV9yYz0wCisgIGZvciBhbV9tZgogICBkbwogICAgICMgU3RyaXAgTUYgc28gd2UgZW5kIHVwIHdp dGggdGhlIG5hbWUgb2YgdGhlIGZpbGUuCi0gICAgbWY9YGVjaG8gIiRtZiIgfCBzZWQgLWUgJ3Mv Oi4qJC8vJ2AKLSAgICAjIENoZWNrIHdoZXRoZXIgdGhpcyBpcyBhbiBBdXRvbWFrZSBnZW5lcmF0 ZWQgTWFrZWZpbGUgb3Igbm90LgotICAgICMgV2UgdXNlZCB0byBtYXRjaCBvbmx5IHRoZSBmaWxl cyBuYW1lZCAnTWFrZWZpbGUuaW4nLCBidXQKLSAgICAjIHNvbWUgcGVvcGxlIHJlbmFtZSB0aGVt OyBzbyBpbnN0ZWFkIHdlIGxvb2sgYXQgdGhlIGZpbGUgY29udGVudC4KLSAgICAjIEdyZXAnaW5n IHRoZSBmaXJzdCBsaW5lIGlzIG5vdCBlbm91Z2g6IHNvbWUgcGVvcGxlIHBvc3QtcHJvY2Vzcwot ICAgICMgZWFjaCBNYWtlZmlsZS5pbiBhbmQgYWRkIGEgbmV3IGxpbmUgb24gdG9wIG9mIGVhY2gg ZmlsZSB0byBzYXkgc28uCi0gICAgIyBHcmVwJ2luZyB0aGUgd2hvbGUgZmlsZSBpcyBub3QgZ29v ZCBlaXRoZXI6IEFJWCBncmVwIGhhcyBhIGxpbmUKKyAgICBhbV9tZj1gJGFzX2VjaG8gIiRhbV9t ZiIgfCBzZWQgLWUgJ3MvOi4qJC8vJ2AKKyAgICAjIENoZWNrIHdoZXRoZXIgdGhpcyBpcyBhbiBB dXRvbWFrZSBnZW5lcmF0ZWQgTWFrZWZpbGUgd2hpY2ggaW5jbHVkZXMKKyAgICAjIGRlcGVuZGVu Y3ktdHJhY2tpbmcgcmVsYXRlZCBydWxlcyBhbmQgaW5jbHVkZXMuCisgICAgIyBHcmVwJ2luZyB0 aGUgd2hvbGUgZmlsZSBkaXJlY3RseSBpcyBub3QgZ3JlYXQ6IEFJWCBncmVwIGhhcyBhIGxpbmUK ICAgICAjIGxpbWl0IG9mIDIwNDgsIGJ1dCBhbGwgc2VkJ3Mgd2Uga25vdyBoYXZlIHVuZGVyc3Rh bmQgYXQgbGVhc3QgNDAwMC4KLSAgICBpZiBzZWQgLW4gJ3MsXiMuKmdlbmVyYXRlZCBieSBhdXRv bWFrZS4qLFgscCcgIiRtZiIgfCBncmVwIFggPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgICBk aXJwYXJ0PWAkYXNfZGlybmFtZSAtLSAiJG1mIiB8fAotJGFzX2V4cHIgWCIkbWYiIDogJ1hcKC4q W14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCi0JIFgiJG1mIiA6ICdYXCgvL1wpW14vXScgXHwg XAotCSBYIiRtZiIgOiAnWFwoLy9cKSQnIFx8IFwKLQkgWCIkbWYiIDogJ1hcKC9cKScgXHwgLiAy Pi9kZXYvbnVsbCB8fAotJGFzX2VjaG8gWCIkbWYiIHwKKyAgICBzZWQgLW4gJ3MsXmFtLS1kZXBm aWxlczouKixYLHAnICIkYW1fbWYiIHwgZ3JlcCBYID4vZGV2L251bGwgMj4mMSBcCisgICAgICB8 fCBjb250aW51ZQorICAgIGFtX2RpcnBhcnQ9YCRhc19kaXJuYW1lIC0tICIkYW1fbWYiIHx8Cisk YXNfZXhwciBYIiRhbV9tZiIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkg WCIkYW1fbWYiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisJIFgiJGFtX21mIiA6ICdYXCgvL1wpJCcg XHwgXAorCSBYIiRhbV9tZiIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CiskYXNfZWNo byBYIiRhbV9tZiIgfAogICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97 CiAJICAgIHMvL1wxLwogCSAgICBxCkBAIC0xODc5MSw1MyArMTg3OTcsNDggQEAgJGFzX2VjaG8g WCIkbWYiIHwKIAkgICAgcQogCSAgfQogCSAgcy8uKi8uLzsgcSdgCi0gICAgZWxzZQotICAgICAg Y29udGludWUKLSAgICBmaQotICAgICMgRXh0cmFjdCB0aGUgZGVmaW5pdGlvbiBvZiBERVBESVIs IGFtX19pbmNsdWRlLCBhbmQgYW1fX3F1b3RlCi0gICAgIyBmcm9tIHRoZSBNYWtlZmlsZSB3aXRo b3V0IHJ1bm5pbmcgJ21ha2UnLgotICAgIERFUERJUj1gc2VkIC1uICdzL15ERVBESVIgPSAvL3An IDwgIiRtZiJgCi0gICAgdGVzdCAteiAiJERFUERJUiIgJiYgY29udGludWUKLSAgICBhbV9faW5j bHVkZT1gc2VkIC1uICdzL15hbV9faW5jbHVkZSA9IC8vcCcgPCAiJG1mImAKLSAgICB0ZXN0IC16 ICIkYW1fX2luY2x1ZGUiICYmIGNvbnRpbnVlCi0gICAgYW1fX3F1b3RlPWBzZWQgLW4gJ3MvXmFt X19xdW90ZSA9IC8vcCcgPCAiJG1mImAKLSAgICAjIEZpbmQgYWxsIGRlcGVuZGVuY3kgb3V0cHV0 IGZpbGVzLCB0aGV5IGFyZSBpbmNsdWRlZCBmaWxlcyB3aXRoCi0gICAgIyAkKERFUERJUikgaW4g dGhlaXIgbmFtZXMuICBXZSBpbnZva2Ugc2VkIHR3aWNlIGJlY2F1c2UgaXQgaXMgdGhlCi0gICAg IyBzaW1wbGVzdCBhcHByb2FjaCB0byBjaGFuZ2luZyAkKERFUERJUikgdG8gaXRzIGFjdHVhbCB2 YWx1ZSBpbiB0aGUKLSAgICAjIGV4cGFuc2lvbi4KLSAgICBmb3IgZmlsZSBpbiBgc2VkIC1uICIK LSAgICAgIHMvXiRhbV9faW5jbHVkZSAkYW1fX3F1b3RlXCguKihERVBESVIpLipcKSRhbV9fcXVv dGUiJyQvXDEvcCcgPCIkbWYiIHwgXAotCSBzZWQgLWUgJ3MvXCQoREVQRElSKS8nIiRERVBESVIi Jy9nJ2A7IGRvCi0gICAgICAjIE1ha2Ugc3VyZSB0aGUgZGlyZWN0b3J5IGV4aXN0cy4KLSAgICAg IHRlc3QgLWYgIiRkaXJwYXJ0LyRmaWxlIiAmJiBjb250aW51ZQotICAgICAgZmRpcj1gJGFzX2Rp cm5hbWUgLS0gIiRmaWxlIiB8fAotJGFzX2V4cHIgWCIkZmlsZSIgOiAnWFwoLipbXi9dXCkvLypb Xi9dW14vXSovKiQnIFx8IFwKLQkgWCIkZmlsZSIgOiAnWFwoLy9cKVteL10nIFx8IFwKLQkgWCIk ZmlsZSIgOiAnWFwoLy9cKSQnIFx8IFwKLQkgWCIkZmlsZSIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rl di9udWxsIHx8Ci0kYXNfZWNobyBYIiRmaWxlIiB8Ci0gICAgc2VkICcvXlhcKC4qW14vXVwpXC9c LypbXi9dW14vXSpcLyokL3sKLQkgICAgcy8vXDEvCi0JICAgIHEKLQkgIH0KLQkgIC9eWFwoXC9c L1wpW14vXS4qL3sKKyAgICBhbV9maWxlcGFydD1gJGFzX2Jhc2VuYW1lIC0tICIkYW1fbWYiIHx8 CiskYXNfZXhwciBYLyIkYW1fbWYiIDogJy4qL1woW14vXVteL10qXCkvKiQnIFx8IFwKKwkgWCIk YW1fbWYiIDogJ1hcKC8vXCkkJyBcfCBcCisJIFgiJGFtX21mIiA6ICdYXCgvXCknIFx8IC4gMj4v ZGV2L251bGwgfHwKKyRhc19lY2hvIFgvIiRhbV9tZiIgfAorICAgIHNlZCAnL14uKlwvXChbXi9d W14vXSpcKVwvKiQvewogCSAgICBzLy9cMS8KIAkgICAgcQogCSAgfQotCSAgL15YXChcL1wvXCkk L3sKKwkgIC9eWFwvXChcL1wvXCkkL3sKIAkgICAgcy8vXDEvCiAJICAgIHEKIAkgIH0KLQkgIC9e WFwoXC9cKS4qL3sKKwkgIC9eWFwvXChcL1wpLiovewogCSAgICBzLy9cMS8KIAkgICAgcQogCSAg fQogCSAgcy8uKi8uLzsgcSdgCi0gICAgICBhc19kaXI9JGRpcnBhcnQvJGZkaXI7IGFzX2ZuX21r ZGlyX3AKLSAgICAgICMgZWNobyAiY3JlYXRpbmcgJGRpcnBhcnQvJGZpbGUiCi0gICAgICBlY2hv ICcjIGR1bW15JyA+ICIkZGlycGFydC8kZmlsZSIKLSAgICBkb25lCisgICAgeyBlY2hvICIkYXNf bWU6JExJTkVOTzogY2QgIiRhbV9kaXJwYXJ0IiBcCisgICAgICAmJiBzZWQgLWUgJy8jIGFtLS1p bmNsdWRlLW1hcmtlci9kJyAiJGFtX2ZpbGVwYXJ0IiBcCisgICAgICAgIHwgJE1BS0UgLWYgLSBh bS0tZGVwZmlsZXMiID4mNQorICAgKGNkICIkYW1fZGlycGFydCIgXAorICAgICAgJiYgc2VkIC1l ICcvIyBhbS0taW5jbHVkZS1tYXJrZXIvZCcgIiRhbV9maWxlcGFydCIgXAorICAgICAgICB8ICRN QUtFIC1mIC0gYW0tLWRlcGZpbGVzKSA+JjUgMj4mNQorICAgYWNfc3RhdHVzPSQ/CisgICBlY2hv ICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgICAoZXhpdCAkYWNfc3Rh dHVzKTsgfSB8fCBhbV9yYz0kPwogICBkb25lCisgIGlmIHRlc3QgJGFtX3JjIC1uZSAwOyB0aGVu CisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBp biBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdk JzoiID4mMjt9Cithc19mbl9lcnJvciAkPyAiU29tZXRoaW5nIHdlbnQgd3JvbmcgYm9vdHN0cmFw cGluZyBtYWtlZmlsZSBmcmFnbWVudHMKKyAgICBmb3IgYXV0b21hdGljIGRlcGVuZGVuY3kgdHJh Y2tpbmcuICBUcnkgcmUtcnVubmluZyBjb25maWd1cmUgd2l0aCB0aGUKKyAgICAnLS1kaXNhYmxl LWRlcGVuZGVuY3ktdHJhY2tpbmcnIG9wdGlvbiB0byBhdCBsZWFzdCBiZSBhYmxlIHRvIGJ1aWxk CisgICAgdGhlIHBhY2thZ2UgKGFsYmVpdCB3aXRob3V0IHN1cHBvcnQgZm9yIGF1dG9tYXRpYyBk ZXBlbmRlbmN5IHRyYWNraW5nKS4KK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMi ICIkTElORU5PIiA1OyB9CisgIGZpCisgIHsgYW1fZGlycGFydD07IHVuc2V0IGFtX2RpcnBhcnQ7 fQorICB7IGFtX2ZpbGVwYXJ0PTsgdW5zZXQgYW1fZmlsZXBhcnQ7fQorICB7IGFtX21mPTsgdW5z ZXQgYW1fbWY7fQorICB7IGFtX3JjPTsgdW5zZXQgYW1fcmM7fQorICBybSAtZiBjb25mdGVzdC1k ZXBzLm1rCiB9CiAgOzsKICAgICAibGlidG9vbCI6QykKZGlmZiAtLWdpdCBhL2xpYmdvbXAvb21w ZC1zdXBwb3J0LmMgYi9saWJnb21wL29tcGQtc3VwcG9ydC5jCmluZGV4IDI3YzVhZDE0OGUwLi5l NzY5ZTU1ZmQwZiAxMDA2NDQKLS0tIGEvbGliZ29tcC9vbXBkLXN1cHBvcnQuYworKysgYi9saWJn b21wL29tcGQtc3VwcG9ydC5jCkBAIC0zMyw2ICszMyw4IEBAIGNvbnN0IHVuc2lnbmVkIHNob3J0 IGdvbXBkX3NpemVvZl9nb21wX3RocmVhZF9oYW5kbGUKICAgX19hdHRyaWJ1dGVfXyAoKHVzZWQp KSBPTVBEX1NFQ1RJT04gPSAwOwogI2VuZGlmCiAKK3Vuc2lnbmVkIGxvbmcgZ29tcGRfdGhyZWFk X2luaXRpYWxfdGxzX2JpYXMgX19hdHRyaWJ1dGVfXyAoKHVzZWQpKTsKKwogLyogR2V0IG9mZnNl dCBvZiB0aGUgbWVtYmVyIG0gaW4gc3RydWN0IHQuICAqLwogI2RlZmluZSBnb21wZF9nZXRfb2Zm c2V0KHQsIG0pIFwKICAgY29uc3QgdW5zaWduZWQgc2hvcnQgZ29tcGRfYWNjZXNzXyMjdCMjXyMj bSBfX2F0dHJpYnV0ZV9fICgodXNlZCkpIFwKQEAgLTY3LDYgKzY5LDkgQEAgZ29tcGRfbG9hZCAo dm9pZCkKICAgZ29tcGRfc3RhdGUgfD0gT01QRF9FTkFCTEVEOwogICBvbXBkX2RsbF9sb2NhdGlv bnMgPSAmb21wZF9kbGxfbG9jYXRpb25zX2FycmF5WzBdOwogICBvbXBkX2RsbF9sb2NhdGlvbnNf dmFsaWQgKCk7CisKKyAgZ29tcGRfdGhyZWFkX2luaXRpYWxfdGxzX2JpYXMgPSAodW5zaWduZWQg bG9uZykgKChjaGFyICopICZnb21wX3Rsc19kYXRhCisgIAkJCQkJCSAgIC0gKGNoYXIgKikgcHRo cmVhZF9zZWxmICgpKTsKIH0KIAogI2lmbmRlZiBfX0VMRl9fCmRpZmYgLS1naXQgYS9saWJnb21w L29tcGQtdGhyZWFkcy5jIGIvbGliZ29tcC9vbXBkLXRocmVhZHMuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDM2YTdkNjE3ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9s aWJnb21wL29tcGQtdGhyZWFkcy5jCkBAIC0wLDAgKzEsMjE2IEBACisvKiBDb3B5cmlnaHQgKEMp IFRoZSBHTlUgVG9vbGNoYWluIEF1dGhvcnMuCisgICBDb250cmlidXRlZCBieSBBaG1lZCBTYXll ZCA8YWhtZWRzYXllZG1vdXNzZUBnbWFpbC5jb20+LgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg dGhlIEdOVSBPZmZsb2FkaW5nIGFuZCBNdWx0aSBQcm9jZXNzaW5nIExpYnJhcnkKKyAgIChsaWJn b21wKS4KKworICAgTGliZ29tcCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55 IGxhdGVyIHZlcnNpb24uCisKKyAgIExpYmdvbXAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCisgICBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTCisgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvcgorICAgbW9yZSBkZXRhaWxzLgorCisgICBVbmRlciBTZWN0aW9uIDcg b2YgR1BMIHZlcnNpb24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKyAgIHBlcm1pc3Np b25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24sIHZlcnNp b24KKyAgIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24u CisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFuZAorICAgYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5 IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKyAgIHNlZSB0aGUgZmlsZXMgQ09Q WUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworLyogVGhpcyBmaWxlIGNvbnRh aW5zIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbgorICAgU2VjdGlv biA1LjUgVGhyZWFkSGFuZGxlcy4gKi8KKworCisjaW5jbHVkZSAib21wZC1oZWxwZXIuaCIKKwor b21wZF9yY190CitvbXBkX2dldF90aHJlYWRfaW5fcGFyYWxsZWwgKG9tcGRfcGFyYWxsZWxfaGFu ZGxlX3QgKnBhcmFsbGVsX2hhbmRsZSwKKwkJCSAgICAgaW50IHRocmVhZF9udW0sCisJCQkgICAg IG9tcGRfdGhyZWFkX2hhbmRsZV90ICoqdGhyZWFkX2hhbmRsZSkKK3sKKworICBpZiAocGFyYWxs ZWxfaGFuZGxlID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfc3RhbGVfaGFuZGxlOworICBD SEVDSyAocGFyYWxsZWxfaGFuZGxlLT5haCk7CisKKyAgb21wZF9hZGRyZXNzX3NwYWNlX2NvbnRl eHRfdCAqY29udGV4dCA9IHBhcmFsbGVsX2hhbmRsZS0+YWgtPmNvbnRleHQ7CisgIG9tcGRfcmNf dCByZXQ7CisKKyAgb21wZF93b3JkX3QgdGVhbV9zaXplX3ZhciA9IDE7CisgIGlmIChwYXJhbGxl bF9oYW5kbGUtPnRoLmFkZHJlc3MpCisgICAgZ29tcGRfZ2V0X3RlYW1fc2l6ZShwYXJhbGxlbF9o YW5kbGUsICZ0ZWFtX3NpemVfdmFyKTsKKworICBpZiAodGhyZWFkX251bSA8IDAgfHwgdGhyZWFk X251bSA+PSB0ZWFtX3NpemVfdmFyKQorICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsKKwor ICBvbXBkX3dvcmRfdCB0ZW1wX29mZnNldDsKKyAgb21wZF9hZGRyZXNzX3QgdGVtcF9zeW1ib2xf YWRkciwgc3ltYm9sX2FkZHIgPSB7T01QRF9TRUdNRU5UX1VOU1BFQ0lGSUVELCAwfTsKKyAgb21w ZF9hZGRyX3QgdGVtcF9hZGRyOworCisgIEFDQ0VTU19WQUxVRSAoY29udGV4dCwgTlVMTCwgImdv bXBkX2FjY2Vzc19nb21wX3RocmVhZF9wb29sX3RocmVhZHMiLAorCQl0ZW1wX29mZnNldCwgMSwg cmV0LCBzeW1ib2xfYWRkciwgdGVtcF9zeW1ib2xfYWRkciwgdGVtcF9hZGRyKTsKKworICBzeW1i b2xfYWRkci5hZGRyZXNzICs9IHRocmVhZF9udW0gKiB0YXJnZXRfc2l6ZXMuc2l6ZW9mX3BvaW50 ZXI7CisKKyAgREVSRUZFUkVOQ0UgKGNvbnRleHQsIE5VTEwsIHN5bWJvbF9hZGRyLCB0YXJnZXRf c2l6ZXMuc2l6ZW9mX3BvaW50ZXIsIDEsCisJICAgICAgIHRlbXBfYWRkciwgcmV0LCAxKTsKKwor ICByZXQgPSBjYWxsYmFja3MtPmFsbG9jX21lbW9yeSAoc2l6ZW9mIChvbXBkX3RocmVhZF9oYW5k bGVfdCksCisJCQkJICh2b2lkICoqKSB0aHJlYWRfaGFuZGxlKTsKKworICBDSEVDS19SRVQgKHJl dCk7CisKKyAgaWYgKHN5bWJvbF9hZGRyLmFkZHJlc3MgPT0gMCkKKyAgICByZXR1cm4gb21wZF9y Y191bnN1cHBvcnRlZDsKKworICAoKnRocmVhZF9oYW5kbGUpLT50aCA9IHN5bWJvbF9hZGRyOwor ICAoKnRocmVhZF9oYW5kbGUpLT5haCA9IHBhcmFsbGVsX2hhbmRsZS0+YWg7CisgIHJldHVybiBy ZXQ7Cit9CisKKy8qIFRoZSBvbXBkX2dldF90aHJlYWRfaGFuZGxlIGZ1bmN0aW9uIHRoYXQgbWFw cyBhIG5hdGl2ZSB0aHJlYWQgdG8gYW4KKyAgIE9NUEQgdGhyZWFkIGhhbmRsZS4gICovCisKK29t cGRfcmNfdAorb21wZF9nZXRfdGhyZWFkX2hhbmRsZSAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRs ZV90ICpoYW5kbGUsCisJCQlvbXBkX3RocmVhZF9pZF90IGtpbmQsIG9tcGRfc2l6ZV90IHNpemVv Zl90aHJlYWRfaWQsCisJCQljb25zdCB2b2lkICp0aHJlYWRfaWQsCisJCQlvbXBkX3RocmVhZF9o YW5kbGVfdCAqKnRocmVhZF9oYW5kbGUpCit7CisgIENIRUNLIChoYW5kbGUpOworICBpZiAoa2lu ZCAhPSBPTVBEX1RIUkVBRF9JRF9QVEhSRUFEKQorICAgIHJldHVybiBvbXBkX3JjX3Vuc3VwcG9y dGVkOworCisgIG9tcGRfYWRkcmVzc19zcGFjZV9jb250ZXh0X3QgKmNvbnRleHQgPSBoYW5kbGUt PmNvbnRleHQ7CisgIG9tcGRfdGhyZWFkX2NvbnRleHRfdCAqdGNvbnRleHQ7CisgIG9tcGRfcmNf dCByZXQ7CisKKyAgcmV0ID0gY2FsbGJhY2tzLT5nZXRfdGhyZWFkX2NvbnRleHRfZm9yX3RocmVh ZF9pZCAoY29udGV4dCwga2luZCwKKwkJCQkJCSAgICAgc2l6ZW9mX3RocmVhZF9pZCwKKwkJCQkJ CSAgICAgdGhyZWFkX2lkLCAmdGNvbnRleHQpOworICBDSEVDS19SRVQgKHJldCk7CisKKyAgb21w ZF9zaXplX3QgdGVtcF9zeW1ib2xfc2l6ZSwgc3ltYm9sX3NpemU7CisgIG9tcGRfYWRkcmVzc190 IHRlbXBfc3ltYm9sX2FkZHIsIHN5bWJvbF9hZGRyID0ge09NUERfU0VHTUVOVF9VTlNQRUNJRklF RCwgMH07CisKKyAgR0VUX1ZBTFVFIChjb250ZXh0LCBOVUxMLCAiZ29tcGRfc2l6ZW9mX2dvbXBf dGhyZWFkIiwgc3ltYm9sX3NpemUsCisJICAgICB0ZW1wX3N5bWJvbF9zaXplLCB0YXJnZXRfc2l6 ZXMuc2l6ZW9mX3Nob3J0LCAxLCByZXQsCisJICAgICB0ZW1wX3N5bWJvbF9hZGRyKTsKKworICBH RVRfVkFMVUUgKGNvbnRleHQsIHRjb250ZXh0LCAiZ29tcF90bHNfZGF0YSIsIHN5bWJvbF9hZGRy LmFkZHJlc3MsCisJICAgICB0ZW1wX3N5bWJvbF9hZGRyLmFkZHJlc3MsIHN5bWJvbF9zaXplLCAx LCByZXQsIHN5bWJvbF9hZGRyKTsKKworICByZXQgPSBjYWxsYmFja3MtPmFsbG9jX21lbW9yeSAo c2l6ZW9mIChvbXBkX3RocmVhZF9oYW5kbGVfdCksCisJCQkJICh2b2lkICoqKSB0aHJlYWRfaGFu ZGxlKTsKKworICBDSEVDS19SRVQgKHJldCk7CisKKyAgKCp0aHJlYWRfaGFuZGxlKS0+YWggPSBo YW5kbGU7CisgICgqdGhyZWFkX2hhbmRsZSktPnRoID0gc3ltYm9sX2FkZHI7CisgICgqdGhyZWFk X2hhbmRsZSktPnRocmVhZF9jb250ZXh0ID0gdGNvbnRleHQ7CisgIHJldHVybiByZXQ7Cit9CisK Kworb21wZF9yY190CitvbXBkX3JlbF90aHJlYWRfaGFuZGxlIChvbXBkX3RocmVhZF9oYW5kbGVf dCAqdGhyZWFkX2hhbmRsZSkKK3sKKyAgaWYgKHRocmVhZF9oYW5kbGUgPT0gTlVMTCkKKyAgICBy ZXR1cm4gb21wZF9yY19zdGFsZV9oYW5kbGU7CisKKyAgb21wZF9yY190IHJldDsKKyAgcmV0ID0g Y2FsbGJhY2tzLT5mcmVlX21lbW9yeSAoKHZvaWQgKikgdGhyZWFkX2hhbmRsZSk7CisgIGlmIChy ZXQgIT0gb21wZF9yY19vaykKKyAgcmV0dXJuIHJldDsKKworICByZXR1cm4gb21wZF9yY19vazsK K30KKworCisvKiByZXR1cm4gLTEsIDAgb3IgMSBmb3IgdGhyZWFkX2hhbmRsZV8xIDwsID09IG9y ID4gdGhyZWFkX2hhbmRsZV8yLiAgKi8KK29tcGRfcmNfdAorb21wZF90aHJlYWRfaGFuZGxlX2Nv bXBhcmUgKG9tcGRfdGhyZWFkX2hhbmRsZV90ICp0aHJlYWRfaGFuZGxlXzEsCisJCQkgICAgb21w ZF90aHJlYWRfaGFuZGxlX3QgKnRocmVhZF9oYW5kbGVfMiwKKwkJCSAgICBpbnQJKmNtcF92YWx1 ZSApCit7CisKKyAgaWYgKHRocmVhZF9oYW5kbGVfMSA9PSBOVUxMIHx8IHRocmVhZF9oYW5kbGVf MiA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX3N0YWxlX2hhbmRsZTsKKyAgaWYgKGNtcF92 YWx1ZSA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsKKyAgaWYgKHRocmVh ZF9oYW5kbGVfMS0+YWgtPmtpbmQgIT0gdGhyZWFkX2hhbmRsZV8yLT5haC0+a2luZCkKKyAgICBy ZXR1cm4gb21wZF9yY19iYWRfaW5wdXQ7CisKKyAgKmNtcF92YWx1ZSA9IHRocmVhZF9oYW5kbGVf MS0+dGguYWRkcmVzcyAtIHRocmVhZF9oYW5kbGVfMi0+dGguYWRkcmVzczsKKyAgcmV0dXJuIG9t cGRfcmNfb2s7Cit9CisKKworb21wZF9yY190CitvbXBkX2dldF90aHJlYWRfaWQgKG9tcGRfdGhy ZWFkX2hhbmRsZV90ICp0aHJlYWRfaGFuZGxlLCBvbXBkX3RocmVhZF9pZF90IGtpbmQsCisJCSAg ICBvbXBkX3NpemVfdCBzaXplb2ZfdGhyZWFkX2lkLCB2b2lkICp0aHJlYWRfaWQpCit7CisgIGlm IChraW5kICE9IE9NUERfVEhSRUFEX0lEX1BUSFJFQUQpCisgICAgcmV0dXJuIG9tcGRfcmNfdW5z dXBwb3J0ZWQ7CisgIGlmICh0aHJlYWRfaWQgPT0gTlVMTCkKKyAgICByZXR1cm4gb21wZF9yY19i YWRfaW5wdXQ7CisgIGlmICh0aHJlYWRfaGFuZGxlID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRf cmNfc3RhbGVfaGFuZGxlOworCisgIENIRUNLICh0aHJlYWRfaGFuZGxlLT5haCk7CisgIG9tcGRf YWRkcmVzc19zcGFjZV9jb250ZXh0X3QgKmNvbnRleHQgPSB0aHJlYWRfaGFuZGxlLT5haC0+Y29u dGV4dDsKKworICBvbXBkX3JjX3QgcmV0OworICBvbXBkX2FkZHJlc3NfdCB0YWRkciA9IHRocmVh ZF9oYW5kbGUtPnRoOworICBvbXBkX2FkZHJlc3NfdCB0ZW1wX3N5bWJvbF9hZGRyLCBzeW1ib2xf YWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVDSUZJRUQsIDB9OworICBvbXBkX3NpemVfdCB0ZW1w X3N5bWJvbF9zaXplLCBzeW1ib2xfc2l6ZTsKKyAgb21wZF93b3JkX3QgdGVtcF9vZmZzZXQsIG9m ZnNldDsKKworICBHRVRfVkFMVUUgKGNvbnRleHQsIE5VTEwsICJnb21wZF9zaXplb2ZfZ29tcF90 aHJlYWRfaGFuZGxlIiwgc3ltYm9sX3NpemUsCisJICAgICB0ZW1wX3N5bWJvbF9zaXplLCB0YXJn ZXRfc2l6ZXMuc2l6ZW9mX3Nob3J0LCAxLCByZXQsIHN5bWJvbF9hZGRyKTsKKworICBpZiAoc3lt Ym9sX3NpemUgPT0gMCkKKyAgICBnb3RvIHVzZV90bHNfYmlhczsKKworICBpZiAoc2l6ZW9mX3Ro cmVhZF9pZCAhPSBzeW1ib2xfc2l6ZSkKKyAgICByZXR1cm4gb21wZF9yY19iYWRfaW5wdXQ7CisK KyAgR0VUX1ZBTFVFIChjb250ZXh0LCBOVUxMLCAiZ29tcGRfYWNjZXNzX2dvbXBfdGhyZWFkX2hh bmRsZSIsIG9mZnNldCwKKwkgICAgIHRlbXBfb2Zmc2V0LCB0YXJnZXRfc2l6ZXMuc2l6ZW9mX3No b3J0LCAxLCByZXQsIHN5bWJvbF9hZGRyKTsKKyAgdGFkZHIuYWRkcmVzcyArPSBvZmZzZXQ7CisK KyAgcmV0ID0gY2FsbGJhY2tzLT5yZWFkX21lbW9yeSAoY29udGV4dCwgTlVMTCwgJnRhZGRyLCBz eW1ib2xfc2l6ZSwgdGhyZWFkX2lkKTsKKyAgcmV0dXJuIHJldDsKKwordXNlX3Rsc19iaWFzOgor CisgIEdFVF9WQUxVRSAoY29udGV4dCwgTlVMTCwgImdvbXBkX3RocmVhZF9pbml0aWFsX3Rsc19i aWFzIiwgb2Zmc2V0LCB0ZW1wX29mZnNldCwKKwkgICAgIHRhcmdldF9zaXplcy5zaXplb2ZfbG9u ZywgMSwgcmV0LCBzeW1ib2xfYWRkcik7CisKKyAgcmV0ID0gY2FsbGJhY2tzLT5zeW1ib2xfYWRk cl9sb29rdXAgKGNvbnRleHQsIE5VTEwsImdvbXBfdGxzX2RhdGEiLAorCQkJCSAgICAgICAmc3lt Ym9sX2FkZHIsIE5VTEwpOworICByZXQgPSBjYWxsYmFja3MtPmRldmljZV90b19ob3N0IChjb250 ZXh0LCAmdGVtcF9zeW1ib2xfYWRkci5hZGRyZXNzLAorCQkJCSAgIHRhcmdldF9zaXplcy5zaXpl b2ZfbG9uZ19sb25nLCAxLAorCQkJCSAgICZzeW1ib2xfYWRkci5hZGRyZXNzKTsKKyAgQ0hFQ0tf UkVUIChyZXQpOworCisgIHRhZGRyLmFkZHJlc3MgPSBzeW1ib2xfYWRkci5hZGRyZXNzICsgb2Zm c2V0OworICByZXQgPSBjYWxsYmFja3MtPnJlYWRfbWVtb3J5IChjb250ZXh0LCBOVUxMLCAmdGFk ZHIsCisJCQkJdGFyZ2V0X3NpemVzLnNpemVvZl9sb25nX2xvbmcsIHRocmVhZF9pZCk7CisgIHJl dHVybiByZXQ7Cit9CisKKworLyogT01QRCBkb2Vzbid0IHN1cHBvcnQgR1BVcyBmb3Igbm93LiAg Ki8KK29tcGRfcmNfdCBvbXBkX2dldF9kZXZpY2VfZnJvbV90aHJlYWQgKG9tcGRfdGhyZWFkX2hh bmRsZV90ICp0aHJlYWRfaGFuZGxlLAorCQkJCSAgICAgICBvbXBkX2FkZHJlc3Nfc3BhY2VfaGFu ZGxlX3QgKipkZXZpY2UpCit7CisgIGlmICh0aHJlYWRfaGFuZGxlID09IE5VTEwpCisgICAgcmV0 dXJuIG9tcGRfcmNfc3RhbGVfaGFuZGxlOworICByZXR1cm4gb21wZF9yY191bnN1cHBvcnRlZDsK K30KZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVhbS5jIGIvbGliZ29tcC90ZWFtLmMKaW5kZXggZDUz MjQ2OTYxYjcuLjhlMThmZDZhZjYzIDEwMDY0NAotLS0gYS9saWJnb21wL3RlYW0uYworKysgYi9s aWJnb21wL3RlYW0uYwpAQCAtNzcsNiArNzcsNyBAQCBnb21wX3RocmVhZF9zdGFydCAodm9pZCAq eGRhdGEpCiAgIHZvaWQgKmxvY2FsX2RhdGE7CiAKICAgb21wZF9icF90aHJlYWRfYmVnaW4gKCk7 CisKICNpZiBkZWZpbmVkIEhBVkVfVExTIHx8IGRlZmluZWQgVVNFX0VNVVRMUwogICB0aHIgPSAm Z29tcF90bHNfZGF0YTsKICNlbHNlCkBAIC0zMTMsNiArMzE0LDkgQEAgZ29tcF9mcmVlX3RocmVh ZCAodm9pZCAqYXJnIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKQogICAgICAgZ29tcF9lbmRfdGFz ayAoKTsKICAgICAgIGZyZWUgKHRhc2spOwogICAgIH0KKworICBvbXBkX2JwX3RocmVhZF9lbmQg KCk7CisKIH0KIAogLyogTGF1bmNoIGEgdGVhbS4gICovCmRpZmYgLS1naXQgYS9saWJnb21wL3Rl c3RzdWl0ZS9NYWtlZmlsZS5pbiBiL2xpYmdvbXAvdGVzdHN1aXRlL01ha2VmaWxlLmluCmluZGV4 IDA0ODg0NGYwYTQwLi43NmNkMDliMGZhZiAxMDA2NDQKLS0tIGEvbGliZ29tcC90ZXN0c3VpdGUv TWFrZWZpbGUuaW4KKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KQEAgLTkwLDIx ICs5MCw4IEBAIGhvc3RfdHJpcGxldCA9IEBob3N0QAogdGFyZ2V0X3RyaXBsZXQgPSBAdGFyZ2V0 QAogc3ViZGlyID0gdGVzdHN1aXRlCiBBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2Fs Lm00Ci1hbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS8uLi9jb25maWcvYWN4Lm00 IFwKLQkkKHRvcF9zcmNkaXIpLy4uL2NvbmZpZy9heF9jb3VudF9jcHVzLm00IFwKLQkkKHRvcF9z cmNkaXIpLy4uL2NvbmZpZy9kZXBzdGFuZC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS8uLi9jb25maWcv ZW5hYmxlLm00IFwKLQkkKHRvcF9zcmNkaXIpLy4uL2NvbmZpZy9mdXRleC5tNCBcCi0JJCh0b3Bf c3JjZGlyKS8uLi9jb25maWcvbGVhZC1kb3QubTQgXAotCSQodG9wX3NyY2RpcikvLi4vY29uZmln L2x0aG9zdGZsYWdzLm00IFwKLQkkKHRvcF9zcmNkaXIpLy4uL2NvbmZpZy9tdWx0aS5tNCBcCi0J JCh0b3Bfc3JjZGlyKS8uLi9jb25maWcvb3ZlcnJpZGUubTQgXAotCSQodG9wX3NyY2RpcikvLi4v Y29uZmlnL3Rscy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS8uLi9jb25maWcvdG9vbGV4ZWNsaWJkaXIu bTQgXAotCSQodG9wX3NyY2RpcikvLi4vbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvLi4vbHRz dWdhci5tNCBcCi0JJCh0b3Bfc3JjZGlyKS8uLi9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS8u Li9sdH5vYnNvbGV0ZS5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9hY2luY2x1ZGUubTQgJCh0b3Bfc3Jj ZGlyKS8uLi9saWJ0b29sLm00IFwKLQkkKHRvcF9zcmNkaXIpLy4uL2NvbmZpZy9jZXQubTQgXAor YW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2RpcikvYWNpbmNsdWRlLm00IFwKKwkkKHRv cF9zcmNkaXIpLy4uL2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS8uLi9jb25maWcvY2V0Lm00IFwK IAkkKHRvcF9zcmNkaXIpL3BsdWdpbi9jb25maWdmcmFnLmFjICQodG9wX3NyY2RpcikvY29uZmln dXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09O RklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKQEAgLTI0OSw3ICsyMzYsNiBA QCBkdmlkaXIgPSBAZHZpZGlyQAogZW5hYmxlX3NoYXJlZCA9IEBlbmFibGVfc2hhcmVkQAogZW5h YmxlX3N0YXRpYyA9IEBlbmFibGVfc3RhdGljQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhA Ci1nZXRfZ2NjX2Jhc2VfdmVyID0gQGdldF9nY2NfYmFzZV92ZXJACiBob3N0ID0gQGhvc3RACiBo b3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTI2NSwx MCArMjUxLDggQEAgbGlidG9vbF9WRVJTSU9OID0gQGxpYnRvb2xfVkVSU0lPTkAKIGxpbmtfZ29t cCA9IEBsaW5rX2dvbXBACiBsb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAogbG9jYWxzdGF0ZWRpciA9 IEBsb2NhbHN0YXRlZGlyQAotbHRfaG9zdF9mbGFncyA9IEBsdF9ob3N0X2ZsYWdzQAogbWFuZGly ID0gQG1hbmRpckAKIG1rZGlyX3AgPSBAbWtkaXJfcEAKLW11bHRpX2Jhc2VkaXIgPSBAbXVsdGlf YmFzZWRpckAKIG9mZmxvYWRfYWRkaXRpb25hbF9saWJfcGF0aHMgPSBAb2ZmbG9hZF9hZGRpdGlv bmFsX2xpYl9wYXRoc0AKIG9mZmxvYWRfYWRkaXRpb25hbF9vcHRpb25zID0gQG9mZmxvYWRfYWRk aXRpb25hbF9vcHRpb25zQAogb2ZmbG9hZF9wbHVnaW5zID0gQG9mZmxvYWRfcGx1Z2luc0AKQEAg LTI3OCw2ICsyNjIsNyBAQCBwZGZkaXIgPSBAcGRmZGlyQAogcHJlZml4ID0gQHByZWZpeEAKIHBy b2dyYW1fdHJhbnNmb3JtX25hbWUgPSBAcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZUAKIHBzZGlyID0g QHBzZGlyQAorcnVuc3RhdGVkaXIgPSBAcnVuc3RhdGVkaXJACiBzYmluZGlyID0gQHNiaW5kaXJA CiBzaGFyZWRzdGF0ZWRpciA9IEBzaGFyZWRzdGF0ZWRpckAKIHNyY2RpciA9IEBzcmNkaXJACg== --000000000000dd0aa905e300a831--