From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1488 invoked by alias); 5 Jul 2011 18:49:26 -0000 Received: (qmail 1477 invoked by uid 22791); 5 Jul 2011 18:49:23 -0000 X-SWARE-Spam-Status: No, hits=0.5 required=5.0 tests=AWL,BAYES_99,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_AV,TW_CX,TW_PM,TW_ZJ X-Spam-Check-By: sourceware.org Received: from mail-qw0-f47.google.com (HELO mail-qw0-f47.google.com) (209.85.216.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 05 Jul 2011 18:49:03 +0000 Received: by qwh5 with SMTP id 5so3543647qwh.20 for ; Tue, 05 Jul 2011 11:49:02 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.98.206 with SMTP id r14mr5901869qcn.18.1309891742473; Tue, 05 Jul 2011 11:49:02 -0700 (PDT) Received: by 10.229.214.83 with HTTP; Tue, 5 Jul 2011 11:49:02 -0700 (PDT) In-Reply-To: References: <20110605195441.GA1225@intel.com> <20110705143920.GA25294@intel.com> Date: Tue, 05 Jul 2011 19:09:00 -0000 Message-ID: Subject: Re: PATCH [1/n] X32: Add initial -x32 support From: "H.J. Lu" To: Uros Bizjak Cc: gcc-patches@gcc.gnu.org, "Joseph S. Myers" , Paolo Bonzini Content-Type: multipart/mixed; boundary=0016367f9678011e7004a756f065 X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-07/txt/msg00297.txt.bz2 --0016367f9678011e7004a756f065 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3491 On Tue, Jul 5, 2011 at 11:14 AM, Uros Bizjak wrote: > On Tue, Jul 5, 2011 at 7:54 PM, H.J. Lu wrote: > >>>> I'd like to start submitting a series of patches to enable x32: >>>> >>>> https://sites.google.com/site/x32abi/ >>>> >>>> The GCC x32 branch is very stable. There are no unexpected failures in >>>> C, C++, Fortran and Objective C testsuites. =A0SPEC CPU 2K/2006 compile >>>> and run correctly at -O2 and -O3. >>>> >>>> More than 90% of changes are in x86 backend. =A0I have submitted non-x= 86 >>>> backend patches. =A0Most of them have been reviewed and checked in. = =A0Only >>>> 4 patches are pending for review/approval. >>>> >>>> This is the first x86 backend patch to support x32. =A0By default, x32= is >>>> disabled and x32 run-time support isn't required. =A0OK for trunk? >>> >>> Please strip out --enable-ia32 stuff, it complicates things ATM. =A0I >>> assume that --enable-x32 applies only to 64bit targets, so this part > > > I think that better name of the file would be "t-linux64-x32". > > @@ -2631,6 +2640,7 @@ esac > =A0case ${target} in > =A0i[34567]86-*-linux* | x86_64-*-linux*) > =A0 =A0 =A0 =A0tmake_file=3D"${tmake_file} i386/t-pmm_malloc i386/t-i386" > + =A0 =A0 =A0 libgcc_tm_file=3D"${libgcc_tm_file} i386/value-unwind.h" > > Not yet. Removed. > @@ -58,25 +58,31 @@ see the files COPYING3 and COPYING.RUNTIME > respectively. =A0If not, see > > =A0#if TARGET_64BIT_DEFAULT > =A0#define SPEC_32 "m32" > -#define SPEC_64 "!m32" > +#define SPEC_64 "m32|mx32:;" > +#define SPEC_X32 "mx32" > =A0#else > -#define SPEC_32 "!m64" > +#define SPEC_32 "m64|mx32:;" > =A0#define SPEC_64 "m64" > +#define SPEC_X32 "mx32" > =A0#endif > > I really think that "!(m64|mx32)" is more descriptive and clear... I don't know if gcc spec supports it. I just followed mips backend. > =A0#undef LINK_SPEC > =A0#define LINK_SPEC "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \ > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0%{" SPEC_32 ":-m " GNU_USER_LINK_E= MULATION32 "} \ > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 %{" SPEC_X32 ":-m " GNU_USER_LINK_E= MULATIONX32 "} \ > =A0 %{shared:-shared} \ > =A0 %{!shared: \ > =A0 =A0 %{!static: \ > =A0 =A0 =A0 %{rdynamic:-export-dynamic} \ > =A0 =A0 =A0 %{" SPEC_32 ":-dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "} \ > - =A0 =A0 =A0%{" SPEC_64 ":-dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}= } \ > + =A0 =A0 =A0%{" SPEC_64 ":-dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}= \ > + =A0 =A0 =A0%{" SPEC_X32 ":-dynamic-linker " GNU_USER_DYNAMIC_LINKERX32 = "}} \ > =A0 =A0 %{static:-static}}" > > On the border of bikesheding, GNU_USER_LINK_EMULATION64_X32 and > GNU_USER_DYNAMIC_LINKER64_X32 sounds better to me. > > Same with the below: > > +#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2" > +#define UCLIBC_DYNAMIC_LINKERX32 "/lib/ldx32-uClibc.so.0" > +#define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32" > > +++ b/gcc/config/i386/t-linux-x32 > > Please rename above file to t-linux64-x32. X32 is the name of the psABI: https://sites.google.com/site/x32abi/ We have -mx32, -m32 and -m64 command line options and There are macros like TARGET_X32. I'd like to be consistent and avoid "64" when referring to x32 if possible. But I won't insist. Please let me know that you really won't like x32 without 64. > With above small changes, the patch looks OK to me. Please also wait > for build and options maintainer (CC'd) approvals. > > Thanks, > Uros. > Thanks. --=20 H.J. --0016367f9678011e7004a756f065 Content-Type: text/plain; charset=US-ASCII; name="gcc-x32-3.patch" Content-Disposition: attachment; filename="gcc-x32-3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gpr7lwve0 Content-length: 19407 MjAxMS0wNy0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoK CSogY29uZmlnLmdjYzogU3VwcG9ydCAtLWVuYWJsZS14MzIgZm9yIHg4NiBM aW51eAoJdGFyZ2V0cy4KCgkqIGNvbmZpZ3VyZS5hYzogU3VwcG9ydCAtLWVu YWJsZS14MzIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoJKiBjb25m aWcvaTM4Ni9nbnUtdXNlcjY0LmggKFNQRUNfNjQpOiBTdXBwb3J0IHgzMi4K CShTUEVDXzMyKTogTGlrZXdpc2UuCgkoQVNNX1NQRUMpOiBMaWtld2lzZS4K CShMSU5LX1NQRUMpOiBMaWtld2lzZS4KCShUQVJHRVRfVEhSRUFEX1NTUF9P RkZTRVQpOiBMaWtld2lzZS4KCShUQVJHRVRfVEhSRUFEX1NQTElUX1NUQUNL X09GRlNFVCk6IExpa2V3aXNlLgoJKFNQRUNfWDMyKTogTmV3LgoKCSogY29u ZmlnL2kzODYvaTM4Ni5oIChUQVJHRVRfWDMyKTogTmV3LgoJKFRBUkdFVF9M UDY0KTogTmV3LgoJKExPTkdfVFlQRV9TSVpFKTogTGlrZXdpc2UuCgkoUE9J TlRFUl9TSVpFKTogTGlrZXdpc2UuCgkoUE9JTlRFUlNfRVhURU5EX1VOU0lH TkVEKTogTGlrZXdpc2UuCgkoT1BUX0FSQ0g2NCk6IFN1cHBvcnQgeDMyLgoJ KE9QVF9BUkNIMzIpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pMzg2L2kzODYu b3B0IChteDMyKTogTmV3LgoKCSogY29uZmlnL2kzODYva2ZyZWVic2QtZ251 NjQuaCAoR05VX1VTRVJfTElOS19FTVVMQVRJT05YMzIpOiBOZXcuCgkoR0xJ QkNfRFlOQU1JQ19MSU5LRVJYMzIpOiBMaWtld2lzZS4KCSogY29uZmlnL2kz ODYvbGludXg2NC5oIChHTlVfVVNFUl9MSU5LX0VNVUxBVElPTlgzMik6IExp a2V3aXNlLgoJKEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyKTogTGlrZXdpc2Uu CgoJKiBjb25maWcvaTM4Ni90LWxpbnV4LXgzMjogTmV3LgoKCSogY29uZmln L2xpbnV4LmggKFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMik6IE5ldy4KCShC SU9OSUNfRFlOQU1JQ19MSU5LRVJYMzIpOiBMaWtld2lzZS4KCShHTlVfVVNF Ul9EWU5BTUlDX0xJTktFUlgzMik6IExpa2V3aXNlLgoKCSogZG9jL2luc3Rh bGwudGV4aTogRG9jdW1lbnQgLS1lbmFibGUteDMyLgoKCSogZG9jL2ludm9r ZS50ZXhpOiBEb2N1bWVudCAtbXgzMi4KCmRpZmYgLS1naXQgYS9nY2MvY29u ZmlnLmdjYyBiL2djYy9jb25maWcuZ2NjCmluZGV4IGM3N2Y0MGIuLjQ3ODdk NmIgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcuZ2NjCisrKyBiL2djYy9jb25m aWcuZ2NjCkBAIC0xMjc5LDcgKzEyNzksMTEgQEAgaVszNDU2N104Ni0qLWxp bnV4KiB8IGlbMzQ1NjddODYtKi1rZnJlZWJzZCotZ251IHwgaVszNDU2N104 Ni0qLWtuZXRic2QqLWdudSB8IGkKIAkJaWYgdGVzdCB4JGVuYWJsZV90YXJn ZXRzID0geGFsbDsgdGhlbgogCQkJdG1fZmlsZT0iJHt0bV9maWxlfSBpMzg2 L3g4Ni02NC5oIGkzODYvZ251LXVzZXI2NC5oIGkzODYvbGludXg2NC5oIgog CQkJdG1fZGVmaW5lcz0iJHt0bV9kZWZpbmVzfSBUQVJHRVRfQklfQVJDSD0x IgotCQkJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSBpMzg2L3QtbGludXg2 NCIKKwkJCWlmIHRlc3QgeCR7ZW5hYmxlX3gzMn0gPSB4eWVzOyB0aGVuCisJ CQkJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSBpMzg2L3QtbGludXgteDMy IgorCQkJZWxzZQorCQkJCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gaTM4 Ni90LWxpbnV4NjQiCisJCQlmaQogCQkJbmVlZF82NGJpdF9od2ludD15ZXMK IAkJCW5lZWRfNjRiaXRfaXNhPXllcwogCQkJY2FzZSBYIiR7d2l0aF9jcHV9 IiBpbgpAQCAtMTMxNyw3ICsxMzIxLDEyIEBAIHg4Nl82NC0qLWxpbnV4KiB8 IHg4Nl82NC0qLWtmcmVlYnNkKi1nbnUgfCB4ODZfNjQtKi1rbmV0YnNkKi1n bnUpCiAJeDg2XzY0LSota2ZyZWVic2QqLWdudSkgdG1fZmlsZT0iJHt0bV9m aWxlfSBrZnJlZWJzZC1nbnUuaCBpMzg2L2tmcmVlYnNkLWdudTY0LmgiIDs7 CiAJeDg2XzY0LSota25ldGJzZCotZ251KSB0bV9maWxlPSIke3RtX2ZpbGV9 IGtuZXRic2QtZ251LmgiIDs7CiAJZXNhYwotCXRtYWtlX2ZpbGU9IiR7dG1h a2VfZmlsZX0gaTM4Ni90LWxpbnV4NjQgaTM4Ni90LWNydHN0dWZmIGkzODYv dC1jcnRwYyBpMzg2L3QtY3J0Zm0gdC1kZnBydWxlcyIKKwlpZiB0ZXN0IHgk e2VuYWJsZV94MzJ9ID0geHllczsgdGhlbgorCQl0bWFrZV9maWxlPSIke3Rt YWtlX2ZpbGV9IGkzODYvdC1saW51eC14MzIiCisJZWxzZQorCQl0bWFrZV9m aWxlPSIke3RtYWtlX2ZpbGV9IGkzODYvdC1saW51eDY0IgorCWZpCisJdG1h a2VfZmlsZT0iJHt0bWFrZV9maWxlfSBpMzg2L3QtY3J0c3R1ZmYgaTM4Ni90 LWNydHBjIGkzODYvdC1jcnRmbSB0LWRmcHJ1bGVzIgogCTs7CiBpWzM0NTY3 XTg2LXBjLW1zZG9zZGpncHAqKQogCXhtX2ZpbGU9aTM4Ni94bS1kamdwcC5o CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvZ251LXVzZXI2NC5oIGIv Z2NjL2NvbmZpZy9pMzg2L2dudS11c2VyNjQuaAppbmRleCBiMDY5OTc1Li45 NTRmM2IyIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2kzODYvZ251LXVzZXI2 NC5oCisrKyBiL2djYy9jb25maWcvaTM4Ni9nbnUtdXNlcjY0LmgKQEAgLTU4 LDI1ICs1OCwzMSBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZ SU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKIAogI2lm IFRBUkdFVF82NEJJVF9ERUZBVUxUCiAjZGVmaW5lIFNQRUNfMzIgIm0zMiIK LSNkZWZpbmUgU1BFQ182NCAiIW0zMiIKKyNkZWZpbmUgU1BFQ182NCAibTMy fG14MzI6OyIKKyNkZWZpbmUgU1BFQ19YMzIgIm14MzIiCiAjZWxzZQotI2Rl ZmluZSBTUEVDXzMyICIhbTY0IgorI2RlZmluZSBTUEVDXzMyICJtNjR8bXgz Mjo7IgogI2RlZmluZSBTUEVDXzY0ICJtNjQiCisjZGVmaW5lIFNQRUNfWDMy ICJteDMyIgogI2VuZGlmCiAKICN1bmRlZiBBU01fU1BFQwotI2RlZmluZSBB U01fU1BFQyAiJXsiIFNQRUNfMzIgIjotLTMyfSAleyIgU1BFQ182NCAiOi0t NjR9IFwKKyNkZWZpbmUgQVNNX1NQRUMgIiV7IiBTUEVDXzMyICI6LS0zMn0g XAorICV7IiBTUEVDXzY0ICI6LS02NH0gXAorICV7IiBTUEVDX1gzMiAiOi0t eDMyfSBcCiAgJXshbW5vLXNzZTJhdng6JXttYXZ4Oi1tc3NlMmF2eH19ICV7 bXNzZTJhdng6JXshbWF2eDotbXNzZTJhdnh9fSIKIAogI3VuZGVmCUxJTktf U1BFQwogI2RlZmluZSBMSU5LX1NQRUMgIiV7IiBTUEVDXzY0ICI6LW0gIiBH TlVfVVNFUl9MSU5LX0VNVUxBVElPTjY0ICJ9IFwKICAgICAgICAgICAgICAg ICAgICAleyIgU1BFQ18zMiAiOi1tICIgR05VX1VTRVJfTElOS19FTVVMQVRJ T04zMiAifSBcCisgICAgICAgICAgICAgICAgICAgJXsiIFNQRUNfWDMyICI6 LW0gIiBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTlgzMiAifSBcCiAgICV7c2hh cmVkOi1zaGFyZWR9IFwKICAgJXshc2hhcmVkOiBcCiAgICAgJXshc3RhdGlj OiBcCiAgICAgICAle3JkeW5hbWljOi1leHBvcnQtZHluYW1pY30gXAogICAg ICAgJXsiIFNQRUNfMzIgIjotZHluYW1pYy1saW5rZXIgIiBHTlVfVVNFUl9E WU5BTUlDX0xJTktFUjMyICJ9IFwKLSAgICAgICV7IiBTUEVDXzY0ICI6LWR5 bmFtaWMtbGlua2VyICIgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVI2NCAifX0g XAorICAgICAgJXsiIFNQRUNfNjQgIjotZHluYW1pYy1saW5rZXIgIiBHTlVf VVNFUl9EWU5BTUlDX0xJTktFUjY0ICJ9IFwKKyAgICAgICV7IiBTUEVDX1gz MiAiOi1keW5hbWljLWxpbmtlciAiIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VS WDMyICJ9fSBcCiAgICAgJXtzdGF0aWM6LXN0YXRpY319IgogCiAvKiBTaW1p bGFyIHRvIHN0YW5kYXJkIEdOVSB1c2Vyc3BhY2UsIGJ1dCBhZGRpbmcgLWZm YXN0LW1hdGggc3VwcG9ydC4gICovCkBAIC0xMTAsMTAgKzExNiwxMyBAQCBz ZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVz cGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKIAogI2lmZGVmIFRBUkdFVF9MSUJD X1BST1ZJREVTX1NTUAogLyogaTM4NiBnbGliYyBwcm92aWRlcyBfX3N0YWNr X2Noa19ndWFyZCBpbiAlZ3M6MHgxNCwKKyAgIHgzMiBnbGliYyBwcm92aWRl cyBpdCBpbiAlZnM6MHgxOC4gCiAgICB4ODZfNjQgZ2xpYmMgcHJvdmlkZXMg aXQgaW4gJWZzOjB4MjguICAqLwotI2RlZmluZSBUQVJHRVRfVEhSRUFEX1NT UF9PRkZTRVQJKFRBUkdFVF82NEJJVCA/IDB4MjggOiAweDE0KQorI2RlZmlu ZSBUQVJHRVRfVEhSRUFEX1NTUF9PRkZTRVQgXAorICAoVEFSR0VUXzY0QklU ID8gKFRBUkdFVF9YMzIgPyAweDE4IDogMHgyOCkgOiAweDE0KQogCiAvKiBX ZSBzdGVhbCB0aGUgbGFzdCB0cmFuc2FjdGlvbmFsIG1lbW9yeSB3b3JkLiAg Ki8KICNkZWZpbmUgVEFSR0VUX0NBTl9TUExJVF9TVEFDSwotI2RlZmluZSBU QVJHRVRfVEhSRUFEX1NQTElUX1NUQUNLX09GRlNFVCAoVEFSR0VUXzY0QklU ID8gMHg3MCA6IDB4MzApCisjZGVmaW5lIFRBUkdFVF9USFJFQURfU1BMSVRf U1RBQ0tfT0ZGU0VUIFwKKyAgKFRBUkdFVF82NEJJVCA/IChUQVJHRVRfWDMy ID8gMHg0MCA6IDB4NzApIDogMHgzMCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9pMzg2L2kzODYuaCBiL2djYy9jb25maWcvaTM4Ni9pMzg2 LmgKaW5kZXggYTFhYzZiNi4uOGNlZjRlNyAxMDA2NDQKLS0tIGEvZ2NjL2Nv bmZpZy9pMzg2L2kzODYuaAorKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5o CkBAIC00Miw2ICs0Miw3IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5k IENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQog LyogUmVkZWZpbmVzIGZvciBvcHRpb24gbWFjcm9zLiAgKi8KIAogI2RlZmlu ZSBUQVJHRVRfNjRCSVQJT1BUSU9OX0lTQV82NEJJVAorI2RlZmluZSBUQVJH RVRfWDMyCU9QVElPTl9JU0FfWDMyCiAjZGVmaW5lIFRBUkdFVF9NTVgJT1BU SU9OX0lTQV9NTVgKICNkZWZpbmUgVEFSR0VUXzNETk9XCU9QVElPTl9JU0Ff M0ROT1cKICNkZWZpbmUgVEFSR0VUXzNETk9XX0EJT1BUSU9OX0lTQV8zRE5P V19BCkBAIC03Miw2ICs3Myw3IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMg YW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNl ZQogI2RlZmluZSBUQVJHRVRfUkRSTkQJT1BUSU9OX0lTQV9SRFJORAogI2Rl ZmluZSBUQVJHRVRfRjE2QwlPUFRJT05fSVNBX0YxNkMKIAorI2RlZmluZSBU QVJHRVRfTFA2NAkoVEFSR0VUXzY0QklUICYmICFUQVJHRVRfWDMyKQogCiAv KiBTU0U0LjEgZGVmaW5lcyByb3VuZCBpbnN0cnVjdGlvbnMgKi8KICNkZWZp bmUJT1BUSU9OX01BU0tfSVNBX1JPVU5ECU9QVElPTl9NQVNLX0lTQV9TU0U0 XzEKQEAgLTUxNiw4ICs1MTgsOCBAQCBleHRlcm4gY29uc3QgY2hhciAqaG9z dF9kZXRlY3RfbG9jYWxfY3B1IChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFy Z3YpOwogI2RlZmluZSBPUFRfQVJDSDY0ICIhbTMyIgogI2RlZmluZSBPUFRf QVJDSDMyICJtMzIiCiAjZWxzZQotI2RlZmluZSBPUFRfQVJDSDY0ICJtNjQi Ci0jZGVmaW5lIE9QVF9BUkNIMzIgIiFtNjQiCisjZGVmaW5lIE9QVF9BUkNI NjQgIm02NHxteDMyIgorI2RlZmluZSBPUFRfQVJDSDMyICJtNjR8bXgzMjo7 IgogI2VuZGlmCiAKIC8qIFN1cHBvcnQgZm9yIGNvbmZpZ3VyZS10aW1lIGRl ZmF1bHRzIG9mIHNvbWUgY29tbWFuZCBsaW5lIG9wdGlvbnMuCkBAIC02Mzcs NiArNjM5LDggQEAgZW51bSB0YXJnZXRfY3B1X2RlZmF1bHQKIAogI2RlZmlu ZSBTSE9SVF9UWVBFX1NJWkUgMTYKICNkZWZpbmUgSU5UX1RZUEVfU0laRSAz MgorI2RlZmluZSBMT05HX1RZUEVfU0laRSAoVEFSR0VUX1gzMiA/IDMyIDog QklUU19QRVJfV09SRCkKKyNkZWZpbmUgUE9JTlRFUl9TSVpFIChUQVJHRVRf WDMyID8gMzIgOiBCSVRTX1BFUl9XT1JEKQogI2RlZmluZSBMT05HX0xPTkdf VFlQRV9TSVpFIDY0CiAjZGVmaW5lIEZMT0FUX1RZUEVfU0laRSAzMgogI2Rl ZmluZSBET1VCTEVfVFlQRV9TSVpFIDY0CkBAIC0xNzQyLDYgKzE3NDYsMTMg QEAgZG8gewkJCQkJCQlcCiAgICBiZXR3ZWVuIHBvaW50ZXJzIGFuZCBhbnkg b3RoZXIgb2JqZWN0cyBvZiB0aGlzIG1hY2hpbmUgbW9kZS4gICovCiAjZGVm aW5lIFBtb2RlIChUQVJHRVRfNjRCSVQgPyBESW1vZGUgOiBTSW1vZGUpCiAK Ky8qIEEgQyBleHByZXNzaW9uIHdob3NlIHZhbHVlIGlzIHplcm8gaWYgcG9p bnRlcnMgdGhhdCBuZWVkIHRvIGJlIGV4dGVuZGVkCisgICBmcm9tIGJlaW5n IGBQT0lOVEVSX1NJWkUnIGJpdHMgd2lkZSB0byBgUG1vZGUnIGFyZSBzaWdu LWV4dGVuZGVkIGFuZAorICAgZ3JlYXRlciB0aGVuIHplcm8gaWYgdGhleSBh cmUgemVyby1leHRlbmRlZCBhbmQgbGVzcyB0aGVuIHplcm8gaWYgdGhlCisg ICBwdHJfZXh0ZW5kIGluc3RydWN0aW9uIHNob3VsZCBiZSB1c2VkLiAgKi8K KworI2RlZmluZSBQT0lOVEVSU19FWFRFTkRfVU5TSUdORUQgMQorCiAvKiBB IGZ1bmN0aW9uIGFkZHJlc3MgaW4gYSBjYWxsIGluc3RydWN0aW9uCiAgICBp cyBhIGJ5dGUgYWRkcmVzcyAoZm9yIGluZGV4aW5nIHB1cnBvc2VzKQogICAg c28gZ2l2ZSB0aGUgTUVNIHJ0eCBhIGJ5dGUncyBtb2RlLiAgKi8KZGlmZiAt LWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm9wdCBiL2djYy9jb25maWcv aTM4Ni9pMzg2Lm9wdAppbmRleCA5ODg2YjdiLi44ZGVhOTNlIDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQKKysrIGIvZ2NjL2NvbmZp Zy9pMzg2L2kzODYub3B0CkBAIC0zOTgsOSArMzk4LDEzIEBAIFRhcmdldCBS ZWplY3ROZWdhdGl2ZSBOZWdhdGl2ZShtNjQpIFJlcG9ydCBJbnZlcnNlTWFz ayhJU0FfNjRCSVQpIFZhcihpeDg2X2lzYV9mCiBHZW5lcmF0ZSAzMmJpdCBp Mzg2IGNvZGUKIAogbTY0Ci1UYXJnZXQgUmVqZWN0TmVnYXRpdmUgTmVnYXRp dmUobTMyKSBSZXBvcnQgTWFzayhJU0FfNjRCSVQpIFZhcihpeDg2X2lzYV9m bGFncykgU2F2ZQorVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIE5lZ2F0aXZlKG14 MzIpIFJlcG9ydCBNYXNrKElTQV82NEJJVCkgVmFyKGl4ODZfaXNhX2ZsYWdz KSBTYXZlCiBHZW5lcmF0ZSA2NGJpdCB4ODYtNjQgY29kZQogCitteDMyCitU YXJnZXQgUmVqZWN0TmVnYXRpdmUgTmVnYXRpdmUobTMyKSBSZXBvcnQgTWFz ayhJU0FfWDMyKSBWYXIoaXg4Nl9pc2FfZmxhZ3MpIFNhdmUKK0dlbmVyYXRl IDMyYml0IHg4Ni02NCBjb2RlCisKIG1tbXgKIFRhcmdldCBSZXBvcnQgTWFz ayhJU0FfTU1YKSBWYXIoaXg4Nl9pc2FfZmxhZ3MpIFNhdmUKIFN1cHBvcnQg TU1YIGJ1aWx0LWluIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZp Zy9pMzg2L2tmcmVlYnNkLWdudTY0LmggYi9nY2MvY29uZmlnL2kzODYva2Zy ZWVic2QtZ251NjQuaAppbmRleCBjMzc5OGE1Li4yMDg1Y2E1IDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL2kzODYva2ZyZWVic2QtZ251NjQuaAorKysgYi9n Y2MvY29uZmlnL2kzODYva2ZyZWVic2QtZ251NjQuaApAQCAtMjEsNiArMjEs OCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAg SWYgbm90IHNlZQogCiAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9O MzIgImVsZl9pMzg2X2Zic2QiCiAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1V TEFUSU9ONjQgImVsZl94ODZfNjRfZmJzZCIKKyNkZWZpbmUgR05VX1VTRVJf TElOS19FTVVMQVRJT05YMzIgImVsZjMyX3g4Nl82NF9mYnNkIgogCiAjZGVm aW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQuc28uMSIKICNk ZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYi9sZC1rZnJlZWJz ZC14ODYtNjQuc28uMSIKKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJY MzIgIi9saWIvbGQta2ZyZWVic2QteDMyLnNvLjEiCmRpZmYgLS1naXQgYS9n Y2MvY29uZmlnL2kzODYvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xp bnV4NjQuaAppbmRleCA1ZDMzMjI0Li41YjBhMjEyIDEwMDY0NAotLS0gYS9n Y2MvY29uZmlnL2kzODYvbGludXg2NC5oCisrKyBiL2djYy9jb25maWcvaTM4 Ni9saW51eDY0LmgKQEAgLTI2LDYgKzI2LDggQEAgc2VlIHRoZSBmaWxlcyBD T1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElm IG5vdCwgc2VlCiAKICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT04z MiAiZWxmX2kzODYiCiAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9O NjQgImVsZl94ODZfNjQiCisjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFU SU9OWDMyICJlbGYzMl94ODZfNjQiCiAKICNkZWZpbmUgR0xJQkNfRFlOQU1J Q19MSU5LRVIzMiAiL2xpYi9sZC1saW51eC5zby4yIgogI2RlZmluZSBHTElC Q19EWU5BTUlDX0xJTktFUjY0ICIvbGliNjQvbGQtbGludXgteDg2LTY0LnNv LjIiCisjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGlieDMy L2xkLWxpbnV4LXgzMi5zby4yIgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9p Mzg2L3QtbGludXgteDMyIGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgteDMy Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYWNmOTEK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eC14 MzIKQEAgLTAsMCArMSw0MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdDQy4KKyMKKyMgR0NDIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQor IyBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgR0NDIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUg ZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyMgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorCisjIE9uIERlYmlhbiwgVWJ1bnR1IGFuZCBv dGhlciBkZXJpdmF0aXZlIGRpc3RyaWJ1dGlvbnMsIHRoZSAzMmJpdCBsaWJy YXJpZXMKKyMgYXJlIGZvdW5kIGluIC9saWIzMiBhbmQgL3Vzci9saWIzMiwg L2xpYjY0IGFuZCAvdXNyL2xpYjY0IGFyZSBzeW1saW5rcyB0bworIyAvbGli IGFuZCAvdXNyL2xpYiwgd2hpbGUgb3RoZXIgZGlzdHJpYnV0aW9ucyBpbnN0 YWxsIGxpYnJhcmllcyBpbnRvIC9saWI2NAorIyBhbmQgL3Vzci9saWI2NC4g IFRoZSBMU0IgZG9lcyBub3QgZW5mb3JjZSB0aGUgdXNlIG9mIC9saWI2NCBh bmQgL3Vzci9saWI2NCwKKyMgaXQgZG9lc24ndCB0ZWxsIGFueXRoaW5nIGFi b3V0IHRoZSAzMmJpdCBsaWJyYXJpZXMgb24gdGhvc2Ugc3lzdGVtcy4gIFNl dAorIyBNVUxUSUxJQl9PU0RJUk5BTUVTIGFjY29yZGluZyB0byB3aGF0IGlz IGZvdW5kIG9uIHRoZSB0YXJnZXQuCisKKyMgVG8gc3VwcG9ydCBpMzg2LCB4 ODYtNjQgYW5kIHgzMiBsaWJyYXJpZXMsIHRoZSBkaXJlY3Rvcnkgc3RydWN0 cnVlCisjIHNob3VsZCBiZToKKyMKKyMgCS9saWIgaGFzIGkzODYgbGlicmFy aWVzLgorIyAJL2xpYjY0IGhhcyB4ODYtNjQgbGlicmFyaWVzLgorIyAJL2xp YngzMiBoYXMgeDMyIGxpYnJhcmllcy4KKyMKK01VTFRJTElCX09QVElPTlMg PSBtNjQvbTMyL214MzIKK01VTFRJTElCX0RJUk5BTUVTID0gNjQgMzIgeDMy CitNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vbGliNjQgJChpZiAkKHdpbGRj YXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4v dXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpIC4uL2xpYngzMgorCitMSUJH Q0MgPSBzdG1wLW11bHRpbGliCitJTlNUQUxMX0xJQkdDQyA9IGluc3RhbGwt bXVsdGlsaWIKKworRVhUUkFfTVVMVElMSUJfUEFSVFM9Y3J0YmVnaW4ubyBj cnRlbmQubyBjcnRiZWdpblMubyBjcnRlbmRTLm8gXAorCQkgICAgIGNydGJl Z2luVC5vIGNydHByZWMzMi5vIGNydHByZWM2NC5vIGNydHByZWM4MC5vIFwK KwkJICAgICBjcnRmYXN0bWF0aC5vCmRpZmYgLS1naXQgYS9nY2MvY29uZmln L2xpbnV4LmggYi9nY2MvY29uZmlnL2xpbnV4LmgKaW5kZXggZmM4OTdiMS4u ZGJiZWVhNSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9saW51eC5oCisrKyBi L2djYy9jb25maWcvbGludXguaApAQCAtNzcsOSArNzcsMTEgQEAgc2VlIHRo ZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3Rp dmVseS4gIElmIG5vdCwgc2VlCiAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJ TktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKICNkZWZpbmUgVUNMSUJDX0RZ TkFNSUNfTElOS0VSMzIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCiAjZGVmaW5l IFVDTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliL2xkNjQtdUNsaWJjLnNv LjAiCisjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYi9s ZHgzMi11Q2xpYmMuc28uMCIKICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElO S0VSICIvc3lzdGVtL2Jpbi9saW5rZXIiCiAjZGVmaW5lIEJJT05JQ19EWU5B TUlDX0xJTktFUjMyICIvc3lzdGVtL2Jpbi9saW5rZXIiCiAjZGVmaW5lIEJJ T05JQ19EWU5BTUlDX0xJTktFUjY0ICIvc3lzdGVtL2Jpbi9saW5rZXI2NCIK KyNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSWDMyICIvc3lzdGVtL2Jp bi9saW5rZXJ4MzIiCiAKICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5L RVIJCQkJCQlcCiAgIENIT09TRV9EWU5BTUlDX0xJTktFUiAoR0xJQkNfRFlO QU1JQ19MSU5LRVIsIFVDTElCQ19EWU5BTUlDX0xJTktFUiwJXApAQCAtOTAs NiArOTIsOSBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5H LlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKICNkZWZpbmUg R05VX1VTRVJfRFlOQU1JQ19MSU5LRVI2NAkJCQkJXAogICBDSE9PU0VfRFlO QU1JQ19MSU5LRVIgKEdMSUJDX0RZTkFNSUNfTElOS0VSNjQsIFVDTElCQ19E WU5BTUlDX0xJTktFUjY0LCBcCiAJCQkgQklPTklDX0RZTkFNSUNfTElOS0VS NjQpCisjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSWDMyCQkJCQlc CisgIENIT09TRV9EWU5BTUlDX0xJTktFUiAoR0xJQkNfRFlOQU1JQ19MSU5L RVJYMzIsIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiwgXAorCQkJIEJJT05J Q19EWU5BTUlDX0xJTktFUlgzMikKIAogLyogRGV0ZXJtaW5lIHdoZXRoZXIg dGhlIGVudGlyZSBjOTkgcnVudGltZQogICAgaXMgcHJlc2VudCBpbiB0aGUg cnVudGltZSBsaWJyYXJ5LiAgKi8KZGlmZiAtLWdpdCBhL2djYy9jb25maWd1 cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCmluZGV4IDVmMzY0MWIuLmJkZGFi ZWIgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrIGIvZ2NjL2Nv bmZpZ3VyZS5hYwpAQCAtNjExLDYgKzYxMSwxMSBAQCBBQ19BUkdfRU5BQkxF KG11bHRpbGliLAogW10sIFtlbmFibGVfbXVsdGlsaWI9eWVzXSkKIEFDX1NV QlNUKGVuYWJsZV9tdWx0aWxpYikKIAorIyBXaXRoIHgzMiBzdXBwb3J0CitB Q19BUkdfRU5BQkxFKHgzMiwKK1sgIC0tZW5hYmxlLXgzMiAgICAgICAgICAg IGVuYWJsZSB4MzIgbGlicmFyeSBzdXBwb3J0IGZvciBtdWx0aXBsZSBBQklz XSwKK1tdLCBbZW5hYmxlX3gzMj1ub10pCisKICMgRW5hYmxlIF9fY3hhX2F0 ZXhpdCBmb3IgQysrLgogQUNfQVJHX0VOQUJMRShfX2N4YV9hdGV4aXQsCiBb QVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLV9fY3hhX2F0ZXhpdF0sIFtlbmFi bGUgX19jeGFfYXRleGl0IGZvciBDKytdKV0sCmRpZmYgLS1naXQgYS9nY2Mv ZG9jL2luc3RhbGwudGV4aSBiL2djYy9kb2MvaW5zdGFsbC50ZXhpCmluZGV4 IDQ5YWFjOTUuLmU4OWMzOTYgMTAwNjQ0Ci0tLSBhL2djYy9kb2MvaW5zdGFs bC50ZXhpCisrKyBiL2djYy9kb2MvaW5zdGFsbC50ZXhpCkBAIC0xMTYxLDYg KzExNjEsMTEgQEAgYXNzdW1wdGlvbnMgbWFkZSBieSB0aGUgY29uZmlndXJl IHRlc3QgYXJlIGluY29ycmVjdC4KIFNwZWNpZnkgdGhhdCB0aGUgdGFyZ2V0 IGRvZXMgbm90IHN1cHBvcnQgVExTLgogVGhpcyBpcyBhbiBhbGlhcyBmb3Ig QG9wdGlvbnstLWVuYWJsZS10bHM9bm99LgogCitAaXRlbSAtLWVuYWJsZS14 MzIKK1RoaXMgb3B0aW9uIGVuYWJsZXMgeDMyIGxpYnJhcnkgc3VwcG9ydCBm b3IgbXVsdGlwbGUgQUJJcy4gQnkKK2RlZmF1bHQsIHgzMiBsaWJyYXJ5IHN1 cHBvcnQgaXMgZGlzYWJsZWQuICBJdCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IK K3g4Ni02NC4KKwogQGl0ZW0gLS13aXRoLWNwdT1AdmFye2NwdX0KIEBpdGVt eCAtLXdpdGgtY3B1LTMyPUB2YXJ7Y3B1fQogQGl0ZW14IC0td2l0aC1jcHUt NjQ9QHZhcntjcHV9CmRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhp IGIvZ2NjL2RvYy9pbnZva2UudGV4aQppbmRleCAxZmM0MDM4Li5mZDY3MTFj IDEwMDY0NAotLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCisrKyBiL2djYy9k b2MvaW52b2tlLnRleGkKQEAgLTYxMCw3ICs2MTAsNyBAQCBPYmplY3RpdmUt QyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCiAtbXBjMzIgLW1wYzY0 IC1tcGM4MCAtbXN0YWNrcmVhbGlnbiBAZ29sCiAtbW9taXQtbGVhZi1mcmFt ZS1wb2ludGVyICAtbW5vLXJlZC16b25lIC1tbm8tdGxzLWRpcmVjdC1zZWct cmVmcyBAZ29sCiAtbWNtb2RlbD1AdmFye2NvZGUtbW9kZWx9IC1tYWJpPUB2 YXJ7bmFtZX0gQGdvbAotLW0zMiAgLW02NCAtbWxhcmdlLWRhdGEtdGhyZXNo b2xkPUB2YXJ7bnVtfSBAZ29sCistbTMyIC1tNjQgLW14MzIgLW1sYXJnZS1k YXRhLXRocmVzaG9sZD1AdmFye251bX0gQGdvbAogLW1zc2UyYXZ4IC1tZmVu dHJ5IC1tOGJpdC1pZGl2IEBnb2wKIC1tYXZ4MjU2LXNwbGl0LXVuYWxpZ25l ZC1sb2FkIC1tYXZ4MjU2LXNwbGl0LXVuYWxpZ25lZC1zdG9yZX0KIApAQCAt MTI4NTEsMTUgKzEyODUxLDE5IEBAIG9uIEFNRCB4ODYtNjQgcHJvY2Vzc29y cyBpbiA2NC1iaXQgZW52aXJvbm1lbnRzLgogQHRhYmxlIEBnY2N0YWJvcHQK IEBpdGVtIC1tMzIKIEBpdGVteCAtbTY0CitAaXRlbXggLW14MzIKIEBvcGlu ZGV4IG0zMgogQG9waW5kZXggbTY0CitAb3BpbmRleCBteDMyCiBHZW5lcmF0 ZSBjb2RlIGZvciBhIDMyLWJpdCBvciA2NC1iaXQgZW52aXJvbm1lbnQuCi1U aGUgMzItYml0IGVudmlyb25tZW50IHNldHMgaW50LCBsb25nIGFuZCBwb2lu dGVyIHRvIDMyIGJpdHMgYW5kCitUaGUgQG9wdGlvbnstbTMyfSBvcHRpb24g c2V0cyBpbnQsIGxvbmcgYW5kIHBvaW50ZXIgdG8gMzIgYml0cyBhbmQKIGdl bmVyYXRlcyBjb2RlIHRoYXQgcnVucyBvbiBhbnkgaTM4NiBzeXN0ZW0uCi1U aGUgNjQtYml0IGVudmlyb25tZW50IHNldHMgaW50IHRvIDMyIGJpdHMgYW5k IGxvbmcgYW5kIHBvaW50ZXIKLXRvIDY0IGJpdHMgYW5kIGdlbmVyYXRlcyBj b2RlIGZvciBBTUQncyB4ODYtNjQgYXJjaGl0ZWN0dXJlLiBGb3IKLWRhcndp biBvbmx5IHRoZSAtbTY0IG9wdGlvbiB0dXJucyBvZmYgdGhlIEBvcHRpb257 LWZuby1waWN9IGFuZAotQG9wdGlvbnstbWR5bmFtaWMtbm8tcGljfSBvcHRp b25zLgorVGhlIEBvcHRpb257LW02NH0gb3B0aW9uIHNldHMgaW50IHRvIDMy IGJpdHMgYW5kIGxvbmcgYW5kIHBvaW50ZXIKK3RvIDY0IGJpdHMgYW5kIGdl bmVyYXRlcyBjb2RlIGZvciBBTUQncyB4ODYtNjQgYXJjaGl0ZWN0dXJlLgor VGhlIEBvcHRpb257LW14MzJ9IG9wdGlvbiBzZXRzIGludCwgbG9uZyBhbmQg cG9pbnRlciB0byAzMiBiaXRzIGFuZAorZ2VuZXJhdGVzIGNvZGUgZm9yIEFN RCdzIHg4Ni02NCBhcmNoaXRlY3R1cmUuCitGb3IgZGFyd2luIG9ubHkgdGhl IEBvcHRpb257LW02NH0gb3B0aW9uIHR1cm5zIG9mZiB0aGUgQG9wdGlvbnst Zm5vLXBpY30KK2FuZCBAb3B0aW9uey1tZHluYW1pYy1uby1waWN9IG9wdGlv bnMuCiAKIEBpdGVtIC1tbm8tcmVkLXpvbmUKIEBvcGluZGV4IG1uby1yZWQt em9uZQo= --0016367f9678011e7004a756f065--