{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8dGl0bGU+U2VydmljZXMg4oCUIEFydGlzdGljIFRyZWUgQ2FyZSwgSG91c3RvbiBUWDwvdGl0bGU+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbSI+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbSIgY3Jvc3NvcmlnaW4+CjxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9RnJhdW5jZXM6b3Bzeix3Z2h0QDkuLjE0NCwzMDA7OS4uMTQ0LDUwMDs5Li4xNDQsNjAwOzkuLjE0NCw3MDA7OS4uMTQ0LDkwMCZmYW1pbHk9QXJjaGl2bzp3Z2h0QDQwMDs1MDA7NjAwOzcwMCZmYW1pbHk9U3BhY2UrTW9ubzp3Z2h0QDQwMDs3MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgo8c3R5bGU+CiAgOnJvb3R7CiAgICAtLWNhbm9weTojMTcyNDFBOwogICAgLS1jYW5vcHktMjojMUYzMzI0OwogICAgLS1iYXJrOiMyRTIwMTM7CiAgICAtLWhlYXJ0d29vZDojQkU2QTJFOwogICAgLS1oZWFydHdvb2Qtc29mdDojRTM5QTVDOwogICAgLS1oZWFydHdvb2QtZGVlcDojN0EzQjE1OwogICAgLS1saWNoZW46I0MzRDZCQzsKICAgIC0tY2FudmFzOiNFRkU5RDg7CiAgICAtLWNhbnZhcy0yOiNFNERDQzY7CiAgICAtLWluazojMTQxQjEyOwogICAgLS1yb3BlOiM4QzJGMjY7CiAgICAtLWxpbmU6IHJnYmEoMjM5LDIzMywyMTYsMC4xOCk7CiAgfQoKICAvKiA9PT09PT09PT09PT0gU0NPUElORyA9PT09PT09PT09PT0KICAgICBFdmVyeXRoaW5nIGJlbG93IGlzIHByZWZpeGVkIHdpdGggLmF0Yy1zaXRlIHNvIGl0IGNhbiBvbmx5IGV2ZXIgYWZmZWN0CiAgICAgdGhpcyBibG9jaywgbmV2ZXIgb3RoZXIgY29udGVudCBvbiB0aGUgc2FtZSBGdW5uZWxQYWdlcyBwYWdlLiBUaGUgb25lCiAgICAgZXhjZXB0aW9uIGlzIHRoZSB3cmFwcGVyLWRhcmtlbmluZyBydWxlIGZ1cnRoZXIgZG93biwgd2hpY2ggdXNlcwogICAgIDpoYXMoLmF0Yy1zaXRlKSB0byByZWFjaCB0aGUgRnVubmVsUGFnZXMgZWRpdG9yJ3Mgb3duIGFuY2VzdG9yIHdyYXBwZXIKICAgICBkaXZzICh0aG9zZSBzaXQgQUJPVkUgLmF0Yy1zaXRlIGluIHRoZSBET00sIHNvIGEgbm9ybWFsIGRlc2NlbmRhbnQKICAgICBzZWxlY3RvciBjYW4ndCByZWFjaCB0aGVtIOKAlCA6aGFzKCkgaXMgdGhlIGNvcnJlY3QgdG9vbCBmb3IgdGhhdCkuICovCiAgLmF0Yy1zaXRlICp7Ym94LXNpemluZzpib3JkZXItYm94O30KICAuYXRjLXNpdGV7CiAgICBkaXNwbGF5OmJsb2NrOwogICAgd2lkdGg6MTAwJTsKICAgIG1hcmdpbjowOwogICAgYmFja2dyb3VuZDp2YXIoLS1jYW52YXMpOwogICAgY29sb3I6dmFyKC0taW5rKTsKICAgIGZvbnQtZmFtaWx5OidBcmNoaXZvJywgc2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTpjbGFtcCgxOHB4LCAxLjA1dncsIDIwcHgpOwogICAgbGluZS1oZWlnaHQ6MS42NTsKICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7CiAgICB0ZXh0LWFsaWduOmxlZnQ7CiAgfQoKICAvKiBGdW5uZWxQYWdlcyBzb21ldGltZXMgd3JhcHMgY3VzdG9tLUhUTUwgYmxvY2tzIGluIHRyYW5zcGFyZW50L2xpZ2h0CiAgICAgZWRpdG9yIGNvbnRhaW5lcnMuIDpoYXMoKSBzY29wZXMgdGhpcyBmaXggdG8gb25seSB0aGUgd3JhcHBlcnMgdGhhdAogICAgIGFjdHVhbGx5IGNvbnRhaW4gVEhJUyBibG9jaywgc28gaXQgY2FuIG5ldmVyIGRhcmtlbiB1bnJlbGF0ZWQgc2VjdGlvbnMKICAgICBlbHNld2hlcmUgb24gdGhlIHBhZ2UuICovCiAgLm1haW5CbG9ja3NXcmFwcGVyOmhhcyguYXRjLXNpdGUpLAogIC50ZW1wbGF0ZS1jb250ZW50OmhhcyguYXRjLXNpdGUpLAogIC5ibG9jay1jb250YWluZXIudG9wLXNlY3Rpb246aGFzKC5hdGMtc2l0ZSksCiAgLmJsb2NrUm93Q29udGFpbmVyOmhhcyguYXRjLXNpdGUpLAogIC5yb3dDb2xQYXJlbnRXcmFwcGVyOmhhcyguYXRjLXNpdGUpLAogIC5FbGVtZW50c0NvbFNvcnRhYmxlOmhhcyguYXRjLXNpdGUpLAogIC5jdXN0b21IdG1sRWxlbWVudDpoYXMoLmF0Yy1zaXRlKSwKICAuZWxlbWVudFdyYXBwZXI6aGFzKC5hdGMtc2l0ZSksCiAgLmVsZW1lbnRDdXN0b21IdG1sSG9sZGVyOmhhcyguYXRjLXNpdGUpewogICAgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jYW5vcHkpICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWltYWdlOm5vbmUgIWltcG9ydGFudDsKICB9CgogIC5hdGMtc2l0ZSA6OnNlbGVjdGlvbntiYWNrZ3JvdW5kOnZhcigtLWhlYXJ0d29vZCk7Y29sb3I6dmFyKC0tY2Fub3B5KTt9CgogIC8qIFRleHQgYWxpZ25tZW50OiBzb21lIEZ1bm5lbFBhZ2VzIHRoZW1lcyBhcHBseSBhIGRlZmF1bHQgY2VudGVyZWQKICAgICB0ZXh0LWFsaWduIHRoYXQgYmxlZWRzIG9udG8gZnVsbC13aWR0aCBoZWFkaW5ncy9wYXJhZ3JhcGhzLiBXZSBzZXQKICAgICBsZWZ0IGFzIHRoZSByZXNvbHZlZCBkZWZhdWx0IGhlcmUsIGxldCBpdCBpbmhlcml0IGRvd24sIHRoZW4gZm9yY2UKICAgICBjZW50ZXIgYmFjayBvbmx5IHdoZXJlIGl0J3MgaW50ZW50aW9uYWwgKGNvbnRhY3QgQ1RBLCBmb290ZXIpLiAqLwogIC5hdGMtc2l0ZSBuYXYsIC5hdGMtc2l0ZSBoZWFkZXIsIC5hdGMtc2l0ZSBzZWN0aW9uLCAuYXRjLXNpdGUgZm9vdGVyLAogIC5hdGMtc2l0ZSBkaXYsIC5hdGMtc2l0ZSB1bCwgLmF0Yy1zaXRlIGxpLCAuYXRjLXNpdGUgaDEsIC5hdGMtc2l0ZSBoMiwKICAuYXRjLXNpdGUgaDMsIC5hdGMtc2l0ZSBoNCwgLmF0Yy1zaXRlIHAsIC5hdGMtc2l0ZSBxewogICAgdGV4dC1hbGlnbjppbmhlcml0OwogIH0KCiAgLmF0Yy1zaXRlIGgxLC5hdGMtc2l0ZSBoMiwuYXRjLXNpdGUgaDMsLmF0Yy1zaXRlIGg0ewogICAgZm9udC1mYW1pbHk6J0ZyYXVuY2VzJywgc2VyaWY7CiAgICBmb250LXdlaWdodDo2MDA7CiAgICBtYXJnaW46MDsKICAgIGxpbmUtaGVpZ2h0OjEuMDU7CiAgICBsZXR0ZXItc3BhY2luZzotMC4wMWVtOwogIH0KICAuYXRjLXNpdGUgLmV5ZWJyb3d7CiAgICBmb250LWZhbWlseTonU3BhY2UgTW9ubycsIG1vbm9zcGFjZTsKICAgIGZvbnQtc2l6ZTpjbGFtcCgwLjc4cmVtLCAwLjcydncsIDAuOXJlbSk7CiAgICBmb250LXdlaWdodDo3MDA7CiAgICBsZXR0ZXItc3BhY2luZzowLjE0ZW07CiAgICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7CiAgICBjb2xvcjp2YXIoLS1oZWFydHdvb2QtZGVlcCk7CiAgICBkaXNwbGF5OmZsZXg7CiAgICBhbGlnbi1pdGVtczpjZW50ZXI7CiAgICBnYXA6MC42ZW07CiAgfQogIC5hdGMtc2l0ZSAuZXllYnJvdzo6YmVmb3JlewogICAgY29udGVudDoiIjsKICAgIHdpZHRoOjIycHg7CiAgICBoZWlnaHQ6MXB4OwogICAgYmFja2dyb3VuZDpjdXJyZW50Q29sb3I7CiAgICBkaXNwbGF5OmlubGluZS1ibG9jazsKICAgIG9wYWNpdHk6MC44NTsKICB9CiAgLmF0Yy1zaXRlIGF7Y29sb3I6aW5oZXJpdDt9CiAgLmF0Yy1zaXRlIGltZ3ttYXgtd2lkdGg6MTAwJTtkaXNwbGF5OmJsb2NrO30KICAuYXRjLXNpdGUgLndyYXB7bWF4LXdpZHRoOjExODBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MCAzMnB4O30KICAuYXRjLXNpdGUgc2VjdGlvbntwb3NpdGlvbjpyZWxhdGl2ZTt9CgogIC8qIHJldmVhbCAqLwogIC5hdGMtc2l0ZSAucmV2ZWFse29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgyMnB4KTt0cmFuc2l0aW9uOm9wYWNpdHkgMC44cyBlYXNlLCB0cmFuc2Zvcm0gMC44cyBlYXNlO30KICAuYXRjLXNpdGUgLnJldmVhbC5pcy12aXNpYmxle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKTt9CiAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpewogICAgLmF0Yy1zaXRlIC5yZXZlYWx7b3BhY2l0eToxO3RyYW5zZm9ybTpub25lO3RyYW5zaXRpb246bm9uZTt9CiAgfQoKICAvKiA9PT09PT09PT09PT0gTkFWID09PT09PT09PT09PSAqLwogIC5hdGMtc2l0ZSBuYXZ7CiAgICBwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDsKICAgIGJhY2tncm91bmQ6cmdiYSgyMywzNiwyNiwwLjkyKTsKICAgIGJhY2tkcm9wLWZpbHRlcjpibHVyKDZweCk7CiAgICBib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1saW5lKTsKICB9CiAgLmF0Yy1zaXRlIC5uYXYtaW5uZXJ7CiAgICBtYXgtd2lkdGg6MTE4MHB4O21hcmdpbjowIGF1dG87cGFkZGluZzoxNnB4IDMycHg7CiAgICBkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOwogIH0KICAuYXRjLXNpdGUgLmJyYW5kewogICAgZGlzcGxheTpmbGV4OwogICAgYWxpZ24taXRlbXM6Y2VudGVyOwogIH0KICAuYXRjLXNpdGUgLmJyYW5kIGltZ3sKICAgIGhlaWdodDozOHB4O3dpZHRoOmF1dG87CiAgICBmaWx0ZXI6YnJpZ2h0bmVzcygwKSBpbnZlcnQoMSk7CiAgICBvcGFjaXR5OjAuOTU7CiAgfQogIC5hdGMtc2l0ZSAubmF2LXJpZ2h0ewogICAgZGlzcGxheTpmbGV4OwogICAgYWxpZ24taXRlbXM6Y2VudGVyOwogICAgZ2FwOjIycHg7CiAgfQogIC5hdGMtc2l0ZSAubmF2LWxpbmtze2Rpc3BsYXk6ZmxleDtnYXA6MzBweDtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO30KICAuYXRjLXNpdGUgLm5hdi1saW5rcyBhewogICAgY29sb3I6dmFyKC0tbGljaGVuKTsKICAgIHRleHQtZGVjb3JhdGlvbjpub25lOwogICAgZm9udC1zaXplOmNsYW1wKDAuODhyZW0sIDAuODJ2dywgMXJlbSk7CiAgICBmb250LXdlaWdodDo2MDA7CiAgICBsZXR0ZXItc3BhY2luZzowLjAyZW07CiAgICB0cmFuc2l0aW9uOmNvbG9yIDAuMnMgZWFzZTsKICB9CiAgLmF0Yy1zaXRlIC5uYXYtbGlua3MgYTpob3Zlcntjb2xvcjp2YXIoLS1jYW52YXMpO30KICAuYXRjLXNpdGUgLm5hdi1jdGF7CiAgICBiYWNrZ3JvdW5kOnZhcigtLWhlYXJ0d29vZCk7CiAgICBjb2xvcjp2YXIoLS1jYW5vcHkpOwogICAgcGFkZGluZzoxMHB4IDIwcHg7CiAgICBib3JkZXItcmFkaXVzOjJweDsKICAgIGZvbnQtc2l6ZTpjbGFtcCgwLjg4cmVtLCAwLjgydncsIDFyZW0pOwogICAgZm9udC13ZWlnaHQ6NzAwOwogICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7CiAgICBsZXR0ZXItc3BhY2luZzowLjAxZW07CiAgICB3aGl0ZS1zcGFjZTpub3dyYXA7CiAgfQogIC5hdGMtc2l0ZSAubmF2LWN0YTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWhlYXJ0d29vZC1zb2Z0KTt9CiAgLmF0Yy1zaXRlIC5tb2JpbGUtaGlkZXtkaXNwbGF5OmZsZXg7fQogIC5hdGMtc2l0ZSAubmF2LXRvZ2dsZXsKICAgIGRpc3BsYXk6bm9uZTsKICAgIGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsKICAgIGp1c3RpZnktY29udGVudDpjZW50ZXI7CiAgICBnYXA6NXB4OwogICAgd2lkdGg6MzJweDsKICAgIGhlaWdodDozMnB4OwogICAgcGFkZGluZzowOwogICAgYmFja2dyb3VuZDpub25lOwogICAgYm9yZGVyOm5vbmU7CiAgICBjdXJzb3I6cG9pbnRlcjsKICAgIGZsZXgtc2hyaW5rOjA7CiAgfQogIC5hdGMtc2l0ZSAubmF2LXRvZ2dsZSBzcGFuewogICAgZGlzcGxheTpibG9jazsKICAgIHdpZHRoOjEwMCU7CiAgICBoZWlnaHQ6MnB4OwogICAgYmFja2dyb3VuZDp2YXIoLS1jYW52YXMpOwogICAgYm9yZGVyLXJhZGl1czoxcHg7CiAgICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAwLjI1cyBlYXNlLCBvcGFjaXR5IDAuMnMgZWFzZTsKICB9CiAgLmF0Yy1zaXRlIC5uYXYtdG9nZ2xlW2FyaWEtZXhwYW5kZWQ9InRydWUiXSBzcGFuOm50aC1jaGlsZCgxKXt0cmFuc2Zvcm06dHJhbnNsYXRlWSg3cHgpIHJvdGF0ZSg0NWRlZyk7fQogIC5hdGMtc2l0ZSAubmF2LXRvZ2dsZVthcmlhLWV4cGFuZGVkPSJ0cnVlIl0gc3BhbjpudGgtY2hpbGQoMil7b3BhY2l0eTowO30KICAuYXRjLXNpdGUgLm5hdi10b2dnbGVbYXJpYS1leHBhbmRlZD0idHJ1ZSJdIHNwYW46bnRoLWNoaWxkKDMpe3RyYW5zZm9ybTp0cmFuc2xhdGVZKC03cHgpIHJvdGF0ZSgtNDVkZWcpO30KICAuYXRjLXNpdGUgLm1vYmlsZS1tZW51ewogICAgZGlzcGxheTpub25lOwogICAgZmxleC1kaXJlY3Rpb246Y29sdW1uOwogICAgbWF4LWhlaWdodDowOwogICAgb3ZlcmZsb3c6aGlkZGVuOwogICAgYmFja2dyb3VuZDp2YXIoLS1jYW5vcHkpOwogICAgYm9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICB0cmFuc2l0aW9uOm1heC1oZWlnaHQgMC4zcyBlYXNlOwogIH0KICAuYXRjLXNpdGUgLm1vYmlsZS1tZW51LmlzLW9wZW57bWF4LWhlaWdodDoyODBweDt9CiAgLmF0Yy1zaXRlIC5tb2JpbGUtbWVudSBhewogICAgY29sb3I6dmFyKC0tbGljaGVuKTsKICAgIHRleHQtZGVjb3JhdGlvbjpub25lOwogICAgZm9udC1zaXplOjEuMDVyZW07CiAgICBmb250LXdlaWdodDo2MDA7CiAgICBwYWRkaW5nOjE2cHggMjBweDsKICAgIGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWxpbmUpOwogIH0KICAuYXRjLXNpdGUgLm1vYmlsZS1tZW51IGE6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcDpub25lO30KICAuYXRjLXNpdGUgLm1vYmlsZS1tZW51IGEubW9iaWxlLW1lbnUtY3Rhe2NvbG9yOnZhcigtLWhlYXJ0d29vZC1zb2Z0KTt9CiAgQG1lZGlhIChtYXgtd2lkdGg6ODIwcHgpewogICAgLmF0Yy1zaXRlIC5tb2JpbGUtaGlkZXtkaXNwbGF5Om5vbmU7fQogICAgLmF0Yy1zaXRlIC53cmFwLCAuYXRjLXNpdGUgLm5hdi1pbm5lcntwYWRkaW5nLWxlZnQ6MjBweDtwYWRkaW5nLXJpZ2h0OjIwcHg7fQogICAgLmF0Yy1zaXRlIC5uYXYtdG9nZ2xle2Rpc3BsYXk6ZmxleDt9CiAgICAuYXRjLXNpdGUgLm1vYmlsZS1tZW51e2Rpc3BsYXk6ZmxleDt9CiAgICAuYXRjLXNpdGUgLm5hdi1jdGF7cGFkZGluZzo5cHggMTZweDtmb250LXNpemU6MC44NXJlbTt9CiAgICAuYXRjLXNpdGUgLm5hdi1yaWdodHtnYXA6MTRweDt9CiAgfQoKICAvKiA9PT09PT09PT09PT0gSEVSTyA9PT09PT09PT09PT0gKi8KICAuYXRjLXNpdGUgLmhlcm97CiAgICBwb3NpdGlvbjpyZWxhdGl2ZTsKICAgIGNvbG9yOnZhcigtLWNhbnZhcyk7CiAgICBwYWRkaW5nOjE3MnB4IDAgOTBweDsKICAgIG92ZXJmbG93OmhpZGRlbjsKICAgIGlzb2xhdGlvbjppc29sYXRlOwogIH0KICAuYXRjLXNpdGUgLmhlcm8tbWVkaWF7CiAgICBwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowOwogICAgei1pbmRleDotMjsKICAgIG92ZXJmbG93OmhpZGRlbjsKICB9CiAgLmF0Yy1zaXRlIC5oZXJvLW1lZGlhIGltZ3sKICAgIHdpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7CiAgICBvYmplY3QtZml0OmNvdmVyOwogICAgb2JqZWN0LXBvc2l0aW9uOmNlbnRlciAzMCU7CiAgICBhbmltYXRpb246YXRjLWtlbmJ1cm5zIDIycyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7CiAgICBmaWx0ZXI6c2F0dXJhdGUoMS4wOCkgY29udHJhc3QoMS4wNSk7CiAgfQogIEBrZXlmcmFtZXMgYXRjLWtlbmJ1cm5zewogICAgMCV7dHJhbnNmb3JtOnNjYWxlKDEuMDYpIHRyYW5zbGF0ZSgwLDApO30KICAgIDEwMCV7dHJhbnNmb3JtOnNjYWxlKDEuMTYpIHRyYW5zbGF0ZSgtMS41JSwtMSUpO30KICB9CiAgLmF0Yy1zaXRlIC5oZXJvOjpiZWZvcmV7CiAgICBjb250ZW50OiIiOwogICAgcG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDsKICAgIHotaW5kZXg6LTE7CiAgICBiYWNrZ3JvdW5kOgogICAgICBsaW5lYXItZ3JhZGllbnQoMTAwZGVnLCByZ2JhKDIzLDM2LDI2LDAuOTcpIDAlLCByZ2JhKDIzLDM2LDI2LDAuODgpIDMyJSwgcmdiYSgyMywzNiwyNiwwLjU1KSA1OCUsIHJnYmEoMjMsMzYsMjYsMC44MikgMTAwJSksCiAgICAgIGxpbmVhci1ncmFkaWVudCgwZGVnLCB2YXIoLS1jYW5vcHkpIDAlLCByZ2JhKDIzLDM2LDI2LDAuMTUpIDIyJSwgcmdiYSgyMywzNiwyNiwwLjEpIDc4JSwgdmFyKC0tY2Fub3B5KSAxMDAlKTsKICB9CiAgLmF0Yy1zaXRlIC5oZXJvLWJhZGdlewogICAgcG9zaXRpb246YWJzb2x1dGU7CiAgICB0b3A6MTcwcHg7IHJpZ2h0OjMycHg7CiAgICB6LWluZGV4OjM7CiAgICB3aWR0aDoxMThweDtoZWlnaHQ6MTE4cHg7CiAgICBib3JkZXItcmFkaXVzOjUwJTsKICAgIGJvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICBkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7CiAgICBiYWNrZ3JvdW5kOnJnYmEoMjMsMzYsMjYsMC41NSk7CiAgICBiYWNrZHJvcC1maWx0ZXI6Ymx1cig0cHgpOwogICAgYW5pbWF0aW9uOmF0Yy1zcGluIDI2cyBsaW5lYXIgaW5maW5pdGU7CiAgfQogIEBrZXlmcmFtZXMgYXRjLXNwaW57IHRveyB0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7fSB9CiAgQG1lZGlhIChtYXgtd2lkdGg6OTAwcHgpeyAuYXRjLXNpdGUgLmhlcm8tYmFkZ2V7ZGlzcGxheTpub25lO30gfQoKICAvKiB0aWNrZXIgKi8KICAuYXRjLXNpdGUgLnRpY2tlcnsKICAgIGJhY2tncm91bmQ6dmFyKC0taGVhcnR3b29kKTsKICAgIGNvbG9yOnZhcigtLWNhbm9weSk7CiAgICBvdmVyZmxvdzpoaWRkZW47CiAgICB3aGl0ZS1zcGFjZTpub3dyYXA7CiAgICBwYWRkaW5nOjExcHggMDsKICAgIHBvc2l0aW9uOnJlbGF0aXZlOwogICAgei1pbmRleDo1OwogIH0KICAuYXRjLXNpdGUgLnRpY2tlci10cmFja3sKICAgIGRpc3BsYXk6aW5saW5lLWZsZXg7CiAgICBnYXA6MDsKICAgIGFuaW1hdGlvbjphdGMtdGljayAyOHMgbGluZWFyIGluZmluaXRlOwogIH0KICAuYXRjLXNpdGUgLnRpY2tlci10cmFjayBzcGFuewogICAgZm9udC1mYW1pbHk6J1NwYWNlIE1vbm8nLG1vbm9zcGFjZTsKICAgIGZvbnQtc2l6ZTpjbGFtcCgwLjhyZW0sIDAuNzJ2dywgMC45MnJlbSk7CiAgICBmb250LXdlaWdodDo3MDA7CiAgICBsZXR0ZXItc3BhY2luZzowLjA4ZW07CiAgICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7CiAgICBwYWRkaW5nOjAgMjJweDsKICAgIGRpc3BsYXk6aW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczpjZW50ZXI7CiAgICBnYXA6MjJweDsKICB9CiAgLmF0Yy1zaXRlIC50aWNrZXItdHJhY2sgc3Bhbjo6YWZ0ZXJ7Y29udGVudDoi4peGIjtmb250LXNpemU6MC42cmVtO29wYWNpdHk6MC42O30KICBAa2V5ZnJhbWVzIGF0Yy10aWNrewogICAgZnJvbXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTt9CiAgICB0b3t0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt9CiAgfQogIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXsKICAgIC5hdGMtc2l0ZSAuaGVyby1tZWRpYSBpbWd7YW5pbWF0aW9uOm5vbmU7fQogICAgLmF0Yy1zaXRlIC5oZXJvLWJhZGdle2FuaW1hdGlvbjpub25lO30KICAgIC5hdGMtc2l0ZSAudGlja2VyLXRyYWNre2FuaW1hdGlvbjpub25lO30KICB9CiAgLmF0Yy1zaXRlIC5oZXJvLWdyaWR7CiAgICBkaXNwbGF5OmdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6MS4xZnIgMC45ZnI7CiAgICBnYXA6NDBweDsKICAgIGFsaWduLWl0ZW1zOmNlbnRlcjsKICAgIHBvc2l0aW9uOnJlbGF0aXZlOwogICAgei1pbmRleDoyOwogICAgdGV4dC1hbGlnbjpsZWZ0OwogIH0KICAuYXRjLXNpdGUgLmhlcm8gLmV5ZWJyb3d7Y29sb3I6dmFyKC0taGVhcnR3b29kLXNvZnQpO30KICAuYXRjLXNpdGUgLmhlcm8gaDF7CiAgICBmb250LXNpemU6Y2xhbXAoMy4xcmVtLCA2LjJ2dywgNS40cmVtKTsKICAgIGNvbG9yOnZhcigtLWNhbnZhcyk7CiAgfQogIC5hdGMtc2l0ZSAuaGVybyBoMSBlbXsKICAgIGZvbnQtc3R5bGU6aXRhbGljOwogICAgY29sb3I6dmFyKC0taGVhcnR3b29kLXNvZnQpOwogIH0KICAuYXRjLXNpdGUgLmhlcm8gcC5sZWRlewogICAgbWFyZ2luLXRvcDoyNHB4OwogICAgbWF4LXdpZHRoOjQ2Y2g7CiAgICBmb250LXNpemU6Y2xhbXAoMS4yMnJlbSwgMS40NXZ3LCAxLjVyZW0pOwogICAgbGluZS1oZWlnaHQ6MS41NTsKICAgIGNvbG9yOiNEQ0U4RDc7CiAgfQogIC5hdGMtc2l0ZSAuaGVyby1jdGEtcm93ewogICAgbWFyZ2luLXRvcDozNnB4OwogICAgZGlzcGxheTpmbGV4OwogICAgYWxpZ24taXRlbXM6Y2VudGVyOwogICAgZ2FwOjIycHg7CiAgICBmbGV4LXdyYXA6d3JhcDsKICB9CiAgLmF0Yy1zaXRlIC5idG4tcHJpbWFyeXsKICAgIGJhY2tncm91bmQ6dmFyKC0taGVhcnR3b29kKTsKICAgIGNvbG9yOnZhcigtLWNhbm9weSk7CiAgICBwYWRkaW5nOjE3cHggMzJweDsKICAgIGJvcmRlci1yYWRpdXM6MnB4OwogICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7CiAgICBmb250LXdlaWdodDo3MDA7CiAgICBmb250LXNpemU6Y2xhbXAoMC45OHJlbSwgMC45dncsIDEuMXJlbSk7CiAgICBsZXR0ZXItc3BhY2luZzowLjAxZW07CiAgICBkaXNwbGF5OmlubGluZS1mbGV4OwogICAgYWxpZ24taXRlbXM6Y2VudGVyOwogICAgZ2FwOjEwcHg7CiAgICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAwLjJzIGVhc2UsIGJhY2tncm91bmQgMC4ycyBlYXNlLCBib3gtc2hhZG93IDAuMnMgZWFzZTsKICAgIGJveC1zaGFkb3c6MCAwIDAgMCByZ2JhKDE5MCwxMDYsNDYsMC41NSk7CiAgICBhbmltYXRpb246YXRjLXB1bHNlIDIuNnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgfQogIC5hdGMtc2l0ZSAuYnRuLXByaW1hcnk6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1oZWFydHdvb2Qtc29mdCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTNweCkgc2NhbGUoMS4wMik7Ym94LXNoYWRvdzowIDEwcHggMjZweCAtNnB4IHJnYmEoMTkwLDEwNiw0NiwwLjU1KTt9CiAgQGtleWZyYW1lcyBhdGMtcHVsc2V7CiAgICAwJSwxMDAle2JveC1zaGFkb3c6MCAwIDAgMCByZ2JhKDE5MCwxMDYsNDYsMC4zNSk7fQogICAgNTAle2JveC1zaGFkb3c6MCAwIDAgMTBweCByZ2JhKDE5MCwxMDYsNDYsMCk7fQogIH0KICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7IC5hdGMtc2l0ZSAuYnRuLXByaW1hcnl7YW5pbWF0aW9uOm5vbmU7fSB9CiAgLmF0Yy1zaXRlIC5idG4tZ2hvc3R7CiAgICBjb2xvcjp2YXIoLS1jYW52YXMpOwogICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7CiAgICBmb250LXNpemU6Y2xhbXAoMC45NHJlbSwgMC44NnZ3LCAxLjA1cmVtKTsKICAgIGZvbnQtd2VpZ2h0OjYwMDsKICAgIGJvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWhlYXJ0d29vZCk7CiAgICBwYWRkaW5nLWJvdHRvbTozcHg7CiAgfQogIC5hdGMtc2l0ZSAuaGVyby1zdGF0c3sKICAgIG1hcmdpbi10b3A6NTZweDsKICAgIGRpc3BsYXk6Z3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNCwxZnIpOwogICAgZ2FwOjA7CiAgICBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgIHBhZGRpbmctdG9wOjI2cHg7CiAgICB0ZXh0LWFsaWduOmxlZnQ7CiAgfQogIC5hdGMtc2l0ZSAuaGVyby1zdGF0cyBkaXZ7CiAgICBwYWRkaW5nLXJpZ2h0OjE4cHg7CiAgICBib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgdGV4dC1hbGlnbjpsZWZ0OwogIH0KICAuYXRjLXNpdGUgLmhlcm8tc3RhdHMgZGl2Omxhc3QtY2hpbGR7Ym9yZGVyLXJpZ2h0Om5vbmU7fQogIC5hdGMtc2l0ZSAuaGVyby1zdGF0cyAubnVtewogICAgZm9udC1mYW1pbHk6J0ZyYXVuY2VzJyxzZXJpZjsKICAgIGZvbnQtc2l6ZTpjbGFtcCgyLjM1cmVtLCAyLjZ2dywgM3JlbSk7CiAgICBjb2xvcjp2YXIoLS1oZWFydHdvb2Qtc29mdCk7CiAgICBmb250LXdlaWdodDo2MDA7CiAgfQogIC5hdGMtc2l0ZSAuaGVyby1zdGF0cyAubGJsewogICAgZm9udC1mYW1pbHk6J1NwYWNlIE1vbm8nLG1vbm9zcGFjZTsKICAgIGZvbnQtc2l6ZTpjbGFtcCgwLjcycmVtLCAwLjd2dywgMC44NHJlbSk7CiAgICBsZXR0ZXItc3BhY2luZzowLjA2ZW07CiAgICBjb2xvcjp2YXIoLS1saWNoZW4pOwogICAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOwogICAgbWFyZ2luLXRvcDo2cHg7CiAgfQogIEBtZWRpYSAobWF4LXdpZHRoOjkwMHB4KXsKICAgIC5hdGMtc2l0ZSAuaGVyby1ncmlke2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7fQogICAgLmF0Yy1zaXRlIC5oZXJvLXN0YXRze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMiwxZnIpO3Jvdy1nYXA6MjJweDt9CiAgICAuYXRjLXNpdGUgLmhlcm8tc3RhdHMgZGl2Om50aC1jaGlsZCgyKXtib3JkZXItcmlnaHQ6bm9uZTt9CiAgICAuYXRjLXNpdGUgLmhlcm8gaDF7Zm9udC1zaXplOmNsYW1wKDNyZW0sIDEwdncsIDQuNXJlbSk7fQogIH0KICBAbWVkaWEgKG1heC13aWR0aDo1NjBweCl7CiAgICAuYXRjLXNpdGV7Zm9udC1zaXplOjE3cHg7fQogICAgLmF0Yy1zaXRlIC5oZXJvIGgxe2ZvbnQtc2l6ZTpjbGFtcCgyLjY1cmVtLCAxM3Z3LCAzLjZyZW0pO30KICAgIC5hdGMtc2l0ZSAuaGVybyBwLmxlZGV7Zm9udC1zaXplOjEuMXJlbTt9CiAgfQoKICAvKiByaW5nIGlsbHVzdHJhdGlvbiAqLwogIC5hdGMtc2l0ZSAucmluZy13cmFwewogICAgcG9zaXRpb246cmVsYXRpdmU7CiAgICBkaXNwbGF5OmZsZXg7CiAgICBhbGlnbi1pdGVtczpjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOwogIH0KICAuYXRjLXNpdGUgLnJpbmctd3JhcCBzdmd7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzttYXgtd2lkdGg6NDYwcHg7fQogIC5hdGMtc2l0ZSAucmluZy13cmFwIGNpcmNsZXsKICAgIGZpbGw6bm9uZTsKICAgIHN0cm9rZS1saW5lY2FwOnJvdW5kOwogIH0KICAuYXRjLXNpdGUgLnJpbmctY2FwewogICAgcG9zaXRpb246YWJzb2x1dGU7CiAgICB0ZXh0LWFsaWduOmNlbnRlcjsKICAgIGZvbnQtZmFtaWx5OidGcmF1bmNlcycsc2VyaWY7CiAgfQogIC5hdGMtc2l0ZSAucmluZy1jYXAgLnlye2ZvbnQtc2l6ZTpjbGFtcCgyLjhyZW0sIDN2dywgMy41cmVtKTtjb2xvcjp2YXIoLS1jYW52YXMpO2ZvbnQtd2VpZ2h0OjcwMDt9CiAgLmF0Yy1zaXRlIC5yaW5nLWNhcCAuc2luY2V7CiAgICBmb250LWZhbWlseTonU3BhY2UgTW9ubycsbW9ub3NwYWNlOwogICAgZm9udC1zaXplOmNsYW1wKDAuNjhyZW0sIDAuNjV2dywgMC44cmVtKTsKICAgIGxldHRlci1zcGFjaW5nOjAuMTRlbTsKICAgIHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsKICAgIGNvbG9yOnZhcigtLWxpY2hlbik7CiAgfQoKICAvKiA9PT09PT09PT09PT0gU0VDVElPTiBIRUFERVJTID09PT09PT09PT09PSAqLwogIC5hdGMtc2l0ZSAuc2VjLWhlYWR7bWF4LXdpZHRoOjY2MHB4O21hcmdpbi1ib3R0b206NTZweDt0ZXh0LWFsaWduOmxlZnQ7fQogIC5hdGMtc2l0ZSAuc2VjLWhlYWQgaDJ7Zm9udC1zaXplOmNsYW1wKDIuNnJlbSwgNC4ydncsIDRyZW0pO21hcmdpbi10b3A6MThweDt9CiAgLmF0Yy1zaXRlIC5zZWMtaGVhZCBwe2NvbG9yOnZhcigtLWJhcmspO21hcmdpbi10b3A6MThweDtmb250LXNpemU6Y2xhbXAoMS4xNnJlbSwgMS4yNXZ3LCAxLjRyZW0pO2xpbmUtaGVpZ2h0OjEuNjttYXgtd2lkdGg6NTZjaDtmb250LXdlaWdodDo1MDA7fQogIEBtZWRpYSAobWF4LXdpZHRoOjkwMHB4KXsKICAgIC5hdGMtc2l0ZSAuc2VjLWhlYWQgaDJ7Zm9udC1zaXplOmNsYW1wKDIuM3JlbSwgN3Z3LCAzLjRyZW0pO30KICB9CiAgQG1lZGlhIChtYXgtd2lkdGg6NTYwcHgpewogICAgLmF0Yy1zaXRlIC5zZWMtaGVhZCBoMntmb250LXNpemU6Y2xhbXAoMi4xcmVtLCAxMHZ3LCAzcmVtKTt9CiAgfQoKICAvKiA9PT09PT09PT09PT0gVElNRUxJTkUgKGdyb3d0aCByaW5ncykgPT09PT09PT09PT09ICovCiAgLmF0Yy1zaXRlIC50aW1lbGluZXsKICAgIGJhY2tncm91bmQ6dmFyKC0tY2FudmFzKTsKICAgIHBhZGRpbmc6MTAwcHggMCA5MHB4OwogIH0KICAuYXRjLXNpdGUgLnJpbmdzLXJvd3sKICAgIGRpc3BsYXk6Z3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNiwxZnIpOwogICAgZ2FwOjE4cHg7CiAgICBtYXJnaW4tdG9wOjEwcHg7CiAgfQogIC5hdGMtc2l0ZSAucmluZy1jYXJkewogICAgdGV4dC1hbGlnbjpsZWZ0OwogICAgcGFkZGluZzoyNnB4IDEycHggMjBweDsKICAgIGJvcmRlci10b3A6MnB4IHNvbGlkIHZhcigtLWNhbnZhcy0yKTsKICAgIHBvc2l0aW9uOnJlbGF0aXZlOwogIH0KICAuYXRjLXNpdGUgLnJpbmctY2FyZDo6YmVmb3JlewogICAgY29udGVudDoiIjsKICAgIHBvc2l0aW9uOmFic29sdXRlO3RvcDotMnB4O2xlZnQ6MDsKICAgIHdpZHRoOjAlOwogICAgaGVpZ2h0OjJweDsKICAgIGJhY2tncm91bmQ6dmFyKC0taGVhcnR3b29kKTsKICAgIHRyYW5zaXRpb246d2lkdGggMC45cyBlYXNlOwogIH0KICAuYXRjLXNpdGUgLnJpbmctY2FyZC5pcy12aXNpYmxlOjpiZWZvcmV7d2lkdGg6MTAwJTt9CiAgLmF0Yy1zaXRlIC5yaW5nLWNhcmQgLnlyewogICAgZm9udC1mYW1pbHk6J1NwYWNlIE1vbm8nLG1vbm9zcGFjZTsKICAgIGZvbnQtc2l6ZTpjbGFtcCgwLjg0cmVtLCAwLjc1dncsIDAuOTZyZW0pOwogICAgY29sb3I6dmFyKC0taGVhcnR3b29kLWRlZXApOwogICAgZm9udC13ZWlnaHQ6NzAwOwogICAgdGV4dC1hbGlnbjpsZWZ0OwogIH0KICAuYXRjLXNpdGUgLnJpbmctY2FyZCBoNHsKICAgIGZvbnQtc2l6ZTpjbGFtcCgxLjIycmVtLCAxLjI1dncsIDEuNXJlbSk7CiAgICBtYXJnaW4tdG9wOjEycHg7CiAgICBjb2xvcjp2YXIoLS1pbmspOwogICAgdGV4dC1hbGlnbjpsZWZ0OwogIH0KICAuYXRjLXNpdGUgLnJpbmctY2FyZCBwewogICAgZm9udC1zaXplOmNsYW1wKDAuOThyZW0sIDAuOTV2dywgMS4xMnJlbSk7CiAgICBsaW5lLWhlaWdodDoxLjU1OwogICAgY29sb3I6dmFyKC0tYmFyayk7CiAgICBtYXJnaW4tdG9wOjEwcHg7CiAgICBmb250LXdlaWdodDo1MDA7CiAgICB0ZXh0LWFsaWduOmxlZnQ7CiAgfQogIEBtZWRpYSAobWF4LXdpZHRoOjkwMHB4KXsKICAgIC5hdGMtc2l0ZSAucmluZ3Mtcm93e2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMiwxZnIpO30KICB9CgogIC8qID09PT09PT09PT09PSBTRVJWSUNFUyA9PT09PT09PT09PT0gKi8KICAuYXRjLXNpdGUgLnNlcnZpY2VzewogICAgYmFja2dyb3VuZDp2YXIoLS1jYW5vcHkpOwogICAgY29sb3I6dmFyKC0tY2FudmFzKTsKICAgIHBhZGRpbmc6MTAwcHggMDsKICB9CiAgLmF0Yy1zaXRlIC5zZXJ2aWNlcyAuc2VjLWhlYWQgcHtjb2xvcjp2YXIoLS1saWNoZW4pO30KICAuYXRjLXNpdGUgLnNlcnZpY2VzIC5leWVicm93e2NvbG9yOnZhcigtLWhlYXJ0d29vZC1zb2Z0KTt9CiAgLmF0Yy1zaXRlIC5zZXJ2aWNlLWdyb3Vwc3sKICAgIGRpc3BsYXk6Z3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMiwxZnIpOwogICAgZ2FwOjJweDsKICAgIGJhY2tncm91bmQ6dmFyKC0tbGluZSk7CiAgICBtYXJnaW4tdG9wOjIwcHg7CiAgICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpOwogIH0KICAuYXRjLXNpdGUgLnNlcnZpY2UtZ3JvdXB7CiAgICBiYWNrZ3JvdW5kOnZhcigtLWNhbm9weSk7CiAgICBwYWRkaW5nOjM0cHggMzRweCAzMHB4OwogICAgdGV4dC1hbGlnbjpsZWZ0OwogIH0KICAuYXRjLXNpdGUgLnNlcnZpY2UtZ3JvdXAgLnRhZ3sKICAgIGZvbnQtZmFtaWx5OidTcGFjZSBNb25vJyxtb25vc3BhY2U7CiAgICBmb250LXNpemU6Y2xhbXAoMC43MnJlbSwgMC42OHZ3LCAwLjg0cmVtKTsKICAgIGxldHRlci1zcGFjaW5nOjAuMWVtOwogICAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOwogICAgY29sb3I6dmFyKC0taGVhcnR3b29kLXNvZnQpOwogICAgZm9udC13ZWlnaHQ6NzAwOwogICAgdGV4dC1hbGlnbjpsZWZ0OwogIH0KICAuYXRjLXNpdGUgLnNlcnZpY2UtZ3JvdXAgaDN7CiAgICBjb2xvcjp2YXIoLS1jYW52YXMpOwogICAgZm9udC1zaXplOmNsYW1wKDEuOHJlbSwgMnZ3LCAyLjNyZW0pOwogICAgbWFyZ2luLXRvcDoxM3B4OwogICAgdGV4dC1hbGlnbjpsZWZ0OwogIH0KICAuYXRjLXNpdGUgLnNlcnZpY2UtZ3JvdXAgdWx7CiAgICBsaXN0LXN0eWxlOm5vbmU7CiAgICBtYXJnaW46MjRweCAwIDA7CiAgICBwYWRkaW5nOjA7CiAgfQogIC5hdGMtc2l0ZSAuc2VydmljZS1ncm91cCBsaXsKICAgIHBhZGRpbmc6MTVweCAwOwogICAgYm9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICBkaXNwbGF5OmZsZXg7CiAgICBhbGlnbi1pdGVtczpiYXNlbGluZTsKICAgIGdhcDoxNHB4OwogICAgZm9udC1zaXplOmNsYW1wKDEuMDhyZW0sIDEuMDV2dywgMS4yNXJlbSk7CiAgICB0ZXh0LWFsaWduOmxlZnQ7CiAgfQogIC5hdGMtc2l0ZSAuc2VydmljZS1ncm91cCBsaTpmaXJzdC1jaGlsZHtib3JkZXItdG9wOm5vbmU7fQogIC5hdGMtc2l0ZSAuc2VydmljZS1ncm91cCBsaSAubWFya3sKICAgIGNvbG9yOnZhcigtLWhlYXJ0d29vZC1zb2Z0KTsKICAgIGZvbnQtZmFtaWx5OidTcGFjZSBNb25vJyxtb25vc3BhY2U7CiAgICBmbGV4LXNocmluazowOwogIH0KICAuYXRjLXNpdGUgLnNlcnZpY2UtZ3JvdXAgbGkgLnR4dCBie2NvbG9yOnZhcigtLWNhbnZhcyk7fQogIC5hdGMtc2l0ZSAuc2VydmljZS1ncm91cCBsaSAudHh0IHNwYW57CiAgICBkaXNwbGF5OmJsb2NrOwogICAgY29sb3I6dmFyKC0tbGljaGVuKTsKICAgIGZvbnQtc2l6ZTpjbGFtcCgwLjk0cmVtLCAwLjkydncsIDEuMDhyZW0pOwogICAgbGluZS1oZWlnaHQ6MS41OwogICAgbWFyZ2luLXRvcDo0cHg7CiAgICB0ZXh0LWFsaWduOmxlZnQ7CiAgfQogIEBtZWRpYSAobWF4LXdpZHRoOjgyMHB4KXsKICAgIC5hdGMtc2l0ZSAuc2VydmljZS1ncm91cHN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjt9CiAgfQoKICAvKiA9PT09PT09PT09PT0gVFJVU1QgLyBXSFkgPT09PT09PT09PT09ICovCiAgLmF0Yy1zaXRlIC50cnVzdHsKICAgIGJhY2tncm91bmQ6dmFyKC0tY2FudmFzKTsKICAgIHBhZGRpbmc6MTAwcHggMDsKICB9CiAgLmF0Yy1zaXRlIC50cnVzdC1ncmlkewogICAgZGlzcGxheTpncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7CiAgICBnYXA6NjRweDsKICAgIGFsaWduLWl0ZW1zOnN0YXJ0OwogIH0KICAuYXRjLXNpdGUgLnRydXN0LWxpc3R7bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MDt9CiAgLmF0Yy1zaXRlIC50cnVzdC1saXN0IGxpewogICAgZGlzcGxheTpncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjQ0cHggMWZyOwogICAgZ2FwOjE4cHg7CiAgICBwYWRkaW5nOjIycHggMDsKICAgIGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWNhbnZhcy0yKTsKICAgIHRleHQtYWxpZ246bGVmdDsKICB9CiAgLmF0Yy1zaXRlIC50cnVzdC1saXN0IGxpOmZpcnN0LWNoaWxke2JvcmRlci10b3A6bm9uZTt9CiAgLmF0Yy1zaXRlIC50cnVzdC1pY29uewogICAgd2lkdGg6NDRweDtoZWlnaHQ6NDRweDsKICAgIGJvcmRlcjoxLjVweCBzb2xpZCB2YXIoLS1oZWFydHdvb2QpOwogICAgYm9yZGVyLXJhZGl1czo1MCU7CiAgICBkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7CiAgICBjb2xvcjp2YXIoLS1oZWFydHdvb2QtZGVlcCk7CiAgICBmbGV4LXNocmluazowOwogIH0KICAuYXRjLXNpdGUgLnRydXN0LWxpc3QgaDR7Zm9udC1zaXplOmNsYW1wKDEuMjJyZW0sIDEuMjV2dywgMS41cmVtKTtjb2xvcjp2YXIoLS1pbmspO3RleHQtYWxpZ246bGVmdDt9CiAgLmF0Yy1zaXRlIC50cnVzdC1saXN0IHB7Zm9udC1zaXplOmNsYW1wKDFyZW0sIDF2dywgMS4xNnJlbSk7bGluZS1oZWlnaHQ6MS41NTtjb2xvcjp2YXIoLS1iYXJrKTttYXJnaW4tdG9wOjhweDtmb250LXdlaWdodDo1MDA7dGV4dC1hbGlnbjpsZWZ0O30KCiAgLmF0Yy1zaXRlIC5nYWxsZXJ5LXN0cmlwewogICAgZGlzcGxheTpncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7CiAgICBnYXA6MTJweDsKICB9CiAgLmF0Yy1zaXRlIC5nYWxsZXJ5LXN0cmlwIGltZ3sKICAgIHdpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7CiAgICBvYmplY3QtZml0OmNvdmVyOwogICAgYXNwZWN0LXJhdGlvOjQvMzsKICAgIGJhY2tncm91bmQ6dmFyKC0tY2FudmFzLTIpOwogIH0KICAuYXRjLXNpdGUgLmdhbGxlcnktc3RyaXAgLnRhbGx7YXNwZWN0LXJhdGlvOjQvNTtncmlkLXJvdzpzcGFuIDI7fQogIEBtZWRpYSAobWF4LXdpZHRoOjkwMHB4KXsKICAgIC5hdGMtc2l0ZSAudHJ1c3QtZ3JpZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO30KICB9CgogIC8qID09PT09PT09PT09PSBGRUVEQkFDSyBUSEVNRVMgPT09PT09PT09PT09ICovCiAgLmF0Yy1zaXRlIC5mZWVkYmFja3sKICAgIGJhY2tncm91bmQ6dmFyKC0tYmFyayk7CiAgICBjb2xvcjp2YXIoLS1jYW52YXMpOwogICAgcGFkZGluZzo4MHB4IDA7CiAgfQogIC5hdGMtc2l0ZSAuZmVlZGJhY2sgLnNlYy1oZWFkIHB7Y29sb3I6I0YwRThEODt9CiAgLmF0Yy1zaXRlIC5mZWVkYmFjayAuZXllYnJvd3tjb2xvcjp2YXIoLS1oZWFydHdvb2Qtc29mdCk7fQogIC5hdGMtc2l0ZSAuZmVlZGJhY2stcm93ewogICAgZGlzcGxheTpncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLDFmcik7CiAgICBnYXA6MjhweDsKICAgIG1hcmdpbi10b3A6MTBweDsKICB9CiAgLmF0Yy1zaXRlIC5mZWVkYmFjay1jYXJkewogICAgYm9yZGVyLWxlZnQ6MnB4IHNvbGlkIHZhcigtLWhlYXJ0d29vZC1zb2Z0KTsKICAgIHBhZGRpbmctbGVmdDoyMnB4OwogICAgdGV4dC1hbGlnbjpsZWZ0OwogIH0KICAuYXRjLXNpdGUgLmZlZWRiYWNrLWNhcmQgcXsKICAgIGZvbnQtZmFtaWx5OidGcmF1bmNlcycsc2VyaWY7CiAgICBmb250LXN0eWxlOml0YWxpYzsKICAgIGZvbnQtc2l6ZTpjbGFtcCgxLjRyZW0sIDEuNjV2dywgMS44NXJlbSk7CiAgICBkaXNwbGF5OmJsb2NrOwogICAgbGluZS1oZWlnaHQ6MS4zNjsKICAgIHRleHQtYWxpZ246bGVmdDsKICB9CiAgLmF0Yy1zaXRlIC5mZWVkYmFjay1jYXJkIC53aG97CiAgICBtYXJnaW4tdG9wOjE4cHg7CiAgICBmb250LWZhbWlseTonU3BhY2UgTW9ubycsbW9ub3NwYWNlOwogICAgZm9udC1zaXplOmNsYW1wKDAuNzZyZW0sIDAuNzJ2dywgMC44OHJlbSk7CiAgICBsZXR0ZXItc3BhY2luZzowLjA2ZW07CiAgICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7CiAgICBjb2xvcjojRjBFNUQyOwogICAgdGV4dC1hbGlnbjpsZWZ0OwogIH0KICBAbWVkaWEgKG1heC13aWR0aDo5MDBweCl7CiAgICAuYXRjLXNpdGUgLmZlZWRiYWNrLXJvd3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO30KICB9CgogIC8qID09PT09PT09PT09PSBTRVJWSUNFIEFSRUEgPT09PT09PT09PT09ICovCiAgLmF0Yy1zaXRlIC5hcmVhewogICAgYmFja2dyb3VuZDp2YXIoLS1jYW52YXMpOwogICAgcGFkZGluZzo5MHB4IDAgMTAwcHg7CiAgfQogIC5hdGMtc2l0ZSAuYXJlYS1ncmlkewogICAgZGlzcGxheTpncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7CiAgICBnYXA6NjBweDsKICAgIGFsaWduLWl0ZW1zOmNlbnRlcjsKICB9CiAgLmF0Yy1zaXRlIC5hcmVhLWdyaWQgPiBkaXZ7dGV4dC1hbGlnbjpsZWZ0O30KICAuYXRjLXNpdGUgLmFyZWEgaDJ7Zm9udC1zaXplOmNsYW1wKDIuNHJlbSwgMy42dncsIDMuNXJlbSk7fQogIC5hdGMtc2l0ZSAuYXJlYSBwe2NvbG9yOnZhcigtLWJhcmspO21hcmdpbi10b3A6MThweDttYXgtd2lkdGg6NDhjaDtmb250LXNpemU6Y2xhbXAoMS4wOHJlbSwgMS4xMnZ3LCAxLjI4cmVtKTtmb250LXdlaWdodDo1MDA7dGV4dC1hbGlnbjpsZWZ0O30KICAuYXRjLXNpdGUgLmNoaXAtcm93ewogICAgZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMHB4OwogICAgbWFyZ2luLXRvcDoyMnB4OwogIH0KICAuYXRjLXNpdGUgLmNoaXB7CiAgICBib3JkZXI6MS41cHggc29saWQgdmFyKC0tYmFyayk7CiAgICBwYWRkaW5nOjlweCAyMHB4OwogICAgYm9yZGVyLXJhZGl1czo5OTlweDsKICAgIGZvbnQtc2l6ZTpjbGFtcCgwLjk0cmVtLCAwLjl2dywgMS4wOHJlbSk7CiAgICBjb2xvcjp2YXIoLS1iYXJrKTsKICAgIGZvbnQtd2VpZ2h0OjYwMDsKICB9CiAgLmF0Yy1zaXRlIC5hcmVhLW5vdGV7CiAgICBiYWNrZ3JvdW5kOnZhcigtLWNhbm9weSk7CiAgICBjb2xvcjp2YXIoLS1jYW52YXMpOwogICAgcGFkZGluZzozNnB4OwogICAgYm9yZGVyLXJhZGl1czoycHg7CiAgICB0ZXh0LWFsaWduOmxlZnQ7CiAgfQogIC5hdGMtc2l0ZSAuYXJlYS1ub3RlIC5leWVicm93e2NvbG9yOnZhcigtLWhlYXJ0d29vZC1zb2Z0KTttYXJnaW4tYm90dG9tOjE2cHg7fQogIC5hdGMtc2l0ZSAuYXJlYS1ub3RlIHB7Y29sb3I6dmFyKC0tbGljaGVuKTtmb250LXNpemU6Y2xhbXAoMS4wOHJlbSwgMS4xMnZ3LCAxLjI4cmVtKTt0ZXh0LWFsaWduOmxlZnQ7fQogIEBtZWRpYSAobWF4LXdpZHRoOjkwMHB4KXsKICAgIC5hdGMtc2l0ZSAuYXJlYS1ncmlke2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7fQogIH0KCiAgLyogPT09PT09PT09PT09IENUQSAvIENPTlRBQ1QgPT09PT09PT09PT09ICovCiAgLmF0Yy1zaXRlIC5jb250YWN0ewogICAgYmFja2dyb3VuZDp2YXIoLS1jYW5vcHkpOwogICAgY29sb3I6dmFyKC0tY2FudmFzKTsKICAgIHBhZGRpbmc6MTEwcHggMCA5MHB4OwogICAgdGV4dC1hbGlnbjpjZW50ZXI7CiAgfQogIC5hdGMtc2l0ZSAuY29udGFjdCBoMiwgLmF0Yy1zaXRlIC5jb250YWN0IHB7dGV4dC1hbGlnbjpjZW50ZXI7fQogIC5hdGMtc2l0ZSAuY29udGFjdCAuZXllYnJvd3tjb2xvcjp2YXIoLS1oZWFydHdvb2Qtc29mdCk7fQogIC5hdGMtc2l0ZSAuY29udGFjdCBoMnsKICAgIGZvbnQtc2l6ZTpjbGFtcCgyLjhyZW0sIDQuOHZ3LCA0LjVyZW0pOwogICAgbWF4LXdpZHRoOjE2Y2g7CiAgICBtYXJnaW46MjJweCBhdXRvIDA7CiAgfQogIC5hdGMtc2l0ZSAuY29udGFjdCBwLmxlZGV7CiAgICBjb2xvcjp2YXIoLS1saWNoZW4pOwogICAgbWF4LXdpZHRoOjUyY2g7CiAgICBtYXJnaW46MjJweCBhdXRvIDA7CiAgICBmb250LXNpemU6Y2xhbXAoMS4xOHJlbSwgMS4zdncsIDEuNDVyZW0pOwogIH0KICAuYXRjLXNpdGUgLmNvbnRhY3QtY3RhLXJvd3sKICAgIG1hcmdpbi10b3A6MzhweDsKICAgIGRpc3BsYXk6ZmxleDsKICAgIGdhcDoyMHB4OwogICAganVzdGlmeS1jb250ZW50OmNlbnRlcjsKICAgIGZsZXgtd3JhcDp3cmFwOwogIH0KICAuYXRjLXNpdGUgLmNvbnRhY3QtZGV0YWlsewogICAgbWFyZ2luLXRvcDo1NnB4OwogICAgZGlzcGxheTpmbGV4OwogICAganVzdGlmeS1jb250ZW50OmNlbnRlcjsKICAgIGdhcDo1MnB4OwogICAgZmxleC13cmFwOndyYXA7CiAgICBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgIHBhZGRpbmctdG9wOjMycHg7CiAgfQogIC5hdGMtc2l0ZSAuY29udGFjdC1kZXRhaWwgPiBkaXZ7dGV4dC1hbGlnbjpsZWZ0O30KICAuYXRjLXNpdGUgLmNvbnRhY3QtZGV0YWlsIC5sYmx7CiAgICBmb250LWZhbWlseTonU3BhY2UgTW9ubycsbW9ub3NwYWNlOwogICAgZm9udC1zaXplOmNsYW1wKDAuNzJyZW0sIDAuNjh2dywgMC44NHJlbSk7CiAgICBsZXR0ZXItc3BhY2luZzowLjFlbTsKICAgIHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsKICAgIGNvbG9yOnZhcigtLWhlYXJ0d29vZC1zb2Z0KTsKICB9CiAgLmF0Yy1zaXRlIC5jb250YWN0LWRldGFpbCAudmFse21hcmdpbi10b3A6N3B4O2ZvbnQtc2l6ZTpjbGFtcCgxLjA1cmVtLCAxdncsIDEuMnJlbSk7Y29sb3I6dmFyKC0tY2FudmFzKTt9CgogIC5hdGMtc2l0ZSBmb290ZXJ7CiAgICBiYWNrZ3JvdW5kOnZhcigtLWNhbm9weSk7CiAgICBjb2xvcjp2YXIoLS1saWNoZW4pOwogICAgdGV4dC1hbGlnbjpjZW50ZXI7CiAgICBwYWRkaW5nOjI2cHggMCAzNHB4OwogICAgZm9udC1zaXplOmNsYW1wKDAuODRyZW0sIDAuNzh2dywgMC45NnJlbSk7CiAgICBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1saW5lKTsKICB9CgogIC8qID09PT09PT09PT09PSBTRVJWSUNFUyBQQUdFIOKAlCBQQUdFIEhFQURFUiAocGhvdG8gYmFja2Ryb3AsIG1hdGNoZXMgaG9tZXBhZ2UgaGVybykgPT09PT09PT09PT09ICovCiAgLmF0Yy1zaXRlIC5wYWdlLWhlYWRlcnsKICAgIHBvc2l0aW9uOnJlbGF0aXZlOwogICAgY29sb3I6dmFyKC0tY2FudmFzKTsKICAgIHBhZGRpbmc6MTUwcHggMCA4MHB4OwogICAgb3ZlcmZsb3c6aGlkZGVuOwogICAgaXNvbGF0aW9uOmlzb2xhdGU7CiAgfQogIC5hdGMtc2l0ZSAucGFnZS1oZWFkZXItbWVkaWF7CiAgICBwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowOwogICAgei1pbmRleDotMjsKICAgIG92ZXJmbG93OmhpZGRlbjsKICB9CiAgLmF0Yy1zaXRlIC5wYWdlLWhlYWRlci1tZWRpYSBpbWd7CiAgICB3aWR0aDoxMDAlO2hlaWdodDoxMDAlOwogICAgb2JqZWN0LWZpdDpjb3ZlcjsKICAgIG9iamVjdC1wb3NpdGlvbjpjZW50ZXIgNDAlOwogICAgYW5pbWF0aW9uOmF0Yy1rZW5idXJucyAyMnMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlOwogICAgZmlsdGVyOnNhdHVyYXRlKDEuMDgpIGNvbnRyYXN0KDEuMDUpOwogIH0KICAuYXRjLXNpdGUgLnBhZ2UtaGVhZGVyOjpiZWZvcmV7CiAgICBjb250ZW50OiIiOwogICAgcG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDsKICAgIHotaW5kZXg6LTE7CiAgICBiYWNrZ3JvdW5kOgogICAgICBsaW5lYXItZ3JhZGllbnQoMTAwZGVnLCByZ2JhKDIzLDM2LDI2LDAuOTcpIDAlLCByZ2JhKDIzLDM2LDI2LDAuOSkgMzglLCByZ2JhKDIzLDM2LDI2LDAuNjgpIDY4JSwgcmdiYSgyMywzNiwyNiwwLjg4KSAxMDAlKSwKICAgICAgbGluZWFyLWdyYWRpZW50KDBkZWcsIHZhcigtLWNhbm9weSkgMCUsIHJnYmEoMjMsMzYsMjYsMC4xNSkgMjIlLCByZ2JhKDIzLDM2LDI2LDAuMSkgNzglLCB2YXIoLS1jYW5vcHkpIDEwMCUpOwogIH0KICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7CiAgICAuYXRjLXNpdGUgLnBhZ2UtaGVhZGVyLW1lZGlhIGltZ3thbmltYXRpb246bm9uZTt9CiAgfQogIC5hdGMtc2l0ZSAucGFnZS1oZWFkZXIgLmlubmVye3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6Mjt9CiAgLmF0Yy1zaXRlIC5wYWdlLWhlYWRlciAuZXllYnJvd3tjb2xvcjp2YXIoLS1oZWFydHdvb2Qtc29mdCk7fQogIC5hdGMtc2l0ZSAucGFnZS1oZWFkZXIgaDF7CiAgICBmb250LXNpemU6Y2xhbXAoMi42cmVtLCA1dncsIDQuNHJlbSk7CiAgICBjb2xvcjp2YXIoLS1jYW52YXMpOwogICAgbWFyZ2luLXRvcDoxOHB4OwogICAgbWF4LXdpZHRoOjIwY2g7CiAgfQogIC5hdGMtc2l0ZSAucGFnZS1oZWFkZXIgcHsKICAgIGNvbG9yOnZhcigtLWxpY2hlbik7CiAgICBmb250LXNpemU6Y2xhbXAoMS4xMnJlbSwgMS4ydncsIDEuMzJyZW0pOwogICAgbWF4LXdpZHRoOjYwY2g7CiAgICBtYXJnaW4tdG9wOjIwcHg7CiAgfQogIC5hdGMtc2l0ZSAucGFnZS1oZWFkZXIgLmJhY2stbGlua3sKICAgIGRpc3BsYXk6aW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczpjZW50ZXI7CiAgICBnYXA6OHB4OwogICAgY29sb3I6dmFyKC0tbGljaGVuKTsKICAgIHRleHQtZGVjb3JhdGlvbjpub25lOwogICAgZm9udC1zaXplOjAuOTJyZW07CiAgICBmb250LXdlaWdodDo2MDA7CiAgICBtYXJnaW4tYm90dG9tOjI2cHg7CiAgfQogIC5hdGMtc2l0ZSAucGFnZS1oZWFkZXIgLmJhY2stbGluazpob3Zlcntjb2xvcjp2YXIoLS1jYW52YXMpO30KCiAgLyogPT09PT09PT09PT09IFNFUlZJQ0UgQ0FURUdPUlkgQkxPQ0tTID09PT09PT09PT09PSAqLwogIC5hdGMtc2l0ZSAuY2F0LWJsb2NrewogICAgcGFkZGluZzo3NnB4IDA7CiAgICBib3JkZXItdG9wOjRweCBzb2xpZCB2YXIoLS1oZWFydHdvb2QpOwogIH0KICAuYXRjLXNpdGUgLmNhdC1ibG9jay5vbi1jYW52YXN7YmFja2dyb3VuZDp2YXIoLS1jYW52YXMpO2NvbG9yOnZhcigtLWluayk7fQogIC5hdGMtc2l0ZSAuY2F0LWJsb2NrLm9uLWRhcmt7YmFja2dyb3VuZDp2YXIoLS1jYW5vcHkpO2NvbG9yOnZhcigtLWNhbnZhcyk7fQogIC5hdGMtc2l0ZSAuY2F0LWhlYWR7CiAgICBkaXNwbGF5OmZsZXg7CiAgICBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0OwogICAgZ2FwOjI4cHg7CiAgICBtYXJnaW4tYm90dG9tOjUycHg7CiAgfQogIC5hdGMtc2l0ZSAuY2F0LW51bS1iYWRnZXsKICAgIHdpZHRoOjYwcHg7aGVpZ2h0OjYwcHg7CiAgICBib3JkZXItcmFkaXVzOjUwJTsKICAgIGJvcmRlcjoycHggc29saWQgdmFyKC0taGVhcnR3b29kKTsKICAgIGRpc3BsYXk6ZmxleDsKICAgIGFsaWduLWl0ZW1zOmNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDpjZW50ZXI7CiAgICBmb250LWZhbWlseTonU3BhY2UgTW9ubycsbW9ub3NwYWNlOwogICAgZm9udC1zaXplOjEuMTVyZW07CiAgICBmb250LXdlaWdodDo3MDA7CiAgICBmbGV4LXNocmluazowOwogICAgY29sb3I6dmFyKC0taGVhcnR3b29kLWRlZXApOwogIH0KICAuYXRjLXNpdGUgLmNhdC1ibG9jay5vbi1kYXJrIC5jYXQtbnVtLWJhZGdle2NvbG9yOnZhcigtLWhlYXJ0d29vZC1zb2Z0KTt9CiAgLmF0Yy1zaXRlIC5jYXQtaGVhZC10ZXh0e21heC13aWR0aDo3MGNoO30KICAuYXRjLXNpdGUgLmNhdC1oZWFkIGgye2ZvbnQtc2l6ZTpjbGFtcCgycmVtLCAzLjR2dywgMi45cmVtKTt9CiAgLmF0Yy1zaXRlIC5jYXQtaGVhZCBwe21hcmdpbi10b3A6MTRweDtmb250LXNpemU6Y2xhbXAoMS4wNXJlbSwgMS4xdncsIDEuMnJlbSk7bWF4LXdpZHRoOjU2Y2g7fQogIC5hdGMtc2l0ZSAuY2F0LWJsb2NrLm9uLWNhbnZhcyAuY2F0LWhlYWQgcHtjb2xvcjp2YXIoLS1iYXJrKTtmb250LXdlaWdodDo1MDA7fQogIC5hdGMtc2l0ZSAuY2F0LWJsb2NrLm9uLWRhcmsgLmNhdC1oZWFkIHB7Y29sb3I6dmFyKC0tbGljaGVuKTt9CiAgQG1lZGlhIChtYXgtd2lkdGg6NzAwcHgpewogICAgLmF0Yy1zaXRlIC5jYXQtaGVhZHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjE2cHg7fQogIH0KCiAgLyogPT09PT09PT09PT09IFNFUlZJQ0UgUk9XUyA9PT09PT09PT09PT0gKi8KICAuYXRjLXNpdGUgLnN2Yy1saXN0e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47fQogIC5hdGMtc2l0ZSAuc3ZjLXJvd3sKICAgIGRpc3BsYXk6Z3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczowLjg1ZnIgMS4xNWZyOwogICAgZ2FwOjUwcHg7CiAgICBwYWRkaW5nOjM2cHggMDsKICAgIGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWNhbnZhcy0yKTsKICB9CiAgLmF0Yy1zaXRlIC5jYXQtYmxvY2sub24tZGFyayAuc3ZjLXJvd3tib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1saW5lKTt9CiAgLmF0Yy1zaXRlIC5zdmMtcm93OmZpcnN0LWNoaWxke2JvcmRlci10b3A6bm9uZTt9CiAgLmF0Yy1zaXRlIC5zdmMtbGVhZHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO30KICAuYXRjLXNpdGUgLnN2Yy1tZWRpYXsKICAgIHdpZHRoOjEwMCU7CiAgICBhc3BlY3QtcmF0aW86NC8zOwogICAgb3ZlcmZsb3c6aGlkZGVuOwogICAgbWFyZ2luLWJvdHRvbToxOHB4OwogICAgYmFja2dyb3VuZDp2YXIoLS1jYW52YXMtMik7CiAgICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWNhbnZhcy0yKTsKICB9CiAgLmF0Yy1zaXRlIC5jYXQtYmxvY2sub24tZGFyayAuc3ZjLW1lZGlhe2JvcmRlci1jb2xvcjp2YXIoLS1saW5lKTtiYWNrZ3JvdW5kOnZhcigtLWNhbm9weS0yKTt9CiAgLmF0Yy1zaXRlIC5zdmMtbWVkaWEgaW1newogICAgd2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTsKICAgIG9iamVjdC1maXQ6Y292ZXI7CiAgICBmaWx0ZXI6c2F0dXJhdGUoMS4wNSkgY29udHJhc3QoMS4wMik7CiAgfQogIC5hdGMtc2l0ZSAuc3ZjLXJvdyBoM3sKICAgIGZvbnQtc2l6ZTpjbGFtcCgxLjVyZW0sIDEuOXZ3LCAxLjlyZW0pOwogIH0KICAuYXRjLXNpdGUgLmNhdC1ibG9jay5vbi1jYW52YXMgLnN2Yy1yb3cgaDN7Y29sb3I6dmFyKC0taW5rKTt9CiAgLmF0Yy1zaXRlIC5jYXQtYmxvY2sub24tZGFyayAuc3ZjLXJvdyBoM3tjb2xvcjp2YXIoLS1jYW52YXMpO30KICAuYXRjLXNpdGUgLnN2Yy1yb3cgLnN2Yy1jb3B5IHB7CiAgICBmb250LXNpemU6Y2xhbXAoMS4wMnJlbSwgMS4wNXZ3LCAxLjE1cmVtKTsKICAgIGxpbmUtaGVpZ2h0OjEuNjsKICB9CiAgLmF0Yy1zaXRlIC5jYXQtYmxvY2sub24tY2FudmFzIC5zdmMtcm93IC5zdmMtY29weSBwe2NvbG9yOnZhcigtLWJhcmspO2ZvbnQtd2VpZ2h0OjUwMDt9CiAgLmF0Yy1zaXRlIC5jYXQtYmxvY2sub24tZGFyayAuc3ZjLXJvdyAuc3ZjLWNvcHkgcHtjb2xvcjp2YXIoLS1saWNoZW4pO30KICAuYXRjLXNpdGUgLnN2Yy1yb3cgLnNwZWMtbGlzdHsKICAgIGxpc3Qtc3R5bGU6bm9uZTsKICAgIG1hcmdpbjoxOHB4IDAgMDsKICAgIHBhZGRpbmc6MDsKICAgIGRpc3BsYXk6ZmxleDsKICAgIGZsZXgtd3JhcDp3cmFwOwogICAgZ2FwOjEwcHg7CiAgfQogIC5hdGMtc2l0ZSAuc3ZjLXJvdyAuc3BlYy1saXN0IGxpewogICAgZm9udC1mYW1pbHk6J1NwYWNlIE1vbm8nLG1vbm9zcGFjZTsKICAgIGZvbnQtc2l6ZTowLjgycmVtOwogICAgZm9udC13ZWlnaHQ6NzAwOwogICAgbGV0dGVyLXNwYWNpbmc6MC4wMmVtOwogICAgcGFkZGluZzo3cHggMTRweDsKICAgIGJvcmRlci1yYWRpdXM6OTk5cHg7CiAgfQogIC5hdGMtc2l0ZSAuY2F0LWJsb2NrLm9uLWNhbnZhcyAuc3BlYy1saXN0IGxpewogICAgYm9yZGVyOjEuNXB4IHNvbGlkIHZhcigtLWJhcmspOwogICAgY29sb3I6dmFyKC0tYmFyayk7CiAgfQogIC5hdGMtc2l0ZSAuY2F0LWJsb2NrLm9uLWRhcmsgLnNwZWMtbGlzdCBsaXsKICAgIGJvcmRlcjoxLjVweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgIGNvbG9yOnZhcigtLWxpY2hlbik7CiAgfQogIEBtZWRpYSAobWF4LXdpZHRoOjkwMHB4KXsKICAgIC5hdGMtc2l0ZSAuc3ZjLXJvd3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO2dhcDoxNnB4O30KICB9CgogIC8qID09PT09PT09PT09PSBTRVJWSUNFUyBJTkRFWCBRVUlDSyBOQVYgPT09PT09PT09PT09ICovCiAgLmF0Yy1zaXRlIC5xdWljay1uYXZ7CiAgICBiYWNrZ3JvdW5kOnZhcigtLWNhbnZhcyk7CiAgICBib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1jYW52YXMtMik7CiAgICBwb3NpdGlvbjpzdGlja3k7CiAgICB0b3A6NjlweDsKICAgIHotaW5kZXg6NDA7CiAgfQogIC5hdGMtc2l0ZSAucXVpY2stbmF2LWlubmVyewogICAgZGlzcGxheTpmbGV4OwogICAgZ2FwOjA7CiAgICBvdmVyZmxvdy14OmF1dG87CiAgICBzY3JvbGxiYXItd2lkdGg6bm9uZTsKICB9CiAgLmF0Yy1zaXRlIC5xdWljay1uYXYtaW5uZXI6Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZTt9CiAgLmF0Yy1zaXRlIC5xdWljay1uYXYgYXsKICAgIGNvbG9yOnZhcigtLWJhcmspOwogICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7CiAgICBmb250LWZhbWlseTonU3BhY2UgTW9ubycsbW9ub3NwYWNlOwogICAgZm9udC1zaXplOjAuODJyZW07CiAgICBmb250LXdlaWdodDo3MDA7CiAgICBsZXR0ZXItc3BhY2luZzowLjA0ZW07CiAgICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7CiAgICBwYWRkaW5nOjE4cHggMjBweDsKICAgIHdoaXRlLXNwYWNlOm5vd3JhcDsKICAgIGJvcmRlci1ib3R0b206MnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgdHJhbnNpdGlvbjpjb2xvciAwLjJzIGVhc2UsIGJvcmRlci1jb2xvciAwLjJzIGVhc2U7CiAgfQogIC5hdGMtc2l0ZSAucXVpY2stbmF2IGE6aG92ZXJ7Y29sb3I6dmFyKC0taGVhcnR3b29kLWRlZXApO2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0taGVhcnR3b29kKTt9CgogIC8qIElTQSBjcmVkZW50aWFsICovCiAgLmF0Yy1zaXRlIC5jcmVkZW50aWFsLXNlY3Rpb257CiAgICBwYWRkaW5nOjA7CiAgICBiYWNrZ3JvdW5kOnZhcigtLWNhbnZhcyk7CiAgfQogIC5hdGMtc2l0ZSAuY3JlZGVudGlhbC1jYXJkewogICAgZGlzcGxheTpncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjgycHggbWlubWF4KDAsMWZyKTsKICAgIGFsaWduLWl0ZW1zOmNlbnRlcjsKICAgIGdhcDoyMnB4OwogICAgcGFkZGluZzoyMnB4IDA7CiAgICBib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDM1LDQ4LDM5LC4xNCk7CiAgICBib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDM1LDQ4LDM5LC4xNCk7CiAgfQogIC5hdGMtc2l0ZSAuY3JlZGVudGlhbC1iYWRnZXsKICAgIHdpZHRoOjgycHg7CiAgICB0ZXh0LWFsaWduOmNlbnRlcjsKICB9CiAgLmF0Yy1zaXRlIC5jcmVkZW50aWFsLWJhZGdlIGltZ3sKICAgIGRpc3BsYXk6YmxvY2s7CiAgICB3aWR0aDoxMDAlOwogICAgaGVpZ2h0OmF1dG87CiAgICBtYXgtd2lkdGg6MTAwJTsKICB9CiAgLmF0Yy1zaXRlIC5jcmVkZW50aWFsLWxpY2Vuc2V7CiAgICBtYXJnaW4tdG9wOjlweDsKICAgIGZvbnQtZmFtaWx5OidBcmNoaXZvJywgc2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTowLjg2cmVtOwogICAgZm9udC13ZWlnaHQ6NjAwOwogICAgbGluZS1oZWlnaHQ6MS4zNTsKICAgIGNvbG9yOnZhcigtLWluayk7CiAgfQogIC5hdGMtc2l0ZSAuY3JlZGVudGlhbC1jb3B5ewogICAgbWF4LXdpZHRoOjkwMHB4OwogIH0KICAuYXRjLXNpdGUgLmNyZWRlbnRpYWwtY29weSAuZXllYnJvd3sKICAgIGNvbG9yOnZhcigtLWhlYXJ0d29vZCk7CiAgICBtYXJnaW4tYm90dG9tOjVweDsKICB9CiAgLmF0Yy1zaXRlIC5jcmVkZW50aWFsLWNvcHkgaDJ7CiAgICBtYXJnaW46MDsKICAgIGNvbG9yOnZhcigtLWluayk7CiAgICBmb250LXNpemU6Y2xhbXAoMS4zNXJlbSwydncsMnJlbSk7CiAgICBsaW5lLWhlaWdodDoxLjE7CiAgICB0ZXh0LWFsaWduOmxlZnQ7CiAgfQogIC5hdGMtc2l0ZSAuY3JlZGVudGlhbC1jb3B5IHB7CiAgICBtYXJnaW46N3B4IDAgMDsKICAgIGNvbG9yOnZhcigtLWluay1zb2Z0KTsKICAgIGZvbnQtc2l6ZTpjbGFtcCguOTRyZW0sMXZ3LDEuMDZyZW0pOwogICAgbGluZS1oZWlnaHQ6MS41NTsKICAgIHRleHQtYWxpZ246bGVmdDsKICB9CiAgQG1lZGlhIChtYXgtd2lkdGg6NzAwcHgpewogICAgLmF0Yy1zaXRlIC5jcmVkZW50aWFsLWNhcmR7CiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczo2OHB4IG1pbm1heCgwLDFmcik7CiAgICAgIGdhcDoxNnB4OwogICAgICBwYWRkaW5nOjE4cHggMDsKICAgIH0KICAgIC5hdGMtc2l0ZSAuY3JlZGVudGlhbC1iYWRnZXt3aWR0aDo2OHB4O30KICAgIC5hdGMtc2l0ZSAuY3JlZGVudGlhbC1saWNlbnNle2ZvbnQtc2l6ZTouNzhyZW07fQogIH0KICBAbWVkaWEgKG1heC13aWR0aDo0ODBweCl7CiAgICAuYXRjLXNpdGUgLmNyZWRlbnRpYWwtY2FyZHsKICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjU4cHggbWlubWF4KDAsMWZyKTsKICAgICAgZ2FwOjE0cHg7CiAgICB9CiAgICAuYXRjLXNpdGUgLmNyZWRlbnRpYWwtYmFkZ2V7d2lkdGg6NThweDt9CiAgICAuYXRjLXNpdGUgLmNyZWRlbnRpYWwtY29weSBwe2ZvbnQtc2l6ZTouOXJlbTt9CiAgICAuYXRjLXNpdGUgLmNyZWRlbnRpYWwtbGljZW5zZXtmb250LXNpemU6LjcycmVtO30KICB9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IGNsYXNzPSJhdGMtc2l0ZSI+Cgo8bmF2PgogIDxkaXYgY2xhc3M9Im5hdi1pbm5lciI+CiAgIDxhIGhyZWY9Imh0dHBzOi8vYXJ0aXN0aWN0cmVlcy5jb20iIGNsYXNzPSJicmFuZCIgYXJpYS1sYWJlbD0iQXJ0aXN0aWMgVHJlZSBDYXJlIGhvbWUiPgogIDxpbWcgc3JjPSJodHRwczovL29sZC5hcnRpc3RpY3RyZWVzLmNvbS9yZXNvdXJjZXMvaW1hZ2VzL2xvZ28ucG5nIiBhbHQ9IkFydGlzdGljIFRyZWUgQ2FyZSIgb25lcnJvcj0idGhpcy5zdHlsZS5kaXNwbGF5PSdub25lJyI+CjwvYT4KICAgIDxkaXYgY2xhc3M9Im5hdi1yaWdodCI+CiAgICAgIDx1bCBjbGFzcz0ibmF2LWxpbmtzIG1vYmlsZS1oaWRlIj4KICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9teS5hcnRpc3RpY3RyZWVzLmNvbSI+SG9tZTwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL215LmFydGlzdGljdHJlZXMuY29tLyN3aHkiPldoeSBVczwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL215LmFydGlzdGljdHJlZXMuY29tLyNhcmVhIj5TZXJ2aWNlIEFyZWE8L2E+PC9saT4KICAgICAgPC91bD4KICAgICAgPGEgY2xhc3M9Im5hdi1jdGEiIGhyZWY9Imh0dHBzOi8vbXkuYXJ0aXN0aWN0cmVlcy5jb20vI2NvbnRhY3QiPkZyZWUgQXNzZXNzbWVudDwvYT4KICAgICAgPGJ1dHRvbiBjbGFzcz0ibmF2LXRvZ2dsZSIgaWQ9Im5hdlRvZ2dsZSIgYXJpYS1sYWJlbD0iT3BlbiBtZW51IiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1jb250cm9scz0ibW9iaWxlTWVudSI+CiAgICAgICAgPHNwYW4+PC9zcGFuPjxzcGFuPjwvc3Bhbj48c3Bhbj48L3NwYW4+CiAgICAgIDwvYnV0dG9uPgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibW9iaWxlLW1lbnUiIGlkPSJtb2JpbGVNZW51Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vbXkuYXJ0aXN0aWN0cmVlcy5jb20iPkhvbWU8L2E+CiAgICA8YSBocmVmPSJodHRwczovL215LmFydGlzdGljdHJlZXMuY29tLyN3aHkiPldoeSBVczwvYT4KICAgIDxhIGhyZWY9Imh0dHBzOi8vbXkuYXJ0aXN0aWN0cmVlcy5jb20vI2FyZWEiPlNlcnZpY2UgQXJlYTwvYT4KICAgIDxhIGNsYXNzPSJtb2JpbGUtbWVudS1jdGEiIGhyZWY9Imh0dHBzOi8vbXkuYXJ0aXN0aWN0cmVlcy5jb20vI2NvbnRhY3QiPkZyZWUgQXNzZXNzbWVudCDihpI8L2E+CiAgPC9kaXY+CjwvbmF2PgoKPCEtLSA9PT09PT09PT09PT0gUEFHRSBIRUFERVIgKHBob3RvIGJhY2tkcm9wKSA9PT09PT09PT09PT0gLS0+CjxoZWFkZXIgY2xhc3M9InBhZ2UtaGVhZGVyIj4KICA8ZGl2IGNsYXNzPSJwYWdlLWhlYWRlci1tZWRpYSI+CiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9vbGQuYXJ0aXN0aWN0cmVlcy5jb20vcmVzb3VyY2VzL2ltYWdlcy9sYW5kc2NhcGUtd2lkZS5qcGciIGFsdD0iTGFuZHNjYXBlZCB0cmVlIGNhbm9weSIgb25lcnJvcj0idGhpcy5zcmM9J2h0dHBzOi8vb2xkLmFydGlzdGljdHJlZXMuY29tL3Jlc291cmNlcy9pbWFnZXMvY3Jvd24td2lkZS5qcGcnOyB0aGlzLm9uZXJyb3I9bnVsbDsiPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9IndyYXAgaW5uZXIiPgogICAgPGEgY2xhc3M9ImJhY2stbGluayIgaHJlZj0iaHR0cHM6Ly9teS5hcnRpc3RpY3RyZWVzLmNvbSI+4oaQIEJhY2sgdG8gaG9tZTwvYT4KICAgIDxkaXYgY2xhc3M9ImV5ZWJyb3ciPkV2ZXJ5IHNlcnZpY2UsIGluIG9uZSBwbGFjZTwvZGl2PgogICAgPGgxPlRlbiB3YXlzIHdlIGtlZXAgSG91c3RvbidzIHRyZWVzIOKAlCBhbmQgZXZlcnl0aGluZyB1bmRlciB0aGVtIOKAlCBzYWZlLjwvaDE+CiAgICA8cD5FdmVyeSBzZXJ2aWNlIEFydGlzdGljIFRyZWUgQ2FyZSBvZmZlcnMsIGdyb3VwZWQgdGhlIHdheSB5b3UnZCBhY3R1YWxseSB0aGluayBhYm91dCB0aGVtOiB3aGF0J3MgdXJnZW50LCB3aGF0IHByZXZlbnRzIGJpZ2dlciBwcm9ibGVtcywgd2hhdCBwcm90ZWN0cyB5b3VyIHByb3BlcnR5LCBhbmQgd2hhdCdzIGJ1aWx0IGZvciB0aGUgbG9uZyB0ZXJtLjwvcD4KICA8L2Rpdj4KPC9oZWFkZXI+Cgo8IS0tID09PT09PT09PT09PSBRVUlDSyBOQVYgPT09PT09PT09PT09IC0tPgo8ZGl2IGNsYXNzPSJxdWljay1uYXYiPgogIDxkaXYgY2xhc3M9IndyYXAgcXVpY2stbmF2LWlubmVyIj4KICAgIDxhIGhyZWY9IiNoYXphcmQiPkhhemFyZCAmYW1wOyBTdG9ybTwvYT4KICAgIDxhIGhyZWY9IiNoZWFsdGgiPlRyZWUgSGVhbHRoPC9hPgogICAgPGEgaHJlZj0iI3Byb3BlcnR5Ij5Qcm9wZXJ0eSAmYW1wOyBMYW5kPC9hPgogICAgPGEgaHJlZj0iI2Rlc2lnbiI+RGVzaWduICZhbXA7IENvbnN1bHRpbmc8L2E+CiAgPC9kaXY+CjwvZGl2PgoKPCEtLSA9PT09PT09PT09PT0gUFJPRkVTU0lPTkFMIENSRURFTlRJQUwgPT09PT09PT09PT09IC0tPgo8c2VjdGlvbiBjbGFzcz0iY3JlZGVudGlhbC1zZWN0aW9uIiBhcmlhLWxhYmVsbGVkYnk9ImNyZWRlbnRpYWwtdGl0bGUiPgogIDxkaXYgY2xhc3M9IndyYXAiPgogICAgPGRpdiBjbGFzcz0iY3JlZGVudGlhbC1jYXJkIj4KICAgICAgPGRpdiBjbGFzcz0iY3JlZGVudGlhbC1iYWRnZSI+CiAgICAgICAgPGltZwogICAgICAgICAgc3JjPSJodHRwczovL215LmZ1bm5lbHBhZ2VzLmNvbS91c2VyLWRhdGEvZ2FsbGVyeS8xMjc4Lzc2NDUtNmE1ZDcwYTkwYWY3ZC5wbmc/cj02NjM4NSIKICAgICAgICAgIGFsdD0iSVNBIENlcnRpZmllZCBBcmJvcmlzdCBiYWRnZSIKICAgICAgICAgIGxvYWRpbmc9ImVhZ2VyIgogICAgICAgID4KICAgICAgICA8ZGl2IGNsYXNzPSJjcmVkZW50aWFsLWxpY2Vuc2UiPkxlb24gSHVudDxicj5UWC0yNTg1MTZBPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjcmVkZW50aWFsLWNvcHkiPgogICAgICAgIDxkaXYgY2xhc3M9ImV5ZWJyb3ciPlByb2Zlc3Npb25hbCBjcmVkZW50aWFsPC9kaXY+CiAgICAgICAgPGgyIGlkPSJjcmVkZW50aWFsLXRpdGxlIj5JU0EgQ2VydGlmaWVkIEFyYm9yaXN0PC9oMj4KICAgICAgICA8cD5DZXJ0aWZpZWQga25vd2xlZGdlIHN1cHBvcnRpbmcgc2FmZXIgZGVjaXNpb25zLCByZXNwb25zaWJsZSByZWNvbW1lbmRhdGlvbnMsIGFuZCBsb25nLXRlcm0gdHJlZSBjYXJlIGFjcm9zcyBldmVyeSBzZXJ2aWNlIHdlIHByb3ZpZGUuPC9wPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L3NlY3Rpb24+Cgo8IS0tID09PT09PT09PT09PSAwMSBIQVpBUkQgJiBTVE9STSBSRVNQT05TRSA9PT09PT09PT09PT0gLS0+CjxzZWN0aW9uIGNsYXNzPSJjYXQtYmxvY2sgb24tY2FudmFzIiBpZD0iaGF6YXJkIj4KICA8ZGl2IGNsYXNzPSJ3cmFwIj4KICAgIDxkaXYgY2xhc3M9ImNhdC1oZWFkIj4KICAgICAgPGRpdiBjbGFzcz0iY2F0LW51bS1iYWRnZSI+MDE8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2F0LWhlYWQtdGV4dCI+CiAgICAgICAgPGRpdiBjbGFzcz0iZXllYnJvdyI+VXJnZW50PC9kaXY+CiAgICAgICAgPGgyPkhhemFyZCAmYW1wOyBTdG9ybSBSZXNwb25zZTwvaDI+CiAgICAgICAgPHA+V2hlbiBhIHRyZWUgaXMgYWxyZWFkeSBhIGRhbmdlciDigJQgbGVhbmluZywgc3BsaXQsIGRvd24sIG9yIHRocmVhdGVuaW5nIGEgc3RydWN0dXJlIOKAlCB0aGVzZSBhcmUgdGhlIGNhbGxzIHRoYXQgY2FuJ3Qgd2FpdC48L3A+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJzdmMtbGlzdCI+CiAgICAgIDxkaXYgY2xhc3M9InN2Yy1yb3ciPgogICAgICAgIDxkaXYgY2xhc3M9InN2Yy1sZWFkIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InN2Yy1tZWRpYSI+PGltZyBzcmM9Imh0dHBzOi8vb2xkLmFydGlzdGljdHJlZXMuY29tL3Jlc291cmNlcy9pbWFnZXMvZGFuZ2Vyb3VzLXdpZGUuanBnIiBhbHQ9IkNsaW1iZXIgcGVyZm9ybWluZyBhIGRhbmdlcm91cyB0cmVlIHJlbW92YWwiIGxvYWRpbmc9ImxhenkiIG9uZXJyb3I9InRoaXMucGFyZW50RWxlbWVudC5zdHlsZS5kaXNwbGF5PSdub25lJyI+PC9kaXY+CiAgICAgICAgICA8aDM+RGFuZ2Vyb3VzIFJlbW92YWxzPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdmMtY29weSI+CiAgICAgICAgICA8cD5QcmVjYXJpb3VzLCBoaWdoLXJpc2sgcmVtb3ZhbHMgbmVhciBob21lcywgcG93ZXIgbGluZXMsIGFuZCBwcm9wZXJ0eSBsaW5lcyByZXF1aXJlIGp1ZGdtZW50IGFzIG11Y2ggYXMgZXF1aXBtZW50LiBPdXIgY2xpbWJlcnMgdXNlIGEgZ2FmZmxlc3Mgcm9wZS1jbGltYmluZyB0ZWNobmlxdWUgdGhhdCBwcm90ZWN0cyB0aGUgdHJlZSdzIGNhbWJpdW0gbGF5ZXIgd2hpbGUgd29ya2luZywgYW5kIGZvciBsYXJnZXIgb3IgaGlnaGVyLXJpc2sgam9icyB3ZSBicmluZyBpbiBjcmFuZXMgYW5kIGFlcmlhbCBsaWZ0cyB0byBrZWVwIHBvdGVudGlhbCBkYW1hZ2UgdG8gYW4gYWJzb2x1dGUgbWluaW11bS4gRXZlcnkgcmVtb3ZhbCBpcyBiYWNrZWQgYnkgbW9yZSB0aGFuICQyIG1pbGxpb24gaW4gbGlhYmlsaXR5IGluc3VyYW5jZS48L3A+CiAgICAgICAgICA8dWwgY2xhc3M9InNwZWMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5HYWZmbGVzcyByb3BlLWNsaW1iaW5nPC9saT4KICAgICAgICAgICAgPGxpPkNyYW5lICZhbXA7IGFlcmlhbC1saWZ0IGNhcGFibGU8L2xpPgogICAgICAgICAgICA8bGk+JDJNKyBsaWFiaWxpdHkgaW5zdXJlZDwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InN2Yy1yb3ciPgogICAgICAgIDxkaXYgY2xhc3M9InN2Yy1sZWFkIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InN2Yy1tZWRpYSI+PGltZyBzcmM9Imh0dHBzOi8vb2xkLmFydGlzdGljdHJlZXMuY29tL3Jlc291cmNlcy9pbWFnZXMvZ2FsbGVyeS9pY2VzdHJvbXR1bHNhMS5qcGciIGFsdD0iU3Rvcm0gZGFtYWdlIGNsZWFudXAgYWZ0ZXIgaWNlIHN0b3JtIiBsb2FkaW5nPSJsYXp5IiBvbmVycm9yPSJ0aGlzLnBhcmVudEVsZW1lbnQuc3R5bGUuZGlzcGxheT0nbm9uZSciPjwvZGl2PgogICAgICAgICAgPGgzPlN0b3JtIERhbWFnZSBDbGVhbnVwPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdmMtY29weSI+CiAgICAgICAgICA8cD5XaW5kLCBpY2UsIGFuZCBsaWdodG5pbmcgYnJpbmcgZG93biBodW5kcmVkcyBvZiB0aG91c2FuZHMgb2YgdHJlZXMgYWNyb3NzIHRoZSBjb3VudHJ5IGV2ZXJ5IHllYXIuIFdoZW4gYSBzdG9ybSBoYXMgdXByb290ZWQgYSB0cmVlIG9yIGxlZnQgYnJhbmNoZXMgdGhyZWF0ZW5pbmcgeW91ciBob21lIG9yIGJ1c2luZXNzLCB3ZSByZXNwb25kIGZhc3Qg4oCUIGNsZWFyaW5nIGRlYnJpcywgcmVtb3ZpbmcgaGF6YXJkcywgYW5kIG1ha2luZyB0aGUgcHJvcGVydHkgc2FmZSBhZ2Fpbi48L3A+CiAgICAgICAgICA8dWwgY2xhc3M9InNwZWMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5GYXN0IHJlc3BvbnNlPC9saT4KICAgICAgICAgICAgPGxpPkZ1bGwgZGVicmlzIGNsZWFudXA8L2xpPgogICAgICAgICAgICA8bGk+SGF6YXJkIHJlbW92YWw8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzdmMtcm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJzdmMtbGVhZCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdmMtbWVkaWEiPjxpbWcgc3JjPSJodHRwczovL29sZC5hcnRpc3RpY3RyZWVzLmNvbS9yZXNvdXJjZXMvaW1hZ2VzL2RlYWR3b29kLXdpZGUuanBnIiBhbHQ9IkRlYWR3b29kIHJlbW92YWwgZnJvbSBhIHRyZWUgY2Fub3B5IiBsb2FkaW5nPSJsYXp5IiBvbmVycm9yPSJ0aGlzLnBhcmVudEVsZW1lbnQuc3R5bGUuZGlzcGxheT0nbm9uZSciPjwvZGl2PgogICAgICAgICAgPGgzPkRlYWR3b29kIFJlbW92YWw8L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InN2Yy1jb3B5Ij4KICAgICAgICAgIDxwPkRlYWQgd29vZCBkb2Vzbid0IGJlbmQgaW4gdGhlIHdpbmQgdGhlIHdheSBsaXZpbmcgd29vZCBkb2VzIOKAlCBpdCdzIGRyeSwgYnJpdHRsZSwgYW5kIHVucHJlZGljdGFibGUsIGFuZCBpdCBjYW4gYnJlYWsgb3IgZmFsbCB3aXRoIG5vIHdhcm5pbmcuIFRoZSBsb25nZXIgYSBkZWFkIHRyZWUgb3IgZGVhZCBsaW1iIHN0YW5kcywgdGhlIGhpZ2hlciB0aGUgcmlzayB0byB5b3VyIHByb3BlcnR5IGFuZCB0aGUgcGVvcGxlIHVuZGVyIGl0LiBXZSByZW1vdmUgZGVhZHdvb2QgYmVmb3JlIGl0IGJlY29tZXMgYSBsaWFiaWxpdHksIG5vdCBhZnRlci48L3A+CiAgICAgICAgICA8dWwgY2xhc3M9InNwZWMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5EZWFkICZhbXA7IGR5aW5nIGxpbWIgcmVtb3ZhbDwvbGk+CiAgICAgICAgICAgIDxsaT5GdWxsIGRlYWQtdHJlZSByZW1vdmFsPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+Cjwvc2VjdGlvbj4KCjwhLS0gPT09PT09PT09PT09IDAyIFRSRUUgSEVBTFRIICYgUFJFVkVOVElPTiA9PT09PT09PT09PT0gLS0+CjxzZWN0aW9uIGNsYXNzPSJjYXQtYmxvY2sgb24tZGFyayIgaWQ9ImhlYWx0aCI+CiAgPGRpdiBjbGFzcz0id3JhcCI+CiAgICA8ZGl2IGNsYXNzPSJjYXQtaGVhZCI+CiAgICAgIDxkaXYgY2xhc3M9ImNhdC1udW0tYmFkZ2UiPjAyPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNhdC1oZWFkLXRleHQiPgogICAgICAgIDxkaXYgY2xhc3M9ImV5ZWJyb3ciPlByZXZlbnRpdmU8L2Rpdj4KICAgICAgICA8aDI+VHJlZSBIZWFsdGggJmFtcDsgUHJldmVudGlvbjwvaDI+CiAgICAgICAgPHA+VGhlIGJlc3QgdGltZSB0byBkZWFsIHdpdGggYSBoYXphcmRvdXMgdHJlZSBpcyBiZWZvcmUgaXQncyBoYXphcmRvdXMuIFRoZXNlIHNlcnZpY2VzIGNhdGNoIHByb2JsZW1zIGVhcmx5IGFuZCBrZWVwIGhlYWx0aHkgdHJlZXMgaGVhbHRoeS48L3A+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJzdmMtbGlzdCI+CiAgICAgIDxkaXYgY2xhc3M9InN2Yy1yb3ciPgogICAgICAgIDxkaXYgY2xhc3M9InN2Yy1sZWFkIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InN2Yy1tZWRpYSI+PGltZyBzcmM9Imh0dHBzOi8vb2xkLmFydGlzdGljdHJlZXMuY29tL3Jlc291cmNlcy9pbWFnZXMvc3Rvcm0td2lkZS5qcGciIGFsdD0iQXJib3Jpc3QgYXNzZXNzaW5nIGEgdHJlZSBhaGVhZCBvZiBzdG9ybSBzZWFzb24iIGxvYWRpbmc9ImxhenkiIG9uZXJyb3I9InRoaXMucGFyZW50RWxlbWVudC5zdHlsZS5kaXNwbGF5PSdub25lJyI+PC9kaXY+CiAgICAgICAgICA8aDM+U3Rvcm0gUHJldmVudGlvbjwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic3ZjLWNvcHkiPgogICAgICAgICAgPHA+UHJlZGljdGluZyBzdG9ybSBkYW1hZ2Ugc3RhcnRzIHdpdGgga25vd2luZyB0aGUgY29uZGl0aW9uIG9mIHRoZSB0cmVlcyBvbiB5b3VyIHByb3BlcnR5LiBPdXIgYXJib3Jpc3RzIGNoZWNrIGZvciBjcmFja3MsIGRlY2F5LCBhbmQgd2VhayBsaW1icywgYW5kIGNvcnJlY3QgbWlub3IgZGFtYWdlIGJlZm9yZSBpdCBiZWNvbWVzIG1ham9yLiBEb25lIHByb3Blcmx5LCBjb3JyZWN0aXZlIHBydW5pbmcgbGV0cyB3b3VuZHMgY2xvc2Ugb3ZlciBuYXR1cmFsbHkgaW5zdGVhZCBvZiBpbnZpdGluZyB0aGUgZGVjYXkgdGhhdCBpbXByb3BlciBwcnVuaW5nIGNhbiBjYXVzZS48L3A+CiAgICAgICAgICA8dWwgY2xhc3M9InNwZWMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5QcmUtc3Rvcm0gYXNzZXNzbWVudDwvbGk+CiAgICAgICAgICAgIDxsaT5Db3JyZWN0aXZlIHBydW5pbmc8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzdmMtcm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJzdmMtbGVhZCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdmMtbWVkaWEiPjxpbWcgc3JjPSJodHRwczovL29sZC5hcnRpc3RpY3RyZWVzLmNvbS9yZXNvdXJjZXMvaW1hZ2VzL2dhbGxlcnkvMzkuanBnIiBhbHQ9IkhlYWx0aHkgdHJlZSBjYW5vcHkgYWZ0ZXIgdHJlYXRtZW50IiBsb2FkaW5nPSJsYXp5IiBvbmVycm9yPSJ0aGlzLnBhcmVudEVsZW1lbnQuc3R5bGUuZGlzcGxheT0nbm9uZSciPjwvZGl2PgogICAgICAgICAgPGgzPk1pY3JvaW5qZWN0aW9uPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdmMtY29weSI+CiAgICAgICAgICA8cD5UaGUgVHJlZSBUZWNowq4gbWljcm9pbmplY3Rpb24gc3lzdGVtIGRlbGl2ZXJzIGZ1bmdpY2lkZXMsIGluc2VjdGljaWRlcywgYmFjdGVyaWNpZGVzLCBhbmQgbnV0cmllbnRzIGRpcmVjdGx5IGludG8gdGhlIHRyZWUsIG1pbmltaXppbmcgbG9zcyB0byB0aGUgc3Vycm91bmRpbmcgZW52aXJvbm1lbnQgd2hpbGUgbWF4aW1pemluZyBlZmZlY3RpdmVuZXNzIOKAlCBhIG1vcmUgcHJlY2lzZSwgbW9yZSBlbnZpcm9ubWVudGFsbHkgc2Vuc2l0aXZlIGFsdGVybmF0aXZlIHRvIGJyb2FkIGNoZW1pY2FsIHNwcmF5aW5nLCBlc3BlY2lhbGx5IGluIHVyYmFuIHNldHRpbmdzLjwvcD4KICAgICAgICAgIDx1bCBjbGFzcz0ic3BlYy1saXN0Ij4KICAgICAgICAgICAgPGxpPlRyZWUgVGVjaMKuIHN5c3RlbTwvbGk+CiAgICAgICAgICAgIDxsaT5GdW5naWNpZGVzICZhbXA7IG51dHJpZW50czwvbGk+CiAgICAgICAgICAgIDxsaT5Mb3cgZW52aXJvbm1lbnRhbCBpbXBhY3Q8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzdmMtcm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJzdmMtbGVhZCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdmMtbWVkaWEiPjxpbWcgc3JjPSJodHRwczovL29sZC5hcnRpc3RpY3RyZWVzLmNvbS9yZXNvdXJjZXMvaW1hZ2VzL3NsaWRlci1wcnVuaW5nLW5ldy5qcGciIGFsdD0iQ2VydGlmaWVkIGFyYm9yaXN0IGZpbmUtcHJ1bmluZyBhIHRyZWUiIGxvYWRpbmc9ImxhenkiIG9uZXJyb3I9InRoaXMucGFyZW50RWxlbWVudC5zdHlsZS5kaXNwbGF5PSdub25lJyI+PC9kaXY+CiAgICAgICAgICA8aDM+RmluZSBQcnVuaW5nPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdmMtY29weSI+CiAgICAgICAgICA8cD5Dcm93biBjbGVhbmluZywgd2VpZ2h0IHJlZHVjdGlvbiwgdmlzdGEgcHJ1bmluZywgYW5kIGJ1aWxkaW5nIGNsZWFyYW5jZSDigJQgZG9uZSB0byB0aGUgQW1lcmljYW4gTmF0aW9uYWwgU3RhbmRhcmQgZm9yIHRyZWUgcHJ1bmluZyAoQU5TSSBBMzAwKSBieSBjZXJ0aWZpZWQgYXJib3Jpc3RzIGFuZCB0ZWNobmljaWFucyB3aG8ga25vdyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHBydW5pbmcgdGhhdCBoZWxwcyBhIHRyZWUgYW5kIHBydW5pbmcgdGhhdCBodXJ0cyBpdC48L3A+CiAgICAgICAgICA8dWwgY2xhc3M9InNwZWMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5BTlNJIEEzMDAgc3RhbmRhcmQ8L2xpPgogICAgICAgICAgICA8bGk+Q2VydGlmaWVkIGFyYm9yaXN0czwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L3NlY3Rpb24+Cgo8IS0tID09PT09PT09PT09PSAwMyBQUk9QRVJUWSAmIExBTkQgPT09PT09PT09PT09IC0tPgo8c2VjdGlvbiBjbGFzcz0iY2F0LWJsb2NrIG9uLWNhbnZhcyIgaWQ9InByb3BlcnR5Ij4KICA8ZGl2IGNsYXNzPSJ3cmFwIj4KICAgIDxkaXYgY2xhc3M9ImNhdC1oZWFkIj4KICAgICAgPGRpdiBjbGFzcz0iY2F0LW51bS1iYWRnZSI+MDM8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2F0LWhlYWQtdGV4dCI+CiAgICAgICAgPGRpdiBjbGFzcz0iZXllYnJvdyI+UHJvcGVydHk8L2Rpdj4KICAgICAgICA8aDI+UHJvcGVydHkgJmFtcDsgTGFuZDwvaDI+CiAgICAgICAgPHA+U2VydmljZXMgYnVpbHQgYXJvdW5kIHByb3RlY3Rpbmcgc3RydWN0dXJlcywgcmVjbGFpbWluZyB5YXJkIHNwYWNlLCBhbmQgaGFuZGxpbmcgYmlnZ2VyIHNpdGUgYW5kIGxhbmQgcHJvamVjdHMuPC9wPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ic3ZjLWxpc3QiPgogICAgICA8ZGl2IGNsYXNzPSJzdmMtcm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJzdmMtbGVhZCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdmMtbWVkaWEiPjxpbWcgc3JjPSJodHRwczovL29sZC5hcnRpc3RpY3RyZWVzLmNvbS9yZXNvdXJjZXMvaW1hZ2VzL2Nyb3duLXdpZGUuanBnIiBhbHQ9IkNyb3duIHJhaXNlIGFuZCByb29mIGNsZWFyYW5jZSBwcnVuaW5nIiBsb2FkaW5nPSJsYXp5IiBvbmVycm9yPSJ0aGlzLnBhcmVudEVsZW1lbnQuc3R5bGUuZGlzcGxheT0nbm9uZSciPjwvZGl2PgogICAgICAgICAgPGgzPkNyb3duIFJhaXNlICZhbXA7IFJvb2YgQ2xlYXJhbmNlPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdmMtY29weSI+CiAgICAgICAgICA8cD5SZW1vdmluZyB0aGUgbG93ZXN0IGJyYW5jaGVzLCBzaWRlIGJyYW5jaGVzLCBvciBwYXJ0cyBvZiBicmFuY2hlcyByYWlzZXMgYSB0cmVlJ3MgY3Jvd24g4oCUIGxldHRpbmcgaW4gbW9yZSBsaWdodCBhbmQgd2luZCB1bmRlcm5lYXRoLCBhbmQgZ2l2aW5nIHlvdSByb29tIHRvIHdhbGsgYmVuZWF0aCBpdC4gV2hlcmUgdHJlZXMgYXJlIGNvbWluZyBpbnRvIGNvbnRhY3Qgd2l0aCBhIHJvb2YsIHdlIHBydW5lIGZvciByb29mIGNsZWFyYW5jZSBvZiByb3VnaGx5IDctOCBmZWV0IHVwIGFuZCAzLTQgZmVldCBvdXQsIHByZXZlbnRpbmcgdGhlIGV4cGVuc2l2ZSBkYW1hZ2UgdGhhdCBjb250YWN0IGNhbiBjYXVzZS48L3A+CiAgICAgICAgICA8dWwgY2xhc3M9InNwZWMtbGlzdCI+CiAgICAgICAgICAgIDxsaT43LTggZnQgcm9vZiBjbGVhcmFuY2U8L2xpPgogICAgICAgICAgICA8bGk+TW9yZSBsaWdodCAmYW1wOyBhaXJmbG93PC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic3ZjLXJvdyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3ZjLWxlYWQiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic3ZjLW1lZGlhIj48aW1nIHNyYz0iaHR0cHM6Ly9vbGQuYXJ0aXN0aWN0cmVlcy5jb20vcmVzb3VyY2VzL2ltYWdlcy9zdHVtcC13aWRlLmpwZyIgYWx0PSJTdHVtcCBncmluZGluZyBlcXVpcG1lbnQgcmVtb3ZpbmcgYSB0cmVlIHN0dW1wIiBsb2FkaW5nPSJsYXp5IiBvbmVycm9yPSJ0aGlzLnBhcmVudEVsZW1lbnQuc3R5bGUuZGlzcGxheT0nbm9uZSciPjwvZGl2PgogICAgICAgICAgPGgzPlN0dW1wIEdyaW5kaW5nPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdmMtY29weSI+CiAgICAgICAgICA8cD5PbmNlIGEgdHJlZSBpcyBjdXQsIGl0cyByb290cyBzdG9wIGdyb3dpbmcgd2l0aGluIHdlZWtzIGFuZCBzb29uIGRpZSBvZmYg4oCUIHN0dW1wIGdyaW5kaW5nIGlzIHRoZSBjbGVhbmVzdCB3YXkgdG8gZmluaXNoIHRoZSBqb2IuIE91ciBhcnRpY3VsYXRpbmcgZ3JpbmRlciBnZXRzIGludG8gdGlnaHQgc3BvdHMgb3RoZXIgZXF1aXBtZW50IGNhbid0LCBsaWtlIGNsb3NlIHRvIGhvdXNlIGZvdW5kYXRpb25zLCBhbmQgZ3JpbmRzIHRoZSBzdHVtcCBhbmQgcm9vdCBzeXN0ZW0gYXdheSBjb21wbGV0ZWx5OiBubyBob2xlIHRvIGZpbGwsIG5vIHJvb3RzIHRvIGhhdWwgb2ZmLCBhbmQgdGhlIGxlZnRvdmVyIGdyaW5kaW5ncyBiZWNvbWUgbnV0cmllbnQtcmljaCBtdWxjaC48L3A+CiAgICAgICAgICA8dWwgY2xhc3M9InNwZWMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5ObyBob2xlIGxlZnQgYmVoaW5kPC9saT4KICAgICAgICAgICAgPGxpPlJlYWNoZXMgbmVhciBmb3VuZGF0aW9uczwvbGk+CiAgICAgICAgICAgIDxsaT5HcmluZGluZ3MgYmVjb21lIG11bGNoPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic3ZjLXJvdyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3ZjLWxlYWQiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic3ZjLW1lZGlhIj48aW1nIHNyYz0iaHR0cHM6Ly9vbGQuYXJ0aXN0aWN0cmVlcy5jb20vcmVzb3VyY2VzL2ltYWdlcy9ib2JjYXQtd2lkZS5qcGciIGFsdD0iU2tpZC1zdGVlciBsb2FkZXIgd29ya2luZyBhIHByb3BlcnR5IHNpdGUiIGxvYWRpbmc9ImxhenkiIG9uZXJyb3I9InRoaXMucGFyZW50RWxlbWVudC5zdHlsZS5kaXNwbGF5PSdub25lJyI+PC9kaXY+CiAgICAgICAgICA8aDM+U2tpZC1TdGVlciBMb2FkZXIgU2VydmljZXM8L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InN2Yy1jb3B5Ij4KICAgICAgICAgIDxwPkZvciBsYW5kc2NhcGluZyBhbmQgc2l0ZSBwcm9qZWN0cyB0b28gYmlnIGZvciBoYW5kIHRvb2xzIOKAlCBzbWFsbCBleGNhdmF0aW9uLCBncmFkaW5nLCBzcHJlYWRpbmcgbGFuZHNjYXBlIG1hdGVyaWFsLCB0cmVuY2hpbmcsIGRyYWluYWdlLCB1dGlsaXR5IHdvcmssIGxvdCBjbGVhcmluZywgYW5kIGNsZWFudXBzLiBJZiBpdCBuZWVkcyBoZWF2aWVyIGVxdWlwbWVudCB0byBtb3ZlIGVhcnRoIG9yIG1hdGVyaWFsLCB0aGlzIGlzIHRoZSBzZXJ2aWNlIHRoYXQgY292ZXJzIGl0LjwvcD4KICAgICAgICAgIDx1bCBjbGFzcz0ic3BlYy1saXN0Ij4KICAgICAgICAgICAgPGxpPkV4Y2F2YXRpb24gJmFtcDsgZ3JhZGluZzwvbGk+CiAgICAgICAgICAgIDxsaT5EcmFpbmFnZSAmYW1wOyB0cmVuY2hpbmc8L2xpPgogICAgICAgICAgICA8bGk+TG90IGNsZWFyaW5nPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+Cjwvc2VjdGlvbj4KCjwhLS0gPT09PT09PT09PT09IDA0IERFU0lHTiAmIENPTlNVTFRJTkcgPT09PT09PT09PT09IC0tPgo8c2VjdGlvbiBjbGFzcz0iY2F0LWJsb2NrIG9uLWRhcmsiIGlkPSJkZXNpZ24iPgogIDxkaXYgY2xhc3M9IndyYXAiPgogICAgPGRpdiBjbGFzcz0iY2F0LWhlYWQiPgogICAgICA8ZGl2IGNsYXNzPSJjYXQtbnVtLWJhZGdlIj4wNDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjYXQtaGVhZC10ZXh0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJleWVicm93Ij5Mb25nLVRlcm08L2Rpdj4KICAgICAgICA8aDI+RGVzaWduICZhbXA7IENvbnN1bHRpbmc8L2gyPgogICAgICAgIDxwPlBsYW5uaW5nIHdoYXQgYSBwcm9wZXJ0eSBsb29rcyBsaWtlIGZvciB5ZWFycyB0byBjb21lIOKAlCBmcm9tIGEgc2luZ2xlIHRyZWUgdG8gYSBmdWxsIGxhbmRzY2FwZS48L3A+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJzdmMtbGlzdCI+CiAgICAgIDxkaXYgY2xhc3M9InN2Yy1yb3ciPgogICAgICAgIDxkaXYgY2xhc3M9InN2Yy1sZWFkIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InN2Yy1tZWRpYSI+PGltZyBzcmM9Imh0dHBzOi8vb2xkLmFydGlzdGljdHJlZXMuY29tL3Jlc291cmNlcy9pbWFnZXMvbGFuZHNjYXBlLXdpZGUuanBnIiBhbHQ9IkRlc2lnbmVkIHRyZWUgc2NhcGUgbGFuZHNjYXBpbmciIGxvYWRpbmc9ImxhenkiIG9uZXJyb3I9InRoaXMucGFyZW50RWxlbWVudC5zdHlsZS5kaXNwbGF5PSdub25lJyI+PC9kaXY+CiAgICAgICAgICA8aDM+VHJlZSBTY2FwZSBEZXNpZ248L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InN2Yy1jb3B5Ij4KICAgICAgICAgIDxwPkNob29zaW5nIHRoZSByaWdodCB0cmVlIHNjYXBlIGlzIGEgbG9uZy10ZXJtIGRlY2lzaW9uLCBhbmQgaXQncyB3b3J0aCBnZXR0aW5nIHJpZ2h0LiBXZSBvZmZlciBldmVyeXRoaW5nIGZyb20gc2VsZWN0aW5nIGFuZCBwbGFjaW5nIGEgc2luZ2xlIHRyZWUgdG8gYSBmdWxsIGRlc2lnbiBza2V0Y2ggY292ZXJpbmcgbGFuZHNjYXBlIGJlZHMsIHBsYW50aW5ncywgYW5kIHdhbGtzIGFjcm9zcyBhbiBlbnRpcmUgcHJvcGVydHkg4oCUIHBsdXMgYmVkIHJlbm92YXRpb24sIGlycmlnYXRpb24gc3lzdGVtcywgYW5kIHNlYXNvbmFsIGNvbG9yIG1hbmFnZW1lbnQuIFdlJ3ZlIGVhcm5lZCB0aGUgbG95YWx0eSBvZiBjbGllbnRzIGFjcm9zcyBIb3VzdG9uJ3MgUml2ZXIgT2FrcywgVGFuZ2xld29vZCwgTWVtb3JpYWwsIFRoZSBXb29kbGFuZHMsIFN1Z2FyIExhbmQsIENsZWFyIExha2UsIFdlc3QgVW5pdmVyc2l0eSwgVGhlIEhlaWdodHMsIGFuZCBiZXlvbmQuPC9wPgogICAgICAgICAgPHVsIGNsYXNzPSJzcGVjLWxpc3QiPgogICAgICAgICAgICA8bGk+RnVsbCBsYW5kc2NhcGUgZGVzaWduPC9saT4KICAgICAgICAgICAgPGxpPklycmlnYXRpb24gJmFtcDsgc2Vhc29uYWwgY29sb3I8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzdmMtcm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJzdmMtbGVhZCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdmMtbWVkaWEiPjxpbWcgc3JjPSJodHRwczovL29sZC5hcnRpc3RpY3RyZWVzLmNvbS9yZXNvdXJjZXMvaW1hZ2VzL3NsaWRlci1sZW9uLmpwZyIgYWx0PSJMZW9uIEh1bnQsIGZvdW5kZXIgb2YgQXJ0aXN0aWMgVHJlZSBDYXJlIiBsb2FkaW5nPSJsYXp5IiBvbmVycm9yPSJ0aGlzLnBhcmVudEVsZW1lbnQuc3R5bGUuZGlzcGxheT0nbm9uZSciPjwvZGl2PgogICAgICAgICAgPGgzPkFyYm9yaXN0IENvbnN1bHRpbmc8L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InN2Yy1jb3B5Ij4KICAgICAgICAgIDxwPlN0cmFpZ2h0IGFuc3dlcnMgb24gdHJlZSBoZWFsdGgsIHN0b3JtIHJpc2ssIGFuZCBsb25nLXRlcm0gcHJvcGVydHkgcGxhbm5pbmcg4oCUIGNvbnN0cnVjdGlvbiBjb25zdWx0aW5nLCBtYWludGVuYW5jZSBwbGFubmluZywgYW5kIGd1aWRhbmNlIG9uIHdoYXQgbmVlZHMgYXR0ZW50aW9uIG5vdyB2ZXJzdXMgd2hhdCBjYW4gd2FpdC48L3A+CiAgICAgICAgICA8dWwgY2xhc3M9InNwZWMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5Db25zdHJ1Y3Rpb24gY29uc3VsdGluZzwvbGk+CiAgICAgICAgICAgIDxsaT5NYWludGVuYW5jZSBwbGFubmluZzwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InN2Yy1yb3ciPgogICAgICAgIDxkaXYgY2xhc3M9InN2Yy1sZWFkIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InN2Yy1tZWRpYSI+PGltZyBzcmM9Imh0dHBzOi8vb2xkLmFydGlzdGljdHJlZXMuY29tL3Jlc291cmNlcy9pbWFnZXMvZ2FsbGVyeS9va2xhaG9tYS5qcGciIGFsdD0iTGFuZCBjbGVhcmluZyBhbmQgc3Rvcm0gZGlzYXN0ZXIgcmVsaWVmIHdvcmsiIGxvYWRpbmc9ImxhenkiIG9uZXJyb3I9InRoaXMucGFyZW50RWxlbWVudC5zdHlsZS5kaXNwbGF5PSdub25lJyI+PC9kaXY+CiAgICAgICAgICA8aDM+TGFuZCBDbGVhcmluZyAmYW1wOyBEaXNhc3RlciBSZWxpZWY8L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InN2Yy1jb3B5Ij4KICAgICAgICAgIDxwPkxhbmQgY2xlYXJpbmcsIGdyYWRpbmcsIGFuZCB0cmVlIHJlbW92YWwgZm9yIG1ham9yIHNpdGUgY2hhbmdlcyDigJQgYW5kIGRpc2FzdGVyIHJlbGllZiBzdXBwb3J0IHdoZW4gYSBwcm9wZXJ0eSBuZWVkcyB0byBiZSBjbGVhcmVkIGFuZCBtYWRlIHNhZmUgYWZ0ZXIgc2V2ZXJlIHdlYXRoZXIuPC9wPgogICAgICAgICAgPHVsIGNsYXNzPSJzcGVjLWxpc3QiPgogICAgICAgICAgICA8bGk+TGFuZCBjbGVhcmluZyAmYW1wOyBncmFkaW5nPC9saT4KICAgICAgICAgICAgPGxpPkRpc2FzdGVyIHJlbGllZjwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L3NlY3Rpb24+Cgo8IS0tID09PT09PT09PT09PSBDVEEgLyBDT05UQUNUID09PT09PT09PT09PSAtLT4KPHNlY3Rpb24gY2xhc3M9ImNvbnRhY3QiIGlkPSJjb250YWN0Ij4KICA8ZGl2IGNsYXNzPSJ3cmFwIj4KICAgIDxkaXYgY2xhc3M9ImV5ZWJyb3ciIHN0eWxlPSJqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyI+Tm90IHN1cmUgd2hpY2ggc2VydmljZSBmaXRzPzwvZGl2PgogICAgPGgyPlRlbGwgdXMgd2hhdCdzIGdvaW5nIG9uLiBXZSdsbCB0YWtlIGl0IGZyb20gdGhlcmUuPC9oMj4KICAgIDxwIGNsYXNzPSJsZWRlIj5VcmdlbnQgaGF6YXJkLCByb3V0aW5lIGNhcmUsIG9yIGEgYmlnZ2VyIGxhbmQgcHJvamVjdCDigJQgYSBmcmVlIGFzc2Vzc21lbnQgaXMgdGhlIGZhc3Rlc3Qgd2F5IHRvIGdldCBhIHN0cmFpZ2h0IGFuc3dlci48L3A+CiAgICA8ZGl2IGNsYXNzPSJjb250YWN0LWN0YS1yb3ciPgogICAgICA8YSBjbGFzcz0iYnRuLXByaW1hcnkiIGhyZWY9InRlbDorMTgzMjM0NzQzMjMiPkNhbGwgKDgzMikgMzQ3LTQzMjMg4oaSPC9hPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjb250YWN0LWRldGFpbCI+CiAgICAgIDxkaXY+PGRpdiBjbGFzcz0ibGJsIj5QaG9uZTwvZGl2PjxkaXYgY2xhc3M9InZhbCI+KDgzMikgMzQ3LTQzMjM8L2Rpdj48L2Rpdj4KICAgICAgPGRpdj48ZGl2IGNsYXNzPSJsYmwiPkVtYWlsPC9kaXY+PGRpdiBjbGFzcz0idmFsIj5sbGh1bnQyMDAyQHlhaG9vLmNvbTwvZGl2PjwvZGl2PgogICAgICA8ZGl2PjxkaXYgY2xhc3M9ImxibCI+QWRkcmVzczwvZGl2PjxkaXYgY2xhc3M9InZhbCI+NzMxIFJlbm5pZSBTdC4sIEthdHksIFRYIDc3NDUwPC9kaXY+PC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9zZWN0aW9uPgoKPGZvb3Rlcj4KICBBcnRpc3RpYyBUcmVlIENhcmUgwrcgSG91c3RvbiAmYW1wOyBLYXR5LCBUWCDCtyBDb25jZXB0IGxhbmRpbmcgcGFnZQo8L2Zvb3Rlcj4KCjwvZGl2PgoKPHNjcmlwdD4KKGZ1bmN0aW9uKCl7CiAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdGMtc2l0ZScpOwogIGlmKCFyb290KSByZXR1cm47CgogIGNvbnN0IHRvZ2dsZSA9IHJvb3QucXVlcnlTZWxlY3RvcignI25hdlRvZ2dsZScpOwogIGNvbnN0IG1lbnUgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNtb2JpbGVNZW51Jyk7CgogIGlmKHRvZ2dsZSAmJiBtZW51KXsKICAgIHRvZ2dsZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgIGNvbnN0IGlzT3BlbiA9IG1lbnUuY2xhc3NMaXN0LnRvZ2dsZSgnaXMtb3BlbicpOwogICAgICB0b2dnbGUuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgaXNPcGVuID8gJ3RydWUnIDogJ2ZhbHNlJyk7CiAgICB9KTsKCiAgICBtZW51LnF1ZXJ5U2VsZWN0b3JBbGwoJ2EnKS5mb3JFYWNoKGZ1bmN0aW9uKGxpbmspewogICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgICBtZW51LmNsYXNzTGlzdC5yZW1vdmUoJ2lzLW9wZW4nKTsKICAgICAgICB0b2dnbGUuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7CiAgICAgIH0pOwogICAgfSk7CiAgfQp9KSgpOwo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+","embed":""}
Services — Artistic Tree Care, Houston TX
Artistic Tree Care
  • Home
  • Why Us
  • Service Area
Free Assessment
Home Why Us Service Area Free Assessment →
Landscaped tree canopy
← Back to home
Every service, in one place

Ten ways we keep Houston's trees — and everything under them — safe.

Every service Artistic Tree Care offers, grouped the way you'd actually think about them: what's urgent, what prevents bigger problems, what protects your property, and what's built for the long term.

Hazard & Storm Tree Health Property & Land Design & Consulting
ISA Certified Arborist badge
Leon Hunt
TX-258516A
Professional credential

ISA Certified Arborist

Certified knowledge supporting safer decisions, responsible recommendations, and long-term tree care across every service we provide.

01
Urgent

Hazard & Storm Response

When a tree is already a danger — leaning, split, down, or threatening a structure — these are the calls that can't wait.

Climber performing a dangerous tree removal

Dangerous Removals

Precarious, high-risk removals near homes, power lines, and property lines require judgment as much as equipment. Our climbers use a gaffless rope-climbing technique that protects the tree's cambium layer while working, and for larger or higher-risk jobs we bring in cranes and aerial lifts to keep potential damage to an absolute minimum. Every removal is backed by more than $2 million in liability insurance.

  • Gaffless rope-climbing
  • Crane & aerial-lift capable
  • $2M+ liability insured
Storm damage cleanup after ice storm

Storm Damage Cleanup

Wind, ice, and lightning bring down hundreds of thousands of trees across the country every year. When a storm has uprooted a tree or left branches threatening your home or business, we respond fast — clearing debris, removing hazards, and making the property safe again.

  • Fast response
  • Full debris cleanup
  • Hazard removal
Deadwood removal from a tree canopy

Deadwood Removal

Dead wood doesn't bend in the wind the way living wood does — it's dry, brittle, and unpredictable, and it can break or fall with no warning. The longer a dead tree or dead limb stands, the higher the risk to your property and the people under it. We remove deadwood before it becomes a liability, not after.

  • Dead & dying limb removal
  • Full dead-tree removal
02
Preventive

Tree Health & Prevention

The best time to deal with a hazardous tree is before it's hazardous. These services catch problems early and keep healthy trees healthy.

Arborist assessing a tree ahead of storm season

Storm Prevention

Predicting storm damage starts with knowing the condition of the trees on your property. Our arborists check for cracks, decay, and weak limbs, and correct minor damage before it becomes major. Done properly, corrective pruning lets wounds close over naturally instead of inviting the decay that improper pruning can cause.

  • Pre-storm assessment
  • Corrective pruning
Healthy tree canopy after treatment

Microinjection

The Tree Tech® microinjection system delivers fungicides, insecticides, bactericides, and nutrients directly into the tree, minimizing loss to the surrounding environment while maximizing effectiveness — a more precise, more environmentally sensitive alternative to broad chemical spraying, especially in urban settings.

  • Tree Tech® system
  • Fungicides & nutrients
  • Low environmental impact
Certified arborist fine-pruning a tree

Fine Pruning

Crown cleaning, weight reduction, vista pruning, and building clearance — done to the American National Standard for tree pruning (ANSI A300) by certified arborists and technicians who know the difference between pruning that helps a tree and pruning that hurts it.

  • ANSI A300 standard
  • Certified arborists
03
Property

Property & Land

Services built around protecting structures, reclaiming yard space, and handling bigger site and land projects.

Crown raise and roof clearance pruning

Crown Raise & Roof Clearance

Removing the lowest branches, side branches, or parts of branches raises a tree's crown — letting in more light and wind underneath, and giving you room to walk beneath it. Where trees are coming into contact with a roof, we prune for roof clearance of roughly 7-8 feet up and 3-4 feet out, preventing the expensive damage that contact can cause.

  • 7-8 ft roof clearance
  • More light & airflow
Stump grinding equipment removing a tree stump

Stump Grinding

Once a tree is cut, its roots stop growing within weeks and soon die off — stump grinding is the cleanest way to finish the job. Our articulating grinder gets into tight spots other equipment can't, like close to house foundations, and grinds the stump and root system away completely: no hole to fill, no roots to haul off, and the leftover grindings become nutrient-rich mulch.

  • No hole left behind
  • Reaches near foundations
  • Grindings become mulch
Skid-steer loader working a property site

Skid-Steer Loader Services

For landscaping and site projects too big for hand tools — small excavation, grading, spreading landscape material, trenching, drainage, utility work, lot clearing, and cleanups. If it needs heavier equipment to move earth or material, this is the service that covers it.

  • Excavation & grading
  • Drainage & trenching
  • Lot clearing
04
Long-Term

Design & Consulting

Planning what a property looks like for years to come — from a single tree to a full landscape.

Designed tree scape landscaping

Tree Scape Design

Choosing the right tree scape is a long-term decision, and it's worth getting right. We offer everything from selecting and placing a single tree to a full design sketch covering landscape beds, plantings, and walks across an entire property — plus bed renovation, irrigation systems, and seasonal color management. We've earned the loyalty of clients across Houston's River Oaks, Tanglewood, Memorial, The Woodlands, Sugar Land, Clear Lake, West University, The Heights, and beyond.

  • Full landscape design
  • Irrigation & seasonal color
Leon Hunt, founder of Artistic Tree Care

Arborist Consulting

Straight answers on tree health, storm risk, and long-term property planning — construction consulting, maintenance planning, and guidance on what needs attention now versus what can wait.

  • Construction consulting
  • Maintenance planning
Land clearing and storm disaster relief work

Land Clearing & Disaster Relief

Land clearing, grading, and tree removal for major site changes — and disaster relief support when a property needs to be cleared and made safe after severe weather.

  • Land clearing & grading
  • Disaster relief
Not sure which service fits?

Tell us what's going on. We'll take it from there.

Urgent hazard, routine care, or a bigger land project — a free assessment is the fastest way to get a straight answer.

Call (832) 347-4323 →
Phone
(832) 347-4323
Email
llhunt2002@yahoo.com
Address
731 Rennie St., Katy, TX 77450
Artistic Tree Care · Houston & Katy, TX · Concept landing page
UPDATE
UPDATE
Image Gallery Grid
T
Please Check Your Email
We Will Be Following Up Shortly
*
*
*

warning