From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22594 invoked by alias); 6 Jul 2011 10:24:18 -0000 Received: (qmail 22584 invoked by uid 22791); 6 Jul 2011 10:24:17 -0000 X-SWARE-Spam-Status: No, hits=-0.8 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from na3sys009aog104.obsmtp.com (HELO na3sys009aog104.obsmtp.com) (74.125.149.73) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 06 Jul 2011 10:23:51 +0000 Received: from sc-owa02.marvell.com ([65.219.4.130]) (using TLSv1) by na3sys009aob104.postini.com ([74.125.148.12]) with SMTP ID DSNKThQ3thrrAc/XOmEV+V4cZTaVedwk61Ee@postini.com; Wed, 06 Jul 2011 03:23:51 PDT Received: from SC-vEXCH2.marvell.com ([10.93.76.134]) by sc-owa02.marvell.com ([10.93.76.22]) with mapi; Wed, 6 Jul 2011 03:11:27 -0700 From: Xinyu Qi To: "gcc-patches@gcc.gnu.org" Date: Wed, 06 Jul 2011 10:24:00 -0000 Subject: [PATCH, ARM, iWMMXt][3/5]: built in define and expand Message-ID: <4737A960563B524DA805CA602BE04B306010D8E69A@SC-VEXCH2.marvell.com> Content-Type: multipart/mixed; boundary="_002_4737A960563B524DA805CA602BE04B306010D8E69ASCVEXCH2marve_" MIME-Version: 1.0 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/msg00324.txt.bz2 --_002_4737A960563B524DA805CA602BE04B306010D8E69ASCVEXCH2marve_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-length: 421 Hi, It is the third part of iWMMXt maintenance.=20 *config/arm/arm.c (enum arm_builtins): Add/fix iWMMXt built-in fcode. (builtin_description bdesc_2arg): Add/fix iWMMXt built in. (builtin_description bdesc_1arg): Same. (arm_init_iwmmxt_builtins): Define new built-in function type. Add/fix iWM= MXt built in. (arm_expand_builtin): New iWMMXt built in expand. Add boundary check for s= ome built in. Thanks, Xinyu --_002_4737A960563B524DA805CA602BE04B306010D8E69ASCVEXCH2marve_ Content-Type: application/octet-stream; name="3_arm_c.diff" Content-Description: 3_arm_c.diff Content-Disposition: attachment; filename="3_arm_c.diff"; size=37708; creation-date="Wed, 06 Jul 2011 02:26:53 GMT"; modification-date="Wed, 06 Jul 2011 02:26:53 GMT" Content-Transfer-Encoding: base64 Content-length: 51118 SW5kZXg6IGdjYy9jb25maWcvYXJtL2FybS5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGdjYy9jb25maWcvYXJtL2FybS5jCShyZXZpc2lvbiAxNzUy ODUpCisrKyBnY2MvY29uZmlnL2FybS9hcm0uYwkod29ya2luZyBjb3B5KQpA QCAtMTgwNzcsOCArMTgwNzcsMTUgQEAgc3RhdGljIG5lb25fYnVpbHRpbl9k YXR1bSBuZW9uX2J1aWx0aW5fZAogICAgRklYTUU/ICAqLwogZW51bSBhcm1f YnVpbHRpbnMKIHsKLSAgQVJNX0JVSUxUSU5fR0VUV0NYLAotICBBUk1fQlVJ TFRJTl9TRVRXQ1gsCisgIEFSTV9CVUlMVElOX0dFVFdDR1IwLAorICBBUk1f QlVJTFRJTl9HRVRXQ0dSMSwKKyAgQVJNX0JVSUxUSU5fR0VUV0NHUjIsCisg IEFSTV9CVUlMVElOX0dFVFdDR1IzLAorCisgIEFSTV9CVUlMVElOX1NFVFdD R1IwLAorICBBUk1fQlVJTFRJTl9TRVRXQ0dSMSwKKyAgQVJNX0JVSUxUSU5f U0VUV0NHUjIsCisgIEFSTV9CVUlMVElOX1NFVFdDR1IzLAogCiAgIEFSTV9C VUlMVElOX1daRVJPLAogCkBAIC0xODEwMSw3ICsxODEwOCwxMSBAQCBlbnVt IGFybV9idWlsdGlucwogICBBUk1fQlVJTFRJTl9XU0FESCwKICAgQVJNX0JV SUxUSU5fV1NBREhaLAogCi0gIEFSTV9CVUlMVElOX1dBTElHTiwKKyAgQVJN X0JVSUxUSU5fV0FMSUdOSSwKKyAgQVJNX0JVSUxUSU5fV0FMSUdOUjAsCisg IEFSTV9CVUlMVElOX1dBTElHTlIxLAorICBBUk1fQlVJTFRJTl9XQUxJR05S MiwKKyAgQVJNX0JVSUxUSU5fV0FMSUdOUjMsCiAKICAgQVJNX0JVSUxUSU5f VE1JQSwKICAgQVJNX0JVSUxUSU5fVE1JQVBILApAQCAtMTgyMzcsNiArMTgy NDgsOTcgQEAgZW51bSBhcm1fYnVpbHRpbnMKICAgQVJNX0JVSUxUSU5fV1VO UENLRUxVSCwKICAgQVJNX0JVSUxUSU5fV1VOUENLRUxVVywKIAorICBBUk1f QlVJTFRJTl9XQUJTQiwKKyAgQVJNX0JVSUxUSU5fV0FCU0gsCisgIEFSTV9C VUlMVElOX1dBQlNXLAorCisgIEFSTV9CVUlMVElOX1dBRERTVUJIWCwKKyAg QVJNX0JVSUxUSU5fV1NVQkFEREhYLAorCisgIEFSTV9CVUlMVElOX1dBQlNE SUZGQiwKKyAgQVJNX0JVSUxUSU5fV0FCU0RJRkZILAorICBBUk1fQlVJTFRJ Tl9XQUJTRElGRlcsCisKKyAgQVJNX0JVSUxUSU5fV0FERENILAorICBBUk1f QlVJTFRJTl9XQUREQ1csCisKKyAgQVJNX0JVSUxUSU5fV0FWRzQsCisgIEFS TV9CVUlMVElOX1dBVkc0UiwKKworICBBUk1fQlVJTFRJTl9XTUFERFNYLAor ICBBUk1fQlVJTFRJTl9XTUFERFVYLAorCisgIEFSTV9CVUlMVElOX1dNQURE U04sCisgIEFSTV9CVUlMVElOX1dNQUREVU4sCisKKyAgQVJNX0JVSUxUSU5f V01VTFdTTSwKKyAgQVJNX0JVSUxUSU5fV01VTFdVTSwKKworICBBUk1fQlVJ TFRJTl9XTVVMV1NNUiwKKyAgQVJNX0JVSUxUSU5fV01VTFdVTVIsCisKKyAg QVJNX0JVSUxUSU5fV01VTFdMLAorCisgIEFSTV9CVUlMVElOX1dNVUxTTVIs CisgIEFSTV9CVUlMVElOX1dNVUxVTVIsCisKKyAgQVJNX0JVSUxUSU5fV1FN VUxNLAorICBBUk1fQlVJTFRJTl9XUU1VTE1SLAorCisgIEFSTV9CVUlMVElO X1dRTVVMV00sCisgIEFSTV9CVUlMVElOX1dRTVVMV01SLAorCisgIEFSTV9C VUlMVElOX1dBRERCSFVTTSwKKyAgQVJNX0JVSUxUSU5fV0FEREJIVVNMLAor CisgIEFSTV9CVUlMVElOX1dRTUlBQkIsCisgIEFSTV9CVUlMVElOX1dRTUlB QlQsCisgIEFSTV9CVUlMVElOX1dRTUlBVEIsCisgIEFSTV9CVUlMVElOX1dR TUlBVFQsCisKKyAgQVJNX0JVSUxUSU5fV1FNSUFCQk4sCisgIEFSTV9CVUlM VElOX1dRTUlBQlROLAorICBBUk1fQlVJTFRJTl9XUU1JQVRCTiwKKyAgQVJN X0JVSUxUSU5fV1FNSUFUVE4sCisKKyAgQVJNX0JVSUxUSU5fV01JQUJCLAor ICBBUk1fQlVJTFRJTl9XTUlBQlQsCisgIEFSTV9CVUlMVElOX1dNSUFUQiwK KyAgQVJNX0JVSUxUSU5fV01JQVRULAorCisgIEFSTV9CVUlMVElOX1dNSUFC Qk4sCisgIEFSTV9CVUlMVElOX1dNSUFCVE4sCisgIEFSTV9CVUlMVElOX1dN SUFUQk4sCisgIEFSTV9CVUlMVElOX1dNSUFUVE4sCisKKyAgQVJNX0JVSUxU SU5fV01JQVdCQiwKKyAgQVJNX0JVSUxUSU5fV01JQVdCVCwKKyAgQVJNX0JV SUxUSU5fV01JQVdUQiwKKyAgQVJNX0JVSUxUSU5fV01JQVdUVCwKKworICBB Uk1fQlVJTFRJTl9XTUlBV0JCTiwKKyAgQVJNX0JVSUxUSU5fV01JQVdCVE4s CisgIEFSTV9CVUlMVElOX1dNSUFXVEJOLAorICBBUk1fQlVJTFRJTl9XTUlB V1RUTiwKKworICBBUk1fQlVJTFRJTl9XTUVSR0UsCisKKyAgQVJNX0JVSUxU SU5fVEFORENCLAorICBBUk1fQlVJTFRJTl9UQU5EQ0gsCisgIEFSTV9CVUlM VElOX1RBTkRDVywKKworICBBUk1fQlVJTFRJTl9UT1JDQiwKKyAgQVJNX0JV SUxUSU5fVE9SQ0gsCisgIEFSTV9CVUlMVElOX1RPUkNXLAorCisgIEFSTV9C VUlMVElOX1RPUlZTQ0IsCisgIEFSTV9CVUlMVElOX1RPUlZTQ0gsCisgIEFS TV9CVUlMVElOX1RPUlZTQ1csCisKKyAgQVJNX0JVSUxUSU5fVEVYVFJDQiwK KyAgQVJNX0JVSUxUSU5fVEVYVFJDSCwKKyAgQVJNX0JVSUxUSU5fVEVYVFJD VywKKwogICBBUk1fQlVJTFRJTl9USFJFQURfUE9JTlRFUiwKIAogICBBUk1f QlVJTFRJTl9ORU9OX0JBU0UsCkBAIC0xODgyNSw0NCArMTg5MjcsNTUgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBidWlsdGluX2Rlc2NyaXB0aW9uIAogICBJ V01NWFRfQlVJTFRJTiAoaXdtbXh0X3d1bnBja2loYiwgInd1bnBja2loYiIs IFdVTlBDS0lIQikKICAgSVdNTVhUX0JVSUxUSU4gKGl3bW14dF93dW5wY2tp aGgsICJ3dW5wY2tpaGgiLCBXVU5QQ0tJSEgpCiAgIElXTU1YVF9CVUlMVElO IChpd21teHRfd3VucGNraWh3LCAid3VucGNraWh3IiwgV1VOUENLSUhXKQot ICBJV01NWFRfQlVJTFRJTiAoaXdtbXh0X3dtYWRkcywgIndtYWRkcyIsIFdN QUREUykKLSAgSVdNTVhUX0JVSUxUSU4gKGl3bW14dF93bWFkZHUsICJ3bWFk ZHUiLCBXTUFERFUpCi0gIAorICBJV01NWFRfQlVJTFRJTiAoaXdtbXh0X3dh ZGRzdWJoeCwgIndhZGRzdWJoeCIsIFdBRERTVUJIWCkKKyAgSVdNTVhUX0JV SUxUSU4gKGl3bW14dF93c3ViYWRkaHgsICJ3c3ViYWRkaHgiLCBXU1VCQURE SFgpCisgIElXTU1YVF9CVUlMVElOIChpd21teHRfd2Fic2RpZmZiLCAid2Fi c2RpZmZiIiwgV0FCU0RJRkZCKQorICBJV01NWFRfQlVJTFRJTiAoaXdtbXh0 X3dhYnNkaWZmaCwgIndhYnNkaWZmaCIsIFdBQlNESUZGSCkKKyAgSVdNTVhU X0JVSUxUSU4gKGl3bW14dF93YWJzZGlmZncsICJ3YWJzZGlmZnciLCBXQUJT RElGRlcpCisgIElXTU1YVF9CVUlMVElOIChhZGRjdjRoaTMsICJ3YWRkaGMi LCBXQUREQ0gpCisgIElXTU1YVF9CVUlMVElOIChhZGRjdjJzaTMsICJ3YWRk d2MiLCBXQUREQ1cpCisgIElXTU1YVF9CVUlMVElOIChpd21teHRfYXZnNCwg Indhdmc0IiwgV0FWRzQpCisgIElXTU1YVF9CVUlMVElOIChpd21teHRfYXZn NHIsICJ3YXZnNHIiLCBXQVZHNFIpCisgIElXTU1YVF9CVUlMVElOIChpd21t eHRfd211bHdzbSwgIndtdWx3c20iLCBXTVVMV1NNKQorICBJV01NWFRfQlVJ TFRJTiAoaXdtbXh0X3dtdWx3dW0sICJ3bXVsd3VtIiwgV01VTFdVTSkKKyAg SVdNTVhUX0JVSUxUSU4gKGl3bW14dF93bXVsd3NtciwgIndtdWx3c21yIiwg V01VTFdTTVIpCisgIElXTU1YVF9CVUlMVElOIChpd21teHRfd211bHd1bXIs ICJ3bXVsd3VtciIsIFdNVUxXVU1SKQorICBJV01NWFRfQlVJTFRJTiAoaXdt bXh0X3dtdWx3bCwgIndtdWx3bCIsIFdNVUxXTCkKKyAgSVdNTVhUX0JVSUxU SU4gKGl3bW14dF93bXVsc21yLCAid211bHNtciIsIFdNVUxTTVIpCisgIElX TU1YVF9CVUlMVElOIChpd21teHRfd211bHVtciwgIndtdWx1bXIiLCBXTVVM VU1SKQorICBJV01NWFRfQlVJTFRJTiAoaXdtbXh0X3dxbXVsbSwgIndxbXVs bSIsIFdRTVVMTSkKKyAgSVdNTVhUX0JVSUxUSU4gKGl3bW14dF93cW11bG1y LCAid3FtdWxtciIsIFdRTVVMTVIpCisgIElXTU1YVF9CVUlMVElOIChpd21t eHRfd3FtdWx3bSwgIndxbXVsd20iLCBXUU1VTFdNKQorICBJV01NWFRfQlVJ TFRJTiAoaXdtbXh0X3dxbXVsd21yLCAid3FtdWx3bXIiLCBXUU1VTFdNUikK KyAgSVdNTVhUX0JVSUxUSU4gKGl3bW14dF93YWxpZ25yMCwgIndhbGlnbnIw IiwgV0FMSUdOUjApCisgIElXTU1YVF9CVUlMVElOIChpd21teHRfd2FsaWdu cjEsICJ3YWxpZ25yMSIsIFdBTElHTlIxKQorICBJV01NWFRfQlVJTFRJTiAo aXdtbXh0X3dhbGlnbnIyLCAid2FsaWducjIiLCBXQUxJR05SMikKKyAgSVdN TVhUX0JVSUxUSU4gKGl3bW14dF93YWxpZ25yMywgIndhbGlnbnIzIiwgV0FM SUdOUjMpCisKICNkZWZpbmUgSVdNTVhUX0JVSUxUSU4yKGNvZGUsIGJ1aWx0 aW4pIFwKICAgeyBGTF9JV01NWFQsIENPREVfRk9SXyMjY29kZSwgTlVMTCwg QVJNX0JVSUxUSU5fIyNidWlsdGluLCBVTktOT1dOLCAwIH0sCi0gIAorICBJ V01NWFRfQlVJTFRJTjIgKGl3bW14dF93YWRkYmh1c20sIFdBRERCSFVTTSkK KyAgSVdNTVhUX0JVSUxUSU4yIChpd21teHRfd2FkZGJodXNsLCBXQUREQkhV U0wpCiAgIElXTU1YVF9CVUlMVElOMiAoaXdtbXh0X3dwYWNraHNzLCBXUEFD S0hTUykKICAgSVdNTVhUX0JVSUxUSU4yIChpd21teHRfd3BhY2t3c3MsIFdQ QUNLV1NTKQogICBJV01NWFRfQlVJTFRJTjIgKGl3bW14dF93cGFja2Rzcywg V1BBQ0tEU1MpCiAgIElXTU1YVF9CVUlMVElOMiAoaXdtbXh0X3dwYWNraHVz LCBXUEFDS0hVUykKICAgSVdNTVhUX0JVSUxUSU4yIChpd21teHRfd3BhY2t3 dXMsIFdQQUNLV1VTKQogICBJV01NWFRfQlVJTFRJTjIgKGl3bW14dF93cGFj a2R1cywgV1BBQ0tEVVMpCi0gIElXTU1YVF9CVUlMVElOMiAoYXNobHY0aGkz X2RpLCAgICBXU0xMSCkKLSAgSVdNTVhUX0JVSUxUSU4yIChhc2hsdjRoaTNf aXdtbXh0LCBXU0xMSEkpCi0gIElXTU1YVF9CVUlMVElOMiAoYXNobHYyc2kz X2RpLCAgICBXU0xMVykKLSAgSVdNTVhUX0JVSUxUSU4yIChhc2hsdjJzaTNf aXdtbXh0LCBXU0xMV0kpCi0gIElXTU1YVF9CVUlMVElOMiAoYXNobGRpM19k aSwgICAgICBXU0xMRCkKLSAgSVdNTVhUX0JVSUxUSU4yIChhc2hsZGkzX2l3 bW14dCwgIFdTTExESSkKLSAgSVdNTVhUX0JVSUxUSU4yIChsc2hydjRoaTNf ZGksICAgIFdTUkxIKQotICBJV01NWFRfQlVJTFRJTjIgKGxzaHJ2NGhpM19p d21teHQsIFdTUkxISSkKLSAgSVdNTVhUX0JVSUxUSU4yIChsc2hydjJzaTNf ZGksICAgIFdTUkxXKQotICBJV01NWFRfQlVJTFRJTjIgKGxzaHJ2MnNpM19p d21teHQsIFdTUkxXSSkKLSAgSVdNTVhUX0JVSUxUSU4yIChsc2hyZGkzX2Rp LCAgICAgIFdTUkxEKQotICBJV01NWFRfQlVJTFRJTjIgKGxzaHJkaTNfaXdt bXh0LCAgV1NSTERJKQotICBJV01NWFRfQlVJTFRJTjIgKGFzaHJ2NGhpM19k aSwgICAgV1NSQUgpCi0gIElXTU1YVF9CVUlMVElOMiAoYXNocnY0aGkzX2l3 bW14dCwgV1NSQUhJKQotICBJV01NWFRfQlVJTFRJTjIgKGFzaHJ2MnNpM19k aSwgICAgV1NSQVcpCi0gIElXTU1YVF9CVUlMVElOMiAoYXNocnYyc2kzX2l3 bW14dCwgV1NSQVdJKQotICBJV01NWFRfQlVJTFRJTjIgKGFzaHJkaTNfZGks ICAgICAgV1NSQUQpCi0gIElXTU1YVF9CVUlMVElOMiAoYXNocmRpM19pd21t eHQsICBXU1JBREkpCi0gIElXTU1YVF9CVUlMVElOMiAocm9ydjRoaTNfZGks ICAgICBXUk9SSCkKLSAgSVdNTVhUX0JVSUxUSU4yIChyb3J2NGhpMywgICAg ICAgIFdST1JISSkKLSAgSVdNTVhUX0JVSUxUSU4yIChyb3J2MnNpM19kaSwg ICAgIFdST1JXKQotICBJV01NWFRfQlVJTFRJTjIgKHJvcnYyc2kzLCAgICAg ICAgV1JPUldJKQotICBJV01NWFRfQlVJTFRJTjIgKHJvcmRpM19kaSwgICAg ICAgV1JPUkQpCi0gIElXTU1YVF9CVUlMVElOMiAocm9yZGkzLCAgICAgICAg ICBXUk9SREkpCi0gIElXTU1YVF9CVUlMVElOMiAoaXdtbXh0X3dtYWN1eiwg ICBXTUFDVVopCi0gIElXTU1YVF9CVUlMVElOMiAoaXdtbXh0X3dtYWNzeiwg ICBXTUFDU1opCisgIElXTU1YVF9CVUlMVElOMiAoYXNobHY0aGkzX2RpLCBX U0xMSCkKKyAgSVdNTVhUX0JVSUxUSU4yIChhc2hsdjJzaTNfZGksIFdTTExX KQorICBJV01NWFRfQlVJTFRJTjIgKGFzaGxkaTNfZGksIFdTTExEKQorICBJ V01NWFRfQlVJTFRJTjIgKGxzaHJ2NGhpM19kaSwgV1NSTEgpCisgIElXTU1Y VF9CVUlMVElOMiAobHNocnYyc2kzX2RpLCBXU1JMVykKKyAgSVdNTVhUX0JV SUxUSU4yIChsc2hyZGkzX2RpLCBXU1JMRCkKKyAgSVdNTVhUX0JVSUxUSU4y IChhc2hydjRoaTNfZGksIFdTUkFIKQorICBJV01NWFRfQlVJTFRJTjIgKGFz aHJ2MnNpM19kaSwgV1NSQVcpCisgIElXTU1YVF9CVUlMVElOMiAoYXNocmRp M19kaSwgV1NSQUQpCisgIElXTU1YVF9CVUlMVElOMiAocm9ydjRoaTNfZGks IFdST1JIKQorICBJV01NWFRfQlVJTFRJTjIgKHJvcnYyc2kzX2RpLCBXUk9S VykKKyAgSVdNTVhUX0JVSUxUSU4yIChyb3JkaTNfZGksIFdST1JEKQorICBJ V01NWFRfQlVJTFRJTjIgKGl3bW14dF93bWFjdXosIFdNQUNVWikKKyAgSVdN TVhUX0JVSUxUSU4yIChpd21teHRfd21hY3N6LCBXTUFDU1opCiB9OwogICAK IHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiBiZGVz Y18xYXJnW10gPQpAQCAtMTg4ODUsNiArMTg5OTgsMTMgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBidWlsdGluX2Rlc2NyaXB0aW9uIAogICBJV01NWFRfQlVJ TFRJTiAoaXdtbXh0X3d1bnBja2Vsc2IsICJ3dW5wY2tlbHNiIiwgV1VOUENL RUxTQikKICAgSVdNTVhUX0JVSUxUSU4gKGl3bW14dF93dW5wY2tlbHNoLCAi d3VucGNrZWxzaCIsIFdVTlBDS0VMU0gpCiAgIElXTU1YVF9CVUlMVElOIChp d21teHRfd3VucGNrZWxzdywgInd1bnBja2Vsc3ciLCBXVU5QQ0tFTFNXKQor ICBJV01NWFRfQlVJTFRJTiAoaXdtbXh0X3dhYnN2OHFpMywgIndhYnNiIiwg V0FCU0IpCisgIElXTU1YVF9CVUlMVElOIChpd21teHRfd2Fic3Y0aGkzLCAi d2Fic2giLCBXQUJTSCkKKyAgSVdNTVhUX0JVSUxUSU4gKGl3bW14dF93YWJz djJzaTMsICJ3YWJzdyIsIFdBQlNXKQorCisgIElXTU1YVF9CVUlMVElOICh0 YmNzdHY4cWksICJ0YmNzdGIiLCBUQkNTVEIpCisgIElXTU1YVF9CVUlMVElO ICh0YmNzdHY0aGksICJ0YmNzdGgiLCBUQkNTVEgpCisgIElXTU1YVF9CVUlM VElOICh0YmNzdHYyc2ksICJ0YmNzdHciLCBUQkNTVFcpCiB9OwogICAKIC8q IFNldCB1cCBhbGwgdGhlIGlXTU1YdCBidWlsdGlucy4gIFRoaXMgaXMgbm90 IGNhbGxlZCBpZgpAQCAtMTg5MDAsOSArMTkwMjAsNiBAQCBhcm1faW5pdF9p d21teHRfYnVpbHRpbnMgKHZvaWQpCiAgIHRyZWUgVjRISV90eXBlX25vZGUg PSBidWlsZF92ZWN0b3JfdHlwZV9mb3JfbW9kZSAoaW50SElfdHlwZV9ub2Rl LCBWNEhJbW9kZSk7CiAgIHRyZWUgVjhRSV90eXBlX25vZGUgPSBidWlsZF92 ZWN0b3JfdHlwZV9mb3JfbW9kZSAoaW50UUlfdHlwZV9ub2RlLCBWOFFJbW9k ZSk7CiAKLSAgdHJlZSBpbnRfZnR5cGVfaW50Ci0gICAgPSBidWlsZF9mdW5j dGlvbl90eXBlX2xpc3QgKGludGVnZXJfdHlwZV9ub2RlLAotCQkJCWludGVn ZXJfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwogICB0cmVlIHY4cWlfZnR5cGVf djhxaV92OHFpX2ludAogICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0 IChWOFFJX3R5cGVfbm9kZSwKIAkJCQlWOFFJX3R5cGVfbm9kZSwgVjhRSV90 eXBlX25vZGUsCkBAIC0xODk2NCw2ICsxOTA4MSw5IEBAIGFybV9pbml0X2l3 bW14dF9idWlsdGlucyAodm9pZCkKICAgdHJlZSB2NGhpX2Z0eXBlX3Yyc2lf djJzaQogICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNEhJX3R5 cGVfbm9kZSwKIAkJCQlWMlNJX3R5cGVfbm9kZSwgVjJTSV90eXBlX25vZGUs IE5VTExfVFJFRSk7CisgIHRyZWUgdjhxaV9mdHlwZV92NGhpX3Y4cWkKKyAg ICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjhRSV90eXBlX25vZGUs CisJICAgICAgICAgICAgICAgICAgICAgICAgVjRISV90eXBlX25vZGUsIFY4 UUlfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwogICB0cmVlIHYyc2lfZnR5cGVf djRoaV92NGhpCiAgICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKFYy U0lfdHlwZV9ub2RlLAogCQkJCVY0SElfdHlwZV9ub2RlLCBWNEhJX3R5cGVf bm9kZSwgTlVMTF9UUkVFKTsKQEAgLTE4OTc4LDEyICsxOTA5OCwxMCBAQCBh cm1faW5pdF9pd21teHRfYnVpbHRpbnMgKHZvaWQpCiAgICAgPSBidWlsZF9m dW5jdGlvbl90eXBlX2xpc3QgKFYyU0lfdHlwZV9ub2RlLAogCQkJCVYyU0lf dHlwZV9ub2RlLCBsb25nX2xvbmdfaW50ZWdlcl90eXBlX25vZGUsCiAJCQkJ TlVMTF9UUkVFKTsKLSAgdHJlZSB2b2lkX2Z0eXBlX2ludF9pbnQKLSAgICA9 IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAodm9pZF90eXBlX25vZGUsCi0J CQkJaW50ZWdlcl90eXBlX25vZGUsIGludGVnZXJfdHlwZV9ub2RlLAotCQkJ CU5VTExfVFJFRSk7CiAgIHRyZWUgZGlfZnR5cGVfdm9pZAogICAgID0gYnVp bGRfZnVuY3Rpb25fdHlwZV9saXN0IChsb25nX2xvbmdfdW5zaWduZWRfdHlw ZV9ub2RlLCBOVUxMX1RSRUUpOworICB0cmVlIGludF9mdHlwZV92b2lkCisg ICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKGludGVnZXJfdHlwZV9u b2RlLCBOVUxMX1RSRUUpOwogICB0cmVlIGRpX2Z0eXBlX3Y4cWkKICAgICA9 IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAobG9uZ19sb25nX2ludGVnZXJf dHlwZV9ub2RlLAogCQkJCVY4UUlfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwpA QCAtMTg5OTksNiArMTkxMTcsMTUgQEAgYXJtX2luaXRfaXdtbXh0X2J1aWx0 aW5zICh2b2lkKQogICB0cmVlIHY0aGlfZnR5cGVfdjhxaQogICAgID0gYnVp bGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNEhJX3R5cGVfbm9kZSwKIAkJCQlW OFFJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKyAgdHJlZSB2OHFpX2Z0eXBl X3Y4cWkKKyAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjhRSV90 eXBlX25vZGUsCisJICAgICAgICAgICAgICAgICAgICAgICAgVjhRSV90eXBl X25vZGUsIE5VTExfVFJFRSk7CisgIHRyZWUgdjRoaV9mdHlwZV92NGhpCisg ICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKFY0SElfdHlwZV9ub2Rl LAorCSAgICAgICAgICAgICAgICAgICAgICAgIFY0SElfdHlwZV9ub2RlLCBO VUxMX1RSRUUpOworICB0cmVlIHYyc2lfZnR5cGVfdjJzaQorICAgID0gYnVp bGRfZnVuY3Rpb25fdHlwZV9saXN0IChWMlNJX3R5cGVfbm9kZSwKKwkgICAg ICAgICAgICAgICAgICAgICAgICBWMlNJX3R5cGVfbm9kZSwgTlVMTF9UUkVF KTsKIAogICB0cmVlIGRpX2Z0eXBlX2RpX3Y0aGlfdjRoaQogICAgID0gYnVp bGRfZnVuY3Rpb25fdHlwZV9saXN0IChsb25nX2xvbmdfdW5zaWduZWRfdHlw ZV9ub2RlLApAQCAtMTkwMjYsNyArMTkxNTMsNDAgQEAgYXJtX2luaXRfaXdt bXh0X2J1aWx0aW5zICh2b2lkKQogCQkJCWxvbmdfbG9uZ191bnNpZ25lZF90 eXBlX25vZGUsCiAJCQkJbG9uZ19sb25nX3Vuc2lnbmVkX3R5cGVfbm9kZSwK IAkJCQlOVUxMX1RSRUUpOwotICAKKyAgdHJlZSB2MnNpX2Z0eXBlX3Yyc2lf djRoaV92NGhpCisgICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKFYy U0lfdHlwZV9ub2RlLAorCSAgICAgICAgICAgICAgICAgICAgICAgIFYyU0lf dHlwZV9ub2RlLCBWNEhJX3R5cGVfbm9kZSwKKwkgICAgICAgICAgICAgICAg ICAgICAgICBWNEhJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKyAgdHJlZSB2 MnNpX2Z0eXBlX3Yyc2lfdjhxaV92OHFpCisgICAgPSBidWlsZF9mdW5jdGlv bl90eXBlX2xpc3QgKFYyU0lfdHlwZV9ub2RlLAorCSAgICAgICAgICAgICAg ICAgICAgICAgIFYyU0lfdHlwZV9ub2RlLCBWOFFJX3R5cGVfbm9kZSwKKwkJ CQlWOFFJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKyAgdHJlZSBkaV9mdHlw ZV9kaV92MnNpX3Yyc2kKKyAgICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xp c3QgKGxvbmdfbG9uZ191bnNpZ25lZF90eXBlX25vZGUsCisgCQkJICAgICAg ICAgbG9uZ19sb25nX3Vuc2lnbmVkX3R5cGVfbm9kZSwKKyAJCQkgICAgICAg ICBWMlNJX3R5cGVfbm9kZSwgVjJTSV90eXBlX25vZGUsCisgCQkJCSBOVUxM X1RSRUUpOworICAgdHJlZSBkaV9mdHlwZV9kaV9kaV9pbnQKKyAgICAgPSBi dWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKGxvbmdfbG9uZ191bnNpZ25lZF90 eXBlX25vZGUsCisgCQkJICAgICAgICAgbG9uZ19sb25nX3Vuc2lnbmVkX3R5 cGVfbm9kZSwKKyAJCQkgICAJIGxvbmdfbG9uZ191bnNpZ25lZF90eXBlX25v ZGUsCisgCQkJCSBpbnRlZ2VyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKyAg IHRyZWUgdm9pZF9mdHlwZV92b2lkCisgICAgID0gYnVpbGRfZnVuY3Rpb25f dHlwZV9saXN0ICh2b2lkX3R5cGVfbm9kZSwKKwkgICAgICAgICAgICAgICAg ICAgICAgICAgTlVMTF9UUkVFKTsKKyAgIHRyZWUgdm9pZF9mdHlwZV9pbnQK KyAgICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKHZvaWRfdHlwZV9u b2RlLAorIAkJCSAgICAgICAgIGludGVnZXJfdHlwZV9ub2RlLCBOVUxMX1RS RUUpOworICAgdHJlZSB2OHFpX2Z0eXBlX2NoYXIKKyAgICAgPSBidWlsZF9m dW5jdGlvbl90eXBlX2xpc3QgKFY4UUlfdHlwZV9ub2RlLAorIAkJCSAgICAg ICAgIHNpZ25lZF9jaGFyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKyAgIHRy ZWUgdjRoaV9mdHlwZV9zaG9ydAorICAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5 cGVfbGlzdCAoVjRISV90eXBlX25vZGUsCisgCQkJICAgICAgICAgc2hvcnRf aW50ZWdlcl90eXBlX25vZGUsIE5VTExfVFJFRSk7CisgICB0cmVlIHYyc2lf ZnR5cGVfaW50CisgICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChW MlNJX3R5cGVfbm9kZSwKKyAJCQkgICAgICAgICBpbnRlZ2VyX3R5cGVfbm9k ZSwgTlVMTF9UUkVFKTsKKwogICAvKiBBZGQgYWxsIGJ1aWx0aW5zIHRoYXQg YXJlIG1vcmUgb3IgbGVzcyBzaW1wbGUgb3BlcmF0aW9ucyBvbiB0d28KICAg ICAgb3BlcmFuZHMuICAqLwogICBmb3IgKGkgPSAwLCBkID0gYmRlc2NfMmFy ZzsgaSA8IEFSUkFZX1NJWkUgKGJkZXNjXzJhcmcpOyBpKyssIGQrKykKQEAg LTE5MDY5LDggKzE5MjI5LDE0IEBAIGFybV9pbml0X2l3bW14dF9idWlsdGlu cyAodm9pZCkKIAkJQVJNX0JVSUxUSU5fICMjIENPREUpCiAKICAgaXdtbXhf bWJ1aWx0aW4gKCJ3emVybyIsIGRpX2Z0eXBlX3ZvaWQsIFdaRVJPKTsKLSAg aXdtbXhfbWJ1aWx0aW4gKCJzZXR3Y3giLCB2b2lkX2Z0eXBlX2ludF9pbnQs IFNFVFdDWCk7Ci0gIGl3bW14X21idWlsdGluICgiZ2V0d2N4IiwgaW50X2Z0 eXBlX2ludCwgR0VUV0NYKTsKKyAgaXdtbXhfbWJ1aWx0aW4gKCJzZXR3Y2dy MCIsIHZvaWRfZnR5cGVfaW50LCBTRVRXQ0dSMCk7CisgIGl3bW14X21idWls dGluICgic2V0d2NncjEiLCB2b2lkX2Z0eXBlX2ludCwgU0VUV0NHUjEpOwor ICBpd21teF9tYnVpbHRpbiAoInNldHdjZ3IyIiwgdm9pZF9mdHlwZV9pbnQs IFNFVFdDR1IyKTsKKyAgaXdtbXhfbWJ1aWx0aW4gKCJzZXR3Y2dyMyIsIHZv aWRfZnR5cGVfaW50LCBTRVRXQ0dSMyk7CisgIGl3bW14X21idWlsdGluICgi Z2V0d2NncjAiLCBpbnRfZnR5cGVfdm9pZCwgR0VUV0NHUjApOworICBpd21t eF9tYnVpbHRpbiAoImdldHdjZ3IxIiwgaW50X2Z0eXBlX3ZvaWQsIEdFVFdD R1IxKTsKKyAgaXdtbXhfbWJ1aWx0aW4gKCJnZXR3Y2dyMiIsIGludF9mdHlw ZV92b2lkLCBHRVRXQ0dSMik7CisgIGl3bW14X21idWlsdGluICgiZ2V0d2Nn cjMiLCBpbnRfZnR5cGVfdm9pZCwgR0VUV0NHUjMpOwogCiAgIGl3bW14X21i dWlsdGluICgid3NsbGgiLCB2NGhpX2Z0eXBlX3Y0aGlfZGksIFdTTExIKTsK ICAgaXdtbXhfbWJ1aWx0aW4gKCJ3c2xsdyIsIHYyc2lfZnR5cGVfdjJzaV9k aSwgV1NMTFcpOwpAQCAtMTkxMDIsOCArMTkyNjgsMTQgQEAgYXJtX2luaXRf aXdtbXh0X2J1aWx0aW5zICh2b2lkKQogCiAgIGl3bW14X21idWlsdGluICgi d3NodWZoIiwgdjRoaV9mdHlwZV92NGhpX2ludCwgV1NIVUZIKTsKIAotICBp d21teF9tYnVpbHRpbiAoIndzYWRiIiwgdjJzaV9mdHlwZV92OHFpX3Y4cWks IFdTQURCKTsKLSAgaXdtbXhfbWJ1aWx0aW4gKCJ3c2FkaCIsIHYyc2lfZnR5 cGVfdjRoaV92NGhpLCBXU0FESCk7CisgIGl3bW14X21idWlsdGluICgid3Nh ZGIiLCB2MnNpX2Z0eXBlX3Yyc2lfdjhxaV92OHFpLCBXU0FEQik7CisgIGl3 bW14X21idWlsdGluICgid3NhZGgiLCB2MnNpX2Z0eXBlX3Yyc2lfdjRoaV92 NGhpLCBXU0FESCk7CisgIGl3bW14X21idWlsdGluICgid21hZGRzIiwgdjJz aV9mdHlwZV92NGhpX3Y0aGksIFdNQUREUyk7CisgIGl3bW14X21idWlsdGlu ICgid21hZGRzeCIsIHYyc2lfZnR5cGVfdjRoaV92NGhpLCBXTUFERFNYKTsK KyAgaXdtbXhfbWJ1aWx0aW4gKCJ3bWFkZHNuIiwgdjJzaV9mdHlwZV92NGhp X3Y0aGksIFdNQUREU04pOworICBpd21teF9tYnVpbHRpbiAoIndtYWRkdSIs IHYyc2lfZnR5cGVfdjRoaV92NGhpLCBXTUFERFUpOworICBpd21teF9tYnVp bHRpbiAoIndtYWRkdXgiLCB2MnNpX2Z0eXBlX3Y0aGlfdjRoaSwgV01BRERV WCk7CisgIGl3bW14X21idWlsdGluICgid21hZGR1biIsIHYyc2lfZnR5cGVf djRoaV92NGhpLCBXTUFERFVOKTsKICAgaXdtbXhfbWJ1aWx0aW4gKCJ3c2Fk YnoiLCB2MnNpX2Z0eXBlX3Y4cWlfdjhxaSwgV1NBREJaKTsKICAgaXdtbXhf bWJ1aWx0aW4gKCJ3c2FkaHoiLCB2MnNpX2Z0eXBlX3Y0aGlfdjRoaSwgV1NB REhaKTsKIApAQCAtMTkxMjUsNiArMTkyOTcsOSBAQCBhcm1faW5pdF9pd21t eHRfYnVpbHRpbnMgKHZvaWQpCiAgIGl3bW14X21idWlsdGluICgidG1vdm1z a2giLCBpbnRfZnR5cGVfdjRoaSwgVE1PVk1TS0gpOwogICBpd21teF9tYnVp bHRpbiAoInRtb3Ztc2t3IiwgaW50X2Z0eXBlX3Yyc2ksIFRNT1ZNU0tXKTsK IAorICBpd21teF9tYnVpbHRpbiAoIndhZGRiaHVzbSIsIHY4cWlfZnR5cGVf djRoaV92OHFpLCBXQUREQkhVU00pOworICBpd21teF9tYnVpbHRpbiAoIndh ZGRiaHVzbCIsIHY4cWlfZnR5cGVfdjRoaV92OHFpLCBXQUREQkhVU0wpOwor CiAgIGl3bW14X21idWlsdGluICgid3BhY2toc3MiLCB2OHFpX2Z0eXBlX3Y0 aGlfdjRoaSwgV1BBQ0tIU1MpOwogICBpd21teF9tYnVpbHRpbiAoIndwYWNr aHVzIiwgdjhxaV9mdHlwZV92NGhpX3Y0aGksIFdQQUNLSFVTKTsKICAgaXdt bXhfbWJ1aWx0aW4gKCJ3cGFja3d1cyIsIHY0aGlfZnR5cGVfdjJzaV92MnNp LCBXUEFDS1dVUyk7CkBAIC0xOTE1MCw3ICsxOTMyNSw3IEBAIGFybV9pbml0 X2l3bW14dF9idWlsdGlucyAodm9pZCkKICAgaXdtbXhfbWJ1aWx0aW4gKCJ3 bWFjdSIsIGRpX2Z0eXBlX2RpX3Y0aGlfdjRoaSwgV01BQ1UpOwogICBpd21t eF9tYnVpbHRpbiAoIndtYWN1eiIsIGRpX2Z0eXBlX3Y0aGlfdjRoaSwgV01B Q1VaKTsKIAotICBpd21teF9tYnVpbHRpbiAoIndhbGlnbiIsIHY4cWlfZnR5 cGVfdjhxaV92OHFpX2ludCwgV0FMSUdOKTsKKyAgaXdtbXhfbWJ1aWx0aW4g KCJ3YWxpZ24iLCB2OHFpX2Z0eXBlX3Y4cWlfdjhxaV9pbnQsIFdBTElHTkkp OwogICBpd21teF9tYnVpbHRpbiAoInRtaWEiLCBkaV9mdHlwZV9kaV9pbnRf aW50LCBUTUlBKTsKICAgaXdtbXhfbWJ1aWx0aW4gKCJ0bWlhcGgiLCBkaV9m dHlwZV9kaV9pbnRfaW50LCBUTUlBUEgpOwogICBpd21teF9tYnVpbHRpbiAo InRtaWFiYiIsIGRpX2Z0eXBlX2RpX2ludF9pbnQsIFRNSUFCQik7CkBAIC0x OTE1OCw2ICsxOTMzMyw2MiBAQCBhcm1faW5pdF9pd21teHRfYnVpbHRpbnMg KHZvaWQpCiAgIGl3bW14X21idWlsdGluICgidG1pYXRiIiwgZGlfZnR5cGVf ZGlfaW50X2ludCwgVE1JQVRCKTsKICAgaXdtbXhfbWJ1aWx0aW4gKCJ0bWlh dHQiLCBkaV9mdHlwZV9kaV9pbnRfaW50LCBUTUlBVFQpOwogCisgIGl3bW14 X21idWlsdGluICgid2Fic2IiLCB2OHFpX2Z0eXBlX3Y4cWksIFdBQlNCKTsK KyAgaXdtbXhfbWJ1aWx0aW4gKCJ3YWJzaCIsIHY0aGlfZnR5cGVfdjRoaSwg V0FCU0gpOworICBpd21teF9tYnVpbHRpbiAoIndhYnN3IiwgdjJzaV9mdHlw ZV92MnNpLCBXQUJTVyk7CisKKyAgaXdtbXhfbWJ1aWx0aW4gKCJ3cW1pYWJi IiwgdjJzaV9mdHlwZV92MnNpX3Y0aGlfdjRoaSwgV1FNSUFCQik7CisgIGl3 bW14X21idWlsdGluICgid3FtaWFidCIsIHYyc2lfZnR5cGVfdjJzaV92NGhp X3Y0aGksIFdRTUlBQlQpOworICBpd21teF9tYnVpbHRpbiAoIndxbWlhdGIi LCB2MnNpX2Z0eXBlX3Yyc2lfdjRoaV92NGhpLCBXUU1JQVRCKTsKKyAgaXdt bXhfbWJ1aWx0aW4gKCJ3cW1pYXR0IiwgdjJzaV9mdHlwZV92MnNpX3Y0aGlf djRoaSwgV1FNSUFUVCk7CisKKyAgaXdtbXhfbWJ1aWx0aW4gKCJ3cW1pYWJi biIsIHYyc2lfZnR5cGVfdjJzaV92NGhpX3Y0aGksIFdRTUlBQkJOKTsKKyAg aXdtbXhfbWJ1aWx0aW4gKCJ3cW1pYWJ0biIsIHYyc2lfZnR5cGVfdjJzaV92 NGhpX3Y0aGksIFdRTUlBQlROKTsKKyAgaXdtbXhfbWJ1aWx0aW4gKCJ3cW1p YXRibiIsIHYyc2lfZnR5cGVfdjJzaV92NGhpX3Y0aGksIFdRTUlBVEJOKTsK KyAgaXdtbXhfbWJ1aWx0aW4gKCJ3cW1pYXR0biIsIHYyc2lfZnR5cGVfdjJz aV92NGhpX3Y0aGksIFdRTUlBVFROKTsKKworICBpd21teF9tYnVpbHRpbiAo IndtaWFiYiIsIGRpX2Z0eXBlX2RpX3Y0aGlfdjRoaSwgV01JQUJCKTsKKyAg aXdtbXhfbWJ1aWx0aW4gKCJ3bWlhYnQiLCBkaV9mdHlwZV9kaV92NGhpX3Y0 aGksIFdNSUFCVCk7CisgIGl3bW14X21idWlsdGluICgid21pYXRiIiwgZGlf ZnR5cGVfZGlfdjRoaV92NGhpLCBXTUlBVEIpOworICBpd21teF9tYnVpbHRp biAoIndtaWF0dCIsIGRpX2Z0eXBlX2RpX3Y0aGlfdjRoaSwgV01JQVRUKTsK KworICBpd21teF9tYnVpbHRpbiAoIndtaWFiYm4iLCBkaV9mdHlwZV9kaV92 NGhpX3Y0aGksIFdNSUFCQk4pOworICBpd21teF9tYnVpbHRpbiAoIndtaWFi dG4iLCBkaV9mdHlwZV9kaV92NGhpX3Y0aGksIFdNSUFCVE4pOworICBpd21t eF9tYnVpbHRpbiAoIndtaWF0Ym4iLCBkaV9mdHlwZV9kaV92NGhpX3Y0aGks IFdNSUFUQk4pOworICBpd21teF9tYnVpbHRpbiAoIndtaWF0dG4iLCBkaV9m dHlwZV9kaV92NGhpX3Y0aGksIFdNSUFUVE4pOworCisgIGl3bW14X21idWls dGluICgid21pYXdiYiIsIGRpX2Z0eXBlX2RpX3Yyc2lfdjJzaSwgV01JQVdC Qik7CisgIGl3bW14X21idWlsdGluICgid21pYXdidCIsIGRpX2Z0eXBlX2Rp X3Yyc2lfdjJzaSwgV01JQVdCVCk7CisgIGl3bW14X21idWlsdGluICgid21p YXd0YiIsIGRpX2Z0eXBlX2RpX3Yyc2lfdjJzaSwgV01JQVdUQik7CisgIGl3 bW14X21idWlsdGluICgid21pYXd0dCIsIGRpX2Z0eXBlX2RpX3Yyc2lfdjJz aSwgV01JQVdUVCk7CisKKyAgaXdtbXhfbWJ1aWx0aW4gKCJ3bWlhd2JibiIs IGRpX2Z0eXBlX2RpX3Yyc2lfdjJzaSwgV01JQVdCQk4pOworICBpd21teF9t YnVpbHRpbiAoIndtaWF3YnRuIiwgZGlfZnR5cGVfZGlfdjJzaV92MnNpLCBX TUlBV0JUTik7CisgIGl3bW14X21idWlsdGluICgid21pYXd0Ym4iLCBkaV9m dHlwZV9kaV92MnNpX3Yyc2ksIFdNSUFXVEJOKTsKKyAgaXdtbXhfbWJ1aWx0 aW4gKCJ3bWlhd3R0biIsIGRpX2Z0eXBlX2RpX3Yyc2lfdjJzaSwgV01JQVdU VE4pOworCisgIGl3bW14X21idWlsdGluICgid21lcmdlIiwgZGlfZnR5cGVf ZGlfZGlfaW50LCBXTUVSR0UpOworCisgIGl3bW14X21idWlsdGluICgidGFu ZGNiIiwgdm9pZF9mdHlwZV92b2lkLCBUQU5EQ0IpOworICBpd21teF9tYnVp bHRpbiAoInRhbmRjaCIsIHZvaWRfZnR5cGVfdm9pZCwgVEFORENIKTsKKyAg aXdtbXhfbWJ1aWx0aW4gKCJ0YW5kY3ciLCB2b2lkX2Z0eXBlX3ZvaWQsIFRB TkRDVyk7CisKKyAgaXdtbXhfbWJ1aWx0aW4gKCJ0b3JjYiIsIHZvaWRfZnR5 cGVfdm9pZCwgVE9SQ0IpOworICBpd21teF9tYnVpbHRpbiAoInRvcmNoIiwg dm9pZF9mdHlwZV92b2lkLCBUT1JDSCk7CisgIGl3bW14X21idWlsdGluICgi dG9yY3ciLCB2b2lkX2Z0eXBlX3ZvaWQsIFRPUkNXKTsKKworICBpd21teF9t YnVpbHRpbiAoInRvcnZzY2IiLCB2b2lkX2Z0eXBlX3ZvaWQsIFRPUlZTQ0Ip OworICBpd21teF9tYnVpbHRpbiAoInRvcnZzY2giLCB2b2lkX2Z0eXBlX3Zv aWQsIFRPUlZTQ0gpOworICBpd21teF9tYnVpbHRpbiAoInRvcnZzY3ciLCB2 b2lkX2Z0eXBlX3ZvaWQsIFRPUlZTQ1cpOworCisgIGl3bW14X21idWlsdGlu ICgidGV4dHJjYiIsIHZvaWRfZnR5cGVfaW50LCBURVhUUkNCKTsKKyAgaXdt bXhfbWJ1aWx0aW4gKCJ0ZXh0cmNoIiwgdm9pZF9mdHlwZV9pbnQsIFRFWFRS Q0gpOworICBpd21teF9tYnVpbHRpbiAoInRleHRyY3ciLCB2b2lkX2Z0eXBl X2ludCwgVEVYVFJDVyk7CisKKyAgaXdtbXhfbWJ1aWx0aW4gKCJ0YmNzdGIi LCB2OHFpX2Z0eXBlX2NoYXIsIFRCQ1NUQik7CisgIGl3bW14X21idWlsdGlu ICgidGJjc3RoIiwgdjRoaV9mdHlwZV9zaG9ydCwgVEJDU1RIKTsKKyAgaXdt bXhfbWJ1aWx0aW4gKCJ0YmNzdHciLCB2MnNpX2Z0eXBlX2ludCwgVEJDU1RX KTsKKwogI3VuZGVmIGl3bW14X21idWlsdGluCiB9CiAKQEAgLTE5ODAxLDYg KzIwMDMyLDI1IEBAIGFybV9leHBhbmRfYnVpbHRpbiAodHJlZSBleHAsCiAJ ICBlcnJvciAoInNlbGVjdG9yIG11c3QgYmUgYW4gaW1tZWRpYXRlIik7CiAJ ICByZXR1cm4gZ2VuX3JlZ19ydHggKHRtb2RlKTsKIAl9CisKKyAgICAgIGlu dCBvcGludDsKKyAgICAgIG9waW50ID0gSU5UVkFMIChvcDEpOworICAgICAg aWYgKGZjb2RlID09IEFSTV9CVUlMVElOX1RFWFRSTVNCIHx8IGZjb2RlID09 IEFSTV9CVUlMVElOX1RFWFRSTVVCKQorCXsKKwkgIGlmIChvcGludCA+IDcg fHwgb3BpbnQgPCAwKQorCSAgICBlcnJvciAoInRoZSByYW5nZSBvZiBzZWxl Y3RvciBzaG91bGQgYmUgaW4gMCB0byA3Iik7CisJfQorICAgICAgZWxzZSBp ZiAoZmNvZGUgPT0gQVJNX0JVSUxUSU5fVEVYVFJNU0ggfHwgZmNvZGUgPT0g QVJNX0JVSUxUSU5fVEVYVFJNVUgpCisJeworCSAgaWYgKG9waW50ID4gMyB8 fCBvcGludCA8IDApCisJICAgIGVycm9yICgidGhlIHJhbmdlIG9mIHNlbGVj dG9yIHNob3VsZCBiZSBpbiAwIHRvIDMiKTsKKwl9CisgICAgICBlbHNlIC8q IEFSTV9CVUlMVElOX1RFWFRSTVNXIHx8IEFSTV9CVUlMVElOX1RFWFRSTVVX LiAgKi8KKwl7CisJICBpZiAob3BpbnQgPiAxIHx8IG9waW50IDwgMCkKKwkg ICAgZXJyb3IgKCJ0aGUgcmFuZ2Ugb2Ygc2VsZWN0b3Igc2hvdWxkIGJlIGlu IDAgdG8gMSIpOworCX0KKwogICAgICAgaWYgKHRhcmdldCA9PSAwCiAJICB8 fCBHRVRfTU9ERSAodGFyZ2V0KSAhPSB0bW9kZQogCSAgfHwgISAoKmluc25f ZGF0YVtpY29kZV0ub3BlcmFuZFswXS5wcmVkaWNhdGUpICh0YXJnZXQsIHRt b2RlKSkKQEAgLTE5ODExLDExICsyMDA2MSw2MSBAQCBhcm1fZXhwYW5kX2J1 aWx0aW4gKHRyZWUgZXhwLAogICAgICAgZW1pdF9pbnNuIChwYXQpOwogICAg ICAgcmV0dXJuIHRhcmdldDsKIAorICAgIGNhc2UgQVJNX0JVSUxUSU5fV0FM SUdOSToKKyAgICAgIC8qIElmIG9wMiBpcyBpbW1lZGlhdGUsIGNhbGwgd2Fs aWdoaSwgZWxzZSBjYWxsIHdhbGlnaHIuICAqLworICAgICAgYXJnMCA9IENB TExfRVhQUl9BUkcgKGV4cCwgMCk7CisgICAgICBhcmcxID0gQ0FMTF9FWFBS X0FSRyAoZXhwLCAxKTsKKyAgICAgIGFyZzIgPSBDQUxMX0VYUFJfQVJHIChl eHAsIDIpOworICAgICAgb3AwID0gZXhwYW5kX25vcm1hbCAoYXJnMCk7Cisg ICAgICBvcDEgPSBleHBhbmRfbm9ybWFsIChhcmcxKTsKKyAgICAgIG9wMiA9 IGV4cGFuZF9ub3JtYWwgKGFyZzIpOworICAgICAgaWYgKEdFVF9DT0RFIChv cDIpID09IENPTlNUX0lOVCkKKyAgICAgICAgeworCSAgaWNvZGUgPSBDT0RF X0ZPUl9pd21teHRfd2FsaWduaTsKKyAgICAgICAgICB0bW9kZSA9IGluc25f ZGF0YVtpY29kZV0ub3BlcmFuZFswXS5tb2RlOworCSAgbW9kZTAgPSBpbnNu X2RhdGFbaWNvZGVdLm9wZXJhbmRbMV0ubW9kZTsKKwkgIG1vZGUxID0gaW5z bl9kYXRhW2ljb2RlXS5vcGVyYW5kWzJdLm1vZGU7CisJICBtb2RlMiA9IGlu c25fZGF0YVtpY29kZV0ub3BlcmFuZFszXS5tb2RlOworICAgICAgICAgIGlm ICghKCppbnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRbMV0ucHJlZGljYXRlKSAo b3AwLCBtb2RlMCkpCisJICAgIG9wMCA9IGNvcHlfdG9fbW9kZV9yZWcgKG1v ZGUwLCBvcDApOworICAgICAgICAgIGlmICghKCppbnNuX2RhdGFbaWNvZGVd Lm9wZXJhbmRbMl0ucHJlZGljYXRlKSAob3AxLCBtb2RlMSkpCisJICAgIG9w MSA9IGNvcHlfdG9fbW9kZV9yZWcgKG1vZGUxLCBvcDEpOworICAgICAgICAg IGdjY19hc3NlcnQgKCgqaW5zbl9kYXRhW2ljb2RlXS5vcGVyYW5kWzNdLnBy ZWRpY2F0ZSkgKG9wMiwgbW9kZTIpKTsKKwkgIGludCBzZWxlY3RvciA9IElO VFZBTCAob3AyKTsKKwkgIGlmIChzZWxlY3RvciA+IDcgfHwgc2VsZWN0b3Ig PCAwKQorCSAgICBlcnJvciAoInRoZSByYW5nZSBvZiBzZWxlY3RvciBzaG91 bGQgYmUgaW4gMCB0byA3Iik7CisJfQorICAgICAgZWxzZQorICAgICAgICB7 CisJICBpY29kZSA9IENPREVfRk9SX2l3bW14dF93YWxpZ25yOworICAgICAg ICAgIHRtb2RlID0gaW5zbl9kYXRhW2ljb2RlXS5vcGVyYW5kWzBdLm1vZGU7 CisJICBtb2RlMCA9IGluc25fZGF0YVtpY29kZV0ub3BlcmFuZFsxXS5tb2Rl OworCSAgbW9kZTEgPSBpbnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRbMl0ubW9k ZTsKKwkgIG1vZGUyID0gaW5zbl9kYXRhW2ljb2RlXS5vcGVyYW5kWzNdLm1v ZGU7CisgICAgICAgICAgaWYgKCEoKmluc25fZGF0YVtpY29kZV0ub3BlcmFu ZFsxXS5wcmVkaWNhdGUpIChvcDAsIG1vZGUwKSkKKwkgICAgb3AwID0gY29w eV90b19tb2RlX3JlZyAobW9kZTAsIG9wMCk7CisgICAgICAgICAgaWYgKCEo Kmluc25fZGF0YVtpY29kZV0ub3BlcmFuZFsyXS5wcmVkaWNhdGUpIChvcDEs IG1vZGUxKSkKKwkgICAgb3AxID0gY29weV90b19tb2RlX3JlZyAobW9kZTEs IG9wMSk7CisgICAgICAgICAgaWYgKCEoKmluc25fZGF0YVtpY29kZV0ub3Bl cmFuZFszXS5wcmVkaWNhdGUpIChvcDIsIG1vZGUyKSkKKwkgICAgb3AyID0g Y29weV90b19tb2RlX3JlZyAobW9kZTIsIG9wMik7CisJfQorICAgICAgaWYg KHRhcmdldCA9PSAwCisJICB8fCBHRVRfTU9ERSAodGFyZ2V0KSAhPSB0bW9k ZQorCSAgfHwgISgqaW5zbl9kYXRhW2ljb2RlXS5vcGVyYW5kWzBdLnByZWRp Y2F0ZSkgKHRhcmdldCwgdG1vZGUpKQorCXRhcmdldCA9IGdlbl9yZWdfcnR4 ICh0bW9kZSk7CisgICAgICBwYXQgPSBHRU5fRkNOIChpY29kZSkgKHRhcmdl dCwgb3AwLCBvcDEsIG9wMik7CisgICAgICBpZiAoIXBhdCkKKwlyZXR1cm4g MDsKKyAgICAgIGVtaXRfaW5zbiAocGF0KTsKKyAgICAgIHJldHVybiB0YXJn ZXQ7CisKICAgICBjYXNlIEFSTV9CVUlMVElOX1RJTlNSQjoKICAgICBjYXNl IEFSTV9CVUlMVElOX1RJTlNSSDoKICAgICBjYXNlIEFSTV9CVUlMVElOX1RJ TlNSVzoKKyAgICBjYXNlIEFSTV9CVUlMVElOX1dNRVJHRToKICAgICAgIGlj b2RlID0gKGZjb2RlID09IEFSTV9CVUlMVElOX1RJTlNSQiA/IENPREVfRk9S X2l3bW14dF90aW5zcmIKIAkgICAgICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJ Tl9USU5TUkggPyBDT0RFX0ZPUl9pd21teHRfdGluc3JoCisJICAgICAgIDog ZmNvZGUgPT0gQVJNX0JVSUxUSU5fV01FUkdFID8gQ09ERV9GT1JfaXdtbXh0 X3dtZXJnZQogCSAgICAgICA6IENPREVfRk9SX2l3bW14dF90aW5zcncpOwog ICAgICAgYXJnMCA9IENBTExfRVhQUl9BUkcgKGV4cCwgMCk7CiAgICAgICBh cmcxID0gQ0FMTF9FWFBSX0FSRyAoZXhwLCAxKTsKQEAgLTE5ODM4LDYgKzIw MTM4LDI3IEBAIGFybV9leHBhbmRfYnVpbHRpbiAodHJlZSBleHAsCiAJICBl cnJvciAoInNlbGVjdG9yIG11c3QgYmUgYW4gaW1tZWRpYXRlIik7CiAJICBy ZXR1cm4gY29uc3QwX3J0eDsKIAl9CisgICAgICBpZiAoaWNvZGUgPT0gQ09E RV9GT1JfaXdtbXh0X3dtZXJnZSkKKwl7CisJICBpbnQgc2VsZWN0b3IgPSBJ TlRWQUwgKG9wMik7CisJICBpZiAoc2VsZWN0b3IgPiA3IHx8IHNlbGVjdG9y IDwgMCkKKwkgICAgZXJyb3IgKCJ0aGUgcmFuZ2Ugb2Ygc2VsZWN0b3Igc2hv dWxkIGJlIGluIDAgdG8gNyIpOworCX0KKyAgICAgIGlmICgoaWNvZGUgPT0g Q09ERV9GT1JfaXdtbXh0X3RpbnNyYikKKwkgIHx8IChpY29kZSA9PSBDT0RF X0ZPUl9pd21teHRfdGluc3JoKQorCSAgfHwgKGljb2RlID09IENPREVfRk9S X2l3bW14dF90aW5zcncpKQorICAgICAgICB7CisJICBpbnQgbWFzaz0weDAx OworCSAgaW50IHNlbGVjdG9yPSBJTlRWQUwgKG9wMik7CisJICBpZiAoaWNv ZGUgPT0gQ09ERV9GT1JfaXdtbXh0X3RpbnNyYiAmJiAoc2VsZWN0b3IgPCAw IHx8IHNlbGVjdG9yID4gNykpCisJICAgIGVycm9yICgidGhlIHJhbmdlIG9m IHNlbGVjdG9yIHNob3VsZCBiZSBpbiAwIHRvIDciKTsKKwkgIGVsc2UgaWYg KGljb2RlID09IENPREVfRk9SX2l3bW14dF90aW5zcmggJiYgKHNlbGVjdG9y IDwgMCB8fHNlbGVjdG9yID4gMykpCisJICAgIGVycm9yICgidGhlIHJhbmdl IG9mIHNlbGVjdG9yIHNob3VsZCBiZSBpbiAwIHRvIDMiKTsKKwkgIGVsc2Ug aWYgKGljb2RlID09IENPREVfRk9SX2l3bW14dF90aW5zcncgJiYgKHNlbGVj dG9yIDwgMCB8fHNlbGVjdG9yID4gMSkpCisJICAgIGVycm9yICgidGhlIHJh bmdlIG9mIHNlbGVjdG9yIHNob3VsZCBiZSBpbiAwIHRvIDEiKTsKKwkgIG1h c2sgPDw9IHNlbGVjdG9yOworCSAgb3AyID0gZ2VuX3J0eF9DT05TVF9JTlQg KFNJbW9kZSwgbWFzayk7CisJfQogICAgICAgaWYgKHRhcmdldCA9PSAwCiAJ ICB8fCBHRVRfTU9ERSAodGFyZ2V0KSAhPSB0bW9kZQogCSAgfHwgISAoKmlu c25fZGF0YVtpY29kZV0ub3BlcmFuZFswXS5wcmVkaWNhdGUpICh0YXJnZXQs IHRtb2RlKSkKQEAgLTE5ODQ4LDE5ICsyMDE2OSw0MiBAQCBhcm1fZXhwYW5k X2J1aWx0aW4gKHRyZWUgZXhwLAogICAgICAgZW1pdF9pbnNuIChwYXQpOwog ICAgICAgcmV0dXJuIHRhcmdldDsKIAotICAgIGNhc2UgQVJNX0JVSUxUSU5f U0VUV0NYOgorICAgIGNhc2UgQVJNX0JVSUxUSU5fU0VUV0NHUjA6CisgICAg Y2FzZSBBUk1fQlVJTFRJTl9TRVRXQ0dSMToKKyAgICBjYXNlIEFSTV9CVUlM VElOX1NFVFdDR1IyOgorICAgIGNhc2UgQVJNX0JVSUxUSU5fU0VUV0NHUjM6 CisgICAgICBpY29kZSA9IChmY29kZSA9PSBBUk1fQlVJTFRJTl9TRVRXQ0dS MCA/IENPREVfRk9SX2l3bW14dF9zZXR3Y2dyMAorCSAgICAgICA6IGZjb2Rl ID09IEFSTV9CVUlMVElOX1NFVFdDR1IxID8gQ09ERV9GT1JfaXdtbXh0X3Nl dHdjZ3IxCisJICAgICAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fU0VUV0NH UjIgPyBDT0RFX0ZPUl9pd21teHRfc2V0d2NncjIKKwkgICAgICAgOiBDT0RF X0ZPUl9pd21teHRfc2V0d2NncjMpOwogICAgICAgYXJnMCA9IENBTExfRVhQ Ul9BUkcgKGV4cCwgMCk7Ci0gICAgICBhcmcxID0gQ0FMTF9FWFBSX0FSRyAo ZXhwLCAxKTsKLSAgICAgIG9wMCA9IGZvcmNlX3JlZyAoU0ltb2RlLCBleHBh bmRfbm9ybWFsIChhcmcwKSk7Ci0gICAgICBvcDEgPSBleHBhbmRfbm9ybWFs IChhcmcxKTsKLSAgICAgIGVtaXRfaW5zbiAoZ2VuX2l3bW14dF90bWNyIChv cDEsIG9wMCkpOworICAgICAgb3AwID0gZXhwYW5kX25vcm1hbCAoYXJnMCk7 CisgICAgICBtb2RlMCA9IGluc25fZGF0YVtpY29kZV0ub3BlcmFuZFswXS5t b2RlOworICAgICAgaWYgKCEoKmluc25fZGF0YVtpY29kZV0ub3BlcmFuZFsw XS5wcmVkaWNhdGUpIChvcDAsIG1vZGUwKSkKKyAgICAgICAgb3AwID0gY29w eV90b19tb2RlX3JlZyAobW9kZTAsIG9wMCk7CisgICAgICBwYXQgPSBHRU5f RkNOIChpY29kZSkgKG9wMCk7CisgICAgICBpZiAoIXBhdCkKKwlyZXR1cm4g MDsKKyAgICAgIGVtaXRfaW5zbiAocGF0KTsKICAgICAgIHJldHVybiAwOwog Ci0gICAgY2FzZSBBUk1fQlVJTFRJTl9HRVRXQ1g6Ci0gICAgICBhcmcwID0g Q0FMTF9FWFBSX0FSRyAoZXhwLCAwKTsKLSAgICAgIG9wMCA9IGV4cGFuZF9u b3JtYWwgKGFyZzApOwotICAgICAgdGFyZ2V0ID0gZ2VuX3JlZ19ydHggKFNJ bW9kZSk7Ci0gICAgICBlbWl0X2luc24gKGdlbl9pd21teHRfdG1yYyAodGFy Z2V0LCBvcDApKTsKKyAgICBjYXNlIEFSTV9CVUlMVElOX0dFVFdDR1IwOgor ICAgIGNhc2UgQVJNX0JVSUxUSU5fR0VUV0NHUjE6CisgICAgY2FzZSBBUk1f QlVJTFRJTl9HRVRXQ0dSMjoKKyAgICBjYXNlIEFSTV9CVUlMVElOX0dFVFdD R1IzOgorICAgICAgaWNvZGUgPSAoZmNvZGUgPT0gQVJNX0JVSUxUSU5fR0VU V0NHUjAgPyBDT0RFX0ZPUl9pd21teHRfZ2V0d2NncjAKKwkgICAgICAgOiBm Y29kZSA9PSBBUk1fQlVJTFRJTl9HRVRXQ0dSMSA/IENPREVfRk9SX2l3bW14 dF9nZXR3Y2dyMQorCSAgICAgICA6IGZjb2RlID09IEFSTV9CVUlMVElOX0dF VFdDR1IyID8gQ09ERV9GT1JfaXdtbXh0X2dldHdjZ3IyCisJICAgICAgIDog Q09ERV9GT1JfaXdtbXh0X2dldHdjZ3IzKTsKKyAgICAgIHRtb2RlID0gaW5z bl9kYXRhW2ljb2RlXS5vcGVyYW5kWzBdLm1vZGU7CisgICAgICBpZiAodGFy Z2V0ID09IDAKKwkgIHx8IEdFVF9NT0RFICh0YXJnZXQpICE9IHRtb2RlCisJ ICB8fCAhKCppbnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRbMF0ucHJlZGljYXRl KSAodGFyZ2V0LCB0bW9kZSkpCisgICAgICAgIHRhcmdldCA9IGdlbl9yZWdf cnR4ICh0bW9kZSk7CisgICAgICBwYXQgPSBHRU5fRkNOIChpY29kZSkgKHRh cmdldCk7CisgICAgICBpZiAoIXBhdCkKKyAgICAgICAgcmV0dXJuIDA7Cisg ICAgICBlbWl0X2luc24gKHBhdCk7CiAgICAgICByZXR1cm4gdGFyZ2V0Owog CiAgICAgY2FzZSBBUk1fQlVJTFRJTl9XU0hVRkg6CkBAIC0xOTg4MSw2ICsy MDIyNSw5IEBAIGFybV9leHBhbmRfYnVpbHRpbiAodHJlZSBleHAsCiAJICBl cnJvciAoIm1hc2sgbXVzdCBiZSBhbiBpbW1lZGlhdGUiKTsKIAkgIHJldHVy biBjb25zdDBfcnR4OwogCX0KKyAgICAgIGludCBzZWxlY3RvciA9IElOVFZB TCAob3AxKTsKKyAgICAgIGlmIChzZWxlY3RvciA8IDAgfHwgc2VsZWN0b3Ig PiAyNTUpCisJZXJyb3IgKCJ0aGUgcmFuZ2Ugb2YgbWFzayBzaG91bGQgYmUg aW4gMCB0byAyNTUiKTsKICAgICAgIGlmICh0YXJnZXQgPT0gMAogCSAgfHwg R0VUX01PREUgKHRhcmdldCkgIT0gdG1vZGUKIAkgIHx8ICEgKCppbnNuX2Rh dGFbaWNvZGVdLm9wZXJhbmRbMF0ucHJlZGljYXRlKSAodGFyZ2V0LCB0bW9k ZSkpCkBAIC0xOTg5MSwxMCArMjAyMzgsMTggQEAgYXJtX2V4cGFuZF9idWls dGluICh0cmVlIGV4cCwKICAgICAgIGVtaXRfaW5zbiAocGF0KTsKICAgICAg IHJldHVybiB0YXJnZXQ7CiAKLSAgICBjYXNlIEFSTV9CVUlMVElOX1dTQURC OgotICAgICAgcmV0dXJuIGFybV9leHBhbmRfYmlub3BfYnVpbHRpbiAoQ09E RV9GT1JfaXdtbXh0X3dzYWRiLCBleHAsIHRhcmdldCk7Ci0gICAgY2FzZSBB Uk1fQlVJTFRJTl9XU0FESDoKLSAgICAgIHJldHVybiBhcm1fZXhwYW5kX2Jp bm9wX2J1aWx0aW4gKENPREVfRk9SX2l3bW14dF93c2FkaCwgZXhwLCB0YXJn ZXQpOworICAgIGNhc2UgQVJNX0JVSUxUSU5fV01BRERTOgorICAgICAgcmV0 dXJuIGFybV9leHBhbmRfYmlub3BfYnVpbHRpbiAoQ09ERV9GT1JfaXdtbXh0 X3dtYWRkcywgZXhwLCB0YXJnZXQpOworICAgIGNhc2UgQVJNX0JVSUxUSU5f V01BRERTWDoKKyAgICAgIHJldHVybiBhcm1fZXhwYW5kX2Jpbm9wX2J1aWx0 aW4gKENPREVfRk9SX2l3bW14dF93bWFkZHN4LCBleHAsIHRhcmdldCk7Cisg ICAgY2FzZSBBUk1fQlVJTFRJTl9XTUFERFNOOgorICAgICAgcmV0dXJuIGFy bV9leHBhbmRfYmlub3BfYnVpbHRpbiAoQ09ERV9GT1JfaXdtbXh0X3dtYWRk c24sIGV4cCwgdGFyZ2V0KTsKKyAgICBjYXNlIEFSTV9CVUlMVElOX1dNQURE VToKKyAgICAgIHJldHVybiBhcm1fZXhwYW5kX2Jpbm9wX2J1aWx0aW4gKENP REVfRk9SX2l3bW14dF93bWFkZHUsIGV4cCwgdGFyZ2V0KTsKKyAgICBjYXNl IEFSTV9CVUlMVElOX1dNQUREVVg6CisgICAgICByZXR1cm4gYXJtX2V4cGFu ZF9iaW5vcF9idWlsdGluIChDT0RFX0ZPUl9pd21teHRfd21hZGR1eCwgZXhw LCB0YXJnZXQpOworICAgIGNhc2UgQVJNX0JVSUxUSU5fV01BRERVTjoKKyAg ICAgIHJldHVybiBhcm1fZXhwYW5kX2Jpbm9wX2J1aWx0aW4gKENPREVfRk9S X2l3bW14dF93bWFkZHVuLCBleHAsIHRhcmdldCk7CiAgICAgY2FzZSBBUk1f QlVJTFRJTl9XU0FEQlo6CiAgICAgICByZXR1cm4gYXJtX2V4cGFuZF9iaW5v cF9idWlsdGluIChDT0RFX0ZPUl9pd21teHRfd3NhZGJ6LCBleHAsIHRhcmdl dCk7CiAgICAgY2FzZSBBUk1fQlVJTFRJTl9XU0FESFo6CkBAIC0xOTkwMywx MyArMjAyNTgsMzggQEAgYXJtX2V4cGFuZF9idWlsdGluICh0cmVlIGV4cCwK ICAgICAgIC8qIFNldmVyYWwgdGhyZWUtYXJndW1lbnQgYnVpbHRpbnMuICAq LwogICAgIGNhc2UgQVJNX0JVSUxUSU5fV01BQ1M6CiAgICAgY2FzZSBBUk1f QlVJTFRJTl9XTUFDVToKLSAgICBjYXNlIEFSTV9CVUlMVElOX1dBTElHTjoK ICAgICBjYXNlIEFSTV9CVUlMVElOX1RNSUE6CiAgICAgY2FzZSBBUk1fQlVJ TFRJTl9UTUlBUEg6CiAgICAgY2FzZSBBUk1fQlVJTFRJTl9UTUlBVFQ6CiAg ICAgY2FzZSBBUk1fQlVJTFRJTl9UTUlBVEI6CiAgICAgY2FzZSBBUk1fQlVJ TFRJTl9UTUlBQlQ6CiAgICAgY2FzZSBBUk1fQlVJTFRJTl9UTUlBQkI6Cisg ICAgY2FzZSBBUk1fQlVJTFRJTl9XUU1JQUJCOgorICAgIGNhc2UgQVJNX0JV SUxUSU5fV1FNSUFCVDoKKyAgICBjYXNlIEFSTV9CVUlMVElOX1dRTUlBVEI6 CisgICAgY2FzZSBBUk1fQlVJTFRJTl9XUU1JQVRUOgorICAgIGNhc2UgQVJN X0JVSUxUSU5fV1FNSUFCQk46CisgICAgY2FzZSBBUk1fQlVJTFRJTl9XUU1J QUJUTjoKKyAgICBjYXNlIEFSTV9CVUlMVElOX1dRTUlBVEJOOgorICAgIGNh c2UgQVJNX0JVSUxUSU5fV1FNSUFUVE46CisgICAgY2FzZSBBUk1fQlVJTFRJ Tl9XTUlBQkI6CisgICAgY2FzZSBBUk1fQlVJTFRJTl9XTUlBQlQ6CisgICAg Y2FzZSBBUk1fQlVJTFRJTl9XTUlBVEI6CisgICAgY2FzZSBBUk1fQlVJTFRJ Tl9XTUlBVFQ6CisgICAgY2FzZSBBUk1fQlVJTFRJTl9XTUlBQkJOOgorICAg IGNhc2UgQVJNX0JVSUxUSU5fV01JQUJUTjoKKyAgICBjYXNlIEFSTV9CVUlM VElOX1dNSUFUQk46CisgICAgY2FzZSBBUk1fQlVJTFRJTl9XTUlBVFROOgor ICAgIGNhc2UgQVJNX0JVSUxUSU5fV01JQVdCQjoKKyAgICBjYXNlIEFSTV9C VUlMVElOX1dNSUFXQlQ6CisgICAgY2FzZSBBUk1fQlVJTFRJTl9XTUlBV1RC OgorICAgIGNhc2UgQVJNX0JVSUxUSU5fV01JQVdUVDoKKyAgICBjYXNlIEFS TV9CVUlMVElOX1dNSUFXQkJOOgorICAgIGNhc2UgQVJNX0JVSUxUSU5fV01J QVdCVE46CisgICAgY2FzZSBBUk1fQlVJTFRJTl9XTUlBV1RCTjoKKyAgICBj YXNlIEFSTV9CVUlMVElOX1dNSUFXVFROOgorICAgIGNhc2UgQVJNX0JVSUxU SU5fV1NBREI6CisgICAgY2FzZSBBUk1fQlVJTFRJTl9XU0FESDoKICAgICAg IGljb2RlID0gKGZjb2RlID09IEFSTV9CVUlMVElOX1dNQUNTID8gQ09ERV9G T1JfaXdtbXh0X3dtYWNzCiAJICAgICAgIDogZmNvZGUgPT0gQVJNX0JVSUxU SU5fV01BQ1UgPyBDT0RFX0ZPUl9pd21teHRfd21hY3UKIAkgICAgICAgOiBm Y29kZSA9PSBBUk1fQlVJTFRJTl9UTUlBID8gQ09ERV9GT1JfaXdtbXh0X3Rt aWEKQEAgLTE5OTE4LDcgKzIwMjk4LDMyIEBAIGFybV9leHBhbmRfYnVpbHRp biAodHJlZSBleHAsCiAJICAgICAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5f VE1JQUJUID8gQ09ERV9GT1JfaXdtbXh0X3RtaWFidAogCSAgICAgICA6IGZj b2RlID09IEFSTV9CVUlMVElOX1RNSUFUQiA/IENPREVfRk9SX2l3bW14dF90 bWlhdGIKIAkgICAgICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJTl9UTUlBVFQg PyBDT0RFX0ZPUl9pd21teHRfdG1pYXR0Ci0JICAgICAgIDogQ09ERV9GT1Jf aXdtbXh0X3dhbGlnbik7CisJICAgICAgIDogZmNvZGUgPT0gQVJNX0JVSUxU SU5fV1FNSUFCQiA/IENPREVfRk9SX2l3bW14dF93cW1pYWJiCisJICAgICAg IDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1FNSUFCVCA/IENPREVfRk9SX2l3 bW14dF93cW1pYWJ0CisJICAgICAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5f V1FNSUFUQiA/IENPREVfRk9SX2l3bW14dF93cW1pYXRiCisJICAgICAgIDog ZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1FNSUFUVCA/IENPREVfRk9SX2l3bW14 dF93cW1pYXR0CisJICAgICAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1FN SUFCQk4gPyBDT0RFX0ZPUl9pd21teHRfd3FtaWFiYm4KKwkgICAgICAgOiBm Y29kZSA9PSBBUk1fQlVJTFRJTl9XUU1JQUJUTiA/IENPREVfRk9SX2l3bW14 dF93cW1pYWJ0bgorCSAgICAgICA6IGZjb2RlID09IEFSTV9CVUlMVElOX1dR TUlBVEJOID8gQ09ERV9GT1JfaXdtbXh0X3dxbWlhdGJuCisJICAgICAgIDog ZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1FNSUFUVE4gPyBDT0RFX0ZPUl9pd21t eHRfd3FtaWF0dG4KKwkgICAgICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJTl9X TUlBQkIgPyBDT0RFX0ZPUl9pd21teHRfd21pYWJiCisJICAgICAgIDogZmNv ZGUgPT0gQVJNX0JVSUxUSU5fV01JQUJUID8gQ09ERV9GT1JfaXdtbXh0X3dt aWFidAorCSAgICAgICA6IGZjb2RlID09IEFSTV9CVUlMVElOX1dNSUFUQiA/ IENPREVfRk9SX2l3bW14dF93bWlhdGIKKwkgICAgICAgOiBmY29kZSA9PSBB Uk1fQlVJTFRJTl9XTUlBVFQgPyBDT0RFX0ZPUl9pd21teHRfd21pYXR0CisJ ICAgICAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fV01JQUJCTiA/IENPREVf Rk9SX2l3bW14dF93bWlhYmJuCisJICAgICAgIDogZmNvZGUgPT0gQVJNX0JV SUxUSU5fV01JQUJUTiA/IENPREVfRk9SX2l3bW14dF93bWlhYnRuCisJICAg ICAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fV01JQVRCTiA/IENPREVfRk9S X2l3bW14dF93bWlhdGJuCisJICAgICAgIDogZmNvZGUgPT0gQVJNX0JVSUxU SU5fV01JQVRUTiA/IENPREVfRk9SX2l3bW14dF93bWlhdHRuCisJICAgICAg IDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fV01JQVdCQiA/IENPREVfRk9SX2l3 bW14dF93bWlhd2JiCisJICAgICAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5f V01JQVdCVCA/IENPREVfRk9SX2l3bW14dF93bWlhd2J0CisJICAgICAgIDog ZmNvZGUgPT0gQVJNX0JVSUxUSU5fV01JQVdUQiA/IENPREVfRk9SX2l3bW14 dF93bWlhd3RiCisJICAgICAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fV01J QVdUVCA/IENPREVfRk9SX2l3bW14dF93bWlhd3R0CisJICAgICAgIDogZmNv ZGUgPT0gQVJNX0JVSUxUSU5fV01JQVdCQk4gPyBDT0RFX0ZPUl9pd21teHRf d21pYXdiYm4KKwkgICAgICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJTl9XTUlB V0JUTiA/IENPREVfRk9SX2l3bW14dF93bWlhd2J0bgorCSAgICAgICA6IGZj b2RlID09IEFSTV9CVUlMVElOX1dNSUFXVEJOID8gQ09ERV9GT1JfaXdtbXh0 X3dtaWF3dGJuCisJICAgICAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fV01J QVdUVE4gPyBDT0RFX0ZPUl9pd21teHRfd21pYXd0dG4KKwkgICAgICAgOiBm Y29kZSA9PSBBUk1fQlVJTFRJTl9XU0FEQiA/IENPREVfRk9SX2l3bW14dF93 c2FkYgorCSAgICAgICA6IENPREVfRk9SX2l3bW14dF93c2FkaCk7CiAgICAg ICBhcmcwID0gQ0FMTF9FWFBSX0FSRyAoZXhwLCAwKTsKICAgICAgIGFyZzEg PSBDQUxMX0VYUFJfQVJHIChleHAsIDEpOwogICAgICAgYXJnMiA9IENBTExf RVhQUl9BUkcgKGV4cCwgMik7CkBAIC0xOTk1MSw5ICsyMDM1NiwxOTYgQEAg YXJtX2V4cGFuZF9idWlsdGluICh0cmVlIGV4cCwKICAgICAgIGVtaXRfaW5z biAoZ2VuX2l3bW14dF9jbHJkaSAodGFyZ2V0KSk7CiAgICAgICByZXR1cm4g dGFyZ2V0OwogCisgICAgY2FzZSBBUk1fQlVJTFRJTl9UQU5EQ0I6CisgICAg Y2FzZSBBUk1fQlVJTFRJTl9UQU5EQ0g6CisgICAgY2FzZSBBUk1fQlVJTFRJ Tl9UQU5EQ1c6CisgICAgY2FzZSBBUk1fQlVJTFRJTl9UT1JDQjoKKyAgICBj YXNlIEFSTV9CVUlMVElOX1RPUkNIOgorICAgIGNhc2UgQVJNX0JVSUxUSU5f VE9SQ1c6CisgICAgY2FzZSBBUk1fQlVJTFRJTl9UT1JWU0NCOgorICAgIGNh c2UgQVJNX0JVSUxUSU5fVE9SVlNDSDoKKyAgICBjYXNlIEFSTV9CVUlMVElO X1RPUlZTQ1c6CisgICAgICBpY29kZSA9IChmY29kZSA9PSBBUk1fQlVJTFRJ Tl9UQU5EQ0IgPyBDT0RFX0ZPUl9pd21teHRfdGFuZGN2OHFpMworCSAgICAg ICA6IGZjb2RlID09IEFSTV9CVUlMVElOX1RBTkRDSCA/IENPREVfRk9SX2l3 bW14dF90YW5kY3Y0aGkzCisJICAgICAgIDogZmNvZGUgPT0gQVJNX0JVSUxU SU5fVEFORENXID8gQ09ERV9GT1JfaXdtbXh0X3RhbmRjdjJzaTMKKwkgICAg ICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJTl9UT1JDQiA/IENPREVfRk9SX2l3 bW14dF90b3JjdjhxaTMKKwkgICAgICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJ Tl9UT1JDSCA/IENPREVfRk9SX2l3bW14dF90b3JjdjRoaTMKKwkgICAgICAg OiBmY29kZSA9PSBBUk1fQlVJTFRJTl9UT1JDVyA/IENPREVfRk9SX2l3bW14 dF90b3JjdjJzaTMKKwkgICAgICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJTl9U T1JWU0NCID8gQ09ERV9GT1JfaXdtbXh0X3RvcnZzY3Y4cWkzCisJICAgICAg IDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fVE9SVlNDSCA/IENPREVfRk9SX2l3 bW14dF90b3J2c2N2NGhpMworCSAgICAgICA6IGZjb2RlID09IEFSTV9CVUlM VElOX1RPUlZTQ1cgPyBDT0RFX0ZPUl9pd21teHRfdG9ydnNjdjJzaTMKKwkg ICAgICAgOiBDT0RFX0ZPUl9pd21teHRfdGFuZGN2MnNpMyk7CisgICAgICBw YXQgPSBHRU5fRkNOIChpY29kZSkgKDApOworICAgICAgaWYgKCFwYXQpCisg ICAgICAgIHJldHVybiAwOworICAgICAgZW1pdF9pbnNuIChwYXQpOworICAg ICAgcmV0dXJuIHRhcmdldDsKKworICAgIGNhc2UgQVJNX0JVSUxUSU5fVEVY VFJDQjoKKyAgICBjYXNlIEFSTV9CVUlMVElOX1RFWFRSQ0g6CisgICAgY2Fz ZSBBUk1fQlVJTFRJTl9URVhUUkNXOgorICAgICAgaWNvZGUgPSAoZmNvZGUg PT0gQVJNX0JVSUxUSU5fVEVYVFJDQiA/IENPREVfRk9SX2l3bW14dF90ZXh0 cmN2OHFpMworIAkgICAgICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJTl9URVhU UkNIID8gQ09ERV9GT1JfaXdtbXh0X3RleHRyY3Y0aGkzCisJICAgICAgIDog ZmNvZGUgPT0gQVJNX0JVSUxUSU5fVEVYVFJDVyA/IENPREVfRk9SX2l3bW14 dF90ZXh0cmN2MnNpMworCSAgICAgICA6IENPREVfRk9SX2l3bW14dF90ZXh0 cmN2MnNpMyk7CisgICAgICBhcmcwID0gQ0FMTF9FWFBSX0FSRyAoZXhwLCAw KTsKKyAgICAgIG9wMCA9IGV4cGFuZF9ub3JtYWwgKGFyZzApOworICAgICAg bW9kZTAgPSBpbnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRbMF0ubW9kZTsKKyAg ICAgIGlmICghKCppbnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRbMF0ucHJlZGlj YXRlKSAob3AwLCBtb2RlMCkpCisJeworCSAgLyogTmVlZCBhIGJldHRlciBl cnJvciBtZXNzYWdlIGhlcmUuICAqLworCSAgZXJyb3IgKCJzZWxlY3RvciBz aG91bGQgYmUgYW4gaW1tZWRpYXRlIik7CisJICByZXR1cm4gY29uc3QwX3J0 eDsKKwl9CisgICAgICBwYXQgPSBHRU5fRkNOIChpY29kZSkgKG9wMCk7Cisg ICAgICBpZiAoIXBhdCkKKyAgICAgIHJldHVybiAwOworICAgICAgZW1pdF9p bnNuIChwYXQpOworICAgICAgcmV0dXJuIDA7CiAgICAgY2FzZSBBUk1fQlVJ TFRJTl9USFJFQURfUE9JTlRFUjoKICAgICAgIHJldHVybiBhcm1fbG9hZF90 cCAodGFyZ2V0KTsKIAorICAgIGNhc2UgQVJNX0JVSUxUSU5fV1NSTEhJOgor ICAgIGNhc2UgQVJNX0JVSUxUSU5fV1NSTFdJOgorICAgIGNhc2UgQVJNX0JV SUxUSU5fV1NSTERJOgorICAgIGNhc2UgQVJNX0JVSUxUSU5fV1NMTEhJOgor ICAgIGNhc2UgQVJNX0JVSUxUSU5fV1NMTFdJOgorICAgIGNhc2UgQVJNX0JV SUxUSU5fV1NMTERJOgorICAgIGNhc2UgQVJNX0JVSUxUSU5fV1NSQUhJOgor ICAgIGNhc2UgQVJNX0JVSUxUSU5fV1NSQVdJOgorICAgIGNhc2UgQVJNX0JV SUxUSU5fV1NSQURJOgorICAgIGNhc2UgQVJNX0JVSUxUSU5fV1JPUkhJOgor ICAgIGNhc2UgQVJNX0JVSUxUSU5fV1JPUldJOgorICAgIGNhc2UgQVJNX0JV SUxUSU5fV1JPUkRJOgorICAgIGNhc2UgQVJNX0JVSUxUSU5fV1NSTEg6Cisg ICAgY2FzZSBBUk1fQlVJTFRJTl9XU1JMVzoKKyAgICBjYXNlIEFSTV9CVUlM VElOX1dTUkxEOgorICAgIGNhc2UgQVJNX0JVSUxUSU5fV1NMTEg6CisgICAg Y2FzZSBBUk1fQlVJTFRJTl9XU0xMVzoKKyAgICBjYXNlIEFSTV9CVUlMVElO X1dTTExEOgorICAgIGNhc2UgQVJNX0JVSUxUSU5fV1NSQUg6CisgICAgY2Fz ZSBBUk1fQlVJTFRJTl9XU1JBVzoKKyAgICBjYXNlIEFSTV9CVUlMVElOX1dT UkFEOgorICAgIGNhc2UgQVJNX0JVSUxUSU5fV1JPUkg6CisgICAgY2FzZSBB Uk1fQlVJTFRJTl9XUk9SVzoKKyAgICBjYXNlIEFSTV9CVUlMVElOX1dST1JE OgorICAgICAgaWNvZGUgPSAoZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1NSTEhJ ID8gQ09ERV9GT1JfbHNocnY0aGkzX2l3bW14dAorIAkgICAgICAgOiBmY29k ZSA9PSBBUk1fQlVJTFRJTl9XU1JMV0kgPyBDT0RFX0ZPUl9sc2hydjJzaTNf aXdtbXh0CisgCSAgICAgICA6IGZjb2RlID09IEFSTV9CVUlMVElOX1dTUkxE SSA/IENPREVfRk9SX2xzaHJkaTNfaXdtbXh0CisJICAgICAgIDogZmNvZGUg PT0gQVJNX0JVSUxUSU5fV1NMTEhJID8gQ09ERV9GT1JfYXNobHY0aGkzX2l3 bW14dAorIAkgICAgICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJTl9XU0xMV0kg PyBDT0RFX0ZPUl9hc2hsdjJzaTNfaXdtbXh0CisgCSAgICAgICA6IGZjb2Rl ID09IEFSTV9CVUlMVElOX1dTTExESSA/IENPREVfRk9SX2FzaGxkaTNfaXdt bXh0CisJICAgICAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1NSQUhJID8g Q09ERV9GT1JfYXNocnY0aGkzX2l3bW14dAorIAkgICAgICAgOiBmY29kZSA9 PSBBUk1fQlVJTFRJTl9XU1JBV0kgPyBDT0RFX0ZPUl9hc2hydjJzaTNfaXdt bXh0CisgCSAgICAgICA6IGZjb2RlID09IEFSTV9CVUlMVElOX1dTUkFESSA/ IENPREVfRk9SX2FzaHJkaTNfaXdtbXh0CisJICAgICAgIDogZmNvZGUgPT0g QVJNX0JVSUxUSU5fV1JPUkhJID8gQ09ERV9GT1Jfcm9ydjRoaTMKKyAJICAg ICAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1JPUldJID8gQ09ERV9GT1Jf cm9ydjJzaTMKKyAJICAgICAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1JP UkRJID8gQ09ERV9GT1Jfcm9yZGkzCisJICAgICAgIDogZmNvZGUgPT0gQVJN X0JVSUxUSU5fV1NSTEggID8gQ09ERV9GT1JfbHNocnY0aGkzX2RpCisJICAg ICAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1NSTFcgID8gQ09ERV9GT1Jf bHNocnYyc2kzX2RpCisJICAgICAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5f V1NSTEQgID8gQ09ERV9GT1JfbHNocmRpM19kaQorCSAgICAgICA6IGZjb2Rl ID09IEFSTV9CVUlMVElOX1dTTExIICA/IENPREVfRk9SX2FzaGx2NGhpM19k aQorCSAgICAgICA6IGZjb2RlID09IEFSTV9CVUlMVElOX1dTTExXICA/IENP REVfRk9SX2FzaGx2MnNpM19kaQorCSAgICAgICA6IGZjb2RlID09IEFSTV9C VUlMVElOX1dTTExEICA/IENPREVfRk9SX2FzaGxkaTNfZGkKKwkgICAgICAg OiBmY29kZSA9PSBBUk1fQlVJTFRJTl9XU1JBSCAgPyBDT0RFX0ZPUl9hc2hy djRoaTNfZGkKKwkgICAgICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJTl9XU1JB VyAgPyBDT0RFX0ZPUl9hc2hydjJzaTNfZGkKKwkgICAgICAgOiBmY29kZSA9 PSBBUk1fQlVJTFRJTl9XU1JBRCAgPyBDT0RFX0ZPUl9hc2hyZGkzX2RpCisJ ICAgICAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1JPUkggID8gQ09ERV9G T1Jfcm9ydjRoaTNfZGkKKwkgICAgICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJ Tl9XUk9SVyAgPyBDT0RFX0ZPUl9yb3J2MnNpM19kaQorCSAgICAgICA6IGZj b2RlID09IEFSTV9CVUlMVElOX1dST1JEICA/IENPREVfRk9SX3JvcmRpM19k aQorCSAgICAgICA6IENPREVfRk9SX25vdGhpbmcpOworICAgICAgYXJnMSA9 IENBTExfRVhQUl9BUkcgKGV4cCwgMSk7CisgICAgICBvcDEgPSBleHBhbmRf bm9ybWFsIChhcmcxKTsKKyAgICAgIGlmIChHRVRfTU9ERSAob3AxKSA9PSBW T0lEbW9kZSkKKwl7CisJICBpbnQgaW1tID0gSU5UVkFMIChvcDEpOworCSAg aWYgKChmY29kZSA9PSBBUk1fQlVJTFRJTl9XUk9SSEkgfHwgZmNvZGUgPT0g QVJNX0JVSUxUSU5fV1JPUldJCisJICAgICAgIHx8IGZjb2RlID09IEFSTV9C VUlMVElOX1dST1JIIHx8IGZjb2RlID09IEFSTV9CVUlMVElOX1dST1JXKQor CSAgICAgICYmIChpbW0gPCAwIHx8IGltbSA+IDMyKSkKKwkgICAgeworCSAg ICAgIGlmIChmY29kZSA9PSBBUk1fQlVJTFRJTl9XUk9SSEkpCisJCWVycm9y ICgidGhlIHJhbmdlIG9mIGNvdW50IHNob3VsZCBiZSBpbiAwIHRvIDMyLiAg cGxlYXNlIGNoZWNrIHRoZSBpbnRyaW5zaWMgX21tX3JvcmlfcGkxNiBpbiBj b2RlLiIpOworCSAgICAgIGVsc2UgaWYgKGZjb2RlID09IEFSTV9CVUlMVElO X1dST1JXSSkKKwkJZXJyb3IgKCJ0aGUgcmFuZ2Ugb2YgY291bnQgc2hvdWxk IGJlIGluIDAgdG8gMzIuICBwbGVhc2UgY2hlY2sgdGhlIGludHJpbnNpYyBf bW1fcm9yaV9waTMyIGluIGNvZGUuIik7CisJICAgICAgZWxzZSBpZiAoZmNv ZGUgPT0gQVJNX0JVSUxUSU5fV1JPUkgpCisJCWVycm9yICgidGhlIHJhbmdl IG9mIGNvdW50IHNob3VsZCBiZSBpbiAwIHRvIDMyLiAgcGxlYXNlIGNoZWNr IHRoZSBpbnRyaW5zaWMgX21tX3Jvcl9waTE2IGluIGNvZGUuIik7CisJICAg ICAgZWxzZQorCQllcnJvciAoInRoZSByYW5nZSBvZiBjb3VudCBzaG91bGQg YmUgaW4gMCB0byAzMi4gIHBsZWFzZSBjaGVjayB0aGUgaW50cmluc2ljIF9t bV9yb3JfcGkzMiBpbiBjb2RlLiIpOworCSAgICB9CisJICBlbHNlIGlmICgo ZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1JPUkRJIHx8IGZjb2RlID09IEFSTV9C VUlMVElOX1dST1JEKQorCQkgICAmJiAoaW1tIDwgMCB8fCBpbW0gPiA2NCkp CisJICAgIHsKKwkgICAgICBpZiAoZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1JP UkRJKQorCQllcnJvciAoInRoZSByYW5nZSBvZiBjb3VudCBzaG91bGQgYmUg aW4gMCB0byA2NC4gIHBsZWFzZSBjaGVjayB0aGUgaW50cmluc2ljIF9tbV9y b3JpX3NpNjQgaW4gY29kZS4iKTsKKwkgICAgICBlbHNlCisJCWVycm9yICgi dGhlIHJhbmdlIG9mIGNvdW50IHNob3VsZCBiZSBpbiAwIHRvIDY0LiAgcGxl YXNlIGNoZWNrIHRoZSBpbnRyaW5zaWMgX21tX3Jvcl9zaTY0IGluIGNvZGUu Iik7CisJICAgIH0KKwkgIGVsc2UgaWYgKGltbSA8IDApCisJICAgIHsKKwkg ICAgICBpZiAoZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1NSTEhJKQorCQllcnJv ciAoInRoZSBjb3VudCBzaG91bGQgYmUgbm8gbGVzcyB0aGFuIDAuICBwbGVh c2UgY2hlY2sgdGhlIGludHJpbnNpYyBfbW1fc3JsaV9waTE2IGluIGNvZGUu Iik7CisJICAgICAgZWxzZSBpZiAoZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1NS TFdJKQorCQllcnJvciAoInRoZSBjb3VudCBzaG91bGQgYmUgbm8gbGVzcyB0 aGFuIDAuICBwbGVhc2UgY2hlY2sgdGhlIGludHJpbnNpYyBfbW1fc3JsaV9w aTMyIGluIGNvZGUuIik7CisJICAgICAgZWxzZSBpZiAoZmNvZGUgPT0gQVJN X0JVSUxUSU5fV1NSTERJKQorCQllcnJvciAoInRoZSBjb3VudCBzaG91bGQg YmUgbm8gbGVzcyB0aGFuIDAuICBwbGVhc2UgY2hlY2sgdGhlIGludHJpbnNp YyBfbW1fc3JsaV9zaTY0IGluIGNvZGUuIik7CisJICAgICAgZWxzZSBpZiAo ZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1NMTEhJKQorCQllcnJvciAoInRoZSBj b3VudCBzaG91bGQgYmUgbm8gbGVzcyB0aGFuIDAuICBwbGVhc2UgY2hlY2sg dGhlIGludHJpbnNpYyBfbW1fc2xsaV9waTE2IGluIGNvZGUuIik7CisJICAg ICAgZWxzZSBpZiAoZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1NMTFdJKQorCQll cnJvciAoInRoZSBjb3VudCBzaG91bGQgYmUgbm8gbGVzcyB0aGFuIDAuICBw bGVhc2UgY2hlY2sgdGhlIGludHJpbnNpYyBfbW1fc2xsaV9waTMyIGluIGNv ZGUuIik7CisJICAgICAgZWxzZSBpZiAoZmNvZGUgPT0gQVJNX0JVSUxUSU5f V1NMTERJKQorCQllcnJvciAoInRoZSBjb3VudCBzaG91bGQgYmUgbm8gbGVz cyB0aGFuIDAuICBwbGVhc2UgY2hlY2sgdGhlIGludHJpbnNpYyBfbW1fc2xs aV9zaTY0IGluIGNvZGUuIik7CisJICAgICAgZWxzZSBpZiAoZmNvZGUgPT0g QVJNX0JVSUxUSU5fV1NSQUhJKQorCQllcnJvciAoInRoZSBjb3VudCBzaG91 bGQgYmUgbm8gbGVzcyB0aGFuIDAuICBwbGVhc2UgY2hlY2sgdGhlIGludHJp bnNpYyBfbW1fc3JhaV9waTE2IGluIGNvZGUuIik7CisJICAgICAgZWxzZSBp ZiAoZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1NSQVdJKQorCQllcnJvciAoInRo ZSBjb3VudCBzaG91bGQgYmUgbm8gbGVzcyB0aGFuIDAuICBwbGVhc2UgY2hl Y2sgdGhlIGludHJpbnNpYyBfbW1fc3JhaV9waTMyIGluIGNvZGUuIik7CisJ ICAgICAgZWxzZSBpZiAoZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1NSQURJKQor CQllcnJvciAoInRoZSBjb3VudCBzaG91bGQgYmUgbm8gbGVzcyB0aGFuIDAu ICBwbGVhc2UgY2hlY2sgdGhlIGludHJpbnNpYyBfbW1fc3JhaV9zaTY0IGlu IGNvZGUuIik7CisJICAgICAgZWxzZSBpZiAoZmNvZGUgPT0gQVJNX0JVSUxU SU5fV1NSTEgpCisJCWVycm9yICgidGhlIGNvdW50IHNob3VsZCBiZSBubyBs ZXNzIHRoYW4gMC4gIHBsZWFzZSBjaGVjayB0aGUgaW50cmluc2ljIF9tbV9z cmxfcGkxNiBpbiBjb2RlLiIpOworCSAgICAgIGVsc2UgaWYgKGZjb2RlID09 IEFSTV9CVUlMVElOX1dTUkxXKQorCQllcnJvciAoInRoZSBjb3VudCBzaG91 bGQgYmUgbm8gbGVzcyB0aGFuIDAuICBwbGVhc2UgY2hlY2sgdGhlIGludHJp bnNpYyBfbW1fc3JsX3BpMzIgaW4gY29kZS4iKTsKKwkgICAgICBlbHNlIGlm IChmY29kZSA9PSBBUk1fQlVJTFRJTl9XU1JMRCkKKwkJZXJyb3IgKCJ0aGUg Y291bnQgc2hvdWxkIGJlIG5vIGxlc3MgdGhhbiAwLiAgcGxlYXNlIGNoZWNr IHRoZSBpbnRyaW5zaWMgX21tX3NybF9zaTY0IGluIGNvZGUuIik7CisJICAg ICAgZWxzZSBpZiAoZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1NMTEgpCisJCWVy cm9yICgidGhlIGNvdW50IHNob3VsZCBiZSBubyBsZXNzIHRoYW4gMC4gIHBs ZWFzZSBjaGVjayB0aGUgaW50cmluc2ljIF9tbV9zbGxfcGkxNiBpbiBjb2Rl LiIpOworCSAgICAgIGVsc2UgaWYgKGZjb2RlID09IEFSTV9CVUlMVElOX1dT TExXKQorCQllcnJvciAoInRoZSBjb3VudCBzaG91bGQgYmUgbm8gbGVzcyB0 aGFuIDAuICBwbGVhc2UgY2hlY2sgdGhlIGludHJpbnNpYyBfbW1fc2xsX3Bp MzIgaW4gY29kZS4iKTsKKwkgICAgICBlbHNlIGlmIChmY29kZSA9PSBBUk1f QlVJTFRJTl9XU0xMRCkKKwkJZXJyb3IgKCJ0aGUgY291bnQgc2hvdWxkIGJl IG5vIGxlc3MgdGhhbiAwLiAgcGxlYXNlIGNoZWNrIHRoZSBpbnRyaW5zaWMg X21tX3NsbF9zaTY0IGluIGNvZGUuIik7CisJICAgICAgZWxzZSBpZiAoZmNv ZGUgPT0gQVJNX0JVSUxUSU5fV1NSQUgpCisJCWVycm9yICgidGhlIGNvdW50 IHNob3VsZCBiZSBubyBsZXNzIHRoYW4gMC4gIHBsZWFzZSBjaGVjayB0aGUg aW50cmluc2ljIF9tbV9zcmFfcGkxNiBpbiBjb2RlLiIpOworCSAgICAgIGVs c2UgaWYgKGZjb2RlID09IEFSTV9CVUlMVElOX1dTUkFXKQorCQllcnJvciAo InRoZSBjb3VudCBzaG91bGQgYmUgbm8gbGVzcyB0aGFuIDAuICBwbGVhc2Ug Y2hlY2sgdGhlIGludHJpbnNpYyBfbW1fc3JhX3BpMzIgaW4gY29kZS4iKTsK KwkgICAgICBlbHNlCisJCWVycm9yICgidGhlIGNvdW50IHNob3VsZCBiZSBu byBsZXNzIHRoYW4gMC4gIHBsZWFzZSBjaGVjayB0aGUgaW50cmluc2ljIF9t bV9zcmFfc2k2NCBpbiBjb2RlLiIpOworCSAgICB9CisJICBpY29kZSA9IChm Y29kZSA9PSBBUk1fQlVJTFRJTl9XU1JMSEkgPyBDT0RFX0ZPUl9sc2hyaXY0 aGkzX2l3bW14dAorIAkJICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJTl9XU1JM V0kgPyBDT0RFX0ZPUl9sc2hyaXYyc2kzX2l3bW14dAorIAkJICAgOiBmY29k ZSA9PSBBUk1fQlVJTFRJTl9XU1JMREkgPyBDT0RFX0ZPUl9sc2hyaWRpM19p d21teHQKKwkJICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJTl9XU0xMSEkgPyBD T0RFX0ZPUl9hc2hsaXY0aGkzX2l3bW14dAorIAkJICAgOiBmY29kZSA9PSBB Uk1fQlVJTFRJTl9XU0xMV0kgPyBDT0RFX0ZPUl9hc2hsaXYyc2kzX2l3bW14 dAorIAkJICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJTl9XU0xMREkgPyBDT0RF X0ZPUl9hc2hsaWRpM19pd21teHQKKwkJICAgOiBmY29kZSA9PSBBUk1fQlVJ TFRJTl9XU1JBSEkgPyBDT0RFX0ZPUl9hc2hyaXY0aGkzX2l3bW14dAorIAkJ ICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJTl9XU1JBV0kgPyBDT0RFX0ZPUl9h c2hyaXYyc2kzX2l3bW14dAorIAkJICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJ Tl9XU1JBREkgPyBDT0RFX0ZPUl9hc2hyaWRpM19pd21teHQKKwkJICAgOiBm Y29kZSA9PSBBUk1fQlVJTFRJTl9XUk9SSEkgPyBDT0RFX0ZPUl9yb3JpdjRo aTMKKyAJCSAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1JPUldJID8gQ09E RV9GT1Jfcm9yaXYyc2kzCisgCQkgICA6IGZjb2RlID09IEFSTV9CVUlMVElO X1dST1JESSA/IENPREVfRk9SX3JvcmlkaTMKKwkJICAgOiBmY29kZSA9PSBB Uk1fQlVJTFRJTl9XU1JMSCA/IENPREVfRk9SX2xzaHJpdjRoaTNfaXdtbXh0 CisJCSAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1NSTFcgPyBDT0RFX0ZP Ul9sc2hyaXYyc2kzX2l3bW14dAorIAkJICAgOiBmY29kZSA9PSBBUk1fQlVJ TFRJTl9XU1JMRCA/IENPREVfRk9SX2xzaHJpZGkzX2l3bW14dAorCQkgICA6 IGZjb2RlID09IEFSTV9CVUlMVElOX1dTTExIID8gQ09ERV9GT1JfYXNobGl2 NGhpM19pd21teHQKKyAJCSAgIDogZmNvZGUgPT0gQVJNX0JVSUxUSU5fV1NM TFcgPyBDT0RFX0ZPUl9hc2hsaXYyc2kzX2l3bW14dAorIAkJICAgOiBmY29k ZSA9PSBBUk1fQlVJTFRJTl9XU0xMRCA/IENPREVfRk9SX2FzaGxpZGkzX2l3 bW14dAorCQkgICA6IGZjb2RlID09IEFSTV9CVUlMVElOX1dTUkFIID8gQ09E RV9GT1JfYXNocml2NGhpM19pd21teHQKKyAJCSAgIDogZmNvZGUgPT0gQVJN X0JVSUxUSU5fV1NSQVcgPyBDT0RFX0ZPUl9hc2hyaXYyc2kzX2l3bW14dAor IAkJICAgOiBmY29kZSA9PSBBUk1fQlVJTFRJTl9XU1JBRCA/IENPREVfRk9S X2FzaHJpZGkzX2l3bW14dAorCQkgICA6IGZjb2RlID09IEFSTV9CVUlMVElO X1dST1JIID8gQ09ERV9GT1Jfcm9yaXY0aGkzCisgCQkgICA6IGZjb2RlID09 IEFSTV9CVUlMVElOX1dST1JXID8gQ09ERV9GT1Jfcm9yaXYyc2kzCisgCQkg ICA6IGZjb2RlID09IEFSTV9CVUlMVElOX1dST1JEID8gQ09ERV9GT1Jfcm9y aWRpMworCQkgICA6IENPREVfRk9SX25vdGhpbmcpOworCX0KKyAgICAgIHJl dHVybiBhcm1fZXhwYW5kX2Jpbm9wX2J1aWx0aW4gKGljb2RlLCBleHAsIHRh cmdldCk7OwogICAgIGRlZmF1bHQ6CiAgICAgICBicmVhazsKICAgICB9Cg== --_002_4737A960563B524DA805CA602BE04B306010D8E69ASCVEXCH2marve_--