Re: [jervlet-patch] Make Jervlet-Jetty accept external configurations

peter-4lf8KW9E9MLMqX/[email protected] Thu, 13 Nov 2003 11:38:22 +1100
Newsgroups gmane.comp.java.spice.devel
Message-ID <014801c3a97e$712ffe50$21e7809d@fisg2>
SGl5YSwNCg0KTG9va3MgZ29vZC4gUnlhbiAtIHdoYXQgZG8geW91IHRoaW5rPw0KDQoNCi0tLS0t
IE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0NCkZyb206ICJKb2hhbiBTavZiZXJnIiA8am9oYW4uc2pv
YmVyZ0BhdmFpbnRlYy5jb20+DQpUbzogPHNwaWNlLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5l
dD4NClNlbnQ6IFR1ZXNkYXksIE5vdmVtYmVyIDExLCAyMDAzIDY6MTggUE0NClN1YmplY3Q6IFtq
ZXJ2bGV0LXBhdGNoXSBNYWtlIEplcnZsZXQtSmV0dHkgYWNjZXB0IGV4dGVybmFsIGNvbmZpZ3Vy
YXRpb25zDQoNCg0KPiBIaSENCj4NCj4gSGVyZSBpcyB0aGUgZmlyc3QgcGF0Y2hzZXQgdG8gbWFr
ZSBKZXR0eS1KZXJ2bGV0IGFjY2VwdCBleHRlcm5hbA0KPiBjb25maWd1cmF0aW9ucy4NCj4NCj4g
VGhpcyBoYXMgYmVlbiBkb25lIHNvIGZhcjoNCj4NCj4gLUFkZGl0aW9uIG9mIHR3byBuZXcgSmV0
dHkgU2VydmVyIGNyZWF0b3JzDQo+IC1Db25maWd1cmF0aW9uIGxvZ2ljIGFkZGVkIHRvIEF2YWxv
bkpldHR5SmVydmxldCB0byBleGNlcHQgZXh0ZXJuYWwNCj4gY29uZmlndXJhdGlvbnMNCj4gLUFk
ZGl0aW9uIG9mIGEgbmV3IEF2YWxvbkpldHR5SmVydmxldCBjb25maWd1cmF0aW9uIHNjaGVtYSAo
d2FzIG1pc3NpbmchKQ0KPiAtQWRkaXRpb24gb2YgYW4gZXhhbXBsZSBjb25maWd1cmF0aW9uIGZp
bGUNCj4gLVBvc3NpYmlsaXR5IHRvIHNldCB0aGUgc3lzdGVtIHBhcmFtZXRlciAiamV0dHkuaG9t
ZSIgKGNhbiBiZSBjb25zaWRlcmVkDQo+IGJhZCBieSBzb21lKQ0KPiAtU21hbGwgY2xlYW51cHMg
dG8gdGhlIHRvcHMgb2YgQWJzdHJhY3RKZXR0eUplcnZsZXQgYW5kDQo+IEF2YWxvbkpldHR5SmVy
dmxldCBwbHVzIGZpeGVzIHRvIG90aGVyIGZpbGVzIHRoYXQgdGhlc2UgYnJva2UuDQo+IC1kZW1v
c2VydmVyIG5vdyB1c2VzIEF2YWxvbkpldHR5SmVydmxldCBpbnN0ZWFkIG9mIEpldHR5SmVydmxl
dA0KPiAtTWluaW1hbCB0ZXN0cyBvZiBBdmFsb25KZXR0eUplcnZsZXQgaW4gTG9vbS1jdXJyZW50
IGFuZCBhIHNsaWdodGx5DQo+IG9sZGVyIHZlcnNpb24uDQo+DQo+DQo+IFRoZW9yZXRpY2FsbHkg
bm90aGluZyBpbiBQaWNvSmV0dHlKZXJ2bGV0IHNob3VsZCBiZSBicm9rZW4gYW5kDQo+IGRlbW9z
ZXJ2ZXIgbm93IHNlZW1zIHRvIHdvcmsgYWdhaW4uIE5leHQgSSB3b3VsZCBsaWtlIHRvOg0KPg0K
PiAtTWFrZSB0aGUgbG9nIHJlZGlyZWN0aW5nIGFuZCBhY2Nlc3MgbG9nZ2luZyBjb25maWd1cmFi
bGUgaW4NCj4gQXZhbG9uSmV0dHlKZXJ2bGV0DQo+IC1SZW1vdmUgSmV0dHlKZXJ2bGV0ICh0aGF0
IG9ubHkgZXh0ZW5kcyBBdmFsb25KZXR0eUplcnZsZXQpIGFuZCBpdHMNCj4gY29uZmlndXJhdGlv
biBzY2hlbWENCj4gLUNoYW5nZSBkZW1vc2VydmVyIChhbHQgY3JlYXRlIG5ldyBtb2R1bGUpIHRv
IGJlIG1vcmUgcmVsZWFzZSBsaWtlIGZvcg0KPiB0aGUgYXZhbG9uL2xvb20gcmVsZWFzZSBhbHJl
YWR5IG5vdy4gVGhpcyBtZWFucyBhIG5ldyBuYW1lLCBhbmQgZW1wdHkNCj4gZG9jdW1lbnRlZCBj
b25maWd1cmF0aW9uIGZpbGVzLCBldGMuIE90aGVyd2lzZSB2ZXJ5IGNsb3NlIHRvIGRlbW9zZXJ2
ZXIuDQo+IC1DaGFuZ2UgdGhlIGNvbmZpZ3VyYXRpb24gaW4gQXZhbG9uSmVydmxldEpldHR5IHRv
IHRha2Ugc29tZXRoaW5nIGxpa2U6DQo+IDxzb2NrZXRsaXN0ZW5lcnM+DQo+ICAgIDxzb2NrZXRs
aXN0ZW5lcj4NCj4gICAgICAgPGhvc3QvPg0KPiAgICAgICA8cG9ydC8+DQo+ICAgICAgIDxtYXh0
aHJlYWRzLz4NCj4gICAgICAgPG1pbnRocmVhZHMvPg0KPiAgICA8L3NvY2tldGxpc3RlbmVyPg0K
PiA8L3NvY2tldGxpc3RlbmVycz4NCj4gaW5zdGVhZCBvZiBhbGwgdGhvc2UgaW4gdGhlIHJvb3Qg
bGV2ZWwuIFRoaXMgd2F5IG1hbnkgbGlzdGVuZXJzIGNvdWxkIGJlDQo+IGFkZGVkIHRvIGEgSmV0
dHkgU2VydmVyLg0KPiAtU2V0IHRoZSBkZWZhdWx0IHBvcnQgKDgwODApIGluIEF2YWxvbkplcnZs
ZXRKZXR0eSB0byAtMS4NCj4gLUNsZWFuIHVwIHNvbWUgcGFydHMgb2YgdGhlIGNvZGUgYWNjb3Jk
aW5nIHRvIHNvbWUgc3RhbmRhcmQgKHdoYXQgc2hvdWxkDQo+IGJlIHVzZWQgYnR3PykNCj4NCj4N
Cj4gQ291bGQgc29tZW9uZSBnaXZlIHNvbWUgaW5wdXQgb24gdGhpcz8NCj4NCj4NCj4gQ2hlZXJz
LA0KPg0KPiAvLw0KPiBKb2hhbg0KPg0KPg0KDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0N
Cg0KDQo+IEluZGV4Og0Kc2FuZGJveC9qZXJ2bGV0L2plcnZsZXQtamV0dHkvc3JjL2phdmEvb3Jn
L2pjb21wb25lbnQvamVydmxldC9ibG9ja3MvamV0dHkvQQ0KYnN0cmFjdEpldHR5SmVydmxldC5q
YXZhDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCj4gUkNTIGZpbGU6DQovY3Zzcm9vdC9zcGljZS9zcGljZS9zYW5k
Ym94L2plcnZsZXQvamVydmxldC1qZXR0eS9zcmMvamF2YS9vcmcvamNvbXBvbmVudC9qDQplcnZs
ZXQvYmxvY2tzL2pldHR5L0Fic3RyYWN0SmV0dHlKZXJ2bGV0LmphdmEsdg0KPiByZXRyaWV2aW5n
IHJldmlzaW9uIDEuMQ0KPiBkaWZmIC11IC1yMS4xIEFic3RyYWN0SmV0dHlKZXJ2bGV0LmphdmEN
Cj4gLS0tDQpzYW5kYm94L2plcnZsZXQvamVydmxldC1qZXR0eS9zcmMvamF2YS9vcmcvamNvbXBv
bmVudC9qZXJ2bGV0L2Jsb2Nrcy9qZXR0eS9BDQpic3RyYWN0SmV0dHlKZXJ2bGV0LmphdmEgNiBO
b3YgMjAwMyAyMDoyNTo0NiAtMDAwMCAxLjENCj4gKysrDQpzYW5kYm94L2plcnZsZXQvamVydmxl
dC1qZXR0eS9zcmMvamF2YS9vcmcvamNvbXBvbmVudC9qZXJ2bGV0L2Jsb2Nrcy9qZXR0eS9BDQpi
c3RyYWN0SmV0dHlKZXJ2bGV0LmphdmEgMTEgTm92IDIwMDMgMDY6MzU6MDAgLTAwMDANCj4gQEAg
LTMsMzggKzMsODQgQEANCj4gIGltcG9ydCBvcmcubW9ydGJheS5qZXR0eS5TZXJ2ZXI7DQo+ICBp
bXBvcnQgb3JnLm1vcnRiYXkuaHR0cC5Tb2NrZXRMaXN0ZW5lcjsNCj4gIGltcG9ydCBvcmcubW9y
dGJheS51dGlsLk11bHRpRXhjZXB0aW9uOw0KPiAraW1wb3J0IG9yZy5tb3J0YmF5LnhtbC5YbWxD
b25maWd1cmF0aW9uOw0KPiArDQo+ICBpbXBvcnQgb3JnLmpjb21wb25lbnQuamVydmxldC5KZXJ2
bGV0Q29uZmlnOw0KPiAgaW1wb3J0IG9yZy5qY29tcG9uZW50LmplcnZsZXQuSmVydmxldEV4Y2Vw
dGlvbjsNCj4gKw0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuYXZhbG9uLmZyYW1ld29yay5DYXNjYWRp
bmdSdW50aW1lRXhjZXB0aW9uOw0KPg0KPiAraW1wb3J0IG9yZy54bWwuc2F4LlNBWEV4Y2VwdGlv
bjsNCj4gKw0KPiAgaW1wb3J0IGphdmEubmV0LlVua25vd25Ib3N0RXhjZXB0aW9uOw0KPiAgaW1w
b3J0IGphdmEudXRpbC5IYXNoTWFwOw0KPiAraW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQo+
DQo+IC1wdWJsaWMgY2xhc3MgQWJzdHJhY3RKZXR0eUplcnZsZXQgew0KPiAtDQo+IC0gICAgcHJv
dGVjdGVkIEplcnZsZXRDb25maWcgY29uZmlnOw0KPiArcHVibGljIGNsYXNzIEFic3RyYWN0SmV0
dHlKZXJ2bGV0DQo+ICt7DQo+ICsgICAgcHJvdGVjdGVkIEplcnZsZXRDb25maWcgbV9jb25maWc7
DQo+ICAgICAgcHJvdGVjdGVkIFNlcnZlciBtX3NlcnZlcjsNCj4gICAgICBwcm90ZWN0ZWQgSGFz
aE1hcCBtX3dlYmNvbnRleHRzID0gbmV3IEhhc2hNYXAoKTsNCj4NCj4gKw0KPiArICAgIC8qKg0K
PiArICAgICAqIENyZWF0ZSBhIG5ldyBKZXR0eSBIVFRQIHNlcnZlcg0KPiArICAgICAqLw0KPiAg
ICAgIHByb3RlY3RlZCBmaW5hbCBTZXJ2ZXIgY3JlYXRlSHR0cFNlcnZlcigpDQo+ICAgICAgew0K
PiAgICAgICAgICByZXR1cm4gbmV3IFNlcnZlcigpOw0KPiAgICAgIH0NCj4NCj4gKw0KPiArICAg
IC8qKg0KPiArICAgICAqIENyZWF0ZSBhIG5ldyBKZXR0eSBIVFRQIHNlcnZlciBmcm9tIGEgSmV0
dHkgY29uZmlndXJhdGlvbiBmaWxlLg0KPiArICAgICAqDQo+ICsgICAgICogQHBhcmFtIGZpbGVu
YW1lIFRoZSBVUkwgb3IgbmFtZSBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLg0KPiArICAgICAq
IEB0aHJvd3MgSU9FeGNlcHRpb24gaWYgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBjb3VsZG4ndCBi
ZSByZWFkLg0KPiArICAgICAqLw0KPiArICAgIHByb3RlY3RlZCBmaW5hbCBTZXJ2ZXIgY3JlYXRl
SHR0cFNlcnZlckZyb21GaWxlKCBmaW5hbCBTdHJpbmcNCmZpbGVuYW1lICkgdGhyb3dzIElPRXhj
ZXB0aW9uDQo+ICsgICAgew0KPiArICAgICAgICByZXR1cm4gbmV3IFNlcnZlciggZmlsZW5hbWUg
KTsNCj4gKyAgICB9DQo+ICsNCj4gKw0KPiArICAgIC8qKg0KPiArICAgICAqIENyZWF0ZSBhIG5l
dyBKZXR0eSBIVFRQIHNlcnZlciBmcm9tIGEgSmV0dHkgWE1MIGNvbmZpZ3VyYXRpb24uDQo+ICsg
ICAgICoNCj4gKyAgICAgKiBAcGFyYW0geG1sQ29uZmlndXJhdGlvbiBBIFN0cmluZyBvZiBKZXR0
eSBYTUwgY29uZmlndXJhdGlvbg0KY29tbWFuZHMNCj4gKyAgICAgKiAgICAgICAgZXhjbHVkaW5n
IHRoZSBub3JtYWwgWE1MIHByZWFtYmxlLiBUaGUgU3RyaW5nIHNob3VsZCBzdGFydA0Kd2l0aA0K
PiArICAgICAqICAgICAgICBhICI8Q29uZmlndXJlIC4uLi4iIGVsZW1lbnQuDQo+ICsgICAgICog
QHRocm93cyBFeGNlcHRpb24gaWYgYW55IHByb2JsZW1zIG9jY3VyDQo+ICsgICAgICovDQo+ICsg
ICAgcHJvdGVjdGVkIGZpbmFsIFNlcnZlciBjcmVhdGVIdHRwU2VydmVyRnJvbUNvbmZpZ3VyYXRp
b24oIGZpbmFsDQpTdHJpbmcgeG1sQ29uZmlndXJhdGlvbiApDQo+ICsgICAgICB0aHJvd3MgRXhj
ZXB0aW9uDQo+ICsgICAgew0KPiArICAgICAgICB0cnkNCj4gKyAgICAgICAgew0KPiArICAgICAg
ICAgICAgcmV0dXJuIChTZXJ2ZXIpIG5ldyBYbWxDb25maWd1cmF0aW9uKA0KeG1sQ29uZmlndXJh
dGlvbiApLm5ld0luc3RhbmNlKCk7DQo+ICsgICAgICAgIH0NCj4gKyAgICAgICAgY2F0Y2goIEV4
Y2VwdGlvbiBlICkNCj4gKyAgICAgICAgew0KPiArICAgICAgICAgICAgdGhyb3cgZTsNCj4gKyAg
ICAgICAgfQ0KPiArICAgIH0NCj4gKw0KPiArDQo+ICAgICAgcHJvdGVjdGVkIGZpbmFsIFNvY2tl
dExpc3RlbmVyIGNyZWF0ZVNvY2tldExpc3RlbmVyKCkgdGhyb3dzDQpVbmtub3duSG9zdEV4Y2Vw
dGlvbg0KPiAgICAgIHsNCj4gICAgICAgICAgU29ja2V0TGlzdGVuZXIgbGlzdGVuZXIgPSBuZXcg
U29ja2V0TGlzdGVuZXIoKTsNCj4NCj4gLSAgICAgICAgaWYoIG51bGwgIT0gY29uZmlnLmdldEhv
c3ROYW1lKCkgKQ0KPiArICAgICAgICBpZiggbnVsbCAhPSBtX2NvbmZpZy5nZXRIb3N0TmFtZSgp
ICkNCj4gICAgICAgICAgew0KPiAtICAgICAgICAgICAgbGlzdGVuZXIuc2V0SG9zdCggY29uZmln
LmdldEhvc3ROYW1lKCkgKTsNCj4gKyAgICAgICAgICAgIGxpc3RlbmVyLnNldEhvc3QoIG1fY29u
ZmlnLmdldEhvc3ROYW1lKCkgKTsNCj4gICAgICAgICAgfQ0KPg0KPiAtICAgICAgICBsaXN0ZW5l
ci5zZXRQb3J0KCBjb25maWcuZ2V0UG9ydCgpICk7DQo+IC0gICAgICAgIGxpc3RlbmVyLnNldE1p
blRocmVhZHMoIGNvbmZpZy5nZXRNaW5UaHJlYWRzKCkgKTsNCj4gLSAgICAgICAgbGlzdGVuZXIu
c2V0TWF4VGhyZWFkcyggY29uZmlnLmdldE1heFRocmVhZHMoKSApOw0KPiArICAgICAgICBsaXN0
ZW5lci5zZXRQb3J0KCBtX2NvbmZpZy5nZXRQb3J0KCkgKTsNCj4gKyAgICAgICAgbGlzdGVuZXIu
c2V0TWluVGhyZWFkcyggbV9jb25maWcuZ2V0TWluVGhyZWFkcygpICk7DQo+ICsgICAgICAgIGxp
c3RlbmVyLnNldE1heFRocmVhZHMoIG1fY29uZmlnLmdldE1heFRocmVhZHMoKSApOw0KPiAgICAg
ICAgICByZXR1cm4gbGlzdGVuZXI7DQo+ICAgICAgfQ0KPiArDQo+DQo+ICAgICAgLyoqDQo+ICAg
ICAgICogU3RhcnQNCj4NCg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLS0tDQoNCg0KPiBJbmRl
eDogc2FuZGJveC9qZXJ2bGV0L2RlbW9zZXJ2ZXIvc3JjL2NvbmYvYXNzZW1ibHkueG1sDQo+ID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCj4gUkNTIGZpbGU6DQovY3Zzcm9vdC9zcGljZS9zcGljZS9zYW5kYm94L2plcnZs
ZXQvZGVtb3NlcnZlci9zcmMvY29uZi9hc3NlbWJseS54bWwsdg0KPiByZXRyaWV2aW5nIHJldmlz
aW9uIDEuMQ0KPiBkaWZmIC11IC1yMS4xIGFzc2VtYmx5LnhtbA0KPiAtLS0gc2FuZGJveC9qZXJ2
bGV0L2RlbW9zZXJ2ZXIvc3JjL2NvbmYvYXNzZW1ibHkueG1sIDI4IE9jdCAyMDAzDQowNTowNzoz
NiAtMDAwMCAxLjENCj4gKysrIHNhbmRib3gvamVydmxldC9kZW1vc2VydmVyL3NyYy9jb25mL2Fz
c2VtYmx5LnhtbCAxMSBOb3YgMjAwMw0KMDY6MzI6MTQgLTAwMDANCj4gQEAgLTMsNyArMyw3IEBA
DQo+ICAgPGJsb2NrIG5hbWU9ImplcnZsZXQtamV0dHktbG9nZ2VyIg0KPiAgICAgIGNsYXNzPSJv
cmcuamNvbXBvbmVudC5qZXJ2bGV0LmJsb2Nrcy5qZXR0eS5OdWxsUmVxdWVzdExvZ2dlciIvPg0K
PiAgIDxibG9jayBuYW1lPSJqZXJ2bGV0LWpldHR5Ig0KPiAtICAgIGNsYXNzPSJvcmcuamNvbXBv
bmVudC5qZXJ2bGV0LmJsb2Nrcy5qZXR0eS5KZXR0eUplcnZsZXQiPg0KPiArICAgIGNsYXNzPSJv
cmcuamNvbXBvbmVudC5qZXJ2bGV0LmJsb2Nrcy5qZXR0eS5BdmFsb25KZXR0eUplcnZsZXQiPg0K
PiAgICAgIDxwcm92aWRlDQo+ICAgICAgbmFtZT0iamVydmxldC1qZXR0eS1sb2dnZXIiDQo+ICAg
ICAgcm9sZT0ib3JnLmpjb21wb25lbnQuamVydmxldC5ibG9ja3MuamV0dHkuUmVxdWVzdExvZ2dl
ciIvPg0KPg0KDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0NCg0KDQo+IEluZGV4Og0Kc2Fu
ZGJveC9qZXJ2bGV0L2plcnZsZXQtamV0dHkvc3JjL2phdmEvb3JnL2pjb21wb25lbnQvamVydmxl
dC9ibG9ja3MvamV0dHkvQQ0KdmFsb25KZXR0eUplcnZsZXQuamF2YQ0KPiA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+
IFJDUyBmaWxlOg0KL2N2c3Jvb3Qvc3BpY2Uvc3BpY2Uvc2FuZGJveC9qZXJ2bGV0L2plcnZsZXQt
amV0dHkvc3JjL2phdmEvb3JnL2pjb21wb25lbnQvag0KZXJ2bGV0L2Jsb2Nrcy9qZXR0eS9BdmFs
b25KZXR0eUplcnZsZXQuamF2YSx2DQo+IHJldHJpZXZpbmcgcmV2aXNpb24gMS4yDQo+IGRpZmYg
LXUgLXIxLjIgQXZhbG9uSmV0dHlKZXJ2bGV0LmphdmENCj4gLS0tDQpzYW5kYm94L2plcnZsZXQv
amVydmxldC1qZXR0eS9zcmMvamF2YS9vcmcvamNvbXBvbmVudC9qZXJ2bGV0L2Jsb2Nrcy9qZXR0
eS9BDQp2YWxvbkpldHR5SmVydmxldC5qYXZhIDYgTm92IDIwMDMgMjI6MDY6MDMgLTAwMDAgMS4y
DQo+ICsrKw0Kc2FuZGJveC9qZXJ2bGV0L2plcnZsZXQtamV0dHkvc3JjL2phdmEvb3JnL2pjb21w
b25lbnQvamVydmxldC9ibG9ja3MvamV0dHkvQQ0KdmFsb25KZXR0eUplcnZsZXQuamF2YSAxMSBO
b3YgMjAwMyAwNjozNjo0MyAtMDAwMA0KPiBAQCAtNTQsNiArNTQsNyBAQA0KPiAgaW1wb3J0IG9y
Zy5hcGFjaGUuYXZhbG9uLmZyYW1ld29yay5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYWJsZTsNCj4g
IGltcG9ydCBvcmcuYXBhY2hlLmF2YWxvbi5mcmFtZXdvcmsuY29uZmlndXJhdGlvbi5Db25maWd1
cmF0aW9uOw0KPiAgaW1wb3J0IG9yZy5hcGFjaGUuYXZhbG9uLmZyYW1ld29yay5jb25maWd1cmF0
aW9uLkNvbmZpZ3VyYXRpb25FeGNlcHRpb247DQo+ICtpbXBvcnQNCm9yZy5hcGFjaGUuYXZhbG9u
LmZyYW1ld29yay5jb25maWd1cmF0aW9uLkRlZmF1bHRDb25maWd1cmF0aW9uU2VyaWFsaXplcjsN
Cj4gIGltcG9ydCBvcmcuYXBhY2hlLmF2YWxvbi5mcmFtZXdvcmsuY29udGV4dC5Db250ZXh0Ow0K
PiAgaW1wb3J0IG9yZy5hcGFjaGUuYXZhbG9uLmZyYW1ld29yay5jb250ZXh0LkNvbnRleHRFeGNl
cHRpb247DQo+ICBpbXBvcnQgb3JnLmFwYWNoZS5hdmFsb24uZnJhbWV3b3JrLmNvbnRleHQuQ29u
dGV4dHVhbGl6YWJsZTsNCj4gQEAgLTg4LDIzICs4OSw0MyBAQA0KPiAgcHVibGljIGNsYXNzIEF2
YWxvbkpldHR5SmVydmxldCBleHRlbmRzIEFic3RyYWN0SmV0dHlKZXJ2bGV0DQo+ICAgICAgaW1w
bGVtZW50cyBKZXJ2bGV0LCBTdGFydGFibGUsIENvbnRleHR1YWxpemFibGUsIENvbmZpZ3VyYWJs
ZSwNCkluaXRpYWxpemFibGUsIFNlcnZpY2VhYmxlLCBMb2dFbmFibGVkDQo+ICB7DQo+ICsgICAg
cHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIGNfYXBwSG9tZSA9ICIke2FwcC1ob21lfSI7DQo+
ICsNCj4gKyAgICAvKiogSmV0dHkncyBjb25maWd1cmF0aW9uICovDQo+ICsgICAgcHJpdmF0ZSBT
dHJpbmcgbV9qZXR0eUNvbmZpZ3VyYXRpb247DQo+ICsNCj4gKyAgICAvKiogSmV0dHkncyBjb25m
aWd1cmF0aW9uIGZpbGUgKi8NCj4gKyAgICBwcml2YXRlIFN0cmluZyBtX2pldHR5Q29uZkZpbGU7
DQo+DQo+ICAgICAgcHJpdmF0ZSBGaWxlIG1fc2FyUm9vdERpcjsNCj4gICAgICBwcml2YXRlIEF2
YWxvbkplcnZsZXRDb250ZXh0IG1famVydmxldENvbnRleHQ7DQo+ICAgICAgcHJpdmF0ZSBDb250
ZXh0IG1fY29udGV4dDsNCj4gICAgICBwcml2YXRlIExvZ2dlciBtX2xvZ2dlcjsNCj4NCj4gLSAg
ICBwdWJsaWMgdm9pZCBlbmFibGVMb2dnaW5nKExvZ2dlciBsb2dnZXIpIHsNCj4gKw0KPiArICAg
IC8qKg0KPiArICAgICAqIEdldCB0aGUgQXZhbG9uIGxvZ2dlcg0KPiArICAgICAqLw0KPiArICAg
IHB1YmxpYyB2b2lkIGVuYWJsZUxvZ2dpbmcoIExvZ2dlciBsb2dnZXIgKQ0KPiArICAgIHsNCj4g
ICAgICAgICAgbV9sb2dnZXIgPSBsb2dnZXI7DQo+ICAgICAgfQ0KPg0KPiAtICAgIHByb3RlY3Rl
ZCBMb2dnZXIgZ2V0TG9nZ2VyKCkgew0KPiArDQo+ICsgICAgLyoqDQo+ICsgICAgICogRmV0Y2gg
dGhlIGxvZ2dlcg0KPiArICAgICAqLw0KPiArICAgIHByb3RlY3RlZCBMb2dnZXIgZ2V0TG9nZ2Vy
KCkNCj4gKyAgICB7DQo+ICAgICAgICAgIHJldHVybiBtX2xvZ2dlcjsNCj4gICAgICB9DQo+DQo+
ICsNCj4gICAgICAvKioNCj4gKyAgICAgKiBHZXQgdGhlIEF2YWxvbiBzZXJ2aWNlIG1hbmFnZXIN
Cj4gKyAgICAgKg0KPiAgICAgICAqIEBwYXJhbSBzZXJ2aWNlTWFuYWdlcg0KPiAtICAgICAqIEB0
aHJvd3MgU2VydmljZUV4Y2VwdGlvbg0KPiArICAgICAqIEB0aHJvd3MgU2VydmljZUV4Y2VwdGlv
biBpZiBhbnkgcHJvYmxlbXMgb2NjdXINCj4gICAgICAgKg0KPiAgICAgICAqIEBwaG9lbml4OmRl
cGVuZGVuY3kNCm5hbWU9Im9yZy5qY29tcG9uZW50LmplcnZsZXQuYmxvY2tzLmpldHR5LlJlcXVl
c3RMb2dnZXIiDQo+ICAgICAgICovDQo+IEBAIC0xMTMsOCArMTM0LDEwIEBADQo+ICAgICAgICAg
IG1famVydmxldENvbnRleHQgPSBuZXcgQXZhbG9uSmVydmxldENvbnRleHQoIG1fY29udGV4dCwN
CnNlcnZpY2VNYW5hZ2VyLCBnZXRMb2dnZXIoKSApOw0KPiAgICAgIH0NCj4NCj4gKw0KPiAgICAg
IC8qKg0KPiAtICAgICAqIENvbnRleHR1YWxpemUNCj4gKyAgICAgKiBDb250ZXh0dWFsaXplIHRo
ZSBjb21wb25lbnQNCj4gKyAgICAgKg0KPiAgICAgICAqIEBwYXJhbSBjb250ZXh0IHRoZSBjb250
ZXh0DQo+ICAgICAgICovDQo+ICAgICAgcHVibGljIHZvaWQgY29udGV4dHVhbGl6ZSggZmluYWwg
Q29udGV4dCBjb250ZXh0ICkgdGhyb3dzDQpDb250ZXh0RXhjZXB0aW9uDQo+IEBAIC0xMjMsMzcg
KzE0NiwxMTcgQEANCj4gICAgICAgICAgbV9zYXJSb290RGlyID0gKEZpbGUpY29udGV4dC5nZXQo
ICJhcHAuaG9tZSIgKTsNCj4gICAgICB9DQo+DQo+ICsNCj4gICAgICAvKioNCj4gLSAgICAgKiBD
b25maWd1cmUNCj4gKyAgICAgKiBDb25maWd1cmUgdGhlIGNvbXBvZW5lbnQNCj4gKyAgICAgKg0K
PiAgICAgICAqIEBwYXJhbSBjb25maWd1cmF0aW9uIHRoZSBjb25maWd1cmF0aW9uDQo+IC0gICAg
ICogQHRocm93cyBDb25maWd1cmF0aW9uRXhjZXB0aW9uIGlmIGEgcHJvYmxlbQ0KPiArICAgICAq
IEB0aHJvd3MgQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiBpZiBhbnkgcHJvYmxlbXMgb2NjdXINCj4g
ICAgICAgKg0KPiAgICAgICAqIEBwaG9lbml4OmNvbmZpZ3VyYXRpb24tc2NoZW1hDQp0eXBlPSJo
dHRwOi8vcmVsYXhuZy5vcmcvbnMvc3RydWN0dXJlLzEuMCINCj4gICAgICAgKi8NCj4gICAgICBw
dWJsaWMgdm9pZCBjb25maWd1cmUoIGZpbmFsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiAp
IHRocm93cw0KQ29uZmlndXJhdGlvbkV4Y2VwdGlvbg0KPiAgICAgIHsNCj4gICAgICAgICAgSmVy
dmxldENvbmZpZ0JlYW4gY29uZmlnID0gbmV3IEplcnZsZXRDb25maWdCZWFuKCk7DQo+IC0NCj4g
LSAgICAgICAgY29uZmlnLnNldEhvc3ROYW1lKGNvbmZpZ3VyYXRpb24uZ2V0Q2hpbGQoDQoiaG9z
dG5hbWUiICkuZ2V0VmFsdWUoIG51bGwgKSk7DQo+IC0gICAgICAgIGNvbmZpZy5zZXRQb3J0KGNv
bmZpZ3VyYXRpb24uZ2V0Q2hpbGQoDQoicG9ydCIgKS5nZXRWYWx1ZUFzSW50ZWdlciggODA4MCAp
KTsNCj4gLSAgICAgICAgY29uZmlnLnNldE1pblRocmVhZHMoY29uZmlndXJhdGlvbi5nZXRDaGls
ZCgNCiJtaW50aHJlYWRzIiApLmdldFZhbHVlQXNJbnRlZ2VyKCA1ICkpOw0KPiAtICAgICAgICBj
b25maWcuc2V0TWF4VGhyZWFkcyhjb25maWd1cmF0aW9uLmdldENoaWxkKA0KIm1heHRocmVhZHMi
ICkuZ2V0VmFsdWVBc0ludGVnZXIoIDI1MCApKTsNCj4gLSAgICAgICAgY29uZmlnLnNldEV4dHJh
Y3RXYXJGaWxlKGNvbmZpZ3VyYXRpb24uZ2V0Q2hpbGQoDQoiZXh0cmFjdC13YXIiICkuZ2V0VmFs
dWVBc0Jvb2xlYW4oIHRydWUgKSk7DQo+IC0NCj4gKyAgICAgICAgY29uZmlnLnNldEhvc3ROYW1l
KCBjb25maWd1cmF0aW9uLmdldENoaWxkKA0KImhvc3RuYW1lIiApLmdldFZhbHVlKCBudWxsICkg
KTsNCj4gKyAgICAgICAgY29uZmlnLnNldFBvcnQoIGNvbmZpZ3VyYXRpb24uZ2V0Q2hpbGQoDQoi
cG9ydCIgKS5nZXRWYWx1ZUFzSW50ZWdlciggODA4MCApICk7DQo+ICsgICAgICAgIGNvbmZpZy5z
ZXRNaW5UaHJlYWRzKCBjb25maWd1cmF0aW9uLmdldENoaWxkKA0KIm1pbnRocmVhZHMiICkuZ2V0
VmFsdWVBc0ludGVnZXIoIDUgKSApOw0KPiArICAgICAgICBjb25maWcuc2V0TWF4VGhyZWFkcygg
Y29uZmlndXJhdGlvbi5nZXRDaGlsZCgNCiJtYXh0aHJlYWRzIiApLmdldFZhbHVlQXNJbnRlZ2Vy
KCAyNTAgKSApOw0KPiArICAgICAgICBjb25maWcuc2V0RXh0cmFjdFdhckZpbGUoIGNvbmZpZ3Vy
YXRpb24uZ2V0Q2hpbGQoICJleHRyYWN0LXdhciIgKQ0KPiArICAgICAgICAgIC5nZXRWYWx1ZUFz
Qm9vbGVhbiggdHJ1ZSApICk7DQo+ICAgICAgICAgIGlmKCBjb25maWcuZ2V0TWF4VGhyZWFkcygp
IDwgY29uZmlnLmdldE1pblRocmVhZHMoKSApDQo+ICAgICAgICAgIHsNCj4gICAgICAgICAgICAg
IHRocm93IG5ldyBDb25maWd1cmF0aW9uRXhjZXB0aW9uKCAibWF4dGhyZWFkcyBtdXN0IGJlIGdy
ZWF0ZXINCnRoYW4gbWludGhyZWFkcyIgKTsNCj4gICAgICAgICAgfQ0KPiArICAgICAgICBtX2Nv
bmZpZyA9IGNvbmZpZzsNCj4gKw0KPiArICAgICAgICBtX2pldHR5Q29uZkZpbGUgPSBjb25maWd1
cmF0aW9uLmdldENoaWxkKA0KImpldHR5LWNvbmZpZy1maWxlIiApLmdldFZhbHVlKCBudWxsICk7
DQo+ICsgICAgICAgIGlmKCBudWxsICE9IG1famV0dHlDb25mRmlsZSApDQo+ICsgICAgICAgIHsN
Cj4gKyAgICAgICAgICAgIGdldExvZ2dlcigpLmluZm8oICJDb25maWd1cmF0aW5nIEpldHR5IGZy
b20gZmlsZSBbIiArDQptX2pldHR5Q29uZkZpbGUgKyAiXS4iICk7DQo+ICsgICAgICAgICAgICBp
ZiggbV9qZXR0eUNvbmZGaWxlLnN0YXJ0c1dpdGgoIGNfYXBwSG9tZSApICkNCj4gKyAgICAgICAg
ICAgIHsNCj4gKyAgICAgICAgICAgICAgICBtX2pldHR5Q29uZkZpbGUgPSBtX3NhclJvb3REaXIu
Z2V0QWJzb2x1dGVQYXRoKCkgKw0KPiArICAgICAgICAgICAgICAgICAgbV9qZXR0eUNvbmZGaWxl
LnN1YnN0cmluZyggY19hcHBIb21lLmxlbmd0aCgpICk7DQo+ICsgICAgICAgICAgICB9DQo+ICsg
ICAgICAgICAgICBpZiggbV9qZXR0eUNvbmZGaWxlLnN0YXJ0c1dpdGgoIGNfYXBwSG9tZSApICkN
Cj4gKyAgICAgICAgICAgIHsNCj4gKyAgICAgICAgICAgICAgICBtX2pldHR5Q29uZkZpbGUgPSBt
X2pldHR5Q29uZkZpbGUuc3Vic3RyaW5nKA0KY19hcHBIb21lLmxlbmd0aCgpICk7DQo+ICsgICAg
ICAgICAgICB9DQo+ICsgICAgICAgICAgICBtX2pldHR5Q29uZkZpbGUgPSBtX2pldHR5Q29uZkZp
bGUucmVwbGFjZSggJ1xcJywNCkZpbGUuc2VwYXJhdG9yQ2hhciApOw0KPiArICAgICAgICAgICAg
bV9qZXR0eUNvbmZGaWxlID0gbV9qZXR0eUNvbmZGaWxlLnJlcGxhY2UoICcvJywNCkZpbGUuc2Vw
YXJhdG9yQ2hhciApOw0KPiArICAgICAgICB9DQo+ICsgICAgICAgIGVsc2UNCj4gKyAgICAgICAg
ew0KPiArICAgICAgICAgICAgbV9qZXR0eUNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uLmdl
dENoaWxkKA0KImpldHR5LWNvbmZpZyIgKS5nZXRWYWx1ZSggbnVsbCApOw0KPiArICAgICAgICAg
ICAgaWYoIG51bGwgPT0gbV9qZXR0eUNvbmZpZ3VyYXRpb24gKQ0KPiArICAgICAgICAgICAgew0K
PiArICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gamV0dHlDb25mID0gY29uZmlndXJhdGlv
bi5nZXRDaGlsZCgNCiJqZXR0eS1jb25maWciICkNCj4gKyAgICAgICAgICAgICAgICAgIC5nZXRD
aGlsZCggIkNvbmZpZ3VyZSIsIGZhbHNlICk7DQo+ICsgICAgICAgICAgICAgICAgaWYoIG51bGwg
IT0gamV0dHlDb25mICkNCj4gKyAgICAgICAgICAgICAgICB7DQo+ICsgICAgICAgICAgICAgICAg
ICAgIHRyeQ0KPiArICAgICAgICAgICAgICAgICAgICB7DQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICBEZWZhdWx0Q29uZmlndXJhdGlvblNlcmlhbGl6ZXIgc2VyaWFsaXplciA9DQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZWZhdWx0Q29uZmlndXJhdGlvblNlcmlhbGl6ZXIo
KTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIG1famV0dHlDb25maWd1cmF0aW9uID0gIHNl
cmlhbGl6ZXIuc2VyaWFsaXplKA0KamV0dHlDb25mICk7DQo+ICsgICAgICAgICAgICAgICAgICAg
IH0NCj4gKyAgICAgICAgICAgICAgICAgICAgY2F0Y2goIEV4Y2VwdGlvbiBlICkNCj4gKyAgICAg
ICAgICAgICAgICAgICAgew0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5n
IG1lc3NhZ2UgPSAiU2VyaWFsaXphdGlvbiBvZiBKZXR0eSdzDQpjb25maWd1cmF0aW9uIGZhaWxl
ZC4iOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkuZXJyb3IoIG1lc3Nh
Z2UsIGUgKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb25maWd1cmF0
aW9uRXhjZXB0aW9uKCBtZXNzYWdlLCBlICk7DQo+ICsgICAgICAgICAgICAgICAgICAgIH0NCj4g
KyAgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICBpZigg
bnVsbCAhPSBtX2pldHR5Q29uZmlndXJhdGlvbiApDQo+ICsgICAgICAgICAgICB7DQo+ICsgICAg
ICAgICAgICAgICAgZ2V0TG9nZ2VyKCkuaW5mbyggIkNvbmZpZ3VyYXRpbmcgSmV0dHkgZnJvbSBj
b21wb25lbnQNCmNvbmZpZ3VyYXRpb24uIiApOw0KPiArICAgICAgICAgICAgICAgIGlmKCBtX2pl
dHR5Q29uZmlndXJhdGlvbi5pbmRleE9mICgiPz4iKSA+PSAwICkNCj4gKyAgICAgICAgICAgICAg
ICB7DQo+ICsgICAgICAgICAgICAgICAgICAgIG1famV0dHlDb25maWd1cmF0aW9uID0NCm1famV0
dHlDb25maWd1cmF0aW9uLnN1YnN0cmluZygNCj4gKyAgICAgICAgICAgICAgICAgICAgICBtX2pl
dHR5Q29uZmlndXJhdGlvbi5pbmRleE9mICgiPz4iKSArIDIgKTsNCj4gKyAgICAgICAgICAgICAg
ICB9DQo+ICsgICAgICAgICAgICB9DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICBTdHJp
bmcgamV0dHlIb21lID0gY29uZmlndXJhdGlvbi5nZXRDaGlsZCgNCiJqZXR0eS1ob21lIiApLmdl
dFZhbHVlKCAiIiApOw0KPiArICAgICAgICBpZiggISIiLmVxdWFscyggamV0dHlIb21lICkgKQ0K
PiArICAgICAgICB7DQo+ICsgICAgICAgICAgICBpZiggamV0dHlIb21lLnN0YXJ0c1dpdGgoIGNf
YXBwSG9tZSApICkNCj4gKyAgICAgICAgICAgIHsNCj4gKyAgICAgICAgICAgICAgICBqZXR0eUhv
bWUgPSBtX3NhclJvb3REaXIuZ2V0QWJzb2x1dGVQYXRoKCkNCj4gKyAgICAgICAgICAgICAgICAg
ICsgamV0dHlIb21lLnN1YnN0cmluZyggY19hcHBIb21lLmxlbmd0aCgpICk7DQo+ICsgICAgICAg
ICAgICB9DQo+ICsgICAgICAgICAgICBnZXRMb2dnZXIoKS5pbmZvKCAiU2V0dGluZyBzeXN0ZW0g
cHJvcGVydHkgJ2pldHR5LmhvbWUnIHRvIFsiDQorIGpldHR5SG9tZSArICJdLiIgKTsNCj4gKyAg
ICAgICAgICAgIFN5c3RlbS5zZXRQcm9wZXJ0eSggImpldHR5LmhvbWUiLCBqZXR0eUhvbWUgKTsN
Cj4gKyAgICAgICAgfQ0KPiAgICAgIH0NCj4NCj4gKw0KPiAgICAgIC8qKg0KPiAgICAgICAqIElu
aXRpYWxpemUNCj4gLSAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbiBpZiBhIHByb2JsZW0NCj4gKyAg
ICAgKiBAdGhyb3dzIEV4Y2VwdGlvbiBpZiBhbnkgcHJvYmxlbXMgb2NjdXINCj4gICAgICAgKi8N
Cj4gICAgICBwdWJsaWMgdm9pZCBpbml0aWFsaXplKCkgdGhyb3dzIEV4Y2VwdGlvbg0KPiAgICAg
IHsNCj4gLSAgICAgICAgbV9zZXJ2ZXIgPSBjcmVhdGVIdHRwU2VydmVyKCk7DQo+IC0gICAgICAg
IG1fc2VydmVyLmFkZExpc3RlbmVyKCBjcmVhdGVTb2NrZXRMaXN0ZW5lcigpICk7DQo+ICsgICAg
ICAgIGlmKCBudWxsICE9IG1famV0dHlDb25maWd1cmF0aW9uICYmICEiIi5lcXVhbHMoDQptX2pl
dHR5Q29uZmlndXJhdGlvbiApICkNCj4gKyAgICAgICAgew0KPiArICAgICAgICAgICAgIG1fc2Vy
dmVyID0gY3JlYXRlSHR0cFNlcnZlckZyb21Db25maWd1cmF0aW9uKA0KbV9qZXR0eUNvbmZpZ3Vy
YXRpb24gKTsNCj4gKyAgICAgICAgfQ0KPiArICAgICAgICBlbHNlIGlmKCBudWxsICE9IG1famV0
dHlDb25mRmlsZSAmJiAhIiIuZXF1YWxzKA0KbV9qZXR0eUNvbmZGaWxlICkgKQ0KPiArICAgICAg
ICB7DQo+ICsgICAgICAgICAgICAgbV9zZXJ2ZXIgPSBjcmVhdGVIdHRwU2VydmVyRnJvbUZpbGUo
IG1famV0dHlDb25mRmlsZSApOw0KPiArICAgICAgICB9DQo+ICsgICAgICAgIGVsc2UNCj4gKyAg
ICAgICAgew0KPiArICAgICAgICAgICAgbV9zZXJ2ZXIgPSBjcmVhdGVIdHRwU2VydmVyKCk7DQo+
ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICBpZiggbV9jb25maWcuZ2V0UG9ydCgpID4gMCAp
DQo+ICsgICAgICAgIHsNCj4gKyAgICAgICAgICAgIG1fc2VydmVyLmFkZExpc3RlbmVyKCBjcmVh
dGVTb2NrZXRMaXN0ZW5lcigpICk7DQo+ICsgICAgICAgIH0NCj4NCj4gICAgICAgICAgQXZhbG9u
TG9nU2luayBsb2dTaW5rID0gbmV3IEF2YWxvbkxvZ1NpbmsoKTsNCj4gICAgICAgICAgbG9nU2lu
ay5lbmFibGVMb2dnaW5nKCBnZXRMb2dnZXIoKSApOw0KPiBAQCAtMTYxLDggKzI2NCw4IEBADQo+
ICAgICAgICAgIC8vIHVuc2F0aXNmYWN0b3J5IGFzIGlzIHN0YXRpYw0KPiAgICAgICAgICBMb2cu
aW5zdGFuY2UoKS5hZGQoIGxvZ1NpbmsgKTsNCj4NCj4gLSAgICAgICAgUmVxdWVzdExvZ2dlciBs
b2dnZXIgPSAoUmVxdWVzdExvZ2dlcikNCj4gLSAgICAgICAgICAgIG1famVydmxldENvbnRleHQu
Z2V0U2VydmljZU1hbmFnZXIoKS5sb29rdXAoDQpSZXF1ZXN0TG9nZ2VyLlJPTEUgKTsNCj4gKyAg
ICAgICAgUmVxdWVzdExvZ2dlciBsb2dnZXIgPSAoDQpSZXF1ZXN0TG9nZ2VyICltX2plcnZsZXRD
b250ZXh0LmdldFNlcnZpY2VNYW5hZ2VyKCkNCj4gKyAgICAgICAgIC5sb29rdXAoIFJlcXVlc3RM
b2dnZXIuUk9MRSApOw0KPiAgICAgICAgICBtX3NlcnZlci5zZXRSZXF1ZXN0TG9nKCBuZXcgSmV0
dHlSZXF1ZXN0TG9nQWRhcHRlciggbG9nZ2VyICkgKTsNCj4gICAgICB9DQo+DQo+IEBAIC0yMDEs
NyArMzA0LDcgQEANCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhdGhUb1dlYkFwcEZvbGRlciwNCj4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGplcnZsZXRDb250ZXh0LA0KPiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zYXJS
b290RGlyLA0KPiAtDQpjb25maWcuZ2V0RXh0cmFjdFdhckZpbGUoKSApOw0KPiArDQptX2NvbmZp
Zy5nZXRFeHRyYWN0V2FyRmlsZSgpICk7DQo+ICAgICAgICAgICAgICBtX3dlYmNvbnRleHRzLnB1
dCggY29udGV4dCwgaG9sZGVyICk7DQo+ICAgICAgICAgIH0NCj4gICAgICAgICAgY2F0Y2goIEV4
Y2VwdGlvbiBlICkNCj4gQEAgLTMzMiwxMiArNDM1LDEzIEBADQo+DQo+ICAgICAgICAgIHRyeQ0K
PiAgICAgICAgICB7DQo+IC0gICAgICAgICAgICBtX3NlcnZlci5hZGRDb250ZXh0KCBjb25maWcu
Z2V0SG9zdE5hbWUoKSwgaG9sZGVyLmNyZWF0ZSgpICk7DQo+ICsgICAgICAgICAgICBtX3NlcnZl
ci5hZGRDb250ZXh0KCBtX2NvbmZpZy5nZXRIb3N0TmFtZSgpLA0KaG9sZGVyLmNyZWF0ZSgpICk7
DQo+DQo+ICAgICAgICAgICAgICBpZiggZ2V0TG9nZ2VyKCkuaXNJbmZvRW5hYmxlZCgpICkNCj4g
ICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS5pbmZvKCAiZGVwbG95aW5nIGNvbnRleHQ9IiAr
IGNvbnRleHQgKyAiLA0Kd2ViYXBwPSINCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICArIGhvbGRlci5nZXRXZWJhcHBVcmwoKSArICIgdG8gaG9zdD0iDQo+IC0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKyAoIGNvbmZpZy5nZXRIb3N0TmFtZSgpID09IG51bGwg
Pw0KIihBbGwgSG9zdHMpIiA6IGNvbmZpZy5nZXRIb3N0TmFtZSgpICkgKTsNCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICArICggbV9jb25maWcuZ2V0SG9zdE5hbWUoKSA9PSBu
dWxsID8NCiIoQWxsIEhvc3RzKSIgOg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9jb25maWcuZ2V0SG9zdE5hbWUoKSApICk7DQo+DQo+ICAgICAgICAgICAgICBob2xk
ZXIuc3RhcnQoKTsNCj4gICAgICAgICAgfQ0KPg0KDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0t
LS0NCg0KDQo+IDw/eG1sIHZlcnNpb249IjEuMCI/Pg0KPiA8ZWxlbWVudCBuYW1lPSJyb290IiB4
bWxucz0iaHR0cDovL3JlbGF4bmcub3JnL25zL3N0cnVjdHVyZS8xLjAiDQpkYXRhdHlwZUxpYnJh
cnk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWRhdGF0eXBlcyI+DQo+ICAgPGlu
dGVybGVhdmU+DQo+ICAgICA8b3B0aW9uYWw+DQo+ICAgICAgIDxlbGVtZW50IG5hbWU9Imhvc3Ru
YW1lIj4NCj4gICAgICAgICA8dGV4dC8+DQo+ICAgICAgIDwvZWxlbWVudD4NCj4gICAgIDwvb3B0
aW9uYWw+DQo+ICAgICA8b3B0aW9uYWw+DQo+ICAgICAgIDxlbGVtZW50IG5hbWU9InBvcnQiPg0K
PiAgICAgICAgIDxkYXRhIHR5cGU9ImludGVnZXIiLz4NCj4gICAgICAgPC9lbGVtZW50Pg0KPiAg
ICAgPC9vcHRpb25hbD4NCj4gICAgIDxvcHRpb25hbD4NCj4gICAgICAgPGVsZW1lbnQgbmFtZT0i
bWludGhyZWFkcyI+DQo+ICAgICAgICAgPGRhdGEgdHlwZT0iaW50ZWdlciIvPg0KPiAgICAgICA8
L2VsZW1lbnQ+DQo+ICAgICA8L29wdGlvbmFsPg0KPiAgICAgPG9wdGlvbmFsPg0KPiAgICAgICA8
ZWxlbWVudCBuYW1lPSJtYXh0aHJlYWRzIj4NCj4gICAgICAgICA8ZGF0YSB0eXBlPSJpbnRlZ2Vy
Ii8+DQo+ICAgICAgIDwvZWxlbWVudD4NCj4gICAgIDwvb3B0aW9uYWw+DQo+ICAgICA8b3B0aW9u
YWw+DQo+ICAgICAgIDxlbGVtZW50IG5hbWU9ImV4dHJhY3Qtd2FyIj4NCj4gICAgICAgICA8ZGF0
YSB0eXBlPSJib29sZWFuIi8+DQo+ICAgICAgIDwvZWxlbWVudD4NCj4gICAgIDwvb3B0aW9uYWw+
DQo+ICAgICA8b3B0aW9uYWw+DQo+ICAgICAgIDxlbGVtZW50IG5hbWU9ImpldHR5LWNvbmZpZy1m
aWxlIj4NCj4gICAgICAgICA8dGV4dC8+DQo+ICAgICAgIDwvZWxlbWVudD4NCj4gICAgIDwvb3B0
aW9uYWw+DQo+ICAgICA8b3B0aW9uYWw+DQo+ICAgICAgIDxlbGVtZW50IG5hbWU9ImpldHR5LWNv
bmZpZyI+DQo+ICAgICAgICAgPHRleHQvPg0KPiAgICAgICA8L2VsZW1lbnQ+DQo+ICAgICA8L29w
dGlvbmFsPg0KPiAgICAgPG9wdGlvbmFsPg0KPiAgICAgICA8ZWxlbWVudCBuYW1lPSJqZXR0eS1o
b21lIj4NCj4gICAgICAgICA8dGV4dC8+DQo+ICAgICAgIDwvZWxlbWVudD4NCj4gICAgIDwvb3B0
aW9uYWw+DQo+ICAgPC9pbnRlcmxlYXZlPg0KPiA8L2VsZW1lbnQ+DQo+DQoNCg0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KLS0tLQ0KDQoNCj4gSW5kZXg6DQpzYW5kYm94L2plcnZsZXQvamVydmxldC1q
ZXR0eS9zcmMvamF2YS9vcmcvamNvbXBvbmVudC9qZXJ2bGV0L2Jsb2Nrcy9qZXR0eS9CDQplYW5K
ZXR0eUplcnZsZXQuamF2YQ0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+IFJDUyBmaWxlOg0KL2N2c3Jvb3Qvc3Bp
Y2Uvc3BpY2Uvc2FuZGJveC9qZXJ2bGV0L2plcnZsZXQtamV0dHkvc3JjL2phdmEvb3JnL2pjb21w
b25lbnQvag0KZXJ2bGV0L2Jsb2Nrcy9qZXR0eS9CZWFuSmV0dHlKZXJ2bGV0LmphdmEsdg0KPiBy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuMg0KPiBkaWZmIC11IC1yMS4yIEJlYW5KZXR0eUplcnZsZXQu
amF2YQ0KPiAtLS0NCnNhbmRib3gvamVydmxldC9qZXJ2bGV0LWpldHR5L3NyYy9qYXZhL29yZy9q
Y29tcG9uZW50L2plcnZsZXQvYmxvY2tzL2pldHR5L0INCmVhbkpldHR5SmVydmxldC5qYXZhIDYg
Tm92IDIwMDMgMjI6MDY6MDMgLTAwMDAgMS4yDQo+ICsrKw0Kc2FuZGJveC9qZXJ2bGV0L2plcnZs
ZXQtamV0dHkvc3JjL2phdmEvb3JnL2pjb21wb25lbnQvamVydmxldC9ibG9ja3MvamV0dHkvQg0K
ZWFuSmV0dHlKZXJ2bGV0LmphdmEgMTEgTm92IDIwMDMgMDY6Mzc6NTggLTAwMDANCj4gQEAgLTg5
LDcgKzg5LDcgQEANCj4gICAgICBwcml2YXRlIExvZ1NpbmsgbG9nU2luazsNCj4NCj4gICAgICBw
dWJsaWMgdm9pZCBzZXRKZXJ2bGV0Q29uZmlnKEplcnZsZXRDb25maWcgY29uZmlnKSB7DQo+IC0g
ICAgICAgIHN1cGVyLmNvbmZpZyA9IGNvbmZpZzsNCj4gKyAgICAgICAgc3VwZXIubV9jb25maWcg
PSBjb25maWc7DQo+ICAgICAgfQ0KPg0KPiAgICAgIHB1YmxpYyB2b2lkIHNldFJlcXVlc3RMb2dn
ZXIoUmVxdWVzdExvZ2dlciByZXF1ZXN0TG9nZ2VyKSB7DQo+IEBAIC0xNjAsNyArMTYwLDcgQEAN
Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhdGhUb1dlYkFwcEZvbGRlciwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGplcnZsZXRDb250ZXh0LA0KPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwUm9vdERpciwNCj4gLQ0K
Y29uZmlnLmdldEV4dHJhY3RXYXJGaWxlKCkgKTsNCj4gKw0KbV9jb25maWcuZ2V0RXh0cmFjdFdh
ckZpbGUoKSApOw0KPiAgICAgICAgICAgICAgbV93ZWJjb250ZXh0cy5wdXQoIGNvbnRleHQsIGhv
bGRlciApOw0KPiAgICAgICAgICB9DQo+ICAgICAgICAgIGNhdGNoKCBFeGNlcHRpb24gZSApDQo+
IEBAIC0yODMsMTYgKzI4MywxNiBAQA0KPg0KPiAgICAgICAgICB0cnkNCj4gICAgICAgICAgew0K
PiAtICAgICAgICAgICAgbV9zZXJ2ZXIuYWRkQ29udGV4dCggY29uZmlnLmdldEhvc3ROYW1lKCks
IGhvbGRlci5jcmVhdGUoKSApOw0KPiArICAgICAgICAgICAgbV9zZXJ2ZXIuYWRkQ29udGV4dCgg
bV9jb25maWcuZ2V0SG9zdE5hbWUoKSwNCmhvbGRlci5jcmVhdGUoKSApOw0KPg0KPiAtICAgICAg
ICAgICAgbW9uaXRvci5kZXBsb3lpbmdDb250ZXh0KHRoaXMuZ2V0Q2xhc3MoKSwgY29udGV4dCwN
CmhvbGRlci5nZXRXZWJhcHBVcmwoKSwgY29uZmlnLmdldEhvc3ROYW1lKCkpOw0KPiArICAgICAg
ICAgICAgbW9uaXRvci5kZXBsb3lpbmdDb250ZXh0KHRoaXMuZ2V0Q2xhc3MoKSwgY29udGV4dCwN
CmhvbGRlci5nZXRXZWJhcHBVcmwoKSwgbV9jb25maWcuZ2V0SG9zdE5hbWUoKSk7DQo+DQo+ICAg
ICAgICAgICAgICBob2xkZXIuc3RhcnQoKTsNCj4gICAgICAgICAgfQ0KPiAgICAgICAgICBjYXRj
aCggRXhjZXB0aW9uIGUgKQ0KPiAgICAgICAgICB7DQo+DQo+IC0gICAgICAgICAgICBtb25pdG9y
LmRlcGxveWluZ0V4Y2VwdGlvbih0aGlzLmdldENsYXNzKCksIGNvbnRleHQsDQpob2xkZXIuZ2V0
V2ViYXBwVXJsKCksIGNvbmZpZy5nZXRIb3N0TmFtZSgpLCBlKTsNCj4gKyAgICAgICAgICAgIG1v
bml0b3IuZGVwbG95aW5nRXhjZXB0aW9uKHRoaXMuZ2V0Q2xhc3MoKSwgY29udGV4dCwNCmhvbGRl
ci5nZXRXZWJhcHBVcmwoKSwgbV9jb25maWcuZ2V0SG9zdE5hbWUoKSwgZSk7DQo+DQo+ICAgICAg
ICAgIH0NCj4gICAgICB9DQo+DQoNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KDQoNCj4g
PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo+IDxjb25maWc+DQo+ICAgPGplcnZsZXQtamV0dHk+DQo+
ICAgICA8IS0tDQo+ICAgICAgICAgIEhUVFAgc2VydmVyIGhvc3QNCj4NCj4gICAgICAgICAgSmV0
dHkgbWFuYWdlZCB3ZWIgYXBwbGljYXRpb25zIHdpbGwgYmUgZGVwbG95ZWQgdG8gdGhpcyB2aXJ0
dWFsDQo+ICAgICAgICAgIGhvc3QuIElmIGl0IGRvZXNuJ3QgZXhpc3Qgb3IgaXMgbGVmdCBlbXB0
eSB0aGUgYXBwbGljYXRpb25zIHdpbGwNCj4gICAgICAgICAgYmUgZGVwbG95ZWQgdG8gYWxsIGV4
aXN0aW5nIGhvc3RzLiBUaGUgZGVmYXVsdCBpcyBudWxsIChhbGwNCmhvc3RzKS4NCj4gICAgICAt
LT4NCj4gICAgIDwhLS08aG9zdG5hbWU+bG9jYWxob3N0PC9ob3N0bmFtZT4tLT4NCj4NCj4gICAg
IDwhLS0NCj4gICAgICAgICAgSFRUUCBzZXJ2ZXIgcG9ydA0KPg0KPiAgICAgICAgICBUaGUgcG9y
dCB0byBiaW5kIHRoZSBIVFRQIHNlcnZlciB0by4gSWYgbm8gcG9ydCBpcyBkZWZpbmVkIGl0IGlz
DQo+ICAgICAgICAgIGFzc3VtZWQgdGhhdCB0aGUgcG9ydCBvciBwb3J0cyBhcmUgY29uZmlndXJl
ZCBpbiB0aGUgSmV0dHkNCj4gICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLiBUaGUgZGVmYXVs
dCBpcyA4MDgwLiBJZiB5b3UgdXNlIGV4dGVybmFsDQo+ICAgICAgICAgIEpldHR5IGNvbmZpZ3Vy
YXRpb25zLCBkb24ndCBjb25maWd1cmUgdGhlIHNhbWUgcG9ydCB0d2ljZS4NCj4gICAgICAtLT4N
Cj4gICAgIDwhLS08cG9ydD44MDgwPC9wb3J0Pi0tPg0KPg0KPiAgICAgPCEtLQ0KPiAgICAgICAg
ICBIVFRQIHNlcnZlciBNaW4gdGhyZWFkcw0KPg0KPiAgICAgICAgICBNaW5pbXVtIGFtb3VudCBv
ZiB0aHJlYWRzIGZvciB0aGUgSFRUUCBzZXJ2ZXIuIFRoZSBkZWZhdWx0IGlzIDUuDQo+ICAgICAg
LS0+DQo+ICAgICA8IS0tPG1pbnRocmVhZHM+NTwvbWludGhyZWFkcz4tLT4NCj4NCj4gICAgIDwh
LS0NCj4gICAgICAgICAgSFRUUCBzZXJ2ZXIgTWF4IHRocmVhZHMNCj4NCj4gICAgICAgICAgTWF4
aW11bSBhbW91bnQgb2YgdGhyZWFkcyBmb3IgdGhlIEhUVFAgc2VydmVyLiBUaGUgZGVmYXVsdCBp
cw0KMjUwLg0KPiAgICAgIC0tPg0KPiAgICAgPCEtLTxtYXh0aHJlYWRzPjI1MDwvbWF4dGhyZWFk
cz4tLT4NCj4NCj4gICAgIDwhLS0NCj4gICAgICAgICAgRXh0cmFjdCB3YXIgZmlsZXMNCj4NCj4g
ICAgICAgICAgRGVmaW5lIGlmIEpldHR5IG1hbmFnZWQgV2ViIEFwcGxpY2F0aW9uIEFyY2hpdmVz
IHNob3VsZCBiZQ0KZXh0cmFjdGVkLg0KPiBUaGUgZGVmYXVsdCBpcyB0cnVlLg0KPiAgICAgIC0t
Pg0KPiAgICAgPCEtLTxleHRyYWN0LXdhcj50cnVlPC9leHRyYWN0LXdhcj4tLT4NCj4NCj4gICAg
IDwhLS0NCj4gICAgICAgICAgSmV0dHkncyBob21lIGRpcmVjdG9yeQ0KPg0KPiAgICAgICAgICBD
b25maWd1cmUgSmV0dHkncyBob21lIGRpcmVjdG9yeS4gIFRoaXMgaXMgdXNlZnVsIGlmIEpldHR5
J3MNCm9yaWdpbmFsDQo+ICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHVzZWQuIElm
IHRoZSB2YWx1ZSBiZWdpbnMgd2l0aA0KIiR7YXBwLWhvbWV9IiwNCj4gICAgICAgICAgaXQgd2ls
bCBiZSBwcmVmaXhlZCB3aXRoIHRoaXMgY29tcG9uZW50cydzIGhvbWUgZGlyZWN0b3J5Lg0KPiAg
ICAgIC0tPg0KPiAgICAgPCEtLTxqZXR0eS1ob21lPiR7YXBwLWhvbWV9PC9qZXR0eS1ob21lPi0t
Pg0KPg0KPiAgICAgPCEtLQ0KPiAgICAgICAgICBKZXR0eSdzIGNvbmZpZ3VyYXRpb24gZmlsZQ0K
Pg0KPiAgICAgICAgICBJbmNsdWRlIGFuIGV4dGVybmFsIEpldHR5IGNvbmZpZ3VyYXRpb24gZmls
ZS4gVGhpcyBmaWxlIG11c3QNCmZvbGxvdw0KPiAgICAgICAgICBKZXR0eSdzIG93biBjb25maWd1
cmF0aW9uIGZvcm1hdC4gSWYgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZQ0KYmVnaW5zIHdpdGgNCj4g
ICAgICAgICAgIiR7YXBwLWhvbWV9IiwgaXQgd2lsbCBiZSBwcmVmaXhlZCB3aXRoIHRoaXMgY29t
cG9uZW50J3MgaG9tZQ0KZGlyZWN0b3J5Lg0KPiAgICAgICAgICBOb3RlIHRoYXQgd2ViIGFyY2hp
dmVzIGFuZCBhcmNoaXZlIGRpcmVjdG9yaWVzIGRlZmluZWQgaW4gSmV0dHkncw0Kb3duDQo+ICAg
ICAgICAgIGNvbmZpZ3VyYXRpb24gd2lsbCBub3QgYmUgaGFuZGxlZCBieSBKZXJ2bGV0Lg0KPiAg
ICAgIC0tPg0KPg0KPCEtLTxqZXR0eS1jb25maWctZmlsZT4ke2FwcC1ob21lfS9ldGMvamV0dHku
eG1sPC9qZXR0eS1jb25maWctZmlsZT4tLT4NCj4NCj4gICAgIDwhLS0NCj4gICAgICAgICAgSmV0
dHkncyBjb25maWd1cmF0aW9uDQo+DQo+ICAgICAgICAgIElmIG5vIGpldHR5LWNvbmZpZy1maWxl
IGVsZW1lbnQgZXhpc3RzLCBKZXR0eSBjYW4gYmUgY29uZmlndXJlZA0Kd2l0aA0KPiAgICAgICAg
ICBhbiBleHRlcm5hbCBjb25maWd1cmF0aW9uIGluc2lkZSB0aGUgZm9sbG93aW5nIGVsZW1lbnQu
IE5vdGUgdGhhdA0KdGhlDQo+ICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYWx3YXlzIGJlZ2lucyB3
aXRoIGEgPENvbmZpZ3VyZT4gZWxlbWVudCBhbmQgbXVzdA0KZm9sbG93DQo+ICAgICAgICAgIEpl
dHR5J3Mgb3duIGNvbmZpZ3VyYXRpb24gZm9ybWF0LiBJbiBjYXNlIGl0IGluY2x1ZGVzIG5lc3Rl
ZCBYTUwNCmRhdGENCj4gICAgICAgICAgeW91IHdpbGwgaGF2ZSB0byB3cmFwIHRoZSBjb25maWd1
cmF0aW9uIHdpdGhpbiBhIDwhW0NEQVRBWw0KLi4uLi4gXV0+DQo+ICAgICAgICAgIGVsZW1lbnQu
IEFsc28gbm90ZSB0aGF0IHdlYiBhcmNoaXZlcyBhbmQgYXJjaGl2ZSBkaXJlY3Rvcmllcw0KZGVm
aW5lZA0KPiAgICAgICAgICBpbiBKZXR0eSdzIG93biBjb25maWd1cmF0aW9uIHdpbGwgbm90IGJl
IGhhbmRsZWQgYnkgSmVydmxldC4NCj4gICAgICAtLT4NCj4gICAgIDwhLS08amV0dHktY29uZmln
PjwvamV0dHktY29uZmlnPi0tPg0KPiAgIDwvamVydmxldC1qZXR0eT4NCj4gPC9jb25maWc+DQo+
DQoNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KDQoNCj4gSW5kZXg6DQpzYW5kYm94L2pl
cnZsZXQvamVydmxldC1qZXR0eS9zcmMvamF2YS9vcmcvamNvbXBvbmVudC9qZXJ2bGV0L2Jsb2Nr
cy9qZXR0eS9QDQppY29KZXR0eUplcnZsZXQuamF2YQ0KPiA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+IFJDUyBmaWxl
Og0KL2N2c3Jvb3Qvc3BpY2Uvc3BpY2Uvc2FuZGJveC9qZXJ2bGV0L2plcnZsZXQtamV0dHkvc3Jj
L2phdmEvb3JnL2pjb21wb25lbnQvag0KZXJ2bGV0L2Jsb2Nrcy9qZXR0eS9QaWNvSmV0dHlKZXJ2
bGV0LmphdmEsdg0KPiByZXRyaWV2aW5nIHJldmlzaW9uIDEuMw0KPiBkaWZmIC11IC1yMS4zIFBp
Y29KZXR0eUplcnZsZXQuamF2YQ0KPiAtLS0NCnNhbmRib3gvamVydmxldC9qZXJ2bGV0LWpldHR5
L3NyYy9qYXZhL29yZy9qY29tcG9uZW50L2plcnZsZXQvYmxvY2tzL2pldHR5L1ANCmljb0pldHR5
SmVydmxldC5qYXZhIDYgTm92IDIwMDMgMjI6MDY6MDMgLTAwMDAgMS4zDQo+ICsrKw0Kc2FuZGJv
eC9qZXJ2bGV0L2plcnZsZXQtamV0dHkvc3JjL2phdmEvb3JnL2pjb21wb25lbnQvamVydmxldC9i
bG9ja3MvamV0dHkvUA0KaWNvSmV0dHlKZXJ2bGV0LmphdmEgMTEgTm92IDIwMDMgMDY6Mzk6NDcg
LTAwMDANCj4gQEAgLTkzLDcgKzkzLDcgQEANCj4gICAgICBwdWJsaWMgUGljb0pldHR5SmVydmxl
dChKZXJ2bGV0Q29uZmlnIGNvbmZpZywgSmVydmxldE1vbml0b3IgbW9uaXRvciwNCk11dGFibGVQ
aWNvQ29udGFpbmVyIHBhcmVudENvbnRhaW5lciwNCj4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGaWxlIGFwcFJvb3REaXIsIFJlcXVlc3RMb2dnZXIgcmVxdWVzdExvZ2dlciwNCj4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dTaW5rIGxvZ1NpbmspIHRocm93cyBVbmtub3du
SG9zdEV4Y2VwdGlvbg0Kew0KPiAtICAgICAgICBzdXBlci5jb25maWcgPSBjb25maWc7DQo+ICsg
ICAgICAgIHN1cGVyLm1fY29uZmlnID0gY29uZmlnOw0KPiAgICAgICAgICB0aGlzLm1vbml0b3Ig
PSBtb25pdG9yOw0KPiAgICAgICAgICB0aGlzLmFwcFJvb3REaXIgPSBhcHBSb290RGlyOw0KPiAg
ICAgICAgICB0aGlzLmxvZ1NpbmsgPSBsb2dTaW5rOw0KPiBAQCAtMTQ2LDcgKzE0Niw3IEBADQo+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXRoVG9XZWJBcHBGb2xkZXIsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqZXJ2bGV0Q29udGV4dCwNCj4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcFJvb3REaXIsDQo+IC0NCmNv
bmZpZy5nZXRFeHRyYWN0V2FyRmlsZSgpICk7DQo+ICsNCm1fY29uZmlnLmdldEV4dHJhY3RXYXJG
aWxlKCkgKTsNCj4gICAgICAgICAgICAgIG1fd2ViY29udGV4dHMucHV0KCBjb250ZXh0LCBob2xk
ZXIgKTsNCj4gICAgICAgICAgfQ0KPiAgICAgICAgICBjYXRjaCggRXhjZXB0aW9uIGUgKQ0KPiBA
QCAtMjY2LDIwICsyNjYsMTcgQEANCj4NCj4gICAgICAgICAgLy9TZXQgdGhlIGNvbnRleHQgY2xh
c3Nsb2FkZXIgYmVjYXVzZSB0aGUgY3VycmVudCBjbGFzc2xvYWRlcg0Kd2lsbCBiZSB0aGF0IG9m
IHRoZQ0KPiAgICAgICAgICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xv
YWRlcigNCmdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKSApOw0KPiAtDQo+ICAgICAgICAgIHRy
eQ0KPiAgICAgICAgICB7DQo+IC0gICAgICAgICAgICBtX3NlcnZlci5hZGRDb250ZXh0KCBjb25m
aWcuZ2V0SG9zdE5hbWUoKSwgaG9sZGVyLmNyZWF0ZSgpICk7DQo+IC0NCj4gLSAgICAgICAgICAg
IG1vbml0b3IuZGVwbG95aW5nQ29udGV4dCh0aGlzLmdldENsYXNzKCksIGNvbnRleHQsDQpob2xk
ZXIuZ2V0V2ViYXBwVXJsKCksIGNvbmZpZy5nZXRIb3N0TmFtZSgpKTsNCj4gLQ0KPiArICAgICAg
ICAgICAgbV9zZXJ2ZXIuYWRkQ29udGV4dCggbV9jb25maWcuZ2V0SG9zdE5hbWUoKSwNCmhvbGRl
ci5jcmVhdGUoKSApOw0KPiArICAgICAgICAgICAgbW9uaXRvci5kZXBsb3lpbmdDb250ZXh0KCB0
aGlzLmdldENsYXNzKCksIGNvbnRleHQsDQpob2xkZXIuZ2V0V2ViYXBwVXJsKCksDQo+ICsgICAg
ICAgICAgICAgIG1fY29uZmlnLmdldEhvc3ROYW1lKCkgKTsNCj4gICAgICAgICAgICAgIGhvbGRl
ci5zdGFydCgpOw0KPiAgICAgICAgICB9DQo+ICAgICAgICAgIGNhdGNoKCBFeGNlcHRpb24gZSAp
DQo+ICAgICAgICAgIHsNCj4gLQ0KPiAtICAgICAgICAgICAgbW9uaXRvci5kZXBsb3lpbmdFeGNl
cHRpb24odGhpcy5nZXRDbGFzcygpLCBjb250ZXh0LA0KaG9sZGVyLmdldFdlYmFwcFVybCgpLCBj
b25maWcuZ2V0SG9zdE5hbWUoKSwgZSk7DQo+IC0NCj4gKyAgICAgICAgICAgIG1vbml0b3IuZGVw
bG95aW5nRXhjZXB0aW9uKHRoaXMuZ2V0Q2xhc3MoKSwgY29udGV4dCwNCmhvbGRlci5nZXRXZWJh
cHBVcmwoKSwNCj4gKyAgICAgICAgICAgICAgbV9jb25maWcuZ2V0SG9zdE5hbWUoKSwgZSk7DQo+
ICAgICAgICAgIH0NCj4gICAgICB9DQo+DQo+DQoNCg==


-------------------------------------------------------
This SF.Net email sponsored by: ApacheCon 2003,
16-19 November in Las Vegas. Learn firsthand the latest
developments in Apache, PHP, Perl, XML, Java, MySQL,
WebDAV, and more! http://www.apachecon.com/