From olav.kolbu@usit.uio.no Wed Oct 8 14:40:47 1997 Received: from astart.com (papowell@astart4.astart.com [206.71.174.196]) by astart4.astart.com (8.8.5/8.8.5) with ESMTP id OAA00554 for ; Wed, 8 Oct 1997 14:40:46 -0700 (PDT) Received: from pat (pat.uio.no [129.240.130.16]) by astart2.astart.com (8.8.7/8.8.5) with SMTP id OAA22330 for ; Wed, 8 Oct 1997 14:30:46 -0700 (PDT) Received: from aragorn.uio.no by pat with local-SMTP (PP); Wed, 8 Oct 1997 23:27:42 +0200 Received: from localhost (ok@localhost) by aragorn.uio.no ; Wed, 8 Oct 1997 23:27:41 +0200 (METDST) Date: Wed, 8 Oct 1997 23:27:41 +0200 (METDST) From: Olav Kolbu X-Sender: ok@aragorn.uio.no Reply-To: Olav Kolbu To: papowell@astart2.astart.com Subject: Re: [LPRng] Help! I need some Perl/Tk code written In-Reply-To: <199710072158.OAA25525@astart4.astart.com> Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="2016706854-824023566-876346061=:26316" Status: R This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --2016706854-824023566-876346061=:26316 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi there! Attached you'll find first draft of the program you requested, largely untested since I don't run LPRng :-). There is a small TODO list that I haven't had time to do yet, will get to that shortly: # TODO: # 1. SIGALRM a timeout on each connection to make sure some twit # doesn't stop us dead by connecting and leaving the connection # open. # 2. Man page. # 3. Testing & bugfixing. # 4. UDP support Other than that it does more or less what you want I think. LPR/jobinfo.pl [-u] [-d] [-m ] [-s ] [-p ] [-P ] -u Usage -d Debug output on STDERR -m Single or continous messages (Default continous) -s Regexps matching valid client hosts -p Regexps matching valid client ports -P Port number to connect to (Default 3456) -r Seconds to wait in select (Default 1 sec) Feedback welcome, I'll maintain it if you want to. OK PS Quick question while I have your attention: You may remember my Esc-E problem, where ifhp caused errors on my HP4 printers. Your latest comment was that the printers must be hardwired to be PostScript printers. The display definitively says "Auto" when looking at the language so what I was wondering was if there is any other way of allowing PCL/PJL or if Auto really means it groks PCL/PJL. -- Olav Kolbu (Olav.Kolbu@usit.uio.no) System Administrator Center for Information Technology Services/Section for Operations University of Oslo P.O. Box 1059 Blindern, N-0316 Oslo, Norway Phone: +47 22 85 27 80, Fax: +47 22 85 27 30 --2016706854-824023566-876346061=:26316 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="jobinfo.pl" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: JobInfo.pl, Perl/Tk program IyEvb3B0L0xXcGVybC9iaW4vcGVybA0KIw0KIyBDb3B5cmlnaHQgMTk5NyBP bGF2IEtvbGJ1IDxvbGF2QGtvbGJ1LmNvbT4NCiMNCiMgVXNlIGFuZCBkaXN0 cmlidXRpb24gb2YgdGhpcyBzb2Z0d2FyZSBpcyBjb3ZlcmVkIGJ5IHRoZSBH TlUgQ09QWUlORw0KIyBsaWNlbnNlLiAgUGxlYXNlIHJlZmVyIHRvIHRoaXMg Zm9yIHRlcm1zIGFuZCBjb25kaXRpb25zLg0KIw0KIyBUT0RPOiANCiMgICAg ICAgMS4gU0lHQUxSTSBhIHRpbWVvdXQgb24gZWFjaCBjb25uZWN0aW9uIHRv IG1ha2Ugc3VyZSBzb21lIHR3aXQNCiMgICAgICAgICAgZG9lc24ndCBzdG9w IHVzIGRlYWQgYnkgY29ubmVjdGluZyBhbmQgbGVhdmluZyB0aGUgY29ubmVj dGlvbiANCiMgICAgICAgICAgb3Blbi4NCiMgICAgICAgMi4gTWFuIHBhZ2Uu DQojICAgICAgIDMuIFRlc3RpbmcgJiBidWdmaXhpbmcuDQojICAgICAgIDQu IFVEUCBzdXBwb3J0DQojDQojIEEgc21hbGwgcHJvZ3JhbSB0aGF0IGxpc3Rl bnMgb24gYSBnaXZlbiBwb3J0IGFuZCBkaXNwbGF5cyBhbnkgbWVzc2FnZXMg aXQgDQojIHJlY2VpdmVzIG9uIHRoYXQgcG9ydCBpbiBhIFRrIHdpbmRvdy4g VHdvIG1vZGVzOg0KIw0KIyAxLiBDbGVhciB0aGUgd2luZG93IGZvciBlYWNo IG5ldyBtZXNzYWdlDQojIDIuIEtlZXAgYSBzY3JvbGxpbmcgaGlzdG9yeSBv ZiBtZXNzYWdlcyAoZGVmYXVsdCkNCiMNCiMgQXJndW1lbnRzOg0KIyANCiMg LW0gPHNpbmdsZXxjb250W2ludW91c10+ICAgICAgICAvLyBEaXNwbGF5IG1v ZGUNCiMgLXMgPHNlcnZlcjEsc2VydmVyMiwuLi4+ICAgICAgICAvLyBSZWdl eHAgbWF0Y2hlcyBmb3IgdmFsaWRhdGluZyBjb25uZWN0aW9uDQojIC1wIDxw b3J0MSxwb3J0MiwuLi4+ICAgICAgICAgICAgLy8gUmVnZXhwIG1hdGNoZXMg Zm9yIHZhbGlkYXRpbmcgY2xpZW50IHBvcnRzDQojIC1QIDxwb3J0IG51bWJl cj4gICAgICAgICAgICAgICAgLy8gUG9ydCBudW1iZXIgdG8gbGlzdGVuIG9u DQojIC1yIDxyZWZyZXNoIHJhdGU+ICAgICAgICAgICAgICAgLy8gU2Vjb25k cyhvciBmcmFjdGlvbnMpIHRvIHdhaXQgaW4gc2VsZWN0DQojICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGlnaCBudW1iZXIgLT4gc2xv dyBzY3JlZW4gdXBkYXRlDQojICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLy8gICAgICAgICAgICAgLT4ga2luZCBvbiBDUFUNCiMgLXUgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2FnZQ0KIyAtZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlYnVnIGluZm8gb24gU1RE RVJSDQojDQp1c2UgR2V0b3B0OjpTdGQ7DQp1c2UgU29ja2V0Ow0KdXNlIFRr Ow0KDQojIFJlYWQgT25seSBUZXh0IHdpZGdldA0KIw0KcmVxdWlyZSBUazo6 Uk9UZXh0Ow0KDQojIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucw0KIw0Kc3ViIHVz YWdlOw0Kc3ViIGZvcm1hdF9tZXNzYWdlOw0Kc3ViIGRpc3BsYXlfbWVzc2Fn ZTsNCnN1YiBzZXR1cF93aW5kb3c7DQpzdWIgdmFsaWRhdGVfY29ubmVjdGlv bjsNCg0KIyBWYXJpYWJsZXMNCiMNCm15IEB2YWxpZF9jbGllbnRzID0gKCIu KiIpOyAgICAgICAgICAgICAgICAgIyBSZWdleHAgbWF0Y2hpbmcgYW55IGNs aWVudA0KbXkgQHZhbGlkX3BvcnRzICAgPSAoIi4qIik7ICAgICAgICAgICAg ICAgICAjIFJlZ2V4cCBtYXRjaGluZyBhbnkgcG9ydA0KbXkgJHNpbmdsZSAg ICAgICAgPSAwOw0KbXkgJHBvcnQgICAgICAgICAgPSAzNDU2Ow0KbXkgJHJl ZnJlc2ggICAgICAgPSAxOyAgICAgICAgICAgICAgICAgICAgICAjIDEgc2Vj b25kIGlzIGEgbmljZSB0cmFkZW9mZg0KbXkgKCRwcm90bywgJGNvbm5lY3Rp b25zKTsNCm15ICgkcmluLCAkcm91dCk7DQpteSAoJFRPUCwgJFRFWFQsICRU RVhUX1NUUklORyk7DQoNCm15ICRwcm9nbmFtZSA9ICdKb2JJbmZvJzsNCm15 ICR2ZXJzaW9uICA9ICcxLjAnOw0KDQoNCiMgUGFyc2UgY29tbWFuZCBsaW5l IGFyZ3VtZW50cw0KIw0KZ2V0b3B0cygnbTpzOnA6UDpyOnVkJyk7DQoNCiRv cHRfdSAmJiBkbyB7IHVzYWdlKCk7IGV4aXQoMCk7IH07DQokb3B0X3MgJiYg ZG8geyBAdmFsaWRfY2xpZW50cyA9IHNwbGl0KC8sLywgJG9wdF9zKTsgfTsN CiRvcHRfcCAmJiBkbyB7IEB2YWxpZF9wb3J0cyAgID0gc3BsaXQoLywvLCAk b3B0X3ApOyB9Ow0KJG9wdF9tICYmIGRvIHsgJHNpbmdsZSAgICAgICAgPSAk b3B0X20gZXEgInNpbmdsZSI7ICB9Ow0KJG9wdF9QICYmIGRvIHsgJHBvcnQg ICAgICAgICAgPSAkb3B0X3A7IH07DQokb3B0X3IgJiYgZG8geyAkcmVmcmVz aCAgICAgICA9ICRvcHRfcjsgfTsNCg0KIyBJbml0aWFsIFRrIHNldHVwDQoj IA0Kc2V0dXBfd2luZG93KCk7DQoNCiRvcHRfZCAmJiBwcmludCBTVERFUlIg IlRrIGZyb250ZW5kIHJ1bm5pbmcuXG4iOw0KDQojIFNldCB1cCB0aGUgbGlz dGVuaW5nIHBvcnQNCiMNCiRwcm90byA9IGdldHByb3RvYnluYW1lKCJ0Y3Ai KTsNCnNvY2tldChTRVJWRVIsIFBGX0lORVQsIFNPQ0tfU1RSRUFNLCAkcHJv dG8pICAgICAgICAgICBvciBkaWUgInNvY2tldDogJCEiOw0Kc2V0c29ja29w dChTRVJWRVIsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgcGFjaygibCIs MSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb3IgZGllICJzZXRzb2Nrb3B0OiAkISI7DQpiaW5k KFNFUlZFUiwgc29ja2FkZHJfaW4oJHBvcnQsIElOQUREUl9BTlkpKSAgICAg ICAgICAgb3IgZGllICJiaW5kOiAkISI7DQpsaXN0ZW4oU0VSVkVSLCBTT01B WENPTk4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZGllICJs aXN0ZW46ICQhIjsNCg0KJG9wdF9kICYmIHByaW50IFNUREVSUiAiTGlzdGVu aW5nIG9uIHBvcnQgJHBvcnQuXG4iOw0KDQojIFByaW1lIHZlY3RvciBhcnJh eXMgbmVlZGVkIGJ5IHNlbGVjdCgpLiBXZSBjYW4ndCBkbyBhbiBhY2NlcHQo KSB3YWl0DQojIGFzIHdlJ3JlIHN1cHBvc2VkIHRvIGtlZXAgdGhlIGRpc3Bs YXkgcmVhc29uYWJseSB1cCB0byBkYXRlIGFzIHdlbGwuDQojDQokcmluID0g IiI7DQp2ZWMoJHJpbiwgZmlsZW5vKFNFUlZFUiksIDEpID0gMTsNCg0Kd2hp bGUoMSkNCnsNCiAgICBteSAoJG51bSwgJHRpbWVsZWZ0KTsNCg0KICAgICMg V2lsbCBoYW5nIGhlcmUgZm9yIGEgc2Vjb25kIG9yIHVudGlsIHdlIGdldCBo aXQgb24gdGhlIHBvcnQsIA0KICAgICMgd2hpY2hldmVyIGNvbWVzIGZpcnN0 Lg0KICAgICMNCiAgICAoJG51bSwgJHRpbWVsZWZ0KSA9IHNlbGVjdCgkcm91 dD0kcmluLCB1bmRlZiwgdW5kZWYsICRyZWZyZXNoKTsNCg0KICAgIGlmICgg JG51bSApDQogICAgew0KICAgICAgICBteSAoJHRtcGFkZHIsICRzb3VyY2Vf cG9ydCwgJHNvdXJjZV9hZGRyLCAkc291cmNlX25hbWUsICRzb3VyY2VfaXAp Ow0KICAgICAgICBteSAoJHN0aWxsX21vcmUsICRpbnB1dCk7DQoNCgkkdG1w YWRkciA9IGFjY2VwdChDTElFTlQsIFNFUlZFUik7DQoNCiAgICAgICAgJGNv bm5lY3Rpb25zKys7DQoNCgkjIEdldCBpbmZvcm1hdGlvbiByZXF1aXJlZCBm b3IgdmFsaWRhdGlvbg0KCSMNCgkoJHNvdXJjZV9wb3J0LCAkc291cmNlX2Fk ZHIpID0gc29ja2FkZHJfaW4oJHRtcGFkZHIpOw0KCSRzb3VyY2VfbmFtZSA9 IGdldGhvc3RieWFkZHIoJHNvdXJjZV9hZGRyLCBBRl9JTkVUKTsNCgkkc291 cmNlX2lwID0gaW5ldF9udG9hKCRzb3VyY2VfYWRkcik7DQoNCgkkb3B0X2Qg JiYgcHJpbnQgU1RERVJSICJDb25uZWN0aW9uICMkY29ubmVjdGlvbnMgZnJv bSAkbmFtZSBbJHNvdXJjZV9pcCAkc291cmNlX3BvcnRdXG4iOw0KDQoJIyBC b290IGNvbm5lY3Rpb24gaWYgbm90IGZyb20gYSB2YWxpZCBzb3VyY2UNCgkj DQogICAgICAgIGlmICggIXZhbGlkYXRlX2Nvbm5lY3Rpb24oJHNvdXJjZV9u YW1lLCAkc291cmNlX2lwLCAkc291cmNlX3BvcnQpICkNCgl7DQoJICAgIGNs b3NlKENMSUVOVCk7DQoJICAgIG5leHQ7DQoJfQ0KDQoJIyBJdCBpcyBwcmVz dW1lZCB0aGF0IHRoZSBjbGllbnQgd2lsbCBkaXNhcHBlYXIgcmVhc29uYWJs eSANCiAJIyBxdWlja2x5LCBhcyB3ZSdyZSByZWFsbHkgZG9pbmcgYSBibG9j a2luZyByZWFkIHVudGlsDQoJIyB0aGUgY2xpZW50IGRpc2Nvbm5lY3RzIGhl cmUuIFRoZSBsb25nZXIgdGhlIHRleHQsIHRoZSANCgkjIHNsb3dlciB0aGUg d2luZG93IHJlZnJlc2guDQoJIw0KCWRvIHsNCgkgICAgbXkgJHRtcGlucHV0 Ow0KCSAgICBpZiAoICRzdGlsbF9tb3JlID0gc3lzcmVhZChDTElFTlQsICR0 bXBpbnB1dCwgODE5MikgKQ0KCSAgICB7DQoJICAgICAgICAkaW5wdXQgLj0g JHRtcGlucHV0Ow0KCSAgICB9DQoJfSB3aGlsZSAoICRzdGlsbF9tb3JlICk7 DQoNCglkaXNwbGF5X21lc3NhZ2UoZm9ybWF0X21lc3NhZ2UoJHNvdXJjZV9u YW1lLCAkaW5wdXQpKTsNCiAgICB9DQogICAgDQogICAgIyBBYm91dCB0aW1l IHdlIHVwZGF0ZSB0aGUgc2NyZWVuDQogICAgJFRPUC0+dXBkYXRlKCk7DQoN CiAgICAkb3B0X2QgJiYgcHJpbnQgU1RERVJSICJTZWxlY3QoKSBhbmQgVGsg dXBkYXRlKCkgZG9uZSAiLmxvY2FsdGltZSh0aW1lKCkpLiIuXG4iOw0KfQ0K DQpleGl0Ow0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyBTdWJyb3V0aW5l cw0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyBWYWxpZGF0ZXMgYSBjb25u ZWN0aW9uIGJ5IG1ha2luZyBzdXJlIGVpdGhlciB0aGUgSVAgbnVtYmVyIG9y DQojIG5hbWUgbWF0Y2hlcyBhbiBlbnRyeSBpbiB0aGUgQHZhbGlkX25hbWVz IGFycmF5Lg0KIw0KIyBJbnB1dCAgOiAgSVAgbnVtYmVyIG9mIGNvbm5lY3Rp bmcgY2xpZW50DQojICAgICAgICAgICBOYW1lIG9mIGNvbm5lY3RpbmcgY2xp ZW50DQojICAgICAgICAgICBQb3J0IG51bWJlciBjbGllbnQgY29ubmVjdHMg ZnJvbQ0KIw0KIyBPdXRwdXQgOiAgQm9vbGVhbiBhY2NlcHRpbmcgY29ubmVj dGlvbiBvciBub3QNCiMNCnN1YiB2YWxpZGF0ZV9jb25uZWN0aW9uDQp7DQog ICAgbXkgKCRpcCwgJG5hbWUsICRwb3J0KSA9IEBfOw0KICAgIG15ICgkY2hl Y2ssICR2YWxpZF9jbGllbnQsICR2YWxpZF9wb3J0KTsNCg0KICAgIGZvcmVh Y2ggJGNoZWNrICggQHZhbGlkX2NsaWVudHMgKQ0KICAgIHsNCiAgICAgICAg JGlwID1+IC8kY2hlY2svICYmIGRvIHsgJHZhbGlkX2NsaWVudCA9IDE7IGxh c3Q7IH07DQogICAgICAgICRuYW1lID1+IC8kY2hlY2svICYmIGRvIHsgJHZh bGlkX2NsaWVudCA9IDE7IGxhc3Q7IH07DQogICAgfQ0KDQogICAgJG9wdF9k ICYmIHByaW50IFNUREVSUiAiQ2xpZW50IGNoZWNrIHJldHVybmVkICR2YWxp ZF9jbGllbnRcbiI7DQoNCiAgICBpZiAoICR2YWxpZF9jbGllbnQgKQ0KICAg IHsNCglmb3JlYWNoICRjaGVjayAoIEB2YWxpZF9wb3J0cyApDQogICAgICAg IHsNCiAgICAgICAgICAgICRwb3J0ID1+IC8kY2hlY2svICYmIGRvIHsgJHZh bGlkX3BvcnQgPSAxOyBsYXN0OyB9Ow0KCX0NCiAgICB9DQoNCiAgICAkb3B0 X2QgJiYgcHJpbnQgU1RERVJSICJQb3J0IGNoZWNrIHJldHVybmVkICR2YWxp ZF9wb3J0XG4iOw0KDQogICAgcmV0dXJuICR2YWxpZF9jbGllbnQgJiYgJHZh bGlkX3BvcnQ7DQp9DQoNCiMgVGhlIGludGVudGlvbiBoZXJlIGlzIHRvIGFs bG93IHBlb3BsZSB0byBlYXNpbHkgbW9kaWZ5IHRoZSANCiMgZm9ybWF0IG9m IHRoZSBtZXNzYWdlIGJlaW5nIGRpc3BsYXllZC4NCiMNCiMgRGVmYXVsdCBs b29rIDogIldlZCBPY3QgIDggMTA6Mzc6MTIgW21hY2hpbmVdIE1lc3NhZ2Vc biINCiMNCiMgSW5wdXQgIDogIEZRRE4gb2YgY29ubmVjdGluZyBtYWNoaW5l DQojICAgICAgICAgICBUaGUgYWN0dWFsIG1lc3NhZ2UNCiMNCiMgT3V0cHV0 IDogIFRoZSBzdHJpbmcgdG8gZGlzcGxheQ0KIw0Kc3ViIGZvcm1hdF9tZXNz YWdlDQp7DQogICAgbXkgKCRtYWNoaW5lLCAkbWVzc2FnZSkgPSBAXzsNCiAg ICBteSAoJGxpbmUsICRyZXMsICRwcmVzdHJpbmcsICRibGFua3N0cmluZyk7 DQoNCiAgICAjIFN0cmlwIGRvbWFpbiBuYW1lLCBpZiBhbnkNCiAgICAkbWFj aGluZSA9fiBzL1wuLiokLy87DQoNCiAgICAkcHJlc3RyaW5nID0gc3Vic3Ry KGxvY2FsdGltZSh0aW1lKCkpLCAwLCAxOSkuIiBbJG1hY2hpbmVdICI7DQog ICAgJGJsYW5rc3RyaW5nID0gIiAiIHggbGVuZ3RoKCRwcmVzdHJpbmcpOw0K DQogICAgZm9yZWFjaCAkbGluZSAoc3BsaXQoL1xyP1xuLywgJG1lc3NhZ2Up KQ0KICAgIHsNCgkkcmVzIC49ICgkcmVzPyRibGFua3N0cmluZzokcHJlc3Ry aW5nKS4kbGluZS4iXG4iOw0KICAgIH0NCg0KICAgIHJldHVybiAkcmVzOw0K fQ0KDQojIERpc3BsYXlzIGEgc2ltcGxlIHBvcHVwIGJveCBjb250YWluaW5n IHRoZSBtZXNzYWdlIGdpdmVuIGFzIGFyZ3VtZW50DQojDQojIElucHV0IDog TWVzc2FnZSB0byBkaXNwbGF5DQojDQpzdWIgZGlzcGxheV9tZXNzYWdlDQp7 DQogICAgbXkgKCRtZXNzYWdlKSA9IEBfOw0KDQogICAgaWYgKCAkc2luZ2xl ICkNCiAgICB7DQoJJFRFWFQtPmRlbGV0ZSgnMS4wJywgJ2VuZCcpOw0KCSRU RVhULT5pbnNlcnQoJzEuMCcsICRtZXNzYWdlKTsNCiAgICB9DQogICAgZWxz ZQ0KICAgIHsNCgkkVEVYVC0+aW5zZXJ0KCdlbmQnLCAkbWVzc2FnZSk7DQog ICAgfQ0KICAgICRURVhULT5zZWUoJ2VuZCcpOw0KfQ0KDQojIFNpbXBseSBy ZXR1cm5zIHRoZSBpbml0aWFsICdSZWFkeScgc3RyaW5nLiBVc2VkIGluIHNl dmVyYWwgcGxhY2VzLg0KIw0Kc3ViIGNsZWFyX21lc3NhZ2UNCnsNCiAgICBy ZXR1cm4gIiRwcm9nbmFtZSAkdmVyc2lvbiA6IFJlYWR5IGFuZCBsaXN0ZW5p bmcgdG8gcG9ydCAkcG9ydCAoTW9kZTogIi4NCiAgICAgICAgICAgKCRzaW5n bGU/InNpbmdsZSI6ImNvbnRpbnVvdXMiKS4iKVxuIjsNCn0NCg0KIyBUaGlz IGZ1bmN0aW9uIGRvZXMgYWxsIHRoZSBUayBzdHVmZi4gSXQgY3JlYXRlcyBh IHdpbmRvdywgYSBjb3VwbGUgb2YNCiMgZnJhbWVzIHRvIGFsbG93IGJldHRl ciBsYXlvdXQgYW5kIHRoZSB2aXNpYmxlIHdpZGdldHMuIA0KIw0Kc3ViIHNl dHVwX3dpbmRvdw0Kew0KICAgICRUT1AgPSBuZXcgTWFpbldpbmRvdzsNCg0K ICAgICRUT1AtPnRpdGxlKCRwcm9nbmFtZSk7DQogICAgJFRPUC0+aWNvbm5h bWUoJHByb2duYW1lKTsNCg0KICAgIG15ICRmcmFtZTEgPSAkVE9QLT5GcmFt ZSgpOw0KICAgICANCiAgICAkVEVYVCA9ICRmcmFtZTEtPlJPVGV4dCggLWZv bnQgPT4gJ2ZpeGVkJywNCgkJCSAgICAgLXdyYXAgPT4gJ25vbmUnLA0KCQkJ ICAgICAtd2lkdGggPT4gODAsDQoJCQkgICAgIC1oZWlnaHQgPT4gMTAsDQoJ CSAgICAgICAgICAgICAtYm9yZGVyd2lkdGggPT4gMik7DQogICAgbXkgJHNj cm9sbGJhcjEgPSAkZnJhbWUxLT5TY3JvbGxiYXIoLWNvbW1hbmQgPT4gWyd5 dmlldycsICRURVhUXSk7DQogICAgbXkgJHNjcm9sbGJhcjIgPSAkZnJhbWUx LT5TY3JvbGxiYXIoLWNvbW1hbmQgPT4gWyd4dmlldycsICRURVhUXSwNCgkJ CQkJLW9yaWVudCAgPT4gJ2hvcml6b250YWwnKTsNCiAgICAkVEVYVC0+Y29u ZmlndXJlKCd5c2Nyb2xsY29tbWFuZCcgPT4gWydzZXQnLCAkc2Nyb2xsYmFy MV0pOw0KICAgICRURVhULT5jb25maWd1cmUoJ3hzY3JvbGxjb21tYW5kJyA9 PiBbJ3NldCcsICRzY3JvbGxiYXIyXSk7DQoNCg0KICAgICMgV2UnbGwgY2Vu dGVyIHRoZSBidXR0b25zIGp1c3QgdG8gYmUgZnJpZW5kbHkNCiAgICBteSAk ZnJhbWUyID0gJFRPUC0+RnJhbWUoKTsNCiAgICBteSAkYnV0dG9uMSA9ICRm cmFtZTItPkJ1dHRvbigtdGV4dCA9PiAnUXVpdCcsDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtY29tbWFuZCA9PiBzdWJ7ZXhpdH0pOw0K ICAgIG15ICRidXR0b24yID0gJGZyYW1lMi0+QnV0dG9uKC10ZXh0ID0+ICdT aW5nbGUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgLWNvbW1hbmQg PT4gWyBzdWJ7ICRzaW5nbGUgPSAxOyBkaXNwbGF5X21lc3NhZ2UoJmNsZWFy X21lc3NhZ2UpOyB9IF0pOw0KICAgIG15ICRidXR0b24zID0gJGZyYW1lMi0+ QnV0dG9uKC10ZXh0ID0+ICdDb250aW51b3VzJywNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIC1jb21tYW5kID0+IFsgc3VieyAkc2luZ2xlID0gMDsg ZGlzcGxheV9tZXNzYWdlKCZjbGVhcl9tZXNzYWdlKTsgfSBdKTsNCg0KICAg IGRpc3BsYXlfbWVzc2FnZShjbGVhcl9tZXNzYWdlKCkpOw0KDQogICAgIyBQ YWNrJ2VtLCByYWNrJ2VtIGFuZCBzdGFjaydlbQ0KICAgICMNCiAgICAjIFRv IG1vdmUgdmVydGljYWwgc2Nyb2xsYmFyICoqKioqIENoYW5nZSAncmlnaHQn IHRvICdsZWZ0Jw0KICAgICRzY3JvbGxiYXIxLT5wYWNrKC1zaWRlID0+ICAn cmlnaHQnLCAtZmlsbCA9PiAneScpOw0KICAgICRzY3JvbGxiYXIyLT5wYWNr KC1zaWRlID0+ICdib3R0b20nLCAtZmlsbCA9PiAneCcpOw0KICAgICRURVhU LT5wYWNrKC1wYWR4ID0+ICcybScsIC1wYWR5ID0+ICcybScsIC1leHBhbmQg PT4gMSwgLWZpbGwgPT4gJ2JvdGgnKTsNCiAgICAkZnJhbWUxLT5wYWNrKC1l eHBhbmQgPT4gMSwtZmlsbCA9PiAnYm90aCcpOw0KDQogICAgJGJ1dHRvbjEt PnBhY2soLXNpZGUgPT4gJ2xlZnQnKTsNCiAgICAkYnV0dG9uMi0+cGFjaygt c2lkZSA9PiAnbGVmdCcpOw0KICAgICRidXR0b24zLT5wYWNrKC1zaWRlID0+ ICdsZWZ0Jyk7DQogICAgJGZyYW1lMi0+cGFjaygpOw0KfQ0KDQojIFByaW50 cyB1c2FnZQ0KIw0Kc3ViIHVzYWdlDQp7DQogICAgcHJpbnQgIiQwIFstdV0g Wy1kXSBbLW0gPHNpbmdsZXxjb250W2ludW91c10+XSBbLXMgPHNlcnZlcjEs Li4uPl1cbiI7DQogICAgcHJpbnQgIiAiIHggbGVuZ3RoKCQwKSAuICIgWy1w IDxwb3J0MSwuLi4+XSBbLVAgPHBvcnQ+XVxuIjsNCiAgICBwcmludCAiXHQt dVx0XHRcdFVzYWdlXG4iOw0KICAgIHByaW50ICJcdC1kXHRcdFx0RGVidWcg b3V0cHV0IG9uIFNUREVSUlxuIjsNCiAgICBwcmludCAiXHQtbSA8c2luZ2xl fGNvbnQ+XHRTaW5nbGUgb3IgY29udGlub3VzIG1lc3NhZ2VzIChEZWZhdWx0 ICIuDQogICAgICAgICAgKCRzaW5nbGU/InNpbmdsZSI6ImNvbnRpbm91cyIp LiIpXG4iOw0KICAgIHByaW50ICJcdC1zIDxzZXJ2ZXIxLC4uLj5cdFJlZ2V4 cHMgbWF0Y2hpbmcgdmFsaWQgY2xpZW50IGhvc3RzXG4iOw0KICAgIHByaW50 ICJcdC1wIDxwb3J0MSwuLi4+XHRcdFJlZ2V4cHMgbWF0Y2hpbmcgdmFsaWQg Y2xpZW50IHBvcnRzXG4iOw0KICAgIHByaW50ICJcdC1QIDxwb3J0Plx0XHRQ b3J0IG51bWJlciB0byBjb25uZWN0IHRvIChEZWZhdWx0ICRwb3J0KVxuIjsN CiAgICBwcmludCAiXHQtciA8cmVmcmVzaCByYXRlPlx0U2Vjb25kcyB0byB3 YWl0IGluIHNlbGVjdCAoRGVmYXVsdCAkcmVmcmVzaCBzZWMpXG4iOw0KfQ0K --2016706854-824023566-876346061=:26316--