PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX1JFTEFUSVZFX0lURVJBVElPTjwvdGl0bGU+Cgk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9zdHlsZXMuY3NzIj4KPC9oZWFkPgo8Ym9keT4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAgMHB4OyI+CgkJVGhlIDxiPkJPT1NUX1BQX1JFTEFUSVZFX0lURVJBVElPTjwvYj4gbWFjcm8gZXhwYW5kcyB0byB0aGUgaXRlcmF0aW9uIHZhbHVlIG9mIGEgPGk+ZmlsZS1pdGVyYXRpb248L2k+IGRlcHRoIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRlcHRoLgoJPC9kaXY+Cgk8aDQ+VXNhZ2U8L2g0PgoJCTxkaXYgY2xhc3M9ImNvZGUiPgoJCQk8Yj5CT09TVF9QUF9SRUxBVElWRV9JVEVSQVRJT048L2I+KDxpPmk8L2k+KQoJCTwvZGl2PgoJPGg0PkFyZ3VtZW50czwvaDQ+CgkJPGRsPgoJCQk8ZHQ+aTwvZHQ+CgkJCTxkZD4KCQkJCVRoZSByZWxhdGl2ZSBkZXB0aCBvZiB0aGUgZnJhbWUgd2hvc2UgaXRlcmF0aW9uIHZhbHVlIGlzIHRvIGJlIHJldHJlaXZlZC4mbmJzcDsKCQkJCVZhbGlkIHZhbHVlcyByYW5nZSBmcm9tIDxpPjA8L2k+IHRvIDxiPkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSDwvYj4oKSAtIDxpPjE8L2k+LgoJCQk8L2RkPgoJCTwvZGw+Cgk8aDQ+UmVtYXJrczwvaDQ+CgkJPGRpdj4KCQkJVGhpcyBtYWNybyBpcyBvbmx5IHZhbGlkIHdoZW4gYSA8aT5maWxlLWl0ZXJhdGlvbjwvaT4gaXMgaW4gcHJvZ3Jlc3MuCgkJPC9kaXY+CgkJPGRpdj4KCQkJVGhlIGFyZ3VtZW50IDxpPmk8L2k+IGlzIGludGVycHJldGVkIGFzIHRoZSBudW1iZXIgb2YgZnJhbWVzIDxpPm91dHdhcmQ8L2k+IGZyb20gdGhlIGN1cnJlbnQgZnJhbWUuJm5ic3A7CgkJCVRoZXJlZm9yZSwgPGI+Qk9PU1RfUFBfUkVMQVRJVkVfSVRFUkFUSU9OPC9iPig8aT4wPC9pPikgaXMgZXF1aXZhbGVudCB0byA8Yj5CT09TVF9QUF9JVEVSQVRJT048L2I+KCkuCgkJPC9kaXY+Cgk8aDQ+UmVxdWlyZW1lbnRzPC9oND4KCQk8ZGl2PgoJCQk8Yj5IZWFkZXI6PC9iPiAmbmJzcDs8YSBocmVmPSIuLi9oZWFkZXJzL2l0ZXJhdGlvbi9pdGVyYXRlLmh0bWwiPiZsdDtib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwJmd0OzwvYT4KCQk8L2Rpdj4KCTxoND5TYW1wbGUgQ29kZTwvaDQ+CjxkaXY+PHByZT4KLy8gZmlsZS5oCiNpZiAhPGEgaHJlZj0iaXNfaXRlcmF0aW5nLmh0bWwiPkJPT1NUX1BQX0lTX0lURVJBVElORzwvYT4KCiAgICNpZm5kZWYgRklMRV9IXwogICAjZGVmaW5lIEZJTEVfSF8KCiAgICNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2l0ZXJhdGlvbi9pdGVyYXRlLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vaXRlcmF0ZS5ocHA8L2E+Jmd0OwoKMXN0IGl0ZXJhdGlvbjoKICAgI2RlZmluZSA8YSBocmVmPSJpdGVyYXRpb25fcGFyYW1zX3guaHRtbCI+Qk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xPC9hPiAoNCwgKDAsIDMsICJmaWxlLmgiLCAweDAwMDEpKQogICAjaW5jbHVkZSA8YSBocmVmPSJpdGVyYXRlLmh0bWwiPkJPT1NUX1BQX0lURVJBVEU8L2E+KCkKCjJuZCBpdGVyYXRpb246CiAgICNkZWZpbmUgPGEgaHJlZj0iaXRlcmF0aW9uX3BhcmFtc194Lmh0bWwiPkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMTwvYT4gKDQsICgxLCAxMCwgImZpbGUuaCIsIDB4MDAwMikpCiAgICNpbmNsdWRlIDxhIGhyZWY9Iml0ZXJhdGUuaHRtbCI+Qk9PU1RfUFBfSVRFUkFURTwvYT4oKQoKICAgI2VuZGlmCgojZWxpZiA8YSBocmVmPSJpdGVyYXRpb25fZGVwdGguaHRtbCI+Qk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIPC9hPigpID09IDEgXAogICAmYW1wOyZhbXA7IDxhIGhyZWY9Iml0ZXJhdGlvbl9mbGFncy5odG1sIj5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1M8L2E+KCkgPT0gMHgwMDAxIFwKICAgLyoqLwoKICAgLS0KICAgI2RlZmluZSA8YSBocmVmPSJpdGVyYXRpb25fcGFyYW1zX3guaHRtbCI+Qk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18yPC9hPiAoMywgKDEsIDEwLCAiZmlsZS5oIikpCiAgICNpbmNsdWRlIDxhIGhyZWY9Iml0ZXJhdGUuaHRtbCI+Qk9PU1RfUFBfSVRFUkFURTwvYT4oKQoKI2VsaWYgPGEgaHJlZj0iaXRlcmF0aW9uX2RlcHRoLmh0bWwiPkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSDwvYT4oKSA9PSAxIFwKICAgJmFtcDsmYW1wOyA8YSBocmVmPSJpdGVyYXRpb25fZmxhZ3MuaHRtbCI+Qk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTPC9hPigpID09IDB4MDAwMiBcCiAgIC8qKi8KCiAgIC0tCiAgICNkZWZpbmUgPGEgaHJlZj0iaXRlcmF0aW9uX3BhcmFtc194Lmh0bWwiPkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMjwvYT4gXAogICAgICAoMywgKDEsIDxhIGhyZWY9Iml0ZXJhdGlvbi5odG1sIj5CT09TVF9QUF9JVEVSQVRJT048L2E+KCksICJmaWxlLmgiKSkgXAogICAgICAvKiovCiAgICNpbmNsdWRlIDxhIGhyZWY9Iml0ZXJhdGUuaHRtbCI+Qk9PU1RfUFBfSVRFUkFURTwvYT4oKQoKI2VsaWYgPGEgaHJlZj0iaXRlcmF0aW9uX2RlcHRoLmh0bWwiPkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSDwvYT4oKSA9PSAyIFwKICAgJmFtcDsmYW1wOyA8YSBocmVmPSJmcmFtZV9mbGFncy5odG1sIj5CT09TVF9QUF9GUkFNRV9GTEFHUzwvYT4oMSkgPT0gMHgwMDAxIFwKICAgLyoqLwoKICAgLS0KICAgI2RlZmluZSA8YSBocmVmPSJpdGVyYXRpb25fcGFyYW1zX3guaHRtbCI+Qk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18zPC9hPiBcCiAgICAgICgzLCAoMSwgPGEgaHJlZj0iaXRlcmF0aW9uLmh0bWwiPkJPT1NUX1BQX0lURVJBVElPTjwvYT4oKSwgImZpbGUuaCIpKSBcCiAgICAgIC8qKi8KICAgI2luY2x1ZGUgPGEgaHJlZj0iaXRlcmF0ZS5odG1sIj5CT09TVF9QUF9JVEVSQVRFPC9hPigpCgojZWxzZSAvLyB1c2VkIGJ5IGJvdGgKCiAgIHByZXZpb3VzOiA8YSBocmVmPSJyZWxhdGl2ZV9pdGVyYXRpb24uaHRtbCI+Qk9PU1RfUFBfUkVMQVRJVkVfSVRFUkFUSU9OPC9hPigxKQogICBjdXJyZW50OiA8YSBocmVmPSJpdGVyYXRpb24uaHRtbCI+Qk9PU1RfUFBfSVRFUkFUSU9OPC9hPigpCgojZW5kaWYKPC9wcmU+PC9kaXY+Cgk8aHIgc2l6ZT0iMSI+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPGk+qSBDb3B5cmlnaHQgPGEgaHJlZj0iaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20iIHRhcmdldD0iX3RvcCI+SG91c2VtYXJxdWUgT3k8L2E+IDIwMDI8L2k+CgkJPC9icj48aT6pIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMjwvaT4KCTwvZGl2PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxwPjxzbWFsbD5EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKCQlhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPkxJQ0VOU0VfMV8wLnR4dDwvYT4gb3IKCQljb3B5IGF0IDxhIGhyZWY9CgkJImh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvc21hbGw+PC9wPgoJPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=