PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIGh0bWwKICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sPgo8aGVhZD4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vY29tLmlibS5oZWxwLmRvYy9zd2dfaW5mb19jb21tb24uY3NzIiAvPgo8dGl0bGU+Q3JlYXRpbmcgYSBuZXcgZmlsdGVyIGNsYXNzPC90aXRsZT4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCI+CiAgICBmdW5jdGlvbiBwb3B1cF93aW5kb3coIHVybCwgaWQsIHdpZHRoLCBoZWlnaHQgKQogICAgewogICAgICBwb3B1cCA9IHdpbmRvdy5vcGVuKCB1cmwsIGlkLCAndG9vbGJhcj1ubyxzY3JvbGxiYXJzPW5vLGxvY2F0aW9uPW5vLHN0YXR1c2Jhcj1ubyxtZW51YmFyPW5vLHJlc2l6YWJsZT1ubyx3aWR0aD0nICsgd2lkdGggKyAnLGhlaWdodD0nICsgaGVpZ2h0ICsgJyxsZWZ0PSx0b3A9JyApOwogICAgICBwb3B1cC5mb2N1cygpOwogICAgfQo8L3NjcmlwdD48c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiBzcmM9ImhlbHAvbGl2ZUhlbHAuanMiPjwvc2NyaXB0PjwvaGVhZD4KPGJvZHkgaWQ9InR3Zmx0cnd6Ij48YSBuYW1lPSJ0d2ZsdHJ3eiI+PCEtLSAtLT48L2E+Cgo8aDEgY2xhc3M9InRvcGljdGl0bGUxIj5DcmVhdGluZyBhIG5ldyBmaWx0ZXIgY2xhc3M8L2gxPgo8ZGl2PjxkaXYgY2xhc3M9InNraXBzcGFjZSI+IDxwPiBUaGUgRmlsdGVyIHdpemFyZCBlbmFibGVzIHlvdSB0byBjcmVhdGUgSmF2YZkgZmlsdGVyCgpjbGFzc2VzIGZvciB2YXJpb3VzIEoyRUUgZmlsdGVyIHR5cGVzLCBzdWNoIGFzIGF1dGhlbnRpY2F0aW9uIGZpbHRlcnMsIGVuY3J5cHRpb24KCmZpbHRlcnMsIGFuZCBkYXRhIGNvbXByZXNzaW9uIGZpbHRlcnMuPC9wPgo8cD5UbyBjcmVhdGUgYSBmaWx0ZXIgY2xhc3MsIGRvCgp0aGUgZm9sbG93aW5nOiA8L3A+CjwvZGl2Pgo8b2w+PGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPk9wZW4gdGhlIEZpbHRlciB3aXphcmQuIFRvIGRvIHRoaXM6PC9zcGFuPjxvbCB0eXBlPSJhIj48bGk+PHNwYW4+T3BlbiB0aGUgV2ViIHBlcnNwZWN0aXZlIGFuZCBkaXNwbGF5IHRoZSBQcm9qZWN0IEV4cGxvcmVyIHZpZXcuPC9zcGFuPjwvbGk+CjxsaT48c3Bhbj5FeHBhbmQgdGhlIHByb2plY3QgaW4gd2hpY2ggeW91IHdhbnQgdG8gY3JlYXRlIHRoZSBmaWx0ZXI8L3NwYW4+PC9saT4KPGxpPjxzcGFuPkV4cGFuZCB0aGUgZGVwbG95bWVudCBkZXNjcmlwdG9yIGljb248L3NwYW4+PC9saT4KPGxpPjxzcGFuPlJpZ2h0IGNsaWNrIG9uIHRoZSA8Yj5GaWx0ZXJzPC9iPiBpY29uLjwvc3Bhbj48L2xpPgo8bGk+PHNwYW4+U2VsZWN0IDxzcGFuIGNsYXNzPSJtZW51Y2FzY2FkZSI+PHNwYW4gY2xhc3M9InVpY29udHJvbCI+TmV3PC9zcGFuPiAmZ3Q7IDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkZpbHRlcjwvc3Bhbj48L3NwYW4+IGZyb20gdGhlIHBvcC11cCBtZW51Ljwvc3Bhbj48L2xpPgo8L29sPgogIFRoZSA8c3BhbiBjbGFzcz0idWljb250cm9sIj5DcmVhdGUgRmlsdGVyPC9zcGFuPiB3aXphcmQgYXBwZWFycy4gIDwvbGk+CjxsaSBjbGFzcz0ic2tpcHNwYWNlIj48c3Bhbj5UeXBlIGEgbmFtZSBhbmQgZGVzY3JpcHRpb24gZm9yIHRoZSBmaWx0ZXIuIE5vdGljZSB0aGF0IHRoZSBuYW1lCgp0aGF0IHlvdSB0eXBlIGluIHRoZSA8Yj5OYW1lPC9iPiBmaWVsZCBpcyB1c2VkIHRvIGNyZWF0ZSBhIFVSTCBNYXBwaW5nIGZvcgoKdGhlIGZpbHRlci4gT3B0aW9uYWxseSBhZGQgaW5pdGlhbGl6YXRpb24gcGFyYW1ldGVycyBvciBhbiBhbHRlcm5hdGl2ZSBVUkwKCm1hcHBpbmcsIGFuZCB0aGVuIHNlbGVjdCA8Yj5OZXh0PC9iPi48L3NwYW4+PC9saT4KPGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPlNwZWNpZnkgdGhlIGZvbGRlciB3aGVyZSB0aGUgZmlsdGVyIGNsYXNzIHdpbGwgYmUgcGxhY2VkLiAoWW91CgpzaG91bGQgcGxhY2UgdGhlIGZpbHRlciBpbiB0aGUgSmF2YSBzb3VyY2UgZm9sZGVyKSBBbHNvIHNwZWNpZnkgdGhlIHBhY2thZ2UKCnRoYXQgdGhlIGNsYXNzIHdpbGwgYmVsb25nIHRvIChpdCBpcyBhZGRlZCBpbnRvIGEgZGVmYXVsdCBwYWNrYWdlIGlmIHlvdSBkbwoKbm90IHNwZWNpZnkgb25lKSwgYW5kIHRoZSBjbGFzcyBuYW1lIG9mIHRoZSBmaWx0ZXIuIDwvc3Bhbj48L2xpPgo8bGkgY2xhc3M9InNraXBzcGFjZSI+PHNwYW4+U3BlY2lmeSBhIHN1cGVyY2xhc3MgZm9yIHRoZSBmaWx0ZXIgY2xhc3MuIEEgZmlsdGVyIGNyZWF0ZWQgYnkKCnRoaXMgd2l6YXJkIGNhbiBoYXZlIGFueSBjbGFzcyB0aGF0IGhhcyBPYmplY3QgaW4gaXRzIGhpZXJhcmNoeSBhcyBpdHMgc3VwZXJjbGFzcy4KCkNsaWNrIDxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkJyb3dzZTwvc3Bhbj4gdG8gY2hvb3NlIGZyb20gdGhlIGF2YWlsYWJsZSBzdXBlcmNsYXNzZXMuCgpXaGVuIGZpbmlzaGVkIHNlbGVjdCA8Yj5OZXh0PC9iPi48L3NwYW4+PC9saT4KPGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPlNlbGVjdCBhIG1vZGlmaWVyIHRvIHNwZWNpZnkgd2hldGhlciB5b3VyIGZpbHRlciBjbGFzcyBpcyBwdWJsaWMsCgphYnN0cmFjdCwgb3IgZmluYWwuIChDbGFzc2VzIGNhbm5vdCBiZSBib3RoIGFic3RyYWN0IGFuZCBmaW5hbC4pPC9zcGFuPjwvbGk+CjxsaSBjbGFzcz0ic2tpcHNwYWNlIj48c3Bhbj5UaGUgamF2YXguc2VydmxldC5GaWx0ZXIgaXMgcHJvdmlkZWQgYXMgdGhlIGRlZmF1bHQgPHNwYW4+PHNwYW4gY2xhc3M9InVpY29udHJvbCI+SW50ZXJmYWNlPC9zcGFuPjwvc3Bhbj4uCgpZb3UgZG8gbm90IGhhdmUgdG8gaW1wbGVtZW50IHRoZSBGaWx0ZXIgaW50ZXJmYWNlIGlmIHlvdSBzdWJjbGFzcyBhIGNsYXNzCgp0aGF0IGltcGxlbWVudHMgRmlsdGVyLCBvciBpZiB5b3UgaW1wbGVtZW50IGFuIGludGVyZmFjZSB3aGljaCBoYXMgRmlsdGVyCgppbiBpdHMgaGllcmFyY2h5LiA8L3NwYW4+IDxwPllvdSBjYW4gYWxzbyBhZGQgYWRkaXRpb25hbCBpbnRlcmZhY2VzIHRvCgppbXBsZW1lbnQuIENsaWNrIDxzcGFuPjxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkFkZDwvc3Bhbj48L3NwYW4+IHRvIG9wZW4gdGhlIDxzcGFuPjxzcGFuIGNsYXNzPSJ1aWNvbnRyb2wiPkludGVyZmFjZQoKU2VsZWN0aW9uPC9zcGFuPjwvc3Bhbj4gZGlhbG9nLiBJbiB0aGlzIGRpYWxvZywgYXMgeW91IHR5cGUgdGhlIG5hbWUgb2YKCnRoZSBpbnRlcmZhY2UgdGhhdCB5b3UgYXJlIGludGVyZXN0ZWQgaW4gYWRkaW5nIGluIHRoZSA8c3Bhbj48c3BhbiBjbGFzcz0idWljb250cm9sIj5DaG9vc2UKCmludGVyZmFjZXM8L3NwYW4+PC9zcGFuPiBmaWVsZCwgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGludGVyZmFjZXMgbGlzdGVkCgppbiB0aGUgPHNwYW4+PHNwYW4gY2xhc3M9InVpY29udHJvbCI+TWF0Y2hpbmcgdHlwZXM8L3NwYW4+PC9zcGFuPiBsaXN0IGJveCB1cGRhdGVzIGR5bmFtaWNhbGx5Cgp0byBkaXNwbGF5IG9ubHkgdGhlIGludGVyZmFjZXMgdGhhdCBtYXRjaCB0aGUgcGF0dGVybi4gU2VsZWN0IGFuIGludGVyZmFjZQoKdG8gc2VlIHRoZSA8c3Bhbj48c3BhbiBjbGFzcz0idWljb250cm9sIj5RdWFsaWZpZXI8L3NwYW4+PC9zcGFuPiBhbmQgY2xpY2sgPHNwYW4+PHNwYW4gY2xhc3M9InVpY29udHJvbCI+QWRkPC9zcGFuPjwvc3Bhbj4uCgpDbGljayA8c3Bhbj48c3BhbiBjbGFzcz0idWljb250cm9sIj5PSzwvc3Bhbj48L3NwYW4+IHdoZW4geW91IGFyZSBmaW5pc2hlZC4gVGhlIHF1YWxpZmllcgoKdGhhdCB5b3UgY2hvc2UgYXBwZWFycyBpbiB0aGUgSW50ZXJmYWNlcyBkaWFsb2cuPC9wPgo8L2xpPgo8bGkgY2xhc3M9InNraXBzcGFjZSI+PHNwYW4+Q2hvb3NlIHdoaWNoIG1ldGhvZCBzdHViIHlvdSB3YW50IHRvIGNyZWF0ZS48L3NwYW4+IDxwPlRoZSA8c3Bhbj48c3BhbiBjbGFzcz0idWljb250cm9sIj5Jbmhlcml0ZWQKCmFic3RyYWN0IG1ldGhvZHM8L3NwYW4+PC9zcGFuPiBvcHRpb24gYWRkcyBzdHVicyBmb3IgaW5oZXJpdGVkIGFic3RyYWN0CgptZXRob2RzLCBhbmQgdGhhdCBtdXN0IGJlIGltcGxlbWVudGVkICh1bmxlc3MgeW91IGludGVuZCB0byBjcmVhdGUgYW4gYWJzdHJhY3QKCmNsYXNzKS4gQmVjYXVzZSB0aGUgaW5pdCgpLCBkZXN0cm95KCksIGFuZCBkb0ZpbHRlcigpIG1ldGhvZHMgYXJlIGFsbCBkZWZpbmVkCgppbiB0aGUgamF2YXguc2VydmxldC5GaWx0ZXIgaW50ZXJmYWNlLCBzdHVicyBmb3IgdGhlc2UgbWV0aG9kcyBhcmUgYXV0b21hdGljYWxseQoKZ2VuZXJhdGVkIGZvciBlYWNoIG5ldyBmaWx0ZXIgY2xhc3MuPC9wPgo8L2xpPgo8bGkgY2xhc3M9InNraXBzcGFjZSI+PHNwYW4+Q2xpY2sgPHNwYW4+PHNwYW4gY2xhc3M9InVpY29udHJvbCI+RmluaXNoPC9zcGFuPjwvc3Bhbj4uPC9zcGFuPjwvbGk+Cjwvb2w+CjxkaXYgY2xhc3M9InNraXBzcGFjZSI+VGhlIGZpbHRlciB0aGF0IHlvdSBjcmVhdGVkIGFwcGVhcnMgdW5kZXIgdGhlIEZpbHRlcnMgaWNvbi48L2Rpdj4KPC9kaXY+CjxkaXY+PHA+PGIgY2xhc3M9InJlbGNvbmNlcHRzaGQiPlJlbGF0ZWQgY29uY2VwdHM8L2I+PGJyIC8+CjxhIGhyZWY9ImNjd2VieG1sLmh0bWwiIHRpdGxlPSIiPlRoZSBXZWIgZGVwbG95bWVudCBkZXNjcmlwdG9yIGVkaXRvcjwvYT48YnIgLz4KPC9wPgo8L2Rpdj48cD4KCQkoQykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDAwLCAyMDA1LiBBbGwgUmlnaHRzIFJlc2VydmVkLgo8L3A+CjwvYm9keT4KPC9odG1sPg==