[Distutils] bdist_pkgtool attempt

Mark W. Alexander mwa@gate.net
Thu, 24 Aug 2000 22:23:22 -0400 (EDT)


  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.

---941424627-93897353-967170202=:59938
Content-Type: TEXT/PLAIN; charset=US-ASCII

Thanks to Harry Henry Gebels bdist_rpm module, I hacked out
a bdist_pkgtool module to create binary packages for those of
us stuck with Solaris. The module is attached.

As a first pass, it takes somewhat of a sledgehammer approach,
but it does work for at least a simple pure-python module.
I have not tested pre/post-install scripts, and I doubt if
they'd work anyway. I did however, include a "request" script
which searches for the python installation directory before
the package is installed and automatically relocates the 
module to the site-packages directory on the installation
target. The same module package can be installed on machines
with python installed in different locations and it will
figure out the correct place to go.

Let me know of any problems. I'm off to do HP-UX depot
format now.....

Mark Alexander
mwa@gate.net


---941424627-93897353-967170202=:59938
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="bdist_pkgtool.py"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.A41.4.21.0008242223220.59938@dakota.gate.net>
Content-Description: 
Content-Disposition: attachment; filename="bdist_pkgtool.py"

IiIiZGlzdHV0aWxzLmNvbW1hbmQuYmRpc3RfcGtndG9vbA0KDQpJbXBsZW1l
bnRzIHRoZSBEaXN0dXRpbHMgJ2JkaXN0X3BrZ3Rvb2wnIGNvbW1hbmQgKGNy
ZWF0ZSBTb2xhcmlzIHBrZ3Rvb2wNCmRpc3RyaWJ1dGlvbnMpLiIiIg0KDQoj
IE9yaWdpbmFsIGJkaXN0X3JwbSBjcmVhdGVkIDIwMDAvMDQvMjUsIGJ5IEhh
cnJ5IEhlbnJ5IEdlYmVsDQojIEhhY2tlZCAmIHNsYXNoZWQgdG8gc3VwcG9y
dCBTb2xhcmlzIHBrZ3Rvb2wgb24gMjAwMC8wODI0LCBieSBNYXJrIEFsZXhh
bmRlcg0KDQpSRVE9IiIiDQojIS9iaW4vc2gNCg0KUFJPRFVDVD0idGhpcyBw
eXRob24gbW9kdWxlIg0KDQpQQVRIPSIke1BBVEh9Oi9vcHQvcHl0aG9uL2Jp
bjovdXNyL2xvY2FsL2JpbiINCmV4cG9ydCBQQVRIDQoNCnRyYXAgYGV4aXQg
M2AgMTUNClBZX0RJUj1gcHl0aG9uIC1jICJpbXBvcnQgc3lzO3ByaW50ICcl
cy9saWIvcHl0aG9uJXMnICUgKHN5cy5leGVjX3ByZWZpeCxzeXMudmVyc2lv
blswOjNdKSIgMj4vZGV2L251bGxgDQpQWV9QS0dfRElSPWBweXRob24gLWMg
ImltcG9ydCBzeXM7cHJpbnQgJyVzL2xpYi9weXRob24lcy9zaXRlLXBhY2th
Z2VzJyAlIChzeXMuZXhlY19wcmVmaXgsc3lzLnZlcnNpb25bMDozXSkiIDI+
L2Rldi9udWxsYA0KDQplY2hvICIiDQppZiBbIC16ICIke1BZX0RJUn0iIF07
IHRoZW4NCgllY2hvICJJIGNhbid0IHNlZW0gdG8gZmluZCB0aGUgcHl0aG9u
IGRpc3RyaWJ1dGlvbi4iDQoJZWNobyAiSSdtIGFzc3VtaW5nIHRoZSBkZWZh
dWx0IHBhdGggZm9yIHNpdGUtcGFja2FnZXMiDQplbHNlDQoJQkFTRURJUj0i
JHtQWV9QS0dfRElSfSINCgljYXQgPDxFT0YNCglQeXRob24gZm91bmQhIFRo
ZSBkZWZhdWx0IHBhdGg6DQoNCgkke0JBU0VESVJ9DQoNCgl3aWxsIGluc3Rh
bGwgJHtQUk9EVUNUfSBzdWNoIHRoYXQgYWxsIHB5dGhvbiB1c2VycyANCglj
YW4gaW1wb3J0IGl0Lg0KDQoJSWYgeW91IGp1c3Qgd2FudCBpbmRpdmlkdWFs
IGFjY2VzcywgeW91IGNhbiBpbnN0YWxsIGludG8NCglhbnkgZGlyZWN0b3J5
IGFuZCBhZGQgdGhhdCBkaXJlY3RvcnkgdG8geW91ciBcJFBZVEhPTlBBVEgN
CkVPRg0KZmkNCmVjaG8gIiINCg0KDQpCQVNFRElSPWBja3BhdGggLWQgJHtC
QVNFRElSfSAtYXkgXA0KCS1wICJXaGVyZSBzaG91bGQgJHtQUk9EVUNUfSBi
ZSBpbnN0YWxsZWQ/IFske0JBU0VESVJ9XSJgIHx8IGV4aXQgJD8NCmVjaG8g
IkJBU0VESVI9XCIke0JBU0VESVJ9XCIiID4+JDENCg0KIiIiDQojIyMgcmVx
dWVzdCBzY3JpcHQNCg0KX19yZXZpc2lvbl9fID0gIiRJZDogYmRpc3RfcGtn
dG9vbC5weSx2IDAuMSAiDQoNCmltcG9ydCBvcywgc3RyaW5nDQppbXBvcnQg
Z2xvYg0KZnJvbSB0eXBlcyBpbXBvcnQgKg0KZnJvbSBkaXN0dXRpbHMuY29y
ZSBpbXBvcnQgQ29tbWFuZCwgREVCVUcNCmZyb20gZGlzdHV0aWxzLnV0aWwg
aW1wb3J0IGdldF9wbGF0Zm9ybQ0KZnJvbSBkaXN0dXRpbHMuZmlsZV91dGls
IGltcG9ydCB3cml0ZV9maWxlDQpmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1w
b3J0ICoNCmltcG9ydCBzeXMNCmZyb20gY29tbWFuZHMgaW1wb3J0IGdldG91
dHB1dA0KDQpjbGFzcyBiZGlzdF9wa2d0b29sIChDb21tYW5kKToNCg0KICAg
IGRlc2NyaXB0aW9uID0gImNyZWF0ZSBhbiBwa2d0b29sIChTb2xhcmlzKSBw
YWNrYWdlIg0KDQogICAgdXNlcl9vcHRpb25zID0gWw0KICAgICAgICAoJ3Br
Z3Rvb2wtYmFzZT0nLCBOb25lLA0KICAgICAgICAgImJhc2UgZGlyZWN0b3J5
IGZvciBjcmVhdGluZyBSUE1zIChkZWZhdWx0cyB0byBcInBrZ3Rvb2xcIiB1
bmRlciAiDQogICAgICAgICAiLS1iZGlzdC1iYXNlOyBtdXN0IGJlIHNwZWNp
ZmllZCBmb3IgUlBNIDIpIiksDQogICAgICAgICgnZGlzdC1kaXI9JywgJ2Qn
LA0KICAgICAgICAgImRpcmVjdG9yeSB0byBwdXQgZmluYWwgcGtndG9vbCBm
aWxlIGluICINCiAgICAgICAgICIoYW5kIHBhY2thZ2UgaW5mbyBmaWxlcyBp
ZiAtLXNwZWMtb25seSkiKSwNCiAgICAgICAgKCdzcGVjLW9ubHknLCBOb25l
LA0KICAgICAgICAgIm9ubHkgcmVnZW5lcmF0ZSBzcGVjIGZpbGUiKSwNCg0K
ICAgICAgICAjIE1vcmUgbWV0YS1kYXRhOg0KICAgICAgICAoJ2NsYXNzZXMn
LCBOb25lLA0KICAgICAgICAgInN1Yi1wYWNrYWdlIGNsYXNzZXMgW2RlZmF1
bHQ6IFwibm9uZVwiXSIpLA0KICAgICAgICAoJ2NhdGVnb3J5JywgTm9uZSwN
CiAgICAgICAgICJNb2R1bGUgY2F0ZWdvcnkiKSwNCiAgICAgICAgKCd2ZXJz
aW9uJywgTm9uZSwNCiAgICAgICAgICJNb2R1bGUgdmVyc2lvbiIpLA0KICAg
ICAgICAoJ3JlbGVhc2UnLCBOb25lLA0KICAgICAgICAgIlBhY2thZ2UgdmVy
c2lvbiIpLA0KICAgICAgICAoJ2FyY2gnLCBOb25lLA0KICAgICAgICAgIkFy
Y2hpdGVjdHVyZSIpLA0KICAgICAgICAoJ3ZlbmRvcicsIE5vbmUsDQogICAg
ICAgICAiUGFja2FnZSBcInZlbmRvclwiIChlZy4gXCJKb2UgQmxvdyA8am9l
QGV4YW1wbGUuY29tPlwiKSAiDQogICAgICAgICAiW2RlZmF1bHQ6IG1haW50
YWluZXIgb3IgYXV0aG9yIGZyb20gc2V0dXAgc2NyaXB0XSIpLA0KICAgICAg
ICAoJ3BhY2thZ2VyJywgTm9uZSwNCiAgICAgICAgICJQYWNrYWdlIHBhY2th
Z2VyIChlZy4gXCJKYW5lIERvZSA8amFuZUBleGFtcGxlLm5ldD5cIikiDQog
ICAgICAgICAiW2RlZmF1bHQ6IHZlbmRvcl0iKSwNCiAgICAgICAgIygncmVx
dWVzdCcsIE5vbmUsDQogICAgICAgICAjInJlcXVlc3Qgc2NyaXB0IChCb3Vy
bmUgc2hlbGwgY29kZSkiKSwNCiAgICAgICAgKCdwcmUtaW5zdGFsbCcsIE5v
bmUsDQogICAgICAgICAicHJlLWluc3RhbGwgc2NyaXB0IChCb3VybmUgc2hl
bGwgY29kZSkiKSwNCiAgICAgICAgKCdwb3N0LWluc3RhbGwnLCBOb25lLA0K
ICAgICAgICAgInBvc3QtaW5zdGFsbCBzY3JpcHQgKEJvdXJuZSBzaGVsbCBj
b2RlKSIpLA0KICAgICAgICAoJ3ByZS11bmluc3RhbGwnLCBOb25lLA0KICAg
ICAgICAgInByZS11bmluc3RhbGwgc2NyaXB0IChCb3VybmUgc2hlbGwgY29k
ZSkiKSwNCiAgICAgICAgKCdwb3N0LXVuaW5zdGFsbCcsIE5vbmUsDQogICAg
ICAgICAicG9zdC11bmluc3RhbGwgc2NyaXB0IChCb3VybmUgc2hlbGwgY29k
ZSkiKSwNCiAgICAgICAgKCdkZXBlbmQnLCBOb25lLA0KICAgICAgICAgImNh
cGFiaWxpdGllcyByZXF1aXJlZCBieSB0aGlzIHBhY2thZ2UiKSwNCiAgICAg
ICAgKCdjb21wdmVyJywgTm9uZSwNCiAgICAgICAgICJjb21wYXRpYmxlIHZl
cnNpb25zIG9mIHRoaXMgcGFja2FnZSIpLA0KICAgICAgIF0NCg0KICAgIGRl
ZiBpbml0aWFsaXplX29wdGlvbnMgKHNlbGYpOg0KICAgICAgICBzZWxmLmJk
aXN0X2Jhc2UgPSBOb25lDQogICAgICAgIHNlbGYucGtndG9vbF9iYXNlID0g
Tm9uZQ0KICAgICAgICBzZWxmLmRpc3RfZGlyID0gTm9uZQ0KICAgICAgICBz
ZWxmLnNwZWNfb25seSA9IE5vbmUNCg0KICAgICAgICBzZWxmLmNsYXNzZXMg
PSBOb25lDQogICAgICAgIHNlbGYuYXJjaCA9IE5vbmUNCiAgICAgICAgc2Vs
Zi52ZW5kb3IgPSBOb25lDQogICAgICAgIHNlbGYucGFja2FnZXIgPSBOb25l
DQogICAgICAgIHNlbGYuYXJjaCA9IE5vbmUNCg0KICAgICAgICAjc2VsZi5y
ZXF1ZXN0ID0gTm9uZQ0KICAgICAgICBzZWxmLnByZV9pbnN0YWxsID0gTm9u
ZQ0KICAgICAgICBzZWxmLnBvc3RfaW5zdGFsbCA9IE5vbmUNCiAgICAgICAg
c2VsZi5wcmVfdW5pbnN0YWxsID0gTm9uZQ0KICAgICAgICBzZWxmLnBvc3Rf
dW5pbnN0YWxsID0gTm9uZQ0KICAgICAgICBzZWxmLmRlcGVuZCA9IE5vbmUN
CiAgICAgICAgc2VsZi5jb21wdmVyID0gTm9uZQ0KICAgICAgICBzZWxmLnZl
cnNpb24gPSBOb25lDQogICAgICAgIHNlbGYucmVsZWFzZSA9IE5vbmUNCiAg
ICAgICAgc2VsZi5jYXRlZ29yeSA9IE5vbmUNCg0KICAgICMgaW5pdGlhbGl6
ZV9vcHRpb25zKCkNCg0KDQogICAgZGVmIGZpbmFsaXplX29wdGlvbnMgKHNl
bGYpOg0KICAgICAgICBzZWxmLnNldF91bmRlZmluZWRfb3B0aW9ucygnYmRp
c3QnLCAoJ2JkaXN0X2Jhc2UnLCAnYmRpc3RfYmFzZScpKQ0KICAgICAgICBp
ZiBzZWxmLnBrZ3Rvb2xfYmFzZSBpcyBOb25lOg0KICAgICAgICAgICAgc2Vs
Zi5wa2d0b29sX2Jhc2UgPSBvcy5wYXRoLmpvaW4oc2VsZi5iZGlzdF9iYXNl
LCAicGtndG9vbCIpDQoNCiAgICAgICAgaWYgb3MubmFtZSAhPSAncG9zaXgn
Og0KICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvciwg
XA0KICAgICAgICAgICAgICAgICAgKCJkb24ndCBrbm93IGhvdyB0byBjcmVh
dGUgcGtndG9vbCAiDQogICAgICAgICAgICAgICAgICAgImRpc3RyaWJ1dGlv
bnMgb24gcGxhdGZvcm0gJXMiICUgb3MubmFtZSkNCg0KICAgICAgICAjIGRv
bid0IHBhc3MgQ0ZMQUdTIHRvIHB1cmUgcHl0aG9uIGRpc3RyaWJ1dGlvbnMN
CiAgICAgICAgI2lmIG5vdCBzZWxmLmRpc3RyaWJ1dGlvbi5oYXNfZXh0X21v
ZHVsZXMoKToNCiAgICAgICAgICAgICNzZWxmLnVzZV9ycG1fb3B0X2ZsYWdz
ID0gMA0KDQogICAgICAgIHNlbGYuc2V0X3VuZGVmaW5lZF9vcHRpb25zKCdi
ZGlzdCcsICgnZGlzdF9kaXInLCAnZGlzdF9kaXInKSkNCiAgICAgICAgc2Vs
Zi5maW5hbGl6ZV9wYWNrYWdlX2RhdGEoKQ0KDQogICAgIyBmaW5hbGl6ZV9v
cHRpb25zKCkNCg0KICAgIGRlZiBmaW5hbGl6ZV9wYWNrYWdlX2RhdGEgKHNl
bGYpOg0KICAgICAgICBzZWxmLmVuc3VyZV9zdHJpbmcoJ2NsYXNzZXMnLCBO
b25lKQ0KICAgICAgICBzZWxmLmVuc3VyZV9zdHJpbmcoJ2FyY2gnLCAnc3Bh
cmMnKQ0KICAgICAgICBzZWxmLmVuc3VyZV9zdHJpbmcoJ3ZlbmRvcicsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgPCVzPiIgJSAoc2VsZi5k
aXN0cmlidXRpb24uZ2V0X2NvbnRhY3QoKSwNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpc3RyaWJ1dGlvbi5nZXRf
Y29udGFjdF9lbWFpbCgpKSkNCiAgICAgICAgc2VsZi5lbnN1cmVfc3RyaW5n
KCdwYWNrYWdlcicpIA0KICAgICAgICBzZWxmLmVuc3VyZV9zdHJpbmcoJ3Zl
cnNpb24nLCAiMCIpDQogICAgICAgIHNlbGYuZW5zdXJlX3N0cmluZygncmVs
ZWFzZScsICIxIikNCiAgICAgICAgc2VsZi5lbnN1cmVfc3RyaW5nKCdjYXRl
Z29yeScsICJTeXN0ZW0sYXBwbGljYXRpb24iKQ0KICAgICAgICAjc2VsZi5l
bnN1cmVfZmlsZW5hbWUoJ3JlcXVlc3QnKQ0KICAgICAgICBzZWxmLmVuc3Vy
ZV9maWxlbmFtZSgncHJlX2luc3RhbGwnKQ0KICAgICAgICBzZWxmLmVuc3Vy
ZV9maWxlbmFtZSgncG9zdF9pbnN0YWxsJykNCiAgICAgICAgc2VsZi5lbnN1
cmVfZmlsZW5hbWUoJ3ByZV91bmluc3RhbGwnKQ0KICAgICAgICBzZWxmLmVu
c3VyZV9maWxlbmFtZSgncG9zdF91bmluc3RhbGwnKQ0KDQogICAgICAgICMg
WFhYIGRvbid0IGZvcmdldCB3ZSBwdW50ZWQgb24gc3VtbWFyaWVzIGFuZCBk
ZXNjcmlwdGlvbnMgLS0gdGhleQ0KICAgICAgICAjIHNob3VsZCBiZSBoYW5k
bGVkIGhlcmUgZXZlbnR1YWxseSENCg0KICAgICAgICAjIE5vdyAqdGhpcyog
aXMgc29tZSBtZXRhLWRhdGEgdGhhdCBiZWxvbmdzIGluIHRoZSBzZXR1cCBz
Y3JpcHQuLi4NCiAgICAgICAgc2VsZi5lbnN1cmVfc3RyaW5nX2xpc3QoJ2Rl
cGVuZCcpDQogICAgICAgIHNlbGYuZW5zdXJlX3N0cmluZ19saXN0KCdjb21w
dmVyJykNCg0KICAgICMgZmluYWxpemVfcGFja2FnZV9kYXRhICgpDQoNCg0K
ICAgIGRlZiBydW4gKHNlbGYpOg0KDQogICAgICAgIGlmIERFQlVHOg0KICAg
ICAgICAgICAgcHJpbnQgImJlZm9yZSBfZ2V0X3BhY2thZ2VfZGF0YSgpOiIN
CiAgICAgICAgICAgIHByaW50ICJ2ZW5kb3IgPSIsIHNlbGYudmVuZG9yDQog
ICAgICAgICAgICBwcmludCAicGFja2FnZXIgPSIsIHNlbGYucGFja2FnZXIN
Cg0KICAgICAgICAjIG1ha2UgZGlyZWN0b3JpZXMNCiAgICAgICAgcGtnX2Rp
ciA9IHNlbGYucGtndG9vbF9iYXNlDQogICAgICAgIHNlbGYubWtwYXRoKHBr
Z19kaXIpDQoNCiAgICAgICAgIyBTcGVjIGZpbGUgZ29lcyBpbnRvICdkaXN0
X2RpcicgaWYgJy0tc3BlYy1vbmx5IHNwZWNpZmllZCcsDQogICAgICAgICMg
YnVpbGQvYmRpc3QuPHBsYXQ+L3BrZ3Rvb2wgb3RoZXJ3aXNlLg0KICAgICAg
ICBzcGVjX3BhdGggPSBvcy5wYXRoLmpvaW4ocGtnX2RpciwgInBrZ2luZm8i
KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyIlcy5wa2dp
bmZvIiAlIHNlbGYuZGlzdHJpYnV0aW9uLmdldF9uYW1lKCkpDQogICAgICAg
ICMgYnVpbGQgcGFja2FnZQ0KICAgICAgICBzZWxmLmFubm91bmNlKCdCdWls
ZGluZyBwYWNrYWdlJykNCiAgICAgICAgc2VsZi5zcGF3bihzdHJpbmcuc3Bs
aXQoIiVzL2Jpbi9weXRob24gc2V0dXAucHkgYnVpbGQiICUgc3lzLmV4ZWNf
cHJlZml4KSkNCiAgICAgICAgc2VsZi5hbm5vdW5jZSgnQ3JlYXRpbmcgcGtn
aW5mbyBmaWxlJykNCiAgICAgICAgc2VsZi5leGVjdXRlKHdyaXRlX2ZpbGUs
DQogICAgICAgICAgICAgICAgICAgICAoc3BlY19wYXRoLA0KICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX21ha2VfaW5mb19maWxlKCkpLA0KICAgICAg
ICAgICAgICAgICAgICAgIndyaXRpbmcgJyVzJyIgJSBzcGVjX3BhdGgpDQog
ICAgICAgIHNlbGYuYW5ub3VuY2UoJ0NyZWF0aW5nIHByb3RvdHlwZSBmaWxl
JykNCiAgICAgICAgc3BlY19wYXRoID0gb3MucGF0aC5qb2luKHBrZ19kaXIs
ICJwcm90b3R5cGUiKQ0KICAgICAgICBzZWxmLmV4ZWN1dGUod3JpdGVfZmls
ZSwNCiAgICAgICAgICAgICAgICAgICAgIChzcGVjX3BhdGgsDQogICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fbWFrZV9wcm90b3R5cGUoKSksDQogICAg
ICAgICAgICAgICAgICAgICAid3JpdGluZyAnJXMnIiAlIHNwZWNfcGF0aCkN
Cg0KICAgICAgICBzZWxmLmFubm91bmNlKCdDcmVhdGluZyByZWxvY2F0aW9u
IHJlcXVlc3Qgc2NyaXB0JykNCiAgICAgICAgcmVxX3BhdGggPSBvcy5wYXRo
LmpvaW4ocGtnX2RpciwgInJlcXVlc3QiKQ0KCXNlbGYuZXhlY3V0ZSh3cml0
ZV9maWxlLChyZXFfcGF0aCxzdHJpbmcuc3BsaXQoUkVRLCJcMDEyIikpLA0K
CQkid3JpdGluZyAnJXMnIiAlIHJlcV9wYXRoKQ0KDQogICAgICAgIGlmIHNl
bGYuc3BlY19vbmx5OiAjIHN0b3AgaWYgcmVxdWVzdGVkDQogICAgICAgICAg
ICByZXR1cm4NCg0KDQogICAgICAgICNzZWxmLnNwYXduKHN0cmluZy5zcGxp
dCgicGtncHJvdG8gIikpDQogICAgICAgIHNlbGYuYW5ub3VuY2UoJ0NyZWF0
aW5nIHBhY2thZ2UnKQ0KICAgICAgICBycG1fYXJncyA9IFsncGtnbWsnLCAn
LW8nLCAnLWYnXQ0KICAgICAgICBycG1fYXJncy5hcHBlbmQoc3BlY19wYXRo
KQ0KICAgICAgICBycG1fYXJncy5hcHBlbmQoJy1iJykNCiAgICAgICAgcnBt
X2FyZ3MuYXBwZW5kKG9zLmVudmlyb25bJ1BXRCddKQ0KICAgICAgICBzZWxm
LnNwYXduKHJwbV9hcmdzKQ0KICAgICAgICBycG1fYXJncyA9IFsncGtndHJh
bnMnLCAnLXMnLCAnL3Zhci9zcG9vbC9wa2cnXQ0KICAgICAgICBzcGVjX3Bh
dGggPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnUFdEJ10scGtnX2Rpciwg
c2VsZi5kaXN0cmlidXRpb24uZ2V0X25hbWUoKSkgKyBcDQoJCSItIiArIHNl
bGYuZGlzdHJpYnV0aW9uLmdldF92ZXJzaW9uKCkgKyAiLnBrZyINCiAgICAg
ICAgc2VsZi5hbm5vdW5jZSgnVHJhbnNmZXJyaW5nIHBhY2thZ2UgdG8gJyAr
IHBrZ19kaXIpDQogICAgICAgIHJwbV9hcmdzLmFwcGVuZChzcGVjX3BhdGgp
DQogICAgICAgIHJwbV9hcmdzLmFwcGVuZChzZWxmLmRpc3RyaWJ1dGlvbi5n
ZXRfbmFtZSgpKQ0KICAgICAgICBzZWxmLnNwYXduKHJwbV9hcmdzKQ0KCW9z
LnN5c3RlbSgicm0gLXJmIC92YXIvc3Bvb2wvcGtnLyVzIiAlIHNlbGYuZGlz
dHJpYnV0aW9uLmdldF9uYW1lKCkpDQoNCiAgICAgICAgIyBYWFggdGhpcyBp
cyBhIG5hc3R5IGhhY2sgLS0gd2UgcmVhbGx5IHNob3VsZCBoYXZlIGEgcHJv
cGVyIHdheSB0bw0KICAgICAgICAjIGZpbmQgb3V0IHRoZSBuYW1lcyBvZiB0
aGUgUlBNIGZpbGVzIGNyZWF0ZWQ7IGFsc28sIHRoaXMgYXNzdW1lcw0KICAg
ICAgICAjIHRoYXQgUlBNIGNyZWF0ZXMgZXhhY3RseSBvbmUgc291cmNlIGFu
ZCBvbmUgYmluYXJ5IFJQTS4NCiAgICAjIHJ1bigpDQoNCiAgDQogICAgZGVm
IF9tYWtlX3Byb3RvdHlwZShzZWxmKToNCiAgICAgICAgcGtnX2RpciA9IHNl
bGYucGtndG9vbF9iYXNlDQogICAgICAgIHByb3RvX2ZpbGUgPSBbImkgcGtn
aW5mbyIsDQogICAgICAgICAgICAgICAgICAgICJpIHJlcXVlc3QiLA0KCQkg
ICAgIiFkZWZhdWx0IDA2NDQgcm9vdCBiaW4iXQ0KICAgICAgICBpZiBzZWxm
LmRlcGVuZDoNCiAgICAgICAgICAgIHByb3RvX2ZpbGUuZXh0ZW5kKFsnaSBk
ZXBlbmQnXSkNCiAgICAgICAgcHJvdG9fZmlsZS5leHRlbmQoc3RyaW5nLnNw
bGl0KA0KICAgICAgICAgICAgZ2V0b3V0cHV0KCJwa2dwcm90byBidWlsZC9s
aWIvJXM9JXMiICUNCiAgICAgICAgICAgICAgICAoc2VsZi5kaXN0cmlidXRp
b24uZ2V0X25hbWUoKSwNCiAgICAgICAgICAgICAgICBzZWxmLmRpc3RyaWJ1
dGlvbi5nZXRfbmFtZSgpKSksDQogICAgICAgICAgICAiXDAxMiIpKQ0KICAg
ICAgICByZXR1cm4gcHJvdG9fZmlsZQ0KDQogICAgZGVmIF9tYWtlX2luZm9f
ZmlsZShzZWxmKToNCiAgICAgICAgIiIiR2VuZXJhdGUgdGhlIHRleHQgb2Yg
YW4gUlBNIHNwZWMgZmlsZSBhbmQgcmV0dXJuIGl0IGFzIGENCiAgICAgICAg
bGlzdCBvZiBzdHJpbmdzIChvbmUgcGVyIGxpbmUpLg0KICAgICAgICAiIiIN
CiAgICAgICAgIyBkZWZpbml0aW9ucyBhbmQgaGVhZGVycw0KICAgICAgICBz
cGVjX2ZpbGUgPSBbDQogICAgICAgICAgICAnUEtHPSIlcyInICUgc2VsZi5k
aXN0cmlidXRpb24uZ2V0X25hbWUoKSwNCiAgICAgICAgICAgICdOQU1FPSIl
cyInICUgc2VsZi5kaXN0cmlidXRpb24uZ2V0X25hbWUoKSwNCiAgICAgICAg
ICAgICdWRVJTSU9OPSIlcyInICUgc2VsZi5kaXN0cmlidXRpb24uZ2V0X3Zl
cnNpb24oKSwNCiAgICAgICAgICAgIF0NCiAgICAgICAgaWYgc2VsZi5hcmNo
Og0KICAgICAgICAgICAgc3BlY19maWxlLmV4dGVuZChbJ0FSQ0g9IiVzIicg
JSBzZWxmLmFyY2ggXSkNCiAgICAgICAgaWYgc2VsZi5jbGFzc2VzOg0KICAg
ICAgICAgICAgc3BlY19maWxlLmV4dGVuZChbJ0NMQVNTRVM9IiVzIicgJSBz
ZWxmLmNsYXNzZXMgXSkNCiAgICAgICAgaWYgc2VsZi5jYXRlZ29yeToNCiAg
ICAgICAgICAgIHNwZWNfZmlsZS5leHRlbmQoWydDQVRFR09SWT0iJXMiJyAl
IHNlbGYuY2F0ZWdvcnkgXSkNCiAgICAgICAgc2l0ZT1Ob25lDQogICAgICAg
IGZvciBpIGluICBzeXMucGF0aDoNCiAgICAgICAgICAgIGlmIGlbLTEzOl09
PSJzaXRlLXBhY2thZ2VzIjoNCiAgICAgICAgICAgICAgICBzaXRlPWkNCiAg
ICAgICAgICAgICAgICBicmVhaw0KICAgICAgICBpZiBzaXRlOg0KICAgICAg
ICAgICAgc3BlY19maWxlLmV4dGVuZChbJ0JBU0VESVI9IiVzIicgJSBzaXRl
IF0pDQogICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICNpZiBzZWxm
LmRlcGVuZDoNCiAgICAgICAgICAgICAjc3BlY19maWxlLmFwcGVuZCgnQnVp
bGRSZXF1aXJlczogJyArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjc3RyaW5nLmpvaW4oc2VsZi5idWlsZF9yZXF1aXJlcykpDQoNCiAgICAg
ICAgIyBYWFggdGhpcyBpcyBraW5kIG9mIG1pc2xlYWRpbmc6IHVzZXItc3Vw
cGxpZWQgb3B0aW9ucyBhcmUgZmlsZXMNCiAgICAgICAgIyB0aGF0IHdlIG9w
ZW4gYW5kIGludGVycG9sYXRlIGludG8gdGhlIHNwZWMgZmlsZSwgYnV0IHRo
ZSBkZWZhdWx0cw0KICAgICAgICAjIGFyZSBqdXN0IHRleHQgdGhhdCB3ZSBk
cm9wIGluIGFzLWlzLiAgSG1tbS4NCg0KICAgICAgICBzY3JpcHRfb3B0aW9u
cyA9IFsNCiAgICAgICAgICAgICgncHJlcCcsICdwcmVwX3NjcmlwdCcsICIl
c2V0dXAiKSwNCiAgICAgICAgICAgICMoJ2J1aWxkJywgJ2J1aWxkX3Njcmlw
dCcsIGRlZl9idWlsZCksDQogICAgICAgICAgICAoJ2luc3RhbGwnLCAnaW5z
dGFsbF9zY3JpcHQnLA0KICAgICAgICAgICAgICJweXRob24gc2V0dXAucHkg
aW5zdGFsbCAiDQogICAgICAgICAgICAgIi0tcm9vdD0kUlBNX0JVSUxEX1JP
T1QgIg0KICAgICAgICAgICAgICItLXJlY29yZD1JTlNUQUxMRURfRklMRVMi
KSwNCiAgICAgICAgICAgICMoJ2NsZWFuJywgJ2NsZWFuX3NjcmlwdCcsICJy
bSAtcmYgJFJQTV9CVUlMRF9ST09UIiksDQogICAgICAgICAgICAoJ3ByZScs
ICdwcmVfaW5zdGFsbCcsIE5vbmUpLA0KICAgICAgICAgICAgKCdwb3N0Jywg
J3Bvc3RfaW5zdGFsbCcsIE5vbmUpLA0KICAgICAgICAgICAgKCdwcmV1bics
ICdwcmVfdW5pbnN0YWxsJywgTm9uZSksDQogICAgICAgICAgICAoJ3Bvc3R1
bicsICdwb3N0X3VuaW5zdGFsbCcsIE5vbmUpLA0KICAgICAgICBdDQoNCiAg
ICAgICAgcmV0dXJuIHNwZWNfZmlsZQ0KDQogICAgIyBfbWFrZV9pbmZvX2Zp
bGUgKCkNCg0KICAgIGRlZiBfZm9ybWF0X2NoYW5nZWxvZyhzZWxmLCBjaGFu
Z2Vsb2cpOg0KICAgICAgICAiIiJGb3JtYXQgdGhlIGNoYW5nZWxvZyBjb3Jy
ZWN0bHkgYW5kIGNvbnZlcnQgaXQgdG8gYSBsaXN0IG9mIHN0cmluZ3MNCiAg
ICAgICAgIiIiDQogICAgICAgIGlmIG5vdCBjaGFuZ2Vsb2c6DQogICAgICAg
ICAgICByZXR1cm4gY2hhbmdlbG9nDQogICAgICAgIG5ld19jaGFuZ2Vsb2cg
PSBbXQ0KICAgICAgICBmb3IgbGluZSBpbiBzdHJpbmcuc3BsaXQoc3RyaW5n
LnN0cmlwKGNoYW5nZWxvZyksICdcbicpOg0KICAgICAgICAgICAgbGluZSA9
IHN0cmluZy5zdHJpcChsaW5lKQ0KICAgICAgICAgICAgaWYgbGluZVswXSA9
PSAnKic6DQogICAgICAgICAgICAgICAgbmV3X2NoYW5nZWxvZy5leHRlbmQo
WycnLCBsaW5lXSkNCiAgICAgICAgICAgIGVsaWYgbGluZVswXSA9PSAnLSc6
DQogICAgICAgICAgICAgICAgbmV3X2NoYW5nZWxvZy5hcHBlbmQobGluZSkN
CiAgICAgICAgICAgIGVsc2U6DQogICAgICAgICAgICAgICAgbmV3X2NoYW5n
ZWxvZy5hcHBlbmQoJyAgJyArIGxpbmUpDQogICAgICAgICAgICAgICAgDQog
ICAgICAgICMgc3RyaXAgdHJhaWxpbmcgbmV3bGluZSBpbnNlcnRlZCBieSBm
aXJzdCBjaGFuZ2Vsb2cgZW50cnkNCiAgICAgICAgaWYgbm90IG5ld19jaGFu
Z2Vsb2dbMF06DQogICAgICAgICAgICBkZWwgbmV3X2NoYW5nZWxvZ1swXQ0K
ICAgICAgICANCiAgICAgICAgcmV0dXJuIG5ld19jaGFuZ2Vsb2cNCg0KICAg
ICMgX2Zvcm1hdF9jaGFuZ2Vsb2coKQ0KDQojIGNsYXNzIGJkaXN0X3JwbQ0K

---941424627-93897353-967170202=:59938--