From mboxrd@z Thu Jan 1 00:00:00 1970 From: jsm@cygnus.com To: jsm@cygnus.com Cc: gdb-patches-prs@sourceware.cygnus.com Subject: Re: gdb-patch/1 Date: Sun, 20 Feb 2000 22:48:00 -0000 Message-id: <20000221064800.7152.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00000.html List-Id: The following reply was made to PR gdb-patch/1; it has been noted by GNATS. From: jsm@cygnus.com To: gdb-patches-gnats@sourceware.cygnus.com, jsm@cygnus.com, nobody@sourceware.cygnus.com Cc: Subject: Re: gdb-patch/1 Date: 21 Feb 2000 06:43:20 -0000 Synopsis: Fix a problem with mmalloc. Responsible-Changed-From-To: unassigned->jsm Responsible-Changed-By: jsm Responsible-Changed-When: Sun Feb 20 22:43:20 2000 Responsible-Changed-Why: Mine. State-Changed-From-To: open->applied State-Changed-By: jsm State-Changed-When: Sun Feb 20 22:43:20 2000 State-Changed-Why: Already committed by Frank Eigler http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=1&database=gdb-patches >>From jsm@cygnus.com Sun Feb 20 22:48:00 2000 From: Jason Molenda To: jsm@cygnus.com Cc: gdb-patches-prs@sourceware.cygnus.com Subject: Re: gdb-patch/1: Fix a problem with mmalloc. Date: Sun, 20 Feb 2000 22:48:00 -0000 Message-id: <20000221064800.7158.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00001.html Content-length: 279 The following reply was made to PR gdb-patch/1; it has been noted by GNATS. From: Jason Molenda To: gdb-patches-gnats@sourceware.cygnus.com Cc: Subject: Re: gdb-patch/1: Fix a problem with mmalloc. Date: Sun, 20 Feb 2000 22:44:23 -0800 Test follow-up note. >>From jimb@red-bean.com Tue Feb 22 08:28:00 2000 From: jimb@red-bean.com To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/2: Delete the whole thing. If you'd written it right, you wouldn't need GDB. Date: Tue, 22 Feb 2000 08:28:00 -0000 Message-id: <20000222162113.27020.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00002.html Content-length: 4276 >Number: 2 >Category: gdb-patch >Synopsis: Delete the whole thing. If you'd written it right, you wouldn't need GDB. >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Tue Feb 22 08:28:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: jimb@red-bean.com >Release: GDB 4.18 >Organization: >Environment: Red Hat Linux 6.1 >Description: Escapism is the key. >How-To-Repeat: >Fix: cd devo rm -rf gdb >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: text/html; name="kublai.html" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kublai.html" PGh0bWw+CjxoZWFkPgo8dGl0bGU+S3VibGFpIEtoYW48L3RpdGxlPgo8L2hlYWQ+Cgo8Ym9keSBi YWNrZ3JvdW5kPSJiYWNrZ3JvdW5kcy9tYXJibGUyLmdpZiI+Cgo8aHI+PGJyPgo8Y2VudGVyPgo8 dGFibGUgd2lkdGg9MTAwJSBhbGlnbj1jZW50ZXIgYm9yZGVyPTA+CiA8dHI+CiAgPHRkIHdpZHRo PTIwJT4KICA8L3RkPgoKICA8dGQgd2lkdGg9MzIwPgo8dWw+PGZvbnQgc2l6ZT0rMT5LdWJsYWkg S2hhbjwvZm9udD48cD48L3VsPgoKSW4gWGFuYWR1IGRpZCBLdWJsYWkgS2hhbjxicj4KQSBzdGF0 ZWx5IHBsZWFzdXJlLWRvbWUgZGVjcmVlOjxicj4KV2hlcmUgQWxwaCwgdGhlIHNhY3JlZCByaXZl ciwgcmFuPGJyPgpUaHJvdWdoIGNhdmVybnMgbWVhc3VyZWxlc3MgdG8gbWFuPGJyPgpEb3duIHRv IGEgc3VubGVzcyBzZWEuPHA+CgpTbyB0d2ljZSBmaXZlIG1pbGVzIG9mIGZlcnRpbGUgZ3JvdW5k PGJyPgpXaXRoIHdhbGxzIGFuZCB0b3dlcnMgd2VyZSBnaXJkbGVkIHJvdW5kOjxicj4KQW5kIHRo ZXJlIHdlcmUgZ2FyZGVucyBicmlnaHQgd2l0aCBzaW51b3VzIHJpbGxzLDxicj4KV2hlcmUgYmxv c3NvbWVkIG1hbnkgYW4gaW5jZW5zZS1iZWFyaW5nIHRyZWU7PGJyPgpBbmQgaGVyZSB3ZXJlIGZv cmVzdHMgYW5jaWVudCBhcyB0aGUgaGlsbHMsPGJyPgpFbmZvbGRpbmcgc3Vubnkgc3BvdHMgb2Yg Z3JlZW5lcnkuPHA+CgpCdXQgb2ghICB0aGF0IGRlZXAgcm9tYW50aWMgY2hhc20gd2hpY2ggc2xh bnRlZDxicj4KRG93biB0aGUgZ3JlZW4gaGlsbCBhdGh3YXJ0IGEgY2VkYXJuIGNvdmVyITxicj4K QSBzYXZhZ2UgcGxhY2UhICBhcyBob2x5IGFuZCBlbmNoYW50ZWQ8YnI+CkFzIGUnZXIgYmVuZWF0 aCBhIHdhbmluZyBtb29uIHdhcyBoYXVudGVkPGJyPgpCeSB3b21hbiB3YWlsaW5nIGZvciBoZXIg ZGVtb24tbG92ZXIhPGJyPgpBbmQgZnJvbSB0aGlzIGNoYXNtLCB3aXRoIGNlYXNlbGVzcyB0dXJt b2lsIHNlZXRoaW5nLDxicj4KQXMgaWYgdGhpcyBlYXJ0aCBpbiBmYXN0IHRoaWNrIHBhbnRzIHdl cmUgYnJlYXRoaW5nLDxicj4KQSBtaWdodHkgZm91bnRhaW4gbW9tZW50bHkgd2FzIGZvcmNlZDo8 YnI+CkFtaWQgd2hvc2Ugc3dpZnQgaGFsZi1pbnRlcm1pdHRlZCBidXJzdDxicj4KSHVnZSBmcmFn bWVudHMgdmF1bHRlZCBsaWtlIHJlYm91bmRpbmcgaGFpbCw8YnI+Ck9yIGNoYWZmeSBncmFpbiBi ZW5lYXRoIHRoZSB0aHJlc2hlcidzIGZsYWlsOjxicj4KQW5kICdtaWQgdGhlc2UgZGFuY2luZyBy b2NrcyBhdCBvbmNlIGFuZCBldmVyPGJyPgpJdCBmbHVuZyB1cCBtb21lbnRseSB0aGUgc2FjcmVk IHJpdmVyLjxicj4KRml2ZSBtaWxlcyBtZWFuZGVyaW5nIHdpdGggYSBtYXp5IG1vdGlvbjxicj4K VGhyb3VnaCB3b29kIGFuZCBkYWxlIHRoZSBzYWNyZWQgcml2ZXIgcmFuLDxicj4KVGhlbiByZWFj aGVkIHRoZSBjYXZlcm5zIG1lYXN1cmVsZXNzIHRvIG1hbiw8YnI+CkFuZCBzYW5rIGluIHR1bXVs dCB0byBhIGxpZmVsZXNzIG9jZWFuOjxicj4KQW5kICdtaWQgdGhpcyB0dW11bHQgS3VibGFpIGhl YXJkIGZyb20gZmFyPGJyPgpBbmNlc3RyYWwgdm9pY2VzIHByb3BoZXN5aW5nIHdhciE8cD4KClRo ZSBzaGFkb3cgb2YgdGhlIGRvbWUgb2YgcGxlYXN1cmU8YnI+CkZsb2F0ZWQgbWlkd2F5IG9uIHRo ZSB3YXZlczs8YnI+CldoZXJlIHdhcyBoZWFyZCB0aGUgbWluZ2xlZCBtZWFzdXJlPGJyPgpGcm9t IHRoZSBmb3VudGFpbiBhbmQgdGhlIGNhdmVzLjxicj4KSXQgd2FzIGEgbWlyYWNsZSBvZiByYXJl IGRldmljZSw8YnI+CkEgc3VubnkgcGxlYXN1cmUtZG9tZSB3aXRoIGNhdmVzIG9mIGljZSE8cD4K CkEgZGFtc2VsIHdpdGggYSBkdWxjaW1lcjxicj4KSW4gYSB2aXNpb24gb25jZSBJIHNhdzo8YnI+ Ckl0IHdhcyBhbiBBYnlzc2luaWFuIG1haWQsPGJyPgpBbmQgb24gaGVyIGR1bGNpbWVyIHNoZSBw bGF5ZWQsPGJyPgpTaW5naW5nIG9mIE1vdW50IEFib3JhLjxicj4KQ291bGQgSSByZXZpdmUgd2l0 aGluIG1lPGJyPgpIZXIgc3ltcGhvbnkgYW5kIHNvbmcsPGJyPgpUbyBzdWNoIGRlZXAgZGVsaWdo dCAndHdvdWxkIHdpbiBtZSw8YnI+ClRoYXQgd2l0aCBtdXNpYyBsb3VkIGFuZCBsb25nLDxicj4K SSB3b3VsZCBidWlsZCB0aGF0IGRvbWUgaW4gYWlyLDxicj4KVGhhdCBzdW5ueSBkb21lISAgdGhv c2UgY2F2ZXMgb2YgaWNlITxicj4KQW5kIGFsbCB3aG8gaGVhcmQgc2hvdWxkIHNlZSB0aGVtIHRo ZXJlLDxicj4KQW5kIGFsbCBzaG91bGQgY3J5IEJld2FyZSEgQmV3YXJlITxicj4KSGlzIGZsYXNo aW5nIGV5ZXMsIGhpcyBmbG9hdGluZyBoYWlyITxicj4KV2VhdmUgYSBjaXJjbGUgcm91bmQgaGlt IHRocmljZSw8YnI+CkFuZCBjbG9zZSB5b3VyIGV5ZXMgd2l0aCBob2x5IGRyZWFkLDxicj4KRm9y IGhlIG9uIGhvbmV5ZGV3IGhhdGggZmVkLDxicj4KQW5kIGRydW5rIHRoZSBtaWxrIG9mIFBhcmFk aXNlLjxwPgo8YnI+CjxjZW50ZXI+U2FtdWVsIFRheWxvciBDb2xlcmlkZ2U8L2NlbnRlcj4KCiAg PC90ZD4KPC90YWJsZT4KPC9jZW50ZXI+Cgo8YnI+PGhyPjxicj4KR2V0IDxBIEhSRUYgPSBjaGls ZHJlbi5odG1sPmJhY2s8L0E+LgoKPC9odG1sPgo= >>From jimb@cygnus.com Tue Feb 22 08:58:00 2000 From: jimb@cygnus.com To: jimb@cygnus.com Cc: gdb-patches-prs@sourceware.cygnus.com Subject: Re: gdb-patch/2 Date: Tue, 22 Feb 2000 08:58:00 -0000 Message-id: <20000222165800.588.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00003.html Content-length: 622 The following reply was made to PR gdb-patch/2; it has been noted by GNATS. From: jimb@cygnus.com To: gdb-patches-gnats@sourceware.cygnus.com, jimb@cygnus.com, jimb@red-bean.com, nobody@sourceware.cygnus.com Cc: Subject: Re: gdb-patch/2 Date: 22 Feb 2000 16:50:25 -0000 Synopsis: Delete the whole thing. If you'd written it right, you wouldn't need GDB. Responsible-Changed-From-To: unassigned->jimb Responsible-Changed-By: jimb Responsible-Changed-When: Tue Feb 22 08:50:25 2000 Responsible-Changed-Why: Get to it! http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=2&database=gdb-patches >>From jimb@red-bean.com Tue Feb 22 10:58:00 2000 From: Jim Blandy To: jimb@cygnus.com Cc: gdb-patches-prs@sourceware.cygnus.com Subject: Re: gdb-patch/2 Date: Tue, 22 Feb 2000 10:58:00 -0000 Message-id: <20000222185800.21151.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00004.html Content-length: 291 The following reply was made to PR gdb-patch/2; it has been noted by GNATS. From: Jim Blandy To: gdb-patches-gnats@sourceware.cygnus.com Cc: jimb@red-bean.com, nobody@sourceware.cygnus.com Subject: Re: gdb-patch/2 Date: 22 Feb 2000 13:57:51 -0500 Golly, Jim! Thanks! >>From scottb@netwinder.org Thu Mar 02 07:18:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/8: Remove deprecated defines. Date: Thu, 02 Mar 2000 07:18:00 -0000 Message-id: <20000302150931.23620.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00005.html Content-length: 1722 >Number: 8 >Category: gdb-patch >Synopsis: Remove deprecated defines. >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:18:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/alpha/tm-alpha: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="alpha.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="alpha.patch" SW5kZXg6IGFscGhhL3RtLWFscGhhLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3NyYy9z cmMvZ2RiL2NvbmZpZy9hbHBoYS90bS1hbHBoYS5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4y DQpkaWZmIC11IC1wIC1yMS4yIHRtLWFscGhhLmgNCi0tLSB0bS1hbHBoYS5oCTIwMDAvMDIvMjIg MTk6MTc6MzcJMS4yDQorKysgdG0tYWxwaGEuaAkyMDAwLzAzLzAyIDE0OjQyOjAxDQpAQCAtMzEs OSArMzEsOCBAQCBzdHJ1Y3QgdHlwZTsNCiBzdHJ1Y3QgdmFsdWU7DQogc3RydWN0IHN5bWJvbDsN CiANCi0jaWYgIWRlZmluZWQgKFRBUkdFVF9CWVRFX09SREVSKQ0KLSNkZWZpbmUgVEFSR0VUX0JZ VEVfT1JERVIgTElUVExFX0VORElBTg0KLSNlbmRpZg0KKyNkZWZpbmUgVEFSR0VUX0JZVEVfT1JE RVJfU0VMRUNUQUJMRV9QCTANCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSX0RFRkFVTFQJTElU VExFX0VORElBTg0KIA0KIC8qIFJlZGVmaW5lIHNvbWUgdGFyZ2V0IGJpdCBzaXplcyBmcm9tIHRo ZSBkZWZhdWx0LiAgKi8NCiANCg== >>From scottb@netwinder.org Thu Mar 02 07:18:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/9: Remove deprecated defines. Date: Thu, 02 Mar 2000 07:18:00 -0000 Message-id: <20000302151126.23734.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00007.html Content-length: 1720 >Number: 9 >Category: gdb-patch >Synopsis: Remove deprecated defines. >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:18:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/arc/tm-arc.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="arc.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="arc.patch" SW5kZXg6IGFyYy90bS1hcmMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n ZGIvY29uZmlnL2FyYy90bS1hcmMuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjUNCmRp ZmYgLXUgLXAgLXIxLjEuMS41IHRtLWFyYy5oDQotLS0gdG0tYXJjLmgJMTk5OS8wOS8wOCAyMzo1 OTo0OAkxLjEuMS41DQorKysgdG0tYXJjLmgJMjAwMC8wMy8wMiAxNDo0MzoyMg0KQEAgLTIzLDcg KzIzLDggQEANCiAjZGVmaW5lIERFRkFVTFRfQVJDX0NQVV9UWVBFICJiYXNlIg0KIA0KIC8qIEJ5 dGUgb3JkZXIgaXMgc2VsZWN0YWJsZS4gICovDQotI2RlZmluZQlUQVJHRVRfQllURV9PUkRFUl9T RUxFQ1RBQkxFDQorI2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9TRUxFQ1RBQkxFX1AJMQ0KKyNk ZWZpbmUgVEFSR0VUX0JZVEVfT1JERVJfREVGQVVMVAlMSVRUTEVfRU5ESUFODQogDQogLyogV2Ug aGF2ZSBJRUVFIGZsb2F0aW5nIHBvaW50LCBpZiB3ZSBoYXZlIGFueSBmbG9hdCBhdCBhbGwuICAq Lw0KICNkZWZpbmUgSUVFRV9GTE9BVA0K >>From scottb@netwinder.org Thu Mar 02 07:18:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/10: Remove deprecated defines. Date: Thu, 02 Mar 2000 07:18:00 -0000 Message-id: <20000302151759.25302.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00006.html Content-length: 4477 >Number: 10 >Category: gdb-patch >Synopsis: Remove deprecated defines. >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:18:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/arm/tm-arm.h: Replace deprecated macro TARGET_BYTE_ORDER_SELECTABLE. * config/arm/tm-embed.h: Undefine LOWEST_PC before redefining. Fixes build warnings. * config/arm/tm-linux.h: Adjust byte order comment. * config/arm/tm-wince.h: Replace deprecated macro TARGET_BYTE_ORDER_SELECTABLE. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="arm.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="arm.patch" SW5kZXg6IGFybS90bS1hcm0uaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n ZGIvY29uZmlnL2FybS90bS1hcm0uaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjkNCmRp ZmYgLXUgLXAgLXIxLjEuMS45IHRtLWFybS5oDQotLS0gdG0tYXJtLmgJMjAwMC8wMi8wNSAwNzoy OTo1MgkxLjEuMS45DQorKysgdG0tYXJtLmgJMjAwMC8wMy8wMiAxNDo0Mzo1OA0KQEAgLTI1LDEx ICsyNSw5IEBADQogc3RydWN0IHR5cGU7DQogc3RydWN0IHZhbHVlOw0KIA0KLSNkZWZpbmUgVEFS R0VUX0JZVEVfT1JERVJfU0VMRUNUQUJMRQ0KLQ0KIC8qIFRhcmdldCBieXRlIG9yZGVyIG9uIEFS TSBkZWZhdWx0cyB0byBzZWxlY3RhYmxlLCBhbmQgZGVmYXVsdHMgdG8NCiAgICBsaXR0bGUgZW5k aWFuLiAgKi8NCi0jZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkJMQ0KKyNk ZWZpbmUgVEFSR0VUX0JZVEVfT1JERVJfU0VMRUNUQUJMRV9QCTENCiAjZGVmaW5lIFRBUkdFVF9C WVRFX09SREVSX0RFRkFVTFQJTElUVExFX0VORElBTg0KIA0KIC8qIElFRUUgZm9ybWF0IGZsb2F0 aW5nIHBvaW50LiAgKi8NCkluZGV4OiBhcm0vdG0tZW1iZWQuaA0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZp bGU6IC9jdnMvc3JjL3NyYy9nZGIvY29uZmlnL2FybS90bS1lbWJlZC5oLHYNCnJldHJpZXZpbmcg cmV2aXNpb24gMS4xLjEuMQ0KZGlmZiAtdSAtcCAtcjEuMS4xLjEgdG0tZW1iZWQuaA0KLS0tIHRt LWVtYmVkLmgJMTk5OS8xMi8yMiAyMTo0NToxMwkxLjEuMS4xDQorKysgdG0tZW1iZWQuaAkyMDAw LzAzLzAyIDE0OjQzOjU4DQpAQCAtMzIsNiArMzIsNyBAQA0KICNkZWZpbmUgU1RBQ0tfRU5EX0FE RFIgKDB4MDEwMDAwMDAgLSAoVEFSR0VUX1VQQUdFUyAqIFRBUkdFVF9OQlBHKSkNCiANCiAvKiBU aGUgZmlyc3QgMHgyMCBieXRlcyBhcmUgdGhlIHRyYXAgdmVjdG9ycy4gICovDQorI3VuZGVmIExP V0VTVF9QQw0KICNkZWZpbmUgTE9XRVNUX1BDCTB4MjANCiANCiAvKiBPdmVycmlkZSBkZWZhdWx0 cy4gICovDQpJbmRleDogYXJtL3RtLWxpbnV4LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3Zz L3NyYy9zcmMvZ2RiL2NvbmZpZy9hcm0vdG0tbGludXguaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9u IDEuMw0KZGlmZiAtdSAtcCAtcjEuMyB0bS1saW51eC5oDQotLS0gdG0tbGludXguaAkyMDAwLzAy LzI4IDIwOjUxOjA4CTEuMw0KKysrIHRtLWxpbnV4LmgJMjAwMC8wMy8wMiAxNDo0Mzo1OA0KQEAg LTI2LDkgKzI2LDkgQEANCiANCiAjaW5jbHVkZSAidG0tbGludXguaCINCiANCi0vKiBUYXJnZXQg Ynl0ZSBvcmRlciBvbiBBUk0gTGludXggaXMgbm90IHNlbGVjdGFibGUuICAqLw0KKy8qIFRhcmdl dCBieXRlIG9yZGVyIG9uIEFSTSBMaW51eCBpcyBsaXR0bGUgZW5kaWFuIGFuZCBub3Qgc2VsZWN0 YWJsZS4gICovDQogI3VuZGVmIFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUA0KLSNkZWZp bmUgVEFSR0VUX0JZVEVfT1JERVJfU0VMRUNUQUJMRV9QCQkwDQorI2RlZmluZSBUQVJHRVRfQllU RV9PUkRFUl9TRUxFQ1RBQkxFX1AJMA0KIA0KIC8qIFVuZGVyIEFSTSBMaW51eCB0aGUgdHJhZGl0 aW9uYWwgd2F5IG9mIHBlcmZvcm1pbmcgYSBicmVha3BvaW50IGlzIHRvDQogICAgZXhlY3V0ZSBh IHBhcnRpY3VsYXIgc29mdHdhcmUgaW50ZXJydXB0LCByYXRoZXIgdGhhbiB1c2UgYSBwYXJ0aWN1 bGFyDQpJbmRleDogYXJtL3RtLXdpbmNlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3Ny Yy9zcmMvZ2RiL2NvbmZpZy9hcm0vdG0td2luY2UuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEu MQ0KZGlmZiAtdSAtcCAtcjEuMSB0bS13aW5jZS5oDQotLS0gdG0td2luY2UuaAkyMDAwLzAyLzI0 IDAzOjMxOjQ1CTEuMQ0KKysrIHRtLXdpbmNlLmgJMjAwMC8wMy8wMiAxNDo0Mzo1OA0KQEAgLTMx LDcgKzMxLDggQEANCiANCiB2b2lkIHdpbmNlX3NvZnR3YXJlX3NpbmdsZV9zdGVwICh1bnNpZ25l ZCBpbnQsIGludCk7DQogDQotI3VuZGVmIFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEUNCi0j ZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSIExJVFRMRV9FTkRJQU4NCisvKiBUYXJnZXQgYnl0ZSBv cmRlciBpcyBsaXR0bGUgZW5kaWFuIGFuZCBub3Qgc2VsZWN0YWJsZSBvbiBXaW5DRS4gKi8NCisj dW5kZWYgIFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUA0KKyNkZWZpbmUgVEFSR0VUX0JZ VEVfT1JERVJfU0VMRUNUQUJMRV9QCTANCiANCiAjZW5kaWYgLyogVE1fV0lOQ0VfSCAqLw0K >>From scottb@netwinder.org Thu Mar 02 07:28:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/13: Remove deprecated defines (h8300). Date: Thu, 02 Mar 2000 07:28:00 -0000 Message-id: <20000302152526.27152.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00011.html Content-length: 1850 >Number: 13 >Category: gdb-patch >Synopsis: Remove deprecated defines (h8300). >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:28:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/h8300/tm-h8300.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="h8300.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="h8300.patch" SW5kZXg6IGg4MzAwL3RtLWg4MzAwLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3NyYy9z cmMvZ2RiL2NvbmZpZy9oODMwMC90bS1oODMwMC5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4x LjEuNw0KZGlmZiAtdSAtcCAtcjEuMS4xLjcgdG0taDgzMDAuaA0KLS0tIHRtLWg4MzAwLmgJMTk5 OS8xMi8xNCAwMTowNTo0MAkxLjEuMS43DQorKysgdG0taDgzMDAuaAkyMDAwLzAzLzAyIDE0OjQ2 OjE1DQpAQCAtNTEsOCArNTEsMTAgQEAgZXh0ZXJuIGludCBoODMwMHNtb2RlOw0KIGV4dGVybiB2 b2lkIGg4MzAwX2luaXRfZXh0cmFfZnJhbWVfaW5mbyAoKTsNCiANCiAjZGVmaW5lIElFRUVfRkxP QVQNCisNCiAvKiBEZWZpbmUgdGhlIGJpdCwgYnl0ZSwgYW5kIHdvcmQgb3JkZXJpbmcgb2YgdGhl IG1hY2hpbmUuICAqLw0KLSNkZWZpbmUgVEFSR0VUX0JZVEVfT1JERVIgQklHX0VORElBTg0KKyNk ZWZpbmUgVEFSR0VUX0JZVEVfT1JERVJfU0VMRUNUQUJMRV9QCTANCisjZGVmaW5lIFRBUkdFVF9C WVRFX09SREVSX0RFRkFVTFQJQklHX0VORElBTg0KICN1bmRlZiBUQVJHRVRfSU5UX0JJVA0KICNk ZWZpbmUgVEFSR0VUX0lOVF9CSVQgIDE2DQogI3VuZGVmIFRBUkdFVF9MT05HX0JJVA0K >>From scottb@netwinder.org Thu Mar 02 07:28:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/11: Remove deprecated defines (d30v). Date: Thu, 02 Mar 2000 07:28:00 -0000 Message-id: <20000302152300.25885.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00008.html Content-length: 1736 >Number: 11 >Category: gdb-patch >Synopsis: Remove deprecated defines (d30v). >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:28:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/d30v/tm-d30v.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="d30v.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="d30v.patch" SW5kZXg6IGQzMHYvdG0tZDMwdi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj L2dkYi9jb25maWcvZDMwdi90bS1kMzB2Lmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS43 DQpkaWZmIC11IC1wIC1yMS4xLjEuNyB0bS1kMzB2LmgNCi0tLSB0bS1kMzB2LmgJMTk5OS8wOS8w OCAyMzo1OTo0OQkxLjEuMS43DQorKysgdG0tZDMwdi5oCTIwMDAvMDMvMDIgMTQ6NDQ6NTkNCkBA IC0yMyw3ICsyMyw4IEBADQogDQogLyogRGVmaW5lIHRoZSBiaXQsIGJ5dGUsIGFuZCB3b3JkIG9y ZGVyaW5nIG9mIHRoZSBtYWNoaW5lLiAgKi8NCiANCi0jZGVmaW5lIFRBUkdFVF9CWVRFX09SREVS CUJJR19FTkRJQU4NCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQor I2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9ERUZBVUxUCUJJR19FTkRJQU4NCiANCiAvKiBPZmZz ZXQgZnJvbSBhZGRyZXNzIG9mIGZ1bmN0aW9uIHRvIHN0YXJ0IG9mIGl0cyBjb2RlLg0KICAgIFpl cm8gb24gbW9zdCBtYWNoaW5lcy4gICovDQo= >>From scottb@netwinder.org Thu Mar 02 07:28:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/12: Remove deprecated defines (fr30). Date: Thu, 02 Mar 2000 07:28:00 -0000 Message-id: <20000302152414.26469.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00010.html Content-length: 1635 >Number: 12 >Category: gdb-patch >Synopsis: Remove deprecated defines (fr30). >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:28:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/fr30/tm-fr30.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="fr30.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="fr30.patch" SW5kZXg6IGZyMzAvdG0tZnIzMC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj L2dkYi9jb25maWcvZnIzMC90bS1mcjMwLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjINCmRp ZmYgLXUgLXAgLXIxLjIgdG0tZnIzMC5oDQotLS0gdG0tZnIzMC5oCTIwMDAvMDIvMjIgMTk6MTc6 NDcJMS4yDQorKysgdG0tZnIzMC5oCTIwMDAvMDMvMDIgMTQ6NDU6NDENCkBAIC01MCw3ICs1MCw4 IEBADQogDQogI2RlZmluZSBJTk5FUl9USEFOKGxocyxyaHMpICgobGhzKSA8IChyaHMpKQ0KIA0K LSNkZWZpbmUgVEFSR0VUX0JZVEVfT1JERVIgQklHX0VORElBTg0KKyNkZWZpbmUgVEFSR0VUX0JZ VEVfT1JERVJfU0VMRUNUQUJMRV9QCTANCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSX0RFRkFV TFQJQklHX0VORElBTg0KIA0KICNkZWZpbmUgUjBfUkVHTlVNICAwDQogI2RlZmluZSBSMV9SRUdO VU0gIDENCg== >>From scottb@netwinder.org Thu Mar 02 07:28:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/14: Remove deprecated defines (h8500). Date: Thu, 02 Mar 2000 07:28:00 -0000 Message-id: <20000302152605.27459.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00009.html Content-length: 1733 >Number: 14 >Category: gdb-patch >Synopsis: Remove deprecated defines (h8500). >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:28:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/h8500/tm-h8500.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="h8500.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="h8500.patch" SW5kZXg6IGg4NTAwL3RtLWg4NTAwLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3NyYy9z cmMvZ2RiL2NvbmZpZy9oODUwMC90bS1oODUwMC5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4x LjEuNQ0KZGlmZiAtdSAtcCAtcjEuMS4xLjUgdG0taDg1MDAuaA0KLS0tIHRtLWg4NTAwLmgJMTk5 OS8wNy8wNyAyMDoxMjoyNgkxLjEuMS41DQorKysgdG0taDg1MDAuaAkyMDAwLzAzLzAyIDE0OjQ2 OjM4DQpAQCAtMjUsOCArMjUsOCBAQA0KICNkZWZpbmUgSUVFRV9GTE9BVCAxDQogDQogLyogRGVm aW5lIHRoZSBiaXQsIGJ5dGUsIGFuZCB3b3JkIG9yZGVyaW5nIG9mIHRoZSBtYWNoaW5lLiAgKi8N Ci0NCi0jZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSIEJJR19FTkRJQU4NCisjZGVmaW5lIFRBUkdF VF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQorI2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9E RUZBVUxUCUJJR19FTkRJQU4NCiANCiAvKiBEZWZpbmUgdGhlIHNpemVzIG9mIGludGVnZXJzIGFu ZCBwb2ludGVycy4gICovDQogDQo= >>From scottb@netwinder.org Thu Mar 02 07:38:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/22: Remove deprecated defines (ns32k). Date: Thu, 02 Mar 2000 07:38:00 -0000 Message-id: <20000302153734.29106.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00017.html Content-length: 2813 >Number: 22 >Category: gdb-patch >Synopsis: Remove deprecated defines (ns32k). >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:38:02 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/ns32k/tm-merlin.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. * config/ns32k/tm-umax.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="ns32k.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ns32k.patch" SW5kZXg6IG5zMzJrL3RtLW1lcmxpbi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMv c3JjL2dkYi9jb25maWcvbnMzMmsvdG0tbWVybGluLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAx LjEuMS41DQpkaWZmIC11IC1wIC1yMS4xLjEuNSB0bS1tZXJsaW4uaA0KLS0tIHRtLW1lcmxpbi5o CTE5OTkvMDcvMDcgMjA6MTY6MDUJMS4xLjEuNQ0KKysrIHRtLW1lcmxpbi5oCTIwMDAvMDMvMDIg MTQ6NTM6MjkNCkBAIC0xOCw3ICsxOCw4IEBADQogICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt cGxlIFBsYWNlIC0gU3VpdGUgMzMwLA0KICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAg Ki8NCiANCi0jZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSIExJVFRMRV9FTkRJQU4NCisjZGVmaW5l IFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQorI2RlZmluZSBUQVJHRVRfQllURV9P UkRFUl9ERUZBVUxUCUxJVFRMRV9FTkRJQU4NCiANCiAvKiBPZmZzZXQgZnJvbSBhZGRyZXNzIG9m IGZ1bmN0aW9uIHRvIHN0YXJ0IG9mIGl0cyBjb2RlLg0KICAgIFplcm8gb24gbW9zdCBtYWNoaW5l cy4gICovDQpJbmRleDogbnMzMmsvdG0tdW1heC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2 cy9zcmMvc3JjL2dkYi9jb25maWcvbnMzMmsvdG0tdW1heC5oLHYNCnJldHJpZXZpbmcgcmV2aXNp b24gMS4xLjEuNQ0KZGlmZiAtdSAtcCAtcjEuMS4xLjUgdG0tdW1heC5oDQotLS0gdG0tdW1heC5o CTE5OTkvMDcvMDcgMjA6MTY6MDgJMS4xLjEuNQ0KKysrIHRtLXVtYXguaAkyMDAwLzAzLzAyIDE0 OjUzOjI5DQpAQCAtMjAsNyArMjAsOCBAQA0KIA0KIC8qIFRoaXMgaXMgYWxzbyBpbmNsdWRlZCBi eSB0bS1uczMya20zLmgsIGFzIHdlbGwgYXMgYmVpbmcgdXNlZCBieSB1bWF4LiAgKi8NCiANCi0j ZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSIExJVFRMRV9FTkRJQU4NCisjZGVmaW5lIFRBUkdFVF9C WVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQorI2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9ERUZB VUxUCUxJVFRMRV9FTkRJQU4NCiANCiAvKiBOZWVkIHRvIGdldCBmdW5jdGlvbiBlbmRzIGJ5IGFk ZGluZyB0aGlzIHRvIGVwaWxvZ3VlIGFkZHJlc3MgZnJvbSAuYmYNCiAgICByZWNvcmQsIG5vdCB1 c2luZyB4X2ZzaXplIGZpZWxkLiAgKi8NCg== >>From scottb@netwinder.org Thu Mar 02 07:38:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/18: Remove deprecated defines (m68k). Date: Thu, 02 Mar 2000 07:38:00 -0000 Message-id: <20000302153305.28713.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00013.html Content-length: 1764 >Number: 18 >Category: gdb-patch >Synopsis: Remove deprecated defines (m68k). >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:38:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/m68k/tm-m68k.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="m68k.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="m68k.patch" SW5kZXg6IG02OGsvdG0tbTY4ay5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj L2dkYi9jb25maWcvbTY4ay90bS1tNjhrLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS41 DQpkaWZmIC11IC1wIC1yMS4xLjEuNSB0bS1tNjhrLmgNCi0tLSB0bS1tNjhrLmgJMTk5OS8wOC8z MSAwMTowNzoyOAkxLjEuMS41DQorKysgdG0tbTY4ay5oCTIwMDAvMDMvMDIgMTQ6NDk6MjINCkBA IC0yMyw3ICsyMyw4IEBADQogI2RlZmluZSBJRUVFX0ZMT0FUIDENCiANCiAvKiBEZWZpbmUgdGhl IGJpdCwgYnl0ZSwgYW5kIHdvcmQgb3JkZXJpbmcgb2YgdGhlIG1hY2hpbmUuICAqLw0KLSNkZWZp bmUgVEFSR0VUX0JZVEVfT1JERVIgQklHX0VORElBTg0KKyNkZWZpbmUgVEFSR0VUX0JZVEVfT1JE RVJfU0VMRUNUQUJMRV9QCTANCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSX0RFRkFVTFQJQklH X0VORElBTg0KIA0KIC8qIE9mZnNldCBmcm9tIGFkZHJlc3Mgb2YgZnVuY3Rpb24gdG8gc3RhcnQg b2YgaXRzIGNvZGUuDQogICAgWmVybyBvbiBtb3N0IG1hY2hpbmVzLiAgKi8NCg== >>From scottb@netwinder.org Thu Mar 02 07:38:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/21: Remove deprecated defines (mn10300). Date: Thu, 02 Mar 2000 07:38:00 -0000 Message-id: <20000302153554.28960.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00014.html Content-length: 1783 >Number: 21 >Category: gdb-patch >Synopsis: Remove deprecated defines (mn10300). >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:38:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/mn10300/tm-mn10300.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="mn10300.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mn10300.patch" SW5kZXg6IG1uMTAzMDAvdG0tbW4xMDMwMC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9z cmMvc3JjL2dkYi9jb25maWcvbW4xMDMwMC90bS1tbjEwMzAwLmgsdg0KcmV0cmlldmluZyByZXZp c2lvbiAxLjEuMS4xMQ0KZGlmZiAtdSAtcCAtcjEuMS4xLjExIHRtLW1uMTAzMDAuaA0KLS0tIHRt LW1uMTAzMDAuaAkyMDAwLzAyLzAyIDAwOjIxOjE0CTEuMS4xLjExDQorKysgdG0tbW4xMDMwMC5o CTIwMDAvMDMvMDIgMTQ6NTI6MzYNCkBAIC0yMSw3ICsyMSw4IEBADQogICAgQm9zdG9uLCBNQSAw MjExMS0xMzA3LCBVU0EuICAqLw0KIA0KIC8qIFRoZSBtbjEwMzAwIGlzIGxpdHRsZSBlbmRpYW4u ICAqLw0KLSNkZWZpbmUgVEFSR0VUX0JZVEVfT1JERVJfREVGQVVMVCBMSVRUTEVfRU5ESUFODQor I2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9TRUxFQ1RBQkxFX1AJMA0KKyNkZWZpbmUgVEFSR0VU X0JZVEVfT1JERVJfREVGQVVMVAlMSVRUTEVfRU5ESUFODQogDQogLyogQWxsIHJlZ2lzdGVycyBh cmUgMzJiaXRzIChwaGV3ISkuICAqLw0KICNkZWZpbmUgUkVHSVNURVJfU0laRSA0DQo= >>From scottb@netwinder.org Thu Mar 02 07:38:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/20: Remove deprecated defines (mn10200). Date: Thu, 02 Mar 2000 07:38:00 -0000 Message-id: <20000302153513.28890.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00019.html Content-length: 1771 >Number: 20 >Category: gdb-patch >Synopsis: Remove deprecated defines (mn10200). >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:38:01 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/mn10200/tm-mn10200.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="mn10200.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mn10200.patch" SW5kZXg6IG1uMTAyMDAvdG0tbW4xMDIwMC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9z cmMvc3JjL2dkYi9jb25maWcvbW4xMDIwMC90bS1tbjEwMjAwLmgsdg0KcmV0cmlldmluZyByZXZp c2lvbiAxLjEuMS44DQpkaWZmIC11IC1wIC1yMS4xLjEuOCB0bS1tbjEwMjAwLmgNCi0tLSB0bS1t bjEwMjAwLmgJMTk5OS8xMi8xNCAwMTowNTo0MgkxLjEuMS44DQorKysgdG0tbW4xMDIwMC5oCTIw MDAvMDMvMDIgMTQ6NTI6MDYNCkBAIC0yMSw3ICsyMSw4IEBADQogICAgQm9zdG9uLCBNQSAwMjEx MS0xMzA3LCBVU0EuICAqLw0KIA0KIC8qIFRoZSBtbjEwMjAwIGlzIGxpdHRsZSBlbmRpYW4uICAq Lw0KLSNkZWZpbmUgVEFSR0VUX0JZVEVfT1JERVIgTElUVExFX0VORElBTg0KKyNkZWZpbmUgVEFS R0VUX0JZVEVfT1JERVJfU0VMRUNUQUJMRV9QCTANCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVS X0RFRkFVTFQJTElUVExFX0VORElBTg0KIA0KIC8qIGludHMgYXJlIG9ubHkgMTZiaXRzIG9uIHRo ZSBtbjEwMjAwLiAgKi8NCiAjdW5kZWYgVEFSR0VUX0lOVF9CSVQNCg== >>From scottb@netwinder.org Thu Mar 02 07:38:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/15: Remove deprecated defines (i386). Date: Thu, 02 Mar 2000 07:38:00 -0000 Message-id: <20000302152830.27886.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00012.html Content-length: 1716 >Number: 15 >Category: gdb-patch >Synopsis: Remove deprecated defines (i386). >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:38:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/i386/tm-i386.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="i386.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="i386.patch" SW5kZXg6IGkzODYvdG0taTM4Ni5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj L2dkYi9jb25maWcvaTM4Ni90bS1pMzg2Lmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjINCmRp ZmYgLXUgLXAgLXIxLjIgdG0taTM4Ni5oDQotLS0gdG0taTM4Ni5oCTIwMDAvMDIvMjkgMTM6Mjg6 MjQJMS4yDQorKysgdG0taTM4Ni5oCTIwMDAvMDMvMDIgMTQ6NDc6MTANCkBAIC0yNiw3ICsyNiw4 IEBAIHN0cnVjdCBmcmFtZV9pbmZvOw0KIHN0cnVjdCBmcmFtZV9zYXZlZF9yZWdzOw0KIHN0cnVj dCB0eXBlOw0KIA0KLSNkZWZpbmUgVEFSR0VUX0JZVEVfT1JERVIgTElUVExFX0VORElBTg0KKyNk ZWZpbmUgVEFSR0VUX0JZVEVfT1JERVJfU0VMRUNUQUJMRV9QCTANCisjZGVmaW5lIFRBUkdFVF9C WVRFX09SREVSX0RFRkFVTFQJTElUVExFX0VORElBTg0KIA0KIC8qIFVzZWQgZm9yIGV4YW1wbGUg aW4gdmFscHJpbnQuYzpwcmludF9mbG9hdGluZygpIHRvIGVuYWJsZSBjaGVja2luZw0KICAgIGZv ciBOYU4ncyAqLw0K >>From scottb@netwinder.org Thu Mar 02 07:38:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/19: Remove deprecated defines (m88k). Date: Thu, 02 Mar 2000 07:38:00 -0000 Message-id: <20000302153356.28788.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00016.html Content-length: 1858 >Number: 19 >Category: gdb-patch >Synopsis: Remove deprecated defines (m88k). >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:38:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/m68k/tm-m88k.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="m88k.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="m88k.patch" SW5kZXg6IG04OGsvdG0tbTg4ay5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj L2dkYi9jb25maWcvbTg4ay90bS1tODhrLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS40 DQpkaWZmIC11IC1wIC1yMS4xLjEuNCB0bS1tODhrLmgNCi0tLSB0bS1tODhrLmgJMTk5OS8wNy8w NyAyMDoxNTowNwkxLjEuMS40DQorKysgdG0tbTg4ay5oCTIwMDAvMDMvMDIgMTQ6NDk6NDUNCkBA IC0yMiw3ICsyMiw4IEBADQogLyogZysrIHN1cHBvcnQgaXMgbm90IHlldCBpbmNsdWRlZC4gICov DQogDQogLyogRGVmaW5lIHRoZSBiaXQsIGJ5dGUsIGFuZCB3b3JkIG9yZGVyaW5nIG9mIHRoZSBt YWNoaW5lLiAgKi8NCi0jZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSIEJJR19FTkRJQU4NCisjZGVm aW5lIFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQorI2RlZmluZSBUQVJHRVRfQllU RV9PUkRFUl9ERUZBVUxUCUJJR19FTkRJQU4NCiANCiAvKiBXZSBjYWNoZSBpbmZvcm1hdGlvbiBh Ym91dCBzYXZlZCByZWdpc3RlcnMgaW4gdGhlIGZyYW1lIHN0cnVjdHVyZSwNCiAgICB0byBzYXZl IHVzIGZyb20gaGF2aW5nIHRvIHJlLXNjYW4gZnVuY3Rpb24gcHJvbG9ndWVzIGV2ZXJ5IHRpbWUN Cg== >>From scottb@netwinder.org Thu Mar 02 07:38:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/16: Remove deprecated defines (i960). Date: Thu, 02 Mar 2000 07:38:00 -0000 Message-id: <20000302152923.28053.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00015.html Content-length: 1833 >Number: 16 >Category: gdb-patch >Synopsis: Remove deprecated defines (i960). >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:38:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/i960/tm-i960.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="i960.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="i960.patch" SW5kZXg6IGk5NjAvdG0taTk2MC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj L2dkYi9jb25maWcvaTk2MC90bS1pOTYwLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS41 DQpkaWZmIC11IC1wIC1yMS4xLjEuNSB0bS1pOTYwLmgNCi0tLSB0bS1pOTYwLmgJMTk5OS8wOS8w OCAyMzo1OTo1NAkxLjEuMS41DQorKysgdG0taTk2MC5oCTIwMDAvMDMvMDIgMTQ6NDc6MzgNCkBA IC0zNiw3ICszNiw4IEBADQogI2RlZmluZQlEQlhfUEFSTV9TWU1CT0xfQ0xBU1ModHlwZSkgKCh0 eXBlID09IE5fTFNZTSk/IExPQ19MT0NBTF9BUkc6IExPQ19BUkcpDQogDQogLyogQnl0ZSBvcmRl ciBpcyBjb25maWd1cmFibGUsIGJ1dCB0aGlzIG1hY2hpbmUgcnVucyBsaXR0bGUtZW5kaWFuLiAg Ki8NCi0jZGVmaW5lCVRBUkdFVF9CWVRFX09SREVSCUxJVFRMRV9FTkRJQU4NCisjZGVmaW5lIFRB UkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQorI2RlZmluZSBUQVJHRVRfQllURV9PUkRF Ul9ERUZBVUxUCUxJVFRMRV9FTkRJQU4NCiANCiAvKiBXZSBoYXZlIElFRUUgZmxvYXRpbmcgcG9p bnQsIGlmIHdlIGhhdmUgYW55IGZsb2F0IGF0IGFsbC4gICovDQogDQo= >>From scottb@netwinder.org Thu Mar 02 07:38:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/17: Remove deprecated defines (m32r). Date: Thu, 02 Mar 2000 07:38:00 -0000 Message-id: <20000302153031.28144.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00018.html Content-length: 1683 >Number: 17 >Category: gdb-patch >Synopsis: Remove deprecated defines (m32r). >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:38:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/m32r/tm-m32r.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="m32r.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="m32r.patch" SW5kZXg6IG0zMnIvdG0tbTMyci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj L2dkYi9jb25maWcvbTMyci90bS1tMzJyLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjINCmRp ZmYgLXUgLXAgLXIxLjIgdG0tbTMyci5oDQotLS0gdG0tbTMyci5oCTIwMDAvMDIvMjIgMTk6MTc6 NTUJMS4yDQorKysgdG0tbTMyci5oCTIwMDAvMDMvMDIgMTQ6NDg6NTQNCkBAIC0yMiw3ICsyMiw4 IEBADQogI2RlZmluZSBUQVJHRVRfTTMyUiAxDQogDQogLyogbXZzX2NoZWNrIFRBUkdFVF9CWVRF X09SREVSIEJJR19FTkRJQU4gKi8NCi0jZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSIEJJR19FTkRJ QU4NCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQorI2RlZmluZSBU QVJHRVRfQllURV9PUkRFUl9ERUZBVUxUCUJJR19FTkRJQU4NCiANCiAvKiBtdnNfY2hlY2sgUkVH SVNURVJfTkFNRVMgKi8NCiAjZGVmaW5lIFJFR0lTVEVSX05BTUVTIFwNCg== >>From scottb@netwinder.org Thu Mar 02 07:48:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/23: Remove deprecated defines (pa). Date: Thu, 02 Mar 2000 07:48:00 -0000 Message-id: <20000302153837.29716.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00020.html Content-length: 1733 >Number: 23 >Category: gdb-patch >Synopsis: Remove deprecated defines (pa). >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:48:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/pa/tm-hppa.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="pa.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pa.patch" SW5kZXg6IHBhL3RtLWhwcGEuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n ZGIvY29uZmlnL3BhL3RtLWhwcGEuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMg0KZGlmZiAt dSAtcCAtcjEuMiB0bS1ocHBhLmgNCi0tLSB0bS1ocHBhLmgJMjAwMC8wMi8yMiAxOToxODoxOQkx LjINCisrKyB0bS1ocHBhLmgJMjAwMC8wMy8wMiAxNDo1NDowMA0KQEAgLTMwLDggKzMwLDggQEAg c3RydWN0IHR5cGU7DQogc3RydWN0IGluZmVyaW9yX3N0YXR1czsNCiANCiAvKiBUYXJnZXQgc3lz dGVtIGJ5dGUgb3JkZXIuICovDQotDQotI2RlZmluZQlUQVJHRVRfQllURV9PUkRFUglCSUdfRU5E SUFODQorI2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9TRUxFQ1RBQkxFX1AJMA0KKyNkZWZpbmUg VEFSR0VUX0JZVEVfT1JERVJfREVGQVVMVAlCSUdfRU5ESUFODQogDQogLyogQnkgZGVmYXVsdCBh c3N1bWUgd2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCBzb2Z0d2FyZSBmbG9hdGluZyBwb2lu dC4gICovDQogI2lmbmRlZiBTT0ZUX0ZMT0FUDQo= >>From scottb@netwinder.org Thu Mar 02 07:48:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/24: Define TARGET_BYTE_ORDER_SELECTABLE_P (rs6000) Date: Thu, 02 Mar 2000 07:48:00 -0000 Message-id: <20000302154146.30039.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00021.html Content-length: 1617 >Number: 24 >Category: gdb-patch >Synopsis: Define TARGET_BYTE_ORDER_SELECTABLE_P (rs6000) >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:48:02 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/rs6000/tm-rs6000.h: Define TARGET_BYTE_ORDER_SELECTABLE_P 0. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="rs6000.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="rs6000.patch" SW5kZXg6IHJzNjAwMC90bS1yczYwMDAuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3Jj L3NyYy9nZGIvY29uZmlnL3JzNjAwMC90bS1yczYwMDAuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9u IDEuMw0KZGlmZiAtdSAtcCAtcjEuMyB0bS1yczYwMDAuaA0KLS0tIHRtLXJzNjAwMC5oCTIwMDAv MDIvMjIgMTk6MTg6MjgJMS4zDQorKysgdG0tcnM2MDAwLmgJMjAwMC8wMy8wMiAxNDo1NDo0Nw0K QEAgLTg0LDcgKzg0LDcgQEAgc3RydWN0IHJzNjAwMF9mcmFtZWRhdGENCiAgIH07DQogDQogLyog RGVmaW5lIHRoZSBieXRlIG9yZGVyIG9mIHRoZSBtYWNoaW5lLiAgKi8NCi0NCisjZGVmaW5lIFRB UkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQogI2RlZmluZSBUQVJHRVRfQllURV9PUkRF Ul9ERUZBVUxUCUJJR19FTkRJQU4NCiANCiAvKiBBSVgncyBhc3NlbWJsZXIgZG9lc24ndCBncm9r IGRvbGxhciBzaWducyBpbiBpZGVudGlmaWVycy4NCg== >>From scottb@netwinder.org Thu Mar 02 07:58:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/28: Define TARGET_BYTE_ORDER_SELECTABLE_P (w65) Date: Thu, 02 Mar 2000 07:58:00 -0000 Message-id: <20000302155728.837.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00025.html Content-length: 1735 >Number: 28 >Category: gdb-patch >Synopsis: Define TARGET_BYTE_ORDER_SELECTABLE_P (w65) >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:58:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/w65/tm-w65.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="w65.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="w65.patch" SW5kZXg6IHc2NS90bS13NjUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n ZGIvY29uZmlnL3c2NS90bS13NjUuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjQNCmRp ZmYgLXUgLXAgLXIxLjEuMS40IHRtLXc2NS5oDQotLS0gdG0tdzY1LmgJMTk5OS8wNy8wNyAyMDox NzozNgkxLjEuMS40DQorKysgdG0tdzY1LmgJMjAwMC8wMy8wMiAxNDo1Nzo1OQ0KQEAgLTI1LDgg KzI1LDggQEANCiAjZGVmaW5lIElFRUVfRkxPQVQgMQ0KIA0KIC8qIERlZmluZSB0aGUgYml0LCBi eXRlLCBhbmQgd29yZCBvcmRlcmluZyBvZiB0aGUgbWFjaGluZS4gICovDQotDQotI2RlZmluZSBU QVJHRVRfQllURV9PUkRFUiBMSVRUTEVfRU5ESUFODQorI2RlZmluZSBUQVJHRVRfQllURV9PUkRF Ul9TRUxFQ1RBQkxFX1AJMA0KKyNkZWZpbmUgVEFSR0VUX0JZVEVfT1JERVJfREVGQVVMVAlMSVRU TEVfRU5ESUFODQogDQogDQogLyogT2Zmc2V0IGZyb20gYWRkcmVzcyBvZiBmdW5jdGlvbiB0byBz dGFydCBvZiBpdHMgY29kZS4NCg== >>From scottb@netwinder.org Thu Mar 02 07:58:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/26: Define TARGET_BYTE_ORDER_SELECTABLE_P (v850) Date: Thu, 02 Mar 2000 07:58:00 -0000 Message-id: <20000302155536.656.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00024.html Content-length: 1695 >Number: 26 >Category: gdb-patch >Synopsis: Define TARGET_BYTE_ORDER_SELECTABLE_P (v850) >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:58:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/v850/tm-v850.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="v850.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v850.patch" SW5kZXg6IHY4NTAvdG0tdjg1MC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj L2dkYi9jb25maWcvdjg1MC90bS12ODUwLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS43 DQpkaWZmIC11IC1wIC1yMS4xLjEuNyB0bS12ODUwLmgNCi0tLSB0bS12ODUwLmgJMTk5OS8xMi8x NCAwMTowNTo0MgkxLjEuMS43DQorKysgdG0tdjg1MC5oCTIwMDAvMDMvMDIgMTQ6NTc6MDINCkBA IC0xOSw3ICsxOSw4IEBADQogICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g U3VpdGUgMzMwLA0KICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8NCiANCi0jZGVm aW5lIFRBUkdFVF9CWVRFX09SREVSIExJVFRMRV9FTkRJQU4NCisjZGVmaW5lIFRBUkdFVF9CWVRF X09SREVSX1NFTEVDVEFCTEVfUAkwDQorI2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9ERUZBVUxU CUxJVFRMRV9FTkRJQU4NCiANCiAjZGVmaW5lIE5VTV9SRUdTIDY2DQogDQo= >>From scottb@netwinder.org Thu Mar 02 07:58:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/25: Define TARGET_BYTE_ORDER_SELECTABLE_P (tic80) Date: Thu, 02 Mar 2000 07:58:00 -0000 Message-id: <20000302155433.572.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00022.html Content-length: 1668 >Number: 25 >Category: gdb-patch >Synopsis: Define TARGET_BYTE_ORDER_SELECTABLE_P (tic80) >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:58:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/tic80/tm-tic80.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="tic80.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="tic80.patch" SW5kZXg6IHRpYzgwL3RtLXRpYzgwLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3NyYy9z cmMvZ2RiL2NvbmZpZy90aWM4MC90bS10aWM4MC5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4x LjEuNg0KZGlmZiAtdSAtcCAtcjEuMS4xLjYgdG0tdGljODAuaA0KLS0tIHRtLXRpYzgwLmgJMTk5 OS8wOC8zMSAwMTowODowNgkxLjEuMS42DQorKysgdG0tdGljODAuaAkyMDAwLzAzLzAyIDE0OjU2 OjM1DQpAQCAtMjksNyArMjksOCBAQCBzdHJ1Y3QgdmFsdWU7DQogc3RydWN0IHN5bWJvbDsNCiBz dHJ1Y3QgZnJhbWVfc2F2ZWRfcmVnczsNCiANCi0jZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSIExJ VFRMRV9FTkRJQU4NCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQor I2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9ERUZBVUxUCUxJVFRMRV9FTkRJQU4NCiANCiAjZGVm aW5lIE5VTV9SRUdTIDM4DQogDQo= >>From scottb@netwinder.org Thu Mar 02 07:58:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/27: Define TARGET_BYTE_ORDER_SELECTABLE_P (vax) Date: Thu, 02 Mar 2000 07:58:00 -0000 Message-id: <20000302155632.717.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00023.html Content-length: 1775 >Number: 27 >Category: gdb-patch >Synopsis: Define TARGET_BYTE_ORDER_SELECTABLE_P (vax) >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 07:58:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/vax/tm-vax.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="vax.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="vax.patch" SW5kZXg6IHZheC90bS12YXguaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n ZGIvY29uZmlnL3ZheC90bS12YXguaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjQNCmRp ZmYgLXUgLXAgLXIxLjEuMS40IHRtLXZheC5oDQotLS0gdG0tdmF4LmgJMTk5OS8wNy8wNyAyMDox NzozMQkxLjEuMS40DQorKysgdG0tdmF4LmgJMjAwMC8wMy8wMiAxNDo1NzoyNg0KQEAgLTE4LDgg KzE4LDggQEANCiAgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz MzAsDQogICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLw0KIA0KLQ0KLSNkZWZpbmUg VEFSR0VUX0JZVEVfT1JERVIgTElUVExFX0VORElBTg0KKyNkZWZpbmUgVEFSR0VUX0JZVEVfT1JE RVJfU0VMRUNUQUJMRV9QCTANCisjZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSX0RFRkFVTFQJTElU VExFX0VORElBTg0KIA0KIC8qIE9mZnNldCBmcm9tIGFkZHJlc3Mgb2YgZnVuY3Rpb24gdG8gc3Rh cnQgb2YgaXRzIGNvZGUuDQogICAgWmVybyBvbiBtb3N0IG1hY2hpbmVzLiAgKi8NCg== >>From scottb@netwinder.org Thu Mar 02 08:08:00 2000 From: scottb@netwinder.org To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/29: Define TARGET_BYTE_ORDER_SELECTABLE_P (z8k) Date: Thu, 02 Mar 2000 08:08:00 -0000 Message-id: <20000302155816.1147.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00026.html Content-length: 1783 >Number: 29 >Category: gdb-patch >Synopsis: Define TARGET_BYTE_ORDER_SELECTABLE_P (z8k) >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Thu Mar 02 08:08:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Scott Bambrough >Release: current CVS version >Organization: >Environment: >Description: 2000-03-02 Scott Bambrough * config/z8k/tm-z8k.h: Replace deprecated macro TARGET_BYTE_ORDER with TARGET_BYTE_ORDER_SELECTABLE_P and TARGET_BYTE_ORDER_DEFAULT. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-patch_auto_file; name="z8k.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="z8k.patch" SW5kZXg6IHo4ay90bS16OGsuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n ZGIvY29uZmlnL3o4ay90bS16OGsuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjYNCmRp ZmYgLXUgLXAgLXIxLjEuMS42IHRtLXo4ay5oDQotLS0gdG0tejhrLmgJMTk5OS8wOS8wOSAwMDow MDowNwkxLjEuMS42DQorKysgdG0tejhrLmgJMjAwMC8wMy8wMiAxNDo1ODoxOA0KQEAgLTMxLDcg KzMxLDggQEANCiAjZGVmaW5lIFRBUkdFVF9QVFJfQklUIChCSUcgPyAzMjogMTYpDQogDQogLyog RGVmaW5lIHRoZSBiaXQsIGJ5dGUsIGFuZCB3b3JkIG9yZGVyaW5nIG9mIHRoZSBtYWNoaW5lLiAg Ki8NCi0jZGVmaW5lIFRBUkdFVF9CWVRFX09SREVSIEJJR19FTkRJQU4NCisjZGVmaW5lIFRBUkdF VF9CWVRFX09SREVSX1NFTEVDVEFCTEVfUAkwDQorI2RlZmluZSBUQVJHRVRfQllURV9PUkRFUl9E RUZBVUxUCUJJR19FTkRJQU4NCiANCiAvKiBPZmZzZXQgZnJvbSBhZGRyZXNzIG9mIGZ1bmN0aW9u IHRvIHN0YXJ0IG9mIGl0cyBjb2RlLg0KICAgIFplcm8gb24gbW9zdCBtYWNoaW5lcy4gICovDQo= >>From muller@ics.u-strasbg.fr Fri Mar 03 05:38:00 2000 From: muller@ics.u-strasbg.fr To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/30: First part of pascal extension patch Date: Fri, 03 Mar 2000 05:38:00 -0000 Message-id: <20000303133347.5109.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00027.html Content-length: 171834 >Number: 30 >Category: gdb-patch >Synopsis: First part of pascal extension patch >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Fri Mar 03 05:38:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Pierre Muller >Release: unknown-1.0 >Organization: >Environment: This is cross platform >Description: This only contains 5 new files p-exp.y p-lang.h p-lang.c p-typeprint.c p-valprint.c that are necessary for addition of pascal language support. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="pascal-patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pascal-patch" DQogSSB0cmllZCBoYXJkIHRvIGluc2VydCBhbGwgY2hhbmdlcyBvZiB0aGUgY29ycmVzcG9uZGlu ZyBjLSoNCmZpbGVzIGludG8gdGhlIHAtKiBlcXVpdmFsZW50Lg0KIHAtZXhwLnkgc3RpbGwgY29u dGFpbnMgMjEgU2hpZnQvUmVkdWNlIGNvbmZsaWN0cyB3aGljaCBhcmUgbW9zdGx5IGR1ZQ0KdG8g dGhlIGZhY3QgdGhhdCB0eXBlY2FzdGluZyBhbmQgZnVuY3Rpb24gY2FsbGluZw0KdXNlIHRoZSBz YW1lIHN5bnRheCBpbiBwYXNjYWwuDQoNCg0KMjAwMC0wMy0wMyAgUGllcnJlIE11bGxlciAgIDxt dWxsZXJAaWNzLnUtc3RyYXNiZy5mcj4NCiAgICsgcC1leHAueSwgcC1sYW5nLmgscC1sYW5nLmMs IHAtdHlwZXByaW50LmMsIHAtdmFscHJpbnQuYw0KICAgcGFzY2FsIGxhbmd1YWdlIHNwZWNpZmlj IGZpbGVzLg0KICAgVGhpcyBwYXRjaCBkb2VzIG5vdGhpbmcgYnkgaXRzZWxmIGl0IHdpbGwgYmUg Y29tcGxldGVkIGJ5DQogICBvdGhlciBwYXRjaGVzIHRoYXQgYWRkIHRoZSBzdXBwb3J0IGZvciBw YXNjYWwgbGFuZ3VhZ2UNCiAgIHRvIHRoZSBleGlzdGluZyBHREIgc291cmNlcy4NCiAgIA0KKioq IHAtZXhwLnkub3JpCUZyaSBNYXIgIDMgMTQ6MjM6MzAgMjAwMA0KLS0tIHAtZXhwLnkJVHVlIE9j dCAgNSAwODoxNTozMCAxOTk5DQoqKioqKioqKioqKioqKioNCioqKiAwICoqKioNCi0tLSAxLDE0 NzcgLS0tLQ0KKyAvKg0KKyAgIE1vZGlmaWNhdGlvbnMgZm9yIEZQQyBzdXBwb3J0DQorICAgJElk OiBwLWV4cC55LHYgMS4yIDE5OTkvMTAvMDUgMDY6MTU6MzEgcGllcnJlIEV4cCAkDQorICovDQor IC8qIFlBQ0MgcGFyc2VyIGZvciBDIGV4cHJlc3Npb25zLCBmb3IgR0RCLg0KKyAgICBDb3B5cmln aHQgKEMpIDE5ODYsIDE5ODksIDE5OTAsIDE5OTEsIDE5OTMsIDE5OTQsIDE5OTYsIDE5OTcNCisg ICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIA0KKyBUaGlzIGZpbGUgaXMgcGFy dCBvZiBHREIuDQorIA0KKyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0K KyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKyANCisgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mDQorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUNCisgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4NCisgDQorIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlDQorIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQorIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ bGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLw0KKyANCisg LyogUGFyc2UgYSBDIGV4cHJlc3Npb24gZnJvbSB0ZXh0IGluIGEgc3RyaW5nLA0KKyAgICBhbmQg cmV0dXJuIHRoZSByZXN1bHQgYXMgYSAgc3RydWN0IGV4cHJlc3Npb24gIHBvaW50ZXIuDQorICAg IFRoYXQgc3RydWN0dXJlIGNvbnRhaW5zIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBpbiByZXZlcnNl IHBvbGlzaCwNCisgICAgd2l0aCBjb25zdGFudHMgcmVwcmVzZW50ZWQgYnkgb3BlcmF0aW9ucyB0 aGF0IGFyZSBmb2xsb3dlZCBieSBzcGVjaWFsIGRhdGEuDQorICAgIFNlZSBleHByZXNzaW9uLmgg Zm9yIHRoZSBkZXRhaWxzIG9mIHRoZSBmb3JtYXQuDQorICAgIFdoYXQgaXMgaW1wb3J0YW50IGhl cmUgaXMgdGhhdCBpdCBjYW4gYmUgYnVpbHQgdXAgc2VxdWVudGlhbGx5DQorICAgIGR1cmluZyB0 aGUgcHJvY2VzcyBvZiBwYXJzaW5nOyB0aGUgbG93ZXIgbGV2ZWxzIG9mIHRoZSB0cmVlIGFsd2F5 cw0KKyAgICBjb21lIGZpcnN0IGluIHRoZSByZXN1bHQuDQorIA0KKyAgICBOb3RlIHRoYXQgbWFs bG9jJ3MgYW5kIHJlYWxsb2MncyBpbiB0aGlzIGZpbGUgYXJlIHRyYW5zZm9ybWVkIHRvDQorICAg IHhtYWxsb2MgYW5kIHhyZWFsbG9jIHJlc3BlY3RpdmVseSBieSB0aGUgc2FtZSBzZWQgY29tbWFu ZCBpbiB0aGUNCisgICAgbWFrZWZpbGUgdGhhdCByZW1hcHMgYW55IG90aGVyIG1hbGxvYy9yZWFs bG9jIGluc2VydGVkIGJ5IHRoZSBwYXJzZXINCisgICAgZ2VuZXJhdG9yLiAgRG9pbmcgdGhpcyB3 aXRoICNkZWZpbmVzIGFuZCB0cnlpbmcgdG8gY29udHJvbCB0aGUgaW50ZXJhY3Rpb24NCisgICAg d2l0aCBpbmNsdWRlIGZpbGVzICg8bWFsbG9jLmg+IGFuZCA8c3RkbGliLmg+IGZvciBleGFtcGxl KSBqdXN0IGJlY2FtZQ0KKyAgICB0b28gbWVzc3ksIHBhcnRpY3VsYXJseSB3aGVuIHN1Y2ggaW5j bHVkZXMgY2FuIGJlIGluc2VydGVkIGF0IHJhbmRvbQ0KKyAgICB0aW1lcyBieSB0aGUgcGFyc2Vy IGdlbmVyYXRvci4gICovDQorIA0KKyAlew0KKyANCisgI2luY2x1ZGUgImRlZnMuaCINCisgI2lu Y2x1ZGUgImdkYl9zdHJpbmcuaCINCisgI2luY2x1ZGUgPGN0eXBlLmg+DQorICNpbmNsdWRlICJl eHByZXNzaW9uLmgiDQorICNpbmNsdWRlICJ2YWx1ZS5oIg0KKyAjaW5jbHVkZSAicGFyc2VyLWRl ZnMuaCINCisgI2luY2x1ZGUgImxhbmd1YWdlLmgiDQorICNpbmNsdWRlICJwLWxhbmcuaCINCisg I2luY2x1ZGUgImJmZC5oIiAvKiBSZXF1aXJlZCBieSBvYmpmaWxlcy5oLiAgKi8NCisgI2luY2x1 ZGUgInN5bWZpbGUuaCIgLyogUmVxdWlyZWQgYnkgb2JqZmlsZXMuaC4gICovDQorICNpbmNsdWRl ICJvYmpmaWxlcy5oIiAvKiBGb3IgaGF2ZV9mdWxsX3N5bWJvbHMgYW5kIGhhdmVfcGFydGlhbF9z eW1ib2xzICovDQorIA0KKyAvKiB3b3JrYXJvdW5kIGZvciB2NC4xNiBESkdQUCAoUE0pICovDQor ICNpZm5kZWYgVUxPTkdFU1QNCisgI2lmZGVmIENDX0hBU19MT05HX0xPTkcNCisgI2RlZmluZSBV TE9OR0VTVCB1bnNpZ25lZCBsb25nIGxvbmcNCisgI2Vsc2UNCisgI2RlZmluZSBVTE9OR0VTVCB1 bnNpZ25lZCBsb25nDQorICNlbmRpZg0KKyAjZW5kaWYNCisgDQorIC8qIFJlbWFwIG5vcm1hbCB5 YWNjIHBhcnNlciBpbnRlcmZhY2UgbmFtZXMgKHl5cGFyc2UsIHl5bGV4LCB5eWVycm9yLCBldGMp LA0KKyAgICBhcyB3ZWxsIGFzIGdyYXR1aXRpb3VzbHkgZ2xvYmFsIHN5bWJvbCBuYW1lcywgc28g d2UgY2FuIGhhdmUgbXVsdGlwbGUNCisgICAgeWFjYyBnZW5lcmF0ZWQgcGFyc2VycyBpbiBnZGIu ICBOb3RlIHRoYXQgdGhlc2UgYXJlIG9ubHkgdGhlIHZhcmlhYmxlcw0KKyAgICBwcm9kdWNlZCBi eSB5YWNjLiAgSWYgb3RoZXIgcGFyc2VyIGdlbmVyYXRvcnMgKGJpc29uLCBieWFjYywgZXRjKSBw cm9kdWNlDQorICAgIGFkZGl0aW9uYWwgZ2xvYmFsIG5hbWVzIHRoYXQgY29uZmxpY3QgYXQgbGlu ayB0aW1lLCB0aGVuIHRob3NlIHBhcnNlcg0KKyAgICBnZW5lcmF0b3JzIG5lZWQgdG8gYmUgZml4 ZWQgaW5zdGVhZCBvZiBhZGRpbmcgdGhvc2UgbmFtZXMgdG8gdGhpcyBsaXN0LiAqLw0KKyANCisg I2RlZmluZQl5eW1heGRlcHRoIHBhc19tYXhkZXB0aA0KKyAjZGVmaW5lCXl5cGFyc2UJcGFzX3Bh cnNlDQorICNkZWZpbmUJeXlsZXgJcGFzX2xleA0KKyAjZGVmaW5lCXl5ZXJyb3IJcGFzX2Vycm9y DQorICNkZWZpbmUJeXlsdmFsCXBhc19sdmFsDQorICNkZWZpbmUJeXljaGFyCXBhc19jaGFyDQor ICNkZWZpbmUJeXlkZWJ1ZwlwYXNfZGVidWcNCisgI2RlZmluZQl5eXBhY3QJcGFzX3BhY3QJDQor ICNkZWZpbmUJeXlyMQlwYXNfcjEJCQkNCisgI2RlZmluZQl5eXIyCXBhc19yMgkJCQ0KKyAjZGVm aW5lCXl5ZGVmCXBhc19kZWYJCQ0KKyAjZGVmaW5lCXl5Y2hrCXBhc19jaGsJCQ0KKyAjZGVmaW5l CXl5cGdvCXBhc19wZ28JCQ0KKyAjZGVmaW5lCXl5YWN0CXBhc19hY3QNCisgI2RlZmluZQl5eWV4 Y2EJcGFzX2V4Y2ENCisgI2RlZmluZSB5eWVycmZsYWcgcGFzX2VycmZsYWcNCisgI2RlZmluZSB5 eW5lcnJzCXBhc19uZXJycw0KKyAjZGVmaW5lCXl5cHMJcGFzX3BzDQorICNkZWZpbmUJeXlwdglw YXNfcHYNCisgI2RlZmluZQl5eXMJcGFzX3MNCisgI2RlZmluZQl5eV95eXMJcGFzX3l5cw0KKyAj ZGVmaW5lCXl5c3RhdGUJcGFzX3N0YXRlDQorICNkZWZpbmUJeXl0bXAJcGFzX3RtcA0KKyAjZGVm aW5lCXl5dglwYXNfdg0KKyAjZGVmaW5lCXl5X3l5dglwYXNfeXl2DQorICNkZWZpbmUJeXl2YWwJ cGFzX3ZhbA0KKyAjZGVmaW5lCXl5bGxvYwlwYXNfbGxvYw0KKyAjZGVmaW5lIHl5cmVkcwlwYXNf cmVkcwkJLyogV2l0aCBZWURFQlVHIGRlZmluZWQgKi8NCisgI2RlZmluZSB5eXRva3MJcGFzX3Rv a3MJCS8qIFdpdGggWVlERUJVRyBkZWZpbmVkICovDQorICNkZWZpbmUgeXlsaHMJcGFzX3l5bGhz DQorICNkZWZpbmUgeXlsZW4JcGFzX3l5bGVuDQorICNkZWZpbmUgeXlkZWZyZWQgcGFzX3l5ZGVm cmVkDQorICNkZWZpbmUgeXlkZ290bwlwYXNfeXlkZ290bw0KKyAjZGVmaW5lIHl5c2luZGV4IHBh c195eXNpbmRleA0KKyAjZGVmaW5lIHl5cmluZGV4IHBhc195eXJpbmRleA0KKyAjZGVmaW5lIHl5 Z2luZGV4IHBhc195eWdpbmRleA0KKyAjZGVmaW5lIHl5dGFibGUJIHBhc195eXRhYmxlDQorICNk ZWZpbmUgeXljaGVjawkgcGFzX3l5Y2hlY2sNCisgDQorICNpZm5kZWYgWVlERUJVRw0KKyAjZGVm aW5lCVlZREVCVUcJMAkJLyogRGVmYXVsdCB0byBubyB5eWRlYnVnIHN1cHBvcnQgKi8NCisgI2Vu ZGlmDQorIA0KKyBpbnQNCisgeXlwYXJzZSBQQVJBTVMgKCh2b2lkKSk7DQorIA0KKyBzdGF0aWMg aW50DQorIHl5bGV4IFBBUkFNUyAoKHZvaWQpKTsNCisgDQorIHZvaWQNCisgeXllcnJvciBQQVJB TVMgKChjaGFyICopKTsNCisgDQorIHN0YXRpYyBjaGFyICoNCisgdXB0b2sgUEFSQU1TICgoY2hh ciAqLCBpbnQpKTsNCisgJX0NCisgDQorIC8qIEFsdGhvdWdoIHRoZSB5YWNjICJ2YWx1ZSIgb2Yg YW4gZXhwcmVzc2lvbiBpcyBub3QgdXNlZCwNCisgICAgc2luY2UgdGhlIHJlc3VsdCBpcyBzdG9y ZWQgaW4gdGhlIHN0cnVjdHVyZSBiZWluZyBjcmVhdGVkLA0KKyAgICBvdGhlciBub2RlIHR5cGVz IGRvIGhhdmUgdmFsdWVzLiAgKi8NCisgDQorICV1bmlvbg0KKyAgIHsNCisgICAgIExPTkdFU1Qg bHZhbDsNCisgICAgIHN0cnVjdCB7DQorICAgICAgIExPTkdFU1QgdmFsOw0KKyAgICAgICBzdHJ1 Y3QgdHlwZSAqdHlwZTsNCisgICAgIH0gdHlwZWRfdmFsX2ludDsNCisgICAgIHN0cnVjdCB7DQor ICAgICAgIERPVUJMRVNUIGR2YWw7DQorICAgICAgIHN0cnVjdCB0eXBlICp0eXBlOw0KKyAgICAg fSB0eXBlZF92YWxfZmxvYXQ7DQorICAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07DQorICAgICBzdHJ1 Y3QgdHlwZSAqdHZhbDsNCisgICAgIHN0cnVjdCBzdG9rZW4gc3ZhbDsNCisgICAgIHN0cnVjdCB0 dHlwZSB0c3ltOw0KKyAgICAgc3RydWN0IHN5bXRva2VuIHNzeW07DQorICAgICBpbnQgdm9pZHZh bDsNCisgICAgIHN0cnVjdCBibG9jayAqYnZhbDsNCisgICAgIGVudW0gZXhwX29wY29kZSBvcGNv ZGU7DQorICAgICBzdHJ1Y3QgaW50ZXJuYWx2YXIgKml2YXI7DQorIA0KKyAgICAgc3RydWN0IHR5 cGUgKip0dmVjOw0KKyAgICAgaW50ICppdmVjOw0KKyAgIH0NCisgDQorICV7DQorIC8qIFlZU1RZ UEUgZ2V0cyBkZWZpbmVkIGJ5ICV1bmlvbiAqLw0KKyBzdGF0aWMgaW50DQorIHBhcnNlX251bWJl ciBQQVJBTVMgKChjaGFyICosIGludCwgaW50LCBZWVNUWVBFICopKTsNCisgJX0NCisgDQorICV0 eXBlIDx2b2lkdmFsPiBleHAgZXhwMSB0eXBlX2V4cCBzdGFydCB2YXJpYWJsZSBxdWFsaWZpZWRf bmFtZQ0KKyAldHlwZSA8dHZhbD4gdHlwZSB0eXBlYmFzZQ0KKyAvKiAldHlwZSA8YnZhbD4gYmxv Y2sgKi8NCisgDQorIC8qIEZhbmN5IHR5cGUgcGFyc2luZy4gICovDQorICV0eXBlIDx0dmFsPiBw dHlwZQ0KKyANCisgJXRva2VuIDx0eXBlZF92YWxfaW50PiBJTlQNCisgJXRva2VuIDx0eXBlZF92 YWxfZmxvYXQ+IEZMT0FUDQorIA0KKyAvKiBCb3RoIE5BTUUgYW5kIFRZUEVOQU1FIHRva2VucyBy ZXByZXNlbnQgc3ltYm9scyBpbiB0aGUgaW5wdXQsDQorICAgIGFuZCBib3RoIGNvbnZleSB0aGVp ciBkYXRhIGFzIHN0cmluZ3MuDQorICAgIEJ1dCBhIFRZUEVOQU1FIGlzIGEgc3RyaW5nIHRoYXQg aGFwcGVucyB0byBiZSBkZWZpbmVkIGFzIGEgdHlwZWRlZg0KKyAgICBvciBidWlsdGluIHR5cGUg bmFtZSAoc3VjaCBhcyBpbnQgb3IgY2hhcikNCisgICAgYW5kIGEgTkFNRSBpcyBhbnkgb3RoZXIg c3ltYm9sLg0KKyAgICBDb250ZXh0cyB3aGVyZSB0aGlzIGRpc3RpbmN0aW9uIGlzIG5vdCBpbXBv cnRhbnQgY2FuIHVzZSB0aGUNCisgICAgbm9udGVybWluYWwgIm5hbWUiLCB3aGljaCBtYXRjaGVz IGVpdGhlciBOQU1FIG9yIFRZUEVOQU1FLiAgKi8NCisgDQorICV0b2tlbiA8c3ZhbD4gU1RSSU5H DQorICV0b2tlbiA8c3N5bT4gTkFNRSAvKiBCTE9DS05BTUUgZGVmaW5lZCBiZWxvdyB0byBnaXZl IGl0IGhpZ2hlciBwcmVjZWRlbmNlLiAqLw0KKyAldG9rZW4gPHRzeW0+IFRZUEVOQU1FDQorICV0 eXBlIDxzdmFsPiBuYW1lDQorICV0eXBlIDxzc3ltPiBuYW1lX25vdF90eXBlbmFtZQ0KKyANCisg LyogQSBOQU1FX09SX0lOVCBpcyBhIHN5bWJvbCB3aGljaCBpcyBub3Qga25vd24gaW4gdGhlIHN5 bWJvbCB0YWJsZSwNCisgICAgYnV0IHdoaWNoIHdvdWxkIHBhcnNlIGFzIGEgdmFsaWQgbnVtYmVy IGluIHRoZSBjdXJyZW50IGlucHV0IHJhZGl4Lg0KKyAgICBFLmcuICJjIiB3aGVuIGlucHV0X3Jh ZGl4PT0xNi4gIERlcGVuZGluZyBvbiB0aGUgcGFyc2UsIGl0IHdpbGwgYmUNCisgICAgdHVybmVk IGludG8gYSBuYW1lIG9yIGludG8gYSBudW1iZXIuICAqLw0KKyANCisgJXRva2VuIDxzc3ltPiBO QU1FX09SX0lOVA0KKyANCisgJXRva2VuIFNUUlVDVCBDTEFTUyBTSVpFT0YgQ09MT05DT0xPTg0K KyAldG9rZW4gRVJST1INCisgDQorIC8qIFNwZWNpYWwgdHlwZSBjYXNlcywgcHV0IGluIHRvIGFs bG93IHRoZSBwYXJzZXIgdG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50DQorICAgIGxlZ2FsIGJhc2V0 eXBlcy4gICovDQorIA0KKyAldG9rZW4gPHZvaWR2YWw+IFZBUklBQkxFDQorIA0KKyANCisgLyog QysrICovDQorICV0b2tlbiBUSElTDQorICV0b2tlbiA8bHZhbD4gVFJVRSBGQUxTRQ0KKyANCisg JWxlZnQgJywnDQorICVsZWZ0IEFCT1ZFX0NPTU1BDQorICVyaWdodCBBU1NJR04NCisgJWxlZnQg Tk9UDQorICVsZWZ0IE9SDQorICVsZWZ0IFhPUg0KKyAlbGVmdCBBTkRBTkQNCisgJWxlZnQgJz0n IE5PVEVRVUFMDQorICVsZWZ0ICc8JyAnPicgTEVRIEdFUQ0KKyAlbGVmdCBMU0ggUlNIIERJViBN T0QNCisgJWxlZnQgJ0AnDQorICVsZWZ0ICcrJyAnLScNCisgJWxlZnQgJyonICcvJw0KKyAlcmln aHQgVU5BUlkgSU5DUkVNRU5UIERFQ1JFTUVOVA0KKyAlcmlnaHQgQVJST1cgJy4nICdbJyAnKCcN CisgJXRva2VuIDxzc3ltPiBCTE9DS05BTUUNCisgJXR5cGUgPGJ2YWw+IGJsb2NrDQorICVsZWZ0 IENPTE9OQ09MT04NCisgDQorIAwNCisgJSUNCisgDQorIHN0YXJ0ICAgOglleHAxDQorIAl8CXR5 cGVfZXhwDQorIAk7DQorIA0KKyB0eXBlX2V4cDoJdHlwZQ0KKyAJCQl7IHdyaXRlX2V4cF9lbHRf b3Bjb2RlKE9QX1RZUEUpOw0KKyAJCQkgIHdyaXRlX2V4cF9lbHRfdHlwZSgkMSk7DQorIAkJCSAg d3JpdGVfZXhwX2VsdF9vcGNvZGUoT1BfVFlQRSk7fQ0KKyAJOw0KKyANCisgLyogRXhwcmVzc2lv bnMsIGluY2x1ZGluZyB0aGUgY29tbWEgb3BlcmF0b3IuICAqLw0KKyBleHAxCToJZXhwDQorIAl8 CWV4cDEgJywnIGV4cA0KKyAJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChCSU5PUF9DT01NQSk7 IH0NCisgCTsNCisgDQorIC8qIEV4cHJlc3Npb25zLCBub3QgaW5jbHVkaW5nIHRoZSBjb21tYSBv cGVyYXRvci4gICovDQorIGV4cAk6CWV4cCAnXicgICAlcHJlYyBVTkFSWQ0KKyAJCQl7IHdyaXRl X2V4cF9lbHRfb3Bjb2RlIChVTk9QX0lORCk7IH0NCisgDQorIGV4cAk6CSdAJyBleHAgICAgJXBy ZWMgVU5BUlkNCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9BRERSKTsgfQ0KKyAN CisgZXhwCToJJy0nIGV4cCAgICAlcHJlYyBVTkFSWQ0KKyAJCQl7IHdyaXRlX2V4cF9lbHRfb3Bj b2RlIChVTk9QX05FRyk7IH0NCisgCTsNCisgDQorIGV4cAk6CU5PVCBleHAgICAgJXByZWMgVU5B UlkNCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9MT0dJQ0FMX05PVCk7IH0NCisg CTsNCisgDQorIGV4cAk6CUlOQ1JFTUVOVCAnKCcgZXhwICcpJyAgICVwcmVjIFVOQVJZDQorIAkJ CXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfUFJFSU5DUkVNRU5UKTsgfQ0KKyAJOw0KKyAN CisgZXhwCToJREVDUkVNRU5UICAnKCcgZXhwICcpJyAgICVwcmVjIFVOQVJZDQorIAkJCXsgd3Jp dGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfUFJFREVDUkVNRU5UKTsgfQ0KKyAJOw0KKyANCisgZXhw CToJZXhwICcuJyBuYW1lDQorIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFNUUlVDVE9QX1NU UlVDVCk7DQorIAkJCSAgd3JpdGVfZXhwX3N0cmluZyAoJDMpOw0KKyAJCQkgIHdyaXRlX2V4cF9l bHRfb3Bjb2RlIChTVFJVQ1RPUF9TVFJVQ1QpOyB9DQorIAk7DQorIA0KKyBleHAJOglleHAgJ1sn IGV4cDEgJ10nDQorIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKEJJTk9QX1NVQlNDUklQVCk7 IH0NCisgCTsNCisgDQorIGV4cAk6CWV4cCAnKCcNCisgCQkJLyogVGhpcyBpcyB0byBzYXZlIHRo ZSB2YWx1ZSBvZiBhcmdsaXN0X2xlbg0KKyAJCQkgICBiZWluZyBhY2N1bXVsYXRlZCBieSBhbiBv dXRlciBmdW5jdGlvbiBjYWxsLiAgKi8NCisgCQkJeyBzdGFydF9hcmdsaXN0ICgpOyB9DQorIAkJ YXJnbGlzdCAnKScJJXByZWMgQVJST1cNCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoT1Bf RlVOQ0FMTCk7DQorIAkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0ICgoTE9OR0VTVCkgZW5kX2Fy Z2xpc3QgKCkpOw0KKyAJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9GVU5DQUxMKTsgfQ0K KyAJOw0KKyANCisgYXJnbGlzdAk6DQorICAgICAgICAgIHwgZXhwDQorIAkJCXsgYXJnbGlzdF9s ZW4gPSAxOyB9DQorIAkgfCBhcmdsaXN0ICcsJyBleHAgICAlcHJlYyBBQk9WRV9DT01NQQ0KKyAJ CQl7IGFyZ2xpc3RfbGVuKys7IH0NCisgCTsNCisgDQorIGV4cAk6CXR5cGUgJygnIGV4cCAnKScg JXByZWMgVU5BUlkNCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9DQVNUKTsNCisg CQkJICB3cml0ZV9leHBfZWx0X3R5cGUgKCQxKTsNCisgCQkJICB3cml0ZV9leHBfZWx0X29wY29k ZSAoVU5PUF9DQVNUKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJJygnIGV4cDEgJyknDQorIAkJCXsg fQ0KKyAJOw0KKyANCisgLyogQmluYXJ5IG9wZXJhdG9ycyBpbiBvcmRlciBvZiBkZWNyZWFzaW5n IHByZWNlZGVuY2UuICAqLw0KKyANCisgZXhwCToJZXhwICcqJyBleHANCisgCQkJeyB3cml0ZV9l eHBfZWx0X29wY29kZSAoQklOT1BfTVVMKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhwICcvJyBl eHANCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfRElWKTsgfQ0KKyAJOw0KKyAN CisgZXhwCToJZXhwIERJViBleHANCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1Bf SU5URElWKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhwIE1PRCBleHANCisgCQkJeyB3cml0ZV9l eHBfZWx0X29wY29kZSAoQklOT1BfUkVNKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhwICcrJyBl eHANCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfQUREKTsgfQ0KKyAJOw0KKyAN CisgZXhwCToJZXhwICctJyBleHANCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1Bf U1VCKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhwIExTSCBleHANCisgCQkJeyB3cml0ZV9leHBf ZWx0X29wY29kZSAoQklOT1BfTFNIKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhwIFJTSCBleHAN CisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfUlNIKTsgfQ0KKyAJOw0KKyANCisg ZXhwCToJZXhwICc9JyBleHANCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfRVFV QUwpOyB9DQorIAk7DQorIA0KKyBleHAJOglleHAgTk9URVFVQUwgZXhwDQorIAkJCXsgd3JpdGVf ZXhwX2VsdF9vcGNvZGUgKEJJTk9QX05PVEVRVUFMKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhw IExFUSBleHANCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfTEVRKTsgfQ0KKyAJ Ow0KKyANCisgZXhwCToJZXhwIEdFUSBleHANCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAo QklOT1BfR0VRKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhwICc8JyBleHANCisgCQkJeyB3cml0 ZV9leHBfZWx0X29wY29kZSAoQklOT1BfTEVTUyk7IH0NCisgCTsNCisgDQorIGV4cAk6CWV4cCAn PicgZXhwDQorIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKEJJTk9QX0dUUik7IH0NCisgCTsN CisgDQorIGV4cAk6CWV4cCBBTkRBTkQgZXhwDQorIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUg KEJJTk9QX0JJVFdJU0VfQU5EKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhwIFhPUiBleHANCisg CQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfQklUV0lTRV9YT1IpOyB9DQorIAk7DQor IA0KKyBleHAJOglleHAgT1IgZXhwDQorIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKEJJTk9Q X0JJVFdJU0VfSU9SKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJZXhwIEFTU0lHTiBleHANCisgCQkJ eyB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfQVNTSUdOKTsgfQ0KKyAJOw0KKyANCisgZXhw CToJVFJVRQ0KKyAJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9CT09MKTsNCisgCQkJICB3 cml0ZV9leHBfZWx0X2xvbmdjc3QgKChMT05HRVNUKSAkMSk7DQorIAkJCSAgd3JpdGVfZXhwX2Vs dF9vcGNvZGUgKE9QX0JPT0wpOyB9DQorIAk7DQorIA0KKyBleHAJOglGQUxTRQ0KKyAJCQl7IHdy aXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9CT09MKTsNCisgCQkJICB3cml0ZV9leHBfZWx0X2xvbmdj c3QgKChMT05HRVNUKSAkMSk7DQorIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX0JPT0wp OyB9DQorIAk7DQorIA0KKyBleHAJOglJTlQNCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAo T1BfTE9ORyk7DQorIAkJCSAgd3JpdGVfZXhwX2VsdF90eXBlICgkMS50eXBlKTsNCisgCQkJICB3 cml0ZV9leHBfZWx0X2xvbmdjc3QgKChMT05HRVNUKSgkMS52YWwpKTsNCisgCQkJICB3cml0ZV9l eHBfZWx0X29wY29kZSAoT1BfTE9ORyk7IH0NCisgCTsNCisgDQorIGV4cAk6CU5BTUVfT1JfSU5U DQorIAkJCXsgWVlTVFlQRSB2YWw7DQorIAkJCSAgcGFyc2VfbnVtYmVyICgkMS5zdG9rZW4ucHRy LCAkMS5zdG9rZW4ubGVuZ3RoLCAwLCAmdmFsKTsNCisgCQkJICB3cml0ZV9leHBfZWx0X29wY29k ZSAoT1BfTE9ORyk7DQorIAkJCSAgd3JpdGVfZXhwX2VsdF90eXBlICh2YWwudHlwZWRfdmFsX2lu dC50eXBlKTsNCisgCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKChMT05HRVNUKXZhbC50eXBl ZF92YWxfaW50LnZhbCk7DQorIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX0xPTkcpOw0K KyAJCQl9DQorIAk7DQorIA0KKyANCisgZXhwCToJRkxPQVQNCisgCQkJeyB3cml0ZV9leHBfZWx0 X29wY29kZSAoT1BfRE9VQkxFKTsNCisgCQkJICB3cml0ZV9leHBfZWx0X3R5cGUgKCQxLnR5cGUp Ow0KKyAJCQkgIHdyaXRlX2V4cF9lbHRfZGJsY3N0ICgkMS5kdmFsKTsNCisgCQkJICB3cml0ZV9l eHBfZWx0X29wY29kZSAoT1BfRE9VQkxFKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJdmFyaWFibGUN CisgCTsNCisgDQorIGV4cAk6CVZBUklBQkxFDQorIAkJCS8qIEFscmVhZHkgd3JpdHRlbiBieSB3 cml0ZV9kb2xsYXJfdmFyaWFibGUuICovDQorIAk7DQorIA0KKyBleHAJOglTSVpFT0YgJygnIHR5 cGUgJyknCSVwcmVjIFVOQVJZDQorIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX0xPTkcp Ow0KKyAJCQkgIHdyaXRlX2V4cF9lbHRfdHlwZSAoYnVpbHRpbl90eXBlX2ludCk7DQorIAkJCSAg Q0hFQ0tfVFlQRURFRiAoJDMpOw0KKyAJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAoKExPTkdF U1QpIFRZUEVfTEVOR1RIICgkMykpOw0KKyAJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9M T05HKTsgfQ0KKyAJOw0KKyANCisgZXhwCToJU1RSSU5HDQorIAkJCXsgLyogQyBzdHJpbmdzIGFy ZSBjb252ZXJ0ZWQgaW50byBhcnJheSBjb25zdGFudHMgd2l0aA0KKyAJCQkgICAgIGFuIGV4cGxp Y2l0IG51bGwgYnl0ZSBhZGRlZCBhdCB0aGUgZW5kLiAgVGh1cw0KKyAJCQkgICAgIHRoZSBhcnJh eSB1cHBlciBib3VuZCBpcyB0aGUgc3RyaW5nIGxlbmd0aC4NCisgCQkJICAgICBUaGVyZSBpcyBu byBzdWNoIHRoaW5nIGluIEMgYXMgYSBjb21wbGV0ZWx5IGVtcHR5DQorIAkJCSAgICAgc3RyaW5n LiAqLw0KKyAJCQkgIGNoYXIgKnNwID0gJDEucHRyOyBpbnQgY291bnQgPSAkMS5sZW5ndGg7DQor IAkJCSAgd2hpbGUgKGNvdW50LS0gPiAwKQ0KKyAJCQkgICAgew0KKyAJCQkgICAgICB3cml0ZV9l eHBfZWx0X29wY29kZSAoT1BfTE9ORyk7DQorIAkJCSAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAo YnVpbHRpbl90eXBlX2NoYXIpOw0KKyAJCQkgICAgICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKChM T05HRVNUKSgqc3ArKykpOw0KKyAJCQkgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9O Ryk7DQorIAkJCSAgICB9DQorIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX0xPTkcpOw0K KyAJCQkgIHdyaXRlX2V4cF9lbHRfdHlwZSAoYnVpbHRpbl90eXBlX2NoYXIpOw0KKyAJCQkgIHdy aXRlX2V4cF9lbHRfbG9uZ2NzdCAoKExPTkdFU1QpJ1wwJyk7DQorIAkJCSAgd3JpdGVfZXhwX2Vs dF9vcGNvZGUgKE9QX0xPTkcpOw0KKyAJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9BUlJB WSk7DQorIAkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0ICgoTE9OR0VTVCkgMCk7DQorIAkJCSAg d3JpdGVfZXhwX2VsdF9sb25nY3N0ICgoTE9OR0VTVCkgKCQxLmxlbmd0aCkpOw0KKyAJCQkgIHdy aXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9BUlJBWSk7IH0NCisgCTsNCisgDQorIC8qIEMrKy4gICov DQorIGV4cAk6CVRISVMNCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfVEhJUyk7DQor IAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX1RISVMpOyB9DQorIAk7DQorIA0KKyAvKiBl bmQgb2YgQysrLiAgKi8NCisgDQorIGJsb2NrCToJQkxPQ0tOQU1FDQorIAkJCXsNCisgCQkJICBp ZiAoJDEuc3ltICE9IDApDQorIAkJCSAgICAgICQkID0gU1lNQk9MX0JMT0NLX1ZBTFVFICgkMS5z eW0pOw0KKyAJCQkgIGVsc2UNCisgCQkJICAgIHsNCisgCQkJICAgICAgc3RydWN0IHN5bXRhYiAq dGVtID0NCisgCQkJCSAgbG9va3VwX3N5bXRhYiAoY29weV9uYW1lICgkMS5zdG9rZW4pKTsNCisg CQkJICAgICAgaWYgKHRlbSkNCisgCQkJCSQkID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKEJMT0NLVkVD VE9SICh0ZW0pLCBTVEFUSUNfQkxPQ0spOw0KKyAJCQkgICAgICBlbHNlDQorIAkJCQllcnJvciAo Ik5vIGZpbGUgb3IgZnVuY3Rpb24gXCIlc1wiLiIsDQorIAkJCQkgICAgICAgY29weV9uYW1lICgk MS5zdG9rZW4pKTsNCisgCQkJICAgIH0NCisgCQkJfQ0KKyAJOw0KKyANCisgYmxvY2sJOglibG9j ayBDT0xPTkNPTE9OIG5hbWUNCisgCQkJeyBzdHJ1Y3Qgc3ltYm9sICp0ZW0NCisgCQkJICAgID0g bG9va3VwX3N5bWJvbCAoY29weV9uYW1lICgkMyksICQxLA0KKyAJCQkJCSAgICAgVkFSX05BTUVT UEFDRSwgKGludCAqKSBOVUxMLA0KKyAJCQkJCSAgICAgKHN0cnVjdCBzeW10YWIgKiopIE5VTEwp Ow0KKyAJCQkgIGlmICghdGVtIHx8IFNZTUJPTF9DTEFTUyAodGVtKSAhPSBMT0NfQkxPQ0spDQor IAkJCSAgICBlcnJvciAoIk5vIGZ1bmN0aW9uIFwiJXNcIiBpbiBzcGVjaWZpZWQgY29udGV4dC4i LA0KKyAJCQkJICAgY29weV9uYW1lICgkMykpOw0KKyAJCQkgICQkID0gU1lNQk9MX0JMT0NLX1ZB TFVFICh0ZW0pOyB9DQorIAk7DQorIA0KKyB2YXJpYWJsZToJYmxvY2sgQ09MT05DT0xPTiBuYW1l DQorIAkJCXsgc3RydWN0IHN5bWJvbCAqc3ltOw0KKyAJCQkgIHN5bSA9IGxvb2t1cF9zeW1ib2wg KGNvcHlfbmFtZSAoJDMpLCAkMSwNCisgCQkJCQkgICAgICAgVkFSX05BTUVTUEFDRSwgKGludCAq KSBOVUxMLA0KKyAJCQkJCSAgICAgICAoc3RydWN0IHN5bXRhYiAqKikgTlVMTCk7DQorIAkJCSAg aWYgKHN5bSA9PSAwKQ0KKyAJCQkgICAgZXJyb3IgKCJObyBzeW1ib2wgXCIlc1wiIGluIHNwZWNp ZmllZCBjb250ZXh0LiIsDQorIAkJCQkgICBjb3B5X25hbWUgKCQzKSk7DQorIA0KKyAJCQkgIHdy aXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9WQVJfVkFMVUUpOw0KKyAJCQkgIC8qIGJsb2NrX2ZvdW5k IGlzIHNldCBieSBsb29rdXBfc3ltYm9sLiAgKi8NCisgCQkJICB3cml0ZV9leHBfZWx0X2Jsb2Nr IChibG9ja19mb3VuZCk7DQorIAkJCSAgd3JpdGVfZXhwX2VsdF9zeW0gKHN5bSk7DQorIAkJCSAg d3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX1ZBUl9WQUxVRSk7IH0NCisgCTsNCisgDQorIHF1YWxp ZmllZF9uYW1lOgl0eXBlYmFzZSBDT0xPTkNPTE9OIG5hbWUNCisgCQkJew0KKyAJCQkgIHN0cnVj dCB0eXBlICp0eXBlID0gJDE7DQorIAkJCSAgaWYgKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9D T0RFX1NUUlVDVA0KKyAJCQkgICAgICAmJiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9V TklPTikNCisgCQkJICAgIGVycm9yICgiYCVzJyBpcyBub3QgZGVmaW5lZCBhcyBhbiBhZ2dyZWdh dGUgdHlwZS4iLA0KKyAJCQkJICAgVFlQRV9OQU1FICh0eXBlKSk7DQorIA0KKyAJCQkgIHdyaXRl X2V4cF9lbHRfb3Bjb2RlIChPUF9TQ09QRSk7DQorIAkJCSAgd3JpdGVfZXhwX2VsdF90eXBlICh0 eXBlKTsNCisgCQkJICB3cml0ZV9leHBfc3RyaW5nICgkMyk7DQorIAkJCSAgd3JpdGVfZXhwX2Vs dF9vcGNvZGUgKE9QX1NDT1BFKTsNCisgCQkJfQ0KKyAJOw0KKyANCisgdmFyaWFibGU6CXF1YWxp ZmllZF9uYW1lDQorIAl8CUNPTE9OQ09MT04gbmFtZQ0KKyAJCQl7DQorIAkJCSAgY2hhciAqbmFt ZSA9IGNvcHlfbmFtZSAoJDIpOw0KKyAJCQkgIHN0cnVjdCBzeW1ib2wgKnN5bTsNCisgCQkJICBz dHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2w7DQorIA0KKyAJCQkgIHN5bSA9DQorIAkJCSAg ICBsb29rdXBfc3ltYm9sIChuYW1lLCAoY29uc3Qgc3RydWN0IGJsb2NrICopIE5VTEwsDQorIAkJ CQkJICAgVkFSX05BTUVTUEFDRSwgKGludCAqKSBOVUxMLA0KKyAJCQkJCSAgIChzdHJ1Y3Qgc3lt dGFiICoqKSBOVUxMKTsNCisgCQkJICBpZiAoc3ltKQ0KKyAJCQkgICAgew0KKyAJCQkgICAgICB3 cml0ZV9leHBfZWx0X29wY29kZSAoT1BfVkFSX1ZBTFVFKTsNCisgCQkJICAgICAgd3JpdGVfZXhw X2VsdF9ibG9jayAoTlVMTCk7DQorIAkJCSAgICAgIHdyaXRlX2V4cF9lbHRfc3ltIChzeW0pOw0K KyAJCQkgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfVkFSX1ZBTFVFKTsNCisgCQkJICAg ICAgYnJlYWs7DQorIAkJCSAgICB9DQorIA0KKyAJCQkgIG1zeW1ib2wgPSBsb29rdXBfbWluaW1h bF9zeW1ib2wgKG5hbWUsIE5VTEwsIE5VTEwpOw0KKyAJCQkgIGlmIChtc3ltYm9sICE9IE5VTEwp DQorIAkJCSAgICB7DQorIAkJCSAgICAgIHdyaXRlX2V4cF9tc3ltYm9sIChtc3ltYm9sLA0KKyAJ CQkJCQkgbG9va3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZV9pbnQpLA0KKyAJCQkJCQkg YnVpbHRpbl90eXBlX2ludCk7DQorIAkJCSAgICB9DQorIAkJCSAgZWxzZQ0KKyAJCQkgICAgaWYg KCFoYXZlX2Z1bGxfc3ltYm9scyAoKSAmJiAhaGF2ZV9wYXJ0aWFsX3N5bWJvbHMgKCkpDQorIAkJ CSAgICAgIGVycm9yICgiTm8gc3ltYm9sIHRhYmxlIGlzIGxvYWRlZC4gIFVzZSB0aGUgXCJmaWxl XCIgY29tbWFuZC4iKTsNCisgCQkJICAgIGVsc2UNCisgCQkJICAgICAgZXJyb3IgKCJObyBzeW1i b2wgXCIlc1wiIGluIGN1cnJlbnQgY29udGV4dC4iLCBuYW1lKTsNCisgCQkJfQ0KKyAJOw0KKyAN CisgdmFyaWFibGU6CW5hbWVfbm90X3R5cGVuYW1lDQorIAkJCXsgc3RydWN0IHN5bWJvbCAqc3lt ID0gJDEuc3ltOw0KKyANCisgCQkJICBpZiAoc3ltKQ0KKyAJCQkgICAgew0KKyAJCQkgICAgICBp ZiAoc3ltYm9sX3JlYWRfbmVlZHNfZnJhbWUgKHN5bSkpDQorIAkJCQl7DQorIAkJCQkgIGlmIChp bm5lcm1vc3RfYmxvY2sgPT0gMCB8fA0KKyAJCQkJICAgICAgY29udGFpbmVkX2luIChibG9ja19m b3VuZCwNCisgCQkJCQkJICAgIGlubmVybW9zdF9ibG9jaykpDQorIAkJCQkgICAgaW5uZXJtb3N0 X2Jsb2NrID0gYmxvY2tfZm91bmQ7DQorIAkJCQl9DQorIA0KKyAJCQkgICAgICB3cml0ZV9leHBf ZWx0X29wY29kZSAoT1BfVkFSX1ZBTFVFKTsNCisgCQkJICAgICAgLyogV2Ugd2FudCB0byB1c2Ug dGhlIHNlbGVjdGVkIGZyYW1lLCBub3QNCisgCQkJCSBhbm90aGVyIG1vcmUgaW5uZXIgZnJhbWUg d2hpY2ggaGFwcGVucyB0bw0KKyAJCQkJIGJlIGluIHRoZSBzYW1lIGJsb2NrLiAgKi8NCisgCQkJ ICAgICAgd3JpdGVfZXhwX2VsdF9ibG9jayAoTlVMTCk7DQorIAkJCSAgICAgIHdyaXRlX2V4cF9l bHRfc3ltIChzeW0pOw0KKyAJCQkgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfVkFSX1ZB TFVFKTsNCisgCQkJICAgIH0NCisgCQkJICBlbHNlIGlmICgkMS5pc19hX2ZpZWxkX29mX3RoaXMp DQorIAkJCSAgICB7DQorIAkJCSAgICAgIC8qIEMrKzogaXQgaGFuZ3Mgb2ZmIG9mIGB0aGlzJy4g IE11c3QNCisgCQkJICAgICAgICAgbm90IGluYWR2ZXJ0ZW50bHkgY29udmVydCBmcm9tIGEgbWV0 aG9kIGNhbGwNCisgCQkJCSB0byBkYXRhIHJlZi4gICovDQorIAkJCSAgICAgIGlmIChpbm5lcm1v c3RfYmxvY2sgPT0gMCB8fA0KKyAJCQkJICBjb250YWluZWRfaW4gKGJsb2NrX2ZvdW5kLCBpbm5l cm1vc3RfYmxvY2spKQ0KKyAJCQkJaW5uZXJtb3N0X2Jsb2NrID0gYmxvY2tfZm91bmQ7DQorIAkJ CSAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9USElTKTsNCisgCQkJICAgICAgd3JpdGVf ZXhwX2VsdF9vcGNvZGUgKE9QX1RISVMpOw0KKyAJCQkgICAgICB3cml0ZV9leHBfZWx0X29wY29k ZSAoU1RSVUNUT1BfUFRSKTsNCisgCQkJICAgICAgd3JpdGVfZXhwX3N0cmluZyAoJDEuc3Rva2Vu KTsNCisgCQkJICAgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFNUUlVDVE9QX1BUUik7DQorIAkJ CSAgICB9DQorIAkJCSAgZWxzZQ0KKyAJCQkgICAgew0KKyAJCQkgICAgICBzdHJ1Y3QgbWluaW1h bF9zeW1ib2wgKm1zeW1ib2w7DQorIAkJCSAgICAgIHJlZ2lzdGVyIGNoYXIgKmFyZyA9IGNvcHlf bmFtZSAoJDEuc3Rva2VuKTsNCisgDQorIAkJCSAgICAgIG1zeW1ib2wgPQ0KKyAJCQkJbG9va3Vw X21pbmltYWxfc3ltYm9sIChhcmcsIE5VTEwsIE5VTEwpOw0KKyAJCQkgICAgICBpZiAobXN5bWJv bCAhPSBOVUxMKQ0KKyAJCQkJew0KKyAJCQkJICB3cml0ZV9leHBfbXN5bWJvbCAobXN5bWJvbCwN CisgCQkJCQkJICAgICBsb29rdXBfZnVuY3Rpb25fdHlwZSAoYnVpbHRpbl90eXBlX2ludCksDQor IAkJCQkJCSAgICAgYnVpbHRpbl90eXBlX2ludCk7DQorIAkJCQl9DQorIAkJCSAgICAgIGVsc2Ug aWYgKCFoYXZlX2Z1bGxfc3ltYm9scyAoKSAmJiAhaGF2ZV9wYXJ0aWFsX3N5bWJvbHMgKCkpDQor IAkJCQllcnJvciAoIk5vIHN5bWJvbCB0YWJsZSBpcyBsb2FkZWQuICBVc2UgdGhlIFwiZmlsZVwi IGNvbW1hbmQuIik7DQorIAkJCSAgICAgIGVsc2UNCisgCQkJCWVycm9yICgiTm8gc3ltYm9sIFwi JXNcIiBpbiBjdXJyZW50IGNvbnRleHQuIiwNCisgCQkJCSAgICAgICBjb3B5X25hbWUgKCQxLnN0 b2tlbikpOw0KKyAJCQkgICAgfQ0KKyAJCQl9DQorIAk7DQorIA0KKyANCisgcHR5cGUJOgl0eXBl YmFzZQ0KKyAJOw0KKyANCisgLyogV2UgdXNlZCB0byB0cnkgdG8gcmVjb2duaXplIG1vcmUgcG9p bnRlciB0byBtZW1iZXIgdHlwZXMgaGVyZSwgYnV0DQorICAgIHRoYXQgZGlkbid0IHdvcmsgKHNo aWZ0L3JlZHVjZSBjb25mbGljdHMgbWVhbnQgdGhhdCB0aGVzZSBydWxlcyBuZXZlcg0KKyAgICBn b3QgZXhlY3V0ZWQpLiAgVGhlIHByb2JsZW0gaXMgdGhhdA0KKyAgICAgIGludCAoZm9vOjpiYXI6 OmJhejo6Yml6emxlKQ0KKyAgICBpcyBhIGZ1bmN0aW9uIHR5cGUgYnV0DQorICAgICAgaW50IChm b286OmJhcjo6YmF6OjpiaXp6bGU6OiopDQorICAgIGlzIGEgcG9pbnRlciB0byBtZW1iZXIgdHlw ZS4gIFN0cm91c3RydXAgbG9zZXMgYWdhaW4hICAqLw0KKyANCisgdHlwZQk6CXB0eXBlDQorIAl8 CXR5cGViYXNlIENPTE9OQ09MT04gJyonDQorIAkJCXsgJCQgPSBsb29rdXBfbWVtYmVyX3R5cGUg KGJ1aWx0aW5fdHlwZV9pbnQsICQxKTsgfQ0KKyAJOw0KKyANCisgdHlwZWJhc2UgIC8qIEltcGxl bWVudHMgKGFwcHJveGltYXRlbHkpOiAodHlwZS1xdWFsaWZpZXIpKiB0eXBlLXNwZWNpZmllciAq Lw0KKyAJOglUWVBFTkFNRQ0KKyAJCQl7ICQkID0gJDEudHlwZTsgfQ0KKyAJfAlTVFJVQ1QgbmFt ZQ0KKyAJCQl7ICQkID0gbG9va3VwX3N0cnVjdCAoY29weV9uYW1lICgkMiksDQorIAkJCQkJICAg ICAgZXhwcmVzc2lvbl9jb250ZXh0X2Jsb2NrKTsgfQ0KKyAJfAlDTEFTUyBuYW1lDQorIAkJCXsg JCQgPSBsb29rdXBfc3RydWN0IChjb3B5X25hbWUgKCQyKSwNCisgCQkJCQkgICAgICBleHByZXNz aW9uX2NvbnRleHRfYmxvY2spOyB9DQorIAkvKiAiY29uc3QiIGFuZCAidm9sYXRpbGUiIGFyZSBj dXJlbnRseSBpZ25vcmVkLiAgQSB0eXBlIHF1YWxpZmllcg0KKyAJICAgYWZ0ZXIgdGhlIHR5cGUg aXMgaGFuZGxlZCBpbiB0aGUgcHR5cGUgcnVsZS4gIEkgdGhpbmsgdGhlc2UgY291bGQNCisgCSAg IGJlIHRvby4gICovDQorIAk7DQorIA0KKyBuYW1lCToJTkFNRSB7ICQkID0gJDEuc3Rva2VuOyB9 DQorIAl8CUJMT0NLTkFNRSB7ICQkID0gJDEuc3Rva2VuOyB9DQorIAl8CVRZUEVOQU1FIHsgJCQg PSAkMS5zdG9rZW47IH0NCisgCXwJTkFNRV9PUl9JTlQgIHsgJCQgPSAkMS5zdG9rZW47IH0NCisg CTsNCisgDQorIG5hbWVfbm90X3R5cGVuYW1lIDoJTkFNRQ0KKyAJfAlCTE9DS05BTUUNCisgLyog VGhlc2Ugd291bGQgYmUgdXNlZnVsIGlmIG5hbWVfbm90X3R5cGVuYW1lIHdhcyB1c2VmdWwsIGJ1 dCBpdCBpcyBqdXN0DQorICAgIGEgZmFrZSBmb3IgInZhcmlhYmxlIiwgc28gdGhlc2UgY2F1c2Ug cmVkdWNlL3JlZHVjZSBjb25mbGljdHMgYmVjYXVzZQ0KKyAgICB0aGUgcGFyc2VyIGNhbid0IHRl bGwgd2hldGhlciBOQU1FX09SX0lOVCBpcyBhIG5hbWVfbm90X3R5cGVuYW1lICg9dmFyaWFibGUs DQorICAgID1leHApIG9yIGp1c3QgYW4gZXhwLiAgSWYgbmFtZV9ub3RfdHlwZW5hbWUgd2FzIGV2 ZXIgdXNlZCBpbiBhbiBsdmFsdWUNCisgICAgY29udGV4dCB3aGVyZSBvbmx5IGEgbmFtZSBjb3Vs ZCBvY2N1ciwgdGhpcyBtaWdodCBiZSB1c2VmdWwuDQorICAgCXwJTkFNRV9PUl9JTlQNCisgICov DQorIAk7DQorIA0KKyAlJQ0KKyANCisgLyogVGFrZSBjYXJlIG9mIHBhcnNpbmcgYSBudW1iZXIg KGFueXRoaW5nIHRoYXQgc3RhcnRzIHdpdGggYSBkaWdpdCkuDQorICAgIFNldCB5eWx2YWwgYW5k IHJldHVybiB0aGUgdG9rZW4gdHlwZTsgdXBkYXRlIGxleHB0ci4NCisgICAgTEVOIGlzIHRoZSBu dW1iZXIgb2YgY2hhcmFjdGVycyBpbiBpdC4gICovDQorIA0KKyAvKioqIE5lZWRzIHNvbWUgZXJy b3IgY2hlY2tpbmcgZm9yIHRoZSBmbG9hdCBjYXNlICoqKi8NCisgDQorIHN0YXRpYyBpbnQNCisg cGFyc2VfbnVtYmVyIChwLCBsZW4sIHBhcnNlZF9mbG9hdCwgcHV0aXRoZXJlKQ0KKyAgICAgIHJl Z2lzdGVyIGNoYXIgKnA7DQorICAgICAgcmVnaXN0ZXIgaW50IGxlbjsNCisgICAgICBpbnQgcGFy c2VkX2Zsb2F0Ow0KKyAgICAgIFlZU1RZUEUgKnB1dGl0aGVyZTsNCisgew0KKyAgIC8qIEZJWE1F OiBTaG91bGRuJ3QgdGhlc2UgYmUgdW5zaWduZWQ/ICBXZSBkb24ndCBkZWFsIHdpdGggbmVnYXRp dmUgdmFsdWVzDQorICAgICAgaGVyZSwgYW5kIHdlIGRvIGtpbmQgb2Ygc2lsbHkgdGhpbmdzIGxp a2UgY2FzdCB0byB1bnNpZ25lZC4gICovDQorICAgcmVnaXN0ZXIgTE9OR0VTVCBuID0gMDsNCisg ICByZWdpc3RlciBMT05HRVNUIHByZXZuID0gMDsNCisgICBVTE9OR0VTVCB1bjsNCisgDQorICAg cmVnaXN0ZXIgaW50IGkgPSAwOw0KKyAgIHJlZ2lzdGVyIGludCBjOw0KKyAgIHJlZ2lzdGVyIGlu dCBiYXNlID0gaW5wdXRfcmFkaXg7DQorICAgaW50IHVuc2lnbmVkX3AgPSAwOw0KKyANCisgICAv KiBOdW1iZXIgb2YgIkwiIHN1ZmZpeGVzIGVuY291bnRlcmVkLiAgKi8NCisgICBpbnQgbG9uZ19w ID0gMDsNCisgDQorICAgLyogV2UgaGF2ZSBmb3VuZCBhICJMIiBvciAiVSIgc3VmZml4LiAgKi8N CisgICBpbnQgZm91bmRfc3VmZml4ID0gMDsNCisgDQorICAgVUxPTkdFU1QgaGlnaF9iaXQ7DQor ICAgc3RydWN0IHR5cGUgKnNpZ25lZF90eXBlOw0KKyAgIHN0cnVjdCB0eXBlICp1bnNpZ25lZF90 eXBlOw0KKyANCisgICBpZiAocGFyc2VkX2Zsb2F0KQ0KKyAgICAgew0KKyAgICAgICAvKiBJdCdz IGEgZmxvYXQgc2luY2UgaXQgY29udGFpbnMgYSBwb2ludCBvciBhbiBleHBvbmVudC4gICovDQor ICAgICAgIGNoYXIgYzsNCisgICAgICAgaW50IG51bSA9IDA7CS8qIG51bWJlciBvZiB0b2tlbnMg c2Nhbm5lZCBieSBzY2FuZiAqLw0KKyAgICAgICBjaGFyIHNhdmVkX2NoYXIgPSBwW2xlbl07DQor IA0KKyAgICAgICBwW2xlbl0gPSAwOwkvKiBudWxsLXRlcm1pbmF0ZSB0aGUgdG9rZW4gKi8NCisg ICAgICAgaWYgKHNpemVvZiAocHV0aXRoZXJlLT50eXBlZF92YWxfZmxvYXQuZHZhbCkgPD0gc2l6 ZW9mIChmbG9hdCkpDQorIAludW0gPSBzc2NhbmYgKHAsICIlZyVjIiwgKGZsb2F0ICopICZwdXRp dGhlcmUtPnR5cGVkX3ZhbF9mbG9hdC5kdmFsLCZjKTsNCisgICAgICAgZWxzZSBpZiAoc2l6ZW9m IChwdXRpdGhlcmUtPnR5cGVkX3ZhbF9mbG9hdC5kdmFsKSA8PSBzaXplb2YgKGRvdWJsZSkpDQor IAludW0gPSBzc2NhbmYgKHAsICIlbGclYyIsIChkb3VibGUgKikgJnB1dGl0aGVyZS0+dHlwZWRf dmFsX2Zsb2F0LmR2YWwsJmMpOw0KKyAgICAgICBlbHNlDQorIAl7DQorICNpZmRlZiBTQ0FORl9I QVNfTE9OR19ET1VCTEUNCisgCSAgbnVtID0gc3NjYW5mIChwLCAiJUxnJWMiLCAmcHV0aXRoZXJl LT50eXBlZF92YWxfZmxvYXQuZHZhbCwmYyk7DQorICNlbHNlDQorIAkgIC8qIFNjYW4gaXQgaW50 byBhIGRvdWJsZSwgdGhlbiBhc3NpZ24gaXQgdG8gdGhlIGxvbmcgZG91YmxlLg0KKyAJICAgICBU aGlzIGF0IGxlYXN0IHdpbnMgd2l0aCB2YWx1ZXMgcmVwcmVzZW50YWJsZSBpbiB0aGUgcmFuZ2UN CisgCSAgICAgb2YgZG91Ymxlcy4gKi8NCisgCSAgZG91YmxlIHRlbXA7DQorIAkgIG51bSA9IHNz Y2FuZiAocCwgIiVsZyVjIiwgJnRlbXAsJmMpOw0KKyAJICBwdXRpdGhlcmUtPnR5cGVkX3ZhbF9m bG9hdC5kdmFsID0gdGVtcDsNCisgI2VuZGlmDQorIAl9DQorICAgICAgIHBbbGVuXSA9IHNhdmVk X2NoYXI7CS8qIHJlc3RvcmUgdGhlIGlucHV0IHN0cmVhbSAqLw0KKyAgICAgICBpZiAobnVtICE9 IDEpIAkJLyogY2hlY2sgc2NhbmYgZm91bmQgT05MWSBhIGZsb2F0IC4uLiAqLw0KKyAJcmV0dXJu IEVSUk9SOw0KKyAgICAgICAvKiBTZWUgaWYgaXQgaGFzIGBmJyBvciBgbCcgc3VmZml4IChmbG9h dCBvciBsb25nIGRvdWJsZSkuICAqLw0KKyANCisgICAgICAgYyA9IHRvbG93ZXIgKHBbbGVuIC0g MV0pOw0KKyANCisgICAgICAgaWYgKGMgPT0gJ2YnKQ0KKyAJcHV0aXRoZXJlLT50eXBlZF92YWxf ZmxvYXQudHlwZSA9IGJ1aWx0aW5fdHlwZV9mbG9hdDsNCisgICAgICAgZWxzZSBpZiAoYyA9PSAn bCcpDQorIAlwdXRpdGhlcmUtPnR5cGVkX3ZhbF9mbG9hdC50eXBlID0gYnVpbHRpbl90eXBlX2xv bmdfZG91YmxlOw0KKyAgICAgICBlbHNlIGlmIChpc2RpZ2l0IChjKSB8fCBjID09ICcuJykNCisg CXB1dGl0aGVyZS0+dHlwZWRfdmFsX2Zsb2F0LnR5cGUgPSBidWlsdGluX3R5cGVfZG91YmxlOw0K KyAgICAgICBlbHNlDQorIAlyZXR1cm4gRVJST1I7DQorIA0KKyAgICAgICByZXR1cm4gRkxPQVQ7 DQorICAgICB9DQorIA0KKyAgIC8qIEhhbmRsZSBiYXNlLXN3aXRjaGluZyBwcmVmaXhlcyAweCwg MHQsIDBkLCAwICovDQorICAgaWYgKHBbMF0gPT0gJzAnKQ0KKyAgICAgc3dpdGNoIChwWzFdKQ0K KyAgICAgICB7DQorICAgICAgIGNhc2UgJ3gnOg0KKyAgICAgICBjYXNlICdYJzoNCisgCWlmIChs ZW4gPj0gMykNCisgCSAgew0KKyAJICAgIHAgKz0gMjsNCisgCSAgICBiYXNlID0gMTY7DQorIAkg ICAgbGVuIC09IDI7DQorIAkgIH0NCisgCWJyZWFrOw0KKyANCisgICAgICAgY2FzZSAndCc6DQor ICAgICAgIGNhc2UgJ1QnOg0KKyAgICAgICBjYXNlICdkJzoNCisgICAgICAgY2FzZSAnRCc6DQor IAlpZiAobGVuID49IDMpDQorIAkgIHsNCisgCSAgICBwICs9IDI7DQorIAkgICAgYmFzZSA9IDEw Ow0KKyAJICAgIGxlbiAtPSAyOw0KKyAJICB9DQorIAlicmVhazsNCisgDQorICAgICAgIGRlZmF1 bHQ6DQorIAliYXNlID0gODsNCisgCWJyZWFrOw0KKyAgICAgICB9DQorIA0KKyAgIHdoaWxlIChs ZW4tLSA+IDApDQorICAgICB7DQorICAgICAgIGMgPSAqcCsrOw0KKyAgICAgICBpZiAoYyA+PSAn QScgJiYgYyA8PSAnWicpDQorIAljICs9ICdhJyAtICdBJzsNCisgICAgICAgaWYgKGMgIT0gJ2wn ICYmIGMgIT0gJ3UnKQ0KKyAJbiAqPSBiYXNlOw0KKyAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8 PSAnOScpDQorIAl7DQorIAkgIGlmIChmb3VuZF9zdWZmaXgpDQorIAkgICAgcmV0dXJuIEVSUk9S Ow0KKyAJICBuICs9IGkgPSBjIC0gJzAnOw0KKyAJfQ0KKyAgICAgICBlbHNlDQorIAl7DQorIAkg IGlmIChiYXNlID4gMTAgJiYgYyA+PSAnYScgJiYgYyA8PSAnZicpDQorIAkgICAgew0KKyAJICAg ICAgaWYgKGZvdW5kX3N1ZmZpeCkNCisgCQlyZXR1cm4gRVJST1I7DQorIAkgICAgICBuICs9IGkg PSBjIC0gJ2EnICsgMTA7DQorIAkgICAgfQ0KKyAJICBlbHNlIGlmIChjID09ICdsJykNCisgCSAg ICB7DQorIAkgICAgICArK2xvbmdfcDsNCisgCSAgICAgIGZvdW5kX3N1ZmZpeCA9IDE7DQorIAkg ICAgfQ0KKyAJICBlbHNlIGlmIChjID09ICd1JykNCisgCSAgICB7DQorIAkgICAgICB1bnNpZ25l ZF9wID0gMTsNCisgCSAgICAgIGZvdW5kX3N1ZmZpeCA9IDE7DQorIAkgICAgfQ0KKyAJICBlbHNl DQorIAkgICAgcmV0dXJuIEVSUk9SOwkvKiBDaGFyIG5vdCBhIGRpZ2l0ICovDQorIAl9DQorICAg ICAgIGlmIChpID49IGJhc2UpDQorIAlyZXR1cm4gRVJST1I7CQkvKiBJbnZhbGlkIGRpZ2l0IGlu IHRoaXMgYmFzZSAqLw0KKyANCisgICAgICAgLyogUG9ydGFibHkgdGVzdCBmb3Igb3ZlcmZsb3cg KG9ubHkgd29ya3MgZm9yIG5vbnplcm8gdmFsdWVzLCBzbyBtYWtlDQorIAkgYSBzZWNvbmQgY2hl Y2sgZm9yIHplcm8pLiAgRklYTUU6IENhbid0IHdlIGp1c3QgbWFrZSBuIGFuZCBwcmV2bg0KKyAJ IHVuc2lnbmVkIGFuZCBhdm9pZCB0aGlzPyAgKi8NCisgICAgICAgaWYgKGMgIT0gJ2wnICYmIGMg IT0gJ3UnICYmIChwcmV2biA+PSBuKSAmJiBuICE9IDApDQorIAl1bnNpZ25lZF9wID0gMTsJCS8q IFRyeSBzb21ldGhpbmcgdW5zaWduZWQgKi8NCisgDQorICAgICAgIC8qIFBvcnRhYmx5IHRlc3Qg Zm9yIHVuc2lnbmVkIG92ZXJmbG93Lg0KKyAJIEZJWE1FOiBUaGlzIGNoZWNrIGlzIHdyb25nOyBm b3IgZXhhbXBsZSBpdCBkb2Vzbid0IGZpbmQgb3ZlcmZsb3cNCisgCSBvbiAweDEyMzQ1Njc4OSB3 aGVuIExPTkdFU1QgaXMgMzIgYml0cy4gICovDQorICAgICAgIGlmIChjICE9ICdsJyAmJiBjICE9 ICd1JyAmJiBuICE9IDApDQorIAl7CQ0KKyAJICBpZiAoKHVuc2lnbmVkX3AgJiYgKFVMT05HRVNU KSBwcmV2biA+PSAoVUxPTkdFU1QpIG4pKQ0KKyAJICAgIGVycm9yICgiTnVtZXJpYyBjb25zdGFu dCB0b28gbGFyZ2UuIik7DQorIAl9DQorICAgICAgIHByZXZuID0gbjsNCisgICAgIH0NCisgDQor ICAgLyogQW4gaW50ZWdlciBjb25zdGFudCBpcyBhbiBpbnQsIGEgbG9uZywgb3IgYSBsb25nIGxv bmcuICBBbiBMDQorICAgICAgc3VmZml4IGZvcmNlcyBpdCB0byBiZSBsb25nOyBhbiBMTCBzdWZm aXggZm9yY2VzIGl0IHRvIGJlIGxvbmcNCisgICAgICBsb25nLiAgSWYgbm90IGZvcmNlZCB0byBh IGxhcmdlciBzaXplLCBpdCBnZXRzIHRoZSBmaXJzdCB0eXBlIG9mDQorICAgICAgdGhlIGFib3Zl IHRoYXQgaXQgZml0cyBpbi4gIFRvIGZpZ3VyZSBvdXQgd2hldGhlciBpdCBmaXRzLCB3ZQ0KKyAg ICAgIHNoaWZ0IGl0IHJpZ2h0IGFuZCBzZWUgd2hldGhlciBhbnl0aGluZyByZW1haW5zLiAgTm90 ZSB0aGF0IHdlDQorICAgICAgY2FuJ3Qgc2hpZnQgc2l6ZW9mIChMT05HRVNUKSAqIEhPU1RfQ0hB Ul9CSVQgYml0cyBvciBtb3JlIGluIG9uZQ0KKyAgICAgIG9wZXJhdGlvbiwgYmVjYXVzZSBtYW55 IGNvbXBpbGVycyB3aWxsIHdhcm4gYWJvdXQgc3VjaCBhIHNoaWZ0DQorICAgICAgKHdoaWNoIGFs d2F5cyBwcm9kdWNlcyBhIHplcm8gcmVzdWx0KS4gIFNvbWV0aW1lcyBUQVJHRVRfSU5UX0JJVA0K KyAgICAgIG9yIFRBUkdFVF9MT05HX0JJVCB3aWxsIGJlIHRoYXQgYmlnLCBzb21ldGltZXMgbm90 LiAgVG8gZGVhbCB3aXRoDQorICAgICAgdGhlIGNhc2Ugd2hlcmUgaXQgaXMgd2UganVzdCBhbHdh eXMgc2hpZnQgdGhlIHZhbHVlIG1vcmUgdGhhbg0KKyAgICAgIG9uY2UsIHdpdGggZmV3ZXIgYml0 cyBlYWNoIHRpbWUuICAqLw0KKyANCisgICB1biA9IChVTE9OR0VTVCluID4+IDI7DQorICAgaWYg KGxvbmdfcCA9PSAwDQorICAgICAgICYmICh1biA+PiAoVEFSR0VUX0lOVF9CSVQgLSAyKSkgPT0g MCkNCisgICAgIHsNCisgICAgICAgaGlnaF9iaXQgPSAoKFVMT05HRVNUKTEpIDw8IChUQVJHRVRf SU5UX0JJVC0xKTsNCisgDQorICAgICAgIC8qIEEgbGFyZ2UgZGVjaW1hbCAobm90IGhleCBvciBv Y3RhbCkgY29uc3RhbnQgKGJldHdlZW4gSU5UX01BWA0KKyAJIGFuZCBVSU5UX01BWCkgaXMgYSBs b25nIG9yIHVuc2lnbmVkIGxvbmcsIGFjY29yZGluZyB0byBBTlNJLA0KKyAJIG5ldmVyIGFuIHVu c2lnbmVkIGludCwgYnV0IHRoaXMgY29kZSB0cmVhdHMgaXQgYXMgdW5zaWduZWQNCisgCSBpbnQu ICBUaGlzIHByb2JhYmx5IHNob3VsZCBiZSBmaXhlZC4gIEdDQyBnaXZlcyBhIHdhcm5pbmcgb24N CisgCSBzdWNoIGNvbnN0YW50cy4gICovDQorIA0KKyAgICAgICB1bnNpZ25lZF90eXBlID0gYnVp bHRpbl90eXBlX3Vuc2lnbmVkX2ludDsNCisgICAgICAgc2lnbmVkX3R5cGUgPSBidWlsdGluX3R5 cGVfaW50Ow0KKyAgICAgfQ0KKyAgIGVsc2UgaWYgKGxvbmdfcCA8PSAxDQorIAkgICAmJiAodW4g Pj4gKFRBUkdFVF9MT05HX0JJVCAtIDIpKSA9PSAwKQ0KKyAgICAgew0KKyAgICAgICBoaWdoX2Jp dCA9ICgoVUxPTkdFU1QpMSkgPDwgKFRBUkdFVF9MT05HX0JJVC0xKTsNCisgICAgICAgdW5zaWdu ZWRfdHlwZSA9IGJ1aWx0aW5fdHlwZV91bnNpZ25lZF9sb25nOw0KKyAgICAgICBzaWduZWRfdHlw ZSA9IGJ1aWx0aW5fdHlwZV9sb25nOw0KKyAgICAgfQ0KKyAgIGVsc2UNCisgICAgIHsNCisgICAg ICAgaGlnaF9iaXQgPSAoKChVTE9OR0VTVCkxKQ0KKyAJCSAgPDwgKFRBUkdFVF9MT05HX0xPTkdf QklUIC0gMzIgLSAxKQ0KKyAJCSAgPDwgMTYNCisgCQkgIDw8IDE2KTsNCisgICAgICAgaWYgKGhp Z2hfYml0ID09IDApDQorIAkvKiBBIGxvbmcgbG9uZyBkb2VzIG5vdCBmaXQgaW4gYSBMT05HRVNU LiAgKi8NCisgCWhpZ2hfYml0ID0NCisgCSAgKFVMT05HRVNUKTEgPDwgKHNpemVvZiAoTE9OR0VT VCkgKiBIT1NUX0NIQVJfQklUIC0gMSk7DQorICAgICAgIHVuc2lnbmVkX3R5cGUgPSBidWlsdGlu X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nOw0KKyAgICAgICBzaWduZWRfdHlwZSA9IGJ1aWx0aW5f dHlwZV9sb25nX2xvbmc7DQorICAgICB9DQorIA0KKyAgICBwdXRpdGhlcmUtPnR5cGVkX3ZhbF9p bnQudmFsID0gbjsNCisgDQorICAgIC8qIElmIHRoZSBoaWdoIGJpdCBvZiB0aGUgd29ya2VkIG91 dCB0eXBlIGlzIHNldCB0aGVuIHRoaXMgbnVtYmVyDQorICAgICAgIGhhcyB0byBiZSB1bnNpZ25l ZC4gKi8NCisgDQorICAgIGlmICh1bnNpZ25lZF9wIHx8IChuICYgaGlnaF9iaXQpKQ0KKyAgICAg IHsNCisgICAgICAgIHB1dGl0aGVyZS0+dHlwZWRfdmFsX2ludC50eXBlID0gdW5zaWduZWRfdHlw ZTsNCisgICAgICB9DQorICAgIGVsc2UNCisgICAgICB7DQorICAgICAgICBwdXRpdGhlcmUtPnR5 cGVkX3ZhbF9pbnQudHlwZSA9IHNpZ25lZF90eXBlOw0KKyAgICAgIH0NCisgDQorICAgIHJldHVy biBJTlQ7DQorIH0NCisgDQorIHN0cnVjdCB0b2tlbg0KKyB7DQorICAgY2hhciAqb3BlcmF0b3I7 DQorICAgaW50IHRva2VuOw0KKyAgIGVudW0gZXhwX29wY29kZSBvcGNvZGU7DQorIH07DQorIA0K KyBzdGF0aWMgY29uc3Qgc3RydWN0IHRva2VuIHRva2VudGFiM1tdID0NCisgICB7DQorICAgICB7 InNociIsIFJTSCwgQklOT1BfRU5EfSwNCisgICAgIHsic2hsIiwgTFNILCBCSU5PUF9FTkR9LA0K KyAgICAgeyJhbmQiLCBBTkRBTkQsIEJJTk9QX0VORH0sDQorICAgICB7ImRpdiIsIERJViwgQklO T1BfRU5EfSwNCisgICAgIHsibm90IiwgTk9ULCBCSU5PUF9FTkR9LA0KKyAgICAgeyJtb2QiLCBN T0QsIEJJTk9QX0VORH0sDQorICAgICB7ImluYyIsIElOQ1JFTUVOVCwgQklOT1BfRU5EfSwNCisg ICAgIHsiZGVjIiwgREVDUkVNRU5ULCBCSU5PUF9FTkR9LA0KKyAgICAgeyJ4b3IiLCBYT1IsIEJJ Tk9QX0VORH0NCisgICB9Ow0KKyANCisgc3RhdGljIGNvbnN0IHN0cnVjdCB0b2tlbiB0b2tlbnRh YjJbXSA9DQorICAgew0KKyAgICAgeyJvciIsIE9SLCBCSU5PUF9FTkR9LA0KKyAgICAgeyI8PiIs IE5PVEVRVUFMLCBCSU5PUF9FTkR9LA0KKyAgICAgeyI8PSIsIExFUSwgQklOT1BfRU5EfSwNCisg ICAgIHsiPj0iLCBHRVEsIEJJTk9QX0VORH0sDQorICAgICB7Ijo9IiwgQVNTSUdOLCBCSU5PUF9F TkR9DQorICAgfTsNCisgDQorIC8qIEFsbG9jYXRlIHVwcGVyY2FzZWQgdmFyICovDQorIC8qIG1h a2UgYW4gdXBwZXJjYXNlZCBjb3B5IG9mIHRva3N0YXJ0ICovDQorIHN0YXRpYyBjaGFyICogdXB0 b2sgKHRva3N0YXJ0LCBuYW1lbGVuKQ0KKyAgIGNoYXIgKnRva3N0YXJ0Ow0KKyAgIGludCBuYW1l bGVuOw0KKyB7DQorICAgaW50IGk7DQorICAgY2hhciAqdXB0b2tzdGFydCA9IChjaGFyICopbWFs bG9jKG5hbWVsZW4rMSk7DQorICAgZm9yIChpID0gMDtpIDw9IG5hbWVsZW47aSsrKQ0KKyAgICAg ew0KKyAgICAgICBpZiAoKHRva3N0YXJ0W2ldPj0nYScgJiYgdG9rc3RhcnRbaV08PSd6JykpDQor ICAgICAgICAgdXB0b2tzdGFydFtpXSA9IHRva3N0YXJ0W2ldLSgnYSctJ0EnKTsNCisgICAgICAg ZWxzZQ0KKyAgICAgICAgIHVwdG9rc3RhcnRbaV0gPSB0b2tzdGFydFtpXTsNCisgICAgIH0NCisg ICB1cHRva3N0YXJ0W25hbWVsZW5dPSdcMCc7DQorICAgcmV0dXJuIHVwdG9rc3RhcnQ7DQorIH0N CisgLyogUmVhZCBvbmUgdG9rZW4sIGdldHRpbmcgY2hhcmFjdGVycyB0aHJvdWdoIGxleHB0ci4g ICovDQorIA0KKyANCisgc3RhdGljIGludA0KKyB5eWxleCAoKQ0KKyB7DQorICAgaW50IGM7DQor ICAgaW50IG5hbWVsZW47DQorICAgdW5zaWduZWQgaW50IGk7DQorICAgY2hhciAqdG9rc3RhcnQ7 DQorICAgY2hhciAqdXB0b2tzdGFydDsNCisgICBjaGFyICp0b2twdHI7DQorICAgY2hhciAqcDsN CisgICBpbnQgdGVtcGJ1ZmluZGV4Ow0KKyAgIHN0YXRpYyBjaGFyICp0ZW1wYnVmOw0KKyAgIHN0 YXRpYyBpbnQgdGVtcGJ1ZnNpemU7DQorIA0KKyAgcmV0cnk6DQorIA0KKyAgIHRva3N0YXJ0ID0g bGV4cHRyOw0KKyAgIC8qIFNlZSBpZiBpdCBpcyBhIHNwZWNpYWwgdG9rZW4gb2YgbGVuZ3RoIDMu ICAqLw0KKyAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgdG9rZW50YWIzIC8gc2l6ZW9mIHRva2Vu dGFiM1swXTsgaSsrKQ0KKyAgICAgaWYgKFNUUkVRTiAodG9rc3RhcnQsIHRva2VudGFiM1tpXS5v cGVyYXRvciwgMykpDQorICAgICAgIHsNCisgCWxleHB0ciArPSAzOw0KKyAJeXlsdmFsLm9wY29k ZSA9IHRva2VudGFiM1tpXS5vcGNvZGU7DQorIAlyZXR1cm4gdG9rZW50YWIzW2ldLnRva2VuOw0K KyAgICAgICB9DQorIA0KKyAgIC8qIFNlZSBpZiBpdCBpcyBhIHNwZWNpYWwgdG9rZW4gb2YgbGVu Z3RoIDIuICAqLw0KKyAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgdG9rZW50YWIyIC8gc2l6ZW9m IHRva2VudGFiMlswXTsgaSsrKQ0KKyAgICAgaWYgKFNUUkVRTiAodG9rc3RhcnQsIHRva2VudGFi MltpXS5vcGVyYXRvciwgMikpDQorICAgICAgIHsNCisgCWxleHB0ciArPSAyOw0KKyAJeXlsdmFs Lm9wY29kZSA9IHRva2VudGFiMltpXS5vcGNvZGU7DQorIAlyZXR1cm4gdG9rZW50YWIyW2ldLnRv a2VuOw0KKyAgICAgICB9DQorIA0KKyAgIHN3aXRjaCAoYyA9ICp0b2tzdGFydCkNCisgICAgIHsN CisgICAgIGNhc2UgMDoNCisgICAgICAgcmV0dXJuIDA7DQorIA0KKyAgICAgY2FzZSAnICc6DQor ICAgICBjYXNlICdcdCc6DQorICAgICBjYXNlICdcbic6DQorICAgICAgIGxleHB0cisrOw0KKyAg ICAgICBnb3RvIHJldHJ5Ow0KKyANCisgICAgIGNhc2UgJ1wnJzoNCisgICAgICAgLyogV2UgZWl0 aGVyIGhhdmUgYSBjaGFyYWN0ZXIgY29uc3RhbnQgKCcwJyBvciAnXDE3NycgZm9yIGV4YW1wbGUp DQorIAkgb3Igd2UgaGF2ZSBhIHF1b3RlZCBzeW1ib2wgcmVmZXJlbmNlICgnZm9vKGludCxpbnQp JyBpbiBDKysNCisgCSBmb3IgZXhhbXBsZSkuICovDQorICAgICAgIGxleHB0cisrOw0KKyAgICAg ICBjID0gKmxleHB0cisrOw0KKyAgICAgICBpZiAoYyA9PSAnXFwnKQ0KKyAJYyA9IHBhcnNlX2Vz Y2FwZSAoJmxleHB0cik7DQorICAgICAgIGVsc2UgaWYgKGMgPT0gJ1wnJykNCisgCWVycm9yICgi RW1wdHkgY2hhcmFjdGVyIGNvbnN0YW50LiIpOw0KKyANCisgICAgICAgeXlsdmFsLnR5cGVkX3Zh bF9pbnQudmFsID0gYzsNCisgICAgICAgeXlsdmFsLnR5cGVkX3ZhbF9pbnQudHlwZSA9IGJ1aWx0 aW5fdHlwZV9jaGFyOw0KKyANCisgICAgICAgYyA9ICpsZXhwdHIrKzsNCisgICAgICAgaWYgKGMg IT0gJ1wnJykNCisgCXsNCisgCSAgbmFtZWxlbiA9IHNraXBfcXVvdGVkICh0b2tzdGFydCkgLSB0 b2tzdGFydDsNCisgCSAgaWYgKG5hbWVsZW4gPiAyKQ0KKyAJICAgIHsNCisgCSAgICAgIGxleHB0 ciA9IHRva3N0YXJ0ICsgbmFtZWxlbjsNCisgCSAgICAgIGlmIChsZXhwdHJbLTFdICE9ICdcJycp DQorIAkJZXJyb3IgKCJVbm1hdGNoZWQgc2luZ2xlIHF1b3RlLiIpOw0KKyAJICAgICAgbmFtZWxl biAtPSAyOw0KKyAgICAgICAgICAgICAgIHRva3N0YXJ0Kys7DQorICAgICAgICAgICAgICAgdXB0 b2tzdGFydCA9IHVwdG9rKHRva3N0YXJ0LG5hbWVsZW4pOw0KKyAJICAgICAgZ290byB0cnluYW1l Ow0KKyAJICAgIH0NCisgCSAgZXJyb3IgKCJJbnZhbGlkIGNoYXJhY3RlciBjb25zdGFudC4iKTsN CisgCX0NCisgICAgICAgcmV0dXJuIElOVDsNCisgDQorICAgICBjYXNlICcoJzoNCisgICAgICAg cGFyZW5fZGVwdGgrKzsNCisgICAgICAgbGV4cHRyKys7DQorICAgICAgIHJldHVybiBjOw0KKyAN CisgICAgIGNhc2UgJyknOg0KKyAgICAgICBpZiAocGFyZW5fZGVwdGggPT0gMCkNCisgCXJldHVy biAwOw0KKyAgICAgICBwYXJlbl9kZXB0aC0tOw0KKyAgICAgICBsZXhwdHIrKzsNCisgICAgICAg cmV0dXJuIGM7DQorIA0KKyAgICAgY2FzZSAnLCc6DQorICAgICAgIGlmIChjb21tYV90ZXJtaW5h dGVzICYmIHBhcmVuX2RlcHRoID09IDApDQorIAlyZXR1cm4gMDsNCisgICAgICAgbGV4cHRyKys7 DQorICAgICAgIHJldHVybiBjOw0KKyANCisgICAgIGNhc2UgJy4nOg0KKyAgICAgICAvKiBNaWdo dCBiZSBhIGZsb2F0aW5nIHBvaW50IG51bWJlci4gICovDQorICAgICAgIGlmIChsZXhwdHJbMV0g PCAnMCcgfHwgbGV4cHRyWzFdID4gJzknKQ0KKyAJZ290byBzeW1ib2w7CQkvKiBOb3BlLCBtdXN0 IGJlIGEgc3ltYm9sLiAqLw0KKyAgICAgICAvKiBGQUxMIFRIUlUgaW50byBudW1iZXIgY2FzZS4g ICovDQorIA0KKyAgICAgY2FzZSAnMCc6DQorICAgICBjYXNlICcxJzoNCisgICAgIGNhc2UgJzIn Og0KKyAgICAgY2FzZSAnMyc6DQorICAgICBjYXNlICc0JzoNCisgICAgIGNhc2UgJzUnOg0KKyAg ICAgY2FzZSAnNic6DQorICAgICBjYXNlICc3JzoNCisgICAgIGNhc2UgJzgnOg0KKyAgICAgY2Fz ZSAnOSc6DQorICAgICAgIHsNCisgCS8qIEl0J3MgYSBudW1iZXIuICAqLw0KKyAJaW50IGdvdF9k b3QgPSAwLCBnb3RfZSA9IDAsIHRva3R5cGU7DQorIAlyZWdpc3RlciBjaGFyICpwID0gdG9rc3Rh cnQ7DQorIAlpbnQgaGV4ID0gaW5wdXRfcmFkaXggPiAxMDsNCisgDQorIAlpZiAoYyA9PSAnMCcg JiYgKHBbMV0gPT0gJ3gnIHx8IHBbMV0gPT0gJ1gnKSkNCisgCSAgew0KKyAJICAgIHAgKz0gMjsN CisgCSAgICBoZXggPSAxOw0KKyAJICB9DQorIAllbHNlIGlmIChjID09ICcwJyAmJiAocFsxXT09 J3QnIHx8IHBbMV09PSdUJyB8fCBwWzFdPT0nZCcgfHwgcFsxXT09J0QnKSkNCisgCSAgew0KKyAJ ICAgIHAgKz0gMjsNCisgCSAgICBoZXggPSAwOw0KKyAJICB9DQorIA0KKyAJZm9yICg7OyArK3Ap DQorIAkgIHsNCisgCSAgICAvKiBUaGlzIHRlc3QgaW5jbHVkZXMgIWhleCBiZWNhdXNlICdlJyBp cyBhIHZhbGlkIGhleCBkaWdpdA0KKyAJICAgICAgIGFuZCB0aHVzIGRvZXMgbm90IGluZGljYXRl IGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHdoZW4NCisgCSAgICAgICB0aGUgcmFkaXggaXMgaGV4 LiAgKi8NCisgCSAgICBpZiAoIWhleCAmJiAhZ290X2UgJiYgKCpwID09ICdlJyB8fCAqcCA9PSAn RScpKQ0KKyAJICAgICAgZ290X2RvdCA9IGdvdF9lID0gMTsNCisgCSAgICAvKiBUaGlzIHRlc3Qg ZG9lcyBub3QgaW5jbHVkZSAhaGV4LCBiZWNhdXNlIGEgJy4nIGFsd2F5cyBpbmRpY2F0ZXMNCisg CSAgICAgICBhIGRlY2ltYWwgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHJlZ2FyZGxlc3Mgb2YgdGhl IHJhZGl4LiAgKi8NCisgCSAgICBlbHNlIGlmICghZ290X2RvdCAmJiAqcCA9PSAnLicpDQorIAkg ICAgICBnb3RfZG90ID0gMTsNCisgCSAgICBlbHNlIGlmIChnb3RfZSAmJiAocFstMV0gPT0gJ2Un IHx8IHBbLTFdID09ICdFJykNCisgCQkgICAgICYmICgqcCA9PSAnLScgfHwgKnAgPT0gJysnKSkN CisgCSAgICAgIC8qIFRoaXMgaXMgdGhlIHNpZ24gb2YgdGhlIGV4cG9uZW50LCBub3QgdGhlIGVu ZCBvZiB0aGUNCisgCQkgbnVtYmVyLiAgKi8NCisgCSAgICAgIGNvbnRpbnVlOw0KKyAJICAgIC8q IFdlIHdpbGwgdGFrZSBhbnkgbGV0dGVycyBvciBkaWdpdHMuICBwYXJzZV9udW1iZXIgd2lsbA0K KyAJICAgICAgIGNvbXBsYWluIGlmIHBhc3QgdGhlIHJhZGl4LCBvciBpZiBMIG9yIFUgYXJlIG5v dCBmaW5hbC4gICovDQorIAkgICAgZWxzZSBpZiAoKCpwIDwgJzAnIHx8ICpwID4gJzknKQ0KKyAJ CSAgICAgJiYgKCgqcCA8ICdhJyB8fCAqcCA+ICd6JykNCisgCQkJCSAgJiYgKCpwIDwgJ0EnIHx8 ICpwID4gJ1onKSkpDQorIAkgICAgICBicmVhazsNCisgCSAgfQ0KKyAJdG9rdHlwZSA9IHBhcnNl X251bWJlciAodG9rc3RhcnQsIHAgLSB0b2tzdGFydCwgZ290X2RvdHxnb3RfZSwgJnl5bHZhbCk7 DQorICAgICAgICAgaWYgKHRva3R5cGUgPT0gRVJST1IpDQorIAkgIHsNCisgCSAgICBjaGFyICpl cnJfY29weSA9IChjaGFyICopIGFsbG9jYSAocCAtIHRva3N0YXJ0ICsgMSk7DQorIA0KKyAJICAg IG1lbWNweSAoZXJyX2NvcHksIHRva3N0YXJ0LCBwIC0gdG9rc3RhcnQpOw0KKyAJICAgIGVycl9j b3B5W3AgLSB0b2tzdGFydF0gPSAwOw0KKyAJICAgIGVycm9yICgiSW52YWxpZCBudW1iZXIgXCIl c1wiLiIsIGVycl9jb3B5KTsNCisgCSAgfQ0KKyAJbGV4cHRyID0gcDsNCisgCXJldHVybiB0b2t0 eXBlOw0KKyAgICAgICB9DQorIA0KKyAgICAgY2FzZSAnKyc6DQorICAgICBjYXNlICctJzoNCisg ICAgIGNhc2UgJyonOg0KKyAgICAgY2FzZSAnLyc6DQorICAgICBjYXNlICd8JzoNCisgICAgIGNh c2UgJyYnOg0KKyAgICAgY2FzZSAnXic6DQorICAgICBjYXNlICd+JzoNCisgICAgIGNhc2UgJyEn Og0KKyAgICAgY2FzZSAnQCc6DQorICAgICBjYXNlICc8JzoNCisgICAgIGNhc2UgJz4nOg0KKyAg ICAgY2FzZSAnWyc6DQorICAgICBjYXNlICddJzoNCisgICAgIGNhc2UgJz8nOg0KKyAgICAgY2Fz ZSAnOic6DQorICAgICBjYXNlICc9JzoNCisgICAgIGNhc2UgJ3snOg0KKyAgICAgY2FzZSAnfSc6 DQorICAgICBzeW1ib2w6DQorICAgICAgIGxleHB0cisrOw0KKyAgICAgICByZXR1cm4gYzsNCisg DQorICAgICBjYXNlICciJzoNCisgDQorICAgICAgIC8qIEJ1aWxkIHRoZSBnZGIgaW50ZXJuYWwg Zm9ybSBvZiB0aGUgaW5wdXQgc3RyaW5nIGluIHRlbXBidWYsDQorIAkgdHJhbnNsYXRpbmcgYW55 IHN0YW5kYXJkIEMgZXNjYXBlIGZvcm1zIHNlZW4uICBOb3RlIHRoYXQgdGhlDQorIAkgYnVmZmVy IGlzIG51bGwgYnl0ZSB0ZXJtaW5hdGVkICpvbmx5KiBmb3IgdGhlIGNvbnZlbmllbmNlIG9mDQor IAkgZGVidWdnaW5nIGdkYiBpdHNlbGYgYW5kIHByaW50aW5nIHRoZSBidWZmZXIgY29udGVudHMg d2hlbg0KKyAJIHRoZSBidWZmZXIgY29udGFpbnMgbm8gZW1iZWRkZWQgbnVsbHMuICBHZGIgZG9l cyBub3QgZGVwZW5kDQorIAkgdXBvbiB0aGUgYnVmZmVyIGJlaW5nIG51bGwgYnl0ZSB0ZXJtaW5h dGVkLCBpdCB1c2VzIHRoZSBsZW5ndGgNCisgCSBzdHJpbmcgaW5zdGVhZC4gIFRoaXMgYWxsb3dz IGdkYiB0byBoYW5kbGUgQyBzdHJpbmdzIChhcyB3ZWxsDQorIAkgYXMgc3RyaW5ncyBpbiBvdGhl ciBsYW5ndWFnZXMpIHdpdGggZW1iZWRkZWQgbnVsbCBieXRlcyAqLw0KKyANCisgICAgICAgdG9r cHRyID0gKyt0b2tzdGFydDsNCisgICAgICAgdGVtcGJ1ZmluZGV4ID0gMDsNCisgDQorICAgICAg IGRvIHsNCisgCS8qIEdyb3cgdGhlIHN0YXRpYyB0ZW1wIGJ1ZmZlciBpZiBuZWNlc3NhcnksIGlu Y2x1ZGluZyBhbGxvY2F0aW5nDQorIAkgICB0aGUgZmlyc3Qgb25lIG9uIGRlbWFuZC4gKi8NCisg CWlmICh0ZW1wYnVmaW5kZXggKyAxID49IHRlbXBidWZzaXplKQ0KKyAJICB7DQorIAkgICAgdGVt cGJ1ZiA9IChjaGFyICopIHJlYWxsb2MgKHRlbXBidWYsIHRlbXBidWZzaXplICs9IDY0KTsNCisg CSAgfQ0KKyAJc3dpdGNoICgqdG9rcHRyKQ0KKyAJICB7DQorIAkgIGNhc2UgJ1wwJzoNCisgCSAg Y2FzZSAnIic6DQorIAkgICAgLyogRG8gbm90aGluZywgbG9vcCB3aWxsIHRlcm1pbmF0ZS4gKi8N CisgCSAgICBicmVhazsNCisgCSAgY2FzZSAnXFwnOg0KKyAJICAgIHRva3B0cisrOw0KKyAJICAg IGMgPSBwYXJzZV9lc2NhcGUgKCZ0b2twdHIpOw0KKyAJICAgIGlmIChjID09IC0xKQ0KKyAJICAg ICAgew0KKyAJCWNvbnRpbnVlOw0KKyAJICAgICAgfQ0KKyAJICAgIHRlbXBidWZbdGVtcGJ1Zmlu ZGV4KytdID0gYzsNCisgCSAgICBicmVhazsNCisgCSAgZGVmYXVsdDoNCisgCSAgICB0ZW1wYnVm W3RlbXBidWZpbmRleCsrXSA9ICp0b2twdHIrKzsNCisgCSAgICBicmVhazsNCisgCSAgfQ0KKyAg ICAgICB9IHdoaWxlICgoKnRva3B0ciAhPSAnIicpICYmICgqdG9rcHRyICE9ICdcMCcpKTsNCisg ICAgICAgaWYgKCp0b2twdHIrKyAhPSAnIicpDQorIAl7DQorIAkgIGVycm9yICgiVW50ZXJtaW5h dGVkIHN0cmluZyBpbiBleHByZXNzaW9uLiIpOw0KKyAJfQ0KKyAgICAgICB0ZW1wYnVmW3RlbXBi dWZpbmRleF0gPSAnXDAnOwkvKiBTZWUgbm90ZSBhYm92ZSAqLw0KKyAgICAgICB5eWx2YWwuc3Zh bC5wdHIgPSB0ZW1wYnVmOw0KKyAgICAgICB5eWx2YWwuc3ZhbC5sZW5ndGggPSB0ZW1wYnVmaW5k ZXg7DQorICAgICAgIGxleHB0ciA9IHRva3B0cjsNCisgICAgICAgcmV0dXJuIChTVFJJTkcpOw0K KyAgICAgfQ0KKyANCisgICBpZiAoIShjID09ICdfJyB8fCBjID09ICckJw0KKyAJfHwgKGMgPj0g J2EnICYmIGMgPD0gJ3onKSB8fCAoYyA+PSAnQScgJiYgYyA8PSAnWicpKSkNCisgICAgIC8qIFdl IG11c3QgaGF2ZSBjb21lIGFjcm9zcyBhIGJhZCBjaGFyYWN0ZXIgKGUuZy4gJzsnKS4gICovDQor ICAgICBlcnJvciAoIkludmFsaWQgY2hhcmFjdGVyICclYycgaW4gZXhwcmVzc2lvbi4iLCBjKTsN CisgDQorICAgLyogSXQncyBhIG5hbWUuICBTZWUgaG93IGxvbmcgaXQgaXMuICAqLw0KKyAgIG5h bWVsZW4gPSAwOw0KKyAgIGZvciAoYyA9IHRva3N0YXJ0W25hbWVsZW5dOw0KKyAgICAgICAgKGMg PT0gJ18nIHx8IGMgPT0gJyQnIHx8IChjID49ICcwJyAmJiBjIDw9ICc5JykNCisgCXx8IChjID49 ICdhJyAmJiBjIDw9ICd6JykgfHwgKGMgPj0gJ0EnICYmIGMgPD0gJ1onKSB8fCBjID09ICc8Jyk7 KQ0KKyAgICAgew0KKyAgICAgICAvKiBUZW1wbGF0ZSBwYXJhbWV0ZXIgbGlzdHMgYXJlIHBhcnQg b2YgdGhlIG5hbWUuDQorIAkgRklYTUU6IFRoaXMgbWlzaGFuZGxlcyBgcHJpbnQgJGE8NCYmJGE+ MycuICAqLw0KKyAgICAgICBpZiAoYyA9PSAnPCcpDQorIAl7DQorIAkgIGludCBpID0gbmFtZWxl bjsNCisgCSAgaW50IG5lc3RpbmdfbGV2ZWwgPSAxOw0KKyAJICB3aGlsZSAodG9rc3RhcnRbKytp XSkNCisgCSAgICB7DQorIAkgICAgICBpZiAodG9rc3RhcnRbaV0gPT0gJzwnKQ0KKyAJCW5lc3Rp bmdfbGV2ZWwrKzsNCisgCSAgICAgIGVsc2UgaWYgKHRva3N0YXJ0W2ldID09ICc+JykNCisgCQl7 DQorIAkJICBpZiAoLS1uZXN0aW5nX2xldmVsID09IDApDQorIAkJICAgIGJyZWFrOw0KKyAJCX0N CisgCSAgICB9DQorIAkgIGlmICh0b2tzdGFydFtpXSA9PSAnPicpDQorIAkgICAgbmFtZWxlbiA9 IGk7DQorIAkgIGVsc2UNCisgCSAgICBicmVhazsNCisgCX0NCisgDQorICAgICAgIC8qIGRvIE5P VCB1cHBlcmNhc2UgaW50ZXJuYWxzIGJlY2F1c2Ugb2YgcmVnaXN0ZXJzICEhISAqLw0KKyAgICAg ICBjID0gdG9rc3RhcnRbKytuYW1lbGVuXTsNCisgICAgIH0NCisgDQorICAgdXB0b2tzdGFydCA9 IHVwdG9rKHRva3N0YXJ0LG5hbWVsZW4pOw0KKyANCisgICAvKiBUaGUgdG9rZW4gImlmIiB0ZXJt aW5hdGVzIHRoZSBleHByZXNzaW9uIGFuZCBpcyBOT1QNCisgICAgICByZW1vdmVkIGZyb20gdGhl IGlucHV0IHN0cmVhbS4gICovDQorICAgaWYgKG5hbWVsZW4gPT0gMiAmJiB1cHRva3N0YXJ0WzBd ID09ICdJJyAmJiB1cHRva3N0YXJ0WzFdID09ICdGJykNCisgICAgIHsNCisgICAgICAgcmV0dXJu IDA7DQorICAgICB9DQorIA0KKyAgIGxleHB0ciArPSBuYW1lbGVuOw0KKyANCisgICB0cnluYW1l Og0KKyANCisgICAvKiBDYXRjaCBzcGVjaWZpYyBrZXl3b3Jkcy4gIFNob3VsZCBiZSBkb25lIHdp dGggYSBkYXRhIHN0cnVjdHVyZS4gICovDQorICAgc3dpdGNoIChuYW1lbGVuKQ0KKyAgICAgew0K KyAgICAgY2FzZSA2Og0KKyAgICAgICBpZiAoU1RSRVEgKHVwdG9rc3RhcnQsICJPQkpFQ1QiKSkN CisgCXJldHVybiBDTEFTUzsNCisgICAgICAgaWYgKFNUUkVRICh1cHRva3N0YXJ0LCAiUkVDT1JE IikpDQorIAlyZXR1cm4gU1RSVUNUOw0KKyAgICAgICBpZiAoU1RSRVEgKHVwdG9rc3RhcnQsICJT SVpFT0YiKSkNCisgCXJldHVybiBTSVpFT0Y7DQorICAgICAgIGJyZWFrOw0KKyAgICAgY2FzZSA1 Og0KKyAgICAgICBpZiAoU1RSRVEgKHVwdG9rc3RhcnQsICJDTEFTUyIpKQ0KKyAJcmV0dXJuIENM QVNTOw0KKyAgICAgICBpZiAoU1RSRVEgKHVwdG9rc3RhcnQsICJGQUxTRSIpKQ0KKyAJew0KKyAg ICAgICAgICAgeXlsdmFsLmx2YWwgPSAwOw0KKyAgICAgICAgICAgcmV0dXJuIEZBTFNFOw0KKyAg ICAgICAgIH0NCisgICAgICAgYnJlYWs7DQorICAgICBjYXNlIDQ6DQorICAgICAgIGlmIChTVFJF USAodXB0b2tzdGFydCwgIlRSVUUiKSkNCisgCXsNCisgICAgICAgICAgIHl5bHZhbC5sdmFsID0g MTsNCisgICAJICByZXR1cm4gVFJVRTsNCisgICAgICAgICB9DQorICAgICAgIGlmIChTVFJFUSAo dXB0b2tzdGFydCwgIlNFTEYiKSkNCisgICAgICAgICB7DQorICAgICAgICAgICAvKiBoZXJlIHdl IHNlYXJjaCBmb3IgJ3RoaXMnIGxpa2UNCisgICAgICAgICAgICAgIGluc2VydGVkIGluIEZQQyBz dGFicyBkZWJ1ZyBpbmZvICovDQorIAkgIHN0YXRpYyBjb25zdCBjaGFyIHRoaXNfbmFtZVtdID0N CisgCQkJCSB7IC8qIENQTFVTX01BUktFUiwqLyAndCcsICdoJywgJ2knLCAncycsICdcMCcgfTsN CisgDQorIAkgIGlmIChsb29rdXBfc3ltYm9sICh0aGlzX25hbWUsIGV4cHJlc3Npb25fY29udGV4 dF9ibG9jaywNCisgCQkJICAgICBWQVJfTkFNRVNQQUNFLCAoaW50ICopIE5VTEwsDQorIAkJCSAg ICAgKHN0cnVjdCBzeW10YWIgKiopIE5VTEwpKQ0KKyAJICAgIHJldHVybiBUSElTOw0KKyAJfQ0K KyAgICAgICBicmVhazsNCisgICAgIGRlZmF1bHQ6DQorICAgICAgIGJyZWFrOw0KKyAgICAgfQ0K KyANCisgICB5eWx2YWwuc3ZhbC5wdHIgPSB0b2tzdGFydDsNCisgICB5eWx2YWwuc3ZhbC5sZW5n dGggPSBuYW1lbGVuOw0KKyANCisgICBpZiAoKnRva3N0YXJ0ID09ICckJykNCisgICAgIHsNCisg ICAgICAgLyogJCBpcyB0aGUgbm9ybWFsIHByZWZpeCBmb3IgcGFzY2FsIGhleGFkZWNpbWFsIHZh bHVlcw0KKyAgICAgICAgIGJ1dCB0aGlzIGNvbmZsaWN0cyB3aXRoIHRoZSBHREIgdXNlIGZvciBk ZWJ1Z2dlciB2YXJpYWJsZXMNCisgICAgICAgICBzbyBpbiBleHByZXNzaW9uIHRvIGVudGVyIGhl eGFkZWNpbWFsIHZhbHVlcw0KKyAgICAgICAgIHdlIHN0aWxsIG5lZWQgdG8gdXNlIEMgc3ludGF4 IHdpdGggMHhmZiAgKi8NCisgICAgICAgd3JpdGVfZG9sbGFyX3ZhcmlhYmxlICh5eWx2YWwuc3Zh bCk7DQorICAgICAgIHJldHVybiBWQVJJQUJMRTsNCisgICAgIH0NCisgDQorICAgLyogVXNlIHRv a2VuLXR5cGUgQkxPQ0tOQU1FIGZvciBzeW1ib2xzIHRoYXQgaGFwcGVuIHRvIGJlIGRlZmluZWQg YXMNCisgICAgICBmdW5jdGlvbnMgb3Igc3ltdGFicy4gIElmIHRoaXMgaXMgbm90IHNvLCB0aGVu IC4uLg0KKyAgICAgIFVzZSB0b2tlbi10eXBlIFRZUEVOQU1FIGZvciBzeW1ib2xzIHRoYXQgaGFw cGVuIHRvIGJlIGRlZmluZWQNCisgICAgICBjdXJyZW50bHkgYXMgbmFtZXMgb2YgdHlwZXM7IE5B TUUgZm9yIG90aGVyIHN5bWJvbHMuDQorICAgICAgVGhlIGNhbGxlciBpcyBub3QgY29uc3RyYWlu ZWQgdG8gY2FyZSBhYm91dCB0aGUgZGlzdGluY3Rpb24uICAqLw0KKyAgIHsNCisgICAgIGNoYXIg KnRtcCA9IGNvcHlfbmFtZSAoeXlsdmFsLnN2YWwpOw0KKyAgICAgc3RydWN0IHN5bWJvbCAqc3lt Ow0KKyAgICAgaW50IGlzX2FfZmllbGRfb2ZfdGhpcyA9IDA7DQorICAgICBpbnQgaGV4dHlwZTsN CisgDQorICAgICBzeW0gPSBsb29rdXBfc3ltYm9sICh0bXAsIGV4cHJlc3Npb25fY29udGV4dF9i bG9jaywNCisgCQkJIFZBUl9OQU1FU1BBQ0UsDQorIAkJCSAmaXNfYV9maWVsZF9vZl90aGlzLA0K KyAJCQkgKHN0cnVjdCBzeW10YWIgKiopIE5VTEwpOw0KKyAgICAgLyogc2Vjb25kIGNoYW5jZSB1 cHBlcmNhc2VkICEgKi8NCisgICAgIGlmICghc3ltKQ0KKyAgICAgICB7DQorICAgICAgICBmb3Ig KGkgPSAwO2kgPD0gbmFtZWxlbjtpKyspDQorICAgICAgICAgIHsNCisgICAgICAgICAgICBpZiAo KHRtcFtpXT49J2EnICYmIHRtcFtpXTw9J3onKSkNCisgICAgICAgICAgICAgIHRtcFtpXSAtPSAo J2EnLSdBJyk7DQorICAgICAgICAgICAgLyogSSBhbSBub3Qgc3VyZSB0aGF0IGNvcHlfbmFtZSBn aXZlcyBleGNhdGx5IHRoZSBzYW1lIHJlc3VsdCAhICovDQorICAgICAgICAgICAgaWYgKCh0b2tz dGFydFtpXT49J2EnICYmIHRva3N0YXJ0W2ldPD0neicpKQ0KKyAgICAgICAgICAgICAgdG9rc3Rh cnRbaV0gLT0gKCdhJy0nQScpOw0KKyAgICAgICAgICB9DQorICAgICAgICAgc3ltID0gbG9va3Vw X3N5bWJvbCAodG1wLCBleHByZXNzaW9uX2NvbnRleHRfYmxvY2ssDQorIAkJCSBWQVJfTkFNRVNQ QUNFLA0KKyAJCQkgJmlzX2FfZmllbGRfb2ZfdGhpcywNCisgCQkJIChzdHJ1Y3Qgc3ltdGFiICoq KSBOVUxMKTsNCisgICAgICAgfQ0KKyAgICAgLyogQ2FsbCBsb29rdXBfc3ltdGFiLCBub3QgbG9v a3VwX3BhcnRpYWxfc3ltdGFiLCBpbiBjYXNlIHRoZXJlIGFyZQ0KKyAgICAgICAgbm8gcHN5bXRh YnMgKGNvZmYsIHhjb2ZmLCBvciBzb21lIGZ1dHVyZSBjaGFuZ2UgdG8gYmxvdyBhd2F5IHRoZQ0K KyAgICAgICAgcHN5bXRhYnMgb25jZSBvbmNlIHN5bWJvbHMgYXJlIHJlYWQpLiAgKi8NCisgICAg IGlmICgoc3ltICYmIFNZTUJPTF9DTEFTUyAoc3ltKSA9PSBMT0NfQkxPQ0spIHx8DQorICAgICAg ICAgbG9va3VwX3N5bXRhYiAodG1wKSkNCisgICAgICAgew0KKyAJeXlsdmFsLnNzeW0uc3ltID0g c3ltOw0KKyAJeXlsdmFsLnNzeW0uaXNfYV9maWVsZF9vZl90aGlzID0gaXNfYV9maWVsZF9vZl90 aGlzOw0KKyAJcmV0dXJuIEJMT0NLTkFNRTsNCisgICAgICAgfQ0KKyAgICAgaWYgKHN5bSAmJiBT WU1CT0xfQ0xBU1MgKHN5bSkgPT0gTE9DX1RZUEVERUYpDQorICAgICAgICAgew0KKyAjaWYgMQ0K KyAJICAvKiBEZXNwaXRlIHRoZSBmb2xsb3dpbmcgZmxhdywgd2UgbmVlZCB0byBrZWVwIHRoaXMg Y29kZSBlbmFibGVkLg0KKyAJICAgICBCZWNhdXNlIHdlIGNhbiBnZXQgY2FsbGVkIGZyb20gY2hl Y2tfc3R1Yl9tZXRob2QsIGlmIHdlIGRvbid0DQorIAkgICAgIGhhbmRsZSBuZXN0ZWQgdHlwZXMg dGhlbiBpdCBzY3Jld3MgbWFueSBvcGVyYXRpb25zIGluIGFueQ0KKyAJICAgICBwcm9ncmFtIHdo aWNoIHVzZXMgbmVzdGVkIHR5cGVzLiAgKi8NCisgCSAgLyogSW4gIkE6OngiLCBpZiB4IGlzIGEg bWVtYmVyIGZ1bmN0aW9uIG9mIEEgYW5kIHRoZXJlIGhhcHBlbnMNCisgCSAgICAgdG8gYmUgYSB0 eXBlIChuZXN0ZWQgb3Igbm90LCBzaW5jZSB0aGUgc3RhYnMgZG9uJ3QgbWFrZSB0aGF0DQorIAkg ICAgIGRpc3RpbmN0aW9uKSBuYW1lZCB4LCB0aGVuIHRoaXMgY29kZSBpbmNvcnJlY3RseSB0aGlu a3Mgd2UNCisgCSAgICAgYXJlIGRlYWxpbmcgd2l0aCBuZXN0ZWQgdHlwZXMgcmF0aGVyIHRoYW4g YSBtZW1iZXIgZnVuY3Rpb24uICAqLw0KKyANCisgCSAgY2hhciAqcDsNCisgCSAgY2hhciAqbmFt ZXN0YXJ0Ow0KKyAJICBzdHJ1Y3Qgc3ltYm9sICpiZXN0X3N5bTsNCisgDQorIAkgIC8qIExvb2sg YWhlYWQgdG8gZGV0ZWN0IG5lc3RlZCB0eXBlcy4gIFRoaXMgcHJvYmFibHkgc2hvdWxkIGJlDQor IAkgICAgIGRvbmUgaW4gdGhlIGdyYW1tYXIsIGJ1dCB0cnlpbmcgc2VlbWVkIHRvIGludHJvZHVj ZSBhIGxvdA0KKyAJICAgICBvZiBzaGlmdC9yZWR1Y2UgYW5kIHJlZHVjZS9yZWR1Y2UgY29uZmxp Y3RzLiAgSXQncyBwb3NzaWJsZQ0KKyAJICAgICB0aGF0IGl0IGNvdWxkIGJlIGRvbmUsIHRob3Vn aC4gIE9yIHBlcmhhcHMgYSBub24tZ3JhbW1hciwgYnV0DQorIAkgICAgIGxlc3MgYWQgaG9jLCBh cHByb2FjaCB3b3VsZCB3b3JrIHdlbGwuICAqLw0KKyANCisgCSAgLyogU2luY2Ugd2UgZG8gbm90 IGN1cnJlbnRseSBoYXZlIGFueSB3YXkgb2YgZGlzdGluZ3Vpc2hpbmcNCisgCSAgICAgYSBuZXN0 ZWQgdHlwZSBmcm9tIGEgbm9uLW5lc3RlZCBvbmUgKHRoZSBzdGFicyBkb24ndCB0ZWxsDQorIAkg ICAgIHVzIHdoZXRoZXIgYSB0eXBlIGlzIG5lc3RlZCksIHdlIGp1c3QgaWdub3JlIHRoZQ0KKyAJ ICAgICBjb250YWluaW5nIHR5cGUuICAqLw0KKyANCisgCSAgcCA9IGxleHB0cjsNCisgCSAgYmVz dF9zeW0gPSBzeW07DQorIAkgIHdoaWxlICgxKQ0KKyAJICAgIHsNCisgCSAgICAgIC8qIFNraXAg d2hpdGVzcGFjZS4gICovDQorIAkgICAgICB3aGlsZSAoKnAgPT0gJyAnIHx8ICpwID09ICdcdCcg fHwgKnAgPT0gJ1xuJykNCisgCQkrK3A7DQorIAkgICAgICBpZiAoKnAgPT0gJzonICYmIHBbMV0g PT0gJzonKQ0KKyAJCXsNCisgCQkgIC8qIFNraXAgdGhlIGA6OicuICAqLw0KKyAJCSAgcCArPSAy Ow0KKyAJCSAgLyogU2tpcCB3aGl0ZXNwYWNlLiAgKi8NCisgCQkgIHdoaWxlICgqcCA9PSAnICcg fHwgKnAgPT0gJ1x0JyB8fCAqcCA9PSAnXG4nKQ0KKyAJCSAgICArK3A7DQorIAkJICBuYW1lc3Rh cnQgPSBwOw0KKyAJCSAgd2hpbGUgKCpwID09ICdfJyB8fCAqcCA9PSAnJCcgfHwgKCpwID49ICcw JyAmJiAqcCA8PSAnOScpDQorIAkJCSB8fCAoKnAgPj0gJ2EnICYmICpwIDw9ICd6JykNCisgCQkJ IHx8ICgqcCA+PSAnQScgJiYgKnAgPD0gJ1onKSkNCisgCQkgICAgKytwOw0KKyAJCSAgaWYgKHAg IT0gbmFtZXN0YXJ0KQ0KKyAJCSAgICB7DQorIAkJICAgICAgc3RydWN0IHN5bWJvbCAqY3VyX3N5 bTsNCisgCQkgICAgICAvKiBBcyBiaWcgYXMgdGhlIHdob2xlIHJlc3Qgb2YgdGhlIGV4cHJlc3Np b24sIHdoaWNoIGlzDQorIAkJCSBhdCBsZWFzdCBiaWcgZW5vdWdoLiAgKi8NCisgCQkgICAgICBj aGFyICpuY29weSA9IGFsbG9jYSAoc3RybGVuICh0bXApK3N0cmxlbiAobmFtZXN0YXJ0KSszKTsN CisgCQkgICAgICBjaGFyICp0bXAxOw0KKyANCisgCQkgICAgICB0bXAxID0gbmNvcHk7DQorIAkJ ICAgICAgbWVtY3B5ICh0bXAxLCB0bXAsIHN0cmxlbiAodG1wKSk7DQorIAkJICAgICAgdG1wMSAr PSBzdHJsZW4gKHRtcCk7DQorIAkJICAgICAgbWVtY3B5ICh0bXAxLCAiOjoiLCAyKTsNCisgCQkg ICAgICB0bXAxICs9IDI7DQorIAkJICAgICAgbWVtY3B5ICh0bXAxLCBuYW1lc3RhcnQsIHAgLSBu YW1lc3RhcnQpOw0KKyAJCSAgICAgIHRtcDFbcCAtIG5hbWVzdGFydF0gPSAnXDAnOw0KKyAJCSAg ICAgIGN1cl9zeW0gPSBsb29rdXBfc3ltYm9sIChuY29weSwgZXhwcmVzc2lvbl9jb250ZXh0X2Js b2NrLA0KKyAJCQkJCSAgICAgICBWQVJfTkFNRVNQQUNFLCAoaW50ICopIE5VTEwsDQorIAkJCQkJ ICAgICAgIChzdHJ1Y3Qgc3ltdGFiICoqKSBOVUxMKTsNCisgCQkgICAgICBpZiAoY3VyX3N5bSkN CisgCQkJew0KKyAJCQkgIGlmIChTWU1CT0xfQ0xBU1MgKGN1cl9zeW0pID09IExPQ19UWVBFREVG KQ0KKyAJCQkgICAgew0KKyAJCQkgICAgICBiZXN0X3N5bSA9IGN1cl9zeW07DQorIAkJCSAgICAg IGxleHB0ciA9IHA7DQorIAkJCSAgICB9DQorIAkJCSAgZWxzZQ0KKyAJCQkgICAgYnJlYWs7DQor IAkJCX0NCisgCQkgICAgICBlbHNlDQorIAkJCWJyZWFrOw0KKyAJCSAgICB9DQorIAkJICBlbHNl DQorIAkJICAgIGJyZWFrOw0KKyAJCX0NCisgCSAgICAgIGVsc2UNCisgCQlicmVhazsNCisgCSAg ICB9DQorIA0KKyAJICB5eWx2YWwudHN5bS50eXBlID0gU1lNQk9MX1RZUEUgKGJlc3Rfc3ltKTsN CisgI2Vsc2UgLyogbm90IDAgKi8NCisgCSAgeXlsdmFsLnRzeW0udHlwZSA9IFNZTUJPTF9UWVBF IChzeW0pOw0KKyAjZW5kaWYgLyogbm90IDAgKi8NCisgCSAgcmV0dXJuIFRZUEVOQU1FOw0KKyAg ICAgICAgIH0NCisgICAgIGlmICgoeXlsdmFsLnRzeW0udHlwZSA9IGxvb2t1cF9wcmltaXRpdmVf dHlwZW5hbWUgKHRtcCkpICE9IDApDQorIAlyZXR1cm4gVFlQRU5BTUU7DQorIA0KKyAgICAgLyog SW5wdXQgbmFtZXMgdGhhdCBhcmVuJ3Qgc3ltYm9scyBidXQgQVJFIHZhbGlkIGhleCBudW1iZXJz LA0KKyAgICAgICAgd2hlbiB0aGUgaW5wdXQgcmFkaXggcGVybWl0cyB0aGVtLCBjYW4gYmUgbmFt ZXMgb3IgbnVtYmVycw0KKyAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSBwYXJzZS4gIE5vdGUgd2Ug c3VwcG9ydCByYWRpeGVzID4gMTYgaGVyZS4gICovDQorICAgICBpZiAoIXN5bSAmJg0KKyAgICAg ICAgICgodG9rc3RhcnRbMF0gPj0gJ2EnICYmIHRva3N0YXJ0WzBdIDwgJ2EnICsgaW5wdXRfcmFk aXggLSAxMCkgfHwNCisgICAgICAgICAgKHRva3N0YXJ0WzBdID49ICdBJyAmJiB0b2tzdGFydFsw XSA8ICdBJyArIGlucHV0X3JhZGl4IC0gMTApKSkNCisgICAgICAgew0KKyAgCVlZU1RZUEUgbmV3 bHZhbDsJLyogSXRzIHZhbHVlIGlzIGlnbm9yZWQuICAqLw0KKyAJaGV4dHlwZSA9IHBhcnNlX251 bWJlciAodG9rc3RhcnQsIG5hbWVsZW4sIDAsICZuZXdsdmFsKTsNCisgCWlmIChoZXh0eXBlID09 IElOVCkNCisgCSAgew0KKyAJICAgIHl5bHZhbC5zc3ltLnN5bSA9IHN5bTsNCisgCSAgICB5eWx2 YWwuc3N5bS5pc19hX2ZpZWxkX29mX3RoaXMgPSBpc19hX2ZpZWxkX29mX3RoaXM7DQorIAkgICAg cmV0dXJuIE5BTUVfT1JfSU5UOw0KKyAJICB9DQorICAgICAgIH0NCisgDQorICAgICBmcmVlKHVw dG9rc3RhcnQpOw0KKyAgICAgLyogQW55IG90aGVyIGtpbmQgb2Ygc3ltYm9sICovDQorICAgICB5 eWx2YWwuc3N5bS5zeW0gPSBzeW07DQorICAgICB5eWx2YWwuc3N5bS5pc19hX2ZpZWxkX29mX3Ro aXMgPSBpc19hX2ZpZWxkX29mX3RoaXM7DQorICAgICByZXR1cm4gTkFNRTsNCisgICB9DQorIH0N CisgDQorIHZvaWQNCisgeXllcnJvciAobXNnKQ0KKyAgICAgIGNoYXIgKm1zZzsNCisgew0KKyAg IGVycm9yICgiQSAlcyBpbiBleHByZXNzaW9uLCBuZWFyIGAlcycuIiwgKG1zZyA/IG1zZyA6ICJl cnJvciIpLCBsZXhwdHIpOw0KKyB9DQorIC8qDQorICAgJExvZzogcC1leHAueSx2ICQNCisgICBS ZXZpc2lvbiAxLjIgIDE5OTkvMTAvMDUgMDY6MTU6MzEgIHBpZXJyZQ0KKyAgICAqIHAgJ1Rlc3Qn IGFuZCBTZWxmIHByb2JsZW0gZml4ZWQNCisgDQorICAgUmV2aXNpb24gMS4xICAxOTk5LzA5LzA3 IDExOjQwOjE5ICBwaWVycmUNCisgICAgRmlyc3QgaW1wb3J0IG9mIHBhc2NhbCBnZGIgNC4xOCBj aGFuZ2VzDQorIA0KKyAgIFJldmlzaW9uIDEuMSAgMTk5OS8wMS8yNSAyMDozMDozMSAgcGV0ZXIN CisgICAgICsgZmlyc3QgdmVyc2lvbg0KKyANCisgICBSZXZpc2lvbiAxLjMgIDE5OTkvMDEvMTgg MTA6MTQ6MTYgIHBpZXJyZQ0KKyAgICAqIHdvcmtpbmcgdmVyc2lvbiBmb3IgdGVzdGdkYg0KKyAN CisgICBSZXZpc2lvbiAxLjMgIDE5OTkvMDEvMDYgMDk6MzA6MDQgIFBpZXJyZQ0KKyAgIEZQVSBh bmQgTU1YIGFkZC1vbg0KKyANCisgICBSZXZpc2lvbiAxLjIgIDE5OTgvMTIvMjMgMTU6NTM6MDYg IFBpZXJyZQ0KKyAgIGV4Y2VwdGlvbnMgYW5kIGZsb2F0aW5mbw0KKyANCisgICBSZXZpc2lvbiAx LjEgIDE5OTgvMTIvMTggMTg6MjU6NDkgIHBpZXJyZQ0KKyAgIGZpcnN0IERKR1BQIHY0LjE2IGZv ciBwYXNjYWwgd2l0aCBleGNlcHRpb24gZGVidWdnaW5nIGNhcGFiaWxpdGllcw0KKyANCisgICBS ZXZpc2lvbiAxLjEgIDE5OTgvMDkvMTggMTI6Mzc6MzkgIHBpZXJyZQ0KKyAqLw0KKioqIHAtbGFu Zy5oLm9yaQlGcmkgTWFyICAzIDE0OjIzOjMwIDIwMDANCi0tLSBwLWxhbmcuaAlGcmkgTWFyICAz IDEyOjQ5OjQwIDIwMDANCioqKioqKioqKioqKioqKg0KKioqIDAgKioqKg0KLS0tIDEsODQgLS0t LQ0KKyAvKiBDIGxhbmd1YWdlIHN1cHBvcnQgZGVmaW5pdGlvbnMgZm9yIEdEQiwgdGhlIEdOVSBk ZWJ1Z2dlci4NCisgICAgQ29weXJpZ2h0IDE5OTIsIDE5OTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuDQorIA0KKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuDQorIA0KKyAgICBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQ0KKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KKyAgICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKyANCisgICAgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m DQorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUNCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4NCisgDQorICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQorICAgIEZvdW5kYXRpb24sIEluYy4s IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu ICAqLw0KKyANCisgI2lmZGVmIF9fU1REQ19fCQkJLyogRm9yd2FyZCBkZWNscyBmb3IgcHJvdG90 eXBlcyAqLw0KKyBzdHJ1Y3QgdmFsdWU7DQorICNlbmRpZg0KKyANCisgZXh0ZXJuIGludA0KKyBw YXNfcGFyc2UgUEFSQU1TICgodm9pZCkpOwkvKiBEZWZpbmVkIGluIHAtZXhwLnkgKi8NCisgDQor IGV4dGVybiB2b2lkDQorIHBhc19lcnJvciBQQVJBTVMgKChjaGFyICopKTsJLyogRGVmaW5lZCBp biBwLWV4cC55ICovDQorIA0KKyBleHRlcm4gdm9pZAkJCS8qIERlZmluZWQgaW4gcC10eXBlcHJp bnQuYyAqLw0KKyBwYXNfcHJpbnRfdHlwZSBQQVJBTVMgKChzdHJ1Y3QgdHlwZSAqLCBjaGFyICos IHN0cnVjdCB1aV9maWxlICosIGludCwgaW50KSk7DQorIA0KKyBleHRlcm4gaW50DQorIHBhc192 YWxfcHJpbnQgUEFSQU1TICgoc3RydWN0IHR5cGUgKiwgY2hhciAqLCBpbnQsIENPUkVfQUREUiwg c3RydWN0IHVpX2ZpbGUgKiwgaW50LCBpbnQsDQorIAkJICAgICAgIGludCwgZW51bSB2YWxfcHJl dHR5cHJpbnQpKTsNCisgDQorIGV4dGVybiBpbnQNCisgcGFzX3ZhbHVlX3ByaW50IFBBUkFNUyAo KHN0cnVjdCB2YWx1ZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsIGVudW0gdmFsX3ByZXR0eXBy aW50KSk7DQorIA0KKyBleHRlcm4gdm9pZA0KKyBwYXNfdHlwZV9wcmludF9tZXRob2RfYXJncyBQ QVJBTVMgKChjaGFyICosIGNoYXIgKiwNCisgCQkJCSAgICBzdHJ1Y3QgdWlfZmlsZSAqKSk7DQor IA0KKyAvKiBUaGVzZSBhcmUgaW4gcC1sYW5nLmM6ICovDQorIA0KKyBleHRlcm4gdm9pZCBwYXNf cHJpbnRjaGFyIFBBUkFNUyAoKGludCwgc3RydWN0IHVpX2ZpbGUgKikpOw0KKyANCisgZXh0ZXJu IHZvaWQgcGFzX3ByaW50c3RyIFBBUkFNUyAoKHN0cnVjdCB1aV9maWxlICosIGNoYXIgKiwgdW5z aWduZWQgaW50LCBpbnQsIGludCkpOw0KKyANCisgZXh0ZXJuIHN0cnVjdCB0eXBlICpwYXNfY3Jl YXRlX2Z1bmRhbWVudGFsX3R5cGUgUEFSQU1TICgoc3RydWN0IG9iamZpbGUgKiwgaW50KSk7DQor IA0KKyBleHRlcm4gc3RydWN0IHR5cGUgKipjb25zdCAocGFzX2J1aWx0aW5fdHlwZXNbXSk7DQor IC8qIGV4dGVybiBzdHJ1Y3QgdHlwZSAqKiBjb25zdCAoY19idWlsdGluX3R5cGVzW10pOyAqLw0K KyANCisgLyogVGhlc2UgYXJlIGluIHAtdHlwZXByaW50LmM6ICovDQorIA0KKyBleHRlcm4gdm9p ZA0KKyBwYXNfdHlwZV9wcmludF9iYXNlIFBBUkFNUyAoKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1 aV9maWxlICosIGludCwgaW50KSk7DQorIA0KKyBleHRlcm4gdm9pZA0KKyBwYXNfdHlwZV9wcmlu dF92YXJzcGVjX3ByZWZpeCBQQVJBTVMgKChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAq LCBpbnQsIGludCkpOw0KKyANCisgLyogVGhlc2UgYXJlIGluIGNwLXZhbHByaW50LmMgKi8NCisg DQorIGV4dGVybiBpbnQgdnRibHByaW50OwkJLyogQ29udHJvbHMgcHJpbnRpbmcgb2YgdnRibCdz ICovDQorIA0KKyBleHRlcm4gaW50IHN0YXRpY19maWVsZF9wcmludDsNCisgDQorIGV4dGVybiB2 b2lkDQorIHBhc19jcF9wcmludF9jbGFzc19tZW1iZXIgUEFSQU1TICgoY2hhciAqLCBzdHJ1Y3Qg dHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLCBjaGFyICopKTsNCisgDQorIGV4dGVybiB2b2lkDQor IHBhc19jcF9wcmludF9jbGFzc19tZXRob2QgUEFSQU1TICgoY2hhciAqLCBzdHJ1Y3QgdHlwZSAq LCBzdHJ1Y3QgdWlfZmlsZSAqKSk7DQorIA0KKyBleHRlcm4gdm9pZA0KKyBwYXNfY3BfcHJpbnRf dmFsdWVfZmllbGRzIFBBUkFNUyAoKHN0cnVjdCB0eXBlICosIGNoYXIgKiwgQ09SRV9BRERSLA0K KyAJCQkgICBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsIGludCwgZW51bSB2YWxfcHJldHR5cHJpbnQs DQorIAkJCQkgICBzdHJ1Y3QgdHlwZSAqKiwgaW50KSk7DQorIA0KKyBleHRlcm4gaW50DQorIHBh c19jcF9pc192dGJsX3B0cl90eXBlIFBBUkFNUyAoKHN0cnVjdCB0eXBlICopKTsNCisgDQorIGV4 dGVybiBpbnQNCisgcGFzX2NwX2lzX3Z0YmxfbWVtYmVyIFBBUkFNUyAoKHN0cnVjdCB0eXBlICop KTsNCioqKiBwLWxhbmcuYy5vcmkJRnJpIE1hciAgMyAxNDoyMzozMCAyMDAwDQotLS0gcC1sYW5n LmMJRnJpIE1hciAgMyAxMzoyMzoyOCAyMDAwDQoqKioqKioqKioqKioqKioNCioqKiAwICoqKioN Ci0tLSAxLDQ1NiAtLS0tDQorIC8qDQorICAgIE1vZGlmaWNhdGlvbnMgZm9yIEZQQyBzdXBwb3J0 DQorICAgICRJZDogcC1sYW5nLmMsdiAxLjEgMTk5OS8wOS8wNyAxMTo0MDoxOSBwaWVycmUgRXhw ICQNCisgICovDQorIC8qIEMgbGFuZ3VhZ2Ugc3VwcG9ydCByb3V0aW5lcyBmb3IgR0RCLCB0aGUg R05VIGRlYnVnZ2VyLg0KKyAgICBDb3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4NCisgDQorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4N CisgDQorICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQorICAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQor ICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorIA0KKyAgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwN CisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YNCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLg0KKyANCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisgICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCisgICAgRm91bmRh dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx LTEzMDcsIFVTQS4gICovDQorIA0KKyAjaW5jbHVkZSAiZGVmcy5oIg0KKyAjaW5jbHVkZSAic3lt dGFiLmgiDQorICNpbmNsdWRlICJnZGJ0eXBlcy5oIg0KKyAjaW5jbHVkZSAiZXhwcmVzc2lvbi5o Ig0KKyAjaW5jbHVkZSAicGFyc2VyLWRlZnMuaCINCisgI2luY2x1ZGUgImxhbmd1YWdlLmgiDQor ICNpbmNsdWRlICJwLWxhbmcuaCINCisgI2luY2x1ZGUgInZhbHByaW50LmgiDQorIA0KKyBleHRl cm4gdm9pZCBfaW5pdGlhbGl6ZV9wYXNfbGFuZ3VhZ2UgUEFSQU1TICgodm9pZCkpOw0KKyBzdGF0 aWMgdm9pZCBwYXNfb25lX2NoYXIgUEFSQU1TICgoaW50LCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQg KikpOw0KKyANCisgLyogUHJpbnQgdGhlIGNoYXJhY3RlciBDIG9uIFNUUkVBTSBhcyBwYXJ0IG9m IHRoZSBjb250ZW50cyBvZiBhIGxpdGVyYWwNCisgICAgc3RyaW5nLg0KKyAgICBJbl9xdW90ZXMg aXMgcmVzZXQgdG8gMCBpZiBhIGNoYXIgaXMgd3JpdHRlbiB3aXRoICM0IG5vdGF0aW9uICovDQor IA0KKyBzdGF0aWMgdm9pZA0KKyBwYXNfb25lX2NoYXIgKGMsIHN0cmVhbSwgaW5fcXVvdGVzKQ0K KyAgICAgIHJlZ2lzdGVyIGludCBjOw0KKyAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW07DQor ICAgICAgaW50ICppbl9xdW90ZXM7DQorIHsNCisgDQorICAgYyAmPSAweEZGOwkJCS8qIEF2b2lk IHNpZ24gYml0IGZvbGxpZXMgKi8NCisgDQorICAgaWYgKChjID09ICdcJycpIHx8IChQUklOVF9M SVRFUkFMX0ZPUk0gKGMpKSkNCisgICAgIHsNCisgICAgICAgaWYgKCEoKmluX3F1b3RlcykpDQor IAlmcHV0c19maWx0ZXJlZCAoIiciLCBzdHJlYW0pOw0KKyAgICAgICAqaW5fcXVvdGVzID0gMTsN CisgICAgICAgaWYgKGMgPT0gJ1wnJykNCisgCXsNCisgCSAgZnB1dHNfZmlsdGVyZWQgKCInJyIs IHN0cmVhbSk7DQorIAl9DQorICAgICAgIGVsc2UNCisgCWZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgIiVjIiwgYyk7DQorICAgICB9DQorICAgZWxzZQ0KKyAgICAgew0KKyAgICAgICBpZiAoKmlu X3F1b3RlcykNCisgCWZwdXRzX2ZpbHRlcmVkICgiJyIsIHN0cmVhbSk7DQorICAgICAgICppbl9x dW90ZXMgPSAwOw0KKyAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIjJWQiLCAodW5z aWduZWQgaW50KSBjKTsNCisgICAgIH0NCisgfQ0KKyANCisgc3RhdGljIHZvaWQgcGFzX2VtaXRf Y2hhciBQQVJBTVMgKChpbnQgYywgc3RydWN0IHVpX2ZpbGUgKiBzdHJlYW0sIGludCBxdW90ZXIp KTsNCisgDQorIC8qIFByaW50IHRoZSBjaGFyYWN0ZXIgQyBvbiBTVFJFQU0gYXMgcGFydCBvZiB0 aGUgY29udGVudHMgb2YgYSBsaXRlcmFsDQorICAgIHN0cmluZyB3aG9zZSBkZWxpbWl0ZXIgaXMg UVVPVEVSLiAgTm90ZSB0aGF0IHRoYXQgZm9ybWF0IGZvciBwcmludGluZw0KKyAgICBjaGFyYWN0 ZXJzIGFuZCBzdHJpbmdzIGlzIGxhbmd1YWdlIHNwZWNpZmljLiAqLw0KKyANCisgc3RhdGljIHZv aWQNCisgcGFzX2VtaXRfY2hhciAoYywgc3RyZWFtLCBxdW90ZXIpDQorICAgICAgcmVnaXN0ZXIg aW50IGM7DQorICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsNCisgICAgICBpbnQgcXVvdGVy Ow0KKyB7DQorICAgaW50IGluX3F1b3RlcyA9IDA7DQorICAgcGFzX29uZV9jaGFyIChjLCBzdHJl YW0sICZpbl9xdW90ZXMpOw0KKyAgIGlmIChpbl9xdW90ZXMpDQorICAgICBmcHV0c19maWx0ZXJl ZCAoIiciLCBzdHJlYW0pOw0KKyB9DQorIA0KKyB2b2lkDQorIHBhc19wcmludGNoYXIgKGMsIHN0 cmVhbSkNCisgICAgICBpbnQgYzsNCisgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtOw0KKyB7 DQorICAgaW50IGluX3F1b3RlcyA9IDA7DQorICAgcGFzX29uZV9jaGFyIChjLCBzdHJlYW0sICZp bl9xdW90ZXMpOw0KKyAgIGlmIChpbl9xdW90ZXMpDQorICAgICBmcHV0c19maWx0ZXJlZCAoIici LCBzdHJlYW0pOw0KKyB9DQorIA0KKyAvKiBQcmludCB0aGUgY2hhcmFjdGVyIHN0cmluZyBTVFJJ TkcsIHByaW50aW5nIGF0IG1vc3QgTEVOR1RIIGNoYXJhY3RlcnMuDQorICAgIFByaW50aW5nIHN0 b3BzIGVhcmx5IGlmIHRoZSBudW1iZXIgaGl0cyBwcmludF9tYXg7IHJlcGVhdCBjb3VudHMNCisg ICAgYXJlIHByaW50ZWQgYXMgYXBwcm9wcmlhdGUuICBQcmludCBlbGxpcHNlcyBhdCB0aGUgZW5k IGlmIHdlDQorICAgIGhhZCB0byBzdG9wIGJlZm9yZSBwcmludGluZyBMRU5HVEggY2hhcmFjdGVy cywgb3IgaWYgRk9SQ0VfRUxMSVBTRVMuICAqLw0KKyANCisgdm9pZA0KKyBwYXNfcHJpbnRzdHIg KHN0cmVhbSwgc3RyaW5nLCBsZW5ndGgsIHdpZHRoLCBmb3JjZV9lbGxpcHNlcykNCisgICAgICBz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtOw0KKyAgICAgIGNoYXIgKnN0cmluZzsNCisgICAgICB1bnNp Z25lZCBpbnQgbGVuZ3RoOw0KKyAgICAgIGludCB3aWR0aDsNCisgICAgICBpbnQgZm9yY2VfZWxs aXBzZXM7DQorIHsNCisgICByZWdpc3RlciB1bnNpZ25lZCBpbnQgaTsNCisgICB1bnNpZ25lZCBp bnQgdGhpbmdzX3ByaW50ZWQgPSAwOw0KKyAgIGludCBpbl9xdW90ZXMgPSAwOw0KKyAgIGludCBu ZWVkX2NvbW1hID0gMDsNCisgICBleHRlcm4gaW50IGluc3BlY3RfaXQ7DQorIA0KKyAgIC8qIElm IHRoZSBzdHJpbmcgd2FzIG5vdCB0cnVuY2F0ZWQgZHVlIHRvIGBzZXQgcHJpbnQgZWxlbWVudHMn LCBhbmQNCisgICAgICB0aGUgbGFzdCBieXRlIG9mIGl0IGlzIGEgbnVsbCwgd2UgZG9uJ3QgcHJp bnQgdGhhdCwgaW4gdHJhZGl0aW9uYWwgQw0KKyAgICAgIHN0eWxlLiAgKi8NCisgICBpZiAoKCFm b3JjZV9lbGxpcHNlcykgJiYgbGVuZ3RoID4gMCAmJiBzdHJpbmdbbGVuZ3RoIC0gMV0gPT0gJ1ww JykNCisgICAgIGxlbmd0aC0tOw0KKyANCisgICBpZiAobGVuZ3RoID09IDApDQorICAgICB7DQor ICAgICAgIGZwdXRzX2ZpbHRlcmVkICgiJyciLCBzdHJlYW0pOw0KKyAgICAgICByZXR1cm47DQor ICAgICB9DQorIA0KKyAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGggJiYgdGhpbmdzX3ByaW50ZWQg PCBwcmludF9tYXg7ICsraSkNCisgICAgIHsNCisgICAgICAgLyogUG9zaXRpb24gb2YgdGhlIGNo YXJhY3RlciB3ZSBhcmUgZXhhbWluaW5nDQorICAgICAgICAgIHRvIHNlZSB3aGV0aGVyIGl0IGlz IHJlcGVhdGVkLiAgKi8NCisgICAgICAgdW5zaWduZWQgaW50IHJlcDE7DQorICAgICAgIC8qIE51 bWJlciBvZiByZXBldGl0aW9ucyB3ZSBoYXZlIGRldGVjdGVkIHNvIGZhci4gICovDQorICAgICAg IHVuc2lnbmVkIGludCByZXBzOw0KKyANCisgICAgICAgUVVJVDsNCisgDQorICAgICAgIGlmIChu ZWVkX2NvbW1hKQ0KKyAJew0KKyAJICBmcHV0c19maWx0ZXJlZCAoIiwgIiwgc3RyZWFtKTsNCisg CSAgbmVlZF9jb21tYSA9IDA7DQorIAl9DQorIA0KKyAgICAgICByZXAxID0gaSArIDE7DQorICAg ICAgIHJlcHMgPSAxOw0KKyAgICAgICB3aGlsZSAocmVwMSA8IGxlbmd0aCAmJiBzdHJpbmdbcmVw MV0gPT0gc3RyaW5nW2ldKQ0KKyAJew0KKyAJICArK3JlcDE7DQorIAkgICsrcmVwczsNCisgCX0N CisgDQorICAgICAgIGlmIChyZXBzID4gcmVwZWF0X2NvdW50X3RocmVzaG9sZCkNCisgCXsNCisg CSAgaWYgKGluX3F1b3RlcykNCisgCSAgICB7DQorIAkgICAgICBpZiAoaW5zcGVjdF9pdCkNCisg CQlmcHV0c19maWx0ZXJlZCAoIlxcJywgIiwgc3RyZWFtKTsNCisgCSAgICAgIGVsc2UNCisgCQlm cHV0c19maWx0ZXJlZCAoIicsICIsIHN0cmVhbSk7DQorIAkgICAgICBpbl9xdW90ZXMgPSAwOw0K KyAJICAgIH0NCisgCSAgcGFzX3ByaW50Y2hhciAoc3RyaW5nW2ldLCBzdHJlYW0pOw0KKyAJICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIgPHJlcGVhdHMgJXUgdGltZXM+IiwgcmVwcyk7DQor IAkgIGkgPSByZXAxIC0gMTsNCisgCSAgdGhpbmdzX3ByaW50ZWQgKz0gcmVwZWF0X2NvdW50X3Ro cmVzaG9sZDsNCisgCSAgbmVlZF9jb21tYSA9IDE7DQorIAl9DQorICAgICAgIGVsc2UNCisgCXsN CisgCSAgaW50IGMgPSBzdHJpbmdbaV07DQorIAkgIGlmICgoIWluX3F1b3RlcykgJiYgKFBSSU5U X0xJVEVSQUxfRk9STSAoYykpKQ0KKyAJICAgIHsNCisgCSAgICAgIGlmIChpbnNwZWN0X2l0KQ0K KyAJCWZwdXRzX2ZpbHRlcmVkICgiXFwnIiwgc3RyZWFtKTsNCisgCSAgICAgIGVsc2UNCisgCQlm cHV0c19maWx0ZXJlZCAoIiciLCBzdHJlYW0pOw0KKyAJICAgICAgaW5fcXVvdGVzID0gMTsNCisg CSAgICB9DQorIAkgIHBhc19vbmVfY2hhciAoYywgc3RyZWFtLCAmaW5fcXVvdGVzKTsNCisgCSAg Kyt0aGluZ3NfcHJpbnRlZDsNCisgCX0NCisgICAgIH0NCisgDQorICAgLyogVGVybWluYXRlIHRo ZSBxdW90ZXMgaWYgbmVjZXNzYXJ5LiAgKi8NCisgICBpZiAoaW5fcXVvdGVzKQ0KKyAgICAgew0K KyAgICAgICBpZiAoaW5zcGVjdF9pdCkNCisgCWZwdXRzX2ZpbHRlcmVkICgiXFwnIiwgc3RyZWFt KTsNCisgICAgICAgZWxzZQ0KKyAJZnB1dHNfZmlsdGVyZWQgKCInIiwgc3RyZWFtKTsNCisgICAg IH0NCisgDQorICAgaWYgKGZvcmNlX2VsbGlwc2VzIHx8IGkgPCBsZW5ndGgpDQorICAgICBmcHV0 c19maWx0ZXJlZCAoIi4uLiIsIHN0cmVhbSk7DQorIH0NCisgDQorIC8qIENyZWF0ZSBhIGZ1bmRh bWVudGFsIEMgdHlwZSB1c2luZyBkZWZhdWx0IHJlYXNvbmFibGUgZm9yIHRoZSBjdXJyZW50DQor ICAgIHRhcmdldCBtYWNoaW5lLg0KKyANCisgICAgU29tZSBvYmplY3QvZGVidWdnaW5nIGZpbGUg Zm9ybWF0cyAoRFdBUkYgdmVyc2lvbiAxLCBDT0ZGLCBldGMpIGRvIG5vdA0KKyAgICBkZWZpbmUg ZnVuZGFtZW50YWwgdHlwZXMgc3VjaCBhcyAiaW50IiBvciAiZG91YmxlIi4gIE90aGVycyAoc3Rh YnMgb3INCisgICAgRFdBUkYgdmVyc2lvbiAyLCBldGMpIGRvIGRlZmluZSBmdW5kYW1lbnRhbCB0 eXBlcy4gIEZvciB0aGUgZm9ybWF0cyB3aGljaA0KKyAgICBkb24ndCBwcm92aWRlIGZ1bmRhbWVu dGFsIHR5cGVzLCBnZGIgY2FuIGNyZWF0ZSBzdWNoIHR5cGVzIHVzaW5nIHRoaXMNCisgICAgZnVu Y3Rpb24uDQorIA0KKyAgICBGSVhNRTogIFNvbWUgY29tcGlsZXJzIGRpc3Rpbmd1aXNoIGV4cGxp Y2l0bHkgc2lnbmVkIGludGVncmFsIHR5cGVzDQorICAgIChzaWduZWQgc2hvcnQsIHNpZ25lZCBp bnQsIHNpZ25lZCBsb25nKSBmcm9tICJyZWd1bGFyIiBpbnRlZ3JhbCB0eXBlcw0KKyAgICAoc2hv cnQsIGludCwgbG9uZykgaW4gdGhlIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4gIFRoZXJlIGlzIHNv bWUgZGlzLQ0KKyAgICBhZ3JlZW1lbnQgYXMgdG8gaG93IHVzZWZ1bCB0aGlzIGZlYXR1cmUgaXMu ICBJbiBwYXJ0aWN1bGFyLCBnY2MgZG9lcw0KKyAgICBub3Qgc3VwcG9ydCB0aGlzLiAgQWxzbywg b25seSBzb21lIGRlYnVnZ2luZyBmb3JtYXRzIGFsbG93IHRoZQ0KKyAgICBkaXN0aW5jdGlvbiB0 byBiZSBwYXNzZWQgb24gdG8gYSBkZWJ1Z2dlci4gIEZvciBub3csIHdlIGFsd2F5cyBqdXN0DQor ICAgIHVzZSAic2hvcnQiLCAiaW50Iiwgb3IgImxvbmciIGFzIHRoZSB0eXBlIG5hbWUsIGZvciBi b3RoIHRoZSBpbXBsaWNpdA0KKyAgICBhbmQgZXhwbGljaXRseSBzaWduZWQgdHlwZXMuICBUaGlz IGFsc28gbWFrZXMgbGlmZSBlYXNpZXIgZm9yIHRoZQ0KKyAgICBnZGIgdGVzdCBzdWl0ZSBzaW5j ZSB3ZSBkb24ndCBoYXZlIHRvIGFjY291bnQgZm9yIHRoZSBkaWZmZXJlbmNlcw0KKyAgICBpbiBv dXRwdXQgZGVwZW5kaW5nIHVwb24gd2hhdCB0aGUgY29tcGlsZXIgYW5kIGRlYnVnZ2luZyBmb3Jt YXQNCisgICAgc3VwcG9ydC4gIFdlIHdpbGwgcHJvYmFibHkgaGF2ZSB0byByZS1leGFtaW5lIHRo ZSBpc3N1ZSB3aGVuIGdkYg0KKyAgICBzdGFydHMgdGFraW5nIGl0J3MgZnVuZGFtZW50YWwgdHlw ZSBpbmZvcm1hdGlvbiBkaXJlY3RseSBmcm9tIHRoZQ0KKyAgICBkZWJ1Z2dpbmcgaW5mb3JtYXRp b24gc3VwcGxpZWQgYnkgdGhlIGNvbXBpbGVyLiAgZm5mQGN5Z251cy5jb20gKi8NCisgDQorIHN0 cnVjdCB0eXBlICoNCisgcGFzX2NyZWF0ZV9mdW5kYW1lbnRhbF90eXBlIChvYmpmaWxlLCB0eXBl aWQpDQorICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7DQorICAgICAgaW50IHR5cGVpZDsN Cisgew0KKyAgIHJlZ2lzdGVyIHN0cnVjdCB0eXBlICp0eXBlID0gTlVMTDsNCisgDQorICAgc3dp dGNoICh0eXBlaWQpDQorICAgICB7DQorICAgICBkZWZhdWx0Og0KKyAgICAgICAvKiBGSVhNRTog IEZvciBub3csIGlmIHdlIGFyZSBhc2tlZCB0byBwcm9kdWNlIGEgdHlwZSBub3QgaW4gdGhpcw0K KyAgICAgICAgICBsYW5ndWFnZSwgY3JlYXRlIHRoZSBlcXVpdmFsZW50IG9mIGEgQyBpbnRlZ2Vy IHR5cGUgd2l0aCB0aGUNCisgICAgICAgICAgbmFtZSAiPD90eXBlPz4iLiAgV2hlbiBhbGwgdGhl IGR1c3Qgc2V0dGxlcyBmcm9tIHRoZSB0eXBlDQorICAgICAgICAgIHJlY29uc3RydWN0aW9uIHdv cmssIHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlY29tZSBhbiBlcnJvci4gKi8NCisgICAgICAgdHlw ZSA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lOVCwNCisgCQkJVEFSR0VUX0lOVF9CSVQgLyBUQVJH RVRfQ0hBUl9CSVQsDQorIAkJCTAsICI8P3R5cGU/PiIsIG9iamZpbGUpOw0KKyAgICAgICB3YXJu aW5nICgiaW50ZXJuYWwgZXJyb3I6IG5vIEMvQysrIGZ1bmRhbWVudGFsIHR5cGUgJWQiLCB0eXBl aWQpOw0KKyAgICAgICBicmVhazsNCisgICAgIGNhc2UgRlRfVk9JRDoNCisgICAgICAgdHlwZSA9 IGluaXRfdHlwZSAoVFlQRV9DT0RFX1ZPSUQsDQorIAkJCVRBUkdFVF9DSEFSX0JJVCAvIFRBUkdF VF9DSEFSX0JJVCwNCisgCQkJMCwgInZvaWQiLCBvYmpmaWxlKTsNCisgICAgICAgYnJlYWs7DQor ICAgICBjYXNlIEZUX0NIQVI6DQorICAgICAgIHR5cGUgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9J TlQsDQorIAkJCVRBUkdFVF9DSEFSX0JJVCAvIFRBUkdFVF9DSEFSX0JJVCwNCisgCQkJMCwgImNo YXIiLCBvYmpmaWxlKTsNCisgICAgICAgYnJlYWs7DQorICAgICBjYXNlIEZUX1NJR05FRF9DSEFS Og0KKyAgICAgICB0eXBlID0gaW5pdF90eXBlIChUWVBFX0NPREVfSU5ULA0KKyAJCQlUQVJHRVRf Q0hBUl9CSVQgLyBUQVJHRVRfQ0hBUl9CSVQsDQorIAkJCTAsICJzaG9ydGludCIsIG9iamZpbGUp Ow0KKyAgICAgICBicmVhazsNCisgICAgIGNhc2UgRlRfVU5TSUdORURfQ0hBUjoNCisgICAgICAg dHlwZSA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lOVCwNCisgCQkJVEFSR0VUX0NIQVJfQklUIC8g VEFSR0VUX0NIQVJfQklULA0KKyAJCQlUWVBFX0ZMQUdfVU5TSUdORUQsICJieXRlIiwgb2JqZmls ZSk7DQorICAgICAgIGJyZWFrOw0KKyAgICAgY2FzZSBGVF9TSE9SVDoNCisgICAgICAgdHlwZSA9 IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lOVCwNCisgCQkJVEFSR0VUX1NIT1JUX0JJVCAvIFRBUkdF VF9DSEFSX0JJVCwNCisgCQkJMCwgImludGVnZXIiLCBvYmpmaWxlKTsNCisgICAgICAgYnJlYWs7 DQorICAgICBjYXNlIEZUX1NJR05FRF9TSE9SVDoNCisgICAgICAgdHlwZSA9IGluaXRfdHlwZSAo VFlQRV9DT0RFX0lOVCwNCisgCQkJVEFSR0VUX1NIT1JUX0JJVCAvIFRBUkdFVF9DSEFSX0JJVCwN CisgCQkJMCwgImludGVnZXIiLCBvYmpmaWxlKTsJCS8qIEZJWE1FLWZuZiAqLw0KKyAgICAgICBi cmVhazsNCisgICAgIGNhc2UgRlRfVU5TSUdORURfU0hPUlQ6DQorICAgICAgIHR5cGUgPSBpbml0 X3R5cGUgKFRZUEVfQ09ERV9JTlQsDQorIAkJCVRBUkdFVF9TSE9SVF9CSVQgLyBUQVJHRVRfQ0hB Ul9CSVQsDQorIAkJCVRZUEVfRkxBR19VTlNJR05FRCwgIndvcmQiLCBvYmpmaWxlKTsNCisgICAg ICAgYnJlYWs7DQorICAgICBjYXNlIEZUX0lOVEVHRVI6DQorICAgICAgIHR5cGUgPSBpbml0X3R5 cGUgKFRZUEVfQ09ERV9JTlQsDQorIAkJCVRBUkdFVF9JTlRfQklUIC8gVEFSR0VUX0NIQVJfQklU LA0KKyAJCQkwLCAibG9uZ2ludCIsIG9iamZpbGUpOw0KKyAgICAgICBicmVhazsNCisgICAgIGNh c2UgRlRfU0lHTkVEX0lOVEVHRVI6DQorICAgICAgIHR5cGUgPSBpbml0X3R5cGUgKFRZUEVfQ09E RV9JTlQsDQorIAkJCVRBUkdFVF9JTlRfQklUIC8gVEFSR0VUX0NIQVJfQklULA0KKyAJCQkwLCAi bG9uZ2ludCIsIG9iamZpbGUpOwkJLyogRklYTUUgLWZuZiAqLw0KKyAgICAgICBicmVhazsNCisg ICAgIGNhc2UgRlRfVU5TSUdORURfSU5URUdFUjoNCisgICAgICAgdHlwZSA9IGluaXRfdHlwZSAo VFlQRV9DT0RFX0lOVCwNCisgCQkJVEFSR0VUX0lOVF9CSVQgLyBUQVJHRVRfQ0hBUl9CSVQsDQor IAkJCVRZUEVfRkxBR19VTlNJR05FRCwgImNhcmRpbmFsIiwgb2JqZmlsZSk7DQorICAgICAgIGJy ZWFrOw0KKyAgICAgY2FzZSBGVF9MT05HOg0KKyAgICAgICB0eXBlID0gaW5pdF90eXBlIChUWVBF X0NPREVfSU5ULA0KKyAJCQlUQVJHRVRfTE9OR19CSVQgLyBUQVJHRVRfQ0hBUl9CSVQsDQorIAkJ CTAsICJsb25nIiwgb2JqZmlsZSk7DQorICAgICAgIGJyZWFrOw0KKyAgICAgY2FzZSBGVF9TSUdO RURfTE9ORzoNCisgICAgICAgdHlwZSA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lOVCwNCisgCQkJ VEFSR0VUX0xPTkdfQklUIC8gVEFSR0VUX0NIQVJfQklULA0KKyAJCQkwLCAibG9uZyIsIG9iamZp bGUpOwkvKiBGSVhNRSAtZm5mICovDQorICAgICAgIGJyZWFrOw0KKyAgICAgY2FzZSBGVF9VTlNJ R05FRF9MT05HOg0KKyAgICAgICB0eXBlID0gaW5pdF90eXBlIChUWVBFX0NPREVfSU5ULA0KKyAJ CQlUQVJHRVRfTE9OR19CSVQgLyBUQVJHRVRfQ0hBUl9CSVQsDQorIAkJCVRZUEVfRkxBR19VTlNJ R05FRCwgInVuc2lnbmVkIGxvbmciLCBvYmpmaWxlKTsNCisgICAgICAgYnJlYWs7DQorICAgICBj YXNlIEZUX0xPTkdfTE9ORzoNCisgICAgICAgdHlwZSA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lO VCwNCisgCQkJVEFSR0VUX0xPTkdfTE9OR19CSVQgLyBUQVJHRVRfQ0hBUl9CSVQsDQorIAkJCTAs ICJsb25nIGxvbmciLCBvYmpmaWxlKTsNCisgICAgICAgYnJlYWs7DQorICAgICBjYXNlIEZUX1NJ R05FRF9MT05HX0xPTkc6DQorICAgICAgIHR5cGUgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9JTlQs DQorIAkJCVRBUkdFVF9MT05HX0xPTkdfQklUIC8gVEFSR0VUX0NIQVJfQklULA0KKyAJCQkwLCAi c2lnbmVkIGxvbmcgbG9uZyIsIG9iamZpbGUpOw0KKyAgICAgICBicmVhazsNCisgICAgIGNhc2Ug RlRfVU5TSUdORURfTE9OR19MT05HOg0KKyAgICAgICB0eXBlID0gaW5pdF90eXBlIChUWVBFX0NP REVfSU5ULA0KKyAJCQlUQVJHRVRfTE9OR19MT05HX0JJVCAvIFRBUkdFVF9DSEFSX0JJVCwNCisg CQkJVFlQRV9GTEFHX1VOU0lHTkVELCAidW5zaWduZWQgbG9uZyBsb25nIiwgb2JqZmlsZSk7DQor ICAgICAgIGJyZWFrOw0KKyAgICAgY2FzZSBGVF9GTE9BVDoNCisgICAgICAgdHlwZSA9IGluaXRf dHlwZSAoVFlQRV9DT0RFX0ZMVCwNCisgCQkJVEFSR0VUX0ZMT0FUX0JJVCAvIFRBUkdFVF9DSEFS X0JJVCwNCisgCQkJMCwgImZsb2F0Iiwgb2JqZmlsZSk7DQorICAgICAgIGJyZWFrOw0KKyAgICAg Y2FzZSBGVF9EQkxfUFJFQ19GTE9BVDoNCisgICAgICAgdHlwZSA9IGluaXRfdHlwZSAoVFlQRV9D T0RFX0ZMVCwNCisgCQkJVEFSR0VUX0RPVUJMRV9CSVQgLyBUQVJHRVRfQ0hBUl9CSVQsDQorIAkJ CTAsICJkb3VibGUiLCBvYmpmaWxlKTsNCisgICAgICAgYnJlYWs7DQorICAgICBjYXNlIEZUX0VY VF9QUkVDX0ZMT0FUOg0KKyAgICAgICB0eXBlID0gaW5pdF90eXBlIChUWVBFX0NPREVfRkxULA0K KyAJCQlUQVJHRVRfTE9OR19ET1VCTEVfQklUIC8gVEFSR0VUX0NIQVJfQklULA0KKyAJCQkwLCAi ZXh0ZW5kZWQiLCBvYmpmaWxlKTsNCisgICAgICAgYnJlYWs7DQorICAgICB9DQorICAgcmV0dXJu ICh0eXBlKTsNCisgfQ0KKyAMDQorIA0KKyAvKiBUYWJsZSBtYXBwaW5nIG9wY29kZXMgaW50byBz dHJpbmdzIGZvciBwcmludGluZyBvcGVyYXRvcnMNCisgICAgYW5kIHByZWNlZGVuY2VzIG9mIHRo ZSBvcGVyYXRvcnMuICAqLw0KKyANCisgY29uc3Qgc3RydWN0IG9wX3ByaW50IHBhc19vcF9wcmlu dF90YWJbXSA9DQorIHsNCisgICB7IiwiLCBCSU5PUF9DT01NQSwgUFJFQ19DT01NQSwgMH0sDQor ICAgeyI6PSIsIEJJTk9QX0FTU0lHTiwgUFJFQ19BU1NJR04sIDF9LA0KKyAgIHsib3IiLCBCSU5P UF9CSVRXSVNFX0lPUiwgUFJFQ19CSVRXSVNFX0lPUiwgMH0sDQorICAgeyJ4b3IiLCBCSU5PUF9C SVRXSVNFX1hPUiwgUFJFQ19CSVRXSVNFX1hPUiwgMH0sDQorICAgeyJhbmQiLCBCSU5PUF9CSVRX SVNFX0FORCwgUFJFQ19CSVRXSVNFX0FORCwgMH0sDQorICAgeyI9IiwgQklOT1BfRVFVQUwsIFBS RUNfRVFVQUwsIDB9LA0KKyAgIHsiPD4iLCBCSU5PUF9OT1RFUVVBTCwgUFJFQ19FUVVBTCwgMH0s DQorICAgeyI8PSIsIEJJTk9QX0xFUSwgUFJFQ19PUkRFUiwgMH0sDQorICAgeyI+PSIsIEJJTk9Q X0dFUSwgUFJFQ19PUkRFUiwgMH0sDQorICAgeyI+IiwgQklOT1BfR1RSLCBQUkVDX09SREVSLCAw fSwNCisgICB7IjwiLCBCSU5PUF9MRVNTLCBQUkVDX09SREVSLCAwfSwNCisgICB7InNociIsIEJJ Tk9QX1JTSCwgUFJFQ19TSElGVCwgMH0sDQorICAgeyJzaGwiLCBCSU5PUF9MU0gsIFBSRUNfU0hJ RlQsIDB9LA0KKyAgIHsiKyIsIEJJTk9QX0FERCwgUFJFQ19BREQsIDB9LA0KKyAgIHsiLSIsIEJJ Tk9QX1NVQiwgUFJFQ19BREQsIDB9LA0KKyAgIHsiKiIsIEJJTk9QX01VTCwgUFJFQ19NVUwsIDB9 LA0KKyAgIHsiLyIsIEJJTk9QX0RJViwgUFJFQ19NVUwsIDB9LA0KKyAgIHsiZGl2IiwgQklOT1Bf SU5URElWLCBQUkVDX01VTCwgMH0sDQorICAgeyJtb2QiLCBCSU5PUF9SRU0sIFBSRUNfTVVMLCAw fSwNCisgICB7IkAiLCBCSU5PUF9SRVBFQVQsIFBSRUNfUkVQRUFULCAwfSwNCisgICB7Ii0iLCBV Tk9QX05FRywgUFJFQ19QUkVGSVgsIDB9LA0KKyAgIHsibm90IiwgVU5PUF9MT0dJQ0FMX05PVCwg UFJFQ19QUkVGSVgsIDB9LA0KKyAgIHsiXiIsIFVOT1BfSU5ELCBQUkVDX1NVRkZJWCwgMX0sDQor ICAgeyJAIiwgVU5PUF9BRERSLCBQUkVDX1BSRUZJWCwgMH0sDQorICAgeyJzaXplb2YiLCBVTk9Q X1NJWkVPRiwgUFJFQ19QUkVGSVgsIDB9LA0KKyAgICAgLyogQysrICBhcHBhcmVudGx5IHJlbW92 ZWQgZnJvbSBHREIgc2luY2UgNC4xOA0KKyAgICAgICAgeyI6OiIsIEJJTk9QX1NDT1BFLCBQUkVD X1BSRUZJWCwgMH0sICovDQorICAge05VTEwsIDAsIDAsIDB9DQorIH07DQorIAwNCisgc3RydWN0 IHR5cGUgKipjb25zdCAvKiBDT05TVF9QVFIgdiA0LjE3ICovIChwYXNfYnVpbHRpbl90eXBlc1td KSA9DQorIHsNCisgICAmYnVpbHRpbl90eXBlX2ludCwNCisgICAgICZidWlsdGluX3R5cGVfbG9u ZywNCisgICAgICZidWlsdGluX3R5cGVfc2hvcnQsDQorICAgICAmYnVpbHRpbl90eXBlX2NoYXIs DQorICAgICAmYnVpbHRpbl90eXBlX2Zsb2F0LA0KKyAgICAgJmJ1aWx0aW5fdHlwZV9kb3VibGUs DQorICAgICAmYnVpbHRpbl90eXBlX3ZvaWQsDQorICAgICAmYnVpbHRpbl90eXBlX2xvbmdfbG9u ZywNCisgICAgICZidWlsdGluX3R5cGVfc2lnbmVkX2NoYXIsDQorICAgICAmYnVpbHRpbl90eXBl X3Vuc2lnbmVkX2NoYXIsDQorICAgICAmYnVpbHRpbl90eXBlX3Vuc2lnbmVkX3Nob3J0LA0KKyAg ICAgJmJ1aWx0aW5fdHlwZV91bnNpZ25lZF9pbnQsDQorICAgICAmYnVpbHRpbl90eXBlX3Vuc2ln bmVkX2xvbmcsDQorICAgICAmYnVpbHRpbl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZywNCisgICAg ICZidWlsdGluX3R5cGVfbG9uZ19kb3VibGUsDQorICAgICAmYnVpbHRpbl90eXBlX2NvbXBsZXgs DQorICAgICAmYnVpbHRpbl90eXBlX2RvdWJsZV9jb21wbGV4LA0KKyAgICAgMA0KKyB9Ow0KKyAN CisgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gcGFzX2xhbmd1YWdlX2RlZm4gPQ0KKyB7DQor ICAgInBhc2NhbCIsCQkJLyogTGFuZ3VhZ2UgbmFtZSAqLw0KKyAgIGxhbmd1YWdlX3Bhc2NhbCwN CisgICBwYXNfYnVpbHRpbl90eXBlcywNCisgICByYW5nZV9jaGVja19vbiwNCisgICB0eXBlX2No ZWNrX29uLA0KKyAgIHBhc19wYXJzZSwNCisgICBwYXNfZXJyb3IsDQorICAgZXZhbHVhdGVfc3Vi ZXhwX3N0YW5kYXJkLA0KKyAgIHBhc19wcmludGNoYXIsCQkvKiBQcmludCBhIGNoYXJhY3RlciBj b25zdGFudCAqLw0KKyAgIHBhc19wcmludHN0ciwJCQkvKiBGdW5jdGlvbiB0byBwcmludCBzdHJp bmcgY29uc3RhbnQgKi8NCisgICBwYXNfZW1pdF9jaGFyLAkJLyogUHJpbnQgYSBzaW5nbGUgY2hh ciAqLw0KKyAgIHBhc19jcmVhdGVfZnVuZGFtZW50YWxfdHlwZSwJLyogQ3JlYXRlIGZ1bmRhbWVu dGFsIHR5cGUgaW4gdGhpcyBsYW5ndWFnZSAqLw0KKyAgIHBhc19wcmludF90eXBlLAkJLyogUHJp bnQgYSB0eXBlIHVzaW5nIGFwcHJvcHJpYXRlIHN5bnRheCAqLw0KKyAgIHBhc192YWxfcHJpbnQs CQkvKiBQcmludCBhIHZhbHVlIHVzaW5nIGFwcHJvcHJpYXRlIHN5bnRheCAqLw0KKyAgIHBhc192 YWx1ZV9wcmludCwJCS8qIFByaW50IGEgdG9wLWxldmVsIHZhbHVlICovDQorICAgeyIiLCAiJSIs ICJiIiwgIiJ9LAkJLyogQmluYXJ5IGZvcm1hdCBpbmZvICovDQorICAgeyIwJWxvIiwgIjAiLCAi byIsICIifSwJLyogT2N0YWwgZm9ybWF0IGluZm8gKi8NCisgICB7IiVsZCIsICIiLCAiZCIsICIi fSwJCS8qIERlY2ltYWwgZm9ybWF0IGluZm8gKi8NCisgICB7IiQlbHgiLCAiJCIsICJ4IiwgIiJ9 LAkvKiBIZXggZm9ybWF0IGluZm8gKi8NCisgICBwYXNfb3BfcHJpbnRfdGFiLAkJLyogZXhwcmVz c2lvbiBvcGVyYXRvcnMgZm9yIHByaW50aW5nICovDQorICAgMSwJCQkJLyogYy1zdHlsZSBhcnJh eXMgKi8NCisgICAwLAkJCQkvKiBTdHJpbmcgbG93ZXIgYm91bmQgKi8NCisgICAmYnVpbHRpbl90 eXBlX2NoYXIsCQkvKiBUeXBlIG9mIHN0cmluZyBlbGVtZW50cyAqLw0KKyAgIExBTkdfTUFHSUMN CisgfTsNCisgDQorIHZvaWQNCisgX2luaXRpYWxpemVfcGFzX2xhbmd1YWdlICgpDQorIHsNCisg ICBhZGRfbGFuZ3VhZ2UgKCZwYXNfbGFuZ3VhZ2VfZGVmbik7DQorIH0NCisgLyoNCisgICAgJExv ZzogcC1sYW5nLmMsdiAkDQorICAgIFJldmlzaW9uIDEuMSAgMTk5OS8wOS8wNyAxMTo0MDoxOSAg cGllcnJlDQorICAgIEZpcnN0IGltcG9ydCBvZiBwYXNjYWwgZ2RiIDQuMTggY2hhbmdlcw0KKyAN CisgICAgUmV2aXNpb24gMS4xICAxOTk5LzAxLzI1IDIwOjMwOjMxICBwZXRlcg0KKyAgICArIGZp cnN0IHZlcnNpb24NCisgDQorICAgIFJldmlzaW9uIDEuMiAgMTk5OS8wMS8wNSAwODozOTozNSAg cGllcnJlDQorICAgICsgZGJnY29tLmggYW5kIGRiZ2NvbS5jIG1vZGlmaWVkIGJ5IEFuZHJpcyBQ YXZlbmlzDQorICAgICsgYWRkZWQgY29kZSBmb3IgTU1YIHN0YXRlIGRldGVjdGlvbiBhbmQgZGlz cGxheQ0KKyAgICAoc3RpbGwgdWdnbHkgOg0KKyAgICBGUFUgc3RhY2sgc2hvd24gYnkgImluZm8g YWxsIg0KKyAgICBNTVggcmVnaXN0ZXJzIHNob3duIGJ5ICJpbmZvIGZsb2F0IiBpZiBpbiBNTVgg bW9kZSkNCisgDQorICAgIFJldmlzaW9uIDEuMiAgMTk5OC8xMi8yMyAxNTo1MzowNiAgUGllcnJl DQorICAgIGV4Y2VwdGlvbnMgYW5kIGZsb2F0aW5mbw0KKyANCisgICAgUmV2aXNpb24gMS4xICAx OTk4LzEyLzE4IDE4OjI1OjUwICBwaWVycmUNCisgICAgZmlyc3QgREpHUFAgdjQuMTYgZm9yIHBh c2NhbCB3aXRoIGV4Y2VwdGlvbiBkZWJ1Z2dpbmcgY2FwYWJpbGl0aWVzDQorIA0KKyAgICBSZXZp c2lvbiAxLjEgIDE5OTgvMTIvMDQgMTA6MzE6NDcgIGRvc3VzZXINCisgICAgKyBmaXJzdCB2ZXJz aW9uIHdpdGggcGFzY2FsIHN5bnRheA0KKyANCisgICAgUmV2aXNpb24gMS4xICAxOTk4LzA5LzE4 IDEyOjM3OjM5ICBwaWVycmUNCisgICovDQoqKiogcC10eXBlcHJpbnQuYy5vcmkJRnJpIE1hciAg MyAxNDoyMzozMCAyMDAwDQotLS0gcC10eXBlcHJpbnQuYwlGcmkgTWFyICAzIDEzOjEyOjU0IDIw MDANCioqKioqKioqKioqKioqKg0KKioqIDAgKioqKg0KLS0tIDEsOTIwIC0tLS0NCisgLyoNCisg ICAgTW9kaWZpY2F0aW9ucyBmb3IgRlBDIHN1cHBvcnQNCisgICAgJElkOiBwLXR5cGVwcmludC5j LHYgMS4yIDE5OTkvMTAvMjkgMTE6NTc6MDYgcGllcnJlIEV4cCAkDQorICAqLw0KKyAvKiBTdXBw b3J0IGZvciBwcmludGluZyBDIGFuZCBDKysgdHlwZXMgZm9yIEdEQiwgdGhlIEdOVSBkZWJ1Z2dl ci4NCisgICAgQ29weXJpZ2h0IDE5ODYsIDE5ODgsIDE5ODksIDE5OTEsIDE5OTMsIDE5OTQsIDE5 OTUsIDE5OTYNCisgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIA0KKyAgICBU aGlzIGZpbGUgaXMgcGFydCBvZiBHREIuDQorIA0KKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyAgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQ0KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLg0KKyANCisgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICAgIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisgICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisgDQorICAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlDQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlDQorICAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLw0KKyANCisgI2luY2x1ZGUg ImRlZnMuaCINCisgI2luY2x1ZGUgIm9ic3RhY2suaCINCisgI2luY2x1ZGUgImJmZC5oIgkJLyog QmluYXJ5IEZpbGUgRGVzY3JpcHRpb24gKi8NCisgI2luY2x1ZGUgInN5bXRhYi5oIg0KKyAjaW5j bHVkZSAiZ2RidHlwZXMuaCINCisgI2luY2x1ZGUgImV4cHJlc3Npb24uaCINCisgI2luY2x1ZGUg InZhbHVlLmgiDQorICNpbmNsdWRlICJnZGJjb3JlLmgiDQorICNpbmNsdWRlICJ0YXJnZXQuaCIN CisgI2luY2x1ZGUgImNvbW1hbmQuaCINCisgI2luY2x1ZGUgImdkYmNtZC5oIg0KKyAjaW5jbHVk ZSAibGFuZ3VhZ2UuaCINCisgI2luY2x1ZGUgImRlbWFuZ2xlLmgiDQorICNpbmNsdWRlICJwLWxh bmcuaCINCisgI2luY2x1ZGUgInR5cGVwcmludC5oIg0KKyANCisgI2luY2x1ZGUgImdkYl9zdHJp bmcuaCINCisgI2luY2x1ZGUgPGVycm5vLmg+DQorICNpbmNsdWRlIDxjdHlwZS5oPg0KKyANCisg c3RhdGljIHZvaWQNCisgcGFzX3R5cGVfcHJpbnRfYXJncyBQQVJBTVMgKChzdHJ1Y3QgdHlwZSAq LCBzdHJ1Y3QgdWlfZmlsZSAqKSk7DQorIA0KKyBzdGF0aWMgdm9pZA0KKyBwYXNfdHlwZV9wcmlu dF92YXJzcGVjX3N1ZmZpeCBQQVJBTVMgKChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAq LCBpbnQsIGludCwgaW50KSk7DQorIA0KKyBzdGF0aWMgdm9pZA0KKyBwY3Bhc190eXBlX3ByaW50 X2Rlcml2YXRpb25faW5mbyBQQVJBTVMgKChzdHJ1Y3QgdWlfZmlsZSAqLCBzdHJ1Y3QgdHlwZSAq KSk7DQorIA0KKyB2b2lkDQorIHBhc190eXBlX3ByaW50X3ZhcnNwZWNfcHJlZml4IFBBUkFNUyAo KHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosIGludCwgaW50KSk7DQorIAwNCisgDQor IC8qIExFVkVMIGlzIHRoZSBkZXB0aCB0byBpbmRlbnQgbGluZXMgYnkuICAqLw0KKyANCisgdm9p ZA0KKyBwYXNfcHJpbnRfdHlwZSAodHlwZSwgdmFyc3RyaW5nLCBzdHJlYW0sIHNob3csIGxldmVs KQ0KKyAgICAgIHN0cnVjdCB0eXBlICp0eXBlOw0KKyAgICAgIGNoYXIgKnZhcnN0cmluZzsNCisg ICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtOw0KKyAgICAgIGludCBzaG93Ow0KKyAgICAgIGlu dCBsZXZlbDsNCisgew0KKyAgIHJlZ2lzdGVyIGVudW0gdHlwZV9jb2RlIGNvZGU7DQorICAgaW50 IGRlbWFuZ2xlZF9hcmdzOw0KKyANCisgICBjb2RlID0gVFlQRV9DT0RFICh0eXBlKTsNCisgDQor ICAgaWYgKHNob3cgPiAwKQ0KKyAgICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7DQorIA0KKyAgIGlm ICgoY29kZSA9PSBUWVBFX0NPREVfRlVOQyB8fA0KKyAgICAgICAgY29kZSA9PSBUWVBFX0NPREVf TUVUSE9EKSkNCisgICAgIHsNCisgICAgICAgcGFzX3R5cGVfcHJpbnRfdmFyc3BlY19wcmVmaXgg KHR5cGUsIHN0cmVhbSwgc2hvdywgMCk7DQorICAgICB9DQorICAgLyogZmlyc3QgdGhlIG5hbWUg Ki8NCisgICBmcHV0c19maWx0ZXJlZCAodmFyc3RyaW5nLCBzdHJlYW0pOw0KKyANCisgICBpZiAo KHZhcnN0cmluZyAhPSBOVUxMICYmICp2YXJzdHJpbmcgIT0gJ1wwJykgJiYNCisgICAgICAgIShj b2RlID09IFRZUEVfQ09ERV9GVU5DIHx8DQorIAljb2RlID09IFRZUEVfQ09ERV9NRVRIT0QpKQ0K KyAgICAgew0KKyAgICAgICBmcHV0c19maWx0ZXJlZCAoIiA6ICIsIHN0cmVhbSk7DQorICAgICB9 DQorIA0KKyAgIGlmICghKGNvZGUgPT0gVFlQRV9DT0RFX0ZVTkMgfHwNCisgCWNvZGUgPT0gVFlQ RV9DT0RFX01FVEhPRCkpDQorICAgICB7DQorICAgICAgIHBhc190eXBlX3ByaW50X3ZhcnNwZWNf cHJlZml4ICh0eXBlLCBzdHJlYW0sIHNob3csIDApOw0KKyAgICAgfQ0KKyANCisgICBwYXNfdHlw ZV9wcmludF9iYXNlICh0eXBlLCBzdHJlYW0sIHNob3csIGxldmVsKTsNCisgICAvKiBGb3IgZGVt YW5nbGVkIGZ1bmN0aW9uIG5hbWVzLCB3ZSBoYXZlIHRoZSBhcmdsaXN0IGFzIHBhcnQgb2YgdGhl IG5hbWUsDQorICAgICAgc28gZG9uJ3QgcHJpbnQgYW4gYWRkaXRpb25hbCBwYWlyIG9mICgpJ3Mg Ki8NCisgDQorICAgZGVtYW5nbGVkX2FyZ3MgPSB2YXJzdHJpbmcgPyBzdHJjaHIgKHZhcnN0cmlu ZywgJygnKSAhPSBOVUxMIDogTlVMTDsNCisgICBwYXNfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZp eCAodHlwZSwgc3RyZWFtLCBzaG93LCAwLCBkZW1hbmdsZWRfYXJncyk7DQorIA0KKyB9DQorIA0K KyAvKiBJZiBUWVBFIGlzIGEgZGVyaXZlZCB0eXBlLCB0aGVuIHByaW50IG91dCBkZXJpdmF0aW9u IGluZm9ybWF0aW9uLg0KKyAgICBQcmludCBvbmx5IHRoZSBhY3R1YWwgYmFzZSBjbGFzc2VzIG9m IHRoaXMgdHlwZSwgbm90IHRoZSBiYXNlIGNsYXNzZXMNCisgICAgb2YgdGhlIGJhc2UgY2xhc3Nl cy4gIEkuRS4gIGZvciB0aGUgZGVyaXZhdGlvbiBoaWVyYXJjaHk6DQorIA0KKyAgICBjbGFzcyBB IHsgaW50IGE7IH07DQorICAgIGNsYXNzIEIgOiBwdWJsaWMgQSB7aW50IGI7IH07DQorICAgIGNs YXNzIEMgOiBwdWJsaWMgQiB7aW50IGM7IH07DQorIA0KKyAgICBQcmludCB0aGUgdHlwZSBvZiBj bGFzcyBDIGFzOg0KKyANCisgICAgY2xhc3MgQyA6IHB1YmxpYyBCIHsNCisgICAgaW50IGM7DQor ICAgIH0NCisgDQorICAgIE5vdCBhcyB0aGUgZm9sbG93aW5nIChsaWtlIGdkYiB1c2VkIHRvKSwg d2hpY2ggaXMgbm90IGxlZ2FsIEMrKyBzeW50YXggZm9yDQorICAgIGRlcml2ZWQgdHlwZXMgYW5k IG1heSBiZSBjb25mdXNlZCB3aXRoIHRoZSBtdWx0aXBsZSBpbmhlcml0YW5jZSBmb3JtOg0KKyAN CisgICAgY2xhc3MgQyA6IHB1YmxpYyBCIDogcHVibGljIEEgew0KKyAgICBpbnQgYzsNCisgICAg fQ0KKyANCisgICAgSW4gZ2VuZXJhbCwgZ2RiIHNob3VsZCB0cnkgdG8gcHJpbnQgdGhlIHR5cGVz IGFzIGNsb3NlbHkgYXMgcG9zc2libGUgdG8NCisgICAgdGhlIGZvcm0gdGhhdCB0aGV5IGFwcGVh ciBpbiB0aGUgc291cmNlIGNvZGUuICovDQorIA0KKyBzdGF0aWMgdm9pZA0KKyBwY3Bhc190eXBl X3ByaW50X2Rlcml2YXRpb25faW5mbyAoc3RyZWFtLCB0eXBlKQ0KKyAgICAgIHN0cnVjdCB1aV9m aWxlICpzdHJlYW07DQorICAgICAgc3RydWN0IHR5cGUgKnR5cGU7DQorIHsNCisgICBjaGFyICpu YW1lOw0KKyAgIGludCBpOw0KKyANCisgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9OX0JBU0VDTEFT U0VTICh0eXBlKTsgaSsrKQ0KKyAgICAgew0KKyAgICAgICBmcHV0c19maWx0ZXJlZCAoaSA9PSAw ID8gIjogIiA6ICIsICIsIHN0cmVhbSk7DQorICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgIiVzJXMgIiwNCisgCQkJQkFTRVRZUEVfVklBX1BVQkxJQyAodHlwZSwgaSkgPyAicHVibGlj IiA6ICJwcml2YXRlIiwNCisgCQkJQkFTRVRZUEVfVklBX1ZJUlRVQUwgKHR5cGUsIGkpID8gIiB2 aXJ0dWFsIiA6ICIiKTsNCisgICAgICAgbmFtZSA9IHR5cGVfbmFtZV9ub190YWcgKFRZUEVfQkFT RUNMQVNTICh0eXBlLCBpKSk7DQorICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVz IiwgbmFtZSA/IG5hbWUgOiAiKG51bGwpIik7DQorICAgICB9DQorICAgaWYgKGkgPiAwKQ0KKyAg ICAgew0KKyAgICAgICBmcHV0c19maWx0ZXJlZCAoIiAiLCBzdHJlYW0pOw0KKyAgICAgfQ0KKyB9 DQorIA0KKyAvKiBQcmludCB0aGUgRlBDIG1ldGhvZCBhcmd1bWVudHMgQVJHUyB0byB0aGUgZmls ZSBTVFJFQU0uICAqLw0KKyANCisgdm9pZA0KKyBwYXNfdHlwZV9wcmludF9tZXRob2RfYXJncyAo cGh5c25hbWUsIG1ldGhvZG5hbWUsIHN0cmVhbSkNCisgICAgICBjaGFyICpwaHlzbmFtZTsNCisg ICAgICBjaGFyICptZXRob2RuYW1lOw0KKyAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW07DQor IHsNCisgICBpbnQgaXNfY29uc3RydWN0b3IgPSBTVFJFUU4gKHBoeXNuYW1lLCAiX19jdF9fIiwg Nik7DQorICAgaW50IGlzX2Rlc3RydWN0b3IgPSBTVFJFUU4gKHBoeXNuYW1lLCAiX19kdF9fIiwg Nik7DQorIA0KKyAgIGlmIChpc19jb25zdHJ1Y3RvciB8fCBpc19kZXN0cnVjdG9yKQ0KKyAgICAg ew0KKyAgICAgICBwaHlzbmFtZSArPSA2Ow0KKyAgICAgfQ0KKyANCisgICBmcHV0c19maWx0ZXJl ZCAobWV0aG9kbmFtZSwgc3RyZWFtKTsNCisgDQorICAgaWYgKHBoeXNuYW1lICYmICgqcGh5c25h bWUgIT0gMCkpDQorICAgICB7DQorICAgICAgIGludCBpID0gMDsNCisgICAgICAgaW50IGxlbiA9 IDA7DQorICAgICAgIGNoYXIgc3RvcmVjOw0KKyAgICAgICBjaGFyICphcmduYW1lOw0KKyAgICAg ICBmcHV0c19maWx0ZXJlZCAoIiAoIiwgc3RyZWFtKTsNCisgICAgICAgLyogd2UgbXVzdCBkZW1h bmdsZSB0aGlzICovDQorICAgICAgIHdoaWxlIGlzZGlnaXQNCisgCShwaHlzbmFtZVswXSkNCisg CXsNCisgCSAgd2hpbGUgaXNkaWdpdA0KKyAJICAgIChwaHlzbmFtZVtsZW5dKQ0KKyAJICAgIHsN CisgCSAgICAgIGxlbisrOw0KKyAJICAgIH0NCisgCSAgaSA9IHN0cnRvbCAocGh5c25hbWUsICZh cmduYW1lLCAwKTsNCisgCSAgcGh5c25hbWUgKz0gbGVuOw0KKyAJICBzdG9yZWMgPSBwaHlzbmFt ZVtpXTsNCisgCSAgcGh5c25hbWVbaV0gPSAwOw0KKyAJICBmcHV0c19maWx0ZXJlZCAocGh5c25h bWUsIHN0cmVhbSk7DQorIAkgIHBoeXNuYW1lW2ldID0gc3RvcmVjOw0KKyAJICBwaHlzbmFtZSAr PSBpOw0KKyAJICBpZiAocGh5c25hbWVbMF0gIT0gMCkNCisgCSAgICB7DQorIAkgICAgICBmcHV0 c19maWx0ZXJlZCAoIiwgIiwgc3RyZWFtKTsNCisgCSAgICB9DQorIAl9DQorICAgICAgIGZwdXRz X2ZpbHRlcmVkICgiKSIsIHN0cmVhbSk7DQorICAgICB9DQorIH0NCisgDQorIC8qIFByaW50IGFu eSBhc3Rlcmlza3Mgb3Igb3Blbi1wYXJlbnRoZXNlcyBuZWVkZWQgYmVmb3JlIHRoZQ0KKyAgICB2 YXJpYWJsZSBuYW1lICh0byBkZXNjcmliZSBpdHMgdHlwZSkuDQorIA0KKyAgICBPbiBvdXRlcm1v c3QgY2FsbCwgcGFzcyAwIGZvciBQQVNTRURfQV9QVFIuDQorICAgIE9uIG91dGVybW9zdCBjYWxs LCBTSE9XID4gMCBtZWFucyBzaG91bGQgaWdub3JlDQorICAgIGFueSB0eXBlbmFtZSBmb3IgVFlQ RSBhbmQgc2hvdyBpdHMgZGV0YWlscy4NCisgICAgU0hPVyBpcyBhbHdheXMgemVybyBvbiByZWN1 cnNpdmUgY2FsbHMuICAqLw0KKyANCisgdm9pZA0KKyBwYXNfdHlwZV9wcmludF92YXJzcGVjX3By ZWZpeCAodHlwZSwgc3RyZWFtLCBzaG93LCBwYXNzZWRfYV9wdHIpDQorICAgICAgc3RydWN0IHR5 cGUgKnR5cGU7DQorICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsNCisgICAgICBpbnQgc2hv dzsNCisgICAgICBpbnQgcGFzc2VkX2FfcHRyOw0KKyB7DQorICAgY2hhciAqbmFtZTsNCisgICBp ZiAodHlwZSA9PSAwKQ0KKyAgICAgcmV0dXJuOw0KKyANCisgICBpZiAoVFlQRV9OQU1FICh0eXBl KSAmJiBzaG93IDw9IDApDQorICAgICByZXR1cm47DQorIA0KKyAgIFFVSVQ7DQorIA0KKyAgIHN3 aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkNCisgICAgIHsNCisgICAgIGNhc2UgVFlQRV9DT0RFX1BU UjoNCisgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiXiIpOw0KKyAgICAgICBwYXNf dHlwZV9wcmludF92YXJzcGVjX3ByZWZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVh bSwgMCwgMSk7DQorICAgICAgIGJyZWFrOwkJCS8qIHBvaW50ZXIgc2hvdWxkIGJlIGhhbmRsZWQg bm9ybWFsbHkgaW4gcGFzY2FsICovDQorIA0KKyAgICAgY2FzZSBUWVBFX0NPREVfTUVNQkVSOg0K KyAgICAgICBpZiAocGFzc2VkX2FfcHRyKQ0KKyAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAi KCIpOw0KKyAgICAgICBwYXNfdHlwZV9wcmludF92YXJzcGVjX3ByZWZpeCAoVFlQRV9UQVJHRVRf VFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCk7DQorICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgIiAiKTsNCisgICAgICAgbmFtZSA9IHR5cGVfbmFtZV9ub190YWcgKFRZUEVfRE9NQUlO X1RZUEUgKHR5cGUpKTsNCisgICAgICAgaWYgKG5hbWUpDQorIAlmcHV0c19maWx0ZXJlZCAobmFt ZSwgc3RyZWFtKTsNCisgICAgICAgZWxzZQ0KKyAJcGFzX3R5cGVfcHJpbnRfYmFzZSAoVFlQRV9E T01BSU5fVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgcGFzc2VkX2FfcHRyKTsNCisgICAgICAgZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiOjoiKTsNCisgICAgICAgYnJlYWs7DQorIA0KKyAgICAg Y2FzZSBUWVBFX0NPREVfTUVUSE9EOg0KKyAgICAgICBpZiAocGFzc2VkX2FfcHRyKQ0KKyAJZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKCIpOw0KKyAgICAgICBpZiAoVFlQRV9DT0RFIChUWVBF X1RBUkdFVF9UWVBFICh0eXBlKSkgIT0gVFlQRV9DT0RFX1ZPSUQpDQorIAl7DQorIAkgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgImZ1bmN0aW9uICAiKTsNCisgCX0NCisgICAgICAgZWxzZQ0K KyAJew0KKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJwcm9jZWR1cmUgIik7DQorIAl9 DQorIA0KKyAgICAgICBpZiAocGFzc2VkX2FfcHRyKQ0KKyAJew0KKyAJICBmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sICIgIik7DQorIAkgIHBhc190eXBlX3ByaW50X2Jhc2UgKFRZUEVfRE9NQUlO X1RZUEUgKHR5cGUpLCBzdHJlYW0sIDAsIHBhc3NlZF9hX3B0cik7DQorIAkgIGZwcmludGZfZmls dGVyZWQgKHN0cmVhbSwgIjo6Iik7DQorIAl9DQorICAgICAgIGJyZWFrOw0KKyANCisgICAgIGNh c2UgVFlQRV9DT0RFX1JFRjoNCisgICAgICAgcGFzX3R5cGVfcHJpbnRfdmFyc3BlY19wcmVmaXgg KFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0sIDAsIDEpOw0KKyAgICAgICBmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sICImIik7DQorICAgICAgIGJyZWFrOw0KKyANCisgICAgIGNhc2Ug VFlQRV9DT0RFX0ZVTkM6DQorICAgICAgIGlmIChwYXNzZWRfYV9wdHIpDQorIAlmcHJpbnRmX2Zp bHRlcmVkIChzdHJlYW0sICIoIik7DQorIA0KKyAgICAgICBpZiAoVFlQRV9DT0RFIChUWVBFX1RB UkdFVF9UWVBFICh0eXBlKSkgIT0gVFlQRV9DT0RFX1ZPSUQpDQorIAl7DQorIAkgIGZwcmludGZf ZmlsdGVyZWQgKHN0cmVhbSwgImZ1bmN0aW9uICAiKTsNCisgCX0NCisgICAgICAgZWxzZQ0KKyAJ ew0KKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJwcm9jZWR1cmUgIik7DQorIAl9DQor IA0KKyAgICAgICBicmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToNCisgICAg ICAgaWYgKHBhc3NlZF9hX3B0cikNCisgCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIigiKTsN CisgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiYXJyYXkgIik7DQorICAgICAgIGlm IChUWVBFX0xFTkdUSCAodHlwZSkgPj0gMCAmJiBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQ RSAodHlwZSkpID4gMA0KKyAJJiYgVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9UWVBFICh0eXBlKSAh PSBCT1VORF9DQU5OT1RfQkVfREVURVJNSU5FRCkNCisgCWZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgIlslZC4uJWRdICIsDQorIAkJCSAgVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9WQUxVRSAodHlw ZSksDQorIAkJCSAgVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9WQUxVRSAodHlwZSkNCisgCSAgKTsN CisgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAib2YgIik7DQorICAgICAgIGJyZWFr Ow0KKyANCisgICAgIGNhc2UgVFlQRV9DT0RFX1VOREVGOg0KKyAgICAgY2FzZSBUWVBFX0NPREVf U1RSVUNUOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfVU5JT046DQorICAgICBjYXNlIFRZUEVfQ09E RV9FTlVNOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfSU5UOg0KKyAgICAgY2FzZSBUWVBFX0NPREVf RkxUOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfVk9JRDoNCisgICAgIGNhc2UgVFlQRV9DT0RFX0VS Uk9SOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfQ0hBUjoNCisgICAgIGNhc2UgVFlQRV9DT0RFX0JP T0w6DQorICAgICBjYXNlIFRZUEVfQ09ERV9TRVQ6DQorICAgICBjYXNlIFRZUEVfQ09ERV9SQU5H RToNCisgICAgIGNhc2UgVFlQRV9DT0RFX1NUUklORzoNCisgICAgIGNhc2UgVFlQRV9DT0RFX0JJ VFNUUklORzoNCisgICAgIGNhc2UgVFlQRV9DT0RFX0NPTVBMRVg6DQorICAgICBjYXNlIFRZUEVf Q09ERV9UWVBFREVGOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfVEVNUExBVEU6DQorICAgICAgIC8q IFRoZXNlIHR5cGVzIG5lZWQgbm8gcHJlZml4LiAgVGhleSBhcmUgbGlzdGVkIGhlcmUgc28gdGhh dA0KKyAgICAgICAgICBnY2MgLVdhbGwgd2lsbCByZXZlYWwgYW55IHR5cGVzIHRoYXQgaGF2ZW4n dCBiZWVuIGhhbmRsZWQuICAqLw0KKyAgICAgICBicmVhazsNCisgICAgIGRlZmF1bHQ6DQorICAg ICAgIGVycm9yICgidHlwZSBub3QgaGFuZGxlZCBpbiBwYXNfdHlwZV9wcmludF92YXJzcGVjX3By ZWZpeCgpIik7DQorICAgICAgIGJyZWFrOw0KKyAgICAgfQ0KKyB9DQorIA0KKyBzdGF0aWMgdm9p ZA0KKyBwYXNfdHlwZV9wcmludF9hcmdzICh0eXBlLCBzdHJlYW0pDQorICAgICAgc3RydWN0IHR5 cGUgKnR5cGU7DQorICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsNCisgew0KKyAgIGludCBp Ow0KKyAgIHN0cnVjdCB0eXBlICoqYXJnczsNCisgDQorICAgLyogIGZwcmludGZfZmlsdGVyZWQg KHN0cmVhbSwgIigiKTsNCisgICAgICBubyAoKSBmb3IgcHJvY2VkdXJlcyAhISAqLw0KKyAgIGFy Z3MgPSBUWVBFX0FSR19UWVBFUyAodHlwZSk7DQorICAgaWYgKGFyZ3MgIT0gTlVMTCkNCisgICAg IHsNCisgICAgICAgaWYgKChhcmdzWzFdICE9IE5VTEwgJiYgYXJnc1sxXS0+Y29kZSAhPSBUWVBF X0NPREVfVk9JRCkgfHwNCisgCSAgKGFyZ3NbMl0gIT0gTlVMTCkpDQorIAl7DQorIAkgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIigiKTsNCisgCX0NCisgICAgICAgaWYgKGFyZ3NbMV0gPT0g TlVMTCkNCisgCXsNCisgCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7DQorIAl9 DQorICAgICAgIGVsc2UNCisgCXsNCisgCSAgZm9yIChpID0gMTsNCisgCSAgICAgICBhcmdzW2ld ICE9IE5VTEwgJiYgYXJnc1tpXS0+Y29kZSAhPSBUWVBFX0NPREVfVk9JRDsNCisgCSAgICAgICBp KyspDQorIAkgICAgew0KKyAJICAgICAgcGFzX3ByaW50X3R5cGUgKGFyZ3NbaV0sICIiLCBzdHJl YW0sIC0xLCAwKTsNCisgCSAgICAgIGlmIChhcmdzW2kgKyAxXSA9PSBOVUxMKQ0KKyAJCXsNCisg CQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIi4uLiIpOw0KKyAJCX0NCisgCSAgICAgIGVs c2UgaWYgKGFyZ3NbaSArIDFdLT5jb2RlICE9IFRZUEVfQ09ERV9WT0lEKQ0KKyAJCXsNCisgCQkg IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiwiKTsNCisgCQkgIHdyYXBfaGVyZSAoIiAgICAi KTsNCisgCQl9DQorIAkgICAgfQ0KKyAJfQ0KKyAgICAgICBpZiAoKGFyZ3NbMV0gIT0gTlVMTCAm JiBhcmdzWzFdLT5jb2RlICE9IFRZUEVfQ09ERV9WT0lEKSB8fA0KKyAJICAoYXJnc1syXSAhPSBO VUxMKSkNCisgCXsNCisgCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSIpOw0KKyAJfQ0K KyAgICAgfQ0KKyB9DQorIA0KKyBzdGF0aWMgdm9pZA0KKyBwYXNfcHJpbnRfZnVuY19hcmdzIChz dHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkNCisgew0KKyAgIGludCBp LCBsZW4gPSBUWVBFX05GSUVMRFMgKHR5cGUpOw0KKyAgIGlmIChsZW4pDQorICAgICB7DQorICAg ICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIigiKTsNCisgICAgIH0NCisgICBmb3IgKGkg PSAwOyBpIDwgbGVuOyBpKyspDQorICAgICB7DQorICAgICAgIGlmIChpID4gMCkNCisgCXsNCisg CSAgZnB1dHNfZmlsdGVyZWQgKCIsICIsIHN0cmVhbSk7DQorIAkgIHdyYXBfaGVyZSAoIiAgICAi KTsNCisgCX0NCisgICAgICAgLyogIGNhbiB3ZSBmaW5kIGlmIGl0IGlzIGEgdmFyIHBhcmFtZXRl ciA/Pw0KKyAgICAgICAgICBpZiAoIFRZUEVfRklFTEQodHlwZSwgaSkgPT0gKQ0KKyAgICAgICAg ICB7DQorICAgICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgInZhciAiKTsNCisgICAg ICAgICAgfSAqLw0KKyAgICAgICBwYXNfcHJpbnRfdHlwZSAoVFlQRV9GSUVMRF9UWVBFICh0eXBl LCBpKSwgIiIJLyogVFlQRV9GSUVMRF9OQU1FIHNlZW1zIGludmFsaWQgISAqLw0KKyAJCSAgICAg ICxzdHJlYW0sIC0xLCAwKTsNCisgICAgIH0NCisgICBpZiAobGVuKQ0KKyAgICAgew0KKyAgICAg ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7DQorICAgICB9DQorIH0NCisgDQorIC8q IFByaW50IGFueSBhcnJheSBzaXplcywgZnVuY3Rpb24gYXJndW1lbnRzIG9yIGNsb3NlIHBhcmVu dGhlc2VzDQorICAgIG5lZWRlZCBhZnRlciB0aGUgdmFyaWFibGUgbmFtZSAodG8gZGVzY3JpYmUg aXRzIHR5cGUpLg0KKyAgICBBcmdzIHdvcmsgbGlrZSBwYXNfdHlwZV9wcmludF92YXJzcGVjX3By ZWZpeC4gICovDQorIA0KKyBzdGF0aWMgdm9pZA0KKyBwYXNfdHlwZV9wcmludF92YXJzcGVjX3N1 ZmZpeCAodHlwZSwgc3RyZWFtLCBzaG93LCBwYXNzZWRfYV9wdHIsIGRlbWFuZ2xlZF9hcmdzKQ0K KyAgICAgIHN0cnVjdCB0eXBlICp0eXBlOw0KKyAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW07 DQorICAgICAgaW50IHNob3c7DQorICAgICAgaW50IHBhc3NlZF9hX3B0cjsNCisgICAgICBpbnQg ZGVtYW5nbGVkX2FyZ3M7DQorIHsNCisgICBpZiAodHlwZSA9PSAwKQ0KKyAgICAgcmV0dXJuOw0K KyANCisgICBpZiAoVFlQRV9OQU1FICh0eXBlKSAmJiBzaG93IDw9IDApDQorICAgICByZXR1cm47 DQorIA0KKyAgIFFVSVQ7DQorIA0KKyAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkNCisgICAg IHsNCisgICAgIGNhc2UgVFlQRV9DT0RFX0FSUkFZOg0KKyAgICAgICBpZiAocGFzc2VkX2FfcHRy KQ0KKyAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSIpOw0KKyAgICAgICBicmVhazsNCisg DQorICAgICBjYXNlIFRZUEVfQ09ERV9NRU1CRVI6DQorICAgICAgIGlmIChwYXNzZWRfYV9wdHIp DQorIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7DQorICAgICAgIHBhc190eXBlX3By aW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLCAwLCAw LCAwKTsNCisgICAgICAgYnJlYWs7DQorIA0KKyAgICAgY2FzZSBUWVBFX0NPREVfTUVUSE9EOg0K KyAgICAgICBpZiAocGFzc2VkX2FfcHRyKQ0KKyAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAi KSIpOw0KKyAgICAgICBwYXNfdHlwZV9wcmludF9tZXRob2RfYXJncyAoIiIsDQorIAkJCQkgICIi LA0KKyAJCQkJICBzdHJlYW0pOw0KKyAgICAgICAvKiBwYXNfdHlwZV9wcmludF9hcmdzICh0eXBl LCBzdHJlYW0pOyAqLw0KKyAgICAgICBpZiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0 eXBlKSkgIT0gVFlQRV9DT0RFX1ZPSUQpDQorIAl7DQorIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgIiA6ICIpOw0KKyAJICBwYXNfdHlwZV9wcmludF92YXJzcGVjX3ByZWZpeCAoVFlQRV9U QVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCk7DQorIAkgIHBhc190eXBlX3ByaW50X2Jh c2UgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0sIHNob3csIDApOw0KKyAJICBwYXNf dHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVh bSwgMCwNCisgCQkJCQkgcGFzc2VkX2FfcHRyLCAwKTsNCisgCX0NCisgICAgICAgYnJlYWs7DQor IA0KKyAgICAgY2FzZSBUWVBFX0NPREVfUFRSOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfUkVGOg0K KyAgICAgICBwYXNfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSksIHN0cmVhbSwgMCwgMSwgMCk7DQorICAgICAgIGJyZWFrOw0KKyANCisgICAgIGNhc2Ug VFlQRV9DT0RFX0ZVTkM6DQorICAgICAgIGlmIChwYXNzZWRfYV9wdHIpDQorIAlmcHJpbnRmX2Zp bHRlcmVkIChzdHJlYW0sICIpIik7DQorICAgICAgIGlmICghZGVtYW5nbGVkX2FyZ3MpDQorIAlw YXNfcHJpbnRfZnVuY19hcmdzICh0eXBlLCBzdHJlYW0pOw0KKyAgICAgICBpZiAoVFlQRV9DT0RF IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgIT0gVFlQRV9DT0RFX1ZPSUQpDQorIAl7DQorIAkg IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiA6ICIpOw0KKyAJICBwYXNfdHlwZV9wcmludF92 YXJzcGVjX3ByZWZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCk7DQor IAkgIHBhc190eXBlX3ByaW50X2Jhc2UgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0s IHNob3csIDApOw0KKyAJICBwYXNfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9UQVJH RVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwNCisgCQkJCQkgcGFzc2VkX2FfcHRyLCAwKTsNCisg CX0NCisgICAgICAgYnJlYWs7DQorIA0KKyAgICAgY2FzZSBUWVBFX0NPREVfVU5ERUY6DQorICAg ICBjYXNlIFRZUEVfQ09ERV9TVFJVQ1Q6DQorICAgICBjYXNlIFRZUEVfQ09ERV9VTklPTjoNCisg ICAgIGNhc2UgVFlQRV9DT0RFX0VOVU06DQorICAgICBjYXNlIFRZUEVfQ09ERV9JTlQ6DQorICAg ICBjYXNlIFRZUEVfQ09ERV9GTFQ6DQorICAgICBjYXNlIFRZUEVfQ09ERV9WT0lEOg0KKyAgICAg Y2FzZSBUWVBFX0NPREVfRVJST1I6DQorICAgICBjYXNlIFRZUEVfQ09ERV9DSEFSOg0KKyAgICAg Y2FzZSBUWVBFX0NPREVfQk9PTDoNCisgICAgIGNhc2UgVFlQRV9DT0RFX1NFVDoNCisgICAgIGNh c2UgVFlQRV9DT0RFX1JBTkdFOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfU1RSSU5HOg0KKyAgICAg Y2FzZSBUWVBFX0NPREVfQklUU1RSSU5HOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfQ09NUExFWDoN CisgICAgIGNhc2UgVFlQRV9DT0RFX1RZUEVERUY6DQorICAgICBjYXNlIFRZUEVfQ09ERV9URU1Q TEFURToNCisgICAgICAgLyogVGhlc2UgdHlwZXMgZG8gbm90IG5lZWQgYSBzdWZmaXguICBUaGV5 IGFyZSBsaXN0ZWQgc28gdGhhdA0KKyAgICAgICAgICBnY2MgLVdhbGwgd2lsbCByZXBvcnQgdHlw ZXMgdGhhdCBtYXkgbm90IGhhdmUgYmVlbiBjb25zaWRlcmVkLiAgKi8NCisgICAgICAgYnJlYWs7 DQorICAgICBkZWZhdWx0Og0KKyAgICAgICBlcnJvciAoInR5cGUgbm90IGhhbmRsZWQgaW4gcGFz X3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXgoKSIpOw0KKyAgICAgICBicmVhazsNCisgICAgIH0N CisgfQ0KKyANCisgLyogUHJpbnQgdGhlIG5hbWUgb2YgdGhlIHR5cGUgKG9yIHRoZSB1bHRpbWF0 ZSBwb2ludGVyIHRhcmdldCwNCisgICAgZnVuY3Rpb24gdmFsdWUgb3IgYXJyYXkgZWxlbWVudCks IG9yIHRoZSBkZXNjcmlwdGlvbiBvZiBhDQorICAgIHN0cnVjdHVyZSBvciB1bmlvbi4NCisgDQor ICAgIFNIT1cgcG9zaXRpdmUgbWVhbnMgcHJpbnQgZGV0YWlscyBhYm91dCB0aGUgdHlwZSAoZS5n LiBlbnVtIHZhbHVlcyksDQorICAgIGFuZCBwcmludCBzdHJ1Y3R1cmUgZWxlbWVudHMgcGFzc2lu ZyBTSE9XIC0gMSBmb3Igc2hvdy4NCisgICAgU0hPVyBuZWdhdGl2ZSBtZWFucyBqdXN0IHByaW50 IHRoZSB0eXBlIG5hbWUgb3Igc3RydWN0IHRhZyBpZiB0aGVyZSBpcyBvbmUuDQorICAgIElmIHRo ZXJlIGlzIG5vIG5hbWUsIHByaW50IHNvbWV0aGluZyBzZW5zaWJsZSBidXQgY29uY2lzZSBsaWtl DQorICAgICJzdHJ1Y3Qgey4uLn0iLg0KKyAgICBTSE9XIHplcm8gbWVhbnMganVzdCBwcmludCB0 aGUgdHlwZSBuYW1lIG9yIHN0cnVjdCB0YWcgaWYgdGhlcmUgaXMgb25lLg0KKyAgICBJZiB0aGVy ZSBpcyBubyBuYW1lLCBwcmludCBzb21ldGhpbmcgc2Vuc2libGUgYnV0IG5vdCBhcyBjb25jaXNl IGxpa2UNCisgICAgInN0cnVjdCB7aW50IHg7IGludCB5O30iLg0KKyANCisgICAgTEVWRUwgaXMg dGhlIG51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IGJ5Lg0KKyAgICBXZSBpbmNyZWFzZSBpdCBm b3Igc29tZSByZWN1cnNpdmUgY2FsbHMuICAqLw0KKyANCisgdm9pZA0KKyBwYXNfdHlwZV9wcmlu dF9iYXNlICh0eXBlLCBzdHJlYW0sIHNob3csIGxldmVsKQ0KKyAgICAgIHN0cnVjdCB0eXBlICp0 eXBlOw0KKyAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW07DQorICAgICAgaW50IHNob3c7DQor ICAgICAgaW50IGxldmVsOw0KKyB7DQorICAgcmVnaXN0ZXIgaW50IGk7DQorICAgcmVnaXN0ZXIg aW50IGxlbjsNCisgICByZWdpc3RlciBpbnQgbGFzdHZhbDsNCisgICBlbnVtDQorICAgICB7DQor ICAgICAgIHNfbm9uZSwgc19wdWJsaWMsIHNfcHJpdmF0ZSwgc19wcm90ZWN0ZWQNCisgICAgIH0N CisgICBzZWN0aW9uX3R5cGU7DQorICAgUVVJVDsNCisgDQorICAgd3JhcF9oZXJlICgiICAgICIp Ow0KKyAgIGlmICh0eXBlID09IE5VTEwpDQorICAgICB7DQorICAgICAgIGZwdXRzX2ZpbHRlcmVk ICgiPHR5cGUgdW5rbm93bj4iLCBzdHJlYW0pOw0KKyAgICAgICByZXR1cm47DQorICAgICB9DQor IA0KKyAgIC8qIHZvaWQgcG9pbnRlciAqLw0KKyAgIGlmICgoVFlQRV9DT0RFICh0eXBlKSA9PSBU WVBFX0NPREVfUFRSKSAmJiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgPT0g VFlQRV9DT0RFX1ZPSUQpKQ0KKyAgICAgew0KKyAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sDQorIAkJCVRZUEVfTkFNRSAodHlwZSkgPyBUWVBFX05BTUUgKHR5cGUpIDogInBvaW50ZXIi KTsNCisgICAgICAgcmV0dXJuOw0KKyAgICAgfQ0KKyAgIC8qIFdoZW4gU0hPVyBpcyB6ZXJvIG9y IGxlc3MsIGFuZCB0aGVyZSBpcyBhIHZhbGlkIHR5cGUgbmFtZSwgdGhlbiBhbHdheXMNCisgICAg ICBqdXN0IHByaW50IHRoZSB0eXBlIG5hbWUgZGlyZWN0bHkgZnJvbSB0aGUgdHlwZS4gICovDQor ICAgLyogSWYgd2UgaGF2ZSAidHlwZWRlZiBzdHJ1Y3QgZm9vIHsuIC4gLn0gYmFyOyIgZG8gd2Ug d2FudCB0byBwcmludCBpdA0KKyAgICAgIGFzICJzdHJ1Y3QgZm9vIiBvciBhcyAiYmFyIj8gIFBp Y2sgdGhlIGxhdHRlciwgYmVjYXVzZSBDKysgZm9sayB0ZW5kDQorICAgICAgdG8gZXhwZWN0IHRo aW5ncyBsaWtlICJjbGFzczUgKmZvbyIgcmF0aGVyIHRoYW4gInN0cnVjdCBjbGFzczUgKmZvbyIu ICAqLw0KKyANCisgICBpZiAoc2hvdyA8PSAwDQorICAgICAgICYmIFRZUEVfTkFNRSAodHlwZSkg IT0gTlVMTCkNCisgICAgIHsNCisgICAgICAgZnB1dHNfZmlsdGVyZWQgKFRZUEVfTkFNRSAodHlw ZSksIHN0cmVhbSk7DQorICAgICAgIHJldHVybjsNCisgICAgIH0NCisgDQorICAgQ0hFQ0tfVFlQ RURFRiAodHlwZSk7DQorIA0KKyAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkNCisgICAgIHsN CisgICAgIGNhc2UgVFlQRV9DT0RFX1RZUEVERUY6DQorICAgICBjYXNlIFRZUEVfQ09ERV9QVFI6 DQorICAgICBjYXNlIFRZUEVfQ09ERV9NRU1CRVI6DQorICAgICBjYXNlIFRZUEVfQ09ERV9SRUY6 DQorICAgICAgIC8qIGNhc2UgVFlQRV9DT0RFX0ZVTkM6DQorICAgICAgICAgIGNhc2UgVFlQRV9D T0RFX01FVEhPRDogKi8NCisgICAgICAgcGFzX3R5cGVfcHJpbnRfYmFzZSAoVFlQRV9UQVJHRVRf VFlQRSAodHlwZSksIHN0cmVhbSwgc2hvdywgbGV2ZWwpOw0KKyAgICAgICBicmVhazsNCisgDQor ICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToNCisgICAgICAgLyogcGFzX3R5cGVfcHJpbnRfdmFy c3BlY19wcmVmaXggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0sIDAsIDApOw0KKyAg ICAgICAgICBwYXNfdHlwZV9wcmludF9iYXNlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3Ry ZWFtLCBzaG93LCBsZXZlbCk7DQorICAgICAgICAgIHBhc190eXBlX3ByaW50X3ZhcnNwZWNfc3Vm Zml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLCAwLCAwLCAwKTsgKi8NCisgICAg ICAgcGFzX3ByaW50X3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBOVUxMLCBzdHJlYW0s IDAsIDApOw0KKyAgICAgICBicmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9GVU5DOg0K KyAgICAgY2FzZSBUWVBFX0NPREVfTUVUSE9EOg0KKyAgICAgICAvKg0KKyAgICAgICAgICBwYXNf dHlwZV9wcmludF9iYXNlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLCBzaG93LCBs ZXZlbCk7DQorICAgICAgICAgIG9ubHkgYWZ0ZXIgYXJncyAhISAqLw0KKyAgICAgICBicmVhazsN CisgICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoNCisgICAgICAgaWYgKFRZUEVfVEFHX05BTUUg KHR5cGUpICE9IE5VTEwpDQorIAl7DQorIAkgIGZwdXRzX2ZpbHRlcmVkIChUWVBFX1RBR19OQU1F ICh0eXBlKSwgc3RyZWFtKTsNCisgCSAgZnB1dHNfZmlsdGVyZWQgKCIgPSAiLCBzdHJlYW0pOw0K KyAJfQ0KKyAgICAgICBpZiAoSEFWRV9DUExVU19TVFJVQ1QgKHR5cGUpKQ0KKyAJew0KKyAJICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJjbGFzcyAiKTsNCisgCX0NCisgICAgICAgZWxzZQ0K KyAJew0KKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJyZWNvcmQgIik7DQorIAl9DQor ICAgICAgIGdvdG8gc3RydWN0X3VuaW9uOw0KKyANCisgICAgIGNhc2UgVFlQRV9DT0RFX1VOSU9O Og0KKyAgICAgICBpZiAoVFlQRV9UQUdfTkFNRSAodHlwZSkgIT0gTlVMTCkNCisgCXsNCisgCSAg ZnB1dHNfZmlsdGVyZWQgKFRZUEVfVEFHX05BTUUgKHR5cGUpLCBzdHJlYW0pOw0KKyAJICBmcHV0 c19maWx0ZXJlZCAoIiA9ICIsIHN0cmVhbSk7DQorIAl9DQorICAgICAgIGZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgImNhc2UgPD8+IG9mICIpOw0KKyANCisgICAgIHN0cnVjdF91bmlvbjoNCisg ICAgICAgd3JhcF9oZXJlICgiICAgICIpOw0KKyAgICAgICBpZiAoc2hvdyA8IDApDQorIAl7DQor IAkgIC8qIElmIHdlIGp1c3QgcHJpbnRlZCBhIHRhZyBuYW1lLCBubyBuZWVkIHRvIHByaW50IGFu eXRoaW5nIGVsc2UuICAqLw0KKyAJICBpZiAoVFlQRV9UQUdfTkFNRSAodHlwZSkgPT0gTlVMTCkN CisgCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ7Li4ufSIpOw0KKyAJfQ0KKyAgICAg ICBlbHNlIGlmIChzaG93ID4gMCB8fCBUWVBFX1RBR19OQU1FICh0eXBlKSA9PSBOVUxMKQ0KKyAJ ew0KKyAJICBwY3Bhc190eXBlX3ByaW50X2Rlcml2YXRpb25faW5mbyAoc3RyZWFtLCB0eXBlKTsN CisgDQorIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7DQorIAkgIGlmICgoVFlQ RV9ORklFTERTICh0eXBlKSA9PSAwKSAmJiAoVFlQRV9ORk5fRklFTERTICh0eXBlKSA9PSAwKSkN CisgCSAgICB7DQorIAkgICAgICBpZiAoVFlQRV9GTEFHUyAodHlwZSkgJiBUWVBFX0ZMQUdfU1RV QikNCisgCQlmcHJpbnRmaV9maWx0ZXJlZCAobGV2ZWwgKyA0LCBzdHJlYW0sICI8aW5jb21wbGV0 ZSB0eXBlPlxuIik7DQorIAkgICAgICBlbHNlDQorIAkJZnByaW50ZmlfZmlsdGVyZWQgKGxldmVs ICsgNCwgc3RyZWFtLCAiPG5vIGRhdGEgZmllbGRzPlxuIik7DQorIAkgICAgfQ0KKyANCisgCSAg LyogU3RhcnQgb2ZmIHdpdGggbm8gc3BlY2lmaWMgc2VjdGlvbiB0eXBlLCBzbyB3ZSBjYW4gcHJp bnQNCisgCSAgICAgb25lIGZvciB0aGUgZmlyc3QgZmllbGQgd2UgZmluZCwgYW5kIHVzZSB0aGF0 IHNlY3Rpb24gdHlwZQ0KKyAJICAgICB0aGVyZWFmdGVyIHVudGlsIHdlIGZpbmQgYW5vdGhlciB0 eXBlLiAqLw0KKyANCisgCSAgc2VjdGlvbl90eXBlID0gc19ub25lOw0KKyANCisgCSAgLyogSWYg dGhlcmUgaXMgYSBiYXNlIGNsYXNzIGZvciB0aGlzIHR5cGUsDQorIAkgICAgIGRvIG5vdCBwcmlu dCB0aGUgZmllbGQgdGhhdCBpdCBvY2N1cGllcy4gICovDQorIA0KKyAJICBsZW4gPSBUWVBFX05G SUVMRFMgKHR5cGUpOw0KKyAJICBmb3IgKGkgPSBUWVBFX05fQkFTRUNMQVNTRVMgKHR5cGUpOyBp IDwgbGVuOyBpKyspDQorIAkgICAgew0KKyAJICAgICAgUVVJVDsNCisgCSAgICAgIC8qIERvbid0 IHByaW50IG91dCB2aXJ0dWFsIGZ1bmN0aW9uIHRhYmxlLiAgKi8NCisgCSAgICAgIGlmIChTVFJF UU4gKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSksICJfdnB0ciIsIDUpDQorIAkJICAmJiBpc19j cGx1c19tYXJrZXIgKChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpKVs1XSkpDQorIAkJY29udGlu dWU7DQorIA0KKyAJICAgICAgLyogSWYgdGhpcyBpcyBhIEMrKyBjbGFzcyB3ZSBjYW4gcHJpbnQg dGhlIHZhcmlvdXMgQysrIHNlY3Rpb24NCisgCSAgICAgICAgIGxhYmVscy4gKi8NCisgDQorIAkg ICAgICBpZiAoSEFWRV9DUExVU19TVFJVQ1QgKHR5cGUpKQ0KKyAJCXsNCisgCQkgIGlmIChUWVBF X0ZJRUxEX1BST1RFQ1RFRCAodHlwZSwgaSkpDQorIAkJICAgIHsNCisgCQkgICAgICBpZiAoc2Vj dGlvbl90eXBlICE9IHNfcHJvdGVjdGVkKQ0KKyAJCQl7DQorIAkJCSAgc2VjdGlvbl90eXBlID0g c19wcm90ZWN0ZWQ7DQorIAkJCSAgZnByaW50ZmlfZmlsdGVyZWQgKGxldmVsICsgMiwgc3RyZWFt LA0KKyAJCQkJCSAgICAgInByb3RlY3RlZFxuIik7DQorIAkJCX0NCisgCQkgICAgfQ0KKyAJCSAg ZWxzZSBpZiAoVFlQRV9GSUVMRF9QUklWQVRFICh0eXBlLCBpKSkNCisgCQkgICAgew0KKyAJCSAg ICAgIGlmIChzZWN0aW9uX3R5cGUgIT0gc19wcml2YXRlKQ0KKyAJCQl7DQorIAkJCSAgc2VjdGlv bl90eXBlID0gc19wcml2YXRlOw0KKyAJCQkgIGZwcmludGZpX2ZpbHRlcmVkIChsZXZlbCArIDIs IHN0cmVhbSwgInByaXZhdGVcbiIpOw0KKyAJCQl9DQorIAkJICAgIH0NCisgCQkgIGVsc2UNCisg CQkgICAgew0KKyAJCSAgICAgIGlmIChzZWN0aW9uX3R5cGUgIT0gc19wdWJsaWMpDQorIAkJCXsN CisgCQkJICBzZWN0aW9uX3R5cGUgPSBzX3B1YmxpYzsNCisgCQkJICBmcHJpbnRmaV9maWx0ZXJl ZCAobGV2ZWwgKyAyLCBzdHJlYW0sICJwdWJsaWNcbiIpOw0KKyAJCQl9DQorIAkJICAgIH0NCisg CQl9DQorIA0KKyAJICAgICAgcHJpbnRfc3BhY2VzX2ZpbHRlcmVkIChsZXZlbCArIDQsIHN0cmVh bSk7DQorIAkgICAgICBpZiAoVFlQRV9GSUVMRF9TVEFUSUMgKHR5cGUsIGkpKQ0KKyAJCXsNCisg CQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgInN0YXRpYyAiKTsNCisgCQl9DQorIAkgICAg ICBwYXNfcHJpbnRfdHlwZSAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwNCisgCQkJICAgICAg VFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSwNCisgCQkJICAgICAgc3RyZWFtLCBzaG93IC0gMSwg bGV2ZWwgKyA0KTsNCisgCSAgICAgIGlmICghVFlQRV9GSUVMRF9TVEFUSUMgKHR5cGUsIGkpDQor IAkJICAmJiBUWVBFX0ZJRUxEX1BBQ0tFRCAodHlwZSwgaSkpDQorIAkJew0KKyAJCSAgLyogSXQg aXMgYSBiaXRmaWVsZC4gIFRoaXMgY29kZSBkb2VzIG5vdCBhdHRlbXB0DQorIAkJICAgICB0byBs b29rIGF0IHRoZSBiaXRwb3MgYW5kIHJlY29uc3RydWN0IGZpbGxlciwNCisgCQkgICAgIHVubmFt ZWQgZmllbGRzLiAgVGhpcyB3b3VsZCBsZWFkIHRvIG1pc2xlYWRpbmcNCisgCQkgICAgIHJlc3Vs dHMgaWYgdGhlIGNvbXBpbGVyIGRvZXMgbm90IHB1dCBvdXQgZmllbGRzDQorIAkJICAgICBmb3Ig c3VjaCB0aGluZ3MgKEkgZG9uJ3Qga25vdyB3aGF0IGl0IGRvZXMpLiAgKi8NCisgCQkgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIiA6ICVkIiwNCisgCQkJCSAgICBUWVBFX0ZJRUxEX0JJVFNJ WkUgKHR5cGUsIGkpKTsNCisgCQl9DQorIAkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0s ICI7XG4iKTsNCisgCSAgICB9DQorIA0KKyAJICAvKiBJZiB0aGVyZSBhcmUgYm90aCBmaWVsZHMg YW5kIG1ldGhvZHMsIHB1dCBhIHNwYWNlIGJldHdlZW4uICovDQorIAkgIGxlbiA9IFRZUEVfTkZO X0ZJRUxEUyAodHlwZSk7DQorIAkgIGlmIChsZW4gJiYgc2VjdGlvbl90eXBlICE9IHNfbm9uZSkN CisgCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJcbiIpOw0KKyANCisgCSAgLyogQysr OiBwcmludCBvdXQgdGhlIG1ldGhvZHMgKi8NCisgDQorIAkgIGZvciAoaSA9IDA7IGkgPCBsZW47 IGkrKykNCisgCSAgICB7DQorIAkgICAgICBzdHJ1Y3QgZm5fZmllbGQgKmYgPSBUWVBFX0ZOX0ZJ RUxETElTVDEgKHR5cGUsIGkpOw0KKyAJICAgICAgaW50IGosIGxlbjIgPSBUWVBFX0ZOX0ZJRUxE TElTVF9MRU5HVEggKHR5cGUsIGkpOw0KKyAJICAgICAgY2hhciAqbWV0aG9kX25hbWUgPSBUWVBF X0ZOX0ZJRUxETElTVF9OQU1FICh0eXBlLCBpKTsNCisgCSAgICAgIGNoYXIgKm5hbWUgPSB0eXBl X25hbWVfbm9fdGFnICh0eXBlKTsNCisgCSAgICAgIC8qIHRoaXMgaXMgQysrIHNwZWNpZmljDQor IAkgICAgICAgICBob3cgY2FuIHdlIGtub3cgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciA/PyAqLw0K KyAJICAgICAgZm9yIChqID0gMDsgaiA8IGxlbjI7IGorKykNCisgCQl7DQorIAkJICBjaGFyICpw aHlzbmFtZSA9IFRZUEVfRk5fRklFTERfUEhZU05BTUUgKGYsIGopOw0KKyANCisgCQkgIGludCBp c19jb25zdHJ1Y3RvciA9IFNUUkVRTiAocGh5c25hbWUsICJfX2N0X18iLCA2KTsNCisgCQkgIGlu dCBpc19kZXN0cnVjdG9yID0gU1RSRVFOIChwaHlzbmFtZSwgIl9fZHRfXyIsIDYpOw0KKyANCisg CQkgIFFVSVQ7DQorIAkJICBpZiAoVFlQRV9GTl9GSUVMRF9QUk9URUNURUQgKGYsIGopKQ0KKyAJ CSAgICB7DQorIAkJICAgICAgaWYgKHNlY3Rpb25fdHlwZSAhPSBzX3Byb3RlY3RlZCkNCisgCQkJ ew0KKyAJCQkgIHNlY3Rpb25fdHlwZSA9IHNfcHJvdGVjdGVkOw0KKyAJCQkgIGZwcmludGZpX2Zp bHRlcmVkIChsZXZlbCArIDIsIHN0cmVhbSwNCisgCQkJCQkgICAgICJwcm90ZWN0ZWRcbiIpOw0K KyAJCQl9DQorIAkJICAgIH0NCisgCQkgIGVsc2UgaWYgKFRZUEVfRk5fRklFTERfUFJJVkFURSAo ZiwgaikpDQorIAkJICAgIHsNCisgCQkgICAgICBpZiAoc2VjdGlvbl90eXBlICE9IHNfcHJpdmF0 ZSkNCisgCQkJew0KKyAJCQkgIHNlY3Rpb25fdHlwZSA9IHNfcHJpdmF0ZTsNCisgCQkJICBmcHJp bnRmaV9maWx0ZXJlZCAobGV2ZWwgKyAyLCBzdHJlYW0sICJwcml2YXRlXG4iKTsNCisgCQkJfQ0K KyAJCSAgICB9DQorIAkJICBlbHNlDQorIAkJICAgIHsNCisgCQkgICAgICBpZiAoc2VjdGlvbl90 eXBlICE9IHNfcHVibGljKQ0KKyAJCQl7DQorIAkJCSAgc2VjdGlvbl90eXBlID0gc19wdWJsaWM7 DQorIAkJCSAgZnByaW50ZmlfZmlsdGVyZWQgKGxldmVsICsgMiwgc3RyZWFtLCAicHVibGljXG4i KTsNCisgCQkJfQ0KKyAJCSAgICB9DQorIA0KKyAJCSAgcHJpbnRfc3BhY2VzX2ZpbHRlcmVkIChs ZXZlbCArIDQsIHN0cmVhbSk7DQorIAkJICBpZiAoVFlQRV9GTl9GSUVMRF9TVEFUSUNfUCAoZiwg aikpDQorIAkJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgInN0YXRpYyAiKTsNCisgCQkg IGlmIChUWVBFX1RBUkdFVF9UWVBFIChUWVBFX0ZOX0ZJRUxEX1RZUEUgKGYsIGopKSA9PSAwKQ0K KyAJCSAgICB7DQorIAkJICAgICAgLyogS2VlcCBHREIgZnJvbSBjcmFzaGluZyBoZXJlLiAgKi8N CisgCQkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICI8dW5kZWZpbmVkIHR5cGU+ICVz O1xuIiwNCisgCQkJCQlUWVBFX0ZOX0ZJRUxEX1BIWVNOQU1FIChmLCBqKSk7DQorIAkJICAgICAg YnJlYWs7DQorIAkJICAgIH0NCisgDQorIAkJICBpZiAoaXNfY29uc3RydWN0b3IpDQorIAkJICAg IHsNCisgCQkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJjb25zdHJ1Y3RvciAiKTsN CisgCQkgICAgfQ0KKyAJCSAgZWxzZSBpZiAoaXNfZGVzdHJ1Y3RvcikNCisgCQkgICAgew0KKyAJ CSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgImRlc3RydWN0b3IgICIpOw0KKyAJCSAg ICB9DQorIAkJICBlbHNlIGlmIChUWVBFX1RBUkdFVF9UWVBFIChUWVBFX0ZOX0ZJRUxEX1RZUEUg KGYsIGopKSAhPSAwICYmDQorIAkJCSAgIFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAoVFlQ RV9GTl9GSUVMRF9UWVBFIChmLCBqKSkpICE9IFRZUEVfQ09ERV9WT0lEKQ0KKyAJCSAgICB7DQor IAkJICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiZnVuY3Rpb24gICIpOw0KKyAJCSAg ICB9DQorIAkJICBlbHNlDQorIAkJICAgIHsNCisgCQkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sICJwcm9jZWR1cmUgIik7DQorIAkJICAgIH0NCisgCQkgIC8qIHRoaXMgZG9lcyBub3Qg d29yaywgbm8gaWRlYSB3aHkgISEgKi8NCisgDQorIAkJICBwYXNfdHlwZV9wcmludF9tZXRob2Rf YXJncyAocGh5c25hbWUsDQorIAkJCQkJICAgICAgbWV0aG9kX25hbWUsDQorIAkJCQkJICAgICAg c3RyZWFtKTsNCisgDQorIAkJICBpZiAoVFlQRV9UQVJHRVRfVFlQRSAoVFlQRV9GTl9GSUVMRF9U WVBFIChmLCBqKSkgIT0gMCAmJg0KKyAJCSAgICAgIFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQ RSAoVFlQRV9GTl9GSUVMRF9UWVBFIChmLCBqKSkpICE9IFRZUEVfQ09ERV9WT0lEKQ0KKyAJCSAg ICB7DQorIAkJICAgICAgZnB1dHNfZmlsdGVyZWQgKCIgOiAiLCBzdHJlYW0pOw0KKyAJCSAgICAg IHR5cGVfcHJpbnQgKFRZUEVfVEFSR0VUX1RZUEUgKFRZUEVfRk5fRklFTERfVFlQRSAoZiwgaikp LA0KKyAJCQkJICAiIiwgc3RyZWFtLCAtMSk7DQorIAkJICAgIH0NCisgCQkgIGlmIChUWVBFX0ZO X0ZJRUxEX1ZJUlRVQUxfUCAoZiwgaikpDQorIAkJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgIjsgdmlydHVhbCIpOw0KKyANCisgCQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIjtc biIpOw0KKyAJCX0NCisgCSAgICB9DQorIAkgIGZwcmludGZpX2ZpbHRlcmVkIChsZXZlbCwgc3Ry ZWFtLCAiZW5kIik7DQorIAl9DQorICAgICAgIGJyZWFrOw0KKyANCisgICAgIGNhc2UgVFlQRV9D T0RFX0VOVU06DQorICAgICAgIGlmIChUWVBFX1RBR19OQU1FICh0eXBlKSAhPSBOVUxMKQ0KKyAJ ew0KKyAJICBmcHV0c19maWx0ZXJlZCAoVFlQRV9UQUdfTkFNRSAodHlwZSksIHN0cmVhbSk7DQor IAkgIGlmIChzaG93ID4gMCkNCisgCSAgICBmcHV0c19maWx0ZXJlZCAoIiAiLCBzdHJlYW0pOw0K KyAJfQ0KKyAgICAgICAvKiBlbnVtIGlzIGp1c3QgZGVmaW5lZCBieQ0KKyAgICAgICAgICB0eXBl IGVudW1lX25hbWUgPSAoZW51bV9tZW1iZXIxLGVudW1fbWVtYmVyMiwuLi4pICovDQorICAgICAg IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiA9ICIpOw0KKyAgICAgICB3cmFwX2hlcmUgKCIg ICAgIik7DQorICAgICAgIGlmIChzaG93IDwgMCkNCisgCXsNCisgCSAgLyogSWYgd2UganVzdCBw cmludGVkIGEgdGFnIG5hbWUsIG5vIG5lZWQgdG8gcHJpbnQgYW55dGhpbmcgZWxzZS4gICovDQor IAkgIGlmIChUWVBFX1RBR19OQU1FICh0eXBlKSA9PSBOVUxMKQ0KKyAJICAgIGZwcmludGZfZmls dGVyZWQgKHN0cmVhbSwgIiguLi4pIik7DQorIAl9DQorICAgICAgIGVsc2UgaWYgKHNob3cgPiAw IHx8IFRZUEVfVEFHX05BTUUgKHR5cGUpID09IE5VTEwpDQorIAl7DQorIAkgIGZwcmludGZfZmls dGVyZWQgKHN0cmVhbSwgIigiKTsNCisgCSAgbGVuID0gVFlQRV9ORklFTERTICh0eXBlKTsNCisg CSAgbGFzdHZhbCA9IDA7DQorIAkgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykNCisgCSAgICB7 DQorIAkgICAgICBRVUlUOw0KKyAJICAgICAgaWYgKGkpDQorIAkJZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiLCAiKTsNCisgCSAgICAgIHdyYXBfaGVyZSAoIiAgICAiKTsNCisgCSAgICAgIGZw dXRzX2ZpbHRlcmVkIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpLCBzdHJlYW0pOw0KKyAJICAg ICAgaWYgKGxhc3R2YWwgIT0gVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkpKQ0KKyAJCXsNCisg CQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiA6PSAlZCIsIFRZUEVfRklFTERfQklUUE9T ICh0eXBlLCBpKSk7DQorIAkJICBsYXN0dmFsID0gVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkp Ow0KKyAJCX0NCisgCSAgICAgIGxhc3R2YWwrKzsNCisgCSAgICB9DQorIAkgIGZwcmludGZfZmls dGVyZWQgKHN0cmVhbSwgIikiKTsNCisgCX0NCisgICAgICAgYnJlYWs7DQorIA0KKyAgICAgY2Fz ZSBUWVBFX0NPREVfVk9JRDoNCisgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAidm9p ZCIpOw0KKyAgICAgICBicmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9VTkRFRjoNCisg ICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAicmVjb3JkIDx1bmtub3duPiIpOw0KKyAg ICAgICBicmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9FUlJPUjoNCisgICAgICAgZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiPHVua25vd24gdHlwZT4iKTsNCisgICAgICAgYnJlYWs7 DQorIA0KKyAgICAgICAvKiB0aGlzIHByb2JhYmx5IGRvZXMgbm90IHdvcmsgZm9yIGVudW1zICov DQorICAgICBjYXNlIFRZUEVfQ09ERV9SQU5HRToNCisgICAgICAgew0KKyAJc3RydWN0IHR5cGUg KnRhcmdldCA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOw0KKyAJaWYgKHRhcmdldCA9PSBOVUxM KQ0KKyAJICB0YXJnZXQgPSBidWlsdGluX3R5cGVfbG9uZzsNCisgCXByaW50X3R5cGVfc2NhbGFy ICh0YXJnZXQsIFRZUEVfTE9XX0JPVU5EICh0eXBlKSwgc3RyZWFtKTsNCisgCWZwdXRzX2ZpbHRl cmVkICgiLi4iLCBzdHJlYW0pOw0KKyAJcHJpbnRfdHlwZV9zY2FsYXIgKHRhcmdldCwgVFlQRV9I SUdIX0JPVU5EICh0eXBlKSwgc3RyZWFtKTsNCisgICAgICAgfQ0KKyAgICAgICBicmVhazsNCisg DQorICAgICBjYXNlIFRZUEVfQ09ERV9TRVQ6DQorICAgICAgIGZwdXRzX2ZpbHRlcmVkICgic2V0 IG9mICIsIHN0cmVhbSk7DQorICAgICAgIHBhc19wcmludF90eXBlIChUWVBFX0lOREVYX1RZUEUg KHR5cGUpLCAiIiwgc3RyZWFtLA0KKyAJCSAgICAgIHNob3cgLSAxLCBsZXZlbCk7DQorICAgICAg IGJyZWFrOw0KKyANCisgICAgIGRlZmF1bHQ6DQorICAgICAgIC8qIEhhbmRsZSB0eXBlcyBub3Qg ZXhwbGljaXRseSBoYW5kbGVkIGJ5IHRoZSBvdGhlciBjYXNlcywNCisgICAgICAgICAgc3VjaCBh cyBmdW5kYW1lbnRhbCB0eXBlcy4gIEZvciB0aGVzZSwganVzdCBwcmludCB3aGF0ZXZlcg0KKyAg ICAgICAgICB0aGUgdHlwZSBuYW1lIGlzLCBhcyByZWNvcmRlZCBpbiB0aGUgdHlwZSBpdHNlbGYu ICBJZiB0aGVyZQ0KKyAgICAgICAgICBpcyBubyB0eXBlIG5hbWUsIHRoZW4gY29tcGxhaW4uICov DQorICAgICAgIGlmIChUWVBFX05BTUUgKHR5cGUpICE9IE5VTEwpDQorIAl7DQorIAkgIGZwdXRz X2ZpbHRlcmVkIChUWVBFX05BTUUgKHR5cGUpLCBzdHJlYW0pOw0KKyAJfQ0KKyAgICAgICBlbHNl DQorIAl7DQorIAkgIC8qIEF0IGxlYXN0IGZvciBkdW1wX3N5bXRhYiwgaXQgaXMgaW1wb3J0YW50 IHRoYXQgdGhpcyBub3QgYmUNCisgCSAgICAgYW4gZXJyb3IgKCkuICAqLw0KKyAJICBmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sICI8aW52YWxpZCB1bm5hbWVkIHBhc2NhbCB0eXBlIGNvZGUgJWQ+ IiwNCisgCQkJICAgIFRZUEVfQ09ERSAodHlwZSkpOw0KKyAJfQ0KKyAgICAgICBicmVhazsNCisg ICAgIH0NCisgfQ0KKyANCisgLyoNCisgICAgJExvZzogcC10eXBlcHJpbnQuYyx2ICQNCisgICAg UmV2aXNpb24gMS4yICAxOTk5LzEwLzI5IDExOjU3OjA2ICBwaWVycmUNCisgICAgKiBhdm9pZCBO VUxMIGRlcmVmZXJlbmNlDQorIA0KKyAgICBSZXZpc2lvbiAxLjEgIDE5OTkvMDkvMDcgMTE6NDA6 MTkgIHBpZXJyZQ0KKyAgICBGaXJzdCBpbXBvcnQgb2YgcGFzY2FsIGdkYiA0LjE4IGNoYW5nZXMN CisgDQorICAgIFJldmlzaW9uIDEuMSAgMTk5OS8wMS8yNSAyMDozMDozMSAgcGV0ZXINCisgICAg KyBmaXJzdCB2ZXJzaW9uDQorIA0KKyAgICBSZXZpc2lvbiAxLjIgIDE5OTkvMDEvMDUgMDg6Mzk6 MzYgIHBpZXJyZQ0KKyAgICArIGRiZ2NvbS5oIGFuZCBkYmdjb20uYyBtb2RpZmllZCBieSBBbmRy aXMgUGF2ZW5pcw0KKyAgICArIGFkZGVkIGNvZGUgZm9yIE1NWCBzdGF0ZSBkZXRlY3Rpb24gYW5k IGRpc3BsYXkNCisgICAgKHN0aWxsIHVnZ2x5IDoNCisgICAgRlBVIHN0YWNrIHNob3duIGJ5ICJp bmZvIGFsbCINCisgICAgTU1YIHJlZ2lzdGVycyBzaG93biBieSAiaW5mbyBmbG9hdCIgaWYgaW4g TU1YIG1vZGUpDQorIA0KKyAgICBSZXZpc2lvbiAxLjIgIDE5OTgvMTIvMjMgMTU6NTM6MDYgIFBp ZXJyZQ0KKyAgICBleGNlcHRpb25zIGFuZCBmbG9hdGluZm8NCisgDQorICAgIFJldmlzaW9uIDEu MSAgMTk5OC8xMi8xOCAxODoyNTo1MCAgcGllcnJlDQorICAgIGZpcnN0IERKR1BQIHY0LjE2IGZv ciBwYXNjYWwgd2l0aCBleGNlcHRpb24gZGVidWdnaW5nIGNhcGFiaWxpdGllcw0KKyANCisgICAg UmV2aXNpb24gMS4xICAxOTk4LzEyLzA0IDEwOjMxOjQ5ICBkb3N1c2VyDQorICAgICsgZmlyc3Qg dmVyc2lvbiB3aXRoIHBhc2NhbCBzeW50YXgNCisgDQorICAgIFJldmlzaW9uIDEuMSAgMTk5OC8w OS8xOCAxMjozNzozOSAgcGllcnJlDQorICAqLw0KKioqIHAtdmFscHJpbnQuYy5vcmkJRnJpIE1h ciAgMyAxNDoyMzozMCAyMDAwDQotLS0gcC12YWxwcmludC5jCUZyaSBNYXIgIDMgMTM6MjQ6MDgg MjAwMA0KKioqKioqKioqKioqKioqDQoqKiogMCAqKioqDQotLS0gMSwxMTY0IC0tLS0NCisgLyog U3VwcG9ydCBmb3IgcHJpbnRpbmcgQyB2YWx1ZXMgZm9yIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4N CisgICAgQ29weXJpZ2h0IDE5ODYsIDE5ODgsIDE5ODksIDE5OTEsIDE5OTIsIDE5OTMsIDE5OTQs IDE5OTUsIDE5OTYsIDE5OTcNCisgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQor IA0KKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuDQorIA0KKyAgICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0K KyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQ0KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KKyAgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLg0KKyANCisgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUN CisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisgDQor ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlDQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlDQorICAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ bGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLw0KKyANCisg I2luY2x1ZGUgImRlZnMuaCINCisgI2luY2x1ZGUgIm9ic3RhY2suaCINCisgI2luY2x1ZGUgInN5 bXRhYi5oIg0KKyAjaW5jbHVkZSAiZ2RidHlwZXMuaCINCisgI2luY2x1ZGUgImV4cHJlc3Npb24u aCINCisgI2luY2x1ZGUgInZhbHVlLmgiDQorICNpbmNsdWRlICJjb21tYW5kLmgiDQorICNpbmNs dWRlICJnZGJjbWQuaCINCisgI2luY2x1ZGUgImRlbWFuZ2xlLmgiDQorICNpbmNsdWRlICJ2YWxw cmludC5oIg0KKyAjaW5jbHVkZSAibGFuZ3VhZ2UuaCINCisgI2luY2x1ZGUgInAtbGFuZy5oIg0K KyAMDQorIA0KKyANCisgDQorIC8qIFByaW50IGRhdGEgb2YgdHlwZSBUWVBFIGxvY2F0ZWQgYXQg VkFMQUREUiAod2l0aGluIEdEQiksIHdoaWNoIGNhbWUgZnJvbQ0KKyAgICB0aGUgaW5mZXJpb3Ig YXQgYWRkcmVzcyBBRERSRVNTLCBvbnRvIHN0ZGlvIHN0cmVhbSBTVFJFQU0gYWNjb3JkaW5nIHRv DQorICAgIEZPUk1BVCAoYSBsZXR0ZXIgb3IgMCBmb3IgbmF0dXJhbCBmb3JtYXQpLiAgVGhlIGRh dGEgYXQgVkFMQUREUiBpcyBpbg0KKyAgICB0YXJnZXQgYnl0ZSBvcmRlci4NCisgDQorICAgIElm IHRoZSBkYXRhIGFyZSBhIHN0cmluZyBwb2ludGVyLCByZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3Ry aW5nIGNoYXJhY3RlcnMNCisgICAgcHJpbnRlZC4NCisgDQorICAgIElmIERFUkVGX1JFRiBpcyBu b256ZXJvLCB0aGVuIGRlcmVmZXJlbmNlIHJlZmVyZW5jZXMsIG90aGVyd2lzZSBqdXN0IHByaW50 DQorICAgIHRoZW0gbGlrZSBwb2ludGVycy4NCisgDQorICAgIFRoZSBQUkVUVFkgcGFyYW1ldGVy IGNvbnRyb2xzIHByZXR0eXByaW50aW5nLiAgKi8NCisgDQorIA0KKyBpbnQNCisgcGFzX3ZhbF9w cmludCAodHlwZSwgdmFsYWRkciwgZW1iZWRkZWRfb2Zmc2V0LCBhZGRyZXNzLCBzdHJlYW0sIGZv cm1hdCwgZGVyZWZfcmVmLCByZWN1cnNlLA0KKyAJICAgICAgIHByZXR0eSkNCisgICAgICBzdHJ1 Y3QgdHlwZSAqdHlwZTsNCisgICAgICBjaGFyICp2YWxhZGRyOw0KKyAgICAgIGludCBlbWJlZGRl ZF9vZmZzZXQ7DQorICAgICAgQ09SRV9BRERSIGFkZHJlc3M7DQorICAgICAgc3RydWN0IHVpX2Zp bGUgKnN0cmVhbTsNCisgICAgICBpbnQgZm9ybWF0Ow0KKyAgICAgIGludCBkZXJlZl9yZWY7DQor ICAgICAgaW50IHJlY3Vyc2U7DQorICAgICAgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5Ow0K KyB7DQorICAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGkgPSAwOwkvKiBOdW1iZXIgb2YgY2hhcmFj dGVycyBwcmludGVkICovDQorICAgdW5zaWduZWQgbGVuOw0KKyAgIHN0cnVjdCB0eXBlICplbHR0 eXBlOw0KKyAgIHVuc2lnbmVkIGVsdGxlbjsNCisgICBMT05HRVNUIHZhbDsNCisgICBDT1JFX0FE RFIgYWRkcjsNCisgDQorICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7DQorICAgc3dpdGNoIChUWVBF X0NPREUgKHR5cGUpKQ0KKyAgICAgew0KKyAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6DQorICAg ICAgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPiAwICYmIFRZUEVfTEVOR1RIIChUWVBFX1RBUkdF VF9UWVBFICh0eXBlKSkgPiAwKQ0KKyAJew0KKyAJICBlbHR0eXBlID0gY2hlY2tfdHlwZWRlZiAo VFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOw0KKyAJICBlbHRsZW4gPSBUWVBFX0xFTkdUSCAoZWx0 dHlwZSk7DQorIAkgIGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKSAvIGVsdGxlbjsNCisgCSAgaWYg KHByZXR0eXByaW50X2FycmF5cykNCisgCSAgICB7DQorIAkgICAgICBwcmludF9zcGFjZXNfZmls dGVyZWQgKDIgKyAyICogcmVjdXJzZSwgc3RyZWFtKTsNCisgCSAgICB9DQorIAkgIC8qIEZvciBh biBhcnJheSBvZiBjaGFycywgcHJpbnQgd2l0aCBzdHJpbmcgc3ludGF4LiAgKi8NCisgCSAgaWYg KGVsdGxlbiA9PSAxICYmDQorIAkgICAgICAoKFRZUEVfQ09ERSAoZWx0dHlwZSkgPT0gVFlQRV9D T0RFX0lOVCkNCisgCSAgICAgICB8fCAoKGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlID09 IGxhbmd1YWdlX20yKQ0KKyAJCSAgICYmIChUWVBFX0NPREUgKGVsdHR5cGUpID09IFRZUEVfQ09E RV9DSEFSKSkpDQorIAkgICAgICAmJiAoZm9ybWF0ID09IDAgfHwgZm9ybWF0ID09ICdzJykpDQor IAkgICAgew0KKyAJICAgICAgLyogSWYgcmVxdWVzdGVkLCBsb29rIGZvciB0aGUgZmlyc3QgbnVs bCBjaGFyIGFuZCBvbmx5IHByaW50DQorIAkgICAgICAgICBlbGVtZW50cyB1cCB0byBpdC4gICov DQorIAkgICAgICBpZiAoc3RvcF9wcmludF9hdF9udWxsKQ0KKyAJCXsNCisgCQkgIHVuc2lnbmVk IGludCB0ZW1wX2xlbjsNCisgDQorIAkJICAvKiBMb29rIGZvciBhIE5VTEwgY2hhci4gKi8NCisg CQkgIGZvciAodGVtcF9sZW4gPSAwOw0KKyAJCSAgICAgICAodmFsYWRkciArIGVtYmVkZGVkX29m ZnNldClbdGVtcF9sZW5dDQorIAkJICAgICAgICYmIHRlbXBfbGVuIDwgbGVuICYmIHRlbXBfbGVu IDwgcHJpbnRfbWF4Ow0KKyAJCSAgICAgICB0ZW1wX2xlbisrKTsNCisgCQkgIGxlbiA9IHRlbXBf bGVuOw0KKyAJCX0NCisgDQorIAkgICAgICBMQV9QUklOVF9TVFJJTkcgKHN0cmVhbSwgdmFsYWRk ciArIGVtYmVkZGVkX29mZnNldCwgbGVuLCAxLCAwKTsNCisgCSAgICAgIGkgPSBsZW47DQorIAkg ICAgfQ0KKyAJICBlbHNlDQorIAkgICAgew0KKyAJICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAieyIpOw0KKyAJICAgICAgLyogSWYgdGhpcyBpcyBhIHZpcnR1YWwgZnVuY3Rpb24gdGFi bGUsIHByaW50IHRoZSAwdGgNCisgCSAgICAgICAgIGVudHJ5IHNwZWNpYWxseSwgYW5kIHRoZSBy ZXN0IG9mIHRoZSBtZW1iZXJzIG5vcm1hbGx5LiAgKi8NCisgCSAgICAgIGlmIChwYXNfY3BfaXNf dnRibF9wdHJfdHlwZSAoZWx0dHlwZSkpDQorIAkJew0KKyAJCSAgaSA9IDE7DQorIAkJICBmcHJp bnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZCB2dGFibGUgZW50cmllcyIsIGxlbiAtIDEpOw0KKyAJ CX0NCisgCSAgICAgIGVsc2UNCisgCQl7DQorIAkJICBpID0gMDsNCisgCQl9DQorIAkgICAgICB2 YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHR5cGUsIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQs IGFkZHJlc3MsIHN0cmVhbSwNCisgCQkJCSAgICAgZm9ybWF0LCBkZXJlZl9yZWYsIHJlY3Vyc2Us IHByZXR0eSwgaSk7DQorIAkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ9Iik7DQor IAkgICAgfQ0KKyAJICBicmVhazsNCisgCX0NCisgICAgICAgLyogQXJyYXkgb2YgdW5zcGVjaWZp ZWQgbGVuZ3RoOiB0cmVhdCBsaWtlIHBvaW50ZXIgdG8gZmlyc3QgZWx0LiAgKi8NCisgICAgICAg YWRkciA9IGFkZHJlc3M7DQorICAgICAgIGdvdG8gcHJpbnRfdW5wYWNrZWRfcG9pbnRlcjsNCisg DQorICAgICBjYXNlIFRZUEVfQ09ERV9QVFI6DQorICAgICAgIGlmIChmb3JtYXQgJiYgZm9ybWF0 ICE9ICdzJykNCisgCXsNCisgCSAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciArIGVt YmVkZGVkX29mZnNldCwgdHlwZSwgZm9ybWF0LCAwLCBzdHJlYW0pOw0KKyAJICBicmVhazsNCisg CX0NCisgICAgICAgaWYgKHZ0YmxwcmludCAmJiBwYXNfY3BfaXNfdnRibF9wdHJfdHlwZSAodHlw ZSkpDQorIAl7DQorIAkgIC8qIFByaW50IHRoZSB1bm1hbmdsZWQgbmFtZSBpZiBkZXNpcmVkLiAg Ki8NCisgCSAgLyogUHJpbnQgdnRhYmxlIGVudHJ5IC0gd2Ugb25seSBnZXQgaGVyZSBpZiB3ZSBB UkUgdXNpbmcNCisgCSAgICAgLWZ2dGFibGVfdGh1bmtzLiAgKE90aGVyd2lzZSwgbG9vayB1bmRl ciBUWVBFX0NPREVfU1RSVUNULikgKi8NCisgCSAgcHJpbnRfYWRkcmVzc19kZW1hbmdsZSAoZXh0 cmFjdF9hZGRyZXNzICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCBUWVBFX0xFTkdUSCAodHlw ZSkpLA0KKyAJCQkJICBzdHJlYW0sIGRlbWFuZ2xlKTsNCisgCSAgYnJlYWs7DQorIAl9DQorICAg ICAgIGVsdHR5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7DQor ICAgICAgIGlmIChUWVBFX0NPREUgKGVsdHR5cGUpID09IFRZUEVfQ09ERV9NRVRIT0QpDQorIAl7 DQorIAkgIHBhc19jcF9wcmludF9jbGFzc19tZXRob2QgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZz ZXQsIHR5cGUsIHN0cmVhbSk7DQorIAl9DQorICAgICAgIGVsc2UgaWYgKFRZUEVfQ09ERSAoZWx0 dHlwZSkgPT0gVFlQRV9DT0RFX01FTUJFUikNCisgCXsNCisgCSAgcGFzX2NwX3ByaW50X2NsYXNz X21lbWJlciAodmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwNCisgCQkJCSBUWVBFX0RPTUFJTl9U WVBFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSksDQorIAkJCQkgICAgIHN0cmVhbSwgIiYiKTsN CisgCX0NCisgICAgICAgZWxzZQ0KKyAJew0KKyAJICBhZGRyID0gdW5wYWNrX3BvaW50ZXIgKHR5 cGUsIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQpOw0KKyAJcHJpbnRfdW5wYWNrZWRfcG9pbnRl cjoNCisgCSAgZWx0dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp KTsNCisgDQorIAkgIGlmIChUWVBFX0NPREUgKGVsdHR5cGUpID09IFRZUEVfQ09ERV9GVU5DKQ0K KyAJICAgIHsNCisgCSAgICAgIC8qIFRyeSB0byBwcmludCB3aGF0IGZ1bmN0aW9uIGl0IHBvaW50 cyB0by4gICovDQorIAkgICAgICBwcmludF9hZGRyZXNzX2RlbWFuZ2xlIChhZGRyLCBzdHJlYW0s IGRlbWFuZ2xlKTsNCisgCSAgICAgIC8qIFJldHVybiB2YWx1ZSBpcyBpcnJlbGV2YW50IGV4Y2Vw dCBmb3Igc3RyaW5nIHBvaW50ZXJzLiAgKi8NCisgCSAgICAgIHJldHVybiAoMCk7DQorIAkgICAg fQ0KKyANCisgCSAgaWYgKGFkZHJlc3NwcmludCAmJiBmb3JtYXQgIT0gJ3MnKQ0KKyAJICAgIHsN CisgCSAgICAgIHByaW50X2FkZHJlc3NfbnVtZXJpYyAoYWRkciwgMSwgc3RyZWFtKTsNCisgCSAg ICB9DQorIA0KKyAJICAvKiBGb3IgYSBwb2ludGVyIHRvIGNoYXIgb3IgdW5zaWduZWQgY2hhciwg YWxzbyBwcmludCB0aGUgc3RyaW5nDQorIAkgICAgIHBvaW50ZWQgdG8sIHVubGVzcyBwb2ludGVy IGlzIG51bGwuICAqLw0KKyAJICBpZiAoVFlQRV9MRU5HVEggKGVsdHR5cGUpID09IDENCisgCSAg ICAgICYmIFRZUEVfQ09ERSAoZWx0dHlwZSkgPT0gVFlQRV9DT0RFX0lOVA0KKyAJICAgICAgJiYg KGZvcm1hdCA9PSAwIHx8IGZvcm1hdCA9PSAncycpDQorIAkgICAgICAmJiBhZGRyICE9IDApDQor IAkgICAgew0KKyAJICAgICAgLyogbm8gd2lkZSBzdHJpbmcgeWV0ICovDQorIAkgICAgICBpID0g dmFsX3ByaW50X3N0cmluZyAoYWRkciwgLTEsIDEsIHN0cmVhbSk7DQorIAkgICAgfQ0KKyAJICAv KiBhbHNvIGZvciBwb2ludGVycyB0byBwYXNjYWwgc3RyaW5ncyAqLw0KKyAJICBpZiAoVFlQRV9D T0RFIChlbHR0eXBlKSA9PSBUWVBFX0NPREVfU1RSVUNUICYmDQorIAkgICAgICBUWVBFX05GSUVM RFMgKGVsdHR5cGUpID09IDIgJiYNCisgCSAgICAgIHN0cmNtcCAoVFlQRV9GSUVMRFMgKGVsdHR5 cGUpWzBdLm5hbWUsICJsZW5ndGgiKSA9PSAwICYmDQorIAkgICAgICBzdHJjbXAgKFRZUEVfRklF TERTIChlbHR0eXBlKVsxXS5uYW1lLCAic3QiKSA9PSAwICYmDQorIAkgICAgICBhZGRyICE9IDAp DQorIAkgICAgew0KKyAJICAgICAgY2hhciBieXRlbGVuZ3RoOw0KKyAJICAgICAgcmVhZF9tZW1v cnlfc2VjdGlvbiAoYWRkciwgJmJ5dGVsZW5ndGgsIDEsIE5VTEwpOw0KKyAJICAgICAgaSA9IHZh bF9wcmludF9zdHJpbmcgKGFkZHIgKyAxLCBieXRlbGVuZ3RoLCAxLCBzdHJlYW0pOw0KKyAJICAg IH0NCisgCSAgZWxzZSBpZiAocGFzX2NwX2lzX3Z0YmxfbWVtYmVyICh0eXBlKSkNCisgCSAgICB7 DQorIAkgICAgICAvKiBwcmludCB2dGJsJ3MgbmljZWx5ICovDQorIAkgICAgICBDT1JFX0FERFIg dnRfYWRkcmVzcyA9IHVucGFja19wb2ludGVyICh0eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zm c2V0KTsNCisgDQorIAkgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wgPQ0KKyAJ ICAgICAgbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjICh2dF9hZGRyZXNzKTsNCisgCSAgICAg IGlmICgobXN5bWJvbCAhPSBOVUxMKSAmJg0KKyAJCSAgKHZ0X2FkZHJlc3MgPT0gU1lNQk9MX1ZB TFVFX0FERFJFU1MgKG1zeW1ib2wpKSkNCisgCQl7DQorIAkJICBmcHV0c19maWx0ZXJlZCAoIiA8 Iiwgc3RyZWFtKTsNCisgCQkgIGZwdXRzX2ZpbHRlcmVkIChTWU1CT0xfU09VUkNFX05BTUUgKG1z eW1ib2wpLCBzdHJlYW0pOw0KKyAJCSAgZnB1dHNfZmlsdGVyZWQgKCI+Iiwgc3RyZWFtKTsNCisg CQl9DQorIAkgICAgICBpZiAodnRfYWRkcmVzcyAmJiB2dGJscHJpbnQpDQorIAkJew0KKyAJCSAg dmFsdWVfcHRyIHZ0X3ZhbDsNCisgCQkgIHN0cnVjdCBzeW1ib2wgKndzeW0gPSAoc3RydWN0IHN5 bWJvbCAqKSBOVUxMOw0KKyAJCSAgc3RydWN0IHR5cGUgKnd0eXBlOw0KKyAJCSAgc3RydWN0IHN5 bXRhYiAqczsNCisgCQkgIHN0cnVjdCBibG9jayAqYmxvY2sgPSAoc3RydWN0IGJsb2NrICopIE5V TEw7DQorIAkJICBpbnQgaXNfdGhpc19mbGQ7DQorIA0KKyAJCSAgaWYgKG1zeW1ib2wgIT0gTlVM TCkNCisgCQkgICAgd3N5bSA9IGxvb2t1cF9zeW1ib2wgKFNZTUJPTF9OQU1FIChtc3ltYm9sKSwg YmxvY2ssDQorIAkJCQkJICBWQVJfTkFNRVNQQUNFLCAmaXNfdGhpc19mbGQsICZzKTsNCisgDQor IAkJICBpZiAod3N5bSkNCisgCQkgICAgew0KKyAJCSAgICAgIHd0eXBlID0gU1lNQk9MX1RZUEUg KHdzeW0pOw0KKyAJCSAgICB9DQorIAkJICBlbHNlDQorIAkJICAgIHsNCisgCQkgICAgICB3dHlw ZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOw0KKyAJCSAgICB9DQorIAkJICB2dF92YWwgPSB2 YWx1ZV9hdCAod3R5cGUsIHZ0X2FkZHJlc3MsIE5VTEwpOw0KKyAJCSAgdmFsX3ByaW50IChWQUxV RV9UWVBFICh2dF92YWwpLCBWQUxVRV9DT05URU5UUyAodnRfdmFsKSwgMCwNCisgCQkJICAgICBW QUxVRV9BRERSRVNTICh2dF92YWwpLCBzdHJlYW0sIGZvcm1hdCwNCisgCQkJICAgICBkZXJlZl9y ZWYsIHJlY3Vyc2UgKyAxLCBwcmV0dHkpOw0KKyAJCSAgaWYgKHByZXR0eSkNCisgCQkgICAgew0K KyAJCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7DQorIAkJICAgICAgcHJp bnRfc3BhY2VzX2ZpbHRlcmVkICgyICsgMiAqIHJlY3Vyc2UsIHN0cmVhbSk7DQorIAkJICAgIH0N CisgCQl9DQorIAkgICAgfQ0KKyANCisgCSAgLyogUmV0dXJuIG51bWJlciBvZiBjaGFyYWN0ZXJz IHByaW50ZWQsIGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcNCisgCSAgICAgJ1wwJyBpZiB3ZSBy ZWFjaGVkIHRoZSBlbmQuICB2YWxfcHJpbnRfc3RyaW5nIHRha2VzIGNhcmUgaW5jbHVkaW5nDQor IAkgICAgIHRoZSB0ZXJtaW5hdGluZyAnXDAnIGlmIG5lY2Vzc2FyeS4gICovDQorIAkgIHJldHVy biBpOw0KKyAJfQ0KKyAgICAgICBicmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9NRU1C RVI6DQorICAgICAgIGVycm9yICgibm90IGltcGxlbWVudGVkOiBtZW1iZXIgdHlwZSBpbiBwYXNf dmFsX3ByaW50Iik7DQorICAgICAgIGJyZWFrOw0KKyANCisgICAgIGNhc2UgVFlQRV9DT0RFX1JF RjoNCisgICAgICAgZWx0dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpKTsNCisgICAgICAgaWYgKFRZUEVfQ09ERSAoZWx0dHlwZSkgPT0gVFlQRV9DT0RFX01FTUJF UikNCisgCXsNCisgCSAgcGFzX2NwX3ByaW50X2NsYXNzX21lbWJlciAodmFsYWRkciArIGVtYmVk ZGVkX29mZnNldCwNCisgCQkJCSAgICAgVFlQRV9ET01BSU5fVFlQRSAoZWx0dHlwZSksDQorIAkJ CQkgICAgIHN0cmVhbSwgIiIpOw0KKyAJICBicmVhazsNCisgCX0NCisgICAgICAgaWYgKGFkZHJl c3NwcmludCkNCisgCXsNCisgCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiQCIpOw0KKyAJ ICBwcmludF9hZGRyZXNzX251bWVyaWMNCisgCSAgICAoZXh0cmFjdF9hZGRyZXNzICh2YWxhZGRy ICsgZW1iZWRkZWRfb2Zmc2V0LA0KKyAJCQkgICAgICBUQVJHRVRfUFRSX0JJVCAvIEhPU1RfQ0hB Ul9CSVQpLCAxLCBzdHJlYW0pOw0KKyAJICBpZiAoZGVyZWZfcmVmKQ0KKyAJICAgIGZwdXRzX2Zp bHRlcmVkICgiOiAiLCBzdHJlYW0pOw0KKyAJfQ0KKyAgICAgICAvKiBEZS1yZWZlcmVuY2UgdGhl IHJlZmVyZW5jZS4gICovDQorICAgICAgIGlmIChkZXJlZl9yZWYpDQorIAl7DQorIAkgIGlmIChU WVBFX0NPREUgKGVsdHR5cGUpICE9IFRZUEVfQ09ERV9VTkRFRikNCisgCSAgICB7DQorIAkgICAg ICB2YWx1ZV9wdHIgZGVyZWZfdmFsID0NCisgCSAgICAgIHZhbHVlX2F0DQorIAkgICAgICAoVFlQ RV9UQVJHRVRfVFlQRSAodHlwZSksDQorIAkgICAgICAgdW5wYWNrX3BvaW50ZXIgKGxvb2t1cF9w b2ludGVyX3R5cGUgKGJ1aWx0aW5fdHlwZV92b2lkKSwNCisgCQkJICAgICAgIHZhbGFkZHIgKyBl bWJlZGRlZF9vZmZzZXQpLA0KKyAJICAgICAgIE5VTEwpOw0KKyAJICAgICAgdmFsX3ByaW50IChW QUxVRV9UWVBFIChkZXJlZl92YWwpLA0KKyAJCQkgVkFMVUVfQ09OVEVOVFMgKGRlcmVmX3ZhbCks IDAsDQorIAkJCSBWQUxVRV9BRERSRVNTIChkZXJlZl92YWwpLCBzdHJlYW0sIGZvcm1hdCwNCisg CQkJIGRlcmVmX3JlZiwgcmVjdXJzZSArIDEsIHByZXR0eSk7DQorIAkgICAgfQ0KKyAJICBlbHNl DQorIAkgICAgZnB1dHNfZmlsdGVyZWQgKCI/Pz8iLCBzdHJlYW0pOw0KKyAJfQ0KKyAgICAgICBi cmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9VTklPTjoNCisgICAgICAgaWYgKHJlY3Vy c2UgJiYgIXVuaW9ucHJpbnQpDQorIAl7DQorIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwg InsuLi59Iik7DQorIAkgIGJyZWFrOw0KKyAJfQ0KKyAgICAgICAvKiBGYWxsIHRocm91Z2guICAq Lw0KKyAgICAgY2FzZSBUWVBFX0NPREVfU1RSVUNUOg0KKyAgICAgICBpZiAodnRibHByaW50ICYm IHBhc19jcF9pc192dGJsX3B0cl90eXBlICh0eXBlKSkNCisgCXsNCisgCSAgLyogUHJpbnQgdGhl IHVubWFuZ2xlZCBuYW1lIGlmIGRlc2lyZWQuICAqLw0KKyAJICAvKiBQcmludCB2dGFibGUgZW50 cnkgLSB3ZSBvbmx5IGdldCBoZXJlIGlmIE5PVCB1c2luZw0KKyAJICAgICAtZnZ0YWJsZV90aHVu a3MuICAoT3RoZXJ3aXNlLCBsb29rIHVuZGVyIFRZUEVfQ09ERV9QVFIuKSAqLw0KKyAJICBwcmlu dF9hZGRyZXNzX2RlbWFuZ2xlIChleHRyYWN0X2FkZHJlc3MgKA0KKyAJCQkJCQkgICAgdmFsYWRk ciArIGVtYmVkZGVkX29mZnNldCArIFRZUEVfRklFTERfQklUUE9TICh0eXBlLCBWVEJMX0ZOQURE Ul9PRkZTRVQpIC8gOCwNCisgCQkgIFRZUEVfTEVOR1RIIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUs IFZUQkxfRk5BRERSX09GRlNFVCkpKSwNCisgCQkJCSAgc3RyZWFtLCBkZW1hbmdsZSk7DQorIAl9 DQorICAgICAgIGVsc2UNCisgCXsNCisgCSAgaWYgKChUWVBFX05GSUVMRFMgKHR5cGUpID09IDIp ICYmDQorIAkgICAgICAoc3RyY21wIChUWVBFX0ZJRUxEUyAodHlwZSlbMF0ubmFtZSwgImxlbmd0 aCIpID09IDApICYmDQorIAkgICAgICAoc3RyY21wIChUWVBFX0ZJRUxEUyAodHlwZSlbMV0ubmFt ZSwgInN0IikgPT0gMCkpDQorIAkgICAgew0KKyAJICAgICAgbGVuID0gKCoodmFsYWRkciArIGVt YmVkZGVkX29mZnNldCkpICYgMHhmZjsNCisgCSAgICAgIExBX1BSSU5UX1NUUklORyAoc3RyZWFt LCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0ICsgMSwgbGVuLCAvKiB3aWR0aCA/PyAqLyAwLCAw KTsNCisgCSAgICB9DQorIAkgIGVsc2UNCisgCSAgICBwYXNfY3BfcHJpbnRfdmFsdWVfZmllbGRz ICh0eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCBhZGRyZXNzLCBzdHJlYW0sIGZvcm1h dCwNCisgCQkJCSAgICAgICByZWN1cnNlLCBwcmV0dHksIE5VTEwsIDApOw0KKyAJfQ0KKyAgICAg ICBicmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9FTlVNOg0KKyAgICAgICBpZiAoZm9y bWF0KQ0KKyAJew0KKyAJICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRk ZWRfb2Zmc2V0LCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7DQorIAkgIGJyZWFrOw0KKyAJfQ0K KyAgICAgICBsZW4gPSBUWVBFX05GSUVMRFMgKHR5cGUpOw0KKyAgICAgICB2YWwgPSB1bnBhY2tf bG9uZyAodHlwZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCk7DQorICAgICAgIGZvciAoaSA9 IDA7IGkgPCBsZW47IGkrKykNCisgCXsNCisgCSAgUVVJVDsNCisgCSAgaWYgKHZhbCA9PSBUWVBF X0ZJRUxEX0JJVFBPUyAodHlwZSwgaSkpDQorIAkgICAgew0KKyAJICAgICAgYnJlYWs7DQorIAkg ICAgfQ0KKyAJfQ0KKyAgICAgICBpZiAoaSA8IGxlbikNCisgCXsNCisgCSAgZnB1dHNfZmlsdGVy ZWQgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSksIHN0cmVhbSk7DQorIAl9DQorICAgICAgIGVs c2UNCisgCXsNCisgCSAgcHJpbnRfbG9uZ2VzdCAoc3RyZWFtLCAnZCcsIDAsIHZhbCk7DQorIAl9 DQorICAgICAgIGJyZWFrOw0KKyANCisgICAgIGNhc2UgVFlQRV9DT0RFX0ZVTkM6DQorICAgICAg IGlmIChmb3JtYXQpDQorIAl7DQorIAkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIg KyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsIGZvcm1hdCwgMCwgc3RyZWFtKTsNCisgCSAgYnJlYWs7 DQorIAl9DQorICAgICAgIC8qIEZJWE1FLCB3ZSBzaG91bGQgY29uc2lkZXIsIGF0IGxlYXN0IGZv ciBBTlNJIEMgbGFuZ3VhZ2UsIGVsaW1pbmF0aW5nDQorICAgICAgICAgIHRoZSBkaXN0aW5jdGlv biBtYWRlIGJldHdlZW4gRlVOQ3MgYW5kIFBPSU5URVJzIHRvIEZVTkNzLiAgKi8NCisgICAgICAg ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAieyIpOw0KKyAgICAgICB0eXBlX3ByaW50ICh0eXBl LCAiIiwgc3RyZWFtLCAtMSk7DQorICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIn0g Iik7DQorICAgICAgIC8qIFRyeSB0byBwcmludCB3aGF0IGZ1bmN0aW9uIGl0IHBvaW50cyB0bywg YW5kIGl0cyBhZGRyZXNzLiAgKi8NCisgICAgICAgcHJpbnRfYWRkcmVzc19kZW1hbmdsZSAoYWRk cmVzcywgc3RyZWFtLCBkZW1hbmdsZSk7DQorICAgICAgIGJyZWFrOw0KKyANCisgICAgIGNhc2Ug VFlQRV9DT0RFX0JPT0w6DQorICAgICAgIGZvcm1hdCA9IGZvcm1hdCA/IGZvcm1hdCA6IG91dHB1 dF9mb3JtYXQ7DQorICAgICAgIGlmIChmb3JtYXQpDQorIAlwcmludF9zY2FsYXJfZm9ybWF0dGVk ICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7DQor ICAgICAgIGVsc2UNCisgCXsNCisgCSAgdmFsID0gdW5wYWNrX2xvbmcgKHR5cGUsIHZhbGFkZHIg KyBlbWJlZGRlZF9vZmZzZXQpOw0KKyAJICBpZiAodmFsID09IDApDQorIAkgICAgZnB1dHNfZmls dGVyZWQgKCJmYWxzZSIsIHN0cmVhbSk7DQorIAkgIGVsc2UgaWYgKHZhbCA9PSAxKQ0KKyAJICAg IGZwdXRzX2ZpbHRlcmVkICgidHJ1ZSIsIHN0cmVhbSk7DQorIAkgIGVsc2UNCisgCSAgICB7DQor IAkgICAgICBmcHV0c19maWx0ZXJlZCAoInRydWUgKCIsIHN0cmVhbSk7DQorIAkgICAgICBmcHJp bnRmX2ZpbHRlcmVkIChzdHJlYW0sICIldSkiLCB2YWwpOw0KKyAJICAgIH0NCisgCX0NCisgICAg ICAgYnJlYWs7DQorIA0KKyAgICAgY2FzZSBUWVBFX0NPREVfUkFOR0U6DQorICAgICAgIC8qIEZJ WE1FOiBjcmVhdGVfcmFuZ2VfdHlwZSBkb2VzIG5vdCBzZXQgdGhlIHVuc2lnbmVkIGJpdCBpbiBh DQorICAgICAgICAgIHJhbmdlIHR5cGUgKEkgdGhpbmsgaXQgcHJvYmFibHkgc2hvdWxkIGNvcHkg aXQgZnJvbSB0aGUgdGFyZ2V0DQorICAgICAgICAgIHR5cGUpLCBzbyB3ZSB3b24ndCBwcmludCB2 YWx1ZXMgd2hpY2ggYXJlIHRvbyBsYXJnZSB0bw0KKyAgICAgICAgICBmaXQgaW4gYSBzaWduZWQg aW50ZWdlciBjb3JyZWN0bHkuICAqLw0KKyAgICAgICAvKiBGSVhNRTogRG9lc24ndCBoYW5kbGUg cmFuZ2VzIG9mIGVudW1zIGNvcnJlY3RseS4gIChDYW4ndCBqdXN0DQorICAgICAgICAgIHByaW50 IHdpdGggdGhlIHRhcmdldCB0eXBlLCB0aG91Z2gsIGJlY2F1c2UgdGhlIHNpemUgb2Ygb3VyIHR5 cGUNCisgICAgICAgICAgYW5kIHRoZSB0YXJnZXQgdHlwZSBtaWdodCBkaWZmZXIpLiAgKi8NCisg ICAgICAgLyogRkFMTFRIUk9VR0ggKi8NCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9JTlQ6DQor ICAgICAgIGZvcm1hdCA9IGZvcm1hdCA/IGZvcm1hdCA6IG91dHB1dF9mb3JtYXQ7DQorICAgICAg IGlmIChmb3JtYXQpDQorIAl7DQorIAkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIg KyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsIGZvcm1hdCwgMCwgc3RyZWFtKTsNCisgCX0NCisgICAg ICAgZWxzZQ0KKyAJew0KKyAJICB2YWxfcHJpbnRfdHlwZV9jb2RlX2ludCAodHlwZSwgdmFsYWRk ciArIGVtYmVkZGVkX29mZnNldCwgc3RyZWFtKTsNCisgCSAgLyogQyBhbmQgQysrIGhhcyBubyBz aW5nbGUgYnl0ZSBpbnQgdHlwZSwgY2hhciBpcyB1c2VkIGluc3RlYWQuDQorIAkgICAgIFNpbmNl IHdlIGRvbid0IGtub3cgd2hldGhlciB0aGUgdmFsdWUgaXMgcmVhbGx5IGludGVuZGVkIHRvDQor IAkgICAgIGJlIHVzZWQgYXMgYW4gaW50ZWdlciBvciBhIGNoYXJhY3RlciwgcHJpbnQgdGhlIGNo YXJhY3Rlcg0KKyAJICAgICBlcXVpdmFsZW50IGFzIHdlbGwuICovDQorIAkgIGlmIChUWVBFX0xF TkdUSCAodHlwZSkgPT0gMSkNCisgCSAgICB7DQorIAkgICAgICBmcHV0c19maWx0ZXJlZCAoIiAi LCBzdHJlYW0pOw0KKyAJICAgICAgTEFfUFJJTlRfQ0hBUiAoKHVuc2lnbmVkIGNoYXIpIHVucGFj a19sb25nICh0eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0KSwNCisgCQkJICAgICBzdHJl YW0pOw0KKyAJICAgIH0NCisgCX0NCisgICAgICAgYnJlYWs7DQorIA0KKyAgICAgY2FzZSBUWVBF X0NPREVfQ0hBUjoNCisgICAgICAgZm9ybWF0ID0gZm9ybWF0ID8gZm9ybWF0IDogb3V0cHV0X2Zv cm1hdDsNCisgICAgICAgaWYgKGZvcm1hdCkNCisgCXsNCisgCSAgcHJpbnRfc2NhbGFyX2Zvcm1h dHRlZCAodmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgdHlwZSwgZm9ybWF0LCAwLCBzdHJlYW0p Ow0KKyAJfQ0KKyAgICAgICBlbHNlDQorIAl7DQorICAJICB2YWwgPSB1bnBhY2tfbG9uZyAodHlw ZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCk7DQorICAJICBpZiAoVFlQRV9VTlNJR05FRCAo dHlwZSkpDQorICAJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiV1IiwgKHVuc2lnbmVk IGludCkgdmFsKTsNCisgIAkgIGVsc2UNCisgIAkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt LCAiJWQiLCAoaW50KSB2YWwpOw0KKyAgIAkgIGZwdXRzX2ZpbHRlcmVkICgiICIsIHN0cmVhbSk7 DQorICAJICBMQV9QUklOVF9DSEFSICgodW5zaWduZWQgY2hhcikgdmFsLCBzdHJlYW0pOw0KKyAJ fQ0KKyAgICAgICBicmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9GTFQ6DQorICAgICAg IGlmIChmb3JtYXQpDQorIAl7DQorIAkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIg KyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsIGZvcm1hdCwgMCwgc3RyZWFtKTsNCisgCX0NCisgICAg ICAgZWxzZQ0KKyAJew0KKyAJICBwcmludF9mbG9hdGluZyAodmFsYWRkciArIGVtYmVkZGVkX29m ZnNldCwgdHlwZSwgc3RyZWFtKTsNCisgCX0NCisgICAgICAgYnJlYWs7DQorIA0KKyAgICAgY2Fz ZSBUWVBFX0NPREVfQklUU1RSSU5HOg0KKyAgICAgY2FzZSBUWVBFX0NPREVfU0VUOg0KKyAgICAg ICBlbHR0eXBlID0gVFlQRV9JTkRFWF9UWVBFICh0eXBlKTsNCisgICAgICAgQ0hFQ0tfVFlQRURF RiAoZWx0dHlwZSk7DQorICAgICAgIGlmIChUWVBFX0ZMQUdTIChlbHR0eXBlKSAmIFRZUEVfRkxB R19TVFVCKQ0KKyAJew0KKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICI8aW5jb21wbGV0 ZSB0eXBlPiIpOw0KKyAJICBnZGJfZmx1c2ggKHN0cmVhbSk7DQorIAkgIGJyZWFrOw0KKyAJfQ0K KyAgICAgICBlbHNlDQorIAl7DQorIAkgIHN0cnVjdCB0eXBlICpyYW5nZSA9IGVsdHR5cGU7DQor IAkgIExPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kOw0KKyAJICBpbnQgaTsNCisgCSAgaW50 IGlzX2JpdHN0cmluZyA9IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0JJVFNUUklORzsN CisgCSAgaW50IG5lZWRfY29tbWEgPSAwOw0KKyANCisgCSAgaWYgKGlzX2JpdHN0cmluZykNCisg CSAgICBmcHV0c19maWx0ZXJlZCAoIkInIiwgc3RyZWFtKTsNCisgCSAgZWxzZQ0KKyAJICAgIGZw dXRzX2ZpbHRlcmVkICgiWyIsIHN0cmVhbSk7DQorIA0KKyAJICBpID0gZ2V0X2Rpc2NyZXRlX2Jv dW5kcyAocmFuZ2UsICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKTsNCisgCW1heWJlX2JhZF9ic3Ry aW5nOg0KKyAJICBpZiAoaSA8IDApDQorIAkgICAgew0KKyAJICAgICAgZnB1dHNfZmlsdGVyZWQg KCI8ZXJyb3IgdmFsdWU+Iiwgc3RyZWFtKTsNCisgCSAgICAgIGdvdG8gZG9uZTsNCisgCSAgICB9 DQorIA0KKyAJICBmb3IgKGkgPSBsb3dfYm91bmQ7IGkgPD0gaGlnaF9ib3VuZDsgaSsrKQ0KKyAJ ICAgIHsNCisgCSAgICAgIGludCBlbGVtZW50ID0gdmFsdWVfYml0X2luZGV4ICh0eXBlLCB2YWxh ZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCBpKTsNCisgCSAgICAgIGlmIChlbGVtZW50IDwgMCkNCisg CQl7DQorIAkJICBpID0gZWxlbWVudDsNCisgCQkgIGdvdG8gbWF5YmVfYmFkX2JzdHJpbmc7DQor IAkJfQ0KKyAJICAgICAgaWYgKGlzX2JpdHN0cmluZykNCisgCQlmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sICIlZCIsIGVsZW1lbnQpOw0KKyAJICAgICAgZWxzZSBpZiAoZWxlbWVudCkNCisgCQl7 DQorIAkJICBpZiAobmVlZF9jb21tYSkNCisgCQkgICAgZnB1dHNfZmlsdGVyZWQgKCIsICIsIHN0 cmVhbSk7DQorIAkJICBwcmludF90eXBlX3NjYWxhciAocmFuZ2UsIGksIHN0cmVhbSk7DQorIAkJ ICBuZWVkX2NvbW1hID0gMTsNCisgDQorIAkJICBpZiAoaSArIDEgPD0gaGlnaF9ib3VuZCAmJiB2 YWx1ZV9iaXRfaW5kZXggKHR5cGUsIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsICsraSkpDQor IAkJICAgIHsNCisgCQkgICAgICBpbnQgaiA9IGk7DQorIAkJICAgICAgZnB1dHNfZmlsdGVyZWQg KCIuLiIsIHN0cmVhbSk7DQorIAkJICAgICAgd2hpbGUgKGkgKyAxIDw9IGhpZ2hfYm91bmQNCisg CQkJICAgICAmJiB2YWx1ZV9iaXRfaW5kZXggKHR5cGUsIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZz ZXQsICsraSkpDQorIAkJCWogPSBpOw0KKyAJCSAgICAgIHByaW50X3R5cGVfc2NhbGFyIChyYW5n ZSwgaiwgc3RyZWFtKTsNCisgCQkgICAgfQ0KKyAJCX0NCisgCSAgICB9DQorIAlkb25lOg0KKyAJ ICBpZiAoaXNfYml0c3RyaW5nKQ0KKyAJICAgIGZwdXRzX2ZpbHRlcmVkICgiJyIsIHN0cmVhbSk7 DQorIAkgIGVsc2UNCisgCSAgICBmcHV0c19maWx0ZXJlZCAoIl0iLCBzdHJlYW0pOw0KKyAJfQ0K KyAgICAgICBicmVhazsNCisgDQorICAgICBjYXNlIFRZUEVfQ09ERV9WT0lEOg0KKyAgICAgICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ2b2lkIik7DQorICAgICAgIGJyZWFrOw0KKyANCisg ICAgIGNhc2UgVFlQRV9DT0RFX0VSUk9SOg0KKyAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sICI8ZXJyb3IgdHlwZT4iKTsNCisgICAgICAgYnJlYWs7DQorIA0KKyAgICAgY2FzZSBUWVBF X0NPREVfVU5ERUY6DQorICAgICAgIC8qIFRoaXMgaGFwcGVucyAod2l0aG91dCBUWVBFX0ZMQUdf U1RVQiBzZXQpIG9uIHN5c3RlbXMgd2hpY2ggZG9uJ3QgdXNlDQorICAgICAgICAgIGRieCB4cmVm cyAoTk9fREJYX1hSRUZTIGluIGdjYykgaWYgYSBmaWxlIGhhcyBhICJzdHJ1Y3QgZm9vICpiYXIi DQorICAgICAgICAgIGFuZCBubyBjb21wbGV0ZSB0eXBlIGZvciBzdHJ1Y3QgZm9vIGluIHRoYXQg ZmlsZS4gICovDQorICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIjxpbmNvbXBsZXRl IHR5cGU+Iik7DQorICAgICAgIGJyZWFrOw0KKyANCisgICAgIGRlZmF1bHQ6DQorICAgICAgIGVy cm9yICgiSW52YWxpZCBwYXNjYWwgdHlwZSBjb2RlICVkIGluIHN5bWJvbCB0YWJsZS4iLCBUWVBF X0NPREUgKHR5cGUpKTsNCisgICAgIH0NCisgICBnZGJfZmx1c2ggKHN0cmVhbSk7DQorICAgcmV0 dXJuICgwKTsNCisgfQ0KKyAMDQorIGludA0KKyBwYXNfdmFsdWVfcHJpbnQgKHZhbCwgc3RyZWFt LCBmb3JtYXQsIHByZXR0eSkNCisgICAgICB2YWx1ZV9wdHIgdmFsOw0KKyAgICAgIHN0cnVjdCB1 aV9maWxlICpzdHJlYW07DQorICAgICAgaW50IGZvcm1hdDsNCisgICAgICBlbnVtIHZhbF9wcmV0 dHlwcmludCBwcmV0dHk7DQorIHsNCisgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IFZBTFVFX1RZUEUg KHZhbCk7DQorIA0KKyAgIC8qIElmIGl0IGlzIGEgcG9pbnRlciwgaW5kaWNhdGUgd2hhdCBpdCBw b2ludHMgdG8uDQorIA0KKyAgICAgIFByaW50IHR5cGUgYWxzbyBpZiBpdCBpcyBhIHJlZmVyZW5j ZS4NCisgDQorICAgICAgQysrOiBpZiBpdCBpcyBhIG1lbWJlciBwb2ludGVyLCB3ZSB3aWxsIHRh a2UgY2FyZQ0KKyAgICAgIG9mIHRoYXQgd2hlbiB3ZSBwcmludCBpdC4gICovDQorICAgaWYgKFRZ UEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1BUUiB8fA0KKyAgICAgICBUWVBFX0NPREUgKHR5 cGUpID09IFRZUEVfQ09ERV9SRUYpDQorICAgICB7DQorICAgICAgIC8qIEhhY2s6ICByZW1vdmUg KGNoYXIgKikgZm9yIGNoYXIgc3RyaW5ncy4gIFRoZWlyDQorICAgICAgICAgIHR5cGUgaXMgaW5k aWNhdGVkIGJ5IHRoZSBxdW90ZWQgc3RyaW5nIGFueXdheS4gKi8NCisgICAgICAgaWYgKFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1BUUiAmJg0KKyAJICBUWVBFX05BTUUgKHR5cGUpID09 IE5VTEwgJiYNCisgCSAgVFlQRV9OQU1FIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkgIT0gTlVM TCAmJg0KKyAJICBTVFJFUSAoVFlQRV9OQU1FIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSksICJj aGFyIikpDQorIAl7DQorIAkgIC8qIFByaW50IG5vdGhpbmcgKi8NCisgCX0NCisgICAgICAgZWxz ZQ0KKyAJew0KKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoIik7DQorIAkgIHR5cGVf cHJpbnQgKHR5cGUsICIiLCBzdHJlYW0sIC0xKTsNCisgCSAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAiKSAiKTsNCisgCX0NCisgICAgIH0NCisgICByZXR1cm4gdmFsX3ByaW50ICh0eXBlLCBW QUxVRV9DT05URU5UUyAodmFsKSwgVkFMVUVfRU1CRURERURfT0ZGU0VUICh2YWwpLA0KKyAJCSAg ICBWQUxVRV9BRERSRVNTICh2YWwpICsgVkFMVUVfT0ZGU0VUICh2YWwpLA0KKyAJCSAgICBzdHJl YW0sIGZvcm1hdCwgMSwgMCwgcHJldHR5KTsNCisgfQ0KKyANCisgDQorIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioNCisgICAgICAgICAgICAgICAgICAgICBJbnNlcnRlZCBmcm9tIGNwLXZhbHByaW50 DQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8NCisgDQorIGV4dGVybiBpbnQgdnRibHByaW50OwkJ LyogQ29udHJvbHMgcHJpbnRpbmcgb2YgdnRibCdzICovDQorIGV4dGVybiBpbnQgb2JqZWN0cHJp bnQ7CQkvKiBDb250cm9scyBsb29raW5nIHVwIGFuIG9iamVjdCdzIGRlcml2ZWQgdHlwZQ0KKyAJ CQkJICAgdXNpbmcgd2hhdCB3ZSBmaW5kIGluIGl0cyB2dGFibGVzLiAgKi8NCisgc3RhdGljIGlu dCBwYXNfc3RhdGljX2ZpZWxkX3ByaW50OwkvKiBDb250cm9scyBwcmludGluZyBvZiBzdGF0aWMg ZmllbGRzLiAqLw0KKyANCisgc3RhdGljIHN0cnVjdCBvYnN0YWNrIGRvbnRfcHJpbnRfdmJfb2Jz dGFjazsNCisgc3RhdGljIHN0cnVjdCBvYnN0YWNrIGRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNr Ow0KKyANCisgc3RhdGljIHZvaWQNCisgcGFzX2NwX3ByaW50X3N0YXRpY19maWVsZCBQQVJBTVMg KChzdHJ1Y3QgdHlwZSAqLCB2YWx1ZV9wdHIsIHN0cnVjdCB1aV9maWxlICosIGludCwgaW50LA0K KyAJCQkJICAgZW51bSB2YWxfcHJldHR5cHJpbnQpKTsNCisgDQorIHN0YXRpYyB2b2lkDQorIHBh c19jcF9wcmludF92YWx1ZSBQQVJBTVMgKChzdHJ1Y3QgdHlwZSAqLCBjaGFyICosIENPUkVfQURE Uiwgc3RydWN0IHVpX2ZpbGUgKiwNCisgCQkJICAgIGludCwgaW50LCBlbnVtIHZhbF9wcmV0dHlw cmludCwgc3RydWN0IHR5cGUgKiopKTsNCisgDQorIHZvaWQNCisgcGFzX2NwX3ByaW50X2NsYXNz X21ldGhvZCAodmFsYWRkciwgdHlwZSwgc3RyZWFtKQ0KKyAgICAgIGNoYXIgKnZhbGFkZHI7DQor ICAgICAgc3RydWN0IHR5cGUgKnR5cGU7DQorICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsN Cisgew0KKyAgIHN0cnVjdCB0eXBlICpkb21haW47DQorICAgc3RydWN0IGZuX2ZpZWxkICpmID0g TlVMTDsNCisgICBpbnQgaiA9IDA7DQorICAgaW50IGxlbjI7DQorICAgaW50IG9mZnNldDsNCisg ICBjaGFyICpraW5kID0gIiI7DQorICAgQ09SRV9BRERSIGFkZHI7DQorICAgc3RydWN0IHN5bWJv bCAqc3ltOw0KKyAgIHVuc2lnbmVkIGxlbjsNCisgICB1bnNpZ25lZCBpbnQgaTsNCisgICBzdHJ1 Y3QgdHlwZSAqdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0 eXBlKSk7DQorIA0KKyAgIGRvbWFpbiA9IFRZUEVfRE9NQUlOX1RZUEUgKHRhcmdldF90eXBlKTsN CisgICBpZiAoZG9tYWluID09IChzdHJ1Y3QgdHlwZSAqKSBOVUxMKQ0KKyAgICAgew0KKyAgICAg ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICI8dW5rbm93bj4iKTsNCisgICAgICAgcmV0dXJu Ow0KKyAgICAgfQ0KKyAgIGFkZHIgPSB1bnBhY2tfcG9pbnRlciAobG9va3VwX3BvaW50ZXJfdHlw ZSAoYnVpbHRpbl90eXBlX3ZvaWQpLCB2YWxhZGRyKTsNCisgICBpZiAoTUVUSE9EX1BUUl9JU19W SVJUVUFMIChhZGRyKSkNCisgICAgIHsNCisgICAgICAgb2Zmc2V0ID0gTUVUSE9EX1BUUl9UT19W T0ZGU0VUIChhZGRyKTsNCisgICAgICAgbGVuID0gVFlQRV9ORk5fRklFTERTIChkb21haW4pOw0K KyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspDQorIAl7DQorIAkgIGYgPSBUWVBFX0ZO X0ZJRUxETElTVDEgKGRvbWFpbiwgaSk7DQorIAkgIGxlbjIgPSBUWVBFX0ZOX0ZJRUxETElTVF9M RU5HVEggKGRvbWFpbiwgaSk7DQorIA0KKyAJICBmb3IgKGogPSAwOyBqIDwgbGVuMjsgaisrKQ0K KyAJICAgIHsNCisgCSAgICAgIFFVSVQ7DQorIAkgICAgICBpZiAoVFlQRV9GTl9GSUVMRF9WT0ZG U0VUIChmLCBqKSA9PSBvZmZzZXQpDQorIAkJew0KKyAJCSAgaWYgKFRZUEVfRk5fRklFTERfU1RV QiAoZiwgaikpDQorIAkJICAgIGNoZWNrX3N0dWJfbWV0aG9kIChkb21haW4sIGksIGopOw0KKyAJ CSAga2luZCA9ICJ2aXJ0dWFsICI7DQorIAkJICBnb3RvIGNvbW1vbjsNCisgCQl9DQorIAkgICAg fQ0KKyAJfQ0KKyAgICAgfQ0KKyAgIGVsc2UNCisgICAgIHsNCisgICAgICAgc3ltID0gZmluZF9w Y19mdW5jdGlvbiAoYWRkcik7DQorICAgICAgIGlmIChzeW0gPT0gMCkNCisgCXsNCisgCSAgZXJy b3IgKCJpbnZhbGlkIHBvaW50ZXIgdG8gbWVtYmVyIGZ1bmN0aW9uIik7DQorIAl9DQorICAgICAg IGxlbiA9IFRZUEVfTkZOX0ZJRUxEUyAoZG9tYWluKTsNCisgICAgICAgZm9yIChpID0gMDsgaSA8 IGxlbjsgaSsrKQ0KKyAJew0KKyAJICBmID0gVFlQRV9GTl9GSUVMRExJU1QxIChkb21haW4sIGkp Ow0KKyAJICBsZW4yID0gVFlQRV9GTl9GSUVMRExJU1RfTEVOR1RIIChkb21haW4sIGkpOw0KKyAN CisgCSAgZm9yIChqID0gMDsgaiA8IGxlbjI7IGorKykNCisgCSAgICB7DQorIAkgICAgICBRVUlU Ow0KKyAJICAgICAgaWYgKFRZUEVfRk5fRklFTERfU1RVQiAoZiwgaikpDQorIAkJY2hlY2tfc3R1 Yl9tZXRob2QgKGRvbWFpbiwgaSwgaik7DQorIAkgICAgICBpZiAoU1RSRVEgKFNZTUJPTF9OQU1F IChzeW0pLCBUWVBFX0ZOX0ZJRUxEX1BIWVNOQU1FIChmLCBqKSkpDQorIAkJew0KKyAJCSAgZ290 byBjb21tb247DQorIAkJfQ0KKyAJICAgIH0NCisgCX0NCisgICAgIH0NCisgY29tbW9uOg0KKyAg IGlmIChpIDwgbGVuKQ0KKyAgICAgew0KKyAgICAgICBjaGFyICpkZW1hbmdsZWRfbmFtZTsNCisg DQorICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiYiKTsNCisgICAgICAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCBraW5kKTsNCisgICAgICAgZGVtYW5nbGVkX25hbWUgPSBjcGx1 c19kZW1hbmdsZSAoVFlQRV9GTl9GSUVMRF9QSFlTTkFNRSAoZiwgaiksDQorIAkJCQkgICAgICAg RE1HTF9BTlNJIHwgRE1HTF9QQVJBTVMpOw0KKyAgICAgICBpZiAoZGVtYW5nbGVkX25hbWUgPT0g TlVMTCkNCisgCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIjxiYWRseSBtYW5nbGVkIG5hbWUg JXM+IiwNCisgCQkJICBUWVBFX0ZOX0ZJRUxEX1BIWVNOQU1FIChmLCBqKSk7DQorICAgICAgIGVs c2UNCisgCXsNCisgCSAgZnB1dHNfZmlsdGVyZWQgKGRlbWFuZ2xlZF9uYW1lLCBzdHJlYW0pOw0K KyAJICBmcmVlIChkZW1hbmdsZWRfbmFtZSk7DQorIAl9DQorICAgICB9DQorICAgZWxzZQ0KKyAg ICAgew0KKyAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoIik7DQorICAgICAgIHR5 cGVfcHJpbnQgKHR5cGUsICIiLCBzdHJlYW0sIC0xKTsNCisgICAgICAgZnByaW50Zl9maWx0ZXJl ZCAoc3RyZWFtLCAiKSAlZCIsIChpbnQpIGFkZHIgPj4gMyk7DQorICAgICB9DQorIH0NCisgDQor IC8qIEl0IHdhcyBjaGFuZ2VkIHRvIHRoaXMgYWZ0ZXIgMi40LjUuICAqLw0KKyBjb25zdCBjaGFy IHBhc192dGJsX3B0cl9uYW1lW10gPQ0KKyB7J18nLCAnXycsICd2JywgJ3QnLCAnYicsICdsJywg J18nLCAncCcsICd0JywgJ3InLCAnXycsICd0JywgJ3knLCAncCcsICdlJywgMH07DQorIA0KKyAv KiBSZXR1cm4gdHJ1dGggdmFsdWUgZm9yIGFzc2VydGlvbiB0aGF0IFRZUEUgaXMgb2YgdGhlIHR5 cGUNCisgICAgInBvaW50ZXIgdG8gdmlydHVhbCBmdW5jdGlvbiIuICAqLw0KKyANCisgaW50DQor IHBhc19jcF9pc192dGJsX3B0cl90eXBlICh0eXBlKQ0KKyAgICAgIHN0cnVjdCB0eXBlICp0eXBl Ow0KKyB7DQorICAgY2hhciAqdHlwZW5hbWUgPSB0eXBlX25hbWVfbm9fdGFnICh0eXBlKTsNCisg DQorICAgcmV0dXJuICh0eXBlbmFtZSAhPSBOVUxMDQorIAkgICYmIChTVFJFUSAodHlwZW5hbWUs IHBhc192dGJsX3B0cl9uYW1lKSkpOw0KKyB9DQorIA0KKyAvKiBSZXR1cm4gdHJ1dGggdmFsdWUg Zm9yIHRoZSBhc3NlcnRpb24gdGhhdCBUWVBFIGlzIG9mIHRoZSB0eXBlDQorICAgICJwb2ludGVy IHRvIHZpcnR1YWwgZnVuY3Rpb24gdGFibGUiLiAgKi8NCisgDQorIGludA0KKyBwYXNfY3BfaXNf dnRibF9tZW1iZXIgKHR5cGUpDQorICAgICAgc3RydWN0IHR5cGUgKnR5cGU7DQorIHsNCisgICBp ZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUFRSKQ0KKyAgICAgew0KKyAgICAgICB0 eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodHlwZSk7DQorICAgICAgIGlmIChUWVBFX0NPREUgKHR5 cGUpID09IFRZUEVfQ09ERV9BUlJBWSkNCisgCXsNCisgCSAgdHlwZSA9IFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpOw0KKyAJICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSVUNU CS8qIGlmIG5vdCB1c2luZyB0aHVua3MgKi8NCisgCSAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkg PT0gVFlQRV9DT0RFX1BUUikJLyogaWYgdXNpbmcgdGh1bmtzICovDQorIAkgICAgew0KKyAJICAg ICAgLyogVmlydHVhbCBmdW5jdGlvbnMgdGFibGVzIGFyZSBmdWxsIG9mIHBvaW50ZXJzDQorIAkg ICAgICAgICB0byB2aXJ0dWFsIGZ1bmN0aW9ucy4gKi8NCisgCSAgICAgIHJldHVybiBwYXNfY3Bf aXNfdnRibF9wdHJfdHlwZSAodHlwZSk7DQorIAkgICAgfQ0KKyAJfQ0KKyAgICAgfQ0KKyAgIHJl dHVybiAwOw0KKyB9DQorIA0KKyAvKiBNdXR1YWxseSByZWN1cnNpdmUgc3Vicm91dGluZXMgb2Yg cGFzX2NwX3ByaW50X3ZhbHVlIGFuZCBjX3ZhbF9wcmludCB0bw0KKyAgICBwcmludCBvdXQgYSBz dHJ1Y3R1cmUncyBmaWVsZHM6IHBhc19jcF9wcmludF92YWx1ZV9maWVsZHMgYW5kIHBhc19jcF9w cmludF92YWx1ZS4NCisgDQorICAgIFRZUEUsIFZBTEFERFIsIEFERFJFU1MsIFNUUkVBTSwgUkVD VVJTRSwgYW5kIFBSRVRUWSBoYXZlIHRoZQ0KKyAgICBzYW1lIG1lYW5pbmdzIGFzIGluIHBhc19j cF9wcmludF92YWx1ZSBhbmQgY192YWxfcHJpbnQuDQorIA0KKyAgICBET05UX1BSSU5UIGlzIGFu IGFycmF5IG9mIGJhc2VjbGFzcyB0eXBlcyB0aGF0IHdlDQorICAgIHNob3VsZCBub3QgcHJpbnQs IG9yIHplcm8gaWYgY2FsbGVkIGZyb20gdG9wIGxldmVsLiAgKi8NCisgDQorIHZvaWQNCisgcGFz X2NwX3ByaW50X3ZhbHVlX2ZpZWxkcyAodHlwZSwgdmFsYWRkciwgYWRkcmVzcywgc3RyZWFtLCBm b3JtYXQsIHJlY3Vyc2UsIHByZXR0eSwNCisgCQkJICAgZG9udF9wcmludF92YiwgZG9udF9wcmlu dF9zdGF0bWVtKQ0KKyAgICAgIHN0cnVjdCB0eXBlICp0eXBlOw0KKyAgICAgIGNoYXIgKnZhbGFk ZHI7DQorICAgICAgQ09SRV9BRERSIGFkZHJlc3M7DQorICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbTsNCisgICAgICBpbnQgZm9ybWF0Ow0KKyAgICAgIGludCByZWN1cnNlOw0KKyAgICAgIGVu dW0gdmFsX3ByZXR0eXByaW50IHByZXR0eTsNCisgICAgICBzdHJ1Y3QgdHlwZSAqKmRvbnRfcHJp bnRfdmI7DQorICAgICAgaW50IGRvbnRfcHJpbnRfc3RhdG1lbTsNCisgew0KKyAgIGludCBpLCBs ZW4sIG5fYmFzZWNsYXNzZXM7DQorICAgc3RydWN0IG9ic3RhY2sgdG1wX29ic3RhY2s7DQorICAg Y2hhciAqbGFzdF9kb250X3ByaW50ID0gb2JzdGFja19uZXh0X2ZyZWUgKCZkb250X3ByaW50X3N0 YXRtZW1fb2JzdGFjayk7DQorIA0KKyAgIENIRUNLX1RZUEVERUYgKHR5cGUpOw0KKyANCisgICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ7Iik7DQorICAgbGVuID0gVFlQRV9ORklFTERTICh0 eXBlKTsNCisgICBuX2Jhc2VjbGFzc2VzID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0eXBlKTsNCisg DQorICAgLyogUHJpbnQgb3V0IGJhc2VjbGFzc2VzIHN1Y2ggdGhhdCB3ZSBkb24ndCBwcmludA0K KyAgICAgIGR1cGxpY2F0ZXMgb2YgdmlydHVhbCBiYXNlY2xhc3Nlcy4gICovDQorICAgaWYgKG5f YmFzZWNsYXNzZXMgPiAwKQ0KKyAgICAgcGFzX2NwX3ByaW50X3ZhbHVlICh0eXBlLCB2YWxhZGRy LCBhZGRyZXNzLCBzdHJlYW0sDQorIAkJCWZvcm1hdCwgcmVjdXJzZSArIDEsIHByZXR0eSwgZG9u dF9wcmludF92Yik7DQorIA0KKyAgIGlmICghbGVuICYmIG5fYmFzZWNsYXNzZXMgPT0gMSkNCisg ICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIjxObyBkYXRhIGZpZWxkcz4iKTsNCisgICBl bHNlDQorICAgICB7DQorICAgICAgIGV4dGVybiBpbnQgaW5zcGVjdF9pdDsNCisgICAgICAgaW50 IGZpZWxkc19zZWVuID0gMDsNCisgDQorICAgICAgIGlmIChkb250X3ByaW50X3N0YXRtZW0gPT0g MCkNCisgCXsNCisgCSAgLyogSWYgd2UncmUgYXQgdG9wIGxldmVsLCBjYXJ2ZSBvdXQgYSBjb21w bGV0ZWx5IGZyZXNoDQorIAkgICAgIGNodW5rIG9mIHRoZSBvYnN0YWNrIGFuZCB1c2UgdGhhdCB1 bnRpbCB0aGlzIHBhcnRpY3VsYXINCisgCSAgICAgaW52b2NhdGlvbiByZXR1cm5zLiAgKi8NCisg CSAgdG1wX29ic3RhY2sgPSBkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjazsNCisgCSAgb2JzdGFj a19maW5pc2ggKCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjayk7DQorIAl9DQorIA0KKyAgICAg ICBmb3IgKGkgPSBuX2Jhc2VjbGFzc2VzOyBpIDwgbGVuOyBpKyspDQorIAl7DQorIAkgIC8qIElm IHJlcXVlc3RlZCwgc2tpcCBwcmludGluZyBvZiBzdGF0aWMgZmllbGRzLiAgKi8NCisgCSAgaWYg KCFwYXNfc3RhdGljX2ZpZWxkX3ByaW50ICYmIFRZUEVfRklFTERfU1RBVElDICh0eXBlLCBpKSkN CisgCSAgICBjb250aW51ZTsNCisgCSAgaWYgKGZpZWxkc19zZWVuKQ0KKyAJICAgIGZwcmludGZf ZmlsdGVyZWQgKHN0cmVhbSwgIiwgIik7DQorIAkgIGVsc2UgaWYgKG5fYmFzZWNsYXNzZXMgPiAw KQ0KKyAJICAgIHsNCisgCSAgICAgIGlmIChwcmV0dHkpDQorIAkJew0KKyAJCSAgZnByaW50Zl9m aWx0ZXJlZCAoc3RyZWFtLCAiXG4iKTsNCisgCQkgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiAr IDIgKiByZWN1cnNlLCBzdHJlYW0pOw0KKyAJCSAgZnB1dHNfZmlsdGVyZWQgKCJtZW1iZXJzIG9m ICIsIHN0cmVhbSk7DQorIAkJICBmcHV0c19maWx0ZXJlZCAodHlwZV9uYW1lX25vX3RhZyAodHlw ZSksIHN0cmVhbSk7DQorIAkJICBmcHV0c19maWx0ZXJlZCAoIjogIiwgc3RyZWFtKTsNCisgCQl9 DQorIAkgICAgfQ0KKyAJICBmaWVsZHNfc2VlbiA9IDE7DQorIA0KKyAJICBpZiAocHJldHR5KQ0K KyAJICAgIHsNCisgCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7DQorIAkg ICAgICBwcmludF9zcGFjZXNfZmlsdGVyZWQgKDIgKyAyICogcmVjdXJzZSwgc3RyZWFtKTsNCisg CSAgICB9DQorIAkgIGVsc2UNCisgCSAgICB7DQorIAkgICAgICB3cmFwX2hlcmUgKG5fc3BhY2Vz ICgyICsgMiAqIHJlY3Vyc2UpKTsNCisgCSAgICB9DQorIAkgIGlmIChpbnNwZWN0X2l0KQ0KKyAJ ICAgIHsNCisgCSAgICAgIGlmIChUWVBFX0NPREUgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkp ID09IFRZUEVfQ09ERV9QVFIpDQorIAkJZnB1dHNfZmlsdGVyZWQgKCJcIiggcHRyIFwiIiwgc3Ry ZWFtKTsNCisgCSAgICAgIGVsc2UNCisgCQlmcHV0c19maWx0ZXJlZCAoIlwiKCBub2RlZiBcIiIs IHN0cmVhbSk7DQorIAkgICAgICBpZiAoVFlQRV9GSUVMRF9TVEFUSUMgKHR5cGUsIGkpKQ0KKyAJ CWZwdXRzX2ZpbHRlcmVkICgic3RhdGljICIsIHN0cmVhbSk7DQorIAkgICAgICBmcHJpbnRmX3N5 bWJvbF9maWx0ZXJlZCAoc3RyZWFtLCBUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpLA0KKyAJCQkJ ICAgICAgIGxhbmd1YWdlX2NwbHVzLA0KKyAJCQkJICAgICAgIERNR0xfUEFSQU1TIHwgRE1HTF9B TlNJKTsNCisgCSAgICAgIGZwdXRzX2ZpbHRlcmVkICgiXCIgXCIiLCBzdHJlYW0pOw0KKyAJICAg ICAgZnByaW50Zl9zeW1ib2xfZmlsdGVyZWQgKHN0cmVhbSwgVFlQRV9GSUVMRF9OQU1FICh0eXBl LCBpKSwNCisgCQkJCSAgICAgICBsYW5ndWFnZV9jcGx1cywNCisgCQkJCSAgICAgICBETUdMX1BB UkFNUyB8IERNR0xfQU5TSSk7DQorIAkgICAgICBmcHV0c19maWx0ZXJlZCAoIlwiKSBcIiIsIHN0 cmVhbSk7DQorIAkgICAgfQ0KKyAJICBlbHNlDQorIAkgICAgew0KKyAJICAgICAgYW5ub3RhdGVf ZmllbGRfYmVnaW4gKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkpOw0KKyANCisgCSAgICAgIGlm IChUWVBFX0ZJRUxEX1NUQVRJQyAodHlwZSwgaSkpDQorIAkJZnB1dHNfZmlsdGVyZWQgKCJzdGF0 aWMgIiwgc3RyZWFtKTsNCisgCSAgICAgIGZwcmludGZfc3ltYm9sX2ZpbHRlcmVkIChzdHJlYW0s IFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSksDQorIAkJCQkgICAgICAgbGFuZ3VhZ2VfY3BsdXMs DQorIAkJCQkgICAgICAgRE1HTF9QQVJBTVMgfCBETUdMX0FOU0kpOw0KKyAJICAgICAgYW5ub3Rh dGVfZmllbGRfbmFtZV9lbmQgKCk7DQorIAkgICAgICBmcHV0c19maWx0ZXJlZCAoIiA9ICIsIHN0 cmVhbSk7DQorIAkgICAgICBhbm5vdGF0ZV9maWVsZF92YWx1ZSAoKTsNCisgCSAgICB9DQorIA0K KyAJICBpZiAoIVRZUEVfRklFTERfU1RBVElDICh0eXBlLCBpKSAmJiBUWVBFX0ZJRUxEX1BBQ0tF RCAodHlwZSwgaSkpDQorIAkgICAgew0KKyAJICAgICAgdmFsdWVfcHRyIHY7DQorIA0KKyAJICAg ICAgLyogQml0ZmllbGRzIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZywgZXNwZWNpYWxseSBkdWUg dG8gYnl0ZQ0KKyAJICAgICAgICAgb3JkZXIgcHJvYmxlbXMuICAqLw0KKyAJICAgICAgaWYgKFRZ UEVfRklFTERfSUdOT1JFICh0eXBlLCBpKSkNCisgCQl7DQorIAkJICBmcHV0c19maWx0ZXJlZCAo IjxvcHRpbWl6ZWQgb3V0IG9yIHplcm8gbGVuZ3RoPiIsIHN0cmVhbSk7DQorIAkJfQ0KKyAJICAg ICAgZWxzZQ0KKyAJCXsNCisgCQkgIHYgPSB2YWx1ZV9mcm9tX2xvbmdlc3QgKFRZUEVfRklFTERf VFlQRSAodHlwZSwgaSksDQorIAkJCQkgICB1bnBhY2tfZmllbGRfYXNfbG9uZyAodHlwZSwgdmFs YWRkciwgaSkpOw0KKyANCisgCQkgIHZhbF9wcmludCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBp KSwgVkFMVUVfQ09OVEVOVFMgKHYpLCAwLCAwLA0KKyAJCQkgICAgIHN0cmVhbSwgZm9ybWF0LCAw LCByZWN1cnNlICsgMSwgcHJldHR5KTsNCisgCQl9DQorIAkgICAgfQ0KKyAJICBlbHNlDQorIAkg ICAgew0KKyAJICAgICAgaWYgKFRZUEVfRklFTERfSUdOT1JFICh0eXBlLCBpKSkNCisgCQl7DQor IAkJICBmcHV0c19maWx0ZXJlZCAoIjxvcHRpbWl6ZWQgb3V0IG9yIHplcm8gbGVuZ3RoPiIsIHN0 cmVhbSk7DQorIAkJfQ0KKyAJICAgICAgZWxzZSBpZiAoVFlQRV9GSUVMRF9TVEFUSUMgKHR5cGUs IGkpKQ0KKyAJCXsNCisgCQkgIC8qIHZhbHVlX3B0ciB2ID0gdmFsdWVfc3RhdGljX2ZpZWxkICh0 eXBlLCBpKTsgdjQuMTcgc3BlY2lmaWMgKi8NCisgCQkgIHZhbHVlX3B0ciB2Ow0KKyAJCSAgdiA9 IHZhbHVlX2Zyb21fbG9uZ2VzdCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwNCisgCQkJCSAg IHVucGFja19maWVsZF9hc19sb25nICh0eXBlLCB2YWxhZGRyLCBpKSk7DQorIA0KKyAJCSAgaWYg KHYgPT0gTlVMTCkNCisgCQkgICAgZnB1dHNfZmlsdGVyZWQgKCI8b3B0aW1pemVkIG91dD4iLCBz dHJlYW0pOw0KKyAJCSAgZWxzZQ0KKyAJCSAgICBwYXNfY3BfcHJpbnRfc3RhdGljX2ZpZWxkIChU WVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLCB2LA0KKyAJCQkJCSAgICAgICBzdHJlYW0sIGZvcm1h dCwgcmVjdXJzZSArIDEsDQorIAkJCQkJICAgICAgIHByZXR0eSk7DQorIAkJfQ0KKyAJICAgICAg ZWxzZQ0KKyAJCXsNCisgCQkgIC8qIHZhbF9wcmludCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBp KSwNCisgCQkgICAgIHZhbGFkZHIgKyBUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaSkgLyA4LA0K KyAJCSAgICAgYWRkcmVzcyArIFRZUEVfRklFTERfQklUUE9TICh0eXBlLCBpKSAvIDgsIDAsDQor IAkJICAgICBzdHJlYW0sIGZvcm1hdCwgMCwgcmVjdXJzZSArIDEsIHByZXR0eSk7ICovDQorIAkJ ICB2YWxfcHJpbnQgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSksDQorIAkJCSAgICAgdmFsYWRk ciwgVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkpIC8gOCwNCisgCQkJICAgICBhZGRyZXNzICsg VFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkpIC8gOCwNCisgCQkJICAgICBzdHJlYW0sIGZvcm1h dCwgMCwgcmVjdXJzZSArIDEsIHByZXR0eSk7DQorIAkJfQ0KKyAJICAgIH0NCisgCSAgYW5ub3Rh dGVfZmllbGRfZW5kICgpOw0KKyAJfQ0KKyANCisgICAgICAgaWYgKGRvbnRfcHJpbnRfc3RhdG1l bSA9PSAwKQ0KKyAJew0KKyAJICAvKiBGcmVlIHRoZSBzcGFjZSB1c2VkIHRvIGRlYWwgd2l0aCB0 aGUgcHJpbnRpbmcNCisgCSAgICAgb2YgdGhlIG1lbWJlcnMgZnJvbSB0b3AgbGV2ZWwuICAqLw0K KyAJICBvYnN0YWNrX2ZyZWUgKCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjaywgbGFzdF9kb250 X3ByaW50KTsNCisgCSAgZG9udF9wcmludF9zdGF0bWVtX29ic3RhY2sgPSB0bXBfb2JzdGFjazsN CisgCX0NCisgDQorICAgICAgIGlmIChwcmV0dHkpDQorIAl7DQorIAkgIGZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgIlxuIik7DQorIAkgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiAqIHJlY3Vy c2UsIHN0cmVhbSk7DQorIAl9DQorICAgICB9DQorICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt LCAifSIpOw0KKyB9DQorIA0KKyAvKiBTcGVjaWFsIHZhbF9wcmludCByb3V0aW5lIHRvIGF2b2lk IHByaW50aW5nIG11bHRpcGxlIGNvcGllcyBvZiB2aXJ0dWFsDQorICAgIGJhc2VjbGFzc2VzLiAg Ki8NCisgDQorIHZvaWQNCisgcGFzX2NwX3ByaW50X3ZhbHVlICh0eXBlLCB2YWxhZGRyLCBhZGRy ZXNzLCBzdHJlYW0sIGZvcm1hdCwgcmVjdXJzZSwgcHJldHR5LA0KKyAJCSAgICBkb250X3ByaW50 X3ZiKQ0KKyAgICAgIHN0cnVjdCB0eXBlICp0eXBlOw0KKyAgICAgIGNoYXIgKnZhbGFkZHI7DQor ICAgICAgQ09SRV9BRERSIGFkZHJlc3M7DQorICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsN CisgICAgICBpbnQgZm9ybWF0Ow0KKyAgICAgIGludCByZWN1cnNlOw0KKyAgICAgIGVudW0gdmFs X3ByZXR0eXByaW50IHByZXR0eTsNCisgICAgICBzdHJ1Y3QgdHlwZSAqKmRvbnRfcHJpbnRfdmI7 DQorIHsNCisgICBzdHJ1Y3Qgb2JzdGFjayB0bXBfb2JzdGFjazsNCisgICBzdHJ1Y3QgdHlwZSAq Kmxhc3RfZG9udF9wcmludA0KKyAgID0gKHN0cnVjdCB0eXBlICoqKSBvYnN0YWNrX25leHRfZnJl ZSAoJmRvbnRfcHJpbnRfdmJfb2JzdGFjayk7DQorICAgaW50IGksIG5fYmFzZWNsYXNzZXMgPSBU WVBFX05fQkFTRUNMQVNTRVMgKHR5cGUpOw0KKyANCisgICBpZiAoZG9udF9wcmludF92YiA9PSAw KQ0KKyAgICAgew0KKyAgICAgICAvKiBJZiB3ZSdyZSBhdCB0b3AgbGV2ZWwsIGNhcnZlIG91dCBh IGNvbXBsZXRlbHkgZnJlc2gNCisgICAgICAgICAgY2h1bmsgb2YgdGhlIG9ic3RhY2sgYW5kIHVz ZSB0aGF0IHVudGlsIHRoaXMgcGFydGljdWxhcg0KKyAgICAgICAgICBpbnZvY2F0aW9uIHJldHVy bnMuICAqLw0KKyAgICAgICB0bXBfb2JzdGFjayA9IGRvbnRfcHJpbnRfdmJfb2JzdGFjazsNCisg ICAgICAgLyogQnVtcCB1cCB0aGUgaGlnaC13YXRlciBtYXJrLiAgTm93IGFscGhhIGlzIG9tZWdh LiAgKi8NCisgICAgICAgb2JzdGFja19maW5pc2ggKCZkb250X3ByaW50X3ZiX29ic3RhY2spOw0K KyAgICAgfQ0KKyANCisgICBmb3IgKGkgPSAwOyBpIDwgbl9iYXNlY2xhc3NlczsgaSsrKQ0KKyAg ICAgew0KKyAgICAgICBpbnQgYm9mZnNldDsNCisgICAgICAgc3RydWN0IHR5cGUgKmJhc2VjbGFz cyA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfQkFTRUNMQVNTICh0eXBlLCBpKSk7DQorICAgICAgIGNo YXIgKmJhc2VuYW1lID0gVFlQRV9OQU1FIChiYXNlY2xhc3MpOw0KKyAgICAgICBjaGFyICpiYXNl X3ZhbGFkZHI7DQorIA0KKyAgICAgICBpZiAoQkFTRVRZUEVfVklBX1ZJUlRVQUwgKHR5cGUsIGkp KQ0KKyAJew0KKyAJICBzdHJ1Y3QgdHlwZSAqKmZpcnN0X2RvbnRfcHJpbnQNCisgCSAgPSAoc3Ry dWN0IHR5cGUgKiopIG9ic3RhY2tfYmFzZSAoJmRvbnRfcHJpbnRfdmJfb2JzdGFjayk7DQorIA0K KyAJICBpbnQgaiA9IChzdHJ1Y3QgdHlwZSAqKikgb2JzdGFja19uZXh0X2ZyZWUgKCZkb250X3By aW50X3ZiX29ic3RhY2spDQorIAkgIC0gZmlyc3RfZG9udF9wcmludDsNCisgDQorIAkgIHdoaWxl ICgtLWogPj0gMCkNCisgCSAgICBpZiAoYmFzZWNsYXNzID09IGZpcnN0X2RvbnRfcHJpbnRbal0p DQorIAkgICAgICBnb3RvIGZsdXNoX2l0Ow0KKyANCisgCSAgb2JzdGFja19wdHJfZ3JvdyAoJmRv bnRfcHJpbnRfdmJfb2JzdGFjaywgYmFzZWNsYXNzKTsNCisgCX0NCisgDQorICAgICAgIGJvZmZz ZXQgPSBiYXNlY2xhc3Nfb2Zmc2V0ICh0eXBlLCBpLCB2YWxhZGRyLCBhZGRyZXNzKTsNCisgDQor ICAgICAgIGlmIChwcmV0dHkpDQorIAl7DQorIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwg IlxuIik7DQorIAkgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiAqIHJlY3Vyc2UsIHN0cmVhbSk7 DQorIAl9DQorICAgICAgIGZwdXRzX2ZpbHRlcmVkICgiPCIsIHN0cmVhbSk7DQorICAgICAgIC8q IE5vdCBzdXJlIHdoYXQgdGhlIGJlc3Qgbm90YXRpb24gaXMgaW4gdGhlIGNhc2Ugd2hlcmUgdGhl cmUgaXMgbm8NCisgICAgICAgICAgYmFzZWNsYXNzIG5hbWUuICAqLw0KKyANCisgICAgICAgZnB1 dHNfZmlsdGVyZWQgKGJhc2VuYW1lID8gYmFzZW5hbWUgOiAiIiwgc3RyZWFtKTsNCisgICAgICAg ZnB1dHNfZmlsdGVyZWQgKCI+ID0gIiwgc3RyZWFtKTsNCisgDQorICAgICAgIC8qIFRoZSB2aXJ0 dWFsIGJhc2UgY2xhc3MgcG9pbnRlciBtaWdodCBoYXZlIGJlZW4gY2xvYmJlcmVkIGJ5IHRoZQ0K KyAgICAgICAgICB1c2VyIHByb2dyYW0uIE1ha2Ugc3VyZSB0aGF0IGl0IHN0aWxsIHBvaW50cyB0 byBhIHZhbGlkIG1lbW9yeQ0KKyAgICAgICAgICBsb2NhdGlvbi4gICovDQorIA0KKyAgICAgICBp ZiAoYm9mZnNldCAhPSAtMSAmJiAoYm9mZnNldCA8IDAgfHwgYm9mZnNldCA+PSBUWVBFX0xFTkdU SCAodHlwZSkpKQ0KKyAJew0KKyAJICBiYXNlX3ZhbGFkZHIgPSAoY2hhciAqKSBhbGxvY2EgKFRZ UEVfTEVOR1RIIChiYXNlY2xhc3MpKTsNCisgCSAgaWYgKHRhcmdldF9yZWFkX21lbW9yeSAoYWRk cmVzcyArIGJvZmZzZXQsIGJhc2VfdmFsYWRkciwNCisgCQkJCSAgVFlQRV9MRU5HVEggKGJhc2Vj bGFzcykpICE9IDApDQorIAkgICAgYm9mZnNldCA9IC0xOw0KKyAJfQ0KKyAgICAgICBlbHNlDQor IAliYXNlX3ZhbGFkZHIgPSB2YWxhZGRyICsgYm9mZnNldDsNCisgDQorICAgICAgIGlmIChib2Zm c2V0ID09IC0xKQ0KKyAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiPGludmFsaWQgYWRkcmVz cz4iKTsNCisgICAgICAgZWxzZQ0KKyAJcGFzX2NwX3ByaW50X3ZhbHVlX2ZpZWxkcyAoYmFzZWNs YXNzLCBiYXNlX3ZhbGFkZHIsIGFkZHJlc3MgKyBib2Zmc2V0LA0KKyAJCQkJICAgc3RyZWFtLCBm b3JtYXQsIHJlY3Vyc2UsIHByZXR0eSwNCisgCQkgICAgIChzdHJ1Y3QgdHlwZSAqKikgb2JzdGFj a19iYXNlICgmZG9udF9wcmludF92Yl9vYnN0YWNrKSwNCisgCQkJCSAgIDApOw0KKyAgICAgICBm cHV0c19maWx0ZXJlZCAoIiwgIiwgc3RyZWFtKTsNCisgDQorICAgICBmbHVzaF9pdDoNCisgICAg ICAgOw0KKyAgICAgfQ0KKyANCisgICBpZiAoZG9udF9wcmludF92YiA9PSAwKQ0KKyAgICAgew0K KyAgICAgICAvKiBGcmVlIHRoZSBzcGFjZSB1c2VkIHRvIGRlYWwgd2l0aCB0aGUgcHJpbnRpbmcN CisgICAgICAgICAgb2YgdGhpcyB0eXBlIGZyb20gdG9wIGxldmVsLiAgKi8NCisgICAgICAgb2Jz dGFja19mcmVlICgmZG9udF9wcmludF92Yl9vYnN0YWNrLCBsYXN0X2RvbnRfcHJpbnQpOw0KKyAg ICAgICAvKiBSZXNldCB3YXRlcm1hcmsgc28gdGhhdCB3ZSBjYW4gY29udGludWUgcHJvdGVjdGlu Zw0KKyAgICAgICAgICBvdXJzZWx2ZXMgZnJvbSB3aGF0ZXZlciB3ZSB3ZXJlIHByb3RlY3Rpbmcg b3Vyc2VsdmVzLiAgKi8NCisgICAgICAgZG9udF9wcmludF92Yl9vYnN0YWNrID0gdG1wX29ic3Rh Y2s7DQorICAgICB9DQorIH0NCisgDQorIC8qIFByaW50IHZhbHVlIG9mIGEgc3RhdGljIG1lbWJl ci4NCisgICAgVG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIHdoZW4gcHJpbnRpbmcgYSBjbGFz cyB0aGF0IGNvbnRhaW5zDQorICAgIGEgc3RhdGljIGluc3RhbmNlIG9mIHRoZSBjbGFzcywgd2Ug a2VlcCB0aGUgYWRkcmVzc2VzIG9mIGFsbCBwcmludGVkDQorICAgIHN0YXRpYyBtZW1iZXIgY2xh c3NlcyBpbiBhbiBvYnN0YWNrIGFuZCByZWZ1c2UgdG8gcHJpbnQgdGhlbSBtb3JlDQorICAgIHRo YW4gb25jZS4NCisgDQorICAgIFZBTCBjb250YWlucyB0aGUgdmFsdWUgdG8gcHJpbnQsIFRZUEUs IFNUUkVBTSwgUkVDVVJTRSwgYW5kIFBSRVRUWQ0KKyAgICBoYXZlIHRoZSBzYW1lIG1lYW5pbmdz IGFzIGluIGNfdmFsX3ByaW50LiAgKi8NCisgDQorIHN0YXRpYyB2b2lkDQorIHBhc19jcF9wcmlu dF9zdGF0aWNfZmllbGQgKHR5cGUsIHZhbCwgc3RyZWFtLCBmb3JtYXQsIHJlY3Vyc2UsIHByZXR0 eSkNCisgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsNCisgICAgICB2YWx1ZV9wdHIgdmFsOw0KKyAg ICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW07DQorICAgICAgaW50IGZvcm1hdDsNCisgICAgICBp bnQgcmVjdXJzZTsNCisgICAgICBlbnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHk7DQorIHsNCisg ICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSVUNUKQ0KKyAgICAgew0KKyAg ICAgICBDT1JFX0FERFIgKmZpcnN0X2RvbnRfcHJpbnQ7DQorICAgICAgIGludCBpOw0KKyANCisg ICAgICAgZmlyc3RfZG9udF9wcmludA0KKyAJPSAoQ09SRV9BRERSICopIG9ic3RhY2tfYmFzZSAo JmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrKTsNCisgICAgICAgaSA9IChDT1JFX0FERFIgKikg b2JzdGFja19uZXh0X2ZyZWUgKCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjaykNCisgCS0gZmly c3RfZG9udF9wcmludDsNCisgDQorICAgICAgIHdoaWxlICgtLWkgPj0gMCkNCisgCXsNCisgCSAg aWYgKFZBTFVFX0FERFJFU1MgKHZhbCkgPT0gZmlyc3RfZG9udF9wcmludFtpXSkNCisgCSAgICB7 DQorIAkgICAgICBmcHV0c19maWx0ZXJlZCAoIjxzYW1lIGFzIHN0YXRpYyBtZW1iZXIgb2YgYW4g YWxyZWFkeSBzZWVuIHR5cGU+IiwNCisgCQkJICAgICAgc3RyZWFtKTsNCisgCSAgICAgIHJldHVy bjsNCisgCSAgICB9DQorIAl9DQorIA0KKyAgICAgICBvYnN0YWNrX2dyb3cgKCZkb250X3ByaW50 X3N0YXRtZW1fb2JzdGFjaywgKGNoYXIgKikgJlZBTFVFX0FERFJFU1MgKHZhbCksDQorIAkJICAg IHNpemVvZiAoQ09SRV9BRERSKSk7DQorIA0KKyAgICAgICBDSEVDS19UWVBFREVGICh0eXBlKTsN CisgICAgICAgcGFzX2NwX3ByaW50X3ZhbHVlX2ZpZWxkcyAodHlwZSwgVkFMVUVfQ09OVEVOVFMg KHZhbCksIFZBTFVFX0FERFJFU1MgKHZhbCksDQorIAkJCQkgc3RyZWFtLCBmb3JtYXQsIHJlY3Vy c2UsIHByZXR0eSwgTlVMTCwgMSk7DQorICAgICAgIHJldHVybjsNCisgICAgIH0NCisgICB2YWxf cHJpbnQgKHR5cGUsIFZBTFVFX0NPTlRFTlRTICh2YWwpLCAwLCBWQUxVRV9BRERSRVNTICh2YWwp LA0KKyAJICAgICBzdHJlYW0sIGZvcm1hdCwgMCwgcmVjdXJzZSwgcHJldHR5KTsNCisgfQ0KKyAN Cisgdm9pZA0KKyBwYXNfY3BfcHJpbnRfY2xhc3NfbWVtYmVyICh2YWxhZGRyLCBkb21haW4sIHN0 cmVhbSwgcHJlZml4KQ0KKyAgICAgIGNoYXIgKnZhbGFkZHI7DQorICAgICAgc3RydWN0IHR5cGUg KmRvbWFpbjsNCisgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtOw0KKyAgICAgIGNoYXIgKnBy ZWZpeDsNCisgew0KKyANCisgICAvKiBWQUwgaXMgYSBieXRlIG9mZnNldCBpbnRvIHRoZSBzdHJ1 Y3R1cmUgdHlwZSBET01BSU4uDQorICAgICAgRmluZCB0aGUgbmFtZSBvZiB0aGUgZmllbGQgZm9y IHRoYXQgb2Zmc2V0IGFuZA0KKyAgICAgIHByaW50IGl0LiAgKi8NCisgICBpbnQgZXh0cmEgPSAw Ow0KKyAgIGludCBiaXRzID0gMDsNCisgICByZWdpc3RlciB1bnNpZ25lZCBpbnQgaTsNCisgICB1 bnNpZ25lZCBsZW4gPSBUWVBFX05GSUVMRFMgKGRvbWFpbik7DQorICAgLyogQEAgTWFrZSBWQUwg aW50byBiaXQgb2Zmc2V0ICovDQorICAgTE9OR0VTVCB2YWwgPSB1bnBhY2tfbG9uZyAoYnVpbHRp bl90eXBlX2ludCwgdmFsYWRkcikgPDwgMzsNCisgICBmb3IgKGkgPSBUWVBFX05fQkFTRUNMQVNT RVMgKGRvbWFpbik7IGkgPCBsZW47IGkrKykNCisgICAgIHsNCisgICAgICAgaW50IGJpdHBvcyA9 IFRZUEVfRklFTERfQklUUE9TIChkb21haW4sIGkpOw0KKyAgICAgICBRVUlUOw0KKyAgICAgICBp ZiAodmFsID09IGJpdHBvcykNCisgCWJyZWFrOw0KKyAgICAgICBpZiAodmFsIDwgYml0cG9zICYm IGkgIT0gMCkNCisgCXsNCisgCSAgLyogU29tZWhvdyBwb2ludGluZyBpbnRvIGEgZmllbGQuICAq Lw0KKyAJICBpIC09IDE7DQorIAkgIGV4dHJhID0gKHZhbCAtIFRZUEVfRklFTERfQklUUE9TIChk b21haW4sIGkpKTsNCisgCSAgaWYgKGV4dHJhICYgMHg3KQ0KKyAJICAgIGJpdHMgPSAxOw0KKyAJ ICBlbHNlDQorIAkgICAgZXh0cmEgPj49IDM7DQorIAkgIGJyZWFrOw0KKyAJfQ0KKyAgICAgfQ0K KyAgIGlmIChpIDwgbGVuKQ0KKyAgICAgew0KKyAgICAgICBjaGFyICpuYW1lOw0KKyAgICAgICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sIHByZWZpeCk7DQorICAgICAgIG5hbWUgPSB0eXBlX25h bWVfbm9fdGFnIChkb21haW4pOw0KKyAgICAgICBpZiAobmFtZSkNCisgCWZwdXRzX2ZpbHRlcmVk IChuYW1lLCBzdHJlYW0pOw0KKyAgICAgICBlbHNlDQorIAljX3R5cGVfcHJpbnRfYmFzZSAoZG9t YWluLCBzdHJlYW0sIDAsIDApOw0KKyAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICI6 OiIpOw0KKyAgICAgICBmcHV0c19maWx0ZXJlZCAoVFlQRV9GSUVMRF9OQU1FIChkb21haW4sIGkp LCBzdHJlYW0pOw0KKyAgICAgICBpZiAoZXh0cmEpDQorIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sICIgKyAlZCBieXRlcyIsIGV4dHJhKTsNCisgICAgICAgaWYgKGJpdHMpDQorIAlmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sICIgKG9mZnNldCBpbiBiaXRzKSIpOw0KKyAgICAgfQ0KKyAgIGVs c2UNCisgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVkIiwgdmFsID4+IDMpOw0KKyB9 DQorIA0KKyANCisgdm9pZA0KKyBfaW5pdGlhbGl6ZV9wYXNfdmFscHJpbnQgKCkNCisgew0KKyAg IGFkZF9zaG93X2Zyb21fc2V0DQorICAgICAoYWRkX3NldF9jbWQgKCJwYXNfc3RhdGljLW1lbWJl cnMiLCBjbGFzc19zdXBwb3J0LCB2YXJfYm9vbGVhbiwNCisgCQkgIChjaGFyICopICZwYXNfc3Rh dGljX2ZpZWxkX3ByaW50LA0KKyAJCSAgIlNldCBwcmludGluZyBvZiBwYXNjYWwgc3RhdGljIG1l bWJlcnMuIiwNCisgCQkgICZzZXRwcmludGxpc3QpLA0KKyAgICAgICZzaG93cHJpbnRsaXN0KTsN CisgICAvKiBUdXJuIG9uIHByaW50aW5nIG9mIHN0YXRpYyBmaWVsZHMuICAqLw0KKyAgIHBhc19z dGF0aWNfZmllbGRfcHJpbnQgPSAxOw0KKyANCisgICAvKiBhZGRfc2hvd19mcm9tX3NldA0KKyAg ICAgIChhZGRfc2V0X2NtZCAoInZ0YmwiLCBjbGFzc19zdXBwb3J0LCB2YXJfYm9vbGVhbiwgKGNo YXIgKikmdnRibHByaW50LA0KKyAgICAgICJTZXQgcHJpbnRpbmcgb2YgcGFzY2FsIHZpcnR1YWwg ZnVuY3Rpb24gdGFibGVzLiIsDQorICAgICAgJnNldHByaW50bGlzdCksDQorICAgICAgJnNob3dw cmludGxpc3QpO2RvbmUgaW4gX2luaXRpbGlhemVfY3BfdmFscHJpbnQgKi8NCisgDQorICAgLyog YWRkX3Nob3dfZnJvbV9zZXQNCisgICAgICAoYWRkX3NldF9jbWQgKCJvYmplY3QiLCBjbGFzc19z dXBwb3J0LCB2YXJfYm9vbGVhbiwgKGNoYXIgKikmb2JqZWN0cHJpbnQsDQorICAgICAgIlNldCBw cmludGluZyBvZiBwYXNjYWwgb2JqZWN0J3MgZGVyaXZlZCB0eXBlIGJhc2VkIG9uIHZ0YWJsZSBp bmZvLiIsDQorICAgICAgJnNldHByaW50bGlzdCksDQorICAgICAgJnNob3dwcmludGxpc3QpO2Rv bmUgaW4gX2luaXRpbGlhemVfY3BfdmFscHJpbnQgKi8NCisgDQorICAgLyogR2l2ZSBwZW9wbGUg dGhlIGRlZmF1bHRzIHdoaWNoIHRoZXkgYXJlIHVzZWQgdG8uICAqLw0KKyAgIC8qIG9iamVjdHBy aW50ID0gMTsNCisgICAgICB2dGJscHJpbnQgPSAxOw0KKyAgICAgIG9ic3RhY2tfYmVnaW4gKCZk b250X3ByaW50X3ZiX29ic3RhY2ssIDMyICogc2l6ZW9mIChzdHJ1Y3QgdHlwZSAqKSk7DQorICAg ICAgb2JzdGFja19zcGVjaWZ5X2FsbG9jYXRpb24gKCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFj aywNCisgICAgICAzMiAqIHNpemVvZiAoQ09SRV9BRERSKSwgc2l6ZW9mIChDT1JFX0FERFIpLA0K KyAgICAgIHhtYWxsb2MsIGZyZWUpOyBkb25lIGluIF9pbml0aWxpYXplX2NwX3ZhbHByaW50ICov DQorIH0NCg== >>From muller@ics.u-strasbg.fr Fri Mar 03 06:48:00 2000 From: muller@ics.u-strasbg.fr To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/31: Integration of the pascal support into existing GDB files Date: Fri, 03 Mar 2000 06:48:00 -0000 Message-id: <20000303143850.29010.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00028.html Content-length: 20244 >Number: 31 >Category: gdb-patch >Synopsis: Integration of the pascal support into existing GDB files >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Fri Mar 03 06:48:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Pierre Muller >Release: unknown-1.0 >Organization: >Environment: Platform independent >Description: This patch allows to integrate pascal support into GDB. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="pascal-patch-2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pascal-patch-2" MjAwMC0wMy0wMyAgUGllcnJlIE11bGxlciAgIDxtdWxsZXJAaWNzLnUtc3RyYXNiZy5mcj4NCiAg ICogTWFrZWZpbGUuaW46DQogICAgIHBhc2NhbCBsYW5ndWFnZSBzcGVjaWZpYyBmaWxlcyBjb21w aWxhdGlvbiBhbmQgZGVwZW5kZW5jaWVzLg0KICAgKiBkZWZzLmg6DQogICAgIGFkZCBsYW5ndWFn ZV9wYXNjYWwgdG8gZW51bSBsYW5ndWFnZQ0KICAgKiBldmFsLmMgKGV2YWx1YXRlX3N1YmV4cF9z dGFuZGFyZCBmdW5jdGlvbik6DQogICAgIEJJTk9QX0lOVERJViB0cmVhdGVkIGFzIEJJTk9QX0RJ Vg0KICAgKiBsYW5ndWFnZS5jDQogICAgIGFkZCBzdXBwb3J0IGZvciBsYW5ndWFnZV9wYXNjYWwN CiAgICogbGFuZ3VhZ2UuaA0KICAgICBkZWZpbmUgX0xBTkdfcGFzY2FsDQogICAqIHN0YWJzcmVh ZC5jDQogICAgIHBhc2NhbCBwb2ludGVyIHR5cGUgY2FuIGhhdmUgbmFtZXMNCiAgICogc3ltZmls ZS5jIChpbml0X2ZpbGVuYW1lX2xhbmd1YWdlX3RhYmxlKToNCiAgICAgLnBhcyAucCAucHAgYW5k IC5pbmMgZXh0ZW5zaW9ucyBhcmUgcmVjb2duaXplZCBhcyBwYXNjYWwgc291cmNlIGZpbGVzDQog ICAqIHV0aWxzLmM6DQogICAgIHBhc2NhbCB1c2VzIGMrKyBkZW1hbmdsZQ0KICAgDQpJbmRleDog TWFrZWZpbGUuaW4NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL01ha2Vm aWxlLmluLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS45DQpkaWZmIC1iIC1jIC1yMS45IE1ha2Vm aWxlLmluDQoqKiogTWFrZWZpbGUuaW4JMjAwMC8wMi8yNiAxMzo1NzozNQkxLjkNCi0tLSBNYWtl ZmlsZS5pbgkyMDAwLzAzLzAzIDE0OjE1OjIyDQoqKioqKioqKioqKioqKioNCioqKiA0NjYsNDcy ICoqKioNCiAgCXZhcm9iai5jIHdyYXBwZXIuYyBcDQogIAlqdi1leHAueSBqdi1sYW5nLmMganYt dmFscHJpbnQuYyBqdi10eXBlcHJpbnQuYyBcDQogIAltMi1leHAueSBtMi1sYW5nLmMgbTItdHlw ZXByaW50LmMgbTItdmFscHJpbnQuYyBtYWluLmMgbWFpbnQuYyBcDQohIAltZW0tYnJlYWsuYyBt aW5zeW1zLmMgbWlwc3JlYWQuYyBubG1yZWFkLmMgb2JqZmlsZXMuYyBwYXJzZS5jIFwNCiAgCXBy aW50Y21kLmMgcmVtb3RlLmMgcmVtb3RlLW5yb20uYyBzY20tZXhwLmMgc2NtLWxhbmcuYyBcDQog IAlzY20tdmFscHJpbnQuYyBzb3VyY2UuYyBzdGFic3JlYWQuYyBzdGFjay5jIHN5bWZpbGUuYyBc DQogIAlzeW1taXNjLmMgc3ltdGFiLmMgdGFyZ2V0LmMgdGhyZWFkLmMgdG9wLmMgdHJhY2Vwb2lu dC5jIFwNCi0tLSA0NjYsNDczIC0tLS0NCiAgCXZhcm9iai5jIHdyYXBwZXIuYyBcDQogIAlqdi1l eHAueSBqdi1sYW5nLmMganYtdmFscHJpbnQuYyBqdi10eXBlcHJpbnQuYyBcDQogIAltMi1leHAu eSBtMi1sYW5nLmMgbTItdHlwZXByaW50LmMgbTItdmFscHJpbnQuYyBtYWluLmMgbWFpbnQuYyBc DQohIAltZW0tYnJlYWsuYyBtaW5zeW1zLmMgbWlwc3JlYWQuYyBubG1yZWFkLmMgb2JqZmlsZXMu YyBcDQohIAlwLWV4cC55IHAtbGFuZy5jIHAtdHlwZXByaW50LmMgcC12YWxwcmludC5jIHBhcnNl LmMgXA0KICAJcHJpbnRjbWQuYyByZW1vdGUuYyByZW1vdGUtbnJvbS5jIHNjbS1leHAuYyBzY20t bGFuZy5jIFwNCiAgCXNjbS12YWxwcmludC5jIHNvdXJjZS5jIHN0YWJzcmVhZC5jIHN0YWNrLmMg c3ltZmlsZS5jIFwNCiAgCXN5bW1pc2MuYyBzeW10YWIuYyB0YXJnZXQuYyB0aHJlYWQuYyB0b3Au YyB0cmFjZXBvaW50LmMgXA0KKioqKioqKioqKioqKioqDQoqKiogNTU1LDU2MSAqKioqDQogIAlz eW1maWxlLmggc3RhYnNyZWFkLmggdGFyZ2V0LmggdGVybWluYWwuaCB0eXBlcHJpbnQuaCB4Y29m ZnNvbGliLmggXA0KICAJYy1sYW5nLmggY2gtbGFuZy5oIGYtbGFuZy5oIFwNCiAgCWp2LWxhbmcu aCBcDQohIAltMi1sYW5nLmggXA0KICAJY29tcGxhaW50cy5oIHZhbHByaW50LmggXA0KICAJMjlr LXNoYXJlL3VkaS91ZGlpZHMuaCAyOWstc2hhcmUvdWRpX3NvYyBuaW5keS1zaGFyZS9iLm91dC5o IFwNCiAgCW5pbmR5LXNoYXJlL2Jsb2NrX2lvLmggbmluZHktc2hhcmUvY29mZi5oIFwNCi0tLSA1 NTYsNTYyIC0tLS0NCiAgCXN5bWZpbGUuaCBzdGFic3JlYWQuaCB0YXJnZXQuaCB0ZXJtaW5hbC5o IHR5cGVwcmludC5oIHhjb2Zmc29saWIuaCBcDQogIAljLWxhbmcuaCBjaC1sYW5nLmggZi1sYW5n LmggXA0KICAJanYtbGFuZy5oIFwNCiEgCW0yLWxhbmcuaCAgcC1sYW5nLmggXA0KICAJY29tcGxh aW50cy5oIHZhbHByaW50LmggXA0KICAJMjlrLXNoYXJlL3VkaS91ZGlpZHMuaCAyOWstc2hhcmUv dWRpX3NvYyBuaW5keS1zaGFyZS9iLm91dC5oIFwNCiAgCW5pbmR5LXNoYXJlL2Jsb2NrX2lvLmgg bmluZHktc2hhcmUvY29mZi5oIFwNCioqKioqKioqKioqKioqKg0KKioqIDYwOSw2MTUgKioqKg0K ICAJdWktb3V0Lm8gY2xpLW91dC5vIFwNCiAgCXZhcm9iai5vIHdyYXBwZXIubyBcDQogIAlqdi1s YW5nLm8ganYtdmFscHJpbnQubyBqdi10eXBlcHJpbnQubyBcDQohIAltMi1sYW5nLm8gXA0KICAJ c2NtLWV4cC5vIHNjbS1sYW5nLm8gc2NtLXZhbHByaW50Lm8gY29tcGxhaW50cy5vIHR5cGVwcmlu dC5vIFwNCiAgCWMtdHlwZXByaW50Lm8gY2gtdHlwZXByaW50Lm8gZi10eXBlcHJpbnQubyBtMi10 eXBlcHJpbnQubyBcDQogIAljLXZhbHByaW50Lm8gY3AtdmFscHJpbnQubyBjaC12YWxwcmludC5v IGYtdmFscHJpbnQubyBtMi12YWxwcmludC5vIFwNCi0tLSA2MTAsNjE2IC0tLS0NCiAgCXVpLW91 dC5vIGNsaS1vdXQubyBcDQogIAl2YXJvYmoubyB3cmFwcGVyLm8gXA0KICAJanYtbGFuZy5vIGp2 LXZhbHByaW50Lm8ganYtdHlwZXByaW50Lm8gXA0KISAgCW0yLWxhbmcubyBwLWxhbmcubyBwLXR5 cGVwcmludC5vIHAtdmFscHJpbnQubyBcDQogIAlzY20tZXhwLm8gc2NtLWxhbmcubyBzY20tdmFs cHJpbnQubyBjb21wbGFpbnRzLm8gdHlwZXByaW50Lm8gXA0KICAJYy10eXBlcHJpbnQubyBjaC10 eXBlcHJpbnQubyBmLXR5cGVwcmludC5vIG0yLXR5cGVwcmludC5vIFwNCiAgCWMtdmFscHJpbnQu byBjcC12YWxwcmludC5vIGNoLXZhbHByaW50Lm8gZi12YWxwcmludC5vIG0yLXZhbHByaW50Lm8g XA0KKioqKioqKioqKioqKioqDQoqKiogNjI5LDYzOCAqKioqDQogICMgRm9yIG5vdywgc2hvcnRj dXQgdGhlICJjb25maWd1cmUgR0RCIGZvciBmZXdlciBsYW5ndWFnZXMiIHN0dWZmLg0KICBZWUZJ TEVTID0gYy1leHAudGFiLmMgXA0KICAJanYtZXhwLnRhYi5jIFwNCiEgCWYtZXhwLnRhYi5jIG0y LWV4cC50YWIuYw0KICBZWU9CSiA9IGMtZXhwLnRhYi5vIFwNCiAgCWp2LWV4cC50YWIubyBcDQoh IAlmLWV4cC50YWIubyBtMi1leHAudGFiLm8NCiAgDQogICMgVGhpbmdzIHdoaWNoIG5lZWQgdG8g YmUgYnVpbHQgd2hlbiBtYWtpbmcgYSBkaXN0cmlidXRpb24uDQogIA0KLS0tIDYzMCw2MzkgLS0t LQ0KICAjIEZvciBub3csIHNob3J0Y3V0IHRoZSAiY29uZmlndXJlIEdEQiBmb3IgZmV3ZXIgbGFu Z3VhZ2VzIiBzdHVmZi4NCiAgWVlGSUxFUyA9IGMtZXhwLnRhYi5jIFwNCiAgCWp2LWV4cC50YWIu YyBcDQohIAlmLWV4cC50YWIuYyBtMi1leHAudGFiLmMgcC1leHAudGFiLmMNCiAgWVlPQkogPSBj LWV4cC50YWIubyBcDQogIAlqdi1leHAudGFiLm8gXA0KISAJZi1leHAudGFiLm8gbTItZXhwLnRh Yi5vIHAtZXhwLnRhYi5vDQogIA0KICAjIFRoaW5ncyB3aGljaCBuZWVkIHRvIGJlIGJ1aWx0IHdo ZW4gbWFraW5nIGEgZGlzdHJpYnV0aW9uLg0KICANCioqKioqKioqKioqKioqKg0KKioqIDg4Miw4 ODggKioqKg0KICAJQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVj aWFsIHRvb2xzIHRvIHJlYnVpbGQuIg0KICAJcm0gLWYgYy1leHAudGFiLmMgXA0KICAJCWp2LWV4 cC50YWIgXA0KISAJCWYtZXhwLnRhYi5jIG0yLWV4cC50YWIuYw0KICAJcm0gLWYgVEFHUyAkKElO Rk9GSUxFUykNCiAgCXJtIC1mICQoWVlGSUxFUykNCiAgCXJtIC1mIG5tLmggdG0uaCB4bS5oIGNv bmZpZy5zdGF0dXMNCi0tLSA4ODMsODg5IC0tLS0NCiAgCUBlY2hvICJpdCBkZWxldGVzIGZpbGVz IHRoYXQgbWF5IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0byByZWJ1aWxkLiINCiAgCXJtIC1mIGMt ZXhwLnRhYi5jIFwNCiAgCQlqdi1leHAudGFiIFwNCiEgCQlmLWV4cC50YWIuYyBtMi1leHAudGFi LmMgcC1leHAudGFiLmMNCiAgCXJtIC1mIFRBR1MgJChJTkZPRklMRVMpDQogIAlybSAtZiAkKFlZ RklMRVMpDQogIAlybSAtZiBubS5oIHRtLmggeG0uaCBjb25maWcuc3RhdHVzDQoqKioqKioqKioq KioqKioNCioqKiA5MzMsOTQwICoqKioNCiAgCWNkIGRvYzsgJChNQUtFKSBnZGIuaW5mbyAkKEZM QUdTX1RPX1BBU1MpDQogIA0KICAjIE1ha2UgY29weWluZy5jIGZyb20gQ09QWUlORw0KISBjb3B5 aW5nLmM6IENPUFlJTkcgY29weWluZy5hd2sNCiEgCWF3ayAtZiAkKHNyY2RpcikvY29weWluZy5h d2sgPCAkKHNyY2RpcikvQ09QWUlORyA+IGNvcHlpbmcuYw0KICANCiAgdmVyc2lvbi5jOiBNYWtl ZmlsZQ0KICAJcm0gLWYgdmVyc2lvbi5jDQotLS0gOTM0LDk0MiAtLS0tDQogIAljZCBkb2M7ICQo TUFLRSkgZ2RiLmluZm8gJChGTEFHU19UT19QQVNTKQ0KICANCiAgIyBNYWtlIGNvcHlpbmcuYyBm cm9tIENPUFlJTkcNCiEgIyBvbiBESkdQUCBtYWtlIGlzIGNvbmZ1c2VkIGJ5IHRoaXMgcnVsZQ0K ISAjY29weWluZy5jOiBDT1BZSU5HIGNvcHlpbmcuYXdrDQohICMJYXdrIC1mICQoc3JjZGlyKS9j b3B5aW5nLmF3ayA8ICQoc3JjZGlyKS9DT1BZSU5HID4gY29weWluZy5jDQogIA0KICB2ZXJzaW9u LmM6IE1ha2VmaWxlDQogIAlybSAtZiB2ZXJzaW9uLmMNCioqKioqKioqKioqKioqKg0KKioqIDEw MTMsMTAyMSAqKioqDQogIAktcm0gbTItZXhwLnRtcA0KICAJbXYgbTItZXhwLm5ldyAuL20yLWV4 cC50YWIuYw0KICANCiAgIyBUaGVzZSBmaWxlcyBhcmUgdXBkYXRlZCBhdG9taWNhbGx5LCBzbyBt YWtlIG5ldmVyIGhhcyB0byByZW1vdmUgdGhlbQ0KICAuUFJFQ0lPVVM6IG0yLWV4cC50YWIuYyBm LWV4cC50YWIuYyBjLWV4cC50YWIuYw0KISAuUFJFQ0lPVVM6IGp2LWV4cC50YWIuYw0KICANCiAg bGludDogJChMSU5URklMRVMpDQogIAkkKExJTlQpICQoSU5DTFVERV9DRkxBR1MpICQoTElOVEZM QUdTKSAkKExJTlRGSUxFUykgXA0KLS0tIDEwMTUsMTA0MSAtLS0tDQogIAktcm0gbTItZXhwLnRt cA0KICAJbXYgbTItZXhwLm5ldyAuL20yLWV4cC50YWIuYw0KICANCisgIyBwLWV4cC50YWIuYyBp cyBnZW5lcmF0ZWQgaW4gb2JqZGlyIGZyb20gcC1leHAueSBpZiBpdCBkb2Vzbid0IGV4aXN0DQor ICMgaW4gc3JjZGlyLCB0aGVuIGNvbXBpbGVkIGluIG9iamRpciB0byBwLWV4cC50YWIuby4NCisg IyBSZW1vdmUgYm9ndXMgZGVjbHMgZm9yIG1hbGxvYy9yZWFsbG9jL2ZyZWUgd2hpY2ggY29uZmxp Y3Qgd2l0aCBldmVyeXRoaW5nDQorICMgZWxzZS4NCisgcC1leHAudGFiLm86IHAtZXhwLnRhYi5j DQorIHAtZXhwLnRhYi5jOiBwLWV4cC55DQorIAkkKFNIRUxMKSAkKFlMV1JBUCkgIiQoWUFDQyki ICQoc3JjZGlyKS9wLWV4cC55ICB5LnRhYi5jIHAtZXhwLnRtcCAtLSAkKFlGTEFHUykNCisgCS1z ZWQgLWUgJy9leHRlcm4uKm1hbGxvYy9kJyBcDQorIAkgICAgIC1lICcvZXh0ZXJuLipyZWFsbG9j L2QnIFwNCisgCSAgICAgLWUgJy9leHRlcm4uKmZyZWUvZCcgXA0KKyAJICAgICAtZSAnL2luY2x1 ZGUuKm1hbGxvYy5oL2QnIFwNCisgCSAgICAgLWUgJ3MvbWFsbG9jL3htYWxsb2MvZycgXA0KKyAJ ICAgICAtZSAncy9yZWFsbG9jL3hyZWFsbG9jL2cnIFwNCisgCSAgICAgLWUgJy9eI2xpbmUuKnku dGFiLmMvZCcgXA0KKyAJICA8IHAtZXhwLnRtcCA+IHAtZXhwLm5ldw0KKyAJLXJtIHAtZXhwLnRt cA0KKyAJbXYgcC1leHAubmV3IC4vcC1leHAudGFiLmMNCisgDQogICMgVGhlc2UgZmlsZXMgYXJl IHVwZGF0ZWQgYXRvbWljYWxseSwgc28gbWFrZSBuZXZlciBoYXMgdG8gcmVtb3ZlIHRoZW0NCiAg LlBSRUNJT1VTOiBtMi1leHAudGFiLmMgZi1leHAudGFiLmMgYy1leHAudGFiLmMNCiEgLlBSRUNJ T1VTOiBqdi1leHAudGFiLmMgcC1leHAudGFiLmMNCiAgDQogIGxpbnQ6ICQoTElOVEZJTEVTKQ0K ICAJJChMSU5UKSAkKElOQ0xVREVfQ0ZMQUdTKSAkKExJTlRGTEFHUykgJChMSU5URklMRVMpIFwN CioqKioqKioqKioqKioqKg0KKioqIDE0NDEsMTQ0NiAqKioqDQotLS0gMTQ2MSwxNDc2IC0tLS0N CiAgbTMtbmF0Lm86IG0zLW5hdC5jICQoZGVmc19oKSAkKGluZmVyaW9yX2gpICQodmFsdWVfaCkg bGFuZ3VhZ2UuaCB0YXJnZXQuaCBcDQogIAlnZGJfd2FpdC5oICQoZ2RiY21kX2gpICQoZ2RiY29y ZV9oKQ0KICANCisgcC1sYW5nLm86IHAtbGFuZy5jIHAtbGFuZy5oICQoZGVmc19oKSAkKGV4cHJl c3Npb25faCkgJChnZGJ0eXBlc19oKSBcDQorIAlsYW5ndWFnZS5oIHBhcnNlci1kZWZzLmggJChz eW10YWJfaCkgZ2RiX3N0cmluZy5oDQorIA0KKyBwLXR5cGVwcmludC5vOiBwLXR5cGVwcmludC5j IHAtbGFuZy5oICQoZGVmc19oKSAkKGV4cHJlc3Npb25faCkgXA0KKyAJJChnZGJjbWRfaCkgJChn ZGJjb3JlX2gpICQoZ2RidHlwZXNfaCkgbGFuZ3VhZ2UuaCAkKHN5bXRhYl9oKSBcDQorIAl0YXJn ZXQuaCB0eXBlcHJpbnQuaCAkKHZhbHVlX2gpIGdkYl9zdHJpbmcuaA0KKyANCisgcC12YWxwcmlu dC5vOiBwLXZhbHByaW50LmMgJChkZWZzX2gpICQoZXhwcmVzc2lvbl9oKSAkKGdkYnR5cGVzX2gp IFwNCisgCWxhbmd1YWdlLmggJChzeW10YWJfaCkgdmFscHJpbnQuaCAkKHZhbHVlX2gpIGdkYl9z dHJpbmcuaA0KKyANCiAgbTY4ay10ZGVwLm86IG02OGstdGRlcC5jICQoZGVmc19oKSAkKGZyYW1l X2gpICQoc3ltdGFiX2gpICQodmFsdWVfaCkgXA0KICAJJChnZGJjb3JlX2gpIGdkYl9zdHJpbmcu aA0KICANCioqKioqKioqKioqKioqKg0KKioqIDE4ODMsMTg4OCAqKioqDQotLS0gMTkxMywxOTIy IC0tLS0NCiAgDQogIG0yLWV4cC50YWIubzogbTItZXhwLnRhYi5jICQoZGVmc19oKSAkKGV4cHJl c3Npb25faCkgJChnZGJ0eXBlc19oKSBcDQogIAlsYW5ndWFnZS5oIG0yLWxhbmcuaCBwYXJzZXIt ZGVmcy5oICQoc3ltdGFiX2gpICQodmFsdWVfaCkgXA0KKyAJJChiZmRfaCkgb2JqZmlsZXMuaCBz eW1maWxlLmgNCisgDQorIHAtZXhwLnRhYi5vOiBwLWV4cC50YWIuYyAkKGRlZnNfaCkgJChleHBy ZXNzaW9uX2gpICQoZ2RidHlwZXNfaCkgXA0KKyAJbGFuZ3VhZ2UuaCBwLWxhbmcuaCBwYXJzZXIt ZGVmcy5oICQoc3ltdGFiX2gpICQodmFsdWVfaCkgXA0KICAJJChiZmRfaCkgb2JqZmlsZXMuaCBz eW1maWxlLmgNCiAgDQogIGdkYi1ldmVudHMubzogZ2RiLWV2ZW50cy5jIGdkYi1ldmVudHMuaCAk KGRlZnNfaCkgJChnZGJjbWRfaCkNCkluZGV4OiBkZWZzLmgNCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxl OiAvY3ZzL3NyYy9zcmMvZ2RiL2RlZnMuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNA0KZGlm ZiAtYiAtYyAtcjEuNCBkZWZzLmgNCioqKiBkZWZzLmgJMjAwMC8wMi8yNCAwMDowNDowMwkxLjQN Ci0tLSBkZWZzLmgJMjAwMC8wMy8wMyAxNDowMToxNQ0KKioqKioqKioqKioqKioqDQoqKiogMTgx LDE4NyAqKioqDQogICAgICBsYW5ndWFnZV9mb3J0cmFuLAkJLyogRm9ydHJhbiAqLw0KICAgICAg bGFuZ3VhZ2VfbTIsCQkvKiBNb2R1bGEtMiAqLw0KICAgICAgbGFuZ3VhZ2VfYXNtLAkJLyogQXNz ZW1ibHkgbGFuZ3VhZ2UgKi8NCiEgICAgIGxhbmd1YWdlX3NjbQkJLyogU2NoZW1lIC8gR3VpbGUg Ki8NCiAgICB9Ow0KICANCiAgZW51bSBwcmVjaXNpb25fdHlwZQ0KLS0tIDE4MSwxODggLS0tLQ0K ICAgICAgbGFuZ3VhZ2VfZm9ydHJhbiwJCS8qIEZvcnRyYW4gKi8NCiAgICAgIGxhbmd1YWdlX20y LAkJLyogTW9kdWxhLTIgKi8NCiAgICAgIGxhbmd1YWdlX2FzbSwJCS8qIEFzc2VtYmx5IGxhbmd1 YWdlICovDQohICAgICBsYW5ndWFnZV9zY20sICAgIC8qIFNjaGVtZSAvIEd1aWxlICovDQohICAg ICBsYW5ndWFnZV9wYXNjYWwJCS8qIFBhc2NhbCBGUEMgR05VID8/ICovDQogICAgfTsNCiAgDQog IGVudW0gcHJlY2lzaW9uX3R5cGUNCkluZGV4OiBldmFsLmMNCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxl OiAvY3ZzL3NyYy9zcmMvZ2RiL2V2YWwuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjcN CmRpZmYgLWIgLWMgLXIxLjEuMS43IGV2YWwuYw0KKioqIGV2YWwuYwkxOTk5LzEyLzE0IDAxOjA1 OjMwCTEuMS4xLjcNCi0tLSBldmFsLmMJMjAwMC8wMy8wMyAxNDowMToxOA0KKioqKioqKioqKioq KioqDQoqKiogMTE5NiwxMjAxICoqKioNCi0tLSAxMTk2LDEyMDIgLS0tLQ0KICANCiAgICAgIGNh c2UgQklOT1BfTVVMOg0KICAgICAgY2FzZSBCSU5PUF9ESVY6DQorICAgICBjYXNlIEJJTk9QX0lO VERJVjoNCiAgICAgIGNhc2UgQklOT1BfUkVNOg0KICAgICAgY2FzZSBCSU5PUF9NT0Q6DQogICAg ICBjYXNlIEJJTk9QX0xTSDoNCkluZGV4OiBsYW5ndWFnZS5jDQo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmls ZTogL2N2cy9zcmMvc3JjL2dkYi9sYW5ndWFnZS5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4x LjEuOA0KZGlmZiAtYiAtYyAtcjEuMS4xLjggbGFuZ3VhZ2UuYw0KKioqIGxhbmd1YWdlLmMJMjAw MC8wMi8wMiAwMDoyMTowOAkxLjEuMS44DQotLS0gbGFuZ3VhZ2UuYwkyMDAwLzAzLzAzIDE0OjAx OjQzDQoqKioqKioqKioqKioqKioNCioqKiA4MTksODI0ICoqKioNCi0tLSA4MTksODI1IC0tLS0N CiAgICAgIHsNCiAgICAgIGNhc2UgbGFuZ3VhZ2VfYzoNCiAgICAgIGNhc2UgbGFuZ3VhZ2VfY3Bs dXM6DQorICAgICBjYXNlIGxhbmd1YWdlX3Bhc2NhbDoNCiAgICAgICAgcmV0dXJuIChUWVBFX0NP REUgKHR5cGUpICE9IFRZUEVfQ09ERV9JTlQpICYmDQogIAkoVFlQRV9DT0RFICh0eXBlKSAhPSBU WVBFX0NPREVfRU5VTSkgPyAwIDogMTsNCiAgICAgIGNhc2UgbGFuZ3VhZ2VfbTI6DQoqKioqKioq KioqKioqKioNCioqKiA4NjEsODY2ICoqKioNCi0tLSA4NjIsODY4IC0tLS0NCiAgDQogICAgICBj YXNlIGxhbmd1YWdlX2M6DQogICAgICBjYXNlIGxhbmd1YWdlX2NwbHVzOg0KKyAgICAgY2FzZSBs YW5ndWFnZV9wYXNjYWw6DQogICAgICAgIHJldHVybiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfSU5UKSAmJg0KICAJVFlQRV9MRU5HVEggKHR5cGUpID09IHNpemVvZiAoY2hhcikNCiAg ICAgICAgPyAxIDogMDsNCioqKioqKioqKioqKioqKg0KKioqIDg3OSw4ODQgKioqKg0KLS0tIDg4 MSw4ODcgLS0tLQ0KICAgICAgew0KICAgICAgY2FzZSBsYW5ndWFnZV9jaGlsbDoNCiAgICAgIGNh c2UgbGFuZ3VhZ2VfbTI6DQorICAgICBjYXNlIGxhbmd1YWdlX3Bhc2NhbDoNCiAgICAgICAgcmV0 dXJuIFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1NUUklORyA/IDAgOiAxOw0KICANCiAg ICAgIGNhc2UgbGFuZ3VhZ2VfYzoNCioqKioqKioqKioqKioqKg0KKioqIDkwMiw5MDcgKioqKg0K LS0tIDkwNSw5MTEgLS0tLQ0KICAgICAgew0KICAgICAgY2FzZSBsYW5ndWFnZV9jOg0KICAgICAg Y2FzZSBsYW5ndWFnZV9jcGx1czoNCisgICAgIGNhc2UgbGFuZ3VhZ2VfcGFzY2FsOg0KICAgICAg ICAvKiBNaWdodCBiZSBtb3JlIGNsZWFubHkgaGFuZGxlZCBieSBoYXZpbmcgYSBUWVBFX0NPREVf SU5UX05PVF9CT09MDQogICAgICAgICAgIGZvciBDSElMTCBhbmQgc3VjaCBsYW5ndWFnZXMsIG9y IGEgVFlQRV9DT0RFX0lOVF9PUl9CT09MIGZvciBDLiAgKi8NCiAgICAgICAgaWYgKFRZUEVfQ09E RSAodHlwZSkgPT0gVFlQRV9DT0RFX0lOVCkNCioqKioqKioqKioqKioqKg0KKioqIDk0Myw5NDgg KioqKg0KLS0tIDk0Nyw5NTcgLS0tLQ0KICAgICAgICByZXR1cm4gKFRZUEVfQ09ERSAodHlwZSkg PT0gVFlQRV9DT0RFX1NUUlVDVCkgfHwNCiAgCShUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09E RV9VTklPTikgfHwNCiAgCShUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWSk7DQor ICAgIGNhc2UgbGFuZ3VhZ2VfcGFzY2FsOg0KKyAgICAgICByZXR1cm4gKFRZUEVfQ09ERSh0eXBl KSA9PSBUWVBFX0NPREVfU1RSVUNUKSB8fA0KKyAJIChUWVBFX0NPREUodHlwZSkgPT0gVFlQRV9D T0RFX1VOSU9OKSB8fA0KKyAJIChUWVBFX0NPREUodHlwZSkgPT0gVFlQRV9DT0RFX1NFVCkgfHwN CisgCSAgICAoVFlQRV9DT0RFKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWSk7DQogICAgICBjYXNl IGxhbmd1YWdlX20yOg0KICAgICAgICByZXR1cm4gKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9D T0RFX1NUUlVDVCkgfHwNCiAgCShUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9TRVQpIHx8 DQoqKioqKioqKioqKioqKioNCioqKiA5NzQsOTgwICoqKioNCiAgCX0NCiAgICAgICAgcmV0dXJu IGJ1aWx0aW5fdHlwZV9mX2xvZ2ljYWxfczI7DQogICAgICBjYXNlIGxhbmd1YWdlX2NwbHVzOg0K ISAgICAgICBzeW0gPSBsb29rdXBfc3ltYm9sICgiYm9vbCIsIE5VTEwsIFZBUl9OQU1FU1BBQ0Us IE5VTEwsIE5VTEwpOw0KICAgICAgICBpZiAoc3ltKQ0KICAJew0KICAJICB0eXBlID0gU1lNQk9M X1RZUEUgKHN5bSk7DQotLS0gOTgzLDk5MyAtLS0tDQogIAl9DQogICAgICAgIHJldHVybiBidWls dGluX3R5cGVfZl9sb2dpY2FsX3MyOw0KICAgICAgY2FzZSBsYW5ndWFnZV9jcGx1czoNCiEgICAg IGNhc2UgbGFuZ3VhZ2VfcGFzY2FsOg0KISAgICAgICBpZiAoY3VycmVudF9sYW5ndWFnZS0+bGFf bGFuZ3VhZ2U9PWxhbmd1YWdlX2NwbHVzKQ0KISAgICAgICAgIHtzeW0gPSBsb29rdXBfc3ltYm9s ICgiYm9vbCIsIE5VTEwsIFZBUl9OQU1FU1BBQ0UsIE5VTEwsIE5VTEwpO30NCiEgICAgICAgZWxz ZQ0KISAgICAgICAgIHtzeW0gPSBsb29rdXBfc3ltYm9sICgiYm9vbGVhbiIsIE5VTEwsIFZBUl9O QU1FU1BBQ0UsIE5VTEwsIE5VTEwpO30NCiAgICAgICAgaWYgKHN5bSkNCiAgCXsNCiAgCSAgdHlw ZSA9IFNZTUJPTF9UWVBFIChzeW0pOw0KKioqKioqKioqKioqKioqDQoqKiogMTE2NiwxMTcxICoq KioNCi0tLSAxMTc5LDExOTkgLS0tLQ0KICAJCXR5cGVfb3BfZXJyb3IgKCJBcmd1bWVudHMgdG8g JXMgbXVzdCBiZSBvZiBpbnRlZ3JhbCB0eXBlLiIsIG9wKTsNCiAgCSAgICAgIGJyZWFrOw0KICAJ ICAgIH0NCisgI2VuZGlmDQorIA0KKyAjaWZkZWYgX0xBTkdfcGFzY2FsDQorICAgICAgIGNhc2Ug bGFuZ3VhZ2VfcGFzY2FsOg0KKyAJIHN3aXRjaChvcCkNCisgCSB7DQorIAkgY2FzZSBCSU5PUF9E SVY6DQorIAkgICAgaWYgKCFmbG9hdF90eXBlKHQxKSB8fCAhZmxvYXRfdHlwZSh0MikpDQorIAkg ICAgICAgdHlwZV9vcF9lcnJvciAoIkFyZ3VtZW50cyB0byAlcyBtdXN0IGJlIGZsb2F0aW5nIHBv aW50IG51bWJlcnMuIixvcCk7DQorIAkgICAgYnJlYWs7DQorIAkgY2FzZSBCSU5PUF9JTlRESVY6 DQorIAkgICAgaWYgKCFpbnRlZ3JhbF90eXBlKHQxKSB8fCAhaW50ZWdyYWxfdHlwZSh0MikpDQor IAkgICAgICAgdHlwZV9vcF9lcnJvciAoIkFyZ3VtZW50cyB0byAlcyBtdXN0IGJlIG9mIGludGVn cmFsIHR5cGUuIixvcCk7DQorIAkgICAgYnJlYWs7DQorIAkgfQ0KICAjZW5kaWYNCiAgDQogICNp ZmRlZiBfTEFOR19jaGlsbA0KSW5kZXg6IGxhbmd1YWdlLmgNCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxl OiAvY3ZzL3NyYy9zcmMvZ2RiL2xhbmd1YWdlLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEu MS42DQpkaWZmIC1iIC1jIC1yMS4xLjEuNiBsYW5ndWFnZS5oDQoqKiogbGFuZ3VhZ2UuaAkyMDAw LzAyLzAyIDAwOjIxOjA4CTEuMS4xLjYNCi0tLSBsYW5ndWFnZS5oCTIwMDAvMDMvMDMgMTQ6MDE6 NDMNCioqKioqKioqKioqKioqKg0KKioqIDM2LDQxICoqKioNCi0tLSAzNiw0MiAtLS0tDQogICNk ZWZpbmUJX0xBTkdfbTINCiAgI2RlZmluZQlfTEFOR19jaGlsbA0KICAjZGVmaW5lIF9MQU5HX2Zv cnRyYW4NCisgI2RlZmluZSBfTEFOR19wYXNjYWwNCiAgDQogICNkZWZpbmUgTUFYX0ZPUlRSQU5f RElNUyAgNwkvKiBNYXhpbXVtIG51bWJlciBvZiBGNzcgYXJyYXkgZGltcyAqLw0KICANCkluZGV4 OiBzdGFic3JlYWQuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvc3Rh YnNyZWFkLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjINCmRpZmYgLWIgLWMgLXIxLjIgc3Rh YnNyZWFkLmMNCioqKiBzdGFic3JlYWQuYwkyMDAwLzAyLzA4IDA0OjM5OjAyCTEuMg0KLS0tIHN0 YWJzcmVhZC5jCTIwMDAvMDMvMDMgMTQ6MDE6NTQNCioqKioqKioqKioqKioqKg0KKioqIDIwMDYs MjAxNSAqKioqDQotLS0gMjAwNiwyMDIyIC0tLS0NCiAgDQogIAkgICAgICAgICBGb3J0dW5hdGVs eSwgdGhpcyBjaGVjayBzZWVtcyBub3QgdG8gYmUgbmVjZXNzYXJ5DQogIAkgICAgICAgICBmb3Ig YW55dGhpbmcgZXhjZXB0IHBvaW50ZXJzIG9yIGZ1bmN0aW9ucy4gICovDQorIAkJIGlmICgoVFlQ RV9DT0RFIChTWU1CT0xfVFlQRSAoc3ltKSkgPT0gVFlQRV9DT0RFX1BUUikgJiYNCisgICAgICAg ICAgIChjdXJyZW50X3N1YmZpbGUtPmxhbmd1YWdlID09IGxhbmd1YWdlX3Bhc2NhbCkpDQorICAg ICAgICAgICB7DQorICAgICAgICAgICAgVFlQRV9OQU1FIChTWU1CT0xfVFlQRSAoc3ltKSkgPSBT WU1CT0xfTkFNRSAoc3ltKTsNCisgICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICBl bHNlDQorICAgICAgICB7DQogIAkgICAgVFlQRV9OQU1FIChTWU1CT0xfVFlQRSAoc3ltKSkgPSBT WU1CT0xfTkFNRSAoc3ltKTsNCiAgICAgICAgIH0NCisgCSAJfQ0KICANCiAgICAgICAgYWRkX3N5 bWJvbF90b19saXN0IChzeW0sICZmaWxlX3N5bWJvbHMpOw0KICAgICAgICBicmVhazsNCkluZGV4 OiBzeW1maWxlLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL3N5bWZp bGUuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4xLjE3DQpkaWZmIC1iIC1jIC1yMS4xLjEu MTcgc3ltZmlsZS5jDQoqKiogc3ltZmlsZS5jCTIwMDAvMDIvMDMgMDQ6MTQ6MzUJMS4xLjEuMTcN Ci0tLSBzeW1maWxlLmMJMjAwMC8wMy8wMyAxNDowMjowMg0KKioqKioqKioqKioqKioqDQoqKiog MTk5MiwxOTk3ICoqKioNCi0tLSAxOTkyLDIwMDEgLS0tLQ0KICAgICAgICBhZGRfZmlsZW5hbWVf bGFuZ3VhZ2UgKCIuRiIsIGxhbmd1YWdlX2ZvcnRyYW4pOw0KICAgICAgICBhZGRfZmlsZW5hbWVf bGFuZ3VhZ2UgKCIucyIsIGxhbmd1YWdlX2FzbSk7DQogICAgICAgIGFkZF9maWxlbmFtZV9sYW5n dWFnZSAoIi5TIiwgbGFuZ3VhZ2VfYXNtKTsNCisgICAgICAgYWRkX2ZpbGVuYW1lX2xhbmd1YWdl ICgiLnBhcyIsICAgbGFuZ3VhZ2VfcGFzY2FsKTsNCisgICAgICAgYWRkX2ZpbGVuYW1lX2xhbmd1 YWdlICgiLnAiLCAgICAgbGFuZ3VhZ2VfcGFzY2FsKTsNCisgICAgICAgYWRkX2ZpbGVuYW1lX2xh bmd1YWdlICgiLnBwIiwgICAgbGFuZ3VhZ2VfcGFzY2FsKTsNCisgICAgICAgYWRkX2ZpbGVuYW1l X2xhbmd1YWdlICgiLmluYyIsICAgbGFuZ3VhZ2VfcGFzY2FsKTsNCiAgICAgIH0NCiAgfQ0KICAN CkluZGV4OiB1dGlscy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi91 dGlscy5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4yDQpkaWZmIC1iIC1jIC1yMS4yIHV0aWxz LmMNCioqKiB1dGlscy5jCTIwMDAvMDIvMjkgMDc6NDU6MTMJMS4yDQotLS0gdXRpbHMuYwkyMDAw LzAzLzAzIDE0OjAyOjE3DQoqKioqKioqKioqKioqKioNCioqKiAyMjQzLDIyNDggKioqKg0KLS0t IDIyNDMsMjI0OSAtLS0tDQogIAl7DQogIAkgIHN3aXRjaCAobGFuZykNCiAgCSAgICB7DQorIAkg ICAgY2FzZSBsYW5ndWFnZV9wYXNjYWw6DQogIAkgICAgY2FzZSBsYW5ndWFnZV9jcGx1czoNCiAg CSAgICAgIGRlbWFuZ2xlZCA9IGNwbHVzX2RlbWFuZ2xlIChuYW1lLCBhcmdfbW9kZSk7DQogIAkg ICAgICBicmVhazsNCiAgDQoNCg0KDQo= >>From tromey@cygnus.com Fri Mar 03 14:18:00 2000 From: Tom Tromey To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/32: --enable-profiling and new profiling command Date: Fri, 03 Mar 2000 14:18:00 -0000 Message-id: <20000303221352.13484.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00029.html Content-length: 14737 >Number: 32 >Category: gdb-patch >Synopsis: --enable-profiling and new profiling command >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Mar 03 14:18:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Tom Tromey >Release: current cvs >Organization: >Environment: >Description: This patch adds an --enable-profiling option to gdb's configure script and it adds a new command which can be used to turn profiling on and off from the gdb prompt. This lets a developer profile selected bits of gdb more easily. I sent this to gdb-patches a while back. Andrew Cagney had some suggestions for how to change it. I haven't had time to implement those (and I might never have time). >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="prof-patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="prof-patch" MjAwMC0wMS0xNiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogbWFpbnQuYyAo bWFpbnRfcHJvZmlsZV9nZGIpOiBOZXcgZnVuY3Rpb24uCgkoX2luaXRpYWxpemVfbWFpbnRfY21k cyk6IEFkZCBgcHJvZmlsZS1nZGInIGNvbW1hbmQgaWYgcHJvZmlsaW5nCgllbmFibGVkLgoJKiBt YWluLmMgKGNhcHR1cmVkX21haW4pOiBDYWxsIG1vbmNvbnRyb2wgaWYgcHJvZmlsaW5nIGVuYWJs ZWQuCgkqIGNvbmZpZy5pbiwgY29uZmlndXJlOiBSZWJ1aWx0LgoJKiBjb25maWd1cmUuaW46IEFk ZGVkIC0tZW5hYmxlLXByb2ZpbGluZy4gIERlZmluZSBQUk9GSUxFX0NGTEFHUwoJYW5kIEVOQUJM RV9QUk9GSUxFIGFzIGFwcHJvcHJpYXRlLgoJKiBhY2NvbmZpZy5oIChFTkFCTEVfUFJPRklMRSk6 IEFkZGVkLgoJKiBNYWtlZmlsZS5pbiAoUFJPRklMRV9DRkxBR1MpOiBEZWZpbmUgYXMgQFBST0ZJ TEVfQ0ZMQUdTQC4KCjIwMDAtMDEtMTYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4K CgkqIGdkYmludC50ZXhpbmZvIChQcm9maWxpbmcgR0RCKTogTmV3IG5vZGUuCgoyMDAwLTAxLTE2 ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBnZGIuYmFzZS9zZWxmdGVzdC5l eHAgKGRvX3N0ZXBzX2FuZF9uZXh0cyk6IEFjY291bnQgZm9yCglwb3NzaWJsZSBgbW9uY29udHJv bCcgY2FsbCBhdCBzdGFydHVwLgoKSW5kZXg6IE1ha2VmaWxlLmluCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9jdnMvY3ZzZmlsZXMvZGV2by9nZGIvTWFrZWZpbGUuaW4sdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuNzM4CmRpZmYgLXUgLXIxLjczOCBNYWtlZmlsZS5pbgotLS0gTWFrZWZpbGUuaW4JMjAw MC8wMS8xMyAxNjo0MToyNgkxLjczOAorKysgTWFrZWZpbGUuaW4JMjAwMC8wMS8xNyAxNzo1ODow NApAQCAtMjI4LDcgKzIyOCw3IEBACiAjIE17SCxUfV9DRkxBR1MsIGlmIGRlZmluZWQsIGhhdmUg aG9zdC0gYW5kIHRhcmdldC1kZXBlbmRlbnQgQ0ZMQUdTCiAjIGZyb20gdGhlIGNvbmZpZyBkaXJl Y3RvcnkuCiBHTE9CQUxfQ0ZMQUdTID0gJChNVF9DRkxBR1MpICQoTUhfQ0ZMQUdTKQotI1BST0ZJ TEVfQ0ZMQUdTID0gLXBnCitQUk9GSUxFX0NGTEFHUyA9IEBQUk9GSUxFX0NGTEFHU0AKIAogIyBD RkxBR1MgaXMgc3BlY2lmaWNhbGx5IHJlc2VydmVkIGZvciBzZXR0aW5nIGZyb20gdGhlIGNvbW1h bmQgbGluZQogIyB3aGVuIHJ1bm5pbmcgbWFrZS4gIEkuRS4gICJtYWtlIENGTEFHUz0tV21pc3Np bmctcHJvdG90eXBlcyIuCkluZGV4OiBORVdTCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvY3Zz ZmlsZXMvZGV2by9nZGIvTkVXUyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMi43MwpkaWZmIC11IC1y Mi43MyBORVdTCi0tLSBORVdTCTE5OTkvMTIvMTYgMDI6MDM6MjMJMi43MworKysgTkVXUwkyMDAw LzAxLzE3IDE3OjU4OjMwCkBAIC0yMTUsNiArMjE1LDEyIEBACiBUaGUgaTk2MCBjb25maWd1cmF0 aW9uIG5vdyBpbmNsdWRlcyBhbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGEKIGJ1aWx0aW4g c2ltdWxhdG9yLCBjb250cmlidXRlZCBieSBKaW0gV2lsc29uLgogCisqIFByb2ZpbGluZyBmb3Ig Z2RiCisKK0lmIGdkYiBpcyBjb25maWd1cmVkIHdpdGggYC0tZW5hYmxlLXByb2ZpbGluZycsIHRo ZW4gZ2RiIGlzIGJ1aWx0IHdpdGgKK2AtcGcnIGFuZCBhIG5ldyBgbWFpbnRlbmFuY2UgcHJvZmls ZS1nZGInIGNvbW1hbmQgaXMgY3JlYXRlZC4gIFRoaXMKK2NvbW1hbmQgY2FuIGJlIHVzZWQgdG8g ZW5hYmxlIG9yIGRpc2FibGUgcHJvZmlsaW5nLCBtYWtpbmcgaXQgcG9zc2libGUKK3RvIHByb2Zp bGUgYSBzaW5nbGUgY29tbWFuZCBvciBzZXQgb2YgY29tbWFuZHMuCiAKICoqKiBDaGFuZ2VzIGlu IEdEQi00LjE3OgogCkluZGV4OiBhY2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv Y3ZzZmlsZXMvZGV2by9nZGIvYWNjb25maWcuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMi4yMwpk aWZmIC11IC1yMi4yMyBhY2NvbmZpZy5oCi0tLSBhY2NvbmZpZy5oCTE5OTkvMTIvMjMgMDA6NTY6 NDcJMi4yMworKysgYWNjb25maWcuaAkyMDAwLzAxLzE3IDE3OjU4OjMwCkBAIC04NSwzICs4NSw2 IEBACiAKIC8qIERlZmluZSBpZiA8c3lzL3B0cmFjZS5oPiBkZWZpbmVzIHRoZSBQVFJBQ0VfR0VU WEZQUkVHUyByZXF1ZXN0LiAgKi8KICN1bmRlZiBIQVZFX1BUUkFDRV9HRVRYRlBSRUdTCisKKy8q IERlZmluZSBpZiBwcm9maWxpbmcgc3VwcG9ydCBzaG91bGQgYmUgZW5hYmxlZC4gICovCisjdW5k ZWYgRU5BQkxFX1BST0ZJTEUKSW5kZXg6IGNvbmZpZy5pbgo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv Y3ZzL2N2c2ZpbGVzL2Rldm8vZ2RiL2NvbmZpZy5pbix2CnJldHJpZXZpbmcgcmV2aXNpb24gMi40 NgpkaWZmIC11IC1yMi40NiBjb25maWcuaW4KLS0tIGNvbmZpZy5pbgkxOTk5LzEyLzIzIDAwOjU2 OjQ3CTIuNDYKKysrIGNvbmZpZy5pbgkyMDAwLzAxLzE3IDE3OjU4OjMyCkBAIC01OSwxMyArNTks MTMgQEAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgQU5TSSBDIGhlYWRlciBmaWxlcy4gICov CiAjdW5kZWYgU1REQ19IRUFERVJTCiAKLS8qIERlZmluZSBpZiBpb2N0bCBhcmd1bWVudCBQSU9D U0VUIGlzIGF2YWlsYWJsZS4gKi8KLSN1bmRlZiBIQVZFX1BST0NGU19QSU9DU0VUCi0KIC8qIERl ZmluZSBpZiB5b3Ugd2FudCB0byB1c2UgbmV3IG11bHRpLWZkIC9wcm9jIGludGVyZmFjZQogICAg KHJlcGxhY2VzIEhBVkVfTVVMVElQTEVfUFJPQ19GRFMgYXMgd2VsbCBhcyBvdGhlciBtYWNyb3Mp LiAqLwogI3VuZGVmIE5FV19QUk9DX0FQSQogCisvKiBEZWZpbmUgaWYgaW9jdGwgYXJndW1lbnQg UElPQ1NFVCBpcyBhdmFpbGFibGUuICovCisjdW5kZWYgSEFWRV9QUk9DRlNfUElPQ1NFVAorCiAv KiBEZWZpbmUgaWYgdGhlIGBsb25nIGxvbmcnIHR5cGUgd29ya3MuICAqLwogI3VuZGVmIENDX0hB U19MT05HX0xPTkcKIApAQCAtMTIwLDYgKzEyMCw5IEBACiAvKiBEZWZpbmUgaWYgPHN5cy9wdHJh Y2UuaD4gZGVmaW5lcyB0aGUgUFRSQUNFX0dFVFhGUFJFR1MgcmVxdWVzdC4gICovCiAjdW5kZWYg SEFWRV9QVFJBQ0VfR0VUWEZQUkVHUwogCisvKiBEZWZpbmUgaWYgcHJvZmlsaW5nIHN1cHBvcnQg c2hvdWxkIGJlIGVuYWJsZWQuICAqLworI3VuZGVmIEVOQUJMRV9QUk9GSUxFCisKIC8qIERlZmlu ZSBpZiB5b3UgaGF2ZSB0aGUgX19hcmd6X2NvdW50IGZ1bmN0aW9uLiAgKi8KICN1bmRlZiBIQVZF X19fQVJHWl9DT1VOVAogCkBAIC0yMjUsNiArMjI4LDkgQEAKIC8qIERlZmluZSBpZiB5b3UgaGF2 ZSB0aGUgPG9iamxpc3QuaD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVmIEhBVkVfT0JKTElTVF9I CiAKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHByb2Nfc2VydmljZS5oPiBoZWFkZXIgZmls ZS4gICovCisjdW5kZWYgSEFWRV9QUk9DX1NFUlZJQ0VfSAorCiAvKiBEZWZpbmUgaWYgeW91IGhh dmUgdGhlIDxwdHJhY2UuaD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVmIEhBVkVfUFRSQUNFX0gK IApAQCAtMjM0LDYgKzI0MCw5IEBACiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzdGRkZWYu aD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVmIEhBVkVfU1REREVGX0gKIAorLyogRGVmaW5lIGlm IHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAgKi8KKyN1bmRlZiBIQVZFX1NU RElOVF9ICisKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmls ZS4gICovCiAjdW5kZWYgSEFWRV9TVERMSUJfSAogCkBAIC0yNzMsNiArMjgyLDkgQEAKIC8qIERl ZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHRlcm1pb3MuaD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVm IEhBVkVfVEVSTUlPU19ICiAKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHRocmVhZF9kYi5o PiBoZWFkZXIgZmlsZS4gICovCisjdW5kZWYgSEFWRV9USFJFQURfREJfSAorCiAvKiBEZWZpbmUg aWYgeW91IGhhdmUgdGhlIDx0aW1lLmg+IGhlYWRlciBmaWxlLiAgKi8KICN1bmRlZiBIQVZFX1RJ TUVfSAogCkBAIC0yODQsMTUgKzI5Niw2IEBACiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUg PHdhaXQuaD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVmIEhBVkVfV0FJVF9ICi0KLS8qIERlZmlu ZSBpZiB5b3UgaGF2ZSB0aGUgPHRocmVhZF9kYi5oPiBoZWFkZXIgZmlsZS4gICovCi0jdW5kZWYg SEFWRV9USFJFQURfREJfSAotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxwcm9jX3NlcnZp Y2UuaD4gaGVhZGVyIGZpbGUuICAqLwotI3VuZGVmIEhBVkVfUFJPQ19TRVJWSUNFX0gKLQotLyog RGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAgKi8KLSN1bmRl ZiBIQVZFX1NURElOVF9ICiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHdjaGFyLmg+IGhl YWRlciBmaWxlLiAgKi8KICN1bmRlZiBIQVZFX1dDSEFSX0gKSW5kZXg6IGNvbmZpZ3VyZS5pbgo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2N2c2ZpbGVzL2Rldm8vZ2RiL2NvbmZpZ3VyZS5pbix2 CnJldHJpZXZpbmcgcmV2aXNpb24gMS40MDYKZGlmZiAtdSAtcjEuNDA2IGNvbmZpZ3VyZS5pbgot LS0gY29uZmlndXJlLmluCTIwMDAvMDEvMTEgMTk6MjQ6MTAJMS40MDYKKysrIGNvbmZpZ3VyZS5p bgkyMDAwLzAxLzE3IDE3OjU4OjQ1CkBAIC0zNTgsNyArMzU4LDE2IEBACiAKIGRubCBIYW5kbGUg b3B0aW9uYWwgZmVhdHVyZXMgdGhhdCBjYW4gYmUgZW5hYmxlZC4KIEVOQUJMRV9DRkxBR1M9CitQ Uk9GSUxFX0NGTEFHUz0KIAorQUNfQVJHX0VOQUJMRShwcm9maWxpbmcsCitbICAtLWVuYWJsZS1w cm9maWxpbmcgICAgICBUdXJuIG9uIHByb2ZpbGluZyBvZiBnZGJdKQorCitpZiB0ZXN0ICIkZW5h YmxlX3Byb2ZpbGluZyIgPSAgeWVzOyB0aGVuCisgICBBQ19ERUZJTkUoRU5BQkxFX1BST0ZJTEUp CisgICBQUk9GSUxFX0NGTEFHUz0tcGcKK2ZpCisKIEFDX0FSR19FTkFCTEUodHVpLAogWyAgLS1l bmFibGUtdHVpICAgICAgICAgICAgRW5hYmxlIGZ1bGwtc2NyZWVuIHRlcm1pbmFsIHVzZXIgaW50 ZXJmYWNlXSwKIFsKQEAgLTk0NSw2ICs5NTQsNyBAQAogQUNfU1VCU1QoSUdOT1JFX1NJTV9PQlMp CiAKIEFDX1NVQlNUKEVOQUJMRV9DRkxBR1MpCitBQ19TVUJTVChQUk9GSUxFX0NGTEFHUykKIAog QUNfU1VCU1QoQ09ORklHX09CUykKIEFDX1NVQlNUKENPTkZJR19ERVBTKQpJbmRleDogbWFpbi5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvY3ZzZmlsZXMvZGV2by9nZGIvbWFpbi5jLHYKcmV0 cmlldmluZyByZXZpc2lvbiAxLjE5NwpkaWZmIC11IC1yMS4xOTcgbWFpbi5jCi0tLSBtYWluLmMJ MTk5OS8xMi8xMyAxNjowNzo0MAkxLjE5NworKysgbWFpbi5jCTIwMDAvMDEvMTcgMTc6NTk6MDAK QEAgLTE2NCw2ICsxNjQsMTAgQEAKIAogICBsb25nIHRpbWVfYXRfc3RhcnR1cCA9IGdldF9ydW5f dGltZSAoKTsKIAorI2lmZGVmIEVOQUJMRV9QUk9GSUxFCisgIG1vbmNvbnRyb2wgKDApOworI2Vu ZGlmCisKICAgU1RBUlRfUFJPR1JFU1MgKGFyZ3ZbMF0sIDApOwogCiAjaWZkZWYgTVBXCkluZGV4 OiBtYWludC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvY3ZzZmlsZXMvZGV2by9nZGIvbWFp bnQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMi4zNApkaWZmIC11IC1yMi4zNCBtYWludC5jCi0t LSBtYWludC5jCTE5OTkvMDgvMzEgMDM6NTQ6MjQJMi4zNAorKysgbWFpbnQuYwkyMDAwLzAxLzE3 IDE3OjU5OjA0CkBAIC01Nyw2ICs1NywxMSBAQAogCiBzdGF0aWMgdm9pZCBtYWludGVuYW5jZV9w cmludF9jb21tYW5kIFBBUkFNUyAoKGNoYXIgKiwgaW50KSk7CiAKKyNpZmRlZiBFTkFCTEVfUFJP RklMRQorc3RhdGljIHZvaWQgbWFpbnRfcHJvZmlsZV9nZGIgUEFSQU1TICgoY2hhciAqLCBpbnQp KTsKKyNlbmRpZgorCisKIC8qIFNldCB0aGlzIHRvIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNv bmRzIHRvIHdhaXQgaW5zdGVhZCBvZiB3YWl0aW5nIGZvcmV2ZXIKICAgIGluIHRhcmdldF93YWl0 KCkuICBJZiB0aGlzIHRpbWVyIHRpbWVzIG91dCwgdGhlbiBpdCBnZW5lcmF0ZXMgYW4gZXJyb3Ig YW5kCiAgICB0aGUgY29tbWFuZCBpcyBhYm9ydGVkLiAgVGhpcyByZXBsYWNlcyBtb3N0IG9mIHRo ZSBuZWVkIGZvciB0aW1lb3V0cyBpbiB0aGUKQEAgLTM1OCw2ICszNjMsMjYgQEAKICAgcmV0dXJu OwogfQogCisvKiAibWFpbnRlbmFuY2UgcHJvZmlsZS1nZGIgPG9ufG9mZj4iICAqLworc3RhdGlj IHZvaWQKK21haW50X3Byb2ZpbGVfZ2RiIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK3sKKyNp ZmRlZiBFTkFCTEVfUFJPRklMRQorICBpbnQgdmFsOworICBpZiAoYXJnID09IE5VTEwgfHwgISAq YXJnKQorICAgIGVycm9yICgicmVxdWlyZXMgYXJndW1lbnQgKFwib25cIiBvciBcIm9mZlwiIik7 CisgIGlmICghIHN0cmNtcCAoYXJnLCAib24iKSkKKyAgICB2YWwgPSAxOworICBlbHNlIGlmICgh IHN0cmNtcCAoYXJnLCAib2ZmIikpCisgICAgdmFsID0gMDsKKyAgZWxzZQorICAgIGVycm9yICgi dW5yZWNvZ25pemVkIGFyZ3VtZW50OyBtdXN0IGJlIFwib25cIiBvciBcIm9mZlwiIik7CisgIG1v bmNvbnRyb2wgKHZhbCk7CisjZWxzZQorICBlcnJvciAoImdkYiB3YXMgbm90IGNvbmZpZ3VyZWQg d2l0aCAtLWVuYWJsZS1wcm9maWxpbmciKTsKKyNlbmRpZgorfQorCiB2b2lkCiBfaW5pdGlhbGl6 ZV9tYWludF9jbWRzICgpCiB7CkBAIC00NTUsNiArNDgwLDEyIEBACiAgIGFkZF9jbWQgKCJ0cmFu c2xhdGUtYWRkcmVzcyIsIGNsYXNzX21haW50ZW5hbmNlLCBtYWludGVuYW5jZV90cmFuc2xhdGVf YWRkcmVzcywKIAkgICAiVHJhbnNsYXRlIGEgc2VjdGlvbiBuYW1lIGFuZCBhZGRyZXNzIHRvIGEg c3ltYm9sLiIsCiAJICAgJm1haW50ZW5hbmNlbGlzdCk7CisKKyNpZmRlZiBFTkFCTEVfUFJPRklM RQorICBhZGRfY21kICgicHJvZmlsZS1nZGIiLCBjbGFzc19tYWludGVuYW5jZSwgbWFpbnRfcHJv ZmlsZV9nZGIsCisJICAgIkVuYWJsZSBvciBkaXNhYmxlIHByb2ZpbGluZy4iLAorCSAgICZtYWlu dGVuYW5jZWxpc3QpOworI2VuZGlmCiAKICAgYWRkX3Nob3dfZnJvbV9zZXQgKAogCQkgICAgICBh ZGRfc2V0X2NtZCAoIndhdGNoZG9nIiwgY2xhc3NfbWFpbnRlbmFuY2UsIHZhcl96aW50ZWdlciwg KGNoYXIgKikgJndhdGNoZG9nLApJbmRleDogZG9jL2dkYmludC50ZXhpbmZvCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvY3ZzZmlsZXMvZGV2by9nZGIvZG9jL2dkYmludC50ZXhpbmZvLHYKcmV0 cmlldmluZyByZXZpc2lvbiAxLjE0MApkaWZmIC11IC1yMS4xNDAgZ2RiaW50LnRleGluZm8KLS0t IGdkYmludC50ZXhpbmZvCTE5OTkvMTIvMDggMDk6MTI6NDYJMS4xNDAKKysrIGdkYmludC50ZXhp bmZvCTIwMDAvMDEvMTcgMTg6MDA6MzgKQEAgLTI3NzIsNiArMjc3Miw3IEBACiBAbWVudQogKiBH ZXR0aW5nIFN0YXJ0ZWQ6OgkJR2V0dGluZyBzdGFydGVkIHdvcmtpbmcgb24gR0RCCiAqIERlYnVn Z2luZyBHREI6OgkJRGVidWdnaW5nIEdEQiB3aXRoIGl0c2VsZgorKiBQcm9maWxpbmcgR0RCOjog ICAgICAgICAgICAgICBQcm9maWxpbmcgR0RCCiBAZW5kIG1lbnUKIAogQG5vZGUgR2V0dGluZyBT dGFydGVkLCwsIEhpbnRzCkBAIC0yOTczLDYgKzI5NzQsMjggQEAKIAogQGVuZCB0YWJsZQogCitA bm9kZSBQcm9maWxpbmcgR0RCLCwsIEhpbnRzCisKK0BzZWN0aW9uIFByb2ZpbGluZyBHREIKKwor R0RCIGNvbnRhaW5zIHNvbWUgc3VwcG9ydCBmb3IgcHJvZmlsaW5nIGl0c2VsZi4gIEN1cnJlbnRs eSB0aGlzIHN1cHBvcnQKK2lzIHJ1ZGltZW50YXJ5LgorCitZb3UgY2FuIGNvbmZpZ3VyZSBHREIg d2l0aCBAc2FtcHstLWVuYWJsZS1wcm9maWxpbmd9LiAgVGhpcyBkb2VzIHR3bwordGhpbmdzLiAg Rmlyc3QsIGl0IGFycmFuZ2VzIGZvciBHREIgdG8gYmUgY29tcGlsZWQgYW5kIGxpbmtlZCB3aXRo CitAc2FtcHstcGd9LiAgKFRoaXMgbWlnaHQgbm90IHdvcmsgb24gYWxsIHBsYXRmb3JtczsgZmVl bCBmcmVlIHRvIHN1Ym1pdAorcGF0Y2hlcyB0byBmaXggdGhpcyBmb3IgeW91ciBwbGF0Zm9ybS4p ICBTZWNvbmQsIHRoaXMgY29uZmlndXJlIGZsYWcKK2FycmFuZ2VzIGZvciB0aGUgQGNvZGV7bWFp bnQgcHJvZmlsZS1nZGJ9IGNvbW1hbmQgdG8gYmUgZW5hYmxlZC4KKworQGNvZGV7bWFpbnQgcHJv ZmlsZS1nZGJ9IHRha2VzIGEgc2luZ2xlIGFyZ3VtZW50LCB3aGljaCBtdXN0IGJlCitAc2FtcHtv bn0gb3IgQHNhbXB7b2ZmfS4gIFRoaXMgY29tbWFuZCBlbmFibGVzIG9yIGRpc2FibGVzIHByb2Zp bGluZyBvZgorZ2RiLCBhbmQgY2FuIGJlIHVzZWQgdG8gbGltaXQgcHJvZmlsaW5nIHRvIGEgY2hv c2VuIHNldCBvZiB1c2VyCitjb21tYW5kcy4KKworTm90ZSB0aGF0IHdoZW4gY29uZmlndXJlZCB0 aGlzIHdheSwgR0RCIGRpc2FibGVzIHByb2ZpbGluZyBpbgorQGNvZGV7bWFpbn0uICBJZiB5b3Ug d2FudCB0byBwcm9maWxlIEdEQidzIGluaXRpYWxpemF0aW9uIGNvZGUsIHlvdSB3aWxsCitoYXZl IHRvIGFycmFuZ2UgdG8gYnVpbGQgR0RCIHdpdGggQGNvZGV7LXBnfSBidXQgd2l0aG91dAorQHNh bXB7RU5BQkxFX1BST0ZJTEV9IGRlZmluZWQuCiAKIEBjb250ZW50cwogQGJ5ZQpJbmRleDogdGVz dHN1aXRlL2dkYi5iYXNlL3NlbGZ0ZXN0LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2N2 c2ZpbGVzL2Rldm8vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zZWxmdGVzdC5leHAsdgpyZXRyaWV2 aW5nIHJldmlzaW9uIDEuMwpkaWZmIC11IC1yMS4zIHNlbGZ0ZXN0LmV4cAotLS0gc2VsZnRlc3Qu ZXhwCTIwMDAvMDEvMTAgMTg6MzU6NTAJMS4zCisrKyBzZWxmdGVzdC5leHAJMjAwMC8wMS8xNyAx ODowMDo1MQpAQCAtMSw0ICsxLDQgQEAKLSMgICBDb3B5cmlnaHQgKEMpIDE5ODgsIDE5OTAsIDE5 OTEsIDE5OTIsIDE5OTQsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAg Q29weXJpZ2h0IChDKSAxOTg4LCAxOTkwLCAxOTkxLCAxOTkyLCAxOTk0LCAxOTk3LCAyMDAwIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CkBAIC05Niw2ICs5NiwxMCBAQAogCSAgICB9CiAJICAgIC1yZSAiLip0aW1lX2F0X3N0YXJ0 dXAgPSBnZXRfcnVuX3RpbWUuKiRnZGJfcHJvbXB0ICQiIHsKIAkJc2V0IGRlc2NyaXB0aW9uICJu ZXh0IG92ZXIgZ2V0X3J1bl90aW1lIGFuZCBldmVyeXRoaW5nIGl0IGNhbGxzIgorCQlzZXQgY29t bWFuZCAibmV4dCIKKwkgICAgfQorCSAgICAtcmUgIi4qbW9uY29udHJvbC4qJGdkYl9wcm9tcHQg JCIgeworCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBtb25jb250cm9sIgogCQlzZXQgY29t bWFuZCAibmV4dCIKIAkgICAgfQogCSAgICAtcmUgIi4qU1RBUlRfUFJPR1JFU1MuKiRnZGJfcHJv bXB0ICQiIHsK >>From green@cygnus.com Sat Mar 04 17:58:00 2000 From: green@cygnus.com To: gdb-patches-gnats@sourceware.cygnus.com Subject: gdb-patch/33: java tests Date: Sat, 04 Mar 2000 17:58:00 -0000 Message-id: <20000305015754.25436.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q1/msg00030.html Content-length: 67600 >Number: 33 >Category: gdb-patch >Synopsis: java tests >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sat Mar 04 17:58:00 PST 2000 >Closed-Date: >Last-Modified: >Originator: Anthony Green >Release: uknown-1.0 >Organization: >Environment: >Description: This patch enables the existing java tests, and adds infrastructure for some real tests. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="java-tests" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="java-tests" RGF0ZTogU2F0LCA0IE1hciAyMDAwIDE3OjM2OjE4IC0wODAwClgtQXV0aGVudGljYXRpb24tV2Fy bmluZzogaG9zZXIuY3lnbnVzLmNvbTogZ3JlZW4gc2V0IHNlbmRlciB0byBncmVlbkBjeWdudXMu Y29tIHVzaW5nIC1mCkZyb206IEFudGhvbnkgR3JlZW4gPGdyZWVuQGN5Z251cy5jb20+ClRvOiBn ZGItcGF0Y2hlc0Bzb3VyY2V3YXJlLmN5Z251cy5jb20KU3ViamVjdDogUGF0Y2g6IGphdmEgdGVz dHMKWC1Pcmdhbml6YXRpb246IFJlZCBIYXQsIFN1bm55dmFsZSwgQ2FsaWZvcm5pYQpYLVVSTDog aHR0cDovL3d3dy5jeWdudXMuY29tL35ncmVlbgpSZXBseS10bzogZ3JlZW5AcmVkaGF0LmNvbQpD b250ZW50LVR5cGU6IHRleHQKQ29udGVudC1MZW5ndGg6IDQ5MDk5CgoKVGhpcyBwYXRjaCBlbmFi bGVzIHRoZSBleGlzdGluZyBqYXZhIHRlc3RzLCBhbmQgYWRkcyBpbmZyYXN0cnVjdHVyZQpmb3Ig c29tZSByZWFsIHRlc3RzLgoKQUcKCi0tIApBbnRob255IEdyZWVuICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWQgSGF0CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdW5ueXZhbGUsIENh bGlmb3JuaWEKCgoyMDAwLTAzLTA0ICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4K CgkqIGNvbmZpZ3VyZS5pbiAoY29uZmlnZGlycyk6IEFkZCBnZGIuamF2YQoJKiBnZGIuamF2YS9q bWlzYy5qYXZhOiBOZXcgZmlsZS4KCSogZ2RiLmphdmEvam1pc2MuZXhwOiBOZXcgZmlsZS4KCSog Z2RiLmphdmEvTWFrZWZpbGUuaW46IE5ldyBmaWxlLgoJKiBnZGIuamF2YS9jb25maWd1cmU6IFJl YnVpbHQuCgkqIGdkYi5qYXZhL2NvbmZpZ3VyZS5pbjogTmV3IGZpbGUuCgkqIGxpYi9qYXZhLmV4 cDogTmV3IGZpbGUuCgoKSW5kZXg6IGdkYi90ZXN0c3VpdGUvY29uZmlndXJlLmluCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZS5pbix2CnJl dHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAgLXIxLjIgY29uZmlndXJlLmluCioqKiBjb25m aWd1cmUuaW4JMjAwMC8wMi8yMyAwMDoyNTo0MwkxLjIKLS0tIGNvbmZpZ3VyZS5pbgkyMDAwLzAz LzA1IDAxOjE2OjEzCioqKioqKioqKioqKioqKiBjb25maWdkaXJzPSJnZGIuYXNtIFwKKioqIDE4 LDIzICoqKioKLS0tIDE4LDI0IC0tLS0KICAgICAgICAgICAgICBnZGIuYysrIFwKICAgICAgICAg ICAgICBnZGIuZGlzYXNtIFwKICAgICAgICAgICAgICBnZGIuY2hpbGwgXAorICAgICAgICAgICAg IGdkYi5qYXZhIFwKICAgICAgICAgICAgICBnZGIubWkgXAogICAgICAgICAgICAgIGdkYi50aHJl YWRzIFwKICAgICAgICAgICAgICBnZGIudHJhY2UiCkluZGV4OiBnZGIvdGVzdHN1aXRlL2NvbmZp Z3VyZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL3Rlc3RzdWl0ZS9jb25m aWd1cmUsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1wIC1yMS4yIGNvbmZpZ3VyZQoq KiogY29uZmlndXJlCTIwMDAvMDIvMjMgMDA6MjU6NDMJMS4yCi0tLSBjb25maWd1cmUJMjAwMC8w My8wNSAwMToxNjoxNAoqKioqKioqKioqKioqKiogY29uZmlnZGlycz0iZ2RiLmFzbSBcCioqKiA2 NTQsNjU5ICoqKioKLS0tIDY1NCw2NjAgLS0tLQogICAgICAgICAgICAgIGdkYi5jKysgXAogICAg ICAgICAgICAgIGdkYi5kaXNhc20gXAogICAgICAgICAgICAgIGdkYi5jaGlsbCBcCisgICAgICAg ICAgICAgZ2RiLmphdmEgXAogICAgICAgICAgICAgIGdkYi5taSBcCiAgICAgICAgICAgICAgZ2Ri LnRocmVhZHMgXAogICAgICAgICAgICAgIGdkYi50cmFjZSIKCgoKVGhlc2UgYXJlIHRoZSBuZXcg ZmlsZXMuLi4KCgojIS9iaW4vc2gKIyBUaGlzIGlzIGEgc2hlbGwgYXJjaGl2ZSAocHJvZHVjZWQg YnkgR05VIHNoYXJ1dGlscyA0LjIpLgojIFRvIGV4dHJhY3QgdGhlIGZpbGVzIGZyb20gdGhpcyBh cmNoaXZlLCBzYXZlIGl0IHRvIHNvbWUgRklMRSwgcmVtb3ZlCiMgZXZlcnl0aGluZyBiZWZvcmUg dGhlIGAhL2Jpbi9zaCcgbGluZSBhYm92ZSwgdGhlbiB0eXBlIGBzaCBGSUxFJy4KIwojIE1hZGUg b24gMjAwMC0wMy0wNCAwMjowMiBQU1QgYnkgPGdyZWVuQHJlZGhhdC5jb20+LgojIFNvdXJjZSBk aXJlY3Rvcnkgd2FzIGAvaG9tZS9ncmVlbi9qYXZhL25ldC9nZGIvc3JjJy4KIwojIEV4aXN0aW5n IGZpbGVzIHdpbGwgKm5vdCogYmUgb3ZlcndyaXR0ZW4gdW5sZXNzIGAtYycgaXMgc3BlY2lmaWVk LgojCiMgVGhpcyBzaGFyIGNvbnRhaW5zOgojIGxlbmd0aCBtb2RlICAgICAgIG5hbWUKIyAtLS0t LS0gLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IyAgMzExODYgLXJ3eHJ3eHIteCBnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2NvbmZpZ3VyZQojICAg IDYzNSAtcnctcnctci0tIGdkYi90ZXN0c3VpdGUvZ2RiLmphdmEvTWFrZWZpbGUuaW4KIyAgICAy MjIgLXJ3LXJ3LXItLSBnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2NvbmZpZ3VyZS5pbgojICAgMjg4 OSAtcnctcnctci0tIGdkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam1pc2MuZXhwCiMgICAgIDg1IC1y dy1ydy1yLS0gZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5qYXZhCiMgICAyNDUxIC1ydy1y dy1yLS0gZ2RiL3Rlc3RzdWl0ZS9saWIvamF2YS5leHAKIwpzYXZlX0lGUz0iJHtJRlN9IgpJRlM9 IiR7SUZTfToiCmdldHRleHRfZGlyPUZBSUxFRApsb2NhbGVfZGlyPUZBSUxFRApmaXJzdF9wYXJh bT0iJDEiCmZvciBkaXIgaW4gJFBBVEgKZG8KICBpZiB0ZXN0ICIkZ2V0dGV4dF9kaXIiID0gRkFJ TEVEICYmIHRlc3QgLWYgJGRpci9nZXR0ZXh0IFwKICAgICAmJiAoJGRpci9nZXR0ZXh0IC0tdmVy c2lvbiA+L2Rldi9udWxsIDI+JjEpCiAgdGhlbgogICAgc2V0IGAkZGlyL2dldHRleHQgLS12ZXJz aW9uIDI+JjFgCiAgICBpZiB0ZXN0ICIkMyIgPSBHTlUKICAgIHRoZW4KICAgICAgZ2V0dGV4dF9k aXI9JGRpcgogICAgZmkKICBmaQogIGlmIHRlc3QgIiRsb2NhbGVfZGlyIiA9IEZBSUxFRCAmJiB0 ZXN0IC1mICRkaXIvc2hhciBcCiAgICAgJiYgKCRkaXIvc2hhciAtLXByaW50LXRleHQtZG9tYWlu LWRpciA+L2Rldi9udWxsIDI+JjEpCiAgdGhlbgogICAgbG9jYWxlX2Rpcj1gJGRpci9zaGFyIC0t cHJpbnQtdGV4dC1kb21haW4tZGlyYAogIGZpCmRvbmUKSUZTPSIkc2F2ZV9JRlMiCmlmIHRlc3Qg IiRsb2NhbGVfZGlyIiA9IEZBSUxFRCB8fCB0ZXN0ICIkZ2V0dGV4dF9kaXIiID0gRkFJTEVECnRo ZW4KICBlY2hvPWVjaG8KZWxzZQogIFRFWFRET01BSU5ESVI9JGxvY2FsZV9kaXIKICBleHBvcnQg VEVYVERPTUFJTkRJUgogIFRFWFRET01BSU49c2hhcnV0aWxzCiAgZXhwb3J0IFRFWFRET01BSU4K ICBlY2hvPSIkZ2V0dGV4dF9kaXIvZ2V0dGV4dCAtcyIKZmkKdG91Y2ggLWFtIDEyMzEyMzU5OTkg JCQudG91Y2ggPi9kZXYvbnVsbCAyPiYxCmlmIHRlc3QgISAtZiAxMjMxMjM1OTk5ICYmIHRlc3Qg LWYgJCQudG91Y2g7IHRoZW4KICBzaGFyX3RvdWNoPXRvdWNoCmVsc2UKICBzaGFyX3RvdWNoPToK ICBlY2hvCiAgJGVjaG8gJ1dBUk5JTkc6IG5vdCByZXN0b3JpbmcgdGltZXN0YW1wcy4gIENvbnNp ZGVyIGdldHRpbmcgYW5kJwogICRlY2hvICJpbnN0YWxsaW5nIEdOVSBcYHRvdWNoJywgZGlzdHJp YnV0ZWQgaW4gR05VIEZpbGUgVXRpbGl0aWVzLi4uIgogIGVjaG8KZmkKcm0gLWYgMTIzMTIzNTk5 OSAkJC50b3VjaAojCmlmIG1rZGlyIF9zaDIyMjM5OyB0aGVuCiAgJGVjaG8gJ3ggLScgJ2NyZWF0 aW5nIGxvY2sgZGlyZWN0b3J5JwplbHNlCiAgJGVjaG8gJ2ZhaWxlZCB0byBjcmVhdGUgbG9jayBk aXJlY3RvcnknCiAgZXhpdCAxCmZpCiMgPT09PT09PT09PT09PSBnZGIvdGVzdHN1aXRlL2dkYi5q YXZhL2NvbmZpZ3VyZSA9PT09PT09PT09PT09PQppZiB0ZXN0ICEgLWQgJ2dkYic7IHRoZW4KICAk ZWNobyAneCAtJyAnY3JlYXRpbmcgZGlyZWN0b3J5JyAnZ2RiJwogIG1rZGlyICdnZGInCmZpCmlm IHRlc3QgISAtZCAnZ2RiL3Rlc3RzdWl0ZSc7IHRoZW4KICAkZWNobyAneCAtJyAnY3JlYXRpbmcg ZGlyZWN0b3J5JyAnZ2RiL3Rlc3RzdWl0ZScKICBta2RpciAnZ2RiL3Rlc3RzdWl0ZScKZmkKaWYg dGVzdCAhIC1kICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhJzsgdGhlbgogICRlY2hvICd4IC0nICdj cmVhdGluZyBkaXJlY3RvcnknICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhJwogIG1rZGlyICdnZGIv dGVzdHN1aXRlL2dkYi5qYXZhJwpmaQppZiB0ZXN0IC1mICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZh L2NvbmZpZ3VyZScgJiYgdGVzdCAiJGZpcnN0X3BhcmFtIiAhPSAtYzsgdGhlbgogICRlY2hvICd4 IC0nIFNLSVBQSU5HICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2NvbmZpZ3VyZScgJyhmaWxlIGFs cmVhZHkgZXhpc3RzKScKZWxzZQogICRlY2hvICd4IC0nIGV4dHJhY3RpbmcgJ2dkYi90ZXN0c3Vp dGUvZ2RiLmphdmEvY29uZmlndXJlJyAnKHRleHQpJwogIHNlZCAncy9eWC8vJyA8PCAnU0hBUl9F T0YnID4gJ2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvY29uZmlndXJlJyAmJgojISAvYmluL3NoClgK IyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUg TWFrZWZpbGVzLgojIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IHVzaW5nIGF1dG9jb25mIHZlcnNp b24gMi4xMyAKIyBDb3B5cmlnaHQgKEMpIDE5OTIsIDkzLCA5NCwgOTUsIDk2IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgojCiMgVGhpcyBjb25maWd1cmUgc2NyaXB0IGlzIGZyZWUgc29m dHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KIyBnaXZlcyB1bmxpbWl0ZWQgcGVy bWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuClgKIyBEZWZhdWx0czoK YWNfaGVscD0KYWNfZGVmYXVsdF9wcmVmaXg9L3Vzci9sb2NhbAojIEFueSBhZGRpdGlvbnMgZnJv bSBjb25maWd1cmUuaW46ClgKIyBJbml0aWFsaXplIHNvbWUgdmFyaWFibGVzIHNldCBieSBvcHRp b25zLgojIFRoZSB2YXJpYWJsZXMgaGF2ZSB0aGUgc2FtZSBuYW1lcyBhcyB0aGUgb3B0aW9ucywg d2l0aAojIGRhc2hlcyBjaGFuZ2VkIHRvIHVuZGVybGluZXMuCmJ1aWxkPU5PTkUKY2FjaGVfZmls ZT0uL2NvbmZpZy5jYWNoZQpleGVjX3ByZWZpeD1OT05FCmhvc3Q9Tk9ORQpub19jcmVhdGU9Cm5v bm9wdD1OT05FCm5vX3JlY3Vyc2lvbj0KcHJlZml4PU5PTkUKcHJvZ3JhbV9wcmVmaXg9Tk9ORQpw cm9ncmFtX3N1ZmZpeD1OT05FCnByb2dyYW1fdHJhbnNmb3JtX25hbWU9cyx4LHgsCnNpbGVudD0K c2l0ZT0Kc2l0ZWZpbGU9CnNyY2Rpcj0KdGFyZ2V0PU5PTkUKdmVyYm9zZT0KeF9pbmNsdWRlcz1O T05FCnhfbGlicmFyaWVzPU5PTkUKYmluZGlyPScke2V4ZWNfcHJlZml4fS9iaW4nCnNiaW5kaXI9 JyR7ZXhlY19wcmVmaXh9L3NiaW4nCmxpYmV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMn CmRhdGFkaXI9JyR7cHJlZml4fS9zaGFyZScKc3lzY29uZmRpcj0nJHtwcmVmaXh9L2V0YycKc2hh cmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nCmxvY2Fsc3RhdGVkaXI9JyR7cHJlZml4fS92YXIn CmxpYmRpcj0nJHtleGVjX3ByZWZpeH0vbGliJwppbmNsdWRlZGlyPScke3ByZWZpeH0vaW5jbHVk ZScKb2xkaW5jbHVkZWRpcj0nL3Vzci9pbmNsdWRlJwppbmZvZGlyPScke3ByZWZpeH0vaW5mbycK bWFuZGlyPScke3ByZWZpeH0vbWFuJwpYCiMgSW5pdGlhbGl6ZSBzb21lIG90aGVyIHZhcmlhYmxl cy4Kc3ViZGlycz0KTUZMQUdTPSBNQUtFRkxBR1M9ClNIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4v c2h9CiMgTWF4aW11bSBudW1iZXIgb2YgbGluZXMgdG8gcHV0IGluIGEgc2hlbGwgaGVyZSBkb2N1 bWVudC4KYWNfbWF4X2hlcmVfbGluZXM9MTIKWAphY19wcmV2PQpmb3IgYWNfb3B0aW9uCmRvClgK WCAgIyBJZiB0aGUgcHJldmlvdXMgb3B0aW9uIG5lZWRzIGFuIGFyZ3VtZW50LCBhc3NpZ24gaXQu ClggIGlmIHRlc3QgLW4gIiRhY19wcmV2IjsgdGhlbgpYICAgIGV2YWwgIiRhY19wcmV2PVwkYWNf b3B0aW9uIgpYICAgIGFjX3ByZXY9ClggICAgY29udGludWUKWCAgZmkKWApYICBjYXNlICIkYWNf b3B0aW9uIiBpbgpYICAtKj0qKSBhY19vcHRhcmc9YGVjaG8gIiRhY19vcHRpb24iIHwgc2VkICdz L1stX2EtekEtWjAtOV0qPS8vJ2AgOzsKWCAgKikgYWNfb3B0YXJnPSA7OwpYICBlc2FjClgKWCAg IyBBY2NlcHQgdGhlIGltcG9ydGFudCBDeWdudXMgY29uZmlndXJlIG9wdGlvbnMsIHNvIHdlIGNh biBkaWFnbm9zZSB0eXBvcy4KWApYICBjYXNlICIkYWNfb3B0aW9uIiBpbgpYClggIC1iaW5kaXIg fCAtLWJpbmRpciB8IC0tYmluZGkgfCAtLWJpbmQgfCAtLWJpbiB8IC0tYmkpClggICAgYWNfcHJl dj1iaW5kaXIgOzsKWCAgLWJpbmRpcj0qIHwgLS1iaW5kaXI9KiB8IC0tYmluZGk9KiB8IC0tYmlu ZD0qIHwgLS1iaW49KiB8IC0tYmk9KikKWCAgICBiaW5kaXI9IiRhY19vcHRhcmciIDs7ClgKWCAg LWJ1aWxkIHwgLS1idWlsZCB8IC0tYnVpbCB8IC0tYnVpIHwgLS1idSkKWCAgICBhY19wcmV2PWJ1 aWxkIDs7ClggIC1idWlsZD0qIHwgLS1idWlsZD0qIHwgLS1idWlsPSogfCAtLWJ1aT0qIHwgLS1i dT0qKQpYICAgIGJ1aWxkPSIkYWNfb3B0YXJnIiA7OwpYClggIC1jYWNoZS1maWxlIHwgLS1jYWNo ZS1maWxlIHwgLS1jYWNoZS1maWwgfCAtLWNhY2hlLWZpIFwKWCAgfCAtLWNhY2hlLWYgfCAtLWNh Y2hlLSB8IC0tY2FjaGUgfCAtLWNhY2ggfCAtLWNhYyB8IC0tY2EgfCAtLWMpClggICAgYWNfcHJl dj1jYWNoZV9maWxlIDs7ClggIC1jYWNoZS1maWxlPSogfCAtLWNhY2hlLWZpbGU9KiB8IC0tY2Fj aGUtZmlsPSogfCAtLWNhY2hlLWZpPSogXApYICB8IC0tY2FjaGUtZj0qIHwgLS1jYWNoZS09KiB8 IC0tY2FjaGU9KiB8IC0tY2FjaD0qIHwgLS1jYWM9KiB8IC0tY2E9KiB8IC0tYz0qKQpYICAgIGNh Y2hlX2ZpbGU9IiRhY19vcHRhcmciIDs7ClgKWCAgLWRhdGFkaXIgfCAtLWRhdGFkaXIgfCAtLWRh dGFkaSB8IC0tZGF0YWQgfCAtLWRhdGEgfCAtLWRhdCB8IC0tZGEpClggICAgYWNfcHJldj1kYXRh ZGlyIDs7ClggIC1kYXRhZGlyPSogfCAtLWRhdGFkaXI9KiB8IC0tZGF0YWRpPSogfCAtLWRhdGFk PSogfCAtLWRhdGE9KiB8IC0tZGF0PSogXApYICB8IC0tZGE9KikKWCAgICBkYXRhZGlyPSIkYWNf b3B0YXJnIiA7OwpYClggIC1kaXNhYmxlLSogfCAtLWRpc2FibGUtKikKWCAgICBhY19mZWF0dXJl PWBlY2hvICRhY19vcHRpb258c2VkIC1lICdzLy0qZGlzYWJsZS0vLydgClggICAgIyBSZWplY3Qg bmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgpYICAgIGlmIHRl c3QgLW4gImBlY2hvICRhY19mZWF0dXJlfCBzZWQgJ3MvWy1hLXpBLVowLTlfXS8vZydgIjsgdGhl bgpYICAgICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiAkYWNfZmVhdHVyZTogaW52YWxpZCBm ZWF0dXJlIG5hbWUiIDE+JjI7IGV4aXQgMTsgfQpYICAgIGZpClggICAgYWNfZmVhdHVyZT1gZWNo byAkYWNfZmVhdHVyZXwgc2VkICdzLy0vXy9nJ2AKWCAgICBldmFsICJlbmFibGVfJHthY19mZWF0 dXJlfT1ubyIgOzsKWApYICAtZW5hYmxlLSogfCAtLWVuYWJsZS0qKQpYICAgIGFjX2ZlYXR1cmU9 YGVjaG8gJGFjX29wdGlvbnxzZWQgLWUgJ3MvLSplbmFibGUtLy8nIC1lICdzLz0uKi8vJ2AKWCAg ICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMu ClggICAgaWYgdGVzdCAtbiAiYGVjaG8gJGFjX2ZlYXR1cmV8IHNlZCAncy9bLV9hLXpBLVowLTld Ly9nJ2AiOyB0aGVuClggICAgICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6ICRhY19mZWF0dXJl OiBpbnZhbGlkIGZlYXR1cmUgbmFtZSIgMT4mMjsgZXhpdCAxOyB9ClggICAgZmkKWCAgICBhY19m ZWF0dXJlPWBlY2hvICRhY19mZWF0dXJlfCBzZWQgJ3MvLS9fL2cnYApYICAgIGNhc2UgIiRhY19v cHRpb24iIGluClggICAgICAqPSopIDs7ClggICAgICAqKSBhY19vcHRhcmc9eWVzIDs7ClggICAg ZXNhYwpYICAgIGV2YWwgImVuYWJsZV8ke2FjX2ZlYXR1cmV9PSckYWNfb3B0YXJnJyIgOzsKWApY ICAtZXhlYy1wcmVmaXggfCAtLWV4ZWNfcHJlZml4IHwgLS1leGVjLXByZWZpeCB8IC0tZXhlYy1w cmVmaSBcClggIHwgLS1leGVjLXByZWYgfCAtLWV4ZWMtcHJlIHwgLS1leGVjLXByIHwgLS1leGVj LXAgfCAtLWV4ZWMtIFwKWCAgfCAtLWV4ZWMgfCAtLWV4ZSB8IC0tZXgpClggICAgYWNfcHJldj1l eGVjX3ByZWZpeCA7OwpYICAtZXhlYy1wcmVmaXg9KiB8IC0tZXhlY19wcmVmaXg9KiB8IC0tZXhl Yy1wcmVmaXg9KiB8IC0tZXhlYy1wcmVmaT0qIFwKWCAgfCAtLWV4ZWMtcHJlZj0qIHwgLS1leGVj LXByZT0qIHwgLS1leGVjLXByPSogfCAtLWV4ZWMtcD0qIHwgLS1leGVjLT0qIFwKWCAgfCAtLWV4 ZWM9KiB8IC0tZXhlPSogfCAtLWV4PSopClggICAgZXhlY19wcmVmaXg9IiRhY19vcHRhcmciIDs7 ClgKWCAgLWdhcyB8IC0tZ2FzIHwgLS1nYSB8IC0tZykKWCAgICAjIE9ic29sZXRlOyB1c2UgLS13 aXRoLWdhcy4KWCAgICB3aXRoX2dhcz15ZXMgOzsKWApYICAtaGVscCB8IC0taGVscCB8IC0taGVs IHwgLS1oZSkKWCAgICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRv IG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KWCAgICAjIFRoaXMgbWVzc2FnZSBpcyB0b28g bG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guClggICAgY2F0IDw8IEVPRgpV c2FnZTogY29uZmlndXJlIFtvcHRpb25zXSBbaG9zdF0KT3B0aW9uczogW2RlZmF1bHRzIGluIGJy YWNrZXRzIGFmdGVyIGRlc2NyaXB0aW9uc10KQ29uZmlndXJhdGlvbjoKWCAgLS1jYWNoZS1maWxl PUZJTEUgICAgICAgY2FjaGUgdGVzdCByZXN1bHRzIGluIEZJTEUKWCAgLS1oZWxwICAgICAgICAg ICAgICAgICAgcHJpbnQgdGhpcyBtZXNzYWdlClggIC0tbm8tY3JlYXRlICAgICAgICAgICAgIGRv IG5vdCBjcmVhdGUgb3V0cHV0IGZpbGVzClggIC0tcXVpZXQsIC0tc2lsZW50ICAgICAgIGRvIG5v dCBwcmludCBcYGNoZWNraW5nLi4uJyBtZXNzYWdlcwpYICAtLXNpdGUtZmlsZT1GSUxFICAgICAg ICB1c2UgRklMRSBhcyB0aGUgc2l0ZSBmaWxlClggIC0tdmVyc2lvbiAgICAgICAgICAgICAgIHBy aW50IHRoZSB2ZXJzaW9uIG9mIGF1dG9jb25mIHRoYXQgY3JlYXRlZCBjb25maWd1cmUKRGlyZWN0 b3J5IGFuZCBmaWxlIG5hbWVzOgpYICAtLXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0YWxsIGFy Y2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBpbiBQUkVGSVgKWCAgICAgICAgICAgICAgICAg ICAgICAgICAgWyRhY19kZWZhdWx0X3ByZWZpeF0KWCAgLS1leGVjLXByZWZpeD1FUFJFRklYICAg aW5zdGFsbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGZpbGVzIGluIEVQUkVGSVgKWCAgICAgICAg ICAgICAgICAgICAgICAgICAgW3NhbWUgYXMgcHJlZml4XQpYICAtLWJpbmRpcj1ESVIgICAgICAg ICAgICB1c2VyIGV4ZWN1dGFibGVzIGluIERJUiBbRVBSRUZJWC9iaW5dClggIC0tc2JpbmRpcj1E SVIgICAgICAgICAgIHN5c3RlbSBhZG1pbiBleGVjdXRhYmxlcyBpbiBESVIgW0VQUkVGSVgvc2Jp bl0KWCAgLS1saWJleGVjZGlyPURJUiAgICAgICAgcHJvZ3JhbSBleGVjdXRhYmxlcyBpbiBESVIg W0VQUkVGSVgvbGliZXhlY10KWCAgLS1kYXRhZGlyPURJUiAgICAgICAgICAgcmVhZC1vbmx5IGFy Y2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIGluIERJUgpYICAgICAgICAgICAgICAgICAgICAg ICAgICBbUFJFRklYL3NoYXJlXQpYICAtLXN5c2NvbmZkaXI9RElSICAgICAgICByZWFkLW9ubHkg c2luZ2xlLW1hY2hpbmUgZGF0YSBpbiBESVIgW1BSRUZJWC9ldGNdClggIC0tc2hhcmVkc3RhdGVk aXI9RElSICAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgaW4gRElS ClggICAgICAgICAgICAgICAgICAgICAgICAgIFtQUkVGSVgvY29tXQpYICAtLWxvY2Fsc3RhdGVk aXI9RElSICAgICBtb2RpZmlhYmxlIHNpbmdsZS1tYWNoaW5lIGRhdGEgaW4gRElSIFtQUkVGSVgv dmFyXQpYICAtLWxpYmRpcj1ESVIgICAgICAgICAgICBvYmplY3QgY29kZSBsaWJyYXJpZXMgaW4g RElSIFtFUFJFRklYL2xpYl0KWCAgLS1pbmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFkZXIgZmls ZXMgaW4gRElSIFtQUkVGSVgvaW5jbHVkZV0KWCAgLS1vbGRpbmNsdWRlZGlyPURJUiAgICAgQyBo ZWFkZXIgZmlsZXMgZm9yIG5vbi1nY2MgaW4gRElSIFsvdXNyL2luY2x1ZGVdClggIC0taW5mb2Rp cj1ESVIgICAgICAgICAgIGluZm8gZG9jdW1lbnRhdGlvbiBpbiBESVIgW1BSRUZJWC9pbmZvXQpY ICAtLW1hbmRpcj1ESVIgICAgICAgICAgICBtYW4gZG9jdW1lbnRhdGlvbiBpbiBESVIgW1BSRUZJ WC9tYW5dClggIC0tc3JjZGlyPURJUiAgICAgICAgICAgIGZpbmQgdGhlIHNvdXJjZXMgaW4gRElS IFtjb25maWd1cmUgZGlyIG9yIC4uXQpYICAtLXByb2dyYW0tcHJlZml4PVBSRUZJWCBwcmVwZW5k IFBSRUZJWCB0byBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcwpYICAtLXByb2dyYW0tc3VmZml4PVNV RkZJWCBhcHBlbmQgU1VGRklYIHRvIGluc3RhbGxlZCBwcm9ncmFtIG5hbWVzClggIC0tcHJvZ3Jh bS10cmFuc2Zvcm0tbmFtZT1QUk9HUkFNClggICAgICAgICAgICAgICAgICAgICAgICAgIHJ1biBz ZWQgUFJPR1JBTSBvbiBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcwpFT0YKWCAgICBjYXQgPDwgRU9G Ckhvc3QgdHlwZToKWCAgLS1idWlsZD1CVUlMRCAgICAgICAgICAgY29uZmlndXJlIGZvciBidWls ZGluZyBvbiBCVUlMRCBbQlVJTEQ9SE9TVF0KWCAgLS1ob3N0PUhPU1QgICAgICAgICAgICAgY29u ZmlndXJlIGZvciBIT1NUIFtndWVzc2VkXQpYICAtLXRhcmdldD1UQVJHRVQgICAgICAgICBjb25m aWd1cmUgZm9yIFRBUkdFVCBbVEFSR0VUPUhPU1RdCkZlYXR1cmVzIGFuZCBwYWNrYWdlczoKWCAg LS1kaXNhYmxlLUZFQVRVUkUgICAgICAgZG8gbm90IGluY2x1ZGUgRkVBVFVSRSAoc2FtZSBhcyAt LWVuYWJsZS1GRUFUVVJFPW5vKQpYICAtLWVuYWJsZS1GRUFUVVJFWz1BUkddICBpbmNsdWRlIEZF QVRVUkUgW0FSRz15ZXNdClggIC0td2l0aC1QQUNLQUdFWz1BUkddICAgIHVzZSBQQUNLQUdFIFtB Ukc9eWVzXQpYICAtLXdpdGhvdXQtUEFDS0FHRSAgICAgICBkbyBub3QgdXNlIFBBQ0tBR0UgKHNh bWUgYXMgLS13aXRoLVBBQ0tBR0U9bm8pClggIC0teC1pbmNsdWRlcz1ESVIgICAgICAgIFggaW5j bHVkZSBmaWxlcyBhcmUgaW4gRElSClggIC0teC1saWJyYXJpZXM9RElSICAgICAgIFggbGlicmFy eSBmaWxlcyBhcmUgaW4gRElSCkVPRgpYICAgIGlmIHRlc3QgLW4gIiRhY19oZWxwIjsgdGhlbgpY ICAgICAgZWNobyAiLS1lbmFibGUgYW5kIC0td2l0aCBvcHRpb25zIHJlY29nbml6ZWQ6JGFjX2hl bHAiClggICAgZmkKWCAgICBleGl0IDAgOzsKWApYICAtaG9zdCB8IC0taG9zdCB8IC0taG9zIHwg LS1obykKWCAgICBhY19wcmV2PWhvc3QgOzsKWCAgLWhvc3Q9KiB8IC0taG9zdD0qIHwgLS1ob3M9 KiB8IC0taG89KikKWCAgICBob3N0PSIkYWNfb3B0YXJnIiA7OwpYClggIC1pbmNsdWRlZGlyIHwg LS1pbmNsdWRlZGlyIHwgLS1pbmNsdWRlZGkgfCAtLWluY2x1ZGVkIHwgLS1pbmNsdWRlIFwKWCAg fCAtLWluY2x1ZCB8IC0taW5jbHUgfCAtLWluY2wgfCAtLWluYykKWCAgICBhY19wcmV2PWluY2x1 ZGVkaXIgOzsKWCAgLWluY2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRpcj0qIHwgLS1pbmNsdWRlZGk9 KiB8IC0taW5jbHVkZWQ9KiB8IC0taW5jbHVkZT0qIFwKWCAgfCAtLWluY2x1ZD0qIHwgLS1pbmNs dT0qIHwgLS1pbmNsPSogfCAtLWluYz0qKQpYICAgIGluY2x1ZGVkaXI9IiRhY19vcHRhcmciIDs7 ClgKWCAgLWluZm9kaXIgfCAtLWluZm9kaXIgfCAtLWluZm9kaSB8IC0taW5mb2QgfCAtLWluZm8g fCAtLWluZikKWCAgICBhY19wcmV2PWluZm9kaXIgOzsKWCAgLWluZm9kaXI9KiB8IC0taW5mb2Rp cj0qIHwgLS1pbmZvZGk9KiB8IC0taW5mb2Q9KiB8IC0taW5mbz0qIHwgLS1pbmY9KikKWCAgICBp bmZvZGlyPSIkYWNfb3B0YXJnIiA7OwpYClggIC1saWJkaXIgfCAtLWxpYmRpciB8IC0tbGliZGkg fCAtLWxpYmQpClggICAgYWNfcHJldj1saWJkaXIgOzsKWCAgLWxpYmRpcj0qIHwgLS1saWJkaXI9 KiB8IC0tbGliZGk9KiB8IC0tbGliZD0qKQpYICAgIGxpYmRpcj0iJGFjX29wdGFyZyIgOzsKWApY ICAtbGliZXhlY2RpciB8IC0tbGliZXhlY2RpciB8IC0tbGliZXhlY2RpIHwgLS1saWJleGVjZCB8 IC0tbGliZXhlYyBcClggIHwgLS1saWJleGUgfCAtLWxpYmV4IHwgLS1saWJlKQpYICAgIGFjX3By ZXY9bGliZXhlY2RpciA7OwpYICAtbGliZXhlY2Rpcj0qIHwgLS1saWJleGVjZGlyPSogfCAtLWxp YmV4ZWNkaT0qIHwgLS1saWJleGVjZD0qIHwgLS1saWJleGVjPSogXApYICB8IC0tbGliZXhlPSog fCAtLWxpYmV4PSogfCAtLWxpYmU9KikKWCAgICBsaWJleGVjZGlyPSIkYWNfb3B0YXJnIiA7OwpY ClggIC1sb2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGkgfCAt LWxvY2Fsc3RhdGVkIFwKWCAgfCAtLWxvY2Fsc3RhdGUgfCAtLWxvY2Fsc3RhdCB8IC0tbG9jYWxz dGEgfCAtLWxvY2Fsc3QgXApYICB8IC0tbG9jYWxzIHwgLS1sb2NhbCB8IC0tbG9jYSB8IC0tbG9j IHwgLS1sbykKWCAgICBhY19wcmV2PWxvY2Fsc3RhdGVkaXIgOzsKWCAgLWxvY2Fsc3RhdGVkaXI9 KiB8IC0tbG9jYWxzdGF0ZWRpcj0qIHwgLS1sb2NhbHN0YXRlZGk9KiB8IC0tbG9jYWxzdGF0ZWQ9 KiBcClggIHwgLS1sb2NhbHN0YXRlPSogfCAtLWxvY2Fsc3RhdD0qIHwgLS1sb2NhbHN0YT0qIHwg LS1sb2NhbHN0PSogXApYICB8IC0tbG9jYWxzPSogfCAtLWxvY2FsPSogfCAtLWxvY2E9KiB8IC0t bG9jPSogfCAtLWxvPSopClggICAgbG9jYWxzdGF0ZWRpcj0iJGFjX29wdGFyZyIgOzsKWApYICAt bWFuZGlyIHwgLS1tYW5kaXIgfCAtLW1hbmRpIHwgLS1tYW5kIHwgLS1tYW4gfCAtLW1hIHwgLS1t KQpYICAgIGFjX3ByZXY9bWFuZGlyIDs7ClggIC1tYW5kaXI9KiB8IC0tbWFuZGlyPSogfCAtLW1h bmRpPSogfCAtLW1hbmQ9KiB8IC0tbWFuPSogfCAtLW1hPSogfCAtLW09KikKWCAgICBtYW5kaXI9 IiRhY19vcHRhcmciIDs7ClgKWCAgLW5mcCB8IC0tbmZwIHwgLS1uZikKWCAgICAjIE9ic29sZXRl OyB1c2UgLS13aXRob3V0LWZwLgpYICAgIHdpdGhfZnA9bm8gOzsKWApYICAtbm8tY3JlYXRlIHwg LS1uby1jcmVhdGUgfCAtLW5vLWNyZWF0IHwgLS1uby1jcmVhIHwgLS1uby1jcmUgXApYICB8IC0t bm8tY3IgfCAtLW5vLWMpClggICAgbm9fY3JlYXRlPXllcyA7OwpYClggIC1uby1yZWN1cnNpb24g fCAtLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW8gfCAtLW5vLXJlY3Vyc2kgXApYICB8IC0t bm8tcmVjdXJzIHwgLS1uby1yZWN1ciB8IC0tbm8tcmVjdSB8IC0tbm8tcmVjIHwgLS1uby1yZSB8 IC0tbm8tcikKWCAgICBub19yZWN1cnNpb249eWVzIDs7ClgKWCAgLW9sZGluY2x1ZGVkaXIgfCAt LW9sZGluY2x1ZGVkaXIgfCAtLW9sZGluY2x1ZGVkaSB8IC0tb2xkaW5jbHVkZWQgXApYICB8IC0t b2xkaW5jbHVkZSB8IC0tb2xkaW5jbHVkIHwgLS1vbGRpbmNsdSB8IC0tb2xkaW5jbCB8IC0tb2xk aW5jIFwKWCAgfCAtLW9sZGluIHwgLS1vbGRpIHwgLS1vbGQgfCAtLW9sIHwgLS1vKQpYICAgIGFj X3ByZXY9b2xkaW5jbHVkZWRpciA7OwpYICAtb2xkaW5jbHVkZWRpcj0qIHwgLS1vbGRpbmNsdWRl ZGlyPSogfCAtLW9sZGluY2x1ZGVkaT0qIHwgLS1vbGRpbmNsdWRlZD0qIFwKWCAgfCAtLW9sZGlu Y2x1ZGU9KiB8IC0tb2xkaW5jbHVkPSogfCAtLW9sZGluY2x1PSogfCAtLW9sZGluY2w9KiB8IC0t b2xkaW5jPSogXApYICB8IC0tb2xkaW49KiB8IC0tb2xkaT0qIHwgLS1vbGQ9KiB8IC0tb2w9KiB8 IC0tbz0qKQpYICAgIG9sZGluY2x1ZGVkaXI9IiRhY19vcHRhcmciIDs7ClgKWCAgLXByZWZpeCB8 IC0tcHJlZml4IHwgLS1wcmVmaSB8IC0tcHJlZiB8IC0tcHJlIHwgLS1wciB8IC0tcCkKWCAgICBh Y19wcmV2PXByZWZpeCA7OwpYICAtcHJlZml4PSogfCAtLXByZWZpeD0qIHwgLS1wcmVmaT0qIHwg LS1wcmVmPSogfCAtLXByZT0qIHwgLS1wcj0qIHwgLS1wPSopClggICAgcHJlZml4PSIkYWNfb3B0 YXJnIiA7OwpYClggIC1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaXggfCAtLXByb2dy YW0tcHJlZmkgfCAtLXByb2dyYW0tcHJlZiBcClggIHwgLS1wcm9ncmFtLXByZSB8IC0tcHJvZ3Jh bS1wciB8IC0tcHJvZ3JhbS1wKQpYICAgIGFjX3ByZXY9cHJvZ3JhbV9wcmVmaXggOzsKWCAgLXBy b2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZmk9KiBc ClggIHwgLS1wcm9ncmFtLXByZWY9KiB8IC0tcHJvZ3JhbS1wcmU9KiB8IC0tcHJvZ3JhbS1wcj0q IHwgLS1wcm9ncmFtLXA9KikKWCAgICBwcm9ncmFtX3ByZWZpeD0iJGFjX29wdGFyZyIgOzsKWApY ICAtcHJvZ3JhbS1zdWZmaXggfCAtLXByb2dyYW0tc3VmZml4IHwgLS1wcm9ncmFtLXN1ZmZpIHwg LS1wcm9ncmFtLXN1ZmYgXApYICB8IC0tcHJvZ3JhbS1zdWYgfCAtLXByb2dyYW0tc3UgfCAtLXBy b2dyYW0tcykKWCAgICBhY19wcmV2PXByb2dyYW1fc3VmZml4IDs7ClggIC1wcm9ncmFtLXN1ZmZp eD0qIHwgLS1wcm9ncmFtLXN1ZmZpeD0qIHwgLS1wcm9ncmFtLXN1ZmZpPSogXApYICB8IC0tcHJv Z3JhbS1zdWZmPSogfCAtLXByb2dyYW0tc3VmPSogfCAtLXByb2dyYW0tc3U9KiB8IC0tcHJvZ3Jh bS1zPSopClggICAgcHJvZ3JhbV9zdWZmaXg9IiRhY19vcHRhcmciIDs7ClgKWCAgLXByb2dyYW0t dHJhbnNmb3JtLW5hbWUgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWUgXApYICB8IC0tcHJvZ3Jh bS10cmFuc2Zvcm0tbmFtIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYSBcClggIHwgLS1wcm9ncmFt LXRyYW5zZm9ybS1uIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS0gXApYICB8IC0tcHJvZ3JhbS10cmFu c2Zvcm0gfCAtLXByb2dyYW0tdHJhbnNmb3IgXApYICB8IC0tcHJvZ3JhbS10cmFuc2ZvIHwgLS1w cm9ncmFtLXRyYW5zZiBcClggIHwgLS1wcm9ncmFtLXRyYW5zIHwgLS1wcm9ncmFtLXRyYW4gXApY ICB8IC0tcHJvZ3ItdHJhIHwgLS1wcm9ncmFtLXRyIHwgLS1wcm9ncmFtLXQpClggICAgYWNfcHJl dj1wcm9ncmFtX3RyYW5zZm9ybV9uYW1lIDs7ClggIC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPSog fCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9KiBcClggIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1u YW09KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmE9KiBcClggIHwgLS1wcm9ncmFtLXRyYW5zZm9y bS1uPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLT0qIFwKWCAgfCAtLXByb2dyYW0tdHJhbnNmb3Jt PSogfCAtLXByb2dyYW0tdHJhbnNmb3I9KiBcClggIHwgLS1wcm9ncmFtLXRyYW5zZm89KiB8IC0t cHJvZ3JhbS10cmFuc2Y9KiBcClggIHwgLS1wcm9ncmFtLXRyYW5zPSogfCAtLXByb2dyYW0tdHJh bj0qIFwKWCAgfCAtLXByb2dyLXRyYT0qIHwgLS1wcm9ncmFtLXRyPSogfCAtLXByb2dyYW0tdD0q KQpYICAgIHByb2dyYW1fdHJhbnNmb3JtX25hbWU9IiRhY19vcHRhcmciIDs7ClgKWCAgLXEgfCAt cXVpZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwKWCAgfCAtc2ls ZW50IHwgLS1zaWxlbnQgfCAtLXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwpClggICAgc2lsZW50PXll cyA7OwpYClggIC1zYmluZGlyIHwgLS1zYmluZGlyIHwgLS1zYmluZGkgfCAtLXNiaW5kIHwgLS1z YmluIHwgLS1zYmkgfCAtLXNiKQpYICAgIGFjX3ByZXY9c2JpbmRpciA7OwpYICAtc2JpbmRpcj0q IHwgLS1zYmluZGlyPSogfCAtLXNiaW5kaT0qIHwgLS1zYmluZD0qIHwgLS1zYmluPSogXApYICB8 IC0tc2JpPSogfCAtLXNiPSopClggICAgc2JpbmRpcj0iJGFjX29wdGFyZyIgOzsKWApYICAtc2hh cmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0YXRlZGlyIHwgLS1zaGFyZWRzdGF0ZWRpIFwKWCAgfCAt LXNoYXJlZHN0YXRlZCB8IC0tc2hhcmVkc3RhdGUgfCAtLXNoYXJlZHN0YXQgfCAtLXNoYXJlZHN0 YSBcClggIHwgLS1zaGFyZWRzdCB8IC0tc2hhcmVkcyB8IC0tc2hhcmVkIHwgLS1zaGFyZSB8IC0t c2hhciBcClggIHwgLS1zaGEgfCAtLXNoKQpYICAgIGFjX3ByZXY9c2hhcmVkc3RhdGVkaXIgOzsK WCAgLXNoYXJlZHN0YXRlZGlyPSogfCAtLXNoYXJlZHN0YXRlZGlyPSogfCAtLXNoYXJlZHN0YXRl ZGk9KiBcClggIHwgLS1zaGFyZWRzdGF0ZWQ9KiB8IC0tc2hhcmVkc3RhdGU9KiB8IC0tc2hhcmVk c3RhdD0qIHwgLS1zaGFyZWRzdGE9KiBcClggIHwgLS1zaGFyZWRzdD0qIHwgLS1zaGFyZWRzPSog fCAtLXNoYXJlZD0qIHwgLS1zaGFyZT0qIHwgLS1zaGFyPSogXApYICB8IC0tc2hhPSogfCAtLXNo PSopClggICAgc2hhcmVkc3RhdGVkaXI9IiRhY19vcHRhcmciIDs7ClgKWCAgLXNpdGUgfCAtLXNp dGUgfCAtLXNpdCkKWCAgICBhY19wcmV2PXNpdGUgOzsKWCAgLXNpdGU9KiB8IC0tc2l0ZT0qIHwg LS1zaXQ9KikKWCAgICBzaXRlPSIkYWNfb3B0YXJnIiA7OwpYClggIC1zaXRlLWZpbGUgfCAtLXNp dGUtZmlsZSB8IC0tc2l0ZS1maWwgfCAtLXNpdGUtZmkgfCAtLXNpdGUtZikKWCAgICBhY19wcmV2 PXNpdGVmaWxlIDs7ClggIC1zaXRlLWZpbGU9KiB8IC0tc2l0ZS1maWxlPSogfCAtLXNpdGUtZmls PSogfCAtLXNpdGUtZmk9KiB8IC0tc2l0ZS1mPSopClggICAgc2l0ZWZpbGU9IiRhY19vcHRhcmci IDs7ClgKWCAgLXNyY2RpciB8IC0tc3JjZGlyIHwgLS1zcmNkaSB8IC0tc3JjZCB8IC0tc3JjIHwg LS1zcikKWCAgICBhY19wcmV2PXNyY2RpciA7OwpYICAtc3JjZGlyPSogfCAtLXNyY2Rpcj0qIHwg LS1zcmNkaT0qIHwgLS1zcmNkPSogfCAtLXNyYz0qIHwgLS1zcj0qKQpYICAgIHNyY2Rpcj0iJGFj X29wdGFyZyIgOzsKWApYICAtc3lzY29uZmRpciB8IC0tc3lzY29uZmRpciB8IC0tc3lzY29uZmRp IHwgLS1zeXNjb25mZCB8IC0tc3lzY29uZiBcClggIHwgLS1zeXNjb24gfCAtLXN5c2NvIHwgLS1z eXNjIHwgLS1zeXMgfCAtLXN5KQpYICAgIGFjX3ByZXY9c3lzY29uZmRpciA7OwpYICAtc3lzY29u ZmRpcj0qIHwgLS1zeXNjb25mZGlyPSogfCAtLXN5c2NvbmZkaT0qIHwgLS1zeXNjb25mZD0qIHwg LS1zeXNjb25mPSogXApYICB8IC0tc3lzY29uPSogfCAtLXN5c2NvPSogfCAtLXN5c2M9KiB8IC0t c3lzPSogfCAtLXN5PSopClggICAgc3lzY29uZmRpcj0iJGFjX29wdGFyZyIgOzsKWApYICAtdGFy Z2V0IHwgLS10YXJnZXQgfCAtLXRhcmdlIHwgLS10YXJnIHwgLS10YXIgfCAtLXRhIHwgLS10KQpY ICAgIGFjX3ByZXY9dGFyZ2V0IDs7ClggIC10YXJnZXQ9KiB8IC0tdGFyZ2V0PSogfCAtLXRhcmdl PSogfCAtLXRhcmc9KiB8IC0tdGFyPSogfCAtLXRhPSogfCAtLXQ9KikKWCAgICB0YXJnZXQ9IiRh Y19vcHRhcmciIDs7ClgKWCAgLXYgfCAtdmVyYm9zZSB8IC0tdmVyYm9zZSB8IC0tdmVyYm9zIHwg LS12ZXJibyB8IC0tdmVyYikKWCAgICB2ZXJib3NlPXllcyA7OwpYClggIC12ZXJzaW9uIHwgLS12 ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzKQpYICAgIGVjaG8gImNvbmZpZ3Vy ZSBnZW5lcmF0ZWQgYnkgYXV0b2NvbmYgdmVyc2lvbiAyLjEzIgpYICAgIGV4aXQgMCA7OwpYClgg IC13aXRoLSogfCAtLXdpdGgtKikKWCAgICBhY19wYWNrYWdlPWBlY2hvICRhY19vcHRpb258c2Vk IC1lICdzLy0qd2l0aC0vLycgLWUgJ3MvPS4qLy8nYApYICAgICMgUmVqZWN0IG5hbWVzIHRoYXQg YXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KWCAgICBpZiB0ZXN0IC1uICJgZWNo byAkYWNfcGFja2FnZXwgc2VkICdzL1stX2EtekEtWjAtOV0vL2cnYCI7IHRoZW4KWCAgICAgIHsg ZWNobyAiY29uZmlndXJlOiBlcnJvcjogJGFjX3BhY2thZ2U6IGludmFsaWQgcGFja2FnZSBuYW1l IiAxPiYyOyBleGl0IDE7IH0KWCAgICBmaQpYICAgIGFjX3BhY2thZ2U9YGVjaG8gJGFjX3BhY2th Z2V8IHNlZCAncy8tL18vZydgClggICAgY2FzZSAiJGFjX29wdGlvbiIgaW4KWCAgICAgICo9Kikg OzsKWCAgICAgICopIGFjX29wdGFyZz15ZXMgOzsKWCAgICBlc2FjClggICAgZXZhbCAid2l0aF8k e2FjX3BhY2thZ2V9PSckYWNfb3B0YXJnJyIgOzsKWApYICAtd2l0aG91dC0qIHwgLS13aXRob3V0 LSopClggICAgYWNfcGFja2FnZT1gZWNobyAkYWNfb3B0aW9ufHNlZCAtZSAncy8tKndpdGhvdXQt Ly8nYApYICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJs ZSBuYW1lcy4KWCAgICBpZiB0ZXN0IC1uICJgZWNobyAkYWNfcGFja2FnZXwgc2VkICdzL1stYS16 QS1aMC05X10vL2cnYCI7IHRoZW4KWCAgICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogJGFj X3BhY2thZ2U6IGludmFsaWQgcGFja2FnZSBuYW1lIiAxPiYyOyBleGl0IDE7IH0KWCAgICBmaQpY ICAgIGFjX3BhY2thZ2U9YGVjaG8gJGFjX3BhY2thZ2V8IHNlZCAncy8tL18vZydgClggICAgZXZh bCAid2l0aF8ke2FjX3BhY2thZ2V9PW5vIiA7OwpYClggIC0teCkKWCAgICAjIE9ic29sZXRlOyB1 c2UgLS13aXRoLXguClggICAgd2l0aF94PXllcyA7OwpYClggIC14LWluY2x1ZGVzIHwgLS14LWlu Y2x1ZGVzIHwgLS14LWluY2x1ZGUgfCAtLXgtaW5jbHVkIHwgLS14LWluY2x1IFwKWCAgfCAtLXgt aW5jbCB8IC0teC1pbmMgfCAtLXgtaW4gfCAtLXgtaSkKWCAgICBhY19wcmV2PXhfaW5jbHVkZXMg OzsKWCAgLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlcz0qIHwgLS14LWluY2x1ZGU9KiB8IC0t eC1pbmNsdWQ9KiB8IC0teC1pbmNsdT0qIFwKWCAgfCAtLXgtaW5jbD0qIHwgLS14LWluYz0qIHwg LS14LWluPSogfCAtLXgtaT0qKQpYICAgIHhfaW5jbHVkZXM9IiRhY19vcHRhcmciIDs7ClgKWCAg LXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllcyB8IC0teC1saWJyYXJpZSB8IC0teC1saWJyYXJp IFwKWCAgfCAtLXgtbGlicmFyIHwgLS14LWxpYnJhIHwgLS14LWxpYnIgfCAtLXgtbGliIHwgLS14 LWxpIHwgLS14LWwpClggICAgYWNfcHJldj14X2xpYnJhcmllcyA7OwpYICAteC1saWJyYXJpZXM9 KiB8IC0teC1saWJyYXJpZXM9KiB8IC0teC1saWJyYXJpZT0qIHwgLS14LWxpYnJhcmk9KiBcClgg IHwgLS14LWxpYnJhcj0qIHwgLS14LWxpYnJhPSogfCAtLXgtbGlicj0qIHwgLS14LWxpYj0qIHwg LS14LWxpPSogfCAtLXgtbD0qKQpYICAgIHhfbGlicmFyaWVzPSIkYWNfb3B0YXJnIiA7OwpYClgg IC0qKSB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6ICRhY19vcHRpb246IGludmFsaWQgb3B0aW9u OyB1c2UgLS1oZWxwIHRvIHNob3cgdXNhZ2UiIDE+JjI7IGV4aXQgMTsgfQpYICAgIDs7ClgKWCAg KikKWCAgICBpZiB0ZXN0IC1uICJgZWNobyAkYWNfb3B0aW9ufCBzZWQgJ3MvWy1hLXowLTkuXS8v ZydgIjsgdGhlbgpYICAgICAgZWNobyAiY29uZmlndXJlOiB3YXJuaW5nOiAkYWNfb3B0aW9uOiBp bnZhbGlkIGhvc3QgdHlwZSIgMT4mMgpYICAgIGZpClggICAgaWYgdGVzdCAieCRub25vcHQiICE9 IHhOT05FOyB0aGVuClggICAgICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGNhbiBvbmx5IGNv bmZpZ3VyZSBmb3Igb25lIGhvc3QgYW5kIG9uZSB0YXJnZXQgYXQgYSB0aW1lIiAxPiYyOyBleGl0 IDE7IH0KWCAgICBmaQpYICAgIG5vbm9wdD0iJGFjX29wdGlvbiIKWCAgICA7OwpYClggIGVzYWMK ZG9uZQpYCmlmIHRlc3QgLW4gIiRhY19wcmV2IjsgdGhlbgpYICB7IGVjaG8gImNvbmZpZ3VyZTog ZXJyb3I6IG1pc3NpbmcgYXJndW1lbnQgdG8gLS1gZWNobyAkYWNfcHJldiB8IHNlZCAncy9fLy0v ZydgIiAxPiYyOyBleGl0IDE7IH0KZmkKWAp0cmFwICdybSAtZnIgY29uZnRlc3QqIGNvbmZkZWZz KiBjb3JlIGNvcmUuKiAqLmNvcmUgJGFjX2NsZWFuX2ZpbGVzOyBleGl0IDEnIDEgMiAxNQpYCiMg RmlsZSBkZXNjcmlwdG9yIHVzYWdlOgojIDAgc3RhbmRhcmQgaW5wdXQKIyAxIGZpbGUgY3JlYXRp b24KIyAyIGVycm9ycyBhbmQgd2FybmluZ3MKIyAzIHNvbWUgc3lzdGVtcyBtYXkgb3BlbiBpdCB0 byAvZGV2L3R0eQojIDQgdXNlZCBvbiB0aGUgS3Vib3RhIFRpdGFuCiMgNiBjaGVja2luZyBmb3Iu Li4gbWVzc2FnZXMgYW5kIHJlc3VsdHMKIyA1IGNvbXBpbGVyIG1lc3NhZ2VzIHNhdmVkIGluIGNv bmZpZy5sb2cKaWYgdGVzdCAiJHNpbGVudCIgPSB5ZXM7IHRoZW4KWCAgZXhlYyA2Pi9kZXYvbnVs bAplbHNlClggIGV4ZWMgNj4mMQpmaQpleGVjIDU+Li9jb25maWcubG9nClgKZWNobyAiXApUaGlz IGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQpy dW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBt aXN0YWtlLgoiIDE+JjUKWAojIFN0cmlwIG91dCAtLW5vLWNyZWF0ZSBhbmQgLS1uby1yZWN1cnNp b24gc28gdGhleSBkbyBub3QgcGlsZSB1cC4KIyBBbHNvIHF1b3RlIGFueSBhcmdzIGNvbnRhaW5p bmcgc2hlbGwgbWV0YWNoYXJhY3RlcnMuCmFjX2NvbmZpZ3VyZV9hcmdzPQpmb3IgYWNfYXJnCmRv ClggIGNhc2UgIiRhY19hcmciIGluClggIC1uby1jcmVhdGUgfCAtLW5vLWNyZWF0ZSB8IC0tbm8t Y3JlYXQgfCAtLW5vLWNyZWEgfCAtLW5vLWNyZSBcClggIHwgLS1uby1jciB8IC0tbm8tYykgOzsK WCAgLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1cnNpbyB8IC0tbm8t cmVjdXJzaSBcClggIHwgLS1uby1yZWN1cnMgfCAtLW5vLXJlY3VyIHwgLS1uby1yZWN1IHwgLS1u by1yZWMgfCAtLW5vLXJlIHwgLS1uby1yKSA7OwpYICAqIiAiKnwqIgkiKnwqW1xbXF1cflwjXCRc XlwmXCpcKFwpXHtcfVxcXHxcO1w8XD5cP10qKQpYICBhY19jb25maWd1cmVfYXJncz0iJGFjX2Nv bmZpZ3VyZV9hcmdzICckYWNfYXJnJyIgOzsKWCAgKikgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19j b25maWd1cmVfYXJncyAkYWNfYXJnIiA7OwpYICBlc2FjCmRvbmUKWAojIE5MUyBudWlzYW5jZXMu CiMgT25seSBzZXQgdGhlc2UgdG8gQyBpZiBhbHJlYWR5IHNldC4gIFRoZXNlIG11c3Qgbm90IGJl IHNldCB1bmNvbmRpdGlvbmFsbHkKIyBiZWNhdXNlIG5vdCBhbGwgc3lzdGVtcyB1bmRlcnN0YW5k IGUuZy4gTEFORz1DIChub3RhYmx5IFNDTykuCiMgRml4aW5nIExDX01FU1NBR0VTIHByZXZlbnRz IFNvbGFyaXMgc2ggZnJvbSB0cmFuc2xhdGluZyB2YXIgdmFsdWVzIGluIGBzZXQnIQojIE5vbi1D IExDX0NUWVBFIHZhbHVlcyBicmVhayB0aGUgY3R5cGUgY2hlY2suCmlmIHRlc3QgIiR7TEFORytz ZXR9IiAgID0gc2V0OyB0aGVuIExBTkc9QzsgICBleHBvcnQgTEFORzsgICBmaQppZiB0ZXN0ICIk e0xDX0FMTCtzZXR9IiA9IHNldDsgdGhlbiBMQ19BTEw9QzsgZXhwb3J0IExDX0FMTDsgZmkKaWYg dGVzdCAiJHtMQ19NRVNTQUdFUytzZXR9IiA9IHNldDsgdGhlbiBMQ19NRVNTQUdFUz1DOyBleHBv cnQgTENfTUVTU0FHRVM7IGZpCmlmIHRlc3QgIiR7TENfQ1RZUEUrc2V0fSIgICAgPSBzZXQ7IHRo ZW4gTENfQ1RZUEU9QzsgICAgZXhwb3J0IExDX0NUWVBFOyAgICBmaQpYCiMgY29uZmRlZnMuaCBh dm9pZHMgT1MgY29tbWFuZCBsaW5lIGxlbmd0aCBsaW1pdHMgdGhhdCBERUZTIGNhbiBleGNlZWQu CnJtIC1yZiBjb25mdGVzdCogY29uZmRlZnMuaAojIEFJWCBjcHAgbG9zZXMgb24gYW4gZW1wdHkg ZmlsZSwgc28gbWFrZSBzdXJlIGl0IGNvbnRhaW5zIGF0IGxlYXN0IGEgbmV3bGluZS4KZWNobyA+ IGNvbmZkZWZzLmgKWAojIEEgZmlsZW5hbWUgdW5pcXVlIHRvIHRoaXMgcGFja2FnZSwgcmVsYXRp dmUgdG8gdGhlIGRpcmVjdG9yeSB0aGF0CiMgY29uZmlndXJlIGlzIGluLCB3aGljaCB3ZSBjYW4g bG9vayBmb3IgdG8gZmluZCBvdXQgaWYgc3JjZGlyIGlzIGNvcnJlY3QuCmFjX3VuaXF1ZV9maWxl PWphdmFtaXNjLmV4cApYCiMgRmluZCB0aGUgc291cmNlIGZpbGVzLCBpZiBsb2NhdGlvbiB3YXMg bm90IHNwZWNpZmllZC4KaWYgdGVzdCAteiAiJHNyY2RpciI7IHRoZW4KWCAgYWNfc3JjZGlyX2Rl ZmF1bHRlZD15ZXMKWCAgIyBUcnkgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoaXMgc2NyaXB0 LCB0aGVuIGl0cyBwYXJlbnQuClggIGFjX3Byb2c9JDAKWCAgYWNfY29uZmRpcj1gZWNobyAkYWNf cHJvZ3xzZWQgJ3MlL1teL11bXi9dKiQlJSdgClggIHRlc3QgIngkYWNfY29uZmRpciIgPSAieCRh Y19wcm9nIiAmJiBhY19jb25mZGlyPS4KWCAgc3JjZGlyPSRhY19jb25mZGlyClggIGlmIHRlc3Qg ISAtciAkc3JjZGlyLyRhY191bmlxdWVfZmlsZTsgdGhlbgpYICAgIHNyY2Rpcj0uLgpYICBmaQpl bHNlClggIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9bm8KZmkKaWYgdGVzdCAhIC1yICRzcmNkaXIvJGFj X3VuaXF1ZV9maWxlOyB0aGVuClggIGlmIHRlc3QgIiRhY19zcmNkaXJfZGVmYXVsdGVkIiA9IHll czsgdGhlbgpYICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG5vdCBmaW5kIHNvdXJj ZXMgaW4gJGFjX2NvbmZkaXIgb3IgLi4iIDE+JjI7IGV4aXQgMTsgfQpYICBlbHNlClggICAgeyBl Y2hvICJjb25maWd1cmU6IGVycm9yOiBjYW4gbm90IGZpbmQgc291cmNlcyBpbiAkc3JjZGlyIiAx PiYyOyBleGl0IDE7IH0KWCAgZmkKZmkKc3JjZGlyPWBlY2hvICIke3NyY2Rpcn0iIHwgc2VkICdz JVwoW14vXVwpLyokJVwxJSdgClgKIyBQcmVmZXIgZXhwbGljaXRseSBzZWxlY3RlZCBmaWxlIHRv IGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgb25lcy4KaWYgdGVzdCAteiAiJHNpdGVmaWxlIjsgdGhl bgpYICBpZiB0ZXN0IC16ICIkQ09ORklHX1NJVEUiOyB0aGVuClggICAgaWYgdGVzdCAieCRwcmVm aXgiICE9IHhOT05FOyB0aGVuClggICAgICBDT05GSUdfU0lURT0iJHByZWZpeC9zaGFyZS9jb25m aWcuc2l0ZSAkcHJlZml4L2V0Yy9jb25maWcuc2l0ZSIKWCAgICBlbHNlClggICAgICBDT05GSUdf U0lURT0iJGFjX2RlZmF1bHRfcHJlZml4L3NoYXJlL2NvbmZpZy5zaXRlICRhY19kZWZhdWx0X3By ZWZpeC9ldGMvY29uZmlnLnNpdGUiClggICAgZmkKWCAgZmkKZWxzZQpYICBDT05GSUdfU0lURT0i JHNpdGVmaWxlIgpmaQpmb3IgYWNfc2l0ZV9maWxlIGluICRDT05GSUdfU0lURTsgZG8KWCAgaWYg dGVzdCAtciAiJGFjX3NpdGVfZmlsZSI7IHRoZW4KWCAgICBlY2hvICJsb2FkaW5nIHNpdGUgc2Ny aXB0ICRhY19zaXRlX2ZpbGUiClggICAgLiAiJGFjX3NpdGVfZmlsZSIKWCAgZmkKZG9uZQpYCmlm IHRlc3QgLXIgIiRjYWNoZV9maWxlIjsgdGhlbgpYICBlY2hvICJsb2FkaW5nIGNhY2hlICRjYWNo ZV9maWxlIgpYICAuICRjYWNoZV9maWxlCmVsc2UKWCAgZWNobyAiY3JlYXRpbmcgY2FjaGUgJGNh Y2hlX2ZpbGUiClggID4gJGNhY2hlX2ZpbGUKZmkKWAphY19leHQ9YwojIENGTEFHUyBpcyBub3Qg aW4gYWNfY3BwIGJlY2F1c2UgLWcsIC1PLCBldGMuIGFyZSBub3QgdmFsaWQgY3BwIG9wdGlvbnMu CmFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCmFjX2NvbXBpbGU9JyR7Q0MtY2N9IC1jICRDRkxBR1Mg JENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgMT4mNScKYWNfbGluaz0nJHtDQy1jY30gLW8gY29u ZnRlc3Qke2FjX2V4ZWV4dH0gJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFj X2V4dCAkTElCUyAxPiY1Jwpjcm9zc19jb21waWxpbmc9JGFjX2N2X3Byb2dfY2NfY3Jvc3MKWAph Y19leGVleHQ9CmFjX29iamV4dD1vCmlmIChlY2hvICJ0ZXN0aW5nXGMiOyBlY2hvIDEsMiwzKSB8 IGdyZXAgYyA+L2Rldi9udWxsOyB0aGVuClggICMgU3RhcmRlbnQgVmlzdHJhIFNWUjQgZ3JlcCBs YWNrcyAtZSwgc2F5cyBnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1LgpYICBpZiAoZWNobyAtbiB0ZXN0 aW5nOyBlY2hvIDEsMiwzKSB8IHNlZCBzLy1uL3huLyB8IGdyZXAgeG4gPi9kZXYvbnVsbDsgdGhl bgpYICAgIGFjX249IGFjX2M9JwonIGFjX3Q9JwknClggIGVsc2UKWCAgICBhY19uPS1uIGFjX2M9 IGFjX3Q9ClggIGZpCmVsc2UKWCAgYWNfbj0gYWNfYz0nXGMnIGFjX3Q9CmZpClgKWApYCkNDPSR7 Q0MtY2N9ClgKYWNfYXV4X2Rpcj0KZm9yIGFjX2RpciBpbiBgY2QgJHNyY2Rpcjtwd2RgLy4uLy4u Ly4uICRzcmNkaXIvYGNkICRzcmNkaXI7cHdkYC8uLi8uLi8uLjsgZG8KWCAgaWYgdGVzdCAtZiAk YWNfZGlyL2luc3RhbGwtc2g7IHRoZW4KWCAgICBhY19hdXhfZGlyPSRhY19kaXIKWCAgICBhY19p bnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLXNoIC1jIgpYICAgIGJyZWFrClggIGVsaWYg dGVzdCAtZiAkYWNfZGlyL2luc3RhbGwuc2g7IHRoZW4KWCAgICBhY19hdXhfZGlyPSRhY19kaXIK WCAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLnNoIC1jIgpYICAgIGJyZWFr ClggIGZpCmRvbmUKaWYgdGVzdCAteiAiJGFjX2F1eF9kaXIiOyB0aGVuClggIHsgZWNobyAiY29u ZmlndXJlOiBlcnJvcjogY2FuIG5vdCBmaW5kIGluc3RhbGwtc2ggb3IgaW5zdGFsbC5zaCBpbiBg Y2QgJHNyY2Rpcjtwd2RgLy4uLy4uLy4uICRzcmNkaXIvYGNkICRzcmNkaXI7cHdkYC8uLi8uLi8u LiIgMT4mMjsgZXhpdCAxOyB9CmZpCmFjX2NvbmZpZ19ndWVzcz0kYWNfYXV4X2Rpci9jb25maWcu Z3Vlc3MKYWNfY29uZmlnX3N1Yj0kYWNfYXV4X2Rpci9jb25maWcuc3ViCmFjX2NvbmZpZ3VyZT0k YWNfYXV4X2Rpci9jb25maWd1cmUgIyBUaGlzIHNob3VsZCBiZSBDeWdudXMgY29uZmlndXJlLgpY ClgKIyBEbyBzb21lIGVycm9yIGNoZWNraW5nIGFuZCBkZWZhdWx0aW5nIGZvciB0aGUgaG9zdCBh bmQgdGFyZ2V0IHR5cGUuCiMgVGhlIGlucHV0cyBhcmU6CiMgICAgY29uZmlndXJlIC0taG9zdD1I T1NUIC0tdGFyZ2V0PVRBUkdFVCAtLWJ1aWxkPUJVSUxEIE5PTk9QVAojCiMgVGhlIHJ1bGVzIGFy ZToKIyAxLiBZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIHNwZWNpZnkgLS1ob3N0LCAtLXRhcmdldCwg YW5kIG5vbm9wdCBhdCB0aGUKIyAgICBzYW1lIHRpbWUuCiMgMi4gSG9zdCBkZWZhdWx0cyB0byBu b25vcHQuCiMgMy4gSWYgbm9ub3B0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gaG9zdCBkZWZhdWx0 cyB0byB0aGUgY3VycmVudCBob3N0LAojICAgIGFzIGRldGVybWluZWQgYnkgY29uZmlnLmd1ZXNz LgojIDQuIFRhcmdldCBhbmQgYnVpbGQgZGVmYXVsdCB0byBub25vcHQuCiMgNS4gSWYgbm9ub3B0 IGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gdGFyZ2V0IGFuZCBidWlsZCBkZWZhdWx0IHRvIGhvc3Qu ClgKIyBUaGUgYWxpYXNlcyBzYXZlIHRoZSBuYW1lcyB0aGUgdXNlciBzdXBwbGllZCwgd2hpbGUg JGhvc3QgZXRjLgojIHdpbGwgZ2V0IGNhbm9uaWNhbGl6ZWQuCmNhc2UgJGhvc3QtLS0kdGFyZ2V0 LS0tJG5vbm9wdCBpbgpOT05FLS0tKi0tLSogfCAqLS0tTk9ORS0tLSogfCAqLS0tKi0tLU5PTkUp IDs7CiopIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG9ubHkgY29uZmlndXJlIGZvciBv bmUgaG9zdCBhbmQgb25lIHRhcmdldCBhdCBhIHRpbWUiIDE+JjI7IGV4aXQgMTsgfSA7Owplc2Fj ClgKWAojIE1ha2Ugc3VyZSB3ZSBjYW4gcnVuIGNvbmZpZy5zdWIuCmlmICR7Q09ORklHX1NIRUxM LS9iaW4vc2h9ICRhY19jb25maWdfc3ViIHN1bjQgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKZWxz ZSB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGNhbiBub3QgcnVuICRhY19jb25maWdfc3ViIiAx PiYyOyBleGl0IDE7IH0KZmkKWAplY2hvICRhY19uICJjaGVja2luZyBob3N0IHN5c3RlbSB0eXBl IiIuLi4gJGFjX2MiIDE+JjYKZWNobyAiY29uZmlndXJlOjU4NjogY2hlY2tpbmcgaG9zdCBzeXN0 ZW0gdHlwZSIgPiY1ClgKaG9zdF9hbGlhcz0kaG9zdApjYXNlICIkaG9zdF9hbGlhcyIgaW4KTk9O RSkKWCAgY2FzZSAkbm9ub3B0IGluClggIE5PTkUpClggICAgaWYgaG9zdF9hbGlhcz1gJHtDT05G SUdfU0hFTEwtL2Jpbi9zaH0gJGFjX2NvbmZpZ19ndWVzc2A7IHRoZW4gOgpYICAgIGVsc2UgeyBl Y2hvICJjb25maWd1cmU6IGVycm9yOiBjYW4gbm90IGd1ZXNzIGhvc3QgdHlwZTsgeW91IG11c3Qg c3BlY2lmeSBvbmUiIDE+JjI7IGV4aXQgMTsgfQpYICAgIGZpIDs7ClggICopIGhvc3RfYWxpYXM9 JG5vbm9wdCA7OwpYICBlc2FjIDs7CmVzYWMKWApob3N0PWAke0NPTkZJR19TSEVMTC0vYmluL3No fSAkYWNfY29uZmlnX3N1YiAkaG9zdF9hbGlhc2AKaG9zdF9jcHU9YGVjaG8gJGhvc3QgfCBzZWQg J3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYApob3N0X3ZlbmRvcj1gZWNobyAk aG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wyLydgCmhvc3Rfb3M9 YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYApl Y2hvICIkYWNfdCIiJGhvc3QiIDE+JjYKWAplY2hvICRhY19uICJjaGVja2luZyB0YXJnZXQgc3lz dGVtIHR5cGUiIi4uLiAkYWNfYyIgMT4mNgplY2hvICJjb25maWd1cmU6NjA3OiBjaGVja2luZyB0 YXJnZXQgc3lzdGVtIHR5cGUiID4mNQpYCnRhcmdldF9hbGlhcz0kdGFyZ2V0CmNhc2UgIiR0YXJn ZXRfYWxpYXMiIGluCk5PTkUpClggIGNhc2UgJG5vbm9wdCBpbgpYICBOT05FKSB0YXJnZXRfYWxp YXM9JGhvc3RfYWxpYXMgOzsKWCAgKikgdGFyZ2V0X2FsaWFzPSRub25vcHQgOzsKWCAgZXNhYyA7 Owplc2FjClgKdGFyZ2V0PWAke0NPTkZJR19TSEVMTC0vYmluL3NofSAkYWNfY29uZmlnX3N1YiAk dGFyZ2V0X2FsaWFzYAp0YXJnZXRfY3B1PWBlY2hvICR0YXJnZXQgfCBzZWQgJ3MvXlwoW14tXSpc KS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAp0YXJnZXRfdmVuZG9yPWBlY2hvICR0YXJnZXQgfCBz ZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAp0YXJnZXRfb3M9YGVjaG8g JHRhcmdldCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCmVjaG8g IiRhY190IiIkdGFyZ2V0IiAxPiY2ClgKZWNobyAkYWNfbiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVt IHR5cGUiIi4uLiAkYWNfYyIgMT4mNgplY2hvICJjb25maWd1cmU6NjI1OiBjaGVja2luZyBidWls ZCBzeXN0ZW0gdHlwZSIgPiY1ClgKYnVpbGRfYWxpYXM9JGJ1aWxkCmNhc2UgIiRidWlsZF9hbGlh cyIgaW4KTk9ORSkKWCAgY2FzZSAkbm9ub3B0IGluClggIE5PTkUpIGJ1aWxkX2FsaWFzPSRob3N0 X2FsaWFzIDs7ClggICopIGJ1aWxkX2FsaWFzPSRub25vcHQgOzsKWCAgZXNhYyA7Owplc2FjClgK YnVpbGQ9YCR7Q09ORklHX1NIRUxMLS9iaW4vc2h9ICRhY19jb25maWdfc3ViICRidWlsZF9hbGlh c2AKYnVpbGRfY3B1PWBlY2hvICRidWlsZCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1c KC4qXCkkL1wxLydgCmJ1aWxkX3ZlbmRvcj1gZWNobyAkYnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpc KS1cKFteLV0qXCktXCguKlwpJC9cMi8nYApidWlsZF9vcz1gZWNobyAkYnVpbGQgfCBzZWQgJ3Mv XlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAplY2hvICIkYWNfdCIiJGJ1aWxkIiAx PiY2ClgKdGVzdCAiJGhvc3RfYWxpYXMiICE9ICIkdGFyZ2V0X2FsaWFzIiAmJgpYICB0ZXN0ICIk cHJvZ3JhbV9wcmVmaXgkcHJvZ3JhbV9zdWZmaXgkcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSIgPSBc ClggICAgTk9ORU5PTkVzLHgseCwgJiYKWCAgcHJvZ3JhbV9wcmVmaXg9JHt0YXJnZXRfYWxpYXN9 LQpYClgKdHJhcCAnJyAxIDIgMTUKY2F0ID4gY29uZmNhY2hlIDw8XEVPRgojIFRoaXMgZmlsZSBp cyBhIHNoZWxsIHNjcmlwdCB0aGF0IGNhY2hlcyB0aGUgcmVzdWx0cyBvZiBjb25maWd1cmUKIyB0 ZXN0cyBydW4gb24gdGhpcyBzeXN0ZW0gc28gdGhleSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gY29u ZmlndXJlCiMgc2NyaXB0cyBhbmQgY29uZmlndXJlIHJ1bnMuICBJdCBpcyBub3QgdXNlZnVsIG9u IG90aGVyIHN5c3RlbXMuCiMgSWYgaXQgY29udGFpbnMgcmVzdWx0cyB5b3UgZG9uJ3Qgd2FudCB0 byBrZWVwLCB5b3UgbWF5IHJlbW92ZSBvciBlZGl0IGl0LgojCiMgQnkgZGVmYXVsdCwgY29uZmln dXJlIHVzZXMgLi9jb25maWcuY2FjaGUgYXMgdGhlIGNhY2hlIGZpbGUsCiMgY3JlYXRpbmcgaXQg aWYgaXQgZG9lcyBub3QgZXhpc3QgYWxyZWFkeS4gIFlvdSBjYW4gZ2l2ZSBjb25maWd1cmUKIyB0 aGUgLS1jYWNoZS1maWxlPUZJTEUgb3B0aW9uIHRvIHVzZSBhIGRpZmZlcmVudCBjYWNoZSBmaWxl OyB0aGF0IGlzCiMgd2hhdCBjb25maWd1cmUgZG9lcyB3aGVuIGl0IGNhbGxzIGNvbmZpZ3VyZSBz Y3JpcHRzIGluCiMgc3ViZGlyZWN0b3JpZXMsIHNvIHRoZXkgc2hhcmUgdGhlIGNhY2hlLgojIEdp dmluZyAtLWNhY2hlLWZpbGU9L2Rldi9udWxsIGRpc2FibGVzIGNhY2hpbmcsIGZvciBkZWJ1Z2dp bmcgY29uZmlndXJlLgojIGNvbmZpZy5zdGF0dXMgb25seSBwYXlzIGF0dGVudGlvbiB0byB0aGUg Y2FjaGUgZmlsZSBpZiB5b3UgZ2l2ZSBpdCB0aGUKIyAtLXJlY2hlY2sgb3B0aW9uIHRvIHJlcnVu IGNvbmZpZ3VyZS4KIwpFT0YKIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0aW5nIHRoZSBjYWNo ZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGluIHZhbHVlcywKIyBidXQgd2Uga25vdyBvZiBubyB3b3Jr YXJvdW5kIHRoYXQgaXMgc2ltcGxlLCBwb3J0YWJsZSwgYW5kIGVmZmljaWVudC4KIyBTbywgZG9u J3QgcHV0IG5ld2xpbmVzIGluIGNhY2hlIHZhcmlhYmxlcycgdmFsdWVzLgojIFVsdHJpeCBzaCBz ZXQgd3JpdGVzIHRvIHN0ZGVyciBhbmQgY2FuJ3QgYmUgcmVkaXJlY3RlZCBkaXJlY3RseSwKIyBh bmQgc2V0cyB0aGUgaGlnaCBiaXQgaW4gdGhlIGNhY2hlIGZpbGUgdW5sZXNzIHdlIGFzc2lnbiB0 byB0aGUgdmFycy4KKHNldCkgMj4mMSB8ClggIGNhc2UgYChhY19zcGFjZT0nICc7IHNldCB8IGdy ZXAgYWNfc3BhY2UpIDI+JjFgIGluClggICphY19zcGFjZT1cICopClggICAgIyBgc2V0JyBkb2Vz IG5vdCBxdW90ZSBjb3JyZWN0bHksIHNvIGFkZCBxdW90ZXMgKGRvdWJsZS1xdW90ZSBzdWJzdGl0 dXRpb24KWCAgICAjIHR1cm5zIFxcXFwgaW50byBcXCwgYW5kIHNlZCB0dXJucyBcXCBpbnRvIFwp LgpYICAgIHNlZCAtbiBcClggICAgICAtZSAicy8nLydcXFxcJycvZyIgXApYICAgICAgLWUgInMv XlxcKFthLXpBLVowLTlfXSpfY3ZfW2EtekEtWjAtOV9dKlxcKT1cXCguKlxcKS9cXDE9XCR7XFwx PSdcXDInfS9wIgpYICAgIDs7ClggICopClggICAgIyBgc2V0JyBxdW90ZXMgY29ycmVjdGx5IGFz IHJlcXVpcmVkIGJ5IFBPU0lYLCBzbyBkbyBub3QgYWRkIHF1b3Rlcy4KWCAgICBzZWQgLW4gLWUg J3MvXlwoW2EtekEtWjAtOV9dKl9jdl9bYS16QS1aMC05X10qXCk9XCguKlwpL1wxPSR7XDE9XDJ9 L3AnClggICAgOzsKWCAgZXNhYyA+PiBjb25mY2FjaGUKaWYgY21wIC1zICRjYWNoZV9maWxlIGNv bmZjYWNoZTsgdGhlbgpYICA6CmVsc2UKWCAgaWYgdGVzdCAtdyAkY2FjaGVfZmlsZTsgdGhlbgpY ICAgIGVjaG8gInVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIgpYICAgIGNhdCBjb25mY2FjaGUg PiAkY2FjaGVfZmlsZQpYICBlbHNlClggICAgZWNobyAibm90IHVwZGF0aW5nIHVud3JpdGFibGUg Y2FjaGUgJGNhY2hlX2ZpbGUiClggIGZpCmZpCnJtIC1mIGNvbmZjYWNoZQpYCnRyYXAgJ3JtIC1m ciBjb25mdGVzdCogY29uZmRlZnMqIGNvcmUgY29yZS4qICouY29yZSAkYWNfY2xlYW5fZmlsZXM7 IGV4aXQgMScgMSAyIDE1ClgKdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSRhY19k ZWZhdWx0X3ByZWZpeAojIExldCBtYWtlIGV4cGFuZCBleGVjX3ByZWZpeC4KdGVzdCAieCRleGVj X3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JwpYCiMgQW55IGFzc2ln bm1lbnQgdG8gVlBBVEggY2F1c2VzIFN1biBtYWtlIHRvIG9ubHkgZXhlY3V0ZQojIHRoZSBmaXJz dCBzZXQgb2YgZG91YmxlLWNvbG9uIHJ1bGVzLCBzbyByZW1vdmUgaXQgaWYgbm90IG5lZWRlZC4K IyBJZiB0aGVyZSBpcyBhIGNvbG9uIGluIHRoZSBwYXRoLCB3ZSBuZWVkIHRvIGtlZXAgaXQuCmlm IHRlc3QgIngkc3JjZGlyIiA9IHguOyB0aGVuClggIGFjX3Zwc3ViPScvXlsgCV0qVlBBVEhbIAld Kj1bXjpdKiQvZCcKZmkKWAp0cmFwICdybSAtZiAkQ09ORklHX1NUQVRVUyBjb25mdGVzdCo7IGV4 aXQgMScgMSAyIDE1ClgKIyBUcmFuc2Zvcm0gY29uZmRlZnMuaCBpbnRvIERFRlMuCiMgUHJvdGVj dCBhZ2FpbnN0IHNoZWxsIGV4cGFuc2lvbiB3aGlsZSBleGVjdXRpbmcgTWFrZWZpbGUgcnVsZXMu CiMgUHJvdGVjdCBhZ2FpbnN0IE1ha2VmaWxlIG1hY3JvIGV4cGFuc2lvbi4KY2F0ID4gY29uZnRl c3QuZGVmcyA8PFxFT0YKcyUjZGVmaW5lIFwoW0EtWmEtel9dW0EtWmEtejAtOV9dKlwpICpcKC4q XCklLURcMT1cMiVnCnMlWyAJYH4jJF4mKigpe31cXHw7JyI8Pj9dJVxcJiVnCnMlXFslXFwmJWcK cyVcXSVcXCYlZwpzJVwkJSQkJWcKRU9GCkRFRlM9YHNlZCAtZiBjb25mdGVzdC5kZWZzIGNvbmZk ZWZzLmggfCB0ciAnXDAxMicgJyAnYApybSAtZiBjb25mdGVzdC5kZWZzClgKWAojIFdpdGhvdXQg dGhlICIuLyIsIHNvbWUgc2hlbGxzIGxvb2sgaW4gUEFUSCBmb3IgY29uZmlnLnN0YXR1cy4KOiAk e0NPTkZJR19TVEFUVVM9Li9jb25maWcuc3RhdHVzfQpYCmVjaG8gY3JlYXRpbmcgJENPTkZJR19T VEFUVVMKcm0gLWYgJENPTkZJR19TVEFUVVMKY2F0ID4gJENPTkZJR19TVEFUVVMgPDxFT0YKIyEg L2Jpbi9zaAojIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZ3VyZS4KIyBSdW4gdGhp cyBmaWxlIHRvIHJlY3JlYXRlIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCiMgVGhpcyBkaXJl Y3Rvcnkgd2FzIGNvbmZpZ3VyZWQgYXMgZm9sbG93cywKIyBvbiBob3N0IGAoaG9zdG5hbWUgfHwg dW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYDoKIwojICQwICRhY19jb25maWd1cmVfYXJn cwojCiMgQ29tcGlsZXIgb3V0cHV0IHByb2R1Y2VkIGJ5IGNvbmZpZ3VyZSwgdXNlZnVsIGZvciBk ZWJ1Z2dpbmcKIyBjb25maWd1cmUsIGlzIGluIC4vY29uZmlnLmxvZyBpZiBpdCBleGlzdHMuClgK YWNfY3NfdXNhZ2U9IlVzYWdlOiAkQ09ORklHX1NUQVRVUyBbLS1yZWNoZWNrXSBbLS12ZXJzaW9u XSBbLS1oZWxwXSIKZm9yIGFjX29wdGlvbgpkbwpYICBjYXNlICJcJGFjX29wdGlvbiIgaW4KWCAg LXJlY2hlY2sgfCAtLXJlY2hlY2sgfCAtLXJlY2hlYyB8IC0tcmVjaGUgfCAtLXJlY2ggfCAtLXJl YyB8IC0tcmUgfCAtLXIpClggICAgZWNobyAicnVubmluZyBcJHtDT05GSUdfU0hFTEwtL2Jpbi9z aH0gJDAgJGFjX2NvbmZpZ3VyZV9hcmdzIC0tbm8tY3JlYXRlIC0tbm8tcmVjdXJzaW9uIgpYICAg IGV4ZWMgXCR7Q09ORklHX1NIRUxMLS9iaW4vc2h9ICQwICRhY19jb25maWd1cmVfYXJncyAtLW5v LWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbiA7OwpYICAtdmVyc2lvbiB8IC0tdmVyc2lvbiB8IC0tdmVy c2lvIHwgLS12ZXJzaSB8IC0tdmVycyB8IC0tdmVyIHwgLS12ZSB8IC0tdikKWCAgICBlY2hvICIk Q09ORklHX1NUQVRVUyBnZW5lcmF0ZWQgYnkgYXV0b2NvbmYgdmVyc2lvbiAyLjEzIgpYICAgIGV4 aXQgMCA7OwpYICAtaGVscCB8IC0taGVscCB8IC0taGVsIHwgLS1oZSB8IC0taCkKWCAgICBlY2hv ICJcJGFjX2NzX3VzYWdlIjsgZXhpdCAwIDs7ClggICopIGVjaG8gIlwkYWNfY3NfdXNhZ2UiOyBl eGl0IDEgOzsKWCAgZXNhYwpkb25lClgKYWNfZ2l2ZW5fc3JjZGlyPSRzcmNkaXIKWAp0cmFwICdy bSAtZnIgYGVjaG8gIk1ha2VmaWxlIiB8IHNlZCAicy86W14gXSovL2ciYCBjb25mdGVzdCo7IGV4 aXQgMScgMSAyIDE1CkVPRgpjYXQgPj4gJENPTkZJR19TVEFUVVMgPDxFT0YKWAojIFByb3RlY3Qg YWdhaW5zdCBiZWluZyBvbiB0aGUgcmlnaHQgc2lkZSBvZiBhIHNlZCBzdWJzdCBpbiBjb25maWcu c3RhdHVzLgpzZWQgJ3MvJUAvQEAvOyBzL0AlL0BALzsgcy8lZ1wkL0BnLzsgL0BnXCQvcy9bXFxc XCYlXS9cXFxcJi9nOwpYIHMvQEAvJUAvOyBzL0BAL0AlLzsgcy9AZ1wkLyVnLycgPiBjb25mdGVz dC5zdWJzIDw8XFxDRU9GCiRhY192cHN1YgokZXh0cmFzdWIKcyVAU0hFTExAJSRTSEVMTCVnCnMl QENGTEFHU0AlJENGTEFHUyVnCnMlQENQUEZMQUdTQCUkQ1BQRkxBR1MlZwpzJUBDWFhGTEFHU0Al JENYWEZMQUdTJWcKcyVARkZMQUdTQCUkRkZMQUdTJWcKcyVAREVGU0AlJERFRlMlZwpzJUBMREZM QUdTQCUkTERGTEFHUyVnCnMlQExJQlNAJSRMSUJTJWcKcyVAZXhlY19wcmVmaXhAJSRleGVjX3By ZWZpeCVnCnMlQHByZWZpeEAlJHByZWZpeCVnCnMlQHByb2dyYW1fdHJhbnNmb3JtX25hbWVAJSRw cm9ncmFtX3RyYW5zZm9ybV9uYW1lJWcKcyVAYmluZGlyQCUkYmluZGlyJWcKcyVAc2JpbmRpckAl JHNiaW5kaXIlZwpzJUBsaWJleGVjZGlyQCUkbGliZXhlY2RpciVnCnMlQGRhdGFkaXJAJSRkYXRh ZGlyJWcKcyVAc3lzY29uZmRpckAlJHN5c2NvbmZkaXIlZwpzJUBzaGFyZWRzdGF0ZWRpckAlJHNo YXJlZHN0YXRlZGlyJWcKcyVAbG9jYWxzdGF0ZWRpckAlJGxvY2Fsc3RhdGVkaXIlZwpzJUBsaWJk aXJAJSRsaWJkaXIlZwpzJUBpbmNsdWRlZGlyQCUkaW5jbHVkZWRpciVnCnMlQG9sZGluY2x1ZGVk aXJAJSRvbGRpbmNsdWRlZGlyJWcKcyVAaW5mb2RpckAlJGluZm9kaXIlZwpzJUBtYW5kaXJAJSRt YW5kaXIlZwpzJUBDQ0AlJENDJWcKcyVAaG9zdEAlJGhvc3QlZwpzJUBob3N0X2FsaWFzQCUkaG9z dF9hbGlhcyVnCnMlQGhvc3RfY3B1QCUkaG9zdF9jcHUlZwpzJUBob3N0X3ZlbmRvckAlJGhvc3Rf dmVuZG9yJWcKcyVAaG9zdF9vc0AlJGhvc3Rfb3MlZwpzJUB0YXJnZXRAJSR0YXJnZXQlZwpzJUB0 YXJnZXRfYWxpYXNAJSR0YXJnZXRfYWxpYXMlZwpzJUB0YXJnZXRfY3B1QCUkdGFyZ2V0X2NwdSVn CnMlQHRhcmdldF92ZW5kb3JAJSR0YXJnZXRfdmVuZG9yJWcKcyVAdGFyZ2V0X29zQCUkdGFyZ2V0 X29zJWcKcyVAYnVpbGRAJSRidWlsZCVnCnMlQGJ1aWxkX2FsaWFzQCUkYnVpbGRfYWxpYXMlZwpz JUBidWlsZF9jcHVAJSRidWlsZF9jcHUlZwpzJUBidWlsZF92ZW5kb3JAJSRidWlsZF92ZW5kb3Il ZwpzJUBidWlsZF9vc0AlJGJ1aWxkX29zJWcKWApDRU9GCkVPRgpYCmNhdCA+PiAkQ09ORklHX1NU QVRVUyA8PFxFT0YKWAojIFNwbGl0IHRoZSBzdWJzdGl0dXRpb25zIGludG8gYml0ZS1zaXplZCBw aWVjZXMgZm9yIHNlZHMgd2l0aAojIHNtYWxsIGNvbW1hbmQgbnVtYmVyIGxpbWl0cywgbGlrZSBv biBEaWdpdGFsIE9TRi8xIGFuZCBIUC1VWC4KYWNfbWF4X3NlZF9jbWRzPTkwICMgTWF4aW11bSBu dW1iZXIgb2YgbGluZXMgdG8gcHV0IGluIGEgc2VkIHNjcmlwdC4KYWNfZmlsZT0xICMgTnVtYmVy IG9mIGN1cnJlbnQgZmlsZS4KYWNfYmVnPTEgIyBGaXJzdCBsaW5lIGZvciBjdXJyZW50IGZpbGUu CmFjX2VuZD0kYWNfbWF4X3NlZF9jbWRzICMgTGluZSBhZnRlciBsYXN0IGxpbmUgZm9yIGN1cnJl bnQgZmlsZS4KYWNfbW9yZV9saW5lcz06CmFjX3NlZF9jbWRzPSIiCndoaWxlICRhY19tb3JlX2xp bmVzOyBkbwpYICBpZiB0ZXN0ICRhY19iZWcgLWd0IDE7IHRoZW4KWCAgICBzZWQgIjEsJHthY19i ZWd9ZDsgJHthY19lbmR9cSIgY29uZnRlc3Quc3VicyA+IGNvbmZ0ZXN0LnMkYWNfZmlsZQpYICBl bHNlClggICAgc2VkICIke2FjX2VuZH1xIiBjb25mdGVzdC5zdWJzID4gY29uZnRlc3QucyRhY19m aWxlClggIGZpClggIGlmIHRlc3QgISAtcyBjb25mdGVzdC5zJGFjX2ZpbGU7IHRoZW4KWCAgICBh Y19tb3JlX2xpbmVzPWZhbHNlClggICAgcm0gLWYgY29uZnRlc3QucyRhY19maWxlClggIGVsc2UK WCAgICBpZiB0ZXN0IC16ICIkYWNfc2VkX2NtZHMiOyB0aGVuClggICAgICBhY19zZWRfY21kcz0i c2VkIC1mIGNvbmZ0ZXN0LnMkYWNfZmlsZSIKWCAgICBlbHNlClggICAgICBhY19zZWRfY21kcz0i JGFjX3NlZF9jbWRzIHwgc2VkIC1mIGNvbmZ0ZXN0LnMkYWNfZmlsZSIKWCAgICBmaQpYICAgIGFj X2ZpbGU9YGV4cHIgJGFjX2ZpbGUgKyAxYApYICAgIGFjX2JlZz0kYWNfZW5kClggICAgYWNfZW5k PWBleHByICRhY19lbmQgKyAkYWNfbWF4X3NlZF9jbWRzYApYICBmaQpkb25lCmlmIHRlc3QgLXog IiRhY19zZWRfY21kcyI7IHRoZW4KWCAgYWNfc2VkX2NtZHM9Y2F0CmZpCkVPRgpYCmNhdCA+PiAk Q09ORklHX1NUQVRVUyA8PEVPRgpYCkNPTkZJR19GSUxFUz1cJHtDT05GSUdfRklMRVMtIk1ha2Vm aWxlIn0KRU9GCmNhdCA+PiAkQ09ORklHX1NUQVRVUyA8PFxFT0YKZm9yIGFjX2ZpbGUgaW4gLi4g JENPTkZJR19GSUxFUzsgZG8gaWYgdGVzdCAieCRhY19maWxlIiAhPSB4Li47IHRoZW4KWCAgIyBT dXBwb3J0ICJvdXRmaWxlWzppbmZpbGVbOmluZmlsZS4uLl1dIiwgZGVmYXVsdGluZyBpbmZpbGU9 Im91dGZpbGUuaW4iLgpYICBjYXNlICIkYWNfZmlsZSIgaW4KWCAgKjoqKSBhY19maWxlX2luPWBl Y2hvICIkYWNfZmlsZSJ8c2VkICdzJVteOl0qOiUlJ2AKWCAgICAgICBhY19maWxlPWBlY2hvICIk YWNfZmlsZSJ8c2VkICdzJTouKiUlJ2AgOzsKWCAgKikgYWNfZmlsZV9pbj0iJHthY19maWxlfS5p biIgOzsKWCAgZXNhYwpYClggICMgQWRqdXN0IGEgcmVsYXRpdmUgc3JjZGlyLCB0b3Bfc3JjZGly LCBhbmQgSU5TVEFMTCBmb3Igc3ViZGlyZWN0b3JpZXMuClgKWCAgIyBSZW1vdmUgbGFzdCBzbGFz aCBhbmQgYWxsIHRoYXQgZm9sbG93cyBpdC4gIE5vdCBhbGwgc3lzdGVtcyBoYXZlIGRpcm5hbWUu ClggIGFjX2Rpcj1gZWNobyAkYWNfZmlsZXxzZWQgJ3MlL1teL11bXi9dKiQlJSdgClggIGlmIHRl c3QgIiRhY19kaXIiICE9ICIkYWNfZmlsZSIgJiYgdGVzdCAiJGFjX2RpciIgIT0gLjsgdGhlbgpY ICAgICMgVGhlIGZpbGUgaXMgaW4gYSBzdWJkaXJlY3RvcnkuClggICAgdGVzdCAhIC1kICIkYWNf ZGlyIiAmJiBta2RpciAiJGFjX2RpciIKWCAgICBhY19kaXJfc3VmZml4PSIvYGVjaG8gJGFjX2Rp cnxzZWQgJ3MlXlwuLyUlJ2AiClggICAgIyBBICIuLi8iIGZvciBlYWNoIGRpcmVjdG9yeSBpbiAk YWNfZGlyX3N1ZmZpeC4KWCAgICBhY19kb3RzPWBlY2hvICRhY19kaXJfc3VmZml4fHNlZCAncyUv W14vXSolLi4vJWcnYApYICBlbHNlClggICAgYWNfZGlyX3N1ZmZpeD0gYWNfZG90cz0KWCAgZmkK WApYICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgpYICAuKSAgc3JjZGlyPS4KWCAgICAgIGlm IHRlc3QgLXogIiRhY19kb3RzIjsgdGhlbiB0b3Bfc3JjZGlyPS4KWCAgICAgIGVsc2UgdG9wX3Ny Y2Rpcj1gZWNobyAkYWNfZG90c3xzZWQgJ3MlLyQlJSdgOyBmaSA7OwpYICAvKikgc3JjZGlyPSIk YWNfZ2l2ZW5fc3JjZGlyJGFjX2Rpcl9zdWZmaXgiOyB0b3Bfc3JjZGlyPSIkYWNfZ2l2ZW5fc3Jj ZGlyIiA7OwpYICAqKSAjIFJlbGF0aXZlIHBhdGguClggICAgc3JjZGlyPSIkYWNfZG90cyRhY19n aXZlbl9zcmNkaXIkYWNfZGlyX3N1ZmZpeCIKWCAgICB0b3Bfc3JjZGlyPSIkYWNfZG90cyRhY19n aXZlbl9zcmNkaXIiIDs7ClggIGVzYWMKWApYClggIGVjaG8gY3JlYXRpbmcgIiRhY19maWxlIgpY ICBybSAtZiAiJGFjX2ZpbGUiClggIGNvbmZpZ3VyZV9pbnB1dD0iR2VuZXJhdGVkIGF1dG9tYXRp Y2FsbHkgZnJvbSBgZWNobyAkYWNfZmlsZV9pbnxzZWQgJ3MlLiovJSUnYCBieSBjb25maWd1cmUu IgpYICBjYXNlICIkYWNfZmlsZSIgaW4KWCAgKk1ha2VmaWxlKikgYWNfY29tc3ViPSIxaVxcCiMg JGNvbmZpZ3VyZV9pbnB1dCIgOzsKWCAgKikgYWNfY29tc3ViPSA7OwpYICBlc2FjClgKWCAgYWNf ZmlsZV9pbnB1dHM9YGVjaG8gJGFjX2ZpbGVfaW58c2VkIC1lICJzJV4lJGFjX2dpdmVuX3NyY2Rp ci8lIiAtZSAicyU6JSAkYWNfZ2l2ZW5fc3JjZGlyLyVnImAKWCAgc2VkIC1lICIkYWNfY29tc3Vi CnMlQGNvbmZpZ3VyZV9pbnB1dEAlJGNvbmZpZ3VyZV9pbnB1dCVnCnMlQHNyY2RpckAlJHNyY2Rp ciVnCnMlQHRvcF9zcmNkaXJAJSR0b3Bfc3JjZGlyJWcKIiAkYWNfZmlsZV9pbnB1dHMgfCAoZXZh bCAiJGFjX3NlZF9jbWRzIikgPiAkYWNfZmlsZQpmaTsgZG9uZQpybSAtZiBjb25mdGVzdC5zKgpY CkVPRgpjYXQgPj4gJENPTkZJR19TVEFUVVMgPDxFT0YKWApFT0YKY2F0ID4+ICRDT05GSUdfU1RB VFVTIDw8XEVPRgpYClhleGl0IDAKRU9GCmNobW9kICt4ICRDT05GSUdfU1RBVFVTCnJtIC1mciBj b25mZGVmcyogJGFjX2NsZWFuX2ZpbGVzCnRlc3QgIiRub19jcmVhdGUiID0geWVzIHx8ICR7Q09O RklHX1NIRUxMLS9iaW4vc2h9ICRDT05GSUdfU1RBVFVTIHx8IGV4aXQgMQpYClNIQVJfRU9GCiAg JHNoYXJfdG91Y2ggLWFtIDAzMDcxNjI1MTAwICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2NvbmZp Z3VyZScgJiYKICBjaG1vZCAwNzc1ICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2NvbmZpZ3VyZScg fHwKICAkZWNobyAncmVzdG9yZSBvZicgJ2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvY29uZmlndXJl JyAnZmFpbGVkJwogIGlmICggbWQ1c3VtIC0taGVscCAyPiYxIHwgZ3JlcCAnc2FnZTogbWQ1c3Vt IFxbJyApID4vZGV2L251bGwgMj4mMSBcCiAgJiYgKCBtZDVzdW0gLS12ZXJzaW9uIDI+JjEgfCBn cmVwIC12ICd0ZXh0dXRpbHMgMS4xMicgKSA+L2Rldi9udWxsOyB0aGVuCiAgICBtZDVzdW0gLWMg PDwgU0hBUl9FT0YgPi9kZXYvbnVsbCAyPiYxIFwKICAgIHx8ICRlY2hvICdnZGIvdGVzdHN1aXRl L2dkYi5qYXZhL2NvbmZpZ3VyZTonICdNRDUgY2hlY2sgZmFpbGVkJwo3MWQ5OGI4N2RlNGIzYmZj ZGFjNmI1M2ZiMzM0MDU2NyAgZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9jb25maWd1cmUKU0hBUl9F T0YKICBlbHNlCiAgICBzaGFyX2NvdW50PSJgTENfQUxMPSBMQ19DVFlQRT0gTEFORz0gd2MgLWMg PCAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9jb25maWd1cmUnYCIKICAgIHRlc3QgMzExODYgLWVx ICIkc2hhcl9jb3VudCIgfHwKICAgICRlY2hvICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2NvbmZp Z3VyZTonICdvcmlnaW5hbCBzaXplJyAnMzExODYsJyAnY3VycmVudCBzaXplJyAiJHNoYXJfY291 bnQhIgogIGZpCmZpCiMgPT09PT09PT09PT09PSBnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL01ha2Vm aWxlLmluID09PT09PT09PT09PT09CmlmIHRlc3QgLWYgJ2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEv TWFrZWZpbGUuaW4nICYmIHRlc3QgIiRmaXJzdF9wYXJhbSIgIT0gLWM7IHRoZW4KICAkZWNobyAn eCAtJyBTS0lQUElORyAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9NYWtlZmlsZS5pbicgJyhmaWxl IGFscmVhZHkgZXhpc3RzKScKZWxzZQogICRlY2hvICd4IC0nIGV4dHJhY3RpbmcgJ2dkYi90ZXN0 c3VpdGUvZ2RiLmphdmEvTWFrZWZpbGUuaW4nICcodGV4dCknCiAgc2VkICdzL15YLy8nIDw8ICdT SEFSX0VPRicgPiAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9NYWtlZmlsZS5pbicgJiYKc3JjZGly ID0gQHNyY2RpckAKVlBBVEggPSBAc3JjZGlyQApYCmFsbDogClgJQGVjaG8gIk5vdGhpbmcgdG8g YmUgZG9uZSBmb3IgYWxsLi4uIgpYCiMjIyMgaG9zdCwgdGFyZ2V0LCBhbmQgc2l0ZSBzcGVjaWZp YyBNYWtlZmlsZSBmcmFncyBjb21lIGluIGhlcmUuClgKWC5TVUZGSVhFUzogLmphdmEgLmNsYXNz IC5vIC5leGUgLmV4cCAuY2hlY2sKWAojIERvICdtYWtlIGphdmFtaXNjLmNoZWNrJyB0byBydW4g anVzdCB0aGUgamF2YW1pc2MuZXhwIHRlc3QuClgKWC5leHAuY2hlY2s6ClgJcm9vdG1lPWBwd2Rg LzsgZXhwb3J0IHJvb3RtZTsgXApYCWNkIC4uIDsgXApYCSQoTUFLRSkganVzdC1jaGVjayBSVU5U RVNURkxBR1M9IiR7UlVOVEVTVEZMQUdTfSAkKi5leHAiIFwKWAkgIEVYUEVDVD0ke0VYUEVDVH0K WApjbGVhbiBtb3N0bHljbGVhbjoKWAktcm0gLWYgKi5vICR7T0JKU30gICouY2xhc3MgKi5leGUg Kn4gY29yZQpYCmRpc3RjbGVhbiBtYWludGFpbmVyLWNsZWFuIHJlYWxjbGVhbjogY2xlYW4KWAkt cm0gLWYgTWFrZWZpbGUgY29uZmlnLnN0YXR1cyBjb25maWcubG9nClgKTWFrZWZpbGU6ICQoc3Jj ZGlyKS9NYWtlZmlsZS5pbiAkKHNyY2RpcikvY29uZmlndXJlLmluClgJJChTSEVMTCkgLi9jb25m aWcuc3RhdHVzIC0tcmVjaGVjawpTSEFSX0VPRgogICRzaGFyX3RvdWNoIC1hbSAwMzA3MTYxNTEw MCAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9NYWtlZmlsZS5pbicgJiYKICBjaG1vZCAwNjY0ICdn ZGIvdGVzdHN1aXRlL2dkYi5qYXZhL01ha2VmaWxlLmluJyB8fAogICRlY2hvICdyZXN0b3JlIG9m JyAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9NYWtlZmlsZS5pbicgJ2ZhaWxlZCcKICBpZiAoIG1k NXN1bSAtLWhlbHAgMj4mMSB8IGdyZXAgJ3NhZ2U6IG1kNXN1bSBcWycgKSA+L2Rldi9udWxsIDI+ JjEgXAogICYmICggbWQ1c3VtIC0tdmVyc2lvbiAyPiYxIHwgZ3JlcCAtdiAndGV4dHV0aWxzIDEu MTInICkgPi9kZXYvbnVsbDsgdGhlbgogICAgbWQ1c3VtIC1jIDw8IFNIQVJfRU9GID4vZGV2L251 bGwgMj4mMSBcCiAgICB8fCAkZWNobyAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9NYWtlZmlsZS5p bjonICdNRDUgY2hlY2sgZmFpbGVkJwo2OTAzY2FiYjFiZmQzNjgwNGZlZDc1YTk5YjBiZTVjYyAg Z2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9NYWtlZmlsZS5pbgpTSEFSX0VPRgogIGVsc2UKICAgIHNo YXJfY291bnQ9ImBMQ19BTEw9IExDX0NUWVBFPSBMQU5HPSB3YyAtYyA8ICdnZGIvdGVzdHN1aXRl L2dkYi5qYXZhL01ha2VmaWxlLmluJ2AiCiAgICB0ZXN0IDYzNSAtZXEgIiRzaGFyX2NvdW50IiB8 fAogICAgJGVjaG8gJ2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvTWFrZWZpbGUuaW46JyAnb3JpZ2lu YWwgc2l6ZScgJzYzNSwnICdjdXJyZW50IHNpemUnICIkc2hhcl9jb3VudCEiCiAgZmkKZmkKIyA9 PT09PT09PT09PT09IGdkYi90ZXN0c3VpdGUvZ2RiLmphdmEvY29uZmlndXJlLmluID09PT09PT09 PT09PT09CmlmIHRlc3QgLWYgJ2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvY29uZmlndXJlLmluJyAm JiB0ZXN0ICIkZmlyc3RfcGFyYW0iICE9IC1jOyB0aGVuCiAgJGVjaG8gJ3ggLScgU0tJUFBJTkcg J2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvY29uZmlndXJlLmluJyAnKGZpbGUgYWxyZWFkeSBleGlz dHMpJwplbHNlCiAgJGVjaG8gJ3ggLScgZXh0cmFjdGluZyAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2 YS9jb25maWd1cmUuaW4nICcodGV4dCknCiAgc2VkICdzL15YLy8nIDw8ICdTSEFSX0VPRicgPiAn Z2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9jb25maWd1cmUuaW4nICYmCmRubCBQcm9jZXNzIHRoaXMg ZmlsZSBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuClgK QUNfUFJFUkVRKDIuNSkKQUNfSU5JVChqYXZhbWlzYy5leHApClgKQ0M9JHtDQy1jY30KQUNfU1VC U1QoQ0MpCkFDX0NPTkZJR19BVVhfRElSKGBjZCAkc3JjZGlyO3B3ZGAvLi4vLi4vLi4pCkFDX0NB Tk9OSUNBTF9TWVNURU0KWApBQ19PVVRQVVQoTWFrZWZpbGUpClNIQVJfRU9GCiAgJHNoYXJfdG91 Y2ggLWFtIDAzMDcxNjI0MTAwICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2NvbmZpZ3VyZS5pbicg JiYKICBjaG1vZCAwNjY0ICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2NvbmZpZ3VyZS5pbicgfHwK ICAkZWNobyAncmVzdG9yZSBvZicgJ2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvY29uZmlndXJlLmlu JyAnZmFpbGVkJwogIGlmICggbWQ1c3VtIC0taGVscCAyPiYxIHwgZ3JlcCAnc2FnZTogbWQ1c3Vt IFxbJyApID4vZGV2L251bGwgMj4mMSBcCiAgJiYgKCBtZDVzdW0gLS12ZXJzaW9uIDI+JjEgfCBn cmVwIC12ICd0ZXh0dXRpbHMgMS4xMicgKSA+L2Rldi9udWxsOyB0aGVuCiAgICBtZDVzdW0gLWMg PDwgU0hBUl9FT0YgPi9kZXYvbnVsbCAyPiYxIFwKICAgIHx8ICRlY2hvICdnZGIvdGVzdHN1aXRl L2dkYi5qYXZhL2NvbmZpZ3VyZS5pbjonICdNRDUgY2hlY2sgZmFpbGVkJwozMzc4OTdhMDFjZDdl ZTNhYjVlM2QxNzQxZjE3MjM4NyAgZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9jb25maWd1cmUuaW4K U0hBUl9FT0YKICBlbHNlCiAgICBzaGFyX2NvdW50PSJgTENfQUxMPSBMQ19DVFlQRT0gTEFORz0g d2MgLWMgPCAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9jb25maWd1cmUuaW4nYCIKICAgIHRlc3Qg MjIyIC1lcSAiJHNoYXJfY291bnQiIHx8CiAgICAkZWNobyAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2 YS9jb25maWd1cmUuaW46JyAnb3JpZ2luYWwgc2l6ZScgJzIyMiwnICdjdXJyZW50IHNpemUnICIk c2hhcl9jb3VudCEiCiAgZmkKZmkKIyA9PT09PT09PT09PT09IGdkYi90ZXN0c3VpdGUvZ2RiLmph dmEvam1pc2MuZXhwID09PT09PT09PT09PT09CmlmIHRlc3QgLWYgJ2dkYi90ZXN0c3VpdGUvZ2Ri LmphdmEvam1pc2MuZXhwJyAmJiB0ZXN0ICIkZmlyc3RfcGFyYW0iICE9IC1jOyB0aGVuCiAgJGVj aG8gJ3ggLScgU0tJUFBJTkcgJ2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam1pc2MuZXhwJyAnKGZp bGUgYWxyZWFkeSBleGlzdHMpJwplbHNlCiAgJGVjaG8gJ3ggLScgZXh0cmFjdGluZyAnZ2RiL3Rl c3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5leHAnICcodGV4dCknCiAgc2VkICdzL15YLy8nIDw8ICdT SEFSX0VPRicgPiAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5leHAnICYmCiMgQ29weXJp Z2h0IChDKSAyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpYCiMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KIyAKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIAojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9u LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMw NywgVVNBLiAgClgKIyBQbGVhc2UgZW1haWwgYW55IGJ1Z3MsIGNvbW1lbnRzLCBhbmQvb3IgYWRk aXRpb25zIHRvIHRoaXMgZmlsZSB0bzoKIyBidWctZ2RiQHByZXAuYWkubWl0LmVkdQpYCiMgVGhp cyBmaWxlIHdhcyB3cml0dGVuIGJ5IEFudGhvbnkgR3JlZW4uIChncmVlbkByZWRoYXQuY29tKQoj ClgKaWYgJHRyYWNlbGV2ZWwgdGhlbiB7ClgJc3RyYWNlICR0cmFjZWxldmVsCn0KWApsb2FkX2xp YiAiamF2YS5leHAiClgKc2V0IHRlc3RmaWxlICJqbWlzYyIKc2V0IHNyY2ZpbGUgJHtzcmNkaXJ9 LyRzdWJkaXIvJHt0ZXN0ZmlsZX0uamF2YQpzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9 LyR7dGVzdGZpbGV9CmlmICB7IFtjb21waWxlX2phdmFfZnJvbV9zb3VyY2UgJHtzcmNmaWxlfSAk e2JpbmZpbGV9ICItZyJdICE9ICIiIH0gewpYICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxl ICR7c3JjZmlsZX0iClggICAgcmV0dXJuIC0xCn0KWAojIFNldCB0aGUgY3VycmVudCBsYW5ndWFn ZSB0byBqYXZhLiAgVGhpcyBjb3VudHMgYXMgYSB0ZXN0LiAgSWYgaXQKIyBmYWlscywgdGhlbiB3 ZSBza2lwIHRoZSBvdGhlciB0ZXN0cy4KWApwcm9jIHNldF9sYW5nX2phdmEge30gewpYICAgIGds b2JhbCBnZGJfcHJvbXB0ClggICAgZ2xvYmFsIGJpbmZpbGUgb2JqZGlyIHN1YmRpcgpYClggICAg dmVyYm9zZSAibG9hZGluZyBmaWxlICckYmluZmlsZSciClggICAgZ2RiX2xvYWQgJGJpbmZpbGUK WApYICAgIHNlbmRfZ2RiICJzZXQgbGFuZ3VhZ2UgamF2YVxuIgpYICAgIGdkYl9leHBlY3QgewpY CS1yZSAiLiokZ2RiX3Byb21wdCAkIiB7fQpYCXRpbWVvdXQgeyBmYWlsICJzZXQgbGFuZ3VhZ2Ug amF2YSAodGltZW91dCkiIDsgcmV0dXJuIDAgfQpYICAgIH0KWApYICAgIHJldHVybiBbZ2RiX3Rl c3QgInNob3cgbGFuZ3VhZ2UiICIuKiBzb3VyY2UgbGFuZ3VhZ2UgaXMgXCJqYXZhXCIuKiIgXApY CSJzZXQgbGFuZ3VhZ2UgdG8gXCJqYXZhXCIiXQp9ClgKc2V0IHBybXNfaWQgMApzZXQgYnVnX2lk IDAKWAojIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuClgKZ2RiX2V4aXQKZ2RiX3N0YXJ0CmdkYl9y ZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgpYCmdkYl90ZXN0ICJzZXQgcHJpbnQgc2V2 ZW5iaXQtc3RyaW5ncyIgIi4qIgpYCmlmICFbc2V0X2xhbmdfamF2YV0gdGhlbiB7ClggICAgcnVu dG8gJHt0ZXN0ZmlsZX0ubWFpbgpYClggICAgc2VuZF9nZGIgInB0eXBlIGptaXNjXG4iICAgClgg ICAgZ2RiX2V4cGVjdCB7ICAgClgJLXJlICJ0eXBlID0gY2xhc3Mgam1pc2MgIGV4dGVuZHMgamF2 YS5sYW5nLk9iamVjdCBce1xbXHJcblwgXHRdK3ZvaWQgbWFpblxcKGphdmFcLmxhbmdcLlN0cmlu Z1xcXFtdXFwpO1xbXHJcblwgXHRdK3ZvaWQgPGluaXQ+XFwodm9pZFxcKTtcW1xyXG5cIFx0XStc fVxbXHJcblwgXHRdKyRnZGJfcHJvbXB0ICQiICAgICAgICAgICAgICAgeyBwYXNzICJwdHlwZSBq bWlzYyIgfQpYCS1yZSAiLiokZ2RiX3Byb21wdCAkIiAgICAgICAgICAgICB7IGZhaWwgInB0eXBl IGptaXNjIiB9ClgJdGltZW91dCB7IGZhaWwgInB0eXBlIGptaXNjICh0aW1lb3V0KSIgOyByZXR1 cm4gfQpYICAgIH0KWApYICAgIHNlbmRfZ2RiICJwIGFyZ3NcbiIKWCAgICBnZGJfZXhwZWN0IHsg ICAKWAktcmUgIlxcXCQxID0gamF2YVwubGFuZ1wuU3RyaW5nXFxcW11AXFthLWYwLTldK1xbXHJc blwgXHRdKyRnZGJfcHJvbXB0ICQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsgcGFzcyAicCBhcmdzIiB9ClgJLXJlICIuKiRnZGJfcHJvbXB0ICQiICAgICAgICAgICAg IHsgZmFpbCAicCBhcmdzIiB9ClgJdGltZW91dCB7IGZhaWwgInAgYXJncyAodGltZW91dCkiIDsg cmV0dXJuIH0KWCAgICB9ClgKWCAgICBzZW5kX2dkYiAicCAqYXJnc1xuIgpYICAgIGdkYl9leHBl Y3QgeyAgIApYCS1yZSAiXFxcJDIgPSBce2xlbmd0aDogMFx9XFtcclxuXCBcdF0rJGdkYl9wcm9t cHQgJCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeyBwYXNzICJwICphcmdzIiB9ClgJLXJlICIuKiRnZGJfcHJvbXB0ICQiICAgICAg ICAgICAgIHsgZmFpbCAicCAqYXJncyIgfQpYCXRpbWVvdXQgeyBmYWlsICJwICphcmdzICh0aW1l b3V0KSIgOyByZXR1cm4gfQpYICAgIH0KfQpTSEFSX0VPRgogICRzaGFyX3RvdWNoIC1hbSAwMzA4 MDE1MzEwMCAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5leHAnICYmCiAgY2htb2QgMDY2 NCAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5leHAnIHx8CiAgJGVjaG8gJ3Jlc3RvcmUg b2YnICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2ptaXNjLmV4cCcgJ2ZhaWxlZCcKICBpZiAoIG1k NXN1bSAtLWhlbHAgMj4mMSB8IGdyZXAgJ3NhZ2U6IG1kNXN1bSBcWycgKSA+L2Rldi9udWxsIDI+ JjEgXAogICYmICggbWQ1c3VtIC0tdmVyc2lvbiAyPiYxIHwgZ3JlcCAtdiAndGV4dHV0aWxzIDEu MTInICkgPi9kZXYvbnVsbDsgdGhlbgogICAgbWQ1c3VtIC1jIDw8IFNIQVJfRU9GID4vZGV2L251 bGwgMj4mMSBcCiAgICB8fCAkZWNobyAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5leHA6 JyAnTUQ1IGNoZWNrIGZhaWxlZCcKMjdhN2E2MzRkZjM1ZWNmMTNmYTYxNjFmYjFiMDc2YTQgIGdk Yi90ZXN0c3VpdGUvZ2RiLmphdmEvam1pc2MuZXhwClNIQVJfRU9GCiAgZWxzZQogICAgc2hhcl9j b3VudD0iYExDX0FMTD0gTENfQ1RZUEU9IExBTkc9IHdjIC1jIDwgJ2dkYi90ZXN0c3VpdGUvZ2Ri LmphdmEvam1pc2MuZXhwJ2AiCiAgICB0ZXN0IDI4ODkgLWVxICIkc2hhcl9jb3VudCIgfHwKICAg ICRlY2hvICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2ptaXNjLmV4cDonICdvcmlnaW5hbCBzaXpl JyAnMjg4OSwnICdjdXJyZW50IHNpemUnICIkc2hhcl9jb3VudCEiCiAgZmkKZmkKIyA9PT09PT09 PT09PT09IGdkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam1pc2MuamF2YSA9PT09PT09PT09PT09PQpp ZiB0ZXN0IC1mICdnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2ptaXNjLmphdmEnICYmIHRlc3QgIiRm aXJzdF9wYXJhbSIgIT0gLWM7IHRoZW4KICAkZWNobyAneCAtJyBTS0lQUElORyAnZ2RiL3Rlc3Rz dWl0ZS9nZGIuamF2YS9qbWlzYy5qYXZhJyAnKGZpbGUgYWxyZWFkeSBleGlzdHMpJwplbHNlCiAg JGVjaG8gJ3ggLScgZXh0cmFjdGluZyAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5qYXZh JyAnKHRleHQpJwogIHNlZCAncy9eWC8vJyA8PCAnU0hBUl9FT0YnID4gJ2dkYi90ZXN0c3VpdGUv Z2RiLmphdmEvam1pc2MuamF2YScgJiYKcHVibGljIGNsYXNzIGptaXNjCnsKWCAgcHVibGljIHN0 YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpClggIHsKWCAgICByZXR1cm47ClggIH0KfQpT SEFSX0VPRgogICRzaGFyX3RvdWNoIC1hbSAwMzA3MTcxMDEwMCAnZ2RiL3Rlc3RzdWl0ZS9nZGIu amF2YS9qbWlzYy5qYXZhJyAmJgogIGNobW9kIDA2NjQgJ2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEv am1pc2MuamF2YScgfHwKICAkZWNobyAncmVzdG9yZSBvZicgJ2dkYi90ZXN0c3VpdGUvZ2RiLmph dmEvam1pc2MuamF2YScgJ2ZhaWxlZCcKICBpZiAoIG1kNXN1bSAtLWhlbHAgMj4mMSB8IGdyZXAg J3NhZ2U6IG1kNXN1bSBcWycgKSA+L2Rldi9udWxsIDI+JjEgXAogICYmICggbWQ1c3VtIC0tdmVy c2lvbiAyPiYxIHwgZ3JlcCAtdiAndGV4dHV0aWxzIDEuMTInICkgPi9kZXYvbnVsbDsgdGhlbgog ICAgbWQ1c3VtIC1jIDw8IFNIQVJfRU9GID4vZGV2L251bGwgMj4mMSBcCiAgICB8fCAkZWNobyAn Z2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5qYXZhOicgJ01ENSBjaGVjayBmYWlsZWQnCmUz YTY4MGNmZGU2NjEyOWVkOTYwN2FkN2MyMGZkNmEwICBnZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pt aXNjLmphdmEKU0hBUl9FT0YKICBlbHNlCiAgICBzaGFyX2NvdW50PSJgTENfQUxMPSBMQ19DVFlQ RT0gTEFORz0gd2MgLWMgPCAnZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5qYXZhJ2AiCiAg ICB0ZXN0IDg1IC1lcSAiJHNoYXJfY291bnQiIHx8CiAgICAkZWNobyAnZ2RiL3Rlc3RzdWl0ZS9n ZGIuamF2YS9qbWlzYy5qYXZhOicgJ29yaWdpbmFsIHNpemUnICc4NSwnICdjdXJyZW50IHNpemUn ICIkc2hhcl9jb3VudCEiCiAgZmkKZmkKIyA9PT09PT09PT09PT09IGdkYi90ZXN0c3VpdGUvbGli L2phdmEuZXhwID09PT09PT09PT09PT09CmlmIHRlc3QgISAtZCAnZ2RiL3Rlc3RzdWl0ZS9saWIn OyB0aGVuCiAgJGVjaG8gJ3ggLScgJ2NyZWF0aW5nIGRpcmVjdG9yeScgJ2dkYi90ZXN0c3VpdGUv bGliJwogIG1rZGlyICdnZGIvdGVzdHN1aXRlL2xpYicKZmkKaWYgdGVzdCAtZiAnZ2RiL3Rlc3Rz dWl0ZS9saWIvamF2YS5leHAnICYmIHRlc3QgIiRmaXJzdF9wYXJhbSIgIT0gLWM7IHRoZW4KICAk ZWNobyAneCAtJyBTS0lQUElORyAnZ2RiL3Rlc3RzdWl0ZS9saWIvamF2YS5leHAnICcoZmlsZSBh bHJlYWR5IGV4aXN0cyknCmVsc2UKICAkZWNobyAneCAtJyBleHRyYWN0aW5nICdnZGIvdGVzdHN1 aXRlL2xpYi9qYXZhLmV4cCcgJyh0ZXh0KScKICBzZWQgJ3MvXlgvLycgPDwgJ1NIQVJfRU9GJyA+ ICdnZGIvdGVzdHN1aXRlL2xpYi9qYXZhLmV4cCcgJiYKIyBDb3B5cmlnaHQgKEMpIDE5OTgsIDE5 OTkgUmVkIEhhdCwgSW5jLgpYCmxvYWRfbGliICJsaWJnbG9zcy5leHAiClgKIyBHQ0pfVU5ERVJf VEVTVCBpcyB0aGUgY29tcGlsZXIgdW5kZXIgdGVzdC4KWApnbG9iYWwgdG1wZGlyClgKaWYgIVtp bmZvIGV4aXN0cyB0bXBkaXJdIHsKWCAgICBzZXQgdG1wZGlyICIvdG1wIgp9ClgKc2V0IGphdmFf aW5pdGlhbGl6ZWQgMApYCiMKIyBCdWlsZCB0aGUgc3RhdHVzIHdyYXBwZXIgbGlicmFyeSBhcyBu ZWVkZWQuCiMKcHJvYyBqYXZhX2luaXQgeyBhcmdzIH0gewpYICAgIGdsb2JhbCB3cmFwcGVyX2Zp bGU7ClggICAgZ2xvYmFsIHdyYXBfY29tcGlsZV9mbGFnczsKWCAgICBnbG9iYWwgamF2YV9pbml0 aWFsaXplZApYICAgIGdsb2JhbCBHQ0pfVU5ERVJfVEVTVApYICAgIGdsb2JhbCBUT09MX0VYRUNV VEFCTEUKWCAgICBnbG9iYWwgZW52ClgKWCAgICBpZiB7ICRqYXZhX2luaXRpYWxpemVkID09IDEg fSB7IHJldHVybjsgfQpYClggICAgaWYgIVtpbmZvIGV4aXN0cyBHQ0pfVU5ERVJfVEVTVF0gewpY CWlmIFtpbmZvIGV4aXN0cyBUT09MX0VYRUNVVEFCTEVdIHsKWAkgICAgc2V0IEdDSl9VTkRFUl9U RVNUICRUT09MX0VYRUNVVEFCTEU7ClgJfSBlbHNlIHsKWAkgICAgaWYgW2luZm8gZXhpc3RzIGVu dihHQ0opXSB7ClgJCXNldCBHQ0pfVU5ERVJfVEVTVCAkZW52KEdDSikKWAkgICAgfSBlbHNlIHsK WAkJZ2xvYmFsIHRvb2xfcm9vdF9kaXIKWAkJClgJCWlmICFbaXNfcmVtb3RlIGhvc3RdIHsKWAkJ ICAgIHNldCBmaWxlIFtsb29rZm9yX2ZpbGUgJHRvb2xfcm9vdF9kaXIgZ2NqXTsKWAkJICAgIGlm IHsgJGZpbGUgPT0gIiIgfSB7ClgJCQlzZXQgZmlsZSBbbG9va2Zvcl9maWxlICR0b29sX3Jvb3Rf ZGlyIGdjYy9nY2pdOwpYCQkgICAgfQpYCQkgICAgaWYgeyAkZmlsZSAhPSAiIiB9IHsKWAkJCXNl dCBDQyAiJGZpbGUgLUJbZmlsZSBkaXJuYW1lICRmaWxlXS8gLS1zcGVjcz0kdG9vbF9yb290X2Rp ci8kdGFyZ2V0X2FsaWFzL2xpYmphdmEvbGliZ2NqLXRlc3Quc3BlYyI7ClgJCSAgICB9IGVsc2Ug ewpYCQkJc2V0IENDIFt0cmFuc2Zvcm0gZ2NqXTsKWAkJICAgIH0KWAkJfSBlbHNlIHsKWAkJICAg IHNldCBDQyBbdHJhbnNmb3JtIGdjal0KWAkJfQpYCQlzZXQgR0NKX1VOREVSX1RFU1QgJENDClgJ ICAgIH0KWAl9ClggICAgfQpYClggICAgc2V0IHdyYXBwZXJfZmlsZSAiIjsKWCAgICBzZXQgd3Jh cF9jb21waWxlX2ZsYWdzICIiOwpYICAgIGlmIFt0YXJnZXRfaW5mbyBleGlzdHMgbmVlZHNfc3Rh dHVzX3dyYXBwZXJdIHsKWAlzZXQgcmVzdWx0IFtidWlsZF93cmFwcGVyICJ0ZXN0Z2x1ZS5vIl07 ClgJaWYgeyAkcmVzdWx0ICE9ICIiIH0gewpYCSAgICBzZXQgd3JhcHBlcl9maWxlIFtsaW5kZXgg JHJlc3VsdCAwXTsKWAkgICAgc2V0IHdyYXBfY29tcGlsZV9mbGFncyBbbGluZGV4ICRyZXN1bHQg MV07ClgJfSBlbHNlIHsKWAkgICAgd2FybmluZyAiU3RhdHVzIHdyYXBwZXIgZmFpbGVkIHRvIGJ1 aWxkLiIKWAl9ClggICAgfQpYClggICAgc2V0IGphdmFfaW5pdGlhbGl6ZWQgMQp9ClgKIwojIFJ1 biB0aGUgdGVzdCBzcGVjaWZpZWQgYnkgc3JjZmlsZSBhbmQgcmVzdWx0ZmlsZS4gY29tcGlsZV9h cmdzIGFuZAojIGV4ZWNfYXJncyBhcmUgb3B0aW9ucyB0ZWxsaW5nIHRoaXMgcHJvYyBob3cgdG8g d29yay4KIwpwcm9jIGNvbXBpbGVfamF2YV9mcm9tX3NvdXJjZSB7IHNyY2ZpbGUgYmluZmlsZSBj b21waWxlX2FyZ3MgfSB7ClggICAgZ2xvYmFsIEdDSl9VTkRFUl9URVNUClggICAgZ2xvYmFsIHJ1 bnRlc3RzClggICAgZ2xvYmFsIGphdmFfaW5pdGlhbGl6ZWQKWApYICAgIGlmIHsgJGphdmFfaW5p dGlhbGl6ZWQgIT0gMSB9IHsgamF2YV9pbml0IH0KWApYICAgIHNldCBlcnJuYW1lIFtmaWxlIHJv b3RuYW1lIFtmaWxlIHRhaWwgJHNyY2ZpbGVdXQpYICAgIGlmIHshIFtydW50ZXN0X2ZpbGVfcCAk cnVudGVzdHMgJGVycm5hbWVdfSB7ClggICAgICAgIHJldHVybgpYICAgIH0KWApYICAgIHNldCBh cmdzICJjb21waWxlcj0kR0NKX1VOREVSX1RFU1QiClggICAgbGFwcGVuZCBhcmdzICJhZGRpdGlv bmFsX2ZsYWdzPS0tbWFpbj1bZmlsZSByb290bmFtZSBbZmlsZSB0YWlsICRzcmNmaWxlXV0iClgg ICAgaWYgeyAkY29tcGlsZV9hcmdzICE9ICIiIH0gewpYCWxhcHBlbmQgYXJncyAiYWRkaXRpb25h bF9mbGFncz0kY29tcGlsZV9hcmdzIgpYICAgIH0KWApYICAgIGlmIHsgJGNvbXBpbGVfYXJncyAh PSAiIiB9IHsKWAlzZXQgZXJybmFtZSAiJGVycm5hbWUgJGNvbXBpbGVfYXJncyIKWCAgICB9ClgK WCAgICBzZXQgeCBbdGFyZ2V0X2NvbXBpbGUgJHNyY2ZpbGUgJHtiaW5maWxlfSAke2JpbmZpbGV9 ICRhcmdzXQpYICAgIGlmIHsgJHggIT0gIiIgfSB7ClgJdmVyYm9zZSAidGFyZ2V0X2NvbXBpbGUg ZmFpbGVkOiAkeCIgMgpYCXJldHVybiAiJGVycm5hbWUgY29tcGlsYXRpb24gZnJvbSBzb3VyY2Ui OwpYICAgIH0KfQpYCiMgTG9jYWwgVmFyaWFibGVzOgojIHRjbC1pbmRlbnQtbGV2ZWw6NAojIEVu ZDoKU0hBUl9FT0YKICAkc2hhcl90b3VjaCAtYW0gMDMwODAxMzgxMDAgJ2dkYi90ZXN0c3VpdGUv bGliL2phdmEuZXhwJyAmJgogIGNobW9kIDA2NjQgJ2dkYi90ZXN0c3VpdGUvbGliL2phdmEuZXhw JyB8fAogICRlY2hvICdyZXN0b3JlIG9mJyAnZ2RiL3Rlc3RzdWl0ZS9saWIvamF2YS5leHAnICdm YWlsZWQnCiAgaWYgKCBtZDVzdW0gLS1oZWxwIDI+JjEgfCBncmVwICdzYWdlOiBtZDVzdW0gXFsn ICkgPi9kZXYvbnVsbCAyPiYxIFwKICAmJiAoIG1kNXN1bSAtLXZlcnNpb24gMj4mMSB8IGdyZXAg LXYgJ3RleHR1dGlscyAxLjEyJyApID4vZGV2L251bGw7IHRoZW4KICAgIG1kNXN1bSAtYyA8PCBT SEFSX0VPRiA+L2Rldi9udWxsIDI+JjEgXAogICAgfHwgJGVjaG8gJ2dkYi90ZXN0c3VpdGUvbGli L2phdmEuZXhwOicgJ01ENSBjaGVjayBmYWlsZWQnCjdhOTI1OTc5NDY1ZjFkYmFlZDI2ZTQ3OGQ2 MzY0ZGMyICBnZGIvdGVzdHN1aXRlL2xpYi9qYXZhLmV4cApTSEFSX0VPRgogIGVsc2UKICAgIHNo YXJfY291bnQ9ImBMQ19BTEw9IExDX0NUWVBFPSBMQU5HPSB3YyAtYyA8ICdnZGIvdGVzdHN1aXRl L2xpYi9qYXZhLmV4cCdgIgogICAgdGVzdCAyNDUxIC1lcSAiJHNoYXJfY291bnQiIHx8CiAgICAk ZWNobyAnZ2RiL3Rlc3RzdWl0ZS9saWIvamF2YS5leHA6JyAnb3JpZ2luYWwgc2l6ZScgJzI0NTEs JyAnY3VycmVudCBzaXplJyAiJHNoYXJfY291bnQhIgogIGZpCmZpCnJtIC1mciBfc2gyMjIzOQpl eGl0IDAKCg==