Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com Date: Tue, 15 May 2001 10:42:14 -0400 From: rich-paul AT rich-paul DOT net To: screen AT uni-erlangen DOT de Cc: cygwin AT cygwin DOT com Subject: screen-3.9.8 ported to cygwin Message-ID: <20010515104214.A27771@monster.master-link.org> Mime-Version: 1.0 Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=unknown; boundary="2oS5YaxWCcQjTEyO" Content-Disposition: inline User-Agent: Mutt/1.3.16i X-Operating-System: Linux monster 2.2.18-crypt --2oS5YaxWCcQjTEyO Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable I have made a naive attempt at porting screen 3.9.8 to cygwin, and seem to have met with limited success. The thing (seems to) work, but when you close your last screen, it kills your console window. you also may have to mkdir /dev/pts I'm afraid that I can't remember the name, but screen'll tell you what file when you first run it. Here is the patch: A remaining issue is that some of the commands in make install fail, due to the .exe thing. I tried to play with adding @EXEEXT@ to Makefile.in (and AC_EXEEXT to configure.in) but found that I started creating /opt/screen/bin/screen-3.9.8.exe.exe At this point I decided to live with the error message. Are there porting guidelines that describe when/where/how to use AC_EXEEXT? =20 This is a Quick'n'Filthy[tm] patch. It may electrocute you. Don't blame me. ------cut here------- Index: screen-3.9.8/misc.c diff -c screen-3.9.8/misc.c:1.1.1.1 screen-3.9.8/misc.c:1.2 *** screen-3.9.8/misc.c:1.1.1.1 Tue May 15 09:26:54 2001 --- screen-3.9.8/misc.c Tue May 15 10:14:37 2001 *************** *** 22,28 **** */ =20 #include "rcs.h" ! RCS_ID("$Id: misc.c,v 1.1.1.1 2001/05/15 13:26:54 linguist Exp $ FAU") =20 #include #include /* mkdir() declaration */ --- 22,28 ---- */ =20 #include "rcs.h" ! RCS_ID("$Id: misc.c,v 1.2 2001/05/15 14:14:37 linguist Exp $ FAU") =20 #include #include /* mkdir() declaration */ *************** *** 638,644 **** */ # endif /* NEEDSETENV */ #else /* USESETENV */ ! # if defined(linux) || defined(__convex__) || (BSD >=3D 199103) setenv(var, value, 0); # else setenv(var, value); --- 638,645 ---- */ # endif /* NEEDSETENV */ #else /* USESETENV */ ! # if defined(linux) || defined(__convex__) || (BSD >=3D 199103) \ ! || defined(__CYGWIN__) setenv(var, value, 0); # else setenv(var, value); Index: screen-3.9.8/pty.c diff -c screen-3.9.8/pty.c:1.1.1.1 screen-3.9.8/pty.c:1.2 *** screen-3.9.8/pty.c:1.1.1.1 Tue May 15 09:26:54 2001 --- screen-3.9.8/pty.c Tue May 15 10:14:37 2001 *************** *** 22,28 **** */ =20 #include "rcs.h" ! RCS_ID("$Id: pty.c,v 1.1.1.1 2001/05/15 13:26:54 linguist Exp $ FAU") =20 #include #include --- 22,28 ---- */ =20 #include "rcs.h" ! RCS_ID("$Id: pty.c,v 1.2 2001/05/15 14:14:37 linguist Exp $ FAU") =20 #include #include *************** *** 37,43 **** #endif =20 /* for solaris 2.1, Unixware (SVR4.2) and possibly others */ ! #ifdef HAVE_SVR4_PTYS # include #endif =20 --- 37,43 ---- #endif =20 /* for solaris 2.1, Unixware (SVR4.2) and possibly others */ ! #if defined(HAVE_SVR4_PTYS) && !defined(__CYGWIN__) # include #endif =20 Index: screen-3.9.8/screen.c diff -c screen-3.9.8/screen.c:1.1.1.1 screen-3.9.8/screen.c:1.2 *** screen-3.9.8/screen.c:1.1.1.1 Tue May 15 09:26:54 2001 --- screen-3.9.8/screen.c Tue May 15 10:14:37 2001 *************** *** 31,37 **** */ =20 #include "rcs.h" ! RCS_ID("$Id: screen.c,v 1.1.1.1 2001/05/15 13:26:54 linguist Exp $ FAU") =20 =20 #include --- 31,37 ---- */ =20 #include "rcs.h" ! RCS_ID("$Id: screen.c,v 1.2 2001/05/15 14:14:37 linguist Exp $ FAU") =20 =20 #include *************** *** 919,926 **** --- 919,929 ---- n =3D (eff_uid =3D=3D 0 && (real_uid || (st.st_mode & 0775) !=3D 0= 775)) ? 0755 : (eff_gid =3D=3D st.st_gid && eff_gid !=3D real_gid) ? 0775 : 0777; + // NT is hopelessly broken in the area of file permissions. + #ifndef __CYGWIN__ if ((st.st_mode & 0777) !=3D n) Panic(0, "Directory '%s' must have mode %03o.", SockDir, n); + #endif } sprintf(SockPath, "%s/S-%s", SockDir, LoginName); if (access(SockPath, F_OK)) *************** *** 950,957 **** --- 953,962 ---- if (st.st_uid !=3D real_uid) Panic(0, "You are not the owner of %s.", SockPath); } + #ifndef __CYGWIN__ if ((st.st_mode & 0777) !=3D 0700) Panic(0, "Directory %s must have mode 700.", SockPath); + #endif SockName =3D SockPath + strlen(SockPath) + 1; *SockName =3D 0; (void) umask(oumask); ------cut here------- --=20 ---------------------------------------------------------------- If this message was not digitally signed, do you really know who it came from? Encrypt everything, let the NSA sort it out. Unsolicited email advertisements will be proofread and returned for a fee of $500 per message. Sending such email to this address implies acceptance of these terms. --2oS5YaxWCcQjTEyO Content-Type: application/x-pkcs7-signature Content-Disposition: attachment; filename="smime.p7s" Content-Transfer-Encoding: base64 TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvc2lnbmVkOyBwcm90 b2NvbD0iYXBwbGljYXRpb24veC1wa2NzNy1zaWduYXR1cmUiOyBtaWNhbGc9c2hhMTsgYm91 bmRhcnk9Ii0tLS1EOTZCODNEQjcxMkIwN0ExRTA0QzY2OTdGNkY3Nzc3OSIKClRoaXMgaXMg YW4gUy9NSU1FIHNpZ25lZCBtZXNzYWdlCgotLS0tLS1EOTZCODNEQjcxMkIwN0ExRTA0QzY2 OTdGNkY3Nzc3OQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkK Q29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6 IHF1b3RlZC1wcmludGFibGUKCgpJIGhhdmUgbWFkZSBhIG5haXZlIGF0dGVtcHQgYXQgcG9y dGluZyBzY3JlZW4gMy45LjggdG8gY3lnd2luLAphbmQgc2VlbSB0byBoYXZlIG1ldCB3aXRo IGxpbWl0ZWQgc3VjY2Vzcy4gIFRoZSB0aGluZyAoc2VlbXMgdG8pCndvcmssIGJ1dCB3aGVu IHlvdSBjbG9zZSB5b3VyIGxhc3Qgc2NyZWVuLCBpdCBraWxscyB5b3VyIGNvbnNvbGUKd2lu ZG93LiAgeW91IGFsc28gbWF5IGhhdmUgdG8gbWtkaXIgL2Rldi9wdHMgIEknbSBhZnJhaWQg dGhhdCBJCmNhbid0IHJlbWVtYmVyIHRoZSBuYW1lLCBidXQgc2NyZWVuJ2xsIHRlbGwgeW91 IHdoYXQgZmlsZSB3aGVuCnlvdSBmaXJzdCBydW4gaXQuICA8Rz4KCkhlcmUgaXMgdGhlIHBh dGNoOgoKQSByZW1haW5pbmcgaXNzdWUgaXMgdGhhdCBzb21lIG9mIHRoZSBjb21tYW5kcyBp biBtYWtlIGluc3RhbGwKZmFpbCwgZHVlIHRvIHRoZSAuZXhlIHRoaW5nLiAgSSB0cmllZCB0 byBwbGF5IHdpdGggYWRkaW5nCkBFWEVFWFRAIHRvIE1ha2VmaWxlLmluIChhbmQgQUNfRVhF RVhUIHRvIGNvbmZpZ3VyZS5pbikgYnV0IGZvdW5kCnRoYXQgSSBzdGFydGVkIGNyZWF0aW5n IC9vcHQvc2NyZWVuL2Jpbi9zY3JlZW4tMy45LjguZXhlLmV4ZQoKQXQgdGhpcyBwb2ludCBJ IGRlY2lkZWQgdG8gbGl2ZSB3aXRoIHRoZSBlcnJvciBtZXNzYWdlLiA8Rz4KCkFyZSB0aGVy ZSBwb3J0aW5nIGd1aWRlbGluZXMgdGhhdCBkZXNjcmliZSB3aGVuL3doZXJlL2hvdyB0byB1 c2UKQUNfRVhFRVhUPyA9MjAKCgpUaGlzIGlzIGEgUXVpY2snbidGaWx0aHlbdG1dIHBhdGNo LiAgSXQgbWF5IGVsZWN0cm9jdXRlIHlvdS4gIERvbid0CmJsYW1lIG1lLgoKLS0tLS0tY3V0 IGhlcmUtLS0tLS0tCkluZGV4OiBzY3JlZW4tMy45LjgvbWlzYy5jCmRpZmYgLWMgc2NyZWVu LTMuOS44L21pc2MuYzoxLjEuMS4xIHNjcmVlbi0zLjkuOC9taXNjLmM6MS4yCioqKiBzY3Jl ZW4tMy45LjgvbWlzYy5jOjEuMS4xLjEJVHVlIE1heSAxNSAwOToyNjo1NCAyMDAxCi0tLSBz Y3JlZW4tMy45LjgvbWlzYy5jCVR1ZSBNYXkgMTUgMTA6MTQ6MzcgMjAwMQoqKioqKioqKioq KioqKioKKioqIDIyLDI4ICoqKioKICAgKi8KID0yMAogICNpbmNsdWRlICJyY3MuaCIKISBS Q1NfSUQoIiRJZDogbWlzYy5jLHYgMS4xLjEuMSAyMDAxLzA1LzE1IDEzOjI2OjU0IGxpbmd1 aXN0IEV4cCAkIEZBVSIpCiA9MjAKICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAgI2luY2x1 ZGUgPHN5cy9zdGF0Lmg+CS8qIG1rZGlyKCkgZGVjbGFyYXRpb24gKi8KLS0tIDIyLDI4IC0t LS0KICAgKi8KID0yMAogICNpbmNsdWRlICJyY3MuaCIKISBSQ1NfSUQoIiRJZDogbWlzYy5j LHYgMS4yIDIwMDEvMDUvMTUgMTQ6MTQ6MzcgbGluZ3Vpc3QgRXhwICQgRkFVIikKID0yMAog ICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4JLyogbWtk aXIoKSBkZWNsYXJhdGlvbiAqLwoqKioqKioqKioqKioqKioKKioqIDYzOCw2NDQgKioqKgog ICAgICovCiAgIyBlbmRpZiAvKiBORUVEU0VURU5WICovCiAgI2Vsc2UgLyogVVNFU0VURU5W ICovCiEgIyBpZiBkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fY29udmV4X18pIHx8IChC U0QgPj0zRCAxOTkxMDMpCiAgICBzZXRlbnYodmFyLCB2YWx1ZSwgMCk7CiAgIyBlbHNlCiAg ICBzZXRlbnYodmFyLCB2YWx1ZSk7Ci0tLSA2MzgsNjQ1IC0tLS0KICAgICAqLwogICMgZW5k aWYgLyogTkVFRFNFVEVOViAqLwogICNlbHNlIC8qIFVTRVNFVEVOViAqLwohICMgaWYgZGVm aW5lZChsaW51eCkgfHwgZGVmaW5lZChfX2NvbnZleF9fKSB8fCAoQlNEID49M0QgMTk5MTAz KSBcCiEgICB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pCiAgICBzZXRlbnYodmFyLCB2YWx1ZSwg MCk7CiAgIyBlbHNlCiAgICBzZXRlbnYodmFyLCB2YWx1ZSk7CkluZGV4OiBzY3JlZW4tMy45 LjgvcHR5LmMKZGlmZiAtYyBzY3JlZW4tMy45LjgvcHR5LmM6MS4xLjEuMSBzY3JlZW4tMy45 LjgvcHR5LmM6MS4yCioqKiBzY3JlZW4tMy45LjgvcHR5LmM6MS4xLjEuMQlUdWUgTWF5IDE1 IDA5OjI2OjU0IDIwMDEKLS0tIHNjcmVlbi0zLjkuOC9wdHkuYwlUdWUgTWF5IDE1IDEwOjE0 OjM3IDIwMDEKKioqKioqKioqKioqKioqCioqKiAyMiwyOCAqKioqCiAgICovCiA9MjAKICAj aW5jbHVkZSAicmNzLmgiCiEgUkNTX0lEKCIkSWQ6IHB0eS5jLHYgMS4xLjEuMSAyMDAxLzA1 LzE1IDEzOjI2OjU0IGxpbmd1aXN0IEV4cCAkIEZBVSIpCiA9MjAKICAjaW5jbHVkZSA8c3lz L3R5cGVzLmg+CiAgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0tLSAyMiwyOCAtLS0tCiAgICov CiA9MjAKICAjaW5jbHVkZSAicmNzLmgiCiEgUkNTX0lEKCIkSWQ6IHB0eS5jLHYgMS4yIDIw MDEvMDUvMTUgMTQ6MTQ6MzcgbGluZ3Vpc3QgRXhwICQgRkFVIikKID0yMAogICNpbmNsdWRl IDxzeXMvdHlwZXMuaD4KICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKioqKioqKioqKioqKioq CioqKiAzNyw0MyAqKioqCiAgI2VuZGlmCiA9MjAKICAvKiBmb3Igc29sYXJpcyAyLjEsIFVu aXh3YXJlIChTVlI0LjIpIGFuZCBwb3NzaWJseSBvdGhlcnMgKi8KISAjaWZkZWYgSEFWRV9T VlI0X1BUWVMKICAjIGluY2x1ZGUgPHN5cy9zdHJvcHRzLmg+CiAgI2VuZGlmCiA9MjAKLS0t IDM3LDQzIC0tLS0KICAjZW5kaWYKID0yMAogIC8qIGZvciBzb2xhcmlzIDIuMSwgVW5peHdh cmUgKFNWUjQuMikgYW5kIHBvc3NpYmx5IG90aGVycyAqLwohICNpZiBkZWZpbmVkKEhBVkVf U1ZSNF9QVFlTKSAmJiAhZGVmaW5lZChfX0NZR1dJTl9fKQogICMgaW5jbHVkZSA8c3lzL3N0 cm9wdHMuaD4KICAjZW5kaWYKID0yMApJbmRleDogc2NyZWVuLTMuOS44L3NjcmVlbi5jCmRp ZmYgLWMgc2NyZWVuLTMuOS44L3NjcmVlbi5jOjEuMS4xLjEgc2NyZWVuLTMuOS44L3NjcmVl bi5jOjEuMgoqKiogc2NyZWVuLTMuOS44L3NjcmVlbi5jOjEuMS4xLjEJVHVlIE1heSAxNSAw OToyNjo1NCAyMDAxCi0tLSBzY3JlZW4tMy45Ljgvc2NyZWVuLmMJVHVlIE1heSAxNSAxMDox NDozNyAyMDAxCioqKioqKioqKioqKioqKgoqKiogMzEsMzcgKioqKgogICAqLwogPTIwCiAg I2luY2x1ZGUgInJjcy5oIgohIFJDU19JRCgiJElkOiBzY3JlZW4uYyx2IDEuMS4xLjEgMjAw MS8wNS8xNSAxMzoyNjo1NCBsaW5ndWlzdCBFeHAgJCBGQVUiKQogPTIwCiA9MjAKICAjaW5j bHVkZSA8c3lzL3R5cGVzLmg+Ci0tLSAzMSwzNyAtLS0tCiAgICovCiA9MjAKICAjaW5jbHVk ZSAicmNzLmgiCiEgUkNTX0lEKCIkSWQ6IHNjcmVlbi5jLHYgMS4yIDIwMDEvMDUvMTUgMTQ6 MTQ6MzcgbGluZ3Vpc3QgRXhwICQgRkFVIikKID0yMAogPTIwCiAgI2luY2x1ZGUgPHN5cy90 eXBlcy5oPgoqKioqKioqKioqKioqKioKKioqIDkxOSw5MjYgKioqKgotLS0gOTE5LDkyOSAt LS0tCiAgCSAgICAgIG4gPTNEIChlZmZfdWlkID0zRD0zRCAwICYmIChyZWFsX3VpZCB8fCAo c3Quc3RfbW9kZSAmIDA3NzUpICE9M0QgMD0KNzc1KSkgPyAwNzU1IDoKICAJICAgICAgICAg IChlZmZfZ2lkID0zRD0zRCBzdC5zdF9naWQgJiYgZWZmX2dpZCAhPTNEIHJlYWxfZ2lkKSA/ IDA3NzUgOgogIAkJICAwNzc3OworIC8vIE5UIGlzIGhvcGVsZXNzbHkgYnJva2VuIGluIHRo ZSBhcmVhIG9mIGZpbGUgcGVybWlzc2lvbnMuCisgI2lmbmRlZiBfX0NZR1dJTl9fCiAgCSAg ICAgIGlmICgoc3Quc3RfbW9kZSAmIDA3NzcpICE9M0QgbikKICAJCVBhbmljKDAsICJEaXJl Y3RvcnkgJyVzJyBtdXN0IGhhdmUgbW9kZSAlMDNvLiIsIFNvY2tEaXIsIG4pOworICNlbmRp ZgogIAkgICAgfQogIAkgIHNwcmludGYoU29ja1BhdGgsICIlcy9TLSVzIiwgU29ja0Rpciwg TG9naW5OYW1lKTsKICAJICBpZiAoYWNjZXNzKFNvY2tQYXRoLCBGX09LKSkKKioqKioqKioq KioqKioqCioqKiA5NTAsOTU3ICoqKioKLS0tIDk1Myw5NjIgLS0tLQogICAgICAgIGlmIChz dC5zdF91aWQgIT0zRCByZWFsX3VpZCkKICAJUGFuaWMoMCwgIllvdSBhcmUgbm90IHRoZSBv d25lciBvZiAlcy4iLCBTb2NrUGF0aCk7CiAgICAgIH0KKyAjaWZuZGVmIF9fQ1lHV0lOX18K ICAgIGlmICgoc3Quc3RfbW9kZSAmIDA3NzcpICE9M0QgMDcwMCkKICAgICAgUGFuaWMoMCwg IkRpcmVjdG9yeSAlcyBtdXN0IGhhdmUgbW9kZSA3MDAuIiwgU29ja1BhdGgpOworICNlbmRp ZgogICAgU29ja05hbWUgPTNEIFNvY2tQYXRoICsgc3RybGVuKFNvY2tQYXRoKSArIDE7CiAg ICAqU29ja05hbWUgPTNEIDA7CiAgICAodm9pZCkgdW1hc2sob3VtYXNrKTsKCi0tLS0tLWN1 dCBoZXJlLS0tLS0tLQoKCi0tPTIwCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWYgdGhpcyBtZXNzYWdlIHdhcyBu b3QgZGlnaXRhbGx5IHNpZ25lZCwgZG8geW91IHJlYWxseSBrbm93IHdobwppdCBjYW1lIGZy b20/ICBFbmNyeXB0IGV2ZXJ5dGhpbmcsIGxldCB0aGUgTlNBIHNvcnQgaXQgb3V0LgoKVW5z b2xpY2l0ZWQgZW1haWwgYWR2ZXJ0aXNlbWVudHMgd2lsbCBiZSBwcm9vZnJlYWQgYW5kIHJl dHVybmVkCmZvciBhIGZlZSBvZiAkNTAwIHBlciBtZXNzYWdlLiAgU2VuZGluZyBzdWNoIGVt YWlsIHRvIHRoaXMKYWRkcmVzcyBpbXBsaWVzIGFjY2VwdGFuY2UKb2YgdGhlc2UgdGVybXMu CgotLS0tLS1EOTZCODNEQjcxMkIwN0ExRTA0QzY2OTdGNkY3Nzc3OQpDb250ZW50LVR5cGU6 IGFwcGxpY2F0aW9uL3gtcGtjczctc2lnbmF0dXJlOyBuYW1lPSJzbWltZS5wN3MiCkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NApDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRh Y2htZW50OyBmaWxlbmFtZT0ic21pbWUucDdzIgoKTUlJRXVRWUpLb1pJaHZjTkFRY0NvSUlF cWpDQ0JLWUNBUUV4Q3pBSkJnVXJEZ01DR2dVQU1Bc0dDU3FHU0liMwpEUUVIQWFDQ0Fvd3dn Z0tJTUlJQjhhQURBZ0VDQWdNRUY2SXdEUVlKS29aSWh2Y05BUUVFQlFBd2daSXhDekFKCkJn TlZCQVlUQWxwQk1SVXdFd1lEVlFRSUV3eFhaWE4wWlhKdUlFTmhjR1V4RWpBUUJnTlZCQWNU Q1VOaGNHVWcKVkc5M2JqRVBNQTBHQTFVRUNoTUdWR2hoZDNSbE1SMHdHd1lEVlFRTEV4UkRa WEowYVdacFkyRjBaU0JUWlhKMgphV05sY3pFb01DWUdBMVVFQXhNZlVHVnljMjl1WVd3Z1Ju SmxaVzFoYVd3Z1VsTkJJREl3TURBdU9DNHpNREFlCkZ3MHdNVEF5TURFeE9USTJNRFZhRncw d01qQXlNREV4T1RJMk1EVmFNRWt4SHpBZEJnTlZCQU1URmxSb1lYZDAKWlNCR2NtVmxiV0Zw YkNCTlpXMWlaWEl4SmpBa0Jna3Foa2lHOXcwQkNRRVdGM0pwWTJndGNHRjFiRUJ5YVdObwpM WEJoZFd3dWJtVjBNSUdmTUEwR0NTcUdTSWIzRFFFQkFRVUFBNEdOQURDQmlRS0JnUURSUzdI NnNoL1ZXcUdHClEwOFRnTCtCV0l3RTBnSHhHdXBrOWZhSW1lN1lqYTQwWG9JMzR2akFqRm1s SDl1RXc5UTNPTXZjMTdFT0hWQmkKaHIxNGtjY29zaHpNN1dlLzlXam9vZ2FOd3JlRkVBRGFU MXBTbno4ZnVjWVVMZ1VPTVhzOVE5enZUQk1memVXVwptd29BNklEbVBsRjkwNHJDUWozM28v S2Z0emI2QXdJREFRQUJvelF3TWpBaUJnTlZIUkVFR3pBWmdSZHlhV05vCkxYQmhkV3hBY21s amFDMXdZWFZzTG01bGREQU1CZ05WSFJNQkFmOEVBakFBTUEwR0NTcUdTSWIzRFFFQkJBVUEK QTRHQkFKeWNYYnpXTzZuSi9wcU8vbXFUL2l1Vjh0ZjdRMHhNM0toL1ZuOHZ4b3l3aXRsMHJR bDJsRXZhTFo2NgoxVFpMUk9YQmhKTjNyRkhwK3E0TzB5UmdxUXJaMzFWbEllU2llTDhobjNy d0ZTWHpXYThPVkR3Y0Z5YUlON1pvCjRhU08yQ0ljTTUxb2o3M0tZV2xDVkMxa3dSS0V4M0V6 ZlNxOFRaN3o1SlFtOU11dE1ZSUI5VENDQWZFQ0FRRXcKZ1pvd2daSXhDekFKQmdOVkJBWVRB bHBCTVJVd0V3WURWUVFJRXd4WFpYTjBaWEp1SUVOaGNHVXhFakFRQmdOVgpCQWNUQ1VOaGNH VWdWRzkzYmpFUE1BMEdBMVVFQ2hNR1ZHaGhkM1JsTVIwd0d3WURWUVFMRXhSRFpYSjBhV1pw ClkyRjBaU0JUWlhKMmFXTmxjekVvTUNZR0ExVUVBeE1mVUdWeWMyOXVZV3dnUm5KbFpXMWhh V3dnVWxOQklESXcKTURBdU9DNHpNQUlEQkJlaU1Ba0dCU3NPQXdJYUJRQ2dnYkV3R0FZSktv WklodmNOQVFrRE1Rc0dDU3FHU0liMwpEUUVIQVRBY0Jna3Foa2lHOXcwQkNRVXhEeGNOTURF d05URTFNVFEwTWpFMFdqQWpCZ2txaGtpRzl3MEJDUVF4CkZnUVVwcXM3UThaOG1zdDA5Tm95 Ti9Gd3R6eTRJa3N3VWdZSktvWklodmNOQVFrUE1VVXdRekFLQmdncWhraUcKOXcwREJ6QU9C Z2dxaGtpRzl3MERBZ0lDQUlBd0RRWUlLb1pJaHZjTkF3SUNBVUF3QndZRkt3NERBZ2N3RFFZ SQpLb1pJaHZjTkF3SUNBU2d3RFFZSktvWklodmNOQVFFQkJRQUVnWUN1OVZnd1czY1JUTkxz T2xKeWwrZFViYXNVCm5Yclh0N0ZhQ09IMW15bXJoUUdKb3RhSDZTTGJWVTNHWlJtTE9iYXZp S1FsRDlFaEY1MW9qYVpSVlVmWWhMUCsKQWl3cXl3S1JsenhOdTErd2N4dTJaM3V3cDNycGZa dTFESkVQd1ZpUFNYb2dBb0RJT3c0cHluKyt2T0pRVUl2WQpRYWppc3lXVjlPcXV6Mm1Ua3c9 PQoKLS0tLS0tRDk2QjgzREI3MTJCMDdBMUUwNEM2Njk3RjZGNzc3NzktLQoK --2oS5YaxWCcQjTEyO--