www.delorie.com/archives/browse.cgi | search |
Mailing-List: | contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm |
List-Subscribe: | <mailto:cygwin-subscribe AT sources DOT redhat DOT com> |
List-Archive: | <http://sources.redhat.com/ml/cygwin/> |
List-Post: | <mailto:cygwin AT sources DOT redhat DOT com> |
List-Help: | <mailto:cygwin-help AT sources DOT redhat DOT com>, <http://sources.redhat.com/ml/#faqs> |
Sender: | cygwin-owner AT sources DOT redhat DOT com |
Delivered-To: | mailing list cygwin AT sources DOT redhat DOT com |
From: | "m. adnan ali" <maali AT pnr DOT ca> |
X-Sender: | maali AT conan DOT eecg DOT toronto DOT edu |
To: | cygwin AT cygwin DOT com |
Subject: | gcc internal compiler error sig11 |
Message-ID: | <Pine.LNX.4.21.0102040558580.31748-200000@conan.eecg.toronto.edu> |
MIME-Version: | 1.0 |
Date: | Sun, 4 Feb 2001 06:01:52 -0500 |
--1686161418-1322450431-981284596=:31748 Content-Type: TEXT/PLAIN; charset=US-ASCII hi, version info C:\home\maali\dist\dist-basics\mbasic>gcc -v Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/2.95.2-6/specs gcc version 2.95.2-6 19991024 (cygwin experimental) if i run $ gcc -fsyntax-only basic.c then i get ... ... basic.c:1177: warning: assignment from incompatible pointer type 0 [main] cc1 412519 handle_exceptions: Exception: STATUS_ACCESS_VIOLATION 932 [main] cc1 412519 stackdump: Dumping stack trace to CC1.EXE.stackdump GCC: Internal compiler error: program cc1 got fatal signal 11 and i get this exact error every time (i don't think its a hardware issue). the basic.c file is attached. thanks for your consideration adnan ali. --1686161418-1322450431-981284596=:31748 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="BASIC.C" Content-Transfer-Encoding: BASE64 Content-ID: <Pine DOT LNX DOT 4 DOT 21 DOT 0102040603160 DOT 31748 AT conan DOT eecg DOT toronto DOT edu> Content-Description: Content-Disposition: attachment; filename="BASIC.C" LyoNDQogKiBNSUNSTy1CQVNJQzoNDQogKg0NCiAqIFRoaXMgaXMgYSBzbWFs bCBJTlRFR0VSIEJBU0lDIGludGVycHJldGVyIHRoYXQgSSB3cm90ZSBhIG51 bWJlcg0NCiAqIG9mIHllYXJzIGFnbywgYW5kIHN1YnNlcXVlbnRseSBwb3J0 ZWQgdG8gTUlDUk8tQy4gV2hpbGUgbm90IGEgZ3JlYXQNDQogKiBleGFtcGxl IG9mIGNvZGluZyBzdHlsZSAoaXQgd2FzIGEgcXVpY2sgYW5kIGRpcnR5IGhh Y2sgam9iKSwgSXQgaXMNDQogKiBxdWl0ZSBpbnN0cnVjdGl2ZSwgYXMgYSBz aW1wbGUgYnV0IGZhaXJseSBjb21wbGV0ZSBpbnRlcnByZXRlci4NDQogKg0N CiAqIFZhcmlhYmxlczoNDQogKgkyNjAgTnVtZXJpYwkgIHZhcmlhYmxlcwk6 CUEwLUE5IC4uLiBaMC1aOQ0NCiAqCTI2MCBDaGFyYWN0ZXIgdmFyaWFibGVz CToJQTAkLUE5JCAuLi4gWjAkLVo5JA0NCiAqCTI2MCBOdW1lcmljIGFycmF5 cwkJOglBMCgpLUE5KCkgLi4uIFowKCktWjkoKQ0NCiAqDQ0KICoJRm9yIGNv bnZlbmllbmNlIHRoZSAnMCcgdmFyaWFibGVzIGNhbiBiZSByZWZlcmVuY2Vk IGJ5IGxldHRlcg0NCiAqCW9ubHkuIElFOiBBIGlzIGVxdWl2YWxlbnQgdG8g QTAgLi4uIFokIGlzIGVxdWl2YWxlbnQgdG8gWjAkDQ0KICoNDQogKiBTdGF0 ZW1lbnRzOg0NCiAqCUJFRVAgZnJlcSxtcwkJCS0gR2VuZXJhdGUgYSBCRUVQ IG9uIHRoZSBQQyBzcGVha2VyDQ0KICoJQ0xFQVIJCQkJCS0gRXJhc2UgdmFy aWFibGVzIG9ubHkNDQogKglDTE9TRSNuCQkJCQktIENsb3NlIGZpbGUgKDAt OSkgb3BlbmVkIHdpdGggT1BFTg0NCiAqCURBVEEJCQkJCS0gRW50ZXIgImlu bGluZSIgZGF0YSBzdGF0ZW1lbnRzDQ0KICoJREVMQVkgbXMJCQkJLSBTdG9w cyBmb3IgdGhlIGluZGljYXRlZCB0aW1lDQ0KICoJRElNIHZhcihzaXplKVss IC4uLiBdCS0gRGltZW5zaW9uIGFuIGFycmF5DQ0KICoJRE9TICJjb21hbmQi CQkJLSBFeGVjdXRlIGEgRE9TIHByb2dyYW0NDQogKglFTkQJCQkJCQktIFRl cm1pbmF0ZSBwcm9ncmFtIHdpdGggbm8gbWVzc2FnZQ0NCiAqCUVYSVQJCQkJ CS0gVGVybWluYXRlIE1JQ1JPLUJBU0lDDQ0KICoJRk9SIHY9aW5pdCBUTyBs aW1pdCBbU1RFUCBpbmNyZW1lbnRdIC0gUGVyZm9ybSBhIGNvdW50ZWQgbG9v cA0NCiAqCUdPU1VCIGxpbmUJCQkJLSBDYWxsIGEgc3Vicm91dGluZQ0NCiAq CUdPVE8gIGxpbmUJCQkJLSBKdW1wIHRvIGxpbmUNDQogKglJRiB0ZXN0IFRI RU4gbGluZQkJLSBDb25kaXRpb25hbCBnb3RvDQ0KICoJSUYgdGVzdCBUSEVO IHN0YXRlbWVudAktIENvbmRpdGlvbmFsIHN0YXRlbWVudCAobmV4dCBzdGF0 ZW1lbnQgb25seSkNDQogKglJTlBVVCB2YXIJCQkJLSBHZXQgdmFsdWUgZm9y IHZhcmlhYmxlDQ0KICoJSU5QVVQgInByb21wdCIsdmFyCQktIEdldCB2YWx1 ZSBvZiB2YXJpYWJsZSB3aXRoIHByb21wdA0NCiAqCQlwcm9tcHQgbXVzdCBi ZSBhIGNvbnN0YW50IHN0cmluZywgaG93ZXZlciB5b3UgY2FuIHVzZSBhIGNo YXIgdmFyaWFibGUNDQogKgkJaW4gcHJvbXB0IGJ5IGNvbmNhdGluYXRpbmcg aXQgdG8gc3VjaCBhIHN0cmluZzogSU5QVVQgIiIrYSQsYiQNDQogKglJTlBV VCNuLHZhcgkJCQktIEdldCB2YWx1ZSBmb3IgdmFyaWFibGUgZnJvbSBmaWxl ICgwLTkpDQ0KICoJTEVUIChkZWZhdWx0KQkJCS0gdmFyaWFibGUgPSBleHBy ZXNzaW9uDQ0KICoJTElGIHRlc3QgVEhFTiBzdGF0ZW1lbnRzLSBMT05HIElG IChhbGwgc3RhdGVtZW50cyB0byBlbmQgb2YgbGluZSkNDQogKglMSVNUIFtz dGFydCxbZW5kXV0JCS0gTGlzdCBwcm9ncmFtIGxpbmVzDQ0KICoJTElTVCNu IC4uLgkJCQktIExpc3QgcHJvZ3JhbSB0byBmaWxlICgwLTkpDQ0KICoJTE9B RCAibmFtZSIJCQkJLSBMb2FkIHByb2dyYW0gZnJvbSBkaXNrIGZpbGUNDQog KgkJV2hlbiBMT0FEIGlzIHVzZWQgd2l0aGluIGEgcHJvZ3JhbSwgZXhlY3V0 aW9uIGNvbnRpbnVlcyB3aXRoIHRoZQ0NCiAqCQlmaXJzdCBsaW5lIG9mIHRo ZSBuZXdseSBsb2FkZWQgcHJvZ3JhbS4gSW4gdGhpcyBjYXNlLCB0aGUgdXNl cg0NCiAqCQl2YXJpYWJsZXMgYXJlIE5PVCBjbGVhcmVkLiBUaGlzIHByb3Zp ZGVzIGEgbWVhbnMgb2YgY2hhaW5pbmcNDQogKgkJdG8gYSBuZXcgcHJvZ3Jh bSwgYW5kIHBhc3NpbmcgaW5mb3JtYXRpb24gdG8gaXQuDQ0KICoJCUFsc28g bm90ZSB0aGF0IExPQUQgbXVzdCBiZSB0aGUgTEFTVCBzdGF0ZW1lbnQgb24g YSBsaW5lLg0NCiAqCU5FVwkJCQkJCS0gRXJhc2UgcHJvZ3JhbSBhbmQgdmFy aWFibGVzDQ0KICoJTkVYVCBbdl0JCQkJLSBFbmQgY291bnRlZCBsb29wDQ0K ICoJT1BFTiNuLCJuYW1lIiwib3B0cyIJLSBPcGVuIGZpbGUgKDAtOSksIG9w dHMgYXJlIHNhbWUgYXMgImZvcGVuKCkiDQ0KICoJT1JERVIgbGluZQkJCQkt IFBvc2l0aW9uIGRhdGEgcmVhZCBwb2ludGVyDQ0KICoJT1VUIHBvcnQsZXhw cgkJCS0gV3JpdGUgdG8gSS9PIHBvcnQNDQogKglQUklOVCBleHByWyxleHBy IC4uLl0JLSBQcmludCB0byBjb25zb2xlDQ0KICoJUFJJTlQjbiwuLi4JCQkJ LSBQcmludCB0byBmaWxlICgwLTkpDQ0KICoJUkVBRCB2YXJbLHZhciAuLi5d CQktIFJlYWQgZGF0YSBmcm9tIHByb2dyYW0gc3RhdGVtZW50cw0NCiAqCQlZ b3UgTVVTVCBpc3N1ZSBhbiAiT1JERVIiIHN0YXRlbWVudCB0YXJnZXRpbmcg YSBsaW5lDQ0KICoJCWNvbnRhaW5pbmcgYSB2YWxpZCBEQVRBIHN0YXRlbWVu dCBiZWZvcmUgdXNpbmcgUkVBRA0NCiAqCVJFVFVSTgkJCQkJLSBSZXR1cm4g ZnJvbSBzdWJyb3V0aW5lDQ0KICoJUkVNCQkJCQkJLSBDb21tZW50Li4uIHJl bWluZGVyIG9mIGxpbmUgaXMgaWdub3JlZA0NCiAqCVJVTiBbbGluZV0JCQkJ LSBSdW4gcHJvZ3JhbQ0NCiAqCVNBVkUgWyJuYW1lIl0JCQktIFNhdmUgcHJv Z3JhbSB0byBkaXNrIGZpbGUNDQogKglTVE9QCQkJCQktIFRlcm1pbmF0ZSBw cm9ncmFtICYgaXNzdWUgbWVzc2FnZQ0NCiAqDQ0KICogT3BlcmF0b3JzOg0N CiAqCSsJCQkJCQktIEFkZGl0aW9uLCBzdHJpbmcgY29uY2F0aW5hdGlvbg0N CiAqCS0JCQkJCQktIFVuYXJ5IG1pbnVzLCBzdWJ0cmFjdGlvbg0NCiAqCSos IC8sICUsCQkJCS0gbXVsdGlwbGljYXRpb24sIGRpdmlzaW9uLCBtb2R1bHVz DQ0KICoJJiwgfCwgXgkJCQkJLSBBTkQsIE9SLCBFeGNsdXNpdmUgT1INDQog Kgk9LCA8PgkJCQkJLSBBc3NpZ24vdGVzdCBlcXVhbCwgdGVzdCBOT1RlcXVh bCAobnVtIG9yIHN0cmluZykNDQogKgk8LCA8PSwgPiwgPj0JCQktIExULCBM RSwgR1QsIEdFIChudW1iZXJzIG9ubHkpDQ0KICoJIQkJCQkJCS0gVW5hcnkg Tk9UDQ0KICoJCVRoZSAidGVzdCIgb3BlcmF0b3JzICg9LCA8PiwgPCwgPD0s ID4sID49KSBjYW4gYmUgdXNlZCBpbiBhbnkNDQogKgkJZXhwcmVzc2lvbiwg YW5kIGV2YWx1YXRlIHRvIDEgb2YgdGhlIHRlc3QgaXMgVFJVRSwgYW5kIDAg aWYgaXQNDQogKgkJaXMgRkFMU0UuIFRoZSBJRiBhbmQgTElGIGNvbW1hbmRz IGFjY2VwdCBhbnkgbm9uLXplcm8gdmFsdWUgdG8NDQogKgkJaW5kaWNhdGUg YSBUUlVFIGNvbmRpdGlvbi4NDQogKg0NCiAqIEZ1bmN0aW9uczoNDQogKglD SFIkKHZhbHVlKQkJCQktIFJldHVybnMgY2hhcmFjdGVyIG9mIHBhc3NlZCB2 YWx1ZQ0NCiAqCVNUUiQodmFsdWUpCQkJCS0gUmV0dXJucyBBU0NJSSBzdHJp bmcgb2YgdmFsdWUncyBkaWdpdHMNDQogKglBU0MoY2hhcikJCQkJLSBSZXR1 cm5zIHZhbHVlIG9mIHBhc3NlZCBjaGFyYWN0ZXINDQogKglOVU0oc3RyaW5n KQkJCQktIENvbnZlcnQgc3RyaW5nIHRvIG51bWJlcg0NCiAqCUFCUyh2YWx1 ZSkJCQkJLSBSZXR1cm5zIGFic29sdXRlIHZhbHVlIG9mIGFyZ3VtZW50DQ0K ICoJUk5EKHZhbHVlKQkJCQktIFJldHVybnMgcmFuZG9tIG51bWJlciBmcm9t IDAgdG8gKHZhbHVlLTEpDQ0KICoJS0VZKCkJCQkJCS0gVGVzdCBmb3Iga2V5 IGZyb20ga2V5Ym9hcmQNDQogKglJTlAocG9ydCkJCQkJLSBSZWFkIGFuIEkv TyBwb3J0DQ0KICoNDQogKiBDb3B5cmlnaHQgMTk4Mi0yMDAwIERhdmUgRHVu ZmllbGQNDQogKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0NCiAqDQ0KICogUGVy bWlzc2lvbiBncmFudGVkIGZvciBwZXJzb25hbCAobm9uLWNvbW1lcmNpYWwp IHVzZSBvbmx5Lg0NCiAqDQ0KICogQ29tcGlsZSBjb21tYW5kOiBjYyBiYXNp YyAtZm9wDQ0KICovDQ0KI2luY2x1ZGUgPHN0ZGlvLmg+DQ0KI2luY2x1ZGUg PHNldGptcC5oPg0NCg0NCi8qIEZpeGVkIHBhcmFtZXRlcnMgKi8NDQojZGVm aW5lIEJVRkZFUl9TSVpFIDEwMAkJLyogaW5wdXQgYnVmZmVyIHNpemUgKi8N DQojZGVmaW5lIE5VTV9WQVIgCTI2MAkJLyogbnVtYmVyIG9mIHZhcmlhYmxl cyAqLw0NCiNkZWZpbmUgU0FfU0laRSAJMTAwCQkvKiBzdHJpbmcgYWNjdW11 bGF0b3Igc2l6ZSAqLw0NCg0NCi8qIENvbnRyb2wgc3RhY2sgY29uc3RhbnQg aWRlbnRpZmllcnMgKi8NDQojZGVmaW5lIF9GT1IJCTEwMDAJLyogaW5kaWNh dGUgRk9SIHN0YXRlbWVudCAqLw0NCiNkZWZpbmUgX0dPU1VCCQlfRk9SKzEJ LyogaW5kaWNhdGUgR09TVUIgc3RhdGVtZW50ICovDQ0KDQ0KLyogUHJpbWFy eSBrZXl3b3JkcyAqLw0NCiNkZWZpbmUJTEVUCQkxDQ0KI2RlZmluZQlFWElU CTINDQojZGVmaW5lCUxJU1QJMw0NCiNkZWZpbmUJTkVXCQk0DQ0KI2RlZmlu ZQlSVU4JCTUNDQojZGVmaW5lCUNMRUFSCTYNDQojZGVmaW5lCUdPU1VCCTcN DQojZGVmaW5lCUdPVE8JOA0NCiNkZWZpbmUJUkVUVVJOCTkNDQojZGVmaW5l CVBSSU5UCTEwDQ0KI2RlZmluZQlGT1IJCTExDQ0KI2RlZmluZQlORVhUCTEy DQ0KI2RlZmluZQlJRgkJMTMNDQojZGVmaW5lCUxJRgkJMTQNDQojZGVmaW5l CVJFTQkJMTUNDQojZGVmaW5lCVNUT1AJMTYNDQojZGVmaW5lCUVORAkJMTcN DQojZGVmaW5lCUlOUFVUCTE4DQ0KI2RlZmluZQlPUEVOCTE5DQ0KI2RlZmlu ZQlDTE9TRQkyMA0NCiNkZWZpbmUJRElNCQkyMQ0NCiNkZWZpbmUJT1JERVIJ MjINDQojZGVmaW5lCVJFQUQJMjMNDQojZGVmaW5lCURBVEEJMjQNDQojZGVm aW5lCVNBVkUJMjUNDQojZGVmaW5lCUxPQUQJMjYNDQojZGVmaW5lCURFTEFZ CTI3DQ0KI2RlZmluZQlCRUVQCTI4DQ0KI2RlZmluZQlET1MJCTI5DQ0KI2Rl ZmluZQlPVVQJCTMwDQ0KDQ0KLyogU2Vjb25kYXJ5IGtleXdvcmRzICovDQ0K I2RlZmluZQlUTwkJMzEJLyogQWxzbyB1c2VkIGFzIG1hcmtlciAqLw0NCiNk ZWZpbmUJU1RFUAkzMg0NCiNkZWZpbmUJVEhFTgkzMw0NCg0NCi8qIE9wZXJh dG9ycyBhbmQgZnVuY3Rpb25zICovDQ0KI2RlZmluZQlBREQJCTM0CS8qIEFs c28gdXNlZCBhcyBtYXJrZXIgKi8NDQojZGVmaW5lCVNVQgkJMzUNDQojZGVm aW5lCU1VTAkJMzYNDQojZGVmaW5lCURJVgkJMzcNDQojZGVmaW5lCU1PRAkJ MzgNDQojZGVmaW5lCUFORAkJMzkNDQojZGVmaW5lCU9SCQk0MA0NCiNkZWZp bmUJWE9SCQk0MQ0NCiNkZWZpbmUJRVEJCTQyDQ0KI2RlZmluZQlORQkJNDMN DQojZGVmaW5lCUxFCQk0NA0NCiNkZWZpbmUJTFQJCTQ1DQ0KI2RlZmluZQlH RQkJNDYNDQojZGVmaW5lCUdUCQk0Nw0NCiNkZWZpbmUJQ0hSCQk0OA0NCiNk ZWZpbmUJU1RSCQk0OQ0NCiNkZWZpbmUJQVNDCQk1MA0NCiNkZWZpbmUJQUJT CQk1MQ0NCiNkZWZpbmUJTlVNCQk1Mg0NCiNkZWZpbmUJUk5ECQk1Mw0NCiNk ZWZpbmUJS0VZCQk1NA0NCiNkZWZpbmUJSU5QCQk1NQ0NCg0NCiNkZWZpbmUJ UlVOMQk5OQ0NCg0NCi8qIE1ha2Ugc3VyZSB0aGlzIHRva2VuIHRhYmxlIG1h dGNoZXMgdGhlIGFib3ZlIGRlZmluaXRpb25zICovDQ0Kc3RhdGljIGNoYXIg KnJlc2VydmVkX3dvcmRzW10gPSB7DQ0KCSJMRVQiLCAiRVhJVCIsICJMSVNU IiwgIk5FVyIsICJSVU4iLCAiQ0xFQVIiLCAiR09TVUIiLCAiR09UTyIsDQ0K CSJSRVRVUk4iLCAiUFJJTlQiLCAiRk9SIiwgIk5FWFQiLCAiSUYiLCAiTElG IiwgIlJFTSIsICJTVE9QIiwNDQoJIkVORCIsICJJTlBVVCIsICJPUEVOIiwg IkNMT1NFIiwgIkRJTSIsICJPUkRFUiIsICJSRUFEIiwgIkRBVEEiLA0NCgki U0FWRSIsICJMT0FEIiwgIkRFTEFZIiwgIkJFRVAiLCAiRE9TIiwgIk9VVCIs DQ0KCSJUTyIsICJTVEVQIiwgIlRIRU4iLA0NCgkiKyIsICItIiwgIioiLCAi LyIsICIlIiwgIiYiLCAifCIsICJeIiwNDQoJIj0iLCAiPD4iLCAiPD0iLCAi PCIsICI+PSIsICI+IiwNDQoJIkNIUiQoIiwgIlNUUiQoIiwgIkFTQygiLCAi QUJTKCIsICJOVU0oIiwgIlJORCgiLCAiS0VZKCIsICJJTlAoIiwNDQoJMCB9 Ow0NCg0NCi8qIFRhYmxlIG9mIG9wZXJhdG9yIHByaW9yaXRpZXMgKi8NDQpz dGF0aWMgY2hhciBwcmlvcml0eVtdID0geyAwLCAxLCAxLCAyLCAyLCAyLCAz LCAzLCAzLCAxLCAxLCAxLCAxLCAxLCAxIH07DQ0KDQ0KLyogVGFibGUgb2Yg ZXJyb3IgbWVzc2FnZXMgKi8NDQpzdGF0aWMgY2hhciAqZXJyb3JfbWVzc2Fn ZXNbXSA9IHsNDQoJIlN5bnRheCIsDQ0KCSJJbGxlZ2FsIHByb2dyYW0iLA0N CgkiSWxsZWdhbCBkaXJlY3QiLA0NCgkiTGluZSBudW1iZXIiLA0NCgkiV3Jv bmcgdHlwZSIsDQ0KCSJEaXZpZGUgYnkgemVybyIsDQ0KCSJOZXN0aW5nIiwN DQoJIkZpbGUgbm90IG9wZW4iLA0NCgkiRmlsZSBhbHJlYWR5IG9wZW4iLA0N CgkiSW5wdXQiLA0NCgkiRGltZW5zaW9uIiwNDQoJIkRhdGEiLA0NCgkiT3V0 IG9mIG1lbW9yeSINDQoJfTsNDQoNDQpzdHJ1Y3QgbGluZV9yZWNvcmQgew0N Cgl1bnNpZ25lZCBMbnVtYmVyOw0NCglzdHJ1Y3QgbGluZV9yZWNvcmQgKkxs aW5rOw0NCgljaGFyIEx0ZXh0W107IH07DQ0KDQ0KY2hhciBzYTFbU0FfU0la RV0sIHNhMltTQV9TSVpFXTsJCS8qIFN0cmluZyBhY2N1bXVsYXRvcnMgKi8N DQpzdHJ1Y3QgbGluZV9yZWNvcmQgKnBnbV9zdGFydCwJCQkvKiBJbmRpY2F0 ZXMgc3RhcnQgb2YgcHJvZ3JhbSAqLw0NCgkqcnVucHRyLAkJCQkJCQkvKiBM aW5lIHdlIGFyZSBSVU5ubmluZyAqLw0NCgkqcmVhZHB0cjsJCQkJCQkJLyog TGluZSB3ZSBhcmUgUkVBRGluZyAqLw0NCg0NCnVuc2lnbmVkIGRpbV9jaGVj a1tOVU1fVkFSXTsJCQkvKiBDaGVjayBkaW0gc2l6ZXMgZm9yIGFycmF5cyAq Lw0NCg0NCkZJTEUgKmZpbGVpbiwgKmZpbGVvdXQ7CQkJCQkvKiBGaWxlIEkv TyBhY3RpdmUgcG9pbnRlcnMgKi8NDQoNDQpqbXBfYnVmIHNhdmptcDsJCQkJ CQkJLyogU2F2ZSBhcmVhIGZvciBzZXQvbG9uZ2ptcCAqLw0NCg0NCi8qIE1p c2MuIGdsb2JhbCB2YXJpYWJsZXMgKi8NDQpjaGFyICpjbWRwdHIsCQkJCQkJ CS8qIENvbW1hbmQgbGluZSBwYXJzZSBwb2ludGVyICovDQ0KCSpkYXRhcHRy LAkJCQkJCQkvKiBSZWFkIGRhdGEgcG9pbnRlciAqLw0NCglidWZmZXJbQlVG RkVSX1NJWkVdLAkJCQkvKiBHZW5lcmFsIGlucHV0IGJ1ZmZlciAqLw0NCglt b2RlID0gMCwJCQkJCQkJLyogMD1TdG9wcGVkLCAhMD1SdW5uaW5nICovDQ0K CWV4cHJfdHlwZSwJCQkJCQkJLyogVHlwZSBvZiBsYXN0IGV4cHJlc3Npb24g Ki8NDQoJbmVzdDsJCQkJCQkJCS8qIE5lc3QgbGV2ZWwgb2YgZXhwci4gcGFy c2VyICovDQ0KdW5zaWduZWQgbGluZSwJCQkJCQkJLyogQ3VycmVudCBsaW5l IG51bWJlciAqLw0NCgljdGxfcHRyID0gMCwJCQkJCQkvKiBDb250cm9sIHN0 YWNrIHBvaW50ZXIgKi8NDQoJY3RsX3N0a1s1MF07CQkJCQkJLyogQ29udHJv bCBzdGFjayAqLw0NCg0NCi8qDQ0KICogVGhlIGZvbGxvd2luZyB2YXJpYWJs ZXMgbXVzdCBiZSBpbmlpdGlhbGl6ZWQgdG8gemVyby4gSWYgeW91cg0NCiAq IGNvbXBpbGVyIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgemVybyB1bmluaXRp YWxpemVkIGdsb2JhbA0NCiAqIHZhcmlhYmxlcywgbW9kaWZ5IHRoZXNlIGRl Y2xhcmF0aW9ucyB0byBpbml0aWFsaXplIHRoZW0uDQ0KICovDQ0KY2hhciBm aWxlbmFtZVs2NV07CQkJCQkJLyogTmFtZSBvZiBwcm9ncmFtIGZpbGUgKi8N DQpGSUxFICpmaWxlc1sxMF07CQkJCQkJLyogRmlsZSB1bml0IG51bWJlcnMg Ki8NDQppbnQgbnVtX3ZhcnNbTlVNX1ZBUl07CQkJCQkvKiBOdW1lcmljIHZh cmlhYmxlcyAqLw0NCmludCAqZGltX3ZhcnNbTlVNX1ZBUl07CQkJCQkvKiBE aW1lbnNpb25lZCBhcnJheXMgKi8NDQpjaGFyICpjaGFyX3ZhcnNbTlVNX1ZB Ul07CQkJCS8qIENoYXJhY3RlciB2YXJpYWJsZXMgKi8NDQoNDQovKg0NCiAq IFRlc3QgZm9yIGVuZCBvZiBleHByZXNzaW9uDQ0KICovDQ0KaW50IGlzX2Vf ZW5kKGNoYXIgYykNDQp7DQ0KCWlmKChjID49ICgtMTI4K1RPKSkgJiYgKGMg PCAoLTEyOCtBREQpKSkNDQoJCXJldHVybigxKTsNDQoJcmV0dXJuIChjID09 ICdcMCcpIHx8IChjID09ICc6JykgfHwgKGMgPT0gJyknKSB8fCAoYyA9PSAn LCcpOw0NCn0NDQoNDQovKg0NCiAqIFRlc3QgZm9yIGVuZCBvZiBzdGF0ZW1l bnQNDQogKi8NDQppbnQgaXNfbF9lbmQoY2hhciBjKQ0NCnsNDQoJcmV0dXJu IChjID09ICdcMCcpIHx8IChjID09ICc6Jyk7DQ0KfQ0NCg0NCi8qDQ0KICog VGVzdCBmb3IgdGVybWluYXRvciBjaGFyYWN0ZXINDQogKi8NDQppbnQgaXN0 ZXJtKGNoYXIgYykNDQp7DQ0KCXJldHVybiAoYyA9PSAnICcpIHx8IChjID09 ICdcdCcpOw0NCn0NDQoNDQovKg0NCiAqIEFkdmFuY2UgdG8gbmV4dCBub24t YmxhbmsgJiByZXRyZWl2ZSBkYXRhDQ0KICovDQ0KY2hhciBza2lwX2JsYW5r KCkNDQp7DQ0KCXdoaWxlKGlzdGVybSgqY21kcHRyKSkNDQoJCSsrY21kcHRy Ow0NCglyZXR1cm4gKmNtZHB0cjsNDQp9DQ0KDQ0KLyoNDQogKiBBZHZhbmNl IHRvLiwgcmV0cmlldmUgYW5kIHNraXAgbmV4dCBub24gYmxhbmsNDQogKi8N DQpjaGFyIGdldF9uZXh0KCkNDQp7DQ0KCWNoYXIgYzsNDQoNDQoJd2hpbGUo aXN0ZXJtKGM9KmNtZHB0cikpDQ0KCQkrK2NtZHB0cjsNDQoJaWYoYykNDQoJ CSsrY21kcHRyOw0NCglyZXR1cm4gYzsNDQp9DQ0KDQ0KLyoNDQogKiBUZXN0 IGZvciBhIHNwZWNpZmljIGNoYXJhY3RlciBvY2N1cmluZyBuZXh0ICYgcmVt b3ZlIGlmIGZvdW5kDQ0KICovDQ0KaW50IHRlc3RfbmV4dChpbnQgdG9rZW4p DQ0Kew0NCglpZihza2lwX2JsYW5rKCkgPT0gdG9rZW4pIHsNDQoJCSsrY21k cHRyOw0NCgkJcmV0dXJuIC0xOyB9DQ0KCXJldHVybiAwOw0NCn0NDQoNDQov Kg0NCiAqIEV4cGVjdCBhIHNwZWNpZmljIHRva2VuIC0gc3ludGF4IGVycm9y IGlmIG5vdCBmb3VuZA0NCiAqLw0NCmV4cGVjdChpbnQgdG9rZW4pDQ0Kew0N CglpZihnZXRfbmV4dCgpICE9IHRva2VuKQ0NCgkJZXJyb3IoMCk7DQ0KfQ0N Cg0NCi8qDQ0KICogTG9va3VwIHVwIHdvcmQgZnJvbSBjb21tYW5kIGxpbmUg aW4gdGFibGUNDQogKi8NDQp1bnNpZ25lZCBsb29rdXAoY2hhciAqdGFibGVb XSkNDQp7DQ0KCXVuc2lnbmVkIGk7DQ0KCWNoYXIgKmNwdHIsICpvcHRyOw0N Cg0NCglvcHRyID0gY21kcHRyOw0NCglmb3IoaT0wOyBjcHRyID0gdGFibGVb aV07ICsraSkgew0NCgkJd2hpbGUoKCpjcHRyKSAmJiAoKmNwdHIgPT0gdG91 cHBlcigqY21kcHRyKSkpIHsNDQoJCQkrK2NwdHI7DQ0KCQkJKytjbWRwdHI7 IH0NDQoJCWlmKCEqY3B0cikgew0NCgkJCWlmKCEgKGlzYWxudW0oKihjcHRy LTEpKSAmJiBpc2FsbnVtKCpjbWRwdHIpKSApIHsNDQoJCQkJc2tpcF9ibGFu aygpOw0NCgkJCQlyZXR1cm4gaSsxOyB9IH0NDQoJCWNtZHB0ciA9IG9wdHI7 IH0NDQoJcmV0dXJuIDA7DQ0KfQ0NCg0NCi8qDQ0KICogR2V0IGEgbnVtYmVy IGZyb20gdGhlIGlucHV0IGJ1ZmZlcg0NCiAqLw0NCnVuc2lnbmVkIGdldF9u dW0oKQ0NCnsNDQoJdW5zaWduZWQgdmFsdWU7DQ0KCWNoYXIgYzsNDQoNDQoJ dmFsdWUgPSAwOw0NCgl3aGlsZShpc2RpZ2l0KGM9KmNtZHB0cikpIHsNDQoJ CSsrY21kcHRyOw0NCgkJdmFsdWUgPSAodmFsdWUgKiAxMCkgKyAoYyAtICcw Jyk7IH0NDQoJcmV0dXJuIHZhbHVlOw0NCn0NDQoNDQovKg0NCiAqIEFsbG9j YXRlIG1lbW9yeSBhbmQgemVybyBpdA0NCiAqLw0NCmNoYXIgKmFsbG9jYXRl KHVuc2lnbmVkIHNpemUpDQ0Kew0NCgljaGFyICpwdHI7DQ0KCWlmKCEocHRy ID0gbWFsbG9jKHNpemUpKSkNDQoJCWVycm9yKDEyKTsNDQoJbWVtc2V0KHB0 ciwgMCwgc2l6ZSk7DQ0KCXJldHVybiBwdHI7DQ0KfQ0NCg0NCi8qDQ0KICog RGVsZXRlIGEgbGluZSBmcm9tIHRoZSBwcm9ncmFtDQ0KICovDQ0KZGVsZXRl X2xpbmUodW5zaWduZWQgbGlubykNDQp7DQ0KCXN0cnVjdCBsaW5lX3JlY29y ZCAqY3B0ciwgKmJwdHI7DQ0KDQ0KCWlmKCEoY3B0ciA9IHBnbV9zdGFydCkp CQkJCQkvKiBubyBsaW5lcyBpbiBwZ20gKi8NDQoJCXJldHVybjsNDQoJZG8g ew0NCgkJaWYobGlubyA9PSBjcHRyLT5MbnVtYmVyKSB7CQkJLyogd2UgaGF2 ZSBsaW5lIHRvIGRlbGV0ZSAqLw0NCgkJCWlmKGNwdHIgPT0gcGdtX3N0YXJ0 KSB7CQkJLyogZmlyc3QgbGluZSBpbiBwZ20gKi8JDQ0KCQkJCXBnbV9zdGFy dCA9IGNwdHItPkxsaW5rOw0NCgkJCQlyZXR1cm47IH0NDQoJCQllbHNlIHsN DQoJCQkJYnB0ci0+TGxpbmsgPSBjcHRyLT5MbGluazsJLyogc2tpcCBpdCBp biBsaW5rZWQgbGlzdCAqLw0NCgkJCQlmcmVlKGNwdHIpOyB9IH0JCQkJLyog bGV0IGl0IGdvICovDQ0KCQlicHRyID0gY3B0cjsgfQ0NCgl3aGlsZShjcHRy ID0gY3B0ci0+TGxpbmspOw0NCn0NDQoNDQovKg0NCiAqIEluc2VydCBhIGxp bmUgaW50byB0aGUgcHJvZ3JhbQ0NCiAqLw0NCmluc2VydF9saW5lKHVuc2ln bmVkIGxpbm8pDQ0Kew0NCgl1bnNpZ25lZCBpOw0NCglzdHJ1Y3QgbGluZV9y ZWNvcmQgKmNwdHIsICpicHRyLCAqb3B0cjsNDQoJY2hhciAqcHRyOw0NCg0N CglwdHIgPSBjbWRwdHI7DQ0KCWZvcihpPTU7ICpwdHI7ICsraSkNDQoJCSsr cHRyOw0NCglicHRyID0gYWxsb2NhdGUoaSk7DQ0KCWJwdHItPkxudW1iZXIg PSBsaW5vOw0NCglmb3IoaT0wOyAqY21kcHRyOyArK2kpDQ0KCQlicHRyLT5M dGV4dFtpXSA9ICpjbWRwdHIrKzsNDQoJYnB0ci0+THRleHRbaV0gPSAwOw0N CglpZigoIShjcHRyID0gcGdtX3N0YXJ0KSkgfHwgKGxpbm8gPCBjcHRyLT5M bnVtYmVyKSkgewkvKiBhdCBzdGFydCAqLw0NCgkJYnB0ci0+TGxpbmsgPSBw Z21fc3RhcnQ7DQ0KCQlwZ21fc3RhcnQgPSBicHRyOyB9DQ0KCWVsc2UgewkJ CQkvKiBpbnNlcnRpbmcgaW50byBtYWluIHBhcnQgb2YgcGdtICovDQ0KCQlm b3IoOzspIHsNDQoJCQlvcHRyID0gY3B0cjsNDQoJCQlpZigoIShjcHRyID0g Y3B0ci0+TGxpbmspKSB8fCAobGlubyA8IGNwdHItPkxudW1iZXIpKSB7DQ0K CQkJCWJwdHItPkxsaW5rID0gb3B0ci0+TGxpbms7DQ0KCQkJCW9wdHItPkxs aW5rID0gYnB0cjsNDQoJCQkJYnJlYWs7IH0gfSB9DQ0KfQ0NCg0NCi8qDQ0K ICogVG9rZW5pemUgaW5wdXQgbGluZSBhbmQgQWRkL1JlcGxhY2UgYSBzb3Vy Y2UgbGluZSBpZiBzdWl0YWJsZQ0NCiAqLw0NCmVkaXRfcHJvZ3JhbSgpDQ0K ew0NCgl1bnNpZ25lZCB2YWx1ZTsNDQoJY2hhciAqcHRyLCBjOw0NCg0NCglj bWRwdHIgPSBwdHIgPSBidWZmZXI7DQ0KCS8qIFRyYW5zbGF0ZSBzcGVjaWFs IHRva2VucyBpbnRvIGNvZGVzICovDQ0KCXdoaWxlKGMgPSAqY21kcHRyKSB7 DQ0KCQlpZih2YWx1ZSA9IGxvb2t1cChyZXNlcnZlZF93b3JkcykpDQ0KCQkJ KnB0cisrID0gdmFsdWUgfCAweDgwOw0NCgkJZWxzZSB7DQ0KCQkJKnB0cisr ID0gYzsNDQoJCQkrK2NtZHB0cjsNDQoJCQlpZihjID09ICciJykgewkJLyog ZG91YmxlIHF1b3RlICovDQ0KCQkJCXdoaWxlKChjID0gKmNtZHB0cikgJiYg KGMgIT0gJyInKSkgew0NCgkJCQkJKytjbWRwdHI7DQ0KCQkJCQkqcHRyKysg PSBjOyB9DQ0KCQkJCSpwdHIrKyA9ICpjbWRwdHIrKzsgfSB9IH0NDQoJKnB0 ciA9IDA7DQ0KCWNtZHB0ciA9IGJ1ZmZlcjsNDQoNDQoJaWYoaXNkaWdpdChz a2lwX2JsYW5rKCkpKSB7CS8qIFZhbGlkIHNvdXJjZSBsaW5lICovDQ0KCQl2 YWx1ZSA9IGdldF9udW0oKTsJCS8qIEdldCBsaW5lIG51bWJlciAqLw0NCgkJ ZGVsZXRlX2xpbmUodmFsdWUpOwkJLyogRGVsZXRlIHRoZSBvbGQgKi8NDQoJ CWlmKHNraXBfYmxhbmsoKSkNDQoJCQlpbnNlcnRfbGluZSh2YWx1ZSk7DQ0K CQlyZXR1cm4gLTE7IH0JCQkvKiBJbnNlcnQgdGhlIG5ldyAqLw0NCglyZXR1 cm4gMDsNDQp9DQ0KDQ0KLyoNDQogKiBMb2NhdGUgZ2l2ZW4gbGluZSBpbiBz b3VyY2UNDQogKi8NDQpzdHJ1Y3QgbGluZV9yZWNvcmQgKmZpbmRfbGluZSh1 bnNpZ25lZCBsaW5lKQ0NCnsNDQoJc3RydWN0IGxpbmVfcmVjb3JkICpjcHRy Ow0NCg0NCglmb3IoY3B0ciA9IHBnbV9zdGFydDsgY3B0cjsgY3B0ciA9IGNw dHItPkxsaW5rKQ0NCgkJaWYoY3B0ci0+TG51bWJlciA9PSBsaW5lKQ0NCgkJ CXJldHVybiBjcHRyOw0NCgllcnJvcigzKTsNDQp9DQ0KDQ0KLyoNDQogKiBD b21wdXRlIHZhcmlhYmxlIGFkZHJlc3MgZm9yIGFzc2lnbm1lbnQNDQogKi8N DQp1bnNpZ25lZCAqYWRkcmVzcygpDQ0Kew0NCgl1bnNpZ25lZCBpLCBqLCAq ZHB0cjsNDQoJaSA9IGdldF92YXIoKTsNDQoJaWYoZXhwcl90eXBlKQ0NCgkJ cmV0dXJuICZjaGFyX3ZhcnNbaV07DQ0KCWVsc2Ugew0NCgkJaWYodGVzdF9u ZXh0KCcoJykpIHsJLyogQXJyYXkgKi8NDQoJCQlpZihleHByX3R5cGUpIGVy cm9yKDApOw0NCgkJCWlmKCEoZHB0ciA9IGRpbV92YXJzW2ldKSkNDQoJCQkJ ZXJyb3IoMTApOw0NCgkJCW5lc3QgPSAwOw0NCgkJCWlmKChqID0gZXZhbF9z dWIoKSkgPj0gZGltX2NoZWNrW2ldKQ0NCgkJCQllcnJvcigxMCk7DQ0KCQkJ cmV0dXJuICZkcHRyW2pdOyB9IH0NDQoJcmV0dXJuICZudW1fdmFyc1tpXTsN DQp9DQ0KDQ0KLyoNDQogKiBFeGVjdXRlIGEgQkFTSUMgY29tbWFuZHMNDQog Ki8NDQpzdHJ1Y3QgbGluZV9yZWNvcmQgKmV4ZWN1dGUoY2hhciBjbWQpDQ0K ew0NCgl1bnNpZ25lZCBpLCBqLCBrLCAqZHB0cjsNDQoJaW50IGlpLCBqajsN DQoJc3RydWN0IGxpbmVfcmVjb3JkICpjcHRyOw0NCgljaGFyIGM7DQ0KDQ0K CXN3aXRjaChjbWQgJiAweDdGKSB7DQ0KCQljYXNlIExFVCA6DQ0KCQkJZHB0 ciA9IGFkZHJlc3MoKTsNDQoJCQlqID0gZXhwcl90eXBlOw0NCg0NCgkJCWV4 cGVjdCgtMTI4K0VRKTsNDQoNDQoJCQlrID0gZXZhbCgpOw0NCg0NCgkJCWlm KGogIT0gZXhwcl90eXBlKQ0NCgkJCQllcnJvcigwKTsNDQoJCQlpZighZXhw cl90eXBlKQkJLyogbnVtZXJpYyBhc3NpZ25tZW50ICovDQ0KCQkJCSpkcHRy ID0gazsNDQoJCQllbHNlIHsJCQkJLyogY2hhcmFjdGVyIGFzc2lnbm1lbnQg Ki8NDQoJCQkJaWYoKmRwdHIpDQ0KCQkJCQlmcmVlKCpkcHRyKTsNDQoJCQkJ aWYoKnNhMSkNDQoJCQkJCXN0cmNweSgqZHB0ciA9IGFsbG9jYXRlKHN0cmxl bihzYTEpKzEpLCBzYTEpOw0NCgkJCQllbHNlDQ0KCQkJCQkqZHB0ciA9IDA7 IH0NDQoJCQlicmVhazsNDQoJCWNhc2UgRVhJVCA6DQ0KCQkJZXhpdCgwKTsN DQoJCWNhc2UgTElTVCA6DQ0KCQkJY2hrX2ZpbGUoMSk7DQ0KCQkJaWYoIWlz ZGlnaXQoc2tpcF9ibGFuaygpKSkgew0NCgkJCQlpPTA7IGo9LTE7IH0NDQoJ CQllbHNlIHsNDQoJCQkJaSA9IGdldF9udW0oKTsNDQoJCQkJaWYoZ2V0X25l eHQoKSA9PSAnLCcpIHsNDQoJCQkJCWlmKGlzZGlnaXQoc2tpcF9ibGFuaygp KSkNDQoJCQkJCQlqPWdldF9udW0oKTsNDQoJCQkJCWVsc2UNDQoJCQkJCQlq ID0gLTE7IH0NDQoJCQkJZWxzZQ0NCgkJCQkJaj1pOyB9DQ0KCQkJZGlzcF9w Z20oZmlsZW91dCxpLGopOw0NCgkJCWJyZWFrOw0NCgkJY2FzZSBORVcgOg0N CgkJCWNsZWFyX3ZhcnMoKTsNDQoJCQljbGVhcl9wZ20oKTsNDQoJCQlsb25n am1wKHNhdmptcCwgMSk7DQ0KCQljYXNlIFJVTiA6DQ0KCQkJZGlyZWN0X29u bHkoKTsNDQoJCQljbGVhcl92YXJzKCk7DQ0KCQljYXNlIFJVTjEgOgkJLyog Tm8gY2xlYXJpbmcgKi8NDQoJCQlpZihpc19lX2VuZChza2lwX2JsYW5rKCkp KQ0NCgkJCQlydW5wdHIgPSBwZ21fc3RhcnQ7DQ0KCQkJZWxzZQ0NCgkJCQly dW5wdHIgPSBmaW5kX2xpbmUoZXZhbF9udW0oKSk7DQ0KCQkJLS1tb2RlOwkJ CS8qIGluZGljYXRlIHJ1bm5pbmcgKi8NDQpuZXdsaW5lOg0NCgkJCXdoaWxl KHJ1bnB0cikgew0NCgkJCQljbWRwdHIgPSBydW5wdHItPkx0ZXh0Ow0NCgkJ CQlsaW5lID0gcnVucHRyLT5MbnVtYmVyOw0NCgkJCQlkbyB7DQ0KCQkJCQlp ZigoY21kID0gc2tpcF9ibGFuaygpKSA8IDApIHsNDQoJCQkJCQkrK2NtZHB0 cjsNDQoJCQkJCQlpZihkcHRyPWV4ZWN1dGUoY21kKSkgew0NCgkJCQkJCQly dW5wdHIgPSBkcHRyOw0NCgkJCQkJCQlnb3RvIG5ld2xpbmU7IH0gfQ0NCgkJ CQkJZWxzZQ0NCgkJCQkJCWV4ZWN1dGUoMSk7IH0NDQoJCQkJd2hpbGUoKGMg PSBnZXRfbmV4dCgpKSA9PSAnOicpOw0NCgkJCQlpZihjKQ0NCgkJCQkJZXJy b3IoMCk7DQ0KCQkJCXJ1bnB0ciA9IHJ1bnB0ci0+TGxpbms7IH0NDQoJCQlt b2RlID0gMDsNDQoJCQlicmVhazsNDQoJCWNhc2UgQ0xFQVIgOg0NCgkJCWNs ZWFyX3ZhcnMoKTsNDQoJCQlicmVhazsNDQoJCWNhc2UgR09TVUIgOg0NCgkJ CWN0bF9zdGtbY3RsX3B0cisrXSA9IHJ1bnB0cjsNDQoJCQljdGxfc3RrW2N0 bF9wdHIrK10gPSBjbWRwdHI7DQ0KCQkJY3RsX3N0a1tjdGxfcHRyKytdID0g X0dPU1VCOw0NCgkJY2FzZSBHT1RPIDoNDQoJCQlwZ21fb25seSgpOw0NCgkJ CXJldHVybiBmaW5kX2xpbmUoZXZhbF9udW0oKSk7DQ0KCQljYXNlIFJFVFVS TiA6DQ0KCQkJcGdtX29ubHkoKTsNDQoJCQlpZihjdGxfc3RrWy0tY3RsX3B0 cl0gIT0gX0dPU1VCKQ0NCgkJCQllcnJvcig2KTsNDQoJCQljbWRwdHIgPSBj dGxfc3RrWy0tY3RsX3B0cl07DQ0KCQkJcnVucHRyID0gY3RsX3N0a1stLWN0 bF9wdHJdOw0NCgkJCWxpbmUgPSBydW5wdHItPkxudW1iZXI7DQ0KCQkJc2tp cF9zdG10KCk7DQ0KCQkJYnJlYWs7DQ0KCQljYXNlIFBSSU5UIDoNDQoJCQlj aGtfZmlsZSgxKTsNDQoJCQlqID0gMDsNDQoJCQlkbyB7DQ0KCQkJCWlmKGlz X2xfZW5kKHNraXBfYmxhbmsoKSkpDQ0KCQkJCQktLWo7DQ0KCQkJCWVsc2Ug ew0NCgkJCQkJaSA9IGV2YWwoKTsNDQoJCQkJCWlmKCFleHByX3R5cGUpIHsN DQoJCQkJCQludW1fc3RyaW5nKGksIHNhMSk7DQ0KCQkJCQkJcHV0YygnICcs ZmlsZW91dCk7IH0NDQoJCQkJCWZwdXRzKHNhMSwgZmlsZW91dCk7IH0gfQ0N CgkJCXdoaWxlKHRlc3RfbmV4dCgnLCcpKTsNDQoJCQlpZighaikNDQoJCQkJ cHV0YygnXG4nLCBmaWxlb3V0KTsNDQoJCQlicmVhazsNDQoJCWNhc2UgRk9S IDoNDQoJCQlwZ21fb25seSgpOw0NCgkJCWlpID0gMTsJCQkvKiBkZWZhdWx0 IHN0ZXAgdmFsdWUgKi8NDQoJCQlpID0gZ2V0X3ZhcigpOw0NCgkJCWlmKGV4 cHJfdHlwZSkgZXJyb3IoMCk7DQ0KCQkJZXhwZWN0KC0xMjgrRVEpOw0NCgkJ CW51bV92YXJzW2ldID0gZXZhbCgpOw0NCgkJCWlmKGV4cHJfdHlwZSkgZXJy b3IoMCk7DQ0KCQkJZXhwZWN0KC0xMjgrVE8pOw0NCgkJCWpqID0gZXZhbCgp Ow0NCgkJCWlmKHRlc3RfbmV4dCgtMTI4K1NURVApKQ0NCgkJCQlpaSA9IGV2 YWwoKTsNDQoJCQlza2lwX3N0bXQoKTsNDQoJCQljdGxfc3RrW2N0bF9wdHIr K10gPSBydW5wdHI7CS8qIGxpbmUgKi8NDQoJCQljdGxfc3RrW2N0bF9wdHIr K10gPSBjbWRwdHI7CS8qIGNvbW1hbmQgcG9pbnRlciAqLw0NCgkJCWN0bF9z dGtbY3RsX3B0cisrXSA9IGlpOwkJLyogc3RlcCB2YWx1ZSAqLw0NCgkJCWN0 bF9zdGtbY3RsX3B0cisrXSA9IGpqOwkJLyogbGltaXQgdmFsdWUgKi8NDQoJ CQljdGxfc3RrW2N0bF9wdHIrK10gPSBpOwkJCS8qIHZhcmlhYmxlIG51bWJl ciAqLw0NCgkJCWN0bF9zdGtbY3RsX3B0cisrXSA9IF9GT1I7DQ0KCQkJYnJl YWs7DQ0KCQljYXNlIE5FWFQgOg0NCgkJCXBnbV9vbmx5KCk7DQ0KCQkJaWYo Y3RsX3N0a1tjdGxfcHRyLTFdICE9IF9GT1IpDQ0KCQkJCWVycm9yKDYpOw0N CgkJCWkgPSBjdGxfc3RrW2N0bF9wdHItMl07DQ0KCQkJaWYoIWlzX2xfZW5k KHNraXBfYmxhbmsoKSkpDQ0KCQkJCWlmKGdldF92YXIoKSAhPSBpKSBlcnJv cig2KTsNDQoJCQlqaiA9IGN0bF9zdGtbY3RsX3B0ci0zXTsJLyogZ2V0IGxp bWl0ICovDQ0KCQkJaWkgPSBjdGxfc3RrW2N0bF9wdHItNF07CS8qIGdldCBz dGVwICovDQ0KCQkJbnVtX3ZhcnNbaV0gKz0gaWk7DQ0KCQkJaWYoKGlpIDwg MCkgPyBudW1fdmFyc1tpXSA+PSBqaiA6IG51bV92YXJzW2ldIDw9IGpqKSB7 DQ0KCQkJCWNtZHB0ciA9IGN0bF9zdGtbY3RsX3B0ci01XTsNDQoJCQkJcnVu cHRyID0gY3RsX3N0a1tjdGxfcHRyLTZdOw0NCgkJCQlsaW5lID0gcnVucHRy LT5MbnVtYmVyOyB9DQ0KCQkJZWxzZQ0NCgkJCQljdGxfcHRyIC09IDY7DQ0K CQkJYnJlYWs7DQ0KCQljYXNlIElGIDoNDQoJCQlpID0gZXZhbF9udW0oKTsN DQoJCQlleHBlY3QoLTEyOCtUSEVOKTsNDQoJCQlpZihpKSB7DQ0KCQkJCWlm KGlzZGlnaXQoY21kID0gc2tpcF9ibGFuaygpKSkNDQoJCQkJCXJldHVybiBm aW5kX2xpbmUoZXZhbF9udW0oKSk7DQ0KCQkJCWVsc2UgaWYoY21kIDwgMCkg ew0NCgkJCQkJKytjbWRwdHI7DQ0KCQkJCQlyZXR1cm4gZXhlY3V0ZShjbWQp OyB9DQ0KCQkJCWVsc2UNDQoJCQkJCWV4ZWN1dGUoMSk7IH0NDQoJCQllbHNl DQ0KCQkJCXNraXBfc3RtdCgpOw0NCgkJCWJyZWFrOw0NCgkJY2FzZSBMSUYg Og0NCgkJCWkgPSBldmFsX251bSgpOw0NCgkJCWV4cGVjdCgtMTI4K1RIRU4p Ow0NCgkJCWlmKGkpIHsNDQoJCQkJaWYoKGNtZCA9IHNraXBfYmxhbmsoKSkg PCAwKSB7DQ0KCQkJCQkrK2NtZHB0cjsNDQoJCQkJCXJldHVybiBleGVjdXRl KGNtZCk7IH0NDQoJCQkJZWxzZQ0NCgkJCQkJZXhlY3V0ZSgxKTsNDQoJCQkJ YnJlYWs7IH0NDQoJCWNhc2UgREFUQSA6DQ0KCQkJcGdtX29ubHkoKTsNDQoJ CWNhc2UgUkVNIDoNDQoJCQlpZihtb2RlKSB7DQ0KCQkJCWlmKGNwdHIgPSBy dW5wdHItPkxsaW5rKQ0NCgkJCQkJcmV0dXJuIGNwdHI7DQ0KCQkJCWxvbmdq bXAoc2F2am1wLCAxKTsgfQ0NCgkJCWJyZWFrOw0NCgkJY2FzZSBTVE9QIDoN DQoJCQlwZ21fb25seSgpOw0NCgkJCXByaW50ZigiU1RPUCBpbiBsaW5lICV1 XG4iLGxpbmUpOw0NCgkJY2FzZSBFTkQgOg0NCgkJCXBnbV9vbmx5KCk7DQ0K CQkJbG9uZ2ptcChzYXZqbXAsIDEpOw0NCgkJY2FzZSBJTlBVVCA6DQ0KCQkJ aWkgPSBjaGtfZmlsZSgxKTsNDQoJCQlpZihza2lwX2JsYW5rKCkgPT0gJyIn KSB7CQkvKiBzcGVjaWFsIHByb21wdCAqLw0NCgkJCQlldmFsKCk7DQ0KCQkJ CWV4cGVjdCgnLCcpOyB9DQ0KCQkJZWxzZQ0NCgkJCQlzdHJjcHkoc2ExLCAi PyAiKTsNDQoJCQlkcHRyID0gYWRkcmVzcygpOw0NCgkJCWNwdHIgPSBjbWRw dHI7DQ0KaW5wdXQ6CQlpZihpaSA9PSAtMSkNDQoJCQkJZnB1dHMoc2ExLCBz dGRvdXQpOw0NCgkJCWNtZHB0ciA9IGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1 ZmZlciktMSAsZmlsZWluKTsNDQoJCQlpZihleHByX3R5cGUpIHsNDQoJCQkJ aWYoKmRwdHIpIGZyZWUoKmRwdHIpOw0NCgkJCQlzdHJjcHkoKmRwdHIgPSBh bGxvY2F0ZShzdHJsZW4oYnVmZmVyKSsxKSwgYnVmZmVyKTsgfQ0NCgkJCWVs c2Ugew0NCgkJCQlrID0gMDsNDQoJCQkJaWYodGVzdF9uZXh0KCctJykpDQ0K CQkJCQktLWs7DQ0KCQkJCWlmKCFpc2RpZ2l0KCpjbWRwdHIpKSB7DQ0KCQkJ CQlpZihpaSAhPSAtMSkgZXJyb3IoOSk7DQ0KCQkJCQlmcHV0cygiSW5wdXQg ZXJyb3JcbiIsc3Rkb3V0KTsNDQoJCQkJCWdvdG8gaW5wdXQ7IH0NDQoJCQkJ aiA9IGdldF9udW0oKTsNDQoJCQkJKmRwdHIgPSAoaykgPyAwLWo6IGo7IH0N DQoJCQljbWRwdHIgPSBjcHRyOw0NCgkJCWJyZWFrOw0NCgkJY2FzZSBPUEVO IDoNDQoJCQlpZihza2lwX2JsYW5rKCkgIT0gJyMnKSBlcnJvcigwKTsNDQoJ CQlpZihmaWxlc1tpID0gY2hrX2ZpbGUoMCldKSBlcnJvcig4KTsNDQoJCQll dmFsX2NoYXIoKTsNDQoJCQlzdHJjcHkoYnVmZmVyLCBzYTEpOw0NCgkJCWV4 cGVjdCgnLCcpOw0NCgkJCWV2YWxfY2hhcigpOw0NCgkJCWZpbGVzW2ldID0g Zm9wZW4oYnVmZmVyLHNhMSk7DQ0KCQkJYnJlYWs7DQ0KCQljYXNlIENMT1NF IDoNDQoJCQlpZigoaSA9IGNoa19maWxlKDEpKSA9PSAtMSkgZXJyb3IoMCk7 DQ0KCQkJaWYoIWZpbGVpbikgZXJyb3IoOCk7DQ0KCQkJZmNsb3NlKGZpbGVz W2ldKTsNDQoJCQlmaWxlc1tpXSA9IDA7DQ0KCQkJYnJlYWs7DQ0KCQljYXNl IERJTSA6DQ0KCQkJZG8gew0NCgkJCQlpZihkcHRyID0gZGltX3ZhcnNbaSA9 IGdldF92YXIoKV0pDQ0KCQkJCQlmcmVlKGRwdHIpOw0NCgkJCQlkaW1fdmFy c1tpXSA9IGFsbG9jYXRlKChkaW1fY2hlY2tbaV0gPSBldmFsX251bSgpKzEp ICogMik7IH0NDQoJCQl3aGlsZSh0ZXN0X25leHQoJywnKSk7DQ0KCQkJYnJl YWs7DQ0KCQljYXNlIE9SREVSIDoNDQoJCQlyZWFkcHRyID0gZmluZF9saW5l KGV2YWxfbnVtKCkpOw0NCgkJCWRwdHIgPSBjbWRwdHI7DQ0KCQkJY21kcHRy ID0gcmVhZHB0ci0+THRleHQ7DQ0KCQkJaWYoZ2V0X25leHQoKSAhPSAtMTI4 K0RBVEEpDQ0KCQkJCWVycm9yKDExKTsNDQoJCQlkYXRhcHRyID0gY21kcHRy Ow0NCgkJCWNtZHB0ciA9IGRwdHI7DQ0KCQkJYnJlYWs7DQ0KCQljYXNlIFJF QUQgOg0NCgkJCWRvIHsNDQoJCQkJZHB0ciA9IGFkZHJlc3MoKTsNDQoJCQkJ aiA9IGV4cHJfdHlwZTsNDQoJCQkJY3B0ciA9IGNtZHB0cjsNDQoJCQkJY21k cHRyID0gZGF0YXB0cjsNDQoJCQkJaWkgPSBsaW5lOw0NCgkJCQlpZighc2tp cF9ibGFuaygpKSB7CQkvKiBFbmQgb2YgbGluZSAqLw0NCgkJCQkJcmVhZHB0 ciA9IHJlYWRwdHItPkxsaW5rOw0NCgkJCQkJY21kcHRyID0gcmVhZHB0ci0+ THRleHQ7DQ0KCQkJCQlpZihnZXRfbmV4dCgpICE9IC0xMjgrREFUQSkNDQoJ CQkJCQllcnJvcigxMSk7IH0NDQoJCQkJbGluZSA9IHJlYWRwdHItPkxudW1i ZXI7DQ0KCQkJCWsgPSBldmFsKCk7DQ0KCQkJCXRlc3RfbmV4dCgnLCcpOw0N CgkJCQlkYXRhcHRyID0gY21kcHRyOw0NCgkJCQljbWRwdHIgPSBjcHRyOw0N CgkJCQlsaW5lID0gaWk7DQ0KCQkJCWlmKGogIT0gZXhwcl90eXBlKQ0NCgkJ CQkJZXJyb3IoMTEpOw0NCgkJCQlpZighZXhwcl90eXBlKQkJLyogbnVtZXJp YyBhc3NpZ25tZW50ICovDQ0KCQkJCQkqZHB0ciA9IGs7DQ0KCQkJCWVsc2Ug ewkJCQkvKiBjaGFyYWN0ZXIgYXNzaWdubWVudCAqLw0NCgkJCQkJaWYoKmRw dHIpDQ0KCQkJCQkJZnJlZSgqZHB0cik7DQ0KCQkJCQlpZigqc2ExKQ0NCgkJ CQkJCXN0cmNweSgqZHB0ciA9IGFsbG9jYXRlKHN0cmxlbihzYTEpKzEpLCBz YTEpOw0NCgkJCQkJZWxzZQ0NCgkJCQkJCSpkcHRyID0gMDsgfSB9DQ0KCQkJ d2hpbGUodGVzdF9uZXh0KCcsJykpOw0NCgkJCWJyZWFrOw0NCgkJY2FzZSBE RUxBWSA6DQ0KCQkJZGVsYXkoZXZhbF9udW0oKSk7DQ0KCQkJYnJlYWs7DQ0K CQljYXNlIEJFRVAgOg0NCgkJCWkgPSBldmFsX251bSgpOw0NCgkJCWV4cGVj dCgnLCcpOw0NCgkJCWJlZXAoaSwgZXZhbF9udW0oKSk7DQ0KCQkJYnJlYWs7 DQ0KCQljYXNlIERPUyA6DQ0KCQkJZXZhbF9jaGFyKCk7DQ0KCQkJc3lzdGVt KHNhMSk7DQ0KCQkJYnJlYWs7DQ0KCQljYXNlIE9VVCA6DQ0KCQkJaSA9IGV2 YWxfbnVtKCk7DQ0KCQkJZXhwZWN0KCcsJyk7DQ0KCQkJb3V0KGksIGV2YWxf bnVtKCkpOw0NCgkJCWJyZWFrOw0NCgkJY2FzZSBTQVZFIDoNDQoJCQlkaXJl Y3Rfb25seSgpOw0NCgkJCWlmKHNraXBfYmxhbmsoKSkgew0NCgkJCQlldmFs X2NoYXIoKTsNDQoJCQkJY29uY2F0KGZpbGVuYW1lLCBzYTEsICIuQkFTIik7 IH0NDQoJCQlpZihmaWxlb3V0ID0gZm9wZW4oZmlsZW5hbWUsICJ3diIpKSB7 DQ0KCQkJCWRpc3BfcGdtKGZpbGVvdXQsIDAsIC0xKTsNDQoJCQkJZmNsb3Nl KGZpbGVvdXQpOyB9DQ0KCQkJYnJlYWs7DQ0KCQljYXNlIExPQUQgOg0NCgkJ CWV2YWxfY2hhcigpOw0NCgkJCWNvbmNhdChmaWxlbmFtZSwgc2ExLCAiLkJB UyIpOw0NCgkJCWlmKGZpbGVpbiA9IGZvcGVuKGZpbGVuYW1lLCAicnYiKSkg ew0NCgkJCQlpZighbW9kZSkgY2xlYXJfdmFycygpOw0NCgkJCQljbGVhcl9w Z20oKTsNDQoJCQkJd2hpbGUoZmdldHMoYnVmZmVyLCBzaXplb2YoYnVmZmVy KS0xLCBmaWxlaW4pKQ0NCgkJCQkJZWRpdF9wcm9ncmFtKCk7DQ0KCQkJCWZj bG9zZShmaWxlaW4pOw0NCgkJCQlyZXR1cm4gcGdtX3N0YXJ0OyB9DQ0KCQkJ bG9uZ2ptcChzYXZqbXAsIDEpOw0NCgkJZGVmYXVsdCA6CQkJLyogdW5rbm93 biAqLw0NCgkJCWVycm9yKDApOyB9DQ0KCQlyZXR1cm4gMDsNDQp9DQ0KDQ0K LyoNDQogKiBUZXN0IGZvciBmaWxlIG9wZXJhdG9yLCBhbmQgc2V0IHVwIHBv aW50ZXJzDQ0KICovDQ0KaW50IGNoa19maWxlKGNoYXIgZmxhZykNDQp7DQ0K CXVuc2lnbmVkIGk7DQ0KDQ0KCWkgPSAtMTsNDQoJaWYodGVzdF9uZXh0KCcj JykpIHsNDQoJCWlmKDkgPCAoaSA9IGV2YWxfbnVtKCkpKSBlcnJvcig3KTsN DQoJCXRlc3RfbmV4dCgnLCcpOw0NCgkJZmlsZWluID0gZmlsZW91dCA9IGZp bGVzW2ldOw0NCgkJaWYoZmxhZyAmJiAoIWZpbGVpbikpDQ0KCQkJZXJyb3Io Nyk7IH0NDQoJZWxzZSB7DQ0KCQlmaWxlaW4gPSBzdGRpbjsNDQoJCWZpbGVv dXQgPSBzdGRvdXQ7IH0NDQoJcmV0dXJuIGk7DQ0KfQ0NCg0NCi8qDQ0KICog RGlzcGxheSBwcm9ncmFtIGxpc3RpbmcNDQogKi8NDQpkaXNwX3BnbShGSUxF ICpmcCwgdW5zaWduZWQgaSwgdW5zaWduZWQgaikNDQp7DQ0KCXVuc2lnbmVk IGs7DQ0KCXN0cnVjdCBsaW5lX3JlY29yZCAqY3B0cjsNDQoJY2hhciBjOw0N Cg0NCglmb3IoY3B0ciA9IHBnbV9zdGFydDsgY3B0cjsgY3B0ciA9IGNwdHIt PkxsaW5rKSB7DQ0KCQlrID0gY3B0ci0+TG51bWJlcjsNDQoJCWlmKChrID49 IGkpICYmIChrIDw9IGopKSB7DQ0KCQkJZnByaW50ZihmcCwiJXUgIixrKTsN DQoJCQlmb3Ioaz0wOyBjID0gY3B0ci0+THRleHRba107ICsraykNDQoJCQkJ aWYoYyA8IDApIHsNDQoJCQkJCWMgPSBjICYgMTI3Ow0NCgkJCQkJZnB1dHMo cmVzZXJ2ZWRfd29yZHNbYyAtIDFdLCBmcCk7DQ0KCQkJCQlpZihjIDwgQURE KQ0NCgkJCQkJCXB1dGMoJyAnLGZwKTsgfQ0NCgkJCQllbHNlDQ0KCQkJCQlw dXRjKGMsZnApOw0NCgkJCXB1dGMoJ1xuJywgZnApOyB9IH0NDQp9DQ0KDQ0K LyoNDQogKiBUZXN0IGZvciBwcm9ncmFtIG9ubHksIGFuZCBlcnJvciBpZiBp bnRlcmFjdGl2ZQ0NCiAqLw0NCnBnbV9vbmx5KCkNDQp7DQ0KCWlmKCFtb2Rl KSBlcnJvcigyKTsNDQp9DQ0KDQ0KLyoNDQogKiBUZXN0IGZvciBkaXJlY3Qg b25seSwgYW5kIGVycm9yIGlmIHJ1bm5pbmcNDQogKi8NDQpkaXJlY3Rfb25s eSgpDQ0Kew0NCglpZihtb2RlKSBlcnJvcigxKTsNDQp9DQ0KDQ0KLyoNDQog KiBTa2lwIHJlc3Qgb2Ygc3RhdGVtZW50DQ0KICovDQ0Kc2tpcF9zdG10KCkN DQp7DQ0KCWNoYXIgYzsNDQoNDQoJd2hpbGUoKGM9KmNtZHB0cikgJiYgKGMg IT0gJzonKSkgew0NCgkJKytjbWRwdHI7DQ0KCQlpZihjID09ICciJykgew0N CgkJCXdoaWxlKChjPSpjbWRwdHIpICYmIChjICE9ICciJykpDQ0KCQkJCSsr Y21kcHRyOw0NCgkJCWlmKGMpICsrY21kcHRyOyB9IH0NDQp9DQ0KDQ0KLyoN DQogKiBEaXNsYXkgZXJyb3IgbWVzc2FnZQ0NCiAqLw0NCmVycm9yKHVuc2ln bmVkIGVuKQ0NCnsNDQoJcHJpbnRmKCIlcyBlcnJvciIsIGVycm9yX21lc3Nh Z2VzW2VuXSk7DQ0KCWlmKG1vZGUpDQ0KCQlwcmludGYoIiBpbiBsaW5lICV1 IiwgbGluZSk7DQ0KCXB1dGMoJ1xuJyxzdGRvdXQpOw0NCglsb25nam1wKHNh dmptcCwgMSk7DQ0KfQ0NCg0NCi8qDQ0KICogRXZhbHVhdGUgbnVtYmVyIG9u bHkgKG5vIGNoYXJhY3RlcikNDQogKi8NDQppbnQgZXZhbF9udW0oKQ0NCnsN DQoJdW5zaWduZWQgdmFsdWU7DQ0KDQ0KCXZhbHVlID0gZXZhbCgpOw0NCglp ZihleHByX3R5cGUpDQ0KCQllcnJvcig0KTsNDQoJcmV0dXJuIHZhbHVlOw0N Cn0NDQoNDQovKg0NCiAqIEV2YWx1YXRlIGNoYXJhY3RlciBvbmx5IChubyBu dW1lcmljKQ0NCiAqLw0NCmV2YWxfY2hhcigpDQ0Kew0NCglldmFsKCk7DQ0K CWlmKCFleHByX3R5cGUpDQ0KCQllcnJvcig0KTsNDQp9DQ0KDQ0KLyoNDQog KiBFdmFsdWF0ZSBhbiBleHByZXNzaW9uIChudW1lcmljIG9yIGNoYXJhY3Rl cikNDQogKi8NDQppbnQgZXZhbCgpDQ0Kew0NCgl1bnNpZ25lZCB2YWx1ZTsN DQoNDQoJbmVzdCA9IDA7DQ0KCXZhbHVlID0gZXZhbF9zdWIoKTsNDQoJaWYo bmVzdCAhPSAxKSBlcnJvcigwKTsNDQoJcmV0dXJuIHZhbHVlOw0NCn0NDQoN DQovKg0NCiAqIEV2YWx1YXRlIGEgc3ViIGV4cHJlc3Npb24NDQogKi8NDQpp bnQgZXZhbF9zdWIoKQkNDQp7DQ0KCXVuc2lnbmVkIHZhbHVlLCBuc3RhY2tb MTBdLCBucHRyLCBvcHRyOw0NCgljaGFyIGMsIG9zdGFja1sxMF07DQ0KDQ0K CSsrbmVzdDsJCQkJCQkJCS8qIGluZGljYXRlIHdlIHdlbnQgZG93biAqLw0N Cg0NCi8qIGVzdGFibGlzaCBmaXJzdCBlbnRyeSBvbiBudW1iZXIgYW5kIG9w ZXJhdG9yIHN0YWNrcyAqLw0NCglvc3RhY2tbb3B0ciA9IG5wdHIgPSAwXSA9 IDA7CQkvKiBhZGQgemVybyB0byBpbml0ICovDQ0KDQ0KCW5zdGFja1srK25w dHJdID0gZ2V0X3ZhbHVlKCk7CQkvKiBnZXQgbmV4dCB2YWx1ZSAqLw0NCi8q IHN0cmluZyBvcGVyYXRpb25zICovDQ0KCWlmKGV4cHJfdHlwZSkgewkJCQkJ CS8qIHN0cmluZyBvcGVyYXRpb25zICovDQ0KCQl3aGlsZSghaXNfZV9lbmQo YyA9IHNraXBfYmxhbmsoKSkpIHsNDQoJCQkrK2NtZHB0cjsNDQoJCQljICY9 IDB4N0Y7DQ0KCQkJZ2V0X2NoYXJfdmFsdWUoc2EyKTsNDQoJCQlpZihjID09 IEFERCkJCQkJLyogU3RyaW5nIGNvbmNhdGluYXRpb24gKi8NDQoJCQkJc3Ry Y2F0KHNhMSwgc2EyKTsNDQoJCQllbHNlIHsNDQoJCQkJaWYoYyA9PSBFUSkJ CQkJLyogU3RyaW5nIEVRVUFMUyAqLw0NCgkJCQkJdmFsdWUgPSAhc3RyY21w KHNhMSwgc2EyKTsNDQoJCQkJZWxzZSBpZihjID09IE5FKQkJLyogU3RyaW5n IE5PVCBFUVVBTFMgKi8NDQoJCQkJCXZhbHVlID0gc3RyY21wKHNhMSwgc2Ey KSAhPSAwOw0NCgkJCQllbHNlDQ0KCQkJCQllcnJvcigwKTsNDQoJCQkJbnN0 YWNrW25wdHJdID0gdmFsdWU7DQ0KCQkJCWV4cHJfdHlwZSA9IDA7IH0gfSB9 DQ0KDQ0KLyogbnVtZXJpYyBvcGVyYXRpb25zICovDQ0KCWVsc2Ugew0NCgkJ d2hpbGUoIWlzX2VfZW5kKGMgPSBza2lwX2JsYW5rKCkpKSB7DQ0KCQkJKytj bWRwdHI7DQ0KCQkJYyA9IChjICYgMHg3RikgLSAoQURELTEpOwkvKiAwIGJh c2VkIHByaW9yaXR5IHRhYmxlICovDQ0KCQkJaWYocHJpb3JpdHlbY10gPD0g cHJpb3JpdHlbb3N0YWNrW29wdHJdXSkgewkvKiBleGVjdXRlIG9wZXJhbmQg Ki8NDQoJCQkJdmFsdWUgPSBuc3RhY2tbbnB0ci0tXTsNDQoJCQkJbnN0YWNr W25wdHJdID0gZG9fYXJpdGgob3N0YWNrW29wdHItLV0sIG5zdGFja1tucHRy XSwgdmFsdWUpOyB9DQ0KCQkJbnN0YWNrWysrbnB0cl0gPSBnZXRfdmFsdWUo KTsJCS8qIHN0YWNrIG5leHQgb3BlcmFuZCAqLw0NCgkJCWlmKGV4cHJfdHlw ZSkgZXJyb3IoMCk7DQ0KCQkJb3N0YWNrWysrb3B0cl0gPSBjOyB9DQ0KCQl3 aGlsZShvcHRyKSB7CQkJCS8qIGNsZWFuIHVwIGFsbCBwZW5kaW5nIG9wZXJh dGlvbnMgKi8NDQoJCQl2YWx1ZSA9IG5zdGFja1tucHRyLS1dOw0NCgkJCW5z dGFja1tucHRyXSA9IGRvX2FyaXRoKG9zdGFja1tvcHRyLS1dLCBuc3RhY2tb bnB0cl0sIHZhbHVlKTsgfSB9DQ0KCWlmKGMgPT0gJyknKSB7DQ0KCQktLW5l c3Q7DQ0KCQkrK2NtZHB0cjsgfQ0NCglyZXR1cm4gbnN0YWNrW25wdHJdOw0N Cn0NDQoNDQovKg0NCiAqIEdldCBhIHZhbHVlIGVsZW1lbnQgZm9yIGFuIGV4 cHJlc3Npb24NDQogKi8NDQppbnQgZ2V0X3ZhbHVlKCkNDQp7DQ0KCXVuc2ln bmVkIHZhbHVlLCB2LCAqZHB0cjsNDQoJY2hhciBjLCAqcHRyOw0NCg0NCgll eHByX3R5cGUgPSAwOw0NCglpZihpc2RpZ2l0KGMgPSBza2lwX2JsYW5rKCkp KQ0NCgkJdmFsdWUgPSBnZXRfbnVtKCk7DQ0KCWVsc2Ugew0NCgkJKytjbWRw dHI7DQ0KCQlzd2l0Y2goYykgew0NCgkJCWNhc2UgJygnIDoJCQkvKiBuZXN0 aW5nICovDQ0KCQkJCXZhbHVlID0gZXZhbF9zdWIoKTsNDQoJCQkJYnJlYWs7 DQ0KCQkJY2FzZSAnIScgOgkJCS8qIG5vdCAqLw0NCgkJCQl2YWx1ZSA9IH5n ZXRfdmFsdWUoKTsNDQoJCQkJYnJlYWs7DQ0KCQkJY2FzZSAtMTI4K1NVQiA6 CS8qIG5lZ2F0ZSAqLw0NCgkJCQl2YWx1ZSA9IC1nZXRfdmFsdWUoKTsNDQoJ CQkJYnJlYWs7DQ0KCQkJY2FzZSAtMTI4K0FTQyA6CS8qIENvbnZlcnQgY2hh cmFjdGVyIHRvIG51bWJlciAqLw0NCgkJCQlldmFsX3N1YigpOw0NCgkJCQlp ZighZXhwcl90eXBlKSBlcnJvcig0KTsNDQoJCQkJdmFsdWUgPSAqc2ExICYg MjU1Ow0NCgkJCQlleHByX3R5cGUgPSAwOw0NCgkJCQlicmVhazsNDQoJCQlj YXNlIC0xMjgrTlVNIDoJLyogQ29udmVydCBzdHJpbmcgdG8gbnVtYmVyICov DQ0KCQkJCWV2YWxfc3ViKCk7DQ0KCQkJCWlmKCFleHByX3R5cGUpIGVycm9y KDQpOw0NCgkJCQl2YWx1ZSA9IGF0b2koc2ExKTsNDQoJCQkJZXhwcl90eXBl ID0gMDsNDQoJCQkJYnJlYWs7DQ0KCQkJY2FzZSAtMTI4K0FCUyA6CS8qIEFi c29sdXRlIHZhbHVlICovDQ0KCQkJCWlmKCh2YWx1ZSA9IGV2YWxfc3ViKCkp ID4gMzI3NjcpDQ0KCQkJCQl2YWx1ZSA9IC12YWx1ZTsNDQoJCQkJZ290byBu dW1iZXJfb25seTsNDQoJCQljYXNlIC0xMjgrUk5EIDoJLyogUmFuZG9tIG51 bWJlciAqLw0NCgkJCQl2YWx1ZSA9IHJhbmRvbShldmFsX3N1YigpKTsNDQoJ CQkJZ290byBudW1iZXJfb25seTsNDQoJCQljYXNlIC0xMjgrS0VZIDoJCS8q IEtleWJvYXJkIHRlc3QgKi8NDQoJCQkJLyogZXZhbF9zdWIoKTsgKi8NDQoJ CQkJZXhwZWN0KCcpJyk7DQ0KCQkJCXZhbHVlID0ga2J0c3QoKTsNDQoJCQkJ YnJlYWs7DQ0KCQkJY2FzZSAtMTI4K0lOUCA6CS8qIFJlYWQgZnJvbSBwb3J0 ICovDQ0KCQkJCXZhbHVlID0gaW4oZXZhbF9zdWIoKSk7DQ0KCQkJbnVtYmVy X29ubHk6DQ0KCQkJCWlmKGV4cHJfdHlwZSkgZXJyb3IoNCk7DQ0KCQkJCWJy ZWFrOw0NCgkJCWRlZmF1bHQ6CQkJLyogdGVzdCBmb3IgY2hhcmFjdGVyIGV4 cHJlc3Npb24gKi8NDQoJCQkJLS1jbWRwdHI7DQ0KCQkJCWlmKGlzYWxwaGEo YykpIHsJCS8qIHZhcmlhYmxlICovDQ0KCQkJCQl2YWx1ZSA9IGdldF92YXIo KTsNDQoJCQkJCWlmKGV4cHJfdHlwZSkgewkJLyogY2hhciAqLw0NCgkJCQkJ CWlmKHB0ciA9IGNoYXJfdmFyc1t2YWx1ZV0pDQ0KCQkJCQkJCXN0cmNweShz YTEsIHB0cik7DQ0KCQkJCQkJZWxzZQ0NCgkJCQkJCQlzdHJjcHkoc2ExLCAi Iik7IH0NDQoJCQkJCWVsc2Ugew0NCgkJCQkJCWlmKHRlc3RfbmV4dCgnKCcp KSB7CS8qIEFycmF5ICovDQ0KCQkJCQkJCWlmKCEoZHB0ciA9IGRpbV92YXJz W3ZhbHVlXSkpDQ0KCQkJCQkJCQllcnJvcigxMCk7DQ0KCQkJCQkJCWlmKCh2 ID0gZXZhbF9zdWIoKSkgPj0gZGltX2NoZWNrW3ZhbHVlXSkNDQoJCQkJCQkJ CWVycm9yKDEwKTsNDQoJCQkJCQkJdmFsdWUgPSBkcHRyW3ZdOyB9DQ0KCQkJ CQkJZWxzZQkJCQkJCS8qIFN0ZCB2YXJpYWJsZSAqLw0NCgkJCQkJCQl2YWx1 ZSA9IG51bV92YXJzW3ZhbHVlXTsgfSB9DQ0KCQkJCWVsc2UNDQoJCQkJCWdl dF9jaGFyX3ZhbHVlKHNhMSk7IH0gfQ0NCglyZXR1cm4gdmFsdWU7DQ0KfQ0N Cg0NCi8qDQ0KICogR2V0IGNoYXJhY3RlciB2YWx1ZQ0NCiAqLw0NCmdldF9j aGFyX3ZhbHVlKGNoYXIgKnB0cikNDQp7DQ0KCXVuc2lnbmVkIGk7DQ0KCWNo YXIgYywgKnN0Ow0NCg0NCglpZigoYyA9IGdldF9uZXh0KCkpID09ICciJykg ewkvKiBjaGFyYWN0ZXIgdmFsdWUgKi8NDQoJCXdoaWxlKChjID0gKmNtZHB0 cisrKSAhPSAnIicpIHsNDQoJCQlpZighYykgZXJyb3IoMCk7DQ0KCQkJKnB0 cisrID0gYzsgfQ0NCgkJKnB0ciA9IDA7IH0NDQoJZWxzZSBpZihpc2FscGhh KGMpKSB7CQkJLyogdmFyaWFibGUgKi8NDQoJCS0tY21kcHRyOw0NCgkJaSA9 IGdldF92YXIoKTsNDQoJCWlmKCFleHByX3R5cGUpDQ0KCQkJZXJyb3IoMCk7 DQ0KCQlpZihzdCA9IGNoYXJfdmFyc1tpXSkNDQoJCQlzdHJjcHkocHRyLHN0 KTsNDQoJCWVsc2UNDQoJCQlzdHJjcHkocHRyLCIiKTsgfQ0NCgllbHNlIGlm KGMgPT0gLTEyOCtDSFIpIHsJCS8qIENvbnZlcnQgbnVtYmVyIHRvIGNoYXJh Y3RlciAqLw0NCgkJKnB0cisrID0gZXZhbF9zdWIoKTsNDQoJCWlmKGV4cHJf dHlwZSkNDQoJCQllcnJvcig0KTsNDQoJCSpwdHIgPSAwOyB9DQ0KCWVsc2Ug aWYoYyA9PSAtMTI4K1NUUikgewkJLyogQ29udmVydCBudW1iZXIgdG8gc3Ry aW5nICovDQ0KCQludW1fc3RyaW5nKGV2YWxfc3ViKCksIHB0cik7DQ0KCQlp ZihleHByX3R5cGUpDQ0KCQkJZXJyb3IoNCk7IH0NDQoJZWxzZQ0NCgkJZXJy b3IoMCk7DQ0KCWV4cHJfdHlwZSA9IDE7DQ0KfQ0NCg0NCi8qDQ0KICogUGVy Zm9ybSBhbiBhcml0aG1ldGljIG9wZXJhdGlvbg0NCiAqLw0NCmludCBkb19h cml0aChjaGFyIG9wciwgdW5zaWduZWQgb3AxLCB1bnNpZ25lZCBvcDIpDQ0K ew0NCgl1bnNpZ25lZCB2YWx1ZTsNDQoNDQoJc3dpdGNoKG9wcikgew0NCgkJ Y2FzZSBBREQtKEFERC0xKSA6CQkvKiBhZGRpdGlvbiAqLw0NCgkJCXZhbHVl ID0gb3AxICsgb3AyOw0NCgkJCWJyZWFrOw0NCgkJY2FzZSBTVUItKEFERC0x KSA6CQkvKiBzdWJ0cmFjdGlvbiAqLw0NCgkJCXZhbHVlID0gb3AxIC0gb3Ay Ow0NCgkJCWJyZWFrOw0NCgkJY2FzZSBNVUwtKEFERC0xKSA6CQkvKiBtdWx0 aXBsaWNhdGlvbiAqLw0NCgkJCXZhbHVlID0gb3AxICogb3AyOw0NCgkJCWJy ZWFrOw0NCgkJY2FzZSBESVYtKEFERC0xKSA6CQkvKiBkaXZpc2lvbiAqLw0N CgkJCXZhbHVlID0gb3AxIC8gb3AyOw0NCgkJCWJyZWFrOw0NCgkJY2FzZSBN T0QtKEFERC0xKSA6CQkvKiBtb2R1bHVzICovDQ0KCQkJdmFsdWUgPSBvcDEg JSBvcDI7DQ0KCQkJYnJlYWs7DQ0KCQljYXNlIEFORC0oQURELTEpIDoJCS8q IGxvZ2ljYWwgYW5kICovDQ0KCQkJdmFsdWUgPSBvcDEgJiBvcDI7DQ0KCQkJ YnJlYWs7DQ0KCQljYXNlIE9SLShBREQtMSkgOgkJLyogbG9naWNhbCBvciAq Lw0NCgkJCXZhbHVlID0gb3AxIHwgb3AyOw0NCgkJCWJyZWFrOw0NCgkJY2Fz ZSBYT1ItKEFERC0xKSA6CQkvKiBleGNsdXNpdmUgb3IgKi8NDQoJCQl2YWx1 ZSA9IG9wMSBeIG9wMjsNDQoJCQlicmVhazsNDQoJCWNhc2UgRVEtKEFERC0x KSA6CQkvKiBlcXVhbHMgKi8NDQoJCQl2YWx1ZSA9IG9wMSA9PSBvcDI7DQ0K CQkJYnJlYWs7DQ0KCQljYXNlIE5FLShBREQtMSkgOgkJLyogbm90LWVxdWFs cyAqLw0NCgkJCXZhbHVlID0gb3AxICE9IG9wMjsNDQoJCQlicmVhazsNDQoJ CWNhc2UgTEUtKEFERC0xKSA6CQkvKiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8g Ki8NDQoJCQl2YWx1ZSA9IG9wMSA8PSBvcDI7DQ0KCQkJYnJlYWs7DQ0KCQlj YXNlIExULShBREQtMSkgOgkJLyogbGVzcyB0aGFuICovDQ0KCQkJdmFsdWUg PSBvcDEgPCBvcDI7DQ0KCQkJYnJlYWs7DQ0KCQljYXNlIEdFLShBREQtMSkg OgkJLyogZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICovDQ0KCQkJdmFsdWUg PSBvcDEgPj0gb3AyOw0NCgkJCWJyZWFrOw0NCgkJY2FzZSBHVC0oQURELTEp IDoJCS8qIGdyZWF0ZXIgdGhhbiAqLw0NCgkJCXZhbHVlID0gb3AxID4gb3Ay Ow0NCgkJCWJyZWFrOw0NCgkJZGVmYXVsdDoNDQoJCQllcnJvcigwKTsgfQ0N CglyZXR1cm4gdmFsdWU7DQ0KfQ0NCg0NCi8qDQ0KICogQ29udmVydCBhIG51 bWJlciB0byBhIHN0cmluZywgYW5kIHBsYWNlIGluIG1lbW9yeQ0NCiAqLw0N Cm51bV9zdHJpbmcodW5zaWduZWQgdmFsdWUsIGNoYXIgKnB0cikNDQp7DQ0K CWNoYXIgY3N0YWNrWzVdLCBjcHRyOw0NCg0NCgljcHRyID0gMDsNDQoNDQoJ aWYodmFsdWUgPiAzMjc2Nykgew0NCgkJKnB0cisrID0gJy0nOw0NCgkJdmFs dWUgPSAtdmFsdWU7IH0NDQoJZG8NDQoJCWNzdGFja1tjcHRyKytdID0gKHZh bHVlICUgMTApICsgJzAnOw0NCgl3aGlsZSh2YWx1ZSAvPSAxMCk7DQ0KCXdo aWxlKGNwdHIpDQ0KCQkqcHRyKysgPSBjc3RhY2tbLS1jcHRyXTsNDQoJKnB0 ciA9IDA7DQ0KfQ0NCg0NCi8qDQ0KICogQ2xlYXIgcHJvZ3JhbSBjb21wbGV0 ZWx5DQ0KICovDQ0KY2xlYXJfcGdtKCkNDQp7DQ0KCWZvcihydW5wdHIgPSBw Z21fc3RhcnQ7IHJ1bnB0cjsgcnVucHRyID0gcnVucHRyLT5MbGluaykNDQoJ CWZyZWUocnVucHRyKTsNDQoJcGdtX3N0YXJ0ID0gMDsNDQp9DQ0KDQ0KLyoN DQogKiBDbGVhciBhbGwgdmFyaWFibGVzIHRvIHplcm8NDQogKi8NDQpjbGVh cl92YXJzKCkNDQp7DQ0KCXVuc2lnbmVkIGk7DQ0KCWNoYXIgKnB0cjsNDQoN DQoJZm9yKGk9MDsgaSA8IE5VTV9WQVI7ICsraSkgew0NCgkJbnVtX3ZhcnNb aV0gPSAwOw0NCgkJaWYocHRyID0gY2hhcl92YXJzW2ldKSB7CS8qIENoYXJh Y3RlciB2YXJpYWJsZXMgKi8NDQoJCQlmcmVlKHB0cik7DQ0KCQkJY2hhcl92 YXJzW2ldID0gMDsgfQ0NCgkJaWYocHRyID0gZGltX3ZhcnNbaV0pIHsJCS8q IERpbWVuc2lvbmVkIGFycmF5cyAqLw0NCgkJCWZyZWUocHRyKTsNDQoJCQlk aW1fdmFyc1tpXSA9IDA7IH0gfQ0NCn0NDQoNDQovKg0NCiAqIEdldCBpbmRl eCBmb3IgdmFyaWFibGUgZnJvbSBpdHMgbmFtZQ0NCiAqLw0NCmludCBnZXRf dmFyKCkNDQp7DQ0KCXVuc2lnbmVkIGluZGV4Ow0NCgljaGFyIGM7DQ0KDQ0K CWlmKCFpc2FscGhhKGMgPSBnZXRfbmV4dCgpKSkNDQoJCWVycm9yKDApOw0N CglpbmRleCA9ICgoYyAtICdBJykgJiAweDFGKSAqIDEwOw0NCglpZihpc2Rp Z2l0KGMgPSAqY21kcHRyKSkgew0NCgkJaW5kZXggKz0gKGMgLSAnMCcpOw0N CgkJYyA9ICorK2NtZHB0cjsgfQ0NCglpZihjID09ICckJykgew0NCgkJKytj bWRwdHI7DQ0KCQlleHByX3R5cGUgPSAxOyB9DQ0KCWVsc2UNDQoJCWV4cHJf dHlwZSA9IDA7DQ0KDQ0KCXJldHVybiBpbmRleDsNDQp9DQ0KDQ0KLyoNDQog KiBNYWluIHByb2dyYW0NDQogKi8NDQptYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pDQ0Kew0NCglpbnQgaSwgajsNDQoNDQovKg0NCiAqIElmIGFyZ3Vt ZW50cyBhcmUgZ2l2ZW4sIGNvcHkgdGhlbSBpbnRvIHRoZSBBMCQsIEExJCwg QTIkIC4uLiB2YXJpYWJsZXMNDQogKi8NDQoJcGdtX3N0YXJ0ID0gaiA9IDA7 DQ0KCWZvcihpPTE7IGkgPCBhcmdjOyArK2kpDQ0KCQljaGFyX3ZhcnNbaisr XSA9IGFyZ3ZbaV07DQ0KDQ0KLyoNDQogKiBJZiBhIG5hbWUgaXMgZ2l2ZW4g b24gdGhlIGNvbW1hbmQgbGluZSwgbG9hZCBpdCBhcyBhIHByb2dyYW0gYW5k DQ0KICogcnVuIGltbWVkaWF0ZWx5LiBJZiB0aGUgcHJvZ3JhbSBkb2VzIG5v dCBleHBsaWNpdGx5IEVYSVQsIHdlIHdpbGwNDQogKiB0aGVuIHByb2NlZWQg dG8gYW4gaW50ZXJhY3RpdmUgc2Vzc2lvbg0NCiAqLw0NCglpZihqKSB7DQ0K CQljb25jYXQoZmlsZW5hbWUsIGNoYXJfdmFyc1swXSwgIi5CQVMiKTsNDQoJ CWlmKGZpbGVpbiA9IGZvcGVuKGZpbGVuYW1lLCAicnYiKSkgew0NCgkJCXdo aWxlKGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciktMSwgZmlsZWluKSkN DQoJCQkJZWRpdF9wcm9ncmFtKCk7DQ0KCQkJZmNsb3NlKGZpbGVpbik7DQ0K CQkJaWYoIXNldGptcChzYXZqbXApKQ0NCgkJCQlleGVjdXRlKFJVTjEpOyB9 IH0NDQoNDQovKg0NCiAqIERpc3BsYXkgaGVhZGVyIEFGVEVSIHJ1bm5pbmcg Y29tbWFuZCBsaW5lLCBzbyB0aGF0IHByb2dyYW1zIHJ1biBhcw0NCiAqICJi YXRjaCIgY29tbWFuZHMgdGVybWluYXRpbmcgd2l0aCBFWElUIGRvIG5vdCBn ZXQgIm5vaXNlIiBvdXRwdXQuDQ0KICovDQ0KCXByaW50ZigiTUlDUk8tQkFT SUMgMi4xIC0gQ29weXJpZ2h0IDE5ODItMjAwMCBEYXZlIER1bmZpZWxkLlxu Iik7DQ0KDQ0KCXNldGptcChzYXZqbXApOw0NCglmb3IoOzspIHsJCQkJCQkv KiBNYWluIGludGVyYWN0aXZlIGxvb3AgKi8NDQoJCWZwdXRzKCJSZWFkeVxu Iiwgc3Rkb3V0KTsNDQoJbm9wcm9tcHQ6IG1vZGUgPSBjdGxfcHRyID0gMDsN DQoJCWZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciktMSwgc3RkaW4pOw0N CgkJaWYoZWRpdF9wcm9ncmFtKCkpCQkJLyogVG9rZW5pemUgJiBlZGl0IGlm IE9LICovDQ0KCQkJZ290byBub3Byb21wdDsNDQoJCWlmKChpID0gKmNtZHB0 cikgPCAwKSB7CQkvKiBLZXl3b3JkLCBleGVjdXRlIGNvbW1hbmQgKi8NDQoJ CQkrK2NtZHB0cjsNDQoJCQlleGVjdXRlKGkpOyB9DQ0KCQllbHNlIGlmKGkp CQkJCQkvKiBVbmtub3duLCBhc3N1bWUgTEVUICovDQ0KCQkJZXhlY3V0ZShM RVQpOyB9DQ0KfQ0NCg== --1686161418-1322450431-981284596=:31748 Content-Type: text/plain; charset=us-ascii -- Want to unsubscribe from this list? Check out: http://cygwin.com/ml/#unsubscribe-simple --1686161418-1322450431-981284596=:31748--
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |