LyoKICoKICogQ29weXJpZ2h0IChjKSAyMDAzIERyIEpvaG4gTWFkZG9jawogKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIAogKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQogKgogKiAgYm9vc3RpbnNwZWN0Om5vYXNjaWkKICovCgojaW5jbHVkZSAibGljZW5jZV9pbmZvLmhwcCIKCgpzdGQ6OnBhaXI8Y29uc3QgbGljZW5zZV9pbmZvKiwgaW50PiBnZXRfbGljZW5zZXMoKQp7CiAgIHN0YXRpYyBjb25zdCBjaGFyKiBnZW5lcmljX2F1dGhvcl9zaWcgPSAKICAgICAgIig/OiIKICAgICAgICAgIig/OiIKICAgICAgICAgICAgIkNvcHlyaWdodHxcXChjXFwpfFx4QTkiCiAgICAgICAgICIpW1s6Ymxhbms6XV0rIgogICAgICAiKXsxLDJ9IgogICAgICAiKD86IgogICAgICAgICAiXFxkW15bOmFscGhhOl1dKyIKICAgICAgICAgICAgIihbWzphbHBoYTpdXSIKICAgICAgICAgICAgICAgIig/OiIKICAgICAgICAgICAgICAgIig/IVVzZVxcYnxQZXJtaXNzaW9uXFxifEFsbFxcYnw8UHwoPzotXFxzKilcXHcrKD86Oi8vfEApfFxcXFwiCiAgICAgICAgICAgICAgICIpW15cXG5cXGRdIgogICAgICAgICAgICAiKSsiCiAgICAgICAgICIpIgogICAgICAgICAifCIKICAgICAgICAgICAgIihbWzphbHBoYTpdXVteXFxuXFxkXSsiCiAgICAgICAgICAgICAgICIoPzpcXG5bXlxcblxcZF0rIgogICAgICAgICAgICAiKT8/IgogICAgICAgICAiKSg/OjE5fDIwKVxcZHsyfSIKICAgICAgIikiCiAgICAgICJ8IgogICAgICAiQXV0aG9yczpbWzpibGFuazpdXSsiCiAgICAgICAgICIoW1s6YWxwaGE6XV1bXlxcblxcZF0rIgogICAgICAifCIKICAgICAgIigoPzpUaGV8VGhpcykgY29kZSBpcyBjb25zaWRlcmVkIHRvIGJlIGluIHRoZSBwdWJsaWMgZG9tYWluKSIKICAgICAgIikiOwoKICAgc3RhdGljIGNvbnN0IGNoYXIqIGdlbmVyaWNfYXV0aG9yX2Zvcm1hdCA9IAogICAgICAiKD8xJDEpKD8yJDIpKD8zJDMpKD80UHVibGljIERvbWFpbikiOwoKICAgc3RhdGljIGNvbnN0IGxpY2Vuc2VfaW5mbyBsaWNlbnNlc1tdID0gCiAgIHsKICAgICAgbGljZW5zZV9pbmZvKCBib29zdDo6cmVnZXgoImRpc3RyaWJ1dGVkXFxXK3VuZGVyIgogICAgICAgICAiKFxcVyt0aGUpP1teXCJbOndvcmQ6XV0rQm9vc3RcXFcrU29mdHdhcmVcXFcrTGljZW5zZVxcVytWZXJzaW9uXFxXKzEuMCIsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgYm9vc3Q6OnJlZ2V4KGdlbmVyaWNfYXV0aG9yX3NpZywgYm9vc3Q6OnJlZ2V4OjpwZXJsIHwgYm9vc3Q6OnJlZ2V4OjppY2FzZSkKICAgICAgICAgLAogICAgICAgICBnZW5lcmljX2F1dGhvcl9mb3JtYXQKICAgICAgICAgLAogICAgICAgICAiQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAiCiAgICAgICAgICwKICAgICAgICAgIjxQPkNvcHlyaWdodCAoYykgPEk+RGF0ZTwvST4gPEk+QXV0aG9yPC9JPjwvUD4iCiAgICAgICAgICI8UD5EaXN0cmlidXRlZCB1bmRlciB0aGUgIgogICAgICAgICAiQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgIgogICAgICAgICAiTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgPGEgaHJlZj1cImh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dFwiPmh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCk8L2E+PC9QPiIKICAgICAgICkKICAgICAgLAogICAgICBsaWNlbnNlX2luZm8oIGJvb3N0OjpyZWdleCgiVXNlXFxXK1xcbW9kaWZpY2F0aW9uXFxXK2FuZFxcVytkaXN0cmlidXRpb24oXFxXK2lzfFxcVythcmUpXFxXK3N1YmplY3RcXFcrdG8iCiAgICAgICAgICIoXFxXK3RoZSk/W15cIls6d29yZDpdXStCb29zdFxcVytTb2Z0d2FyZVxcVytMaWNlbnNlXFxXK1ZlcnNpb25cXFcrMS4wIiwgYm9vc3Q6OnJlZ2V4OjpwZXJsIHwgYm9vc3Q6OnJlZ2V4OjppY2FzZSkKICAgICAgICAgLAogICAgICAgICBib29zdDo6cmVnZXgoZ2VuZXJpY19hdXRob3Jfc2lnLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGdlbmVyaWNfYXV0aG9yX2Zvcm1hdAogICAgICAgICAsCiAgICAgICAgICJCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMCAodmFyaWFudCAjMSkiCiAgICAgICAgICwKICAgICAgICAgIjxQPkNvcHlyaWdodCAoYykgPEk+RGF0ZTwvST4gPEk+QXV0aG9yPC9JPjwvUD4iCiAgICAgICAgICI8UD5Vc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlICIKICAgICAgICAgIkJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlICIKICAgICAgICAgIkxJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IDxhIGhyZWY9XCJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHRcIj5odHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpPC9hPjwvUD4iCiAgICAgICApCiAgICAgICwKICAgICAgbGljZW5zZV9pbmZvKCBib29zdDo6cmVnZXgoIig/IWlzKVxcd1xcd1xcVytzdWJqZWN0XFxXK3RvIgogICAgICAgICAiKFxcVyt0aGUpP1teXCJbOndvcmQ6XV0rQm9vc3RcXFcrU29mdHdhcmVcXFcrTGljZW5zZVxcVytWZXJzaW9uXFxXKzEuMCIsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgYm9vc3Q6OnJlZ2V4KGdlbmVyaWNfYXV0aG9yX3NpZywgYm9vc3Q6OnJlZ2V4OjpwZXJsIHwgYm9vc3Q6OnJlZ2V4OjppY2FzZSkKICAgICAgICAgLAogICAgICAgICBnZW5lcmljX2F1dGhvcl9mb3JtYXQKICAgICAgICAgLAogICAgICAgICAiQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAgKHZhcmlhbnQgIzIpIgogICAgICAgICAsCiAgICAgICAgICI8UD5Db3B5cmlnaHQgKGMpIDxJPkRhdGU8L0k+IDxJPkF1dGhvcjwvST48L1A+IgogICAgICAgICAiPFA+U3ViamVjdCB0byB0aGUgIgogICAgICAgICAiQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgIgogICAgICAgICAiTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgPGEgaHJlZj1cImh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dFwiPmh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCk8L2E+PC9QPiIKICAgICAgICkKICAgICAgLAogICAgICBsaWNlbnNlX2luZm8oIGJvb3N0OjpyZWdleCgiQ29weXJpZ2h0XFxXKyhjKVxcVysyMDAxXFxXKzIwMDJcXFcrUHl0aG9uXFxXK1NvZnR3YXJlXFxXK0ZvdW5kYXRpb25cXFcrQWxsXFxXK1JpZ2h0c1xcVytSZXNlcnZlZCIsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgYm9vc3Q6OnJlZ2V4KGdlbmVyaWNfYXV0aG9yX3NpZywgYm9vc3Q6OnJlZ2V4OjpwZXJsIHwgYm9vc3Q6OnJlZ2V4OjppY2FzZSkKICAgICAgICAgLAogICAgICAgICBnZW5lcmljX2F1dGhvcl9mb3JtYXQKICAgICAgICAgLAogICAgICAgICAiUHl0aG9uIFNvZnR3YXJlIExpY2Vuc2UiCiAgICAgICAgICwKICAgICAgICAgIjxwPkNvcHlyaWdodCAoYykgMjAwMSwgMjAwMiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbjs8L3A+IgogICAgICAgICAiPFA+QWxsIFJpZ2h0cyBSZXNlcnZlZDwvUD4iCiAgICAgICApCiAgICAgICwKICAgICAgbGljZW5zZV9pbmZvKCBib29zdDo6cmVnZXgoIlBlcm1pc3Npb25cXFcrdG9cXFcrdXNlXFxXK2NvcHlcXFcrbW9kaWZ5XFxXK2Rpc3RyaWJ1dGVcXFcrYW5kXFxXK3NlbGxcXFcrdGhpc1xcVytzb2Z0d2FyZVxcVythbmRcXFcraXRzXFxXK2RvY3VtZW50YXRpb24iCiAgICAgICAgICJcXFcrZm9yXFxXK2FueVxcVytwdXJwb3NlXFxXK2lzXFxXK2hlcmVieVxcVytncmFudGVkXFxXK3dpdGhvdXRcXFcrZmVlIgogICAgICAgICAiXFxXK3Byb3ZpZGVkXFxXK3RoYXRcXFcrdGhlXFxXK2Fib3ZlXFxXK2NvcHlyaWdodFxcVytub3RpY2VcXFcrYXBwZWFycz9cXFcraW5cXFcrYWxsXFxXK2NvcGllc1xcVythbmQiCiAgICAgICAgICJcXFcrdGhhdFxcVytib3RoXFxXKyh0aGV8dGhhdClcXFcrY29weXJpZ2h0XFxXK25vdGljZVxcVythbmRcXFcrdGhpc1xcVytwZXJtaXNzaW9uXFxXK25vdGljZVxcVythcHBlYXJzPyIKICAgICAgICAgIlxcVytpblxcVytzdXBwb3J0aW5nXFxXK2RvY3VtZW50YXRpb25bXjw+XXsxLCAxMDB9XFxXK25vXFxXK3JlcHJlc2VudGF0aW9ucyIKICAgICAgICAgIlxcVysoYXJlXFxXK21hZGVcXFcrKT9hYm91dFxcVyt0aGVcXFcrc3VpdGFiaWxpdHlcXFcrb2ZcXFcrdGhpc1xcVytzb2Z0d2FyZVxcVytmb3JcXFcrYW55XFxXK3B1cnBvc2UiCiAgICAgICAgICJcXFcrSXRcXFcraXNcXFcrcHJvdmlkZWRcXFcrYXNcXFcraXNcXFcrd2l0aG91dFxcVytleHByZXNzXFxXK29yXFxXK2ltcGxpZWRcXFcrd2FycmFudHkiCiAgICAgICAgICwgYm9vc3Q6OnJlZ2V4OjpwZXJsIHwgYm9vc3Q6OnJlZ2V4OjppY2FzZSkKICAgICAgICAgLAogICAgICAgICBib29zdDo6cmVnZXgoZ2VuZXJpY19hdXRob3Jfc2lnLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGdlbmVyaWNfYXV0aG9yX2Zvcm1hdAogICAgICAgICAsCiAgICAgICAgICJTR0kgU3R5bGUgTGljZW5zZSIKICAgICAgICAgLAogICAgICAgICAiPFA+Q29weXJpZ2h0IChjKSA8ST5EYXRlPC9JPjxCUj4iCiAgICAgICAgICI8ST5BdXRob3I8L0k+PEJSPiIKICAgICAgICAgIjxCUj4iCiAgICAgICAgICJQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUgIgogICAgICAgICAiYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCB3aXRob3V0IGZlZSwgIgogICAgICAgICAicHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgIgogICAgICAgICAidGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgIgogICAgICAgICAiaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLiAgPEk+QXV0aG9yPC9JPiBtYWtlcyBubyByZXByZXNlbnRhdGlvbnMgIgogICAgICAgICAiYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiAiCiAgICAgICAgICJJdCBpcyBwcm92aWRlZCBcImFzIGlzXCIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuPC9QPiIKICAgICAgICkKICAgICAgLAogICAgICBsaWNlbnNlX2luZm8oIGJvb3N0OjpyZWdleCgiUGVybWlzc2lvblxcVyt0b1xcVyt1c2VcXFcrY29weVxcVyttb2RpZnlcXFcrZGlzdHJpYnV0ZVxcVythbmRcXFcrc2VsbFxcVyt0aGlzXFxXK3NvZnR3YXJlIgogICAgICAgICAiXFxXK2ZvclxcVythbnlcXFcrcHVycG9zZVxcVytpc1xcVytoZXJlYnlcXFcrZ3JhbnRlZFxcVyt3aXRob3V0XFxXK2ZlZSIKICAgICAgICAgIlxcVytwcm92aWRlZFxcVyt0aGF0XFxXK3RoZVxcVythYm92ZVxcVytjb3B5cmlnaHRcXFcrbm90aWNlXFxXK2FwcGVhcnM/XFxXK2luXFxXK2FsbFxcVytjb3BpZXNcXFcrYW5kIgogICAgICAgICAiXFxXK3RoYXRcXFcrYm90aFxcVysodGhlfHRoYXQpXFxXK2NvcHlyaWdodFxcVytub3RpY2VcXFcrYW5kXFxXK3RoaXNcXFcrcGVybWlzc2lvblxcVytub3RpY2VcXFcrYXBwZWFycz8iCiAgICAgICAgICJcXFcraW5cXFcrc3VwcG9ydGluZ1xcVytkb2N1bWVudGF0aW9uW148Pl17MSwgMTAwfVxcVytub1xcVytyZXByZXNlbnRhdGlvbnMiCiAgICAgICAgICJcXFcrKGFyZVxcVyttYWRlXFxXKyk/YWJvdXRcXFcrdGhlXFxXK3N1aXRhYmlsaXR5XFxXK29mXFxXK3RoaXNcXFcrc29mdHdhcmVcXFcrZm9yXFxXK2FueVxcVytwdXJwb3NlIgogICAgICAgICAiXFxXK0l0XFxXK2lzXFxXK3Byb3ZpZGVkXFxXK2FzXFxXK2lzXFxXK3dpdGhvdXRcXFcrZXhwcmVzcyhlZCk/XFxXK29yXFxXK2ltcGxpZWRcXFcrd2FycmFudHkiLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGJvb3N0OjpyZWdleChnZW5lcmljX2F1dGhvcl9zaWcsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgZ2VuZXJpY19hdXRob3JfZm9ybWF0CiAgICAgICAgICwKICAgICAgICAgIk9sZCBzdHlsZSBCb29zdCBsaWNlbnNlICMxIgogICAgICAgICAsCiAgICAgICAgICI8UD5Db3B5cmlnaHQgKGMpIDxJPkRhdGU8L0k+PEJSPiIKICAgICAgICAgIjxJPkF1dGhvcjwvST48QlI+IgogICAgICAgICAiPEJSPiIKICAgICAgICAgIlBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZSAiCiAgICAgICAgICJmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsICIKICAgICAgICAgInByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kICIKICAgICAgICAgInRoYXQgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFycz8gIgogICAgICAgICAiaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLiAgPEk+QXV0aG9yPC9JPiBtYWtlcyBubyByZXByZXNlbnRhdGlvbnMgIgogICAgICAgICAiYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiAiCiAgICAgICAgICJJdCBpcyBwcm92aWRlZCBcImFzIGlzXCIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuPC9QPiIKICAgICAgICkKICAgICAgLAogICAgICBsaWNlbnNlX2luZm8oCiAgICAgICAgIGJvb3N0OjpyZWdleCgKICAgICAgICAgICAgIlBlcm1pc3Npb25cXFcrdG9cXFcrY29weVxcVyt1c2VcXFcrbW9kaWZ5XFxXK3NlbGxcXFcrYW5kXFxXK2Rpc3RyaWJ1dGVcXFcrdGhpc1xcVytzb2Z0d2FyZSIKICAgICAgICAgICAgIlxcVytpc1xcVytncmFudGVkXFxXK3Byb3ZpZGVkXFxXK3RoaXNcXFcrY29weXJpZ2h0XFxXK25vdGljZVxcVythcHBlYXJzXFxXK2luXFxXK2FsbFxcVytjb3BpZXMiCiAgICAgICAgICAgICJcXFcrVGhpc1xcVytzb2Z0d2FyZVxcVytpc1xcVytwcm92aWRlZFxcVythc1xcVytpc1xcVyt3aXRob3V0XFxXK2V4cHJlc3NcXFcrb3JcXFcraW1wbGllZCIKICAgICAgICAgICAgIlxcVyt3YXJyYW50eVxcVythbmRcXFcrd2l0aFxcVytub1xcVytjbGFpbVxcVythc1xcVyt0b1xcVytpdHNcXFcrc3VpdGFiaWxpdHlcXFcrZm9yXFxXK2FueVxcVytwdXJwb3NlIgogICAgICAgICAgICAsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UKICAgICAgICAgKQogICAgICAgICAsCiAgICAgICAgIGJvb3N0OjpyZWdleChnZW5lcmljX2F1dGhvcl9zaWcsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgZ2VuZXJpY19hdXRob3JfZm9ybWF0CiAgICAgICAgICwKICAgICAgICAgIk9sZCBzdHlsZSBCb29zdCBsaWNlbnNlICMyIgogICAgICAgICAsCiAgICAgICAgICI8UD5Db3B5cmlnaHQgKGMpIDxJPkRhdGU8L0k+IDxJPkF1dGhvcjwvST4uPEJSPjxCUj5cbiIKICAgICAgICAgIlBlcm1pc3Npb24gdG8gY29weSwgdXNlLCBtb2RpZnksIHNlbGwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZTxCUj5cbiIKICAgICAgICAgImlzIGdyYW50ZWQgcHJvdmlkZWQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcy48QlI+XG4iCiAgICAgICAgICJUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIFwiYXMgaXNcIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZDxCUj5cbiIKICAgICAgICAgIndhcnJhbnR5LCBhbmQgd2l0aCBubyBjbGFpbSBhcyB0byBpdHMgc3VpdGFiaWxpdHkgZm9yIGFueSBwdXJwb3NlLjwvUD5cbiIKICAgICAgICkKICAgICAgLAogICAgICBsaWNlbnNlX2luZm8oCiAgICAgICAgIGJvb3N0OjpyZWdleCgKICAgICAgICAgICAgIlBlcm1pc3Npb25cXFcrdG9cXFcrY29weVxcVyt1c2VbXlwiWzp3b3JkOl1dK21vZGlmeVxcVytzZWxsXFxXK2FuZFxcVytkaXN0cmlidXRlXFxXK3RoaXNcXFcrc29mdHdhcmVcXFcraXNcXFcrZ3JhbnRlZFxcVytwcm92aWRlZCIKICAgICAgICAgICAgIlxcVyt0aGlzXFxXK2NvcHlyaWdodFxcVytub3RpY2VcXFcrYXBwZWFyc1xcVytpblxcVythbGxcXFcrY29waWVzXFxXK1RoaXNcXFcrc29mdHdhcmVcXFcraXMiCiAgICAgICAgICAgICJcXFcrcHJvdmlkZWRcXFcrYXNcXFcraXNcXFcrd2l0aG91dFxcVytleHByZXNzXFxXK29yXFxXK2ltcGxpZWRcXFcrd2FycmFudHlcXFcrYW5kXFxXK3dpdGgiCiAgICAgICAgICAgICJcXFcrbm9cXFcrY2xhaW1cXFcrYXRcXFcrdG9cXFcraXRzXFxXK3N1aXRhYmlsaXR5XFxXK2ZvclxcVythbnlcXFcrcHVycG9zZSIKICAgICAgICAgICAgLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlCiAgICAgICAgICkKICAgICAgICAgLAogICAgICAgICBib29zdDo6cmVnZXgoZ2VuZXJpY19hdXRob3Jfc2lnLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGdlbmVyaWNfYXV0aG9yX2Zvcm1hdAogICAgICAgICAsCiAgICAgICAgICJPbGQgc3R5bGUgQm9vc3QgbGljZW5zZSAjMyIKICAgICAgICAgLAogICAgICAgICAiPFA+KEMpIENvcHlyaWdodCA8ST5BdXRob3I8L0k+IDxJPkRhdGU8L0k+LiAgUGVybWlzc2lvbiB0byBjb3B5LCB1c2UsICIKICAgICAgICAgIm1vZGlmeSwgc2VsbCwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBpcyBncmFudGVkIHByb3ZpZGVkICIKICAgICAgICAgInRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMuICBUaGlzIHNvZnR3YXJlIGlzICIKICAgICAgICAgInByb3ZpZGVkIFwiYXMgaXNcIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eSwgYW5kIHdpdGggIgogICAgICAgICAibm8gY2xhaW0gYXQgdG8gaXRzIHN1aXRhYmlsaXR5IGZvciBhbnkgcHVycG9zZS48L3A+XG4iCiAgICAgICApCiAgICAgICwKICAgICAgbGljZW5zZV9pbmZvKCBib29zdDo6cmVnZXgoIlBlcm1pc3Npb25cXFcrdG9cXFcrY29weVxcVyt1c2VcXFcrc2VsbFxcVythbmRcXFcrZGlzdHJpYnV0ZVxcVyt0aGlzXFxXK3NvZnR3YXJlXFxXK2lzXFxXK2dyYW50ZWQiCiAgICAgICAgICAgICAgICAgICAgICJcXFcrcHJvdmlkZWRcXFcrdGhpc1xcVytjb3B5cmlnaHRcXFcrbm90aWNlXFxXK2FwcGVhcnNcXFcraW5cXFcrYWxsXFxXK2NvcGllcyIKICAgICAgICAgICAgICAgICAgICAgIlxcVytQZXJtaXNzaW9uXFxXK3RvXFxXK21vZGlmeVxcVyt0aGVcXFcrY29kZVxcVythbmRcXFcrdG9cXFcrZGlzdHJpYnV0ZVxcVyttb2RpZmllZFxcVytjb2RlXFxXK2lzXFxXK2dyYW50ZWQiCiAgICAgICAgICAgICAgICAgICAgICJcXFcrcHJvdmlkZWRcXFcrdGhpc1xcVytjb3B5cmlnaHRcXFcrbm90aWNlXFxXK2FwcGVhcnNcXFcraW5cXFcrYWxsXFxXK2NvcGllc1xcVythbmRcXFcrYVxcVytub3RpY2UiCiAgICAgICAgICAgICAgICAgICAgICJcXFcrdGhhdFxcVyt0aGVcXFcrY29kZVxcVyt3YXNcXFcrbW9kaWZpZWRcXFcraXNcXFcraW5jbHVkZWRcXFcrd2l0aFxcVyt0aGVcXFcrY29weXJpZ2h0XFxXK25vdGljZSIKICAgICAgICAgICAgICAgICAgICAgIlxcVytUaGlzXFxXK3NvZnR3YXJlXFxXK2lzXFxXK3Byb3ZpZGVkXFxXK2FzXFxXK2lzXFxXK3dpdGhvdXRcXFcrZXhwcmVzc1xcVytvclxcVytpbXBsaWVkXFxXK3dhcnJhbnR5XFxXK2FuZFxcVyt3aXRoXFxXK25vXFxXK2NsYWltXFxXK2FzXFxXK3RvXFxXK2l0c1xcVytzdWl0YWJpbGl0eVxcVytmb3JcXFcrYW55XFxXK3B1cnBvc2UiCiAgICAgICAgICAgICAgICAgICAgICwgYm9vc3Q6OnJlZ2V4OjpwZXJsIHwgYm9vc3Q6OnJlZ2V4OjppY2FzZSkKICAgICAgICAgLAogICAgICAgICBib29zdDo6cmVnZXgoZ2VuZXJpY19hdXRob3Jfc2lnLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGdlbmVyaWNfYXV0aG9yX2Zvcm1hdAogICAgICAgICAsCiAgICAgICAgICJPbGQgc3R5bGUgQm9vc3QgbGljZW5zZSAjNCIKICAgICAgICAgLAogICAgICAgICAiPFA+Q29weXJpZ2h0IChDKSA8ST5EYXRlIEF1dGhvcjwvST48QlI+IgogICAgICAgICAiPEJSPiIKICAgICAgICAgIlBlcm1pc3Npb24gdG8gY29weSwgdXNlLCBzZWxsIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgaXMgZ3JhbnRlZFxuIgogICAgICAgICAicHJvdmlkZWQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcy5cbiIKICAgICAgICAgIlBlcm1pc3Npb24gdG8gbW9kaWZ5IHRoZSBjb2RlIGFuZCB0byBkaXN0cmlidXRlIG1vZGlmaWVkIGNvZGUgaXMgZ3JhbnRlZFxuIgogICAgICAgICAicHJvdmlkZWQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcywgYW5kIGEgbm90aWNlXG4iCiAgICAgICAgICJ0aGF0IHRoZSBjb2RlIHdhcyBtb2RpZmllZCBpcyBpbmNsdWRlZCB3aXRoIHRoZSBjb3B5cmlnaHQgbm90aWNlLjwvUD5cbiIKICAgICAgICAgIjxQPlRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgXCJhcyBpc1wiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LFxuIgogICAgICAgICAiYW5kIHdpdGggbm8gY2xhaW0gYXMgdG8gaXRzIHN1aXRhYmlsaXR5IGZvciBhbnkgcHVycG9zZS48L1A+IgogICAgICAgKQogICAgICAsCiAgICAgIGxpY2Vuc2VfaW5mbyggYm9vc3Q6OnJlZ2V4KCJUaGlzXFxXK2ZpbGVcXFcraXNcXFcrcGFydFxcVytvZlxcVyt0aGVcXFcrKEJvb3N0XFxXK0dyYXBofEdlbmVyaWNcXFcrR3JhcGhcXFcrQ29tcG9uZW50KVxcVytMaWJyYXJ5IgogICAgICAgICAgICAgICAgICAgICAiXFxXK1lvdVxcVytzaG91bGRcXFcraGF2ZVxcVytyZWNlaXZlZFxcVythXFxXK2NvcHlcXFcrb2ZcXFcrdGhlXFxXK0xpY2Vuc2VcXFcrQWdyZWVtZW50XFxXK2ZvclxcVyt0aGUiCiAgICAgICAgICAgICAgICAgICAgICJcXFcrKEJvb3N0fEdlbmVyaWMpXFxXK0dyYXBoXFxXKyhDb21wb25lbnRcXFcrKT9MaWJyYXJ5XFxXK2Fsb25nXFxXK3dpdGhcXFcrdGhlXFxXK3NvZnR3YXJlO1xcVytzZWVcXFcrdGhlXFxXK2ZpbGVcXFcrTElDRU5TRSIKICAgICAgICAgICAgICAgICAgICAgIihcXFcrSWZcXFcrbm90XFxXK2NvbnRhY3RcXFcrT2ZmaWNlXFxXK29mXFxXK1Jlc2VhcmNoXFxXK1VuaXZlcnNpdHlcXFcrb2ZcXFcrTm90cmVcXFcrRGFtZVxcVytOb3RyZSIKICAgICAgICAgICAgICAgICAgICAgIlxcVytEYW1lXFxXK0lOXFxXKzQ2NTU2KT8iCiAgICAgICAgICAgICAgICAgICAgICJcXFcrUGVybWlzc2lvblxcVyt0b1xcVyttb2RpZnlcXFcrdGhlXFxXK2NvZGVcXFcrYW5kXFxXK3RvXFxXK2Rpc3RyaWJ1dGUoXFxXK21vZGlmaWVkfFxcVyt0aGUpXFxXK2NvZGVcXFcraXMiCiAgICAgICAgICAgICAgICAgICAgICJcXFcrZ3JhbnRlZFxcVytwcm92aWRlZFxcVyt0aGVcXFcrdGV4dFxcVytvZlxcVyt0aGlzXFxXK05PVElDRVxcVytpc1xcVytyZXRhaW5lZFxcVythXFxXK25vdGljZVxcVysodGhhdHxpZikiCiAgICAgICAgICAgICAgICAgICAgICJcXFcrdGhlXFxXK2NvZGVcXFcrd2FzXFxXK21vZGlmaWVkXFxXK2lzXFxXK2luY2x1ZGVkXFxXK3dpdGhcXFcrdGhlXFxXK2Fib3ZlXFxXK0NPUFlSSUdIVFxcVytOT1RJQ0VcXFcrYW5kIgogICAgICAgICAgICAgICAgICAgICAiXFxXK3dpdGhcXFcrdGhlXFxXK0NPUFlSSUdIVFxcVytOT1RJQ0VcXFcraW5cXFcrdGhlXFxXK0xJQ0VOU0VcXFcrZmlsZVxcVythbmRcXFcrdGhhdFxcVyt0aGVcXFcrTElDRU5TRSIKICAgICAgICAgICAgICAgICAgICAgIlxcVytmaWxlXFxXK2lzXFxXK2Rpc3RyaWJ1dGVkXFxXK3dpdGhcXFcrdGhlXFxXK21vZGlmaWVkXFxXK2NvZGVcXFcrIgogICAgICAgICAgICAgICAgICAgICAiXFxXK0xJQ0VOU09SXFxXK01BS0VTXFxXK05PXFxXK1JFUFJFU0VOVEFUSU9OU1xcVytPUlxcVytXQVJSQU5USUVTXFxXK0VYUFJFU1NcXFcrT1JcXFcrSU1QTElFRCIKICAgICAgICAgICAgICAgICAgICAgIlxcVytCeVxcVyt3YXlcXFcrb2ZcXFcrZXhhbXBsZVxcVytidXRcXFcrbm90XFxXK2xpbWl0YXRpb25cXFcrTGljZW5zb3JcXFcrTUFLRVNcXFcrTk8iCiAgICAgICAgICAgICAgICAgICAgICJcXFcrUkVQUkVTRU5UQVRJT05TXFxXK09SXFxXK1dBUlJBTlRJRVNcXFcrT0ZcXFcrTUVSQ0hBTlRBQklMSVRZXFxXK09SXFxXK0ZJVE5FU1NcXFcrRk9SXFxXK0FOWSIKICAgICAgICAgICAgICAgICAgICAgIlxcVytQQVJUSUNVTEFSXFxXK1BVUlBPU0VcXFcrT1JcXFcrVEhBVFxcVytUSEVcXFcrVVNFXFxXK09GXFxXK1RIRVxcVytMSUNFTlNFRFxcVytTT0ZUV0FSRVxcVytDT01QT05FTlRTIgogICAgICAgICAgICAgICAgICAgICAiXFxXK09SXFxXK0RPQ1VNRU5UQVRJT05cXFcrV0lMTFxcVytOT1RcXFcrSU5GUklOR0VcXFcrQU5ZXFxXK1BBVEVOVFNcXFcrQ09QWVJJR0hUU1xcVytUUkFERU1BUktTIgogICAgICAgICAgICAgICAgICAgICAiXFxXK09SXFxXK09USEVSXFxXK1JJR0hUUyIKICAgICAgICAgICAgLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGJvb3N0OjpyZWdleChnZW5lcmljX2F1dGhvcl9zaWcsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgZ2VuZXJpY19hdXRob3JfZm9ybWF0CiAgICAgICAgICwKICAgICAgICAgIkJvb3N0LkdyYXBoIGxpY2Vuc2UgKE5vdHJlIERhbWUpIgogICAgICAgICAsCiAgICAgICAgICI8UD5Db3B5cmlnaHQgPEk+RGF0ZTwvST4gVW5pdmVyc2l0eSBvZiBOb3RyZSBEYW1lLjxCUj4iCiAgICAgICAgICJBdXRob3JzOiBBbmRyZXcgTHVtc2RhaW5lLCBMaWUtUXVhbiBMZWUsIEplcmVteSBHLiBTaWVrPC9QPiIKICAgICAgICAgIjxQPlRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBCb29zdCBHcmFwaCBMaWJyYXJ5PC9QPiIKICAgICAgICAgIjxQPllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIDxBIGhyZWY9XCJodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2dyYXBoL0xJQ0VOQ0VcIj5MaWNlbnNlIEFncmVlbWVudDwvYT4gZm9yIHRoZSAiCiAgICAgICAgICJCb29zdCBHcmFwaCBMaWJyYXJ5IGFsb25nIHdpdGggdGhlIHNvZnR3YXJlOyBzZWUgdGhlIGZpbGUgPEEgaHJlZj1cImh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvZ3JhcGgvTElDRU5DRVwiPkxJQ0VOU0U8L2E+LiAiCiAgICAgICAgICJJZiBub3QsIGNvbnRhY3QgT2ZmaWNlIG9mIFJlc2VhcmNoLCBVbml2ZXJzaXR5IG9mIE5vdHJlIERhbWUsIE5vdHJlICIKICAgICAgICAgIkRhbWUsIElOIDQ2NTU2LjwvUD4iCiAgICAgICAgICI8UD5QZXJtaXNzaW9uIHRvIG1vZGlmeSB0aGUgY29kZSBhbmQgdG8gZGlzdHJpYnV0ZSBtb2RpZmllZCBjb2RlIGlzICIKICAgICAgICAgImdyYW50ZWQsIHByb3ZpZGVkIHRoZSB0ZXh0IG9mIHRoaXMgTk9USUNFIGlzIHJldGFpbmVkLCBhIG5vdGljZSB0aGF0ICIKICAgICAgICAgInRoZSBjb2RlIHdhcyBtb2RpZmllZCBpcyBpbmNsdWRlZCB3aXRoIHRoZSBhYm92ZSBDT1BZUklHSFQgTk9USUNFIGFuZCAiCiAgICAgICAgICJ3aXRoIHRoZSBDT1BZUklHSFQgTk9USUNFIGluIHRoZSA8QSBocmVmPVwiaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9ncmFwaC9MSUNFTkNFXCI+TElDRU5TRTwvYT4gZmlsZSwgYW5kIHRoYXQgdGhlIDxBIGhyZWY9XCJodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2dyYXBoL0xJQ0VOQ0VcIj5MSUNFTlNFPC9hPiAiCiAgICAgICAgICJmaWxlIGlzIGRpc3RyaWJ1dGVkIHdpdGggdGhlIG1vZGlmaWVkIGNvZGUuPC9QPiIKICAgICAgICAgIjxQPkxJQ0VOU09SIE1BS0VTIE5PIFJFUFJFU0VOVEFUSU9OUyBPUiBXQVJSQU5USUVTLCBFWFBSRVNTIE9SIElNUExJRUQuPEJSPiAiCiAgICAgICAgICJCeSB3YXkgb2YgZXhhbXBsZSwgYnV0IG5vdCBsaW1pdGF0aW9uLCBMaWNlbnNvciBNQUtFUyBOTyAiCiAgICAgICAgICJSRVBSRVNFTlRBVElPTlMgT1IgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgT1IgRklUTkVTUyBGT1IgQU5ZICIKICAgICAgICAgIlBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBUSEFUIFRIRSBVU0UgT0YgVEhFIExJQ0VOU0VEIFNPRlRXQVJFIENPTVBPTkVOVFMgIgogICAgICAgICAiT1IgRE9DVU1FTlRBVElPTiBXSUxMIE5PVCBJTkZSSU5HRSBBTlkgUEFURU5UUywgQ09QWVJJR0hUUywgVFJBREVNQVJLUyAiCiAgICAgICAgICJPUiBPVEhFUiBSSUdIVFMuPC9QPiIKICAgICAgICkKICAgICAgLAogICAgICBsaWNlbnNlX2luZm8oIGJvb3N0OjpyZWdleCgiVGhpc1xcVytmaWxlXFxXK2lzXFxXK3BhcnRcXFcrb2ZcXFcrdGhlXFxXKyhCb29zdFxcVytHcmFwaHxHZW5lcmljXFxXK0dyYXBoXFxXK0NvbXBvbmVudClcXFcrTGlicmFyeSIKICAgICAgICAgICAgICAgICAgICAgIlxcVytZb3VcXFcrc2hvdWxkXFxXK2hhdmVcXFcrcmVjZWl2ZWRcXFcrYVxcVytjb3B5XFxXK29mXFxXK3RoZVxcVytMaWNlbnNlXFxXK0FncmVlbWVudFxcVytmb3JcXFcrdGhlIgogICAgICAgICAgICAgICAgICAgICAiXFxXKyhCb29zdHxHZW5lcmljKVxcVytHcmFwaFxcVysoQ29tcG9uZW50XFxXKyk/TGlicmFyeVxcVythbG9uZ1xcVyt3aXRoXFxXK3RoZVxcVytzb2Z0d2FyZTtcXFcrc2VlXFxXK3RoZVxcVytmaWxlXFxXK0xJQ0VOU0UiCiAgICAgICAgICAgICAgICAgICAgICIoXFxXK0lmXFxXK25vdFxcVytjb250YWN0XFxXK09mZmljZVxcVytvZlxcVytSZXNlYXJjaFxcVytJbmRpYW5hXFxXK1VuaXZlcnNpdHlcXFcrQmxvb21pbmd0b25cXFcrSU5cXFcrNDc0MDUpPyIKICAgICAgICAgICAgICAgICAgICAgIlxcVytQZXJtaXNzaW9uXFxXK3RvXFxXK21vZGlmeVxcVyt0aGVcXFcrY29kZVxcVythbmRcXFcrdG9cXFcrZGlzdHJpYnV0ZShcXFcrbW9kaWZpZWR8XFxXK3RoZSlcXFcrY29kZVxcVytpcyIKICAgICAgICAgICAgICAgICAgICAgIlxcVytncmFudGVkXFxXK3Byb3ZpZGVkXFxXK3RoZVxcVyt0ZXh0XFxXK29mXFxXK3RoaXNcXFcrTk9USUNFXFxXK2lzXFxXK3JldGFpbmVkXFxXK2FcXFcrbm90aWNlXFxXKyh0aGF0fGlmKSIKICAgICAgICAgICAgICAgICAgICAgIlxcVyt0aGVcXFcrY29kZVxcVyt3YXNcXFcrbW9kaWZpZWRcXFcraXNcXFcraW5jbHVkZWRcXFcrd2l0aFxcVyt0aGVcXFcrYWJvdmVcXFcrQ09QWVJJR0hUXFxXK05PVElDRVxcVythbmQiCiAgICAgICAgICAgICAgICAgICAgICJcXFcrd2l0aFxcVyt0aGVcXFcrQ09QWVJJR0hUXFxXK05PVElDRVxcVytpblxcVyt0aGVcXFcrTElDRU5TRVxcVytmaWxlXFxXK2FuZFxcVyt0aGF0XFxXK3RoZVxcVytMSUNFTlNFIgogICAgICAgICAgICAgICAgICAgICAiXFxXK2ZpbGVcXFcraXNcXFcrZGlzdHJpYnV0ZWRcXFcrd2l0aFxcVyt0aGVcXFcrbW9kaWZpZWRcXFcrY29kZVxcVysiCiAgICAgICAgICAgICAgICAgICAgICJcXFcrTElDRU5TT1JcXFcrTUFLRVNcXFcrTk9cXFcrUkVQUkVTRU5UQVRJT05TXFxXK09SXFxXK1dBUlJBTlRJRVNcXFcrRVhQUkVTU1xcVytPUlxcVytJTVBMSUVEIgogICAgICAgICAgICAgICAgICAgICAiXFxXK0J5XFxXK3dheVxcVytvZlxcVytleGFtcGxlXFxXK2J1dFxcVytub3RcXFcrbGltaXRhdGlvblxcVytMaWNlbnNvclxcVytNQUtFU1xcVytOTyIKICAgICAgICAgICAgICAgICAgICAgIlxcVytSRVBSRVNFTlRBVElPTlNcXFcrT1JcXFcrV0FSUkFOVElFU1xcVytPRlxcVytNRVJDSEFOVEFCSUxJVFlcXFcrT1JcXFcrRklUTkVTU1xcVytGT1JcXFcrQU5ZIgogICAgICAgICAgICAgICAgICAgICAiXFxXK1BBUlRJQ1VMQVJcXFcrUFVSUE9TRVxcVytPUlxcVytUSEFUXFxXK1RIRVxcVytVU0VcXFcrT0ZcXFcrVEhFXFxXK0xJQ0VOU0VEXFxXK1NPRlRXQVJFXFxXK0NPTVBPTkVOVFMiCiAgICAgICAgICAgICAgICAgICAgICJcXFcrT1JcXFcrRE9DVU1FTlRBVElPTlxcVytXSUxMXFxXK05PVFxcVytJTkZSSU5HRVxcVytBTllcXFcrUEFURU5UU1xcVytDT1BZUklHSFRTXFxXK1RSQURFTUFSS1MiCiAgICAgICAgICAgICAgICAgICAgICJcXFcrT1JcXFcrT1RIRVJcXFcrUklHSFRTIgogICAgICAgICAgICAsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgYm9vc3Q6OnJlZ2V4KGdlbmVyaWNfYXV0aG9yX3NpZywgYm9vc3Q6OnJlZ2V4OjpwZXJsIHwgYm9vc3Q6OnJlZ2V4OjppY2FzZSkKICAgICAgICAgLAogICAgICAgICBnZW5lcmljX2F1dGhvcl9mb3JtYXQKICAgICAgICAgLAogICAgICAgICAiQm9vc3QuR3JhcGggbGljZW5zZSAoSW5kaWFuYSBVbml2ZXJzaXR5KSIKICAgICAgICAgLAogICAgICAgICAiPFA+Q29weXJpZ2h0IDxJPkRhdGU8L0k+IEluZGlhbmEgVW5pdmVyc2l0eS48QlI+IgogICAgICAgICAiQXV0aG9yczogQW5kcmV3IEx1bXNkYWluZSwgTGllLVF1YW4gTGVlLCBKZXJlbXkgRy4gU2llazwvUD4iCiAgICAgICAgICI8UD5UaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQm9vc3QgR3JhcGggTGlicmFyeTwvUD4iCiAgICAgICAgICI8UD5Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSA8QSBocmVmPVwiaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9ncmFwaC9MSUNFTkNFXCI+TGljZW5zZSBBZ3JlZW1lbnQ8L2E+IGZvciB0aGUgIgogICAgICAgICAiQm9vc3QgR3JhcGggTGlicmFyeSBhbG9uZyB3aXRoIHRoZSBzb2Z0d2FyZTsgc2VlIHRoZSBmaWxlIDxBIGhyZWY9XCJodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2dyYXBoL0xJQ0VOQ0VcIj5MSUNFTlNFPC9hPi4gIgogICAgICAgICAiSWYgbm90LCBjb250YWN0IE9mZmljZSBvZiBSZXNlYXJjaCwgSW5kaWFuYSBVbml2ZXJzaXR5LCBCbG9vbWluZ3RvbiwiCiAgICAgICAgICJJTiA0NzQwNC48L1A+IgogICAgICAgICAiPFA+UGVybWlzc2lvbiB0byBtb2RpZnkgdGhlIGNvZGUgYW5kIHRvIGRpc3RyaWJ1dGUgbW9kaWZpZWQgY29kZSBpcyAiCiAgICAgICAgICJncmFudGVkLCBwcm92aWRlZCB0aGUgdGV4dCBvZiB0aGlzIE5PVElDRSBpcyByZXRhaW5lZCwgYSBub3RpY2UgdGhhdCAiCiAgICAgICAgICJ0aGUgY29kZSB3YXMgbW9kaWZpZWQgaXMgaW5jbHVkZWQgd2l0aCB0aGUgYWJvdmUgQ09QWVJJR0hUIE5PVElDRSBhbmQgIgogICAgICAgICAid2l0aCB0aGUgQ09QWVJJR0hUIE5PVElDRSBpbiB0aGUgPEEgaHJlZj1cImh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvZ3JhcGgvTElDRU5DRVwiPkxJQ0VOU0U8L2E+IGZpbGUsIGFuZCB0aGF0IHRoZSA8QSBocmVmPVwiaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9ncmFwaC9MSUNFTkNFXCI+TElDRU5TRTwvYT4gIgogICAgICAgICAiZmlsZSBpcyBkaXN0cmlidXRlZCB3aXRoIHRoZSBtb2RpZmllZCBjb2RlLjwvUD4iCiAgICAgICAgICI8UD5MSUNFTlNPUiBNQUtFUyBOTyBSRVBSRVNFTlRBVElPTlMgT1IgV0FSUkFOVElFUywgRVhQUkVTUyBPUiBJTVBMSUVELjxCUj4gIgogICAgICAgICAiQnkgd2F5IG9mIGV4YW1wbGUsIGJ1dCBub3QgbGltaXRhdGlvbiwgTGljZW5zb3IgTUFLRVMgTk8gIgogICAgICAgICAiUkVQUkVTRU5UQVRJT05TIE9SIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MgRk9SIEFOWSAiCiAgICAgICAgICJQQVJUSUNVTEFSIFBVUlBPU0UgT1IgVEhBVCBUSEUgVVNFIE9GIFRIRSBMSUNFTlNFRCBTT0ZUV0FSRSBDT01QT05FTlRTICIKICAgICAgICAgIk9SIERPQ1VNRU5UQVRJT04gV0lMTCBOT1QgSU5GUklOR0UgQU5ZIFBBVEVOVFMsIENPUFlSSUdIVFMsIFRSQURFTUFSS1MgIgogICAgICAgICAiT1IgT1RIRVIgUklHSFRTLjwvUD4iCiAgICAgICApCiAgICAgICwKICAgICAgbGljZW5zZV9pbmZvKCBib29zdDo6cmVnZXgoIlBlcm1pc3Npb25cXFcrdG9cXFcrY29weVxcVyt1c2VcXFcrbW9kaWZ5XFxXK3NlbGxcXFcrYW5kXFxXK2Rpc3RyaWJ1dGVcXFcrdGhpc1xcVytzb2Z0d2FyZVxcVytpcyIKICAgICAgICAgICAgICAgICAgICAgIlteXCJbOndvcmQ6XV0rZ3JhbnRlZFxcVytwcm92aWRlZFxcVyt0aGlzXFxXK2NvcHlyaWdodFxcVytub3RpY2VcXFcrYXBwZWFyc1xcVytpblxcVythbGxcXFcrY29waWVzXFxXK2FuZCIKICAgICAgICAgICAgICAgICAgICAgIlxcVyttb2RpZmllZFxcVyt2ZXJzaW9uXFxXK2FyZVxcVytjbGVhcmx5XFxXK21hcmtlZFxcVythc1xcVytzdWNoXFxXK1RoaXNcXFcrc29mdHdhcmVcXFcraXNcXFcrcHJvdmlkZWQiCiAgICAgICAgICAgICAgICAgICAgICJcXFcrYXNcXFcraXNcXFcrd2l0aG91dFxcVytleHByZXNzXFxXK29yXFxXK2ltcGxpZWRcXFcrd2FycmFudHlcXFcrYW5kXFxXK3dpdGhcXFcrbm9cXFcrY2xhaW1cXFcrYXNcXFcrdG9cXFcraXRzIgogICAgICAgICAgICAgICAgICAgICAiXFxXK3N1aXRhYmlsaXR5XFxXK2ZvclxcVythbnlcXFcrcHVycG9zZSIKICAgICAgICAgICAgICAgICAgICAgLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGJvb3N0OjpyZWdleChnZW5lcmljX2F1dGhvcl9zaWcsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgZ2VuZXJpY19hdXRob3JfZm9ybWF0CiAgICAgICAgICwKICAgICAgICAgIk9sZCBzdHlsZSBCb29zdCBsaWNlbnNlICM1IgogICAgICAgICAsCiAgICAgICAgICI8UD5Db3B5cmlnaHQgKEMpIDxJPkRhdGUgQXV0aG9yPC9JPjwvUD4iCiAgICAgICAgICI8cD5QZXJtaXNzaW9uIHRvIGNvcHksIHVzZSwgbW9kaWZ5LCBzZWxsIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgaXMgIgogICAgICAgICAiZ3JhbnRlZCwgcHJvdmlkZWQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcyBhbmQgIgogICAgICAgICAibW9kaWZpZWQgdmVyc2lvbiBhcmUgY2xlYXJseSBtYXJrZWQgYXMgc3VjaC4gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiCiAgICAgICAgICJcImFzIGlzXCIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHksIGFuZCB3aXRoIG5vIGNsYWltIGFzIHRvIGl0cyAiCiAgICAgICAgICJzdWl0YWJpbGl0eSBmb3IgYW55IHB1cnBvc2UuPC9QPiIKICAgICAgICkKICAgICAgLAogICAgICBsaWNlbnNlX2luZm8oIGJvb3N0OjpyZWdleCgiVGhpc1xcVytmaWxlXFxXK2NhblxcVytiZVxcVytyZWRpc3RyaWJ1dGVkXFxXK2FuZFxcVytvclxcVyttb2RpZmllZFxcVyt1bmRlclxcVyt0aGVcXFcrdGVybXNcXFcrZm91bmQiCiAgICAgICAgICAgICAgICAgICAgICJcXFcraW5cXFcrY29weXJpZ2h0XFxXK2h0bWwiCiAgICAgICAgICAgICAgICAgICAgICJcXFcrVGhpc1xcVytzb2Z0d2FyZVxcVythbmRcXFcraXRzXFxXK2RvY3VtZW50YXRpb25cXFcraXNcXFcrcHJvdmlkZWRcXFcrYXNcXFcraXNcXFcrd2l0aG91dFxcVytleHByZXNzXFxXK29yIgogICAgICAgICAgICAgICAgICAgICAiXFxXK2ltcGxpZWRcXFcrd2FycmFudHlcXFcrYW5kXFxXK3dpdGhcXFcrbm9cXFcrY2xhaW1cXFcrYXNcXFcrdG9cXFcraXRzXFxXK3N1aXRhYmlsaXR5XFxXK2ZvclxcVythbnlcXFcrcHVycG9zZSIKICAgICAgICAgICAgLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGJvb3N0OjpyZWdleChnZW5lcmljX2F1dGhvcl9zaWcsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgZ2VuZXJpY19hdXRob3JfZm9ybWF0CiAgICAgICAgICwKICAgICAgICAgIkJvb3N0LlBvb2wgbGljZW5zZSIKICAgICAgICAgLAogICAgICAgICAiPFA+VGhpcyBmaWxlIGNhbiBiZSByZWRpc3RyaWJ1dGVkIGFuZC9vciBtb2RpZmllZCB1bmRlciB0aGUgdGVybXMgZm91bmQgIgogICAgICAgICAiaW4gPGEgaHJlZj1cImh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcG9vbC9kb2MvY29weXJpZ2h0Lmh0bWxcIj5jb3B5cmlnaHQuaHRtbDwvYT48L1A+XG4iCiAgICAgICAgICI8UD5UaGlzIHNvZnR3YXJlIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiBpcyBwcm92aWRlZCBcImFzIGlzXCIgd2l0aG91dCBleHByZXNzIG9yICIKICAgICAgICAgImltcGxpZWQgd2FycmFudHksIGFuZCB3aXRoIG5vIGNsYWltIGFzIHRvIGl0cyBzdWl0YWJpbGl0eSBmb3IgYW55IHB1cnBvc2U8L1A+IgogICAgICAgKQogICAgICAsCiAgICAgIGxpY2Vuc2VfaW5mbyhib29zdDo6cmVnZXgoIlBlcm1pc3Npb25cXFcrdG9cXFcrdXNlXFxXK2NvcHlcXFcrbW9kaWZ5XFxXK3NlbGxcXFcrYW5kXFxXK2Rpc3RyaWJ1dGVcXFcrdGhpc1xcVytzb2Z0d2FyZSIKICAgICAgICAgICAgICAgICAgICAgIlxcVytpc1xcVytoZXJlYnlcXFcrZ3JhbnRlZFxcVyt3aXRob3V0XFxXK2ZlZVxcVytwcm92aWRlZFxcVyt0aGF0XFxXK3RoZVxcVythYm92ZVxcVytjb3B5cmlnaHRcXFcrbm90aWNlIgogICAgICAgICAgICAgICAgICAgICAiXFxXK2FwcGVhcnNcXFcraW5cXFcrYWxsXFxXK2NvcGllc1xcVythbmRcXFcrdGhhdFxcVytib3RoXFxXK3RoYXRcXFcrY29weXJpZ2h0XFxXK25vdGljZVxcVythbmRcXFcrdGhpcyIKICAgICAgICAgICAgICAgICAgICAgIlxcVytwZXJtaXNzaW9uXFxXK25vdGljZVxcVythcHBlYXJcXFcraW5cXFcrc3VwcG9ydGluZ1xcVytkb2N1bWVudGF0aW9uIgogICAgICAgICAgICAgICAgICAgICAiW148Pl17MSwxMDB9XFxXKyhtYWtlXFxXK2FueVxcVytyZXByZXNlbnRhdGlvbnxtYWtlc1xcVytub1xcVytyZXByZXNlbnRhdGlvbnMpXFxXK2Fib3V0XFxXK3RoZVxcVytzdWl0YWJpbGl0eVxcVytvZlxcVyt0aGlzIgogICAgICAgICAgICAgICAgICAgICAiXFxXK3NvZnR3YXJlXFxXK2ZvclxcVythbnlcXFcrcHVycG9zZVxcVytJdFxcVytpc1xcVytwcm92aWRlZFxcVythc1xcVytpc1xcVyt3aXRob3V0XFxXK2V4cHJlc3NcXFcrb3IiCiAgICAgICAgICAgICAgICAgICAgICJcXFcraW1wbGllZFxcVyt3YXJyYW50eSIKICAgICAgICAgICAgICAgICAgICAgLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGJvb3N0OjpyZWdleChnZW5lcmljX2F1dGhvcl9zaWcsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgZ2VuZXJpY19hdXRob3JfZm9ybWF0CiAgICAgICAgICwKICAgICAgICAgIk9sZCBzdHlsZSBCb29zdCBsaWNlbnNlICM2IgogICAgICAgICAsCiAgICAgICAgICI8UD5Db3B5cmlnaHQgPEk+QXV0aG9yIERhdGE8L0k+PC9QPiIKICAgICAgICAgIjxQPlBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIHNlbGwsIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgIgogICAgICAgICAiaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSAiCiAgICAgICAgICJhcHBlYXJzIGluIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgIgogICAgICAgICAicGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgIgogICAgICAgICAiPEk+QXV0aG9yPC9JPiBtYWtlcyBubyByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgIgogICAgICAgICAic29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiBJdCBpcyBwcm92aWRlZCBcImFzIGlzXCIgd2l0aG91dCBleHByZXNzIG9yICIKICAgICAgICAgImltcGxpZWQgd2FycmFudHkuPC9QPiIKICAgICAgICkKICAgICAgLAogICAgICBsaWNlbnNlX2luZm8oIGJvb3N0OjpyZWdleCgiUGVybWlzc2lvblxcVyt0b1xcVytjb3B5IgogICAgICAgICAgICAgICAgICAgICAiW15cIls6d29yZDpdXSt1c2VcXFcrbW9kaWZ5XFxXK3NlbGxcXFcrYW5kXFxXK2Rpc3RyaWJ1dGVcXFcrdGhpc1xcVytzb2Z0d2FyZVxcVytpc1xcVytncmFudGVkXFxXK3Byb3ZpZGVkIgogICAgICAgICAgICAgICAgICAgICAiXFxXK3RoaXNcXFcrY29weXJpZ2h0XFxXK25vdGljZVxcVythcHBlYXJzXFxXK2luXFxXK2FsbFxcVytjb3BpZXNcXFcrb2ZcXFcrdGhlXFxXK3NvdXJjZVxcVytUaGlzIgogICAgICAgICAgICAgICAgICAgICAiXFxXK3NvZnR3YXJlXFxXK2lzXFxXK3Byb3ZpZGVkXFxXK2FzXFxXK2lzXFxXK3dpdGhvdXRcXFcrZXhwcmVzc1xcVytvclxcVytpbXBsaWVkXFxXK3dhcnJhbnR5IgogICAgICAgICAgICAgICAgICAgICAiXFxXK2FuZFxcVyt3aXRoXFxXK25vXFxXK2NsYWltXFxXK2FzXFxXK3RvXFxXK2l0c1xcVytzdWl0YWJpbGl0eVxcVytmb3JcXFcrYW55XFxXK3B1cnBvc2UiCiAgICAgICAgICAgICAgICAgICAgICwgYm9vc3Q6OnJlZ2V4OjpwZXJsIHwgYm9vc3Q6OnJlZ2V4OjppY2FzZSkKICAgICAgICAgLAogICAgICAgICBib29zdDo6cmVnZXgoZ2VuZXJpY19hdXRob3Jfc2lnLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGdlbmVyaWNfYXV0aG9yX2Zvcm1hdAogICAgICAgICAsCiAgICAgICAgICJPbGQgc3R5bGUgQm9vc3QgbGljZW5zZSAjNyIKICAgICAgICAgLAogICAgICAgICAiPFA+Q29weXJpZ2h0IDxJPkF1dGhvciBEYXRlPC9JPi4gUGVybWlzc2lvbiB0byBjb3B5LCAiCiAgICAgICAgICJ1c2UsIG1vZGlmeSwgc2VsbCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGlzIGdyYW50ZWQgcHJvdmlkZWQgIgogICAgICAgICAidGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcyBvZiB0aGUgc291cmNlLiBUaGlzICIKICAgICAgICAgInNvZnR3YXJlIGlzIHByb3ZpZGVkIFwiYXMgaXNcIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eSwgIgogICAgICAgICAiYW5kIHdpdGggbm8gY2xhaW0gYXMgdG8gaXRzIHN1aXRhYmlsaXR5IGZvciBhbnkgcHVycG9zZS4iCiAgICAgICApCiAgICAgICwKICAgICAgbGljZW5zZV9pbmZvKGJvb3N0OjpyZWdleCgiVGhpc1xcVytzb2Z0d2FyZVxcVytpc1xcVytwcm92aWRlZFxcVythcy1pc1xcVyt3aXRob3V0XFxXK2FueVxcVytleHByZXNzXFxXK29yXFxXK2ltcGxpZWQiCiAgICAgICJcXFcrd2FycmFudHlcXFcrSW5cXFcrbm9cXFcrZXZlbnRcXFcrd2lsbFxcVyt0aGVcXFcrY29weXJpZ2h0XFxXK2hvbGRlclxcVytiZVxcVytoZWxkXFxXK2xpYWJsZVxcVytmb3IiCiAgICAgICJcXFcrYW55XFxXK2RhbWFnZXNcXFcrYXJpc2luZ1xcVytmcm9tXFxXK3RoZVxcVyt1c2VcXFcrb2ZcXFcrdGhpc1xcVytzb2Z0d2FyZSIKICAgICAgIlxcVytQZXJtaXNzaW9uXFxXK2lzXFxXK2dyYW50ZWRcXFcrdG9cXFcrYW55b25lXFxXK3RvXFxXK3VzZVxcVyt0aGlzXFxXK3NvZnR3YXJlXFxXK2ZvclxcVythbnlcXFcrcHVycG9zZSIKICAgICAgIlxcVytpbmNsdWRpbmdcXFcrY29tbWVyY2lhbFxcVythcHBsaWNhdGlvbnNcXFcrYW5kXFxXK3RvXFxXK2FsdGVyXFxXK2l0XFxXK2FuZFxcVytyZWRpc3RyaWJ1dGUiCiAgICAgICJcXFcraXRcXFcrZnJlZWx5XFxXK3N1YmplY3RcXFcrdG9cXFcrdGhlXFxXK2ZvbGxvd2luZ1xcVytyZXN0cmljdGlvbnM6IgogICAgICAiXFxXKzFcXFcrVGhlXFxXK29yaWdpblxcVytvZlxcVyt0aGlzXFxXK3NvZnR3YXJlXFxXK211c3RcXFcrbm90XFxXK2JlXFxXK21pc3JlcHJlc2VudGVkO1xcVyt5b3VcXFcrbXVzdCIKICAgICAgIlxcVytub3RcXFcrY2xhaW1cXFcrdGhhdFxcVyt5b3VcXFcrd3JvdGVcXFcrdGhlXFxXK29yaWdpbmFsXFxXK3NvZnR3YXJlXFxXK0lmXFxXK3lvdVxcVyt1c2VcXFcrdGhpcyIKICAgICAgIlxcVytzb2Z0d2FyZVxcVytpblxcVythXFxXK3Byb2R1Y3RcXFcrYW5cXFcrYWNrbm93bGVkZ21lbnRcXFcraW5cXFcrdGhlXFxXK3Byb2R1Y3RcXFcrZG9jdW1lbnRhdGlvbiIKICAgICAgIlxcVyt3b3VsZFxcVytiZVxcVythcHByZWNpYXRlZFxcVytidXRcXFcraXNcXFcrbm90XFxXK3JlcXVpcmVkIgogICAgICAiXFxXKzJcXFcrQWx0ZXJlZFxcVytzb3VyY2VcXFcrdmVyc2lvbnNcXFcrbXVzdFxcVytiZVxcVytwbGFpbmx5XFxXK21hcmtlZFxcVythc1xcVytzdWNoXFxXK2FuZFxcVyttdXN0IgogICAgICAiXFxXK25vdFxcVytiZVxcVyttaXNyZXByZXNlbnRlZFxcVythc1xcVytiZWluZ1xcVyt0aGVcXFcrb3JpZ2luYWxcXFcrc29mdHdhcmUiCiAgICAgICJcXFcrM1xcVytUaGlzXFxXK25vdGljZVxcVyttYXlcXFcrbm90XFxXK2JlXFxXK3JlbW92ZWRcXFcrb3JcXFcrYWx0ZXJlZFxcVytmcm9tXFxXK2FueVxcVytzb3VyY2UiCiAgICAgICJcXFcrZGlzdHJpYnV0aW9uIgogICAgICAgICAgICAgICAgICAgICAsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgYm9vc3Q6OnJlZ2V4KGdlbmVyaWNfYXV0aG9yX3NpZywgYm9vc3Q6OnJlZ2V4OjpwZXJsIHwgYm9vc3Q6OnJlZ2V4OjppY2FzZSkKICAgICAgICAgLAogICAgICAgICBnZW5lcmljX2F1dGhvcl9mb3JtYXQKICAgICAgICAgLAogICAgICAgICAiT2xkIHN0eWxlIEJvb3N0IGxpY2Vuc2UgIzgiCiAgICAgICAgICwKICAgICAgICAgIjxQPlBob2VuaXggVjAuOTxCUj5Db3B5cmlnaHQgKGMpIDxJPkRhdGU8L0k+IEpvZWwgZGUgR3V6bWFuPC9QPiIKICAgICAgICAgIjxQPlRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkICIKICAgICAgICAgIndhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGJlIGhlbGQgbGlhYmxlIGZvciAiCiAgICAgICAgICJhbnkgZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLjwvUD4iCiAgICAgICAgICI8UD5QZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSwgIgogICAgICAgICAiaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSAiCiAgICAgICAgICJpdCBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6PC9QPiIKICAgICAgICAgIjxQPjEuICBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0ICIKICAgICAgICAgIm5vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyAiCiAgICAgICAgICJzb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gIgogICAgICAgICAid291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC48L1A+IgogICAgICAgICAiMi4gIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3QgIgogICAgICAgICAibm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gPC9QPiIKICAgICAgICAgIjxQPjMuICBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgIgogICAgICAgICAiZGlzdHJpYnV0aW9uLiAiCiAgICAgICApCiAgICAgICwKICAgICAgbGljZW5zZV9pbmZvKCBib29zdDo6cmVnZXgoIlBlcm1pc3Npb25cXFcrdG9cXFcrdXNlXFxXK2NvcHlcXFcrbW9kaWZ5XFxXK3NlbGxcXFcrYW5kXFxXK2Rpc3RyaWJ1dGVcXFcrdGhpc1xcVytzb2Z0d2FyZSIKICAgICAgICAgICAgICAgICAgICAgIlxcVytpc1xcVytoZXJlYnlcXFcrZ3JhbnRlZFxcVyt3aXRob3V0XFxXK2ZlZVxcVytwcm92aWRlZFxcVyt0aGF0XFxXK3RoZVxcVythYm92ZVxcVytjb3B5cmlnaHRcXFcrbm90aWNlIgogICAgICAgICAgICAgICAgICAgICAiXFxXK2FwcGVhcnNcXFcraW5cXFcrYWxsXFxXK2NvcGllc1xcVythbmRcXFcrdGhhdFxcVytib3RoXFxXK3RoYXRcXFcrY29weXJpZ2h0XFxXK25vdGljZVxcVythbmRcXFcrdGhpcyIKICAgICAgICAgICAgICAgICAgICAgIlxcVytwZXJtaXNzaW9uXFxXK25vdGljZVxcVythcHBlYXJcXFcraW5cXFcrc3VwcG9ydGluZ1xcVytkb2N1bWVudGF0aW9uIgogICAgICAgICAgICAgICAgICAgICAiXFxXK05vbmVcXFcrb2ZcXFcrdGhlXFxXK2Fib3ZlXFxXK2F1dGhvcnNcXFcrbm9yLnsxLDEwMH1tYWtlXFxXK2FueSIKICAgICAgICAgICAgICAgICAgICAgIlxcVytyZXByZXNlbnRhdGlvblxcVythYm91dFxcVyt0aGVcXFcrc3VpdGFiaWxpdHlcXFcrb2ZcXFcrdGhpc1xcVytzb2Z0d2FyZVxcVytmb3JcXFcrYW55IgogICAgICAgICAgICAgICAgICAgICAiXFxXK3B1cnBvc2VcXFcrSXRcXFcraXNcXFcrcHJvdmlkZWRcXFcrYXNcXFcraXNcXFcrd2l0aG91dFxcVytleHByZXNzXFxXK29yXFxXK2ltcGxpZWRcXFcrd2FycmFudHkiCiAgICAgICAgICAgICAgICAgICAgICwgYm9vc3Q6OnJlZ2V4OjpwZXJsIHwgYm9vc3Q6OnJlZ2V4OjppY2FzZSkKICAgICAgICAgLAogICAgICAgICBib29zdDo6cmVnZXgoZ2VuZXJpY19hdXRob3Jfc2lnLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGdlbmVyaWNfYXV0aG9yX2Zvcm1hdAogICAgICAgICAsCiAgICAgICAgICJPbGQgc3R5bGUgQm9vc3QgbGljZW5zZSAjOSIKICAgICAgICAgLAogICAgICAgICAiPFA+Q29weXJpZ2h0IDxJPiBBdXRob3IgRGF0ZTwvST48QlI+IgogICAgICAgICAiUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgc2VsbCwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSAiCiAgICAgICAgICJpcyBoZXJlYnkgZ3JhbnRlZCB3aXRob3V0IGZlZSBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlICIKICAgICAgICAgImFwcGVhcnMgaW4gYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyAiCiAgICAgICAgICJwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCA8QlI+IgogICAgICAgICAiTm9uZSBvZiB0aGUgYWJvdmUgYXV0aG9ycyBub3IgPEk+QXV0aG9yJ3MgT3JnYW5pc2F0aW9uPC9JPiBtYWtlIGFueSAiCiAgICAgICAgICJyZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55ICIKICAgICAgICAgInB1cnBvc2UuIEl0IGlzIHByb3ZpZGVkIFwiYXMgaXNcIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4iCiAgICAgICApCiAgICAgICwKICAgICAgbGljZW5zZV9pbmZvKCBib29zdDo6cmVnZXgoIlBlcm1pc3Npb25cXFcrdG9cXFcrdXNlXFxXK2NvcHlcXFcrbW9kaWZ5XFxXK2FuZFxcVytkaXN0cmlidXRlXFxXK3RoaXNcXFcrc29mdHdhcmVcXFcrZm9yXFxXK2FueSIKICAgICAgICAgICAgICAgICAgICAgIlxcVytwdXJwb3NlXFxXK2lzXFxXK2hlcmVieVxcVytncmFudGVkXFxXK3dpdGhvdXRcXFcrZmVlXFxXK3Byb3ZpZGVkXFxXK3RoYXRcXFcrdGhpc1xcVytjb3B5cmlnaHRcXFcrYW5kIgogICAgICAgICAgICAgICAgICAgICAiXFxXK3Blcm1pc3Npb25zXFxXK25vdGljZVxcVythcHBlYXJcXFcraW5cXFcrYWxsXFxXK2NvcGllc1xcVythbmRcXFcrZGVyaXZhdGl2ZXMiCiAgICAgICAgICAgICAgICAgICAgICJcXFcrVGhpc1xcVytzb2Z0d2FyZVxcVytpc1xcVytwcm92aWRlZFxcVythc1xcVytpc1xcVyt3aXRob3V0XFxXK2V4cHJlc3NcXFcrb3JcXFcraW1wbGllZFxcVyt3YXJyYW50eSIKICAgICAgICAgICAgICAgICAgICAgLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGJvb3N0OjpyZWdleChnZW5lcmljX2F1dGhvcl9zaWcsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgZ2VuZXJpY19hdXRob3JfZm9ybWF0CiAgICAgICAgICwKICAgICAgICAgIk9sZCBzdHlsZSBCb29zdCBsaWNlbnNlICMxMCIKICAgICAgICAgLAogICAgICAgICAiPFA+Q29weXJpZ2h0IDxJPkF1dGhvciBEYXRlPC9JPi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48L1A+IgogICAgICAgICAiPFA+UGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55ICIKICAgICAgICAgInB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsIHByb3ZpZGVkIHRoYXQgdGhpcyBjb3B5cmlnaHQgYW5kICIKICAgICAgICAgInBlcm1pc3Npb25zIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgZGVyaXZhdGl2ZXMuPC9QPiIKICAgICAgICAgIjxQPlRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgXCJhcyBpc1wiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LjwvUD4iCiAgICAgICApCiAgICAgICwKICAgICAgbGljZW5zZV9pbmZvKCBib29zdDo6cmVnZXgoIlRoaXNcXFcrbWF0ZXJpYWxcXFcraXNcXFcrcHJvdmlkZWRcXFcrYXNcXFcraXNcXFcrd2l0aFxcVythYnNvbHV0ZWx5XFxXK25vXFxXK3dhcnJhbnR5XFxXK2V4cHJlc3NlZCIKICAgICAgICAgICAgICAgICAgICAgIlxcVytvclxcVytpbXBsaWVkXFxXK0FueVxcVyt1c2VcXFcraXNcXFcrYXRcXFcreW91clxcVytvd25cXFcrcmlzayIKICAgICAgICAgICAgICAgICAgICAgIlxcVytQZXJtaXNzaW9uXFxXK3RvXFxXK3VzZVxcVytvclxcVytjb3B5XFxXK3RoaXNcXFcrc29mdHdhcmVcXFcrZm9yXFxXK2FueVxcVytwdXJwb3NlXFxXK2lzXFxXK2hlcmVieVxcVytncmFudGVkIgogICAgICAgICAgICAgICAgICAgICAiXFxXK3dpdGhvdXRcXFcrZmVlXFxXK3Byb3ZpZGVkXFxXK3RoZVxcVythYm92ZVxcVytub3RpY2VzXFxXK2FyZVxcVytyZXRhaW5lZFxcVytvblxcVythbGxcXFcrY29waWVzIgogICAgICAgICAgICAgICAgICAgICAiXFxXK1Blcm1pc3Npb25cXFcrdG9cXFcrbW9kaWZ5XFxXK3RoZVxcVytjb2RlXFxXK2FuZFxcVyt0b1xcVytkaXN0cmlidXRlXFxXK21vZGlmaWVkXFxXK2NvZGVcXFcraXNcXFcrZ3JhbnRlZCIKICAgICAgICAgICAgICAgICAgICAgIlxcVytwcm92aWRlZFxcVyt0aGVcXFcrYWJvdmVcXFcrbm90aWNlc1xcVythcmVcXFcrcmV0YWluZWRcXFcrYW5kXFxXK2FcXFcrbm90aWNlXFxXK3RoYXRcXFcrdGhlXFxXK2NvZGVcXFcrd2FzIgogICAgICAgICAgICAgICAgICAgICAiXFxXK21vZGlmaWVkXFxXK2lzXFxXK2luY2x1ZGVkXFxXK3dpdGhcXFcrdGhlXFxXK2Fib3ZlXFxXK2NvcHlyaWdodFxcVytub3RpY2UiCiAgICAgICAgICAgICAgICAgICAgICwgYm9vc3Q6OnJlZ2V4OjpwZXJsIHwgYm9vc3Q6OnJlZ2V4OjppY2FzZSkKICAgICAgICAgLAogICAgICAgICBib29zdDo6cmVnZXgoZ2VuZXJpY19hdXRob3Jfc2lnLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGdlbmVyaWNfYXV0aG9yX2Zvcm1hdAogICAgICAgICAsCiAgICAgICAgICJPbGQgc3R5bGUgQm9vc3QgbGljZW5zZSAjMTEiCiAgICAgICAgICwKICAgICAgICAgIjxQPlRoaXMgbWF0ZXJpYWwgaXMgcHJvdmlkZWQgXCJhcyBpc1wiLCB3aXRoIGFic29sdXRlbHkgbm8gd2FycmFudHkgZXhwcmVzc2VkICIKICAgICAgICAgIm9yIGltcGxpZWQuIEFueSB1c2UgaXMgYXQgeW91ciBvd24gcmlzay48L1A+IgogICAgICAgICAiPFA+UGVybWlzc2lvbiB0byB1c2Ugb3IgY29weSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCAiCiAgICAgICAgICJ3aXRob3V0IGZlZSwgcHJvdmlkZWQgdGhlIGFib3ZlIG5vdGljZXMgYXJlIHJldGFpbmVkIG9uIGFsbCBjb3BpZXMuICIKICAgICAgICAgIlBlcm1pc3Npb24gdG8gbW9kaWZ5IHRoZSBjb2RlIGFuZCB0byBkaXN0cmlidXRlIG1vZGlmaWVkIGNvZGUgaXMgZ3JhbnRlZCwgIgogICAgICAgICAicHJvdmlkZWQgdGhlIGFib3ZlIG5vdGljZXMgYXJlIHJldGFpbmVkLCBhbmQgYSBub3RpY2UgdGhhdCB0aGUgY29kZSB3YXMgIgogICAgICAgICAibW9kaWZpZWQgaXMgaW5jbHVkZWQgd2l0aCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZS48L1A+IgogICAgICAgKQogICAgICAsCiAgICAgIGxpY2Vuc2VfaW5mbyggYm9vc3Q6OnJlZ2V4KCJQZXJtaXNzaW9uXFxXK3RvXFxXK2NvcHlcXFcrdXNlXFxXK2FuZFxcVytkaXN0cmlidXRlXFxXK3RoaXNcXFcrc29mdHdhcmVcXFcraXNcXFcrZ3JhbnRlZFxcVytwcm92aWRlZCIKICAgICAgICAgICAgICAgICAgICAgIlxcVyt0aGF0XFxXK3RoaXNcXFcrY29weXJpZ2h0XFxXK25vdGljZVxcVythcHBlYXJzXFxXK2luXFxXK2FsbFxcVytjb3BpZXMiCiAgICAgICAgICAgICAgICAgICAgICJcXFcrUGVybWlzc2lvblxcVyt0b1xcVyttb2RpZnlcXFcrdGhlXFxXK2NvZGVcXFcrYW5kXFxXK3RvXFxXK2Rpc3RyaWJ1dGVcXFcrbW9kaWZpZWRcXFcrY29kZVxcVytpc1xcVytncmFudGVkIgogICAgICAgICAgICAgICAgICAgICAiXFxXK3Byb3ZpZGVkXFxXK3RoYXRcXFcrdGhpc1xcVytjb3B5cmlnaHRcXFcrbm90aWNlXFxXK2FwcGVhcnNcXFcraW5cXFcrYWxsXFxXK2NvcGllc1xcVythbmRcXFcrYVxcVytub3RpY2UiCiAgICAgICAgICAgICAgICAgICAgICJcXFcrdGhhdFxcVyt0aGVcXFcrY29kZVxcVyt3YXNcXFcrbW9kaWZpZWRcXFcraXNcXFcraW5jbHVkZWRcXFcrd2l0aFxcVyt0aGVcXFcrY29weXJpZ2h0XFxXK25vdGljZSIKICAgICAgICAgICAgICAgICAgICAgIlxcVytUaGlzXFxXK3NvZnR3YXJlXFxXK2lzXFxXK3Byb3ZpZGVkXFxXK2FzXFxXK2lzXFxXK3dpdGhvdXRcXFcrZXhwcmVzc1xcVytvclxcVytpbXBsaWVkXFxXK3dhcnJhbnR5XFxXK2FuZCIKICAgICAgICAgICAgICAgICAgICAgIlxcVyt3aXRoXFxXK25vXFxXK2NsYWltXFxXK2FzXFxXK3RvXFxXK2l0c1xcVytzdWl0YWJpbGl0eVxcVytmb3JcXFcrYW55XFxXK3B1cnBvc2UiCiAgICAgICAgICAgICAgICAgICAgICwgYm9vc3Q6OnJlZ2V4OjpwZXJsIHwgYm9vc3Q6OnJlZ2V4OjppY2FzZSkKICAgICAgICAgLAogICAgICAgICBib29zdDo6cmVnZXgoZ2VuZXJpY19hdXRob3Jfc2lnLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGdlbmVyaWNfYXV0aG9yX2Zvcm1hdAogICAgICAgICAsCiAgICAgICAgICJPbGQgc3R5bGUgQm9vc3QgbGljZW5zZSAjMTIiCiAgICAgICAgICwKICAgICAgICAgIjxQPkNvcHlyaWdodCAoQykgPEk+RGF0ZSBBdXRob3I8L0k+PC9QPjxQPlBlcm1pc3Npb24gdG8gY29weSwgdXNlLCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGlzIGdyYW50ZWQsIHByb3ZpZGVkICIKICAgICAgICAgInRoYXQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcy48QlI+IgogICAgICAgICAiUGVybWlzc2lvbiB0byBtb2RpZnkgdGhlIGNvZGUgYW5kIHRvIGRpc3RyaWJ1dGUgbW9kaWZpZWQgY29kZSBpcyBncmFudGVkLCAiCiAgICAgICAgICJwcm92aWRlZCB0aGF0IHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMsIGFuZCBhIG5vdGljZSAiCiAgICAgICAgICJ0aGF0IHRoZSBjb2RlIHdhcyBtb2RpZmllZCBpcyBpbmNsdWRlZCB3aXRoIHRoZSBjb3B5cmlnaHQgbm90aWNlLjwvUD4iCiAgICAgICAgICI8UD5UaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIFwiYXMgaXNcIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eSwgYW5kICIKICAgICAgICAgIndpdGggbm8gY2xhaW0gYXMgdG8gaXRzIHN1aXRhYmlsaXR5IGZvciBhbnkgcHVycG9zZS48L1A+IgogICAgICAgKQogICAgICAsCiAgICAgIGxpY2Vuc2VfaW5mbyggYm9vc3Q6OnJlZ2V4KCJQZXJtaXNzaW9uXFxXK3RvXFxXK2NvcHlcXFcrYW5kXFxXK3VzZVxcVyt0aGlzXFxXK3NvZnR3YXJlXFxXK2lzXFxXK2dyYW50ZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXFcrcHJvdmlkZWRcXFcrdGhpc1xcVytjb3B5cmlnaHRcXFcrbm90aWNlXFxXK2FwcGVhcnNcXFcraW5cXFcrYWxsXFxXK2NvcGllcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcVytQZXJtaXNzaW9uXFxXK3RvXFxXK21vZGlmeVxcVyt0aGVcXFcrY29kZVxcVythbmRcXFcrdG9cXFcrZGlzdHJpYnV0ZVxcVyttb2RpZmllZFxcVytjb2RlXFxXK2lzXFxXK2dyYW50ZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXFcrcHJvdmlkZWRcXFcrdGhpc1xcVytjb3B5cmlnaHRcXFcrbm90aWNlXFxXK2FwcGVhcnNcXFcraW5cXFcrYWxsXFxXK2NvcGllc1xcVythbmRcXFcrYVxcVytub3RpY2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXFcrdGhhdFxcVyt0aGVcXFcrY29kZVxcVyt3YXNcXFcrbW9kaWZpZWRcXFcraXNcXFcraW5jbHVkZWRcXFcrd2l0aFxcVyt0aGVcXFcrY29weXJpZ2h0XFxXK25vdGljZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcVytUaGlzXFxXK3NvZnR3YXJlXFxXK2lzXFxXK3Byb3ZpZGVkXFxXK2FzXFxXK2lzXFxXK3dpdGhvdXRcXFcrZXhwcmVzc1xcVytvclxcVytpbXBsaWVkXFxXK3dhcnJhbnR5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxXK2FuZFxcVyt3aXRoXFxXK25vXFxXK2NsYWltXFxXK2FzXFxXK3RvXFxXK2l0c1xcVytzdWl0YWJpbGl0eVxcVytmb3JcXFcrYW55XFxXK3B1cnBvc2UiCiAgICAgICAgICAgICAgICAgICAgICwgYm9vc3Q6OnJlZ2V4OjpwZXJsIHwgYm9vc3Q6OnJlZ2V4OjppY2FzZSkKICAgICAgICAgLAogICAgICAgICBib29zdDo6cmVnZXgoZ2VuZXJpY19hdXRob3Jfc2lnLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGdlbmVyaWNfYXV0aG9yX2Zvcm1hdAogICAgICAgICAsCiAgICAgICAgICJPbGQgc3R5bGUgQm9vc3QgbGljZW5zZSAjMTMiCiAgICAgICAgICwKICAgICAgICAgIjxQPkNvcHlyaWdodCAoQykgPEk+RGF0ZSBBdXRob3I8L0k+PC9QPiIKICAgICAgICAgIjxQPlBlcm1pc3Npb24gdG8gY29weSBhbmQgdXNlIHRoaXMgc29mdHdhcmUgaXMgZ3JhbnRlZCwgIgogICAgICAgICAicHJvdmlkZWQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcy4gIgogICAgICAgICAiUGVybWlzc2lvbiB0byBtb2RpZnkgdGhlIGNvZGUgYW5kIHRvIGRpc3RyaWJ1dGUgbW9kaWZpZWQgY29kZSBpcyBncmFudGVkLCAiCiAgICAgICAgICJwcm92aWRlZCB0aGlzIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbiBhbGwgY29waWVzLCBhbmQgYSBub3RpY2UgIgogICAgICAgICAidGhhdCB0aGUgY29kZSB3YXMgbW9kaWZpZWQgaXMgaW5jbHVkZWQgd2l0aCB0aGUgY29weXJpZ2h0IG5vdGljZS48L1A+IgogICAgICAgICAiPFA+VGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBcImFzIGlzXCIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHksICIKICAgICAgICAgImFuZCB3aXRoIG5vIGNsYWltIGFzIHRvIGl0cyBzdWl0YWJpbGl0eSBmb3IgYW55IHB1cnBvc2UuPC9QPiIKICAgICAgICkKICAgICAgLAogICAgICBsaWNlbnNlX2luZm8oIGJvb3N0OjpyZWdleCgiQ29weXJpZ2h0XFxXK0tldmxpblxcVytIZW5uZXlcXFcrMjAwMFxcVytBbGxcXFcrcmlnaHRzXFxXK3Jlc2VydmVkXFxXKyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBlcm1pc3Npb25cXFcrdG9cXFcrdXNlXFxXK2NvcHlcXFcrbW9kaWZ5XFxXK2FuZFxcVytkaXN0cmlidXRlXFxXK3RoaXNcXFcrc29mdHdhcmVcXFcrZm9yXFxXK2FueSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcVytwdXJwb3NlXFxXK2lzXFxXK2hlcmVieVxcVytncmFudGVkXFxXK3dpdGhvdXRcXFcrZmVlXFxXK3Byb3ZpZGVkXFxXK3RoYXRcXFcrdGhpc1xcVytjb3B5cmlnaHRcXFcrYW5kIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxXK3Blcm1pc3Npb25zXFxXK25vdGljZVxcVythcHBlYXJcXFcraW5cXFcrYWxsXFxXK2NvcGllc1xcVythbmRcXFcrZGVyaXZhdGl2ZXNcXFcrYW5kXFxXK3RoYXRcXFcrbm8iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXFcrY2hhcmdlXFxXK21heVxcVytiZVxcVyttYWRlXFxXK2ZvclxcVyt0aGVcXFcrc29mdHdhcmVcXFcrYW5kXFxXK2l0c1xcVytkb2N1bWVudGF0aW9uXFxXK2V4Y2VwdFxcVyt0b1xcVytjb3ZlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcVytjb3N0XFxXK29mXFxXK2Rpc3RyaWJ1dGlvbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcVytUaGlzXFxXK3NvZnR3YXJlXFxXK2lzXFxXK3Byb3ZpZGVkXFxXK2FzXFxXK2lzXFxXK3dpdGhvdXRcXFcrZXhwcmVzc1xcVytvclxcVytpbXBsaWVkXFxXK3dhcnJhbnR5XFxXKyIKICAgICAgICAgICAgICAgICAgICAgLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGJvb3N0OjpyZWdleChnZW5lcmljX2F1dGhvcl9zaWcsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgZ2VuZXJpY19hdXRob3JfZm9ybWF0CiAgICAgICAgICwKICAgICAgICAgIk9sZCBzdHlsZSBCb29zdCBsaWNlbnNlICMxNCIKICAgICAgICAgLAogICAgICAgICAiPFA+Q29weXJpZ2h0IFRoZSBBdXRob3IsIFRoZSBEYXRlLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvUD4iCiAgICAgICAgICI8UD5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkiCiAgICAgICAgICIgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCB3aXRob3V0IGZlZSwgcHJvdmlkZWQgdGhhdCB0aGlzIGNvcHlyaWdodCBhbmQiCiAgICAgICAgICIgcGVybWlzc2lvbnMgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCBkZXJpdmF0aXZlcywgYW5kIHRoYXQgbm8iCiAgICAgICAgICIgY2hhcmdlIG1heSBiZSBtYWRlIGZvciB0aGUgc29mdHdhcmUgYW5kIGl0cyBkb2N1bWVudGF0aW9uIGV4Y2VwdCB0byBjb3ZlciIKICAgICAgICAgIiBjb3N0IG9mIGRpc3RyaWJ1dGlvbi48L1A+IgogICAgICAgICAiPFA+VGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBcImFzIGlzXCIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuPC9QPiIKICAgICAgICkKICAgICAgLAogICAgICBsaWNlbnNlX2luZm8oIGJvb3N0OjpyZWdleCgicHJlcHJvY2Vzc2VkXFxXK3ZlcnNpb25cXFcrb2ZcXFcrYm9vc3QvbXBsLy4qXFwuaHBwXFxXK2hlYWRlclxcVytzZWVcXFcrdGhlXFxXK29yaWdpbmFsXFxXK2ZvclxcVytjb3B5cmlnaHRcXFcraW5mb3JtYXRpb24iLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGJvb3N0OjpyZWdleChnZW5lcmljX2F1dGhvcl9zaWcsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgZ2VuZXJpY19hdXRob3JfZm9ybWF0CiAgICAgICAgICwKICAgICAgICAgIlNHSSBTdHlsZSBMaWNlbmNlIChNUEwgcHJlcHJvY2Vzc2VkIGZpbGUpIgogICAgICAgICAsCiAgICAgICAgICI8UD5Db3B5cmlnaHQgKGMpIDxJPkRhdGU8L0k+PEJSPiIKICAgICAgICAgIjxJPkF1dGhvcjwvST48QlI+IgogICAgICAgICAiPEJSPiIKICAgICAgICAgIlBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZSAiCiAgICAgICAgICJhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLCAiCiAgICAgICAgICJwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCAiCiAgICAgICAgICJ0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciAiCiAgICAgICAgICJpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICA8ST5BdXRob3I8L0k+IG1ha2VzIG5vIHJlcHJlc2VudGF0aW9ucyAiCiAgICAgICAgICJhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICIKICAgICAgICAgIkl0IGlzIHByb3ZpZGVkIFwiYXMgaXNcIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS48L1A+IgogICAgICAgKQogICAgICAsCiAgICAgIGxpY2Vuc2VfaW5mbyggYm9vc3Q6OnJlZ2V4KAogICAgICAgICAgICAiVGhpc1xcVytmaWxlXFxXK2lzXFxXK3BhcnRcXFcrb2ZcXFcramFtXFxXKyIKICAgICAgICAgICAgIkxpY2Vuc2VcXFcraXNcXFcraGVyZWJ5XFxXK2dyYW50ZWRcXFcrdG9cXFcrdXNlXFxXK3RoaXNcXFcrc29mdHdhcmVcXFcrYW5kXFxXK2Rpc3RyaWJ1dGVcXFcraXRcXFcrIgogICAgICAgICAgICAiZnJlZWx5XFxXK2FzXFxXK2xvbmdcXFcrYXNcXFcrdGhpc1xcVytjb3B5cmlnaHRcXFcrbm90aWNlXFxXK2lzXFxXK3JldGFpbmVkXFxXK2FuZFxcVyttb2RpZmljYXRpb25zXFxXKyIKICAgICAgICAgICAgImFyZVxcVytjbGVhcmx5XFxXK21hcmtlZFxcVysiCiAgICAgICAgICAgICJBTExcXFcrV0FSUkFOVElFU1xcVytBUkVcXFcrSEVSRUJZXFxXK0RJU0NMQUlNRUQiCiAgICAgICAgICAgICJ8IgogICAgICAgICAgICAiVGhpc1xcVytmaWxlXFxXK2lzXFxXK3BhcnRcXFcrb2ZcXFcrSmFtXFxXK3NlZVxcVytqYW1cXC5jXFxXK2ZvclxcVytDb3B5cmlnaHRcXFcraW5mb3JtYXRpb24iCiAgICAgICAgICAgICJ8VGhpcyBmaWxlIGhhcyBiZWVuIGRvbmF0ZWQgdG8gSmFtIgogICAgICAgICAgICAifEdlbmVyYXRlZCBieSBta2phbWJhc2UgZnJvbSBKYW1iYXNlIiAsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgYm9vc3Q6OnJlZ2V4KGdlbmVyaWNfYXV0aG9yX3NpZyArIHN0ZDo6c3RyaW5nKCJ8KENyYWlnXFxXK1dcXFcrTWNQaGVldGVyc1xcVytBbGlhc1xcVytXYXZlZnJvbnQpfChHZW5lcmF0ZWQgYnkgbWtqYW1iYXNlIGZyb20gSmFtYmFzZSkiKSwgYm9vc3Q6OnJlZ2V4OjpwZXJsIHwgYm9vc3Q6OnJlZ2V4OjppY2FzZSkKICAgICAgICAgLAogICAgICAgICBnZW5lcmljX2F1dGhvcl9mb3JtYXQgKyBzdGQ6OnN0cmluZygiKD80Q3JhaWcgVy4gTWNQaGVldGVycywgQWxpYXN8V2F2ZWZyb250KSg/NUNocmlzdG9waGVyIFNlaXdhbGQgYW5kIFBlcmZvcmNlIFNvZnR3YXJlLCBJbmMpIikKICAgICAgICAgLAogICAgICAgICAiUGVyZm9yY2UgSmFtIExpY2Vuc2UiCiAgICAgICAgICwKICAgICAgICAgIjxQPkNvcHlyaWdodCAxOTkzLTIwMDIgQ2hyaXN0b3BoZXIgU2Vpd2FsZCBhbmQgUGVyZm9yY2UgU29mdHdhcmUsIEluYy48L1A+IgogICAgICAgICAiPFA+VGhpcyBmaWxlIGlzIHBhcnQgb2YgamFtLjwvUD4iCiAgICAgICAgICI8UD5MaWNlbnNlIGlzIGhlcmVieSBncmFudGVkIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGFuZCBkaXN0cmlidXRlIGl0ICIKICAgICAgICAgImZyZWVseSwgYXMgbG9uZyBhcyB0aGlzIGNvcHlyaWdodCBub3RpY2UgaXMgcmV0YWluZWQgYW5kIG1vZGlmaWNhdGlvbnMgIgogICAgICAgICAiIGFyZSBjbGVhcmx5IG1hcmtlZC48L1A+IgogICAgICAgICAiPFA+QUxMIFdBUlJBTlRJRVMgQVJFIEhFUkVCWSBESVNDTEFJTUVEPC9QPiIKICAgICAgICkKICAgICAgLAogICAgICBsaWNlbnNlX2luZm8oIGJvb3N0OjpyZWdleCgKICAgICAgICAgICAgIlBlcm1pc3Npb25cXFcraXNcXFcrZ3JhbnRlZFxcVyt0b1xcVythbnlvbmVcXFcrdG9cXFcrdXNlXFxXK3RoaXNcXFcrc29mdHdhcmVcXFcrZm9yXFxXK2FueVxcVysiCiAgICAgICAgICAgICJwdXJwb3NlXFxXK29uXFxXK2FueVxcVytjb21wdXRlclxcVytzeXN0ZW1cXFcrYW5kXFxXK3RvXFxXK3JlZGlzdHJpYnV0ZVxcVytpdFxcVytmcmVlbHlcXFcrIgogICAgICAgICAgICAic3ViamVjdFxcVyt0b1xcVyt0aGVcXFcrZm9sbG93aW5nXFxXK3Jlc3RyaWN0aW9uc1xcVysiCiAgICAgICAgICAgICIxXFxXK1RoZVxcVythdXRob3JcXFcraXNcXFcrbm90XFxXK3Jlc3BvbnNpYmxlXFxXK2ZvclxcVyt0aGVcXFcrY29uc2VxdWVuY2VzXFxXK29mXFxXK3VzZVxcVytvZlxcVysiCiAgICAgICAgICAgICJ0aGlzXFxXK3NvZnR3YXJlXFxXK25vXFxXK21hdHRlclxcVytob3dcXFcrYXdmdWxcXFcrZXZlblxcVytpZlxcVyt0aGV5XFxXK2FyaXNlXFxXKyIKICAgICAgICAgICAgImZyb21cXFcrZGVmZWN0c1xcVytpblxcVytpdFxcVysiCiAgICAgICAgICAgICIyXFxXK1RoZVxcVytvcmlnaW5cXFcrb2ZcXFcrdGhpc1xcVytzb2Z0d2FyZVxcVyttdXN0XFxXK25vdFxcVytiZVxcVyttaXNyZXByZXNlbnRlZFxcVytlaXRoZXJcXFcrIgogICAgICAgICAgICAiYnlcXFcrZXhwbGljaXRcXFcrY2xhaW1cXFcrb3JcXFcrYnlcXFcrb21pc3Npb25cXFcrIgogICAgICAgICAgICAiM1xcVytBbHRlcmVkXFxXK3ZlcnNpb25zXFxXK211c3RcXFcrYmVcXFcrcGxhaW5seVxcVyttYXJrZWRcXFcrYXNcXFcrc3VjaFxcVythbmRcXFcrbXVzdFxcVytub3RcXFcrIgogICAgICAgICAgICAiYmVcXFcrbWlzcmVwcmVzZW50ZWRcXFcrYXNcXFcrYmVpbmdcXFcrdGhlXFxXK29yaWdpbmFsXFxXK3NvZnR3YXJlIgogICAgICAgICAgICAifERlZmluaXRpb25zXFxXK2V0Y1xcVytmb3JcXFcrcmVnZXhwXFxXKzNcXFcrcm91dGluZXMiLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGJvb3N0OjpyZWdleChnZW5lcmljX2F1dGhvcl9zaWcgKyBzdGQ6OnN0cmluZygifChEZWZpbml0aW9uc1xcVytldGNcXFcrZm9yXFxXK3JlZ2V4cFxcVyszXFxXK3JvdXRpbmVzKSIpLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGdlbmVyaWNfYXV0aG9yX2Zvcm1hdCArIHN0ZDo6c3RyaW5nKCIoPzRVbml2ZXJzaXR5IG9mIFRvcm9udG8pIikKICAgICAgICAgLAogICAgICAgICAiQlNEIFJlZ2V4IExpY2Vuc2UiCiAgICAgICAgICwKICAgICAgICAgIjxQPkNvcHlyaWdodCAoYykgMTk4NiBieSBVbml2ZXJzaXR5IG9mIFRvcm9udG8uPC9QPiIKICAgICAgICAgIjxQPldyaXR0ZW4gYnkgSGVucnkgU3BlbmNlci4gIE5vdCBkZXJpdmVkIGZyb20gbGljZW5zZWQgc29mdHdhcmUuPC9QPiIKICAgICAgICAgIjxQPlBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSIKICAgICAgICAgInB1cnBvc2Ugb24gYW55IGNvbXB1dGVyIHN5c3RlbSwgYW5kIHRvIHJlZGlzdHJpYnV0ZSBpdCBmcmVlbHksIgogICAgICAgICAic3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczo8L1A+IgogICAgICAgICAiPFA+VGhlIGF1dGhvciBpcyBub3QgcmVzcG9uc2libGUgZm9yIHRoZSBjb25zZXF1ZW5jZXMgb2YgdXNlIG9mIgogICAgICAgICAidGhpcyBzb2Z0d2FyZSwgbm8gbWF0dGVyIGhvdyBhd2Z1bCwgZXZlbiBpZiB0aGV5IGFyaXNlIgogICAgICAgICAiZnJvbSBkZWZlY3RzIGluIGl0LjwvUD4iCiAgICAgICAgICI8cD5UaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQsIGVpdGhlciIKICAgICAgICAgImJ5IGV4cGxpY2l0IGNsYWltIG9yIGJ5IG9taXNzaW9uLjwvcD4iCiAgICAgICAgICI8cD5BbHRlcmVkIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IgogICAgICAgICAiYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLjwvUD4iCiAgICAgICApCiAgICAgICwKICAgICAgbGljZW5zZV9pbmZvKCBib29zdDo6cmVnZXgoCiAgICAgICAgICAgICJTa2VsZXRvblxcVytwYXJzZXJcXFcrZm9yXFxXK1lhY2NcXFcrbGlrZVxcVytwYXJzaW5nXFxXK3dpdGhcXFcrQmlzb25cXFcrIgogICAgICAgICAgICAiQ29weXJpZ2h0LnswLDEwMH1GcmVlXFxXK1NvZnR3YXJlXFxXK0ZvdW5kYXRpb25cXFcrSW5jXFxXKyIKICAgICAgICAgIlxcVytUaGlzXFxXK3Byb2dyYW1cXFcraXNcXFcrZnJlZVxcVytzb2Z0d2FyZVxcVyt5b3VcXFcrY2FuXFxXK3JlZGlzdHJpYnV0ZVxcVytpdFxcVythbmRcXFcrb3JcXFcrbW9kaWZ5XFxXKyIKICAgICAgICAgIml0XFxXK3VuZGVyXFxXK3RoZVxcVyt0ZXJtc1xcVytvZlxcVyt0aGVcXFcrR05VXFxXK0dlbmVyYWxcXFcrUHVibGljXFxXK0xpY2Vuc2VcXFcrYXNcXFcrcHVibGlzaGVkXFxXK2J5XFxXKyIKICAgICAgICAgInRoZVxcVytGcmVlXFxXK1NvZnR3YXJlXFxXK0ZvdW5kYXRpb25cXFcrZWl0aGVyXFxXK3ZlcnNpb25cXFcrMlxcVytvclxcVythdFxcVyt5b3VyXFxXK29wdGlvblxcVysiCiAgICAgICAgICJhbnlcXFcrbGF0ZXJcXFcrdmVyc2lvbiIKICAgICAgICAgInwiCiAgICAgICAgIC8vIHRoaXMgcGFydCBtYXRjaGVzIHRoZSBzdGFydCBvZiBqYW1ncmFtdGFiLmggd2hpY2ggaXMgdW5kZXIgdGhlIHNhbWUgbGljZW5jZQogICAgICAgICAvLyBidXQgYmlzb24gZG9lcyBub3Qgb3V0cHV0IGl0J3MgdXN1YWwgbGljZW5jZSBkZWNsYXJhdGlvbjoKICAgICAgICAgIlxce1xccypcIiFcIlxccyosXFxzKl9CQU5HX3RcXHMqXFx9IiwgYm9vc3Q6OnJlZ2V4OjpwZXJsIHwgYm9vc3Q6OnJlZ2V4OjppY2FzZSkKICAgICAgICAgLAogICAgICAgICBib29zdDo6cmVnZXgoZ2VuZXJpY19hdXRob3Jfc2lnICsgc3RkOjpzdHJpbmcoInwoXFx7XFxzKlwiIVwiXFxzKixcXHMqX0JBTkdfdFxccypcXH0pIiksIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgZ2VuZXJpY19hdXRob3JfZm9ybWF0ICsgc3RkOjpzdHJpbmcoIig/NEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jKSIpCiAgICAgICAgICwKICAgICAgICAgIkdOVSBQYXJzZXIgTGljZW5jZSIKICAgICAgICAgLAogICAgICAgICAiPFA+U2tlbGV0b24gcGFyc2VyIGZvciBZYWNjLWxpa2UgcGFyc2luZyB3aXRoIEJpc29uLDxCUj4iCiAgICAgICAgICJDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAsIDIwMDEsIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuPC9QPiIKICAgICAgICAgIjxQPlRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IgogICAgICAgICAiaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkiCiAgICAgICAgICJ0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pIgogICAgICAgICAiYW55IGxhdGVyIHZlcnNpb24uPC9QPiIKICAgICAgICAgIjxQPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCIKICAgICAgICAgImJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIgogICAgICAgICAiTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSIKICAgICAgICAgIkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuPC9QPiIKICAgICAgICAgIjxQPllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIgogICAgICAgICAiYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUiCiAgICAgICAgICJGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIgogICAgICAgICAiQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuPC9QPiIKICAgICAgICAgIjxQPkFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHdoZW4gdGhpcyBmaWxlIGlzIGNvcGllZCBieSBCaXNvbiBpbnRvIGEiCiAgICAgICAgICJCaXNvbiBvdXRwdXQgZmlsZSwgeW91IG1heSB1c2UgdGhhdCBvdXRwdXQgZmlsZSB3aXRob3V0IHJlc3RyaWN0aW9uLiIKICAgICAgICAgIlRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24iCiAgICAgICAgICJpbiB2ZXJzaW9uIDEuMjQgb2YgQmlzb24uPC9QPiIKICAgICAgICkKICAgICAgLAogICAgICBsaWNlbnNlX2luZm8oIGJvb3N0OjpyZWdleCgKICAgICAgICAgICAgIig/OlRoZXxUaGlzKVxcVytjb2RlXFxXK2lzXFxXK2NvbnNpZGVyZWRcXFcrdG9cXFcrYmVcXFcraW5cXFcrdGhlXFxXK3B1YmxpY1xcVytkb21haW4iLCBib29zdDo6cmVnZXg6OnBlcmwgfCBib29zdDo6cmVnZXg6OmljYXNlKQogICAgICAgICAsCiAgICAgICAgIGJvb3N0OjpyZWdleChnZW5lcmljX2F1dGhvcl9zaWcsIGJvb3N0OjpyZWdleDo6cGVybCB8IGJvb3N0OjpyZWdleDo6aWNhc2UpCiAgICAgICAgICwKICAgICAgICAgZ2VuZXJpY19hdXRob3JfZm9ybWF0CiAgICAgICAgICwKICAgICAgICAgIlB1YmxpYyBEb21haW4iCiAgICAgICAgICwKICAgICAgICAgIjxQPlRoZSBjb2RlIGhhcyBubyBsaWNlbnNlIHRlcm1zLCBpdCBoYXMgYmVlbiBleHBsaWNpdHkgcGxhY2VkIGluIHRoZVxuIgogICAgICAgICAicHVibGljIGRvbWFpbiBieSBpdCdzIGF1dGhvcihzKS48L1A+IgogICAgICAgKQogICAgICAsCiAgIH07CiAgIHJldHVybiBzdGQ6OnBhaXI8Y29uc3QgbGljZW5zZV9pbmZvKiwgaW50PihsaWNlbnNlcywgc2l6ZW9mKGxpY2Vuc2VzKS9zaXplb2YobGljZW5zZXNbMF0pKTsKfQoKc3RkOjpzdHJpbmcgZm9ybWF0X2F1dGhvcnNfbmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkKewogICAvLyBwdXQgbmFtZSBpbnRvIGEgY29uc2lzdGVudCBmb3JtYXQsIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IHRvbyBtdWNoCiAgIC8vIG9mIGEgcHJvbGlmZXJhdGlvbiBvZiBuYW1lcyAobG90cyBvZiB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBiYXNpYyBmb3JtKS4KCiAgIHN0YXRpYyBjb25zdCBib29zdDo6cmVnZXggZSgiKF4pP1teLSg8YS16QS1awC3+XSsoKFsoPF0uKik/JCk/Iik7CiAgIHN0YXRpYyBjb25zdCBjaGFyKiBmb3JtYXR0ZXIgPSAiKD8xOig/MjogKSkiOwoKICAgcmV0dXJuIGJvb3N0OjpyZWdleF9yZXBsYWNlKG5hbWUsIGUsIGZvcm1hdHRlciwgYm9vc3Q6Om1hdGNoX2RlZmF1bHQgfCBib29zdDo6Zm9ybWF0X2FsbCk7Cn0KCg==