r9915 - in apps/gobi/trunk/code: Global Page User

[email protected] Thu, 17 Sep 2009 15:11:51 +0200 (CEST)
Newsgroups gmane.comp.java.helma.cvs
Message-ID <20090917131151.4B9213D0E3@mia>
QXV0aG9yOiBoYW5uZXMKRGF0ZTogMjAwOS0wOS0xNyAxNToxMTo1MSArMDIwMCAoVGh1LCAxNyBT
ZXAgMjAwOSkKTmV3IFJldmlzaW9uOiA5OTE1CgpBZGRlZDoKICAgYXBwcy9nb2JpL3RydW5rL2Nv
ZGUvVXNlci9yZXNldFBhc3N3b3JkLnNraW4KTW9kaWZpZWQ6CiAgIGFwcHMvZ29iaS90cnVuay9j
b2RlL0dsb2JhbC9NZXNzYWdlcy5qcwogICBhcHBzL2dvYmkvdHJ1bmsvY29kZS9HbG9iYWwvU3Rh
cnR1cC5qcwogICBhcHBzL2dvYmkvdHJ1bmsvY29kZS9QYWdlL1BhZ2VBY3Rpb25zLmpzCiAgIGFw
cHMvZ29iaS90cnVuay9jb2RlL1BhZ2UvUGFnZUNvcmUuanMKICAgYXBwcy9nb2JpL3RydW5rL2Nv
ZGUvUGFnZS9QZXJtaXNzaW9ucy5qcwogICBhcHBzL2dvYmkvdHJ1bmsvY29kZS9Vc2VyL1VzZXIu
anMKICAgYXBwcy9nb2JpL3RydW5rL2NvZGUvVXNlci9wYXNzd29yZC5za2luCkxvZzoKSW1wbGVt
ZW50IHBhc3N3b3JkIHJlc2V0LCBpbXByb3ZlIHBhc3N3b3JkIGhhbmRsaW5nIGEgYml0CgpEZXRh
aWxzIGF0IGh0dHA6Ly9kZXYuaGVsbWEub3JnL3RyYWMvaGVsbWEvY2hhbmdlc2V0Lzk5MTUKCk1v
ZGlmaWVkOiBhcHBzL2dvYmkvdHJ1bmsvY29kZS9HbG9iYWwvTWVzc2FnZXMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gYXBwcy9nb2JpL3RydW5rL2NvZGUvR2xvYmFsL01lc3NhZ2VzLmpzCTIwMDktMDktMTcg
MDk6NDE6MjEgVVRDIChyZXYgOTkxNCkKKysrIGFwcHMvZ29iaS90cnVuay9jb2RlL0dsb2JhbC9N
ZXNzYWdlcy5qcwkyMDA5LTA5LTE3IDEzOjExOjUxIFVUQyAocmV2IDk5MTUpCkBAIC0yNiw2ICsy
Niw3IEBACiAgICAgbG9naW5fdXNlcm5hbWU6ICJVc2VybmFtZSIsCiAgICAgbG9naW5fcGFzc3dv
cmQ6ICJQYXNzd29yZCIsCiAgICAgbG9naW5fcmVnaXN0ZXI6ICJSZWdpc3RlciBuZXcgVXNlciIs
CisgICAgbG9naW5fZm9yZ290X3Bhc3N3b3JkOiAiRm9yZ290IHlvdXIgUGFzc3dvcmQ/IiwKICAg
ICByZWdpc3Rlcl9idXR0b246ICJSZWdpc3RlciBVc2VyIiwKICAgICByZWdpc3Rlcl9wbGVhc2U6
ICJGaWxsIGluIHRoZSBmaWVsZHMgYmVsb3cgdG8gcmVnaXN0ZXIgYSBuZXcgVXNlcjoiLAogICAg
IHJlZ2lzdGVyX3VzZXJfZXhpc3RzOiAiU29ycnksIHVzZXIgbmFtZSAnJDEnIGlzIGFscmVhZHkg
dGFrZW4uIFBsZWFzZSBjaG9vc2UgYSBkaWZmZXJlbnQgb25lISIsCkBAIC0xMjUsNiArMTI2LDcg
QEAKICAgICBsb2dpbl91c2VybmFtZTogIkJlbnV0emVybmFtZSIsCiAgICAgbG9naW5fcGFzc3dv
cmQ6ICJQYXNzd29ydCIsCiAgICAgbG9naW5fcmVnaXN0ZXI6ICJOZXVlbiBCZW51dHplciBhbmxl
Z2VuIiwKKyAgICBsb2dpbl9mb3Jnb3RfcGFzc3dvcmQ6ICJQYXNzd29ydCB2ZXJnZXNzZW4/Iiwg
ICAgCiAgICAgcmVnaXN0ZXJfYnV0dG9uOiAiQmVudXR6ZXIgQW5sZWdlbiIsCiAgICAgcmVnaXN0
ZXJfcGxlYXNlOiAiTmV1ZW4gQmVudXR6ZXIgQW5sZWdlbiIsCiAgICAgcmVnaXN0ZXJfdXNlcl9l
eGlzdHM6ICJFaW4gQmVudXR6ZXIgbmFtZW5zICckMScgZXhpc3RpZXJ0IHNjaG9uLiBCaXR0ZSB3
w6RobGVuIFNpZSBlaW5lbiBhbmRlcmVuIE5hbWVuISIsCgpNb2RpZmllZDogYXBwcy9nb2JpL3Ry
dW5rL2NvZGUvR2xvYmFsL1N0YXJ0dXAuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYXBwcy9nb2JpL3RydW5r
L2NvZGUvR2xvYmFsL1N0YXJ0dXAuanMJMjAwOS0wOS0xNyAwOTo0MToyMSBVVEMgKHJldiA5OTE0
KQorKysgYXBwcy9nb2JpL3RydW5rL2NvZGUvR2xvYmFsL1N0YXJ0dXAuanMJMjAwOS0wOS0xNyAx
MzoxMTo1MSBVVEMgKHJldiA5OTE1KQpAQCAtMTk2LDEwICsxOTYsOCBAQAogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYXBwLmxvZygiQ29udmVydGluZyBwYXNzd29yZCBmb3IgdXNlciAiICsg
dXNlci5uYW1lKTsKICAgICAgICAgICAgIGNvbnZlcnRlZCsrOwotICAgICAgICAgICAgdmFyIHJu
ZCA9IGphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tLmdldEluc3RhbmNlKCJTSEExUFJORyIpOwog
ICAgICAgICAgICAgdmFyIHBhc3N3b3JkID0gZGF0YS5wYXNzd29yZCB8fCAiIjsKLSAgICAgICAg
ICAgIHZhciBzYWx0ID0gZGF0YS5wYXNzd29yZF9zYWx0ID0gcm5kLm5leHRMb25nKCkudG9TdHJp
bmcoMzYpOwotICAgICAgICAgICAgZGF0YS5wYXNzd29yZF9oYXNoID0gKHNhbHQgKyBwYXNzd29y
ZCkubWQ1KCk7CisgICAgICAgICAgICB1c2VyLnNldFNlY3VyZVBhc3N3b3JkKHBhc3N3b3JkLCBk
YXRhLCAicGFzc3dvcmQiKTsKICAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBhc3N3b3JkOwogICAg
ICAgICAgICAgdXNlci5zZXRGb3JtRGF0YShkYXRhKTsKICAgICAgICAgfQoKTW9kaWZpZWQ6IGFw
cHMvZ29iaS90cnVuay9jb2RlL1BhZ2UvUGFnZUFjdGlvbnMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYXBw
cy9nb2JpL3RydW5rL2NvZGUvUGFnZS9QYWdlQWN0aW9ucy5qcwkyMDA5LTA5LTE3IDA5OjQxOjIx
IFVUQyAocmV2IDk5MTQpCisrKyBhcHBzL2dvYmkvdHJ1bmsvY29kZS9QYWdlL1BhZ2VBY3Rpb25z
LmpzCTIwMDktMDktMTcgMTM6MTE6NTEgVVRDIChyZXYgOTkxNSkKQEAgLTE5LDggKzE5LDggQEAK
ICAqLwogCiBhcHAuYWRkUmVwb3NpdG9yeSgibW9kdWxlcy9jb3JlL09iamVjdC5qcyIpOworYXBw
LmFkZFJlcG9zaXRvcnkoIm1vZHVsZXMvaGVsbWEvTWFpbC5qcyIpOwogCi0KIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8gYWN0aW9ucy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CiAKIGZ1bmN0aW9uIGhpc3RvcnlfYWN0aW9uKCkgewpAQCAtNjI1LDEzICs2MjUsNjUgQEAKICAg
ICAgICAgdGFibGUud3JpdGUoSHRtbC5TdWJtaXQoe25hbWU6ICJsb2dpbiIsIHZhbHVlOiAiR28i
fSkpOwogICAgICAgICB0YWJsZS5jbG9zZSgpOwogICAgICAgICBIdG1sLmNsb3NlVGFnKCJmb3Jt
Iik7Ci0gICAgICAgIHJlcy53cml0ZWxuKCI8YnIgLz4iKTsKLSAgICAgICAgSHRtbC5hKHtocmVm
OiB0aGlzLmhyZWYoInJlZ2lzdGVyIil9LCBtc2coImxvZ2luX3JlZ2lzdGVyIikpOworICAgICAg
ICBIdG1sLnAoe30sIEh0bWwuQSh7aHJlZjogdGhpcy5ocmVmKCJyZWdpc3RlciIpfSwgbXNnKCJs
b2dpbl9yZWdpc3RlciIpKSk7CisgICAgICAgIEh0bWwucCh7fSwgSHRtbC5BKHtocmVmOiB0aGlz
LmhyZWYoInJlbWluZGVyIil9LCBtc2coImxvZ2luX2ZvcmdvdF9wYXNzd29yZCIpKSk7CiAgICAg
ICAgIHJlcy5kYXRhLmJvZHkgPSByZXMucG9wKCk7CiAgICAgfQogICAgIHRoaXMucmVuZGVyU2tp
bigicGFnZSIpOwogfQogCitmdW5jdGlvbiByZW1pbmRlcl9hY3Rpb24oKSB7CisgICAgaWYgKHJl
cS5pc1Bvc3QoKSAmJiByZXEuZGF0YS5uYW1lICE9IG51bGwpIHsKKyAgICAgICAgdmFyIHVzZXJz
ID0gZ2V0U2VydmljZSgidXNlcnMiKSwgbmFtZSA9IHJlcS5kYXRhLm5hbWU7CisgICAgICAgIGlm
ICghdXNlcnMpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIHJldHJp
ZXZlIHVzZXIgcm9vdCIpOworICAgICAgICB9CisgICAgICAgIHZhciB1c2VyID0gdXNlcnMuZ2V0
KG5hbWUpOworICAgICAgICBpZiAoIXVzZXIpIHsKKyAgICAgICAgICAgIHJlcy5tZXNzYWdlID0g
IlVzZXIgJyIgKyBuYW1lICsgIicgbm90IGZvdW5kLiBQbGVhc2UgY2hlY2sgeW91ciBpbnB1dCBv
ciByZWdpc3RlciBhIG5ldyBhY2NvdW50LiIKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHZhciBhZGRyZXNzID0gdXNlci5nZXRGb3JtRGF0YSgpLmVtYWlsOworICAgICAgICAgICAgaWYg
KCFhZGRyZXNzKSB7CisgICAgICAgICAgICAgICAgcmVzLm1lc3NhZ2UgPSAiU29ycnksIHVzZXIg
JyIgKyBuYW1lICsgIicgaGFzIG5vdCByZWdpc3RlcmVkIGFuIGVtYWlsIGFkZHJlc3MuIgorICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgcm5kID0gamF2YS5zZWN1cml0
eS5TZWN1cmVSYW5kb20uZ2V0SW5zdGFuY2UoIlNIQTFQUk5HIik7CisgICAgICAgICAgICAgICAg
dmFyIHRva2VuID0gTWF0aC5hYnMocm5kLm5leHRMb25nKCkpLnRvU3RyaW5nKDM2KSArIE1hdGgu
YWJzKHJuZC5uZXh0TG9uZygpKS50b1N0cmluZygzNik7CisgICAgICAgICAgICAgICAgdmFyIGRh
dGEgPSB1c2VyLmdldEZvcm1EYXRhKCk7CisgICAgICAgICAgICAgICAgZGF0YS5yZXNldF9wYXNz
d29yZF90b2tlbiA9IHRva2VuOworICAgICAgICAgICAgICAgIGRhdGEucmVzZXRfcGFzc3dvcmRf
dGltZSA9IERhdGUubm93KCk7CisgICAgICAgICAgICAgICAgdXNlci5zZXRGb3JtRGF0YShkYXRh
KTsKKyAgICAgICAgICAgICAgICB2YXIgbWFpbCA9IG5ldyBoZWxtYS5NYWlsKCk7CisgICAgICAg
ICAgICAgICAgbWFpbC5zZXRGcm9tKCJub3JlcGx5QGhlbG1hLm9yZyIpOyAvLyBGSVhNRQorICAg
ICAgICAgICAgICAgIG1haWwuYWRkVG8oYWRkcmVzcyk7CisgICAgICAgICAgICAgICAgbWFpbC5z
ZXRTdWJqZWN0KCJSZXNldCBwYXNzd29yZCBmb3IgIiArIHJvb3QubmFtZSk7CisgICAgICAgICAg
ICAgICAgbWFpbC5zZXRUZXh0KHVzZXIucmVuZGVyU2tpbkFzU3RyaW5nKCJyZXNldFBhc3N3b3Jk
Iiwge3Rva2VuOiB0b2tlbn0pKTsKKyAgICAgICAgICAgICAgICBtYWlsLnNlbmQoKTsKKyAgICAg
ICAgICAgICAgICBpZiAobWFpbC5zdGF0dXMgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBy
ZXMubWVzc2FnZSA9ICJUaGVyZSB3YXMgYSBwcm9ibGVtIHNlbmRpbmcgeW91ciBtYWlsIChTdGF0
dXMgY29kZSAiICsgbWFpbC5zdGF0dXMgKyAiKSI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgcmVzLmRhdGEuYm9keSA9IFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEh0bWwuSDMoe30sICJFbWFpbCBTZW50IiksCisgICAgICAgICAgICAgICAgICAgICAg
ICBIdG1sLlAoe30sICJBIG1lc3NhZ2UgdG8gcmVzZXQgdGhlIHBhc3N3b3JkIGhhcyBiZWVuIHNl
bnQgdG8gdXNlciAiICsgbmFtZSArICIuPGJyIC8+IiArCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJQbGVhc2UgY2hlY2sgeW91ciBpbmJveC4iKQorICAgICAgICAgICAgICAg
ICAgICBdLmpvaW4oJycpOworICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclNraW4oInBh
Z2UiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXMuZGF0YS5ib2R5ID0gWworICAg
ICAgICAgICAgSHRtbC5IMyh7fSwgIlJlc2V0IFBhc3N3b3JkIiksCisgICAgICAgICAgICBIdG1s
LlAoe30sICJQbGVhc2UgZW50ZXIgeW91ciB1c2VyIG5hbWUgeW91IGZvcmdvdCB0aGUgcGFzc3dv
cmQgZm9yLjxiciAvPiIgKworICAgICAgICAgICAgICAgICAgICAgICAiWW91IHdpbGwgcmVjZWl2
ZSBhbiBlbWFpbCB3aXRoIGEgbGluayB0byByZXNldCB5b3VyIHBhc3N3b3JkLiIpLAorICAgICAg
ICAgICAgSHRtbC5Gb3JtKHttZXRob2Q6ICJQT1NUIiwgYWN0aW9uOiByZXEuYWN0aW9ufSwgWwor
ICAgICAgICAgICAgICAgIEh0bWwuUCh7fSwgSHRtbC5JbnB1dCh7bmFtZTogJ25hbWUnLCB2YWx1
ZTogcmVxLmRhdGEubmFtZX0pKSwKKyAgICAgICAgICAgICAgICBIdG1sLlN1Ym1pdCh7bmFtZTog
J3NlbmQnLCB2YWx1ZTogJ1NlbmQnfSkKKyAgICAgICAgICAgIF0pCisgICAgXS5qb2luKCcnKTsK
KyAgICB0aGlzLnJlbmRlclNraW4oInBhZ2UiKTsKK30KKwogLyoqCiAgKgogICovCgpNb2RpZmll
ZDogYXBwcy9nb2JpL3RydW5rL2NvZGUvUGFnZS9QYWdlQ29yZS5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBh
cHBzL2dvYmkvdHJ1bmsvY29kZS9QYWdlL1BhZ2VDb3JlLmpzCTIwMDktMDktMTcgMDk6NDE6MjEg
VVRDIChyZXYgOTkxNCkKKysrIGFwcHMvZ29iaS90cnVuay9jb2RlL1BhZ2UvUGFnZUNvcmUuanMJ
MjAwOS0wOS0xNyAxMzoxMTo1MSBVVEMgKHJldiA5OTE1KQpAQCAtMTAwNCwxMCArMTAwNCw3IEBA
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMuZGF0YS5lcnJvcnNbcHJvcE5hbWVdID0gbXNn
KCJwYXNzd29yZF92YWxpZGF0aW9uX2Vycm9yIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXMuZGF0YS5lcnJvcnMucHVzaCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBybmQgPSBqYXZhLnNlY3VyaXR5LlNlY3VyZVJh
bmRvbS5nZXRJbnN0YW5jZSgiU0hBMVBSTkciKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBzYWx0ID0gZGF0YVtwcm9wTmFtZSArICJfc2FsdCJdID0gcm5kLm5leHRMb25nKCkudG9TdHJp
bmcoMzYpOwotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtwcm9wTmFtZSArICJfaGFzaCJd
ID0gKHNhbHQgKyBjb25maXJtKS5tZDUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0
ZSBkYXRhW3Byb3BOYW1lXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U2VjdXJl
UGFzc3dvcmQoY29uZmlybSwgZGF0YSwgcHJvcE5hbWUpOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5lZGl0b3IgPT0gQ0hFQ0tCT1gpIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gc2V0IGNoZWNrYm94IHZhbHVlCkBAIC0xMDk5LDYgKzEw
OTYsMTkgQEAKIH0KIAogLyoqCisgKiBTZXQgYSBwYXNzd29yZCBvbiBhIGZvcm1kYXRhIG9iamVj
dCB1c2luZyBhIHNlY3VyZSBoYXNoCisgKiBAcGFyYW0gcGFzc3dvcmQgdGhlIGNsZWFydGV4dCBw
YXNzd29yZAorICogQHBhcmFtIGZvcm1kYXRhIHRoZSBmb3JtZGF0YSBvYmplY3QgdG8gc2V0IHRo
ZSBwYXNzd29yZCBvbgorICogQHBhcmFtIHByb3BuYW1lIHRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRo
ZSBwYXNzd29yZCwgZGVmYXVsdHMgdG8gInBhc3N3b3JkIgorICovCitmdW5jdGlvbiBzZXRTZWN1
cmVQYXNzd29yZChwYXNzd29yZCwgZm9ybWRhdGEsIHByb3BuYW1lKSB7CisgICAgcHJvcG5hbWUg
PSBwcm9wbmFtZSB8fCAicGFzc3dvcmQiOworICAgIHZhciBybmQgPSBqYXZhLnNlY3VyaXR5LlNl
Y3VyZVJhbmRvbS5nZXRJbnN0YW5jZSgiU0hBMVBSTkciKTsKKyAgICB2YXIgc2FsdCA9IGZvcm1k
YXRhW3Byb3BuYW1lICsgIl9zYWx0Il0gPSBNYXRoLmFicyhybmQubmV4dExvbmcoKSkudG9TdHJp
bmcoMzYpOworICAgIGZvcm1kYXRhW3Byb3BuYW1lICsgIl9oYXNoIl0gPSAoc2FsdCArIHBhc3N3
b3JkKS5tZDUoKTsKK30KKworLyoqCiAgKiBVcGRhdGUgcHJvcGVydGllcyBpbiB0aGlzIHBhZ2Ug
ZnJvbSBhbm90aGVyIHBhZ2UKICAqLwogZnVuY3Rpb24gdXBkYXRlRnJvbVBhZ2UocGFnZSkgewoK
TW9kaWZpZWQ6IGFwcHMvZ29iaS90cnVuay9jb2RlL1BhZ2UvUGVybWlzc2lvbnMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gYXBwcy9nb2JpL3RydW5rL2NvZGUvUGFnZS9QZXJtaXNzaW9ucy5qcwkyMDA5LTA5
LTE3IDA5OjQxOjIxIFVUQyAocmV2IDk5MTQpCisrKyBhcHBzL2dvYmkvdHJ1bmsvY29kZS9QYWdl
L1Blcm1pc3Npb25zLmpzCTIwMDktMDktMTcgMTM6MTE6NTEgVVRDIChyZXYgOTkxNSkKQEAgLTU2
LDYgKzU2LDggQEAKICAgICBsb2dpbjogdHJ1ZSwgCiAgICAgbG9nb3V0OiB0cnVlLCAKICAgICBy
ZWdpc3RlcjogdHJ1ZSwKKyAgICByZW1pbmRlcjogdHJ1ZSwKKyAgICByZXNldDogdHJ1ZSwKICAg
ICBlcnJvcjogdHJ1ZSwgCiAgICAgbm90Zm91bmQ6IHRydWUsIAogICAgIGphdmFzY3JpcHQ6IHRy
dWUsIAoKTW9kaWZpZWQ6IGFwcHMvZ29iaS90cnVuay9jb2RlL1VzZXIvVXNlci5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBhcHBzL2dvYmkvdHJ1bmsvY29kZS9Vc2VyL1VzZXIuanMJMjAwOS0wOS0xNyAwOTo0
MToyMSBVVEMgKHJldiA5OTE0KQorKysgYXBwcy9nb2JpL3RydW5rL2NvZGUvVXNlci9Vc2VyLmpz
CTIwMDktMDktMTcgMTM6MTE6NTEgVVRDIChyZXYgOTkxNSkKQEAgLTU0LDggKzU0LDcgQEAKIGZ1
bmN0aW9uIHBhc3N3b3JkX2FjdGlvbigpIHsKICAgICBpZiAocmVxLmlzUG9zdCgpKSB7CiAgICAg
ICAgIGlmIChyZXEuZGF0YS5zYXZlKSB7Ci0gICAgICAgICAgICB0aGlzLnJlYWRFZGl0Rm9ybSh0
cnVlKTsKLSAgICAgICAgICAgIGlmIChyZXMuZGF0YS5lcnJvcnMpIHsKKyAgICAgICAgICAgIGlm
ICghdGhpcy5yZWFkUGFzc3dvcmRGb3JtKCkpIHsKICAgICAgICAgICAgICAgICByZXMubWVzc2Fn
ZSA9IG1zZygicGFzc3dvcmRfdmFsaWRhdGlvbl9lcnJvciIpOwogICAgICAgICAgICAgICAgIHJl
cy5kYXRhLmJvZHkgPSB0aGlzLnJlbmRlclNraW5Bc1N0cmluZygicGFzc3dvcmQiKTsKICAgICAg
ICAgICAgICAgICB0aGlzLnJlbmRlclNraW4oInBhZ2UiKTsKQEAgLTc2LDQgKzc1LDQyIEBACiAg
ICAgdGhpcy5yZW5kZXJTa2luKCJwYWdlIik7CiB9CiAKK2Z1bmN0aW9uIHJlc2V0X2FjdGlvbigp
IHsKKyAgICB2YXIgZm9ybWRhdGEgPSB0aGlzLmdldEZvcm1EYXRhKCksCisgICAgICAgIHRva2Vu
ID0gZm9ybWRhdGEgJiYgZm9ybWRhdGEucmVzZXRfcGFzc3dvcmRfdG9rZW47CisgICAgaWYgKHRv
a2VuICYmIHRva2VuID09PSByZXEuZGF0YS50b2tlbikgeworICAgICAgICB2YXIgdGltZSA9IGZv
cm1kYXRhLnJlc2V0X3Bhc3N3b3JkX3RpbWU7CisgICAgICAgIGlmIChpc05hTih0aW1lKSkgewor
ICAgICAgICAgICAgcmVzLmRhdGEuYm9keSA9ICJJbnZhbGlkIHBhc3N3b3JkIHJlc2V0IHRpbWVz
dGFtcC4gIiArCisgICAgICAgICAgICAgICAgICAgICJQbGVhc2UgcmVxdWVzdCBhIG5ldyB0b2tl
bi4iOworICAgICAgICB9IGVsc2UgaWYgKERhdGUubm93KCkgLSB0aW1lID4gMTAwMCAqIDYwICog
NjAgKiAyNCkgeworICAgICAgICAgICAgcmVzLmRhdGEuYm9keSA9ICJQYXNzd29yZCByZXNldCB0
b2tlbiB0aW1lZCBvdXQuICIgKworICAgICAgICAgICAgICAgICAgICAiUGxlYXNlIHJlcXVlc3Qg
YSBuZXcgdG9rZW4uIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMucGFzc3dv
cmRfYWN0aW9uKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgICByZXMuZGF0YS5ib2R5ID0gIkludmFsaWQgcGFzc3dvcmQgcmVzZXQgdG9rZW4u
ICIgKworICAgICAgICAgICAgICAgICAgICAiUGxlYXNlIHJlcXVlc3QgYSBuZXcgdG9rZW4uIjsK
KyAgICB9CisgICAgdGhpcy5yZW5kZXJTa2luKCJwYWdlIik7Cit9CiAKK2Z1bmN0aW9uIHJlYWRQ
YXNzd29yZEZvcm0oKSB7CisgICAgdmFyIHBhc3N3b3JkID0gcmVxLmRhdGEucGFzc3dvcmQsCisg
ICAgICAgIGNvbmZpcm0gPSByZXEuZGF0YS5wYXNzd29yZF9jb25maXJtOworICAgIGlmIChwYXNz
d29yZCA9PSBudWxsIHx8IHBhc3N3b3JkICE9IGNvbmZpcm0pIHsKKyAgICAgICAgcmVzLmRhdGEu
ZXJyb3JzID0gcmVzLmRhdGEuZXJyb3JzIHx8IHt9OworICAgICAgICByZXMuZGF0YS5lcnJvcnMu
cGFzc3dvcmQgPSBtc2coInBhc3N3b3JkX3ZhbGlkYXRpb25fZXJyb3IiKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBkYXRhID0gdGhpcy5nZXRGb3Jt
RGF0YSgpOworICAgICAgICB0aGlzLnNldFNlY3VyZVBhc3N3b3JkKHBhc3N3b3JkLCBkYXRhLCAi
cGFzc3dvcmQiKTsKKyAgICAgICAgdGhpcy5zZXRGb3JtRGF0YShkYXRhKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKK30KKworCgpNb2RpZmllZDogYXBwcy9nb2JpL3RydW5rL2NvZGUv
VXNlci9wYXNzd29yZC5za2luCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGFwcHMvZ29iaS90cnVuay9jb2RlL1Vz
ZXIvcGFzc3dvcmQuc2tpbgkyMDA5LTA5LTE3IDA5OjQxOjIxIFVUQyAocmV2IDk5MTQpCisrKyBh
cHBzL2dvYmkvdHJ1bmsvY29kZS9Vc2VyL3Bhc3N3b3JkLnNraW4JMjAwOS0wOS0xNyAxMzoxMTo1
MSBVVEMgKHJldiA5OTE1KQpAQCAtMSwxMiArMSwyMSBAQAogPGgzPkNoYW5nZSBwYXNzd29yZCBm
b3IgPCUgdGhpcy5uYW1lICU+PC9oMz4KIAorPCUgcmVzcG9uc2UuZXJyb3JzLnBhc3N3b3JkIGZh
aWxtb2RlPSJzaWxlbnQiCisgICAgcHJlZml4PSI8ZGl2IGNsYXNzPSd2YWxpZGF0aW9uRXJyb3In
IHN0eWxlPSdjb2xvcjogcmVkOyBmb250LXdlaWdodDogYm9sZDsnPiIKKyAgICBzdWZmaXg9Ijwv
ZGl2PiIgJT4KKwogPGZvcm0gbWV0aG9kPSJwb3N0Ij4KIAotPCUgdGhpcy5mb3JtIG5hbWU9InBh
c3N3b3JkIiBhcz0iZWRpdG9yIiBzaXplPSI0MCIKLSAgICAgbGFiZWw9Ik5ldyBQYXNzd29yZCIK
LSAgICAgcHJlZml4PSI8ZGl2PiIKLSAgICAgc3VmZml4PSI8L2Rpdj5SZXBlYXQgUGFzc3dvcmQ8
ZGl2PjxpbnB1dCBuYW1lPSdmb3JtZGF0YVtwYXNzd29yZF9jb25maXJtXScgdHlwZT0ncGFzc3dv
cmQnPjwvZGl2PiIgJT4KKzxkaXY+CitFbnRlciBuZXcgUGFzc3dvcmQKKzxkaXY+PGlucHV0IG5h
bWU9J3Bhc3N3b3JkJyB0eXBlPSdwYXNzd29yZCc+PC9kaXY+Cis8L2Rpdj4KIAorPGRpdj4KK1Jl
cGVhdCBQYXNzd29yZAorPGRpdj48aW5wdXQgbmFtZT0ncGFzc3dvcmRfY29uZmlybScgdHlwZT0n
cGFzc3dvcmQnPjwvZGl2PgorPC9kaXY+CisKIDxwPgogICA8aW5wdXQgdHlwZT0ic3VibWl0IiBu
YW1lPSJzYXZlIiB2YWx1ZT0iU2F2ZSI+CiAgIDxhIGhyZWY9IjwlIHBhZ2UuaHJlZiAlPiIgY2xh
c3M9ImNvbW1lbnRMaW5rIj4gPCUgbXNnIG5hbWU9J2NhbmNlbCcgJT48L2E+CgpBZGRlZDogYXBw
cy9nb2JpL3RydW5rL2NvZGUvVXNlci9yZXNldFBhc3N3b3JkLnNraW4KCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkhlbG1hLUNWUyBtYWlsaW5nIGxpc3QK
SGVsbWEtQ1ZTQGhlbG1hLm9yZwpodHRwOi8vaGVsbWEub3JnL21haWxtYW4vbGlzdGluZm8vaGVs
bWEtY3ZzCg==