[Zope-PTK] No access to created portal

Brun Eric eric.brun@etu.univ-savoie.fr
Fri, 28 Jul 2000 20:23:44 +0200


--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD
Content-Type: text/plain
Content-Transfer-Encoding: 8bit


Hi, I had this problem for my own PTK Project:
I couldn't transfer its from Zope 2.1.6 to Zope 2.2.0

I had look for a CVS version of PTK and I found one.

Then I replace my PortalObject.py file by the CVS PortalObject.py file :
I corrected some lines that didn't run with my version of PTK
and Now my PTK run on 2.2.0 !!

I hope it's clear and help you

Thank to CVS

Attachment : PortalObject.py of CVS


Eric
--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD
Content-Type: text/x-java;
  name="PortalObject.py"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="PortalObject.py"

aW1wb3J0IHN5cywgb3MsIHN0cmluZywgdGltZSwgcmFuZG9tCmZyb20gdXJsbGliIGltcG9ydCBx
dW90ZSwgdW5xdW90ZQpmcm9tIGJhc2U2NCBpbXBvcnQgZW5jb2Rlc3RyaW5nCgpmcm9tIERhdGVU
aW1lIGltcG9ydCBEYXRlVGltZQpmcm9tIERvY3VtZW50VGVtcGxhdGUgaW1wb3J0IEhUTUwKZnJv
bSBBcHAuRGlhbG9ncyBpbXBvcnQgTWVzc2FnZURpYWxvZwppbXBvcnQgT0ZTLlNpbXBsZUl0ZW0K
ZnJvbSBHbG9iYWxzIGltcG9ydCBIVE1MRmlsZQppbXBvcnQgR2xvYmFscwoKZnJvbSBEdWJsaW5D
b3JlIGltcG9ydCBEdWJsaW5Db3JlCmZyb20gVG9vbGJveCBpbXBvcnQgVG9vbGJveApmcm9tIFRv
b2xib3hBY3Rpb25Qcm92aWRlciBpbXBvcnQgVG9vbGJveEFjdGlvblByb3ZpZGVyCmltcG9ydCBQ
b3J0YWxGb2xkZXIKaW1wb3J0IE1lbWJlckZvbGRlcgpmcm9tIEV4dGVuc2lvbkNsYXNzIGltcG9y
dCBCYXNlCgoKdHJ5OgogICAgIyBab3BlIDIuMi54IG1ldGhvZC4KICAgIGZyb20gQWNjZXNzQ29u
dHJvbCBpbXBvcnQgZ2V0U2VjdXJpdHlNYW5hZ2VyCiAgICBkZWYgZ2V0QXV0aGVudGljYXRlZFVz
ZXIoc2VsZik6CiAgICAgICAgcmV0dXJuIGdldFNlY3VyaXR5TWFuYWdlcigpLmdldFVzZXIoKQpl
eGNlcHQ6CiAgICAjIFpvcGUgMi4xLnggbWV0aG9kLgogICAgZnJvbSBBY2Nlc3NDb250cm9sIGlt
cG9ydCBVc2VyCiAgICBkZWYgZ2V0QXV0aGVudGljYXRlZFVzZXIoc2VsZik6CiAgICAgICAgdSA9
IHNlbGYuUkVRVUVTVC5nZXQoJ0FVVEhFTlRJQ0FURURfVVNFUicsIE5vbmUpCiAgICAgICAgaWYg
dSBpcyBOb25lOgogICAgICAgICAgICB1ID0gVXNlci5ub2JvZHkKICAgICAgICByZXR1cm4gdQoK
CmNsYXNzIE1lbWJlckRhdGFBY2Nlc3MoQmFzZSk6CgogICAgIyBUaGlzIGNsYXNzIGFjY2Vzc2Vz
IG1lbWJlciBkYXRhIHRocm91Z2ggYW4gYWNsX3VzZXJzIG9iamVjdC4KICAgIAogICAgZGVmIGdl
dEF1dGhlbnRpY2F0ZWRNZW1iZXIoc2VsZik6CiAgICAgICAgJycnCiAgICAgICAgUmV0dXJucyB0
aGUgY3VycmVudGx5IGF1dGhlbnRpY2F0ZWQgbWVtYmVyIG9iamVjdCBvciB0aGUgQW5vbnltb3Vz
IFVzZXIuCiAgICAgICAgJycnCiAgICAgICAgdSA9IGdldEF1dGhlbnRpY2F0ZWRVc2VyKHNlbGYp
CiAgICAgICAgaWYgdSBpcyBub3QgTm9uZSBhbmQgbm90IGhhc2F0dHIodSwgJ2FxX2Jhc2UnKToK
ICAgICAgICAgICAgdSA9IHUuX19vZl9fKHNlbGYuYWNsX3VzZXJzKQogICAgICAgIHJldHVybiB1
CgogICAgZGVmIGdldE1lbWJlckJ5SWQoc2VsZiwgaWQpOgogICAgICAgICcnJwogICAgICAgIFJl
dHVybnMgdGhlIGdpdmVuIG1lbWJlci4KICAgICAgICAnJycKICAgICAgICB1ID0gc2VsZi5hY2xf
dXNlcnMuZ2V0VXNlcihpZCkKICAgICAgICBpZiB1IGlzIG5vdCBOb25lIGFuZCBub3QgaGFzYXR0
cih1LCAnYXFfYmFzZScpOgogICAgICAgICAgICB1ID0gdS5fX29mX18oc2VsZi5hY2xfdXNlcnMp
CiAgICAgICAgcmV0dXJuIHUKCiAgICBkZWYgYWRkTWVtYmVyRm9sZGVyKHNlbGYsIFJFUVVFU1Q9
Tm9uZSk6CiAgICAgICAgIiIiQWRkIGEgbWVtYmVyIGZvbGRlciB0byBhIHBvcnRhbCBzaXRlIG9i
amVjdC4KCiAgICAgICAgVGhpcyBpcyBkb25lIGR1cmluZyBpbml0aWFsaXphdGlvbi4iIiIKICAg
ICAgICAKICAgICAgICBpZiBoYXNhdHRyKHNlbGYuYXFfYmFzZSwgJ2FjbF91c2VycycpOgogICAg
ICAgICAgICByZXR1cm4gTWVzc2FnZURpYWxvZygKICAgICAgICAgICAgICAgICAgIHRpdGxlICA9
J0l0ZW0gRXhpc3RzJywKICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1RoaXMgb2JqZWN0IGFs
cmVhZHkgY29udGFpbnMgYSBVc2VyIEZvbGRlcicsCiAgICAgICAgICAgICAgICAgICBhY3Rpb24g
PSclcy9tYW5hZ2VfbWFpbicgJSBSRVFVRVNUWydVUkwxJ10pCiAgICAgICAgCiAgICAgICAgZGVz
dD1zZWxmLnRoaXMoKQogICAgICAgIG9iPXNlbGYuTWVtYmVyc0NsYXNzKCkKICAgICAgICBpZiBo
YXNhdHRyKGRlc3QsICdfc2V0T2JqZWN0Jyk6CiAgICAgICAgICAgIGRlc3QuX3NldE9iamVjdCgn
YWNsX3VzZXJzJywgb2IpCiAgICAgICAgICAgIGRlc3QuX19hbGxvd19ncm91cHNfXz1kZXN0LmFj
bF91c2VycwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRlc3QuX19hbGxvd19ncm91cHNfXz1k
ZXN0LmFjbF91c2Vycz1vYgogICAgICAgICAgICAKICAgICAgICBpZiBSRVFVRVNUOiByZXR1cm4g
ZGVzdC5tYW5hZ2VfbWFpbihkZXN0LCBSRVFVRVNULCB1cGRhdGVfbWVudT0xKQoKICAgIGRlZiBh
ZGRNZW1iZXIoc2VsZiwgbmFtZSwgcGFzc3dvcmQsIHJvbGVzLCBkb21haW5zKToKICAgICAgICBz
ZWxmLmFjbF91c2Vycy5fYWRkVXNlcihuYW1lLCBwYXNzd29yZCwgcGFzc3dvcmQsIHJvbGVzLCBk
b21haW5zKQoKICAgIGRlZiBfY2hhbmdlTWVtYmVyKHNlbGYsIHVzZXIsIG5hbWUsIHBhc3N3b3Jk
LCByb2xlcywgZG9tYWlucyk6CiAgICAgICAgIyBDYW4gYmUgb3ZlcnJpZGRlbi4KICAgICAgICAj
IFRoZXJlIGlzIG5vIHN0YW5kYXJkIGZvciBhY2NvbXBsaXNoaW5nIHRoaXMsCiAgICAgICAgIyBz
byBmb3Igbm93IHRyeSBhbGwgdGhlIHdheXMgd2Uga25vdy4gOi0oCiAgICAgICAgaWYgaGFzYXR0
cihzZWxmLmFjbF91c2VycywgJ19jaGFuZ2VVc2VyJyk6CiAgICAgICAgICAgIHNlbGYuYWNsX3Vz
ZXJzLl9jaGFuZ2VVc2VyKG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhc3N3b3JkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNz
d29yZCwgIyBjb25maXJtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJv
bGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW5zKQogICAg
ICAgIGVsaWYgaGFzYXR0cih1c2VyLCAnY2hhbmdlVXNlcicpOgogICAgICAgICAgICB1c2VyLmNo
YW5nZVVzZXIocGFzc3dvcmQsIHJvbGVzLCBkb21haW5zKQogICAgICAgIGlmIGhhc2F0dHIoc2Vs
Zi5hY2xfdXNlcnMsICdjcmVkZW50aWFsc0NoYW5nZWQnKToKICAgICAgICAgICAgIyBUYWtlIGFk
dmFudGFnZSBvZiBhbiBpbnRlcmZhY2UgcHJvdmlkZWQgYnkgTG9naW5NYW5hZ2VyLgogICAgICAg
ICAgICBzZWxmLmFjbF91c2Vycy5jcmVkZW50aWFsc0NoYW5nZWQodXNlciwgbmFtZSwgcGFzc3dv
cmQpCgoKY2xhc3MgUG9ydGFsT2JqZWN0QmFzZShQb3J0YWxGb2xkZXIuUG9ydGFsRm9sZGVyLCBE
dWJsaW5Db3JlLAogICAgICAgICAgICAgICAgICAgICAgIFRvb2xib3hBY3Rpb25Qcm92aWRlciwg
TWVtYmVyRGF0YUFjY2Vzcyk6CgogICAgbWV0YV90eXBlPSdQb3J0YWwgU2l0ZScKICAgIF9pc0FQ
b3J0YWxPYmplY3QgPSAxCgogICAgX3NpdGVCYXNlPXNpdGVQYXRoPScnCgogICAgX19hY19yb2xl
c19fPSgnTWVtYmVyJywgJ1Jldmlld2VyJywgJ0NvbnRyaWJ1dG9yJykKICAgIAogICAgX19hY19w
ZXJtaXNzaW9uc19fPSgKICAgICAgICAoJ1ZpZXcgbWFuYWdlbWVudCBzY3JlZW5zJywKICAgICAg
ICAgKCdwb3J0YWxfY3V0JywgJ3BvcnRhbF9jb3B5JywgJ3BvcnRhbF9wYXN0ZScsICdwb3J0YWxf
cmVuYW1lJywKICAgICAgICAgICdwb3J0YWxfZGVsZXRlJykpLAogICAgICAgICgnTWFuYWdlIHBv
cnRhbCcsCiAgICAgICAgICgnYWRkTWVtYmVyRm9sZGVyJywnYWRkTWVtYmVyJyksICgnT3duZXIn
LCkpLAogICAgICAgICgnQ29udHJpYnV0ZSBwb3J0YWwgY29udGVudCcsICgpLCAoJ0NvbnRyaWJ1
dG9yJywpKSwKICAgICAgICApCgoKICAgIGRlZiByZWdpc3RlcihzZWxmLCB1c2VybmFtZT0nJywg
ZnVsbF9uYW1lPScnLCBjb21wYW55PScnLCBlbWFpbD0nJywKICAgICAgICAgICAgICAgICBtYWls
X21lPTAsIFJFUVVFU1Q9Tm9uZSk6CiAgICAgICAgIiIiICIiIgogICAgICAgIHJlZ2lzdGVyX2h0
bWw9Z2V0YXR0cihzZWxmLCAnam9pbl9mb3JtJykKICAgICAgICBpZiBub3QgdXNlcm5hbWUgb3Ig
bm90IGVtYWlsOgogICAgICAgICAgICByZXR1cm4gcmVnaXN0ZXJfaHRtbChzZWxmLCBSRVFVRVNU
LAogICAgICAgICAgICAgICAgICAgZXJyb3I9KCdZb3UgbXVzdCBlbnRlciBhIHZhbHVlIGZvciBO
YW1lIGFuZCBhIHZhbGlkIEVtYWlsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnQWRkcmVz
cy4nKSkKICAgIAogICAgICAgIHVzZXI9c2VsZi5nZXRNZW1iZXJCeUlkKHVzZXJuYW1lKQogICAg
ICAgIGlmIHVzZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldHVybiByZWdpc3Rlcl9odG1s
KHNlbGYsIFJFUVVFU1QsCiAgICAgICAgICAgICAgICAgICBlcnJvcj0oJ1RoZSBsb2dpbiBuYW1l
IHlvdSBzZWxlY3RlZCBpcyBhbHJlYWR5IGluIHVzZS4gJwogICAgICAgICAgICAgICAgICAgICAg
ICAgICdQbGVhc2UgY2hvb3NlIGFub3RoZXIuJykpCiAgICAgICAgcGFzc3dvcmQgPSBSRVFVRVNU
LmdldCgncGFzc3dvcmQnLCBnZW5fcGFzc3dvcmQoKSkKICAgICAgICBkaXNhcHByb3ZhbCA9IHNl
bGYucGFzc3dvcmRfcG9saWN5KHBhc3N3b3JkKQogICAgICAgIGlmIGRpc2FwcHJvdmFsOgogICAg
ICAgICAgICByZXR1cm4gcmVnaXN0ZXJfaHRtbChzZWxmLCBSRVFVRVNULAogICAgICAgICAgICAg
ICAgICAgZXJyb3I9KGRpc2FwcHJvdmFsKSkKICAgICAgICBjb25maXJtID0gUkVRVUVTVC5nZXQo
J2NvbmZpcm0nLCBwYXNzd29yZCkKICAgICAgICBpZiBjb25maXJtICE9IHBhc3N3b3JkOgogICAg
ICAgICAgICByZXR1cm4gcmVnaXN0ZXJfaHRtbChzZWxmLCBSRVFVRVNULAogICAgICAgICAgICAg
ICAgICAgZXJyb3I9KCdZb3VyIHBhc3N3b3JkIGFuZCBjb25maXJtYXRpb24gZGlkIG5vdCBtYXRj
aC4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICdQbGVhc2UgdHJ5IGFnYWluLicpKQogICAg
CiAgICAgICAgIyBBZGQgdGhlIG1lbWJlcgogICAgCiAgICAgICAgc2VsZi5hZGRNZW1iZXIodXNl
cm5hbWUsIHBhc3N3b3JkLCBbJ01lbWJlciddLCBbXSkKICAgIAogICAgICAgIHVzZXI9c2VsZi5n
ZXRNZW1iZXJCeUlkKHVzZXJuYW1lKQogICAgICAgIHVzZXIuc2V0TWVtYmVyUHJvcGVydGllcyhS
RVFVRVNUKQoKICAgICAgICBzZWxmLnJlZ2lzdGVyX2hvb2soUkVRVUVTVCkKICAgICAgICAKICAg
ICAgICAjIEdlbmVyYXRlIGVtYWlsIG5vdGlmaWNhdGlvbgogICAgICAgICMgWFhYIFRoaXMgYnJl
YWtzIHRoZSBkaXZpc2lvbiBiZXR3ZWVuIHRoZSBQVEsgYW5kIHRoZSBEZW1vUG9ydGFsLgogICAg
ICAgICMgICAgIE11c3QgbW92ZSBwcm9wZXJ0aWVzIGZyb20gcHJvcGVydHlzaGVldCB0byBQb3J0
YWxPYmplY3QuCiAgICAgICAgaWYgZ2V0YXR0cihzZWxmLCAndmFsaWRhdGVfZW1haWwnLCAwKSBv
ciBtYWlsX21lOgogICAgICAgICAgICBzZWxmLnJlZ2lzdGVyZWRfbm90aWZ5KHNlbGYsIFJFUVVF
U1QsIHBhc3N3b3JkPXBhc3N3b3JkKQogICAgICAgIAogICAgICAgIHJldHVybiBnZXRhdHRyKHNl
bGYsICdyZWdpc3RlcmVkJykoc2VsZiwgUkVRVUVTVCkgICAgICAgICAgICAKCiAgICBkZWYgcmVn
aXN0ZXJfaG9vayhzZWxmLCAqYXJncyk6IHBhc3MKCiAgICBkZWYgcGFzc3dvcmRfcG9saWN5KHNl
bGYsIGNhbmRpZGF0ZSk6CiAgICAgICAgIiIiSW1wbGVtZW50IGhlcmUgdGhlIHBhc3N3b3JkIGNo
YXJhY3RlcmlzdGljcyBwb2xpY3kgZm9yIHlvdXIgc2l0ZS4KICAgIAogICAgICAgIFJldHVybnMg
YW4gZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLCBvciBOb25lIGlmIGFsbCBpcyBvay4iIiIKICAg
ICAgICBpZiBsZW4oY2FuZGlkYXRlKSA8IDU6CiAgICAgICAgICAgIHJldHVybiAnWW91ciBwYXNz
d29yZCBtdXN0IGNvbnRhaW4gYXQgbGVhc3QgNSBjaGFyYWN0ZXJzLicKCgogICAgZGVmIG1haWxf
cGFzc3dvcmQoc2VsZiwgZm9yZ290dGVuX3VzZXJuYW1lLCBSRVFVRVNUKToKICAgICAgICAiIiJF
bWFpbCBhIGZvcmdvdHRlbiBwYXNzd29yZCB0byBhIG1lbWJlciIiIgogICAgCiAgICAgICAgdXNl
ciA9IHNlbGYuZ2V0TWVtYmVyQnlJZChmb3Jnb3R0ZW5fdXNlcm5hbWUpCiAgICAgICAgaWYgdXNl
ciBpcyBOb25lOgogICAgICAgICAgICByZXR1cm4gTWVzc2FnZURpYWxvZygKICAgICAgICAgICAg
ICAgICAgIHRpdGxlICA9J1VzZXJuYW1lIG5vdCBmb3VuZCcsCiAgICAgICAgICAgICAgICAgICBt
ZXNzYWdlPSdUaGUgdXNlcm5hbWUgeW91IGVudGVyZWQgY291bGQgbm90IGJlIGZvdW5kLicsCiAg
ICAgICAgICAgICAgICAgICBhY3Rpb24gPSdtYWlsX3Bhc3N3b3JkX2Zvcm0nKQogICAgCiAgICAg
ICAgcmV0dXJuIHNlbGYubWFpbF9wYXNzd29yZF90ZW1wbGF0ZSgKICAgICAgICAgICAgc2VsZiwg
UkVRVUVTVCwKICAgICAgICAgICAgIyBmdWxsX25hbWU9dXNlci5mdWxsX25hbWUsCiAgICAgICAg
ICAgIGVtYWlsPXVzZXIuZW1haWwsCiAgICAgICAgICAgIHBhc3N3b3JkPXVzZXIuX2dldFBhc3N3
b3JkKCkKICAgICAgICAgICAgKQoKICAgIGRlZiBtYW5hZ2VfZWRpdFNpdGVCYXNlKHNlbGYsIGJh
c2U9JycsIHBhdGg9JycsIFJFUVVFU1Q9Tm9uZSk6CiAgICAgICAgIiIiICIiIgogICAgICAgIHNl
bGYuX3NpdGVCYXNlID0gYmFzZQogICAgICAgIHNlbGYuX3NpdGVQYXRoID0gcGF0aAogICAgICAg
IGlmIFJFUVVFU1QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgIHJldHVybiBzZWxmLm1hbmFnZV9t
YWluKHNlbGYsIFJFUVVFU1QpCgoKCiAgICBpZiAwOiAgIyBUaGlzIGlzIGxlZ2FjeSBjb2RlIHRv
IGRlYWwgd2l0aCB2aXJ0dWFsIGhvc3RzLgoKICAgICAgZGVmIF9fYm9ib190cmF2ZXJzZV9fKHNl
bGYsIFJFUVVFU1QsIG5hbWU9Tm9uZSk6CiAgICAgICAgIiIiIFdoZW4gSSBzaXRlIG9iamVjdCBp
cyB0cmF2ZXJzZWQsIGl0IHNob3VsZCByZXNldCB0aGUKICAgICAgICBSRVFVRVNUcyBVUkwgYmFz
ZS4gIFRoZSBleGNlcHRpb24gaXMgd2hlbiB0aGUgZW52aXJvbm1lbnQKICAgICAgICB2YXJpYWJs
ZSBTRVJWRVJfVVJMIGRvZXMgbm90IG1hdGNoIHRoZSBuZXcgYmFzZSwgaW4gdGhpcyBjYXNlLCAK
ICAgICAgICBubyByZXdyaXRpbmcgc2hvdWxkIGJlIGRvbmUgKG90aGVyd2lzZSwgeW91ciBvYmpl
Y3QgbWF5IGJlY29tZSAKICAgICAgICB1bnJlYWNoYWJsZSBpZiB5b3VyIHZpcnR1YWwgaG9zdHMg
c3RvcCB3b3JraW5nKSIiIgoKICAgICAgICBpZiBSRVFVRVNULmhhc19rZXkoJ1NFUlZFUl9VUkwn
KSBhbmQgXAogICAgICAgICAgIFJFUVVFU1RbJ1NFUlZFUl9VUkwnXSA9PSBzZWxmLl9zaXRlQmFz
ZToKICAgICAgICAgICAgUkVRVUVTVC5zZXRTaXRlKHNlbGYuX3NpdGVCYXNlKQogICAgICAgICAg
ICAjIHRoZSB2aXJ0dWFsIHNpdGUncyBQQVJFTlRTIHNob3VsZCBlbmQgYXQgdGhlIHNpdGUgb2Jq
ZWN0CiAgICAgICAgICAgIGRlbCBSRVFVRVNUWydQQVJFTlRTJ11bOl0KCiAgICAgICAgdHJ5OiBy
ZXR1cm4gZ2V0YXR0cihzZWxmLCBuYW1lKQogICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjog
cGFzcwogICAgICAgIHRyeTogcmV0dXJuIHNlbGZbbmFtZV0KICAgICAgICBleGNlcHQgS2V5RXJy
b3I6IHBhc3MKICAgICAgICBtZXRob2Q9UkVRVUVTVC5nZXQoJ1JFUVVFU1RfTUVUSE9EJywgJ0dF
VCcpCiAgICAgICAgaWYgbm90IG1ldGhvZCBpbiAoJ0dFVCcsICdQT1NUJyk6CiAgICAgICAgICAg
IHJldHVybiBOdWxsUmVzb3VyY2Uoc2VsZiwgbmFtZSwgUkVRVUVTVCkuX19vZl9fKHNlbGYpCgog
ICAgICAgIFJFUVVFU1QuUkVTUE9OU0Uubm90Rm91bmRFcnJvcigiJXNcbiVzIiAlIChuYW1lLCBt
ZXRob2QpKQoKCiAgICAgIGRlZiBhYnNvbHV0ZV91cmwoc2VsZiwgcmVsYXRpdmU9Tm9uZSk6CiAg
ICAgICAgIiIiIHNpbmNlIGFic29sdXRlX3VybCBub3cgcmVjdXJzZXMgdXAgdGhlIGNvbnRhaW5t
ZW50CiAgICAgICAgaGVpcmFyY2h5LCB3ZSB3YW50IHRvIHJldHVybiBhbiBlbXB0eSBzdHJpbmcg
dG8gaW5kaWNhdGUgdGhhdAogICAgICAgIHRoZSByZWN1cnNpb24gc2hvdWxkIHN0b3AgaGVyZSBi
ZWNhdXNlIHdlIGFyZSB0aGUgdmlydHVhbCByb290IAogICAgICAgIGZvciB0aGlzIHNpdGUgb2Jq
ZWN0CiAgICAgICAgIiIiCiAgICAgICAgIyBhcmdoLCBJIGd1ZXNzIEkgc2hvdWxkIGFxdWlyZSBS
RVFVRVNUCgogICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ1JFUVVFU1QnKSBhbmQgXAogICAgICAg
ICAgIHNlbGYuUkVRVUVTVFsnU0VSVkVSX1VSTCddID09IHNlbGYuX3NpdGVCYXNlOgogICAgICAg
ICAgICBpZiBub3QgcmVsYXRpdmU6CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2l0ZUJh
c2UKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiAnJwogICAgICAgIGVs
c2U6CiAgICAgICAgICAgIGlkPXF1b3RlKHNlbGYuaWQpCgogICAgICAgICAgICBwPWdldGF0dHIo
c2VsZiwnYXFfaW5uZXInLCBOb25lKQogICAgICAgICAgICBpZiBwIGlzIG5vdCBOb25lOiAKICAg
ICAgICAgICAgICAgIHVybD1wLmFxX3BhcmVudC5hYnNvbHV0ZV91cmwocmVsYXRpdmUpCiAgICAg
ICAgICAgICAgICBpZiB1cmw6IGlkPXVybCsnLycraWQKCiAgICAgICAgICAgIHJldHVybiBpZAoK
ICAgICAgIyBFTkQgTEVHQUNZIENPREUKCgogICAgZGVmIGNoYW5nZVBhc3N3b3JkKHNlbGYsIHVz
ZXIsIHBhc3N3b3JkLCBjb25maXJtLCBkb21haW5zLCBSRVFVRVNULAogICAgICAgICAgICAgICAg
ICAgICAgIHJlZGlyZWN0PU5vbmUpOgogICAgICAgICcgJwogICAgICAgIGF1c2VyPXNlbGYuZ2V0
QXV0aGVudGljYXRlZE1lbWJlcigpCiAgICAgICAgaWYgYXVzZXIuZ2V0VXNlck5hbWUoKSAhPSB1
c2VyOgogICAgICAgICAgICByYWlzZSAnVW5hdXRob3JpemVkJwogICAgICAgIGlmIHBhc3N3b3Jk
ICE9IGNvbmZpcm06IHJhaXNlICdQYXNzd29yZHMgZG9uXCd0IG1hdGNoJwogICAgICAgIHNlbGYu
X2NoYW5nZU1lbWJlcihhdXNlciwgdXNlciwgcGFzc3dvcmQsIGF1c2VyLmdldFJvbGVzKCksIGRv
bWFpbnMpCgogICAgICAgIGlmIHJlZGlyZWN0IGlzIG5vdCBOb25lOgogICAgICAgICAgICBSRVFV
RVNULlJFU1BPTlNFLnJlZGlyZWN0KHJlZGlyZWN0KQogICAgICAgIGVsc2U6CiAgICAgICAgICAg
IHJldHVybiBzZWxmLnBlcnNvbmFsaXplX2Zvcm0oCiAgICAgICAgICAgICAgICBzZWxmLCBSRVFV
RVNULCBwb3J0YWxfc3RhdHVzX21lc3NhZ2U9IlBhc3N3b3JkIGNoYW5nZWQiKQoKICAgICMgQWN0
aW9uIFByb3ZpZGVyIGludGVyZmFjZQoKICAgIGRlZiB0b29sYm94X2FjdGlvbnMoc2VsZiwgdXJs
PTApOgogICAgICAgIGlmIHVybD09MDogdXJsPXNlbGYuYWJzb2x1dGVfdXJsKCkKICAgICAgICB0
cnk6CiAgICAgICAgICAgIHVzZXI9c2VsZi5nZXRBdXRoZW50aWNhdGVkTWVtYmVyKCkKICAgICAg
ICAgICAgdXNlcm5hbWU9dXNlci5nZXRVc2VyTmFtZSgpCiAgICAgICAgZXhjZXB0OgogICAgICAg
ICAgICB1c2VybmFtZT0nQW5vbnltb3VzIFVzZXInCiAgICAgICAgICAgIAogICAgICAgIGlmIHVz
ZXJuYW1lPT0nQW5vbnltb3VzIFVzZXInOgogICAgICAgICAgICBhY3Rpb25zID0gKAogICAgICAg
ICAgICAgICAgeyduYW1lJzogJ0xvZyBpbicsCiAgICAgICAgICAgICAgICAgJ3VybCc6IHVybCAr
ICcvbG9naW5fZm9ybScsCiAgICAgICAgICAgICAgICAgJ3Blcm1pc3Npb25zJzogW10sCiAgICAg
ICAgICAgICAgICAgJ2NhdGVnb3J5JzogJ3VzZXInfSwKICAgICAgICAgICAgICAgIHsnbmFtZSc6
ICdKb2luJywKICAgICAgICAgICAgICAgICAndXJsJzogdXJsICsgJy9qb2luX2Zvcm0nLAogICAg
ICAgICAgICAgICAgICdwZXJtaXNzaW9ucyc6IFtdLAogICAgICAgICAgICAgICAgICdjYXRlZ29y
eSc6ICd1c2VyJ30sCiAgICAgICAgICAgICAgICApCiAgICAgICAgZWxzZToKICAgICAgICAgICAg
YWN0aW9ucyA9ICgKICAgICAgICAgICAgICAgIHsnbmFtZSc6ICdQcmVmZXJlbmNlcycsCiAgICAg
ICAgICAgICAgICAgJ3VybCc6IHVybCArICcvcGVyc29uYWxpemVfZm9ybScsCiAgICAgICAgICAg
ICAgICAgJ3Blcm1pc3Npb25zJzogW10sCiAgICAgICAgICAgICAgICAgJ2NhdGVnb3J5JzogJ3Vz
ZXInfSwKICAgICAgICAgICAgICAgIHsnbmFtZSc6ICdMb2cgb3V0JywKICAgICAgICAgICAgICAg
ICAndXJsJzogdXJsICsgJy9sb2dvdXQnLAogICAgICAgICAgICAgICAgICdwZXJtaXNzaW9ucycg
OiBbXSwKICAgICAgICAgICAgICAgICAnY2F0ZWdvcnknOiAndXNlcid9LAogICAgICAgICAgICAg
ICAgeyduYW1lJzogJ1VuZG8nLAogICAgICAgICAgICAgICAgICd1cmwnOiAncG9ydGFsX3VuZG9G
b3JtJywKICAgICAgICAgICAgICAgICAncGVybWlzc2lvbnMnOiBbXSwKICAgICAgICAgICAgICAg
ICAnY2F0ZWdvcnknOiAnZ2xvYmFsJ30sCiAgICAgICAgICAgICAgICB7J25hbWUnOiAnUmVjb25m
aWd1cmUgcG9ydGFsJywKICAgICAgICAgICAgICAgICAndXJsJzogdXJsICsgJy9wb3J0YWxfY29u
ZmlnJywKICAgICAgICAgICAgICAgICAncGVybWlzc2lvbnMnOiBbJ01hbmFnZSBwb3J0YWwnXSwK
ICAgICAgICAgICAgICAgICAnY2F0ZWdvcnknOiAnZ2xvYmFsJ30sCiAgICAgICAgICAgICAgICAp
CiAgICAgICAgcmV0dXJuIGFjdGlvbnMKICAgIAogICAgIyBSZXZpZXdpbmcgUG9saWN5IGludGVy
ZmFjZQoKICAgIGRlZiBub3RpZnlfY29udGVudChzZWxmLCBjaGFuZ2VkX29iamVjdCwgdXNlcik6
CiAgICAgICAgIyBjaGFuZ2VkX29iamVjdCBoYXMganVzdCBiZWVuIG1vZGlmaWVkIGJ5IHVzZXIu
CiAgICAgICAgIyBEZWZhdWx0IHBvbGljeSBkb2Vzbid0IGNhcmUKICAgICAgICBjaGFuZ2VkX29i
amVjdC5yZWluZGV4X29iamVjdCgpCgogICAgZGVmIGJlZm9yZV9yZXZpZXcoc2VsZiwgY2hhbmdl
ZF9vYmplY3QsIGFjdGlvbiwgcmV2aWV3X3N0YXRlLCBjb21tZW50cywKICAgICAgICAgICAgICAg
ICAgICAgIFJFUVVFU1QpOgogICAgICAgICMgVGhpcyBob29rIGdpdmVzIHRoZSBwb3J0YWwgYSBj
aGFuY2UgdG8gdHdlYWsgdGhlIHB1Ymxpc2hpbmcgcmVxdWVzdCAKICAgICAgICByZXR1cm4gYWN0
aW9uLCByZXZpZXdfc3RhdGUsIGNvbW1lbnRzCgogICAgZGVmIHJldmlld19wb2xpY3koc2VsZiwg
Y29udGVudCk6CiAgICAgICAgIyBUaGUgcmV2aWV3X3N0YXRlIG9mICdjb250ZW50JyBoYXMganVz
dCBjaGFuZ2VkLiAgVGVsbCB0aGUgUFRLIHdoYXQKICAgICAgICAjIHRoZSBuZXcgcGVybWlzc2lv
bnMgc2hvdWxkIGJlLgogICAgICAgIGlmIGNvbnRlbnQucmV2aWV3X3N0YXRlID09ICdwcml2YXRl
JzoKICAgICAgICAgICAgIyBSZXZva2UgJ1ZpZXcnIGZyb20gQW5vbnltb3VzIGFuZCBSZXZpZXdl
cgogICAgICAgICAgICByZXR1cm4gKAogICAgICAgICAgICAgICAgKCdBbm9ueW1vdXMnLCAoKSwg
KCdWaWV3JywpKSwKICAgICAgICAgICAgICAgICgnUmV2aWV3ZXInLCAoKSwgKCdWaWV3JywpKSwK
ICAgICAgICAgICAgICAgICkKICAgICAgICBlbGlmIGNvbnRlbnQucmV2aWV3X3N0YXRlID09ICdw
ZW5kaW5nJzoKICAgICAgICAgICAgIyBHaXZlIFJldmlld2VyICdWaWV3JywgcmV2b2tlIGZyb20g
QW5vbnltb3VzCiAgICAgICAgICAgIHJldHVybiAoCiAgICAgICAgICAgICAgICAoJ0Fub255bW91
cycsICgpLCAoJ1ZpZXcnLCkpLAogICAgICAgICAgICAgICAgKCdSZXZpZXdlcicsICgnVmlldycs
KSwgKCkpLAogICAgICAgICAgICAgICAgKQogICAgICAgIGVsaWYgY29udGVudC5yZXZpZXdfc3Rh
dGUgPT0gJ3B1Ymxpc2hlZCc6CiAgICAgICAgICAgICMgR2l2ZSBBbm9ueW1vdXMgJ1ZpZXcnCiAg
ICAgICAgICAgIHJldHVybiAoCiAgICAgICAgICAgICAgICAoJ0Fub255bW91cycsICgnVmlldycs
KSwgKCkpLAogICAgICAgICAgICAgICAgKQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IsICJVbmtu
b3duIHN0YXRlOiAiICsgYGNvbnRlbnQucmV2aWV3X3N0YXRlYAogICAgICAgIAogICAgICAgIAog
ICAgIyBVbmRvaW5nIGludGVyZmFjZQoKICAgIHBvcnRhbF91bmRvRm9ybSA9IEhUTUxGaWxlKCdk
dG1sL3BvcnRhbF91bmRvRm9ybScsZ2xvYmFscygpKQoKICAgIGRlZiBwb3J0YWxfdW5kbyhzZWxm
LCB0cmFuc2FjdGlvbl9pbmZvLCBSRVFVRVNUPU5vbmUpOgogICAgICAgICIiIlBlcmZvcm0gdW5k
byBhbmQgcHJlc2VudCBwb3J0YWwgaW50ZXJmYWNlCiAgICAgICAgIiIiCiAgICAgICAgc2VsZi5t
YW5hZ2VfdW5kb190cmFuc2FjdGlvbnModHJhbnNhY3Rpb25faW5mbykKCiAgICAgICAgaWYgUkVR
VUVTVCBpcyBub3QgTm9uZToKICAgICAgICAgICAgcmV0dXJuIHNlbGYucG9ydGFsX2NvbnRlbnRz
KAogICAgICAgICAgICAgICAgc2VsZiwgUkVRVUVTVCwgcG9ydGFsX3N0YXR1c19tZXNzYWdlPSdU
cmFuc2FjdGlvbiB1bmRvbmUnKQoKICAgIGRlZiBwb3J0YWxfdW5kb2FibGVfdHJhbnNhY3Rpb25z
KHNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF90cmFuc2Fj
dGlvbj1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF90cmFu
c2FjdGlvbj1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbmNp
cGlhVW5kb0JhdGNoU2l6ZT1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUkVRVUVTVD1Ob25lKToKICAgICAgICAnJydMaXN0cyB0aGUgdHJhbnNhY3Rpb25zIHRoaXMg
dXNlciBpcyBhbGxvd2VkIHRvIHVuZG8uCiAgICAgICAgJycnCiAgICAgICAgdXNlciA9IHNlbGYu
Z2V0QXV0aGVudGljYXRlZE1lbWJlcigpCiAgICAgICAgIyBhcmcgbGlzdCBmb3IgdW5kb2FibGVf
dHJhbnNhY3Rpb25zKCkgY2hhbmdlZCBpbiBab3BlIDIuMi4KICAgICAgICB0cmFuc2FjdGlvbnMg
PSBzZWxmLnVuZG9hYmxlX3RyYW5zYWN0aW9ucygKICAgICAgICAgICAgZmlyc3RfdHJhbnNhY3Rp
b249Zmlyc3RfdHJhbnNhY3Rpb24sIGxhc3RfdHJhbnNhY3Rpb249bGFzdF90cmFuc2FjdGlvbiwK
ICAgICAgICAgICAgUHJpbmNpcGlhVW5kb0JhdGNoU2l6ZT1QcmluY2lwaWFVbmRvQmF0Y2hTaXpl
KQogICAgICAgIGlmIHVzZXIgYW5kIG5vdCB1c2VyLmhhc19yb2xlKCdNYW5hZ2VyJywgc2VsZik6
CiAgICAgICAgICAgICMgRmlsdGVyIG91dCB0cmFuc2FjdGlvbnMgZG9uZSBieSBvdGhlciBtZW1i
ZXJzIG9mIHRoZSBwb3J0YWwuCiAgICAgICAgICAgIHRyYW5zYWN0aW9ucyA9IGZpbHRlcigKICAg
ICAgICAgICAgICAgIGxhbWJkYSB4LCB1c2VyPXVzZXI6CiAgICAgICAgICAgICAgICAgICAgc3Ry
aW5nLnNwbGl0KHhbJ3VzZXJfbmFtZSddKVstMV0gPT0gdXNlci5nZXRVc2VyTmFtZSgpLAogICAg
ICAgICAgICAgICAgdHJhbnNhY3Rpb25zCiAgICAgICAgICAgICAgICApCiAgICAgICAgcmV0dXJu
IHRyYW5zYWN0aW9ucwoKICAgICMgUmVzb3VyY2UgbG9jYXRpbmcgbWV0aG9kcwoKICAgIGRlZiBn
ZXRDYXRhbG9nKHNlbGYpOgogICAgICAgICJSZXR1cm4gdGhlIHBvcnRhbCdzIGNhdGFsb2ciCiAg
ICAgICAgIyBUaGlzIGlzIHBvdGVudGlhbGx5IGZsYWtleSBiZWNhdXNlIHRoaXMgY2xhc3MgZG9l
cyBub3QgeWV0IGhhdmUKICAgICAgICAjIGEgd2F5IHRvIGluaXRpYWxpemUgcmVzb3VyY2VzLiAg
V2UgbXVzdCBkZXBlbmQgb24gdGhlIGFwcGxpY2F0aW9uIHRvCiAgICAgICAgIyBjcmVhdGUgJ1Np
dGVJbmRleCcuICBYWFgKICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCAnU2l0ZUluZGV4Jywg
Tm9uZSkKCiAgICBkZWYgZ2V0UG9ydGFsKHNlbGYpOgogICAgICAgICJSZXR1cm4gdGhlIHBvcnRh
bCIKICAgICAgICByZXR1cm4gc2VsZgoKICAgIGRlZiBnZXRUb29sYm94KHNlbGYsIFJFUVVFU1Qp
OgogICAgICAgICJSZXR1cm4gYSB0b29sYm94IgogICAgICAgIHJldHVybiBUb29sYm94KCkuX19v
Zl9fKHNlbGYpCgogICAgZGVmIHBvcnRhbF91cmwoc2VsZik6CiAgICAgICAgIlJldHVybiB0aGUg
VVJMIG9mIHRoZSBwb3J0YWwgb2JqZWN0LCBpbiB0aGUgY2xpZW50J3MgcmVja29uaW5nLiIKICAg
ICAgICAjIFhYWAogICAgICAgIHJldHVybiBzZWxmLmFic29sdXRlX3VybCgpCgpHbG9iYWxzLmRl
ZmF1bHRfX2NsYXNzX2luaXRfXyhQb3J0YWxPYmplY3RCYXNlKQoKCmRlZiBnZW5fcGFzc3dvcmQo
Y2hvb3NlPXJhbmRvbS5jaG9pY2UsCiAgICAgICAgICAgICAgICAgY2hhcnM9c3RyaW5nLmxldHRl
cnMrc3RyaW5nLmRpZ2l0cywgam9pbj1zdHJpbmcuam9pbik6CiAgICByZXN1bHQ9W10KICAgIGZv
ciBuIGluIHJhbmdlKDUpOgogICAgICAgIHJlc3VsdC5hcHBlbmQoY2hvb3NlKGNoYXJzKSkKICAg
IHJldHVybiBqb2luKHJlc3VsdCwgJycpCiAgICAK

--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD--