From mboxrd@z Thu Jan 1 00:00:00 1970 From: een@cs.chalmers.se To: gcc-gnats@gcc.gnu.org Subject: c++/4688: g++ hangs on this file (no output) Date: Thu, 25 Oct 2001 16:28:00 -0000 Message-id: <20011025220748.6404.qmail@sourceware.cygnus.com> X-SW-Source: 2001-10/msg00518.html List-Id: >Number: 4688 >Category: c++ >Synopsis: g++ hangs on this file (no output) >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Oct 25 16:26:28 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Niklas Een >Release: gcc version 2.96 20000731 (Linux-Mandrake 8.0 2.96-0.48mdk) >Organization: >Environment: >Description: When I added the 'ext_widenColor()' function, the program no longer compiles. G++ just hangs forever without producing any output. >How-To-Repeat: g++ -c Bug.C >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="Bug.C" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Bug.C" Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIElOTElORUQgSEVB REVSIEZJTEVTCgoKI2lmbmRlZiBHbG9iYWxfaAojZGVmaW5lIEdsb2JhbF9oCgojaW5jbHVkZSA8 Y2Fzc2VydD4KI2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxj c3RyaW5nPgoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgoKI2RlZmluZSBlbGVtc29mKHgpIChzaXpl b2YoeCkgLyBzaXplb2YoKih4KSkpCgppbmxpbmUgaW50IGltYXgoaW50IHgsIGludCB5KSAgICAg ICAgeyByZXR1cm4gKHggPiB5KSA/IHggOiB5OyAgICAgfQppbmxpbmUgaW50IGltYXgoaW50IHgs IGludCB5LCBpbnQgeikgeyByZXR1cm4gaW1heCh4LCBpbWF4KHksIHopKTsgfQoKLy8tIC0gLSAt IC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0g LSAtIC0gLSAtIC0gLQoKY2hhciogc3RydG9rcihjaGFyKiogc3JjLCBjb25zdCBjaGFyKiBzZXBz KTsKY2hhciogbnNwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pOwoKLy8tIC0gLSAtIC0g LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAt IC0gLSAtIC0gLQoKLy8gQXV0b21hdGljIGRpc3Bvc2FsIG9mIEMgYXJyYXlzOgovLwp0ZW1wbGF0 ZSA8Y2xhc3MgVD4KY2xhc3MgRnJlZSB7CiAgICBUKiAgdmVjOwpwdWJsaWM6CiAgICBGcmVlKFQq IHZlY18pIHsgdmVjID0gdmVjXzsgfQogICB+RnJlZSh2b2lkKSAgICB7IGZyZWUodmVjKTsgIH0K ICAgIG9wZXJhdG9yIFQqICh2b2lkKSB7IHJldHVybiB2ZWM7IH0KfTsKCiNkZWZpbmUgc0ZyZWUo Y3N0cikgKChjaGFyKilGcmVlPGNoYXI+KGNzdHIpKQoKLy8tIC0gLSAtIC0gLSAtIC0gLSAtIC0g LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLQoK Ly8gQXV0b21hdGljYWxseSByZXNpemFibGUgYXJyYXlzICh2aWEgJ3B1c2goKScgbWV0aG9kKToK Ly8KdGVtcGxhdGU8Y2xhc3MgVD4KY2xhc3MgdmVjIHsKICAgIFQqICBkYXRhOwogICAgaW50IGRh dGFfc3o7CiAgICBpbnQgZGF0YV9jYXA7CgogICAgdm9pZCAgICBncm93KHZvaWQpIHsKICAgICAg ICBkYXRhX2NhcCA9IChkYXRhX2NhcCArIDgpICogMjsKICAgICAgICBkYXRhID0gKFQqKXJlYWxs b2MoZGF0YSwgZGF0YV9jYXAqc2l6ZW9mKFQpKTsgfQoKcHVibGljOgogICAgaW50ICAgICAgc2l6 ZSAgKHZvaWQpIGNvbnN0IHsgcmV0dXJuIGRhdGFfc3o7IH0KICAgIHZvaWQgICAgIHNocmluayhp bnQgbmVsZW1zKSB7IGFzc2VydChuZWxlbXMgPD0gZGF0YV9zeik7IGRhdGFfc3ogLT0gbmVsZW1z OyB9CiAgICB2b2lkICAgICBwdXNoICAoVCBlbGVtKSAgICAgeyBpZiAoZGF0YV9zeiA9PSBkYXRh X2NhcCkgZ3JvdygpOyBkYXRhW2RhdGFfc3pdID0gZWxlbTsgZGF0YV9zeisrOyB9CiAgICBUJiAg ICAgICBsYXN0ICAodm9pZCkgICAgICAgeyByZXR1cm4gZGF0YVtkYXRhX3N6LTFdOyB9CiAgICBj b25zdCBUJiBsYXN0ICAodm9pZCkgY29uc3QgeyByZXR1cm4gZGF0YVtkYXRhX3N6LTFdOyB9CiAg ICB2b2lkICAgICBjbGVhciAodm9pZCkgICAgICAgeyBpZiAoZGF0YSAhPSBOVUxMKSBmcmVlKGRh dGEpOyBkYXRhID0gTlVMTDsgZGF0YV9zeiA9IDA7IGRhdGFfY2FwID0gMDsgfQoKICAgIFQmICAg ICAgIG9wZXJhdG9yIFtdIChpbnQgaW5kZXgpICAgICAgIHsgYXNzZXJ0KGluZGV4ID49IDAgJiYg aW5kZXggPCBkYXRhX3N6KTsgcmV0dXJuIGRhdGFbaW5kZXhdOyB9CiAgICBjb25zdCBUJiBvcGVy YXRvciBbXSAoaW50IGluZGV4KSBjb25zdCB7IGFzc2VydChpbmRleCA+PSAwICYmIGluZGV4IDwg ZGF0YV9zeik7IHJldHVybiBkYXRhW2luZGV4XTsgfQoKICAgIC8vICh0cmFuc2ZlciBvd25lcnNo aXAgb2YgYXJyYXkgdG8gY2FsbGVyLCB6ZXJvaW5nIHRoZSAndmVjJykKICAgIFQqICAgICAgY2xh aW0gKHZvaWQpICAgICAgICB7IFQqIHJldCA9IGRhdGE7IGRhdGEgPSBOVUxMOyBkYXRhX3N6ID0g MDsgZGF0YV9jYXAgPSAwOyByZXR1cm4gcmV0OyB9CgogICAgdmVjKHZvaWQpICAgICAgICAgICAg ICAgICAgIHsgZGF0YSA9IE5VTEw7IGRhdGFfc3ogPSAwOyBkYXRhX2NhcCA9IDA7IH0KICAgfnZl Yyh2b2lkKSAgICAgICAgICAgICAgICAgICB7IGNsZWFyKCk7IH0KfTsKCi8vPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQoKI2VuZGlmCgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIENhcmRzOiAoZml0cyBp biA2IGJpdHMpCgoKdHlwZWRlZiBpbnQgQ2FyZDsKCi8vIENhcmQgY29sb3JzIGFyZSBiZXR3ZWVu IDAuLjMgPSBIZWFydHMsIFNwYWRlcywgRGlhbW9uZHMsIENsdWJzLgovLyBDYXJkIHZhbHVlcyBh cmUgYmV0d2VlbiAwLi4xMiwgd2hlcmUgMD1Ud28sIDEyPUFjZS4KCmlubGluZSBpbnQgQ2FyZF9u ZXcoaW50IGNvbG9yLCBpbnQgdmFsdWUpIHsKICAgIHJldHVybiA0KnZhbHVlICsgY29sb3I7IH0K CiNkZWZpbmUgQ2FyZF9OVUxMIDUyICAgICAgICAvLyAoJ2RlY2tbXScgcmVsaWVzIG9uIHRoaXMg dmFsdWUpCgppbmxpbmUgaW50IGNvbG9yKENhcmQgYykKewogICAgc3RhdGljIGNvbnN0IGNoYXIg Y29sb3JbNTNdID0gewogICAgICAgIDAsIDEsIDIsIDMsCiAgICAgICAgMCwgMSwgMiwgMywKICAg ICAgICAwLCAxLCAyLCAzLAogICAgICAgIDAsIDEsIDIsIDMsCiAgICAgICAgMCwgMSwgMiwgMywK ICAgICAgICAwLCAxLCAyLCAzLAogICAgICAgIDAsIDEsIDIsIDMsCiAgICAgICAgMCwgMSwgMiwg MywKICAgICAgICAwLCAxLCAyLCAzLAogICAgICAgIDAsIDEsIDIsIDMsCiAgICAgICAgMCwgMSwg MiwgMywKICAgICAgICAwLCAxLCAyLCAzLAogICAgICAgIDAsIDEsIDIsIDMsCiAgICAgICAgLTEK ICAgIH07CiAgICByZXR1cm4gY29sb3JbY107Cn0KCmlubGluZSBpbnQgdmFsdWUoQ2FyZCBjKQp7 CiAgICBzdGF0aWMgY29uc3QgY2hhciB2YWx1ZVs1M10gPSB7CiAgICAgICAgIDAsICAwLCAgMCwg IDAsCiAgICAgICAgIDEsICAxLCAgMSwgIDEsCiAgICAgICAgIDIsICAyLCAgMiwgIDIsCiAgICAg ICAgIDMsICAzLCAgMywgIDMsCiAgICAgICAgIDQsICA0LCAgNCwgIDQsCiAgICAgICAgIDUsICA1 LCAgNSwgIDUsCiAgICAgICAgIDYsICA2LCAgNiwgIDYsCiAgICAgICAgIDcsICA3LCAgNywgIDcs CiAgICAgICAgIDgsICA4LCAgOCwgIDgsCiAgICAgICAgIDksICA5LCAgOSwgIDksCiAgICAgICAg MTAsIDEwLCAxMCwgMTAsCiAgICAgICAgMTEsIDExLCAxMSwgMTEsCiAgICAgICAgMTIsIDEyLCAx MiwgMTIsCiAgICAgICAgLTEKICAgIH07CiAgICByZXR1cm4gdmFsdWVbY107Cn0KCmlubGluZSBj aGFyIGNvbG9yTmFtZShDYXJkIGMpIHsKICAgIHN0YXRpYyBjaGFyIG5hbWVbXSA9IHsgJz8nLCAn aCcsICdzJywgJ2QnLCAnYycgfTsKICAgIHJldHVybiBuYW1lW2NvbG9yKGMpKzFdOyB9Cgppbmxp bmUgY2hhciB2YWx1ZU5hbWUoQ2FyZCBjKQp7CiAgICBzdGF0aWMgY2hhciBuYW1lW10gPSB7ICc/ JywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICdUJywgJ0onLCAnUScs ICdLJywgJ0EnIH07CiAgICByZXR1cm4gbmFtZVt2YWx1ZShjKSsxXTsgfQoKCi8vPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLy8gTWFpbiBzdHVmZjoKCgplbnVtIEtpbmQgewogICAga2luZF9TdEZsdXNo ICA9IDgsICAvLyAwOnRvcCBjYXJkCiAgICBraW5kXzRLaW5kICAgID0gNywgIC8vIDA6b2Ygd2hh dCwgMTpraWNrZXIKICAgIGtpbmRfRkhvdXNlICAgPSA2LCAgLy8gMDp0aHJlZSBvZiB3aGF0LCAx OnR3byBvZiB3aGF0CiAgICBraW5kX0ZsdXNoICAgID0gNSwgIC8vIDAuLjQ6dmFsdWVzCiAgICBr aW5kX1N0cmFpZ2h0ID0gNCwgIC8vIDA6dG9wIGNhcmQKICAgIGtpbmRfM0tpbmQgICAgPSAzLCAg Ly8gMDp0aHJlZSBvZiB3aGF0LCAxLi4yOmtpY2tlcnMKICAgIGtpbmRfMlBhaXIgICAgPSAyLCAg Ly8gMDpoaWdoIHBhaXIsIDE6bG93IHBhaXIsIDI6a2lja2VyCiAgICBraW5kX1BhaXIgICAgID0g MSwgIC8vIDA6cGFpciwgMS4uMzpraWNrZXJzCiAgICBraW5kX05vdGhpbmcgID0gMCwgIC8vIDAu LjQ6dmFsdWVzCn07CgoKc3RydWN0IEhhbmQgewogICAgS2luZCAgICBraW5kOwogICAgaW50ICAg ICBwYXJhbXNbNV07ICAgICAgLy8gKHVudXNlZCBwYXJhbWV0ZXJzIGFyZSBzZXQgdG8gLTEpCn07 CgoKdm9pZCBiZXN0SGFuZChDYXJkIGNhcmRzX1s3XSwgSGFuZCYgcmVzdWx0KTsKYm9vbCBiZXR0 ZXIoY29uc3QgSGFuZCYgYSwgY29uc3QgSGFuZCYgYik7CnZvaWQgZHVtcENhcmRzKENhcmQqIGNh cmRzLCBpbnQgbmNhcmRzID0gNywgYm9vbCBuZXdsaW5lID0gdHJ1ZSk7CmJvb2wgcGFyc2VIYW5k KGNoYXIqIHRleHRfLCBpbnQgbmNhcmRzLCBDYXJkKiByZXN1bHQpOwoKCgovLz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gQUNUVUFMIFBST0dSQU0KCgp0eXBlZGVm IGludCBIb2xlOyAgIC8vICdmaXJzdCArIHNlY29uZCo1MicuCgppbmxpbmUgSG9sZSBobm9ybShI b2xlIGhvbGUpIHsKICAgIGludCAgICAgZnN0ID0gaG9sZSAlIDUyOwogICAgaW50ICAgICBzbmQg PSBob2xlIC8gNTI7CiAgICBpZiAoc25kIDwgZnN0KQogICAgICAgIHJldHVybiBob2xlOwogICAg ZWxzZQogICAgICAgIHJldHVybiBmc3QqNTIgKyBzbmQ7Cn0KCnN0cnVjdCBIb2xlU3RhdCB7CiAg ICBIb2xlICAgIGhvbGU7CiAgICBkb3VibGUgIFBfYmVhdDsKfTsKCmludCBIb2xlU3RhdF9jb21w YXJlKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpeyAgICAgLy8gKGludGVudGlvbmFsbHkg cmV2ZXJzZSBjb21wYXJlKQogICAgZG91YmxlICBBID0gKChIb2xlU3RhdCopYSktPlBfYmVhdDsK ICAgIGRvdWJsZSAgQiA9ICgoSG9sZVN0YXQqKWIpLT5QX2JlYXQ7CiAgICByZXR1cm4gKEIgPiBB KSAtIChBID4gQik7IH0KCgpzdHJ1Y3QgSG9sZVN0YXRfaW50ZXJuYWwgewogICAgaW50ICAgICBo YWxmYmVhdHM7CiAgICBpbnQgICAgIG47Cn07CgoKdm9pZCBldmFsSG9sZV9mbG9wKEhvbGUgbXks IENhcmQgY29tbXVuaXR5WzNdLAogICAgICAgICAgICAgICAgICAgSG9sZVN0YXQgcmVzdWx0WzEw ODFdKQp7CiAgICBIb2xlU3RhdF9pbnRlcm5hbCAgIGhvbGVzWzUyKjUyXTsKCiAgICBDYXJkICAg IG15X2hhbmRbN10sIG9wX2hhbmRbN107CiAgICBpbnQgICAgIGksIGosIHUsIHY7CiAgICBIYW5k ICAgIG1lLCBvcDsKCiAgICBmb3IgKGkgPSAwOyBpIDwgNTIqNTI7IGkrKykKICAgICAgICBob2xl c1tpXS5oYWxmYmVhdHMgPSAwLAogICAgICAgIGhvbGVzW2ldLm4gICAgICAgICA9IDA7CgogICAg bXlfaGFuZFswXSA9IG15ICUgNTI7CiAgICBteV9oYW5kWzFdID0gbXkgLyA1MjsKICAgIG15X2hh bmRbMl0gPSBvcF9oYW5kWzJdID0gY29tbXVuaXR5WzBdOwogICAgbXlfaGFuZFszXSA9IG9wX2hh bmRbM10gPSBjb21tdW5pdHlbMV07CiAgICBteV9oYW5kWzRdID0gb3BfaGFuZFs0XSA9IGNvbW11 bml0eVsyXTsKCiAgICAvLyBGb3IgZWFjaCByaXZlcjoKICAgIGZvciAoaSA9IDA7IGkgPCA1Mjsg aSsrKXsKICAgICAgICBpZiAoaSA9PSBteV9oYW5kWzBdIHx8IGkgPT0gbXlfaGFuZFsxXSB8fCBp ID09IG15X2hhbmRbMl0gfHwgaSA9PSBteV9oYW5kWzNdIHx8IGkgPT0gbXlfaGFuZFs0XSkgY29u dGludWU7CiAgICAgICAgbXlfaGFuZFs1XSA9IG9wX2hhbmRbNV0gPSBpOwoKICAgICAgICBmb3Ig KGogPSAwOyBqIDwgaTsgaisrKXsKICAgICAgICAgICAgaWYgKGogPT0gbXlfaGFuZFswXSB8fCBq ID09IG15X2hhbmRbMV0gfHwgaiA9PSBteV9oYW5kWzJdIHx8IGogPT0gbXlfaGFuZFszXSB8fCBq ID09IG15X2hhbmRbNF0gfHwgaiA9PSBteV9oYW5kWzVdKSBjb250aW51ZTsKICAgICAgICAgICAg bXlfaGFuZFs2XSA9IG9wX2hhbmRbNl0gPSBqOwoKICAgICAgICAgICAgYmVzdEhhbmQobXlfaGFu ZCwgbWUpOwoKICAgICAgICAgICAgLy8gRm9yIGVhY2ggb3Bwb25lbnQgaG9sZToKICAgICAgICAg ICAgZm9yICh1ID0gMDsgdSA8IDUyOyB1KyspewogICAgICAgICAgICAgICAgaWYgKHUgPT0gbXlf aGFuZFswXSB8fCB1ID09IG15X2hhbmRbMV0gfHwgdSA9PSBteV9oYW5kWzJdIHx8IHUgPT0gbXlf aGFuZFszXSB8fCB1ID09IG15X2hhbmRbNF0gfHwgdSA9PSBteV9oYW5kWzVdIHx8IHUgPT0gbXlf aGFuZFs2XSkgY29udGludWU7CiAgICAgICAgICAgICAgICBvcF9oYW5kWzBdID0gdTsKCiAgICAg ICAgICAgICAgICBmb3IgKHYgPSAwOyB2IDwgdTsgdisrKXsKICAgICAgICAgICAgICAgICAgICBp ZiAodiA9PSBteV9oYW5kWzBdIHx8IHYgPT0gbXlfaGFuZFsxXSB8fCB2ID09IG15X2hhbmRbMl0g fHwgdiA9PSBteV9oYW5kWzNdIHx8IHYgPT0gbXlfaGFuZFs0XSB8fCB2ID09IG15X2hhbmRbNV0g fHwgdiA9PSBteV9oYW5kWzZdIHx8IHYgPT0gb3BfaGFuZFswXSkgY29udGludWU7CiAgICAgICAg ICAgICAgICAgICAgb3BfaGFuZFsxXSA9IHY7CgogICAgICAgICAgICAgICAgICAgIGJlc3RIYW5k KG9wX2hhbmQsIG9wKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGJldHRlcihvcCwgbWUpKQog ICAgICAgICAgICAgICAgICAgICAgICBob2xlc1t1KzUyKnZdLmhhbGZiZWF0cyArPSAyOwogICAg ICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFiZXR0ZXIobWUsIG9wKSkKICAgICAgICAgICAgICAg ICAgICAgICAgaG9sZXNbdSs1Mip2XS5oYWxmYmVhdHMgKz0gMTsKICAgICAgICAgICAgICAgICAg ICBob2xlc1t1KzUyKnZdLm4rKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAg ICAgIH0KICAgIH0KCiAgICBqID0gMDsKICAgIGZvciAoaSA9IDA7IGkgPCA1Mio1MjsgaSsrKXsK ICAgICAgICBpZiAoaG9sZXNbaV0ubiA+IDApewogICAgICAgICAgICBhc3NlcnQoaiA8IDEwODEp OwogICAgICAgICAgICByZXN1bHRbal0uaG9sZSAgID0gaTsKICAgICAgICAgICAgcmVzdWx0W2pd LlBfYmVhdCA9IChkb3VibGUpaG9sZXNbaV0uaGFsZmJlYXRzIC8gKDIqaG9sZXNbaV0ubik7CiAg ICAgICAgICAgIGorKzsKICAgICAgICB9CiAgICB9CiAgICBhc3NlcnQoaiA9PSAxMDgxKTsKfQoK Ci8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKCmVudW0gRXh0Q29s b3IgewogICAgeGNfSGVhcnRzICAgPSAwLAogICAgeGNfU3BhZGVzICAgPSAxLAogICAgeGNfRGlh bW9uZHMgPSAyLAogICAgeGNfQ2x1YnMgICAgPSAzLAogICAgeGNfQnV0SGVhcnRzLAogICAgeGNf QnV0U3BhZGVzLAogICAgeGNfQnV0RGlhbW9uZHMsCiAgICB4Y19CdXRDbHVicywKICAgIHhjX0Fu eSwKfTsKCnN0cnVjdCBFeHRWYWx1ZSB7CiAgICBpbnQgICAgIGZyb207CiAgICBpbnQgICAgIHRv Owp9OwoKc3RydWN0IEV4dENhcmQgewogICAgRXh0Q29sb3IgICAgeGNvbG9yOwogICAgRXh0VmFs dWUgICAgeHZhbHVlOwp9OwoKc3RydWN0IEV4dEhvbGUgewogICAgRXh0Q2FyZCBmc3Q7CiAgICBF eHRDYXJkIHNuZDsKfTsKCiNkZWZpbmUgY19FeGNsdWRlICAwCiNkZWZpbmUgY19JbmNsdWRlICAx CiNkZWZpbmUgY19Eb250Y2FyZSAyCgoKc3RhdGljCkV4dEhvbGUgZXh0X2luamVjdChIb2xlIGhv bGUpCnsKICAgIEV4dEhvbGUgeGhvbGU7CgogICAgeGhvbGUuZnN0Lnh2YWx1ZS5mcm9tID0gdmFs dWUoaG9sZSAlIDUyKTsKICAgIHhob2xlLmZzdC54dmFsdWUudG8gICA9IHZhbHVlKGhvbGUgJSA1 Mik7CiAgICB4aG9sZS5mc3QueGNvbG9yICAgICAgPSAoRXh0Q29sb3IpY29sb3IoaG9sZSAlIDUy KTsKCiAgICB4aG9sZS5zbmQueHZhbHVlLmZyb20gPSB2YWx1ZShob2xlIC8gNTIpOwogICAgeGhv bGUuc25kLnh2YWx1ZS50byAgID0gdmFsdWUoaG9sZSAvIDUyKTsKICAgIHhob2xlLnNuZC54Y29s b3IgICAgICA9IChFeHRDb2xvciljb2xvcihob2xlIC8gNTIpOwoKICAgIHJldHVybiB4aG9sZTsK fQoKCnN0YXRpYwpFeHRIb2xlIGV4dF93aWRlblJhbmdlKEV4dEhvbGUgeGhvbGUsIGNoYXIgaG9s ZV9zdGF0WzUyKjUyXSkKewogICAgcmV0dXJuIHhob2xlOwp9CgoKc3RhdGljCkV4dEhvbGUgZXh0 X3dpZGVuQ29sb3IoRXh0SG9sZSB4aG9sZSwgY2hhciBob2xlX3N0YXRbNTIqNTJdKQp7CiAgICBp bnQgICAgIGksIGo7CiAgICBpbnQgICAgIG1hc2sgPSAweEZGRkY7CgogICAgZm9yIChpID0geGhv bGUuZnN0Lnh2YWx1ZS5mcm9tOyBpIDw9IHhob2xlLmZzdC54dmFsdWUudG87IGkrKyl7CiAgICAg ICAgZm9yIChqID0geGhvbGUuc25kLnh2YWx1ZS5mcm9tOyBqIDw9IHhob2xlLnNuZC54dmFsdWUu dG87IGorKykKICAgICAgICAgICAgbWFzayAmPSAgKGhvbGVfc3RhdFtobm9ybShpKjQrMCArIDUy KihqKjQrMCkpXSAhPSBjX0V4Y2x1ZGUpCiAgICAgICAgICAgICAgICAgIHwgKChob2xlX3N0YXRb aG5vcm0oaSo0KzAgKyA1Miooaio0KzEpKV0gIT0gY19FeGNsdWRlKSA8PCAgMSkKICAgICAgICAg ICAgICAgICAgfCAoKGhvbGVfc3RhdFtobm9ybShpKjQrMCArIDUyKihqKjQrMikpXSAhPSBjX0V4 Y2x1ZGUpIDw8ICAyKQogICAgICAgICAgICAgICAgICB8ICgoaG9sZV9zdGF0W2hub3JtKGkqNCsw ICsgNTIqKGoqNCszKSldICE9IGNfRXhjbHVkZSkgPDwgIDMpCiAgICAgICAgICAgICAgICAgIHwg KChob2xlX3N0YXRbaG5vcm0oaSo0KzEgKyA1Miooaio0KzApKV0gIT0gY19FeGNsdWRlKSA8PCAg NCkKICAgICAgICAgICAgICAgICAgfCAoKGhvbGVfc3RhdFtobm9ybShpKjQrMSArIDUyKihqKjQr MSkpXSAhPSBjX0V4Y2x1ZGUpIDw8ICA1KQogICAgICAgICAgICAgICAgICB8ICgoaG9sZV9zdGF0 W2hub3JtKGkqNCsxICsgNTIqKGoqNCsyKSldICE9IGNfRXhjbHVkZSkgPDwgIDYpCiAgICAgICAg ICAgICAgICAgIHwgKChob2xlX3N0YXRbaG5vcm0oaSo0KzEgKyA1Miooaio0KzMpKV0gIT0gY19F eGNsdWRlKSA8PCAgNykKICAgICAgICAgICAgICAgICAgfCAoKGhvbGVfc3RhdFtobm9ybShpKjQr MiArIDUyKihqKjQrMCkpXSAhPSBjX0V4Y2x1ZGUpIDw8ICA4KQogICAgICAgICAgICAgICAgICB8 ICgoaG9sZV9zdGF0W2hub3JtKGkqNCsyICsgNTIqKGoqNCsxKSldICE9IGNfRXhjbHVkZSkgPDwg IDkpCiAgICAgICAgICAgICAgICAgIHwgKChob2xlX3N0YXRbaG5vcm0oaSo0KzIgKyA1Miooaio0 KzIpKV0gIT0gY19FeGNsdWRlKSA8PCAxMCkKICAgICAgICAgICAgICAgICAgfCAoKGhvbGVfc3Rh dFtobm9ybShpKjQrMiArIDUyKihqKjQrMykpXSAhPSBjX0V4Y2x1ZGUpIDw8IDExKQogICAgICAg ICAgICAgICAgICB8ICgoaG9sZV9zdGF0W2hub3JtKGkqNCszICsgNTIqKGoqNCswKSldICE9IGNf RXhjbHVkZSkgPDwgMTIpCiAgICAgICAgICAgICAgICAgIHwgKChob2xlX3N0YXRbaG5vcm0oaSo0 KzMgKyA1Miooaio0KzEpKV0gIT0gY19FeGNsdWRlKSA8PCAxMykKICAgICAgICAgICAgICAgICAg fCAoKGhvbGVfc3RhdFtobm9ybShpKjQrMyArIDUyKihqKjQrMikpXSAhPSBjX0V4Y2x1ZGUpIDw8 IDE0KQogICAgICAgICAgICAgICAgICB8ICgoaG9sZV9zdGF0W2hub3JtKGkqNCszICsgNTIqKGoq NCszKSldICE9IGNfRXhjbHVkZSkgPDwgMTUpOwogICAgfQoKLyoqL3ByaW50ZigiJWRcbiIsIG1h c2spOwogICAgcmV0dXJuIHhob2xlOwp9CgoKc3RhdGljCmludCBleHRfY29tcGFyZShFeHRIb2xl IGgxLCBFeHRIb2xlIGgyKSB7CiAgICByZXR1cm4gbWVtY21wKCZoMSwgJmgyLCBzaXplb2YoRXh0 SG9sZSkpOyB9CgoKc3RhdGljCnZvaWQgZ3JvdXBDYXJkcyh2ZWM8SG9sZT4gaW5jbHVkZSwgdmVj PEhvbGU+IGRvbnRjYXJlcywKICAgICAgICAgICAgICAgIHZlYzxFeHRIb2xlPiYgcmVzdWx0KQp7 CiAgICBjaGFyICAgICAgICAgICAgaG9sZV9zdGF0WzUyKjUyXTsKICAgIHZlYzxFeHRIb2xlPiAg ICBjYW5kaWRhdGVzOwoKICAgIGludCAgICAgaTsKCiAgICAvLyBJbml0aWFsaXplIGhvbGUgc3Rh dHMKCiAgICBmb3IgKGkgPSAwOyBpIDwgNTIqNTI7IGkrKykKICAgICAgICBob2xlX3N0YXRbaV0g PSBjX0V4Y2x1ZGU7CiAgICBmb3IgKGkgPSAwOyBpIDwgaW5jbHVkZS5zaXplKCk7IGkrKykKICAg ICAgICBob2xlX3N0YXRbaG5vcm0oaW5jbHVkZVtpXSldID0gY19JbmNsdWRlOwogICAgZm9yIChp ID0gMDsgaSA8IGRvbnRjYXJlcy5zaXplKCk7IGkrKykKICAgICAgICBhc3NlcnQoaG9sZV9zdGF0 W2hub3JtKGRvbnRjYXJlc1tpXSldID09IGNfRXhjbHVkZSksCiAgICAgICAgaG9sZV9zdGF0W2hu b3JtKGRvbnRjYXJlc1tpXSldID0gY19Eb250Y2FyZTsKCiAgICAvLyBHZW5lcmF0ZSBjYW5kaWRh dGVzCgogICAgZm9yIChpID0gMDsgaSA8IGluY2x1ZGUuc2l6ZSgpOyBpKyspewogICAgICAgIEV4 dEhvbGUgYWx0MSA9IGV4dF93aWRlblJhbmdlKGV4dF93aWRlbkNvbG9yKGV4dF9pbmplY3QoaW5j bHVkZVtpXSksIGhvbGVfc3RhdCksIGhvbGVfc3RhdCk7CiAgICAgICAgRXh0SG9sZSBhbHQyID0g ZXh0X3dpZGVuQ29sb3IoZXh0X3dpZGVuUmFuZ2UoZXh0X2luamVjdChpbmNsdWRlW2ldKSwgaG9s ZV9zdGF0KSwgaG9sZV9zdGF0KTsKICAgICAgICBjYW5kaWRhdGVzLnB1c2goYWx0MSk7CiAgICAg ICAgaWYgKGV4dF9jb21wYXJlKGFsdDEsIGFsdDIpICE9IDApCiAgICAgICAgICAgIGNhbmRpZGF0 ZXMucHVzaChhbHQyKTsKICAgIH0KCiAgICAvLyBDaG9vc2UgZ29vZCBjb3ZlcmluZyBzdWJzZXQK Cgp9CgoKI2lmIDEKCmludCBtYWluKHZvaWQpCnsKICAgIEhvbGVTdGF0ICAgIHJlc3VsdFsxMDgx XTsKCiAgICBDYXJkICAgIGhvbGUgICAgIFsyXSA9IHsgMzcsIDI3IH07CiAgICBDYXJkICAgIGNv bW11bml0eVszXSA9IHsgNTAsIDQsIDEwIH07CgogICAgZXZhbEhvbGVfZmxvcChob2xlWzBdKjUy K2hvbGVbMV0sIGNvbW11bml0eSwgcmVzdWx0KTsKCiAgICBwcmludGYoIkhPTEUgIDogIik7IGR1 bXBDYXJkcyhob2xlLCAyKTsKICAgIHByaW50ZigiQ09NTU9OOiAiKTsgZHVtcENhcmRzKGNvbW11 bml0eSwgMyk7CiAgICBwcmludGYoIlxuUkVTVUxUOlxuPT09PT09PT09PT09PT09PT09PT0iKTsK CiAgICBxc29ydChyZXN1bHQsIDEwODEsIHNpemVvZihIb2xlU3RhdCksIEhvbGVTdGF0X2NvbXBh cmUpOwogICAgZG91YmxlIGxhc3QgPSAtMTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA4MTsg aSsrKXsKICAgICAgICBpZiAocmVzdWx0W2ldLlBfYmVhdCAhPSBsYXN0KXsKICAgICAgICAgICAg bGFzdCA9IHJlc3VsdFtpXS5QX2JlYXQ7CiAgICAgICAgICAgIHByaW50ZigiXG4lMy4xZiUlIDog IiwgcmVzdWx0W2ldLlBfYmVhdCAqIDEwMCk7IH0KICAgICAgICBob2xlWzBdID0gcmVzdWx0W2ld LmhvbGUgJSA1MjsKICAgICAgICBob2xlWzFdID0gcmVzdWx0W2ldLmhvbGUgLyA1MjsKICAgICAg ICBwcmludGYoIlsiKTsgZHVtcENhcmRzKGhvbGUsIDIsIGZhbHNlKTsgcHJpbnRmKCJdICIpOwog ICAgfQogICAgcHJpbnRmKCJcbiIpOwoKICAgIHJldHVybiAwOwp9CgojZWxzZQoKaW50IG1haW4o dm9pZCkKewogICAgQ2FyZCAgICBjYXJkc1s3XTsKICAgIEhhbmQgICAgcmVzdWx0OwoKICAgIHBh cnNlSGFuZCgic0ogYzggZEEgaDMgZDQgczIgczUiLCA3LCBjYXJkcyk7CiAgICBiZXN0SGFuZChj YXJkcywgcmVzdWx0KTsKICAgIHByaW50ZigiJWQgOiAlZCAlZCAlZCAlZCAlZFxuIiwgcmVzdWx0 LmtpbmQsIHJlc3VsdC5wYXJhbXNbMF0sIHJlc3VsdC5wYXJhbXNbMV0sIHJlc3VsdC5wYXJhbXNb Ml0sIHJlc3VsdC5wYXJhbXNbM10sIHJlc3VsdC5wYXJhbXNbNF0pOwoKICAgIHBhcnNlSGFuZCgi ZDMgczMgZEEgaDMgZDQgczIgczUiLCA3LCBjYXJkcyk7CiAgICBiZXN0SGFuZChjYXJkcywgcmVz dWx0KTsKICAgIHByaW50ZigiJWQgOiAlZCAlZCAlZCAlZCAlZFxuIiwgcmVzdWx0LmtpbmQsIHJl c3VsdC5wYXJhbXNbMF0sIHJlc3VsdC5wYXJhbXNbMV0sIHJlc3VsdC5wYXJhbXNbMl0sIHJlc3Vs dC5wYXJhbXNbM10sIHJlc3VsdC5wYXJhbXNbNF0pOwoKICAgIHJldHVybiAwOwp9CgojZW5kaWYK