From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.0 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FROM,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,URI_HEX autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 2339 invoked from network); 11 Jan 2021 05:34:20 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 11 Jan 2021 05:34:20 -0000 Received: (qmail 9985 invoked by uid 550); 11 Jan 2021 05:34:15 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 9955 invoked from network); 11 Jan 2021 05:34:14 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=fZhpqK4EIGyYPFkaYrvzPpVSwX7ADlbkoqKk8CriG5I=; b=Xl0IE5r3ciLAlr2OTSj3NfGyWxPCPkq45bh4ixN4t5zZ0x54Nh4LW+ZEGqT0zRpAbP JJw6yIhlLOKqEpbBwuqyCk6CCSiNM+iCEeCP0nZ7vNxKNQacwddV0yohdfp4hSH/krER OtcZJ5YZKkWGzTcFTKPb24MAG5RxXZ0rJvyfBJ24LJgX4YJUVwoI04rKUpCKXBjGCCx7 d5qD4JvLfC2IDZCwerWYFmEUxBLuMnlDatq9vYg/SdW1YOJN93erbsgUMcA17hH/R9XJ fr4MyolhDReLLQLVu6x56UtHHzROCc9fAb6kJf3RvL4ofuCICkKbnBLXJwGjzx5YLIUt BgNA== 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=fZhpqK4EIGyYPFkaYrvzPpVSwX7ADlbkoqKk8CriG5I=; b=gblTwSxTcKBboQStBhRlgdZ9/3ppubcBZssFGKXEh7mTpU/0nFGgtFF/8aqCiH+Xln EbrVVpwtCifIp+2XYNn+VQwYIcqmTw42zkLrO8iNgNUZjjzi8kyRWy+DvlwbmcaD3yDP 5MDEM+wouOqqmSvotbM0DDNv9PATl5BqUmTUVcUiLZjJPf4iI+xqzzkvIIDxlEko5Mqn ZrOBt9vMaNE4l+22Rr8sH67rDeEglJp3WBjwT7gexJZ0cWQqpcEp7WbG1gCpq1S/j15E BOdvJC94b/7VhaqDlpzXtHnC7U+q7aAJj9cz2E3xLhWdm8ghdSuo1BAWUteXeF+vlLbY EQsA== X-Gm-Message-State: AOAM530L/+8nD2gm+ivQIDzppHCsHFYkdnhzayocOomLzEenEzOBhQHQ bjxC14OiH8IcwR23ZC5rRuDs524tGE4EQWfv7wLf8UuG/5nXmQ== X-Google-Smtp-Source: ABdhPJwaaFgnbw9xVnMrkUar3Mcwunghy6d8eMS07+7YJj5AzprmgR19vxwjGaH2XOe115XRdn/YrLN5qbDsUTTdjfM= X-Received: by 2002:a17:906:a00a:: with SMTP id p10mr9784852ejy.312.1610343242449; Sun, 10 Jan 2021 21:34:02 -0800 (PST) MIME-Version: 1.0 From: Patrick Oppenlander Date: Mon, 11 Jan 2021 16:33:51 +1100 Message-ID: To: musl@lists.openwall.com Content-Type: multipart/mixed; boundary="000000000000eee85f05b89940fc" Subject: [musl] [PATCH] llvm/clang support for musl-cross-make --000000000000eee85f05b89940fc Content-Type: text/plain; charset="UTF-8" Hi Rich, Recently I briefly mentioned on IRC I've been working on a musl-cross-make build for llvm/clang. I've reused the source download & patch infrastructure in musl-cross-make and have added a new litecross implementation for clang. The clang build tries to follow the same philosophy as the gcc build with one key difference - it builds multiple targets into one toolchain. Currently either gcc or clang is built by setting the COMPILER variable (default gcc). It should be possible to do both at once but that would be a bigger change. I've had to fix a few things along the way to get this to hang together and have included patches for the issues I came across. If you're happy with the approach I'll submit these upstream. The configure tests for the llvm runtime libraries are fairly awful and seem to assume that a complete toolchain is available. There's two workarounds: 1. The RUNTIMES_*_CMAKE_{C,CXX}_FLAGS variables contain a -Qunused-arguments flag otherwise the cmake C/CXX compiler ABI detection tests fail. I couldn't work out another way of specifying the library/binary paths that worked. 2. The sysroot needs to contain crtbegin{T,S,}.o and crtend{S,}.o files for a few configure tests. I currently put empty dummies in there. There doesn't appear to be a way to specify a name prefix for the clang/llvm binaries. The build currently installs clang into a clang directory and populates a bin directory with prefixed symlinks. This is to avoid clashing with system binaries if the toolchain is added to $PATH. I included a clang patch to support automatically selecting a sysroot based on the --target argument. I thought it would be possible to do this using clang configuration files but the --sysroot command line argument can't specify a sysroot path which is relative to the clang binary. Only the build time DEFAULT_SYSROOT has that capability. There's a parallel build dependency problem somewhere in the install-runtimes target of the llvm build system. It almost always fails to copy some files so I've forced it to run single threaded for now. I haven't used the resultant toolchain much yet. It builds working C and C++ "hello world" tests both statically and dynamically. I tried a toybox build and that worked too. I've attached a patch which should apply the current tip of the musl-cross-make tree. Patrick --000000000000eee85f05b89940fc Content-Type: text/x-patch; charset="US-ASCII"; name="0001-clang-support.patch" Content-Disposition: attachment; filename="0001-clang-support.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kjs4qyav0 RnJvbSA4ZDczZjNmNDMyZWMyMDlkMWJhZTBjMmUyZTU3OTBiNDYxZDNkM2E2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXRyaWNrIE9wcGVubGFuZGVyIDxwYXRyaWNrLm9wcGVubGFu ZGVyQGdtYWlsLmNvbT4KRGF0ZTogVHVlLCA1IEphbiAyMDIxIDA5OjMzOjUzICsxMTAwClN1Ympl Y3Q6IFtQQVRDSF0gY2xhbmcgc3VwcG9ydAoKLS0tCiBNYWtlZmlsZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgNDYgKysrLS0KIGhhc2hlcy9sbHZtLXByb2plY3QtMTEu MC4wLnRhci54ei5zaGExICAgICAgICB8ICAgMSArCiBsaXRlY3Jvc3MvTWFrZWZpbGUuY2xhbmcg ICAgICAgICAgICAgICAgICAgICAgfCAxNzcgKysrKysrKysrKysrKysrKysrCiBsaXRlY3Jvc3Mv e01ha2VmaWxlID0+IE1ha2VmaWxlLmdjY30gICAgICAgICAgfCAgIDAKIC4uLmFkZC1idWlsdGlu cy10by1keW5hbWljLWxpYnJhcnktbGluay5wYXRjaCB8ICAzMCArKysKIC4uLmFibGUtY3J0LXN1 cHBvcnQtb24tYXJtdjctYW5kLWFybXY3bS5wYXRjaCB8ICAyNSArKysKIC4uLnBhbmRpbmctdGFy Z2V0LXRyaXBsZS1pbi1zeXNyb290LXBhdC5wYXRjaCB8ICAzOSArKysrCiAuLi5rYXJvdW5kLWFy bXY3bS1jbGFuZy12ZnAtYXNtLWNyYXNoZXMucGF0Y2ggfCAgOTIgKysrKysrKysrCiA4IGZpbGVz IGNoYW5nZWQsIDM5NyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBoYXNoZXMvbGx2bS1wcm9qZWN0LTExLjAuMC50YXIueHouc2hhMQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGxpdGVjcm9zcy9NYWtlZmlsZS5jbGFuZwogcmVuYW1lIGxpdGVjcm9zcy97TWFr ZWZpbGUgPT4gTWFrZWZpbGUuZ2NjfSAoMTAwJSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVz L2xsdm0tcHJvamVjdC0xMS4wLjAvMDAwMS1saWJjeHhhYmktYWRkLWJ1aWx0aW5zLXRvLWR5bmFt aWMtbGlicmFyeS1saW5rLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9sbHZtLXBy b2plY3QtMTEuMC4wLzAwMDItY29tcGlsZXItcnQtZW5hYmxlLWNydC1zdXBwb3J0LW9uLWFybXY3 LWFuZC1hcm12N20ucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL2xsdm0tcHJvamVj dC0xMS4wLjAvMDAwMy1jbGFuZy1zdXBwb3J0LWV4cGFuZGluZy10YXJnZXQtdHJpcGxlLWluLXN5 c3Jvb3QtcGF0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9tdXNsLTEuMi4xLzAw MDEtbWF0aC13b3JrYXJvdW5kLWFybXY3bS1jbGFuZy12ZnAtYXNtLWNyYXNoZXMucGF0Y2gKCmRp ZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IGE0MTJmNjAuLmY2NmNlY2QgMTAw NjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0xLDE0ICsxLDI3IEBACiAKIFNP VVJDRVMgPSBzb3VyY2VzCiAKK0NPTVBJTEVSID0gZ2NjCisKK01VU0xfVkVSID0gMS4yLjEKK0xJ TlVYX1ZFUiA9IGhlYWRlcnMtNC4xOS44OAorCitpZmVxICgkKENPTVBJTEVSKSxnY2MpCisKIENP TkZJR19TVUJfUkVWID0gM2Q1ZGI5ZWJlODYwCiBCSU5VVElMU19WRVIgPSAyLjMzLjEKIEdDQ19W RVIgPSA5LjIuMAotTVVTTF9WRVIgPSAxLjIuMQogR01QX1ZFUiA9IDYuMS4yCiBNUENfVkVSID0g MS4xLjAKIE1QRlJfVkVSID0gNC4wLjIKLUxJTlVYX1ZFUiA9IGhlYWRlcnMtNC4xOS44OAorCitl bmRpZgorCitpZmVxICgkKENPTVBJTEVSKSxjbGFuZykKKworTExWTV9WRVIgPSAxMS4wLjAKKwor ZW5kaWYKIAogR05VX1NJVEUgPSBodHRwczovL2Z0cC5nbnUub3JnL3B1Yi9nbnUKIEdDQ19TSVRF ID0gJChHTlVfU0lURSkvZ2NjCkBAIC0xNyw2ICszMCw3IEBAIEdNUF9TSVRFID0gJChHTlVfU0lU RSkvZ21wCiBNUENfU0lURSA9ICQoR05VX1NJVEUpL21wYwogTVBGUl9TSVRFID0gJChHTlVfU0lU RSkvbXBmcgogSVNMX1NJVEUgPSBodHRwOi8vaXNsLmdmb3JnZS5pbnJpYS5mci8KK0xMVk1fU0lU RSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9yZWxlYXNlcy9kb3dubG9h ZAogCiBNVVNMX1NJVEUgPSBodHRwczovL3d3dy5tdXNsLWxpYmMub3JnL3JlbGVhc2VzCiBNVVNM X1JFUE8gPSBnaXQ6Ly9naXQubXVzbC1saWJjLm9yZy9tdXNsCkBAIC0zMCwyNCArNDQsMjcgQEAg U0hBMV9DTUQgPSBzaGExc3VtIC1jCiBDT1dQQVRDSCA9ICQoQ1VSRElSKS9jb3dwYXRjaC5zaAog CiBIT1NUID0gJChpZiAkKE5BVElWRSksJChUQVJHRVQpKQotQlVJTERfRElSID0gYnVpbGQvJChp ZiAkKEhPU1QpLCQoSE9TVCksbG9jYWwpLyQoVEFSR0VUKQorQlVJTERfRElSID0gYnVpbGQtJChD T01QSUxFUikvJChpZiAkKEhPU1QpLCQoSE9TVCksbG9jYWwpLyQoVEFSR0VUKQogT1VUUFVUID0g JChDVVJESVIpL291dHB1dCQoaWYgJChIT1NUKSwtJChIT1NUKSkKIAotUkVMX1RPUCA9IC4uLy4u Ly4uCitSRUxfVE9QID0gLi4vLi4kKGlmICQoVEFSR0VUKSwvLi4pCiAKIC1pbmNsdWRlIGNvbmZp Zy5tYWsKIAotU1JDX0RJUlMgPSBnY2MtJChHQ0NfVkVSKSBiaW51dGlscy0kKEJJTlVUSUxTX1ZF UikgbXVzbC0kKE1VU0xfVkVSKSBcCitTUkNfRElSUyA9IG11c2wtJChNVVNMX1ZFUikgXAorCSQo aWYgJChHQ0NfVkVSKSxnY2MtJChHQ0NfVkVSKSkgXAorCSQoaWYgJChCSU5VVElMU19WRVIpLGJp bnV0aWxzLSQoQklOVVRJTFNfVkVSKSkgXAogCSQoaWYgJChHTVBfVkVSKSxnbXAtJChHTVBfVkVS KSkgXAogCSQoaWYgJChNUENfVkVSKSxtcGMtJChNUENfVkVSKSkgXAogCSQoaWYgJChNUEZSX1ZF UiksbXBmci0kKE1QRlJfVkVSKSkgXAogCSQoaWYgJChJU0xfVkVSKSxpc2wtJChJU0xfVkVSKSkg XAotCSQoaWYgJChMSU5VWF9WRVIpLGxpbnV4LSQoTElOVVhfVkVSKSkKKwkkKGlmICQoTElOVVhf VkVSKSxsaW51eC0kKExJTlVYX1ZFUikpIFwKKwkkKGlmICQoTExWTV9WRVIpLGxsdm0tcHJvamVj dC0kKExMVk1fVkVSKSkKIAogYWxsOgogCiBjbGVhbjoKLQlybSAtcmYgZ2NjLSogYmludXRpbHMt KiBtdXNsLSogZ21wLSogbXBjLSogbXBmci0qIGlzbC0qIGJ1aWxkIGJ1aWxkLSogbGludXgtKgor CXJtIC1yZiBnY2MtKiBiaW51dGlscy0qIG11c2wtKiBnbXAtKiBtcGMtKiBtcGZyLSogaXNsLSog YnVpbGQgYnVpbGQtKiBsaW51eC0qIGxsdm0tcHJvamVjdC0qCiAKIGRpc3RjbGVhbjogY2xlYW4K IAlybSAtcmYgc291cmNlcwpAQCAtNzAsNiArODcsNyBAQCAkKHBhdHN1YnN0IGhhc2hlcy8lLnNo YTEsJChTT1VSQ0VTKS8lLCQod2lsZGNhcmQgaGFzaGVzL2xpbnV4LTQqKSk6IFNJVEUgPSAkKExJ TgogJChwYXRzdWJzdCBoYXNoZXMvJS5zaGExLCQoU09VUkNFUykvJSwkKHdpbGRjYXJkIGhhc2hl cy9saW51eC0zKikpOiBTSVRFID0gJChMSU5VWF9TSVRFKS92My54CiAkKHBhdHN1YnN0IGhhc2hl cy8lLnNoYTEsJChTT1VSQ0VTKS8lLCQod2lsZGNhcmQgaGFzaGVzL2xpbnV4LTIuNiopKTogU0lU RSA9ICQoTElOVVhfU0lURSkvdjIuNgogJChwYXRzdWJzdCBoYXNoZXMvJS5zaGExLCQoU09VUkNF UykvJSwkKHdpbGRjYXJkIGhhc2hlcy9saW51eC1oZWFkZXJzLSopKTogU0lURSA9ICQoTElOVVhf SEVBREVSU19TSVRFKQorJChwYXRzdWJzdCBoYXNoZXMvJS5zaGExLCQoU09VUkNFUykvJSwkKHdp bGRjYXJkIGhhc2hlcy9sbHZtLXByb2plY3QtKikpOiBTSVRFID0gJChMTFZNX1NJVEUpL2xsdm1v cmctJChwYXRzdWJzdCBsbHZtLXByb2plY3QtJSwlLCQoYmFzZW5hbWUgJChiYXNlbmFtZSAkKG5v dGRpciAkQCkpKSkKIAogJChTT1VSQ0VTKToKIAlta2RpciAtcCAkQApAQCAtMTUwLDEwICsxNjgs MTAgQEAgZXh0cmFjdF9hbGw6IHwgJChTUkNfRElSUykKIAogIyBSdWxlcyBmb3IgYnVpbGRpbmcu CiAKLWlmZXEgKCQoVEFSR0VUKSwpCitpZmVxICgkKENPTVBJTEVSKSQoVEFSR0VUKSxnY2MpCiAK IGFsbDoKLQlAZWNobyBUQVJHRVQgbXVzdCBiZSBzZXQgdmlhIGNvbmZpZy5tYWsgb3IgY29tbWFu ZCBsaW5lLgorCUBlY2hvIFRBUkdFVCBtdXN0IGJlIHNldCBmb3IgZ2NjIGJ1aWxkIHZpYSBjb25m aWcubWFrIG9yIGNvbW1hbmQgbGluZS4KIAlAZXhpdCAxCiAKIGVsc2UKQEAgLTE2MiwyMCArMTgw LDIyIEBAICQoQlVJTERfRElSKToKIAlta2RpciAtcCAkQAogCiAkKEJVSUxEX0RJUikvTWFrZWZp bGU6IHwgJChCVUlMRF9ESVIpCi0JbG4gLXNmICQoUkVMX1RPUCkvbGl0ZWNyb3NzL01ha2VmaWxl ICRACisJbG4gLXNmICQoUkVMX1RPUCkvbGl0ZWNyb3NzL01ha2VmaWxlLiQoQ09NUElMRVIpICRA CiAKICQoQlVJTERfRElSKS9jb25maWcubWFrOiB8ICQoQlVJTERfRElSKQogCXByaW50ZiA+JEAg JyVzXG4nIFwKLQkiVEFSR0VUID0gJChUQVJHRVQpIiBcCisJJChpZiAkKFRBUkdFVCksIlRBUkdF VCA9ICQoVEFSR0VUKSIpIFwKIAkiSE9TVCA9ICQoSE9TVCkiIFwKIAkiTVVTTF9TUkNESVIgPSAk KFJFTF9UT1ApL211c2wtJChNVVNMX1ZFUikiIFwKLQkiR0NDX1NSQ0RJUiA9ICQoUkVMX1RPUCkv Z2NjLSQoR0NDX1ZFUikiIFwKLQkiQklOVVRJTFNfU1JDRElSID0gJChSRUxfVE9QKS9iaW51dGls cy0kKEJJTlVUSUxTX1ZFUikiIFwKKwkkKGlmICQoR0NDX1ZFUiksIkdDQ19TUkNESVIgPSAkKFJF TF9UT1ApL2djYy0kKEdDQ19WRVIpIikgXAorCSQoaWYgJChCSU5VVElMU19WRVIpLCJCSU5VVElM U19TUkNESVIgPSAkKFJFTF9UT1ApL2JpbnV0aWxzLSQoQklOVVRJTFNfVkVSKSIpIFwKIAkkKGlm ICQoR01QX1ZFUiksIkdNUF9TUkNESVIgPSAkKFJFTF9UT1ApL2dtcC0kKEdNUF9WRVIpIikgXAog CSQoaWYgJChNUENfVkVSKSwiTVBDX1NSQ0RJUiA9ICQoUkVMX1RPUCkvbXBjLSQoTVBDX1ZFUiki KSBcCiAJJChpZiAkKE1QRlJfVkVSKSwiTVBGUl9TUkNESVIgPSAkKFJFTF9UT1ApL21wZnItJChN UEZSX1ZFUikiKSBcCiAJJChpZiAkKElTTF9WRVIpLCJJU0xfU1JDRElSID0gJChSRUxfVE9QKS9p c2wtJChJU0xfVkVSKSIpIFwKIAkkKGlmICQoTElOVVhfVkVSKSwiTElOVVhfU1JDRElSID0gJChS RUxfVE9QKS9saW51eC0kKExJTlVYX1ZFUikiKSBcCisJJChpZiAkKExMVk1fVkVSKSwiTExWTV9T UkNESVIgPSAkKFJFTF9UT1ApL2xsdm0tcHJvamVjdC0kKExMVk1fVkVSKSIpIFwKKwkkKGlmICQo TExWTV9WRVIpLCJMTFZNX1ZFUiA9ICQoTExWTV9WRVIpIikgXAogCSItaW5jbHVkZSAkKFJFTF9U T1ApL2NvbmZpZy5tYWsiCiAKIGFsbDogfCAkKFNSQ19ESVJTKSAkKEJVSUxEX0RJUikgJChCVUlM RF9ESVIpL01ha2VmaWxlICQoQlVJTERfRElSKS9jb25maWcubWFrCmRpZmYgLS1naXQgYS9oYXNo ZXMvbGx2bS1wcm9qZWN0LTExLjAuMC50YXIueHouc2hhMSBiL2hhc2hlcy9sbHZtLXByb2plY3Qt MTEuMC4wLnRhci54ei5zaGExCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVm NGI3MDQKLS0tIC9kZXYvbnVsbAorKysgYi9oYXNoZXMvbGx2bS1wcm9qZWN0LTExLjAuMC50YXIu eHouc2hhMQpAQCAtMCwwICsxIEBACiszYzg4MzkwYjE5YWM2Nzc5YzhkOWM4OTI1Njg5MmQ2OTA5 MDM0MTJiICBsbHZtLXByb2plY3QtMTEuMC4wLnRhci54egpkaWZmIC0tZ2l0IGEvbGl0ZWNyb3Nz L01ha2VmaWxlLmNsYW5nIGIvbGl0ZWNyb3NzL01ha2VmaWxlLmNsYW5nCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3ZTlmMjIKLS0tIC9kZXYvbnVsbAorKysgYi9saXRlY3Jv c3MvTWFrZWZpbGUuY2xhbmcKQEAgLTAsMCArMSwxNzcgQEAKKworT1VUUFVUID0gJChDVVJESVIp L291dHB1dAorCitMTFZNX1NSQ0RJUiA9IExMVk1fU1JDRElSX25vdF9zZXQKK01VU0xfU1JDRElS ID0gTVVTTF9TUkNESVJfbm90X3NldAorCitUQVJHRVRTID0gXAorCWFhcmNoNjQtbGludXgtbXVz bGVhYmkgXAorCWFybXY3LWxpbnV4LW11c2xlYWJpIFwKKwlhcm12Ny1saW51eC1tdXNsZWFiaWhm IFwKKwlhcm12N20tbGludXgtbXVzbGVhYmkgXAorCWFybXY3bS1saW51eC1tdXNsZWFiaWhmIFwK Kwl4ODZfNjQtbGludXgtbXVzbCBcCisJIyBlbmQKKworREVGQVVMVF9UQVJHRVQgPSB4ODZfNjQt bGludXgtbXVzbAorCitUT09MUyA9IFwKKwlsbHZtLWFyIFwKKwlsbHZtLW5tIFwKKwlsbHZtLW9i amNvcHkgXAorCWxsdm0tb2JqZHVtcCBcCisJbGx2bS1yYW5saWIgXAorCWxsdm0tc2l6ZSBcCisJ bGx2bS1zdHJpcCBcCisJIyBlbmQKKworLWluY2x1ZGUgY29uZmlnLm1haworCisjIFRPRE86IGRl dGVybWluZSBMTFZNX1RBUkdFVFNfVE9fQlVJTEQgZnJvbSBUQVJHRVRTPworRlVMTF9MTFZNX0NP TkZJRyA9ICQoTExWTV9DT05GSUcpIFwKKwktRENMQU5HX0RFRkFVTFRfQ1hYX1NURExJQj1saWJj KysgXAorCS1EQ0xBTkdfREVGQVVMVF9MSU5LRVI9bGxkIFwKKwktRENMQU5HX0RFRkFVTFRfT0JK Q09QWT1sbHZtLW9iamNvcHkgXAorCS1EQ0xBTkdfREVGQVVMVF9SVExJQj1jb21waWxlci1ydCBc CisJLURDTUFLRV9CVUlMRF9UWVBFPU1pblNpemVSZWwgXAorCS1EQ01BS0VfSU5TVEFMTF9QUkVG SVg9L2NsYW5nIFwKKwktRERFRkFVTFRfU1lTUk9PVD0uLi8uLi9UQVJHRVQgXAorCS1ETExWTV9C VUlMVElOX1RBUkdFVFM9JyQoc3Vic3QgJChzdWJzdCAsLCApLDssJChUQVJHRVRTKSknIFwKKwkt RExMVk1fREVGQVVMVF9UQVJHRVRfVFJJUExFPSQoREVGQVVMVF9UQVJHRVQpIFwKKwktRExMVk1f RElTVFJJQlVUSU9OX0NPTVBPTkVOVFM9J2NsYW5nO2xsZDtMVE87JChzdWJzdCAkKHN1YnN0ICws ICksOywkKFRPT0xTKSknIFwKKwktRExMVk1fRU5BQkxFX1BST0pFQ1RTPSdjbGFuZztsbGQnIFwK KwktRExMVk1fRU5BQkxFX1JVTlRJTUVTPSdjb21waWxlci1ydDtsaWJjeHg7bGliY3h4YWJpO2xp YnVud2luZCcgXAorCS1ETExWTV9JTlNUQUxMX1RPT0xDSEFJTl9PTkxZPU9OIFwKKwktRExMVk1f UlVOVElNRV9UQVJHRVRTPSckKHN1YnN0ICQoc3Vic3QgLCwgKSw7LCQoVEFSR0VUUykpJyBcCisJ LURMTFZNX1RBUkdFVFNfVE9fQlVJTEQ9J0FBcmNoNjQ7QVJNO01pcHM7UG93ZXJQQztYODYnIFwK KwkkKGZvcmVhY2ggdCwkKFRBUkdFVFMpLC1EQlVJTFRJTlNfJCh0KV9DTUFLRV9TWVNST09UPSQo Q1VSRElSKS9vYmpfc3lzcm9vdC8kKHQpKSBcCisJJChmb3JlYWNoIHQsJChUQVJHRVRTKSwtRFJV TlRJTUVTXyQodClfQ01BS0VfQ1hYX0ZMQUdTPSctTCQoQ1VSRElSKS9vYmpfbXVzbC8kKHQpL2xp YiAtQiQoQ1VSRElSKS9vYmpfbXVzbC8kKHQpL2xpYiAtUXVudXNlZC1hcmd1bWVudHMnKSBcCisJ JChmb3JlYWNoIHQsJChUQVJHRVRTKSwtRFJVTlRJTUVTXyQodClfQ01BS0VfQ19GTEFHUz0nLUwk KENVUkRJUikvb2JqX211c2wvJCh0KS9saWIgLUIkKENVUkRJUikvb2JqX211c2wvJCh0KS9saWIg LVF1bnVzZWQtYXJndW1lbnRzJykgXAorCSQoZm9yZWFjaCB0LCQoVEFSR0VUUyksLURSVU5USU1F U18kKHQpX0NNQUtFX1NZU1JPT1Q9JChDVVJESVIpL29ial9zeXNyb290LyQodCkpIFwKKwkkKGZv cmVhY2ggdCwkKFRBUkdFVFMpLC1EUlVOVElNRVNfJCh0KV9DT01QSUxFUl9SVF9CVUlMRF9MSUJG VVpaRVI9T0ZGKSBcCisJJChmb3JlYWNoIHQsJChUQVJHRVRTKSwtRFJVTlRJTUVTXyQodClfQ09N UElMRVJfUlRfQlVJTERfU0FOSVRJWkVSUz1PRkYpIFwKKwkkKGZvcmVhY2ggdCwkKFRBUkdFVFMp LC1EUlVOVElNRVNfJCh0KV9DT01QSUxFUl9SVF9CVUlMRF9YUkFZPU9GRikgXAorCSQoZm9yZWFj aCB0LCQoVEFSR0VUUyksLURSVU5USU1FU18kKHQpX0xJQkNYWEFCSV9VU0VfQ09NUElMRVJfUlQ9 T04pIFwKKwkkKGZvcmVhY2ggdCwkKFRBUkdFVFMpLC1EUlVOVElNRVNfJCh0KV9MSUJDWFhBQklf VVNFX0xMVk1fVU5XSU5ERVI9T04pIFwKKwkkKGZvcmVhY2ggdCwkKFRBUkdFVFMpLC1EUlVOVElN RVNfJCh0KV9MSUJDWFhfSEFTX01VU0xfTElCQz1PTikgXAorCSQoZm9yZWFjaCB0LCQoVEFSR0VU UyksLURSVU5USU1FU18kKHQpX0xJQkNYWF9VU0VfQ09NUElMRVJfUlQ9T04pIFwKKwkkKGZvcmVh Y2ggdCwkKFRBUkdFVFMpLC1EUlVOVElNRVNfJCh0KV9MSUJVTldJTkRfVVNFX0NPTVBJTEVSX1JU PU9OKSBcCisJIyBlbmQKKworYWxsOiBsbHZtIG11c2wKKworaW5zdGFsbDogaW5zdGFsbC1sbHZt IGluc3RhbGwtbXVzbCBpbnN0YWxsLWtlcm5lbC1oZWFkZXJzIGluc3RhbGwtY29uZmlncyBpbnN0 YWxsLXN5bWxpbmtzCisKK2xsdm06IHwgb2JqX2xsdm0vLmxjX2J1aWx0XzMKK211c2w6IHwgJChm b3JlYWNoIHQsJChUQVJHRVRTKSxvYmpfbXVzbC8kKHQpLy5sY19idWlsdCkKK2luc3RhbGwtbXVz bDogJChmb3JlYWNoIHQsJChUQVJHRVRTKSxpbnN0YWxsLW11c2xfJCh0KSkKK2luc3RhbGwta2Vy bmVsLWhlYWRlcnM6ICQoZm9yZWFjaCB0LCQoVEFSR0VUUyksaW5zdGFsbC1rZXJuZWwtaGVhZGVy c18kKHQpKQoraW5zdGFsbC1jb25maWdzOiAkKGZvcmVhY2ggdCwkKFRBUkdFVFMpLGluc3RhbGwt Y29uZmlnc18kKHQpKQoraW5zdGFsbC1zeW1saW5rczogJChmb3JlYWNoIHQsJChUQVJHRVRTKSxp bnN0YWxsLXN5bWxpbmtzXyQodCkpCisKKy5QSE9OWTogYWxsIGxsdm0gbXVzbCBpbnN0YWxsLWxs dm0gaW5zdGFsbC1tdXNsIGluc3RhbGwta2VybmVsLWhlYWRlcnMgaW5zdGFsbC1jb25maWdzIGlu c3RhbGwtc3ltbGlua3MgY2xlYW4KKworc3JjX2xsdm06IHwgJChMTFZNX1NSQ0RJUikKKwlsbiAt c2YgJChMTFZNX1NSQ0RJUikgJEAKKworc3JjX211c2w6IHwgJChNVVNMX1NSQ0RJUikKKwlsbiAt c2YgJChNVVNMX1NSQ0RJUikgJEAKKworc3JjX2tlcm5lbF9oZWFkZXJzOiB8ICQoTElOVVhfU1JD RElSKQorCWxuIC1zZiAiJChMSU5VWF9TUkNESVIpIiAkQAorCislLzoKKwlta2RpciAtcCAkQAor CitvYmpfbGx2bS8ubGNfY29uZmlndXJlZDogfCBvYmpfbGx2bS8gc3JjX2xsdm0KKwljZCBvYmpf bGx2bSAmJiBjbWFrZSAtRyAiVW5peCBNYWtlZmlsZXMiICQoRlVMTF9MTFZNX0NPTkZJRykgLi4v c3JjX2xsdm0vbGx2bQorCXRvdWNoICRACisKK29ial9sbHZtLy5sY19idWlsdF8xOiB8IG9ial9s bHZtLy5sY19jb25maWd1cmVkCisJY2Qgb2JqX2xsdm0gJiYgJChNQUtFKSBkaXN0cmlidXRpb24K Kwl0b3VjaCAkQAorCitvYmpfbXVzbC8lLy5sY19jb25maWd1cmVkOiB8IG9ial9tdXNsLyUvIHNy Y19tdXNsIG9ial9sbHZtLy5sY19idWlsdF8xCisJY2Qgb2JqX211c2wvJCogJiYgLi4vLi4vc3Jj X211c2wvY29uZmlndXJlIFwKKwkJLS1wcmVmaXg9IFwKKwkJLS10YXJnZXQ9JCogXAorCQktLWRp c2FibGUtd3JhcHBlciBcCisJCUxJQkNDPS4uLy4uL29ial9sbHZtL2xpYi9jbGFuZy8kKExMVk1f VkVSKS9saWIvJCovbGliY2xhbmdfcnQuYnVpbHRpbnMuYSBcCisJCUNDPSIuLi8uLi9vYmpfbGx2 bS9iaW4vY2xhbmcgLS10YXJnZXQ9JCoiIFwKKwkJJChNVVNMX0NPTkZJRykKKwl0b3VjaCAkQAor CitvYmpfc3lzcm9vdC8lLy5sY19oZWFkZXJzOiB8IG9ial9zeXNyb290LyBvYmpfbXVzbC8lLy5s Y19jb25maWd1cmVkCisJY2Qgb2JqX211c2wvJCogJiYgJChNQUtFKSBERVNURElSPSQoQ1VSRElS KS9vYmpfc3lzcm9vdC8kKiBpbnN0YWxsLWhlYWRlcnMKKwl0b3VjaCAkQAorCitvYmpfbGx2bS8u bGNfYnVpbHRfMjogfCAkKGZvcmVhY2ggdCwkKFRBUkdFVFMpLG9ial9zeXNyb290LyQodCkvLmxj X2hlYWRlcnMpCisJY2Qgb2JqX2xsdm0gJiYgJChNQUtFKSBidWlsdGlucworCXRvdWNoICRACisK K29ial9tdXNsLyUvLmxjX2J1aWx0OiB8IG9ial9tdXNsLyUvLmxjX2NvbmZpZ3VyZWQgb2JqX2xs dm0vLmxjX2J1aWx0XzIKKwljZCBvYmpfbXVzbC8kKiAmJiAkKE1BS0UpIEFSPS4uLy4uL29ial9s bHZtL2Jpbi9sbHZtLWFyIFwKKwkJCQkgIFJBTkxJQj0uLi8uLi9vYmpfbGx2bS9iaW4vbGx2bS1y YW5saWIKKwl0b3VjaCAkQAorCitvYmpfc3lzcm9vdC8lLy5sY19jcnRfd29ya2Fyb3VuZDoKKwkj IFNvbWUgY29uZmlndXJlIHRlc3RzIGZvciBsbHZtIHJ1bnRpbWVzIGZhaWwgd2l0aG91dCBjcnRi ZWdpbiBhbmQKKwkjIGNydGVuZCBmaWxlcyBpbiB0aGUgc3lzcm9vdC4gVGhlIHJ1bnRpbWVzIGJ1 aWxkIGdlbmVyYXRlcyB0aGVzZSBmaWxlcworCSMgbGVhZGluZyB0byBhIGNoaWNrZW4tZWdnIHBy b2JsZW0uCisJbWtkaXIgLXAgb2JqX3N5c3Jvb3QvJCovbGliCisJY2Qgb2JqX3N5c3Jvb3QvJCov bGliICYmIHRvdWNoIGNydGJlZ2luVC5vIGNydGJlZ2luUy5vIGNydGJlZ2luLm8gY3J0ZW5kLm8g Y3J0ZW5kUy5vCisJdG91Y2ggJEAKKworb2JqX2tlcm5lbF9oZWFkZXJzLyUvLmxjX2J1aWx0OiB8 IHNyY19rZXJuZWxfaGVhZGVycworCW1rZGlyIC1wICQoQ1VSRElSKS9vYmpfa2VybmVsX2hlYWRl cnMvJCovc3RhZ2VkCisJY2Qgc3JjX2tlcm5lbF9oZWFkZXJzICYmICQoTUFLRSkgQVJDSD0kKGNh bGwgZm5fbGludXhfYXJjaCwkKikgTz0kKENVUkRJUikvb2JqX2tlcm5lbF9oZWFkZXJzLyQqIElO U1RBTExfSERSX1BBVEg9JChDVVJESVIpL29ial9rZXJuZWxfaGVhZGVycy8kKi9zdGFnZWQgaGVh ZGVyc19pbnN0YWxsCisJZmluZCBvYmpfa2VybmVsX2hlYWRlcnMvJCovc3RhZ2VkL2luY2x1ZGUg JygnIC1uYW1lIC5pbnN0YWxsIC1vIC1uYW1lIC4uaW5zdGFsbC5jbWQgJyknIC1leGVjIHJtIHt9 ICsKKwl0b3VjaCAkQAorCitvYmpfc3lzcm9vdC8lLy5sY19saW51eF9oZWFkZXJzOiB8IG9ial9r ZXJuZWxfaGVhZGVycy8lLy5sY19idWlsdAorCW1rZGlyIC1wIG9ial9zeXNyb290LyQqL2luY2x1 ZGUKKwljcCAtUiBvYmpfa2VybmVsX2hlYWRlcnMvJCovc3RhZ2VkL2luY2x1ZGUvKiBvYmpfc3lz cm9vdC8kKi9pbmNsdWRlCisKK29ial9sbHZtLy5sY19idWlsdF8zOiB8ICQoZm9yZWFjaCB0LCQo VEFSR0VUUyksb2JqX211c2wvJCh0KS8ubGNfYnVpbHQgXAorCQkJCQkgICAgICAgb2JqX3N5c3Jv b3QvJCh0KS8ubGNfY3J0X3dvcmthcm91bmQgXAorCQkJCQkgICAgICAgb2JqX3N5c3Jvb3QvJCh0 KS8ubGNfbGludXhfaGVhZGVycykKKwljZCBvYmpfbGx2bSAmJiAkKE1BS0UpIHJ1bnRpbWVzCisJ dG91Y2ggJEAKKworaW5zdGFsbC1sbHZtOiB8IG9ial9sbHZtLy5sY19idWlsdF8zCisJIyAtajEg YmVjYXVzZSB0aGVyZSdzIGEgYnJva2VuIGRlcGVuZGVuY3kgaW4gdGhlIGxsdm0gYnVpbGQgc29t ZXdoZXJlCisJIyAgd2hpY2ggb2Z0ZW4gcmVzdWx0cyBpbiBtaXNzaW5nIGMrKyBsaWJyYXJpZXMg Zm9yIHNvbWUgdGFyZ2V0cworCWNkIG9ial9sbHZtICYmICQoTUFLRSkgLWoxIERFU1RESVI9JChE RVNURElSKSQoT1VUUFVUKSBpbnN0YWxsLWRpc3RyaWJ1dGlvbiBpbnN0YWxsLWJ1aWx0aW5zIGlu c3RhbGwtcnVudGltZXMKKworaW5zdGFsbC1tdXNsXyU6IHwgb2JqX211c2wvJS8ubGNfYnVpbHQK KwljZCBvYmpfbXVzbC8kKiAmJiAkKE1BS0UpICQoTVVTTF9WQVJTKSBERVNURElSPSQoREVTVERJ UikkKE9VVFBVVCkvJCogaW5zdGFsbAorCitpbnN0YWxsLWtlcm5lbC1oZWFkZXJzXyU6IHwgb2Jq X2tlcm5lbF9oZWFkZXJzLyUvLmxjX2J1aWx0CisJbWtkaXIgLXAgJChERVNURElSKSQoT1VUUFVU KS8kKi9pbmNsdWRlCisJY3AgLVIgb2JqX2tlcm5lbF9oZWFkZXJzLyQqL3N0YWdlZC9pbmNsdWRl LyogJChERVNURElSKSQoT1VUUFVUKS8kKi9pbmNsdWRlCisKK2luc3RhbGwtY29uZmlnc18lOiB8 ICQoREVTRElSKSQoT1VUUFVUKS9jbGFuZy9iaW4vCisJZWNobyAiLS10YXJnZXQ9JCoiID4gJChE RVNURElSKSQoT1VUUFVUKS9jbGFuZy9iaW4vJCotY2xhbmcuY2ZnCisJZWNobyAiLS10YXJnZXQ9 JCogLWxjKythYmkgLWx1bndpbmQiID4gJChERVNURElSKSQoT1VUUFVUKS9jbGFuZy9iaW4vJCot Y2xhbmcrKy5jZmcKKworaW5zdGFsbC1zeW1saW5rc18lOiB8ICQoREVTVERJUikkKE9VVFBVVCkv YmluLworCWNkICQoREVTVERJUikkKE9VVFBVVCkvYmluICYmIGxuIC1zZiAuLi9jbGFuZy9iaW4v Y2xhbmcgJCotY2xhbmcKKwljZCAkKERFU1RESVIpJChPVVRQVVQpL2JpbiAmJiBsbiAtc2YgLi4v Y2xhbmcvYmluL2NsYW5nKysgJCotY2xhbmcrKworCWNkICQoREVTVERJUikkKE9VVFBVVCkvYmlu ICYmIGxuIC1zZiAuLi9jbGFuZy9iaW4vY2xhbmctY3BwICQqLWNsYW5nLWNwcAorCWNkICQoREVT VERJUikkKE9VVFBVVCkvYmluICYmIGxuIC1zZiAuLi9jbGFuZy9iaW4vbGQubGxkICQqLWxkCisJ JChmb3JlYWNoIHQsJChUT09MUyksY2QgJChERVNURElSKSQoT1VUUFVUKS9iaW4gJiYgbG4gLXNm IC4uL2NsYW5nL2Jpbi8kKHQpICQqLSQoc3Vic3QgbGx2bS0sLCQodCk7KSkKKworY2xlYW46CisJ cm0gLXJmIHNyY18qIG9ial8qCisKKyMgJChjYWxsIGZuX2xpbnV4X2FyY2gsdGFyZ2V0LXRyaXBs ZSkKKyMgICAgIERldGVybWluZSBsaW51eCBhcmNoaXRlY3R1cmUgZnJvbSB0YXJnZXQgdHJpcGxl CitpZmVxICgkKExJTlVYX1NSQ0RJUiksKQorJChlcnJvciBMSU5VWF9TUkNESVIgaXMgcmVxdWly ZWQgZm9yIGxsdm0gbGliYysrIGJ1aWxkKQorZW5kaWYKK0xJTlVYX0FSQ0hfTElTVCA6PSAkKHNv cnQgJChub3RkaXIgJCh3aWxkY2FyZCAkKExJTlVYX1NSQ0RJUikvYXJjaC8qKSkpCitmbl90YXJn ZXRfYXJjaCA9ICQoZmlyc3R3b3JkICQoc3Vic3QgLSwgLCQoMSkpKQorZm5fdGFyZ2V0X2FyY2hf bWFuZ2xlZCA9ICQocGF0c3Vic3QgaSU4Nix4ODYsJChwYXRzdWJzdCBhYXJjaDY0JSxhcm02NCUs JChjYWxsIGZuX3RhcmdldF9hcmNoLCQoMSkpKSkKK2ZuX2xpbnV4X2FyY2ggPSAkKGxhc3R3b3Jk ICQoZm9yZWFjaCBhLCQoTElOVVhfQVJDSF9MSVNUKSwkKGlmICQoZmlsdGVyICQoYSklLCQoY2Fs bCBmbl90YXJnZXRfYXJjaF9tYW5nbGVkLCQoMSkpKSwkKGEpKSkpCisKKy5TRUNPTkRBUlk6CmRp ZmYgLS1naXQgYS9saXRlY3Jvc3MvTWFrZWZpbGUgYi9saXRlY3Jvc3MvTWFrZWZpbGUuZ2NjCnNp bWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBsaXRlY3Jvc3MvTWFrZWZpbGUKcmVuYW1l IHRvIGxpdGVjcm9zcy9NYWtlZmlsZS5nY2MKZGlmZiAtLWdpdCBhL3BhdGNoZXMvbGx2bS1wcm9q ZWN0LTExLjAuMC8wMDAxLWxpYmN4eGFiaS1hZGQtYnVpbHRpbnMtdG8tZHluYW1pYy1saWJyYXJ5 LWxpbmsucGF0Y2ggYi9wYXRjaGVzL2xsdm0tcHJvamVjdC0xMS4wLjAvMDAwMS1saWJjeHhhYmkt YWRkLWJ1aWx0aW5zLXRvLWR5bmFtaWMtbGlicmFyeS1saW5rLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3YzQ5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9wYXRjaGVz L2xsdm0tcHJvamVjdC0xMS4wLjAvMDAwMS1saWJjeHhhYmktYWRkLWJ1aWx0aW5zLXRvLWR5bmFt aWMtbGlicmFyeS1saW5rLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gNmY0MzdiNDJlNjZj NzU1MmMzYjkyZmQxYmQ0NmM5NmVkNDg0ZGZiZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b206IFBhdHJpY2sgT3BwZW5sYW5kZXIgPHBhdHJpY2sub3BwZW5sYW5kZXJAZ21haWwuY29tPgor RGF0ZTogRnJpLCA4IEphbiAyMDIxIDE2OjQ2OjM3ICsxMTAwCitTdWJqZWN0OiBbUEFUQ0ggMS8z XSBsaWJjeHhhYmk6IGFkZCBidWlsdGlucyB0byBkeW5hbWljIGxpYnJhcnkgbGluaworCitPdGhl cndpc2UgbGliYysrYWJpLnNvIGZhaWxzIHRvIGxpbmsgb24gYXJtIHdpdGggdW5kZWZpbmVkIHJl ZmVyZW5jZXMgdG8KK3NvbWUgX19hZWFiaV8gYnVpbHRpbnMuCistLS0KKyBsaWJjeHhhYmkvc3Jj L0NNYWtlTGlzdHMudHh0IHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMo KykKKworZGlmZiAtLWdpdCBhL2xpYmN4eGFiaS9zcmMvQ01ha2VMaXN0cy50eHQgYi9saWJjeHhh Ymkvc3JjL0NNYWtlTGlzdHMudHh0CitpbmRleCA0MmJlYzQyMWQyYmUuLjlkYmEyMmVhM2Q0MyAx MDA2NDQKKy0tLSBhL2xpYmN4eGFiaS9zcmMvQ01ha2VMaXN0cy50eHQKKysrKyBiL2xpYmN4eGFi aS9zcmMvQ01ha2VMaXN0cy50eHQKK0BAIC03Myw2ICs3MywxMSBAQCBlbHNlKCkKKyAgIGFkZF9s aWJyYXJ5X2ZsYWdzX2lmKExJQkNYWEFCSV9IQVNfQ19MSUIgYykKKyBlbmRpZigpCisgCisraWYg KExJQkNYWEFCSV9VU0VfQ09NUElMRVJfUlQpCisrICBmaW5kX2NvbXBpbGVyX3J0X2xpYnJhcnko YnVpbHRpbnMgTElCQ1hYQUJJX0JVSUxUSU5TX0xJQlJBUlkpCisrICBsaXN0KEFQUEVORCBMSUJD WFhBQklfU0hBUkVEX0xJQlJBUklFUyAiJHtMSUJDWFhBQklfQlVJTFRJTlNfTElCUkFSWX0iKQor K2VuZGlmICgpCisrCisgaWYgKExJQkNYWEFCSV9VU0VfTExWTV9VTldJTkRFUikKKyAgICMgUHJl ZmVyIHVzaW5nIHRoZSBpbi10cmVlIHZlcnNpb24gb2YgbGlidW53aW5kLCBlaXRoZXIgc2hhcmVk IG9yIHN0YXRpYy4gSWYKKyAgICMgbm9uZSBhcmUgZm91bmQgZmFsbCBiYWNrIHRvIHVzaW5nIC1s dW53aW5kLgorLS0gCisyLjMwLjAKKwpkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9sbHZtLXByb2plY3Qt MTEuMC4wLzAwMDItY29tcGlsZXItcnQtZW5hYmxlLWNydC1zdXBwb3J0LW9uLWFybXY3LWFuZC1h cm12N20ucGF0Y2ggYi9wYXRjaGVzL2xsdm0tcHJvamVjdC0xMS4wLjAvMDAwMi1jb21waWxlci1y dC1lbmFibGUtY3J0LXN1cHBvcnQtb24tYXJtdjctYW5kLWFybXY3bS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGE3OGY1Ci0tLSAvZGV2L251bGwKKysrIGIvcGF0 Y2hlcy9sbHZtLXByb2plY3QtMTEuMC4wLzAwMDItY29tcGlsZXItcnQtZW5hYmxlLWNydC1zdXBw b3J0LW9uLWFybXY3LWFuZC1hcm12N20ucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSAyNDI1 YTcxODA0NmE4MmU3MDVkMDU0MDBiZDkyMDRiMjY1Y2EzMjYyIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQorRnJvbTogUGF0cmljayBPcHBlbmxhbmRlciA8cGF0cmljay5vcHBlbmxhbmRlckBnbWFp bC5jb20+CitEYXRlOiBGcmksIDggSmFuIDIwMjEgMjE6MzQ6MzkgKzExMDAKK1N1YmplY3Q6IFtQ QVRDSCAyLzNdIGNvbXBpbGVyLXJ0OiBlbmFibGUgY3J0IHN1cHBvcnQgb24gYXJtdjcgYW5kIGFy bXY3bQorCistLS0KKyBjb21waWxlci1ydC9jbWFrZS9jb25maWctaXguY21ha2UgfCAyICstCisg MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1n aXQgYS9jb21waWxlci1ydC9jbWFrZS9jb25maWctaXguY21ha2UgYi9jb21waWxlci1ydC9jbWFr ZS9jb25maWctaXguY21ha2UKK2luZGV4IDJlZGMxZGFiZDkwZC4uN2Q4Yjk1MTQ2ZTlhIDEwMDY0 NAorLS0tIGEvY29tcGlsZXItcnQvY21ha2UvY29uZmlnLWl4LmNtYWtlCisrKysgYi9jb21waWxl ci1ydC9jbWFrZS9jb25maWctaXguY21ha2UKK0BAIC0yNTUsNyArMjU1LDcgQEAgZnVuY3Rpb24o aXNfdmFsaWRfYXBwbGVfcGxhdGZvcm0gcGxhdGZvcm0gaXNfdmFsaWRfb3V0KQorIGVuZGZ1bmN0 aW9uKCkKKyAKKyBzZXQoQVJNNjQgYWFyY2g2NCkKKy1zZXQoQVJNMzIgYXJtIGFybWhmKQorK3Nl dChBUk0zMiBhcm0gYXJtdjcgYXJtdjdtIGFybWhmKQorIHNldChIRVhBR09OIGhleGFnb24pCisg c2V0KFg4NiBpMzg2KQorIHNldChYODZfNjQgeDg2XzY0KQorLS0gCisyLjMwLjAKKwpkaWZmIC0t Z2l0IGEvcGF0Y2hlcy9sbHZtLXByb2plY3QtMTEuMC4wLzAwMDMtY2xhbmctc3VwcG9ydC1leHBh bmRpbmctdGFyZ2V0LXRyaXBsZS1pbi1zeXNyb290LXBhdC5wYXRjaCBiL3BhdGNoZXMvbGx2bS1w cm9qZWN0LTExLjAuMC8wMDAzLWNsYW5nLXN1cHBvcnQtZXhwYW5kaW5nLXRhcmdldC10cmlwbGUt aW4tc3lzcm9vdC1wYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u OTY0NDYzMwotLS0gL2Rldi9udWxsCisrKyBiL3BhdGNoZXMvbGx2bS1wcm9qZWN0LTExLjAuMC8w MDAzLWNsYW5nLXN1cHBvcnQtZXhwYW5kaW5nLXRhcmdldC10cmlwbGUtaW4tc3lzcm9vdC1wYXQu cGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBmMGVjYjM4NTBkNzgyNWNkOTY3ZDIyYzA5ZWQ3 M2Q5OTA2MDVjNzBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF0cmljayBPcHBl bmxhbmRlciA8cGF0cmljay5vcHBlbmxhbmRlckBnbWFpbC5jb20+CitEYXRlOiBNb24sIDExIEph biAyMDIxIDEwOjM5OjI3ICsxMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBjbGFuZzogc3VwcG9y dCBleHBhbmRpbmcgdGFyZ2V0IHRyaXBsZSBpbiBzeXNyb290IHBhdGgKKworVGhpcyBhbGxvd3Mg Y2xhbmcgdG8gc3dpdGNoIHN5c3Jvb3QgKG9yLCBtb3JlIHVzZWZ1bGx5LCBkZWZhdWx0IHN5c3Jv b3QpCitiYXNlZCBvbiB0YXJnZXQgdHJpcGxlLgorCitGb3IgZXhhbXBsZSwgY29uZmlndXJpbmcg d2l0aAorCistRERFRkFVTFRfU1lTUk9PVD0uLi9UQVJHRVQKKword2lsbCBhdXRvbWF0aWNhbGx5 IHNlbGVjdCBhIHRhcmdldCBzcGVjaWZpYyBzeXNyb290IG9uZSBsZXZlbCB1cCBmcm9tCit0aGUg Y2xhbmcgYmluYXJ5IGxvY2F0aW9uLgorLS0tCisgY2xhbmcvbGliL0RyaXZlci9Ecml2ZXIuY3Bw IHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0t Z2l0IGEvY2xhbmcvbGliL0RyaXZlci9Ecml2ZXIuY3BwIGIvY2xhbmcvbGliL0RyaXZlci9Ecml2 ZXIuY3BwCitpbmRleCBlY2U4MjIyZGNmMjQuLjhhM2IwNjhkODZiOSAxMDA2NDQKKy0tLSBhL2Ns YW5nL2xpYi9Ecml2ZXIvRHJpdmVyLmNwcAorKysrIGIvY2xhbmcvbGliL0RyaXZlci9Ecml2ZXIu Y3BwCitAQCAtMTEyMSw2ICsxMTIxLDEzIEBAIENvbXBpbGF0aW9uICpEcml2ZXI6OkJ1aWxkQ29t cGlsYXRpb24oQXJyYXlSZWY8Y29uc3QgY2hhciAqPiBBcmdMaXN0KSB7CisgICAgICAgICAgICAg ICAgICAgICAuRGVmYXVsdChTYXZlVGVtcHNDd2QpOworICAgfQorIAorKyAgLy8gZXhwYW5kIFRB UkdFVCBpbiBzeXNyb290IHBhdGgKKysgIGlmICghU3lzUm9vdC5lbXB0eSgpKSB7CisrICAgIHNp emVfdCBwb3N7MH07CisrICAgIHdoaWxlICgocG9zID0gU3lzUm9vdC5maW5kKCJUQVJHRVQiLCBw b3MpKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKysgICAgICBTeXNSb290LnJlcGxhY2UocG9zLCA2 LCBUYXJnZXRUcmlwbGUpOworKyAgfQorKworICAgc2V0TFRPTW9kZShBcmdzKTsKKyAKKyAgIC8v IFByb2Nlc3MgLWZlbWJlZC1iaXRjb2RlPSBmbGFncy4KKy0tIAorMi4zMC4wCisKZGlmZiAtLWdp dCBhL3BhdGNoZXMvbXVzbC0xLjIuMS8wMDAxLW1hdGgtd29ya2Fyb3VuZC1hcm12N20tY2xhbmct dmZwLWFzbS1jcmFzaGVzLnBhdGNoIGIvcGF0Y2hlcy9tdXNsLTEuMi4xLzAwMDEtbWF0aC13b3Jr YXJvdW5kLWFybXY3bS1jbGFuZy12ZnAtYXNtLWNyYXNoZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZmIyYjZmOAotLS0gL2Rldi9udWxsCisrKyBiL3BhdGNoZXMv bXVzbC0xLjIuMS8wMDAxLW1hdGgtd29ya2Fyb3VuZC1hcm12N20tY2xhbmctdmZwLWFzbS1jcmFz aGVzLnBhdGNoCkBAIC0wLDAgKzEsOTIgQEAKK0Zyb20gMDFiNThmNDhjNjA5ZWM3NWE3NzcyNjAz MzUwMzg5MGU0MjA1YzYwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdHJpY2sg T3BwZW5sYW5kZXIgPHBhdHJpY2sub3BwZW5sYW5kZXJAZ21haWwuY29tPgorRGF0ZTogTW9uLCAx MSBKYW4gMjAyMSAxNDoyNDo1NyArMTEwMAorU3ViamVjdDogW1BBVENIXSBtYXRoOiB3b3JrYXJv dW5kIGFybXY3bSBjbGFuZyB2ZnAgYXNtIGNyYXNoZXMKKworLi4vLi4vb2JqX2xsdm0vYmluL2Ns YW5nIC0tdGFyZ2V0PWFybXY3bS1saW51eC1tdXNsZWFiaWhmIC1zdGQ9Yzk5IC1ub3N0ZGluYyAt ZmZyZWVzdGFuZGluZyAtZnJvdW5kaW5nLW1hdGggLVdhLC0tbm9leGVjc3RhY2sgLURfWE9QRU5f U09VUkNFPTcwMCAtSS4uLy4uL3NyY19tdXNsL2FyY2gvYXJtIC1JLi4vLi4vc3JjX211c2wvYXJj aC9nZW5lcmljIC1Jb2JqL3NyYy9pbnRlcm5hbCAtSS4uLy4uL3NyY19tdXNsL3NyYy9pbmNsdWRl IC1JLi4vLi4vc3JjX211c2wvc3JjL2ludGVybmFsIC1Jb2JqL2luY2x1ZGUgLUkuLi8uLi9zcmNf bXVzbC9pbmNsdWRlICAtT3MgLXBpcGUgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLWZuby11bndpbmQt dGFibGVzIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLWZmdW5jdGlvbi1zZWN0aW9u cyAtZmRhdGEtc2VjdGlvbnMgLXcgLVdlcnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlv biAtV2Vycm9yPWltcGxpY2l0LWludCAtV2Vycm9yPXBvaW50ZXItc2lnbiAtV2Vycm9yPXBvaW50 ZXItYXJpdGggLVF1bnVzZWQtYXJndW1lbnRzIC1taW1wbGljaXQtaXQ9YWx3YXlzIC1XYSwtbXRo dW1iIC1EQlJPS0VOX1ZGUF9BU00gIC1mUElDIC1jIC1vIG9iai9zcmMvbWF0aC9hcm0vc3FydC5s byAuLi8uLi9zcmNfbXVzbC9zcmMvbWF0aC9hcm0vc3FydC5jCitQTEVBU0Ugc3VibWl0IGEgYnVn IHJlcG9ydCB0byBodHRwczovL2J1Z3MubGx2bS5vcmcvIGFuZCBpbmNsdWRlIHRoZSBjcmFzaCBi YWNrdHJhY2UsIHByZXByb2Nlc3NlZCBzb3VyY2UsIGFuZCBhc3NvY2lhdGVkIHJ1biBzY3JpcHQu CitTdGFjayBkdW1wOgorMC4JUHJvZ3JhbSBhcmd1bWVudHM6IC4uLy4uL29ial9sbHZtL2Jpbi9j bGFuZyAtLXRhcmdldD1hcm12N20tbGludXgtbXVzbGVhYmloZiAtc3RkPWM5OSAtbm9zdGRpbmMg LWZmcmVlc3RhbmRpbmcgLWZyb3VuZGluZy1tYXRoIC1XYSwtLW5vZXhlY3N0YWNrIC1EX1hPUEVO X1NPVVJDRT03MDAgLUkuLi8uLi9zcmNfbXVzbC9hcmNoL2FybSAtSS4uLy4uL3NyY19tdXNsL2Fy Y2gvZ2VuZXJpYyAtSW9iai9zcmMvaW50ZXJuYWwgLUkuLi8uLi9zcmNfbXVzbC9zcmMvaW5jbHVk ZSAtSS4uLy4uL3NyY19tdXNsL3NyYy9pbnRlcm5hbCAtSW9iai9pbmNsdWRlIC1JLi4vLi4vc3Jj X211c2wvaW5jbHVkZSAtT3MgLXBpcGUgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLWZuby11bndpbmQt dGFibGVzIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLWZmdW5jdGlvbi1zZWN0aW9u cyAtZmRhdGEtc2VjdGlvbnMgLXcgLVdlcnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlv biAtV2Vycm9yPWltcGxpY2l0LWludCAtV2Vycm9yPXBvaW50ZXItc2lnbiAtV2Vycm9yPXBvaW50 ZXItYXJpdGggLVF1bnVzZWQtYXJndW1lbnRzIC1taW1wbGljaXQtaXQ9YWx3YXlzIC1XYSwtbXRo dW1iIC1EQlJPS0VOX1ZGUF9BU00gLWZQSUMgLWMgLW8gb2JqL3NyYy9tYXRoL2FybS9zcXJ0Lmxv IC4uLy4uL3NyY19tdXNsL3NyYy9tYXRoL2FybS9zcXJ0LmMKKzEuCTxlb2Y+IHBhcnNlciBhdCBl bmQgb2YgZmlsZQorMi4JQ29kZSBnZW5lcmF0aW9uCiszLglSdW5uaW5nIHBhc3MgJ0Z1bmN0aW9u IFBhc3MgTWFuYWdlcicgb24gbW9kdWxlICcuLi8uLi9zcmNfbXVzbC9zcmMvbWF0aC9hcm0vc3Fy dC5jJy4KKzQuCVJ1bm5pbmcgcGFzcyAnQVJNIEluc3RydWN0aW9uIFNlbGVjdGlvbicgb24gZnVu Y3Rpb24gJ0BzcXJ0JworLi4vLi4vb2JqX2xsdm0vYmluL2NsYW5nKF9aTjRsbHZtM3N5czE1UHJp bnRTdGFja1RyYWNlRVJOU18xMXJhd19vc3RyZWFtRSsweDJhKVsweDU1NzU4MWE4NmI0Ml0KKy4u Ly4uL29ial9sbHZtL2Jpbi9jbGFuZyhfWk40bGx2bTNzeXMxN1J1blNpZ25hbEhhbmRsZXJzRXYr MHgzNClbMHg1NTc1ODFhODU4YWNdCisuLi8uLi9vYmpfbGx2bS9iaW4vY2xhbmcoKzB4MTZjYzMy NylbMHg1NTc1ODFhM2UzMjddCisuLi8uLi9vYmpfbGx2bS9iaW4vY2xhbmcoKzB4MTZjYzc4Nilb MHg1NTc1ODFhM2U3ODZdCisvdXNyL2xpYi9saWJwdGhyZWFkLnNvLjAoKzB4MTQwZjApWzB4N2Zi Y2JjNDc2MGYwXQorLi4vLi4vb2JqX2xsdm0vYmluL2NsYW5nKCsweGJjZmM5YylbMHg1NTc1ODBm NDFjOWNdCisuLi8uLi9vYmpfbGx2bS9iaW4vY2xhbmcoX1pOSzRsbHZtMTJSZWdzRm9yVmFsdWUx M2dldENvcHlUb1JlZ3NFTlNfN1NEVmFsdWVFUk5TXzEyU2VsZWN0aW9uREFHRVJLTlNfNVNETG9j RVJTMV9QUzFfUEtOU181VmFsdWVFTlNfM0lTRDhOb2RlVHlwZUUrMHgyYjApWzB4NTU3NTgyMGY1 YzIwXQorLi4vLi4vb2JqX2xsdm0vYmluL2NsYW5nKF9aTjRsbHZtMTlTZWxlY3Rpb25EQUdCdWls ZGVyMTR2aXNpdElubGluZUFzbUVSS05TXzhDYWxsQmFzZUUrMHgxZTRjKVsweDU1NzU4MjEwZjVh Nl0KKy4uLy4uL29ial9sbHZtL2Jpbi9jbGFuZyhfWk40bGx2bTE5U2VsZWN0aW9uREFHQnVpbGRl cjV2aXNpdEVSS05TXzExSW5zdHJ1Y3Rpb25FKzB4NjApWzB4NTU3NTgyMTFjOTU0XQorLi4vLi4v b2JqX2xsdm0vYmluL2NsYW5nKF9aTjRsbHZtMTZTZWxlY3Rpb25EQUdJU2VsMTZTZWxlY3RCYXNp Y0Jsb2NrRU5TXzE0aWxpc3RfaXRlcmF0b3JJTlNfMTJpbGlzdF9kZXRhaWwxMm5vZGVfb3B0aW9u c0lOU18xMUluc3RydWN0aW9uRUxiMEVMYjBFdkVFTGIwRUxiMUVFRVM2X1JiKzB4N2QpWzB4NTU3 NTgyMTQzZDA1XQorLi4vLi4vb2JqX2xsdm0vYmluL2NsYW5nKF9aTjRsbHZtMTZTZWxlY3Rpb25E QUdJU2VsMjBTZWxlY3RBbGxCYXNpY0Jsb2Nrc0VSS05TXzhGdW5jdGlvbkUrMHhlMDcpWzB4NTU3 NTgyMTQ2Mzk3XQorLi4vLi4vb2JqX2xsdm0vYmluL2NsYW5nKF9aTjRsbHZtMTZTZWxlY3Rpb25E QUdJU2VsMjBydW5Pbk1hY2hpbmVGdW5jdGlvbkVSTlNfMTVNYWNoaW5lRnVuY3Rpb25FKzB4NTcy KVsweDU1NzU4MjE0NmFhNl0KKy4uLy4uL29ial9sbHZtL2Jpbi9jbGFuZygrMHhkMjE4ZTMpWzB4 NTU3NTgxMDkzOGUzXQorLi4vLi4vb2JqX2xsdm0vYmluL2NsYW5nKCsweDEyMjYwZGYpWzB4NTU3 NTgxNTk4MGRmXQorLi4vLi4vb2JqX2xsdm0vYmluL2NsYW5nKF9aTjRsbHZtMTNGUFBhc3NNYW5h Z2VyMTNydW5PbkZ1bmN0aW9uRVJOU184RnVuY3Rpb25FKzB4MjBhKVsweDU1NzU4MTc3NDk1OF0K Ky4uLy4uL29ial9sbHZtL2Jpbi9jbGFuZyhfWk40bGx2bTEzRlBQYXNzTWFuYWdlcjExcnVuT25N b2R1bGVFUk5TXzZNb2R1bGVFKzB4MmQpWzB4NTU3NTgxNzc0Y2RkXQorLi4vLi4vb2JqX2xsdm0v YmluL2NsYW5nKF9aTjRsbHZtNmxlZ2FjeTE1UGFzc01hbmFnZXJJbXBsM3J1bkVSTlNfNk1vZHVs ZUUrMHgyNDQpWzB4NTU3NTgxNzc0NTI2XQorLi4vLi4vb2JqX2xsdm0vYmluL2NsYW5nKF9aTjVj bGFuZzE3RW1pdEJhY2tlbmRPdXRwdXRFUk5TXzE3RGlhZ25vc3RpY3NFbmdpbmVFUktOU18xOUhl YWRlclNlYXJjaE9wdGlvbnNFUktOU18xNENvZGVHZW5PcHRpb25zRVJLTlNfMTNUYXJnZXRPcHRp b25zRVJLTlNfMTFMYW5nT3B0aW9uc0VSS040bGx2bTEwRGF0YUxheW91dEVQTlNFXzZNb2R1bGVF TlNfMTNCYWNrZW5kQWN0aW9uRVN0MTB1bmlxdWVfcHRySU5TRV8xN3Jhd19wd3JpdGVfc3RyZWFt RVN0MTRkZWZhdWx0X2RlbGV0ZUlTTV9FRSsweDJlODMpWzB4NTU3NTgxYjk1YWMwXQorLi4vLi4v b2JqX2xsdm0vYmluL2NsYW5nKCsweDFlNjY3YzYpWzB4NTU3NTgyMWQ4N2M2XQorLi4vLi4vb2Jq X2xsdm0vYmluL2NsYW5nKF9aTjVjbGFuZzhQYXJzZUFTVEVSTlNfNFNlbWFFYmIrMHgyOWEpWzB4 NTU3NTgyNjgwMGM2XQorLi4vLi4vb2JqX2xsdm0vYmluL2NsYW5nKF9aTjVjbGFuZzE0RnJvbnRl bmRBY3Rpb243RXhlY3V0ZUV2KzB4NTUpWzB4NTU3NTgxZWE2MjExXQorLi4vLi4vb2JqX2xsdm0v YmluL2NsYW5nKF9aTjVjbGFuZzE2Q29tcGlsZXJJbnN0YW5jZTEzRXhlY3V0ZUFjdGlvbkVSTlNf MTRGcm9udGVuZEFjdGlvbkUrMHg1YmEpWzB4NTU3NTgxZTgxMTY2XQorLi4vLi4vb2JqX2xsdm0v YmluL2NsYW5nKF9aTjVjbGFuZzI1RXhlY3V0ZUNvbXBpbGVySW52b2NhdGlvbkVQTlNfMTZDb21w aWxlckluc3RhbmNlRSsweDJmYylbMHg1NTc1ODFlZmJlYjhdCisuLi8uLi9vYmpfbGx2bS9iaW4v Y2xhbmcoX1o4Y2MxX21haW5ONGxsdm04QXJyYXlSZWZJUEtjRUVTMl9QdisweDg0OClbMHg1NTc1 ODBlZmQ1MjVdCisuLi8uLi9vYmpfbGx2bS9iaW4vY2xhbmcoKzB4Yjg5ZTcxKVsweDU1NzU4MGVm YmU3MV0KKy4uLy4uL29ial9sbHZtL2Jpbi9jbGFuZygrMHgxYTdiYjY4KVsweDU1NzU4MWRlZGI2 OF0KKy4uLy4uL29ial9sbHZtL2Jpbi9jbGFuZyhfWk40bGx2bTIwQ3Jhc2hSZWNvdmVyeUNvbnRl eHQ5UnVuU2FmZWx5RU5TXzEyZnVuY3Rpb25fcmVmSUZ2dkVFRSsweDhiKVsweDU1NzU4MWEzZTQ5 ZF0KKy4uLy4uL29ial9sbHZtL2Jpbi9jbGFuZygrMHgxYTdjMWE2KVsweDU1NzU4MWRlZTFhNl0K Ky4uLy4uL29ial9sbHZtL2Jpbi9jbGFuZyhfWk5LNWNsYW5nNmRyaXZlcjExQ29tcGlsYXRpb24x NEV4ZWN1dGVDb21tYW5kRVJLTlMwXzdDb21tYW5kRVJQUzNfKzB4MjQ2KVsweDU1NzU4MWRkOGVk ZV0KKy4uLy4uL29ial9sbHZtL2Jpbi9jbGFuZyhfWk5LNWNsYW5nNmRyaXZlcjExQ29tcGlsYXRp b24xMUV4ZWN1dGVKb2JzRVJLTlMwXzdKb2JMaXN0RVJONGxsdm0xNVNtYWxsVmVjdG9ySW1wbElT dDRwYWlySWlQS05TMF83Q29tbWFuZEVFRUUrMHg2NClbMHg1NTc1ODFkZDhmY2FdCisuLi8uLi9v YmpfbGx2bS9iaW4vY2xhbmcoX1pONWNsYW5nNmRyaXZlcjZEcml2ZXIxOEV4ZWN1dGVDb21waWxh dGlvbkVSTlMwXzExQ29tcGlsYXRpb25FUk40bGx2bTE1U21hbGxWZWN0b3JJbXBsSVN0NHBhaXJJ aVBLTlMwXzdDb21tYW5kRUVFRSsweGJmKVsweDU1NzU4MWRkYzM4NV0KKy4uLy4uL29ial9sbHZt L2Jpbi9jbGFuZyhtYWluKzB4MTlkNilbMHg1NTc1ODBlODVkZThdCisvdXNyL2xpYi9saWJjLnNv LjYoX19saWJjX3N0YXJ0X21haW4rMHhmMilbMHg3ZmJjYmJlZTYxNTJdCisuLi8uLi9vYmpfbGx2 bS9iaW4vY2xhbmcoX3N0YXJ0KzB4MmUpWzB4NTU3NTgwZWZiNDJlXQorY2xhbmctMTE6IGVycm9y OiBjbGFuZyBmcm9udGVuZCBjb21tYW5kIGZhaWxlZCBkdWUgdG8gc2lnbmFsICh1c2UgLXYgdG8g c2VlIGludm9jYXRpb24pCitjbGFuZyB2ZXJzaW9uIDExLjAuMCAoaHR0cHM6Ly9naXRodWIuY29t L3JpY2hmZWxrZXIvbXVzbC1jcm9zcy1tYWtlIDc5NTI4YTBiYWFkMmM4NTA4N2QzMzA3NWYyY2Nk YmYxM2RjNTU2ZGQpCitUYXJnZXQ6IGFybXY3bS11bmtub3duLWxpbnV4LW11c2xlYWJpaGYKK1Ro cmVhZCBtb2RlbDogcG9zaXgKK0luc3RhbGxlZERpcjogL2hvbWUvcGF0cmljay9zcmMvdG9vbGNo YWluL211c2wtY3Jvc3MtbWFrZS9idWlsZC1jbGFuZy9sb2NhbC9vYmpfbXVzbC9hcm12N20tbGlu dXgtbXVzbGVhYmloZi8uLi8uLi9vYmpfbGx2bS9iaW4KK2NsYW5nLTExOiBub3RlOiBkaWFnbm9z dGljIG1zZzoKKyoqKioqKioqKioqKioqKioqKioqCisKK1BMRUFTRSBBVFRBQ0ggVEhFIEZPTExP V0lORyBGSUxFUyBUTyBUSEUgQlVHIFJFUE9SVDoKK1ByZXByb2Nlc3NlZCBzb3VyY2UocykgYW5k IGFzc29jaWF0ZWQgcnVuIHNjcmlwdChzKSBhcmUgbG9jYXRlZCBhdDoKK2NsYW5nLTExOiBub3Rl OiBkaWFnbm9zdGljIG1zZzogL3RtcC9zcXJ0LTcxYmU1NS5jCitjbGFuZy0xMTogbm90ZTogZGlh Z25vc3RpYyBtc2c6IC90bXAvc3FydC03MWJlNTUuc2gKK2NsYW5nLTExOiBub3RlOiBkaWFnbm9z dGljIG1zZzoKKy0tLQorIHNyYy9tYXRoL2FybS9mYWJzLmMgfCAyICstCisgc3JjL21hdGgvYXJt L3NxcnQuYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxl dGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9tYXRoL2FybS9mYWJzLmMgYi9zcmMvbWF0aC9h cm0vZmFicy5jCitpbmRleCBmODkwNTIwYS4uMzE2YmE3NzYgMTAwNjQ0CistLS0gYS9zcmMvbWF0 aC9hcm0vZmFicy5jCisrKysgYi9zcmMvbWF0aC9hcm0vZmFicy5jCitAQCAtMSw2ICsxLDYgQEAK KyAjaW5jbHVkZSA8bWF0aC5oPgorIAorLSNpZiBfX0FSTV9QQ1NfVkZQCisrI2lmIF9fQVJNX1BD U19WRlAgJiYgIUJST0tFTl9WRlBfQVNNCisgCisgZG91YmxlIGZhYnMoZG91YmxlIHgpCisgewor ZGlmZiAtLWdpdCBhL3NyYy9tYXRoL2FybS9zcXJ0LmMgYi9zcmMvbWF0aC9hcm0vc3FydC5jCitp bmRleCA4NzRhZjk2MC4uYWMxYTZlZDEgMTAwNjQ0CistLS0gYS9zcmMvbWF0aC9hcm0vc3FydC5j CisrKysgYi9zcmMvbWF0aC9hcm0vc3FydC5jCitAQCAtMSw2ICsxLDYgQEAKKyAjaW5jbHVkZSA8 bWF0aC5oPgorIAorLSNpZiBfX0FSTV9QQ1NfVkZQIHx8IChfX1ZGUF9GUF9fICYmICFfX1NPRlRG UF9fKQorKyNpZiAoX19BUk1fUENTX1ZGUCB8fCAoX19WRlBfRlBfXyAmJiAhX19TT0ZURlBfXykp ICYmICFCUk9LRU5fVkZQX0FTTQorIAorIGRvdWJsZSBzcXJ0KGRvdWJsZSB4KQorIHsKKy0tIAor Mi4zMC4wCisKLS0gCjIuMzAuMAoK --000000000000eee85f05b89940fc--