Name: series-workflow58fmp Phase: Failed StartedAt: 2026-07-15 06:19:56 +0000 UTC FinishedAt: 2026-07-15 06:59:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58fmp[0] Phase: Succeeded StartedAt: 2026-07-15 06:19:56 +0000 UTC FinishedAt: 2026-07-15 06:59:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58fmp[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 06:19:56 +0000 UTC FinishedAt: 2026-07-15 06:59:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB1c2FnZSBvZiBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCBpbiB0aHJlZSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzOiBBTUQgWEROQSAoZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMpLCBJbnRlbCBYZSAoZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYywgc2VsZWN0ZWQgb25seSBieSBEUk1fWEUpLCBhbmQgTnZpZGlhIE5vdXZlYXUgKGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmMpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgUENJIGhhcmR3YXJlIChOUFVzL0dQVXMpIHRvIHN1Y2Nlc3NmdWxseSBwcm9iZSBhbmQgY3JlYXRlIGRldmljZSBub2Rlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmNjMxYWYwYTQzYzFjMjUzZWRkMzIxM2YwZjUzOWJiZWIzMmJjNzhmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMDY6NTc6MTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0IGIvRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0XG5pbmRleCA1Yzg4ZDJjZjA4MTgzMy4uZmMxYjhkYzE5ODI1MGUgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL21tL2htbS5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdFxuQEAgLTIwNiw3ICYjNDM7MjA2LDcgQEAgVGhlIHVzYWdlIHBhdHRlcm4gaXM6OlxuICAgICAgICAgICBnb3RvIG91dF9wdXQ7XG4gXG4gICAgICAgdGFrZV9sb2NrKGRyaXZlci1cdTAwM2V1cGRhdGUpO1xuLSAgICAgIGlmIChtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeShcdTAwMjZpbnRlcnZhbF9zdWIsIHJhbmdlLm5vdGlmaWVyX3NlcSkpIHtcbiYjNDM7ICAgICAgaWYgKG1tdV9pbnRlcnZhbF9yZWFkX3JldHJ5KHJhbmdlLm5vdGlmaWVyLCByYW5nZS5ub3RpZmllcl9zZXEpKSB7XG4gICAgICAgICAgIHJlbGVhc2VfbG9jayhkcml2ZXItXHUwMDNldXBkYXRlKTtcbiAgICAgICAgICAgZ290byBhZ2FpbjtcbiAgICAgICB9XG5AQCAtMjI1LDcgJiM0MzsyMjUsOCBAQCBUaGUgdXNhZ2UgcGF0dGVybiBpczo6XG4gVGhlIGRyaXZlci1cdTAwM2V1cGRhdGUgbG9jayBpcyB0aGUgc2FtZSBsb2NrIHRoYXQgdGhlIGRyaXZlciB0YWtlcyBpbnNpZGUgaXRzXG4gaW52YWxpZGF0ZSgpIGNhbGxiYWNrLiBUaGF0IGxvY2sgbXVzdCBiZSBoZWxkIGJlZm9yZSBjYWxsaW5nXG4gbW11X2ludGVydmFsX3JlYWRfcmV0cnkoKSB0byBhdm9pZCBhbnkgcmFjZSB3aXRoIGEgY29uY3VycmVudCBDUFUgcGFnZSB0YWJsZVxuLXVwZGF0ZS5cbiYjNDM7dXBkYXRlLiBUaGUgcmV0cnkgY2hlY2sgbXVzdCB1c2UgdGhlIHNhbWUgbm90aWZpZXIgYW5kIHNlcXVlbmNlIG51bWJlciBzdG9yZWRcbiYjNDM7aW4gYGByYW5nZWBgIGJ5IGBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoKWBgLlxuIFxuIEhvbGRpbmcgdGhlIG1tYXAgbG9jayBhY3Jvc3MgSE1NIGZhdWx0c1xuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jIGIvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmNcbmluZGV4IDU0OGJhNDMxNTU1NGZmLi4yMWYyODE3NzUxZjllNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9jdHguY1xuQEAgLTEwMzcsNyAmIzQzOzEwMzcsNyBAQCBzdGF0aWMgaW50IGFpZTJfcG9wdWxhdGVfcmFuZ2Uoc3RydWN0IGFtZHhkbmFfZ2VtX29iaiAqYWJvKVxuIFx0Ym9vbCBmb3VuZDtcbiBcdGludCByZXQ7XG4gXG4tXHR0aW1lb3V0ID0gamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuJiM0MztcdHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuIGFnYWluOlxuIFx0Zm91bmQgPSBmYWxzZTtcbiBcdGRvd25fd3JpdGUoXHUwMDI2eGRuYS1cdTAwM2Vub3RpZmllcl9sb2NrKTtcbkBAIC0xMDYyLDEzICYjNDM7MTA2Miw5IEBAIHN0YXRpYyBpbnQgYWllMl9wb3B1bGF0ZV9yYW5nZShzdHJ1Y3QgYW1keGRuYV9nZW1fb2JqICphYm8pXG4gXHRcdHJldHVybiAtRUZBVUxUO1xuIFx0fVxuIFxuLVx0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2bWFwcC1cdTAwM2VyYW5nZSxcbi1cdFx0XHRtYXhfdChsb25nLCB0aW1lb3V0IC0gamlmZmllcywgMSkpO1xuLVx0aWYgKHJldCkge1xuLVx0XHRpZiAocmV0ID09IC1FQlVTWSlcbi1cdFx0XHRyZXQgPSAtRVRJTUU7XG4mIzQzO1x0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2bWFwcC1cdTAwM2VyYW5nZSwgdGltZW91dCk7XG4mIzQzO1x0aWYgKHJldClcbiBcdFx0Z290byBwdXRfbW07XG4tXHR9XG4gXG4gXHRkb3duX3dyaXRlKFx1MDAyNnhkbmEtXHUwMDNlbm90aWZpZXJfbG9jayk7XG4gXHRpZiAobW11X2ludGVydmFsX3JlYWRfcmV0cnkoXHUwMDI2bWFwcC1cdTAwM2Vub3RpZmllciwgbWFwcC1cdTAwM2VyYW5nZS5ub3RpZmllcl9zZXEpKSB7XG5AQCAtMTA4Niw3ICYjNDM7MTA4Miw3IEBAIHN0YXRpYyBpbnQgYWllMl9wb3B1bGF0ZV9yYW5nZShzdHJ1Y3QgYW1keGRuYV9nZW1fb2JqICphYm8pXG4gcHV0X21tOlxuIFx0YW1keGRuYV91bWFwX3B1dChtYXBwKTtcbiBcdG1tcHV0KG1tKTtcbi1cdHJldHVybiByZXQ7XG4mIzQzO1x0cmV0dXJuIHJldCA9PSAtRUJVU1kgPyAtRVRJTUUgOiByZXQ7XG4gfVxuIFxuIGludCBhaWUyX2NtZF9zdWJtaXQoc3RydWN0IGFtZHhkbmFfaHdjdHggKmh3Y3R4LCBzdHJ1Y3QgYW1keGRuYV9zY2hlZF9qb2IgKmpvYiwgdTY0ICpzZXEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNcbmluZGV4IGI4ZjJkZDk5ODJmNTNjLi43NmU4YTAwMjhjN2ZjOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNcbkBAIC04NTIsOCAmIzQzOzg1Miw3IEBAIGVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBkcm1fZ3B1c3ZtX3NjYW5fbW0oc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlLFxuIFx0XHQuZW5kID0gZW5kLFxuIFx0XHQuZGV2X3ByaXZhdGVfb3duZXIgPSBkZXZfcHJpdmF0ZV9vd25lcixcbiBcdH07XG4tXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQgPVxuLVx0XHRqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcbiBcdGVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBzdGF0ZSA9IERSTV9HUFVTVk1fU0NBTl9VTlBPUFVMQVRFRCwgbmV3X3N0YXRlO1xuIFx0dW5zaWduZWQgbG9uZyAqcGZucztcbiBcdHVuc2lnbmVkIGxvbmcgbnBhZ2VzID0gbnBhZ2VzX2luX3JhbmdlKHN0YXJ0LCBlbmQpO1xuQEAgLTg2Nyw4ICYjNDM7ODY2LDcgQEAgZW51bSBkcm1fZ3B1c3ZtX3NjYW5fcmVzdWx0IGRybV9ncHVzdm1fc2Nhbl9tbShzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UsXG4gXHRobW1fcmFuZ2UuaG1tX3BmbnMgPSBwZm5zO1xuIFxuIHJldHJ5OlxuLVx0ZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2aG1tX3JhbmdlLFxuLVx0XHRcdFx0XHQgICAgICAgbWF4KHRpbWVvdXQgLSBqaWZmaWVzLCAxTCkpO1xuJiM0MztcdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFx1MDAyNmhtbV9yYW5nZSwgdGltZW91dCk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9mcmVlO1xuIFxuQEAgLTE0NTksOCAmIzQzOzE0NTcsNyBAQCBpbnQgZHJtX2dwdXN2bV9nZXRfcGFnZXMoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcbiBcdFx0LmRldl9wcml2YXRlX293bmVyID0gY3R4LVx1MDAzZWRldmljZV9wcml2YXRlX3BhZ2Vfb3duZXIsXG4gXHR9O1xuIFx0dm9pZCAqemRkO1xuLVx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID1cbi1cdFx0amlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XG4gXHR1bnNpZ25lZCBsb25nIGksIGo7XG4gXHR1bnNpZ25lZCBsb25nIG5wYWdlcyA9IG5wYWdlc19pbl9yYW5nZShwYWdlc19zdGFydCwgcGFnZXNfZW5kKTtcbiBcdHVuc2lnbmVkIGxvbmcgbnVtX2RtYV9tYXBwZWQ7XG5AQCAtMTQ3OCw5ICYjNDM7MTQ3NSw2IEBAIGludCBkcm1fZ3B1c3ZtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiByZXRyeTpcbi1cdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKVxuLVx0XHRyZXR1cm4gLUVCVVNZO1xuLVxuIFx0aG1tX3JhbmdlLm5vdGlmaWVyX3NlcSA9IG1tdV9pbnRlcnZhbF9yZWFkX2JlZ2luKG5vdGlmaWVyKTtcbiBcdGlmIChkcm1fZ3B1c3ZtX3BhZ2VzX3ZhbGlkX3VubG9ja2VkKGdwdXN2bSwgc3ZtX3BhZ2VzKSlcbiBcdFx0Z290byBzZXRfc2Vxbm87XG5AQCAtMTQ5NSw4ICYjNDM7MTQ4OSw3IEBAIGludCBkcm1fZ3B1c3ZtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuIFx0fVxuIFxuIFx0aG1tX3JhbmdlLmhtbV9wZm5zID0gcGZucztcbi1cdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFx1MDAyNmhtbV9yYW5nZSxcbi1cdFx0XHRcdG1heF90KGxvbmcsIHRpbWVvdXQgLSBqaWZmaWVzLCAxKSk7XG4mIzQzO1x0ZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2aG1tX3JhbmdlLCB0aW1lb3V0KTtcbiBcdG1tcHV0KG1tKTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZXJyX2ZyZWU7XG5AQCAtMTcxOCw4ICYjNDM7MTcxMSw3IEBAIGludCBkcm1fZ3B1c3ZtX3JhbmdlX2V2aWN0KHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXG4gXHRcdC5lbmQgPSBkcm1fZ3B1c3ZtX3JhbmdlX2VuZChyYW5nZSksXG4gXHRcdC5kZXZfcHJpdmF0ZV9vd25lciA9IE5VTEwsXG4gXHR9O1xuLVx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID1cbi1cdFx0amlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XG4gXHR1bnNpZ25lZCBsb25nICpwZm5zO1xuIFx0dW5zaWduZWQgbG9uZyBucGFnZXMgPSBucGFnZXNfaW5fcmFuZ2UoZHJtX2dwdXN2bV9yYW5nZV9zdGFydChyYW5nZSksXG4gXHRcdFx0XHRcdCAgICAgICBkcm1fZ3B1c3ZtX3JhbmdlX2VuZChyYW5nZSkpO1xuQEAgLTE3MzQsOCAmIzQzOzE3MjYsNyBAQCBpbnQgZHJtX2dwdXN2bV9yYW5nZV9ldmljdChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdGhtbV9yYW5nZS5obW1fcGZucyA9IHBmbnM7XG4tXHRlcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZobW1fcmFuZ2UsXG4tXHRcdFx0XHRtYXhfdChsb25nLCB0aW1lb3V0IC0gamlmZmllcywgMSkpO1xuJiM0MztcdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFx1MDAyNmhtbV9yYW5nZSwgdGltZW91dCk7XG4gXG4gXHRrdmZyZWUocGZucyk7XG4gXHRtbXB1dChtbSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmNcbmluZGV4IDRjZmI2ZWI3Yzc3MTVhLi5iMTQxNWMyZTQ5ZmNjZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmNcbkBAIC02NTUsOCAmIzQzOzY1NSw3IEBAIHN0YXRpYyBpbnQgbm91dmVhdV9yYW5nZV9mYXVsdChzdHJ1Y3Qgbm91dmVhdV9zdm1tICpzdm1tLFxuIFx0XHRcdCAgICAgICB1bnNpZ25lZCBsb25nIGhtbV9mbGFncyxcbiBcdFx0XHQgICAgICAgc3RydWN0IHN2bV9ub3RpZmllciAqbm90aWZpZXIpXG4ge1xuLVx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID1cbi1cdFx0amlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XG4gXHQvKiBIYXZlIEhNTSBmYXVsdCBwYWdlcyB3aXRoaW4gdGhlIGZhdWx0IHdpbmRvdyB0byB0aGUgR1BVLiAqL1xuIFx0dW5zaWduZWQgbG9uZyBobW1fcGZuc1sxXTtcbiBcdHN0cnVjdCBobW1fcmFuZ2UgcmFuZ2UgPSB7XG5AQCAtNjc3LDI1ICYjNDM7Njc2LDE2IEBAIHN0YXRpYyBpbnQgbm91dmVhdV9yYW5nZV9mYXVsdChzdHJ1Y3Qgbm91dmVhdV9zdm1tICpzdm1tLFxuIFx0cmFuZ2Uuc3RhcnQgPSBub3RpZmllci1cdTAwM2Vub3RpZmllci5pbnRlcnZhbF90cmVlLnN0YXJ0O1xuIFx0cmFuZ2UuZW5kID0gbm90aWZpZXItXHUwMDNlbm90aWZpZXIuaW50ZXJ2YWxfdHJlZS5sYXN0ICYjNDM7IDE7XG4gXG4tXHR3aGlsZSAodHJ1ZSkge1xuLVx0XHRpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkge1xuLVx0XHRcdHJldCA9IC1FQlVTWTtcbi1cdFx0XHRnb3RvIG91dDtcbi1cdFx0fVxuLVxuLVx0XHRyZXQgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZyYW5nZSxcbi1cdFx0XHRcdFx0XHQgICAgICAgbWF4KHRpbWVvdXQgLSBqaWZmaWVzLFxuLVx0XHRcdFx0XHRcdFx0ICAgMUwpKTtcbi1cdFx0aWYgKHJldClcbi1cdFx0XHRnb3RvIG91dDtcbiYjNDM7YWdhaW46XG4mIzQzO1x0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2cmFuZ2UsIHRpbWVvdXQpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiBcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZzdm1tLVx1MDAzZW11dGV4KTtcbi1cdFx0aWYgKG1tdV9pbnRlcnZhbF9yZWFkX3JldHJ5KHJhbmdlLm5vdGlmaWVyLFxuLVx0XHRcdFx0XHQgICAgcmFuZ2Uubm90aWZpZXJfc2VxKSkge1xuLVx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZzdm1tLVx1MDAzZW11dGV4KTtcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0fVxuLVx0XHRicmVhaztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnN2bW0tXHUwMDNlbXV0ZXgpO1xuJiM0MztcdGlmIChtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeShyYW5nZS5ub3RpZmllcixcbiYjNDM7XHRcdFx0XHQgICAgcmFuZ2Uubm90aWZpZXJfc2VxKSkge1xuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnN2bW0tXHUwMDNlbXV0ZXgpO1xuJiM0MztcdFx0Z290byBhZ2FpbjtcbiBcdH1cbiBcbiBcdG5vdXZlYXVfaG1tX2NvbnZlcnRfcGZuKGRybSwgXHUwMDI2cmFuZ2UsIGFyZ3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB1c2FnZSBvZiBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCBpbiB0aHJlZSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzOiBBTUQgWEROQSAoZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMpLCBJbnRlbCBYZSAoZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYywgc2VsZWN0ZWQgb25seSBieSBEUk1fWEUpLCBhbmQgTnZpZGlhIE5vdXZlYXUgKGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmMpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgUENJIGhhcmR3YXJlIChOUFVzL0dQVXMpIHRvIHN1Y2Nlc3NmdWxseSBwcm9iZSBhbmQgY3JlYXRlIGRldmljZSBub2Rlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGY2MzFhZjBhNDNjMWMyNTNlZGQzMjEzZjBmNTM5YmJlYjMyYmM3OGYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAwNjo1NzoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdCBiL0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdAppbmRleCA1Yzg4ZDJjZjA4MTgzMy4uZmMxYjhkYzE5ODI1MGUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QKQEAgLTIwNiw3ICYjNDM7MjA2LDcgQEAgVGhlIHVzYWdlIHBhdHRlcm4gaXM6OgogICAgICAgICAgIGdvdG8gb3V0X3B1dDsKIAogICAgICAgdGFrZV9sb2NrKGRyaXZlci0mZ3Q7dXBkYXRlKTsKLSAgICAgIGlmIChtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeSgmYW1wO2ludGVydmFsX3N1YiwgcmFuZ2Uubm90aWZpZXJfc2VxKSkgewomIzQzOyAgICAgIGlmIChtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeShyYW5nZS5ub3RpZmllciwgcmFuZ2Uubm90aWZpZXJfc2VxKSkgewogICAgICAgICAgIHJlbGVhc2VfbG9jayhkcml2ZXItJmd0O3VwZGF0ZSk7CiAgICAgICAgICAgZ290byBhZ2FpbjsKICAgICAgIH0KQEAgLTIyNSw3ICYjNDM7MjI1LDggQEAgVGhlIHVzYWdlIHBhdHRlcm4gaXM6OgogVGhlIGRyaXZlci0mZ3Q7dXBkYXRlIGxvY2sgaXMgdGhlIHNhbWUgbG9jayB0aGF0IHRoZSBkcml2ZXIgdGFrZXMgaW5zaWRlIGl0cwogaW52YWxpZGF0ZSgpIGNhbGxiYWNrLiBUaGF0IGxvY2sgbXVzdCBiZSBoZWxkIGJlZm9yZSBjYWxsaW5nCiBtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeSgpIHRvIGF2b2lkIGFueSByYWNlIHdpdGggYSBjb25jdXJyZW50IENQVSBwYWdlIHRhYmxlCi11cGRhdGUuCiYjNDM7dXBkYXRlLiBUaGUgcmV0cnkgY2hlY2sgbXVzdCB1c2UgdGhlIHNhbWUgbm90aWZpZXIgYW5kIHNlcXVlbmNlIG51bWJlciBzdG9yZWQKJiM0MztpbiBgYHJhbmdlYGAgYnkgYGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgpYGAuCiAKIEhvbGRpbmcgdGhlIG1tYXAgbG9jayBhY3Jvc3MgSE1NIGZhdWx0cwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9jdHguYyBiL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jCmluZGV4IDU0OGJhNDMxNTU1NGZmLi4yMWYyODE3NzUxZjllNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMKQEAgLTEwMzcsNyAmIzQzOzEwMzcsNyBAQCBzdGF0aWMgaW50IGFpZTJfcG9wdWxhdGVfcmFuZ2Uoc3RydWN0IGFtZHhkbmFfZ2VtX29iaiAqYWJvKQogCWJvb2wgZm91bmQ7CiAJaW50IHJldDsKIAotCXRpbWVvdXQgPSBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7CiYjNDM7CXRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpOwogYWdhaW46CiAJZm91bmQgPSBmYWxzZTsKIAlkb3duX3dyaXRlKCZhbXA7eGRuYS0mZ3Q7bm90aWZpZXJfbG9jayk7CkBAIC0xMDYyLDEzICYjNDM7MTA2Miw5IEBAIHN0YXRpYyBpbnQgYWllMl9wb3B1bGF0ZV9yYW5nZShzdHJ1Y3QgYW1keGRuYV9nZW1fb2JqICphYm8pCiAJCXJldHVybiAtRUZBVUxUOwogCX0KIAotCXJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KCZhbXA7bWFwcC0mZ3Q7cmFuZ2UsCi0JCQltYXhfdChsb25nLCB0aW1lb3V0IC0gamlmZmllcywgMSkpOwotCWlmIChyZXQpIHsKLQkJaWYgKHJldCA9PSAtRUJVU1kpCi0JCQlyZXQgPSAtRVRJTUU7CiYjNDM7CXJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KCZhbXA7bWFwcC0mZ3Q7cmFuZ2UsIHRpbWVvdXQpOwomIzQzOwlpZiAocmV0KQogCQlnb3RvIHB1dF9tbTsKLQl9CiAKIAlkb3duX3dyaXRlKCZhbXA7eGRuYS0mZ3Q7bm90aWZpZXJfbG9jayk7CiAJaWYgKG1tdV9pbnRlcnZhbF9yZWFkX3JldHJ5KCZhbXA7bWFwcC0mZ3Q7bm90aWZpZXIsIG1hcHAtJmd0O3JhbmdlLm5vdGlmaWVyX3NlcSkpIHsKQEAgLTEwODYsNyAmIzQzOzEwODIsNyBAQCBzdGF0aWMgaW50IGFpZTJfcG9wdWxhdGVfcmFuZ2Uoc3RydWN0IGFtZHhkbmFfZ2VtX29iaiAqYWJvKQogcHV0X21tOgogCWFtZHhkbmFfdW1hcF9wdXQobWFwcCk7CiAJbW1wdXQobW0pOwotCXJldHVybiByZXQ7CiYjNDM7CXJldHVybiByZXQgPT0gLUVCVVNZID8gLUVUSU1FIDogcmV0OwogfQogCiBpbnQgYWllMl9jbWRfc3VibWl0KHN0cnVjdCBhbWR4ZG5hX2h3Y3R4ICpod2N0eCwgc3RydWN0IGFtZHhkbmFfc2NoZWRfam9iICpqb2IsIHU2NCAqc2VxKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMKaW5kZXggYjhmMmRkOTk4MmY1M2MuLjc2ZThhMDAyOGM3ZmM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMKQEAgLTg1Miw4ICYjNDM7ODUyLDcgQEAgZW51bSBkcm1fZ3B1c3ZtX3NjYW5fcmVzdWx0IGRybV9ncHVzdm1fc2Nhbl9tbShzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UsCiAJCS5lbmQgPSBlbmQsCiAJCS5kZXZfcHJpdmF0ZV9vd25lciA9IGRldl9wcml2YXRlX293bmVyLAogCX07Ci0JdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0KLQkJamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpOwomIzQzOwl1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpOwogCWVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBzdGF0ZSA9IERSTV9HUFVTVk1fU0NBTl9VTlBPUFVMQVRFRCwgbmV3X3N0YXRlOwogCXVuc2lnbmVkIGxvbmcgKnBmbnM7CiAJdW5zaWduZWQgbG9uZyBucGFnZXMgPSBucGFnZXNfaW5fcmFuZ2Uoc3RhcnQsIGVuZCk7CkBAIC04NjcsOCAmIzQzOzg2Niw3IEBAIGVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBkcm1fZ3B1c3ZtX3NjYW5fbW0oc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlLAogCWhtbV9yYW5nZS5obW1fcGZucyA9IHBmbnM7CiAKIHJldHJ5OgotCWVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KCZhbXA7aG1tX3JhbmdlLAotCQkJCQkgICAgICAgbWF4KHRpbWVvdXQgLSBqaWZmaWVzLCAxTCkpOwomIzQzOwllcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgmYW1wO2htbV9yYW5nZSwgdGltZW91dCk7CiAJaWYgKGVycikKIAkJZ290byBlcnJfZnJlZTsKIApAQCAtMTQ1OSw4ICYjNDM7MTQ1Nyw3IEBAIGludCBkcm1fZ3B1c3ZtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLAogCQkuZGV2X3ByaXZhdGVfb3duZXIgPSBjdHgtJmd0O2RldmljZV9wcml2YXRlX3BhZ2Vfb3duZXIsCiAJfTsKIAl2b2lkICp6ZGQ7Ci0JdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0KLQkJamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpOwomIzQzOwl1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpOwogCXVuc2lnbmVkIGxvbmcgaSwgajsKIAl1bnNpZ25lZCBsb25nIG5wYWdlcyA9IG5wYWdlc19pbl9yYW5nZShwYWdlc19zdGFydCwgcGFnZXNfZW5kKTsKIAl1bnNpZ25lZCBsb25nIG51bV9kbWFfbWFwcGVkOwpAQCAtMTQ3OCw5ICYjNDM7MTQ3NSw2IEBAIGludCBkcm1fZ3B1c3ZtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLAogCQlyZXR1cm4gLUVJTlZBTDsKIAogcmV0cnk6Ci0JaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpCi0JCXJldHVybiAtRUJVU1k7Ci0KIAlobW1fcmFuZ2Uubm90aWZpZXJfc2VxID0gbW11X2ludGVydmFsX3JlYWRfYmVnaW4obm90aWZpZXIpOwogCWlmIChkcm1fZ3B1c3ZtX3BhZ2VzX3ZhbGlkX3VubG9ja2VkKGdwdXN2bSwgc3ZtX3BhZ2VzKSkKIAkJZ290byBzZXRfc2Vxbm87CkBAIC0xNDk1LDggJiM0MzsxNDg5LDcgQEAgaW50IGRybV9ncHVzdm1fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sCiAJfQogCiAJaG1tX3JhbmdlLmhtbV9wZm5zID0gcGZuczsKLQllcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgmYW1wO2htbV9yYW5nZSwKLQkJCQltYXhfdChsb25nLCB0aW1lb3V0IC0gamlmZmllcywgMSkpOwomIzQzOwllcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgmYW1wO2htbV9yYW5nZSwgdGltZW91dCk7CiAJbW1wdXQobW0pOwogCWlmIChlcnIpCiAJCWdvdG8gZXJyX2ZyZWU7CkBAIC0xNzE4LDggJiM0MzsxNzExLDcgQEAgaW50IGRybV9ncHVzdm1fcmFuZ2VfZXZpY3Qoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSwKIAkJLmVuZCA9IGRybV9ncHVzdm1fcmFuZ2VfZW5kKHJhbmdlKSwKIAkJLmRldl9wcml2YXRlX293bmVyID0gTlVMTCwKIAl9OwotCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9Ci0JCWppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTsKJiM0MzsJdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTsKIAl1bnNpZ25lZCBsb25nICpwZm5zOwogCXVuc2lnbmVkIGxvbmcgbnBhZ2VzID0gbnBhZ2VzX2luX3JhbmdlKGRybV9ncHVzdm1fcmFuZ2Vfc3RhcnQocmFuZ2UpLAogCQkJCQkgICAgICAgZHJtX2dwdXN2bV9yYW5nZV9lbmQocmFuZ2UpKTsKQEAgLTE3MzQsOCAmIzQzOzE3MjYsNyBAQCBpbnQgZHJtX2dwdXN2bV9yYW5nZV9ldmljdChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLAogCQlyZXR1cm4gLUVOT01FTTsKIAogCWhtbV9yYW5nZS5obW1fcGZucyA9IHBmbnM7Ci0JZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoJmFtcDtobW1fcmFuZ2UsCi0JCQkJbWF4X3QobG9uZywgdGltZW91dCAtIGppZmZpZXMsIDEpKTsKJiM0MzsJZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoJmFtcDtobW1fcmFuZ2UsIHRpbWVvdXQpOwogCiAJa3ZmcmVlKHBmbnMpOwogCW1tcHV0KG1tKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jCmluZGV4IDRjZmI2ZWI3Yzc3MTVhLi5iMTQxNWMyZTQ5ZmNjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jCkBAIC02NTUsOCAmIzQzOzY1NSw3IEBAIHN0YXRpYyBpbnQgbm91dmVhdV9yYW5nZV9mYXVsdChzdHJ1Y3Qgbm91dmVhdV9zdm1tICpzdm1tLAogCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgaG1tX2ZsYWdzLAogCQkJICAgICAgIHN0cnVjdCBzdm1fbm90aWZpZXIgKm5vdGlmaWVyKQogewotCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9Ci0JCWppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTsKJiM0MzsJdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTsKIAkvKiBIYXZlIEhNTSBmYXVsdCBwYWdlcyB3aXRoaW4gdGhlIGZhdWx0IHdpbmRvdyB0byB0aGUgR1BVLiAqLwogCXVuc2lnbmVkIGxvbmcgaG1tX3BmbnNbMV07CiAJc3RydWN0IGhtbV9yYW5nZSByYW5nZSA9IHsKQEAgLTY3NywyNSAmIzQzOzY3NiwxNiBAQCBzdGF0aWMgaW50IG5vdXZlYXVfcmFuZ2VfZmF1bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSwKIAlyYW5nZS5zdGFydCA9IG5vdGlmaWVyLSZndDtub3RpZmllci5pbnRlcnZhbF90cmVlLnN0YXJ0OwogCXJhbmdlLmVuZCA9IG5vdGlmaWVyLSZndDtub3RpZmllci5pbnRlcnZhbF90cmVlLmxhc3QgJiM0MzsgMTsKIAotCXdoaWxlICh0cnVlKSB7Ci0JCWlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKSB7Ci0JCQlyZXQgPSAtRUJVU1k7Ci0JCQlnb3RvIG91dDsKLQkJfQotCi0JCXJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KCZhbXA7cmFuZ2UsCi0JCQkJCQkgICAgICAgbWF4KHRpbWVvdXQgLSBqaWZmaWVzLAotCQkJCQkJCSAgIDFMKSk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIG91dDsKJiM0MzthZ2FpbjoKJiM0MzsJcmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoJmFtcDtyYW5nZSwgdGltZW91dCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlnb3RvIG91dDsKIAotCQltdXRleF9sb2NrKCZhbXA7c3ZtbS0mZ3Q7bXV0ZXgpOwotCQlpZiAobW11X2ludGVydmFsX3JlYWRfcmV0cnkocmFuZ2Uubm90aWZpZXIsCi0JCQkJCSAgICByYW5nZS5ub3RpZmllcl9zZXEpKSB7Ci0JCQltdXRleF91bmxvY2soJmFtcDtzdm1tLSZndDttdXRleCk7Ci0JCQljb250aW51ZTsKLQkJfQotCQlicmVhazsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3N2bW0tJmd0O211dGV4KTsKJiM0MzsJaWYgKG1tdV9pbnRlcnZhbF9yZWFkX3JldHJ5KHJhbmdlLm5vdGlmaWVyLAomIzQzOwkJCQkgICAgcmFuZ2Uubm90aWZpZXJfc2VxKSkgewomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7c3ZtbS0mZ3Q7bXV0ZXgpOwomIzQzOwkJZ290byBhZ2FpbjsKIAl9CiAKIAlub3V2ZWF1X2htbV9jb252ZXJ0X3Bmbihkcm0sICZhbXA7cmFuZ2UsIGFyZ3MpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzQ5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSG1tIFJhbmdlIEZhdWx0IFRpbWVvdXQgQ2hhbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMsIGFuZCBpdCYjMzk7cyBtYWtpbmcgc29tZSBjaGFuZ2VzIHRvIGhvdyB3ZSBoYW5kbGUgdGltZW91dHMgd2l0aCBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyBpdHMgdXNhZ2UgaW4gYSBmZXcga2V5IGRyaXZlcnM6IGBhbWR4ZG5hYCwgYGRybV9ncHVzdm1gLCBhbmQgYG5vdXZlYXVfc3ZtYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhYm91dCB0aGUgdGltZW91dCB2YWx1ZSBiZWluZyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLiBJdCYjMzk7cyBzd2l0Y2hpbmcgZnJvbSBhbiBhYnNvbHV0ZSBqaWZmaWVzIG9yIHJlbWFpbmluZyBqaWZmaWVzIHRvIGEgcmVsYXRpdmUgdGltZW91dCDigJMgc29tZXRoaW5nIGxpa2UgYG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVClgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IHNoaWZ0LgoKVGhlIHBhdGNoIGFsc28gdG91Y2hlcyBvbiBgbW11X2ludGVydmFsX3JlYWRfcmV0cnlgIHdpdGhpbiB0aGUgYERvY3VtZW50YXRpb24vbW0vaG1tLnJzdGAgYW5kIHRoZSBgbm91dmVhdV9zdm0uY2AgZmlsZXMuIEhhbmcgb24sIHRoZSBgbm91dmVhdWAgcGFydCBsb29rcyBsaWtlIGl0JiMzOTtzIGp1c3QgYSBsb29wIHJlZmFjdG9yaW5nLCBhbmQgdGhhdCBjb2RlIGFscmVhZHkgbWFrZXMgdXNlIG9mIHRoZSByYW5nZSBub3RpZmllci4gSG1tLCBzbyBtYXliZSB0aGUgZm9jdXMgaXMgb24gdGhlIGRvY3VtZW50YXRpb24gdXBkYXRlIGFuZCBlbnN1cmluZyBjb25zaXN0ZW5jeSBhY3Jvc3MgYWxsIGltcGxlbWVudGF0aW9ucz8KClJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgIGZ1bmN0aW9uIGl0c2VsZiBhbmQgaG93IGl0JiMzOTtzIHVzZWQuIEkmIzM5O2xsIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWUgd2hhdCBjb21lcyB1cC4gTmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hhbmdlLiBJcyB0aGlzIGFib3V0IGltcHJvdmluZyB0aW1lb3V0IGdyYW51bGFyaXR5PyBSZWR1Y2luZyBwb3RlbnRpYWwgZm9yIHJhY2UgY29uZGl0aW9ucz8gT3IgbWF5YmUgaXQmIzM5O3Mgc2ltcGxpZnlpbmcgdGhlIGxvZ2ljIGZvciBzcGVjaWZ5aW5nIHRoZSB0aW1lb3V0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgJiMzOTt3aHkmIzM5OyBiZWhpbmQgdGhpcyBjaGFuZ2UgYmVmb3JlIEkgY2FuIHByb3Blcmx5IGFzc2VzcyBpdC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW5kIHRyYWNlIGl0cyBjYWxsZXJzIHRvIGdhaW4gYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL21tL2htbS5yc3Q9MTYwPW5vcm1hbCBpbnRlcmZhY2UgaXM6OlxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTE2MS1cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDoxNjI6ICBpbnQgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UsXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMTYzLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7XG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0PTE2OT1UaGUgY2FsbGVyIG11c3Qgbm90IGhvbGQgYGBtbWFwX3JlYWRfbG9ja2BgIGJlZm9yZSB0aGUgY2FsbC5cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDoxNzA6YGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgpYGAgdGFrZXMgdGhlIG1tYXAgcmVhZCBsb2NrIGludGVybmFsbHkgYW5kXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMTcxLWFsbG93cyBgYGhhbmRsZV9tbV9mYXVsdCgpYGAgdG8gZHJvcCBpdCBkdXJpbmcgZmF1bHQgaGFuZGxpbmcuIFRoaXMgaXMgcmVxdWlyZWRcbi0tXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q9MTg2PVRoZSB1c2FnZSBwYXR0ZXJuIGlzOjpcbi0tXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMjAzLSBhZ2FpbjpcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDoyMDQ6ICAgICAgcmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2cmFuZ2UsIHRpbWVvdXQpO1xuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTIwNS0gICAgICBpZiAocmV0KVxuLS1cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yMjg9dXBkYXRlLiBUaGUgcmV0cnkgY2hlY2sgbXVzdCB1c2UgdGhlIHNhbWUgbm90aWZpZXIgYW5kIHNlcXVlbmNlIG51bWJlciBzdG9yZWRcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDoyMjk6aW4gYGByYW5nZWBgIGJ5IGBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoKWBgLlxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTIzMC1cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yMzE9SG9sZGluZyB0aGUgbW1hcCBsb2NrIGFjcm9zcyBITU0gZmF1bHRzXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTIzMy1cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDoyMzQ6TW9zdCBjYWxsZXJzIHNob3VsZCB1c2UgYGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgpYGAuIElmIGEgZHJpdmVyXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMjM1LXJlYWxseSBuZWVkcyB0byBob2xkIHRoZSBtbWFwIGxvY2sgYWNyb3NzIHdvcmsgb3V0c2lkZSBITU0sIGl0IGNhbiB1c2U6OlxuLS1cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yNDA9aW50ZXJmYWNlIGNhbm5vdCBzdXBwb3J0IFZNQXMgd2hvc2UgZmF1bHQgaGFuZGxlcnMgbmVlZCB0byBkcm9wIHRoZSBtbWFwIGxvY2suXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MjQxOk5ldyBjYWxsZXJzIHNob3VsZCBwcmVmZXIgYGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgpYGAgdW5sZXNzIHRoZXlcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdC0yNDItaGF2ZSBhIHNwZWNpZmljIHJlcXVpcmVtZW50IHRvIGtlZXAgdGhlIG1tYXAgbG9jayBoZWxkIGFjcm9zcyB0aGUgY2FsbC5cbi0tXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9jdHguYz0xMDMxPXN0YXRpYyBpbnQgYWllMl9wb3B1bGF0ZV9yYW5nZShzdHJ1Y3QgYW1keGRuYV9nZW1fb2JqICphYm8pXG4tLVxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMtMTA2NC1cbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jOjEwNjU6XHRyZXQgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZtYXBwLVx1MDAzZXJhbmdlLCB0aW1lb3V0KTtcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jLTEwNjYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM9ODQxPWVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBkcm1fZ3B1c3ZtX3NjYW5fbW0oc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODY4LXJldHJ5OlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo4Njk6XHRlcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZobW1fcmFuZ2UsIHRpbWVvdXQpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NzAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM9MTQ0ND1pbnQgZHJtX2dwdXN2bV9nZXRfcGFnZXMoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE0OTEtXHRobW1fcmFuZ2UuaG1tX3BmbnMgPSBwZm5zO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxNDkyOlx0ZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2aG1tX3JhbmdlLCB0aW1lb3V0KTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTQ5My1cdG1tcHV0KG1tKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jPTE3MDM9aW50IGRybV9ncHVzdm1fcmFuZ2VfZXZpY3Qoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE3MjgtXHRobW1fcmFuZ2UuaG1tX3BmbnMgPSBwZm5zO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxNzI5Olx0ZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2aG1tX3JhbmdlLCB0aW1lb3V0KTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTczMC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jPTY1Mj1zdGF0aWMgaW50IG5vdXZlYXVfcmFuZ2VfZmF1bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jLTY3OS1hZ2FpbjpcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmM6NjgwOlx0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2cmFuZ2UsIHRpbWVvdXQpO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYy02ODEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvaHYvbXNodl9yZWdpb25zLmM9Mzk2PXN0YXRpYyBpbnQgbXNodl9yZWdpb25fcmFuZ2VfZmF1bHQoc3RydWN0IG1zaHZfbWVtX3JlZ2lvbiAqcmVnaW9uLFxuLS1cbmRyaXZlcnMvaHYvbXNodl9yZWdpb25zLmMtNDE1LWFnYWluOlxuZHJpdmVycy9odi9tc2h2X3JlZ2lvbnMuYzo0MTY6XHRyZXQgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZyYW5nZSwgMCk7XG5kcml2ZXJzL2h2L21zaHZfcmVnaW9ucy5jLTQxNy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbV9vZHAuYz0zMjQ9aW50IGliX3VtZW1fb2RwX21hcF9kbWFfYW5kX2xvY2soc3RydWN0IGliX3VtZW1fb2RwICp1bWVtX29kcCwgdTY0IHVzZXJfdmlydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtX29kcC5jLTM2OC1yZXRyeTpcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW1fb2RwLmM6MzY5Olx0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2cmFuZ2UsIHRpbWVvdXQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbV9vZHAuYy0zNzAtXHRpZiAodW5saWtlbHkocmV0KSlcbi0tXG5pbmNsdWRlL2xpbnV4L2htbS5oPTEyNT1pbnQgaG1tX3JhbmdlX2ZhdWx0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlKTtcbmluY2x1ZGUvbGludXgvaG1tLmg6MTI2OmludCBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSxcbmluY2x1ZGUvbGludXgvaG1tLmgtMTI3LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQpO1xuLS1cbmxpYi90ZXN0X2htbS5jPTM5Mj1zdGF0aWMgaW50IGRtaXJyb3JfcmFuZ2VfZmF1bHRfdW5sb2NrZWQoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXG4tLVxubGliL3Rlc3RfaG1tLmMtMzk4LVx0d2hpbGUgKHRydWUpIHtcbmxpYi90ZXN0X2htbS5jOjM5OTpcdFx0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQocmFuZ2UsIHRpbWVvdXQpO1xubGliL3Rlc3RfaG1tLmMtNDAwLVx0XHRpZiAocmV0KVxuLS1cbm1tL2htbS5jPTY4OT1zdGF0aWMgaW50IGhtbV9yYW5nZV9mYXVsdF9sb2NrZWQoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UsIGJvb2wgKmxvY2tlZClcbi0tXG5tbS9obW0uYy03NTMtICogVGhlIG1tYXAgbG9jayBtdXN0IGJlIGhlbGQgYnkgdGhlIGNhbGxlciBhbmQgd2lsbCByZW1haW4gaGVsZCBvbiByZXR1cm4uXG5tbS9obW0uYzo3NTQ6ICogTmV3IHVzZXJzIHNob3VsZCBwcmVmZXIgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoKSB1bmxlc3MgdGhleVxubW0vaG1tLmMtNzU1LSAqIHNwZWNpZmljYWxseSBuZWVkIHRvIGtlZXAgdGhlIG1tYXAgbG9jayBoZWxkIGFjcm9zcyB0aGUgY2FsbC4gVGhpcyBoZWxwZXJcbi0tXG5tbS9obW0uYz03NjI9RVhQT1JUX1NZTUJPTChobW1fcmFuZ2VfZmF1bHQpO1xuLS1cbm1tL2htbS5jLTc2NC0vKipcbm1tL2htbS5jOjc2NTogKiBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCAtIGZhdWx0IGluIGEgcmFuZ2Ugd2l0aCBhIHJldHJ5IHRpbWVvdXRcbm1tL2htbS5jLTc2Ni0gKiBAcmFuZ2U6XHRhcmd1bWVudCBzdHJ1Y3R1cmVcbi0tXG5tbS9obW0uYy03ODMtICovXG5tbS9obW0uYzo3ODQ6aW50IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLFxubW0vaG1tLmMtNzg1LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQpXG4tLVxubW0vaG1tLmMtODI0LX1cbm1tL2htbS5jOjgyNTpFWFBPUlRfU1lNQk9MKGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KTtcbm1tL2htbS5jLTgyNi1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9obW0tdGVzdHMuYz0yOTA0PVRFU1RfRl9USU1FT1VUKGhtbSwgYmVuY2htYXJrX3RocF9taWdyYXRpb24sIDEyMClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9obW0tdGVzdHMuYy0yOTYwLSAqIFRlc3QgdGhhdCBITU0gY2FuIGZhdWx0IGluIHBhZ2VzIGJhY2tlZCBieSB1c2VyZmF1bHRmZCB1c2luZyB0aGVcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2htbS10ZXN0cy5jOjI5NjE6ICogaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoKSBwYXRoIHdpdGggbm8gdGltZW91dC4gVGhpcyBleGVyY2lzZXNcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2htbS10ZXN0cy5jLTI5NjItICogdGhlIGxvY2stZHJvcCByZXRyeSBsb2dpYyBpbiB0aGUgSE1NIGZyYW1ld29yay5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTkxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUaW1lb3V0IENoYW5nZXMgaW4gSE1NIEZhdWx0IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBwYXRjaCBjaGFuZ2VzLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUgY29kZSBpcyBtb2RpZnlpbmcgaG93IGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAgaXMgY2FsbGVkIGluIGEgZmV3IGNyaXRpY2FsIGFyZWFzOiBgYW1keGRuYWAsIGBkcm1fZ3B1c3ZtYCwgYW5kIGBub3V2ZWF1X3N2bWAuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgY2hhbmdpbmcgdGhlIHRpbWVvdXQgcGFyYW1ldGVyLiBQcmV2aW91c2x5LCBpdCB3YXMgZWl0aGVyIGFuIGFic29sdXRlIGppZmZpZXMgdmFsdWUgb3IsIGF0IGxlYXN0LCB0aGUgKnJlbWFpbmluZyogamlmZmllcyB1bnRpbCBhIHRpbWVvdXQuIE5vdywgaXQmIzM5O3MgYmVpbmcgY29udmVydGVkIHRvIGEgKnJlbGF0aXZlKiB0aW1lb3V0LCB3aGljaCBpcyBpbnRlcmVzdGluZy4KCldhaXQgYSBzZWNvbmQuLi4gZG9lcyBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgIGFjdHVhbGx5IGV4cGVjdCBhIHJlbGF0aXZlIHRpbWVvdXQ/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gTGV0IG1lIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGluIGBtbS9obW0uY2AuIEkgaGF2ZSB0byBiZSBzdXJlIHRoZSBjaGFuZ2UgaXMgY29ycmVjdC4gSXQmIzM5O3MgZWFzeSB0byBtYWtlIGEgc3VidGxlIG1pc3Rha2UgdGhlcmUgYW5kIGludHJvZHVjZSBhIHNlcmlvdXMgaXNzdWUuIEdvdHRhIGNvbmZpcm0gdGhlIHNlbWFudGljcyBvZiB0aGF0IHRpbWVvdXQgcGFyYW1ldGVyIGJlZm9yZSBJIHNpZ24gb2ZmIG9uIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9obW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9obW0uYz02ODk9c3RhdGljIGludCBobW1fcmFuZ2VfZmF1bHRfbG9ja2VkKHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLCBib29sICpsb2NrZWQpXG4tLVxubW0vaG1tLmMtNzUzLSAqIFRoZSBtbWFwIGxvY2sgbXVzdCBiZSBoZWxkIGJ5IHRoZSBjYWxsZXIgYW5kIHdpbGwgcmVtYWluIGhlbGQgb24gcmV0dXJuLlxubW0vaG1tLmM6NzU0OiAqIE5ldyB1c2VycyBzaG91bGQgcHJlZmVyIGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KCkgdW5sZXNzIHRoZXlcbm1tL2htbS5jLTc1NS0gKiBzcGVjaWZpY2FsbHkgbmVlZCB0byBrZWVwIHRoZSBtbWFwIGxvY2sgaGVsZCBhY3Jvc3MgdGhlIGNhbGwuIFRoaXMgaGVscGVyXG4tLVxubW0vaG1tLmM9NzYyPUVYUE9SVF9TWU1CT0woaG1tX3JhbmdlX2ZhdWx0KTtcbi0tXG5tbS9obW0uYy03NjQtLyoqXG5tbS9obW0uYzo3NjU6ICogaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgLSBmYXVsdCBpbiBhIHJhbmdlIHdpdGggYSByZXRyeSB0aW1lb3V0XG5tbS9obW0uYy03NjYtICogQHJhbmdlOlx0YXJndW1lbnQgc3RydWN0dXJlXG4tLVxubW0vaG1tLmMtNzgzLSAqL1xubW0vaG1tLmM6Nzg0OmludCBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSxcbm1tL2htbS5jLTc4NS1cdFx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0KVxuLS1cbm1tL2htbS5jLTgyNC19XG5tbS9obW0uYzo4MjU6RVhQT1JUX1NZTUJPTChobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCk7XG5tbS9obW0uYy04MjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkxNAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYG1tL2htbS5jYCAtIExpbmUgNzg0KioKCk9rYXksIEkmIzM5O20gdGhpbmtpbmcgd2UgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIG1lbW9yeSBtYW5hZ2VtZW50LCBzbyBsZXQmIzM5O3MgemVybyBpbiBvbiBgbW0vaG1tLmNgLiBJJiMzOTttIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIGxpbmUgNzg0IOKAkyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgcGFydGljdWxhciBzdWJzeXN0ZW0gaXMgaGFuZGxpbmcgdGhpbmdzLiBJJiMzOTttIGFzc3VtaW5nIGl0JiMzOTtzIHByb2JhYmx5IHJlbGF0ZWQgdG8gYWxsb2NhdGlvbiwgZGVhbGxvY2F0aW9uLCBvciBwb3NzaWJseSBldmVuIHRyYWNraW5nIG1ldGFkYXRhLCBnaXZlbiB0aGUgdHlwaWNhbCBwYXR0ZXJucyBJJiMzOTt2ZSBzZWVuIGluIHRoZXNlIGtpbmRzIG9mIGtlcm5lbCBtZW1vcnkgbWFuYWdlbWVudCBpbXBsZW1lbnRhdGlvbnMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSAqaGFwcGVuaW5nKiB0aGVyZS4gSG9wZWZ1bGx5LCB0aGVyZSBhcmUgc29tZSBjbGFyaWZ5aW5nIGNvbW1lbnRzIGFyb3VuZCB0aGF0IGFyZWEhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9obW0uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc2NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzY0Olx0LyoqXG4gNzY1Olx0ICogaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgLSBmYXVsdCBpbiBhIHJhbmdlIHdpdGggYSByZXRyeSB0aW1lb3V0XG4gNzY2Olx0ICogQHJhbmdlOlx0YXJndW1lbnQgc3RydWN0dXJlXG4gNzY3Olx0ICogQHRpbWVvdXQ6XHR0aW1lb3V0IGluIGppZmZpZXMgZm9yIGludGVybmFsIC1FQlVTWSByZXRyaWVzLCBvciAwIHRvIHJldHJ5XG4gNzY4Olx0ICpcdFx0aW5kZWZpbml0ZWx5XG4gNzY5Olx0ICpcbiA3NzA6XHQgKiBUaGUgY2FsbGVyIG11c3Qgbm90IGhvbGQgdGhlIG1tYXAgbG9jay4gVGhlIGZ1bmN0aW9uIHRha2VzIHRoZSBtbWFwIHJlYWRcbiA3NzE6XHQgKiBsb2NrIGludGVybmFsbHkgYW5kIGFsbG93cyBoYW5kbGVfbW1fZmF1bHQoKSB0byBkcm9wIGl0IGR1cmluZyBmYXVsdHMuIElmXG4gNzcyOlx0ICogdGhlIG1tYXAgbG9jayBpcyBkcm9wcGVkIG9yIHRoZSByYW5nZSBpcyBpbnZhbGlkYXRlZCwgdGhlIGZ1bmN0aW9uIHJlZnJlc2hlc1xuIDc3MzpcdCAqIHJhbmdlLVx1MDAzZW5vdGlmaWVyX3NlcSBhbmQgcmVzdGFydHMgdGhlIHdhbGsgaW50ZXJuYWxseS5cbiA3NzQ6XHQgKlxuIDc3NTpcdCAqIFBhc3NpbmcgMCBmb3IgQHRpbWVvdXQgcmV0cmllcyBpbmRlZmluaXRlbHkuIEEgbm9uLXplcm8gQHRpbWVvdXQgaXMgYSBjYWxsZXJcbiA3NzY6XHQgKiBwb2xpY3kgbGltaXQgZm9yIHJlcGVhdGVkIG1tdS1ub3RpZmllciBpbnZhbGlkYXRpb24gcmV0cmllcy4gSE1NIGRvZXMgbm90XG4gNzc3Olx0ICogaW50ZXJydXB0IHBhZ2UgZmF1bHQgaGFuZGxpbmcgd2hlbiB0aGUgdGltZW91dCBleHBpcmVzLCBidXQgcmV0dXJucyAtRUJVU1lcbiA3Nzg6XHQgKiBpZiB0aGUgcmV0cnkgYnVkZ2V0IGlzIGV4aGF1c3RlZCBiZWZvcmUgYSBzdGFibGUgcmFuZ2UgaXMgb2J0YWluZWQuXG4gNzc5Olx0ICpcbiA3ODA6XHQgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBvbmUgb2YgdGhlIGVycm9yIGNvZGVzIGRvY3VtZW50ZWQgZm9yXG4gNzgxOlx0ICogaG1tX3JhbmdlX2ZhdWx0KCkuIC1FSU5UUiBpcyByZXR1cm5lZCBpZiBtbWFwX2xvY2sgYWNxdWlzaXRpb24gaXNcbiA3ODI6XHQgKiBpbnRlcnJ1cHRlZCBvciBhIGZhdGFsIHNpZ25hbCBpcyBwZW5kaW5nIGR1cmluZyByZXRyeSBoYW5kbGluZy5cbiA3ODM6XHQgKi9cbiA3ODQ6XHRpbnQgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UsXG4gNzg1Olx0XHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dClcbiA3ODY6XHR7XG4gNzg3Olx0XHRzdHJ1Y3QgbW1fc3RydWN0ICptbSA9IHJhbmdlLVx1MDAzZW5vdGlmaWVyLVx1MDAzZW1tO1xuIDc4ODpcdFx0dW5zaWduZWQgbG9uZyBkZWFkbGluZSA9IDA7XG4gNzg5Olx0XHRib29sIGxvY2tlZCA9IGZhbHNlO1xuIDc5MDpcdFx0aW50IHJldDtcbiA3OTE6XHRcbiA3OTI6XHRcdGRvIHtcbiA3OTM6XHRcdFx0aWYgKGZhdGFsX3NpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxuIDc5NDpcdFx0XHRcdHJldHVybiAtRUlOVFI7XG4gNzk1Olx0XG4gNzk2Olx0XHRcdGlmICh0aW1lb3V0KSB7XG4gNzk3Olx0XHRcdFx0LypcbiA3OTg6XHRcdFx0XHQgKiBJZiB0aGUgcHJldmlvdXMgZmF1bHQgZHJvcHBlZCBtbWFwX2xvY2ssIHRoZW4gdGhlIGZhdWx0XG4gNzk5Olx0XHRcdFx0ICogaGFuZGxlciBtYWRlIHByb2dyZXNzLiBSZXN0YXJ0IHRoZSByZXRyeSB0aW1lb3V0IGluIHRoYXRcbiA4MDA6XHRcdFx0XHQgKiBjYXNlLCBidXQga2VlcCB0aGUgZXhpc3RpbmcgZGVhZGxpbmUgZm9yIG9yZGluYXJ5IC1FQlVTWVxuIDgwMTpcdFx0XHRcdCAqIHJldHJpZXMuXG4gODAyOlx0XHRcdFx0ICovXG4gODAzOlx0XHRcdFx0aWYgKCFsb2NrZWQpXG4gODA0Olx0XHRcdFx0XHRkZWFkbGluZSA9IGppZmZpZXMgJiM0MzsgdGltZW91dDtcbiA4MDU6XHRcbiA4MDY6XHRcdFx0XHRpZiAodGltZV9hZnRlcihqaWZmaWVzLCBkZWFkbGluZSkpXG4gODA3Olx0XHRcdFx0XHRyZXR1cm4gLUVCVVNZO1xuIDgwODpcdFx0XHR9XG4gODA5Olx0XG4gODEwOlx0XHRcdHJhbmdlLVx1MDAzZW5vdGlmaWVyX3NlcSA9XG4gODExOlx0XHRcdFx0bW11X2ludGVydmFsX3JlYWRfYmVnaW4ocmFuZ2UtXHUwMDNlbm90aWZpZXIpO1xuIDgxMjpcdFxuIDgxMzpcdFx0XHRyZXQgPSBtbWFwX3JlYWRfbG9ja19raWxsYWJsZShtbSk7XG4gODE0Olx0XHRcdGlmIChyZXQpXG4gODE1Olx0XHRcdFx0cmV0dXJuIHJldDtcbiA4MTY6XHRcbiA4MTc6XHRcdFx0bG9ja2VkID0gdHJ1ZTtcbiA4MTg6XHRcdFx0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X2xvY2tlZChyYW5nZSwgXHUwMDI2bG9ja2VkKTtcbiA4MTk6XHRcdFx0aWYgKGxvY2tlZClcbiA4MjA6XHRcdFx0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbiA4MjE6XHRcdH0gd2hpbGUgKHJldCA9PSAtRUJVU1kpO1xuIDgyMjpcdFxuIDgyMzpcdFx0cmV0dXJuIHJldDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDM1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgIEZ1bmN0aW9uKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBpdCBzZWVtcyBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgIGV4cGVjdHMgYSByZWxhdGl2ZSB0aW1lb3V0IHZhbHVlLCBleHByZXNzZWQgaW4gamlmZmllcywgYW5kIHRoZW4gaW50ZXJuYWxseSBjYWxjdWxhdGVzIHRoZSBhY3R1YWwgZGVhZGxpbmUuIFRoZSBwYXRjaCBoZXJlIGFkZHJlc3NlcyBzb21lIGNhbGxlcnMgdGhhdCB3ZXJlLCBjcml0aWNhbGx5LCBtaXNpbnRlcnByZXRpbmcgdGhhdCBhbmQgcGFzc2luZyBpbiBlaXRoZXIgYW4gYWJzb2x1dGUgamlmZmllcyB2YWx1ZSBvciBhIHZhbHVlIHJlcHJlc2VudGluZyByZW1haW5pbmcgamlmZmllcy4gSG1tLCB0aGlzIHJhaXNlcyBhIHF1ZXN0aW9uLi4uaXMgdGhpcyBmdW5jdGlvbiBhIG5ld2VyIGFkZGl0aW9uIHRvIHRoZSBrZXJuZWw/IEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgaXRzIHJldmlzaW9uIGhpc3RvcnkgdG8gY29uZmlybSBteSBhc3N1bXB0aW9uLCBhcyB0aGF0IHdvdWxkIGdpdmUgaW1wb3J0YW50IGNvbnRleHQgZm9yIHRoaXMgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2htbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9obW0uaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2htbS5oPTEyNT1pbnQgaG1tX3JhbmdlX2ZhdWx0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlKTtcbmluY2x1ZGUvbGludXgvaG1tLmg6MTI2OmludCBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSxcbmluY2x1ZGUvbGludXgvaG1tLmgtMTI3LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mzc2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVjZW50IEFkZGl0aW9uIG9mIGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAgY2hhbmdlLiBJIHNlZSBpdCYjMzk7cyBhIHJlY2VudCBhZGRpdGlvbiwgYW5kIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkcmVzc2luZyBpdHMgdXNhZ2UgYWNyb3NzIHNldmVyYWwgZHJpdmVycy4gSW50ZXJlc3RpbmcuIFRoZSBwYXRjaCB0b3VjaGVzOiBgZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmNgLCBgZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uY2AsIGFuZCBgZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uY2AuCgpOb3csIHRoZSBxdWVzdGlvbiBpcywgYXJlIHRoZXNlIGRyaXZlcnMgZXZlbiByZWxldmFudCBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQsIGNvbnNpZGVyaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyB0aW1lb3V0PyBgZHJtX2dwdXN2bS5jYCBpcyBwYXJ0IG9mIERSTSBHUFUgU1ZNLCB3aGljaCBpbXBsaWVzIGl0IG1pZ2h0IGJlIHVzZWQgYnkgYSBmZXcgZHJpdmVycy4gYG5vdXZlYXVfc3ZtLmNgIGlzIHBhcnQgb2YgTm91dmVhdSwgYW5kIGBhaWUyX2N0eC5jYCBiZWxvbmdzIHRvIHRoZSBBTUQgWEROQSBkcml2ZXIuCgpTcGVjaWZpY2FsbHkgZm9yIGBkcm1fZ3B1c3ZtLmNgLCBJIG5lZWQgdG8gY29uZmlybSBpZiBpdCYjMzk7cyBldmVuIGNvbXBpbGVkIGluLiBBbHJpZ2h0LCB0aGUgY29tcGlsYXRpb24gaXMgY29uZGl0aW9uYWwgb24gYENPTkZJR19EUk1fR1BVU1ZNYC4gR29vZCwgbm93IEkga25vdyB3aGVyZSB0byBsb29rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFJNX0dQVVNWTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0yMjE9Y29uZmlnIFJVU1RfRFJNX0dQVVZNXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjI3LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjI4OmNvbmZpZyBEUk1fR1BVU1ZNXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMjktXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTQ3CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIERSTV9HUFVTVk0gTGFuZHNjYXBlKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBraWNrcyBvZmYgd2l0aCBhIHNwZWNpZmljLCBhbmQgcXVpdGUgZm9jdXNlZCwgZ29hbDogdG8gdW5kZXJzdGFuZCB0aGUgdXNhZ2UgcGF0dGVybnMgc3Vycm91bmRpbmcgYERSTV9HUFVTVk1gLiBUaGlzIGlzbiYjMzk7dCBhIGNhc3VhbCBleHBsb3JhdGlvbjsgaXQmIzM5O3MgYSB0YXJnZXRlZCBxdWVyeS4gV2UmIzM5O3JlIG5vdCBqdXN0IGxvb2tpbmcgZm9yICphbnkqIHVzZSBvZiB0aGUgRFJNIHN1YnN5c3RlbSwgYnV0IHNwZWNpZmljYWxseSBob3cgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCwgb3IgYmVpbmcgaW5mbHVlbmNlZCBieSwgYEdQVVNWTWAuIFRoaXMgc3VnZ2VzdHMgYSBwcmUtZXhpc3RpbmcgdW5kZXJzdGFuZGluZyBvZiBib3RoIERSTSAoRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyKSBhbmQsIHByZXN1bWFibHksIHRoZSBHUFUtYmFzZWQgdmlydHVhbCBtZW1vcnkgKEdQVVNWTSkgY29uY2VwdC4gVGhlIGltcGxpZWQgcXVlc3Rpb24gaXMgJiMzNDtXaG8mIzM5O3MgdXNpbmcgdGhpcz8gV2hlcmUgaXMgaXQgYmVpbmcgdXRpbGl6ZWQ/IEluIHdoYXQgY29udGV4dD8mIzM0OyBUaGlzIHN0cm9uZ2x5IGhpbnRzIGF0IGFuIGludmVzdGlnYXRpb24gaW50byBwb3RlbnRpYWwgaW50ZWdyYXRpb24gaXNzdWVzLCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcywgb3IgcGVyaGFwcyBldmVuIGNyb3NzLW1vZHVsZSBkZXBlbmRlbmNpZXMgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgZ3JhcGhpY3Mgc3RhY2suIEl0IGNvdWxkIGFsc28gcmVsYXRlIHRvIGRlYnVnZ2luZyBhIHNwZWNpZmljIGlzc3VlLCBvciBnYWluaW5nIGFuIG92ZXJ2aWV3IG9mIGhvdyB0aGF0IHBhcnQgb2YgdGhlIGdyYXBoaWNzIHN5c3RlbSBpcyB1c2VkLiBUaGUgZ29hbCBpcyB0byBvYnRhaW4gY29udGV4dHVhbCBpbmZvcm1hdGlvbi4gVGhlICYjMzQ7TGV0JiMzOTtzIHNlZSYjMzQ7IGltcGxpZXMgYSBtZXRob2RpY2FsLCBkYXRhLWRyaXZlbiBhcHByb2FjaCB0byB0aGUgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IERSTV9HUFVTVk0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc9Mj1jb25maWcgRFJNX1hFXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctNDEtXHRzZWxlY3QgRFJNX0VYRUNcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjQyOlx0c2VsZWN0IERSTV9HUFVTVk0gaWYgIVVNTFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctNDMtXHRzZWxlY3QgRFJNX0dQVVZNXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc9Nzk9Y29uZmlnIERSTV9YRV9HUFVTVk1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy04NS1cdHNlbGVjdCBERVZJQ0VfUFJJVkFURVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6ODY6XHRzZWxlY3QgRFJNX0dQVVNWTVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctODctXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDIyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgR1BVIERyaXZlcnMgaW4gYSBWaXJ0dWFsIEVudmlyb25tZW50KioKCk9rYXksIHNvIHRoZSBgRFJNX1hFYCBkcml2ZXIsIEludGVsJiMzOTtzIFhlIGRyaXZlciwgc2VlbXMgdG8gZGVwZW5kIG9uIGBEUk1fR1BVU1ZNYC4gSSYjMzk7bSB3b25kZXJpbmcgaWYgd2UgY2FuIGZ1enogdGhlc2UgZHJpdmVycywgc3BlY2lmaWNhbGx5IGBEUk1fWEVgIGFuZCBgbm91dmVhdWAsIHdpdGhpbiBhIFZNLiBUaGUgZ2VuZXJhbCBjaGFsbGVuZ2Ugd2l0aCBHUFUgZHJpdmVycyBpcyB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jeS4gVGhleSBvZnRlbiBuZWVkIHNwZWNpZmljIGhhcmR3YXJlIHRvIGZ1bmN0aW9uLiBIb3dldmVyLCBzb21lIERSTSBkcml2ZXJzIGFyZSBhY2Nlc3NpYmxlIGFuZCBhbGxvdyBJT0NUTCBjYWxscyBldmVuIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSwgb3Igd2l0aCBlbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGB2a21zYC4gQnV0LCBhcyBJIHJlY2FsbCwgYm90aCBgeGVgIGFuZCBgbm91dmVhdWAgdXN1YWxseSByZXF1aXJlIFBDSSBkZXZpY2VzLCB3aGljaCBjb21wbGljYXRlcyB0aGluZ3MuCgpOb3csIEkga25vdyBTeXprYWxsZXIgY2FuIGZ1enogRFJNIGRyaXZlcnMsIGVpdGhlciBieSB1c2luZyBgc3l6X3VzYl9jb25uZWN0YCwgaW5qZWN0aW5nIFBDSSBkZXZpY2VzLCBvciBieSBqdXN0IG9wZW5pbmcgYSBgL2Rldi9kcmkvcmVuZGVyRCpgIGRldmljZSBmaWxlIGlmIGl0IGV4aXN0cy4gQnV0IGdlbmVyYWxseSwgdGhlIGRyaXZlciBwcm9iZSB3aWxsIGZhaWwgd2l0aG91dCB0aGUgY29ycmVjdCBoYXJkd2FyZSwgcHJldmVudGluZyB0aGUgY3JlYXRpb24gb2YgdGhlIG5lY2Vzc2FyeSBkZXZpY2Ugbm9kZXMuCgpIbW0sIGRvZXMgU3l6a2FsbGVyIGhhdmUgc3BlY2lmaWMgc3VwcG9ydCBmb3IgUENJIGZ1enppbmc/IElzIGl0IHVzaW5nIGBzeXpfcGNpX2Nvbm5lY3RgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJIHdhcyB0aGlua2luZyBpdCYjMzk7cyBwcm9iYWJseSB1c2luZyBgc3l6X2t2bV9zZXR1cF9jcHVgIG9yIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpXy4uLmAgQnV0IG15IHJlY29sbGVjdGlvbiBzZWVtcyBzcG90dHkuIEl0IGRvZXMgaGF2ZSAqc29tZSogUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBidXQgaXQgZmVlbHMgbGltaXRlZC4KCkFsc28sIEkmIzM5O20gbm90aW5nIHRoZSBtZW50aW9uIG9mIGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAsIHdoaWNoIGlzIGFsc28gdXNlZCBpbiBgbGliL3Rlc3RfaG1tLmNgLiBTaG91bGQgSSBjaGVjayBpZiBgbGliL3Rlc3RfaG1tLmNgIGhhcyBiZWVuIG1vZGlmaWVkPyBObywgaXQgbG9va3MgbGlrZSBpdCBoYXNuJiMzOTt0LiBUaGlzIHBhdGNoIG9ubHkgdG91Y2hlcyBgYWllMl9jdHguY2AsIGBkcm1fZ3B1c3ZtLmNgLCBhbmQgYG5vdXZlYXVfc3ZtLmNgLgoKV2FpdCwgYGRybV9ncHVzdm0uY2AgaXMgY29yZSBEUk0gY29kZSBmb3IgR1BVIFNWTSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIElzIGl0IGV2ZW4gd29ydGggZnV6emluZz8gSWYgdGhlIGNvZGUgcmVsaWVzIG9uIHNwZWNpZmljIEFNRCBYRE5BLCBJbnRlbCBYZSwgb3IgTnZpZGlhIGhhcmR3YXJlLCBpdCYjMzk7cyBsaWtlbHkgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBWTS4gQnV0LCBpZiBgbm91dmVhdWAgaXMgZm9yIE52aWRpYSwgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGVzdGluZyBpdCB3aXRoIGEgdmlydHVhbCBHUFUuCgpXaGF0IGFib3V0IGBkcm1fZ3B1c3ZtLmNgPyBJdCYjMzk7cyBzZWxlY3RlZCBieSBgRFJNX1hFYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIENhbiB3ZSB0ZXN0IGBEUk1fWEVgIGluIGEgVk0/IFdpdGhvdXQgSW50ZWwgWGUgaGFyZHdhcmUsIGl0IGRvZXNuJiMzOTt0IHNlZW0gbGlrZWx5LiBCdXQgdGhlbiBhZ2FpbiwgU3l6a2FsbGVyIGRvZXMgaGF2ZSBgdmttc2AgZm9yIERSTSBmdXp6aW5nLi4uIERvZXMgYHZrbXNgIGFjdHVhbGx5IHVzZSBgRFJNX0dQVVNWTWA/IEkmIzM5O2xsIG5lZWQgdG8gY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IERSTV9HUFVTVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdmttcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTE1CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGFwcHJvYWNoIGZ1enppbmcgYG5vdXZlYXVgLiBUaGUgaW5pdGlhbCBpZGVhIHdhcyB0byBzZWUgaWYgd2UgY291bGQgcHJvYmUgaXQgd2l0aCBhIGZha2UgUENJIGRldmljZS4gU3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcyB2aWEgYHN5el9wY2lfZGV2aWNlX2FkZGAg4oCTIG9yIGF0IGxlYXN0LCBzb21lIGZvcmtzIGRvLiBCdXQgdGhhdCYjMzk7cyBub3QgdGhlIHByaW1hcnkgcm91dGUuIEkgcmVjYWxsIG5vdyB0aGF0IHN5emthbGxlciBnZW5lcmFsbHkgdXNlcyBgc3l6X3VzYl9jb25uZWN0YCBmb3IgVVNCIGFuZCBgc3l6XzgwMjExXy4uLmAgZm9yIFdpRmkuIEZvciB0aGUgbW9zdCBwYXJ0LCBQQ0kgZnV6emluZyBpc24mIzM5O3QgYSByb2J1c3QsIGNvcmUgY2FwYWJpbGl0eSBvZiB2YW5pbGxhIFN5emthbGxlciwgZXNwZWNpYWxseSBmb3Igc29tZXRoaW5nIGFzIGNvbXBsZXggYXMgYSBHUFUuCgpIb3dldmVyLCB0aGlzIHBhdGNoIGZpeGVzIGFuIGlzc3VlIHdpdGhpbiBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgLiBTbywgdGhlIHF1ZXN0aW9uIHJlbWFpbnM6IGlzIGl0IHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz8KCkxldCYjMzk7cyByZS1leGFtaW5lIHRoZSBjaGFuZ2VkIGZpbGVzLiBXZSYjMzk7dmUgZ290IGNoYW5nZXMgaW4gYGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jYCwgYGRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNgLCBhbmQgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jYC4gVGhlIGNvcmUgcXVlc3Rpb24gbm93IGlzLCBhcmUgdGhlc2UgZHJpdmVycyBldmVuIHJlYWNoYWJsZSB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmU/IElmIHRoZXkgYXJlIGhhcmR3YXJlLWRlcGVuZGVudCwgdGhlbiBpdCBjb3VsZCBiZSBhIGRlYWQgZW5kLgoKSG9sZCBvbiwgdGhvdWdoLiBgZHJtX2dwdXN2bS5jYCBpcyBhICpnZW5lcmljKiBsaWJyYXJ5IGZvciBEUk0gZHJpdmVycy4gVGhhdCBjaGFuZ2VzIHRoaW5ncy4gRXZlbiBpZiBjdXJyZW50bHkgb25seSBzZWxlY3RlZCBieSBgRFJNX1hFYCwgdGhpcyBpcyBjb3JlIGZ1bmN0aW9uYWxpdHkgdG8gRFJNIGFzIGEgd2hvbGUuIFRoYXQgaW5jcmVhc2VzIHRoZSBwb3NzaWJpbGl0eSBvZiB0cmlnZ2VyaW5nIHNvbWV0aGluZywgcG90ZW50aWFsbHkgdGhyb3VnaCBtdWx0aXBsZSBkcml2ZXJzLgoKT2theSwgbmV4dCBzdGVwIGlzIHRvIG1ha2Ugc3VyZSB0aGF0IGBub3V2ZWF1YCBpcyBlbmFibGVkIGluIFN5emthbGxlci4gWWVzLCBpdCBsb29rcyBsaWtlIGBDT05GSUdfRFJNX05PVVZFQVVgIGlzIGluZGVlZCBlbmFibGVkLiBTbyB0aGUgbmV4dCBzdGVwIGlzOiBjYW4gc3l6a2FsbGVyIHJlYWNoIGBub3V2ZWF1X3N2bS5jYD8gSSBuZWVkIHRvIGNoZWNrIGhvdyBgbm91dmVhdV9zdm0uY2AgZ2V0cyBpbml0aWFsaXplZC4gSSYjMzk7bGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBzb3VyY2UgY29kZSB0byBmaW5kIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bm91dmVhdV9zdm1faW5pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jPTYzMD1ub3V2ZWF1X2RybV9kZXZpY2VfaW5pdChzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTY3OC1cdG5vdXZlYXVfaHdtb25faW5pdChkZXYpO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYzo2Nzk6XHRub3V2ZWF1X3N2bV9pbml0KGRybSk7XG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTY4MC1cdG5vdXZlYXVfZG1lbV9pbml0KGRybSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYz0zMTY9bm91dmVhdV9zdm1tX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jLTMyMC1cdHN0cnVjdCBub3V2ZWF1X3N2bW0gKnN2bW07XG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jOjMyMTpcdHN0cnVjdCBkcm1fbm91dmVhdV9zdm1faW5pdCAqYXJncyA9IGRhdGE7XG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jLTMyMi1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYz0xMDMzPXZvaWRcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmM6MTAzNDpub3V2ZWF1X3N2bV9pbml0KHN0cnVjdCBub3V2ZWF1X2RybSAqZHJtKVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYy0xMDM1LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5oPTk9c3RydWN0IG5vdXZlYXVfc3ZtbSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uaC0yMC0jaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX05PVVZFQVVfU1ZNKVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uaDoyMTp2b2lkIG5vdXZlYXVfc3ZtX2luaXQoc3RydWN0IG5vdXZlYXVfZHJtICopO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uaC0yMi12b2lkIG5vdXZlYXVfc3ZtX2Zpbmkoc3RydWN0IG5vdXZlYXVfZHJtICopO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmg9MzU9dm9pZCBub3V2ZWF1X3BmbnNfbWFwKHN0cnVjdCBub3V2ZWF1X3N2bW0gKnN2bW0sIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmgtMzgtI2Vsc2UgLyogSVNfRU5BQkxFRChDT05GSUdfRFJNX05PVVZFQVVfU1ZNKSAqL1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uaDozOTpzdGF0aWMgaW5saW5lIHZvaWQgbm91dmVhdV9zdm1faW5pdChzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSkge31cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmgtNDAtc3RhdGljIGlubGluZSB2b2lkIG5vdXZlYXVfc3ZtX2Zpbmkoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0pIHt9XG4tLVxuaW5jbHVkZS91YXBpL2RybS9ub3V2ZWF1X2RybS5oPTQzNT1zdHJ1Y3QgZHJtX25vdXZlYXVfZ2V0X3pjdWxsX2luZm8ge1xuLS1cbmluY2x1ZGUvdWFwaS9kcm0vbm91dmVhdV9kcm0uaC01MTctXG5pbmNsdWRlL3VhcGkvZHJtL25vdXZlYXVfZHJtLmg6NTE4OnN0cnVjdCBkcm1fbm91dmVhdV9zdm1faW5pdCB7XG5pbmNsdWRlL3VhcGkvZHJtL25vdXZlYXVfZHJtLmgtNTE5LVx0X191NjQgdW5tYW5hZ2VkX2FkZHI7XG4tLVxuaW5jbHVkZS91YXBpL2RybS9ub3V2ZWF1X2RybS5oPTUyMz1zdHJ1Y3QgZHJtX25vdXZlYXVfc3ZtX2JpbmQge1xuLS1cbmluY2x1ZGUvdWFwaS9kcm0vbm91dmVhdV9kcm0uaC01NjctXG5pbmNsdWRlL3VhcGkvZHJtL25vdXZlYXVfZHJtLmg6NTY4OiNkZWZpbmUgRFJNX0lPQ1RMX05PVVZFQVVfU1ZNX0lOSVQgICAgICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgJiM0MzsgRFJNX05PVVZFQVVfU1ZNX0lOSVQsIHN0cnVjdCBkcm1fbm91dmVhdV9zdm1faW5pdClcbmluY2x1ZGUvdWFwaS9kcm0vbm91dmVhdV9kcm0uaC01NjktI2RlZmluZSBEUk1fSU9DVExfTk9VVkVBVV9TVk1fQklORCAgICAgICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSAmIzQzOyBEUk1fTk9VVkVBVV9TVk1fQklORCwgc3RydWN0IGRybV9ub3V2ZWF1X3N2bV9iaW5kKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzMwNQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDIzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBMaW5lIG9mIFJlYXNvbmluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgRFJNX0lPQ1RMX05PVVZFQVVfU1ZNX0lOSVRgIHRoaW5nIOKAkyByaWdodCwgaXQmIzM5O3MgYW4gaW9jdGwuIFRvIGV2ZW4gKnVzZSogdGhhdCwgSSYjMzk7ZCBuZWVkIHRvIGhhdmUgYSBub3V2ZWF1IGRldmljZSBvcGVuLiBUaGF04oCZcyB0aGUgc3RhcnRpbmcgcG9pbnQuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBJIGdldCBhIG5vdXZlYXUgZGV2aWNlIG9wZW5lZCBpbiB0aGUgZmlyc3QgcGxhY2UsIGV2ZW4gaWYgdGhlcmUmIzM5O3Mgbm8gcGh5c2ljYWwgaGFyZHdhcmU/IE5vLCB0aGF0IHdvbiYjMzk7dCB3b3JrLCBiZWNhdXNlIHRoZSBkcml2ZXIgcHJvYmUgd2lsbCBlcnJvciBvdXQgaWYgaXQgZG9lc24mIzM5O3QgZmluZCBhbiBOdmlkaWEgUENJIGRldmljZS4KCkhtbSwgbWF5YmUgdGhlcmUmIzM5O3Mgc29tZSBraW5kIG9mIHN5bnRoZXRpYyBQQ0kgZGV2aWNlIGluamVjdGlvbiBpbiB0aGUgZnV6emVyIHRoYXQgSSYjMzk7bSBvdmVybG9va2luZz8gTm9wZSwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgYSBnZW5lcmljIFBDSSBmdXp6ZXIgbGlrZSB0aGF0LiBTbyB0aGF0JiMzOTtzIG91dC4KCldhaXQsIGhvbGQgb24sIHdoYXQgYWJvdXQgYHRlc3RfaG1tYD8gSXMgdGhhdCByZWxldmFudCBoZXJlPyBMZXQgbWUgY2hlY2vigKYgYWgsIHJpZ2h0LCBgbGliL3Rlc3RfaG1tLmNgIGlzIGp1c3QgYSB0ZXN0IG1vZHVsZSBmb3IgSE1NLiBPa2F5LCBkb2VzIHRoZSBwYXRjaCBpbiBxdWVzdGlvbiBhY3R1YWxseSBtb2RpZnkgdGhhdCBmaWxlPyBObywgaXQgZG9lc24mIzM5O3QuCgpPa2F5LCBsZXQmIzM5O3MgYmFjayB1cC4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIHRvdWNoaW5nIGBkcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9jdHguY2AsIGBkcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jYCwgYW5kIG1vc3QgaW1wb3J0YW50bHksIGBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jYC4KCkFoYSEgYGRybV9ncHVzdm0uY2Ag4oCTIGlzIHRoaXMgZXZlbiByZWxldmFudCB0byBnZXR0aW5nIGEgbm91dmVhdSBkZXZpY2Ugb3Blbj8gSSBzaG91bGQgc2VlIGlmIGBkcm1fZ3B1c3ZtLmNgIGlzIHVzZWQgYnkgYW55dGhpbmcgZWxzZSwgYW5kIGlmIHNvLCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RybV9ncHVzdm1fJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNTkyIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG4uY2xhbmctZm9ybWF0PTcxPUZvckVhY2hNYWNyb3M6XG4tLVxuLmNsYW5nLWZvcm1hdC0xODItICAtICYjMzk7ZHJtX2dlbV9mb3JfZWFjaF9ncHV2bV9ib19zYWZlJiMzOTtcbi5jbGFuZy1mb3JtYXQ6MTgzOiAgLSAmIzM5O2RybV9ncHVzdm1fZm9yX2VhY2hfcmFuZ2UmIzM5O1xuLmNsYW5nLWZvcm1hdC0xODQtICAtICYjMzk7ZHJtX2dwdXZhX2Zvcl9lYWNoX29wJiMzOTtcbi0tXG5Eb2N1bWVudGF0aW9uL2dwdS9yZmMvZ3B1c3ZtLnJzdD05MT1Qb3NzaWJsZSBmdXR1cmUgZGVzaWduIGZlYXR1cmVzXG4tLVxuRG9jdW1lbnRhdGlvbi9ncHUvcmZjL2dwdXN2bS5yc3QtMTAwLSogUmFuZ2VzIHdpdGggbWl4ZWQgc3lzdGVtIGFuZCBkZXZpY2UgcGFnZXNcbkRvY3VtZW50YXRpb24vZ3B1L3JmYy9ncHVzdm0ucnN0OjEwMTpcdCogQ2FuIGJlIGFkZGVkIGlmIHJlcXVpcmVkIHRvIGRybV9ncHVzdm1fZ2V0X3BhZ2VzIGZhaXJseSBlYXNpbHkuXG5Eb2N1bWVudGF0aW9uL2dwdS9yZmMvZ3B1c3ZtLnJzdC0xMDItKiBNdWx0aS1HUFUgc3VwcG9ydFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0xMDc9b2JqLSQoQ09ORklHX0RSTV9HUFVWTSkgJiM0Mzs9IGRybV9ncHV2bS5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTA4LVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEwOTpkcm1fZ3B1c3ZtX2hlbHBlci15IDo9IFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTEwLVx0ZHJtX2dwdXN2bS5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTExOmRybV9ncHVzdm1faGVscGVyLSQoQ09ORklHX1pPTkVfREVWSUNFKSAmIzQzOz0gXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMTItXHRkcm1fcGFnZW1hcC5vXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTE0LVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjExNTpvYmotJChDT05GSUdfRFJNX0dQVVNWTSkgJiM0Mzs9IGRybV9ncHVzdm1faGVscGVyLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMTYtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01MS0gKiAtIFBhZ2VzOlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1MjogKlx0c3RydWN0IGRybV9ncHVzdm1fcGFnZXMgaG9sZHMgdGhlIERNQSBtYXBwaW5nIHN0YXRlIGZvciBhIHJhbmdlIG9mXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTUzLSAqXHRDUFUgdmlydHVhbCBhZGRyZXNzZXM6IHRoZSBETUEgbWFwcGVkIGRldmljZSBhZGRyZXNzZXMsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01Ni0gKlx0bWFwcGluZ3MuXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU3OiAqXHRBIGRyaXZlciBlbWJlZHMgb25lIG9yIG1vcmUgc3RydWN0IGRybV9ncHVzdm1fcGFnZXMgYWxvbmdzaWRlIGl0c1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1ODogKlx0c3RydWN0IGRybV9ncHVzdm1fcmFuZ2UsIGNob29zaW5nIG9uZSBvZiB0d28gbGF5b3V0czpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTktICpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NjA6ICpcdDE6MSAtIG9uZSBkcm1fZ3B1c3ZtX3BhZ2VzIHBlciByYW5nZSAob25lIGRybV9kZXZpY2UpLiBTaW1wbGVzdFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02MS0gKlx0bGF5b3V0OyB0byBtaXJyb3IgYSBWQSByYW5nZSBvbiBzZXZlcmFsIGRldmljZXMgYSBkcml2ZXIgdXNlcyBhXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NC0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NTogKlx0TjoxIC0gb25lIGRybV9ncHVzdm1fcGFnZXMgcGVyIGRybV9kZXZpY2UsIGFsbCBzaGFyaW5nIG9uZSByYW5nZSBhbmRcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjYtICpcdG5vdGlmaWVyOyBvbmx5IHRoZSBwZXItZGV2aWNlIERNQSBtYXBwaW5nIGRpZmZlcnMuIFRoZSBpbnN0YW5jZXMgbXVzdFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NzogKlx0c2l0IGluIGNvbnRpZ3VvdXMgbWVtb3J5IHNvIGEgc2luZ2xlIGRybV9ncHVzdm1fcmFuZ2Vfc2V0X3VubWFwcGVkKClcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjgtICpcdGNhbiBtYXJrIHRoZW0gYWxsLiBBIGRyaXZlciBjYW4ga2VlcCBvbmUgaW5zdGFuY2UgaW5saW5lIGZvciB0aGUgc2luZ2xlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03NC0gKlx0XHRzdHJ1Y3QgZHJpdmVyX3JhbmdlIHtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NzU6ICpcdFx0XHRzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSBiYXNlO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03Ni0gKlx0XHRcdHVuc2lnbmVkIGludCBudW1fcGFnZXM7XHQvLyAxOiBpbmxpbmVfcGFnZXMsIFx1MDAzZTE6IHBhZ2VzW11cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNzctICpcdFx0XHR1bmlvbiB7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjc4OiAqXHRcdFx0XHRzdHJ1Y3QgZHJtX2dwdXN2bV9wYWdlcyBpbmxpbmVfcGFnZXM7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjc5OiAqXHRcdFx0XHRzdHJ1Y3QgZHJtX2dwdXN2bV9wYWdlcyAqcGFnZXM7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTgwLSAqXHRcdFx0fTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg0LSAqXHRhbGxvY2F0b3IgKGUuZy4ga2NhbGxvYyhudW1fcGFnZXMsIC4uLikpLCBpbml0aWFsaXNlcyBlYWNoIGVudHJ5IHdpdGhcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODU6ICpcdGRybV9ncHVzdm1faW5pdF9wYWdlcygpLCBhbmQgZnJlZXMgZWFjaCBlbnRyeSB3aXRoXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg2OiAqXHRkcm1fZ3B1c3ZtX2ZyZWVfcGFnZXMoKSBwbHVzIHRoZSBhcnJheSBpdHNlbGYsIGZyb20gaXRzIHJhbmdlIGZyZWVcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODc6ICpcdGNhbGxiYWNrLiBFYWNoIGRybV9ncHVzdm1fcGFnZXMgaXMgbWFwcGVkIGluZGVwZW5kZW50bHkgYnkgdGhlaXIgb3duXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg4LSAqXHRkcm1fZGV2aWNlLlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo4OTogKlx0RWFjaCBkcm1fZ3B1c3ZtX3BhZ2VzIG11c3QgYmUgemVyby1pbml0aWFsaXNlZCBhbmQgaW5pdGlhbGlzZWQgd2l0aFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5MDogKlx0ZHJtX2dwdXN2bV9pbml0X3BhZ2VzKCksIGNhbGxlZCBvbmNlIHBlciBlbnRyeS5cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTEtICpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEzNS0gKiBleGNlcHQgZm9yIHRoZSByZWNoZWNrIHJhbmdlJiMzOTtzIHBhZ2VzIGJlaW5nIHZhbGlkXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEzNjogKiAoZHJtX2dwdXN2bV9wYWdlc192YWxpZCkgd2hlbiB0aGUgZHJpdmVyIGlzIGNvbW1pdHRpbmcgR1BVIGJpbmRpbmdzLlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMzctICogVGhpcyBsb2NrIGNvcnJlc3BvbmRzIHRvIHRoZSBgYGRyaXZlci1cdTAwM2V1cGRhdGVgYCBsb2NrIG1lbnRpb25lZCBpblxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTQzLSAqIGxvY2sgdG8gc2FmZWd1YXJkIGNvcmUgR1BVIFNWTSBmdW5jdGlvbiBjYWxscyB0aGF0IG1vZGlmeSBzdGF0ZSwgc3VjaCBhc1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxNDQ6ICogZHJtX2dwdXN2bV9yYW5nZV9maW5kX29yX2luc2VydCBhbmQgZHJtX2dwdXN2bV9yYW5nZV9yZW1vdmUuIFRoaXMgbG9jayBpc1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xNDUtICogZGVub3RlZCBhcyAmIzM5O2RyaXZlcl9zdm1fbG9jayYjMzk7IGluIGNvZGUgZXhhbXBsZXMuIEZpbmVyIGdyYWluZWQgZHJpdmVyIHNpZGVcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTQ2LSAqIGxvY2tpbmcgc2hvdWxkIGFsc28gYmUgcG9zc2libGUgZm9yIGNvbmN1cnJlbnQgR1BVIGZhdWx0IHByb2Nlc3Npbmcgd2l0aGluIGFcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTQ3OiAqIHNpbmdsZSBHUFUgU1ZNLiBUaGUgJiMzOTtkcml2ZXJfc3ZtX2xvY2smIzM5OyBjYW4gYmUgdmlhIGRybV9ncHVzdm1fZHJpdmVyX3NldF9sb2NrXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE0OC0gKiB0byBhZGQgYW5ub3RhdGlvbnMgdG8gR1BVIFNWTS5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE4NC0gKlx0c3RydWN0IGRyaXZlcl9yYW5nZSB7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjE4NTogKlx0XHRzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSBiYXNlO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxODY6ICpcdFx0c3RydWN0IGRybV9ncHVzdm1fcGFnZXMgcGFnZXM7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE4Ny0gKlx0fTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE5NC0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxOTU6ICpcdFx0ZHJtX2dwdXN2bV9ub3RpZmllcl9sb2NrKGdwdXN2bSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjE5NjogKlx0XHRpZiAoZHJtX2dwdXN2bV9wYWdlc192YWxpZChncHVzdm0sIFx1MDAyNmRyYW5nZS1cdTAwM2VwYWdlcykpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE5Ny0gKlx0XHRcdGRyaXZlcl9jb21taXRfYmluZChncHVzdm0sIGRyYW5nZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xOTktICpcdFx0XHRlcnIgPSAtRUFHQUlOO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyMDA6ICpcdFx0ZHJtX2dwdXN2bV9ub3RpZmllcl91bmxvY2soZ3B1c3ZtKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjAxLSAqXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yMDctICpcdHtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjA4OiAqXHRcdHN0cnVjdCBkcm1fZ3B1c3ZtX2N0eCBjdHggPSB7fTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjA5LSAqXHRcdHN0cnVjdCBkcml2ZXJfcmFuZ2UgKmRyYW5nZTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjEwOiAqXHRcdHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpyYW5nZTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjExLSAqXHRcdGludCBlcnI7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yMTctICpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjE4OiAqXHRcdHJhbmdlID0gZHJtX2dwdXN2bV9yYW5nZV9maW5kX29yX2luc2VydChncHVzdm0sIGZhdWx0X2FkZHIsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTIxOS0gKlx0XHRcdFx0XHRcdFx0Z3B1dmFfc3RhcnQsIGdwdXZhX2VuZCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTIzNC0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyMzU6ICpcdFx0ZXJyID0gZHJtX2dwdXN2bV9nZXRfcGFnZXMoZ3B1c3ZtLCBcdTAwMjZkcmFuZ2UtXHUwMDNlcGFnZXMsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTIzNi0gKlx0XHRcdFx0XHQgICBncHVzdm0tXHUwMDNlbW0sIFx1MDAyNnJhbmdlLVx1MDAzZW5vdGlmaWVyLVx1MDAzZW5vdGlmaWVyLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyMzc6ICpcdFx0XHRcdFx0ICAgZHJtX2dwdXN2bV9yYW5nZV9zdGFydChyYW5nZSksXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjIzODogKlx0XHRcdFx0XHQgICBkcm1fZ3B1c3ZtX3JhbmdlX2VuZChyYW5nZSksIFx1MDAyNmN0eCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTIzOS0gKlx0XHRpZiAoZXJyID09IC1FT1BOT1RTVVBQIHx8IGVyciA9PSAtRUZBVUxUIHx8IGVyciA9PSAtRVBFUk0pIHtcdC8vIENQVSBtYXBwaW5ncyBjaGFuZ2VkXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTI0MC0gKlx0XHRcdGlmIChlcnIgPT0gLUVPUE5PVFNVUFApXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI0MTogKlx0XHRcdFx0ZHJtX2dwdXN2bV9yYW5nZV9ldmljdChncHVzdm0sIHJhbmdlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjQyLSAqXHRcdFx0Z290byByZXRyeTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTI1OS0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyNjA6ICpcdC8vIFRoZSBkcml2ZXIgb3ducyB0aGUgZHJtX2dwdXN2bV9wYWdlcyBsaWZlY3ljbGUuIG9wcy1cdTAwM2VyYW5nZV9mcmVlIGlzXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI2MTogKlx0Ly8gdGhlIGZpbmFsIGZhbGxiYWNrOiBkcm1fZ3B1c3ZtX2ZyZWVfcGFnZXMoKSB1bm1hcHMgYW55XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTI2Mi0gKlx0Ly8gbGluZ2VyaW5nIERNQSBtYXBwaW5nIGFuZCBhIG5vLW9wIGlmIGFscmVhZHkgdW5tYXBwZWQgYW5kIGZyZWVzIHRoZVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNjMtICpcdC8vIGRtYV9hZGRyIGFycmF5LiBUaGUgbm9ybWFsIGZsb3cgaXMgdG8gRE1BIHVubWFwIGJlZm9yZVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyNjQ6ICpcdC8vIGRybV9ncHVzdm1fcmFuZ2VfcmVtb3ZlKCkgKGJlZm9yZSB0aGUgcmFuZ2UgbGVhdmVzIHRoZSB0cmVlKS5cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjY1OiAqXHR2b2lkIGRyaXZlcl9yYW5nZV9mcmVlKHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpyYW5nZSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjY2LSAqXHR7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNjktICpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjcwOiAqXHRcdGRybV9ncHVzdm1fZnJlZV9wYWdlcyhyYW5nZS1cdTAwM2VncHVzdm0sIFx1MDAyNmRyYW5nZS1cdTAwM2VwYWdlcyxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjcxOiAqXHRcdFx0XHQgICAgICBkcm1fZ3B1c3ZtX3JhbmdlX3NpemUocmFuZ2UpIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjcyLSAqXHRcdGtmcmVlKGRyYW5nZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNzUtICpcdHZvaWQgX19kcml2ZXJfZ2FyYmFnZV9jb2xsZWN0b3Ioc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6Mjc2OiAqXHRcdFx0XHRcdHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpyYW5nZSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjc3LSAqXHR7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yODEtICpcdFx0aWYgKHJhbmdlLVx1MDAzZWZsYWdzLnBhcnRpYWxfdW5tYXApXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI4MjogKlx0XHRcdGRybV9ncHVzdm1fcmFuZ2VfZXZpY3QoZ3B1c3ZtLCByYW5nZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTI4My0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yODQtICpcdFx0ZHJpdmVyX3VuYmluZF9yYW5nZShyYW5nZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI4NTogKlx0XHQvLyBUaGUgcGFnZXMgbXVzdCBiZSBETUEgdW5tYXBwZWQgYmVmb3JlIGRybV9ncHVzdm1fcmFuZ2VfcmVtb3ZlKClcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjg2LSAqXHRcdC8vICwgc28gYSByYW5nZSBpcyBuZXZlciBvZmYgdGhlIE1NVSBpbnRlcnZhbCB0cmVlIHdoaWxlIHN0aWxsIERNQVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjg5LSAqXHRcdC8vIGZvciBkZXZpY2UgRE1BLiBUaGlzIGlzIHRoZSBub3JtYWwgdW5tYXAgcG9pbnQuXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI5MDogKlx0XHRkcm1fZ3B1c3ZtX3VubWFwX3BhZ2VzKGdwdXN2bSwgXHUwMDI2ZHJhbmdlLVx1MDAzZXBhZ2VzLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyOTE6ICpcdFx0XHRcdCAgICAgICBkcm1fZ3B1c3ZtX3JhbmdlX3NpemUocmFuZ2UpIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZULFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyOTI6ICpcdFx0XHRcdCAgICAgICBcdTAwMjYoc3RydWN0IGRybV9ncHVzdm1fY3R4KXsgLmluX25vdGlmaWVyID0gZmFsc2UgfSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI5MzogKlx0XHRkcm1fZ3B1c3ZtX3JhbmdlX3JlbW92ZShncHVzdm0sIHJhbmdlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjk0LSAqXHR9XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zMDgtICpcdHZvaWQgZHJpdmVyX2ludmFsaWRhdGlvbihzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozMDk6ICpcdFx0XHRcdCBzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqbm90aWZpZXIsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTMxMC0gKlx0XHRcdFx0IGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKm1tdV9yYW5nZSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzExLSAqXHR7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjMxMjogKlx0XHRzdHJ1Y3QgZHJtX2dwdXN2bV9jdHggY3R4ID0geyAuaW5fbm90aWZpZXIgPSB0cnVlLCB9O1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozMTM6ICpcdFx0c3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlID0gTlVMTDtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzE0LSAqXHRcdHN0cnVjdCBkcml2ZXJfcmFuZ2UgKmRyYW5nZTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTMxNy0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozMTg6ICpcdFx0ZHJtX2dwdXN2bV9mb3JfZWFjaF9yYW5nZShyYW5nZSwgbm90aWZpZXIsIG1tdV9yYW5nZS1cdTAwM2VzdGFydCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzE5LSAqXHRcdFx0XHRcdCAgbW11X3JhbmdlLVx1MDAzZWVuZCkge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzIxLSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjMyMjogKlx0XHRcdGRybV9ncHVzdm1fdW5tYXBfcGFnZXMoZ3B1c3ZtLCBcdTAwMjZkcmFuZ2UtXHUwMDNlcGFnZXMsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjMyMzogKlx0XHRcdFx0XHQgICAgICAgZHJtX2dwdXN2bV9yYW5nZV9zaXplKHJhbmdlKSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzI0LSAqXHRcdFx0XHRcdCAgICAgICBcdTAwMjZjdHgpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzI4LSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjMyOTogKlx0XHRcdGRybV9ncHVzdm1fcmFuZ2Vfc2V0X3VubWFwcGVkKHJhbmdlLCBcdTAwMjZkcmFuZ2UtXHUwMDNlcGFnZXMsIDEsIG1tdV9yYW5nZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTMzMC0gKlx0XHRcdGRyaXZlcl9nYXJiYWdlX2NvbGxlY3Rvcl9hZGQoZ3B1c3ZtLCByYW5nZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYz0zNDg9bnBhZ2VzX2luX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzUzLS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozNTQ6ICogZHJtX2dwdXN2bV9ub3RpZmllcl9maW5kKCkgLSBGaW5kIEdQVSBTVk0gbm90aWZpZXIgZnJvbSBHUFUgU1ZNXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTM1NS0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTM1OC0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozNTk6ICogUmV0dXJuOiBBIHBvaW50ZXIgdG8gdGhlIGRybV9ncHVzdm1fbm90aWZpZXIgaWYgZm91bmQgb3IgTlVMTFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNjAtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjM2MTpzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjM2Mjpkcm1fZ3B1c3ZtX25vdGlmaWVyX2ZpbmQoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzYzLVx0XHRcdCB1bnNpZ25lZCBsb25nIGVuZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTM2OS1cdGlmIChpdHJlZSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzcwOlx0XHRyZXR1cm4gY29udGFpbmVyX29mKGl0cmVlLCBzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciwgaXRyZWUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNzEtXHRlbHNlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNzMtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozNzQ6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dwdXN2bV9ub3RpZmllcl9maW5kKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzc1LVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNzYtLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjM3NzogKiBkcm1fZ3B1c3ZtX3JhbmdlX2ZpbmQoKSAtIEZpbmQgR1BVIFNWTSByYW5nZSBmcm9tIEdQVSBTVk0gbm90aWZpZXJcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzc4LSAqIEBub3RpZmllcjogUG9pbnRlciB0byB0aGUgR1BVIFNWTSBub3RpZmllciBzdHJ1Y3R1cmUuXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zODEtICpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzgyOiAqIFJldHVybjogQSBwb2ludGVyIHRvIHRoZSBkcm1fZ3B1c3ZtX3JhbmdlIGlmIGZvdW5kIG9yIE5VTExcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzgzLSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozODQ6c3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozODU6ZHJtX2dwdXN2bV9yYW5nZV9maW5kKHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpub3RpZmllciwgdW5zaWduZWQgbG9uZyBzdGFydCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzg2LVx0XHQgICAgICB1bnNpZ25lZCBsb25nIGVuZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTM5Mi1cdGlmIChpdHJlZSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzkzOlx0XHRyZXR1cm4gY29udGFpbmVyX29mKGl0cmVlLCBzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSwgaXRyZWUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zOTQtXHRlbHNlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zOTYtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozOTc6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dwdXN2bV9yYW5nZV9maW5kKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzk4LVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zOTktLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjQwMDogKiBkcm1fZ3B1c3ZtX25vdGlmaWVyX2ludmFsaWRhdGUoKSAtIEludmFsaWRhdGUgYSBHUFUgU1ZNIG5vdGlmaWVyLlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00MDEtICogQG1uaTogUG9pbnRlciB0byB0aGUgbW11X2ludGVydmFsX25vdGlmaWVyIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jPTQxMT1zdGF0aWMgYm9vbFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0MTI6ZHJtX2dwdXN2bV9ub3RpZmllcl9pbnZhbGlkYXRlKHN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90aWZpZXIgKm1uaSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDEzLVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICptbXVfcmFuZ2UsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00MTUte1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0MTY6XHRzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqbm90aWZpZXIgPVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00MTctXHRcdGNvbnRhaW5lcl9vZihtbmksIHR5cGVvZigqbm90aWZpZXIpLCBub3RpZmllcik7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00MzEtLypcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDMyOiAqIGRybV9ncHVzdm1fbm90aWZpZXJfb3BzIC0gTU1VIGludGVydmFsIG5vdGlmaWVyIG9wZXJhdGlvbnMgZm9yIEdQVSBTVk1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDMzLSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0MzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90aWZpZXJfb3BzIGRybV9ncHVzdm1fbm90aWZpZXJfb3BzID0ge1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0MzU6XHQuaW52YWxpZGF0ZSA9IGRybV9ncHVzdm1fbm90aWZpZXJfaW52YWxpZGF0ZSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDM2LX07XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00MzgtLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjQzOTogKiBkcm1fZ3B1c3ZtX2luaXQoKSAtIEluaXRpYWxpemUgdGhlIEdQVSBTVk0uXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ0MC0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ1My0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0NTQ6ICogTm90ZTogSWYgb25seSB1c2luZyB0aGUgc2ltcGxlIGRybV9ncHVzdm1fcGFnZXMgQVBJIChnZXQvdW5tYXAvZnJlZSksXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ1NS0gKiB0aGVuIG9ubHkgQGdwdXN2bSBhbmQgQG5hbWUgYXJlIGV4cGVjdGVkLiBUaGUgQGRybSBkcm1fZGV2aWNlIGZvciBkbWFcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDU2OiAqIG1hcHBpbmdzIGlzIGJvdW5kIHBlci1wYWdlcyB2aWEgZHJtX2dwdXN2bV9pbml0X3BhZ2VzKCkgYmVmb3JlIHRoZSBmaXJzdFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0NTc6ICogZHJtX2dwdXN2bV9nZXRfcGFnZXMoKSBjYWxsLiBIb3dldmVyLCB0aGUgc2FtZSBiYXNlXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ1OC0gKiBAZ3B1c3ZtIGNhbiBhbHNvIGJlIHVzZWQgd2l0aCBib3RoIG1vZGVzIHRvZ2V0aGVyIGluIHdoaWNoIGNhc2UgdGhlIGZ1bGxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDU5OiAqIHNldHVwIGlzIG5lZWRlZCwgd2hlcmUgdGhlIGNvcmUgZHJtX2dwdXN2bV9wYWdlcyBBUEkgd2lsbCBzaW1wbHkgbmV2ZXIgdXNlXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ2MC0gKiB0aGUgb3RoZXIgZmllbGRzLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDYzLSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0NjQ6aW50IGRybV9ncHVzdm1faW5pdChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00NjUtXHRcdCAgICBjb25zdCBjaGFyICpuYW1lLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDY4LVx0XHQgICAgdW5zaWduZWQgbG9uZyBub3RpZmllcl9zaXplLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0Njk6XHRcdCAgICBjb25zdCBzdHJ1Y3QgZHJtX2dwdXN2bV9vcHMgKm9wcyxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDcwLVx0XHQgICAgY29uc3QgdW5zaWduZWQgbG9uZyAqY2h1bmtfc2l6ZXMsIGludCBudW1fY2h1bmtzKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDc2LVx0fSBlbHNlIHtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDc3Olx0XHQvKiBObyBmdWxsIFNWTSBtb2RlLCBvbmx5IGNvcmUgZHJtX2dwdXN2bV9wYWdlcyBBUEkuICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ3OC1cdFx0aWYgKG9wcyB8fCBudW1fY2h1bmtzIHx8IG1tX3JhbmdlIHx8IG5vdGlmaWVyX3NpemUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01MDUtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1MDY6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dwdXN2bV9pbml0KTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTA3LVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01MDgtLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjUwOTogKiB0b19kcm1fZ3B1c3ZtX25vdGlmaWVyKCkgLSByZXRyaWV2ZSB0aGUgY29udGFpbmVyIHN0cnVjdCBmb3IgYSBnaXZlbiByYnRyZWUgbm9kZVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1MTA6ICogQG5vZGU6IGEgcG9pbnRlciB0byB0aGUgcmJ0cmVlIG5vZGUgZW1iZWRkZWQgd2l0aGluIGEgZHJtX2dwdXN2bV9ub3RpZmllciBzdHJ1Y3RcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTExLSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjUxMjogKiBSZXR1cm46IEEgcG9pbnRlciB0byB0aGUgY29udGFpbmluZyBkcm1fZ3B1c3ZtX25vdGlmaWVyIHN0cnVjdHVyZS5cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTEzLSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1MTQ6c3RhdGljIHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICp0b19kcm1fZ3B1c3ZtX25vdGlmaWVyKHN0cnVjdCByYl9ub2RlICpub2RlKVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01MTUte1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1MTY6XHRyZXR1cm4gY29udGFpbmVyX29mKG5vZGUsIHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyLCBpdHJlZS5yYik7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTUxNy19XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01MTktLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjUyMDogKiBkcm1fZ3B1c3ZtX25vdGlmaWVyX2luc2VydCgpIC0gSW5zZXJ0IEdQVSBTVk0gbm90aWZpZXJcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTIxLSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01MjUtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjUyNjpzdGF0aWMgdm9pZCBkcm1fZ3B1c3ZtX25vdGlmaWVyX2luc2VydChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1Mjc6XHRcdFx0XHQgICAgICAgc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyKVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01Mjgte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTM1LVx0aWYgKG5vZGUpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjUzNjpcdFx0aGVhZCA9IFx1MDAyNih0b19kcm1fZ3B1c3ZtX25vdGlmaWVyKG5vZGUpKS1cdTAwM2VlbnRyeTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTM3LVx0ZWxzZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTQzLS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1NDQ6ICogZHJtX2dwdXN2bV9ub3RpZmllcl9yZW1vdmUoKSAtIFJlbW92ZSBHUFUgU1ZNIG5vdGlmaWVyXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU0NS0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHRydWN0dXJlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01NDktICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU1MDpzdGF0aWMgdm9pZCBkcm1fZ3B1c3ZtX25vdGlmaWVyX3JlbW92ZShzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1NTE6XHRcdFx0XHQgICAgICAgc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyKVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01NTIte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTU3LS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1NTg6ICogZHJtX2dwdXN2bV9maW5pKCkgLSBGaW5hbGl6ZSB0aGUgR1BVIFNWTS5cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTU5LSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTYzLSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1NjQ6dm9pZCBkcm1fZ3B1c3ZtX2Zpbmkoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTY1LXtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTY2Olx0c3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyLCAqbmV4dDtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTY3LVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1Njg6XHRkcm1fZ3B1c3ZtX2Zvcl9lYWNoX25vdGlmaWVyX3NhZmUobm90aWZpZXIsIG5leHQsIGdwdXN2bSwgMCwgTE9OR19NQVgpIHtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTY5Olx0XHRzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UsICpfX25leHQ7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU3MC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU3Ni1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTc3Olx0XHRkcm1fZ3B1c3ZtX2Zvcl9lYWNoX3JhbmdlX3NhZmUocmFuZ2UsIF9fbmV4dCwgbm90aWZpZXIsIDAsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU3OC1cdFx0XHRcdFx0ICAgICAgIExPTkdfTUFYKVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1Nzk6XHRcdFx0ZHJtX2dwdXN2bV9yYW5nZV9yZW1vdmUoZ3B1c3ZtLCByYW5nZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU4MC1cdH1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU4NS19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU4NjpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ3B1c3ZtX2ZpbmkpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01ODctXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU4OC0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTg5OiAqIGRybV9ncHVzdm1fbm90aWZpZXJfYWxsb2MoKSAtIEFsbG9jYXRlIEdQVSBTVk0gbm90aWZpZXJcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTkwLSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01OTYtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU5NzpzdGF0aWMgc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1OTg6ZHJtX2dwdXN2bV9ub3RpZmllcl9hbGxvYyhzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLCB1bnNpZ25lZCBsb25nIGZhdWx0X2FkZHIpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU5OS17XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjYwMDpcdHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpub3RpZmllcjtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjAxLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjIwLS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2MjE6ICogZHJtX2dwdXN2bV9ub3RpZmllcl9mcmVlKCkgLSBGcmVlIEdQVSBTVk0gbm90aWZpZXJcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjIyLSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02MjYtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjYyNzpzdGF0aWMgdm9pZCBkcm1fZ3B1c3ZtX25vdGlmaWVyX2ZyZWUoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NjI4Olx0XHRcdFx0ICAgICBzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqbm90aWZpZXIpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTYyOS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02MzgtLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjYzOTogKiB0b19kcm1fZ3B1c3ZtX3JhbmdlKCkgLSByZXRyaWV2ZSB0aGUgY29udGFpbmVyIHN0cnVjdCBmb3IgYSBnaXZlbiByYnRyZWUgbm9kZVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NDA6ICogQG5vZGU6IGEgcG9pbnRlciB0byB0aGUgcmJ0cmVlIG5vZGUgZW1iZWRkZWQgd2l0aGluIGEgZHJtX2dwdXN2bV9yYW5nZSBzdHJ1Y3RcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjQxLSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY0MjogKiBSZXR1cm46IEEgcG9pbnRlciB0byB0aGUgY29udGFpbmluZyBkcm1fZ3B1c3ZtX3JhbmdlIHN0cnVjdHVyZS5cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjQzLSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NDQ6c3RhdGljIHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICp0b19kcm1fZ3B1c3ZtX3JhbmdlKHN0cnVjdCByYl9ub2RlICpub2RlKVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NDUte1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NDY6XHRyZXR1cm4gY29udGFpbmVyX29mKG5vZGUsIHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlLCBpdHJlZS5yYik7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY0Ny19XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NDktLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY1MDogKiBkcm1fZ3B1c3ZtX3JhbmdlX2luc2VydCgpIC0gSW5zZXJ0IEdQVSBTVk0gcmFuZ2VcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjUxLSAqIEBub3RpZmllcjogUG9pbnRlciB0byB0aGUgR1BVIFNWTSBub3RpZmllciBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY1NS0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NjU2OnN0YXRpYyB2b2lkIGRybV9ncHVzdm1fcmFuZ2VfaW5zZXJ0KHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpub3RpZmllcixcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NjU3Olx0XHRcdFx0ICAgIHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpyYW5nZSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjU4LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY2MS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NjYyOlx0ZHJtX2dwdXN2bV9ub3RpZmllcl9sb2NrKG5vdGlmaWVyLVx1MDAzZWdwdXN2bSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY2My1cdGludGVydmFsX3RyZWVfaW5zZXJ0KFx1MDAyNnJhbmdlLVx1MDAzZWl0cmVlLCBcdTAwMjZub3RpZmllci1cdTAwM2Vyb290KTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY2Ni1cdGlmIChub2RlKVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2Njc6XHRcdGhlYWQgPSBcdTAwMjYodG9fZHJtX2dwdXN2bV9yYW5nZShub2RlKSktXHUwMDNlZW50cnk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY2OC1cdGVsc2Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY3MS1cdGxpc3RfYWRkKFx1MDAyNnJhbmdlLVx1MDAzZWVudHJ5LCBoZWFkKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NjcyOlx0ZHJtX2dwdXN2bV9ub3RpZmllcl91bmxvY2sobm90aWZpZXItXHUwMDNlZ3B1c3ZtKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjczLX1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY3NS0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6Njc2OiAqIF9fZHJtX2dwdXN2bV9yYW5nZV9yZW1vdmUoKSAtIFJlbW92ZSBHUFUgU1ZNIHJhbmdlXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY3Ny0gKiBAbm90aWZpZXI6IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gbm90aWZpZXIgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02ODEtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY4MjpzdGF0aWMgdm9pZCBfX2RybV9ncHVzdm1fcmFuZ2VfcmVtb3ZlKHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpub3RpZmllcixcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NjgzOlx0XHRcdFx0ICAgICAgc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlKVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02ODQte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjg5LS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2OTA6ICogZHJtX2dwdXN2bV9yYW5nZV9hbGxvYygpIC0gQWxsb2NhdGUgR1BVIFNWTSByYW5nZVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02OTEtICogQGdwdXN2bTogUG9pbnRlciB0byB0aGUgR1BVIFNWTSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTcwMC0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NzAxOnN0YXRpYyBzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjcwMjpkcm1fZ3B1c3ZtX3JhbmdlX2FsbG9jKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjcwMzpcdFx0ICAgICAgIHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpub3RpZmllcixcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNzA0LVx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBmYXVsdF9hZGRyLCB1bnNpZ25lZCBsb25nIGNodW5rX3NpemUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03MDYte1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo3MDc6XHRzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2U7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTcwOC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTcyOC0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NzI5OiAqIGRybV9ncHVzdm1faG1tX3Bmbl90b19vcmRlcigpIC0gR2V0IHRoZSBsYXJnZXN0IENQVSBtYXBwaW5nIG9yZGVyLlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03MzAtICogQGhtbV9wZm46IFRoZSBjdXJyZW50IGhtbV9wZm4uXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03NDEtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjc0MjpzdGF0aWMgdW5zaWduZWQgaW50IGRybV9ncHVzdm1faG1tX3Bmbl90b19vcmRlcih1bnNpZ25lZCBsb25nIGhtbV9wZm4sXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTc0My1cdFx0XHRcdFx0XHR1bnNpZ25lZCBsb25nIGhtbV9wZm5faW5kZXgsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03NTctLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjc1ODogKiBkcm1fZ3B1c3ZtX2NoZWNrX3BhZ2VzKCkgLSBDaGVjayBwYWdlc1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03NTktICogQGdwdXN2bTogUG9pbnRlciB0byB0aGUgR1BVIFNWTSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTc2OS0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NzcwOnN0YXRpYyBib29sIGRybV9ncHVzdm1fY2hlY2tfcGFnZXMoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NzcxOlx0XHRcdFx0ICAgc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03NzItXHRcdFx0XHQgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTgxNi1cdFx0fVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo4MTc6XHRcdGkgJiM0Mzs9IDB4MSBcdTAwM2NcdTAwM2MgZHJtX2dwdXN2bV9obW1fcGZuX3RvX29yZGVyKHBmbnNbaV0sIGksIG5wYWdlcyk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTgxOC1cdH1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTgyNS0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODI2OiAqIGRybV9ncHVzdm1fc2Nhbl9tbSgpIC0gQ2hlY2sgdGhlIG1pZ3JhdGlvbiBzdGF0ZSBvZiBhIGRybV9ncHVzdm1fcmFuZ2VcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODI3OiAqIEByYW5nZTogUG9pbnRlciB0byB0aGUgc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgdG8gY2hlY2suXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTgyOC0gKiBAZGV2X3ByaXZhdGVfb3duZXI6IFRoZSBzdHJ1Y3QgZGV2X3ByaXZhdGVfb3duZXIgdG8gdXNlIHRvIGRldGVybWluZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODM4LSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjgzOTogKiBSZXR1cm46IFNlZSBcdTAwMjZlbnVtIGRybV9ncHVzdm1fc2Nhbl9yZXN1bHQuXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg0MC0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODQxOmVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBkcm1fZ3B1c3ZtX3NjYW5fbW0oc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NDItXHRcdFx0XHRcdCAgICAgICB2b2lkICpkZXZfcHJpdmF0ZV9vd25lcixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg0NS1cdHN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90aWZpZXIgKm5vdGlmaWVyID0gXHUwMDI2cmFuZ2UtXHUwMDNlbm90aWZpZXItXHUwMDNlbm90aWZpZXI7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg0NjpcdHVuc2lnbmVkIGxvbmcgc3RhcnQgPSBkcm1fZ3B1c3ZtX3JhbmdlX3N0YXJ0KHJhbmdlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODQ3Olx0dW5zaWduZWQgbG9uZyBlbmQgPSBkcm1fZ3B1c3ZtX3JhbmdlX2VuZChyYW5nZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg0OC1cdHN0cnVjdCBobW1fcmFuZ2UgaG1tX3JhbmdlID0ge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODU1LVx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODU2Olx0ZW51bSBkcm1fZ3B1c3ZtX3NjYW5fcmVzdWx0IHN0YXRlID0gRFJNX0dQVVNWTV9TQ0FOX1VOUE9QVUxBVEVELCBuZXdfc3RhdGU7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg1Ny1cdHVuc2lnbmVkIGxvbmcgKnBmbnM7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NzItXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg3MzpcdGRybV9ncHVzdm1fbm90aWZpZXJfbG9jayhyYW5nZS1cdTAwM2VncHVzdm0pO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NzQtXHRpZiAobW11X2ludGVydmFsX3JlYWRfcmV0cnkobm90aWZpZXIsIGhtbV9yYW5nZS5ub3RpZmllcl9zZXEpKSB7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg3NTpcdFx0ZHJtX2dwdXN2bV9ub3RpZmllcl91bmxvY2socmFuZ2UtXHUwMDNlZ3B1c3ZtKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODc2LVx0XHRnb3RvIHJldHJ5O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTE4LVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5MTk6XHRcdGkgJiM0Mzs9IDF1bCBcdTAwM2NcdTAwM2MgZHJtX2dwdXN2bV9obW1fcGZuX3RvX29yZGVyKHBmbnNbaV0sIGksIG5wYWdlcyk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTkyMC1cdH1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTIxLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5MjI6XHRkcm1fZ3B1c3ZtX25vdGlmaWVyX3VubG9jayhyYW5nZS1cdTAwM2VncHVzdm0pO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05MjMtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05MjctfVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5Mjg6RVhQT1JUX1NZTUJPTChkcm1fZ3B1c3ZtX3NjYW5fbW0pO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05MjktXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTkzMC0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6OTMxOiAqIGRybV9ncHVzdm1fcmFuZ2VfY2h1bmtfc2l6ZSgpIC0gRGV0ZXJtaW5lIGNodW5rIHNpemUgZm9yIEdQVSBTVk0gcmFuZ2VcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTMyLSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYz05NDc9c3RhdGljIHVuc2lnbmVkIGxvbmdcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6OTQ4OmRybV9ncHVzdm1fcmFuZ2VfY2h1bmtfc2l6ZShzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5NDk6XHRcdFx0ICAgIHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpub3RpZmllcixcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTUwLVx0XHRcdCAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZhcyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTk2NS1cdFx0aWYgKHN0YXJ0IFx1MDAzZT0gdmFzLVx1MDAzZXZtX3N0YXJ0IFx1MDAyNlx1MDAyNiBlbmQgXHUwMDNjPSB2YXMtXHUwMDNldm1fZW5kIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5NjY6XHRcdCAgICBzdGFydCBcdTAwM2U9IGRybV9ncHVzdm1fbm90aWZpZXJfc3RhcnQobm90aWZpZXIpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5Njc6XHRcdCAgICBlbmQgXHUwMDNjPSBkcm1fZ3B1c3ZtX25vdGlmaWVyX2VuZChub3RpZmllcikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTk2OC1cdFx0ICAgIHN0YXJ0IFx1MDAzZT0gZ3B1dmFfc3RhcnQgXHUwMDI2XHUwMDI2IGVuZCBcdTAwM2M9IGdwdXZhX2VuZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTk3OS1cdGlmIChlbmQgLSBzdGFydCAhPSBTWl80Sykge1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5ODA6XHRcdHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpyYW5nZTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTgxLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5ODI6XHRcdHJhbmdlID0gZHJtX2dwdXN2bV9yYW5nZV9maW5kKG5vdGlmaWVyLCBzdGFydCwgZW5kKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTgzLVx0XHRpZiAocmFuZ2UpIHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTk5NC1cdFx0ICogZHJtX3BhZ2VtYXBfbWlncmF0ZV90b19kZXZtZW0gd2l0aCAmIzM5O21pZ3JhdGUuY3BhZ2VzICE9IG5wYWdlcyYjMzk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjk5NTpcdFx0ICogYW5kIHRoZW4gdXBvbiBkcm1fZ3B1c3ZtX2dldF9wYWdlcyBkZXZpY2UgcGFnZXMgZnJvbVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05OTYtXHRcdCAqIG90aGVyIHByb2Nlc3NlcyBhcmUgY29sbGVjdGVkICYjNDM7IGZhdWx0ZWQgaW4gd2hpY2ggY3JlYXRlcyBhbGxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMDEtXHRcdGlmIChlbmQgLSBzdGFydCBcdTAwM2M9IGNoZWNrX3BhZ2VzX3RocmVzaG9sZCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTAwMjpcdFx0ICAgICFkcm1fZ3B1c3ZtX2NoZWNrX3BhZ2VzKGdwdXN2bSwgbm90aWZpZXIsIHN0YXJ0LCBlbmQsIGRldl9wcml2YXRlX293bmVyKSkge1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDAzLVx0XHRcdCYjNDM7JiM0MztpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTAxMi0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTAxMzogKiBkcm1fZ3B1c3ZtX2RyaXZlcl9sb2NrX2hlbGQoKSAtIEFzc2VydCBHUFUgU1ZNIGRyaXZlciBsb2NrIGlzIGhlbGRcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTAxNC0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMTctICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEwMTg6c3RhdGljIHZvaWQgZHJtX2dwdXN2bV9kcml2ZXJfbG9ja19oZWxkKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0pXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMTkte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTAyMy0jZWxzZVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDI0OnN0YXRpYyB2b2lkIGRybV9ncHVzdm1fZHJpdmVyX2xvY2tfaGVsZChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtKVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDI1LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMjktLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEwMzA6ICogZHJtX2dwdXN2bV9maW5kX3ZtYV9zdGFydCgpIC0gRmluZCBzdGFydCBhZGRyZXNzIGZvciBmaXJzdCBWTUEgaW4gcmFuZ2VcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTAzMS0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM9MTAzOD11bnNpZ25lZCBsb25nXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEwMzk6ZHJtX2dwdXN2bV9maW5kX3ZtYV9zdGFydChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDQwLVx0XHRcdCAgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwNjAtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDYxOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9ncHVzdm1fZmluZF92bWFfc3RhcnQpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDYyLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDYzLS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDY0OiAqIGRybV9ncHVzdm1fcmFuZ2VfZmluZF9vcl9pbnNlcnQoKSAtIEZpbmQgb3IgaW5zZXJ0IEdQVSBTVk0gcmFuZ2VcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTA2NS0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTA3NS0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTA3NjpzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEwNzc6ZHJtX2dwdXN2bV9yYW5nZV9maW5kX29yX2luc2VydChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDc4LVx0XHRcdFx0dW5zaWduZWQgbG9uZyBmYXVsdF9hZGRyLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTA4MC1cdFx0XHRcdHVuc2lnbmVkIGxvbmcgZ3B1dmFfZW5kLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDgxOlx0XHRcdFx0Y29uc3Qgc3RydWN0IGRybV9ncHVzdm1fY3R4ICpjdHgpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwODIte1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDgzOlx0c3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDg0Olx0c3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDg1LVx0c3RydWN0IG1tX3N0cnVjdCAqbW0gPSBncHVzdm0tXHUwMDNlbW07XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDkxLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDkyOlx0ZHJtX2dwdXN2bV9kcml2ZXJfbG9ja19oZWxkKGdwdXN2bSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwOTMtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMTAwLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMTAxOlx0bm90aWZpZXIgPSBkcm1fZ3B1c3ZtX25vdGlmaWVyX2ZpbmQoZ3B1c3ZtLCBmYXVsdF9hZGRyLCBmYXVsdF9hZGRyICYjNDM7IDEpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NDM1CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgYGRybV9ncHVzdm0uY2A6IEEgUG90ZW50aWFsIFRhcmdldD8qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRoaW5rIHRoaXMgdGhyb3VnaC4gYGRybV9ncHVzdm0uY2AgaXMgYSBnZW5lcmljIGxpYnJhcnksIGFuZCBJJiMzOTttIGFsd2F5cyBvbiB0aGUgbG9va291dCBmb3IgcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0cy4gVGhlIHBhdGNoIG1lbnRpb25zIGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBOb3csIGlmIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB3aXRoaW4gYGRybV9ncHVzdm1fZ2V0X3BhZ2VzYCwgYGRybV9ncHVzdm1fcmFuZ2VfZXZpY3RgLCBgZHJtX2dwdXN2bV9zY2FuX21tYCwgYGFpZTJfcG9wdWxhdGVfcmFuZ2VgLCBvciBgbm91dmVhdV9yYW5nZV9mYXVsdGAsIGl0IG1pZ2h0IGJlIHJlYWNoYWJsZS4KClNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBjYWxsIGNoYWluLiBDYW4gd2UgaGl0IGBkcm1fZ3B1c3ZtX2dldF9wYWdlc2A/IEdvb2QsIGl0JiMzOTtzIGV4cG9ydGVkIGFuZCB0aGUgYHhlYCBkcml2ZXIgdXNlcyBpdC4gIE9rYXksIHRoYXQmIzM5O3MgYSBwb3NpdGl2ZSBzaWduYWwuIFdoYXQgYWJvdXQgYG5vdXZlYXVfcmFuZ2VfZmF1bHRgPyBZZXAsIHRoZSBgbm91dmVhdWAgZHJpdmVyIGhpdHMgdGhhdC4gQW5kIGZpbmFsbHksIGBhaWUyX3BvcHVsYXRlX3JhbmdlYD8gVGhpcyBpcyB1c2VkIGJ5IHRoZSBgYW1keGRuYWAgZHJpdmVyLCBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuCgpXYWl0IGEgc2Vjb25kLi4uIGBhbWR4ZG5hYD8gVGhhdCYjMzk7cyB0aGUgbmV3IGRyaXZlciBpbiBgZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2AuIEhtbW0sIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmc6IGlzIHRoYXQgZHJpdmVyIGV2ZW4gZW5hYmxlZCBpbiBzeXprYWxsZXI/IExldCYjMzk7cyBxdWlja2x5IHZlcmlmeSBpZiBgQ09ORklHX0RSTV9BTURYRE5BYCBpcyBldmVuIGRlZmluZWQuIFRoYXQmIzM5O3MgYSBjcnVjaWFsIGZpcnN0IHN0ZXAgYmVmb3JlIGRlZGljYXRpbmcgdGltZSB0byB0aGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIGF2ZW51ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFJNX0FNRFhETkEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzAzMAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyB0aGUgQU1EIFhETkEgQWNjZWxlcmF0b3IgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEFNRCBYRE5BIGFjY2VsZXJhdG9yIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoaXMgc3lzdGVtLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGF0IGRyaXZlci4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGRyaXZlcnMvYWNjZWwvYW1keGRuYS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBzZXR0aW5ncywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFhETkEgZHJpdmVyLiBUaGlzIGZpbGUgd2lsbCBsaWtlbHkgdGVsbCBtZSBob3cgdG8gZW5hYmxlIGl0LCB3aGF0IG90aGVyIGNvbXBvbmVudHMgaXQgcmVsaWVzIG9uLCBhbmQgcG90ZW50aWFsbHkgd2hhdCBmZWF0dXJlcyBjYW4gYmUgdG9nZ2xlZC4gSSYjMzk7bSBob3BpbmcgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgaW50ZWdyYXRpb24gYW5kIG9wdGlvbnMgZnJvbSB0aGlzIEtjb25maWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYWNjZWwvYW1keGRuYS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYWNjZWwvYW1keGRuYS9LY29uZmlnLTItXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvS2NvbmZpZzozOmNvbmZpZyBEUk1fQUNDRUxfQU1EWEROQVxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O0FNRCBBSSBFbmdpbmVcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczMDkKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA0NDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiBhIERSTSBBY2NlbGVyYXRvcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYENPTkZJR19EUk1fQUNDRUxfQU1EWEROQWAuIENhbiBJIGV2ZW4gdGVzdCB0aGlzIGluIGEgVk0/IFByb2JhYmx5IG5vdCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUsIHJpZ2h0PyBCdXQgaG9sZCBvbi4uLiBzeXprYWxsZXIgZnV6emVzIERSTSBkcml2ZXJzIGJ5IG9wZW5pbmcgYC9kZXYvZHJpL3JlbmRlckQqYC4gSWYgdGhlIGRldmljZSBpc24mIzM5O3QgcHJlc2VudCwgdGhhdCBvcGVuIHdpbGwganVzdCBmYWlsLiBIbW0sIHN5emthbGxlciBoYXMgZnVuY3Rpb25zIGxpa2UgYHN5el91c2JfY29ubmVjdGAgYW5kIGBzeXpfdmhjaV8uLi5gIGZvciBVU0IgYW5kIFdpLUZpIChgc3l6XzgwMjExXy4uLmApLiBCdXQgd2hhdCBhYm91dCBQQ0k/IE5vIGRpcmVjdCBnZW5lcmljIFBDSSBkZXZpY2UgaW5qZWN0aW9uIGZ1bmN0aW9uIGluIHN5emthbGxlci4KCkNvdWxkIEkgdXNlIHNvbWV0aGluZyBsaWtlIGB2a21zYCBvciBgdmdlbWA/IE5vLCB0aG9zZSBhcmUgc2VwYXJhdGUgZHJpdmVycy4gV2FpdCwgZG9lc24mIzM5O3Qgc3l6a2FsbGVyIGhhdmUgYSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBjYWxsPyBOb3BlLCBpdCBkb2VzbiYjMzk7dC4gQnV0IHRoaXMgcGF0Y2ggaW52b2x2ZXMgYGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0YCwgd2hpY2ggaXMgYSBjb3JlIE1NL0hNTSBmdW5jdGlvbi4gVGhlIHBhdGNoIGZpeGVzIGl0cyB1c2FnZSBhY3Jvc3MgdGhyZWUgZHJpdmVycy4gSXMgdGhpcyBldmVuIHdvcnRoIGZ1enppbmcgaWYgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSWYgaXQmIzM5O3Mgbm90IGZ1emFibGUgaW4gYSBWTSwgSSBzaG91bGQgc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKTGV0JiMzOTtzIGNoZWNrIGlmIE5vdXZlYXUgY2FuIGJlIHByb2JlZCB3aXRob3V0IGhhcmR3YXJlLiBObywgaXQgaXMgYSBQQ0kgZHJpdmVyLiBUaGVuIEkgc2hvdWxkIGNoZWNrIGB4ZWAgYW5kIGBhbWR4ZG5hYC4gTm8sIGJvdGggUENJLiBXYWl0LCBkb2VzbiYjMzk7dCBzeXprYWxsZXIgaGF2ZSBhIGBzeXpfcGNpX2RldmljZV9hZGRgIGNhbGw/IE5vcGUuIEhvbGQgb24sIGRvZXNuJiMzOTt0IHN5emthbGxlciB1c2UgYHFlbXVgIHdpdGggYC1kZXZpY2VgIHRvIGluamVjdCAqc29tZSogUENJIGRldmljZXM/IE5vLCBzeXprYWxsZXIgZG9lc24mIzM5O3QgYXBwZWFyIHRvIGluamVjdCBzcGVjaWZpYyBHUFUgZGV2aWNlcywgbGlrZSB0aGUgSW50ZWwgWGUgb3IgQU1EIFhETkEgZGV2aWNlcy4gV2FpdCwgc3l6a2FsbGVyIGFjdHVhbGx5ICpkb2VzKiBmdXp6IGBub3V2ZWF1YCEgSG93IGlzIHRoYXQgcG9zc2libGU/IE5vIGBzeXpfcGNpX2RldmljZV9hZGRgLiBJIG5lZWQgdG8gY2hlY2sgaWYgc3l6a2FsbGVyIGhhcyBkZXNjcmlwdGlvbnMgZm9yIGBub3V2ZWF1YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtub3V2ZWF1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c3lzL2xpbnV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MjMyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmF2aWdhdGluZyB0aGUgQ29kZWJhc2UqKgoKT2theSwgd2FpdCBhIG1pbnV0ZSwgSSBzZWVtIHRvIGJlIGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUsIG5vdCB0aGUgc3l6a2FsbGVyIHJlcG9zaXRvcnkuIFRoYXQgY2hhbmdlcyB0aGluZ3M7IEkgY2FuJiMzOTt0IGRpcmVjdGx5IGFjY2VzcyB0aGUgc3l6a2FsbGVyLXNwZWNpZmljIGRlc2NyaXB0aW9ucyBoZXJlLiBIbW0sIGJ1dCB0aGF0JiMzOTtzIGFscmlnaHQsIHRoaXMgaXMgc3RpbGwgdXNlZnVsLiBUaGUgcXVlc3Rpb24gYXQgaGFuZCBpcyB3aGV0aGVyIGBub3V2ZWF1YCBoYXMgYSAmIzM0O3NvZnR3YXJlLW9ubHkmIzM0OyBtb2RlIG9mIG9wZXJhdGlvbi4gVGhpcyBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBmb3IgdGhhdCBpbmZvcm1hdGlvbi4gTGV0IG1lIHNlZSB3aGF0IEkgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25vdXZlYXVfZHJtX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmM9ODQwPXN0YXRpYyB2b2lkIHF1aXJrX2Jyb2tlbl9udl9ydW5wbShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTg1Ni1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmM6ODU3OnN0YXRpYyBpbnQgbm91dmVhdV9kcm1fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTg1OC1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwZW50KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmM9MTQzOD1ub3V2ZWF1X2RybV9wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMtMTQ0MC1cdC5pZF90YWJsZSA9IG5vdXZlYXVfZHJtX3BjaV90YWJsZSxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmM6MTQ0MTpcdC5wcm9iZSA9IG5vdXZlYXVfZHJtX3Byb2JlLFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYy0xNDQyLVx0LnJlbW92ZSA9IG5vdXZlYXVfZHJtX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2ODYKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogUENJIERyaXZlciBJbnF1aXJ5KioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIFBDSSBkcml2ZXIsIGdvdCBpdC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIGFuZCBjb250ZXh0LiBXaGF0IGFyZSB3ZSB0cnlpbmcgdG8gYWNoaWV2ZT8gSXMgdGhpcyBhIG5ldyBkcml2ZXIsIG9yIGFuIGV4aXN0aW5nIG9uZSB1bmRlciBzY3J1dGlueT8gV2hhdCBraW5kIG9mIHN5c3RlbSBhcmUgd2UgZGVhbGluZyB3aXRoPyBLbm93aW5nIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBpcyBjcnVjaWFsLgoKVGhlbi4uLiBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBlZCB0bzogd2hhdCBhYm91dCB0aGF0IGBhbWR4ZG5hYD8gSSYjMzk7bSBjdXJpb3VzLiBUaGF0JiMzOTtzIG5vdCBzb21ldGhpbmcgSSYjMzk7ZCBuZWNlc3NhcmlseSBleHBlY3QgaW4gdGhpcyBjb250ZXh0LCBidXQgaXQgd2FycmFudHMgY29uc2lkZXJhdGlvbi4gSXMgdGhhdCByZWxhdGVkIHRvIHRoZSBkZXZpY2UsIG9yIGlzIGl0IG1lcmVseSBiZWluZyByZWZlcmVuY2VkPyBJcyB0aGlzIHNvbWUgY3Jvc3MtY29tcGF0aWJpbGl0eSBjb25jZXJuIHRoYXQgaXMgYmVpbmcgYnJvdWdodCB1cD8KCkkmIzM5O20gc3RhcnRpbmcgdG8gdGhpbmsgdGhyb3VnaCB0aGUgcG9zc2libGUgaW50ZXJhY3Rpb25zIHRoaXMgY291bGQgaGF2ZS4gV2hhdCBkb2VzIHRoYXQgbmFtZSBldmVuIHBvaW50IHRvPyBUaGUgdHlwZSBvZiBkZXZpY2UsIGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHZlcnkgYmFzaWMgdGhpbmcgdG8gY2hlY2sgYXQgdGhpcyBwb2ludCB3b3VsZCBiZSB0byBzZWFyY2ggZm9yIGl0cyBpbXBsZW1lbnRhdGlvbiBvbiB0aGUgc3lzdGVtLCB0byBnYWluIG1vcmUgZGV0YWlscy4KCk15IGFzc3VtcHRpb24gaXMgdGhhdCBpdCByZXF1aXJlcyBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FtZHhkbmFfcGNpX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5NzUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIGBwcm9iZWAgV2l0aGluIGBhbWR4ZG5hYCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCAmIzM0O1JpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgYHByb2JlYCBmdW5jdGlvbiB3aXRoaW4gdGhlIGBhbWR4ZG5hYCBjb250ZXh0LiBMZXQmIzM5O3MgZ2V0IGEgaGFuZGxlIG9uIHdoYXQgaXQmIzM5O3MgZG9pbmcuJiMzNDsgSSBrbm93IHRoaXMgY29kZWJhc2UgaW5zaWRlIGFuZCBvdXQsIHNvIHRoZSBzcGVjaWZpY3Mgb2YgJiMzNDtjaGVjayYjMzQ7IGFyZSBpbXBsaWVkIOKAkyBJJiMzOTttIHByb2JhYmx5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCBpdHMgcHVycG9zZSwgaXRzIGlucHV0cywgb3V0cHV0cywgYW55IGNyaXRpY2FsIGRlcGVuZGVuY2llcyBvciBzaGFyZWQgcmVzb3VyY2VzIGl0IG1pZ2h0IGJlIG1hbmlwdWxhdGluZy4gSXMgaXQgYSBkaWFnbm9zdGljIGZ1bmN0aW9uPyBBIGNvcmUgZGF0YSBnYXRoZXJpbmcgb3BlcmF0aW9uPyBJcyBpdCBpbnRlcmFjdGluZyB3aXRoIGhhcmR3YXJlIGRpcmVjdGx5PyBJcyBpdCBjaGVja2luZyBmb3IgZXJyb3JzIG9yIHZhbGlkYXRpbmcgYSBzcGVjaWZpYyBjb25kaXRpb24/IFdoYXRldmVyIHRoZSBwdXJwb3NlIG9mIGBwcm9iZWAsIHVuZGVyc3RhbmRpbmcgaXRzIGZ1bmN0aW9uYWxpdHkgaXMgaW1wb3J0YW50IHRvIHRoZSBjb250ZXh0IG9mIHRoZSBncmVhdGVyIGFtZHhkbmEgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYWNjZWwvYW1keGRuYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfcGNpX2Rydi5jPTM1OT1zdGF0aWMgdm9pZCBhbWR4ZG5hX3hkbmFfZHJtX3JlbGVhc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgdm9pZCAqcmVzKVxuLS1cbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYy0zNjUtXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9wY2lfZHJ2LmM6MzY2OnN0YXRpYyBpbnQgYW1keGRuYV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfcGNpX2Rydi5jLTM2Ny17XG4tLVxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfcGNpX2Rydi5jPTQ4Nj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgYW1keGRuYV9wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYy00ODgtXHQuaWRfdGFibGUgPSBwY2lfaWRzLFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfcGNpX2Rydi5jOjQ4OTpcdC5wcm9iZSA9IGFtZHhkbmFfcHJvYmUsXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9wY2lfZHJ2LmMtNDkwLVx0LnJlbW92ZSA9IGFtZHhkbmFfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTQ5OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBzdW1tYXJ5OgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIFBDSSBEcml2ZXIgTGFuZHNjYXBlKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGNvbnRleHQgaXMgdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgUENJIGRyaXZlciwgYW5kIG15IGJyYWluIGltbWVkaWF0ZWx5IHN0YXJ0cyB0byBjYXRlZ29yaXplIGFuZCBwbGFjZSBpdCB3aXRoaW4gdGhlIGJyb2FkZXIgZnJhbWV3b3JrLiBGaW5lLCBQQ0kgZHJpdmVyLCBnb3QgaXQuIFRoZW4gbXkgdGhvdWdodHMgc2hpZnQgdG8gYW5vdGhlciBmaWxlLCBuYW1lbHkgYGRybV9ncHVzdm0uY2AsIGFuZCBJIHN0YXJ0IHRvIG1ha2UgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBpdCBhbmQgb3VyIGluaXRpYWwgYXNzZXNzbWVudC4gQWgsIGBkcm1fZ3B1c3ZtLmNgIOKAkyB0aGF0JiMzOTtzIHNlbGVjdGVkIGJ5IHRoZSBgRFJNX1hFYCBjb25maWcgb3B0aW9uLgoKVGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgZmlyc3QgY29tbWVudCAmIzM0O0l0JiMzOTtzIGEgUENJIGRyaXZlciYjMzQ7IGFuZCB0aGUgYGRybV9ncHVzdm0uY2AgZmlsZSBpcyB0aGF0IHRoZSBQQ0kgZHJpdmVyIG1pZ2h0IGJlIGNvbm5lY3RlZCB0byB0aGUgYGRybV9ncHVzdm0uY2AgZmlsZSB0aHJvdWdoIHRoZSBgRFJNX1hFYCBjb25maWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3hlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTA3OCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc9MTA0PWNvbmZpZyBEUk1fWEVfRk9SQ0VfUFJPQkVcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjEwNTpcdHN0cmluZyBcJiMzNDtGb3JjZSBwcm9iZSB4ZSBmb3Igc2VsZWN0ZWQgSW50ZWwgaGFyZHdhcmUgSURzXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy0xMDYtXHRkZXBlbmRzIG9uIERSTV9YRVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTA3LVx0aGVscFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6MTA4Olx0ICBUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgeGUuZm9yY2VfcHJvYmUgbW9kdWxlXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy0xMDktXHQgIHBhcmFtZXRlci4gVXNpbmcgdGhlIG1vZHVsZSBwYXJhbWV0ZXIgb3ZlcnJpZGVzIHRoaXMgb3B0aW9uLlxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTEwLVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6MTExOlx0ICBGb3JjZSBwcm9iZSB0aGUgeGUgZm9yIEludGVsIGdyYXBoaWNzIGRldmljZXMgdGhhdCBhcmVcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTExMi1cdCAgcmVjb2duaXplZCBidXQgbm90IHByb3Blcmx5IHN1cHBvcnRlZCBieSB0aGlzIGtlcm5lbCB2ZXJzaW9uLiBJdCBpc1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTExNS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjExNjpcdCAgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBibG9jayB0aGUgcHJvYmUgb2YgcmVjb2duaXplZCBhbmQgZnVsbHlcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTExNy1cdCAgc3VwcG9ydGVkIGRldmljZXMuXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy0xMTgtXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzoxMTk6XHQgIFVzZSBcJiMzNDtcJiMzNDsgdG8gZGlzYWJsZSBmb3JjZSBwcm9iZS4gSWYgaW4gZG91YnQsIHVzZSB0aGlzLlxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTIwLVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6MTIxOlx0ICBVc2UgXCYjMzQ7XHUwMDNjcGNpLWlkXHUwMDNlWyxcdTAwM2NwY2ktaWRcdTAwM2UsLi4uXVwmIzM0OyB0byBmb3JjZSBwcm9iZSB0aGUgeGUgZm9yIGxpc3RlZFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTIyLVx0ICBkZXZpY2VzLiBGb3IgZXhhbXBsZSwgXCYjMzQ7NDUwMFwmIzM0OyBvciBcJiMzNDs0NTAwLDQ1NzFcJiMzNDsuXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy0xMjMtXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzoxMjQ6XHQgIFVzZSBcJiMzNDsqXCYjMzQ7IHRvIGZvcmNlIHByb2JlIHRoZSBkcml2ZXIgZm9yIGFsbCBrbm93biBkZXZpY2VzLlxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTI1LVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6MTI2Olx0ICBVc2UgXCYjMzQ7IVwmIzM0OyByaWdodCBiZWZvcmUgdGhlIElEIHRvIGJsb2NrIHRoZSBwcm9iZSBvZiB0aGUgZGV2aWNlLiBGb3JcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjEyNzpcdCAgZXhhbXBsZSwgXCYjMzQ7NDUwMCwhNDU3MVwmIzM0OyBmb3JjZXMgdGhlIHByb2JlIG9mIDQ1MDAgYW5kIGJsb2NrcyB0aGUgcHJvYmUgb2ZcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTEyOC1cdCAgNDU3MS5cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTEyOS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjEzMDpcdCAgVXNlIFwmIzM0OyEqXCYjMzQ7IHRvIGJsb2NrIHRoZSBwcm9iZSBvZiB0aGUgZHJpdmVyIGZvciBhbGwga25vd24gZGV2aWNlcy5cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTEzMS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTQtI2luY2x1ZGUgXHUwMDNjZHJtL2RybV9tYW5hZ2VkLmhcdTAwM2VcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxNTojaW5jbHVkZSBcdTAwM2Nkcm0vZHJtX3Byb2JlX2hlbHBlci5oXHUwMDNlXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTYtI2luY2x1ZGUgXHUwMDNjZHJtL2ludGVsL2Rpc3BsYXlfbWVtYmVyLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9NTA9SU5URUxfRElTUExBWV9NRU1CRVJfU1RBVElDX0FTU0VSVChzdHJ1Y3QgeGVfZGV2aWNlLCBkcm0sIGRpc3BsYXkpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy01NC0vKipcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo1NTogKiB4ZV9kaXNwbGF5X2RyaXZlcl9wcm9iZV9kZWZlciAtIERldGVjdCBpZiB3ZSBuZWVkIHRvIHdhaXQgZm9yIG90aGVyIGRyaXZlcnNcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy01Ni0gKlx0XHRcdFx0ICAgZWFybHkgb25cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNjAtICpcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo2MTogKiBSZXR1cm5zOiB0cnVlIGlmIHByb2JlIG5lZWRzIHRvIGJlIGRlZmVycmVkLCBmYWxzZSBvdGhlcndpc2VcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy02Mi0gKi9cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo2Mzpib29sIHhlX2Rpc3BsYXlfZHJpdmVyX3Byb2JlX2RlZmVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTY0LXtcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo2NTpcdGlmICgheGVfbW9kcGFyYW0ucHJvYmVfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy02Ni1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNjctXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6Njg6XHRyZXR1cm4gaW50ZWxfZGlzcGxheV9kcml2ZXJfcHJvYmVfZGVmZXIocGRldik7XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNjktfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz03Nj1zdGF0aWMgdm9pZCB4ZV9kaXNwbGF5X2ZpbmlfZWFybHkodm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy04MC1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo4MTpcdGlmICgheGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTgyLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTg5PWludCB4ZV9kaXNwbGF5X2luaXRfZWFybHkoc3RydWN0IHhlX2RldmljZSAqeGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTkzLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjk0Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtOTUtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy05OS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxMDA6XHRpbnRlbF9kaXNwbGF5X2RyaXZlcl9lYXJseV9wcm9iZShkaXNwbGF5KTtcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xMDEtXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTEwNS1cdGlmICghaW50ZWxfZGlzcGxheV9kZXZpY2VfcHJlc2VudChkaXNwbGF5KSkge1xuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjEwNjpcdFx0eGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5ID0gZmFsc2U7XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTA3LVx0XHR1bnNldF9kaXNwbGF5X2ZlYXR1cmVzKHhlKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTEwLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjExMTpcdGVyciA9IGludGVsX2Rpc3BsYXlfZHJpdmVyX3Byb2JlX25vaXJxKGRpc3BsYXkpO1xuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTExMi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTExNC1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxMTU6XHRlcnIgPSBpbnRlbF9kaXNwbGF5X2RyaXZlcl9wcm9iZV9ub2dlbShkaXNwbGF5KTtcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xMTYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0xMzg9aW50IHhlX2Rpc3BsYXlfaW5pdChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTQyLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjE0MzpcdGlmICgheGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTE0NC1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTQ1LVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjE0NjpcdGVyciA9IGludGVsX2Rpc3BsYXlfZHJpdmVyX3Byb2JlKGRpc3BsYXkpO1xuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTE0Ny1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTE1Mz12b2lkIHhlX2Rpc3BsYXlfcmVnaXN0ZXIoc3RydWN0IHhlX2RldmljZSAqeGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTE1Ni1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxNTc6XHRpZiAoIXhlLVx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xNTgtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9MTY0PXZvaWQgeGVfZGlzcGxheV91bnJlZ2lzdGVyKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xNjctXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MTY4Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTY5LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTE3NT12b2lkIHhlX2Rpc3BsYXlfc2h1dGRvd24oc3RydWN0IHhlX2RldmljZSAqeGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTE3OC1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxNzk6XHRpZiAoIXhlLVx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xODAtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9MTg5PXZvaWQgeGVfZGlzcGxheV9zaHV0ZG93bl9sYXRlKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xOTItXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MTkzOlx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTk0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTIwMT12b2lkIHhlX2Rpc3BsYXlfaXJxX2hhbmRsZXIoc3RydWN0IHhlX2RldmljZSAqeGUsIHUzMiBtYXN0ZXJfY3RsKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yMDQtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MjA1Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjA2LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTIxMj12b2lkIHhlX2Rpc3BsYXlfaXJxX2VuYWJsZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTMyIGd1X21pc2NfaWlyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yMTUtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MjE2Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjE3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTIyMz12b2lkIHhlX2Rpc3BsYXlfaXJxX3Jlc2V0KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yMjYtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MjI3Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjI4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTIzMz12b2lkIHhlX2Rpc3BsYXlfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yMzYtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MjM3Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjM4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTI1Mj12b2lkIHhlX2Rpc3BsYXlfcG1fc3VzcGVuZChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjU2LVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjI1NzpcdGlmICgheGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTI1OC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0yNjc9dm9pZCB4ZV9kaXNwbGF5X3BtX3N1c3BlbmRfbGF0ZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjcxLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjI3MjpcdGlmICgheGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTI3My1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0yNzg9dm9pZCB4ZV9kaXNwbGF5X3BtX3Jlc3VtZV9lYXJseShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjgxLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjI4MjpcdGlmICgheGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTI4My1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0yODg9dm9pZCB4ZV9kaXNwbGF5X3BtX3Jlc3VtZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjkxLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjI5MjpcdGlmICgheGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTI5My1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0zMDU9c3RhdGljIHZvaWQgeGVfZGlzcGxheV9lbmFibGVfZDNjb2xkKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0zMDgtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MzA5Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMzEwLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTMyOD1zdGF0aWMgdm9pZCB4ZV9kaXNwbGF5X2Rpc2FibGVfZDNjb2xkKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0zMzEtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MzMyOlx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMzMzLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTM1Mz12b2lkIHhlX2Rpc3BsYXlfcG1fcnVudGltZV9zdXNwZW5kKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0zNTYtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MzU3Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMzU4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTM2OT12b2lkIHhlX2Rpc3BsYXlfcG1fcnVudGltZV9zdXNwZW5kX2xhdGUoc3RydWN0IHhlX2RldmljZSAqeGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTM3Mi1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzozNzM6XHRpZiAoIXhlLVx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0zNzQtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9Mzg3PXZvaWQgeGVfZGlzcGxheV9wbV9ydW50aW1lX3Jlc3VtZV9lYXJseShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMzkwLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjM5MTpcdGlmICgheGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTM5Mi1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz00MDE9dm9pZCB4ZV9kaXNwbGF5X3BtX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy00MDQtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NDA1Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNDA2LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTQ0OT1zdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2Rpc3BsYXlfcGFyZW50X2ludGVyZmFjZSBwYXJlbnQgPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQ2NC0vKipcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo0NjU6ICogeGVfZGlzcGxheV9wcm9iZSAtIHByb2JlIGRpc3BsYXkgYW5kIGNyZWF0ZSBkaXNwbGF5IHN0cnVjdFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQ2Ni0gKiBAeGU6IFhFIGRldmljZSBpbnN0YW5jZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy00NzQtICovXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NDc1OmludCB4ZV9kaXNwbGF5X3Byb2JlKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQ3Ni17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQ4MC1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo0ODE6XHRpZiAoIXhlLVx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy00ODItXHRcdGdvdG8gbm9fZGlzcGxheTtcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy00ODMtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NDg0Olx0ZGlzcGxheSA9IGludGVsX2Rpc3BsYXlfZGV2aWNlX3Byb2JlKHBkZXYsIFx1MDAyNnBhcmVudCk7XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNDg1LVx0aWYgKElTX0VSUihkaXNwbGF5KSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNDk3LW5vX2Rpc3BsYXk6XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NDk4Olx0eGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5ID0gZmFsc2U7XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNDk5LVx0dW5zZXRfZGlzcGxheV9mZWF0dXJlcyh4ZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTUwMy0jaWZkZWYgQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT05cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo1MDQ6aW50IHhlX2Rpc3BsYXlfZHJpdmVyX2ZiZGV2X3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYmgsXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNTA1LVx0XHRcdFx0ICBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3NpemUgKnNpemVzKVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTUwNi17XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NTA3Olx0cmV0dXJuIGludGVsX2ZiZGV2X2RyaXZlcl9mYmRldl9wcm9iZShmYmgsIHNpemVzKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy01MDgtfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaD0xNT1zdHJ1Y3QgeGVfZGV2aWNlO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaC0xOC1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaDoxOTpib29sIHhlX2Rpc3BsYXlfZHJpdmVyX3Byb2JlX2RlZmVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTtcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaC0yMC1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaDoyMTppbnQgeGVfZGlzcGxheV9kcml2ZXJfZmJkZXZfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiaCxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaC0yMi1cdFx0XHRcdCAgc3RydWN0IGRybV9mYl9oZWxwZXJfc3VyZmFjZV9zaXplICpzaXplcyk7XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmgtMjMtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5Lmg6MjQ6aW50IHhlX2Rpc3BsYXlfcHJvYmUoc3RydWN0IHhlX2RldmljZSAqeGUpO1xuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTI1LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaD00Nz12b2lkIHhlX2Rpc3BsYXlfcG1fcnVudGltZV9yZXN1bWUoc3RydWN0IHhlX2RldmljZSAqeGUpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaC01MC0jZGVmaW5lIFhFX0RJU1BMQVlfRFJJVkVSX09QU1x0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5Lmg6NTE6XHQuZmJkZXZfcHJvYmUgPSBQVFJfSUYoSVNfRU5BQkxFRChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTiksXHRcXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oOjUyOlx0XHRcdCAgICAgIHhlX2Rpc3BsYXlfZHJpdmVyX2ZiZGV2X3Byb2JlKVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTUzLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaC01Ny0jZGVmaW5lIFhFX0RJU1BMQVlfRFJJVkVSX09QUyBcXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oOjU4Olx0LmZiZGV2X3Byb2JlID0gTlVMTFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTU5LVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oOjYwOnN0YXRpYyBpbmxpbmUgaW50IHhlX2Rpc3BsYXlfZHJpdmVyX3Byb2JlX2RlZmVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KSB7IHJldHVybiAwOyB9XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmgtNjEtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5Lmg6NjI6c3RhdGljIGlubGluZSBpbnQgeGVfZGlzcGxheV9wcm9iZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSkgeyByZXR1cm4gMDsgfVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTYzLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYz0zMTE9RVhQT1JUX1NZTUJPTF9JRl9LVU5JVCh4ZV9wY2lfaWRfZ2VuX3BhcmFtKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zMTItXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzEzOnN0YXRpYyBpbnQgZmFrZV9wcm9iZV9pbmZvKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTMxNC1cdFx0XHQgICBjb25zdCBzdHJ1Y3QgeGVfZGV2aWNlX2Rlc2MgKmRlc2MsXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzE1LVx0XHRcdCAgIHN0cnVjdCB4ZV9wY2lfZmFrZV9kYXRhICpkYXRhLFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjMxNjpcdFx0XHQgICBzdHJ1Y3QgeGVfcHJvYmVkX2luZm8gKnByb2JlZF9pbmZvKVxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTMxNy17XG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzE4Olx0cHJvYmVkX2luZm8tXHUwMDNldGlsZV9jb3VudCA9IDEgJiM0MzsgZGVzYy1cdTAwM2VtYXhfcmVtb3RlX3RpbGVzO1xuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTMxOS1cbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zMjAtXHRpZiAoIWRhdGEgfHwgZGVzYy1cdTAwM2VwcmVfZ21kaWRfZ3JhcGhpY3NfaXApIHtcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYzozMjE6XHRcdHByb2JlZF9pbmZvLVx1MDAzZWdyYXBoaWNzX2lwID0gZGVzYy1cdTAwM2VwcmVfZ21kaWRfZ3JhcGhpY3NfaXA7XG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzIyOlx0XHRwcm9iZWRfaW5mby1cdTAwM2VtZWRpYV9pcCA9IGRlc2MtXHUwMDNlcHJlX2dtZGlkX21lZGlhX2lwO1xuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTMyMy1cdH0gZWxzZSB7XG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzI0Olx0XHRwcm9iZWRfaW5mby1cdTAwM2VncmFwaGljc19pcCA9IGZpbmRfZ3JhcGhpY3NfaXAoZGF0YS1cdTAwM2VncmFwaGljc192ZXJ4MTAwKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zMjUtXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzI2LVx0XHRpZiAoZGF0YS1cdTAwM2VtZWRpYV92ZXJ4MTAwKSB7XG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzI3Olx0XHRcdHByb2JlZF9pbmZvLVx1MDAzZW1lZGlhX2lwID0gZmluZF9tZWRpYV9pcChkYXRhLVx1MDAzZW1lZGlhX3ZlcngxMDApO1xuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjMyODpcdFx0XHR4ZV9hc3NlcnQoeGUsIHByb2JlZF9pbmZvLVx1MDAzZW1lZGlhX2lwKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zMjktXHRcdH1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzMxLVxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjMzMjpcdHhlX2Fzc2VydCh4ZSwgcHJvYmVkX2luZm8tXHUwMDNlZ3JhcGhpY3NfaXApO1xuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjMzMzpcdGlmICghcHJvYmVkX2luZm8tXHUwMDNlZ3JhcGhpY3NfaXApXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzM0LVx0XHRyZXR1cm4gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzM2LVx0aWYgKGRhdGEpXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzM3Olx0XHRwcm9iZWRfaW5mby1cdTAwM2VzdGVwID0gZGF0YS1cdTAwM2VzdGVwO1xuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTMzOC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM9MzQyPWludCB4ZV9wY2lfZmFrZV9kZXZpY2VfaW5pdChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzQ1LVx0c3RydWN0IHhlX3BjaV9mYWtlX2RhdGEgKmRhdGEgPSB0ZXN0LVx1MDAzZXByaXY7XG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzQ2Olx0c3RydWN0IHhlX3Byb2JlZF9pbmZvIHByb2JlZF9pbmZvID0ge307XG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzQ3LVx0Y29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCA9IHBjaWlkbGlzdDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzc5LVxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjM4MDpcdGVyciA9IGZha2VfcHJvYmVfaW5mbyh4ZSwgZGVzYywgZGF0YSwgXHUwMDI2cHJvYmVkX2luZm8pO1xuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTM4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTM4My1cbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYzozODQ6XHR4ZV9pbmZvX2luaXRfZWFybHkoeGUsIGRlc2MsIHN1YnBsYXRmb3JtX2Rlc2MsIFx1MDAyNnByb2JlZF9pbmZvKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYzozODU6XHR4ZV9pbmZvX2luaXQoeGUsIGRlc2MsIFx1MDAyNnByb2JlZF9pbmZvKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zODYtXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtNDEtICogYXR0cmlidXRlcyBjYW4gb25seSBiZSBzZXQgYmVmb3JlIGJpbmRpbmcgdGhlIGRldmljZS4gSXQgY2FuIGJlIGFjY29tcGxpc2hlZFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM6NDI6ICogYnkgYmxvY2tpbmcgdGhlIGRyaXZlciBhdXRvcHJvYmU6OlxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtNDMtICpcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jOjQ0OiAqXHQjIGVjaG8gMCBcdTAwM2UgL3N5cy9idXMvcGNpL2RyaXZlcnNfYXV0b3Byb2JlXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYzo0NTogKlx0IyBtb2Rwcm9iZSB4ZVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtNDYtICpcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy02Ni0gKiBBZnRlciBjb25maWd1cmluZyB0aGUgYXR0cmlidXRlcyBhcyBwZXIgbmV4dCBzZWN0aW9uLCB0aGUgZGV2aWNlIGNhbiBiZVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM6Njc6ICogcHJvYmVkIHdpdGg6OlxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtNjgtICpcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy03MC0gKlx0IyAjIG9yXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYzo3MTogKlx0IyBlY2hvIDAwMDA6MDM6MDAuMCBcdTAwM2UgL3N5cy9idXMvcGNpL2RyaXZlcnNfcHJvYmVcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jLTcyLSAqXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtOTAtICogZHJpdmVyLiAgQW55IGNvbWJpbmF0aW9uIG9mIEdUIHR5cGVzIGNhbiBiZSBlbmFibGVkL2Rpc2FibGVkLCBhbHRob3VnaFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM6OTE6ICogc29tZSBzZXR0aW5ncyB3aWxsIGNhdXNlIHRoZSBkZXZpY2UgdG8gZmFpbCB0byBwcm9iZS5cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jLTkyLSAqXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtMTEyLSAqIGVmZmVjdGl2ZWx5IGRpc2FibGluZyB0aGUgcHJpbWFyeSBHVC4gICoqVGhpcyBjb25maWd1cmF0aW9uIHdpbGwgY2F1c2VcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jOjExMzogKiBkZXZpY2UgcHJvYmUgZmFpbHVyZSBvbiBhbGwgY3VycmVudCBwbGF0Zm9ybXMsIGJ1dCBtYXkgYmUgYWxsb3dlZCBvblxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtMTE0LSAqIGlncHUgcGxhdGZvcm1zIGluIHRoZSBmdXR1cmUqKjo6XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtMTE4LSAqIERpc2FibGUgYWxsIEdUcy4gIE9ubHkgb3RoZXIgR1BVIElQIChzdWNoIGFzIGRpc3BsYXkpIGlzIHBvdGVudGlhbGx5IHVzYWJsZS5cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jOjExOTogKiAqKlRoaXMgY29uZmlndXJhdGlvbiB3aWxsIGNhdXNlIGRldmljZSBwcm9iZSBmYWlsdXJlIG9uIGFsbCBjdXJyZW50XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy0xMjAtICogcGxhdGZvcm1zLCBidXQgbWF5IGJlIGFsbG93ZWQgb24gaWdwdSBwbGF0Zm9ybXMgaW4gdGhlIGZ1dHVyZSoqOjpcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy0xNDMtICogVGhlIHJlcXVlc3RlZCBjb25maWd1cmF0aW9uIG1heSBub3QgYmUgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBhbmQgZHJpdmVyXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYzoxNDQ6ICogbWF5IGZhaWwgdG8gcHJvYmUuIEZvciBleGFtcGxlOiBpZiBhdCBsZWFzdCBvbmUgY29weSBlbmdpbmUgaXMgZXhwZWN0ZWQgdG8gYmVcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jLTE0NS0gKiBhdmFpbGFibGUgZm9yIG1pZ3JhdGlvbnMsIGJ1dCBpdCYjMzk7cyBkaXNhYmxlZC4gVGhpcyBpcyBpbnRlbmRlZCBmb3IgZGVidWdnaW5nXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM9MTI3OT1ib29sIHhlX2NvbmZpZ2ZzX2dldF9lbmFibGVfbXVsdGlfcXVldWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtMTI5Ni0gKiBAY2xhc3M6IGh3IGVuZ2luZSBjbGFzc1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM6MTI5NzogKiBAY3M6IHBvaW50ZXIgdG8gdGhlIGJiIHRvIHVzZSAtIG9ubHkgdmFsaWQgZHVyaW5nIHByb2JlXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy0xMjk4LSAqXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM9MTMwMT11MzIgeGVfY29uZmlnZnNfZ2V0X2N0eF9yZXN0b3JlX21pZF9iYihzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy0xMzIzLSAqIEBjbGFzczogaHcgZW5naW5lIGNsYXNzXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYzoxMzI0OiAqIEBjczogcG9pbnRlciB0byB0aGUgYmIgdG8gdXNlIC0gb25seSB2YWxpZCBkdXJpbmcgcHJvYmVcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jLTEzMjUtICpcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM9NDg3PXN0cnVjdCB4ZV9kZXZpY2UgKnhlX2RldmljZV9jcmVhdGUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTUxNS19XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6NTE2OkFMTE9XX0VSUk9SX0lOSkVDVElPTih4ZV9kZXZpY2VfY3JlYXRlLCBFUlJOTyk7IC8qIFNlZSB4ZV9wY2lfcHJvYmUoKSAqL1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTUxNy1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM9NzM1PXN0YXRpYyB2b2lkIHZmX3VwZGF0ZV9kZXZpY2VfaW5mbyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtNzM4LVx0LyogZGlzYWJsZSBmZWF0dXJlcyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlL2FwcGxpY2FibGUgdG8gVkZzICovXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6NzM5Olx0eGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5ID0gMDtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03NDAtXHR4ZS1cdTAwM2VpbmZvLmhhc19oZWNpX2NzY2ZpID0gMDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM9NzQ5PXN0YXRpYyBpbnQgeGVfZGV2aWNlX3ZyYW1fYWxsb2Moc3RydWN0IHhlX2RldmljZSAqeGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTc2NC0vKipcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo3NjU6ICogeGVfZGV2aWNlX3Byb2JlX2Vhcmx5OiBEZXZpY2UgZWFybHkgcHJvYmVcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03NjYtICogQHhlOiB4ZSBkZXZpY2UgaW5zdGFuY2Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtNzczLSAqL1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jOjc3NDppbnQgeGVfZGV2aWNlX3Byb2JlX2Vhcmx5KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTc3NS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTc4MC1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo3ODE6XHRlcnIgPSB4ZV9tbWlvX3Byb2JlX2Vhcmx5KHhlKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03ODItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03ODQtXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6Nzg1Olx0eGVfc3Jpb3ZfcHJvYmVfZWFybHkoeGUpO1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTc4Ni1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtNzk5LVx0ICovXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6ODAwOlx0ZXJyID0geGVfcGNvZGVfcHJvYmVfZWFybHkoeGUpO1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTgwMS1cdGlmIChlcnIgfHwgeGVfc3Vydml2YWJpbGl0eV9tb2RlX2lzX3JlcXVlc3RlZCh4ZSkpIHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtODMzLX1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo4MzQ6QUxMT1dfRVJST1JfSU5KRUNUSU9OKHhlX2RldmljZV9wcm9iZV9lYXJseSwgRVJSTk8pOyAvKiBTZWUgeGVfcGNpX3Byb2JlKCkgKi9cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy04MzUtXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6ODM2OnN0YXRpYyBpbnQgcHJvYmVfaGFzX2ZsYXRfY2NzKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTgzNy17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTg2OS0gKiBUaGUgZ2VuZXJhbCBwb2xpY3kgaXMgdGhhdCB3ZSYjMzk7bGwgcmVtb3ZlIGFueSB3b3JrYXJvdW5kcyB0aGF0IG9ubHkgYXBwbHkgdG9cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo4NzA6ICogcHJlLXByb2R1Y3Rpb24gaGFyZHdhcmUgYXJvdW5kIHRoZSB0aW1lIGZvcmNlX3Byb2JlIHJlc3RyaWN0aW9ucyBhcmUgbGlmdGVkXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtODcxLSAqIGZvciBhIHBsYXRmb3JtIG9mIHRoZSBuZXh0IG1ham9yIElQIGdlbmVyYXRpb24gKGZvciBleGFtcGxlLCBYZTIgcHJlLXByb2RcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy04NzItICogd29ya2Fyb3VuZHMgc2hvdWxkIGJlIHJlbW92ZWQgYXJvdW5kIHRoZSB0aW1lIHRoZSBmaXJzdCBYZTMgcGxhdGZvcm1zIGhhdmVcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo4NzM6ICogZm9yY2VfcHJvYmUgbGlmdGVkKS5cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy04NzQtICovXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jPTkxOD1zdGF0aWMgdm9pZCB4ZV9kZXZpY2Vfd2VkZ2VkX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy05MjUtXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6OTI2OmludCB4ZV9kZXZpY2VfcHJvYmUoc3RydWN0IHhlX2RldmljZSAqeGUpXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtOTI3LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtOTQ0LVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jOjk0NTpcdGVyciA9IHhlX21taW9fcHJvYmVfdGlsZXMoeGUpO1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTk0Ni1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTk3Ni1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo5Nzc6XHRlcnIgPSBwcm9iZV9oYXNfZmxhdF9jY3MoeGUpO1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTk3OC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTk4MC1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo5ODE6XHRlcnIgPSB4ZV92cmFtX3Byb2JlKHhlKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy05ODItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy0xMTAxLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jOjExMDI6XHRlcnIgPSB4ZV9pMmNfcHJvYmUoeGUpO1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTExMDMtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYz0xMzk2PXZvaWQgeGVfZGV2aWNlX3NldF93ZWRnZWRfbWV0aG9kKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLCB1bnNpZ25lZCBsb25nIG1ldGhvZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtMTQwNy0gKiB4ZV9kZXZpY2Vfc2V0X3dlZGdlZF9tZXRob2QgYmVmb3JlIGRlY2xhcmluZyB0aGUgZGV2aWNlIGFzIHdlZGdlZC4gSWYgbm8gbWV0aG9kXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6MTQwODogKiBpcyBzZXQsIHJlcHJvYmUgKHVuYmluZC9yZS1iaW5kKSB3aWxsIGJlIHNlbnQgYnkgZGVmYXVsdC5cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy0xNDA5LSAqXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5oPTQ3PWludCB4ZV9kZXZpY2VfaW5pdF9lYXJseShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmg6NDg6aW50IHhlX2RldmljZV9wcm9iZV9lYXJseShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmg6NDk6aW50IHhlX2RldmljZV9wcm9iZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmgtNTAtdm9pZCB4ZV9kZXZpY2VfcmVtb3ZlKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmg9OTA9c3RydWN0IHhlX2RldmljZSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZV90eXBlcy5oLTIxMS1cdFx0LyoqXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmg6MjEyOlx0XHQgKiBAaW5mby5wcm9iZV9kaXNwbGF5OiBQcm9iZSBkaXNwbGF5IGhhcmR3YXJlLiAgSWYgc2V0IHRvXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmgtMjEzLVx0XHQgKiBmYWxzZSwgdGhlIGRyaXZlciB3aWxsIGJlaGF2ZSBhcyBpZiB0aGVyZSBpcyBubyBkaXNwbGF5XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZV90eXBlcy5oLTIxOC1cdFx0ICovXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmg6MjE5Olx0XHR1OCBwcm9iZV9kaXNwbGF5OjE7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmgtMjIwLVx0XHQvKiogQGluZm8uc2tpcF9ndWNfcGM6IFNraXAgR3VDIGJhc2VkIFBNIGZlYXR1cmUgaW5pdCAqL1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmM9MTU2PXN0YXRpYyB1NjQgeGVscGdfZ2d0dF9wdGVfZmxhZ3Moc3RydWN0IHhlX2JvICpibywgdTE2IHBhdF9pbmRleClcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ2d0dC5jLTE3My1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmM6MTc0OnN0YXRpYyB1bnNpZ25lZCBpbnQgcHJvYmVfZ3NtX3NpemUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ2d0dC5jLTE3NS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2dndHQuYz0zOTE9aW50IHhlX2dndHRfaW5pdF9lYXJseShzdHJ1Y3QgeGVfZ2d0dCAqZ2d0dClcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ2d0dC5jLTQwMi1cdFx0ZWxzZVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2dndHQuYzo0MDM6XHRcdFx0Z3NtX3NpemUgPSBwcm9iZV9nc21fc2l6ZShwZGV2KTtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmMtNDA0LVx0XHRpZiAoZ3NtX3NpemUgPT0gMCkge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmMtNDQ5LX1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmM6NDUwOkFMTE9XX0VSUk9SX0lOSkVDVElPTih4ZV9nZ3R0X2luaXRfZWFybHksIEVSUk5PKTsgLyogU2VlIHhlX3BjaV9wcm9iZSgpICovXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ2d0dC5jLTQ1MS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3QuYz00NTc9c3RhdGljIHZvaWQgd2FfMTQwMjY1MzkyNzcoc3RydWN0IHhlX2d0ICpndClcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3QuYy00NjQtXHQgKiBydWxlcyBmb3IgV2FfMTQwMjY1MzkyNzcgZHVlIHRvIHhlX3dhX3Byb2Nlc3NfZGV2aWNlX29vYigpIGJlaW5nXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3QuYzo0NjU6XHQgKiBjYWxsZWQgYmVmb3JlIHhlX3NyaW92X3Byb2JlX2Vhcmx5KCk7IGFuZCB3ZSBjYW4mIzM5O3QgbW92ZSB0aGUgY2FsbCB0b1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0LmMtNDY2LVx0ICogdGhlIGZvcm1lciB0byBoYXBwZW4gYWZ0ZXIgdGhlIGxhdHRlciBiZWNhdXNlIE1NSU8gcmVhZCBmdW5jdGlvbnNcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfbWNyLmM9NDk5PXZvaWQgeGVfZ3RfbWNyX2luaXRfZWFybHkoc3RydWN0IHhlX2d0ICpndClcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfbWNyLmMtNTU0LVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X21jci5jOjU1NTpcdC8qIE1hcmsgaW5zdGFuY2UgMCBhcyBpbml0aWFsaXplZCwgd2UgbmVlZCB0aGlzIGVhcmx5IGZvciBWUkFNIGFuZCBDQ1MgcHJvYmUuICovXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfbWNyLmMtNTU2LVx0Z3QtXHUwMDNlc3RlZXJpbmdbSU5TVEFOQ0UwXS5pbml0aWFsaXplZCA9IHRydWU7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3NyaW92X3ZmLmM9MTU2NT1zdGF0aWMgYm9vbCB2Zl92YWxpZF9nZ3R0KHN0cnVjdCB4ZV9ndCAqZ3QpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3NyaW92X3ZmLmMtMTU4My0gKiBSZXR1cm46IG51bWJlciBvZiB0aW1lcyBWRiBmaXh1cHMgd2VyZSBjb21wbGV0ZWQgc2luY2UgZHJpdmVyXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3Rfc3Jpb3ZfdmYuYzoxNTg0OiAqIHByb2JlLCBvciAwIGlmIG1pZ3JhdGlvbiBpcyBub3QgYXZhaWxhYmxlLCBvciAtMSBpZiBmaXh1cHMgYXJlXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3Rfc3Jpb3ZfdmYuYy0xNTg1LSAqIHBlbmRpbmcgb3IgYmVpbmcgYXBwbGllZCByaWdodCBub3cuXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3NyaW92X3ZmLmM9MTU4Nz1pbnQgeGVfdmZfbWlncmF0aW9uX2ZpeHVwc19jb21wbGV0ZV9jb3VudChzdHJ1Y3QgeGVfZ3QgKmd0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9zcmlvdl92Zi5jLTE2MDQtICogUmV0dXJuOiBudW1iZXIgb2YgdGltZXMgVkYgZml4dXBzIHdlcmUgY29tcGxldGVkIHNpbmNlIGRyaXZlclxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3NyaW92X3ZmLmM6MTYwNTogKiBwcm9iZSwgb3IgMCBpZiBtaWdyYXRpb24gaXMgbm90IGF2YWlsYWJsZS5cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9zcmlvdl92Zi5jLTE2MDYtICovXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19hZHMuYz00NDI9aW50IHhlX2d1Y19hZHNfaW5pdChzdHJ1Y3QgeGVfZ3VjX2FkcyAqYWRzKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfYWRzLmMtNDY1LX1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfYWRzLmM6NDY2OkFMTE9XX0VSUk9SX0lOSkVDVElPTih4ZV9ndWNfYWRzX2luaXQsIEVSUk5PKTsgLyogU2VlIHhlX3BjaV9wcm9iZSgpICovXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2Fkcy5jLTQ2Ny1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2N0LmM9MzIyPWludCB4ZV9ndWNfY3RfaW5pdF9ub2FsbG9jKHN0cnVjdCB4ZV9ndWNfY3QgKmN0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY3QuYy0zNTctfVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jOjM1ODpBTExPV19FUlJPUl9JTkpFQ1RJT04oeGVfZ3VjX2N0X2luaXRfbm9hbGxvYywgRVJSTk8pOyAvKiBTZWUgeGVfcGNpX3Byb2JlKCkgKi9cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY3QuYy0zNTktXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jPTM2OD1pbnQgeGVfZ3VjX2N0X2luaXQoc3RydWN0IHhlX2d1Y19jdCAqY3QpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jLTM5Ni19XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2N0LmM6Mzk3OkFMTE9XX0VSUk9SX0lOSkVDVElPTih4ZV9ndWNfY3RfaW5pdCwgRVJSTk8pOyAvKiBTZWUgeGVfcGNpX3Byb2JlKCkgKi9cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY3QuYy0zOTgtXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19sb2cuYz02MjQ9aW50IHhlX2d1Y19sb2dfaW5pdChzdHJ1Y3QgeGVfZ3VjX2xvZyAqbG9nKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfbG9nLmMtNjQ0LVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19sb2cuYzo2NDU6QUxMT1dfRVJST1JfSU5KRUNUSU9OKHhlX2d1Y19sb2dfaW5pdCwgRVJSTk8pOyAvKiBTZWUgeGVfcGNpX3Byb2JlKCkgKi9cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfbG9nLmMtNjQ2LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfcmVsYXkuYz0zNDI9aW50IHhlX2d1Y19yZWxheV9pbml0KHN0cnVjdCB4ZV9ndWNfcmVsYXkgKnJlbGF5KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfcmVsYXkuYy0zNzAtfVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19yZWxheS5jOjM3MTpBTExPV19FUlJPUl9JTkpFQ1RJT04oeGVfZ3VjX3JlbGF5X2luaXQsIEVSUk5PKTsgLyogU2VlIHhlX3BjaV9wcm9iZSgpICovXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3JlbGF5LmMtMzcyLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9od19lbmdpbmVfY2xhc3Nfc3lzZnMuYz01Nzk9c3RhdGljIGludCB4ZV9hZGRfaHdfZW5naW5lX2NsYXNzX2RlZmF1bHRzKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9od19lbmdpbmVfY2xhc3Nfc3lzZnMuYy02MDMtfVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2h3X2VuZ2luZV9jbGFzc19zeXNmcy5jOjYwNDpBTExPV19FUlJPUl9JTkpFQ1RJT04oeGVfYWRkX2h3X2VuZ2luZV9jbGFzc19kZWZhdWx0cywgRVJSTk8pOyAvKiBTZWUgeGVfcGNpX3Byb2JlKCkgKi9cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9od19lbmdpbmVfY2xhc3Nfc3lzZnMuYy02MDUtXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEyOTEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxNDA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZTogVW5yZWFjaGFibGUgQ29kZSBQYXRocyBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKgoKT2theSwgc28gaGVyZSYjMzk7cyB0aGUgZGVhbC4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCB3YXMgYWJvdXQgaG93IGl0IGFmZmVjdHMgYHhlX3BjaS5jYCwgYnV0IHRoZW4gSSByZWFsaXplZCB0aGlzIGlzIGFib3V0IEtVbml0IHRlc3Rpbmcgd2hpY2ggaXNuJiMzOTt0IFN5emthbGxlciYjMzk7cyB0eXBpY2FsIGZvY3VzLiBTeXprYWxsZXIgaXMgYWxsIGFib3V0IGZ1enppbmcgc3lzY2FsbHMuCgpNeSBtaW5kIHRoZW4gd2VudCB0byBgZHJtX2dwdXN2bS5jYCwgd2hpY2ggaXMgYSBnZW5lcmljIERSTSBHUFUgU1ZNIGxpYnJhcnkgdGhhdCYjMzk7cyBzZWxlY3RlZCBieSBgRFJNX1hFYCwgYW5kIHRoYXQmIzM5O3Mgd2hlbiBpdCBjbGlja2VkLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGhvdyBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgIGlzIHVzZWQsIGFuZCBpdCYjMzk7cyB1c2VkIGluIGBkcm1fZ3B1c3ZtLmNgLCBhbmQgYWxzbyBpbiBgbm91dmVhdV9zdm0uY2AgYW5kIGBhaWUyX2N0eC5jYC4gVGhlc2UgZHJpdmVycyBzb3VuZCBsaWtlIHRoZXkgYXJlIGRlcGVuZGVudCBvbiBzcGVjaWZpYyBoYXJkd2FyZTsgSW50ZWwgWGUsIE52aWRpYSwgYW5kIEFNRCBYRE5BIHJlc3BlY3RpdmVseS4KCk15IGluc3RydWN0aW9ucyBzYXkgSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjaGFuZ2VzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IGFyZSB0aGVzZSBkcml2ZXJzIHJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgVk0/IFRoZSBzaG9ydCBhbnN3ZXI6IE5vLgoKUUVNVSBjYW4gZW11bGF0ZSBzb21lIFBDSSBkZXZpY2VzLCBidXQgbm90IHRoZXNlIG1vZGVybiBHUFVzLiBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhIGRpcmVjdCB3YXkgdG8gaW5qZWN0IFBDSSBkZXZpY2VzLiBFdmVuIHRoZSBgdmttc2AgdmlydHVhbCBLTVMgZHJpdmVyIHRoYXQmIzM5O3MgaW4gU3l6a2FsbGVyLCBkb2VzbiYjMzk7dCB1dGlsaXplIGFueSBvZiB0aGUgc3BlY2lmaWMgU1ZNIGNvZGUuIFRoZXJlJiMzOTtzIG5vIHdheSB0byB0cmlnZ2VyIGBkcm1fZ3B1c3ZtLmNgIG9yIHRoZSBvdGhlciBmaWxlcyB3aXRob3V0IHRoZSBjb3JyZXNwb25kaW5nIGhhcmR3YXJlLgoKSSB3ZW50IGJhY2sgYW5kIGNoZWNrZWQgaWYgYHhlYCBoYWQgYSBgZm9yY2VfcHJvYmVgIG1vZHVsZSBwYXJhbWV0ZXIsIGJ1dCB0aGF0IHN0aWxsIHJlcXVpcmVzIGEgUENJIGRldmljZSB0byBiZSAqcHJlc2VudCosIGV2ZW4gaWYgaXQgb3ZlcnJpZGVzIGEgc3VwcG9ydCBjaGVjay4gU28gdGhlIGNvZGUgcGF0aCB3b3VsZCBzdGlsbCBmYWlsIGluIHByb2JlLiBObyBwcm9iZSwgbm8gY2FsbHMuCgpJIHJlLXJlYWQgdGhlICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgY3JpdGVyaWEuIEl0IGV4cGxpY2l0bHkgbWVudGlvbnM6ICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuIFRoaXMgaXMgYSBwZXJmZWN0IG1hdGNoLiBUaGVzZSBkcml2ZXJzICpyZXF1aXJlKiBwaHlzaWNhbCBoYXJkd2FyZS4gVGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSBpbiBRRU1VLiBUaGUgZHJpdmVycyB3aWxsIGp1c3QgZmFpbCBkdXJpbmcgcHJvYmUoKS4gVGhlIGNvZGUgaXMgc2ltcGx5IHVucmVhY2hhYmxlLgoKSSBsb29rZWQgaW50byBgbm91dmVhdWAsIGBhbWR4ZG5hYCwgYW5kIGB4ZWAgdG8gZG91YmxlLWNoZWNrIHRoZWlyIHNvZnR3YXJlIGVtdWxhdGlvbiBzdXBwb3J0IGFuZCwgYXMgSSBzdXNwZWN0ZWQsIG5vbmUgb2YgdGhlbSBoYXZlIGFueS4gSSBldmVuIGNoZWNrZWQgU3l6a2FsbGVyIGZvciBQQ0kgaW5qZWN0aW9uLCBhbmQgdGhlcmUmIzM5O3Mgbm90aGluZywgbm8gYHN5el9wY2lfZGV2aWNlX2FkZGAgb3IgYW55dGhpbmcgbGlrZSB0aGF0LiBFdmVuIGlmIHRoZXJlIHdlcmUsIHRoZSBkcml2ZXJzIHdvdWxkIHN0aWxsIG5lZWQgdG8gZW11bGF0ZSB0aGUgc3BlY2lmaWMgQkFScyBhbmQgcmVnaXN0ZXJzLCB3aGljaCB0aGV5IGRvbiYjMzk7dCwgYW5kIHNvIHRoZSBwcm9iZSB3b3VsZCBqdXN0IGZhaWwuCgpJIHRoaW5rIEkmIzM5O3ZlIGNvdmVyZWQgYWxsIHRoZSBiYXNlcy4gVGhpcyBwYXRjaCBtb2RpZmllcyBjb2RlIHRoYXQgaXMgaW5oZXJlbnRseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgSSYjMzk7bSBjb25maWRlbnQgaW4gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgY29kZSBpcyBuZXZlciBnb2luZyB0byBiZSBleGVjdXRlZCBieSBzeXprYWxsZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBEUk1fR1BVU1ZNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnPTI9Y29uZmlnIERSTV9YRVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTQxLVx0c2VsZWN0IERSTV9FWEVDXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzo0MjpcdHNlbGVjdCBEUk1fR1BVU1ZNIGlmICFVTUxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTQzLVx0c2VsZWN0IERSTV9HUFVWTVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnPTc5PWNvbmZpZyBEUk1fWEVfR1BVU1ZNXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctODUtXHRzZWxlY3QgREVWSUNFX1BSSVZBVEVcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjg2Olx0c2VsZWN0IERSTV9HUFVTVk1cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTg3LVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzU0NQoJCQkJCQkJb3V0cHV0OiAxNzQKCQkJCQkJCXRob3VnaHRzOiAyNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBWaWFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0cyBwb3RlbnRpYWwgZm9yIGZ1enppbmcuIEl0IGxvb2tzIGxpa2UgdGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBhcmUgZXhjbHVzaXZlbHkgd2l0aGluIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnM6IHRoZSBBTUQgWEROQSBkcml2ZXIgKGBhaWUyX2N0eC5jYCksIHRoZSBJbnRlbCBYZSBkcml2ZXIgKGBkcm1fZ3B1c3ZtLmNgLCBzcGVjaWZpY2FsbHkgdGllZCB0byB0aGUgYERSTV9YRWAgY29uZmlnIG9wdGlvbiksIGFuZCB0aGUgTnZpZGlhIE5vdXZlYXUgZHJpdmVyIChgbm91dmVhdV9zdm0uY2ApLgoKQSBrZXkgb2JzZXJ2YXRpb24gaGVyZSBpcyB0aGF0ICpvbmx5KiB0aGUgYERSTV9YRWAgY29uZmlnIG9wdGlvbiBzZWxlY3RzIGBkcm1fZ3B1c3ZtYC4gSSBtYWRlIHN1cmUgdG8gY2hlY2sgdGhlIGNvZGUgdG8gc2VlIGlmIHRoZXJlIHdhcyBhbnkgY2hhbmNlIG9mIGBkcm1fZ3B1c3ZtYCBiZWluZyBzZWxlY3RlZCBieSBhbm90aGVyIGRyaXZlci4KCk5vdywgY29uc2lkZXJpbmcgdGhlc2UgZHJpdmVycyBhbmQgdGhlaXIgcmVzcGVjdGl2ZSBsb2NhdGlvbnMsIEkmIzM5O20gcHJldHR5IGNlcnRhaW4gdGhhdCB0aGUgZnV6emluZyBlZmZvcnRzIHdvdWxkbiYjMzk7dCBiZSBwcm9kdWN0aXZlLiBUaGVzZSBtb2R1bGVzIHJlcXVpcmUgcGh5c2ljYWwgUENJIGhhcmR3YXJlIChOUFVzIG9yIEdQVXMpIHRvIHByb2JlIGNvcnJlY3RseSBhbmQgZXN0YWJsaXNoIGRldmljZSBub2Rlcy4gUUVNVSBhbmQgR0NFLCB3aGlsZSBleGNlbGxlbnQgZm9yIG1hbnkgcHVycG9zZXMsIGRvbiYjMzk7dCBlbXVsYXRlIHRoaXMgdHlwZSBvZiBoYXJkd2FyZSB0byB0aGUgbGV2ZWwgbmVlZGVkIGZvciB0aGVzZSBkcml2ZXJzIHRvIGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBzaW1wbHkgaW5hY2Nlc3NpYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpHaXZlbiB0aGF0LCBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIHBhdGNoIHRvdWNoZXMgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyB0aGF0IGRlcGVuZCBvbiB1bmF2YWlsYWJsZSBvciB1bi1lbXVsYXRlZCBQQ0kgZGV2aWNlcywgcmVuZGVyaW5nIHRoZXNlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuCgpUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdXNhZ2Ugb2YgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgaW4gdGhyZWUgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyczogQU1EIFhETkEgKGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jKSwgSW50ZWwgWGUgKGRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMsIHNlbGVjdGVkIG9ubHkgYnkgRFJNX1hFKSwgYW5kIE52aWRpYSBOb3V2ZWF1IChkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jKS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSAoTlBVcy9HUFVzKSB0byBzdWNjZXNzZnVsbHkgcHJvYmUgYW5kIGNyZWF0ZSBkZXZpY2Ugbm9kZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdXNhZ2Ugb2YgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgaW4gdGhyZWUgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyczogQU1EIFhETkEgKGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jKSwgSW50ZWwgWGUgKGRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMsIHNlbGVjdGVkIG9ubHkgYnkgRFJNX1hFKSwgYW5kIE52aWRpYSBOb3V2ZWF1IChkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jKS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSAoTlBVcy9HUFVzKSB0byBzdWNjZXNzZnVsbHkgcHJvYmUgYW5kIGNyZWF0ZSBkZXZpY2Ugbm9kZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTc6MTUuMjkxOTExMDk2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5ODIxNDE1ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdXNhZ2Ugb2YgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgaW4gdGhyZWUgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyczogQU1EIFhETkEgKGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jKSwgSW50ZWwgWGUgKGRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMsIHNlbGVjdGVkIG9ubHkgYnkgRFJNX1hFKSwgYW5kIE52aWRpYSBOb3V2ZWF1IChkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jKS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSAoTlBVcy9HUFVzKSB0byBzdWNjZXNzZnVsbHkgcHJvYmUgYW5kIGNyZWF0ZSBkZXZpY2Ugbm9kZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1NzoxNS4yOTE5MjYzODZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMjU0Mjk5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY2MzFhZjBhNDNjMWMyNTNlZGQzMjEzZjBmNTM5YmJlYjMyYmM3OGZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMDY6NTc6MTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0IGIvRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0XFxuaW5kZXggNWM4OGQyY2YwODE4MzMuLmZjMWI4ZGMxOTgyNTBlIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdFxcbisrKyBiL0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdFxcbkBAIC0yMDYsNyArMjA2LDcgQEAgVGhlIHVzYWdlIHBhdHRlcm4gaXM6OlxcbiAgICAgICAgICAgZ290byBvdXRfcHV0O1xcbiBcXG4gICAgICAgdGFrZV9sb2NrKGRyaXZlci1cXHUwMDNldXBkYXRlKTtcXG4tICAgICAgaWYgKG1tdV9pbnRlcnZhbF9yZWFkX3JldHJ5KFxcdTAwMjZpbnRlcnZhbF9zdWIsIHJhbmdlLm5vdGlmaWVyX3NlcSkpIHtcXG4rICAgICAgaWYgKG1tdV9pbnRlcnZhbF9yZWFkX3JldHJ5KHJhbmdlLm5vdGlmaWVyLCByYW5nZS5ub3RpZmllcl9zZXEpKSB7XFxuICAgICAgICAgICByZWxlYXNlX2xvY2soZHJpdmVyLVxcdTAwM2V1cGRhdGUpO1xcbiAgICAgICAgICAgZ290byBhZ2FpbjtcXG4gICAgICAgfVxcbkBAIC0yMjUsNyArMjI1LDggQEAgVGhlIHVzYWdlIHBhdHRlcm4gaXM6OlxcbiBUaGUgZHJpdmVyLVxcdTAwM2V1cGRhdGUgbG9jayBpcyB0aGUgc2FtZSBsb2NrIHRoYXQgdGhlIGRyaXZlciB0YWtlcyBpbnNpZGUgaXRzXFxuIGludmFsaWRhdGUoKSBjYWxsYmFjay4gVGhhdCBsb2NrIG11c3QgYmUgaGVsZCBiZWZvcmUgY2FsbGluZ1xcbiBtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeSgpIHRvIGF2b2lkIGFueSByYWNlIHdpdGggYSBjb25jdXJyZW50IENQVSBwYWdlIHRhYmxlXFxuLXVwZGF0ZS5cXG4rdXBkYXRlLiBUaGUgcmV0cnkgY2hlY2sgbXVzdCB1c2UgdGhlIHNhbWUgbm90aWZpZXIgYW5kIHNlcXVlbmNlIG51bWJlciBzdG9yZWRcXG4raW4gYGByYW5nZWBgIGJ5IGBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoKWBgLlxcbiBcXG4gSG9sZGluZyB0aGUgbW1hcCBsb2NrIGFjcm9zcyBITU0gZmF1bHRzXFxuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9jdHguYyBiL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jXFxuaW5kZXggNTQ4YmE0MzE1NTU0ZmYuLjIxZjI4MTc3NTFmOWU3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jXFxuKysrIGIvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmNcXG5AQCAtMTAzNyw3ICsxMDM3LDcgQEAgc3RhdGljIGludCBhaWUyX3BvcHVsYXRlX3JhbmdlKHN0cnVjdCBhbWR4ZG5hX2dlbV9vYmogKmFibylcXG4gXFx0Ym9vbCBmb3VuZDtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdHRpbWVvdXQgPSBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcXG4rXFx0dGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XFxuIGFnYWluOlxcbiBcXHRmb3VuZCA9IGZhbHNlO1xcbiBcXHRkb3duX3dyaXRlKFxcdTAwMjZ4ZG5hLVxcdTAwM2Vub3RpZmllcl9sb2NrKTtcXG5AQCAtMTA2MiwxMyArMTA2Miw5IEBAIHN0YXRpYyBpbnQgYWllMl9wb3B1bGF0ZV9yYW5nZShzdHJ1Y3QgYW1keGRuYV9nZW1fb2JqICphYm8pXFxuIFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbiBcXHR9XFxuIFxcbi1cXHRyZXQgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcXHUwMDI2bWFwcC1cXHUwMDNlcmFuZ2UsXFxuLVxcdFxcdFxcdG1heF90KGxvbmcsIHRpbWVvdXQgLSBqaWZmaWVzLCAxKSk7XFxuLVxcdGlmIChyZXQpIHtcXG4tXFx0XFx0aWYgKHJldCA9PSAtRUJVU1kpXFxuLVxcdFxcdFxcdHJldCA9IC1FVElNRTtcXG4rXFx0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXFx1MDAyNm1hcHAtXFx1MDAzZXJhbmdlLCB0aW1lb3V0KTtcXG4rXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBwdXRfbW07XFxuLVxcdH1cXG4gXFxuIFxcdGRvd25fd3JpdGUoXFx1MDAyNnhkbmEtXFx1MDAzZW5vdGlmaWVyX2xvY2spO1xcbiBcXHRpZiAobW11X2ludGVydmFsX3JlYWRfcmV0cnkoXFx1MDAyNm1hcHAtXFx1MDAzZW5vdGlmaWVyLCBtYXBwLVxcdTAwM2VyYW5nZS5ub3RpZmllcl9zZXEpKSB7XFxuQEAgLTEwODYsNyArMTA4Miw3IEBAIHN0YXRpYyBpbnQgYWllMl9wb3B1bGF0ZV9yYW5nZShzdHJ1Y3QgYW1keGRuYV9nZW1fb2JqICphYm8pXFxuIHB1dF9tbTpcXG4gXFx0YW1keGRuYV91bWFwX3B1dChtYXBwKTtcXG4gXFx0bW1wdXQobW0pO1xcbi1cXHRyZXR1cm4gcmV0O1xcbitcXHRyZXR1cm4gcmV0ID09IC1FQlVTWSA/IC1FVElNRSA6IHJldDtcXG4gfVxcbiBcXG4gaW50IGFpZTJfY21kX3N1Ym1pdChzdHJ1Y3QgYW1keGRuYV9od2N0eCAqaHdjdHgsIHN0cnVjdCBhbWR4ZG5hX3NjaGVkX2pvYiAqam9iLCB1NjQgKnNlcSlcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNcXG5pbmRleCBiOGYyZGQ5OTgyZjUzYy4uNzZlOGEwMDI4YzdmYzkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNcXG5AQCAtODUyLDggKzg1Miw3IEBAIGVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBkcm1fZ3B1c3ZtX3NjYW5fbW0oc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlLFxcbiBcXHRcXHQuZW5kID0gZW5kLFxcbiBcXHRcXHQuZGV2X3ByaXZhdGVfb3duZXIgPSBkZXZfcHJpdmF0ZV9vd25lcixcXG4gXFx0fTtcXG4tXFx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID1cXG4tXFx0XFx0amlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XFxuK1xcdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XFxuIFxcdGVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBzdGF0ZSA9IERSTV9HUFVTVk1fU0NBTl9VTlBPUFVMQVRFRCwgbmV3X3N0YXRlO1xcbiBcXHR1bnNpZ25lZCBsb25nICpwZm5zO1xcbiBcXHR1bnNpZ25lZCBsb25nIG5wYWdlcyA9IG5wYWdlc19pbl9yYW5nZShzdGFydCwgZW5kKTtcXG5AQCAtODY3LDggKzg2Niw3IEBAIGVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBkcm1fZ3B1c3ZtX3NjYW5fbW0oc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlLFxcbiBcXHRobW1fcmFuZ2UuaG1tX3BmbnMgPSBwZm5zO1xcbiBcXG4gcmV0cnk6XFxuLVxcdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZobW1fcmFuZ2UsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgICBtYXgodGltZW91dCAtIGppZmZpZXMsIDFMKSk7XFxuK1xcdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZobW1fcmFuZ2UsIHRpbWVvdXQpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRnb3RvIGVycl9mcmVlO1xcbiBcXG5AQCAtMTQ1OSw4ICsxNDU3LDcgQEAgaW50IGRybV9ncHVzdm1fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuIFxcdFxcdC5kZXZfcHJpdmF0ZV9vd25lciA9IGN0eC1cXHUwMDNlZGV2aWNlX3ByaXZhdGVfcGFnZV9vd25lcixcXG4gXFx0fTtcXG4gXFx0dm9pZCAqemRkO1xcbi1cXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQgPVxcbi1cXHRcXHRqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcXG4rXFx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcXG4gXFx0dW5zaWduZWQgbG9uZyBpLCBqO1xcbiBcXHR1bnNpZ25lZCBsb25nIG5wYWdlcyA9IG5wYWdlc19pbl9yYW5nZShwYWdlc19zdGFydCwgcGFnZXNfZW5kKTtcXG4gXFx0dW5zaWduZWQgbG9uZyBudW1fZG1hX21hcHBlZDtcXG5AQCAtMTQ3OCw5ICsxNDc1LDYgQEAgaW50IGRybV9ncHVzdm1fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gcmV0cnk6XFxuLVxcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKVxcbi1cXHRcXHRyZXR1cm4gLUVCVVNZO1xcbi1cXG4gXFx0aG1tX3JhbmdlLm5vdGlmaWVyX3NlcSA9IG1tdV9pbnRlcnZhbF9yZWFkX2JlZ2luKG5vdGlmaWVyKTtcXG4gXFx0aWYgKGRybV9ncHVzdm1fcGFnZXNfdmFsaWRfdW5sb2NrZWQoZ3B1c3ZtLCBzdm1fcGFnZXMpKVxcbiBcXHRcXHRnb3RvIHNldF9zZXFubztcXG5AQCAtMTQ5NSw4ICsxNDg5LDcgQEAgaW50IGRybV9ncHVzdm1fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuIFxcdH1cXG4gXFxuIFxcdGhtbV9yYW5nZS5obW1fcGZucyA9IHBmbnM7XFxuLVxcdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZobW1fcmFuZ2UsXFxuLVxcdFxcdFxcdFxcdG1heF90KGxvbmcsIHRpbWVvdXQgLSBqaWZmaWVzLCAxKSk7XFxuK1xcdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZobW1fcmFuZ2UsIHRpbWVvdXQpO1xcbiBcXHRtbXB1dChtbSk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZXJyX2ZyZWU7XFxuQEAgLTE3MTgsOCArMTcxMSw3IEBAIGludCBkcm1fZ3B1c3ZtX3JhbmdlX2V2aWN0KHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuIFxcdFxcdC5lbmQgPSBkcm1fZ3B1c3ZtX3JhbmdlX2VuZChyYW5nZSksXFxuIFxcdFxcdC5kZXZfcHJpdmF0ZV9vd25lciA9IE5VTEwsXFxuIFxcdH07XFxuLVxcdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9XFxuLVxcdFxcdGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xcbitcXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xcbiBcXHR1bnNpZ25lZCBsb25nICpwZm5zO1xcbiBcXHR1bnNpZ25lZCBsb25nIG5wYWdlcyA9IG5wYWdlc19pbl9yYW5nZShkcm1fZ3B1c3ZtX3JhbmdlX3N0YXJ0KHJhbmdlKSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgIGRybV9ncHVzdm1fcmFuZ2VfZW5kKHJhbmdlKSk7XFxuQEAgLTE3MzQsOCArMTcyNiw3IEBAIGludCBkcm1fZ3B1c3ZtX3JhbmdlX2V2aWN0KHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4gXFx0aG1tX3JhbmdlLmhtbV9wZm5zID0gcGZucztcXG4tXFx0ZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXFx1MDAyNmhtbV9yYW5nZSxcXG4tXFx0XFx0XFx0XFx0bWF4X3QobG9uZywgdGltZW91dCAtIGppZmZpZXMsIDEpKTtcXG4rXFx0ZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXFx1MDAyNmhtbV9yYW5nZSwgdGltZW91dCk7XFxuIFxcbiBcXHRrdmZyZWUocGZucyk7XFxuIFxcdG1tcHV0KG1tKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmNcXG5pbmRleCA0Y2ZiNmViN2M3NzE1YS4uYjE0MTVjMmU0OWZjY2YgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmNcXG5AQCAtNjU1LDggKzY1NSw3IEBAIHN0YXRpYyBpbnQgbm91dmVhdV9yYW5nZV9mYXVsdChzdHJ1Y3Qgbm91dmVhdV9zdm1tICpzdm1tLFxcbiBcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBobW1fZmxhZ3MsXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc3ZtX25vdGlmaWVyICpub3RpZmllcilcXG4ge1xcbi1cXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQgPVxcbi1cXHRcXHRqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcXG4rXFx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcXG4gXFx0LyogSGF2ZSBITU0gZmF1bHQgcGFnZXMgd2l0aGluIHRoZSBmYXVsdCB3aW5kb3cgdG8gdGhlIEdQVS4gKi9cXG4gXFx0dW5zaWduZWQgbG9uZyBobW1fcGZuc1sxXTtcXG4gXFx0c3RydWN0IGhtbV9yYW5nZSByYW5nZSA9IHtcXG5AQCAtNjc3LDI1ICs2NzYsMTYgQEAgc3RhdGljIGludCBub3V2ZWF1X3JhbmdlX2ZhdWx0KHN0cnVjdCBub3V2ZWF1X3N2bW0gKnN2bW0sXFxuIFxcdHJhbmdlLnN0YXJ0ID0gbm90aWZpZXItXFx1MDAzZW5vdGlmaWVyLmludGVydmFsX3RyZWUuc3RhcnQ7XFxuIFxcdHJhbmdlLmVuZCA9IG5vdGlmaWVyLVxcdTAwM2Vub3RpZmllci5pbnRlcnZhbF90cmVlLmxhc3QgKyAxO1xcbiBcXG4tXFx0d2hpbGUgKHRydWUpIHtcXG4tXFx0XFx0aWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpIHtcXG4tXFx0XFx0XFx0cmV0ID0gLUVCVVNZO1xcbi1cXHRcXHRcXHRnb3RvIG91dDtcXG4tXFx0XFx0fVxcbi1cXG4tXFx0XFx0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXFx1MDAyNnJhbmdlLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgbWF4KHRpbWVvdXQgLSBqaWZmaWVzLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAxTCkpO1xcbi1cXHRcXHRpZiAocmV0KVxcbi1cXHRcXHRcXHRnb3RvIG91dDtcXG4rYWdhaW46XFxuK1xcdHJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZyYW5nZSwgdGltZW91dCk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbiBcXG4tXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2c3ZtbS1cXHUwMDNlbXV0ZXgpO1xcbi1cXHRcXHRpZiAobW11X2ludGVydmFsX3JlYWRfcmV0cnkocmFuZ2Uubm90aWZpZXIsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICByYW5nZS5ub3RpZmllcl9zZXEpKSB7XFxuLVxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2c3ZtbS1cXHUwMDNlbXV0ZXgpO1xcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0fVxcbi1cXHRcXHRicmVhaztcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2c3ZtbS1cXHUwMDNlbXV0ZXgpO1xcbitcXHRpZiAobW11X2ludGVydmFsX3JlYWRfcmV0cnkocmFuZ2Uubm90aWZpZXIsXFxuK1xcdFxcdFxcdFxcdCAgICByYW5nZS5ub3RpZmllcl9zZXEpKSB7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2c3ZtbS1cXHUwMDNlbXV0ZXgpO1xcbitcXHRcXHRnb3RvIGFnYWluO1xcbiBcXHR9XFxuIFxcbiBcXHRub3V2ZWF1X2htbV9jb252ZXJ0X3Bmbihkcm0sIFxcdTAwMjZyYW5nZSwgYXJncyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjE1LjcyNTAzOTE1M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5Mzg4MjgyNTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdXNhZ2Ugb2YgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgaW4gdGhyZWUgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyczogQU1EIFhETkEgKGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jKSwgSW50ZWwgWGUgKGRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMsIHNlbGVjdGVkIG9ubHkgYnkgRFJNX1hFKSwgYW5kIE52aWRpYSBOb3V2ZWF1IChkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jKS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSAoTlBVcy9HUFVzKSB0byBzdWNjZXNzZnVsbHkgcHJvYmUgYW5kIGNyZWF0ZSBkZXZpY2Ugbm9kZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGY2MzFhZjBhNDNjMWMyNTNlZGQzMjEzZjBmNTM5YmJlYjMyYmM3OGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAwNjo1NzoxNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdCBiL0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdFxuaW5kZXggNWM4OGQyY2YwODE4MzMuLmZjMWI4ZGMxOTgyNTBlIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0XG4rKysgYi9Eb2N1bWVudGF0aW9uL21tL2htbS5yc3RcbkBAIC0yMDYsNyArMjA2LDcgQEAgVGhlIHVzYWdlIHBhdHRlcm4gaXM6OlxuICAgICAgICAgICBnb3RvIG91dF9wdXQ7XG4gXG4gICAgICAgdGFrZV9sb2NrKGRyaXZlci1cdTAwM2V1cGRhdGUpO1xuLSAgICAgIGlmIChtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeShcdTAwMjZpbnRlcnZhbF9zdWIsIHJhbmdlLm5vdGlmaWVyX3NlcSkpIHtcbisgICAgICBpZiAobW11X2ludGVydmFsX3JlYWRfcmV0cnkocmFuZ2Uubm90aWZpZXIsIHJhbmdlLm5vdGlmaWVyX3NlcSkpIHtcbiAgICAgICAgICAgcmVsZWFzZV9sb2NrKGRyaXZlci1cdTAwM2V1cGRhdGUpO1xuICAgICAgICAgICBnb3RvIGFnYWluO1xuICAgICAgIH1cbkBAIC0yMjUsNyArMjI1LDggQEAgVGhlIHVzYWdlIHBhdHRlcm4gaXM6OlxuIFRoZSBkcml2ZXItXHUwMDNldXBkYXRlIGxvY2sgaXMgdGhlIHNhbWUgbG9jayB0aGF0IHRoZSBkcml2ZXIgdGFrZXMgaW5zaWRlIGl0c1xuIGludmFsaWRhdGUoKSBjYWxsYmFjay4gVGhhdCBsb2NrIG11c3QgYmUgaGVsZCBiZWZvcmUgY2FsbGluZ1xuIG1tdV9pbnRlcnZhbF9yZWFkX3JldHJ5KCkgdG8gYXZvaWQgYW55IHJhY2Ugd2l0aCBhIGNvbmN1cnJlbnQgQ1BVIHBhZ2UgdGFibGVcbi11cGRhdGUuXG4rdXBkYXRlLiBUaGUgcmV0cnkgY2hlY2sgbXVzdCB1c2UgdGhlIHNhbWUgbm90aWZpZXIgYW5kIHNlcXVlbmNlIG51bWJlciBzdG9yZWRcbitpbiBgYHJhbmdlYGAgYnkgYGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgpYGAuXG4gXG4gSG9sZGluZyB0aGUgbW1hcCBsb2NrIGFjcm9zcyBITU0gZmF1bHRzXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMgYi9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9jdHguY1xuaW5kZXggNTQ4YmE0MzE1NTU0ZmYuLjIxZjI4MTc3NTFmOWU3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmNcbisrKyBiL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jXG5AQCAtMTAzNyw3ICsxMDM3LDcgQEAgc3RhdGljIGludCBhaWUyX3BvcHVsYXRlX3JhbmdlKHN0cnVjdCBhbWR4ZG5hX2dlbV9vYmogKmFibylcbiBcdGJvb2wgZm91bmQ7XG4gXHRpbnQgcmV0O1xuIFxuLVx0dGltZW91dCA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuK1x0dGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XG4gYWdhaW46XG4gXHRmb3VuZCA9IGZhbHNlO1xuIFx0ZG93bl93cml0ZShcdTAwMjZ4ZG5hLVx1MDAzZW5vdGlmaWVyX2xvY2spO1xuQEAgLTEwNjIsMTMgKzEwNjIsOSBAQCBzdGF0aWMgaW50IGFpZTJfcG9wdWxhdGVfcmFuZ2Uoc3RydWN0IGFtZHhkbmFfZ2VtX29iaiAqYWJvKVxuIFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdH1cbiBcbi1cdHJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFx1MDAyNm1hcHAtXHUwMDNlcmFuZ2UsXG4tXHRcdFx0bWF4X3QobG9uZywgdGltZW91dCAtIGppZmZpZXMsIDEpKTtcbi1cdGlmIChyZXQpIHtcbi1cdFx0aWYgKHJldCA9PSAtRUJVU1kpXG4tXHRcdFx0cmV0ID0gLUVUSU1FO1xuK1x0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2bWFwcC1cdTAwM2VyYW5nZSwgdGltZW91dCk7XG4rXHRpZiAocmV0KVxuIFx0XHRnb3RvIHB1dF9tbTtcbi1cdH1cbiBcbiBcdGRvd25fd3JpdGUoXHUwMDI2eGRuYS1cdTAwM2Vub3RpZmllcl9sb2NrKTtcbiBcdGlmIChtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeShcdTAwMjZtYXBwLVx1MDAzZW5vdGlmaWVyLCBtYXBwLVx1MDAzZXJhbmdlLm5vdGlmaWVyX3NlcSkpIHtcbkBAIC0xMDg2LDcgKzEwODIsNyBAQCBzdGF0aWMgaW50IGFpZTJfcG9wdWxhdGVfcmFuZ2Uoc3RydWN0IGFtZHhkbmFfZ2VtX29iaiAqYWJvKVxuIHB1dF9tbTpcbiBcdGFtZHhkbmFfdW1hcF9wdXQobWFwcCk7XG4gXHRtbXB1dChtbSk7XG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIHJldCA9PSAtRUJVU1kgPyAtRVRJTUUgOiByZXQ7XG4gfVxuIFxuIGludCBhaWUyX2NtZF9zdWJtaXQoc3RydWN0IGFtZHhkbmFfaHdjdHggKmh3Y3R4LCBzdHJ1Y3QgYW1keGRuYV9zY2hlZF9qb2IgKmpvYiwgdTY0ICpzZXEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNcbmluZGV4IGI4ZjJkZDk5ODJmNTNjLi43NmU4YTAwMjhjN2ZjOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNcbkBAIC04NTIsOCArODUyLDcgQEAgZW51bSBkcm1fZ3B1c3ZtX3NjYW5fcmVzdWx0IGRybV9ncHVzdm1fc2Nhbl9tbShzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UsXG4gXHRcdC5lbmQgPSBlbmQsXG4gXHRcdC5kZXZfcHJpdmF0ZV9vd25lciA9IGRldl9wcml2YXRlX293bmVyLFxuIFx0fTtcbi1cdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9XG4tXHRcdGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuK1x0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcbiBcdGVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBzdGF0ZSA9IERSTV9HUFVTVk1fU0NBTl9VTlBPUFVMQVRFRCwgbmV3X3N0YXRlO1xuIFx0dW5zaWduZWQgbG9uZyAqcGZucztcbiBcdHVuc2lnbmVkIGxvbmcgbnBhZ2VzID0gbnBhZ2VzX2luX3JhbmdlKHN0YXJ0LCBlbmQpO1xuQEAgLTg2Nyw4ICs4NjYsNyBAQCBlbnVtIGRybV9ncHVzdm1fc2Nhbl9yZXN1bHQgZHJtX2dwdXN2bV9zY2FuX21tKHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpyYW5nZSxcbiBcdGhtbV9yYW5nZS5obW1fcGZucyA9IHBmbnM7XG4gXG4gcmV0cnk6XG4tXHRlcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZobW1fcmFuZ2UsXG4tXHRcdFx0XHRcdCAgICAgICBtYXgodGltZW91dCAtIGppZmZpZXMsIDFMKSk7XG4rXHRlcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZobW1fcmFuZ2UsIHRpbWVvdXQpO1xuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJfZnJlZTtcbiBcbkBAIC0xNDU5LDggKzE0NTcsNyBAQCBpbnQgZHJtX2dwdXN2bV9nZXRfcGFnZXMoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcbiBcdFx0LmRldl9wcml2YXRlX293bmVyID0gY3R4LVx1MDAzZWRldmljZV9wcml2YXRlX3BhZ2Vfb3duZXIsXG4gXHR9O1xuIFx0dm9pZCAqemRkO1xuLVx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID1cbi1cdFx0amlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XG4rXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuIFx0dW5zaWduZWQgbG9uZyBpLCBqO1xuIFx0dW5zaWduZWQgbG9uZyBucGFnZXMgPSBucGFnZXNfaW5fcmFuZ2UocGFnZXNfc3RhcnQsIHBhZ2VzX2VuZCk7XG4gXHR1bnNpZ25lZCBsb25nIG51bV9kbWFfbWFwcGVkO1xuQEAgLTE0NzgsOSArMTQ3NSw2IEBAIGludCBkcm1fZ3B1c3ZtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiByZXRyeTpcbi1cdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKVxuLVx0XHRyZXR1cm4gLUVCVVNZO1xuLVxuIFx0aG1tX3JhbmdlLm5vdGlmaWVyX3NlcSA9IG1tdV9pbnRlcnZhbF9yZWFkX2JlZ2luKG5vdGlmaWVyKTtcbiBcdGlmIChkcm1fZ3B1c3ZtX3BhZ2VzX3ZhbGlkX3VubG9ja2VkKGdwdXN2bSwgc3ZtX3BhZ2VzKSlcbiBcdFx0Z290byBzZXRfc2Vxbm87XG5AQCAtMTQ5NSw4ICsxNDg5LDcgQEAgaW50IGRybV9ncHVzdm1fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXG4gXHR9XG4gXG4gXHRobW1fcmFuZ2UuaG1tX3BmbnMgPSBwZm5zO1xuLVx0ZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2aG1tX3JhbmdlLFxuLVx0XHRcdFx0bWF4X3QobG9uZywgdGltZW91dCAtIGppZmZpZXMsIDEpKTtcbitcdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFx1MDAyNmhtbV9yYW5nZSwgdGltZW91dCk7XG4gXHRtbXB1dChtbSk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9mcmVlO1xuQEAgLTE3MTgsOCArMTcxMSw3IEBAIGludCBkcm1fZ3B1c3ZtX3JhbmdlX2V2aWN0KHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXG4gXHRcdC5lbmQgPSBkcm1fZ3B1c3ZtX3JhbmdlX2VuZChyYW5nZSksXG4gXHRcdC5kZXZfcHJpdmF0ZV9vd25lciA9IE5VTEwsXG4gXHR9O1xuLVx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID1cbi1cdFx0amlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XG4rXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuIFx0dW5zaWduZWQgbG9uZyAqcGZucztcbiBcdHVuc2lnbmVkIGxvbmcgbnBhZ2VzID0gbnBhZ2VzX2luX3JhbmdlKGRybV9ncHVzdm1fcmFuZ2Vfc3RhcnQocmFuZ2UpLFxuIFx0XHRcdFx0XHQgICAgICAgZHJtX2dwdXN2bV9yYW5nZV9lbmQocmFuZ2UpKTtcbkBAIC0xNzM0LDggKzE3MjYsNyBAQCBpbnQgZHJtX2dwdXN2bV9yYW5nZV9ldmljdChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdGhtbV9yYW5nZS5obW1fcGZucyA9IHBmbnM7XG4tXHRlcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZobW1fcmFuZ2UsXG4tXHRcdFx0XHRtYXhfdChsb25nLCB0aW1lb3V0IC0gamlmZmllcywgMSkpO1xuK1x0ZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2aG1tX3JhbmdlLCB0aW1lb3V0KTtcbiBcbiBcdGt2ZnJlZShwZm5zKTtcbiBcdG1tcHV0KG1tKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uY1xuaW5kZXggNGNmYjZlYjdjNzcxNWEuLmIxNDE1YzJlNDlmY2NmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uY1xuQEAgLTY1NSw4ICs2NTUsNyBAQCBzdGF0aWMgaW50IG5vdXZlYXVfcmFuZ2VfZmF1bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSxcbiBcdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBobW1fZmxhZ3MsXG4gXHRcdFx0ICAgICAgIHN0cnVjdCBzdm1fbm90aWZpZXIgKm5vdGlmaWVyKVxuIHtcbi1cdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9XG4tXHRcdGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuK1x0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcbiBcdC8qIEhhdmUgSE1NIGZhdWx0IHBhZ2VzIHdpdGhpbiB0aGUgZmF1bHQgd2luZG93IHRvIHRoZSBHUFUuICovXG4gXHR1bnNpZ25lZCBsb25nIGhtbV9wZm5zWzFdO1xuIFx0c3RydWN0IGhtbV9yYW5nZSByYW5nZSA9IHtcbkBAIC02NzcsMjUgKzY3NiwxNiBAQCBzdGF0aWMgaW50IG5vdXZlYXVfcmFuZ2VfZmF1bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSxcbiBcdHJhbmdlLnN0YXJ0ID0gbm90aWZpZXItXHUwMDNlbm90aWZpZXIuaW50ZXJ2YWxfdHJlZS5zdGFydDtcbiBcdHJhbmdlLmVuZCA9IG5vdGlmaWVyLVx1MDAzZW5vdGlmaWVyLmludGVydmFsX3RyZWUubGFzdCArIDE7XG4gXG4tXHR3aGlsZSAodHJ1ZSkge1xuLVx0XHRpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkge1xuLVx0XHRcdHJldCA9IC1FQlVTWTtcbi1cdFx0XHRnb3RvIG91dDtcbi1cdFx0fVxuLVxuLVx0XHRyZXQgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZyYW5nZSxcbi1cdFx0XHRcdFx0XHQgICAgICAgbWF4KHRpbWVvdXQgLSBqaWZmaWVzLFxuLVx0XHRcdFx0XHRcdFx0ICAgMUwpKTtcbi1cdFx0aWYgKHJldClcbi1cdFx0XHRnb3RvIG91dDtcbithZ2FpbjpcbitcdHJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFx1MDAyNnJhbmdlLCB0aW1lb3V0KTtcbitcdGlmIChyZXQpXG4rXHRcdGdvdG8gb3V0O1xuIFxuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnN2bW0tXHUwMDNlbXV0ZXgpO1xuLVx0XHRpZiAobW11X2ludGVydmFsX3JlYWRfcmV0cnkocmFuZ2Uubm90aWZpZXIsXG4tXHRcdFx0XHRcdCAgICByYW5nZS5ub3RpZmllcl9zZXEpKSB7XG4tXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnN2bW0tXHUwMDNlbXV0ZXgpO1xuLVx0XHRcdGNvbnRpbnVlO1xuLVx0XHR9XG4tXHRcdGJyZWFrO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZzdm1tLVx1MDAzZW11dGV4KTtcbitcdGlmIChtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeShyYW5nZS5ub3RpZmllcixcbitcdFx0XHRcdCAgICByYW5nZS5ub3RpZmllcl9zZXEpKSB7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZzdm1tLVx1MDAzZW11dGV4KTtcbitcdFx0Z290byBhZ2FpbjtcbiBcdH1cbiBcbiBcdG5vdXZlYXVfaG1tX2NvbnZlcnRfcGZuKGRybSwgXHUwMDI2cmFuZ2UsIGFyZ3MpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTc6MTUuNzI1MDQwNDEzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQwMDQ2NTc2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEhtbSBSYW5nZSBGYXVsdCBUaW1lb3V0IENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHNlcmllcywgYW5kIGl0J3MgbWFraW5nIHNvbWUgY2hhbmdlcyB0byBob3cgd2UgaGFuZGxlIHRpbWVvdXRzIHdpdGggYGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0YC4gU3BlY2lmaWNhbGx5LCBpdCdzIG1vZGlmeWluZyBpdHMgdXNhZ2UgaW4gYSBmZXcga2V5IGRyaXZlcnM6IGBhbWR4ZG5hYCwgYGRybV9ncHVzdm1gLCBhbmQgYG5vdXZlYXVfc3ZtYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhYm91dCB0aGUgdGltZW91dCB2YWx1ZSBiZWluZyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLiBJdCdzIHN3aXRjaGluZyBmcm9tIGFuIGFic29sdXRlIGppZmZpZXMgb3IgcmVtYWluaW5nIGppZmZpZXMgdG8gYSByZWxhdGl2ZSB0aW1lb3V0IOKAkyBzb21ldGhpbmcgbGlrZSBgbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKWAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBzaGlmdC5cblxuVGhlIHBhdGNoIGFsc28gdG91Y2hlcyBvbiBgbW11X2ludGVydmFsX3JlYWRfcmV0cnlgIHdpdGhpbiB0aGUgYERvY3VtZW50YXRpb24vbW0vaG1tLnJzdGAgYW5kIHRoZSBgbm91dmVhdV9zdm0uY2AgZmlsZXMuIEhhbmcgb24sIHRoZSBgbm91dmVhdWAgcGFydCBsb29rcyBsaWtlIGl0J3MganVzdCBhIGxvb3AgcmVmYWN0b3JpbmcsIGFuZCB0aGF0IGNvZGUgYWxyZWFkeSBtYWtlcyB1c2Ugb2YgdGhlIHJhbmdlIG5vdGlmaWVyLiBIbW0sIHNvIG1heWJlIHRoZSBmb2N1cyBpcyBvbiB0aGUgZG9jdW1lbnRhdGlvbiB1cGRhdGUgYW5kIGVuc3VyaW5nIGNvbnNpc3RlbmN5IGFjcm9zcyBhbGwgaW1wbGVtZW50YXRpb25zP1xuXG5SaWdodCwgbGV0J3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgIGZ1bmN0aW9uIGl0c2VsZiBhbmQgaG93IGl0J3MgdXNlZC4gSSdsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoYXQgY29tZXMgdXAuIE5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBhYm91dCBpbXByb3ZpbmcgdGltZW91dCBncmFudWxhcml0eT8gUmVkdWNpbmcgcG90ZW50aWFsIGZvciByYWNlIGNvbmRpdGlvbnM/IE9yIG1heWJlIGl0J3Mgc2ltcGxpZnlpbmcgdGhlIGxvZ2ljIGZvciBzcGVjaWZ5aW5nIHRoZSB0aW1lb3V0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgJ3doeScgYmVoaW5kIHRoaXMgY2hhbmdlIGJlZm9yZSBJIGNhbiBwcm9wZXJseSBhc3Nlc3MgaXQuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW5kIHRyYWNlIGl0cyBjYWxsZXJzIHRvIGdhaW4gYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM0OSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjIxLjEyNTUwNzg2N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTc4MzUyNDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0xNjA9bm9ybWFsIGludGVyZmFjZSBpczo6XFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTE2MS1cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MTYyOiAgaW50IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLFxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdC0xNjMtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0KTtcXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0xNjk9VGhlIGNhbGxlciBtdXN0IG5vdCBob2xkIGBgbW1hcF9yZWFkX2xvY2tgYCBiZWZvcmUgdGhlIGNhbGwuXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0OjE3MDpgYGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KClgYCB0YWtlcyB0aGUgbW1hcCByZWFkIGxvY2sgaW50ZXJuYWxseSBhbmRcXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMTcxLWFsbG93cyBgYGhhbmRsZV9tbV9mYXVsdCgpYGAgdG8gZHJvcCBpdCBkdXJpbmcgZmF1bHQgaGFuZGxpbmcuIFRoaXMgaXMgcmVxdWlyZWRcXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0xODY9VGhlIHVzYWdlIHBhdHRlcm4gaXM6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTIwMy0gYWdhaW46XFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0OjIwNDogICAgICByZXQgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcXHUwMDI2cmFuZ2UsIHRpbWVvdXQpO1xcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdC0yMDUtICAgICAgaWYgKHJldClcXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yMjg9dXBkYXRlLiBUaGUgcmV0cnkgY2hlY2sgbXVzdCB1c2UgdGhlIHNhbWUgbm90aWZpZXIgYW5kIHNlcXVlbmNlIG51bWJlciBzdG9yZWRcXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MjI5OmluIGBgcmFuZ2VgYCBieSBgYGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KClgYC5cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMjMwLVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yMzE9SG9sZGluZyB0aGUgbW1hcCBsb2NrIGFjcm9zcyBITU0gZmF1bHRzXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMjMzLVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDoyMzQ6TW9zdCBjYWxsZXJzIHNob3VsZCB1c2UgYGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgpYGAuIElmIGEgZHJpdmVyXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTIzNS1yZWFsbHkgbmVlZHMgdG8gaG9sZCB0aGUgbW1hcCBsb2NrIGFjcm9zcyB3b3JrIG91dHNpZGUgSE1NLCBpdCBjYW4gdXNlOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yNDA9aW50ZXJmYWNlIGNhbm5vdCBzdXBwb3J0IFZNQXMgd2hvc2UgZmF1bHQgaGFuZGxlcnMgbmVlZCB0byBkcm9wIHRoZSBtbWFwIGxvY2suXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0OjI0MTpOZXcgY2FsbGVycyBzaG91bGQgcHJlZmVyIGBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoKWBgIHVubGVzcyB0aGV5XFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTI0Mi1oYXZlIGEgc3BlY2lmaWMgcmVxdWlyZW1lbnQgdG8ga2VlcCB0aGUgbW1hcCBsb2NrIGhlbGQgYWNyb3NzIHRoZSBjYWxsLlxcbi0tXFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmM9MTAzMT1zdGF0aWMgaW50IGFpZTJfcG9wdWxhdGVfcmFuZ2Uoc3RydWN0IGFtZHhkbmFfZ2VtX29iaiAqYWJvKVxcbi0tXFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMtMTA2NC1cXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9jdHguYzoxMDY1OlxcdHJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZtYXBwLVxcdTAwM2VyYW5nZSwgdGltZW91dCk7XFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMtMTA2Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYz04NDE9ZW51bSBkcm1fZ3B1c3ZtX3NjYW5fcmVzdWx0IGRybV9ncHVzdm1fc2Nhbl9tbShzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg2OC1yZXRyeTpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg2OTpcXHRlcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcXHUwMDI2aG1tX3JhbmdlLCB0aW1lb3V0KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg3MC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYz0xNDQ0PWludCBkcm1fZ3B1c3ZtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xNDkxLVxcdGhtbV9yYW5nZS5obW1fcGZucyA9IHBmbnM7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxNDkyOlxcdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZobW1fcmFuZ2UsIHRpbWVvdXQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTQ5My1cXHRtbXB1dChtbSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jPTE3MDM9aW50IGRybV9ncHVzdm1fcmFuZ2VfZXZpY3Qoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTcyOC1cXHRobW1fcmFuZ2UuaG1tX3BmbnMgPSBwZm5zO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTcyOTpcXHRlcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcXHUwMDI2aG1tX3JhbmdlLCB0aW1lb3V0KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE3MzAtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jPTY1Mj1zdGF0aWMgaW50IG5vdXZlYXVfcmFuZ2VfZmF1bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmMtNjc5LWFnYWluOlxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmM6NjgwOlxcdHJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZyYW5nZSwgdGltZW91dCk7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYy02ODEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9yZWdpb25zLmM9Mzk2PXN0YXRpYyBpbnQgbXNodl9yZWdpb25fcmFuZ2VfZmF1bHQoc3RydWN0IG1zaHZfbWVtX3JlZ2lvbiAqcmVnaW9uLFxcbi0tXFxuZHJpdmVycy9odi9tc2h2X3JlZ2lvbnMuYy00MTUtYWdhaW46XFxuZHJpdmVycy9odi9tc2h2X3JlZ2lvbnMuYzo0MTY6XFx0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXFx1MDAyNnJhbmdlLCAwKTtcXG5kcml2ZXJzL2h2L21zaHZfcmVnaW9ucy5jLTQxNy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbV9vZHAuYz0zMjQ9aW50IGliX3VtZW1fb2RwX21hcF9kbWFfYW5kX2xvY2soc3RydWN0IGliX3VtZW1fb2RwICp1bWVtX29kcCwgdTY0IHVzZXJfdmlydCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW1fb2RwLmMtMzY4LXJldHJ5OlxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW1fb2RwLmM6MzY5OlxcdHJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZyYW5nZSwgdGltZW91dCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbV9vZHAuYy0zNzAtXFx0aWYgKHVubGlrZWx5KHJldCkpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2htbS5oPTEyNT1pbnQgaG1tX3JhbmdlX2ZhdWx0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlKTtcXG5pbmNsdWRlL2xpbnV4L2htbS5oOjEyNjppbnQgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UsXFxuaW5jbHVkZS9saW51eC9obW0uaC0xMjctXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQpO1xcbi0tXFxubGliL3Rlc3RfaG1tLmM9MzkyPXN0YXRpYyBpbnQgZG1pcnJvcl9yYW5nZV9mYXVsdF91bmxvY2tlZChzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTM5OC1cXHR3aGlsZSAodHJ1ZSkge1xcbmxpYi90ZXN0X2htbS5jOjM5OTpcXHRcXHRyZXQgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChyYW5nZSwgdGltZW91dCk7XFxubGliL3Rlc3RfaG1tLmMtNDAwLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5tbS9obW0uYz02ODk9c3RhdGljIGludCBobW1fcmFuZ2VfZmF1bHRfbG9ja2VkKHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLCBib29sICpsb2NrZWQpXFxuLS1cXG5tbS9obW0uYy03NTMtICogVGhlIG1tYXAgbG9jayBtdXN0IGJlIGhlbGQgYnkgdGhlIGNhbGxlciBhbmQgd2lsbCByZW1haW4gaGVsZCBvbiByZXR1cm4uXFxubW0vaG1tLmM6NzU0OiAqIE5ldyB1c2VycyBzaG91bGQgcHJlZmVyIGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KCkgdW5sZXNzIHRoZXlcXG5tbS9obW0uYy03NTUtICogc3BlY2lmaWNhbGx5IG5lZWQgdG8ga2VlcCB0aGUgbW1hcCBsb2NrIGhlbGQgYWNyb3NzIHRoZSBjYWxsLiBUaGlzIGhlbHBlclxcbi0tXFxubW0vaG1tLmM9NzYyPUVYUE9SVF9TWU1CT0woaG1tX3JhbmdlX2ZhdWx0KTtcXG4tLVxcbm1tL2htbS5jLTc2NC0vKipcXG5tbS9obW0uYzo3NjU6ICogaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgLSBmYXVsdCBpbiBhIHJhbmdlIHdpdGggYSByZXRyeSB0aW1lb3V0XFxubW0vaG1tLmMtNzY2LSAqIEByYW5nZTpcXHRhcmd1bWVudCBzdHJ1Y3R1cmVcXG4tLVxcbm1tL2htbS5jLTc4My0gKi9cXG5tbS9obW0uYzo3ODQ6aW50IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLFxcbm1tL2htbS5jLTc4NS1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dClcXG4tLVxcbm1tL2htbS5jLTgyNC19XFxubW0vaG1tLmM6ODI1OkVYUE9SVF9TWU1CT0woaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQpO1xcbm1tL2htbS5jLTgyNi1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2htbS10ZXN0cy5jPTI5MDQ9VEVTVF9GX1RJTUVPVVQoaG1tLCBiZW5jaG1hcmtfdGhwX21pZ3JhdGlvbiwgMTIwKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaG1tLXRlc3RzLmMtMjk2MC0gKiBUZXN0IHRoYXQgSE1NIGNhbiBmYXVsdCBpbiBwYWdlcyBiYWNrZWQgYnkgdXNlcmZhdWx0ZmQgdXNpbmcgdGhlXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaG1tLXRlc3RzLmM6Mjk2MTogKiBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgpIHBhdGggd2l0aCBubyB0aW1lb3V0LiBUaGlzIGV4ZXJjaXNlc1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2htbS10ZXN0cy5jLTI5NjItICogdGhlIGxvY2stZHJvcCByZXRyeSBsb2dpYyBpbiB0aGUgSE1NIGZyYW1ld29yay5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTc6MjMuMTAzODY2MDQ1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4Mzg5NjIwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVGltZW91dCBDaGFuZ2VzIGluIEhNTSBGYXVsdCBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIHBhdGNoIGNoYW5nZXMsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBjb2RlIGlzIG1vZGlmeWluZyBob3cgYGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0YCBpcyBjYWxsZWQgaW4gYSBmZXcgY3JpdGljYWwgYXJlYXM6IGBhbWR4ZG5hYCwgYGRybV9ncHVzdm1gLCBhbmQgYG5vdXZlYXVfc3ZtYC4gU3BlY2lmaWNhbGx5LCB0aGV5J3JlIGNoYW5naW5nIHRoZSB0aW1lb3V0IHBhcmFtZXRlci4gUHJldmlvdXNseSwgaXQgd2FzIGVpdGhlciBhbiBhYnNvbHV0ZSBqaWZmaWVzIHZhbHVlIG9yLCBhdCBsZWFzdCwgdGhlICpyZW1haW5pbmcqIGppZmZpZXMgdW50aWwgYSB0aW1lb3V0LiBOb3csIGl0J3MgYmVpbmcgY29udmVydGVkIHRvIGEgKnJlbGF0aXZlKiB0aW1lb3V0LCB3aGljaCBpcyBpbnRlcmVzdGluZy5cblxuV2FpdCBhIHNlY29uZC4uLiBkb2VzIGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAgYWN0dWFsbHkgZXhwZWN0IGEgcmVsYXRpdmUgdGltZW91dD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaW4gYG1tL2htbS5jYC4gSSBoYXZlIHRvIGJlIHN1cmUgdGhlIGNoYW5nZSBpcyBjb3JyZWN0LiBJdCdzIGVhc3kgdG8gbWFrZSBhIHN1YnRsZSBtaXN0YWtlIHRoZXJlIGFuZCBpbnRyb2R1Y2UgYSBzZXJpb3VzIGlzc3VlLiBHb3R0YSBjb25maXJtIHRoZSBzZW1hbnRpY3Mgb2YgdGhhdCB0aW1lb3V0IHBhcmFtZXRlciBiZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTkxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjI2Ljg4Nzc2MzY4M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTcyNjA4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9obW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9obW0uYz02ODk9c3RhdGljIGludCBobW1fcmFuZ2VfZmF1bHRfbG9ja2VkKHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLCBib29sICpsb2NrZWQpXFxuLS1cXG5tbS9obW0uYy03NTMtICogVGhlIG1tYXAgbG9jayBtdXN0IGJlIGhlbGQgYnkgdGhlIGNhbGxlciBhbmQgd2lsbCByZW1haW4gaGVsZCBvbiByZXR1cm4uXFxubW0vaG1tLmM6NzU0OiAqIE5ldyB1c2VycyBzaG91bGQgcHJlZmVyIGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KCkgdW5sZXNzIHRoZXlcXG5tbS9obW0uYy03NTUtICogc3BlY2lmaWNhbGx5IG5lZWQgdG8ga2VlcCB0aGUgbW1hcCBsb2NrIGhlbGQgYWNyb3NzIHRoZSBjYWxsLiBUaGlzIGhlbHBlclxcbi0tXFxubW0vaG1tLmM9NzYyPUVYUE9SVF9TWU1CT0woaG1tX3JhbmdlX2ZhdWx0KTtcXG4tLVxcbm1tL2htbS5jLTc2NC0vKipcXG5tbS9obW0uYzo3NjU6ICogaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgLSBmYXVsdCBpbiBhIHJhbmdlIHdpdGggYSByZXRyeSB0aW1lb3V0XFxubW0vaG1tLmMtNzY2LSAqIEByYW5nZTpcXHRhcmd1bWVudCBzdHJ1Y3R1cmVcXG4tLVxcbm1tL2htbS5jLTc4My0gKi9cXG5tbS9obW0uYzo3ODQ6aW50IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLFxcbm1tL2htbS5jLTc4NS1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dClcXG4tLVxcbm1tL2htbS5jLTgyNC19XFxubW0vaG1tLmM6ODI1OkVYUE9SVF9TWU1CT0woaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQpO1xcbm1tL2htbS5jLTgyNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTc6MjYuOTQzNDk1Mjc5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1MDk2MzcxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgbW0vaG1tLmNgIC0gTGluZSA3ODQqKlxuXG5Pa2F5LCBJJ20gdGhpbmtpbmcgd2UgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIG1lbW9yeSBtYW5hZ2VtZW50LCBzbyBsZXQncyB6ZXJvIGluIG9uIGBtbS9obW0uY2AuIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBsaW5lIDc4NCDigJMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHBhcnRpY3VsYXIgc3Vic3lzdGVtIGlzIGhhbmRsaW5nIHRoaW5ncy4gSSdtIGFzc3VtaW5nIGl0J3MgcHJvYmFibHkgcmVsYXRlZCB0byBhbGxvY2F0aW9uLCBkZWFsbG9jYXRpb24sIG9yIHBvc3NpYmx5IGV2ZW4gdHJhY2tpbmcgbWV0YWRhdGEsIGdpdmVuIHRoZSB0eXBpY2FsIHBhdHRlcm5zIEkndmUgc2VlbiBpbiB0aGVzZSBraW5kcyBvZiBrZXJuZWwgbWVtb3J5IG1hbmFnZW1lbnQgaW1wbGVtZW50YXRpb25zLiBMZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5ICpoYXBwZW5pbmcqIHRoZXJlLiBIb3BlZnVsbHksIHRoZXJlIGFyZSBzb21lIGNsYXJpZnlpbmcgY29tbWVudHMgYXJvdW5kIHRoYXQgYXJlYSFcblxuXG4iLCJJbnB1dFRva2VucyI6NzkxNCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjMwLjI5NDQ2MDcwMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2htbS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc2NCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc2NDpcXHQvKipcXG4gNzY1OlxcdCAqIGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0IC0gZmF1bHQgaW4gYSByYW5nZSB3aXRoIGEgcmV0cnkgdGltZW91dFxcbiA3NjY6XFx0ICogQHJhbmdlOlxcdGFyZ3VtZW50IHN0cnVjdHVyZVxcbiA3Njc6XFx0ICogQHRpbWVvdXQ6XFx0dGltZW91dCBpbiBqaWZmaWVzIGZvciBpbnRlcm5hbCAtRUJVU1kgcmV0cmllcywgb3IgMCB0byByZXRyeVxcbiA3Njg6XFx0ICpcXHRcXHRpbmRlZmluaXRlbHlcXG4gNzY5OlxcdCAqXFxuIDc3MDpcXHQgKiBUaGUgY2FsbGVyIG11c3Qgbm90IGhvbGQgdGhlIG1tYXAgbG9jay4gVGhlIGZ1bmN0aW9uIHRha2VzIHRoZSBtbWFwIHJlYWRcXG4gNzcxOlxcdCAqIGxvY2sgaW50ZXJuYWxseSBhbmQgYWxsb3dzIGhhbmRsZV9tbV9mYXVsdCgpIHRvIGRyb3AgaXQgZHVyaW5nIGZhdWx0cy4gSWZcXG4gNzcyOlxcdCAqIHRoZSBtbWFwIGxvY2sgaXMgZHJvcHBlZCBvciB0aGUgcmFuZ2UgaXMgaW52YWxpZGF0ZWQsIHRoZSBmdW5jdGlvbiByZWZyZXNoZXNcXG4gNzczOlxcdCAqIHJhbmdlLVxcdTAwM2Vub3RpZmllcl9zZXEgYW5kIHJlc3RhcnRzIHRoZSB3YWxrIGludGVybmFsbHkuXFxuIDc3NDpcXHQgKlxcbiA3NzU6XFx0ICogUGFzc2luZyAwIGZvciBAdGltZW91dCByZXRyaWVzIGluZGVmaW5pdGVseS4gQSBub24temVybyBAdGltZW91dCBpcyBhIGNhbGxlclxcbiA3NzY6XFx0ICogcG9saWN5IGxpbWl0IGZvciByZXBlYXRlZCBtbXUtbm90aWZpZXIgaW52YWxpZGF0aW9uIHJldHJpZXMuIEhNTSBkb2VzIG5vdFxcbiA3Nzc6XFx0ICogaW50ZXJydXB0IHBhZ2UgZmF1bHQgaGFuZGxpbmcgd2hlbiB0aGUgdGltZW91dCBleHBpcmVzLCBidXQgcmV0dXJucyAtRUJVU1lcXG4gNzc4OlxcdCAqIGlmIHRoZSByZXRyeSBidWRnZXQgaXMgZXhoYXVzdGVkIGJlZm9yZSBhIHN0YWJsZSByYW5nZSBpcyBvYnRhaW5lZC5cXG4gNzc5OlxcdCAqXFxuIDc4MDpcXHQgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBvbmUgb2YgdGhlIGVycm9yIGNvZGVzIGRvY3VtZW50ZWQgZm9yXFxuIDc4MTpcXHQgKiBobW1fcmFuZ2VfZmF1bHQoKS4gLUVJTlRSIGlzIHJldHVybmVkIGlmIG1tYXBfbG9jayBhY3F1aXNpdGlvbiBpc1xcbiA3ODI6XFx0ICogaW50ZXJydXB0ZWQgb3IgYSBmYXRhbCBzaWduYWwgaXMgcGVuZGluZyBkdXJpbmcgcmV0cnkgaGFuZGxpbmcuXFxuIDc4MzpcXHQgKi9cXG4gNzg0OlxcdGludCBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSxcXG4gNzg1OlxcdFxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0KVxcbiA3ODY6XFx0e1xcbiA3ODc6XFx0XFx0c3RydWN0IG1tX3N0cnVjdCAqbW0gPSByYW5nZS1cXHUwMDNlbm90aWZpZXItXFx1MDAzZW1tO1xcbiA3ODg6XFx0XFx0dW5zaWduZWQgbG9uZyBkZWFkbGluZSA9IDA7XFxuIDc4OTpcXHRcXHRib29sIGxvY2tlZCA9IGZhbHNlO1xcbiA3OTA6XFx0XFx0aW50IHJldDtcXG4gNzkxOlxcdFxcbiA3OTI6XFx0XFx0ZG8ge1xcbiA3OTM6XFx0XFx0XFx0aWYgKGZhdGFsX3NpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxcbiA3OTQ6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5UUjtcXG4gNzk1OlxcdFxcbiA3OTY6XFx0XFx0XFx0aWYgKHRpbWVvdXQpIHtcXG4gNzk3OlxcdFxcdFxcdFxcdC8qXFxuIDc5ODpcXHRcXHRcXHRcXHQgKiBJZiB0aGUgcHJldmlvdXMgZmF1bHQgZHJvcHBlZCBtbWFwX2xvY2ssIHRoZW4gdGhlIGZhdWx0XFxuIDc5OTpcXHRcXHRcXHRcXHQgKiBoYW5kbGVyIG1hZGUgcHJvZ3Jlc3MuIFJlc3RhcnQgdGhlIHJldHJ5IHRpbWVvdXQgaW4gdGhhdFxcbiA4MDA6XFx0XFx0XFx0XFx0ICogY2FzZSwgYnV0IGtlZXAgdGhlIGV4aXN0aW5nIGRlYWRsaW5lIGZvciBvcmRpbmFyeSAtRUJVU1lcXG4gODAxOlxcdFxcdFxcdFxcdCAqIHJldHJpZXMuXFxuIDgwMjpcXHRcXHRcXHRcXHQgKi9cXG4gODAzOlxcdFxcdFxcdFxcdGlmICghbG9ja2VkKVxcbiA4MDQ6XFx0XFx0XFx0XFx0XFx0ZGVhZGxpbmUgPSBqaWZmaWVzICsgdGltZW91dDtcXG4gODA1OlxcdFxcbiA4MDY6XFx0XFx0XFx0XFx0aWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgZGVhZGxpbmUpKVxcbiA4MDc6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4gODA4OlxcdFxcdFxcdH1cXG4gODA5OlxcdFxcbiA4MTA6XFx0XFx0XFx0cmFuZ2UtXFx1MDAzZW5vdGlmaWVyX3NlcSA9XFxuIDgxMTpcXHRcXHRcXHRcXHRtbXVfaW50ZXJ2YWxfcmVhZF9iZWdpbihyYW5nZS1cXHUwMDNlbm90aWZpZXIpO1xcbiA4MTI6XFx0XFxuIDgxMzpcXHRcXHRcXHRyZXQgPSBtbWFwX3JlYWRfbG9ja19raWxsYWJsZShtbSk7XFxuIDgxNDpcXHRcXHRcXHRpZiAocmV0KVxcbiA4MTU6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gODE2OlxcdFxcbiA4MTc6XFx0XFx0XFx0bG9ja2VkID0gdHJ1ZTtcXG4gODE4OlxcdFxcdFxcdHJldCA9IGhtbV9yYW5nZV9mYXVsdF9sb2NrZWQocmFuZ2UsIFxcdTAwMjZsb2NrZWQpO1xcbiA4MTk6XFx0XFx0XFx0aWYgKGxvY2tlZClcXG4gODIwOlxcdFxcdFxcdFxcdG1tYXBfcmVhZF91bmxvY2sobW0pO1xcbiA4MjE6XFx0XFx0fSB3aGlsZSAocmV0ID09IC1FQlVTWSk7XFxuIDgyMjpcXHRcXG4gODIzOlxcdFxcdHJldHVybiByZXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjMwLjI5NDU0ODU4MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjc0NzEwMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgIEZ1bmN0aW9uKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0IHNlZW1zIGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAgZXhwZWN0cyBhIHJlbGF0aXZlIHRpbWVvdXQgdmFsdWUsIGV4cHJlc3NlZCBpbiBqaWZmaWVzLCBhbmQgdGhlbiBpbnRlcm5hbGx5IGNhbGN1bGF0ZXMgdGhlIGFjdHVhbCBkZWFkbGluZS4gVGhlIHBhdGNoIGhlcmUgYWRkcmVzc2VzIHNvbWUgY2FsbGVycyB0aGF0IHdlcmUsIGNyaXRpY2FsbHksIG1pc2ludGVycHJldGluZyB0aGF0IGFuZCBwYXNzaW5nIGluIGVpdGhlciBhbiBhYnNvbHV0ZSBqaWZmaWVzIHZhbHVlIG9yIGEgdmFsdWUgcmVwcmVzZW50aW5nIHJlbWFpbmluZyBqaWZmaWVzLiBIbW0sIHRoaXMgcmFpc2VzIGEgcXVlc3Rpb24uLi5pcyB0aGlzIGZ1bmN0aW9uIGEgbmV3ZXIgYWRkaXRpb24gdG8gdGhlIGtlcm5lbD8gSSBzaG91bGQgcXVpY2tseSBjaGVjayBpdHMgcmV2aXNpb24gaGlzdG9yeSB0byBjb25maXJtIG15IGFzc3VtcHRpb24sIGFzIHRoYXQgd291bGQgZ2l2ZSBpbXBvcnRhbnQgY29udGV4dCBmb3IgdGhpcyBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAzNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTc6MzMuNjYyMDIxNjUyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTY2OTcxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2htbS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvaG1tLmg9MTI1PWludCBobW1fcmFuZ2VfZmF1bHQoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UpO1xcbmluY2x1ZGUvbGludXgvaG1tLmg6MTI2OmludCBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSxcXG5pbmNsdWRlL2xpbnV4L2htbS5oLTEyNy1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjMzLjcxNzY5NjYwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDcwMjczODU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVjZW50IEFkZGl0aW9uIG9mIGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgIGNoYW5nZS4gSSBzZWUgaXQncyBhIHJlY2VudCBhZGRpdGlvbiwgYW5kIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkcmVzc2luZyBpdHMgdXNhZ2UgYWNyb3NzIHNldmVyYWwgZHJpdmVycy4gSW50ZXJlc3RpbmcuIFRoZSBwYXRjaCB0b3VjaGVzOiBgZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmNgLCBgZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uY2AsIGFuZCBgZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uY2AuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBhcmUgdGhlc2UgZHJpdmVycyBldmVuIHJlbGV2YW50IGluIGEgdmlydHVhbGl6ZWQgY29udGV4dCwgY29uc2lkZXJpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHRpbWVvdXQ/IGBkcm1fZ3B1c3ZtLmNgIGlzIHBhcnQgb2YgRFJNIEdQVSBTVk0sIHdoaWNoIGltcGxpZXMgaXQgbWlnaHQgYmUgdXNlZCBieSBhIGZldyBkcml2ZXJzLiBgbm91dmVhdV9zdm0uY2AgaXMgcGFydCBvZiBOb3V2ZWF1LCBhbmQgYGFpZTJfY3R4LmNgIGJlbG9uZ3MgdG8gdGhlIEFNRCBYRE5BIGRyaXZlci5cblxuU3BlY2lmaWNhbGx5IGZvciBgZHJtX2dwdXN2bS5jYCwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQncyBldmVuIGNvbXBpbGVkIGluLiBBbHJpZ2h0LCB0aGUgY29tcGlsYXRpb24gaXMgY29uZGl0aW9uYWwgb24gYENPTkZJR19EUk1fR1BVU1ZNYC4gR29vZCwgbm93IEkga25vdyB3aGVyZSB0byBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Mzc2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjM4LjE4Nzk3MjU0NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyMDQzNjg5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFJNX0dQVVNWTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0yMjE9Y29uZmlnIFJVU1RfRFJNX0dQVVZNXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMjctXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjI4OmNvbmZpZyBEUk1fR1BVU1ZNXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjI5LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjQwLjEwODQxNDE4NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzMxMDk3NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgRFJNX0dQVVNWTSBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3Mga2lja3Mgb2ZmIHdpdGggYSBzcGVjaWZpYywgYW5kIHF1aXRlIGZvY3VzZWQsIGdvYWw6IHRvIHVuZGVyc3RhbmQgdGhlIHVzYWdlIHBhdHRlcm5zIHN1cnJvdW5kaW5nIGBEUk1fR1BVU1ZNYC4gVGhpcyBpc24ndCBhIGNhc3VhbCBleHBsb3JhdGlvbjsgaXQncyBhIHRhcmdldGVkIHF1ZXJ5LiBXZSdyZSBub3QganVzdCBsb29raW5nIGZvciAqYW55KiB1c2Ugb2YgdGhlIERSTSBzdWJzeXN0ZW0sIGJ1dCBzcGVjaWZpY2FsbHkgaG93IGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCwgb3IgYmVpbmcgaW5mbHVlbmNlZCBieSwgYEdQVVNWTWAuIFRoaXMgc3VnZ2VzdHMgYSBwcmUtZXhpc3RpbmcgdW5kZXJzdGFuZGluZyBvZiBib3RoIERSTSAoRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyKSBhbmQsIHByZXN1bWFibHksIHRoZSBHUFUtYmFzZWQgdmlydHVhbCBtZW1vcnkgKEdQVVNWTSkgY29uY2VwdC4gVGhlIGltcGxpZWQgcXVlc3Rpb24gaXMgXCJXaG8ncyB1c2luZyB0aGlzPyBXaGVyZSBpcyBpdCBiZWluZyB1dGlsaXplZD8gSW4gd2hhdCBjb250ZXh0P1wiIFRoaXMgc3Ryb25nbHkgaGludHMgYXQgYW4gaW52ZXN0aWdhdGlvbiBpbnRvIHBvdGVudGlhbCBpbnRlZ3JhdGlvbiBpc3N1ZXMsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBvciBwZXJoYXBzIGV2ZW4gY3Jvc3MtbW9kdWxlIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIGtlcm5lbCdzIGdyYXBoaWNzIHN0YWNrLiBJdCBjb3VsZCBhbHNvIHJlbGF0ZSB0byBkZWJ1Z2dpbmcgYSBzcGVjaWZpYyBpc3N1ZSwgb3IgZ2FpbmluZyBhbiBvdmVydmlldyBvZiBob3cgdGhhdCBwYXJ0IG9mIHRoZSBncmFwaGljcyBzeXN0ZW0gaXMgdXNlZC4gVGhlIGdvYWwgaXMgdG8gb2J0YWluIGNvbnRleHR1YWwgaW5mb3JtYXRpb24uIFRoZSBcIkxldCdzIHNlZVwiIGltcGxpZXMgYSBtZXRob2RpY2FsLCBkYXRhLWRyaXZlbiBhcHByb2FjaCB0byB0aGUgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk0NywiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjQzLjQzOTUxNDUxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzU3NDIyMDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBEUk1fR1BVU1ZNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnPTI9Y29uZmlnIERSTV9YRVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctNDEtXFx0c2VsZWN0IERSTV9FWEVDXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6NDI6XFx0c2VsZWN0IERSTV9HUFVTVk0gaWYgIVVNTFxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTQzLVxcdHNlbGVjdCBEUk1fR1BVVk1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnPTc5PWNvbmZpZyBEUk1fWEVfR1BVU1ZNXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy04NS1cXHRzZWxlY3QgREVWSUNFX1BSSVZBVEVcXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzo4NjpcXHRzZWxlY3QgRFJNX0dQVVNWTVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTg3LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTc6NDUuMTk2OTQxNDU1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNzI4MTA4MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBHUFUgRHJpdmVycyBpbiBhIFZpcnR1YWwgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyB0aGUgYERSTV9YRWAgZHJpdmVyLCBJbnRlbCdzIFhlIGRyaXZlciwgc2VlbXMgdG8gZGVwZW5kIG9uIGBEUk1fR1BVU1ZNYC4gSSdtIHdvbmRlcmluZyBpZiB3ZSBjYW4gZnV6eiB0aGVzZSBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgYERSTV9YRWAgYW5kIGBub3V2ZWF1YCwgd2l0aGluIGEgVk0uIFRoZSBnZW5lcmFsIGNoYWxsZW5nZSB3aXRoIEdQVSBkcml2ZXJzIGlzIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmN5LiBUaGV5IG9mdGVuIG5lZWQgc3BlY2lmaWMgaGFyZHdhcmUgdG8gZnVuY3Rpb24uIEhvd2V2ZXIsIHNvbWUgRFJNIGRyaXZlcnMgYXJlIGFjY2Vzc2libGUgYW5kIGFsbG93IElPQ1RMIGNhbGxzIGV2ZW4gd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLCBvciB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgYHZrbXNgLiBCdXQsIGFzIEkgcmVjYWxsLCBib3RoIGB4ZWAgYW5kIGBub3V2ZWF1YCB1c3VhbGx5IHJlcXVpcmUgUENJIGRldmljZXMsIHdoaWNoIGNvbXBsaWNhdGVzIHRoaW5ncy5cblxuTm93LCBJIGtub3cgU3l6a2FsbGVyIGNhbiBmdXp6IERSTSBkcml2ZXJzLCBlaXRoZXIgYnkgdXNpbmcgYHN5el91c2JfY29ubmVjdGAsIGluamVjdGluZyBQQ0kgZGV2aWNlcywgb3IgYnkganVzdCBvcGVuaW5nIGEgYC9kZXYvZHJpL3JlbmRlckQqYCBkZXZpY2UgZmlsZSBpZiBpdCBleGlzdHMuIEJ1dCBnZW5lcmFsbHksIHRoZSBkcml2ZXIgcHJvYmUgd2lsbCBmYWlsIHdpdGhvdXQgdGhlIGNvcnJlY3QgaGFyZHdhcmUsIHByZXZlbnRpbmcgdGhlIGNyZWF0aW9uIG9mIHRoZSBuZWNlc3NhcnkgZGV2aWNlIG5vZGVzLlxuXG5IbW0sIGRvZXMgU3l6a2FsbGVyIGhhdmUgc3BlY2lmaWMgc3VwcG9ydCBmb3IgUENJIGZ1enppbmc/IElzIGl0IHVzaW5nIGBzeXpfcGNpX2Nvbm5lY3RgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJIHdhcyB0aGlua2luZyBpdCdzIHByb2JhYmx5IHVzaW5nIGBzeXpfa3ZtX3NldHVwX2NwdWAgb3Igc29tZXRoaW5nIGxpa2UgYHN5el9wY2lfLi4uYCBCdXQgbXkgcmVjb2xsZWN0aW9uIHNlZW1zIHNwb3R0eS4gSXQgZG9lcyBoYXZlICpzb21lKiBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMsIGJ1dCBpdCBmZWVscyBsaW1pdGVkLlxuXG5BbHNvLCBJJ20gbm90aW5nIHRoZSBtZW50aW9uIG9mIGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAsIHdoaWNoIGlzIGFsc28gdXNlZCBpbiBgbGliL3Rlc3RfaG1tLmNgLiBTaG91bGQgSSBjaGVjayBpZiBgbGliL3Rlc3RfaG1tLmNgIGhhcyBiZWVuIG1vZGlmaWVkPyBObywgaXQgbG9va3MgbGlrZSBpdCBoYXNuJ3QuIFRoaXMgcGF0Y2ggb25seSB0b3VjaGVzIGBhaWUyX2N0eC5jYCwgYGRybV9ncHVzdm0uY2AsIGFuZCBgbm91dmVhdV9zdm0uY2AuXG5cbldhaXQsIGBkcm1fZ3B1c3ZtLmNgIGlzIGNvcmUgRFJNIGNvZGUgZm9yIEdQVSBTVk0sIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJcyBpdCBldmVuIHdvcnRoIGZ1enppbmc/IElmIHRoZSBjb2RlIHJlbGllcyBvbiBzcGVjaWZpYyBBTUQgWEROQSwgSW50ZWwgWGUsIG9yIE52aWRpYSBoYXJkd2FyZSwgaXQncyBsaWtlbHkgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBWTS4gQnV0LCBpZiBgbm91dmVhdWAgaXMgZm9yIE52aWRpYSwgd2UncmUgdGFsa2luZyBhYm91dCB0ZXN0aW5nIGl0IHdpdGggYSB2aXJ0dWFsIEdQVS5cblxuV2hhdCBhYm91dCBgZHJtX2dwdXN2bS5jYD8gSXQncyBzZWxlY3RlZCBieSBgRFJNX1hFYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIENhbiB3ZSB0ZXN0IGBEUk1fWEVgIGluIGEgVk0/IFdpdGhvdXQgSW50ZWwgWGUgaGFyZHdhcmUsIGl0IGRvZXNuJ3Qgc2VlbSBsaWtlbHkuIEJ1dCB0aGVuIGFnYWluLCBTeXprYWxsZXIgZG9lcyBoYXZlIGB2a21zYCBmb3IgRFJNIGZ1enppbmcuLi4gRG9lcyBgdmttc2AgYWN0dWFsbHkgdXNlIGBEUk1fR1BVU1ZNYD8gSSdsbCBuZWVkIHRvIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDQyMiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1Nzo1My41Njk3NTQ1NjFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NzQ0MDQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRFJNX0dQVVNWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdmttc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTc6NTMuNjI0NTA2MDk2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3MjgzNjQ5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGFwcHJvYWNoIGZ1enppbmcgYG5vdXZlYXVgLiBUaGUgaW5pdGlhbCBpZGVhIHdhcyB0byBzZWUgaWYgd2UgY291bGQgcHJvYmUgaXQgd2l0aCBhIGZha2UgUENJIGRldmljZS4gU3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcyB2aWEgYHN5el9wY2lfZGV2aWNlX2FkZGAg4oCTIG9yIGF0IGxlYXN0LCBzb21lIGZvcmtzIGRvLiBCdXQgdGhhdCdzIG5vdCB0aGUgcHJpbWFyeSByb3V0ZS4gSSByZWNhbGwgbm93IHRoYXQgc3l6a2FsbGVyIGdlbmVyYWxseSB1c2VzIGBzeXpfdXNiX2Nvbm5lY3RgIGZvciBVU0IgYW5kIGBzeXpfODAyMTFfLi4uYCBmb3IgV2lGaS4gRm9yIHRoZSBtb3N0IHBhcnQsIFBDSSBmdXp6aW5nIGlzbid0IGEgcm9idXN0LCBjb3JlIGNhcGFiaWxpdHkgb2YgdmFuaWxsYSBTeXprYWxsZXIsIGVzcGVjaWFsbHkgZm9yIHNvbWV0aGluZyBhcyBjb21wbGV4IGFzIGEgR1BVLlxuXG5Ib3dldmVyLCB0aGlzIHBhdGNoIGZpeGVzIGFuIGlzc3VlIHdpdGhpbiBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgLiBTbywgdGhlIHF1ZXN0aW9uIHJlbWFpbnM6IGlzIGl0IHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz9cblxuTGV0J3MgcmUtZXhhbWluZSB0aGUgY2hhbmdlZCBmaWxlcy4gV2UndmUgZ290IGNoYW5nZXMgaW4gYGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jYCwgYGRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNgLCBhbmQgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jYC4gVGhlIGNvcmUgcXVlc3Rpb24gbm93IGlzLCBhcmUgdGhlc2UgZHJpdmVycyBldmVuIHJlYWNoYWJsZSB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmU/IElmIHRoZXkgYXJlIGhhcmR3YXJlLWRlcGVuZGVudCwgdGhlbiBpdCBjb3VsZCBiZSBhIGRlYWQgZW5kLlxuXG5Ib2xkIG9uLCB0aG91Z2guIGBkcm1fZ3B1c3ZtLmNgIGlzIGEgKmdlbmVyaWMqIGxpYnJhcnkgZm9yIERSTSBkcml2ZXJzLiBUaGF0IGNoYW5nZXMgdGhpbmdzLiBFdmVuIGlmIGN1cnJlbnRseSBvbmx5IHNlbGVjdGVkIGJ5IGBEUk1fWEVgLCB0aGlzIGlzIGNvcmUgZnVuY3Rpb25hbGl0eSB0byBEUk0gYXMgYSB3aG9sZS4gVGhhdCBpbmNyZWFzZXMgdGhlIHBvc3NpYmlsaXR5IG9mIHRyaWdnZXJpbmcgc29tZXRoaW5nLCBwb3RlbnRpYWxseSB0aHJvdWdoIG11bHRpcGxlIGRyaXZlcnMuXG5cbk9rYXksIG5leHQgc3RlcCBpcyB0byBtYWtlIHN1cmUgdGhhdCBgbm91dmVhdWAgaXMgZW5hYmxlZCBpbiBTeXprYWxsZXIuIFllcywgaXQgbG9va3MgbGlrZSBgQ09ORklHX0RSTV9OT1VWRUFVYCBpcyBpbmRlZWQgZW5hYmxlZC4gU28gdGhlIG5leHQgc3RlcCBpczogY2FuIHN5emthbGxlciByZWFjaCBgbm91dmVhdV9zdm0uY2A/IEkgbmVlZCB0byBjaGVjayBob3cgYG5vdXZlYXVfc3ZtLmNgIGdldHMgaW5pdGlhbGl6ZWQuIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBzb3VyY2UgY29kZSB0byBmaW5kIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1MTUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTg6MDAuMzUyODczOTE5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzI0ODI5NTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5vdXZlYXVfc3ZtX2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYz02MzA9bm91dmVhdV9kcm1fZGV2aWNlX2luaXQoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTY3OC1cXHRub3V2ZWF1X2h3bW9uX2luaXQoZGV2KTtcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jOjY3OTpcXHRub3V2ZWF1X3N2bV9pbml0KGRybSk7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYy02ODAtXFx0bm91dmVhdV9kbWVtX2luaXQoZHJtKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmM9MzE2PW5vdXZlYXVfc3ZtbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jLTMyMC1cXHRzdHJ1Y3Qgbm91dmVhdV9zdm1tICpzdm1tO1xcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmM6MzIxOlxcdHN0cnVjdCBkcm1fbm91dmVhdV9zdm1faW5pdCAqYXJncyA9IGRhdGE7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYy0zMjItXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmM9MTAzMz12b2lkXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYzoxMDM0Om5vdXZlYXVfc3ZtX2luaXQoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0pXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYy0xMDM1LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmg9OT1zdHJ1Y3Qgbm91dmVhdV9zdm1tIHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmgtMjAtI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9OT1VWRUFVX1NWTSlcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5oOjIxOnZvaWQgbm91dmVhdV9zdm1faW5pdChzdHJ1Y3Qgbm91dmVhdV9kcm0gKik7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uaC0yMi12b2lkIG5vdXZlYXVfc3ZtX2Zpbmkoc3RydWN0IG5vdXZlYXVfZHJtICopO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uaD0zNT12b2lkIG5vdXZlYXVfcGZuc19tYXAoc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5oLTM4LSNlbHNlIC8qIElTX0VOQUJMRUQoQ09ORklHX0RSTV9OT1VWRUFVX1NWTSkgKi9cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5oOjM5OnN0YXRpYyBpbmxpbmUgdm9pZCBub3V2ZWF1X3N2bV9pbml0KHN0cnVjdCBub3V2ZWF1X2RybSAqZHJtKSB7fVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmgtNDAtc3RhdGljIGlubGluZSB2b2lkIG5vdXZlYXVfc3ZtX2Zpbmkoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0pIHt9XFxuLS1cXG5pbmNsdWRlL3VhcGkvZHJtL25vdXZlYXVfZHJtLmg9NDM1PXN0cnVjdCBkcm1fbm91dmVhdV9nZXRfemN1bGxfaW5mbyB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvZHJtL25vdXZlYXVfZHJtLmgtNTE3LVxcbmluY2x1ZGUvdWFwaS9kcm0vbm91dmVhdV9kcm0uaDo1MTg6c3RydWN0IGRybV9ub3V2ZWF1X3N2bV9pbml0IHtcXG5pbmNsdWRlL3VhcGkvZHJtL25vdXZlYXVfZHJtLmgtNTE5LVxcdF9fdTY0IHVubWFuYWdlZF9hZGRyO1xcbi0tXFxuaW5jbHVkZS91YXBpL2RybS9ub3V2ZWF1X2RybS5oPTUyMz1zdHJ1Y3QgZHJtX25vdXZlYXVfc3ZtX2JpbmQge1xcbi0tXFxuaW5jbHVkZS91YXBpL2RybS9ub3V2ZWF1X2RybS5oLTU2Ny1cXG5pbmNsdWRlL3VhcGkvZHJtL25vdXZlYXVfZHJtLmg6NTY4OiNkZWZpbmUgRFJNX0lPQ1RMX05PVVZFQVVfU1ZNX0lOSVQgICAgICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fTk9VVkVBVV9TVk1fSU5JVCwgc3RydWN0IGRybV9ub3V2ZWF1X3N2bV9pbml0KVxcbmluY2x1ZGUvdWFwaS9kcm0vbm91dmVhdV9kcm0uaC01NjktI2RlZmluZSBEUk1fSU9DVExfTk9VVkVBVV9TVk1fQklORCAgICAgICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9OT1VWRUFVX1NWTV9CSU5ELCBzdHJ1Y3QgZHJtX25vdXZlYXVfc3ZtX2JpbmQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU4OjAyLjA3NzcxMTM1NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTY0OTQ4Mzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgUmVhc29uaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgRFJNX0lPQ1RMX05PVVZFQVVfU1ZNX0lOSVRgIHRoaW5nIOKAkyByaWdodCwgaXQncyBhbiBpb2N0bC4gVG8gZXZlbiAqdXNlKiB0aGF0LCBJJ2QgbmVlZCB0byBoYXZlIGEgbm91dmVhdSBkZXZpY2Ugb3Blbi4gVGhhdOKAmXMgdGhlIHN0YXJ0aW5nIHBvaW50LiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gSSBnZXQgYSBub3V2ZWF1IGRldmljZSBvcGVuZWQgaW4gdGhlIGZpcnN0IHBsYWNlLCBldmVuIGlmIHRoZXJlJ3Mgbm8gcGh5c2ljYWwgaGFyZHdhcmU/IE5vLCB0aGF0IHdvbid0IHdvcmssIGJlY2F1c2UgdGhlIGRyaXZlciBwcm9iZSB3aWxsIGVycm9yIG91dCBpZiBpdCBkb2Vzbid0IGZpbmQgYW4gTnZpZGlhIFBDSSBkZXZpY2UuXG5cbkhtbSwgbWF5YmUgdGhlcmUncyBzb21lIGtpbmQgb2Ygc3ludGhldGljIFBDSSBkZXZpY2UgaW5qZWN0aW9uIGluIHRoZSBmdXp6ZXIgdGhhdCBJJ20gb3Zlcmxvb2tpbmc/IE5vcGUsIHN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBnZW5lcmljIFBDSSBmdXp6ZXIgbGlrZSB0aGF0LiBTbyB0aGF0J3Mgb3V0LlxuXG5XYWl0LCBob2xkIG9uLCB3aGF0IGFib3V0IGB0ZXN0X2htbWA/IElzIHRoYXQgcmVsZXZhbnQgaGVyZT8gTGV0IG1lIGNoZWNr4oCmIGFoLCByaWdodCwgYGxpYi90ZXN0X2htbS5jYCBpcyBqdXN0IGEgdGVzdCBtb2R1bGUgZm9yIEhNTS4gT2theSwgZG9lcyB0aGUgcGF0Y2ggaW4gcXVlc3Rpb24gYWN0dWFsbHkgbW9kaWZ5IHRoYXQgZmlsZT8gTm8sIGl0IGRvZXNuJ3QuXG5cbk9rYXksIGxldCdzIGJhY2sgdXAuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSB0b3VjaGluZyBgZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmNgLCBgZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uY2AsIGFuZCBtb3N0IGltcG9ydGFudGx5LCBgZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uY2AuXG5cbkFoYSEgYGRybV9ncHVzdm0uY2Ag4oCTIGlzIHRoaXMgZXZlbiByZWxldmFudCB0byBnZXR0aW5nIGEgbm91dmVhdSBkZXZpY2Ugb3Blbj8gSSBzaG91bGQgc2VlIGlmIGBkcm1fZ3B1c3ZtLmNgIGlzIHVzZWQgYnkgYW55dGhpbmcgZWxzZSwgYW5kIGlmIHNvLCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzA1LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU4OjA3LjA0MjY2Mjc1NFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzNDQ2MDM0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcm1fZ3B1c3ZtX1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE1OTIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbi5jbGFuZy1mb3JtYXQ9NzE9Rm9yRWFjaE1hY3JvczpcXG4tLVxcbi5jbGFuZy1mb3JtYXQtMTgyLSAgLSAnZHJtX2dlbV9mb3JfZWFjaF9ncHV2bV9ib19zYWZlJ1xcbi5jbGFuZy1mb3JtYXQ6MTgzOiAgLSAnZHJtX2dwdXN2bV9mb3JfZWFjaF9yYW5nZSdcXG4uY2xhbmctZm9ybWF0LTE4NC0gIC0gJ2RybV9ncHV2YV9mb3JfZWFjaF9vcCdcXG4tLVxcbkRvY3VtZW50YXRpb24vZ3B1L3JmYy9ncHVzdm0ucnN0PTkxPVBvc3NpYmxlIGZ1dHVyZSBkZXNpZ24gZmVhdHVyZXNcXG4tLVxcbkRvY3VtZW50YXRpb24vZ3B1L3JmYy9ncHVzdm0ucnN0LTEwMC0qIFJhbmdlcyB3aXRoIG1peGVkIHN5c3RlbSBhbmQgZGV2aWNlIHBhZ2VzXFxuRG9jdW1lbnRhdGlvbi9ncHUvcmZjL2dwdXN2bS5yc3Q6MTAxOlxcdCogQ2FuIGJlIGFkZGVkIGlmIHJlcXVpcmVkIHRvIGRybV9ncHVzdm1fZ2V0X3BhZ2VzIGZhaXJseSBlYXNpbHkuXFxuRG9jdW1lbnRhdGlvbi9ncHUvcmZjL2dwdXN2bS5yc3QtMTAyLSogTXVsdGktR1BVIHN1cHBvcnRcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0xMDc9b2JqLSQoQ09ORklHX0RSTV9HUFVWTSkgKz0gZHJtX2dwdXZtLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTA4LVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxMDk6ZHJtX2dwdXN2bV9oZWxwZXIteSA6PSBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTExMC1cXHRkcm1fZ3B1c3ZtLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTExOmRybV9ncHVzdm1faGVscGVyLSQoQ09ORklHX1pPTkVfREVWSUNFKSArPSBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTExMi1cXHRkcm1fcGFnZW1hcC5vXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTExNC1cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTE1Om9iai0kKENPTkZJR19EUk1fR1BVU1ZNKSArPSBkcm1fZ3B1c3ZtX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTExNi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTEtICogLSBQYWdlczpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjUyOiAqXFx0c3RydWN0IGRybV9ncHVzdm1fcGFnZXMgaG9sZHMgdGhlIERNQSBtYXBwaW5nIHN0YXRlIGZvciBhIHJhbmdlIG9mXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01My0gKlxcdENQVSB2aXJ0dWFsIGFkZHJlc3NlczogdGhlIERNQSBtYXBwZWQgZGV2aWNlIGFkZHJlc3NlcyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTYtICpcXHRtYXBwaW5ncy5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU3OiAqXFx0QSBkcml2ZXIgZW1iZWRzIG9uZSBvciBtb3JlIHN0cnVjdCBkcm1fZ3B1c3ZtX3BhZ2VzIGFsb25nc2lkZSBpdHNcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU4OiAqXFx0c3RydWN0IGRybV9ncHVzdm1fcmFuZ2UsIGNob29zaW5nIG9uZSBvZiB0d28gbGF5b3V0czpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU5LSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2MDogKlxcdDE6MSAtIG9uZSBkcm1fZ3B1c3ZtX3BhZ2VzIHBlciByYW5nZSAob25lIGRybV9kZXZpY2UpLiBTaW1wbGVzdFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjEtICpcXHRsYXlvdXQ7IHRvIG1pcnJvciBhIFZBIHJhbmdlIG9uIHNldmVyYWwgZGV2aWNlcyBhIGRyaXZlciB1c2VzIGFcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjQtICpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY1OiAqXFx0TjoxIC0gb25lIGRybV9ncHVzdm1fcGFnZXMgcGVyIGRybV9kZXZpY2UsIGFsbCBzaGFyaW5nIG9uZSByYW5nZSBhbmRcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY2LSAqXFx0bm90aWZpZXI7IG9ubHkgdGhlIHBlci1kZXZpY2UgRE1BIG1hcHBpbmcgZGlmZmVycy4gVGhlIGluc3RhbmNlcyBtdXN0XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NzogKlxcdHNpdCBpbiBjb250aWd1b3VzIG1lbW9yeSBzbyBhIHNpbmdsZSBkcm1fZ3B1c3ZtX3JhbmdlX3NldF91bm1hcHBlZCgpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02OC0gKlxcdGNhbiBtYXJrIHRoZW0gYWxsLiBBIGRyaXZlciBjYW4ga2VlcCBvbmUgaW5zdGFuY2UgaW5saW5lIGZvciB0aGUgc2luZ2xlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTc0LSAqXFx0XFx0c3RydWN0IGRyaXZlcl9yYW5nZSB7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo3NTogKlxcdFxcdFxcdHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlIGJhc2U7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03Ni0gKlxcdFxcdFxcdHVuc2lnbmVkIGludCBudW1fcGFnZXM7XFx0Ly8gMTogaW5saW5lX3BhZ2VzLCBcXHUwMDNlMTogcGFnZXNbXVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNzctICpcXHRcXHRcXHR1bmlvbiB7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo3ODogKlxcdFxcdFxcdFxcdHN0cnVjdCBkcm1fZ3B1c3ZtX3BhZ2VzIGlubGluZV9wYWdlcztcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjc5OiAqXFx0XFx0XFx0XFx0c3RydWN0IGRybV9ncHVzdm1fcGFnZXMgKnBhZ2VzO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODAtICpcXHRcXHRcXHR9O1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NC0gKlxcdGFsbG9jYXRvciAoZS5nLiBrY2FsbG9jKG51bV9wYWdlcywgLi4uKSksIGluaXRpYWxpc2VzIGVhY2ggZW50cnkgd2l0aFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODU6ICpcXHRkcm1fZ3B1c3ZtX2luaXRfcGFnZXMoKSwgYW5kIGZyZWVzIGVhY2ggZW50cnkgd2l0aFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODY6ICpcXHRkcm1fZ3B1c3ZtX2ZyZWVfcGFnZXMoKSBwbHVzIHRoZSBhcnJheSBpdHNlbGYsIGZyb20gaXRzIHJhbmdlIGZyZWVcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg3OiAqXFx0Y2FsbGJhY2suIEVhY2ggZHJtX2dwdXN2bV9wYWdlcyBpcyBtYXBwZWQgaW5kZXBlbmRlbnRseSBieSB0aGVpciBvd25cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg4LSAqXFx0ZHJtX2RldmljZS5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg5OiAqXFx0RWFjaCBkcm1fZ3B1c3ZtX3BhZ2VzIG11c3QgYmUgemVyby1pbml0aWFsaXNlZCBhbmQgaW5pdGlhbGlzZWQgd2l0aFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6OTA6ICpcXHRkcm1fZ3B1c3ZtX2luaXRfcGFnZXMoKSwgY2FsbGVkIG9uY2UgcGVyIGVudHJ5LlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTEtICpcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTM1LSAqIGV4Y2VwdCBmb3IgdGhlIHJlY2hlY2sgcmFuZ2UncyBwYWdlcyBiZWluZyB2YWxpZFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTM2OiAqIChkcm1fZ3B1c3ZtX3BhZ2VzX3ZhbGlkKSB3aGVuIHRoZSBkcml2ZXIgaXMgY29tbWl0dGluZyBHUFUgYmluZGluZ3MuXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMzctICogVGhpcyBsb2NrIGNvcnJlc3BvbmRzIHRvIHRoZSBgYGRyaXZlci1cXHUwMDNldXBkYXRlYGAgbG9jayBtZW50aW9uZWQgaW5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTQzLSAqIGxvY2sgdG8gc2FmZWd1YXJkIGNvcmUgR1BVIFNWTSBmdW5jdGlvbiBjYWxscyB0aGF0IG1vZGlmeSBzdGF0ZSwgc3VjaCBhc1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTQ0OiAqIGRybV9ncHVzdm1fcmFuZ2VfZmluZF9vcl9pbnNlcnQgYW5kIGRybV9ncHVzdm1fcmFuZ2VfcmVtb3ZlLiBUaGlzIGxvY2sgaXNcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE0NS0gKiBkZW5vdGVkIGFzICdkcml2ZXJfc3ZtX2xvY2snIGluIGNvZGUgZXhhbXBsZXMuIEZpbmVyIGdyYWluZWQgZHJpdmVyIHNpZGVcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE0Ni0gKiBsb2NraW5nIHNob3VsZCBhbHNvIGJlIHBvc3NpYmxlIGZvciBjb25jdXJyZW50IEdQVSBmYXVsdCBwcm9jZXNzaW5nIHdpdGhpbiBhXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxNDc6ICogc2luZ2xlIEdQVSBTVk0uIFRoZSAnZHJpdmVyX3N2bV9sb2NrJyBjYW4gYmUgdmlhIGRybV9ncHVzdm1fZHJpdmVyX3NldF9sb2NrXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xNDgtICogdG8gYWRkIGFubm90YXRpb25zIHRvIEdQVSBTVk0uXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE4NC0gKlxcdHN0cnVjdCBkcml2ZXJfcmFuZ2Uge1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTg1OiAqXFx0XFx0c3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgYmFzZTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjE4NjogKlxcdFxcdHN0cnVjdCBkcm1fZ3B1c3ZtX3BhZ2VzIHBhZ2VzO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTg3LSAqXFx0fTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTk0LSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxOTU6ICpcXHRcXHRkcm1fZ3B1c3ZtX25vdGlmaWVyX2xvY2soZ3B1c3ZtKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjE5NjogKlxcdFxcdGlmIChkcm1fZ3B1c3ZtX3BhZ2VzX3ZhbGlkKGdwdXN2bSwgXFx1MDAyNmRyYW5nZS1cXHUwMDNlcGFnZXMpKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTk3LSAqXFx0XFx0XFx0ZHJpdmVyX2NvbW1pdF9iaW5kKGdwdXN2bSwgZHJhbmdlKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTk5LSAqXFx0XFx0XFx0ZXJyID0gLUVBR0FJTjtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjIwMDogKlxcdFxcdGRybV9ncHVzdm1fbm90aWZpZXJfdW5sb2NrKGdwdXN2bSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yMDEtICpcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjA3LSAqXFx0e1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjA4OiAqXFx0XFx0c3RydWN0IGRybV9ncHVzdm1fY3R4IGN0eCA9IHt9O1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjA5LSAqXFx0XFx0c3RydWN0IGRyaXZlcl9yYW5nZSAqZHJhbmdlO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjEwOiAqXFx0XFx0c3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjExLSAqXFx0XFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjE3LSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyMTg6ICpcXHRcXHRyYW5nZSA9IGRybV9ncHVzdm1fcmFuZ2VfZmluZF9vcl9pbnNlcnQoZ3B1c3ZtLCBmYXVsdF9hZGRyLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjE5LSAqXFx0XFx0XFx0XFx0XFx0XFx0XFx0Z3B1dmFfc3RhcnQsIGdwdXZhX2VuZCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjM0LSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyMzU6ICpcXHRcXHRlcnIgPSBkcm1fZ3B1c3ZtX2dldF9wYWdlcyhncHVzdm0sIFxcdTAwMjZkcmFuZ2UtXFx1MDAzZXBhZ2VzLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjM2LSAqXFx0XFx0XFx0XFx0XFx0ICAgZ3B1c3ZtLVxcdTAwM2VtbSwgXFx1MDAyNnJhbmdlLVxcdTAwM2Vub3RpZmllci1cXHUwMDNlbm90aWZpZXIsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyMzc6ICpcXHRcXHRcXHRcXHRcXHQgICBkcm1fZ3B1c3ZtX3JhbmdlX3N0YXJ0KHJhbmdlKSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjIzODogKlxcdFxcdFxcdFxcdFxcdCAgIGRybV9ncHVzdm1fcmFuZ2VfZW5kKHJhbmdlKSwgXFx1MDAyNmN0eCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yMzktICpcXHRcXHRpZiAoZXJyID09IC1FT1BOT1RTVVBQIHx8IGVyciA9PSAtRUZBVUxUIHx8IGVyciA9PSAtRVBFUk0pIHtcXHQvLyBDUFUgbWFwcGluZ3MgY2hhbmdlZFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjQwLSAqXFx0XFx0XFx0aWYgKGVyciA9PSAtRU9QTk9UU1VQUClcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI0MTogKlxcdFxcdFxcdFxcdGRybV9ncHVzdm1fcmFuZ2VfZXZpY3QoZ3B1c3ZtLCByYW5nZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNDItICpcXHRcXHRcXHRnb3RvIHJldHJ5O1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNTktICpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI2MDogKlxcdC8vIFRoZSBkcml2ZXIgb3ducyB0aGUgZHJtX2dwdXN2bV9wYWdlcyBsaWZlY3ljbGUuIG9wcy1cXHUwMDNlcmFuZ2VfZnJlZSBpc1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjYxOiAqXFx0Ly8gdGhlIGZpbmFsIGZhbGxiYWNrOiBkcm1fZ3B1c3ZtX2ZyZWVfcGFnZXMoKSB1bm1hcHMgYW55XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNjItICpcXHQvLyBsaW5nZXJpbmcgRE1BIG1hcHBpbmcgYW5kIGEgbm8tb3AgaWYgYWxyZWFkeSB1bm1hcHBlZCBhbmQgZnJlZXMgdGhlXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNjMtICpcXHQvLyBkbWFfYWRkciBhcnJheS4gVGhlIG5vcm1hbCBmbG93IGlzIHRvIERNQSB1bm1hcCBiZWZvcmVcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI2NDogKlxcdC8vIGRybV9ncHVzdm1fcmFuZ2VfcmVtb3ZlKCkgKGJlZm9yZSB0aGUgcmFuZ2UgbGVhdmVzIHRoZSB0cmVlKS5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI2NTogKlxcdHZvaWQgZHJpdmVyX3JhbmdlX2ZyZWUoc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjY2LSAqXFx0e1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNjktICpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI3MDogKlxcdFxcdGRybV9ncHVzdm1fZnJlZV9wYWdlcyhyYW5nZS1cXHUwMDNlZ3B1c3ZtLCBcXHUwMDI2ZHJhbmdlLVxcdTAwM2VwYWdlcyxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI3MTogKlxcdFxcdFxcdFxcdCAgICAgIGRybV9ncHVzdm1fcmFuZ2Vfc2l6ZShyYW5nZSkgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNzItICpcXHRcXHRrZnJlZShkcmFuZ2UpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNzUtICpcXHR2b2lkIF9fZHJpdmVyX2dhcmJhZ2VfY29sbGVjdG9yKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyNzY6ICpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNzctICpcXHR7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTI4MS0gKlxcdFxcdGlmIChyYW5nZS1cXHUwMDNlZmxhZ3MucGFydGlhbF91bm1hcClcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI4MjogKlxcdFxcdFxcdGRybV9ncHVzdm1fcmFuZ2VfZXZpY3QoZ3B1c3ZtLCByYW5nZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yODMtICpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTI4NC0gKlxcdFxcdGRyaXZlcl91bmJpbmRfcmFuZ2UocmFuZ2UpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6Mjg1OiAqXFx0XFx0Ly8gVGhlIHBhZ2VzIG11c3QgYmUgRE1BIHVubWFwcGVkIGJlZm9yZSBkcm1fZ3B1c3ZtX3JhbmdlX3JlbW92ZSgpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yODYtICpcXHRcXHQvLyAsIHNvIGEgcmFuZ2UgaXMgbmV2ZXIgb2ZmIHRoZSBNTVUgaW50ZXJ2YWwgdHJlZSB3aGlsZSBzdGlsbCBETUFcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjg5LSAqXFx0XFx0Ly8gZm9yIGRldmljZSBETUEuIFRoaXMgaXMgdGhlIG5vcm1hbCB1bm1hcCBwb2ludC5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI5MDogKlxcdFxcdGRybV9ncHVzdm1fdW5tYXBfcGFnZXMoZ3B1c3ZtLCBcXHUwMDI2ZHJhbmdlLVxcdTAwM2VwYWdlcyxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI5MTogKlxcdFxcdFxcdFxcdCAgICAgICBkcm1fZ3B1c3ZtX3JhbmdlX3NpemUocmFuZ2UpIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyOTI6ICpcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNihzdHJ1Y3QgZHJtX2dwdXN2bV9jdHgpeyAuaW5fbm90aWZpZXIgPSBmYWxzZSB9KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI5MzogKlxcdFxcdGRybV9ncHVzdm1fcmFuZ2VfcmVtb3ZlKGdwdXN2bSwgcmFuZ2UpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjk0LSAqXFx0fVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zMDgtICpcXHR2b2lkIGRyaXZlcl9pbnZhbGlkYXRpb24oc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjMwOTogKlxcdFxcdFxcdFxcdCBzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqbm90aWZpZXIsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zMTAtICpcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqbW11X3JhbmdlKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzExLSAqXFx0e1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzEyOiAqXFx0XFx0c3RydWN0IGRybV9ncHVzdm1fY3R4IGN0eCA9IHsgLmluX25vdGlmaWVyID0gdHJ1ZSwgfTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjMxMzogKlxcdFxcdHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpyYW5nZSA9IE5VTEw7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zMTQtICpcXHRcXHRzdHJ1Y3QgZHJpdmVyX3JhbmdlICpkcmFuZ2U7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTMxNy0gKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzE4OiAqXFx0XFx0ZHJtX2dwdXN2bV9mb3JfZWFjaF9yYW5nZShyYW5nZSwgbm90aWZpZXIsIG1tdV9yYW5nZS1cXHUwMDNlc3RhcnQsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zMTktICpcXHRcXHRcXHRcXHRcXHQgIG1tdV9yYW5nZS1cXHUwMDNlZW5kKSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTMyMS0gKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzIyOiAqXFx0XFx0XFx0ZHJtX2dwdXN2bV91bm1hcF9wYWdlcyhncHVzdm0sIFxcdTAwMjZkcmFuZ2UtXFx1MDAzZXBhZ2VzLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzIzOiAqXFx0XFx0XFx0XFx0XFx0ICAgICAgIGRybV9ncHVzdm1fcmFuZ2Vfc2l6ZShyYW5nZSkgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVCxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTMyNC0gKlxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2Y3R4KTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzI4LSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozMjk6ICpcXHRcXHRcXHRkcm1fZ3B1c3ZtX3JhbmdlX3NldF91bm1hcHBlZChyYW5nZSwgXFx1MDAyNmRyYW5nZS1cXHUwMDNlcGFnZXMsIDEsIG1tdV9yYW5nZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zMzAtICpcXHRcXHRcXHRkcml2ZXJfZ2FyYmFnZV9jb2xsZWN0b3JfYWRkKGdwdXN2bSwgcmFuZ2UpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYz0zNDg9bnBhZ2VzX2luX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNTMtLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozNTQ6ICogZHJtX2dwdXN2bV9ub3RpZmllcl9maW5kKCkgLSBGaW5kIEdQVSBTVk0gbm90aWZpZXIgZnJvbSBHUFUgU1ZNXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNTUtICogQGdwdXN2bTogUG9pbnRlciB0byB0aGUgR1BVIFNWTSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTM1OC0gKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzU5OiAqIFJldHVybjogQSBwb2ludGVyIHRvIHRoZSBkcm1fZ3B1c3ZtX25vdGlmaWVyIGlmIGZvdW5kIG9yIE5VTExcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTM2MC0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjM2MTpzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozNjI6ZHJtX2dwdXN2bV9ub3RpZmllcl9maW5kKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNjMtXFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgZW5kKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNjktXFx0aWYgKGl0cmVlKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzcwOlxcdFxcdHJldHVybiBjb250YWluZXJfb2YoaXRyZWUsIHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyLCBpdHJlZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNzEtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNzMtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6Mzc0OkVYUE9SVF9TWU1CT0xfR1BMKGRybV9ncHVzdm1fbm90aWZpZXJfZmluZCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNzUtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNzYtLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozNzc6ICogZHJtX2dwdXN2bV9yYW5nZV9maW5kKCkgLSBGaW5kIEdQVSBTVk0gcmFuZ2UgZnJvbSBHUFUgU1ZNIG5vdGlmaWVyXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNzgtICogQG5vdGlmaWVyOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIG5vdGlmaWVyIHN0cnVjdHVyZS5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzgxLSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozODI6ICogUmV0dXJuOiBBIHBvaW50ZXIgdG8gdGhlIGRybV9ncHVzdm1fcmFuZ2UgaWYgZm91bmQgb3IgTlVMTFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzgzLSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6Mzg0OnN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjM4NTpkcm1fZ3B1c3ZtX3JhbmdlX2ZpbmQoc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzg2LVxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgZW5kKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zOTItXFx0aWYgKGl0cmVlKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzkzOlxcdFxcdHJldHVybiBjb250YWluZXJfb2YoaXRyZWUsIHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlLCBpdHJlZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zOTQtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zOTYtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6Mzk3OkVYUE9SVF9TWU1CT0xfR1BMKGRybV9ncHVzdm1fcmFuZ2VfZmluZCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zOTgtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zOTktLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0MDA6ICogZHJtX2dwdXN2bV9ub3RpZmllcl9pbnZhbGlkYXRlKCkgLSBJbnZhbGlkYXRlIGEgR1BVIFNWTSBub3RpZmllci5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQwMS0gKiBAbW5pOiBQb2ludGVyIHRvIHRoZSBtbXVfaW50ZXJ2YWxfbm90aWZpZXIgc3RydWN0dXJlLlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYz00MTE9c3RhdGljIGJvb2xcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjQxMjpkcm1fZ3B1c3ZtX25vdGlmaWVyX2ludmFsaWRhdGUoc3RydWN0IG1tdV9pbnRlcnZhbF9ub3RpZmllciAqbW5pLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDEzLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICptbXVfcmFuZ2UsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQxNS17XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0MTY6XFx0c3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyID1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQxNy1cXHRcXHRjb250YWluZXJfb2YobW5pLCB0eXBlb2YoKm5vdGlmaWVyKSwgbm90aWZpZXIpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00MzEtLypcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjQzMjogKiBkcm1fZ3B1c3ZtX25vdGlmaWVyX29wcyAtIE1NVSBpbnRlcnZhbCBub3RpZmllciBvcGVyYXRpb25zIGZvciBHUFUgU1ZNXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00MzMtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0MzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90aWZpZXJfb3BzIGRybV9ncHVzdm1fbm90aWZpZXJfb3BzID0ge1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDM1OlxcdC5pbnZhbGlkYXRlID0gZHJtX2dwdXN2bV9ub3RpZmllcl9pbnZhbGlkYXRlLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDM2LX07XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQzOC0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjQzOTogKiBkcm1fZ3B1c3ZtX2luaXQoKSAtIEluaXRpYWxpemUgdGhlIEdQVSBTVk0uXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00NDAtICogQGdwdXN2bTogUG9pbnRlciB0byB0aGUgR1BVIFNWTSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ1My0gKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDU0OiAqIE5vdGU6IElmIG9ubHkgdXNpbmcgdGhlIHNpbXBsZSBkcm1fZ3B1c3ZtX3BhZ2VzIEFQSSAoZ2V0L3VubWFwL2ZyZWUpLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDU1LSAqIHRoZW4gb25seSBAZ3B1c3ZtIGFuZCBAbmFtZSBhcmUgZXhwZWN0ZWQuIFRoZSBAZHJtIGRybV9kZXZpY2UgZm9yIGRtYVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDU2OiAqIG1hcHBpbmdzIGlzIGJvdW5kIHBlci1wYWdlcyB2aWEgZHJtX2dwdXN2bV9pbml0X3BhZ2VzKCkgYmVmb3JlIHRoZSBmaXJzdFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDU3OiAqIGRybV9ncHVzdm1fZ2V0X3BhZ2VzKCkgY2FsbC4gSG93ZXZlciwgdGhlIHNhbWUgYmFzZVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDU4LSAqIEBncHVzdm0gY2FuIGFsc28gYmUgdXNlZCB3aXRoIGJvdGggbW9kZXMgdG9nZXRoZXIgaW4gd2hpY2ggY2FzZSB0aGUgZnVsbFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDU5OiAqIHNldHVwIGlzIG5lZWRlZCwgd2hlcmUgdGhlIGNvcmUgZHJtX2dwdXN2bV9wYWdlcyBBUEkgd2lsbCBzaW1wbHkgbmV2ZXIgdXNlXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00NjAtICogdGhlIG90aGVyIGZpZWxkcy5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDYzLSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDY0OmludCBkcm1fZ3B1c3ZtX2luaXQoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ2NS1cXHRcXHQgICAgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDY4LVxcdFxcdCAgICB1bnNpZ25lZCBsb25nIG5vdGlmaWVyX3NpemUsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0Njk6XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBkcm1fZ3B1c3ZtX29wcyAqb3BzLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDcwLVxcdFxcdCAgICBjb25zdCB1bnNpZ25lZCBsb25nICpjaHVua19zaXplcywgaW50IG51bV9jaHVua3MpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ3Ni1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDc3OlxcdFxcdC8qIE5vIGZ1bGwgU1ZNIG1vZGUsIG9ubHkgY29yZSBkcm1fZ3B1c3ZtX3BhZ2VzIEFQSS4gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ3OC1cXHRcXHRpZiAob3BzIHx8IG51bV9jaHVua3MgfHwgbW1fcmFuZ2UgfHwgbm90aWZpZXJfc2l6ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTA1LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjUwNjpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ3B1c3ZtX2luaXQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTA3LVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTA4LS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTA5OiAqIHRvX2RybV9ncHVzdm1fbm90aWZpZXIoKSAtIHJldHJpZXZlIHRoZSBjb250YWluZXIgc3RydWN0IGZvciBhIGdpdmVuIHJidHJlZSBub2RlXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1MTA6ICogQG5vZGU6IGEgcG9pbnRlciB0byB0aGUgcmJ0cmVlIG5vZGUgZW1iZWRkZWQgd2l0aGluIGEgZHJtX2dwdXN2bV9ub3RpZmllciBzdHJ1Y3RcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTUxMS0gKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTEyOiAqIFJldHVybjogQSBwb2ludGVyIHRvIHRoZSBjb250YWluaW5nIGRybV9ncHVzdm1fbm90aWZpZXIgc3RydWN0dXJlLlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTEzLSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTE0OnN0YXRpYyBzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqdG9fZHJtX2dwdXN2bV9ub3RpZmllcihzdHJ1Y3QgcmJfbm9kZSAqbm9kZSlcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTUxNS17XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1MTY6XFx0cmV0dXJuIGNvbnRhaW5lcl9vZihub2RlLCBzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciwgaXRyZWUucmIpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTE3LX1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTE5LS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTIwOiAqIGRybV9ncHVzdm1fbm90aWZpZXJfaW5zZXJ0KCkgLSBJbnNlcnQgR1BVIFNWTSBub3RpZmllclxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTIxLSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTUyNS0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjUyNjpzdGF0aWMgdm9pZCBkcm1fZ3B1c3ZtX25vdGlmaWVyX2luc2VydChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTI3OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqbm90aWZpZXIpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01Mjgte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01MzUtXFx0aWYgKG5vZGUpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1MzY6XFx0XFx0aGVhZCA9IFxcdTAwMjYodG9fZHJtX2dwdXN2bV9ub3RpZmllcihub2RlKSktXFx1MDAzZWVudHJ5O1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTM3LVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTQzLS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTQ0OiAqIGRybV9ncHVzdm1fbm90aWZpZXJfcmVtb3ZlKCkgLSBSZW1vdmUgR1BVIFNWTSBub3RpZmllclxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTQ1LSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTQ5LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTUwOnN0YXRpYyB2b2lkIGRybV9ncHVzdm1fbm90aWZpZXJfcmVtb3ZlKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1NTE6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpub3RpZmllcilcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU1Mi17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU1Ny0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU1ODogKiBkcm1fZ3B1c3ZtX2ZpbmkoKSAtIEZpbmFsaXplIHRoZSBHUFUgU1ZNLlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTU5LSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlLlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01NjMtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1NjQ6dm9pZCBkcm1fZ3B1c3ZtX2Zpbmkoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSlcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU2NS17XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1NjY6XFx0c3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyLCAqbmV4dDtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU2Ny1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU2ODpcXHRkcm1fZ3B1c3ZtX2Zvcl9lYWNoX25vdGlmaWVyX3NhZmUobm90aWZpZXIsIG5leHQsIGdwdXN2bSwgMCwgTE9OR19NQVgpIHtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU2OTpcXHRcXHRzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UsICpfX25leHQ7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01NzAtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU3Ni1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU3NzpcXHRcXHRkcm1fZ3B1c3ZtX2Zvcl9lYWNoX3JhbmdlX3NhZmUocmFuZ2UsIF9fbmV4dCwgbm90aWZpZXIsIDAsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01NzgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIExPTkdfTUFYKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTc5OlxcdFxcdFxcdGRybV9ncHVzdm1fcmFuZ2VfcmVtb3ZlKGdwdXN2bSwgcmFuZ2UpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTgwLVxcdH1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTg1LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU4NjpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ3B1c3ZtX2ZpbmkpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTg3LVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTg4LS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTg5OiAqIGRybV9ncHVzdm1fbm90aWZpZXJfYWxsb2MoKSAtIEFsbG9jYXRlIEdQVSBTVk0gbm90aWZpZXJcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU5MC0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01OTYtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1OTc6c3RhdGljIHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU5ODpkcm1fZ3B1c3ZtX25vdGlmaWVyX2FsbG9jKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sIHVuc2lnbmVkIGxvbmcgZmF1bHRfYWRkcilcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU5OS17XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2MDA6XFx0c3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjAxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02MjAtLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2MjE6ICogZHJtX2dwdXN2bV9ub3RpZmllcl9mcmVlKCkgLSBGcmVlIEdQVSBTVk0gbm90aWZpZXJcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTYyMi0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02MjYtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2Mjc6c3RhdGljIHZvaWQgZHJtX2dwdXN2bV9ub3RpZmllcl9mcmVlKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2Mjg6XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqbm90aWZpZXIpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02Mjkte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02MzgtLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2Mzk6ICogdG9fZHJtX2dwdXN2bV9yYW5nZSgpIC0gcmV0cmlldmUgdGhlIGNvbnRhaW5lciBzdHJ1Y3QgZm9yIGEgZ2l2ZW4gcmJ0cmVlIG5vZGVcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY0MDogKiBAbm9kZTogYSBwb2ludGVyIHRvIHRoZSByYnRyZWUgbm9kZSBlbWJlZGRlZCB3aXRoaW4gYSBkcm1fZ3B1c3ZtX3JhbmdlIHN0cnVjdFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjQxLSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NDI6ICogUmV0dXJuOiBBIHBvaW50ZXIgdG8gdGhlIGNvbnRhaW5pbmcgZHJtX2dwdXN2bV9yYW5nZSBzdHJ1Y3R1cmUuXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NDMtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NDQ6c3RhdGljIHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICp0b19kcm1fZ3B1c3ZtX3JhbmdlKHN0cnVjdCByYl9ub2RlICpub2RlKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjQ1LXtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY0NjpcXHRyZXR1cm4gY29udGFpbmVyX29mKG5vZGUsIHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlLCBpdHJlZS5yYik7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NDctfVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NDktLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NTA6ICogZHJtX2dwdXN2bV9yYW5nZV9pbnNlcnQoKSAtIEluc2VydCBHUFUgU1ZNIHJhbmdlXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NTEtICogQG5vdGlmaWVyOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIG5vdGlmaWVyIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NTUtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NTY6c3RhdGljIHZvaWQgZHJtX2dwdXN2bV9yYW5nZV9pbnNlcnQoc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NjU3OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NTgte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NjEtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NjI6XFx0ZHJtX2dwdXN2bV9ub3RpZmllcl9sb2NrKG5vdGlmaWVyLVxcdTAwM2VncHVzdm0pO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjYzLVxcdGludGVydmFsX3RyZWVfaW5zZXJ0KFxcdTAwMjZyYW5nZS1cXHUwMDNlaXRyZWUsIFxcdTAwMjZub3RpZmllci1cXHUwMDNlcm9vdCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY2Ni1cXHRpZiAobm9kZSlcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY2NzpcXHRcXHRoZWFkID0gXFx1MDAyNih0b19kcm1fZ3B1c3ZtX3JhbmdlKG5vZGUpKS1cXHUwMDNlZW50cnk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NjgtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NzEtXFx0bGlzdF9hZGQoXFx1MDAyNnJhbmdlLVxcdTAwM2VlbnRyeSwgaGVhZCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NzI6XFx0ZHJtX2dwdXN2bV9ub3RpZmllcl91bmxvY2sobm90aWZpZXItXFx1MDAzZWdwdXN2bSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NzMtfVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NzUtLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NzY6ICogX19kcm1fZ3B1c3ZtX3JhbmdlX3JlbW92ZSgpIC0gUmVtb3ZlIEdQVSBTVk0gcmFuZ2VcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY3Ny0gKiBAbm90aWZpZXI6IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gbm90aWZpZXIgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY4MS0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY4MjpzdGF0aWMgdm9pZCBfX2RybV9ncHVzdm1fcmFuZ2VfcmVtb3ZlKHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpub3RpZmllcixcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY4MzpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02ODQte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02ODktLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2OTA6ICogZHJtX2dwdXN2bV9yYW5nZV9hbGxvYygpIC0gQWxsb2NhdGUgR1BVIFNWTSByYW5nZVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjkxLSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTcwMC0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjcwMTpzdGF0aWMgc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NzAyOmRybV9ncHVzdm1fcmFuZ2VfYWxsb2Moc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjcwMzpcXHRcXHQgICAgICAgc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNzA0LVxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIGZhdWx0X2FkZHIsIHVuc2lnbmVkIGxvbmcgY2h1bmtfc2l6ZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNzA2LXtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjcwNzpcXHRzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2U7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03MDgtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTcyOC0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjcyOTogKiBkcm1fZ3B1c3ZtX2htbV9wZm5fdG9fb3JkZXIoKSAtIEdldCB0aGUgbGFyZ2VzdCBDUFUgbWFwcGluZyBvcmRlci5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTczMC0gKiBAaG1tX3BmbjogVGhlIGN1cnJlbnQgaG1tX3Bmbi5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNzQxLSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NzQyOnN0YXRpYyB1bnNpZ25lZCBpbnQgZHJtX2dwdXN2bV9obW1fcGZuX3RvX29yZGVyKHVuc2lnbmVkIGxvbmcgaG1tX3BmbixcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTc0My1cXHRcXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIGhtbV9wZm5faW5kZXgsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTc1Ny0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjc1ODogKiBkcm1fZ3B1c3ZtX2NoZWNrX3BhZ2VzKCkgLSBDaGVjayBwYWdlc1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNzU5LSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTc2OS0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjc3MDpzdGF0aWMgYm9vbCBkcm1fZ3B1c3ZtX2NoZWNrX3BhZ2VzKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo3NzE6XFx0XFx0XFx0XFx0ICAgc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNzcyLVxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04MTYtXFx0XFx0fVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODE3OlxcdFxcdGkgKz0gMHgxIFxcdTAwM2NcXHUwMDNjIGRybV9ncHVzdm1faG1tX3Bmbl90b19vcmRlcihwZm5zW2ldLCBpLCBucGFnZXMpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODE4LVxcdH1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODI1LS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODI2OiAqIGRybV9ncHVzdm1fc2Nhbl9tbSgpIC0gQ2hlY2sgdGhlIG1pZ3JhdGlvbiBzdGF0ZSBvZiBhIGRybV9ncHVzdm1fcmFuZ2VcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjgyNzogKiBAcmFuZ2U6IFBvaW50ZXIgdG8gdGhlIHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlIHRvIGNoZWNrLlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODI4LSAqIEBkZXZfcHJpdmF0ZV9vd25lcjogVGhlIHN0cnVjdCBkZXZfcHJpdmF0ZV9vd25lciB0byB1c2UgdG8gZGV0ZXJtaW5lXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTgzOC0gKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODM5OiAqIFJldHVybjogU2VlIFxcdTAwMjZlbnVtIGRybV9ncHVzdm1fc2Nhbl9yZXN1bHQuXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NDAtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo4NDE6ZW51bSBkcm1fZ3B1c3ZtX3NjYW5fcmVzdWx0IGRybV9ncHVzdm1fc2Nhbl9tbShzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NDItXFx0XFx0XFx0XFx0XFx0ICAgICAgIHZvaWQgKmRldl9wcml2YXRlX293bmVyLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NDUtXFx0c3RydWN0IG1tdV9pbnRlcnZhbF9ub3RpZmllciAqbm90aWZpZXIgPSBcXHUwMDI2cmFuZ2UtXFx1MDAzZW5vdGlmaWVyLVxcdTAwM2Vub3RpZmllcjtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg0NjpcXHR1bnNpZ25lZCBsb25nIHN0YXJ0ID0gZHJtX2dwdXN2bV9yYW5nZV9zdGFydChyYW5nZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo4NDc6XFx0dW5zaWduZWQgbG9uZyBlbmQgPSBkcm1fZ3B1c3ZtX3JhbmdlX2VuZChyYW5nZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NDgtXFx0c3RydWN0IGhtbV9yYW5nZSBobW1fcmFuZ2UgPSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg1NS1cXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODU2OlxcdGVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBzdGF0ZSA9IERSTV9HUFVTVk1fU0NBTl9VTlBPUFVMQVRFRCwgbmV3X3N0YXRlO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODU3LVxcdHVuc2lnbmVkIGxvbmcgKnBmbnM7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg3Mi1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg3MzpcXHRkcm1fZ3B1c3ZtX25vdGlmaWVyX2xvY2socmFuZ2UtXFx1MDAzZWdwdXN2bSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NzQtXFx0aWYgKG1tdV9pbnRlcnZhbF9yZWFkX3JldHJ5KG5vdGlmaWVyLCBobW1fcmFuZ2Uubm90aWZpZXJfc2VxKSkge1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODc1OlxcdFxcdGRybV9ncHVzdm1fbm90aWZpZXJfdW5sb2NrKHJhbmdlLVxcdTAwM2VncHVzdm0pO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODc2LVxcdFxcdGdvdG8gcmV0cnk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTkxOC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjkxOTpcXHRcXHRpICs9IDF1bCBcXHUwMDNjXFx1MDAzYyBkcm1fZ3B1c3ZtX2htbV9wZm5fdG9fb3JkZXIocGZuc1tpXSwgaSwgbnBhZ2VzKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTkyMC1cXHR9XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05MjEtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5MjI6XFx0ZHJtX2dwdXN2bV9ub3RpZmllcl91bmxvY2socmFuZ2UtXFx1MDAzZWdwdXN2bSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05MjMtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTkyNy19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5Mjg6RVhQT1JUX1NZTUJPTChkcm1fZ3B1c3ZtX3NjYW5fbW0pO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTI5LVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTMwLS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6OTMxOiAqIGRybV9ncHVzdm1fcmFuZ2VfY2h1bmtfc2l6ZSgpIC0gRGV0ZXJtaW5lIGNodW5rIHNpemUgZm9yIEdQVSBTVk0gcmFuZ2VcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTkzMi0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYz05NDc9c3RhdGljIHVuc2lnbmVkIGxvbmdcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjk0ODpkcm1fZ3B1c3ZtX3JhbmdlX2NodW5rX3NpemUoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjk0OTpcXHRcXHRcXHQgICAgc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTUwLVxcdFxcdFxcdCAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZhcyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTY1LVxcdFxcdGlmIChzdGFydCBcXHUwMDNlPSB2YXMtXFx1MDAzZXZtX3N0YXJ0IFxcdTAwMjZcXHUwMDI2IGVuZCBcXHUwMDNjPSB2YXMtXFx1MDAzZXZtX2VuZCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6OTY2OlxcdFxcdCAgICBzdGFydCBcXHUwMDNlPSBkcm1fZ3B1c3ZtX25vdGlmaWVyX3N0YXJ0KG5vdGlmaWVyKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6OTY3OlxcdFxcdCAgICBlbmQgXFx1MDAzYz0gZHJtX2dwdXN2bV9ub3RpZmllcl9lbmQobm90aWZpZXIpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05NjgtXFx0XFx0ICAgIHN0YXJ0IFxcdTAwM2U9IGdwdXZhX3N0YXJ0IFxcdTAwMjZcXHUwMDI2IGVuZCBcXHUwMDNjPSBncHV2YV9lbmQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTk3OS1cXHRpZiAoZW5kIC0gc3RhcnQgIT0gU1pfNEspIHtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjk4MDpcXHRcXHRzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2U7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05ODEtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5ODI6XFx0XFx0cmFuZ2UgPSBkcm1fZ3B1c3ZtX3JhbmdlX2ZpbmQobm90aWZpZXIsIHN0YXJ0LCBlbmQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTgzLVxcdFxcdGlmIChyYW5nZSkge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05OTQtXFx0XFx0ICogZHJtX3BhZ2VtYXBfbWlncmF0ZV90b19kZXZtZW0gd2l0aCAnbWlncmF0ZS5jcGFnZXMgIT0gbnBhZ2VzJ1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6OTk1OlxcdFxcdCAqIGFuZCB0aGVuIHVwb24gZHJtX2dwdXN2bV9nZXRfcGFnZXMgZGV2aWNlIHBhZ2VzIGZyb21cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTk5Ni1cXHRcXHQgKiBvdGhlciBwcm9jZXNzZXMgYXJlIGNvbGxlY3RlZCArIGZhdWx0ZWQgaW4gd2hpY2ggY3JlYXRlcyBhbGxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTAwMS1cXHRcXHRpZiAoZW5kIC0gc3RhcnQgXFx1MDAzYz0gY2hlY2tfcGFnZXNfdGhyZXNob2xkIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDAyOlxcdFxcdCAgICAhZHJtX2dwdXN2bV9jaGVja19wYWdlcyhncHVzdm0sIG5vdGlmaWVyLCBzdGFydCwgZW5kLCBkZXZfcHJpdmF0ZV9vd25lcikpIHtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMDMtXFx0XFx0XFx0KytpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDEyLS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTAxMzogKiBkcm1fZ3B1c3ZtX2RyaXZlcl9sb2NrX2hlbGQoKSAtIEFzc2VydCBHUFUgU1ZNIGRyaXZlciBsb2NrIGlzIGhlbGRcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMTQtICogQGdwdXN2bTogUG9pbnRlciB0byB0aGUgR1BVIFNWTSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMTctICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDE4OnN0YXRpYyB2b2lkIGRybV9ncHVzdm1fZHJpdmVyX2xvY2tfaGVsZChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTAxOS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMjMtI2Vsc2VcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEwMjQ6c3RhdGljIHZvaWQgZHJtX2dwdXN2bV9kcml2ZXJfbG9ja19oZWxkKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0pXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDI1LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTAyOS0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEwMzA6ICogZHJtX2dwdXN2bV9maW5kX3ZtYV9zdGFydCgpIC0gRmluZCBzdGFydCBhZGRyZXNzIGZvciBmaXJzdCBWTUEgaW4gcmFuZ2VcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMzEtICogQGdwdXN2bTogUG9pbnRlciB0byB0aGUgR1BVIFNWTSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM9MTAzOD11bnNpZ25lZCBsb25nXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDM5OmRybV9ncHVzdm1fZmluZF92bWFfc3RhcnQoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwNDAtXFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDYwLX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEwNjE6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dwdXN2bV9maW5kX3ZtYV9zdGFydCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDYyLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTA2My0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEwNjQ6ICogZHJtX2dwdXN2bV9yYW5nZV9maW5kX29yX2luc2VydCgpIC0gRmluZCBvciBpbnNlcnQgR1BVIFNWTSByYW5nZVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTA2NS0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDc1LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTA3NjpzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDc3OmRybV9ncHVzdm1fcmFuZ2VfZmluZF9vcl9pbnNlcnQoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwNzgtXFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBmYXVsdF9hZGRyLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDgwLVxcdFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgZ3B1dmFfZW5kLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTA4MTpcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgZHJtX2dwdXN2bV9jdHggKmN0eClcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwODIte1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTA4MzpcXHRzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqbm90aWZpZXI7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDg0OlxcdHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpyYW5nZTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwODUtXFx0c3RydWN0IG1tX3N0cnVjdCAqbW0gPSBncHVzdm0tXFx1MDAzZW1tO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDkxLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTA5MjpcXHRkcm1fZ3B1c3ZtX2RyaXZlcl9sb2NrX2hlbGQoZ3B1c3ZtKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwOTMtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTExMDAtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMTAxOlxcdG5vdGlmaWVyID0gZHJtX2dwdXN2bV9ub3RpZmllcl9maW5kKGdwdXN2bSwgZmF1bHRfYWRkciwgZmF1bHRfYWRkciArIDEpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODowOC44NzcxMzIxOTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk2MzAwMzg2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIGBkcm1fZ3B1c3ZtLmNgOiBBIFBvdGVudGlhbCBUYXJnZXQ/KipcblxuQWxyaWdodCwgbGV0J3MgdGhpbmsgdGhpcyB0aHJvdWdoLiBgZHJtX2dwdXN2bS5jYCBpcyBhIGdlbmVyaWMgbGlicmFyeSwgYW5kIEknbSBhbHdheXMgb24gdGhlIGxvb2tvdXQgZm9yIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMuIFRoZSBwYXRjaCBtZW50aW9ucyBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gTm93LCBpZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgd2l0aGluIGBkcm1fZ3B1c3ZtX2dldF9wYWdlc2AsIGBkcm1fZ3B1c3ZtX3JhbmdlX2V2aWN0YCwgYGRybV9ncHVzdm1fc2Nhbl9tbWAsIGBhaWUyX3BvcHVsYXRlX3JhbmdlYCwgb3IgYG5vdXZlYXVfcmFuZ2VfZmF1bHRgLCBpdCBtaWdodCBiZSByZWFjaGFibGUuXG5cblNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBjYWxsIGNoYWluLiBDYW4gd2UgaGl0IGBkcm1fZ3B1c3ZtX2dldF9wYWdlc2A/IEdvb2QsIGl0J3MgZXhwb3J0ZWQgYW5kIHRoZSBgeGVgIGRyaXZlciB1c2VzIGl0LiAgT2theSwgdGhhdCdzIGEgcG9zaXRpdmUgc2lnbmFsLiBXaGF0IGFib3V0IGBub3V2ZWF1X3JhbmdlX2ZhdWx0YD8gWWVwLCB0aGUgYG5vdXZlYXVgIGRyaXZlciBoaXRzIHRoYXQuIEFuZCBmaW5hbGx5LCBgYWllMl9wb3B1bGF0ZV9yYW5nZWA/IFRoaXMgaXMgdXNlZCBieSB0aGUgYGFtZHhkbmFgIGRyaXZlciwgSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuXG5cbldhaXQgYSBzZWNvbmQuLi4gYGFtZHhkbmFgPyBUaGF0J3MgdGhlIG5ldyBkcml2ZXIgaW4gYGRyaXZlcnMvYWNjZWwvYW1keGRuYS9gLiBIbW1tLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nOiBpcyB0aGF0IGRyaXZlciBldmVuIGVuYWJsZWQgaW4gc3l6a2FsbGVyPyBMZXQncyBxdWlja2x5IHZlcmlmeSBpZiBgQ09ORklHX0RSTV9BTURYRE5BYCBpcyBldmVuIGRlZmluZWQuIFRoYXQncyBhIGNydWNpYWwgZmlyc3Qgc3RlcCBiZWZvcmUgZGVkaWNhdGluZyB0aW1lIHRvIHRoaXMgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgYXZlbnVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjQzNSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODoxMy44NDAxMzk1M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4MTc5NDY3NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9BTURYRE5BXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODoxNS43MjE5NDA0NTZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIxNzIzMzYxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBBTUQgWEROQSBBY2NlbGVyYXRvciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBBTUQgWEROQSBhY2NlbGVyYXRvciBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGlzIHN5c3RlbS4gTXkgZmlyc3Qgc3RlcCBpcyB0byBkaXZlIHJpZ2h0IGludG8gdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBkcml2ZXIuIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGRyaXZlcnMvYWNjZWwvYW1keGRuYS9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgdGhlIHNldHRpbmdzLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgWEROQSBkcml2ZXIuIFRoaXMgZmlsZSB3aWxsIGxpa2VseSB0ZWxsIG1lIGhvdyB0byBlbmFibGUgaXQsIHdoYXQgb3RoZXIgY29tcG9uZW50cyBpdCByZWxpZXMgb24sIGFuZCBwb3RlbnRpYWxseSB3aGF0IGZlYXR1cmVzIGNhbiBiZSB0b2dnbGVkLiBJJ20gaG9waW5nIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGludGVncmF0aW9uIGFuZCBvcHRpb25zIGZyb20gdGhpcyBLY29uZmlnLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzAzMCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU4OjE4LjkzOTE3NjQ5OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIwNTQzMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYWNjZWwvYW1keGRuYS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYWNjZWwvYW1keGRuYS9LY29uZmlnLTItXFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL0tjb25maWc6Mzpjb25maWcgRFJNX0FDQ0VMX0FNRFhETkFcXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvS2NvbmZpZy00LVxcdHRyaXN0YXRlIFxcXCJBTUQgQUkgRW5naW5lXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODoxOS4wMDEyMzYyMTNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzExNzU4MTI2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIGEgRFJNIEFjY2VsZXJhdG9yKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYENPTkZJR19EUk1fQUNDRUxfQU1EWEROQWAuIENhbiBJIGV2ZW4gdGVzdCB0aGlzIGluIGEgVk0/IFByb2JhYmx5IG5vdCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUsIHJpZ2h0PyBCdXQgaG9sZCBvbi4uLiBzeXprYWxsZXIgZnV6emVzIERSTSBkcml2ZXJzIGJ5IG9wZW5pbmcgYC9kZXYvZHJpL3JlbmRlckQqYC4gSWYgdGhlIGRldmljZSBpc24ndCBwcmVzZW50LCB0aGF0IG9wZW4gd2lsbCBqdXN0IGZhaWwuIEhtbSwgc3l6a2FsbGVyIGhhcyBmdW5jdGlvbnMgbGlrZSBgc3l6X3VzYl9jb25uZWN0YCBhbmQgYHN5el92aGNpXy4uLmAgZm9yIFVTQiBhbmQgV2ktRmkgKGBzeXpfODAyMTFfLi4uYCkuIEJ1dCB3aGF0IGFib3V0IFBDST8gTm8gZGlyZWN0IGdlbmVyaWMgUENJIGRldmljZSBpbmplY3Rpb24gZnVuY3Rpb24gaW4gc3l6a2FsbGVyLlxuXG5Db3VsZCBJIHVzZSBzb21ldGhpbmcgbGlrZSBgdmttc2Agb3IgYHZnZW1gPyBObywgdGhvc2UgYXJlIHNlcGFyYXRlIGRyaXZlcnMuIFdhaXQsIGRvZXNuJ3Qgc3l6a2FsbGVyIGhhdmUgYSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBjYWxsPyBOb3BlLCBpdCBkb2Vzbid0LiBCdXQgdGhpcyBwYXRjaCBpbnZvbHZlcyBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgLCB3aGljaCBpcyBhIGNvcmUgTU0vSE1NIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggZml4ZXMgaXRzIHVzYWdlIGFjcm9zcyB0aHJlZSBkcml2ZXJzLiBJcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZyBpZiB0aGUgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJZiBpdCdzIG5vdCBmdXphYmxlIGluIGEgVk0sIEkgc2hvdWxkIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuTGV0J3MgY2hlY2sgaWYgTm91dmVhdSBjYW4gYmUgcHJvYmVkIHdpdGhvdXQgaGFyZHdhcmUuIE5vLCBpdCBpcyBhIFBDSSBkcml2ZXIuIFRoZW4gSSBzaG91bGQgY2hlY2sgYHhlYCBhbmQgYGFtZHhkbmFgLiBObywgYm90aCBQQ0kuIFdhaXQsIGRvZXNuJ3Qgc3l6a2FsbGVyIGhhdmUgYSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBjYWxsPyBOb3BlLiBIb2xkIG9uLCBkb2Vzbid0IHN5emthbGxlciB1c2UgYHFlbXVgIHdpdGggYC1kZXZpY2VgIHRvIGluamVjdCAqc29tZSogUENJIGRldmljZXM/IE5vLCBzeXprYWxsZXIgZG9lc24ndCBhcHBlYXIgdG8gaW5qZWN0IHNwZWNpZmljIEdQVSBkZXZpY2VzLCBsaWtlIHRoZSBJbnRlbCBYZSBvciBBTUQgWEROQSBkZXZpY2VzLiBXYWl0LCBzeXprYWxsZXIgYWN0dWFsbHkgKmRvZXMqIGZ1enogYG5vdXZlYXVgISBIb3cgaXMgdGhhdCBwb3NzaWJsZT8gTm8gYHN5el9wY2lfZGV2aWNlX2FkZGAuIEkgbmVlZCB0byBjaGVjayBpZiBzeXprYWxsZXIgaGFzIGRlc2NyaXB0aW9ucyBmb3IgYG5vdXZlYXVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzMwOSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODoyNi4xMTg4MTk4MTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5Mjk2MjAzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJub3V2ZWF1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInN5cy9saW51eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU4OjI2LjIwODEyNDcyOVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODExMTkwNjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlKipcblxuT2theSwgd2FpdCBhIG1pbnV0ZSwgSSBzZWVtIHRvIGJlIGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUsIG5vdCB0aGUgc3l6a2FsbGVyIHJlcG9zaXRvcnkuIFRoYXQgY2hhbmdlcyB0aGluZ3M7IEkgY2FuJ3QgZGlyZWN0bHkgYWNjZXNzIHRoZSBzeXprYWxsZXItc3BlY2lmaWMgZGVzY3JpcHRpb25zIGhlcmUuIEhtbSwgYnV0IHRoYXQncyBhbHJpZ2h0LCB0aGlzIGlzIHN0aWxsIHVzZWZ1bC4gVGhlIHF1ZXN0aW9uIGF0IGhhbmQgaXMgd2hldGhlciBgbm91dmVhdWAgaGFzIGEgXCJzb2Z0d2FyZS1vbmx5XCIgbW9kZSBvZiBvcGVyYXRpb24uIFRoaXMgaXMgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIHRoYXQgaW5mb3JtYXRpb24uIExldCBtZSBzZWUgd2hhdCBJIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODIzMiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU4OjI5LjAxOTMxNzc5M1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcwOTM1ODgzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJub3V2ZWF1X2RybV9wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jPTg0MD1zdGF0aWMgdm9pZCBxdWlya19icm9rZW5fbnZfcnVucG0oc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTg1Ni1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jOjg1NzpzdGF0aWMgaW50IG5vdXZlYXVfZHJtX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMtODU4LVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBlbnQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jPTE0Mzg9bm91dmVhdV9kcm1fcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMtMTQ0MC1cXHQuaWRfdGFibGUgPSBub3V2ZWF1X2RybV9wY2lfdGFibGUsXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYzoxNDQxOlxcdC5wcm9iZSA9IG5vdXZlYXVfZHJtX3Byb2JlLFxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMtMTQ0Mi1cXHQucmVtb3ZlID0gbm91dmVhdV9kcm1fcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODozMC43Mjg2ODE2NTFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5NjY3MDI0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IFBDSSBEcml2ZXIgSW5xdWlyeSoqXG5cblJpZ2h0LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IGEgUENJIGRyaXZlciwgZ290IGl0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgYW5kIGNvbnRleHQuIFdoYXQgYXJlIHdlIHRyeWluZyB0byBhY2hpZXZlPyBJcyB0aGlzIGEgbmV3IGRyaXZlciwgb3IgYW4gZXhpc3Rpbmcgb25lIHVuZGVyIHNjcnV0aW55PyBXaGF0IGtpbmQgb2Ygc3lzdGVtIGFyZSB3ZSBkZWFsaW5nIHdpdGg/IEtub3dpbmcgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGlzIGNydWNpYWwuXG5cblRoZW4uLi4gbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wZWQgdG86IHdoYXQgYWJvdXQgdGhhdCBgYW1keGRuYWA/IEknbSBjdXJpb3VzLiBUaGF0J3Mgbm90IHNvbWV0aGluZyBJJ2QgbmVjZXNzYXJpbHkgZXhwZWN0IGluIHRoaXMgY29udGV4dCwgYnV0IGl0IHdhcnJhbnRzIGNvbnNpZGVyYXRpb24uIElzIHRoYXQgcmVsYXRlZCB0byB0aGUgZGV2aWNlLCBvciBpcyBpdCBtZXJlbHkgYmVpbmcgcmVmZXJlbmNlZD8gSXMgdGhpcyBzb21lIGNyb3NzLWNvbXBhdGliaWxpdHkgY29uY2VybiB0aGF0IGlzIGJlaW5nIGJyb3VnaHQgdXA/XG5cbkknbSBzdGFydGluZyB0byB0aGluayB0aHJvdWdoIHRoZSBwb3NzaWJsZSBpbnRlcmFjdGlvbnMgdGhpcyBjb3VsZCBoYXZlLiBXaGF0IGRvZXMgdGhhdCBuYW1lIGV2ZW4gcG9pbnQgdG8/IFRoZSB0eXBlIG9mIGRldmljZSwgYSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEEgdmVyeSBiYXNpYyB0aGluZyB0byBjaGVjayBhdCB0aGlzIHBvaW50IHdvdWxkIGJlIHRvIHNlYXJjaCBmb3IgaXRzIGltcGxlbWVudGF0aW9uIG9uIHRoZSBzeXN0ZW0sIHRvIGdhaW4gbW9yZSBkZXRhaWxzLlxuXG5NeSBhc3N1bXB0aW9uIGlzIHRoYXQgaXQgcmVxdWlyZXMgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2ODYsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODozNC4yMjUzNTUzNTJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODMyODIxNDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFtZHhkbmFfcGNpX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODozNS45MDg2NDMzODNaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkwNzQ5MTMyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBgcHJvYmVgIFdpdGhpbiBgYW1keGRuYWAqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIFwiUmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYGFtZHhkbmFgIGNvbnRleHQuIExldCdzIGdldCBhIGhhbmRsZSBvbiB3aGF0IGl0J3MgZG9pbmcuXCIgSSBrbm93IHRoaXMgY29kZWJhc2UgaW5zaWRlIGFuZCBvdXQsIHNvIHRoZSBzcGVjaWZpY3Mgb2YgXCJjaGVja1wiIGFyZSBpbXBsaWVkIOKAkyBJJ20gcHJvYmFibHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIGl0cyBwdXJwb3NlLCBpdHMgaW5wdXRzLCBvdXRwdXRzLCBhbnkgY3JpdGljYWwgZGVwZW5kZW5jaWVzIG9yIHNoYXJlZCByZXNvdXJjZXMgaXQgbWlnaHQgYmUgbWFuaXB1bGF0aW5nLiBJcyBpdCBhIGRpYWdub3N0aWMgZnVuY3Rpb24/IEEgY29yZSBkYXRhIGdhdGhlcmluZyBvcGVyYXRpb24/IElzIGl0IGludGVyYWN0aW5nIHdpdGggaGFyZHdhcmUgZGlyZWN0bHk/IElzIGl0IGNoZWNraW5nIGZvciBlcnJvcnMgb3IgdmFsaWRhdGluZyBhIHNwZWNpZmljIGNvbmRpdGlvbj8gV2hhdGV2ZXIgdGhlIHB1cnBvc2Ugb2YgYHByb2JlYCwgdW5kZXJzdGFuZGluZyBpdHMgZnVuY3Rpb25hbGl0eSBpcyBpbXBvcnRhbnQgdG8gdGhlIGNvbnRleHQgb2YgdGhlIGdyZWF0ZXIgYW1keGRuYSBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4OTc1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTg6MzguODE2MTM2ODQ5WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjI4NTY4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2FjY2VsL2FtZHhkbmEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYz0zNTk9c3RhdGljIHZvaWQgYW1keGRuYV94ZG5hX2RybV9yZWxlYXNlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHZvaWQgKnJlcylcXG4tLVxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYy0zNjUtXFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfcGNpX2Rydi5jOjM2NjpzdGF0aWMgaW50IGFtZHhkbmFfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9wY2lfZHJ2LmMtMzY3LXtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYz00ODY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGFtZHhkbmFfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYy00ODgtXFx0LmlkX3RhYmxlID0gcGNpX2lkcyxcXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9wY2lfZHJ2LmM6NDg5OlxcdC5wcm9iZSA9IGFtZHhkbmFfcHJvYmUsXFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfcGNpX2Rydi5jLTQ5MC1cXHQucmVtb3ZlID0gYW1keGRuYV9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU4OjM4Ljg3ODQyNzQxNFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDA3MDg2ODU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnk6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBOYXZpZ2F0aW5nIHRoZSBQQ0kgRHJpdmVyIExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGNvbnRleHQgaXMgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggYSBQQ0kgZHJpdmVyLCBhbmQgbXkgYnJhaW4gaW1tZWRpYXRlbHkgc3RhcnRzIHRvIGNhdGVnb3JpemUgYW5kIHBsYWNlIGl0IHdpdGhpbiB0aGUgYnJvYWRlciBmcmFtZXdvcmsuIEZpbmUsIFBDSSBkcml2ZXIsIGdvdCBpdC4gVGhlbiBteSB0aG91Z2h0cyBzaGlmdCB0byBhbm90aGVyIGZpbGUsIG5hbWVseSBgZHJtX2dwdXN2bS5jYCwgYW5kIEkgc3RhcnQgdG8gbWFrZSB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIGl0IGFuZCBvdXIgaW5pdGlhbCBhc3Nlc3NtZW50LiBBaCwgYGRybV9ncHVzdm0uY2Ag4oCTIHRoYXQncyBzZWxlY3RlZCBieSB0aGUgYERSTV9YRWAgY29uZmlnIG9wdGlvbi5cblxuVGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgZmlyc3QgY29tbWVudCBcIkl0J3MgYSBQQ0kgZHJpdmVyXCIgYW5kIHRoZSBgZHJtX2dwdXN2bS5jYCBmaWxlIGlzIHRoYXQgdGhlIFBDSSBkcml2ZXIgbWlnaHQgYmUgY29ubmVjdGVkIHRvIHRoZSBgZHJtX2dwdXN2bS5jYCBmaWxlIHRocm91Z2ggdGhlIGBEUk1fWEVgIGNvbmZpZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk0OTksIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODo0MS44ODU1MTYyNTNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MjAzNjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS94ZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMDc4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZz0xMDQ9Y29uZmlnIERSTV9YRV9GT1JDRV9QUk9CRVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjEwNTpcXHRzdHJpbmcgXFxcIkZvcmNlIHByb2JlIHhlIGZvciBzZWxlY3RlZCBJbnRlbCBoYXJkd2FyZSBJRHNcXFwiXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTA2LVxcdGRlcGVuZHMgb24gRFJNX1hFXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTA3LVxcdGhlbHBcXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzoxMDg6XFx0ICBUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgeGUuZm9yY2VfcHJvYmUgbW9kdWxlXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTA5LVxcdCAgcGFyYW1ldGVyLiBVc2luZyB0aGUgbW9kdWxlIHBhcmFtZXRlciBvdmVycmlkZXMgdGhpcyBvcHRpb24uXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTEwLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjExMTpcXHQgIEZvcmNlIHByb2JlIHRoZSB4ZSBmb3IgSW50ZWwgZ3JhcGhpY3MgZGV2aWNlcyB0aGF0IGFyZVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTExMi1cXHQgIHJlY29nbml6ZWQgYnV0IG5vdCBwcm9wZXJseSBzdXBwb3J0ZWQgYnkgdGhpcyBrZXJuZWwgdmVyc2lvbi4gSXQgaXNcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTExNS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzoxMTY6XFx0ICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGJsb2NrIHRoZSBwcm9iZSBvZiByZWNvZ25pemVkIGFuZCBmdWxseVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTExNy1cXHQgIHN1cHBvcnRlZCBkZXZpY2VzLlxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTExOC1cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzoxMTk6XFx0ICBVc2UgXFxcIlxcXCIgdG8gZGlzYWJsZSBmb3JjZSBwcm9iZS4gSWYgaW4gZG91YnQsIHVzZSB0aGlzLlxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTEyMC1cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzoxMjE6XFx0ICBVc2UgXFxcIlxcdTAwM2NwY2ktaWRcXHUwMDNlWyxcXHUwMDNjcGNpLWlkXFx1MDAzZSwuLi5dXFxcIiB0byBmb3JjZSBwcm9iZSB0aGUgeGUgZm9yIGxpc3RlZFxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTEyMi1cXHQgIGRldmljZXMuIEZvciBleGFtcGxlLCBcXFwiNDUwMFxcXCIgb3IgXFxcIjQ1MDAsNDU3MVxcXCIuXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTIzLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjEyNDpcXHQgIFVzZSBcXFwiKlxcXCIgdG8gZm9yY2UgcHJvYmUgdGhlIGRyaXZlciBmb3IgYWxsIGtub3duIGRldmljZXMuXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTI1LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjEyNjpcXHQgIFVzZSBcXFwiIVxcXCIgcmlnaHQgYmVmb3JlIHRoZSBJRCB0byBibG9jayB0aGUgcHJvYmUgb2YgdGhlIGRldmljZS4gRm9yXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6MTI3OlxcdCAgZXhhbXBsZSwgXFxcIjQ1MDAsITQ1NzFcXFwiIGZvcmNlcyB0aGUgcHJvYmUgb2YgNDUwMCBhbmQgYmxvY2tzIHRoZSBwcm9iZSBvZlxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTEyOC1cXHQgIDQ1NzEuXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTI5LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjEzMDpcXHQgIFVzZSBcXFwiISpcXFwiIHRvIGJsb2NrIHRoZSBwcm9iZSBvZiB0aGUgZHJpdmVyIGZvciBhbGwga25vd24gZGV2aWNlcy5cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy0xMzEtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTQtI2luY2x1ZGUgXFx1MDAzY2RybS9kcm1fbWFuYWdlZC5oXFx1MDAzZVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxNTojaW5jbHVkZSBcXHUwMDNjZHJtL2RybV9wcm9iZV9oZWxwZXIuaFxcdTAwM2VcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTYtI2luY2x1ZGUgXFx1MDAzY2RybS9pbnRlbC9kaXNwbGF5X21lbWJlci5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTUwPUlOVEVMX0RJU1BMQVlfTUVNQkVSX1NUQVRJQ19BU1NFUlQoc3RydWN0IHhlX2RldmljZSwgZHJtLCBkaXNwbGF5KTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy01NC0vKipcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NTU6ICogeGVfZGlzcGxheV9kcml2ZXJfcHJvYmVfZGVmZXIgLSBEZXRlY3QgaWYgd2UgbmVlZCB0byB3YWl0IGZvciBvdGhlciBkcml2ZXJzXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTU2LSAqXFx0XFx0XFx0XFx0ICAgZWFybHkgb25cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy02MC0gKlxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo2MTogKiBSZXR1cm5zOiB0cnVlIGlmIHByb2JlIG5lZWRzIHRvIGJlIGRlZmVycmVkLCBmYWxzZSBvdGhlcndpc2VcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNjItICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjYzOmJvb2wgeGVfZGlzcGxheV9kcml2ZXJfcHJvYmVfZGVmZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTY0LXtcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NjU6XFx0aWYgKCF4ZV9tb2RwYXJhbS5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy02Ni1cXHRcXHRyZXR1cm4gMDtcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNjctXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjY4OlxcdHJldHVybiBpbnRlbF9kaXNwbGF5X2RyaXZlcl9wcm9iZV9kZWZlcihwZGV2KTtcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNjktfVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTc2PXN0YXRpYyB2b2lkIHhlX2Rpc3BsYXlfZmluaV9lYXJseSh2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtODAtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjgxOlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtODItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTg5PWludCB4ZV9kaXNwbGF5X2luaXRfZWFybHkoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtOTMtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjk0OlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtOTUtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtOTktXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjEwMDpcXHRpbnRlbF9kaXNwbGF5X2RyaXZlcl9lYXJseV9wcm9iZShkaXNwbGF5KTtcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTAxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTEwNS1cXHRpZiAoIWludGVsX2Rpc3BsYXlfZGV2aWNlX3ByZXNlbnQoZGlzcGxheSkpIHtcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MTA2OlxcdFxcdHhlLVxcdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkgPSBmYWxzZTtcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTA3LVxcdFxcdHVuc2V0X2Rpc3BsYXlfZmVhdHVyZXMoeGUpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTExMC1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MTExOlxcdGVyciA9IGludGVsX2Rpc3BsYXlfZHJpdmVyX3Byb2JlX25vaXJxKGRpc3BsYXkpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xMTItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xMTQtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjExNTpcXHRlcnIgPSBpbnRlbF9kaXNwbGF5X2RyaXZlcl9wcm9iZV9ub2dlbShkaXNwbGF5KTtcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTE2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9MTM4PWludCB4ZV9kaXNwbGF5X2luaXQoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTQyLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxNDM6XFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xNDQtXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTE0NS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MTQ2OlxcdGVyciA9IGludGVsX2Rpc3BsYXlfZHJpdmVyX3Byb2JlKGRpc3BsYXkpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xNDctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0xNTM9dm9pZCB4ZV9kaXNwbGF5X3JlZ2lzdGVyKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTE1Ni1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MTU3OlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTU4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0xNjQ9dm9pZCB4ZV9kaXNwbGF5X3VucmVnaXN0ZXIoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTY3LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxNjg6XFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xNjktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTE3NT12b2lkIHhlX2Rpc3BsYXlfc2h1dGRvd24oc3RydWN0IHhlX2RldmljZSAqeGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTc4LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxNzk6XFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xODAtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTE4OT12b2lkIHhlX2Rpc3BsYXlfc2h1dGRvd25fbGF0ZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xOTItXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjE5MzpcXHRpZiAoIXhlLVxcdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTE5NC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9MjAxPXZvaWQgeGVfZGlzcGxheV9pcnFfaGFuZGxlcihzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTMyIG1hc3Rlcl9jdGwpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjA0LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoyMDU6XFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yMDYtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTIxMj12b2lkIHhlX2Rpc3BsYXlfaXJxX2VuYWJsZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTMyIGd1X21pc2NfaWlyKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTIxNS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MjE2OlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjE3LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0yMjM9dm9pZCB4ZV9kaXNwbGF5X2lycV9yZXNldChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yMjYtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjIyNzpcXHRpZiAoIXhlLVxcdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTIyOC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9MjMzPXZvaWQgeGVfZGlzcGxheV9pcnFfcG9zdGluc3RhbGwoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjM2LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoyMzc6XFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yMzgtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTI1Mj12b2lkIHhlX2Rpc3BsYXlfcG1fc3VzcGVuZChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yNTYtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjI1NzpcXHRpZiAoIXhlLVxcdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTI1OC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9MjY3PXZvaWQgeGVfZGlzcGxheV9wbV9zdXNwZW5kX2xhdGUoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjcxLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoyNzI6XFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yNzMtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTI3OD12b2lkIHhlX2Rpc3BsYXlfcG1fcmVzdW1lX2Vhcmx5KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTI4MS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MjgyOlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjgzLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0yODg9dm9pZCB4ZV9kaXNwbGF5X3BtX3Jlc3VtZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yOTEtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjI5MjpcXHRpZiAoIXhlLVxcdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTI5My1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9MzA1PXN0YXRpYyB2b2lkIHhlX2Rpc3BsYXlfZW5hYmxlX2QzY29sZChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0zMDgtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjMwOTpcXHRpZiAoIXhlLVxcdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTMxMC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9MzI4PXN0YXRpYyB2b2lkIHhlX2Rpc3BsYXlfZGlzYWJsZV9kM2NvbGQoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMzMxLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzozMzI6XFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0zMzMtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTM1Mz12b2lkIHhlX2Rpc3BsYXlfcG1fcnVudGltZV9zdXNwZW5kKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTM1Ni1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MzU3OlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMzU4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0zNjk9dm9pZCB4ZV9kaXNwbGF5X3BtX3J1bnRpbWVfc3VzcGVuZF9sYXRlKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTM3Mi1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MzczOlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMzc0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0zODc9dm9pZCB4ZV9kaXNwbGF5X3BtX3J1bnRpbWVfcmVzdW1lX2Vhcmx5KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTM5MC1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MzkxOlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMzkyLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz00MDE9dm9pZCB4ZV9kaXNwbGF5X3BtX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQwNC1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NDA1OlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNDA2LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz00NDk9c3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kaXNwbGF5X3BhcmVudF9pbnRlcmZhY2UgcGFyZW50ID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQ2NC0vKipcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NDY1OiAqIHhlX2Rpc3BsYXlfcHJvYmUgLSBwcm9iZSBkaXNwbGF5IGFuZCBjcmVhdGUgZGlzcGxheSBzdHJ1Y3RcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNDY2LSAqIEB4ZTogWEUgZGV2aWNlIGluc3RhbmNlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNDc0LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo0NzU6aW50IHhlX2Rpc3BsYXlfcHJvYmUoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQ3Ni17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNDgwLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo0ODE6XFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy00ODItXFx0XFx0Z290byBub19kaXNwbGF5O1xcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy00ODMtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjQ4NDpcXHRkaXNwbGF5ID0gaW50ZWxfZGlzcGxheV9kZXZpY2VfcHJvYmUocGRldiwgXFx1MDAyNnBhcmVudCk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQ4NS1cXHRpZiAoSVNfRVJSKGRpc3BsYXkpKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQ5Ny1ub19kaXNwbGF5OlxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo0OTg6XFx0eGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSA9IGZhbHNlO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy00OTktXFx0dW5zZXRfZGlzcGxheV9mZWF0dXJlcyh4ZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNTAzLSNpZmRlZiBDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTlxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo1MDQ6aW50IHhlX2Rpc3BsYXlfZHJpdmVyX2ZiZGV2X3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYmgsXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTUwNS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBkcm1fZmJfaGVscGVyX3N1cmZhY2Vfc2l6ZSAqc2l6ZXMpXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTUwNi17XFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjUwNzpcXHRyZXR1cm4gaW50ZWxfZmJkZXZfZHJpdmVyX2ZiZGV2X3Byb2JlKGZiaCwgc2l6ZXMpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy01MDgtfVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oPTE1PXN0cnVjdCB4ZV9kZXZpY2U7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmgtMTgtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oOjE5OmJvb2wgeGVfZGlzcGxheV9kcml2ZXJfcHJvYmVfZGVmZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaC0yMC1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5Lmg6MjE6aW50IHhlX2Rpc3BsYXlfZHJpdmVyX2ZiZGV2X3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYmgsXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTIyLVxcdFxcdFxcdFxcdCAgc3RydWN0IGRybV9mYl9oZWxwZXJfc3VyZmFjZV9zaXplICpzaXplcyk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTIzLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaDoyNDppbnQgeGVfZGlzcGxheV9wcm9iZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTI1LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oPTQ3PXZvaWQgeGVfZGlzcGxheV9wbV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmgtNTAtI2RlZmluZSBYRV9ESVNQTEFZX0RSSVZFUl9PUFNcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oOjUxOlxcdC5mYmRldl9wcm9iZSA9IFBUUl9JRihJU19FTkFCTEVEKENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OKSxcXHRcXFxcXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oOjUyOlxcdFxcdFxcdCAgICAgIHhlX2Rpc3BsYXlfZHJpdmVyX2ZiZGV2X3Byb2JlKVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaC01My1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaC01Ny0jZGVmaW5lIFhFX0RJU1BMQVlfRFJJVkVSX09QUyBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oOjU4OlxcdC5mYmRldl9wcm9iZSA9IE5VTExcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmgtNTktXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oOjYwOnN0YXRpYyBpbmxpbmUgaW50IHhlX2Rpc3BsYXlfZHJpdmVyX3Byb2JlX2RlZmVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KSB7IHJldHVybiAwOyB9XFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTYxLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaDo2MjpzdGF0aWMgaW5saW5lIGludCB4ZV9kaXNwbGF5X3Byb2JlKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKSB7IHJldHVybiAwOyB9XFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTYzLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jPTMxMT1FWFBPUlRfU1lNQk9MX0lGX0tVTklUKHhlX3BjaV9pZF9nZW5fcGFyYW0pO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zMTItXFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjMxMzpzdGF0aWMgaW50IGZha2VfcHJvYmVfaW5mbyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSxcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzE0LVxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCB4ZV9kZXZpY2VfZGVzYyAqZGVzYyxcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzE1LVxcdFxcdFxcdCAgIHN0cnVjdCB4ZV9wY2lfZmFrZV9kYXRhICpkYXRhLFxcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYzozMTY6XFx0XFx0XFx0ICAgc3RydWN0IHhlX3Byb2JlZF9pbmZvICpwcm9iZWRfaW5mbylcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzE3LXtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzE4OlxcdHByb2JlZF9pbmZvLVxcdTAwM2V0aWxlX2NvdW50ID0gMSArIGRlc2MtXFx1MDAzZW1heF9yZW1vdGVfdGlsZXM7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTMxOS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzIwLVxcdGlmICghZGF0YSB8fCBkZXNjLVxcdTAwM2VwcmVfZ21kaWRfZ3JhcGhpY3NfaXApIHtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzIxOlxcdFxcdHByb2JlZF9pbmZvLVxcdTAwM2VncmFwaGljc19pcCA9IGRlc2MtXFx1MDAzZXByZV9nbWRpZF9ncmFwaGljc19pcDtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzIyOlxcdFxcdHByb2JlZF9pbmZvLVxcdTAwM2VtZWRpYV9pcCA9IGRlc2MtXFx1MDAzZXByZV9nbWRpZF9tZWRpYV9pcDtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzIzLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjMyNDpcXHRcXHRwcm9iZWRfaW5mby1cXHUwMDNlZ3JhcGhpY3NfaXAgPSBmaW5kX2dyYXBoaWNzX2lwKGRhdGEtXFx1MDAzZWdyYXBoaWNzX3ZlcngxMDApO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zMjUtXFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTMyNi1cXHRcXHRpZiAoZGF0YS1cXHUwMDNlbWVkaWFfdmVyeDEwMCkge1xcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYzozMjc6XFx0XFx0XFx0cHJvYmVkX2luZm8tXFx1MDAzZW1lZGlhX2lwID0gZmluZF9tZWRpYV9pcChkYXRhLVxcdTAwM2VtZWRpYV92ZXJ4MTAwKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzI4OlxcdFxcdFxcdHhlX2Fzc2VydCh4ZSwgcHJvYmVkX2luZm8tXFx1MDAzZW1lZGlhX2lwKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzI5LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zMzEtXFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjMzMjpcXHR4ZV9hc3NlcnQoeGUsIHByb2JlZF9pbmZvLVxcdTAwM2VncmFwaGljc19pcCk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjMzMzpcXHRpZiAoIXByb2JlZF9pbmZvLVxcdTAwM2VncmFwaGljc19pcClcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzM0LVxcdFxcdHJldHVybiAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTMzNi1cXHRpZiAoZGF0YSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzM3OlxcdFxcdHByb2JlZF9pbmZvLVxcdTAwM2VzdGVwID0gZGF0YS1cXHUwMDNlc3RlcDtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzM4LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jPTM0Mj1pbnQgeGVfcGNpX2Zha2VfZGV2aWNlX2luaXQoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzQ1LVxcdHN0cnVjdCB4ZV9wY2lfZmFrZV9kYXRhICpkYXRhID0gdGVzdC1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzQ2OlxcdHN0cnVjdCB4ZV9wcm9iZWRfaW5mbyBwcm9iZWRfaW5mbyA9IHt9O1xcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zNDctXFx0Y29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCA9IHBjaWlkbGlzdDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zNzktXFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjM4MDpcXHRlcnIgPSBmYWtlX3Byb2JlX2luZm8oeGUsIGRlc2MsIGRhdGEsIFxcdTAwMjZwcm9iZWRfaW5mbyk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTM4MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTM4My1cXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6Mzg0OlxcdHhlX2luZm9faW5pdF9lYXJseSh4ZSwgZGVzYywgc3VicGxhdGZvcm1fZGVzYywgXFx1MDAyNnByb2JlZF9pbmZvKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6Mzg1OlxcdHhlX2luZm9faW5pdCh4ZSwgZGVzYywgXFx1MDAyNnByb2JlZF9pbmZvKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzg2LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtNDEtICogYXR0cmlidXRlcyBjYW4gb25seSBiZSBzZXQgYmVmb3JlIGJpbmRpbmcgdGhlIGRldmljZS4gSXQgY2FuIGJlIGFjY29tcGxpc2hlZFxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jOjQyOiAqIGJ5IGJsb2NraW5nIHRoZSBkcml2ZXIgYXV0b3Byb2JlOjpcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy00My0gKlxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jOjQ0OiAqXFx0IyBlY2hvIDAgXFx1MDAzZSAvc3lzL2J1cy9wY2kvZHJpdmVyc19hdXRvcHJvYmVcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYzo0NTogKlxcdCMgbW9kcHJvYmUgeGVcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy00Ni0gKlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtNjYtICogQWZ0ZXIgY29uZmlndXJpbmcgdGhlIGF0dHJpYnV0ZXMgYXMgcGVyIG5leHQgc2VjdGlvbiwgdGhlIGRldmljZSBjYW4gYmVcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYzo2NzogKiBwcm9iZWQgd2l0aDo6XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtNjgtICpcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jLTcwLSAqXFx0IyAjIG9yXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM6NzE6ICpcXHQjIGVjaG8gMDAwMDowMzowMC4wIFxcdTAwM2UgL3N5cy9idXMvcGNpL2RyaXZlcnNfcHJvYmVcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy03Mi0gKlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtOTAtICogZHJpdmVyLiAgQW55IGNvbWJpbmF0aW9uIG9mIEdUIHR5cGVzIGNhbiBiZSBlbmFibGVkL2Rpc2FibGVkLCBhbHRob3VnaFxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jOjkxOiAqIHNvbWUgc2V0dGluZ3Mgd2lsbCBjYXVzZSB0aGUgZGV2aWNlIHRvIGZhaWwgdG8gcHJvYmUuXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtOTItICpcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jLTExMi0gKiBlZmZlY3RpdmVseSBkaXNhYmxpbmcgdGhlIHByaW1hcnkgR1QuICAqKlRoaXMgY29uZmlndXJhdGlvbiB3aWxsIGNhdXNlXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM6MTEzOiAqIGRldmljZSBwcm9iZSBmYWlsdXJlIG9uIGFsbCBjdXJyZW50IHBsYXRmb3JtcywgYnV0IG1heSBiZSBhbGxvd2VkIG9uXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtMTE0LSAqIGlncHUgcGxhdGZvcm1zIGluIHRoZSBmdXR1cmUqKjo6XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy0xMTgtICogRGlzYWJsZSBhbGwgR1RzLiAgT25seSBvdGhlciBHUFUgSVAgKHN1Y2ggYXMgZGlzcGxheSkgaXMgcG90ZW50aWFsbHkgdXNhYmxlLlxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jOjExOTogKiAqKlRoaXMgY29uZmlndXJhdGlvbiB3aWxsIGNhdXNlIGRldmljZSBwcm9iZSBmYWlsdXJlIG9uIGFsbCBjdXJyZW50XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtMTIwLSAqIHBsYXRmb3JtcywgYnV0IG1heSBiZSBhbGxvd2VkIG9uIGlncHUgcGxhdGZvcm1zIGluIHRoZSBmdXR1cmUqKjo6XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy0xNDMtICogVGhlIHJlcXVlc3RlZCBjb25maWd1cmF0aW9uIG1heSBub3QgYmUgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBhbmQgZHJpdmVyXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM6MTQ0OiAqIG1heSBmYWlsIHRvIHByb2JlLiBGb3IgZXhhbXBsZTogaWYgYXQgbGVhc3Qgb25lIGNvcHkgZW5naW5lIGlzIGV4cGVjdGVkIHRvIGJlXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtMTQ1LSAqIGF2YWlsYWJsZSBmb3IgbWlncmF0aW9ucywgYnV0IGl0J3MgZGlzYWJsZWQuIFRoaXMgaXMgaW50ZW5kZWQgZm9yIGRlYnVnZ2luZ1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM9MTI3OT1ib29sIHhlX2NvbmZpZ2ZzX2dldF9lbmFibGVfbXVsdGlfcXVldWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy0xMjk2LSAqIEBjbGFzczogaHcgZW5naW5lIGNsYXNzXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM6MTI5NzogKiBAY3M6IHBvaW50ZXIgdG8gdGhlIGJiIHRvIHVzZSAtIG9ubHkgdmFsaWQgZHVyaW5nIHByb2JlXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtMTI5OC0gKlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM9MTMwMT11MzIgeGVfY29uZmlnZnNfZ2V0X2N0eF9yZXN0b3JlX21pZF9iYihzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jLTEzMjMtICogQGNsYXNzOiBodyBlbmdpbmUgY2xhc3NcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYzoxMzI0OiAqIEBjczogcG9pbnRlciB0byB0aGUgYmIgdG8gdXNlIC0gb25seSB2YWxpZCBkdXJpbmcgcHJvYmVcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy0xMzI1LSAqXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM9NDg3PXN0cnVjdCB4ZV9kZXZpY2UgKnhlX2RldmljZV9jcmVhdGUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtNTE1LX1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6NTE2OkFMTE9XX0VSUk9SX0lOSkVDVElPTih4ZV9kZXZpY2VfY3JlYXRlLCBFUlJOTyk7IC8qIFNlZSB4ZV9wY2lfcHJvYmUoKSAqL1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy01MTctXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM9NzM1PXN0YXRpYyB2b2lkIHZmX3VwZGF0ZV9kZXZpY2VfaW5mbyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03MzgtXFx0LyogZGlzYWJsZSBmZWF0dXJlcyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlL2FwcGxpY2FibGUgdG8gVkZzICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jOjczOTpcXHR4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5ID0gMDtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtNzQwLVxcdHhlLVxcdTAwM2VpbmZvLmhhc19oZWNpX2NzY2ZpID0gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYz03NDk9c3RhdGljIGludCB4ZV9kZXZpY2VfdnJhbV9hbGxvYyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03NjQtLyoqXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jOjc2NTogKiB4ZV9kZXZpY2VfcHJvYmVfZWFybHk6IERldmljZSBlYXJseSBwcm9iZVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03NjYtICogQHhlOiB4ZSBkZXZpY2UgaW5zdGFuY2VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03NzMtICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jOjc3NDppbnQgeGVfZGV2aWNlX3Byb2JlX2Vhcmx5KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03NzUte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTc4MC1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6NzgxOlxcdGVyciA9IHhlX21taW9fcHJvYmVfZWFybHkoeGUpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03ODItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03ODQtXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jOjc4NTpcXHR4ZV9zcmlvdl9wcm9iZV9lYXJseSh4ZSk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTc4Ni1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03OTktXFx0ICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jOjgwMDpcXHRlcnIgPSB4ZV9wY29kZV9wcm9iZV9lYXJseSh4ZSk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTgwMS1cXHRpZiAoZXJyIHx8IHhlX3N1cnZpdmFiaWxpdHlfbW9kZV9pc19yZXF1ZXN0ZWQoeGUpKSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtODMzLX1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6ODM0OkFMTE9XX0VSUk9SX0lOSkVDVElPTih4ZV9kZXZpY2VfcHJvYmVfZWFybHksIEVSUk5PKTsgLyogU2VlIHhlX3BjaV9wcm9iZSgpICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTgzNS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6ODM2OnN0YXRpYyBpbnQgcHJvYmVfaGFzX2ZsYXRfY2NzKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy04Mzcte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTg2OS0gKiBUaGUgZ2VuZXJhbCBwb2xpY3kgaXMgdGhhdCB3ZSdsbCByZW1vdmUgYW55IHdvcmthcm91bmRzIHRoYXQgb25seSBhcHBseSB0b1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo4NzA6ICogcHJlLXByb2R1Y3Rpb24gaGFyZHdhcmUgYXJvdW5kIHRoZSB0aW1lIGZvcmNlX3Byb2JlIHJlc3RyaWN0aW9ucyBhcmUgbGlmdGVkXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTg3MS0gKiBmb3IgYSBwbGF0Zm9ybSBvZiB0aGUgbmV4dCBtYWpvciBJUCBnZW5lcmF0aW9uIChmb3IgZXhhbXBsZSwgWGUyIHByZS1wcm9kXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTg3Mi0gKiB3b3JrYXJvdW5kcyBzaG91bGQgYmUgcmVtb3ZlZCBhcm91bmQgdGhlIHRpbWUgdGhlIGZpcnN0IFhlMyBwbGF0Zm9ybXMgaGF2ZVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo4NzM6ICogZm9yY2VfcHJvYmUgbGlmdGVkKS5cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtODc0LSAqL1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jPTkxOD1zdGF0aWMgdm9pZCB4ZV9kZXZpY2Vfd2VkZ2VkX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTkyNS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6OTI2OmludCB4ZV9kZXZpY2VfcHJvYmUoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTkyNy17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtOTQ0LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo5NDU6XFx0ZXJyID0geGVfbW1pb19wcm9iZV90aWxlcyh4ZSk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTk0Ni1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTk3Ni1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6OTc3OlxcdGVyciA9IHByb2JlX2hhc19mbGF0X2Njcyh4ZSk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTk3OC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTk4MC1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6OTgxOlxcdGVyciA9IHhlX3ZyYW1fcHJvYmUoeGUpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy05ODItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy0xMTAxLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzoxMTAyOlxcdGVyciA9IHhlX2kyY19wcm9iZSh4ZSk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTExMDMtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYz0xMzk2PXZvaWQgeGVfZGV2aWNlX3NldF93ZWRnZWRfbWV0aG9kKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLCB1bnNpZ25lZCBsb25nIG1ldGhvZClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy0xNDA3LSAqIHhlX2RldmljZV9zZXRfd2VkZ2VkX21ldGhvZCBiZWZvcmUgZGVjbGFyaW5nIHRoZSBkZXZpY2UgYXMgd2VkZ2VkLiBJZiBubyBtZXRob2RcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6MTQwODogKiBpcyBzZXQsIHJlcHJvYmUgKHVuYmluZC9yZS1iaW5kKSB3aWxsIGJlIHNlbnQgYnkgZGVmYXVsdC5cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtMTQwOS0gKlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5oPTQ3PWludCB4ZV9kZXZpY2VfaW5pdF9lYXJseShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5oOjQ4OmludCB4ZV9kZXZpY2VfcHJvYmVfZWFybHkoc3RydWN0IHhlX2RldmljZSAqeGUpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuaDo0OTppbnQgeGVfZGV2aWNlX3Byb2JlKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmgtNTAtdm9pZCB4ZV9kZXZpY2VfcmVtb3ZlKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2VfdHlwZXMuaD05MD1zdHJ1Y3QgeGVfZGV2aWNlIHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2VfdHlwZXMuaC0yMTEtXFx0XFx0LyoqXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZV90eXBlcy5oOjIxMjpcXHRcXHQgKiBAaW5mby5wcm9iZV9kaXNwbGF5OiBQcm9iZSBkaXNwbGF5IGhhcmR3YXJlLiAgSWYgc2V0IHRvXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZV90eXBlcy5oLTIxMy1cXHRcXHQgKiBmYWxzZSwgdGhlIGRyaXZlciB3aWxsIGJlaGF2ZSBhcyBpZiB0aGVyZSBpcyBubyBkaXNwbGF5XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmgtMjE4LVxcdFxcdCAqL1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2VfdHlwZXMuaDoyMTk6XFx0XFx0dTggcHJvYmVfZGlzcGxheToxO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2VfdHlwZXMuaC0yMjAtXFx0XFx0LyoqIEBpbmZvLnNraXBfZ3VjX3BjOiBTa2lwIEd1QyBiYXNlZCBQTSBmZWF0dXJlIGluaXQgKi9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmM9MTU2PXN0YXRpYyB1NjQgeGVscGdfZ2d0dF9wdGVfZmxhZ3Moc3RydWN0IHhlX2JvICpibywgdTE2IHBhdF9pbmRleClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmMtMTczLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmM6MTc0OnN0YXRpYyB1bnNpZ25lZCBpbnQgcHJvYmVfZ3NtX3NpemUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2dndHQuYy0xNzUte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2dndHQuYz0zOTE9aW50IHhlX2dndHRfaW5pdF9lYXJseShzdHJ1Y3QgeGVfZ2d0dCAqZ2d0dClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmMtNDAyLVxcdFxcdGVsc2VcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ2d0dC5jOjQwMzpcXHRcXHRcXHRnc21fc2l6ZSA9IHByb2JlX2dzbV9zaXplKHBkZXYpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmMtNDA0LVxcdFxcdGlmIChnc21fc2l6ZSA9PSAwKSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ2d0dC5jLTQ0OS19XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2dndHQuYzo0NTA6QUxMT1dfRVJST1JfSU5KRUNUSU9OKHhlX2dndHRfaW5pdF9lYXJseSwgRVJSTk8pOyAvKiBTZWUgeGVfcGNpX3Byb2JlKCkgKi9cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ2d0dC5jLTQ1MS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndC5jPTQ1Nz1zdGF0aWMgdm9pZCB3YV8xNDAyNjUzOTI3NyhzdHJ1Y3QgeGVfZ3QgKmd0KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0LmMtNDY0LVxcdCAqIHJ1bGVzIGZvciBXYV8xNDAyNjUzOTI3NyBkdWUgdG8geGVfd2FfcHJvY2Vzc19kZXZpY2Vfb29iKCkgYmVpbmdcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3QuYzo0NjU6XFx0ICogY2FsbGVkIGJlZm9yZSB4ZV9zcmlvdl9wcm9iZV9lYXJseSgpOyBhbmQgd2UgY2FuJ3QgbW92ZSB0aGUgY2FsbCB0b1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndC5jLTQ2Ni1cXHQgKiB0aGUgZm9ybWVyIHRvIGhhcHBlbiBhZnRlciB0aGUgbGF0dGVyIGJlY2F1c2UgTU1JTyByZWFkIGZ1bmN0aW9uc1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X21jci5jPTQ5OT12b2lkIHhlX2d0X21jcl9pbml0X2Vhcmx5KHN0cnVjdCB4ZV9ndCAqZ3QpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfbWNyLmMtNTU0LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9tY3IuYzo1NTU6XFx0LyogTWFyayBpbnN0YW5jZSAwIGFzIGluaXRpYWxpemVkLCB3ZSBuZWVkIHRoaXMgZWFybHkgZm9yIFZSQU0gYW5kIENDUyBwcm9iZS4gKi9cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfbWNyLmMtNTU2LVxcdGd0LVxcdTAwM2VzdGVlcmluZ1tJTlNUQU5DRTBdLmluaXRpYWxpemVkID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9zcmlvdl92Zi5jPTE1NjU9c3RhdGljIGJvb2wgdmZfdmFsaWRfZ2d0dChzdHJ1Y3QgeGVfZ3QgKmd0KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3NyaW92X3ZmLmMtMTU4My0gKiBSZXR1cm46IG51bWJlciBvZiB0aW1lcyBWRiBmaXh1cHMgd2VyZSBjb21wbGV0ZWQgc2luY2UgZHJpdmVyXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3NyaW92X3ZmLmM6MTU4NDogKiBwcm9iZSwgb3IgMCBpZiBtaWdyYXRpb24gaXMgbm90IGF2YWlsYWJsZSwgb3IgLTEgaWYgZml4dXBzIGFyZVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9zcmlvdl92Zi5jLTE1ODUtICogcGVuZGluZyBvciBiZWluZyBhcHBsaWVkIHJpZ2h0IG5vdy5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9zcmlvdl92Zi5jPTE1ODc9aW50IHhlX3ZmX21pZ3JhdGlvbl9maXh1cHNfY29tcGxldGVfY291bnQoc3RydWN0IHhlX2d0ICpndClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9zcmlvdl92Zi5jLTE2MDQtICogUmV0dXJuOiBudW1iZXIgb2YgdGltZXMgVkYgZml4dXBzIHdlcmUgY29tcGxldGVkIHNpbmNlIGRyaXZlclxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9zcmlvdl92Zi5jOjE2MDU6ICogcHJvYmUsIG9yIDAgaWYgbWlncmF0aW9uIGlzIG5vdCBhdmFpbGFibGUuXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3NyaW92X3ZmLmMtMTYwNi0gKi9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfYWRzLmM9NDQyPWludCB4ZV9ndWNfYWRzX2luaXQoc3RydWN0IHhlX2d1Y19hZHMgKmFkcylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfYWRzLmMtNDY1LX1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2Fkcy5jOjQ2NjpBTExPV19FUlJPUl9JTkpFQ1RJT04oeGVfZ3VjX2Fkc19pbml0LCBFUlJOTyk7IC8qIFNlZSB4ZV9wY2lfcHJvYmUoKSAqL1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfYWRzLmMtNDY3LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jPTMyMj1pbnQgeGVfZ3VjX2N0X2luaXRfbm9hbGxvYyhzdHJ1Y3QgeGVfZ3VjX2N0ICpjdClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY3QuYy0zNTctfVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY3QuYzozNTg6QUxMT1dfRVJST1JfSU5KRUNUSU9OKHhlX2d1Y19jdF9pbml0X25vYWxsb2MsIEVSUk5PKTsgLyogU2VlIHhlX3BjaV9wcm9iZSgpICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jLTM1OS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY3QuYz0zNjg9aW50IHhlX2d1Y19jdF9pbml0KHN0cnVjdCB4ZV9ndWNfY3QgKmN0KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jLTM5Ni19XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jOjM5NzpBTExPV19FUlJPUl9JTkpFQ1RJT04oeGVfZ3VjX2N0X2luaXQsIEVSUk5PKTsgLyogU2VlIHhlX3BjaV9wcm9iZSgpICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jLTM5OC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfbG9nLmM9NjI0PWludCB4ZV9ndWNfbG9nX2luaXQoc3RydWN0IHhlX2d1Y19sb2cgKmxvZylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfbG9nLmMtNjQ0LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfbG9nLmM6NjQ1OkFMTE9XX0VSUk9SX0lOSkVDVElPTih4ZV9ndWNfbG9nX2luaXQsIEVSUk5PKTsgLyogU2VlIHhlX3BjaV9wcm9iZSgpICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19sb2cuYy02NDYtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3JlbGF5LmM9MzQyPWludCB4ZV9ndWNfcmVsYXlfaW5pdChzdHJ1Y3QgeGVfZ3VjX3JlbGF5ICpyZWxheSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfcmVsYXkuYy0zNzAtfVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfcmVsYXkuYzozNzE6QUxMT1dfRVJST1JfSU5KRUNUSU9OKHhlX2d1Y19yZWxheV9pbml0LCBFUlJOTyk7IC8qIFNlZSB4ZV9wY2lfcHJvYmUoKSAqL1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfcmVsYXkuYy0zNzItXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfaHdfZW5naW5lX2NsYXNzX3N5c2ZzLmM9NTc5PXN0YXRpYyBpbnQgeGVfYWRkX2h3X2VuZ2luZV9jbGFzc19kZWZhdWx0cyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9od19lbmdpbmVfY2xhc3Nfc3lzZnMuYy02MDMtfVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9od19lbmdpbmVfY2xhc3Nfc3lzZnMuYzo2MDQ6QUxMT1dfRVJST1JfSU5KRUNUSU9OKHhlX2FkZF9od19lbmdpbmVfY2xhc3NfZGVmYXVsdHMsIEVSUk5PKTsgLyogU2VlIHhlX3BjaV9wcm9iZSgpICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2h3X2VuZ2luZV9jbGFzc19zeXNmcy5jLTYwNS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTg6NDEuOTUwNzI2MTU4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1Mzk5MjA0MzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZz1mYWxzZTogVW5yZWFjaGFibGUgQ29kZSBQYXRocyBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIGRlYWwuIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCB3YXMgYWJvdXQgaG93IGl0IGFmZmVjdHMgYHhlX3BjaS5jYCwgYnV0IHRoZW4gSSByZWFsaXplZCB0aGlzIGlzIGFib3V0IEtVbml0IHRlc3Rpbmcgd2hpY2ggaXNuJ3QgU3l6a2FsbGVyJ3MgdHlwaWNhbCBmb2N1cy4gU3l6a2FsbGVyIGlzIGFsbCBhYm91dCBmdXp6aW5nIHN5c2NhbGxzLlxuXG5NeSBtaW5kIHRoZW4gd2VudCB0byBgZHJtX2dwdXN2bS5jYCwgd2hpY2ggaXMgYSBnZW5lcmljIERSTSBHUFUgU1ZNIGxpYnJhcnkgdGhhdCdzIHNlbGVjdGVkIGJ5IGBEUk1fWEVgLCBhbmQgdGhhdCdzIHdoZW4gaXQgY2xpY2tlZC4gVGhpcyBwYXRjaCBtb2RpZmllcyBob3cgYGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0YCBpcyB1c2VkLCBhbmQgaXQncyB1c2VkIGluIGBkcm1fZ3B1c3ZtLmNgLCBhbmQgYWxzbyBpbiBgbm91dmVhdV9zdm0uY2AgYW5kIGBhaWUyX2N0eC5jYC4gVGhlc2UgZHJpdmVycyBzb3VuZCBsaWtlIHRoZXkgYXJlIGRlcGVuZGVudCBvbiBzcGVjaWZpYyBoYXJkd2FyZTsgSW50ZWwgWGUsIE52aWRpYSwgYW5kIEFNRCBYRE5BIHJlc3BlY3RpdmVseS5cblxuTXkgaW5zdHJ1Y3Rpb25zIHNheSBJIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFNvLCB0aGUgcXVlc3Rpb24gYmVjb21lczogYXJlIHRoZXNlIGRyaXZlcnMgcmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBWTT8gVGhlIHNob3J0IGFuc3dlcjogTm8uXG5cblFFTVUgY2FuIGVtdWxhdGUgc29tZSBQQ0kgZGV2aWNlcywgYnV0IG5vdCB0aGVzZSBtb2Rlcm4gR1BVcy4gU3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBhIGRpcmVjdCB3YXkgdG8gaW5qZWN0IFBDSSBkZXZpY2VzLiBFdmVuIHRoZSBgdmttc2AgdmlydHVhbCBLTVMgZHJpdmVyIHRoYXQncyBpbiBTeXprYWxsZXIsIGRvZXNuJ3QgdXRpbGl6ZSBhbnkgb2YgdGhlIHNwZWNpZmljIFNWTSBjb2RlLiBUaGVyZSdzIG5vIHdheSB0byB0cmlnZ2VyIGBkcm1fZ3B1c3ZtLmNgIG9yIHRoZSBvdGhlciBmaWxlcyB3aXRob3V0IHRoZSBjb3JyZXNwb25kaW5nIGhhcmR3YXJlLlxuXG5JIHdlbnQgYmFjayBhbmQgY2hlY2tlZCBpZiBgeGVgIGhhZCBhIGBmb3JjZV9wcm9iZWAgbW9kdWxlIHBhcmFtZXRlciwgYnV0IHRoYXQgc3RpbGwgcmVxdWlyZXMgYSBQQ0kgZGV2aWNlIHRvIGJlICpwcmVzZW50KiwgZXZlbiBpZiBpdCBvdmVycmlkZXMgYSBzdXBwb3J0IGNoZWNrLiBTbyB0aGUgY29kZSBwYXRoIHdvdWxkIHN0aWxsIGZhaWwgaW4gcHJvYmUuIE5vIHByb2JlLCBubyBjYWxscy5cblxuSSByZS1yZWFkIHRoZSBcIldvcnRoRnV6emluZz1mYWxzZVwiIGNyaXRlcmlhLiBJdCBleHBsaWNpdGx5IG1lbnRpb25zOiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBUaGlzIGlzIGEgcGVyZmVjdCBtYXRjaC4gVGhlc2UgZHJpdmVycyAqcmVxdWlyZSogcGh5c2ljYWwgaGFyZHdhcmUuIFRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSBpbiBRRU1VLiBUaGUgZHJpdmVycyB3aWxsIGp1c3QgZmFpbCBkdXJpbmcgcHJvYmUoKS4gVGhlIGNvZGUgaXMgc2ltcGx5IHVucmVhY2hhYmxlLlxuXG5JIGxvb2tlZCBpbnRvIGBub3V2ZWF1YCwgYGFtZHhkbmFgLCBhbmQgYHhlYCB0byBkb3VibGUtY2hlY2sgdGhlaXIgc29mdHdhcmUgZW11bGF0aW9uIHN1cHBvcnQgYW5kLCBhcyBJIHN1c3BlY3RlZCwgbm9uZSBvZiB0aGVtIGhhdmUgYW55LiBJIGV2ZW4gY2hlY2tlZCBTeXprYWxsZXIgZm9yIFBDSSBpbmplY3Rpb24sIGFuZCB0aGVyZSdzIG5vdGhpbmcsIG5vIGBzeXpfcGNpX2RldmljZV9hZGRgIG9yIGFueXRoaW5nIGxpa2UgdGhhdC4gRXZlbiBpZiB0aGVyZSB3ZXJlLCB0aGUgZHJpdmVycyB3b3VsZCBzdGlsbCBuZWVkIHRvIGVtdWxhdGUgdGhlIHNwZWNpZmljIEJBUnMgYW5kIHJlZ2lzdGVycywgd2hpY2ggdGhleSBkb24ndCwgYW5kIHNvIHRoZSBwcm9iZSB3b3VsZCBqdXN0IGZhaWwuXG5cbkkgdGhpbmsgSSd2ZSBjb3ZlcmVkIGFsbCB0aGUgYmFzZXMuIFRoaXMgcGF0Y2ggbW9kaWZpZXMgY29kZSB0aGF0IGlzIGluaGVyZW50bHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIEknbSBjb25maWRlbnQgaW4gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgY29kZSBpcyBuZXZlciBnb2luZyB0byBiZSBleGVjdXRlZCBieSBzeXprYWxsZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMjkxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODo1Ny4zNDk5MzI5ODNaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NjMwOTAzOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IERSTV9HUFVTVk1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc9Mj1jb25maWcgRFJNX1hFXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy00MS1cXHRzZWxlY3QgRFJNX0VYRUNcXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzo0MjpcXHRzZWxlY3QgRFJNX0dQVVNWTSBpZiAhVU1MXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctNDMtXFx0c2VsZWN0IERSTV9HUFVWTVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc9Nzk9Y29uZmlnIERSTV9YRV9HUFVTVk1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTg1LVxcdHNlbGVjdCBERVZJQ0VfUFJJVkFURVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjg2OlxcdHNlbGVjdCBEUk1fR1BVU1ZNXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctODctXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODo1OS4xMTMwMjc4NTdaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAwMDI2OTE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFZpYWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0cyBwb3RlbnRpYWwgZm9yIGZ1enppbmcuIEl0IGxvb2tzIGxpa2UgdGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBhcmUgZXhjbHVzaXZlbHkgd2l0aGluIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnM6IHRoZSBBTUQgWEROQSBkcml2ZXIgKGBhaWUyX2N0eC5jYCksIHRoZSBJbnRlbCBYZSBkcml2ZXIgKGBkcm1fZ3B1c3ZtLmNgLCBzcGVjaWZpY2FsbHkgdGllZCB0byB0aGUgYERSTV9YRWAgY29uZmlnIG9wdGlvbiksIGFuZCB0aGUgTnZpZGlhIE5vdXZlYXUgZHJpdmVyIChgbm91dmVhdV9zdm0uY2ApLlxuXG5BIGtleSBvYnNlcnZhdGlvbiBoZXJlIGlzIHRoYXQgKm9ubHkqIHRoZSBgRFJNX1hFYCBjb25maWcgb3B0aW9uIHNlbGVjdHMgYGRybV9ncHVzdm1gLiBJIG1hZGUgc3VyZSB0byBjaGVjayB0aGUgY29kZSB0byBzZWUgaWYgdGhlcmUgd2FzIGFueSBjaGFuY2Ugb2YgYGRybV9ncHVzdm1gIGJlaW5nIHNlbGVjdGVkIGJ5IGFub3RoZXIgZHJpdmVyLlxuXG5Ob3csIGNvbnNpZGVyaW5nIHRoZXNlIGRyaXZlcnMgYW5kIHRoZWlyIHJlc3BlY3RpdmUgbG9jYXRpb25zLCBJJ20gcHJldHR5IGNlcnRhaW4gdGhhdCB0aGUgZnV6emluZyBlZmZvcnRzIHdvdWxkbid0IGJlIHByb2R1Y3RpdmUuIFRoZXNlIG1vZHVsZXMgcmVxdWlyZSBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgKE5QVXMgb3IgR1BVcykgdG8gcHJvYmUgY29ycmVjdGx5IGFuZCBlc3RhYmxpc2ggZGV2aWNlIG5vZGVzLiBRRU1VIGFuZCBHQ0UsIHdoaWxlIGV4Y2VsbGVudCBmb3IgbWFueSBwdXJwb3NlcywgZG9uJ3QgZW11bGF0ZSB0aGlzIHR5cGUgb2YgaGFyZHdhcmUgdG8gdGhlIGxldmVsIG5lZWRlZCBmb3IgdGhlc2UgZHJpdmVycyB0byBmdW5jdGlvbi4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgc2ltcGx5IGluYWNjZXNzaWJsZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5HaXZlbiB0aGF0LCBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGUgcGF0Y2ggdG91Y2hlcyBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgZGVwZW5kIG9uIHVuYXZhaWxhYmxlIG9yIHVuLWVtdWxhdGVkIFBDSSBkZXZpY2VzLCByZW5kZXJpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cblxuVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNTQ1LCJPdXRwdXRUb2tlbnMiOjE3NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1OTowNS4xMTMyOTkzMzZaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTM0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdXNhZ2Ugb2YgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgaW4gdGhyZWUgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyczogQU1EIFhETkEgKGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jKSwgSW50ZWwgWGUgKGRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMsIHNlbGVjdGVkIG9ubHkgYnkgRFJNX1hFKSwgYW5kIE52aWRpYSBOb3V2ZWF1IChkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jKS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSAoTlBVcy9HUFVzKSB0byBzdWNjZXNzZnVsbHkgcHJvYmUgYW5kIGNyZWF0ZSBkZXZpY2Ugbm9kZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdXNhZ2Ugb2YgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgaW4gdGhyZWUgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyczogQU1EIFhETkEgKGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jKSwgSW50ZWwgWGUgKGRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMsIHNlbGVjdGVkIG9ubHkgYnkgRFJNX1hFKSwgYW5kIE52aWRpYSBOb3V2ZWF1IChkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jKS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSAoTlBVcy9HUFVzKSB0byBzdWNjZXNzZnVsbHkgcHJvYmUgYW5kIGNyZWF0ZSBkZXZpY2Ugbm9kZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow58fmp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 06:19:56 +0000 UTC FinishedAt: 2026-07-15 06:59:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB1c2FnZSBvZiBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCBpbiB0aHJlZSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzOiBBTUQgWEROQSAoZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMpLCBJbnRlbCBYZSAoZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYywgc2VsZWN0ZWQgb25seSBieSBEUk1fWEUpLCBhbmQgTnZpZGlhIE5vdXZlYXUgKGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmMpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgUENJIGhhcmR3YXJlIChOUFVzL0dQVXMpIHRvIHN1Y2Nlc3NmdWxseSBwcm9iZSBhbmQgY3JlYXRlIGRldmljZSBub2Rlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmNjMxYWYwYTQzYzFjMjUzZWRkMzIxM2YwZjUzOWJiZWIzMmJjNzhmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMDY6NTc6MTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0IGIvRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0XG5pbmRleCA1Yzg4ZDJjZjA4MTgzMy4uZmMxYjhkYzE5ODI1MGUgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL21tL2htbS5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdFxuQEAgLTIwNiw3ICYjNDM7MjA2LDcgQEAgVGhlIHVzYWdlIHBhdHRlcm4gaXM6OlxuICAgICAgICAgICBnb3RvIG91dF9wdXQ7XG4gXG4gICAgICAgdGFrZV9sb2NrKGRyaXZlci1cdTAwM2V1cGRhdGUpO1xuLSAgICAgIGlmIChtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeShcdTAwMjZpbnRlcnZhbF9zdWIsIHJhbmdlLm5vdGlmaWVyX3NlcSkpIHtcbiYjNDM7ICAgICAgaWYgKG1tdV9pbnRlcnZhbF9yZWFkX3JldHJ5KHJhbmdlLm5vdGlmaWVyLCByYW5nZS5ub3RpZmllcl9zZXEpKSB7XG4gICAgICAgICAgIHJlbGVhc2VfbG9jayhkcml2ZXItXHUwMDNldXBkYXRlKTtcbiAgICAgICAgICAgZ290byBhZ2FpbjtcbiAgICAgICB9XG5AQCAtMjI1LDcgJiM0MzsyMjUsOCBAQCBUaGUgdXNhZ2UgcGF0dGVybiBpczo6XG4gVGhlIGRyaXZlci1cdTAwM2V1cGRhdGUgbG9jayBpcyB0aGUgc2FtZSBsb2NrIHRoYXQgdGhlIGRyaXZlciB0YWtlcyBpbnNpZGUgaXRzXG4gaW52YWxpZGF0ZSgpIGNhbGxiYWNrLiBUaGF0IGxvY2sgbXVzdCBiZSBoZWxkIGJlZm9yZSBjYWxsaW5nXG4gbW11X2ludGVydmFsX3JlYWRfcmV0cnkoKSB0byBhdm9pZCBhbnkgcmFjZSB3aXRoIGEgY29uY3VycmVudCBDUFUgcGFnZSB0YWJsZVxuLXVwZGF0ZS5cbiYjNDM7dXBkYXRlLiBUaGUgcmV0cnkgY2hlY2sgbXVzdCB1c2UgdGhlIHNhbWUgbm90aWZpZXIgYW5kIHNlcXVlbmNlIG51bWJlciBzdG9yZWRcbiYjNDM7aW4gYGByYW5nZWBgIGJ5IGBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoKWBgLlxuIFxuIEhvbGRpbmcgdGhlIG1tYXAgbG9jayBhY3Jvc3MgSE1NIGZhdWx0c1xuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jIGIvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmNcbmluZGV4IDU0OGJhNDMxNTU1NGZmLi4yMWYyODE3NzUxZjllNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9jdHguY1xuQEAgLTEwMzcsNyAmIzQzOzEwMzcsNyBAQCBzdGF0aWMgaW50IGFpZTJfcG9wdWxhdGVfcmFuZ2Uoc3RydWN0IGFtZHhkbmFfZ2VtX29iaiAqYWJvKVxuIFx0Ym9vbCBmb3VuZDtcbiBcdGludCByZXQ7XG4gXG4tXHR0aW1lb3V0ID0gamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuJiM0MztcdHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuIGFnYWluOlxuIFx0Zm91bmQgPSBmYWxzZTtcbiBcdGRvd25fd3JpdGUoXHUwMDI2eGRuYS1cdTAwM2Vub3RpZmllcl9sb2NrKTtcbkBAIC0xMDYyLDEzICYjNDM7MTA2Miw5IEBAIHN0YXRpYyBpbnQgYWllMl9wb3B1bGF0ZV9yYW5nZShzdHJ1Y3QgYW1keGRuYV9nZW1fb2JqICphYm8pXG4gXHRcdHJldHVybiAtRUZBVUxUO1xuIFx0fVxuIFxuLVx0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2bWFwcC1cdTAwM2VyYW5nZSxcbi1cdFx0XHRtYXhfdChsb25nLCB0aW1lb3V0IC0gamlmZmllcywgMSkpO1xuLVx0aWYgKHJldCkge1xuLVx0XHRpZiAocmV0ID09IC1FQlVTWSlcbi1cdFx0XHRyZXQgPSAtRVRJTUU7XG4mIzQzO1x0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2bWFwcC1cdTAwM2VyYW5nZSwgdGltZW91dCk7XG4mIzQzO1x0aWYgKHJldClcbiBcdFx0Z290byBwdXRfbW07XG4tXHR9XG4gXG4gXHRkb3duX3dyaXRlKFx1MDAyNnhkbmEtXHUwMDNlbm90aWZpZXJfbG9jayk7XG4gXHRpZiAobW11X2ludGVydmFsX3JlYWRfcmV0cnkoXHUwMDI2bWFwcC1cdTAwM2Vub3RpZmllciwgbWFwcC1cdTAwM2VyYW5nZS5ub3RpZmllcl9zZXEpKSB7XG5AQCAtMTA4Niw3ICYjNDM7MTA4Miw3IEBAIHN0YXRpYyBpbnQgYWllMl9wb3B1bGF0ZV9yYW5nZShzdHJ1Y3QgYW1keGRuYV9nZW1fb2JqICphYm8pXG4gcHV0X21tOlxuIFx0YW1keGRuYV91bWFwX3B1dChtYXBwKTtcbiBcdG1tcHV0KG1tKTtcbi1cdHJldHVybiByZXQ7XG4mIzQzO1x0cmV0dXJuIHJldCA9PSAtRUJVU1kgPyAtRVRJTUUgOiByZXQ7XG4gfVxuIFxuIGludCBhaWUyX2NtZF9zdWJtaXQoc3RydWN0IGFtZHhkbmFfaHdjdHggKmh3Y3R4LCBzdHJ1Y3QgYW1keGRuYV9zY2hlZF9qb2IgKmpvYiwgdTY0ICpzZXEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNcbmluZGV4IGI4ZjJkZDk5ODJmNTNjLi43NmU4YTAwMjhjN2ZjOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNcbkBAIC04NTIsOCAmIzQzOzg1Miw3IEBAIGVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBkcm1fZ3B1c3ZtX3NjYW5fbW0oc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlLFxuIFx0XHQuZW5kID0gZW5kLFxuIFx0XHQuZGV2X3ByaXZhdGVfb3duZXIgPSBkZXZfcHJpdmF0ZV9vd25lcixcbiBcdH07XG4tXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQgPVxuLVx0XHRqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcbiBcdGVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBzdGF0ZSA9IERSTV9HUFVTVk1fU0NBTl9VTlBPUFVMQVRFRCwgbmV3X3N0YXRlO1xuIFx0dW5zaWduZWQgbG9uZyAqcGZucztcbiBcdHVuc2lnbmVkIGxvbmcgbnBhZ2VzID0gbnBhZ2VzX2luX3JhbmdlKHN0YXJ0LCBlbmQpO1xuQEAgLTg2Nyw4ICYjNDM7ODY2LDcgQEAgZW51bSBkcm1fZ3B1c3ZtX3NjYW5fcmVzdWx0IGRybV9ncHVzdm1fc2Nhbl9tbShzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UsXG4gXHRobW1fcmFuZ2UuaG1tX3BmbnMgPSBwZm5zO1xuIFxuIHJldHJ5OlxuLVx0ZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2aG1tX3JhbmdlLFxuLVx0XHRcdFx0XHQgICAgICAgbWF4KHRpbWVvdXQgLSBqaWZmaWVzLCAxTCkpO1xuJiM0MztcdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFx1MDAyNmhtbV9yYW5nZSwgdGltZW91dCk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9mcmVlO1xuIFxuQEAgLTE0NTksOCAmIzQzOzE0NTcsNyBAQCBpbnQgZHJtX2dwdXN2bV9nZXRfcGFnZXMoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcbiBcdFx0LmRldl9wcml2YXRlX293bmVyID0gY3R4LVx1MDAzZWRldmljZV9wcml2YXRlX3BhZ2Vfb3duZXIsXG4gXHR9O1xuIFx0dm9pZCAqemRkO1xuLVx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID1cbi1cdFx0amlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XG4gXHR1bnNpZ25lZCBsb25nIGksIGo7XG4gXHR1bnNpZ25lZCBsb25nIG5wYWdlcyA9IG5wYWdlc19pbl9yYW5nZShwYWdlc19zdGFydCwgcGFnZXNfZW5kKTtcbiBcdHVuc2lnbmVkIGxvbmcgbnVtX2RtYV9tYXBwZWQ7XG5AQCAtMTQ3OCw5ICYjNDM7MTQ3NSw2IEBAIGludCBkcm1fZ3B1c3ZtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiByZXRyeTpcbi1cdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKVxuLVx0XHRyZXR1cm4gLUVCVVNZO1xuLVxuIFx0aG1tX3JhbmdlLm5vdGlmaWVyX3NlcSA9IG1tdV9pbnRlcnZhbF9yZWFkX2JlZ2luKG5vdGlmaWVyKTtcbiBcdGlmIChkcm1fZ3B1c3ZtX3BhZ2VzX3ZhbGlkX3VubG9ja2VkKGdwdXN2bSwgc3ZtX3BhZ2VzKSlcbiBcdFx0Z290byBzZXRfc2Vxbm87XG5AQCAtMTQ5NSw4ICYjNDM7MTQ4OSw3IEBAIGludCBkcm1fZ3B1c3ZtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuIFx0fVxuIFxuIFx0aG1tX3JhbmdlLmhtbV9wZm5zID0gcGZucztcbi1cdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFx1MDAyNmhtbV9yYW5nZSxcbi1cdFx0XHRcdG1heF90KGxvbmcsIHRpbWVvdXQgLSBqaWZmaWVzLCAxKSk7XG4mIzQzO1x0ZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2aG1tX3JhbmdlLCB0aW1lb3V0KTtcbiBcdG1tcHV0KG1tKTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZXJyX2ZyZWU7XG5AQCAtMTcxOCw4ICYjNDM7MTcxMSw3IEBAIGludCBkcm1fZ3B1c3ZtX3JhbmdlX2V2aWN0KHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXG4gXHRcdC5lbmQgPSBkcm1fZ3B1c3ZtX3JhbmdlX2VuZChyYW5nZSksXG4gXHRcdC5kZXZfcHJpdmF0ZV9vd25lciA9IE5VTEwsXG4gXHR9O1xuLVx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID1cbi1cdFx0amlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XG4gXHR1bnNpZ25lZCBsb25nICpwZm5zO1xuIFx0dW5zaWduZWQgbG9uZyBucGFnZXMgPSBucGFnZXNfaW5fcmFuZ2UoZHJtX2dwdXN2bV9yYW5nZV9zdGFydChyYW5nZSksXG4gXHRcdFx0XHRcdCAgICAgICBkcm1fZ3B1c3ZtX3JhbmdlX2VuZChyYW5nZSkpO1xuQEAgLTE3MzQsOCAmIzQzOzE3MjYsNyBAQCBpbnQgZHJtX2dwdXN2bV9yYW5nZV9ldmljdChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdGhtbV9yYW5nZS5obW1fcGZucyA9IHBmbnM7XG4tXHRlcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZobW1fcmFuZ2UsXG4tXHRcdFx0XHRtYXhfdChsb25nLCB0aW1lb3V0IC0gamlmZmllcywgMSkpO1xuJiM0MztcdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFx1MDAyNmhtbV9yYW5nZSwgdGltZW91dCk7XG4gXG4gXHRrdmZyZWUocGZucyk7XG4gXHRtbXB1dChtbSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmNcbmluZGV4IDRjZmI2ZWI3Yzc3MTVhLi5iMTQxNWMyZTQ5ZmNjZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmNcbkBAIC02NTUsOCAmIzQzOzY1NSw3IEBAIHN0YXRpYyBpbnQgbm91dmVhdV9yYW5nZV9mYXVsdChzdHJ1Y3Qgbm91dmVhdV9zdm1tICpzdm1tLFxuIFx0XHRcdCAgICAgICB1bnNpZ25lZCBsb25nIGhtbV9mbGFncyxcbiBcdFx0XHQgICAgICAgc3RydWN0IHN2bV9ub3RpZmllciAqbm90aWZpZXIpXG4ge1xuLVx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID1cbi1cdFx0amlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XG4gXHQvKiBIYXZlIEhNTSBmYXVsdCBwYWdlcyB3aXRoaW4gdGhlIGZhdWx0IHdpbmRvdyB0byB0aGUgR1BVLiAqL1xuIFx0dW5zaWduZWQgbG9uZyBobW1fcGZuc1sxXTtcbiBcdHN0cnVjdCBobW1fcmFuZ2UgcmFuZ2UgPSB7XG5AQCAtNjc3LDI1ICYjNDM7Njc2LDE2IEBAIHN0YXRpYyBpbnQgbm91dmVhdV9yYW5nZV9mYXVsdChzdHJ1Y3Qgbm91dmVhdV9zdm1tICpzdm1tLFxuIFx0cmFuZ2Uuc3RhcnQgPSBub3RpZmllci1cdTAwM2Vub3RpZmllci5pbnRlcnZhbF90cmVlLnN0YXJ0O1xuIFx0cmFuZ2UuZW5kID0gbm90aWZpZXItXHUwMDNlbm90aWZpZXIuaW50ZXJ2YWxfdHJlZS5sYXN0ICYjNDM7IDE7XG4gXG4tXHR3aGlsZSAodHJ1ZSkge1xuLVx0XHRpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkge1xuLVx0XHRcdHJldCA9IC1FQlVTWTtcbi1cdFx0XHRnb3RvIG91dDtcbi1cdFx0fVxuLVxuLVx0XHRyZXQgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZyYW5nZSxcbi1cdFx0XHRcdFx0XHQgICAgICAgbWF4KHRpbWVvdXQgLSBqaWZmaWVzLFxuLVx0XHRcdFx0XHRcdFx0ICAgMUwpKTtcbi1cdFx0aWYgKHJldClcbi1cdFx0XHRnb3RvIG91dDtcbiYjNDM7YWdhaW46XG4mIzQzO1x0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2cmFuZ2UsIHRpbWVvdXQpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiBcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZzdm1tLVx1MDAzZW11dGV4KTtcbi1cdFx0aWYgKG1tdV9pbnRlcnZhbF9yZWFkX3JldHJ5KHJhbmdlLm5vdGlmaWVyLFxuLVx0XHRcdFx0XHQgICAgcmFuZ2Uubm90aWZpZXJfc2VxKSkge1xuLVx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZzdm1tLVx1MDAzZW11dGV4KTtcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0fVxuLVx0XHRicmVhaztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnN2bW0tXHUwMDNlbXV0ZXgpO1xuJiM0MztcdGlmIChtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeShyYW5nZS5ub3RpZmllcixcbiYjNDM7XHRcdFx0XHQgICAgcmFuZ2Uubm90aWZpZXJfc2VxKSkge1xuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnN2bW0tXHUwMDNlbXV0ZXgpO1xuJiM0MztcdFx0Z290byBhZ2FpbjtcbiBcdH1cbiBcbiBcdG5vdXZlYXVfaG1tX2NvbnZlcnRfcGZuKGRybSwgXHUwMDI2cmFuZ2UsIGFyZ3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB1c2FnZSBvZiBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCBpbiB0aHJlZSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzOiBBTUQgWEROQSAoZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMpLCBJbnRlbCBYZSAoZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYywgc2VsZWN0ZWQgb25seSBieSBEUk1fWEUpLCBhbmQgTnZpZGlhIE5vdXZlYXUgKGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmMpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgUENJIGhhcmR3YXJlIChOUFVzL0dQVXMpIHRvIHN1Y2Nlc3NmdWxseSBwcm9iZSBhbmQgY3JlYXRlIGRldmljZSBub2Rlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGY2MzFhZjBhNDNjMWMyNTNlZGQzMjEzZjBmNTM5YmJlYjMyYmM3OGYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAwNjo1NzoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdCBiL0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdAppbmRleCA1Yzg4ZDJjZjA4MTgzMy4uZmMxYjhkYzE5ODI1MGUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QKQEAgLTIwNiw3ICYjNDM7MjA2LDcgQEAgVGhlIHVzYWdlIHBhdHRlcm4gaXM6OgogICAgICAgICAgIGdvdG8gb3V0X3B1dDsKIAogICAgICAgdGFrZV9sb2NrKGRyaXZlci0mZ3Q7dXBkYXRlKTsKLSAgICAgIGlmIChtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeSgmYW1wO2ludGVydmFsX3N1YiwgcmFuZ2Uubm90aWZpZXJfc2VxKSkgewomIzQzOyAgICAgIGlmIChtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeShyYW5nZS5ub3RpZmllciwgcmFuZ2Uubm90aWZpZXJfc2VxKSkgewogICAgICAgICAgIHJlbGVhc2VfbG9jayhkcml2ZXItJmd0O3VwZGF0ZSk7CiAgICAgICAgICAgZ290byBhZ2FpbjsKICAgICAgIH0KQEAgLTIyNSw3ICYjNDM7MjI1LDggQEAgVGhlIHVzYWdlIHBhdHRlcm4gaXM6OgogVGhlIGRyaXZlci0mZ3Q7dXBkYXRlIGxvY2sgaXMgdGhlIHNhbWUgbG9jayB0aGF0IHRoZSBkcml2ZXIgdGFrZXMgaW5zaWRlIGl0cwogaW52YWxpZGF0ZSgpIGNhbGxiYWNrLiBUaGF0IGxvY2sgbXVzdCBiZSBoZWxkIGJlZm9yZSBjYWxsaW5nCiBtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeSgpIHRvIGF2b2lkIGFueSByYWNlIHdpdGggYSBjb25jdXJyZW50IENQVSBwYWdlIHRhYmxlCi11cGRhdGUuCiYjNDM7dXBkYXRlLiBUaGUgcmV0cnkgY2hlY2sgbXVzdCB1c2UgdGhlIHNhbWUgbm90aWZpZXIgYW5kIHNlcXVlbmNlIG51bWJlciBzdG9yZWQKJiM0MztpbiBgYHJhbmdlYGAgYnkgYGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgpYGAuCiAKIEhvbGRpbmcgdGhlIG1tYXAgbG9jayBhY3Jvc3MgSE1NIGZhdWx0cwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9jdHguYyBiL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jCmluZGV4IDU0OGJhNDMxNTU1NGZmLi4yMWYyODE3NzUxZjllNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMKQEAgLTEwMzcsNyAmIzQzOzEwMzcsNyBAQCBzdGF0aWMgaW50IGFpZTJfcG9wdWxhdGVfcmFuZ2Uoc3RydWN0IGFtZHhkbmFfZ2VtX29iaiAqYWJvKQogCWJvb2wgZm91bmQ7CiAJaW50IHJldDsKIAotCXRpbWVvdXQgPSBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7CiYjNDM7CXRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpOwogYWdhaW46CiAJZm91bmQgPSBmYWxzZTsKIAlkb3duX3dyaXRlKCZhbXA7eGRuYS0mZ3Q7bm90aWZpZXJfbG9jayk7CkBAIC0xMDYyLDEzICYjNDM7MTA2Miw5IEBAIHN0YXRpYyBpbnQgYWllMl9wb3B1bGF0ZV9yYW5nZShzdHJ1Y3QgYW1keGRuYV9nZW1fb2JqICphYm8pCiAJCXJldHVybiAtRUZBVUxUOwogCX0KIAotCXJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KCZhbXA7bWFwcC0mZ3Q7cmFuZ2UsCi0JCQltYXhfdChsb25nLCB0aW1lb3V0IC0gamlmZmllcywgMSkpOwotCWlmIChyZXQpIHsKLQkJaWYgKHJldCA9PSAtRUJVU1kpCi0JCQlyZXQgPSAtRVRJTUU7CiYjNDM7CXJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KCZhbXA7bWFwcC0mZ3Q7cmFuZ2UsIHRpbWVvdXQpOwomIzQzOwlpZiAocmV0KQogCQlnb3RvIHB1dF9tbTsKLQl9CiAKIAlkb3duX3dyaXRlKCZhbXA7eGRuYS0mZ3Q7bm90aWZpZXJfbG9jayk7CiAJaWYgKG1tdV9pbnRlcnZhbF9yZWFkX3JldHJ5KCZhbXA7bWFwcC0mZ3Q7bm90aWZpZXIsIG1hcHAtJmd0O3JhbmdlLm5vdGlmaWVyX3NlcSkpIHsKQEAgLTEwODYsNyAmIzQzOzEwODIsNyBAQCBzdGF0aWMgaW50IGFpZTJfcG9wdWxhdGVfcmFuZ2Uoc3RydWN0IGFtZHhkbmFfZ2VtX29iaiAqYWJvKQogcHV0X21tOgogCWFtZHhkbmFfdW1hcF9wdXQobWFwcCk7CiAJbW1wdXQobW0pOwotCXJldHVybiByZXQ7CiYjNDM7CXJldHVybiByZXQgPT0gLUVCVVNZID8gLUVUSU1FIDogcmV0OwogfQogCiBpbnQgYWllMl9jbWRfc3VibWl0KHN0cnVjdCBhbWR4ZG5hX2h3Y3R4ICpod2N0eCwgc3RydWN0IGFtZHhkbmFfc2NoZWRfam9iICpqb2IsIHU2NCAqc2VxKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMKaW5kZXggYjhmMmRkOTk4MmY1M2MuLjc2ZThhMDAyOGM3ZmM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMKQEAgLTg1Miw4ICYjNDM7ODUyLDcgQEAgZW51bSBkcm1fZ3B1c3ZtX3NjYW5fcmVzdWx0IGRybV9ncHVzdm1fc2Nhbl9tbShzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UsCiAJCS5lbmQgPSBlbmQsCiAJCS5kZXZfcHJpdmF0ZV9vd25lciA9IGRldl9wcml2YXRlX293bmVyLAogCX07Ci0JdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0KLQkJamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpOwomIzQzOwl1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpOwogCWVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBzdGF0ZSA9IERSTV9HUFVTVk1fU0NBTl9VTlBPUFVMQVRFRCwgbmV3X3N0YXRlOwogCXVuc2lnbmVkIGxvbmcgKnBmbnM7CiAJdW5zaWduZWQgbG9uZyBucGFnZXMgPSBucGFnZXNfaW5fcmFuZ2Uoc3RhcnQsIGVuZCk7CkBAIC04NjcsOCAmIzQzOzg2Niw3IEBAIGVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBkcm1fZ3B1c3ZtX3NjYW5fbW0oc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlLAogCWhtbV9yYW5nZS5obW1fcGZucyA9IHBmbnM7CiAKIHJldHJ5OgotCWVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KCZhbXA7aG1tX3JhbmdlLAotCQkJCQkgICAgICAgbWF4KHRpbWVvdXQgLSBqaWZmaWVzLCAxTCkpOwomIzQzOwllcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgmYW1wO2htbV9yYW5nZSwgdGltZW91dCk7CiAJaWYgKGVycikKIAkJZ290byBlcnJfZnJlZTsKIApAQCAtMTQ1OSw4ICYjNDM7MTQ1Nyw3IEBAIGludCBkcm1fZ3B1c3ZtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLAogCQkuZGV2X3ByaXZhdGVfb3duZXIgPSBjdHgtJmd0O2RldmljZV9wcml2YXRlX3BhZ2Vfb3duZXIsCiAJfTsKIAl2b2lkICp6ZGQ7Ci0JdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0KLQkJamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpOwomIzQzOwl1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpOwogCXVuc2lnbmVkIGxvbmcgaSwgajsKIAl1bnNpZ25lZCBsb25nIG5wYWdlcyA9IG5wYWdlc19pbl9yYW5nZShwYWdlc19zdGFydCwgcGFnZXNfZW5kKTsKIAl1bnNpZ25lZCBsb25nIG51bV9kbWFfbWFwcGVkOwpAQCAtMTQ3OCw5ICYjNDM7MTQ3NSw2IEBAIGludCBkcm1fZ3B1c3ZtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLAogCQlyZXR1cm4gLUVJTlZBTDsKIAogcmV0cnk6Ci0JaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpCi0JCXJldHVybiAtRUJVU1k7Ci0KIAlobW1fcmFuZ2Uubm90aWZpZXJfc2VxID0gbW11X2ludGVydmFsX3JlYWRfYmVnaW4obm90aWZpZXIpOwogCWlmIChkcm1fZ3B1c3ZtX3BhZ2VzX3ZhbGlkX3VubG9ja2VkKGdwdXN2bSwgc3ZtX3BhZ2VzKSkKIAkJZ290byBzZXRfc2Vxbm87CkBAIC0xNDk1LDggJiM0MzsxNDg5LDcgQEAgaW50IGRybV9ncHVzdm1fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sCiAJfQogCiAJaG1tX3JhbmdlLmhtbV9wZm5zID0gcGZuczsKLQllcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgmYW1wO2htbV9yYW5nZSwKLQkJCQltYXhfdChsb25nLCB0aW1lb3V0IC0gamlmZmllcywgMSkpOwomIzQzOwllcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgmYW1wO2htbV9yYW5nZSwgdGltZW91dCk7CiAJbW1wdXQobW0pOwogCWlmIChlcnIpCiAJCWdvdG8gZXJyX2ZyZWU7CkBAIC0xNzE4LDggJiM0MzsxNzExLDcgQEAgaW50IGRybV9ncHVzdm1fcmFuZ2VfZXZpY3Qoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSwKIAkJLmVuZCA9IGRybV9ncHVzdm1fcmFuZ2VfZW5kKHJhbmdlKSwKIAkJLmRldl9wcml2YXRlX293bmVyID0gTlVMTCwKIAl9OwotCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9Ci0JCWppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTsKJiM0MzsJdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTsKIAl1bnNpZ25lZCBsb25nICpwZm5zOwogCXVuc2lnbmVkIGxvbmcgbnBhZ2VzID0gbnBhZ2VzX2luX3JhbmdlKGRybV9ncHVzdm1fcmFuZ2Vfc3RhcnQocmFuZ2UpLAogCQkJCQkgICAgICAgZHJtX2dwdXN2bV9yYW5nZV9lbmQocmFuZ2UpKTsKQEAgLTE3MzQsOCAmIzQzOzE3MjYsNyBAQCBpbnQgZHJtX2dwdXN2bV9yYW5nZV9ldmljdChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLAogCQlyZXR1cm4gLUVOT01FTTsKIAogCWhtbV9yYW5nZS5obW1fcGZucyA9IHBmbnM7Ci0JZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoJmFtcDtobW1fcmFuZ2UsCi0JCQkJbWF4X3QobG9uZywgdGltZW91dCAtIGppZmZpZXMsIDEpKTsKJiM0MzsJZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoJmFtcDtobW1fcmFuZ2UsIHRpbWVvdXQpOwogCiAJa3ZmcmVlKHBmbnMpOwogCW1tcHV0KG1tKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jCmluZGV4IDRjZmI2ZWI3Yzc3MTVhLi5iMTQxNWMyZTQ5ZmNjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jCkBAIC02NTUsOCAmIzQzOzY1NSw3IEBAIHN0YXRpYyBpbnQgbm91dmVhdV9yYW5nZV9mYXVsdChzdHJ1Y3Qgbm91dmVhdV9zdm1tICpzdm1tLAogCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgaG1tX2ZsYWdzLAogCQkJICAgICAgIHN0cnVjdCBzdm1fbm90aWZpZXIgKm5vdGlmaWVyKQogewotCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9Ci0JCWppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTsKJiM0MzsJdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTsKIAkvKiBIYXZlIEhNTSBmYXVsdCBwYWdlcyB3aXRoaW4gdGhlIGZhdWx0IHdpbmRvdyB0byB0aGUgR1BVLiAqLwogCXVuc2lnbmVkIGxvbmcgaG1tX3BmbnNbMV07CiAJc3RydWN0IGhtbV9yYW5nZSByYW5nZSA9IHsKQEAgLTY3NywyNSAmIzQzOzY3NiwxNiBAQCBzdGF0aWMgaW50IG5vdXZlYXVfcmFuZ2VfZmF1bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSwKIAlyYW5nZS5zdGFydCA9IG5vdGlmaWVyLSZndDtub3RpZmllci5pbnRlcnZhbF90cmVlLnN0YXJ0OwogCXJhbmdlLmVuZCA9IG5vdGlmaWVyLSZndDtub3RpZmllci5pbnRlcnZhbF90cmVlLmxhc3QgJiM0MzsgMTsKIAotCXdoaWxlICh0cnVlKSB7Ci0JCWlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKSB7Ci0JCQlyZXQgPSAtRUJVU1k7Ci0JCQlnb3RvIG91dDsKLQkJfQotCi0JCXJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KCZhbXA7cmFuZ2UsCi0JCQkJCQkgICAgICAgbWF4KHRpbWVvdXQgLSBqaWZmaWVzLAotCQkJCQkJCSAgIDFMKSk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIG91dDsKJiM0MzthZ2FpbjoKJiM0MzsJcmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoJmFtcDtyYW5nZSwgdGltZW91dCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlnb3RvIG91dDsKIAotCQltdXRleF9sb2NrKCZhbXA7c3ZtbS0mZ3Q7bXV0ZXgpOwotCQlpZiAobW11X2ludGVydmFsX3JlYWRfcmV0cnkocmFuZ2Uubm90aWZpZXIsCi0JCQkJCSAgICByYW5nZS5ub3RpZmllcl9zZXEpKSB7Ci0JCQltdXRleF91bmxvY2soJmFtcDtzdm1tLSZndDttdXRleCk7Ci0JCQljb250aW51ZTsKLQkJfQotCQlicmVhazsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3N2bW0tJmd0O211dGV4KTsKJiM0MzsJaWYgKG1tdV9pbnRlcnZhbF9yZWFkX3JldHJ5KHJhbmdlLm5vdGlmaWVyLAomIzQzOwkJCQkgICAgcmFuZ2Uubm90aWZpZXJfc2VxKSkgewomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7c3ZtbS0mZ3Q7bXV0ZXgpOwomIzQzOwkJZ290byBhZ2FpbjsKIAl9CiAKIAlub3V2ZWF1X2htbV9jb252ZXJ0X3Bmbihkcm0sICZhbXA7cmFuZ2UsIGFyZ3MpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzQ5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSG1tIFJhbmdlIEZhdWx0IFRpbWVvdXQgQ2hhbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMsIGFuZCBpdCYjMzk7cyBtYWtpbmcgc29tZSBjaGFuZ2VzIHRvIGhvdyB3ZSBoYW5kbGUgdGltZW91dHMgd2l0aCBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyBpdHMgdXNhZ2UgaW4gYSBmZXcga2V5IGRyaXZlcnM6IGBhbWR4ZG5hYCwgYGRybV9ncHVzdm1gLCBhbmQgYG5vdXZlYXVfc3ZtYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhYm91dCB0aGUgdGltZW91dCB2YWx1ZSBiZWluZyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLiBJdCYjMzk7cyBzd2l0Y2hpbmcgZnJvbSBhbiBhYnNvbHV0ZSBqaWZmaWVzIG9yIHJlbWFpbmluZyBqaWZmaWVzIHRvIGEgcmVsYXRpdmUgdGltZW91dCDigJMgc29tZXRoaW5nIGxpa2UgYG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVClgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IHNoaWZ0LgoKVGhlIHBhdGNoIGFsc28gdG91Y2hlcyBvbiBgbW11X2ludGVydmFsX3JlYWRfcmV0cnlgIHdpdGhpbiB0aGUgYERvY3VtZW50YXRpb24vbW0vaG1tLnJzdGAgYW5kIHRoZSBgbm91dmVhdV9zdm0uY2AgZmlsZXMuIEhhbmcgb24sIHRoZSBgbm91dmVhdWAgcGFydCBsb29rcyBsaWtlIGl0JiMzOTtzIGp1c3QgYSBsb29wIHJlZmFjdG9yaW5nLCBhbmQgdGhhdCBjb2RlIGFscmVhZHkgbWFrZXMgdXNlIG9mIHRoZSByYW5nZSBub3RpZmllci4gSG1tLCBzbyBtYXliZSB0aGUgZm9jdXMgaXMgb24gdGhlIGRvY3VtZW50YXRpb24gdXBkYXRlIGFuZCBlbnN1cmluZyBjb25zaXN0ZW5jeSBhY3Jvc3MgYWxsIGltcGxlbWVudGF0aW9ucz8KClJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgIGZ1bmN0aW9uIGl0c2VsZiBhbmQgaG93IGl0JiMzOTtzIHVzZWQuIEkmIzM5O2xsIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWUgd2hhdCBjb21lcyB1cC4gTmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hhbmdlLiBJcyB0aGlzIGFib3V0IGltcHJvdmluZyB0aW1lb3V0IGdyYW51bGFyaXR5PyBSZWR1Y2luZyBwb3RlbnRpYWwgZm9yIHJhY2UgY29uZGl0aW9ucz8gT3IgbWF5YmUgaXQmIzM5O3Mgc2ltcGxpZnlpbmcgdGhlIGxvZ2ljIGZvciBzcGVjaWZ5aW5nIHRoZSB0aW1lb3V0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgJiMzOTt3aHkmIzM5OyBiZWhpbmQgdGhpcyBjaGFuZ2UgYmVmb3JlIEkgY2FuIHByb3Blcmx5IGFzc2VzcyBpdC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW5kIHRyYWNlIGl0cyBjYWxsZXJzIHRvIGdhaW4gYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL21tL2htbS5yc3Q9MTYwPW5vcm1hbCBpbnRlcmZhY2UgaXM6OlxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTE2MS1cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDoxNjI6ICBpbnQgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UsXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMTYzLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7XG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0PTE2OT1UaGUgY2FsbGVyIG11c3Qgbm90IGhvbGQgYGBtbWFwX3JlYWRfbG9ja2BgIGJlZm9yZSB0aGUgY2FsbC5cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDoxNzA6YGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgpYGAgdGFrZXMgdGhlIG1tYXAgcmVhZCBsb2NrIGludGVybmFsbHkgYW5kXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMTcxLWFsbG93cyBgYGhhbmRsZV9tbV9mYXVsdCgpYGAgdG8gZHJvcCBpdCBkdXJpbmcgZmF1bHQgaGFuZGxpbmcuIFRoaXMgaXMgcmVxdWlyZWRcbi0tXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q9MTg2PVRoZSB1c2FnZSBwYXR0ZXJuIGlzOjpcbi0tXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMjAzLSBhZ2FpbjpcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDoyMDQ6ICAgICAgcmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2cmFuZ2UsIHRpbWVvdXQpO1xuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTIwNS0gICAgICBpZiAocmV0KVxuLS1cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yMjg9dXBkYXRlLiBUaGUgcmV0cnkgY2hlY2sgbXVzdCB1c2UgdGhlIHNhbWUgbm90aWZpZXIgYW5kIHNlcXVlbmNlIG51bWJlciBzdG9yZWRcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDoyMjk6aW4gYGByYW5nZWBgIGJ5IGBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoKWBgLlxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTIzMC1cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yMzE9SG9sZGluZyB0aGUgbW1hcCBsb2NrIGFjcm9zcyBITU0gZmF1bHRzXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTIzMy1cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDoyMzQ6TW9zdCBjYWxsZXJzIHNob3VsZCB1c2UgYGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgpYGAuIElmIGEgZHJpdmVyXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMjM1LXJlYWxseSBuZWVkcyB0byBob2xkIHRoZSBtbWFwIGxvY2sgYWNyb3NzIHdvcmsgb3V0c2lkZSBITU0sIGl0IGNhbiB1c2U6OlxuLS1cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yNDA9aW50ZXJmYWNlIGNhbm5vdCBzdXBwb3J0IFZNQXMgd2hvc2UgZmF1bHQgaGFuZGxlcnMgbmVlZCB0byBkcm9wIHRoZSBtbWFwIGxvY2suXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MjQxOk5ldyBjYWxsZXJzIHNob3VsZCBwcmVmZXIgYGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgpYGAgdW5sZXNzIHRoZXlcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdC0yNDItaGF2ZSBhIHNwZWNpZmljIHJlcXVpcmVtZW50IHRvIGtlZXAgdGhlIG1tYXAgbG9jayBoZWxkIGFjcm9zcyB0aGUgY2FsbC5cbi0tXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9jdHguYz0xMDMxPXN0YXRpYyBpbnQgYWllMl9wb3B1bGF0ZV9yYW5nZShzdHJ1Y3QgYW1keGRuYV9nZW1fb2JqICphYm8pXG4tLVxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMtMTA2NC1cbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jOjEwNjU6XHRyZXQgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZtYXBwLVx1MDAzZXJhbmdlLCB0aW1lb3V0KTtcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jLTEwNjYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM9ODQxPWVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBkcm1fZ3B1c3ZtX3NjYW5fbW0oc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODY4LXJldHJ5OlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo4Njk6XHRlcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZobW1fcmFuZ2UsIHRpbWVvdXQpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NzAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM9MTQ0ND1pbnQgZHJtX2dwdXN2bV9nZXRfcGFnZXMoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE0OTEtXHRobW1fcmFuZ2UuaG1tX3BmbnMgPSBwZm5zO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxNDkyOlx0ZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2aG1tX3JhbmdlLCB0aW1lb3V0KTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTQ5My1cdG1tcHV0KG1tKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jPTE3MDM9aW50IGRybV9ncHVzdm1fcmFuZ2VfZXZpY3Qoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE3MjgtXHRobW1fcmFuZ2UuaG1tX3BmbnMgPSBwZm5zO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxNzI5Olx0ZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2aG1tX3JhbmdlLCB0aW1lb3V0KTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTczMC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jPTY1Mj1zdGF0aWMgaW50IG5vdXZlYXVfcmFuZ2VfZmF1bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jLTY3OS1hZ2FpbjpcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmM6NjgwOlx0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2cmFuZ2UsIHRpbWVvdXQpO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYy02ODEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvaHYvbXNodl9yZWdpb25zLmM9Mzk2PXN0YXRpYyBpbnQgbXNodl9yZWdpb25fcmFuZ2VfZmF1bHQoc3RydWN0IG1zaHZfbWVtX3JlZ2lvbiAqcmVnaW9uLFxuLS1cbmRyaXZlcnMvaHYvbXNodl9yZWdpb25zLmMtNDE1LWFnYWluOlxuZHJpdmVycy9odi9tc2h2X3JlZ2lvbnMuYzo0MTY6XHRyZXQgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZyYW5nZSwgMCk7XG5kcml2ZXJzL2h2L21zaHZfcmVnaW9ucy5jLTQxNy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbV9vZHAuYz0zMjQ9aW50IGliX3VtZW1fb2RwX21hcF9kbWFfYW5kX2xvY2soc3RydWN0IGliX3VtZW1fb2RwICp1bWVtX29kcCwgdTY0IHVzZXJfdmlydCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtX29kcC5jLTM2OC1yZXRyeTpcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW1fb2RwLmM6MzY5Olx0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2cmFuZ2UsIHRpbWVvdXQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbV9vZHAuYy0zNzAtXHRpZiAodW5saWtlbHkocmV0KSlcbi0tXG5pbmNsdWRlL2xpbnV4L2htbS5oPTEyNT1pbnQgaG1tX3JhbmdlX2ZhdWx0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlKTtcbmluY2x1ZGUvbGludXgvaG1tLmg6MTI2OmludCBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSxcbmluY2x1ZGUvbGludXgvaG1tLmgtMTI3LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQpO1xuLS1cbmxpYi90ZXN0X2htbS5jPTM5Mj1zdGF0aWMgaW50IGRtaXJyb3JfcmFuZ2VfZmF1bHRfdW5sb2NrZWQoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXG4tLVxubGliL3Rlc3RfaG1tLmMtMzk4LVx0d2hpbGUgKHRydWUpIHtcbmxpYi90ZXN0X2htbS5jOjM5OTpcdFx0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQocmFuZ2UsIHRpbWVvdXQpO1xubGliL3Rlc3RfaG1tLmMtNDAwLVx0XHRpZiAocmV0KVxuLS1cbm1tL2htbS5jPTY4OT1zdGF0aWMgaW50IGhtbV9yYW5nZV9mYXVsdF9sb2NrZWQoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UsIGJvb2wgKmxvY2tlZClcbi0tXG5tbS9obW0uYy03NTMtICogVGhlIG1tYXAgbG9jayBtdXN0IGJlIGhlbGQgYnkgdGhlIGNhbGxlciBhbmQgd2lsbCByZW1haW4gaGVsZCBvbiByZXR1cm4uXG5tbS9obW0uYzo3NTQ6ICogTmV3IHVzZXJzIHNob3VsZCBwcmVmZXIgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoKSB1bmxlc3MgdGhleVxubW0vaG1tLmMtNzU1LSAqIHNwZWNpZmljYWxseSBuZWVkIHRvIGtlZXAgdGhlIG1tYXAgbG9jayBoZWxkIGFjcm9zcyB0aGUgY2FsbC4gVGhpcyBoZWxwZXJcbi0tXG5tbS9obW0uYz03NjI9RVhQT1JUX1NZTUJPTChobW1fcmFuZ2VfZmF1bHQpO1xuLS1cbm1tL2htbS5jLTc2NC0vKipcbm1tL2htbS5jOjc2NTogKiBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCAtIGZhdWx0IGluIGEgcmFuZ2Ugd2l0aCBhIHJldHJ5IHRpbWVvdXRcbm1tL2htbS5jLTc2Ni0gKiBAcmFuZ2U6XHRhcmd1bWVudCBzdHJ1Y3R1cmVcbi0tXG5tbS9obW0uYy03ODMtICovXG5tbS9obW0uYzo3ODQ6aW50IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLFxubW0vaG1tLmMtNzg1LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQpXG4tLVxubW0vaG1tLmMtODI0LX1cbm1tL2htbS5jOjgyNTpFWFBPUlRfU1lNQk9MKGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KTtcbm1tL2htbS5jLTgyNi1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9obW0tdGVzdHMuYz0yOTA0PVRFU1RfRl9USU1FT1VUKGhtbSwgYmVuY2htYXJrX3RocF9taWdyYXRpb24sIDEyMClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9obW0tdGVzdHMuYy0yOTYwLSAqIFRlc3QgdGhhdCBITU0gY2FuIGZhdWx0IGluIHBhZ2VzIGJhY2tlZCBieSB1c2VyZmF1bHRmZCB1c2luZyB0aGVcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2htbS10ZXN0cy5jOjI5NjE6ICogaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoKSBwYXRoIHdpdGggbm8gdGltZW91dC4gVGhpcyBleGVyY2lzZXNcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2htbS10ZXN0cy5jLTI5NjItICogdGhlIGxvY2stZHJvcCByZXRyeSBsb2dpYyBpbiB0aGUgSE1NIGZyYW1ld29yay5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTkxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUaW1lb3V0IENoYW5nZXMgaW4gSE1NIEZhdWx0IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBwYXRjaCBjaGFuZ2VzLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUgY29kZSBpcyBtb2RpZnlpbmcgaG93IGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAgaXMgY2FsbGVkIGluIGEgZmV3IGNyaXRpY2FsIGFyZWFzOiBgYW1keGRuYWAsIGBkcm1fZ3B1c3ZtYCwgYW5kIGBub3V2ZWF1X3N2bWAuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgY2hhbmdpbmcgdGhlIHRpbWVvdXQgcGFyYW1ldGVyLiBQcmV2aW91c2x5LCBpdCB3YXMgZWl0aGVyIGFuIGFic29sdXRlIGppZmZpZXMgdmFsdWUgb3IsIGF0IGxlYXN0LCB0aGUgKnJlbWFpbmluZyogamlmZmllcyB1bnRpbCBhIHRpbWVvdXQuIE5vdywgaXQmIzM5O3MgYmVpbmcgY29udmVydGVkIHRvIGEgKnJlbGF0aXZlKiB0aW1lb3V0LCB3aGljaCBpcyBpbnRlcmVzdGluZy4KCldhaXQgYSBzZWNvbmQuLi4gZG9lcyBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgIGFjdHVhbGx5IGV4cGVjdCBhIHJlbGF0aXZlIHRpbWVvdXQ/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gTGV0IG1lIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGluIGBtbS9obW0uY2AuIEkgaGF2ZSB0byBiZSBzdXJlIHRoZSBjaGFuZ2UgaXMgY29ycmVjdC4gSXQmIzM5O3MgZWFzeSB0byBtYWtlIGEgc3VidGxlIG1pc3Rha2UgdGhlcmUgYW5kIGludHJvZHVjZSBhIHNlcmlvdXMgaXNzdWUuIEdvdHRhIGNvbmZpcm0gdGhlIHNlbWFudGljcyBvZiB0aGF0IHRpbWVvdXQgcGFyYW1ldGVyIGJlZm9yZSBJIHNpZ24gb2ZmIG9uIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9obW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9obW0uYz02ODk9c3RhdGljIGludCBobW1fcmFuZ2VfZmF1bHRfbG9ja2VkKHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLCBib29sICpsb2NrZWQpXG4tLVxubW0vaG1tLmMtNzUzLSAqIFRoZSBtbWFwIGxvY2sgbXVzdCBiZSBoZWxkIGJ5IHRoZSBjYWxsZXIgYW5kIHdpbGwgcmVtYWluIGhlbGQgb24gcmV0dXJuLlxubW0vaG1tLmM6NzU0OiAqIE5ldyB1c2VycyBzaG91bGQgcHJlZmVyIGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KCkgdW5sZXNzIHRoZXlcbm1tL2htbS5jLTc1NS0gKiBzcGVjaWZpY2FsbHkgbmVlZCB0byBrZWVwIHRoZSBtbWFwIGxvY2sgaGVsZCBhY3Jvc3MgdGhlIGNhbGwuIFRoaXMgaGVscGVyXG4tLVxubW0vaG1tLmM9NzYyPUVYUE9SVF9TWU1CT0woaG1tX3JhbmdlX2ZhdWx0KTtcbi0tXG5tbS9obW0uYy03NjQtLyoqXG5tbS9obW0uYzo3NjU6ICogaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgLSBmYXVsdCBpbiBhIHJhbmdlIHdpdGggYSByZXRyeSB0aW1lb3V0XG5tbS9obW0uYy03NjYtICogQHJhbmdlOlx0YXJndW1lbnQgc3RydWN0dXJlXG4tLVxubW0vaG1tLmMtNzgzLSAqL1xubW0vaG1tLmM6Nzg0OmludCBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSxcbm1tL2htbS5jLTc4NS1cdFx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0KVxuLS1cbm1tL2htbS5jLTgyNC19XG5tbS9obW0uYzo4MjU6RVhQT1JUX1NZTUJPTChobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCk7XG5tbS9obW0uYy04MjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkxNAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYG1tL2htbS5jYCAtIExpbmUgNzg0KioKCk9rYXksIEkmIzM5O20gdGhpbmtpbmcgd2UgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIG1lbW9yeSBtYW5hZ2VtZW50LCBzbyBsZXQmIzM5O3MgemVybyBpbiBvbiBgbW0vaG1tLmNgLiBJJiMzOTttIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIGxpbmUgNzg0IOKAkyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgcGFydGljdWxhciBzdWJzeXN0ZW0gaXMgaGFuZGxpbmcgdGhpbmdzLiBJJiMzOTttIGFzc3VtaW5nIGl0JiMzOTtzIHByb2JhYmx5IHJlbGF0ZWQgdG8gYWxsb2NhdGlvbiwgZGVhbGxvY2F0aW9uLCBvciBwb3NzaWJseSBldmVuIHRyYWNraW5nIG1ldGFkYXRhLCBnaXZlbiB0aGUgdHlwaWNhbCBwYXR0ZXJucyBJJiMzOTt2ZSBzZWVuIGluIHRoZXNlIGtpbmRzIG9mIGtlcm5lbCBtZW1vcnkgbWFuYWdlbWVudCBpbXBsZW1lbnRhdGlvbnMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSAqaGFwcGVuaW5nKiB0aGVyZS4gSG9wZWZ1bGx5LCB0aGVyZSBhcmUgc29tZSBjbGFyaWZ5aW5nIGNvbW1lbnRzIGFyb3VuZCB0aGF0IGFyZWEhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9obW0uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc2NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzY0Olx0LyoqXG4gNzY1Olx0ICogaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgLSBmYXVsdCBpbiBhIHJhbmdlIHdpdGggYSByZXRyeSB0aW1lb3V0XG4gNzY2Olx0ICogQHJhbmdlOlx0YXJndW1lbnQgc3RydWN0dXJlXG4gNzY3Olx0ICogQHRpbWVvdXQ6XHR0aW1lb3V0IGluIGppZmZpZXMgZm9yIGludGVybmFsIC1FQlVTWSByZXRyaWVzLCBvciAwIHRvIHJldHJ5XG4gNzY4Olx0ICpcdFx0aW5kZWZpbml0ZWx5XG4gNzY5Olx0ICpcbiA3NzA6XHQgKiBUaGUgY2FsbGVyIG11c3Qgbm90IGhvbGQgdGhlIG1tYXAgbG9jay4gVGhlIGZ1bmN0aW9uIHRha2VzIHRoZSBtbWFwIHJlYWRcbiA3NzE6XHQgKiBsb2NrIGludGVybmFsbHkgYW5kIGFsbG93cyBoYW5kbGVfbW1fZmF1bHQoKSB0byBkcm9wIGl0IGR1cmluZyBmYXVsdHMuIElmXG4gNzcyOlx0ICogdGhlIG1tYXAgbG9jayBpcyBkcm9wcGVkIG9yIHRoZSByYW5nZSBpcyBpbnZhbGlkYXRlZCwgdGhlIGZ1bmN0aW9uIHJlZnJlc2hlc1xuIDc3MzpcdCAqIHJhbmdlLVx1MDAzZW5vdGlmaWVyX3NlcSBhbmQgcmVzdGFydHMgdGhlIHdhbGsgaW50ZXJuYWxseS5cbiA3NzQ6XHQgKlxuIDc3NTpcdCAqIFBhc3NpbmcgMCBmb3IgQHRpbWVvdXQgcmV0cmllcyBpbmRlZmluaXRlbHkuIEEgbm9uLXplcm8gQHRpbWVvdXQgaXMgYSBjYWxsZXJcbiA3NzY6XHQgKiBwb2xpY3kgbGltaXQgZm9yIHJlcGVhdGVkIG1tdS1ub3RpZmllciBpbnZhbGlkYXRpb24gcmV0cmllcy4gSE1NIGRvZXMgbm90XG4gNzc3Olx0ICogaW50ZXJydXB0IHBhZ2UgZmF1bHQgaGFuZGxpbmcgd2hlbiB0aGUgdGltZW91dCBleHBpcmVzLCBidXQgcmV0dXJucyAtRUJVU1lcbiA3Nzg6XHQgKiBpZiB0aGUgcmV0cnkgYnVkZ2V0IGlzIGV4aGF1c3RlZCBiZWZvcmUgYSBzdGFibGUgcmFuZ2UgaXMgb2J0YWluZWQuXG4gNzc5Olx0ICpcbiA3ODA6XHQgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBvbmUgb2YgdGhlIGVycm9yIGNvZGVzIGRvY3VtZW50ZWQgZm9yXG4gNzgxOlx0ICogaG1tX3JhbmdlX2ZhdWx0KCkuIC1FSU5UUiBpcyByZXR1cm5lZCBpZiBtbWFwX2xvY2sgYWNxdWlzaXRpb24gaXNcbiA3ODI6XHQgKiBpbnRlcnJ1cHRlZCBvciBhIGZhdGFsIHNpZ25hbCBpcyBwZW5kaW5nIGR1cmluZyByZXRyeSBoYW5kbGluZy5cbiA3ODM6XHQgKi9cbiA3ODQ6XHRpbnQgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UsXG4gNzg1Olx0XHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dClcbiA3ODY6XHR7XG4gNzg3Olx0XHRzdHJ1Y3QgbW1fc3RydWN0ICptbSA9IHJhbmdlLVx1MDAzZW5vdGlmaWVyLVx1MDAzZW1tO1xuIDc4ODpcdFx0dW5zaWduZWQgbG9uZyBkZWFkbGluZSA9IDA7XG4gNzg5Olx0XHRib29sIGxvY2tlZCA9IGZhbHNlO1xuIDc5MDpcdFx0aW50IHJldDtcbiA3OTE6XHRcbiA3OTI6XHRcdGRvIHtcbiA3OTM6XHRcdFx0aWYgKGZhdGFsX3NpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxuIDc5NDpcdFx0XHRcdHJldHVybiAtRUlOVFI7XG4gNzk1Olx0XG4gNzk2Olx0XHRcdGlmICh0aW1lb3V0KSB7XG4gNzk3Olx0XHRcdFx0LypcbiA3OTg6XHRcdFx0XHQgKiBJZiB0aGUgcHJldmlvdXMgZmF1bHQgZHJvcHBlZCBtbWFwX2xvY2ssIHRoZW4gdGhlIGZhdWx0XG4gNzk5Olx0XHRcdFx0ICogaGFuZGxlciBtYWRlIHByb2dyZXNzLiBSZXN0YXJ0IHRoZSByZXRyeSB0aW1lb3V0IGluIHRoYXRcbiA4MDA6XHRcdFx0XHQgKiBjYXNlLCBidXQga2VlcCB0aGUgZXhpc3RpbmcgZGVhZGxpbmUgZm9yIG9yZGluYXJ5IC1FQlVTWVxuIDgwMTpcdFx0XHRcdCAqIHJldHJpZXMuXG4gODAyOlx0XHRcdFx0ICovXG4gODAzOlx0XHRcdFx0aWYgKCFsb2NrZWQpXG4gODA0Olx0XHRcdFx0XHRkZWFkbGluZSA9IGppZmZpZXMgJiM0MzsgdGltZW91dDtcbiA4MDU6XHRcbiA4MDY6XHRcdFx0XHRpZiAodGltZV9hZnRlcihqaWZmaWVzLCBkZWFkbGluZSkpXG4gODA3Olx0XHRcdFx0XHRyZXR1cm4gLUVCVVNZO1xuIDgwODpcdFx0XHR9XG4gODA5Olx0XG4gODEwOlx0XHRcdHJhbmdlLVx1MDAzZW5vdGlmaWVyX3NlcSA9XG4gODExOlx0XHRcdFx0bW11X2ludGVydmFsX3JlYWRfYmVnaW4ocmFuZ2UtXHUwMDNlbm90aWZpZXIpO1xuIDgxMjpcdFxuIDgxMzpcdFx0XHRyZXQgPSBtbWFwX3JlYWRfbG9ja19raWxsYWJsZShtbSk7XG4gODE0Olx0XHRcdGlmIChyZXQpXG4gODE1Olx0XHRcdFx0cmV0dXJuIHJldDtcbiA4MTY6XHRcbiA4MTc6XHRcdFx0bG9ja2VkID0gdHJ1ZTtcbiA4MTg6XHRcdFx0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X2xvY2tlZChyYW5nZSwgXHUwMDI2bG9ja2VkKTtcbiA4MTk6XHRcdFx0aWYgKGxvY2tlZClcbiA4MjA6XHRcdFx0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbiA4MjE6XHRcdH0gd2hpbGUgKHJldCA9PSAtRUJVU1kpO1xuIDgyMjpcdFxuIDgyMzpcdFx0cmV0dXJuIHJldDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDM1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgIEZ1bmN0aW9uKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBpdCBzZWVtcyBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgIGV4cGVjdHMgYSByZWxhdGl2ZSB0aW1lb3V0IHZhbHVlLCBleHByZXNzZWQgaW4gamlmZmllcywgYW5kIHRoZW4gaW50ZXJuYWxseSBjYWxjdWxhdGVzIHRoZSBhY3R1YWwgZGVhZGxpbmUuIFRoZSBwYXRjaCBoZXJlIGFkZHJlc3NlcyBzb21lIGNhbGxlcnMgdGhhdCB3ZXJlLCBjcml0aWNhbGx5LCBtaXNpbnRlcnByZXRpbmcgdGhhdCBhbmQgcGFzc2luZyBpbiBlaXRoZXIgYW4gYWJzb2x1dGUgamlmZmllcyB2YWx1ZSBvciBhIHZhbHVlIHJlcHJlc2VudGluZyByZW1haW5pbmcgamlmZmllcy4gSG1tLCB0aGlzIHJhaXNlcyBhIHF1ZXN0aW9uLi4uaXMgdGhpcyBmdW5jdGlvbiBhIG5ld2VyIGFkZGl0aW9uIHRvIHRoZSBrZXJuZWw/IEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgaXRzIHJldmlzaW9uIGhpc3RvcnkgdG8gY29uZmlybSBteSBhc3N1bXB0aW9uLCBhcyB0aGF0IHdvdWxkIGdpdmUgaW1wb3J0YW50IGNvbnRleHQgZm9yIHRoaXMgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2htbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9obW0uaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2htbS5oPTEyNT1pbnQgaG1tX3JhbmdlX2ZhdWx0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlKTtcbmluY2x1ZGUvbGludXgvaG1tLmg6MTI2OmludCBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSxcbmluY2x1ZGUvbGludXgvaG1tLmgtMTI3LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mzc2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVjZW50IEFkZGl0aW9uIG9mIGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAgY2hhbmdlLiBJIHNlZSBpdCYjMzk7cyBhIHJlY2VudCBhZGRpdGlvbiwgYW5kIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkcmVzc2luZyBpdHMgdXNhZ2UgYWNyb3NzIHNldmVyYWwgZHJpdmVycy4gSW50ZXJlc3RpbmcuIFRoZSBwYXRjaCB0b3VjaGVzOiBgZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmNgLCBgZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uY2AsIGFuZCBgZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uY2AuCgpOb3csIHRoZSBxdWVzdGlvbiBpcywgYXJlIHRoZXNlIGRyaXZlcnMgZXZlbiByZWxldmFudCBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQsIGNvbnNpZGVyaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyB0aW1lb3V0PyBgZHJtX2dwdXN2bS5jYCBpcyBwYXJ0IG9mIERSTSBHUFUgU1ZNLCB3aGljaCBpbXBsaWVzIGl0IG1pZ2h0IGJlIHVzZWQgYnkgYSBmZXcgZHJpdmVycy4gYG5vdXZlYXVfc3ZtLmNgIGlzIHBhcnQgb2YgTm91dmVhdSwgYW5kIGBhaWUyX2N0eC5jYCBiZWxvbmdzIHRvIHRoZSBBTUQgWEROQSBkcml2ZXIuCgpTcGVjaWZpY2FsbHkgZm9yIGBkcm1fZ3B1c3ZtLmNgLCBJIG5lZWQgdG8gY29uZmlybSBpZiBpdCYjMzk7cyBldmVuIGNvbXBpbGVkIGluLiBBbHJpZ2h0LCB0aGUgY29tcGlsYXRpb24gaXMgY29uZGl0aW9uYWwgb24gYENPTkZJR19EUk1fR1BVU1ZNYC4gR29vZCwgbm93IEkga25vdyB3aGVyZSB0byBsb29rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFJNX0dQVVNWTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0yMjE9Y29uZmlnIFJVU1RfRFJNX0dQVVZNXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjI3LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjI4OmNvbmZpZyBEUk1fR1BVU1ZNXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMjktXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTQ3CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIERSTV9HUFVTVk0gTGFuZHNjYXBlKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBraWNrcyBvZmYgd2l0aCBhIHNwZWNpZmljLCBhbmQgcXVpdGUgZm9jdXNlZCwgZ29hbDogdG8gdW5kZXJzdGFuZCB0aGUgdXNhZ2UgcGF0dGVybnMgc3Vycm91bmRpbmcgYERSTV9HUFVTVk1gLiBUaGlzIGlzbiYjMzk7dCBhIGNhc3VhbCBleHBsb3JhdGlvbjsgaXQmIzM5O3MgYSB0YXJnZXRlZCBxdWVyeS4gV2UmIzM5O3JlIG5vdCBqdXN0IGxvb2tpbmcgZm9yICphbnkqIHVzZSBvZiB0aGUgRFJNIHN1YnN5c3RlbSwgYnV0IHNwZWNpZmljYWxseSBob3cgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCwgb3IgYmVpbmcgaW5mbHVlbmNlZCBieSwgYEdQVVNWTWAuIFRoaXMgc3VnZ2VzdHMgYSBwcmUtZXhpc3RpbmcgdW5kZXJzdGFuZGluZyBvZiBib3RoIERSTSAoRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyKSBhbmQsIHByZXN1bWFibHksIHRoZSBHUFUtYmFzZWQgdmlydHVhbCBtZW1vcnkgKEdQVVNWTSkgY29uY2VwdC4gVGhlIGltcGxpZWQgcXVlc3Rpb24gaXMgJiMzNDtXaG8mIzM5O3MgdXNpbmcgdGhpcz8gV2hlcmUgaXMgaXQgYmVpbmcgdXRpbGl6ZWQ/IEluIHdoYXQgY29udGV4dD8mIzM0OyBUaGlzIHN0cm9uZ2x5IGhpbnRzIGF0IGFuIGludmVzdGlnYXRpb24gaW50byBwb3RlbnRpYWwgaW50ZWdyYXRpb24gaXNzdWVzLCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcywgb3IgcGVyaGFwcyBldmVuIGNyb3NzLW1vZHVsZSBkZXBlbmRlbmNpZXMgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgZ3JhcGhpY3Mgc3RhY2suIEl0IGNvdWxkIGFsc28gcmVsYXRlIHRvIGRlYnVnZ2luZyBhIHNwZWNpZmljIGlzc3VlLCBvciBnYWluaW5nIGFuIG92ZXJ2aWV3IG9mIGhvdyB0aGF0IHBhcnQgb2YgdGhlIGdyYXBoaWNzIHN5c3RlbSBpcyB1c2VkLiBUaGUgZ29hbCBpcyB0byBvYnRhaW4gY29udGV4dHVhbCBpbmZvcm1hdGlvbi4gVGhlICYjMzQ7TGV0JiMzOTtzIHNlZSYjMzQ7IGltcGxpZXMgYSBtZXRob2RpY2FsLCBkYXRhLWRyaXZlbiBhcHByb2FjaCB0byB0aGUgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IERSTV9HUFVTVk0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc9Mj1jb25maWcgRFJNX1hFXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctNDEtXHRzZWxlY3QgRFJNX0VYRUNcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjQyOlx0c2VsZWN0IERSTV9HUFVTVk0gaWYgIVVNTFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctNDMtXHRzZWxlY3QgRFJNX0dQVVZNXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc9Nzk9Y29uZmlnIERSTV9YRV9HUFVTVk1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy04NS1cdHNlbGVjdCBERVZJQ0VfUFJJVkFURVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6ODY6XHRzZWxlY3QgRFJNX0dQVVNWTVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctODctXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDIyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgR1BVIERyaXZlcnMgaW4gYSBWaXJ0dWFsIEVudmlyb25tZW50KioKCk9rYXksIHNvIHRoZSBgRFJNX1hFYCBkcml2ZXIsIEludGVsJiMzOTtzIFhlIGRyaXZlciwgc2VlbXMgdG8gZGVwZW5kIG9uIGBEUk1fR1BVU1ZNYC4gSSYjMzk7bSB3b25kZXJpbmcgaWYgd2UgY2FuIGZ1enogdGhlc2UgZHJpdmVycywgc3BlY2lmaWNhbGx5IGBEUk1fWEVgIGFuZCBgbm91dmVhdWAsIHdpdGhpbiBhIFZNLiBUaGUgZ2VuZXJhbCBjaGFsbGVuZ2Ugd2l0aCBHUFUgZHJpdmVycyBpcyB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jeS4gVGhleSBvZnRlbiBuZWVkIHNwZWNpZmljIGhhcmR3YXJlIHRvIGZ1bmN0aW9uLiBIb3dldmVyLCBzb21lIERSTSBkcml2ZXJzIGFyZSBhY2Nlc3NpYmxlIGFuZCBhbGxvdyBJT0NUTCBjYWxscyBldmVuIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSwgb3Igd2l0aCBlbXVsYXRlZCBoYXJkd2FyZSBsaWtlIGB2a21zYC4gQnV0LCBhcyBJIHJlY2FsbCwgYm90aCBgeGVgIGFuZCBgbm91dmVhdWAgdXN1YWxseSByZXF1aXJlIFBDSSBkZXZpY2VzLCB3aGljaCBjb21wbGljYXRlcyB0aGluZ3MuCgpOb3csIEkga25vdyBTeXprYWxsZXIgY2FuIGZ1enogRFJNIGRyaXZlcnMsIGVpdGhlciBieSB1c2luZyBgc3l6X3VzYl9jb25uZWN0YCwgaW5qZWN0aW5nIFBDSSBkZXZpY2VzLCBvciBieSBqdXN0IG9wZW5pbmcgYSBgL2Rldi9kcmkvcmVuZGVyRCpgIGRldmljZSBmaWxlIGlmIGl0IGV4aXN0cy4gQnV0IGdlbmVyYWxseSwgdGhlIGRyaXZlciBwcm9iZSB3aWxsIGZhaWwgd2l0aG91dCB0aGUgY29ycmVjdCBoYXJkd2FyZSwgcHJldmVudGluZyB0aGUgY3JlYXRpb24gb2YgdGhlIG5lY2Vzc2FyeSBkZXZpY2Ugbm9kZXMuCgpIbW0sIGRvZXMgU3l6a2FsbGVyIGhhdmUgc3BlY2lmaWMgc3VwcG9ydCBmb3IgUENJIGZ1enppbmc/IElzIGl0IHVzaW5nIGBzeXpfcGNpX2Nvbm5lY3RgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJIHdhcyB0aGlua2luZyBpdCYjMzk7cyBwcm9iYWJseSB1c2luZyBgc3l6X2t2bV9zZXR1cF9jcHVgIG9yIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpXy4uLmAgQnV0IG15IHJlY29sbGVjdGlvbiBzZWVtcyBzcG90dHkuIEl0IGRvZXMgaGF2ZSAqc29tZSogUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBidXQgaXQgZmVlbHMgbGltaXRlZC4KCkFsc28sIEkmIzM5O20gbm90aW5nIHRoZSBtZW50aW9uIG9mIGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAsIHdoaWNoIGlzIGFsc28gdXNlZCBpbiBgbGliL3Rlc3RfaG1tLmNgLiBTaG91bGQgSSBjaGVjayBpZiBgbGliL3Rlc3RfaG1tLmNgIGhhcyBiZWVuIG1vZGlmaWVkPyBObywgaXQgbG9va3MgbGlrZSBpdCBoYXNuJiMzOTt0LiBUaGlzIHBhdGNoIG9ubHkgdG91Y2hlcyBgYWllMl9jdHguY2AsIGBkcm1fZ3B1c3ZtLmNgLCBhbmQgYG5vdXZlYXVfc3ZtLmNgLgoKV2FpdCwgYGRybV9ncHVzdm0uY2AgaXMgY29yZSBEUk0gY29kZSBmb3IgR1BVIFNWTSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIElzIGl0IGV2ZW4gd29ydGggZnV6emluZz8gSWYgdGhlIGNvZGUgcmVsaWVzIG9uIHNwZWNpZmljIEFNRCBYRE5BLCBJbnRlbCBYZSwgb3IgTnZpZGlhIGhhcmR3YXJlLCBpdCYjMzk7cyBsaWtlbHkgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBWTS4gQnV0LCBpZiBgbm91dmVhdWAgaXMgZm9yIE52aWRpYSwgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGVzdGluZyBpdCB3aXRoIGEgdmlydHVhbCBHUFUuCgpXaGF0IGFib3V0IGBkcm1fZ3B1c3ZtLmNgPyBJdCYjMzk7cyBzZWxlY3RlZCBieSBgRFJNX1hFYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIENhbiB3ZSB0ZXN0IGBEUk1fWEVgIGluIGEgVk0/IFdpdGhvdXQgSW50ZWwgWGUgaGFyZHdhcmUsIGl0IGRvZXNuJiMzOTt0IHNlZW0gbGlrZWx5LiBCdXQgdGhlbiBhZ2FpbiwgU3l6a2FsbGVyIGRvZXMgaGF2ZSBgdmttc2AgZm9yIERSTSBmdXp6aW5nLi4uIERvZXMgYHZrbXNgIGFjdHVhbGx5IHVzZSBgRFJNX0dQVVNWTWA/IEkmIzM5O2xsIG5lZWQgdG8gY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IERSTV9HUFVTVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdmttcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTE1CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGFwcHJvYWNoIGZ1enppbmcgYG5vdXZlYXVgLiBUaGUgaW5pdGlhbCBpZGVhIHdhcyB0byBzZWUgaWYgd2UgY291bGQgcHJvYmUgaXQgd2l0aCBhIGZha2UgUENJIGRldmljZS4gU3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcyB2aWEgYHN5el9wY2lfZGV2aWNlX2FkZGAg4oCTIG9yIGF0IGxlYXN0LCBzb21lIGZvcmtzIGRvLiBCdXQgdGhhdCYjMzk7cyBub3QgdGhlIHByaW1hcnkgcm91dGUuIEkgcmVjYWxsIG5vdyB0aGF0IHN5emthbGxlciBnZW5lcmFsbHkgdXNlcyBgc3l6X3VzYl9jb25uZWN0YCBmb3IgVVNCIGFuZCBgc3l6XzgwMjExXy4uLmAgZm9yIFdpRmkuIEZvciB0aGUgbW9zdCBwYXJ0LCBQQ0kgZnV6emluZyBpc24mIzM5O3QgYSByb2J1c3QsIGNvcmUgY2FwYWJpbGl0eSBvZiB2YW5pbGxhIFN5emthbGxlciwgZXNwZWNpYWxseSBmb3Igc29tZXRoaW5nIGFzIGNvbXBsZXggYXMgYSBHUFUuCgpIb3dldmVyLCB0aGlzIHBhdGNoIGZpeGVzIGFuIGlzc3VlIHdpdGhpbiBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgLiBTbywgdGhlIHF1ZXN0aW9uIHJlbWFpbnM6IGlzIGl0IHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz8KCkxldCYjMzk7cyByZS1leGFtaW5lIHRoZSBjaGFuZ2VkIGZpbGVzLiBXZSYjMzk7dmUgZ290IGNoYW5nZXMgaW4gYGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jYCwgYGRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNgLCBhbmQgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jYC4gVGhlIGNvcmUgcXVlc3Rpb24gbm93IGlzLCBhcmUgdGhlc2UgZHJpdmVycyBldmVuIHJlYWNoYWJsZSB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmU/IElmIHRoZXkgYXJlIGhhcmR3YXJlLWRlcGVuZGVudCwgdGhlbiBpdCBjb3VsZCBiZSBhIGRlYWQgZW5kLgoKSG9sZCBvbiwgdGhvdWdoLiBgZHJtX2dwdXN2bS5jYCBpcyBhICpnZW5lcmljKiBsaWJyYXJ5IGZvciBEUk0gZHJpdmVycy4gVGhhdCBjaGFuZ2VzIHRoaW5ncy4gRXZlbiBpZiBjdXJyZW50bHkgb25seSBzZWxlY3RlZCBieSBgRFJNX1hFYCwgdGhpcyBpcyBjb3JlIGZ1bmN0aW9uYWxpdHkgdG8gRFJNIGFzIGEgd2hvbGUuIFRoYXQgaW5jcmVhc2VzIHRoZSBwb3NzaWJpbGl0eSBvZiB0cmlnZ2VyaW5nIHNvbWV0aGluZywgcG90ZW50aWFsbHkgdGhyb3VnaCBtdWx0aXBsZSBkcml2ZXJzLgoKT2theSwgbmV4dCBzdGVwIGlzIHRvIG1ha2Ugc3VyZSB0aGF0IGBub3V2ZWF1YCBpcyBlbmFibGVkIGluIFN5emthbGxlci4gWWVzLCBpdCBsb29rcyBsaWtlIGBDT05GSUdfRFJNX05PVVZFQVVgIGlzIGluZGVlZCBlbmFibGVkLiBTbyB0aGUgbmV4dCBzdGVwIGlzOiBjYW4gc3l6a2FsbGVyIHJlYWNoIGBub3V2ZWF1X3N2bS5jYD8gSSBuZWVkIHRvIGNoZWNrIGhvdyBgbm91dmVhdV9zdm0uY2AgZ2V0cyBpbml0aWFsaXplZC4gSSYjMzk7bGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBzb3VyY2UgY29kZSB0byBmaW5kIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bm91dmVhdV9zdm1faW5pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jPTYzMD1ub3V2ZWF1X2RybV9kZXZpY2VfaW5pdChzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTY3OC1cdG5vdXZlYXVfaHdtb25faW5pdChkZXYpO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYzo2Nzk6XHRub3V2ZWF1X3N2bV9pbml0KGRybSk7XG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTY4MC1cdG5vdXZlYXVfZG1lbV9pbml0KGRybSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYz0zMTY9bm91dmVhdV9zdm1tX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jLTMyMC1cdHN0cnVjdCBub3V2ZWF1X3N2bW0gKnN2bW07XG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jOjMyMTpcdHN0cnVjdCBkcm1fbm91dmVhdV9zdm1faW5pdCAqYXJncyA9IGRhdGE7XG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jLTMyMi1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYz0xMDMzPXZvaWRcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmM6MTAzNDpub3V2ZWF1X3N2bV9pbml0KHN0cnVjdCBub3V2ZWF1X2RybSAqZHJtKVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYy0xMDM1LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5oPTk9c3RydWN0IG5vdXZlYXVfc3ZtbSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uaC0yMC0jaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX05PVVZFQVVfU1ZNKVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uaDoyMTp2b2lkIG5vdXZlYXVfc3ZtX2luaXQoc3RydWN0IG5vdXZlYXVfZHJtICopO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uaC0yMi12b2lkIG5vdXZlYXVfc3ZtX2Zpbmkoc3RydWN0IG5vdXZlYXVfZHJtICopO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmg9MzU9dm9pZCBub3V2ZWF1X3BmbnNfbWFwKHN0cnVjdCBub3V2ZWF1X3N2bW0gKnN2bW0sIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmgtMzgtI2Vsc2UgLyogSVNfRU5BQkxFRChDT05GSUdfRFJNX05PVVZFQVVfU1ZNKSAqL1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uaDozOTpzdGF0aWMgaW5saW5lIHZvaWQgbm91dmVhdV9zdm1faW5pdChzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSkge31cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmgtNDAtc3RhdGljIGlubGluZSB2b2lkIG5vdXZlYXVfc3ZtX2Zpbmkoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0pIHt9XG4tLVxuaW5jbHVkZS91YXBpL2RybS9ub3V2ZWF1X2RybS5oPTQzNT1zdHJ1Y3QgZHJtX25vdXZlYXVfZ2V0X3pjdWxsX2luZm8ge1xuLS1cbmluY2x1ZGUvdWFwaS9kcm0vbm91dmVhdV9kcm0uaC01MTctXG5pbmNsdWRlL3VhcGkvZHJtL25vdXZlYXVfZHJtLmg6NTE4OnN0cnVjdCBkcm1fbm91dmVhdV9zdm1faW5pdCB7XG5pbmNsdWRlL3VhcGkvZHJtL25vdXZlYXVfZHJtLmgtNTE5LVx0X191NjQgdW5tYW5hZ2VkX2FkZHI7XG4tLVxuaW5jbHVkZS91YXBpL2RybS9ub3V2ZWF1X2RybS5oPTUyMz1zdHJ1Y3QgZHJtX25vdXZlYXVfc3ZtX2JpbmQge1xuLS1cbmluY2x1ZGUvdWFwaS9kcm0vbm91dmVhdV9kcm0uaC01NjctXG5pbmNsdWRlL3VhcGkvZHJtL25vdXZlYXVfZHJtLmg6NTY4OiNkZWZpbmUgRFJNX0lPQ1RMX05PVVZFQVVfU1ZNX0lOSVQgICAgICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgJiM0MzsgRFJNX05PVVZFQVVfU1ZNX0lOSVQsIHN0cnVjdCBkcm1fbm91dmVhdV9zdm1faW5pdClcbmluY2x1ZGUvdWFwaS9kcm0vbm91dmVhdV9kcm0uaC01NjktI2RlZmluZSBEUk1fSU9DVExfTk9VVkVBVV9TVk1fQklORCAgICAgICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSAmIzQzOyBEUk1fTk9VVkVBVV9TVk1fQklORCwgc3RydWN0IGRybV9ub3V2ZWF1X3N2bV9iaW5kKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzMwNQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDIzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBMaW5lIG9mIFJlYXNvbmluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgRFJNX0lPQ1RMX05PVVZFQVVfU1ZNX0lOSVRgIHRoaW5nIOKAkyByaWdodCwgaXQmIzM5O3MgYW4gaW9jdGwuIFRvIGV2ZW4gKnVzZSogdGhhdCwgSSYjMzk7ZCBuZWVkIHRvIGhhdmUgYSBub3V2ZWF1IGRldmljZSBvcGVuLiBUaGF04oCZcyB0aGUgc3RhcnRpbmcgcG9pbnQuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBJIGdldCBhIG5vdXZlYXUgZGV2aWNlIG9wZW5lZCBpbiB0aGUgZmlyc3QgcGxhY2UsIGV2ZW4gaWYgdGhlcmUmIzM5O3Mgbm8gcGh5c2ljYWwgaGFyZHdhcmU/IE5vLCB0aGF0IHdvbiYjMzk7dCB3b3JrLCBiZWNhdXNlIHRoZSBkcml2ZXIgcHJvYmUgd2lsbCBlcnJvciBvdXQgaWYgaXQgZG9lc24mIzM5O3QgZmluZCBhbiBOdmlkaWEgUENJIGRldmljZS4KCkhtbSwgbWF5YmUgdGhlcmUmIzM5O3Mgc29tZSBraW5kIG9mIHN5bnRoZXRpYyBQQ0kgZGV2aWNlIGluamVjdGlvbiBpbiB0aGUgZnV6emVyIHRoYXQgSSYjMzk7bSBvdmVybG9va2luZz8gTm9wZSwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgYSBnZW5lcmljIFBDSSBmdXp6ZXIgbGlrZSB0aGF0LiBTbyB0aGF0JiMzOTtzIG91dC4KCldhaXQsIGhvbGQgb24sIHdoYXQgYWJvdXQgYHRlc3RfaG1tYD8gSXMgdGhhdCByZWxldmFudCBoZXJlPyBMZXQgbWUgY2hlY2vigKYgYWgsIHJpZ2h0LCBgbGliL3Rlc3RfaG1tLmNgIGlzIGp1c3QgYSB0ZXN0IG1vZHVsZSBmb3IgSE1NLiBPa2F5LCBkb2VzIHRoZSBwYXRjaCBpbiBxdWVzdGlvbiBhY3R1YWxseSBtb2RpZnkgdGhhdCBmaWxlPyBObywgaXQgZG9lc24mIzM5O3QuCgpPa2F5LCBsZXQmIzM5O3MgYmFjayB1cC4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIHRvdWNoaW5nIGBkcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9jdHguY2AsIGBkcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jYCwgYW5kIG1vc3QgaW1wb3J0YW50bHksIGBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jYC4KCkFoYSEgYGRybV9ncHVzdm0uY2Ag4oCTIGlzIHRoaXMgZXZlbiByZWxldmFudCB0byBnZXR0aW5nIGEgbm91dmVhdSBkZXZpY2Ugb3Blbj8gSSBzaG91bGQgc2VlIGlmIGBkcm1fZ3B1c3ZtLmNgIGlzIHVzZWQgYnkgYW55dGhpbmcgZWxzZSwgYW5kIGlmIHNvLCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RybV9ncHVzdm1fJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNTkyIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG4uY2xhbmctZm9ybWF0PTcxPUZvckVhY2hNYWNyb3M6XG4tLVxuLmNsYW5nLWZvcm1hdC0xODItICAtICYjMzk7ZHJtX2dlbV9mb3JfZWFjaF9ncHV2bV9ib19zYWZlJiMzOTtcbi5jbGFuZy1mb3JtYXQ6MTgzOiAgLSAmIzM5O2RybV9ncHVzdm1fZm9yX2VhY2hfcmFuZ2UmIzM5O1xuLmNsYW5nLWZvcm1hdC0xODQtICAtICYjMzk7ZHJtX2dwdXZhX2Zvcl9lYWNoX29wJiMzOTtcbi0tXG5Eb2N1bWVudGF0aW9uL2dwdS9yZmMvZ3B1c3ZtLnJzdD05MT1Qb3NzaWJsZSBmdXR1cmUgZGVzaWduIGZlYXR1cmVzXG4tLVxuRG9jdW1lbnRhdGlvbi9ncHUvcmZjL2dwdXN2bS5yc3QtMTAwLSogUmFuZ2VzIHdpdGggbWl4ZWQgc3lzdGVtIGFuZCBkZXZpY2UgcGFnZXNcbkRvY3VtZW50YXRpb24vZ3B1L3JmYy9ncHVzdm0ucnN0OjEwMTpcdCogQ2FuIGJlIGFkZGVkIGlmIHJlcXVpcmVkIHRvIGRybV9ncHVzdm1fZ2V0X3BhZ2VzIGZhaXJseSBlYXNpbHkuXG5Eb2N1bWVudGF0aW9uL2dwdS9yZmMvZ3B1c3ZtLnJzdC0xMDItKiBNdWx0aS1HUFUgc3VwcG9ydFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0xMDc9b2JqLSQoQ09ORklHX0RSTV9HUFVWTSkgJiM0Mzs9IGRybV9ncHV2bS5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTA4LVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEwOTpkcm1fZ3B1c3ZtX2hlbHBlci15IDo9IFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTEwLVx0ZHJtX2dwdXN2bS5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTExOmRybV9ncHVzdm1faGVscGVyLSQoQ09ORklHX1pPTkVfREVWSUNFKSAmIzQzOz0gXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMTItXHRkcm1fcGFnZW1hcC5vXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTE0LVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjExNTpvYmotJChDT05GSUdfRFJNX0dQVVNWTSkgJiM0Mzs9IGRybV9ncHVzdm1faGVscGVyLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMTYtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01MS0gKiAtIFBhZ2VzOlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1MjogKlx0c3RydWN0IGRybV9ncHVzdm1fcGFnZXMgaG9sZHMgdGhlIERNQSBtYXBwaW5nIHN0YXRlIGZvciBhIHJhbmdlIG9mXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTUzLSAqXHRDUFUgdmlydHVhbCBhZGRyZXNzZXM6IHRoZSBETUEgbWFwcGVkIGRldmljZSBhZGRyZXNzZXMsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01Ni0gKlx0bWFwcGluZ3MuXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU3OiAqXHRBIGRyaXZlciBlbWJlZHMgb25lIG9yIG1vcmUgc3RydWN0IGRybV9ncHVzdm1fcGFnZXMgYWxvbmdzaWRlIGl0c1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1ODogKlx0c3RydWN0IGRybV9ncHVzdm1fcmFuZ2UsIGNob29zaW5nIG9uZSBvZiB0d28gbGF5b3V0czpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTktICpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NjA6ICpcdDE6MSAtIG9uZSBkcm1fZ3B1c3ZtX3BhZ2VzIHBlciByYW5nZSAob25lIGRybV9kZXZpY2UpLiBTaW1wbGVzdFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02MS0gKlx0bGF5b3V0OyB0byBtaXJyb3IgYSBWQSByYW5nZSBvbiBzZXZlcmFsIGRldmljZXMgYSBkcml2ZXIgdXNlcyBhXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NC0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NTogKlx0TjoxIC0gb25lIGRybV9ncHVzdm1fcGFnZXMgcGVyIGRybV9kZXZpY2UsIGFsbCBzaGFyaW5nIG9uZSByYW5nZSBhbmRcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjYtICpcdG5vdGlmaWVyOyBvbmx5IHRoZSBwZXItZGV2aWNlIERNQSBtYXBwaW5nIGRpZmZlcnMuIFRoZSBpbnN0YW5jZXMgbXVzdFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NzogKlx0c2l0IGluIGNvbnRpZ3VvdXMgbWVtb3J5IHNvIGEgc2luZ2xlIGRybV9ncHVzdm1fcmFuZ2Vfc2V0X3VubWFwcGVkKClcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjgtICpcdGNhbiBtYXJrIHRoZW0gYWxsLiBBIGRyaXZlciBjYW4ga2VlcCBvbmUgaW5zdGFuY2UgaW5saW5lIGZvciB0aGUgc2luZ2xlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03NC0gKlx0XHRzdHJ1Y3QgZHJpdmVyX3JhbmdlIHtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NzU6ICpcdFx0XHRzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSBiYXNlO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03Ni0gKlx0XHRcdHVuc2lnbmVkIGludCBudW1fcGFnZXM7XHQvLyAxOiBpbmxpbmVfcGFnZXMsIFx1MDAzZTE6IHBhZ2VzW11cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNzctICpcdFx0XHR1bmlvbiB7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjc4OiAqXHRcdFx0XHRzdHJ1Y3QgZHJtX2dwdXN2bV9wYWdlcyBpbmxpbmVfcGFnZXM7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjc5OiAqXHRcdFx0XHRzdHJ1Y3QgZHJtX2dwdXN2bV9wYWdlcyAqcGFnZXM7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTgwLSAqXHRcdFx0fTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg0LSAqXHRhbGxvY2F0b3IgKGUuZy4ga2NhbGxvYyhudW1fcGFnZXMsIC4uLikpLCBpbml0aWFsaXNlcyBlYWNoIGVudHJ5IHdpdGhcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODU6ICpcdGRybV9ncHVzdm1faW5pdF9wYWdlcygpLCBhbmQgZnJlZXMgZWFjaCBlbnRyeSB3aXRoXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg2OiAqXHRkcm1fZ3B1c3ZtX2ZyZWVfcGFnZXMoKSBwbHVzIHRoZSBhcnJheSBpdHNlbGYsIGZyb20gaXRzIHJhbmdlIGZyZWVcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODc6ICpcdGNhbGxiYWNrLiBFYWNoIGRybV9ncHVzdm1fcGFnZXMgaXMgbWFwcGVkIGluZGVwZW5kZW50bHkgYnkgdGhlaXIgb3duXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg4LSAqXHRkcm1fZGV2aWNlLlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo4OTogKlx0RWFjaCBkcm1fZ3B1c3ZtX3BhZ2VzIG11c3QgYmUgemVyby1pbml0aWFsaXNlZCBhbmQgaW5pdGlhbGlzZWQgd2l0aFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5MDogKlx0ZHJtX2dwdXN2bV9pbml0X3BhZ2VzKCksIGNhbGxlZCBvbmNlIHBlciBlbnRyeS5cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTEtICpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEzNS0gKiBleGNlcHQgZm9yIHRoZSByZWNoZWNrIHJhbmdlJiMzOTtzIHBhZ2VzIGJlaW5nIHZhbGlkXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEzNjogKiAoZHJtX2dwdXN2bV9wYWdlc192YWxpZCkgd2hlbiB0aGUgZHJpdmVyIGlzIGNvbW1pdHRpbmcgR1BVIGJpbmRpbmdzLlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMzctICogVGhpcyBsb2NrIGNvcnJlc3BvbmRzIHRvIHRoZSBgYGRyaXZlci1cdTAwM2V1cGRhdGVgYCBsb2NrIG1lbnRpb25lZCBpblxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTQzLSAqIGxvY2sgdG8gc2FmZWd1YXJkIGNvcmUgR1BVIFNWTSBmdW5jdGlvbiBjYWxscyB0aGF0IG1vZGlmeSBzdGF0ZSwgc3VjaCBhc1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxNDQ6ICogZHJtX2dwdXN2bV9yYW5nZV9maW5kX29yX2luc2VydCBhbmQgZHJtX2dwdXN2bV9yYW5nZV9yZW1vdmUuIFRoaXMgbG9jayBpc1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xNDUtICogZGVub3RlZCBhcyAmIzM5O2RyaXZlcl9zdm1fbG9jayYjMzk7IGluIGNvZGUgZXhhbXBsZXMuIEZpbmVyIGdyYWluZWQgZHJpdmVyIHNpZGVcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTQ2LSAqIGxvY2tpbmcgc2hvdWxkIGFsc28gYmUgcG9zc2libGUgZm9yIGNvbmN1cnJlbnQgR1BVIGZhdWx0IHByb2Nlc3Npbmcgd2l0aGluIGFcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTQ3OiAqIHNpbmdsZSBHUFUgU1ZNLiBUaGUgJiMzOTtkcml2ZXJfc3ZtX2xvY2smIzM5OyBjYW4gYmUgdmlhIGRybV9ncHVzdm1fZHJpdmVyX3NldF9sb2NrXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE0OC0gKiB0byBhZGQgYW5ub3RhdGlvbnMgdG8gR1BVIFNWTS5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE4NC0gKlx0c3RydWN0IGRyaXZlcl9yYW5nZSB7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjE4NTogKlx0XHRzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSBiYXNlO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxODY6ICpcdFx0c3RydWN0IGRybV9ncHVzdm1fcGFnZXMgcGFnZXM7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE4Ny0gKlx0fTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE5NC0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxOTU6ICpcdFx0ZHJtX2dwdXN2bV9ub3RpZmllcl9sb2NrKGdwdXN2bSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjE5NjogKlx0XHRpZiAoZHJtX2dwdXN2bV9wYWdlc192YWxpZChncHVzdm0sIFx1MDAyNmRyYW5nZS1cdTAwM2VwYWdlcykpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE5Ny0gKlx0XHRcdGRyaXZlcl9jb21taXRfYmluZChncHVzdm0sIGRyYW5nZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xOTktICpcdFx0XHRlcnIgPSAtRUFHQUlOO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyMDA6ICpcdFx0ZHJtX2dwdXN2bV9ub3RpZmllcl91bmxvY2soZ3B1c3ZtKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjAxLSAqXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yMDctICpcdHtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjA4OiAqXHRcdHN0cnVjdCBkcm1fZ3B1c3ZtX2N0eCBjdHggPSB7fTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjA5LSAqXHRcdHN0cnVjdCBkcml2ZXJfcmFuZ2UgKmRyYW5nZTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjEwOiAqXHRcdHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpyYW5nZTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjExLSAqXHRcdGludCBlcnI7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yMTctICpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjE4OiAqXHRcdHJhbmdlID0gZHJtX2dwdXN2bV9yYW5nZV9maW5kX29yX2luc2VydChncHVzdm0sIGZhdWx0X2FkZHIsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTIxOS0gKlx0XHRcdFx0XHRcdFx0Z3B1dmFfc3RhcnQsIGdwdXZhX2VuZCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTIzNC0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyMzU6ICpcdFx0ZXJyID0gZHJtX2dwdXN2bV9nZXRfcGFnZXMoZ3B1c3ZtLCBcdTAwMjZkcmFuZ2UtXHUwMDNlcGFnZXMsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTIzNi0gKlx0XHRcdFx0XHQgICBncHVzdm0tXHUwMDNlbW0sIFx1MDAyNnJhbmdlLVx1MDAzZW5vdGlmaWVyLVx1MDAzZW5vdGlmaWVyLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyMzc6ICpcdFx0XHRcdFx0ICAgZHJtX2dwdXN2bV9yYW5nZV9zdGFydChyYW5nZSksXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjIzODogKlx0XHRcdFx0XHQgICBkcm1fZ3B1c3ZtX3JhbmdlX2VuZChyYW5nZSksIFx1MDAyNmN0eCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTIzOS0gKlx0XHRpZiAoZXJyID09IC1FT1BOT1RTVVBQIHx8IGVyciA9PSAtRUZBVUxUIHx8IGVyciA9PSAtRVBFUk0pIHtcdC8vIENQVSBtYXBwaW5ncyBjaGFuZ2VkXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTI0MC0gKlx0XHRcdGlmIChlcnIgPT0gLUVPUE5PVFNVUFApXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI0MTogKlx0XHRcdFx0ZHJtX2dwdXN2bV9yYW5nZV9ldmljdChncHVzdm0sIHJhbmdlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjQyLSAqXHRcdFx0Z290byByZXRyeTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTI1OS0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyNjA6ICpcdC8vIFRoZSBkcml2ZXIgb3ducyB0aGUgZHJtX2dwdXN2bV9wYWdlcyBsaWZlY3ljbGUuIG9wcy1cdTAwM2VyYW5nZV9mcmVlIGlzXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI2MTogKlx0Ly8gdGhlIGZpbmFsIGZhbGxiYWNrOiBkcm1fZ3B1c3ZtX2ZyZWVfcGFnZXMoKSB1bm1hcHMgYW55XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTI2Mi0gKlx0Ly8gbGluZ2VyaW5nIERNQSBtYXBwaW5nIGFuZCBhIG5vLW9wIGlmIGFscmVhZHkgdW5tYXBwZWQgYW5kIGZyZWVzIHRoZVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNjMtICpcdC8vIGRtYV9hZGRyIGFycmF5LiBUaGUgbm9ybWFsIGZsb3cgaXMgdG8gRE1BIHVubWFwIGJlZm9yZVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyNjQ6ICpcdC8vIGRybV9ncHVzdm1fcmFuZ2VfcmVtb3ZlKCkgKGJlZm9yZSB0aGUgcmFuZ2UgbGVhdmVzIHRoZSB0cmVlKS5cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjY1OiAqXHR2b2lkIGRyaXZlcl9yYW5nZV9mcmVlKHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpyYW5nZSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjY2LSAqXHR7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNjktICpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjcwOiAqXHRcdGRybV9ncHVzdm1fZnJlZV9wYWdlcyhyYW5nZS1cdTAwM2VncHVzdm0sIFx1MDAyNmRyYW5nZS1cdTAwM2VwYWdlcyxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjcxOiAqXHRcdFx0XHQgICAgICBkcm1fZ3B1c3ZtX3JhbmdlX3NpemUocmFuZ2UpIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjcyLSAqXHRcdGtmcmVlKGRyYW5nZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNzUtICpcdHZvaWQgX19kcml2ZXJfZ2FyYmFnZV9jb2xsZWN0b3Ioc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6Mjc2OiAqXHRcdFx0XHRcdHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpyYW5nZSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjc3LSAqXHR7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yODEtICpcdFx0aWYgKHJhbmdlLVx1MDAzZWZsYWdzLnBhcnRpYWxfdW5tYXApXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI4MjogKlx0XHRcdGRybV9ncHVzdm1fcmFuZ2VfZXZpY3QoZ3B1c3ZtLCByYW5nZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTI4My0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yODQtICpcdFx0ZHJpdmVyX3VuYmluZF9yYW5nZShyYW5nZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI4NTogKlx0XHQvLyBUaGUgcGFnZXMgbXVzdCBiZSBETUEgdW5tYXBwZWQgYmVmb3JlIGRybV9ncHVzdm1fcmFuZ2VfcmVtb3ZlKClcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjg2LSAqXHRcdC8vICwgc28gYSByYW5nZSBpcyBuZXZlciBvZmYgdGhlIE1NVSBpbnRlcnZhbCB0cmVlIHdoaWxlIHN0aWxsIERNQVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjg5LSAqXHRcdC8vIGZvciBkZXZpY2UgRE1BLiBUaGlzIGlzIHRoZSBub3JtYWwgdW5tYXAgcG9pbnQuXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI5MDogKlx0XHRkcm1fZ3B1c3ZtX3VubWFwX3BhZ2VzKGdwdXN2bSwgXHUwMDI2ZHJhbmdlLVx1MDAzZXBhZ2VzLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyOTE6ICpcdFx0XHRcdCAgICAgICBkcm1fZ3B1c3ZtX3JhbmdlX3NpemUocmFuZ2UpIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZULFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyOTI6ICpcdFx0XHRcdCAgICAgICBcdTAwMjYoc3RydWN0IGRybV9ncHVzdm1fY3R4KXsgLmluX25vdGlmaWVyID0gZmFsc2UgfSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI5MzogKlx0XHRkcm1fZ3B1c3ZtX3JhbmdlX3JlbW92ZShncHVzdm0sIHJhbmdlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjk0LSAqXHR9XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zMDgtICpcdHZvaWQgZHJpdmVyX2ludmFsaWRhdGlvbihzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozMDk6ICpcdFx0XHRcdCBzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqbm90aWZpZXIsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTMxMC0gKlx0XHRcdFx0IGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKm1tdV9yYW5nZSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzExLSAqXHR7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjMxMjogKlx0XHRzdHJ1Y3QgZHJtX2dwdXN2bV9jdHggY3R4ID0geyAuaW5fbm90aWZpZXIgPSB0cnVlLCB9O1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozMTM6ICpcdFx0c3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlID0gTlVMTDtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzE0LSAqXHRcdHN0cnVjdCBkcml2ZXJfcmFuZ2UgKmRyYW5nZTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTMxNy0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozMTg6ICpcdFx0ZHJtX2dwdXN2bV9mb3JfZWFjaF9yYW5nZShyYW5nZSwgbm90aWZpZXIsIG1tdV9yYW5nZS1cdTAwM2VzdGFydCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzE5LSAqXHRcdFx0XHRcdCAgbW11X3JhbmdlLVx1MDAzZWVuZCkge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzIxLSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjMyMjogKlx0XHRcdGRybV9ncHVzdm1fdW5tYXBfcGFnZXMoZ3B1c3ZtLCBcdTAwMjZkcmFuZ2UtXHUwMDNlcGFnZXMsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjMyMzogKlx0XHRcdFx0XHQgICAgICAgZHJtX2dwdXN2bV9yYW5nZV9zaXplKHJhbmdlKSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzI0LSAqXHRcdFx0XHRcdCAgICAgICBcdTAwMjZjdHgpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzI4LSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjMyOTogKlx0XHRcdGRybV9ncHVzdm1fcmFuZ2Vfc2V0X3VubWFwcGVkKHJhbmdlLCBcdTAwMjZkcmFuZ2UtXHUwMDNlcGFnZXMsIDEsIG1tdV9yYW5nZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTMzMC0gKlx0XHRcdGRyaXZlcl9nYXJiYWdlX2NvbGxlY3Rvcl9hZGQoZ3B1c3ZtLCByYW5nZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYz0zNDg9bnBhZ2VzX2luX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzUzLS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozNTQ6ICogZHJtX2dwdXN2bV9ub3RpZmllcl9maW5kKCkgLSBGaW5kIEdQVSBTVk0gbm90aWZpZXIgZnJvbSBHUFUgU1ZNXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTM1NS0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTM1OC0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozNTk6ICogUmV0dXJuOiBBIHBvaW50ZXIgdG8gdGhlIGRybV9ncHVzdm1fbm90aWZpZXIgaWYgZm91bmQgb3IgTlVMTFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNjAtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjM2MTpzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjM2Mjpkcm1fZ3B1c3ZtX25vdGlmaWVyX2ZpbmQoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSwgdW5zaWduZWQgbG9uZyBzdGFydCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzYzLVx0XHRcdCB1bnNpZ25lZCBsb25nIGVuZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTM2OS1cdGlmIChpdHJlZSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzcwOlx0XHRyZXR1cm4gY29udGFpbmVyX29mKGl0cmVlLCBzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciwgaXRyZWUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNzEtXHRlbHNlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNzMtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozNzQ6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dwdXN2bV9ub3RpZmllcl9maW5kKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzc1LVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNzYtLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjM3NzogKiBkcm1fZ3B1c3ZtX3JhbmdlX2ZpbmQoKSAtIEZpbmQgR1BVIFNWTSByYW5nZSBmcm9tIEdQVSBTVk0gbm90aWZpZXJcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzc4LSAqIEBub3RpZmllcjogUG9pbnRlciB0byB0aGUgR1BVIFNWTSBub3RpZmllciBzdHJ1Y3R1cmUuXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zODEtICpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzgyOiAqIFJldHVybjogQSBwb2ludGVyIHRvIHRoZSBkcm1fZ3B1c3ZtX3JhbmdlIGlmIGZvdW5kIG9yIE5VTExcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzgzLSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozODQ6c3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozODU6ZHJtX2dwdXN2bV9yYW5nZV9maW5kKHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpub3RpZmllciwgdW5zaWduZWQgbG9uZyBzdGFydCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzg2LVx0XHQgICAgICB1bnNpZ25lZCBsb25nIGVuZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTM5Mi1cdGlmIChpdHJlZSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzkzOlx0XHRyZXR1cm4gY29udGFpbmVyX29mKGl0cmVlLCBzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSwgaXRyZWUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zOTQtXHRlbHNlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zOTYtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozOTc6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dwdXN2bV9yYW5nZV9maW5kKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzk4LVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zOTktLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjQwMDogKiBkcm1fZ3B1c3ZtX25vdGlmaWVyX2ludmFsaWRhdGUoKSAtIEludmFsaWRhdGUgYSBHUFUgU1ZNIG5vdGlmaWVyLlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00MDEtICogQG1uaTogUG9pbnRlciB0byB0aGUgbW11X2ludGVydmFsX25vdGlmaWVyIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jPTQxMT1zdGF0aWMgYm9vbFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0MTI6ZHJtX2dwdXN2bV9ub3RpZmllcl9pbnZhbGlkYXRlKHN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90aWZpZXIgKm1uaSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDEzLVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICptbXVfcmFuZ2UsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00MTUte1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0MTY6XHRzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqbm90aWZpZXIgPVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00MTctXHRcdGNvbnRhaW5lcl9vZihtbmksIHR5cGVvZigqbm90aWZpZXIpLCBub3RpZmllcik7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00MzEtLypcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDMyOiAqIGRybV9ncHVzdm1fbm90aWZpZXJfb3BzIC0gTU1VIGludGVydmFsIG5vdGlmaWVyIG9wZXJhdGlvbnMgZm9yIEdQVSBTVk1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDMzLSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0MzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90aWZpZXJfb3BzIGRybV9ncHVzdm1fbm90aWZpZXJfb3BzID0ge1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0MzU6XHQuaW52YWxpZGF0ZSA9IGRybV9ncHVzdm1fbm90aWZpZXJfaW52YWxpZGF0ZSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDM2LX07XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00MzgtLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjQzOTogKiBkcm1fZ3B1c3ZtX2luaXQoKSAtIEluaXRpYWxpemUgdGhlIEdQVSBTVk0uXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ0MC0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ1My0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0NTQ6ICogTm90ZTogSWYgb25seSB1c2luZyB0aGUgc2ltcGxlIGRybV9ncHVzdm1fcGFnZXMgQVBJIChnZXQvdW5tYXAvZnJlZSksXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ1NS0gKiB0aGVuIG9ubHkgQGdwdXN2bSBhbmQgQG5hbWUgYXJlIGV4cGVjdGVkLiBUaGUgQGRybSBkcm1fZGV2aWNlIGZvciBkbWFcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDU2OiAqIG1hcHBpbmdzIGlzIGJvdW5kIHBlci1wYWdlcyB2aWEgZHJtX2dwdXN2bV9pbml0X3BhZ2VzKCkgYmVmb3JlIHRoZSBmaXJzdFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0NTc6ICogZHJtX2dwdXN2bV9nZXRfcGFnZXMoKSBjYWxsLiBIb3dldmVyLCB0aGUgc2FtZSBiYXNlXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ1OC0gKiBAZ3B1c3ZtIGNhbiBhbHNvIGJlIHVzZWQgd2l0aCBib3RoIG1vZGVzIHRvZ2V0aGVyIGluIHdoaWNoIGNhc2UgdGhlIGZ1bGxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDU5OiAqIHNldHVwIGlzIG5lZWRlZCwgd2hlcmUgdGhlIGNvcmUgZHJtX2dwdXN2bV9wYWdlcyBBUEkgd2lsbCBzaW1wbHkgbmV2ZXIgdXNlXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ2MC0gKiB0aGUgb3RoZXIgZmllbGRzLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDYzLSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0NjQ6aW50IGRybV9ncHVzdm1faW5pdChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00NjUtXHRcdCAgICBjb25zdCBjaGFyICpuYW1lLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDY4LVx0XHQgICAgdW5zaWduZWQgbG9uZyBub3RpZmllcl9zaXplLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0Njk6XHRcdCAgICBjb25zdCBzdHJ1Y3QgZHJtX2dwdXN2bV9vcHMgKm9wcyxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDcwLVx0XHQgICAgY29uc3QgdW5zaWduZWQgbG9uZyAqY2h1bmtfc2l6ZXMsIGludCBudW1fY2h1bmtzKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDc2LVx0fSBlbHNlIHtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDc3Olx0XHQvKiBObyBmdWxsIFNWTSBtb2RlLCBvbmx5IGNvcmUgZHJtX2dwdXN2bV9wYWdlcyBBUEkuICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ3OC1cdFx0aWYgKG9wcyB8fCBudW1fY2h1bmtzIHx8IG1tX3JhbmdlIHx8IG5vdGlmaWVyX3NpemUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01MDUtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1MDY6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dwdXN2bV9pbml0KTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTA3LVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01MDgtLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjUwOTogKiB0b19kcm1fZ3B1c3ZtX25vdGlmaWVyKCkgLSByZXRyaWV2ZSB0aGUgY29udGFpbmVyIHN0cnVjdCBmb3IgYSBnaXZlbiByYnRyZWUgbm9kZVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1MTA6ICogQG5vZGU6IGEgcG9pbnRlciB0byB0aGUgcmJ0cmVlIG5vZGUgZW1iZWRkZWQgd2l0aGluIGEgZHJtX2dwdXN2bV9ub3RpZmllciBzdHJ1Y3RcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTExLSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjUxMjogKiBSZXR1cm46IEEgcG9pbnRlciB0byB0aGUgY29udGFpbmluZyBkcm1fZ3B1c3ZtX25vdGlmaWVyIHN0cnVjdHVyZS5cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTEzLSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1MTQ6c3RhdGljIHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICp0b19kcm1fZ3B1c3ZtX25vdGlmaWVyKHN0cnVjdCByYl9ub2RlICpub2RlKVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01MTUte1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1MTY6XHRyZXR1cm4gY29udGFpbmVyX29mKG5vZGUsIHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyLCBpdHJlZS5yYik7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTUxNy19XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01MTktLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjUyMDogKiBkcm1fZ3B1c3ZtX25vdGlmaWVyX2luc2VydCgpIC0gSW5zZXJ0IEdQVSBTVk0gbm90aWZpZXJcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTIxLSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01MjUtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjUyNjpzdGF0aWMgdm9pZCBkcm1fZ3B1c3ZtX25vdGlmaWVyX2luc2VydChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1Mjc6XHRcdFx0XHQgICAgICAgc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyKVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01Mjgte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTM1LVx0aWYgKG5vZGUpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjUzNjpcdFx0aGVhZCA9IFx1MDAyNih0b19kcm1fZ3B1c3ZtX25vdGlmaWVyKG5vZGUpKS1cdTAwM2VlbnRyeTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTM3LVx0ZWxzZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTQzLS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1NDQ6ICogZHJtX2dwdXN2bV9ub3RpZmllcl9yZW1vdmUoKSAtIFJlbW92ZSBHUFUgU1ZNIG5vdGlmaWVyXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU0NS0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHRydWN0dXJlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01NDktICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU1MDpzdGF0aWMgdm9pZCBkcm1fZ3B1c3ZtX25vdGlmaWVyX3JlbW92ZShzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1NTE6XHRcdFx0XHQgICAgICAgc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyKVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01NTIte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTU3LS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1NTg6ICogZHJtX2dwdXN2bV9maW5pKCkgLSBGaW5hbGl6ZSB0aGUgR1BVIFNWTS5cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTU5LSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTYzLSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1NjQ6dm9pZCBkcm1fZ3B1c3ZtX2Zpbmkoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTY1LXtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTY2Olx0c3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyLCAqbmV4dDtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTY3LVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1Njg6XHRkcm1fZ3B1c3ZtX2Zvcl9lYWNoX25vdGlmaWVyX3NhZmUobm90aWZpZXIsIG5leHQsIGdwdXN2bSwgMCwgTE9OR19NQVgpIHtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTY5Olx0XHRzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UsICpfX25leHQ7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU3MC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU3Ni1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTc3Olx0XHRkcm1fZ3B1c3ZtX2Zvcl9lYWNoX3JhbmdlX3NhZmUocmFuZ2UsIF9fbmV4dCwgbm90aWZpZXIsIDAsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU3OC1cdFx0XHRcdFx0ICAgICAgIExPTkdfTUFYKVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1Nzk6XHRcdFx0ZHJtX2dwdXN2bV9yYW5nZV9yZW1vdmUoZ3B1c3ZtLCByYW5nZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU4MC1cdH1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU4NS19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU4NjpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ3B1c3ZtX2ZpbmkpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01ODctXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU4OC0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTg5OiAqIGRybV9ncHVzdm1fbm90aWZpZXJfYWxsb2MoKSAtIEFsbG9jYXRlIEdQVSBTVk0gbm90aWZpZXJcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTkwLSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01OTYtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU5NzpzdGF0aWMgc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1OTg6ZHJtX2dwdXN2bV9ub3RpZmllcl9hbGxvYyhzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLCB1bnNpZ25lZCBsb25nIGZhdWx0X2FkZHIpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU5OS17XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjYwMDpcdHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpub3RpZmllcjtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjAxLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjIwLS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2MjE6ICogZHJtX2dwdXN2bV9ub3RpZmllcl9mcmVlKCkgLSBGcmVlIEdQVSBTVk0gbm90aWZpZXJcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjIyLSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02MjYtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjYyNzpzdGF0aWMgdm9pZCBkcm1fZ3B1c3ZtX25vdGlmaWVyX2ZyZWUoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NjI4Olx0XHRcdFx0ICAgICBzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqbm90aWZpZXIpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTYyOS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02MzgtLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjYzOTogKiB0b19kcm1fZ3B1c3ZtX3JhbmdlKCkgLSByZXRyaWV2ZSB0aGUgY29udGFpbmVyIHN0cnVjdCBmb3IgYSBnaXZlbiByYnRyZWUgbm9kZVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NDA6ICogQG5vZGU6IGEgcG9pbnRlciB0byB0aGUgcmJ0cmVlIG5vZGUgZW1iZWRkZWQgd2l0aGluIGEgZHJtX2dwdXN2bV9yYW5nZSBzdHJ1Y3RcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjQxLSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY0MjogKiBSZXR1cm46IEEgcG9pbnRlciB0byB0aGUgY29udGFpbmluZyBkcm1fZ3B1c3ZtX3JhbmdlIHN0cnVjdHVyZS5cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjQzLSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NDQ6c3RhdGljIHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICp0b19kcm1fZ3B1c3ZtX3JhbmdlKHN0cnVjdCByYl9ub2RlICpub2RlKVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NDUte1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NDY6XHRyZXR1cm4gY29udGFpbmVyX29mKG5vZGUsIHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlLCBpdHJlZS5yYik7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY0Ny19XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NDktLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY1MDogKiBkcm1fZ3B1c3ZtX3JhbmdlX2luc2VydCgpIC0gSW5zZXJ0IEdQVSBTVk0gcmFuZ2VcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjUxLSAqIEBub3RpZmllcjogUG9pbnRlciB0byB0aGUgR1BVIFNWTSBub3RpZmllciBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY1NS0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NjU2OnN0YXRpYyB2b2lkIGRybV9ncHVzdm1fcmFuZ2VfaW5zZXJ0KHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpub3RpZmllcixcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NjU3Olx0XHRcdFx0ICAgIHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpyYW5nZSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjU4LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY2MS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NjYyOlx0ZHJtX2dwdXN2bV9ub3RpZmllcl9sb2NrKG5vdGlmaWVyLVx1MDAzZWdwdXN2bSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY2My1cdGludGVydmFsX3RyZWVfaW5zZXJ0KFx1MDAyNnJhbmdlLVx1MDAzZWl0cmVlLCBcdTAwMjZub3RpZmllci1cdTAwM2Vyb290KTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY2Ni1cdGlmIChub2RlKVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2Njc6XHRcdGhlYWQgPSBcdTAwMjYodG9fZHJtX2dwdXN2bV9yYW5nZShub2RlKSktXHUwMDNlZW50cnk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY2OC1cdGVsc2Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY3MS1cdGxpc3RfYWRkKFx1MDAyNnJhbmdlLVx1MDAzZWVudHJ5LCBoZWFkKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NjcyOlx0ZHJtX2dwdXN2bV9ub3RpZmllcl91bmxvY2sobm90aWZpZXItXHUwMDNlZ3B1c3ZtKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjczLX1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY3NS0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6Njc2OiAqIF9fZHJtX2dwdXN2bV9yYW5nZV9yZW1vdmUoKSAtIFJlbW92ZSBHUFUgU1ZNIHJhbmdlXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY3Ny0gKiBAbm90aWZpZXI6IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gbm90aWZpZXIgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02ODEtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY4MjpzdGF0aWMgdm9pZCBfX2RybV9ncHVzdm1fcmFuZ2VfcmVtb3ZlKHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpub3RpZmllcixcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NjgzOlx0XHRcdFx0ICAgICAgc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlKVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02ODQte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjg5LS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2OTA6ICogZHJtX2dwdXN2bV9yYW5nZV9hbGxvYygpIC0gQWxsb2NhdGUgR1BVIFNWTSByYW5nZVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02OTEtICogQGdwdXN2bTogUG9pbnRlciB0byB0aGUgR1BVIFNWTSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTcwMC0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NzAxOnN0YXRpYyBzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjcwMjpkcm1fZ3B1c3ZtX3JhbmdlX2FsbG9jKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjcwMzpcdFx0ICAgICAgIHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpub3RpZmllcixcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNzA0LVx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBmYXVsdF9hZGRyLCB1bnNpZ25lZCBsb25nIGNodW5rX3NpemUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03MDYte1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo3MDc6XHRzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2U7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTcwOC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTcyOC0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NzI5OiAqIGRybV9ncHVzdm1faG1tX3Bmbl90b19vcmRlcigpIC0gR2V0IHRoZSBsYXJnZXN0IENQVSBtYXBwaW5nIG9yZGVyLlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03MzAtICogQGhtbV9wZm46IFRoZSBjdXJyZW50IGhtbV9wZm4uXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03NDEtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjc0MjpzdGF0aWMgdW5zaWduZWQgaW50IGRybV9ncHVzdm1faG1tX3Bmbl90b19vcmRlcih1bnNpZ25lZCBsb25nIGhtbV9wZm4sXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTc0My1cdFx0XHRcdFx0XHR1bnNpZ25lZCBsb25nIGhtbV9wZm5faW5kZXgsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03NTctLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjc1ODogKiBkcm1fZ3B1c3ZtX2NoZWNrX3BhZ2VzKCkgLSBDaGVjayBwYWdlc1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03NTktICogQGdwdXN2bTogUG9pbnRlciB0byB0aGUgR1BVIFNWTSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTc2OS0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NzcwOnN0YXRpYyBib29sIGRybV9ncHVzdm1fY2hlY2tfcGFnZXMoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NzcxOlx0XHRcdFx0ICAgc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03NzItXHRcdFx0XHQgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTgxNi1cdFx0fVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo4MTc6XHRcdGkgJiM0Mzs9IDB4MSBcdTAwM2NcdTAwM2MgZHJtX2dwdXN2bV9obW1fcGZuX3RvX29yZGVyKHBmbnNbaV0sIGksIG5wYWdlcyk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTgxOC1cdH1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTgyNS0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODI2OiAqIGRybV9ncHVzdm1fc2Nhbl9tbSgpIC0gQ2hlY2sgdGhlIG1pZ3JhdGlvbiBzdGF0ZSBvZiBhIGRybV9ncHVzdm1fcmFuZ2VcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODI3OiAqIEByYW5nZTogUG9pbnRlciB0byB0aGUgc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgdG8gY2hlY2suXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTgyOC0gKiBAZGV2X3ByaXZhdGVfb3duZXI6IFRoZSBzdHJ1Y3QgZGV2X3ByaXZhdGVfb3duZXIgdG8gdXNlIHRvIGRldGVybWluZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODM4LSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjgzOTogKiBSZXR1cm46IFNlZSBcdTAwMjZlbnVtIGRybV9ncHVzdm1fc2Nhbl9yZXN1bHQuXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg0MC0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODQxOmVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBkcm1fZ3B1c3ZtX3NjYW5fbW0oc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NDItXHRcdFx0XHRcdCAgICAgICB2b2lkICpkZXZfcHJpdmF0ZV9vd25lcixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg0NS1cdHN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90aWZpZXIgKm5vdGlmaWVyID0gXHUwMDI2cmFuZ2UtXHUwMDNlbm90aWZpZXItXHUwMDNlbm90aWZpZXI7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg0NjpcdHVuc2lnbmVkIGxvbmcgc3RhcnQgPSBkcm1fZ3B1c3ZtX3JhbmdlX3N0YXJ0KHJhbmdlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODQ3Olx0dW5zaWduZWQgbG9uZyBlbmQgPSBkcm1fZ3B1c3ZtX3JhbmdlX2VuZChyYW5nZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg0OC1cdHN0cnVjdCBobW1fcmFuZ2UgaG1tX3JhbmdlID0ge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODU1LVx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODU2Olx0ZW51bSBkcm1fZ3B1c3ZtX3NjYW5fcmVzdWx0IHN0YXRlID0gRFJNX0dQVVNWTV9TQ0FOX1VOUE9QVUxBVEVELCBuZXdfc3RhdGU7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg1Ny1cdHVuc2lnbmVkIGxvbmcgKnBmbnM7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NzItXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg3MzpcdGRybV9ncHVzdm1fbm90aWZpZXJfbG9jayhyYW5nZS1cdTAwM2VncHVzdm0pO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NzQtXHRpZiAobW11X2ludGVydmFsX3JlYWRfcmV0cnkobm90aWZpZXIsIGhtbV9yYW5nZS5ub3RpZmllcl9zZXEpKSB7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg3NTpcdFx0ZHJtX2dwdXN2bV9ub3RpZmllcl91bmxvY2socmFuZ2UtXHUwMDNlZ3B1c3ZtKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODc2LVx0XHRnb3RvIHJldHJ5O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTE4LVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5MTk6XHRcdGkgJiM0Mzs9IDF1bCBcdTAwM2NcdTAwM2MgZHJtX2dwdXN2bV9obW1fcGZuX3RvX29yZGVyKHBmbnNbaV0sIGksIG5wYWdlcyk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTkyMC1cdH1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTIxLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5MjI6XHRkcm1fZ3B1c3ZtX25vdGlmaWVyX3VubG9jayhyYW5nZS1cdTAwM2VncHVzdm0pO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05MjMtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05MjctfVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5Mjg6RVhQT1JUX1NZTUJPTChkcm1fZ3B1c3ZtX3NjYW5fbW0pO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05MjktXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTkzMC0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6OTMxOiAqIGRybV9ncHVzdm1fcmFuZ2VfY2h1bmtfc2l6ZSgpIC0gRGV0ZXJtaW5lIGNodW5rIHNpemUgZm9yIEdQVSBTVk0gcmFuZ2VcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTMyLSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYz05NDc9c3RhdGljIHVuc2lnbmVkIGxvbmdcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6OTQ4OmRybV9ncHVzdm1fcmFuZ2VfY2h1bmtfc2l6ZShzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5NDk6XHRcdFx0ICAgIHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpub3RpZmllcixcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTUwLVx0XHRcdCAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZhcyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTk2NS1cdFx0aWYgKHN0YXJ0IFx1MDAzZT0gdmFzLVx1MDAzZXZtX3N0YXJ0IFx1MDAyNlx1MDAyNiBlbmQgXHUwMDNjPSB2YXMtXHUwMDNldm1fZW5kIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5NjY6XHRcdCAgICBzdGFydCBcdTAwM2U9IGRybV9ncHVzdm1fbm90aWZpZXJfc3RhcnQobm90aWZpZXIpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5Njc6XHRcdCAgICBlbmQgXHUwMDNjPSBkcm1fZ3B1c3ZtX25vdGlmaWVyX2VuZChub3RpZmllcikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTk2OC1cdFx0ICAgIHN0YXJ0IFx1MDAzZT0gZ3B1dmFfc3RhcnQgXHUwMDI2XHUwMDI2IGVuZCBcdTAwM2M9IGdwdXZhX2VuZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTk3OS1cdGlmIChlbmQgLSBzdGFydCAhPSBTWl80Sykge1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5ODA6XHRcdHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpyYW5nZTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTgxLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5ODI6XHRcdHJhbmdlID0gZHJtX2dwdXN2bV9yYW5nZV9maW5kKG5vdGlmaWVyLCBzdGFydCwgZW5kKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTgzLVx0XHRpZiAocmFuZ2UpIHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTk5NC1cdFx0ICogZHJtX3BhZ2VtYXBfbWlncmF0ZV90b19kZXZtZW0gd2l0aCAmIzM5O21pZ3JhdGUuY3BhZ2VzICE9IG5wYWdlcyYjMzk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjk5NTpcdFx0ICogYW5kIHRoZW4gdXBvbiBkcm1fZ3B1c3ZtX2dldF9wYWdlcyBkZXZpY2UgcGFnZXMgZnJvbVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05OTYtXHRcdCAqIG90aGVyIHByb2Nlc3NlcyBhcmUgY29sbGVjdGVkICYjNDM7IGZhdWx0ZWQgaW4gd2hpY2ggY3JlYXRlcyBhbGxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMDEtXHRcdGlmIChlbmQgLSBzdGFydCBcdTAwM2M9IGNoZWNrX3BhZ2VzX3RocmVzaG9sZCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTAwMjpcdFx0ICAgICFkcm1fZ3B1c3ZtX2NoZWNrX3BhZ2VzKGdwdXN2bSwgbm90aWZpZXIsIHN0YXJ0LCBlbmQsIGRldl9wcml2YXRlX293bmVyKSkge1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDAzLVx0XHRcdCYjNDM7JiM0MztpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTAxMi0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTAxMzogKiBkcm1fZ3B1c3ZtX2RyaXZlcl9sb2NrX2hlbGQoKSAtIEFzc2VydCBHUFUgU1ZNIGRyaXZlciBsb2NrIGlzIGhlbGRcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTAxNC0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMTctICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEwMTg6c3RhdGljIHZvaWQgZHJtX2dwdXN2bV9kcml2ZXJfbG9ja19oZWxkKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0pXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMTkte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTAyMy0jZWxzZVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDI0OnN0YXRpYyB2b2lkIGRybV9ncHVzdm1fZHJpdmVyX2xvY2tfaGVsZChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtKVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDI1LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMjktLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEwMzA6ICogZHJtX2dwdXN2bV9maW5kX3ZtYV9zdGFydCgpIC0gRmluZCBzdGFydCBhZGRyZXNzIGZvciBmaXJzdCBWTUEgaW4gcmFuZ2VcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTAzMS0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM9MTAzOD11bnNpZ25lZCBsb25nXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEwMzk6ZHJtX2dwdXN2bV9maW5kX3ZtYV9zdGFydChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDQwLVx0XHRcdCAgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwNjAtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDYxOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9ncHVzdm1fZmluZF92bWFfc3RhcnQpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDYyLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDYzLS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDY0OiAqIGRybV9ncHVzdm1fcmFuZ2VfZmluZF9vcl9pbnNlcnQoKSAtIEZpbmQgb3IgaW5zZXJ0IEdQVSBTVk0gcmFuZ2VcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTA2NS0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTA3NS0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTA3NjpzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEwNzc6ZHJtX2dwdXN2bV9yYW5nZV9maW5kX29yX2luc2VydChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDc4LVx0XHRcdFx0dW5zaWduZWQgbG9uZyBmYXVsdF9hZGRyLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTA4MC1cdFx0XHRcdHVuc2lnbmVkIGxvbmcgZ3B1dmFfZW5kLFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDgxOlx0XHRcdFx0Y29uc3Qgc3RydWN0IGRybV9ncHVzdm1fY3R4ICpjdHgpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwODIte1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDgzOlx0c3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDg0Olx0c3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlO1xuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDg1LVx0c3RydWN0IG1tX3N0cnVjdCAqbW0gPSBncHVzdm0tXHUwMDNlbW07XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDkxLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDkyOlx0ZHJtX2dwdXN2bV9kcml2ZXJfbG9ja19oZWxkKGdwdXN2bSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwOTMtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMTAwLVxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMTAxOlx0bm90aWZpZXIgPSBkcm1fZ3B1c3ZtX25vdGlmaWVyX2ZpbmQoZ3B1c3ZtLCBmYXVsdF9hZGRyLCBmYXVsdF9hZGRyICYjNDM7IDEpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NDM1CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgYGRybV9ncHVzdm0uY2A6IEEgUG90ZW50aWFsIFRhcmdldD8qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRoaW5rIHRoaXMgdGhyb3VnaC4gYGRybV9ncHVzdm0uY2AgaXMgYSBnZW5lcmljIGxpYnJhcnksIGFuZCBJJiMzOTttIGFsd2F5cyBvbiB0aGUgbG9va291dCBmb3IgcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0cy4gVGhlIHBhdGNoIG1lbnRpb25zIGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBOb3csIGlmIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB3aXRoaW4gYGRybV9ncHVzdm1fZ2V0X3BhZ2VzYCwgYGRybV9ncHVzdm1fcmFuZ2VfZXZpY3RgLCBgZHJtX2dwdXN2bV9zY2FuX21tYCwgYGFpZTJfcG9wdWxhdGVfcmFuZ2VgLCBvciBgbm91dmVhdV9yYW5nZV9mYXVsdGAsIGl0IG1pZ2h0IGJlIHJlYWNoYWJsZS4KClNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBjYWxsIGNoYWluLiBDYW4gd2UgaGl0IGBkcm1fZ3B1c3ZtX2dldF9wYWdlc2A/IEdvb2QsIGl0JiMzOTtzIGV4cG9ydGVkIGFuZCB0aGUgYHhlYCBkcml2ZXIgdXNlcyBpdC4gIE9rYXksIHRoYXQmIzM5O3MgYSBwb3NpdGl2ZSBzaWduYWwuIFdoYXQgYWJvdXQgYG5vdXZlYXVfcmFuZ2VfZmF1bHRgPyBZZXAsIHRoZSBgbm91dmVhdWAgZHJpdmVyIGhpdHMgdGhhdC4gQW5kIGZpbmFsbHksIGBhaWUyX3BvcHVsYXRlX3JhbmdlYD8gVGhpcyBpcyB1c2VkIGJ5IHRoZSBgYW1keGRuYWAgZHJpdmVyLCBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuCgpXYWl0IGEgc2Vjb25kLi4uIGBhbWR4ZG5hYD8gVGhhdCYjMzk7cyB0aGUgbmV3IGRyaXZlciBpbiBgZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2AuIEhtbW0sIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmc6IGlzIHRoYXQgZHJpdmVyIGV2ZW4gZW5hYmxlZCBpbiBzeXprYWxsZXI/IExldCYjMzk7cyBxdWlja2x5IHZlcmlmeSBpZiBgQ09ORklHX0RSTV9BTURYRE5BYCBpcyBldmVuIGRlZmluZWQuIFRoYXQmIzM5O3MgYSBjcnVjaWFsIGZpcnN0IHN0ZXAgYmVmb3JlIGRlZGljYXRpbmcgdGltZSB0byB0aGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIGF2ZW51ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFJNX0FNRFhETkEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzAzMAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyB0aGUgQU1EIFhETkEgQWNjZWxlcmF0b3IgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEFNRCBYRE5BIGFjY2VsZXJhdG9yIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoaXMgc3lzdGVtLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGF0IGRyaXZlci4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGRyaXZlcnMvYWNjZWwvYW1keGRuYS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBzZXR0aW5ncywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFhETkEgZHJpdmVyLiBUaGlzIGZpbGUgd2lsbCBsaWtlbHkgdGVsbCBtZSBob3cgdG8gZW5hYmxlIGl0LCB3aGF0IG90aGVyIGNvbXBvbmVudHMgaXQgcmVsaWVzIG9uLCBhbmQgcG90ZW50aWFsbHkgd2hhdCBmZWF0dXJlcyBjYW4gYmUgdG9nZ2xlZC4gSSYjMzk7bSBob3BpbmcgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgaW50ZWdyYXRpb24gYW5kIG9wdGlvbnMgZnJvbSB0aGlzIEtjb25maWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYWNjZWwvYW1keGRuYS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYWNjZWwvYW1keGRuYS9LY29uZmlnLTItXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvS2NvbmZpZzozOmNvbmZpZyBEUk1fQUNDRUxfQU1EWEROQVxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O0FNRCBBSSBFbmdpbmVcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczMDkKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA0NDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiBhIERSTSBBY2NlbGVyYXRvcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYENPTkZJR19EUk1fQUNDRUxfQU1EWEROQWAuIENhbiBJIGV2ZW4gdGVzdCB0aGlzIGluIGEgVk0/IFByb2JhYmx5IG5vdCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUsIHJpZ2h0PyBCdXQgaG9sZCBvbi4uLiBzeXprYWxsZXIgZnV6emVzIERSTSBkcml2ZXJzIGJ5IG9wZW5pbmcgYC9kZXYvZHJpL3JlbmRlckQqYC4gSWYgdGhlIGRldmljZSBpc24mIzM5O3QgcHJlc2VudCwgdGhhdCBvcGVuIHdpbGwganVzdCBmYWlsLiBIbW0sIHN5emthbGxlciBoYXMgZnVuY3Rpb25zIGxpa2UgYHN5el91c2JfY29ubmVjdGAgYW5kIGBzeXpfdmhjaV8uLi5gIGZvciBVU0IgYW5kIFdpLUZpIChgc3l6XzgwMjExXy4uLmApLiBCdXQgd2hhdCBhYm91dCBQQ0k/IE5vIGRpcmVjdCBnZW5lcmljIFBDSSBkZXZpY2UgaW5qZWN0aW9uIGZ1bmN0aW9uIGluIHN5emthbGxlci4KCkNvdWxkIEkgdXNlIHNvbWV0aGluZyBsaWtlIGB2a21zYCBvciBgdmdlbWA/IE5vLCB0aG9zZSBhcmUgc2VwYXJhdGUgZHJpdmVycy4gV2FpdCwgZG9lc24mIzM5O3Qgc3l6a2FsbGVyIGhhdmUgYSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBjYWxsPyBOb3BlLCBpdCBkb2VzbiYjMzk7dC4gQnV0IHRoaXMgcGF0Y2ggaW52b2x2ZXMgYGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0YCwgd2hpY2ggaXMgYSBjb3JlIE1NL0hNTSBmdW5jdGlvbi4gVGhlIHBhdGNoIGZpeGVzIGl0cyB1c2FnZSBhY3Jvc3MgdGhyZWUgZHJpdmVycy4gSXMgdGhpcyBldmVuIHdvcnRoIGZ1enppbmcgaWYgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSWYgaXQmIzM5O3Mgbm90IGZ1emFibGUgaW4gYSBWTSwgSSBzaG91bGQgc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKTGV0JiMzOTtzIGNoZWNrIGlmIE5vdXZlYXUgY2FuIGJlIHByb2JlZCB3aXRob3V0IGhhcmR3YXJlLiBObywgaXQgaXMgYSBQQ0kgZHJpdmVyLiBUaGVuIEkgc2hvdWxkIGNoZWNrIGB4ZWAgYW5kIGBhbWR4ZG5hYC4gTm8sIGJvdGggUENJLiBXYWl0LCBkb2VzbiYjMzk7dCBzeXprYWxsZXIgaGF2ZSBhIGBzeXpfcGNpX2RldmljZV9hZGRgIGNhbGw/IE5vcGUuIEhvbGQgb24sIGRvZXNuJiMzOTt0IHN5emthbGxlciB1c2UgYHFlbXVgIHdpdGggYC1kZXZpY2VgIHRvIGluamVjdCAqc29tZSogUENJIGRldmljZXM/IE5vLCBzeXprYWxsZXIgZG9lc24mIzM5O3QgYXBwZWFyIHRvIGluamVjdCBzcGVjaWZpYyBHUFUgZGV2aWNlcywgbGlrZSB0aGUgSW50ZWwgWGUgb3IgQU1EIFhETkEgZGV2aWNlcy4gV2FpdCwgc3l6a2FsbGVyIGFjdHVhbGx5ICpkb2VzKiBmdXp6IGBub3V2ZWF1YCEgSG93IGlzIHRoYXQgcG9zc2libGU/IE5vIGBzeXpfcGNpX2RldmljZV9hZGRgLiBJIG5lZWQgdG8gY2hlY2sgaWYgc3l6a2FsbGVyIGhhcyBkZXNjcmlwdGlvbnMgZm9yIGBub3V2ZWF1YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtub3V2ZWF1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c3lzL2xpbnV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MjMyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmF2aWdhdGluZyB0aGUgQ29kZWJhc2UqKgoKT2theSwgd2FpdCBhIG1pbnV0ZSwgSSBzZWVtIHRvIGJlIGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUsIG5vdCB0aGUgc3l6a2FsbGVyIHJlcG9zaXRvcnkuIFRoYXQgY2hhbmdlcyB0aGluZ3M7IEkgY2FuJiMzOTt0IGRpcmVjdGx5IGFjY2VzcyB0aGUgc3l6a2FsbGVyLXNwZWNpZmljIGRlc2NyaXB0aW9ucyBoZXJlLiBIbW0sIGJ1dCB0aGF0JiMzOTtzIGFscmlnaHQsIHRoaXMgaXMgc3RpbGwgdXNlZnVsLiBUaGUgcXVlc3Rpb24gYXQgaGFuZCBpcyB3aGV0aGVyIGBub3V2ZWF1YCBoYXMgYSAmIzM0O3NvZnR3YXJlLW9ubHkmIzM0OyBtb2RlIG9mIG9wZXJhdGlvbi4gVGhpcyBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBmb3IgdGhhdCBpbmZvcm1hdGlvbi4gTGV0IG1lIHNlZSB3aGF0IEkgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25vdXZlYXVfZHJtX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmM9ODQwPXN0YXRpYyB2b2lkIHF1aXJrX2Jyb2tlbl9udl9ydW5wbShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTg1Ni1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmM6ODU3OnN0YXRpYyBpbnQgbm91dmVhdV9kcm1fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTg1OC1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwZW50KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmM9MTQzOD1ub3V2ZWF1X2RybV9wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMtMTQ0MC1cdC5pZF90YWJsZSA9IG5vdXZlYXVfZHJtX3BjaV90YWJsZSxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmM6MTQ0MTpcdC5wcm9iZSA9IG5vdXZlYXVfZHJtX3Byb2JlLFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYy0xNDQyLVx0LnJlbW92ZSA9IG5vdXZlYXVfZHJtX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2ODYKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogUENJIERyaXZlciBJbnF1aXJ5KioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIFBDSSBkcml2ZXIsIGdvdCBpdC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIGFuZCBjb250ZXh0LiBXaGF0IGFyZSB3ZSB0cnlpbmcgdG8gYWNoaWV2ZT8gSXMgdGhpcyBhIG5ldyBkcml2ZXIsIG9yIGFuIGV4aXN0aW5nIG9uZSB1bmRlciBzY3J1dGlueT8gV2hhdCBraW5kIG9mIHN5c3RlbSBhcmUgd2UgZGVhbGluZyB3aXRoPyBLbm93aW5nIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBpcyBjcnVjaWFsLgoKVGhlbi4uLiBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBlZCB0bzogd2hhdCBhYm91dCB0aGF0IGBhbWR4ZG5hYD8gSSYjMzk7bSBjdXJpb3VzLiBUaGF0JiMzOTtzIG5vdCBzb21ldGhpbmcgSSYjMzk7ZCBuZWNlc3NhcmlseSBleHBlY3QgaW4gdGhpcyBjb250ZXh0LCBidXQgaXQgd2FycmFudHMgY29uc2lkZXJhdGlvbi4gSXMgdGhhdCByZWxhdGVkIHRvIHRoZSBkZXZpY2UsIG9yIGlzIGl0IG1lcmVseSBiZWluZyByZWZlcmVuY2VkPyBJcyB0aGlzIHNvbWUgY3Jvc3MtY29tcGF0aWJpbGl0eSBjb25jZXJuIHRoYXQgaXMgYmVpbmcgYnJvdWdodCB1cD8KCkkmIzM5O20gc3RhcnRpbmcgdG8gdGhpbmsgdGhyb3VnaCB0aGUgcG9zc2libGUgaW50ZXJhY3Rpb25zIHRoaXMgY291bGQgaGF2ZS4gV2hhdCBkb2VzIHRoYXQgbmFtZSBldmVuIHBvaW50IHRvPyBUaGUgdHlwZSBvZiBkZXZpY2UsIGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHZlcnkgYmFzaWMgdGhpbmcgdG8gY2hlY2sgYXQgdGhpcyBwb2ludCB3b3VsZCBiZSB0byBzZWFyY2ggZm9yIGl0cyBpbXBsZW1lbnRhdGlvbiBvbiB0aGUgc3lzdGVtLCB0byBnYWluIG1vcmUgZGV0YWlscy4KCk15IGFzc3VtcHRpb24gaXMgdGhhdCBpdCByZXF1aXJlcyBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FtZHhkbmFfcGNpX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5NzUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIGBwcm9iZWAgV2l0aGluIGBhbWR4ZG5hYCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCAmIzM0O1JpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgYHByb2JlYCBmdW5jdGlvbiB3aXRoaW4gdGhlIGBhbWR4ZG5hYCBjb250ZXh0LiBMZXQmIzM5O3MgZ2V0IGEgaGFuZGxlIG9uIHdoYXQgaXQmIzM5O3MgZG9pbmcuJiMzNDsgSSBrbm93IHRoaXMgY29kZWJhc2UgaW5zaWRlIGFuZCBvdXQsIHNvIHRoZSBzcGVjaWZpY3Mgb2YgJiMzNDtjaGVjayYjMzQ7IGFyZSBpbXBsaWVkIOKAkyBJJiMzOTttIHByb2JhYmx5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCBpdHMgcHVycG9zZSwgaXRzIGlucHV0cywgb3V0cHV0cywgYW55IGNyaXRpY2FsIGRlcGVuZGVuY2llcyBvciBzaGFyZWQgcmVzb3VyY2VzIGl0IG1pZ2h0IGJlIG1hbmlwdWxhdGluZy4gSXMgaXQgYSBkaWFnbm9zdGljIGZ1bmN0aW9uPyBBIGNvcmUgZGF0YSBnYXRoZXJpbmcgb3BlcmF0aW9uPyBJcyBpdCBpbnRlcmFjdGluZyB3aXRoIGhhcmR3YXJlIGRpcmVjdGx5PyBJcyBpdCBjaGVja2luZyBmb3IgZXJyb3JzIG9yIHZhbGlkYXRpbmcgYSBzcGVjaWZpYyBjb25kaXRpb24/IFdoYXRldmVyIHRoZSBwdXJwb3NlIG9mIGBwcm9iZWAsIHVuZGVyc3RhbmRpbmcgaXRzIGZ1bmN0aW9uYWxpdHkgaXMgaW1wb3J0YW50IHRvIHRoZSBjb250ZXh0IG9mIHRoZSBncmVhdGVyIGFtZHhkbmEgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYWNjZWwvYW1keGRuYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfcGNpX2Rydi5jPTM1OT1zdGF0aWMgdm9pZCBhbWR4ZG5hX3hkbmFfZHJtX3JlbGVhc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgdm9pZCAqcmVzKVxuLS1cbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYy0zNjUtXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9wY2lfZHJ2LmM6MzY2OnN0YXRpYyBpbnQgYW1keGRuYV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfcGNpX2Rydi5jLTM2Ny17XG4tLVxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfcGNpX2Rydi5jPTQ4Nj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgYW1keGRuYV9wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYy00ODgtXHQuaWRfdGFibGUgPSBwY2lfaWRzLFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfcGNpX2Rydi5jOjQ4OTpcdC5wcm9iZSA9IGFtZHhkbmFfcHJvYmUsXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9wY2lfZHJ2LmMtNDkwLVx0LnJlbW92ZSA9IGFtZHhkbmFfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTQ5OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBzdW1tYXJ5OgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIFBDSSBEcml2ZXIgTGFuZHNjYXBlKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGNvbnRleHQgaXMgdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgUENJIGRyaXZlciwgYW5kIG15IGJyYWluIGltbWVkaWF0ZWx5IHN0YXJ0cyB0byBjYXRlZ29yaXplIGFuZCBwbGFjZSBpdCB3aXRoaW4gdGhlIGJyb2FkZXIgZnJhbWV3b3JrLiBGaW5lLCBQQ0kgZHJpdmVyLCBnb3QgaXQuIFRoZW4gbXkgdGhvdWdodHMgc2hpZnQgdG8gYW5vdGhlciBmaWxlLCBuYW1lbHkgYGRybV9ncHVzdm0uY2AsIGFuZCBJIHN0YXJ0IHRvIG1ha2UgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBpdCBhbmQgb3VyIGluaXRpYWwgYXNzZXNzbWVudC4gQWgsIGBkcm1fZ3B1c3ZtLmNgIOKAkyB0aGF0JiMzOTtzIHNlbGVjdGVkIGJ5IHRoZSBgRFJNX1hFYCBjb25maWcgb3B0aW9uLgoKVGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgZmlyc3QgY29tbWVudCAmIzM0O0l0JiMzOTtzIGEgUENJIGRyaXZlciYjMzQ7IGFuZCB0aGUgYGRybV9ncHVzdm0uY2AgZmlsZSBpcyB0aGF0IHRoZSBQQ0kgZHJpdmVyIG1pZ2h0IGJlIGNvbm5lY3RlZCB0byB0aGUgYGRybV9ncHVzdm0uY2AgZmlsZSB0aHJvdWdoIHRoZSBgRFJNX1hFYCBjb25maWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3hlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTA3OCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc9MTA0PWNvbmZpZyBEUk1fWEVfRk9SQ0VfUFJPQkVcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjEwNTpcdHN0cmluZyBcJiMzNDtGb3JjZSBwcm9iZSB4ZSBmb3Igc2VsZWN0ZWQgSW50ZWwgaGFyZHdhcmUgSURzXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy0xMDYtXHRkZXBlbmRzIG9uIERSTV9YRVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTA3LVx0aGVscFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6MTA4Olx0ICBUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgeGUuZm9yY2VfcHJvYmUgbW9kdWxlXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy0xMDktXHQgIHBhcmFtZXRlci4gVXNpbmcgdGhlIG1vZHVsZSBwYXJhbWV0ZXIgb3ZlcnJpZGVzIHRoaXMgb3B0aW9uLlxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTEwLVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6MTExOlx0ICBGb3JjZSBwcm9iZSB0aGUgeGUgZm9yIEludGVsIGdyYXBoaWNzIGRldmljZXMgdGhhdCBhcmVcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTExMi1cdCAgcmVjb2duaXplZCBidXQgbm90IHByb3Blcmx5IHN1cHBvcnRlZCBieSB0aGlzIGtlcm5lbCB2ZXJzaW9uLiBJdCBpc1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTExNS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjExNjpcdCAgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBibG9jayB0aGUgcHJvYmUgb2YgcmVjb2duaXplZCBhbmQgZnVsbHlcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTExNy1cdCAgc3VwcG9ydGVkIGRldmljZXMuXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy0xMTgtXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzoxMTk6XHQgIFVzZSBcJiMzNDtcJiMzNDsgdG8gZGlzYWJsZSBmb3JjZSBwcm9iZS4gSWYgaW4gZG91YnQsIHVzZSB0aGlzLlxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTIwLVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6MTIxOlx0ICBVc2UgXCYjMzQ7XHUwMDNjcGNpLWlkXHUwMDNlWyxcdTAwM2NwY2ktaWRcdTAwM2UsLi4uXVwmIzM0OyB0byBmb3JjZSBwcm9iZSB0aGUgeGUgZm9yIGxpc3RlZFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTIyLVx0ICBkZXZpY2VzLiBGb3IgZXhhbXBsZSwgXCYjMzQ7NDUwMFwmIzM0OyBvciBcJiMzNDs0NTAwLDQ1NzFcJiMzNDsuXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy0xMjMtXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzoxMjQ6XHQgIFVzZSBcJiMzNDsqXCYjMzQ7IHRvIGZvcmNlIHByb2JlIHRoZSBkcml2ZXIgZm9yIGFsbCBrbm93biBkZXZpY2VzLlxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTI1LVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6MTI2Olx0ICBVc2UgXCYjMzQ7IVwmIzM0OyByaWdodCBiZWZvcmUgdGhlIElEIHRvIGJsb2NrIHRoZSBwcm9iZSBvZiB0aGUgZGV2aWNlLiBGb3JcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjEyNzpcdCAgZXhhbXBsZSwgXCYjMzQ7NDUwMCwhNDU3MVwmIzM0OyBmb3JjZXMgdGhlIHByb2JlIG9mIDQ1MDAgYW5kIGJsb2NrcyB0aGUgcHJvYmUgb2ZcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTEyOC1cdCAgNDU3MS5cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTEyOS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjEzMDpcdCAgVXNlIFwmIzM0OyEqXCYjMzQ7IHRvIGJsb2NrIHRoZSBwcm9iZSBvZiB0aGUgZHJpdmVyIGZvciBhbGwga25vd24gZGV2aWNlcy5cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTEzMS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTQtI2luY2x1ZGUgXHUwMDNjZHJtL2RybV9tYW5hZ2VkLmhcdTAwM2VcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxNTojaW5jbHVkZSBcdTAwM2Nkcm0vZHJtX3Byb2JlX2hlbHBlci5oXHUwMDNlXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTYtI2luY2x1ZGUgXHUwMDNjZHJtL2ludGVsL2Rpc3BsYXlfbWVtYmVyLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9NTA9SU5URUxfRElTUExBWV9NRU1CRVJfU1RBVElDX0FTU0VSVChzdHJ1Y3QgeGVfZGV2aWNlLCBkcm0sIGRpc3BsYXkpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy01NC0vKipcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo1NTogKiB4ZV9kaXNwbGF5X2RyaXZlcl9wcm9iZV9kZWZlciAtIERldGVjdCBpZiB3ZSBuZWVkIHRvIHdhaXQgZm9yIG90aGVyIGRyaXZlcnNcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy01Ni0gKlx0XHRcdFx0ICAgZWFybHkgb25cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNjAtICpcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo2MTogKiBSZXR1cm5zOiB0cnVlIGlmIHByb2JlIG5lZWRzIHRvIGJlIGRlZmVycmVkLCBmYWxzZSBvdGhlcndpc2VcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy02Mi0gKi9cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo2Mzpib29sIHhlX2Rpc3BsYXlfZHJpdmVyX3Byb2JlX2RlZmVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTY0LXtcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo2NTpcdGlmICgheGVfbW9kcGFyYW0ucHJvYmVfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy02Ni1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNjctXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6Njg6XHRyZXR1cm4gaW50ZWxfZGlzcGxheV9kcml2ZXJfcHJvYmVfZGVmZXIocGRldik7XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNjktfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz03Nj1zdGF0aWMgdm9pZCB4ZV9kaXNwbGF5X2ZpbmlfZWFybHkodm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy04MC1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo4MTpcdGlmICgheGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTgyLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTg5PWludCB4ZV9kaXNwbGF5X2luaXRfZWFybHkoc3RydWN0IHhlX2RldmljZSAqeGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTkzLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjk0Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtOTUtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy05OS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxMDA6XHRpbnRlbF9kaXNwbGF5X2RyaXZlcl9lYXJseV9wcm9iZShkaXNwbGF5KTtcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xMDEtXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTEwNS1cdGlmICghaW50ZWxfZGlzcGxheV9kZXZpY2VfcHJlc2VudChkaXNwbGF5KSkge1xuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjEwNjpcdFx0eGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5ID0gZmFsc2U7XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTA3LVx0XHR1bnNldF9kaXNwbGF5X2ZlYXR1cmVzKHhlKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTEwLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjExMTpcdGVyciA9IGludGVsX2Rpc3BsYXlfZHJpdmVyX3Byb2JlX25vaXJxKGRpc3BsYXkpO1xuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTExMi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTExNC1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxMTU6XHRlcnIgPSBpbnRlbF9kaXNwbGF5X2RyaXZlcl9wcm9iZV9ub2dlbShkaXNwbGF5KTtcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xMTYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0xMzg9aW50IHhlX2Rpc3BsYXlfaW5pdChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTQyLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjE0MzpcdGlmICgheGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTE0NC1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTQ1LVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjE0NjpcdGVyciA9IGludGVsX2Rpc3BsYXlfZHJpdmVyX3Byb2JlKGRpc3BsYXkpO1xuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTE0Ny1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTE1Mz12b2lkIHhlX2Rpc3BsYXlfcmVnaXN0ZXIoc3RydWN0IHhlX2RldmljZSAqeGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTE1Ni1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxNTc6XHRpZiAoIXhlLVx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xNTgtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9MTY0PXZvaWQgeGVfZGlzcGxheV91bnJlZ2lzdGVyKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xNjctXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MTY4Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTY5LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTE3NT12b2lkIHhlX2Rpc3BsYXlfc2h1dGRvd24oc3RydWN0IHhlX2RldmljZSAqeGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTE3OC1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxNzk6XHRpZiAoIXhlLVx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xODAtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9MTg5PXZvaWQgeGVfZGlzcGxheV9zaHV0ZG93bl9sYXRlKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xOTItXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MTkzOlx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTk0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTIwMT12b2lkIHhlX2Rpc3BsYXlfaXJxX2hhbmRsZXIoc3RydWN0IHhlX2RldmljZSAqeGUsIHUzMiBtYXN0ZXJfY3RsKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yMDQtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MjA1Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjA2LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTIxMj12b2lkIHhlX2Rpc3BsYXlfaXJxX2VuYWJsZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTMyIGd1X21pc2NfaWlyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yMTUtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MjE2Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjE3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTIyMz12b2lkIHhlX2Rpc3BsYXlfaXJxX3Jlc2V0KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yMjYtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MjI3Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjI4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTIzMz12b2lkIHhlX2Rpc3BsYXlfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yMzYtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MjM3Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjM4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTI1Mj12b2lkIHhlX2Rpc3BsYXlfcG1fc3VzcGVuZChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjU2LVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjI1NzpcdGlmICgheGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTI1OC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0yNjc9dm9pZCB4ZV9kaXNwbGF5X3BtX3N1c3BlbmRfbGF0ZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjcxLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjI3MjpcdGlmICgheGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTI3My1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0yNzg9dm9pZCB4ZV9kaXNwbGF5X3BtX3Jlc3VtZV9lYXJseShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjgxLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjI4MjpcdGlmICgheGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTI4My1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0yODg9dm9pZCB4ZV9kaXNwbGF5X3BtX3Jlc3VtZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjkxLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjI5MjpcdGlmICgheGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTI5My1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0zMDU9c3RhdGljIHZvaWQgeGVfZGlzcGxheV9lbmFibGVfZDNjb2xkKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0zMDgtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MzA5Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMzEwLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTMyOD1zdGF0aWMgdm9pZCB4ZV9kaXNwbGF5X2Rpc2FibGVfZDNjb2xkKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0zMzEtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MzMyOlx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMzMzLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTM1Mz12b2lkIHhlX2Rpc3BsYXlfcG1fcnVudGltZV9zdXNwZW5kKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0zNTYtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MzU3Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMzU4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTM2OT12b2lkIHhlX2Rpc3BsYXlfcG1fcnVudGltZV9zdXNwZW5kX2xhdGUoc3RydWN0IHhlX2RldmljZSAqeGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTM3Mi1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzozNzM6XHRpZiAoIXhlLVx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0zNzQtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9Mzg3PXZvaWQgeGVfZGlzcGxheV9wbV9ydW50aW1lX3Jlc3VtZV9lYXJseShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMzkwLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjM5MTpcdGlmICgheGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTM5Mi1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz00MDE9dm9pZCB4ZV9kaXNwbGF5X3BtX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy00MDQtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NDA1Olx0aWYgKCF4ZS1cdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNDA2LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTQ0OT1zdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2Rpc3BsYXlfcGFyZW50X2ludGVyZmFjZSBwYXJlbnQgPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQ2NC0vKipcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo0NjU6ICogeGVfZGlzcGxheV9wcm9iZSAtIHByb2JlIGRpc3BsYXkgYW5kIGNyZWF0ZSBkaXNwbGF5IHN0cnVjdFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQ2Ni0gKiBAeGU6IFhFIGRldmljZSBpbnN0YW5jZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy00NzQtICovXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NDc1OmludCB4ZV9kaXNwbGF5X3Byb2JlKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQ3Ni17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQ4MC1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo0ODE6XHRpZiAoIXhlLVx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy00ODItXHRcdGdvdG8gbm9fZGlzcGxheTtcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy00ODMtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NDg0Olx0ZGlzcGxheSA9IGludGVsX2Rpc3BsYXlfZGV2aWNlX3Byb2JlKHBkZXYsIFx1MDAyNnBhcmVudCk7XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNDg1LVx0aWYgKElTX0VSUihkaXNwbGF5KSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNDk3LW5vX2Rpc3BsYXk6XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NDk4Olx0eGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5ID0gZmFsc2U7XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNDk5LVx0dW5zZXRfZGlzcGxheV9mZWF0dXJlcyh4ZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTUwMy0jaWZkZWYgQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT05cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo1MDQ6aW50IHhlX2Rpc3BsYXlfZHJpdmVyX2ZiZGV2X3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYmgsXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNTA1LVx0XHRcdFx0ICBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3NpemUgKnNpemVzKVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTUwNi17XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NTA3Olx0cmV0dXJuIGludGVsX2ZiZGV2X2RyaXZlcl9mYmRldl9wcm9iZShmYmgsIHNpemVzKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy01MDgtfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaD0xNT1zdHJ1Y3QgeGVfZGV2aWNlO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaC0xOC1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaDoxOTpib29sIHhlX2Rpc3BsYXlfZHJpdmVyX3Byb2JlX2RlZmVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTtcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaC0yMC1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaDoyMTppbnQgeGVfZGlzcGxheV9kcml2ZXJfZmJkZXZfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiaCxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaC0yMi1cdFx0XHRcdCAgc3RydWN0IGRybV9mYl9oZWxwZXJfc3VyZmFjZV9zaXplICpzaXplcyk7XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmgtMjMtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5Lmg6MjQ6aW50IHhlX2Rpc3BsYXlfcHJvYmUoc3RydWN0IHhlX2RldmljZSAqeGUpO1xuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTI1LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaD00Nz12b2lkIHhlX2Rpc3BsYXlfcG1fcnVudGltZV9yZXN1bWUoc3RydWN0IHhlX2RldmljZSAqeGUpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaC01MC0jZGVmaW5lIFhFX0RJU1BMQVlfRFJJVkVSX09QU1x0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5Lmg6NTE6XHQuZmJkZXZfcHJvYmUgPSBQVFJfSUYoSVNfRU5BQkxFRChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTiksXHRcXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oOjUyOlx0XHRcdCAgICAgIHhlX2Rpc3BsYXlfZHJpdmVyX2ZiZGV2X3Byb2JlKVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTUzLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaC01Ny0jZGVmaW5lIFhFX0RJU1BMQVlfRFJJVkVSX09QUyBcXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oOjU4Olx0LmZiZGV2X3Byb2JlID0gTlVMTFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTU5LVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oOjYwOnN0YXRpYyBpbmxpbmUgaW50IHhlX2Rpc3BsYXlfZHJpdmVyX3Byb2JlX2RlZmVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KSB7IHJldHVybiAwOyB9XG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmgtNjEtXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5Lmg6NjI6c3RhdGljIGlubGluZSBpbnQgeGVfZGlzcGxheV9wcm9iZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSkgeyByZXR1cm4gMDsgfVxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTYzLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYz0zMTE9RVhQT1JUX1NZTUJPTF9JRl9LVU5JVCh4ZV9wY2lfaWRfZ2VuX3BhcmFtKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zMTItXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzEzOnN0YXRpYyBpbnQgZmFrZV9wcm9iZV9pbmZvKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTMxNC1cdFx0XHQgICBjb25zdCBzdHJ1Y3QgeGVfZGV2aWNlX2Rlc2MgKmRlc2MsXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzE1LVx0XHRcdCAgIHN0cnVjdCB4ZV9wY2lfZmFrZV9kYXRhICpkYXRhLFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjMxNjpcdFx0XHQgICBzdHJ1Y3QgeGVfcHJvYmVkX2luZm8gKnByb2JlZF9pbmZvKVxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTMxNy17XG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzE4Olx0cHJvYmVkX2luZm8tXHUwMDNldGlsZV9jb3VudCA9IDEgJiM0MzsgZGVzYy1cdTAwM2VtYXhfcmVtb3RlX3RpbGVzO1xuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTMxOS1cbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zMjAtXHRpZiAoIWRhdGEgfHwgZGVzYy1cdTAwM2VwcmVfZ21kaWRfZ3JhcGhpY3NfaXApIHtcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYzozMjE6XHRcdHByb2JlZF9pbmZvLVx1MDAzZWdyYXBoaWNzX2lwID0gZGVzYy1cdTAwM2VwcmVfZ21kaWRfZ3JhcGhpY3NfaXA7XG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzIyOlx0XHRwcm9iZWRfaW5mby1cdTAwM2VtZWRpYV9pcCA9IGRlc2MtXHUwMDNlcHJlX2dtZGlkX21lZGlhX2lwO1xuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTMyMy1cdH0gZWxzZSB7XG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzI0Olx0XHRwcm9iZWRfaW5mby1cdTAwM2VncmFwaGljc19pcCA9IGZpbmRfZ3JhcGhpY3NfaXAoZGF0YS1cdTAwM2VncmFwaGljc192ZXJ4MTAwKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zMjUtXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzI2LVx0XHRpZiAoZGF0YS1cdTAwM2VtZWRpYV92ZXJ4MTAwKSB7XG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzI3Olx0XHRcdHByb2JlZF9pbmZvLVx1MDAzZW1lZGlhX2lwID0gZmluZF9tZWRpYV9pcChkYXRhLVx1MDAzZW1lZGlhX3ZlcngxMDApO1xuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjMyODpcdFx0XHR4ZV9hc3NlcnQoeGUsIHByb2JlZF9pbmZvLVx1MDAzZW1lZGlhX2lwKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zMjktXHRcdH1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzMxLVxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjMzMjpcdHhlX2Fzc2VydCh4ZSwgcHJvYmVkX2luZm8tXHUwMDNlZ3JhcGhpY3NfaXApO1xuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjMzMzpcdGlmICghcHJvYmVkX2luZm8tXHUwMDNlZ3JhcGhpY3NfaXApXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzM0LVx0XHRyZXR1cm4gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzM2LVx0aWYgKGRhdGEpXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzM3Olx0XHRwcm9iZWRfaW5mby1cdTAwM2VzdGVwID0gZGF0YS1cdTAwM2VzdGVwO1xuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTMzOC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM9MzQyPWludCB4ZV9wY2lfZmFrZV9kZXZpY2VfaW5pdChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzQ1LVx0c3RydWN0IHhlX3BjaV9mYWtlX2RhdGEgKmRhdGEgPSB0ZXN0LVx1MDAzZXByaXY7XG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzQ2Olx0c3RydWN0IHhlX3Byb2JlZF9pbmZvIHByb2JlZF9pbmZvID0ge307XG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzQ3LVx0Y29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCA9IHBjaWlkbGlzdDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzc5LVxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjM4MDpcdGVyciA9IGZha2VfcHJvYmVfaW5mbyh4ZSwgZGVzYywgZGF0YSwgXHUwMDI2cHJvYmVkX2luZm8pO1xuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTM4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTM4My1cbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYzozODQ6XHR4ZV9pbmZvX2luaXRfZWFybHkoeGUsIGRlc2MsIHN1YnBsYXRmb3JtX2Rlc2MsIFx1MDAyNnByb2JlZF9pbmZvKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYzozODU6XHR4ZV9pbmZvX2luaXQoeGUsIGRlc2MsIFx1MDAyNnByb2JlZF9pbmZvKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zODYtXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtNDEtICogYXR0cmlidXRlcyBjYW4gb25seSBiZSBzZXQgYmVmb3JlIGJpbmRpbmcgdGhlIGRldmljZS4gSXQgY2FuIGJlIGFjY29tcGxpc2hlZFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM6NDI6ICogYnkgYmxvY2tpbmcgdGhlIGRyaXZlciBhdXRvcHJvYmU6OlxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtNDMtICpcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jOjQ0OiAqXHQjIGVjaG8gMCBcdTAwM2UgL3N5cy9idXMvcGNpL2RyaXZlcnNfYXV0b3Byb2JlXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYzo0NTogKlx0IyBtb2Rwcm9iZSB4ZVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtNDYtICpcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy02Ni0gKiBBZnRlciBjb25maWd1cmluZyB0aGUgYXR0cmlidXRlcyBhcyBwZXIgbmV4dCBzZWN0aW9uLCB0aGUgZGV2aWNlIGNhbiBiZVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM6Njc6ICogcHJvYmVkIHdpdGg6OlxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtNjgtICpcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy03MC0gKlx0IyAjIG9yXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYzo3MTogKlx0IyBlY2hvIDAwMDA6MDM6MDAuMCBcdTAwM2UgL3N5cy9idXMvcGNpL2RyaXZlcnNfcHJvYmVcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jLTcyLSAqXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtOTAtICogZHJpdmVyLiAgQW55IGNvbWJpbmF0aW9uIG9mIEdUIHR5cGVzIGNhbiBiZSBlbmFibGVkL2Rpc2FibGVkLCBhbHRob3VnaFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM6OTE6ICogc29tZSBzZXR0aW5ncyB3aWxsIGNhdXNlIHRoZSBkZXZpY2UgdG8gZmFpbCB0byBwcm9iZS5cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jLTkyLSAqXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtMTEyLSAqIGVmZmVjdGl2ZWx5IGRpc2FibGluZyB0aGUgcHJpbWFyeSBHVC4gICoqVGhpcyBjb25maWd1cmF0aW9uIHdpbGwgY2F1c2VcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jOjExMzogKiBkZXZpY2UgcHJvYmUgZmFpbHVyZSBvbiBhbGwgY3VycmVudCBwbGF0Zm9ybXMsIGJ1dCBtYXkgYmUgYWxsb3dlZCBvblxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtMTE0LSAqIGlncHUgcGxhdGZvcm1zIGluIHRoZSBmdXR1cmUqKjo6XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtMTE4LSAqIERpc2FibGUgYWxsIEdUcy4gIE9ubHkgb3RoZXIgR1BVIElQIChzdWNoIGFzIGRpc3BsYXkpIGlzIHBvdGVudGlhbGx5IHVzYWJsZS5cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jOjExOTogKiAqKlRoaXMgY29uZmlndXJhdGlvbiB3aWxsIGNhdXNlIGRldmljZSBwcm9iZSBmYWlsdXJlIG9uIGFsbCBjdXJyZW50XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy0xMjAtICogcGxhdGZvcm1zLCBidXQgbWF5IGJlIGFsbG93ZWQgb24gaWdwdSBwbGF0Zm9ybXMgaW4gdGhlIGZ1dHVyZSoqOjpcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy0xNDMtICogVGhlIHJlcXVlc3RlZCBjb25maWd1cmF0aW9uIG1heSBub3QgYmUgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBhbmQgZHJpdmVyXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYzoxNDQ6ICogbWF5IGZhaWwgdG8gcHJvYmUuIEZvciBleGFtcGxlOiBpZiBhdCBsZWFzdCBvbmUgY29weSBlbmdpbmUgaXMgZXhwZWN0ZWQgdG8gYmVcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jLTE0NS0gKiBhdmFpbGFibGUgZm9yIG1pZ3JhdGlvbnMsIGJ1dCBpdCYjMzk7cyBkaXNhYmxlZC4gVGhpcyBpcyBpbnRlbmRlZCBmb3IgZGVidWdnaW5nXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM9MTI3OT1ib29sIHhlX2NvbmZpZ2ZzX2dldF9lbmFibGVfbXVsdGlfcXVldWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtMTI5Ni0gKiBAY2xhc3M6IGh3IGVuZ2luZSBjbGFzc1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM6MTI5NzogKiBAY3M6IHBvaW50ZXIgdG8gdGhlIGJiIHRvIHVzZSAtIG9ubHkgdmFsaWQgZHVyaW5nIHByb2JlXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy0xMjk4LSAqXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM9MTMwMT11MzIgeGVfY29uZmlnZnNfZ2V0X2N0eF9yZXN0b3JlX21pZF9iYihzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy0xMzIzLSAqIEBjbGFzczogaHcgZW5naW5lIGNsYXNzXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYzoxMzI0OiAqIEBjczogcG9pbnRlciB0byB0aGUgYmIgdG8gdXNlIC0gb25seSB2YWxpZCBkdXJpbmcgcHJvYmVcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jLTEzMjUtICpcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM9NDg3PXN0cnVjdCB4ZV9kZXZpY2UgKnhlX2RldmljZV9jcmVhdGUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTUxNS19XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6NTE2OkFMTE9XX0VSUk9SX0lOSkVDVElPTih4ZV9kZXZpY2VfY3JlYXRlLCBFUlJOTyk7IC8qIFNlZSB4ZV9wY2lfcHJvYmUoKSAqL1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTUxNy1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM9NzM1PXN0YXRpYyB2b2lkIHZmX3VwZGF0ZV9kZXZpY2VfaW5mbyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtNzM4LVx0LyogZGlzYWJsZSBmZWF0dXJlcyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlL2FwcGxpY2FibGUgdG8gVkZzICovXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6NzM5Olx0eGUtXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5ID0gMDtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03NDAtXHR4ZS1cdTAwM2VpbmZvLmhhc19oZWNpX2NzY2ZpID0gMDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM9NzQ5PXN0YXRpYyBpbnQgeGVfZGV2aWNlX3ZyYW1fYWxsb2Moc3RydWN0IHhlX2RldmljZSAqeGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTc2NC0vKipcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo3NjU6ICogeGVfZGV2aWNlX3Byb2JlX2Vhcmx5OiBEZXZpY2UgZWFybHkgcHJvYmVcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03NjYtICogQHhlOiB4ZSBkZXZpY2UgaW5zdGFuY2Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtNzczLSAqL1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jOjc3NDppbnQgeGVfZGV2aWNlX3Byb2JlX2Vhcmx5KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTc3NS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTc4MC1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo3ODE6XHRlcnIgPSB4ZV9tbWlvX3Byb2JlX2Vhcmx5KHhlKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03ODItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03ODQtXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6Nzg1Olx0eGVfc3Jpb3ZfcHJvYmVfZWFybHkoeGUpO1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTc4Ni1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtNzk5LVx0ICovXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6ODAwOlx0ZXJyID0geGVfcGNvZGVfcHJvYmVfZWFybHkoeGUpO1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTgwMS1cdGlmIChlcnIgfHwgeGVfc3Vydml2YWJpbGl0eV9tb2RlX2lzX3JlcXVlc3RlZCh4ZSkpIHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtODMzLX1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo4MzQ6QUxMT1dfRVJST1JfSU5KRUNUSU9OKHhlX2RldmljZV9wcm9iZV9lYXJseSwgRVJSTk8pOyAvKiBTZWUgeGVfcGNpX3Byb2JlKCkgKi9cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy04MzUtXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6ODM2OnN0YXRpYyBpbnQgcHJvYmVfaGFzX2ZsYXRfY2NzKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTgzNy17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTg2OS0gKiBUaGUgZ2VuZXJhbCBwb2xpY3kgaXMgdGhhdCB3ZSYjMzk7bGwgcmVtb3ZlIGFueSB3b3JrYXJvdW5kcyB0aGF0IG9ubHkgYXBwbHkgdG9cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo4NzA6ICogcHJlLXByb2R1Y3Rpb24gaGFyZHdhcmUgYXJvdW5kIHRoZSB0aW1lIGZvcmNlX3Byb2JlIHJlc3RyaWN0aW9ucyBhcmUgbGlmdGVkXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtODcxLSAqIGZvciBhIHBsYXRmb3JtIG9mIHRoZSBuZXh0IG1ham9yIElQIGdlbmVyYXRpb24gKGZvciBleGFtcGxlLCBYZTIgcHJlLXByb2RcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy04NzItICogd29ya2Fyb3VuZHMgc2hvdWxkIGJlIHJlbW92ZWQgYXJvdW5kIHRoZSB0aW1lIHRoZSBmaXJzdCBYZTMgcGxhdGZvcm1zIGhhdmVcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo4NzM6ICogZm9yY2VfcHJvYmUgbGlmdGVkKS5cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy04NzQtICovXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jPTkxOD1zdGF0aWMgdm9pZCB4ZV9kZXZpY2Vfd2VkZ2VkX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy05MjUtXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6OTI2OmludCB4ZV9kZXZpY2VfcHJvYmUoc3RydWN0IHhlX2RldmljZSAqeGUpXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtOTI3LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtOTQ0LVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jOjk0NTpcdGVyciA9IHhlX21taW9fcHJvYmVfdGlsZXMoeGUpO1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTk0Ni1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTk3Ni1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo5Nzc6XHRlcnIgPSBwcm9iZV9oYXNfZmxhdF9jY3MoeGUpO1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTk3OC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTk4MC1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo5ODE6XHRlcnIgPSB4ZV92cmFtX3Byb2JlKHhlKTtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy05ODItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy0xMTAxLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jOjExMDI6XHRlcnIgPSB4ZV9pMmNfcHJvYmUoeGUpO1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTExMDMtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYz0xMzk2PXZvaWQgeGVfZGV2aWNlX3NldF93ZWRnZWRfbWV0aG9kKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLCB1bnNpZ25lZCBsb25nIG1ldGhvZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtMTQwNy0gKiB4ZV9kZXZpY2Vfc2V0X3dlZGdlZF9tZXRob2QgYmVmb3JlIGRlY2xhcmluZyB0aGUgZGV2aWNlIGFzIHdlZGdlZC4gSWYgbm8gbWV0aG9kXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6MTQwODogKiBpcyBzZXQsIHJlcHJvYmUgKHVuYmluZC9yZS1iaW5kKSB3aWxsIGJlIHNlbnQgYnkgZGVmYXVsdC5cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy0xNDA5LSAqXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5oPTQ3PWludCB4ZV9kZXZpY2VfaW5pdF9lYXJseShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmg6NDg6aW50IHhlX2RldmljZV9wcm9iZV9lYXJseShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmg6NDk6aW50IHhlX2RldmljZV9wcm9iZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmgtNTAtdm9pZCB4ZV9kZXZpY2VfcmVtb3ZlKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmg9OTA9c3RydWN0IHhlX2RldmljZSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZV90eXBlcy5oLTIxMS1cdFx0LyoqXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmg6MjEyOlx0XHQgKiBAaW5mby5wcm9iZV9kaXNwbGF5OiBQcm9iZSBkaXNwbGF5IGhhcmR3YXJlLiAgSWYgc2V0IHRvXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmgtMjEzLVx0XHQgKiBmYWxzZSwgdGhlIGRyaXZlciB3aWxsIGJlaGF2ZSBhcyBpZiB0aGVyZSBpcyBubyBkaXNwbGF5XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZV90eXBlcy5oLTIxOC1cdFx0ICovXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmg6MjE5Olx0XHR1OCBwcm9iZV9kaXNwbGF5OjE7XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmgtMjIwLVx0XHQvKiogQGluZm8uc2tpcF9ndWNfcGM6IFNraXAgR3VDIGJhc2VkIFBNIGZlYXR1cmUgaW5pdCAqL1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmM9MTU2PXN0YXRpYyB1NjQgeGVscGdfZ2d0dF9wdGVfZmxhZ3Moc3RydWN0IHhlX2JvICpibywgdTE2IHBhdF9pbmRleClcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ2d0dC5jLTE3My1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmM6MTc0OnN0YXRpYyB1bnNpZ25lZCBpbnQgcHJvYmVfZ3NtX3NpemUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ2d0dC5jLTE3NS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2dndHQuYz0zOTE9aW50IHhlX2dndHRfaW5pdF9lYXJseShzdHJ1Y3QgeGVfZ2d0dCAqZ2d0dClcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ2d0dC5jLTQwMi1cdFx0ZWxzZVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2dndHQuYzo0MDM6XHRcdFx0Z3NtX3NpemUgPSBwcm9iZV9nc21fc2l6ZShwZGV2KTtcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmMtNDA0LVx0XHRpZiAoZ3NtX3NpemUgPT0gMCkge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmMtNDQ5LX1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmM6NDUwOkFMTE9XX0VSUk9SX0lOSkVDVElPTih4ZV9nZ3R0X2luaXRfZWFybHksIEVSUk5PKTsgLyogU2VlIHhlX3BjaV9wcm9iZSgpICovXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ2d0dC5jLTQ1MS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3QuYz00NTc9c3RhdGljIHZvaWQgd2FfMTQwMjY1MzkyNzcoc3RydWN0IHhlX2d0ICpndClcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3QuYy00NjQtXHQgKiBydWxlcyBmb3IgV2FfMTQwMjY1MzkyNzcgZHVlIHRvIHhlX3dhX3Byb2Nlc3NfZGV2aWNlX29vYigpIGJlaW5nXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3QuYzo0NjU6XHQgKiBjYWxsZWQgYmVmb3JlIHhlX3NyaW92X3Byb2JlX2Vhcmx5KCk7IGFuZCB3ZSBjYW4mIzM5O3QgbW92ZSB0aGUgY2FsbCB0b1xuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0LmMtNDY2LVx0ICogdGhlIGZvcm1lciB0byBoYXBwZW4gYWZ0ZXIgdGhlIGxhdHRlciBiZWNhdXNlIE1NSU8gcmVhZCBmdW5jdGlvbnNcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfbWNyLmM9NDk5PXZvaWQgeGVfZ3RfbWNyX2luaXRfZWFybHkoc3RydWN0IHhlX2d0ICpndClcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfbWNyLmMtNTU0LVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X21jci5jOjU1NTpcdC8qIE1hcmsgaW5zdGFuY2UgMCBhcyBpbml0aWFsaXplZCwgd2UgbmVlZCB0aGlzIGVhcmx5IGZvciBWUkFNIGFuZCBDQ1MgcHJvYmUuICovXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfbWNyLmMtNTU2LVx0Z3QtXHUwMDNlc3RlZXJpbmdbSU5TVEFOQ0UwXS5pbml0aWFsaXplZCA9IHRydWU7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3NyaW92X3ZmLmM9MTU2NT1zdGF0aWMgYm9vbCB2Zl92YWxpZF9nZ3R0KHN0cnVjdCB4ZV9ndCAqZ3QpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3NyaW92X3ZmLmMtMTU4My0gKiBSZXR1cm46IG51bWJlciBvZiB0aW1lcyBWRiBmaXh1cHMgd2VyZSBjb21wbGV0ZWQgc2luY2UgZHJpdmVyXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3Rfc3Jpb3ZfdmYuYzoxNTg0OiAqIHByb2JlLCBvciAwIGlmIG1pZ3JhdGlvbiBpcyBub3QgYXZhaWxhYmxlLCBvciAtMSBpZiBmaXh1cHMgYXJlXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3Rfc3Jpb3ZfdmYuYy0xNTg1LSAqIHBlbmRpbmcgb3IgYmVpbmcgYXBwbGllZCByaWdodCBub3cuXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3NyaW92X3ZmLmM9MTU4Nz1pbnQgeGVfdmZfbWlncmF0aW9uX2ZpeHVwc19jb21wbGV0ZV9jb3VudChzdHJ1Y3QgeGVfZ3QgKmd0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9zcmlvdl92Zi5jLTE2MDQtICogUmV0dXJuOiBudW1iZXIgb2YgdGltZXMgVkYgZml4dXBzIHdlcmUgY29tcGxldGVkIHNpbmNlIGRyaXZlclxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3NyaW92X3ZmLmM6MTYwNTogKiBwcm9iZSwgb3IgMCBpZiBtaWdyYXRpb24gaXMgbm90IGF2YWlsYWJsZS5cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9zcmlvdl92Zi5jLTE2MDYtICovXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19hZHMuYz00NDI9aW50IHhlX2d1Y19hZHNfaW5pdChzdHJ1Y3QgeGVfZ3VjX2FkcyAqYWRzKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfYWRzLmMtNDY1LX1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfYWRzLmM6NDY2OkFMTE9XX0VSUk9SX0lOSkVDVElPTih4ZV9ndWNfYWRzX2luaXQsIEVSUk5PKTsgLyogU2VlIHhlX3BjaV9wcm9iZSgpICovXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2Fkcy5jLTQ2Ny1cbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2N0LmM9MzIyPWludCB4ZV9ndWNfY3RfaW5pdF9ub2FsbG9jKHN0cnVjdCB4ZV9ndWNfY3QgKmN0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY3QuYy0zNTctfVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jOjM1ODpBTExPV19FUlJPUl9JTkpFQ1RJT04oeGVfZ3VjX2N0X2luaXRfbm9hbGxvYywgRVJSTk8pOyAvKiBTZWUgeGVfcGNpX3Byb2JlKCkgKi9cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY3QuYy0zNTktXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jPTM2OD1pbnQgeGVfZ3VjX2N0X2luaXQoc3RydWN0IHhlX2d1Y19jdCAqY3QpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jLTM5Ni19XG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2N0LmM6Mzk3OkFMTE9XX0VSUk9SX0lOSkVDVElPTih4ZV9ndWNfY3RfaW5pdCwgRVJSTk8pOyAvKiBTZWUgeGVfcGNpX3Byb2JlKCkgKi9cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY3QuYy0zOTgtXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19sb2cuYz02MjQ9aW50IHhlX2d1Y19sb2dfaW5pdChzdHJ1Y3QgeGVfZ3VjX2xvZyAqbG9nKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfbG9nLmMtNjQ0LVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19sb2cuYzo2NDU6QUxMT1dfRVJST1JfSU5KRUNUSU9OKHhlX2d1Y19sb2dfaW5pdCwgRVJSTk8pOyAvKiBTZWUgeGVfcGNpX3Byb2JlKCkgKi9cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfbG9nLmMtNjQ2LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfcmVsYXkuYz0zNDI9aW50IHhlX2d1Y19yZWxheV9pbml0KHN0cnVjdCB4ZV9ndWNfcmVsYXkgKnJlbGF5KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfcmVsYXkuYy0zNzAtfVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19yZWxheS5jOjM3MTpBTExPV19FUlJPUl9JTkpFQ1RJT04oeGVfZ3VjX3JlbGF5X2luaXQsIEVSUk5PKTsgLyogU2VlIHhlX3BjaV9wcm9iZSgpICovXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3JlbGF5LmMtMzcyLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9od19lbmdpbmVfY2xhc3Nfc3lzZnMuYz01Nzk9c3RhdGljIGludCB4ZV9hZGRfaHdfZW5naW5lX2NsYXNzX2RlZmF1bHRzKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9od19lbmdpbmVfY2xhc3Nfc3lzZnMuYy02MDMtfVxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2h3X2VuZ2luZV9jbGFzc19zeXNmcy5jOjYwNDpBTExPV19FUlJPUl9JTkpFQ1RJT04oeGVfYWRkX2h3X2VuZ2luZV9jbGFzc19kZWZhdWx0cywgRVJSTk8pOyAvKiBTZWUgeGVfcGNpX3Byb2JlKCkgKi9cbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9od19lbmdpbmVfY2xhc3Nfc3lzZnMuYy02MDUtXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEyOTEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxNDA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZTogVW5yZWFjaGFibGUgQ29kZSBQYXRocyBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKgoKT2theSwgc28gaGVyZSYjMzk7cyB0aGUgZGVhbC4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCB3YXMgYWJvdXQgaG93IGl0IGFmZmVjdHMgYHhlX3BjaS5jYCwgYnV0IHRoZW4gSSByZWFsaXplZCB0aGlzIGlzIGFib3V0IEtVbml0IHRlc3Rpbmcgd2hpY2ggaXNuJiMzOTt0IFN5emthbGxlciYjMzk7cyB0eXBpY2FsIGZvY3VzLiBTeXprYWxsZXIgaXMgYWxsIGFib3V0IGZ1enppbmcgc3lzY2FsbHMuCgpNeSBtaW5kIHRoZW4gd2VudCB0byBgZHJtX2dwdXN2bS5jYCwgd2hpY2ggaXMgYSBnZW5lcmljIERSTSBHUFUgU1ZNIGxpYnJhcnkgdGhhdCYjMzk7cyBzZWxlY3RlZCBieSBgRFJNX1hFYCwgYW5kIHRoYXQmIzM5O3Mgd2hlbiBpdCBjbGlja2VkLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGhvdyBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgIGlzIHVzZWQsIGFuZCBpdCYjMzk7cyB1c2VkIGluIGBkcm1fZ3B1c3ZtLmNgLCBhbmQgYWxzbyBpbiBgbm91dmVhdV9zdm0uY2AgYW5kIGBhaWUyX2N0eC5jYC4gVGhlc2UgZHJpdmVycyBzb3VuZCBsaWtlIHRoZXkgYXJlIGRlcGVuZGVudCBvbiBzcGVjaWZpYyBoYXJkd2FyZTsgSW50ZWwgWGUsIE52aWRpYSwgYW5kIEFNRCBYRE5BIHJlc3BlY3RpdmVseS4KCk15IGluc3RydWN0aW9ucyBzYXkgSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjaGFuZ2VzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IGFyZSB0aGVzZSBkcml2ZXJzIHJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgVk0/IFRoZSBzaG9ydCBhbnN3ZXI6IE5vLgoKUUVNVSBjYW4gZW11bGF0ZSBzb21lIFBDSSBkZXZpY2VzLCBidXQgbm90IHRoZXNlIG1vZGVybiBHUFVzLiBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhIGRpcmVjdCB3YXkgdG8gaW5qZWN0IFBDSSBkZXZpY2VzLiBFdmVuIHRoZSBgdmttc2AgdmlydHVhbCBLTVMgZHJpdmVyIHRoYXQmIzM5O3MgaW4gU3l6a2FsbGVyLCBkb2VzbiYjMzk7dCB1dGlsaXplIGFueSBvZiB0aGUgc3BlY2lmaWMgU1ZNIGNvZGUuIFRoZXJlJiMzOTtzIG5vIHdheSB0byB0cmlnZ2VyIGBkcm1fZ3B1c3ZtLmNgIG9yIHRoZSBvdGhlciBmaWxlcyB3aXRob3V0IHRoZSBjb3JyZXNwb25kaW5nIGhhcmR3YXJlLgoKSSB3ZW50IGJhY2sgYW5kIGNoZWNrZWQgaWYgYHhlYCBoYWQgYSBgZm9yY2VfcHJvYmVgIG1vZHVsZSBwYXJhbWV0ZXIsIGJ1dCB0aGF0IHN0aWxsIHJlcXVpcmVzIGEgUENJIGRldmljZSB0byBiZSAqcHJlc2VudCosIGV2ZW4gaWYgaXQgb3ZlcnJpZGVzIGEgc3VwcG9ydCBjaGVjay4gU28gdGhlIGNvZGUgcGF0aCB3b3VsZCBzdGlsbCBmYWlsIGluIHByb2JlLiBObyBwcm9iZSwgbm8gY2FsbHMuCgpJIHJlLXJlYWQgdGhlICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgY3JpdGVyaWEuIEl0IGV4cGxpY2l0bHkgbWVudGlvbnM6ICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuIFRoaXMgaXMgYSBwZXJmZWN0IG1hdGNoLiBUaGVzZSBkcml2ZXJzICpyZXF1aXJlKiBwaHlzaWNhbCBoYXJkd2FyZS4gVGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSBpbiBRRU1VLiBUaGUgZHJpdmVycyB3aWxsIGp1c3QgZmFpbCBkdXJpbmcgcHJvYmUoKS4gVGhlIGNvZGUgaXMgc2ltcGx5IHVucmVhY2hhYmxlLgoKSSBsb29rZWQgaW50byBgbm91dmVhdWAsIGBhbWR4ZG5hYCwgYW5kIGB4ZWAgdG8gZG91YmxlLWNoZWNrIHRoZWlyIHNvZnR3YXJlIGVtdWxhdGlvbiBzdXBwb3J0IGFuZCwgYXMgSSBzdXNwZWN0ZWQsIG5vbmUgb2YgdGhlbSBoYXZlIGFueS4gSSBldmVuIGNoZWNrZWQgU3l6a2FsbGVyIGZvciBQQ0kgaW5qZWN0aW9uLCBhbmQgdGhlcmUmIzM5O3Mgbm90aGluZywgbm8gYHN5el9wY2lfZGV2aWNlX2FkZGAgb3IgYW55dGhpbmcgbGlrZSB0aGF0LiBFdmVuIGlmIHRoZXJlIHdlcmUsIHRoZSBkcml2ZXJzIHdvdWxkIHN0aWxsIG5lZWQgdG8gZW11bGF0ZSB0aGUgc3BlY2lmaWMgQkFScyBhbmQgcmVnaXN0ZXJzLCB3aGljaCB0aGV5IGRvbiYjMzk7dCwgYW5kIHNvIHRoZSBwcm9iZSB3b3VsZCBqdXN0IGZhaWwuCgpJIHRoaW5rIEkmIzM5O3ZlIGNvdmVyZWQgYWxsIHRoZSBiYXNlcy4gVGhpcyBwYXRjaCBtb2RpZmllcyBjb2RlIHRoYXQgaXMgaW5oZXJlbnRseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgSSYjMzk7bSBjb25maWRlbnQgaW4gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgY29kZSBpcyBuZXZlciBnb2luZyB0byBiZSBleGVjdXRlZCBieSBzeXprYWxsZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBEUk1fR1BVU1ZNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnPTI9Y29uZmlnIERSTV9YRVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTQxLVx0c2VsZWN0IERSTV9FWEVDXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzo0MjpcdHNlbGVjdCBEUk1fR1BVU1ZNIGlmICFVTUxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTQzLVx0c2VsZWN0IERSTV9HUFVWTVxuLS1cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnPTc5PWNvbmZpZyBEUk1fWEVfR1BVU1ZNXG4tLVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctODUtXHRzZWxlY3QgREVWSUNFX1BSSVZBVEVcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjg2Olx0c2VsZWN0IERSTV9HUFVTVk1cbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTg3LVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzU0NQoJCQkJCQkJb3V0cHV0OiAxNzQKCQkJCQkJCXRob3VnaHRzOiAyNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBWaWFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0cyBwb3RlbnRpYWwgZm9yIGZ1enppbmcuIEl0IGxvb2tzIGxpa2UgdGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBhcmUgZXhjbHVzaXZlbHkgd2l0aGluIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnM6IHRoZSBBTUQgWEROQSBkcml2ZXIgKGBhaWUyX2N0eC5jYCksIHRoZSBJbnRlbCBYZSBkcml2ZXIgKGBkcm1fZ3B1c3ZtLmNgLCBzcGVjaWZpY2FsbHkgdGllZCB0byB0aGUgYERSTV9YRWAgY29uZmlnIG9wdGlvbiksIGFuZCB0aGUgTnZpZGlhIE5vdXZlYXUgZHJpdmVyIChgbm91dmVhdV9zdm0uY2ApLgoKQSBrZXkgb2JzZXJ2YXRpb24gaGVyZSBpcyB0aGF0ICpvbmx5KiB0aGUgYERSTV9YRWAgY29uZmlnIG9wdGlvbiBzZWxlY3RzIGBkcm1fZ3B1c3ZtYC4gSSBtYWRlIHN1cmUgdG8gY2hlY2sgdGhlIGNvZGUgdG8gc2VlIGlmIHRoZXJlIHdhcyBhbnkgY2hhbmNlIG9mIGBkcm1fZ3B1c3ZtYCBiZWluZyBzZWxlY3RlZCBieSBhbm90aGVyIGRyaXZlci4KCk5vdywgY29uc2lkZXJpbmcgdGhlc2UgZHJpdmVycyBhbmQgdGhlaXIgcmVzcGVjdGl2ZSBsb2NhdGlvbnMsIEkmIzM5O20gcHJldHR5IGNlcnRhaW4gdGhhdCB0aGUgZnV6emluZyBlZmZvcnRzIHdvdWxkbiYjMzk7dCBiZSBwcm9kdWN0aXZlLiBUaGVzZSBtb2R1bGVzIHJlcXVpcmUgcGh5c2ljYWwgUENJIGhhcmR3YXJlIChOUFVzIG9yIEdQVXMpIHRvIHByb2JlIGNvcnJlY3RseSBhbmQgZXN0YWJsaXNoIGRldmljZSBub2Rlcy4gUUVNVSBhbmQgR0NFLCB3aGlsZSBleGNlbGxlbnQgZm9yIG1hbnkgcHVycG9zZXMsIGRvbiYjMzk7dCBlbXVsYXRlIHRoaXMgdHlwZSBvZiBoYXJkd2FyZSB0byB0aGUgbGV2ZWwgbmVlZGVkIGZvciB0aGVzZSBkcml2ZXJzIHRvIGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBzaW1wbHkgaW5hY2Nlc3NpYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpHaXZlbiB0aGF0LCBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIHBhdGNoIHRvdWNoZXMgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyB0aGF0IGRlcGVuZCBvbiB1bmF2YWlsYWJsZSBvciB1bi1lbXVsYXRlZCBQQ0kgZGV2aWNlcywgcmVuZGVyaW5nIHRoZXNlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuCgpUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDY6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdXNhZ2Ugb2YgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgaW4gdGhyZWUgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyczogQU1EIFhETkEgKGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jKSwgSW50ZWwgWGUgKGRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMsIHNlbGVjdGVkIG9ubHkgYnkgRFJNX1hFKSwgYW5kIE52aWRpYSBOb3V2ZWF1IChkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jKS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSAoTlBVcy9HUFVzKSB0byBzdWNjZXNzZnVsbHkgcHJvYmUgYW5kIGNyZWF0ZSBkZXZpY2Ugbm9kZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdXNhZ2Ugb2YgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgaW4gdGhyZWUgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyczogQU1EIFhETkEgKGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jKSwgSW50ZWwgWGUgKGRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMsIHNlbGVjdGVkIG9ubHkgYnkgRFJNX1hFKSwgYW5kIE52aWRpYSBOb3V2ZWF1IChkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jKS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSAoTlBVcy9HUFVzKSB0byBzdWNjZXNzZnVsbHkgcHJvYmUgYW5kIGNyZWF0ZSBkZXZpY2Ugbm9kZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTc6MTUuMjkxOTExMDk2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5ODIxNDE1ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdXNhZ2Ugb2YgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgaW4gdGhyZWUgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyczogQU1EIFhETkEgKGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jKSwgSW50ZWwgWGUgKGRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMsIHNlbGVjdGVkIG9ubHkgYnkgRFJNX1hFKSwgYW5kIE52aWRpYSBOb3V2ZWF1IChkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jKS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSAoTlBVcy9HUFVzKSB0byBzdWNjZXNzZnVsbHkgcHJvYmUgYW5kIGNyZWF0ZSBkZXZpY2Ugbm9kZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1NzoxNS4yOTE5MjYzODZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMjU0Mjk5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY2MzFhZjBhNDNjMWMyNTNlZGQzMjEzZjBmNTM5YmJlYjMyYmM3OGZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMDY6NTc6MTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0IGIvRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0XFxuaW5kZXggNWM4OGQyY2YwODE4MzMuLmZjMWI4ZGMxOTgyNTBlIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdFxcbisrKyBiL0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdFxcbkBAIC0yMDYsNyArMjA2LDcgQEAgVGhlIHVzYWdlIHBhdHRlcm4gaXM6OlxcbiAgICAgICAgICAgZ290byBvdXRfcHV0O1xcbiBcXG4gICAgICAgdGFrZV9sb2NrKGRyaXZlci1cXHUwMDNldXBkYXRlKTtcXG4tICAgICAgaWYgKG1tdV9pbnRlcnZhbF9yZWFkX3JldHJ5KFxcdTAwMjZpbnRlcnZhbF9zdWIsIHJhbmdlLm5vdGlmaWVyX3NlcSkpIHtcXG4rICAgICAgaWYgKG1tdV9pbnRlcnZhbF9yZWFkX3JldHJ5KHJhbmdlLm5vdGlmaWVyLCByYW5nZS5ub3RpZmllcl9zZXEpKSB7XFxuICAgICAgICAgICByZWxlYXNlX2xvY2soZHJpdmVyLVxcdTAwM2V1cGRhdGUpO1xcbiAgICAgICAgICAgZ290byBhZ2FpbjtcXG4gICAgICAgfVxcbkBAIC0yMjUsNyArMjI1LDggQEAgVGhlIHVzYWdlIHBhdHRlcm4gaXM6OlxcbiBUaGUgZHJpdmVyLVxcdTAwM2V1cGRhdGUgbG9jayBpcyB0aGUgc2FtZSBsb2NrIHRoYXQgdGhlIGRyaXZlciB0YWtlcyBpbnNpZGUgaXRzXFxuIGludmFsaWRhdGUoKSBjYWxsYmFjay4gVGhhdCBsb2NrIG11c3QgYmUgaGVsZCBiZWZvcmUgY2FsbGluZ1xcbiBtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeSgpIHRvIGF2b2lkIGFueSByYWNlIHdpdGggYSBjb25jdXJyZW50IENQVSBwYWdlIHRhYmxlXFxuLXVwZGF0ZS5cXG4rdXBkYXRlLiBUaGUgcmV0cnkgY2hlY2sgbXVzdCB1c2UgdGhlIHNhbWUgbm90aWZpZXIgYW5kIHNlcXVlbmNlIG51bWJlciBzdG9yZWRcXG4raW4gYGByYW5nZWBgIGJ5IGBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoKWBgLlxcbiBcXG4gSG9sZGluZyB0aGUgbW1hcCBsb2NrIGFjcm9zcyBITU0gZmF1bHRzXFxuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9jdHguYyBiL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jXFxuaW5kZXggNTQ4YmE0MzE1NTU0ZmYuLjIxZjI4MTc3NTFmOWU3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jXFxuKysrIGIvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmNcXG5AQCAtMTAzNyw3ICsxMDM3LDcgQEAgc3RhdGljIGludCBhaWUyX3BvcHVsYXRlX3JhbmdlKHN0cnVjdCBhbWR4ZG5hX2dlbV9vYmogKmFibylcXG4gXFx0Ym9vbCBmb3VuZDtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdHRpbWVvdXQgPSBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcXG4rXFx0dGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XFxuIGFnYWluOlxcbiBcXHRmb3VuZCA9IGZhbHNlO1xcbiBcXHRkb3duX3dyaXRlKFxcdTAwMjZ4ZG5hLVxcdTAwM2Vub3RpZmllcl9sb2NrKTtcXG5AQCAtMTA2MiwxMyArMTA2Miw5IEBAIHN0YXRpYyBpbnQgYWllMl9wb3B1bGF0ZV9yYW5nZShzdHJ1Y3QgYW1keGRuYV9nZW1fb2JqICphYm8pXFxuIFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbiBcXHR9XFxuIFxcbi1cXHRyZXQgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcXHUwMDI2bWFwcC1cXHUwMDNlcmFuZ2UsXFxuLVxcdFxcdFxcdG1heF90KGxvbmcsIHRpbWVvdXQgLSBqaWZmaWVzLCAxKSk7XFxuLVxcdGlmIChyZXQpIHtcXG4tXFx0XFx0aWYgKHJldCA9PSAtRUJVU1kpXFxuLVxcdFxcdFxcdHJldCA9IC1FVElNRTtcXG4rXFx0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXFx1MDAyNm1hcHAtXFx1MDAzZXJhbmdlLCB0aW1lb3V0KTtcXG4rXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBwdXRfbW07XFxuLVxcdH1cXG4gXFxuIFxcdGRvd25fd3JpdGUoXFx1MDAyNnhkbmEtXFx1MDAzZW5vdGlmaWVyX2xvY2spO1xcbiBcXHRpZiAobW11X2ludGVydmFsX3JlYWRfcmV0cnkoXFx1MDAyNm1hcHAtXFx1MDAzZW5vdGlmaWVyLCBtYXBwLVxcdTAwM2VyYW5nZS5ub3RpZmllcl9zZXEpKSB7XFxuQEAgLTEwODYsNyArMTA4Miw3IEBAIHN0YXRpYyBpbnQgYWllMl9wb3B1bGF0ZV9yYW5nZShzdHJ1Y3QgYW1keGRuYV9nZW1fb2JqICphYm8pXFxuIHB1dF9tbTpcXG4gXFx0YW1keGRuYV91bWFwX3B1dChtYXBwKTtcXG4gXFx0bW1wdXQobW0pO1xcbi1cXHRyZXR1cm4gcmV0O1xcbitcXHRyZXR1cm4gcmV0ID09IC1FQlVTWSA/IC1FVElNRSA6IHJldDtcXG4gfVxcbiBcXG4gaW50IGFpZTJfY21kX3N1Ym1pdChzdHJ1Y3QgYW1keGRuYV9od2N0eCAqaHdjdHgsIHN0cnVjdCBhbWR4ZG5hX3NjaGVkX2pvYiAqam9iLCB1NjQgKnNlcSlcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNcXG5pbmRleCBiOGYyZGQ5OTgyZjUzYy4uNzZlOGEwMDI4YzdmYzkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNcXG5AQCAtODUyLDggKzg1Miw3IEBAIGVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBkcm1fZ3B1c3ZtX3NjYW5fbW0oc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlLFxcbiBcXHRcXHQuZW5kID0gZW5kLFxcbiBcXHRcXHQuZGV2X3ByaXZhdGVfb3duZXIgPSBkZXZfcHJpdmF0ZV9vd25lcixcXG4gXFx0fTtcXG4tXFx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID1cXG4tXFx0XFx0amlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XFxuK1xcdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XFxuIFxcdGVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBzdGF0ZSA9IERSTV9HUFVTVk1fU0NBTl9VTlBPUFVMQVRFRCwgbmV3X3N0YXRlO1xcbiBcXHR1bnNpZ25lZCBsb25nICpwZm5zO1xcbiBcXHR1bnNpZ25lZCBsb25nIG5wYWdlcyA9IG5wYWdlc19pbl9yYW5nZShzdGFydCwgZW5kKTtcXG5AQCAtODY3LDggKzg2Niw3IEBAIGVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBkcm1fZ3B1c3ZtX3NjYW5fbW0oc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlLFxcbiBcXHRobW1fcmFuZ2UuaG1tX3BmbnMgPSBwZm5zO1xcbiBcXG4gcmV0cnk6XFxuLVxcdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZobW1fcmFuZ2UsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgICBtYXgodGltZW91dCAtIGppZmZpZXMsIDFMKSk7XFxuK1xcdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZobW1fcmFuZ2UsIHRpbWVvdXQpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRnb3RvIGVycl9mcmVlO1xcbiBcXG5AQCAtMTQ1OSw4ICsxNDU3LDcgQEAgaW50IGRybV9ncHVzdm1fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuIFxcdFxcdC5kZXZfcHJpdmF0ZV9vd25lciA9IGN0eC1cXHUwMDNlZGV2aWNlX3ByaXZhdGVfcGFnZV9vd25lcixcXG4gXFx0fTtcXG4gXFx0dm9pZCAqemRkO1xcbi1cXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQgPVxcbi1cXHRcXHRqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcXG4rXFx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcXG4gXFx0dW5zaWduZWQgbG9uZyBpLCBqO1xcbiBcXHR1bnNpZ25lZCBsb25nIG5wYWdlcyA9IG5wYWdlc19pbl9yYW5nZShwYWdlc19zdGFydCwgcGFnZXNfZW5kKTtcXG4gXFx0dW5zaWduZWQgbG9uZyBudW1fZG1hX21hcHBlZDtcXG5AQCAtMTQ3OCw5ICsxNDc1LDYgQEAgaW50IGRybV9ncHVzdm1fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gcmV0cnk6XFxuLVxcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKVxcbi1cXHRcXHRyZXR1cm4gLUVCVVNZO1xcbi1cXG4gXFx0aG1tX3JhbmdlLm5vdGlmaWVyX3NlcSA9IG1tdV9pbnRlcnZhbF9yZWFkX2JlZ2luKG5vdGlmaWVyKTtcXG4gXFx0aWYgKGRybV9ncHVzdm1fcGFnZXNfdmFsaWRfdW5sb2NrZWQoZ3B1c3ZtLCBzdm1fcGFnZXMpKVxcbiBcXHRcXHRnb3RvIHNldF9zZXFubztcXG5AQCAtMTQ5NSw4ICsxNDg5LDcgQEAgaW50IGRybV9ncHVzdm1fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuIFxcdH1cXG4gXFxuIFxcdGhtbV9yYW5nZS5obW1fcGZucyA9IHBmbnM7XFxuLVxcdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZobW1fcmFuZ2UsXFxuLVxcdFxcdFxcdFxcdG1heF90KGxvbmcsIHRpbWVvdXQgLSBqaWZmaWVzLCAxKSk7XFxuK1xcdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZobW1fcmFuZ2UsIHRpbWVvdXQpO1xcbiBcXHRtbXB1dChtbSk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZXJyX2ZyZWU7XFxuQEAgLTE3MTgsOCArMTcxMSw3IEBAIGludCBkcm1fZ3B1c3ZtX3JhbmdlX2V2aWN0KHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuIFxcdFxcdC5lbmQgPSBkcm1fZ3B1c3ZtX3JhbmdlX2VuZChyYW5nZSksXFxuIFxcdFxcdC5kZXZfcHJpdmF0ZV9vd25lciA9IE5VTEwsXFxuIFxcdH07XFxuLVxcdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9XFxuLVxcdFxcdGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xcbitcXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xcbiBcXHR1bnNpZ25lZCBsb25nICpwZm5zO1xcbiBcXHR1bnNpZ25lZCBsb25nIG5wYWdlcyA9IG5wYWdlc19pbl9yYW5nZShkcm1fZ3B1c3ZtX3JhbmdlX3N0YXJ0KHJhbmdlKSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgIGRybV9ncHVzdm1fcmFuZ2VfZW5kKHJhbmdlKSk7XFxuQEAgLTE3MzQsOCArMTcyNiw3IEBAIGludCBkcm1fZ3B1c3ZtX3JhbmdlX2V2aWN0KHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4gXFx0aG1tX3JhbmdlLmhtbV9wZm5zID0gcGZucztcXG4tXFx0ZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXFx1MDAyNmhtbV9yYW5nZSxcXG4tXFx0XFx0XFx0XFx0bWF4X3QobG9uZywgdGltZW91dCAtIGppZmZpZXMsIDEpKTtcXG4rXFx0ZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXFx1MDAyNmhtbV9yYW5nZSwgdGltZW91dCk7XFxuIFxcbiBcXHRrdmZyZWUocGZucyk7XFxuIFxcdG1tcHV0KG1tKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmNcXG5pbmRleCA0Y2ZiNmViN2M3NzE1YS4uYjE0MTVjMmU0OWZjY2YgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmNcXG5AQCAtNjU1LDggKzY1NSw3IEBAIHN0YXRpYyBpbnQgbm91dmVhdV9yYW5nZV9mYXVsdChzdHJ1Y3Qgbm91dmVhdV9zdm1tICpzdm1tLFxcbiBcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBobW1fZmxhZ3MsXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc3ZtX25vdGlmaWVyICpub3RpZmllcilcXG4ge1xcbi1cXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQgPVxcbi1cXHRcXHRqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcXG4rXFx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcXG4gXFx0LyogSGF2ZSBITU0gZmF1bHQgcGFnZXMgd2l0aGluIHRoZSBmYXVsdCB3aW5kb3cgdG8gdGhlIEdQVS4gKi9cXG4gXFx0dW5zaWduZWQgbG9uZyBobW1fcGZuc1sxXTtcXG4gXFx0c3RydWN0IGhtbV9yYW5nZSByYW5nZSA9IHtcXG5AQCAtNjc3LDI1ICs2NzYsMTYgQEAgc3RhdGljIGludCBub3V2ZWF1X3JhbmdlX2ZhdWx0KHN0cnVjdCBub3V2ZWF1X3N2bW0gKnN2bW0sXFxuIFxcdHJhbmdlLnN0YXJ0ID0gbm90aWZpZXItXFx1MDAzZW5vdGlmaWVyLmludGVydmFsX3RyZWUuc3RhcnQ7XFxuIFxcdHJhbmdlLmVuZCA9IG5vdGlmaWVyLVxcdTAwM2Vub3RpZmllci5pbnRlcnZhbF90cmVlLmxhc3QgKyAxO1xcbiBcXG4tXFx0d2hpbGUgKHRydWUpIHtcXG4tXFx0XFx0aWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpIHtcXG4tXFx0XFx0XFx0cmV0ID0gLUVCVVNZO1xcbi1cXHRcXHRcXHRnb3RvIG91dDtcXG4tXFx0XFx0fVxcbi1cXG4tXFx0XFx0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXFx1MDAyNnJhbmdlLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgbWF4KHRpbWVvdXQgLSBqaWZmaWVzLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAxTCkpO1xcbi1cXHRcXHRpZiAocmV0KVxcbi1cXHRcXHRcXHRnb3RvIG91dDtcXG4rYWdhaW46XFxuK1xcdHJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZyYW5nZSwgdGltZW91dCk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbiBcXG4tXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2c3ZtbS1cXHUwMDNlbXV0ZXgpO1xcbi1cXHRcXHRpZiAobW11X2ludGVydmFsX3JlYWRfcmV0cnkocmFuZ2Uubm90aWZpZXIsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICByYW5nZS5ub3RpZmllcl9zZXEpKSB7XFxuLVxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2c3ZtbS1cXHUwMDNlbXV0ZXgpO1xcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0fVxcbi1cXHRcXHRicmVhaztcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2c3ZtbS1cXHUwMDNlbXV0ZXgpO1xcbitcXHRpZiAobW11X2ludGVydmFsX3JlYWRfcmV0cnkocmFuZ2Uubm90aWZpZXIsXFxuK1xcdFxcdFxcdFxcdCAgICByYW5nZS5ub3RpZmllcl9zZXEpKSB7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2c3ZtbS1cXHUwMDNlbXV0ZXgpO1xcbitcXHRcXHRnb3RvIGFnYWluO1xcbiBcXHR9XFxuIFxcbiBcXHRub3V2ZWF1X2htbV9jb252ZXJ0X3Bmbihkcm0sIFxcdTAwMjZyYW5nZSwgYXJncyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjE1LjcyNTAzOTE1M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5Mzg4MjgyNTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdXNhZ2Ugb2YgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgaW4gdGhyZWUgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyczogQU1EIFhETkEgKGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jKSwgSW50ZWwgWGUgKGRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMsIHNlbGVjdGVkIG9ubHkgYnkgRFJNX1hFKSwgYW5kIE52aWRpYSBOb3V2ZWF1IChkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jKS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSAoTlBVcy9HUFVzKSB0byBzdWNjZXNzZnVsbHkgcHJvYmUgYW5kIGNyZWF0ZSBkZXZpY2Ugbm9kZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGY2MzFhZjBhNDNjMWMyNTNlZGQzMjEzZjBmNTM5YmJlYjMyYmM3OGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAwNjo1NzoxNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdCBiL0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdFxuaW5kZXggNWM4OGQyY2YwODE4MzMuLmZjMWI4ZGMxOTgyNTBlIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0XG4rKysgYi9Eb2N1bWVudGF0aW9uL21tL2htbS5yc3RcbkBAIC0yMDYsNyArMjA2LDcgQEAgVGhlIHVzYWdlIHBhdHRlcm4gaXM6OlxuICAgICAgICAgICBnb3RvIG91dF9wdXQ7XG4gXG4gICAgICAgdGFrZV9sb2NrKGRyaXZlci1cdTAwM2V1cGRhdGUpO1xuLSAgICAgIGlmIChtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeShcdTAwMjZpbnRlcnZhbF9zdWIsIHJhbmdlLm5vdGlmaWVyX3NlcSkpIHtcbisgICAgICBpZiAobW11X2ludGVydmFsX3JlYWRfcmV0cnkocmFuZ2Uubm90aWZpZXIsIHJhbmdlLm5vdGlmaWVyX3NlcSkpIHtcbiAgICAgICAgICAgcmVsZWFzZV9sb2NrKGRyaXZlci1cdTAwM2V1cGRhdGUpO1xuICAgICAgICAgICBnb3RvIGFnYWluO1xuICAgICAgIH1cbkBAIC0yMjUsNyArMjI1LDggQEAgVGhlIHVzYWdlIHBhdHRlcm4gaXM6OlxuIFRoZSBkcml2ZXItXHUwMDNldXBkYXRlIGxvY2sgaXMgdGhlIHNhbWUgbG9jayB0aGF0IHRoZSBkcml2ZXIgdGFrZXMgaW5zaWRlIGl0c1xuIGludmFsaWRhdGUoKSBjYWxsYmFjay4gVGhhdCBsb2NrIG11c3QgYmUgaGVsZCBiZWZvcmUgY2FsbGluZ1xuIG1tdV9pbnRlcnZhbF9yZWFkX3JldHJ5KCkgdG8gYXZvaWQgYW55IHJhY2Ugd2l0aCBhIGNvbmN1cnJlbnQgQ1BVIHBhZ2UgdGFibGVcbi11cGRhdGUuXG4rdXBkYXRlLiBUaGUgcmV0cnkgY2hlY2sgbXVzdCB1c2UgdGhlIHNhbWUgbm90aWZpZXIgYW5kIHNlcXVlbmNlIG51bWJlciBzdG9yZWRcbitpbiBgYHJhbmdlYGAgYnkgYGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgpYGAuXG4gXG4gSG9sZGluZyB0aGUgbW1hcCBsb2NrIGFjcm9zcyBITU0gZmF1bHRzXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMgYi9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9jdHguY1xuaW5kZXggNTQ4YmE0MzE1NTU0ZmYuLjIxZjI4MTc3NTFmOWU3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmNcbisrKyBiL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jXG5AQCAtMTAzNyw3ICsxMDM3LDcgQEAgc3RhdGljIGludCBhaWUyX3BvcHVsYXRlX3JhbmdlKHN0cnVjdCBhbWR4ZG5hX2dlbV9vYmogKmFibylcbiBcdGJvb2wgZm91bmQ7XG4gXHRpbnQgcmV0O1xuIFxuLVx0dGltZW91dCA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuK1x0dGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XG4gYWdhaW46XG4gXHRmb3VuZCA9IGZhbHNlO1xuIFx0ZG93bl93cml0ZShcdTAwMjZ4ZG5hLVx1MDAzZW5vdGlmaWVyX2xvY2spO1xuQEAgLTEwNjIsMTMgKzEwNjIsOSBAQCBzdGF0aWMgaW50IGFpZTJfcG9wdWxhdGVfcmFuZ2Uoc3RydWN0IGFtZHhkbmFfZ2VtX29iaiAqYWJvKVxuIFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdH1cbiBcbi1cdHJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFx1MDAyNm1hcHAtXHUwMDNlcmFuZ2UsXG4tXHRcdFx0bWF4X3QobG9uZywgdGltZW91dCAtIGppZmZpZXMsIDEpKTtcbi1cdGlmIChyZXQpIHtcbi1cdFx0aWYgKHJldCA9PSAtRUJVU1kpXG4tXHRcdFx0cmV0ID0gLUVUSU1FO1xuK1x0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2bWFwcC1cdTAwM2VyYW5nZSwgdGltZW91dCk7XG4rXHRpZiAocmV0KVxuIFx0XHRnb3RvIHB1dF9tbTtcbi1cdH1cbiBcbiBcdGRvd25fd3JpdGUoXHUwMDI2eGRuYS1cdTAwM2Vub3RpZmllcl9sb2NrKTtcbiBcdGlmIChtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeShcdTAwMjZtYXBwLVx1MDAzZW5vdGlmaWVyLCBtYXBwLVx1MDAzZXJhbmdlLm5vdGlmaWVyX3NlcSkpIHtcbkBAIC0xMDg2LDcgKzEwODIsNyBAQCBzdGF0aWMgaW50IGFpZTJfcG9wdWxhdGVfcmFuZ2Uoc3RydWN0IGFtZHhkbmFfZ2VtX29iaiAqYWJvKVxuIHB1dF9tbTpcbiBcdGFtZHhkbmFfdW1hcF9wdXQobWFwcCk7XG4gXHRtbXB1dChtbSk7XG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIHJldCA9PSAtRUJVU1kgPyAtRVRJTUUgOiByZXQ7XG4gfVxuIFxuIGludCBhaWUyX2NtZF9zdWJtaXQoc3RydWN0IGFtZHhkbmFfaHdjdHggKmh3Y3R4LCBzdHJ1Y3QgYW1keGRuYV9zY2hlZF9qb2IgKmpvYiwgdTY0ICpzZXEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNcbmluZGV4IGI4ZjJkZDk5ODJmNTNjLi43NmU4YTAwMjhjN2ZjOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNcbkBAIC04NTIsOCArODUyLDcgQEAgZW51bSBkcm1fZ3B1c3ZtX3NjYW5fcmVzdWx0IGRybV9ncHVzdm1fc2Nhbl9tbShzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UsXG4gXHRcdC5lbmQgPSBlbmQsXG4gXHRcdC5kZXZfcHJpdmF0ZV9vd25lciA9IGRldl9wcml2YXRlX293bmVyLFxuIFx0fTtcbi1cdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9XG4tXHRcdGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuK1x0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcbiBcdGVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBzdGF0ZSA9IERSTV9HUFVTVk1fU0NBTl9VTlBPUFVMQVRFRCwgbmV3X3N0YXRlO1xuIFx0dW5zaWduZWQgbG9uZyAqcGZucztcbiBcdHVuc2lnbmVkIGxvbmcgbnBhZ2VzID0gbnBhZ2VzX2luX3JhbmdlKHN0YXJ0LCBlbmQpO1xuQEAgLTg2Nyw4ICs4NjYsNyBAQCBlbnVtIGRybV9ncHVzdm1fc2Nhbl9yZXN1bHQgZHJtX2dwdXN2bV9zY2FuX21tKHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpyYW5nZSxcbiBcdGhtbV9yYW5nZS5obW1fcGZucyA9IHBmbnM7XG4gXG4gcmV0cnk6XG4tXHRlcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZobW1fcmFuZ2UsXG4tXHRcdFx0XHRcdCAgICAgICBtYXgodGltZW91dCAtIGppZmZpZXMsIDFMKSk7XG4rXHRlcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZobW1fcmFuZ2UsIHRpbWVvdXQpO1xuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJfZnJlZTtcbiBcbkBAIC0xNDU5LDggKzE0NTcsNyBAQCBpbnQgZHJtX2dwdXN2bV9nZXRfcGFnZXMoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcbiBcdFx0LmRldl9wcml2YXRlX293bmVyID0gY3R4LVx1MDAzZWRldmljZV9wcml2YXRlX3BhZ2Vfb3duZXIsXG4gXHR9O1xuIFx0dm9pZCAqemRkO1xuLVx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID1cbi1cdFx0amlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XG4rXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuIFx0dW5zaWduZWQgbG9uZyBpLCBqO1xuIFx0dW5zaWduZWQgbG9uZyBucGFnZXMgPSBucGFnZXNfaW5fcmFuZ2UocGFnZXNfc3RhcnQsIHBhZ2VzX2VuZCk7XG4gXHR1bnNpZ25lZCBsb25nIG51bV9kbWFfbWFwcGVkO1xuQEAgLTE0NzgsOSArMTQ3NSw2IEBAIGludCBkcm1fZ3B1c3ZtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiByZXRyeTpcbi1cdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKVxuLVx0XHRyZXR1cm4gLUVCVVNZO1xuLVxuIFx0aG1tX3JhbmdlLm5vdGlmaWVyX3NlcSA9IG1tdV9pbnRlcnZhbF9yZWFkX2JlZ2luKG5vdGlmaWVyKTtcbiBcdGlmIChkcm1fZ3B1c3ZtX3BhZ2VzX3ZhbGlkX3VubG9ja2VkKGdwdXN2bSwgc3ZtX3BhZ2VzKSlcbiBcdFx0Z290byBzZXRfc2Vxbm87XG5AQCAtMTQ5NSw4ICsxNDg5LDcgQEAgaW50IGRybV9ncHVzdm1fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXG4gXHR9XG4gXG4gXHRobW1fcmFuZ2UuaG1tX3BmbnMgPSBwZm5zO1xuLVx0ZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2aG1tX3JhbmdlLFxuLVx0XHRcdFx0bWF4X3QobG9uZywgdGltZW91dCAtIGppZmZpZXMsIDEpKTtcbitcdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFx1MDAyNmhtbV9yYW5nZSwgdGltZW91dCk7XG4gXHRtbXB1dChtbSk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9mcmVlO1xuQEAgLTE3MTgsOCArMTcxMSw3IEBAIGludCBkcm1fZ3B1c3ZtX3JhbmdlX2V2aWN0KHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXG4gXHRcdC5lbmQgPSBkcm1fZ3B1c3ZtX3JhbmdlX2VuZChyYW5nZSksXG4gXHRcdC5kZXZfcHJpdmF0ZV9vd25lciA9IE5VTEwsXG4gXHR9O1xuLVx0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID1cbi1cdFx0amlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7XG4rXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuIFx0dW5zaWduZWQgbG9uZyAqcGZucztcbiBcdHVuc2lnbmVkIGxvbmcgbnBhZ2VzID0gbnBhZ2VzX2luX3JhbmdlKGRybV9ncHVzdm1fcmFuZ2Vfc3RhcnQocmFuZ2UpLFxuIFx0XHRcdFx0XHQgICAgICAgZHJtX2dwdXN2bV9yYW5nZV9lbmQocmFuZ2UpKTtcbkBAIC0xNzM0LDggKzE3MjYsNyBAQCBpbnQgZHJtX2dwdXN2bV9yYW5nZV9ldmljdChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdGhtbV9yYW5nZS5obW1fcGZucyA9IHBmbnM7XG4tXHRlcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZobW1fcmFuZ2UsXG4tXHRcdFx0XHRtYXhfdChsb25nLCB0aW1lb3V0IC0gamlmZmllcywgMSkpO1xuK1x0ZXJyID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXHUwMDI2aG1tX3JhbmdlLCB0aW1lb3V0KTtcbiBcbiBcdGt2ZnJlZShwZm5zKTtcbiBcdG1tcHV0KG1tKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uY1xuaW5kZXggNGNmYjZlYjdjNzcxNWEuLmIxNDE1YzJlNDlmY2NmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uY1xuQEAgLTY1NSw4ICs2NTUsNyBAQCBzdGF0aWMgaW50IG5vdXZlYXVfcmFuZ2VfZmF1bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSxcbiBcdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBobW1fZmxhZ3MsXG4gXHRcdFx0ICAgICAgIHN0cnVjdCBzdm1fbm90aWZpZXIgKm5vdGlmaWVyKVxuIHtcbi1cdHVuc2lnbmVkIGxvbmcgdGltZW91dCA9XG4tXHRcdGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xuK1x0dW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKTtcbiBcdC8qIEhhdmUgSE1NIGZhdWx0IHBhZ2VzIHdpdGhpbiB0aGUgZmF1bHQgd2luZG93IHRvIHRoZSBHUFUuICovXG4gXHR1bnNpZ25lZCBsb25nIGhtbV9wZm5zWzFdO1xuIFx0c3RydWN0IGhtbV9yYW5nZSByYW5nZSA9IHtcbkBAIC02NzcsMjUgKzY3NiwxNiBAQCBzdGF0aWMgaW50IG5vdXZlYXVfcmFuZ2VfZmF1bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSxcbiBcdHJhbmdlLnN0YXJ0ID0gbm90aWZpZXItXHUwMDNlbm90aWZpZXIuaW50ZXJ2YWxfdHJlZS5zdGFydDtcbiBcdHJhbmdlLmVuZCA9IG5vdGlmaWVyLVx1MDAzZW5vdGlmaWVyLmludGVydmFsX3RyZWUubGFzdCArIDE7XG4gXG4tXHR3aGlsZSAodHJ1ZSkge1xuLVx0XHRpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkge1xuLVx0XHRcdHJldCA9IC1FQlVTWTtcbi1cdFx0XHRnb3RvIG91dDtcbi1cdFx0fVxuLVxuLVx0XHRyZXQgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcdTAwMjZyYW5nZSxcbi1cdFx0XHRcdFx0XHQgICAgICAgbWF4KHRpbWVvdXQgLSBqaWZmaWVzLFxuLVx0XHRcdFx0XHRcdFx0ICAgMUwpKTtcbi1cdFx0aWYgKHJldClcbi1cdFx0XHRnb3RvIG91dDtcbithZ2FpbjpcbitcdHJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFx1MDAyNnJhbmdlLCB0aW1lb3V0KTtcbitcdGlmIChyZXQpXG4rXHRcdGdvdG8gb3V0O1xuIFxuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnN2bW0tXHUwMDNlbXV0ZXgpO1xuLVx0XHRpZiAobW11X2ludGVydmFsX3JlYWRfcmV0cnkocmFuZ2Uubm90aWZpZXIsXG4tXHRcdFx0XHRcdCAgICByYW5nZS5ub3RpZmllcl9zZXEpKSB7XG4tXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnN2bW0tXHUwMDNlbXV0ZXgpO1xuLVx0XHRcdGNvbnRpbnVlO1xuLVx0XHR9XG4tXHRcdGJyZWFrO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZzdm1tLVx1MDAzZW11dGV4KTtcbitcdGlmIChtbXVfaW50ZXJ2YWxfcmVhZF9yZXRyeShyYW5nZS5ub3RpZmllcixcbitcdFx0XHRcdCAgICByYW5nZS5ub3RpZmllcl9zZXEpKSB7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZzdm1tLVx1MDAzZW11dGV4KTtcbitcdFx0Z290byBhZ2FpbjtcbiBcdH1cbiBcbiBcdG5vdXZlYXVfaG1tX2NvbnZlcnRfcGZuKGRybSwgXHUwMDI2cmFuZ2UsIGFyZ3MpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTc6MTUuNzI1MDQwNDEzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQwMDQ2NTc2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEhtbSBSYW5nZSBGYXVsdCBUaW1lb3V0IENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHNlcmllcywgYW5kIGl0J3MgbWFraW5nIHNvbWUgY2hhbmdlcyB0byBob3cgd2UgaGFuZGxlIHRpbWVvdXRzIHdpdGggYGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0YC4gU3BlY2lmaWNhbGx5LCBpdCdzIG1vZGlmeWluZyBpdHMgdXNhZ2UgaW4gYSBmZXcga2V5IGRyaXZlcnM6IGBhbWR4ZG5hYCwgYGRybV9ncHVzdm1gLCBhbmQgYG5vdXZlYXVfc3ZtYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhYm91dCB0aGUgdGltZW91dCB2YWx1ZSBiZWluZyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLiBJdCdzIHN3aXRjaGluZyBmcm9tIGFuIGFic29sdXRlIGppZmZpZXMgb3IgcmVtYWluaW5nIGppZmZpZXMgdG8gYSByZWxhdGl2ZSB0aW1lb3V0IOKAkyBzb21ldGhpbmcgbGlrZSBgbXNlY3NfdG9famlmZmllcyhITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKWAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBzaGlmdC5cblxuVGhlIHBhdGNoIGFsc28gdG91Y2hlcyBvbiBgbW11X2ludGVydmFsX3JlYWRfcmV0cnlgIHdpdGhpbiB0aGUgYERvY3VtZW50YXRpb24vbW0vaG1tLnJzdGAgYW5kIHRoZSBgbm91dmVhdV9zdm0uY2AgZmlsZXMuIEhhbmcgb24sIHRoZSBgbm91dmVhdWAgcGFydCBsb29rcyBsaWtlIGl0J3MganVzdCBhIGxvb3AgcmVmYWN0b3JpbmcsIGFuZCB0aGF0IGNvZGUgYWxyZWFkeSBtYWtlcyB1c2Ugb2YgdGhlIHJhbmdlIG5vdGlmaWVyLiBIbW0sIHNvIG1heWJlIHRoZSBmb2N1cyBpcyBvbiB0aGUgZG9jdW1lbnRhdGlvbiB1cGRhdGUgYW5kIGVuc3VyaW5nIGNvbnNpc3RlbmN5IGFjcm9zcyBhbGwgaW1wbGVtZW50YXRpb25zP1xuXG5SaWdodCwgbGV0J3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgIGZ1bmN0aW9uIGl0c2VsZiBhbmQgaG93IGl0J3MgdXNlZC4gSSdsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoYXQgY29tZXMgdXAuIE5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBhYm91dCBpbXByb3ZpbmcgdGltZW91dCBncmFudWxhcml0eT8gUmVkdWNpbmcgcG90ZW50aWFsIGZvciByYWNlIGNvbmRpdGlvbnM/IE9yIG1heWJlIGl0J3Mgc2ltcGxpZnlpbmcgdGhlIGxvZ2ljIGZvciBzcGVjaWZ5aW5nIHRoZSB0aW1lb3V0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgJ3doeScgYmVoaW5kIHRoaXMgY2hhbmdlIGJlZm9yZSBJIGNhbiBwcm9wZXJseSBhc3Nlc3MgaXQuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW5kIHRyYWNlIGl0cyBjYWxsZXJzIHRvIGdhaW4gYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM0OSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjIxLjEyNTUwNzg2N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTc4MzUyNDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0xNjA9bm9ybWFsIGludGVyZmFjZSBpczo6XFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTE2MS1cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MTYyOiAgaW50IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLFxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdC0xNjMtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0KTtcXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0xNjk9VGhlIGNhbGxlciBtdXN0IG5vdCBob2xkIGBgbW1hcF9yZWFkX2xvY2tgYCBiZWZvcmUgdGhlIGNhbGwuXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0OjE3MDpgYGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KClgYCB0YWtlcyB0aGUgbW1hcCByZWFkIGxvY2sgaW50ZXJuYWxseSBhbmRcXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMTcxLWFsbG93cyBgYGhhbmRsZV9tbV9mYXVsdCgpYGAgdG8gZHJvcCBpdCBkdXJpbmcgZmF1bHQgaGFuZGxpbmcuIFRoaXMgaXMgcmVxdWlyZWRcXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0xODY9VGhlIHVzYWdlIHBhdHRlcm4gaXM6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTIwMy0gYWdhaW46XFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0OjIwNDogICAgICByZXQgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcXHUwMDI2cmFuZ2UsIHRpbWVvdXQpO1xcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdC0yMDUtICAgICAgaWYgKHJldClcXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yMjg9dXBkYXRlLiBUaGUgcmV0cnkgY2hlY2sgbXVzdCB1c2UgdGhlIHNhbWUgbm90aWZpZXIgYW5kIHNlcXVlbmNlIG51bWJlciBzdG9yZWRcXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MjI5OmluIGBgcmFuZ2VgYCBieSBgYGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KClgYC5cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMjMwLVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yMzE9SG9sZGluZyB0aGUgbW1hcCBsb2NrIGFjcm9zcyBITU0gZmF1bHRzXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMjMzLVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDoyMzQ6TW9zdCBjYWxsZXJzIHNob3VsZCB1c2UgYGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgpYGAuIElmIGEgZHJpdmVyXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTIzNS1yZWFsbHkgbmVlZHMgdG8gaG9sZCB0aGUgbW1hcCBsb2NrIGFjcm9zcyB3b3JrIG91dHNpZGUgSE1NLCBpdCBjYW4gdXNlOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yNDA9aW50ZXJmYWNlIGNhbm5vdCBzdXBwb3J0IFZNQXMgd2hvc2UgZmF1bHQgaGFuZGxlcnMgbmVlZCB0byBkcm9wIHRoZSBtbWFwIGxvY2suXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0OjI0MTpOZXcgY2FsbGVycyBzaG91bGQgcHJlZmVyIGBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoKWBgIHVubGVzcyB0aGV5XFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTI0Mi1oYXZlIGEgc3BlY2lmaWMgcmVxdWlyZW1lbnQgdG8ga2VlcCB0aGUgbW1hcCBsb2NrIGhlbGQgYWNyb3NzIHRoZSBjYWxsLlxcbi0tXFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmM9MTAzMT1zdGF0aWMgaW50IGFpZTJfcG9wdWxhdGVfcmFuZ2Uoc3RydWN0IGFtZHhkbmFfZ2VtX29iaiAqYWJvKVxcbi0tXFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMtMTA2NC1cXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllMl9jdHguYzoxMDY1OlxcdHJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZtYXBwLVxcdTAwM2VyYW5nZSwgdGltZW91dCk7XFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmMtMTA2Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYz04NDE9ZW51bSBkcm1fZ3B1c3ZtX3NjYW5fcmVzdWx0IGRybV9ncHVzdm1fc2Nhbl9tbShzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg2OC1yZXRyeTpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg2OTpcXHRlcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcXHUwMDI2aG1tX3JhbmdlLCB0aW1lb3V0KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg3MC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYz0xNDQ0PWludCBkcm1fZ3B1c3ZtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xNDkxLVxcdGhtbV9yYW5nZS5obW1fcGZucyA9IHBmbnM7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxNDkyOlxcdGVyciA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZobW1fcmFuZ2UsIHRpbWVvdXQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTQ5My1cXHRtbXB1dChtbSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jPTE3MDM9aW50IGRybV9ncHVzdm1fcmFuZ2VfZXZpY3Qoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTcyOC1cXHRobW1fcmFuZ2UuaG1tX3BmbnMgPSBwZm5zO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTcyOTpcXHRlcnIgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChcXHUwMDI2aG1tX3JhbmdlLCB0aW1lb3V0KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE3MzAtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jPTY1Mj1zdGF0aWMgaW50IG5vdXZlYXVfcmFuZ2VfZmF1bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmMtNjc5LWFnYWluOlxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmM6NjgwOlxcdHJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZyYW5nZSwgdGltZW91dCk7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYy02ODEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9yZWdpb25zLmM9Mzk2PXN0YXRpYyBpbnQgbXNodl9yZWdpb25fcmFuZ2VfZmF1bHQoc3RydWN0IG1zaHZfbWVtX3JlZ2lvbiAqcmVnaW9uLFxcbi0tXFxuZHJpdmVycy9odi9tc2h2X3JlZ2lvbnMuYy00MTUtYWdhaW46XFxuZHJpdmVycy9odi9tc2h2X3JlZ2lvbnMuYzo0MTY6XFx0cmV0ID0gaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoXFx1MDAyNnJhbmdlLCAwKTtcXG5kcml2ZXJzL2h2L21zaHZfcmVnaW9ucy5jLTQxNy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbV9vZHAuYz0zMjQ9aW50IGliX3VtZW1fb2RwX21hcF9kbWFfYW5kX2xvY2soc3RydWN0IGliX3VtZW1fb2RwICp1bWVtX29kcCwgdTY0IHVzZXJfdmlydCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW1fb2RwLmMtMzY4LXJldHJ5OlxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW1fb2RwLmM6MzY5OlxcdHJldCA9IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KFxcdTAwMjZyYW5nZSwgdGltZW91dCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbV9vZHAuYy0zNzAtXFx0aWYgKHVubGlrZWx5KHJldCkpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2htbS5oPTEyNT1pbnQgaG1tX3JhbmdlX2ZhdWx0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlKTtcXG5pbmNsdWRlL2xpbnV4L2htbS5oOjEyNjppbnQgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UsXFxuaW5jbHVkZS9saW51eC9obW0uaC0xMjctXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQpO1xcbi0tXFxubGliL3Rlc3RfaG1tLmM9MzkyPXN0YXRpYyBpbnQgZG1pcnJvcl9yYW5nZV9mYXVsdF91bmxvY2tlZChzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTM5OC1cXHR3aGlsZSAodHJ1ZSkge1xcbmxpYi90ZXN0X2htbS5jOjM5OTpcXHRcXHRyZXQgPSBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChyYW5nZSwgdGltZW91dCk7XFxubGliL3Rlc3RfaG1tLmMtNDAwLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5tbS9obW0uYz02ODk9c3RhdGljIGludCBobW1fcmFuZ2VfZmF1bHRfbG9ja2VkKHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLCBib29sICpsb2NrZWQpXFxuLS1cXG5tbS9obW0uYy03NTMtICogVGhlIG1tYXAgbG9jayBtdXN0IGJlIGhlbGQgYnkgdGhlIGNhbGxlciBhbmQgd2lsbCByZW1haW4gaGVsZCBvbiByZXR1cm4uXFxubW0vaG1tLmM6NzU0OiAqIE5ldyB1c2VycyBzaG91bGQgcHJlZmVyIGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KCkgdW5sZXNzIHRoZXlcXG5tbS9obW0uYy03NTUtICogc3BlY2lmaWNhbGx5IG5lZWQgdG8ga2VlcCB0aGUgbW1hcCBsb2NrIGhlbGQgYWNyb3NzIHRoZSBjYWxsLiBUaGlzIGhlbHBlclxcbi0tXFxubW0vaG1tLmM9NzYyPUVYUE9SVF9TWU1CT0woaG1tX3JhbmdlX2ZhdWx0KTtcXG4tLVxcbm1tL2htbS5jLTc2NC0vKipcXG5tbS9obW0uYzo3NjU6ICogaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgLSBmYXVsdCBpbiBhIHJhbmdlIHdpdGggYSByZXRyeSB0aW1lb3V0XFxubW0vaG1tLmMtNzY2LSAqIEByYW5nZTpcXHRhcmd1bWVudCBzdHJ1Y3R1cmVcXG4tLVxcbm1tL2htbS5jLTc4My0gKi9cXG5tbS9obW0uYzo3ODQ6aW50IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLFxcbm1tL2htbS5jLTc4NS1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dClcXG4tLVxcbm1tL2htbS5jLTgyNC19XFxubW0vaG1tLmM6ODI1OkVYUE9SVF9TWU1CT0woaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQpO1xcbm1tL2htbS5jLTgyNi1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2htbS10ZXN0cy5jPTI5MDQ9VEVTVF9GX1RJTUVPVVQoaG1tLCBiZW5jaG1hcmtfdGhwX21pZ3JhdGlvbiwgMTIwKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaG1tLXRlc3RzLmMtMjk2MC0gKiBUZXN0IHRoYXQgSE1NIGNhbiBmYXVsdCBpbiBwYWdlcyBiYWNrZWQgYnkgdXNlcmZhdWx0ZmQgdXNpbmcgdGhlXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaG1tLXRlc3RzLmM6Mjk2MTogKiBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dCgpIHBhdGggd2l0aCBubyB0aW1lb3V0LiBUaGlzIGV4ZXJjaXNlc1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2htbS10ZXN0cy5jLTI5NjItICogdGhlIGxvY2stZHJvcCByZXRyeSBsb2dpYyBpbiB0aGUgSE1NIGZyYW1ld29yay5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTc6MjMuMTAzODY2MDQ1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4Mzg5NjIwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVGltZW91dCBDaGFuZ2VzIGluIEhNTSBGYXVsdCBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIHBhdGNoIGNoYW5nZXMsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBjb2RlIGlzIG1vZGlmeWluZyBob3cgYGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0YCBpcyBjYWxsZWQgaW4gYSBmZXcgY3JpdGljYWwgYXJlYXM6IGBhbWR4ZG5hYCwgYGRybV9ncHVzdm1gLCBhbmQgYG5vdXZlYXVfc3ZtYC4gU3BlY2lmaWNhbGx5LCB0aGV5J3JlIGNoYW5naW5nIHRoZSB0aW1lb3V0IHBhcmFtZXRlci4gUHJldmlvdXNseSwgaXQgd2FzIGVpdGhlciBhbiBhYnNvbHV0ZSBqaWZmaWVzIHZhbHVlIG9yLCBhdCBsZWFzdCwgdGhlICpyZW1haW5pbmcqIGppZmZpZXMgdW50aWwgYSB0aW1lb3V0LiBOb3csIGl0J3MgYmVpbmcgY29udmVydGVkIHRvIGEgKnJlbGF0aXZlKiB0aW1lb3V0LCB3aGljaCBpcyBpbnRlcmVzdGluZy5cblxuV2FpdCBhIHNlY29uZC4uLiBkb2VzIGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAgYWN0dWFsbHkgZXhwZWN0IGEgcmVsYXRpdmUgdGltZW91dD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaW4gYG1tL2htbS5jYC4gSSBoYXZlIHRvIGJlIHN1cmUgdGhlIGNoYW5nZSBpcyBjb3JyZWN0LiBJdCdzIGVhc3kgdG8gbWFrZSBhIHN1YnRsZSBtaXN0YWtlIHRoZXJlIGFuZCBpbnRyb2R1Y2UgYSBzZXJpb3VzIGlzc3VlLiBHb3R0YSBjb25maXJtIHRoZSBzZW1hbnRpY3Mgb2YgdGhhdCB0aW1lb3V0IHBhcmFtZXRlciBiZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTkxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjI2Ljg4Nzc2MzY4M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTcyNjA4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9obW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9obW0uYz02ODk9c3RhdGljIGludCBobW1fcmFuZ2VfZmF1bHRfbG9ja2VkKHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLCBib29sICpsb2NrZWQpXFxuLS1cXG5tbS9obW0uYy03NTMtICogVGhlIG1tYXAgbG9jayBtdXN0IGJlIGhlbGQgYnkgdGhlIGNhbGxlciBhbmQgd2lsbCByZW1haW4gaGVsZCBvbiByZXR1cm4uXFxubW0vaG1tLmM6NzU0OiAqIE5ldyB1c2VycyBzaG91bGQgcHJlZmVyIGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KCkgdW5sZXNzIHRoZXlcXG5tbS9obW0uYy03NTUtICogc3BlY2lmaWNhbGx5IG5lZWQgdG8ga2VlcCB0aGUgbW1hcCBsb2NrIGhlbGQgYWNyb3NzIHRoZSBjYWxsLiBUaGlzIGhlbHBlclxcbi0tXFxubW0vaG1tLmM9NzYyPUVYUE9SVF9TWU1CT0woaG1tX3JhbmdlX2ZhdWx0KTtcXG4tLVxcbm1tL2htbS5jLTc2NC0vKipcXG5tbS9obW0uYzo3NjU6ICogaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgLSBmYXVsdCBpbiBhIHJhbmdlIHdpdGggYSByZXRyeSB0aW1lb3V0XFxubW0vaG1tLmMtNzY2LSAqIEByYW5nZTpcXHRhcmd1bWVudCBzdHJ1Y3R1cmVcXG4tLVxcbm1tL2htbS5jLTc4My0gKi9cXG5tbS9obW0uYzo3ODQ6aW50IGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLFxcbm1tL2htbS5jLTc4NS1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dClcXG4tLVxcbm1tL2htbS5jLTgyNC19XFxubW0vaG1tLmM6ODI1OkVYUE9SVF9TWU1CT0woaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQpO1xcbm1tL2htbS5jLTgyNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTc6MjYuOTQzNDk1Mjc5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1MDk2MzcxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgbW0vaG1tLmNgIC0gTGluZSA3ODQqKlxuXG5Pa2F5LCBJJ20gdGhpbmtpbmcgd2UgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIG1lbW9yeSBtYW5hZ2VtZW50LCBzbyBsZXQncyB6ZXJvIGluIG9uIGBtbS9obW0uY2AuIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBsaW5lIDc4NCDigJMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHBhcnRpY3VsYXIgc3Vic3lzdGVtIGlzIGhhbmRsaW5nIHRoaW5ncy4gSSdtIGFzc3VtaW5nIGl0J3MgcHJvYmFibHkgcmVsYXRlZCB0byBhbGxvY2F0aW9uLCBkZWFsbG9jYXRpb24sIG9yIHBvc3NpYmx5IGV2ZW4gdHJhY2tpbmcgbWV0YWRhdGEsIGdpdmVuIHRoZSB0eXBpY2FsIHBhdHRlcm5zIEkndmUgc2VlbiBpbiB0aGVzZSBraW5kcyBvZiBrZXJuZWwgbWVtb3J5IG1hbmFnZW1lbnQgaW1wbGVtZW50YXRpb25zLiBMZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5ICpoYXBwZW5pbmcqIHRoZXJlLiBIb3BlZnVsbHksIHRoZXJlIGFyZSBzb21lIGNsYXJpZnlpbmcgY29tbWVudHMgYXJvdW5kIHRoYXQgYXJlYSFcblxuXG4iLCJJbnB1dFRva2VucyI6NzkxNCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjMwLjI5NDQ2MDcwMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL2htbS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc2NCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc2NDpcXHQvKipcXG4gNzY1OlxcdCAqIGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0IC0gZmF1bHQgaW4gYSByYW5nZSB3aXRoIGEgcmV0cnkgdGltZW91dFxcbiA3NjY6XFx0ICogQHJhbmdlOlxcdGFyZ3VtZW50IHN0cnVjdHVyZVxcbiA3Njc6XFx0ICogQHRpbWVvdXQ6XFx0dGltZW91dCBpbiBqaWZmaWVzIGZvciBpbnRlcm5hbCAtRUJVU1kgcmV0cmllcywgb3IgMCB0byByZXRyeVxcbiA3Njg6XFx0ICpcXHRcXHRpbmRlZmluaXRlbHlcXG4gNzY5OlxcdCAqXFxuIDc3MDpcXHQgKiBUaGUgY2FsbGVyIG11c3Qgbm90IGhvbGQgdGhlIG1tYXAgbG9jay4gVGhlIGZ1bmN0aW9uIHRha2VzIHRoZSBtbWFwIHJlYWRcXG4gNzcxOlxcdCAqIGxvY2sgaW50ZXJuYWxseSBhbmQgYWxsb3dzIGhhbmRsZV9tbV9mYXVsdCgpIHRvIGRyb3AgaXQgZHVyaW5nIGZhdWx0cy4gSWZcXG4gNzcyOlxcdCAqIHRoZSBtbWFwIGxvY2sgaXMgZHJvcHBlZCBvciB0aGUgcmFuZ2UgaXMgaW52YWxpZGF0ZWQsIHRoZSBmdW5jdGlvbiByZWZyZXNoZXNcXG4gNzczOlxcdCAqIHJhbmdlLVxcdTAwM2Vub3RpZmllcl9zZXEgYW5kIHJlc3RhcnRzIHRoZSB3YWxrIGludGVybmFsbHkuXFxuIDc3NDpcXHQgKlxcbiA3NzU6XFx0ICogUGFzc2luZyAwIGZvciBAdGltZW91dCByZXRyaWVzIGluZGVmaW5pdGVseS4gQSBub24temVybyBAdGltZW91dCBpcyBhIGNhbGxlclxcbiA3NzY6XFx0ICogcG9saWN5IGxpbWl0IGZvciByZXBlYXRlZCBtbXUtbm90aWZpZXIgaW52YWxpZGF0aW9uIHJldHJpZXMuIEhNTSBkb2VzIG5vdFxcbiA3Nzc6XFx0ICogaW50ZXJydXB0IHBhZ2UgZmF1bHQgaGFuZGxpbmcgd2hlbiB0aGUgdGltZW91dCBleHBpcmVzLCBidXQgcmV0dXJucyAtRUJVU1lcXG4gNzc4OlxcdCAqIGlmIHRoZSByZXRyeSBidWRnZXQgaXMgZXhoYXVzdGVkIGJlZm9yZSBhIHN0YWJsZSByYW5nZSBpcyBvYnRhaW5lZC5cXG4gNzc5OlxcdCAqXFxuIDc4MDpcXHQgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBvbmUgb2YgdGhlIGVycm9yIGNvZGVzIGRvY3VtZW50ZWQgZm9yXFxuIDc4MTpcXHQgKiBobW1fcmFuZ2VfZmF1bHQoKS4gLUVJTlRSIGlzIHJldHVybmVkIGlmIG1tYXBfbG9jayBhY3F1aXNpdGlvbiBpc1xcbiA3ODI6XFx0ICogaW50ZXJydXB0ZWQgb3IgYSBmYXRhbCBzaWduYWwgaXMgcGVuZGluZyBkdXJpbmcgcmV0cnkgaGFuZGxpbmcuXFxuIDc4MzpcXHQgKi9cXG4gNzg0OlxcdGludCBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSxcXG4gNzg1OlxcdFxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0KVxcbiA3ODY6XFx0e1xcbiA3ODc6XFx0XFx0c3RydWN0IG1tX3N0cnVjdCAqbW0gPSByYW5nZS1cXHUwMDNlbm90aWZpZXItXFx1MDAzZW1tO1xcbiA3ODg6XFx0XFx0dW5zaWduZWQgbG9uZyBkZWFkbGluZSA9IDA7XFxuIDc4OTpcXHRcXHRib29sIGxvY2tlZCA9IGZhbHNlO1xcbiA3OTA6XFx0XFx0aW50IHJldDtcXG4gNzkxOlxcdFxcbiA3OTI6XFx0XFx0ZG8ge1xcbiA3OTM6XFx0XFx0XFx0aWYgKGZhdGFsX3NpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxcbiA3OTQ6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5UUjtcXG4gNzk1OlxcdFxcbiA3OTY6XFx0XFx0XFx0aWYgKHRpbWVvdXQpIHtcXG4gNzk3OlxcdFxcdFxcdFxcdC8qXFxuIDc5ODpcXHRcXHRcXHRcXHQgKiBJZiB0aGUgcHJldmlvdXMgZmF1bHQgZHJvcHBlZCBtbWFwX2xvY2ssIHRoZW4gdGhlIGZhdWx0XFxuIDc5OTpcXHRcXHRcXHRcXHQgKiBoYW5kbGVyIG1hZGUgcHJvZ3Jlc3MuIFJlc3RhcnQgdGhlIHJldHJ5IHRpbWVvdXQgaW4gdGhhdFxcbiA4MDA6XFx0XFx0XFx0XFx0ICogY2FzZSwgYnV0IGtlZXAgdGhlIGV4aXN0aW5nIGRlYWRsaW5lIGZvciBvcmRpbmFyeSAtRUJVU1lcXG4gODAxOlxcdFxcdFxcdFxcdCAqIHJldHJpZXMuXFxuIDgwMjpcXHRcXHRcXHRcXHQgKi9cXG4gODAzOlxcdFxcdFxcdFxcdGlmICghbG9ja2VkKVxcbiA4MDQ6XFx0XFx0XFx0XFx0XFx0ZGVhZGxpbmUgPSBqaWZmaWVzICsgdGltZW91dDtcXG4gODA1OlxcdFxcbiA4MDY6XFx0XFx0XFx0XFx0aWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgZGVhZGxpbmUpKVxcbiA4MDc6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4gODA4OlxcdFxcdFxcdH1cXG4gODA5OlxcdFxcbiA4MTA6XFx0XFx0XFx0cmFuZ2UtXFx1MDAzZW5vdGlmaWVyX3NlcSA9XFxuIDgxMTpcXHRcXHRcXHRcXHRtbXVfaW50ZXJ2YWxfcmVhZF9iZWdpbihyYW5nZS1cXHUwMDNlbm90aWZpZXIpO1xcbiA4MTI6XFx0XFxuIDgxMzpcXHRcXHRcXHRyZXQgPSBtbWFwX3JlYWRfbG9ja19raWxsYWJsZShtbSk7XFxuIDgxNDpcXHRcXHRcXHRpZiAocmV0KVxcbiA4MTU6XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gODE2OlxcdFxcbiA4MTc6XFx0XFx0XFx0bG9ja2VkID0gdHJ1ZTtcXG4gODE4OlxcdFxcdFxcdHJldCA9IGhtbV9yYW5nZV9mYXVsdF9sb2NrZWQocmFuZ2UsIFxcdTAwMjZsb2NrZWQpO1xcbiA4MTk6XFx0XFx0XFx0aWYgKGxvY2tlZClcXG4gODIwOlxcdFxcdFxcdFxcdG1tYXBfcmVhZF91bmxvY2sobW0pO1xcbiA4MjE6XFx0XFx0fSB3aGlsZSAocmV0ID09IC1FQlVTWSk7XFxuIDgyMjpcXHRcXG4gODIzOlxcdFxcdHJldHVybiByZXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjMwLjI5NDU0ODU4MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjc0NzEwMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgIEZ1bmN0aW9uKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0IHNlZW1zIGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAgZXhwZWN0cyBhIHJlbGF0aXZlIHRpbWVvdXQgdmFsdWUsIGV4cHJlc3NlZCBpbiBqaWZmaWVzLCBhbmQgdGhlbiBpbnRlcm5hbGx5IGNhbGN1bGF0ZXMgdGhlIGFjdHVhbCBkZWFkbGluZS4gVGhlIHBhdGNoIGhlcmUgYWRkcmVzc2VzIHNvbWUgY2FsbGVycyB0aGF0IHdlcmUsIGNyaXRpY2FsbHksIG1pc2ludGVycHJldGluZyB0aGF0IGFuZCBwYXNzaW5nIGluIGVpdGhlciBhbiBhYnNvbHV0ZSBqaWZmaWVzIHZhbHVlIG9yIGEgdmFsdWUgcmVwcmVzZW50aW5nIHJlbWFpbmluZyBqaWZmaWVzLiBIbW0sIHRoaXMgcmFpc2VzIGEgcXVlc3Rpb24uLi5pcyB0aGlzIGZ1bmN0aW9uIGEgbmV3ZXIgYWRkaXRpb24gdG8gdGhlIGtlcm5lbD8gSSBzaG91bGQgcXVpY2tseSBjaGVjayBpdHMgcmV2aXNpb24gaGlzdG9yeSB0byBjb25maXJtIG15IGFzc3VtcHRpb24sIGFzIHRoYXQgd291bGQgZ2l2ZSBpbXBvcnRhbnQgY29udGV4dCBmb3IgdGhpcyBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAzNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTc6MzMuNjYyMDIxNjUyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTY2OTcxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2htbS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvaG1tLmg9MTI1PWludCBobW1fcmFuZ2VfZmF1bHQoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UpO1xcbmluY2x1ZGUvbGludXgvaG1tLmg6MTI2OmludCBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dChzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSxcXG5pbmNsdWRlL2xpbnV4L2htbS5oLTEyNy1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjMzLjcxNzY5NjYwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDcwMjczODU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVjZW50IEFkZGl0aW9uIG9mIGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgIGNoYW5nZS4gSSBzZWUgaXQncyBhIHJlY2VudCBhZGRpdGlvbiwgYW5kIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkcmVzc2luZyBpdHMgdXNhZ2UgYWNyb3NzIHNldmVyYWwgZHJpdmVycy4gSW50ZXJlc3RpbmcuIFRoZSBwYXRjaCB0b3VjaGVzOiBgZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmNgLCBgZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uY2AsIGFuZCBgZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uY2AuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBhcmUgdGhlc2UgZHJpdmVycyBldmVuIHJlbGV2YW50IGluIGEgdmlydHVhbGl6ZWQgY29udGV4dCwgY29uc2lkZXJpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHRpbWVvdXQ/IGBkcm1fZ3B1c3ZtLmNgIGlzIHBhcnQgb2YgRFJNIEdQVSBTVk0sIHdoaWNoIGltcGxpZXMgaXQgbWlnaHQgYmUgdXNlZCBieSBhIGZldyBkcml2ZXJzLiBgbm91dmVhdV9zdm0uY2AgaXMgcGFydCBvZiBOb3V2ZWF1LCBhbmQgYGFpZTJfY3R4LmNgIGJlbG9uZ3MgdG8gdGhlIEFNRCBYRE5BIGRyaXZlci5cblxuU3BlY2lmaWNhbGx5IGZvciBgZHJtX2dwdXN2bS5jYCwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQncyBldmVuIGNvbXBpbGVkIGluLiBBbHJpZ2h0LCB0aGUgY29tcGlsYXRpb24gaXMgY29uZGl0aW9uYWwgb24gYENPTkZJR19EUk1fR1BVU1ZNYC4gR29vZCwgbm93IEkga25vdyB3aGVyZSB0byBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Mzc2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjM4LjE4Nzk3MjU0NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyMDQzNjg5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFJNX0dQVVNWTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0yMjE9Y29uZmlnIFJVU1RfRFJNX0dQVVZNXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMjctXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjI4OmNvbmZpZyBEUk1fR1BVU1ZNXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjI5LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjQwLjEwODQxNDE4NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzMxMDk3NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgRFJNX0dQVVNWTSBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3Mga2lja3Mgb2ZmIHdpdGggYSBzcGVjaWZpYywgYW5kIHF1aXRlIGZvY3VzZWQsIGdvYWw6IHRvIHVuZGVyc3RhbmQgdGhlIHVzYWdlIHBhdHRlcm5zIHN1cnJvdW5kaW5nIGBEUk1fR1BVU1ZNYC4gVGhpcyBpc24ndCBhIGNhc3VhbCBleHBsb3JhdGlvbjsgaXQncyBhIHRhcmdldGVkIHF1ZXJ5LiBXZSdyZSBub3QganVzdCBsb29raW5nIGZvciAqYW55KiB1c2Ugb2YgdGhlIERSTSBzdWJzeXN0ZW0sIGJ1dCBzcGVjaWZpY2FsbHkgaG93IGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCwgb3IgYmVpbmcgaW5mbHVlbmNlZCBieSwgYEdQVVNWTWAuIFRoaXMgc3VnZ2VzdHMgYSBwcmUtZXhpc3RpbmcgdW5kZXJzdGFuZGluZyBvZiBib3RoIERSTSAoRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyKSBhbmQsIHByZXN1bWFibHksIHRoZSBHUFUtYmFzZWQgdmlydHVhbCBtZW1vcnkgKEdQVVNWTSkgY29uY2VwdC4gVGhlIGltcGxpZWQgcXVlc3Rpb24gaXMgXCJXaG8ncyB1c2luZyB0aGlzPyBXaGVyZSBpcyBpdCBiZWluZyB1dGlsaXplZD8gSW4gd2hhdCBjb250ZXh0P1wiIFRoaXMgc3Ryb25nbHkgaGludHMgYXQgYW4gaW52ZXN0aWdhdGlvbiBpbnRvIHBvdGVudGlhbCBpbnRlZ3JhdGlvbiBpc3N1ZXMsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBvciBwZXJoYXBzIGV2ZW4gY3Jvc3MtbW9kdWxlIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIGtlcm5lbCdzIGdyYXBoaWNzIHN0YWNrLiBJdCBjb3VsZCBhbHNvIHJlbGF0ZSB0byBkZWJ1Z2dpbmcgYSBzcGVjaWZpYyBpc3N1ZSwgb3IgZ2FpbmluZyBhbiBvdmVydmlldyBvZiBob3cgdGhhdCBwYXJ0IG9mIHRoZSBncmFwaGljcyBzeXN0ZW0gaXMgdXNlZC4gVGhlIGdvYWwgaXMgdG8gb2J0YWluIGNvbnRleHR1YWwgaW5mb3JtYXRpb24uIFRoZSBcIkxldCdzIHNlZVwiIGltcGxpZXMgYSBtZXRob2RpY2FsLCBkYXRhLWRyaXZlbiBhcHByb2FjaCB0byB0aGUgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk0NywiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU3OjQzLjQzOTUxNDUxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzU3NDIyMDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBEUk1fR1BVU1ZNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnPTI9Y29uZmlnIERSTV9YRVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctNDEtXFx0c2VsZWN0IERSTV9FWEVDXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6NDI6XFx0c2VsZWN0IERSTV9HUFVTVk0gaWYgIVVNTFxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTQzLVxcdHNlbGVjdCBEUk1fR1BVVk1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnPTc5PWNvbmZpZyBEUk1fWEVfR1BVU1ZNXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy04NS1cXHRzZWxlY3QgREVWSUNFX1BSSVZBVEVcXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzo4NjpcXHRzZWxlY3QgRFJNX0dQVVNWTVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTg3LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTc6NDUuMTk2OTQxNDU1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNzI4MTA4MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBHUFUgRHJpdmVycyBpbiBhIFZpcnR1YWwgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyB0aGUgYERSTV9YRWAgZHJpdmVyLCBJbnRlbCdzIFhlIGRyaXZlciwgc2VlbXMgdG8gZGVwZW5kIG9uIGBEUk1fR1BVU1ZNYC4gSSdtIHdvbmRlcmluZyBpZiB3ZSBjYW4gZnV6eiB0aGVzZSBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgYERSTV9YRWAgYW5kIGBub3V2ZWF1YCwgd2l0aGluIGEgVk0uIFRoZSBnZW5lcmFsIGNoYWxsZW5nZSB3aXRoIEdQVSBkcml2ZXJzIGlzIHRoZSBoYXJkd2FyZSBkZXBlbmRlbmN5LiBUaGV5IG9mdGVuIG5lZWQgc3BlY2lmaWMgaGFyZHdhcmUgdG8gZnVuY3Rpb24uIEhvd2V2ZXIsIHNvbWUgRFJNIGRyaXZlcnMgYXJlIGFjY2Vzc2libGUgYW5kIGFsbG93IElPQ1RMIGNhbGxzIGV2ZW4gd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLCBvciB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgYHZrbXNgLiBCdXQsIGFzIEkgcmVjYWxsLCBib3RoIGB4ZWAgYW5kIGBub3V2ZWF1YCB1c3VhbGx5IHJlcXVpcmUgUENJIGRldmljZXMsIHdoaWNoIGNvbXBsaWNhdGVzIHRoaW5ncy5cblxuTm93LCBJIGtub3cgU3l6a2FsbGVyIGNhbiBmdXp6IERSTSBkcml2ZXJzLCBlaXRoZXIgYnkgdXNpbmcgYHN5el91c2JfY29ubmVjdGAsIGluamVjdGluZyBQQ0kgZGV2aWNlcywgb3IgYnkganVzdCBvcGVuaW5nIGEgYC9kZXYvZHJpL3JlbmRlckQqYCBkZXZpY2UgZmlsZSBpZiBpdCBleGlzdHMuIEJ1dCBnZW5lcmFsbHksIHRoZSBkcml2ZXIgcHJvYmUgd2lsbCBmYWlsIHdpdGhvdXQgdGhlIGNvcnJlY3QgaGFyZHdhcmUsIHByZXZlbnRpbmcgdGhlIGNyZWF0aW9uIG9mIHRoZSBuZWNlc3NhcnkgZGV2aWNlIG5vZGVzLlxuXG5IbW0sIGRvZXMgU3l6a2FsbGVyIGhhdmUgc3BlY2lmaWMgc3VwcG9ydCBmb3IgUENJIGZ1enppbmc/IElzIGl0IHVzaW5nIGBzeXpfcGNpX2Nvbm5lY3RgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJIHdhcyB0aGlua2luZyBpdCdzIHByb2JhYmx5IHVzaW5nIGBzeXpfa3ZtX3NldHVwX2NwdWAgb3Igc29tZXRoaW5nIGxpa2UgYHN5el9wY2lfLi4uYCBCdXQgbXkgcmVjb2xsZWN0aW9uIHNlZW1zIHNwb3R0eS4gSXQgZG9lcyBoYXZlICpzb21lKiBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMsIGJ1dCBpdCBmZWVscyBsaW1pdGVkLlxuXG5BbHNvLCBJJ20gbm90aW5nIHRoZSBtZW50aW9uIG9mIGBobW1fcmFuZ2VfZmF1bHRfdW5sb2NrZWRfdGltZW91dGAsIHdoaWNoIGlzIGFsc28gdXNlZCBpbiBgbGliL3Rlc3RfaG1tLmNgLiBTaG91bGQgSSBjaGVjayBpZiBgbGliL3Rlc3RfaG1tLmNgIGhhcyBiZWVuIG1vZGlmaWVkPyBObywgaXQgbG9va3MgbGlrZSBpdCBoYXNuJ3QuIFRoaXMgcGF0Y2ggb25seSB0b3VjaGVzIGBhaWUyX2N0eC5jYCwgYGRybV9ncHVzdm0uY2AsIGFuZCBgbm91dmVhdV9zdm0uY2AuXG5cbldhaXQsIGBkcm1fZ3B1c3ZtLmNgIGlzIGNvcmUgRFJNIGNvZGUgZm9yIEdQVSBTVk0sIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJcyBpdCBldmVuIHdvcnRoIGZ1enppbmc/IElmIHRoZSBjb2RlIHJlbGllcyBvbiBzcGVjaWZpYyBBTUQgWEROQSwgSW50ZWwgWGUsIG9yIE52aWRpYSBoYXJkd2FyZSwgaXQncyBsaWtlbHkgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBWTS4gQnV0LCBpZiBgbm91dmVhdWAgaXMgZm9yIE52aWRpYSwgd2UncmUgdGFsa2luZyBhYm91dCB0ZXN0aW5nIGl0IHdpdGggYSB2aXJ0dWFsIEdQVS5cblxuV2hhdCBhYm91dCBgZHJtX2dwdXN2bS5jYD8gSXQncyBzZWxlY3RlZCBieSBgRFJNX1hFYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIENhbiB3ZSB0ZXN0IGBEUk1fWEVgIGluIGEgVk0/IFdpdGhvdXQgSW50ZWwgWGUgaGFyZHdhcmUsIGl0IGRvZXNuJ3Qgc2VlbSBsaWtlbHkuIEJ1dCB0aGVuIGFnYWluLCBTeXprYWxsZXIgZG9lcyBoYXZlIGB2a21zYCBmb3IgRFJNIGZ1enppbmcuLi4gRG9lcyBgdmttc2AgYWN0dWFsbHkgdXNlIGBEUk1fR1BVU1ZNYD8gSSdsbCBuZWVkIHRvIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDQyMiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1Nzo1My41Njk3NTQ1NjFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NzQ0MDQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRFJNX0dQVVNWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdmttc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTc6NTMuNjI0NTA2MDk2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3MjgzNjQ5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGFwcHJvYWNoIGZ1enppbmcgYG5vdXZlYXVgLiBUaGUgaW5pdGlhbCBpZGVhIHdhcyB0byBzZWUgaWYgd2UgY291bGQgcHJvYmUgaXQgd2l0aCBhIGZha2UgUENJIGRldmljZS4gU3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcyB2aWEgYHN5el9wY2lfZGV2aWNlX2FkZGAg4oCTIG9yIGF0IGxlYXN0LCBzb21lIGZvcmtzIGRvLiBCdXQgdGhhdCdzIG5vdCB0aGUgcHJpbWFyeSByb3V0ZS4gSSByZWNhbGwgbm93IHRoYXQgc3l6a2FsbGVyIGdlbmVyYWxseSB1c2VzIGBzeXpfdXNiX2Nvbm5lY3RgIGZvciBVU0IgYW5kIGBzeXpfODAyMTFfLi4uYCBmb3IgV2lGaS4gRm9yIHRoZSBtb3N0IHBhcnQsIFBDSSBmdXp6aW5nIGlzbid0IGEgcm9idXN0LCBjb3JlIGNhcGFiaWxpdHkgb2YgdmFuaWxsYSBTeXprYWxsZXIsIGVzcGVjaWFsbHkgZm9yIHNvbWV0aGluZyBhcyBjb21wbGV4IGFzIGEgR1BVLlxuXG5Ib3dldmVyLCB0aGlzIHBhdGNoIGZpeGVzIGFuIGlzc3VlIHdpdGhpbiBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgLiBTbywgdGhlIHF1ZXN0aW9uIHJlbWFpbnM6IGlzIGl0IHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz9cblxuTGV0J3MgcmUtZXhhbWluZSB0aGUgY2hhbmdlZCBmaWxlcy4gV2UndmUgZ290IGNoYW5nZXMgaW4gYGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jYCwgYGRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmNgLCBhbmQgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jYC4gVGhlIGNvcmUgcXVlc3Rpb24gbm93IGlzLCBhcmUgdGhlc2UgZHJpdmVycyBldmVuIHJlYWNoYWJsZSB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmU/IElmIHRoZXkgYXJlIGhhcmR3YXJlLWRlcGVuZGVudCwgdGhlbiBpdCBjb3VsZCBiZSBhIGRlYWQgZW5kLlxuXG5Ib2xkIG9uLCB0aG91Z2guIGBkcm1fZ3B1c3ZtLmNgIGlzIGEgKmdlbmVyaWMqIGxpYnJhcnkgZm9yIERSTSBkcml2ZXJzLiBUaGF0IGNoYW5nZXMgdGhpbmdzLiBFdmVuIGlmIGN1cnJlbnRseSBvbmx5IHNlbGVjdGVkIGJ5IGBEUk1fWEVgLCB0aGlzIGlzIGNvcmUgZnVuY3Rpb25hbGl0eSB0byBEUk0gYXMgYSB3aG9sZS4gVGhhdCBpbmNyZWFzZXMgdGhlIHBvc3NpYmlsaXR5IG9mIHRyaWdnZXJpbmcgc29tZXRoaW5nLCBwb3RlbnRpYWxseSB0aHJvdWdoIG11bHRpcGxlIGRyaXZlcnMuXG5cbk9rYXksIG5leHQgc3RlcCBpcyB0byBtYWtlIHN1cmUgdGhhdCBgbm91dmVhdWAgaXMgZW5hYmxlZCBpbiBTeXprYWxsZXIuIFllcywgaXQgbG9va3MgbGlrZSBgQ09ORklHX0RSTV9OT1VWRUFVYCBpcyBpbmRlZWQgZW5hYmxlZC4gU28gdGhlIG5leHQgc3RlcCBpczogY2FuIHN5emthbGxlciByZWFjaCBgbm91dmVhdV9zdm0uY2A/IEkgbmVlZCB0byBjaGVjayBob3cgYG5vdXZlYXVfc3ZtLmNgIGdldHMgaW5pdGlhbGl6ZWQuIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBzb3VyY2UgY29kZSB0byBmaW5kIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1MTUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTg6MDAuMzUyODczOTE5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzI0ODI5NTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5vdXZlYXVfc3ZtX2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYz02MzA9bm91dmVhdV9kcm1fZGV2aWNlX2luaXQoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTY3OC1cXHRub3V2ZWF1X2h3bW9uX2luaXQoZGV2KTtcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jOjY3OTpcXHRub3V2ZWF1X3N2bV9pbml0KGRybSk7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYy02ODAtXFx0bm91dmVhdV9kbWVtX2luaXQoZHJtKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmM9MzE2PW5vdXZlYXVfc3ZtbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jLTMyMC1cXHRzdHJ1Y3Qgbm91dmVhdV9zdm1tICpzdm1tO1xcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmM6MzIxOlxcdHN0cnVjdCBkcm1fbm91dmVhdV9zdm1faW5pdCAqYXJncyA9IGRhdGE7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYy0zMjItXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmM9MTAzMz12b2lkXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYzoxMDM0Om5vdXZlYXVfc3ZtX2luaXQoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0pXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYy0xMDM1LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmg9OT1zdHJ1Y3Qgbm91dmVhdV9zdm1tIHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmgtMjAtI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9OT1VWRUFVX1NWTSlcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5oOjIxOnZvaWQgbm91dmVhdV9zdm1faW5pdChzdHJ1Y3Qgbm91dmVhdV9kcm0gKik7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uaC0yMi12b2lkIG5vdXZlYXVfc3ZtX2Zpbmkoc3RydWN0IG5vdXZlYXVfZHJtICopO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uaD0zNT12b2lkIG5vdXZlYXVfcGZuc19tYXAoc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSwgc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5oLTM4LSNlbHNlIC8qIElTX0VOQUJMRUQoQ09ORklHX0RSTV9OT1VWRUFVX1NWTSkgKi9cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5oOjM5OnN0YXRpYyBpbmxpbmUgdm9pZCBub3V2ZWF1X3N2bV9pbml0KHN0cnVjdCBub3V2ZWF1X2RybSAqZHJtKSB7fVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmgtNDAtc3RhdGljIGlubGluZSB2b2lkIG5vdXZlYXVfc3ZtX2Zpbmkoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0pIHt9XFxuLS1cXG5pbmNsdWRlL3VhcGkvZHJtL25vdXZlYXVfZHJtLmg9NDM1PXN0cnVjdCBkcm1fbm91dmVhdV9nZXRfemN1bGxfaW5mbyB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvZHJtL25vdXZlYXVfZHJtLmgtNTE3LVxcbmluY2x1ZGUvdWFwaS9kcm0vbm91dmVhdV9kcm0uaDo1MTg6c3RydWN0IGRybV9ub3V2ZWF1X3N2bV9pbml0IHtcXG5pbmNsdWRlL3VhcGkvZHJtL25vdXZlYXVfZHJtLmgtNTE5LVxcdF9fdTY0IHVubWFuYWdlZF9hZGRyO1xcbi0tXFxuaW5jbHVkZS91YXBpL2RybS9ub3V2ZWF1X2RybS5oPTUyMz1zdHJ1Y3QgZHJtX25vdXZlYXVfc3ZtX2JpbmQge1xcbi0tXFxuaW5jbHVkZS91YXBpL2RybS9ub3V2ZWF1X2RybS5oLTU2Ny1cXG5pbmNsdWRlL3VhcGkvZHJtL25vdXZlYXVfZHJtLmg6NTY4OiNkZWZpbmUgRFJNX0lPQ1RMX05PVVZFQVVfU1ZNX0lOSVQgICAgICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fTk9VVkVBVV9TVk1fSU5JVCwgc3RydWN0IGRybV9ub3V2ZWF1X3N2bV9pbml0KVxcbmluY2x1ZGUvdWFwaS9kcm0vbm91dmVhdV9kcm0uaC01NjktI2RlZmluZSBEUk1fSU9DVExfTk9VVkVBVV9TVk1fQklORCAgICAgICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9OT1VWRUFVX1NWTV9CSU5ELCBzdHJ1Y3QgZHJtX25vdXZlYXVfc3ZtX2JpbmQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU4OjAyLjA3NzcxMTM1NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTY0OTQ4Mzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgUmVhc29uaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgRFJNX0lPQ1RMX05PVVZFQVVfU1ZNX0lOSVRgIHRoaW5nIOKAkyByaWdodCwgaXQncyBhbiBpb2N0bC4gVG8gZXZlbiAqdXNlKiB0aGF0LCBJJ2QgbmVlZCB0byBoYXZlIGEgbm91dmVhdSBkZXZpY2Ugb3Blbi4gVGhhdOKAmXMgdGhlIHN0YXJ0aW5nIHBvaW50LiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gSSBnZXQgYSBub3V2ZWF1IGRldmljZSBvcGVuZWQgaW4gdGhlIGZpcnN0IHBsYWNlLCBldmVuIGlmIHRoZXJlJ3Mgbm8gcGh5c2ljYWwgaGFyZHdhcmU/IE5vLCB0aGF0IHdvbid0IHdvcmssIGJlY2F1c2UgdGhlIGRyaXZlciBwcm9iZSB3aWxsIGVycm9yIG91dCBpZiBpdCBkb2Vzbid0IGZpbmQgYW4gTnZpZGlhIFBDSSBkZXZpY2UuXG5cbkhtbSwgbWF5YmUgdGhlcmUncyBzb21lIGtpbmQgb2Ygc3ludGhldGljIFBDSSBkZXZpY2UgaW5qZWN0aW9uIGluIHRoZSBmdXp6ZXIgdGhhdCBJJ20gb3Zlcmxvb2tpbmc/IE5vcGUsIHN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBnZW5lcmljIFBDSSBmdXp6ZXIgbGlrZSB0aGF0LiBTbyB0aGF0J3Mgb3V0LlxuXG5XYWl0LCBob2xkIG9uLCB3aGF0IGFib3V0IGB0ZXN0X2htbWA/IElzIHRoYXQgcmVsZXZhbnQgaGVyZT8gTGV0IG1lIGNoZWNr4oCmIGFoLCByaWdodCwgYGxpYi90ZXN0X2htbS5jYCBpcyBqdXN0IGEgdGVzdCBtb2R1bGUgZm9yIEhNTS4gT2theSwgZG9lcyB0aGUgcGF0Y2ggaW4gcXVlc3Rpb24gYWN0dWFsbHkgbW9kaWZ5IHRoYXQgZmlsZT8gTm8sIGl0IGRvZXNuJ3QuXG5cbk9rYXksIGxldCdzIGJhY2sgdXAuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSB0b3VjaGluZyBgZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTJfY3R4LmNgLCBgZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uY2AsIGFuZCBtb3N0IGltcG9ydGFudGx5LCBgZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uY2AuXG5cbkFoYSEgYGRybV9ncHVzdm0uY2Ag4oCTIGlzIHRoaXMgZXZlbiByZWxldmFudCB0byBnZXR0aW5nIGEgbm91dmVhdSBkZXZpY2Ugb3Blbj8gSSBzaG91bGQgc2VlIGlmIGBkcm1fZ3B1c3ZtLmNgIGlzIHVzZWQgYnkgYW55dGhpbmcgZWxzZSwgYW5kIGlmIHNvLCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzA1LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU4OjA3LjA0MjY2Mjc1NFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzNDQ2MDM0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcm1fZ3B1c3ZtX1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE1OTIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbi5jbGFuZy1mb3JtYXQ9NzE9Rm9yRWFjaE1hY3JvczpcXG4tLVxcbi5jbGFuZy1mb3JtYXQtMTgyLSAgLSAnZHJtX2dlbV9mb3JfZWFjaF9ncHV2bV9ib19zYWZlJ1xcbi5jbGFuZy1mb3JtYXQ6MTgzOiAgLSAnZHJtX2dwdXN2bV9mb3JfZWFjaF9yYW5nZSdcXG4uY2xhbmctZm9ybWF0LTE4NC0gIC0gJ2RybV9ncHV2YV9mb3JfZWFjaF9vcCdcXG4tLVxcbkRvY3VtZW50YXRpb24vZ3B1L3JmYy9ncHVzdm0ucnN0PTkxPVBvc3NpYmxlIGZ1dHVyZSBkZXNpZ24gZmVhdHVyZXNcXG4tLVxcbkRvY3VtZW50YXRpb24vZ3B1L3JmYy9ncHVzdm0ucnN0LTEwMC0qIFJhbmdlcyB3aXRoIG1peGVkIHN5c3RlbSBhbmQgZGV2aWNlIHBhZ2VzXFxuRG9jdW1lbnRhdGlvbi9ncHUvcmZjL2dwdXN2bS5yc3Q6MTAxOlxcdCogQ2FuIGJlIGFkZGVkIGlmIHJlcXVpcmVkIHRvIGRybV9ncHVzdm1fZ2V0X3BhZ2VzIGZhaXJseSBlYXNpbHkuXFxuRG9jdW1lbnRhdGlvbi9ncHUvcmZjL2dwdXN2bS5yc3QtMTAyLSogTXVsdGktR1BVIHN1cHBvcnRcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0xMDc9b2JqLSQoQ09ORklHX0RSTV9HUFVWTSkgKz0gZHJtX2dwdXZtLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTA4LVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxMDk6ZHJtX2dwdXN2bV9oZWxwZXIteSA6PSBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTExMC1cXHRkcm1fZ3B1c3ZtLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTExOmRybV9ncHVzdm1faGVscGVyLSQoQ09ORklHX1pPTkVfREVWSUNFKSArPSBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTExMi1cXHRkcm1fcGFnZW1hcC5vXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTExNC1cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTE1Om9iai0kKENPTkZJR19EUk1fR1BVU1ZNKSArPSBkcm1fZ3B1c3ZtX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTExNi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTEtICogLSBQYWdlczpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjUyOiAqXFx0c3RydWN0IGRybV9ncHVzdm1fcGFnZXMgaG9sZHMgdGhlIERNQSBtYXBwaW5nIHN0YXRlIGZvciBhIHJhbmdlIG9mXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01My0gKlxcdENQVSB2aXJ0dWFsIGFkZHJlc3NlczogdGhlIERNQSBtYXBwZWQgZGV2aWNlIGFkZHJlc3NlcyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTYtICpcXHRtYXBwaW5ncy5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU3OiAqXFx0QSBkcml2ZXIgZW1iZWRzIG9uZSBvciBtb3JlIHN0cnVjdCBkcm1fZ3B1c3ZtX3BhZ2VzIGFsb25nc2lkZSBpdHNcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU4OiAqXFx0c3RydWN0IGRybV9ncHVzdm1fcmFuZ2UsIGNob29zaW5nIG9uZSBvZiB0d28gbGF5b3V0czpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU5LSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2MDogKlxcdDE6MSAtIG9uZSBkcm1fZ3B1c3ZtX3BhZ2VzIHBlciByYW5nZSAob25lIGRybV9kZXZpY2UpLiBTaW1wbGVzdFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjEtICpcXHRsYXlvdXQ7IHRvIG1pcnJvciBhIFZBIHJhbmdlIG9uIHNldmVyYWwgZGV2aWNlcyBhIGRyaXZlciB1c2VzIGFcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjQtICpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY1OiAqXFx0TjoxIC0gb25lIGRybV9ncHVzdm1fcGFnZXMgcGVyIGRybV9kZXZpY2UsIGFsbCBzaGFyaW5nIG9uZSByYW5nZSBhbmRcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY2LSAqXFx0bm90aWZpZXI7IG9ubHkgdGhlIHBlci1kZXZpY2UgRE1BIG1hcHBpbmcgZGlmZmVycy4gVGhlIGluc3RhbmNlcyBtdXN0XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NzogKlxcdHNpdCBpbiBjb250aWd1b3VzIG1lbW9yeSBzbyBhIHNpbmdsZSBkcm1fZ3B1c3ZtX3JhbmdlX3NldF91bm1hcHBlZCgpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02OC0gKlxcdGNhbiBtYXJrIHRoZW0gYWxsLiBBIGRyaXZlciBjYW4ga2VlcCBvbmUgaW5zdGFuY2UgaW5saW5lIGZvciB0aGUgc2luZ2xlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTc0LSAqXFx0XFx0c3RydWN0IGRyaXZlcl9yYW5nZSB7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo3NTogKlxcdFxcdFxcdHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlIGJhc2U7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03Ni0gKlxcdFxcdFxcdHVuc2lnbmVkIGludCBudW1fcGFnZXM7XFx0Ly8gMTogaW5saW5lX3BhZ2VzLCBcXHUwMDNlMTogcGFnZXNbXVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNzctICpcXHRcXHRcXHR1bmlvbiB7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo3ODogKlxcdFxcdFxcdFxcdHN0cnVjdCBkcm1fZ3B1c3ZtX3BhZ2VzIGlubGluZV9wYWdlcztcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjc5OiAqXFx0XFx0XFx0XFx0c3RydWN0IGRybV9ncHVzdm1fcGFnZXMgKnBhZ2VzO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODAtICpcXHRcXHRcXHR9O1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NC0gKlxcdGFsbG9jYXRvciAoZS5nLiBrY2FsbG9jKG51bV9wYWdlcywgLi4uKSksIGluaXRpYWxpc2VzIGVhY2ggZW50cnkgd2l0aFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODU6ICpcXHRkcm1fZ3B1c3ZtX2luaXRfcGFnZXMoKSwgYW5kIGZyZWVzIGVhY2ggZW50cnkgd2l0aFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODY6ICpcXHRkcm1fZ3B1c3ZtX2ZyZWVfcGFnZXMoKSBwbHVzIHRoZSBhcnJheSBpdHNlbGYsIGZyb20gaXRzIHJhbmdlIGZyZWVcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg3OiAqXFx0Y2FsbGJhY2suIEVhY2ggZHJtX2dwdXN2bV9wYWdlcyBpcyBtYXBwZWQgaW5kZXBlbmRlbnRseSBieSB0aGVpciBvd25cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg4LSAqXFx0ZHJtX2RldmljZS5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg5OiAqXFx0RWFjaCBkcm1fZ3B1c3ZtX3BhZ2VzIG11c3QgYmUgemVyby1pbml0aWFsaXNlZCBhbmQgaW5pdGlhbGlzZWQgd2l0aFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6OTA6ICpcXHRkcm1fZ3B1c3ZtX2luaXRfcGFnZXMoKSwgY2FsbGVkIG9uY2UgcGVyIGVudHJ5LlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTEtICpcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTM1LSAqIGV4Y2VwdCBmb3IgdGhlIHJlY2hlY2sgcmFuZ2UncyBwYWdlcyBiZWluZyB2YWxpZFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTM2OiAqIChkcm1fZ3B1c3ZtX3BhZ2VzX3ZhbGlkKSB3aGVuIHRoZSBkcml2ZXIgaXMgY29tbWl0dGluZyBHUFUgYmluZGluZ3MuXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMzctICogVGhpcyBsb2NrIGNvcnJlc3BvbmRzIHRvIHRoZSBgYGRyaXZlci1cXHUwMDNldXBkYXRlYGAgbG9jayBtZW50aW9uZWQgaW5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTQzLSAqIGxvY2sgdG8gc2FmZWd1YXJkIGNvcmUgR1BVIFNWTSBmdW5jdGlvbiBjYWxscyB0aGF0IG1vZGlmeSBzdGF0ZSwgc3VjaCBhc1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTQ0OiAqIGRybV9ncHVzdm1fcmFuZ2VfZmluZF9vcl9pbnNlcnQgYW5kIGRybV9ncHVzdm1fcmFuZ2VfcmVtb3ZlLiBUaGlzIGxvY2sgaXNcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE0NS0gKiBkZW5vdGVkIGFzICdkcml2ZXJfc3ZtX2xvY2snIGluIGNvZGUgZXhhbXBsZXMuIEZpbmVyIGdyYWluZWQgZHJpdmVyIHNpZGVcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE0Ni0gKiBsb2NraW5nIHNob3VsZCBhbHNvIGJlIHBvc3NpYmxlIGZvciBjb25jdXJyZW50IEdQVSBmYXVsdCBwcm9jZXNzaW5nIHdpdGhpbiBhXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxNDc6ICogc2luZ2xlIEdQVSBTVk0uIFRoZSAnZHJpdmVyX3N2bV9sb2NrJyBjYW4gYmUgdmlhIGRybV9ncHVzdm1fZHJpdmVyX3NldF9sb2NrXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xNDgtICogdG8gYWRkIGFubm90YXRpb25zIHRvIEdQVSBTVk0uXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTE4NC0gKlxcdHN0cnVjdCBkcml2ZXJfcmFuZ2Uge1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTg1OiAqXFx0XFx0c3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgYmFzZTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjE4NjogKlxcdFxcdHN0cnVjdCBkcm1fZ3B1c3ZtX3BhZ2VzIHBhZ2VzO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTg3LSAqXFx0fTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTk0LSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxOTU6ICpcXHRcXHRkcm1fZ3B1c3ZtX25vdGlmaWVyX2xvY2soZ3B1c3ZtKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjE5NjogKlxcdFxcdGlmIChkcm1fZ3B1c3ZtX3BhZ2VzX3ZhbGlkKGdwdXN2bSwgXFx1MDAyNmRyYW5nZS1cXHUwMDNlcGFnZXMpKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTk3LSAqXFx0XFx0XFx0ZHJpdmVyX2NvbW1pdF9iaW5kKGdwdXN2bSwgZHJhbmdlKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTk5LSAqXFx0XFx0XFx0ZXJyID0gLUVBR0FJTjtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjIwMDogKlxcdFxcdGRybV9ncHVzdm1fbm90aWZpZXJfdW5sb2NrKGdwdXN2bSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yMDEtICpcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjA3LSAqXFx0e1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjA4OiAqXFx0XFx0c3RydWN0IGRybV9ncHVzdm1fY3R4IGN0eCA9IHt9O1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjA5LSAqXFx0XFx0c3RydWN0IGRyaXZlcl9yYW5nZSAqZHJhbmdlO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjEwOiAqXFx0XFx0c3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjExLSAqXFx0XFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjE3LSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyMTg6ICpcXHRcXHRyYW5nZSA9IGRybV9ncHVzdm1fcmFuZ2VfZmluZF9vcl9pbnNlcnQoZ3B1c3ZtLCBmYXVsdF9hZGRyLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjE5LSAqXFx0XFx0XFx0XFx0XFx0XFx0XFx0Z3B1dmFfc3RhcnQsIGdwdXZhX2VuZCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjM0LSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyMzU6ICpcXHRcXHRlcnIgPSBkcm1fZ3B1c3ZtX2dldF9wYWdlcyhncHVzdm0sIFxcdTAwMjZkcmFuZ2UtXFx1MDAzZXBhZ2VzLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjM2LSAqXFx0XFx0XFx0XFx0XFx0ICAgZ3B1c3ZtLVxcdTAwM2VtbSwgXFx1MDAyNnJhbmdlLVxcdTAwM2Vub3RpZmllci1cXHUwMDNlbm90aWZpZXIsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyMzc6ICpcXHRcXHRcXHRcXHRcXHQgICBkcm1fZ3B1c3ZtX3JhbmdlX3N0YXJ0KHJhbmdlKSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjIzODogKlxcdFxcdFxcdFxcdFxcdCAgIGRybV9ncHVzdm1fcmFuZ2VfZW5kKHJhbmdlKSwgXFx1MDAyNmN0eCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yMzktICpcXHRcXHRpZiAoZXJyID09IC1FT1BOT1RTVVBQIHx8IGVyciA9PSAtRUZBVUxUIHx8IGVyciA9PSAtRVBFUk0pIHtcXHQvLyBDUFUgbWFwcGluZ3MgY2hhbmdlZFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjQwLSAqXFx0XFx0XFx0aWYgKGVyciA9PSAtRU9QTk9UU1VQUClcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI0MTogKlxcdFxcdFxcdFxcdGRybV9ncHVzdm1fcmFuZ2VfZXZpY3QoZ3B1c3ZtLCByYW5nZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNDItICpcXHRcXHRcXHRnb3RvIHJldHJ5O1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNTktICpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI2MDogKlxcdC8vIFRoZSBkcml2ZXIgb3ducyB0aGUgZHJtX2dwdXN2bV9wYWdlcyBsaWZlY3ljbGUuIG9wcy1cXHUwMDNlcmFuZ2VfZnJlZSBpc1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MjYxOiAqXFx0Ly8gdGhlIGZpbmFsIGZhbGxiYWNrOiBkcm1fZ3B1c3ZtX2ZyZWVfcGFnZXMoKSB1bm1hcHMgYW55XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNjItICpcXHQvLyBsaW5nZXJpbmcgRE1BIG1hcHBpbmcgYW5kIGEgbm8tb3AgaWYgYWxyZWFkeSB1bm1hcHBlZCBhbmQgZnJlZXMgdGhlXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNjMtICpcXHQvLyBkbWFfYWRkciBhcnJheS4gVGhlIG5vcm1hbCBmbG93IGlzIHRvIERNQSB1bm1hcCBiZWZvcmVcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI2NDogKlxcdC8vIGRybV9ncHVzdm1fcmFuZ2VfcmVtb3ZlKCkgKGJlZm9yZSB0aGUgcmFuZ2UgbGVhdmVzIHRoZSB0cmVlKS5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI2NTogKlxcdHZvaWQgZHJpdmVyX3JhbmdlX2ZyZWUoc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKnJhbmdlKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjY2LSAqXFx0e1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNjktICpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI3MDogKlxcdFxcdGRybV9ncHVzdm1fZnJlZV9wYWdlcyhyYW5nZS1cXHUwMDNlZ3B1c3ZtLCBcXHUwMDI2ZHJhbmdlLVxcdTAwM2VwYWdlcyxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI3MTogKlxcdFxcdFxcdFxcdCAgICAgIGRybV9ncHVzdm1fcmFuZ2Vfc2l6ZShyYW5nZSkgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNzItICpcXHRcXHRrZnJlZShkcmFuZ2UpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNzUtICpcXHR2b2lkIF9fZHJpdmVyX2dhcmJhZ2VfY29sbGVjdG9yKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyNzY6ICpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yNzctICpcXHR7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTI4MS0gKlxcdFxcdGlmIChyYW5nZS1cXHUwMDNlZmxhZ3MucGFydGlhbF91bm1hcClcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI4MjogKlxcdFxcdFxcdGRybV9ncHVzdm1fcmFuZ2VfZXZpY3QoZ3B1c3ZtLCByYW5nZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yODMtICpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTI4NC0gKlxcdFxcdGRyaXZlcl91bmJpbmRfcmFuZ2UocmFuZ2UpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6Mjg1OiAqXFx0XFx0Ly8gVGhlIHBhZ2VzIG11c3QgYmUgRE1BIHVubWFwcGVkIGJlZm9yZSBkcm1fZ3B1c3ZtX3JhbmdlX3JlbW92ZSgpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0yODYtICpcXHRcXHQvLyAsIHNvIGEgcmFuZ2UgaXMgbmV2ZXIgb2ZmIHRoZSBNTVUgaW50ZXJ2YWwgdHJlZSB3aGlsZSBzdGlsbCBETUFcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjg5LSAqXFx0XFx0Ly8gZm9yIGRldmljZSBETUEuIFRoaXMgaXMgdGhlIG5vcm1hbCB1bm1hcCBwb2ludC5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI5MDogKlxcdFxcdGRybV9ncHVzdm1fdW5tYXBfcGFnZXMoZ3B1c3ZtLCBcXHUwMDI2ZHJhbmdlLVxcdTAwM2VwYWdlcyxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI5MTogKlxcdFxcdFxcdFxcdCAgICAgICBkcm1fZ3B1c3ZtX3JhbmdlX3NpemUocmFuZ2UpIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoyOTI6ICpcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNihzdHJ1Y3QgZHJtX2dwdXN2bV9jdHgpeyAuaW5fbm90aWZpZXIgPSBmYWxzZSB9KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjI5MzogKlxcdFxcdGRybV9ncHVzdm1fcmFuZ2VfcmVtb3ZlKGdwdXN2bSwgcmFuZ2UpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMjk0LSAqXFx0fVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zMDgtICpcXHR2b2lkIGRyaXZlcl9pbnZhbGlkYXRpb24oc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjMwOTogKlxcdFxcdFxcdFxcdCBzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqbm90aWZpZXIsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zMTAtICpcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqbW11X3JhbmdlKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzExLSAqXFx0e1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzEyOiAqXFx0XFx0c3RydWN0IGRybV9ncHVzdm1fY3R4IGN0eCA9IHsgLmluX25vdGlmaWVyID0gdHJ1ZSwgfTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjMxMzogKlxcdFxcdHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpyYW5nZSA9IE5VTEw7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zMTQtICpcXHRcXHRzdHJ1Y3QgZHJpdmVyX3JhbmdlICpkcmFuZ2U7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTMxNy0gKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzE4OiAqXFx0XFx0ZHJtX2dwdXN2bV9mb3JfZWFjaF9yYW5nZShyYW5nZSwgbm90aWZpZXIsIG1tdV9yYW5nZS1cXHUwMDNlc3RhcnQsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zMTktICpcXHRcXHRcXHRcXHRcXHQgIG1tdV9yYW5nZS1cXHUwMDNlZW5kKSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTMyMS0gKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzIyOiAqXFx0XFx0XFx0ZHJtX2dwdXN2bV91bm1hcF9wYWdlcyhncHVzdm0sIFxcdTAwMjZkcmFuZ2UtXFx1MDAzZXBhZ2VzLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzIzOiAqXFx0XFx0XFx0XFx0XFx0ICAgICAgIGRybV9ncHVzdm1fcmFuZ2Vfc2l6ZShyYW5nZSkgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVCxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTMyNC0gKlxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2Y3R4KTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzI4LSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozMjk6ICpcXHRcXHRcXHRkcm1fZ3B1c3ZtX3JhbmdlX3NldF91bm1hcHBlZChyYW5nZSwgXFx1MDAyNmRyYW5nZS1cXHUwMDNlcGFnZXMsIDEsIG1tdV9yYW5nZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zMzAtICpcXHRcXHRcXHRkcml2ZXJfZ2FyYmFnZV9jb2xsZWN0b3JfYWRkKGdwdXN2bSwgcmFuZ2UpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYz0zNDg9bnBhZ2VzX2luX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNTMtLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozNTQ6ICogZHJtX2dwdXN2bV9ub3RpZmllcl9maW5kKCkgLSBGaW5kIEdQVSBTVk0gbm90aWZpZXIgZnJvbSBHUFUgU1ZNXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNTUtICogQGdwdXN2bTogUG9pbnRlciB0byB0aGUgR1BVIFNWTSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTM1OC0gKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzU5OiAqIFJldHVybjogQSBwb2ludGVyIHRvIHRoZSBkcm1fZ3B1c3ZtX25vdGlmaWVyIGlmIGZvdW5kIG9yIE5VTExcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTM2MC0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjM2MTpzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozNjI6ZHJtX2dwdXN2bV9ub3RpZmllcl9maW5kKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNjMtXFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgZW5kKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNjktXFx0aWYgKGl0cmVlKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzcwOlxcdFxcdHJldHVybiBjb250YWluZXJfb2YoaXRyZWUsIHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyLCBpdHJlZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNzEtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNzMtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6Mzc0OkVYUE9SVF9TWU1CT0xfR1BMKGRybV9ncHVzdm1fbm90aWZpZXJfZmluZCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNzUtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNzYtLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozNzc6ICogZHJtX2dwdXN2bV9yYW5nZV9maW5kKCkgLSBGaW5kIEdQVSBTVk0gcmFuZ2UgZnJvbSBHUFUgU1ZNIG5vdGlmaWVyXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zNzgtICogQG5vdGlmaWVyOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIG5vdGlmaWVyIHN0cnVjdHVyZS5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzgxLSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzozODI6ICogUmV0dXJuOiBBIHBvaW50ZXIgdG8gdGhlIGRybV9ncHVzdm1fcmFuZ2UgaWYgZm91bmQgb3IgTlVMTFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzgzLSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6Mzg0OnN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjM4NTpkcm1fZ3B1c3ZtX3JhbmdlX2ZpbmQoc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMzg2LVxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgZW5kKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zOTItXFx0aWYgKGl0cmVlKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MzkzOlxcdFxcdHJldHVybiBjb250YWluZXJfb2YoaXRyZWUsIHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlLCBpdHJlZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zOTQtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zOTYtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6Mzk3OkVYUE9SVF9TWU1CT0xfR1BMKGRybV9ncHVzdm1fcmFuZ2VfZmluZCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zOTgtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0zOTktLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0MDA6ICogZHJtX2dwdXN2bV9ub3RpZmllcl9pbnZhbGlkYXRlKCkgLSBJbnZhbGlkYXRlIGEgR1BVIFNWTSBub3RpZmllci5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQwMS0gKiBAbW5pOiBQb2ludGVyIHRvIHRoZSBtbXVfaW50ZXJ2YWxfbm90aWZpZXIgc3RydWN0dXJlLlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYz00MTE9c3RhdGljIGJvb2xcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjQxMjpkcm1fZ3B1c3ZtX25vdGlmaWVyX2ludmFsaWRhdGUoc3RydWN0IG1tdV9pbnRlcnZhbF9ub3RpZmllciAqbW5pLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDEzLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICptbXVfcmFuZ2UsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQxNS17XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0MTY6XFx0c3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyID1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQxNy1cXHRcXHRjb250YWluZXJfb2YobW5pLCB0eXBlb2YoKm5vdGlmaWVyKSwgbm90aWZpZXIpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00MzEtLypcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjQzMjogKiBkcm1fZ3B1c3ZtX25vdGlmaWVyX29wcyAtIE1NVSBpbnRlcnZhbCBub3RpZmllciBvcGVyYXRpb25zIGZvciBHUFUgU1ZNXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00MzMtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0MzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90aWZpZXJfb3BzIGRybV9ncHVzdm1fbm90aWZpZXJfb3BzID0ge1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDM1OlxcdC5pbnZhbGlkYXRlID0gZHJtX2dwdXN2bV9ub3RpZmllcl9pbnZhbGlkYXRlLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDM2LX07XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQzOC0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjQzOTogKiBkcm1fZ3B1c3ZtX2luaXQoKSAtIEluaXRpYWxpemUgdGhlIEdQVSBTVk0uXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00NDAtICogQGdwdXN2bTogUG9pbnRlciB0byB0aGUgR1BVIFNWTSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ1My0gKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDU0OiAqIE5vdGU6IElmIG9ubHkgdXNpbmcgdGhlIHNpbXBsZSBkcm1fZ3B1c3ZtX3BhZ2VzIEFQSSAoZ2V0L3VubWFwL2ZyZWUpLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDU1LSAqIHRoZW4gb25seSBAZ3B1c3ZtIGFuZCBAbmFtZSBhcmUgZXhwZWN0ZWQuIFRoZSBAZHJtIGRybV9kZXZpY2UgZm9yIGRtYVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDU2OiAqIG1hcHBpbmdzIGlzIGJvdW5kIHBlci1wYWdlcyB2aWEgZHJtX2dwdXN2bV9pbml0X3BhZ2VzKCkgYmVmb3JlIHRoZSBmaXJzdFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDU3OiAqIGRybV9ncHVzdm1fZ2V0X3BhZ2VzKCkgY2FsbC4gSG93ZXZlciwgdGhlIHNhbWUgYmFzZVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDU4LSAqIEBncHVzdm0gY2FuIGFsc28gYmUgdXNlZCB3aXRoIGJvdGggbW9kZXMgdG9nZXRoZXIgaW4gd2hpY2ggY2FzZSB0aGUgZnVsbFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDU5OiAqIHNldHVwIGlzIG5lZWRlZCwgd2hlcmUgdGhlIGNvcmUgZHJtX2dwdXN2bV9wYWdlcyBBUEkgd2lsbCBzaW1wbHkgbmV2ZXIgdXNlXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy00NjAtICogdGhlIG90aGVyIGZpZWxkcy5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDYzLSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDY0OmludCBkcm1fZ3B1c3ZtX2luaXQoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ2NS1cXHRcXHQgICAgY29uc3QgY2hhciAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDY4LVxcdFxcdCAgICB1bnNpZ25lZCBsb25nIG5vdGlmaWVyX3NpemUsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo0Njk6XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBkcm1fZ3B1c3ZtX29wcyAqb3BzLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNDcwLVxcdFxcdCAgICBjb25zdCB1bnNpZ25lZCBsb25nICpjaHVua19zaXplcywgaW50IG51bV9jaHVua3MpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ3Ni1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NDc3OlxcdFxcdC8qIE5vIGZ1bGwgU1ZNIG1vZGUsIG9ubHkgY29yZSBkcm1fZ3B1c3ZtX3BhZ2VzIEFQSS4gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTQ3OC1cXHRcXHRpZiAob3BzIHx8IG51bV9jaHVua3MgfHwgbW1fcmFuZ2UgfHwgbm90aWZpZXJfc2l6ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTA1LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjUwNjpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ3B1c3ZtX2luaXQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTA3LVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTA4LS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTA5OiAqIHRvX2RybV9ncHVzdm1fbm90aWZpZXIoKSAtIHJldHJpZXZlIHRoZSBjb250YWluZXIgc3RydWN0IGZvciBhIGdpdmVuIHJidHJlZSBub2RlXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1MTA6ICogQG5vZGU6IGEgcG9pbnRlciB0byB0aGUgcmJ0cmVlIG5vZGUgZW1iZWRkZWQgd2l0aGluIGEgZHJtX2dwdXN2bV9ub3RpZmllciBzdHJ1Y3RcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTUxMS0gKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTEyOiAqIFJldHVybjogQSBwb2ludGVyIHRvIHRoZSBjb250YWluaW5nIGRybV9ncHVzdm1fbm90aWZpZXIgc3RydWN0dXJlLlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTEzLSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTE0OnN0YXRpYyBzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqdG9fZHJtX2dwdXN2bV9ub3RpZmllcihzdHJ1Y3QgcmJfbm9kZSAqbm9kZSlcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTUxNS17XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1MTY6XFx0cmV0dXJuIGNvbnRhaW5lcl9vZihub2RlLCBzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciwgaXRyZWUucmIpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTE3LX1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTE5LS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTIwOiAqIGRybV9ncHVzdm1fbm90aWZpZXJfaW5zZXJ0KCkgLSBJbnNlcnQgR1BVIFNWTSBub3RpZmllclxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTIxLSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTUyNS0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjUyNjpzdGF0aWMgdm9pZCBkcm1fZ3B1c3ZtX25vdGlmaWVyX2luc2VydChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTI3OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqbm90aWZpZXIpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01Mjgte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01MzUtXFx0aWYgKG5vZGUpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1MzY6XFx0XFx0aGVhZCA9IFxcdTAwMjYodG9fZHJtX2dwdXN2bV9ub3RpZmllcihub2RlKSktXFx1MDAzZWVudHJ5O1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTM3LVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTQzLS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTQ0OiAqIGRybV9ncHVzdm1fbm90aWZpZXJfcmVtb3ZlKCkgLSBSZW1vdmUgR1BVIFNWTSBub3RpZmllclxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTQ1LSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTQ5LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTUwOnN0YXRpYyB2b2lkIGRybV9ncHVzdm1fbm90aWZpZXJfcmVtb3ZlKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1NTE6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpub3RpZmllcilcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU1Mi17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU1Ny0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU1ODogKiBkcm1fZ3B1c3ZtX2ZpbmkoKSAtIEZpbmFsaXplIHRoZSBHUFUgU1ZNLlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTU5LSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlLlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01NjMtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1NjQ6dm9pZCBkcm1fZ3B1c3ZtX2Zpbmkoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSlcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU2NS17XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1NjY6XFx0c3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyLCAqbmV4dDtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU2Ny1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU2ODpcXHRkcm1fZ3B1c3ZtX2Zvcl9lYWNoX25vdGlmaWVyX3NhZmUobm90aWZpZXIsIG5leHQsIGdwdXN2bSwgMCwgTE9OR19NQVgpIHtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU2OTpcXHRcXHRzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UsICpfX25leHQ7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01NzAtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU3Ni1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU3NzpcXHRcXHRkcm1fZ3B1c3ZtX2Zvcl9lYWNoX3JhbmdlX3NhZmUocmFuZ2UsIF9fbmV4dCwgbm90aWZpZXIsIDAsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01NzgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIExPTkdfTUFYKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTc5OlxcdFxcdFxcdGRybV9ncHVzdm1fcmFuZ2VfcmVtb3ZlKGdwdXN2bSwgcmFuZ2UpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTgwLVxcdH1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTg1LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU4NjpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ3B1c3ZtX2ZpbmkpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTg3LVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNTg4LS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NTg5OiAqIGRybV9ncHVzdm1fbm90aWZpZXJfYWxsb2MoKSAtIEFsbG9jYXRlIEdQVSBTVk0gbm90aWZpZXJcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU5MC0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy01OTYtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo1OTc6c3RhdGljIHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjU5ODpkcm1fZ3B1c3ZtX25vdGlmaWVyX2FsbG9jKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sIHVuc2lnbmVkIGxvbmcgZmF1bHRfYWRkcilcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTU5OS17XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2MDA6XFx0c3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjAxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02MjAtLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2MjE6ICogZHJtX2dwdXN2bV9ub3RpZmllcl9mcmVlKCkgLSBGcmVlIEdQVSBTVk0gbm90aWZpZXJcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTYyMi0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02MjYtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2Mjc6c3RhdGljIHZvaWQgZHJtX2dwdXN2bV9ub3RpZmllcl9mcmVlKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2Mjg6XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqbm90aWZpZXIpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02Mjkte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02MzgtLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2Mzk6ICogdG9fZHJtX2dwdXN2bV9yYW5nZSgpIC0gcmV0cmlldmUgdGhlIGNvbnRhaW5lciBzdHJ1Y3QgZm9yIGEgZ2l2ZW4gcmJ0cmVlIG5vZGVcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY0MDogKiBAbm9kZTogYSBwb2ludGVyIHRvIHRoZSByYnRyZWUgbm9kZSBlbWJlZGRlZCB3aXRoaW4gYSBkcm1fZ3B1c3ZtX3JhbmdlIHN0cnVjdFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjQxLSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NDI6ICogUmV0dXJuOiBBIHBvaW50ZXIgdG8gdGhlIGNvbnRhaW5pbmcgZHJtX2dwdXN2bV9yYW5nZSBzdHJ1Y3R1cmUuXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NDMtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NDQ6c3RhdGljIHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICp0b19kcm1fZ3B1c3ZtX3JhbmdlKHN0cnVjdCByYl9ub2RlICpub2RlKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjQ1LXtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY0NjpcXHRyZXR1cm4gY29udGFpbmVyX29mKG5vZGUsIHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlLCBpdHJlZS5yYik7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NDctfVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NDktLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NTA6ICogZHJtX2dwdXN2bV9yYW5nZV9pbnNlcnQoKSAtIEluc2VydCBHUFUgU1ZNIHJhbmdlXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NTEtICogQG5vdGlmaWVyOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIG5vdGlmaWVyIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NTUtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NTY6c3RhdGljIHZvaWQgZHJtX2dwdXN2bV9yYW5nZV9pbnNlcnQoc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NjU3OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NTgte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NjEtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NjI6XFx0ZHJtX2dwdXN2bV9ub3RpZmllcl9sb2NrKG5vdGlmaWVyLVxcdTAwM2VncHVzdm0pO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjYzLVxcdGludGVydmFsX3RyZWVfaW5zZXJ0KFxcdTAwMjZyYW5nZS1cXHUwMDNlaXRyZWUsIFxcdTAwMjZub3RpZmllci1cXHUwMDNlcm9vdCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY2Ni1cXHRpZiAobm9kZSlcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY2NzpcXHRcXHRoZWFkID0gXFx1MDAyNih0b19kcm1fZ3B1c3ZtX3JhbmdlKG5vZGUpKS1cXHUwMDNlZW50cnk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NjgtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NzEtXFx0bGlzdF9hZGQoXFx1MDAyNnJhbmdlLVxcdTAwM2VlbnRyeSwgaGVhZCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NzI6XFx0ZHJtX2dwdXN2bV9ub3RpZmllcl91bmxvY2sobm90aWZpZXItXFx1MDAzZWdwdXN2bSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NzMtfVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02NzUtLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2NzY6ICogX19kcm1fZ3B1c3ZtX3JhbmdlX3JlbW92ZSgpIC0gUmVtb3ZlIEdQVSBTVk0gcmFuZ2VcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY3Ny0gKiBAbm90aWZpZXI6IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gbm90aWZpZXIgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTY4MS0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY4MjpzdGF0aWMgdm9pZCBfX2RybV9ncHVzdm1fcmFuZ2VfcmVtb3ZlKHN0cnVjdCBkcm1fZ3B1c3ZtX25vdGlmaWVyICpub3RpZmllcixcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjY4MzpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02ODQte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy02ODktLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo2OTA6ICogZHJtX2dwdXN2bV9yYW5nZV9hbGxvYygpIC0gQWxsb2NhdGUgR1BVIFNWTSByYW5nZVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNjkxLSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTcwMC0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjcwMTpzdGF0aWMgc3RydWN0IGRybV9ncHVzdm1fcmFuZ2UgKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NzAyOmRybV9ncHVzdm1fcmFuZ2VfYWxsb2Moc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjcwMzpcXHRcXHQgICAgICAgc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNzA0LVxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIGZhdWx0X2FkZHIsIHVuc2lnbmVkIGxvbmcgY2h1bmtfc2l6ZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNzA2LXtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjcwNzpcXHRzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2U7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy03MDgtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTcyOC0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjcyOTogKiBkcm1fZ3B1c3ZtX2htbV9wZm5fdG9fb3JkZXIoKSAtIEdldCB0aGUgbGFyZ2VzdCBDUFUgbWFwcGluZyBvcmRlci5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTczMC0gKiBAaG1tX3BmbjogVGhlIGN1cnJlbnQgaG1tX3Bmbi5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNzQxLSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6NzQyOnN0YXRpYyB1bnNpZ25lZCBpbnQgZHJtX2dwdXN2bV9obW1fcGZuX3RvX29yZGVyKHVuc2lnbmVkIGxvbmcgaG1tX3BmbixcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTc0My1cXHRcXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIGhtbV9wZm5faW5kZXgsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTc1Ny0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjc1ODogKiBkcm1fZ3B1c3ZtX2NoZWNrX3BhZ2VzKCkgLSBDaGVjayBwYWdlc1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNzU5LSAqIEBncHVzdm06IFBvaW50ZXIgdG8gdGhlIEdQVSBTVk0gc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTc2OS0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjc3MDpzdGF0aWMgYm9vbCBkcm1fZ3B1c3ZtX2NoZWNrX3BhZ2VzKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0sXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo3NzE6XFx0XFx0XFx0XFx0ICAgc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtNzcyLVxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04MTYtXFx0XFx0fVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODE3OlxcdFxcdGkgKz0gMHgxIFxcdTAwM2NcXHUwMDNjIGRybV9ncHVzdm1faG1tX3Bmbl90b19vcmRlcihwZm5zW2ldLCBpLCBucGFnZXMpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODE4LVxcdH1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODI1LS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODI2OiAqIGRybV9ncHVzdm1fc2Nhbl9tbSgpIC0gQ2hlY2sgdGhlIG1pZ3JhdGlvbiBzdGF0ZSBvZiBhIGRybV9ncHVzdm1fcmFuZ2VcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjgyNzogKiBAcmFuZ2U6IFBvaW50ZXIgdG8gdGhlIHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlIHRvIGNoZWNrLlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODI4LSAqIEBkZXZfcHJpdmF0ZV9vd25lcjogVGhlIHN0cnVjdCBkZXZfcHJpdmF0ZV9vd25lciB0byB1c2UgdG8gZGV0ZXJtaW5lXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTgzOC0gKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODM5OiAqIFJldHVybjogU2VlIFxcdTAwMjZlbnVtIGRybV9ncHVzdm1fc2Nhbl9yZXN1bHQuXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NDAtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo4NDE6ZW51bSBkcm1fZ3B1c3ZtX3NjYW5fcmVzdWx0IGRybV9ncHVzdm1fc2Nhbl9tbShzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2UsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NDItXFx0XFx0XFx0XFx0XFx0ICAgICAgIHZvaWQgKmRldl9wcml2YXRlX293bmVyLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NDUtXFx0c3RydWN0IG1tdV9pbnRlcnZhbF9ub3RpZmllciAqbm90aWZpZXIgPSBcXHUwMDI2cmFuZ2UtXFx1MDAzZW5vdGlmaWVyLVxcdTAwM2Vub3RpZmllcjtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg0NjpcXHR1bnNpZ25lZCBsb25nIHN0YXJ0ID0gZHJtX2dwdXN2bV9yYW5nZV9zdGFydChyYW5nZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo4NDc6XFx0dW5zaWduZWQgbG9uZyBlbmQgPSBkcm1fZ3B1c3ZtX3JhbmdlX2VuZChyYW5nZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NDgtXFx0c3RydWN0IGhtbV9yYW5nZSBobW1fcmFuZ2UgPSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg1NS1cXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODU2OlxcdGVudW0gZHJtX2dwdXN2bV9zY2FuX3Jlc3VsdCBzdGF0ZSA9IERSTV9HUFVTVk1fU0NBTl9VTlBPUFVMQVRFRCwgbmV3X3N0YXRlO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODU3LVxcdHVuc2lnbmVkIGxvbmcgKnBmbnM7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTg3Mi1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjg3MzpcXHRkcm1fZ3B1c3ZtX25vdGlmaWVyX2xvY2socmFuZ2UtXFx1MDAzZWdwdXN2bSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy04NzQtXFx0aWYgKG1tdV9pbnRlcnZhbF9yZWFkX3JldHJ5KG5vdGlmaWVyLCBobW1fcmFuZ2Uubm90aWZpZXJfc2VxKSkge1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6ODc1OlxcdFxcdGRybV9ncHVzdm1fbm90aWZpZXJfdW5sb2NrKHJhbmdlLVxcdTAwM2VncHVzdm0pO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtODc2LVxcdFxcdGdvdG8gcmV0cnk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTkxOC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjkxOTpcXHRcXHRpICs9IDF1bCBcXHUwMDNjXFx1MDAzYyBkcm1fZ3B1c3ZtX2htbV9wZm5fdG9fb3JkZXIocGZuc1tpXSwgaSwgbnBhZ2VzKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTkyMC1cXHR9XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05MjEtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5MjI6XFx0ZHJtX2dwdXN2bV9ub3RpZmllcl91bmxvY2socmFuZ2UtXFx1MDAzZWdwdXN2bSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05MjMtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTkyNy19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5Mjg6RVhQT1JUX1NZTUJPTChkcm1fZ3B1c3ZtX3NjYW5fbW0pO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTI5LVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTMwLS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6OTMxOiAqIGRybV9ncHVzdm1fcmFuZ2VfY2h1bmtfc2l6ZSgpIC0gRGV0ZXJtaW5lIGNodW5rIHNpemUgZm9yIEdQVSBTVk0gcmFuZ2VcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTkzMi0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYz05NDc9c3RhdGljIHVuc2lnbmVkIGxvbmdcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjk0ODpkcm1fZ3B1c3ZtX3JhbmdlX2NodW5rX3NpemUoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjk0OTpcXHRcXHRcXHQgICAgc3RydWN0IGRybV9ncHVzdm1fbm90aWZpZXIgKm5vdGlmaWVyLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTUwLVxcdFxcdFxcdCAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZhcyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTY1LVxcdFxcdGlmIChzdGFydCBcXHUwMDNlPSB2YXMtXFx1MDAzZXZtX3N0YXJ0IFxcdTAwMjZcXHUwMDI2IGVuZCBcXHUwMDNjPSB2YXMtXFx1MDAzZXZtX2VuZCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6OTY2OlxcdFxcdCAgICBzdGFydCBcXHUwMDNlPSBkcm1fZ3B1c3ZtX25vdGlmaWVyX3N0YXJ0KG5vdGlmaWVyKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6OTY3OlxcdFxcdCAgICBlbmQgXFx1MDAzYz0gZHJtX2dwdXN2bV9ub3RpZmllcl9lbmQobm90aWZpZXIpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05NjgtXFx0XFx0ICAgIHN0YXJ0IFxcdTAwM2U9IGdwdXZhX3N0YXJ0IFxcdTAwMjZcXHUwMDI2IGVuZCBcXHUwMDNjPSBncHV2YV9lbmQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTk3OS1cXHRpZiAoZW5kIC0gc3RhcnQgIT0gU1pfNEspIHtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjk4MDpcXHRcXHRzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqcmFuZ2U7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05ODEtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzo5ODI6XFx0XFx0cmFuZ2UgPSBkcm1fZ3B1c3ZtX3JhbmdlX2ZpbmQobm90aWZpZXIsIHN0YXJ0LCBlbmQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtOTgzLVxcdFxcdGlmIChyYW5nZSkge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy05OTQtXFx0XFx0ICogZHJtX3BhZ2VtYXBfbWlncmF0ZV90b19kZXZtZW0gd2l0aCAnbWlncmF0ZS5jcGFnZXMgIT0gbnBhZ2VzJ1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6OTk1OlxcdFxcdCAqIGFuZCB0aGVuIHVwb24gZHJtX2dwdXN2bV9nZXRfcGFnZXMgZGV2aWNlIHBhZ2VzIGZyb21cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTk5Ni1cXHRcXHQgKiBvdGhlciBwcm9jZXNzZXMgYXJlIGNvbGxlY3RlZCArIGZhdWx0ZWQgaW4gd2hpY2ggY3JlYXRlcyBhbGxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTAwMS1cXHRcXHRpZiAoZW5kIC0gc3RhcnQgXFx1MDAzYz0gY2hlY2tfcGFnZXNfdGhyZXNob2xkIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDAyOlxcdFxcdCAgICAhZHJtX2dwdXN2bV9jaGVja19wYWdlcyhncHVzdm0sIG5vdGlmaWVyLCBzdGFydCwgZW5kLCBkZXZfcHJpdmF0ZV9vd25lcikpIHtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMDMtXFx0XFx0XFx0KytpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDEyLS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTAxMzogKiBkcm1fZ3B1c3ZtX2RyaXZlcl9sb2NrX2hlbGQoKSAtIEFzc2VydCBHUFUgU1ZNIGRyaXZlciBsb2NrIGlzIGhlbGRcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMTQtICogQGdwdXN2bTogUG9pbnRlciB0byB0aGUgR1BVIFNWTSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMTctICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDE4OnN0YXRpYyB2b2lkIGRybV9ncHVzdm1fZHJpdmVyX2xvY2tfaGVsZChzdHJ1Y3QgZHJtX2dwdXN2bSAqZ3B1c3ZtKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTAxOS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMjMtI2Vsc2VcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEwMjQ6c3RhdGljIHZvaWQgZHJtX2dwdXN2bV9kcml2ZXJfbG9ja19oZWxkKHN0cnVjdCBkcm1fZ3B1c3ZtICpncHVzdm0pXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDI1LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTAyOS0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEwMzA6ICogZHJtX2dwdXN2bV9maW5kX3ZtYV9zdGFydCgpIC0gRmluZCBzdGFydCBhZGRyZXNzIGZvciBmaXJzdCBWTUEgaW4gcmFuZ2VcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwMzEtICogQGdwdXN2bTogUG9pbnRlciB0byB0aGUgR1BVIFNWTSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM9MTAzOD11bnNpZ25lZCBsb25nXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDM5OmRybV9ncHVzdm1fZmluZF92bWFfc3RhcnQoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwNDAtXFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDYwLX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEwNjE6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dwdXN2bV9maW5kX3ZtYV9zdGFydCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDYyLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTA2My0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jOjEwNjQ6ICogZHJtX2dwdXN2bV9yYW5nZV9maW5kX29yX2luc2VydCgpIC0gRmluZCBvciBpbnNlcnQgR1BVIFNWTSByYW5nZVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMtMTA2NS0gKiBAZ3B1c3ZtOiBQb2ludGVyIHRvIHRoZSBHUFUgU1ZNIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDc1LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTA3NjpzdHJ1Y3QgZHJtX2dwdXN2bV9yYW5nZSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDc3OmRybV9ncHVzdm1fcmFuZ2VfZmluZF9vcl9pbnNlcnQoc3RydWN0IGRybV9ncHVzdm0gKmdwdXN2bSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwNzgtXFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBmYXVsdF9hZGRyLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDgwLVxcdFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgZ3B1dmFfZW5kLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTA4MTpcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgZHJtX2dwdXN2bV9jdHggKmN0eClcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwODIte1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTA4MzpcXHRzdHJ1Y3QgZHJtX2dwdXN2bV9ub3RpZmllciAqbm90aWZpZXI7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMDg0OlxcdHN0cnVjdCBkcm1fZ3B1c3ZtX3JhbmdlICpyYW5nZTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwODUtXFx0c3RydWN0IG1tX3N0cnVjdCAqbW0gPSBncHVzdm0tXFx1MDAzZW1tO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYy0xMDkxLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmM6MTA5MjpcXHRkcm1fZ3B1c3ZtX2RyaXZlcl9sb2NrX2hlbGQoZ3B1c3ZtKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTEwOTMtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dwdXN2bS5jLTExMDAtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9ncHVzdm0uYzoxMTAxOlxcdG5vdGlmaWVyID0gZHJtX2dwdXN2bV9ub3RpZmllcl9maW5kKGdwdXN2bSwgZmF1bHRfYWRkciwgZmF1bHRfYWRkciArIDEpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODowOC44NzcxMzIxOTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk2MzAwMzg2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIGBkcm1fZ3B1c3ZtLmNgOiBBIFBvdGVudGlhbCBUYXJnZXQ/KipcblxuQWxyaWdodCwgbGV0J3MgdGhpbmsgdGhpcyB0aHJvdWdoLiBgZHJtX2dwdXN2bS5jYCBpcyBhIGdlbmVyaWMgbGlicmFyeSwgYW5kIEknbSBhbHdheXMgb24gdGhlIGxvb2tvdXQgZm9yIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMuIFRoZSBwYXRjaCBtZW50aW9ucyBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gTm93LCBpZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgd2l0aGluIGBkcm1fZ3B1c3ZtX2dldF9wYWdlc2AsIGBkcm1fZ3B1c3ZtX3JhbmdlX2V2aWN0YCwgYGRybV9ncHVzdm1fc2Nhbl9tbWAsIGBhaWUyX3BvcHVsYXRlX3JhbmdlYCwgb3IgYG5vdXZlYXVfcmFuZ2VfZmF1bHRgLCBpdCBtaWdodCBiZSByZWFjaGFibGUuXG5cblNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBjYWxsIGNoYWluLiBDYW4gd2UgaGl0IGBkcm1fZ3B1c3ZtX2dldF9wYWdlc2A/IEdvb2QsIGl0J3MgZXhwb3J0ZWQgYW5kIHRoZSBgeGVgIGRyaXZlciB1c2VzIGl0LiAgT2theSwgdGhhdCdzIGEgcG9zaXRpdmUgc2lnbmFsLiBXaGF0IGFib3V0IGBub3V2ZWF1X3JhbmdlX2ZhdWx0YD8gWWVwLCB0aGUgYG5vdXZlYXVgIGRyaXZlciBoaXRzIHRoYXQuIEFuZCBmaW5hbGx5LCBgYWllMl9wb3B1bGF0ZV9yYW5nZWA/IFRoaXMgaXMgdXNlZCBieSB0aGUgYGFtZHhkbmFgIGRyaXZlciwgSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuXG5cbldhaXQgYSBzZWNvbmQuLi4gYGFtZHhkbmFgPyBUaGF0J3MgdGhlIG5ldyBkcml2ZXIgaW4gYGRyaXZlcnMvYWNjZWwvYW1keGRuYS9gLiBIbW1tLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nOiBpcyB0aGF0IGRyaXZlciBldmVuIGVuYWJsZWQgaW4gc3l6a2FsbGVyPyBMZXQncyBxdWlja2x5IHZlcmlmeSBpZiBgQ09ORklHX0RSTV9BTURYRE5BYCBpcyBldmVuIGRlZmluZWQuIFRoYXQncyBhIGNydWNpYWwgZmlyc3Qgc3RlcCBiZWZvcmUgZGVkaWNhdGluZyB0aW1lIHRvIHRoaXMgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgYXZlbnVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjQzNSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODoxMy44NDAxMzk1M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4MTc5NDY3NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9BTURYRE5BXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODoxNS43MjE5NDA0NTZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIxNzIzMzYxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBBTUQgWEROQSBBY2NlbGVyYXRvciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBBTUQgWEROQSBhY2NlbGVyYXRvciBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGlzIHN5c3RlbS4gTXkgZmlyc3Qgc3RlcCBpcyB0byBkaXZlIHJpZ2h0IGludG8gdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBkcml2ZXIuIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGRyaXZlcnMvYWNjZWwvYW1keGRuYS9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgdGhlIHNldHRpbmdzLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgWEROQSBkcml2ZXIuIFRoaXMgZmlsZSB3aWxsIGxpa2VseSB0ZWxsIG1lIGhvdyB0byBlbmFibGUgaXQsIHdoYXQgb3RoZXIgY29tcG9uZW50cyBpdCByZWxpZXMgb24sIGFuZCBwb3RlbnRpYWxseSB3aGF0IGZlYXR1cmVzIGNhbiBiZSB0b2dnbGVkLiBJJ20gaG9waW5nIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGludGVncmF0aW9uIGFuZCBvcHRpb25zIGZyb20gdGhpcyBLY29uZmlnLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzAzMCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU4OjE4LjkzOTE3NjQ5OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIwNTQzMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYWNjZWwvYW1keGRuYS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYWNjZWwvYW1keGRuYS9LY29uZmlnLTItXFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL0tjb25maWc6Mzpjb25maWcgRFJNX0FDQ0VMX0FNRFhETkFcXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvS2NvbmZpZy00LVxcdHRyaXN0YXRlIFxcXCJBTUQgQUkgRW5naW5lXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODoxOS4wMDEyMzYyMTNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzExNzU4MTI2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIGEgRFJNIEFjY2VsZXJhdG9yKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYENPTkZJR19EUk1fQUNDRUxfQU1EWEROQWAuIENhbiBJIGV2ZW4gdGVzdCB0aGlzIGluIGEgVk0/IFByb2JhYmx5IG5vdCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUsIHJpZ2h0PyBCdXQgaG9sZCBvbi4uLiBzeXprYWxsZXIgZnV6emVzIERSTSBkcml2ZXJzIGJ5IG9wZW5pbmcgYC9kZXYvZHJpL3JlbmRlckQqYC4gSWYgdGhlIGRldmljZSBpc24ndCBwcmVzZW50LCB0aGF0IG9wZW4gd2lsbCBqdXN0IGZhaWwuIEhtbSwgc3l6a2FsbGVyIGhhcyBmdW5jdGlvbnMgbGlrZSBgc3l6X3VzYl9jb25uZWN0YCBhbmQgYHN5el92aGNpXy4uLmAgZm9yIFVTQiBhbmQgV2ktRmkgKGBzeXpfODAyMTFfLi4uYCkuIEJ1dCB3aGF0IGFib3V0IFBDST8gTm8gZGlyZWN0IGdlbmVyaWMgUENJIGRldmljZSBpbmplY3Rpb24gZnVuY3Rpb24gaW4gc3l6a2FsbGVyLlxuXG5Db3VsZCBJIHVzZSBzb21ldGhpbmcgbGlrZSBgdmttc2Agb3IgYHZnZW1gPyBObywgdGhvc2UgYXJlIHNlcGFyYXRlIGRyaXZlcnMuIFdhaXQsIGRvZXNuJ3Qgc3l6a2FsbGVyIGhhdmUgYSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBjYWxsPyBOb3BlLCBpdCBkb2Vzbid0LiBCdXQgdGhpcyBwYXRjaCBpbnZvbHZlcyBgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXRgLCB3aGljaCBpcyBhIGNvcmUgTU0vSE1NIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggZml4ZXMgaXRzIHVzYWdlIGFjcm9zcyB0aHJlZSBkcml2ZXJzLiBJcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZyBpZiB0aGUgY29kZSBpcyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJZiBpdCdzIG5vdCBmdXphYmxlIGluIGEgVk0sIEkgc2hvdWxkIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuTGV0J3MgY2hlY2sgaWYgTm91dmVhdSBjYW4gYmUgcHJvYmVkIHdpdGhvdXQgaGFyZHdhcmUuIE5vLCBpdCBpcyBhIFBDSSBkcml2ZXIuIFRoZW4gSSBzaG91bGQgY2hlY2sgYHhlYCBhbmQgYGFtZHhkbmFgLiBObywgYm90aCBQQ0kuIFdhaXQsIGRvZXNuJ3Qgc3l6a2FsbGVyIGhhdmUgYSBgc3l6X3BjaV9kZXZpY2VfYWRkYCBjYWxsPyBOb3BlLiBIb2xkIG9uLCBkb2Vzbid0IHN5emthbGxlciB1c2UgYHFlbXVgIHdpdGggYC1kZXZpY2VgIHRvIGluamVjdCAqc29tZSogUENJIGRldmljZXM/IE5vLCBzeXprYWxsZXIgZG9lc24ndCBhcHBlYXIgdG8gaW5qZWN0IHNwZWNpZmljIEdQVSBkZXZpY2VzLCBsaWtlIHRoZSBJbnRlbCBYZSBvciBBTUQgWEROQSBkZXZpY2VzLiBXYWl0LCBzeXprYWxsZXIgYWN0dWFsbHkgKmRvZXMqIGZ1enogYG5vdXZlYXVgISBIb3cgaXMgdGhhdCBwb3NzaWJsZT8gTm8gYHN5el9wY2lfZGV2aWNlX2FkZGAuIEkgbmVlZCB0byBjaGVjayBpZiBzeXprYWxsZXIgaGFzIGRlc2NyaXB0aW9ucyBmb3IgYG5vdXZlYXVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzMwOSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODoyNi4xMTg4MTk4MTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5Mjk2MjAzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJub3V2ZWF1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInN5cy9saW51eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU4OjI2LjIwODEyNDcyOVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODExMTkwNjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlKipcblxuT2theSwgd2FpdCBhIG1pbnV0ZSwgSSBzZWVtIHRvIGJlIGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUsIG5vdCB0aGUgc3l6a2FsbGVyIHJlcG9zaXRvcnkuIFRoYXQgY2hhbmdlcyB0aGluZ3M7IEkgY2FuJ3QgZGlyZWN0bHkgYWNjZXNzIHRoZSBzeXprYWxsZXItc3BlY2lmaWMgZGVzY3JpcHRpb25zIGhlcmUuIEhtbSwgYnV0IHRoYXQncyBhbHJpZ2h0LCB0aGlzIGlzIHN0aWxsIHVzZWZ1bC4gVGhlIHF1ZXN0aW9uIGF0IGhhbmQgaXMgd2hldGhlciBgbm91dmVhdWAgaGFzIGEgXCJzb2Z0d2FyZS1vbmx5XCIgbW9kZSBvZiBvcGVyYXRpb24uIFRoaXMgaXMgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIHRoYXQgaW5mb3JtYXRpb24uIExldCBtZSBzZWUgd2hhdCBJIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODIzMiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU4OjI5LjAxOTMxNzc5M1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcwOTM1ODgzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJub3V2ZWF1X2RybV9wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jPTg0MD1zdGF0aWMgdm9pZCBxdWlya19icm9rZW5fbnZfcnVucG0oc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jLTg1Ni1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jOjg1NzpzdGF0aWMgaW50IG5vdXZlYXVfZHJtX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMtODU4LVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBlbnQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jPTE0Mzg9bm91dmVhdV9kcm1fcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMtMTQ0MC1cXHQuaWRfdGFibGUgPSBub3V2ZWF1X2RybV9wY2lfdGFibGUsXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYzoxNDQxOlxcdC5wcm9iZSA9IG5vdXZlYXVfZHJtX3Byb2JlLFxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMtMTQ0Mi1cXHQucmVtb3ZlID0gbm91dmVhdV9kcm1fcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODozMC43Mjg2ODE2NTFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5NjY3MDI0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IFBDSSBEcml2ZXIgSW5xdWlyeSoqXG5cblJpZ2h0LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IGEgUENJIGRyaXZlciwgZ290IGl0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgYW5kIGNvbnRleHQuIFdoYXQgYXJlIHdlIHRyeWluZyB0byBhY2hpZXZlPyBJcyB0aGlzIGEgbmV3IGRyaXZlciwgb3IgYW4gZXhpc3Rpbmcgb25lIHVuZGVyIHNjcnV0aW55PyBXaGF0IGtpbmQgb2Ygc3lzdGVtIGFyZSB3ZSBkZWFsaW5nIHdpdGg/IEtub3dpbmcgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGlzIGNydWNpYWwuXG5cblRoZW4uLi4gbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wZWQgdG86IHdoYXQgYWJvdXQgdGhhdCBgYW1keGRuYWA/IEknbSBjdXJpb3VzLiBUaGF0J3Mgbm90IHNvbWV0aGluZyBJJ2QgbmVjZXNzYXJpbHkgZXhwZWN0IGluIHRoaXMgY29udGV4dCwgYnV0IGl0IHdhcnJhbnRzIGNvbnNpZGVyYXRpb24uIElzIHRoYXQgcmVsYXRlZCB0byB0aGUgZGV2aWNlLCBvciBpcyBpdCBtZXJlbHkgYmVpbmcgcmVmZXJlbmNlZD8gSXMgdGhpcyBzb21lIGNyb3NzLWNvbXBhdGliaWxpdHkgY29uY2VybiB0aGF0IGlzIGJlaW5nIGJyb3VnaHQgdXA/XG5cbkknbSBzdGFydGluZyB0byB0aGluayB0aHJvdWdoIHRoZSBwb3NzaWJsZSBpbnRlcmFjdGlvbnMgdGhpcyBjb3VsZCBoYXZlLiBXaGF0IGRvZXMgdGhhdCBuYW1lIGV2ZW4gcG9pbnQgdG8/IFRoZSB0eXBlIG9mIGRldmljZSwgYSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEEgdmVyeSBiYXNpYyB0aGluZyB0byBjaGVjayBhdCB0aGlzIHBvaW50IHdvdWxkIGJlIHRvIHNlYXJjaCBmb3IgaXRzIGltcGxlbWVudGF0aW9uIG9uIHRoZSBzeXN0ZW0sIHRvIGdhaW4gbW9yZSBkZXRhaWxzLlxuXG5NeSBhc3N1bXB0aW9uIGlzIHRoYXQgaXQgcmVxdWlyZXMgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2ODYsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODozNC4yMjUzNTUzNTJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODMyODIxNDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFtZHhkbmFfcGNpX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODozNS45MDg2NDMzODNaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkwNzQ5MTMyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBgcHJvYmVgIFdpdGhpbiBgYW1keGRuYWAqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIFwiUmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYGFtZHhkbmFgIGNvbnRleHQuIExldCdzIGdldCBhIGhhbmRsZSBvbiB3aGF0IGl0J3MgZG9pbmcuXCIgSSBrbm93IHRoaXMgY29kZWJhc2UgaW5zaWRlIGFuZCBvdXQsIHNvIHRoZSBzcGVjaWZpY3Mgb2YgXCJjaGVja1wiIGFyZSBpbXBsaWVkIOKAkyBJJ20gcHJvYmFibHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIGl0cyBwdXJwb3NlLCBpdHMgaW5wdXRzLCBvdXRwdXRzLCBhbnkgY3JpdGljYWwgZGVwZW5kZW5jaWVzIG9yIHNoYXJlZCByZXNvdXJjZXMgaXQgbWlnaHQgYmUgbWFuaXB1bGF0aW5nLiBJcyBpdCBhIGRpYWdub3N0aWMgZnVuY3Rpb24/IEEgY29yZSBkYXRhIGdhdGhlcmluZyBvcGVyYXRpb24/IElzIGl0IGludGVyYWN0aW5nIHdpdGggaGFyZHdhcmUgZGlyZWN0bHk/IElzIGl0IGNoZWNraW5nIGZvciBlcnJvcnMgb3IgdmFsaWRhdGluZyBhIHNwZWNpZmljIGNvbmRpdGlvbj8gV2hhdGV2ZXIgdGhlIHB1cnBvc2Ugb2YgYHByb2JlYCwgdW5kZXJzdGFuZGluZyBpdHMgZnVuY3Rpb25hbGl0eSBpcyBpbXBvcnRhbnQgdG8gdGhlIGNvbnRleHQgb2YgdGhlIGdyZWF0ZXIgYW1keGRuYSBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4OTc1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTg6MzguODE2MTM2ODQ5WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjI4NTY4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2FjY2VsL2FtZHhkbmEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYz0zNTk9c3RhdGljIHZvaWQgYW1keGRuYV94ZG5hX2RybV9yZWxlYXNlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHZvaWQgKnJlcylcXG4tLVxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYy0zNjUtXFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfcGNpX2Rydi5jOjM2NjpzdGF0aWMgaW50IGFtZHhkbmFfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9wY2lfZHJ2LmMtMzY3LXtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYz00ODY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGFtZHhkbmFfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvYWNjZWwvYW1keGRuYS9hbWR4ZG5hX3BjaV9kcnYuYy00ODgtXFx0LmlkX3RhYmxlID0gcGNpX2lkcyxcXG5kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYW1keGRuYV9wY2lfZHJ2LmM6NDg5OlxcdC5wcm9iZSA9IGFtZHhkbmFfcHJvYmUsXFxuZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FtZHhkbmFfcGNpX2Rydi5jLTQ5MC1cXHQucmVtb3ZlID0gYW1keGRuYV9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA2OjU4OjM4Ljg3ODQyNzQxNFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDA3MDg2ODU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnk6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBOYXZpZ2F0aW5nIHRoZSBQQ0kgRHJpdmVyIExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGNvbnRleHQgaXMgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggYSBQQ0kgZHJpdmVyLCBhbmQgbXkgYnJhaW4gaW1tZWRpYXRlbHkgc3RhcnRzIHRvIGNhdGVnb3JpemUgYW5kIHBsYWNlIGl0IHdpdGhpbiB0aGUgYnJvYWRlciBmcmFtZXdvcmsuIEZpbmUsIFBDSSBkcml2ZXIsIGdvdCBpdC4gVGhlbiBteSB0aG91Z2h0cyBzaGlmdCB0byBhbm90aGVyIGZpbGUsIG5hbWVseSBgZHJtX2dwdXN2bS5jYCwgYW5kIEkgc3RhcnQgdG8gbWFrZSB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIGl0IGFuZCBvdXIgaW5pdGlhbCBhc3Nlc3NtZW50LiBBaCwgYGRybV9ncHVzdm0uY2Ag4oCTIHRoYXQncyBzZWxlY3RlZCBieSB0aGUgYERSTV9YRWAgY29uZmlnIG9wdGlvbi5cblxuVGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgZmlyc3QgY29tbWVudCBcIkl0J3MgYSBQQ0kgZHJpdmVyXCIgYW5kIHRoZSBgZHJtX2dwdXN2bS5jYCBmaWxlIGlzIHRoYXQgdGhlIFBDSSBkcml2ZXIgbWlnaHQgYmUgY29ubmVjdGVkIHRvIHRoZSBgZHJtX2dwdXN2bS5jYCBmaWxlIHRocm91Z2ggdGhlIGBEUk1fWEVgIGNvbmZpZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk0OTksIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODo0MS44ODU1MTYyNTNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MjAzNjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS94ZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMDc4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZz0xMDQ9Y29uZmlnIERSTV9YRV9GT1JDRV9QUk9CRVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjEwNTpcXHRzdHJpbmcgXFxcIkZvcmNlIHByb2JlIHhlIGZvciBzZWxlY3RlZCBJbnRlbCBoYXJkd2FyZSBJRHNcXFwiXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTA2LVxcdGRlcGVuZHMgb24gRFJNX1hFXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTA3LVxcdGhlbHBcXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzoxMDg6XFx0ICBUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgeGUuZm9yY2VfcHJvYmUgbW9kdWxlXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTA5LVxcdCAgcGFyYW1ldGVyLiBVc2luZyB0aGUgbW9kdWxlIHBhcmFtZXRlciBvdmVycmlkZXMgdGhpcyBvcHRpb24uXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTEwLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjExMTpcXHQgIEZvcmNlIHByb2JlIHRoZSB4ZSBmb3IgSW50ZWwgZ3JhcGhpY3MgZGV2aWNlcyB0aGF0IGFyZVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTExMi1cXHQgIHJlY29nbml6ZWQgYnV0IG5vdCBwcm9wZXJseSBzdXBwb3J0ZWQgYnkgdGhpcyBrZXJuZWwgdmVyc2lvbi4gSXQgaXNcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTExNS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzoxMTY6XFx0ICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGJsb2NrIHRoZSBwcm9iZSBvZiByZWNvZ25pemVkIGFuZCBmdWxseVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTExNy1cXHQgIHN1cHBvcnRlZCBkZXZpY2VzLlxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTExOC1cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzoxMTk6XFx0ICBVc2UgXFxcIlxcXCIgdG8gZGlzYWJsZSBmb3JjZSBwcm9iZS4gSWYgaW4gZG91YnQsIHVzZSB0aGlzLlxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTEyMC1cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzoxMjE6XFx0ICBVc2UgXFxcIlxcdTAwM2NwY2ktaWRcXHUwMDNlWyxcXHUwMDNjcGNpLWlkXFx1MDAzZSwuLi5dXFxcIiB0byBmb3JjZSBwcm9iZSB0aGUgeGUgZm9yIGxpc3RlZFxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTEyMi1cXHQgIGRldmljZXMuIEZvciBleGFtcGxlLCBcXFwiNDUwMFxcXCIgb3IgXFxcIjQ1MDAsNDU3MVxcXCIuXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTIzLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjEyNDpcXHQgIFVzZSBcXFwiKlxcXCIgdG8gZm9yY2UgcHJvYmUgdGhlIGRyaXZlciBmb3IgYWxsIGtub3duIGRldmljZXMuXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTI1LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjEyNjpcXHQgIFVzZSBcXFwiIVxcXCIgcmlnaHQgYmVmb3JlIHRoZSBJRCB0byBibG9jayB0aGUgcHJvYmUgb2YgdGhlIGRldmljZS4gRm9yXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6MTI3OlxcdCAgZXhhbXBsZSwgXFxcIjQ1MDAsITQ1NzFcXFwiIGZvcmNlcyB0aGUgcHJvYmUgb2YgNDUwMCBhbmQgYmxvY2tzIHRoZSBwcm9iZSBvZlxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTEyOC1cXHQgIDQ1NzEuXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctMTI5LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjEzMDpcXHQgIFVzZSBcXFwiISpcXFwiIHRvIGJsb2NrIHRoZSBwcm9iZSBvZiB0aGUgZHJpdmVyIGZvciBhbGwga25vd24gZGV2aWNlcy5cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy0xMzEtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTQtI2luY2x1ZGUgXFx1MDAzY2RybS9kcm1fbWFuYWdlZC5oXFx1MDAzZVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxNTojaW5jbHVkZSBcXHUwMDNjZHJtL2RybV9wcm9iZV9oZWxwZXIuaFxcdTAwM2VcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTYtI2luY2x1ZGUgXFx1MDAzY2RybS9pbnRlbC9kaXNwbGF5X21lbWJlci5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTUwPUlOVEVMX0RJU1BMQVlfTUVNQkVSX1NUQVRJQ19BU1NFUlQoc3RydWN0IHhlX2RldmljZSwgZHJtLCBkaXNwbGF5KTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy01NC0vKipcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NTU6ICogeGVfZGlzcGxheV9kcml2ZXJfcHJvYmVfZGVmZXIgLSBEZXRlY3QgaWYgd2UgbmVlZCB0byB3YWl0IGZvciBvdGhlciBkcml2ZXJzXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTU2LSAqXFx0XFx0XFx0XFx0ICAgZWFybHkgb25cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy02MC0gKlxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo2MTogKiBSZXR1cm5zOiB0cnVlIGlmIHByb2JlIG5lZWRzIHRvIGJlIGRlZmVycmVkLCBmYWxzZSBvdGhlcndpc2VcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNjItICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjYzOmJvb2wgeGVfZGlzcGxheV9kcml2ZXJfcHJvYmVfZGVmZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTY0LXtcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NjU6XFx0aWYgKCF4ZV9tb2RwYXJhbS5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy02Ni1cXHRcXHRyZXR1cm4gMDtcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNjctXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjY4OlxcdHJldHVybiBpbnRlbF9kaXNwbGF5X2RyaXZlcl9wcm9iZV9kZWZlcihwZGV2KTtcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNjktfVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTc2PXN0YXRpYyB2b2lkIHhlX2Rpc3BsYXlfZmluaV9lYXJseSh2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtODAtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjgxOlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtODItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTg5PWludCB4ZV9kaXNwbGF5X2luaXRfZWFybHkoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtOTMtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjk0OlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtOTUtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtOTktXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjEwMDpcXHRpbnRlbF9kaXNwbGF5X2RyaXZlcl9lYXJseV9wcm9iZShkaXNwbGF5KTtcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTAxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTEwNS1cXHRpZiAoIWludGVsX2Rpc3BsYXlfZGV2aWNlX3ByZXNlbnQoZGlzcGxheSkpIHtcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MTA2OlxcdFxcdHhlLVxcdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkgPSBmYWxzZTtcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTA3LVxcdFxcdHVuc2V0X2Rpc3BsYXlfZmVhdHVyZXMoeGUpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTExMC1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MTExOlxcdGVyciA9IGludGVsX2Rpc3BsYXlfZHJpdmVyX3Byb2JlX25vaXJxKGRpc3BsYXkpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xMTItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xMTQtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjExNTpcXHRlcnIgPSBpbnRlbF9kaXNwbGF5X2RyaXZlcl9wcm9iZV9ub2dlbShkaXNwbGF5KTtcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTE2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9MTM4PWludCB4ZV9kaXNwbGF5X2luaXQoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTQyLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxNDM6XFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xNDQtXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTE0NS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MTQ2OlxcdGVyciA9IGludGVsX2Rpc3BsYXlfZHJpdmVyX3Byb2JlKGRpc3BsYXkpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xNDctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0xNTM9dm9pZCB4ZV9kaXNwbGF5X3JlZ2lzdGVyKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTE1Ni1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MTU3OlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTU4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0xNjQ9dm9pZCB4ZV9kaXNwbGF5X3VucmVnaXN0ZXIoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTY3LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxNjg6XFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xNjktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTE3NT12b2lkIHhlX2Rpc3BsYXlfc2h1dGRvd24oc3RydWN0IHhlX2RldmljZSAqeGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMTc4LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoxNzk6XFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xODAtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTE4OT12b2lkIHhlX2Rpc3BsYXlfc2h1dGRvd25fbGF0ZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0xOTItXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjE5MzpcXHRpZiAoIXhlLVxcdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTE5NC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9MjAxPXZvaWQgeGVfZGlzcGxheV9pcnFfaGFuZGxlcihzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTMyIG1hc3Rlcl9jdGwpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjA0LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoyMDU6XFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yMDYtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTIxMj12b2lkIHhlX2Rpc3BsYXlfaXJxX2VuYWJsZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSwgdTMyIGd1X21pc2NfaWlyKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTIxNS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MjE2OlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjE3LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0yMjM9dm9pZCB4ZV9kaXNwbGF5X2lycV9yZXNldChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yMjYtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjIyNzpcXHRpZiAoIXhlLVxcdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTIyOC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9MjMzPXZvaWQgeGVfZGlzcGxheV9pcnFfcG9zdGluc3RhbGwoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjM2LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoyMzc6XFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yMzgtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTI1Mj12b2lkIHhlX2Rpc3BsYXlfcG1fc3VzcGVuZChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yNTYtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjI1NzpcXHRpZiAoIXhlLVxcdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTI1OC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9MjY3PXZvaWQgeGVfZGlzcGxheV9wbV9zdXNwZW5kX2xhdGUoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjcxLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzoyNzI6XFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yNzMtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTI3OD12b2lkIHhlX2Rpc3BsYXlfcG1fcmVzdW1lX2Vhcmx5KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTI4MS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MjgyOlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMjgzLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0yODg9dm9pZCB4ZV9kaXNwbGF5X3BtX3Jlc3VtZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0yOTEtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjI5MjpcXHRpZiAoIXhlLVxcdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTI5My1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9MzA1PXN0YXRpYyB2b2lkIHhlX2Rpc3BsYXlfZW5hYmxlX2QzY29sZChzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0zMDgtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjMwOTpcXHRpZiAoIXhlLVxcdTAwM2VpbmZvLnByb2JlX2Rpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTMxMC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM9MzI4PXN0YXRpYyB2b2lkIHhlX2Rpc3BsYXlfZGlzYWJsZV9kM2NvbGQoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMzMxLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzozMzI6XFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy0zMzMtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jPTM1Mz12b2lkIHhlX2Rpc3BsYXlfcG1fcnVudGltZV9zdXNwZW5kKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTM1Ni1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MzU3OlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMzU4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0zNjk9dm9pZCB4ZV9kaXNwbGF5X3BtX3J1bnRpbWVfc3VzcGVuZF9sYXRlKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTM3Mi1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MzczOlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMzc0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz0zODc9dm9pZCB4ZV9kaXNwbGF5X3BtX3J1bnRpbWVfcmVzdW1lX2Vhcmx5KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTM5MC1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6MzkxOlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtMzkyLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz00MDE9dm9pZCB4ZV9kaXNwbGF5X3BtX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQwNC1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NDA1OlxcdGlmICgheGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNDA2LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYz00NDk9c3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kaXNwbGF5X3BhcmVudF9pbnRlcmZhY2UgcGFyZW50ID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQ2NC0vKipcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmM6NDY1OiAqIHhlX2Rpc3BsYXlfcHJvYmUgLSBwcm9iZSBkaXNwbGF5IGFuZCBjcmVhdGUgZGlzcGxheSBzdHJ1Y3RcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNDY2LSAqIEB4ZTogWEUgZGV2aWNlIGluc3RhbmNlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNDc0LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo0NzU6aW50IHhlX2Rpc3BsYXlfcHJvYmUoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQ3Ni17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNDgwLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo0ODE6XFx0aWYgKCF4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5KVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy00ODItXFx0XFx0Z290byBub19kaXNwbGF5O1xcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy00ODMtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjQ4NDpcXHRkaXNwbGF5ID0gaW50ZWxfZGlzcGxheV9kZXZpY2VfcHJvYmUocGRldiwgXFx1MDAyNnBhcmVudCk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQ4NS1cXHRpZiAoSVNfRVJSKGRpc3BsYXkpKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTQ5Ny1ub19kaXNwbGF5OlxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo0OTg6XFx0eGUtXFx1MDAzZWluZm8ucHJvYmVfZGlzcGxheSA9IGZhbHNlO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy00OTktXFx0dW5zZXRfZGlzcGxheV9mZWF0dXJlcyh4ZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmMtNTAzLSNpZmRlZiBDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTlxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYzo1MDQ6aW50IHhlX2Rpc3BsYXlfZHJpdmVyX2ZiZGV2X3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYmgsXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTUwNS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBkcm1fZmJfaGVscGVyX3N1cmZhY2Vfc2l6ZSAqc2l6ZXMpXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jLTUwNi17XFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5jOjUwNzpcXHRyZXR1cm4gaW50ZWxfZmJkZXZfZHJpdmVyX2ZiZGV2X3Byb2JlKGZiaCwgc2l6ZXMpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuYy01MDgtfVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oPTE1PXN0cnVjdCB4ZV9kZXZpY2U7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmgtMTgtXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oOjE5OmJvb2wgeGVfZGlzcGxheV9kcml2ZXJfcHJvYmVfZGVmZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaC0yMC1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5Lmg6MjE6aW50IHhlX2Rpc3BsYXlfZHJpdmVyX2ZiZGV2X3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYmgsXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTIyLVxcdFxcdFxcdFxcdCAgc3RydWN0IGRybV9mYl9oZWxwZXJfc3VyZmFjZV9zaXplICpzaXplcyk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTIzLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaDoyNDppbnQgeGVfZGlzcGxheV9wcm9iZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTI1LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oPTQ3PXZvaWQgeGVfZGlzcGxheV9wbV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmgtNTAtI2RlZmluZSBYRV9ESVNQTEFZX0RSSVZFUl9PUFNcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oOjUxOlxcdC5mYmRldl9wcm9iZSA9IFBUUl9JRihJU19FTkFCTEVEKENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OKSxcXHRcXFxcXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oOjUyOlxcdFxcdFxcdCAgICAgIHhlX2Rpc3BsYXlfZHJpdmVyX2ZiZGV2X3Byb2JlKVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaC01My1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaC01Ny0jZGVmaW5lIFhFX0RJU1BMQVlfRFJJVkVSX09QUyBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oOjU4OlxcdC5mYmRldl9wcm9iZSA9IE5VTExcXG5kcml2ZXJzL2dwdS9kcm0veGUvZGlzcGxheS94ZV9kaXNwbGF5LmgtNTktXFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oOjYwOnN0YXRpYyBpbmxpbmUgaW50IHhlX2Rpc3BsYXlfZHJpdmVyX3Byb2JlX2RlZmVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KSB7IHJldHVybiAwOyB9XFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTYxLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9kaXNwbGF5L3hlX2Rpc3BsYXkuaDo2MjpzdGF0aWMgaW5saW5lIGludCB4ZV9kaXNwbGF5X3Byb2JlKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKSB7IHJldHVybiAwOyB9XFxuZHJpdmVycy9ncHUvZHJtL3hlL2Rpc3BsYXkveGVfZGlzcGxheS5oLTYzLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jPTMxMT1FWFBPUlRfU1lNQk9MX0lGX0tVTklUKHhlX3BjaV9pZF9nZW5fcGFyYW0pO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zMTItXFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjMxMzpzdGF0aWMgaW50IGZha2VfcHJvYmVfaW5mbyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSxcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzE0LVxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCB4ZV9kZXZpY2VfZGVzYyAqZGVzYyxcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzE1LVxcdFxcdFxcdCAgIHN0cnVjdCB4ZV9wY2lfZmFrZV9kYXRhICpkYXRhLFxcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYzozMTY6XFx0XFx0XFx0ICAgc3RydWN0IHhlX3Byb2JlZF9pbmZvICpwcm9iZWRfaW5mbylcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzE3LXtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzE4OlxcdHByb2JlZF9pbmZvLVxcdTAwM2V0aWxlX2NvdW50ID0gMSArIGRlc2MtXFx1MDAzZW1heF9yZW1vdGVfdGlsZXM7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTMxOS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzIwLVxcdGlmICghZGF0YSB8fCBkZXNjLVxcdTAwM2VwcmVfZ21kaWRfZ3JhcGhpY3NfaXApIHtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzIxOlxcdFxcdHByb2JlZF9pbmZvLVxcdTAwM2VncmFwaGljc19pcCA9IGRlc2MtXFx1MDAzZXByZV9nbWRpZF9ncmFwaGljc19pcDtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzIyOlxcdFxcdHByb2JlZF9pbmZvLVxcdTAwM2VtZWRpYV9pcCA9IGRlc2MtXFx1MDAzZXByZV9nbWRpZF9tZWRpYV9pcDtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzIzLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjMyNDpcXHRcXHRwcm9iZWRfaW5mby1cXHUwMDNlZ3JhcGhpY3NfaXAgPSBmaW5kX2dyYXBoaWNzX2lwKGRhdGEtXFx1MDAzZWdyYXBoaWNzX3ZlcngxMDApO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zMjUtXFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTMyNi1cXHRcXHRpZiAoZGF0YS1cXHUwMDNlbWVkaWFfdmVyeDEwMCkge1xcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYzozMjc6XFx0XFx0XFx0cHJvYmVkX2luZm8tXFx1MDAzZW1lZGlhX2lwID0gZmluZF9tZWRpYV9pcChkYXRhLVxcdTAwM2VtZWRpYV92ZXJ4MTAwKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzI4OlxcdFxcdFxcdHhlX2Fzc2VydCh4ZSwgcHJvYmVkX2luZm8tXFx1MDAzZW1lZGlhX2lwKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzI5LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zMzEtXFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjMzMjpcXHR4ZV9hc3NlcnQoeGUsIHByb2JlZF9pbmZvLVxcdTAwM2VncmFwaGljc19pcCk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjMzMzpcXHRpZiAoIXByb2JlZF9pbmZvLVxcdTAwM2VncmFwaGljc19pcClcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzM0LVxcdFxcdHJldHVybiAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTMzNi1cXHRpZiAoZGF0YSlcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzM3OlxcdFxcdHByb2JlZF9pbmZvLVxcdTAwM2VzdGVwID0gZGF0YS1cXHUwMDNlc3RlcDtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzM4LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jPTM0Mj1pbnQgeGVfcGNpX2Zha2VfZGV2aWNlX2luaXQoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzQ1LVxcdHN0cnVjdCB4ZV9wY2lfZmFrZV9kYXRhICpkYXRhID0gdGVzdC1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6MzQ2OlxcdHN0cnVjdCB4ZV9wcm9iZWRfaW5mbyBwcm9iZWRfaW5mbyA9IHt9O1xcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zNDctXFx0Y29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCA9IHBjaWlkbGlzdDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS90ZXN0cy94ZV9wY2kuYy0zNzktXFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jOjM4MDpcXHRlcnIgPSBmYWtlX3Byb2JlX2luZm8oeGUsIGRlc2MsIGRhdGEsIFxcdTAwMjZwcm9iZWRfaW5mbyk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTM4MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3Rlc3RzL3hlX3BjaS5jLTM4My1cXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6Mzg0OlxcdHhlX2luZm9faW5pdF9lYXJseSh4ZSwgZGVzYywgc3VicGxhdGZvcm1fZGVzYywgXFx1MDAyNnByb2JlZF9pbmZvKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmM6Mzg1OlxcdHhlX2luZm9faW5pdCh4ZSwgZGVzYywgXFx1MDAyNnByb2JlZF9pbmZvKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUvdGVzdHMveGVfcGNpLmMtMzg2LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtNDEtICogYXR0cmlidXRlcyBjYW4gb25seSBiZSBzZXQgYmVmb3JlIGJpbmRpbmcgdGhlIGRldmljZS4gSXQgY2FuIGJlIGFjY29tcGxpc2hlZFxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jOjQyOiAqIGJ5IGJsb2NraW5nIHRoZSBkcml2ZXIgYXV0b3Byb2JlOjpcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy00My0gKlxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jOjQ0OiAqXFx0IyBlY2hvIDAgXFx1MDAzZSAvc3lzL2J1cy9wY2kvZHJpdmVyc19hdXRvcHJvYmVcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYzo0NTogKlxcdCMgbW9kcHJvYmUgeGVcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy00Ni0gKlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtNjYtICogQWZ0ZXIgY29uZmlndXJpbmcgdGhlIGF0dHJpYnV0ZXMgYXMgcGVyIG5leHQgc2VjdGlvbiwgdGhlIGRldmljZSBjYW4gYmVcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYzo2NzogKiBwcm9iZWQgd2l0aDo6XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtNjgtICpcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jLTcwLSAqXFx0IyAjIG9yXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM6NzE6ICpcXHQjIGVjaG8gMDAwMDowMzowMC4wIFxcdTAwM2UgL3N5cy9idXMvcGNpL2RyaXZlcnNfcHJvYmVcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy03Mi0gKlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtOTAtICogZHJpdmVyLiAgQW55IGNvbWJpbmF0aW9uIG9mIEdUIHR5cGVzIGNhbiBiZSBlbmFibGVkL2Rpc2FibGVkLCBhbHRob3VnaFxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jOjkxOiAqIHNvbWUgc2V0dGluZ3Mgd2lsbCBjYXVzZSB0aGUgZGV2aWNlIHRvIGZhaWwgdG8gcHJvYmUuXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtOTItICpcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jLTExMi0gKiBlZmZlY3RpdmVseSBkaXNhYmxpbmcgdGhlIHByaW1hcnkgR1QuICAqKlRoaXMgY29uZmlndXJhdGlvbiB3aWxsIGNhdXNlXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM6MTEzOiAqIGRldmljZSBwcm9iZSBmYWlsdXJlIG9uIGFsbCBjdXJyZW50IHBsYXRmb3JtcywgYnV0IG1heSBiZSBhbGxvd2VkIG9uXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtMTE0LSAqIGlncHUgcGxhdGZvcm1zIGluIHRoZSBmdXR1cmUqKjo6XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy0xMTgtICogRGlzYWJsZSBhbGwgR1RzLiAgT25seSBvdGhlciBHUFUgSVAgKHN1Y2ggYXMgZGlzcGxheSkgaXMgcG90ZW50aWFsbHkgdXNhYmxlLlxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jOjExOTogKiAqKlRoaXMgY29uZmlndXJhdGlvbiB3aWxsIGNhdXNlIGRldmljZSBwcm9iZSBmYWlsdXJlIG9uIGFsbCBjdXJyZW50XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtMTIwLSAqIHBsYXRmb3JtcywgYnV0IG1heSBiZSBhbGxvd2VkIG9uIGlncHUgcGxhdGZvcm1zIGluIHRoZSBmdXR1cmUqKjo6XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy0xNDMtICogVGhlIHJlcXVlc3RlZCBjb25maWd1cmF0aW9uIG1heSBub3QgYmUgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBhbmQgZHJpdmVyXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM6MTQ0OiAqIG1heSBmYWlsIHRvIHByb2JlLiBGb3IgZXhhbXBsZTogaWYgYXQgbGVhc3Qgb25lIGNvcHkgZW5naW5lIGlzIGV4cGVjdGVkIHRvIGJlXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtMTQ1LSAqIGF2YWlsYWJsZSBmb3IgbWlncmF0aW9ucywgYnV0IGl0J3MgZGlzYWJsZWQuIFRoaXMgaXMgaW50ZW5kZWQgZm9yIGRlYnVnZ2luZ1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM9MTI3OT1ib29sIHhlX2NvbmZpZ2ZzX2dldF9lbmFibGVfbXVsdGlfcXVldWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy0xMjk2LSAqIEBjbGFzczogaHcgZW5naW5lIGNsYXNzXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM6MTI5NzogKiBAY3M6IHBvaW50ZXIgdG8gdGhlIGJiIHRvIHVzZSAtIG9ubHkgdmFsaWQgZHVyaW5nIHByb2JlXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmMtMTI5OC0gKlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2NvbmZpZ2ZzLmM9MTMwMT11MzIgeGVfY29uZmlnZnNfZ2V0X2N0eF9yZXN0b3JlX21pZF9iYihzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9jb25maWdmcy5jLTEzMjMtICogQGNsYXNzOiBodyBlbmdpbmUgY2xhc3NcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYzoxMzI0OiAqIEBjczogcG9pbnRlciB0byB0aGUgYmIgdG8gdXNlIC0gb25seSB2YWxpZCBkdXJpbmcgcHJvYmVcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfY29uZmlnZnMuYy0xMzI1LSAqXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM9NDg3PXN0cnVjdCB4ZV9kZXZpY2UgKnhlX2RldmljZV9jcmVhdGUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtNTE1LX1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6NTE2OkFMTE9XX0VSUk9SX0lOSkVDVElPTih4ZV9kZXZpY2VfY3JlYXRlLCBFUlJOTyk7IC8qIFNlZSB4ZV9wY2lfcHJvYmUoKSAqL1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy01MTctXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM9NzM1PXN0YXRpYyB2b2lkIHZmX3VwZGF0ZV9kZXZpY2VfaW5mbyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03MzgtXFx0LyogZGlzYWJsZSBmZWF0dXJlcyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlL2FwcGxpY2FibGUgdG8gVkZzICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jOjczOTpcXHR4ZS1cXHUwMDNlaW5mby5wcm9iZV9kaXNwbGF5ID0gMDtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtNzQwLVxcdHhlLVxcdTAwM2VpbmZvLmhhc19oZWNpX2NzY2ZpID0gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYz03NDk9c3RhdGljIGludCB4ZV9kZXZpY2VfdnJhbV9hbGxvYyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03NjQtLyoqXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jOjc2NTogKiB4ZV9kZXZpY2VfcHJvYmVfZWFybHk6IERldmljZSBlYXJseSBwcm9iZVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03NjYtICogQHhlOiB4ZSBkZXZpY2UgaW5zdGFuY2VcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03NzMtICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jOjc3NDppbnQgeGVfZGV2aWNlX3Byb2JlX2Vhcmx5KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03NzUte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTc4MC1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6NzgxOlxcdGVyciA9IHhlX21taW9fcHJvYmVfZWFybHkoeGUpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03ODItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03ODQtXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jOjc4NTpcXHR4ZV9zcmlvdl9wcm9iZV9lYXJseSh4ZSk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTc4Ni1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy03OTktXFx0ICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jOjgwMDpcXHRlcnIgPSB4ZV9wY29kZV9wcm9iZV9lYXJseSh4ZSk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTgwMS1cXHRpZiAoZXJyIHx8IHhlX3N1cnZpdmFiaWxpdHlfbW9kZV9pc19yZXF1ZXN0ZWQoeGUpKSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtODMzLX1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6ODM0OkFMTE9XX0VSUk9SX0lOSkVDVElPTih4ZV9kZXZpY2VfcHJvYmVfZWFybHksIEVSUk5PKTsgLyogU2VlIHhlX3BjaV9wcm9iZSgpICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTgzNS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6ODM2OnN0YXRpYyBpbnQgcHJvYmVfaGFzX2ZsYXRfY2NzKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy04Mzcte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTg2OS0gKiBUaGUgZ2VuZXJhbCBwb2xpY3kgaXMgdGhhdCB3ZSdsbCByZW1vdmUgYW55IHdvcmthcm91bmRzIHRoYXQgb25seSBhcHBseSB0b1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo4NzA6ICogcHJlLXByb2R1Y3Rpb24gaGFyZHdhcmUgYXJvdW5kIHRoZSB0aW1lIGZvcmNlX3Byb2JlIHJlc3RyaWN0aW9ucyBhcmUgbGlmdGVkXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTg3MS0gKiBmb3IgYSBwbGF0Zm9ybSBvZiB0aGUgbmV4dCBtYWpvciBJUCBnZW5lcmF0aW9uIChmb3IgZXhhbXBsZSwgWGUyIHByZS1wcm9kXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTg3Mi0gKiB3b3JrYXJvdW5kcyBzaG91bGQgYmUgcmVtb3ZlZCBhcm91bmQgdGhlIHRpbWUgdGhlIGZpcnN0IFhlMyBwbGF0Zm9ybXMgaGF2ZVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo4NzM6ICogZm9yY2VfcHJvYmUgbGlmdGVkKS5cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtODc0LSAqL1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jPTkxOD1zdGF0aWMgdm9pZCB4ZV9kZXZpY2Vfd2VkZ2VkX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTkyNS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6OTI2OmludCB4ZV9kZXZpY2VfcHJvYmUoc3RydWN0IHhlX2RldmljZSAqeGUpXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTkyNy17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtOTQ0LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzo5NDU6XFx0ZXJyID0geGVfbW1pb19wcm9iZV90aWxlcyh4ZSk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTk0Ni1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTk3Ni1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6OTc3OlxcdGVyciA9IHByb2JlX2hhc19mbGF0X2Njcyh4ZSk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTk3OC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTk4MC1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6OTgxOlxcdGVyciA9IHhlX3ZyYW1fcHJvYmUoeGUpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy05ODItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy0xMTAxLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYzoxMTAyOlxcdGVyciA9IHhlX2kyY19wcm9iZSh4ZSk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5jLTExMDMtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYz0xMzk2PXZvaWQgeGVfZGV2aWNlX3NldF93ZWRnZWRfbWV0aG9kKHN0cnVjdCB4ZV9kZXZpY2UgKnhlLCB1bnNpZ25lZCBsb25nIG1ldGhvZClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuYy0xNDA3LSAqIHhlX2RldmljZV9zZXRfd2VkZ2VkX21ldGhvZCBiZWZvcmUgZGVjbGFyaW5nIHRoZSBkZXZpY2UgYXMgd2VkZ2VkLiBJZiBubyBtZXRob2RcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmM6MTQwODogKiBpcyBzZXQsIHJlcHJvYmUgKHVuYmluZC9yZS1iaW5kKSB3aWxsIGJlIHNlbnQgYnkgZGVmYXVsdC5cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmMtMTQwOS0gKlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5oPTQ3PWludCB4ZV9kZXZpY2VfaW5pdF9lYXJseShzdHJ1Y3QgeGVfZGV2aWNlICp4ZSk7XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZS5oOjQ4OmludCB4ZV9kZXZpY2VfcHJvYmVfZWFybHkoc3RydWN0IHhlX2RldmljZSAqeGUpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2UuaDo0OTppbnQgeGVfZGV2aWNlX3Byb2JlKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKTtcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlLmgtNTAtdm9pZCB4ZV9kZXZpY2VfcmVtb3ZlKHN0cnVjdCB4ZV9kZXZpY2UgKnhlKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2VfdHlwZXMuaD05MD1zdHJ1Y3QgeGVfZGV2aWNlIHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2VfdHlwZXMuaC0yMTEtXFx0XFx0LyoqXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZV90eXBlcy5oOjIxMjpcXHRcXHQgKiBAaW5mby5wcm9iZV9kaXNwbGF5OiBQcm9iZSBkaXNwbGF5IGhhcmR3YXJlLiAgSWYgc2V0IHRvXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZV90eXBlcy5oLTIxMy1cXHRcXHQgKiBmYWxzZSwgdGhlIGRyaXZlciB3aWxsIGJlaGF2ZSBhcyBpZiB0aGVyZSBpcyBubyBkaXNwbGF5XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2aWNlX3R5cGVzLmgtMjE4LVxcdFxcdCAqL1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2VfdHlwZXMuaDoyMTk6XFx0XFx0dTggcHJvYmVfZGlzcGxheToxO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2VfdHlwZXMuaC0yMjAtXFx0XFx0LyoqIEBpbmZvLnNraXBfZ3VjX3BjOiBTa2lwIEd1QyBiYXNlZCBQTSBmZWF0dXJlIGluaXQgKi9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmM9MTU2PXN0YXRpYyB1NjQgeGVscGdfZ2d0dF9wdGVfZmxhZ3Moc3RydWN0IHhlX2JvICpibywgdTE2IHBhdF9pbmRleClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmMtMTczLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmM6MTc0OnN0YXRpYyB1bnNpZ25lZCBpbnQgcHJvYmVfZ3NtX3NpemUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2dndHQuYy0xNzUte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2dndHQuYz0zOTE9aW50IHhlX2dndHRfaW5pdF9lYXJseShzdHJ1Y3QgeGVfZ2d0dCAqZ2d0dClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmMtNDAyLVxcdFxcdGVsc2VcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ2d0dC5jOjQwMzpcXHRcXHRcXHRnc21fc2l6ZSA9IHByb2JlX2dzbV9zaXplKHBkZXYpO1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9nZ3R0LmMtNDA0LVxcdFxcdGlmIChnc21fc2l6ZSA9PSAwKSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ2d0dC5jLTQ0OS19XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2dndHQuYzo0NTA6QUxMT1dfRVJST1JfSU5KRUNUSU9OKHhlX2dndHRfaW5pdF9lYXJseSwgRVJSTk8pOyAvKiBTZWUgeGVfcGNpX3Byb2JlKCkgKi9cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ2d0dC5jLTQ1MS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndC5jPTQ1Nz1zdGF0aWMgdm9pZCB3YV8xNDAyNjUzOTI3NyhzdHJ1Y3QgeGVfZ3QgKmd0KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0LmMtNDY0LVxcdCAqIHJ1bGVzIGZvciBXYV8xNDAyNjUzOTI3NyBkdWUgdG8geGVfd2FfcHJvY2Vzc19kZXZpY2Vfb29iKCkgYmVpbmdcXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3QuYzo0NjU6XFx0ICogY2FsbGVkIGJlZm9yZSB4ZV9zcmlvdl9wcm9iZV9lYXJseSgpOyBhbmQgd2UgY2FuJ3QgbW92ZSB0aGUgY2FsbCB0b1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndC5jLTQ2Ni1cXHQgKiB0aGUgZm9ybWVyIHRvIGhhcHBlbiBhZnRlciB0aGUgbGF0dGVyIGJlY2F1c2UgTU1JTyByZWFkIGZ1bmN0aW9uc1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X21jci5jPTQ5OT12b2lkIHhlX2d0X21jcl9pbml0X2Vhcmx5KHN0cnVjdCB4ZV9ndCAqZ3QpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfbWNyLmMtNTU0LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9tY3IuYzo1NTU6XFx0LyogTWFyayBpbnN0YW5jZSAwIGFzIGluaXRpYWxpemVkLCB3ZSBuZWVkIHRoaXMgZWFybHkgZm9yIFZSQU0gYW5kIENDUyBwcm9iZS4gKi9cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3RfbWNyLmMtNTU2LVxcdGd0LVxcdTAwM2VzdGVlcmluZ1tJTlNUQU5DRTBdLmluaXRpYWxpemVkID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9zcmlvdl92Zi5jPTE1NjU9c3RhdGljIGJvb2wgdmZfdmFsaWRfZ2d0dChzdHJ1Y3QgeGVfZ3QgKmd0KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3NyaW92X3ZmLmMtMTU4My0gKiBSZXR1cm46IG51bWJlciBvZiB0aW1lcyBWRiBmaXh1cHMgd2VyZSBjb21wbGV0ZWQgc2luY2UgZHJpdmVyXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3NyaW92X3ZmLmM6MTU4NDogKiBwcm9iZSwgb3IgMCBpZiBtaWdyYXRpb24gaXMgbm90IGF2YWlsYWJsZSwgb3IgLTEgaWYgZml4dXBzIGFyZVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9zcmlvdl92Zi5jLTE1ODUtICogcGVuZGluZyBvciBiZWluZyBhcHBsaWVkIHJpZ2h0IG5vdy5cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9zcmlvdl92Zi5jPTE1ODc9aW50IHhlX3ZmX21pZ3JhdGlvbl9maXh1cHNfY29tcGxldGVfY291bnQoc3RydWN0IHhlX2d0ICpndClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9zcmlvdl92Zi5jLTE2MDQtICogUmV0dXJuOiBudW1iZXIgb2YgdGltZXMgVkYgZml4dXBzIHdlcmUgY29tcGxldGVkIHNpbmNlIGRyaXZlclxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndF9zcmlvdl92Zi5jOjE2MDU6ICogcHJvYmUsIG9yIDAgaWYgbWlncmF0aW9uIGlzIG5vdCBhdmFpbGFibGUuXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d0X3NyaW92X3ZmLmMtMTYwNi0gKi9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfYWRzLmM9NDQyPWludCB4ZV9ndWNfYWRzX2luaXQoc3RydWN0IHhlX2d1Y19hZHMgKmFkcylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfYWRzLmMtNDY1LX1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2Fkcy5jOjQ2NjpBTExPV19FUlJPUl9JTkpFQ1RJT04oeGVfZ3VjX2Fkc19pbml0LCBFUlJOTyk7IC8qIFNlZSB4ZV9wY2lfcHJvYmUoKSAqL1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfYWRzLmMtNDY3LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jPTMyMj1pbnQgeGVfZ3VjX2N0X2luaXRfbm9hbGxvYyhzdHJ1Y3QgeGVfZ3VjX2N0ICpjdClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY3QuYy0zNTctfVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY3QuYzozNTg6QUxMT1dfRVJST1JfSU5KRUNUSU9OKHhlX2d1Y19jdF9pbml0X25vYWxsb2MsIEVSUk5PKTsgLyogU2VlIHhlX3BjaV9wcm9iZSgpICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jLTM1OS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY3QuYz0zNjg9aW50IHhlX2d1Y19jdF9pbml0KHN0cnVjdCB4ZV9ndWNfY3QgKmN0KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jLTM5Ni19XFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jOjM5NzpBTExPV19FUlJPUl9JTkpFQ1RJT04oeGVfZ3VjX2N0X2luaXQsIEVSUk5PKTsgLyogU2VlIHhlX3BjaV9wcm9iZSgpICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jLTM5OC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfbG9nLmM9NjI0PWludCB4ZV9ndWNfbG9nX2luaXQoc3RydWN0IHhlX2d1Y19sb2cgKmxvZylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfbG9nLmMtNjQ0LVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfbG9nLmM6NjQ1OkFMTE9XX0VSUk9SX0lOSkVDVElPTih4ZV9ndWNfbG9nX2luaXQsIEVSUk5PKTsgLyogU2VlIHhlX3BjaV9wcm9iZSgpICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19sb2cuYy02NDYtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3JlbGF5LmM9MzQyPWludCB4ZV9ndWNfcmVsYXlfaW5pdChzdHJ1Y3QgeGVfZ3VjX3JlbGF5ICpyZWxheSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfcmVsYXkuYy0zNzAtfVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfcmVsYXkuYzozNzE6QUxMT1dfRVJST1JfSU5KRUNUSU9OKHhlX2d1Y19yZWxheV9pbml0LCBFUlJOTyk7IC8qIFNlZSB4ZV9wY2lfcHJvYmUoKSAqL1xcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfcmVsYXkuYy0zNzItXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUveGVfaHdfZW5naW5lX2NsYXNzX3N5c2ZzLmM9NTc5PXN0YXRpYyBpbnQgeGVfYWRkX2h3X2VuZ2luZV9jbGFzc19kZWZhdWx0cyhzdHJ1Y3QgeGVfZGV2aWNlICp4ZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9od19lbmdpbmVfY2xhc3Nfc3lzZnMuYy02MDMtfVxcbmRyaXZlcnMvZ3B1L2RybS94ZS94ZV9od19lbmdpbmVfY2xhc3Nfc3lzZnMuYzo2MDQ6QUxMT1dfRVJST1JfSU5KRUNUSU9OKHhlX2FkZF9od19lbmdpbmVfY2xhc3NfZGVmYXVsdHMsIEVSUk5PKTsgLyogU2VlIHhlX3BjaV9wcm9iZSgpICovXFxuZHJpdmVycy9ncHUvZHJtL3hlL3hlX2h3X2VuZ2luZV9jbGFzc19zeXNmcy5jLTYwNS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDY6NTg6NDEuOTUwNzI2MTU4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1Mzk5MjA0MzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZz1mYWxzZTogVW5yZWFjaGFibGUgQ29kZSBQYXRocyBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIGRlYWwuIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCB3YXMgYWJvdXQgaG93IGl0IGFmZmVjdHMgYHhlX3BjaS5jYCwgYnV0IHRoZW4gSSByZWFsaXplZCB0aGlzIGlzIGFib3V0IEtVbml0IHRlc3Rpbmcgd2hpY2ggaXNuJ3QgU3l6a2FsbGVyJ3MgdHlwaWNhbCBmb2N1cy4gU3l6a2FsbGVyIGlzIGFsbCBhYm91dCBmdXp6aW5nIHN5c2NhbGxzLlxuXG5NeSBtaW5kIHRoZW4gd2VudCB0byBgZHJtX2dwdXN2bS5jYCwgd2hpY2ggaXMgYSBnZW5lcmljIERSTSBHUFUgU1ZNIGxpYnJhcnkgdGhhdCdzIHNlbGVjdGVkIGJ5IGBEUk1fWEVgLCBhbmQgdGhhdCdzIHdoZW4gaXQgY2xpY2tlZC4gVGhpcyBwYXRjaCBtb2RpZmllcyBob3cgYGhtbV9yYW5nZV9mYXVsdF91bmxvY2tlZF90aW1lb3V0YCBpcyB1c2VkLCBhbmQgaXQncyB1c2VkIGluIGBkcm1fZ3B1c3ZtLmNgLCBhbmQgYWxzbyBpbiBgbm91dmVhdV9zdm0uY2AgYW5kIGBhaWUyX2N0eC5jYC4gVGhlc2UgZHJpdmVycyBzb3VuZCBsaWtlIHRoZXkgYXJlIGRlcGVuZGVudCBvbiBzcGVjaWZpYyBoYXJkd2FyZTsgSW50ZWwgWGUsIE52aWRpYSwgYW5kIEFNRCBYRE5BIHJlc3BlY3RpdmVseS5cblxuTXkgaW5zdHJ1Y3Rpb25zIHNheSBJIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFNvLCB0aGUgcXVlc3Rpb24gYmVjb21lczogYXJlIHRoZXNlIGRyaXZlcnMgcmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBWTT8gVGhlIHNob3J0IGFuc3dlcjogTm8uXG5cblFFTVUgY2FuIGVtdWxhdGUgc29tZSBQQ0kgZGV2aWNlcywgYnV0IG5vdCB0aGVzZSBtb2Rlcm4gR1BVcy4gU3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBhIGRpcmVjdCB3YXkgdG8gaW5qZWN0IFBDSSBkZXZpY2VzLiBFdmVuIHRoZSBgdmttc2AgdmlydHVhbCBLTVMgZHJpdmVyIHRoYXQncyBpbiBTeXprYWxsZXIsIGRvZXNuJ3QgdXRpbGl6ZSBhbnkgb2YgdGhlIHNwZWNpZmljIFNWTSBjb2RlLiBUaGVyZSdzIG5vIHdheSB0byB0cmlnZ2VyIGBkcm1fZ3B1c3ZtLmNgIG9yIHRoZSBvdGhlciBmaWxlcyB3aXRob3V0IHRoZSBjb3JyZXNwb25kaW5nIGhhcmR3YXJlLlxuXG5JIHdlbnQgYmFjayBhbmQgY2hlY2tlZCBpZiBgeGVgIGhhZCBhIGBmb3JjZV9wcm9iZWAgbW9kdWxlIHBhcmFtZXRlciwgYnV0IHRoYXQgc3RpbGwgcmVxdWlyZXMgYSBQQ0kgZGV2aWNlIHRvIGJlICpwcmVzZW50KiwgZXZlbiBpZiBpdCBvdmVycmlkZXMgYSBzdXBwb3J0IGNoZWNrLiBTbyB0aGUgY29kZSBwYXRoIHdvdWxkIHN0aWxsIGZhaWwgaW4gcHJvYmUuIE5vIHByb2JlLCBubyBjYWxscy5cblxuSSByZS1yZWFkIHRoZSBcIldvcnRoRnV6emluZz1mYWxzZVwiIGNyaXRlcmlhLiBJdCBleHBsaWNpdGx5IG1lbnRpb25zOiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBUaGlzIGlzIGEgcGVyZmVjdCBtYXRjaC4gVGhlc2UgZHJpdmVycyAqcmVxdWlyZSogcGh5c2ljYWwgaGFyZHdhcmUuIFRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSBpbiBRRU1VLiBUaGUgZHJpdmVycyB3aWxsIGp1c3QgZmFpbCBkdXJpbmcgcHJvYmUoKS4gVGhlIGNvZGUgaXMgc2ltcGx5IHVucmVhY2hhYmxlLlxuXG5JIGxvb2tlZCBpbnRvIGBub3V2ZWF1YCwgYGFtZHhkbmFgLCBhbmQgYHhlYCB0byBkb3VibGUtY2hlY2sgdGhlaXIgc29mdHdhcmUgZW11bGF0aW9uIHN1cHBvcnQgYW5kLCBhcyBJIHN1c3BlY3RlZCwgbm9uZSBvZiB0aGVtIGhhdmUgYW55LiBJIGV2ZW4gY2hlY2tlZCBTeXprYWxsZXIgZm9yIFBDSSBpbmplY3Rpb24sIGFuZCB0aGVyZSdzIG5vdGhpbmcsIG5vIGBzeXpfcGNpX2RldmljZV9hZGRgIG9yIGFueXRoaW5nIGxpa2UgdGhhdC4gRXZlbiBpZiB0aGVyZSB3ZXJlLCB0aGUgZHJpdmVycyB3b3VsZCBzdGlsbCBuZWVkIHRvIGVtdWxhdGUgdGhlIHNwZWNpZmljIEJBUnMgYW5kIHJlZ2lzdGVycywgd2hpY2ggdGhleSBkb24ndCwgYW5kIHNvIHRoZSBwcm9iZSB3b3VsZCBqdXN0IGZhaWwuXG5cbkkgdGhpbmsgSSd2ZSBjb3ZlcmVkIGFsbCB0aGUgYmFzZXMuIFRoaXMgcGF0Y2ggbW9kaWZpZXMgY29kZSB0aGF0IGlzIGluaGVyZW50bHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIEknbSBjb25maWRlbnQgaW4gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgY29kZSBpcyBuZXZlciBnb2luZyB0byBiZSBleGVjdXRlZCBieSBzeXprYWxsZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMjkxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODo1Ny4zNDk5MzI5ODNaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NjMwOTAzOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IERSTV9HUFVTVk1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc9Mj1jb25maWcgRFJNX1hFXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy00MS1cXHRzZWxlY3QgRFJNX0VYRUNcXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzo0MjpcXHRzZWxlY3QgRFJNX0dQVVNWTSBpZiAhVU1MXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctNDMtXFx0c2VsZWN0IERSTV9HUFVWTVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc9Nzk9Y29uZmlnIERSTV9YRV9HUFVTVk1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTg1LVxcdHNlbGVjdCBERVZJQ0VfUFJJVkFURVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjg2OlxcdHNlbGVjdCBEUk1fR1BVU1ZNXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWctODctXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1ODo1OS4xMTMwMjc4NTdaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAwMDI2OTE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFZpYWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0cyBwb3RlbnRpYWwgZm9yIGZ1enppbmcuIEl0IGxvb2tzIGxpa2UgdGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBhcmUgZXhjbHVzaXZlbHkgd2l0aGluIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnM6IHRoZSBBTUQgWEROQSBkcml2ZXIgKGBhaWUyX2N0eC5jYCksIHRoZSBJbnRlbCBYZSBkcml2ZXIgKGBkcm1fZ3B1c3ZtLmNgLCBzcGVjaWZpY2FsbHkgdGllZCB0byB0aGUgYERSTV9YRWAgY29uZmlnIG9wdGlvbiksIGFuZCB0aGUgTnZpZGlhIE5vdXZlYXUgZHJpdmVyIChgbm91dmVhdV9zdm0uY2ApLlxuXG5BIGtleSBvYnNlcnZhdGlvbiBoZXJlIGlzIHRoYXQgKm9ubHkqIHRoZSBgRFJNX1hFYCBjb25maWcgb3B0aW9uIHNlbGVjdHMgYGRybV9ncHVzdm1gLiBJIG1hZGUgc3VyZSB0byBjaGVjayB0aGUgY29kZSB0byBzZWUgaWYgdGhlcmUgd2FzIGFueSBjaGFuY2Ugb2YgYGRybV9ncHVzdm1gIGJlaW5nIHNlbGVjdGVkIGJ5IGFub3RoZXIgZHJpdmVyLlxuXG5Ob3csIGNvbnNpZGVyaW5nIHRoZXNlIGRyaXZlcnMgYW5kIHRoZWlyIHJlc3BlY3RpdmUgbG9jYXRpb25zLCBJJ20gcHJldHR5IGNlcnRhaW4gdGhhdCB0aGUgZnV6emluZyBlZmZvcnRzIHdvdWxkbid0IGJlIHByb2R1Y3RpdmUuIFRoZXNlIG1vZHVsZXMgcmVxdWlyZSBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgKE5QVXMgb3IgR1BVcykgdG8gcHJvYmUgY29ycmVjdGx5IGFuZCBlc3RhYmxpc2ggZGV2aWNlIG5vZGVzLiBRRU1VIGFuZCBHQ0UsIHdoaWxlIGV4Y2VsbGVudCBmb3IgbWFueSBwdXJwb3NlcywgZG9uJ3QgZW11bGF0ZSB0aGlzIHR5cGUgb2YgaGFyZHdhcmUgdG8gdGhlIGxldmVsIG5lZWRlZCBmb3IgdGhlc2UgZHJpdmVycyB0byBmdW5jdGlvbi4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgc2ltcGx5IGluYWNjZXNzaWJsZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5HaXZlbiB0aGF0LCBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGUgcGF0Y2ggdG91Y2hlcyBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgZGVwZW5kIG9uIHVuYXZhaWxhYmxlIG9yIHVuLWVtdWxhdGVkIFBDSSBkZXZpY2VzLCByZW5kZXJpbmcgdGhlc2UgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cblxuVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNTQ1LCJPdXRwdXRUb2tlbnMiOjE3NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNjo1OTowNS4xMTMyOTkzMzZaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTM0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdXNhZ2Ugb2YgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgaW4gdGhyZWUgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyczogQU1EIFhETkEgKGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jKSwgSW50ZWwgWGUgKGRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMsIHNlbGVjdGVkIG9ubHkgYnkgRFJNX1hFKSwgYW5kIE52aWRpYSBOb3V2ZWF1IChkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jKS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSAoTlBVcy9HUFVzKSB0byBzdWNjZXNzZnVsbHkgcHJvYmUgYW5kIGNyZWF0ZSBkZXZpY2Ugbm9kZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdXNhZ2Ugb2YgaG1tX3JhbmdlX2ZhdWx0X3VubG9ja2VkX3RpbWVvdXQgaW4gdGhyZWUgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyczogQU1EIFhETkEgKGRyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX2N0eC5jKSwgSW50ZWwgWGUgKGRyaXZlcnMvZ3B1L2RybS9kcm1fZ3B1c3ZtLmMsIHNlbGVjdGVkIG9ubHkgYnkgRFJNX1hFKSwgYW5kIE52aWRpYSBOb3V2ZWF1IChkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jKS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSAoTlBVcy9HUFVzKSB0byBzdWNjZXNzZnVsbHkgcHJvYmUgYW5kIGNyZWF0ZSBkZXZpY2Ugbm9kZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow58fmp[1] Phase: Running StartedAt: 2026-07-15 06:59:16 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58fmp[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-15 06:59:16 +0000 UTC FinishedAt: 2026-07-15 06:59:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}