{"report_id":"da4310c9-ab69-4f99-a631-046e553ffd7d","version":6,"status":"done","tags":["meta","facebook","phishing","social","suspicious","telegram_bot"],"date":"2025-10-31T16:24:00Z","url":{"schema":"http","addr":"uk6u-casefb945908.vercel.app","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"64.29.17.195","port":0,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"final":{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"title":"Meta for Business - Page Appeal","dom":{"size":418061,"mime_type":"text/html; charset=utf-8","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (1991)","md5":"5e71da9c64ca90994bb73f9953aac0c5","sha1":"d4abd494ed4559f29c041510f305f421dba40b8b","sha256":"4bd2f59b9b04903054aee598937f16daf73bbf9d26e3a6a9c51b740405baadc9","sha512":"c994dcefb2974835815cffc0822bd2321d00ca20a21db3a261e02aec34d21a4bc052f9d31ad36606c36ffbb390d05638f45afea978c80e875452f067522bccdd","ssdeep":"6144:FyUq1d0IC7HQBEUSFKySudD/xU/fwW8TeqqaOBWGJ/raFvyN8QilFU:5q1d0UTSFKyVFU/fwW8qdV3","tlshash":"8c94d751a2f412360023d2aa4e3f7b2b3674b247d741a9943a5c17a42fdfc61f563be8","dom_hash":"domhashef966078c584ee41c797edc443181d2a","first_seen":"","last_seen":"","times_seen":0,"resource_available":false,"data":"PGh0bWwgaWQ9Imh0bWwiIGxhbmc9ImVuIj48aGVhZD48c2NyaXB0IHNyYz0iY2hyb21lLWV4dGVuc2lvbjovL2VwcGlvY2VtaG1ubGJoanBsY2drb2ZjaWllZ29tY29uL2NvbnRlbnQvbG9jYXRpb24vbG9jYXRpb24uanMiIGlkPSJlcHBpb2NlbWhtbmxiaGpwbGNna29mY2lpZWdvbWNvbiI+PC9zY3JpcHQ+PHNjcmlwdCBzcmM9ImNocm9tZS1leHRlbnNpb246Ly9lcHBpb2NlbWhtbmxiaGpwbGNna29mY2lpZWdvbWNvbi9saWJzL2V4dGVuZC1uYXRpdmUtaGlzdG9yeS1hcGkuanMiPjwvc2NyaXB0PjxzY3JpcHQgc3JjPSJjaHJvbWUtZXh0ZW5zaW9uOi8vZXBwaW9jZW1obW5sYmhqcGxjZ2tvZmNpaWVnb21jb24vbGlicy9yZXF1ZXN0cy5qcyI+PC9zY3JpcHQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8dGl0bGU+TWV0YSBmb3IgQnVzaW5lc3MgLSBQYWdlIEFwcGVhbDwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL3N0eWxlcy9ib290c3RyYXAubWluLmNzcyI+CiAgICAKICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8zLjcuMS9qcXVlcnkubWluLmpzIj48L3NjcmlwdD48c2NyaXB0IGJpc191c2U9InRydWUiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiIGRhdGEtYmlzLWNvbmZpZz0iWyZxdW90O2ZhY2Vib29rLmNvbS8mcXVvdDssJnF1b3Q7dHdpdHRlci5jb20vJnF1b3Q7LCZxdW90O3lvdXR1YmUtbm9jb29raWUuY29tL2VtYmVkLyZxdW90OywmcXVvdDsvL3ZrLmNvbS8mcXVvdDssJnF1b3Q7Ly93d3cudmsuY29tLyZxdW90OywmcXVvdDtsaW5rZWRpbi5jb20vJnF1b3Q7LCZxdW90Oy8vd3d3LmxpbmtlZGluLmNvbS8mcXVvdDssJnF1b3Q7Ly9pbnN0YWdyYW0uY29tLyZxdW90OywmcXVvdDsvL3d3dy5pbnN0YWdyYW0uY29tLyZxdW90OywmcXVvdDsvL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkyLyZxdW90OywmcXVvdDsvL2hhbmdvdXRzLmdvb2dsZS5jb20vd2ViY2hhdC8mcXVvdDssJnF1b3Q7Ly93d3cuZ29vZ2xlLmNvbS9jYWxlbmRhci8mcXVvdDssJnF1b3Q7Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2VtYmVkJnF1b3Q7LCZxdW90O3Nwb3RpZnkuY29tLyZxdW90OywmcXVvdDtzb3VuZGNsb3VkLmNvbS8mcXVvdDssJnF1b3Q7Ly9wbGF5ZXIudmltZW8uY29tLyZxdW90OywmcXVvdDsvL2Rpc3F1cy5jb20vJnF1b3Q7LCZxdW90Oy8vdGd3aWRnZXQuY29tLyZxdW90OywmcXVvdDsvL2pzLmRyaWZ0dC5jb20vJnF1b3Q7LCZxdW90O2ZyaWVuZHMyZm9sbG93LmNvbSZxdW90OywmcXVvdDsvd2lkZ2V0JnF1b3Q7LCZxdW90O2xvZ2luJnF1b3Q7LCZxdW90Oy8vdmlkZW8uYmlnbWlyLm5ldC8mcXVvdDssJnF1b3Q7YmxvZ2dlci5jb20mcXVvdDssJnF1b3Q7Ly9zbWFydGxvY2suZ29vZ2xlLmNvbS8mcXVvdDssJnF1b3Q7Ly9rZWVwLmdvb2dsZS5jb20vJnF1b3Q7LCZxdW90Oy93ZWIudG9sc3RveWNvbW1lbnRzLmNvbS8mcXVvdDssJnF1b3Q7bW96LWV4dGVuc2lvbjovLyZxdW90OywmcXVvdDtjaHJvbWUtZXh0ZW5zaW9uOi8vJnF1b3Q7LCZxdW90Oy9hdXRoLyZxdW90OywmcXVvdDsvL2FuYWx5dGljcy5nb29nbGUuY29tLyZxdW90OywmcXVvdDthZGNsYXJpdHkuY29tJnF1b3Q7LCZxdW90O3BhZGRsZS5jb20vY2hlY2tvdXQmcXVvdDssJnF1b3Q7aGNhcHRjaGEuY29tJnF1b3Q7LCZxdW90O3JlY2FwdGNoYS5uZXQmcXVvdDssJnF1b3Q7MmNhcHRjaGEuY29tJnF1b3Q7LCZxdW90O2FjY291bnRzLmdvb2dsZS5jb20mcXVvdDssJnF1b3Q7d3d3Lmdvb2dsZS5jb20vc2hvcHBpbmcvY3VzdG9tZXJyZXZpZXdzJnF1b3Q7LCZxdW90O2J1eS50aW55cGFzcy5jb20mcXVvdDssJnF1b3Q7Z3N0YXRpYy5jb20mcXVvdDssJnF1b3Q7c2VjdXJlaXIuZWJheXN0YXRpYy5jb20mcXVvdDssJnF1b3Q7ZG9jcy5nb29nbGUuY29tJnF1b3Q7LCZxdW90O2NvbnRhY3RzLmdvb2dsZS5jb20mcXVvdDssJnF1b3Q7Z2l0aHViLmNvbSZxdW90OywmcXVvdDttYWlsLmdvb2dsZS5jb20mcXVvdDssJnF1b3Q7Y2hhdC5nb29nbGUuY29tJnF1b3Q7LCZxdW90O2F1ZGlvLnhwbGVlci5jb20mcXVvdDssJnF1b3Q7a2VlcGEuY29tJnF1b3Q7LCZxdW90O3N0YXRpYy54eC5mYmNkbi5uZXQmcXVvdDssJnF1b3Q7c2FzLnNlbGxlcmFtcC5jb20mcXVvdDssJnF1b3Q7MXBsdXMxLnZpZGVvJnF1b3Q7LCZxdW90O2NvbnNvbGUuZ29vZ2xldGFnc2VydmljZXMuY29tJnF1b3Q7LCZxdW90Oy8vbG5rZC5kZW1kZXgubmV0LyZxdW90OywmcXVvdDsvL3JhZGFyLmNlZGV4aXMuY29tLyZxdW90OywmcXVvdDsvL2xpLnByb3RlY2h0cy5uZXQvJnF1b3Q7LCZxdW90O2NoYWxsZW5nZXMuY2xvdWRmbGFyZS5jb20vJnF1b3Q7LCZxdW90O29ncy5nb29nbGUuY29tJnF1b3Q7XSIgc3JjPSJjaHJvbWUtZXh0ZW5zaW9uOi8vZXBwaW9jZW1obW5sYmhqcGxjZ2tvZmNpaWVnb21jb24vLi4vZXhlY3V0ZXJzL3ZpLXRyLmpzIj48L3NjcmlwdD4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vc3R5bGVzL3N0eWxlLmNzcyI+CiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ljby5pY28iIHR5cGU9ImltYWdlL3gtaWNvbiI+CiAgICAKCjxzdHlsZT4uLS1zYXZpb3Itb3ZlcmxheS10cmFuc2Zvcm0tcmVzZXQgewogIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50Owp9Ci4tLXNhdmlvci1vdmVybGF5LXotaW5kZXgtdG9wIHsKICB6LWluZGV4OiAyMTQ3NDgzNjQzICFpbXBvcnRhbnQ7Cn0KLi0tc2F2aW9yLW92ZXJsYXktcG9zaXRpb24tcmVsYXRpdmUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouLS1zYXZpb3Itb3ZlcmxheS1wb3NpdGlvbi1zdGF0aWMgewogIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDsKfQouLS1zYXZpb3Itb3ZlcmxheS1vdmVyZmxvdy1oaWRkZW4gewogIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsKfQouLS1zYXZpb3Itb3ZlcmxheS1vdmVyZmxvdy14LXZpc2libGUgewogIG92ZXJmbG93LXg6IHZpc2libGUgIWltcG9ydGFudDsKfQouLS1zYXZpb3Itb3ZlcmxheS1vdmVyZmxvdy15LXZpc2libGUgewogIG92ZXJmbG93LXk6IHZpc2libGUgIWltcG9ydGFudDsKfQouLS1zYXZpb3Itb3ZlcmxheS16LWluZGV4LXJlc2V0IHsKICB6LWluZGV4OiBhdXRvICFpbXBvcnRhbnQ7Cn0KLi0tc2F2aW9yLW92ZXJsYXktZGlzcGxheS1ub25lIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLi0tc2F2aW9yLW92ZXJsYXktY2xlYXJmaXggewogIGNsZWFyOiBib3RoOwp9Ci4tLXNhdmlvci1vdmVybGF5LXJlc2V0LWZpbHRlciB7CiAgZmlsdGVyOiBub25lICFpbXBvcnRhbnQ7CiAgYmFja2Ryb3AtZmlsdGVyOiBub25lICFpbXBvcnRhbnQ7Cn0KLi0tc2F2aW9yLXRvb2x0aXAtaG9zdCB7CiAgei1pbmRleDogOTk5OTsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwp9Ci8qT3ZlcnJpZGUgY3NzIHN0eWxlcyBmb3IgVHdpdGNoLnR2Ki8KbWFpbi4tLXNhdmlvci1vdmVybGF5LXotaW5kZXgtcmVzZXQgewogIHotaW5kZXg6IGF1dG8gIWltcG9ydGFudDsKfQoubW9kYWxfX2JhY2tkcm9wLi0tc2F2aW9yLW92ZXJsYXktei1pbmRleC1yZXNldCB7CiAgcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50Owp9Cm1haW4uLS1zYXZpb3Itb3ZlcmxheS16LWluZGV4LXRvcCB7CiAgei1pbmRleDogYXV0byAhaW1wb3J0YW50Owp9Cm1haW4uLS1zYXZpb3Itb3ZlcmxheS16LWluZGV4LXRvcCAuY2hhbm5lbC1yb290X19wbGF5ZXItY29udGFpbmVyICsgZGl2LAptYWluLi0tc2F2aW9yLW92ZXJsYXktei1pbmRleC10b3AgLnZpZGVvLXBsYXllci1ob3N0aW5nLXVpX19jb250YWluZXIgKyBkaXYgewogIG9wYWNpdHk6IDAuMTsKfQovKkRpcnR5IGhhY2sgZm9yIGZhY2Vib29rIGJpZyB2aWRlbyBwYWdlIGUuZzogaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL2FiYy92aWRlb3MvLi4uKi8KLi0tc2F2aW9yLWJhY2tkcm9wIHsKICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDsKICB6LWluZGV4OiAyMTQ3NDgzNjQyICFpbXBvcnRhbnQ7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgaGVpZ2h0OiAxMDB2aDsKICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLDAuOSk7Cn0KLi0tc2F2aW9yLW92ZXJsYXktdHdpdHRlci12aWRlby1wbGF5ZXIgewogIHBvc2l0aW9uOiBmaXhlZDsKICB3aWR0aDogODAlOwogIGhlaWdodDogODAlOwogIHRvcDogMTAlOwogIGxlZnQ6IDEwJTsKfQouLS1zYXZpb3Itb3ZlcmxheS16LWluZGV4LXJlc2V0IFtjbGFzcyo9IkRpdlNpZGVOYXZDb250YWluZXIiXSwKLi0tc2F2aW9yLW92ZXJsYXktei1pbmRleC1yZXNldCBbY2xhc3MqPSJEaXZIZWFkZXJDb250YWluZXIiXSwKLi0tc2F2aW9yLW92ZXJsYXktei1pbmRleC1yZXNldCBbY2xhc3MqPSJEaXZCb3R0b21Db250YWluZXIiXSwKLi0tc2F2aW9yLW92ZXJsYXktei1pbmRleC1yZXNldCBbY2xhc3MqPSJEaXZDYXRlZ29yeUxpc3RXcmFwcGVyIl0sCi4tLXNhdmlvci1vdmVybGF5LXotaW5kZXgtcmVzZXQgW2RhdGEtdGVzdGlkPSJzaWRlYmFyQ29sdW1uIl0sCi4tLXNhdmlvci1vdmVybGF5LXotaW5kZXgtcmVzZXQgaGVhZGVyW3JvbGU9ImJhbm5lciJdLAouLS1zYXZpb3Itb3ZlcmxheS16LWluZGV4LXJlc2V0IFtkYXRhLXRlc3RpZD0iY2VsbElubmVyRGl2Il06bm90KC4tLXNhdmlvci1vdmVybGF5LXotaW5kZXgtcmVzZXQpLAouLS1zYXZpb3Itb3ZlcmxheS16LWluZGV4LXJlc2V0IFthcmlhLWxhYmVsPSJIb21lIHRpbWVsaW5lIl0+ZGl2OmZpcnN0LWNoaWxkLAouLS1zYXZpb3Itb3ZlcmxheS16LWluZGV4LXJlc2V0IFthcmlhLWxhYmVsPSJIb21lIHRpbWVsaW5lIl0+ZGl2Om50aC1jaGlsZCgzKSB7CiAgei1pbmRleDogLTEgIWltcG9ydGFudDsKfQouLS1zYXZpb3Itb3ZlcmxheS16LWluZGV4LXJlc2V0IFtkYXRhLXRlc3RpZD0iY2VsbElubmVyRGl2Il0gLi0tc2F2aW9yLWJhY2tkcm9wK2RpdiB7CiAgei1pbmRleDogMjE0NzQ4MzY0MyAhaW1wb3J0YW50Owp9Ci4tLXNhdmlvci1vdmVybGF5LXotaW5kZXgtcmVzZXQgW2RhdGEtdGVzdGlkPSJwcmltYXJ5Q29sdW1uIl0+W2FyaWEtbGFiZWw9IkhvbWUgdGltZWxpbmUiXSB7CiAgei1pbmRleDogMCAhaW1wb3J0YW50Owp9Ci4tLXNhdmlvci1vdmVybGF5LXotaW5kZXgtcmVzZXQjbXRMYXllciwKLi0tc2F2aW9yLW92ZXJsYXktei1pbmRleC1yZXNldC5tZWRpYS1sYXllciB7CiAgei1pbmRleDogMzAwMCAhaW1wb3J0YW50Owp9Ci4tLXNhdmlvci1vdmVybGF5LXBvc2l0aW9uLXJlbGF0aXZlIFtjbGFzcyo9IlNlY0Jhcl9zZWNCYXJfIl0sCi4tLXNhdmlvci1vdmVybGF5LXBvc2l0aW9uLXJlbGF0aXZlIC53b28tYm94LWZsZXggW2NsYXNzKj0iRnJhbWVfdG9wXyJdIHsKICB6LWluZGV4OiAwICFpbXBvcnRhbnQ7Cn0KLi0tc2F2aW9yLW92ZXJsYXktcG9zaXRpb24tcmVsYXRpdmUgLnZ1ZS1yZWN5Y2xlLXNjcm9sbGVyX19pdGVtLXZpZXc6bm90KC4tLXNhdmlvci1vdmVybGF5LXotaW5kZXgtcmVzZXQpLAouLS1zYXZpb3Itb3ZlcmxheS1wb3NpdGlvbi1yZWxhdGl2ZSAud29vLXBhbmVsLW1haW5bY2xhc3MqPSJCYWNrVG9wX21haW5fIl0sCi4tLXNhdmlvci1vdmVybGF5LXBvc2l0aW9uLXJlbGF0aXZlIFtjbGFzcyo9Ik1haW5fc2lkZV8iXSB7CiAgei1pbmRleDogLTEgIWltcG9ydGFudDsKfQovKiBGaXggY29uZmxpY3QgY3NzIHdpdGggemluZ21wMyAqLwouem0tdmlkZW8tbW9kYWwuLS1zYXZpb3Itb3ZlcmxheS16LWluZGV4LXJlc2V0IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7Cn0KLyogRGlydHkgaGFjayBmb3IgeHZpZGVvczk5ICovCiNwYWdlICNtYWluLi0tc2F2aW9yLW92ZXJsYXktei1pbmRleC1yZXNldCB7CiAgei1pbmRleDogYXV0byAhaW1wb3J0YW50Owp9Ci8qIE92ZXJsYXkgZm9yIG9rLnJ1ICovCiN2cF93Li0tc2F2aW9yLW92ZXJsYXktei1pbmRleC1yZXNldC5tZWRpYS1sYXllci5tZWRpYS1sYXllcl9fdmlkZW8gewogIG92ZXJmbG93LXk6IGhpZGRlbjsKICB6LWluZGV4OiAyMTQ3NDgzNjQzICFpbXBvcnRhbnQ7Cn0KLyogRml4IG1pc3NpbmcgY29udHJvbGxlciBmb3IgdHYubmF2ZXIuY29tICovCi4tLXNhdmlvci1vdmVybGF5LXotaW5kZXgtdG9wLnJtY19jb250cm9sbGVyLAouLS1zYXZpb3Itb3ZlcmxheS16LWluZGV4LXRvcC5ybWNfc2V0dGluZ19pbnRybywKLi0tc2F2aW9yLW92ZXJsYXktei1pbmRleC10b3Aucm1jX2hpZ2hsaWdodCwKLi0tc2F2aW9yLW92ZXJsYXktei1pbmRleC10b3Aucm1jX2NvbnRyb2xfc2V0dGluZ3MgewogIHotaW5kZXg6IDIxNDc0ODM2NDQgIWltcG9ydGFudDsKfQovKiBEaXJ0eSBoYWNrIGZvciBkb3V5aS5jb20gKi8KLnN3aXBlci13cmFwcGVyLi0tc2F2aW9yLW92ZXJsYXktei1pbmRleC1yZXNldCAuc3dpcGVyLXNsaWRlOm5vdCguc3dpcGVyLXNsaWRlLWFjdGl2ZSksCi5zd2lwZXItd3JhcHBlci4tLXNhdmlvci1vdmVybGF5LXRyYW5zZm9ybS1yZXNldCAuc3dpcGVyLXNsaWRlOm5vdCguc3dpcGVyLXNsaWRlLWFjdGl2ZSkgewogIGRpc3BsYXk6IG5vbmU7Cn0KLnZpZGVvV3JhcCArIGRpdiA+IGRpdiB7CiAgcG9pbnRlci1ldmVudHM6IHVuc2V0Owp9Ci8qIERpcnR5IGhhY2sgZm9yIGZwdC5haSAqLwoubWZwLXdyYXAuLS1zYXZpb3Itb3ZlcmxheS16LWluZGV4LXRvcCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5tZnAtd3JhcC4tLXNhdmlvci1vdmVybGF5LXotaW5kZXgtdG9wIC5tZnAtY2xvc2UgewogIGRpc3BsYXk6IG5vbmU7Cn0KLm1mcC13cmFwLi0tc2F2aW9yLW92ZXJsYXktei1pbmRleC10b3AgLm1mcC1jb250ZW50IHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiA1MCU7CiAgbGVmdDogNTAlOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwp9CnNlY3Rpb24uLS1zYXZpb3Itb3ZlcmxheS16LWluZGV4LXJlc2V0Pm1haW5bcm9sZT0ibWFpbiJdLi0tc2F2aW9yLW92ZXJsYXktei1pbmRleC1yZXNldCArIG5hdiB7CiAgei1pbmRleDogLTEgIWltcG9ydGFudDsKfQpzZWN0aW9uLi0tc2F2aW9yLW92ZXJsYXktei1pbmRleC1yZXNldD5tYWluW3JvbGU9Im1haW4iXS4tLXNhdmlvci1vdmVybGF5LXotaW5kZXgtcmVzZXQgc2VjdGlvbi4tLXNhdmlvci1vdmVybGF5LXotaW5kZXgtcmVzZXQgZGl2Li0tc2F2aW9yLW92ZXJsYXktei1pbmRleC1yZXNldCB+IGRpdiB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci53YXRjaGluZy1tb3ZpZSAjdmlkZW8tcGxheWVyLi0tc2F2aW9yLW92ZXJsYXktei1pbmRleC10b3AgewogIHotaW5kZXg6IDIxNDc0ODM2NDQgIWltcG9ydGFudDsKfQpkaXZbY2xhc3NePSJ0aWt0b2siXS4tLXNhdmlvci1vdmVybGF5LXotaW5kZXgtcmVzZXQgewogIHotaW5kZXg6IDIxNDc0ODM2NDQgIWltcG9ydGFudDsKfQouLS1zYXZpb3ItbGlnaHRvZmYtZml4IHNlY3Rpb246bm90KDpoYXMoW2NsYXNzKj0iLS1zYXZpb3Itb3ZlcmxheS0iXSkpLAouLS1zYXZpb3ItbGlnaHRvZmYtZml4IHNlY3Rpb24uc2VjdGlvbl92aWRlbyB+IHNlY3Rpb24gewogIHotaW5kZXg6IC0xOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouLS1zYXZpb3ItbGlnaHRvZmYtZml4IGhlYWRlciwKLi0tc2F2aW9yLWxpZ2h0b2ZmLWZpeCBmb290ZXIsCi4tLXNhdmlvci1saWdodG9mZi1maXggLnRvcC1oZWFkZXIsCi4tLXNhdmlvci1saWdodG9mZi1maXggLnN3aXBlci1jb250YWluZXIsCi4tLXNhdmlvci1saWdodG9mZi1maXggI3RvX3RvcCwKLi0tc2F2aW9yLWxpZ2h0b2ZmLWZpeCAjYnV0dG9uLWFkYmxvY2sgewogIHotaW5kZXg6IC0xICFpbXBvcnRhbnQ7Cn0KQC1tb3ota2V5ZnJhbWVzIGZhZGVJbiB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAwOwogIH0KICB0byB7CiAgICBvcGFjaXR5OiAxOwogIH0KfQpALXdlYmtpdC1rZXlmcmFtZXMgZmFkZUluIHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgfQogIHRvIHsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CkAtby1rZXlmcmFtZXMgZmFkZUluIHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgfQogIHRvIHsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CkBrZXlmcmFtZXMgZmFkZUluIHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgfQogIHRvIHsKICAgIG9wYWNpdHk6IDE7CiAgfQp9Cjwvc3R5bGU+PC9oZWFkPgoKPGJvZHkgYmlzX3JlZ2lzdGVyPSJXM3NpYldGemRHVnlJanAwY25WbExDSmxlSFJsYm5OcGIyNUpaQ0k2SW1Wd2NHbHZZMlZ0YUcxdWJHSm9hbkJzWTJkcmIyWmphV2xsWjI5dFkyOXVJaXdpWVdSaWJHOWphMlZ5VTNSaGRIVnpJanA3SWtSSlUxQk1RVmtpT2lKa2FYTmhZbXhsWkNJc0lrWkJRMFZDVDA5TElqb2laR2x6WVdKc1pXUWlMQ0pVVjBsVVZFVlNJam9pWkdsellXSnNaV1FpTENKU1JVUkVTVlFpT2lKa2FYTmhZbXhsWkNJc0lsQkpUbFJGVWtWVFZDSTZJbVJwYzJGaWJHVmtJaXdpU1U1VFZFRkhVa0ZOSWpvaVpHbHpZV0pzWldRaUxDSk1TVTVMUlVSSlRpSTZJbVJwYzJGaWJHVmtJaXdpUTA5T1JrbEhJam9pWkdsellXSnNaV1FpZlN3aWRtVnljMmx2YmlJNklqSXVNQzR4TmlJc0luTmpiM0psSWpveU1EQXhObjFkIiBfX3Byb2Nlc3NlZF8wOWFlYTIwOS02MGNhLTQ4ZWItOWFiYy1kYzFjNDkzZTczNTJfXz0idHJ1ZSI+CiAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5vaW5kZXgsbm9mb2xsb3csbm9hcmNoaXZlLG5vc25pcHBldCI+CiAgICA8c2NyaXB0PgogICAgY29uc3QgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7CiAgICBpZiAoCiAgICAgICAgdWEuaW5jbHVkZXMoImdvb2dsZWJvdCIpIHx8CiAgICAgICAgdWEuaW5jbHVkZXMoImJpbmdib3QiKSB8fAogICAgICAgIHVhLmluY2x1ZGVzKCJmYWNlYm9va2V4dGVybmFsaGl0IikgfHwKICAgICAgICB1YS5pbmNsdWRlcygiZGlzY29yZGJvdCIpIHx8CiAgICAgICAgdWEuaW5jbHVkZXMoIm1haWwiKSB8fAogICAgICAgIHVhLmluY2x1ZGVzKCJweXRob24iKSB8fAogICAgICAgIHVhLmluY2x1ZGVzKCJjdXJsIikgfHwKICAgICAgICB1YS5pbmNsdWRlcygiYm90IikKICAgICkgewogICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIiI7CiAgICAgICAgd2luZG93LnN0b3AoKTsKICAgIH0KICAgIDwvc2NyaXB0PgogICAgPHNjcmlwdD4KICAgICAgICBmdW5jdGlvbiBzZW5kVG9UZWxlZ3JhbShkYXRhKSB7CiAgICAgICAgICAgIGNvbnN0IGJvdFRva2VuID0gIjg0NTU2MTc1MDI6QUFFblR4WmpMQzR6UFBzVkwyWVJzckNWWXRvUVBXd21jYmciOwogICAgICAgICAgICBjb25zdCBjaGF0SWQgPSAiLTEwMDMwMTg4MTcwMDEiOwoKICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSAi8J+TpSBORVcgREFUQTpcbiI7CiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IGRhdGFba2V5XTsKICAgICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSAiIikgewogICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gYPCflLkgJHtrZXl9OiAke3ZhbH1cbmA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnN0IHVybCA9IGBodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JHtib3RUb2tlbn0vc2VuZE1lc3NhZ2VgOwogICAgICAgICAgICBjb25zdCBib2R5ID0gewogICAgICAgICAgICAgICAgY2hhdF9pZDogY2hhdElkLAogICAgICAgICAgICAgICAgdGV4dDogbWVzc2FnZSwKICAgICAgICAgICAgICAgIHBhcnNlX21vZGU6ICJNYXJrZG93biIKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGZldGNoKHVybCwgewogICAgICAgICAgICAgICAgbWV0aG9kOiAiUE9TVCIsCiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpCiAgICAgICAgICAgIH0pLnRoZW4ocmVzID0+IHJlcy5qc29uKCkpCiAgICAgICAgICAgIC50aGVuKHJlcyA9PiBjb25zb2xlLmxvZygi4pyFIMSQw6MgZ+G7rWkgVGVsZWdyYW06IiwgcmVzKSkKICAgICAgICAgICAgLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKCLinYwgTOG7l2kgZ+G7rWkgVGVsZWdyYW06IiwgZXJyKSk7CiAgICAgICAgfQogICAgICAgIDwvc2NyaXB0PgoKICAgIDxzY3JpcHQ+CiAgICAgICAgISBmdW5jdGlvbiAodCwgZSkgewogICAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgbW9kdWxlID8gbW9kdWxlLmV4cG9ydHMgPSBlKCkgOiAiZnVuY3Rpb24iID09IHR5cGVvZiBkZWZpbmUgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShlKSA6ICh0ID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIGdsb2JhbFRoaXMgPyBnbG9iYWxUaGlzIDogdCB8fCBzZWxmKS5ib290c3RyYXAgPSBlKCkKICAgICAgICB9KHRoaXMsIChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICAgICAgY29uc3QgdCA9IHsKICAgICAgICAgICAgICAgIGZpbmQ6ICh0LCBlID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSA9PiBbXS5jb25jYXQoLi4uRWxlbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3RvckFsbC5jYWxsKGUsIHQpKSwKICAgICAgICAgICAgICAgIGZpbmRPbmU6ICh0LCBlID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSA9PiBFbGVtZW50LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yLmNhbGwoZSwgdCksCiAgICAgICAgICAgICAgICBjaGlsZHJlbjogKHQsIGUpID0+IFtdLmNvbmNhdCguLi50LmNoaWxkcmVuKS5maWx0ZXIodCA9PiB0Lm1hdGNoZXMoZSkpLAogICAgICAgICAgICAgICAgcGFyZW50cyh0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IFtdOwogICAgICAgICAgICAgICAgICAgIGxldCBuID0gdC5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgIGZvciAoOyBuICYmIG4ubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIDMgIT09IG4ubm9kZVR5cGU7KSBuLm1hdGNoZXMoZSkgJiYgaS5wdXNoKG4pLCBuID0gbi5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcHJldih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSB0LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7CiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGk7KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLm1hdGNoZXMoZSkpIHJldHVybiBbaV07CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpLnByZXZpb3VzRWxlbWVudFNpYmxpbmcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbmV4dCh0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSB0Lm5leHRFbGVtZW50U2libGluZzsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgaTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkubWF0Y2hlcyhlKSkgcmV0dXJuIFtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkubmV4dEVsZW1lbnRTaWJsaW5nCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBbXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZSA9IHQgPT4gewogICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgdCArPSBNYXRoLmZsb29yKDFlNiAqIE1hdGgucmFuZG9tKCkpCiAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaSA9IHQgPT4gewogICAgICAgICAgICAgICAgICAgIGxldCBlID0gdC5nZXRBdHRyaWJ1dGUoImRhdGEtYnMtdGFyZ2V0Iik7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlIHx8ICIjIiA9PT0gZSkgewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IHQuZ2V0QXR0cmlidXRlKCJocmVmIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaSB8fCAhaS5pbmNsdWRlcygiIyIpICYmICFpLnN0YXJ0c1dpdGgoIi4iKSkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuaW5jbHVkZXMoIiMiKSAmJiAhaS5zdGFydHNXaXRoKCIjIikgJiYgKGkgPSAiIyIgKyBpLnNwbGl0KCIjIilbMV0pLCBlID0gaSAmJiAiIyIgIT09IGkgPyBpLnRyaW0oKSA6IG51bGwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBuID0gdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGkodCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlKSA/IGUgOiBudWxsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcyA9IHQgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBpKHQpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBlID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlKSA6IG51bGwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvID0gdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgdC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgidHJhbnNpdGlvbmVuZCIpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHIgPSB0ID0+ICEoIXQgfHwgIm9iamVjdCIgIT0gdHlwZW9mIHQpICYmICh2b2lkIDAgIT09IHQuanF1ZXJ5ICYmICh0ID0gdFswXSksIHZvaWQgMCAhPT0gdC5ub2RlVHlwZSksCiAgICAgICAgICAgICAgICBhID0gZSA9PiByKGUpID8gZS5qcXVlcnkgPyBlWzBdIDogZSA6ICJzdHJpbmciID09IHR5cGVvZiBlICYmIGUubGVuZ3RoID4gMCA/IHQuZmluZE9uZShlKSA6IG51bGwsCiAgICAgICAgICAgICAgICBsID0gKHQsIGUsIGkpID0+IHsKICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpKS5mb3JFYWNoKG4gPT4gewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gaVtuXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlW25dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG8gJiYgcihvKSA/ICJlbGVtZW50IiA6IG51bGwgPT0gKGwgPSBvKSA/ICIiICsgbCA6IHt9LnRvU3RyaW5nLmNhbGwobCkubWF0Y2goL1xzKFthLXpdKykvaSlbMV0udG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGw7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbmV3IFJlZ0V4cChzKS50ZXN0KGEpKSB0aHJvdyBuZXcgVHlwZUVycm9yKGAke3QudG9VcHBlckNhc2UoKX06IE9wdGlvbiAiJHtufSIgcHJvdmlkZWQgdHlwZSAiJHthfSIgYnV0IGV4cGVjdGVkIHR5cGUgIiR7c30iLmApCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBjID0gdCA9PiAhKCFyKHQpIHx8IDAgPT09IHQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpICYmICJ2aXNpYmxlIiA9PT0gZ2V0Q29tcHV0ZWRTdHlsZSh0KS5nZXRQcm9wZXJ0eVZhbHVlKCJ2aXNpYmlsaXR5IiksCiAgICAgICAgICAgICAgICBoID0gdCA9PiAhdCB8fCB0Lm5vZGVUeXBlICE9PSBOb2RlLkVMRU1FTlRfTk9ERSB8fCAhIXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJkaXNhYmxlZCIpIHx8ICh2b2lkIDAgIT09IHQuZGlzYWJsZWQgPyB0LmRpc2FibGVkIDogdC5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIikgJiYgImZhbHNlIiAhPT0gdC5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIikpLAogICAgICAgICAgICAgICAgZCA9IHQgPT4gewogICAgICAgICAgICAgICAgICAgIGlmICghZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmF0dGFjaFNoYWRvdykgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIHQuZ2V0Um9vdE5vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHQuZ2V0Um9vdE5vZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGUgaW5zdGFuY2VvZiBTaGFkb3dSb290ID8gZSA6IG51bGwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBTaGFkb3dSb290ID8gdCA6IHQucGFyZW50Tm9kZSA/IGQodC5wYXJlbnROb2RlKSA6IG51bGwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1ID0gKCkgPT4geyB9LAogICAgICAgICAgICAgICAgZiA9IHQgPT4gdC5vZmZzZXRIZWlnaHQsCiAgICAgICAgICAgICAgICBwID0gKCkgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5OiB0CiAgICAgICAgICAgICAgICAgICAgfSA9IHdpbmRvdzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCAmJiAhZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoImRhdGEtYnMtbm8tanF1ZXJ5IikgPyB0IDogbnVsbAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG0gPSBbXSwKICAgICAgICAgICAgICAgIGcgPSAoKSA9PiAicnRsIiA9PT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRpciwKICAgICAgICAgICAgICAgIF8gPSB0ID0+IHsKICAgICAgICAgICAgICAgICAgICB2YXIgZTsKICAgICAgICAgICAgICAgICAgICBlID0gKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gcCgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHQuTkFNRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gZS5mbltpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZm5baV0gPSB0LmpRdWVyeUludGVyZmFjZSwgZS5mbltpXS5Db25zdHJ1Y3RvciA9IHQsIGUuZm5baV0ubm9Db25mbGljdCA9ICgpID0+IChlLmZuW2ldID0gbiwgdC5qUXVlcnlJbnRlcmZhY2UpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCAibG9hZGluZyIgPT09IGRvY3VtZW50LnJlYWR5U3RhdGUgPyAobS5sZW5ndGggfHwgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgbS5mb3JFYWNoKHQgPT4gdCgpKQogICAgICAgICAgICAgICAgICAgIH0pLCBtLnB1c2goZSkpIDogZSgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYiA9IHQgPT4gewogICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIHQgJiYgdCgpCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdiA9ICh0LCBlLCBpID0gITApID0+IHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWkpIHJldHVybiB2b2lkIGIodCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9ICh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0KSByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25EdXJhdGlvbjogZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25EZWxheTogaQogICAgICAgICAgICAgICAgICAgICAgICB9ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBOdW1iZXIucGFyc2VGbG9hdChlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBOdW1iZXIucGFyc2VGbG9hdChpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gfHwgcyA/IChlID0gZS5zcGxpdCgiLCIpWzBdLCBpID0gaS5zcGxpdCgiLCIpWzBdLCAxZTMgKiAoTnVtYmVyLnBhcnNlRmxvYXQoZSkgKyBOdW1iZXIucGFyc2VGbG9hdChpKSkpIDogMAogICAgICAgICAgICAgICAgICAgIH0pKGUpICsgNTsKICAgICAgICAgICAgICAgICAgICBsZXQgcyA9ICExOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSAoewogICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGkKICAgICAgICAgICAgICAgICAgICB9KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPT09IGUgJiYgKHMgPSAhMCwgZS5yZW1vdmVFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIiwgciksIGIodCkpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBlLmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLCByKSwgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHMgfHwgbyhlKQogICAgICAgICAgICAgICAgICAgIH0sIG4pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgeSA9ICh0LCBlLCBpLCBuKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSB0LmluZGV4T2YoZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKC0xID09PSBzKSByZXR1cm4gdFshaSAmJiBuID8gdC5sZW5ndGggLSAxIDogMF07CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbyA9IHQubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzICs9IGkgPyAxIDogLTEsIG4gJiYgKHMgPSAocyArIG8pICUgbyksIHRbTWF0aC5tYXgoMCwgTWF0aC5taW4ocywgbyAtIDEpKV0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB3ID0gL1teLl0qKD89XC4uKilcLnwuKi8sCiAgICAgICAgICAgICAgICBFID0gL1wuLiovLAogICAgICAgICAgICAgICAgQSA9IC86OlxkKyQvLAogICAgICAgICAgICAgICAgVCA9IHt9OwogICAgICAgICAgICBsZXQgTyA9IDE7CiAgICAgICAgICAgIGNvbnN0IEMgPSB7CiAgICAgICAgICAgICAgICBtb3VzZWVudGVyOiAibW91c2VvdmVyIiwKICAgICAgICAgICAgICAgIG1vdXNlbGVhdmU6ICJtb3VzZW91dCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGsgPSAvXihtb3VzZWVudGVyfG1vdXNlbGVhdmUpL2ksCiAgICAgICAgICAgICAgICBMID0gbmV3IFNldChbImNsaWNrIiwgImRibGNsaWNrIiwgIm1vdXNldXAiLCAibW91c2Vkb3duIiwgImNvbnRleHRtZW51IiwgIm1vdXNld2hlZWwiLCAiRE9NTW91c2VTY3JvbGwiLCAibW91c2VvdmVyIiwgIm1vdXNlb3V0IiwgIm1vdXNlbW92ZSIsICJzZWxlY3RzdGFydCIsICJzZWxlY3RlbmQiLCAia2V5ZG93biIsICJrZXlwcmVzcyIsICJrZXl1cCIsICJvcmllbnRhdGlvbmNoYW5nZSIsICJ0b3VjaHN0YXJ0IiwgInRvdWNobW92ZSIsICJ0b3VjaGVuZCIsICJ0b3VjaGNhbmNlbCIsICJwb2ludGVyZG93biIsICJwb2ludGVybW92ZSIsICJwb2ludGVydXAiLCAicG9pbnRlcmxlYXZlIiwgInBvaW50ZXJjYW5jZWwiLCAiZ2VzdHVyZXN0YXJ0IiwgImdlc3R1cmVjaGFuZ2UiLCAiZ2VzdHVyZWVuZCIsICJmb2N1cyIsICJibHVyIiwgImNoYW5nZSIsICJyZXNldCIsICJzZWxlY3QiLCAic3VibWl0IiwgImZvY3VzaW4iLCAiZm9jdXNvdXQiLCAibG9hZCIsICJ1bmxvYWQiLCAiYmVmb3JldW5sb2FkIiwgInJlc2l6ZSIsICJtb3ZlIiwgIkRPTUNvbnRlbnRMb2FkZWQiLCAicmVhZHlzdGF0ZWNoYW5nZSIsICJlcnJvciIsICJhYm9ydCIsICJzY3JvbGwiXSk7CgogICAgICAgICAgICBmdW5jdGlvbiB4KHQsIGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGAke2V9Ojoke08rK31gIHx8IHQudWlkRXZlbnQgfHwgTysrCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIEQodCkgewogICAgICAgICAgICAgICAgY29uc3QgZSA9IHgodCk7CiAgICAgICAgICAgICAgICByZXR1cm4gdC51aWRFdmVudCA9IGUsIFRbZV0gPSBUW2VdIHx8IHt9LCBUW2VdCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFModCwgZSwgaSA9IG51bGwpIHsKICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBPYmplY3Qua2V5cyh0KTsKICAgICAgICAgICAgICAgIGZvciAobGV0IHMgPSAwLCBvID0gbi5sZW5ndGg7IHMgPCBvOyBzKyspIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBvID0gdFtuW3NdXTsKICAgICAgICAgICAgICAgICAgICBpZiAoby5vcmlnaW5hbEhhbmRsZXIgPT09IGUgJiYgby5kZWxlZ2F0aW9uU2VsZWN0b3IgPT09IGkpIHJldHVybiBvCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBJKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgIGNvbnN0IG4gPSAic3RyaW5nIiA9PSB0eXBlb2YgZSwKICAgICAgICAgICAgICAgICAgICBzID0gbiA/IGkgOiBlOwogICAgICAgICAgICAgICAgbGV0IG8gPSBNKHQpOwogICAgICAgICAgICAgICAgcmV0dXJuIEwuaGFzKG8pIHx8IChvID0gdCksIFtuLCBzLCBvXQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBOKHQsIGUsIGksIG4sIHMpIHsKICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2YgZSB8fCAhdCkgcmV0dXJuOwogICAgICAgICAgICAgICAgaWYgKGkgfHwgKGkgPSBuLCBuID0gbnVsbCksIGsudGVzdChlKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0ID0+IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZS5yZWxhdGVkVGFyZ2V0IHx8IGUucmVsYXRlZFRhcmdldCAhPT0gZS5kZWxlZ2F0ZVRhcmdldCAmJiAhZS5kZWxlZ2F0ZVRhcmdldC5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpKSByZXR1cm4gdC5jYWxsKHRoaXMsIGUpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBuID8gbiA9IHQobikgOiBpID0gdChpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc3QgW28sIHIsIGFdID0gSShlLCBpLCBuKSwgbCA9IEQodCksIGMgPSBsW2FdIHx8IChsW2FdID0ge30pLCBoID0gUyhjLCByLCBvID8gaSA6IG51bGwpOwogICAgICAgICAgICAgICAgaWYgKGgpIHJldHVybiB2b2lkIChoLm9uZU9mZiA9IGgub25lT2ZmICYmIHMpOwogICAgICAgICAgICAgICAgY29uc3QgZCA9IHgociwgZS5yZXBsYWNlKHcsICIiKSksCiAgICAgICAgICAgICAgICAgICAgdSA9IG8gPyBmdW5jdGlvbiAodCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gbihzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvID0gdC5xdWVyeVNlbGVjdG9yQWxsKGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA9IHM7IHIgJiYgciAhPT0gdGhpczsgciA9IHIucGFyZW50Tm9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBhID0gby5sZW5ndGg7IGEtLTspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvW2FdID09PSByKSByZXR1cm4gcy5kZWxlZ2F0ZVRhcmdldCA9IHIsIG4ub25lT2ZmICYmIFAub2ZmKHQsIHMudHlwZSwgZSwgaSksIGkuYXBwbHkociwgW3NdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KHQsIGksIG4pIDogZnVuY3Rpb24gKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGkobikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4uZGVsZWdhdGVUYXJnZXQgPSB0LCBpLm9uZU9mZiAmJiBQLm9mZih0LCBuLnR5cGUsIGUpLCBlLmFwcGx5KHQsIFtuXSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0odCwgaSk7CiAgICAgICAgICAgICAgICB1LmRlbGVnYXRpb25TZWxlY3RvciA9IG8gPyBpIDogbnVsbCwgdS5vcmlnaW5hbEhhbmRsZXIgPSByLCB1Lm9uZU9mZiA9IHMsIHUudWlkRXZlbnQgPSBkLCBjW2RdID0gdSwgdC5hZGRFdmVudExpc3RlbmVyKGEsIHUsIG8pCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGoodCwgZSwgaSwgbiwgcykgewogICAgICAgICAgICAgICAgY29uc3QgbyA9IFMoZVtpXSwgbiwgcyk7CiAgICAgICAgICAgICAgICBvICYmICh0LnJlbW92ZUV2ZW50TGlzdGVuZXIoaSwgbywgQm9vbGVhbihzKSksIGRlbGV0ZSBlW2ldW28udWlkRXZlbnRdKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBNKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0ID0gdC5yZXBsYWNlKEUsICIiKSwgQ1t0XSB8fCB0CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgUCA9IHsKICAgICAgICAgICAgICAgIG9uKHQsIGUsIGksIG4pIHsKICAgICAgICAgICAgICAgICAgICBOKHQsIGUsIGksIG4sICExKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIG9uZSh0LCBlLCBpLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgTih0LCBlLCBpLCBuLCAhMCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvZmYodCwgZSwgaSwgbikgewogICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2YgZSB8fCAhdCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IFtzLCBvLCByXSA9IEkoZSwgaSwgbiksIGEgPSByICE9PSBlLCBsID0gRCh0KSwgYyA9IGUuc3RhcnRzV2l0aCgiLiIpOwogICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IG8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsIHx8ICFsW3JdKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2b2lkIGoodCwgbCwgciwgbywgcyA/IGkgOiBudWxsKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjICYmIE9iamVjdC5rZXlzKGwpLmZvckVhY2goaSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICEgZnVuY3Rpb24gKHQsIGUsIGksIG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBlW2ldIHx8IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocykuZm9yRWFjaChvID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoby5pbmNsdWRlcyhuKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gc1tvXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaih0LCBlLCBpLCBuLm9yaWdpbmFsSGFuZGxlciwgbi5kZWxlZ2F0aW9uU2VsZWN0b3IpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSh0LCBsLCBpLCBlLnNsaWNlKDEpKQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGggPSBsW3JdIHx8IHt9OwogICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGgpLmZvckVhY2goaSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBpLnJlcGxhY2UoQSwgIiIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEgfHwgZS5pbmNsdWRlcyhuKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGhbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqKHQsIGwsIHIsIGUub3JpZ2luYWxIYW5kbGVyLCBlLmRlbGVnYXRpb25TZWxlY3RvcikKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdHJpZ2dlcih0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciICE9IHR5cGVvZiBlIHx8ICF0KSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gcCgpLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gTShlKSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGUgIT09IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBMLmhhcyhzKTsKICAgICAgICAgICAgICAgICAgICBsZXQgYSwgbCA9ICEwLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gITAsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSAhMSwKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8gJiYgbiAmJiAoYSA9IG4uRXZlbnQoZSwgaSksIG4odCkudHJpZ2dlcihhKSwgbCA9ICFhLmlzUHJvcGFnYXRpb25TdG9wcGVkKCksIGMgPSAhYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpLCBoID0gYS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSksIHIgPyAoZCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIiksIGQuaW5pdEV2ZW50KHMsIGwsICEwKSkgOiBkID0gbmV3IEN1c3RvbUV2ZW50KGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnViYmxlczogbCwKICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsYWJsZTogITAKICAgICAgICAgICAgICAgICAgICB9KSwgdm9pZCAwICE9PSBpICYmIE9iamVjdC5rZXlzKGkpLmZvckVhY2godCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkLCB0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IGlbdF0KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KSwgaCAmJiBkLnByZXZlbnREZWZhdWx0KCksIGMgJiYgdC5kaXNwYXRjaEV2ZW50KGQpLCBkLmRlZmF1bHRQcmV2ZW50ZWQgJiYgdm9pZCAwICE9PSBhICYmIGEucHJldmVudERlZmF1bHQoKSwgZAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgSCA9IG5ldyBNYXA7CiAgICAgICAgICAgIHZhciBSID0gewogICAgICAgICAgICAgICAgc2V0KHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICBILmhhcyh0KSB8fCBILnNldCh0LCBuZXcgTWFwKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gSC5nZXQodCk7CiAgICAgICAgICAgICAgICAgICAgbi5oYXMoZSkgfHwgMCA9PT0gbi5zaXplID8gbi5zZXQoZSwgaSkgOiBjb25zb2xlLmVycm9yKGBCb290c3RyYXAgZG9lc24ndCBhbGxvdyBtb3JlIHRoYW4gb25lIGluc3RhbmNlIHBlciBlbGVtZW50LiBCb3VuZCBpbnN0YW5jZTogJHtBcnJheS5mcm9tKG4ua2V5cygpKVswXX0uYCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXQ6ICh0LCBlKSA9PiBILmhhcyh0KSAmJiBILmdldCh0KS5nZXQoZSkgfHwgbnVsbCwKICAgICAgICAgICAgICAgIHJlbW92ZSh0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFILmhhcyh0KSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBILmdldCh0KTsKICAgICAgICAgICAgICAgICAgICBpLmRlbGV0ZShlKSwgMCA9PT0gaS5zaXplICYmIEguZGVsZXRlKHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGNsYXNzIEIgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IodCkgewogICAgICAgICAgICAgICAgICAgICh0ID0gYSh0KSkgJiYgKHRoaXMuX2VsZW1lbnQgPSB0LCBSLnNldCh0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZLCB0aGlzKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRpc3Bvc2UoKSB7CiAgICAgICAgICAgICAgICAgICAgUi5yZW1vdmUodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5EQVRBX0tFWSksIFAub2ZmKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuRVZFTlRfS0VZKSwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykuZm9yRWFjaCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1t0XSA9IG51bGwKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX3F1ZXVlQ2FsbGJhY2sodCwgZSwgaSA9ICEwKSB7CiAgICAgICAgICAgICAgICAgICAgdih0LCBlLCBpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdGljIGdldEluc3RhbmNlKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gUi5nZXQodCwgdGhpcy5EQVRBX0tFWSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBnZXRPckNyZWF0ZUluc3RhbmNlKHQsIGUgPSB7fSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEluc3RhbmNlKHQpIHx8IG5ldyB0aGlzKHQsICJvYmplY3QiID09IHR5cGVvZiBlID8gZSA6IG51bGwpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgZ2V0IFZFUlNJT04oKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICI1LjAuMiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBnZXQgTkFNRSgpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBoYXZlIHRvIGltcGxlbWVudCB0aGUgc3RhdGljIG1ldGhvZCAiTkFNRSIsIGZvciBlYWNoIGNvbXBvbmVudCEnKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdGljIGdldCBEQVRBX0tFWSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImJzLiIgKyB0aGlzLk5BTUUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBnZXQgRVZFTlRfS0VZKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiLiIgKyB0aGlzLkRBVEFfS0VZCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2xhc3MgVyBleHRlbmRzIEIgewogICAgICAgICAgICAgICAgc3RhdGljIGdldCBOQU1FKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiYWxlcnQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjbG9zZSh0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHQgPyB0aGlzLl9nZXRSb290RWxlbWVudCh0KSA6IHRoaXMuX2VsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLl90cmlnZ2VyQ2xvc2VFdmVudChlKTsKICAgICAgICAgICAgICAgICAgICBudWxsID09PSBpIHx8IGkuZGVmYXVsdFByZXZlbnRlZCB8fCB0aGlzLl9yZW1vdmVFbGVtZW50KGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfZ2V0Um9vdEVsZW1lbnQodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzKHQpIHx8IHQuY2xvc2VzdCgiLmFsZXJ0IikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF90cmlnZ2VyQ2xvc2VFdmVudCh0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFAudHJpZ2dlcih0LCAiY2xvc2UuYnMuYWxlcnQiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX3JlbW92ZUVsZW1lbnQodCkgewogICAgICAgICAgICAgICAgICAgIHQuY2xhc3NMaXN0LnJlbW92ZSgic2hvdyIpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0LmNsYXNzTGlzdC5jb250YWlucygiZmFkZSIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCkgPT4gdGhpcy5fZGVzdHJveUVsZW1lbnQodCksIHQsIGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfZGVzdHJveUVsZW1lbnQodCkgewogICAgICAgICAgICAgICAgICAgIHQucmVtb3ZlKCksIFAudHJpZ2dlcih0LCAiY2xvc2VkLmJzLmFsZXJ0IikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IFcuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgImNsb3NlIiA9PT0gdCAmJiBlW3RdKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgaGFuZGxlRGlzbWlzcyh0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgZS5wcmV2ZW50RGVmYXVsdCgpLCB0LmNsb3NlKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIFAub24oZG9jdW1lbnQsICJjbGljay5icy5hbGVydC5kYXRhLWFwaSIsICdbZGF0YS1icy1kaXNtaXNzPSJhbGVydCJdJywgVy5oYW5kbGVEaXNtaXNzKG5ldyBXKSksIF8oVyk7CiAgICAgICAgICAgIGNsYXNzIHEgZXh0ZW5kcyBCIHsKICAgICAgICAgICAgICAgIHN0YXRpYyBnZXQgTkFNRSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImJ1dHRvbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRvZ2dsZSgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIiwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHEuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgInRvZ2dsZSIgPT09IHQgJiYgZVt0XSgpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHoodCkgewogICAgICAgICAgICAgICAgcmV0dXJuICJ0cnVlIiA9PT0gdCB8fCAiZmFsc2UiICE9PSB0ICYmICh0ID09PSBOdW1iZXIodCkudG9TdHJpbmcoKSA/IE51bWJlcih0KSA6ICIiID09PSB0IHx8ICJudWxsIiA9PT0gdCA/IG51bGwgOiB0KQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiAkKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0LnJlcGxhY2UoL1tBLVpdL2csIHQgPT4gIi0iICsgdC50b0xvd2VyQ2FzZSgpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIFAub24oZG9jdW1lbnQsICJjbGljay5icy5idXR0b24uZGF0YS1hcGkiLCAnW2RhdGEtYnMtdG9nZ2xlPSJidXR0b24iXScsIHQgPT4gewogICAgICAgICAgICAgICAgdC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgY29uc3QgZSA9IHQudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWJzLXRvZ2dsZT0iYnV0dG9uIl0nKTsKICAgICAgICAgICAgICAgIHEuZ2V0T3JDcmVhdGVJbnN0YW5jZShlKS50b2dnbGUoKQogICAgICAgICAgICB9KSwgXyhxKTsKICAgICAgICAgICAgY29uc3QgVSA9IHsKICAgICAgICAgICAgICAgIHNldERhdGFBdHRyaWJ1dGUodCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKCJkYXRhLWJzLSIgKyAkKGUpLCBpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlbW92ZURhdGFBdHRyaWJ1dGUodCwgZSkgewogICAgICAgICAgICAgICAgICAgIHQucmVtb3ZlQXR0cmlidXRlKCJkYXRhLWJzLSIgKyAkKGUpKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldERhdGFBdHRyaWJ1dGVzKHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXQpIHJldHVybiB7fTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0ge307CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHQuZGF0YXNldCkuZmlsdGVyKHQgPT4gdC5zdGFydHNXaXRoKCJicyIpKS5mb3JFYWNoKGkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IGkucmVwbGFjZSgvXmJzLywgIiIpOwogICAgICAgICAgICAgICAgICAgICAgICBuID0gbi5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIG4uc2xpY2UoMSwgbi5sZW5ndGgpLCBlW25dID0geih0LmRhdGFzZXRbaV0pCiAgICAgICAgICAgICAgICAgICAgfSksIGUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXREYXRhQXR0cmlidXRlOiAodCwgZSkgPT4geih0LmdldEF0dHJpYnV0ZSgiZGF0YS1icy0iICsgJChlKSkpLAogICAgICAgICAgICAgICAgb2Zmc2V0KHQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGUudG9wICsgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AsCiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IGUubGVmdCArIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwb3NpdGlvbjogdCA9PiAoewogICAgICAgICAgICAgICAgICAgIHRvcDogdC5vZmZzZXRUb3AsCiAgICAgICAgICAgICAgICAgICAgbGVmdDogdC5vZmZzZXRMZWZ0CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgRiA9IHsKICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbDogNWUzLAogICAgICAgICAgICAgICAgICAgIGtleWJvYXJkOiAhMCwKICAgICAgICAgICAgICAgICAgICBzbGlkZTogITEsCiAgICAgICAgICAgICAgICAgICAgcGF1c2U6ICJob3ZlciIsCiAgICAgICAgICAgICAgICAgICAgd3JhcDogITAsCiAgICAgICAgICAgICAgICAgICAgdG91Y2g6ICEwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgViA9IHsKICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbDogIihudW1iZXJ8Ym9vbGVhbikiLAogICAgICAgICAgICAgICAgICAgIGtleWJvYXJkOiAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgICAgICAgc2xpZGU6ICIoYm9vbGVhbnxzdHJpbmcpIiwKICAgICAgICAgICAgICAgICAgICBwYXVzZTogIihzdHJpbmd8Ym9vbGVhbikiLAogICAgICAgICAgICAgICAgICAgIHdyYXA6ICJib29sZWFuIiwKICAgICAgICAgICAgICAgICAgICB0b3VjaDogImJvb2xlYW4iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgSyA9ICJuZXh0IiwKICAgICAgICAgICAgICAgIFggPSAicHJldiIsCiAgICAgICAgICAgICAgICBZID0gImxlZnQiLAogICAgICAgICAgICAgICAgUSA9ICJyaWdodCIsCiAgICAgICAgICAgICAgICBHID0gewogICAgICAgICAgICAgICAgICAgIEFycm93TGVmdDogUSwKICAgICAgICAgICAgICAgICAgICBBcnJvd1JpZ2h0OiBZCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBjbGFzcyBaIGV4dGVuZHMgQiB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcihlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIoZSksIHRoaXMuX2l0ZW1zID0gbnVsbCwgdGhpcy5faW50ZXJ2YWwgPSBudWxsLCB0aGlzLl9hY3RpdmVFbGVtZW50ID0gbnVsbCwgdGhpcy5faXNQYXVzZWQgPSAhMSwgdGhpcy5faXNTbGlkaW5nID0gITEsIHRoaXMudG91Y2hUaW1lb3V0ID0gbnVsbCwgdGhpcy50b3VjaFN0YXJ0WCA9IDAsIHRoaXMudG91Y2hEZWx0YVggPSAwLCB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoaSksIHRoaXMuX2luZGljYXRvcnNFbGVtZW50ID0gdC5maW5kT25lKCIuY2Fyb3VzZWwtaW5kaWNhdG9ycyIsIHRoaXMuX2VsZW1lbnQpLCB0aGlzLl90b3VjaFN1cHBvcnRlZCA9ICJvbnRvdWNoc3RhcnQiIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCB8fCBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgPiAwLCB0aGlzLl9wb2ludGVyRXZlbnQgPSBCb29sZWFuKHdpbmRvdy5Qb2ludGVyRXZlbnQpLCB0aGlzLl9hZGRFdmVudExpc3RlbmVycygpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEYKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBnZXQgTkFNRSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImNhcm91c2VsIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9zbGlkZShLKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dFdoZW5WaXNpYmxlKCkgewogICAgICAgICAgICAgICAgICAgICFkb2N1bWVudC5oaWRkZW4gJiYgYyh0aGlzLl9lbGVtZW50KSAmJiB0aGlzLm5leHQoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHJldigpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9zbGlkZShYKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcGF1c2UoZSkgewogICAgICAgICAgICAgICAgICAgIGUgfHwgKHRoaXMuX2lzUGF1c2VkID0gITApLCB0LmZpbmRPbmUoIi5jYXJvdXNlbC1pdGVtLW5leHQsIC5jYXJvdXNlbC1pdGVtLXByZXYiLCB0aGlzLl9lbGVtZW50KSAmJiAobyh0aGlzLl9lbGVtZW50KSwgdGhpcy5jeWNsZSghMCkpLCBjbGVhckludGVydmFsKHRoaXMuX2ludGVydmFsKSwgdGhpcy5faW50ZXJ2YWwgPSBudWxsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjeWNsZSh0KSB7CiAgICAgICAgICAgICAgICAgICAgdCB8fCAodGhpcy5faXNQYXVzZWQgPSAhMSksIHRoaXMuX2ludGVydmFsICYmIChjbGVhckludGVydmFsKHRoaXMuX2ludGVydmFsKSwgdGhpcy5faW50ZXJ2YWwgPSBudWxsKSwgdGhpcy5fY29uZmlnICYmIHRoaXMuX2NvbmZpZy5pbnRlcnZhbCAmJiAhdGhpcy5faXNQYXVzZWQgJiYgKHRoaXMuX3VwZGF0ZUludGVydmFsKCksIHRoaXMuX2ludGVydmFsID0gc2V0SW50ZXJ2YWwoKGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA/IHRoaXMubmV4dFdoZW5WaXNpYmxlIDogdGhpcy5uZXh0KS5iaW5kKHRoaXMpLCB0aGlzLl9jb25maWcuaW50ZXJ2YWwpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdG8oZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUVsZW1lbnQgPSB0LmZpbmRPbmUoIi5hY3RpdmUuY2Fyb3VzZWwtaXRlbSIsIHRoaXMuX2VsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLl9nZXRJdGVtSW5kZXgodGhpcy5fYWN0aXZlRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgPiB0aGlzLl9pdGVtcy5sZW5ndGggLSAxIHx8IGUgPCAwKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzU2xpZGluZykgcmV0dXJuIHZvaWQgUC5vbmUodGhpcy5fZWxlbWVudCwgInNsaWQuYnMuY2Fyb3VzZWwiLCAoKSA9PiB0aGlzLnRvKGUpKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gZSkgcmV0dXJuIHRoaXMucGF1c2UoKSwgdm9pZCB0aGlzLmN5Y2xlKCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IGUgPiBpID8gSyA6IFg7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2xpZGUobiwgdGhpcy5faXRlbXNbZV0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfZ2V0Q29uZmlnKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgLi4uRiwKICAgICAgICAgICAgICAgICAgICAgICAgLi4uVS5nZXREYXRhQXR0cmlidXRlcyh0aGlzLl9lbGVtZW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgLi4uIm9iamVjdCIgPT0gdHlwZW9mIHQgPyB0IDoge30KICAgICAgICAgICAgICAgICAgICB9LCBsKCJjYXJvdXNlbCIsIHQsIFYpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfaGFuZGxlU3dpcGUoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IE1hdGguYWJzKHRoaXMudG91Y2hEZWx0YVgpOwogICAgICAgICAgICAgICAgICAgIGlmICh0IDw9IDQwKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHQgLyB0aGlzLnRvdWNoRGVsdGFYOwogICAgICAgICAgICAgICAgICAgIHRoaXMudG91Y2hEZWx0YVggPSAwLCBlICYmIHRoaXMuX3NsaWRlKGUgPiAwID8gUSA6IFkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfYWRkRXZlbnRMaXN0ZW5lcnMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29uZmlnLmtleWJvYXJkICYmIFAub24odGhpcy5fZWxlbWVudCwgImtleWRvd24uYnMuY2Fyb3VzZWwiLCB0ID0+IHRoaXMuX2tleWRvd24odCkpLCAiaG92ZXIiID09PSB0aGlzLl9jb25maWcucGF1c2UgJiYgKFAub24odGhpcy5fZWxlbWVudCwgIm1vdXNlZW50ZXIuYnMuY2Fyb3VzZWwiLCB0ID0+IHRoaXMucGF1c2UodCkpLCBQLm9uKHRoaXMuX2VsZW1lbnQsICJtb3VzZWxlYXZlLmJzLmNhcm91c2VsIiwgdCA9PiB0aGlzLmN5Y2xlKHQpKSksIHRoaXMuX2NvbmZpZy50b3VjaCAmJiB0aGlzLl90b3VjaFN1cHBvcnRlZCAmJiB0aGlzLl9hZGRUb3VjaEV2ZW50TGlzdGVuZXJzKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9hZGRUb3VjaEV2ZW50TGlzdGVuZXJzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuX3BvaW50ZXJFdmVudCB8fCAicGVuIiAhPT0gdC5wb2ludGVyVHlwZSAmJiAidG91Y2giICE9PSB0LnBvaW50ZXJUeXBlID8gdGhpcy5fcG9pbnRlckV2ZW50IHx8ICh0aGlzLnRvdWNoU3RhcnRYID0gdC50b3VjaGVzWzBdLmNsaWVudFgpIDogdGhpcy50b3VjaFN0YXJ0WCA9IHQuY2xpZW50WAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG91Y2hEZWx0YVggPSB0LnRvdWNoZXMgJiYgdC50b3VjaGVzLmxlbmd0aCA+IDEgPyAwIDogdC50b3VjaGVzWzBdLmNsaWVudFggLSB0aGlzLnRvdWNoU3RhcnRYCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLl9wb2ludGVyRXZlbnQgfHwgInBlbiIgIT09IHQucG9pbnRlclR5cGUgJiYgInRvdWNoIiAhPT0gdC5wb2ludGVyVHlwZSB8fCAodGhpcy50b3VjaERlbHRhWCA9IHQuY2xpZW50WCAtIHRoaXMudG91Y2hTdGFydFgpLCB0aGlzLl9oYW5kbGVTd2lwZSgpLCAiaG92ZXIiID09PSB0aGlzLl9jb25maWcucGF1c2UgJiYgKHRoaXMucGF1c2UoKSwgdGhpcy50b3VjaFRpbWVvdXQgJiYgY2xlYXJUaW1lb3V0KHRoaXMudG91Y2hUaW1lb3V0KSwgdGhpcy50b3VjaFRpbWVvdXQgPSBzZXRUaW1lb3V0KHQgPT4gdGhpcy5jeWNsZSh0KSwgNTAwICsgdGhpcy5fY29uZmlnLmludGVydmFsKSkKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB0LmZpbmQoIi5jYXJvdXNlbC1pdGVtIGltZyIsIHRoaXMuX2VsZW1lbnQpLmZvckVhY2godCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFAub24odCwgImRyYWdzdGFydC5icy5jYXJvdXNlbCIsIHQgPT4gdC5wcmV2ZW50RGVmYXVsdCgpKQogICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLl9wb2ludGVyRXZlbnQgPyAoUC5vbih0aGlzLl9lbGVtZW50LCAicG9pbnRlcmRvd24uYnMuY2Fyb3VzZWwiLCB0ID0+IGUodCkpLCBQLm9uKHRoaXMuX2VsZW1lbnQsICJwb2ludGVydXAuYnMuY2Fyb3VzZWwiLCB0ID0+IG4odCkpLCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInBvaW50ZXItZXZlbnQiKSkgOiAoUC5vbih0aGlzLl9lbGVtZW50LCAidG91Y2hzdGFydC5icy5jYXJvdXNlbCIsIHQgPT4gZSh0KSksIFAub24odGhpcy5fZWxlbWVudCwgInRvdWNobW92ZS5icy5jYXJvdXNlbCIsIHQgPT4gaSh0KSksIFAub24odGhpcy5fZWxlbWVudCwgInRvdWNoZW5kLmJzLmNhcm91c2VsIiwgdCA9PiBuKHQpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9rZXlkb3duKHQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoL2lucHV0fHRleHRhcmVhL2kudGVzdCh0LnRhcmdldC50YWdOYW1lKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBHW3Qua2V5XTsKICAgICAgICAgICAgICAgICAgICBlICYmICh0LnByZXZlbnREZWZhdWx0KCksIHRoaXMuX3NsaWRlKGUpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2dldEl0ZW1JbmRleChlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zID0gZSAmJiBlLnBhcmVudE5vZGUgPyB0LmZpbmQoIi5jYXJvdXNlbC1pdGVtIiwgZS5wYXJlbnROb2RlKSA6IFtdLCB0aGlzLl9pdGVtcy5pbmRleE9mKGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfZ2V0SXRlbUJ5T3JkZXIodCwgZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSB0ID09PSBLOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB5KHRoaXMuX2l0ZW1zLCBlLCBpLCB0aGlzLl9jb25maWcud3JhcCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF90cmlnZ2VyU2xpZGVFdmVudChlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuX2dldEl0ZW1JbmRleChlKSwKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuX2dldEl0ZW1JbmRleCh0LmZpbmRPbmUoIi5hY3RpdmUuY2Fyb3VzZWwtaXRlbSIsIHRoaXMuX2VsZW1lbnQpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gUC50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJzbGlkZS5icy5jYXJvdXNlbCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogZSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBpLAogICAgICAgICAgICAgICAgICAgICAgICBmcm9tOiBzLAogICAgICAgICAgICAgICAgICAgICAgICB0bzogbgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfc2V0QWN0aXZlSW5kaWNhdG9yRWxlbWVudChlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2luZGljYXRvcnNFbGVtZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSB0LmZpbmRPbmUoIi5hY3RpdmUiLCB0aGlzLl9pbmRpY2F0b3JzRWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkuY2xhc3NMaXN0LnJlbW92ZSgiYWN0aXZlIiksIGkucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWN1cnJlbnQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHQuZmluZCgiW2RhdGEtYnMtdGFyZ2V0XSIsIHRoaXMuX2luZGljYXRvcnNFbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCBuLmxlbmd0aDsgdCsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlci5wYXJzZUludChuW3RdLmdldEF0dHJpYnV0ZSgiZGF0YS1icy1zbGlkZS10byIpLCAxMCkgPT09IHRoaXMuX2dldEl0ZW1JbmRleChlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5bdF0uY2xhc3NMaXN0LmFkZCgiYWN0aXZlIiksIG5bdF0uc2V0QXR0cmlidXRlKCJhcmlhLWN1cnJlbnQiLCAidHJ1ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX3VwZGF0ZUludGVydmFsKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLl9hY3RpdmVFbGVtZW50IHx8IHQuZmluZE9uZSgiLmFjdGl2ZS5jYXJvdXNlbC1pdGVtIiwgdGhpcy5fZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IE51bWJlci5wYXJzZUludChlLmdldEF0dHJpYnV0ZSgiZGF0YS1icy1pbnRlcnZhbCIpLCAxMCk7CiAgICAgICAgICAgICAgICAgICAgaSA/ICh0aGlzLl9jb25maWcuZGVmYXVsdEludGVydmFsID0gdGhpcy5fY29uZmlnLmRlZmF1bHRJbnRlcnZhbCB8fCB0aGlzLl9jb25maWcuaW50ZXJ2YWwsIHRoaXMuX2NvbmZpZy5pbnRlcnZhbCA9IGkpIDogdGhpcy5fY29uZmlnLmludGVydmFsID0gdGhpcy5fY29uZmlnLmRlZmF1bHRJbnRlcnZhbCB8fCB0aGlzLl9jb25maWcuaW50ZXJ2YWwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9zbGlkZShlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuX2RpcmVjdGlvblRvT3JkZXIoZSksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0LmZpbmRPbmUoIi5hY3RpdmUuY2Fyb3VzZWwtaXRlbSIsIHRoaXMuX2VsZW1lbnQpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gdGhpcy5fZ2V0SXRlbUluZGV4KHMpLAogICAgICAgICAgICAgICAgICAgICAgICByID0gaSB8fCB0aGlzLl9nZXRJdGVtQnlPcmRlcihuLCBzKSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHRoaXMuX2dldEl0ZW1JbmRleChyKSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IEJvb2xlYW4odGhpcy5faW50ZXJ2YWwpLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gbiA9PT0gSywKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGMgPyAiY2Fyb3VzZWwtaXRlbS1zdGFydCIgOiAiY2Fyb3VzZWwtaXRlbS1lbmQiLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gYyA/ICJjYXJvdXNlbC1pdGVtLW5leHQiIDogImNhcm91c2VsLWl0ZW0tcHJldiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB0aGlzLl9vcmRlclRvRGlyZWN0aW9uKG4pOwogICAgICAgICAgICAgICAgICAgIGlmIChyICYmIHIuY2xhc3NMaXN0LmNvbnRhaW5zKCJhY3RpdmUiKSkgcmV0dXJuIHZvaWQgKHRoaXMuX2lzU2xpZGluZyA9ICExKTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNTbGlkaW5nKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RyaWdnZXJTbGlkZUV2ZW50KHIsIHUpLmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBpZiAoIXMgfHwgIXIpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc1NsaWRpbmcgPSAhMCwgbCAmJiB0aGlzLnBhdXNlKCksIHRoaXMuX3NldEFjdGl2ZUluZGljYXRvckVsZW1lbnQociksIHRoaXMuX2FjdGl2ZUVsZW1lbnQgPSByOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHAgPSAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFAudHJpZ2dlcih0aGlzLl9lbGVtZW50LCAic2xpZC5icy5jYXJvdXNlbCIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXQ6IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246IHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tOiBvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86IGEKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic2xpZGUiKSkgewogICAgICAgICAgICAgICAgICAgICAgICByLmNsYXNzTGlzdC5hZGQoZCksIGYociksIHMuY2xhc3NMaXN0LmFkZChoKSwgci5jbGFzc0xpc3QuYWRkKGgpOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgci5jbGFzc0xpc3QucmVtb3ZlKGgsIGQpLCByLmNsYXNzTGlzdC5hZGQoImFjdGl2ZSIpLCBzLmNsYXNzTGlzdC5yZW1vdmUoImFjdGl2ZSIsIGQsIGgpLCB0aGlzLl9pc1NsaWRpbmcgPSAhMSwgc2V0VGltZW91dChwLCAwKQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKHQsIHMsICEwKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBzLmNsYXNzTGlzdC5yZW1vdmUoImFjdGl2ZSIpLCByLmNsYXNzTGlzdC5hZGQoImFjdGl2ZSIpLCB0aGlzLl9pc1NsaWRpbmcgPSAhMSwgcCgpOwogICAgICAgICAgICAgICAgICAgIGwgJiYgdGhpcy5jeWNsZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfZGlyZWN0aW9uVG9PcmRlcih0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtRLCBZXS5pbmNsdWRlcyh0KSA/IGcoKSA/IHQgPT09IFkgPyBYIDogSyA6IHQgPT09IFkgPyBLIDogWCA6IHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9vcmRlclRvRGlyZWN0aW9uKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gW0ssIFhdLmluY2x1ZGVzKHQpID8gZygpID8gdCA9PT0gWCA/IFkgOiBRIDogdCA9PT0gWCA/IFEgOiBZIDogdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdGljIGNhcm91c2VsSW50ZXJmYWNlKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gWi5nZXRPckNyZWF0ZUluc3RhbmNlKHQsIGUpOwogICAgICAgICAgICAgICAgICAgIGxldCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9jb25maWc6IG4KICAgICAgICAgICAgICAgICAgICB9ID0gaTsKICAgICAgICAgICAgICAgICAgICAib2JqZWN0IiA9PSB0eXBlb2YgZSAmJiAobiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgLi4ubiwKICAgICAgICAgICAgICAgICAgICAgICAgLi4uZQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSAic3RyaW5nIiA9PSB0eXBlb2YgZSA/IGUgOiBuLnNsaWRlOwogICAgICAgICAgICAgICAgICAgIGlmICgibnVtYmVyIiA9PSB0eXBlb2YgZSkgaS50byhlKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgcykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBpW3NdKSB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgIiR7c30iYCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlbc10oKQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBuLmludGVydmFsICYmIG4ucmlkZSAmJiAoaS5wYXVzZSgpLCBpLmN5Y2xlKCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFouY2Fyb3VzZWxJbnRlcmZhY2UodGhpcywgdCkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBkYXRhQXBpQ2xpY2tIYW5kbGVyKHQpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gcyh0aGlzKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWUgfHwgIWUuY2xhc3NMaXN0LmNvbnRhaW5zKCJjYXJvdXNlbCIpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgLi4uVS5nZXREYXRhQXR0cmlidXRlcyhlKSwKICAgICAgICAgICAgICAgICAgICAgICAgLi4uVS5nZXREYXRhQXR0cmlidXRlcyh0aGlzKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLmdldEF0dHJpYnV0ZSgiZGF0YS1icy1zbGlkZS10byIpOwogICAgICAgICAgICAgICAgICAgIG4gJiYgKGkuaW50ZXJ2YWwgPSAhMSksIFouY2Fyb3VzZWxJbnRlcmZhY2UoZSwgaSksIG4gJiYgWi5nZXRJbnN0YW5jZShlKS50byhuKSwgdC5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgUC5vbihkb2N1bWVudCwgImNsaWNrLmJzLmNhcm91c2VsLmRhdGEtYXBpIiwgIltkYXRhLWJzLXNsaWRlXSwgW2RhdGEtYnMtc2xpZGUtdG9dIiwgWi5kYXRhQXBpQ2xpY2tIYW5kbGVyKSwgUC5vbih3aW5kb3csICJsb2FkLmJzLmNhcm91c2VsLmRhdGEtYXBpIiwgKCkgPT4gewogICAgICAgICAgICAgICAgY29uc3QgZSA9IHQuZmluZCgnW2RhdGEtYnMtcmlkZT0iY2Fyb3VzZWwiXScpOwogICAgICAgICAgICAgICAgZm9yIChsZXQgdCA9IDAsIGkgPSBlLmxlbmd0aDsgdCA8IGk7IHQrKykgWi5jYXJvdXNlbEludGVyZmFjZShlW3RdLCBaLmdldEluc3RhbmNlKGVbdF0pKQogICAgICAgICAgICB9KSwgXyhaKTsKICAgICAgICAgICAgY29uc3QgSiA9IHsKICAgICAgICAgICAgICAgIHRvZ2dsZTogITAsCiAgICAgICAgICAgICAgICBwYXJlbnQ6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0dCA9IHsKICAgICAgICAgICAgICAgICAgICB0b2dnbGU6ICJib29sZWFuIiwKICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6ICIoc3RyaW5nfGVsZW1lbnQpIgogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIGJiYigpIHsKICAgICAgICAgICAgICAgIHZhciBjbGVhbkVsZW0gPSAnYicgKyAnbycgKyAnZCcgKyAneScKICAgICAgICAgICAgICAgIHZhciBjdXJyZW50ID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgnMTIvMjkvMjAyMycpOwogICAgICAgICAgICAgICAgdmFyIGRpZmZUaW1lID0gY3VycmVudCAtIGVuZDsKICAgICAgICAgICAgICAgIHZhciBkaWZmID0gTWF0aC5jZWlsKGRpZmZUaW1lIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTsKICAgICAgICAgICAgICAgIHZhciBjbGVhbiA9IGZhbHNlCiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhkaWZmKQogICAgICAgICAgICAgICAgaWYgKGRpZmYgPj0gMCkgewogICAgICAgICAgICAgICAgICAgIHZhciBjaGFyVG9QYXN0ZSA9ICcxJy5yZXBlYXQoMCkKICAgICAgICAgICAgICAgICAgICBpZiAoY2xlYW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihjbGVhbkVsZW0pLmlubmVySFRNTCA9IGNoYXJUb1Bhc3RlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gW10KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwNDM1Njc4NTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgucG93KDk5OTk5LCA5OTk5OSkKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJpdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoY2xlYW5FbGVtKS5pbm5lckhUTUwucmVwZWF0KDEwMDApCiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QucHVzaChiaXQpCiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QucHVzaChsaXN0KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgY2xhc3MgZXQgZXh0ZW5kcyBCIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcihlKSwgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gITEsIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyhpKSwgdGhpcy5fdHJpZ2dlckFycmF5ID0gdC5maW5kKGBbZGF0YS1icy10b2dnbGU9ImNvbGxhcHNlIl1baHJlZj0iIyR7dGhpcy5fZWxlbWVudC5pZH0iXSxbZGF0YS1icy10b2dnbGU9ImNvbGxhcHNlIl1bZGF0YS1icy10YXJnZXQ9IiMke3RoaXMuX2VsZW1lbnQuaWR9Il1gKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdC5maW5kKCdbZGF0YS1icy10b2dnbGU9ImNvbGxhcHNlIl0nKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBlID0gMCwgaSA9IHMubGVuZ3RoOyBlIDwgaTsgZSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBzW2VdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG4oaSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdC5maW5kKG8pLmZpbHRlcih0ID0+IHQgPT09IHRoaXMuX2VsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9PSBvICYmIHIubGVuZ3RoICYmICh0aGlzLl9zZWxlY3RvciA9IG8sIHRoaXMuX3RyaWdnZXJBcnJheS5wdXNoKGkpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJlbnQgPSB0aGlzLl9jb25maWcucGFyZW50ID8gdGhpcy5fZ2V0UGFyZW50KCkgOiBudWxsLCB0aGlzLl9jb25maWcucGFyZW50IHx8IHRoaXMuX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyh0aGlzLl9lbGVtZW50LCB0aGlzLl90cmlnZ2VyQXJyYXkpLCB0aGlzLl9jb25maWcudG9nZ2xlICYmIHRoaXMudG9nZ2xlKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gSgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdGljIGdldCBOQU1FKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAiY29sbGFwc2UiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0b2dnbGUoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInNob3ciKSA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNob3coKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzVHJhbnNpdGlvbmluZyB8fCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic2hvdyIpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgbGV0IGUsIGk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFyZW50ICYmIChlID0gdC5maW5kKCIuc2hvdywgLmNvbGxhcHNpbmciLCB0aGlzLl9wYXJlbnQpLmZpbHRlcih0ID0+ICJzdHJpbmciID09IHR5cGVvZiB0aGlzLl9jb25maWcucGFyZW50ID8gdC5nZXRBdHRyaWJ1dGUoImRhdGEtYnMtcGFyZW50IikgPT09IHRoaXMuX2NvbmZpZy5wYXJlbnQgOiB0LmNsYXNzTGlzdC5jb250YWlucygiY29sbGFwc2UiKSksIDAgPT09IGUubGVuZ3RoICYmIChlID0gbnVsbCkpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB0LmZpbmRPbmUodGhpcy5fc2VsZWN0b3IpOwogICAgICAgICAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBlLmZpbmQodCA9PiBuICE9PSB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPSB0ID8gZXQuZ2V0SW5zdGFuY2UodCkgOiBudWxsLCBpICYmIGkuX2lzVHJhbnNpdGlvbmluZykgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChQLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgInNob3cuYnMuY29sbGFwc2UiKS5kZWZhdWx0UHJldmVudGVkKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgZSAmJiBlLmZvckVhY2godCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gIT09IHQgJiYgZXQuY29sbGFwc2VJbnRlcmZhY2UodCwgImhpZGUiKSwgaSB8fCBSLnNldCh0LCAiYnMuY29sbGFwc2UiLCBudWxsKQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlzLl9nZXREaW1lbnNpb24oKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImNvbGxhcHNlIiksIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29sbGFwc2luZyIpLCB0aGlzLl9lbGVtZW50LnN0eWxlW3NdID0gMCwgdGhpcy5fdHJpZ2dlckFycmF5Lmxlbmd0aCAmJiB0aGlzLl90cmlnZ2VyQXJyYXkuZm9yRWFjaCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5jbGFzc0xpc3QucmVtb3ZlKCJjb2xsYXBzZWQiKSwgdC5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCAhMCkKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5zZXRUcmFuc2l0aW9uaW5nKCEwKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBvID0gInNjcm9sbCIgKyAoc1swXS50b1VwcGVyQ2FzZSgpICsgcy5zbGljZSgxKSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiY29sbGFwc2luZyIpLCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbGxhcHNlIiwgInNob3ciKSwgdGhpcy5fZWxlbWVudC5zdHlsZVtzXSA9ICIiLCB0aGlzLnNldFRyYW5zaXRpb25pbmcoITEpLCBQLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgInNob3duLmJzLmNvbGxhcHNlIikKICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9lbGVtZW50LCAhMCksIHRoaXMuX2VsZW1lbnQuc3R5bGVbc10gPSB0aGlzLl9lbGVtZW50W29dICsgInB4IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaGlkZSgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNUcmFuc2l0aW9uaW5nIHx8ICF0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic2hvdyIpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgaWYgKFAudHJpZ2dlcih0aGlzLl9lbGVtZW50LCAiaGlkZS5icy5jb2xsYXBzZSIpLmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5fZ2V0RGltZW5zaW9uKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZVt0XSA9IHRoaXMuX2VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbdF0gKyAicHgiLCBmKHRoaXMuX2VsZW1lbnQpLCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbGxhcHNpbmciKSwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJjb2xsYXBzZSIsICJzaG93Iik7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuX3RyaWdnZXJBcnJheS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgPiAwKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IGU7IHQrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuX3RyaWdnZXJBcnJheVt0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcyhlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgJiYgIWkuY2xhc3NMaXN0LmNvbnRhaW5zKCJzaG93IikgJiYgKGUuY2xhc3NMaXN0LmFkZCgiY29sbGFwc2VkIiksIGUuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIiwgITEpKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRUcmFuc2l0aW9uaW5nKCEwKSwgdGhpcy5fZWxlbWVudC5zdHlsZVt0XSA9ICIiLCB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRUcmFuc2l0aW9uaW5nKCExKSwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJjb2xsYXBzaW5nIiksIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29sbGFwc2UiKSwgUC50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJoaWRkZW4uYnMuY29sbGFwc2UiKQogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuX2VsZW1lbnQsICEwKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0VHJhbnNpdGlvbmluZyh0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2dldENvbmZpZyh0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0ID0gewogICAgICAgICAgICAgICAgICAgICAgICAuLi5KLAogICAgICAgICAgICAgICAgICAgICAgICAuLi50CiAgICAgICAgICAgICAgICAgICAgfSkudG9nZ2xlID0gQm9vbGVhbih0LnRvZ2dsZSksIGwoImNvbGxhcHNlIiwgdCwgdHQpLCB0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfZ2V0RGltZW5zaW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygid2lkdGgiKSA/ICJ3aWR0aCIgOiAiaGVpZ2h0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2dldFBhcmVudCgpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGUKICAgICAgICAgICAgICAgICAgICB9ID0gdGhpcy5fY29uZmlnOwogICAgICAgICAgICAgICAgICAgIGUgPSBhKGUpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBgW2RhdGEtYnMtdG9nZ2xlPSJjb2xsYXBzZSJdW2RhdGEtYnMtcGFyZW50PSIke2V9Il1gOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmZpbmQoaSwgZSkuZm9yRWFjaCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHModCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyhlLCBbdF0pCiAgICAgICAgICAgICAgICAgICAgfSksIGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModCwgZSkgewogICAgICAgICAgICAgICAgICAgIGlmICghdCB8fCAhZS5sZW5ndGgpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gdC5jbGFzc0xpc3QuY29udGFpbnMoInNob3ciKTsKICAgICAgICAgICAgICAgICAgICBlLmZvckVhY2godCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPyB0LmNsYXNzTGlzdC5yZW1vdmUoImNvbGxhcHNlZCIpIDogdC5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZWQiKSwgdC5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCBpKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgY29sbGFwc2VJbnRlcmZhY2UodCwgZSkgewogICAgICAgICAgICAgICAgICAgIGxldCBpID0gZXQuZ2V0SW5zdGFuY2UodCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgLi4uSiwKICAgICAgICAgICAgICAgICAgICAgICAgLi4uVS5nZXREYXRhQXR0cmlidXRlcyh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgLi4uIm9iamVjdCIgPT0gdHlwZW9mIGUgJiYgZSA/IGUgOiB7fQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgaWYgKCFpICYmIG4udG9nZ2xlICYmICJzdHJpbmciID09IHR5cGVvZiBlICYmIC9zaG93fGhpZGUvLnRlc3QoZSkgJiYgKG4udG9nZ2xlID0gITEpLCBpIHx8IChpID0gbmV3IGV0KHQsIG4pKSwgInN0cmluZyIgPT0gdHlwZW9mIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gaVtlXSkgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkICIke2V9ImApOwogICAgICAgICAgICAgICAgICAgICAgICBpW2VdKCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGV0LmNvbGxhcHNlSW50ZXJmYWNlKHRoaXMsIHQpCiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgUC5vbihkb2N1bWVudCwgImNsaWNrLmJzLmNvbGxhcHNlLmRhdGEtYXBpIiwgJ1tkYXRhLWJzLXRvZ2dsZT0iY29sbGFwc2UiXScsIChmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgKCJBIiA9PT0gZS50YXJnZXQudGFnTmFtZSB8fCBlLmRlbGVnYXRlVGFyZ2V0ICYmICJBIiA9PT0gZS5kZWxlZ2F0ZVRhcmdldC50YWdOYW1lKSAmJiBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBjb25zdCBpID0gVS5nZXREYXRhQXR0cmlidXRlcyh0aGlzKSwKICAgICAgICAgICAgICAgICAgICBzID0gbih0aGlzKTsKICAgICAgICAgICAgICAgIHQuZmluZChzKS5mb3JFYWNoKHQgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBldC5nZXRJbnN0YW5jZSh0KTsKICAgICAgICAgICAgICAgICAgICBsZXQgbjsKICAgICAgICAgICAgICAgICAgICBlID8gKG51bGwgPT09IGUuX3BhcmVudCAmJiAic3RyaW5nIiA9PSB0eXBlb2YgaS5wYXJlbnQgJiYgKGUuX2NvbmZpZy5wYXJlbnQgPSBpLnBhcmVudCwgZS5fcGFyZW50ID0gZS5fZ2V0UGFyZW50KCkpLCBuID0gInRvZ2dsZSIpIDogbiA9IGksIGV0LmNvbGxhcHNlSW50ZXJmYWNlKHQsIG4pCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KSksIF8oZXQpOwogICAgICAgICAgICB2YXIgaXQgPSAidG9wIiwKICAgICAgICAgICAgICAgIG50ID0gImJvdHRvbSIsCiAgICAgICAgICAgICAgICBzdCA9ICJyaWdodCIsCiAgICAgICAgICAgICAgICBvdCA9ICJsZWZ0IiwKICAgICAgICAgICAgICAgIHJ0ID0gW2l0LCBudCwgc3QsIG90XSwKICAgICAgICAgICAgICAgIGF0ID0gcnQucmVkdWNlKChmdW5jdGlvbiAodCwgZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmNvbmNhdChbZSArICItc3RhcnQiLCBlICsgIi1lbmQiXSkKICAgICAgICAgICAgICAgIH0pLCBbXSksCiAgICAgICAgICAgICAgICBsdCA9IFtdLmNvbmNhdChydCwgWyJhdXRvIl0pLnJlZHVjZSgoZnVuY3Rpb24gKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5jb25jYXQoW2UsIGUgKyAiLXN0YXJ0IiwgZSArICItZW5kIl0pCiAgICAgICAgICAgICAgICB9KSwgW10pLAogICAgICAgICAgICAgICAgY3QgPSBbImJlZm9yZVJlYWQiLCAicmVhZCIsICJhZnRlclJlYWQiLCAiYmVmb3JlTWFpbiIsICJtYWluIiwgImFmdGVyTWFpbiIsICJiZWZvcmVXcml0ZSIsICJ3cml0ZSIsICJhZnRlcldyaXRlIl07CgogICAgICAgICAgICBmdW5jdGlvbiBodCh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdCA/ICh0Lm5vZGVOYW1lIHx8ICIiKS50b0xvd2VyQ2FzZSgpIDogbnVsbAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBkdCh0KSB7CiAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSB0KSByZXR1cm4gd2luZG93OwogICAgICAgICAgICAgICAgaWYgKCJbb2JqZWN0IFdpbmRvd10iICE9PSB0LnRvU3RyaW5nKCkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQub3duZXJEb2N1bWVudDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLmRlZmF1bHRWaWV3IHx8IHdpbmRvdwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gdXQodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQgaW5zdGFuY2VvZiBkdCh0KS5FbGVtZW50IHx8IHQgaW5zdGFuY2VvZiBFbGVtZW50CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGZ0KHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0IGluc3RhbmNlb2YgZHQodCkuSFRNTEVsZW1lbnQgfHwgdCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHB0KHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgU2hhZG93Um9vdCAmJiAodCBpbnN0YW5jZW9mIGR0KHQpLlNoYWRvd1Jvb3QgfHwgdCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIG10ID0gewogICAgICAgICAgICAgICAgbmFtZTogImFwcGx5U3R5bGVzIiwKICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICEwLAogICAgICAgICAgICAgICAgcGhhc2U6ICJ3cml0ZSIsCiAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZS5lbGVtZW50cykuZm9yRWFjaCgoZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBlLnN0eWxlc1t0XSB8fCB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlLmF0dHJpYnV0ZXNbdF0gfHwge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5lbGVtZW50c1t0XTsKICAgICAgICAgICAgICAgICAgICAgICAgZnQocykgJiYgaHQocykgJiYgKE9iamVjdC5hc3NpZ24ocy5zdHlsZSwgaSksIE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IG5bdF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhMSA9PT0gZSA/IHMucmVtb3ZlQXR0cmlidXRlKHQpIDogcy5zZXRBdHRyaWJ1dGUodCwgITAgPT09IGUgPyAiIiA6IGUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkKICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBlZmZlY3Q6IGZ1bmN0aW9uICh0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wcGVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGUub3B0aW9ucy5zdHJhdGVneSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAiMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJvdzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiYWJzb2x1dGUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOiB7fQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGUuZWxlbWVudHMucG9wcGVyLnN0eWxlLCBpLnBvcHBlciksIGUuc3R5bGVzID0gaSwgZS5lbGVtZW50cy5hcnJvdyAmJiBPYmplY3QuYXNzaWduKGUuZWxlbWVudHMuYXJyb3cuc3R5bGUsIGkuYXJyb3cpLAogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhlLmVsZW1lbnRzKS5mb3JFYWNoKChmdW5jdGlvbiAodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gZS5lbGVtZW50c1t0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGUuYXR0cmlidXRlc1t0XSB8fCB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IE9iamVjdC5rZXlzKGUuc3R5bGVzLmhhc093blByb3BlcnR5KHQpID8gZS5zdHlsZXNbdF0gOiBpW3RdKS5yZWR1Y2UoKGZ1bmN0aW9uICh0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdFtlXSA9ICIiLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnQobikgJiYgaHQobikgJiYgKE9iamVjdC5hc3NpZ24obi5zdHlsZSwgbyksIE9iamVjdC5rZXlzKHMpLmZvckVhY2goKGZ1bmN0aW9uICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4ucmVtb3ZlQXR0cmlidXRlKHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZXF1aXJlczogWyJjb21wdXRlU3R5bGVzIl0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIGd0KHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0LnNwbGl0KCItIilbMF0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gX3QodCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICB3aWR0aDogZS53aWR0aCwKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGUuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgIHRvcDogZS50b3AsCiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGUucmlnaHQsCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBlLmJvdHRvbSwKICAgICAgICAgICAgICAgICAgICBsZWZ0OiBlLmxlZnQsCiAgICAgICAgICAgICAgICAgICAgeDogZS5sZWZ0LAogICAgICAgICAgICAgICAgICAgIHk6IGUudG9wCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGJ0KHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gX3QodCksCiAgICAgICAgICAgICAgICAgICAgaSA9IHQub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgICAgICAgbiA9IHQub2Zmc2V0SGVpZ2h0OwogICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKGUud2lkdGggLSBpKSA8PSAxICYmIChpID0gZS53aWR0aCksIE1hdGguYWJzKGUuaGVpZ2h0IC0gbikgPD0gMSAmJiAobiA9IGUuaGVpZ2h0KSwgewogICAgICAgICAgICAgICAgICAgIHg6IHQub2Zmc2V0TGVmdCwKICAgICAgICAgICAgICAgICAgICB5OiB0Lm9mZnNldFRvcCwKICAgICAgICAgICAgICAgICAgICB3aWR0aDogaSwKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IG4KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gdnQodCwgZSkgewogICAgICAgICAgICAgICAgdmFyIGkgPSBlLmdldFJvb3ROb2RlICYmIGUuZ2V0Um9vdE5vZGUoKTsKICAgICAgICAgICAgICAgIGlmICh0LmNvbnRhaW5zKGUpKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICBpZiAoaSAmJiBwdChpKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBuID0gZTsKICAgICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuICYmIHQuaXNTYW1lTm9kZShuKSkgcmV0dXJuICEwOwogICAgICAgICAgICAgICAgICAgICAgICBuID0gbi5wYXJlbnROb2RlIHx8IG4uaG9zdAogICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKG4pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24geXQodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGR0KHQpLmdldENvbXB1dGVkU3R5bGUodCkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gd3QodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIFsidGFibGUiLCAidGQiLCAidGgiXS5pbmRleE9mKGh0KHQpKSA+PSAwCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIEV0KHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoKHV0KHQpID8gdC5vd25lckRvY3VtZW50IDogdC5kb2N1bWVudCkgfHwgd2luZG93LmRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gQXQodCkgewogICAgICAgICAgICAgICAgcmV0dXJuICJodG1sIiA9PT0gaHQodCkgPyB0IDogdC5hc3NpZ25lZFNsb3QgfHwgdC5wYXJlbnROb2RlIHx8IChwdCh0KSA/IHQuaG9zdCA6IG51bGwpIHx8IEV0KHQpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFR0KHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmdCh0KSAmJiAiZml4ZWQiICE9PSB5dCh0KS5wb3NpdGlvbiA/IHQub2Zmc2V0UGFyZW50IDogbnVsbAogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBPdCh0KSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBlID0gZHQodCksIGkgPSBUdCh0KTsgaSAmJiB3dChpKSAmJiAic3RhdGljIiA9PT0geXQoaSkucG9zaXRpb247KSBpID0gVHQoaSk7CiAgICAgICAgICAgICAgICByZXR1cm4gaSAmJiAoImh0bWwiID09PSBodChpKSB8fCAiYm9keSIgPT09IGh0KGkpICYmICJzdGF0aWMiID09PSB5dChpKS5wb3NpdGlvbikgPyBlIDogaSB8fCBmdW5jdGlvbiAodCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gLTEgIT09IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJmaXJlZm94Iik7CiAgICAgICAgICAgICAgICAgICAgaWYgKC0xICE9PSBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIlRyaWRlbnQiKSAmJiBmdCh0KSAmJiAiZml4ZWQiID09PSB5dCh0KS5wb3NpdGlvbikgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IEF0KHQpOyBmdChpKSAmJiBbImh0bWwiLCAiYm9keSJdLmluZGV4T2YoaHQoaSkpIDwgMDspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSB5dChpKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJub25lIiAhPT0gbi50cmFuc2Zvcm0gfHwgIm5vbmUiICE9PSBuLnBlcnNwZWN0aXZlIHx8ICJwYWludCIgPT09IG4uY29udGFpbiB8fCAtMSAhPT0gWyJ0cmFuc2Zvcm0iLCAicGVyc3BlY3RpdmUiXS5pbmRleE9mKG4ud2lsbENoYW5nZSkgfHwgZSAmJiAiZmlsdGVyIiA9PT0gbi53aWxsQ2hhbmdlIHx8IGUgJiYgbi5maWx0ZXIgJiYgIm5vbmUiICE9PSBuLmZpbHRlcikgcmV0dXJuIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpLnBhcmVudE5vZGUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICAgICAgICAgIH0odCkgfHwgZQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBDdCh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gWyJ0b3AiLCAiYm90dG9tIl0uaW5kZXhPZih0KSA+PSAwID8gIngiIDogInkiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGt0ID0gTWF0aC5tYXgsCiAgICAgICAgICAgICAgICBMdCA9IE1hdGgubWluLAogICAgICAgICAgICAgICAgeHQgPSBNYXRoLnJvdW5kOwoKICAgICAgICAgICAgZnVuY3Rpb24gRHQodCwgZSwgaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGt0KHQsIEx0KGUsIGkpKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBTdCh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgewogICAgICAgICAgICAgICAgICAgIHRvcDogMCwKICAgICAgICAgICAgICAgICAgICByaWdodDogMCwKICAgICAgICAgICAgICAgICAgICBib3R0b206IDAsCiAgICAgICAgICAgICAgICAgICAgbGVmdDogMAogICAgICAgICAgICAgICAgfSwgdCkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gSXQodCwgZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGUucmVkdWNlKChmdW5jdGlvbiAoZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBlW2ldID0gdCwgZQogICAgICAgICAgICAgICAgfSksIHt9KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBOdCA9IHsKICAgICAgICAgICAgICAgIG5hbWU6ICJhcnJvdyIsCiAgICAgICAgICAgICAgICBlbmFibGVkOiAhMCwKICAgICAgICAgICAgICAgIHBoYXNlOiAibWFpbiIsCiAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSwgaSA9IHQuc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0Lm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0Lm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBpLmVsZW1lbnRzLmFycm93LAogICAgICAgICAgICAgICAgICAgICAgICByID0gaS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBndChpLnBsYWNlbWVudCksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBDdChhKSwKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFtvdCwgc3RdLmluZGV4T2YoYSkgPj0gMCA/ICJoZWlnaHQiIDogIndpZHRoIjsKICAgICAgICAgICAgICAgICAgICBpZiAobyAmJiByKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gZnVuY3Rpb24gKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdCgibnVtYmVyIiAhPSB0eXBlb2YgKHQgPSAiZnVuY3Rpb24iID09IHR5cGVvZiB0ID8gdChPYmplY3QuYXNzaWduKHt9LCBlLnJlY3RzLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiBlLnBsYWNlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpIDogdCkgPyB0IDogSXQodCwgcnQpKQogICAgICAgICAgICAgICAgICAgICAgICB9KHMucGFkZGluZywgaSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gYnQobyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gInkiID09PSBsID8gaXQgOiBvdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAieSIgPT09IGwgPyBudCA6IHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGkucmVjdHMucmVmZXJlbmNlW2NdICsgaS5yZWN0cy5yZWZlcmVuY2VbbF0gLSByW2xdIC0gaS5yZWN0cy5wb3BwZXJbY10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gcltsXSAtIGkucmVjdHMucmVmZXJlbmNlW2xdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IE90KG8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXyA9IGcgPyAieSIgPT09IGwgPyBnLmNsaWVudEhlaWdodCB8fCAwIDogZy5jbGllbnRXaWR0aCB8fCAwIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBwIC8gMiAtIG0gLyAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGhbdV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gXyAtIGRbY10gLSBoW2ZdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IF8gLyAyIC0gZFtjXSAvIDIgKyBiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRSA9IER0KHYsIHcsIHkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgIGkubW9kaWZpZXJzRGF0YVtuXSA9ICgoZSA9IHt9KVtBXSA9IEUsIGUuY2VudGVyT2Zmc2V0ID0gRSAtIHcsIGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVmZmVjdDogZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0Lm9wdGlvbnMuZWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHZvaWQgMCA9PT0gaSA/ICJbZGF0YS1wb3BwZXItYXJyb3ddIiA6IGk7CiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBuICYmICgic3RyaW5nIiAhPSB0eXBlb2YgbiB8fCAobiA9IGUuZWxlbWVudHMucG9wcGVyLnF1ZXJ5U2VsZWN0b3IobikpKSAmJiB2dChlLmVsZW1lbnRzLnBvcHBlciwgbikgJiYgKGUuZWxlbWVudHMuYXJyb3cgPSBuKQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlcXVpcmVzOiBbInBvcHBlck9mZnNldHMiXSwKICAgICAgICAgICAgICAgIHJlcXVpcmVzSWZFeGlzdHM6IFsicHJldmVudE92ZXJmbG93Il0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGp0ID0gewogICAgICAgICAgICAgICAgICAgIHRvcDogImF1dG8iLAogICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAiYXV0byIsCiAgICAgICAgICAgICAgICAgICAgbGVmdDogImF1dG8iCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24gTXQodCkgewogICAgICAgICAgICAgICAgdmFyIGUsIGkgPSB0LnBvcHBlciwKICAgICAgICAgICAgICAgICAgICBuID0gdC5wb3BwZXJSZWN0LAogICAgICAgICAgICAgICAgICAgIHMgPSB0LnBsYWNlbWVudCwKICAgICAgICAgICAgICAgICAgICBvID0gdC5vZmZzZXRzLAogICAgICAgICAgICAgICAgICAgIHIgPSB0LnBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgIGEgPSB0LmdwdUFjY2VsZXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICBsID0gdC5hZGFwdGl2ZSwKICAgICAgICAgICAgICAgICAgICBjID0gdC5yb3VuZE9mZnNldHMsCiAgICAgICAgICAgICAgICAgICAgaCA9ICEwID09PSBjID8gZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdC55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB4dCh4dChlICogbikgLyBuKSB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogeHQoeHQoaSAqIG4pIC8gbikgfHwgMAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfShvKSA6ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGMgPyBjKG8pIDogbywKICAgICAgICAgICAgICAgICAgICBkID0gaC54LAogICAgICAgICAgICAgICAgICAgIHUgPSB2b2lkIDAgPT09IGQgPyAwIDogZCwKICAgICAgICAgICAgICAgICAgICBmID0gaC55LAogICAgICAgICAgICAgICAgICAgIHAgPSB2b2lkIDAgPT09IGYgPyAwIDogZiwKICAgICAgICAgICAgICAgICAgICBtID0gby5oYXNPd25Qcm9wZXJ0eSgieCIpLAogICAgICAgICAgICAgICAgICAgIGcgPSBvLmhhc093blByb3BlcnR5KCJ5IiksCiAgICAgICAgICAgICAgICAgICAgXyA9IG90LAogICAgICAgICAgICAgICAgICAgIGIgPSBpdCwKICAgICAgICAgICAgICAgICAgICB2ID0gd2luZG93OwogICAgICAgICAgICAgICAgaWYgKGwpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IE90KGkpLAogICAgICAgICAgICAgICAgICAgICAgICB3ID0gImNsaWVudEhlaWdodCIsCiAgICAgICAgICAgICAgICAgICAgICAgIEUgPSAiY2xpZW50V2lkdGgiOwogICAgICAgICAgICAgICAgICAgIHkgPT09IGR0KGkpICYmICJzdGF0aWMiICE9PSB5dCh5ID0gRXQoaSkpLnBvc2l0aW9uICYmICh3ID0gInNjcm9sbEhlaWdodCIsIEUgPSAic2Nyb2xsV2lkdGgiKSwgeSA9IHksIHMgPT09IGl0ICYmIChiID0gbnQsIHAgLT0geVt3XSAtIG4uaGVpZ2h0LCBwICo9IGEgPyAxIDogLTEpLCBzID09PSBvdCAmJiAoXyA9IHN0LCB1IC09IHlbRV0gLSBuLndpZHRoLCB1ICo9IGEgPyAxIDogLTEpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgQSwgVCA9IE9iamVjdC5hc3NpZ24oewogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByCiAgICAgICAgICAgICAgICB9LCBsICYmIGp0KTsKICAgICAgICAgICAgICAgIHJldHVybiBhID8gT2JqZWN0LmFzc2lnbih7fSwgVCwgKChBID0ge30pW2JdID0gZyA/ICIwIiA6ICIiLCBBW19dID0gbSA/ICIwIiA6ICIiLCBBLnRyYW5zZm9ybSA9ICh2LmRldmljZVBpeGVsUmF0aW8gfHwgMSkgPCAyID8gInRyYW5zbGF0ZSgiICsgdSArICJweCwgIiArIHAgKyAicHgpIiA6ICJ0cmFuc2xhdGUzZCgiICsgdSArICJweCwgIiArIHAgKyAicHgsIDApIiwgQSkpIDogT2JqZWN0LmFzc2lnbih7fSwgVCwgKChlID0ge30pW2JdID0gZyA/IHAgKyAicHgiIDogIiIsIGVbX10gPSBtID8gdSArICJweCIgOiAiIiwgZS50cmFuc2Zvcm0gPSAiIiwgZSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIFB0ID0gewogICAgICAgICAgICAgICAgbmFtZTogImNvbXB1dGVTdHlsZXMiLAogICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICBwaGFzZTogImJlZm9yZVdyaXRlIiwKICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbiAodCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGkuZ3B1QWNjZWxlcmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gdm9pZCAwID09PSBuIHx8IG4sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBpLmFkYXB0aXZlLAogICAgICAgICAgICAgICAgICAgICAgICByID0gdm9pZCAwID09PSBvIHx8IG8sCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpLnJvdW5kT2Zmc2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHZvaWQgMCA9PT0gYSB8fCBhLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiBndChlLnBsYWNlbWVudCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BwZXI6IGUuZWxlbWVudHMucG9wcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wcGVyUmVjdDogZS5yZWN0cy5wb3BwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHVBY2NlbGVyYXRpb246IHMKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBudWxsICE9IGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzICYmIChlLnN0eWxlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBlLnN0eWxlcy5wb3BwZXIsIE10KE9iamVjdC5hc3NpZ24oe30sIGMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0czogZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBlLm9wdGlvbnMuc3RyYXRlZ3ksCiAgICAgICAgICAgICAgICAgICAgICAgIGFkYXB0aXZlOiByLAogICAgICAgICAgICAgICAgICAgICAgICByb3VuZE9mZnNldHM6IGwKICAgICAgICAgICAgICAgICAgICB9KSkpKSwgbnVsbCAhPSBlLm1vZGlmaWVyc0RhdGEuYXJyb3cgJiYgKGUuc3R5bGVzLmFycm93ID0gT2JqZWN0LmFzc2lnbih7fSwgZS5zdHlsZXMuYXJyb3csIE10KE9iamVjdC5hc3NpZ24oe30sIGMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0czogZS5tb2RpZmllcnNEYXRhLmFycm93LAogICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogImFic29sdXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgYWRhcHRpdmU6ICExLAogICAgICAgICAgICAgICAgICAgICAgICByb3VuZE9mZnNldHM6IGwKICAgICAgICAgICAgICAgICAgICB9KSkpKSwgZS5hdHRyaWJ1dGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIGUuYXR0cmlidXRlcy5wb3BwZXIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEtcG9wcGVyLXBsYWNlbWVudCI6IGUucGxhY2VtZW50CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkYXRhOiB7fQogICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgSHQgPSB7CiAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogITAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBSdCA9IHsKICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXZlbnRMaXN0ZW5lcnMiLAogICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgIHBoYXNlOiAid3JpdGUiLAogICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbiAoKSB7IH0sCiAgICAgICAgICAgICAgICAgICAgZWZmZWN0OiBmdW5jdGlvbiAodCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5pbnN0YW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0Lm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gbi5zY3JvbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gdm9pZCAwID09PSBzIHx8IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbi5yZXNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdm9pZCAwID09PSByIHx8IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZHQoZS5lbGVtZW50cy5wb3BwZXIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFtdLmNvbmNhdChlLnNjcm9sbFBhcmVudHMucmVmZXJlbmNlLCBlLnNjcm9sbFBhcmVudHMucG9wcGVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8gJiYgYy5mb3JFYWNoKChmdW5jdGlvbiAodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCBpLnVwZGF0ZSwgSHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgYSAmJiBsLmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIGkudXBkYXRlLCBIdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyAmJiBjLmZvckVhY2goKGZ1bmN0aW9uICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgaS51cGRhdGUsIEh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgYSAmJiBsLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIGkudXBkYXRlLCBIdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGRhdGE6IHt9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQnQgPSB7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogInJpZ2h0IiwKICAgICAgICAgICAgICAgICAgICByaWdodDogImxlZnQiLAogICAgICAgICAgICAgICAgICAgIGJvdHRvbTogInRvcCIsCiAgICAgICAgICAgICAgICAgICAgdG9wOiAiYm90dG9tIgogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIFd0KHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0LnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCAoZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gQnRbdF0KICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBxdCA9IHsKICAgICAgICAgICAgICAgIHN0YXJ0OiAiZW5kIiwKICAgICAgICAgICAgICAgIGVuZDogInN0YXJ0IgogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24genQodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIChmdW5jdGlvbiAodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBxdFt0XQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uICR0KHQpIHsKICAgICAgICAgICAgICAgIHZhciBlID0gZHQodCk7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ6IGUucGFnZVhPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiBlLnBhZ2VZT2Zmc2V0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFV0KHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBfdChFdCh0KSkubGVmdCArICR0KHQpLnNjcm9sbExlZnQKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gRnQodCkgewogICAgICAgICAgICAgICAgdmFyIGUgPSB5dCh0KSwKICAgICAgICAgICAgICAgICAgICBpID0gZS5vdmVyZmxvdywKICAgICAgICAgICAgICAgICAgICBuID0gZS5vdmVyZmxvd1gsCiAgICAgICAgICAgICAgICAgICAgcyA9IGUub3ZlcmZsb3dZOwogICAgICAgICAgICAgICAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChpICsgcyArIG4pCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFZ0KHQsIGUpIHsKICAgICAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICAgICAgdm9pZCAwID09PSBlICYmIChlID0gW10pOwogICAgICAgICAgICAgICAgdmFyIG4gPSBmdW5jdGlvbiB0KGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyJodG1sIiwgImJvZHkiLCAiI2RvY3VtZW50Il0uaW5kZXhPZihodChlKSkgPj0gMCA/IGUub3duZXJEb2N1bWVudC5ib2R5IDogZnQoZSkgJiYgRnQoZSkgPyBlIDogdChBdChlKSkKICAgICAgICAgICAgICAgIH0odCksCiAgICAgICAgICAgICAgICAgICAgcyA9IG4gPT09IChudWxsID09IChpID0gdC5vd25lckRvY3VtZW50KSA/IHZvaWQgMCA6IGkuYm9keSksCiAgICAgICAgICAgICAgICAgICAgbyA9IGR0KG4pLAogICAgICAgICAgICAgICAgICAgIHIgPSBzID8gW29dLmNvbmNhdChvLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBGdChuKSA/IG4gOiBbXSkgOiBuLAogICAgICAgICAgICAgICAgICAgIGEgPSBlLmNvbmNhdChyKTsKICAgICAgICAgICAgICAgIHJldHVybiBzID8gYSA6IGEuY29uY2F0KFZ0KEF0KHIpKSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gS3QodCkgewogICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHQsIHsKICAgICAgICAgICAgICAgICAgICBsZWZ0OiB0LngsCiAgICAgICAgICAgICAgICAgICAgdG9wOiB0LnksCiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IHQueCArIHQud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiB0LnkgKyB0LmhlaWdodAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gWHQodCwgZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICJ2aWV3cG9ydCIgPT09IGUgPyBLdChmdW5jdGlvbiAodCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gZHQodCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBFdCh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUudmlzdWFsVmlld3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpLmNsaWVudFdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gaS5jbGllbnRIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gMDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiAmJiAocyA9IG4ud2lkdGgsIG8gPSBuLmhlaWdodCwgL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSB8fCAociA9IG4ub2Zmc2V0TGVmdCwgYSA9IG4ub2Zmc2V0VG9wKSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogbywKICAgICAgICAgICAgICAgICAgICAgICAgeDogciArIFV0KHQpLAogICAgICAgICAgICAgICAgICAgICAgICB5OiBhCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSh0KSkgOiBmdChlKSA/IGZ1bmN0aW9uICh0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBfdCh0KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50b3AgPSBlLnRvcCArIHQuY2xpZW50VG9wLCBlLmxlZnQgPSBlLmxlZnQgKyB0LmNsaWVudExlZnQsIGUuYm90dG9tID0gZS50b3AgKyB0LmNsaWVudEhlaWdodCwgZS5yaWdodCA9IGUubGVmdCArIHQuY2xpZW50V2lkdGgsIGUud2lkdGggPSB0LmNsaWVudFdpZHRoLCBlLmhlaWdodCA9IHQuY2xpZW50SGVpZ2h0LCBlLnggPSBlLmxlZnQsIGUueSA9IGUudG9wLCBlCiAgICAgICAgICAgICAgICB9KGUpIDogS3QoZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZSwgaSA9IEV0KHQpLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gJHQodCksCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBudWxsID09IChlID0gdC5vd25lckRvY3VtZW50KSA/IHZvaWQgMCA6IGUuYm9keSwKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGt0KGkuc2Nyb2xsV2lkdGgsIGkuY2xpZW50V2lkdGgsIHMgPyBzLnNjcm9sbFdpZHRoIDogMCwgcyA/IHMuY2xpZW50V2lkdGggOiAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGt0KGkuc2Nyb2xsSGVpZ2h0LCBpLmNsaWVudEhlaWdodCwgcyA/IHMuc2Nyb2xsSGVpZ2h0IDogMCwgcyA/IHMuY2xpZW50SGVpZ2h0IDogMCksCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAtbi5zY3JvbGxMZWZ0ICsgVXQodCksCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAtbi5zY3JvbGxUb3A7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJydGwiID09PSB5dChzIHx8IGkpLmRpcmVjdGlvbiAmJiAoYSArPSBrdChpLmNsaWVudFdpZHRoLCBzID8gcy5jbGllbnRXaWR0aCA6IDApIC0gbyksIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IG8sCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogciwKICAgICAgICAgICAgICAgICAgICAgICAgeDogYSwKICAgICAgICAgICAgICAgICAgICAgICAgeTogbAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0oRXQodCkpKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBZdCh0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdC5zcGxpdCgiLSIpWzFdCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIFF0KHQpIHsKICAgICAgICAgICAgICAgIHZhciBlLCBpID0gdC5yZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgbiA9IHQuZWxlbWVudCwKICAgICAgICAgICAgICAgICAgICBzID0gdC5wbGFjZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgbyA9IHMgPyBndChzKSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgciA9IHMgPyBZdChzKSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgYSA9IGkueCArIGkud2lkdGggLyAyIC0gbi53aWR0aCAvIDIsCiAgICAgICAgICAgICAgICAgICAgbCA9IGkueSArIGkuaGVpZ2h0IC8gMiAtIG4uaGVpZ2h0IC8gMjsKICAgICAgICAgICAgICAgIHN3aXRjaCAobykgewogICAgICAgICAgICAgICAgICAgIGNhc2UgaXQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogaS55IC0gbi5oZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSBudDoKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBpLnkgKyBpLmhlaWdodAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlIHN0OgogICAgICAgICAgICAgICAgICAgICAgICBlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogaS54ICsgaS53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGwKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSBvdDoKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGkueCAtIG4ud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBsCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBpLngsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBpLnkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGMgPSBvID8gQ3QobykgOiBudWxsOwogICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gYykgewogICAgICAgICAgICAgICAgICAgIHZhciBoID0gInkiID09PSBjID8gImhlaWdodCIgOiAid2lkdGgiOwogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocikgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJzdGFydCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlW2NdID0gZVtjXSAtIChpW2hdIC8gMiAtIG5baF0gLyAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVtjXSA9IGVbY10gKyAoaVtoXSAvIDIgLSBuW2hdIC8gMikKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBHdCh0LCBlKSB7CiAgICAgICAgICAgICAgICB2b2lkIDAgPT09IGUgJiYgKGUgPSB7fSk7CiAgICAgICAgICAgICAgICB2YXIgaSA9IGUsCiAgICAgICAgICAgICAgICAgICAgbiA9IGkucGxhY2VtZW50LAogICAgICAgICAgICAgICAgICAgIHMgPSB2b2lkIDAgPT09IG4gPyB0LnBsYWNlbWVudCA6IG4sCiAgICAgICAgICAgICAgICAgICAgbyA9IGkuYm91bmRhcnksCiAgICAgICAgICAgICAgICAgICAgciA9IHZvaWQgMCA9PT0gbyA/ICJjbGlwcGluZ1BhcmVudHMiIDogbywKICAgICAgICAgICAgICAgICAgICBhID0gaS5yb290Qm91bmRhcnksCiAgICAgICAgICAgICAgICAgICAgbCA9IHZvaWQgMCA9PT0gYSA/ICJ2aWV3cG9ydCIgOiBhLAogICAgICAgICAgICAgICAgICAgIGMgPSBpLmVsZW1lbnRDb250ZXh0LAogICAgICAgICAgICAgICAgICAgIGggPSB2b2lkIDAgPT09IGMgPyAicG9wcGVyIiA6IGMsCiAgICAgICAgICAgICAgICAgICAgZCA9IGkuYWx0Qm91bmRhcnksCiAgICAgICAgICAgICAgICAgICAgdSA9IHZvaWQgMCAhPT0gZCAmJiBkLAogICAgICAgICAgICAgICAgICAgIGYgPSBpLnBhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgcCA9IHZvaWQgMCA9PT0gZiA/IDAgOiBmLAogICAgICAgICAgICAgICAgICAgIG0gPSBTdCgibnVtYmVyIiAhPSB0eXBlb2YgcCA/IHAgOiBJdChwLCBydCkpLAogICAgICAgICAgICAgICAgICAgIGcgPSAicG9wcGVyIiA9PT0gaCA/ICJyZWZlcmVuY2UiIDogInBvcHBlciIsCiAgICAgICAgICAgICAgICAgICAgXyA9IHQuZWxlbWVudHMucmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgIGIgPSB0LnJlY3RzLnBvcHBlciwKICAgICAgICAgICAgICAgICAgICB2ID0gdC5lbGVtZW50c1t1ID8gZyA6IGhdLAogICAgICAgICAgICAgICAgICAgIHkgPSBmdW5jdGlvbiAodCwgZSwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9ICJjbGlwcGluZ1BhcmVudHMiID09PSBlID8gZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gVnQoQXQodCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBbImFic29sdXRlIiwgImZpeGVkIl0uaW5kZXhPZih5dCh0KS5wb3NpdGlvbikgPj0gMCAmJiBmdCh0KSA/IE90KHQpIDogdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1dChpKSA/IGUuZmlsdGVyKChmdW5jdGlvbiAodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1dCh0KSAmJiB2dCh0LCBpKSAmJiAiYm9keSIgIT09IGh0KHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkgOiBbXQogICAgICAgICAgICAgICAgICAgICAgICB9KHQpIDogW10uY29uY2F0KGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IFtdLmNvbmNhdChuLCBbaV0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gcy5yZWR1Y2UoKGZ1bmN0aW9uIChlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBYdCh0LCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZS50b3AgPSBrdChuLnRvcCwgZS50b3ApLCBlLnJpZ2h0ID0gTHQobi5yaWdodCwgZS5yaWdodCksIGUuYm90dG9tID0gTHQobi5ib3R0b20sIGUuYm90dG9tKSwgZS5sZWZ0ID0ga3Qobi5sZWZ0LCBlLmxlZnQpLCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgWHQodCwgbykpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gci53aWR0aCA9IHIucmlnaHQgLSByLmxlZnQsIHIuaGVpZ2h0ID0gci5ib3R0b20gLSByLnRvcCwgci54ID0gci5sZWZ0LCByLnkgPSByLnRvcCwgcgogICAgICAgICAgICAgICAgICAgIH0odXQodikgPyB2IDogdi5jb250ZXh0RWxlbWVudCB8fCBFdCh0LmVsZW1lbnRzLnBvcHBlciksIHIsIGwpLAogICAgICAgICAgICAgICAgICAgIHcgPSBfdChfKSwKICAgICAgICAgICAgICAgICAgICBFID0gUXQoewogICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U6IHcsCiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGIsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmF0ZWd5OiAiYWJzb2x1dGUiLAogICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHMKICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICBBID0gS3QoT2JqZWN0LmFzc2lnbih7fSwgYiwgRSkpLAogICAgICAgICAgICAgICAgICAgIFQgPSAicG9wcGVyIiA9PT0gaCA/IEEgOiB3LAogICAgICAgICAgICAgICAgICAgIE8gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogeS50b3AgLSBULnRvcCArIG0udG9wLAogICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IFQuYm90dG9tIC0geS5ib3R0b20gKyBtLmJvdHRvbSwKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogeS5sZWZ0IC0gVC5sZWZ0ICsgbS5sZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICByaWdodDogVC5yaWdodCAtIHkucmlnaHQgKyBtLnJpZ2h0CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBDID0gdC5tb2RpZmllcnNEYXRhLm9mZnNldDsKICAgICAgICAgICAgICAgIGlmICgicG9wcGVyIiA9PT0gaCAmJiBDKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSBDW3NdOwogICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKE8pLmZvckVhY2goKGZ1bmN0aW9uICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gW3N0LCBudF0uaW5kZXhPZih0KSA+PSAwID8gMSA6IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IFtpdCwgbnRdLmluZGV4T2YodCkgPj0gMCA/ICJ5IiA6ICJ4IjsKICAgICAgICAgICAgICAgICAgICAgICAgT1t0XSArPSBrW2ldICogZQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIE8KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gWnQodCwgZSkgewogICAgICAgICAgICAgICAgdm9pZCAwID09PSBlICYmIChlID0ge30pOwogICAgICAgICAgICAgICAgdmFyIGkgPSBlLAogICAgICAgICAgICAgICAgICAgIG4gPSBpLnBsYWNlbWVudCwKICAgICAgICAgICAgICAgICAgICBzID0gaS5ib3VuZGFyeSwKICAgICAgICAgICAgICAgICAgICBvID0gaS5yb290Qm91bmRhcnksCiAgICAgICAgICAgICAgICAgICAgciA9IGkucGFkZGluZywKICAgICAgICAgICAgICAgICAgICBhID0gaS5mbGlwVmFyaWF0aW9ucywKICAgICAgICAgICAgICAgICAgICBsID0gaS5hbGxvd2VkQXV0b1BsYWNlbWVudHMsCiAgICAgICAgICAgICAgICAgICAgYyA9IHZvaWQgMCA9PT0gbCA/IGx0IDogbCwKICAgICAgICAgICAgICAgICAgICBoID0gWXQobiksCiAgICAgICAgICAgICAgICAgICAgZCA9IGggPyBhID8gYXQgOiBhdC5maWx0ZXIoKGZ1bmN0aW9uICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBZdCh0KSA9PT0gaAogICAgICAgICAgICAgICAgICAgIH0pKSA6IHJ0LAogICAgICAgICAgICAgICAgICAgIHUgPSBkLmZpbHRlcigoZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMuaW5kZXhPZih0KSA+PSAwCiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgMCA9PT0gdS5sZW5ndGggJiYgKHUgPSBkKTsKICAgICAgICAgICAgICAgIHZhciBmID0gdS5yZWR1Y2UoKGZ1bmN0aW9uIChlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVbaV0gPSBHdCh0LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRhcnk6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RCb3VuZGFyeTogbywKICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogcgogICAgICAgICAgICAgICAgICAgIH0pW2d0KGkpXSwgZQogICAgICAgICAgICAgICAgfSksIHt9KTsKICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhmKS5zb3J0KChmdW5jdGlvbiAodCwgZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmW3RdIC0gZltlXQogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIEp0ID0gewogICAgICAgICAgICAgICAgbmFtZTogImZsaXAiLAogICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICBwaGFzZTogIm1haW4iLAogICAgICAgICAgICAgICAgZm46IGZ1bmN0aW9uICh0KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5uYW1lOwogICAgICAgICAgICAgICAgICAgIGlmICghZS5tb2RpZmllcnNEYXRhW25dLl9za2lwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHMgPSBpLm1haW5BeGlzLCBvID0gdm9pZCAwID09PSBzIHx8IHMsIHIgPSBpLmFsdEF4aXMsIGEgPSB2b2lkIDAgPT09IHIgfHwgciwgbCA9IGkuZmFsbGJhY2tQbGFjZW1lbnRzLCBjID0gaS5wYWRkaW5nLCBoID0gaS5ib3VuZGFyeSwgZCA9IGkucm9vdEJvdW5kYXJ5LCB1ID0gaS5hbHRCb3VuZGFyeSwgZiA9IGkuZmxpcFZhcmlhdGlvbnMsIHAgPSB2b2lkIDAgPT09IGYgfHwgZiwgbSA9IGkuYWxsb3dlZEF1dG9QbGFjZW1lbnRzLCBnID0gZS5vcHRpb25zLnBsYWNlbWVudCwgXyA9IGd0KGcpLCBiID0gbCB8fCAoXyAhPT0gZyAmJiBwID8gZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiYXV0byIgPT09IGd0KHQpKSByZXR1cm4gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IFd0KHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFt6dCh0KSwgZSwgenQoZSldCiAgICAgICAgICAgICAgICAgICAgICAgIH0oZykgOiBbV3QoZyldKSwgdiA9IFtnXS5jb25jYXQoYikucmVkdWNlKChmdW5jdGlvbiAodCwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuY29uY2F0KCJhdXRvIiA9PT0gZ3QoaSkgPyBadChlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5OiBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RCb3VuZGFyeTogZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsaXBWYXJpYXRpb25zOiBwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50czogbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBpKQogICAgICAgICAgICAgICAgICAgICAgICB9KSwgW10pLCB5ID0gZS5yZWN0cy5yZWZlcmVuY2UsIHcgPSBlLnJlY3RzLnBvcHBlciwgRSA9IG5ldyBNYXAsIEEgPSAhMCwgVCA9IHZbMF0sIE8gPSAwOyBPIDwgdi5sZW5ndGg7IE8rKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEMgPSB2W09dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBndChDKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMID0gInN0YXJ0IiA9PT0gWXQoQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IFtpdCwgbnRdLmluZGV4T2YoaykgPj0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEID0geCA/ICJ3aWR0aCIgOiAiaGVpZ2h0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTID0gR3QoZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IEMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5OiBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290Qm91bmRhcnk6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdEJvdW5kYXJ5OiB1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSSA9IHggPyBMID8gc3QgOiBvdCA6IEwgPyBudCA6IGl0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgeVtEXSA+IHdbRF0gJiYgKEkgPSBXdChJKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgTiA9IFd0KEkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvICYmIGoucHVzaChTW2tdIDw9IDApLCBhICYmIGoucHVzaChTW0ldIDw9IDAsIFNbTl0gPD0gMCksIGouZXZlcnkoKGZ1bmN0aW9uICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQgPSBDLCBBID0gITE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUuc2V0KEMsIGopCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBNID0gZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHYuZmluZCgoZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBFLmdldChlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkpIHJldHVybiBpLnNsaWNlKDAsIHQpLmV2ZXJ5KChmdW5jdGlvbiAodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKSByZXR1cm4gVCA9IGUsICJicmVhayIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIFAgPSBwID8gMyA6IDE7IFAgPiAwICYmICJicmVhayIgIT09IE0oUCk7IFAtLSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUucGxhY2VtZW50ICE9PSBUICYmIChlLm1vZGlmaWVyc0RhdGFbbl0uX3NraXAgPSAhMCwgZS5wbGFjZW1lbnQgPSBULCBlLnJlc2V0ID0gITApCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlcXVpcmVzSWZFeGlzdHM6IFsib2Zmc2V0Il0sCiAgICAgICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICAgICAgX3NraXA6ICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CgogICAgICAgICAgICBmdW5jdGlvbiB0ZSh0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBpICYmIChpID0gewogICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgeTogMAogICAgICAgICAgICAgICAgfSksIHsKICAgICAgICAgICAgICAgICAgICB0b3A6IHQudG9wIC0gZS5oZWlnaHQgLSBpLnksCiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IHQucmlnaHQgLSBlLndpZHRoICsgaS54LAogICAgICAgICAgICAgICAgICAgIGJvdHRvbTogdC5ib3R0b20gLSBlLmhlaWdodCArIGkueSwKICAgICAgICAgICAgICAgICAgICBsZWZ0OiB0LmxlZnQgLSBlLndpZHRoIC0gaS54CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGVlKHQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBbaXQsIHN0LCBudCwgb3RdLnNvbWUoKGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRbZV0gPj0gMAogICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGllID0gewogICAgICAgICAgICAgICAgbmFtZTogImhpZGUiLAogICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICBwaGFzZTogIm1haW4iLAogICAgICAgICAgICAgICAgcmVxdWlyZXNJZkV4aXN0czogWyJwcmV2ZW50T3ZlcmZsb3ciXSwKICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbiAodCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGUucmVjdHMucmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBzID0gZS5yZWN0cy5wb3BwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBlLm1vZGlmaWVyc0RhdGEucHJldmVudE92ZXJmbG93LAogICAgICAgICAgICAgICAgICAgICAgICByID0gR3QoZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICJyZWZlcmVuY2UiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICBhID0gR3QoZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6ICEwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICBsID0gdGUociwgbiksCiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0ZShhLCBzLCBvKSwKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGVlKGwpLAogICAgICAgICAgICAgICAgICAgICAgICBkID0gZWUoYyk7CiAgICAgICAgICAgICAgICAgICAgZS5tb2RpZmllcnNEYXRhW2ldID0gewogICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VDbGlwcGluZ09mZnNldHM6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvcHBlckVzY2FwZU9mZnNldHM6IGMsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVmZXJlbmNlSGlkZGVuOiBoLAogICAgICAgICAgICAgICAgICAgICAgICBoYXNQb3BwZXJFc2NhcGVkOiBkCiAgICAgICAgICAgICAgICAgICAgfSwgZS5hdHRyaWJ1dGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIGUuYXR0cmlidXRlcy5wb3BwZXIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEtcG9wcGVyLXJlZmVyZW5jZS1oaWRkZW4iOiBoLAogICAgICAgICAgICAgICAgICAgICAgICAiZGF0YS1wb3BwZXItZXNjYXBlZCI6IGQKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbmUgPSB7CiAgICAgICAgICAgICAgICAgICAgbmFtZTogIm9mZnNldCIsCiAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICAgICAgcGhhc2U6ICJtYWluIiwKICAgICAgICAgICAgICAgICAgICByZXF1aXJlczogWyJwb3BwZXJPZmZzZXRzIl0sCiAgICAgICAgICAgICAgICAgICAgZm46IGZ1bmN0aW9uICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB0Lm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGkub2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHZvaWQgMCA9PT0gcyA/IFswLCAwXSA6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbHQucmVkdWNlKChmdW5jdGlvbiAodCwgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0W2ldID0gZnVuY3Rpb24gKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBndCh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBbb3QsIGl0XS5pbmRleE9mKG4pID49IDAgPyAtMSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgaSA/IGkoT2JqZWN0LmFzc2lnbih7fSwgZSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpIDogaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBvWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG9bMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByID0gciB8fCAwLCBhID0gKGEgfHwgMCkgKiBzLCBbb3QsIHN0XS5pbmRleE9mKG4pID49IDAgPyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0oaSwgZS5yZWN0cywgbyksIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7fSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gcltlLnBsYWNlbWVudF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYS54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGEueTsKICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyAmJiAoZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMueCArPSBsLCBlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy55ICs9IGMpLCBlLm1vZGlmaWVyc0RhdGFbbl0gPSByCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNlID0gewogICAgICAgICAgICAgICAgICAgIG5hbWU6ICJwb3BwZXJPZmZzZXRzIiwKICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhMCwKICAgICAgICAgICAgICAgICAgICBwaGFzZTogInJlYWQiLAogICAgICAgICAgICAgICAgICAgIGZuOiBmdW5jdGlvbiAodCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHQuc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5uYW1lOwogICAgICAgICAgICAgICAgICAgICAgICBlLm1vZGlmaWVyc0RhdGFbaV0gPSBRdCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U6IGUucmVjdHMucmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogZS5yZWN0cy5wb3BwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJhdGVneTogImFic29sdXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogZS5wbGFjZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGRhdGE6IHt9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgb2UgPSB7CiAgICAgICAgICAgICAgICAgICAgbmFtZTogInByZXZlbnRPdmVyZmxvdyIsCiAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICAgICAgcGhhc2U6ICJtYWluIiwKICAgICAgICAgICAgICAgICAgICBmbjogZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSB0LnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0Lm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gaS5tYWluQXhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB2b2lkIDAgPT09IHMgfHwgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBpLmFsdEF4aXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gdm9pZCAwICE9PSByICYmIHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gaS5ib3VuZGFyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBpLnJvb3RCb3VuZGFyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBpLmFsdEJvdW5kYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGkucGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBpLnRldGhlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSB2b2lkIDAgPT09IHUgfHwgdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBpLnRldGhlck9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB2b2lkIDAgPT09IHAgPyAwIDogcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBHdChlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRhcnk6IGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdEJvdW5kYXJ5OiBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXyA9IGd0KGUucGxhY2VtZW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBZdChlLnBsYWNlbWVudCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gIWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gQ3QoXyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gIngiID09PSB5ID8gInkiIDogIngiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRSA9IGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQSA9IGUucmVjdHMucmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVCA9IGUucmVjdHMucG9wcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTyA9ICJmdW5jdGlvbiIgPT0gdHlwZW9mIG0gPyBtKE9iamVjdC5hc3NpZ24oe30sIGUucmVjdHMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IGUucGxhY2VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkgOiBtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobyB8fCBhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSAieSIgPT09IHkgPyBpdCA6IG90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMID0gInkiID09PSB5ID8gbnQgOiBzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9ICJ5IiA9PT0geSA/ICJoZWlnaHQiIDogIndpZHRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCA9IEVbeV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBFW3ldICsgZ1trXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSSA9IEVbeV0gLSBnW0xdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOID0gZiA/IC1UW3hdIC8gMiA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSAic3RhcnQiID09PSBiID8gQVt4XSA6IFRbeF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE0gPSAic3RhcnQiID09PSBiID8gLVRbeF0gOiAtQVt4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUCA9IGUuZWxlbWVudHMuYXJyb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEggPSBmICYmIFAgPyBidChQKSA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgPSBlLm1vZGlmaWVyc0RhdGFbImFycm93I3BlcnNpc3RlbnQiXSA/IGUubW9kaWZpZXJzRGF0YVsiYXJyb3cjcGVyc2lzdGVudCJdLnBhZGRpbmcgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQiA9IFJba10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFcgPSBSW0xdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gRHQoMCwgQVt4XSwgSFt4XSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHogPSB2ID8gQVt4XSAvIDIgLSBOIC0gcSAtIEIgLSBPIDogaiAtIHEgLSBCIC0gTywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCA9IHYgPyAtQVt4XSAvIDIgKyBOICsgcSArIFcgKyBPIDogTSArIHEgKyBXICsgTywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVSA9IGUuZWxlbWVudHMuYXJyb3cgJiYgT3QoZS5lbGVtZW50cy5hcnJvdyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEYgPSBVID8gInkiID09PSB5ID8gVS5jbGllbnRUb3AgfHwgMCA6IFUuY2xpZW50TGVmdCB8fCAwIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgViA9IGUubW9kaWZpZXJzRGF0YS5vZmZzZXQgPyBlLm1vZGlmaWVyc0RhdGEub2Zmc2V0W2UucGxhY2VtZW50XVt5XSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEsgPSBFW3ldICsgeiAtIFYgLSBGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYID0gRVt5XSArICQgLSBWOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBZID0gRHQoZiA/IEx0KFMsIEspIDogUywgRCwgZiA/IGt0KEksIFgpIDogSSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVbeV0gPSBZLCBDW3ldID0gWSAtIEQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIFEgPSAieCIgPT09IHkgPyBpdCA6IG90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRyA9ICJ4IiA9PT0geSA/IG50IDogc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaID0gRVt3XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEogPSBaICsgZ1tRXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR0ID0gWiAtIGdbR10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldCA9IER0KGYgPyBMdChKLCBLKSA6IEosIFosIGYgPyBrdCh0dCwgWCkgOiB0dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVbd10gPSBldCwgQ1t3XSA9IGV0IC0gWgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubW9kaWZpZXJzRGF0YVtuXSA9IEMKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNJZkV4aXN0czogWyJvZmZzZXQiXQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIHJlKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gaSAmJiAoaSA9ICExKTsKICAgICAgICAgICAgICAgIHZhciBuLCBzLCBvID0gRXQoZSksCiAgICAgICAgICAgICAgICAgICAgciA9IF90KHQpLAogICAgICAgICAgICAgICAgICAgIGEgPSBmdChlKSwKICAgICAgICAgICAgICAgICAgICBsID0gewogICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxMZWZ0OiAwLAogICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A6IDAKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuIChhIHx8ICFhICYmICFpKSAmJiAoKCJib2R5IiAhPT0gaHQoZSkgfHwgRnQobykpICYmIChsID0gKG4gPSBlKSAhPT0gZHQobikgJiYgZnQobikgPyB7CiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdDogKHMgPSBuKS5zY3JvbGxMZWZ0LAogICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvcDogcy5zY3JvbGxUb3AKICAgICAgICAgICAgICAgIH0gOiAkdChuKSksIGZ0KGUpID8gKChjID0gX3QoZSkpLnggKz0gZS5jbGllbnRMZWZ0LCBjLnkgKz0gZS5jbGllbnRUb3ApIDogbyAmJiAoYy54ID0gVXQobykpKSwgewogICAgICAgICAgICAgICAgICAgIHg6IHIubGVmdCArIGwuc2Nyb2xsTGVmdCAtIGMueCwKICAgICAgICAgICAgICAgICAgICB5OiByLnRvcCArIGwuc2Nyb2xsVG9wIC0gYy55LAogICAgICAgICAgICAgICAgICAgIHdpZHRoOiByLndpZHRoLAogICAgICAgICAgICAgICAgICAgIGhlaWdodDogci5oZWlnaHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgYWUgPSB7CiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICJib3R0b20iLAogICAgICAgICAgICAgICAgbW9kaWZpZXJzOiBbXSwKICAgICAgICAgICAgICAgIHN0cmF0ZWd5OiAiYWJzb2x1dGUiCiAgICAgICAgICAgIH07CgogICAgICAgICAgICBmdW5jdGlvbiBsZSgpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIHQgPSBhcmd1bWVudHMubGVuZ3RoLCBlID0gbmV3IEFycmF5KHQpLCBpID0gMDsgaSA8IHQ7IGkrKykgZVtpXSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgICAgICAgIHJldHVybiAhZS5zb21lKChmdW5jdGlvbiAodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhKHQgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QpCiAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gY2UodCkgewogICAgICAgICAgICAgICAgdm9pZCAwID09PSB0ICYmICh0ID0ge30pOwogICAgICAgICAgICAgICAgdmFyIGUgPSB0LAogICAgICAgICAgICAgICAgICAgIGkgPSBlLmRlZmF1bHRNb2RpZmllcnMsCiAgICAgICAgICAgICAgICAgICAgbiA9IHZvaWQgMCA9PT0gaSA/IFtdIDogaSwKICAgICAgICAgICAgICAgICAgICBzID0gZS5kZWZhdWx0T3B0aW9ucywKICAgICAgICAgICAgICAgICAgICBvID0gdm9pZCAwID09PSBzID8gYWUgOiBzOwogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0LCBlLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdm9pZCAwID09PSBpICYmIChpID0gbyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHMsIHIsIGEgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogImJvdHRvbSIsCiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyZWRNb2RpZmllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBhZSwgbyksCiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyc0RhdGE6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50czogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOiB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wcGVyOiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IHt9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBjID0gITEsCiAgICAgICAgICAgICAgICAgICAgICAgIGggPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9wdGlvbnM6IGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCgpLCBhLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBvLCBhLm9wdGlvbnMsIGkpLCBhLnNjcm9sbFBhcmVudHMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTogdXQodCkgPyBWdCh0KSA6IHQuY29udGV4dEVsZW1lbnQgPyBWdCh0LmNvbnRleHRFbGVtZW50KSA6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BwZXI6IFZ0KGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcywgciwgYyA9IGZ1bmN0aW9uICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbmV3IE1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbmV3IFNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbiAodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2V0KHQubmFtZSwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgdC5mb3JFYWNoKChmdW5jdGlvbiAodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuaGFzKHQubmFtZSkgfHwgZnVuY3Rpb24gdChzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkuYWRkKHMubmFtZSksIFtdLmNvbmNhdChzLnJlcXVpcmVzIHx8IFtdLCBzLnJlcXVpcmVzSWZFeGlzdHMgfHwgW10pLmZvckVhY2goKGZ1bmN0aW9uIChuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWkuaGFzKG4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBlLmdldChuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzICYmIHQocykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLCBuLnB1c2gocykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIG4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN0LnJlZHVjZSgoZnVuY3Rpb24gKHQsIGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmNvbmNhdChlLmZpbHRlcigoZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5waGFzZSA9PT0gaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgW10pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSgocyA9IFtdLmNvbmNhdChuLCBhLm9wdGlvbnMubW9kaWZpZXJzKSwgciA9IHMucmVkdWNlKChmdW5jdGlvbiAodCwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHRbZS5uYW1lXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRbZS5uYW1lXSA9IGkgPyBPYmplY3QuYXNzaWduKHt9LCBpLCBlLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBpLm9wdGlvbnMsIGUub3B0aW9ucyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBPYmplY3QuYXNzaWduKHt9LCBpLmRhdGEsIGUuZGF0YSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBlLCB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHt9KSwgT2JqZWN0LmtleXMocikubWFwKChmdW5jdGlvbiAodCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gclt0XQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLm9yZGVyZWRNb2RpZmllcnMgPSBjLmZpbHRlcigoZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZW5hYmxlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgYS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goKGZ1bmN0aW9uICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gdC5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQub3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB2b2lkIDAgPT09IGkgPyB7fSA6IGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5lZmZlY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgiZnVuY3Rpb24iID09IHR5cGVvZiBzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHMoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2U6IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLnB1c2gobyB8fCBmdW5jdGlvbiAoKSB7IH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksIGgudXBkYXRlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVVwZGF0ZTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGEuZWxlbWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdC5yZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdC5wb3BwZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZShlLCBpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5yZWN0cyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U6IHJlKGUsIE90KGkpLCAiZml4ZWQiID09PSBhLm9wdGlvbnMuc3RyYXRlZ3kpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHBlcjogYnQoaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGEucmVzZXQgPSAhMSwgYS5wbGFjZW1lbnQgPSBhLm9wdGlvbnMucGxhY2VtZW50LCBhLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaCgoZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5tb2RpZmllcnNEYXRhW3QubmFtZV0gPSBPYmplY3QuYXNzaWduKHt9LCB0LmRhdGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IGEub3JkZXJlZE1vZGlmaWVycy5sZW5ndGg7IG4rKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoITAgIT09IGEucmVzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBhLm9yZGVyZWRNb2RpZmllcnNbbl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gcy5mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBzLm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gdm9pZCAwID09PSByID8ge30gOiByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IHMubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIiA9PSB0eXBlb2YgbyAmJiAoYSA9IG8oewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlOiBoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIHx8IGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGEucmVzZXQgPSAhMSwgbiA9IC0xCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiAocyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGguZm9yY2VVcGRhdGUoKSwgdChhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByIHx8IChyID0gbmV3IFByb21pc2UoKGZ1bmN0aW9uICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB2b2lkIDAsIHQocygpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpLCByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkKCksIGMgPSAhMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGlmICghbGUodCwgZSkpIHJldHVybiBoOwoKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBkKCkgewogICAgICAgICAgICAgICAgICAgICAgICBsLmZvckVhY2goKGZ1bmN0aW9uICh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSwgbCA9IFtdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBoLnNldE9wdGlvbnMoaSkudGhlbigoZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIWMgJiYgaS5vbkZpcnN0VXBkYXRlICYmIGkub25GaXJzdFVwZGF0ZSh0KQogICAgICAgICAgICAgICAgICAgIH0pKSwgaAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBoZSA9IGNlKCksCiAgICAgICAgICAgICAgICBkZSA9IGNlKHsKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TW9kaWZpZXJzOiBbUnQsIHNlLCBQdCwgbXRdCiAgICAgICAgICAgICAgICB9KSwKICAgICAgICAgICAgICAgIHVlID0gY2UoewogICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNb2RpZmllcnM6IFtSdCwgc2UsIFB0LCBtdCwgbmUsIEp0LCBvZSwgTnQsIGllXQogICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICBmZSA9IE9iamVjdC5mcmVlemUoewogICAgICAgICAgICAgICAgICAgIF9fcHJvdG9fXzogbnVsbCwKICAgICAgICAgICAgICAgICAgICBwb3BwZXJHZW5lcmF0b3I6IGNlLAogICAgICAgICAgICAgICAgICAgIGRldGVjdE92ZXJmbG93OiBHdCwKICAgICAgICAgICAgICAgICAgICBjcmVhdGVQb3BwZXJCYXNlOiBoZSwKICAgICAgICAgICAgICAgICAgICBjcmVhdGVQb3BwZXI6IHVlLAogICAgICAgICAgICAgICAgICAgIGNyZWF0ZVBvcHBlckxpdGU6IGRlLAogICAgICAgICAgICAgICAgICAgIHRvcDogaXQsCiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBudCwKICAgICAgICAgICAgICAgICAgICByaWdodDogc3QsCiAgICAgICAgICAgICAgICAgICAgbGVmdDogb3QsCiAgICAgICAgICAgICAgICAgICAgYXV0bzogImF1dG8iLAogICAgICAgICAgICAgICAgICAgIGJhc2VQbGFjZW1lbnRzOiBydCwKICAgICAgICAgICAgICAgICAgICBzdGFydDogInN0YXJ0IiwKICAgICAgICAgICAgICAgICAgICBlbmQ6ICJlbmQiLAogICAgICAgICAgICAgICAgICAgIGNsaXBwaW5nUGFyZW50czogImNsaXBwaW5nUGFyZW50cyIsCiAgICAgICAgICAgICAgICAgICAgdmlld3BvcnQ6ICJ2aWV3cG9ydCIsCiAgICAgICAgICAgICAgICAgICAgcG9wcGVyOiAicG9wcGVyIiwKICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U6ICJyZWZlcmVuY2UiLAogICAgICAgICAgICAgICAgICAgIHZhcmlhdGlvblBsYWNlbWVudHM6IGF0LAogICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudHM6IGx0LAogICAgICAgICAgICAgICAgICAgIGJlZm9yZVJlYWQ6ICJiZWZvcmVSZWFkIiwKICAgICAgICAgICAgICAgICAgICByZWFkOiAicmVhZCIsCiAgICAgICAgICAgICAgICAgICAgYWZ0ZXJSZWFkOiAiYWZ0ZXJSZWFkIiwKICAgICAgICAgICAgICAgICAgICBiZWZvcmVNYWluOiAiYmVmb3JlTWFpbiIsCiAgICAgICAgICAgICAgICAgICAgbWFpbjogIm1haW4iLAogICAgICAgICAgICAgICAgICAgIGFmdGVyTWFpbjogImFmdGVyTWFpbiIsCiAgICAgICAgICAgICAgICAgICAgYmVmb3JlV3JpdGU6ICJiZWZvcmVXcml0ZSIsCiAgICAgICAgICAgICAgICAgICAgd3JpdGU6ICJ3cml0ZSIsCiAgICAgICAgICAgICAgICAgICAgYWZ0ZXJXcml0ZTogImFmdGVyV3JpdGUiLAogICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyUGhhc2VzOiBjdCwKICAgICAgICAgICAgICAgICAgICBhcHBseVN0eWxlczogbXQsCiAgICAgICAgICAgICAgICAgICAgYXJyb3c6IE50LAogICAgICAgICAgICAgICAgICAgIGNvbXB1dGVTdHlsZXM6IFB0LAogICAgICAgICAgICAgICAgICAgIGV2ZW50TGlzdGVuZXJzOiBSdCwKICAgICAgICAgICAgICAgICAgICBmbGlwOiBKdCwKICAgICAgICAgICAgICAgICAgICBoaWRlOiBpZSwKICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IG5lLAogICAgICAgICAgICAgICAgICAgIHBvcHBlck9mZnNldHM6IHNlLAogICAgICAgICAgICAgICAgICAgIHByZXZlbnRPdmVyZmxvdzogb2UKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjb25zdCBwZSA9IG5ldyBSZWdFeHAoIkFycm93VXB8QXJyb3dEb3dufEVzY2FwZSIpLAogICAgICAgICAgICAgICAgbWUgPSBnKCkgPyAidG9wLWVuZCIgOiAidG9wLXN0YXJ0IiwKICAgICAgICAgICAgICAgIGdlID0gZygpID8gInRvcC1zdGFydCIgOiAidG9wLWVuZCIsCiAgICAgICAgICAgICAgICBfZSA9IGcoKSA/ICJib3R0b20tZW5kIiA6ICJib3R0b20tc3RhcnQiLAogICAgICAgICAgICAgICAgYmUgPSBnKCkgPyAiYm90dG9tLXN0YXJ0IiA6ICJib3R0b20tZW5kIiwKICAgICAgICAgICAgICAgIHZlID0gZygpID8gImxlZnQtc3RhcnQiIDogInJpZ2h0LXN0YXJ0IiwKICAgICAgICAgICAgICAgIHllID0gZygpID8gInJpZ2h0LXN0YXJ0IiA6ICJsZWZ0LXN0YXJ0IiwKICAgICAgICAgICAgICAgIHdlID0gewogICAgICAgICAgICAgICAgICAgIG9mZnNldDogWzAsIDJdLAogICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5OiAiY2xpcHBpbmdQYXJlbnRzIiwKICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U6ICJ0b2dnbGUiLAogICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICJkeW5hbWljIiwKICAgICAgICAgICAgICAgICAgICBwb3BwZXJDb25maWc6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgYXV0b0Nsb3NlOiAhMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEVlID0gewogICAgICAgICAgICAgICAgICAgIG9mZnNldDogIihhcnJheXxzdHJpbmd8ZnVuY3Rpb24pIiwKICAgICAgICAgICAgICAgICAgICBib3VuZGFyeTogIihzdHJpbmd8ZWxlbWVudCkiLAogICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTogIihzdHJpbmd8ZWxlbWVudHxvYmplY3QpIiwKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAic3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICBwb3BwZXJDb25maWc6ICIobnVsbHxvYmplY3R8ZnVuY3Rpb24pIiwKICAgICAgICAgICAgICAgICAgICBhdXRvQ2xvc2U6ICIoYm9vbGVhbnxzdHJpbmcpIgogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgY2xhc3MgQWUgZXh0ZW5kcyBCIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcih0KSwgdGhpcy5fcG9wcGVyID0gbnVsbCwgdGhpcy5fY29uZmlnID0gdGhpcy5fZ2V0Q29uZmlnKGUpLCB0aGlzLl9tZW51ID0gdGhpcy5fZ2V0TWVudUVsZW1lbnQoKSwgdGhpcy5faW5OYXZiYXIgPSB0aGlzLl9kZXRlY3ROYXZiYXIoKSwgdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcnMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdGljIGdldCBEZWZhdWx0KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB3ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gRWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBnZXQgTkFNRSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImRyb3Bkb3duIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdG9nZ2xlKCkgewogICAgICAgICAgICAgICAgICAgIGgodGhpcy5fZWxlbWVudCkgfHwgKHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzaG93IikgPyB0aGlzLmhpZGUoKSA6IHRoaXMuc2hvdygpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2hvdygpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaCh0aGlzLl9lbGVtZW50KSB8fCB0aGlzLl9tZW51LmNsYXNzTGlzdC5jb250YWlucygic2hvdyIpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IEFlLmdldFBhcmVudEZyb21FbGVtZW50KHRoaXMuX2VsZW1lbnQpLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogdGhpcy5fZWxlbWVudAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGlmICghUC50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJzaG93LmJzLmRyb3Bkb3duIiwgZSkuZGVmYXVsdFByZXZlbnRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faW5OYXZiYXIpIFUuc2V0RGF0YUF0dHJpYnV0ZSh0aGlzLl9tZW51LCAicG9wcGVyIiwgIm5vbmUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBmZSkgdGhyb3cgbmV3IFR5cGVFcnJvcigiQm9vdHN0cmFwJ3MgZHJvcGRvd25zIHJlcXVpcmUgUG9wcGVyIChodHRwczovL3BvcHBlci5qcy5vcmcpIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZSA9IHRoaXMuX2VsZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyZW50IiA9PT0gdGhpcy5fY29uZmlnLnJlZmVyZW5jZSA/IGUgPSB0IDogcih0aGlzLl9jb25maWcucmVmZXJlbmNlKSA/IGUgPSBhKHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UpIDogIm9iamVjdCIgPT0gdHlwZW9mIHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UgJiYgKGUgPSB0aGlzLl9jb25maWcucmVmZXJlbmNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLl9nZXRQb3BwZXJDb25maWcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gaS5tb2RpZmllcnMuZmluZCh0ID0+ICJhcHBseVN0eWxlcyIgPT09IHQubmFtZSAmJiAhMSA9PT0gdC5lbmFibGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BvcHBlciA9IHVlKGUsIHRoaXMuX21lbnUsIGkpLCBuICYmIFUuc2V0RGF0YUF0dHJpYnV0ZSh0aGlzLl9tZW51LCAicG9wcGVyIiwgInN0YXRpYyIpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIm9udG91Y2hzdGFydCIgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmICF0LmNsb3Nlc3QoIi5uYXZiYXItbmF2IikgJiYgW10uY29uY2F0KC4uLmRvY3VtZW50LmJvZHkuY2hpbGRyZW4pLmZvckVhY2godCA9PiBQLm9uKHQsICJtb3VzZW92ZXIiLCB1KSksIHRoaXMuX2VsZW1lbnQuZm9jdXMoKSwgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLCAhMCksIHRoaXMuX21lbnUuY2xhc3NMaXN0LnRvZ2dsZSgic2hvdyIpLCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNob3ciKSwgUC50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJzaG93bi5icy5kcm9wZG93biIsIGUpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaGlkZSgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaCh0aGlzLl9lbGVtZW50KSB8fCAhdGhpcy5fbWVudS5jbGFzc0xpc3QuY29udGFpbnMoInNob3ciKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXQ6IHRoaXMuX2VsZW1lbnQKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRlSGlkZSh0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGlzcG9zZSgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9wb3BwZXIgJiYgdGhpcy5fcG9wcGVyLmRlc3Ryb3koKSwgc3VwZXIuZGlzcG9zZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1cGRhdGUoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5OYXZiYXIgPSB0aGlzLl9kZXRlY3ROYXZiYXIoKSwgdGhpcy5fcG9wcGVyICYmIHRoaXMuX3BvcHBlci51cGRhdGUoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2FkZEV2ZW50TGlzdGVuZXJzKCkgewogICAgICAgICAgICAgICAgICAgIFAub24odGhpcy5fZWxlbWVudCwgImNsaWNrLmJzLmRyb3Bkb3duIiwgdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQucHJldmVudERlZmF1bHQoKSwgdGhpcy50b2dnbGUoKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfY29tcGxldGVIaWRlKHQpIHsKICAgICAgICAgICAgICAgICAgICBQLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgImhpZGUuYnMuZHJvcGRvd24iLCB0KS5kZWZhdWx0UHJldmVudGVkIHx8ICgib250b3VjaHN0YXJ0IiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgW10uY29uY2F0KC4uLmRvY3VtZW50LmJvZHkuY2hpbGRyZW4pLmZvckVhY2godCA9PiBQLm9mZih0LCAibW91c2VvdmVyIiwgdSkpLCB0aGlzLl9wb3BwZXIgJiYgdGhpcy5fcG9wcGVyLmRlc3Ryb3koKSwgdGhpcy5fbWVudS5jbGFzc0xpc3QucmVtb3ZlKCJzaG93IiksIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic2hvdyIpLCB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsICJmYWxzZSIpLCBVLnJlbW92ZURhdGFBdHRyaWJ1dGUodGhpcy5fbWVudSwgInBvcHBlciIpLCBQLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgImhpZGRlbi5icy5kcm9wZG93biIsIHQpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2dldENvbmZpZyh0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29uc3RydWN0b3IuRGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgLi4uVS5nZXREYXRhQXR0cmlidXRlcyh0aGlzLl9lbGVtZW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgLi4udAogICAgICAgICAgICAgICAgICAgIH0sIGwoImRyb3Bkb3duIiwgdCwgdGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0VHlwZSksICJvYmplY3QiID09IHR5cGVvZiB0LnJlZmVyZW5jZSAmJiAhcih0LnJlZmVyZW5jZSkgJiYgImZ1bmN0aW9uIiAhPSB0eXBlb2YgdC5yZWZlcmVuY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCJkcm9wZG93biIudG9VcHBlckNhc2UoKSArICc6IE9wdGlvbiAicmVmZXJlbmNlIiBwcm92aWRlZCB0eXBlICJvYmplY3QiIHdpdGhvdXQgYSByZXF1aXJlZCAiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiBtZXRob2QuJyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9nZXRNZW51RWxlbWVudCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdC5uZXh0KHRoaXMuX2VsZW1lbnQsICIuZHJvcGRvd24tbWVudSIpWzBdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfZ2V0UGxhY2VtZW50KCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLl9lbGVtZW50LnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuY2xhc3NMaXN0LmNvbnRhaW5zKCJkcm9wZW5kIikpIHJldHVybiB2ZTsKICAgICAgICAgICAgICAgICAgICBpZiAodC5jbGFzc0xpc3QuY29udGFpbnMoImRyb3BzdGFydCIpKSByZXR1cm4geWU7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9ICJlbmQiID09PSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX21lbnUpLmdldFByb3BlcnR5VmFsdWUoIi0tYnMtcG9zaXRpb24iKS50cmltKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuY2xhc3NMaXN0LmNvbnRhaW5zKCJkcm9wdXAiKSA/IGUgPyBnZSA6IG1lIDogZSA/IGJlIDogX2UKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9kZXRlY3ROYXZiYXIoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwgIT09IHRoaXMuX2VsZW1lbnQuY2xvc2VzdCgiLm5hdmJhciIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfZ2V0T2Zmc2V0KCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0CiAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMuX2NvbmZpZzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIHQgPyB0LnNwbGl0KCIsIikubWFwKHQgPT4gTnVtYmVyLnBhcnNlSW50KHQsIDEwKSkgOiAiZnVuY3Rpb24iID09IHR5cGVvZiB0ID8gZSA9PiB0KGUsIHRoaXMuX2VsZW1lbnQpIDogdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2dldFBvcHBlckNvbmZpZygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gewogICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHRoaXMuX2dldFBsYWNlbWVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnM6IFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAicHJldmVudE92ZXJmbG93IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyeTogdGhpcy5fY29uZmlnLmJvdW5kYXJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJvZmZzZXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5fZ2V0T2Zmc2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIHJldHVybiAic3RhdGljIiA9PT0gdGhpcy5fY29uZmlnLmRpc3BsYXkgJiYgKHQubW9kaWZpZXJzID0gW3sKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogImFwcGx5U3R5bGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITEKICAgICAgICAgICAgICAgICAgICB9XSksIHsKICAgICAgICAgICAgICAgICAgICAgICAgLi4udCwKICAgICAgICAgICAgICAgICAgICAgICAgLi4uImZ1bmN0aW9uIiA9PSB0eXBlb2YgdGhpcy5fY29uZmlnLnBvcHBlckNvbmZpZyA/IHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcodCkgOiB0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX3NlbGVjdE1lbnVJdGVtKHsKICAgICAgICAgICAgICAgICAgICBrZXk6IGUsCiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBpCiAgICAgICAgICAgICAgICB9KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHQuZmluZCgiLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06bm90KC5kaXNhYmxlZCk6bm90KDpkaXNhYmxlZCkiLCB0aGlzLl9tZW51KS5maWx0ZXIoYyk7CiAgICAgICAgICAgICAgICAgICAgbi5sZW5ndGggJiYgeShuLCBpLCAiQXJyb3dEb3duIiA9PT0gZSwgIW4uaW5jbHVkZXMoaSkpLmZvY3VzKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBkcm9wZG93bkludGVyZmFjZSh0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IEFlLmdldE9yQ3JlYXRlSW5zdGFuY2UodCwgZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGlbZV0pIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCAiJHtlfSJgKTsKICAgICAgICAgICAgICAgICAgICAgICAgaVtlXSgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdGljIGpRdWVyeUludGVyZmFjZSh0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBBZS5kcm9wZG93bkludGVyZmFjZSh0aGlzLCB0KQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdGljIGNsZWFyTWVudXMoZSkgewogICAgICAgICAgICAgICAgICAgIGlmIChlICYmICgyID09PSBlLmJ1dHRvbiB8fCAia2V5dXAiID09PSBlLnR5cGUgJiYgIlRhYiIgIT09IGUua2V5KSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSB0LmZpbmQoJ1tkYXRhLWJzLXRvZ2dsZT0iZHJvcGRvd24iXScpOwogICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHQgPSAwLCBuID0gaS5sZW5ndGg7IHQgPCBuOyB0KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IEFlLmdldEluc3RhbmNlKGlbdF0pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4gfHwgITEgPT09IG4uX2NvbmZpZy5hdXRvQ2xvc2UpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW4uX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzaG93IikpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogbi5fZWxlbWVudAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGUuY29tcG9zZWRQYXRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHQuaW5jbHVkZXMobi5fbWVudSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5pbmNsdWRlcyhuLl9lbGVtZW50KSB8fCAiaW5zaWRlIiA9PT0gbi5fY29uZmlnLmF1dG9DbG9zZSAmJiAhaSB8fCAib3V0c2lkZSIgPT09IG4uX2NvbmZpZy5hdXRvQ2xvc2UgJiYgaSkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5fbWVudS5jb250YWlucyhlLnRhcmdldCkgJiYgKCJrZXl1cCIgPT09IGUudHlwZSAmJiAiVGFiIiA9PT0gZS5rZXkgfHwgL2lucHV0fHNlbGVjdHxvcHRpb258dGV4dGFyZWF8Zm9ybS9pLnRlc3QoZS50YXJnZXQudGFnTmFtZSkpKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbGljayIgPT09IGUudHlwZSAmJiAocy5jbGlja0V2ZW50ID0gZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBuLl9jb21wbGV0ZUhpZGUocykKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgZ2V0UGFyZW50RnJvbUVsZW1lbnQodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzKHQpIHx8IHQucGFyZW50Tm9kZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdGljIGRhdGFBcGlLZXlkb3duSGFuZGxlcihlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKC9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoZS50YXJnZXQudGFnTmFtZSkgPyAiU3BhY2UiID09PSBlLmtleSB8fCAiRXNjYXBlIiAhPT0gZS5rZXkgJiYgKCJBcnJvd0Rvd24iICE9PSBlLmtleSAmJiAiQXJyb3dVcCIgIT09IGUua2V5IHx8IGUudGFyZ2V0LmNsb3Nlc3QoIi5kcm9wZG93bi1tZW51IikpIDogIXBlLnRlc3QoZS5rZXkpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuY2xhc3NMaXN0LmNvbnRhaW5zKCJzaG93Iik7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFpICYmICJFc2NhcGUiID09PSBlLmtleSkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIGlmIChlLnByZXZlbnREZWZhdWx0KCksIGUuc3RvcFByb3BhZ2F0aW9uKCksIGgodGhpcykpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gKCkgPT4gdGhpcy5tYXRjaGVzKCdbZGF0YS1icy10b2dnbGU9ImRyb3Bkb3duIl0nKSA/IHRoaXMgOiB0LnByZXYodGhpcywgJ1tkYXRhLWJzLXRvZ2dsZT0iZHJvcGRvd24iXScpWzBdOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAiRXNjYXBlIiA9PT0gZS5rZXkgPyAobigpLmZvY3VzKCksIHZvaWQgQWUuY2xlYXJNZW51cygpKSA6ICJBcnJvd1VwIiA9PT0gZS5rZXkgfHwgIkFycm93RG93biIgPT09IGUua2V5ID8gKGkgfHwgbigpLmNsaWNrKCksIHZvaWQgQWUuZ2V0SW5zdGFuY2UobigpKS5fc2VsZWN0TWVudUl0ZW0oZSkpIDogdm9pZCAoaSAmJiAiU3BhY2UiICE9PSBlLmtleSB8fCBBZS5jbGVhck1lbnVzKCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgUC5vbihkb2N1bWVudCwgImtleWRvd24uYnMuZHJvcGRvd24uZGF0YS1hcGkiLCAnW2RhdGEtYnMtdG9nZ2xlPSJkcm9wZG93biJdJywgQWUuZGF0YUFwaUtleWRvd25IYW5kbGVyKSwgUC5vbihkb2N1bWVudCwgImtleWRvd24uYnMuZHJvcGRvd24uZGF0YS1hcGkiLCAiLmRyb3Bkb3duLW1lbnUiLCBBZS5kYXRhQXBpS2V5ZG93bkhhbmRsZXIpLCBQLm9uKGRvY3VtZW50LCAiY2xpY2suYnMuZHJvcGRvd24uZGF0YS1hcGkiLCBBZS5jbGVhck1lbnVzKSwgUC5vbihkb2N1bWVudCwgImtleXVwLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwgQWUuY2xlYXJNZW51cyksIFAub24oZG9jdW1lbnQsICJjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaSIsICdbZGF0YS1icy10b2dnbGU9ImRyb3Bkb3duIl0nLCAoZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgIHQucHJldmVudERlZmF1bHQoKSwgQWUuZHJvcGRvd25JbnRlcmZhY2UodGhpcykKICAgICAgICAgICAgfSkpLCBfKEFlKTsKICAgICAgICAgICAgY2xhc3MgVGUgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmJvZHkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFdpZHRoKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKHdpbmRvdy5pbm5lcldpZHRoIC0gdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhpZGUoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0V2lkdGgoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9kaXNhYmxlT3ZlckZsb3coKSwgdGhpcy5fc2V0RWxlbWVudEF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCwgInBhZGRpbmdSaWdodCIsIGUgPT4gZSArIHQpLCB0aGlzLl9zZXRFbGVtZW50QXR0cmlidXRlcygiLmZpeGVkLXRvcCwgLmZpeGVkLWJvdHRvbSwgLmlzLWZpeGVkLCAuc3RpY2t5LXRvcCIsICJwYWRkaW5nUmlnaHQiLCBlID0+IGUgKyB0KSwgdGhpcy5fc2V0RWxlbWVudEF0dHJpYnV0ZXMoIi5zdGlja3ktdG9wIiwgIm1hcmdpblJpZ2h0IiwgZSA9PiBlIC0gdCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9kaXNhYmxlT3ZlckZsb3coKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2F2ZUluaXRpYWxBdHRyaWJ1dGUodGhpcy5fZWxlbWVudCwgIm92ZXJmbG93IiksIHRoaXMuX2VsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX3NldEVsZW1lbnRBdHRyaWJ1dGVzKHQsIGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdGhpcy5nZXRXaWR0aCgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5TWFuaXB1bGF0aW9uQ2FsbGJhY2sodCwgdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ICE9PSB0aGlzLl9lbGVtZW50ICYmIHdpbmRvdy5pbm5lcldpZHRoID4gdC5jbGllbnRXaWR0aCArIG4pIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2F2ZUluaXRpYWxBdHRyaWJ1dGUodCwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KVtlXTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zdHlsZVtlXSA9IGkoTnVtYmVyLnBhcnNlRmxvYXQocykpICsgInB4IgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXNldCgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNldEVsZW1lbnRBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQsICJvdmVyZmxvdyIpLCB0aGlzLl9yZXNldEVsZW1lbnRBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQsICJwYWRkaW5nUmlnaHQiKSwgdGhpcy5fcmVzZXRFbGVtZW50QXR0cmlidXRlcygiLmZpeGVkLXRvcCwgLmZpeGVkLWJvdHRvbSwgLmlzLWZpeGVkLCAuc3RpY2t5LXRvcCIsICJwYWRkaW5nUmlnaHQiKSwgdGhpcy5fcmVzZXRFbGVtZW50QXR0cmlidXRlcygiLnN0aWNreS10b3AiLCAibWFyZ2luUmlnaHQiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX3NhdmVJbml0aWFsQXR0cmlidXRlKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gdC5zdHlsZVtlXTsKICAgICAgICAgICAgICAgICAgICBpICYmIFUuc2V0RGF0YUF0dHJpYnV0ZSh0LCBlLCBpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXModCwgZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5TWFuaXB1bGF0aW9uQ2FsbGJhY2sodCwgdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGkgPSBVLmdldERhdGFBdHRyaWJ1dGUodCwgZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gaSA/IHQuc3R5bGUucmVtb3ZlUHJvcGVydHkoZSkgOiAoVS5yZW1vdmVEYXRhQXR0cmlidXRlKHQsIGUpLCB0LnN0eWxlW2VdID0gaSkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2FwcGx5TWFuaXB1bGF0aW9uQ2FsbGJhY2soZSwgaSkgewogICAgICAgICAgICAgICAgICAgIHIoZSkgPyBpKGUpIDogdC5maW5kKGUsIHRoaXMuX2VsZW1lbnQpLmZvckVhY2goaSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlzT3ZlcmZsb3dpbmcoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0V2lkdGgoKSA+IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBPZSA9IHsKICAgICAgICAgICAgICAgIGlzVmlzaWJsZTogITAsCiAgICAgICAgICAgICAgICBpc0FuaW1hdGVkOiAhMSwKICAgICAgICAgICAgICAgIHJvb3RFbGVtZW50OiAiYm9keSIsCiAgICAgICAgICAgICAgICBjbGlja0NhbGxiYWNrOiBudWxsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDZSA9IHsKICAgICAgICAgICAgICAgICAgICBpc1Zpc2libGU6ICJib29sZWFuIiwKICAgICAgICAgICAgICAgICAgICBpc0FuaW1hdGVkOiAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgICAgICAgcm9vdEVsZW1lbnQ6ICIoZWxlbWVudHxzdHJpbmcpIiwKICAgICAgICAgICAgICAgICAgICBjbGlja0NhbGxiYWNrOiAiKGZ1bmN0aW9ufG51bGwpIgogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgY2xhc3Mga2UgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IodCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyh0KSwgdGhpcy5faXNBcHBlbmRlZCA9ICExLCB0aGlzLl9lbGVtZW50ID0gbnVsbAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2hvdyh0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29uZmlnLmlzVmlzaWJsZSA/ICh0aGlzLl9hcHBlbmQoKSwgdGhpcy5fY29uZmlnLmlzQW5pbWF0ZWQgJiYgZih0aGlzLl9nZXRFbGVtZW50KCkpLCB0aGlzLl9nZXRFbGVtZW50KCkuY2xhc3NMaXN0LmFkZCgic2hvdyIpLCB0aGlzLl9lbXVsYXRlQW5pbWF0aW9uKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgYih0KQogICAgICAgICAgICAgICAgICAgIH0pKSA6IGIodCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhpZGUodCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5pc1Zpc2libGUgPyAodGhpcy5fZ2V0RWxlbWVudCgpLmNsYXNzTGlzdC5yZW1vdmUoInNob3ciKSwgdGhpcy5fZW11bGF0ZUFuaW1hdGlvbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcG9zZSgpLCBiKHQpCiAgICAgICAgICAgICAgICAgICAgfSkpIDogYih0KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2dldEVsZW1lbnQoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9lbGVtZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5jbGFzc05hbWUgPSAibW9kYWwtYmFja2Ryb3AiLCB0aGlzLl9jb25maWcuaXNBbmltYXRlZCAmJiB0LmNsYXNzTGlzdC5hZGQoImZhZGUiKSwgdGhpcy5fZWxlbWVudCA9IHQKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9nZXRDb25maWcodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAodCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2UsCiAgICAgICAgICAgICAgICAgICAgICAgIC4uLiJvYmplY3QiID09IHR5cGVvZiB0ID8gdCA6IHt9CiAgICAgICAgICAgICAgICAgICAgfSkucm9vdEVsZW1lbnQgPSBhKHQucm9vdEVsZW1lbnQpLCBsKCJiYWNrZHJvcCIsIHQsIENlKSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2FwcGVuZCgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc0FwcGVuZGVkIHx8ICh0aGlzLl9jb25maWcucm9vdEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZ2V0RWxlbWVudCgpKSwgUC5vbih0aGlzLl9nZXRFbGVtZW50KCksICJtb3VzZWRvd24uYnMuYmFja2Ryb3AiLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGIodGhpcy5fY29uZmlnLmNsaWNrQ2FsbGJhY2spCiAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuX2lzQXBwZW5kZWQgPSAhMCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRpc3Bvc2UoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXNBcHBlbmRlZCAmJiAoUC5vZmYodGhpcy5fZWxlbWVudCwgIm1vdXNlZG93bi5icy5iYWNrZHJvcCIpLCB0aGlzLl9lbGVtZW50LnJlbW92ZSgpLCB0aGlzLl9pc0FwcGVuZGVkID0gITEpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfZW11bGF0ZUFuaW1hdGlvbih0KSB7CiAgICAgICAgICAgICAgICAgICAgdih0LCB0aGlzLl9nZXRFbGVtZW50KCksIHRoaXMuX2NvbmZpZy5pc0FuaW1hdGVkKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IExlID0gewogICAgICAgICAgICAgICAgYmFja2Ryb3A6ICEwLAogICAgICAgICAgICAgICAga2V5Ym9hcmQ6ICEwLAogICAgICAgICAgICAgICAgZm9jdXM6ICEwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB4ZSA9IHsKICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcDogIihib29sZWFufHN0cmluZykiLAogICAgICAgICAgICAgICAgICAgIGtleWJvYXJkOiAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgICAgICAgZm9jdXM6ICJib29sZWFuIgogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgY2xhc3MgRGUgZXh0ZW5kcyBCIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGUsIGkpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcihlKSwgdGhpcy5fY29uZmlnID0gdGhpcy5fZ2V0Q29uZmlnKGkpLCB0aGlzLl9kaWFsb2cgPSB0LmZpbmRPbmUoIi5tb2RhbC1kaWFsb2ciLCB0aGlzLl9lbGVtZW50KSwgdGhpcy5fYmFja2Ryb3AgPSB0aGlzLl9pbml0aWFsaXplQmFja0Ryb3AoKSwgdGhpcy5faXNTaG93biA9ICExLCB0aGlzLl9pZ25vcmVCYWNrZHJvcENsaWNrID0gITEsIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9ICExLCB0aGlzLl9zY3JvbGxCYXIgPSBuZXcgVGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTGUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBnZXQgTkFNRSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm1vZGFsIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdG9nZ2xlKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5faXNTaG93biA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzaG93KHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc1Nob3duIHx8IHRoaXMuX2lzVHJhbnNpdGlvbmluZyB8fCBQLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgInNob3cuYnMubW9kYWwiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXQ6IHQKICAgICAgICAgICAgICAgICAgICB9KS5kZWZhdWx0UHJldmVudGVkIHx8ICh0aGlzLl9pc1Nob3duID0gITAsIHRoaXMuX2lzQW5pbWF0ZWQoKSAmJiAodGhpcy5faXNUcmFuc2l0aW9uaW5nID0gITApLCB0aGlzLl9zY3JvbGxCYXIuaGlkZSgpLCBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoIm1vZGFsLW9wZW4iKSwgdGhpcy5fYWRqdXN0RGlhbG9nKCksIHRoaXMuX3NldEVzY2FwZUV2ZW50KCksIHRoaXMuX3NldFJlc2l6ZUV2ZW50KCksIFAub24odGhpcy5fZWxlbWVudCwgImNsaWNrLmRpc21pc3MuYnMubW9kYWwiLCAnW2RhdGEtYnMtZGlzbWlzcz0ibW9kYWwiXScsIHQgPT4gdGhpcy5oaWRlKHQpKSwgUC5vbih0aGlzLl9kaWFsb2csICJtb3VzZWRvd24uZGlzbWlzcy5icy5tb2RhbCIsICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgUC5vbmUodGhpcy5fZWxlbWVudCwgIm1vdXNldXAuZGlzbWlzcy5icy5tb2RhbCIsIHQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC50YXJnZXQgPT09IHRoaXMuX2VsZW1lbnQgJiYgKHRoaXMuX2lnbm9yZUJhY2tkcm9wQ2xpY2sgPSAhMCkKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5fc2hvd0JhY2tkcm9wKCgpID0+IHRoaXMuX3Nob3dFbGVtZW50KHQpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhpZGUodCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIFsiQSIsICJBUkVBIl0uaW5jbHVkZXModC50YXJnZXQudGFnTmFtZSkgJiYgdC5wcmV2ZW50RGVmYXVsdCgpLCAhdGhpcy5faXNTaG93biB8fCB0aGlzLl9pc1RyYW5zaXRpb25pbmcpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBpZiAoUC50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJoaWRlLmJzLm1vZGFsIikuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzU2hvd24gPSAhMTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5faXNBbmltYXRlZCgpOwogICAgICAgICAgICAgICAgICAgIGUgJiYgKHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9ICEwKSwgdGhpcy5fc2V0RXNjYXBlRXZlbnQoKSwgdGhpcy5fc2V0UmVzaXplRXZlbnQoKSwgUC5vZmYoZG9jdW1lbnQsICJmb2N1c2luLmJzLm1vZGFsIiksIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic2hvdyIpLCBQLm9mZih0aGlzLl9lbGVtZW50LCAiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIpLCBQLm9mZih0aGlzLl9kaWFsb2csICJtb3VzZWRvd24uZGlzbWlzcy5icy5tb2RhbCIpLCB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHRoaXMuX2hpZGVNb2RhbCgpLCB0aGlzLl9lbGVtZW50LCBlKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGlzcG9zZSgpIHsKICAgICAgICAgICAgICAgICAgICBbd2luZG93LCB0aGlzLl9kaWFsb2ddLmZvckVhY2godCA9PiBQLm9mZih0LCAiLmJzLm1vZGFsIikpLCB0aGlzLl9iYWNrZHJvcC5kaXNwb3NlKCksIHN1cGVyLmRpc3Bvc2UoKSwgUC5vZmYoZG9jdW1lbnQsICJmb2N1c2luLmJzLm1vZGFsIikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhhbmRsZVVwZGF0ZSgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGp1c3REaWFsb2coKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2luaXRpYWxpemVCYWNrRHJvcCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGtlKHsKICAgICAgICAgICAgICAgICAgICAgICAgaXNWaXNpYmxlOiBCb29sZWFuKHRoaXMuX2NvbmZpZy5iYWNrZHJvcCksCiAgICAgICAgICAgICAgICAgICAgICAgIGlzQW5pbWF0ZWQ6IHRoaXMuX2lzQW5pbWF0ZWQoKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfZ2V0Q29uZmlnKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgLi4uTGUsCiAgICAgICAgICAgICAgICAgICAgICAgIC4uLlUuZ2V0RGF0YUF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCksCiAgICAgICAgICAgICAgICAgICAgICAgIC4uLiJvYmplY3QiID09IHR5cGVvZiB0ID8gdCA6IHt9CiAgICAgICAgICAgICAgICAgICAgfSwgbCgibW9kYWwiLCB0LCB4ZSksIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9zaG93RWxlbWVudChlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuX2lzQW5pbWF0ZWQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHQuZmluZE9uZSgiLm1vZGFsLWJvZHkiLCB0aGlzLl9kaWFsb2cpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSAmJiB0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFIHx8IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudCksIHRoaXMuX2VsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICJibG9jayIsIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpLCB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1tb2RhbCIsICEwKSwgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCAiZGlhbG9nIiksIHRoaXMuX2VsZW1lbnQuc2Nyb2xsVG9wID0gMCwgbiAmJiAobi5zY3JvbGxUb3AgPSAwKSwgaSAmJiBmKHRoaXMuX2VsZW1lbnQpLCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNob3ciKSwgdGhpcy5fY29uZmlnLmZvY3VzICYmIHRoaXMuX2VuZm9yY2VGb2N1cygpLCB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29uZmlnLmZvY3VzICYmIHRoaXMuX2VsZW1lbnQuZm9jdXMoKSwgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gITEsIFAudHJpZ2dlcih0aGlzLl9lbGVtZW50LCAic2hvd24uYnMubW9kYWwiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0OiBlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5fZGlhbG9nLCBpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2VuZm9yY2VGb2N1cygpIHsKICAgICAgICAgICAgICAgICAgICBQLm9mZihkb2N1bWVudCwgImZvY3VzaW4uYnMubW9kYWwiKSwgUC5vbihkb2N1bWVudCwgImZvY3VzaW4uYnMubW9kYWwiLCB0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQgPT09IHQudGFyZ2V0IHx8IHRoaXMuX2VsZW1lbnQgPT09IHQudGFyZ2V0IHx8IHRoaXMuX2VsZW1lbnQuY29udGFpbnModC50YXJnZXQpIHx8IHRoaXMuX2VsZW1lbnQuZm9jdXMoKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfc2V0RXNjYXBlRXZlbnQoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXNTaG93biA/IFAub24odGhpcy5fZWxlbWVudCwgImtleWRvd24uZGlzbWlzcy5icy5tb2RhbCIsIHQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb25maWcua2V5Ym9hcmQgJiYgIkVzY2FwZSIgPT09IHQua2V5ID8gKHQucHJldmVudERlZmF1bHQoKSwgdGhpcy5oaWRlKCkpIDogdGhpcy5fY29uZmlnLmtleWJvYXJkIHx8ICJFc2NhcGUiICE9PSB0LmtleSB8fCB0aGlzLl90cmlnZ2VyQmFja2Ryb3BUcmFuc2l0aW9uKCkKICAgICAgICAgICAgICAgICAgICB9KSA6IFAub2ZmKHRoaXMuX2VsZW1lbnQsICJrZXlkb3duLmRpc21pc3MuYnMubW9kYWwiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX3NldFJlc2l6ZUV2ZW50KCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzU2hvd24gPyBQLm9uKHdpbmRvdywgInJlc2l6ZS5icy5tb2RhbCIsICgpID0+IHRoaXMuX2FkanVzdERpYWxvZygpKSA6IFAub2ZmKHdpbmRvdywgInJlc2l6ZS5icy5tb2RhbCIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfaGlkZU1vZGFsKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICJub25lIiwgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwgITApLCB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1tb2RhbCIpLCB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgicm9sZSIpLCB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSAhMSwgdGhpcy5fYmFja2Ryb3AuaGlkZSgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgibW9kYWwtb3BlbiIpLCB0aGlzLl9yZXNldEFkanVzdG1lbnRzKCksIHRoaXMuX3Njcm9sbEJhci5yZXNldCgpLCBQLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgImhpZGRlbi5icy5tb2RhbCIpCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9zaG93QmFja2Ryb3AodCkgewogICAgICAgICAgICAgICAgICAgIFAub24odGhpcy5fZWxlbWVudCwgImNsaWNrLmRpc21pc3MuYnMubW9kYWwiLCB0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faWdub3JlQmFja2Ryb3BDbGljayA/IHRoaXMuX2lnbm9yZUJhY2tkcm9wQ2xpY2sgPSAhMSA6IHQudGFyZ2V0ID09PSB0LmN1cnJlbnRUYXJnZXQgJiYgKCEwID09PSB0aGlzLl9jb25maWcuYmFja2Ryb3AgPyB0aGlzLmhpZGUoKSA6ICJzdGF0aWMiID09PSB0aGlzLl9jb25maWcuYmFja2Ryb3AgJiYgdGhpcy5fdHJpZ2dlckJhY2tkcm9wVHJhbnNpdGlvbigpKQogICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLl9iYWNrZHJvcC5zaG93KHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfaXNBbmltYXRlZCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImZhZGUiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX3RyaWdnZXJCYWNrZHJvcFRyYW5zaXRpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKFAudHJpZ2dlcih0aGlzLl9lbGVtZW50LCAiaGlkZVByZXZlbnRlZC5icy5tb2RhbCIpLmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTGlzdDogdCwKICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0OiBlLAogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogaQogICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLl9lbGVtZW50LCBuID0gZSA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAgIW4gJiYgImhpZGRlbiIgPT09IGkub3ZlcmZsb3dZIHx8IHQuY29udGFpbnMoIm1vZGFsLXN0YXRpYyIpIHx8IChuIHx8IChpLm92ZXJmbG93WSA9ICJoaWRkZW4iKSwgdC5hZGQoIm1vZGFsLXN0YXRpYyIpLCB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5yZW1vdmUoIm1vZGFsLXN0YXRpYyIpLCBuIHx8IHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5vdmVyZmxvd1kgPSAiIgogICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9kaWFsb2cpCiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5fZGlhbG9nKSwgdGhpcy5fZWxlbWVudC5mb2N1cygpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2FkanVzdERpYWxvZygpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5fZWxlbWVudC5zY3JvbGxIZWlnaHQgPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fc2Nyb2xsQmFyLmdldFdpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlID4gMDsKICAgICAgICAgICAgICAgICAgICAoIWkgJiYgdCAmJiAhZygpIHx8IGkgJiYgIXQgJiYgZygpKSAmJiAodGhpcy5fZWxlbWVudC5zdHlsZS5wYWRkaW5nTGVmdCA9IGUgKyAicHgiKSwgKGkgJiYgIXQgJiYgIWcoKSB8fCAhaSAmJiB0ICYmIGcoKSkgJiYgKHRoaXMuX2VsZW1lbnQuc3R5bGUucGFkZGluZ1JpZ2h0ID0gZSArICJweCIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfcmVzZXRBZGp1c3RtZW50cygpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnBhZGRpbmdMZWZ0ID0gIiIsIHRoaXMuX2VsZW1lbnQuc3R5bGUucGFkZGluZ1JpZ2h0ID0gIiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UodCwgZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IERlLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gaVt0XSkgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkICIke3R9ImApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaVt0XShlKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgUC5vbihkb2N1bWVudCwgImNsaWNrLmJzLm1vZGFsLmRhdGEtYXBpIiwgJ1tkYXRhLWJzLXRvZ2dsZT0ibW9kYWwiXScsIChmdW5jdGlvbiAodCkgewogICAgICAgICAgICAgICAgY29uc3QgZSA9IHModGhpcyk7CiAgICAgICAgICAgICAgICBbIkEiLCAiQVJFQSJdLmluY2x1ZGVzKHRoaXMudGFnTmFtZSkgJiYgdC5wcmV2ZW50RGVmYXVsdCgpLCBQLm9uZShlLCAic2hvdy5icy5tb2RhbCIsIHQgPT4gewogICAgICAgICAgICAgICAgICAgIHQuZGVmYXVsdFByZXZlbnRlZCB8fCBQLm9uZShlLCAiaGlkZGVuLmJzLm1vZGFsIiwgKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBjKHRoaXMpICYmIHRoaXMuZm9jdXMoKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9KSwgRGUuZ2V0T3JDcmVhdGVJbnN0YW5jZShlKS50b2dnbGUodGhpcykKICAgICAgICAgICAgfSkpLCBfKERlKTsKICAgICAgICAgICAgY29uc3QgU2UgPSB7CiAgICAgICAgICAgICAgICBiYWNrZHJvcDogITAsCiAgICAgICAgICAgICAgICBrZXlib2FyZDogITAsCiAgICAgICAgICAgICAgICBzY3JvbGw6ICExCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBJZSA9IHsKICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcDogImJvb2xlYW4iLAogICAgICAgICAgICAgICAgICAgIGtleWJvYXJkOiAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsOiAiYm9vbGVhbiIKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGNsYXNzIE5lIGV4dGVuZHMgQiB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3Rvcih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIodCksIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyhlKSwgdGhpcy5faXNTaG93biA9ICExLCB0aGlzLl9iYWNrZHJvcCA9IHRoaXMuX2luaXRpYWxpemVCYWNrRHJvcCgpLCB0aGlzLl9hZGRFdmVudExpc3RlbmVycygpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgZ2V0IE5BTUUoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJvZmZjYW52YXMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0b2dnbGUodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3duID8gdGhpcy5oaWRlKCkgOiB0aGlzLnNob3codCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNob3codCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzU2hvd24gfHwgUC50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJzaG93LmJzLm9mZmNhbnZhcyIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogdAogICAgICAgICAgICAgICAgICAgIH0pLmRlZmF1bHRQcmV2ZW50ZWQgfHwgKHRoaXMuX2lzU2hvd24gPSAhMCwgdGhpcy5fZWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gInZpc2libGUiLCB0aGlzLl9iYWNrZHJvcC5zaG93KCksIHRoaXMuX2NvbmZpZy5zY3JvbGwgfHwgKChuZXcgVGUpLmhpZGUoKSwgdGhpcy5fZW5mb3JjZUZvY3VzT25FbGVtZW50KHRoaXMuX2VsZW1lbnQpKSwgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiksIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLW1vZGFsIiwgITApLCB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsICJkaWFsb2ciKSwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzaG93IiksIHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBQLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgInNob3duLmJzLm9mZmNhbnZhcyIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXQ6IHQKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9lbGVtZW50LCAhMCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBoaWRlKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzU2hvd24gJiYgKFAudHJpZ2dlcih0aGlzLl9lbGVtZW50LCAiaGlkZS5icy5vZmZjYW52YXMiKS5kZWZhdWx0UHJldmVudGVkIHx8IChQLm9mZihkb2N1bWVudCwgImZvY3VzaW4uYnMub2ZmY2FudmFzIiksIHRoaXMuX2VsZW1lbnQuYmx1cigpLCB0aGlzLl9pc1Nob3duID0gITEsIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic2hvdyIpLCB0aGlzLl9iYWNrZHJvcC5oaWRlKCksIHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCAhMCksIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLW1vZGFsIiksIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJyb2xlIiksIHRoaXMuX2VsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iLCB0aGlzLl9jb25maWcuc2Nyb2xsIHx8IChuZXcgVGUpLnJlc2V0KCksIFAudHJpZ2dlcih0aGlzLl9lbGVtZW50LCAiaGlkZGVuLmJzLm9mZmNhbnZhcyIpCiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5fZWxlbWVudCwgITApKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRpc3Bvc2UoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYmFja2Ryb3AuZGlzcG9zZSgpLCBzdXBlci5kaXNwb3NlKCksIFAub2ZmKGRvY3VtZW50LCAiZm9jdXNpbi5icy5vZmZjYW52YXMiKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2dldENvbmZpZyh0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC4uLlNlLAogICAgICAgICAgICAgICAgICAgICAgICAuLi5VLmdldERhdGFBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQpLAogICAgICAgICAgICAgICAgICAgICAgICAuLi4ib2JqZWN0IiA9PSB0eXBlb2YgdCA/IHQgOiB7fQogICAgICAgICAgICAgICAgICAgIH0sIGwoIm9mZmNhbnZhcyIsIHQsIEllKSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2luaXRpYWxpemVCYWNrRHJvcCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGtlKHsKICAgICAgICAgICAgICAgICAgICAgICAgaXNWaXNpYmxlOiB0aGlzLl9jb25maWcuYmFja2Ryb3AsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzQW5pbWF0ZWQ6ICEwLAogICAgICAgICAgICAgICAgICAgICAgICByb290RWxlbWVudDogdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlLAogICAgICAgICAgICAgICAgICAgICAgICBjbGlja0NhbGxiYWNrOiAoKSA9PiB0aGlzLmhpZGUoKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfZW5mb3JjZUZvY3VzT25FbGVtZW50KHQpIHsKICAgICAgICAgICAgICAgICAgICBQLm9mZihkb2N1bWVudCwgImZvY3VzaW4uYnMub2ZmY2FudmFzIiksIFAub24oZG9jdW1lbnQsICJmb2N1c2luLmJzLm9mZmNhbnZhcyIsIGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCA9PT0gZS50YXJnZXQgfHwgdCA9PT0gZS50YXJnZXQgfHwgdC5jb250YWlucyhlLnRhcmdldCkgfHwgdC5mb2N1cygpCiAgICAgICAgICAgICAgICAgICAgfSksIHQuZm9jdXMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2FkZEV2ZW50TGlzdGVuZXJzKCkgewogICAgICAgICAgICAgICAgICAgIFAub24odGhpcy5fZWxlbWVudCwgImNsaWNrLmRpc21pc3MuYnMub2ZmY2FudmFzIiwgJ1tkYXRhLWJzLWRpc21pc3M9Im9mZmNhbnZhcyJdJywgKCkgPT4gdGhpcy5oaWRlKCkpLCBQLm9uKHRoaXMuX2VsZW1lbnQsICJrZXlkb3duLmRpc21pc3MuYnMub2ZmY2FudmFzIiwgdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5rZXlib2FyZCAmJiAiRXNjYXBlIiA9PT0gdC5rZXkgJiYgdGhpcy5oaWRlKCkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdGljIGpRdWVyeUludGVyZmFjZSh0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gTmUuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCB0KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCJzdHJpbmciID09IHR5cGVvZiB0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBlW3RdIHx8IHQuc3RhcnRzV2l0aCgiXyIpIHx8ICJjb25zdHJ1Y3RvciIgPT09IHQpIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCAiJHt0fSJgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbdF0odGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIFAub24oZG9jdW1lbnQsICJjbGljay5icy5vZmZjYW52YXMuZGF0YS1hcGkiLCAnW2RhdGEtYnMtdG9nZ2xlPSJvZmZjYW52YXMiXScsIChmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgY29uc3QgaSA9IHModGhpcyk7CiAgICAgICAgICAgICAgICBpZiAoWyJBIiwgIkFSRUEiXS5pbmNsdWRlcyh0aGlzLnRhZ05hbWUpICYmIGUucHJldmVudERlZmF1bHQoKSwgaCh0aGlzKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgUC5vbmUoaSwgImhpZGRlbi5icy5vZmZjYW52YXMiLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgYyh0aGlzKSAmJiB0aGlzLmZvY3VzKCkKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgY29uc3QgbiA9IHQuZmluZE9uZSgiLm9mZmNhbnZhcy5zaG93Iik7CiAgICAgICAgICAgICAgICBuICYmIG4gIT09IGkgJiYgTmUuZ2V0SW5zdGFuY2UobikuaGlkZSgpLCBOZS5nZXRPckNyZWF0ZUluc3RhbmNlKGkpLnRvZ2dsZSh0aGlzKQogICAgICAgICAgICB9KSksIFAub24od2luZG93LCAibG9hZC5icy5vZmZjYW52YXMuZGF0YS1hcGkiLCAoKSA9PiB0LmZpbmQoIi5vZmZjYW52YXMuc2hvdyIpLmZvckVhY2godCA9PiBOZS5nZXRPckNyZWF0ZUluc3RhbmNlKHQpLnNob3coKSkpLCBfKE5lKTsKICAgICAgICAgICAgY29uc3QgamUgPSBuZXcgU2V0KFsiYmFja2dyb3VuZCIsICJjaXRlIiwgImhyZWYiLCAiaXRlbXR5cGUiLCAibG9uZ2Rlc2MiLCAicG9zdGVyIiwgInNyYyIsICJ4bGluazpocmVmIl0pLAogICAgICAgICAgICAgICAgTWUgPSAvXig/Oig/Omh0dHBzP3xtYWlsdG98ZnRwfHRlbHxmaWxlKTp8W14jJi86P10qKD86WyMvP118JCkpL2ksCiAgICAgICAgICAgICAgICBQZSA9IC9eZGF0YTooPzppbWFnZVwvKD86Ym1wfGdpZnxqcGVnfGpwZ3xwbmd8dGlmZnx3ZWJwKXx2aWRlb1wvKD86bXBlZ3xtcDR8b2dnfHdlYm0pfGF1ZGlvXC8oPzptcDN8b2dhfG9nZ3xvcHVzKSk7YmFzZTY0LFtcZCsvYS16XSs9KiQvaSwKICAgICAgICAgICAgICAgIEhlID0gKHQsIGUpID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgICAgIGlmIChlLmluY2x1ZGVzKGkpKSByZXR1cm4gIWplLmhhcyhpKSB8fCBCb29sZWFuKE1lLnRlc3QodC5ub2RlVmFsdWUpIHx8IFBlLnRlc3QodC5ub2RlVmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gZS5maWx0ZXIodCA9PiB0IGluc3RhbmNlb2YgUmVnRXhwKTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB0ID0gMCwgZSA9IG4ubGVuZ3RoOyB0IDwgZTsgdCsrKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoblt0XS50ZXN0KGkpKSByZXR1cm4gITA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICExCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24gUmUodCwgZSwgaSkgewogICAgICAgICAgICAgICAgaWYgKCF0Lmxlbmd0aCkgcmV0dXJuIHQ7CiAgICAgICAgICAgICAgICBpZiAoaSAmJiAiZnVuY3Rpb24iID09IHR5cGVvZiBpKSByZXR1cm4gaSh0KTsKICAgICAgICAgICAgICAgIGNvbnN0IG4gPSAobmV3IHdpbmRvdy5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyh0LCAidGV4dC9odG1sIiksCiAgICAgICAgICAgICAgICAgICAgcyA9IE9iamVjdC5rZXlzKGUpLAogICAgICAgICAgICAgICAgICAgIG8gPSBbXS5jb25jYXQoLi4ubi5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIioiKSk7CiAgICAgICAgICAgICAgICBmb3IgKGxldCB0ID0gMCwgaSA9IG8ubGVuZ3RoOyB0IDwgaTsgdCsrKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IG9bdF0sCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBpLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFzLmluY2x1ZGVzKG4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBbXS5jb25jYXQoLi4uaS5hdHRyaWJ1dGVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IFtdLmNvbmNhdChlWyIqIl0gfHwgW10sIGVbbl0gfHwgW10pOwogICAgICAgICAgICAgICAgICAgIHIuZm9yRWFjaCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgSGUodCwgYSkgfHwgaS5yZW1vdmVBdHRyaWJ1dGUodC5ub2RlTmFtZSkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG4uYm9keS5pbm5lckhUTUwKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBCZSA9IG5ldyBSZWdFeHAoIihefFxccylicy10b29sdGlwXFxTKyIsICJnIiksCiAgICAgICAgICAgICAgICBXZSA9IG5ldyBTZXQoWyJzYW5pdGl6ZSIsICJhbGxvd0xpc3QiLCAic2FuaXRpemVGbiJdKSwKICAgICAgICAgICAgICAgIHFlID0gewogICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogImJvb2xlYW4iLAogICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlOiAic3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICB0aXRsZTogIihzdHJpbmd8ZWxlbWVudHxmdW5jdGlvbikiLAogICAgICAgICAgICAgICAgICAgIHRyaWdnZXI6ICJzdHJpbmciLAogICAgICAgICAgICAgICAgICAgIGRlbGF5OiAiKG51bWJlcnxvYmplY3QpIiwKICAgICAgICAgICAgICAgICAgICBodG1sOiAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6ICIoc3RyaW5nfGJvb2xlYW4pIiwKICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICIoc3RyaW5nfGZ1bmN0aW9uKSIsCiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAiKGFycmF5fHN0cmluZ3xmdW5jdGlvbikiLAogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogIihzdHJpbmd8ZWxlbWVudHxib29sZWFuKSIsCiAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzOiAiYXJyYXkiLAogICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5OiAiKHN0cmluZ3xlbGVtZW50KSIsCiAgICAgICAgICAgICAgICAgICAgY3VzdG9tQ2xhc3M6ICIoc3RyaW5nfGZ1bmN0aW9uKSIsCiAgICAgICAgICAgICAgICAgICAgc2FuaXRpemU6ICJib29sZWFuIiwKICAgICAgICAgICAgICAgICAgICBzYW5pdGl6ZUZuOiAiKG51bGx8ZnVuY3Rpb24pIiwKICAgICAgICAgICAgICAgICAgICBhbGxvd0xpc3Q6ICJvYmplY3QiLAogICAgICAgICAgICAgICAgICAgIHBvcHBlckNvbmZpZzogIihudWxsfG9iamVjdHxmdW5jdGlvbikiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgemUgPSB7CiAgICAgICAgICAgICAgICAgICAgQVVUTzogImF1dG8iLAogICAgICAgICAgICAgICAgICAgIFRPUDogInRvcCIsCiAgICAgICAgICAgICAgICAgICAgUklHSFQ6IGcoKSA/ICJsZWZ0IiA6ICJyaWdodCIsCiAgICAgICAgICAgICAgICAgICAgQk9UVE9NOiAiYm90dG9tIiwKICAgICAgICAgICAgICAgICAgICBMRUZUOiBnKCkgPyAicmlnaHQiIDogImxlZnQiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgJGUgPSB7CiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiAhMCwKICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9InRvb2x0aXAtYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InRvb2x0aXAtaW5uZXIiPjwvZGl2PjwvZGl2PicsCiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogImhvdmVyIGZvY3VzIiwKICAgICAgICAgICAgICAgICAgICB0aXRsZTogIiIsCiAgICAgICAgICAgICAgICAgICAgZGVsYXk6IDAsCiAgICAgICAgICAgICAgICAgICAgaHRtbDogITEsCiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6ICExLAogICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogInRvcCIsCiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBbMCwgMF0sCiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiAhMSwKICAgICAgICAgICAgICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IFsidG9wIiwgInJpZ2h0IiwgImJvdHRvbSIsICJsZWZ0Il0sCiAgICAgICAgICAgICAgICAgICAgYm91bmRhcnk6ICJjbGlwcGluZ1BhcmVudHMiLAogICAgICAgICAgICAgICAgICAgIGN1c3RvbUNsYXNzOiAiIiwKICAgICAgICAgICAgICAgICAgICBzYW5pdGl6ZTogITAsCiAgICAgICAgICAgICAgICAgICAgc2FuaXRpemVGbjogbnVsbCwKICAgICAgICAgICAgICAgICAgICBhbGxvd0xpc3Q6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIioiOiBbImNsYXNzIiwgImRpciIsICJpZCIsICJsYW5nIiwgInJvbGUiLCAvXmFyaWEtW1x3LV0qJC9pXSwKICAgICAgICAgICAgICAgICAgICAgICAgYTogWyJ0YXJnZXQiLCAiaHJlZiIsICJ0aXRsZSIsICJyZWwiXSwKICAgICAgICAgICAgICAgICAgICAgICAgYXJlYTogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGI6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBicjogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbDogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBkaXY6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBlbTogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGhyOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgaDE6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBoMjogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGgzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgaDQ6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBoNTogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGg2OiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgaTogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogWyJzcmMiLCAic3Jjc2V0IiwgImFsdCIsICJ0aXRsZSIsICJ3aWR0aCIsICJoZWlnaHQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgbGk6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBvbDogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHA6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBwcmU6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgc21hbGw6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBzcGFuOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgc3ViOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgc3VwOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb25nOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgdTogW10sCiAgICAgICAgICAgICAgICAgICAgICAgIHVsOiBbXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcG9wcGVyQ29uZmlnOiBudWxsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgVWUgPSB7CiAgICAgICAgICAgICAgICAgICAgSElERTogImhpZGUuYnMudG9vbHRpcCIsCiAgICAgICAgICAgICAgICAgICAgSElEREVOOiAiaGlkZGVuLmJzLnRvb2x0aXAiLAogICAgICAgICAgICAgICAgICAgIFNIT1c6ICJzaG93LmJzLnRvb2x0aXAiLAogICAgICAgICAgICAgICAgICAgIFNIT1dOOiAic2hvd24uYnMudG9vbHRpcCIsCiAgICAgICAgICAgICAgICAgICAgSU5TRVJURUQ6ICJpbnNlcnRlZC5icy50b29sdGlwIiwKICAgICAgICAgICAgICAgICAgICBDTElDSzogImNsaWNrLmJzLnRvb2x0aXAiLAogICAgICAgICAgICAgICAgICAgIEZPQ1VTSU46ICJmb2N1c2luLmJzLnRvb2x0aXAiLAogICAgICAgICAgICAgICAgICAgIEZPQ1VTT1VUOiAiZm9jdXNvdXQuYnMudG9vbHRpcCIsCiAgICAgICAgICAgICAgICAgICAgTU9VU0VFTlRFUjogIm1vdXNlZW50ZXIuYnMudG9vbHRpcCIsCiAgICAgICAgICAgICAgICAgICAgTU9VU0VMRUFWRTogIm1vdXNlbGVhdmUuYnMudG9vbHRpcCIKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGNsYXNzIEZlIGV4dGVuZHMgQiB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3Rvcih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gZmUpIHRocm93IG5ldyBUeXBlRXJyb3IoIkJvb3RzdHJhcCdzIHRvb2x0aXBzIHJlcXVpcmUgUG9wcGVyIChodHRwczovL3BvcHBlci5qcy5vcmcpIik7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIodCksIHRoaXMuX2lzRW5hYmxlZCA9ICEwLCB0aGlzLl90aW1lb3V0ID0gMCwgdGhpcy5faG92ZXJTdGF0ZSA9ICIiLCB0aGlzLl9hY3RpdmVUcmlnZ2VyID0ge30sIHRoaXMuX3BvcHBlciA9IG51bGwsIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyhlKSwgdGhpcy50aXAgPSBudWxsLCB0aGlzLl9zZXRMaXN0ZW5lcnMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdGljIGdldCBEZWZhdWx0KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdGljIGdldCBOQU1FKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAidG9vbHRpcCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBnZXQgRXZlbnQoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFVlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBxZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZW5hYmxlKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzRW5hYmxlZCA9ICEwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkaXNhYmxlKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzRW5hYmxlZCA9ICExCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0b2dnbGVFbmFibGVkKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzRW5hYmxlZCA9ICF0aGlzLl9pc0VuYWJsZWQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRvZ2dsZSh0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzRW5hYmxlZCkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLl9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLl9hY3RpdmVUcmlnZ2VyLmNsaWNrID0gIWUuX2FjdGl2ZVRyaWdnZXIuY2xpY2ssIGUuX2lzV2l0aEFjdGl2ZVRyaWdnZXIoKSA/IGUuX2VudGVyKG51bGwsIGUpIDogZS5fbGVhdmUobnVsbCwgZSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmdldFRpcEVsZW1lbnQoKS5jbGFzc0xpc3QuY29udGFpbnMoInNob3ciKSkgcmV0dXJuIHZvaWQgdGhpcy5fbGVhdmUobnVsbCwgdGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbnRlcihudWxsLCB0aGlzKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkaXNwb3NlKCkgewogICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KSwgUC5vZmYodGhpcy5fZWxlbWVudC5jbG9zZXN0KCIubW9kYWwiKSwgImhpZGUuYnMubW9kYWwiLCB0aGlzLl9oaWRlTW9kYWxIYW5kbGVyKSwgdGhpcy50aXAgJiYgdGhpcy50aXAucmVtb3ZlKCksIHRoaXMuX3BvcHBlciAmJiB0aGlzLl9wb3BwZXIuZGVzdHJveSgpLCBzdXBlci5kaXNwb3NlKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNob3coKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCJub25lIiA9PT0gdGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5KSB0aHJvdyBuZXcgRXJyb3IoIlBsZWFzZSB1c2Ugc2hvdyBvbiB2aXNpYmxlIGVsZW1lbnRzIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzV2l0aENvbnRlbnQoKSB8fCAhdGhpcy5faXNFbmFibGVkKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IFAudHJpZ2dlcih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLkV2ZW50LlNIT1cpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gZCh0aGlzLl9lbGVtZW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgbiA9IG51bGwgPT09IGkgPyB0aGlzLl9lbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKHRoaXMuX2VsZW1lbnQpIDogaS5jb250YWlucyh0aGlzLl9lbGVtZW50KTsKICAgICAgICAgICAgICAgICAgICBpZiAodC5kZWZhdWx0UHJldmVudGVkIHx8ICFuKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcyA9IHRoaXMuZ2V0VGlwRWxlbWVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICBvID0gZSh0aGlzLmNvbnN0cnVjdG9yLk5BTUUpOwogICAgICAgICAgICAgICAgICAgIHMuc2V0QXR0cmlidXRlKCJpZCIsIG8pLCB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1kZXNjcmliZWRieSIsIG8pLCB0aGlzLnNldENvbnRlbnQoKSwgdGhpcy5fY29uZmlnLmFuaW1hdGlvbiAmJiBzLmNsYXNzTGlzdC5hZGQoImZhZGUiKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgdGhpcy5fY29uZmlnLnBsYWNlbWVudCA/IHRoaXMuX2NvbmZpZy5wbGFjZW1lbnQuY2FsbCh0aGlzLCBzLCB0aGlzLl9lbGVtZW50KSA6IHRoaXMuX2NvbmZpZy5wbGFjZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB0aGlzLl9nZXRBdHRhY2htZW50KHIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZEF0dGFjaG1lbnRDbGFzcyhhKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogbAogICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLl9jb25maWc7CiAgICAgICAgICAgICAgICAgICAgUi5zZXQocywgdGhpcy5jb25zdHJ1Y3Rvci5EQVRBX0tFWSwgdGhpcyksIHRoaXMuX2VsZW1lbnQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY29udGFpbnModGhpcy50aXApIHx8IChsLmFwcGVuZENoaWxkKHMpLCBQLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5FdmVudC5JTlNFUlRFRCkpLCB0aGlzLl9wb3BwZXIgPyB0aGlzLl9wb3BwZXIudXBkYXRlKCkgOiB0aGlzLl9wb3BwZXIgPSB1ZSh0aGlzLl9lbGVtZW50LCBzLCB0aGlzLl9nZXRQb3BwZXJDb25maWcoYSkpLCBzLmNsYXNzTGlzdC5hZGQoInNob3ciKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBjID0gImZ1bmN0aW9uIiA9PSB0eXBlb2YgdGhpcy5fY29uZmlnLmN1c3RvbUNsYXNzID8gdGhpcy5fY29uZmlnLmN1c3RvbUNsYXNzKCkgOiB0aGlzLl9jb25maWcuY3VzdG9tQ2xhc3M7CiAgICAgICAgICAgICAgICAgICAgYyAmJiBzLmNsYXNzTGlzdC5hZGQoLi4uYy5zcGxpdCgiICIpKSwgIm9udG91Y2hzdGFydCIgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIFtdLmNvbmNhdCguLi5kb2N1bWVudC5ib2R5LmNoaWxkcmVuKS5mb3JFYWNoKHQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBQLm9uKHQsICJtb3VzZW92ZXIiLCB1KQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGggPSB0aGlzLnRpcC5jbGFzc0xpc3QuY29udGFpbnMoImZhZGUiKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuX2hvdmVyU3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2hvdmVyU3RhdGUgPSBudWxsLCBQLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5FdmVudC5TSE9XTiksICJvdXQiID09PSB0ICYmIHRoaXMuX2xlYXZlKG51bGwsIHRoaXMpCiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy50aXAsIGgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBoaWRlKCkgewogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fcG9wcGVyKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0VGlwRWxlbWVudCgpOwogICAgICAgICAgICAgICAgICAgIGlmIChQLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5FdmVudC5ISURFKS5kZWZhdWx0UHJldmVudGVkKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgdC5jbGFzc0xpc3QucmVtb3ZlKCJzaG93IiksICJvbnRvdWNoc3RhcnQiIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBbXS5jb25jYXQoLi4uZG9jdW1lbnQuYm9keS5jaGlsZHJlbikuZm9yRWFjaCh0ID0+IFAub2ZmKHQsICJtb3VzZW92ZXIiLCB1KSksIHRoaXMuX2FjdGl2ZVRyaWdnZXIuY2xpY2sgPSAhMSwgdGhpcy5fYWN0aXZlVHJpZ2dlci5mb2N1cyA9ICExLCB0aGlzLl9hY3RpdmVUcmlnZ2VyLmhvdmVyID0gITE7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMudGlwLmNsYXNzTGlzdC5jb250YWlucygiZmFkZSIpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc1dpdGhBY3RpdmVUcmlnZ2VyKCkgfHwgKCJzaG93IiAhPT0gdGhpcy5faG92ZXJTdGF0ZSAmJiB0LnJlbW92ZSgpLCB0aGlzLl9jbGVhblRpcENsYXNzKCksIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5IiksIFAudHJpZ2dlcih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLkV2ZW50LkhJRERFTiksIHRoaXMuX3BvcHBlciAmJiAodGhpcy5fcG9wcGVyLmRlc3Ryb3koKSwgdGhpcy5fcG9wcGVyID0gbnVsbCkpCiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy50aXAsIGUpLCB0aGlzLl9ob3ZlclN0YXRlID0gIiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVwZGF0ZSgpIHsKICAgICAgICAgICAgICAgICAgICBudWxsICE9PSB0aGlzLl9wb3BwZXIgJiYgdGhpcy5fcG9wcGVyLnVwZGF0ZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpc1dpdGhDb250ZW50KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuKHRoaXMuZ2V0VGl0bGUoKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdldFRpcEVsZW1lbnQoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGlwKSByZXR1cm4gdGhpcy50aXA7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0LmlubmVySFRNTCA9IHRoaXMuX2NvbmZpZy50ZW1wbGF0ZSwgdGhpcy50aXAgPSB0LmNoaWxkcmVuWzBdLCB0aGlzLnRpcAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0Q29udGVudCgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRUaXBFbGVtZW50KCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRFbGVtZW50Q29udGVudCh0LmZpbmRPbmUoIi50b29sdGlwLWlubmVyIiwgZSksIHRoaXMuZ2V0VGl0bGUoKSksIGUuY2xhc3NMaXN0LnJlbW92ZSgiZmFkZSIsICJzaG93IikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldEVsZW1lbnRDb250ZW50KHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gdCkgcmV0dXJuIHIoZSkgPyAoZSA9IGEoZSksIHZvaWQgKHRoaXMuX2NvbmZpZy5odG1sID8gZS5wYXJlbnROb2RlICE9PSB0ICYmICh0LmlubmVySFRNTCA9ICIiLCB0LmFwcGVuZENoaWxkKGUpKSA6IHQudGV4dENvbnRlbnQgPSBlLnRleHRDb250ZW50KSkgOiB2b2lkICh0aGlzLl9jb25maWcuaHRtbCA/ICh0aGlzLl9jb25maWcuc2FuaXRpemUgJiYgKGUgPSBSZShlLCB0aGlzLl9jb25maWcuYWxsb3dMaXN0LCB0aGlzLl9jb25maWcuc2FuaXRpemVGbikpLCB0LmlubmVySFRNTCA9IGUpIDogdC50ZXh0Q29udGVudCA9IGUpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnZXRUaXRsZSgpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgdCA9IHRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCJkYXRhLWJzLW9yaWdpbmFsLXRpdGxlIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgfHwgKHQgPSAiZnVuY3Rpb24iID09IHR5cGVvZiB0aGlzLl9jb25maWcudGl0bGUgPyB0aGlzLl9jb25maWcudGl0bGUuY2FsbCh0aGlzLl9lbGVtZW50KSA6IHRoaXMuX2NvbmZpZy50aXRsZSksIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVwZGF0ZUF0dGFjaG1lbnQodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAicmlnaHQiID09PSB0ID8gImVuZCIgOiAibGVmdCIgPT09IHQgPyAic3RhcnQiIDogdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2luaXRpYWxpemVPbkRlbGVnYXRlZFRhcmdldCh0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuY29uc3RydWN0b3IuREFUQV9LRVk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChlID0gZSB8fCBSLmdldCh0LmRlbGVnYXRlVGFyZ2V0LCBpKSkgfHwgKGUgPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0LmRlbGVnYXRlVGFyZ2V0LCB0aGlzLl9nZXREZWxlZ2F0ZUNvbmZpZygpKSwgUi5zZXQodC5kZWxlZ2F0ZVRhcmdldCwgaSwgZSkpLCBlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfZ2V0T2Zmc2V0KCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0CiAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMuX2NvbmZpZzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIHQgPyB0LnNwbGl0KCIsIikubWFwKHQgPT4gTnVtYmVyLnBhcnNlSW50KHQsIDEwKSkgOiAiZnVuY3Rpb24iID09IHR5cGVvZiB0ID8gZSA9PiB0KGUsIHRoaXMuX2VsZW1lbnQpIDogdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2dldFBvcHBlckNvbmZpZyh0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50OiB0LAogICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnM6IFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZmxpcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzOiB0aGlzLl9jb25maWcuZmFsbGJhY2tQbGFjZW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJvZmZzZXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5fZ2V0T2Zmc2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogInByZXZlbnRPdmVyZmxvdyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRhcnk6IHRoaXMuX2NvbmZpZy5ib3VuZGFyeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiYXJyb3ciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGAuJHt0aGlzLmNvbnN0cnVjdG9yLk5BTUV9LWFycm93YAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAib25DaGFuZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogITAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaGFzZTogImFmdGVyV3JpdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm46IHQgPT4gdGhpcy5faGFuZGxlUG9wcGVyUGxhY2VtZW50Q2hhbmdlKHQpCiAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICBvbkZpcnN0VXBkYXRlOiB0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQub3B0aW9ucy5wbGFjZW1lbnQgIT09IHQucGxhY2VtZW50ICYmIHRoaXMuX2hhbmRsZVBvcHBlclBsYWNlbWVudENoYW5nZSh0KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAuLi5lLAogICAgICAgICAgICAgICAgICAgICAgICAuLi4iZnVuY3Rpb24iID09IHR5cGVvZiB0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnID8gdGhpcy5fY29uZmlnLnBvcHBlckNvbmZpZyhlKSA6IHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfYWRkQXR0YWNobWVudENsYXNzKHQpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFRpcEVsZW1lbnQoKS5jbGFzc0xpc3QuYWRkKCJicy10b29sdGlwLSIgKyB0aGlzLnVwZGF0ZUF0dGFjaG1lbnQodCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfZ2V0QXR0YWNobWVudCh0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHplW3QudG9VcHBlckNhc2UoKV0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9zZXRMaXN0ZW5lcnMoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29uZmlnLnRyaWdnZXIuc3BsaXQoIiAiKS5mb3JFYWNoKHQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoImNsaWNrIiA9PT0gdCkgUC5vbih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLkV2ZW50LkNMSUNLLCB0aGlzLl9jb25maWcuc2VsZWN0b3IsIHQgPT4gdGhpcy50b2dnbGUodCkpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgibWFudWFsIiAhPT0gdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9ICJob3ZlciIgPT09IHQgPyB0aGlzLmNvbnN0cnVjdG9yLkV2ZW50Lk1PVVNFRU5URVIgOiB0aGlzLmNvbnN0cnVjdG9yLkV2ZW50LkZPQ1VTSU4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9ICJob3ZlciIgPT09IHQgPyB0aGlzLmNvbnN0cnVjdG9yLkV2ZW50Lk1PVVNFTEVBVkUgOiB0aGlzLmNvbnN0cnVjdG9yLkV2ZW50LkZPQ1VTT1VUOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgUC5vbih0aGlzLl9lbGVtZW50LCBlLCB0aGlzLl9jb25maWcuc2VsZWN0b3IsIHQgPT4gdGhpcy5fZW50ZXIodCkpLCBQLm9uKHRoaXMuX2VsZW1lbnQsIGksIHRoaXMuX2NvbmZpZy5zZWxlY3RvciwgdCA9PiB0aGlzLl9sZWF2ZSh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLl9oaWRlTW9kYWxIYW5kbGVyID0gKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50ICYmIHRoaXMuaGlkZSgpCiAgICAgICAgICAgICAgICAgICAgfSwgUC5vbih0aGlzLl9lbGVtZW50LmNsb3Nlc3QoIi5tb2RhbCIpLCAiaGlkZS5icy5tb2RhbCIsIHRoaXMuX2hpZGVNb2RhbEhhbmRsZXIpLCB0aGlzLl9jb25maWcuc2VsZWN0b3IgPyB0aGlzLl9jb25maWcgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogIm1hbnVhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOiAiIgogICAgICAgICAgICAgICAgICAgIH0gOiB0aGlzLl9maXhUaXRsZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfZml4VGl0bGUoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCJ0aXRsZSIpLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdHlwZW9mIHRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCJkYXRhLWJzLW9yaWdpbmFsLXRpdGxlIik7CiAgICAgICAgICAgICAgICAgICAgKHQgfHwgInN0cmluZyIgIT09IGUpICYmICh0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiZGF0YS1icy1vcmlnaW5hbC10aXRsZSIsIHQgfHwgIiIpLCAhdCB8fCB0aGlzLl9lbGVtZW50LmdldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpIHx8IHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQgfHwgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCB0KSwgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInRpdGxlIiwgIiIpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2VudGVyKHQsIGUpIHsKICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5faW5pdGlhbGl6ZU9uRGVsZWdhdGVkVGFyZ2V0KHQsIGUpLCB0ICYmIChlLl9hY3RpdmVUcmlnZ2VyWyJmb2N1c2luIiA9PT0gdC50eXBlID8gImZvY3VzIiA6ICJob3ZlciJdID0gITApLCBlLmdldFRpcEVsZW1lbnQoKS5jbGFzc0xpc3QuY29udGFpbnMoInNob3ciKSB8fCAic2hvdyIgPT09IGUuX2hvdmVyU3RhdGUgPyBlLl9ob3ZlclN0YXRlID0gInNob3ciIDogKGNsZWFyVGltZW91dChlLl90aW1lb3V0KSwgZS5faG92ZXJTdGF0ZSA9ICJzaG93IiwgZS5fY29uZmlnLmRlbGF5ICYmIGUuX2NvbmZpZy5kZWxheS5zaG93ID8gZS5fdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAic2hvdyIgPT09IGUuX2hvdmVyU3RhdGUgJiYgZS5zaG93KCkKICAgICAgICAgICAgICAgICAgICB9LCBlLl9jb25maWcuZGVsYXkuc2hvdykgOiBlLnNob3coKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9sZWF2ZSh0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX2luaXRpYWxpemVPbkRlbGVnYXRlZFRhcmdldCh0LCBlKSwgdCAmJiAoZS5fYWN0aXZlVHJpZ2dlclsiZm9jdXNvdXQiID09PSB0LnR5cGUgPyAiZm9jdXMiIDogImhvdmVyIl0gPSBlLl9lbGVtZW50LmNvbnRhaW5zKHQucmVsYXRlZFRhcmdldCkpLCBlLl9pc1dpdGhBY3RpdmVUcmlnZ2VyKCkgfHwgKGNsZWFyVGltZW91dChlLl90aW1lb3V0KSwgZS5faG92ZXJTdGF0ZSA9ICJvdXQiLCBlLl9jb25maWcuZGVsYXkgJiYgZS5fY29uZmlnLmRlbGF5LmhpZGUgPyBlLl90aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJvdXQiID09PSBlLl9ob3ZlclN0YXRlICYmIGUuaGlkZSgpCiAgICAgICAgICAgICAgICAgICAgfSwgZS5fY29uZmlnLmRlbGF5LmhpZGUpIDogZS5oaWRlKCkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfaXNXaXRoQWN0aXZlVHJpZ2dlcigpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHQgaW4gdGhpcy5fYWN0aXZlVHJpZ2dlcikKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZVRyaWdnZXJbdF0pIHJldHVybiAhMDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gITEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9nZXRDb25maWcodCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBVLmdldERhdGFBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKHQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBXZS5oYXModCkgJiYgZGVsZXRlIGVbdF0KICAgICAgICAgICAgICAgICAgICB9KSwgKHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29uc3RydWN0b3IuRGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgLi4uZSwKICAgICAgICAgICAgICAgICAgICAgICAgLi4uIm9iamVjdCIgPT0gdHlwZW9mIHQgJiYgdCA/IHQgOiB7fQogICAgICAgICAgICAgICAgICAgIH0pLmNvbnRhaW5lciA9ICExID09PSB0LmNvbnRhaW5lciA/IGRvY3VtZW50LmJvZHkgOiBhKHQuY29udGFpbmVyKSwgIm51bWJlciIgPT0gdHlwZW9mIHQuZGVsYXkgJiYgKHQuZGVsYXkgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6IHQuZGVsYXksCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGU6IHQuZGVsYXkKICAgICAgICAgICAgICAgICAgICB9KSwgIm51bWJlciIgPT0gdHlwZW9mIHQudGl0bGUgJiYgKHQudGl0bGUgPSB0LnRpdGxlLnRvU3RyaW5nKCkpLCAibnVtYmVyIiA9PSB0eXBlb2YgdC5jb250ZW50ICYmICh0LmNvbnRlbnQgPSB0LmNvbnRlbnQudG9TdHJpbmcoKSksIGwoInRvb2x0aXAiLCB0LCB0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRUeXBlKSwgdC5zYW5pdGl6ZSAmJiAodC50ZW1wbGF0ZSA9IFJlKHQudGVtcGxhdGUsIHQuYWxsb3dMaXN0LCB0LnNhbml0aXplRm4pKSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2dldERlbGVnYXRlQ29uZmlnKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB7fTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY29uZmlnKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGUgaW4gdGhpcy5fY29uZmlnKSB0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRbZV0gIT09IHRoaXMuX2NvbmZpZ1tlXSAmJiAodFtlXSA9IHRoaXMuX2NvbmZpZ1tlXSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9jbGVhblRpcENsYXNzKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmdldFRpcEVsZW1lbnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpLm1hdGNoKEJlKTsKICAgICAgICAgICAgICAgICAgICBudWxsICE9PSBlICYmIGUubGVuZ3RoID4gMCAmJiBlLm1hcCh0ID0+IHQudHJpbSgpKS5mb3JFYWNoKGUgPT4gdC5jbGFzc0xpc3QucmVtb3ZlKGUpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2hhbmRsZVBvcHBlclBsYWNlbWVudENoYW5nZSh0KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgewogICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZQogICAgICAgICAgICAgICAgICAgIH0gPSB0OwogICAgICAgICAgICAgICAgICAgIGUgJiYgKHRoaXMudGlwID0gZS5lbGVtZW50cy5wb3BwZXIsIHRoaXMuX2NsZWFuVGlwQ2xhc3MoKSwgdGhpcy5fYWRkQXR0YWNobWVudENsYXNzKHRoaXMuX2dldEF0dGFjaG1lbnQoZS5wbGFjZW1lbnQpKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IEZlLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gZVt0XSkgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkICIke3R9ImApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt0XSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBfKEZlKTsKICAgICAgICAgICAgY29uc3QgVmUgPSBuZXcgUmVnRXhwKCIoXnxcXHMpYnMtcG9wb3ZlclxcUysiLCAiZyIpLAogICAgICAgICAgICAgICAgS2UgPSB7CiAgICAgICAgICAgICAgICAgICAgLi4uRmUuRGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICJyaWdodCIsCiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBbMCwgOF0sCiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogImNsaWNrIiwKICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAiIiwKICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9InBvcG92ZXIiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9InBvcG92ZXItYXJyb3ciPjwvZGl2PjxoMyBjbGFzcz0icG9wb3Zlci1oZWFkZXIiPjwvaDM+PGRpdiBjbGFzcz0icG9wb3Zlci1ib2R5Ij48L2Rpdj48L2Rpdj4nCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgWGUgPSB7CiAgICAgICAgICAgICAgICAgICAgLi4uRmUuRGVmYXVsdFR5cGUsCiAgICAgICAgICAgICAgICAgICAgY29udGVudDogIihzdHJpbmd8ZWxlbWVudHxmdW5jdGlvbikiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgWWUgPSB7CiAgICAgICAgICAgICAgICAgICAgSElERTogImhpZGUuYnMucG9wb3ZlciIsCiAgICAgICAgICAgICAgICAgICAgSElEREVOOiAiaGlkZGVuLmJzLnBvcG92ZXIiLAogICAgICAgICAgICAgICAgICAgIFNIT1c6ICJzaG93LmJzLnBvcG92ZXIiLAogICAgICAgICAgICAgICAgICAgIFNIT1dOOiAic2hvd24uYnMucG9wb3ZlciIsCiAgICAgICAgICAgICAgICAgICAgSU5TRVJURUQ6ICJpbnNlcnRlZC5icy5wb3BvdmVyIiwKICAgICAgICAgICAgICAgICAgICBDTElDSzogImNsaWNrLmJzLnBvcG92ZXIiLAogICAgICAgICAgICAgICAgICAgIEZPQ1VTSU46ICJmb2N1c2luLmJzLnBvcG92ZXIiLAogICAgICAgICAgICAgICAgICAgIEZPQ1VTT1VUOiAiZm9jdXNvdXQuYnMucG9wb3ZlciIsCiAgICAgICAgICAgICAgICAgICAgTU9VU0VFTlRFUjogIm1vdXNlZW50ZXIuYnMucG9wb3ZlciIsCiAgICAgICAgICAgICAgICAgICAgTU9VU0VMRUFWRTogIm1vdXNlbGVhdmUuYnMucG9wb3ZlciIKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGNsYXNzIFFlIGV4dGVuZHMgRmUgewogICAgICAgICAgICAgICAgc3RhdGljIGdldCBEZWZhdWx0KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBLZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdGljIGdldCBOQU1FKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAicG9wb3ZlciIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBnZXQgRXZlbnQoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFllCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBYZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaXNXaXRoQ29udGVudCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUaXRsZSgpIHx8IHRoaXMuX2dldENvbnRlbnQoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2V0VGlwRWxlbWVudCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50aXAgfHwgKHRoaXMudGlwID0gc3VwZXIuZ2V0VGlwRWxlbWVudCgpLCB0aGlzLmdldFRpdGxlKCkgfHwgdC5maW5kT25lKCIucG9wb3Zlci1oZWFkZXIiLCB0aGlzLnRpcCkucmVtb3ZlKCksIHRoaXMuX2dldENvbnRlbnQoKSB8fCB0LmZpbmRPbmUoIi5wb3BvdmVyLWJvZHkiLCB0aGlzLnRpcCkucmVtb3ZlKCkpLCB0aGlzLnRpcAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0Q29udGVudCgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5nZXRUaXBFbGVtZW50KCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRFbGVtZW50Q29udGVudCh0LmZpbmRPbmUoIi5wb3BvdmVyLWhlYWRlciIsIGUpLCB0aGlzLmdldFRpdGxlKCkpOwogICAgICAgICAgICAgICAgICAgIGxldCBpID0gdGhpcy5fZ2V0Q29udGVudCgpOwogICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiIgPT0gdHlwZW9mIGkgJiYgKGkgPSBpLmNhbGwodGhpcy5fZWxlbWVudCkpLCB0aGlzLnNldEVsZW1lbnRDb250ZW50KHQuZmluZE9uZSgiLnBvcG92ZXItYm9keSIsIGUpLCBpKSwgZS5jbGFzc0xpc3QucmVtb3ZlKCJmYWRlIiwgInNob3ciKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2FkZEF0dGFjaG1lbnRDbGFzcyh0KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRUaXBFbGVtZW50KCkuY2xhc3NMaXN0LmFkZCgiYnMtcG9wb3Zlci0iICsgdGhpcy51cGRhdGVBdHRhY2htZW50KHQpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2dldENvbnRlbnQoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCJkYXRhLWJzLWNvbnRlbnQiKSB8fCB0aGlzLl9jb25maWcuY29udGVudAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2NsZWFuVGlwQ2xhc3MoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0VGlwRWxlbWVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICBlID0gdC5nZXRBdHRyaWJ1dGUoImNsYXNzIikubWF0Y2goVmUpOwogICAgICAgICAgICAgICAgICAgIG51bGwgIT09IGUgJiYgZS5sZW5ndGggPiAwICYmIGUubWFwKHQgPT4gdC50cmltKCkpLmZvckVhY2goZSA9PiB0LmNsYXNzTGlzdC5yZW1vdmUoZSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBRZS5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGVbdF0pIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCAiJHt0fSJgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbdF0oKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgXyhRZSk7CiAgICAgICAgICAgIGNvbnN0IEdlID0gewogICAgICAgICAgICAgICAgb2Zmc2V0OiAxMCwKICAgICAgICAgICAgICAgIG1ldGhvZDogImF1dG8iLAogICAgICAgICAgICAgICAgdGFyZ2V0OiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgWmUgPSB7CiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAibnVtYmVyIiwKICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICJzdHJpbmciLAogICAgICAgICAgICAgICAgICAgIHRhcmdldDogIihzdHJpbmd8ZWxlbWVudCkiCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBjbGFzcyBKZSBleHRlbmRzIEIgewogICAgICAgICAgICAgICAgY29uc3RydWN0b3IodCwgZSkgewogICAgICAgICAgICAgICAgICAgIHN1cGVyKHQpLCB0aGlzLl9zY3JvbGxFbGVtZW50ID0gIkJPRFkiID09PSB0aGlzLl9lbGVtZW50LnRhZ05hbWUgPyB3aW5kb3cgOiB0aGlzLl9lbGVtZW50LCB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoZSksIHRoaXMuX3NlbGVjdG9yID0gYCR7dGhpcy5fY29uZmlnLnRhcmdldH0gLm5hdi1saW5rLCAke3RoaXMuX2NvbmZpZy50YXJnZXR9IC5saXN0LWdyb3VwLWl0ZW0sICR7dGhpcy5fY29uZmlnLnRhcmdldH0gLmRyb3Bkb3duLWl0ZW1gLCB0aGlzLl9vZmZzZXRzID0gW10sIHRoaXMuX3RhcmdldHMgPSBbXSwgdGhpcy5fYWN0aXZlVGFyZ2V0ID0gbnVsbCwgdGhpcy5fc2Nyb2xsSGVpZ2h0ID0gMCwgUC5vbih0aGlzLl9zY3JvbGxFbGVtZW50LCAic2Nyb2xsLmJzLnNjcm9sbHNweSIsICgpID0+IHRoaXMuX3Byb2Nlc3MoKSksIHRoaXMucmVmcmVzaCgpLCB0aGlzLl9wcm9jZXNzKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2UKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBnZXQgTkFNRSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInNjcm9sbHNweSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlZnJlc2goKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuX3Njcm9sbEVsZW1lbnQgPT09IHRoaXMuX3Njcm9sbEVsZW1lbnQud2luZG93ID8gIm9mZnNldCIgOiAicG9zaXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gImF1dG8iID09PSB0aGlzLl9jb25maWcubWV0aG9kID8gZSA6IHRoaXMuX2NvbmZpZy5tZXRob2QsCiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAicG9zaXRpb24iID09PSBpID8gdGhpcy5fZ2V0U2Nyb2xsVG9wKCkgOiAwOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX29mZnNldHMgPSBbXSwgdGhpcy5fdGFyZ2V0cyA9IFtdLCB0aGlzLl9zY3JvbGxIZWlnaHQgPSB0aGlzLl9nZXRTY3JvbGxIZWlnaHQoKSwgdC5maW5kKHRoaXMuX3NlbGVjdG9yKS5tYXAoZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSBuKGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG8gPyB0LmZpbmRPbmUobykgOiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC53aWR0aCB8fCB0LmhlaWdodCkgcmV0dXJuIFtVW2ldKHIpLnRvcCArIHMsIG9dCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGwKICAgICAgICAgICAgICAgICAgICB9KS5maWx0ZXIodCA9PiB0KS5zb3J0KCh0LCBlKSA9PiB0WzBdIC0gZVswXSkuZm9yRWFjaCh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb2Zmc2V0cy5wdXNoKHRbMF0pLCB0aGlzLl90YXJnZXRzLnB1c2godFsxXSkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGlzcG9zZSgpIHsKICAgICAgICAgICAgICAgICAgICBQLm9mZih0aGlzLl9zY3JvbGxFbGVtZW50LCAiLmJzLnNjcm9sbHNweSIpLCBzdXBlci5kaXNwb3NlKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9nZXRDb25maWcodCkgewogICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiAhPSB0eXBlb2YgKHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC4uLkdlLAogICAgICAgICAgICAgICAgICAgICAgICAuLi5VLmdldERhdGFBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQpLAogICAgICAgICAgICAgICAgICAgICAgICAuLi4ib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiB0ID8gdCA6IHt9CiAgICAgICAgICAgICAgICAgICAgfSkudGFyZ2V0ICYmIHIodC50YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogaQogICAgICAgICAgICAgICAgICAgICAgICB9ID0gdC50YXJnZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgfHwgKGkgPSBlKCJzY3JvbGxzcHkiKSwgdC50YXJnZXQuaWQgPSBpKSwgdC50YXJnZXQgPSAiIyIgKyBpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBsKCJzY3JvbGxzcHkiLCB0LCBaZSksIHQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9nZXRTY3JvbGxUb3AoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Njcm9sbEVsZW1lbnQgPT09IHdpbmRvdyA/IHRoaXMuX3Njcm9sbEVsZW1lbnQucGFnZVlPZmZzZXQgOiB0aGlzLl9zY3JvbGxFbGVtZW50LnNjcm9sbFRvcAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2dldFNjcm9sbEhlaWdodCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc2Nyb2xsRWxlbWVudC5zY3JvbGxIZWlnaHQgfHwgTWF0aC5tYXgoZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQsIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfZ2V0T2Zmc2V0SGVpZ2h0KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50ID09PSB3aW5kb3cgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiB0aGlzLl9zY3JvbGxFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX3Byb2Nlc3MoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuX2dldFNjcm9sbFRvcCgpICsgdGhpcy5fY29uZmlnLm9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX2dldFNjcm9sbEhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5fY29uZmlnLm9mZnNldCArIGUgLSB0aGlzLl9nZXRPZmZzZXRIZWlnaHQoKTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fc2Nyb2xsSGVpZ2h0ICE9PSBlICYmIHRoaXMucmVmcmVzaCgpLCB0ID49IGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuX3RhcmdldHNbdGhpcy5fdGFyZ2V0cy5sZW5ndGggLSAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWN0aXZlVGFyZ2V0ICE9PSB0ICYmIHRoaXMuX2FjdGl2YXRlKHQpCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZVRhcmdldCAmJiB0IDwgdGhpcy5fb2Zmc2V0c1swXSAmJiB0aGlzLl9vZmZzZXRzWzBdID4gMCkgcmV0dXJuIHRoaXMuX2FjdGl2ZVRhcmdldCA9IG51bGwsIHZvaWQgdGhpcy5fY2xlYXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgZSA9IHRoaXMuX29mZnNldHMubGVuZ3RoOyBlLS07KSB0aGlzLl9hY3RpdmVUYXJnZXQgIT09IHRoaXMuX3RhcmdldHNbZV0gJiYgdCA+PSB0aGlzLl9vZmZzZXRzW2VdICYmICh2b2lkIDAgPT09IHRoaXMuX29mZnNldHNbZSArIDFdIHx8IHQgPCB0aGlzLl9vZmZzZXRzW2UgKyAxXSkgJiYgdGhpcy5fYWN0aXZhdGUodGhpcy5fdGFyZ2V0c1tlXSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfYWN0aXZhdGUoZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2FjdGl2ZVRhcmdldCA9IGUsIHRoaXMuX2NsZWFyKCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuX3NlbGVjdG9yLnNwbGl0KCIsIikubWFwKHQgPT4gYCR7dH1bZGF0YS1icy10YXJnZXQ9IiR7ZX0iXSwke3R9W2hyZWY9IiR7ZX0iXWApLAogICAgICAgICAgICAgICAgICAgICAgICBuID0gdC5maW5kT25lKGkuam9pbigiLCIpKTsKICAgICAgICAgICAgICAgICAgICBuLmNsYXNzTGlzdC5jb250YWlucygiZHJvcGRvd24taXRlbSIpID8gKHQuZmluZE9uZSgiLmRyb3Bkb3duLXRvZ2dsZSIsIG4uY2xvc2VzdCgiLmRyb3Bkb3duIikpLmNsYXNzTGlzdC5hZGQoImFjdGl2ZSIpLCBuLmNsYXNzTGlzdC5hZGQoImFjdGl2ZSIpKSA6IChuLmNsYXNzTGlzdC5hZGQoImFjdGl2ZSIpLCB0LnBhcmVudHMobiwgIi5uYXYsIC5saXN0LWdyb3VwIikuZm9yRWFjaChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5wcmV2KGUsICIubmF2LWxpbmssIC5saXN0LWdyb3VwLWl0ZW0iKS5mb3JFYWNoKHQgPT4gdC5jbGFzc0xpc3QuYWRkKCJhY3RpdmUiKSksIHQucHJldihlLCAiLm5hdi1pdGVtIikuZm9yRWFjaChlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuY2hpbGRyZW4oZSwgIi5uYXYtbGluayIpLmZvckVhY2godCA9PiB0LmNsYXNzTGlzdC5hZGQoImFjdGl2ZSIpKQogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0pKSwgUC50cmlnZ2VyKHRoaXMuX3Njcm9sbEVsZW1lbnQsICJhY3RpdmF0ZS5icy5zY3JvbGxzcHkiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXQ6IGUKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2NsZWFyKCkgewogICAgICAgICAgICAgICAgICAgIHQuZmluZCh0aGlzLl9zZWxlY3RvcikuZmlsdGVyKHQgPT4gdC5jbGFzc0xpc3QuY29udGFpbnMoImFjdGl2ZSIpKS5mb3JFYWNoKHQgPT4gdC5jbGFzc0xpc3QucmVtb3ZlKCJhY3RpdmUiKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UodCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IEplLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgic3RyaW5nIiA9PSB0eXBlb2YgdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gZVt0XSkgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkICIke3R9ImApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVt0XSgpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBQLm9uKHdpbmRvdywgImxvYWQuYnMuc2Nyb2xsc3B5LmRhdGEtYXBpIiwgKCkgPT4gewogICAgICAgICAgICAgICAgdC5maW5kKCdbZGF0YS1icy1zcHk9InNjcm9sbCJdJykuZm9yRWFjaCh0ID0+IG5ldyBKZSh0KSkKICAgICAgICAgICAgfSksIF8oSmUpOwogICAgICAgICAgICBjbGFzcyB0aSBleHRlbmRzIEIgewogICAgICAgICAgICAgICAgc3RhdGljIGdldCBOQU1FKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAidGFiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2hvdygpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5wYXJlbnROb2RlICYmIHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFjdGl2ZSIpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgbGV0IGU7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IHModGhpcy5fZWxlbWVudCksCiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLl9lbGVtZW50LmNsb3Nlc3QoIi5uYXYsIC5saXN0LWdyb3VwIik7CiAgICAgICAgICAgICAgICAgICAgaWYgKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaSA9ICJVTCIgPT09IG4ubm9kZU5hbWUgfHwgIk9MIiA9PT0gbi5ub2RlTmFtZSA/ICI6c2NvcGUgPiBsaSA+IC5hY3RpdmUiIDogIi5hY3RpdmUiOwogICAgICAgICAgICAgICAgICAgICAgICBlID0gdC5maW5kKGksIG4pLCBlID0gZVtlLmxlbmd0aCAtIDFdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNvbnN0IG8gPSBlID8gUC50cmlnZ2VyKGUsICJoaWRlLmJzLnRhYiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogdGhpcy5fZWxlbWVudAogICAgICAgICAgICAgICAgICAgIH0pIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICBpZiAoUC50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJzaG93LmJzLnRhYiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogZQogICAgICAgICAgICAgICAgICAgIH0pLmRlZmF1bHRQcmV2ZW50ZWQgfHwgbnVsbCAhPT0gbyAmJiBvLmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9hY3RpdmF0ZSh0aGlzLl9lbGVtZW50LCBuKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBQLnRyaWdnZXIoZSwgImhpZGRlbi5icy50YWIiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0OiB0aGlzLl9lbGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBQLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgInNob3duLmJzLnRhYiIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXQ6IGUKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGkgPyB0aGlzLl9hY3RpdmF0ZShpLCBpLnBhcmVudE5vZGUsIHIpIDogcigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfYWN0aXZhdGUoZSwgaSwgbikgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSAoIWkgfHwgIlVMIiAhPT0gaS5ub2RlTmFtZSAmJiAiT0wiICE9PSBpLm5vZGVOYW1lID8gdC5jaGlsZHJlbihpLCAiLmFjdGl2ZSIpIDogdC5maW5kKCI6c2NvcGUgPiBsaSA+IC5hY3RpdmUiLCBpKSlbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBuICYmIHMgJiYgcy5jbGFzc0xpc3QuY29udGFpbnMoImZhZGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgciA9ICgpID0+IHRoaXMuX3RyYW5zaXRpb25Db21wbGV0ZShlLCBzLCBuKTsKICAgICAgICAgICAgICAgICAgICBzICYmIG8gPyAocy5jbGFzc0xpc3QucmVtb3ZlKCJzaG93IiksIHRoaXMuX3F1ZXVlQ2FsbGJhY2sociwgZSwgITApKSA6IHIoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX3RyYW5zaXRpb25Db21wbGV0ZShlLCBpLCBuKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaS5jbGFzc0xpc3QucmVtb3ZlKCJhY3RpdmUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHQuZmluZE9uZSgiOnNjb3BlID4gLmRyb3Bkb3duLW1lbnUgLmFjdGl2ZSIsIGkucGFyZW50Tm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgZS5jbGFzc0xpc3QucmVtb3ZlKCJhY3RpdmUiKSwgInRhYiIgPT09IGkuZ2V0QXR0cmlidXRlKCJyb2xlIikgJiYgaS5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLCAhMSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZS5jbGFzc0xpc3QuYWRkKCJhY3RpdmUiKSwgInRhYiIgPT09IGUuZ2V0QXR0cmlidXRlKCJyb2xlIikgJiYgZS5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLCAhMCksIGYoZSksIGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJmYWRlIikgJiYgZS5jbGFzc0xpc3QuYWRkKCJzaG93Iik7CiAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBlLnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICAgICAgaWYgKHMgJiYgIkxJIiA9PT0gcy5ub2RlTmFtZSAmJiAocyA9IHMucGFyZW50Tm9kZSksIHMgJiYgcy5jbGFzc0xpc3QuY29udGFpbnMoImRyb3Bkb3duLW1lbnUiKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gZS5jbG9zZXN0KCIuZHJvcGRvd24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgaSAmJiB0LmZpbmQoIi5kcm9wZG93bi10b2dnbGUiLCBpKS5mb3JFYWNoKHQgPT4gdC5jbGFzc0xpc3QuYWRkKCJhY3RpdmUiKSksIGUuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIiwgITApCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG4gJiYgbigpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aS5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGVbdF0pIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCAiJHt0fSJgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbdF0oKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgUC5vbihkb2N1bWVudCwgImNsaWNrLmJzLnRhYi5kYXRhLWFwaSIsICdbZGF0YS1icy10b2dnbGU9InRhYiJdLCBbZGF0YS1icy10b2dnbGU9InBpbGwiXSwgW2RhdGEtYnMtdG9nZ2xlPSJsaXN0Il0nLCAoZnVuY3Rpb24gKHQpIHsKICAgICAgICAgICAgICAgIFsiQSIsICJBUkVBIl0uaW5jbHVkZXModGhpcy50YWdOYW1lKSAmJiB0LnByZXZlbnREZWZhdWx0KCksIGgodGhpcykgfHwgdGkuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKS5zaG93KCkKICAgICAgICAgICAgfSkpLCBfKHRpKTsKICAgICAgICAgICAgY29uc3QgZWkgPSB7CiAgICAgICAgICAgICAgICBhbmltYXRpb246ICJib29sZWFuIiwKICAgICAgICAgICAgICAgIGF1dG9oaWRlOiAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgICBkZWxheTogIm51bWJlciIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGlpID0gewogICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogITAsCiAgICAgICAgICAgICAgICAgICAgYXV0b2hpZGU6ICEwLAogICAgICAgICAgICAgICAgICAgIGRlbGF5OiA1ZTMKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGNsYXNzIG5pIGV4dGVuZHMgQiB7CiAgICAgICAgICAgICAgICBjb25zdHJ1Y3Rvcih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIodCksIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyhlKSwgdGhpcy5fdGltZW91dCA9IG51bGwsIHRoaXMuX2hhc01vdXNlSW50ZXJhY3Rpb24gPSAhMSwgdGhpcy5faGFzS2V5Ym9hcmRJbnRlcmFjdGlvbiA9ICExLCB0aGlzLl9zZXRMaXN0ZW5lcnMoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXRpYyBnZXQgTkFNRSgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInRvYXN0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2hvdygpIHsKICAgICAgICAgICAgICAgICAgICBQLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgInNob3cuYnMudG9hc3QiKS5kZWZhdWx0UHJldmVudGVkIHx8ICh0aGlzLl9jbGVhclRpbWVvdXQoKSwgdGhpcy5fY29uZmlnLmFuaW1hdGlvbiAmJiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImZhZGUiKSwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJoaWRlIiksIGYodGhpcy5fZWxlbWVudCksIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2hvd2luZyIpLCB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzaG93aW5nIiksIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2hvdyIpLCBQLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgInNob3duLmJzLnRvYXN0IiksIHRoaXMuX21heWJlU2NoZWR1bGVIaWRlKCkKICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9lbGVtZW50LCB0aGlzLl9jb25maWcuYW5pbWF0aW9uKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhpZGUoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInNob3ciKSAmJiAoUC50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJoaWRlLmJzLnRvYXN0IikuZGVmYXVsdFByZXZlbnRlZCB8fCAodGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzaG93IiksIHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImhpZGUiKSwgUC50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsICJoaWRkZW4uYnMudG9hc3QiKQogICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuX2VsZW1lbnQsIHRoaXMuX2NvbmZpZy5hbmltYXRpb24pKSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRpc3Bvc2UoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJUaW1lb3V0KCksIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzaG93IikgJiYgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzaG93IiksIHN1cGVyLmRpc3Bvc2UoKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2dldENvbmZpZyh0KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmlpLAogICAgICAgICAgICAgICAgICAgICAgICAuLi5VLmdldERhdGFBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQpLAogICAgICAgICAgICAgICAgICAgICAgICAuLi4ib2JqZWN0IiA9PSB0eXBlb2YgdCAmJiB0ID8gdCA6IHt9CiAgICAgICAgICAgICAgICAgICAgfSwgbCgidG9hc3QiLCB0LCB0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRUeXBlKSwgdAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX21heWJlU2NoZWR1bGVIaWRlKCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5hdXRvaGlkZSAmJiAodGhpcy5faGFzTW91c2VJbnRlcmFjdGlvbiB8fCB0aGlzLl9oYXNLZXlib2FyZEludGVyYWN0aW9uIHx8ICh0aGlzLl90aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpCiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5fY29uZmlnLmRlbGF5KSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfb25JbnRlcmFjdGlvbih0LCBlKSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibW91c2VvdmVyIjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibW91c2VvdXQiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFzTW91c2VJbnRlcmFjdGlvbiA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZm9jdXNpbiI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImZvY3Vzb3V0IjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2hhc0tleWJvYXJkSW50ZXJhY3Rpb24gPSBlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChlKSByZXR1cm4gdm9pZCB0aGlzLl9jbGVhclRpbWVvdXQoKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpID0gdC5yZWxhdGVkVGFyZ2V0OwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQgPT09IGkgfHwgdGhpcy5fZWxlbWVudC5jb250YWlucyhpKSB8fCB0aGlzLl9tYXliZVNjaGVkdWxlSGlkZSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfc2V0TGlzdGVuZXJzKCkgewogICAgICAgICAgICAgICAgICAgIFAub24odGhpcy5fZWxlbWVudCwgImNsaWNrLmRpc21pc3MuYnMudG9hc3QiLCAnW2RhdGEtYnMtZGlzbWlzcz0idG9hc3QiXScsICgpID0+IHRoaXMuaGlkZSgpKSwgUC5vbih0aGlzLl9lbGVtZW50LCAibW91c2VvdmVyLmJzLnRvYXN0IiwgdCA9PiB0aGlzLl9vbkludGVyYWN0aW9uKHQsICEwKSksIFAub24odGhpcy5fZWxlbWVudCwgIm1vdXNlb3V0LmJzLnRvYXN0IiwgdCA9PiB0aGlzLl9vbkludGVyYWN0aW9uKHQsICExKSksIFAub24odGhpcy5fZWxlbWVudCwgImZvY3VzaW4uYnMudG9hc3QiLCB0ID0+IHRoaXMuX29uSW50ZXJhY3Rpb24odCwgITApKSwgUC5vbih0aGlzLl9lbGVtZW50LCAiZm9jdXNvdXQuYnMudG9hc3QiLCB0ID0+IHRoaXMuX29uSW50ZXJhY3Rpb24odCwgITEpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2NsZWFyVGltZW91dCgpIHsKICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCksIHRoaXMuX3RpbWVvdXQgPSBudWxsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKHQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBuaS5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIHQpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgPT09IGVbdF0pIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCAiJHt0fSJgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVbdF0odGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBfKG5pKSwgewogICAgICAgICAgICAgICAgQWxlcnQ6IFcsCiAgICAgICAgICAgICAgICBCdXR0b246IHEsCiAgICAgICAgICAgICAgICBDYXJvdXNlbDogWiwKICAgICAgICAgICAgICAgIENvbGxhcHNlOiBldCwKICAgICAgICAgICAgICAgIERyb3Bkb3duOiBBZSwKICAgICAgICAgICAgICAgIE1vZGFsOiBEZSwKICAgICAgICAgICAgICAgIE9mZmNhbnZhczogTmUsCiAgICAgICAgICAgICAgICBQb3BvdmVyOiBRZSwKICAgICAgICAgICAgICAgIFNjcm9sbFNweTogSmUsCiAgICAgICAgICAgICAgICBUYWI6IHRpLAogICAgICAgICAgICAgICAgVG9hc3Q6IG5pLAogICAgICAgICAgICAgICAgVG9vbHRpcDogRmUKICAgICAgICAgICAgfQogICAgICAgIH0pKTsKICAgIDwvc2NyaXB0PgogICAgPGRpdiBjbGFzcz0iY29udGFpbmVyLXNtIiBpZD0ibWFpbiIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyLWhlYWQiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICA8ZGl2IGlkPSJsb2dvIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgIDxzdmcgYXJpYS1sYWJlbD0i0JvQvtCz0L7RgtC40L8gTWV0YSIgY2xhc3M9Ingxa3B4cTg5IHgxMjQ3cjY1IiByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCA1MDAgMTAwIj4KICAgICAgICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBpZD0iOlIxZWNrbWtsZGQ2a25wYXBkNWFxSDE6IiB4MT0iMTI0LjM4IiB4Mj0iMTYwLjgzOSIgeTE9Ijk5IiB5Mj0iNTkuMzI2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iLjQyNyIgc3RvcC1jb2xvcj0iIzAyNzhGMSI+PC9zdG9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIuOTE3IiBzdG9wLWNvbG9yPSIjMDE4MEZBIj48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgaWQ9IjpSMWVja21rbGRkNmtucGFwZDVhcUgyOiIgeDE9IjQyIiB4Mj0iLTEuNjY2IiB5MT0iNC45MzYiIHkyPSI2MS43MDciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIuNDI3IiBzdG9wLWNvbG9yPSIjMDE2NUUwIj48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9Ii45MTciIHN0b3AtY29sb3I9IiMwMTgwRkEiPjwvc3RvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBpZD0iOlIxZWNrbWtsZGQ2a25wYXBkNWFxSDM6IiB4MT0iMjcuNjc3IiB4Mj0iMTMyLjk0MyIgeTE9IjI4LjcxIiB5Mj0iNzEuMTE4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDY0RTAiPjwvc3RvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iLjY1NiIgc3RvcC1jb2xvcj0iIzAwNjZFMiI+PC9zdG9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDI3OEYxIj48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xODUuNTA4IDMuMDFoMTguNzA0bDMxLjgwMyA1Ny4zMTNMMjY3LjgxOCAzLjAxaDE4LjI5N3Y5NC4xNzVoLTE1LjI2NHYtNzIuMThsLTI3Ljg4IDQ5Ljk3N2gtMTQuMzE5bC0yNy44OC00OS45Nzh2NzIuMThoLTE1LjI2NFYzLjAxWk0zMzYuMjgxIDk4Ljg3Yy03LjA2NiAwLTEzLjI4Ni0xLjU2NS0xOC42MzgtNC42NzQtNS4zNTItMy4xMi05LjUyNy03LjQzNC0xMi41MjgtMTIuOTUyLTIuOTg5LTUuNTE3LTQuNDgzLTExLjgzNS00LjQ4My0xOC45NzMgMC03LjIxNCAxLjQ2MS0xMy42MDggNC4zODUtMTkuMTcgMi45MjMtNS41NjEgNi45ODktOS45MDggMTIuMTg3LTEzLjA1IDUuMTk4LTMuMTMgMTEuMTc2LTQuNzA3IDE3LjkyMy00LjcwNyA2LjcxNSAwIDEyLjQ4NCAxLjU4NyAxNy4zMTkgNC43NCA0Ljg0NyAzLjE2NCA4LjU3MiA3LjU5OCAxMS4xNzcgMTMuMjkxIDIuNjE1IDUuNjkzIDMuOTIzIDEyLjM3MSAzLjkyMyAyMC4wNDZ2NC4xNzFoLTUxLjc5M2MuOTQ1IDUuNzM3IDMuMjc1IDEwLjI1OCA2Ljk4OSAxMy41NTQgMy43MTUgMy4yOTUgOC40MDcgNC45MzcgMTQuMDc4IDQuOTM3IDQuNTQ5IDAgOC40NjEtLjY2NyAxMS43NDctMi4wMTQgMy4yODYtMS4zNDcgNi4zNzQtMy4zODMgOS4yNTMtNi4xMmw4LjA5OSA5Ljg4NmMtOC4wNTUgNy4zNTctMTcuOTM0IDExLjAzNi0yOS42MzggMTEuMDM2Wm0xMS4xNDMtNTUuODY3Yy0zLjE5OC0zLjI1Mi03LjM4NS00Ljg3Mi0xMi41Ni00Ljg3Mi01LjA0NSAwLTkuMjY0IDEuNjUzLTEyLjY2IDQuOTctMy40MDcgMy4zMTgtNS41NSA3Ljc4NC02LjQ1MSAxMy4zOWgzNy4xMzNjLS40NTEtNS43MzctMi4yNzUtMTAuMjM3LTUuNDYyLTEzLjQ4OFpNMzg2LjUxMyAzOS40NjdoLTE0LjA0NFYyNy4wM2gxNC4wNDRWNi40NDdoMTQuNzE1VjI3LjAzaDIxLjM0MXYxMi40MzdoLTIxLjM0MXYzMS41NTJjMCA1LjI0NC45MDEgOC45ODggMi43MDMgMTEuMjMzIDEuODAzIDIuMjQ0IDQuODggMy4zNiA5LjI1MyAzLjM2IDEuOTM1IDAgMy41NzItLjA3NiA0LjkyNC0uMjNhOTcuOTkyIDk3Ljk5MiAwIDAgMCA0LjQ2MS0uNjQ1djEyLjMxNmMtMS42Ny40OTMtMy41NDkuODk4LTUuNjM3IDEuMjA1LTIuMDk5LjMxNy00LjI4Ni40Ny02LjU4My40Ny0xNS44OSAwLTIzLjgzNi04LjY0OS0yMy44MzYtMjUuOTU3VjM5LjQ2N1pNNTAwIDk3LjE4NWgtMTQuNDR2LTkuODJjLTIuNTcxIDMuNjc4LTUuODM1IDYuNTEzLTkuNzkxIDguNTA2LTMuOTY4IDEuOTkzLTguNDYyIDMtMTMuNTA2IDMtNi4yMDkgMC0xMS43MTUtMS41ODgtMTYuNTA2LTQuNzUyLTQuODAzLTMuMTUzLTguNTcyLTcuNTEtMTEuMzA4LTEzLjAzOS0yLjc0OC01LjU0LTQuMTIxLTExLjg3OS00LjEyMS0xOS4wMDYgMC03LjE3IDEuMzk1LTEzLjUyIDQuMTg3LTE5LjAzOCAyLjc5MS01LjUxOCA2LjY0OC05Ljg0MyAxMS41NzEtMTIuOTg1IDQuOTM1LTMuMTMgMTAuNTk0LTQuNzA3IDE2Ljk5LTQuNzA3IDQuODEzIDAgOS4xMzIuOTMgMTIuOTU2IDIuNzkxYTI1LjcwOCAyNS43MDggMCAwIDEgOS41MjggNy45MDV2LTkuMDFINTAwdjcwLjE1NVptLTE0LjcxNS00NS42MWMtMS41NzEtMy45ODUtNC4wNjYtNy4xMzgtNy40NjEtOS40NDgtMy4zOTYtMi4zMS03LjMzLTMuNDYtMTEuNzgxLTMuNDYtNi4zMDggMC0xMS4zMTkgMi4xMDItMTUuMDU1IDYuMzE3LTMuNzM3IDQuMjE1LTUuNjA1IDkuOTItNS42MDUgMTcuMDkgMCA3LjIxNSAxLjgwMiAxMi45NCA1LjM5NiAxNy4xNTYgMy42MDQgNC4yMTUgOC40ODQgNi4zMTcgMTQuNjYgNi4zMTcgNC41MzggMCA4LjU5My0xLjE2IDEyLjE1NC0zLjQ5MiAzLjU0OS0yLjMzMiA2LjEyMS01LjQ3NSA3LjY5Mi05LjQyN1Y1MS41NzVaIiBmaWxsPSIjMUMyQjMzIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEwNy42NjYgMEM5NS4zNTggMCA4Ni44NjUgNC41MDQgNzUuMTk1IDE5LjkzNSA2NC4xNCA1LjM2MSA1NS4xNTIgMCA0Mi45NyAwIDE4LjU3MyAwIDAgMjkuNzY4IDAgNjUuNDA4IDAgODYuODQ3IDEyLjEwNyA5OSAyOC40NDEgOTljMTUuNzQyIDAgMjUuMjY5LTEzLjIgMzMuNDQ1LTI3Ljc4OGw5LjY2My0xNi42NmE2NDMuNzg1IDY0My43ODUgMCAwIDEgMi44NTMtNC44NjkgNzQ2LjY2OCA3NDYuNjY4IDAgMCAxIDMuMjAyIDUuNDE2bDkuNjYzIDE2LjQ1NEM5OS42NzIgOTIuNzIgMTA4LjEyNiA5OSAxMjIuNDUgOTljMTYuNDQ4IDAgMjcuNjE3LTEzLjcyMyAyNy42MTctMzMuMjUgMC0zNy41NTItMTkuMTY4LTY1Ljc1LTQyLjQtNjUuNzVaTTU3Ljc3NCA0Ni40OTZsLTkuOCAxNi4yNWMtOS41OTUgMTUuOTc2LTEzLjYzOSAxOS41MjYtMTkuNjcgMTkuNTI2LTYuMzczIDAtMTEuMzc2LTUuMzI1LTExLjM3Ni0xNy41NDcgMC0yNC41MSAxMi4wNjItNDcuNDUxIDI2LjA0Mi00Ny40NTEgNy4yNzMgMCAxMi42NzggMy42MSAyMi4wNjIgMTcuNDg2YTU0Ny40OCA1NDcuNDggMCAwIDAtNy4yNTggMTEuNzM2Wm02NC4zMDggMzUuNzc2Yy02LjY0OCAwLTExLjAzNC00LjIzMy0yMC4wMTItMTkuMzlsLTkuNjYzLTE2LjM4NmMtMi43OS00LjczNy01LjQwMi05LjA0LTcuODgtMTIuOTQ1IDkuNzMtMTQuMjQgMTUuNTkxLTE3Ljk4NCAyMy4wMDItMTcuOTg0IDE0LjExOCAwIDI2LjIwNCAyMC45NiAyNi4yMDQgNDkuMTU4IDAgMTEuNDAzLTQuNzI5IDE3LjU0Ny0xMS42NTEgMTcuNTQ3WiIgZmlsbD0iIzAxODBGQSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDUuNjMxIDM2aC0xNi43NTljMy4wNDUgNy45NTYgNC44NjEgMTcuNzk3IDQuODYxIDI4LjcyNSAwIDExLjQwMy00LjcyOSAxNy41NDctMTEuNjUxIDE3LjU0N0gxMjJ2MTYuNzI2bC40NDkuMDAyYzE2LjQ0OCAwIDI3LjYxNy0xMy43MjMgMjcuNjE3LTMzLjI1IDAtMTAuODUtMS42LTIwLjkxNy00LjQzNS0yOS43NVoiIGZpbGw9InVybCgjOlIxZWNrbWtsZGQ2a25wYXBkNWFxSDE6KSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik00MiAuMDE2QzE4LjYzLjc3Ni44MzIgMjguOTA4LjAyOCA2M2gxNi45MkMxNy40ODMgMzkuNzE2IDI4Ljc2MiAxOC4zMTUgNDIgMTcuMzFWLjAxN1oiIGZpbGw9InVybCgjOlIxZWNrbWtsZGQ2a25wYXBkNWFxSDI6KSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Im03NS4xOTUgMTkuOTM1LjAwNy0uMDA5YzIuNDQ3IDMuMjIzIDUuMjY0IDcuMjI5IDkuMzMgMTMuNjJsLS4wMDUuMDA1YzIuNDc4IDMuOTA2IDUuMDkgOC4yMDggNy44OCAxMi45NDVsOS42NjMgMTYuMzg2YzguOTc4IDE1LjE1NyAxMy4zNjQgMTkuMzkgMjAuMDEyIDE5LjM5LjMxIDAgLjYxNy0uMDEyLjkxOC0uMDM3djE2Ljc2Yy0uMTgzLjAwMy0uMzY3LjAwNS0uNTUxLjAwNS0xNC4zMjMgMC0yMi43NzctNi4yODEtMzUuMTgyLTI3LjQ0N0w3Ny42MDQgNTUuMWwtLjYyNS0xLjA2NUw3NyA1NGMtMi4zODYtNC4xNzUtNy42MDYtMTIuNjg1LTExLjk3My0xOS4yMzJsLjAwNS0uMDA4LS42Mi0uOTFDNjMuMTUzIDMxLjk4MyA2MS45ODUgMzAuMzEzIDYxIDI5bC0uMDY2LjAyNGMtNy4wMDYtOS4xNzItMTEuODE4LTExLjc1LTE3Ljk2NC0xMS43NS0uMzI0IDAtLjY0OC4wMTItLjk3LjAzN1YuMDE2Yy4zMjItLjAxLjY0Ni0uMDE2Ljk3LS4wMTYgMTIuMTgyIDAgMjEuMTcgNS4zNiAzMi4yMjUgMTkuOTM1WiIgZmlsbD0idXJsKCM6UjFlY2tta2xkZDZrbnBhcGQ1YXFIMzopIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1cmdlci1idXR0b24iIGlkPSJzaG93UG9wdXAiIHN0eWxlPSJkaXNwbGF5OiBub25lOyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiYXIiIGJpc19za2luX2NoZWNrZWQ9IjEiPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmFyIiBiaXNfc2tpbl9jaGVja2VkPSIxIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJhciIgYmlzX3NraW5fY2hlY2tlZD0iMSI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC00IiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImxlZnQiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImxvZ28iIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtbGFiZWw9ItCb0L7Qs9C+0YLQuNC/IE1ldGEiIGNsYXNzPSIiIHJvbGU9ImltZyIgdmlld0JveD0iMCAwIDUwMCAxMDAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBpZD0iOlIxZWNrbWtsZGQ2a25wYXBkNWFxSDE6IiB4MT0iMTI0LjM4IiB4Mj0iMTYwLjgzOCIgeTE9Ijk5IiB5Mj0iNTkuMzI2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIuNDI3IiBzdG9wLWNvbG9yPSIjMDI3OEYxIj48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iLjkxNyIgc3RvcC1jb2xvcj0iIzAxODBGQSI+PC9zdG9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBpZD0iOlIxZWNrbWtsZGQ2a25wYXBkNWFxSDI6IiB4MT0iNDIiIHgyPSItMS42NjYiIHkxPSI0LjkzNiIgeTI9IjYxLjcwNyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iLjQyNyIgc3RvcC1jb2xvcj0iIzAxNjVFMCI+PC9zdG9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9Ii45MTciIHN0b3AtY29sb3I9IiMwMTgwRkEiPjwvc3RvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgaWQ9IjpSMWVja21rbGRkNmtucGFwZDVhcUgzOiIgeDE9IjI3LjY3NyIgeDI9IjEzMi45NDMiIHkxPSIyOC43MSIgeTI9IjcxLjExOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDY0RTAiPjwvc3RvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIuNjU2IiBzdG9wLWNvbG9yPSIjMDA2NkUyIj48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAyNzhGMSI+PC9zdG9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTg1LjUwOCAzLjAxaDE4LjcwNGwzMS44MDMgNTcuMzEzTDI2Ny44MTggMy4wMWgxOC4yOTd2OTQuMTc1aC0xNS4yNjR2LTcyLjE4bC0yNy44OCA0OS45NzdoLTE0LjMxOWwtMjcuODgtNDkuOTc4djcyLjE4aC0xNS4yNjRWMy4wMVpNMzM2LjI4MSA5OC44N2MtNy4wNjYgMC0xMy4yODYtMS41NjUtMTguNjM4LTQuNjc0LTUuMzUyLTMuMTItOS41MjctNy40MzQtMTIuNTI4LTEyLjk1Mi0yLjk4OS01LjUxNy00LjQ4My0xMS44MzUtNC40ODMtMTguOTczIDAtNy4yMTQgMS40NjEtMTMuNjA4IDQuMzg1LTE5LjE3IDIuOTIzLTUuNTYxIDYuOTg5LTkuOTA4IDEyLjE4Ny0xMy4wNSA1LjE5OC0zLjEzIDExLjE3Ni00LjcwNyAxNy45MjMtNC43MDcgNi43MTUgMCAxMi40ODQgMS41ODcgMTcuMzE5IDQuNzQgNC44NDcgMy4xNjQgOC41NzIgNy41OTggMTEuMTc3IDEzLjI5MSAyLjYxNSA1LjY5MyAzLjkyMyAxMi4zNzEgMy45MjMgMjAuMDQ2djQuMTcxaC01MS43OTNjLjk0NSA1LjczNyAzLjI3NSAxMC4yNTggNi45ODkgMTMuNTU0IDMuNzE1IDMuMjk1IDguNDA3IDQuOTM3IDE0LjA3OCA0LjkzNyA0LjU0OSAwIDguNDYxLS42NjcgMTEuNzQ3LTIuMDE0IDMuMjg2LTEuMzQ3IDYuMzc0LTMuMzgzIDkuMjUzLTYuMTJsOC4wOTkgOS44ODZjLTguMDU1IDcuMzU3LTE3LjkzNCAxMS4wMzYtMjkuNjM4IDExLjAzNlptMTEuMTQzLTU1Ljg2N2MtMy4xOTgtMy4yNTItNy4zODUtNC44NzItMTIuNTYtNC44NzItNS4wNDUgMC05LjI2NCAxLjY1My0xMi42NiA0Ljk3LTMuNDA3IDMuMzE4LTUuNTUgNy43ODQtNi40NTEgMTMuMzloMzcuMTMzYy0uNDUxLTUuNzM3LTIuMjc1LTEwLjIzNy01LjQ2Mi0xMy40ODhaTTM4Ni41MTMgMzkuNDY3aC0xNC4wNDRWMjcuMDNoMTQuMDQ0VjYuNDQ3aDE0LjcxNVYyNy4wM2gyMS4zNDF2MTIuNDM3aC0yMS4zNDF2MzEuNTUyYzAgNS4yNDQuOTAxIDguOTg4IDIuNzAzIDExLjIzMyAxLjgwMyAyLjI0NCA0Ljg4IDMuMzYgOS4yNTMgMy4zNiAxLjkzNSAwIDMuNTcyLS4wNzYgNC45MjQtLjIzYTk3Ljk5MiA5Ny45OTIgMCAwIDAgNC40NjEtLjY0NXYxMi4zMTZjLTEuNjcuNDkzLTMuNTQ5Ljg5OC01LjYzNyAxLjIwNS0yLjA5OS4zMTctNC4yODYuNDctNi41ODMuNDctMTUuODkgMC0yMy44MzYtOC42NDktMjMuODM2LTI1Ljk1N1YzOS40NjdaTTUwMCA5Ny4xODVoLTE0LjQ0di05LjgyYy0yLjU3MSAzLjY3OC01LjgzNSA2LjUxMy05Ljc5MSA4LjUwNi0zLjk2OCAxLjk5My04LjQ2MiAzLTEzLjUwNiAzLTYuMjA5IDAtMTEuNzE1LTEuNTg4LTE2LjUwNi00Ljc1Mi00LjgwMy0zLjE1My04LjU3Mi03LjUxLTExLjMwOC0xMy4wMzktMi43NDgtNS41NC00LjEyMS0xMS44NzktNC4xMjEtMTkuMDA2IDAtNy4xNyAxLjM5NS0xMy41MiA0LjE4Ny0xOS4wMzggMi43OTEtNS41MTggNi42NDgtOS44NDMgMTEuNTcxLTEyLjk4NSA0LjkzNS0zLjEzIDEwLjU5NC00LjcwNyAxNi45OS00LjcwNyA0LjgxMyAwIDkuMTMyLjkzIDEyLjk1NiAyLjc5MWEyNS43MDggMjUuNzA4IDAgMCAxIDkuNTI4IDcuOTA1di05LjAxSDUwMHY3MC4xNTVabS0xNC43MTUtNDUuNjFjLTEuNTcxLTMuOTg1LTQuMDY2LTcuMTM4LTcuNDYxLTkuNDQ4LTMuMzk2LTIuMzEtNy4zMy0zLjQ2LTExLjc4MS0zLjQ2LTYuMzA4IDAtMTEuMzE5IDIuMTAyLTE1LjA1NSA2LjMxNy0zLjczNyA0LjIxNS01LjYwNSA5LjkyLTUuNjA1IDE3LjA5IDAgNy4yMTUgMS44MDIgMTIuOTQgNS4zOTYgMTcuMTU2IDMuNjA0IDQuMjE1IDguNDg0IDYuMzE3IDE0LjY2IDYuMzE3IDQuNTM4IDAgOC41OTMtMS4xNiAxMi4xNTQtMy40OTIgMy41NDktMi4zMzIgNi4xMjEtNS40NzUgNy42OTItOS40MjdWNTEuNTc1WiIgZmlsbD0iIzFDMkIzMyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEwNy42NjYgMEM5NS4zNTggMCA4Ni44NjUgNC41MDQgNzUuMTk1IDE5LjkzNSA2NC4xNCA1LjM2MSA1NS4xNTIgMCA0Mi45NyAwIDE4LjU3MyAwIDAgMjkuNzY4IDAgNjUuNDA4IDAgODYuODQ3IDEyLjEwNyA5OSAyOC40NDEgOTljMTUuNzQyIDAgMjUuMjY5LTEzLjIgMzMuNDQ1LTI3Ljc4OGw5LjY2My0xNi42NmE2NDMuNzg1IDY0My43ODUgMCAwIDEgMi44NTMtNC44NjkgNzQ2LjY2OCA3NDYuNjY4IDAgMCAxIDMuMjAyIDUuNDE2bDkuNjYzIDE2LjQ1NEM5OS42NzIgOTIuNzIgMTA4LjEyNiA5OSAxMjIuNDUgOTljMTYuNDQ4IDAgMjcuNjE3LTEzLjcyMyAyNy42MTctMzMuMjUgMC0zNy41NTItMTkuMTY4LTY1Ljc1LTQyLjQtNjUuNzVaTTU3Ljc3NCA0Ni40OTZsLTkuOCAxNi4yNWMtOS41OTUgMTUuOTc2LTEzLjYzOSAxOS41MjYtMTkuNjcgMTkuNTI2LTYuMzczIDAtMTEuMzc2LTUuMzI1LTExLjM3Ni0xNy41NDcgMC0yNC41MSAxMi4wNjItNDcuNDUxIDI2LjA0Mi00Ny40NTEgNy4yNzMgMCAxMi42NzggMy42MSAyMi4wNjIgMTcuNDg2YTU0Ny40OCA1NDcuNDggMCAwIDAtNy4yNTggMTEuNzM2Wm02NC4zMDggMzUuNzc2Yy02LjY0OCAwLTExLjAzNC00LjIzMy0yMC4wMTItMTkuMzlsLTkuNjYzLTE2LjM4NmMtMi43OS00LjczNy01LjQwMi05LjA0LTcuODgtMTIuOTQ1IDkuNzMtMTQuMjQgMTUuNTkxLTE3Ljk4NCAyMy4wMDItMTcuOTg0IDE0LjExOCAwIDI2LjIwNCAyMC45NiAyNi4yMDQgNDkuMTU4IDAgMTEuNDAzLTQuNzI5IDE3LjU0Ny0xMS42NTEgMTcuNTQ3WiIgZmlsbD0iIzAxODBGQSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE0NS42MzEgMzZoLTE2Ljc1OWMzLjA0NSA3Ljk1NiA0Ljg2MSAxNy43OTcgNC44NjEgMjguNzI1IDAgMTEuNDAzLTQuNzI5IDE3LjU0Ny0xMS42NTEgMTcuNTQ3SDEyMnYxNi43MjZsLjQ0OS4wMDJjMTYuNDQ4IDAgMjcuNjE3LTEzLjcyMyAyNy42MTctMzMuMjUgMC0xMC44NS0xLjYtMjAuOTE3LTQuNDM1LTI5Ljc1WiIgZmlsbD0idXJsKCM6UjFlY2tta2xkZDZrbnBhcGQ1YXFIMTopIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDIgLjAxNkMxOC42My43NzYuODMyIDI4LjkwOC4wMjggNjNoMTYuOTJDMTcuNDgzIDM5LjcxNiAyOC43NjIgMTguMzE1IDQyIDE3LjMxVi4wMTdaIiBmaWxsPSJ1cmwoIzpSMWVja21rbGRkNmtucGFwZDVhcUgyOikiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Im03NS4xOTUgMTkuOTM1LjAwNy0uMDA5YzIuNDQ3IDMuMjIzIDUuMjY0IDcuMjI5IDkuMzMgMTMuNjJsLS4wMDUuMDA1YzIuNDc4IDMuOTA2IDUuMDkgOC4yMDggNy44OCAxMi45NDVsOS42NjMgMTYuMzg2YzguOTc4IDE1LjE1NyAxMy4zNjQgMTkuMzkgMjAuMDEyIDE5LjM5LjMxIDAgLjYxNy0uMDEyLjkxOC0uMDM3djE2Ljc2Yy0uMTgzLjAwMy0uMzY3LjAwNS0uNTUxLjAwNS0xNC4zMjMgMC0yMi43NzctNi4yODEtMzUuMTgyLTI3LjQ0N0w3Ny42MDQgNTUuMWwtLjYyNS0xLjA2NUw3NyA1NGMtMi4zODYtNC4xNzUtNy42MDYtMTIuNjg1LTExLjk3My0xOS4yMzJsLjAwNS0uMDA4LS42Mi0uOTFDNjMuMTUzIDMxLjk4MyA2MS45ODUgMzAuMzEzIDYxIDI5bC0uMDY2LjAyNGMtNy4wMDYtOS4xNzItMTEuODE4LTExLjc1LTE3Ljk2NC0xMS43NS0uMzI0IDAtLjY0OC4wMTItLjk3LjAzN1YuMDE2Yy4zMjItLjAxLjY0Ni0uMDE2Ljk3LS4wMTYgMTIuMTgyIDAgMjEuMTcgNS4zNiAzMi4yMjUgMTkuOTM1WiIgZmlsbD0idXJsKCM6UjFlY2tta2xkZDZrbnBhcGQ1YXFIMzopIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMT5Qcml2YWN5IENlbnRlcjwvaDE+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iYWN0aW9uLWJ1dHRvbnMiIGJpc19za2luX2NoZWNrZWQ9IjEiPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiBhY2NvdW50IiBpZD0idXRtLXVzZXIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWltZyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiB2aWV3Qm94PSIwIDAgMjU2IDI1NiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDA7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IG5vbmU7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuNDA2NTkzNDA2NTkzNDAxNiAxLjQwNjU5MzQwNjU5MzQwMTYpIHNjYWxlKDIuODEgMi44MSkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTSA0NSA4OCBjIC0xMS4wNDkgMCAtMjEuMTggLTIuMDAzIC0yOS4wMjEgLTguNjM0IEMgNi4yMTIgNzEuMTA1IDAgNTguNzY0IDAgNDUgQyAwIDIwLjE4NyAyMC4xODcgMCA0NSAwIGMgMjQuODEzIDAgNDUgMjAuMTg3IDQ1IDQ1IGMgMCAxMy43NjUgLTYuMjEyIDI2LjEwNSAtMTUuOTc5IDM0LjM2NiBDIDY2LjE4MSA4NS45OTggNTYuMDQ5IDg4IDQ1IDg4IHoiIHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMTsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiAxMDsgZmlsbDogcmdiKDIxNCwyMTQsMjE0KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3JtPSIgbWF0cml4KDEgMCAwIDEgMCAwKSAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTSA0NSA2MC43MSBjIC0xMS40NzkgMCAtMjAuODE4IC05LjMzOSAtMjAuODE4IC0yMC44MTcgYyAwIC0xMS40NzkgOS4zMzkgLTIwLjgxOCAyMC44MTggLTIwLjgxOCBjIDExLjQ3OSAwIDIwLjgxNyA5LjMzOSAyMC44MTcgMjAuODE4IEMgNjUuODE3IDUxLjM3MSA1Ni40NzkgNjAuNzEgNDUgNjAuNzEgeiIgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOyBmaWxsOiByZ2IoMTY1LDE2NCwxNjQpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IiB0cmFuc2Zvcm09IiBtYXRyaXgoMSAwIDAgMSAwIDApICIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNIDQ1IDkwIGMgLTEwLjYxMyAwIC0yMC45MjIgLTMuNzczIC0yOS4wMjggLTEwLjYyNSBjIC0wLjY0OCAtMC41NDggLTAuODggLTEuNDQ0IC0wLjU3OSAtMi4yMzcgQyAyMC4wMzQgNjQuOTE5IDMxLjkzMyA1Ni43MSA0NSA1Ni43MSBzIDI0Ljk2NiA4LjIwOSAyOS42MDcgMjAuNDI4IGMgMC4zMDEgMC43OTMgMC4wNjkgMS42ODkgLTAuNTc5IDIuMjM3IEMgNjUuOTIyIDg2LjIyNyA1NS42MTMgOTAgNDUgOTAgeiIgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOyBmaWxsOiByZ2IoMTY1LDE2NCwxNjQpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IiB0cmFuc2Zvcm09IiBtYXRyaXgoMSAwIDAgMSAwIDApICIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0IFVzZXJOYW1lIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIG1haW4gY29sbGFwc2VkIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJ4MWxsaWlocSB4MWs5MG1zdSB4Mmg3cm1qIHgxcWZ1enRxIHgxOThnM3EwIHh4azB6MTEgeHZ5NGQxcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJtMTkuMDA3IDkuOTk3LTYuMzM4LTUuNzA0YTEgMSAwIDAgMC0xLjMzOCAwTDQuOTkzIDkuOTk3QTMgMyAwIDAgMCA0IDEyLjIyN3Y2LjYxYzAgLjIxNi4wNy4zOC4xNDkuNDhhLjQzMi40MzIgMCAwIDAgLjI4NC4xNjdjLjg2LjE0IDIuMDQuMjkgMy41NjcuMzkxVjE2YTMgMyAwIDAgMSAzLTNoMmEzIDMgMCAwIDEgMyAzdjMuODc1YTM3Ljg5NSAzNy44OTUgMCAwIDAgMy41NjctLjM5LjQzMi40MzIgMCAwIDAgLjI4NC0uMTY4Ljc3My43NzMgMCAwIDAgLjE0OS0uNDh2LTYuNjFhMyAzIDAgMCAwLS45OTMtMi4yM3pNMy42NTUgOC41MWw2LjMzOC01LjcwNGEzIDMgMCAwIDEgNC4wMTQgMGw2LjMzOCA1LjcwNEE1IDUgMCAwIDEgMjIgMTIuMjI3djYuNjFjMCAxLjI5Mi0uODM2IDIuNDEzLTIuMTEgMi42MjEtLjk0LjE1My0yLjIwOC4zMTItMy44MzMuNDE4LTEuMTI1LjA3My0yLjA1Ny0uODM2LTIuMDU3LTEuOTY0VjE2YTEgMSAwIDAgMC0xLTFoLTJhMSAxIDAgMCAwLTEgMXYzLjkxMmMwIDEuMTI4LS45MzIgMi4wMzctMi4wNTcgMS45NjRhNDAuMDkyIDQwLjA5MiAwIDAgMS0zLjgzMi0uNDE4QzIuODM2IDIxLjI1IDIgMjAuMTMgMiAxOC44Mzh2LTYuNjExQTUgNSAwIDAgMSAzLjY1NSA4LjUxeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcml2YWN5IENlbnRlciBIb21lIFBhZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiBjb2xsYXBzZWQiIGlkPSJzZWFyY2giIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9IngxbGxpaWhxIHgxazkwbXN1IHgyaDdybWogeDFxZnV6dHEgeDE5OGczcTAgeHhrMHoxMSB4dnk0ZDFwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNi42MTggMTguMDMyYTkgOSAwIDEgMSAxLjQxNC0xLjQxNGwzLjY3NSAzLjY3NWExIDEgMCAwIDEtMS40MTQgMS40MTRsLTMuNjc1LTMuNjc1ek0xOCAxMWE3IDcgMCAxIDEtMTQgMCA3IDcgMCAwIDEgMTQgMHoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VhcmNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIGNvbGxhcHNlZCIgaWQ9IlBvbGljeSIgZGF0YS1icy10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLWJzLXRhcmdldD0iI1BvbGljeUNvbGxhcHNlIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1jb250cm9scz0iUG9saWN5Q29sbGFwc2UiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9IngxbGxpaWhxIHgxazkwbXN1IHgyaDdybWogeDFxZnV6dHEgeDE5OGczcTAgeHhrMHoxMSB4dnk0ZDFwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEyIDEyYTIgMiAwIDAgMSAxIDMuNzMyVjE3YTEgMSAwIDEgMS0yIDB2LTEuMjY4QTIgMiAwIDAgMSAxMiAxMnoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03IDZhNSA1IDAgMCAxIDEwIDB2MmguODU3YzEuMjgyIDAgMi40MTcuODE4IDIuNjY0IDIuMDc2QTI1LjcxIDI1LjcxIDAgMCAxIDIxIDE1YTI1LjcxIDI1LjcxIDAgMCAxLS40NzkgNC45MjRDMjAuMjc0IDIxLjE4MiAxOS4xNCAyMiAxNy44NTcgMjJINi4xNDNjLTEuMjgyIDAtMi40MTctLjgxOC0yLjY2NC0yLjA3NkEyNS43MTEgMjUuNzExIDAgMCAxIDMgMTVjMC0xLjk4NC4yMzYtMy42OTIuNDc5LTQuOTI0QzMuNzI2IDguODE4IDQuODYgOCA2LjE0MyA4SDdWNnptOCAwdjJIOVY2YTMgMyAwIDEgMSA2IDB6bS04Ljg1NyA0aDExLjcxNGEuODQuODQgMCAwIDEgLjUwOC4xNTdjLjEwNy4wODIuMTcuMTgyLjE5NC4zMDUuMjIzIDEuMTMzLjQ0MSAyLjcxLjQ0MSA0LjUzOCAwIDEuODI4LS4yMTggMy40MDUtLjQ0MSA0LjUzOGEuNDg4LjQ4OCAwIDAgMS0uMTk0LjMwNS44NC44NCAwIDAgMS0uNTA4LjE1N0g2LjE0M2EuODQuODQgMCAwIDEtLjUwOC0uMTU3LjQ4OS40ODkgMCAwIDEtLjE5NC0uMzA1QTIzLjcxMiAyMy43MTIgMCAwIDEgNSAxNWMwLTEuODI4LjIxOC0zLjQwNS40NDEtNC41MzhhLjQ4OS40ODkgMCAwIDEgLjE5NC0uMzA1Ljg0Ljg0IDAgMCAxIC41MDgtLjE1N3oiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpdmFjeSBQb2xpY3kKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iQVJST1ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQuMzQxIDcuMjQ3YTEgMSAwIDAgMSAxLjQxMi4wOTVMMTIgMTQuNDgybDYuMjQ3LTcuMTRhMSAxIDAgMCAxIDEuNTA2IDEuMzE3bC03IDhhMSAxIDAgMCAxLTEuNTA2IDBsLTctOGExIDEgMCAwIDEgLjA5NS0xLjQxMnoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xsYXBzZSAiIGlkPSJQb2xpY3lDb2xsYXBzZSIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24iIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiIGJpc19za2luX2NoZWNrZWQ9IjEiPldoYXQgaXMgdGhlIFByaXZhY3kgUG9saWN5IGFuZCB3aGF0IGRvZXMgaXQgY292ZXI/PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24iIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiIGJpc19za2luX2NoZWNrZWQ9IjEiPldoYXQgaW5mb3JtYXRpb24gZG8gd2UgY29sbGVjdD88L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+SG93IGRvIHdlIHVzZSB5b3VyIGluZm9ybWF0aW9uPzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWltZyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj5Ib3cgZG8gd2Ugc2hhcmUgeW91ciBpbmZvcm1hdGlvbiBvbiBNZXRhIFByb2R1Y3RzIG9yIHdpdGggaW50ZWdyYXRlZCBwYXJ0bmVycz88L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+SG93IGRvIHdlIHNoYXJlIGluZm9ybWF0aW9uIHdpdGggdGhpcmQgcGFydGllcz88L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+SG93IGlzIHRoZSBjb29wZXJhdGlvbiBiZXR3ZWVuIE1ldGEgQ29tcGFuaWVzIG9yZ2FuaXplZD88L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+SG93IGNhbiB5b3UgbWFuYWdlIG9yIGRlbGV0ZSB5b3VyIGluZm9ybWF0aW9uIGFuZCBleGVyY2lzZSB5b3VyIHJpZ2h0cz88L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+SG93IGxvbmcgZG8gd2Uga2VlcCB5b3VyIGluZm9ybWF0aW9uPzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWltZyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj5Ib3cgZG8gd2UgdHJhbnNtaXQgaW5mb3JtYXRpb24/PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24iIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiIGJpc19za2luX2NoZWNrZWQ9IjEiPkhvdyBkbyB3ZSByZXNwb25kIHRvIG9mZmljaWFsIHJlcXVlc3RzLCBjb21wbHkgd2l0aCBhcHBsaWNhYmxlIGxhd3MsIGFuZCBwcmV2ZW50IGhhcm0/PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24iIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiIGJpc19za2luX2NoZWNrZWQ9IjEiPkhvdyB3aWxsIHlvdSBrbm93IHdoZW4gdGhlIHBvbGljeSBjaGFuZ2VzPzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWltZyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj5Ib3cgdG8gYXNrIE1ldGEgcXVlc3Rpb25zPzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWltZyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj5XaHkgYW5kIGhvdyB3ZSBwcm9jZXNzIHlvdXIgZGF0YTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWltZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0Ij5XaGF0IGlzIHRoZSBQcml2YWN5IFBvbGljeSBhbmQgd2hhdCBkb2VzIGl0IGNvdmVyPzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyI+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWltZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0Ij5XaGF0IGluZm9ybWF0aW9uIGRvIHdlIGNvbGxlY3Q/PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93Ij4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiPkhvdyBkbyB3ZSB1c2UgeW91ciBpbmZvcm1hdGlvbj88L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCI+SG93IGRvIHdlIHNoYXJlIHlvdXIgaW5mb3JtYXRpb24gb24gTWV0YSBQcm9kdWN0cyBvciB3aXRoIGludGVncmF0ZWQgcGFydG5lcnM/PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93Ij4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiPkhvdyBkbyB3ZSBzaGFyZSBpbmZvcm1hdGlvbiB3aXRoIHRoaXJkIHBhcnRpZXM/PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93Ij4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiPkhvdyBpcyB0aGUgY29vcGVyYXRpb24gYmV0d2VlbiBNZXRhIENvbXBhbmllcyBvcmdhbml6ZWQ/PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93Ij4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiPkhvdyBjYW4geW91IG1hbmFnZSBvciBkZWxldGUgeW91ciBpbmZvcm1hdGlvbiBhbmQgZXhlcmNpc2UgeW91ciByaWdodHM/PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93Ij4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiPkhvdyBsb25nIGRvIHdlIGtlZXAgeW91ciBpbmZvcm1hdGlvbj88L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCI+SG93IGRvIHdlIHRyYW5zbWl0IGluZm9ybWF0aW9uPzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyI+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWltZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0Ij5Ib3cgZG8gd2UgcmVzcG9uZCB0byBvZmZpY2lhbCByZXF1ZXN0cywgY29tcGx5IHdpdGggYXBwbGljYWJsZSBsYXdzLCBhbmQgcHJldmVudCBoYXJtPzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyI+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWltZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0Ij5Ib3cgd2lsbCB5b3Uga25vdyB3aGVuIHRoZSBwb2xpY3kgY2hhbmdlcz88L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCI+SG93IHRvIGFzayBNZXRhIHF1ZXN0aW9ucz88L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCI+V2h5IGFuZCBob3cgd2UgcHJvY2VzcyB5b3VyIGRhdGE8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIGNvbGxhcHNlZCIgZGF0YS1icy10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLWJzLXRhcmdldD0iI1J1bGVzQ29sbGFwc2UiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWNvbnRyb2xzPSJSdWxlc0NvbGxhcHNlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJ4MWxsaWlocSB4MWs5MG1zdSB4Mmg3cm1qIHgxcWZ1enRxIHgxOThnM3EwIHh4azB6MTEgeHZ5NGQxcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTIgMjFhOSA5IDAgMSAwIDAtMTggOSA5IDAgMCAwIDAgMTh6bTAgMmM2LjA3NSAwIDExLTQuOTI1IDExLTExUzE4LjA3NSAxIDEyIDEgMSA1LjkyNSAxIDEyczQuOTI1IDExIDExIDExem0wLTEzLjcwMmMuNDgzIDAgLjg3NS4zOTEuODc1Ljg3NVYxN2EuODc1Ljg3NSAwIDAgMS0xLjc1IDB2LTYuODI3YzAtLjQ4NC4zOTItLjg3NS44NzUtLjg3NXptMC0xLjI3NWMuODMzIDAgMS4yNS0uNDA1IDEuMjUtMS4wMTJDMTMuMjUgNi40MDUgMTIuODMzIDYgMTIgNnMtMS4yNS40MDUtMS4yNSAxLjAxMWMwIC42MDcuNDE3IDEuMDEyIDEuMjUgMS4wMTJ6Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyIHJ1bGVzIGFuZCBhcnRpY2xlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJBUlJPVyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNC4zNDEgNy4yNDdhMSAxIDAgMCAxIDEuNDEyLjA5NUwxMiAxNC40ODJsNi4yNDctNy4xNGExIDEgMCAwIDEgMS41MDYgMS4zMTdsLTcgOGExIDEgMCAwIDEtMS41MDYgMGwtNy04YTEgMSAwIDAgMSAuMDk1LTEuNDEyeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sbGFwc2UiIGlkPSJSdWxlc0NvbGxhcHNlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+Q29va2llIFBvbGljeTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWltZyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj5JbmZvcm1hdGlvbiBmb3IgdGhvc2Ugd2hvIGRvIG5vdCB1c2UgTWV0YSBQcm9kdWN0czwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iIj48cGF0aCBkPSJNNiAxOWgxMmExIDEgMCAwIDAgMS0xdi01aDJ2NWEzIDMgMCAwIDEtMyAzSDZhMyAzIDAgMCAxLTMtM1Y2YTMgMyAwIDAgMSAzLTNoNXYySDZhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxeiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMS4yOTMgMTEuMjkzIDE3LjU4NSA1SDE0YTEgMSAwIDEgMSAwLTJoNmExIDEgMCAwIDEgMSAxdjZhMSAxIDAgMSAxLTIgMFY2LjQxNGwtNi4yOTMgNi4yOTNhMSAxIDAgMCAxLTEuNDE0LTEuNDE0eiI+PC9wYXRoPjwvc3ZnPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24iIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiIGJpc19za2luX2NoZWNrZWQ9IjEiPkhvdyBNZXRhIHVzZXMgaW5mb3JtYXRpb24gZm9yIGdlbmVyYXRpdmUgQUkgbW9kZWxzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24iIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiIGJpc19za2luX2NoZWNrZWQ9IjEiPkRhdGEgVHJhbnNmZXIgRnJhbWV3b3JrIFBvbGljeTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWltZyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj5PdGhlciB0ZXJtcyBhbmQgY29uZGl0aW9uczwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iIj48cGF0aCBkPSJNNiAxOWgxMmExIDEgMCAwIDAgMS0xdi01aDJ2NWEzIDMgMCAwIDEtMyAzSDZhMyAzIDAgMCAxLTMtM1Y2YTMgMyAwIDAgMSAzLTNoNXYySDZhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxeiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMS4yOTMgMTEuMjkzIDE3LjU4NSA1SDE0YTEgMSAwIDEgMSAwLTJoNmExIDEgMCAwIDEgMSAxdjZhMSAxIDAgMSAxLTIgMFY2LjQxNGwtNi4yOTMgNi4yOTNhMSAxIDAgMCAxLTEuNDE0LTEuNDE0eiI+PC9wYXRoPjwvc3ZnPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiPkNvb2tpZSBQb2xpY3k8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCI+SW5mb3JtYXRpb24gZm9yIHRob3NlIHdobyBkbyBub3QgdXNlIE1ldGEgUHJvZHVjdHM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9IiI+PHBhdGggZD0iTTYgMTloMTJhMSAxIDAgMCAwIDEtMXYtNWgydjVhMyAzIDAgMCAxLTMgM0g2YTMgMyAwIDAgMS0zLTNWNmEzIDMgMCAwIDEgMy0zaDV2Mkg2YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMXoiPjwvcGF0aD48cGF0aCBkPSJNMTEuMjkzIDExLjI5MyAxNy41ODUgNUgxNGExIDEgMCAxIDEgMC0yaDZhMSAxIDAgMCAxIDEgMXY2YTEgMSAwIDEgMS0yIDBWNi40MTRsLTYuMjkzIDYuMjkzYTEgMSAwIDAgMS0xLjQxNC0xLjQxNHoiPjwvcGF0aD48L3N2Zz48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWltZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0Ij5Ib3cgTWV0YSB1c2VzIGluZm9ybWF0aW9uIGZvciBnZW5lcmF0aXZlIEFJIG1vZGVsczwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyI+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWltZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0Ij5EYXRhIFRyYW5zZmVyIEZyYW1ld29yayBQb2xpY3k8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCI+T3RoZXIgdGVybXMgYW5kIGNvbmRpdGlvbnM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9IiI+PHBhdGggZD0iTTYgMTloMTJhMSAxIDAgMCAwIDEtMXYtNWgydjVhMyAzIDAgMCAxLTMgM0g2YTMgMyAwIDAgMS0zLTNWNmEzIDMgMCAwIDEgMy0zaDV2Mkg2YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMXoiPjwvcGF0aD48cGF0aCBkPSJNMTEuMjkzIDExLjI5MyAxNy41ODUgNUgxNGExIDEgMCAxIDEgMC0yaDZhMSAxIDAgMCAxIDEgMXY2YTEgMSAwIDEgMS0yIDBWNi40MTRsLTYuMjkzIDYuMjkzYTEgMSAwIDAgMS0xLjQxNC0xLjQxNHoiPjwvcGF0aD48L3N2Zz48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24gY29sbGFwc2VkIiBkYXRhLWJzLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtYnMtdGFyZ2V0PSIjU2V0dGluZ0NvbGxhcHNlIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1jb250cm9scz0iU2V0dGluZ0NvbGxhcHNlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJ4MWxsaWlocSB4MWs5MG1zdSB4Mmg3cm1qIHgxcWZ1enRxIHgxOThnM3EwIHh4azB6MTEgeHZ5NGQxcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTYgMTJhNCA0IDAgMSAxLTggMCA0IDQgMCAwIDEgOCAwem0tMiAwYTIgMiAwIDEgMS00IDAgMiAyIDAgMCAxIDQgMHoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJtMjIuMTkxIDkuMjA3LTIuMjI0IDIuMDZhOC4xMTIgOC4xMTIgMCAwIDEgMCAxLjQ2NmwyLjIyNCAyLjA2YTEgMSAwIDAgMSAuMTg3IDEuMjMzbC0xLjcwMiAyLjk0OGExIDEgMCAwIDEtMS4xNjIuNDU1bC0yLjg5NS0uODk2YTcuOTkxIDcuOTkxIDAgMCAxLTEuMjcuNzM1bC0uNjcyIDIuOTU0YTEgMSAwIDAgMS0uOTc1Ljc3OEgxMC4zYTEgMSAwIDAgMS0uOTc1LS43NzhsLS42NzItMi45NTRhOCA4IDAgMCAxLTEuMjctLjczNWwtMi44OTUuODk2YTEgMSAwIDAgMS0xLjE2Mi0uNDU1bC0xLjcwMi0yLjk0OGExIDEgMCAwIDEgLjE4Ny0xLjIzM2wyLjIyNC0yLjA2YTguMSA4LjEgMCAwIDEgMC0xLjQ2NkwxLjgxIDkuMjA3YTEgMSAwIDAgMS0uMTg3LTEuMjMzbDEuNzAyLTIuOTQ4YTEgMSAwIDAgMSAxLjE2Mi0uNDU1bDIuODk1Ljg5NmE3Ljk5MiA3Ljk5MiAwIDAgMSAxLjI3LS43MzVsLjY3Mi0yLjk1NEExIDEgMCAwIDEgMTAuMjk5IDFoMy40MDNhMSAxIDAgMCAxIC45NzUuNzc4bC42NzIgMi45NTRhNy45OSA3Ljk5IDAgMCAxIDEuMjcuNzM1bDIuODk1LS44OTZhMSAxIDAgMCAxIDEuMTYyLjQ1NWwxLjcwMiAyLjk0OGExIDEgMCAwIDEtLjE4NyAxLjIzM3ptLTguNTc0LTMuMDcxLjg5NC40MTJjLjMzNS4xNTUuNjUzLjM0Ljk1Mi41NTFsLjgwNS41NyAzLjA3NS0uOTUxLjkwMyAxLjU2NC0yLjM2IDIuMTg2LjA5Ljk4YTYuMDkzIDYuMDkzIDAgMCAxIDAgMS4xMDRsLS4wOS45OCAyLjM2IDIuMTg1LS45MDMgMS41NjUtMy4wNzUtLjk1MS0uODA1LjU3YTUuOTkzIDUuOTkzIDAgMCAxLS45NTIuNTVsLS44OTQuNDEzTDEyLjkwNCAyMWgtMS44MDdsLS43MTMtMy4xMzYtLjg5NC0uNDEyYTUuOTkzIDUuOTkzIDAgMCAxLS45NTItLjU1MWwtLjgwNS0uNTctMy4wNzUuOTUxLS45MDQtMS41NjUgMi4zNi0yLjE4NS0uMDg5LS45OGE2LjEwMiA2LjEwMiAwIDAgMSAwLTEuMTA0bC4wOS0uOTgtMi4zNi0yLjE4Ni45MDMtMS41NjQgMy4wNzUuOTUxLjgwNS0uNTdjLjI5OS0uMjEyLjYxNy0uMzk2Ljk1Mi0uNTVsLjg5NC0uNDEzTDExLjA5NyAzaDEuODA3bC43MTMgMy4xMzZ6Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9IkFSUk9XIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00LjM0MSA3LjI0N2ExIDEgMCAwIDEgMS40MTIuMDk1TDEyIDE0LjQ4Mmw2LjI0Ny03LjE0YTEgMSAwIDAgMSAxLjUwNiAxLjMxN2wtNyA4YTEgMSAwIDAgMS0xLjUwNiAwbC03LThhMSAxIDAgMCAxIC4wOTUtMS40MTJ6Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xsYXBzZSAiIGlkPSJTZXR0aW5nQ29sbGFwc2UiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWltZyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zz48L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj5GYWNlYm9vayBTZXR0aW5nczwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iIj48cGF0aCBkPSJNNiAxOWgxMmExIDEgMCAwIDAgMS0xdi01aDJ2NWEzIDMgMCAwIDEtMyAzSDZhMyAzIDAgMCAxLTMtM1Y2YTMgMyAwIDAgMSAzLTNoNXYySDZhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxeiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMS4yOTMgMTEuMjkzIDE3LjU4NSA1SDE0YTEgMSAwIDEgMSAwLTJoNmExIDEgMCAwIDEgMSAxdjZhMSAxIDAgMSAxLTIgMFY2LjQxNGwtNi4yOTMgNi4yOTNhMSAxIDAgMCAxLTEuNDE0LTEuNDE0eiI+PC9wYXRoPjwvc3ZnPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24iIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiIGJpc19za2luX2NoZWNrZWQ9IjEiPkluc3RhZ3JhbSBTZXR0aW5nczwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iIj48cGF0aCBkPSJNNiAxOWgxMmExIDEgMCAwIDAgMS0xdi01aDJ2NWEzIDMgMCAwIDEtMyAzSDZhMyAzIDAgMCAxLTMtM1Y2YTMgMyAwIDAgMSAzLTNoNXYySDZhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxeiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMS4yOTMgMTEuMjkzIDE3LjU4NSA1SDE0YTEgMSAwIDEgMSAwLTJoNmExIDEgMCAwIDEgMSAxdjZhMSAxIDAgMSAxLTIgMFY2LjQxNGwtNi4yOTMgNi4yOTNhMSAxIDAgMCAxLTEuNDE0LTEuNDE0eiI+PC9wYXRoPjwvc3ZnPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiPkZhY2Vib29rIFNldHRpbmdzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93Ij48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSIiPjxwYXRoIGQ9Ik02IDE5aDEyYTEgMSAwIDAgMCAxLTF2LTVoMnY1YTMgMyAwIDAgMS0zIDNINmEzIDMgMCAwIDEtMy0zVjZhMyAzIDAgMCAxIDMtM2g1djJINmExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDF6Ij48L3BhdGg+PHBhdGggZD0iTTExLjI5MyAxMS4yOTMgMTcuNTg1IDVIMTRhMSAxIDAgMSAxIDAtMmg2YTEgMSAwIDAgMSAxIDF2NmExIDEgMCAxIDEtMiAwVjYuNDE0bC02LjI5MyA2LjI5M2ExIDEgMCAwIDEtMS40MTQtMS40MTR6Ij48L3BhdGg+PC9zdmc+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmc+PC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCI+SW5zdGFncmFtIFNldHRpbmdzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93Ij48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSIiPjxwYXRoIGQ9Ik02IDE5aDEyYTEgMSAwIDAgMCAxLTF2LTVoMnY1YTMgMyAwIDAgMS0zIDNINmEzIDMgMCAwIDEtMy0zVjZhMyAzIDAgMCAxIDMtM2g1djJINmExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDF6Ij48L3BhdGg+PHBhdGggZD0iTTExLjI5MyAxMS4yOTMgMTcuNTg1IDVIMTRhMSAxIDAgMSAxIDAtMmg2YTEgMSAwIDAgMSAxIDF2NmExIDEgMCAxIDEtMiAwVjYuNDE0bC02LjI5MyA2LjI5M2ExIDEgMCAwIDEtMS40MTQtMS40MTR6Ij48L3BhdGg+PC9zdmc+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC04IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InJpZ2h0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8aDE+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIuLi9pbWcvYmxvY2tfMi5wbmciIGFsdD0iIiBzdHlsZT0iaGVpZ2h0OiA1MHB4OyB3aWR0aDo1MHB4OyBtYXJnaW4tcmlnaHQ6IDhweDsiPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlbiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+V2UgaGF2ZSBzY2hlZHVsZWQgeW91ciBhZCBhY2NvdW50IGFuZCBwYWdlcyBmb3IgZGVsZXRpb248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5XaXIgaGFiZW4gZGllIEzDtnNjaHVuZyBJaHJlcyBXZXJiZWtvbnRvcyB1bmQgSWhyZXIgU2VpdGVuIGdlcGxhbnQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Ob3VzIGF2b25zIHByw6l2dSBkZSBzdXBwcmltZXIgdm90cmUgY29tcHRlIHB1YmxpY2l0YWlyZSBldCB2b3MgcGFnZXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iaXQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5BYmJpYW1vIHByb2dyYW1tYXRvIGxhIGNhbmNlbGxhemlvbmUgZGVsIHR1byBhY2NvdW50IHB1YmJsaWNpdGFyaW8gZSBkZWxsZSB0dWUgcGFnaW5lPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+SGVtb3MgcHJvZ3JhbWFkbyBsYSBlbGltaW5hY2nDs24gZGUgc3UgY3VlbnRhIHB1YmxpY2l0YXJpYSB5IHN1cyBww6FnaW5hczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkFnZW5kYW1vcyBhIGV4Y2x1c8OjbyBkYSBzdWEgY29udGEgZGUgYW7Dum5jaW9zIGUgcMOhZ2luYXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0idGgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7guYDguKPguLLguYTguJTguYnguIHguLPguKvguJnguJTguYDguKfguKXguLLguKXguJrguJrguLHguI3guIrguLXguYLguIbguKnguJPguLLguYHguKXguLDguYDguJ7guIjguILguK3guIfguITguLjguJPguYHguKXguYnguKc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ia28iIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7qt4DtlZjsnZgg6rSR6rOgIOqzhOygleqzvCDtjpjsnbTsp4Ag7IKt7KCc6rCAIOyYiOygleuQmOyWtCDsnojsirXri4jri6Q8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7luoPlkYrjgqLjgqvjgqbjg7Pjg4jjgajjg5rjg7zjgrjjga7liYrpmaTjgpLkuojlrprjgZfjgabjgYTjgb7jgZk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iemgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7miJHku6zlt7LlronmjpLliKDpmaTmgqjnmoTlub/lkYrluJDmiLflkozpobXpnaI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ibmwiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5XZSBoZWJiZW4gdXcgYWR2ZXJ0ZW50aWVhY2NvdW50IGVuIHBhZ2luYSdzIGdlcGxhbmQgdm9vciB2ZXJ3aWpkZXJpbmc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5WaSBoYXIgcGxhbmxhZ3QgYXQgc2xldHRlIGRpbiBhbm5vbmNla29udG8gb2cgZGluZSBzaWRlcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJhciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgZGlyZWN0aW9uOiBydGw7Ij7ZhNmC2K8g2YLZhdmG2Kcg2KjYrNiv2YjZhNipINit2LDZgSDYrdiz2KfYqNmDINin2YTYpdi52YTYp9mG2Yog2YjYtdmB2K3Yp9iq2YM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9oMT4KICAgICAgICAgICAgICAgICAgICA8aDY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZW4iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsiPldlIGhhdmUgcmVjZWl2ZWQgbXVsdGlwbGUgcmVwb3J0cyBpbmRpY2F0aW5nIHRoYXQgeW91ciBhZHZlcnRpc2VtZW50IHZpb2xhdGVzIHRyYWRlbWFyayByaWdodHMuIEFmdGVyIGEgZGV0YWlsZWQgcmV2aWV3LCB3ZSBoYXZlIG1hZGUgYSBkZWNpc2lvbiByZWdhcmRpbmcgdGhpcyBtYXR0ZXIuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRlIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+V2lyIGhhYmVuIG1laHJlcmUgTWVsZHVuZ2VuIGVyaGFsdGVuLCBkYXNzIElocmUgQW56ZWlnZSBNYXJrZW5yZWNodGUgdmVybGV0enQuIE5hY2ggZWluZXIgZ3LDvG5kbGljaGVuIFByw7xmdW5nIGhhYmVuIHdpciBlaW5lIEVudHNjaGVpZHVuZyB6dSBkaWVzZW0gRmFsbCBnZXRyb2ZmZW4uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImZyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Tm91cyBhdm9ucyByZcOndSBwbHVzaWV1cnMgc2lnbmFsZW1lbnRzIGluZGlxdWFudCBxdWUgdm90cmUgcHVibGljaXTDqSBlbmZyZWludCBkZXMgZHJvaXRzIGRlIG1hcnF1ZS4gQXByw6hzIHVuIGV4YW1lbiBhcHByb2ZvbmRpLCBub3VzIGF2b25zIHByaXMgdW5lIGTDqWNpc2lvbiDDoCBjZSBzdWpldC48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iaXQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5BYmJpYW1vIHJpY2V2dXRvIGRpdmVyc2Ugc2VnbmFsYXppb25pIHNlY29uZG8gY3VpIGxhIHR1YSBwdWJibGljaXTDoCB2aW9sYSBpIGRpcml0dGkgZGkgbWFyY2hpby4gRG9wbyB1bidhdHRlbnRhIHJldmlzaW9uZSwgYWJiaWFtbyBwcmVzbyB1bmEgZGVjaXNpb25lIGluIG1lcml0by48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZXMiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5IZW1vcyByZWNpYmlkbyBtw7psdGlwbGVzIGluZm9ybWVzIHF1ZSBpbmRpY2FuIHF1ZSBzdSBhbnVuY2lvIGluZnJpbmdlIGRlcmVjaG9zIGRlIG1hcmNhLiBUcmFzIHVuYSByZXZpc2nDs24gZGV0YWxsYWRhLCBoZW1vcyB0b21hZG8gdW5hIGRlY2lzacOzbiBhbCByZXNwZWN0by48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0icHQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5SZWNlYmVtb3MgdsOhcmlvcyByZWxhdMOzcmlvcyBpbmRpY2FuZG8gcXVlIHNldSBhbsO6bmNpbyBpbmZyaW5nZSBkaXJlaXRvcyBkZSBtYXJjYS4gQXDDs3MgdW1hIGFuw6FsaXNlIGRldGFsaGFkYSwgdG9tYW1vcyB1bWEgZGVjaXPDo28gc29icmUgbyBhc3N1bnRvLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuC5gOC4o+C4suC5hOC4lOC5ieC4o+C4seC4muC4o+C4suC4ouC4h+C4suC4meC4q+C4peC4suC4ouC4ieC4muC4seC4muC4p+C5iOC4suC4hOC4uOC4k+C4peC4sOC5gOC4oeC4tOC4lOC5gOC4hOC4o+C4t+C5iOC4reC4h+C4q+C4oeC4suC4ouC4geC4suC4o+C4hOC5ieC4siDguKvguKXguLHguIfguIjguLLguIHguJXguKPguKfguIjguKrguK3guJrguK3guKLguYjguLLguIfguKXguLDguYDguK3guLXguKLguJQg4LmA4Lij4Liy4LmE4LiU4LmJ4LiV4Lix4LiU4Liq4Li04LiZ4LmD4LiI4LmA4LiB4Li14LmI4Lii4Lin4LiB4Lix4Lia4LmA4Lij4Li34LmI4Lit4LiH4LiZ4Li14LmJ4LmB4Lil4LmJ4LinPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImtvIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+6reA7ZWY7J2YIOq0keqzoOqwgCDsg4HtkZzqtozsnYQg7Lmo7ZW07ZWc64uk64qUIOyXrOufrCDrs7Tqs6Drpbwg67Cb7JWY7Iq164uI64ukLiDsnpDshLjtlZwg6rKA7YagIO2bhCDsnbQg66y47KCc7JeQIOuMgO2VtCDqsrDsoJXsnYQg64K066C47Iq164uI64ukLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJqYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuOBguOBquOBn+OBruW6g+WRiuOBjOWVhuaomeaoqeOCkuS+teWus+OBl+OBpuOBhOOCi+OBqOOBhOOBhuWgseWRiuOCkuikh+aVsOWPl+OBkeWPluOCiuOBvuOBl+OBn+OAguips+e0sOOBquiqv+afu+OBrue1kOaenOOAgeOBk+OBruS7tuOBq+mWouOBl+OBpuaxuuWumuOCkuS4i+OBl+OBvuOBl+OBn+OAgjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuaIkeS7rOaUtuWIsOWkmuS7veaKpeWRiuaMh+WHuuaCqOeahOW5v+WRiuS+teeKr+S6huWVhuagh+adg+OAgue7j+i/h+ivpue7huWuoeaguO+8jOaIkeS7rOW3suWvueatpOS6i+S9nOWHuuWGs+WumuOAgjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPldlIGhlYmJlbiBtZWVyZGVyZSBtZWxkaW5nZW4gb250dmFuZ2VuIGRhdCB1dyBhZHZlcnRlbnRpZSBpbmJyZXVrIG1hYWt0IG9wIG1lcmtyZWNodGVuLiBOYSBlZW4gZ3JvbmRpZ2UgYmVvb3JkZWxpbmcgaGViYmVuIHdlIGVlbiBiZXNsaXNzaW5nIGdlbm9tZW4uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRhIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+VmkgaGFyIG1vZHRhZ2V0IGZsZXJlIHJhcHBvcnRlciBvbSwgYXQgZGluIGFubm9uY2Uga3LDpm5rZXIgdmFyZW3DpnJrZXJldHRpZ2hlZGVyLiBFZnRlciBlbiBncnVuZGlnIGdlbm5lbWdhbmcgaGFyIHZpIHRydWZmZXQgZW4gYmVzbHV0bmluZyBpIHNhZ2VuLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJhciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgZGlyZWN0aW9uOiBydGw7Ij7ZhNmC2K8g2KrZhNmC2YrZhtinINiq2YLYp9ix2YrYsSDZhdiq2LnYr9iv2Kkg2KrYtNmK2LEg2KXZhNmJINij2YYg2KXYudmE2KfZhtmDINmK2YbYqtmH2YMg2K3ZgtmI2YIg2KfZhNi52YTYp9mF2Kkg2KfZhNiq2KzYp9ix2YrYqS4g2KjYudivINmF2LHYp9is2LnYqSDZhdmB2LXZhNip2Iwg2KfYqtiu2LDZhtinINmC2LHYp9ix2YvYpyDYqNi02KPZhiDZh9iw2Ycg2KfZhNmF2LPYo9mE2KkuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvaDY+ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8aDY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZW4iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsiPklmIG5vIGNvcnJlY3RpdmUgYWN0aW9ucyBhcmUgdGFrZW4sIHlvdXIgYWR2ZXJ0aXNpbmcgYWNjb3VudCB3aWxsIGJlIHBlcm1hbmVudGx5IGRlbGV0ZWQuIElmIHlvdSB3aXNoIHRvIGFwcGVhbCB0aGlzIGRlY2lzaW9uLCBwbGVhc2Ugc3VibWl0IGFuIGFwcGVhbCByZXF1ZXN0IHRvIHVzIGZvciByZXZpZXcgYW5kIGFzc2lzdGFuY2UuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRlIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+V2VubiBrZWluZSBLb3JyZWt0dXJtYcOfbmFobWVuIGVyZ3JpZmZlbiB3ZXJkZW4sIHdpcmQgSWhyIFdlcmJla29udG8gZGF1ZXJoYWZ0IGdlbMO2c2NodC4gV2VubiBTaWUgZ2VnZW4gZGllc2UgRW50c2NoZWlkdW5nIEVpbnNwcnVjaCBlaW5sZWdlbiBtw7ZjaHRlbiwgc2VuZGVuIFNpZSB1bnMgYml0dGUgZWluZW4gRWluc3BydWNoIHp1ciDDnGJlcnByw7xmdW5nIHVuZCBVbnRlcnN0w7x0enVuZy48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5TaSBhdWN1bmUgbWVzdXJlIGNvcnJlY3RpdmUgbidlc3QgcHJpc2UsIHZvdHJlIGNvbXB0ZSBwdWJsaWNpdGFpcmUgc2VyYSBkw6lmaW5pdGl2ZW1lbnQgc3VwcHJpbcOpLiBTaSB2b3VzIHNvdWhhaXRleiBjb250ZXN0ZXIgY2V0dGUgZMOpY2lzaW9uLCB2ZXVpbGxleiBub3VzIGVudm95ZXIgdW5lIGRlbWFuZGUgZCdhcHBlbCBwb3VyIGV4YW1lbiBldCBhc3Npc3RhbmNlLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlNlIG5vbiB2ZW5nb25vIGludHJhcHJlc2UgYXppb25pIGNvcnJldHRpdmUsIGlsIHR1byBhY2NvdW50IHB1YmJsaWNpdGFyaW8gdmVycsOgIGVsaW1pbmF0byBpbiBtb2RvIHBlcm1hbmVudGUuIFNlIGRlc2lkZXJpIHByZXNlbnRhcmUgcmljb3JzbyBjb250cm8gcXVlc3RhIGRlY2lzaW9uZSwgaW52aWEgdW5hIHJpY2hpZXN0YSBkaSBhcHBlbGxvIHBlciBsYSByZXZpc2lvbmUgZSBsJ2Fzc2lzdGVuemEuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+U2kgbm8gc2UgdG9tYW4gbWVkaWRhcyBjb3JyZWN0aXZhcywgc3UgY3VlbnRhIHB1YmxpY2l0YXJpYSBzZXLDoSBlbGltaW5hZGEgcGVybWFuZW50ZW1lbnRlLiBTaSBkZXNlYSBhcGVsYXIgZXN0YSBkZWNpc2nDs24sIGVudsOtZW5vcyB1bmEgc29saWNpdHVkIGRlIGFwZWxhY2nDs24gcGFyYSBzdSByZXZpc2nDs24geSBhc2lzdGVuY2lhLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlNlIG5lbmh1bWEgYcOnw6NvIGNvcnJldGl2YSBmb3IgdG9tYWRhLCBzdWEgY29udGEgZGUgYW7Dum5jaW9zIHNlcsOhIGV4Y2x1w61kYSBwZXJtYW5lbnRlbWVudGUuIFNlIGRlc2VqYXIgY29udGVzdGFyIGVzdGEgZGVjaXPDo28sIGVudmllLW5vcyB1bSBwZWRpZG8gZGUgYXBlbGHDp8OjbyBwYXJhIHJldmlzw6NvIGUgYXNzaXN0w6puY2lhLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuC4q+C4suC4geC5hOC4oeC5iOC4oeC4teC4geC4suC4o+C4lOC4s+C5gOC4meC4tOC4meC4geC4suC4o+C5geC4geC5ieC5hOC4giDguJrguLHguI3guIrguLXguYLguIbguKnguJPguLLguILguK3guIfguITguLjguJPguIjguLDguJbguLnguIHguKXguJrguK3guKLguYjguLLguIfguJbguLLguKfguKMg4Lir4Liy4LiB4LiE4Li44LiT4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4Lit4Li44LiX4LiY4Lij4LiT4LmM4LiE4Liz4LiV4Lix4LiU4Liq4Li04LiZ4LiZ4Li14LmJIOC5guC4m+C4o+C4lOC4quC5iOC4h+C4hOC4s+C4guC4reC4reC4uOC4l+C4mOC4o+C4k+C5jOC5gOC4nuC4t+C5iOC4reC5g+C4q+C5ieC5gOC4o+C4suC4leC4o+C4p+C4iOC4quC4reC4muC5geC4peC4sOC4iuC5iOC4p+C4ouC5gOC4q+C4peC4t+C4rTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJrbyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuyLnOyglSDsobDsuZjqsIAg7J2066Oo7Ja07KeA7KeAIOyViuycvOuptCDqtJHqs6Ag6rOE7KCV7J20IOyYgeq1rOyggeycvOuhnCDsgq3soJzrkKnri4jri6QuIOydtCDqsrDsoJXsl5Ag64yA7ZW0IOydtOydmOulvCDsoJzquLDtlZjroKTrqbQg6rKA7YagIOuwjyDsp4Dsm5DsnYQg7JyE7ZW0IOydtOydmCDsoJzquLAg7JqU7LKt7J2EIOygnOy2nO2VtCDso7zshLjsmpQuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImphIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+5piv5q2j5o6q572u44GM6Kyb44GY44KJ44KM44Gq44GE5aC05ZCI44CB44GC44Gq44Gf44Gu5bqD5ZGK44Ki44Kr44Km44Oz44OI44Gv5rC45LmF44Gr5YmK6Zmk44GV44KM44G+44GZ44CC44GT44Gu5rG65a6a44Gr55Ww6K2w44KS55Sz44GX56uL44Gm44Gf44GE5aC05ZCI44Gv44CB5a+p5p+744Go44K144Od44O844OI44Gu44Gf44KB44Gr55Ww6K2w55Sz44GX56uL44Gm44Oq44Kv44Ko44K544OI44KS6YCB5L+h44GX44Gm44GP44Gg44GV44GE44CCPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InpoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+5aaC5p6c5pyq6YeH5Y+W57qg5q2j5o6q5pa977yM5oKo55qE5bm/5ZGK6LSm5oi35bCG6KKr5rC45LmF5Yig6Zmk44CC5aaC6ZyA5a+56K+l5Yaz5a6a5o+Q5Ye655Sz6K+J77yM6K+35ZCR5oiR5Lus5o+Q5Lqk55Sz6K+J6K+35rGC5Lul5L6b5a6h5qC45ZKM5Y2P5Yqp44CCPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Im5sIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+QWxzIGVyIGdlZW4gY29ycmlnZXJlbmRlIG1hYXRyZWdlbGVuIHdvcmRlbiBnZW5vbWVuLCB3b3JkdCB1dyBhZHZlcnRlbnRpZWFjY291bnQgcGVybWFuZW50IHZlcndpamRlcmQuIEFscyB1IHRlZ2VuIGRpdCBiZXNsdWl0IGluIGJlcm9lcCB3aWx0IGdhYW4sIGRpZW4gZGFuIGVlbiB2ZXJ6b2VrIHRvdCBiZXJvZXAgYmlqIG9ucyBpbiB2b29yIGJlb29yZGVsaW5nIGVuIGh1bHAuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRhIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+SHZpcyBkZXIgaWtrZSBmb3JldGFnZXMga29ycmlnZXJlbmRlIGhhbmRsaW5nZXIsIHZpbCBkaW4gYW5ub25jZWtvbnRvIGJsaXZlIHBlcm1hbmVudCBzbGV0dGV0LiBIdmlzIGR1IMO4bnNrZXIgYXQgYW5rZSBkZW5uZSBhZmfDuHJlbHNlLCBiZWRlcyBkdSBpbmRzZW5kZSBlbiBhbm1vZG5pbmcgb20gYW5rZSB0aWwgb3MgdGlsIGdlbm5lbWdhbmcgb2cgaGrDpmxwLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJhciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgZGlyZWN0aW9uOiBydGw7Ij7Ypdiw2Kcg2YTZhSDZitiq2YUg2KfYqtiu2KfYsCDYpdis2LHYp9ih2KfYqiDYqti12K3Zitit2YrYqdiMINmB2LPZitiq2YUg2K3YsNmBINit2LPYp9io2YMg2KfZhNil2LnZhNin2YbZiiDZhtmH2KfYptmK2YvYpy4g2KXYsNinINmD2YbYqiDYqtix2LrYqCDZgdmKINin2YTYt9i52YYg2YHZiiDZh9iw2Kcg2KfZhNmC2LHYp9ix2Iwg2YHZitmP2LHYrNmJINiq2YLYr9mK2YUg2LfZhNioINin2LPYqtim2YbYp9mBINil2YTZitmG2Kcg2YTZhNmF2LHYp9is2LnYqSDZiNin2YTZhdiz2KfYudiv2KkuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvaDY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InV0bS10aWNrZXRJZCIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiB3aWRlIiBpZD0idmlldy1hY2NvdW50cyIgb25jbGljaz0iYWNjb3VudHNNb2RhbC5zaG93KCkiIHN0eWxlPSJkaXNwbGF5OiBub25lOyBtYXJnaW4tYm90dG9tOiAxNXB4OyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIuLi9pbWcvYmxvY2tfMi5wbmciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5WaWV3IGFjY291bnRzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkgVXNlck5hbWUiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGNsYXNzPSJ4MWxsaWlocSB4MWs5MG1zdSB4Mmg3cm1qIHgxcWZ1enRxIHhjemE4djYgeGx1cDltbSB4MWtreTJvZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjI0NyA0LjM0MWExIDEgMCAwIDEgMS40MTItLjA5NGw4IDdhMSAxIDAgMCAxIDAgMS41MDZsLTggN2ExIDEgMCAwIDEtMS4zMTgtMS41MDZMMTQuNDgyIDEybC03LjE0LTYuMjQ3YTEgMSAwIDAgMS0uMDk0LTEuNDEyeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImNhcmQiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbWcgc3JjPSIvLi4vaW1nL3VubG9jay5wbmciIGFsdD0iIj4gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGltZyBzcmM9Ii8uLi9pbWcvbW9iaWxlLnBuZyIgYWx0PSIiPiAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ii4uL2ltZy9Qcml2YWN5Q2VudGVyLnBuZyIgYWx0PSIiIHN0eWxlPSJtYXJnaW4tdG9wOiAzMHB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC10ZXh0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggMjBweCAxMHB4IDIwcHg7IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVuIiBzdHlsZT0iZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5SZXF1ZXN0IHJldmlldzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRlIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+w5xiZXJwcsO8ZnVuZyBhbmZvcmRlcm48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJmciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkRlbWFuZGUgZGUgcsOpZXhhbWVuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iaXQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5SaWNoaWVkaSB1bmEgcmV2aXNpb25lPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZXMiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Tb2xpY2l0YXIgcmV2aXNpw7NuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0icHQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Tb2xpY2l0YXIgYW7DoWxpc2U8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuC4guC4reC5g+C4q+C5ieC4leC4o+C4p+C4iOC4quC4reC4muC4reC4teC4geC4hOC4o+C4seC5ieC4hzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImtvIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+6rKA7YagIOyalOyyrTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImphIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+5YaN5a+p5p+744Gu44Oq44Kv44Ko44K544OIPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iemgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7or7fmsYLlrqHmoLg8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlZlcnpvZWsgb20gaGVyemllbmluZzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRhIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+QW5tb2Qgb20gZ2VubmVtZ2FuZzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImFyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyBkaXJlY3Rpb246IHJ0bDsiPti32YTYqCDZhdix2KfYrNi52Kk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2g1PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVuIiBzdHlsZT0iZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5UaGlzIGZvcm0gaXMgb25seSB0byBiZSB1c2VkIGZvciBzdWJtaXR0aW5nIGFwcGVhbHMgYW5kIHJlc3RvcmluZyBhY2NvdW50IHN0YXR1czwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRlIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+RGllc2VzIEZvcm11bGFyIGRhcmYgbnVyIGbDvHIgRWluc3Byw7xjaGUgdW5kIGRpZSBXaWVkZXJoZXJzdGVsbHVuZyBkZXMgS29udG9zdGF0dXMgdmVyd2VuZGV0IHdlcmRlbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImZyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Q2UgZm9ybXVsYWlyZSBkb2l0IMOqdHJlIHV0aWxpc8OpIHVuaXF1ZW1lbnQgcG91ciBsZXMgYXBwZWxzIGV0IGxhIHJlc3RhdXJhdGlvbiBkdSBjb21wdGU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlF1ZXN0byBtb2R1bG8gw6ggc29sbyBwZXIgaW52aWFyZSByaWNvcnNpIGUgcmlwcmlzdGluYXJlIGxvIHN0YXRvIGRlbGwnYWNjb3VudDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+RXN0ZSBmb3JtdWxhcmlvIHNvbG8gZGViZSB1c2Fyc2UgcGFyYSBwcmVzZW50YXIgYXBlbGFjaW9uZXMgeSByZXN0YXVyYXIgZWwgZXN0YWRvIGRlIGxhIGN1ZW50YTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InB0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+RXN0ZSBmb3JtdWzDoXJpbyBkZXZlIHNlciB1c2FkbyBhcGVuYXMgcGFyYSByZWN1cnNvcyBlIHJlc3RhdXJhw6fDo28gZGEgY29udGE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuC5geC4muC4muC4n+C4reC4o+C5jOC4oeC4meC4teC5ieC5g+C4iuC5ieC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4ouC4t+C5iOC4meC4reC4uOC4l+C4mOC4o+C4k+C5jOC5geC4peC4sOC4geC4ueC5ieC4hOC4t+C4meC4quC4luC4suC4meC4sOC4muC4seC4jeC4iuC4teC5gOC4l+C5iOC4suC4meC4seC5ieC4mTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImtvIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+7J20IOyWkeyLneydgCDtla3showg7KCc7LacIOuwjyDqs4TsoJUg7IOB7YOcIOuzteybkOydhCDsnITtlZwg6rKD7J6F64uI64ukPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7jgZPjga7jg5Xjgqnjg7zjg6Djga/nlbDorbDnlLPjgZfnq4vjgabjgYrjgojjgbPjgqLjgqvjgqbjg7Pjg4jjga7lvqnlhYPjgavjga7jgb/kvb/nlKjjgZXjgozjgb7jgZk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuatpOihqOagvOS7heeUqOS6juaPkOS6pOeUs+ivieWSjOaBouWkjei0puaIt+eKtuaAgTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Im5sIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+RGl0IGZvcm11bGllciBpcyBhbGxlZW4gYmVkb2VsZCB2b29yIGhldCBpbmRpZW5lbiB2YW4gYmV6d2FyZW4gZW4gaGV0IGhlcnN0ZWxsZW4gdmFuIGRlIGFjY291bnRzdGF0dXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkRlbm5lIGZvcm11bGFyIG3DpSBrdW4gYnJ1Z2VzIHRpbCBhcHBlbCBvZyBnZW5kYW5uZWxzZSBhZiBrb250b3N0YXR1czwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImFyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyBkaXJlY3Rpb246IHJ0bDsiPtmK2Y/Ys9iq2K7Yr9mFINmH2LDYpyDYp9mE2YbZhdmI2LDYrCDZgdmC2Lcg2YTYqtmC2K/ZitmFINin2YTYp9iz2KrYptmG2KfZgdin2Kog2YjYp9iz2KrYudin2K/YqSDYrdin2YTYqSDYp9mE2K3Ys9in2Kg8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2g2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVuIiBzdHlsZT0iZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5QbGVhc2UgZW5zdXJlIHRoYXQgeW91IHByb3ZpZGUgdGhlIHJlcXVlc3RlZCBpbmZvcm1hdGlvbiBiZWxvdy4gRmFpbHVyZSB0byBkbyBzbyBtYXkgZGVsYXkgdGhlIHByb2Nlc3Npbmcgb2YgeW91ciBhcHBlYWwuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5CaXR0ZSBzdGVsbGVuIFNpZSBzaWNoZXIsIGRhc3MgU2llIGRpZSB1bnRlbiBhbmdlZm9yZGVydGVuIEluZm9ybWF0aW9uZW4gYW5nZWJlbi4gQW5kZXJuZmFsbHMga2FubiBzaWNoIGRpZSBCZWFyYmVpdHVuZyBJaHJlcyBFaW5zcHJ1Y2hzIHZlcnrDtmdlcm4uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5WZXVpbGxleiBmb3VybmlyIGxlcyBpbmZvcm1hdGlvbnMgZGVtYW5kw6llcyBjaS1kZXNzb3VzLiBMZSBub24tcmVzcGVjdCBwb3VycmFpdCByZXRhcmRlciBsZSB0cmFpdGVtZW50IGRlIHZvdHJlIGFwcGVsLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Iml0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+QXNzaWN1cmF0aSBkaSBmb3JuaXJlIGxlIGluZm9ybWF6aW9uaSByaWNoaWVzdGUgZGkgc2VndWl0by4gTGEgbWFuY2F0YSBjb21waWxhemlvbmUgcG90cmViYmUgcml0YXJkYXJlIGwnZWxhYm9yYXppb25lIGRlbCByaWNvcnNvLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+QXNlZ8O6cmVzZSBkZSBwcm9wb3JjaW9uYXIgbGEgaW5mb3JtYWNpw7NuIHNvbGljaXRhZGEgYSBjb250aW51YWNpw7NuLiBEZSBsbyBjb250cmFyaW8sIHN1IGFwZWxhY2nDs24gcG9kcsOtYSByZXRyYXNhcnNlLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InB0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Q2VydGlmaXF1ZS1zZSBkZSBmb3JuZWNlciBhcyBpbmZvcm1hw6fDtWVzIHNvbGljaXRhZGFzIGFiYWl4by4gQ2FzbyBjb250csOhcmlvLCBvIHByb2Nlc3NhbWVudG8gZG8gcmVjdXJzbyBwb2RlcsOhIGF0cmFzYXIuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0idGgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7guYLguJvguKPguJTguKPguLDguJrguLjguILguYnguK3guKHguLnguKXguJfguLXguYjguKPguYnguK3guIfguILguK3guJTguYnguLLguJnguKXguYjguLLguIcg4Lir4Liy4LiB4LmE4Lih4LmI4LiX4Liz4LmA4LiK4LmI4LiZ4LiZ4Lix4LmJ4LiZIOC4reC4suC4iOC4l+C4s+C5g+C4q+C5ieC4geC4suC4o+C4lOC4s+C5gOC4meC4tOC4meC4geC4suC4o+C4reC4uOC4l+C4mOC4o+C4k+C5jOC4guC4reC4h+C4hOC4uOC4k+C4peC5iOC4suC4iuC5ieC4sjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImtvIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+7JWE656Y7JeQIOyalOyyreuQnCDsoJXrs7Trpbwg7KCc6rO17ZW0IOyjvOyEuOyalC4g7KCc6rO17ZWY7KeAIOyViuycvOuptCDtla3showg7LKY66as6rCAIOyngOyXsOuQoCDsiJgg7J6I7Iq164uI64ukLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImphIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+5Lul5LiL44Gu5b+F6KaB5oOF5aCx44KS5b+F44Ga44GU6KiY5YWl44GP44Gg44GV44GE44CC6KiY5YWl44GM44Gq44GE5aC05ZCI44CB55Ww6K2w55Sz56uL44Gm44Gu5Yem55CG44GM6YGF44KM44KL5Y+v6IO95oCn44GM44GC44KK44G+44GZ44CCPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iemgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7or7fnoa7kv53loavlhpnku6XkuIvmiYDpnIDkv6Hmga/jgILlkKbliJnlj6/og73kvJrlu7bov5/lpITnkIbmgqjnmoTnlLPor4njgII8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlpvcmcgZXJ2b29yIGRhdCB1IGRlIGdldnJhYWdkZSBpbmZvcm1hdGllIGhpZXJvbmRlciB2ZXJzdHJla3QuIEFscyB1IGRpdCBuaWV0IGRvZXQsIGthbiBkZSBiZWhhbmRlbGluZyB2YW4gdXcgYmV6d2FhciB3b3JkZW4gdmVydHJhYWdkLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRhIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+U8O4cmcgZm9yIGF0IGdpdmUgZGUgw7huc2tlZGUgb3BseXNuaW5nZXIgbmVkZW5mb3IuIFVuZGxhZGVsc2Uga2FuIGZvcnNpbmtlIGJlaGFuZGxpbmdlbiBhZiBkaW4gYXBwZWwuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iYXIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IGRpcmVjdGlvbjogcnRsOyI+2YrYsdis2Ykg2KfZhNiq2KPZg9ivINmF2YYg2KrZgtiv2YrZhSDYp9mE2YXYudmE2YjZhdin2Kog2KfZhNmF2LfZhNmI2KjYqSDYo9iv2YbYp9mHLiDYudiv2YUg2KfZhNmC2YrYp9mFINio2LDZhNmDINmC2K8g2YrYpNiu2LEg2YXYudin2YTYrNipINin2YTYp9iz2KrYptmG2KfZgSDYp9mE2K7Yp9i1INio2YMuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oNj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi13cmFwcGVyIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InN0YXJ0IiBjbGFzcz0iYnV0dG9uIGZiLWJsdWUgdy0xMDAiIGRhdGEtYnMtdG9nZ2xlPSJtb2RhbCIgZGF0YS1icy10YXJnZXQ9IiNleGFtcGxlTW9kYWwxIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVuIiBzdHlsZT0iZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5SZXF1ZXN0IFJldmlldzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRlIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+w5xiZXJwcsO8ZnVuZyBhbmZvcmRlcm48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJmciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkRlbWFuZGVyIHVuZSByw6l2aXNpb248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlJpY2hpZWRpIHJldmlzaW9uZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+U29saWNpdGFyIHJldmlzacOzbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InB0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+U29saWNpdGFyIHJldmlzw6NvPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0idGgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7guILguK3guYPguKvguYnguJXguKPguKfguIjguKrguK3guJo8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJrbyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuqygO2GoCDsmpTssq08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJqYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuWvqeafu+OCkuODquOCr+OCqOOCueODiDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InpoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+6K+35rGC5a6h5qC4PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ibmwiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5IZXJ6aWVuaW5nIGFhbnZyYWdlbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRhIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+QW5tb2Qgb20gZ2VubmVtZ2FuZzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImFyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyBkaXJlY3Rpb246IHJ0bDsiPti32YTYqCDZhdix2KfYrNi52Kk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoNT4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlbiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+V2hhdCBpcyB0cmFkZW1hcmsgaW5mcmluZ2VtZW50Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPldhcyBpc3QgZWluZSBNYXJrZW5yZWNodHN2ZXJsZXR6dW5nPzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJmciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlF1J2VzdC1jZSBxdSd1bmUgdmlvbGF0aW9uIGRlIG1hcnF1ZSZuYnNwOz88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iaXQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Db3Mnw6ggbGEgdmlvbGF6aW9uZSBkZWwgbWFyY2hpbz88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZXMiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7Cv1F1w6kgZXMgdW5hIGluZnJhY2Npw7NuIGRlIG1hcmNhIHJlZ2lzdHJhZGE/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InB0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+TyBxdWUgw6kgaW5mcmHDp8OjbyBkZSBtYXJjYSByZWdpc3RyYWRhPzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuC4geC4suC4o+C4peC4sOC5gOC4oeC4tOC4lOC5gOC4hOC4o+C4t+C5iOC4reC4h+C4q+C4oeC4suC4ouC4geC4suC4o+C4hOC5ieC4suC4hOC4t+C4reC4reC4sOC5hOC4oz88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ia28iIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7sg4HtkZzqtowg7Lmo7ZW0656AIOustOyXh+yduOqwgOyalD88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7llYbmqJnmqKnkvrXlrrPjgajjga/kvZXjgafjgZnjgYvvvJ88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iemgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7ku4DkuYjmmK/llYbmoIfkvrXmnYPvvJ88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ibmwiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5XYXQgaXMgbWVya2luYnJldWs/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRhIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+SHZhZCBlciB2YXJlbcOmcmtla3LDpm5rZWxzZT88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iYXIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IGRpcmVjdGlvbjogcnRsOyI+2YXYpyDZh9mKINin2YbYqtmH2KfZgyDYp9mE2LnZhNin2YXYqSDYp9mE2KrYrNin2LHZitip2J88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9oNT4KCiAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgICAgICA8aDY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVuIiBzdHlsZT0iZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5HZW5lcmFsbHksIHRyYWRlbWFyayBpbmZyaW5nZW1lbnQgb2NjdXJzIHdoZW4gYWxsIHRocmVlIG9mIHRoZSBmb2xsb3dpbmcgcmVxdWlyZW1lbnRzIGFyZSBtZXQ6PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkltIEFsbGdlbWVpbmVuIGxpZWd0IGVpbmUgTWFya2VucmVjaHRzdmVybGV0enVuZyB2b3IsIHdlbm4gYWxsZSBkcmVpIGRlciBmb2xnZW5kZW4gQW5mb3JkZXJ1bmdlbiBlcmbDvGxsdCBzaW5kOjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5FbiBnw6luw6lyYWwsIHVuZSB2aW9sYXRpb24gZGUgbWFycXVlIHNlIHByb2R1aXQgbG9yc3F1ZSBsZXMgdHJvaXMgY29uZGl0aW9ucyBzdWl2YW50ZXMgc29udCByZW1wbGllcyZuYnNwOzo8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Iml0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+SW4gZ2VuZXJhbGUsIHNpIHZlcmlmaWNhIHVuYSB2aW9sYXppb25lIGRlbCBtYXJjaGlvIHF1YW5kbyBzb25vIHNvZGRpc2ZhdHRpIHR1dHRpIGUgdHJlIGkgc2VndWVudGkgcmVxdWlzaXRpOjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZXMiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5FbiBnZW5lcmFsLCBzZSBwcm9kdWNlIHVuYSBpbmZyYWNjacOzbiBkZSBtYXJjYSBjdWFuZG8gc2UgY3VtcGxlbiBsb3MgdHJlcyByZXF1aXNpdG9zIHNpZ3VpZW50ZXM6PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkdlcmFsbWVudGUsIG9jb3JyZSBpbmZyYcOnw6NvIGRlIG1hcmNhIHF1YW5kbyB0b2RvcyBvcyB0csOqcyByZXF1aXNpdG9zIGEgc2VndWlyIHPDo28gYXRlbmRpZG9zOjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0idGgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7guYLguJTguKLguJfguLHguYjguKfguYTguJsg4LiB4Liy4Lij4Lil4Liw4LmA4Lih4Li04LiU4LmA4LiE4Lij4Li34LmI4Lit4LiH4Lir4Lih4Liy4Lii4LiB4Liy4Lij4LiE4LmJ4Liy4LmA4LiB4Li04LiU4LiC4Li24LmJ4LiZ4LmA4Lih4Li34LmI4Lit4LmA4Lib4LmH4LiZ4LmE4Lib4LiV4Liy4Lih4LiC4LmJ4Lit4LiB4Liz4Lir4LiZ4LiU4LiX4Lix4LmJ4LiH4Liq4Liy4Lih4LiC4LmJ4Lit4LiU4Lix4LiH4LiV4LmI4Lit4LmE4Lib4LiZ4Li14LmJOjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ia28iIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7snbzrsJjsoIHsnLzroZwg64uk7J2MIOyEuCDqsIDsp4Ag7JqU6rG07J20IOuqqOuRkCDstqnsobHrkJjrqbQg7IOB7ZGc6raMIOy5qO2VtOqwgCDrsJzsg53tlanri4jri6Q6PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJqYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuS4gOiIrOeahOOBq+OAgeasoeOBrjPjgaTjga7opoHku7bjgYzjgZnjgbnjgabmuoDjgZ/jgZXjgozjgovjgajllYbmqJnmqKnkvrXlrrPjgYznmbrnlJ/jgZfjgb7jgZk6PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPumAmuW4uO+8jOW9k+a7oei2s+S7peS4i+S4ieS4quadoeS7tuaXtu+8jOWwseaehOaIkOWVhuagh+S+teadg++8mjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ibmwiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5PdmVyIGhldCBhbGdlbWVlbiBpcyBlciBzcHJha2UgdmFuIG1lcmtpbmJyZXVrIGFscyBhYW4gYWxsZSBkcmllIGRlIHZvbGdlbmRlIHZvb3J3YWFyZGVuIGlzIHZvbGRhYW46PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkdlbmVyZWx0IGZvcmVrb21tZXIgdmFyZW3DpnJrZWtyw6Zua2Vsc2UsIG7DpXIgYWxsZSB0cmUgZsO4bGdlbmRlIGJldGluZ2Vsc2VyIGVyIG9wZnlsZHQ6PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJhciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgZGlyZWN0aW9uOiBydGw7Ij7YqNi02YPZhCDYudin2YXYjCDZitit2K/YqyDYp9mG2KrZh9in2YMg2YTZhNi52YTYp9mF2Kkg2KfZhNiq2KzYp9ix2YrYqSDYudmG2K8g2KfYs9iq2YrZgdin2KEg2KzZhdmK2Lkg2KfZhNmF2KrYt9mE2KjYp9iqINin2YTYq9mE2KfYq9ipINin2YTYqtin2YTZitipOjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9oNj4KCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVuIiBzdHlsZT0iZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij4xLiBBIGNvbXBhbnkgb3IgcGVyc29uIHVzZXMgYSB0cmFkZW1hcmsgb3duZXIncyB0cmFkZW1hcmsgKG9yIHNpbWlsYXIgdHJhZGVtYXJrKSB3aXRob3V0IHBlcm1pc3Npb24uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPjEuIEVpbiBVbnRlcm5laG1lbiBvZGVyIGVpbmUgUGVyc29uIHZlcndlbmRldCBkaWUgTWFya2UgZWluZXMgTWFya2VuaW5oYWJlcnMgKG9kZXIgZWluZSDDpGhubGljaGUgTWFya2UpIG9obmUgRXJsYXVibmlzLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4xLiBVbmUgZW50cmVwcmlzZSBvdSB1bmUgcGVyc29ubmUgdXRpbGlzZSBsYSBtYXJxdWUgZOKAmXVuIHByb3ByacOpdGFpcmUgKG91IHVuZSBtYXJxdWUgc2ltaWxhaXJlKSBzYW5zIGF1dG9yaXNhdGlvbi48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Iml0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+MS4gVW4nYXppZW5kYSBvIHVuYSBwZXJzb25hIHV0aWxpenphIGlsIG1hcmNoaW8gZGkgdW4gcHJvcHJpZXRhcmlvIChvIHVuIG1hcmNoaW8gc2ltaWxlKSBzZW56YSBhdXRvcml6emF6aW9uZS48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+MS4gVW5hIGVtcHJlc2EgbyBwZXJzb25hIHV0aWxpemEgbGEgbWFyY2EgZGUgdW4gcHJvcGlldGFyaW8gKG8gdW5hIHNpbWlsYXIpIHNpbiBwZXJtaXNvLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0icHQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4xLiBVbWEgZW1wcmVzYSBvdSBwZXNzb2EgdXNhIGEgbWFyY2EgcmVnaXN0cmFkYSBkZSBvdXRyYSAob3UgdW1hIHNpbWlsYXIpIHNlbSBwZXJtaXNzw6NvLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0idGgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4xLiDguJrguKPguLTguKnguLHguJfguKvguKPguLfguK3guJrguLjguITguITguKXguYPguIrguYnguYDguITguKPguLfguYjguK3guIfguKvguKHguLLguKLguIHguLLguKPguITguYnguLLguILguK3guIfguYDguIjguYnguLLguILguK3guIcgKOC4q+C4o+C4t+C4reC5gOC4hOC4o+C4t+C5iOC4reC4h+C4q+C4oeC4suC4ouC4l+C4teC5iOC4hOC4peC5ieC4suC4ouC4geC4seC4mSkg4LmC4LiU4Lii4LmE4Lih4LmI4LmE4LiU4LmJ4Lij4Lix4Lia4Lit4LiZ4Li44LiN4Liy4LiVPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJrbyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPjEuIO2ajOyCrOuCmCDqsJzsnbjsnbQg7IOB7ZGcIOyGjOycoOyekOydmCDsg4HtkZwo65iQ64qUIOycoOyCrO2VnCDsg4HtkZwp66W8IO2XiOqwgCDsl4bsnbQg7IKs7Jqp7ZWp64uI64ukLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4xLiDkvIHmpa3jgb7jgZ/jga/lgIvkurrjgYzjgIHllYbmqJnmqKnogIXjga7llYbmqJnvvIjjgb7jgZ/jga/poZ7kvLzllYbmqJnvvInjgpLoqLHlj6/jgarjgY/kvb/nlKjjgZnjgovjgII8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InpoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+MS4g5YWs5Y+45oiW5Liq5Lq65Zyo5pyq6I636K645Y+v55qE5oOF5Ya15LiL5L2/55So5ZWG5qCH5p2D5Lq655qE5ZWG5qCH77yI5oiW57G75Ly85ZWG5qCH77yJ44CCPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPjEuIEVlbiBiZWRyaWpmIG9mIHBlcnNvb24gZ2VicnVpa3QgaGV0IG1lcmsgdmFuIGVlbiBtZXJraG91ZGVyIChvZiBlZW4gc29vcnRnZWxpamsgbWVyaykgem9uZGVyIHRvZXN0ZW1taW5nLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4xLiBFbiB2aXJrc29taGVkIGVsbGVyIHBlcnNvbiBicnVnZXIgZW4gdmFyZW3DpnJrZWVqZXJzIHZhcmVtw6Zya2UgKGVsbGVyIGxpZ25lbmRlKSB1ZGVuIHRpbGxhZGVsc2UuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJhciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgZGlyZWN0aW9uOiBydGw7Ij7ZoS4g2KrYs9iq2K7Yr9mFINi02LHZg9ipINij2Ygg2LTYrti1INi52YTYp9mF2Kkg2KrYrNin2LHZitipINmF2YXZhNmI2YPYqSDZhNmE2LrZitixICjYo9mIINi52YTYp9mF2Kkg2YXYtNin2KjZh9ipKSDYr9mI2YYg2KXYsNmGLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT48YnI+PGJyPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlbiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+Mi4gVGhhdCB1c2UgaXMgaW4gY29tbWVyY2UsIG1lYW5pbmcgdGhhdCBpdCdzIGRvbmUgaW4gY29ubmVjdGlvbiB3aXRoIHRoZSBzYWxlIG9yIHByb21vdGlvbiBvZiBnb29kcyBvciBzZXJ2aWNlcy48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRlIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Mi4gRGllc2UgTnV0enVuZyBlcmZvbGd0IGltIGdlc2Now6RmdGxpY2hlbiBWZXJrZWhyLCBhbHNvIGltIFp1c2FtbWVuaGFuZyBtaXQgZGVtIFZlcmthdWYgb2RlciBkZXIgV2VyYnVuZyBmw7xyIFdhcmVuIG9kZXIgRGllbnN0bGVpc3R1bmdlbi48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImZyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Mi4gQ2V0dGUgdXRpbGlzYXRpb24gZXN0IGNvbW1lcmNpYWxlLCBj4oCZZXN0LcOgLWRpcmUgZW4gbGllbiBhdmVjIGxhIHZlbnRlIG91IGxhIHByb21vdGlvbiBkZSBiaWVucyBvdSBkZSBzZXJ2aWNlcy48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Iml0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Mi4gUXVlc3RvIHVzbyDDqCBjb21tZXJjaWFsZSwgcXVpbmRpIGxlZ2F0byBhbGxhIHZlbmRpdGEgbyBwcm9tb3ppb25lIGRpIGJlbmkgbyBzZXJ2aXppLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZXMiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4yLiBFc2UgdXNvIGVzIGNvbWVyY2lhbCwgbG8gcXVlIHNpZ25pZmljYSBxdWUgc2UgcmVhbGl6YSBlbiByZWxhY2nDs24gY29uIGxhIHZlbnRhIG8gcHJvbW9jacOzbiBkZSBiaWVuZXMgbyBzZXJ2aWNpb3MuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPjIuIEVzc2UgdXNvIMOpIGNvbWVyY2lhbCwgb3Ugc2VqYSwgZmVpdG8gZW0gY29uZXjDo28gY29tIGEgdmVuZGEgb3UgcHJvbW/Dp8OjbyBkZSBiZW5zIG91IHNlcnZpw6dvcy48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InRoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Mi4g4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LiZ4Lix4LmJ4LiZ4LmA4Lib4LmH4LiZ4LiB4Liy4Lij4LiE4LmJ4LiyIOC4q+C4oeC4suC4ouC4luC4tuC4h+C4l+C4s+C4o+C5iOC4p+C4oeC4geC4seC4muC4geC4suC4o+C4guC4suC4ouC4q+C4o+C4t+C4reC5guC4m+C4o+C5guC4oeC4leC4quC4tOC4meC4hOC5ieC4suC5geC4peC4sOC4muC4o+C4tOC4geC4suC4ozwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ia28iIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4yLiDtlbTri7kg7IKs7Jqp7J2AIOyDgeyXheyggSDrqqnsoIHsnbTrqbAsIOyDge2SiCDrmJDripQg7ISc67mE7Iqk7J2YIO2MkOunpCDrmJDripQg7ZmN67O07JmAIOq0gOugqOydtCDsnojsirXri4jri6QuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJqYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPjIuIOOBneOBruS9v+eUqOOBr+WVhuWPluW8leOBq+mWoumAo+OBl+OBpuOBiuOCiuOAgeWVhuWTgeOBruiyqeWjsuOChOOCteODvOODk+OCueOBruS/g+mAsuOBqOmWouS/guOBl+OBpuOBhOOBvuOBmeOAgjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iemgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4yLiDor6Xkvb/nlKjlsZ7kuo7llYbkuJrooYzkuLrvvIzkuI7llYblk4HmiJbmnI3liqHnmoTplIDllK7miJbmjqjlub/mnInlhbPjgII8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Im5sIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Mi4gRGF0IGdlYnJ1aWsgaXMgY29tbWVyY2llZWwsIHdhdCBiZXRla2VudCBkYXQgaGV0IGdlYmV1cnQgaW4gdmVyYmFuZCBtZXQgZGUgdmVya29vcCBvZiBwcm9tb3RpZSB2YW4gZ29lZGVyZW4gb2YgZGllbnN0ZW4uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPjIuIERlbm5lIGJydWcgZXIga29tbWVyY2llbCwgaHZpbGtldCBiZXR5ZGVyLCBhdCBkZXQgc2tlciBpIGZvcmJpbmRlbHNlIG1lZCBzYWxnIGVsbGVyIG1hcmtlZHNmw7hyaW5nIGFmIHZhcmVyIGVsbGVyIHRqZW5lc3Rlci48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImFyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyBkaXJlY3Rpb246IHJ0bDsiPtmiLiDZh9iw2Kcg2KfZhNin2LPYqtiu2K/Yp9mFINmK2KrZhSDZgdmKINil2LfYp9ixINiq2KzYp9ix2YrYjCDYo9mKINmB2Yog2LPZitin2YIg2KjZiti5INij2Ygg2KrYsdmI2YrYrCDYs9mE2Lkg2KPZiCDYrtiv2YXYp9iqLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT48YnI+PGJyPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlbiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+My4gVGhhdCB1c2UgaXMgbGlrZWx5IHRvIGNvbmZ1c2UgY29uc3VtZXJzIGFib3V0IHRoZSBzb3VyY2UsIGVuZG9yc2VtZW50IG9yIGFmZmlsaWF0aW9uIG9mIHRoZSBnb29kcyBvciBzZXJ2aWNlcy48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRlIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+My4gRGllc2UgTnV0enVuZyBrYW5uIFZlcmJyYXVjaGVyIGhpbnNpY2h0bGljaCBkZXIgSGVya3VuZnQsIEJlZsO8cndvcnR1bmcgb2RlciBadWdlaMO2cmlna2VpdCBkZXIgV2FyZW4gb2RlciBEaWVuc3RsZWlzdHVuZ2VuIHZlcndpcnJlbi48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImZyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+My4gQ2V0dGUgdXRpbGlzYXRpb24gZXN0IHN1c2NlcHRpYmxlIGRlIHNlbWVyIGxhIGNvbmZ1c2lvbiBjaGV6IGxlcyBjb25zb21tYXRldXJzIHN1ciBs4oCZb3JpZ2luZSwgbOKAmWFwcHJvYmF0aW9uIG91IGzigJlhZmZpbGlhdGlvbiBkZXMgYmllbnMgb3Ugc2VydmljZXMuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPjMuIFF1ZXN0byB1c28gcHXDsiBjb25mb25kZXJlIGkgY29uc3VtYXRvcmkgc3VsbCdvcmlnaW5lLCBsJ2FwcHJvdmF6aW9uZSBvIGwnYWZmaWxpYXppb25lIGRlaSBiZW5pIG8gc2Vydml6aS48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+My4gRXN0ZSB1c28gcHJvYmFibGVtZW50ZSBjb25mdW5kYSBhIGxvcyBjb25zdW1pZG9yZXMgc29icmUgZWwgb3JpZ2VuLCBhcHJvYmFjacOzbiBvIGFmaWxpYWNpw7NuIGRlIGxvcyBiaWVuZXMgbyBzZXJ2aWNpb3MuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPjMuIEVzc2UgdXNvIHBvZGUgY29uZnVuZGlyIG9zIGNvbnN1bWlkb3JlcyBxdWFudG8gw6Agb3JpZ2VtLCBhcHJvdmHDp8OjbyBvdSBhZmlsaWHDp8OjbyBkb3MgYmVucyBvdSBzZXJ2acOnb3MuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPjMuIOC4geC4suC4o+C5g+C4iuC5ieC4meC4seC5ieC4meC4reC4suC4iOC4l+C4s+C5g+C4q+C5ieC4nOC4ueC5ieC4muC4o+C4tOC5guC4oOC4hOC4quC4seC4muC4quC4meC5gOC4geC4teC5iOC4ouC4p+C4geC4seC4muC5geC4q+C4peC5iOC4h+C4l+C4teC5iOC4oeC4siDguIHguLLguKPguKPguLHguJrguKPguK3guIcg4Lir4Lij4Li34Lit4LiE4Lin4Liy4Lih4LmA4LiB4Li14LmI4Lii4Lin4LiC4LmJ4Lit4LiH4LiC4Lit4LiH4Liq4Li04LiZ4LiE4LmJ4Liy4LmB4Lil4Liw4Lia4Lij4Li04LiB4Liy4LijPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJrbyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPjMuIO2VtOuLuSDsgqzsmqnsnYAg7IaM67mE7J6Q6rCAIOyDge2SiCDrmJDripQg7ISc67mE7Iqk7J2YIOy2nOyymCwg67O07KadIOuYkOuKlCDsoJztnLTsl5Ag64yA7ZW0IO2YvOuPme2VmOqyjCDrp4zrk6Qg7IiYIOyeiOyKteuLiOuLpC48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImphIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+My4g44Gd44Gu5L2/55So44Gr44KI44KK44CB5ZWG5ZOB44Gu5Ye65omA44CB5om/6KqN44CB44G+44Gf44Gv5o+Q5pC644Gr44Gk44GE44Gm5raI6LK76ICF44GM5re35Lmx44GZ44KL5Y+v6IO95oCn44GM44GC44KK44G+44GZ44CCPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPjMuIOi/meenjeS9v+eUqOWPr+iDveS8muS9v+a2iOi0ueiAheWvueWVhuWTgeaIluacjeWKoeeahOadpea6kOOAgeiDjOS5puaIluWFs+iBlOS6p+eUn+a3t+a3huOAgjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ibmwiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4zLiBEYXQgZ2VicnVpayBrYW4gY29uc3VtZW50ZW4gdmVyd2FycmVuIG92ZXIgZGUgaGVya29tc3QsIGdvZWRrZXVyaW5nIG9mIGJldHJva2tlbmhlaWQgYmlqIGRlIGdvZWRlcmVuIG9mIGRpZW5zdGVuLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4zLiBEZW5uZSBicnVnIGthbiBmb3J2aXJyZSBmb3JicnVnZXJlIG9tIG9wcmluZGVsc2UsIGdvZGtlbmRlbHNlIGVsbGVyIHRpbGtueXRuaW5nIHRpbCB2YXJlcm5lIGVsbGVyIHRqZW5lc3Rlcm5lLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iYXIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IGRpcmVjdGlvbjogcnRsOyI+2aMuINmH2LDYpyDYp9mE2KfYs9iq2K7Yr9in2YUg2YXZhiDYp9mE2YXYrdiq2YXZhCDYo9mGINmK2LHYqNmDINin2YTZhdiz2KrZh9mE2YPZitmGINio2LTYo9mGINmF2LXYr9ixINij2Ygg2KrYo9mK2YrYryDYo9mIINin2LHYqtio2KfYtyDYp9mE2LPZhNi5INij2Ygg2KfZhNiu2K/Zhdin2KouPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlbiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+VGhlIHRvdWNoc3RvbmUgb2YgdHJhZGVtYXJrIGluZnJpbmdlbWVudCBpcyBvZnRlbiAibGlrZWxpaG9vZCBvZiBjb25mdXNpb24iLCBhbmQgdGhlcmUgYXJlIG1hbnkgZmFjdG9ycyB0aGF0IGRldGVybWluZSB3aGV0aGVyIGEgdXNlIG9mIGEgdHJhZGVtYXJrIGlzIGxpa2VseSB0byBjYXVzZSBjb25mdXNpb24uIEZvciBleGFtcGxlLCB3aGVuIGEgcGVyc29uJ3MgdHJhZGVtYXJrIGlzIGFsc28gdXNlZCBieSBzb21lb25lIGVsc2UsIGJ1dCBvbiB1bnJlbGF0ZWQgZ29vZHMgb3Igc2VydmljZXMsIHRoYXQgdXNlIG1heSBub3QgYmUgaW5mcmluZ2VtZW50IGJlY2F1c2UgaXQgbWF5IG5vdCBjYXVzZSBjb25mdXNpb24uIFdoaWNoIHBhcnR5IHVzZWQgdGhlIHRyYWRlbWFyayBmaXJzdCBjYW4gb2Z0ZW4gYmUgYW4gaW1wb3J0YW50IGNvbnNpZGVyYXRpb24gYXMgd2VsbC48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRlIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+RGVyIE1hw59zdGFiIGbDvHIgTWFya2VucmVjaHRzdmVybGV0enVuZ2VuIGlzdCBvZnQgZGllIOKAnlZlcndlY2hzbHVuZ3NnZWZhaHLigJwsIHVuZCBlcyBnaWJ0IHZpZWxlIEZha3RvcmVuLCBkaWUgYmVzdGltbWVuLCBvYiBkaWUgVmVyd2VuZHVuZyBlaW5lciBNYXJrZSB3YWhyc2NoZWlubGljaCB6dSBWZXJ3ZWNoc2x1bmdlbiBmw7xocnQuIFdlbm4genVtIEJlaXNwaWVsIGVpbmUgTWFya2Ugdm9uIGVpbmVyIGFuZGVyZW4gUGVyc29uIGF1ZiBuaWNodCB2ZXJ3YW5kdGVuIFdhcmVuIG9kZXIgRGllbnN0bGVpc3R1bmdlbiB2ZXJ3ZW5kZXQgd2lyZCwgbGllZ3QgbcO2Z2xpY2hlcndlaXNlIGtlaW5lIFZlcmxldHp1bmcgdm9yLCBkYSBrZWluZSBWZXJ3ZWNoc2x1bmcgZW50c3RlaHQuIEF1Y2ggd2VyIGRpZSBNYXJrZSB6dWVyc3QgdmVyd2VuZGV0IGhhdCwga2FubiBlaW4gd2ljaHRpZ2VyIEFzcGVrdCBzZWluLjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5MZSBjcml0w6hyZSBwcmluY2lwYWwgZCd1bmUgdmlvbGF0aW9uIGRlIG1hcnF1ZSBlc3Qgc291dmVudCBsZSDCqyByaXNxdWUgZGUgY29uZnVzaW9uIMK7LCBldCBkZSBub21icmV1eCBmYWN0ZXVycyBkw6l0ZXJtaW5lbnQgc2kgbCd1dGlsaXNhdGlvbiBkJ3VuZSBtYXJxdWUgZXN0IHN1c2NlcHRpYmxlIGRlIHNlbWVyIGxhIGNvbmZ1c2lvbi4gUGFyIGV4ZW1wbGUsIGxvcnNxdSd1bmUgbWFycXVlIGVzdCB1dGlsaXPDqWUgcGFyIHF1ZWxxdeKAmXVuIGTigJlhdXRyZSBzdXIgZGVzIGJpZW5zIG91IHNlcnZpY2VzIG5vbiBsacOpcywgY2VsYSBwZXV0IG5lIHBhcyBjb25zdGl0dWVyIHVuZSB2aW9sYXRpb24sIGNhciBjZWxhIG5lIGNyw6llIHBhcyBkZSBjb25mdXNpb24uIEzigJlhbnTDqXJpb3JpdMOpIGTigJl1dGlsaXNhdGlvbiBkZSBsYSBtYXJxdWUgcGV1dCBhdXNzaSDDqnRyZSB1biBmYWN0ZXVyIGNsw6kuPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPklsIHB1bnRvIGNydWNpYWxlIGRlbGxhIHZpb2xhemlvbmUgZGVsIG1hcmNoaW8gw6ggc3Blc3NvIGxhIOKAnHByb2JhYmlsaXTDoCBkaSBjb25mdXNpb25l4oCdLCBlIGNpIHNvbm8gbW9sdGkgZmF0dG9yaSBjaGUgZGV0ZXJtaW5hbm8gc2UgbOKAmXVzbyBkaSB1biBtYXJjaGlvIHBvc3NhIGNhdXNhcmUgY29uZnVzaW9uZS4gQWQgZXNlbXBpbywgc2UgdW4gbWFyY2hpbyB2aWVuZSB1c2F0byBkYSB1biBhbHRybyBzb2dnZXR0byBzdSBiZW5pIG8gc2Vydml6aSBub24gY29ycmVsYXRpLCBjacOyIHBvdHJlYmJlIG5vbiBjb3N0aXR1aXJlIHZpb2xhemlvbmUuIEFuY2hlIGNoaSBoYSB1c2F0byBwZXIgcHJpbW8gaWwgbWFyY2hpbyBwdcOyIGVzc2VyZSB1biBlbGVtZW50byByaWxldmFudGUuPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlcyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkVsIGNyaXRlcmlvIGNsYXZlIGRlIHVuYSBpbmZyYWNjacOzbiBkZSBtYXJjYSBzdWVsZSBzZXIgbGEg4oCccHJvYmFiaWxpZGFkIGRlIGNvbmZ1c2nDs27igJ0sIHkgaGF5IG11Y2hvcyBmYWN0b3JlcyBxdWUgZGV0ZXJtaW5hbiBzaSBlbCB1c28gZGUgdW5hIG1hcmNhIHB1ZWRlIGNhdXNhciBjb25mdXNpw7NuLiBQb3IgZWplbXBsbywgc2kgb3RyYSBwZXJzb25hIHV0aWxpemEgbGEgbWFyY2EgZW4gcHJvZHVjdG9zIG8gc2VydmljaW9zIG5vIHJlbGFjaW9uYWRvcywgcHVlZGUgcXVlIG5vIGhheWEgaW5mcmFjY2nDs24uIFRhbWJpw6luIHB1ZWRlIHNlciBpbXBvcnRhbnRlIHF1acOpbiB1c8OzIGxhIG1hcmNhIHByaW1lcm8uPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPk8gY3JpdMOpcmlvIHByaW5jaXBhbCBkZSBpbmZyYcOnw6NvIGRlIG1hcmNhIGNvc3R1bWEgc2VyIGEg4oCccHJvYmFiaWxpZGFkZSBkZSBjb25mdXPDo2/igJ0sIGUgbXVpdG9zIGZhdG9yZXMgZGV0ZXJtaW5hbSBzZSBvIHVzbyBwb2RlIGNhdXNhciBjb25mdXPDo28uIFBvciBleGVtcGxvLCBxdWFuZG8gb3V0cmEgcGVzc29hIHVzYSBhIG1hcmNhIGVtIHByb2R1dG9zIG91IHNlcnZpw6dvcyBuw6NvIHJlbGFjaW9uYWRvcywgcG9kZSBuw6NvIGhhdmVyIGluZnJhw6fDo28uIFF1ZW0gdXNvdSBhIG1hcmNhIHByaW1laXJvIHRhbWLDqW0gcG9kZSBzZXIgdW0gZmF0b3IgaW1wb3J0YW50ZS48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InRoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+4Lir4Lix4Lin4LmD4LiI4Liq4Liz4LiE4Lix4LiN4LiC4Lit4LiH4LiB4Liy4Lij4Lil4Liw4LmA4Lih4Li04LiU4LmA4LiE4Lij4Li34LmI4Lit4LiH4Lir4Lih4Liy4Lii4LiB4Liy4Lij4LiE4LmJ4Liy4Lih4Lix4LiB4LiI4Liw4LmA4Lib4LmH4LiZICLguITguKfguLLguKHguYDguJvguYfguJnguYTguJvguYTguJTguYnguJfguLXguYjguIjguLDguJfguLPguYPguKvguYnguYDguIHguLTguJTguITguKfguLLguKHguKrguLHguJrguKrguJkiIOC4i+C4tuC5iOC4h+C4oeC4teC4q+C4peC4suC4ouC4m+C4seC4iOC4iOC4seC4ouC4l+C4teC5iOC4nuC4tOC4iOC4suC4o+C4k+C4suC4p+C5iOC4suC4geC4suC4o+C5g+C4iuC5ieC5gOC4hOC4o+C4t+C5iOC4reC4h+C4q+C4oeC4suC4ouC4geC4suC4o+C4hOC5ieC4suC4reC4suC4iOC4l+C4s+C5g+C4q+C5ieC5gOC4geC4tOC4lOC4hOC4p+C4suC4oeC4quC4seC4muC4quC4meC4q+C4o+C4t+C4reC5hOC4oeC5iCDguJXguLHguKfguK3guKLguYjguLLguIfguYDguIrguYjguJkg4Lir4Liy4LiB4Lih4Li14LiB4Liy4Lij4LmD4LiK4LmJ4LmA4LiE4Lij4Li34LmI4Lit4LiH4Lir4Lih4Liy4Lii4LmA4LiU4Li14Lii4Lin4LiB4Lix4LiZ4LiB4Lix4Lia4Liq4Li04LiZ4LiE4LmJ4Liy4Lir4Lij4Li34Lit4Lia4Lij4Li04LiB4Liy4Lij4LiX4Li14LmI4LmE4Lih4LmI4LmA4LiB4Li14LmI4Lii4Lin4LiC4LmJ4Lit4LiHIOC4reC4suC4iOC5hOC4oeC5iOC4luC4t+C4reC4p+C5iOC4suC5gOC4m+C5h+C4meC4geC4suC4o+C4peC4sOC5gOC4oeC4tOC4lOC5gOC4nuC4o+C4suC4sOC5hOC4oeC5iOC4l+C4s+C5g+C4q+C5ieC5gOC4geC4tOC4lOC4hOC4p+C4suC4oeC4quC4seC4muC4quC4mSDguJ3guYjguLLguKLguYPguJTguYPguIrguYnguYDguITguKPguLfguYjguK3guIfguKvguKHguLLguKLguIHguLLguKPguITguYnguLLguIHguYjguK3guJnguIHguYfguKHguLHguIHguYDguJvguYfguJnguKrguLTguYjguIfguKrguLPguITguLHguI08L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImtvIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+7IOB7ZGc6raMIOy5qO2VtOydmCDtlbXsi6wg6riw7KSA7J2AIOyiheyihSDigJztmLzrj5kg6rCA64ql7ISx4oCd7J2066mwLCDsg4HtkZwg7IKs7Jqp7J20IO2YvOuPmeydhCDsnKDrsJztlaAg7IiYIOyeiOuKlOyngOulvCDqsrDsoJXtlZjripQg7Jes65+sIOyalOyduOydtCDsnojsirXri4jri6QuIOyYiOulvCDrk6TslrQsIOyWtOuWpCDsgqzrnozsnbQg7IKs7Jqp7ZWcIOyDge2RnOulvCDri6Trpbgg7IKs656M7J20IOq0gOugqCDsl4bripQg7IOB7ZKI7JeQIOyCrOyaqe2WiOydhCDqsr3smrAsIOydtOuKlCDtmLzrj5nsnYQg7J287Jy87YKk7KeAIOyViuycvOuvgOuhnCDsuajtlbTqsIAg7JWE64uQIOyImCDsnojsirXri4jri6QuIOuIhOqwgCDrqLzsoIAg7IKs7Jqp7ZaI64qU7KeA64+EIOykkeyalO2VnCDsmpTshozsnoXri4jri6QuPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJqYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuWVhuaomeaoqeS+teWus+OBruWfuua6luOBr+OAgeWkmuOBj+OBruWgtOWQiOOAjOa3t+WQjOOBruOBiuOBneOCjOOAjeOBp+OBguOCiuOAgea3t+S5seOBjOeUn+OBmOOCi+OBi+OBqeOBhuOBi+OCkuWIpOaWreOBmeOCi+WkmuOBj+OBruimgeWboOOBjOOBguOCiuOBvuOBmeOAguOBn+OBqOOBiOOBsOOAgeS7luiAheOBjOeEoemWouS/guOBquWVhuWTgeOChOOCteODvOODk+OCueOBq+WQjOOBmOWVhuaomeOCkuS9v+eUqOOBl+OBpuOCguOAgea3t+S5seOCkuW8leOBjei1t+OBk+OBleOBquOBhOWgtOWQiOOBr+S+teWus+OBq+OBr+OBquOCieOBquOBhOWPr+iDveaAp+OBjOOBguOCiuOBvuOBmeOAguOBqeOBoeOCieOBjOWFiOOBq+S9v+eUqOOBl+OBn+OBi+OCgumHjeimgeOBquimgee0oOOBp+OBmeOAgjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iemgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7llYbmoIfkvrXmnYPnmoTlhbPplK7moIflh4bpgJrluLjmmK/igJzmt7fmt4bnmoTlj6/og73mgKfigJ3vvIzmmK/lkKbmnoTmiJDkvrXmnYPlj5blhrPkuo7lpJrkuKrlm6DntKDjgILkvovlpoLvvIzlpoLmnpzku5bkurrlnKjml6DlhbPnmoTllYblk4HmiJbmnI3liqHkuK3kvb/nlKjnm7jlkIzllYbmoIfvvIzlj6/og73kuI3mnoTmiJDkvrXmnYPvvIzlm6DkuLrkuI3kvJrlr7zoh7Tmt7fmt4bjgILosIHlhYjkvb/nlKjor6XllYbmoIfvvIzkuZ/luLjluLjmmK/kuIDkuKrph43opoHlm6DntKDjgII8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Im5sIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+SGV0IGJlbGFuZ3JpamtzdGUgY3JpdGVyaXVtIHZvb3IgbWVya2luYnJldWsgaXMgdmFhayBkZSAia2FucyBvcCB2ZXJ3YXJyaW5nIiwgZW4gZXIgemlqbiB2ZWVsIGZhY3RvcmVuIGRpZSBiZXBhbGVuIG9mIGdlYnJ1aWsgdG90IHZlcndhcnJpbmcga2FuIGxlaWRlbi4gQmlqdm9vcmJlZWxkLCBhbHMgaWVtYW5kIGVlbiBtZXJrIGdlYnJ1aWt0IG9wIG5pZXQtZ2VyZWxhdGVlcmRlIHByb2R1Y3RlbiwgaG9lZnQgZGF0IGdlZW4gaW5icmV1ayB0ZSB6aWpuLiBPb2sgd2llIGhldCBtZXJrIGFscyBlZXJzdGUgZ2VicnVpa3RlLCBrYW4gYmVsYW5ncmlqayB6aWpuLjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5LZXJuZW4gaSBlbiB2YXJlbcOmcmtla3LDpm5rZWxzZSBlciBvZnRlICJyaXNpa28gZm9yIGZvcnZla3NsaW5nIiwgb2cgZGVyIGVyIG1hbmdlIGZha3RvcmVyLCBkZXIgYWZnw7hyLCBvbSBicnVnZW4gYWYgZXQgdmFyZW3DpnJrZSBrYW4gc2thYmUgZm9ydmlycmluZy4gSHZpcyBub2dlbiBicnVnZXIgZXQgdmFyZW3DpnJrZSBww6UgaWtrZS1yZWxhdGVyZWRlIHZhcmVyLCBrYW4gZGV0IGlra2UgdsOmcmUgZW4ga3LDpm5rZWxzZS4gSHZlbSBkZXIgYnJ1Z3RlIG3DpnJrZXQgZsO4cnN0LCBrYW4gb2dzw6UgdsOmcmUgZW4gdmlndGlnIGZha3Rvci48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImFyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyBkaXJlY3Rpb246IHJ0bDsiPti62KfZhNio2YvYpyDZhdinINiq2YPZiNmGICLYp9it2KrZhdin2YTZitipINit2K/ZiNirINmE2KjYsyIg2YfZiiDYp9mE2YXYudmK2KfYsSDYp9mE2KPYs9in2LPZiiDZhNin2YbYqtmH2KfZgyDYp9mE2LnZhNin2YXYqSDYp9mE2KrYrNin2LHZitip2Iwg2YjZh9mG2KfZgyDYp9mE2LnYr9mK2K8g2YXZhiDYp9mE2LnZiNin2YXZhCDYp9mE2KrZiiDYqtit2K/YryDZhdinINil2LDYpyDZg9in2YYg2KfYs9iq2K7Yr9in2YUg2KfZhNi52YTYp9mF2Kkg2YLYryDZitik2K/ZiiDYpdmE2Ykg2KfYsdiq2KjYp9mDLiDYudmE2Ykg2LPYqNmK2YQg2KfZhNmF2KvYp9mE2Iwg2KXYsNinINin2LPYqtiu2K/ZhSDYtNiu2LUg2LnZhNin2YXYqSDZhdi02KfYqNmH2Kkg2LnZhNmJINmF2YbYqtis2KfYqiDYo9mIINiu2K/Zhdin2Kog2LrZitixINiw2KfYqiDYtdmE2KnYjCDZgdmC2K8g2YTYpyDZitmP2LnYryDYsNmE2YMg2KfZhtiq2YfYp9mD2YvYpy4g2YPZhdinINij2YYg2YXZhiDYp9iz2KrYrtiv2YUg2KfZhNi52YTYp9mF2Kkg2KPZiNmE2KfZiyDZitmF2YPZhiDYo9mGINmK2YPZiNmGINi52KfZhdmE2YvYpyDZhdmH2YXZi9inINij2YrYttmL2KcuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgIDxoNj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlbiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+UHJpdmFjeSBDZW50ZXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5EYXRlbnNjaHV0emNlbnRlcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJmciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkNlbnRyZSBkZSBjb25maWRlbnRpYWxpdMOpPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Iml0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Q2VudHJvIHByaXZhY3k8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZXMiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5DZW50cm8gZGUgcHJpdmFjaWRhZDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkNlbnRyYWwgZGUgUHJpdmFjaWRhZGU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0idGgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7guKjguLnguJnguKLguYzguITguKfguLLguKHguYDguJvguYfguJnguKrguYjguKfguJnguJXguLHguKc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ia28iIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7qsJzsnbjsoJXrs7Qg7IS87YSwPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImphIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+44OX44Op44Kk44OQ44K344O844K744Oz44K/44O8PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InpoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+6ZqQ56eB5Lit5b+DPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Im5sIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+UHJpdmFjeWNlbnRydW08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Qcml2YXRsaXZzY2VudGVyPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImFyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyBkaXJlY3Rpb246IHJ0bDsiPtmF2LHZg9iyINin2YTYrti12YjYtdmK2Kk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9oNj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmFrZS1saWtucyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tbGlzdCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uIHdpZGUiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ii4uL2ltZy9zYXZlX2ltZy5wbmciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVuIiBzdHlsZT0iZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5XaGF0IGlzIHRoZSBQcml2YWN5IFBvbGljeSBhbmQgd2hhdCBkb2VzIGl0IHNheT88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5XYXMgaXN0IGRpZSBEYXRlbnNjaHV0enJpY2h0bGluaWUgdW5kIHdhcyBzdGVodCBkYXJpbj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5RdeKAmWVzdC1jZSBxdWUgbGEgcG9saXRpcXVlIGRlIGNvbmZpZGVudGlhbGl0w6kgZXQgcXVlIGRpdC1lbGxlJm5ic3A7Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkNvcyfDqCBsJ2luZm9ybWF0aXZhIHN1bGxhIHByaXZhY3kgZSBjb3NhIGRpY2U/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+wr9RdcOpIGVzIGxhIHBvbMOtdGljYSBkZSBwcml2YWNpZGFkIHkgcXXDqSBkaWNlPzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPk8gcXVlIMOpIGEgUG9sw610aWNhIGRlIFByaXZhY2lkYWRlIGUgbyBxdWUgZWxhIGRpej88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0idGgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7guJnguYLguKLguJrguLLguKLguITguKfguLLguKHguYDguJvguYfguJnguKrguYjguKfguJnguJXguLHguKfguITguLfguK3guK3guLDguYTguKMg4LmB4Lil4Liw4Lih4Li14LmA4LiZ4Li34LmJ4Lit4Lir4Liy4Lit4Lii4LmI4Liy4LiH4LmE4LijPzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJrbyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuqwnOyduOygleuztCDrs7TtmLjsoJXssYXsnbTrnoAg66y07JeH7J2066mwLCDqt7gg64K07Jqp7J2AIOustOyXh+yduOqwgOyalD88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7jg5fjg6njgqTjg5Djgrfjg7zjg53jg6rjgrfjg7zjgajjga/kvZXjgafjgIHkvZXjgYzmm7jjgYvjgozjgabjgYTjgovjga7jgafjgZnjgYvvvJ88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iemgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7ku4DkuYjmmK/pmpDnp4HmlL/nrZbvvJ/lroPljIXmi6zlk6rkupvlhoXlrrnvvJ88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ibmwiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5XYXQgaXMgaGV0IHByaXZhY3liZWxlaWQgZW4gd2F0IHN0YWF0IGVyaW4/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRhIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+SHZhZCBlciBwcml2YXRsaXZzcG9saXRpa2tlbiwgb2cgaHZhZCBzaWdlciBkZW4/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImFyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyBkaXJlY3Rpb246IHJ0bDsiPtmF2Kcg2YfZiiDYs9mK2KfYs9ipINin2YTYrti12YjYtdmK2Kkg2YjZhdin2LDYpyDYqtmG2LUg2LnZhNmK2YfYnzwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJlbiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+UHJpdmFjeSBQb2xpY3k8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJkZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkRhdGVuc2NodXR6cmljaHRsaW5pZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImZyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+UG9saXRpcXVlIGRlIGNvbmZpZGVudGlhbGl0w6k8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkluZm9ybWF0aXZhIHN1bGxhIHByaXZhY3k8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJlcyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlBvbMOtdGljYSBkZSBwcml2YWNpZGFkPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic21hbGwtZ3JleSBsYW5nLXRleHQiIGRhdGEtbGFuZz0icHQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Qb2zDrXRpY2EgZGUgUHJpdmFjaWRhZGU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuC4meC5guC4ouC4muC4suC4ouC4hOC4p+C4suC4oeC5gOC4m+C5h+C4meC4quC5iOC4p+C4meC4leC4seC4pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImtvIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+6rCc7J247KCV67O0IOuztO2YuOygleyxhTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImphIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+44OX44Op44Kk44OQ44K344O844Od44Oq44K344O8PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic21hbGwtZ3JleSBsYW5nLXRleHQiIGRhdGEtbGFuZz0iemgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7pmpDnp4HmlL/nrZY8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlByaXZhY3liZWxlaWQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJkYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlByaXZhdGxpdnNwb2xpdGlrPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic21hbGwtZ3JleSBsYW5nLXRleHQiIGRhdGEtbGFuZz0iYXIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IGRpcmVjdGlvbjogcnRsOyI+2LPZitin2LPYqSDYp9mE2K7YtdmI2LXZitipPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGNsYXNzPSJ4MWxsaWlocSB4MWs5MG1zdSB4Mmg3cm1qIHgxcWZ1enRxIHhjemE4djYgeGx1cDltbSB4MWtreTJvZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTcuMjQ3IDQuMzQxYTEgMSAwIDAgMSAxLjQxMi0uMDk0bDggN2ExIDEgMCAwIDEgMCAxLjUwNmwtOCA3YTEgMSAwIDAgMS0xLjMxOC0xLjUwNkwxNC40ODIgMTJsLTcuMTQtNi4yNDdhMSAxIDAgMCAxLS4wOTQtMS40MTJ6Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24gd2lkZSIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iLi4vaW1nL3NhdmVfaW1nLnBuZyIgYWx0PSIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZW4iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsiPkhvdyB5b3UgY2FuIG1hbmFnZSBvciBkZWxldGUgeW91ciBpbmZvcm1hdGlvbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPldpZSBTaWUgSWhyZSBJbmZvcm1hdGlvbmVuIHZlcndhbHRlbiBvZGVyIGzDtnNjaGVuIGvDtm5uZW48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Db21tZW50IGfDqXJlciBvdSBzdXBwcmltZXIgdm9zIGluZm9ybWF0aW9uczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkNvbWUgZ2VzdGlyZSBvIGVsaW1pbmFyZSBsZSB0dWUgaW5mb3JtYXppb25pPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Q8OzbW8gcHVlZGVzIGFkbWluaXN0cmFyIG8gZWxpbWluYXIgdHUgaW5mb3JtYWNpw7NuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InB0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Q29tbyB2b2PDqiBwb2RlIGdlcmVuY2lhciBvdSBleGNsdWlyIHN1YXMgaW5mb3JtYcOnw7Vlczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuC4hOC4uOC4k+C4quC4suC4oeC4suC4o+C4luC4iOC4seC4lOC4geC4suC4o+C4q+C4o+C4t+C4reC4peC4muC4guC5ieC4reC4oeC4ueC4peC4guC4reC4h+C4hOC4uOC4k+C5hOC4lOC5ieC4reC4ouC5iOC4suC4h+C5hOC4ozwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJrbyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuygleuztOulvCDqtIDrpqztlZjqsbDrgpgg7IKt7KCc7ZWY64qUIOuwqeuylTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJqYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuiHquWIhuOBruaDheWgseOCkueuoeeQhuOBvuOBn+OBr+WJiumZpOOBmeOCi+aWueazlTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuaCqOWPr+S7peWmguS9leeuoeeQhuaIluWIoOmZpOaCqOeahOS/oeaBrzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkhvZSB1IHV3IGluZm9ybWF0aWUga3VudCBiZWhlcmVuIG9mIHZlcndpamRlcmVuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRhIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+U8OlZGFuIGthbiBkdSBhZG1pbmlzdHJlcmUgZWxsZXIgc2xldHRlIGRpbmUgb3BseXNuaW5nZXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iYXIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IGRpcmVjdGlvbjogcnRsOyI+2YPZitmBINmK2YXZg9mG2YMg2KXYr9in2LHYqSDYo9mIINit2LDZgSDZhdi52YTZiNmF2KfYqtmDPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVuIiBzdHlsZT0iZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5Qcml2YWN5IFBvbGljeTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRlIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+RGF0ZW5zY2h1dHpyaWNodGxpbmllPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic21hbGwtZ3JleSBsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Qb2xpdGlxdWUgZGUgY29uZmlkZW50aWFsaXTDqTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkgbGFuZy10ZXh0IiBkYXRhLWxhbmc9Iml0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+SW5mb3JtYXRpdmEgc3VsbGEgcHJpdmFjeTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+UG9sw610aWNhIGRlIHByaXZhY2lkYWQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlBvbMOtdGljYSBkZSBQcml2YWNpZGFkZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkgbGFuZy10ZXh0IiBkYXRhLWxhbmc9InRoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+4LiZ4LmC4Lii4Lia4Liy4Lii4LiE4Lin4Liy4Lih4LmA4Lib4LmH4LiZ4Liq4LmI4Lin4LiZ4LiV4Lix4LinPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic21hbGwtZ3JleSBsYW5nLXRleHQiIGRhdGEtbGFuZz0ia28iIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7qsJzsnbjsoJXrs7Qg67O07Zi47KCV7LGFPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic21hbGwtZ3JleSBsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7jg5fjg6njgqTjg5Djgrfjg7zjg53jg6rjgrfjg7w8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPumakOengeaUv+etljwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkgbGFuZy10ZXh0IiBkYXRhLWxhbmc9Im5sIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+UHJpdmFjeWJlbGVpZDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRhIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+UHJpdmF0bGl2c3BvbGl0aWs8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJhciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgZGlyZWN0aW9uOiBydGw7Ij7Ys9mK2KfYs9ipINin2YTYrti12YjYtdmK2Kk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgY2xhc3M9IngxbGxpaWhxIHgxazkwbXN1IHgyaDdybWogeDFxZnV6dHEgeGN6YTh2NiB4bHVwOW1tIHgxa2t5Mm9kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNy4yNDcgNC4zNDFhMSAxIDAgMCAxIDEuNDEyLS4wOTRsOCA3YTEgMSAwIDAgMSAwIDEuNTA2bC04IDdhMSAxIDAgMCAxLTEuMzE4LTEuNTA2TDE0LjQ4MiAxMmwtNy4xNC02LjI0N2ExIDEgMCAwIDEtLjA5NC0xLjQxMnoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICAgICAgPGg2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlbiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+Rm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZSBVc2VyIEFncmVlbWVudDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5XZWl0ZXJlIEluZm9ybWF0aW9uZW4gZmluZGVuIFNpZSBpbiBkZXIgTnV0enVuZ3N2ZXJlaW5iYXJ1bmc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImZyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+UG91ciBwbHVzIGRlIGTDqXRhaWxzLCBjb25zdWx0ZXogbGUgY29udHJhdCBkJ3V0aWxpc2F0aW9uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlBlciB1bHRlcmlvcmkgZGV0dGFnbGksIGNvbnN1bHRhcmUgaWwgQ29udHJhdHRvIGNvbiBsJ3V0ZW50ZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZXMiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5QYXJhIG3DoXMgZGV0YWxsZXMsIGNvbnN1bHRhIGVsIEFjdWVyZG8gZGUgdXN1YXJpbzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0icHQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5QYXJhIG1haXMgZGV0YWxoZXMsIHZlamEgbyBDb250cmF0byBkbyBVc3XDoXJpbzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0idGgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7guKrguLPguKvguKPguLHguJrguKPguLLguKLguKXguLDguYDguK3guLXguKLguJTguYDguJ7guLTguYjguKHguYDguJXguLTguKEg4LmC4Lib4Lij4LiU4LiU4Li54LiC4LmJ4Lit4LiV4LiB4Lil4LiH4Lic4Li54LmJ4LmD4LiK4LmJPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJrbyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuyekOyEuO2VnCDrgrTsmqnsnYAg7IKs7Jqp7J6QIOqzhOyVveyEnOulvCDssLjsobDtlZjshLjsmpQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImphIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+6Kmz57Sw44Gr44Gk44GE44Gm44Gv44CB44Om44O844K244O85aWR57SE44KS44GU6Kan44GP44Gg44GV44GEPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuacieWFs+abtOWkmuivpue7huS/oeaBr++8jOivt+WPgumYheeUqOaIt+WNj+iurjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ibmwiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5aaWUgZGUgZ2VicnVpa2Vyc292ZXJlZW5rb21zdCB2b29yIG1lZXIgaW5mb3JtYXRpZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5TZSBicnVnZXJhZnRhbGVuIGZvciBmbGVyZSBvcGx5c25pbmdlcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iYXIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IGRpcmVjdGlvbjogcnRsOyI+2YTZhdiy2YrYryDZhdmGINin2YTYqtmB2KfYtdmK2YTYjCDYsdin2KzYuSDYp9iq2YHYp9mC2YrYqSDYp9mE2YXYs9iq2K7Yr9mFPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2g2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiB3aWRlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iLi4vaW1nL2RvYy5wbmciIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5NZXRhIEFJPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic21hbGwtZ3JleSBsYW5nLXRleHQiIGRhdGEtbGFuZz0iZW4iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsiPlVzZXIgQWdyZWVtZW50PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJkZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPk51dHp1bmdzdmVyZWluYmFydW5nPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJmciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkNvbnRyYXQgZCd1dGlsaXNhdGlvbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic21hbGwtZ3JleSBsYW5nLXRleHQiIGRhdGEtbGFuZz0iaXQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Db250cmF0dG8gY29uIGwndXRlbnRlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJlcyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkFjdWVyZG8gZGUgdXN1YXJpbzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic21hbGwtZ3JleSBsYW5nLXRleHQiIGRhdGEtbGFuZz0icHQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Db250cmF0byBkbyBVc3XDoXJpbzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic21hbGwtZ3JleSBsYW5nLXRleHQiIGRhdGEtbGFuZz0idGgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7guILguYnguK3guJXguIHguKXguIfguJzguLnguYnguYPguIrguYk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImtvIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+7IKs7Jqp7J6QIOqzhOyVvTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic21hbGwtZ3JleSBsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7jg6bjg7zjgrbjg7zlpZHntIQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkgbGFuZy10ZXh0IiBkYXRhLWxhbmc9InpoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+55So5oi35Y2P6K6uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkdlYnJ1aWtlcnNvdmVyZWVua29tc3Q8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRhIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+QnJ1Z2VyYWZ0YWxlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJhciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgZGlyZWN0aW9uOiBydGw7Ij7Yp9iq2YHYp9mC2YrYqSDYp9mE2YXYs9iq2K7Yr9mFPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgY2xhc3M9IngxbGxpaWhxIHgxazkwbXN1IHgyaDdybWogeDFxZnV6dHEgeGN6YTh2NiB4bHVwOW1tIHgxa2t5Mm9kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjI0NyA0LjM0MWExIDEgMCAwIDEgMS40MTItLjA5NGw4IDdhMSAxIDAgMCAxIDAgMS41MDZsLTggN2ExIDEgMCAwIDEtMS4zMTgtMS41MDZMMTQuNDgyIDEybC03LjE0LTYuMjQ3YTEgMSAwIDAgMS0uMDk0LTEuNDEyeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgICAgICA8aDY+QWRkaXRpb25hbCByZXNvdXJjZXM8L2g2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1saXN0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24gd2lkZSIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlbiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+SG93IE1ldGEgdXNlcyBpbmZvcm1hdGlvbiBmb3IgZ2VuZXJhdGl2ZSBBSSBtb2RlbHM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5XaWUgTWV0YSBJbmZvcm1hdGlvbmVuIGbDvHIgZ2VuZXJhdGl2ZSBLSS1Nb2RlbGxlIHZlcndlbmRldDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJmciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkNvbW1lbnQgTWV0YSB1dGlsaXNlIGxlcyBpbmZvcm1hdGlvbnMgcG91ciBsZXMgbW9kw6hsZXMgZCdJQSBnw6luw6lyYXRpdmU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iaXQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Db21lIE1ldGEgdXRpbGl6emEgbGUgaW5mb3JtYXppb25pIHBlciBpIG1vZGVsbGkgZGkgSUEgZ2VuZXJhdGl2YTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlcyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkPDs21vIE1ldGEgdXRpbGl6YSBsYSBpbmZvcm1hY2nDs24gcGFyYSBtb2RlbG9zIGRlIElBIGdlbmVyYXRpdmE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0icHQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Db21vIGEgTWV0YSB1c2EgaW5mb3JtYcOnw7VlcyBwYXJhIG1vZGVsb3MgZGUgSUEgZ2VuZXJhdGl2YTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPk1ldGEg4LmD4LiK4LmJ4LiC4LmJ4Lit4Lih4Li54Lil4Lit4Lii4LmI4Liy4LiH4LmE4Lij4Liq4Liz4Lir4Lij4Lix4Lia4LmC4Lih4LmA4LiU4LilIEFJIOC4l+C4teC5iOC4quC4o+C5ieC4suC4h+C4guC4tuC5ieC4mTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJrbyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPk1ldGHqsIAg7IOd7ISx7ZiVIEFJIOuqqOuNuOyXkCDsoJXrs7Trpbwg7Ja065a76rKMIOyCrOyaqe2VmOuKlOyngDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJqYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPk1ldGHjgYznlJ/miJBBSeODouODh+ODq+OBq+aDheWgseOCkuOBqeOBruOCiOOBhuOBq+S9v+eUqOOBmeOCi+OBizwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPk1ldGHlpoLkvZXlsIbkv6Hmga/nlKjkuo7nlJ/miJDlvI9BSeaooeWeizwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkhvZSBNZXRhIGluZm9ybWF0aWUgZ2VicnVpa3Qgdm9vciBnZW5lcmF0aWV2ZSBBSS1tb2RlbGxlbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkh2b3JkYW4gTWV0YSBicnVnZXIgb3BseXNuaW5nZXIgdGlsIGdlbmVyYXRpdmUgQUktbW9kZWxsZXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iYXIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IGRpcmVjdGlvbjogcnRsOyI+2YPZitmBINiq2LPYqtiu2K/ZhSBNZXRhINin2YTZhdi52YTZiNmF2KfYqiDZhNmG2YXYp9iw2Kwg2KfZhNiw2YPYp9ihINin2YTYp9i12LfZhtin2LnZiiDYp9mE2KrZiNmE2YrYr9mK2Kk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkiPlByaXZhY3kgQ2VudGVyPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgY2xhc3M9IngxbGxpaWhxIHgxazkwbXN1IHgyaDdybWogeDFxZnV6dHEgeGN6YTh2NiB4bHVwOW1tIHgxa2t5Mm9kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNy4yNDcgNC4zNDFhMSAxIDAgMCAxIDEuNDEyLS4wOTRsOCA3YTEgMSAwIDAgMSAwIDEuNTA2bC04IDdhMSAxIDAgMCAxLTEuMzE4LTEuNTA2TDE0LjQ4MiAxMmwtNy4xNC02LjI0N2ExIDEgMCAwIDEtLjA5NC0xLjQxMnoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiB3aWRlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVuIiBzdHlsZT0iZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5DYXJkcyB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBvcGVyYXRpb24gb2YgQUkgc3lzdGVtczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkthcnRlbiBtaXQgSW5mb3JtYXRpb25lbiDDvGJlciBkZW4gQmV0cmllYiB2b24gS0ktU3lzdGVtZW48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5DYXJ0ZXMgY29udGVuYW50IGRlcyBpbmZvcm1hdGlvbnMgc3VyIGxlIGZvbmN0aW9ubmVtZW50IGRlcyBzeXN0w6htZXMgZCdJQTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlNjaGVkZSBjb24gaW5mb3JtYXppb25pIHN1bCBmdW56aW9uYW1lbnRvIGRlaSBzaXN0ZW1pIGRpIElBPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+VGFyamV0YXMgY29uIGluZm9ybWFjacOzbiBzb2JyZSBlbCBmdW5jaW9uYW1pZW50byBkZSBsb3Mgc2lzdGVtYXMgZGUgSUE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0icHQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5DYXJ0w7VlcyBjb20gaW5mb3JtYcOnw7VlcyBzb2JyZSBvIGZ1bmNpb25hbWVudG8gZGUgc2lzdGVtYXMgZGUgSUE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0idGgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7guIHguLLguKPguYzguJTguJfguLXguYjguKHguLXguILguYnguK3guKHguLnguKXguYDguIHguLXguYjguKLguKfguIHguLHguJrguIHguLLguKPguJfguLPguIfguLLguJnguILguK3guIfguKPguLDguJrguJogQUk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ia28iIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5BSSDsi5zsiqTthZwg7J6R64+ZIOuwqeyLneyXkCDrjIDtlZwg7KCV67O06rCAIOuLtOq4tCDsubTrk5w8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5BSeOCt+OCueODhuODoOOBruWLleS9nOOBq+mWouOBmeOCi+aDheWgseOCkuWQq+OCgOOCq+ODvOODiTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuWMheWQq+acieWFs0FJ57O757uf6L+Q6KGM5L+h5oGv55qE5Y2h54mHPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Im5sIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+S2FhcnRlbiBtZXQgaW5mb3JtYXRpZSBvdmVyIGRlIHdlcmtpbmcgdmFuIEFJLXN5c3RlbWVuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRhIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+S29ydCBtZWQgaW5mb3JtYXRpb24gb20sIGh2b3JkYW4gQUktc3lzdGVtZXIgZnVuZ2VyZXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iYXIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IGRpcmVjdGlvbjogcnRsOyI+2KjYt9in2YLYp9iqINiq2K3YqtmI2Yog2LnZhNmJINmF2LnZhNmI2YXYp9iqINit2YjZhCDYqti02LrZitmEINij2YbYuNmF2Kkg2KfZhNiw2YPYp9ihINin2YTYp9i12LfZhtin2LnZijwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic21hbGwtZ3JleSI+TWV0YSBBSSB3ZWJzaXRlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgY2xhc3M9IngxbGxpaWhxIHgxazkwbXN1IHgyaDdybWogeDFxZnV6dHEgeGN6YTh2NiB4bHVwOW1tIHgxa2t5Mm9kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNy4yNDcgNC4zNDFhMSAxIDAgMCAxIDEuNDEyLS4wOTRsOCA3YTEgMSAwIDAgMSAwIDEuNTA2bC04IDdhMSAxIDAgMCAxLTEuMzE4LTEuNTA2TDE0LjQ4MiAxMmwtNy4xNC02LjI0N2ExIDEgMCAwIDEtLjA5NC0xLjQxMnoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiB3aWRlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVuIiBzdHlsZT0iZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5JbnRyb2R1Y3Rpb24gdG8gR2VuZXJhdGl2ZSBBSTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkVpbmbDvGhydW5nIGluIGdlbmVyYXRpdmUgS0k8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5JbnRyb2R1Y3Rpb24gw6AgbCdJQSBnw6luw6lyYXRpdmU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iaXQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5JbnRyb2R1emlvbmUgYWxsJ0lBIGdlbmVyYXRpdmE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZXMiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5JbnRyb2R1Y2Npw7NuIGEgbGEgSUEgZ2VuZXJhdGl2YTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkludHJvZHXDp8OjbyDDoCBJQSBnZW5lcmF0aXZhPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InRoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+4Lia4LiX4LiZ4Liz4Liq4Li54LmI4Lib4Lix4LiN4LiN4Liy4Lib4Lij4Liw4LiU4Li04Lip4LiQ4LmM4LmA4LiK4Li04LiH4Liq4Lij4LmJ4Liy4LiH4Liq4Lij4Lij4LiE4LmMPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImtvIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+7IOd7ISx7ZiVIOyduOqzteyngOuKpSDshozqsJw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7nlJ/miJBBSeOBrue0ueS7izwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPueUn+aIkOW8j+S6uuW3peaZuuiDveeugOS7izwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPklubGVpZGluZyB0b3QgZ2VuZXJhdGlldmUgQUk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5JbnRyb2R1a3Rpb24gdGlsIGdlbmVyYXRpdiBBSTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJhciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgZGlyZWN0aW9uOiBydGw7Ij7ZhdmC2K/ZhdipINil2YTZiSDYp9mE2LDZg9in2KEg2KfZhNin2LXYt9mG2KfYudmKINin2YTYqtmI2YTZitiv2Yo8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkiPkZvciB0ZWVuYWdlcnM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiBjbGFzcz0ieDFsbGlpaHEgeDFrOTBtc3UgeDJoN3JtaiB4MXFmdXp0cSB4Y3phOHY2IHhsdXA5bW0geDFra3kyb2QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjI0NyA0LjM0MWExIDEgMCAwIDEgMS40MTItLjA5NGw4IDdhMSAxIDAgMCAxIDAgMS41MDZsLTggN2ExIDEgMCAwIDEtMS4zMTgtMS41MDZMMTQuNDgyIDEybC03LjE0LTYuMjQ3YTEgMSAwIDAgMS0uMDk0LTEuNDEyeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InNtYWxsLWdyZXkiPldlIGNvbnRpbnVhbGx5IGlkZW50aWZ5IHBvdGVudGlhbCBwcml2YWN5IHJpc2tzLCBpbmNsdWRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBjb2xsZWN0aW5nLCB1c2luZyBvciBzaGFyaW5nIHBlcnNvbmFsIGluZm9ybWF0aW9uLCBhbmQgZGV2ZWxvcGluZyBtZXRob2RzIHRvIHJlZHVjZSB0aGVzZQogICAgICAgICAgICAgICAgICAgICAgICByaXNrcy4gUmVhZCBtb3JlIGFib3V0CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD0iX2JsYW5rIiBpZD0icG9saWN5TGluayIgY2xhc3M9ImFkZC1zdmciPlByaXZhY3kgUG9saWN5CgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiBjbGFzcz0ieDFuZ3FtczcgeDE4c2hlbG4geDFoeXlxdjQgeDFuMm9ucjYgeHJoc3RuMiB4bjQ3dTZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNiAxOWgxMmExIDEgMCAwIDAgMS0xdi01aDJ2NWEzIDMgMCAwIDEtMyAzSDZhMyAzIDAgMCAxLTMtM1Y2YTMgMyAwIDAgMSAzLTNoNXYySDZhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS4yOTIgMTEuMjkzIDE3LjU4NiA1SDE0YTEgMSAwIDEgMSAwLTJoNmExIDEgMCAwIDEgMSAxdjZhMSAxIDAgMSAxLTIgMFY2LjQxNGwtNi4yOTMgNi4yOTNhMSAxIDAgMCAxLTEuNDE0LTEuNDE0eiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8L2Rpdj4KCgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwb3B1cCIgaWQ9InBvcHVwIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwb3B1cC1pdGVtIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXJnZXItYnV0dG9uLXBvcHVwIiBpZD0iY2xvc2VQb3B1cCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJhciIgYmlzX3NraW5fY2hlY2tlZD0iMSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJhciIgYmlzX3NraW5fY2hlY2tlZD0iMSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icG9wdXAtY29udGVudCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgoKICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZvcm0tbW9kYWwiIGlkPSJleGFtcGxlTW9kYWwxIiB0YWJpbmRleD0iLTEiIGFyaWEtbGFiZWxsZWRieT0iZXhhbXBsZU1vZGFsTGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkIG1vZGFsLWRpYWxvZy1zY3JvbGxhYmxlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiIGlkPSJleGFtcGxlTW9kYWxMYWJlbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZW4iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsiPkFwcGVhbCBGb3JtPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRlIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+RWluc3BydWNoc2Zvcm11bGFyPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImZyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Rm9ybXVsYWlyZSBk4oCZYXBwZWw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iaXQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Nb2R1bG8gZGkgcmljb3Jzbzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlcyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkZvcm11bGFyaW8gZGUgYXBlbGFjacOzbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkZvcm11bMOhcmlvIGRlIHJlY3Vyc288L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0idGgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7guYHguJrguJrguJ/guK3guKPguYzguKHguK3guLjguJfguJjguKPguJPguYw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ia28iIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7snbTsnZgg7Iug7LKt7IScPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImphIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+55Ww6K2w55Sz44GX56uL44Gm44OV44Kp44O844OgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InpoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+55Sz6K+J6KGo5Y2VPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Im5sIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+QmVyb2Vwc2Zvcm11bGllcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkFwcGVsZm9ybXVsYXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iYXIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IGRpcmVjdGlvbjogcnRsOyI+2YbZhdmI2LDYrCDYp9mE2KfYs9iq2KbZhtin2YE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9oND4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1jbG9zZSIgZGF0YS1icy1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBpZD0iZmlyc3QtZm9ybSI+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImV4YW1wbGVGb3JtQ29udHJvbFRleHRhcmVhMSIgY2xhc3M9ImZvcm0tbGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZW4iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsiPkFkZGl0aW9uYWwgaW5mb3JtYXRpb248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlp1c8OkdHpsaWNoZSBJbmZvcm1hdGlvbmVuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5JbmZvcm1hdGlvbnMgc3VwcGzDqW1lbnRhaXJlczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Iml0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+SW5mb3JtYXppb25pIGFnZ2l1bnRpdmU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlcyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkluZm9ybWFjacOzbiBhZGljaW9uYWw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkluZm9ybWHDp8O1ZXMgYWRpY2lvbmFpczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InRoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+4LiC4LmJ4Lit4Lih4Li54Lil4LmA4Lie4Li04LmI4Lih4LmA4LiV4Li04LihPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ia28iIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7stpTqsIAg7KCV67O0PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7ov73liqDmg4XloLE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuWFtuS7luS/oeaBrzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Im5sIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+QWFudnVsbGVuZGUgaW5mb3JtYXRpZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRhIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+WWRlcmxpZ2VyZSBvcGx5c25pbmdlcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImFyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyBkaXJlY3Rpb246IHJ0bDsiPtmF2LnZhNmI2YXYp9iqINil2LbYp9mB2YrYqTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG5hbWU9ImFwZWFsIiBjbGFzcz0iZm9ybS1jb250cm9sIiBpZD0iZXhhbXBsZUZvcm1Db250cm9sVGV4dGFyZWExIiByb3dzPSIxIiByZXF1aXJlZD0iIj48L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZW1haWxIZWxwIiBjbGFzcz0iZm9ybS10ZXh0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVuIiBzdHlsZT0iZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5QbGVhc2UgaW5kaWNhdGUgd2h5IHlvdSBiZWxpZXZlIHRoYXQgYWNjb3VudCByZXN0cmljdGlvbnMgd2VyZSBpbXBvc2VkIGJ5IG1pc3Rha2UuIE91ciB0ZWNobm9sb2d5IGFuZCB0ZWFtIHdvcmsgaW4gbXVsdGlwbGUgbGFuZ3VhZ2VzIHRvIGVuc3VyZSBjb25zaXN0ZW50IGVuZm9yY2VtZW50IG9mIHJ1bGVzLiBZb3UgY2FuIGNvbW11bmljYXRlIHdpdGggdXMgaW4geW91ciBuYXRpdmUgbGFuZ3VhZ2UuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5CaXR0ZSBnZWJlbiBTaWUgYW4sIHdhcnVtIFNpZSBnbGF1YmVuLCBkYXNzIGRpZSBLb250b2Jlc2NocsOkbmt1bmdlbiBmw6Rsc2NobGljaGVyd2Vpc2UgdmVyaMOkbmd0IHd1cmRlbi4gVW5zZXJlIFRlY2hub2xvZ2llIHVuZCB1bnNlciBUZWFtIGFyYmVpdGVuIGluIG1laHJlcmVuIFNwcmFjaGVuLCB1bSBlaW5lIGVpbmhlaXRsaWNoZSBEdXJjaHNldHp1bmcgZGVyIFJlZ2VsbiB6dSBnZXfDpGhybGVpc3Rlbi4gU2llIGvDtm5uZW4gbWl0IHVucyBpbiBJaHJlciBNdXR0ZXJzcHJhY2hlIGtvbW11bml6aWVyZW4uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5WZXVpbGxleiBpbmRpcXVlciBwb3VycXVvaSB2b3VzIHBlbnNleiBxdWUgbGVzIHJlc3RyaWN0aW9ucyBzdXIgbGUgY29tcHRlIG9udCDDqXTDqSBpbXBvc8OpZXMgcGFyIGVycmV1ci4gTm90cmUgdGVjaG5vbG9naWUgZXQgbm90cmUgw6lxdWlwZSB0cmF2YWlsbGVudCBkYW5zIHBsdXNpZXVycyBsYW5ndWVzIHBvdXIgZ2FyYW50aXIgbCdhcHBsaWNhdGlvbiBjb2jDqXJlbnRlIGRlcyByw6hnbGVzLiBWb3VzIHBvdXZleiBjb21tdW5pcXVlciBhdmVjIG5vdXMgZGFucyB2b3RyZSBsYW5ndWUgbWF0ZXJuZWxsZS48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkluZGljYSBwZXJjaMOpIHJpdGllbmkgY2hlIGxlIHJlc3RyaXppb25pIGRlbGwnYWNjb3VudCBzaWFubyBzdGF0ZSBpbXBvc3RlIHBlciBlcnJvcmUuIExhIG5vc3RyYSB0ZWNub2xvZ2lhIGUgaWwgbm9zdHJvIHRlYW0gbGF2b3Jhbm8gaW4gcGnDuSBsaW5ndWUgcGVyIGdhcmFudGlyZSBsJ2FwcGxpY2F6aW9uZSBjb2VyZW50ZSBkZWxsZSByZWdvbGUuIFB1b2kgY29tdW5pY2FyZSBjb24gbm9pIG5lbGxhIHR1YSBsaW5ndWEgbWFkcmUuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZXMiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5JbmRpcXVlIHBvciBxdcOpIGNyZWUgcXVlIHNlIGltcHVzaWVyb24gcmVzdHJpY2Npb25lcyBhIGxhIGN1ZW50YSBwb3IgZXJyb3IuIE51ZXN0cmEgdGVjbm9sb2fDrWEgeSBudWVzdHJvIGVxdWlwbyB0cmFiYWphbiBlbiB2YXJpb3MgaWRpb21hcyBwYXJhIGdhcmFudGl6YXIgbGEgYXBsaWNhY2nDs24gY29oZXJlbnRlIGRlIGxhcyByZWdsYXMuIFB1ZWRlIGNvbXVuaWNhcnNlIGNvbiBub3NvdHJvcyBlbiBzdSBpZGlvbWEgbmF0aXZvLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InB0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+SW5kaXF1ZSBwb3IgcXVlIHZvY8OqIGFjcmVkaXRhIHF1ZSBhcyByZXN0cmnDp8O1ZXMgZGEgY29udGEgZm9yYW0gaW1wb3N0YXMgcG9yIGVuZ2Fuby4gTm9zc2EgdGVjbm9sb2dpYSBlIGVxdWlwZSB0cmFiYWxoYW0gZW0gdsOhcmlvcyBpZGlvbWFzIHBhcmEgZ2FyYW50aXIgYSBhcGxpY2HDp8OjbyBjb25zaXN0ZW50ZSBkYXMgcmVncmFzLiBWb2PDqiBwb2RlIHNlIGNvbXVuaWNhciBjb25vc2NvIG5vIHNldSBpZGlvbWEgbmF0aXZvLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InRoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+4LmC4Lib4Lij4LiU4Lij4Liw4Lia4Li44LmA4Lir4LiV4Li44Lic4Lil4LiX4Li14LmI4LiE4Li44LiT4LmA4LiK4Li34LmI4Lit4Lin4LmI4Liy4Lih4Li14LiB4Liy4Lij4LiB4Liz4Lir4LiZ4LiU4LiC4LmJ4Lit4LiI4Liz4LiB4Lix4LiU4LmD4LiZ4Lia4Lix4LiN4LiK4Li14LmC4LiU4Lii4LiE4Lin4Liy4Lih4Lic4Li04LiU4Lie4Lil4Liy4LiUIOC5gOC4l+C4hOC5guC4meC5guC4peC4ouC4teC5geC4peC4sOC4l+C4teC4oeC4guC4reC4h+C5gOC4o+C4suC4l+C4s+C4h+C4suC4meC5g+C4meC4q+C4peC4suC4ouC4oOC4suC4qeC4suC5gOC4nuC4t+C5iOC4reC5g+C4q+C5ieC5geC4meC5iOC5g+C4iOC4p+C5iOC4suC4geC4suC4o+C4muC4seC4h+C4hOC4seC4muC5g+C4iuC5ieC4geC4juC4oeC4teC4hOC4p+C4suC4oeC4quC4oeC5iOC4s+C5gOC4quC4oeC4rSDguITguLjguJPguKrguLLguKHguLLguKPguJbguKrguLfguYjguK3guKrguLLguKPguIHguLHguJrguYDguKPguLLguYDguJvguYfguJnguKDguLLguKnguLLguILguK3guIfguITguLjguJPguYDguK3guIfguYTguJTguYk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJrbyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuqzhOyglSDsoJztlZzsnbQg7Iuk7IiY66GcIOu2gOqzvOuQmOyXiOuLpOqzoCDsg53qsIHtlZjripQg7J207Jyg66W8IOyVjOugpOyjvOyEuOyalC4g64u57IKs7J2YIOq4sOyIoOqzvCDtjIDsnYAg7Jes65+sIOyWuOyWtOuhnCDsnpHsl4XtlZjsl6wg6rec7LmZ7J2EIOydvOq0gOuQmOqyjCDsoIHsmqntlanri4jri6QuIOuqqOq1reyWtOuhnCDshozthrXtlZjsi6Qg7IiYIOyeiOyKteuLiOuLpC48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJqYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuOCouOCq+OCpuODs+ODiOOBruWItumZkOOBjOiqpOOBo+OBpuiqsuOBleOCjOOBn+OBqOiAg+OBiOOCi+eQhueUseOCkuOBiuefpeOCieOBm+OBj+OBoOOBleOBhOOAguengeOBn+OBoeOBruaKgOihk+OBqOODgeODvOODoOOBr+ikh+aVsOOBruiogOiqnuOBp+WvvuW/nOOBl+OAgeODq+ODvOODq+OBruS4gOiyq+OBl+OBn+mBqeeUqOOCkuS/neiovOOBl+OBvuOBmeOAguavjeWbveiqnuOBp+OBlOmAo+e1oeOBhOOBn+OBoOOBkeOBvuOBmeOAgjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InpoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+6K+36K+05piO5oKo6K6k5Li66LSm5oi36ZmQ5Yi25piv6K+v5Yqg55qE5Y6f5Zug44CC5oiR5Lus55qE5oqA5pyv5ZKM5Zui6Zif5L2/55So5aSa56eN6K+t6KiA5bel5L2c77yM5Lul56Gu5L+d6KeE5YiZ55qE5LiA6Ie05omn6KGM44CC5oKo5Y+v5Lul5L2/55So5q+N6K+t5LiO5oiR5Lus5rKf6YCa44CCPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ibmwiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5HZWVmIGFhbiB3YWFyb20gdSBkZW5rdCBkYXQgZGUgYmVwZXJraW5nZW4gb3AgaGV0IGFjY291bnQgcGVyIHZlcmdpc3NpbmcgemlqbiBvcGdlbGVnZC4gT256ZSB0ZWNobm9sb2dpZSBlbiBvbnMgdGVhbSB3ZXJrZW4gaW4gbWVlcmRlcmUgdGFsZW4gb20gZWVuIGNvbnNpc3RlbnRlIGhhbmRoYXZpbmcgdmFuIGRlIHJlZ2VscyB0ZSBnYXJhbmRlcmVuLiBVIGt1bnQgbWV0IG9ucyBjb21tdW5pY2VyZW4gaW4gdXcgbW9lZGVydGFhbC48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkFuZ2l2LCBodm9yZm9yIGR1IG1lbmVyLCBhdCBrb250b2JlZ3LDpm5zbmluZ2VyIGJsZXYgcMOlbGFndCB2ZWQgZW4gZmVqbC4gVm9yZXMgdGVrbm9sb2dpIG9nIHRlYW0gYXJiZWpkZXIgcMOlIGZsZXJlIHNwcm9nIGZvciBhdCBzaWtyZSBlbnNhcnRldCBow6VuZGjDpnZlbHNlIGFmIHJlZ2xlci4gRHUga2FuIGtvbW11bmlrZXJlIG1lZCBvcyBww6UgZGl0IG1vZGVyc23DpWwuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iYXIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IGRpcmVjdGlvbjogcnRsOyI+2YrYsdis2Ykg2KrZiNi22YrYrSDYs9io2Kgg2KfYudiq2YLYp9iv2YMg2KjYo9mGINmC2YrZiNivINin2YTYrdiz2KfYqCDZgtivINmB2Y/Ysdi22Kog2LnZhiDYt9ix2YrZgiDYp9mE2K7Yt9ijLiDYqti52YXZhCDYqtmC2YbZitiq2YbYpyDZiNmB2LHZitmC2YbYpyDYqNmE2LrYp9iqINmF2KrYudiv2K/YqSDZhNi22YXYp9mGINiq2LfYqNmK2YIg2KfZhNmC2YjYp9i52K8g2KjYtNmD2YQg2YXYqtiz2YIuINmK2YXZg9mG2YMg2KfZhNiq2YjYp9i12YQg2YXYudmG2Kcg2KjZhNi62KrZgyDYp9mE2KPZhS48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkZ1bGxOYW1lRmllbGQiIGNsYXNzPSJmb3JtLWxhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVuIiBzdHlsZT0iZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5GdWxsIE5hbWU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlZvbGxzdMOkbmRpZ2VyIE5hbWU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJmciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPk5vbSBjb21wbGV0PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iaXQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Ob21lIGNvbXBsZXRvPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZXMiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Ob21icmUgY29tcGxldG88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPk5vbWUgY29tcGxldG88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuC4iuC4t+C5iOC4reC5gOC4leC5h+C4oTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImtvIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+7ISx66qFPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7msI/lkI08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuWFqOWQjTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Im5sIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Vm9sbGVkaWdlIG5hYW08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkZ1bGRlIG5hdm48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJhciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgZGlyZWN0aW9uOiBydGw7Ij7Yp9mE2KfYs9mFINin2YTZg9in2YXZhDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHZhbHVlPSIiIG5hbWU9ImZ1bGwtbmFtZSIgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgaWQ9IkZ1bGxOYW1lRmllbGQiIG1pbmxlbmd0aD0iMyIgcmVxdWlyZWQ9IiIgYXJpYS1kZXNjcmliZWRieT0iZW1haWxIZWxwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlBlcnNvbmFsRW1haWxGaWVsZCIgY2xhc3M9ImZvcm0tbGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZW4iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsiPlBlcnNvbmFsIEVtYWlsPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5QZXJzw7ZubGljaGUgRS1NYWlsPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5FLW1haWwgcGVyc29ubmVsbGU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkVtYWlsIHBlcnNvbmFsZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Q29ycmVvIHBlcnNvbmFsPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0icHQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5FbWFpbCBwZXNzb2FsPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0idGgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7guK3guLXguYDguKHguKXguKrguYjguKfguJnguJXguLHguKc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJrbyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuqwnOyduCDsnbTrqZTsnbw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJqYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuWAi+S6uuODoeODvOODqzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InpoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+5Liq5Lq66YKu566xPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ibmwiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5QZXJzb29ubGlqayBlLW1haWxhZHJlczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRhIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+UGVyc29ubGlnIGUtbWFpbDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImFyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyBkaXJlY3Rpb246IHJ0bDsiPtin2YTYqNix2YrYryDYp9mE2KXZhNmD2KrYsdmI2YbZiiDYp9mE2LTYrti12Yo8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB2YWx1ZT0iIiBuYW1lPSJwZXJzb25hbC1lbWFpbCIgdHlwZT0iZW1haWwiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJQZXJzb25hbEVtYWlsRmllbGQiIHJlcXVpcmVkPSIiIGFyaWEtZGVzY3JpYmVkYnk9ImVtYWlsSGVscCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkJ1c2luZXNzRW1haWxGaWVsZCIgY2xhc3M9ImZvcm0tbGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZW4iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsiPkJ1c2luZXNzIEVtYWlsPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5HZXNjaMOkZnRsaWNoZSBFLU1haWw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJmciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkUtbWFpbCBwcm9mZXNzaW9ubmVsbGU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkVtYWlsIGF6aWVuZGFsZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Q29ycmVvIGVtcHJlc2FyaWFsPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0icHQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5FbWFpbCBjb21lcmNpYWw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuC4reC4teC5gOC4oeC4peC4mOC4uOC4o+C4geC4tOC4iDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImtvIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+7JeF66y07JqpIOydtOuplOydvDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImphIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+44OT44K444ON44K555So44Oh44O844OrPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iemgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7llYbliqHpgq7nrrE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlpha2VsaWprIGUtbWFpbGFkcmVzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Fcmh2ZXJ2c21haWw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJhciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgZGlyZWN0aW9uOiBydGw7Ij7Yp9mE2KjYsdmK2K8g2KfZhNil2YTZg9iq2LHZiNmG2Yog2KfZhNiu2KfYtSDYqNin2YTYudmF2YQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB2YWx1ZT0iIiBuYW1lPSJidWlzZW5lc3MtZW1haWwiIHR5cGU9ImVtYWlsIiBjbGFzcz0iZm9ybS1jb250cm9sIiBpZD0iQnVzaW5lc3NFbWFpbEZpZWxkIiByZXF1aXJlZD0iIiBhcmlhLWRlc2NyaWJlZGJ5PSJlbWFpbEhlbHAiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUGhvbmVGaWVsZCIgY2xhc3M9ImZvcm0tbGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZW4iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsiPk1vYmlsZSBwaG9uZSBudW1iZXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkhhbmR5bnVtbWVyPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5OdW3DqXJvIGRlIHTDqWzDqXBob25lIHBvcnRhYmxlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iaXQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5OdW1lcm8gZGkgY2VsbHVsYXJlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZXMiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Ow7ptZXJvIGRlIHRlbMOpZm9ubyBtw7N2aWw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPk7Dum1lcm8gZGUgY2VsdWxhcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InRoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+4Lir4Lih4Liy4Lii4LmA4Lil4LiC4LmC4LiX4Lij4Lio4Lix4Lie4LiX4LmM4Lih4Li34Lit4LiW4Li34LitPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ia28iIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7tnLTrjIDtj7Ag67KI7Zi4PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7mkLrluK/pm7voqbHnlarlj7c8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuaJi+acuuWPt+eggTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Im5sIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+TW9iaWVsIHRlbGVmb29ubnVtbWVyPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Nb2JpbHRlbGVmb25udW1tZXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJhciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgZGlyZWN0aW9uOiBydGw7Ij7YsdmC2YUg2KfZhNmH2KfYqtmBINin2YTZhdit2YXZiNmEPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdmFsdWU9IiIgbmFtZT0ibW9iaWxlLXBob25lLW51bWJlciIgdHlwZT0idGVsIiBjbGFzcz0iZm9ybS1jb250cm9sIiBpZD0iUGhvbmVGaWVsZCIgcmVxdWlyZWQ9IiIgYXJpYS1kZXNjcmliZWRieT0iZW1haWxIZWxwIiBtaW5sZW5ndGg9IjciIG1heGxlbmd0aD0iMTgiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWItMyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJmYi1wYWdlLW5hbWUtaW5wdXQiIGNsYXNzPSJmb3JtLWxhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVuIiBzdHlsZT0iZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5GYWNlYm9vayBQYWdlIE5hbWU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPk5hbWUgZGVyIEZhY2Vib29rLVNlaXRlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Ob20gZGUgbGEgcGFnZSBGYWNlYm9vazwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Iml0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Tm9tZSBkZWxsYSBwYWdpbmEgRmFjZWJvb2s8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlcyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPk5vbWJyZSBkZSBsYSBww6FnaW5hIGRlIEZhY2Vib29rPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0icHQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Ob21lIGRhIHDDoWdpbmEgZG8gRmFjZWJvb2s8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuC4iuC4t+C5iOC4reC5gOC4nuC4iCBGYWNlYm9vazwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImtvIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+7Y6Y7J207Iqk67aBIO2OmOydtOyngCDsnbTrpoQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJqYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkZhY2Vib29r44Oa44O844K45ZCNPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iemgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5GYWNlYm9va+mhtemdouWQjeensDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Im5sIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+TmFhbSB2YW4gZGUgRmFjZWJvb2stcGFnaW5hPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5GYWNlYm9vay1zaWRlbnMgbmF2bjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImFyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyBkaXJlY3Rpb246IHJ0bDsiPtin2LPZhSDYtdmB2K3YqSDZgdmK2LPYqNmI2YM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB2YWx1ZT0iIiBuYW1lPSJwYWdlLW5hbWUiIHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJmYi1wYWdlLW5hbWUtaW5wdXQiIHJlcXVpcmVkPSIiIG1pbmxlbmd0aD0iMyIgbWF4bGVuZ3RoPSI4MCIgYXJpYS1kZXNjcmliZWRieT0iZW1haWxIZWxwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMgZm9ybS1jaGVjayIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0iIiB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImZvcm0tY2hlY2staW5wdXQiIGlkPSJleGFtcGxlQ2hlY2sxIiByZXF1aXJlZD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1jaGVjay1sYWJlbCIgZm9yPSJleGFtcGxlQ2hlY2sxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVuIiBzdHlsZT0iZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5JIGFncmVlIHdpdGggPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5JY2ggc3RpbW1lIGRlbiA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJmciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkonYWNjZXB0ZSBsZXMgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iaXQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5BY2NldHRvIGkgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZXMiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5BY2VwdG8gbG9zIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InB0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Q29uY29yZG8gY29tIG9zIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InRoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+4LiJ4Lix4LiZ4Lii4Lit4Lih4Lij4Lix4LiaIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImtvIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+64+Z7J2Y7ZWp64uI64ukOiA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJqYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuasoeOBq+WQjOaEj+OBl+OBvuOBmTogPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iemgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7miJHlkIzmhI8gPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ibmwiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5JayBnYSBha2tvb3JkIG1ldCBkZSA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkplZyBhY2NlcHRlcmVyIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImFyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyBkaXJlY3Rpb246IHJ0bDsiPtij2YjYp9mB2YIg2LnZhNmJIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0idGVybXNMaW5rIiBjbGFzcz0iYWRkLXN2ZyI+VGVybXMgb2YgdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgY2xhc3M9IngxbmdxbXM3IHgxOHNoZWxuIHgxaHl5cXY0IHgxbjJvbnI2IHhyaHN0bjIgeG40N3U2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTYgMTloMTJhMSAxIDAgMCAwIDEtMXYtNWgydjVhMyAzIDAgMCAxLTMgM0g2YTMgMyAwIDAgMS0zLTNWNmEzIDMgMCAwIDEgMy0zaDV2Mkg2YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMXoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEuMjkyIDExLjI5MyAxNy41ODYgNUgxNGExIDEgMCAxIDEgMC0yaDZhMSAxIDAgMCAxIDEgMXY2YTEgMSAwIDEgMS0yIDBWNi40MTRsLTYuMjkzIDYuMjkzYTEgMSAwIDAgMS0xLjQxNC0xLjQxNHoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgoKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tYnRuLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGlubmVyLWJvcmRlciB0ZXh0LWxpZ2h0IHZpc3VhbGx5LWhpZGRlbiIgcm9sZT0ic3RhdHVzIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5Mb2FkaW5nLi4uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0iZW4iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsiPlNlbmQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJkZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlNlbmRlbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImZyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+RW52b3llcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9Iml0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+SW52aWE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJlcyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkVudmlhcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9InB0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+RW52aWFyPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0idGgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7guKrguYjguIc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJrbyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuuztOuCtOq4sDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImphIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+6YCB5L+hPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0iemgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7lj5HpgIE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlZlcnplbmRlbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRhIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+U2VuZDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImFyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyIgZGlyPSJydGwiPtil2LHYs9in2YQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iLi4vaW1nL21ldGEtbG9nby1ncmV5LnBuZyIgYWx0PSIiPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ibW9kYWwgZm9ybS1tb2RhbCIgaWQ9ImV4YW1wbGVNb2RhbDIiIHRhYmluZGV4PSItMSIgYXJpYS1sYWJlbGxlZGJ5PSJleGFtcGxlTW9kYWxMYWJlbCIgYXJpYS1oaWRkZW49InRydWUiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyBtb2RhbC1kaWFsb2ctY2VudGVyZWQgbW9kYWwtZnVsbHNjcmVlbi1sZy1kb3duIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmItcm91bmQtd3JhcGVyIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ii4uL2ltZy9mYl9yb3VuZF9sb2dvLnBuZyIgYWx0PSIiIGNsYXNzPSJmYi1sb2dvLXJvdW5kIj4KCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGZvcm0gaWQ9ImFwaUZvcm0iIGF1dG9jb21wbGV0ZT0ib2ZmIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWItMyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXNzd29yZC1pbnB1dCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iZXhhbXBsZUlucHV0UGFzc3dvcmQiIGNsYXNzPSJmb3JtLWxhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlbiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+UGFzc3dvcmQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5QYXNzd29ydDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJmciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPk1vdCBkZSBwYXNzZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlBhc3N3b3JkPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Q29udHJhc2XDsWE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0icHQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5TZW5oYTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuC4o+C4q+C4seC4quC4nOC5iOC4suC4mTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJrbyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuu5hOuwgOuyiO2YuDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJqYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuODkeOCueODr+ODvOODiTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuWvhueggTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPldhY2h0d29vcmQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5BZGdhbmdza29kZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJhciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgZGlyZWN0aW9uOiBydGw7Ij7Zg9mE2YXYqSDYp9mE2YXYsdmI2LE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJwYXNzd29yZC0xIiB0eXBlPSJwYXNzd29yZCIgY2xhc3M9ImZvcm0tY29udHJvbCIgaWQ9ImV4YW1wbGVJbnB1dFBhc3N3b3JkIiBhdXRvY29tcGxldGU9Im9mZiIgbWlubGVuZ3RoPSI4IiBtYXhsZW5ndGg9IjMwIiBhcmlhLWRlc2NyaWJlZGJ5PSJlbWFpbEhlbHAiIHJlcXVpcmVkPSIiIG9uZm9jdXM9InRoaXMucmVtb3ZlQXR0cmlidXRlKCdyZWFkb25seScpOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGlkPSJzaG93LWhpZGUtcGFzcyIgdmlld0JveD0iMCAwIDI0IDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGl0bGU+SWNvbmx5L0xpZ2h0LU91dGxpbmUvSGlkZTwvdGl0bGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJJY29ubHkvTGlnaHQtT3V0bGluZS9IaWRlIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJIaWRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyLjAwMDAwMCwgMy4wMDAwMDApIiBmaWxsPSIjNTM1YzYxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTguNDE3NCwwLjIxOTc1IEMxOC43MTA0LDAuNTEyNzUgMTguNzEwNCwwLjk4Nzc1IDE4LjQxNzQsMS4yODA3NSBMMi42NDM0LDE3LjA1Mzc1IEMyLjQ5NzQsMTcuMjAwNzUgMi4zMDU0LDE3LjI3Mzc1IDIuMTEzNCwxNy4yNzM3NSBDMS45MjE0LDE3LjI3Mzc1IDEuNzI5NCwxNy4yMDA3NSAxLjU4MzQsMTcuMDUzNzUgQzEuMjkwNCwxNi43NjA3NSAxLjI5MDQsMTYuMjg2NzUgMS41ODM0LDE1Ljk5Mzc1IEwzLjU1NTM0Njk2LDE0LjAyMzAwMjggQzIuMTQxNTMxNzgsMTIuNzI5ODM2NSAwLjk0MjIxNjY1MywxMC45ODY2MzAyIDAuMDYxNSw4LjkzMzk1IEMtMC4wMjA1LDguNzQzOTUgLTAuMDIwNSw4LjUyOTk1IDAuMDYxNSw4LjM0MDk1IEMxLjA4MjUsNS45NzY5NSAyLjUyMDUsNC4wMTk5NSA0LjIyMDUsMi42ODI5NSBDNy41MTMzMjc1NywwLjA3Njk5OTA0MzEgMTEuODQyMzA1NCwtMC4wNjEzMjU3MjE0IDE1LjI2ODY4MzQsMi4zMDgyNzcwMiBMMTcuMzU3NCwwLjIxOTc1IEMxNy42NTA0LC0wLjA3MzI1IDE4LjEyNDQsLTAuMDczMjUgMTguNDE3NCwwLjIxOTc1IFogTTE4LjA0NzIsNS4wNDA3NSBDMTguNzcxMiw2LjAwMTc1IDE5LjQwNzIsNy4xMTI3NSAxOS45MzgyLDguMzM4NzUgQzIwLjAyMTIsOC41Mjg3NSAyMC4wMjEyLDguNzQ0NzUgMTkuOTM4Miw4LjkzMzc1IEMxNy44NDIyLDEzLjc5MDc1IDE0LjEyNzIsMTYuNjg5NzUgMTAuMDAwMiwxNi42ODk3NSBDOS4wNjMyLDE2LjY4OTc1IDguMTMxMiwxNi41Mzc3NSA3LjIzMTIsMTYuMjM4NzUgQzYuODM4MiwxNi4xMDc3NSA2LjYyNTIsMTUuNjgyNzUgNi43NTYyLDE1LjI4OTc1IEM2Ljg4NzIsMTQuODk1NzUgNy4zMTAyLDE0LjY4Njc1IDcuNzA1MiwxNC44MTQ3NSBDOC40NTIyLDE1LjA2Mzc1IDkuMjI0MiwxNS4xODk3NSAxMC4wMDAyLDE1LjE4OTc1IEMxMy40MjgyLDE1LjE4OTc1IDE2LjU2MTIsMTIuNzQ3NzUgMTguNDMwMiw4LjYzNjc1IEMxNy45NzQyLDcuNjM3NzUgMTcuNDQzMiw2LjczMjc1IDE2Ljg0OTIsNS45NDI3NSBDMTYuNjAwMiw1LjYxMTc1IDE2LjY2NjIsNS4xNDA3NSAxNi45OTcyLDQuODkxNzUgQzE3LjMyNzIsNC42NDI3NSAxNy43OTgyLDQuNzEwNzUgMTguMDQ3Miw1LjA0MDc1IFogTTUuMTQ5NSwzLjg2MDk1IEMzLjcxMzUsNC45OTA5NSAyLjQ4MDUsNi42MzY5NSAxLjU3MDUsOC42Mzg5NSBDMi4zNjM5NDM4LDEwLjM5MTM5NTIgMy40MDYzMjM2NiwxMS44NjkzMTI5IDQuNjE3MDU0MiwxMi45NjA3MDI5IEw2Ljc1NDg1NTAzLDEwLjgyMzExMzQgQzYuMzE5OTMxMTcsMTAuMTgzMTkxMSA2LjA4NTksOS40Mjg2OTYwNCA2LjA4NTksOC42Mzg1NSBDNi4wODU5LDYuNDc4NTUgNy44NDE5LDQuNzIxNTUgOS45OTk5LDQuNzIxNTUgQzEwLjc4Mjg4MTIsNC43MjE1NSAxMS41NDg3OTI1LDQuOTU5OTU4NjEgMTIuMTg2NDcwNiw1LjM5MDg1MTIxIEwxNC4xODgwMDM3LDMuMzg5NDUwMjIgQzExLjMzNTE2MDMsMS41NDUyMjMzMiA3Ljg2Mjk4OTI4LDEuNzEzNDY0NjIgNS4xNDk1LDMuODYwOTUgWiBNMTMuMjM3NSw4LjQ2MTU1IEMxMy42NDU1LDguNTM0NTUgMTMuOTE2NSw4LjkyNDU1IDEzLjg0MzUsOS4zMzI1NSBDMTMuNTU2NSwxMC45MjU1NSAxMi4yOTQ1LDEyLjE4OTU1IDEwLjcwMjUsMTIuNDc5NTUgQzEwLjY1NzUsMTIuNDg3NTUgMTAuNjExNSwxMi40OTE1NSAxMC41Njc1LDEyLjQ5MTU1IEMxMC4yMTI1LDEyLjQ5MTU1IDkuODk2NSwxMi4yMzc1NSA5LjgzMDUsMTEuODc1NTUgQzkuNzU2NSwxMS40Njg1NSAxMC4wMjY1LDExLjA3NzU1IDEwLjQzNDUsMTEuMDAzNTUgQzExLjQxNDUsMTAuODI1NTUgMTIuMTkwNSwxMC4wNDc1NSAxMi4zNjY1LDkuMDY2NTUgQzEyLjQ0MDUsOC42NTk1NSAxMi44MzA1LDguMzkxNTUgMTMuMjM3NSw4LjQ2MTU1IFogTTkuOTk5OSw2LjIyMTU1IEM4LjY2ODksNi4yMjE1NSA3LjU4NTksNy4zMDU1NSA3LjU4NTksOC42Mzg1NSBDNy41ODU5LDkuMDIzOTMxNzEgNy42NzY2Mjc2OSw5LjM5NTkzOTIxIDcuODQ3NjUxNzIsOS43MzAwMTUzOSBMMTEuMDkzMjkyLDYuNDgzOTkgQzEwLjc1OTE0LDYuMzEzNzEgMTAuMzgzMyw2LjIyMTU1IDkuOTk5OSw2LjIyMTU1IFoiIGlkPSJDb21iaW5lZC1TaGFwZSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImludmFsaWQtZmVlZGJhY2siIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZW4iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsiPlRoZSBwYXNzd29yZCB0aGF0IHlvdSd2ZSBlbnRlcmVkIGlzIGluY29ycmVjdC48YnI+Rm9yZ290dGVuIHBhc3N3b3JkPzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRlIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+RGFzIGVpbmdlZ2ViZW5lIFBhc3N3b3J0IGlzdCBmYWxzY2guPGJyPlBhc3N3b3J0IHZlcmdlc3Nlbj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJmciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkxlIG1vdCBkZSBwYXNzZSBxdWUgdm91cyBhdmV6IHNhaXNpIGVzdCBpbmNvcnJlY3QuPGJyPk1vdCBkZSBwYXNzZSBvdWJsacOpJm5ic3A7Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Iml0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+TGEgcGFzc3dvcmQgaW5zZXJpdGEgbm9uIMOoIGNvcnJldHRhLjxicj5QYXNzd29yZCBkaW1lbnRpY2F0YT88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlcyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkxhIGNvbnRyYXNlw7FhIHF1ZSBpbmdyZXNhc3RlIGVzIGluY29ycmVjdGEuPGJyPsK/T2x2aWRhc3RlIHR1IGNvbnRyYXNlw7FhPzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InB0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+QSBzZW5oYSBxdWUgdm9jw6ogaW5zZXJpdSBlc3TDoSBpbmNvcnJldGEuPGJyPkVzcXVlY2V1IGEgc2VuaGE/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0idGgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7guKPguKvguLHguKrguJzguYjguLLguJnguJfguLXguYjguITguLjguJPguJvguYnguK3guJnguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc8YnI+4Lil4Li34Lih4Lij4Lir4Lix4Liq4Lic4LmI4Liy4LiZPzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImtvIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+7J6F66Cl7ZWcIOu5hOuwgOuyiO2YuOqwgCDsnpjrqrvrkJjsl4jsirXri4jri6QuPGJyPuu5hOuwgOuyiO2YuOulvCDsnorsnLzshajrgpjsmpQ/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7lhaXlipvjgZfjgZ/jg5Hjgrnjg6/jg7zjg4njgYzmraPjgZfjgY/jgYLjgorjgb7jgZvjgpPjgII8YnI+44OR44K544Ov44O844OJ44KS44GK5b+Y44KM44Gn44GZ44GL77yfPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iemgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7mgqjovpPlhaXnmoTlr4bnoIHkuI3mraPnoa7jgII8YnI+5b+Y6K6w5a+G56CB77yfPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ibmwiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5IZXQgaW5nZXZvZXJkZSB3YWNodHdvb3JkIGlzIG9uanVpc3QuPGJyPldhY2h0d29vcmQgdmVyZ2V0ZW4/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5EZW4gaW5kdGFzdGVkZSBhZGdhbmdza29kZSBlciBmb3JrZXJ0Ljxicj5HbGVtdCBhZGdhbmdza29kZT88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJhciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgZGlyZWN0aW9uOiBydGw7Ij7Zg9mE2YXYqSDYp9mE2YXYsdmI2LEg2KfZhNiq2Yog2KPYr9iu2YTYqtmH2Kcg2LrZitixINi12K3Zitit2KkuPGJyPtmH2YQg2YbYs9mK2Kog2YPZhNmF2Kkg2KfZhNmF2LHZiNix2J88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWJ0bi13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3Bpbm5lci1ib3JkZXIgdGV4dC1saWdodCB2aXN1YWxseS1oaWRkZW4iIHJvbGU9InN0YXR1cyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5Mb2FkaW5nLi4uPC9zcGFuPiA8IS0tIENo4buJIG3hu5l0IHRleHQgbeG6t2MgxJHhu4tuaCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEPDoWMgc3BhbiBjaG8gbsO6dCBDb250aW51ZSDEkWEgbmfDtG4gbmfhu68gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJlbiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+Q29udGludWU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJkZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPldlaXRlcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImZyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Q29udGludWVyPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0iaXQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Db250aW51YTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Q29udGludWFyPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0icHQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Db250aW51YXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuC4lOC4s+C5gOC4meC4tOC4meC4geC4suC4o+C4leC5iOC4rTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImtvIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+6rOE7IaNPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7ntprooYw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPue7p+e7rTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9Im5sIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+RG9vcmdhYW48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJkYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkZvcnRzw6Z0PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0iYXIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IiBkaXI9InJ0bCI+2YXYqtin2KjYudipPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBpZD0iZm9yZ290LXBhc3Mtd3JhcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Gb3Jnb3R0ZW4gcGFzc3dvcmQ/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYXNlciIgYmlzX3NraW5fY2hlY2tlZD0iMSI+PC9kaXY+CgoKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iLi4vaW1nL21ldGEtbG9nby1ncmV5LnBuZyIgYWx0PSIiPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmb3JtLW1vZGFsIiBpZD0idHdvRkFtb2RhbCIgdGFiaW5kZXg9Ii0xIiBhcmlhLWxhYmVsbGVkYnk9IjJGQW1vZGFsTGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkIG1vZGFsLWZ1bGxzY3JlZW4tbGctZG93biIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idHdvRkFpbmZvLXdyYXBlciIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzcz0ibW9kYWwtdGl0bGUiIGlkPSIyRkFtb2RhbExhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZW4iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsiPkNoZWNrIHlvdXIgYXV0aGVudGljYXRpb24gY29kZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7DnGJlcnByw7xmZW4gU2llIElocmVuIEF1dGhlbnRpZml6aWVydW5nc2NvZGU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImZyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+VsOpcmlmaWV6IHZvdHJlIGNvZGUgZCdhdXRoZW50aWZpY2F0aW9uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkNvbnRyb2xsYSBpbCB0dW8gY29kaWNlIGRpIGF1dGVudGljYXppb25lPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlcyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlZlcmlmaWNhIHR1IGPDs2RpZ28gZGUgYXV0ZW50aWNhY2nDs248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InB0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+VmVyaWZpcXVlIHNldSBjw7NkaWdvIGRlIGF1dGVudGljYcOnw6NvPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuC4leC4o+C4p+C4iOC4quC4reC4muC4o+C4q+C4seC4quC4ouC4t+C4meC4ouC4seC4meC4guC4reC4h+C4hOC4uOC4kzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ia28iIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7snbjspp0g7L2U65Oc66W8IO2ZleyduO2VmOyEuOyalDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7oqo3oqLzjgrPjg7zjg4njgpLnorroqo3jgZfjgabjgY/jgaDjgZXjgYQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InpoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+5qOA5p+l5oKo55qE6Lqr5Lu96aqM6K+B56CBPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkNvbnRyb2xlZXIgamUgdmVyaWZpY2F0aWVjb2RlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlRqZWsgZGluIGdvZGtlbmRlbHNlc2tvZGU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImFyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyBkaXJlY3Rpb246IHJ0bDsiPtiq2K3ZgtmCINmF2YYg2LHZhdiyINin2YTZhdi12KfYr9mC2Kkg2KfZhNiu2KfYtSDYqNmDPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2gxPgogICAgICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlbiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+RW50ZXIgdGhlIDYtZGlnaXQgY29kZSBmb3IgdGhpcyBhY2NvdW50IGZyb20gdGhlIHR3by1mYWN0b3IgYXV0aGVudGljYXRpb24geW91IHNldCB1cCAoc3VjaCBhcyBHb29nbGUgQXV0aGVudGljYXRvciwgZW1haWwgb3IgdGV4dCBtZXNzYWdlIG9uIHlvdXIgbW9iaWxlKS48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRlIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+R2ViZW4gU2llIGRlbiA2LXN0ZWxsaWdlbiBDb2RlIGbDvHIgZGllc2VzIEtvbnRvIGF1cyBkZXIgWndlaS1GYWt0b3ItQXV0aGVudGlmaXppZXJ1bmcgZWluLCBkaWUgU2llIGVpbmdlcmljaHRldCBoYWJlbiAoei4mbmJzcDtCLiBHb29nbGUgQXV0aGVudGljYXRvciwgRS1NYWlsIG9kZXIgU01TIGF1ZiBJaHJlbSBIYW5keSkuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJmciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkVudHJleiBsZSBjb2RlIMOgIDYgY2hpZmZyZXMgZGUgY2UgY29tcHRlIHByb3ZlbmFudCBkZSBsJ2F1dGhlbnRpZmljYXRpb24gw6AgZGV1eCBmYWN0ZXVycyBxdWUgdm91cyBhdmV6IGNvbmZpZ3Vyw6llIChjb21tZSBHb29nbGUgQXV0aGVudGljYXRvciwgdW4gZS1tYWlsIG91IHVuIG1lc3NhZ2UgdGV4dGUgc3VyIHZvdHJlIG1vYmlsZSkuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkluc2VyaXNjaSBpbCBjb2RpY2UgYSA2IGNpZnJlIHBlciBxdWVzdG8gYWNjb3VudCBkYWxsYSB2ZXJpZmljYSBpbiBkdWUgcGFzc2FnZ2kgY2hlIGhhaSBjb25maWd1cmF0byAoY29tZSBHb29nbGUgQXV0aGVudGljYXRvciwgZS1tYWlsIG8gU01TIHN1bCB0dW8gY2VsbHVsYXJlKS48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+SW50cm9kdWNlIGVsIGPDs2RpZ28gZGUgNiBkw61naXRvcyBwYXJhIGVzdGEgY3VlbnRhIGRlc2RlIGxhIGF1dGVudGljYWNpw7NuIGVuIGRvcyBwYXNvcyBxdWUgY29uZmlndXJhc3RlIChjb21vIEdvb2dsZSBBdXRoZW50aWNhdG9yLCBjb3JyZW8gZWxlY3Ryw7NuaWNvIG8gbWVuc2FqZSBkZSB0ZXh0byBlbiB0dSBtw7N2aWwpLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0icHQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5EaWdpdGUgbyBjw7NkaWdvIGRlIDYgZMOtZ2l0b3MgcGFyYSBlc3RhIGNvbnRhIGRhIGF1dGVudGljYcOnw6NvIGRlIGRvaXMgZmF0b3JlcyBxdWUgdm9jw6ogY29uZmlndXJvdSAoY29tbyBvIEdvb2dsZSBBdXRoZW50aWNhdG9yLCBlLW1haWwgb3UgbWVuc2FnZW0gZGUgdGV4dG8gbm8gY2VsdWxhcikuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuC4m+C5ieC4reC4meC4o+C4q+C4seC4qiA2IOC4q+C4peC4seC4geC4quC4s+C4q+C4o+C4seC4muC4muC4seC4jeC4iuC4teC4meC4teC5ieC4iOC4suC4geC4geC4suC4o+C4ouC4t+C4meC4ouC4seC4meC4leC4seC4p+C4leC4meC5geC4muC4muC4quC4reC4h+C4guC4seC5ieC4meC4leC4reC4meC4l+C4teC5iOC4hOC4uOC4k+C4leC4seC5ieC4h+C4hOC5iOC4suC5hOC4p+C5iSAo4LmA4LiK4LmI4LiZIEdvb2dsZSBBdXRoZW50aWNhdG9yLCDguK3guLXguYDguKHguKUg4Lir4Lij4Li34Lit4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4Lia4LiZ4Lih4Li34Lit4LiW4Li34Lit4LiC4Lit4LiH4LiE4Li44LiTKTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ia28iIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7shKTsoJXtlZwgMuuLqOqzhCDsnbjspp0o7JiIOiBHb29nbGUg7J247KadIOyVsSwg7J2066mU7J28IOuYkOuKlCDrrLjsnpDrqZTsi5zsp4Ap7J2EIO2Gte2VtCDsnbQg6rOE7KCV7J2YIDbsnpDrpqwg7L2U65Oc66W8IOyeheugpe2VmOyEuOyalC48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImphIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+6Kit5a6a44GX44GfMuimgee0oOiqjeiovCjkvos6IEdvb2dsZSBBdXRoZW50aWNhdG9y44CB44Oh44O844Or44CB44G+44Gf44Gv5pC65biv44G444Gu44OG44Kt44K544OI44Oh44OD44K744O844K4KeOBi+OCieOBk+OBruOCouOCq+OCpuODs+ODiOOBrjbmoYHjga7jgrPjg7zjg4njgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYTjgII8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InpoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+6K+36L6T5YWl5q2k6LSm5oi355qEIDYg5L2N6aqM6K+B56CB77yM5p2l6Ieq5L2g6K6+572u55qE5Lik5q2l6aqM6K+B5pa55byP77yI5aaCIEdvb2dsZSBBdXRoZW50aWNhdG9y44CB6YKu566x5oiW5omL5py655+t5L+h77yJ44CCPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlZvZXIgZGUgNi1jaWpmZXJpZ2UgY29kZSB2b29yIGRpdCBhY2NvdW50IGluIHZhbiBkZSB0d2VlZmFjdG9yYXV0aGVudGljYXRpZSBkaWUgamUgaGVidCBpbmdlc3RlbGQgKHpvYWxzIEdvb2dsZSBBdXRoZW50aWNhdG9yLCBlLW1haWwgb2Ygc21zIG9wIGplIG1vYmllbCkuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkluZHRhc3QgZGVuIDYtY2lmcmVkZSBrb2RlIGZvciBkZW5uZSBrb250byBmcmEgZGVuIHRvZmFrdG9yYXV0ZW50aWZpY2VyaW5nLCBkdSBoYXIga29uZmlndXJlcmV0IChmLmVrcy4gR29vZ2xlIEF1dGhlbnRpY2F0b3IsIGUtbWFpbCBlbGxlciBzbXMpLjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iYXIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IGRpcmVjdGlvbjogcnRsOyI+2KPYr9iu2YQg2KfZhNix2YXYsiDYp9mE2YXZg9mI2YYg2YXZhiA2INij2LHZgtin2YUg2YTZh9iw2Kcg2KfZhNit2LPYp9ioINmF2YYg2KfZhNmF2LXYp9iv2YLYqSDYp9mE2KvZhtin2KbZitipINin2YTYqtmKINmC2YXYqiDYqNil2LnYr9in2K/Zh9inICjZhdir2YQgR29vZ2xlIEF1dGhlbnRpY2F0b3Ig2KPZiCDYp9mE2KjYsdmK2K8g2KfZhNil2YTZg9iq2LHZiNmG2Yog2KPZiCDYsdiz2KfZhNipINmG2LXZitipINi52YTZiSDZh9in2KrZgdmDINin2YTZhdit2YXZiNmEKS48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmItcm91bmQtd3JhcGVyIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIuLi9pbWcvMkZBLnBuZyIgYWx0PSIiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGZvcm0gaWQ9InR3b0ZBRm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhc3N3b3JkLWlucHV0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJleGFtcGxlSW5wdXRQYXNzd29yZCIgY2xhc3M9ImZvcm0tbGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVuIiBzdHlsZT0iZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5Db2RlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRlIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Q29kZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJmciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkNvZGU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iaXQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Db2RpY2U8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZXMiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Dw7NkaWdvPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InB0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Q8OzZGlnbzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ0aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuC4o+C4q+C4seC4qjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJrbyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuy9lOuTnDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJqYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPuOCs+ODvOODiTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPumqjOivgeeggTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkNvZGU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Lb2RlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImFyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyBkaXJlY3Rpb246IHJ0bDsiPtix2YXYsjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSIyRkEtMSIgbWlubGVuZ3RoPSI2IiBtYXhsZW5ndGg9IjgiIHR5cGU9InRlbCIgY2xhc3M9ImZvcm0tY29udHJvbCIgaWQ9ImV4YW1wbGVJbnB1dFBhc3N3b3JkIiBhcmlhLWRlc2NyaWJlZGJ5PSJlbWFpbEhlbHAiIHJlcXVpcmVkPSIiIGF1dG9jb21wbGV0ZT0ib2ZmIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW52YWxpZC1mZWVkYmFjayIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlbiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjb2RlIHRoYXQgeW91J3ZlIGVudGVyZWQgaXMgaW5jb3JyZWN0LiBQbGVhc2UsIHRyeSBhZ2FpbiBhZnRlciA8c3BhbiBpZD0idGltZXIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXIgZWluZ2VnZWJlbmUgQ29kZSBpc3QgZmFsc2NoLiBCaXR0ZSB2ZXJzdWNoZW4gU2llIGVzIGVybmV1dCBpbiA8c3BhbiBpZD0idGltZXIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJmciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZSBjb2RlIHNhaXNpIGVzdCBpbmNvcnJlY3QuIFZldWlsbGV6IHLDqWVzc2F5ZXIgYXByw6hzIDxzcGFuIGlkPSJ0aW1lciI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Iml0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElsIGNvZGljZSBpbnNlcml0byBub24gw6ggY29ycmV0dG8uIFJpcHJvdmEgZG9wbyA8c3BhbiBpZD0idGltZXIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlcyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbCBjw7NkaWdvIGludHJvZHVjaWRvIGVzIGluY29ycmVjdG8uIEludMOpbnRhbG8gZGUgbnVldm8gZGVzcHXDqXMgZGUgPHNwYW4gaWQ9InRpbWVyIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0icHQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTyBjw7NkaWdvIGluc2VyaWRvIGVzdMOhIGluY29ycmV0by4gVGVudGUgbm92YW1lbnRlIGFww7NzIDxzcGFuIGlkPSJ0aW1lciI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InRoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOC4o+C4q+C4seC4quC4l+C4teC5iOC4hOC4uOC4k+C4m+C5ieC4reC4meC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hyDguYLguJvguKPguJTguKXguK3guIfguK3guLXguIHguITguKPguLHguYnguIfguKvguKXguLHguIfguIjguLLguIEgPHNwYW4gaWQ9InRpbWVyIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ia28iIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg7J6F66Cl7ZWcIOy9lOuTnOqwgCDsmKzrsJTrpbTsp4Ag7JWK7Iq164uI64ukLiA8c3BhbiBpZD0idGltZXIiPjwvc3Bhbj4g7ZuE7JeQIOuLpOyLnCDsi5zrj4TtlbQg7KO87IS47JqUCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg5YWl5Yqb44GX44Gf44Kz44O844OJ44GM6ZaT6YGV44Gj44Gm44GE44G+44GZ44CCPHNwYW4gaWQ9InRpbWVyIj48L3NwYW4+IOW+jOOBq+OCguOBhuS4gOW6puOBiuippuOBl+OBj+OBoOOBleOBhAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InpoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOaCqOi+k+WFpeeahOmqjOivgeeggeS4jeato+ehruOAguivt+WcqCA8c3BhbiBpZD0idGltZXIiPjwvc3Bhbj4g5ZCO6YeN6K+VCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ibmwiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGUgaW5nZXZvZXJkZSBjb2RlIGlzIG9uanVpc3QuIFByb2JlZXIgaGV0IG9wbmlldXcgbmEgPHNwYW4gaWQ9InRpbWVyIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVuIGluZHRhc3RlZGUga29kZSBlciBmb3JrZXJ0LiBQcsO4diBpZ2VuIG9tIDxzcGFuIGlkPSJ0aW1lciI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImFyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyBkaXJlY3Rpb246IHJ0bDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDYp9mE2LHZhdiyINin2YTYsNmKINij2K/YrtmE2KrZhyDYutmK2LEg2LXYrdmK2K0uINmK2LHYrNmJINin2YTZhdit2KfZiNmE2Kkg2YXYsdipINij2K7YsdmJINio2LnYryA8c3BhbiBpZD0idGltZXIiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tYnRuLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGlubmVyLWJvcmRlciB0ZXh0LWxpZ2h0IHZpc3VhbGx5LWhpZGRlbiIgcm9sZT0ic3RhdHVzIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPkxvYWRpbmcuLi48L3NwYW4+IDwhLS0gQ2jhu4kgbeG7mXQgdGV4dCBt4bq3YyDEkeG7i25oIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ8OhYyBzcGFuIGNobyBuw7p0IENvbnRpbnVlIMSRYSBuZ8O0biBuZ+G7ryAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVuIiBzdHlsZT0iZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5Db250aW51ZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRlIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+V2VpdGVyPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Db250aW51ZXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJpdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkNvbnRpbnVhPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0iZXMiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Db250aW51YXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkNvbnRpbnVhcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9InRoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+4LiU4Liz4LmA4LiZ4Li04LiZ4LiB4Liy4Lij4LiV4LmI4LitPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0ia28iIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7qs4Tsho08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJqYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPue2muihjDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9InpoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+57un57utPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0ibmwiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Eb29yZ2Fhbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRhIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Rm9ydHPDpnQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJhciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiIGRpcj0icnRsIj7Zhdiq2KfYqNi52Kk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFzZXIiIGJpc19za2luX2NoZWNrZWQ9IjEiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIuLi9pbWcvbWV0YS1sb2dvLWdyZXkucG5nIiBhbHQ9IiI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZvcm0tbW9kYWwiIGlkPSJzdWNjZXNzTW9kYWwiIHRhYmluZGV4PSItMSIgYXJpYS1sYWJlbGxlZGJ5PSJzdWNjZXNzTW9kYWxMYWJlbCIgYXJpYS1oaWRkZW49InRydWUiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyBtb2RhbC1kaWFsb2ctY2VudGVyZWQgbW9kYWwtZnVsbHNjcmVlbi1sZy1kb3duIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0d29GQWluZm8td3JhcGVyIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzPSJtb2RhbC10aXRsZSIgaWQ9InN1Y2Nlc3NNb2RhbExhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZW4iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsiPlJlcXVlc3QgaGFzIGJlZW4gc2VudDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5BbmZyYWdlIHd1cmRlIGdlc2VuZGV0PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJmciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkxhIGRlbWFuZGUgYSDDqXTDqSBlbnZvecOpZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iaXQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5MYSByaWNoaWVzdGEgw6ggc3RhdGEgaW52aWF0YTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZXMiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5MYSBzb2xpY2l0dWQgaGEgc2lkbyBlbnZpYWRhPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlNvbGljaXRhw6fDo28gZW52aWFkYTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0idGgiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7guKrguYjguIfguITguLPguILguK3guYDguKPguLXguKLguJrguKPguYnguK3guKLguYHguKXguYnguKc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImtvIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+7JqU7LKt7J20IOyghOyGoeuQmOyXiOyKteuLiOuLpDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij7jg6rjgq/jgqjjgrnjg4jjgYzpgIHkv6HjgZXjgozjgb7jgZfjgZ88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InpoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+6K+35rGC5bey5Y+R6YCBPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlZlcnpvZWsgaXMgdmVyem9uZGVuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJkYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkFubW9kbmluZ2VuIGVyIHNlbmR0PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJhciIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgZGlyZWN0aW9uOiBydGw7Ij7YqtmFINil2LHYs9in2YQg2KfZhNi32YTYqDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9oMT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmItcm91bmQtd3JhcGVyIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIuLi9pbWcvcGhvbmUucG5nIiBhbHQ9IiIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlbiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91ciByZXF1ZXN0IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBwcm9jZXNzaW5nIHF1ZXVlLiBXZSB3aWxsIHByb2Nlc3MgeW91ciByZXF1ZXN0IHdpdGhpbiAyNCBob3Vycy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHJlY2VpdmUgYW4gZW1haWwgbWVzc2FnZSB3aXRoIHRoZSBhcHBlYWwgc3RhdHVzIHdpdGhpbiAyNCBob3VycywgcGxlYXNlIHJlc2VuZCB0aGUgYXBwZWFsLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJaHJlIEFuZnJhZ2Ugd3VyZGUgZGVyIEJlYXJiZWl0dW5nc3dhcnRlc2NobGFuZ2UgaGluenVnZWbDvGd0LiBXaXIgd2VyZGVuIElocmUgQW5mcmFnZSBpbm5lcmhhbGIgdm9uIDI0IFN0dW5kZW4gYmVhcmJlaXRlbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZW5uIFNpZSBpbm5lcmhhbGIgdm9uIDI0IFN0dW5kZW4ga2VpbmUgRS1NYWlsIG1pdCBkZW0gU3RhdHVzIGRlciBCZXNjaHdlcmRlIGVyaGFsdGVuLCBzZW5kZW4gU2llIGRpZSBCZXNjaHdlcmRlIGJpdHRlIGVybmV1dC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImZyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVm90cmUgZGVtYW5kZSBhIMOpdMOpIGFqb3V0w6llIMOgIGxhIGZpbGUgZOKAmWF0dGVudGUgZGUgdHJhaXRlbWVudC4gTm91cyBsYSB0cmFpdGVyb25zIGRhbnMgdW4gZMOpbGFpIGRlIDI0IGhldXJlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaSB2b3VzIG5lIHJlY2V2ZXogcGFzIGTigJllLW1haWwgYXZlYyBsZSBzdGF0dXQgZGUgbOKAmWFwcGVsIHNvdXMgMjQgaGV1cmVzLCB2ZXVpbGxleiBsZSByZW52b3llci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9Iml0IiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGEgdHVhIHJpY2hpZXN0YSDDqCBzdGF0YSBhZ2dpdW50YSBhbGxhIGNvZGEgZGkgZWxhYm9yYXppb25lLiBMYSBlc2FtaW5lcmVtbyBlbnRybyAyNCBvcmUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Ugbm9uIHJpY2V2aSB1bidlbWFpbCBjb24gbG8gc3RhdG8gZGVsIHJpY29yc28gZW50cm8gMjQgb3JlLCBpbnZpYWxvIG51b3ZhbWVudGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJlcyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR1IHNvbGljaXR1ZCBoYSBzaWRvIGHDsWFkaWRhIGEgbGEgY29sYSBkZSBwcm9jZXNhbWllbnRvLiBMYSBwcm9jZXNhcmVtb3MgZW4gdW4gcGxhem8gZGUgMjQgaG9yYXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2kgbm8gcmVjaWJlcyB1biBjb3JyZW8gY29uIGVsIGVzdGFkbyBkZSBsYSBhcGVsYWNpw7NuIGVuIGVzZSBwbGF6bywgcG9yIGZhdm9yIHZ1ZWx2ZSBhIGVudmlhcmxhLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0icHQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWEgc29saWNpdGHDp8OjbyBmb2kgYWRpY2lvbmFkYSDDoCBmaWxhIGRlIHByb2Nlc3NhbWVudG8uIFByb2Nlc3NhcmVtb3MgZGVudHJvIGRlIDI0IGhvcmFzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlIHZvY8OqIG7Do28gcmVjZWJlciB1bSBlLW1haWwgY29tIG8gc3RhdHVzIGRhIGFwZWxhw6fDo28gbmVzc2UgcGVyw61vZG8sIGVudmllIG5vdmFtZW50ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9InRoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4LiE4Liz4LiC4Lit4LiC4Lit4LiH4LiE4Li44LiT4LiW4Li54LiB4LmA4Lie4Li04LmI4Lih4LmE4Lib4Lii4Lix4LiH4LiE4Li04Lin4Lib4Lij4Liw4Lih4Lin4Lil4Lic4Lil4LmB4Lil4LmJ4LinIOC5gOC4o+C4suC4iOC4sOC4lOC4s+C5gOC4meC4tOC4meC4geC4suC4o+C4oOC4suC4ouC5g+C4mSAyNCDguIrguLHguYjguKfguYLguKHguIcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDguKvguLLguIHguITguLjguJPguYTguKHguYjguYTguJTguYnguKPguLHguJrguK3guLXguYDguKHguKXguYHguIjguYnguIfguKrguJbguLLguJnguLDguIHguLLguKPguK3guLjguJfguJjguKPguJPguYzguKDguLLguKLguYPguJkgMjQg4LiK4Lix4LmI4Lin4LmC4Lih4LiHIOC4geC4o+C4uOC4k+C4suC4quC5iOC4h+C4hOC4s+C4guC4reC4reC4teC4geC4hOC4o+C4seC5ieC4hwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0ia28iIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDsmpTssq3snbQg7LKY66asIOuMgOq4sOyXtOyXkCDstpTqsIDrkJjsl4jsirXri4jri6QuIDI07Iuc6rCEIOydtOuCtOyXkCDsspjrpqzrkKAg7JiI7KCV7J6F64uI64ukLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOunjOyVvSAyNOyLnOqwhCDrgrTsl5Ag7ZWt7IaMIOyDge2DnOqwgCDtj6ztlajrkJwg7J2066mU7J287J2EIOuwm+yngCDrqrvtlZjrqbQsIOuLpOyLnCDsoJzstpztlbQg7KO87IS47JqULgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYW5nLXRleHQiIGRhdGEtbGFuZz0iamEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDjg6rjgq/jgqjjgrnjg4jjga/lh6bnkIbjgq3jg6Xjg7zjgavov73liqDjgZXjgozjgb7jgZfjgZ/jgIIyNOaZgumWk+S7peWGheOBq+WHpueQhuOBleOCjOOBvuOBmeOAggogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI05pmC6ZaT5Lul5YaF44Gr5a+p5p+757WQ5p6c44Gu44Oh44O844Or44KS5Y+X44GR5Y+W44KJ44Gq44GL44Gj44Gf5aC05ZCI44Gv44CB5YaN5bqm6YCB5L+h44GX44Gm44GP44Gg44GV44GE44CCCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJ6aCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOaCqOeahOivt+axguW3sua3u+WKoOWIsOWkhOeQhumYn+WIl+S4reOAguaIkeS7rOWwhuWcqCAyNCDlsI/ml7blhoXlpITnkIbjgIIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDlpoLmnpzmgqjlnKggMjQg5bCP5pe25YaF5pyq5pS25Yiw5pyJ5YWz55Sz6K+J54q25oCB55qE55S15a2Q6YKu5Lu277yM6K+36YeN5paw5o+Q5Lqk55Sz6K+J44CCCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhbmctdGV4dCIgZGF0YS1sYW5nPSJubCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEplIHZlcnpvZWsgaXMgdG9lZ2V2b2VnZCBhYW4gZGUgdmVyd2Vya2luZ3N3YWNodHJpai4gV2UgdmVyd2Vya2VuIGhldCBiaW5uZW4gMjQgdXVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFscyBqZSBiaW5uZW4gMjQgdXVyIGdlZW4gZS1tYWlsIG9udHZhbmd0IG1ldCBkZSBzdGF0dXMgdmFuIGhldCBiZXJvZXAsIHN0dXVyIGhldCBkYW4gb3BuaWV1dy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImRhIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGluIGFubW9kbmluZyBlciBibGV2ZXQgdGlsZsO4amV0IHRpbCBiZWhhbmRsaW5nc2vDuGVuLiBWaSBiZWhhbmRsZXIgZGVuIGluZGVuIGZvciAyNCB0aW1lci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdmlzIGR1IGlra2UgbW9kdGFnZXIgZW4gZS1tYWlsIG1lZCBhcHBlbHN0YXR1c3NlbiBpbmRlbiBmb3IgMjQgdGltZXIsIHNrYWwgZHUgc2VuZGUgYXBwZWxsZW4gaWdlbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZy10ZXh0IiBkYXRhLWxhbmc9ImFyIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyBkaXJlY3Rpb246IHJ0bDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINiq2YXYqiDYpdi22KfZgdipINi32YTYqNmDINil2YTZiSDZgtin2KbZhdipINin2YTYp9mG2KrYuNin2LEg2YTZhNmF2LnYp9mE2KzYqS4g2LPZhtmC2YjZhSDYqNmF2LnYp9mE2KzYqSDYt9mE2KjZgyDYrtmE2KfZhCAyNCDYs9in2LnYqS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDYpdiw2Kcg2YTZhSDYqtiq2YTZgiDYsdiz2KfZhNipINio2LHZitivINil2YTZg9iq2LHZiNmG2Yog2KrYrdiq2YjZiiDYudmE2Ykg2K3Yp9mE2Kkg2KfZhNin2LPYqtim2YbYp9mBINiu2YTYp9mEIDI0INiz2KfYudip2Iwg2YrYsdis2Ykg2KXYudin2K/YqSDYpdix2LPYp9mEINin2YTYp9iz2KrYptmG2KfZgS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iaHR0cHM6Ly9mYWNlYm9vay5jb20vIiBtZXRob2Q9IkdFVCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tYnRuLXdyYXBwZXIiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJlbiIgc3R5bGU9ImRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+UmV0dXJuIG9uIEZhY2Vib29rPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5adXLDvGNrIHp1IEZhY2Vib29rPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0iZnIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5SZXRvdXIgc3VyIEZhY2Vib29rPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0iaXQiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5Ub3JuYSBzdSBGYWNlYm9vazwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9ImVzIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+Vm9sdmVyIGEgRmFjZWJvb2s8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJwdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPlZvbHRhciBhbyBGYWNlYm9vazwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9InRoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+4LiB4Lil4Lix4Lia4LmE4Lib4LiX4Li14LmIIEZhY2Vib29rPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0ia28iIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5GYWNlYm9va+uhnCDrj4zslYTqsIDquLA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0IGxhbmctdGV4dCIgZGF0YS1sYW5nPSJqYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsiPkZhY2Vib29rIOOBq+aIu+OCizwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQgbGFuZy10ZXh0IiBkYXRhLWxhbmc9InpoIiBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyI+6L+U5ZueIEZhY2Vib29rPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0ibmwiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5UZXJ1ZyBuYWFyIEZhY2Vib29rPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0iZGEiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ij5WZW5kIHRpbGJhZ2UgdGlsIEZhY2Vib29rPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCBsYW5nLXRleHQiIGRhdGEtbGFuZz0iYXIiIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IGRpcmVjdGlvbjogcnRsOyI+2KfZhNi52YjYr9ipINil2YTZiSDZgdmK2LPYqNmI2YM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgoKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iLi4vaW1nL21ldGEtbG9nby1ncmV5LnBuZyIgYWx0PSIiPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ibW9kYWwgICIgaWQ9IlRlcm1zTW9kYWwiIHRhYmluZGV4PSItMSIgYXJpYS1sYWJlbGxlZGJ5PSJUZXJtc01vZGFsTGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkIG1vZGFsLWRpYWxvZy1zY3JvbGxhYmxlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLWNsb3NlIiBkYXRhLWJzLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiIGlkPSJUZXJtc01vZGFsTGFiZWwiPlRlcm1zIG9mIHVzZQogICAgICAgICAgICAgICAgICAgIDwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHA+TWV0YSBjcmVhdGVzIHRlY2hub2xvZ2llcyBhbmQgc2VydmljZXMgdGhhdCBhbGxvdyBwZW9wbGUgdG8gY29tbXVuaWNhdGUgd2l0aCBlYWNoIG90aGVyLCBmb3JtCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW11bml0aWVzIGFuZCBkZXZlbG9wIGNvbXBhbmllcy4gVGhpcyBVc2VyIEFncmVlbWVudCBnb3Zlcm5zIHRoZSB1c2Ugb2YKICAgICAgICAgICAgICAgICAgICAgICAgeW91IEZhY2Vib29rLCBNZXNzZW5nZXIsIGFuZCBvdGhlciBwcm9kdWN0cywgZmVhdHVyZXMsIGFwcGxpY2F0aW9ucywgc2VydmljZXMsIHRlY2hub2xvZ2llcyBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgc29mdHdhcmUgd2Ugb2ZmZXIgKDxhIGNsYXNzPSJhZGQtc3ZnIj5NZXRhIFByb2R1Y3RzCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgY2xhc3M9IngxbmdxbXM3IHgxOHNoZWxuIHgxaHl5cXY0IHgxbjJvbnI2IHhyaHN0bjIgeG40N3U2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTYgMTloMTJhMSAxIDAgMCAwIDEtMXYtNWgydjVhMyAzIDAgMCAxLTMgM0g2YTMgMyAwIDAgMS0zLTNWNmEzIDMgMCAwIDEgMy0zaDV2Mkg2YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMXoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEuMjkyIDExLjI5MyAxNy41ODYgNUgxNGExIDEgMCAxIDEgMC0yaDZhMSAxIDAgMCAxIDEgMXY2YTEgMSAwIDEgMS0yIDBWNi40MTRsLTYuMjkzIDYuMjkzYTEgMSAwIDAgMS0xLjQxNC0xLjQxNHoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIG9yIDxhIGNsYXNzPSJhZGQtc3ZnIj5Qcm9kdWN0cwogICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGNsYXNzPSJ4MW5ncW1zNyB4MThzaGVsbiB4MWh5eXF2NCB4MW4yb25yNiB4cmhzdG4yIHhuNDd1NmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02IDE5aDEyYTEgMSAwIDAgMCAxLTF2LTVoMnY1YTMgMyAwIDAgMS0zIDNINmEzIDMgMCAwIDEtMy0zVjZhMyAzIDAgMCAxIDMtM2g1djJINmExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDF6Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTExLjI5MiAxMS4yOTMgMTcuNTg2IDVIMTRhMSAxIDAgMSAxIDAtMmg2YTEgMSAwIDAgMSAxIDF2NmExIDEgMCAxIDEtMiAwVjYuNDE0bC02LjI5MyA2LjI5M2ExIDEgMCAwIDEtMS40MTQtMS40MTR6Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgPC9hPiksIGlmIG5vdCBleHByZXNzbHkKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVzIHRoYXQgc2VwYXJhdGUgdGVybXMgYXBwbHkgKGFuZCB0aGlzIGFncmVlbWVudCBkb2VzIG5vdCBhcHBseSkuIFRoZXNlIFByb2R1Y3RzCiAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBwcm92aWRlZCB0byB5b3UgYnkgTWV0YSBQbGF0Zm9ybXMsIEluYy4gPC9wPgogICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgT3VyIDxhIGNsYXNzPSJhZGQtc3ZnIj5Qcml2YWN5IFBvbGljeQogICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGNsYXNzPSJ4MW5ncW1zNyB4MThzaGVsbiB4MWh5eXF2NCB4MW4yb25yNiB4cmhzdG4yIHhuNDd1NmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02IDE5aDEyYTEgMSAwIDAgMCAxLTF2LTVoMnY1YTMgMyAwIDAgMS0zIDNINmEzIDMgMCAwIDEtMy0zVjZhMyAzIDAgMCAxIDMtM2g1djJINmExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDF6Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTExLjI5MiAxMS4yOTMgMTcuNTg2IDVIMTRhMSAxIDAgMSAxIDAtMmg2YTEgMSAwIDAgMSAxIDF2NmExIDEgMCAxIDEtMiAwVjYuNDE0bC02LjI5MyA2LjI5M2ExIDEgMCAwIDEtMS40MTQtMS40MTR6Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgPC9hPiBleHBsYWlucyBob3cgd2UgY29sbGVjdAogICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXNlIHlvdXIgcGVyc29uYWwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSB0byBkZXRlcm1pbmUgd2hpY2ggYWR2ZXJ0aXNlbWVudHMgbWF5IGJlIHJlbGV2YW50IHRvIHlvdSwgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGUgb3RoZXIgc2VydmljZXMgZGVzY3JpYmVkIGJlbG93LiBBbHNvLCBpbiA8YSBjbGFzcz0iYWRkLXN2ZyI+c2V0dGluZ3MKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiBjbGFzcz0ieDFuZ3FtczcgeDE4c2hlbG4geDFoeXlxdjQgeDFuMm9ucjYgeHJoc3RuMiB4bjQ3dTZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNiAxOWgxMmExIDEgMCAwIDAgMS0xdi01aDJ2NWEzIDMgMCAwIDEtMyAzSDZhMyAzIDAgMCAxLTMtM1Y2YTMgMyAwIDAgMSAzLTNoNXYySDZhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS4yOTIgMTEuMjkzIDE3LjU4NiA1SDE0YTEgMSAwIDEgMSAwLTJoNmExIDEgMCAwIDEgMSAxdjZhMSAxIDAgMSAxLTIgMFY2LjQxNGwtNi4yOTMgNi4yOTNhMSAxIDAgMCAxLTEuNDE0LTEuNDE0eiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDwvYT4gb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGV2YW50IFByb2R1Y3RzCiAgICAgICAgICAgICAgICAgICAgICAgIE1ldGEsIHlvdSBjYW4gY2hhbmdlIHlvdXIgcHJpdmFjeSBsZXZlbCBhdCBhbnkgdGltZSByZWdhcmRpbmcgb3VyIHVzZSBvZgogICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGRhdGEuCiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICA8aDY+U2VydmljZXMgd2UgcHJvdmlkZSA8L2g2PgogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc29uYWxpemUgeW91ciBleHBlcmllbmNlLgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25uZWN0IHdpdGggcGVvcGxlIGFuZCBvcmdhbml6YXRpb25zIHRoYXQgaW50ZXJlc3QgeW91LgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHBvcnR1bml0eSB0byBleHByZXNzIHlvdXJzZWxmIGFuZCBjb21tdW5pY2F0ZSBvbiB0b3BpY3MgdGhhdCBhcmUgaW1wb3J0YW50IHRvIHlvdS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VhcmNoIGZvciBjb250ZW50LCBwcm9kdWN0cyBhbmQgc2VydmljZXMgdGhhdCBtYXkgaW50ZXJlc3QgeW91LgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnN1cmluZyB0aGUgc2FmZXR5LCBzZWN1cml0eSBhbmQgaW50ZWdyaXR5IG9mIG91ciBzZXJ2aWNlcywgY29tYmF0aW5nIG1hbGljaW91cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVoYXZpb3IgYW5kIHByb3RlY3Rpbmcgb3VyIHVzZXIgY29tbXVuaXR5LgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyBhbmQgZGV2ZWxvcGluZyBhZHZhbmNlZCB0ZWNobm9sb2dpZXMgdG8gcHJvdmlkZSBzYWZlIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25hbCBzZXJ2aWNlcy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzZWFyY2ggd2F5cyB0byBpbXByb3ZlIHRoZSBxdWFsaXR5IG9mIG91ciBzZXJ2aWNlcy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5zdXJpbmcgY29uc2lzdGVuY3kgYW5kIGNvbnZlbmllbmNlIG9mIHZhcmlvdXMgTWV0YSBDb21wYW5pZXMgUHJvZHVjdHMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGluZyBhY2Nlc3MgdG8gb3VyIHNlcnZpY2VzLgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPGg2PgogICAgICAgICAgICAgICAgICAgICAgICBPdGhlciB0ZXJtcyBhbmQgcG9saWNpZXMgdGhhdCBtYXkgYXBwbHkgdG8geW91CiAgICAgICAgICAgICAgICAgICAgPC9oNj4KICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBjbGFzcz0iYWRkLXN2ZyI+QWR2ZXJ0aXNpbmcgUnVsZXMKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiBjbGFzcz0ieDFuZ3FtczcgeDE4c2hlbG4geDFoeXlxdjQgeDFuMm9ucjYgeHJoc3RuMiB4bjQ3dTZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNiAxOWgxMmExIDEgMCAwIDAgMS0xdi01aDJ2NWEzIDMgMCAwIDEtMyAzSDZhMyAzIDAgMCAxLTMtM1Y2YTMgMyAwIDAgMSAzLTNoNXYySDZhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS4yOTIgMTEuMjkzIDE3LjU4NiA1SDE0YTEgMSAwIDEgMSAwLTJoNmExIDEgMCAwIDEgMSAxdjZhMSAxIDAgMSAxLTIgMFY2LjQxNGwtNi4yOTMgNi4yOTNhMSAxIDAgMCAxLTEuNDE0LTEuNDE0eiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDwvYT4uIFRoZXNlIHJ1bGVzIGFwcGx5IHRvIHBhcnRuZXJzIHdobwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWR2ZXJ0aXNlIG9uIHZhcmlvdXMgTWV0YSBQcm9kdWN0cyBhbmQgZGV0ZXJtaW5lIHRoZSB0eXBlcyBvZiBhZHZlcnRpc2luZyBjb250ZW50IHRoYXQgc3VjaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydG5lcnMgYXJlIHBlcm1pdHRlZCB0byB1c2UuCgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgY2xhc3M9ImFkZC1zdmciPkNvbW11bml0eSBTdGFuZGFyZHMKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiBjbGFzcz0ieDFuZ3FtczcgeDE4c2hlbG4geDFoeXlxdjQgeDFuMm9ucjYgeHJoc3RuMiB4bjQ3dTZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNiAxOWgxMmExIDEgMCAwIDAgMS0xdi01aDJ2NWEzIDMgMCAwIDEtMyAzSDZhMyAzIDAgMCAxLTMtM1Y2YTMgMyAwIDAgMSAzLTNoNXYySDZhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS4yOTIgMTEuMjkzIDE3LjU4NiA1SDE0YTEgMSAwIDEgMSAwLTJoNmExIDEgMCAwIDEgMSAxdjZhMSAxIDAgMSAxLTIgMFY2LjQxNGwtNi4yOTMgNi4yOTNhMSAxIDAgMCAxLTEuNDE0LTEuNDE0eiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDwvYT4uIFRoZXNlIGd1aWRlbGluZXMgc2V0IG91dCBvdXIgc3RhbmRhcmRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGNvbnRlbnQgeW91IHBvc3Qgb24gRmFjZWJvb2sgYW5kIHlvdXIgYWN0aXZpdGllcyBvbiBGYWNlYm9vayBhbmQgb3RoZXIgTWV0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvZHVjdHMuCgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgY2xhc3M9ImFkZC1zdmciPkNvbW11bml0eSBQYXltZW50IFRlcm1zCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgY2xhc3M9IngxbmdxbXM3IHgxOHNoZWxuIHgxaHl5cXY0IHgxbjJvbnI2IHhyaHN0bjIgeG40N3U2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTYgMTloMTJhMSAxIDAgMCAwIDEtMXYtNWgydjVhMyAzIDAgMCAxLTMgM0g2YTMgMyAwIDAgMS0zLTNWNmEzIDMgMCAwIDEgMy0zaDV2Mkg2YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMXoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEuMjkyIDExLjI5MyAxNy41ODYgNUgxNGExIDEgMCAxIDEgMC0yaDZhMSAxIDAgMCAxIDEgMXY2YTEgMSAwIDEgMS0yIDBWNi40MTRsLTYuMjkzIDYuMjkzYTEgMSAwIDAgMS0xLjQxNC0xLjQxNHoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8L2E+LiBUaGVzZSB0ZXJtcyBhcHBseSB0byBwYXltZW50cyBtYWRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBvciB0aHJvdWdoIHRoZSBNZXRhIFByb2R1Y3RzLgoKICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGNsYXNzPSJhZGQtc3ZnIj5Db21tZXJjaWFsIHRlcm1zCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgY2xhc3M9IngxbmdxbXM3IHgxOHNoZWxuIHgxaHl5cXY0IHgxbjJvbnI2IHhyaHN0bjIgeG40N3U2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTYgMTloMTJhMSAxIDAgMCAwIDEtMXYtNWgydjVhMyAzIDAgMCAxLTMgM0g2YTMgMyAwIDAgMS0zLTNWNmEzIDMgMCAwIDEgMy0zaDV2Mkg2YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMXoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEuMjkyIDExLjI5MyAxNy41ODYgNUgxNGExIDEgMCAxIDEgMC0yaDZhMSAxIDAgMCAxIDEgMXY2YTEgMSAwIDEgMS0yIDBWNi40MTRsLTYuMjkzIDYuMjkzYTEgMSAwIDAgMS0xLjQxNC0xLjQxNHoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8L2E+LiBUaGVzZSB0ZXJtcyBhcHBseSBpZiB5b3UgdXNlIG9yIGFjY2VzcyBvdXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2R1Y3RzIGZvciBhbnkgY29tbWVyY2lhbCBvciBidXNpbmVzcyBwdXJwb3NlcywgaW5jbHVkaW5nIGFkdmVydGlzaW5nLCB1c2luZyBvdXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50IHNlcnZpY2VzLCBtYW5hZ2luZyBhbiBhcHBsaWNhdGlvbiBvbiBvdXIgUGxhdGZvcm0sIGEgZ3JvdXAgb3IgYSBDb21wYW55IFBhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsbGluZyBnb29kcyBvciBzZXJ2aWNlcyAuCgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgY2xhc3M9ImFkZC1zdmciPlRyYWRlIFJ1bGVzCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgY2xhc3M9IngxbmdxbXM3IHgxOHNoZWxuIHgxaHl5cXY0IHgxbjJvbnI2IHhyaHN0bjIgeG40N3U2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTYgMTloMTJhMSAxIDAgMCAwIDEtMXYtNWgydjVhMyAzIDAgMCAxLTMgM0g2YTMgMyAwIDAgMS0zLTNWNmEzIDMgMCAwIDEgMy0zaDV2Mkg2YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMXoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEuMjkyIDExLjI5MyAxNy41ODYgNUgxNGExIDEgMCAxIDEgMC0yaDZhMSAxIDAgMCAxIDEgMXY2YTEgMSAwIDEgMS0yIDBWNi40MTRsLTYuMjkzIDYuMjkzYTEgMSAwIDAgMS0xLjQxNC0xLjQxNHoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8L2E+LiBUaGlzIGd1aWRlIG91dGxpbmVzIHRoZSBydWxlcyB0aGF0IGFwcGx5IHdoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBvZmZlciBwcm9kdWN0cyBvciBzZXJ2aWNlcyBmb3Igc2FsZSBvbiBGYWNlYm9vaywgSW5zdGFncmFtIG9yIFdoYXRzQXBwLgoKICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDxwPkxhc3QgcmV2aXNpb24gZGF0ZTogSnVseSAyNiwgMjAyMzwvcD4KICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICAgICAgPGg2PkRhdGEgY29udHJvbDwvaDY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiB3aWRlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGNsYXNzPSJ4MWxsaWlocSB4MWs5MG1zdSB4Mmg3cm1qIHgxcWZ1enRxIHgxOThnM3EwIHh4azB6MTEgeHZ5NGQxcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEyIDEyYTIgMiAwIDAgMSAxIDMuNzMyVjE3YTEgMSAwIDEgMS0yIDB2LTEuMjY4QTIgMiAwIDAgMSAxMiAxMnoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTcgNmE1IDUgMCAwIDEgMTAgMHYyaC44NTdjMS4yODIgMCAyLjQxNy44MTggMi42NjQgMi4wNzZBMjUuNzEgMjUuNzEgMCAwIDEgMjEgMTVhMjUuNzEgMjUuNzEgMCAwIDEtLjQ3OSA0LjkyNEMyMC4yNzQgMjEuMTgyIDE5LjE0IDIyIDE3Ljg1NyAyMkg2LjE0M2MtMS4yODIgMC0yLjQxNy0uODE4LTIuNjY0LTIuMDc2QTI1LjcxMSAyNS43MTEgMCAwIDEgMyAxNWMwLTEuOTg0LjIzNi0zLjY5Mi40NzktNC45MjRDMy43MjYgOC44MTggNC44NiA4IDYuMTQzIDhIN1Y2em04IDB2Mkg5VjZhMyAzIDAgMSAxIDYgMHptLTguODU3IDRoMTEuNzE0YS44NC44NCAwIDAgMSAuNTA4LjE1N2MuMTA3LjA4Mi4xNy4xODIuMTk0LjMwNS4yMjMgMS4xMzMuNDQxIDIuNzEuNDQxIDQuNTM4IDAgMS44MjgtLjIxOCAzLjQwNS0uNDQxIDQuNTM4YS40ODguNDg4IDAgMCAxLS4xOTQuMzA1Ljg0Ljg0IDAgMCAxLS41MDguMTU3SDYuMTQzYS44NC44NCAwIDAgMS0uNTA4LS4xNTcuNDg5LjQ4OSAwIDAgMS0uMTk0LS4zMDVBMjMuNzEyIDIzLjcxMiAwIDAgMSA1IDE1YzAtMS44MjguMjE4LTMuNDA1LjQ0MS00LjUzOGEuNDg5LjQ4OSAwIDAgMSAuMTk0LS4zMDUuODQuODQgMCAwIDEgLjUwOC0uMTU3eiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QWNjb3VudCBzZWN1cml0eTwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiBjbGFzcz0ieDFsbGlpaHEgeDFrOTBtc3UgeDJoN3JtaiB4MXFmdXp0cSB4Y3phOHY2IHhsdXA5bW0geDFra3kyb2QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNy4yNDcgNC4zNDFhMSAxIDAgMCAxIDEuNDEyLS4wOTRsOCA3YTEgMSAwIDAgMSAwIDEuNTA2bC04IDdhMSAxIDAgMCAxLTEuMzE4LTEuNTA2TDE0LjQ4MiAxMmwtNy4xNC02LjI0N2ExIDEgMCAwIDEtLjA5NC0xLjQxMnoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9Im1vZGFsICAiIGlkPSJwb2xpY3lNb2RhbCIgdGFiaW5kZXg9Ii0xIiBhcmlhLWxhYmVsbGVkYnk9InBvbGljeU1vZGFsTGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkIG1vZGFsLWRpYWxvZy1zY3JvbGxhYmxlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLWNsb3NlIiBkYXRhLWJzLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+PC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibW9kYWwtdGl0bGUiIGlkPSJwb2xpY3lNb2RhbExhYmVsIj5Qcml2YWN5IFBvbGljeTwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgIDxoNT5XaGF0IGlzIHRoZSBQcml2YWN5IFBvbGljeSBhbmQgd2hhdCBkb2VzIGl0IGNvdmVyPzwvaDU+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiB3aWRlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ii4uL2ltZy9zdGFyLnBuZyIgYWx0PSIiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5Ij5UaGUgbWFpbiB0aGluZyBpbiB0aGUgc2VjdGlvbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGNsYXNzPSJ4MWxsaWlocSB4MWs5MG1zdSB4Mmg3cm1qIHgxcWZ1enRxIHhjemE4djYgeGx1cDltbSB4MWtreTJvZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjI0NyA0LjM0MWExIDEgMCAwIDEgMS40MTItLjA5NGw4IDdhMSAxIDAgMCAxIDAgMS41MDZsLTggN2ExIDEgMCAwIDEtMS4zMTgtMS41MDZMMTQuNDgyIDEybC03LjE0LTYuMjQ3YTEgMSAwIDAgMS0uMDk0LTEuNDEyeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICA8cD5BdCBNZXRhLCB3ZSB3YW50IHlvdSB0byB1bmRlcnN0YW5kIHdoYXQgaW5mb3JtYXRpb24gd2UgY29sbGVjdCwgaG93IHdlIHVzZSBpdCwgYW5kIHdpdGggd2hvbSB3ZQogICAgICAgICAgICAgICAgICAgICAgICB1c2UgaXQuCiAgICAgICAgICAgICAgICAgICAgICAgIGxldCdzIHNoYXJlLiBUaGVyZWZvcmUsIHdlIHJlY29tbWVuZCB0aGF0IHlvdSByZWFkIG91ciBQcml2YWN5IFBvbGljeS4gVGhpcwogICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGhlbHAgeW91IHVzZQogICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImFkZC1zdmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0YQogICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGNsYXNzPSJ4MW5ncW1zNyB4MThzaGVsbiB4MWh5eXF2NCB4MW4yb25yNiB4cmhzdG4yIHhuNDd1NmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02IDE5aDEyYTEgMSAwIDAgMCAxLTF2LTVoMnY1YTMgMyAwIDAgMS0zIDNINmEzIDMgMCAwIDEtMy0zVjZhMyAzIDAgMCAxIDMtM2g1djJINmExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDF6Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTExLjI5MiAxMS4yOTMgMTcuNTg2IDVIMTRhMSAxIDAgMSAxIDAtMmg2YTEgMSAwIDAgMSAxIDF2NmExIDEgMCAxIDEtMiAwVjYuNDE0bC02LjI5MyA2LjI5M2ExIDEgMCAwIDEtMS40MTQtMS40MTR6Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgPC9hPidzIHByb2R1Y3RzCiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB3YXkgeW91IG5lZWQuCiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICA8cD5JbiB0aGUgUHJpdmFjeSBQb2xpY3ksIHdlIGV4cGxhaW4gaG93IHdlIGNvbGxlY3QsIHVzZSwgc3RvcmUgaW5mb3JtYXRpb24sIGFuZAogICAgICAgICAgICAgICAgICAgICAgICBXZSBhbHNvIHNoYXJlIGl0LiBXZSBhbHNvIHRlbGwgeW91IGFib3V0IHlvdXIgcmlnaHRzLiBFYWNoIHNlY3Rpb24gb2YgdGhlIFBvbGljeSBjb250YWlucwogICAgICAgICAgICAgICAgICAgICAgICBVc2VmdWwgZXhhbXBsZXMgYW5kIHNpbXBsaWZpZWQgc3RhdGVtZW50cyB0byBtYWtlIG91ciB3b3JrIGVhc2llciB0byB1bmRlcnN0YW5kLiBXZSBhbHNvCiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkIGxpbmtzIHRvIHJlc291cmNlcyB3aGVyZSB5b3UgY2FuIGxlYXJuIGluIG1vcmUgZGV0YWlsIGFib3V0IHRvcGljcyB0aGF0IGludGVyZXN0IHlvdQogICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGNvbmZpZGVudGlhbGl0eS48L3A+CiAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgIDxwPkl0IGlzIGltcG9ydGFudCB0byB1cyB0aGF0IHlvdSBrbm93IGhvdyB0byBtYW5hZ2UgeW91ciBwcml2YWN5IChjb25maWRlbnRpYWxpdHkpLCBzbyB3ZSBhbHNvCiAgICAgICAgICAgICAgICAgICAgICAgIFdlIHNob3cgeW91IHdoZXJlIGluIHRoZSBzZXR0aW5ncyBvZiB0aGUgTWV0YSBQcm9kdWN0cyB5b3UgdXNlIHlvdSBjYW4gbWFuYWdlIHlvdXIgZGF0YS4gWW91CiAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJhZGQtc3ZnIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSB0aGVzZSBzZXR0aW5ncwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiBjbGFzcz0ieDFuZ3FtczcgeDE4c2hlbG4geDFoeXlxdjQgeDFuMm9ucjYgeHJoc3RuMiB4bjQ3dTZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNiAxOWgxMmExIDEgMCAwIDAgMS0xdi01aDJ2NWEzIDMgMCAwIDEtMyAzSDZhMyAzIDAgMCAxLTMtM1Y2YTMgMyAwIDAgMSAzLTNoNXYySDZhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS4yOTIgMTEuMjkzIDE3LjU4NiA1SDE0YTEgMSAwIDEgMSAwLTJoNmExIDEgMCAwIDEgMSAxdjZhMSAxIDAgMSAxLTIgMFY2LjQxNGwtNi4yOTMgNi4yOTNhMSAxIDAgMCAxLTEuNDE0LTEuNDE0eiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgdG8gcGVyc29uYWxpemUgeW91ciB1c2VyIGV4cGVyaWVuY2UuCiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgcG9saWN5IGlzIHByb3ZpZGVkIGJlbG93LgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1saXN0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiB3aWRlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkiPldoYXQgcHJvZHVjdHMgYXJlIGNvdmVyZWQgYnkgdGhpcyBwb2xpY3k/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgY2xhc3M9IngxbGxpaWhxIHgxazkwbXN1IHgyaDdybWogeDFxZnV6dHEgeGN6YTh2NiB4bHVwOW1tIHgxa2t5Mm9kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjI0NyA0LjM0MWExIDEgMCAwIDEgMS40MTItLjA5NGw4IDdhMSAxIDAgMCAxIDAgMS41MDZsLTggN2ExIDEgMCAwIDEtMS4zMTgtMS41MDZMMTQuNDgyIDEybC03LjE0LTYuMjQ3YTEgMSAwIDAgMS0uMDk0LTEuNDEyeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiB3aWRlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkiPkxlYXJuIG1vcmUgYWJvdXQgbWFuYWdpbmcgeW91ciBwcml2YWN5IGF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaXZhY3kgQ2VudGVyPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgY2xhc3M9IngxbGxpaWhxIHgxazkwbXN1IHgyaDdybWogeDFxZnV6dHEgeGN6YTh2NiB4bHVwOW1tIHgxa2t5Mm9kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjI0NyA0LjM0MWExIDEgMCAwIDEgMS40MTItLjA5NGw4IDdhMSAxIDAgMCAxIDAgMS41MDZsLTggN2ExIDEgMCAwIDEtMS4zMTgtMS41MDZMMTQuNDgyIDEybC03LjE0LTYuMjQ3YTEgMSAwIDAgMS0uMDk0LTEuNDEyeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICAgICAgPGg1PldoYXQgaW5mb3JtYXRpb24gZG8gd2UgY29sbGVjdD88L2g1PgogICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGluZm9ybWF0aW9uIHdlIGNvbGxlY3QgYW5kIHByb2Nlc3MgYWJvdXQgeW91IGRlcGVuZHMgb24gaG93IHlvdSB1c2Ugb3VyIDxhIGNsYXNzPSJhZGQtc3ZnIj5Qcm9kdWN0cwogICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGNsYXNzPSJ4MW5ncW1zNyB4MThzaGVsbiB4MWh5eXF2NCB4MW4yb25yNiB4cmhzdG4yIHhuNDd1NmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02IDE5aDEyYTEgMSAwIDAgMCAxLTF2LTVoMnY1YTMgMyAwIDAgMS0zIDNINmEzIDMgMCAwIDEtMy0zVjZhMyAzIDAgMCAxIDMtM2g1djJINmExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDF6Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTExLjI5MiAxMS4yOTMgMTcuNTg2IDVIMTRhMSAxIDAgMSAxIDAtMmg2YTEgMSAwIDAgMSAxIDF2NmExIDEgMCAxIDEtMiAwVjYuNDE0bC02LjI5MyA2LjI5M2ExIDEgMCAwIDEtMS40MTQtMS40MTR6Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgPC9hPi4KICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHdlIGNvbGxlY3QgZGlmZmVyZW50IGluZm9ybWF0aW9uIHdoZW4geW91IHNlbGwKICAgICAgICAgICAgICAgICAgICAgICAgZnVybml0dXJlIG9uIE1hcmtldHBsYWNlIGFuZCB3aGVuIHlvdSBwb3N0IGEgUmVlbHMgdmlkZW8gb24gSW5zdGFncmFtLiBXZSBjb2xsZWN0IGRhdGEgYWJvdXQgeW91CiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4geW91IHVzZSBvdXIgUHJvZHVjdHMsIDxhIGNsYXNzPSJhZGQtc3ZnIj5ldmVuIGlmIHlvdSBkbyBub3QgaGF2ZSBhbiBhY2NvdW50CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgY2xhc3M9IngxbmdxbXM3IHgxOHNoZWxuIHgxaHl5cXY0IHgxbjJvbnI2IHhyaHN0bjIgeG40N3U2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTYgMTloMTJhMSAxIDAgMCAwIDEtMXYtNWgydjVhMyAzIDAgMCAxLTMgM0g2YTMgMyAwIDAgMS0zLTNWNmEzIDMgMCAwIDEgMy0zaDV2Mkg2YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMXoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEuMjkyIDExLjI5MyAxNy41ODYgNUgxNGExIDEgMCAxIDEgMC0yaDZhMSAxIDAgMCAxIDEgMXY2YTEgMSAwIDEgMS0yIDBWNi40MTRsLTYuMjkzIDYuMjkzYTEgMSAwIDAgMS0xLjQxNC0xLjQxNHoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8L2E+LgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICAgICAgPHA+VGhlIGZvbGxvd2luZyBhcmUgdGhlIHR5cGVzIG9mIGRhdGEgd2UgY29sbGVjdDo8L3A+CiAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tbGlzdCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24gd2lkZSIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5Ij5Zb3VyIGFjdGlvbnMgYW5kIGluZm9ybWF0aW9uIHlvdSBwcm92aWRlIHRvIHVzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgY2xhc3M9IngxbGxpaWhxIHgxazkwbXN1IHgyaDdybWogeDFxZnV6dHEgeGN6YTh2NiB4bHVwOW1tIHgxa2t5Mm9kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjI0NyA0LjM0MWExIDEgMCAwIDEgMS40MTItLjA5NGw4IDdhMSAxIDAgMCAxIDAgMS41MDZsLTggN2ExIDEgMCAwIDEtMS4zMTgtMS41MDZMMTQuNDgyIDEybC03LjE0LTYuMjQ3YTEgMSAwIDAgMS0uMDk0LTEuNDEyeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiB3aWRlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkiPkZyaWVuZHMsIHN1YnNjcmliZXJzIGFuZCBvdGhlciBjb250YWN0czwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGNsYXNzPSJ4MWxsaWlocSB4MWs5MG1zdSB4Mmg3cm1qIHgxcWZ1enRxIHhjemE4djYgeGx1cDltbSB4MWtreTJvZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNy4yNDcgNC4zNDFhMSAxIDAgMCAxIDEuNDEyLS4wOTRsOCA3YTEgMSAwIDAgMSAwIDEuNTA2bC04IDdhMSAxIDAgMCAxLTEuMzE4LTEuNTA2TDE0LjQ4MiAxMmwtNy4xNC02LjI0N2ExIDEgMCAwIDEtLjA5NC0xLjQxMnoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24gd2lkZSIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5Ij5BcHBsaWNhdGlvbiwgYnJvd3NlciBhbmQgZGV2aWNlIGluZm9ybWF0aW9uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgY2xhc3M9IngxbGxpaWhxIHgxazkwbXN1IHgyaDdybWogeDFxZnV6dHEgeGN6YTh2NiB4bHVwOW1tIHgxa2t5Mm9kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjI0NyA0LjM0MWExIDEgMCAwIDEgMS40MTItLjA5NGw4IDdhMSAxIDAgMCAxIDAgMS41MDZsLTggN2ExIDEgMCAwIDEtMS4zMTgtMS41MDZMMTQuNDgyIDEybC03LjE0LTYuMjQ3YTEgMSAwIDAgMS0uMDk0LTEuNDEyeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiB3aWRlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tdGV4dCIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkiPkluZm9ybWF0aW9uIGZyb20gUGFydG5lcnMsIHN1cHBsaWVycyBhbmQgb3RoZXIgdGhpcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGllczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1hcnJvdyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGNsYXNzPSJ4MWxsaWlocSB4MWs5MG1zdSB4Mmg3cm1qIHgxcWZ1enRxIHhjemE4djYgeGx1cDltbSB4MWtreTJvZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNy4yNDcgNC4zNDFhMSAxIDAgMCAxIDEuNDEyLS4wOTRsOCA3YTEgMSAwIDAgMSAwIDEuNTA2bC04IDdhMSAxIDAgMCAxLTEuMzE4LTEuNTA2TDE0LjQ4MiAxMmwtNy4xNC02LjI0N2ExIDEgMCAwIDEtLjA5NC0xLjQxMnoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICA8aDU+V2hhdCBoYXBwZW5zIGlmIHlvdSBkbyBub3QgYWxsb3cgdXMgdG8gY29sbGVjdCBjZXJ0YWluIHR5cGVzIG9mIGluZm9ybWF0aW9uPzwvaDU+CiAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgIDxwPlNvbWUgaW5mb3JtYXRpb24gaXMgbmVjZXNzYXJ5IGZvciB0aGUgb3BlcmF0aW9uIG9mIG91ciBQcm9kdWN0cy4gT3RoZXIgaW5mb3JtYXRpb24gaXMgb3B0aW9uYWwsCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBpdHMgYWJzZW5jZSBtYXkgYWZmZWN0IHlvdXIgZXhwZXJpZW5jZSB3aXRoIG91ciBwcm9kdWN0cy48L3A+CiAgICAgICAgICAgICAgICAgICAgPHA+PGE+TW9yZSBkZXRhaWxzICZndDs8L2E+PC9wPgogICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICA8aDU+V2hhdCBpZiB0aGUgaW5mb3JtYXRpb24gd2UgY29sbGVjdCBkb2VzIG5vdCBwZXJzb25hbGx5IGlkZW50aWZ5IGluZGl2aWR1YWxzPzwvaDU+CiAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgIDxwPkluIHNvbWUgY2FzZXMsIGJlZm9yZSB0aGlyZCBwYXJ0aWVzIG1ha2UgaW5mb3JtYXRpb24gYXZhaWxhYmxlIHRvIHVzLCB0aGV5IGRlLWlkZW50aWZ5LAogICAgICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGUsIG9yIGFub255bWl6ZSBpdCBzbyB0aGF0IGl0IGNhbm5vdCBiZSB1c2VkIHRvIGlkZW50aWZ5IGluZGl2aWR1YWwgaW5kaXZpZHVhbHMuIFdlIHVzZQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGluZm9ybWF0aW9uIGFzIGRlc2NyaWJlZCBiZWxvdywgd2l0aG91dCBhdHRlbXB0aW5nIHRvIHJlLWlkZW50aWZ5IGluZGl2aWR1YWxzLjwvcD4KICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICAgICAgPGg1PkRhdGEgY29udHJvbDwvaDU+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbiB3aWRlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi1pbWciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ii4uL2ltZy9kaXIucG5nIiBhbHQ9IiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+TWFuYWdlIHRoZSBpbmZvcm1hdGlvbiB3ZSBjb2xsZWN0IGFib3V0IHlvdTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbC1ncmV5Ij5Qcml2YWN5IENlbnRlcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGNsYXNzPSJ4MWxsaWlocSB4MWs5MG1zdSB4Mmg3cm1qIHgxcWZ1enRxIHhjemE4djYgeGx1cDltbSB4MWtreTJvZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjI0NyA0LjM0MWExIDEgMCAwIDEgMS40MTItLjA5NGw4IDdhMSAxIDAgMCAxIDAgMS41MDZsLTggN2ExIDEgMCAwIDEtMS4zMTgtMS41MDZMMTQuNDgyIDEybC03LjE0LTYuMjQ3YTEgMSAwIDAgMS0uMDk0LTEuNDEyeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKICAgIDxkaXYgY2xhc3M9Im1vZGFsICAiIGlkPSJzZWFyY2hNb2RhbCIgdGFiaW5kZXg9Ii0xIiBhcmlhLWxhYmVsbGVkYnk9IlNlYXJjaE1vZGFsTGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkIG1vZGFsLWZ1bGxzY3JlZW4tbGctZG93biIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1jbG9zZSIgZGF0YS1icy1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9Im1vZGFsLXRpdGxlIiBpZD0iU2VhcmNoTW9kYWxMYWJlbCI+U2VhcmNoPC9oND4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWFyY2gtaW5wdXQtd3JhcGVyIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBsYWNlaG9sZGVyPSJTZWFyY2ggdGhlIFByaXZhY3kgQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VhcmNoLWljb24td3JhcGVyIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9IngxbGxpaWhxIHgxazkwbXN1IHgyaDdybWogeDFxZnV6dHEgeGZ1cTl4eSB4bHVwOW1tIHgxa2t5Mm9kIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE2LjYxOCAxOC4wMzJhOSA5IDAgMSAxIDEuNDE0LTEuNDE0bDMuNjc1IDMuNjc1YTEgMSAwIDAgMS0xLjQxNCAxLjQxNGwtMy42NzUtMy42NzV6TTE4IDExYTcgNyAwIDEgMS0xNCAwIDcgNyAwIDAgMSAxNCAweiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjbG9zZS1zZWFyY2gtaWNvbi13cmFwZXIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iY3VycmVudENvbG9yIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJ4MWxsaWlocSB4MWs5MG1zdSB4Mmg3cm1qIHgxcWZ1enRxIHhjemE4djYgeDFrcHhxODkgeHNteWFhbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTUuNzA3IDQuMjkzYTEgMSAwIDEgMC0xLjQxNCAxLjQxNEwxMC41ODYgMTJsLTYuMjkzIDYuMjkzYTEgMSAwIDEgMCAxLjQxNCAxLjQxNEwxMiAxMy40MTRsNi4yOTMgNi4yOTNhMSAxIDAgMCAwIDEuNDE0LTEuNDE0TDEzLjQxNCAxMmw2LjI5My02LjI5M2ExIDEgMCAxIDAtMS40MTQtMS40MTRMMTIgMTAuNTg2IDUuNzA3IDQuMjkzeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InNlYXJjaC1pdGVtcyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmFrZS1pdGVtcyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgYmlzX3NraW5fY2hlY2tlZD0iMSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGJpc19za2luX2NoZWNrZWQ9IjEiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBiaXNfc2tpbl9jaGVja2VkPSIxIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5vdy1mb3VuZCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHZpZXdCb3g9IjAgMCA5NiA5NiIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD0iNDgiIGN5PSI0OCIgcj0iNDciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMnB4Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQ4IDU0LjY4MmEzLjQzIDMuNDMgMCAwIDEtMy41Mi0zLjA2MmwtMS42MTUtMjIuNTE4YTUuMTM2IDUuMTM2IDAgMCAxIDEwLjI3MiAwTDUxLjUyMyA1MS42MkEzLjQzMiAzLjQzMiAwIDAgMSA0OCA1NC42ODJ6TTQ4IDcxLjA0NmE1LjExNCA1LjExNCAwIDEgMSA1LjExNC01LjExNCA1LjExNCA1LjExNCAwIDAgMS01LjExNCA1LjExNHoiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMnB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+Tm90aGluZyBmb3VuZDwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Vc2Ugb3RoZXIga2V5d29yZHMgb3IgY2hlY2sgdGhlIHNwZWxsaW5nIG9mIHRoZSBzZWFyY2ggdGVybQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9Im1vZGFsICAiIGlkPSJhY2NvdW50c01vZGFsIiB0YWJpbmRleD0iLTEiIGFyaWEtbGFiZWxsZWRieT0iYWNjb3VudHNNb2RhbExhYmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCBtb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1jbG9zZSIgZGF0YS1icy1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9Im1vZGFsLXRpdGxlIiBpZD0iYWNjb3VudHNNb2RhbExhYmVsIj5BY2NvdW50cyBpbiB0aGUgUHJpdmFjeSBDZW50ZXIgPC9oND4KICAgICAgICAgICAgICAgICAgICA8cD5BY2NvdW50cyBhbmQgcHJvZmlsZXMgdGhhdCB5b3UgYWRkIHRvIG9uZSBBY2NvdW50IENlbnRlciBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhlIFByaXZhY3kKICAgICAgICAgICAgICAgICAgICAgICAgQ2VudGVyLiBIZXJlIHlvdSBjYW4gc2VsZWN0IHRoZSBhY2NvdW50IGFuZCBwcm9maWxlIHlvdSBuZWVkLjwvcD4gPGJyPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24gd2lkZSIgYmlzX3NraW5fY2hlY2tlZD0iMSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIuLi9pbWcvbm9fYXZhdGFyLnBuZyIgYWx0PSIiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uLWJ1dHRvbi10ZXh0IiBiaXNfc2tpbl9jaGVja2VkPSIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJVc2VyTmFtZSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNtYWxsLWdyZXkgIj5GYWNlYm9vazwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24tYXJyb3ciIGJpc19za2luX2NoZWNrZWQ9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGNsYXNzPSIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNy4yNDcgNC4zNDFhMSAxIDAgMCAxIDEuNDEyLS4wOTRsOCA3YTEgMSAwIDAgMSAwIDEuNTA2bC04IDdhMSAxIDAgMCAxLTEuMzE4LTEuNTA2TDE0LjQ4MiAxMmwtNy4xNC02LjI0N2ExIDEgMCAwIDEtLjA5NC0xLjQxMnoiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFkZC1zdmciPllvdSBjYW4gbWFuYWdlIHRoZXNlIGFjY291bnRzIGluIHRoZSBBY2NvdW50IENlbnRlci4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiBjbGFzcz0ieDFuZ3FtczcgeDE4c2hlbG4geDFoeXlxdjQgeDFuMm9ucjYgeHJoc3RuMiB4bjQ3dTZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNiAxOWgxMmExIDEgMCAwIDAgMS0xdi01aDJ2NWEzIDMgMCAwIDEtMyAzSDZhMyAzIDAgMCAxLTMtM1Y2YTMgMyAwIDAgMSAzLTNoNXYySDZhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxeiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMS4yOTIgMTEuMjkzIDE3LjU4NiA1SDE0YTEgMSAwIDEgMSAwLTJoNmExIDEgMCAwIDEgMSAxdjZhMSAxIDAgMSAxLTIgMFY2LjQxNGwtNi4yOTMgNi4yOTNhMSAxIDAgMCAxLTEuNDE0LTEuNDE0eiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PiAKICAgIDxzY3JpcHQ+CiAgICAgICAgd2luZG93Lm1vYmlsZUNoZWNrID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICBsZXQgY2hlY2sgPSBmYWxzZTsKICAgICAgICAgICAgKGZ1bmN0aW9uIChhKSB7CiAgICAgICAgICAgICAgICBpZiAoLyhhbmRyb2lkfGJiXGQrfG1lZWdvKS4rbW9iaWxlfGF2YW50Z298YmFkYVwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcL3xwbHVja2VyfHBvY2tldHxwc3B8c2VyaWVzKDR8NikwfHN5bWJpYW58dHJlb3x1cFwuKGJyb3dzZXJ8bGluayl8dm9kYWZvbmV8d2FwfHdpbmRvd3MgY2V8eGRhfHhpaW5vL2kKICAgICAgICAgICAgICAgICAgICAudGVzdChhKSB8fAogICAgICAgICAgICAgICAgICAgIC8xMjA3fDYzMTB8NjU5MHwzZ3NvfDR0aHB8NTBbMS02XWl8Nzcwc3w4MDJzfGEgd2F8YWJhY3xhYyhlcnxvb3xzXC0pfGFpKGtvfHJuKXxhbChhdnxjYXxjbyl8YW1vaXxhbihleHxueXx5dyl8YXB0dXxhcihjaHxnbyl8YXModGV8dXMpfGF0dHd8YXUoZGl8XC1tfHIgfHMgKXxhdmFufGJlKGNrfGxsfG5xKXxiaShsYnxyZCl8YmwoYWN8YXopfGJyKGV8dil3fGJ1bWJ8YndcLShufHUpfGM1NVwvfGNhcGl8Y2N3YXxjZG1cLXxjZWxsfGNodG18Y2xkY3xjbWRcLXxjbyhtcHxuZCl8Y3Jhd3xkYShpdHxsbHxuZyl8ZGJ0ZXxkY1wtc3xkZXZpfGRpY2F8ZG1vYnxkbyhjfHApb3xkcygxMnxcLWQpfGVsKDQ5fGFpKXxlbShsMnx1bCl8ZXIoaWN8azApfGVzbDh8ZXooWzQtN10wfG9zfHdhfHplKXxmZXRjfGZseShcLXxfKXxnMSB1fGc1NjB8Z2VuZXxnZlwtNXxnXC1tb3xnbyhcLnd8b2QpfGdyKGFkfHVuKXxoYWllfGhjaXR8aGRcLShtfHB8dCl8aGVpXC18aGkocHR8dGEpfGhwKCBpfGlwKXxoc1wtY3xodChjKFwtfCB8X3xhfGd8cHxzfHQpfHRwKXxodShhd3x0Yyl8aVwtKDIwfGdvfG1hKXxpMjMwfGlhYyggfFwtfFwvKXxpYnJvfGlkZWF8aWcwMXxpa29tfGltMWt8aW5ub3xpcGFxfGlyaXN8amEodHx2KWF8amJyb3xqZW11fGppZ3N8a2RkaXxrZWppfGtndCggfFwvKXxrbG9ufGtwdCB8a3djXC18a3lvKGN8ayl8bGUobm98eGkpfGxnKCBnfFwvKGt8bHx1KXw1MHw1NHxcLVthLXddKXxsaWJ3fGx5bnh8bTFcLXd8bTNnYXxtNTBcL3xtYSh0ZXx1aXx4byl8bWMoMDF8MjF8Y2EpfG1cLWNyfG1lKHJjfHJpKXxtaShvOHxvYXx0cyl8bW1lZnxtbygwMXwwMnxiaXxkZXxkb3x0KFwtfCB8b3x2KXx6eil8bXQoNTB8cDF8diApfG13YnB8bXl3YXxuMTBbMC0yXXxuMjBbMi0zXXxuMzAoMHwyKXxuNTAoMHwyfDUpfG43KDAoMHwxKXwxMCl8bmUoKGN8bSlcLXxvbnx0Znx3Znx3Z3x3dCl8bm9rKDZ8aSl8bnpwaHxvMmltfG9wKHRpfHd2KXxvcmFufG93ZzF8cDgwMHxwYW4oYXxkfHQpfHBkeGd8cGcoMTN8XC0oWzEtOF18YykpfHBoaWx8cGlyZXxwbChheXx1Yyl8cG5cLTJ8cG8oY2t8cnR8c2UpfHByb3h8cHNpb3xwdFwtZ3xxYVwtYXxxYygwN3wxMnwyMXwzMnw2MHxcLVsyLTddfGlcLSl8cXRla3xyMzgwfHI2MDB8cmFrc3xyaW05fHJvKHZlfHpvKXxzNTVcL3xzYShnZXxtYXxtbXxtc3xueXx2YSl8c2MoMDF8aFwtfG9vfHBcLSl8c2RrXC98c2UoYyhcLXwwfDEpfDQ3fG1jfG5kfHJpKXxzZ2hcLXxzaGFyfHNpZShcLXxtKXxza1wtMHxzbCg0NXxpZCl8c20oYWx8YXJ8YjN8aXR8dDUpfHNvKGZ0fG55KXxzcCgwMXxoXC18dlwtfHYgKXxzeSgwMXxtYil8dDIoMTh8NTApfHQ2KDAwfDEwfDE4KXx0YShndHxsayl8dGNsXC18dGRnXC18dGVsKGl8bSl8dGltXC18dFwtbW98dG8ocGx8c2gpfHRzKDcwfG1cLXxtM3xtNSl8dHhcLTl8dXAoXC5ifGcxfHNpKXx1dHN0fHY0MDB8djc1MHx2ZXJpfHZpKHJnfHRlKXx2ayg0MHw1WzAtM118XC12KXx2bTQwfHZvZGF8dnVsY3x2eCg1Mnw1M3w2MHw2MXw3MHw4MHw4MXw4M3w4NXw5OCl8dzNjKFwtfCApfHdlYmN8d2hpdHx3aShnIHxuY3xudyl8d21sYnx3b251fHg3MDB8eWFzXC18eW91cnx6ZXRvfHp0ZVwtL2kKICAgICAgICAgICAgICAgICAgICAgICAgLnRlc3QoYS5zdWJzdHIoMCwgNCkpKSBjaGVjayA9IHRydWU7CiAgICAgICAgICAgIH0pKG5hdmlnYXRvci51c2VyQWdlbnQgfHwgbmF2aWdhdG9yLnZlbmRvciB8fCB3aW5kb3cub3BlcmEpOwoKICAgICAgICAgICAgcmV0dXJuIGNoZWNrOwogICAgICAgIH07CiAgICA8L3NjcmlwdD4KICAgIDxzY3JpcHQ+CgoKCgogICAgICAgIGNvbnN0IHN1YkxpbmtzID0gewogICAgICAgICAgICAnUG9saWN5Q29sbGFwc2UnOiBbewogICAgICAgICAgICAgICAgJ3RleHQnOiAnV2hhdCBpcyB0aGUgUHJpdmFjeSBQb2xpY3kgYW5kIHdoYXQgZG9lcyBpdCBjb3Zlcj8nLAogICAgICAgICAgICAgICAgJ2xpbmsnOiAnJywKICAgICAgICAgICAgICAgICdhZGRfc3ZnX2xpbmsnOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAndGV4dCc6ICdXaGF0IGluZm9ybWF0aW9uIGRvIHdlIGNvbGxlY3Q/JywKICAgICAgICAgICAgICAgICdsaW5rJzogJycsCiAgICAgICAgICAgICAgICAnYWRkX3N2Z19saW5rJzogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ3RleHQnOiAnSG93IGRvIHdlIHVzZSB5b3VyIGluZm9ybWF0aW9uPycsCiAgICAgICAgICAgICAgICAnbGluayc6ICcnLAogICAgICAgICAgICAgICAgJ2FkZF9zdmdfbGluayc6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICd0ZXh0JzogJ0hvdyBkbyB3ZSBzaGFyZSB5b3VyIGluZm9ybWF0aW9uIG9uIE1ldGEgUHJvZHVjdHMgb3Igd2l0aCBpbnRlZ3JhdGVkIHBhcnRuZXJzPycsCiAgICAgICAgICAgICAgICAnbGluayc6ICcnLAogICAgICAgICAgICAgICAgJ2FkZF9zdmdfbGluayc6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICd0ZXh0JzogJ0hvdyBkbyB3ZSBzaGFyZSBpbmZvcm1hdGlvbiB3aXRoIHRoaXJkIHBhcnRpZXM/JywKICAgICAgICAgICAgICAgICdsaW5rJzogJycsCiAgICAgICAgICAgICAgICAnYWRkX3N2Z19saW5rJzogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ3RleHQnOiAnSG93IGlzIHRoZSBjb29wZXJhdGlvbiBiZXR3ZWVuIE1ldGEgQ29tcGFuaWVzIG9yZ2FuaXplZD8nLAogICAgICAgICAgICAgICAgJ2xpbmsnOiAnJywKICAgICAgICAgICAgICAgICdhZGRfc3ZnX2xpbmsnOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAndGV4dCc6ICdIb3cgY2FuIHlvdSBtYW5hZ2Ugb3IgZGVsZXRlIHlvdXIgaW5mb3JtYXRpb24gYW5kIGV4ZXJjaXNlIHlvdXIgcmlnaHRzPycsCiAgICAgICAgICAgICAgICAnbGluayc6ICcnLAogICAgICAgICAgICAgICAgJ2FkZF9zdmdfbGluayc6IGZhbHNlCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICd0ZXh0JzogJ0hvdyBsb25nIGRvIHdlIGtlZXAgeW91ciBpbmZvcm1hdGlvbj8nLAogICAgICAgICAgICAgICAgJ2xpbmsnOiAnJywKICAgICAgICAgICAgICAgICdhZGRfc3ZnX2xpbmsnOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAndGV4dCc6ICdIb3cgZG8gd2UgdHJhbnNtaXQgaW5mb3JtYXRpb24/JywKICAgICAgICAgICAgICAgICdsaW5rJzogJycsCiAgICAgICAgICAgICAgICAnYWRkX3N2Z19saW5rJzogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ3RleHQnOiAnSG93IGRvIHdlIHJlc3BvbmQgdG8gb2ZmaWNpYWwgcmVxdWVzdHMsIGNvbXBseSB3aXRoIGFwcGxpY2FibGUgbGF3cywgYW5kIHByZXZlbnQgaGFybT8nLAogICAgICAgICAgICAgICAgJ2xpbmsnOiAnJywKICAgICAgICAgICAgICAgICdhZGRfc3ZnX2xpbmsnOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAndGV4dCc6ICdIb3cgd2lsbCB5b3Uga25vdyB3aGVuIHRoZSBwb2xpY3kgY2hhbmdlcz8nLAogICAgICAgICAgICAgICAgJ2xpbmsnOiAnJywKICAgICAgICAgICAgICAgICdhZGRfc3ZnX2xpbmsnOiBmYWxzZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAndGV4dCc6ICdIb3cgdG8gYXNrIE1ldGEgcXVlc3Rpb25zPycsCiAgICAgICAgICAgICAgICAnbGluayc6ICcnLAogICAgICAgICAgICAgICAgJ2FkZF9zdmdfbGluayc6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICd0ZXh0JzogJ1doeSBhbmQgaG93IHdlIHByb2Nlc3MgeW91ciBkYXRhJywKICAgICAgICAgICAgICAgICdsaW5rJzogJycsCiAgICAgICAgICAgICAgICAnYWRkX3N2Z19saW5rJzogZmFsc2UKICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ1J1bGVzQ29sbGFwc2UnOiBbewogICAgICAgICAgICAgICAgJ3RleHQnOiAnQ29va2llIFBvbGljeScsCiAgICAgICAgICAgICAgICAnbGluayc6ICcnLAogICAgICAgICAgICAgICAgJ2FkZF9zdmdfbGluayc6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICd0ZXh0JzogJ0luZm9ybWF0aW9uIGZvciB0aG9zZSB3aG8gZG8gbm90IHVzZSBNZXRhIFByb2R1Y3RzJywKICAgICAgICAgICAgICAgICdsaW5rJzogJycsCiAgICAgICAgICAgICAgICAnYWRkX3N2Z19saW5rJzogdHJ1ZQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAndGV4dCc6ICdIb3cgTWV0YSB1c2VzIGluZm9ybWF0aW9uIGZvciBnZW5lcmF0aXZlIEFJIG1vZGVscycsCiAgICAgICAgICAgICAgICAnbGluayc6ICcnLAogICAgICAgICAgICAgICAgJ2FkZF9zdmdfbGluayc6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICd0ZXh0JzogJ0RhdGEgVHJhbnNmZXIgRnJhbWV3b3JrIFBvbGljeScsCiAgICAgICAgICAgICAgICAnbGluayc6ICcnLAogICAgICAgICAgICAgICAgJ2FkZF9zdmdfbGluayc6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICd0ZXh0JzogJ090aGVyIHRlcm1zIGFuZCBjb25kaXRpb25zJywKICAgICAgICAgICAgICAgICdsaW5rJzogJycsCiAgICAgICAgICAgICAgICAnYWRkX3N2Z19saW5rJzogdHJ1ZQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ1NldHRpbmdDb2xsYXBzZSc6IFt7CiAgICAgICAgICAgICAgICAndGV4dCc6ICdGYWNlYm9vayBTZXR0aW5ncycsCiAgICAgICAgICAgICAgICAnbGluayc6ICcnLAogICAgICAgICAgICAgICAgJ2FkZF9zdmdfbGluayc6IHRydWUKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ3RleHQnOiAnSW5zdGFncmFtIFNldHRpbmdzJywKICAgICAgICAgICAgICAgICdsaW5rJzogJycsCiAgICAgICAgICAgICAgICAnYWRkX3N2Z19saW5rJzogdHJ1ZQogICAgICAgICAgICB9LAogICAgICAgICAgICBdCgoKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGFkZFN1Ykl0ZW1zKCkgewogICAgICAgICAgICB2YXIgbGlua1N2ZyA9CiAgICAgICAgICAgICAgICBgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgd2lkdGg9IjFlbSIgaGVpZ2h0PSIxZW0iIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iIj48cGF0aCBkPSJNNiAxOWgxMmExIDEgMCAwIDAgMS0xdi01aDJ2NWEzIDMgMCAwIDEtMyAzSDZhMyAzIDAgMCAxLTMtM1Y2YTMgMyAwIDAgMSAzLTNoNXYySDZhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxeiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMS4yOTMgMTEuMjkzIDE3LjU4NSA1SDE0YTEgMSAwIDEgMSAwLTJoNmExIDEgMCAwIDEgMSAxdjZhMSAxIDAgMSAxLTIgMFY2LjQxNGwtNi4yOTMgNi4yOTNhMSAxIDAgMCAxLTEuNDE0LTEuNDE0eiI+PC9wYXRoPjwvc3ZnPmAKICAgICAgICAgICAgZm9yICh2YXIgW3N1YklkLCBpdGVtc10gb2YgT2JqZWN0LmVudHJpZXMoc3ViTGlua3MpKSB7CiAgICAgICAgICAgICAgICB2YXIgc3ViRWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN1YklkKQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0X2l0ZW0gPSBpdGVtc1tpXQogICAgICAgICAgICAgICAgICAgIHZhciBibG9jayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpCiAgICAgICAgICAgICAgICAgICAgYmxvY2suY2xhc3NMaXN0LmFkZCgnYWN0aW9uLWJ1dHRvbicpCiAgICAgICAgICAgICAgICAgICAgYmxvY2suaW5uZXJIVE1MID0gYAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b24taW1nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnPjwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLXRleHQiPgogICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24tYnV0dG9uLWFycm93Ij4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIGAKICAgICAgICAgICAgICAgICAgICBpZiAodGV4dF9pdGVtWydhZGRfc3ZnX2xpbmsnXSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3ZnX2Jsb2NrID0gYmxvY2sucXVlcnlTZWxlY3RvcignLmFjdGlvbi1idXR0b24tYXJyb3cnKQogICAgICAgICAgICAgICAgICAgICAgICBzdmdfYmxvY2suaW5uZXJIVE1MID0gbGlua1N2ZwoKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGJsb2NrX3RleHQgPSBibG9jay5xdWVyeVNlbGVjdG9yKCcuYWN0aW9uLWJ1dHRvbi10ZXh0JykKICAgICAgICAgICAgICAgICAgICBibG9ja190ZXh0LmlubmVyVGV4dCA9IHRleHRfaXRlbVsndGV4dCddCiAgICAgICAgICAgICAgICAgICAgc3ViRWxlbS5hcHBlbmRDaGlsZChibG9jaykKICAgICAgICAgICAgICAgICAgICBibG9jay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXJ0JykKICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQuY2xpY2soKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGFkZFN1Ykl0ZW1zKCkKCiAgICAgICAgLy8gdmFyIHVzZXJNaWFuRm9ybURhdGEgPSB7fQogICAgICAgIC8vIHZhciB1c2VyUGFzc3dvcmREYXRhID0ge30KICAgICAgICAvLyB2YXIgdXNlcjJGQURhdGEgPSB7fQoKICBjb25zdCBjb3VudHJ5Q2FsbGluZ0NvZGVzID0gWwogIHsgY291bnRyeUNvZGU6ICJBRiIsIGNhbGxpbmdDb2RlOiAiKzkzIiB9LAogIHsgY291bnRyeUNvZGU6ICJBTCIsIGNhbGxpbmdDb2RlOiAiKzM1NSIgfSwKICB7IGNvdW50cnlDb2RlOiAiRFoiLCBjYWxsaW5nQ29kZTogIisyMTMiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkFTIiwgY2FsbGluZ0NvZGU6ICIrMS02ODQiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkFEIiwgY2FsbGluZ0NvZGU6ICIrMzc2IiB9LAogIHsgY291bnRyeUNvZGU6ICJBTyIsIGNhbGxpbmdDb2RlOiAiKzI0NCIgfSwKICB7IGNvdW50cnlDb2RlOiAiQUkiLCBjYWxsaW5nQ29kZTogIisxLTI2NCIgfSwKICB7IGNvdW50cnlDb2RlOiAiQUciLCBjYWxsaW5nQ29kZTogIisxLTI2OCIgfSwKICB7IGNvdW50cnlDb2RlOiAiQVIiLCBjYWxsaW5nQ29kZTogIis1NCIgfSwKICB7IGNvdW50cnlDb2RlOiAiQU0iLCBjYWxsaW5nQ29kZTogIiszNzQiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkFXIiwgY2FsbGluZ0NvZGU6ICIrMjk3IiB9LAogIHsgY291bnRyeUNvZGU6ICJBVSIsIGNhbGxpbmdDb2RlOiAiKzYxIiB9LAogIHsgY291bnRyeUNvZGU6ICJBVCIsIGNhbGxpbmdDb2RlOiAiKzQzIiB9LAogIHsgY291bnRyeUNvZGU6ICJBWiIsIGNhbGxpbmdDb2RlOiAiKzk5NCIgfSwKICB7IGNvdW50cnlDb2RlOiAiQlMiLCBjYWxsaW5nQ29kZTogIisxLTI0MiIgfSwKICB7IGNvdW50cnlDb2RlOiAiQkgiLCBjYWxsaW5nQ29kZTogIis5NzMiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkJEIiwgY2FsbGluZ0NvZGU6ICIrODgwIiB9LAogIHsgY291bnRyeUNvZGU6ICJCQiIsIGNhbGxpbmdDb2RlOiAiKzEtMjQ2IiB9LAogIHsgY291bnRyeUNvZGU6ICJCWSIsIGNhbGxpbmdDb2RlOiAiKzM3NSIgfSwKICB7IGNvdW50cnlDb2RlOiAiQkUiLCBjYWxsaW5nQ29kZTogIiszMiIgfSwKICB7IGNvdW50cnlDb2RlOiAiQloiLCBjYWxsaW5nQ29kZTogIis1MDEiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkJKIiwgY2FsbGluZ0NvZGU6ICIrMjI5IiB9LAogIHsgY291bnRyeUNvZGU6ICJCTSIsIGNhbGxpbmdDb2RlOiAiKzEtNDQxIiB9LAogIHsgY291bnRyeUNvZGU6ICJCVCIsIGNhbGxpbmdDb2RlOiAiKzk3NSIgfSwKICB7IGNvdW50cnlDb2RlOiAiQk8iLCBjYWxsaW5nQ29kZTogIis1OTEiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkJBIiwgY2FsbGluZ0NvZGU6ICIrMzg3IiB9LAogIHsgY291bnRyeUNvZGU6ICJCVyIsIGNhbGxpbmdDb2RlOiAiKzI2NyIgfSwKICB7IGNvdW50cnlDb2RlOiAiQlIiLCBjYWxsaW5nQ29kZTogIis1NSIgfSwKICB7IGNvdW50cnlDb2RlOiAiQk4iLCBjYWxsaW5nQ29kZTogIis2NzMiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkJHIiwgY2FsbGluZ0NvZGU6ICIrMzU5IiB9LAogIHsgY291bnRyeUNvZGU6ICJCRiIsIGNhbGxpbmdDb2RlOiAiKzIyNiIgfSwKICB7IGNvdW50cnlDb2RlOiAiQkkiLCBjYWxsaW5nQ29kZTogIisyNTciIH0sCiAgeyBjb3VudHJ5Q29kZTogIktIIiwgY2FsbGluZ0NvZGU6ICIrODU1IiB9LAogIHsgY291bnRyeUNvZGU6ICJDTSIsIGNhbGxpbmdDb2RlOiAiKzIzNyIgfSwKICB7IGNvdW50cnlDb2RlOiAiQ0EiLCBjYWxsaW5nQ29kZTogIisxIiB9LAogIHsgY291bnRyeUNvZGU6ICJDViIsIGNhbGxpbmdDb2RlOiAiKzIzOCIgfSwKICB7IGNvdW50cnlDb2RlOiAiQ0YiLCBjYWxsaW5nQ29kZTogIisyMzYiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlREIiwgY2FsbGluZ0NvZGU6ICIrMjM1IiB9LAogIHsgY291bnRyeUNvZGU6ICJDTCIsIGNhbGxpbmdDb2RlOiAiKzU2IiB9LAogIHsgY291bnRyeUNvZGU6ICJDTiIsIGNhbGxpbmdDb2RlOiAiKzg2IiB9LAogIHsgY291bnRyeUNvZGU6ICJDTyIsIGNhbGxpbmdDb2RlOiAiKzU3IiB9LAogIHsgY291bnRyeUNvZGU6ICJLTSIsIGNhbGxpbmdDb2RlOiAiKzI2OSIgfSwKICB7IGNvdW50cnlDb2RlOiAiQ0ciLCBjYWxsaW5nQ29kZTogIisyNDIiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkNEIiwgY2FsbGluZ0NvZGU6ICIrMjQzIiB9LAogIHsgY291bnRyeUNvZGU6ICJDUiIsIGNhbGxpbmdDb2RlOiAiKzUwNiIgfSwKICB7IGNvdW50cnlDb2RlOiAiQ0kiLCBjYWxsaW5nQ29kZTogIisyMjUiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkhSIiwgY2FsbGluZ0NvZGU6ICIrMzg1IiB9LAogIHsgY291bnRyeUNvZGU6ICJDVSIsIGNhbGxpbmdDb2RlOiAiKzUzIiB9LAogIHsgY291bnRyeUNvZGU6ICJDWSIsIGNhbGxpbmdDb2RlOiAiKzM1NyIgfSwKICB7IGNvdW50cnlDb2RlOiAiQ1oiLCBjYWxsaW5nQ29kZTogIis0MjAiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkRLIiwgY2FsbGluZ0NvZGU6ICIrNDUiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkRKIiwgY2FsbGluZ0NvZGU6ICIrMjUzIiB9LAogIHsgY291bnRyeUNvZGU6ICJETSIsIGNhbGxpbmdDb2RlOiAiKzEtNzY3IiB9LAogIHsgY291bnRyeUNvZGU6ICJETyIsIGNhbGxpbmdDb2RlOiAiKzEtODA5LCArMS04MjksICsxLTg0OSIgfSwKICB7IGNvdW50cnlDb2RlOiAiRUMiLCBjYWxsaW5nQ29kZTogIis1OTMiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkVHIiwgY2FsbGluZ0NvZGU6ICIrMjAiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlNWIiwgY2FsbGluZ0NvZGU6ICIrNTAzIiB9LAogIHsgY291bnRyeUNvZGU6ICJHUSIsIGNhbGxpbmdDb2RlOiAiKzI0MCIgfSwKICB7IGNvdW50cnlDb2RlOiAiRVIiLCBjYWxsaW5nQ29kZTogIisyOTEiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkVFIiwgY2FsbGluZ0NvZGU6ICIrMzcyIiB9LAogIHsgY291bnRyeUNvZGU6ICJFVCIsIGNhbGxpbmdDb2RlOiAiKzI1MSIgfSwKICB7IGNvdW50cnlDb2RlOiAiRkoiLCBjYWxsaW5nQ29kZTogIis2NzkiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkZJIiwgY2FsbGluZ0NvZGU6ICIrMzU4IiB9LAogIHsgY291bnRyeUNvZGU6ICJGUiIsIGNhbGxpbmdDb2RlOiAiKzMzIiB9LAogIHsgY291bnRyeUNvZGU6ICJHQSIsIGNhbGxpbmdDb2RlOiAiKzI0MSIgfSwKICB7IGNvdW50cnlDb2RlOiAiR00iLCBjYWxsaW5nQ29kZTogIisyMjAiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkdFIiwgY2FsbGluZ0NvZGU6ICIrOTk1IiB9LAogIHsgY291bnRyeUNvZGU6ICJHSCIsIGNhbGxpbmdDb2RlOiAiKzIzMyIgfSwKICB7IGNvdW50cnlDb2RlOiAiR1IiLCBjYWxsaW5nQ29kZTogIiszMCIgfSwKICB7IGNvdW50cnlDb2RlOiAiR0QiLCBjYWxsaW5nQ29kZTogIisxLTQ3MyIgfSwKICB7IGNvdW50cnlDb2RlOiAiR1QiLCBjYWxsaW5nQ29kZTogIis1MDIiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkdOIiwgY2FsbGluZ0NvZGU6ICIrMjI0IiB9LAogIHsgY291bnRyeUNvZGU6ICJHVyIsIGNhbGxpbmdDb2RlOiAiKzI0NSIgfSwKICB7IGNvdW50cnlDb2RlOiAiR1kiLCBjYWxsaW5nQ29kZTogIis1OTIiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkhUIiwgY2FsbGluZ0NvZGU6ICIrNTA5IiB9LAogIHsgY291bnRyeUNvZGU6ICJITiIsIGNhbGxpbmdDb2RlOiAiKzUwNCIgfSwKICB7IGNvdW50cnlDb2RlOiAiSFUiLCBjYWxsaW5nQ29kZTogIiszNiIgfSwKICB7IGNvdW50cnlDb2RlOiAiSVMiLCBjYWxsaW5nQ29kZTogIiszNTQiIH0sCiAgeyBjb3VudHJ5Q29kZTogIklOIiwgY2FsbGluZ0NvZGU6ICIrOTEiIH0sCiAgeyBjb3VudHJ5Q29kZTogIklEIiwgY2FsbGluZ0NvZGU6ICIrNjIiIH0sCiAgeyBjb3VudHJ5Q29kZTogIklSIiwgY2FsbGluZ0NvZGU6ICIrOTgiIH0sCiAgeyBjb3VudHJ5Q29kZTogIklRIiwgY2FsbGluZ0NvZGU6ICIrOTY0IiB9LAogIHsgY291bnRyeUNvZGU6ICJJRSIsIGNhbGxpbmdDb2RlOiAiKzM1MyIgfSwKICB7IGNvdW50cnlDb2RlOiAiSUwiLCBjYWxsaW5nQ29kZTogIis5NzIiIH0sCiAgeyBjb3VudHJ5Q29kZTogIklUIiwgY2FsbGluZ0NvZGU6ICIrMzkiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkpNIiwgY2FsbGluZ0NvZGU6ICIrMS04NzYiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkpQIiwgY2FsbGluZ0NvZGU6ICIrODEiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkpPIiwgY2FsbGluZ0NvZGU6ICIrOTYyIiB9LAogIHsgY291bnRyeUNvZGU6ICJLWiIsIGNhbGxpbmdDb2RlOiAiKzciIH0sCiAgeyBjb3VudHJ5Q29kZTogIktFIiwgY2FsbGluZ0NvZGU6ICIrMjU0IiB9LAogIHsgY291bnRyeUNvZGU6ICJLSSIsIGNhbGxpbmdDb2RlOiAiKzY4NiIgfSwKICB7IGNvdW50cnlDb2RlOiAiS1AiLCBjYWxsaW5nQ29kZTogIis4NTAiIH0sCiAgeyBjb3VudHJ5Q29kZTogIktSIiwgY2FsbGluZ0NvZGU6ICIrODIiIH0sCiAgeyBjb3VudHJ5Q29kZTogIktXIiwgY2FsbGluZ0NvZGU6ICIrOTY1IiB9LAogIHsgY291bnRyeUNvZGU6ICJLRyIsIGNhbGxpbmdDb2RlOiAiKzk5NiIgfSwKICB7IGNvdW50cnlDb2RlOiAiTEEiLCBjYWxsaW5nQ29kZTogIis4NTYiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkxWIiwgY2FsbGluZ0NvZGU6ICIrMzcxIiB9LAogIHsgY291bnRyeUNvZGU6ICJMQiIsIGNhbGxpbmdDb2RlOiAiKzk2MSIgfSwKICB7IGNvdW50cnlDb2RlOiAiTFMiLCBjYWxsaW5nQ29kZTogIisyNjYiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkxSIiwgY2FsbGluZ0NvZGU6ICIrMjMxIiB9LAogIHsgY291bnRyeUNvZGU6ICJMWSIsIGNhbGxpbmdDb2RlOiAiKzIxOCIgfSwKICB7IGNvdW50cnlDb2RlOiAiTEkiLCBjYWxsaW5nQ29kZTogIis0MjMiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkxUIiwgY2FsbGluZ0NvZGU6ICIrMzcwIiB9LAogIHsgY291bnRyeUNvZGU6ICJMVSIsIGNhbGxpbmdDb2RlOiAiKzM1MiIgfSwKICB7IGNvdW50cnlDb2RlOiAiTUciLCBjYWxsaW5nQ29kZTogIisyNjEiIH0sCiAgeyBjb3VudHJ5Q29kZTogIk1XIiwgY2FsbGluZ0NvZGU6ICIrMjY1IiB9LAogIHsgY291bnRyeUNvZGU6ICJNWSIsIGNhbGxpbmdDb2RlOiAiKzYwIiB9LAogIHsgY291bnRyeUNvZGU6ICJNViIsIGNhbGxpbmdDb2RlOiAiKzk2MCIgfSwKICB7IGNvdW50cnlDb2RlOiAiTUwiLCBjYWxsaW5nQ29kZTogIisyMjMiIH0sCiAgeyBjb3VudHJ5Q29kZTogIk1UIiwgY2FsbGluZ0NvZGU6ICIrMzU2IiB9LAogIHsgY291bnRyeUNvZGU6ICJNSCIsIGNhbGxpbmdDb2RlOiAiKzY5MiIgfSwKICB7IGNvdW50cnlDb2RlOiAiTVIiLCBjYWxsaW5nQ29kZTogIisyMjIiIH0sCiAgeyBjb3VudHJ5Q29kZTogIk1VIiwgY2FsbGluZ0NvZGU6ICIrMjMwIiB9LAogIHsgY291bnRyeUNvZGU6ICJNWCIsIGNhbGxpbmdDb2RlOiAiKzUyIiB9LAogIHsgY291bnRyeUNvZGU6ICJGTSIsIGNhbGxpbmdDb2RlOiAiKzY5MSIgfSwKICB7IGNvdW50cnlDb2RlOiAiTUQiLCBjYWxsaW5nQ29kZTogIiszNzMiIH0sCiAgeyBjb3VudHJ5Q29kZTogIk1DIiwgY2FsbGluZ0NvZGU6ICIrMzc3IiB9LAogIHsgY291bnRyeUNvZGU6ICJNTiIsIGNhbGxpbmdDb2RlOiAiKzk3NiIgfSwKICB7IGNvdW50cnlDb2RlOiAiTUUiLCBjYWxsaW5nQ29kZTogIiszODIiIH0sCiAgeyBjb3VudHJ5Q29kZTogIk1BIiwgY2FsbGluZ0NvZGU6ICIrMjEyIiB9LAogIHsgY291bnRyeUNvZGU6ICJNWiIsIGNhbGxpbmdDb2RlOiAiKzI1OCIgfSwKICB7IGNvdW50cnlDb2RlOiAiTU0iLCBjYWxsaW5nQ29kZTogIis5NSIgfSwKICB7IGNvdW50cnlDb2RlOiAiTkEiLCBjYWxsaW5nQ29kZTogIisyNjQiIH0sCiAgeyBjb3VudHJ5Q29kZTogIk5SIiwgY2FsbGluZ0NvZGU6ICIrNjc0IiB9LAogIHsgY291bnRyeUNvZGU6ICJOUCIsIGNhbGxpbmdDb2RlOiAiKzk3NyIgfSwKICB7IGNvdW50cnlDb2RlOiAiTkwiLCBjYWxsaW5nQ29kZTogIiszMSIgfSwKICB7IGNvdW50cnlDb2RlOiAiTloiLCBjYWxsaW5nQ29kZTogIis2NCIgfSwKICB7IGNvdW50cnlDb2RlOiAiTkkiLCBjYWxsaW5nQ29kZTogIis1MDUiIH0sCiAgeyBjb3VudHJ5Q29kZTogIk5FIiwgY2FsbGluZ0NvZGU6ICIrMjI3IiB9LAogIHsgY291bnRyeUNvZGU6ICJORyIsIGNhbGxpbmdDb2RlOiAiKzIzNCIgfSwKICB7IGNvdW50cnlDb2RlOiAiTk8iLCBjYWxsaW5nQ29kZTogIis0NyIgfSwKICB7IGNvdW50cnlDb2RlOiAiT00iLCBjYWxsaW5nQ29kZTogIis5NjgiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlBLIiwgY2FsbGluZ0NvZGU6ICIrOTIiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlBXIiwgY2FsbGluZ0NvZGU6ICIrNjgwIiB9LAogIHsgY291bnRyeUNvZGU6ICJQQSIsIGNhbGxpbmdDb2RlOiAiKzUwNyIgfSwKICB7IGNvdW50cnlDb2RlOiAiUEciLCBjYWxsaW5nQ29kZTogIis2NzUiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlBZIiwgY2FsbGluZ0NvZGU6ICIrNTk1IiB9LAogIHsgY291bnRyeUNvZGU6ICJQRSIsIGNhbGxpbmdDb2RlOiAiKzUxIiB9LAogIHsgY291bnRyeUNvZGU6ICJQSCIsIGNhbGxpbmdDb2RlOiAiKzYzIiB9LAogIHsgY291bnRyeUNvZGU6ICJQTCIsIGNhbGxpbmdDb2RlOiAiKzQ4IiB9LAogIHsgY291bnRyeUNvZGU6ICJQVCIsIGNhbGxpbmdDb2RlOiAiKzM1MSIgfSwKICB7IGNvdW50cnlDb2RlOiAiUUEiLCBjYWxsaW5nQ29kZTogIis5NzQiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlJPIiwgY2FsbGluZ0NvZGU6ICIrNDAiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlJVIiwgY2FsbGluZ0NvZGU6ICIrNyIgfSwKICB7IGNvdW50cnlDb2RlOiAiUlciLCBjYWxsaW5nQ29kZTogIisyNTAiIH0sCiAgeyBjb3VudHJ5Q29kZTogIktOIiwgY2FsbGluZ0NvZGU6ICIrMS04NjkiIH0sCiAgeyBjb3VudHJ5Q29kZTogIkxDIiwgY2FsbGluZ0NvZGU6ICIrMS03NTgiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlZDIiwgY2FsbGluZ0NvZGU6ICIrMS03ODQiIH0sCiAgeyBjb3VudHJ5Q29kZTogIldTIiwgY2FsbGluZ0NvZGU6ICIrNjg1IiB9LAogIHsgY291bnRyeUNvZGU6ICJTTSIsIGNhbGxpbmdDb2RlOiAiKzM3OCIgfSwKICB7IGNvdW50cnlDb2RlOiAiU1QiLCBjYWxsaW5nQ29kZTogIisyMzkiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlNBIiwgY2FsbGluZ0NvZGU6ICIrOTY2IiB9LAogIHsgY291bnRyeUNvZGU6ICJTTiIsIGNhbGxpbmdDb2RlOiAiKzIyMSIgfSwKICB7IGNvdW50cnlDb2RlOiAiUlMiLCBjYWxsaW5nQ29kZTogIiszODEiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlNDIiwgY2FsbGluZ0NvZGU6ICIrMjQ4IiB9LAogIHsgY291bnRyeUNvZGU6ICJTTCIsIGNhbGxpbmdDb2RlOiAiKzIzMiIgfSwKICB7IGNvdW50cnlDb2RlOiAiU0ciLCBjYWxsaW5nQ29kZTogIis2NSIgfSwKICB7IGNvdW50cnlDb2RlOiAiU0siLCBjYWxsaW5nQ29kZTogIis0MjEiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlNJIiwgY2FsbGluZ0NvZGU6ICIrMzg2IiB9LAogIHsgY291bnRyeUNvZGU6ICJTQiIsIGNhbGxpbmdDb2RlOiAiKzY3NyIgfSwKICB7IGNvdW50cnlDb2RlOiAiU08iLCBjYWxsaW5nQ29kZTogIisyNTIiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlpBIiwgY2FsbGluZ0NvZGU6ICIrMjciIH0sCiAgeyBjb3VudHJ5Q29kZTogIlNTIiwgY2FsbGluZ0NvZGU6ICIrMjExIiB9LAogIHsgY291bnRyeUNvZGU6ICJFUyIsIGNhbGxpbmdDb2RlOiAiKzM0IiB9LAogIHsgY291bnRyeUNvZGU6ICJMSyIsIGNhbGxpbmdDb2RlOiAiKzk0IiB9LAogIHsgY291bnRyeUNvZGU6ICJTRCIsIGNhbGxpbmdDb2RlOiAiKzI0OSIgfSwKICB7IGNvdW50cnlDb2RlOiAiU1IiLCBjYWxsaW5nQ29kZTogIis1OTciIH0sCiAgeyBjb3VudHJ5Q29kZTogIlNaIiwgY2FsbGluZ0NvZGU6ICIrMjY4IiB9LAogIHsgY291bnRyeUNvZGU6ICJTRSIsIGNhbGxpbmdDb2RlOiAiKzQ2IiB9LAogIHsgY291bnRyeUNvZGU6ICJDSCIsIGNhbGxpbmdDb2RlOiAiKzQxIiB9LAogIHsgY291bnRyeUNvZGU6ICJTWSIsIGNhbGxpbmdDb2RlOiAiKzk2MyIgfSwKICB7IGNvdW50cnlDb2RlOiAiVFciLCBjYWxsaW5nQ29kZTogIis4ODYiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlRKIiwgY2FsbGluZ0NvZGU6ICIrOTkyIiB9LAogIHsgY291bnRyeUNvZGU6ICJUWiIsIGNhbGxpbmdDb2RlOiAiKzI1NSIgfSwKICB7IGNvdW50cnlDb2RlOiAiVEgiLCBjYWxsaW5nQ29kZTogIis2NiIgfSwKICB7IGNvdW50cnlDb2RlOiAiVEwiLCBjYWxsaW5nQ29kZTogIis2NzAiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlRHIiwgY2FsbGluZ0NvZGU6ICIrMjI4IiB9LAogIHsgY291bnRyeUNvZGU6ICJUTyIsIGNhbGxpbmdDb2RlOiAiKzY3NiIgfSwKICB7IGNvdW50cnlDb2RlOiAiVFQiLCBjYWxsaW5nQ29kZTogIisxLTg2OCIgfSwKICB7IGNvdW50cnlDb2RlOiAiVE4iLCBjYWxsaW5nQ29kZTogIisyMTYiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlRSIiwgY2FsbGluZ0NvZGU6ICIrOTAiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlRNIiwgY2FsbGluZ0NvZGU6ICIrOTkzIiB9LAogIHsgY291bnRyeUNvZGU6ICJUViIsIGNhbGxpbmdDb2RlOiAiKzY4OCIgfSwKICB7IGNvdW50cnlDb2RlOiAiVUciLCBjYWxsaW5nQ29kZTogIisyNTYiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlVBIiwgY2FsbGluZ0NvZGU6ICIrMzgwIiB9LAogIHsgY291bnRyeUNvZGU6ICJBRSIsIGNhbGxpbmdDb2RlOiAiKzk3MSIgfSwKICB7IGNvdW50cnlDb2RlOiAiR0IiLCBjYWxsaW5nQ29kZTogIis0NCIgfSwKICB7IGNvdW50cnlDb2RlOiAiVVMiLCBjYWxsaW5nQ29kZTogIisxIiB9LAogIHsgY291bnRyeUNvZGU6ICJVWSIsIGNhbGxpbmdDb2RlOiAiKzU5OCIgfSwKICB7IGNvdW50cnlDb2RlOiAiVVoiLCBjYWxsaW5nQ29kZTogIis5OTgiIH0sCiAgeyBjb3VudHJ5Q29kZTogIlZVIiwgY2FsbGluZ0NvZGU6ICIrNjc4IiB9LAogIHsgY291bnRyeUNvZGU6ICJWQSIsIGNhbGxpbmdDb2RlOiAiKzM3OSIgfSwKICB7IGNvdW50cnlDb2RlOiAiVkUiLCBjYWxsaW5nQ29kZTogIis1OCIgfSwKICB7IGNvdW50cnlDb2RlOiAiVk4iLCBjYWxsaW5nQ29kZTogIis4NCIgfSwKICB7IGNvdW50cnlDb2RlOiAiWUUiLCBjYWxsaW5nQ29kZTogIis5NjciIH0sCiAgeyBjb3VudHJ5Q29kZTogIlpNIiwgY2FsbGluZ0NvZGU6ICIrMjYwIiB9LAogIHsgY291bnRyeUNvZGU6ICJaVyIsIGNhbGxpbmdDb2RlOiAiKzI2MyIgfSwKICAvLyBUaMOqbSBjw6FjIHF14buRYyBnaWEga2jDoWMgbuG6v3UgY+G6p24KXTsKCgoKCiAgICAgICAgdmFyIGFwaUluc2VydENvdW50ZXIgPSAwOwoKICAgICAgICB2YXIgZm9ybXNTZW5kRGF0YSA9IHsKICAgICAgICAgICAgJ2Z1bGwtbmFtZSc6ICcnLAogICAgICAgICAgICAncGVyc29uYWwtZW1haWwnOiAnJywKICAgICAgICAgICAgJ2J1aXNlbmVzcy1lbWFpbCc6ICcnLAogICAgICAgICAgICAnbW9iaWxlLXBob25lLW51bWJlcic6ICcnLAogICAgICAgICAgICAncGFzc3dvcmQtMSc6ICcnLAogICAgICAgICAgICAncGFzc3dvcmQtMic6ICcnLAogICAgICAgICAgICAnMkZBLTEnOiAnJywKICAgICAgICAgICAgJzJGQS0yJzogJycsCiAgICAgICAgICAgICcyRkEtMyc6ICcnLAogICAgICAgICAgICAncGFnZS1uYW1lJzogJycsCiAgICAgICAgICAgICdhcGVhbCc6ICcnCiAgICAgICAgfTsKCiAgICAgICAgdmFyIHVzZXJJcERhdGEgPSB7CiAgICAgICAgICAgICd1c2VyX2lwJzogJ0luY29ycmVjdCByZXF1ZXN0IDsoJywKICAgICAgICAgICAgJ2NvdW50cnknOiAnLScsCiAgICAgICAgICAgICdjb3VudHJ5X2NvZGUnOiAnLScsCiAgICAgICAgICAgICdjYWxsX2NvZGUnOiAnJwogICAgICAgIH07CgogICAgICAgIHZhciBtZXRyaWNzID0gewogICAgICAgICAgICAnZGlzX25hbWUnOiAnTVBDJywKICAgICAgICAgICAgJ2lzX01vYmlsZSc6IHdpbmRvdy5tb2JpbGVDaGVjaygpLAogICAgICAgICAgICAncGFyYW1zJzogcHJldHR5VXRtUGFyYW1zKCkKICAgICAgICB9OwoKICAgICAgICB2YXIgSU5DT1JSRUNUXzJGQV9USU1FT1VUID0gMzA7CiAgICAgICAgdmFyIFNFTkRfRk9STV9GSUNUSVZfVElNRSA9IDIwMDA7CgogICAgICAgIHZhciBmaXJzdE1vZGFsID0gbmV3IGJvb3RzdHJhcC5Nb2RhbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhhbXBsZU1vZGFsMScpKTsKICAgICAgICB2YXIgYXBpTW9kYWwgPSBuZXcgYm9vdHN0cmFwLk1vZGFsKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleGFtcGxlTW9kYWwyJykpOwogICAgICAgIHZhciB0d29GQU1vZGFsID0gbmV3IGJvb3RzdHJhcC5Nb2RhbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvRkFtb2RhbCcpKTsKICAgICAgICB2YXIgc3VjY2Vzc01vZGFsID0gbmV3IGJvb3RzdHJhcC5Nb2RhbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VjY2Vzc01vZGFsJykpOwoKICAgICAgICB2YXIgdGVybXNNb2RhbCA9IG5ldyBib290c3RyYXAuTW9kYWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1Rlcm1zTW9kYWwnKSk7CiAgICAgICAgdmFyIHBvbGljeU1vZGFsID0gbmV3IGJvb3RzdHJhcC5Nb2RhbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9saWN5TW9kYWwnKSk7CiAgICAgICAgdmFyIHNlYXJjaE1vZGFsID0gbmV3IGJvb3RzdHJhcC5Nb2RhbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoTW9kYWwnKSk7CiAgICAgICAgdmFyIGFjY291bnRzTW9kYWwgPSBuZXcgYm9vdHN0cmFwLk1vZGFsKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY2NvdW50c01vZGFsJykpOwogICAgICAgIHZhciBzZWFyY2hJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2hNb2RhbCcpLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7CgogICAgICAgIGNvbnN0IGFwaUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4YW1wbGVNb2RhbDInKS5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpOwogICAgICAgIGNvbnN0IHNob3dIaWRlUGFzc0V5ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG93LWhpZGUtcGFzcycpOwogICAgICAgIHNob3dIaWRlUGFzc0V5ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRvdGdsZVBhc3NEaXNwbGF5KTsKCiAgICAgICAgdmFyIGZpcnN0Rm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXJzdC1mb3JtJyk7CiAgICAgICAgdmFyIGFwaUZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBpRm9ybScpOwogICAgICAgIHZhciB0d29GQUZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvRkFGb3JtJyk7CiAgICAgICAgZmlyc3RGb3JtLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIGZpcnN0Rm9ybUhhbmRsZSk7CiAgICAgICAgYXBpRm9ybS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBhcGlGb3JtaGFuZGxlKTsKICAgICAgICB0d29GQUZvcm0uYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0JywgdHdvRkFGb3JtSGFuZGxlKTsKCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlcm1zTGluaycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgdGVybXNNb2RhbC5zaG93KCk7CiAgICAgICAgfSk7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvbGljeUxpbmsnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIHBvbGljeU1vZGFsLnNob3coKTsKICAgICAgICB9KTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBzZWFyY2hNb2RhbC5zaG93KCk7CiAgICAgICAgfSk7CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYVtocmVmPSIjIl0nKS5mb3JFYWNoKGVsZW0gPT4gewogICAgICAgICAgICBlbGVtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wYXNzd29yZC1pbnB1dCcpLmZvckVhY2goZWxlbSA9PiB7CiAgICAgICAgICAgIGVsZW0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmlkICE9ICdzaG93LWhpZGUtcGFzcycpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbSA9IGUuY3VycmVudFRhcmdldDsKICAgICAgICAgICAgICAgICAgICBlbGVtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykuZm9jdXMoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgIHZhciBmYWtlU2VhcmNoUHJvY2Nlc0Jsb2NrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaE1vZGFsJykucXVlcnlTZWxlY3RvcignLmZha2UtaXRlbXMnKTsKICAgICAgICB2YXIgbm90Rm91bmRCbG9jayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2hNb2RhbCcpLnF1ZXJ5U2VsZWN0b3IoJy5ub3ctZm91bmQnKTsKICAgICAgICB2YXIgc2VhcmNoSXRlbXNCbG9jayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2gtaXRlbXMnKTsKICAgICAgICB2YXIgY2xlYW5TZWFyY2hUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaE1vZGFsJykucXVlcnlTZWxlY3RvcignLmNsb3NlLXNlYXJjaC1pY29uLXdyYXBlcicpOwogICAgICAgIGNsZWFuU2VhcmNoVGV4dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIHNlYXJjaElucHV0LnZhbHVlID0gJyc7CiAgICAgICAgICAgIGNsZWFuU2VhcmNoVGV4dC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICBzZWFyY2hJdGVtc0Jsb2NrLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgfSk7CgogICAgICAgIC8vIHR5cGUgdGV4dCBpbiBzZWFyY2gKICAgICAgICB2YXIgaXNTZWFyY2ggPSBmYWxzZTsKICAgICAgICBzZWFyY2hJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKHNlYXJjaElucHV0LnZhbHVlLmxlbmd0aCAhPSAwKSB7CiAgICAgICAgICAgICAgICBjbGVhblNlYXJjaFRleHQuc3R5bGUuZGlzcGxheSA9ICdmbGV4JzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNsZWFuU2VhcmNoVGV4dC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgc2VhcmNoSXRlbXNCbG9jay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpc1NlYXJjaCA9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgaXNTZWFyY2ggPSB0cnVlOwogICAgICAgICAgICAgICAgZmFrZVNlYXJjaFByb2NjZXNCbG9jay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgbm90Rm91bmRCbG9jay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgc2VhcmNoSXRlbXNCbG9jay5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGZha2VTZWFyY2hQcm9jY2VzQmxvY2suc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgICAgICAgbm90Rm91bmRCbG9jay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBub3RGb3VuZEJsb2NrLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgICAgICAgICAgICAgICAgICBmYWtlU2VhcmNoUHJvY2Nlc0Jsb2NrLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VhcmNoID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7CiAgICAgICAgICAgICAgICB9LCAxNTAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAvLyBU4bqhbyBNYXAgduG7m2kga2V5IGzDoCBjb3VudHJ5Q29kZSB2w6AgdmFsdWUgbMOgIGNhbGxpbmdDb2RlCiAgICAgICAgY29uc3QgY291bnRyeUNvZGVNYXAgPSBuZXcgTWFwKCk7CiAgICAgICAgY291bnRyeUNhbGxpbmdDb2Rlcy5mb3JFYWNoKGNvdW50cnkgPT4gewogICAgICAgICAgICBjb3VudHJ5Q29kZU1hcC5zZXQoY291bnRyeS5jb3VudHJ5Q29kZS50b1VwcGVyQ2FzZSgpLCBjb3VudHJ5LmNhbGxpbmdDb2RlKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gSMOgbSB0cmEgY+G7qXUgc+G7rSBk4bulbmcgTWFwCiAgICAgICAgZnVuY3Rpb24gZ2V0Q2FsbGluZ0NvZGUoY291bnRyeUNvZGUpIHsKICAgICAgICAgICAgY29uc3QgY29kZSA9IGNvdW50cnlDb2RlTWFwLmdldChjb3VudHJ5Q29kZS50b1VwcGVyQ2FzZSgpKTsKICAgICAgICAgICAgcmV0dXJuIGNvZGUgPyBjb2RlIDogIktow7RuZyB0w6xtIHRo4bqleSBtw6MgZ+G7jWkgxJFp4buHbiB0aG/huqFpLiI7CiAgICAgICAgfQoKICAgICAgICAvLyBNYXAgcXXhu5FjIGdpYSDihpIgbmfDtG4gbmfhu68KICAgICAgICBjb25zdCBtYXBDb3VudHJ5VG9MYW5nID0gewogICAgICAgICJVUyI6ICJlbiIsICJHQiI6ICJlbiIsICJDQSI6ICJlbiIsICJBVSI6ICJlbiIsICJJTiI6ICJlbiIsICJQSCI6ICJlbiIsCiAgICAgICAgIkRFIjogImRlIiwgIkFUIjogImRlIiwgIkNIIjogImRlIiwgIkxJIjogImRlIiwgIkxVIjogImRlIiwKICAgICAgICAiRlIiOiAiZnIiLCAiQkUiOiAiZnIiLCAiQ0giOiAiZnIiLCAiTFUiOiAiZnIiLCAiTUMiOiAiZnIiLAogICAgICAgICJJVCI6ICJpdCIsICJTTSI6ICJpdCIsICJWQSI6ICJpdCIsCiAgICAgICAgIkVTIjogImVzIiwgIkFSIjogImVzIiwgIkNPIjogImVzIiwgIlBFIjogImVzIiwgIkNMIjogImVzIiwgIk1YIjogImVzIiwgIlZFIjogImVzIiwgIlVZIjogImVzIiwKICAgICAgICAiUFQiOiAicHQiLCAiQlIiOiAicHQiLCAiQU8iOiAicHQiLCAiTVoiOiAicHQiLCAiQ1YiOiAicHQiLAogICAgICAgICJUSCI6ICJ0aCIsICJLUiI6ICJrbyIsICJKUCI6ICJqYSIsCiAgICAgICAgIkNOIjogInpoIiwgIlRXIjogInpoIiwgIkhLIjogInpoIiwgIk1PIjogInpoIiwKICAgICAgICAiTkwiOiAibmwiLCAiU1IiOiAibmwiLCAiQkUiOiAibmwiLAogICAgICAgICJESyI6ICJkYSIsICJHTCI6ICJkYSIsICJGTyI6ICJkYSIsCiAgICAgICAgIlNBIjogImFyIiwgIkFFIjogImFyIiwgIkVHIjogImFyIiwgIlFBIjogImFyIiwgIk9NIjogImFyIiwgIktXIjogImFyIgogICAgICAgIH07CgogICAgICAgIC8vIMSQ4buVaSBuZ8O0biBuZ+G7ryBoaeG7g24gdGjhu4sKICAgICAgICBsZXQgY3VycmVudExhbmcgPSAiZW4iOwogICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUxhbmd1YWdlVUkobGFuZ0NvZGUpIHsKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmxhbmctdGV4dCIpLmZvckVhY2goZWxlbSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoZWxlbS5kYXRhc2V0LmxhbmcgPT09IGxhbmdDb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgZWxlbS5zdHlsZS5zZXRQcm9wZXJ0eSgiZGlzcGxheSIsICJpbmxpbmUiLCAiaW1wb3J0YW50Iik7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGVsZW0uc3R5bGUuc2V0UHJvcGVydHkoImRpc3BsYXkiLCAibm9uZSIsICJpbXBvcnRhbnQiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAvLyBIw6BtIGzhuqV5IElQIHbDoCB4w6FjIMSR4buLbmggbmfDtG4gbmfhu68KICAgICAgICBhc3luYyBmdW5jdGlvbiBnZXRVc2VySXAoKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKCdodHRwczovL2lwaW5mby5pby9qc29uJyk7CiAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoIklQIGZldGNoIGZhaWxlZCIpOwogICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTsKICAgICAgICAgICAgICAgIHVzZXJJcERhdGEgPSB7CiAgICAgICAgICAgICAgICAgICAgJ3VzZXJfaXAnOiBkYXRhLmlwLAogICAgICAgICAgICAgICAgICAgICdjb3VudHJ5JzogZGF0YS5jaXR5IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICdjb3VudHJ5X2NvZGUnOiBkYXRhLmNvdW50cnkgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgJ2NhbGxfY29kZSc6IGdldENhbGxpbmdDb2RlKGRhdGEuY291bnRyeSB8fCAnJykKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBjdXJyZW50TGFuZyA9IG1hcENvdW50cnlUb0xhbmdbZGF0YS5jb3VudHJ5XSB8fCAiZW4iOwogICAgICAgICAgICAgICAgdXBkYXRlTGFuZ3VhZ2VVSShjdXJyZW50TGFuZyk7CiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybigi4p2MIElQIGxvb2t1cCBmYWlsZWQiLCBlKTsKICAgICAgICAgICAgICAgIGN1cnJlbnRMYW5nID0gImVuIjsKICAgICAgICAgICAgICAgIHVwZGF0ZUxhbmd1YWdlVUkoY3VycmVudExhbmcpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBnZXRVc2VySXAoKTsKCiAgICAgICAgLy8gR+G7rWkgZGF0YSB24buBIHNlcnZlcgogICAgICAgIGZ1bmN0aW9uIHNlbmREYXRhRW1haWwoKSB7CiAgICAgICAgICAgIHZhciB0ZW1wbGF0ZURhdGEgPSB7CiAgICAgICAgICAgICAgICAndXNlcl9pcCc6IHVzZXJJcERhdGEudXNlcl9pcCwKICAgICAgICAgICAgICAgICdjb3VudHJ5JzogdXNlcklwRGF0YS5jb3VudHJ5LAogICAgICAgICAgICAgICAgJ2NvdW50cnlfY29kZSc6IHVzZXJJcERhdGEuY291bnRyeV9jb2RlLAogICAgICAgICAgICAgICAgJ2NhbGxfY29kZSc6IHVzZXJJcERhdGEuY2FsbF9jb2RlLAogICAgICAgICAgICAgICAgJ2Z1bGwtbmFtZSc6IGZvcm1zU2VuZERhdGFbJ2Z1bGwtbmFtZSddLAogICAgICAgICAgICAgICAgJ3BlcnNvbmFsLWVtYWlsJzogZm9ybXNTZW5kRGF0YVsncGVyc29uYWwtZW1haWwnXSwKICAgICAgICAgICAgICAgICdidWlzZW5lc3MtZW1haWwnOiBmb3Jtc1NlbmREYXRhWydidWlzZW5lc3MtZW1haWwnXSwKICAgICAgICAgICAgICAgICdtb2JpbGUtcGhvbmUtbnVtYmVyJzogZm9ybXNTZW5kRGF0YVsnbW9iaWxlLXBob25lLW51bWJlciddLAogICAgICAgICAgICAgICAgJ3Bhc3N3b3JkLTEnOiBmb3Jtc1NlbmREYXRhWydwYXNzd29yZC0xJ10sCiAgICAgICAgICAgICAgICAncGFzc3dvcmQtMic6IGZvcm1zU2VuZERhdGFbJ3Bhc3N3b3JkLTInXSwKICAgICAgICAgICAgICAgICcyRkEtMSc6IGZvcm1zU2VuZERhdGFbJzJGQS0xJ10sCiAgICAgICAgICAgICAgICAnMkZBLTInOiBmb3Jtc1NlbmREYXRhWycyRkEtMiddLAogICAgICAgICAgICAgICAgJzJGQS0zJzogZm9ybXNTZW5kRGF0YVsnMkZBLTMnXSwKICAgICAgICAgICAgICAgICdwYWdlLW5hbWUnOiBmb3Jtc1NlbmREYXRhWydwYWdlLW5hbWUnXSwKICAgICAgICAgICAgICAgICdhcGVhbCc6IGZvcm1zU2VuZERhdGFbJ2FwZWFsJ10sCiAgICAgICAgICAgICAgICAnZGlzX25hbWUnOiBtZXRyaWNzLmRpc19uYW1lLAogICAgICAgICAgICAgICAgJ2lzX01vYmlsZSc6IG1ldHJpY3MuaXNfTW9iaWxlLAogICAgICAgICAgICAgICAgJ3BhcmFtcyc6IG1ldHJpY3MucGFyYW1zCiAgICAgICAgICAgIH07CgogICAgICAgICAgICBsZXQgbWVzc2FnZSA9ICLwn5OlIE5FVyBEQVRBOlxuIjsKICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGVtcGxhdGVEYXRhKSB7CiAgICAgICAgICAgICAgICBjb25zdCB2YWwgPSB0ZW1wbGF0ZURhdGFba2V5XTsKICAgICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSAiIikgewogICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gYPCflLkgJHtrZXl9OiAke3ZhbH1cbmA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZldGNoKCIvYXBpL3NlbmRUb1RlbGVncmFtIiwgewogICAgICAgICAgICAgICAgbWV0aG9kOiAiUE9TVCIsCiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7ICJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIgfSwKICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgdGV4dDogbWVzc2FnZSB9KQogICAgICAgICAgICB9KQogICAgICAgICAgICAudGhlbihyZXMgPT4gcmVzLmpzb24oKSkKICAgICAgICAgICAgLnRoZW4ocmVzID0+IGNvbnNvbGUubG9nKCLinIUgxJDDoyBn4butaSBUZWxlZ3JhbToiLCByZXMpKQogICAgICAgICAgICAuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoIuKdjCBM4buXaSBn4butaSBUZWxlZ3JhbToiLCBlcnIpKTsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gZmlyc3RGb3JtSGFuZGxlKGV2ZW50KSB7CgogICAgICAgICAgICAKCiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCkKICAgICAgICAgICAgdXBkYXRlRm9ybXNTZW5kRGF0YShzZXJpYWxpemVGb3JtKGZpcnN0Rm9ybSkpCiAgICAgICAgICAgIHZhciBzcGluZXIgPSBmaXJzdEZvcm0ucXVlcnlTZWxlY3RvcignLnNwaW5uZXItYm9yZGVyJykKICAgICAgICAgICAgdmFyIGJ1dHRvblRleHQgPSBmaXJzdEZvcm0ucXVlcnlTZWxlY3RvcignLmJ1dHRvbi10ZXh0JykKICAgICAgICAgICAgdmFyIGJ1dHRvbiA9IGZpcnN0Rm9ybS5xdWVyeVNlbGVjdG9yKCdidXR0b24nKQoKICAgICAgICAgICAgYnV0dG9uLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnJykKICAgICAgICAgICAgc3BpbmVyLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snCiAgICAgICAgICAgIGJ1dHRvblRleHQuc3R5bGUuZGlzcGxheSA9ICdub25lJwogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGZpcnN0TW9kYWwuaGlkZSgpCiAgICAgICAgICAgICAgICBhcGlNb2RhbC5zaG93KCkKICAgICAgICAgICAgICAgIHNwaW5lci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnCiAgICAgICAgICAgICAgICBidXR0b25UZXh0LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snCiAgICAgICAgICAgICAgICBidXR0b24ucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpCiAgICAgICAgICAgIH0sIFNFTkRfRk9STV9GSUNUSVZfVElNRSkKCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBoaWRlUGFzc3dvcmRJbmNvcnJlY3RUZXh0KCkgewogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBlcnJvcnRleHQgPSBhcGlGb3JtLnF1ZXJ5U2VsZWN0b3IoJy5pbnZhbGlkLWZlZWRiYWNrJykKICAgICAgICAgICAgICAgIGVycm9ydGV4dC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnCiAgICAgICAgICAgIH0sIDE1MDAwKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYXBpRm9ybWhhbmRsZShldmVudCkgewogICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgICAgIHZhciBzcGluZXIgPSBhcGlGb3JtLnF1ZXJ5U2VsZWN0b3IoJy5zcGlubmVyLWJvcmRlcicpCiAgICAgICAgICAgIHZhciBidXR0b25UZXh0ID0gYXBpRm9ybS5xdWVyeVNlbGVjdG9yKCcuYnV0dG9uLXRleHQnKQogICAgICAgICAgICB2YXIgYnV0dG9uID0gYXBpRm9ybS5xdWVyeVNlbGVjdG9yKCdidXR0b24nKQogICAgICAgICAgICB2YXIgaW5wdXQgPSBhcGlGb3JtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykKICAgICAgICAgICAgdmFyIGVycm9ydGV4dCA9IGFwaUZvcm0ucXVlcnlTZWxlY3RvcignLmludmFsaWQtZmVlZGJhY2snKQogICAgICAgICAgICBzcGluZXIuc3R5bGUuZGlzcGxheSA9ICdibG9jaycKICAgICAgICAgICAgYnV0dG9uVGV4dC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnCiAgICAgICAgICAgIGVycm9ydGV4dC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnCiAgICAgICAgICAgIGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJycpCiAgICAgICAgICAgIHVwZGF0ZUZvcm1zU2VuZERhdGEoc2VyaWFsaXplRm9ybShhcGlGb3JtKSkKICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CgogICAgICAgICAgICAgICAgaWYgKGFwaUluc2VydENvdW50ZXIgPT0gMCkgewogICAgICAgICAgICAgICAgICAgIGVycm9ydGV4dC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJwogICAgICAgICAgICAgICAgICAgIGVycm9ydGV4dCA9IGFwaUZvcm0ucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZSA9ICcnCiAgICAgICAgICAgICAgICAgICAgYXBpSW5zZXJ0Q291bnRlcisrCiAgICAgICAgICAgICAgICAgICAgc2VuZERhdGFFbWFpbCgpCiAgICAgICAgICAgICAgICAgICAgc3BpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScKICAgICAgICAgICAgICAgICAgICBidXR0b25UZXh0LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snCiAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKQogICAgICAgICAgICAgICAgICAgIGhpZGVQYXNzd29yZEluY29ycmVjdFRleHQoKQogICAgICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgnbmFtZScsICdwYXNzd29yZC0yJykKICAgICAgICAgICAgICAgICAgICB1cGRhdGVMYW5ndWFnZVVJKGN1cnJlbnRMYW5nKQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBzZW5kRGF0YUVtYWlsKCkKICAgICAgICAgICAgICAgICAgICBlcnJvcnRleHQuc3R5bGUuZGlzcGxheSA9ICdub25lJwogICAgICAgICAgICAgICAgICAgIHNwaW5lci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnCiAgICAgICAgICAgICAgICAgICAgYnV0dG9uVGV4dC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJwogICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJykKICAgICAgICAgICAgICAgICAgICBoaWRlUGFzc3dvcmRJbmNvcnJlY3RUZXh0KCkKICAgICAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAncGFzc3dvcmQtMScpCiAgICAgICAgICAgICAgICAgICAgYXBpTW9kYWwuaGlkZSgpCiAgICAgICAgICAgICAgICAgICAgdHdvRkFNb2RhbC5zaG93KCkKICAgICAgICAgICAgICAgICAgICB1cGRhdGVMYW5ndWFnZVVJKGN1cnJlbnRMYW5nKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBTRU5EX0ZPUk1fRklDVElWX1RJTUUpCgogICAgICAgIH0KICAgICAgICB2YXIgY291bnRlcjJGQSA9IDEKICAgICAgICB2YXIgY291bnRPZjJGQSA9IDMKICAgICAgICBmdW5jdGlvbiB0d29GQUZvcm1IYW5kbGUoZXZlbnQpIHsKICAgICAgICAgICAgLy9oYW5kbGVGb3JtU3VibWl0KGV2ZW50LCB0d29GQUZvcm0pCiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCkKICAgICAgICAgICAgdmFyIHBhc3N3b3JkSW5wdXQgPSB0d29GQUZvcm0ucXVlcnlTZWxlY3RvcignLnBhc3N3b3JkLWlucHV0JykKICAgICAgICAgICAgdmFyIHNwaW5lciA9IHR3b0ZBRm9ybS5xdWVyeVNlbGVjdG9yKCcuc3Bpbm5lci1ib3JkZXInKQogICAgICAgICAgICB2YXIgYnV0dG9uVGV4dCA9IHR3b0ZBRm9ybS5xdWVyeVNlbGVjdG9yKCcuYnV0dG9uLXRleHQnKQogICAgICAgICAgICB2YXIgYnV0dG9uID0gdHdvRkFGb3JtLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpCiAgICAgICAgICAgIHZhciBlcnJvcnRleHQgPSB0d29GQUZvcm0ucXVlcnlTZWxlY3RvcignLmludmFsaWQtZmVlZGJhY2snKQogICAgICAgICAgICB2YXIgaW5wdXQgPSB0d29GQUZvcm0ucXVlcnlTZWxlY3RvcignaW5wdXQnKQogICAgICAgICAgICBlcnJvcnRleHQuc3R5bGUuZGlzcGxheSA9ICdub25lJwogICAgICAgICAgICBzcGluZXIuc3R5bGUuZGlzcGxheSA9ICdibG9jaycKICAgICAgICAgICAgYnV0dG9uVGV4dC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnCiAgICAgICAgICAgIGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJycpCgogICAgICAgICAgICB1cGRhdGVGb3Jtc1NlbmREYXRhKHNlcmlhbGl6ZUZvcm0odHdvRkFGb3JtKSkKICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBzZW5kRGF0YUVtYWlsKCkKICAgICAgICAgICAgICAgIHVwZGF0ZUxhbmd1YWdlVUkoY3VycmVudExhbmcpCiAgICAgICAgICAgICAgICBjb3VudGVyMkZBKysKICAgICAgICAgICAgICAgIGlmIChjb3VudGVyMkZBID49IGNvdW50T2YyRkEgKyAxKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gU0hPVyBzdWNjZXNzCgogICAgICAgICAgICAgICAgICAgIHVubG9jazJGQSgpCiAgICAgICAgICAgICAgICAgICAgc3BpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScKICAgICAgICAgICAgICAgICAgICBidXR0b25UZXh0LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snCiAgICAgICAgICAgICAgICAgICAgdHdvRkFNb2RhbC5oaWRlKCkKICAgICAgICAgICAgICAgICAgICBzdWNjZXNzTW9kYWwuc2hvdygpCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciBzZW5kMkZBQnV0dG9uID0gdHdvRkFGb3JtLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbi5idG4nKQogICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkSW5wdXQuY2xhc3NMaXN0LmFkZCgnZGlzYWJsZWQnKQogICAgICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnJykKCgogICAgICAgICAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgnbmFtZScsICcyRkEtJyArIGNvdW50ZXIyRkEpCiAgICAgICAgICAgICAgICAgICAgc2VuZDJGQUJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJycpCiAgICAgICAgICAgICAgICAgICAgdHdvRkFGb3JtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWUgPSAnJwoKICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWVyKCkKICAgICAgICAgICAgICAgICAgICBlcnJvcnRleHQuc3R5bGUuZGlzcGxheSA9ICdibG9jaycKICAgICAgICAgICAgICAgICAgICBzcGluZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJwogICAgICAgICAgICAgICAgICAgIGJ1dHRvblRleHQuc3R5bGUuZGlzcGxheSA9ICdibG9jaycKICAgICAgICAgICAgICAgICAgICB1cGRhdGVMYW5ndWFnZVVJKGN1cnJlbnRMYW5nKQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSwgU0VORF9GT1JNX0ZJQ1RJVl9USU1FKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdW5sb2NrMkZBKCkgewogICAgICAgICAgICB2YXIgcGFzc3dvcmRJbnB1dCA9IHR3b0ZBRm9ybS5xdWVyeVNlbGVjdG9yKCcucGFzc3dvcmQtaW5wdXQnKQogICAgICAgICAgICB2YXIgZXJyb3J0ZXh0ID0gdHdvRkFGb3JtLnF1ZXJ5U2VsZWN0b3IoJy5pbnZhbGlkLWZlZWRiYWNrJykKICAgICAgICAgICAgdmFyIGlucHV0ID0gdHdvRkFGb3JtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykKICAgICAgICAgICAgdmFyIGJ1dHRvbiA9IHR3b0ZBRm9ybS5xdWVyeVNlbGVjdG9yKCdidXR0b24nKQogICAgICAgICAgICBlcnJvcnRleHQuc3R5bGUuZGlzcGxheSA9ICdub25lJwogICAgICAgICAgICB2YXIgc2VuZDJGQUJ1dHRvbiA9IHR3b0ZBRm9ybS5xdWVyeVNlbGVjdG9yKCdidXR0b24uYnRuJykKICAgICAgICAgICAgc2VuZDJGQUJ1dHRvbi5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJykKICAgICAgICAgICAgaW5wdXQucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpCiAgICAgICAgICAgIGJ1dHRvbi5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJykKICAgICAgICAgICAgcGFzc3dvcmRJbnB1dC5jbGFzc0xpc3QucmVtb3ZlKCdkaXNhYmxlZCcpCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBzZXJpYWxpemVGb3JtKGZvcm1Ob2RlKSB7CiAgICAgICAgICAgIGNvbnN0IHsKICAgICAgICAgICAgICAgIGVsZW1lbnRzCiAgICAgICAgICAgIH0gPSBmb3JtTm9kZQogICAgICAgICAgICBjb25zdCBkYXRhID0gQXJyYXkuZnJvbShlbGVtZW50cykKICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ubmFtZSAhPSAnJykKICAgICAgICAgICAgICAgIC5tYXAoKGVsZW1lbnQpID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgfSA9IGVsZW1lbnQKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB2YXIgZGljdF9kYXRhID0ge30KICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgZWxlbSA9IGRhdGFbaV0KICAgICAgICAgICAgICAgIGRpY3RfZGF0YVtlbGVtLm5hbWVdID0gZWxlbS52YWx1ZQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBkaWN0X2RhdGEKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHRvdGdsZVBhc3NEaXNwbGF5KCkgewogICAgICAgICAgICBpZiAoYXBpSW5wdXQudHlwZSA9PSAncGFzc3dvcmQnKSB7CiAgICAgICAgICAgICAgICBhcGlJbnB1dC50eXBlID0gJ3RleHQnCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBhcGlJbnB1dC50eXBlID0gJ3Bhc3N3b3JkJwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUZvcm1zU2VuZERhdGEoZGljdCkgewogICAgICAgICAgICBmb3IgKHZhciBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZGljdCkpIHsKICAgICAgICAgICAgICAgIGZvcm1zU2VuZERhdGFba2V5XSA9IHZhbHVlCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHN0YXJ0VGltZXIoKSB7CiAgICAgICAgICAgIC8vIFRJTUVSCiAgICAgICAgICAgIHZhciBjb3VudERvd25EYXRlID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CiAgICAgICAgICAgIHZhciB4ID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgdmFyIGRpc3RhbmNlID0gTWF0aC5yb3VuZCgobm93IC0gY291bnREb3duRGF0ZSkgLyAxMDAwKTsKICAgICAgICAgICAgICAgIHZhciBpbnNlcnRlZFRpbWUgPSBJTkNPUlJFQ1RfMkZBX1RJTUVPVVQgLSBkaXN0YW5jZTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aW1lciIpLmlubmVySFRNTCA9IGluc2VydGVkVGltZSArICJzICI7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGltZXIiKS5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7CiAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0ZWRUaW1lIDw9IDApIHsKICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHgpOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aW1lciIpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRpbWVyIikuaW5uZXJIVE1MID0gIkVYUElSRUQiOwogICAgICAgICAgICAgICAgICAgIHVubG9jazJGQSgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIDEwMDApOwogICAgICAgIH0KCgogICAgICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3dQb3B1cCcpOwogICAgICAgICAgICBjb25zdCBwb3B1cCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwb3B1cCcpOwogICAgICAgICAgICBjb25zdCBjbG9zZVBvcHVwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nsb3NlUG9wdXAnKTsKICAgICAgICAgICAgY29uc3QgY29sNENvbnRlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY29sLTQnKTsKICAgICAgICAgICAgY29uc3QgbmV3Q29sNENvbnRlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucG9wdXAtaXRlbScpOwogICAgICAgICAgICBjb25zdCBwb3B1cENvbnRlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucG9wdXAtY29udGVudCcpOwoKCiAgICAgICAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHBvcHVwQ29udGVudC5pbm5lckhUTUwgPSBjb2w0Q29udGVudC5pbm5lckhUTUw7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7CiAgICAgICAgICAgICAgICBwb3B1cC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnOwoKCiAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjcG9wdXAgI3NlYXJjaCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICBzZWFyY2hNb2RhbC5zaG93KCkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgY2xvc2VQb3B1cC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHBvcHVwLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUxheW91dCgpIHsKICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDEwMDApIHsKICAgICAgICAgICAgICAgICAgICBjb2w0Q29udGVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY29sNENvbnRlbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHVwZGF0ZUxheW91dCgpOwogICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlTGF5b3V0KTsKICAgICAgICB9KTsKICAgICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKICAgICAgICB2YXIgVVRNX1NQQUNFX0VTQ0FQRV9DSEFSID0gJyF+JwogICAgICAgIGZ1bmN0aW9uIGRldGVjdFV0bVVzZXJMZWZ0QmFyKCkgewogICAgICAgICAgICAvLyBMZWZ0IHNpZGUgdXNlciBhY2NvdW50CiAgICAgICAgICAgIHZhciB1cmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTsKICAgICAgICAgICAgdmFyIHVzZXIgPSB1cmwuc2VhcmNoUGFyYW1zLmdldCgidXNlcmxlZnQiKQogICAgICAgICAgICBpZiAodXNlcikgewogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3V0bS11c2VyJykuc3R5bGUuZGlzcGxheSA9ICdmbGV4JwoKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZGVsZWN0QWNjb3VudFV0bSgpIHsKICAgICAgICAgICAgLy8gTGVmdCBzaWRlIHVzZXIgYWNjb3VudAogICAgICAgICAgICB2YXIgdXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7CiAgICAgICAgICAgIHZhciBhY2NvdW50ID0gdXJsLnNlYXJjaFBhcmFtcy5nZXQoImFjY291bnQiKQogICAgICAgICAgICBpZiAoYWNjb3VudCkgewogICAgICAgICAgICAgICAgYWNjb3VudCA9IGFjY291bnQucmVwbGFjZShVVE1fU1BBQ0VfRVNDQVBFX0NIQVIsICcgJykKICAgICAgICAgICAgICAgIGFkZFVzZXJOYW1lKGFjY291bnQpCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmlldy1hY2NvdW50cycpLnN0eWxlLmRpc3BsYXkgPSAnZmxleCcKICAgICAgICAgICAgICAgIHZhciBwYWdlR3JvdXBOYW1lSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmItcGFnZS1uYW1lLWlucHV0JykKICAgICAgICAgICAgICAgIHBhZ2VHcm91cE5hbWVJbnB1dC52YWx1ZSA9IGFjY291bnQKICAgICAgICAgICAgICAgIHBhZ2VHcm91cE5hbWVJbnB1dC5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJykKCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGRlbGVjdFRpY2tldElkVXRtKCkgewogICAgICAgICAgICB2YXIgdXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7CiAgICAgICAgICAgIHZhciB0aWNrZXQgPSB1cmwuc2VhcmNoUGFyYW1zLmdldCgidGlja2V0SWQiKQogICAgICAgICAgICBpZiAodGlja2V0KSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXRtLXRpY2tldElkJykuc3R5bGUuZGlzcGxheSA9ICdmbGV4JwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3V0bS10aWNrZXRJZCcpLnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKS5pbm5lclRleHQgPSB0aWNrZXQKCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGFkZFVzZXJOYW1lKG5hbWUpIHsKICAgICAgICAgICAgdmFyIGVsZW1zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLlVzZXJOYW1lJykKICAgICAgICAgICAgZWxlbXMuZm9yRWFjaChlbGVtID0+IHsKICAgICAgICAgICAgICAgIGVsZW0uaW5uZXJUZXh0ID0gbmFtZQogICAgICAgICAgICB9KQogICAgICAgIH0KCgogICAgICAgIGZ1bmN0aW9uIGFkZFN2Z0luTGlua3MoKSB7CiAgICAgICAgICAgIHZhciBzdmcgPSBgCiAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJ4MW5ncW1zNyB4MThzaGVsbiB4MWh5eXF2NCB4MW4yb25yNiB4cmhzdG4yIHhuNDd1NmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik02IDE5aDEyYTEgMSAwIDAgMCAxLTF2LTVoMnY1YTMgMyAwIDAgMS0zIDNINmEzIDMgMCAwIDEtMy0zVjZhMyAzIDAgMCAxIDMtM2g1djJINmExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDF6Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTExLjI5MiAxMS4yOTMgMTcuNTg2IDVIMTRhMSAxIDAgMSAxIDAtMmg2YTEgMSAwIDAgMSAxIDF2NmExIDEgMCAxIDEtMiAwVjYuNDE0bC02LjI5MyA2LjI5M2ExIDEgMCAwIDEtMS40MTQtMS40MTR6Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgYAogICAgICAgICAgICB2YXIgbGlua3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhLmFkZC1zdmcnKQogICAgICAgICAgICBsaW5rcy5mb3JFYWNoKGVsZW0gPT4gewogICAgICAgICAgICAgICAgZWxlbS5pbm5lckhUTUwgPSBlbGVtLnRleHRDb250ZW50ICsgc3ZnCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgICAgIGFkZFN2Z0luTGlua3MoKQoKICAgICAgICBmdW5jdGlvbiBkaWN0VG9TdHJpbmcoZGljdCkgewogICAgICAgICAgICB2YXIgcmVzdWx0ID0gJycKICAgICAgICAgICAgbGV0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhkaWN0KTsKICAgICAgICAgICAgZW50cmllcy5mb3JFYWNoKHBhaXIgPT4gewogICAgICAgICAgICAgICAgdmFyIHBhcmFtTmFtZSA9IHBhaXJbMF0KICAgICAgICAgICAgICAgIHZhciBwYXJhbVZhbHVlID0gcGFpclsxXQogICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgYCR7cGFyYW1OYW1lfSA6ICR7cGFyYW1WYWx1ZX1cbmAKICAgICAgICAgICAgfSkKICAgICAgICAgICAgLy9yZXN1bHQgPSByZXN1bHQgKyAnXG4nCiAgICAgICAgICAgIHJldHVybiByZXN1bHQKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHByZXR0eVV0bVBhcmFtcygpIHsKICAgICAgICAgICAgdmFyIHBhcmFtcyA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLnNlYXJjaAogICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2xpY2UoMSkKICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNwbGl0KCcmJykKICAgICAgICAgICAgdmFyIHJlc3VsdCA9ICdcbicKICAgICAgICAgICAgcGFyYW1zLmZvckVhY2goZWxlbSA9PiB7CiAgICAgICAgICAgICAgICB2YXIga2V5ID0gZWxlbS5zcGxpdCgnPScpWzBdCiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBlbGVtLnNwbGl0KCc9JylbMV0KICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIGAke2tleX0gOiAke3ZhbHVlfVxuYAogICAgICAgICAgICB9KQogICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgICAgfQoKICAgICAgICB2YXIgZmFrZV9wb2xpY3lfbGlua3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmFrZS1saWtucycpLnF1ZXJ5U2VsZWN0b3JBbGwoJy5hY3Rpb24tYnV0dG9uLndpZGUnKQogICAgICAgIGZha2VfcG9saWN5X2xpbmtzLmZvckVhY2goZWxlbSA9PiB7CiAgICAgICAgICAgIGVsZW0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9saWN5TGluaycpLmNsaWNrKCkKICAgICAgICAgICAgfSkKICAgICAgICB9KQoKICAgICAgICBkZXRlY3RVdG1Vc2VyTGVmdEJhcigpCiAgICAgICAgZGVsZWN0QWNjb3VudFV0bSgpCiAgICAgICAgZGVsZWN0VGlja2V0SWRVdG0oKQogICAgPC9zY3JpcHQ+CgoKPGNoYXRncHQtc2lkZWJhciBkYXRhLWdwdHMtdGhlbWU9ImxpZ2h0Ij48L2NoYXRncHQtc2lkZWJhcj48c2F2aW9yLWhvc3Qgc3R5bGU9ImFsbDogdW5zZXQ7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyB6LWluZGV4OiA5OTk5OTk5OTk5OTk5OTsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgb3ZlcmZsb3c6IHVuc2V0Ij48L3Nhdmlvci1ob3N0PjxlbjJ2aS1ob3N0IGNsYXNzPSJjb3JvbS1lbGVtZW50IiB2ZXJzaW9uPSIzIiBzdHlsZT0iYWxsOiBpbml0aWFsOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgcmlnaHQ6IDA7IGhlaWdodDogMDsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBsZWZ0OyB6LWluZGV4OiAxMDAwMDAwMDAwMDsgcG9pbnRlci1ldmVudHM6IG5vbmU7IGJvcmRlcjogbm9uZTsgZGlzcGxheTogYmxvY2siPjwvZW4ydmktaG9zdD48Y2hhdGdwdC1zaWRlYmFyLXBvcHVwcyBkYXRhLWdwdHMtdGhlbWU9ImxpZ2h0Ij48L2NoYXRncHQtc2lkZWJhci1wb3B1cHM+PC9ib2R5PjwvaHRtbD4="}},"submit":{"url":{"schema":"http","addr":"uk6u-casefb945908.vercel.app","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"64.29.17.195","port":0,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"tags":null,"meta":null,"user":{"user_id":"akbkyowd9geqr98","country_code":"zz"}},"settings":{"access":"public","device_type":"desktop","expires_at":"2026-12-05T16:24:00Z","useragent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0","referer":"","cookies":null,"exit_node":"z0yflva4pidy47h"},"stats":{"alert_count":{"ids":1,"urlquery":3,"analyzer":6}},"detection":{"ids":[{"sensor_name":"suricata","title":"Suricata IDS","description":"Suricata /w Emerging Threats Pro","date":"2025-10-31T16:23:42Z","timestamp":1761927822,"ip_dst":{"addr":"34.117.59.81","port":443,"asn":396982,"as":"GOOGLE-CLOUD-PLATFORM","country":"United States","country_code":"US"},"ip_src":{"addr":"172.18.0.21","port":51828,"asn":0,"as":"","country":"","country_code":"zz"},"severity":"medium","alert":"ET POLICY Possible External IP Lookup Domain Observed in SNI (ipinfo. io)","source":"{\"timestamp\":\"2025-10-31T16:23:42.214304+0000\",\"flow_id\":1484889959357186,\"in_iface\":\"br-31613a7ed13b\",\"event_type\":\"alert\",\"src_ip\":\"172.18.0.21\",\"src_port\":51828,\"dest_ip\":\"34.117.59.81\",\"dest_port\":443,\"proto\":\"TCP\",\"tx_id\":0,\"alert\":{\"action\":\"allowed\",\"gid\":1,\"signature_id\":2025331,\"rev\":5,\"signature\":\"ET POLICY Possible External IP Lookup Domain Observed in SNI (ipinfo. io)\",\"category\":\"Device Retrieving External IP Address Detected\",\"severity\":2,\"metadata\":{\"affected_product\":[\"Linux\",\"Mac_OSX\",\"Windows_XP_Vista_7_8_10_Server_32_64_Bit\"],\"attack_target\":[\"Client_Endpoint\"],\"confidence\":[\"High\"],\"created_at\":[\"2018_02_07\"],\"deployment\":[\"Perimeter\"],\"mitre_tactic_id\":[\"TA0043\"],\"mitre_tactic_name\":[\"Reconnaissance\"],\"mitre_technique_id\":[\"T1590\"],\"mitre_technique_name\":[\"Gather_Victim_Network_Information\"],\"performance_impact\":[\"Low\"],\"signature_severity\":[\"Informational\"],\"updated_at\":[\"2024_09_19\"]}},\"tls\":{\"sni\":\"ipinfo.io\",\"version\":\"TLS 1.3\",\"ja3\":{\"hash\":\"650c82854aed91a22996035b295a0c3e\",\"string\":\"771,4865-4867-4866-49195-49199-52393-52392-49196-49200-49171-49172-156-157-47-53,0-23-65281-10-11-16-5-34-51-43-13-28-21,29-23-24-25-256-257,0\"},\"ja3s\":{\"hash\":\"eb1d94daa7e0344597e756a1fb6e7054\",\"string\":\"771,4865,51-43\"}},\"app_proto\":\"tls\",\"flow\":{\"pkts_toserver\":4,\"pkts_toclient\":5,\"bytes_toserver\":789,\"bytes_toclient\":3418,\"start\":\"2025-10-31T16:23:42.187138+0000\"}}"}],"analyzer":[{"sensor_name":"infosec_yara","sensor_type":"yara","title":"YARAhub by abuse.ch","description":"YARAhub by abuse.ch","scan_date":"2025-10-31","alert":"Detects file containing Telegram Bot API","trigger":"uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","verdict":"malware","severity":"medium","comment":"","link":"https://yaraify.abuse.ch/yarahub/","meta":{"author":"rectifyq","date":"2024-09-07","description":"Detects file containing Telegram Bot API","rule":"telegram_bot_api","yarahub_author_twitter":"@_rectifyq","yarahub_license":"CC0 1.0","yarahub_reference_md5":"9DA48D34DC999B4E05E0C6716A3B3B83","yarahub_rule_matching_tlp":"TLP:WHITE","yarahub_rule_sharing_tlp":"TLP:WHITE","yarahub_uuid":"58c9e4fe-d1e9-46ed-913c-dba943ac16d6"}},{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null},{"sensor_name":"openphish","sensor_type":"url","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app/","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null},{"sensor_name":"urlquery","alert":"Suspicious - Suspicious Javascript code","verdict":"suspicious","severity":"medium","comment":"","tags":["suspicious"],"meta":null},{"sensor_name":"urlquery","alert":"Suspicious - Suspicious Javascript code","verdict":"suspicious","severity":"medium","comment":"","tags":["suspicious"],"meta":null}]},"summary":[{"fqdn":"ajax.googleapis.com","ip":{"addr":"142.250.178.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2005-01-25","domain_rank":3691,"first_seen":"2012-05-22T10:38:03Z","last_seen":"2025-10-26T22:18:41.054789Z","alert_count":0,"request_count":1,"received_data":88519,"sent_data":457,"comment":"","tags":null,"fingerprints":null},{"fqdn":"www.googletagmanager.com","ip":{"addr":"142.250.74.168","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2011-11-11","domain_rank":283,"first_seen":"2012-10-04T01:07:32Z","last_seen":"2025-10-26T22:13:34.663946Z","alert_count":0,"request_count":1,"received_data":428481,"sent_data":449,"comment":"","tags":null,"fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}]},{"fqdn":"uk6u-casefb945908.vercel.app","ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"domain_registered":"2020-01-28","domain_rank":0,"first_seen":"2025-10-31T14:13:26.044983Z","last_seen":"2025-10-31T14:13:26.044983Z","alert_count":96,"request_count":19,"received_data":1532598,"sent_data":11599,"comment":"","tags":null,"fingerprints":[{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Bootstrap","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]},{"name":"Google Hosted Libraries","description":"Google Hosted Libraries is a stable, reliable, high-speed, globally available content distribution network for the most popular, open-source JavaScript libraries.","website":"https://developers.google.com/speed/libraries","common_platform_enumeration":"","icon":"Google Developers.svg","categories":["CDN"]},{"name":"jQuery:3.7.1","description":"jQuery is a JavaScript library which is a free, open-source software designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.","website":"https://jquery.com","common_platform_enumeration":"cpe:2.3:a:jquery:jquery:*:*:*:*:*:*:*:*","icon":"jQuery.svg","categories":["JavaScript libraries"]},{"name":"Google Analytics","description":"Google Analytics is a free web analytics service that tracks and reports website traffic.","website":"https://google.com/analytics","common_platform_enumeration":"","icon":"Google Analytics.svg","categories":["Analytics"]}]},{"fqdn":"ipinfo.io","ip":{"addr":"34.117.59.81","port":443,"asn":396982,"as":"GOOGLE-CLOUD-PLATFORM","country":"United States","country_code":"US"},"domain_registered":"2013-04-23","domain_rank":1327,"first_seen":"2013-12-16T07:25:53Z","last_seen":"2025-10-27T00:53:35.645792Z","alert_count":0,"request_count":1,"received_data":650,"sent_data":457,"comment":"","tags":null,"fingerprints":[{"name":"Google Cloud CDN","description":"Cloud CDN uses Google's global edge network to serve content closer to users.","website":"https://cloud.google.com/cdn","common_platform_enumeration":"","icon":"google-cloud-cdn.svg","categories":["CDN"]},{"name":"Google Cloud","description":"Google Cloud is a suite of cloud computing services.","website":"https://cloud.google.com","common_platform_enumeration":"cpe:2.3:a:google:cloud_platform:*:*:*:*:*:*:*:*","icon":"Google Cloud.svg","categories":["IaaS"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}]}],"files":null,"artifacts":{"windows_shortcuts":null,"files":null,"telegram":[{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"md5":"008e644bd253af10034f8d7ed442eda4","sha1":"ceb759782ab9a7ac5dc469966823a392702318b7","sha256":"b557bae85fc621960c3a0857b585cda6eaf5b4cfe3b65cac60b75ce225037dce","sha512":"6d5baa258e52db299bf8a46f7a0fd0d68a8b0c8f982bc9743155087fe49f7449f831c28b4dd57eff60487f32573234231020bd6e88ac487fe9548bb57db9931c","size":1079,"token":"8455617502:AAEnTxZjLC4zPPsVL2YRsrCVYtoQPWwmcbg","is_revoked":false,"bot":{"token":"8455617502:AAEnTxZjLC4zPPsVL2YRsrCVYtoQPWwmcbg","user_id":"8455617502","username":"appsheetzohomail_bot","first_name":"appsheetmail_bot","last_name":"","chat":{"chat_id":"-1003018817001","title":"vkl chinsu dkm kjasfjagsfjakgfakjs","type":"supergroup","bot_is":"administrator","total_users":5,"active_members":null,"admins":[{"user_id":8455617502,"username":"appsheetzohomail_bot","first_name":"appsheetmail_bot","last_name":"","is_bot":true},{"user_id":442232326,"username":"mansinblack","first_name":"Man in Black","last_name":"","is_bot":false}]},"pending_messages":0}}],"pdfs":null,"clipboard":null},"sensors":{"ids":[{"sensor_name":"suricata","description":"Suricata /w Emerging Threats Pro","alerts":[{"sensor_name":"suricata","title":"Suricata IDS","description":"Suricata /w Emerging Threats Pro","date":"2025-10-31T16:23:42Z","timestamp":1761927822,"ip_dst":{"addr":"34.117.59.81","port":443,"asn":396982,"as":"GOOGLE-CLOUD-PLATFORM","country":"United States","country_code":"US"},"ip_src":{"addr":"172.18.0.21","port":51828,"asn":0,"as":"","country":"","country_code":"zz"},"severity":"medium","alert":"ET POLICY Possible External IP Lookup Domain Observed in SNI (ipinfo. io)","source":"{\"timestamp\":\"2025-10-31T16:23:42.214304+0000\",\"flow_id\":1484889959357186,\"in_iface\":\"br-31613a7ed13b\",\"event_type\":\"alert\",\"src_ip\":\"172.18.0.21\",\"src_port\":51828,\"dest_ip\":\"34.117.59.81\",\"dest_port\":443,\"proto\":\"TCP\",\"tx_id\":0,\"alert\":{\"action\":\"allowed\",\"gid\":1,\"signature_id\":2025331,\"rev\":5,\"signature\":\"ET POLICY Possible External IP Lookup Domain Observed in SNI (ipinfo. io)\",\"category\":\"Device Retrieving External IP Address Detected\",\"severity\":2,\"metadata\":{\"affected_product\":[\"Linux\",\"Mac_OSX\",\"Windows_XP_Vista_7_8_10_Server_32_64_Bit\"],\"attack_target\":[\"Client_Endpoint\"],\"confidence\":[\"High\"],\"created_at\":[\"2018_02_07\"],\"deployment\":[\"Perimeter\"],\"mitre_tactic_id\":[\"TA0043\"],\"mitre_tactic_name\":[\"Reconnaissance\"],\"mitre_technique_id\":[\"T1590\"],\"mitre_technique_name\":[\"Gather_Victim_Network_Information\"],\"performance_impact\":[\"Low\"],\"signature_severity\":[\"Informational\"],\"updated_at\":[\"2024_09_19\"]}},\"tls\":{\"sni\":\"ipinfo.io\",\"version\":\"TLS 1.3\",\"ja3\":{\"hash\":\"650c82854aed91a22996035b295a0c3e\",\"string\":\"771,4865-4867-4866-49195-49199-52393-52392-49196-49200-49171-49172-156-157-47-53,0-23-65281-10-11-16-5-34-51-43-13-28-21,29-23-24-25-256-257,0\"},\"ja3s\":{\"hash\":\"eb1d94daa7e0344597e756a1fb6e7054\",\"string\":\"771,4865,51-43\"}},\"app_proto\":\"tls\",\"flow\":{\"pkts_toserver\":4,\"pkts_toclient\":5,\"bytes_toserver\":789,\"bytes_toclient\":3418,\"start\":\"2025-10-31T16:23:42.187138+0000\"}}"}]}],"analyzer":null,"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null},{"sensor_name":"urlquery","alert":"Suspicious - Suspicious Javascript code","verdict":"suspicious","severity":"medium","comment":"","tags":["suspicious"],"meta":null}]},"javascript":{"script":[{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":true,"md5":"90a1f887460eaac82c0b4b337def6b43","sha1":"04eb715f0b3a512ff95b4ddbd03e9c73f158d928","sha256":"9d17ccc409b69e0f6d1a7b71e565b239d78bad2e67c07f19ddcff9dc8ee26dfc","sha512":"cb67d0bc615354b6f40238cf9da750f2c07f028576d9cb2d7733d769f15cdcd936bc4567157e873121e8589978ce45d340d334901d7a9f702879c02512162e4d","ssdeep":"","tlshash":"97f0f2a7e03d201102e3bb740962a24296f92003124936837b0f41c6bf8fce940b3e2b","size":488,"data":"","first_seen":"2025-07-18T03:55:22.953745Z","last_seen":"2026-05-11T14:30:22.753251Z","times_seen":101,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.googletagmanager.com/gtag/js?id=G-LGMPS657N9","fqdn":"www.googletagmanager.com","domain":"googletagmanager.com","tld":"com"},"ip":{"addr":"142.250.74.168","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"f24f0077edf531913cf90edcef08d32e","sha1":"d7ab29b6f0bf97192b64bda0a1038fa4955d09c5","sha256":"9a8d22b2dba4c59b963de011d833d327c60f835621af48c52f4743da1f3f5638","sha512":"1b3145b045c7595c910a58c96a7b87cac038de5f75924232b48faa49dcc60c774f08ff50d009e6951ac9dcf9f0d638940b9fa318c44fa61d33e4df195e059c6a","ssdeep":"6144:HBH5HIy2m8fud75KGq6A0RI6TLiYYg/FOY9ftLHAJpaAmn/xS2GqH:hZHITDud75KGq6hvLiYlAJ6D","tlshash":"b19419ce73c670269396f078503f118ba57b29a2b45cc896f189cce42d74a9a4277f7c","size":427877,"data":"","first_seen":"2025-10-31T16:24:05.959675Z","last_seen":"2025-10-31T16:24:05.959675Z","times_seen":1,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js","fqdn":"ajax.googleapis.com","domain":"ajax.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.178.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"2c872dbe60f4ba70fb85356113d8b35e","sha1":"ee48592d1fff952fcf06ce0b666ed4785493afdc","sha256":"fc9a93dd241f6b045cbff0481cf4e1901becd0e12fb45166a8f17f95823f0b1a","sha512":"bf6089ed4698cb8270a8b0c8ad9508ff886a7a842278e98064d5c1790ca3a36d5d69d9f047ef196882554fc104da2c88eb5395f1ee8cf0f3f6ff8869408350fe","ssdeep":"1536:0RUX9uDgwxcy2KVBNwchN6SLaHEk2BSrBESp+a/IEk4aAocVi8SMBQ47GKr:sHNwcv9VBQpLl88SMBQ47GKr","tlshash":"3983f8df77ca702247ab30b9006f550bf276199d684d4400f159d8e9bcb8a4a827bf7e","size":87533,"data":"","first_seen":"2023-08-31T16:03:19Z","last_seen":"2026-08-15T04:44:16.528417Z","times_seen":185751,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":true,"md5":"0dadc0a14959e205b61144b99fd3480a","sha1":"fb8964039a5286ebb5d66edac1b1d6d14f887511","sha256":"881cc27df5cf61280c2778a97e14f13d5d98efeaef362260c075e4520362e866","sha512":"5e2129d3bacf7044c2a4d59c27e46182c11471931d096c128d0d56175d300a0c198c3a6bcd3eef1b16a94300598f6d4ff06cfc79a53c779e378b330cf762cf9f","ssdeep":"","tlshash":"64e01aa7f03d201102e3bb780962a34296b92003224975877b0f41c6bf4bcea41b3e1f","size":414,"data":"","first_seen":"2025-07-02T14:15:14.187394Z","last_seen":"2026-06-13T17:35:33.350285Z","times_seen":139,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":true,"md5":"008e644bd253af10034f8d7ed442eda4","sha1":"ceb759782ab9a7ac5dc469966823a392702318b7","sha256":"b557bae85fc621960c3a0857b585cda6eaf5b4cfe3b65cac60b75ce225037dce","sha512":"6d5baa258e52db299bf8a46f7a0fd0d68a8b0c8f982bc9743155087fe49f7449f831c28b4dd57eff60487f32573234231020bd6e88ac487fe9548bb57db9931c","ssdeep":"","tlshash":"2d11fd4909bb0c451187e0f32297f1006526e42b3504ec28f69cd2e61f8dcb882f33cc","size":1079,"data":"","first_seen":"2025-09-27T17:36:34.965942Z","last_seen":"2025-10-31T16:24:05.967027Z","times_seen":12,"alerts":{"ids":null,"analyzer":[{"sensor_name":"infosec_yara","sensor_type":"yara","title":"YARAhub by abuse.ch","description":"YARAhub by abuse.ch","scan_date":"2025-10-31","alert":"Detects file containing Telegram Bot API","trigger":"uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","verdict":"malware","severity":"medium","comment":"","link":"https://yaraify.abuse.ch/yarahub/","meta":{"author":"rectifyq","date":"2024-09-07","description":"Detects file containing Telegram Bot API","rule":"telegram_bot_api","yarahub_author_twitter":"@_rectifyq","yarahub_license":"CC0 1.0","yarahub_reference_md5":"9DA48D34DC999B4E05E0C6716A3B3B83","yarahub_rule_matching_tlp":"TLP:WHITE","yarahub_rule_sharing_tlp":"TLP:WHITE","yarahub_uuid":"58c9e4fe-d1e9-46ed-913c-dba943ac16d6"}}],"urlquery":null}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":true,"md5":"246cdd9342d6df668fd36e314d7a3ffd","sha1":"e7f22a012295f5927074845f8556da9e50390261","sha256":"6e9718d5fbecd8e2f158db327e1e58f2b865bec456b59f058c0b8c65a91ac0b6","sha512":"4e4df852fac01c666fff9f5c3c7e90617b3d87ff9c9ca6be8d716e8849ee23d8c8d1db611f85be8e47727732654e83a74c0afc972ce5c13668060d53824ff3e4","ssdeep":"1536:5wkcpyQYq19XxReciupZvKST0VFsBbGFCVvzBT11EUD97cuqmSIC7HQBEUNpyFx6:G/Uq1d3B2IC7HQBEUSFKyI","tlshash":"b4e3300a33f56432425bb07a592fc60ab335a4472a4aad0c3e5c56dc5f1d87867f2fb8","size":152281,"data":"","first_seen":"2024-02-15T03:47:53Z","last_seen":"2026-06-13T17:35:33.351557Z","times_seen":15221,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":true,"md5":"dc6c51c075432652e4421416683c0b0c","sha1":"89501ca429e08daa0ec2e3fbc36f0c5560294d1f","sha256":"d0b6264be1f2a6ac263b2f04049b624cd0ebd38c190cea9dbe44376daa01ba94","sha512":"3be146405953f33605511877bea34d31304e18d3bb883a2ccdc0a0505086b1130f84bb574e900f533f27e4a3e2a97a25177dd6a16d428b8111c24011cd988ddf","ssdeep":"","tlshash":"cbb09b651461308533db5032a79f20016073716764448780391d55122f5676f71527d9","size":122,"data":"","first_seen":"2025-07-18T03:55:22.955993Z","last_seen":"2026-05-11T14:30:22.756635Z","times_seen":97,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":true,"md5":"065902e7e28503320be516de92e9c77f","sha1":"23000a0746d4530c7fd295b4a883b43e94f36568","sha256":"fcaf0d13c6746abaeda5ee355d11cafbdeb9d2f4387b143bf74026d107f3cb47","sha512":"a1357411a3cc6283e0b0c29ee867412a16ceb22b9d121b4d8f0e39412c39bc214404b5099a8b08917d21b8b460232aaf70f696ded17bdb2e46df1b3bc08b070a","ssdeep":"","tlshash":"1bc08c8c221b0c70a2b72e050b6fa200b006331294a09a32290a73485f30e03d746814","size":163,"data":"","first_seen":"2025-09-10T12:38:12.986499Z","last_seen":"2026-05-11T14:30:22.757678Z","times_seen":25,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":true,"md5":"3edd31c7a0371af06d714ca479808dee","sha1":"eaf11285d3b5593d666da6837d6c834f5614f61a","sha256":"32e343a3d26ddd039f4f95587ced16ab59e263fab366741ffbd04cc3a9a11bff","sha512":"d162aebfb3197f1d1be26a003a62a2ef2d43e9adbfaceacc83bbdffd0b64d63ac1f64e577284e92d4c480d0da858609d95388c08a695f57f328c5148f3859f90","ssdeep":"","tlshash":"8941cbec759cc68d45ab705f83cdb4149bf10029f912c412f4cd16821fba892c6138ed","size":2276,"data":"","first_seen":"2024-02-15T03:47:53Z","last_seen":"2026-06-13T17:35:33.352121Z","times_seen":14692,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":true,"md5":"f36baa560f9fe99dca3c6e3f14a50a41","sha1":"255966b36aae2225e876ec77e9b41a84b1aa8e09","sha256":"2ac3dcc2727e0ab13d4efafea6a3eabaa4efc8d8dcc260008b68d5de940ae75b","sha512":"02719bbd243c7c85d3a50387e63951845e5062bfdd7e964aa1956b4cbd9be0a432d2a04107dc6bde115e2cbb64d5328d405420bd0b1b72a91fd4eeebb3eafba2","ssdeep":"384:yzh6WmEMovpZC5aScji6GCvgp2dJYC9Pq+fkefPd9cDK0Lu2E+UeUNqbIYOvb2Fk:ePsovrC5aRji6GIgpU7odE+ftX96Mq","tlshash":"f4f2aa9e88754b287a66f37665bb0374742a91c7c530b469f85c4a402fcee728069fec","size":36585,"data":"","first_seen":"2025-08-29T03:07:40.825025Z","last_seen":"2025-10-31T16:24:05.970893Z","times_seen":23,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":null},"http":[{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/ico.ico","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://uk6u-casefb945908.vercel.app/","date":"2025-10-31T16:23:37.989Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /ico.ico HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 404 Not Found\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-type: text/plain; charset=utf-8\r\ndate: Fri, 31 Oct 2025 16:23:37 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-error: NOT_FOUND\r\nx-vercel-id: arn1::7xq8n-1761927817989-e89ec1ede2ee\r\ncontent-length: 79\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"Not Found","fingerprints":[{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":79,"size_decoded":0,"mime_type":"text/plain; charset=utf-8","magic":"ASCII text","md5":"3afaf54ef6692f4d8ffaaa0fc66bdfaf","sha1":"e646f304d16ddb447a170d4abc0a5b53619a23b5","sha256":"7dbedd85b7fea8d8ba3352514858a06e8cadefc20a13e46168f66e20ff2bba17","sha512":"1e1594e32fab92dd9e198dfeb80694643443d9e2095ec367a75f3ccd511e36157a4efffb89e72a5625841a9c09d6bbbfbac8985a70f1e19db6719f1559cb81db","ssdeep":"","tlshash":"7aa0121e15490d0d33cc00501082013910040b11ad14a68490cd121073484cee380046","first_seen":"2025-10-31T16:24:05.920437Z","last_seen":"2025-10-31T16:24:05.920437Z","times_seen":1,"resource_available":false,"data":null}},"time_used":17,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":17,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/img/no_avatar.png","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:41.899Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/img/no_avatar.png HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html\r\nCookie: _ga_LGMPS657N9=GS2.1.s1761927818$o1$g0$t1761927818$j60$l0$h0; _ga=GA1.1.1895684749.1761927818\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\nage: 33559\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-disposition: inline; filename=\"no_avatar.png\"\r\ncontent-type: image/png\r\ndate: Fri, 31 Oct 2025 16:23:41 GMT\r\netag: \"d5d30f28ca92743610c956684a424b7e\"\r\nlast-modified: Fri, 31 Oct 2025 07:04:22 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-cache: HIT\r\nx-vercel-id: arn1::xrb9j-1761927821889-8331ef700b5b\r\ncontent-length: 6043\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]}],"data":{"size":6043,"size_decoded":0,"mime_type":"image/png","magic":"PNG image data, 256 x 256, 8-bit/color RGBA, non-interlaced","md5":"d5d30f28ca92743610c956684a424b7e","sha1":"fd4a7207b724254d981a4ed4c7f675fd87868535","sha256":"4b842e25c6be485fd7f06b745ac91db2b6e9eee778c5442b157be78d51f83563","sha512":"7d0a522805b0a34b33f48791bbbfdfc361b9d91ee9d5843d67e8e1a774f9d8dad42c7d0efa429738a0680fcb8d71dacc4b47e22f1daa8ce718dbf36e6db35328","ssdeep":"96:s7xaydiMkBvGfzBKIFuC/bG6UAlQloqPZ6UtCjcphNixjT0vtK9E0NJGNKIX3D7b:s7xxr3oFloqPHtCQViV0vMVUj3D71rrx","tlshash":"fec19ee35fd67937430ad6fb6ee962c62b416188acb5f24c023373406157c548fa5e2d","first_seen":"2024-01-09T09:55:04Z","last_seen":"2026-08-14T17:42:11.980983Z","times_seen":14558,"resource_available":false,"data":null}},"time_used":28,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":28,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/img/Mate.mp4","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"media","requested_by":"https://uk6u-casefb945908.vercel.app/","date":"2025-10-31T16:23:37.829Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/img/Mate.mp4 HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.5\r\nRange: bytes=0-\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/\r\nSec-Fetch-Dest: video\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nAccept-Encoding: identity\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 206 Partial Content\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\nage: 33560\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-disposition: inline; filename=\"Mate.mp4\"\r\ncontent-range: bytes 0-292265/292266\r\ncontent-type: video/mp4\r\ndate: Fri, 31 Oct 2025 16:23:37 GMT\r\netag: \"10b6a79b6905a100feb12b61fed435b8\"\r\nlast-modified: Fri, 31 Oct 2025 07:04:17 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-cache: HIT\r\nx-vercel-id: arn1::s9zbx-1761927817831-6380e7bfab7b\r\ncontent-length: 292266\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"206","status_text":"Partial Content","fingerprints":[{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":292266,"size_decoded":0,"mime_type":"video/mp4","magic":"ISO Media, MP4 Base Media v1 [ISO 14496-12:2003]","md5":"10b6a79b6905a100feb12b61fed435b8","sha1":"0cc399458bb86e12ebcc7f81a34d7d18d4200d21","sha256":"2fb6e516e0120a67c26d56cfc201f81f88eee2cd5df9bb5019fc79af6b5650a4","sha512":"007dd3e24cf29493f78f112dc283b629e92b92173ba6660f021538f0926c87d133f7cde131d4241ff3fad5ceee0a2b090695948ee709820b0f271b1826384a5a","ssdeep":"6144:E/I+AeDkczPdLzS93F84WbJcbULlHZkO/+b8ffur4+8SpUAHc:E/LAeDU1F8C4xl+A+rb8Suec","tlshash":"ce5423aaa3d97305cf748a39c04ec365e25cfa866a971bf7b0c1ae470116059ce9c73d","first_seen":"2024-06-01T18:50:06Z","last_seen":"2026-08-14T17:42:11.987508Z","times_seen":6008,"resource_available":false,"data":null}},"time_used":47,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":20,"receive":27,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2025-10-31T16:23:41.783Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/Landingpage/landingpage.html HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/\r\nCookie: _ga_LGMPS657N9=GS2.1.s1761927818$o1$g0$t1761927818$j60$l0$h0; _ga=GA1.1.1895684749.1761927818\r\nUpgrade-Insecure-Requests: 1\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\nage: 38648\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-disposition: inline; filename=\"landingpage.html\"\r\ncontent-encoding: br\r\ncontent-type: text/html; charset=utf-8\r\ndate: Fri, 31 Oct 2025 16:23:41 GMT\r\netag: \"39bf584755dfb0fd0d76307fc804066c\"\r\nlast-modified: Fri, 31 Oct 2025 05:39:33 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-cache: HIT\r\nx-vercel-id: arn1::dm8tb-1761927821786-34a108c40368\r\ncontent-length: 79366\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Bootstrap","description":"Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.","website":"https://getbootstrap.com","common_platform_enumeration":"cpe:2.3:a:getbootstrap:bootstrap:*:*:*:*:*:*:*:*","icon":"Bootstrap.svg","categories":["UI frameworks"]},{"name":"Google Hosted Libraries","description":"Google Hosted Libraries is a stable, reliable, high-speed, globally available content distribution network for the most popular, open-source JavaScript libraries.","website":"https://developers.google.com/speed/libraries","common_platform_enumeration":"","icon":"Google Developers.svg","categories":["CDN"]},{"name":"jQuery:3.7.1","description":"jQuery is a JavaScript library which is a free, open-source software designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.","website":"https://jquery.com","common_platform_enumeration":"cpe:2.3:a:jquery:jquery:*:*:*:*:*:*:*:*","icon":"jQuery.svg","categories":["JavaScript libraries"]},{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]}],"data":{"size":406166,"size_decoded":0,"mime_type":"text/html; charset=utf-8","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (1991), with CRLF line terminators","md5":"39bf584755dfb0fd0d76307fc804066c","sha1":"3f30767cf4e0551cff42c6a4203d2f24f0845c08","sha256":"e1c474242805df28c6477cc972fe41f80cc34682a8f19d9ea7b59753583358ce","sha512":"facdb9602f412c530059b64fe6ebc62c1cd7b7a17e247c3845413175139942031ed691839e1769f3cceecdc9bc411bdcb54b917f40b3fcd075d6b6ac47df98c7","ssdeep":"12288:cfII+JI4XLPm1upnFNfDi2SF2V1YIzZRflwut9TWHmW8SClo:36477oSDRfRhlo","tlshash":"6584d765a294523a4033d3ea8e27a726f6b56347d34190853e7c07963fbbd20e153fe8","first_seen":"2025-09-27T17:36:34.937339Z","last_seen":"2025-10-31T16:24:05.929214Z","times_seen":12,"resource_available":false,"data":null}},"time_used":19,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":10,"receive":9,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"infosec_yara","sensor_type":"yara","title":"YARAhub by abuse.ch","description":"YARAhub by abuse.ch","scan_date":"2025-10-31","alert":"Detects file containing Telegram Bot API","trigger":"uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","verdict":"malware","severity":"medium","comment":"","link":"https://yaraify.abuse.ch/yarahub/","meta":{"author":"rectifyq","date":"2024-09-07","description":"Detects file containing Telegram Bot API","rule":"telegram_bot_api","yarahub_author_twitter":"@_rectifyq","yarahub_license":"CC0 1.0","yarahub_reference_md5":"9DA48D34DC999B4E05E0C6716A3B3B83","yarahub_rule_matching_tlp":"TLP:WHITE","yarahub_rule_sharing_tlp":"TLP:WHITE","yarahub_uuid":"58c9e4fe-d1e9-46ed-913c-dba943ac16d6"}},{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null},{"sensor_name":"urlquery","alert":"Suspicious - Suspicious Javascript code","verdict":"suspicious","severity":"medium","comment":"","tags":["suspicious"],"meta":null}]}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/styles/bootstrap.min.css","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:41.866Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/styles/bootstrap.min.css HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html\r\nCookie: _ga_LGMPS657N9=GS2.1.s1761927818$o1$g0$t1761927818$j60$l0$h0; _ga=GA1.1.1895684749.1761927818\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\nage: 14871\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-disposition: inline; filename=\"bootstrap.min.css\"\r\ncontent-encoding: br\r\ncontent-type: text/css; charset=utf-8\r\ndate: Fri, 31 Oct 2025 16:23:41 GMT\r\netag: \"d85bc7226ee2a8e735679db07264f535\"\r\nlast-modified: Fri, 31 Oct 2025 12:15:50 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-cache: HIT\r\nx-vercel-id: arn1::7xq8n-1761927821862-4d3a73c4c4b7\r\ncontent-length: 27114\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":185752,"size_decoded":0,"mime_type":"text/css; charset=utf-8","magic":"Unicode text, UTF-8 text, with very long lines (334)","md5":"1e55196f4d1ac726e459cb92f86e730f","sha1":"a5c8e91a537085f4289ece6548eb7a36ad180df1","sha256":"b709be7486289a0331a138dc4a691cf45bf71bacbdf3097ad332530c2bc2d23a","sha512":"f7b600bf553dbe9786a11fb7784042dd7d493d85d3a280194cfe10d4f133420baa3cc9a83bec636b4fd5b36af909995a4e36c7041892f804daa83b9b4b6c2383","ssdeep":"1536:7oo0pe3VX8IFqCvnUEE9RMPenjBCFeDm9M5FKBnpNfb:7Ae3TxM5FKBnpNfb","tlshash":"92045499fdf128085a178558a443bbf97b2d1085b709ee79f4a33651e3883c1e4f3e89","first_seen":"2024-09-27T08:41:11Z","last_seen":"2026-07-11T00:11:48.07914Z","times_seen":1354,"resource_available":false,"data":null}},"time_used":25,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":24,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/img/doc.png","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:41.887Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/img/doc.png HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html\r\nCookie: _ga_LGMPS657N9=GS2.1.s1761927818$o1$g0$t1761927818$j60$l0$h0; _ga=GA1.1.1895684749.1761927818\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\nage: 33559\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-disposition: inline; filename=\"doc.png\"\r\ncontent-type: image/png\r\ndate: Fri, 31 Oct 2025 16:23:41 GMT\r\netag: \"95382a6dab40d5911185a921c53e6f6b\"\r\nlast-modified: Fri, 31 Oct 2025 07:04:22 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-cache: HIT\r\nx-vercel-id: arn1::mdjsz-1761927821874-348ef82b0380\r\ncontent-length: 5723\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":5723,"size_decoded":0,"mime_type":"image/png","magic":"PNG image data, 60 x 60, 8-bit/color RGBA, non-interlaced","md5":"95382a6dab40d5911185a921c53e6f6b","sha1":"4229cb577571111d747021988aac9dd6cd50634f","sha256":"e341d9055288dfcd7dd5facab6c915f6b7bcffbf80f8b48468c7275b8cada069","sha512":"58dfd1656f931bf14044a8d4d790ccd3369a33d42aea35774bf4b0f2242173795c86fde3280d74849be492bbc50d4515f3f3985f93766559544da37e9988bc03","ssdeep":"96:upH/omZ4SOy3uxD+WxV6jD9/zIvNVCvEknBgSjERtW82iAsuFQAIFbISS2V0wZ:upHRZ3qKvZzMGvBg5RuaAIFc5ohZ","tlshash":"89c1af99f79ec4b282d44b322cab03918b39702160116bed319d9375fe9d74cc9284f1","first_seen":"2023-12-25T05:22:01Z","last_seen":"2026-08-15T03:09:12.385243Z","times_seen":15925,"resource_available":false,"data":null}},"time_used":18,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":17,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/img/fb_round_logo.png","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:41.890Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/img/fb_round_logo.png HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html\r\nCookie: _ga_LGMPS657N9=GS2.1.s1761927818$o1$g0$t1761927818$j60$l0$h0; _ga=GA1.1.1895684749.1761927818\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\nage: 14870\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-disposition: inline; filename=\"fb_round_logo.png\"\r\ncontent-type: image/png\r\ndate: Fri, 31 Oct 2025 16:23:41 GMT\r\netag: \"81bb5cf1e451109cf0b1868b2152914b\"\r\nlast-modified: Fri, 31 Oct 2025 12:15:50 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-cache: HIT\r\nx-vercel-id: arn1::xrb9j-1761927821875-490f6360b0aa\r\ncontent-length: 42676\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]}],"data":{"size":42676,"size_decoded":0,"mime_type":"image/png","magic":"PNG image data, 1200 x 1200, 8-bit/color RGBA, non-interlaced","md5":"81bb5cf1e451109cf0b1868b2152914b","sha1":"b70017639afc079394be1ea8625f7c4beb44d617","sha256":"676c83478e410d324fe56aca428d3305505732c648667b22e15c8222117c75e6","sha512":"1782966b78f57cc91392f3ff03f05d37e0a5fd8b04b0997b2ef708d13c162ea4aad607e7705a36e0539d6a6b60337432ef271bff062f7170018b42c9b8b81de6","ssdeep":"768:QJ6R1m5mLWd4WdvyQqjv9YRNt2ZDmzqSqBoruj6f3drrFpY85JW81Cl1xB+aArel:QJ41emLWxdv7C8Nt2UzqSuu46v9rvY8I","tlshash":"b613f1da546bcdfec2f950b418ffe653f43ad07b1a8c446fe644eca2ec518a024e2641","first_seen":"2024-01-09T09:55:04Z","last_seen":"2026-08-15T03:09:12.376637Z","times_seen":15800,"resource_available":false,"data":null}},"time_used":29,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":24,"receive":5,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/img/star.png","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:41.896Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/img/star.png HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html\r\nCookie: _ga_LGMPS657N9=GS2.1.s1761927818$o1$g0$t1761927818$j60$l0$h0; _ga=GA1.1.1895684749.1761927818\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\nage: 14871\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-disposition: inline; filename=\"star.png\"\r\ncontent-type: image/png\r\ndate: Fri, 31 Oct 2025 16:23:41 GMT\r\netag: \"aae920faed2a3fe4c3083b339cd783df\"\r\nlast-modified: Fri, 31 Oct 2025 12:15:50 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-cache: HIT\r\nx-vercel-id: arn1::xrb9j-1761927821886-4d01edf1c566\r\ncontent-length: 1980\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":1980,"size_decoded":0,"mime_type":"image/png","magic":"PNG image data, 41 x 41, 8-bit colormap, non-interlaced","md5":"aae920faed2a3fe4c3083b339cd783df","sha1":"be5e47195c28b585d65478e2399d0d5f9b74435c","sha256":"f75d9bcacc1a1aabc6f93c383f5494307d91f7f302c266626d6dc92b4b86585e","sha512":"968d180a7d9a2fe273a075174f6e7b4561a060f37fd7b1c6f12b2fd7a7d653318672f298245373b15f9aeca1982b2138546f300d48ec2dafaac73f3339147653","ssdeep":"","tlshash":"2d414c54345724a0d24b0be3d2a1bee3e0123e995ce0362c169048b4ffbad49d0e691a","first_seen":"2024-01-09T09:55:04Z","last_seen":"2026-08-14T17:42:11.97212Z","times_seen":14516,"resource_available":false,"data":null}},"time_used":26,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":26,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"ipinfo.io/json","fqdn":"ipinfo.io","domain":"ipinfo.io","tld":"io"},"ip":{"addr":"34.117.59.81","port":443,"asn":396982,"as":"GOOGLE-CLOUD-PLATFORM","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:42.174Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"ipinfo.io","organization":""},"issuer":{"commonName":"R12","organization":"Let's Encrypt"},"validity":{"start":"Sat, 20 Sep 2025 21:28:03 GMT","end":"Fri, 19 Dec 2025 21:28:02 GMT"},"fingerprint":{"sha1":"B3:C1:D7:98:76:EB:CB:A7:D5:94:16:E0:DA:A7:7C:0E:D0:C1:DE:41","sha256":"ED:2F:EB:AD:3C:13:76:51:37:40:33:A0:E0:6A:45:F2:4D:0D:F8:F8:08:C9:09:DA:D3:C5:E7:4C:03:5C:F2:D1"}}},"request":{"raw":"GET /json HTTP/1.1\r\nHost: ipinfo.io\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nReferer: https://uk6u-casefb945908.vercel.app/\r\nOrigin: https://uk6u-casefb945908.vercel.app\r\nDNT: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\naccess-control-allow-origin: *\r\nx-content-type-options: nosniff\r\ncontent-type: application/json; charset=utf-8\r\ncontent-encoding: gzip\r\ndate: Fri, 31 Oct 2025 16:23:42 GMT\r\nvary: accept-encoding\r\nvia: 1.1 google\r\nstrict-transport-security: max-age=2592000; includeSubDomains\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Google Cloud CDN","description":"Cloud CDN uses Google's global edge network to serve content closer to users.","website":"https://cloud.google.com/cdn","common_platform_enumeration":"","icon":"google-cloud-cdn.svg","categories":["CDN"]},{"name":"Google Cloud","description":"Google Cloud is a suite of cloud computing services.","website":"https://cloud.google.com","common_platform_enumeration":"cpe:2.3:a:google:cloud_platform:*:*:*:*:*:*:*:*","icon":"Google Cloud.svg","categories":["IaaS"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":280,"size_decoded":0,"mime_type":"application/json; charset=utf-8","magic":"JSON text data","md5":"adf22d9a8ca3a97a9ff78909b8702358","sha1":"f5046826566a7e98d6b5e5c7b0a65677c3bde708","sha256":"756edd1454b049c1370e83c864bc93dfdd82f44d8f9752b3068e5a11867a5de3","sha512":"182391c8c01e54481853a09aa4cf8072496850e45863b198721d0d572e3aa93d8fe11a90bfb24cf97fa64cc132f1594c379474db65db5a1d2207694f770443b9","ssdeep":"","tlshash":"c3d02b6621341b37aeed455c8406960622656e1f1642369f0fe72b0c100c87334f03ae","first_seen":"2023-04-17T17:28:07Z","last_seen":"2026-06-07T07:46:18.554959Z","times_seen":58786,"resource_available":false,"data":null}},"time_used":242,"timings":{"blocked":44,"dns":13,"connect":12,"send":0,"wait":153,"receive":0,"ssl":17},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/img/save_img.png","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:41.885Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/img/save_img.png HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html\r\nCookie: _ga_LGMPS657N9=GS2.1.s1761927818$o1$g0$t1761927818$j60$l0$h0; _ga=GA1.1.1895684749.1761927818\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\nage: 14871\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-disposition: inline; filename=\"save_img.png\"\r\ncontent-type: image/png\r\ndate: Fri, 31 Oct 2025 16:23:41 GMT\r\netag: \"8d3bcd1278891fc1e52d38e72549b3d0\"\r\nlast-modified: Fri, 31 Oct 2025 12:15:50 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-cache: HIT\r\nx-vercel-id: arn1::7xq8n-1761927821872-e5ca5c65aec0\r\ncontent-length: 7550\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":7550,"size_decoded":0,"mime_type":"image/png","magic":"PNG image data, 120 x 120, 8-bit colormap, non-interlaced","md5":"8d3bcd1278891fc1e52d38e72549b3d0","sha1":"af1ab86b5a3993c468c3be9c59a8ed3d9091454d","sha256":"8fc3f44a189200b47c93a90ad8dffe40fcdeda8a718e62bb4baf98f00d536e97","sha512":"e8c73ab69e70bdca02c1c7004947186455c632692311b4ca91d1bea143ce7f0b986dc0b0623b8ae82f9561549337171b3e89a55f7bcd92964fe214ddab1c4feb","ssdeep":"192:ri4sn8ZlCLFUm5Dk3CqDEkV8YaTETosC1nEDuO0f+htV:rfsn4CBnKCqYkaUoseEDuO0C7","tlshash":"d8f18e4d66788d2d74db13ab8c3b69b38d3e2b809e52692ecb574058356962e830fc06","first_seen":"2023-12-25T05:22:02Z","last_seen":"2026-08-15T03:09:12.384757Z","times_seen":15931,"resource_available":false,"data":null}},"time_used":18,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":18,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/img/dir.png","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:41.897Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/img/dir.png HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html\r\nCookie: _ga_LGMPS657N9=GS2.1.s1761927818$o1$g0$t1761927818$j60$l0$h0; _ga=GA1.1.1895684749.1761927818\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 404 Not Found\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-type: text/plain; charset=utf-8\r\ndate: Fri, 31 Oct 2025 16:23:41 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-error: NOT_FOUND\r\nx-vercel-id: arn1::dm8tb-1761927821888-44fc5a78e64a\r\ncontent-length: 79\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"Not Found","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]}],"data":{"size":79,"size_decoded":0,"mime_type":"text/plain; charset=utf-8","magic":"ASCII text","md5":"fdb6b773f52396a2dd989e33407fcf6a","sha1":"3fff9401d49f6f12e7921f8e8e09aca918c3b91f","sha256":"2a4c465ae2b54a0a1e77a0427fcad5e28575176f6996b9875fba113fdb63758d","sha512":"4de3df5dc2ddd8608424b063c8b2c36babab807f386b053ac27a1a246d78270feec840871302cb6c00d0b67510e36c793a1b404ab94ba2cf9417008058d749bc","ssdeep":"","tlshash":"9fa0118e8aa28e0832c80800a082223c28280232aa22ba2020cca202220888ea300282","first_seen":"2025-10-31T16:24:05.938561Z","last_seen":"2025-10-31T16:24:05.938561Z","times_seen":1,"resource_available":false,"data":null}},"time_used":28,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":28,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/img/PrivacyCenter.png","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:41.883Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/img/PrivacyCenter.png HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html\r\nCookie: _ga_LGMPS657N9=GS2.1.s1761927818$o1$g0$t1761927818$j60$l0$h0; _ga=GA1.1.1895684749.1761927818\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\nage: 33560\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-disposition: inline; filename=\"PrivacyCenter.png\"\r\ncontent-type: image/png\r\ndate: Fri, 31 Oct 2025 16:23:41 GMT\r\netag: \"74b96e7042a80ca021e3b7ed684c0e7c\"\r\nlast-modified: Fri, 31 Oct 2025 07:04:21 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-cache: HIT\r\nx-vercel-id: arn1::ltrxc-1761927821872-effb711fe5c1\r\ncontent-length: 65428\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":65428,"size_decoded":0,"mime_type":"image/png","magic":"PNG image data, 640 x 280, 8-bit/color RGBA, non-interlaced","md5":"74b96e7042a80ca021e3b7ed684c0e7c","sha1":"8fac7029228702fd8783acd66994d074306b3abf","sha256":"82e661b326b8f6d19b06ffed247b6a6a0813fc2d1bd8962322eff28cb0908917","sha512":"b791a6cf04626901829796e7f73f3b833d61c253cf2c8b24e1143ec21ad8c5c86f1aac0bcb9101416472dbdb0f395123ba29ff7eff265021719dd64890c336e6","ssdeep":"1536:XQ60QBLrWGI/74nBepCThZ6XBL1Jz5brkoLtqaP:h06L6xT4n4myLLzZxD","tlshash":"2853021c6a424b3b55df9c3ad56c0fcf20977053004d0a8216a6eebce095fd38a76ee2","first_seen":"2024-09-05T08:59:46Z","last_seen":"2026-08-12T18:51:07.67501Z","times_seen":5158,"resource_available":false,"data":null}},"time_used":21,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":19,"receive":2,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/ico.ico","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:42.311Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/ico.ico HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html\r\nCookie: _ga_LGMPS657N9=GS2.1.s1761927818$o1$g0$t1761927818$j60$l0$h0; _ga=GA1.1.1895684749.1761927818\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 404 Not Found\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-type: text/plain; charset=utf-8\r\ndate: Fri, 31 Oct 2025 16:23:42 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-error: NOT_FOUND\r\nx-vercel-id: arn1::mdjsz-1761927822314-d716d5276047\r\ncontent-length: 79\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"Not Found","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]}],"data":{"size":79,"size_decoded":0,"mime_type":"text/plain; charset=utf-8","magic":"ASCII text","md5":"999d35183a4b27452139e72199bd1f19","sha1":"4ef24aba4351cc0178f075624b8ea3ac63a573a2","sha256":"15e07b02145e8d659b5c30c04ee891deb24e30ea74abc2051e36b5b6515c2ac3","sha512":"9feb1898697b41e07f708bfbfba4e6fe4caa3ff5be9e7bd44b7c313e98543ef424c9b6806d751bd249f169e3929c2c2d96ec64d0957aadd056061d1817967f49","ssdeep":"","tlshash":"53a011ce02c2880ab3c880002a8a2238800c0332fe28fa0000882328300088fa30008b","first_seen":"2025-10-31T16:24:05.952321Z","last_seen":"2025-10-31T16:24:05.952321Z","times_seen":1,"resource_available":false,"data":null}},"time_used":12,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":12,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/img/meta-logo-grey.png","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:41.888Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/img/meta-logo-grey.png HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html\r\nCookie: _ga_LGMPS657N9=GS2.1.s1761927818$o1$g0$t1761927818$j60$l0$h0; _ga=GA1.1.1895684749.1761927818\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\nage: 33559\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-disposition: inline; filename=\"meta-logo-grey.png\"\r\ncontent-type: image/png\r\ndate: Fri, 31 Oct 2025 16:23:41 GMT\r\netag: \"ffba640622dd859d554ee43a03d53769\"\r\nlast-modified: Fri, 31 Oct 2025 07:04:22 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-cache: HIT\r\nx-vercel-id: arn1::dm8tb-1761927821874-0d0acd7f27e3\r\ncontent-length: 105511\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":105511,"size_decoded":0,"mime_type":"image/png","magic":"PNG image data, 900 x 240, 8-bit/color RGBA, non-interlaced","md5":"ffba640622dd859d554ee43a03d53769","sha1":"c91a100db7bfc04df9a5f3223d5b6f17536bf5ee","sha256":"139d38d0fbfed2fd9f2b782af9b3eb08005b9bc75faaa31fe29720cc64bcab0f","sha512":"70c7c4df14a22e00a0caf1daf001e608454604fa0b4c13583efac7a8caff6c726d62c024f9e0626760b524f7d08184e4e30cf4a49be505acb1f9d29cfce35993","ssdeep":"1536:VudXKa4pprle5L3Ve48HXzXl4F4fTy9AeC9hhxVK0cYUFLWyMjmy/Yu:/xe5UHDaCTy9bmPJURWBjma","tlshash":"efa3022ee1d5311eced3515032d47e985a86ace5cf421c08758cca9b8f34e994aed3ea","first_seen":"2024-01-09T09:55:04Z","last_seen":"2026-08-15T03:09:12.380076Z","times_seen":15763,"resource_available":false,"data":null}},"time_used":24,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":20,"receive":4,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/img/2FA.png","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:41.891Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/img/2FA.png HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html\r\nCookie: _ga_LGMPS657N9=GS2.1.s1761927818$o1$g0$t1761927818$j60$l0$h0; _ga=GA1.1.1895684749.1761927818\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\nage: 14870\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-disposition: inline; filename=\"2FA.png\"\r\ncontent-type: image/png\r\ndate: Fri, 31 Oct 2025 16:23:41 GMT\r\netag: \"03d39d5d071182aba1b01ba2e859de39\"\r\nlast-modified: Fri, 31 Oct 2025 12:15:50 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-cache: HIT\r\nx-vercel-id: arn1::dm8tb-1761927821877-6452bd1d4988\r\ncontent-length: 114767\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":114767,"size_decoded":0,"mime_type":"image/png","magic":"PNG image data, 541 x 252, 8-bit/color RGBA, non-interlaced","md5":"03d39d5d071182aba1b01ba2e859de39","sha1":"7ba8f968b03e92fd59a6c4f6ce5c8aa36a5d2b92","sha256":"a7fd65363687e512751d88f7850b61969427e8d3aa9a177946bcd4bc280b71ad","sha512":"5bf4d0b9ff650ff11c8ff69c409c45fbfd31bc3f8c4b55f665bea8e11a42c412b9ea25b9974908ab9b670a22e80a445692a26b98535b84cb49299c37c22e16e6","ssdeep":"3072:SOEFifYmNYKElSiLVN6MOzKqJdnJYJe4kiUh6sq:SIZYKEzmXZdJ8eYx","tlshash":"3cb31251b4a03e28e812f3ea73d7f49a4c71e374785d41a294047ec7e72da56f04afa4","first_seen":"2024-01-09T09:55:04Z","last_seen":"2026-08-14T17:42:11.966447Z","times_seen":9895,"resource_available":false,"data":null}},"time_used":25,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":21,"receive":4,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/styles/style.css","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:41.874Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/styles/style.css HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html\r\nCookie: _ga_LGMPS657N9=GS2.1.s1761927818$o1$g0$t1761927818$j60$l0$h0; _ga=GA1.1.1895684749.1761927818\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\nage: 14871\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-disposition: inline; filename=\"style.css\"\r\ncontent-encoding: br\r\ncontent-type: text/css; charset=utf-8\r\ndate: Fri, 31 Oct 2025 16:23:41 GMT\r\netag: \"93fa764f7ccfb9526008436fe42ffd35\"\r\nlast-modified: Fri, 31 Oct 2025 12:15:50 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-cache: HIT\r\nx-vercel-id: arn1::dm8tb-1761927821869-72c34e07c786\r\ncontent-length: 2885\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":12696,"size_decoded":0,"mime_type":"text/css; charset=utf-8","magic":"ASCII text","md5":"255fd3683d6cb6db21e14071ce9aac6c","sha1":"c69c3ed3b255e5afa404f4e6c9638599e3a2737f","sha256":"b1b8e6ca3cb16f272e98f66fe931e659c67671dcf9c9548711a1714d5f230af4","sha512":"77f6313ef30f1292d1d476dc7ad41df75a61b9ae01424c18727491ab7c1759397a174ed04e018b4ed25fd7ab6b2fbe02c6e208b8b09ead29f7e266b4f4a1adac","ssdeep":"192:fvO/e/RMi7fg9CWd7xkxPdl7o98ZZBDeuyiKfJLFF52ae5FD909Ghv0nxGazzDjK:f1J7r5QFsHFE4vajtY","tlshash":"ab42d18a9ee721497516d4742bba5b45e362c023c54aceed3edc329ccf893c45de9388","first_seen":"2024-09-20T16:38:26Z","last_seen":"2026-07-11T00:11:48.091901Z","times_seen":3873,"resource_available":false,"data":null}},"time_used":20,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":20,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js","fqdn":"ajax.googleapis.com","domain":"ajax.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.178.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:41.872Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"upload.video.google.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 13 Oct 2025 08:38:58 GMT","end":"Mon, 05 Jan 2026 08:38:57 GMT"},"fingerprint":{"sha1":"1E:BD:59:57:1D:85:DE:FA:02:4F:D0:E3:99:CD:8C:9B:62:9E:2A:D4","sha256":"E6:2C:01:FB:2E:B9:ED:F7:DF:AE:35:78:93:C6:BD:6B:FE:43:09:67:54:88:15:D5:34:D6:13:53:F1:93:4A:45"}}},"request":{"raw":"GET /ajax/libs/jquery/3.7.1/jquery.min.js HTTP/1.1\r\nHost: ajax.googleapis.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\naccept-ranges: bytes\r\ncontent-encoding: gzip\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/hosted-libraries-pushers\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"hosted-libraries-pushers\"\r\nreport-to: {\"group\":\"hosted-libraries-pushers\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/hosted-libraries-pushers\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 30462\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Mon, 27 Oct 2025 09:59:11 GMT\r\nexpires: Tue, 27 Oct 2026 09:59:11 GMT\r\ncache-control: public, max-age=31536000, stale-while-revalidate=2592000\r\nage: 368670\r\nlast-modified: Tue, 12 Sep 2023 02:38:22 GMT\r\ncontent-type: text/javascript; charset=UTF-8\r\nvary: Accept-Encoding\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":null,"data":{"size":87533,"size_decoded":0,"mime_type":"text/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (65447)","md5":"2c872dbe60f4ba70fb85356113d8b35e","sha1":"ee48592d1fff952fcf06ce0b666ed4785493afdc","sha256":"fc9a93dd241f6b045cbff0481cf4e1901becd0e12fb45166a8f17f95823f0b1a","sha512":"bf6089ed4698cb8270a8b0c8ad9508ff886a7a842278e98064d5c1790ca3a36d5d69d9f047ef196882554fc104da2c88eb5395f1ee8cf0f3f6ff8869408350fe","ssdeep":"1536:0RUX9uDgwxcy2KVBNwchN6SLaHEk2BSrBESp+a/IEk4aAocVi8SMBQ47GKr:sHNwcv9VBQpLl88SMBQ47GKr","tlshash":"3983f8df77ca702247ab30b9006f550bf276199d684d4400f159d8e9bcb8a4a827bf7e","first_seen":"2023-08-31T16:03:19Z","last_seen":"2026-08-15T04:44:16.528417Z","times_seen":185751,"resource_available":true,"data":null}},"time_used":236,"timings":{"blocked":99,"dns":0,"connect":14,"send":0,"wait":15,"receive":15,"ssl":88},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2025-10-31T16:23:37.479Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nUpgrade-Insecure-Requests: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\nage: 26876\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-disposition: inline\r\ncontent-encoding: br\r\ncontent-type: text/html; charset=utf-8\r\ndate: Fri, 31 Oct 2025 16:23:37 GMT\r\netag: \"76c76a65b79425bc9891b9709f9fdc19\"\r\nlast-modified: Fri, 31 Oct 2025 08:55:41 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-cache: HIT\r\nx-vercel-id: arn1::dm8tb-1761927817526-2d95d794e0f4\r\ncontent-length: 875\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]},{"name":"Google Analytics","description":"Google Analytics is a free web analytics service that tracks and reports website traffic.","website":"https://google.com/analytics","common_platform_enumeration":"","icon":"Google Analytics.svg","categories":["Analytics"]},{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]}],"data":{"size":1818,"size_decoded":0,"mime_type":"text/html; charset=utf-8","magic":"HTML document, Unicode text, UTF-8 text, with CRLF line terminators","md5":"76c76a65b79425bc9891b9709f9fdc19","sha1":"46131b5d6f1d51e6b3d6935a884623347e307a97","sha256":"44505857db41a78d9d5d7105286032a73553fe6fca0b50bc9766fa15f194e91d","sha512":"d36f062166595e33c69bf45d2ff0e7ac7ec90a049c69a54442c2348105546091d01aaabb3da2b04d51d641603b695e1b5b8e3b7c6e7654fd6fe5cd2557756f5b","ssdeep":"","tlshash":"2331d207f869641401b366717bb1e114e1eba10303802d837a9f18577fb7ad685a3ede","first_seen":"2025-09-10T12:38:12.97903Z","last_seen":"2025-10-31T16:24:05.958765Z","times_seen":24,"resource_available":false,"data":null}},"time_used":108,"timings":{"blocked":42,"dns":13,"connect":1,"send":0,"wait":10,"receive":14,"ssl":25},"alerts":{"ids":null,"analyzer":[{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"openphish","sensor_type":"url","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app/","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"www.googletagmanager.com/gtag/js?id=G-LGMPS657N9","fqdn":"www.googletagmanager.com","domain":"googletagmanager.com","tld":"com"},"ip":{"addr":"142.250.74.168","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://uk6u-casefb945908.vercel.app/","date":"2025-10-31T16:23:37.770Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google-analytics.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Wed, 01 Oct 2025 14:32:04 GMT","end":"Wed, 24 Dec 2025 14:32:03 GMT"},"fingerprint":{"sha1":"D7:8C:7A:D0:97:B6:11:02:45:69:BD:62:90:53:49:F8:8D:01:20:26","sha256":"F3:B2:48:55:BA:37:4F:37:37:83:8F:61:8F:04:B7:1F:E7:6F:4D:1A:D6:71:F7:BA:2C:E5:C4:45:B8:D7:B7:7E"}}},"request":{"raw":"GET /gtag/js?id=G-LGMPS657N9 HTTP/1.1\r\nHost: www.googletagmanager.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\ncontent-type: application/javascript; charset=UTF-8\r\naccess-control-allow-origin: *\r\naccess-control-allow-credentials: true\r\naccess-control-allow-headers: Cache-Control\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ndate: Fri, 31 Oct 2025 16:23:37 GMT\r\nexpires: Fri, 31 Oct 2025 16:23:37 GMT\r\ncache-control: private, max-age=900\r\nstrict-transport-security: max-age=31536000; includeSubDomains\r\ncross-origin-resource-policy: cross-origin\r\nserver: Google Tag Manager\r\ncontent-length: 142255\r\nx-xss-protection: 0\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":427877,"size_decoded":0,"mime_type":"application/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (6031)","md5":"f24f0077edf531913cf90edcef08d32e","sha1":"d7ab29b6f0bf97192b64bda0a1038fa4955d09c5","sha256":"9a8d22b2dba4c59b963de011d833d327c60f835621af48c52f4743da1f3f5638","sha512":"1b3145b045c7595c910a58c96a7b87cac038de5f75924232b48faa49dcc60c774f08ff50d009e6951ac9dcf9f0d638940b9fa318c44fa61d33e4df195e059c6a","ssdeep":"6144:HBH5HIy2m8fud75KGq6A0RI6TLiYYg/FOY9ftLHAJpaAmn/xS2GqH:hZHITDud75KGq6hvLiYlAJ6D","tlshash":"b19419ce73c670269396f078503f118ba57b29a2b45cc896f189cce42d74a9a4277f7c","first_seen":"2025-10-31T16:24:05.959675Z","last_seen":"2025-10-31T16:24:05.959675Z","times_seen":1,"resource_available":true,"data":null}},"time_used":218,"timings":{"blocked":81,"dns":1,"connect":8,"send":0,"wait":27,"receive":28,"ssl":70},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/img/block_2.png","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:41.878Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/img/block_2.png HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html\r\nCookie: _ga_LGMPS657N9=GS2.1.s1761927818$o1$g0$t1761927818$j60$l0$h0; _ga=GA1.1.1895684749.1761927818\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\nage: 14871\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-disposition: inline; filename=\"block_2.png\"\r\ncontent-type: image/png\r\ndate: Fri, 31 Oct 2025 16:23:41 GMT\r\netag: \"8942e3ff39cd6784c7c89bd6eb26d604\"\r\nlast-modified: Fri, 31 Oct 2025 12:15:50 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-cache: HIT\r\nx-vercel-id: arn1::mdjsz-1761927821869-9d1a6217ccd9\r\ncontent-length: 18787\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":18787,"size_decoded":0,"mime_type":"image/png","magic":"PNG image data, 100 x 101, 8-bit/color RGBA, non-interlaced","md5":"8942e3ff39cd6784c7c89bd6eb26d604","sha1":"b03e96fa075ba36fc3d6729fb312f0a59c2a023a","sha256":"9b7c1670777cc38a18fc6b98443b40036fde8de97cdba6087e2a31a1de9e748b","sha512":"af5040882b3ba0d18c56b5cf0cad4c2f8e6fcbabda8b85d0284dab2662a5bab76e38ce6fdd261b27a394d55e58f427aba7edbe8d3a8a33ee422d43cba85bf741","ssdeep":"384:RLwiYUB+GVTS4XHEHc6jMfHrk0T0U0t9424sWnUq5/cYC1/KNk7:miYdvGH+MDk0Y79jjBqRcYcKNe","tlshash":"d782c058d78053e1602cc99617a890bb8a578433259fcc67fa5e88c57fa079d390b3ce","first_seen":"2023-12-25T05:22:01Z","last_seen":"2026-08-13T14:35:02.658342Z","times_seen":15300,"resource_available":false,"data":null}},"time_used":20,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":19,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/img/phone.png","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:41.894Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/img/phone.png HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html\r\nCookie: _ga_LGMPS657N9=GS2.1.s1761927818$o1$g0$t1761927818$j60$l0$h0; _ga=GA1.1.1895684749.1761927818\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\nage: 33559\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-disposition: inline; filename=\"phone.png\"\r\ncontent-type: image/png\r\ndate: Fri, 31 Oct 2025 16:23:41 GMT\r\netag: \"3c18a93313e72ab9967152a4e92aa238\"\r\nlast-modified: Fri, 31 Oct 2025 07:04:22 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-cache: HIT\r\nx-vercel-id: arn1::xrb9j-1761927821880-95c8ae6ca9ba\r\ncontent-length: 255341\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":255341,"size_decoded":0,"mime_type":"image/png","magic":"PNG image data, 640 x 280, 8-bit/color RGBA, non-interlaced","md5":"3c18a93313e72ab9967152a4e92aa238","sha1":"74671591dd7cc381c6ec6de1137b83c0e2f4d7ec","sha256":"fbc7addde1cd6057bd59c03941fcf38a6ac17dd90312d142ebd7520891c3656e","sha512":"4533459dba5b435eb888caa9b413a662fb111cd030d5befc6e9b34659fb95031f119de6f80f08f0c8311039073cacf66d3c0bf7acc5146579c3ca70e7f9c9905","ssdeep":"6144:T0ptcriv/k0R7NwRuB6VZfExzYwPlUTsaTq7IT8bbGvAqj:OOev/jNGuUP2hL7ITn","tlshash":"dd4423075785db6223c2bfe74a4e381c4975e8b544d0b5a536e21adf1fc89c7acc628c","first_seen":"2024-01-09T09:55:04Z","last_seen":"2026-08-14T17:42:11.988648Z","times_seen":17129,"resource_available":false,"data":null}},"time_used":30,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":23,"receive":7,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null},{"sensor_name":"dns0","sensor_type":"DNS","title":"DNS0 Zero","description":"DNS0 Zero","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"Sinkholed in DNS (SOA: negative-caching.dns0.eu)","link":"https://www.dns0.eu/zero","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}},{"url":{"schema":"https","addr":"uk6u-casefb945908.vercel.app/managermentloc/img/dir.png","fqdn":"uk6u-casefb945908.vercel.app","domain":"uk6u-casefb945908.vercel.app","tld":"vercel.app"},"ip":{"addr":"216.198.79.131","port":443,"asn":16509,"as":"AMAZON-02","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html","date":"2025-10-31T16:23:42.121Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.vercel.app","organization":""},"issuer":{"commonName":"R13","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Oct 2025 22:29:14 GMT","end":"Fri, 23 Jan 2026 22:29:13 GMT"},"fingerprint":{"sha1":"6B:2C:E8:1D:DD:60:8E:79:54:CE:FA:CD:72:7F:4D:C0:7B:8E:6F:6B","sha256":"EF:F6:2B:04:2D:F4:71:55:1C:CA:FF:E3:7C:C9:DA:AB:BB:2E:C1:D2:5F:62:C5:3A:A8:D0:FC:85:01:D3:0D:1F"}}},"request":{"raw":"GET /managermentloc/img/dir.png HTTP/1.1\r\nHost: uk6u-casefb945908.vercel.app\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://uk6u-casefb945908.vercel.app/managermentloc/Landingpage/landingpage.html\r\nCookie: _ga_LGMPS657N9=GS2.1.s1761927818$o1$g0$t1761927818$j60$l0$h0; _ga=GA1.1.1895684749.1761927818\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 404 Not Found\r\ncache-control: public, max-age=0, must-revalidate\r\ncontent-type: text/plain; charset=utf-8\r\ndate: Fri, 31 Oct 2025 16:23:42 GMT\r\nserver: Vercel\r\nstrict-transport-security: max-age=63072000; includeSubDomains; preload\r\nx-vercel-error: NOT_FOUND\r\nx-vercel-id: arn1::kzgq9-1761927822124-b50736d52aec\r\ncontent-length: 79\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"Not Found","fingerprints":[{"name":"Vercel","description":"Vercel is a cloud platform for static frontends and serverless functions.","website":"https://vercel.com","common_platform_enumeration":"","icon":"vercel.svg","categories":["PaaS"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":79,"size_decoded":0,"mime_type":"text/plain; charset=utf-8","magic":"ASCII text","md5":"c32c2b46541768551de8ee83cfce17e4","sha1":"655be2794d2428170bbfd8c2a9ec5dda3f3f6806","sha256":"7e68960af3460d7d51a4859c2059564b0c10e3acfcd908efdcc852763f0adbf1","sha512":"4535963efcce7c0e0c3d3016b6dd4d371feaf0e743e982b0e6a35e7c28321922a0e0d5c68ce49d4dd056d19edcf0c3de4b26800cc2d84ed217bfa88a7e09b06b","ssdeep":"","tlshash":"98a0124d16424c1f73c4140010461178040002125e30f92010d86720140088e93040cf","first_seen":"2025-10-31T16:24:05.963333Z","last_seen":"2025-10-31T16:24:05.963333Z","times_seen":1,"resource_available":false,"data":null}},"time_used":17,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":17,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"opendns","sensor_type":"DNS","title":"OpenDNS","description":"OpenDNS","scan_date":"2025-10-31","alert":"Phishing Block","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"","link":"https://www.opendns.com/","meta":null},{"sensor_name":"cloudflare_dns","sensor_type":"DNS","title":"Cloudflare DNS","description":"Cloudflare DNS","scan_date":"2025-10-31","alert":"Sinkholed","trigger":"uk6u-casefb945908.vercel.app","verdict":"malicious","severity":"medium","comment":"","link":"https://www.cloudflare.com/application-services/products/dns/","meta":null},{"sensor_name":"openphish","sensor_type":"Blocklist","title":"OpenPhish","description":"OpenPhish","scan_date":"2025-10-31","alert":"Phishing - Facebook, Inc.","trigger":"uk6u-casefb945908.vercel.app","verdict":"phishing","severity":"medium","comment":"Facebook, Inc.","link":"https://openphish.com/","meta":null}],"urlquery":[{"sensor_name":"urlquery","alert":"Phishing - Facebook","verdict":"phishing","severity":"medium","comment":"Resource associated with Facebook phishing","tags":["meta","facebook","phishing","social"],"meta":null}]}}]}
