PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IS0tCgogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlCiBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGgKIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4KIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIFlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wCiAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aAogdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAtLT4KPHByb2plY3QgbmFtZT0iTWF2ZW4iIHhtbG5zPSJodHRwczovL21hdmVuLmFwYWNoZS5vcmcveHNkL2RlY29yYXRpb24tMS43LjAueHNkIj4KCiAgICA8IS0tIFVzZSB0aGUgbmljZXIgbG9va2luZyBmbHVpZG8gc2tpbiBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IC0tPgogICAgPHNraW4+CiAgICAgICAgPGdyb3VwSWQ+bHQudmVseWtpcy5tYXZlbi5za2luczwvZ3JvdXBJZD4KICAgICAgICA8YXJ0aWZhY3RJZD5yZWZsb3ctbWF2ZW4tc2tpbjwvYXJ0aWZhY3RJZD4KICAgICAgICA8dmVyc2lvbj4xLjEuMTwvdmVyc2lvbj4KICAgIDwvc2tpbj4KCiAgICA8IS0tCiAgICAgICAgRGV0YWlscyBvbiBob3cgdG8gY29uZmlndXJlIHRoZSByZWZsb3cgc2tpbjoKICAgICAgICBodHRwOi8vYW5kcml1c3ZlbHlraXMuZ2l0aHViLmlvL3JlZmxvdy1tYXZlbi1za2luL3NraW4vCiAgICAtLT4KICAgIDxjdXN0b20+CiAgICAgICAgPHJlZmxvd1NraW4+CiAgICAgICAgICAgIDx0aGVtZT5zaXRlPC90aGVtZT4KICAgICAgICAgICAgPHRpdGxlVGVtcGxhdGU+QXBhY2hlIEZsZXiuIC0gJTIkczwvdGl0bGVUZW1wbGF0ZT4KICAgICAgICAgICAgPGJyZWFkY3J1bWJzPmZhbHNlPC9icmVhZGNydW1icz4KICAgICAgICAgICAgPGhpZ2hsaWdodEpzPnRydWU8L2hpZ2hsaWdodEpzPgogICAgICAgIDwvcmVmbG93U2tpbj4KICAgIDwvY3VzdG9tPgoKICAgIDxiYW5uZXJMZWZ0PgogICAgICAgIDxuYW1lPkFwYWNoZSBGbGV4PC9uYW1lPgogICAgICAgIDxzcmM+aW1nL2xvZ28tZmxleC5wbmc8L3NyYz4KICAgICAgICA8aHJlZj5odHRwOi8vZmxleC5hcGFjaGUub3JnLzwvaHJlZj4KICAgIDwvYmFubmVyTGVmdD4KCiAgICA8YmFubmVyUmlnaHQ+CiAgICAgICAgPG5hbWU+QW4gQXBhY2hlIFByb2plY3Q8L25hbWU+CiAgICAgICAgPHNyYz5pbWcvbG9nby1hc2YucG5nPC9zcmM+CiAgICAgICAgPGhyZWY+aHR0cDovL3d3dy5hcGFjaGUub3JnPC9ocmVmPgogICAgPC9iYW5uZXJSaWdodD4KCiAgICA8Ym9keT4KICAgICAgICA8aGVhZD4KICAgICAgICAgICAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9ImltZy9mYXZpY29uLmljbyIvPgogICAgICAgICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9ImltZy9hcHBsZS10b3VjaC1pY29uLTYwLnBuZyIvPgogICAgICAgICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIHNpemVzPSI3Nng3NiIgaHJlZj0iaW1nL2FwcGxlLXRvdWNoLWljb24tNzYucG5nIi8+CiAgICAgICAgICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjEyMHgxMjAiIGhyZWY9ImltZy9hcHBsZS10b3VjaC1pY29uLTEyMC5wbmciLz4KICAgICAgICAgICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTUyeDE1MiIgaHJlZj0iaW1nL2FwcGxlLXRvdWNoLWljb24tMTUyLnBuZyIvPgogICAgICAgIDwvaGVhZD4KCiAgICAgICAgPGxpbmtzPgogICAgICAgICAgICA8aXRlbSBuYW1lPSJBcGFjaGUgRmxleCBIb21lcGFnZSIgaHJlZj0iaHR0cDovL2ZsZXguYXBhY2hlLm9yZy8iIC8+CiAgICAgICAgICAgIDwhLS1pdGVtIG5hbWU9IkFwYWNoZSBGbGV4SlMgSG9tZXBhZ2UiIGhyZWY9Imh0dHA6Ly9mbGV4LmFwYWNoZS5vcmcvIiAvLS0+CiAgICAgICAgICAgIDxpdGVtIG5hbWU9IkFwYWNoZSBGbGV4IFdpa2kiIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvRkxFWC9BcGFjaGUrRmxleCtXaWtpIi8+CiAgICAgICAgPC9saW5rcz4KCiAgICAgICAgPG1lbnUgbmFtZT0iRmxleEpTIj4KICAgICAgICAgICAgPGl0ZW0gbmFtZT0iSW50cm9kdWN0aW9uIiBocmVmPSJpbmRleC5odG1sIi8+CiAgICAgICAgICAgIDwhLS1pdGVtIG5hbWU9IkRvd25sb2FkIiBocmVmPSJkb3dubG9hZC5odG1sIi8+CiAgICAgICAgICAgIDxpdGVtIG5hbWU9IlJlbGVhc2UgTm90ZXMiIGhyZWY9InJlbGVhc2Utbm90ZXMuaHRtbCIgLz4KICAgICAgICAgICAgPGl0ZW0gbmFtZT0iR2VuZXJhbCBJbmZvcm1hdGlvbiIgaHJlZj0iYWJvdXQuaHRtbCIvLS0+CiAgICAgICAgPC9tZW51PgoKICAgICAgICA8bWVudSBuYW1lPSJEZXZlbG9wbWVudCI+CiAgICAgICAgICAgIDwhLS0gR2VuZXJhdGVkIGZyb20gc3JjL3NpdGUvYXNjaWlkb2MvYnVpbGQuYWRvYyAtLT4KICAgICAgICAgICAgPGl0ZW0gbmFtZT0iQnVpbGRpbmcgZnJvbSBTb3VyY2UiIGhyZWY9ImJ1aWxkLmh0bWwiLz4KICAgICAgICAgICAgPGl0ZW0gbmFtZT0iRmVhdHVyZWJyYW5jaCBBdXRvYnVpbGRzIiBocmVmPSJmZWF0dXJlYnJhbmNoLWF1dG9idWlsZC5odG1sIi8+CiAgICAgICAgICAgIDxpdGVtIG5hbWU9IkJ1aWxkIHN0cnVjdHVyZSIgaHJlZj0ic3RydWN0dXJlLmh0bWwiLz4KICAgICAgICA8L21lbnU+CgogICAgICAgIDxtZW51IHJlZj0icmVwb3J0cyIgLz4KICAgICAgICA8bWVudSByZWY9InBhcmVudCIgLz4KICAgICAgICA8bWVudSByZWY9Im1vZHVsZXMiIC8+CiAgICA8L2JvZHk+CjwvcHJvamVjdD4=