PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5TU0wvVExTIFN0cm9uZyBFbmNyeXB0aW9uOiBIb3ctVG8gLSBBcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjU8L3RpdGxlPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlL2Nzcy9wcmV0dGlmeS5jc3MiIC8+CjxzY3JpcHQgc3JjPSIuLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgLz48L2hlYWQ+Cjxib2R5IGlkPSJtYW51YWwtcGFnZSI+PGRpdiBpZD0icGFnZS1oZWFkZXIiPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuLi9tb2QvcXVpY2tyZWZlcmVuY2UuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+CjxwIGNsYXNzPSJhcGFjaGUiPkFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuNTwvcD4KPGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZmVhdGhlci5wbmciIC8+PC9kaXY+CjxkaXYgY2xhc3M9InVwIj48YSBocmVmPSIuLyI+PGltZyB0aXRsZT0iJmx0Oy0iIGFsdD0iJmx0Oy0iIHNyYz0iLi4vaW1hZ2VzL2xlZnQuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBpZD0icGF0aCI+CjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFwYWNoZTwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy8iPkhUVFAgU2VydmVyPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvIj5Eb2N1bWVudGF0aW9uPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4uLyI+VmVyc2lvbiAyLjU8L2E+ICZndDsgPGEgaHJlZj0iLi8iPlNTTC9UTFM8L2E+PC9kaXY+PGRpdiBpZD0icGFnZS1jb250ZW50Ij48ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPlNTTC9UTFMgU3Ryb25nIEVuY3J5cHRpb246IEhvdy1UbzwvaDE+CjxkaXYgY2xhc3M9InRvcGxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vc3NsL3NzbF9ob3d0by5odG1sIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vZnIvc3NsL3NzbF9ob3d0by5odG1sIiBocmVmbGFuZz0iZnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPjwvcD4KPC9kaXY+CgoKPHA+VGhpcyBkb2N1bWVudCBpcyBpbnRlbmRlZCB0byBnZXQgeW91IHN0YXJ0ZWQsIGFuZCBnZXQgYSBmZXcgdGhpbmdzCndvcmtpbmcuIFlvdSBhcmUgc3Ryb25nbHkgZW5jb3VyYWdlZCB0byByZWFkIHRoZSByZXN0IG9mIHRoZSBTU0wKZG9jdW1lbnRhdGlvbiwgYW5kIGFycml2ZSBhdCBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBtYXRlcmlhbCwKYmVmb3JlIHByb2dyZXNzaW5nIHRvIHRoZSBhZHZhbmNlZCB0ZWNobmlxdWVzLjwvcD4KPC9kaXY+CjxkaXYgaWQ9InF1aWNrdmlldyI+PHVsIGlkPSJ0b2MiPjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2NvbmZpZ2V4YW1wbGUiPkJhc2ljIENvbmZpZ3VyYXRpb24gRXhhbXBsZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNjaXBoZXJzdWl0ZXMiPkNpcGhlciBTdWl0ZXMgYW5kIEVuZm9yY2luZyBTdHJvbmcgRW5jcnlwdGlvbjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNvY3Nwc3RhcGxpbmciPk9DU1AgU3RhcGxpbmc8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYWNjZXNzY29udHJvbCI+Q2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBBY2Nlc3MgQ29udHJvbDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNsb2dnaW5nIj5Mb2dnaW5nPC9hPjwvbGk+CjwvdWw+PGgzPlNlZSBhbHNvPC9oMz48dWwgY2xhc3M9InNlZWFsc28iPjxsaT48YSBocmVmPSIjY29tbWVudHNfc2VjdGlvbiI+Q29tbWVudHM8L2E+PC9saT48L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJjb25maWdleGFtcGxlIiBpZD0iY29uZmlnZXhhbXBsZSI+QmFzaWMgQ29uZmlndXJhdGlvbiBFeGFtcGxlPC9hPjwvaDI+CgoKPHA+WW91ciBTU0wgY29uZmlndXJhdGlvbiB3aWxsIG5lZWQgdG8gY29udGFpbiwgYXQgbWluaW11bSwgdGhlCmZvbGxvd2luZyBkaXJlY3RpdmVzLjwvcD4KCjxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj5MaXN0ZW4gNDQzCiZsdDtWaXJ0dWFsSG9zdCAqOjQ0MyZndDsKICAgIFNlcnZlck5hbWUgd3d3LmV4YW1wbGUuY29tCiAgICBTU0xFbmdpbmUgb24KICAgIFNTTENlcnRpZmljYXRlRmlsZSAiL3BhdGgvdG8vd3d3LmV4YW1wbGUuY29tLmNlcnQiCiAgICBTU0xDZXJ0aWZpY2F0ZUtleUZpbGUgIi9wYXRoL3RvL3d3dy5leGFtcGxlLmNvbS5rZXkiCiZsdDsvVmlydHVhbEhvc3QmZ3Q7PC9wcmU+CgoKPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iY2lwaGVyc3VpdGVzIiBpZD0iY2lwaGVyc3VpdGVzIj5DaXBoZXIgU3VpdGVzIGFuZCBFbmZvcmNpbmcgU3Ryb25nIEVuY3J5cHRpb248L2E+PC9oMj4KCgo8ZGl2IGNsYXNzPSJ3YXJuaW5nIj4KPHA+IlN0cm9uZyBlbmNyeXB0aW9uIiBpcywgYW5kIGhhcyBhbHdheXMgYmVlbiwgYSBtb3ZpbmcgdGFyZ2V0LiBGdXJ0aGVybW9yZSwKdGhlIGRlZmluaXRpb24gb2YgInN0cm9uZyIgZGVwZW5kcyBvbiB5b3VyIGRlc2lyZWQgdXNlIGNhc2VzLCB5b3VyIHRocmVhdAptb2RlbHMsIGFuZCB5b3VyIGFjY2VwdGFibGUgbGV2ZWxzIG9mIHJpc2suIFRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgdGVhbSBjYW5ub3QKZGV0ZXJtaW5lIHRoZXNlIHRoaW5ncyBmb3IgeW91LjwvcD4KPHA+Rm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRvY3VtZW50LCB3aGljaCB3YXMgbGFzdCB1cGRhdGVkIGluIG1pZC0yMDE2LAoic3Ryb25nIGVuY3J5cHRpb24iIHJlZmVycyB0byBhIFRMUyBpbXBsZW1lbnRhdGlvbiB3aGljaCBwcm92aWRlcyBhbGwgb2YgdGhlCmZvbGxvd2luZywgaW4gYWRkaXRpb24gdG8gdGhlIGJhc2ljIGNvbmZpZGVudGlhbGl0eSwgaW50ZWdyaXR5LCBhbmQgYXV0aGVudGljaXR5CnByb3RlY3Rpb24gdGhhdCBtb3N0IHVzZXJzIGFscmVhZHkgZXhwZWN0OjwvcD4KPHVsPgo8bGk+UGVyZmVjdCBGb3J3YXJkIFNlY3JlY3ksIHdoaWNoIGVuc3VyZXMgdGhhdCBhIGNvbXByb21pc2UgdG8gYSBzZXJ2ZXIncwpwcml2YXRlIGtleSBpbiB0aGUgcHJlc2VudCBkb2VzIG5vdCBjb21wcm9taXNlIHRoZSBjb25maWRlbnRpYWxpdHkgb2YgcGFzdCBUTFMKY29tbXVuaWNhdGlvbi48L2xpPgo8bGk+UHJvdGVjdGlvbiBmcm9tIGtub3duIGF0dGFja3Mgb24gb2xkZXIgU1NMIGFuZCBUTFMgaW1wbGVtZW50YXRpb25zLCBzdWNoCmFzIDxhIGhyZWY9Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BPT0RMRSI+UE9PRExFPC9hPiBhbmQKPGEgaHJlZj0iaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVHJhbnNwb3J0X0xheWVyX1NlY3VyaXR5I0JFQVNUX2F0dGFjayI+QkVBU1Q8L2E+LjwvbGk+CjxsaT5TdXBwb3J0IGZvciB0aGUgc3Ryb25nZXN0IGNpcGhlcnMgYXZhaWxhYmxlIHRvIG1vZGVybiAoYW5kIHVwLXRvLWRhdGUpIHdlYgpicm93c2VycyBhbmQgb3RoZXIgSFRUUCBjbGllbnRzLjwvbGk+CjxsaT48c3Ryb25nPlJlamVjdGlvbjwvc3Ryb25nPiBvZiBjbGllbnRzIHRoYXQgY2Fubm90IG1lZXQgdGhlc2UgcmVxdWlyZW1lbnRzLgpJbiBvdGhlciB3b3JkcywgInN0cm9uZyBlbmNyeXB0aW9uIiByZXF1aXJlcyB0aGF0IG91dC1vZi1kYXRlIGNsaWVudHMgYmUKY29tcGxldGVseSB1bmFibGUgdG8gY29ubmVjdCB0byB0aGUgc2VydmVyLCB0byBwcmV2ZW50IHRoZW0gZnJvbSBlbmRhbmdlcmluZwp0aGVpciB1c2Vycy4gV2hldGhlciBvciBub3QgdGhpcyBpcyBhcHByb3ByaWF0ZSBmb3IgeW91ciBzaXR1YXRpb24gaXMgYSBkZWNpc2lvbgp0aGF0IG9ubHkgeW91IGNhbiBtYWtlLjwvbGk+CjwvdWw+CjxwPlBsZWFzZSBub3RlIHRoYXQgc3Ryb25nIDxlbT5lbmNyeXB0aW9uPC9lbT4gZG9lcyBub3QsIGJ5IGl0c2VsZiwgZW5zdXJlCnN0cm9uZyA8ZW0+c2VjdXJpdHk8L2VtPi4gKEFzIGFuIGV4YW1wbGUsIEhUVFAgY29tcHJlc3Npb24gb3JhY2xlIGF0dGFja3Mgc3VjaAphcyA8YSBocmVmPSJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CUkVBQ0hfKHNlY3VyaXR5X2V4cGxvaXQpIj5CUkVBQ0g8L2E+Cm1heSByZXF1aXJlIGZ1cnRoZXIgc3RlcHMgdG8gbWl0aWdhdGUuKTwvcD4KPC9kaXY+Cgo8dWw+CjxsaT48YSBocmVmPSIjb25seXN0cm9uZyI+SG93IGNhbiBJIGNyZWF0ZSBhbiBTU0wgc2VydmVyIHdoaWNoIGFjY2VwdHMgc3Ryb25nIGVuY3J5cHRpb24gb25seT88L2E+PC9saT4KPGxpPjxhIGhyZWY9IiNzdHJvbmd1cmwiPkhvdyBjYW4gSSBjcmVhdGUgYW4gU1NMIHNlcnZlciB3aGljaCBhY2NlcHRzIG1hbnkgdHlwZXMgb2YgY2lwaGVycyBpbiBnZW5lcmFsLCBidXQKcmVxdWlyZXMgYSBzdHJvbmcgY2lwaGVyIGZvciBhY2Nlc3MgdG8gYSBwYXJ0aWN1bGFyIFVSTD88L2E+PC9saT4KPC91bD4KCjxoMz48YSBuYW1lPSJvbmx5c3Ryb25nIiBpZD0ib25seXN0cm9uZyI+SG93IGNhbiBJIGNyZWF0ZSBhbiBTU0wgc2VydmVyIHdoaWNoIGFjY2VwdHMgc3Ryb25nIGVuY3J5cHRpb24Kb25seT88L2E+PC9oMz4KCiAgICA8cD5UaGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gZW5hYmxlcyAic3Ryb25nIGVuY3J5cHRpb24iLCBhcyBkZWZpbmVkCiAgICBhYm92ZSwgYW5kIGlzIGRlcml2ZWQgZnJvbSB0aGUgTW96aWxsYSBGb3VuZGF0aW9uJ3MKICAgIDxhIGhyZWY9Imh0dHBzOi8vd2lraS5tb3ppbGxhLm9yZy9TZWN1cml0eS9TZXJ2ZXJfU2lkZV9UTFMiPlNlcnZlciBTaWRlCiAgICBUTFM8L2E+IHJlcXVpcmVtZW50czo8L3A+CgogICAgPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPiMgIk1vZGVybiIgY29uZmlndXJhdGlvbiwgZGVmaW5lZCBieSB0aGUgTW96aWxsYSBGb3VuZGF0aW9uJ3MgU1NMIENvbmZpZ3VyYXRpb24KIyBHZW5lcmF0b3IgYXMgb2YgQXVndXN0IDIwMTYuIFRoaXMgdG9vbCBpcyBhdmFpbGFibGUgYXQKIyBodHRwczovL21vemlsbGEuZ2l0aHViLmlvL3NlcnZlci1zaWRlLXRscy9zc2wtY29uZmlnLWdlbmVyYXRvci8KU1NMUHJvdG9jb2wgICAgICAgICBhbGwgLVNTTHYzIC1UTFN2MSAtVExTdjEuMQojIE1hbnkgY2lwaGVycyBkZWZpbmVkIGhlcmUgcmVxdWlyZSBhIG1vZGVybiB2ZXJzaW9uICgxLjAuMSspIG9mIE9wZW5TU0wuIFNvbWUKIyByZXF1aXJlIE9wZW5TU0wgMS4xLjAsIHdoaWNoIGFzIG9mIHRoaXMgd3JpdGluZyB3YXMgaW4gcHJlLXJlbGVhc2UuClNTTENpcGhlclN1aXRlICAgICAgRUNESEUtRUNEU0EtQUVTMjU2LUdDTS1TSEEzODQ6RUNESEUtUlNBLUFFUzI1Ni1HQ00tU0hBMzg0OkVDREhFLUVDRFNBLUNIQUNIQTIwLVBPTFkxMzA1OkVDREhFLVJTQS1DSEFDSEEyMC1QT0xZMTMwNTpFQ0RIRS1FQ0RTQS1BRVMxMjgtR0NNLVNIQTI1NjpFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTY6RUNESEUtRUNEU0EtQUVTMjU2LVNIQTM4NDpFQ0RIRS1SU0EtQUVTMjU2LVNIQTM4NDpFQ0RIRS1FQ0RTQS1BRVMxMjgtU0hBMjU2OkVDREhFLVJTQS1BRVMxMjgtU0hBMjU2ClNTTEhvbm9yQ2lwaGVyT3JkZXIgb24KU1NMQ29tcHJlc3Npb24gICAgICBvZmYKU1NMU2Vzc2lvblRpY2tldHMgICBvZmY8L3ByZT4KCgogICAgPHVsPgogICAgPGxpPlNTTCAzLjAgYW5kIFRMUyAxLjAgYXJlIHN1c2NlcHRpYmxlIHRvIGtub3duIGF0dGFja3Mgb24gdGhlIHByb3RvY29sOwogICAgdGhleSBhcmUgZGlzYWJsZWQgZW50aXJlbHkuPC9saT4KICAgIDxsaT5EaXNhYmxpbmcgVExTIDEuMSBpcyAoYXMgb2YgQXVndXN0IDIwMTYpIG1vc3RseSBvcHRpb25hbDsgVExTIDEuMgogICAgcHJvdmlkZXMgc3Ryb25nZXIgZW5jcnlwdGlvbiBvcHRpb25zLCBidXQgMS4xIGlzIG5vdCB5ZXQga25vd24gdG8gYmUgYnJva2VuLgogICAgRGlzYWJsaW5nIDEuMSBtYXkgbWl0aWdhdGUgYXR0YWNrcyBhZ2FpbnN0IHNvbWUgYnJva2VuIFRMUwogICAgaW1wbGVtZW50YXRpb25zLjwvbGk+CiAgICA8bGk+RW5hYmxpbmcgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zc2wuaHRtbCNzc2xob25vcmNpcGhlcm9yZGVyIj5TU0xIb25vckNpcGhlck9yZGVyPC9hPjwvY29kZT4KICAgIGVuc3VyZXMgdGhhdCB0aGUgc2VydmVyJ3MgY2lwaGVyIHByZWZlcmVuY2VzIGFyZSBmb2xsb3dlZCBpbnN0ZWFkIG9mIHRoZQogICAgY2xpZW50J3MuPC9saT4KICAgIDxsaT5EaXNhYmxpbmcgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zc2wuaHRtbCNzc2xjb21wcmVzc2lvbiI+U1NMQ29tcHJlc3Npb248L2E+PC9jb2RlPgogICAgcHJldmVudHMgVExTIGNvbXByZXNzaW9uIG9yYWNsZSBhdHRhY2tzIChlLmcuCiAgICA8YSBocmVmPSJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DUklNRSI+Q1JJTUU8L2E+KS48L2xpPgogICAgPGxpPkRpc2FibGluZyA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX3NzbC5odG1sI3NzbHNlc3Npb250aWNrZXRzIj5TU0xTZXNzaW9uVGlja2V0czwvYT48L2NvZGU+CiAgICBlbnN1cmVzIFBlcmZlY3QgRm9yd2FyZCBTZWNyZWN5IGlzIG5vdCBjb21wcm9taXNlZCBpZiB0aGUgc2VydmVyIGlzIG5vdAogICAgcmVzdGFydGVkIHJlZ3VsYXJseS48L2xpPgogICAgPC91bD4KCiAgICA8cD5UaGUgZXhhY3QgY2lwaGVyc3VpdGVzIHN1cHBvcnRlZCBpbiB0aGUKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2Rfc3NsLmh0bWwjc3NsY2lwaGVyc3VpdGUiPlNTTENpcGhlclN1aXRlPC9hPjwvY29kZT4gbGluZSBhcmUgZGV0ZXJtaW5lZAogICAgYnkgeW91ciBPcGVuU1NMIGluc3RhbGxhdGlvbiwgbm90IHRoZSBzZXJ2ZXIuIFlvdSBtYXkgbmVlZCB0byB1cGdyYWRlIHRvIGEKICAgIG1vZGVybiB2ZXJzaW9uIG9mIE9wZW5TU0wgaW4gb3JkZXIgdG8gdXNlIHRoZW0uPC9wPgoKCjxoMz48YSBuYW1lPSJzdHJvbmd1cmwiIGlkPSJzdHJvbmd1cmwiPkhvdyBjYW4gSSBjcmVhdGUgYW4gU1NMIHNlcnZlciB3aGljaCBhY2NlcHRzIG1hbnkgdHlwZXMgb2YgY2lwaGVycwppbiBnZW5lcmFsLCBidXQgcmVxdWlyZXMgYSBzdHJvbmcgY2lwaGVyIGZvciBhY2Nlc3MgdG8gYSBwYXJ0aWN1bGFyIFVSTD88L2E+PC9oMz4KCiAgICA8cD5PYnZpb3VzbHksIGEgc2VydmVyLXdpZGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zc2wuaHRtbCNzc2xjaXBoZXJzdWl0ZSI+U1NMQ2lwaGVyU3VpdGU8L2E+PC9jb2RlPiB3aGljaCByZXN0cmljdHMKICAgIGNpcGhlcnMgdG8gdGhlIHN0cm9uZyB2YXJpYW50cywgaXNuJ3QgdGhlIGFuc3dlciBoZXJlLiBIb3dldmVyLAogICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zc2wuaHRtbCI+bW9kX3NzbDwvYT48L2NvZGU+IGNhbiBiZSByZWNvbmZpZ3VyZWQgd2l0aGluIDxjb2RlPkxvY2F0aW9uPC9jb2RlPgogICAgYmxvY2tzLCB0byBnaXZlIGEgcGVyLWRpcmVjdG9yeSBzb2x1dGlvbiwgYW5kIGNhbiBhdXRvbWF0aWNhbGx5IGZvcmNlCiAgICBhIHJlbmVnb3RpYXRpb24gb2YgdGhlIFNTTCBwYXJhbWV0ZXJzIHRvIG1lZXQgdGhlIG5ldyBjb25maWd1cmF0aW9uLgogICAgVGhpcyBjYW4gYmUgZG9uZSBhcyBmb2xsb3dzOjwvcD4KICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj4jIGJlIGxpYmVyYWwgaW4gZ2VuZXJhbCAtLSB1c2UgTW96aWxsYSdzICJJbnRlcm1lZGlhdGUiIGNpcGhlcnN1aXRlcyAod2Vha2VyCiMgY2lwaGVyc3VpdGVzIG1heSBhbHNvIGJlIHVzZWQsIGJ1dCB3aWxsIG5vdCBiZSBkb2N1bWVudGVkIGhlcmUpClNTTENpcGhlclN1aXRlIEVDREhFLUVDRFNBLUNIQUNIQTIwLVBPTFkxMzA1OkVDREhFLVJTQS1DSEFDSEEyMC1QT0xZMTMwNTpFQ0RIRS1FQ0RTQS1BRVMxMjgtR0NNLVNIQTI1NjpFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTY6RUNESEUtRUNEU0EtQUVTMjU2LUdDTS1TSEEzODQ6RUNESEUtUlNBLUFFUzI1Ni1HQ00tU0hBMzg0OkRIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTY6REhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NDpFQ0RIRS1FQ0RTQS1BRVMxMjgtU0hBMjU2OkVDREhFLVJTQS1BRVMxMjgtU0hBMjU2OkVDREhFLUVDRFNBLUFFUzEyOC1TSEE6RUNESEUtUlNBLUFFUzI1Ni1TSEEzODQ6RUNESEUtUlNBLUFFUzEyOC1TSEE6RUNESEUtRUNEU0EtQUVTMjU2LVNIQTM4NDpFQ0RIRS1FQ0RTQS1BRVMyNTYtU0hBOkVDREhFLVJTQS1BRVMyNTYtU0hBOkRIRS1SU0EtQUVTMTI4LVNIQTI1NjpESEUtUlNBLUFFUzEyOC1TSEE6REhFLVJTQS1BRVMyNTYtU0hBMjU2OkRIRS1SU0EtQUVTMjU2LVNIQTpFQ0RIRS1FQ0RTQS1ERVMtQ0JDMy1TSEE6RUNESEUtUlNBLURFUy1DQkMzLVNIQTpFREgtUlNBLURFUy1DQkMzLVNIQTpBRVMxMjgtR0NNLVNIQTI1NjpBRVMyNTYtR0NNLVNIQTM4NDpBRVMxMjgtU0hBMjU2OkFFUzI1Ni1TSEEyNTY6QUVTMTI4LVNIQTpBRVMyNTYtU0hBOkRFUy1DQkMzLVNIQTohRFNTCgombHQ7TG9jYXRpb24gIi9zdHJvbmcvYXJlYSImZ3Q7CiMgYnV0IGh0dHBzOi8vaG9zdG5hbWUvc3Ryb25nL2FyZWEvIGFuZCBiZWxvdyByZXF1aXJlcyBzdHJvbmcgY2lwaGVyc3VpdGVzClNTTENpcGhlclN1aXRlIEVDREhFLUVDRFNBLUFFUzI1Ni1HQ00tU0hBMzg0OkVDREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NDpFQ0RIRS1FQ0RTQS1DSEFDSEEyMC1QT0xZMTMwNTpFQ0RIRS1SU0EtQ0hBQ0hBMjAtUE9MWTEzMDU6RUNESEUtRUNEU0EtQUVTMTI4LUdDTS1TSEEyNTY6RUNESEUtUlNBLUFFUzEyOC1HQ00tU0hBMjU2OkVDREhFLUVDRFNBLUFFUzI1Ni1TSEEzODQ6RUNESEUtUlNBLUFFUzI1Ni1TSEEzODQ6RUNESEUtRUNEU0EtQUVTMTI4LVNIQTI1NjpFQ0RIRS1SU0EtQUVTMTI4LVNIQTI1NgombHQ7L0xvY2F0aW9uJmd0OzwvcHJlPgoKCjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9Im9jc3BzdGFwbGluZyIgaWQ9Im9jc3BzdGFwbGluZyI+T0NTUCBTdGFwbGluZzwvYT48L2gyPgoKCjxwPlRoZSBPbmxpbmUgQ2VydGlmaWNhdGUgU3RhdHVzIFByb3RvY29sIChPQ1NQKSBpcyBhIG1lY2hhbmlzbSBmb3IKZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3QgYSBzZXJ2ZXIgY2VydGlmaWNhdGUgaGFzIGJlZW4gcmV2b2tlZCwgYW5kIE9DU1AKU3RhcGxpbmcgaXMgYSBzcGVjaWFsIGZvcm0gb2YgdGhpcyBpbiB3aGljaCB0aGUgc2VydmVyLCBzdWNoIGFzIGh0dHBkIGFuZAptb2Rfc3NsLCBtYWludGFpbnMgY3VycmVudCBPQ1NQIHJlc3BvbnNlcyBmb3IgaXRzIGNlcnRpZmljYXRlcyBhbmQgc2VuZHMKdGhlbSB0byBjbGllbnRzIHdoaWNoIGNvbW11bmljYXRlIHdpdGggdGhlIHNlcnZlci4gIE1vc3QgY2VydGlmaWNhdGVzCmNvbnRhaW4gdGhlIGFkZHJlc3Mgb2YgYW4gT0NTUCByZXNwb25kZXIgbWFpbnRhaW5lZCBieSB0aGUgaXNzdWluZwpDZXJ0aWZpY2F0ZSBBdXRob3JpdHksIGFuZCBtb2Rfc3NsIGNhbiBjb21tdW5pY2F0ZSB3aXRoIHRoYXQgcmVzcG9uZGVyIHRvCm9idGFpbiBhIHNpZ25lZCByZXNwb25zZSB0aGF0IGNhbiBiZSBzZW50IHRvIGNsaWVudHMgY29tbXVuaWNhdGluZyB3aXRoCnRoZSBzZXJ2ZXIuPC9wPgoKPHA+QmVjYXVzZSB0aGUgY2xpZW50IGNhbiBvYnRhaW4gdGhlIGNlcnRpZmljYXRlIHJldm9jYXRpb24gc3RhdHVzIGZyb20KdGhlIHNlcnZlciwgd2l0aG91dCByZXF1aXJpbmcgYW4gZXh0cmEgY29ubmVjdGlvbiBmcm9tIHRoZSBjbGllbnQgdG8gdGhlCkNlcnRpZmljYXRlIEF1dGhvcml0eSwgT0NTUCBTdGFwbGluZyBpcyB0aGUgcHJlZmVycmVkIHdheSBmb3IgdGhlCnJldm9jYXRpb24gc3RhdHVzIHRvIGJlIG9idGFpbmVkLiAgT3RoZXIgYmVuZWZpdHMgb2YgZWxpbWluYXRpbmcgdGhlCmNvbW11bmljYXRpb24gYmV0d2VlbiBjbGllbnRzIGFuZCB0aGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IGFyZSB0aGF0IHRoZQpjbGllbnQgYnJvd3NpbmcgaGlzdG9yeSBpcyBub3QgZXhwb3NlZCB0byB0aGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IGFuZApvYnRhaW5pbmcgc3RhdHVzIGlzIG1vcmUgcmVsaWFibGUgYnkgbm90IGRlcGVuZGluZyBvbiBwb3RlbnRpYWxseSBoZWF2aWx5CmxvYWRlZCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgc2VydmVycy48L3A+Cgo8cD5CZWNhdXNlIHRoZSByZXNwb25zZSBvYnRhaW5lZCBieSB0aGUgc2VydmVyIGNhbiBiZSByZXVzZWQgZm9yIGFsbCBjbGllbnRzCnVzaW5nIHRoZSBzYW1lIGNlcnRpZmljYXRlIGR1cmluZyB0aGUgdGltZSB0aGF0IHRoZSByZXNwb25zZSBpcyB2YWxpZCwgdGhlCm92ZXJoZWFkIGZvciB0aGUgc2VydmVyIGlzIG1pbmltYWwuPC9wPgoKPHA+T25jZSBnZW5lcmFsIFNTTCBzdXBwb3J0IGhhcyBiZWVuIGNvbmZpZ3VyZWQgcHJvcGVybHksIGVuYWJsaW5nIE9DU1AKU3RhcGxpbmcgZ2VuZXJhbGx5IHJlcXVpcmVzIG9ubHkgdmVyeSBtaW5vciBtb2RpZmljYXRpb25zIHRvIHRoZSBodHRwZApjb25maWd1cmF0aW9uICYjODIxMjsgdGhlIGFkZGl0aW9uIG9mIHRoZXNlIHR3byBkaXJlY3RpdmVzOjwvcD4KCiAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+U1NMVXNlU3RhcGxpbmcgT24KU1NMU3RhcGxpbmdDYWNoZSAic2htY2I6c3NsX3N0YXBsaW5nKDMyNzY4KSI8L3ByZT4KCgo8cD5UaGVzZSBkaXJlY3RpdmVzIGFyZSBwbGFjZWQgYXQgZ2xvYmFsIHNjb3BlIChpLmUuLCBub3Qgd2l0aGluIGEgdmlydHVhbApob3N0IGRlZmluaXRpb24pIHdoZXJldmVyIG90aGVyIGdsb2JhbCBTU0wgY29uZmlndXJhdGlvbiBkaXJlY3RpdmVzIGFyZQpwbGFjZWQsIHN1Y2ggYXMgaW4gPGNvZGU+Y29uZi9leHRyYS9odHRwZC1zc2wuY29uZjwvY29kZT4gZm9yIG5vcm1hbApvcGVuIHNvdXJjZSBidWlsZHMgb2YgaHR0cGQsIDxjb2RlPi9ldGMvYXBhY2hlMi9tb2RzLWVuYWJsZWQvc3NsLmNvbmY8L2NvZGU+CmZvciB0aGUgVWJ1bnR1IG9yIERlYmlhbi1idW5kbGVkIGh0dHBkLCBldGMuPC9wPgoKPHA+VGhpcyBwYXJ0aWN1bGFyIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlNTTFN0YXBsaW5nQ2FjaGU8L2NvZGU+IGRpcmVjdGl2ZSByZXF1aXJlcwo8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX3NvY2FjaGVfc2htY2IuaHRtbCI+bW9kX3NvY2FjaGVfc2htY2I8L2E+PC9jb2RlPiAoZnJvbSB0aGUgPGNvZGU+c2htY2I8L2NvZGU+IHByZWZpeCBvbiB0aGUKZGlyZWN0aXZlJ3MgYXJndW1lbnQpLiAgVGhpcyBtb2R1bGUgaXMgdXN1YWxseSBlbmFibGVkIGFscmVhZHkgZm9yCjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlNTTFNlc3Npb25DYWNoZTwvY29kZT4gb3Igb24gYmVoYWxmIG9mIHNvbWUgbW9kdWxlIG90aGVyIHRoYW4KPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zc2wuaHRtbCI+bW9kX3NzbDwvYT48L2NvZGU+LiAgSWYgeW91IGVuYWJsZWQgYW4gU1NMIHNlc3Npb24gY2FjaGUgdXNpbmcgYQptZWNoYW5pc20gb3RoZXIgdGhhbiA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX3NvY2FjaGVfc2htY2IuaHRtbCI+bW9kX3NvY2FjaGVfc2htY2I8L2E+PC9jb2RlPiwgdXNlIHRoYXQgYWx0ZXJuYXRpdmUKbWVjaGFuaXNtIGZvciA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5TU0xTdGFwbGluZ0NhY2hlPC9jb2RlPiBhcyB3ZWxsLiAgRm9yIGV4YW1wbGU6PC9wPgoKICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj5TU0xTZXNzaW9uQ2FjaGUgImRibTpzc2xfc2NhY2hlIgpTU0xTdGFwbGluZ0NhY2hlICJkYm06c3NsX3N0YXBsaW5nIjwvcHJlPgoKCjxwPllvdSBjYW4gdXNlIHRoZSBvcGVuc3NsIGNvbW1hbmQtbGluZSBwcm9ncmFtIHRvIHZlcmlmeSB0aGF0IGFuIE9DU1AgcmVzcG9uc2UKaXMgc2VudCBieSB5b3VyIHNlcnZlcjo8L3A+Cgo8cHJlPiQgb3BlbnNzbCBzX2NsaWVudCAtY29ubmVjdCB3d3cuZXhhbXBsZS5jb206NDQzIC1zdGF0dXMgLXNlcnZlcm5hbWUgd3d3LmV4YW1wbGUuY29tCi4uLgpPQ1NQIHJlc3BvbnNlOgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpPQ1NQIFJlc3BvbnNlIERhdGE6CiAgICBPQ1NQIFJlc3BvbnNlIFN0YXR1czogc3VjY2Vzc2Z1bCAoMHgwKQogICAgUmVzcG9uc2UgVHlwZTogQmFzaWMgT0NTUCBSZXNwb25zZQouLi4KICAgIENlcnQgU3RhdHVzOiBHb29kCi4uLjwvcHJlPgoKPHA+VGhlIGZvbGxvd2luZyBzZWN0aW9ucyBoaWdobGlnaHQgdGhlIG1vc3QgY29tbW9uIHNpdHVhdGlvbnMgd2hpY2ggcmVxdWlyZQpmdXJ0aGVyIG1vZGlmaWNhdGlvbiB0byB0aGUgY29uZmlndXJhdGlvbi4gIFJlZmVyIGFsc28gdG8gdGhlCjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2Rfc3NsLmh0bWwiPm1vZF9zc2w8L2E+PC9jb2RlPiByZWZlcmVuY2UgbWFudWFsLjwvcD4KCjxoMz5JZiBtb3JlIHRoYW4gYSBmZXcgU1NMIGNlcnRpZmljYXRlcyBhcmUgdXNlZCBmb3IgdGhlIHNlcnZlcjwvaDM+Cgo8cD5PQ1NQIHJlc3BvbnNlcyBhcmUgc3RvcmVkIGluIHRoZSBTU0wgc3RhcGxpbmcgY2FjaGUuICBXaGlsZSB0aGUgcmVzcG9uc2VzCmFyZSB0eXBpY2FsbHkgYSBmZXcgaHVuZHJlZCB0byBhIGZldyB0aG91c2FuZCBieXRlcyBpbiBzaXplLCBtb2Rfc3NsCnN1cHBvcnRzIE9DU1AgcmVzcG9uc2VzIHVwIHRvIGFyb3VuZCAxMEsgYnl0ZXMgaW4gc2l6ZS4gIFdpdGggbW9yZSB0aGFuIGEKZmV3IGNlcnRpZmljYXRlcywgdGhlIHN0YXBsaW5nIGNhY2hlIHNpemUgKDMyNzY4IGJ5dGVzIGluIHRoZSBleGFtcGxlIGFib3ZlKQptYXkgbmVlZCB0byBiZSBpbmNyZWFzZWQuICBFcnJvciBtZXNzYWdlIEFIMDE5Mjkgd2lsbCBiZSBsb2dnZWQgaW4gY2FzZSBvZgphbiBlcnJvciBzdG9yaW5nIGEgcmVzcG9uc2UuPC9wPgoKCjxoMz5JZiB0aGUgY2VydGlmaWNhdGUgZG9lcyBub3QgcG9pbnQgdG8gYW4gT0NTUCByZXNwb25kZXIsIG9yIGlmIGEKZGlmZmVyZW50IGFkZHJlc3MgbXVzdCBiZSB1c2VkPC9oMz4KCjxwPlJlZmVyIHRvIHRoZQo8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX3NzbC5odG1sI3NzbHN0YXBsaW5nZm9yY2V1cmwiPlNTTFN0YXBsaW5nRm9yY2VVUkw8L2E+PC9jb2RlPiBkaXJlY3RpdmUuPC9wPgoKPHA+WW91IGNhbiBjb25maXJtIHRoYXQgYSBzZXJ2ZXIgY2VydGlmaWNhdGUgcG9pbnRzIHRvIGFuIE9DU1AgcmVzcG9uZGVyCnVzaW5nIHRoZSBvcGVuc3NsIGNvbW1hbmQtbGluZSBwcm9ncmFtLCBhcyBmb2xsb3dzOjwvcD4KCjxwcmU+JCBvcGVuc3NsIHg1MDkgLWluIC4vd3d3LmV4YW1wbGUuY29tLmNydCAtdGV4dCB8IGdyZXAgJ09DU1AuKmh0dHAnCk9DU1AgLSBVUkk6aHR0cDovL29jc3AuZXhhbXBsZS5jb208L3ByZT4KCjxwPklmIHRoZSBPQ1NQIFVSSSBpcyBwcm92aWRlZCBhbmQgdGhlIHdlYiBzZXJ2ZXIgY2FuIGNvbW11bmljYXRlIHRvIGl0CmRpcmVjdGx5IHdpdGhvdXQgdXNpbmcgYSBwcm94eSwgbm8gY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZC4gIE5vdGUgdGhhdApmaXJld2FsbCBydWxlcyB0aGF0IGNvbnRyb2wgb3V0Ym91bmQgY29ubmVjdGlvbnMgZnJvbSB0aGUgd2ViIHNlcnZlciBtYXkKbmVlZCB0byBiZSBhZGp1c3RlZC48L3A+Cgo8cD5JZiBubyBPQ1NQIFVSSSBpcyBwcm92aWRlZCwgY29udGFjdCB5b3VyIENlcnRpZmljYXRlIEF1dGhvcml0eSB0bwpkZXRlcm1pbmUgaWYgb25lIGlzIGF2YWlsYWJsZTsgaWYgc28sIGNvbmZpZ3VyZSBpdCB3aXRoCjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2Rfc3NsLmh0bWwjc3Nsc3RhcGxpbmdmb3JjZXVybCI+U1NMU3RhcGxpbmdGb3JjZVVSTDwvYT48L2NvZGU+IGluIHRoZSB2aXJ0dWFsCmhvc3QgdGhhdCB1c2VzIHRoZSBjZXJ0aWZpY2F0ZS48L3A+CgoKPGgzPklmIG11bHRpcGxlIFNTTC1lbmFibGVkIHZpcnR1YWwgaG9zdHMgYXJlIGNvbmZpZ3VyZWQgYW5kIE9DU1AKU3RhcGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIGZvciBzb21lPC9oMz4KCgo8cD5BZGQgPGNvZGU+U1NMVXNlU3RhcGxpbmcgT2ZmPC9jb2RlPiB0byB0aGUgdmlydHVhbCBob3N0cyBmb3Igd2hpY2ggT0NTUApTdGFwbGluZyBzaG91bGQgYmUgZGlzYWJsZWQuPC9wPgoKCjxoMz5JZiB0aGUgT0NTUCByZXNwb25kZXIgaXMgc2xvdyBvciB1bnJlbGlhYmxlPC9oMz4KCjxwPlNldmVyYWwgZGlyZWN0aXZlcyBhcmUgYXZhaWxhYmxlIHRvIGhhbmRsZSB0aW1lb3V0cyBhbmQgZXJyb3JzLiAgUmVmZXIKdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZQo8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX3NzbC5odG1sI3NzbHN0YXBsaW5nZmFrZXRyeWxhdGVyIj5TU0xTdGFwbGluZ0Zha2VUcnlMYXRlcjwvYT48L2NvZGU+LAo8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX3NzbC5odG1sI3NzbHN0YXBsaW5ncmVzcG9uZGVydGltZW91dCI+U1NMU3RhcGxpbmdSZXNwb25kZXJUaW1lb3V0PC9hPjwvY29kZT4sIGFuZAo8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX3NzbC5odG1sI3NzbHN0YXBsaW5ncmV0dXJucmVzcG9uZGVyZXJyb3JzIj5TU0xTdGFwbGluZ1JldHVyblJlc3BvbmRlckVycm9yczwvYT48L2NvZGU+CmRpcmVjdGl2ZXMuPC9wPgoKCjxoMz5JZiBtb2Rfc3NsIGxvZ3MgZXJyb3IgQUgwMjIxNzwvaDM+Cgo8cHJlPkFIMDIyMTc6IHNzbF9zdGFwbGluZ19pbml0X2NlcnQ6IENhbid0IHJldHJpZXZlIGlzc3VlciBjZXJ0aWZpY2F0ZSE8L3ByZT4KPHA+SW4gb3JkZXIgdG8gc3VwcG9ydCBPQ1NQIFN0YXBsaW5nIHdoZW4gYSBwYXJ0aWN1bGFyIHNlcnZlciBjZXJ0aWZpY2F0ZSBpcwp1c2VkLCB0aGUgY2VydGlmaWNhdGUgY2hhaW4gZm9yIHRoYXQgY2VydGlmaWNhdGUgbXVzdCBiZSBjb25maWd1cmVkLiAgSWYgaXQKd2FzIG5vdCBjb25maWd1cmVkIGFzIHBhcnQgb2YgZW5hYmxpbmcgU1NMLCB0aGUgQUgwMjIxNyBlcnJvciB3aWxsIGJlIGlzc3VlZAp3aGVuIHN0YXBsaW5nIGlzIGVuYWJsZWQsIGFuZCBhbiBPQ1NQIHJlc3BvbnNlIHdpbGwgbm90IGJlIHByb3ZpZGVkIGZvciBjbGllbnRzCnVzaW5nIHRoZSBjZXJ0aWZpY2F0ZS48L3A+Cgo8cD5SZWZlciB0byB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zc2wuaHRtbCNzc2xjZXJ0aWZpY2F0ZWNoYWluZmlsZSI+U1NMQ2VydGlmaWNhdGVDaGFpbkZpbGU8L2E+PC9jb2RlPgphbmQgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zc2wuaHRtbCNzc2xjZXJ0aWZpY2F0ZWZpbGUiPlNTTENlcnRpZmljYXRlRmlsZTwvYT48L2NvZGU+IGZvciBpbnN0cnVjdGlvbnMKZm9yIGNvbmZpZ3VyaW5nIHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbi48L3A+CgoKPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iYWNjZXNzY29udHJvbCIgaWQ9ImFjY2Vzc2NvbnRyb2wiPkNsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgQWNjZXNzIENvbnRyb2w8L2E+PC9oMj4KCjx1bD4KPGxpPjxhIGhyZWY9IiNhbGxjbGllbnRzIj5Ib3cgY2FuIEkgZm9yY2UgY2xpZW50cyB0byBhdXRoZW50aWNhdGUgdXNpbmcgY2VydGlmaWNhdGVzPzwvYT48L2xpPgo8bGk+PGEgaHJlZj0iI2FyYml0cmFyeWNsaWVudHMiPkhvdyBjYW4gSSBmb3JjZSBjbGllbnRzIHRvIGF1dGhlbnRpY2F0ZSB1c2luZyBjZXJ0aWZpY2F0ZXMgZm9yIGEKICAgICAgICBwYXJ0aWN1bGFyIFVSTCwgYnV0IHN0aWxsIGFsbG93IGFyYml0cmFyeSBjbGllbnRzIHRvIGFjY2VzcyB0aGUgcmVzdCBvZiB0aGUgc2VydmVyPzwvYT48L2xpPgo8bGk+PGEgaHJlZj0iI2NlcnRhdXRoZW50aWNhdGUiPkhvdyBjYW4gSSBhbGxvdyBvbmx5IGNsaWVudHMgd2hvIGhhdmUgY2VydGlmaWNhdGVzIHRvIGFjY2VzcyBhCiAgICAgICAgcGFydGljdWxhciBVUkwsIGJ1dCBhbGxvdyBhbGwgY2xpZW50cyB0byBhY2Nlc3MgdGhlIHJlc3Qgb2YgdGhlIHNlcnZlcj88L2E+PC9saT4KPGxpPjxhIGhyZWY9IiNpbnRyYW5ldCI+SG93IGNhbiBJIHJlcXVpcmUgSFRUUFMgd2l0aCBzdHJvbmcgY2lwaGVycywgYW5kIGVpdGhlcgpiYXNpYyBhdXRoZW50aWNhdGlvbiBvciBjbGllbnQgY2VydGlmaWNhdGVzLCBmb3IgYWNjZXNzIHRvIHBhcnQgb2YgdGhlCkludHJhbmV0IHdlYnNpdGUsIGZvciBjbGllbnRzIGNvbWluZyBmcm9tIHRoZSBJbnRlcm5ldD88L2E+PC9saT4KPC91bD4KCjxoMz48YSBuYW1lPSJhbGxjbGllbnRzIiBpZD0iYWxsY2xpZW50cyI+SG93IGNhbiBJIGZvcmNlIGNsaWVudHMgdG8gYXV0aGVudGljYXRlIHVzaW5nIGNlcnRpZmljYXRlcz88L2E+PC9oMz4KCgogICAgPHA+V2hlbiB5b3Uga25vdyBhbGwgb2YgeW91ciB1c2VycyAoZWcsIGFzIGlzIG9mdGVuIHRoZSBjYXNlIG9uIGEgY29ycG9yYXRlCiAgICBJbnRyYW5ldCksIHlvdSBjYW4gcmVxdWlyZSBwbGFpbiBjZXJ0aWZpY2F0ZSBhdXRoZW50aWNhdGlvbi4gQWxsIHlvdQogICAgbmVlZCB0byBkbyBpcyB0byBjcmVhdGUgY2xpZW50IGNlcnRpZmljYXRlcyBzaWduZWQgYnkgeW91ciBvd24gQ0EKICAgIGNlcnRpZmljYXRlICg8Y29kZT5jYS5jcnQ8L2NvZGU+KSBhbmQgdGhlbiB2ZXJpZnkgdGhlIGNsaWVudHMgYWdhaW5zdCB0aGlzCiAgICBjZXJ0aWZpY2F0ZS48L3A+CiAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+IyByZXF1aXJlIGEgY2xpZW50IGNlcnRpZmljYXRlIHdoaWNoIGhhcyB0byBiZSBkaXJlY3RseQojIHNpZ25lZCBieSBvdXIgQ0EgY2VydGlmaWNhdGUgaW4gY2EuY3J0ClNTTFZlcmlmeUNsaWVudCByZXF1aXJlClNTTFZlcmlmeURlcHRoIDEKU1NMQ0FDZXJ0aWZpY2F0ZUZpbGUgImNvbmYvc3NsLmNydC9jYS5jcnQiPC9wcmU+CgoKCjxoMz48YSBuYW1lPSJhcmJpdHJhcnljbGllbnRzIiBpZD0iYXJiaXRyYXJ5Y2xpZW50cyI+SG93IGNhbiBJIGZvcmNlIGNsaWVudHMgdG8gYXV0aGVudGljYXRlIHVzaW5nIGNlcnRpZmljYXRlcyBmb3IgYQogIHBhcnRpY3VsYXIgVVJMLCBidXQgc3RpbGwgYWxsb3cgYXJiaXRyYXJ5IGNsaWVudHMgdG8gYWNjZXNzIHRoZSByZXN0IG9mIHRoZSBzZXJ2ZXI/PC9hPjwvaDM+CgoKICAgIDxwPlRvIGZvcmNlIGNsaWVudHMgdG8gYXV0aGVudGljYXRlIHVzaW5nIGNlcnRpZmljYXRlcyBmb3IgYSBwYXJ0aWN1bGFyIFVSTCwKICAgIHlvdSBjYW4gdXNlIHRoZSBwZXItZGlyZWN0b3J5IHJlY29uZmlndXJhdGlvbiBmZWF0dXJlcyBvZgogICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zc2wuaHRtbCI+bW9kX3NzbDwvYT48L2NvZGU+OjwvcD4KCiAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+U1NMVmVyaWZ5Q2xpZW50IG5vbmUKU1NMQ0FDZXJ0aWZpY2F0ZUZpbGUgImNvbmYvc3NsLmNydC9jYS5jcnQiCgombHQ7TG9jYXRpb24gIi9zZWN1cmUvYXJlYSImZ3Q7ClNTTFZlcmlmeUNsaWVudCByZXF1aXJlClNTTFZlcmlmeURlcHRoIDEKJmx0Oy9Mb2NhdGlvbiZndDs8L3ByZT4KCgoKPGgzPjxhIG5hbWU9ImNlcnRhdXRoZW50aWNhdGUiIGlkPSJjZXJ0YXV0aGVudGljYXRlIj5Ib3cgY2FuIEkgYWxsb3cgb25seSBjbGllbnRzIHdobyBoYXZlIGNlcnRpZmljYXRlcyB0byBhY2Nlc3MgYQogIHBhcnRpY3VsYXIgVVJMLCBidXQgYWxsb3cgYWxsIGNsaWVudHMgdG8gYWNjZXNzIHRoZSByZXN0IG9mIHRoZSBzZXJ2ZXI/PC9hPjwvaDM+CgoKICAgIDxwPlRoZSBrZXkgdG8gZG9pbmcgdGhpcyBpcyBjaGVja2luZyB0aGF0IHBhcnQgb2YgdGhlIGNsaWVudCBjZXJ0aWZpY2F0ZQogICAgbWF0Y2hlcyB3aGF0IHlvdSBleHBlY3QuIFVzdWFsbHkgdGhpcyBtZWFucyBjaGVja2luZyBhbGwgb3IgcGFydCBvZiB0aGUKICAgIERpc3Rpbmd1aXNoZWQgTmFtZSAoRE4pLCB0byBzZWUgaWYgaXQgY29udGFpbnMgc29tZSBrbm93biBzdHJpbmcuCiAgICBUaGVyZSBhcmUgdHdvIHdheXMgdG8gZG8gdGhpcywgdXNpbmcgZWl0aGVyIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aF9iYXNpYy5odG1sIj5tb2RfYXV0aF9iYXNpYzwvYT48L2NvZGU+IG9yCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX3NzbC5odG1sI3NzbHJlcXVpcmUiPlNTTFJlcXVpcmU8L2E+PC9jb2RlPi48L3A+CgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYXV0aF9iYXNpYy5odG1sIj5tb2RfYXV0aF9iYXNpYzwvYT48L2NvZGU+IG1ldGhvZCBpcyBnZW5lcmFsbHkgcmVxdWlyZWQgd2hlbgogICAgdGhlIGNlcnRpZmljYXRlcyBhcmUgY29tcGxldGVseSBhcmJpdHJhcnksIG9yIHdoZW4gdGhlaXIgRE5zIGhhdmUKICAgIG5vIGNvbW1vbiBmaWVsZHMgKHVzdWFsbHkgdGhlIG9yZ2FuaXNhdGlvbiwgZXRjLikuIEluIHRoaXMgY2FzZSwKICAgIHlvdSBzaG91bGQgZXN0YWJsaXNoIGEgcGFzc3dvcmQgZGF0YWJhc2UgY29udGFpbmluZyA8ZW0+YWxsPC9lbT4KICAgIGNsaWVudHMgYWxsb3dlZCwgYXMgZm9sbG93czo8L3A+CgogICAgPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPlNTTFZlcmlmeUNsaWVudCAgICAgIG5vbmUKU1NMQ0FDZXJ0aWZpY2F0ZUZpbGUgImNvbmYvc3NsLmNydC9jYS5jcnQiClNTTENBQ2VydGlmaWNhdGVQYXRoICJjb25mL3NzbC5jcnQiCgombHQ7RGlyZWN0b3J5ICIvdXNyL2xvY2FsL2FwYWNoZTIvaHRkb2NzL3NlY3VyZS9hcmVhIiZndDsKICAgIFNTTFZlcmlmeUNsaWVudCAgICAgIHJlcXVpcmUKICAgIFNTTFZlcmlmeURlcHRoICAgICAgIDUKICAgIFNTTE9wdGlvbnMgICAgICAgICAgICtGYWtlQmFzaWNBdXRoCiAgICBTU0xSZXF1aXJlU1NMCiAgICBBdXRoTmFtZSAgICAgICAgICAgICAiU25ha2UgT2lsIEF1dGhlbnRpY2F0aW9uIgogICAgQXV0aFR5cGUgICAgICAgICAgICAgQmFzaWMKICAgIEF1dGhCYXNpY1Byb3ZpZGVyICAgIGZpbGUKICAgIEF1dGhVc2VyRmlsZSAgICAgICAgICIvdXNyL2xvY2FsL2FwYWNoZTIvY29uZi9odHRwZC5wYXNzd2QiCiAgICBSZXF1aXJlICAgICAgICAgICAgICB2YWxpZC11c2VyCiZsdDsvRGlyZWN0b3J5Jmd0OzwvcHJlPgoKCiAgICA8cD5UaGUgcGFzc3dvcmQgdXNlZCBpbiB0aGlzIGV4YW1wbGUgaXMgdGhlIERFUyBlbmNyeXB0ZWQgc3RyaW5nICJwYXNzd29yZCIuCiAgICBTZWUgdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2Rfc3NsLmh0bWwjc3Nsb3B0aW9ucyI+U1NMT3B0aW9uczwvYT48L2NvZGU+IGRvY3MgZm9yIG1vcmUKICAgIGluZm9ybWF0aW9uLjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+aHR0cGQucGFzc3dkPC9oMz48cHJlPi9DPURFL0w9TXVuaWNoL089U25ha2UgT2lsLCBMdGQuL09VPVN0YWZmL0NOPUZvbzp4eGozMVpNVFp6a1ZBCi9DPVVTL0w9Uy5GLi9PPVNuYWtlIE9pbCwgTHRkLi9PVT1DQS9DTj1CYXI6eHhqMzFaTVRaemtWQQovQz1VUy9MPUwuQS4vTz1TbmFrZSBPaWwsIEx0ZC4vT1U9RGV2L0NOPVF1dXg6eHhqMzFaTVRaemtWQTwvcHJlPjwvZGl2PgoKICAgIDxwPldoZW4geW91ciBjbGllbnRzIGFyZSBhbGwgcGFydCBvZiBhIGNvbW1vbiBoaWVyYXJjaHksIHdoaWNoIGlzIGVuY29kZWQKICAgIGludG8gdGhlIEROLCB5b3UgY2FuIG1hdGNoIHRoZW0gbW9yZSBlYXNpbHkgdXNpbmcgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zc2wuaHRtbCNzc2xyZXF1aXJlIj5TU0xSZXF1aXJlPC9hPjwvY29kZT4sIGFzIGZvbGxvd3M6PC9wPgoKCiAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+U1NMVmVyaWZ5Q2xpZW50ICAgICAgbm9uZQpTU0xDQUNlcnRpZmljYXRlRmlsZSAiY29uZi9zc2wuY3J0L2NhLmNydCIKU1NMQ0FDZXJ0aWZpY2F0ZVBhdGggImNvbmYvc3NsLmNydCIKCiZsdDtEaXJlY3RvcnkgIi91c3IvbG9jYWwvYXBhY2hlMi9odGRvY3Mvc2VjdXJlL2FyZWEiJmd0OwogIFNTTFZlcmlmeUNsaWVudCAgICAgIHJlcXVpcmUKICBTU0xWZXJpZnlEZXB0aCAgICAgICA1CiAgU1NMT3B0aW9ucyAgICAgICAgICAgK0Zha2VCYXNpY0F1dGgKICBTU0xSZXF1aXJlU1NMCiAgU1NMUmVxdWlyZSAgICAgICAle1NTTF9DTElFTlRfU19ETl9PfSAgZXEgIlNuYWtlIE9pbCwgTHRkLiIgXAogICAgICAgICAgICAgICBhbmQgJXtTU0xfQ0xJRU5UX1NfRE5fT1V9IGluIHsiU3RhZmYiLCAiQ0EiLCAiRGV2In0KJmx0Oy9EaXJlY3RvcnkmZ3Q7PC9wcmU+CgoKCjxoMz48YSBuYW1lPSJpbnRyYW5ldCIgaWQ9ImludHJhbmV0Ij5Ib3cgY2FuIEkgcmVxdWlyZSBIVFRQUyB3aXRoIHN0cm9uZyBjaXBoZXJzLCBhbmQgZWl0aGVyIGJhc2ljCmF1dGhlbnRpY2F0aW9uIG9yIGNsaWVudCBjZXJ0aWZpY2F0ZXMsIGZvciBhY2Nlc3MgdG8gcGFydCBvZiB0aGUKSW50cmFuZXQgd2Vic2l0ZSwgZm9yIGNsaWVudHMgY29taW5nIGZyb20gdGhlIEludGVybmV0PyBJIHN0aWxsIHdhbnQgdG8gYWxsb3cKcGxhaW4gSFRUUCBhY2Nlc3MgZm9yIGNsaWVudHMgb24gdGhlIEludHJhbmV0LjwvYT48L2gzPgoKCiAgIDxwPlRoZXNlIGV4YW1wbGVzIHByZXN1bWUgdGhhdCBjbGllbnRzIG9uIHRoZSBJbnRyYW5ldCBoYXZlIElQcyBpbiB0aGUgcmFuZ2UKICAgMTkyLjE2OC4xLjAvMjQsIGFuZCB0aGF0IHRoZSBwYXJ0IG9mIHRoZSBJbnRyYW5ldCB3ZWJzaXRlIHlvdSB3YW50IHRvIGFsbG93CiAgIGludGVybmV0IGFjY2VzcyB0byBpcyA8Y29kZT4vdXNyL2xvY2FsL2FwYWNoZTIvaHRkb2NzL3N1YmFyZWE8L2NvZGU+LgogICBUaGlzIGNvbmZpZ3VyYXRpb24gc2hvdWxkIHJlbWFpbiBvdXRzaWRlIG9mIHlvdXIgSFRUUFMgdmlydHVhbCBob3N0LCBzbwogICB0aGF0IGl0IGFwcGxpZXMgdG8gYm90aCBIVFRQUyBhbmQgSFRUUC48L3A+CgogICAgPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPlNTTENBQ2VydGlmaWNhdGVGaWxlICJjb25mL3NzbC5jcnQvY29tcGFueS1jYS5jcnQiCgombHQ7RGlyZWN0b3J5ICIvdXNyL2xvY2FsL2FwYWNoZTIvaHRkb2NzIiZndDsKICAgICMgICBPdXRzaWRlIHRoZSBzdWJhcmVhIG9ubHkgSW50cmFuZXQgYWNjZXNzIGlzIGdyYW50ZWQKICAgIFJlcXVpcmUgICAgICAgICAgICAgIGlwIDE5Mi4xNjguMS4wLzI0CiZsdDsvRGlyZWN0b3J5Jmd0OwoKJmx0O0RpcmVjdG9yeSAiL3Vzci9sb2NhbC9hcGFjaGUyL2h0ZG9jcy9zdWJhcmVhIiZndDsKICAgICMgICBJbnNpZGUgdGhlIHN1YmFyZWEgYW55IEludHJhbmV0IGFjY2VzcyBpcyBhbGxvd2VkCiAgICAjICAgYnV0IGZyb20gdGhlIEludGVybmV0IG9ubHkgSFRUUFMgKyBTdHJvbmctQ2lwaGVyICsgUGFzc3dvcmQKICAgICMgICBvciB0aGUgYWx0ZXJuYXRpdmUgSFRUUFMgKyBTdHJvbmctQ2lwaGVyICsgQ2xpZW50LUNlcnRpZmljYXRlCgogICAgIyAgIElmIEhUVFBTIGlzIHVzZWQsIG1ha2Ugc3VyZSBhIHN0cm9uZyBjaXBoZXIgaXMgdXNlZC4KICAgICMgICBBZGRpdGlvbmFsbHkgYWxsb3cgY2xpZW50IGNlcnRzIGFzIGFsdGVybmF0aXZlIHRvIGJhc2ljIGF1dGguCiAgICBTU0xWZXJpZnlDbGllbnQgICAgICBvcHRpb25hbAogICAgU1NMVmVyaWZ5RGVwdGggICAgICAgMQogICAgU1NMT3B0aW9ucyAgICAgICAgICAgK0Zha2VCYXNpY0F1dGggK1N0cmljdFJlcXVpcmUKICAgIFNTTFJlcXVpcmUgICAgICAgICAgICV7U1NMX0NJUEhFUl9VU0VLRVlTSVpFfSAmZ3Q7PSAxMjgKCiAgICAjICAgRm9yY2UgY2xpZW50cyBmcm9tIHRoZSBJbnRlcm5ldCB0byB1c2UgSFRUUFMKICAgIFJld3JpdGVFbmdpbmUgICAgICAgIG9uCiAgICBSZXdyaXRlQ29uZCAgICAgICAgICAiJXtSRU1PVEVfQUREUn0iICIhXjE5MlwuMTY4XC4xXC5bMC05XSskIgogICAgUmV3cml0ZUNvbmQgICAgICAgICAgIiV7SFRUUFN9IiAgICAgICAiIT1vbiIKICAgIFJld3JpdGVSdWxlICAgICAgICAgICIuIiAgICAgICAgICAgICAgIi0iICAgICAgICAgICAgICAgICAgICAgIFtGXQoKICAgICMgICBBbGxvdyBOZXR3b3JrIEFjY2VzcyBhbmQvb3IgQmFzaWMgQXV0aAogICAgU2F0aXNmeSAgICAgICAgICAgICAgYW55CgogICAgIyAgIE5ldHdvcmsgQWNjZXNzIENvbnRyb2wKICAgIFJlcXVpcmUgICAgICAgICAgICAgIGlwIDE5Mi4xNjguMS4wLzI0CgogICAgIyAgIEhUVFAgQmFzaWMgQXV0aGVudGljYXRpb24KICAgIEF1dGhUeXBlICAgICAgICAgICAgIGJhc2ljCiAgICBBdXRoTmFtZSAgICAgICAgICAgICAiUHJvdGVjdGVkIEludHJhbmV0IEFyZWEiCiAgICBBdXRoQmFzaWNQcm92aWRlciAgICBmaWxlCiAgICBBdXRoVXNlckZpbGUgICAgICAgICAiY29uZi9wcm90ZWN0ZWQucGFzc3dkIgogICAgUmVxdWlyZSAgICAgICAgICAgICAgdmFsaWQtdXNlcgombHQ7L0RpcmVjdG9yeSZndDs8L3ByZT4KCgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJsb2dnaW5nIiBpZD0ibG9nZ2luZyI+TG9nZ2luZzwvYT48L2gyPgogICAgCgogICAgPHA+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9zc2wuaHRtbCI+bW9kX3NzbDwvYT48L2NvZGU+IGNhbiBsb2cgZXh0cmVtZWx5IHZlcmJvc2UgZGVidWdnaW5nIGluZm9ybWF0aW9uCiAgICB0byB0aGUgZXJyb3IgbG9nLCB3aGVuIGl0cyA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI2xvZ2xldmVsIj5Mb2dMZXZlbDwvYT48L2NvZGU+IGlzCiAgICBzZXQgdG8gdGhlIGhpZ2hlciB0cmFjZSBsZXZlbHMuIE9uIHRoZSBvdGhlciBoYW5kLCBvbiBhIHZlcnkgYnVzeSBzZXJ2ZXIsCiAgICBsZXZlbCA8Y29kZT5pbmZvPC9jb2RlPiBtYXkgYWxyZWFkeSBiZSB0b28gbXVjaC4gUmVtZW1iZXIgdGhhdCB5b3UgY2FuCiAgICBjb25maWd1cmUgdGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjbG9nbGV2ZWwiPkxvZ0xldmVsPC9hPjwvY29kZT4gcGVyIG1vZHVsZSB0bwogICAgc3VpdGUgeW91ciBuZWVkcy48L3A+CjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJib3R0b21sYW5nIj4KPHA+PHNwYW4+QXZhaWxhYmxlIExhbmd1YWdlczogPC9zcGFuPjxhIGhyZWY9Ii4uL2VuL3NzbC9zc2xfaG93dG8uaHRtbCIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2ZyL3NzbC9zc2xfaG93dG8uaHRtbCIgaHJlZmxhbmc9ImZyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkZyYW7nYWlzIj4mbmJzcDtmciZuYnNwOzwvYT48L3A+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgYWx0PSJ0b3AiIC8+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxoMj48YSBpZD0iY29tbWVudHNfc2VjdGlvbiIgbmFtZT0iY29tbWVudHNfc2VjdGlvbiI+Q29tbWVudHM8L2E+PC9oMj48ZGl2IGNsYXNzPSJ3YXJuaW5nIj48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz48YnIgLz5UaGlzIGlzIG5vdCBhIFEmYW1wO0Egc2VjdGlvbi4gQ29tbWVudHMgcGxhY2VkIGhlcmUgc2hvdWxkIGJlIHBvaW50ZWQgdG93YXJkcyBzdWdnZXN0aW9ucyBvbiBpbXByb3ZpbmcgdGhlIGRvY3VtZW50YXRpb24gb3Igc2VydmVyLCBhbmQgbWF5IGJlIHJlbW92ZWQgYWdhaW4gYnkgb3VyIG1vZGVyYXRvcnMgaWYgdGhleSBhcmUgZWl0aGVyIGltcGxlbWVudGVkIG9yIGNvbnNpZGVyZWQgaW52YWxpZC9vZmYtdG9waWMuIFF1ZXN0aW9ucyBvbiBob3cgdG8gbWFuYWdlIHRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgc2hvdWxkIGJlIGRpcmVjdGVkIGF0IGVpdGhlciBvdXIgSVJDIGNoYW5uZWwsICNodHRwZCwgb24gRnJlZW5vZGUsIG9yIHNlbnQgdG8gb3VyIDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2xpc3RzLmh0bWwiPm1haWxpbmcgbGlzdHM8L2E+LjwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLS8vLS0+PCFbQ0RBVEFbLy8+PCEtLQp2YXIgY29tbWVudHNfc2hvcnRuYW1lID0gJ2h0dHBkJzsKdmFyIGNvbW1lbnRzX2lkZW50aWZpZXIgPSAnaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy90cnVuay9zc2wvc3NsX2hvd3RvLmh0bWwnOwooZnVuY3Rpb24odywgZCkgewogICAgaWYgKHcubG9jYXRpb24uaG9zdG5hbWUudG9Mb3dlckNhc2UoKSA9PSAiaHR0cGQuYXBhY2hlLm9yZyIpIHsKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPjxcL2Rpdj4nKTsKICAgICAgICB2YXIgcyA9IGQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgcy50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICAgICAgcy5hc3luYyA9IHRydWU7CiAgICAgICAgcy5zcmMgPSAnaHR0cHM6Ly9jb21tZW50cy5hcGFjaGUub3JnL3Nob3dfY29tbWVudHMubHVhP3NpdGU9JyArIGNvbW1lbnRzX3Nob3J0bmFtZSArICcmcGFnZT0nICsgY29tbWVudHNfaWRlbnRpZmllcjsKICAgICAgICAoZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdIHx8IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXSkuYXBwZW5kQ2hpbGQocyk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBkLndyaXRlKCc8ZGl2IGlkPSJjb21tZW50c190aHJlYWQiPkNvbW1lbnRzIGFyZSBkaXNhYmxlZCBmb3IgdGhpcyBwYWdlIGF0IHRoZSBtb21lbnQuPFwvZGl2PicpOwogICAgfQp9KSh3aW5kb3csIGRvY3VtZW50KTsKLy8tLT48IV1dPjwvc2NyaXB0PjwvZGl2PjxkaXYgaWQ9ImZvb3RlciI+CjxwIGNsYXNzPSJhcGFjaGUiPkNvcHlyaWdodCAyMDE3IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi48YnIgLz5MaWNlbnNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL3F1aWNrcmVmZXJlbmNlLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCmlmICh0eXBlb2YocHJldHR5UHJpbnQpICE9PSAndW5kZWZpbmVkJykgewogICAgcHJldHR5UHJpbnQoKTsKfQovLy0tPjwhXV0+PC9zY3JpcHQ+CjwvYm9keT48L2h0bWw+