AW: JPA with pure hibernate
"Jochimsen, Janko" <[email protected]>
| Newsgroups | gmane.comp.java.tapestry.user |
|---|---|
| Message-ID | <BAF1D8ED0A2C3B4AB4BD9094DA9995C702634B35A9@EX10MBOX1F.hosting.inetserver.de> |
SGV5IERtaXRyeSwNCg0KdGhhbmsgeW91IGZvciB5b3VyIGlucHV0IGFuZCB0aGUgZGlyZWN0aW9u LiANCg0KU2FkbHkgaXQgZG9lc27igJl0IHNvbHZlcyB0aGUgcHJvYmxlbSBidXQgaXQgc2VlbXMg d2UgYXJlIGdldHRpbmcgY2xvc2VyLg0KDQpGaXJzdCBvZiBhbGwgdGhlcmUgc2VlbXMgdG8gYmUg YSDigJhwcm9ibGVt4oCZIGluIHlvdXIgcGVyc2lzdGVuY2UueG1sLiBUaGUgdmVyc2lvbiB5b3Ug c2VuZCBtZSBzdGFydHMgd2l0aCANCg0KPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRG LTgiID8+DQo8cGVyc2lzdGVuY2UgeG1sbnM9Imh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL3Bl cnNpc3RlbmNlIg0KICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1M U2NoZW1hLWluc3RhbmNlIg0KICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9qYXZh LnN1bi5jb20veG1sL25zL3BlcnNpc3RlbmNlDQogICAgICAgIGh0dHA6Ly94bWxucy5qY3Aub3Jn L3htbC9ucy9wZXJzaXN0ZW5jZS9wZXJzaXN0ZW5jZV8yXzEueHNkIg0KdmVyc2lvbj0iMS4wIj4N Cg0KVGhlIGxhc3QgbGluZSBtYWtlIG15IGVjbGlwc2UgY29tcGxhaW4gYW5kIEkgZ29vZ2xlZCB0 aGUgcHJvYmxlbS4gSXQgc2VlbXMgdGhhdCB0aGUgbGFzdCBsaW5lIG11c3QgcmVhZDoNCiB2ZXJz aW9uPSIyLjEiPg0Kc2VlOiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIwODE4 NzM3L2Nhbi1ub3QtZmluZC10aGUtZGVjbGFyYXRpb24tb2YtZWxlbWVudC1wZXJzaXN0ZW5jZQ0K DQpUaGUgbmV4dCBwcm9ibGVtIGlzIHRoZSANCjxtYXBwaW5nLWZpbGU+b3JtLnhtbDwvbWFwcGlu Zy1maWxlPg0KDQpNeSBlY2xpcHNlIGNvbXBsYWlucyB0aGF0IA0KdmMtY29tcGxleC10eXBlLjIu NC5hOiBJbnZhbGlkIGNvbnRlbnQgd2FzIGZvdW5kIHN0YXJ0aW5nIHdpdGggZWxlbWVudCAnbWFw cGluZy1maWxlJy4gT25lIG9mICd7Imh0dHA6Ly94bWxucy5qY3Aub3JnL3htbC9ucy9wZXJzaXN0 ZW5jZSI6c2hhcmVkLWNhY2hlLQ0KIG1vZGUsICJodHRwOi8veG1sbnMuamNwLm9yZy94bWwvbnMv cGVyc2lzdGVuY2UiOnZhbGlkYXRpb24tbW9kZSwgImh0dHA6Ly94bWxucy5qY3Aub3JnL3htbC9u cy9wZXJzaXN0ZW5jZSI6cHJvcGVydGllc30nIGlzIGV4cGVjdGVkLg0KDQpJIGRpZG7igJl0IHJl YWxseSBmb3VuZCBhIHNvbHV0aW9uIGZvciB0aGlzIHByb2JsZW0gYXQgYSBmaXJzdCBhcHByb2Fj aC4gVGhlcmVmb3IgSSB0cnkgdG8gb21pdCB0aGlzIGxpbmUuIElmIEkgZG8gdGhpcyBhbmQgaW5j bHVkZSB0aGUgDQoNCmNvbmZpZ3VyZVBlcnNpc3RlbmNlVW5pdEluZm9zKE1hcHBlZENvbmZpZ3Vy YXRpb248U3RyaW5nLFBlcnNpc3RlbmNlVW5pdENvbmZpZ3VyZXI+IGNmZykNCg0KbWV0aG9kLiBJ IHN0aWxsIGdldCBhbm90aGVyIGJ1dCBtb3JlIGNvbmNyZXRlIGVycm9yIG1lc3NhZ2UuIA0KDQoN Ck5vdyB0aGUgb3V0cHV0IHNheXM6DQogDQpbSU5GT10gdXRpbC5Mb2dIZWxwZXIgSEhIMDAwMjA0 OiBQcm9jZXNzaW5nIFBlcnNpc3RlbmNlVW5pdEluZm8gWw0KCW5hbWU6IERlbW9Vbml0DQoJLi4u XQ0KW0lORk9dIGhpYmVybmF0ZS5WZXJzaW9uIEhISDAwMDQxMjogSGliZXJuYXRlIENvcmUgezUu Mi4yLkZpbmFsfQ0KW0lORk9dIGNmZy5FbnZpcm9ubWVudCBISEgwMDAyMDY6IGhpYmVybmF0ZS5w cm9wZXJ0aWVzIG5vdCBmb3VuZA0KW0lORk9dIGNmZy5FbnZpcm9ubWVudCBISEgwMDAwMjE6IEJ5 dGVjb2RlIHByb3ZpZGVyIG5hbWUgOiBqYXZhc3Npc3QNCltJTkZPXSBjb21tb24uVmVyc2lvbiBI Q0FOTjAwMDAwMTogSGliZXJuYXRlIENvbW1vbnMgQW5ub3RhdGlvbnMgezUuMC4xLkZpbmFsfQ0K W1dBUk5dIGludGVybmFsLkNvbm5lY3Rpb25Qcm92aWRlckluaXRpYXRvciBISEgwMDAxODE6IE5v IGFwcHJvcHJpYXRlIGNvbm5lY3Rpb24gcHJvdmlkZXIgZW5jb3VudGVyZWQsIGFzc3VtaW5nIGFw cGxpY2F0aW9uIHdpbGwgYmUgc3VwcGx5aW5nIGNvbm5lY3Rpb25zDQpbV0FSTl0gaW50ZXJuYWwu SmRiY0Vudmlyb25tZW50SW5pdGlhdG9yIEhISDAwMDM0MjogQ291bGQgbm90IG9idGFpbiBjb25u ZWN0aW9uIHRvIHF1ZXJ5IG1ldGFkYXRhIDogVGhlIGFwcGxpY2F0aW9uIG11c3Qgc3VwcGx5IEpE QkMgY29ubmVjdGlvbnMNCltFUlJPUl0gaW9jLlJlZ2lzdHJ5IG9yZy5oaWJlcm5hdGUuc2Vydmlj ZS5zcGkuU2VydmljZUV4Y2VwdGlvbjogVW5hYmxlIHRvIGNyZWF0ZSByZXF1ZXN0ZWQgc2Vydmlj ZSBbb3JnLmhpYmVybmF0ZS5lbmdpbmUuamRiYy5lbnYuc3BpLkpkYmNFbnZpcm9ubWVudF0NCltF UlJPUl0gaW9jLlJlZ2lzdHJ5IE9wZXJhdGlvbnMgdHJhY2U6DQpbRVJST1JdIGlvYy5SZWdpc3Ry eSBbIDFdIEludm9raW5nIHN0YXJ0dXAgbWV0aG9kIG9yZy5hcGFjaGUudGFwZXN0cnk1LmpwYS5t b2R1bGVzLkpwYU1vZHVsZS5zdGFydHVwRWFybHkoRW50aXR5TWFuYWdlck1hbmFnZXIsIGJvb2xl YW4pLg0KW0VSUk9SXSBmYWlsZWQgYXBwDQoNClRoZSBmaXJzdCBsaW5lcyBzdWdnZXN0IHRoYXQg bm93IHRoZSBzZXR1cCBzZWVtcyB0byB3b3JrLiBCdXQgdGhlbiB0aGUgdGhlIGpkYmMgY29ubmVj dGlvbiBmYWlscy4gV2VpcmQgDQoNClRoYW5rcyBhbnlob3cgZm9yIHRoZSBpbnB1dC4gDQoNCg0K DQpKYW5rbw0KDQotLS0tLVVyc3Byw7xuZ2xpY2hlIE5hY2hyaWNodC0tLS0tDQpWb246IERtaXRy eSBHdXNldiBbbWFpbHRvOmRtaXRyeS5ndXNldkBnbWFpbC5jb21dIA0KR2VzZW5kZXQ6IE1pdHR3 b2NoLCAxOC4gSmFudWFyIDIwMTcgMTM6MzkNCkFuOiBUYXBlc3RyeSB1c2VycyA8dXNlcnNAdGFw ZXN0cnkuYXBhY2hlLm9yZz4NCkJldHJlZmY6IFJlOiBKUEEgd2l0aCBwdXJlIGhpYmVybmF0ZQ0K DQpIZXksDQoNCnRhcGVzdHJ5LWpwYSBzdXBwb3J0cyBsYXRlc3QgSGliZXJuYXRlIDUueCwgYXQg bGVhc3Qgd2UgaGF2ZSBpdCBydW5uaW5nIGluIHByb2R1Y3Rpb24gd2l0aCA1LjIuNS5GaW5hbCBZ b3UgZG9uJ3QgaGF2ZSB0byBwcm92aWRlIGhpYmVybmF0ZS5jZmcueG1sLCBhbHRob3VnaCB0aGUg c2V0dGluZ3MgeW91IGhhdmUgaW4geW91ciBwZXJzaXN0ZW5jZS54bWwgYXJlIG5vdCBjb3JyZWN0 IGZvciA1LjIueCBIaWJlcm5hdGUNCg0KSGVyZSdzIGEgd29ya2luZyBwZXJzaXN0ZW5jZS54bWwg dGhhdCB3ZSB1c2UgaW4gb3VyIGFwcHM6DQoNCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9 IlVURi04IiA/Pg0KPHBlcnNpc3RlbmNlIHhtbG5zPSJodHRwOi8vamF2YS5zdW4uY29tL3htbC9u cy9wZXJzaXN0ZW5jZSINCiAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAx L1hNTFNjaGVtYS1pbnN0YW5jZSINCiAgICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8v amF2YS5zdW4uY29tL3htbC9ucy9wZXJzaXN0ZW5jZQ0KICAgICAgICBodHRwOi8veG1sbnMuamNw Lm9yZy94bWwvbnMvcGVyc2lzdGVuY2UvcGVyc2lzdGVuY2VfMl8xLnhzZCINCnZlcnNpb249IjEu MCI+DQoNCiAgICA8cGVyc2lzdGVuY2UtdW5pdCBuYW1lPSJteS1wdSIgdHJhbnNhY3Rpb24tdHlw ZT0iUkVTT1VSQ0VfTE9DQUwiPg0KICAgICAgICA8cHJvdmlkZXI+b3JnLmhpYmVybmF0ZS5qcGEu SGliZXJuYXRlUGVyc2lzdGVuY2VQcm92aWRlcjwvcHJvdmlkZXI+DQogICAgICAgIDxleGNsdWRl LXVubGlzdGVkLWNsYXNzZXM+dHJ1ZTwvZXhjbHVkZS11bmxpc3RlZC1jbGFzc2VzPg0KICAgICAg ICA8bWFwcGluZy1maWxlPk1FVEEtSU5GL29ybS54bWw8L21hcHBpbmctZmlsZT4NCiAgICAgICAg PHByb3BlcnRpZXM+DQogICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iaGliZXJuYXRlLmhpa2Fy aS5kYXRhU291cmNlLnVybCINCnZhbHVlPSJqZGJjOnBvc3RncmVzcWw6Ly9sb2NhbGhvc3QvZGJu YW1lIi8+DQogICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iaGliZXJuYXRlLmhpa2FyaS5kYXRh U291cmNlLnVzZXIiIHZhbHVlPSJ1c2VybmFtZSIvPg0KICAgICAgICAgICAgPHByb3BlcnR5IG5h bWU9ImhpYmVybmF0ZS5oaWthcmkuZGF0YVNvdXJjZS5wYXNzd29yZCINCnZhbHVlPSJwYXNzd29y ZCIvPg0KICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhpYmVybmF0ZS5oYm0yZGRsLmF1dG8i IHZhbHVlPSJ2YWxpZGF0ZSIvPg0KICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhpYmVybmF0 ZS5zaG93X3NxbCIgdmFsdWU9ImZhbHNlIiAvPg0KICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9 ImhpYmVybmF0ZS5jb25uZWN0aW9uLnByb3ZpZGVyX2NsYXNzIg0KdmFsdWU9Im9yZy5oaWJlcm5h dGUuaGlrYXJpY3AuaW50ZXJuYWwuSGlrYXJpQ1BDb25uZWN0aW9uUHJvdmlkZXIiLz4NCiAgICAg ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoaWJlcm5hdGUuYXV0aCIgdmFsdWU9IkNvbnRhaW5lciIg Lz4NCiAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoaWJlcm5hdGUuaGlrYXJpLmNvbm5lY3Rp b25UaW1lb3V0Ig0KdmFsdWU9IjMwMDAwMCIgLz4NCiAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJoaWJlcm5hdGUuaGlrYXJpLm1heGltdW1Qb29sU2l6ZSIgdmFsdWU9IjUwIiAvPg0KICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9ImhpYmVybmF0ZS5oaWthcmkubWluaW11bUlkbGUiIHZhbHVl PSI1IiAvPg0KICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhpYmVybmF0ZS5oaWthcmkuZGF0 YVNvdXJjZUNsYXNzTmFtZSINCnZhbHVlPSJvcmcucG9zdGdyZXNxbC5kcy5QR1NpbXBsZURhdGFT b3VyY2UiIC8+DQogICAgICAgIDwvcHJvcGVydGllcz4NCiAgICA8L3BlcnNpc3RlbmNlLXVuaXQ+ DQo8L3BlcnNpc3RlbmNlPg0KDQpBYm92ZSBjb25maWd1cmF0aW9uIHVzZXMgSGlrYXJpQ1AgZm9y IGNvbm5lY3Rpb24gcG9vbGluZy4NCg0KU29tZSByZWxldmFudCBkZXBlbmRlbmNpZXM6DQoNCmNv bXBpbGUgKCJvcmcuaGliZXJuYXRlOmhpYmVybmF0ZS1jb3JlOjUuMi41LkZpbmFsIikgew0KICAg IGV4Y2x1ZGUgZ3JvdXA6ICdjb21tb25zLWNvbGxlY3Rpb25zJw0KDQp9DQoNCmNvbXBpbGUgKCJv cmcuaGliZXJuYXRlOmhpYmVybmF0ZS1oaWthcmljcDo1LjIuNS5GaW5hbCIpIHsNCiAgICBleGNs dWRlIGdyb3VwOiAiY29tLnpheHhlciIsIG1vZHVsZTogIkhpa2FyaUNQLWphdmE2Ig0KfQ0KDQpj b21waWxlICdjb20uemF4eGVyOkhpa2FyaUNQOjIuNS4xJw0KDQpjb21waWxlICJvcmcucG9zdGdy ZXNxbDpwb3N0Z3Jlc3FsOjkuNC4xMjEyIg0KDQoNClRoZSBmaWxlIE1FVEEtSU5GL29ybS54bWwg aGFzIG5vIGRlY2xhcmF0aW9ucywgbm90IHN1cmUgaWYgaXQncyBzdGlsbCBuZWNlc3NhcnksIGJ1 dCBzb21lIGVhcmxpZXIgdmVyc2lvbnMgb2YgSGliZXJuYXRlIGNvbXBsYWluZWQgd2l0aG91dCBp dDoNCg0KPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxlbnRpdHktbWFw cGluZ3MgeG1sbnM9Imh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL3BlcnNpc3RlbmNlL29ybSIN CiAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNl Ig0KICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvcGVy c2lzdGVuY2Uvb3JtDQpodHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9wZXJzaXN0ZW5jZS9vcm1f MV8wLnhzZCINCiAgICB2ZXJzaW9uPSIyLjAiPg0KPC9lbnRpdHktbWFwcGluZ3M+DQoNCg0KSG9w ZSB0aGlzIGhlbHBzLg0KDQpPbiBXZWQsIEphbiAxOCwgMjAxNyBhdCAyOjE5IFBNLCBKb2NoaW1z ZW4sIEphbmtvIDwgamFua28uam9jaGltc2VuQHVyaW9zLWJlcmF0dW5nLmRlPiB3cm90ZToNCg0K Pg0KPiBIaSwNCj4NCj4gSSBhbSB0cnlpbmcgdG8gc3dpdGNoIG15IGFwcGxpY2F0aW9uIGZyb20g YSBzdGFuZGFyZCANCj4gdGFwZXN0cnktaGliZXJuYXRlIHZlcnNpb24gdG8gYSB0YXBlc3RyeS1q cGEgdmVyc2lvbi4gSSB3b3VsZCBsaWtlIHRvIA0KPiBoYXZlIGEgcHVyZSBoaWJlcm5hdGUgc29s dXRpb24gYW5kIHNraXAgYW55IGVjbGlwc2VsaW5rIGRlcGVuZGVuY3kuDQo+DQo+IEFmdGVyIHNw ZW5kaW5nIHNvbWUgdGltZSB3aXRoDQo+ICAgICAgICAgICAgICAgICBodHRwOi8vdGFwZXN0cnku YXBhY2hlLm9yZy9pbnRlZ3JhdGluZy13aXRoLWpwYS5odG1sDQo+IEkgYW0gbW9yZSBvciBsZXNz IGxvc3QgYXMgdGhlIGRvY3VtZW50YXRpb24gaXMgbm90IHdvcmtpbmcgYW5kIHRoZSANCj4gY29t bWVudHMgYW5kIHJlbWFya3MgZnJvbSBiYXNpbGVDaGFuZGVzcmlzIGFyZSBub3QgcmVhbGx5IGNs ZWFyLg0KPg0KPiBBZnRlciBJIGRpc2NvdmVyZWQgdGhhdCBpdCBzZWVtcyB0byBiZSBuZWNlc3Nh cnkgdG8gcHJvdmlkZSB0aGlzIGxpbmU6DQo+ICAgIDxwcm92aWRlcj5vcmcuaGliZXJuYXRlLmVq Yi5IaWJlcm5hdGVQZXJzaXN0ZW5jZTwvcHJvdmlkZXI+DQo+IG15IHBlcnNpc3RlbmNlLnhtbCBp dHNlbGYgbG9va3MgbGlrZSB0aGlzOg0KPg0KPiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n PSJVVEYtOCI/PiA8cGVyc2lzdGVuY2UgDQo+IHhtbG5zPSJodHRwOi8vamF2YS5zdW4uY29tL3ht bC9ucy9wZXJzaXN0ZW5jZSIgdmVyc2lvbj0iMi4wIj4NCj4gICAgPHBlcnNpc3RlbmNlLXVuaXQg bmFtZT0iRGVtb1VuaXQiIHRyYW5zYWN0aW9uLXR5cGU9IlJFU09VUkNFX0xPQ0FMIj4NCj4gICAg PHByb3ZpZGVyPm9yZy5oaWJlcm5hdGUuZWpiLkhpYmVybmF0ZVBlcnNpc3RlbmNlPC9wcm92aWRl cj4NCj4gICAgICAgIDxwcm9wZXJ0aWVzPg0KPiAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoaWJl cm5hdGUuY29ubmVjdGlvbi5kcml2ZXJfY2xhc3MiPm9yZy5wb3N0Z3Jlc3FsLg0KPiBEcml2ZXI8 L3Byb3BlcnR5Pg0KPiAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoaWJlcm5hdGUuY29ubmVjdGlv bi51cmwiPmpkYmM6cG9zdGdyZXNxbDovLw0KPiBsb2NhbGhvc3Q6NTQzMi94eHgtdGVzdDwvcHJv cGVydHk+DQo+ICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhpYmVybmF0ZS5jb25uZWN0aW9uLnVz ZXJuYW1lIj5YWDwvcHJvcGVydHk+DQo+ICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhpYmVybmF0 ZS5jb25uZWN0aW9uLnBhc3N3b3JkIj5YWFg8L3Byb3BlcnR5Pg0KPiAgICAgICAgIDxwcm9wZXJ0 eSBuYW1lPSJoaWJlcm5hdGUuZGlhbGVjdCI+b3JnLmhpYmVybmF0ZS5kaWFsZWN0Lg0KPiBQb3N0 Z3JlU1FMRGlhbGVjdDwvcHJvcGVydHk+DQo+ICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhpYmVy bmF0ZS5oYm0yZGRsLmF1dG8iIHZhbHVlPSJjcmVhdGUtZHJvcCIvPg0KPiAgICAgICA8L3Byb3Bl cnRpZXM+DQo+ICAgIDwvcGVyc2lzdGVuY2UtdW5pdD4NCj4gPC9wZXJzaXN0ZW5jZT4NCj4NCj4g QXMgaXQgaXMgbm90IHN0YXRlZCBpbiB0aGUgZ3VpZGUgSSBkbyBub3QgcHJvdmlkZSBhIGhpYmVy bmF0ZS5jZmcueG1sIGZpbGUuDQo+DQo+DQo+IFRoZSByZWxldmFudCBwYXJ0IG9mIHRoZSBQT00g ZmlsZSByZWFkczoNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZXBlbmRlbmN5 Pg0KPg0KPiAgPGdyb3VwSWQ+b3JnLmFwYWNoZS50YXBlc3RyeTwvZ3JvdXBJZD4NCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCj4gPGFydGlmYWN0SWQ+ dGFwZXN0cnktanBhPC8NCj4gYXJ0aWZhY3RJZD4NCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICANCj4gPHZlcnNpb24+JHt0YXBlc3RyeS1yZWxlYXNlLSB2 ZXJzaW9ufTwvdmVyc2lvbj4NCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVw ZW5kZW5jeT4NCj4NCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZXBlbmRlbmN5 Pg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KPiA8 Z3JvdXBJZD5vcmcuaGliZXJuYXRlPC8NCj4gZ3JvdXBJZD4NCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5oaWJlcm5hdGUtIA0KPiBl bnRpdHltYW5hZ2VyPC9hcnRpZmFjdElkPg0KPg0KPiAgPHZlcnNpb24+JHtoaWJlcm5hdGUtdmVy c2lvbn08L3ZlcnNpb24+DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGV4Y2x1c2lvbnM+DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KPiA8ZXhjbHVzaW9uPg0KPg0KPiAgICAg IDwhLS0gb21pdCBHZXJvbmltbyBKUEEgc3BlYyB0byBhdm9pZCBjb25mbGljdCB3aXRoIEhpYmVy bmF0ZSBKUEEgDQo+IHNwZWMNCj4gLS0+DQo+DQo+ICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5n ZXJvbmltby5zcGVjczwvZ3JvdXBJZD4NCj4NCj4gICAgICA8YXJ0aWZhY3RJZD5nZXJvbmltby1q cGFfMi4wX3NwZWM8L2FydGlmYWN0SWQ+DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9uPg0KPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhjbHVzaW9ucz4NCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVwZW5kZW5jeT4NCj4NCj4NCj4gV2l0 aA0KPiAgICAgICAgICAgICAgICAgPHByb3BlcnRpZXM+DQo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8dGFwZXN0cnktcmVsZWFzZS12ZXJzaW9uPjUuNC4NCj4gMTwvdGFwZXN0cnkt cmVsZWFzZS12ZXJzaW9uPg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhpYmVy bmF0ZS12ZXJzaW9uPjQuMi42Lg0KPiBGaW5hbDwvaGliZXJuYXRlLXZlcnNpb24+DQo+ICAgICAg ICAgICAgICAgICAuLi4uDQo+DQo+ICAgICAgICAgICAgICAgICA8L3Byb3BlcnRpZXM+DQo+DQo+ IEkgdXNlIDQuMi42LkZpbmFsZSBvZiBoaWJlcm5hdGUgYXMgNC4zLjEuRmluYWwgKHdoYXQgaXMg c3RhdGVkIGFzIHRoZSANCj4gY29ycmVjdCB2ZXJzaW9uIGZvciBUYXBlc3RyeSA1LjQuIGluDQo+ ICAgICAgICAgICAgICAgICBodHRwOi8vdGFwZXN0cnkuYXBhY2hlLm9yZy9yZWxlYXNlLW5vdGVz LTU0Lmh0bWwNCj4gZ2l2ZXMgbWUgYW4gZXJyb3IuDQo+DQo+DQo+IEFwcE1vZHVsZS5qYXZhICBj b250YWluczoNCj4NCj4gICAgICAgIEBNYXRjaCgiKkRhbyIpDQo+ICAgICAgICAgICBwdWJsaWMg c3RhdGljIHZvaWQgYWR2aXNlVHJhbnNhY3Rpb25hbGx5KA0KPiAgICAgICAgICAgICAgICAgSnBh VHJhbnNhY3Rpb25BZHZpc29yIGFkdmlzb3IsDQo+ICAgICAgICAgICAgICAgICBNZXRob2RBZHZp Y2VSZWNlaXZlciByZWNlaXZlcikgew0KPg0KPiAgICAgICAgICAgICAgYWR2aXNvci5hZGRUcmFu c2FjdGlvbkNvbW1pdEFkdmljZShyZWNlaXZlcik7DQo+ICAgICAgICAgICB9DQo+DQo+DQo+IEFs dGhvdWdoIGl0IGlzIG5vdCBtZW50aW9uZWQgaW4NCj4NCj4gICAgICAgICAgICAgICAgIGh0dHA6 Ly90YXBlc3RyeS5hcGFjaGUub3JnL2ludGVncmF0aW5nLXdpdGgtanBhLmh0bWwNCj4NCj4gSSBh bHNvIGFkZGVkIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IGluIHRoZSBBcHBNb2R1bGUuamF2YSA6 DQo+DQo+ICAgICAgICAgICAgICAgICBAQ29udHJpYnV0ZShFbnRpdHlNYW5hZ2VyU291cmNlLmNs YXNzKQ0KPiAgICAgICAgICAgICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIGNvbmZpZ3VyZVBl cnNpc3RlbmNlVW5pdEluZm9zKCANCj4gTWFwcGVkQ29uZmlndXJhdGlvbjxTdHJpbmcsUGVyc2lz dGVuY2VVbml0Q29uZmlndXJlcj4gY2ZnKSB7DQo+DQo+ICAgICAgICAgICAgICAgICAgICAgICBQ ZXJzaXN0ZW5jZVVuaXRDb25maWd1cmVyIGNvbmZpZ3VyZXIgPSBuZXcNCj4gUGVyc2lzdGVuY2VV bml0Q29uZmlndXJlcigpIHsNCj4gICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lk IA0KPiBjb25maWd1cmUoVGFwZXN0cnlQZXJzaXN0ZW5jZVVuaXRJbmZvDQo+IHVuaXRJbmZvKSB7 DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdEluZm8uYWRkTWFuYWdlZENs YXNzKFVzZXIuY2xhc3MpOw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiAgICAgICAg ICAgICAgICAgICAgICB9Ow0KPiAgICAgICAgICAgICAgICAgICAgICBjZmcuYWRkKCJEZW1vVW5p dCIsIGNvbmZpZ3VyZXIpOw0KPiAgICAgICAgICAgICAgICAgICAgfQ0KPg0KPiBUaGlzIGNyYXNo ZXMgdGhlIEFwcCBvbiBzdGFydCB1cCAgd2l0aCB0aGUgZm9sbG93aW5nIEVycm9yIE1hc3NhZ2U6 DQo+IG9yZy5hcGFjaGUudGFwZXN0cnk1LmlvYy5pbnRlcm5hbC5PcGVyYXRpb25FeGNlcHRpb246 IGphdmF4LnBlcnNpc3RlbmNlLlBlcnNpc3RlbmNlRXhjZXB0aW9uOg0KPiBbUGVyc2lzdGVuY2VV bml0OiBEZW1vVW5pdF0gVW5hYmxlIHRvIGJ1aWxkIEVudGl0eU1hbmFnZXJGYWN0b3J5DQo+DQo+ IERlZXAgZG93biBpbiB0aGUgRXhjZXB0aW9uIFN0YWNrIHRoZXJlIENhdXNlZCBieTogDQo+IG9y Zy5oaWJlcm5hdGUuSGliZXJuYXRlRXhjZXB0aW9uOiBDb25uZWN0aW9uIGNhbm5vdCBiZSBudWxs IHdoZW4gDQo+ICdoaWJlcm5hdGUuZGlhbGVjdCcgbm90IHNldA0KPg0KPiBUaGlzIGlzIGFsbCBu b3QgcmVhbGx5IGhlbHBmdWwgYXQgbGVhc3QgdG8gbWUuDQo+DQo+DQo+IElmIEkgb21pdCB0aGUg c3RhdGVtZW50ICBjb25maWd1cmVQZXJzaXN0ZW5jZVVuaXRJbmZvcyAuLi4NCj4NCj4gVGhlIEFw cCBzdGFydHMuIEJ1dCBhcyBzb29uIGFzIGl0IGNhbGxzIHRoZSBlbnRpdHlNYW5hZ2VyIGluIHRo ZSANCj4gZm9sbG93aW5nIGNsYXNzIHZpYSBhZGQoVXNlciB1c2VyKTsgcHVibGljIGNsYXNzIFVz ZXJEQU9JbXBsIA0KPiBpbXBsZW1lbnRzIFVzZXJEQU8gew0KPiAgICAgICAgICAgICAgICAgQFBl cnNpc3RlbmNlQ29udGV4dCh1bml0TmFtZSA9ICJEZW1vVW5pdCIpDQo+ICAgICAgcHJpdmF0ZSBF bnRpdHlNYW5hZ2VyIGVudGl0eU1hbmFnZXI7DQo+DQo+ICAgICBAT3ZlcnJpZGUNCj4gICAgIEBQ ZXJzaXN0ZW5jZUNvbnRleHQodW5pdE5hbWUgPSAiRGVtb1VuaXQiKQ0KPiAgICAgcHVibGljIHZv aWQgYWRkKGZpbmFsIFVzZXIgdXNlcikNCj4gICAgIHsNCj4gICAgICAgICBlbnRpdHlNYW5hZ2Vy LnBlcnNpc3QodXNlcik7DQo+ICAgICB9DQo+DQo+ICAgICBAT3ZlcnJpZGUNCj4gICAgIEBTdXBw cmVzc1dhcm5pbmdzKA0KPiAgICAgeyAidW5jaGVja2VkIiB9KQ0KPiAgICAgcHVibGljIExpc3Q8 VXNlcj4gZmluZEFsbCgpDQo+ICAgICB7DQo+ICAgICAgICAgcmV0dXJuIGVudGl0eU1hbmFnZXIu Y3JlYXRlUXVlcnkoInNlbGVjdCB1IGZyb20gVXNlciB1IG9yZGVyIA0KPiBieSB1LmlkIGRlc2Mi KS5nZXRSZXN1bHRMaXN0KCk7DQo+ICAgICB9DQo+DQo+ICAgICBAT3ZlcnJpZGUNCj4gICAgIHB1 YmxpYyB2b2lkIGRlbGV0ZShmaW5hbCBVc2VyLi4uIHVzZXJzKQ0KPiAgICAgew0KPiAgICAgICAg IGZvciAoZmluYWwgVXNlciB1c2VyIDogdXNlcnMpDQo+ICAgICAgICAgICAgIGVudGl0eU1hbmFn ZXIucmVtb3ZlKHVzZXIpOw0KPiAgICAgfQ0KPg0KPiAgICAgQE92ZXJyaWRlDQo+ICAgICBwdWJs aWMgdm9pZCBkZWxldGVBbGwoKQ0KPiAgICAgew0KPiAgICAgICAgIGZvciAoZmluYWwgVXNlciB1 IDogZmluZEFsbCgpKQ0KPiAgICAgICAgIHsNCj4gICAgICAgICAgICAgZW50aXR5TWFuYWdlci5y ZW1vdmUodSk7DQo+ICAgICAgICAgfQ0KPiAgICAgfQ0KPiB9DQo+DQo+IEkgZ2V0IHRoZSBlcnJv ciBtZXNzYWdlOg0KPg0KPiBVbmFibGUgdG8gbG9jYXRlIGEgc2luZ2xlIEVudGl0eU1hbmFnZXIu IFlvdSBtdXN0IHByb3ZpZGUgLi4uDQo+DQo+DQo+IEZyb20gdGhlIGNvbW1lbnRzIGFuZCBvdGhl ciBwb3N0cyBpdCBpcyBjbGVhciB0aGF0IHRoZSBkb2N1bWVudGF0aW9uIA0KPiBpcyBvdXRkYXRl ZCBhbmQgbm90IHJlYWxseSB3b3JraW5nLiBCdXQgdGhlcmUgc2VlbXMgdG8gYmUgbm8gcmVhbGx5 IA0KPiBoZWxwZnVsIGFsdGVybmF0aXZlLiBJIHdvdWxkIGJlIHZlcnkgZ3JhdGVmdWwgaWYgc29t ZW9uZSBjb3VsZCBnaXZlIG1lIA0KPiBhIGhpbnQgd2hlcmUgdG8gbG9vayBvciBleHBsYWluIHRv IG1lIHdoYXQgaXMgZ29pbmcgb24gaGVyZS4NCj4NCj4NCj4gQ2hlZXJzDQo+DQo+IEphbmtvDQo+ DQo+DQo+DQo+DQo+DQo+DQo+DQo+DQoNCg0KLS0NCkRtaXRyeSBHdXNldg0KDQpBbmpMYWIgVGVh bQ0KaHR0cDovL2FuamxhYi5jb20NCg== DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NClRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IHVzZXJzLXVuc3Vi c2NyaWJlQHRhcGVzdHJ5LmFwYWNoZS5vcmcNCkZvciBhZGRpdGlvbmFsIGNvbW1hbmRzLCBl LW1haWw6IHVzZXJzLWhlbHBAdGFwZXN0cnkuYXBhY2hlLm9yZw0K