Name: series-workflowz77h6 Phase: Failed StartedAt: 2026-09-15 00:04:19 +0000 UTC FinishedAt: 2026-09-15 00:28:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz77h6[0] Phase: Succeeded StartedAt: 2026-09-15 00:04:19 +0000 UTC FinishedAt: 2026-09-15 00:28:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz77h6[0].run-triage Phase: Succeeded StartedAt: 2026-09-15 00:04:19 +0000 UTC FinishedAt: 2026-09-15 00:28:14 +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+CgkJCTx0ZD4yMDI2LzA5LzE1IDAwOjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIG5ldyBkZXZyZXMgYWxsb2NhdGlvbiBoZWxwZXIgbWFjcm9zIChkZXZtX2ttYWxsb2Nfb2JqLCBkZXZtX2t6YWxsb2Nfb2JqLCBkZXZtX2ttYWxsb2NfZmxleCwgZXRjLikgd2hpY2ggY3VycmVudGx5IGhhdmUgbm8gY2FsbGVycyBhbnl3aGVyZSBpbiB0aGUga2VybmVsIGNvZGViYXNlLCBhbmQgbW92ZXMgdGhlIG1hY3JvIGRlZmluaXRpb24gb2YgZGVmYXVsdF9nZnAgZnJvbSBsaW51eC9nZnAuaCB0byBsaW51eC9nZnBfdHlwZXMuaCB3aXRoIG5vIGNoYW5nZSBpbiBsb2dpYy4gQmVjYXVzZSBubyBjYWxsZXJzIGV4aXN0IGZvciB0aGUgbmV3IG1hY3Jvcywgbm8gZXhlY3V0YWJsZSBrZXJuZWwgY29kZSBpcyBhZGRlZCBvciBhbHRlcmVkLCBtYWtpbmcgdGhlIGNoYW5nZXMgbm9uLWV4ZWN1dGFibGUgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6MjY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlYzFmNDZjYjNmZDk5YWYwODUxODc2ZmFhNzU2OGU3MDZiY2EyMTA3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMDA6MjY6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmggYi9pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaFxuaW5kZXggMTRhYjkxNTliZGRhNS4uNzY1NmM5ZWNkNGRhYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaFxuQEAgLTYyLDYgJiM0Mzs2MiwxMDggQEAgc3RhdGljIGlubGluZSB2b2lkICpkZXZtX2tjYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF9cbiB7XG4gXHRyZXR1cm4gZGV2bV9rbWFsbG9jX2FycmF5KGRldiwgbiwgc2l6ZSwgZmxhZ3MgfCBfX0dGUF9aRVJPKTtcbiB9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogX19kZXZtX2FsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIG9iamVjdHMgb2YgYSBnaXZlbiB0eXBlXG4mIzQzOyAqIEBERVZNX0FMTE9DOiB3aGljaCBkZXZpY2UtbWFuYWdlZCBzaXplLWJhc2VkIGFsbG9jYXRvciB0byB1c2UuXG4mIzQzOyAqIEBERVY6IGRldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cbiYjNDM7ICogQEdGUDogR0ZQIGZsYWdzIGZvciB0aGUgYWxsb2NhdGlvbi5cbiYjNDM7ICogQFRZUEU6IHR5cGUgdG8gYWxsb2NhdGUgc3BhY2UgZm9yLlxuJiM0MzsgKiBAQ09VTlQ6IGhvdyBtYW55IEBUWVBFIG9iamVjdHMgdG8gYWxsb2NhdGUuXG4mIzQzOyAqXG4mIzQzOyAqIERldmljZS1tYW5hZ2VkIGNvdW50ZXJwYXJ0IG9mIF9fYWxsb2Nfb2JqcygpLlxuJiM0MzsgKiBAREVWTV9BTExPQyB0YWtlcyAoQERFViwgc2l6ZSwgZ2ZwKS5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuczogTmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgdG8gKGZpcnN0KSBAVFlQRSBvZiBAQ09VTlQtbWFueSBhbGxvY2F0ZWRcbiYjNDM7ICogQFRZUEUgb2JqZWN0cywgb3IgTlVMTCBvbiBmYWlsdXJlLlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBfX2Rldm1fYWxsb2Nfb2JqcyhERVZNX0FMTE9DLCBERVYsIEdGUCwgVFlQRSwgQ09VTlQpXHRcdFxcXG4mIzQzOyh7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRjb25zdCBzaXplX3QgX19vYmpfc2l6ZSA9IHNpemVfbXVsKHNpemVvZihUWVBFKSwgQ09VTlQpO1x0XFxcbiYjNDM7XHQoVFlQRSAqKURFVk1fQUxMT0MoREVWLCBfX29ial9zaXplLCBHRlApO1x0XHRcdFxcXG4mIzQzO30pXG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZGV2bV9rbWFsbG9jX29iaiAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSBzaW5nbGUgdHlwZWQgb2JqZWN0XG4mIzQzOyAqIEBERVY6IERldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cbiYjNDM7ICogQFZBUl9PUl9UWVBFOiBWYXJpYWJsZSBvciB0eXBlIHRvIGFsbG9jYXRlLlxuJiM0MzsgKiBAR0ZQOiBPcHRpb25hbCBHRlAgZmxhZ3MgKGRlZmF1bHRzIHRvICVHRlBfS0VSTkVMKS5cbiYjNDM7ICpcbiYjNDM7ICogRGV2aWNlLW1hbmFnZWQgY291bnRlcnBhcnQgb2Yga21hbGxvY19vYmooKTogdGhlIGFsbG9jYXRpb24gaXMgc2l6ZWQgZnJvbVxuJiM0MzsgKiBAVkFSX09SX1RZUEUgYW5kIHJldHVybmVkIGFzIGEgcG9pbnRlciB0byB0aGF0IHR5cGUsIG5vdCB2b2lkICouXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnM6IG5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHRvIGEgQFZBUl9PUl9UWVBFIG9uIHN1Y2Nlc3MsIG9yIE5VTEwgb25cbiYjNDM7ICogZmFpbHVyZS5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgZGV2bV9rbWFsbG9jX29iaihERVYsIFZBUl9PUl9UWVBFLCAuLi4pXHRcdFx0XHRcXFxuJiM0MztcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksXHRcXFxuJiM0MztcdFx0XHQgIHR5cGVvZihWQVJfT1JfVFlQRSksIDEpXG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZGV2bV9rbWFsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGFuIGFycmF5IG9mIGEgdHlwZWQgb2JqZWN0XG4mIzQzOyAqIEBERVY6IERldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cbiYjNDM7ICogQFZBUl9PUl9UWVBFOiBWYXJpYWJsZSBvciB0eXBlIHRvIGFsbG9jYXRlIGFuIGFycmF5IG9mLlxuJiM0MzsgKiBAQ09VTlQ6IEhvdyBtYW55IGVsZW1lbnRzIGluIHRoZSBhcnJheS5cbiYjNDM7ICogQEdGUDogT3B0aW9uYWwgR0ZQIGZsYWdzIChkZWZhdWx0cyB0byAlR0ZQX0tFUk5FTCkuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnM6IG5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHRvIGFuIGFycmF5IG9mIEBWQVJfT1JfVFlQRSBvbiBzdWNjZXNzLCBvclxuJiM0MzsgKiBOVUxMIG9uIGZhaWx1cmUgKGluY2x1ZGluZyB3aGVuIHRoZSB0b3RhbCBzaXplIG92ZXJmbG93cykuXG4mIzQzOyAqL1xuJiM0MzsjZGVmaW5lIGRldm1fa21hbGxvY19vYmpzKERFViwgVkFSX09SX1RZUEUsIENPVU5ULCAuLi4pIFxcXG4mIzQzO1x0X19kZXZtX2FsbG9jX29ianMoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcbiYjNDM7XHRcdFx0ICB0eXBlb2YoVkFSX09SX1RZUEUpLCBDT1VOVClcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBfX2Rldm1fYWxsb2NfZmxleCAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSB0cmFpbGluZy1mbGV4LWFycmF5IG9iamVjdFxuJiM0MzsgKiBAREVWTV9BTExPQzogd2hpY2ggZGV2aWNlLW1hbmFnZWQgYWxsb2NhdG9yIHRvIHVzZS5cbiYjNDM7ICogQERFVjogZGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLlxuJiM0MzsgKiBAR0ZQOiBHRlAgZmxhZ3MgZm9yIHRoZSBhbGxvY2F0aW9uLlxuJiM0MzsgKiBAVFlQRTogdHlwZSBvZiBzdHJ1Y3R1cmUgdG8gYWxsb2NhdGUgc3BhY2UgZm9yLlxuJiM0MzsgKiBARkFNOiBuYW1lIG9mIHRoZSBmbGV4aWJsZSBhcnJheSBtZW1iZXIgb2YgQFRZUEUuXG4mIzQzOyAqIEBDT1VOVDogaG93IG1hbnkgQEZBTSBlbGVtZW50cyB0byBhbGxvY2F0ZSBzcGFjZSBmb3IuXG4mIzQzOyAqXG4mIzQzOyAqIERldmljZS1tYW5hZ2VkIGNvdW50ZXJwYXJ0IG9mIF9fYWxsb2NfZmxleCgpLlxuJiM0MzsgKiBAREVWTV9BTExPQyB0YWtlcyAoQERFViwgc2l6ZSwgZ2ZwKS5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuczogTmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgdG8gQFRZUEUgd2l0aCBAQ09VTlQtbWFueSB0cmFpbGluZyBARkFNXG4mIzQzOyAqIGVsZW1lbnRzLCBvciBOVUxMIG9uIGZhaWx1cmUuXG4mIzQzOyAqL1xuJiM0MzsjZGVmaW5lIF9fZGV2bV9hbGxvY19mbGV4KERFVk1fQUxMT0MsIERFViwgR0ZQLCBUWVBFLCBGQU0sIENPVU5UKVx0XFxcbiYjNDM7KHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGNvbnN0IHNpemVfdCBfX2NvdW50ID0gKENPVU5UKTtcdFx0XHRcdFx0XFxcbiYjNDM7XHRjb25zdCBzaXplX3QgX19vYmpfc2l6ZSA9IHN0cnVjdF9zaXplX3QoVFlQRSwgRkFNLCBfX2NvdW50KTtcdFxcXG4mIzQzO1x0VFlQRSAqX19vYmpfcHRyID0gREVWTV9BTExPQyhERVYsIF9fb2JqX3NpemUsIEdGUCk7XHRcdFxcXG4mIzQzO1x0aWYgKF9fb2JqX3B0cilcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRfX3NldF9mbGV4X2NvdW50ZXIoX19vYmpfcHRyLVx1MDAzZUZBTSwgX19jb3VudCk7XHRcdFxcXG4mIzQzO1x0X19vYmpfcHRyO1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7fSlcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBkZXZtX2ttYWxsb2NfZmxleCAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSBmbGV4aWJsZS1hcnJheSBzdHJ1Y3R1cmVcbiYjNDM7ICogQERFVjogRGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLlxuJiM0MzsgKiBAVkFSX09SX1RZUEU6IFZhcmlhYmxlIG9yIHR5cGUgdG8gYWxsb2NhdGUgKHdpdGggaXRzIGZsZXhpYmxlIGFycmF5KS5cbiYjNDM7ICogQEZBTTogVGhlIG5hbWUgb2YgdGhlIGZsZXhpYmxlIGFycmF5IG1lbWJlciBvZiB0aGUgc3RydWN0dXJlLlxuJiM0MzsgKiBAQ09VTlQ6IEhvdyBtYW55IGZsZXhpYmxlIGFycmF5IG1lbWJlciBlbGVtZW50cyB0byBhbGxvY2F0ZS5cbiYjNDM7ICogQEdGUDogT3B0aW9uYWwgR0ZQIGZsYWdzIChkZWZhdWx0cyB0byAlR0ZQX0tFUk5FTCkuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnM6IG5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHRvIEBWQVJfT1JfVFlQRSBvbiBzdWNjZXNzLCBvciBOVUxMIG9uXG4mIzQzOyAqIGZhaWx1cmUuIElmIEBGQU0gaGFzIGJlZW4gYW5ub3RhdGVkIHdpdGggX19jb3VudGVkX2J5KCksIGl0cyBjb3VudGVyIGlzIHNldFxuJiM0MzsgKiB0byBAQ09VTlQuXG4mIzQzOyAqL1xuJiM0MzsjZGVmaW5lIGRldm1fa21hbGxvY19mbGV4KERFViwgVkFSX09SX1RZUEUsIEZBTSwgQ09VTlQsIC4uLikgXFxcbiYjNDM7XHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuJiM0MztcdFx0XHQgIHR5cGVvZihWQVJfT1JfVFlQRSksIEZBTSwgQ09VTlQpXG4mIzQzO1xuJiM0MzsvKiBBbGwgZGV2bV9remFsbG9jIGFsaWFzZXMgZm9yIGRldm1fa21hbGxvY18ob2JqfG9ianN8ZmxleCkuICovXG4mIzQzOyNkZWZpbmUgZGV2bV9remFsbG9jX29iaihERVYsIFAsIC4uLikgXFxcbiYjNDM7XHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIDEpXG4mIzQzOyNkZWZpbmUgZGV2bV9remFsbG9jX29ianMoREVWLCBQLCBDT1VOVCwgLi4uKSBcXFxuJiM0MztcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXG4mIzQzO1x0XHRcdCAgdHlwZW9mKFApLCBDT1VOVClcbiYjNDM7I2RlZmluZSBkZXZtX2t6YWxsb2NfZmxleChERVYsIFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcbiYjNDM7XHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuJiM0MztcdFx0XHQgIHR5cGVvZihQKSwgRkFNLCBDT1VOVClcbiYjNDM7XG4gc3RhdGljIGlubGluZSBfX3JlYWxsb2Nfc2l6ZSgzLCA0KSB2b2lkICogX19tdXN0X2NoZWNrXG4gZGV2bV9rcmVhbGxvY19hcnJheShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnAsIHNpemVfdCBuZXdfbiwgc2l6ZV90IG5ld19zaXplLCBnZnBfdCBmbGFncylcbiB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9nZnAuaCBiL2luY2x1ZGUvbGludXgvZ2ZwLmhcbmluZGV4IDg3MmJjNTNmMzJlYzguLmI2MmUyZmQ1M2NiNDEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2dmcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2dmcC5oXG5AQCAtMTMsMTAgJiM0MzsxMyw2IEBAXG4gc3RydWN0IHZtX2FyZWFfc3RydWN0O1xuIHN0cnVjdCBtZW1wb2xpY3k7XG4gXG4tLyogSGVscGVyIG1hY3JvIHRvIGF2b2lkIGdmcCBmbGFncyBpZiB0aGV5IGFyZSB0aGUgZGVmYXVsdCBvbmUgKi9cbi0jZGVmaW5lIF9fZGVmYXVsdF9nZnAoYSxiLC4uLikgYlxuLSNkZWZpbmUgZGVmYXVsdF9nZnAoLi4uKSBfX2RlZmF1bHRfZ2ZwKCwjI19fVkFfQVJHU19fLEdGUF9LRVJORUwpXG4tXG4gc3RhdGljIGlubGluZSBib29sIGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGNvbnN0IGdmcF90IGdmcF9mbGFncylcbiB7XG4gXHRyZXR1cm4gISEoZ2ZwX2ZsYWdzIFx1MDAyNiBfX0dGUF9ESVJFQ1RfUkVDTEFJTSk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmhcbmluZGV4IDE5MDE5MTQxMTAwOWYuLmIxY2QxNDNmM2M0MmYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oXG5AQCAtMzgyLDQgJiM0MzszODIsOCBAQCBlbnVtIHtcbiBcdFx0XHQgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTikgXHUwMDI2IH5fX0dGUF9SRUNMQUlNKVxuICNkZWZpbmUgR0ZQX1RSQU5TSFVHRVx0KEdGUF9UUkFOU0hVR0VfTElHSFQgfCBfX0dGUF9ESVJFQ1RfUkVDTEFJTSlcbiBcbiYjNDM7LyogSGVscGVyIG1hY3JvIHRvIGF2b2lkIGdmcCBmbGFncyBpZiB0aGV5IGFyZSB0aGUgZGVmYXVsdCBvbmUgKi9cbiYjNDM7I2RlZmluZSBfX2RlZmF1bHRfZ2ZwKGEsYiwuLi4pIGJcbiYjNDM7I2RlZmluZSBkZWZhdWx0X2dmcCguLi4pIF9fZGVmYXVsdF9nZnAoLCMjX19WQV9BUkdTX18sR0ZQX0tFUk5FTClcbiYjNDM7XG4gI2VuZGlmIC8qIF9fTElOVVhfR0ZQX1RZUEVTX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGludHJvZHVjZXMgbmV3IGRldnJlcyBhbGxvY2F0aW9uIGhlbHBlciBtYWNyb3MgKGRldm1fa21hbGxvY19vYmosIGRldm1fa3phbGxvY19vYmosIGRldm1fa21hbGxvY19mbGV4LCBldGMuKSB3aGljaCBjdXJyZW50bHkgaGF2ZSBubyBjYWxsZXJzIGFueXdoZXJlIGluIHRoZSBrZXJuZWwgY29kZWJhc2UsIGFuZCBtb3ZlcyB0aGUgbWFjcm8gZGVmaW5pdGlvbiBvZiBkZWZhdWx0X2dmcCBmcm9tIGxpbnV4L2dmcC5oIHRvIGxpbnV4L2dmcF90eXBlcy5oIHdpdGggbm8gY2hhbmdlIGluIGxvZ2ljLiBCZWNhdXNlIG5vIGNhbGxlcnMgZXhpc3QgZm9yIHRoZSBuZXcgbWFjcm9zLCBubyBleGVjdXRhYmxlIGtlcm5lbCBjb2RlIGlzIGFkZGVkIG9yIGFsdGVyZWQsIG1ha2luZyB0aGUgY2hhbmdlcyBub24tZXhlY3V0YWJsZSBhbmQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVjMWY0NmNiM2ZkOTlhZjA4NTE4NzZmYWE3NTY4ZTcwNmJjYTIxMDcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxNSAwMDoyNjo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oIGIvaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgKaW5kZXggMTRhYjkxNTliZGRhNS4uNzY1NmM5ZWNkNGRhYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgKQEAgLTYyLDYgJiM0Mzs2MiwxMDggQEAgc3RhdGljIGlubGluZSB2b2lkICpkZXZtX2tjYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF8KIHsKIAlyZXR1cm4gZGV2bV9rbWFsbG9jX2FycmF5KGRldiwgbiwgc2l6ZSwgZmxhZ3MgfCBfX0dGUF9aRVJPKTsKIH0KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBfX2Rldm1fYWxsb2Nfb2JqcyAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2Ygb2JqZWN0cyBvZiBhIGdpdmVuIHR5cGUKJiM0MzsgKiBAREVWTV9BTExPQzogd2hpY2ggZGV2aWNlLW1hbmFnZWQgc2l6ZS1iYXNlZCBhbGxvY2F0b3IgdG8gdXNlLgomIzQzOyAqIEBERVY6IGRldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by4KJiM0MzsgKiBAR0ZQOiBHRlAgZmxhZ3MgZm9yIHRoZSBhbGxvY2F0aW9uLgomIzQzOyAqIEBUWVBFOiB0eXBlIHRvIGFsbG9jYXRlIHNwYWNlIGZvci4KJiM0MzsgKiBAQ09VTlQ6IGhvdyBtYW55IEBUWVBFIG9iamVjdHMgdG8gYWxsb2NhdGUuCiYjNDM7ICoKJiM0MzsgKiBEZXZpY2UtbWFuYWdlZCBjb3VudGVycGFydCBvZiBfX2FsbG9jX29ianMoKS4KJiM0MzsgKiBAREVWTV9BTExPQyB0YWtlcyAoQERFViwgc2l6ZSwgZ2ZwKS4KJiM0MzsgKgomIzQzOyAqIFJldHVybnM6IE5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHRvIChmaXJzdCkgQFRZUEUgb2YgQENPVU5ULW1hbnkgYWxsb2NhdGVkCiYjNDM7ICogQFRZUEUgb2JqZWN0cywgb3IgTlVMTCBvbiBmYWlsdXJlLgomIzQzOyAqLwomIzQzOyNkZWZpbmUgX19kZXZtX2FsbG9jX29ianMoREVWTV9BTExPQywgREVWLCBHRlAsIFRZUEUsIENPVU5UKQkJXAomIzQzOyh7CQkJCQkJCQkJXAomIzQzOwljb25zdCBzaXplX3QgX19vYmpfc2l6ZSA9IHNpemVfbXVsKHNpemVvZihUWVBFKSwgQ09VTlQpOwlcCiYjNDM7CShUWVBFICopREVWTV9BTExPQyhERVYsIF9fb2JqX3NpemUsIEdGUCk7CQkJXAomIzQzO30pCiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogZGV2bV9rbWFsbG9jX29iaiAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSBzaW5nbGUgdHlwZWQgb2JqZWN0CiYjNDM7ICogQERFVjogRGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLgomIzQzOyAqIEBWQVJfT1JfVFlQRTogVmFyaWFibGUgb3IgdHlwZSB0byBhbGxvY2F0ZS4KJiM0MzsgKiBAR0ZQOiBPcHRpb25hbCBHRlAgZmxhZ3MgKGRlZmF1bHRzIHRvICVHRlBfS0VSTkVMKS4KJiM0MzsgKgomIzQzOyAqIERldmljZS1tYW5hZ2VkIGNvdW50ZXJwYXJ0IG9mIGttYWxsb2Nfb2JqKCk6IHRoZSBhbGxvY2F0aW9uIGlzIHNpemVkIGZyb20KJiM0MzsgKiBAVkFSX09SX1RZUEUgYW5kIHJldHVybmVkIGFzIGEgcG9pbnRlciB0byB0aGF0IHR5cGUsIG5vdCB2b2lkICouCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm5zOiBuZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB0byBhIEBWQVJfT1JfVFlQRSBvbiBzdWNjZXNzLCBvciBOVUxMIG9uCiYjNDM7ICogZmFpbHVyZS4KJiM0MzsgKi8KJiM0MzsjZGVmaW5lIGRldm1fa21hbGxvY19vYmooREVWLCBWQVJfT1JfVFlQRSwgLi4uKQkJCQlcCiYjNDM7CV9fZGV2bV9hbGxvY19vYmpzKGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksCVwKJiM0MzsJCQkgIHR5cGVvZihWQVJfT1JfVFlQRSksIDEpCiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogZGV2bV9rbWFsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGFuIGFycmF5IG9mIGEgdHlwZWQgb2JqZWN0CiYjNDM7ICogQERFVjogRGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLgomIzQzOyAqIEBWQVJfT1JfVFlQRTogVmFyaWFibGUgb3IgdHlwZSB0byBhbGxvY2F0ZSBhbiBhcnJheSBvZi4KJiM0MzsgKiBAQ09VTlQ6IEhvdyBtYW55IGVsZW1lbnRzIGluIHRoZSBhcnJheS4KJiM0MzsgKiBAR0ZQOiBPcHRpb25hbCBHRlAgZmxhZ3MgKGRlZmF1bHRzIHRvICVHRlBfS0VSTkVMKS4KJiM0MzsgKgomIzQzOyAqIFJldHVybnM6IG5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHRvIGFuIGFycmF5IG9mIEBWQVJfT1JfVFlQRSBvbiBzdWNjZXNzLCBvcgomIzQzOyAqIE5VTEwgb24gZmFpbHVyZSAoaW5jbHVkaW5nIHdoZW4gdGhlIHRvdGFsIHNpemUgb3ZlcmZsb3dzKS4KJiM0MzsgKi8KJiM0MzsjZGVmaW5lIGRldm1fa21hbGxvY19vYmpzKERFViwgVkFSX09SX1RZUEUsIENPVU5ULCAuLi4pIFwKJiM0MzsJX19kZXZtX2FsbG9jX29ianMoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXAomIzQzOwkJCSAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgQ09VTlQpCiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogX19kZXZtX2FsbG9jX2ZsZXggLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGEgdHJhaWxpbmctZmxleC1hcnJheSBvYmplY3QKJiM0MzsgKiBAREVWTV9BTExPQzogd2hpY2ggZGV2aWNlLW1hbmFnZWQgYWxsb2NhdG9yIHRvIHVzZS4KJiM0MzsgKiBAREVWOiBkZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uCiYjNDM7ICogQEdGUDogR0ZQIGZsYWdzIGZvciB0aGUgYWxsb2NhdGlvbi4KJiM0MzsgKiBAVFlQRTogdHlwZSBvZiBzdHJ1Y3R1cmUgdG8gYWxsb2NhdGUgc3BhY2UgZm9yLgomIzQzOyAqIEBGQU06IG5hbWUgb2YgdGhlIGZsZXhpYmxlIGFycmF5IG1lbWJlciBvZiBAVFlQRS4KJiM0MzsgKiBAQ09VTlQ6IGhvdyBtYW55IEBGQU0gZWxlbWVudHMgdG8gYWxsb2NhdGUgc3BhY2UgZm9yLgomIzQzOyAqCiYjNDM7ICogRGV2aWNlLW1hbmFnZWQgY291bnRlcnBhcnQgb2YgX19hbGxvY19mbGV4KCkuCiYjNDM7ICogQERFVk1fQUxMT0MgdGFrZXMgKEBERVYsIHNpemUsIGdmcCkuCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm5zOiBOZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB0byBAVFlQRSB3aXRoIEBDT1VOVC1tYW55IHRyYWlsaW5nIEBGQU0KJiM0MzsgKiBlbGVtZW50cywgb3IgTlVMTCBvbiBmYWlsdXJlLgomIzQzOyAqLwomIzQzOyNkZWZpbmUgX19kZXZtX2FsbG9jX2ZsZXgoREVWTV9BTExPQywgREVWLCBHRlAsIFRZUEUsIEZBTSwgQ09VTlQpCVwKJiM0MzsoewkJCQkJCQkJCVwKJiM0MzsJY29uc3Qgc2l6ZV90IF9fY291bnQgPSAoQ09VTlQpOwkJCQkJXAomIzQzOwljb25zdCBzaXplX3QgX19vYmpfc2l6ZSA9IHN0cnVjdF9zaXplX3QoVFlQRSwgRkFNLCBfX2NvdW50KTsJXAomIzQzOwlUWVBFICpfX29ial9wdHIgPSBERVZNX0FMTE9DKERFViwgX19vYmpfc2l6ZSwgR0ZQKTsJCVwKJiM0MzsJaWYgKF9fb2JqX3B0cikJCQkJCQkJXAomIzQzOwkJX19zZXRfZmxleF9jb3VudGVyKF9fb2JqX3B0ci0mZ3Q7RkFNLCBfX2NvdW50KTsJCVwKJiM0MzsJX19vYmpfcHRyOwkJCQkJCQlcCiYjNDM7fSkKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBkZXZtX2ttYWxsb2NfZmxleCAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSBmbGV4aWJsZS1hcnJheSBzdHJ1Y3R1cmUKJiM0MzsgKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uCiYjNDM7ICogQFZBUl9PUl9UWVBFOiBWYXJpYWJsZSBvciB0eXBlIHRvIGFsbG9jYXRlICh3aXRoIGl0cyBmbGV4aWJsZSBhcnJheSkuCiYjNDM7ICogQEZBTTogVGhlIG5hbWUgb2YgdGhlIGZsZXhpYmxlIGFycmF5IG1lbWJlciBvZiB0aGUgc3RydWN0dXJlLgomIzQzOyAqIEBDT1VOVDogSG93IG1hbnkgZmxleGlibGUgYXJyYXkgbWVtYmVyIGVsZW1lbnRzIHRvIGFsbG9jYXRlLgomIzQzOyAqIEBHRlA6IE9wdGlvbmFsIEdGUCBmbGFncyAoZGVmYXVsdHMgdG8gJUdGUF9LRVJORUwpLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuczogbmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgdG8gQFZBUl9PUl9UWVBFIG9uIHN1Y2Nlc3MsIG9yIE5VTEwgb24KJiM0MzsgKiBmYWlsdXJlLiBJZiBARkFNIGhhcyBiZWVuIGFubm90YXRlZCB3aXRoIF9fY291bnRlZF9ieSgpLCBpdHMgY291bnRlciBpcyBzZXQKJiM0MzsgKiB0byBAQ09VTlQuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBkZXZtX2ttYWxsb2NfZmxleChERVYsIFZBUl9PUl9UWVBFLCBGQU0sIENPVU5ULCAuLi4pIFwKJiM0MzsJX19kZXZtX2FsbG9jX2ZsZXgoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXAomIzQzOwkJCSAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgRkFNLCBDT1VOVCkKJiM0MzsKJiM0MzsvKiBBbGwgZGV2bV9remFsbG9jIGFsaWFzZXMgZm9yIGRldm1fa21hbGxvY18ob2JqfG9ianN8ZmxleCkuICovCiYjNDM7I2RlZmluZSBkZXZtX2t6YWxsb2Nfb2JqKERFViwgUCwgLi4uKSBcCiYjNDM7CV9fZGV2bV9hbGxvY19vYmpzKGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgMSkKJiM0MzsjZGVmaW5lIGRldm1fa3phbGxvY19vYmpzKERFViwgUCwgQ09VTlQsIC4uLikgXAomIzQzOwlfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcCiYjNDM7CQkJICB0eXBlb2YoUCksIENPVU5UKQomIzQzOyNkZWZpbmUgZGV2bV9remFsbG9jX2ZsZXgoREVWLCBQLCBGQU0sIENPVU5ULCAuLi4pIFwKJiM0MzsJX19kZXZtX2FsbG9jX2ZsZXgoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXAomIzQzOwkJCSAgdHlwZW9mKFApLCBGQU0sIENPVU5UKQomIzQzOwogc3RhdGljIGlubGluZSBfX3JlYWxsb2Nfc2l6ZSgzLCA0KSB2b2lkICogX19tdXN0X2NoZWNrCiBkZXZtX2tyZWFsbG9jX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcCwgc2l6ZV90IG5ld19uLCBzaXplX3QgbmV3X3NpemUsIGdmcF90IGZsYWdzKQogewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9nZnAuaCBiL2luY2x1ZGUvbGludXgvZ2ZwLmgKaW5kZXggODcyYmM1M2YzMmVjOC4uYjYyZTJmZDUzY2I0MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9nZnAuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2dmcC5oCkBAIC0xMywxMCAmIzQzOzEzLDYgQEAKIHN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKIHN0cnVjdCBtZW1wb2xpY3k7CiAKLS8qIEhlbHBlciBtYWNybyB0byBhdm9pZCBnZnAgZmxhZ3MgaWYgdGhleSBhcmUgdGhlIGRlZmF1bHQgb25lICovCi0jZGVmaW5lIF9fZGVmYXVsdF9nZnAoYSxiLC4uLikgYgotI2RlZmluZSBkZWZhdWx0X2dmcCguLi4pIF9fZGVmYXVsdF9nZnAoLCMjX19WQV9BUkdTX18sR0ZQX0tFUk5FTCkKLQogc3RhdGljIGlubGluZSBib29sIGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGNvbnN0IGdmcF90IGdmcF9mbGFncykKIHsKIAlyZXR1cm4gISEoZ2ZwX2ZsYWdzICZhbXA7IF9fR0ZQX0RJUkVDVF9SRUNMQUlNKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmggYi9pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oCmluZGV4IDE5MDE5MTQxMTAwOWYuLmIxY2QxNDNmM2M0MmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaApAQCAtMzgyLDQgJiM0MzszODIsOCBAQCBlbnVtIHsKIAkJCSBfX0dGUF9OT01FTUFMTE9DIHwgX19HRlBfTk9XQVJOKSAmYW1wOyB+X19HRlBfUkVDTEFJTSkKICNkZWZpbmUgR0ZQX1RSQU5TSFVHRQkoR0ZQX1RSQU5TSFVHRV9MSUdIVCB8IF9fR0ZQX0RJUkVDVF9SRUNMQUlNKQogCiYjNDM7LyogSGVscGVyIG1hY3JvIHRvIGF2b2lkIGdmcCBmbGFncyBpZiB0aGV5IGFyZSB0aGUgZGVmYXVsdCBvbmUgKi8KJiM0MzsjZGVmaW5lIF9fZGVmYXVsdF9nZnAoYSxiLC4uLikgYgomIzQzOyNkZWZpbmUgZGVmYXVsdF9nZnAoLi4uKSBfX2RlZmF1bHRfZ2ZwKCwjI19fVkFfQVJHU19fLEdGUF9LRVJORUwpCiYjNDM7CiAjZW5kaWYgLyogX19MSU5VWF9HRlBfVFlQRVNfSCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzU2CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUaGlzIFBhdGNoOiBNZW1vcnkgQWxsb2NhdGlvbiAmYW1wOyBHRlAgQ2hhbmdlcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0JiMzOTtzIGZvY3VzZWQgb24gbWVtb3J5IGFsbG9jYXRpb24gd2l0aCBhIHBvdGVudGlhbCBtaW5vciBjaGFuZ2UgdG8gdGhlIEdGUCBmbGFncy4gSSBzZWUgaXQgdG91Y2hlcyBgZGV2cmVzLmhgLCBgZ2ZwLmhgLCBhbmQgYGdmcF90eXBlcy5oYC4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyBzb21lIHJlc3RydWN0dXJpbmcgYW5kIG5ldyB1dGlsaXRpZXMuCgpTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgaXQgaW50cm9kdWNlcyBzZXZlcmFsIG5ldyBtYWNyb3Mgd2l0aGluIGBkZXZyZXMuaGA6IGBfX2Rldm1fYWxsb2Nfb2Jqc2AsIGBkZXZtX2ttYWxsb2Nfb2JqYCwgYGRldm1fa21hbGxvY19vYmpzYCwgYF9fZGV2bV9hbGxvY19mbGV4YCwgYGRldm1fa21hbGxvY19mbGV4YCwgYGRldm1fa3phbGxvY19vYmpgLCBgZGV2bV9remFsbG9jX29ianNgLCBhbmQgYGRldm1fa3phbGxvY19mbGV4YC4gVGhlc2UgbmFtZXMgc3Ryb25nbHkgaW1wbHkgbWFuYWdlZCBtZW1vcnkgYWxsb2NhdGlvbiB3aXRoaW4gdGhlIGRldmljZSByZXNvdXJjZSBmcmFtZXdvcmsuIEkgYXNzdW1lIHRoZXNlIGFyZSBjb252ZW5pZW5jZSBtYWNyb3MgZm9yIGFsbG9jYXRpbmcgdmFyaW91cyBkYXRhIHN0cnVjdHVyZXMgd2l0aCBgZGV2cmVzYCBtYW5hZ2VtZW50IGZvciBhdXRvbWF0aWMgZnJlZWluZy4gU2VlbXMgZWZmaWNpZW50IHRvIHJlZHVjZSBib2lsZXIgcGxhdGUuCgpUaGUgc2hpZnQgb2YgYF9fZGVmYXVsdF9nZnBgIGFuZCBgZGVmYXVsdF9nZnBgIGZyb20gYGdmcC5oYCB0byBgZ2ZwX3R5cGVzLmhgIGlzIGxpa2VseSBhIG1pbm9yIHJlZmFjdG9yaW5nLiBUaGlzIGlzIGZpbmUsIGJ1dCBpdCBzZWVtcyBpbnRlcmVzdGluZyBmb3IgdGhlbSB0byBpbmNsdWRlIGRlZmF1bHQgR0ZQIGZsYWdzIGluIGBnZnBfdHlwZXMuaGAuIEkmIzM5O2QgaGF2ZSB0byBsb29rIGF0IHRoZSBvdGhlciBjaGFuZ2VzIHRvIGJlIGNlcnRhaW4sIGJ1dCB0aGlzIG1vdmUgbWlnaHQgYmUgcHJlcGFyYXRvcnkuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHNjb3BlIG9mIHRoaXMgd29yay4gSSBuZWVkIHRvIGtub3cgaWYgbmV3IGNhbGxlcnMgYXJlIGludHJvZHVjZWQsIG9yIGlmIHRoaXMgaXMganVzdCByZWZhY3RvcmluZy4gSSYjMzk7bGwgcmVhY2ggZm9yIGBncmVwcGVyYCBhbmQgc2VlIGlmIGFueSBjb2RlIGlzICphY3R1YWxseSogY2FsbGluZyB0aGVzZSBuZXcgbWFjcm9zLiBUaGF0IHdpbGwgdGVsbCBtZSBpZiB0aGlzIGlzIGEgcHVyZWx5IGludGVybmFsIGNoYW5nZSBvciBpZiBpdCBoYXMgZXh0ZXJuYWwgaW1wbGljYXRpb25zLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2bV9rW216XWFsbG9jXyhvYmp8ZmxleCkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg9NjE9c3RhdGljIGlubGluZSB2b2lkICpkZXZtX2tjYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxuLS1cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTg2LS8qKlxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6ODc6ICogZGV2bV9rbWFsbG9jX29iaiAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSBzaW5nbGUgdHlwZWQgb2JqZWN0XG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC04OC0gKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtOTctICovXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDo5ODojZGVmaW5lIGRldm1fa21hbGxvY19vYmooREVWLCBWQVJfT1JfVFlQRSwgLi4uKVx0XHRcdFx0XFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTk5LVx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSxcdFxcXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTAyLS8qKlxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTAzOiAqIGRldm1fa21hbGxvY19vYmpzIC0gRGV2aWNlLW1hbmFnZWQgYWxsb2NhdGlvbiBvZiBhbiBhcnJheSBvZiBhIHR5cGVkIG9iamVjdFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTA0LSAqIEBERVY6IERldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTEtICovXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxMTI6I2RlZmluZSBkZXZtX2ttYWxsb2Nfb2JqcyhERVYsIFZBUl9PUl9UWVBFLCBDT1VOVCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTEzLVx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNDEtLyoqXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNDI6ICogZGV2bV9rbWFsbG9jX2ZsZXggLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGEgZmxleGlibGUtYXJyYXkgc3RydWN0dXJlXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNDMtICogQERFVjogRGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLlxuLS1cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1Mi0gKi9cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE1MzojZGVmaW5lIGRldm1fa21hbGxvY19mbGV4KERFViwgVkFSX09SX1RZUEUsIEZBTSwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1NC1cdF9fZGV2bV9hbGxvY19mbGV4KGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTU3LS8qIEFsbCBkZXZtX2t6YWxsb2MgYWxpYXNlcyBmb3IgZGV2bV9rbWFsbG9jXyhvYmp8b2Jqc3xmbGV4KS4gKi9cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE1ODojZGVmaW5lIGRldm1fa3phbGxvY19vYmooREVWLCBQLCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNTktXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIDEpXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNjA6I2RlZmluZSBkZXZtX2t6YWxsb2Nfb2JqcyhERVYsIFAsIENPVU5ULCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjEtXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTYyLVx0XHRcdCAgdHlwZW9mKFApLCBDT1VOVClcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE2MzojZGVmaW5lIGRldm1fa3phbGxvY19mbGV4KERFViwgUCwgRkFNLCBDT1VOVCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTY0LVx0X19kZXZtX2FsbG9jX2ZsZXgoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzgzCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiB0aGUgd2VlZHMgb2Yga2VybmVsIG1lbW9yeSBtYW5hZ2VtZW50OgoKKipNZW1vcnkgQWxsb2NhdGlvbiBEZWVwIERpdmUgLSBXaGVyZSBBcmUgTXkgQ2FsbGVycz8qKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW50byB0aGUgbWVtb3J5IGFsbG9jYXRpb24gbGFuZHNjYXBlIHdpdGhpbiB0aGUgZGV2aWNlIGRyaXZlciBjb250ZXh0LCBzcGVjaWZpY2FsbHkgdGhlIGBkZXZtX2ttYWxsb2NgIGFuZCBgZGV2bV9remFsbG9jYCB2YXJpYW50cy4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uLCBiYXNlZCBvbiBwcmV2aW91cyBjb2RlIHJldmlld3MgYW5kIGV4cGVyaWVuY2UsIGlzIHRoYXQgdGhlcmUgc2hvdWxkbiYjMzk7dCBiZSBhbnkgZGlyZWN0IGNhbGxlcnMgb2YgdGhlIG9iamVjdCBhbmQgZmxleCBmb3JtczogYGRldm1fa21hbGxvY19vYmpgLCBgZGV2bV9rbWFsbG9jX29ianNgLCBgZGV2bV9rbWFsbG9jX2ZsZXhgLCBgZGV2bV9remFsbG9jX29iamAsIGBkZXZtX2t6YWxsb2Nfb2Jqc2AsIGFuZCBgZGV2bV9remFsbG9jX2ZsZXhgIGluIHRoZSBjb2RlIGJhc2UgdGhhdCBhcmUgY3VycmVudGx5IGNoZWNrZWQuIFRoZXNlIGFyZSBzcGVjaWFsaXplZCBhbGxvY2F0aW9uIGZ1bmN0aW9ucyB0aGF0IGFyZSB1c3VhbGx5IHVzZWQgaW50ZXJuYWxseSBmb3Igc3BlY2lmaWMgcHVycG9zZXMgd2l0aGluIHRoZSBkcml2ZXIgZnJhbWV3b3JrLgoKQnV0IHdhaXQgYSBtaW51dGUsIEkgc2hvdWxkIGJlIHRob3JvdWdoLiBXaGF0IGFib3V0IHRoZSB1bmRlcmx5aW5nIGFsbG9jYXRpb24gZnVuY3Rpb25zIHRoZXkgYXJlIGJhc2VkIHVwb24/IExldCYjMzk7cyBub3QgbGVhdmUgYW55IHN0b25lIHVudHVybmVkIGhlcmUuIEkgYWxzbyBuZWVkIHRvIGNoZWNrIHRoZSBvY2N1cnJlbmNlcyBvZiBhbnl0aGluZyB0aGF0IG1pZ2h0IGJlIHVzaW5nIGBfX2Rldm1fYWxsb2NfYCAtIGFzIHRoYXQgY2FuIGdpdmUgbWUgY2x1ZXMgb24gaG93IHRob3NlIG9iamVjdCwgZmxleCwgYW5kIG9iamVjdCBmb3JtcyBhcmUgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2Rldm1fYWxsb2NfJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmFzZS9kZXZyZXMuYz0xMzA2PXN0YXRpYyB2b2lkIGRldm1fcGVyY3B1X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpwZGF0YSlcbi0tXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtMTMxNC0vKipcbmRyaXZlcnMvYmFzZS9kZXZyZXMuYzoxMzE1OiAqIF9fZGV2bV9hbGxvY19wZXJjcHUgLSBSZXNvdXJjZS1tYW5hZ2VkIGFsbG9jX3BlcmNwdVxuZHJpdmVycy9iYXNlL2RldnJlcy5jLTEzMTYtICogQGRldjogRGV2aWNlIHRvIGFsbG9jYXRlIHBlci1jcHUgbWVtb3J5IGZvclxuLS1cbmRyaXZlcnMvYmFzZS9kZXZyZXMuYy0xMzI1LSAqL1xuZHJpdmVycy9iYXNlL2RldnJlcy5jOjEzMjY6dm9pZCBfX3BlcmNwdSAqX19kZXZtX2FsbG9jX3BlcmNwdShzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLFxuZHJpdmVycy9iYXNlL2RldnJlcy5jLTEzMjctXHRcdHNpemVfdCBhbGlnbilcbi0tXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtMTM0Ny19XG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmM6MTM0ODpFWFBPUlRfU1lNQk9MX0dQTChfX2Rldm1fYWxsb2NfcGVyY3B1KTtcbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaD02MT1zdGF0aWMgaW5saW5lIHZvaWQgKmRldm1fa2NhbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtNjYtLyoqXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDo2NzogKiBfX2Rldm1fYWxsb2Nfb2JqcyAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2Ygb2JqZWN0cyBvZiBhIGdpdmVuIHR5cGVcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTY4LSAqIEBERVZNX0FMTE9DOiB3aGljaCBkZXZpY2UtbWFuYWdlZCBzaXplLWJhc2VkIGFsbG9jYXRvciB0byB1c2UuXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtNzktICovXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDo4MDojZGVmaW5lIF9fZGV2bV9hbGxvY19vYmpzKERFVk1fQUxMT0MsIERFViwgR0ZQLCBUWVBFLCBDT1VOVClcdFx0XFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTgxLSh7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC05OC0jZGVmaW5lIGRldm1fa21hbGxvY19vYmooREVWLCBWQVJfT1JfVFlQRSwgLi4uKVx0XHRcdFx0XFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjk5Olx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSxcdFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMDAtXHRcdFx0ICB0eXBlb2YoVkFSX09SX1RZUEUpLCAxKVxuLS1cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTExMi0jZGVmaW5lIGRldm1fa21hbGxvY19vYmpzKERFViwgVkFSX09SX1RZUEUsIENPVU5ULCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxMTM6XHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTE0LVx0XHRcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgQ09VTlQpXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTE2LS8qKlxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTE3OiAqIF9fZGV2bV9hbGxvY19mbGV4IC0gRGV2aWNlLW1hbmFnZWQgYWxsb2NhdGlvbiBvZiBhIHRyYWlsaW5nLWZsZXgtYXJyYXkgb2JqZWN0XG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTgtICogQERFVk1fQUxMT0M6IHdoaWNoIGRldmljZS1tYW5hZ2VkIGFsbG9jYXRvciB0byB1c2UuXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTMwLSAqL1xuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTMxOiNkZWZpbmUgX19kZXZtX2FsbG9jX2ZsZXgoREVWTV9BTExPQywgREVWLCBHRlAsIFRZUEUsIEZBTSwgQ09VTlQpXHRcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTMyLSh7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNTMtI2RlZmluZSBkZXZtX2ttYWxsb2NfZmxleChERVYsIFZBUl9PUl9UWVBFLCBGQU0sIENPVU5ULCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNTQ6XHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTU1LVx0XHRcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgRkFNLCBDT1VOVClcbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNTgtI2RlZmluZSBkZXZtX2t6YWxsb2Nfb2JqKERFViwgUCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTU5Olx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTYwLSNkZWZpbmUgZGV2bV9remFsbG9jX29ianMoREVWLCBQLCBDT1VOVCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTYxOlx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE2Mi1cdFx0XHQgIHR5cGVvZihQKSwgQ09VTlQpXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjMtI2RlZmluZSBkZXZtX2t6YWxsb2NfZmxleChERVYsIFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE2NDpcdF9fZGV2bV9hbGxvY19mbGV4KGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjUtXHRcdFx0ICB0eXBlb2YoUCksIEZBTSwgQ09VTlQpXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg9MTk2PWRldm1fa2FzcHJpbnRmKHN0cnVjdCBkZXZpY2UgKmRldiwgZ2ZwX3QgZ2ZwLCBjb25zdCBjaGFyICpmbXQsIC4uLik7XG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMjA5LSNkZWZpbmUgZGV2bV9hbGxvY19wZXJjcHUoZGV2LCB0eXBlKSAgICAgIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoyMTA6XHQoKHR5cGVvZih0eXBlKSBfX3BlcmNwdSAqKV9fZGV2bV9hbGxvY19wZXJjcHUoKGRldiksIHNpemVvZih0eXBlKSwgX19hbGlnbm9mX18odHlwZSkpKVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMjExLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MjEyOnZvaWQgX19wZXJjcHUgKl9fZGV2bV9hbGxvY19wZXJjcHUoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWduKTtcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTIxMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTkzCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgbW92aW5nIGBkZWZhdWx0X2dmcGAgZnJvbSBgaW5jbHVkZS9saW51eC9nZnAuaGAgdG8gYGluY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmhgIGNhdXNlZCBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRvdWJsZS1jaGVjayBhbGwgdGhlIHBsYWNlcyB3aGVyZSBgZGVmYXVsdF9nZnBgIGlzIGFjdHVhbGx5ICp1c2VkKi4gVGltZSB0byBmaXJlIHVwIHRob3NlIHRvb2xzIGFuZCBzZWUgd2hlcmUgdGhlIGNhbGxzIGFyZSBhbmQgaWYgYW55dGhpbmcmIzM5O3MgYnJva2VuLiBUaGlzIGlzIGEgcG90ZW50aWFsbHkgdHJpY2t5IGNoYW5nZSwgc28gYmV0dGVyIHRvIGJlIHRob3JvdWdoLiBJJiMzOTtsbCBmb2N1cyBzcGVjaWZpY2FsbHkgb24gdGhlIGNhbGxlcnMgb2YgYGRlZmF1bHRfZ2ZwYCB0byBlbnN1cmUgbm90aGluZyYjMzk7cyBiZWVuIG1pc3NlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZhdWx0X2dmcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaD02MT1zdGF0aWMgaW5saW5lIHZvaWQgKmRldm1fa2NhbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtOTgtI2RlZmluZSBkZXZtX2ttYWxsb2Nfb2JqKERFViwgVkFSX09SX1RZUEUsIC4uLilcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDo5OTpcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksXHRcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTAwLVx0XHRcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgMSlcbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTItI2RlZmluZSBkZXZtX2ttYWxsb2Nfb2JqcyhERVYsIFZBUl9PUl9UWVBFLCBDT1VOVCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTEzOlx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTExNC1cdFx0XHQgIHR5cGVvZihWQVJfT1JfVFlQRSksIENPVU5UKVxuLS1cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1My0jZGVmaW5lIGRldm1fa21hbGxvY19mbGV4KERFViwgVkFSX09SX1RZUEUsIEZBTSwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE1NDpcdF9fZGV2bV9hbGxvY19mbGV4KGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNTUtXHRcdFx0ICB0eXBlb2YoVkFSX09SX1RZUEUpLCBGQU0sIENPVU5UKVxuLS1cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1OC0jZGVmaW5lIGRldm1fa3phbGxvY19vYmooREVWLCBQLCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNTk6XHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIDEpXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjAtI2RlZmluZSBkZXZtX2t6YWxsb2Nfb2JqcyhERVYsIFAsIENPVU5ULCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNjE6XHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTYyLVx0XHRcdCAgdHlwZW9mKFApLCBDT1VOVClcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE2My0jZGVmaW5lIGRldm1fa3phbGxvY19mbGV4KERFViwgUCwgRkFNLCBDT1VOVCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTY0Olx0X19kZXZtX2FsbG9jX2ZsZXgoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE2NS1cdFx0XHQgIHR5cGVvZihQKSwgRkFNLCBDT1VOVClcbi0tXG5pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oPTI2PWVudW0ge1xuLS1cbmluY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmgtMzg1LS8qIEhlbHBlciBtYWNybyB0byBhdm9pZCBnZnAgZmxhZ3MgaWYgdGhleSBhcmUgdGhlIGRlZmF1bHQgb25lICovXG5pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oOjM4NjojZGVmaW5lIF9fZGVmYXVsdF9nZnAoYSxiLC4uLikgYlxuaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaDozODc6I2RlZmluZSBkZWZhdWx0X2dmcCguLi4pIF9fZGVmYXVsdF9nZnAoLCMjX19WQV9BUkdTX18sR0ZQX0tFUk5FTClcbmluY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmgtMzg4LVxuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oPTEwNzM9dm9pZCAqa21hbGxvY19ub2xvY2soc2l6ZV90IHNpemUsIGdmcF90IGdmcF9mbGFncywgaW50IG5vZGUpO1xuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oLTExMjQtI2RlZmluZSBrbWFsbG9jX29iaihWQVJfT1JfVFlQRSwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTEyNTpcdF9fYWxsb2Nfb2JqcyhrbWFsbG9jLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihWQVJfT1JfVFlQRSksIDEpXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTI2LVxuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oLTExMzYtI2RlZmluZSBrbWFsbG9jX29ianMoVkFSX09SX1RZUEUsIENPVU5ULCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDoxMTM3Olx0X19hbGxvY19vYmpzKGttYWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFZBUl9PUl9UWVBFKSwgQ09VTlQpXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTM4LVxuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNTEtI2RlZmluZSBrbWFsbG9jX2ZsZXgoVkFSX09SX1RZUEUsIEZBTSwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNTI6XHRfX2FsbG9jX2ZsZXgoa21hbGxvYywgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoVkFSX09SX1RZUEUpLCBGQU0sIENPVU5UKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE1My1cbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTU1LSNkZWZpbmUga3phbGxvY19vYmooUCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTE1NjpcdF9fYWxsb2Nfb2JqcyhremFsbG9jLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgMSlcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNTctI2RlZmluZSBremFsbG9jX29ianMoUCwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNTg6XHRfX2FsbG9jX29ianMoa3phbGxvYywgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIENPVU5UKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE1OS0jZGVmaW5lIGt6YWxsb2NfZmxleChQLCBGQU0sIENPVU5ULCAuLi4pXHRcdFxcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDoxMTYwOlx0X19hbGxvY19mbGV4KGt6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCBGQU0sIENPVU5UKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE2MS1cbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTYzLSNkZWZpbmUga3ZtYWxsb2Nfb2JqKFAsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNjQ6XHRfX2FsbG9jX29ianMoa3ZtYWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE2NS0jZGVmaW5lIGt2bWFsbG9jX29ianMoUCwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNjY6XHRfX2FsbG9jX29ianMoa3ZtYWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCBDT1VOVClcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNjctI2RlZmluZSBrdm1hbGxvY19mbGV4KFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNjg6XHRfX2FsbG9jX2ZsZXgoa3ZtYWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCBGQU0sIENPVU5UKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE2OS1cbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTcxLSNkZWZpbmUga3Z6YWxsb2Nfb2JqKFAsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNzI6XHRfX2FsbG9jX29ianMoa3Z6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE3My0jZGVmaW5lIGt2emFsbG9jX29ianMoUCwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNzQ6XHRfX2FsbG9jX29ianMoa3Z6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCBDT1VOVClcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNzUtI2RlZmluZSBrdnphbGxvY19mbGV4KFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNzY6XHRfX2FsbG9jX2ZsZXgoa3Z6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCBGQU0sIENPVU5UKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE3Ny1cbi0tXG50b29scy9pbmNsdWRlL2xpbnV4L2dmcC5oLTgtLyogSGVscGVyIG1hY3JvIHRvIGF2b2lkIGdmcCBmbGFncyBpZiB0aGV5IGFyZSB0aGUgZGVmYXVsdCBvbmUgKi9cbnRvb2xzL2luY2x1ZGUvbGludXgvZ2ZwLmg6OTojZGVmaW5lIF9fZGVmYXVsdF9nZnAoYSwuLi4pIGFcbnRvb2xzL2luY2x1ZGUvbGludXgvZ2ZwLmg6MTA6I2RlZmluZSBkZWZhdWx0X2dmcCguLi4pIF9fZGVmYXVsdF9nZnAoX19WQV9BUkdTX18gX19WQV9PUFRfXygsKSBHRlBfS0VSTkVMKVxudG9vbHMvaW5jbHVkZS9saW51eC9nZnAuaC0xMS1cbi0tXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaD0yMDA9c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQga21lbV9jYWNoZV9zaGVhZl9zaXplKHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcbi0tXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaC0yMTEtI2RlZmluZSBremFsbG9jX29iaihQLCAuLi4pIFxcXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaDoyMTI6XHRfX2FsbG9jX29ianMoa3phbGxvYywgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIDEpXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaC0yMTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0MDQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBkZWZhdWx0X2dmcGAgUmVsb2NhdGlvbioqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBkZWZhdWx0X2dmcGAgaGFzIHBvcHBlZCB1cCBpbiBgaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmhgIG5vdywgd2hlcmUgaXQgd2FzbiYjMzk7dCBiZWZvcmUuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIFByZXZpb3VzbHksIGl0IHdhcyBvbmx5IGJlaW5nIHVzZWQgd2l0aGluIGBpbmNsdWRlL2xpbnV4L3NsYWIuaGAuIFRoZSBjb3JlIHRlYW0gbXVzdCBiZSBtYWtpbmcgc29tZSBhZGp1c3RtZW50cyBoZXJlLiBUaGUgY29tbWl0IG1lc3NhZ2UgaW5kaWNhdGVzIGEgbW92ZSBmcm9tIGBpbmNsdWRlL2xpbnV4L2dmcC5oYCB0byBgaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaGAsIHdoaWNoIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGEgY2hhbmdlIGluIGRlcGVuZGVuY2llcy4gVGhlIHJhdGlvbmFsZSBpcyB0aGF0IGBkZXZyZXMuaGAgZWl0aGVyIGluY2x1ZGVzIGBnZnBfdHlwZXMuaGAgZGlyZWN0bHksIG9yIHNpbXBseSBuZWVkcyBgZGVmYXVsdF9nZnBgIHdpdGhvdXQgcHVsbGluZyBpbiB0aGUgZW50aXJlIGBnZnAuaGAgaGVhZGVyLiBUaGlzIGlzIHRoZSBtb3JlIGxpa2VseSBzY2VuYXJpbywgc28gSSBzaG91bGQgc2VlIGlmIGBkZXZyZXMuaGAgaGFzIGEgbmV3IGluY2x1c2lvbi4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGluY2x1ZGUgZGlyZWN0aXZlcyB3aXRoaW4gYGRldnJlcy5oYCB0byB2ZXJpZnkgdGhpcyB0aGVvcnkuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYW55IG5ldyBpbmNsdWRlcywgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoaXMga2VlcHMgdXAgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZSBrZXJuZWwuIFRoaXMgaXMgcHJvYmFibHkgdG8gcmVkdWNlIG92ZXJhbGwgZGVwZW5kZW5jeSBzaXplIGFuZCBpbXByb3ZlIGJ1aWxkIHRpbWVzLCBhIGdvb2QgbW92ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4gICAyOlx0I2lmbmRlZiBfREVWSUNFX0RFVlJFU19IX1xuICAgMzpcdCNkZWZpbmUgX0RFVklDRV9ERVZSRVNfSF9cbiAgIDQ6XHRcbiAgIDU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICAgNjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2dmcF90eXBlcy5oXHUwMDNlXG4gICA3Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbnVtYS5oXHUwMDNlXG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvb3ZlcmZsb3cuaFx1MDAzZVxuICAgOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0ZGFyZy5oXHUwMDNlXG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuICAxMTpcdCNpbmNsdWRlIFx1MDAzY2FzbS9idWcuaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2FzbS9wZXJjcHUuaFx1MDAzZVxuICAxMzpcdFxuICAxNDpcdHN0cnVjdCBkZXZpY2U7XG4gIDE1Olx0c3RydWN0IGRldmljZV9ub2RlO1xuICAxNjpcdHN0cnVjdCByZXNvdXJjZTtcbiAgMTc6XHRcbiAgMTg6XHQvKiBkZXZpY2UgcmVzb3VyY2UgbWFuYWdlbWVudCAqL1xuICAxOTpcdHR5cGVkZWYgdm9pZCAoKmRyX3JlbGVhc2VfdCkoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpyZXMpO1xuICAyMDpcdHR5cGVkZWYgaW50ICgqZHJfbWF0Y2hfdCkoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpyZXMsIHZvaWQgKm1hdGNoX2RhdGEpO1xuICAyMTpcdFxuICAyMjpcdHZvaWQgKiBfX21hbGxvY1xuICAyMzpcdF9fZGV2cmVzX2FsbG9jX25vZGUoZHJfcmVsZWFzZV90IHJlbGVhc2UsIHNpemVfdCBzaXplLCBnZnBfdCBnZnAsIGludCBuaWQsIGNvbnN0IGNoYXIgKm5hbWUpO1xuICAyNDpcdCNkZWZpbmUgZGV2cmVzX2FsbG9jKHJlbGVhc2UsIHNpemUsIGdmcCkgXFxcbiAgMjU6XHRcdF9fZGV2cmVzX2FsbG9jX25vZGUocmVsZWFzZSwgc2l6ZSwgZ2ZwLCBOVU1BX05PX05PREUsICNyZWxlYXNlKVxuICAyNjpcdCNkZWZpbmUgZGV2cmVzX2FsbG9jX25vZGUocmVsZWFzZSwgc2l6ZSwgZ2ZwLCBuaWQpIFxcXG4gIDI3Olx0XHRfX2RldnJlc19hbGxvY19ub2RlKHJlbGVhc2UsIHNpemUsIGdmcCwgbmlkLCAjcmVsZWFzZSlcbiAgMjg6XHRcbiAgMjk6XHR2b2lkIGRldnJlc19mcmVlKHZvaWQgKnJlcyk7XG4gIDMwOlx0dm9pZCBkZXZyZXNfYWRkKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzKTtcbiAgMzE6XHR2b2lkICpkZXZyZXNfZmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIGRyX3JlbGVhc2VfdCByZWxlYXNlLCBkcl9tYXRjaF90IG1hdGNoLCB2b2lkICptYXRjaF9kYXRhKTtcbiAgMzI6XHR2b2lkICpkZXZyZXNfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqbmV3X3JlcywgZHJfbWF0Y2hfdCBtYXRjaCwgdm9pZCAqbWF0Y2hfZGF0YSk7XG4gIDMzOlx0dm9pZCAqZGV2cmVzX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGRyX3JlbGVhc2VfdCByZWxlYXNlLCBkcl9tYXRjaF90IG1hdGNoLCB2b2lkICptYXRjaF9kYXRhKTtcbiAgMzQ6XHRpbnQgZGV2cmVzX2Rlc3Ryb3koc3RydWN0IGRldmljZSAqZGV2LCBkcl9yZWxlYXNlX3QgcmVsZWFzZSwgZHJfbWF0Y2hfdCBtYXRjaCwgdm9pZCAqbWF0Y2hfZGF0YSk7XG4gIDM1Olx0aW50IGRldnJlc19yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldiwgZHJfcmVsZWFzZV90IHJlbGVhc2UsIGRyX21hdGNoX3QgbWF0Y2gsIHZvaWQgKm1hdGNoX2RhdGEpO1xuICAzNjpcdFxuICAzNzpcdC8qIGRldnJlcyBncm91cCAqL1xuICAzODpcdHZvaWQgKiBfX211c3RfY2hlY2sgZGV2cmVzX29wZW5fZ3JvdXAoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICppZCwgZ2ZwX3QgZ2ZwKTtcbiAgMzk6XHR2b2lkIGRldnJlc19jbG9zZV9ncm91cChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmlkKTtcbiAgNDA6XHR2b2lkIGRldnJlc19yZW1vdmVfZ3JvdXAoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICppZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAwOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTk0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ2hlY2tpbmcgTWVtb3J5IEFsbG9jYXRpb24gRmxhZ3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGhlYWRlciBmaWxlcywgc3BlY2lmaWNhbGx5IGBkZXZyZXMuaGAuIEFuZCBJIHNlZSB0aGF0IGl0IHB1bGxzIGluIGAmbHQ7bGludXgvZ2ZwX3R5cGVzLmgmZ3Q7YC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYnV0IG5vdCBlbnRpcmVseSBzdXJwcmlzaW5nLCBnaXZlbiB0aGF0IGRldmljZSByZXNvdXJjZXMgb2Z0ZW4gbmVlZCB0byBhbGxvY2F0ZSBtZW1vcnkuIE5vdywgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhIGdvb2QgZ3Jhc3Agb24gdGhpcyBtZW1vcnkgc2l0dWF0aW9uLCBJJiMzOTtsbCBnbyBvbmUgc3RlcCBmdXJ0aGVyIGFuZCBkb3VibGUtY2hlY2sgaG93IGAmbHQ7bGludXgvZ2ZwLmgmZ3Q7YCBoYW5kbGVzIHRoaW5ncy4gSSBrbm93IGl0ICpzaG91bGQqIGFsc28gaW5jbHVkZSBgJmx0O2xpbnV4L2dmcF90eXBlcy5oJmd0O2AsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGFsbG9jYXRpb24gZmxhZ3MgYW5kIHRoZWlyIGNvbW1vbiB1c2UgdGhyb3VnaG91dCB0aGUga2VybmVsLiBJJiMzOTttIGp1c3QgdmVyaWZ5aW5nIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc25lYWt5IG9taXNzaW9ucyBvciB3ZWlyZCBpbmNsdWRlIHBhdGggaXNzdWVzLiBHb3R0YSBtYWtlIHN1cmUgZXZlcnl0aGluZyYjMzk7cyBjb25zaXN0ZW50IGFuZCB0aGF0IHRoZSBkZWZpbml0aW9ucyBhcmUgYWNjZXNzaWJsZSB3aGVyZSB0aGV5IG5lZWQgdG8gYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAwOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9nZnAuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4gICAyOlx0I2lmbmRlZiBfX0xJTlVYX0dGUF9IXG4gICAzOlx0I2RlZmluZSBfX0xJTlVYX0dGUF9IXG4gICA0Olx0XG4gICA1Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZ2ZwX3R5cGVzLmhcdTAwM2VcbiAgIDY6XHRcbiAgIDc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tbXpvbmUuaFx1MDAzZVxuICAgODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3RvcG9sb2d5LmhcdTAwM2VcbiAgIDk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9hbGxvY190YWcuaFx1MDAzZVxuICAxMDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2NsZWFudXAuaFx1MDAzZVxuICAxMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3NjaGVkLmhcdTAwM2VcbiAgMTI6XHRcbiAgMTM6XHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7XG4gIDE0Olx0c3RydWN0IG1lbXBvbGljeTtcbiAgMTU6XHRcbiAgMTY6XHRzdGF0aWMgaW5saW5lIGJvb2wgZ2ZwZmxhZ3NfYWxsb3dfYmxvY2tpbmcoY29uc3QgZ2ZwX3QgZ2ZwX2ZsYWdzKVxuICAxNzpcdHtcbiAgMTg6XHRcdHJldHVybiAhIShnZnBfZmxhZ3MgXHUwMDI2IF9fR0ZQX0RJUkVDVF9SRUNMQUlNKTtcbiAgMTk6XHR9XG4gIDIwOlx0XG4gIDIxOlx0c3RhdGljIGlubGluZSBib29sIGdmcGZsYWdzX2FsbG93X3NwaW5uaW5nKGNvbnN0IGdmcF90IGdmcF9mbGFncylcbiAgMjI6XHR7XG4gIDIzOlx0XHQvKlxuICAyNDpcdFx0ICogIV9fR0ZQX0RJUkVDVF9SRUNMQUlNIC1cdTAwM2UgZGlyZWN0IGNsYWltIGlzIG5vdCBhbGxvd2VkLlxuICAyNTpcdFx0ICogIV9fR0ZQX0tTV0FQRF9SRUNMQUlNIC1cdTAwM2UgaXQmIzM5O3Mgbm90IHNhZmUgdG8gd2FrZSB1cCBrc3dhcGQuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAwOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjA2CgkJCQkJCQlvdXRwdXQ6IDYxCgkJCQkJCQl0aG91Z2h0czogMTIzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcmlhZ2UgQXNzZXNzbWVudDogV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHRoZSBjb3JlIHByaW5jaXBsZTogcmVhY2hhYmlsaXR5LiBDYW4gdGhpcyBjb2RlICphY3R1YWxseSogZXhlY3V0ZSBpbiBhIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnQ/IFRoYXQmIzM5O3MgdGhlIHByaW1hcnkgZ2F0ZS4gSSYjMzk7bSBzZWVpbmcgY2hhbmdlcyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBkZXZpY2UgcmVzb3VyY2UgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGdmcC5oYCwgYGdmcF90eXBlcy5oYCwgYW5kIGBkZXZyZXMuaGAgaGVhZGVyIGZpbGVzLgoKSW5pdGlhbGx5LCBJIHNlZSBgZGVmYXVsdF9nZnBgIGhhcyBiZWVuIG1vdmVkIGZyb20gYGdmcC5oYCB0byBgZ2ZwX3R5cGVzLmhgLiBTaW5jZSBgZ2ZwLmhgIGluY2x1ZGVzIGBnZnBfdHlwZXMuaGAsIHRoaXMgaXMgYSByZWxvY2F0aW9uLCBub3QgYSBtb2RpZmljYXRpb24gb2YgdGhlIGRlZmluaXRpb24uIEFueSBjb2RlIHRoYXQgaW5jbHVkZWQgYGdmcC5oYCAqYWxyZWFkeSogaGFkIGFjY2VzcyB0byBgZGVmYXVsdF9nZnBgLiBJdCBpcyBub3cgc2ltcGx5IG9idGFpbmVkIHZpYSBhIGRpZmZlcmVudCBpbmNsdWRlLiBJdCBzZWVtcyBsaWtlIGEgcmVmYWN0b3IgdG8gaW1wcm92ZSBoZWFkZXIgZmlsZSBzdHJ1Y3R1cmUsIGFuZCBzaG91bGQgbm90IGFmZmVjdCBjb21waWxlZCBjb2RlLgoKTmV4dCwgdGhlIGBkZXZyZXMuaGAgY2hhbmdlcy4gSGVyZSwgdGhlcmUgYXJlICpuZXcqIG1hY3JvcyBhZGRlZCByZWxhdGVkIHRvIG1hbmFnZWQgbWVtb3J5IGFsbG9jYXRpb246IGBkZXZtX2ttYWxsb2Nfb2JqYCwgYGRldm1fa21hbGxvY19vYmpzYCwgYGRldm1fa21hbGxvY19mbGV4YCwgYGRldm1fa3phbGxvY19vYmpgLCBldGMuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IGFyZSB0aGVzZSBtYWNyb3MgKmFjdHVhbGx5IHVzZWQqIGFueXdoZXJlIGluIHRoZSBrZXJuZWw/IEkgaW5pdGlhbGx5IHVzZWQgYSBgZ3JlcHBlcmAgc3R5bGUgc2VhcmNoIGFuZCBmb3VuZCAqbm90aGluZyogaW4gdGhlIGNvZGUgYmFzZSB0aGF0IHVzZXMgdGhlc2UgbWFjcm9zISBJdCBzZWVtcyB0aGUgYWRkZWQgY29kZSBpcyBlbnRpcmVseSB1bnVzZWQuCgpHaXZlbiB0aGUgdHJpYWdlIHBoaWxvc29waHksIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGlzIG5vdCBhbiBhY2NpZGVudGFsIG92ZXJzaWdodCAobWF5YmUgZnJvbSBhbiBvbGRlciBjb21taXQgb3IgYSBkaWZmZXJlbnQgY29kZSBiYXNlKS4gSSB3aWxsIGNoZWNrIGV2ZXJ5IHNpbmdsZSBzeW1ib2wgdG8gYmUgMTAwJSBzdXJlOgotIGBfX2Rldm1fYWxsb2Nfb2Jqc2AKLSBgZGV2bV9rbWFsbG9jX29iamAKLSBgZGV2bV9rbWFsbG9jX29ianNgCi0gYF9fZGV2bV9hbGxvY19mbGV4YAotIGBkZXZtX2ttYWxsb2NfZmxleGAKLSBgZGV2bV9remFsbG9jX29iamAKLSBgZGV2bV9remFsbG9jX29ianNgCi0gYGRldm1fa3phbGxvY19mbGV4YAoKSWYgdGhvc2UgbWFjcm9zIGFyZSBkZWZpbmVkIGJ1dCBuZXZlciBpbnZva2VkLCBJIGNvbnNpZGVyIHRoZSBjaGFuZ2VzIHRvIGJlIGVxdWl2YWxlbnQgdG8gZGVhZCBjb2RlLiBJZiB0aGlzIGNvZGUgaXMgbm90IHJlYWNoYWJsZSwgdGhlbiBpdCBkb2VzbiYjMzk7dCBuZWVkIHRvIGJlIGZ1enplZC4gTXkgZGVjaXNpb24gaGluZ2VzIG9uIHdoZXRoZXIgdGhlc2UgbWFjcm9zIGhhdmUgY2FsbGVycyBvciBub3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAwOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rldm1fa21hbGxvY19vYmp8ZGV2bV9rbWFsbG9jX29ianN8ZGV2bV9rbWFsbG9jX2ZsZXh8ZGV2bV9remFsbG9jX29ianxkZXZtX2t6YWxsb2Nfb2Jqc3xkZXZtX2t6YWxsb2NfZmxleCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaD02MT1zdGF0aWMgaW5saW5lIHZvaWQgKmRldm1fa2NhbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtODYtLyoqXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDo4NzogKiBkZXZtX2ttYWxsb2Nfb2JqIC0gRGV2aWNlLW1hbmFnZWQgYWxsb2NhdGlvbiBvZiBhIHNpbmdsZSB0eXBlZCBvYmplY3RcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTg4LSAqIEBERVY6IERldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC05Ny0gKi9cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjk4OiNkZWZpbmUgZGV2bV9rbWFsbG9jX29iaihERVYsIFZBUl9PUl9UWVBFLCAuLi4pXHRcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtOTktXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLFx0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMDItLyoqXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxMDM6ICogZGV2bV9rbWFsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGFuIGFycmF5IG9mIGEgdHlwZWQgb2JqZWN0XG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMDQtICogQERFVjogRGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLlxuLS1cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTExMS0gKi9cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjExMjojZGVmaW5lIGRldm1fa21hbGxvY19vYmpzKERFViwgVkFSX09SX1RZUEUsIENPVU5ULCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTMtXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuLS1cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE0MS0vKipcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE0MjogKiBkZXZtX2ttYWxsb2NfZmxleCAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSBmbGV4aWJsZS1hcnJheSBzdHJ1Y3R1cmVcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE0My0gKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTUyLSAqL1xuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTUzOiNkZWZpbmUgZGV2bV9rbWFsbG9jX2ZsZXgoREVWLCBWQVJfT1JfVFlQRSwgRkFNLCBDT1VOVCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTU0LVx0X19kZXZtX2FsbG9jX2ZsZXgoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNTctLyogQWxsIGRldm1fa3phbGxvYyBhbGlhc2VzIGZvciBkZXZtX2ttYWxsb2NfKG9ianxvYmpzfGZsZXgpLiAqL1xuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTU4OiNkZWZpbmUgZGV2bV9remFsbG9jX29iaihERVYsIFAsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1OS1cdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgMSlcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE2MDojZGVmaW5lIGRldm1fa3phbGxvY19vYmpzKERFViwgUCwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE2MS1cdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjItXHRcdFx0ICB0eXBlb2YoUCksIENPVU5UKVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTYzOiNkZWZpbmUgZGV2bV9remFsbG9jX2ZsZXgoREVWLCBQLCBGQU0sIENPVU5ULCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjQtXHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDkwNQoJCQkJCQkJb3V0cHV0OiAxNDIKCQkJCQkJCXRob3VnaHRzOiAxMjU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBLZXJuZWwgUGF0Y2ggZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdC4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNldmVyYWwgbmV3IGRldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gaGVscGVyIG1hY3JvczogYGRldm1fa21hbGxvY19vYmpgLCBgZGV2bV9remFsbG9jX29iamAsIGFuZCBhIGZldyBvdGhlcnMsIGJ1dCBjcml0aWNhbGx5LCBub25lIG9mIHRoZXNlIGFyZSBhY3R1YWxseSB1c2VkICphbnl3aGVyZSogaW4gdGhlIGN1cnJlbnQga2VybmVsIHNvdXJjZS4gU2luY2UgdGhleSYjMzk7cmUgbWFjcm9zLCB3aGljaCBhcmUgcHJlcHJvY2Vzc29yIGRlZmluaXRpb25zLCBpZiB0aGV5IGFyZW4mIzM5O3QgaW52b2tlZCBpbiBhbnkgQyBmaWxlIG9yIGhlYWRlciwgdGhlIGNvbXBpbGVyIGRvZXNuJiMzOTt0IGdlbmVyYXRlIGFueSBtYWNoaW5lIGNvZGUgZm9yIHRoZW0uIFNvLCBpbiB0ZXJtcyBvZiBleGVjdXRhYmxlIGNvZGUsIHRoaXMgcGF0Y2ggbGl0ZXJhbGx5IGRvZXMgbm90aGluZy4gWmVyby4gSXQgYWxzbyBtb3ZlcyB0aGUgZXhpc3RpbmcgYGRlZmF1bHRfZ2ZwYCBtYWNybyBmcm9tIGBsaW51eC9nZnAuaGAgdG8gYGxpbnV4L2dmcF90eXBlcy5oYCwgYnV0IHdpdGggbm8gY2hhbmdlIHRvIHRoZSBtYWNybyYjMzk7cyAqZGVmaW5pdGlvbiouIEkmIzM5O3ZlIHZlcmlmaWVkIHRoaXMgd2l0aCBhIGRpZmYuIGBnZnAuaGAgKmluY2x1ZGVzKiBgZ2ZwX3R5cGVzLmhgIHNvIHRoZSBkZWZpbml0aW9uIGlzIHN0aWxsIGF2YWlsYWJsZSBpbiBleGlzdGluZyBjYWxsLXNpdGVzIGFuZCBleHBhbmRpbmcgdG8gdGhlIHNhbWUgdG9rZW5zLgoKTm93LCBsZXQmIzM5O3MgY2FyZWZ1bGx5IGV2YWx1YXRlIHRoZSAmIzM0O25lZ2F0aXZlIGNyaXRlcmlhJiMzNDsgZm9yIGRldGVybWluaW5nIGZ1enppbmcgZWxpZ2liaWxpdHkuIEl0JiMzOTtzIGEgYmluYXJ5IGRlY2lzaW9uOiBzaG91bGQgd2UgZnV6eiwgb3Igbm90PyBUaGUgcmVsZXZhbnQgc2VjdGlvbiBzcGVjaWZpY2FsbHkgbWVudGlvbnMgJiMzNDtOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzLCYjMzQ7IGFuZCB0aGF0IGluY2x1ZGVzICYjMzQ7VW51c2VkIG1hY3JvIGRlZmluaXRpb25zLiYjMzQ7IFVudXNlZCBtYWNyb3MgKmRvbiYjMzk7dCogcHJvZHVjZSBhbnkgZXhlY3V0YWJsZSBjb2RlLCBhbmQgd2UmIzM5O3ZlIGVzdGFibGlzaGVkIHRoYXQgdGhlcmUgYXJlIG5vIG1hY3JvIGNhbGxzLiBBbHNvLCBTZWN0aW9uIDQgdGFsa3MgYWJvdXQgaW5saW5lZCBmdW5jdGlvbnMgYW5kIHRoZSBuZWVkIHRvIGZpbmQgY2FsbGVycyBpZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycy4gQnV0IGhlcmUsIHRoZXJlIGFyZW4mIzM5O3QgZXZlbiBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucywgYW5kIHRoZXJlIGFyZSBOTyBjYWxsZXJzIGluIGFueSAuYyBmaWxlISBUaGVzZSBhcmUgdW51c2VkIHByZXByb2Nlc3NvciBtYWNyb3MgKGhlbHBlciBBUEkgaW50cm9kdWNlZCB3aXRob3V0IGNhbGxlcnMgeWV0KS4gQmVjYXVzZSBubyBjYWxsZXIgZXhpc3RzLCB0aGVyZSBpcyBubyBzeW1ib2wsIG5vIGNvZGUgaW4gdm1saW51eCwgYW5kIG5vIHBhdGggdGhhdCBleGVjdXRlcyBhbnkgb2YgdGhlIG1vZGlmaWVkIG9yIGFkZGVkIGNvZGUuCgpUaGUgY3JpdGVyaWEgc3RhdGU6ICYjMzQ7UkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6IEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLi4uJiMzNDsgU28sIGJlY2F1c2UgdGhlc2UgbWFjcm9zIGFyZSBuZXZlciBpbnN0YW50aWF0ZWQgYW55d2hlcmUsIHRoZXkgYXJlIGNvbXBsZXRlbHkgbm9uLWV4ZWN1dGFibGUgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIGRvdWJsZS1jaGVjazogdGhlIGRpZmYgc2hvd2VkIHRoZSBhZGRpdGlvbnMgdG8gYGRldnJlcy5oYCwgdGhlIHJlbW92YWxzIGZyb20gYGdmcC5oYCwgYW5kIHRoZSBhZGRpdGlvbnMgdG8gYGdmcF90eXBlcy5oYC4gQnV0IHRoZSBkZWZpbml0aW9uIG9mIGBkZWZhdWx0X2dmcGAgaXRzZWxmIGlzIGlkZW50aWNhbCBpbiBib3RoIGxvY2F0aW9ucywgbWVhbmluZyBubyBmdW5jdGlvbmFsIGNoYW5nZS4KCkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgbmV3IGRldnJlcyBhbGxvY2F0aW9uIGhlbHBlciBtYWNyb3MgdGhhdCBhcmVuJiMzOTt0IGNhbGxlZCBhbnl3aGVyZSAqeWV0KiBhbmQgbW92aW5nIHRoZSBgZGVmYXVsdF9nZnBgIGhlbHBlciBtYWNybyB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCBkb2VzbiYjMzk7dCBhZGQgb3IgYWx0ZXIgYW55IGNvbXBpbGVkIGV4ZWN1dGFibGUgY29kZS4gVGhlcmVmb3JlOgoKKiAgIGBXb3J0aEZ1enppbmdgOiBmYWxzZQoqICAgYEVuYWJsZUNvbmZpZ3NgOiBcWyBdCiogICBgRm9jdXNTeW1ib2xzYDogXFsgXQoqICAgYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBvbmx5IGludHJvZHVjZXMgbmV3IGRldnJlcyBhbGxvY2F0aW9uIG1hY3JvcyAoYGRldm1fa21hbGxvY19vYmpgLCBgZGV2bV9remFsbG9jX29iamAsIGV0Yy4pIHdoaWNoIGN1cnJlbnRseSBoYXZlIG5vIGNhbGxlcnMgaW4gdGhlIGtlcm5lbCBjb2RlYmFzZSwgYW5kIG1vdmVzIHRoZSBkZWZpbml0aW9uIG9mIGBkZWZhdWx0X2dmcGAgZnJvbSBgbGludXgvZ2ZwLmhgIHRvIGBsaW51eC9nZnBfdHlwZXMuaGAgd2l0aCBubyBmdW5jdGlvbmFsIGNoYW5nZS4gTm8gY29tcGlsZWQgZXhlY3V0YWJsZSBjb2RlIGlzIGFkZGVkIG9yIG1vZGlmaWVkLgoKQWxsIGNsZWFyLiBMZXQmIzM5O3Mgc2VuZCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBuZXcgZGV2cmVzIGFsbG9jYXRpb24gaGVscGVyIG1hY3JvcyAoZGV2bV9rbWFsbG9jX29iaiwgZGV2bV9remFsbG9jX29iaiwgZGV2bV9rbWFsbG9jX2ZsZXgsIGV0Yy4pIHdoaWNoIGN1cnJlbnRseSBoYXZlIG5vIGNhbGxlcnMgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCBjb2RlYmFzZSwgYW5kIG1vdmVzIHRoZSBtYWNybyBkZWZpbml0aW9uIG9mIGRlZmF1bHRfZ2ZwIGZyb20gbGludXgvZ2ZwLmggdG8gbGludXgvZ2ZwX3R5cGVzLmggd2l0aCBubyBjaGFuZ2UgaW4gbG9naWMuIEJlY2F1c2Ugbm8gY2FsbGVycyBleGlzdCBmb3IgdGhlIG5ldyBtYWNyb3MsIG5vIGV4ZWN1dGFibGUga2VybmVsIGNvZGUgaXMgYWRkZWQgb3IgYWx0ZXJlZCwgbWFraW5nIHRoZSBjaGFuZ2VzIG5vbi1leGVjdXRhYmxlIGFuZCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGludHJvZHVjZXMgbmV3IGRldnJlcyBhbGxvY2F0aW9uIGhlbHBlciBtYWNyb3MgKGRldm1fa21hbGxvY19vYmosIGRldm1fa3phbGxvY19vYmosIGRldm1fa21hbGxvY19mbGV4LCBldGMuKSB3aGljaCBjdXJyZW50bHkgaGF2ZSBubyBjYWxsZXJzIGFueXdoZXJlIGluIHRoZSBrZXJuZWwgY29kZWJhc2UsIGFuZCBtb3ZlcyB0aGUgbWFjcm8gZGVmaW5pdGlvbiBvZiBkZWZhdWx0X2dmcCBmcm9tIGxpbnV4L2dmcC5oIHRvIGxpbnV4L2dmcF90eXBlcy5oIHdpdGggbm8gY2hhbmdlIGluIGxvZ2ljLiBCZWNhdXNlIG5vIGNhbGxlcnMgZXhpc3QgZm9yIHRoZSBuZXcgbWFjcm9zLCBubyBleGVjdXRhYmxlIGtlcm5lbCBjb2RlIGlzIGFkZGVkIG9yIGFsdGVyZWQsIG1ha2luZyB0aGUgY2hhbmdlcyBub24tZXhlY3V0YWJsZSBhbmQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI2OjU5LjIzMTU3MDU1N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NTQ5OTIyNDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIG5ldyBkZXZyZXMgYWxsb2NhdGlvbiBoZWxwZXIgbWFjcm9zIChkZXZtX2ttYWxsb2Nfb2JqLCBkZXZtX2t6YWxsb2Nfb2JqLCBkZXZtX2ttYWxsb2NfZmxleCwgZXRjLikgd2hpY2ggY3VycmVudGx5IGhhdmUgbm8gY2FsbGVycyBhbnl3aGVyZSBpbiB0aGUga2VybmVsIGNvZGViYXNlLCBhbmQgbW92ZXMgdGhlIG1hY3JvIGRlZmluaXRpb24gb2YgZGVmYXVsdF9nZnAgZnJvbSBsaW51eC9nZnAuaCB0byBsaW51eC9nZnBfdHlwZXMuaCB3aXRoIG5vIGNoYW5nZSBpbiBsb2dpYy4gQmVjYXVzZSBubyBjYWxsZXJzIGV4aXN0IGZvciB0aGUgbmV3IG1hY3Jvcywgbm8gZXhlY3V0YWJsZSBrZXJuZWwgY29kZSBpcyBhZGRlZCBvciBhbHRlcmVkLCBtYWtpbmcgdGhlIGNoYW5nZXMgbm9uLWV4ZWN1dGFibGUgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI2OjU5LjIzMTU3ODM4N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA0MzI5MjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWMxZjQ2Y2IzZmQ5OWFmMDg1MTg3NmZhYTc1NjhlNzA2YmNhMjEwN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMDoyNjo1OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaCBiL2luY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oXFxuaW5kZXggMTRhYjkxNTliZGRhNS4uNzY1NmM5ZWNkNGRhYiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oXFxuQEAgLTYyLDYgKzYyLDEwOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKmRldm1fa2NhbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX1xcbiB7XFxuIFxcdHJldHVybiBkZXZtX2ttYWxsb2NfYXJyYXkoZGV2LCBuLCBzaXplLCBmbGFncyB8IF9fR0ZQX1pFUk8pO1xcbiB9XFxuK1xcbisvKipcXG4rICogX19kZXZtX2FsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIG9iamVjdHMgb2YgYSBnaXZlbiB0eXBlXFxuKyAqIEBERVZNX0FMTE9DOiB3aGljaCBkZXZpY2UtbWFuYWdlZCBzaXplLWJhc2VkIGFsbG9jYXRvciB0byB1c2UuXFxuKyAqIEBERVY6IGRldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cXG4rICogQEdGUDogR0ZQIGZsYWdzIGZvciB0aGUgYWxsb2NhdGlvbi5cXG4rICogQFRZUEU6IHR5cGUgdG8gYWxsb2NhdGUgc3BhY2UgZm9yLlxcbisgKiBAQ09VTlQ6IGhvdyBtYW55IEBUWVBFIG9iamVjdHMgdG8gYWxsb2NhdGUuXFxuKyAqXFxuKyAqIERldmljZS1tYW5hZ2VkIGNvdW50ZXJwYXJ0IG9mIF9fYWxsb2Nfb2JqcygpLlxcbisgKiBAREVWTV9BTExPQyB0YWtlcyAoQERFViwgc2l6ZSwgZ2ZwKS5cXG4rICpcXG4rICogUmV0dXJuczogTmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgdG8gKGZpcnN0KSBAVFlQRSBvZiBAQ09VTlQtbWFueSBhbGxvY2F0ZWRcXG4rICogQFRZUEUgb2JqZWN0cywgb3IgTlVMTCBvbiBmYWlsdXJlLlxcbisgKi9cXG4rI2RlZmluZSBfX2Rldm1fYWxsb2Nfb2JqcyhERVZNX0FMTE9DLCBERVYsIEdGUCwgVFlQRSwgQ09VTlQpXFx0XFx0XFxcXFxcbisoe1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0Y29uc3Qgc2l6ZV90IF9fb2JqX3NpemUgPSBzaXplX211bChzaXplb2YoVFlQRSksIENPVU5UKTtcXHRcXFxcXFxuK1xcdChUWVBFICopREVWTV9BTExPQyhERVYsIF9fb2JqX3NpemUsIEdGUCk7XFx0XFx0XFx0XFxcXFxcbit9KVxcbitcXG4rLyoqXFxuKyAqIGRldm1fa21hbGxvY19vYmogLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGEgc2luZ2xlIHR5cGVkIG9iamVjdFxcbisgKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXFxuKyAqIEBWQVJfT1JfVFlQRTogVmFyaWFibGUgb3IgdHlwZSB0byBhbGxvY2F0ZS5cXG4rICogQEdGUDogT3B0aW9uYWwgR0ZQIGZsYWdzIChkZWZhdWx0cyB0byAlR0ZQX0tFUk5FTCkuXFxuKyAqXFxuKyAqIERldmljZS1tYW5hZ2VkIGNvdW50ZXJwYXJ0IG9mIGttYWxsb2Nfb2JqKCk6IHRoZSBhbGxvY2F0aW9uIGlzIHNpemVkIGZyb21cXG4rICogQFZBUl9PUl9UWVBFIGFuZCByZXR1cm5lZCBhcyBhIHBvaW50ZXIgdG8gdGhhdCB0eXBlLCBub3Qgdm9pZCAqLlxcbisgKlxcbisgKiBSZXR1cm5zOiBuZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB0byBhIEBWQVJfT1JfVFlQRSBvbiBzdWNjZXNzLCBvciBOVUxMIG9uXFxuKyAqIGZhaWx1cmUuXFxuKyAqL1xcbisjZGVmaW5lIGRldm1fa21hbGxvY19vYmooREVWLCBWQVJfT1JfVFlQRSwgLi4uKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSxcXHRcXFxcXFxuK1xcdFxcdFxcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgMSlcXG4rXFxuKy8qKlxcbisgKiBkZXZtX2ttYWxsb2Nfb2JqcyAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYW4gYXJyYXkgb2YgYSB0eXBlZCBvYmplY3RcXG4rICogQERFVjogRGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLlxcbisgKiBAVkFSX09SX1RZUEU6IFZhcmlhYmxlIG9yIHR5cGUgdG8gYWxsb2NhdGUgYW4gYXJyYXkgb2YuXFxuKyAqIEBDT1VOVDogSG93IG1hbnkgZWxlbWVudHMgaW4gdGhlIGFycmF5LlxcbisgKiBAR0ZQOiBPcHRpb25hbCBHRlAgZmxhZ3MgKGRlZmF1bHRzIHRvICVHRlBfS0VSTkVMKS5cXG4rICpcXG4rICogUmV0dXJuczogbmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgQFZBUl9PUl9UWVBFIG9uIHN1Y2Nlc3MsIG9yXFxuKyAqIE5VTEwgb24gZmFpbHVyZSAoaW5jbHVkaW5nIHdoZW4gdGhlIHRvdGFsIHNpemUgb3ZlcmZsb3dzKS5cXG4rICovXFxuKyNkZWZpbmUgZGV2bV9rbWFsbG9jX29ianMoREVWLCBWQVJfT1JfVFlQRSwgQ09VTlQsIC4uLikgXFxcXFxcbitcXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuK1xcdFxcdFxcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgQ09VTlQpXFxuK1xcbisvKipcXG4rICogX19kZXZtX2FsbG9jX2ZsZXggLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGEgdHJhaWxpbmctZmxleC1hcnJheSBvYmplY3RcXG4rICogQERFVk1fQUxMT0M6IHdoaWNoIGRldmljZS1tYW5hZ2VkIGFsbG9jYXRvciB0byB1c2UuXFxuKyAqIEBERVY6IGRldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cXG4rICogQEdGUDogR0ZQIGZsYWdzIGZvciB0aGUgYWxsb2NhdGlvbi5cXG4rICogQFRZUEU6IHR5cGUgb2Ygc3RydWN0dXJlIHRvIGFsbG9jYXRlIHNwYWNlIGZvci5cXG4rICogQEZBTTogbmFtZSBvZiB0aGUgZmxleGlibGUgYXJyYXkgbWVtYmVyIG9mIEBUWVBFLlxcbisgKiBAQ09VTlQ6IGhvdyBtYW55IEBGQU0gZWxlbWVudHMgdG8gYWxsb2NhdGUgc3BhY2UgZm9yLlxcbisgKlxcbisgKiBEZXZpY2UtbWFuYWdlZCBjb3VudGVycGFydCBvZiBfX2FsbG9jX2ZsZXgoKS5cXG4rICogQERFVk1fQUxMT0MgdGFrZXMgKEBERVYsIHNpemUsIGdmcCkuXFxuKyAqXFxuKyAqIFJldHVybnM6IE5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHRvIEBUWVBFIHdpdGggQENPVU5ULW1hbnkgdHJhaWxpbmcgQEZBTVxcbisgKiBlbGVtZW50cywgb3IgTlVMTCBvbiBmYWlsdXJlLlxcbisgKi9cXG4rI2RlZmluZSBfX2Rldm1fYWxsb2NfZmxleChERVZNX0FMTE9DLCBERVYsIEdGUCwgVFlQRSwgRkFNLCBDT1VOVClcXHRcXFxcXFxuKyh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRjb25zdCBzaXplX3QgX19jb3VudCA9IChDT1VOVCk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRjb25zdCBzaXplX3QgX19vYmpfc2l6ZSA9IHN0cnVjdF9zaXplX3QoVFlQRSwgRkFNLCBfX2NvdW50KTtcXHRcXFxcXFxuK1xcdFRZUEUgKl9fb2JqX3B0ciA9IERFVk1fQUxMT0MoREVWLCBfX29ial9zaXplLCBHRlApO1xcdFxcdFxcXFxcXG4rXFx0aWYgKF9fb2JqX3B0cilcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdF9fc2V0X2ZsZXhfY291bnRlcihfX29ial9wdHItXFx1MDAzZUZBTSwgX19jb3VudCk7XFx0XFx0XFxcXFxcbitcXHRfX29ial9wdHI7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbit9KVxcbitcXG4rLyoqXFxuKyAqIGRldm1fa21hbGxvY19mbGV4IC0gRGV2aWNlLW1hbmFnZWQgYWxsb2NhdGlvbiBvZiBhIGZsZXhpYmxlLWFycmF5IHN0cnVjdHVyZVxcbisgKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXFxuKyAqIEBWQVJfT1JfVFlQRTogVmFyaWFibGUgb3IgdHlwZSB0byBhbGxvY2F0ZSAod2l0aCBpdHMgZmxleGlibGUgYXJyYXkpLlxcbisgKiBARkFNOiBUaGUgbmFtZSBvZiB0aGUgZmxleGlibGUgYXJyYXkgbWVtYmVyIG9mIHRoZSBzdHJ1Y3R1cmUuXFxuKyAqIEBDT1VOVDogSG93IG1hbnkgZmxleGlibGUgYXJyYXkgbWVtYmVyIGVsZW1lbnRzIHRvIGFsbG9jYXRlLlxcbisgKiBAR0ZQOiBPcHRpb25hbCBHRlAgZmxhZ3MgKGRlZmF1bHRzIHRvICVHRlBfS0VSTkVMKS5cXG4rICpcXG4rICogUmV0dXJuczogbmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgdG8gQFZBUl9PUl9UWVBFIG9uIHN1Y2Nlc3MsIG9yIE5VTEwgb25cXG4rICogZmFpbHVyZS4gSWYgQEZBTSBoYXMgYmVlbiBhbm5vdGF0ZWQgd2l0aCBfX2NvdW50ZWRfYnkoKSwgaXRzIGNvdW50ZXIgaXMgc2V0XFxuKyAqIHRvIEBDT1VOVC5cXG4rICovXFxuKyNkZWZpbmUgZGV2bV9rbWFsbG9jX2ZsZXgoREVWLCBWQVJfT1JfVFlQRSwgRkFNLCBDT1VOVCwgLi4uKSBcXFxcXFxuK1xcdF9fZGV2bV9hbGxvY19mbGV4KGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXFxcXG4rXFx0XFx0XFx0ICB0eXBlb2YoVkFSX09SX1RZUEUpLCBGQU0sIENPVU5UKVxcbitcXG4rLyogQWxsIGRldm1fa3phbGxvYyBhbGlhc2VzIGZvciBkZXZtX2ttYWxsb2NfKG9ianxvYmpzfGZsZXgpLiAqL1xcbisjZGVmaW5lIGRldm1fa3phbGxvY19vYmooREVWLCBQLCAuLi4pIFxcXFxcXG4rXFx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxcbisjZGVmaW5lIGRldm1fa3phbGxvY19vYmpzKERFViwgUCwgQ09VTlQsIC4uLikgXFxcXFxcbitcXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuK1xcdFxcdFxcdCAgdHlwZW9mKFApLCBDT1VOVClcXG4rI2RlZmluZSBkZXZtX2t6YWxsb2NfZmxleChERVYsIFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcXFxcbitcXHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuK1xcdFxcdFxcdCAgdHlwZW9mKFApLCBGQU0sIENPVU5UKVxcbitcXG4gc3RhdGljIGlubGluZSBfX3JlYWxsb2Nfc2l6ZSgzLCA0KSB2b2lkICogX19tdXN0X2NoZWNrXFxuIGRldm1fa3JlYWxsb2NfYXJyYXkoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpwLCBzaXplX3QgbmV3X24sIHNpemVfdCBuZXdfc2l6ZSwgZ2ZwX3QgZmxhZ3MpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9nZnAuaCBiL2luY2x1ZGUvbGludXgvZ2ZwLmhcXG5pbmRleCA4NzJiYzUzZjMyZWM4Li5iNjJlMmZkNTNjYjQxIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvZ2ZwLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2dmcC5oXFxuQEAgLTEzLDEwICsxMyw2IEBAXFxuIHN0cnVjdCB2bV9hcmVhX3N0cnVjdDtcXG4gc3RydWN0IG1lbXBvbGljeTtcXG4gXFxuLS8qIEhlbHBlciBtYWNybyB0byBhdm9pZCBnZnAgZmxhZ3MgaWYgdGhleSBhcmUgdGhlIGRlZmF1bHQgb25lICovXFxuLSNkZWZpbmUgX19kZWZhdWx0X2dmcChhLGIsLi4uKSBiXFxuLSNkZWZpbmUgZGVmYXVsdF9nZnAoLi4uKSBfX2RlZmF1bHRfZ2ZwKCwjI19fVkFfQVJHU19fLEdGUF9LRVJORUwpXFxuLVxcbiBzdGF0aWMgaW5saW5lIGJvb2wgZ2ZwZmxhZ3NfYWxsb3dfYmxvY2tpbmcoY29uc3QgZ2ZwX3QgZ2ZwX2ZsYWdzKVxcbiB7XFxuIFxcdHJldHVybiAhIShnZnBfZmxhZ3MgXFx1MDAyNiBfX0dGUF9ESVJFQ1RfUkVDTEFJTSk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmggYi9pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oXFxuaW5kZXggMTkwMTkxNDExMDA5Zi4uYjFjZDE0M2YzYzQyZiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaFxcbkBAIC0zODIsNCArMzgyLDggQEAgZW51bSB7XFxuIFxcdFxcdFxcdCBfX0dGUF9OT01FTUFMTE9DIHwgX19HRlBfTk9XQVJOKSBcXHUwMDI2IH5fX0dGUF9SRUNMQUlNKVxcbiAjZGVmaW5lIEdGUF9UUkFOU0hVR0VcXHQoR0ZQX1RSQU5TSFVHRV9MSUdIVCB8IF9fR0ZQX0RJUkVDVF9SRUNMQUlNKVxcbiBcXG4rLyogSGVscGVyIG1hY3JvIHRvIGF2b2lkIGdmcCBmbGFncyBpZiB0aGV5IGFyZSB0aGUgZGVmYXVsdCBvbmUgKi9cXG4rI2RlZmluZSBfX2RlZmF1bHRfZ2ZwKGEsYiwuLi4pIGJcXG4rI2RlZmluZSBkZWZhdWx0X2dmcCguLi4pIF9fZGVmYXVsdF9nZnAoLCMjX19WQV9BUkdTX18sR0ZQX0tFUk5FTClcXG4rXFxuICNlbmRpZiAvKiBfX0xJTlVYX0dGUF9UWVBFU19IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI2OjU5LjgzNjY4MDI2OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NjM5NDQ3OTM1NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBuZXcgZGV2cmVzIGFsbG9jYXRpb24gaGVscGVyIG1hY3JvcyAoZGV2bV9rbWFsbG9jX29iaiwgZGV2bV9remFsbG9jX29iaiwgZGV2bV9rbWFsbG9jX2ZsZXgsIGV0Yy4pIHdoaWNoIGN1cnJlbnRseSBoYXZlIG5vIGNhbGxlcnMgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCBjb2RlYmFzZSwgYW5kIG1vdmVzIHRoZSBtYWNybyBkZWZpbml0aW9uIG9mIGRlZmF1bHRfZ2ZwIGZyb20gbGludXgvZ2ZwLmggdG8gbGludXgvZ2ZwX3R5cGVzLmggd2l0aCBubyBjaGFuZ2UgaW4gbG9naWMuIEJlY2F1c2Ugbm8gY2FsbGVycyBleGlzdCBmb3IgdGhlIG5ldyBtYWNyb3MsIG5vIGV4ZWN1dGFibGUga2VybmVsIGNvZGUgaXMgYWRkZWQgb3IgYWx0ZXJlZCwgbWFraW5nIHRoZSBjaGFuZ2VzIG5vbi1leGVjdXRhYmxlIGFuZCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVjMWY0NmNiM2ZkOTlhZjA4NTE4NzZmYWE3NTY4ZTcwNmJjYTIxMDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMDoyNjo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oIGIvaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmhcbmluZGV4IDE0YWI5MTU5YmRkYTUuLjc2NTZjOWVjZDRkYWIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaFxuKysrIGIvaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmhcbkBAIC02Miw2ICs2MiwxMDggQEAgc3RhdGljIGlubGluZSB2b2lkICpkZXZtX2tjYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF9cbiB7XG4gXHRyZXR1cm4gZGV2bV9rbWFsbG9jX2FycmF5KGRldiwgbiwgc2l6ZSwgZmxhZ3MgfCBfX0dGUF9aRVJPKTtcbiB9XG4rXG4rLyoqXG4rICogX19kZXZtX2FsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIG9iamVjdHMgb2YgYSBnaXZlbiB0eXBlXG4rICogQERFVk1fQUxMT0M6IHdoaWNoIGRldmljZS1tYW5hZ2VkIHNpemUtYmFzZWQgYWxsb2NhdG9yIHRvIHVzZS5cbisgKiBAREVWOiBkZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXG4rICogQEdGUDogR0ZQIGZsYWdzIGZvciB0aGUgYWxsb2NhdGlvbi5cbisgKiBAVFlQRTogdHlwZSB0byBhbGxvY2F0ZSBzcGFjZSBmb3IuXG4rICogQENPVU5UOiBob3cgbWFueSBAVFlQRSBvYmplY3RzIHRvIGFsbG9jYXRlLlxuKyAqXG4rICogRGV2aWNlLW1hbmFnZWQgY291bnRlcnBhcnQgb2YgX19hbGxvY19vYmpzKCkuXG4rICogQERFVk1fQUxMT0MgdGFrZXMgKEBERVYsIHNpemUsIGdmcCkuXG4rICpcbisgKiBSZXR1cm5zOiBOZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB0byAoZmlyc3QpIEBUWVBFIG9mIEBDT1VOVC1tYW55IGFsbG9jYXRlZFxuKyAqIEBUWVBFIG9iamVjdHMsIG9yIE5VTEwgb24gZmFpbHVyZS5cbisgKi9cbisjZGVmaW5lIF9fZGV2bV9hbGxvY19vYmpzKERFVk1fQUxMT0MsIERFViwgR0ZQLCBUWVBFLCBDT1VOVClcdFx0XFxcbisoe1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRjb25zdCBzaXplX3QgX19vYmpfc2l6ZSA9IHNpemVfbXVsKHNpemVvZihUWVBFKSwgQ09VTlQpO1x0XFxcbitcdChUWVBFICopREVWTV9BTExPQyhERVYsIF9fb2JqX3NpemUsIEdGUCk7XHRcdFx0XFxcbit9KVxuK1xuKy8qKlxuKyAqIGRldm1fa21hbGxvY19vYmogLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGEgc2luZ2xlIHR5cGVkIG9iamVjdFxuKyAqIEBERVY6IERldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cbisgKiBAVkFSX09SX1RZUEU6IFZhcmlhYmxlIG9yIHR5cGUgdG8gYWxsb2NhdGUuXG4rICogQEdGUDogT3B0aW9uYWwgR0ZQIGZsYWdzIChkZWZhdWx0cyB0byAlR0ZQX0tFUk5FTCkuXG4rICpcbisgKiBEZXZpY2UtbWFuYWdlZCBjb3VudGVycGFydCBvZiBrbWFsbG9jX29iaigpOiB0aGUgYWxsb2NhdGlvbiBpcyBzaXplZCBmcm9tXG4rICogQFZBUl9PUl9UWVBFIGFuZCByZXR1cm5lZCBhcyBhIHBvaW50ZXIgdG8gdGhhdCB0eXBlLCBub3Qgdm9pZCAqLlxuKyAqXG4rICogUmV0dXJuczogbmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgdG8gYSBAVkFSX09SX1RZUEUgb24gc3VjY2Vzcywgb3IgTlVMTCBvblxuKyAqIGZhaWx1cmUuXG4rICovXG4rI2RlZmluZSBkZXZtX2ttYWxsb2Nfb2JqKERFViwgVkFSX09SX1RZUEUsIC4uLilcdFx0XHRcdFxcXG4rXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLFx0XFxcbitcdFx0XHQgIHR5cGVvZihWQVJfT1JfVFlQRSksIDEpXG4rXG4rLyoqXG4rICogZGV2bV9rbWFsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGFuIGFycmF5IG9mIGEgdHlwZWQgb2JqZWN0XG4rICogQERFVjogRGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLlxuKyAqIEBWQVJfT1JfVFlQRTogVmFyaWFibGUgb3IgdHlwZSB0byBhbGxvY2F0ZSBhbiBhcnJheSBvZi5cbisgKiBAQ09VTlQ6IEhvdyBtYW55IGVsZW1lbnRzIGluIHRoZSBhcnJheS5cbisgKiBAR0ZQOiBPcHRpb25hbCBHRlAgZmxhZ3MgKGRlZmF1bHRzIHRvICVHRlBfS0VSTkVMKS5cbisgKlxuKyAqIFJldHVybnM6IG5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHRvIGFuIGFycmF5IG9mIEBWQVJfT1JfVFlQRSBvbiBzdWNjZXNzLCBvclxuKyAqIE5VTEwgb24gZmFpbHVyZSAoaW5jbHVkaW5nIHdoZW4gdGhlIHRvdGFsIHNpemUgb3ZlcmZsb3dzKS5cbisgKi9cbisjZGVmaW5lIGRldm1fa21hbGxvY19vYmpzKERFViwgVkFSX09SX1RZUEUsIENPVU5ULCAuLi4pIFxcXG4rXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuK1x0XHRcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgQ09VTlQpXG4rXG4rLyoqXG4rICogX19kZXZtX2FsbG9jX2ZsZXggLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGEgdHJhaWxpbmctZmxleC1hcnJheSBvYmplY3RcbisgKiBAREVWTV9BTExPQzogd2hpY2ggZGV2aWNlLW1hbmFnZWQgYWxsb2NhdG9yIHRvIHVzZS5cbisgKiBAREVWOiBkZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXG4rICogQEdGUDogR0ZQIGZsYWdzIGZvciB0aGUgYWxsb2NhdGlvbi5cbisgKiBAVFlQRTogdHlwZSBvZiBzdHJ1Y3R1cmUgdG8gYWxsb2NhdGUgc3BhY2UgZm9yLlxuKyAqIEBGQU06IG5hbWUgb2YgdGhlIGZsZXhpYmxlIGFycmF5IG1lbWJlciBvZiBAVFlQRS5cbisgKiBAQ09VTlQ6IGhvdyBtYW55IEBGQU0gZWxlbWVudHMgdG8gYWxsb2NhdGUgc3BhY2UgZm9yLlxuKyAqXG4rICogRGV2aWNlLW1hbmFnZWQgY291bnRlcnBhcnQgb2YgX19hbGxvY19mbGV4KCkuXG4rICogQERFVk1fQUxMT0MgdGFrZXMgKEBERVYsIHNpemUsIGdmcCkuXG4rICpcbisgKiBSZXR1cm5zOiBOZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB0byBAVFlQRSB3aXRoIEBDT1VOVC1tYW55IHRyYWlsaW5nIEBGQU1cbisgKiBlbGVtZW50cywgb3IgTlVMTCBvbiBmYWlsdXJlLlxuKyAqL1xuKyNkZWZpbmUgX19kZXZtX2FsbG9jX2ZsZXgoREVWTV9BTExPQywgREVWLCBHRlAsIFRZUEUsIEZBTSwgQ09VTlQpXHRcXFxuKyh7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdGNvbnN0IHNpemVfdCBfX2NvdW50ID0gKENPVU5UKTtcdFx0XHRcdFx0XFxcbitcdGNvbnN0IHNpemVfdCBfX29ial9zaXplID0gc3RydWN0X3NpemVfdChUWVBFLCBGQU0sIF9fY291bnQpO1x0XFxcbitcdFRZUEUgKl9fb2JqX3B0ciA9IERFVk1fQUxMT0MoREVWLCBfX29ial9zaXplLCBHRlApO1x0XHRcXFxuK1x0aWYgKF9fb2JqX3B0cilcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdF9fc2V0X2ZsZXhfY291bnRlcihfX29ial9wdHItXHUwMDNlRkFNLCBfX2NvdW50KTtcdFx0XFxcbitcdF9fb2JqX3B0cjtcdFx0XHRcdFx0XHRcdFxcXG4rfSlcbitcbisvKipcbisgKiBkZXZtX2ttYWxsb2NfZmxleCAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSBmbGV4aWJsZS1hcnJheSBzdHJ1Y3R1cmVcbisgKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXG4rICogQFZBUl9PUl9UWVBFOiBWYXJpYWJsZSBvciB0eXBlIHRvIGFsbG9jYXRlICh3aXRoIGl0cyBmbGV4aWJsZSBhcnJheSkuXG4rICogQEZBTTogVGhlIG5hbWUgb2YgdGhlIGZsZXhpYmxlIGFycmF5IG1lbWJlciBvZiB0aGUgc3RydWN0dXJlLlxuKyAqIEBDT1VOVDogSG93IG1hbnkgZmxleGlibGUgYXJyYXkgbWVtYmVyIGVsZW1lbnRzIHRvIGFsbG9jYXRlLlxuKyAqIEBHRlA6IE9wdGlvbmFsIEdGUCBmbGFncyAoZGVmYXVsdHMgdG8gJUdGUF9LRVJORUwpLlxuKyAqXG4rICogUmV0dXJuczogbmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgdG8gQFZBUl9PUl9UWVBFIG9uIHN1Y2Nlc3MsIG9yIE5VTEwgb25cbisgKiBmYWlsdXJlLiBJZiBARkFNIGhhcyBiZWVuIGFubm90YXRlZCB3aXRoIF9fY291bnRlZF9ieSgpLCBpdHMgY291bnRlciBpcyBzZXRcbisgKiB0byBAQ09VTlQuXG4rICovXG4rI2RlZmluZSBkZXZtX2ttYWxsb2NfZmxleChERVYsIFZBUl9PUl9UWVBFLCBGQU0sIENPVU5ULCAuLi4pIFxcXG4rXHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuK1x0XHRcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgRkFNLCBDT1VOVClcbitcbisvKiBBbGwgZGV2bV9remFsbG9jIGFsaWFzZXMgZm9yIGRldm1fa21hbGxvY18ob2JqfG9ianN8ZmxleCkuICovXG4rI2RlZmluZSBkZXZtX2t6YWxsb2Nfb2JqKERFViwgUCwgLi4uKSBcXFxuK1x0X19kZXZtX2FsbG9jX29ianMoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxuKyNkZWZpbmUgZGV2bV9remFsbG9jX29ianMoREVWLCBQLCBDT1VOVCwgLi4uKSBcXFxuK1x0X19kZXZtX2FsbG9jX29ianMoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcbitcdFx0XHQgIHR5cGVvZihQKSwgQ09VTlQpXG4rI2RlZmluZSBkZXZtX2t6YWxsb2NfZmxleChERVYsIFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcbitcdF9fZGV2bV9hbGxvY19mbGV4KGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXG4rXHRcdFx0ICB0eXBlb2YoUCksIEZBTSwgQ09VTlQpXG4rXG4gc3RhdGljIGlubGluZSBfX3JlYWxsb2Nfc2l6ZSgzLCA0KSB2b2lkICogX19tdXN0X2NoZWNrXG4gZGV2bV9rcmVhbGxvY19hcnJheShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnAsIHNpemVfdCBuZXdfbiwgc2l6ZV90IG5ld19zaXplLCBnZnBfdCBmbGFncylcbiB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9nZnAuaCBiL2luY2x1ZGUvbGludXgvZ2ZwLmhcbmluZGV4IDg3MmJjNTNmMzJlYzguLmI2MmUyZmQ1M2NiNDEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2dmcC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2dmcC5oXG5AQCAtMTMsMTAgKzEzLDYgQEBcbiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7XG4gc3RydWN0IG1lbXBvbGljeTtcbiBcbi0vKiBIZWxwZXIgbWFjcm8gdG8gYXZvaWQgZ2ZwIGZsYWdzIGlmIHRoZXkgYXJlIHRoZSBkZWZhdWx0IG9uZSAqL1xuLSNkZWZpbmUgX19kZWZhdWx0X2dmcChhLGIsLi4uKSBiXG4tI2RlZmluZSBkZWZhdWx0X2dmcCguLi4pIF9fZGVmYXVsdF9nZnAoLCMjX19WQV9BUkdTX18sR0ZQX0tFUk5FTClcbi1cbiBzdGF0aWMgaW5saW5lIGJvb2wgZ2ZwZmxhZ3NfYWxsb3dfYmxvY2tpbmcoY29uc3QgZ2ZwX3QgZ2ZwX2ZsYWdzKVxuIHtcbiBcdHJldHVybiAhIShnZnBfZmxhZ3MgXHUwMDI2IF9fR0ZQX0RJUkVDVF9SRUNMQUlNKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaFxuaW5kZXggMTkwMTkxNDExMDA5Zi4uYjFjZDE0M2YzYzQyZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmhcbisrKyBiL2luY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmhcbkBAIC0zODIsNCArMzgyLDggQEAgZW51bSB7XG4gXHRcdFx0IF9fR0ZQX05PTUVNQUxMT0MgfCBfX0dGUF9OT1dBUk4pIFx1MDAyNiB+X19HRlBfUkVDTEFJTSlcbiAjZGVmaW5lIEdGUF9UUkFOU0hVR0VcdChHRlBfVFJBTlNIVUdFX0xJR0hUIHwgX19HRlBfRElSRUNUX1JFQ0xBSU0pXG4gXG4rLyogSGVscGVyIG1hY3JvIHRvIGF2b2lkIGdmcCBmbGFncyBpZiB0aGV5IGFyZSB0aGUgZGVmYXVsdCBvbmUgKi9cbisjZGVmaW5lIF9fZGVmYXVsdF9nZnAoYSxiLC4uLikgYlxuKyNkZWZpbmUgZGVmYXVsdF9nZnAoLi4uKSBfX2RlZmF1bHRfZ2ZwKCwjI19fVkFfQVJHU19fLEdGUF9LRVJORUwpXG4rXG4gI2VuZGlmIC8qIF9fTElOVVhfR0ZQX1RZUEVTX0ggKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI2OjU5LjgzNjY4MTg5OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjUzNzEwNjQwNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRoaXMgUGF0Y2g6IE1lbW9yeSBBbGxvY2F0aW9uIFx1MDAyNiBHRlAgQ2hhbmdlcyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBpdCdzIGZvY3VzZWQgb24gbWVtb3J5IGFsbG9jYXRpb24gd2l0aCBhIHBvdGVudGlhbCBtaW5vciBjaGFuZ2UgdG8gdGhlIEdGUCBmbGFncy4gSSBzZWUgaXQgdG91Y2hlcyBgZGV2cmVzLmhgLCBgZ2ZwLmhgLCBhbmQgYGdmcF90eXBlcy5oYC4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyBzb21lIHJlc3RydWN0dXJpbmcgYW5kIG5ldyB1dGlsaXRpZXMuXG5cblNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBpdCBpbnRyb2R1Y2VzIHNldmVyYWwgbmV3IG1hY3JvcyB3aXRoaW4gYGRldnJlcy5oYDogYF9fZGV2bV9hbGxvY19vYmpzYCwgYGRldm1fa21hbGxvY19vYmpgLCBgZGV2bV9rbWFsbG9jX29ianNgLCBgX19kZXZtX2FsbG9jX2ZsZXhgLCBgZGV2bV9rbWFsbG9jX2ZsZXhgLCBgZGV2bV9remFsbG9jX29iamAsIGBkZXZtX2t6YWxsb2Nfb2Jqc2AsIGFuZCBgZGV2bV9remFsbG9jX2ZsZXhgLiBUaGVzZSBuYW1lcyBzdHJvbmdseSBpbXBseSBtYW5hZ2VkIG1lbW9yeSBhbGxvY2F0aW9uIHdpdGhpbiB0aGUgZGV2aWNlIHJlc291cmNlIGZyYW1ld29yay4gSSBhc3N1bWUgdGhlc2UgYXJlIGNvbnZlbmllbmNlIG1hY3JvcyBmb3IgYWxsb2NhdGluZyB2YXJpb3VzIGRhdGEgc3RydWN0dXJlcyB3aXRoIGBkZXZyZXNgIG1hbmFnZW1lbnQgZm9yIGF1dG9tYXRpYyBmcmVlaW5nLiBTZWVtcyBlZmZpY2llbnQgdG8gcmVkdWNlIGJvaWxlciBwbGF0ZS5cblxuVGhlIHNoaWZ0IG9mIGBfX2RlZmF1bHRfZ2ZwYCBhbmQgYGRlZmF1bHRfZ2ZwYCBmcm9tIGBnZnAuaGAgdG8gYGdmcF90eXBlcy5oYCBpcyBsaWtlbHkgYSBtaW5vciByZWZhY3RvcmluZy4gVGhpcyBpcyBmaW5lLCBidXQgaXQgc2VlbXMgaW50ZXJlc3RpbmcgZm9yIHRoZW0gdG8gaW5jbHVkZSBkZWZhdWx0IEdGUCBmbGFncyBpbiBgZ2ZwX3R5cGVzLmhgLiBJJ2QgaGF2ZSB0byBsb29rIGF0IHRoZSBvdGhlciBjaGFuZ2VzIHRvIGJlIGNlcnRhaW4sIGJ1dCB0aGlzIG1vdmUgbWlnaHQgYmUgcHJlcGFyYXRvcnkuXG5cbk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGRldGVybWluZSB0aGUgc2NvcGUgb2YgdGhpcyB3b3JrLiBJIG5lZWQgdG8ga25vdyBpZiBuZXcgY2FsbGVycyBhcmUgaW50cm9kdWNlZCwgb3IgaWYgdGhpcyBpcyBqdXN0IHJlZmFjdG9yaW5nLiBJJ2xsIHJlYWNoIGZvciBgZ3JlcHBlcmAgYW5kIHNlZSBpZiBhbnkgY29kZSBpcyAqYWN0dWFsbHkqIGNhbGxpbmcgdGhlc2UgbmV3IG1hY3Jvcy4gVGhhdCB3aWxsIHRlbGwgbWUgaWYgdGhpcyBpcyBhIHB1cmVseSBpbnRlcm5hbCBjaGFuZ2Ugb3IgaWYgaXQgaGFzIGV4dGVybmFsIGltcGxpY2F0aW9ucy4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NTYsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDoyNzowNS4yMDc3NDk3NDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzNDU5MTU2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZtX2tbbXpdYWxsb2NfKG9ianxmbGV4KVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaD02MT1zdGF0aWMgaW5saW5lIHZvaWQgKmRldm1fa2NhbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC04Ni0vKipcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDo4NzogKiBkZXZtX2ttYWxsb2Nfb2JqIC0gRGV2aWNlLW1hbmFnZWQgYWxsb2NhdGlvbiBvZiBhIHNpbmdsZSB0eXBlZCBvYmplY3RcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC04OC0gKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC05Ny0gKi9cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDo5ODojZGVmaW5lIGRldm1fa21hbGxvY19vYmooREVWLCBWQVJfT1JfVFlQRSwgLi4uKVxcdFxcdFxcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC05OS1cXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTEwMi0vKipcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxMDM6ICogZGV2bV9rbWFsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGFuIGFycmF5IG9mIGEgdHlwZWQgb2JqZWN0XFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTA0LSAqIEBERVY6IERldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTExMS0gKi9cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxMTI6I2RlZmluZSBkZXZtX2ttYWxsb2Nfb2JqcyhERVYsIFZBUl9PUl9UWVBFLCBDT1VOVCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTEzLVxcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE0MS0vKipcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNDI6ICogZGV2bV9rbWFsbG9jX2ZsZXggLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGEgZmxleGlibGUtYXJyYXkgc3RydWN0dXJlXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTQzLSAqIEBERVY6IERldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1Mi0gKi9cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNTM6I2RlZmluZSBkZXZtX2ttYWxsb2NfZmxleChERVYsIFZBUl9PUl9UWVBFLCBGQU0sIENPVU5ULCAuLi4pIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNTQtXFx0X19kZXZtX2FsbG9jX2ZsZXgoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcXFxcbi0tXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTU3LS8qIEFsbCBkZXZtX2t6YWxsb2MgYWxpYXNlcyBmb3IgZGV2bV9rbWFsbG9jXyhvYmp8b2Jqc3xmbGV4KS4gKi9cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNTg6I2RlZmluZSBkZXZtX2t6YWxsb2Nfb2JqKERFViwgUCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTU5LVxcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgMSlcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNjA6I2RlZmluZSBkZXZtX2t6YWxsb2Nfb2JqcyhERVYsIFAsIENPVU5ULCAuLi4pIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjEtXFx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE2Mi1cXHRcXHRcXHQgIHR5cGVvZihQKSwgQ09VTlQpXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTYzOiNkZWZpbmUgZGV2bV9remFsbG9jX2ZsZXgoREVWLCBQLCBGQU0sIENPVU5ULCAuLi4pIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjQtXFx0X19kZXZtX2FsbG9jX2ZsZXgoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDoyNzowOS41NDIzNDg5NTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMjgxNDAwNDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBrZXJuZWwgbWVtb3J5IG1hbmFnZW1lbnQ6XG5cbioqTWVtb3J5IEFsbG9jYXRpb24gRGVlcCBEaXZlIC0gV2hlcmUgQXJlIE15IENhbGxlcnM/KipcblxuQWxyaWdodCwgSSdtIGRpdmluZyBpbnRvIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBsYW5kc2NhcGUgd2l0aGluIHRoZSBkZXZpY2UgZHJpdmVyIGNvbnRleHQsIHNwZWNpZmljYWxseSB0aGUgYGRldm1fa21hbGxvY2AgYW5kIGBkZXZtX2t6YWxsb2NgIHZhcmlhbnRzLiBNeSBpbml0aWFsIGFzc3VtcHRpb24sIGJhc2VkIG9uIHByZXZpb3VzIGNvZGUgcmV2aWV3cyBhbmQgZXhwZXJpZW5jZSwgaXMgdGhhdCB0aGVyZSBzaG91bGRuJ3QgYmUgYW55IGRpcmVjdCBjYWxsZXJzIG9mIHRoZSBvYmplY3QgYW5kIGZsZXggZm9ybXM6IGBkZXZtX2ttYWxsb2Nfb2JqYCwgYGRldm1fa21hbGxvY19vYmpzYCwgYGRldm1fa21hbGxvY19mbGV4YCwgYGRldm1fa3phbGxvY19vYmpgLCBgZGV2bV9remFsbG9jX29ianNgLCBhbmQgYGRldm1fa3phbGxvY19mbGV4YCBpbiB0aGUgY29kZSBiYXNlIHRoYXQgYXJlIGN1cnJlbnRseSBjaGVja2VkLiBUaGVzZSBhcmUgc3BlY2lhbGl6ZWQgYWxsb2NhdGlvbiBmdW5jdGlvbnMgdGhhdCBhcmUgdXN1YWxseSB1c2VkIGludGVybmFsbHkgZm9yIHNwZWNpZmljIHB1cnBvc2VzIHdpdGhpbiB0aGUgZHJpdmVyIGZyYW1ld29yay5cblxuQnV0IHdhaXQgYSBtaW51dGUsIEkgc2hvdWxkIGJlIHRob3JvdWdoLiBXaGF0IGFib3V0IHRoZSB1bmRlcmx5aW5nIGFsbG9jYXRpb24gZnVuY3Rpb25zIHRoZXkgYXJlIGJhc2VkIHVwb24/IExldCdzIG5vdCBsZWF2ZSBhbnkgc3RvbmUgdW50dXJuZWQgaGVyZS4gSSBhbHNvIG5lZWQgdG8gY2hlY2sgdGhlIG9jY3VycmVuY2VzIG9mIGFueXRoaW5nIHRoYXQgbWlnaHQgYmUgdXNpbmcgYF9fZGV2bV9hbGxvY19gIC0gYXMgdGhhdCBjYW4gZ2l2ZSBtZSBjbHVlcyBvbiBob3cgdGhvc2Ugb2JqZWN0LCBmbGV4LCBhbmQgb2JqZWN0IGZvcm1zIGFyZSB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzgzLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDA6Mjc6MTEuODIzNzUxNTI5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5Mzk1NDk3MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19kZXZtX2FsbG9jX1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jhc2UvZGV2cmVzLmM9MTMwNj1zdGF0aWMgdm9pZCBkZXZtX3BlcmNwdV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtMTMxNC0vKipcXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmM6MTMxNTogKiBfX2Rldm1fYWxsb2NfcGVyY3B1IC0gUmVzb3VyY2UtbWFuYWdlZCBhbGxvY19wZXJjcHVcXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtMTMxNi0gKiBAZGV2OiBEZXZpY2UgdG8gYWxsb2NhdGUgcGVyLWNwdSBtZW1vcnkgZm9yXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtMTMyNS0gKi9cXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmM6MTMyNjp2b2lkIF9fcGVyY3B1ICpfX2Rldm1fYWxsb2NfcGVyY3B1KHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsXFxuZHJpdmVycy9iYXNlL2RldnJlcy5jLTEzMjctXFx0XFx0c2l6ZV90IGFsaWduKVxcbi0tXFxuZHJpdmVycy9iYXNlL2RldnJlcy5jLTEzNDctfVxcbmRyaXZlcnMvYmFzZS9kZXZyZXMuYzoxMzQ4OkVYUE9SVF9TWU1CT0xfR1BMKF9fZGV2bV9hbGxvY19wZXJjcHUpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg9NjE9c3RhdGljIGlubGluZSB2b2lkICpkZXZtX2tjYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxcbi0tXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtNjYtLyoqXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6Njc6ICogX19kZXZtX2FsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIG9iamVjdHMgb2YgYSBnaXZlbiB0eXBlXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtNjgtICogQERFVk1fQUxMT0M6IHdoaWNoIGRldmljZS1tYW5hZ2VkIHNpemUtYmFzZWQgYWxsb2NhdG9yIHRvIHVzZS5cXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTc5LSAqL1xcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjgwOiNkZWZpbmUgX19kZXZtX2FsbG9jX29ianMoREVWTV9BTExPQywgREVWLCBHRlAsIFRZUEUsIENPVU5UKVxcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC04MS0oe1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTk4LSNkZWZpbmUgZGV2bV9rbWFsbG9jX29iaihERVYsIFZBUl9PUl9UWVBFLCAuLi4pXFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjk5OlxcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksXFx0XFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTEwMC1cXHRcXHRcXHQgIHR5cGVvZihWQVJfT1JfVFlQRSksIDEpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTItI2RlZmluZSBkZXZtX2ttYWxsb2Nfb2JqcyhERVYsIFZBUl9PUl9UWVBFLCBDT1VOVCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTEzOlxcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTQtXFx0XFx0XFx0ICB0eXBlb2YoVkFSX09SX1RZUEUpLCBDT1VOVClcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTExNi0vKipcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxMTc6ICogX19kZXZtX2FsbG9jX2ZsZXggLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGEgdHJhaWxpbmctZmxleC1hcnJheSBvYmplY3RcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTgtICogQERFVk1fQUxMT0M6IHdoaWNoIGRldmljZS1tYW5hZ2VkIGFsbG9jYXRvciB0byB1c2UuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMzAtICovXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTMxOiNkZWZpbmUgX19kZXZtX2FsbG9jX2ZsZXgoREVWTV9BTExPQywgREVWLCBHRlAsIFRZUEUsIEZBTSwgQ09VTlQpXFx0XFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTEzMi0oe1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1My0jZGVmaW5lIGRldm1fa21hbGxvY19mbGV4KERFViwgVkFSX09SX1RZUEUsIEZBTSwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE1NDpcXHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTU1LVxcdFxcdFxcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgRkFNLCBDT1VOVClcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1OC0jZGVmaW5lIGRldm1fa3phbGxvY19vYmooREVWLCBQLCAuLi4pIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNTk6XFx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE2MC0jZGVmaW5lIGRldm1fa3phbGxvY19vYmpzKERFViwgUCwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE2MTpcXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTYyLVxcdFxcdFxcdCAgdHlwZW9mKFApLCBDT1VOVClcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjMtI2RlZmluZSBkZXZtX2t6YWxsb2NfZmxleChERVYsIFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE2NDpcXHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTY1LVxcdFxcdFxcdCAgdHlwZW9mKFApLCBGQU0sIENPVU5UKVxcbi0tXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg9MTk2PWRldm1fa2FzcHJpbnRmKHN0cnVjdCBkZXZpY2UgKmRldiwgZ2ZwX3QgZ2ZwLCBjb25zdCBjaGFyICpmbXQsIC4uLik7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0yMDktI2RlZmluZSBkZXZtX2FsbG9jX3BlcmNwdShkZXYsIHR5cGUpICAgICAgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjIxMDpcXHQoKHR5cGVvZih0eXBlKSBfX3BlcmNwdSAqKV9fZGV2bV9hbGxvY19wZXJjcHUoKGRldiksIHNpemVvZih0eXBlKSwgX19hbGlnbm9mX18odHlwZSkpKVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTIxMS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoyMTI6dm9pZCBfX3BlcmNwdSAqX19kZXZtX2FsbG9jX3BlcmNwdShzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ24pO1xcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTIxMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDA6Mjc6MTMuNzYzMzA3NzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1NTEyNjAxMTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgbW92aW5nIGBkZWZhdWx0X2dmcGAgZnJvbSBgaW5jbHVkZS9saW51eC9nZnAuaGAgdG8gYGluY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmhgIGNhdXNlZCBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRvdWJsZS1jaGVjayBhbGwgdGhlIHBsYWNlcyB3aGVyZSBgZGVmYXVsdF9nZnBgIGlzIGFjdHVhbGx5ICp1c2VkKi4gVGltZSB0byBmaXJlIHVwIHRob3NlIHRvb2xzIGFuZCBzZWUgd2hlcmUgdGhlIGNhbGxzIGFyZSBhbmQgaWYgYW55dGhpbmcncyBicm9rZW4uIFRoaXMgaXMgYSBwb3RlbnRpYWxseSB0cmlja3kgY2hhbmdlLCBzbyBiZXR0ZXIgdG8gYmUgdGhvcm91Z2guIEknbGwgZm9jdXMgc3BlY2lmaWNhbGx5IG9uIHRoZSBjYWxsZXJzIG9mIGBkZWZhdWx0X2dmcGAgdG8gZW5zdXJlIG5vdGhpbmcncyBiZWVuIG1pc3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE5MywiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI3OjE5LjI3NTkxMTE1NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA1NjQ3NzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlZmF1bHRfZ2ZwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oPTYxPXN0YXRpYyBpbmxpbmUgdm9pZCAqZGV2bV9rY2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IG4sIHNpemVfdCBzaXplLCBnZnBfdCBmbGFncylcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTk4LSNkZWZpbmUgZGV2bV9rbWFsbG9jX29iaihERVYsIFZBUl9PUl9UWVBFLCAuLi4pXFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjk5OlxcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksXFx0XFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTEwMC1cXHRcXHRcXHQgIHR5cGVvZihWQVJfT1JfVFlQRSksIDEpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTItI2RlZmluZSBkZXZtX2ttYWxsb2Nfb2JqcyhERVYsIFZBUl9PUl9UWVBFLCBDT1VOVCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTEzOlxcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTQtXFx0XFx0XFx0ICB0eXBlb2YoVkFSX09SX1RZUEUpLCBDT1VOVClcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1My0jZGVmaW5lIGRldm1fa21hbGxvY19mbGV4KERFViwgVkFSX09SX1RZUEUsIEZBTSwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE1NDpcXHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTU1LVxcdFxcdFxcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgRkFNLCBDT1VOVClcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1OC0jZGVmaW5lIGRldm1fa3phbGxvY19vYmooREVWLCBQLCAuLi4pIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNTk6XFx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE2MC0jZGVmaW5lIGRldm1fa3phbGxvY19vYmpzKERFViwgUCwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE2MTpcXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTYyLVxcdFxcdFxcdCAgdHlwZW9mKFApLCBDT1VOVClcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjMtI2RlZmluZSBkZXZtX2t6YWxsb2NfZmxleChERVYsIFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE2NDpcXHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTY1LVxcdFxcdFxcdCAgdHlwZW9mKFApLCBGQU0sIENPVU5UKVxcbi0tXFxuaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaD0yNj1lbnVtIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmgtMzg1LS8qIEhlbHBlciBtYWNybyB0byBhdm9pZCBnZnAgZmxhZ3MgaWYgdGhleSBhcmUgdGhlIGRlZmF1bHQgb25lICovXFxuaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaDozODY6I2RlZmluZSBfX2RlZmF1bHRfZ2ZwKGEsYiwuLi4pIGJcXG5pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oOjM4NzojZGVmaW5lIGRlZmF1bHRfZ2ZwKC4uLikgX19kZWZhdWx0X2dmcCgsIyNfX1ZBX0FSR1NfXyxHRlBfS0VSTkVMKVxcbmluY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmgtMzg4LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmg9MTA3Mz12b2lkICprbWFsbG9jX25vbG9jayhzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwX2ZsYWdzLCBpbnQgbm9kZSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTI0LSNkZWZpbmUga21hbGxvY19vYmooVkFSX09SX1RZUEUsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExMjU6XFx0X19hbGxvY19vYmpzKGttYWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFZBUl9PUl9UWVBFKSwgMSlcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTI2LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTEzNi0jZGVmaW5lIGttYWxsb2Nfb2JqcyhWQVJfT1JfVFlQRSwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExMzc6XFx0X19hbGxvY19vYmpzKGttYWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFZBUl9PUl9UWVBFKSwgQ09VTlQpXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTEzOC1cXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNTEtI2RlZmluZSBrbWFsbG9jX2ZsZXgoVkFSX09SX1RZUEUsIEZBTSwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNTI6XFx0X19hbGxvY19mbGV4KGttYWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFZBUl9PUl9UWVBFKSwgRkFNLCBDT1VOVClcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTUzLVxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE1NS0jZGVmaW5lIGt6YWxsb2Nfb2JqKFAsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNTY6XFx0X19hbGxvY19vYmpzKGt6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNTctI2RlZmluZSBremFsbG9jX29ianMoUCwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNTg6XFx0X19hbGxvY19vYmpzKGt6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCBDT1VOVClcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTU5LSNkZWZpbmUga3phbGxvY19mbGV4KFAsIEZBTSwgQ09VTlQsIC4uLilcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTE2MDpcXHRfX2FsbG9jX2ZsZXgoa3phbGxvYywgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIEZBTSwgQ09VTlQpXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE2MS1cXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNjMtI2RlZmluZSBrdm1hbGxvY19vYmooUCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTE2NDpcXHRfX2FsbG9jX29ianMoa3ZtYWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNjUtI2RlZmluZSBrdm1hbGxvY19vYmpzKFAsIENPVU5ULCAuLi4pIFxcXFxcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDoxMTY2OlxcdF9fYWxsb2Nfb2Jqcyhrdm1hbGxvYywgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIENPVU5UKVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNjctI2RlZmluZSBrdm1hbGxvY19mbGV4KFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNjg6XFx0X19hbGxvY19mbGV4KGt2bWFsbG9jLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgRkFNLCBDT1VOVClcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTY5LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE3MS0jZGVmaW5lIGt2emFsbG9jX29iaihQLCAuLi4pIFxcXFxcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDoxMTcyOlxcdF9fYWxsb2Nfb2JqcyhrdnphbGxvYywgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIDEpXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE3My0jZGVmaW5lIGt2emFsbG9jX29ianMoUCwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNzQ6XFx0X19hbGxvY19vYmpzKGt2emFsbG9jLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgQ09VTlQpXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE3NS0jZGVmaW5lIGt2emFsbG9jX2ZsZXgoUCwgRkFNLCBDT1VOVCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTE3NjpcXHRfX2FsbG9jX2ZsZXgoa3Z6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCBGQU0sIENPVU5UKVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNzctXFxuLS1cXG50b29scy9pbmNsdWRlL2xpbnV4L2dmcC5oLTgtLyogSGVscGVyIG1hY3JvIHRvIGF2b2lkIGdmcCBmbGFncyBpZiB0aGV5IGFyZSB0aGUgZGVmYXVsdCBvbmUgKi9cXG50b29scy9pbmNsdWRlL2xpbnV4L2dmcC5oOjk6I2RlZmluZSBfX2RlZmF1bHRfZ2ZwKGEsLi4uKSBhXFxudG9vbHMvaW5jbHVkZS9saW51eC9nZnAuaDoxMDojZGVmaW5lIGRlZmF1bHRfZ2ZwKC4uLikgX19kZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyBfX1ZBX09QVF9fKCwpIEdGUF9LRVJORUwpXFxudG9vbHMvaW5jbHVkZS9saW51eC9nZnAuaC0xMS1cXG4tLVxcbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oPTIwMD1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBrbWVtX2NhY2hlX3NoZWFmX3NpemUoc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKVxcbi0tXFxudG9vbHMvaW5jbHVkZS9saW51eC9zbGFiLmgtMjExLSNkZWZpbmUga3phbGxvY19vYmooUCwgLi4uKSBcXFxcXFxudG9vbHMvaW5jbHVkZS9saW51eC9zbGFiLmg6MjEyOlxcdF9fYWxsb2Nfb2JqcyhremFsbG9jLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgMSlcXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaC0yMTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI3OjIxLjA4MTU3MDgwOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI3ODc2MjI0MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBkZWZhdWx0X2dmcGAgUmVsb2NhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYGRlZmF1bHRfZ2ZwYCBoYXMgcG9wcGVkIHVwIGluIGBpbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaGAgbm93LCB3aGVyZSBpdCB3YXNuJ3QgYmVmb3JlLiBUaGF0J3MgaW50ZXJlc3RpbmcuIFByZXZpb3VzbHksIGl0IHdhcyBvbmx5IGJlaW5nIHVzZWQgd2l0aGluIGBpbmNsdWRlL2xpbnV4L3NsYWIuaGAuIFRoZSBjb3JlIHRlYW0gbXVzdCBiZSBtYWtpbmcgc29tZSBhZGp1c3RtZW50cyBoZXJlLiBUaGUgY29tbWl0IG1lc3NhZ2UgaW5kaWNhdGVzIGEgbW92ZSBmcm9tIGBpbmNsdWRlL2xpbnV4L2dmcC5oYCB0byBgaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaGAsIHdoaWNoIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGEgY2hhbmdlIGluIGRlcGVuZGVuY2llcy4gVGhlIHJhdGlvbmFsZSBpcyB0aGF0IGBkZXZyZXMuaGAgZWl0aGVyIGluY2x1ZGVzIGBnZnBfdHlwZXMuaGAgZGlyZWN0bHksIG9yIHNpbXBseSBuZWVkcyBgZGVmYXVsdF9nZnBgIHdpdGhvdXQgcHVsbGluZyBpbiB0aGUgZW50aXJlIGBnZnAuaGAgaGVhZGVyLiBUaGlzIGlzIHRoZSBtb3JlIGxpa2VseSBzY2VuYXJpbywgc28gSSBzaG91bGQgc2VlIGlmIGBkZXZyZXMuaGAgaGFzIGEgbmV3IGluY2x1c2lvbi4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGluY2x1ZGUgZGlyZWN0aXZlcyB3aXRoaW4gYGRldnJlcy5oYCB0byB2ZXJpZnkgdGhpcyB0aGVvcnkuIEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgbmV3IGluY2x1ZGVzLCBhbmQgbWFrZSBzdXJlIHRoYXQgdGhpcyBrZWVwcyB1cCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhlIGtlcm5lbC4gVGhpcyBpcyBwcm9iYWJseSB0byByZWR1Y2Ugb3ZlcmFsbCBkZXBlbmRlbmN5IHNpemUgYW5kIGltcHJvdmUgYnVpbGQgdGltZXMsIGEgZ29vZCBtb3ZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDQwNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDoyNzoyMy44NjkxOTU4OTZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg1MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbiAgIDI6XFx0I2lmbmRlZiBfREVWSUNFX0RFVlJFU19IX1xcbiAgIDM6XFx0I2RlZmluZSBfREVWSUNFX0RFVlJFU19IX1xcbiAgIDQ6XFx0XFxuICAgNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJyLmhcXHUwMDNlXFxuICAgNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZ2ZwX3R5cGVzLmhcXHUwMDNlXFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbnVtYS5oXFx1MDAzZVxcbiAgIDg6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L292ZXJmbG93LmhcXHUwMDNlXFxuICAgOTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc3RkYXJnLmhcXHUwMDNlXFxuICAxMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdHlwZXMuaFxcdTAwM2VcXG4gIDExOlxcdCNpbmNsdWRlIFxcdTAwM2Nhc20vYnVnLmhcXHUwMDNlXFxuICAxMjpcXHQjaW5jbHVkZSBcXHUwMDNjYXNtL3BlcmNwdS5oXFx1MDAzZVxcbiAgMTM6XFx0XFxuICAxNDpcXHRzdHJ1Y3QgZGV2aWNlO1xcbiAgMTU6XFx0c3RydWN0IGRldmljZV9ub2RlO1xcbiAgMTY6XFx0c3RydWN0IHJlc291cmNlO1xcbiAgMTc6XFx0XFxuICAxODpcXHQvKiBkZXZpY2UgcmVzb3VyY2UgbWFuYWdlbWVudCAqL1xcbiAgMTk6XFx0dHlwZWRlZiB2b2lkICgqZHJfcmVsZWFzZV90KShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnJlcyk7XFxuICAyMDpcXHR0eXBlZGVmIGludCAoKmRyX21hdGNoX3QpKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzLCB2b2lkICptYXRjaF9kYXRhKTtcXG4gIDIxOlxcdFxcbiAgMjI6XFx0dm9pZCAqIF9fbWFsbG9jXFxuICAyMzpcXHRfX2RldnJlc19hbGxvY19ub2RlKGRyX3JlbGVhc2VfdCByZWxlYXNlLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwLCBpbnQgbmlkLCBjb25zdCBjaGFyICpuYW1lKTtcXG4gIDI0OlxcdCNkZWZpbmUgZGV2cmVzX2FsbG9jKHJlbGVhc2UsIHNpemUsIGdmcCkgXFxcXFxcbiAgMjU6XFx0XFx0X19kZXZyZXNfYWxsb2Nfbm9kZShyZWxlYXNlLCBzaXplLCBnZnAsIE5VTUFfTk9fTk9ERSwgI3JlbGVhc2UpXFxuICAyNjpcXHQjZGVmaW5lIGRldnJlc19hbGxvY19ub2RlKHJlbGVhc2UsIHNpemUsIGdmcCwgbmlkKSBcXFxcXFxuICAyNzpcXHRcXHRfX2RldnJlc19hbGxvY19ub2RlKHJlbGVhc2UsIHNpemUsIGdmcCwgbmlkLCAjcmVsZWFzZSlcXG4gIDI4OlxcdFxcbiAgMjk6XFx0dm9pZCBkZXZyZXNfZnJlZSh2b2lkICpyZXMpO1xcbiAgMzA6XFx0dm9pZCBkZXZyZXNfYWRkKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzKTtcXG4gIDMxOlxcdHZvaWQgKmRldnJlc19maW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgZHJfcmVsZWFzZV90IHJlbGVhc2UsIGRyX21hdGNoX3QgbWF0Y2gsIHZvaWQgKm1hdGNoX2RhdGEpO1xcbiAgMzI6XFx0dm9pZCAqZGV2cmVzX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKm5ld19yZXMsIGRyX21hdGNoX3QgbWF0Y2gsIHZvaWQgKm1hdGNoX2RhdGEpO1xcbiAgMzM6XFx0dm9pZCAqZGV2cmVzX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGRyX3JlbGVhc2VfdCByZWxlYXNlLCBkcl9tYXRjaF90IG1hdGNoLCB2b2lkICptYXRjaF9kYXRhKTtcXG4gIDM0OlxcdGludCBkZXZyZXNfZGVzdHJveShzdHJ1Y3QgZGV2aWNlICpkZXYsIGRyX3JlbGVhc2VfdCByZWxlYXNlLCBkcl9tYXRjaF90IG1hdGNoLCB2b2lkICptYXRjaF9kYXRhKTtcXG4gIDM1OlxcdGludCBkZXZyZXNfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGRyX3JlbGVhc2VfdCByZWxlYXNlLCBkcl9tYXRjaF90IG1hdGNoLCB2b2lkICptYXRjaF9kYXRhKTtcXG4gIDM2OlxcdFxcbiAgMzc6XFx0LyogZGV2cmVzIGdyb3VwICovXFxuICAzODpcXHR2b2lkICogX19tdXN0X2NoZWNrIGRldnJlc19vcGVuX2dyb3VwKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqaWQsIGdmcF90IGdmcCk7XFxuICAzOTpcXHR2b2lkIGRldnJlc19jbG9zZV9ncm91cChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmlkKTtcXG4gIDQwOlxcdHZvaWQgZGV2cmVzX3JlbW92ZV9ncm91cChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmlkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDA6Mjc6MjMuODY5MjgwNzg1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjM2MjQ1NzMwNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ2hlY2tpbmcgTWVtb3J5IEFsbG9jYXRpb24gRmxhZ3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBoZWFkZXIgZmlsZXMsIHNwZWNpZmljYWxseSBgZGV2cmVzLmhgLiBBbmQgSSBzZWUgdGhhdCBpdCBwdWxscyBpbiBgXHUwMDNjbGludXgvZ2ZwX3R5cGVzLmhcdTAwM2VgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGJ1dCBub3QgZW50aXJlbHkgc3VycHJpc2luZywgZ2l2ZW4gdGhhdCBkZXZpY2UgcmVzb3VyY2VzIG9mdGVuIG5lZWQgdG8gYWxsb2NhdGUgbWVtb3J5LiBOb3csIHRvIG1ha2Ugc3VyZSBJIGhhdmUgYSBnb29kIGdyYXNwIG9uIHRoaXMgbWVtb3J5IHNpdHVhdGlvbiwgSSdsbCBnbyBvbmUgc3RlcCBmdXJ0aGVyIGFuZCBkb3VibGUtY2hlY2sgaG93IGBcdTAwM2NsaW51eC9nZnAuaFx1MDAzZWAgaGFuZGxlcyB0aGluZ3MuIEkga25vdyBpdCAqc2hvdWxkKiBhbHNvIGluY2x1ZGUgYFx1MDAzY2xpbnV4L2dmcF90eXBlcy5oXHUwMDNlYCwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgYWxsb2NhdGlvbiBmbGFncyBhbmQgdGhlaXIgY29tbW9uIHVzZSB0aHJvdWdob3V0IHRoZSBrZXJuZWwuIEknbSBqdXN0IHZlcmlmeWluZyB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgc25lYWt5IG9taXNzaW9ucyBvciB3ZWlyZCBpbmNsdWRlIHBhdGggaXNzdWVzLiBHb3R0YSBtYWtlIHN1cmUgZXZlcnl0aGluZydzIGNvbnNpc3RlbnQgYW5kIHRoYXQgdGhlIGRlZmluaXRpb25zIGFyZSBhY2Nlc3NpYmxlIHdoZXJlIHRoZXkgbmVlZCB0byBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1OTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI3OjI3LjQ5Mzg1NzE3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwMDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbGludXgvZ2ZwLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbiAgIDI6XFx0I2lmbmRlZiBfX0xJTlVYX0dGUF9IXFxuICAgMzpcXHQjZGVmaW5lIF9fTElOVVhfR0ZQX0hcXG4gICA0OlxcdFxcbiAgIDU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dmcF90eXBlcy5oXFx1MDAzZVxcbiAgIDY6XFx0XFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW16b25lLmhcXHUwMDNlXFxuICAgODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdG9wb2xvZ3kuaFxcdTAwM2VcXG4gICA5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9hbGxvY190YWcuaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9jbGVhbnVwLmhcXHUwMDNlXFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc2NoZWQuaFxcdTAwM2VcXG4gIDEyOlxcdFxcbiAgMTM6XFx0c3RydWN0IHZtX2FyZWFfc3RydWN0O1xcbiAgMTQ6XFx0c3RydWN0IG1lbXBvbGljeTtcXG4gIDE1OlxcdFxcbiAgMTY6XFx0c3RhdGljIGlubGluZSBib29sIGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGNvbnN0IGdmcF90IGdmcF9mbGFncylcXG4gIDE3OlxcdHtcXG4gIDE4OlxcdFxcdHJldHVybiAhIShnZnBfZmxhZ3MgXFx1MDAyNiBfX0dGUF9ESVJFQ1RfUkVDTEFJTSk7XFxuICAxOTpcXHR9XFxuICAyMDpcXHRcXG4gIDIxOlxcdHN0YXRpYyBpbmxpbmUgYm9vbCBnZnBmbGFnc19hbGxvd19zcGlubmluZyhjb25zdCBnZnBfdCBnZnBfZmxhZ3MpXFxuICAyMjpcXHR7XFxuICAyMzpcXHRcXHQvKlxcbiAgMjQ6XFx0XFx0ICogIV9fR0ZQX0RJUkVDVF9SRUNMQUlNIC1cXHUwMDNlIGRpcmVjdCBjbGFpbSBpcyBub3QgYWxsb3dlZC5cXG4gIDI1OlxcdFxcdCAqICFfX0dGUF9LU1dBUERfUkVDTEFJTSAtXFx1MDAzZSBpdCdzIG5vdCBzYWZlIHRvIHdha2UgdXAga3N3YXBkLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDoyNzoyNy40OTM5NDk0NDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTgyNDY5NzQ4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJpYWdlIEFzc2Vzc21lbnQ6IFdvcnRoRnV6emluZyBFdmFsdWF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGNvcmUgcHJpbmNpcGxlOiByZWFjaGFiaWxpdHkuIENhbiB0aGlzIGNvZGUgKmFjdHVhbGx5KiBleGVjdXRlIGluIGEgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudD8gVGhhdCdzIHRoZSBwcmltYXJ5IGdhdGUuIEknbSBzZWVpbmcgY2hhbmdlcyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBkZXZpY2UgcmVzb3VyY2UgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGdmcC5oYCwgYGdmcF90eXBlcy5oYCwgYW5kIGBkZXZyZXMuaGAgaGVhZGVyIGZpbGVzLlxuXG5Jbml0aWFsbHksIEkgc2VlIGBkZWZhdWx0X2dmcGAgaGFzIGJlZW4gbW92ZWQgZnJvbSBgZ2ZwLmhgIHRvIGBnZnBfdHlwZXMuaGAuIFNpbmNlIGBnZnAuaGAgaW5jbHVkZXMgYGdmcF90eXBlcy5oYCwgdGhpcyBpcyBhIHJlbG9jYXRpb24sIG5vdCBhIG1vZGlmaWNhdGlvbiBvZiB0aGUgZGVmaW5pdGlvbi4gQW55IGNvZGUgdGhhdCBpbmNsdWRlZCBgZ2ZwLmhgICphbHJlYWR5KiBoYWQgYWNjZXNzIHRvIGBkZWZhdWx0X2dmcGAuIEl0IGlzIG5vdyBzaW1wbHkgb2J0YWluZWQgdmlhIGEgZGlmZmVyZW50IGluY2x1ZGUuIEl0IHNlZW1zIGxpa2UgYSByZWZhY3RvciB0byBpbXByb3ZlIGhlYWRlciBmaWxlIHN0cnVjdHVyZSwgYW5kIHNob3VsZCBub3QgYWZmZWN0IGNvbXBpbGVkIGNvZGUuXG5cbk5leHQsIHRoZSBgZGV2cmVzLmhgIGNoYW5nZXMuIEhlcmUsIHRoZXJlIGFyZSAqbmV3KiBtYWNyb3MgYWRkZWQgcmVsYXRlZCB0byBtYW5hZ2VkIG1lbW9yeSBhbGxvY2F0aW9uOiBgZGV2bV9rbWFsbG9jX29iamAsIGBkZXZtX2ttYWxsb2Nfb2Jqc2AsIGBkZXZtX2ttYWxsb2NfZmxleGAsIGBkZXZtX2t6YWxsb2Nfb2JqYCwgZXRjLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBhcmUgdGhlc2UgbWFjcm9zICphY3R1YWxseSB1c2VkKiBhbnl3aGVyZSBpbiB0aGUga2VybmVsPyBJIGluaXRpYWxseSB1c2VkIGEgYGdyZXBwZXJgIHN0eWxlIHNlYXJjaCBhbmQgZm91bmQgKm5vdGhpbmcqIGluIHRoZSBjb2RlIGJhc2UgdGhhdCB1c2VzIHRoZXNlIG1hY3JvcyEgSXQgc2VlbXMgdGhlIGFkZGVkIGNvZGUgaXMgZW50aXJlbHkgdW51c2VkLlxuXG5HaXZlbiB0aGUgdHJpYWdlIHBoaWxvc29waHksIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGlzIG5vdCBhbiBhY2NpZGVudGFsIG92ZXJzaWdodCAobWF5YmUgZnJvbSBhbiBvbGRlciBjb21taXQgb3IgYSBkaWZmZXJlbnQgY29kZSBiYXNlKS4gSSB3aWxsIGNoZWNrIGV2ZXJ5IHNpbmdsZSBzeW1ib2wgdG8gYmUgMTAwJSBzdXJlOlxuLSBgX19kZXZtX2FsbG9jX29ianNgXG4tIGBkZXZtX2ttYWxsb2Nfb2JqYFxuLSBgZGV2bV9rbWFsbG9jX29ianNgXG4tIGBfX2Rldm1fYWxsb2NfZmxleGBcbi0gYGRldm1fa21hbGxvY19mbGV4YFxuLSBgZGV2bV9remFsbG9jX29iamBcbi0gYGRldm1fa3phbGxvY19vYmpzYFxuLSBgZGV2bV9remFsbG9jX2ZsZXhgXG5cbklmIHRob3NlIG1hY3JvcyBhcmUgZGVmaW5lZCBidXQgbmV2ZXIgaW52b2tlZCwgSSBjb25zaWRlciB0aGUgY2hhbmdlcyB0byBiZSBlcXVpdmFsZW50IHRvIGRlYWQgY29kZS4gSWYgdGhpcyBjb2RlIGlzIG5vdCByZWFjaGFibGUsIHRoZW4gaXQgZG9lc24ndCBuZWVkIHRvIGJlIGZ1enplZC4gTXkgZGVjaXNpb24gaGluZ2VzIG9uIHdoZXRoZXIgdGhlc2UgbWFjcm9zIGhhdmUgY2FsbGVycyBvciBub3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjA2LCJPdXRwdXRUb2tlbnMiOjYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI3OjQ1Ljc0MDkyODIwOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5NzU4NzYwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZtX2ttYWxsb2Nfb2JqfGRldm1fa21hbGxvY19vYmpzfGRldm1fa21hbGxvY19mbGV4fGRldm1fa3phbGxvY19vYmp8ZGV2bV9remFsbG9jX29ianN8ZGV2bV9remFsbG9jX2ZsZXhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg9NjE9c3RhdGljIGlubGluZSB2b2lkICpkZXZtX2tjYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxcbi0tXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtODYtLyoqXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6ODc6ICogZGV2bV9rbWFsbG9jX29iaiAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSBzaW5nbGUgdHlwZWQgb2JqZWN0XFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtODgtICogQERFVjogRGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLlxcbi0tXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtOTctICovXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6OTg6I2RlZmluZSBkZXZtX2ttYWxsb2Nfb2JqKERFViwgVkFSX09SX1RZUEUsIC4uLilcXHRcXHRcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtOTktXFx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSxcXHRcXFxcXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMDItLyoqXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTAzOiAqIGRldm1fa21hbGxvY19vYmpzIC0gRGV2aWNlLW1hbmFnZWQgYWxsb2NhdGlvbiBvZiBhbiBhcnJheSBvZiBhIHR5cGVkIG9iamVjdFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTEwNC0gKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTEtICovXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTEyOiNkZWZpbmUgZGV2bV9rbWFsbG9jX29ianMoREVWLCBWQVJfT1JfVFlQRSwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTExMy1cXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNDEtLyoqXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTQyOiAqIGRldm1fa21hbGxvY19mbGV4IC0gRGV2aWNlLW1hbmFnZWQgYWxsb2NhdGlvbiBvZiBhIGZsZXhpYmxlLWFycmF5IHN0cnVjdHVyZVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE0My0gKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNTItICovXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTUzOiNkZWZpbmUgZGV2bV9rbWFsbG9jX2ZsZXgoREVWLCBWQVJfT1JfVFlQRSwgRkFNLCBDT1VOVCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTU0LVxcdF9fZGV2bV9hbGxvY19mbGV4KGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1Ny0vKiBBbGwgZGV2bV9remFsbG9jIGFsaWFzZXMgZm9yIGRldm1fa21hbGxvY18ob2JqfG9ianN8ZmxleCkuICovXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTU4OiNkZWZpbmUgZGV2bV9remFsbG9jX29iaihERVYsIFAsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1OS1cXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIDEpXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTYwOiNkZWZpbmUgZGV2bV9remFsbG9jX29ianMoREVWLCBQLCBDT1VOVCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTYxLVxcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjItXFx0XFx0XFx0ICB0eXBlb2YoUCksIENPVU5UKVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE2MzojZGVmaW5lIGRldm1fa3phbGxvY19mbGV4KERFViwgUCwgRkFNLCBDT1VOVCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTY0LVxcdF9fZGV2bV9hbGxvY19mbGV4KGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDA6Mjc6NDguMTM4NTIxNzkxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE1NjQyOTIyNzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBLZXJuZWwgUGF0Y2ggZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ3ZlIGdvdC4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNldmVyYWwgbmV3IGRldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gaGVscGVyIG1hY3JvczogYGRldm1fa21hbGxvY19vYmpgLCBgZGV2bV9remFsbG9jX29iamAsIGFuZCBhIGZldyBvdGhlcnMsIGJ1dCBjcml0aWNhbGx5LCBub25lIG9mIHRoZXNlIGFyZSBhY3R1YWxseSB1c2VkICphbnl3aGVyZSogaW4gdGhlIGN1cnJlbnQga2VybmVsIHNvdXJjZS4gU2luY2UgdGhleSdyZSBtYWNyb3MsIHdoaWNoIGFyZSBwcmVwcm9jZXNzb3IgZGVmaW5pdGlvbnMsIGlmIHRoZXkgYXJlbid0IGludm9rZWQgaW4gYW55IEMgZmlsZSBvciBoZWFkZXIsIHRoZSBjb21waWxlciBkb2Vzbid0IGdlbmVyYXRlIGFueSBtYWNoaW5lIGNvZGUgZm9yIHRoZW0uIFNvLCBpbiB0ZXJtcyBvZiBleGVjdXRhYmxlIGNvZGUsIHRoaXMgcGF0Y2ggbGl0ZXJhbGx5IGRvZXMgbm90aGluZy4gWmVyby4gSXQgYWxzbyBtb3ZlcyB0aGUgZXhpc3RpbmcgYGRlZmF1bHRfZ2ZwYCBtYWNybyBmcm9tIGBsaW51eC9nZnAuaGAgdG8gYGxpbnV4L2dmcF90eXBlcy5oYCwgYnV0IHdpdGggbm8gY2hhbmdlIHRvIHRoZSBtYWNybydzICpkZWZpbml0aW9uKi4gSSd2ZSB2ZXJpZmllZCB0aGlzIHdpdGggYSBkaWZmLiBgZ2ZwLmhgICppbmNsdWRlcyogYGdmcF90eXBlcy5oYCBzbyB0aGUgZGVmaW5pdGlvbiBpcyBzdGlsbCBhdmFpbGFibGUgaW4gZXhpc3RpbmcgY2FsbC1zaXRlcyBhbmQgZXhwYW5kaW5nIHRvIHRoZSBzYW1lIHRva2Vucy5cblxuTm93LCBsZXQncyBjYXJlZnVsbHkgZXZhbHVhdGUgdGhlIFwibmVnYXRpdmUgY3JpdGVyaWFcIiBmb3IgZGV0ZXJtaW5pbmcgZnV6emluZyBlbGlnaWJpbGl0eS4gSXQncyBhIGJpbmFyeSBkZWNpc2lvbjogc2hvdWxkIHdlIGZ1enosIG9yIG5vdD8gVGhlIHJlbGV2YW50IHNlY3Rpb24gc3BlY2lmaWNhbGx5IG1lbnRpb25zIFwiTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlcyxcIiBhbmQgdGhhdCBpbmNsdWRlcyBcIlVudXNlZCBtYWNybyBkZWZpbml0aW9ucy5cIiBVbnVzZWQgbWFjcm9zICpkb24ndCogcHJvZHVjZSBhbnkgZXhlY3V0YWJsZSBjb2RlLCBhbmQgd2UndmUgZXN0YWJsaXNoZWQgdGhhdCB0aGVyZSBhcmUgbm8gbWFjcm8gY2FsbHMuIEFsc28sIFNlY3Rpb24gNCB0YWxrcyBhYm91dCBpbmxpbmVkIGZ1bmN0aW9ucyBhbmQgdGhlIG5lZWQgdG8gZmluZCBjYWxsZXJzIGlmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLiBCdXQgaGVyZSwgdGhlcmUgYXJlbid0IGV2ZW4gc3RhdGljIGlubGluZSBmdW5jdGlvbnMsIGFuZCB0aGVyZSBhcmUgTk8gY2FsbGVycyBpbiBhbnkgLmMgZmlsZSEgVGhlc2UgYXJlIHVudXNlZCBwcmVwcm9jZXNzb3IgbWFjcm9zIChoZWxwZXIgQVBJIGludHJvZHVjZWQgd2l0aG91dCBjYWxsZXJzIHlldCkuIEJlY2F1c2Ugbm8gY2FsbGVyIGV4aXN0cywgdGhlcmUgaXMgbm8gc3ltYm9sLCBubyBjb2RlIGluIHZtbGludXgsIGFuZCBubyBwYXRoIHRoYXQgZXhlY3V0ZXMgYW55IG9mIHRoZSBtb2RpZmllZCBvciBhZGRlZCBjb2RlLlxuXG5UaGUgY3JpdGVyaWEgc3RhdGU6IFwiUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6IEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLi4uXCIgU28sIGJlY2F1c2UgdGhlc2UgbWFjcm9zIGFyZSBuZXZlciBpbnN0YW50aWF0ZWQgYW55d2hlcmUsIHRoZXkgYXJlIGNvbXBsZXRlbHkgbm9uLWV4ZWN1dGFibGUgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cblxuTGV0J3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2s6IHRoZSBkaWZmIHNob3dlZCB0aGUgYWRkaXRpb25zIHRvIGBkZXZyZXMuaGAsIHRoZSByZW1vdmFscyBmcm9tIGBnZnAuaGAsIGFuZCB0aGUgYWRkaXRpb25zIHRvIGBnZnBfdHlwZXMuaGAuIEJ1dCB0aGUgZGVmaW5pdGlvbiBvZiBgZGVmYXVsdF9nZnBgIGl0c2VsZiBpcyBpZGVudGljYWwgaW4gYm90aCBsb2NhdGlvbnMsIG1lYW5pbmcgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuXG5cbkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgbmV3IGRldnJlcyBhbGxvY2F0aW9uIGhlbHBlciBtYWNyb3MgdGhhdCBhcmVuJ3QgY2FsbGVkIGFueXdoZXJlICp5ZXQqIGFuZCBtb3ZpbmcgdGhlIGBkZWZhdWx0X2dmcGAgaGVscGVyIG1hY3JvIHdpdGggbm8gZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IGRvZXNuJ3QgYWRkIG9yIGFsdGVyIGFueSBjb21waWxlZCBleGVjdXRhYmxlIGNvZGUuIFRoZXJlZm9yZTpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBmYWxzZVxuKiAgIGBFbmFibGVDb25maWdzYDogXFxbIF1cbiogICBgRm9jdXNTeW1ib2xzYDogXFxbIF1cbiogICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBuZXcgZGV2cmVzIGFsbG9jYXRpb24gbWFjcm9zIChgZGV2bV9rbWFsbG9jX29iamAsIGBkZXZtX2t6YWxsb2Nfb2JqYCwgZXRjLikgd2hpY2ggY3VycmVudGx5IGhhdmUgbm8gY2FsbGVycyBpbiB0aGUga2VybmVsIGNvZGViYXNlLCBhbmQgbW92ZXMgdGhlIGRlZmluaXRpb24gb2YgYGRlZmF1bHRfZ2ZwYCBmcm9tIGBsaW51eC9nZnAuaGAgdG8gYGxpbnV4L2dmcF90eXBlcy5oYCB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLiBObyBjb21waWxlZCBleGVjdXRhYmxlIGNvZGUgaXMgYWRkZWQgb3IgbW9kaWZpZWQuXG5cbkFsbCBjbGVhci4gTGV0J3Mgc2VuZCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDkwNSwiT3V0cHV0VG9rZW5zIjoxNDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI4OjAzLjc4MTQ0NzQwMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBuZXcgZGV2cmVzIGFsbG9jYXRpb24gaGVscGVyIG1hY3JvcyAoZGV2bV9rbWFsbG9jX29iaiwgZGV2bV9remFsbG9jX29iaiwgZGV2bV9rbWFsbG9jX2ZsZXgsIGV0Yy4pIHdoaWNoIGN1cnJlbnRseSBoYXZlIG5vIGNhbGxlcnMgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCBjb2RlYmFzZSwgYW5kIG1vdmVzIHRoZSBtYWNybyBkZWZpbml0aW9uIG9mIGRlZmF1bHRfZ2ZwIGZyb20gbGludXgvZ2ZwLmggdG8gbGludXgvZ2ZwX3R5cGVzLmggd2l0aCBubyBjaGFuZ2UgaW4gbG9naWMuIEJlY2F1c2Ugbm8gY2FsbGVycyBleGlzdCBmb3IgdGhlIG5ldyBtYWNyb3MsIG5vIGV4ZWN1dGFibGUga2VybmVsIGNvZGUgaXMgYWRkZWQgb3IgYWx0ZXJlZCwgbWFraW5nIHRoZSBjaGFuZ2VzIG5vbi1leGVjdXRhYmxlIGFuZCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGludHJvZHVjZXMgbmV3IGRldnJlcyBhbGxvY2F0aW9uIGhlbHBlciBtYWNyb3MgKGRldm1fa21hbGxvY19vYmosIGRldm1fa3phbGxvY19vYmosIGRldm1fa21hbGxvY19mbGV4LCBldGMuKSB3aGljaCBjdXJyZW50bHkgaGF2ZSBubyBjYWxsZXJzIGFueXdoZXJlIGluIHRoZSBrZXJuZWwgY29kZWJhc2UsIGFuZCBtb3ZlcyB0aGUgbWFjcm8gZGVmaW5pdGlvbiBvZiBkZWZhdWx0X2dmcCBmcm9tIGxpbnV4L2dmcC5oIHRvIGxpbnV4L2dmcF90eXBlcy5oIHdpdGggbm8gY2hhbmdlIGluIGxvZ2ljLiBCZWNhdXNlIG5vIGNhbGxlcnMgZXhpc3QgZm9yIHRoZSBuZXcgbWFjcm9zLCBubyBleGVjdXRhYmxlIGtlcm5lbCBjb2RlIGlzIGFkZGVkIG9yIGFsdGVyZWQsIG1ha2luZyB0aGUgY2hhbmdlcyBub24tZXhlY3V0YWJsZSBhbmQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDA6Mjg6MDMuNzgxNDc2NDgyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowz77h6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-15 00:04:19 +0000 UTC FinishedAt: 2026-09-15 00:28:04 +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+CgkJCTx0ZD4yMDI2LzA5LzE1IDAwOjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIG5ldyBkZXZyZXMgYWxsb2NhdGlvbiBoZWxwZXIgbWFjcm9zIChkZXZtX2ttYWxsb2Nfb2JqLCBkZXZtX2t6YWxsb2Nfb2JqLCBkZXZtX2ttYWxsb2NfZmxleCwgZXRjLikgd2hpY2ggY3VycmVudGx5IGhhdmUgbm8gY2FsbGVycyBhbnl3aGVyZSBpbiB0aGUga2VybmVsIGNvZGViYXNlLCBhbmQgbW92ZXMgdGhlIG1hY3JvIGRlZmluaXRpb24gb2YgZGVmYXVsdF9nZnAgZnJvbSBsaW51eC9nZnAuaCB0byBsaW51eC9nZnBfdHlwZXMuaCB3aXRoIG5vIGNoYW5nZSBpbiBsb2dpYy4gQmVjYXVzZSBubyBjYWxsZXJzIGV4aXN0IGZvciB0aGUgbmV3IG1hY3Jvcywgbm8gZXhlY3V0YWJsZSBrZXJuZWwgY29kZSBpcyBhZGRlZCBvciBhbHRlcmVkLCBtYWtpbmcgdGhlIGNoYW5nZXMgbm9uLWV4ZWN1dGFibGUgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6MjY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlYzFmNDZjYjNmZDk5YWYwODUxODc2ZmFhNzU2OGU3MDZiY2EyMTA3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMDA6MjY6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmggYi9pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaFxuaW5kZXggMTRhYjkxNTliZGRhNS4uNzY1NmM5ZWNkNGRhYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaFxuQEAgLTYyLDYgJiM0Mzs2MiwxMDggQEAgc3RhdGljIGlubGluZSB2b2lkICpkZXZtX2tjYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF9cbiB7XG4gXHRyZXR1cm4gZGV2bV9rbWFsbG9jX2FycmF5KGRldiwgbiwgc2l6ZSwgZmxhZ3MgfCBfX0dGUF9aRVJPKTtcbiB9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogX19kZXZtX2FsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIG9iamVjdHMgb2YgYSBnaXZlbiB0eXBlXG4mIzQzOyAqIEBERVZNX0FMTE9DOiB3aGljaCBkZXZpY2UtbWFuYWdlZCBzaXplLWJhc2VkIGFsbG9jYXRvciB0byB1c2UuXG4mIzQzOyAqIEBERVY6IGRldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cbiYjNDM7ICogQEdGUDogR0ZQIGZsYWdzIGZvciB0aGUgYWxsb2NhdGlvbi5cbiYjNDM7ICogQFRZUEU6IHR5cGUgdG8gYWxsb2NhdGUgc3BhY2UgZm9yLlxuJiM0MzsgKiBAQ09VTlQ6IGhvdyBtYW55IEBUWVBFIG9iamVjdHMgdG8gYWxsb2NhdGUuXG4mIzQzOyAqXG4mIzQzOyAqIERldmljZS1tYW5hZ2VkIGNvdW50ZXJwYXJ0IG9mIF9fYWxsb2Nfb2JqcygpLlxuJiM0MzsgKiBAREVWTV9BTExPQyB0YWtlcyAoQERFViwgc2l6ZSwgZ2ZwKS5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuczogTmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgdG8gKGZpcnN0KSBAVFlQRSBvZiBAQ09VTlQtbWFueSBhbGxvY2F0ZWRcbiYjNDM7ICogQFRZUEUgb2JqZWN0cywgb3IgTlVMTCBvbiBmYWlsdXJlLlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBfX2Rldm1fYWxsb2Nfb2JqcyhERVZNX0FMTE9DLCBERVYsIEdGUCwgVFlQRSwgQ09VTlQpXHRcdFxcXG4mIzQzOyh7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRjb25zdCBzaXplX3QgX19vYmpfc2l6ZSA9IHNpemVfbXVsKHNpemVvZihUWVBFKSwgQ09VTlQpO1x0XFxcbiYjNDM7XHQoVFlQRSAqKURFVk1fQUxMT0MoREVWLCBfX29ial9zaXplLCBHRlApO1x0XHRcdFxcXG4mIzQzO30pXG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZGV2bV9rbWFsbG9jX29iaiAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSBzaW5nbGUgdHlwZWQgb2JqZWN0XG4mIzQzOyAqIEBERVY6IERldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cbiYjNDM7ICogQFZBUl9PUl9UWVBFOiBWYXJpYWJsZSBvciB0eXBlIHRvIGFsbG9jYXRlLlxuJiM0MzsgKiBAR0ZQOiBPcHRpb25hbCBHRlAgZmxhZ3MgKGRlZmF1bHRzIHRvICVHRlBfS0VSTkVMKS5cbiYjNDM7ICpcbiYjNDM7ICogRGV2aWNlLW1hbmFnZWQgY291bnRlcnBhcnQgb2Yga21hbGxvY19vYmooKTogdGhlIGFsbG9jYXRpb24gaXMgc2l6ZWQgZnJvbVxuJiM0MzsgKiBAVkFSX09SX1RZUEUgYW5kIHJldHVybmVkIGFzIGEgcG9pbnRlciB0byB0aGF0IHR5cGUsIG5vdCB2b2lkICouXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnM6IG5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHRvIGEgQFZBUl9PUl9UWVBFIG9uIHN1Y2Nlc3MsIG9yIE5VTEwgb25cbiYjNDM7ICogZmFpbHVyZS5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgZGV2bV9rbWFsbG9jX29iaihERVYsIFZBUl9PUl9UWVBFLCAuLi4pXHRcdFx0XHRcXFxuJiM0MztcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksXHRcXFxuJiM0MztcdFx0XHQgIHR5cGVvZihWQVJfT1JfVFlQRSksIDEpXG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZGV2bV9rbWFsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGFuIGFycmF5IG9mIGEgdHlwZWQgb2JqZWN0XG4mIzQzOyAqIEBERVY6IERldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cbiYjNDM7ICogQFZBUl9PUl9UWVBFOiBWYXJpYWJsZSBvciB0eXBlIHRvIGFsbG9jYXRlIGFuIGFycmF5IG9mLlxuJiM0MzsgKiBAQ09VTlQ6IEhvdyBtYW55IGVsZW1lbnRzIGluIHRoZSBhcnJheS5cbiYjNDM7ICogQEdGUDogT3B0aW9uYWwgR0ZQIGZsYWdzIChkZWZhdWx0cyB0byAlR0ZQX0tFUk5FTCkuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnM6IG5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHRvIGFuIGFycmF5IG9mIEBWQVJfT1JfVFlQRSBvbiBzdWNjZXNzLCBvclxuJiM0MzsgKiBOVUxMIG9uIGZhaWx1cmUgKGluY2x1ZGluZyB3aGVuIHRoZSB0b3RhbCBzaXplIG92ZXJmbG93cykuXG4mIzQzOyAqL1xuJiM0MzsjZGVmaW5lIGRldm1fa21hbGxvY19vYmpzKERFViwgVkFSX09SX1RZUEUsIENPVU5ULCAuLi4pIFxcXG4mIzQzO1x0X19kZXZtX2FsbG9jX29ianMoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcbiYjNDM7XHRcdFx0ICB0eXBlb2YoVkFSX09SX1RZUEUpLCBDT1VOVClcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBfX2Rldm1fYWxsb2NfZmxleCAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSB0cmFpbGluZy1mbGV4LWFycmF5IG9iamVjdFxuJiM0MzsgKiBAREVWTV9BTExPQzogd2hpY2ggZGV2aWNlLW1hbmFnZWQgYWxsb2NhdG9yIHRvIHVzZS5cbiYjNDM7ICogQERFVjogZGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLlxuJiM0MzsgKiBAR0ZQOiBHRlAgZmxhZ3MgZm9yIHRoZSBhbGxvY2F0aW9uLlxuJiM0MzsgKiBAVFlQRTogdHlwZSBvZiBzdHJ1Y3R1cmUgdG8gYWxsb2NhdGUgc3BhY2UgZm9yLlxuJiM0MzsgKiBARkFNOiBuYW1lIG9mIHRoZSBmbGV4aWJsZSBhcnJheSBtZW1iZXIgb2YgQFRZUEUuXG4mIzQzOyAqIEBDT1VOVDogaG93IG1hbnkgQEZBTSBlbGVtZW50cyB0byBhbGxvY2F0ZSBzcGFjZSBmb3IuXG4mIzQzOyAqXG4mIzQzOyAqIERldmljZS1tYW5hZ2VkIGNvdW50ZXJwYXJ0IG9mIF9fYWxsb2NfZmxleCgpLlxuJiM0MzsgKiBAREVWTV9BTExPQyB0YWtlcyAoQERFViwgc2l6ZSwgZ2ZwKS5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuczogTmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgdG8gQFRZUEUgd2l0aCBAQ09VTlQtbWFueSB0cmFpbGluZyBARkFNXG4mIzQzOyAqIGVsZW1lbnRzLCBvciBOVUxMIG9uIGZhaWx1cmUuXG4mIzQzOyAqL1xuJiM0MzsjZGVmaW5lIF9fZGV2bV9hbGxvY19mbGV4KERFVk1fQUxMT0MsIERFViwgR0ZQLCBUWVBFLCBGQU0sIENPVU5UKVx0XFxcbiYjNDM7KHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGNvbnN0IHNpemVfdCBfX2NvdW50ID0gKENPVU5UKTtcdFx0XHRcdFx0XFxcbiYjNDM7XHRjb25zdCBzaXplX3QgX19vYmpfc2l6ZSA9IHN0cnVjdF9zaXplX3QoVFlQRSwgRkFNLCBfX2NvdW50KTtcdFxcXG4mIzQzO1x0VFlQRSAqX19vYmpfcHRyID0gREVWTV9BTExPQyhERVYsIF9fb2JqX3NpemUsIEdGUCk7XHRcdFxcXG4mIzQzO1x0aWYgKF9fb2JqX3B0cilcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRfX3NldF9mbGV4X2NvdW50ZXIoX19vYmpfcHRyLVx1MDAzZUZBTSwgX19jb3VudCk7XHRcdFxcXG4mIzQzO1x0X19vYmpfcHRyO1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7fSlcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBkZXZtX2ttYWxsb2NfZmxleCAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSBmbGV4aWJsZS1hcnJheSBzdHJ1Y3R1cmVcbiYjNDM7ICogQERFVjogRGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLlxuJiM0MzsgKiBAVkFSX09SX1RZUEU6IFZhcmlhYmxlIG9yIHR5cGUgdG8gYWxsb2NhdGUgKHdpdGggaXRzIGZsZXhpYmxlIGFycmF5KS5cbiYjNDM7ICogQEZBTTogVGhlIG5hbWUgb2YgdGhlIGZsZXhpYmxlIGFycmF5IG1lbWJlciBvZiB0aGUgc3RydWN0dXJlLlxuJiM0MzsgKiBAQ09VTlQ6IEhvdyBtYW55IGZsZXhpYmxlIGFycmF5IG1lbWJlciBlbGVtZW50cyB0byBhbGxvY2F0ZS5cbiYjNDM7ICogQEdGUDogT3B0aW9uYWwgR0ZQIGZsYWdzIChkZWZhdWx0cyB0byAlR0ZQX0tFUk5FTCkuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnM6IG5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHRvIEBWQVJfT1JfVFlQRSBvbiBzdWNjZXNzLCBvciBOVUxMIG9uXG4mIzQzOyAqIGZhaWx1cmUuIElmIEBGQU0gaGFzIGJlZW4gYW5ub3RhdGVkIHdpdGggX19jb3VudGVkX2J5KCksIGl0cyBjb3VudGVyIGlzIHNldFxuJiM0MzsgKiB0byBAQ09VTlQuXG4mIzQzOyAqL1xuJiM0MzsjZGVmaW5lIGRldm1fa21hbGxvY19mbGV4KERFViwgVkFSX09SX1RZUEUsIEZBTSwgQ09VTlQsIC4uLikgXFxcbiYjNDM7XHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuJiM0MztcdFx0XHQgIHR5cGVvZihWQVJfT1JfVFlQRSksIEZBTSwgQ09VTlQpXG4mIzQzO1xuJiM0MzsvKiBBbGwgZGV2bV9remFsbG9jIGFsaWFzZXMgZm9yIGRldm1fa21hbGxvY18ob2JqfG9ianN8ZmxleCkuICovXG4mIzQzOyNkZWZpbmUgZGV2bV9remFsbG9jX29iaihERVYsIFAsIC4uLikgXFxcbiYjNDM7XHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIDEpXG4mIzQzOyNkZWZpbmUgZGV2bV9remFsbG9jX29ianMoREVWLCBQLCBDT1VOVCwgLi4uKSBcXFxuJiM0MztcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXG4mIzQzO1x0XHRcdCAgdHlwZW9mKFApLCBDT1VOVClcbiYjNDM7I2RlZmluZSBkZXZtX2t6YWxsb2NfZmxleChERVYsIFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcbiYjNDM7XHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuJiM0MztcdFx0XHQgIHR5cGVvZihQKSwgRkFNLCBDT1VOVClcbiYjNDM7XG4gc3RhdGljIGlubGluZSBfX3JlYWxsb2Nfc2l6ZSgzLCA0KSB2b2lkICogX19tdXN0X2NoZWNrXG4gZGV2bV9rcmVhbGxvY19hcnJheShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnAsIHNpemVfdCBuZXdfbiwgc2l6ZV90IG5ld19zaXplLCBnZnBfdCBmbGFncylcbiB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9nZnAuaCBiL2luY2x1ZGUvbGludXgvZ2ZwLmhcbmluZGV4IDg3MmJjNTNmMzJlYzguLmI2MmUyZmQ1M2NiNDEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2dmcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2dmcC5oXG5AQCAtMTMsMTAgJiM0MzsxMyw2IEBAXG4gc3RydWN0IHZtX2FyZWFfc3RydWN0O1xuIHN0cnVjdCBtZW1wb2xpY3k7XG4gXG4tLyogSGVscGVyIG1hY3JvIHRvIGF2b2lkIGdmcCBmbGFncyBpZiB0aGV5IGFyZSB0aGUgZGVmYXVsdCBvbmUgKi9cbi0jZGVmaW5lIF9fZGVmYXVsdF9nZnAoYSxiLC4uLikgYlxuLSNkZWZpbmUgZGVmYXVsdF9nZnAoLi4uKSBfX2RlZmF1bHRfZ2ZwKCwjI19fVkFfQVJHU19fLEdGUF9LRVJORUwpXG4tXG4gc3RhdGljIGlubGluZSBib29sIGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGNvbnN0IGdmcF90IGdmcF9mbGFncylcbiB7XG4gXHRyZXR1cm4gISEoZ2ZwX2ZsYWdzIFx1MDAyNiBfX0dGUF9ESVJFQ1RfUkVDTEFJTSk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmhcbmluZGV4IDE5MDE5MTQxMTAwOWYuLmIxY2QxNDNmM2M0MmYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oXG5AQCAtMzgyLDQgJiM0MzszODIsOCBAQCBlbnVtIHtcbiBcdFx0XHQgX19HRlBfTk9NRU1BTExPQyB8IF9fR0ZQX05PV0FSTikgXHUwMDI2IH5fX0dGUF9SRUNMQUlNKVxuICNkZWZpbmUgR0ZQX1RSQU5TSFVHRVx0KEdGUF9UUkFOU0hVR0VfTElHSFQgfCBfX0dGUF9ESVJFQ1RfUkVDTEFJTSlcbiBcbiYjNDM7LyogSGVscGVyIG1hY3JvIHRvIGF2b2lkIGdmcCBmbGFncyBpZiB0aGV5IGFyZSB0aGUgZGVmYXVsdCBvbmUgKi9cbiYjNDM7I2RlZmluZSBfX2RlZmF1bHRfZ2ZwKGEsYiwuLi4pIGJcbiYjNDM7I2RlZmluZSBkZWZhdWx0X2dmcCguLi4pIF9fZGVmYXVsdF9nZnAoLCMjX19WQV9BUkdTX18sR0ZQX0tFUk5FTClcbiYjNDM7XG4gI2VuZGlmIC8qIF9fTElOVVhfR0ZQX1RZUEVTX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGludHJvZHVjZXMgbmV3IGRldnJlcyBhbGxvY2F0aW9uIGhlbHBlciBtYWNyb3MgKGRldm1fa21hbGxvY19vYmosIGRldm1fa3phbGxvY19vYmosIGRldm1fa21hbGxvY19mbGV4LCBldGMuKSB3aGljaCBjdXJyZW50bHkgaGF2ZSBubyBjYWxsZXJzIGFueXdoZXJlIGluIHRoZSBrZXJuZWwgY29kZWJhc2UsIGFuZCBtb3ZlcyB0aGUgbWFjcm8gZGVmaW5pdGlvbiBvZiBkZWZhdWx0X2dmcCBmcm9tIGxpbnV4L2dmcC5oIHRvIGxpbnV4L2dmcF90eXBlcy5oIHdpdGggbm8gY2hhbmdlIGluIGxvZ2ljLiBCZWNhdXNlIG5vIGNhbGxlcnMgZXhpc3QgZm9yIHRoZSBuZXcgbWFjcm9zLCBubyBleGVjdXRhYmxlIGtlcm5lbCBjb2RlIGlzIGFkZGVkIG9yIGFsdGVyZWQsIG1ha2luZyB0aGUgY2hhbmdlcyBub24tZXhlY3V0YWJsZSBhbmQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVjMWY0NmNiM2ZkOTlhZjA4NTE4NzZmYWE3NTY4ZTcwNmJjYTIxMDcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxNSAwMDoyNjo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oIGIvaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgKaW5kZXggMTRhYjkxNTliZGRhNS4uNzY1NmM5ZWNkNGRhYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgKQEAgLTYyLDYgJiM0Mzs2MiwxMDggQEAgc3RhdGljIGlubGluZSB2b2lkICpkZXZtX2tjYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF8KIHsKIAlyZXR1cm4gZGV2bV9rbWFsbG9jX2FycmF5KGRldiwgbiwgc2l6ZSwgZmxhZ3MgfCBfX0dGUF9aRVJPKTsKIH0KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBfX2Rldm1fYWxsb2Nfb2JqcyAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2Ygb2JqZWN0cyBvZiBhIGdpdmVuIHR5cGUKJiM0MzsgKiBAREVWTV9BTExPQzogd2hpY2ggZGV2aWNlLW1hbmFnZWQgc2l6ZS1iYXNlZCBhbGxvY2F0b3IgdG8gdXNlLgomIzQzOyAqIEBERVY6IGRldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by4KJiM0MzsgKiBAR0ZQOiBHRlAgZmxhZ3MgZm9yIHRoZSBhbGxvY2F0aW9uLgomIzQzOyAqIEBUWVBFOiB0eXBlIHRvIGFsbG9jYXRlIHNwYWNlIGZvci4KJiM0MzsgKiBAQ09VTlQ6IGhvdyBtYW55IEBUWVBFIG9iamVjdHMgdG8gYWxsb2NhdGUuCiYjNDM7ICoKJiM0MzsgKiBEZXZpY2UtbWFuYWdlZCBjb3VudGVycGFydCBvZiBfX2FsbG9jX29ianMoKS4KJiM0MzsgKiBAREVWTV9BTExPQyB0YWtlcyAoQERFViwgc2l6ZSwgZ2ZwKS4KJiM0MzsgKgomIzQzOyAqIFJldHVybnM6IE5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHRvIChmaXJzdCkgQFRZUEUgb2YgQENPVU5ULW1hbnkgYWxsb2NhdGVkCiYjNDM7ICogQFRZUEUgb2JqZWN0cywgb3IgTlVMTCBvbiBmYWlsdXJlLgomIzQzOyAqLwomIzQzOyNkZWZpbmUgX19kZXZtX2FsbG9jX29ianMoREVWTV9BTExPQywgREVWLCBHRlAsIFRZUEUsIENPVU5UKQkJXAomIzQzOyh7CQkJCQkJCQkJXAomIzQzOwljb25zdCBzaXplX3QgX19vYmpfc2l6ZSA9IHNpemVfbXVsKHNpemVvZihUWVBFKSwgQ09VTlQpOwlcCiYjNDM7CShUWVBFICopREVWTV9BTExPQyhERVYsIF9fb2JqX3NpemUsIEdGUCk7CQkJXAomIzQzO30pCiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogZGV2bV9rbWFsbG9jX29iaiAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSBzaW5nbGUgdHlwZWQgb2JqZWN0CiYjNDM7ICogQERFVjogRGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLgomIzQzOyAqIEBWQVJfT1JfVFlQRTogVmFyaWFibGUgb3IgdHlwZSB0byBhbGxvY2F0ZS4KJiM0MzsgKiBAR0ZQOiBPcHRpb25hbCBHRlAgZmxhZ3MgKGRlZmF1bHRzIHRvICVHRlBfS0VSTkVMKS4KJiM0MzsgKgomIzQzOyAqIERldmljZS1tYW5hZ2VkIGNvdW50ZXJwYXJ0IG9mIGttYWxsb2Nfb2JqKCk6IHRoZSBhbGxvY2F0aW9uIGlzIHNpemVkIGZyb20KJiM0MzsgKiBAVkFSX09SX1RZUEUgYW5kIHJldHVybmVkIGFzIGEgcG9pbnRlciB0byB0aGF0IHR5cGUsIG5vdCB2b2lkICouCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm5zOiBuZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB0byBhIEBWQVJfT1JfVFlQRSBvbiBzdWNjZXNzLCBvciBOVUxMIG9uCiYjNDM7ICogZmFpbHVyZS4KJiM0MzsgKi8KJiM0MzsjZGVmaW5lIGRldm1fa21hbGxvY19vYmooREVWLCBWQVJfT1JfVFlQRSwgLi4uKQkJCQlcCiYjNDM7CV9fZGV2bV9hbGxvY19vYmpzKGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksCVwKJiM0MzsJCQkgIHR5cGVvZihWQVJfT1JfVFlQRSksIDEpCiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogZGV2bV9rbWFsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGFuIGFycmF5IG9mIGEgdHlwZWQgb2JqZWN0CiYjNDM7ICogQERFVjogRGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLgomIzQzOyAqIEBWQVJfT1JfVFlQRTogVmFyaWFibGUgb3IgdHlwZSB0byBhbGxvY2F0ZSBhbiBhcnJheSBvZi4KJiM0MzsgKiBAQ09VTlQ6IEhvdyBtYW55IGVsZW1lbnRzIGluIHRoZSBhcnJheS4KJiM0MzsgKiBAR0ZQOiBPcHRpb25hbCBHRlAgZmxhZ3MgKGRlZmF1bHRzIHRvICVHRlBfS0VSTkVMKS4KJiM0MzsgKgomIzQzOyAqIFJldHVybnM6IG5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHRvIGFuIGFycmF5IG9mIEBWQVJfT1JfVFlQRSBvbiBzdWNjZXNzLCBvcgomIzQzOyAqIE5VTEwgb24gZmFpbHVyZSAoaW5jbHVkaW5nIHdoZW4gdGhlIHRvdGFsIHNpemUgb3ZlcmZsb3dzKS4KJiM0MzsgKi8KJiM0MzsjZGVmaW5lIGRldm1fa21hbGxvY19vYmpzKERFViwgVkFSX09SX1RZUEUsIENPVU5ULCAuLi4pIFwKJiM0MzsJX19kZXZtX2FsbG9jX29ianMoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXAomIzQzOwkJCSAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgQ09VTlQpCiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogX19kZXZtX2FsbG9jX2ZsZXggLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGEgdHJhaWxpbmctZmxleC1hcnJheSBvYmplY3QKJiM0MzsgKiBAREVWTV9BTExPQzogd2hpY2ggZGV2aWNlLW1hbmFnZWQgYWxsb2NhdG9yIHRvIHVzZS4KJiM0MzsgKiBAREVWOiBkZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uCiYjNDM7ICogQEdGUDogR0ZQIGZsYWdzIGZvciB0aGUgYWxsb2NhdGlvbi4KJiM0MzsgKiBAVFlQRTogdHlwZSBvZiBzdHJ1Y3R1cmUgdG8gYWxsb2NhdGUgc3BhY2UgZm9yLgomIzQzOyAqIEBGQU06IG5hbWUgb2YgdGhlIGZsZXhpYmxlIGFycmF5IG1lbWJlciBvZiBAVFlQRS4KJiM0MzsgKiBAQ09VTlQ6IGhvdyBtYW55IEBGQU0gZWxlbWVudHMgdG8gYWxsb2NhdGUgc3BhY2UgZm9yLgomIzQzOyAqCiYjNDM7ICogRGV2aWNlLW1hbmFnZWQgY291bnRlcnBhcnQgb2YgX19hbGxvY19mbGV4KCkuCiYjNDM7ICogQERFVk1fQUxMT0MgdGFrZXMgKEBERVYsIHNpemUsIGdmcCkuCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm5zOiBOZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB0byBAVFlQRSB3aXRoIEBDT1VOVC1tYW55IHRyYWlsaW5nIEBGQU0KJiM0MzsgKiBlbGVtZW50cywgb3IgTlVMTCBvbiBmYWlsdXJlLgomIzQzOyAqLwomIzQzOyNkZWZpbmUgX19kZXZtX2FsbG9jX2ZsZXgoREVWTV9BTExPQywgREVWLCBHRlAsIFRZUEUsIEZBTSwgQ09VTlQpCVwKJiM0MzsoewkJCQkJCQkJCVwKJiM0MzsJY29uc3Qgc2l6ZV90IF9fY291bnQgPSAoQ09VTlQpOwkJCQkJXAomIzQzOwljb25zdCBzaXplX3QgX19vYmpfc2l6ZSA9IHN0cnVjdF9zaXplX3QoVFlQRSwgRkFNLCBfX2NvdW50KTsJXAomIzQzOwlUWVBFICpfX29ial9wdHIgPSBERVZNX0FMTE9DKERFViwgX19vYmpfc2l6ZSwgR0ZQKTsJCVwKJiM0MzsJaWYgKF9fb2JqX3B0cikJCQkJCQkJXAomIzQzOwkJX19zZXRfZmxleF9jb3VudGVyKF9fb2JqX3B0ci0mZ3Q7RkFNLCBfX2NvdW50KTsJCVwKJiM0MzsJX19vYmpfcHRyOwkJCQkJCQlcCiYjNDM7fSkKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBkZXZtX2ttYWxsb2NfZmxleCAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSBmbGV4aWJsZS1hcnJheSBzdHJ1Y3R1cmUKJiM0MzsgKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uCiYjNDM7ICogQFZBUl9PUl9UWVBFOiBWYXJpYWJsZSBvciB0eXBlIHRvIGFsbG9jYXRlICh3aXRoIGl0cyBmbGV4aWJsZSBhcnJheSkuCiYjNDM7ICogQEZBTTogVGhlIG5hbWUgb2YgdGhlIGZsZXhpYmxlIGFycmF5IG1lbWJlciBvZiB0aGUgc3RydWN0dXJlLgomIzQzOyAqIEBDT1VOVDogSG93IG1hbnkgZmxleGlibGUgYXJyYXkgbWVtYmVyIGVsZW1lbnRzIHRvIGFsbG9jYXRlLgomIzQzOyAqIEBHRlA6IE9wdGlvbmFsIEdGUCBmbGFncyAoZGVmYXVsdHMgdG8gJUdGUF9LRVJORUwpLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuczogbmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgdG8gQFZBUl9PUl9UWVBFIG9uIHN1Y2Nlc3MsIG9yIE5VTEwgb24KJiM0MzsgKiBmYWlsdXJlLiBJZiBARkFNIGhhcyBiZWVuIGFubm90YXRlZCB3aXRoIF9fY291bnRlZF9ieSgpLCBpdHMgY291bnRlciBpcyBzZXQKJiM0MzsgKiB0byBAQ09VTlQuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBkZXZtX2ttYWxsb2NfZmxleChERVYsIFZBUl9PUl9UWVBFLCBGQU0sIENPVU5ULCAuLi4pIFwKJiM0MzsJX19kZXZtX2FsbG9jX2ZsZXgoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXAomIzQzOwkJCSAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgRkFNLCBDT1VOVCkKJiM0MzsKJiM0MzsvKiBBbGwgZGV2bV9remFsbG9jIGFsaWFzZXMgZm9yIGRldm1fa21hbGxvY18ob2JqfG9ianN8ZmxleCkuICovCiYjNDM7I2RlZmluZSBkZXZtX2t6YWxsb2Nfb2JqKERFViwgUCwgLi4uKSBcCiYjNDM7CV9fZGV2bV9hbGxvY19vYmpzKGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgMSkKJiM0MzsjZGVmaW5lIGRldm1fa3phbGxvY19vYmpzKERFViwgUCwgQ09VTlQsIC4uLikgXAomIzQzOwlfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcCiYjNDM7CQkJICB0eXBlb2YoUCksIENPVU5UKQomIzQzOyNkZWZpbmUgZGV2bV9remFsbG9jX2ZsZXgoREVWLCBQLCBGQU0sIENPVU5ULCAuLi4pIFwKJiM0MzsJX19kZXZtX2FsbG9jX2ZsZXgoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXAomIzQzOwkJCSAgdHlwZW9mKFApLCBGQU0sIENPVU5UKQomIzQzOwogc3RhdGljIGlubGluZSBfX3JlYWxsb2Nfc2l6ZSgzLCA0KSB2b2lkICogX19tdXN0X2NoZWNrCiBkZXZtX2tyZWFsbG9jX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcCwgc2l6ZV90IG5ld19uLCBzaXplX3QgbmV3X3NpemUsIGdmcF90IGZsYWdzKQogewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9nZnAuaCBiL2luY2x1ZGUvbGludXgvZ2ZwLmgKaW5kZXggODcyYmM1M2YzMmVjOC4uYjYyZTJmZDUzY2I0MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9nZnAuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2dmcC5oCkBAIC0xMywxMCAmIzQzOzEzLDYgQEAKIHN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKIHN0cnVjdCBtZW1wb2xpY3k7CiAKLS8qIEhlbHBlciBtYWNybyB0byBhdm9pZCBnZnAgZmxhZ3MgaWYgdGhleSBhcmUgdGhlIGRlZmF1bHQgb25lICovCi0jZGVmaW5lIF9fZGVmYXVsdF9nZnAoYSxiLC4uLikgYgotI2RlZmluZSBkZWZhdWx0X2dmcCguLi4pIF9fZGVmYXVsdF9nZnAoLCMjX19WQV9BUkdTX18sR0ZQX0tFUk5FTCkKLQogc3RhdGljIGlubGluZSBib29sIGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGNvbnN0IGdmcF90IGdmcF9mbGFncykKIHsKIAlyZXR1cm4gISEoZ2ZwX2ZsYWdzICZhbXA7IF9fR0ZQX0RJUkVDVF9SRUNMQUlNKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmggYi9pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oCmluZGV4IDE5MDE5MTQxMTAwOWYuLmIxY2QxNDNmM2M0MmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaApAQCAtMzgyLDQgJiM0MzszODIsOCBAQCBlbnVtIHsKIAkJCSBfX0dGUF9OT01FTUFMTE9DIHwgX19HRlBfTk9XQVJOKSAmYW1wOyB+X19HRlBfUkVDTEFJTSkKICNkZWZpbmUgR0ZQX1RSQU5TSFVHRQkoR0ZQX1RSQU5TSFVHRV9MSUdIVCB8IF9fR0ZQX0RJUkVDVF9SRUNMQUlNKQogCiYjNDM7LyogSGVscGVyIG1hY3JvIHRvIGF2b2lkIGdmcCBmbGFncyBpZiB0aGV5IGFyZSB0aGUgZGVmYXVsdCBvbmUgKi8KJiM0MzsjZGVmaW5lIF9fZGVmYXVsdF9nZnAoYSxiLC4uLikgYgomIzQzOyNkZWZpbmUgZGVmYXVsdF9nZnAoLi4uKSBfX2RlZmF1bHRfZ2ZwKCwjI19fVkFfQVJHU19fLEdGUF9LRVJORUwpCiYjNDM7CiAjZW5kaWYgLyogX19MSU5VWF9HRlBfVFlQRVNfSCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzU2CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUaGlzIFBhdGNoOiBNZW1vcnkgQWxsb2NhdGlvbiAmYW1wOyBHRlAgQ2hhbmdlcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0JiMzOTtzIGZvY3VzZWQgb24gbWVtb3J5IGFsbG9jYXRpb24gd2l0aCBhIHBvdGVudGlhbCBtaW5vciBjaGFuZ2UgdG8gdGhlIEdGUCBmbGFncy4gSSBzZWUgaXQgdG91Y2hlcyBgZGV2cmVzLmhgLCBgZ2ZwLmhgLCBhbmQgYGdmcF90eXBlcy5oYC4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyBzb21lIHJlc3RydWN0dXJpbmcgYW5kIG5ldyB1dGlsaXRpZXMuCgpTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgaXQgaW50cm9kdWNlcyBzZXZlcmFsIG5ldyBtYWNyb3Mgd2l0aGluIGBkZXZyZXMuaGA6IGBfX2Rldm1fYWxsb2Nfb2Jqc2AsIGBkZXZtX2ttYWxsb2Nfb2JqYCwgYGRldm1fa21hbGxvY19vYmpzYCwgYF9fZGV2bV9hbGxvY19mbGV4YCwgYGRldm1fa21hbGxvY19mbGV4YCwgYGRldm1fa3phbGxvY19vYmpgLCBgZGV2bV9remFsbG9jX29ianNgLCBhbmQgYGRldm1fa3phbGxvY19mbGV4YC4gVGhlc2UgbmFtZXMgc3Ryb25nbHkgaW1wbHkgbWFuYWdlZCBtZW1vcnkgYWxsb2NhdGlvbiB3aXRoaW4gdGhlIGRldmljZSByZXNvdXJjZSBmcmFtZXdvcmsuIEkgYXNzdW1lIHRoZXNlIGFyZSBjb252ZW5pZW5jZSBtYWNyb3MgZm9yIGFsbG9jYXRpbmcgdmFyaW91cyBkYXRhIHN0cnVjdHVyZXMgd2l0aCBgZGV2cmVzYCBtYW5hZ2VtZW50IGZvciBhdXRvbWF0aWMgZnJlZWluZy4gU2VlbXMgZWZmaWNpZW50IHRvIHJlZHVjZSBib2lsZXIgcGxhdGUuCgpUaGUgc2hpZnQgb2YgYF9fZGVmYXVsdF9nZnBgIGFuZCBgZGVmYXVsdF9nZnBgIGZyb20gYGdmcC5oYCB0byBgZ2ZwX3R5cGVzLmhgIGlzIGxpa2VseSBhIG1pbm9yIHJlZmFjdG9yaW5nLiBUaGlzIGlzIGZpbmUsIGJ1dCBpdCBzZWVtcyBpbnRlcmVzdGluZyBmb3IgdGhlbSB0byBpbmNsdWRlIGRlZmF1bHQgR0ZQIGZsYWdzIGluIGBnZnBfdHlwZXMuaGAuIEkmIzM5O2QgaGF2ZSB0byBsb29rIGF0IHRoZSBvdGhlciBjaGFuZ2VzIHRvIGJlIGNlcnRhaW4sIGJ1dCB0aGlzIG1vdmUgbWlnaHQgYmUgcHJlcGFyYXRvcnkuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHNjb3BlIG9mIHRoaXMgd29yay4gSSBuZWVkIHRvIGtub3cgaWYgbmV3IGNhbGxlcnMgYXJlIGludHJvZHVjZWQsIG9yIGlmIHRoaXMgaXMganVzdCByZWZhY3RvcmluZy4gSSYjMzk7bGwgcmVhY2ggZm9yIGBncmVwcGVyYCBhbmQgc2VlIGlmIGFueSBjb2RlIGlzICphY3R1YWxseSogY2FsbGluZyB0aGVzZSBuZXcgbWFjcm9zLiBUaGF0IHdpbGwgdGVsbCBtZSBpZiB0aGlzIGlzIGEgcHVyZWx5IGludGVybmFsIGNoYW5nZSBvciBpZiBpdCBoYXMgZXh0ZXJuYWwgaW1wbGljYXRpb25zLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2bV9rW216XWFsbG9jXyhvYmp8ZmxleCkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg9NjE9c3RhdGljIGlubGluZSB2b2lkICpkZXZtX2tjYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxuLS1cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTg2LS8qKlxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6ODc6ICogZGV2bV9rbWFsbG9jX29iaiAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSBzaW5nbGUgdHlwZWQgb2JqZWN0XG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC04OC0gKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtOTctICovXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDo5ODojZGVmaW5lIGRldm1fa21hbGxvY19vYmooREVWLCBWQVJfT1JfVFlQRSwgLi4uKVx0XHRcdFx0XFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTk5LVx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSxcdFxcXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTAyLS8qKlxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTAzOiAqIGRldm1fa21hbGxvY19vYmpzIC0gRGV2aWNlLW1hbmFnZWQgYWxsb2NhdGlvbiBvZiBhbiBhcnJheSBvZiBhIHR5cGVkIG9iamVjdFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTA0LSAqIEBERVY6IERldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTEtICovXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxMTI6I2RlZmluZSBkZXZtX2ttYWxsb2Nfb2JqcyhERVYsIFZBUl9PUl9UWVBFLCBDT1VOVCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTEzLVx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNDEtLyoqXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNDI6ICogZGV2bV9rbWFsbG9jX2ZsZXggLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGEgZmxleGlibGUtYXJyYXkgc3RydWN0dXJlXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNDMtICogQERFVjogRGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLlxuLS1cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1Mi0gKi9cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE1MzojZGVmaW5lIGRldm1fa21hbGxvY19mbGV4KERFViwgVkFSX09SX1RZUEUsIEZBTSwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1NC1cdF9fZGV2bV9hbGxvY19mbGV4KGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTU3LS8qIEFsbCBkZXZtX2t6YWxsb2MgYWxpYXNlcyBmb3IgZGV2bV9rbWFsbG9jXyhvYmp8b2Jqc3xmbGV4KS4gKi9cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE1ODojZGVmaW5lIGRldm1fa3phbGxvY19vYmooREVWLCBQLCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNTktXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIDEpXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNjA6I2RlZmluZSBkZXZtX2t6YWxsb2Nfb2JqcyhERVYsIFAsIENPVU5ULCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjEtXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTYyLVx0XHRcdCAgdHlwZW9mKFApLCBDT1VOVClcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE2MzojZGVmaW5lIGRldm1fa3phbGxvY19mbGV4KERFViwgUCwgRkFNLCBDT1VOVCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTY0LVx0X19kZXZtX2FsbG9jX2ZsZXgoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzgzCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiB0aGUgd2VlZHMgb2Yga2VybmVsIG1lbW9yeSBtYW5hZ2VtZW50OgoKKipNZW1vcnkgQWxsb2NhdGlvbiBEZWVwIERpdmUgLSBXaGVyZSBBcmUgTXkgQ2FsbGVycz8qKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW50byB0aGUgbWVtb3J5IGFsbG9jYXRpb24gbGFuZHNjYXBlIHdpdGhpbiB0aGUgZGV2aWNlIGRyaXZlciBjb250ZXh0LCBzcGVjaWZpY2FsbHkgdGhlIGBkZXZtX2ttYWxsb2NgIGFuZCBgZGV2bV9remFsbG9jYCB2YXJpYW50cy4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uLCBiYXNlZCBvbiBwcmV2aW91cyBjb2RlIHJldmlld3MgYW5kIGV4cGVyaWVuY2UsIGlzIHRoYXQgdGhlcmUgc2hvdWxkbiYjMzk7dCBiZSBhbnkgZGlyZWN0IGNhbGxlcnMgb2YgdGhlIG9iamVjdCBhbmQgZmxleCBmb3JtczogYGRldm1fa21hbGxvY19vYmpgLCBgZGV2bV9rbWFsbG9jX29ianNgLCBgZGV2bV9rbWFsbG9jX2ZsZXhgLCBgZGV2bV9remFsbG9jX29iamAsIGBkZXZtX2t6YWxsb2Nfb2Jqc2AsIGFuZCBgZGV2bV9remFsbG9jX2ZsZXhgIGluIHRoZSBjb2RlIGJhc2UgdGhhdCBhcmUgY3VycmVudGx5IGNoZWNrZWQuIFRoZXNlIGFyZSBzcGVjaWFsaXplZCBhbGxvY2F0aW9uIGZ1bmN0aW9ucyB0aGF0IGFyZSB1c3VhbGx5IHVzZWQgaW50ZXJuYWxseSBmb3Igc3BlY2lmaWMgcHVycG9zZXMgd2l0aGluIHRoZSBkcml2ZXIgZnJhbWV3b3JrLgoKQnV0IHdhaXQgYSBtaW51dGUsIEkgc2hvdWxkIGJlIHRob3JvdWdoLiBXaGF0IGFib3V0IHRoZSB1bmRlcmx5aW5nIGFsbG9jYXRpb24gZnVuY3Rpb25zIHRoZXkgYXJlIGJhc2VkIHVwb24/IExldCYjMzk7cyBub3QgbGVhdmUgYW55IHN0b25lIHVudHVybmVkIGhlcmUuIEkgYWxzbyBuZWVkIHRvIGNoZWNrIHRoZSBvY2N1cnJlbmNlcyBvZiBhbnl0aGluZyB0aGF0IG1pZ2h0IGJlIHVzaW5nIGBfX2Rldm1fYWxsb2NfYCAtIGFzIHRoYXQgY2FuIGdpdmUgbWUgY2x1ZXMgb24gaG93IHRob3NlIG9iamVjdCwgZmxleCwgYW5kIG9iamVjdCBmb3JtcyBhcmUgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2Rldm1fYWxsb2NfJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmFzZS9kZXZyZXMuYz0xMzA2PXN0YXRpYyB2b2lkIGRldm1fcGVyY3B1X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpwZGF0YSlcbi0tXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtMTMxNC0vKipcbmRyaXZlcnMvYmFzZS9kZXZyZXMuYzoxMzE1OiAqIF9fZGV2bV9hbGxvY19wZXJjcHUgLSBSZXNvdXJjZS1tYW5hZ2VkIGFsbG9jX3BlcmNwdVxuZHJpdmVycy9iYXNlL2RldnJlcy5jLTEzMTYtICogQGRldjogRGV2aWNlIHRvIGFsbG9jYXRlIHBlci1jcHUgbWVtb3J5IGZvclxuLS1cbmRyaXZlcnMvYmFzZS9kZXZyZXMuYy0xMzI1LSAqL1xuZHJpdmVycy9iYXNlL2RldnJlcy5jOjEzMjY6dm9pZCBfX3BlcmNwdSAqX19kZXZtX2FsbG9jX3BlcmNwdShzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLFxuZHJpdmVycy9iYXNlL2RldnJlcy5jLTEzMjctXHRcdHNpemVfdCBhbGlnbilcbi0tXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtMTM0Ny19XG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmM6MTM0ODpFWFBPUlRfU1lNQk9MX0dQTChfX2Rldm1fYWxsb2NfcGVyY3B1KTtcbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaD02MT1zdGF0aWMgaW5saW5lIHZvaWQgKmRldm1fa2NhbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtNjYtLyoqXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDo2NzogKiBfX2Rldm1fYWxsb2Nfb2JqcyAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2Ygb2JqZWN0cyBvZiBhIGdpdmVuIHR5cGVcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTY4LSAqIEBERVZNX0FMTE9DOiB3aGljaCBkZXZpY2UtbWFuYWdlZCBzaXplLWJhc2VkIGFsbG9jYXRvciB0byB1c2UuXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtNzktICovXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDo4MDojZGVmaW5lIF9fZGV2bV9hbGxvY19vYmpzKERFVk1fQUxMT0MsIERFViwgR0ZQLCBUWVBFLCBDT1VOVClcdFx0XFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTgxLSh7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC05OC0jZGVmaW5lIGRldm1fa21hbGxvY19vYmooREVWLCBWQVJfT1JfVFlQRSwgLi4uKVx0XHRcdFx0XFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjk5Olx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSxcdFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMDAtXHRcdFx0ICB0eXBlb2YoVkFSX09SX1RZUEUpLCAxKVxuLS1cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTExMi0jZGVmaW5lIGRldm1fa21hbGxvY19vYmpzKERFViwgVkFSX09SX1RZUEUsIENPVU5ULCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxMTM6XHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTE0LVx0XHRcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgQ09VTlQpXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTE2LS8qKlxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTE3OiAqIF9fZGV2bV9hbGxvY19mbGV4IC0gRGV2aWNlLW1hbmFnZWQgYWxsb2NhdGlvbiBvZiBhIHRyYWlsaW5nLWZsZXgtYXJyYXkgb2JqZWN0XG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTgtICogQERFVk1fQUxMT0M6IHdoaWNoIGRldmljZS1tYW5hZ2VkIGFsbG9jYXRvciB0byB1c2UuXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTMwLSAqL1xuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTMxOiNkZWZpbmUgX19kZXZtX2FsbG9jX2ZsZXgoREVWTV9BTExPQywgREVWLCBHRlAsIFRZUEUsIEZBTSwgQ09VTlQpXHRcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTMyLSh7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNTMtI2RlZmluZSBkZXZtX2ttYWxsb2NfZmxleChERVYsIFZBUl9PUl9UWVBFLCBGQU0sIENPVU5ULCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNTQ6XHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTU1LVx0XHRcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgRkFNLCBDT1VOVClcbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNTgtI2RlZmluZSBkZXZtX2t6YWxsb2Nfb2JqKERFViwgUCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTU5Olx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTYwLSNkZWZpbmUgZGV2bV9remFsbG9jX29ianMoREVWLCBQLCBDT1VOVCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTYxOlx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE2Mi1cdFx0XHQgIHR5cGVvZihQKSwgQ09VTlQpXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjMtI2RlZmluZSBkZXZtX2t6YWxsb2NfZmxleChERVYsIFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE2NDpcdF9fZGV2bV9hbGxvY19mbGV4KGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjUtXHRcdFx0ICB0eXBlb2YoUCksIEZBTSwgQ09VTlQpXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg9MTk2PWRldm1fa2FzcHJpbnRmKHN0cnVjdCBkZXZpY2UgKmRldiwgZ2ZwX3QgZ2ZwLCBjb25zdCBjaGFyICpmbXQsIC4uLik7XG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMjA5LSNkZWZpbmUgZGV2bV9hbGxvY19wZXJjcHUoZGV2LCB0eXBlKSAgICAgIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoyMTA6XHQoKHR5cGVvZih0eXBlKSBfX3BlcmNwdSAqKV9fZGV2bV9hbGxvY19wZXJjcHUoKGRldiksIHNpemVvZih0eXBlKSwgX19hbGlnbm9mX18odHlwZSkpKVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMjExLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MjEyOnZvaWQgX19wZXJjcHUgKl9fZGV2bV9hbGxvY19wZXJjcHUoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWduKTtcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTIxMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTkzCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgbW92aW5nIGBkZWZhdWx0X2dmcGAgZnJvbSBgaW5jbHVkZS9saW51eC9nZnAuaGAgdG8gYGluY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmhgIGNhdXNlZCBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRvdWJsZS1jaGVjayBhbGwgdGhlIHBsYWNlcyB3aGVyZSBgZGVmYXVsdF9nZnBgIGlzIGFjdHVhbGx5ICp1c2VkKi4gVGltZSB0byBmaXJlIHVwIHRob3NlIHRvb2xzIGFuZCBzZWUgd2hlcmUgdGhlIGNhbGxzIGFyZSBhbmQgaWYgYW55dGhpbmcmIzM5O3MgYnJva2VuLiBUaGlzIGlzIGEgcG90ZW50aWFsbHkgdHJpY2t5IGNoYW5nZSwgc28gYmV0dGVyIHRvIGJlIHRob3JvdWdoLiBJJiMzOTtsbCBmb2N1cyBzcGVjaWZpY2FsbHkgb24gdGhlIGNhbGxlcnMgb2YgYGRlZmF1bHRfZ2ZwYCB0byBlbnN1cmUgbm90aGluZyYjMzk7cyBiZWVuIG1pc3NlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZhdWx0X2dmcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaD02MT1zdGF0aWMgaW5saW5lIHZvaWQgKmRldm1fa2NhbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtOTgtI2RlZmluZSBkZXZtX2ttYWxsb2Nfb2JqKERFViwgVkFSX09SX1RZUEUsIC4uLilcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDo5OTpcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksXHRcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTAwLVx0XHRcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgMSlcbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTItI2RlZmluZSBkZXZtX2ttYWxsb2Nfb2JqcyhERVYsIFZBUl9PUl9UWVBFLCBDT1VOVCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTEzOlx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTExNC1cdFx0XHQgIHR5cGVvZihWQVJfT1JfVFlQRSksIENPVU5UKVxuLS1cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1My0jZGVmaW5lIGRldm1fa21hbGxvY19mbGV4KERFViwgVkFSX09SX1RZUEUsIEZBTSwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE1NDpcdF9fZGV2bV9hbGxvY19mbGV4KGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNTUtXHRcdFx0ICB0eXBlb2YoVkFSX09SX1RZUEUpLCBGQU0sIENPVU5UKVxuLS1cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1OC0jZGVmaW5lIGRldm1fa3phbGxvY19vYmooREVWLCBQLCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNTk6XHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIDEpXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjAtI2RlZmluZSBkZXZtX2t6YWxsb2Nfb2JqcyhERVYsIFAsIENPVU5ULCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNjE6XHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTYyLVx0XHRcdCAgdHlwZW9mKFApLCBDT1VOVClcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE2My0jZGVmaW5lIGRldm1fa3phbGxvY19mbGV4KERFViwgUCwgRkFNLCBDT1VOVCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTY0Olx0X19kZXZtX2FsbG9jX2ZsZXgoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE2NS1cdFx0XHQgIHR5cGVvZihQKSwgRkFNLCBDT1VOVClcbi0tXG5pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oPTI2PWVudW0ge1xuLS1cbmluY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmgtMzg1LS8qIEhlbHBlciBtYWNybyB0byBhdm9pZCBnZnAgZmxhZ3MgaWYgdGhleSBhcmUgdGhlIGRlZmF1bHQgb25lICovXG5pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oOjM4NjojZGVmaW5lIF9fZGVmYXVsdF9nZnAoYSxiLC4uLikgYlxuaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaDozODc6I2RlZmluZSBkZWZhdWx0X2dmcCguLi4pIF9fZGVmYXVsdF9nZnAoLCMjX19WQV9BUkdTX18sR0ZQX0tFUk5FTClcbmluY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmgtMzg4LVxuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oPTEwNzM9dm9pZCAqa21hbGxvY19ub2xvY2soc2l6ZV90IHNpemUsIGdmcF90IGdmcF9mbGFncywgaW50IG5vZGUpO1xuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oLTExMjQtI2RlZmluZSBrbWFsbG9jX29iaihWQVJfT1JfVFlQRSwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTEyNTpcdF9fYWxsb2Nfb2JqcyhrbWFsbG9jLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihWQVJfT1JfVFlQRSksIDEpXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTI2LVxuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oLTExMzYtI2RlZmluZSBrbWFsbG9jX29ianMoVkFSX09SX1RZUEUsIENPVU5ULCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDoxMTM3Olx0X19hbGxvY19vYmpzKGttYWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFZBUl9PUl9UWVBFKSwgQ09VTlQpXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTM4LVxuLS1cbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNTEtI2RlZmluZSBrbWFsbG9jX2ZsZXgoVkFSX09SX1RZUEUsIEZBTSwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNTI6XHRfX2FsbG9jX2ZsZXgoa21hbGxvYywgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoVkFSX09SX1RZUEUpLCBGQU0sIENPVU5UKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE1My1cbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTU1LSNkZWZpbmUga3phbGxvY19vYmooUCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTE1NjpcdF9fYWxsb2Nfb2JqcyhremFsbG9jLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgMSlcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNTctI2RlZmluZSBremFsbG9jX29ianMoUCwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNTg6XHRfX2FsbG9jX29ianMoa3phbGxvYywgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIENPVU5UKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE1OS0jZGVmaW5lIGt6YWxsb2NfZmxleChQLCBGQU0sIENPVU5ULCAuLi4pXHRcdFxcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDoxMTYwOlx0X19hbGxvY19mbGV4KGt6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCBGQU0sIENPVU5UKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE2MS1cbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTYzLSNkZWZpbmUga3ZtYWxsb2Nfb2JqKFAsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNjQ6XHRfX2FsbG9jX29ianMoa3ZtYWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE2NS0jZGVmaW5lIGt2bWFsbG9jX29ianMoUCwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNjY6XHRfX2FsbG9jX29ianMoa3ZtYWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCBDT1VOVClcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNjctI2RlZmluZSBrdm1hbGxvY19mbGV4KFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNjg6XHRfX2FsbG9jX2ZsZXgoa3ZtYWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCBGQU0sIENPVU5UKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE2OS1cbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTcxLSNkZWZpbmUga3Z6YWxsb2Nfb2JqKFAsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNzI6XHRfX2FsbG9jX29ianMoa3Z6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE3My0jZGVmaW5lIGt2emFsbG9jX29ianMoUCwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNzQ6XHRfX2FsbG9jX29ianMoa3Z6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCBDT1VOVClcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNzUtI2RlZmluZSBrdnphbGxvY19mbGV4KFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNzY6XHRfX2FsbG9jX2ZsZXgoa3Z6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCBGQU0sIENPVU5UKVxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE3Ny1cbi0tXG50b29scy9pbmNsdWRlL2xpbnV4L2dmcC5oLTgtLyogSGVscGVyIG1hY3JvIHRvIGF2b2lkIGdmcCBmbGFncyBpZiB0aGV5IGFyZSB0aGUgZGVmYXVsdCBvbmUgKi9cbnRvb2xzL2luY2x1ZGUvbGludXgvZ2ZwLmg6OTojZGVmaW5lIF9fZGVmYXVsdF9nZnAoYSwuLi4pIGFcbnRvb2xzL2luY2x1ZGUvbGludXgvZ2ZwLmg6MTA6I2RlZmluZSBkZWZhdWx0X2dmcCguLi4pIF9fZGVmYXVsdF9nZnAoX19WQV9BUkdTX18gX19WQV9PUFRfXygsKSBHRlBfS0VSTkVMKVxudG9vbHMvaW5jbHVkZS9saW51eC9nZnAuaC0xMS1cbi0tXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaD0yMDA9c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQga21lbV9jYWNoZV9zaGVhZl9zaXplKHN0cnVjdCBzbGFiX3NoZWFmICpzaGVhZilcbi0tXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaC0yMTEtI2RlZmluZSBremFsbG9jX29iaihQLCAuLi4pIFxcXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaDoyMTI6XHRfX2FsbG9jX29ianMoa3phbGxvYywgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIDEpXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaC0yMTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0MDQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBkZWZhdWx0X2dmcGAgUmVsb2NhdGlvbioqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBkZWZhdWx0X2dmcGAgaGFzIHBvcHBlZCB1cCBpbiBgaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmhgIG5vdywgd2hlcmUgaXQgd2FzbiYjMzk7dCBiZWZvcmUuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIFByZXZpb3VzbHksIGl0IHdhcyBvbmx5IGJlaW5nIHVzZWQgd2l0aGluIGBpbmNsdWRlL2xpbnV4L3NsYWIuaGAuIFRoZSBjb3JlIHRlYW0gbXVzdCBiZSBtYWtpbmcgc29tZSBhZGp1c3RtZW50cyBoZXJlLiBUaGUgY29tbWl0IG1lc3NhZ2UgaW5kaWNhdGVzIGEgbW92ZSBmcm9tIGBpbmNsdWRlL2xpbnV4L2dmcC5oYCB0byBgaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaGAsIHdoaWNoIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGEgY2hhbmdlIGluIGRlcGVuZGVuY2llcy4gVGhlIHJhdGlvbmFsZSBpcyB0aGF0IGBkZXZyZXMuaGAgZWl0aGVyIGluY2x1ZGVzIGBnZnBfdHlwZXMuaGAgZGlyZWN0bHksIG9yIHNpbXBseSBuZWVkcyBgZGVmYXVsdF9nZnBgIHdpdGhvdXQgcHVsbGluZyBpbiB0aGUgZW50aXJlIGBnZnAuaGAgaGVhZGVyLiBUaGlzIGlzIHRoZSBtb3JlIGxpa2VseSBzY2VuYXJpbywgc28gSSBzaG91bGQgc2VlIGlmIGBkZXZyZXMuaGAgaGFzIGEgbmV3IGluY2x1c2lvbi4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGluY2x1ZGUgZGlyZWN0aXZlcyB3aXRoaW4gYGRldnJlcy5oYCB0byB2ZXJpZnkgdGhpcyB0aGVvcnkuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYW55IG5ldyBpbmNsdWRlcywgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoaXMga2VlcHMgdXAgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZSBrZXJuZWwuIFRoaXMgaXMgcHJvYmFibHkgdG8gcmVkdWNlIG92ZXJhbGwgZGVwZW5kZW5jeSBzaXplIGFuZCBpbXByb3ZlIGJ1aWxkIHRpbWVzLCBhIGdvb2QgbW92ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4gICAyOlx0I2lmbmRlZiBfREVWSUNFX0RFVlJFU19IX1xuICAgMzpcdCNkZWZpbmUgX0RFVklDRV9ERVZSRVNfSF9cbiAgIDQ6XHRcbiAgIDU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICAgNjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2dmcF90eXBlcy5oXHUwMDNlXG4gICA3Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbnVtYS5oXHUwMDNlXG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvb3ZlcmZsb3cuaFx1MDAzZVxuICAgOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0ZGFyZy5oXHUwMDNlXG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuICAxMTpcdCNpbmNsdWRlIFx1MDAzY2FzbS9idWcuaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2FzbS9wZXJjcHUuaFx1MDAzZVxuICAxMzpcdFxuICAxNDpcdHN0cnVjdCBkZXZpY2U7XG4gIDE1Olx0c3RydWN0IGRldmljZV9ub2RlO1xuICAxNjpcdHN0cnVjdCByZXNvdXJjZTtcbiAgMTc6XHRcbiAgMTg6XHQvKiBkZXZpY2UgcmVzb3VyY2UgbWFuYWdlbWVudCAqL1xuICAxOTpcdHR5cGVkZWYgdm9pZCAoKmRyX3JlbGVhc2VfdCkoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpyZXMpO1xuICAyMDpcdHR5cGVkZWYgaW50ICgqZHJfbWF0Y2hfdCkoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpyZXMsIHZvaWQgKm1hdGNoX2RhdGEpO1xuICAyMTpcdFxuICAyMjpcdHZvaWQgKiBfX21hbGxvY1xuICAyMzpcdF9fZGV2cmVzX2FsbG9jX25vZGUoZHJfcmVsZWFzZV90IHJlbGVhc2UsIHNpemVfdCBzaXplLCBnZnBfdCBnZnAsIGludCBuaWQsIGNvbnN0IGNoYXIgKm5hbWUpO1xuICAyNDpcdCNkZWZpbmUgZGV2cmVzX2FsbG9jKHJlbGVhc2UsIHNpemUsIGdmcCkgXFxcbiAgMjU6XHRcdF9fZGV2cmVzX2FsbG9jX25vZGUocmVsZWFzZSwgc2l6ZSwgZ2ZwLCBOVU1BX05PX05PREUsICNyZWxlYXNlKVxuICAyNjpcdCNkZWZpbmUgZGV2cmVzX2FsbG9jX25vZGUocmVsZWFzZSwgc2l6ZSwgZ2ZwLCBuaWQpIFxcXG4gIDI3Olx0XHRfX2RldnJlc19hbGxvY19ub2RlKHJlbGVhc2UsIHNpemUsIGdmcCwgbmlkLCAjcmVsZWFzZSlcbiAgMjg6XHRcbiAgMjk6XHR2b2lkIGRldnJlc19mcmVlKHZvaWQgKnJlcyk7XG4gIDMwOlx0dm9pZCBkZXZyZXNfYWRkKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzKTtcbiAgMzE6XHR2b2lkICpkZXZyZXNfZmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIGRyX3JlbGVhc2VfdCByZWxlYXNlLCBkcl9tYXRjaF90IG1hdGNoLCB2b2lkICptYXRjaF9kYXRhKTtcbiAgMzI6XHR2b2lkICpkZXZyZXNfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqbmV3X3JlcywgZHJfbWF0Y2hfdCBtYXRjaCwgdm9pZCAqbWF0Y2hfZGF0YSk7XG4gIDMzOlx0dm9pZCAqZGV2cmVzX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGRyX3JlbGVhc2VfdCByZWxlYXNlLCBkcl9tYXRjaF90IG1hdGNoLCB2b2lkICptYXRjaF9kYXRhKTtcbiAgMzQ6XHRpbnQgZGV2cmVzX2Rlc3Ryb3koc3RydWN0IGRldmljZSAqZGV2LCBkcl9yZWxlYXNlX3QgcmVsZWFzZSwgZHJfbWF0Y2hfdCBtYXRjaCwgdm9pZCAqbWF0Y2hfZGF0YSk7XG4gIDM1Olx0aW50IGRldnJlc19yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldiwgZHJfcmVsZWFzZV90IHJlbGVhc2UsIGRyX21hdGNoX3QgbWF0Y2gsIHZvaWQgKm1hdGNoX2RhdGEpO1xuICAzNjpcdFxuICAzNzpcdC8qIGRldnJlcyBncm91cCAqL1xuICAzODpcdHZvaWQgKiBfX211c3RfY2hlY2sgZGV2cmVzX29wZW5fZ3JvdXAoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICppZCwgZ2ZwX3QgZ2ZwKTtcbiAgMzk6XHR2b2lkIGRldnJlc19jbG9zZV9ncm91cChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmlkKTtcbiAgNDA6XHR2b2lkIGRldnJlc19yZW1vdmVfZ3JvdXAoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICppZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAwOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTk0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ2hlY2tpbmcgTWVtb3J5IEFsbG9jYXRpb24gRmxhZ3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGhlYWRlciBmaWxlcywgc3BlY2lmaWNhbGx5IGBkZXZyZXMuaGAuIEFuZCBJIHNlZSB0aGF0IGl0IHB1bGxzIGluIGAmbHQ7bGludXgvZ2ZwX3R5cGVzLmgmZ3Q7YC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYnV0IG5vdCBlbnRpcmVseSBzdXJwcmlzaW5nLCBnaXZlbiB0aGF0IGRldmljZSByZXNvdXJjZXMgb2Z0ZW4gbmVlZCB0byBhbGxvY2F0ZSBtZW1vcnkuIE5vdywgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhIGdvb2QgZ3Jhc3Agb24gdGhpcyBtZW1vcnkgc2l0dWF0aW9uLCBJJiMzOTtsbCBnbyBvbmUgc3RlcCBmdXJ0aGVyIGFuZCBkb3VibGUtY2hlY2sgaG93IGAmbHQ7bGludXgvZ2ZwLmgmZ3Q7YCBoYW5kbGVzIHRoaW5ncy4gSSBrbm93IGl0ICpzaG91bGQqIGFsc28gaW5jbHVkZSBgJmx0O2xpbnV4L2dmcF90eXBlcy5oJmd0O2AsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGFsbG9jYXRpb24gZmxhZ3MgYW5kIHRoZWlyIGNvbW1vbiB1c2UgdGhyb3VnaG91dCB0aGUga2VybmVsLiBJJiMzOTttIGp1c3QgdmVyaWZ5aW5nIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc25lYWt5IG9taXNzaW9ucyBvciB3ZWlyZCBpbmNsdWRlIHBhdGggaXNzdWVzLiBHb3R0YSBtYWtlIHN1cmUgZXZlcnl0aGluZyYjMzk7cyBjb25zaXN0ZW50IGFuZCB0aGF0IHRoZSBkZWZpbml0aW9ucyBhcmUgYWNjZXNzaWJsZSB3aGVyZSB0aGV5IG5lZWQgdG8gYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAwOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9nZnAuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4gICAyOlx0I2lmbmRlZiBfX0xJTlVYX0dGUF9IXG4gICAzOlx0I2RlZmluZSBfX0xJTlVYX0dGUF9IXG4gICA0Olx0XG4gICA1Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZ2ZwX3R5cGVzLmhcdTAwM2VcbiAgIDY6XHRcbiAgIDc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tbXpvbmUuaFx1MDAzZVxuICAgODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3RvcG9sb2d5LmhcdTAwM2VcbiAgIDk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9hbGxvY190YWcuaFx1MDAzZVxuICAxMDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2NsZWFudXAuaFx1MDAzZVxuICAxMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3NjaGVkLmhcdTAwM2VcbiAgMTI6XHRcbiAgMTM6XHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7XG4gIDE0Olx0c3RydWN0IG1lbXBvbGljeTtcbiAgMTU6XHRcbiAgMTY6XHRzdGF0aWMgaW5saW5lIGJvb2wgZ2ZwZmxhZ3NfYWxsb3dfYmxvY2tpbmcoY29uc3QgZ2ZwX3QgZ2ZwX2ZsYWdzKVxuICAxNzpcdHtcbiAgMTg6XHRcdHJldHVybiAhIShnZnBfZmxhZ3MgXHUwMDI2IF9fR0ZQX0RJUkVDVF9SRUNMQUlNKTtcbiAgMTk6XHR9XG4gIDIwOlx0XG4gIDIxOlx0c3RhdGljIGlubGluZSBib29sIGdmcGZsYWdzX2FsbG93X3NwaW5uaW5nKGNvbnN0IGdmcF90IGdmcF9mbGFncylcbiAgMjI6XHR7XG4gIDIzOlx0XHQvKlxuICAyNDpcdFx0ICogIV9fR0ZQX0RJUkVDVF9SRUNMQUlNIC1cdTAwM2UgZGlyZWN0IGNsYWltIGlzIG5vdCBhbGxvd2VkLlxuICAyNTpcdFx0ICogIV9fR0ZQX0tTV0FQRF9SRUNMQUlNIC1cdTAwM2UgaXQmIzM5O3Mgbm90IHNhZmUgdG8gd2FrZSB1cCBrc3dhcGQuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAwOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjA2CgkJCQkJCQlvdXRwdXQ6IDYxCgkJCQkJCQl0aG91Z2h0czogMTIzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcmlhZ2UgQXNzZXNzbWVudDogV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHRoZSBjb3JlIHByaW5jaXBsZTogcmVhY2hhYmlsaXR5LiBDYW4gdGhpcyBjb2RlICphY3R1YWxseSogZXhlY3V0ZSBpbiBhIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnQ/IFRoYXQmIzM5O3MgdGhlIHByaW1hcnkgZ2F0ZS4gSSYjMzk7bSBzZWVpbmcgY2hhbmdlcyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBkZXZpY2UgcmVzb3VyY2UgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGdmcC5oYCwgYGdmcF90eXBlcy5oYCwgYW5kIGBkZXZyZXMuaGAgaGVhZGVyIGZpbGVzLgoKSW5pdGlhbGx5LCBJIHNlZSBgZGVmYXVsdF9nZnBgIGhhcyBiZWVuIG1vdmVkIGZyb20gYGdmcC5oYCB0byBgZ2ZwX3R5cGVzLmhgLiBTaW5jZSBgZ2ZwLmhgIGluY2x1ZGVzIGBnZnBfdHlwZXMuaGAsIHRoaXMgaXMgYSByZWxvY2F0aW9uLCBub3QgYSBtb2RpZmljYXRpb24gb2YgdGhlIGRlZmluaXRpb24uIEFueSBjb2RlIHRoYXQgaW5jbHVkZWQgYGdmcC5oYCAqYWxyZWFkeSogaGFkIGFjY2VzcyB0byBgZGVmYXVsdF9nZnBgLiBJdCBpcyBub3cgc2ltcGx5IG9idGFpbmVkIHZpYSBhIGRpZmZlcmVudCBpbmNsdWRlLiBJdCBzZWVtcyBsaWtlIGEgcmVmYWN0b3IgdG8gaW1wcm92ZSBoZWFkZXIgZmlsZSBzdHJ1Y3R1cmUsIGFuZCBzaG91bGQgbm90IGFmZmVjdCBjb21waWxlZCBjb2RlLgoKTmV4dCwgdGhlIGBkZXZyZXMuaGAgY2hhbmdlcy4gSGVyZSwgdGhlcmUgYXJlICpuZXcqIG1hY3JvcyBhZGRlZCByZWxhdGVkIHRvIG1hbmFnZWQgbWVtb3J5IGFsbG9jYXRpb246IGBkZXZtX2ttYWxsb2Nfb2JqYCwgYGRldm1fa21hbGxvY19vYmpzYCwgYGRldm1fa21hbGxvY19mbGV4YCwgYGRldm1fa3phbGxvY19vYmpgLCBldGMuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IGFyZSB0aGVzZSBtYWNyb3MgKmFjdHVhbGx5IHVzZWQqIGFueXdoZXJlIGluIHRoZSBrZXJuZWw/IEkgaW5pdGlhbGx5IHVzZWQgYSBgZ3JlcHBlcmAgc3R5bGUgc2VhcmNoIGFuZCBmb3VuZCAqbm90aGluZyogaW4gdGhlIGNvZGUgYmFzZSB0aGF0IHVzZXMgdGhlc2UgbWFjcm9zISBJdCBzZWVtcyB0aGUgYWRkZWQgY29kZSBpcyBlbnRpcmVseSB1bnVzZWQuCgpHaXZlbiB0aGUgdHJpYWdlIHBoaWxvc29waHksIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGlzIG5vdCBhbiBhY2NpZGVudGFsIG92ZXJzaWdodCAobWF5YmUgZnJvbSBhbiBvbGRlciBjb21taXQgb3IgYSBkaWZmZXJlbnQgY29kZSBiYXNlKS4gSSB3aWxsIGNoZWNrIGV2ZXJ5IHNpbmdsZSBzeW1ib2wgdG8gYmUgMTAwJSBzdXJlOgotIGBfX2Rldm1fYWxsb2Nfb2Jqc2AKLSBgZGV2bV9rbWFsbG9jX29iamAKLSBgZGV2bV9rbWFsbG9jX29ianNgCi0gYF9fZGV2bV9hbGxvY19mbGV4YAotIGBkZXZtX2ttYWxsb2NfZmxleGAKLSBgZGV2bV9remFsbG9jX29iamAKLSBgZGV2bV9remFsbG9jX29ianNgCi0gYGRldm1fa3phbGxvY19mbGV4YAoKSWYgdGhvc2UgbWFjcm9zIGFyZSBkZWZpbmVkIGJ1dCBuZXZlciBpbnZva2VkLCBJIGNvbnNpZGVyIHRoZSBjaGFuZ2VzIHRvIGJlIGVxdWl2YWxlbnQgdG8gZGVhZCBjb2RlLiBJZiB0aGlzIGNvZGUgaXMgbm90IHJlYWNoYWJsZSwgdGhlbiBpdCBkb2VzbiYjMzk7dCBuZWVkIHRvIGJlIGZ1enplZC4gTXkgZGVjaXNpb24gaGluZ2VzIG9uIHdoZXRoZXIgdGhlc2UgbWFjcm9zIGhhdmUgY2FsbGVycyBvciBub3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAwOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rldm1fa21hbGxvY19vYmp8ZGV2bV9rbWFsbG9jX29ianN8ZGV2bV9rbWFsbG9jX2ZsZXh8ZGV2bV9remFsbG9jX29ianxkZXZtX2t6YWxsb2Nfb2Jqc3xkZXZtX2t6YWxsb2NfZmxleCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaD02MT1zdGF0aWMgaW5saW5lIHZvaWQgKmRldm1fa2NhbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtODYtLyoqXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDo4NzogKiBkZXZtX2ttYWxsb2Nfb2JqIC0gRGV2aWNlLW1hbmFnZWQgYWxsb2NhdGlvbiBvZiBhIHNpbmdsZSB0eXBlZCBvYmplY3RcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTg4LSAqIEBERVY6IERldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC05Ny0gKi9cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjk4OiNkZWZpbmUgZGV2bV9rbWFsbG9jX29iaihERVYsIFZBUl9PUl9UWVBFLCAuLi4pXHRcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtOTktXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLFx0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMDItLyoqXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxMDM6ICogZGV2bV9rbWFsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGFuIGFycmF5IG9mIGEgdHlwZWQgb2JqZWN0XG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMDQtICogQERFVjogRGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLlxuLS1cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTExMS0gKi9cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjExMjojZGVmaW5lIGRldm1fa21hbGxvY19vYmpzKERFViwgVkFSX09SX1RZUEUsIENPVU5ULCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTMtXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuLS1cbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE0MS0vKipcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE0MjogKiBkZXZtX2ttYWxsb2NfZmxleCAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSBmbGV4aWJsZS1hcnJheSBzdHJ1Y3R1cmVcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE0My0gKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXG4tLVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTUyLSAqL1xuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTUzOiNkZWZpbmUgZGV2bV9rbWFsbG9jX2ZsZXgoREVWLCBWQVJfT1JfVFlQRSwgRkFNLCBDT1VOVCwgLi4uKSBcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTU0LVx0X19kZXZtX2FsbG9jX2ZsZXgoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcbi0tXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNTctLyogQWxsIGRldm1fa3phbGxvYyBhbGlhc2VzIGZvciBkZXZtX2ttYWxsb2NfKG9ianxvYmpzfGZsZXgpLiAqL1xuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTU4OiNkZWZpbmUgZGV2bV9remFsbG9jX29iaihERVYsIFAsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1OS1cdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgMSlcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE2MDojZGVmaW5lIGRldm1fa3phbGxvY19vYmpzKERFViwgUCwgQ09VTlQsIC4uLikgXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE2MS1cdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjItXHRcdFx0ICB0eXBlb2YoUCksIENPVU5UKVxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTYzOiNkZWZpbmUgZGV2bV9remFsbG9jX2ZsZXgoREVWLCBQLCBGQU0sIENPVU5ULCAuLi4pIFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjQtXHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDkwNQoJCQkJCQkJb3V0cHV0OiAxNDIKCQkJCQkJCXRob3VnaHRzOiAxMjU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBLZXJuZWwgUGF0Y2ggZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdC4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNldmVyYWwgbmV3IGRldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gaGVscGVyIG1hY3JvczogYGRldm1fa21hbGxvY19vYmpgLCBgZGV2bV9remFsbG9jX29iamAsIGFuZCBhIGZldyBvdGhlcnMsIGJ1dCBjcml0aWNhbGx5LCBub25lIG9mIHRoZXNlIGFyZSBhY3R1YWxseSB1c2VkICphbnl3aGVyZSogaW4gdGhlIGN1cnJlbnQga2VybmVsIHNvdXJjZS4gU2luY2UgdGhleSYjMzk7cmUgbWFjcm9zLCB3aGljaCBhcmUgcHJlcHJvY2Vzc29yIGRlZmluaXRpb25zLCBpZiB0aGV5IGFyZW4mIzM5O3QgaW52b2tlZCBpbiBhbnkgQyBmaWxlIG9yIGhlYWRlciwgdGhlIGNvbXBpbGVyIGRvZXNuJiMzOTt0IGdlbmVyYXRlIGFueSBtYWNoaW5lIGNvZGUgZm9yIHRoZW0uIFNvLCBpbiB0ZXJtcyBvZiBleGVjdXRhYmxlIGNvZGUsIHRoaXMgcGF0Y2ggbGl0ZXJhbGx5IGRvZXMgbm90aGluZy4gWmVyby4gSXQgYWxzbyBtb3ZlcyB0aGUgZXhpc3RpbmcgYGRlZmF1bHRfZ2ZwYCBtYWNybyBmcm9tIGBsaW51eC9nZnAuaGAgdG8gYGxpbnV4L2dmcF90eXBlcy5oYCwgYnV0IHdpdGggbm8gY2hhbmdlIHRvIHRoZSBtYWNybyYjMzk7cyAqZGVmaW5pdGlvbiouIEkmIzM5O3ZlIHZlcmlmaWVkIHRoaXMgd2l0aCBhIGRpZmYuIGBnZnAuaGAgKmluY2x1ZGVzKiBgZ2ZwX3R5cGVzLmhgIHNvIHRoZSBkZWZpbml0aW9uIGlzIHN0aWxsIGF2YWlsYWJsZSBpbiBleGlzdGluZyBjYWxsLXNpdGVzIGFuZCBleHBhbmRpbmcgdG8gdGhlIHNhbWUgdG9rZW5zLgoKTm93LCBsZXQmIzM5O3MgY2FyZWZ1bGx5IGV2YWx1YXRlIHRoZSAmIzM0O25lZ2F0aXZlIGNyaXRlcmlhJiMzNDsgZm9yIGRldGVybWluaW5nIGZ1enppbmcgZWxpZ2liaWxpdHkuIEl0JiMzOTtzIGEgYmluYXJ5IGRlY2lzaW9uOiBzaG91bGQgd2UgZnV6eiwgb3Igbm90PyBUaGUgcmVsZXZhbnQgc2VjdGlvbiBzcGVjaWZpY2FsbHkgbWVudGlvbnMgJiMzNDtOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzLCYjMzQ7IGFuZCB0aGF0IGluY2x1ZGVzICYjMzQ7VW51c2VkIG1hY3JvIGRlZmluaXRpb25zLiYjMzQ7IFVudXNlZCBtYWNyb3MgKmRvbiYjMzk7dCogcHJvZHVjZSBhbnkgZXhlY3V0YWJsZSBjb2RlLCBhbmQgd2UmIzM5O3ZlIGVzdGFibGlzaGVkIHRoYXQgdGhlcmUgYXJlIG5vIG1hY3JvIGNhbGxzLiBBbHNvLCBTZWN0aW9uIDQgdGFsa3MgYWJvdXQgaW5saW5lZCBmdW5jdGlvbnMgYW5kIHRoZSBuZWVkIHRvIGZpbmQgY2FsbGVycyBpZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycy4gQnV0IGhlcmUsIHRoZXJlIGFyZW4mIzM5O3QgZXZlbiBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucywgYW5kIHRoZXJlIGFyZSBOTyBjYWxsZXJzIGluIGFueSAuYyBmaWxlISBUaGVzZSBhcmUgdW51c2VkIHByZXByb2Nlc3NvciBtYWNyb3MgKGhlbHBlciBBUEkgaW50cm9kdWNlZCB3aXRob3V0IGNhbGxlcnMgeWV0KS4gQmVjYXVzZSBubyBjYWxsZXIgZXhpc3RzLCB0aGVyZSBpcyBubyBzeW1ib2wsIG5vIGNvZGUgaW4gdm1saW51eCwgYW5kIG5vIHBhdGggdGhhdCBleGVjdXRlcyBhbnkgb2YgdGhlIG1vZGlmaWVkIG9yIGFkZGVkIGNvZGUuCgpUaGUgY3JpdGVyaWEgc3RhdGU6ICYjMzQ7UkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6IEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLi4uJiMzNDsgU28sIGJlY2F1c2UgdGhlc2UgbWFjcm9zIGFyZSBuZXZlciBpbnN0YW50aWF0ZWQgYW55d2hlcmUsIHRoZXkgYXJlIGNvbXBsZXRlbHkgbm9uLWV4ZWN1dGFibGUgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIGRvdWJsZS1jaGVjazogdGhlIGRpZmYgc2hvd2VkIHRoZSBhZGRpdGlvbnMgdG8gYGRldnJlcy5oYCwgdGhlIHJlbW92YWxzIGZyb20gYGdmcC5oYCwgYW5kIHRoZSBhZGRpdGlvbnMgdG8gYGdmcF90eXBlcy5oYC4gQnV0IHRoZSBkZWZpbml0aW9uIG9mIGBkZWZhdWx0X2dmcGAgaXRzZWxmIGlzIGlkZW50aWNhbCBpbiBib3RoIGxvY2F0aW9ucywgbWVhbmluZyBubyBmdW5jdGlvbmFsIGNoYW5nZS4KCkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgbmV3IGRldnJlcyBhbGxvY2F0aW9uIGhlbHBlciBtYWNyb3MgdGhhdCBhcmVuJiMzOTt0IGNhbGxlZCBhbnl3aGVyZSAqeWV0KiBhbmQgbW92aW5nIHRoZSBgZGVmYXVsdF9nZnBgIGhlbHBlciBtYWNybyB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCBkb2VzbiYjMzk7dCBhZGQgb3IgYWx0ZXIgYW55IGNvbXBpbGVkIGV4ZWN1dGFibGUgY29kZS4gVGhlcmVmb3JlOgoKKiAgIGBXb3J0aEZ1enppbmdgOiBmYWxzZQoqICAgYEVuYWJsZUNvbmZpZ3NgOiBcWyBdCiogICBgRm9jdXNTeW1ib2xzYDogXFsgXQoqICAgYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBvbmx5IGludHJvZHVjZXMgbmV3IGRldnJlcyBhbGxvY2F0aW9uIG1hY3JvcyAoYGRldm1fa21hbGxvY19vYmpgLCBgZGV2bV9remFsbG9jX29iamAsIGV0Yy4pIHdoaWNoIGN1cnJlbnRseSBoYXZlIG5vIGNhbGxlcnMgaW4gdGhlIGtlcm5lbCBjb2RlYmFzZSwgYW5kIG1vdmVzIHRoZSBkZWZpbml0aW9uIG9mIGBkZWZhdWx0X2dmcGAgZnJvbSBgbGludXgvZ2ZwLmhgIHRvIGBsaW51eC9nZnBfdHlwZXMuaGAgd2l0aCBubyBmdW5jdGlvbmFsIGNoYW5nZS4gTm8gY29tcGlsZWQgZXhlY3V0YWJsZSBjb2RlIGlzIGFkZGVkIG9yIG1vZGlmaWVkLgoKQWxsIGNsZWFyLiBMZXQmIzM5O3Mgc2VuZCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBuZXcgZGV2cmVzIGFsbG9jYXRpb24gaGVscGVyIG1hY3JvcyAoZGV2bV9rbWFsbG9jX29iaiwgZGV2bV9remFsbG9jX29iaiwgZGV2bV9rbWFsbG9jX2ZsZXgsIGV0Yy4pIHdoaWNoIGN1cnJlbnRseSBoYXZlIG5vIGNhbGxlcnMgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCBjb2RlYmFzZSwgYW5kIG1vdmVzIHRoZSBtYWNybyBkZWZpbml0aW9uIG9mIGRlZmF1bHRfZ2ZwIGZyb20gbGludXgvZ2ZwLmggdG8gbGludXgvZ2ZwX3R5cGVzLmggd2l0aCBubyBjaGFuZ2UgaW4gbG9naWMuIEJlY2F1c2Ugbm8gY2FsbGVycyBleGlzdCBmb3IgdGhlIG5ldyBtYWNyb3MsIG5vIGV4ZWN1dGFibGUga2VybmVsIGNvZGUgaXMgYWRkZWQgb3IgYWx0ZXJlZCwgbWFraW5nIHRoZSBjaGFuZ2VzIG5vbi1leGVjdXRhYmxlIGFuZCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGludHJvZHVjZXMgbmV3IGRldnJlcyBhbGxvY2F0aW9uIGhlbHBlciBtYWNyb3MgKGRldm1fa21hbGxvY19vYmosIGRldm1fa3phbGxvY19vYmosIGRldm1fa21hbGxvY19mbGV4LCBldGMuKSB3aGljaCBjdXJyZW50bHkgaGF2ZSBubyBjYWxsZXJzIGFueXdoZXJlIGluIHRoZSBrZXJuZWwgY29kZWJhc2UsIGFuZCBtb3ZlcyB0aGUgbWFjcm8gZGVmaW5pdGlvbiBvZiBkZWZhdWx0X2dmcCBmcm9tIGxpbnV4L2dmcC5oIHRvIGxpbnV4L2dmcF90eXBlcy5oIHdpdGggbm8gY2hhbmdlIGluIGxvZ2ljLiBCZWNhdXNlIG5vIGNhbGxlcnMgZXhpc3QgZm9yIHRoZSBuZXcgbWFjcm9zLCBubyBleGVjdXRhYmxlIGtlcm5lbCBjb2RlIGlzIGFkZGVkIG9yIGFsdGVyZWQsIG1ha2luZyB0aGUgY2hhbmdlcyBub24tZXhlY3V0YWJsZSBhbmQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI2OjU5LjIzMTU3MDU1N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NTQ5OTIyNDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBpbnRyb2R1Y2VzIG5ldyBkZXZyZXMgYWxsb2NhdGlvbiBoZWxwZXIgbWFjcm9zIChkZXZtX2ttYWxsb2Nfb2JqLCBkZXZtX2t6YWxsb2Nfb2JqLCBkZXZtX2ttYWxsb2NfZmxleCwgZXRjLikgd2hpY2ggY3VycmVudGx5IGhhdmUgbm8gY2FsbGVycyBhbnl3aGVyZSBpbiB0aGUga2VybmVsIGNvZGViYXNlLCBhbmQgbW92ZXMgdGhlIG1hY3JvIGRlZmluaXRpb24gb2YgZGVmYXVsdF9nZnAgZnJvbSBsaW51eC9nZnAuaCB0byBsaW51eC9nZnBfdHlwZXMuaCB3aXRoIG5vIGNoYW5nZSBpbiBsb2dpYy4gQmVjYXVzZSBubyBjYWxsZXJzIGV4aXN0IGZvciB0aGUgbmV3IG1hY3Jvcywgbm8gZXhlY3V0YWJsZSBrZXJuZWwgY29kZSBpcyBhZGRlZCBvciBhbHRlcmVkLCBtYWtpbmcgdGhlIGNoYW5nZXMgbm9uLWV4ZWN1dGFibGUgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI2OjU5LjIzMTU3ODM4N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA0MzI5MjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWMxZjQ2Y2IzZmQ5OWFmMDg1MTg3NmZhYTc1NjhlNzA2YmNhMjEwN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMDoyNjo1OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaCBiL2luY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oXFxuaW5kZXggMTRhYjkxNTliZGRhNS4uNzY1NmM5ZWNkNGRhYiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oXFxuQEAgLTYyLDYgKzYyLDEwOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKmRldm1fa2NhbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX1xcbiB7XFxuIFxcdHJldHVybiBkZXZtX2ttYWxsb2NfYXJyYXkoZGV2LCBuLCBzaXplLCBmbGFncyB8IF9fR0ZQX1pFUk8pO1xcbiB9XFxuK1xcbisvKipcXG4rICogX19kZXZtX2FsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIG9iamVjdHMgb2YgYSBnaXZlbiB0eXBlXFxuKyAqIEBERVZNX0FMTE9DOiB3aGljaCBkZXZpY2UtbWFuYWdlZCBzaXplLWJhc2VkIGFsbG9jYXRvciB0byB1c2UuXFxuKyAqIEBERVY6IGRldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cXG4rICogQEdGUDogR0ZQIGZsYWdzIGZvciB0aGUgYWxsb2NhdGlvbi5cXG4rICogQFRZUEU6IHR5cGUgdG8gYWxsb2NhdGUgc3BhY2UgZm9yLlxcbisgKiBAQ09VTlQ6IGhvdyBtYW55IEBUWVBFIG9iamVjdHMgdG8gYWxsb2NhdGUuXFxuKyAqXFxuKyAqIERldmljZS1tYW5hZ2VkIGNvdW50ZXJwYXJ0IG9mIF9fYWxsb2Nfb2JqcygpLlxcbisgKiBAREVWTV9BTExPQyB0YWtlcyAoQERFViwgc2l6ZSwgZ2ZwKS5cXG4rICpcXG4rICogUmV0dXJuczogTmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgdG8gKGZpcnN0KSBAVFlQRSBvZiBAQ09VTlQtbWFueSBhbGxvY2F0ZWRcXG4rICogQFRZUEUgb2JqZWN0cywgb3IgTlVMTCBvbiBmYWlsdXJlLlxcbisgKi9cXG4rI2RlZmluZSBfX2Rldm1fYWxsb2Nfb2JqcyhERVZNX0FMTE9DLCBERVYsIEdGUCwgVFlQRSwgQ09VTlQpXFx0XFx0XFxcXFxcbisoe1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0Y29uc3Qgc2l6ZV90IF9fb2JqX3NpemUgPSBzaXplX211bChzaXplb2YoVFlQRSksIENPVU5UKTtcXHRcXFxcXFxuK1xcdChUWVBFICopREVWTV9BTExPQyhERVYsIF9fb2JqX3NpemUsIEdGUCk7XFx0XFx0XFx0XFxcXFxcbit9KVxcbitcXG4rLyoqXFxuKyAqIGRldm1fa21hbGxvY19vYmogLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGEgc2luZ2xlIHR5cGVkIG9iamVjdFxcbisgKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXFxuKyAqIEBWQVJfT1JfVFlQRTogVmFyaWFibGUgb3IgdHlwZSB0byBhbGxvY2F0ZS5cXG4rICogQEdGUDogT3B0aW9uYWwgR0ZQIGZsYWdzIChkZWZhdWx0cyB0byAlR0ZQX0tFUk5FTCkuXFxuKyAqXFxuKyAqIERldmljZS1tYW5hZ2VkIGNvdW50ZXJwYXJ0IG9mIGttYWxsb2Nfb2JqKCk6IHRoZSBhbGxvY2F0aW9uIGlzIHNpemVkIGZyb21cXG4rICogQFZBUl9PUl9UWVBFIGFuZCByZXR1cm5lZCBhcyBhIHBvaW50ZXIgdG8gdGhhdCB0eXBlLCBub3Qgdm9pZCAqLlxcbisgKlxcbisgKiBSZXR1cm5zOiBuZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB0byBhIEBWQVJfT1JfVFlQRSBvbiBzdWNjZXNzLCBvciBOVUxMIG9uXFxuKyAqIGZhaWx1cmUuXFxuKyAqL1xcbisjZGVmaW5lIGRldm1fa21hbGxvY19vYmooREVWLCBWQVJfT1JfVFlQRSwgLi4uKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSxcXHRcXFxcXFxuK1xcdFxcdFxcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgMSlcXG4rXFxuKy8qKlxcbisgKiBkZXZtX2ttYWxsb2Nfb2JqcyAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYW4gYXJyYXkgb2YgYSB0eXBlZCBvYmplY3RcXG4rICogQERFVjogRGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLlxcbisgKiBAVkFSX09SX1RZUEU6IFZhcmlhYmxlIG9yIHR5cGUgdG8gYWxsb2NhdGUgYW4gYXJyYXkgb2YuXFxuKyAqIEBDT1VOVDogSG93IG1hbnkgZWxlbWVudHMgaW4gdGhlIGFycmF5LlxcbisgKiBAR0ZQOiBPcHRpb25hbCBHRlAgZmxhZ3MgKGRlZmF1bHRzIHRvICVHRlBfS0VSTkVMKS5cXG4rICpcXG4rICogUmV0dXJuczogbmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgQFZBUl9PUl9UWVBFIG9uIHN1Y2Nlc3MsIG9yXFxuKyAqIE5VTEwgb24gZmFpbHVyZSAoaW5jbHVkaW5nIHdoZW4gdGhlIHRvdGFsIHNpemUgb3ZlcmZsb3dzKS5cXG4rICovXFxuKyNkZWZpbmUgZGV2bV9rbWFsbG9jX29ianMoREVWLCBWQVJfT1JfVFlQRSwgQ09VTlQsIC4uLikgXFxcXFxcbitcXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuK1xcdFxcdFxcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgQ09VTlQpXFxuK1xcbisvKipcXG4rICogX19kZXZtX2FsbG9jX2ZsZXggLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGEgdHJhaWxpbmctZmxleC1hcnJheSBvYmplY3RcXG4rICogQERFVk1fQUxMT0M6IHdoaWNoIGRldmljZS1tYW5hZ2VkIGFsbG9jYXRvciB0byB1c2UuXFxuKyAqIEBERVY6IGRldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cXG4rICogQEdGUDogR0ZQIGZsYWdzIGZvciB0aGUgYWxsb2NhdGlvbi5cXG4rICogQFRZUEU6IHR5cGUgb2Ygc3RydWN0dXJlIHRvIGFsbG9jYXRlIHNwYWNlIGZvci5cXG4rICogQEZBTTogbmFtZSBvZiB0aGUgZmxleGlibGUgYXJyYXkgbWVtYmVyIG9mIEBUWVBFLlxcbisgKiBAQ09VTlQ6IGhvdyBtYW55IEBGQU0gZWxlbWVudHMgdG8gYWxsb2NhdGUgc3BhY2UgZm9yLlxcbisgKlxcbisgKiBEZXZpY2UtbWFuYWdlZCBjb3VudGVycGFydCBvZiBfX2FsbG9jX2ZsZXgoKS5cXG4rICogQERFVk1fQUxMT0MgdGFrZXMgKEBERVYsIHNpemUsIGdmcCkuXFxuKyAqXFxuKyAqIFJldHVybnM6IE5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHRvIEBUWVBFIHdpdGggQENPVU5ULW1hbnkgdHJhaWxpbmcgQEZBTVxcbisgKiBlbGVtZW50cywgb3IgTlVMTCBvbiBmYWlsdXJlLlxcbisgKi9cXG4rI2RlZmluZSBfX2Rldm1fYWxsb2NfZmxleChERVZNX0FMTE9DLCBERVYsIEdGUCwgVFlQRSwgRkFNLCBDT1VOVClcXHRcXFxcXFxuKyh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRjb25zdCBzaXplX3QgX19jb3VudCA9IChDT1VOVCk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRjb25zdCBzaXplX3QgX19vYmpfc2l6ZSA9IHN0cnVjdF9zaXplX3QoVFlQRSwgRkFNLCBfX2NvdW50KTtcXHRcXFxcXFxuK1xcdFRZUEUgKl9fb2JqX3B0ciA9IERFVk1fQUxMT0MoREVWLCBfX29ial9zaXplLCBHRlApO1xcdFxcdFxcXFxcXG4rXFx0aWYgKF9fb2JqX3B0cilcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdF9fc2V0X2ZsZXhfY291bnRlcihfX29ial9wdHItXFx1MDAzZUZBTSwgX19jb3VudCk7XFx0XFx0XFxcXFxcbitcXHRfX29ial9wdHI7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbit9KVxcbitcXG4rLyoqXFxuKyAqIGRldm1fa21hbGxvY19mbGV4IC0gRGV2aWNlLW1hbmFnZWQgYWxsb2NhdGlvbiBvZiBhIGZsZXhpYmxlLWFycmF5IHN0cnVjdHVyZVxcbisgKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXFxuKyAqIEBWQVJfT1JfVFlQRTogVmFyaWFibGUgb3IgdHlwZSB0byBhbGxvY2F0ZSAod2l0aCBpdHMgZmxleGlibGUgYXJyYXkpLlxcbisgKiBARkFNOiBUaGUgbmFtZSBvZiB0aGUgZmxleGlibGUgYXJyYXkgbWVtYmVyIG9mIHRoZSBzdHJ1Y3R1cmUuXFxuKyAqIEBDT1VOVDogSG93IG1hbnkgZmxleGlibGUgYXJyYXkgbWVtYmVyIGVsZW1lbnRzIHRvIGFsbG9jYXRlLlxcbisgKiBAR0ZQOiBPcHRpb25hbCBHRlAgZmxhZ3MgKGRlZmF1bHRzIHRvICVHRlBfS0VSTkVMKS5cXG4rICpcXG4rICogUmV0dXJuczogbmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgdG8gQFZBUl9PUl9UWVBFIG9uIHN1Y2Nlc3MsIG9yIE5VTEwgb25cXG4rICogZmFpbHVyZS4gSWYgQEZBTSBoYXMgYmVlbiBhbm5vdGF0ZWQgd2l0aCBfX2NvdW50ZWRfYnkoKSwgaXRzIGNvdW50ZXIgaXMgc2V0XFxuKyAqIHRvIEBDT1VOVC5cXG4rICovXFxuKyNkZWZpbmUgZGV2bV9rbWFsbG9jX2ZsZXgoREVWLCBWQVJfT1JfVFlQRSwgRkFNLCBDT1VOVCwgLi4uKSBcXFxcXFxuK1xcdF9fZGV2bV9hbGxvY19mbGV4KGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXFxcXG4rXFx0XFx0XFx0ICB0eXBlb2YoVkFSX09SX1RZUEUpLCBGQU0sIENPVU5UKVxcbitcXG4rLyogQWxsIGRldm1fa3phbGxvYyBhbGlhc2VzIGZvciBkZXZtX2ttYWxsb2NfKG9ianxvYmpzfGZsZXgpLiAqL1xcbisjZGVmaW5lIGRldm1fa3phbGxvY19vYmooREVWLCBQLCAuLi4pIFxcXFxcXG4rXFx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxcbisjZGVmaW5lIGRldm1fa3phbGxvY19vYmpzKERFViwgUCwgQ09VTlQsIC4uLikgXFxcXFxcbitcXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuK1xcdFxcdFxcdCAgdHlwZW9mKFApLCBDT1VOVClcXG4rI2RlZmluZSBkZXZtX2t6YWxsb2NfZmxleChERVYsIFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcXFxcbitcXHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuK1xcdFxcdFxcdCAgdHlwZW9mKFApLCBGQU0sIENPVU5UKVxcbitcXG4gc3RhdGljIGlubGluZSBfX3JlYWxsb2Nfc2l6ZSgzLCA0KSB2b2lkICogX19tdXN0X2NoZWNrXFxuIGRldm1fa3JlYWxsb2NfYXJyYXkoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpwLCBzaXplX3QgbmV3X24sIHNpemVfdCBuZXdfc2l6ZSwgZ2ZwX3QgZmxhZ3MpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9nZnAuaCBiL2luY2x1ZGUvbGludXgvZ2ZwLmhcXG5pbmRleCA4NzJiYzUzZjMyZWM4Li5iNjJlMmZkNTNjYjQxIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvZ2ZwLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2dmcC5oXFxuQEAgLTEzLDEwICsxMyw2IEBAXFxuIHN0cnVjdCB2bV9hcmVhX3N0cnVjdDtcXG4gc3RydWN0IG1lbXBvbGljeTtcXG4gXFxuLS8qIEhlbHBlciBtYWNybyB0byBhdm9pZCBnZnAgZmxhZ3MgaWYgdGhleSBhcmUgdGhlIGRlZmF1bHQgb25lICovXFxuLSNkZWZpbmUgX19kZWZhdWx0X2dmcChhLGIsLi4uKSBiXFxuLSNkZWZpbmUgZGVmYXVsdF9nZnAoLi4uKSBfX2RlZmF1bHRfZ2ZwKCwjI19fVkFfQVJHU19fLEdGUF9LRVJORUwpXFxuLVxcbiBzdGF0aWMgaW5saW5lIGJvb2wgZ2ZwZmxhZ3NfYWxsb3dfYmxvY2tpbmcoY29uc3QgZ2ZwX3QgZ2ZwX2ZsYWdzKVxcbiB7XFxuIFxcdHJldHVybiAhIShnZnBfZmxhZ3MgXFx1MDAyNiBfX0dGUF9ESVJFQ1RfUkVDTEFJTSk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmggYi9pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oXFxuaW5kZXggMTkwMTkxNDExMDA5Zi4uYjFjZDE0M2YzYzQyZiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaFxcbkBAIC0zODIsNCArMzgyLDggQEAgZW51bSB7XFxuIFxcdFxcdFxcdCBfX0dGUF9OT01FTUFMTE9DIHwgX19HRlBfTk9XQVJOKSBcXHUwMDI2IH5fX0dGUF9SRUNMQUlNKVxcbiAjZGVmaW5lIEdGUF9UUkFOU0hVR0VcXHQoR0ZQX1RSQU5TSFVHRV9MSUdIVCB8IF9fR0ZQX0RJUkVDVF9SRUNMQUlNKVxcbiBcXG4rLyogSGVscGVyIG1hY3JvIHRvIGF2b2lkIGdmcCBmbGFncyBpZiB0aGV5IGFyZSB0aGUgZGVmYXVsdCBvbmUgKi9cXG4rI2RlZmluZSBfX2RlZmF1bHRfZ2ZwKGEsYiwuLi4pIGJcXG4rI2RlZmluZSBkZWZhdWx0X2dmcCguLi4pIF9fZGVmYXVsdF9nZnAoLCMjX19WQV9BUkdTX18sR0ZQX0tFUk5FTClcXG4rXFxuICNlbmRpZiAvKiBfX0xJTlVYX0dGUF9UWVBFU19IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI2OjU5LjgzNjY4MDI2OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NjM5NDQ3OTM1NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBuZXcgZGV2cmVzIGFsbG9jYXRpb24gaGVscGVyIG1hY3JvcyAoZGV2bV9rbWFsbG9jX29iaiwgZGV2bV9remFsbG9jX29iaiwgZGV2bV9rbWFsbG9jX2ZsZXgsIGV0Yy4pIHdoaWNoIGN1cnJlbnRseSBoYXZlIG5vIGNhbGxlcnMgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCBjb2RlYmFzZSwgYW5kIG1vdmVzIHRoZSBtYWNybyBkZWZpbml0aW9uIG9mIGRlZmF1bHRfZ2ZwIGZyb20gbGludXgvZ2ZwLmggdG8gbGludXgvZ2ZwX3R5cGVzLmggd2l0aCBubyBjaGFuZ2UgaW4gbG9naWMuIEJlY2F1c2Ugbm8gY2FsbGVycyBleGlzdCBmb3IgdGhlIG5ldyBtYWNyb3MsIG5vIGV4ZWN1dGFibGUga2VybmVsIGNvZGUgaXMgYWRkZWQgb3IgYWx0ZXJlZCwgbWFraW5nIHRoZSBjaGFuZ2VzIG5vbi1leGVjdXRhYmxlIGFuZCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVjMWY0NmNiM2ZkOTlhZjA4NTE4NzZmYWE3NTY4ZTcwNmJjYTIxMDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMDoyNjo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oIGIvaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmhcbmluZGV4IDE0YWI5MTU5YmRkYTUuLjc2NTZjOWVjZDRkYWIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaFxuKysrIGIvaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmhcbkBAIC02Miw2ICs2MiwxMDggQEAgc3RhdGljIGlubGluZSB2b2lkICpkZXZtX2tjYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF9cbiB7XG4gXHRyZXR1cm4gZGV2bV9rbWFsbG9jX2FycmF5KGRldiwgbiwgc2l6ZSwgZmxhZ3MgfCBfX0dGUF9aRVJPKTtcbiB9XG4rXG4rLyoqXG4rICogX19kZXZtX2FsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIG9iamVjdHMgb2YgYSBnaXZlbiB0eXBlXG4rICogQERFVk1fQUxMT0M6IHdoaWNoIGRldmljZS1tYW5hZ2VkIHNpemUtYmFzZWQgYWxsb2NhdG9yIHRvIHVzZS5cbisgKiBAREVWOiBkZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXG4rICogQEdGUDogR0ZQIGZsYWdzIGZvciB0aGUgYWxsb2NhdGlvbi5cbisgKiBAVFlQRTogdHlwZSB0byBhbGxvY2F0ZSBzcGFjZSBmb3IuXG4rICogQENPVU5UOiBob3cgbWFueSBAVFlQRSBvYmplY3RzIHRvIGFsbG9jYXRlLlxuKyAqXG4rICogRGV2aWNlLW1hbmFnZWQgY291bnRlcnBhcnQgb2YgX19hbGxvY19vYmpzKCkuXG4rICogQERFVk1fQUxMT0MgdGFrZXMgKEBERVYsIHNpemUsIGdmcCkuXG4rICpcbisgKiBSZXR1cm5zOiBOZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB0byAoZmlyc3QpIEBUWVBFIG9mIEBDT1VOVC1tYW55IGFsbG9jYXRlZFxuKyAqIEBUWVBFIG9iamVjdHMsIG9yIE5VTEwgb24gZmFpbHVyZS5cbisgKi9cbisjZGVmaW5lIF9fZGV2bV9hbGxvY19vYmpzKERFVk1fQUxMT0MsIERFViwgR0ZQLCBUWVBFLCBDT1VOVClcdFx0XFxcbisoe1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRjb25zdCBzaXplX3QgX19vYmpfc2l6ZSA9IHNpemVfbXVsKHNpemVvZihUWVBFKSwgQ09VTlQpO1x0XFxcbitcdChUWVBFICopREVWTV9BTExPQyhERVYsIF9fb2JqX3NpemUsIEdGUCk7XHRcdFx0XFxcbit9KVxuK1xuKy8qKlxuKyAqIGRldm1fa21hbGxvY19vYmogLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGEgc2luZ2xlIHR5cGVkIG9iamVjdFxuKyAqIEBERVY6IERldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cbisgKiBAVkFSX09SX1RZUEU6IFZhcmlhYmxlIG9yIHR5cGUgdG8gYWxsb2NhdGUuXG4rICogQEdGUDogT3B0aW9uYWwgR0ZQIGZsYWdzIChkZWZhdWx0cyB0byAlR0ZQX0tFUk5FTCkuXG4rICpcbisgKiBEZXZpY2UtbWFuYWdlZCBjb3VudGVycGFydCBvZiBrbWFsbG9jX29iaigpOiB0aGUgYWxsb2NhdGlvbiBpcyBzaXplZCBmcm9tXG4rICogQFZBUl9PUl9UWVBFIGFuZCByZXR1cm5lZCBhcyBhIHBvaW50ZXIgdG8gdGhhdCB0eXBlLCBub3Qgdm9pZCAqLlxuKyAqXG4rICogUmV0dXJuczogbmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgdG8gYSBAVkFSX09SX1RZUEUgb24gc3VjY2Vzcywgb3IgTlVMTCBvblxuKyAqIGZhaWx1cmUuXG4rICovXG4rI2RlZmluZSBkZXZtX2ttYWxsb2Nfb2JqKERFViwgVkFSX09SX1RZUEUsIC4uLilcdFx0XHRcdFxcXG4rXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLFx0XFxcbitcdFx0XHQgIHR5cGVvZihWQVJfT1JfVFlQRSksIDEpXG4rXG4rLyoqXG4rICogZGV2bV9rbWFsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGFuIGFycmF5IG9mIGEgdHlwZWQgb2JqZWN0XG4rICogQERFVjogRGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLlxuKyAqIEBWQVJfT1JfVFlQRTogVmFyaWFibGUgb3IgdHlwZSB0byBhbGxvY2F0ZSBhbiBhcnJheSBvZi5cbisgKiBAQ09VTlQ6IEhvdyBtYW55IGVsZW1lbnRzIGluIHRoZSBhcnJheS5cbisgKiBAR0ZQOiBPcHRpb25hbCBHRlAgZmxhZ3MgKGRlZmF1bHRzIHRvICVHRlBfS0VSTkVMKS5cbisgKlxuKyAqIFJldHVybnM6IG5ld2x5IGFsbG9jYXRlZCBwb2ludGVyIHRvIGFuIGFycmF5IG9mIEBWQVJfT1JfVFlQRSBvbiBzdWNjZXNzLCBvclxuKyAqIE5VTEwgb24gZmFpbHVyZSAoaW5jbHVkaW5nIHdoZW4gdGhlIHRvdGFsIHNpemUgb3ZlcmZsb3dzKS5cbisgKi9cbisjZGVmaW5lIGRldm1fa21hbGxvY19vYmpzKERFViwgVkFSX09SX1RZUEUsIENPVU5ULCAuLi4pIFxcXG4rXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuK1x0XHRcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgQ09VTlQpXG4rXG4rLyoqXG4rICogX19kZXZtX2FsbG9jX2ZsZXggLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGEgdHJhaWxpbmctZmxleC1hcnJheSBvYmplY3RcbisgKiBAREVWTV9BTExPQzogd2hpY2ggZGV2aWNlLW1hbmFnZWQgYWxsb2NhdG9yIHRvIHVzZS5cbisgKiBAREVWOiBkZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXG4rICogQEdGUDogR0ZQIGZsYWdzIGZvciB0aGUgYWxsb2NhdGlvbi5cbisgKiBAVFlQRTogdHlwZSBvZiBzdHJ1Y3R1cmUgdG8gYWxsb2NhdGUgc3BhY2UgZm9yLlxuKyAqIEBGQU06IG5hbWUgb2YgdGhlIGZsZXhpYmxlIGFycmF5IG1lbWJlciBvZiBAVFlQRS5cbisgKiBAQ09VTlQ6IGhvdyBtYW55IEBGQU0gZWxlbWVudHMgdG8gYWxsb2NhdGUgc3BhY2UgZm9yLlxuKyAqXG4rICogRGV2aWNlLW1hbmFnZWQgY291bnRlcnBhcnQgb2YgX19hbGxvY19mbGV4KCkuXG4rICogQERFVk1fQUxMT0MgdGFrZXMgKEBERVYsIHNpemUsIGdmcCkuXG4rICpcbisgKiBSZXR1cm5zOiBOZXdseSBhbGxvY2F0ZWQgcG9pbnRlciB0byBAVFlQRSB3aXRoIEBDT1VOVC1tYW55IHRyYWlsaW5nIEBGQU1cbisgKiBlbGVtZW50cywgb3IgTlVMTCBvbiBmYWlsdXJlLlxuKyAqL1xuKyNkZWZpbmUgX19kZXZtX2FsbG9jX2ZsZXgoREVWTV9BTExPQywgREVWLCBHRlAsIFRZUEUsIEZBTSwgQ09VTlQpXHRcXFxuKyh7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdGNvbnN0IHNpemVfdCBfX2NvdW50ID0gKENPVU5UKTtcdFx0XHRcdFx0XFxcbitcdGNvbnN0IHNpemVfdCBfX29ial9zaXplID0gc3RydWN0X3NpemVfdChUWVBFLCBGQU0sIF9fY291bnQpO1x0XFxcbitcdFRZUEUgKl9fb2JqX3B0ciA9IERFVk1fQUxMT0MoREVWLCBfX29ial9zaXplLCBHRlApO1x0XHRcXFxuK1x0aWYgKF9fb2JqX3B0cilcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdF9fc2V0X2ZsZXhfY291bnRlcihfX29ial9wdHItXHUwMDNlRkFNLCBfX2NvdW50KTtcdFx0XFxcbitcdF9fb2JqX3B0cjtcdFx0XHRcdFx0XHRcdFxcXG4rfSlcbitcbisvKipcbisgKiBkZXZtX2ttYWxsb2NfZmxleCAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSBmbGV4aWJsZS1hcnJheSBzdHJ1Y3R1cmVcbisgKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXG4rICogQFZBUl9PUl9UWVBFOiBWYXJpYWJsZSBvciB0eXBlIHRvIGFsbG9jYXRlICh3aXRoIGl0cyBmbGV4aWJsZSBhcnJheSkuXG4rICogQEZBTTogVGhlIG5hbWUgb2YgdGhlIGZsZXhpYmxlIGFycmF5IG1lbWJlciBvZiB0aGUgc3RydWN0dXJlLlxuKyAqIEBDT1VOVDogSG93IG1hbnkgZmxleGlibGUgYXJyYXkgbWVtYmVyIGVsZW1lbnRzIHRvIGFsbG9jYXRlLlxuKyAqIEBHRlA6IE9wdGlvbmFsIEdGUCBmbGFncyAoZGVmYXVsdHMgdG8gJUdGUF9LRVJORUwpLlxuKyAqXG4rICogUmV0dXJuczogbmV3bHkgYWxsb2NhdGVkIHBvaW50ZXIgdG8gQFZBUl9PUl9UWVBFIG9uIHN1Y2Nlc3MsIG9yIE5VTEwgb25cbisgKiBmYWlsdXJlLiBJZiBARkFNIGhhcyBiZWVuIGFubm90YXRlZCB3aXRoIF9fY291bnRlZF9ieSgpLCBpdHMgY291bnRlciBpcyBzZXRcbisgKiB0byBAQ09VTlQuXG4rICovXG4rI2RlZmluZSBkZXZtX2ttYWxsb2NfZmxleChERVYsIFZBUl9PUl9UWVBFLCBGQU0sIENPVU5ULCAuLi4pIFxcXG4rXHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxuK1x0XHRcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgRkFNLCBDT1VOVClcbitcbisvKiBBbGwgZGV2bV9remFsbG9jIGFsaWFzZXMgZm9yIGRldm1fa21hbGxvY18ob2JqfG9ianN8ZmxleCkuICovXG4rI2RlZmluZSBkZXZtX2t6YWxsb2Nfb2JqKERFViwgUCwgLi4uKSBcXFxuK1x0X19kZXZtX2FsbG9jX29ianMoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxuKyNkZWZpbmUgZGV2bV9remFsbG9jX29ianMoREVWLCBQLCBDT1VOVCwgLi4uKSBcXFxuK1x0X19kZXZtX2FsbG9jX29ianMoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcbitcdFx0XHQgIHR5cGVvZihQKSwgQ09VTlQpXG4rI2RlZmluZSBkZXZtX2t6YWxsb2NfZmxleChERVYsIFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcbitcdF9fZGV2bV9hbGxvY19mbGV4KGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXG4rXHRcdFx0ICB0eXBlb2YoUCksIEZBTSwgQ09VTlQpXG4rXG4gc3RhdGljIGlubGluZSBfX3JlYWxsb2Nfc2l6ZSgzLCA0KSB2b2lkICogX19tdXN0X2NoZWNrXG4gZGV2bV9rcmVhbGxvY19hcnJheShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnAsIHNpemVfdCBuZXdfbiwgc2l6ZV90IG5ld19zaXplLCBnZnBfdCBmbGFncylcbiB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9nZnAuaCBiL2luY2x1ZGUvbGludXgvZ2ZwLmhcbmluZGV4IDg3MmJjNTNmMzJlYzguLmI2MmUyZmQ1M2NiNDEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2dmcC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2dmcC5oXG5AQCAtMTMsMTAgKzEzLDYgQEBcbiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7XG4gc3RydWN0IG1lbXBvbGljeTtcbiBcbi0vKiBIZWxwZXIgbWFjcm8gdG8gYXZvaWQgZ2ZwIGZsYWdzIGlmIHRoZXkgYXJlIHRoZSBkZWZhdWx0IG9uZSAqL1xuLSNkZWZpbmUgX19kZWZhdWx0X2dmcChhLGIsLi4uKSBiXG4tI2RlZmluZSBkZWZhdWx0X2dmcCguLi4pIF9fZGVmYXVsdF9nZnAoLCMjX19WQV9BUkdTX18sR0ZQX0tFUk5FTClcbi1cbiBzdGF0aWMgaW5saW5lIGJvb2wgZ2ZwZmxhZ3NfYWxsb3dfYmxvY2tpbmcoY29uc3QgZ2ZwX3QgZ2ZwX2ZsYWdzKVxuIHtcbiBcdHJldHVybiAhIShnZnBfZmxhZ3MgXHUwMDI2IF9fR0ZQX0RJUkVDVF9SRUNMQUlNKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaFxuaW5kZXggMTkwMTkxNDExMDA5Zi4uYjFjZDE0M2YzYzQyZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmhcbisrKyBiL2luY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmhcbkBAIC0zODIsNCArMzgyLDggQEAgZW51bSB7XG4gXHRcdFx0IF9fR0ZQX05PTUVNQUxMT0MgfCBfX0dGUF9OT1dBUk4pIFx1MDAyNiB+X19HRlBfUkVDTEFJTSlcbiAjZGVmaW5lIEdGUF9UUkFOU0hVR0VcdChHRlBfVFJBTlNIVUdFX0xJR0hUIHwgX19HRlBfRElSRUNUX1JFQ0xBSU0pXG4gXG4rLyogSGVscGVyIG1hY3JvIHRvIGF2b2lkIGdmcCBmbGFncyBpZiB0aGV5IGFyZSB0aGUgZGVmYXVsdCBvbmUgKi9cbisjZGVmaW5lIF9fZGVmYXVsdF9nZnAoYSxiLC4uLikgYlxuKyNkZWZpbmUgZGVmYXVsdF9nZnAoLi4uKSBfX2RlZmF1bHRfZ2ZwKCwjI19fVkFfQVJHU19fLEdGUF9LRVJORUwpXG4rXG4gI2VuZGlmIC8qIF9fTElOVVhfR0ZQX1RZUEVTX0ggKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI2OjU5LjgzNjY4MTg5OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjUzNzEwNjQwNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRoaXMgUGF0Y2g6IE1lbW9yeSBBbGxvY2F0aW9uIFx1MDAyNiBHRlAgQ2hhbmdlcyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBpdCdzIGZvY3VzZWQgb24gbWVtb3J5IGFsbG9jYXRpb24gd2l0aCBhIHBvdGVudGlhbCBtaW5vciBjaGFuZ2UgdG8gdGhlIEdGUCBmbGFncy4gSSBzZWUgaXQgdG91Y2hlcyBgZGV2cmVzLmhgLCBgZ2ZwLmhgLCBhbmQgYGdmcF90eXBlcy5oYC4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyBzb21lIHJlc3RydWN0dXJpbmcgYW5kIG5ldyB1dGlsaXRpZXMuXG5cblNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBpdCBpbnRyb2R1Y2VzIHNldmVyYWwgbmV3IG1hY3JvcyB3aXRoaW4gYGRldnJlcy5oYDogYF9fZGV2bV9hbGxvY19vYmpzYCwgYGRldm1fa21hbGxvY19vYmpgLCBgZGV2bV9rbWFsbG9jX29ianNgLCBgX19kZXZtX2FsbG9jX2ZsZXhgLCBgZGV2bV9rbWFsbG9jX2ZsZXhgLCBgZGV2bV9remFsbG9jX29iamAsIGBkZXZtX2t6YWxsb2Nfb2Jqc2AsIGFuZCBgZGV2bV9remFsbG9jX2ZsZXhgLiBUaGVzZSBuYW1lcyBzdHJvbmdseSBpbXBseSBtYW5hZ2VkIG1lbW9yeSBhbGxvY2F0aW9uIHdpdGhpbiB0aGUgZGV2aWNlIHJlc291cmNlIGZyYW1ld29yay4gSSBhc3N1bWUgdGhlc2UgYXJlIGNvbnZlbmllbmNlIG1hY3JvcyBmb3IgYWxsb2NhdGluZyB2YXJpb3VzIGRhdGEgc3RydWN0dXJlcyB3aXRoIGBkZXZyZXNgIG1hbmFnZW1lbnQgZm9yIGF1dG9tYXRpYyBmcmVlaW5nLiBTZWVtcyBlZmZpY2llbnQgdG8gcmVkdWNlIGJvaWxlciBwbGF0ZS5cblxuVGhlIHNoaWZ0IG9mIGBfX2RlZmF1bHRfZ2ZwYCBhbmQgYGRlZmF1bHRfZ2ZwYCBmcm9tIGBnZnAuaGAgdG8gYGdmcF90eXBlcy5oYCBpcyBsaWtlbHkgYSBtaW5vciByZWZhY3RvcmluZy4gVGhpcyBpcyBmaW5lLCBidXQgaXQgc2VlbXMgaW50ZXJlc3RpbmcgZm9yIHRoZW0gdG8gaW5jbHVkZSBkZWZhdWx0IEdGUCBmbGFncyBpbiBgZ2ZwX3R5cGVzLmhgLiBJJ2QgaGF2ZSB0byBsb29rIGF0IHRoZSBvdGhlciBjaGFuZ2VzIHRvIGJlIGNlcnRhaW4sIGJ1dCB0aGlzIG1vdmUgbWlnaHQgYmUgcHJlcGFyYXRvcnkuXG5cbk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGRldGVybWluZSB0aGUgc2NvcGUgb2YgdGhpcyB3b3JrLiBJIG5lZWQgdG8ga25vdyBpZiBuZXcgY2FsbGVycyBhcmUgaW50cm9kdWNlZCwgb3IgaWYgdGhpcyBpcyBqdXN0IHJlZmFjdG9yaW5nLiBJJ2xsIHJlYWNoIGZvciBgZ3JlcHBlcmAgYW5kIHNlZSBpZiBhbnkgY29kZSBpcyAqYWN0dWFsbHkqIGNhbGxpbmcgdGhlc2UgbmV3IG1hY3Jvcy4gVGhhdCB3aWxsIHRlbGwgbWUgaWYgdGhpcyBpcyBhIHB1cmVseSBpbnRlcm5hbCBjaGFuZ2Ugb3IgaWYgaXQgaGFzIGV4dGVybmFsIGltcGxpY2F0aW9ucy4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NTYsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDoyNzowNS4yMDc3NDk3NDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzNDU5MTU2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZtX2tbbXpdYWxsb2NfKG9ianxmbGV4KVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaD02MT1zdGF0aWMgaW5saW5lIHZvaWQgKmRldm1fa2NhbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC04Ni0vKipcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDo4NzogKiBkZXZtX2ttYWxsb2Nfb2JqIC0gRGV2aWNlLW1hbmFnZWQgYWxsb2NhdGlvbiBvZiBhIHNpbmdsZSB0eXBlZCBvYmplY3RcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC04OC0gKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC05Ny0gKi9cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDo5ODojZGVmaW5lIGRldm1fa21hbGxvY19vYmooREVWLCBWQVJfT1JfVFlQRSwgLi4uKVxcdFxcdFxcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC05OS1cXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTEwMi0vKipcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxMDM6ICogZGV2bV9rbWFsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGFuIGFycmF5IG9mIGEgdHlwZWQgb2JqZWN0XFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTA0LSAqIEBERVY6IERldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTExMS0gKi9cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxMTI6I2RlZmluZSBkZXZtX2ttYWxsb2Nfb2JqcyhERVYsIFZBUl9PUl9UWVBFLCBDT1VOVCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTEzLVxcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE0MS0vKipcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNDI6ICogZGV2bV9rbWFsbG9jX2ZsZXggLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGEgZmxleGlibGUtYXJyYXkgc3RydWN0dXJlXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTQzLSAqIEBERVY6IERldmljZSB0byBzY29wZSB0aGUgYWxsb2NhdGlvbiBsaWZldGltZSB0by5cXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1Mi0gKi9cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNTM6I2RlZmluZSBkZXZtX2ttYWxsb2NfZmxleChERVYsIFZBUl9PUl9UWVBFLCBGQU0sIENPVU5ULCAuLi4pIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNTQtXFx0X19kZXZtX2FsbG9jX2ZsZXgoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcXFxcbi0tXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTU3LS8qIEFsbCBkZXZtX2t6YWxsb2MgYWxpYXNlcyBmb3IgZGV2bV9rbWFsbG9jXyhvYmp8b2Jqc3xmbGV4KS4gKi9cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNTg6I2RlZmluZSBkZXZtX2t6YWxsb2Nfb2JqKERFViwgUCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTU5LVxcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgMSlcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNjA6I2RlZmluZSBkZXZtX2t6YWxsb2Nfb2JqcyhERVYsIFAsIENPVU5ULCAuLi4pIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjEtXFx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE2Mi1cXHRcXHRcXHQgIHR5cGVvZihQKSwgQ09VTlQpXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTYzOiNkZWZpbmUgZGV2bV9remFsbG9jX2ZsZXgoREVWLCBQLCBGQU0sIENPVU5ULCAuLi4pIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjQtXFx0X19kZXZtX2FsbG9jX2ZsZXgoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDoyNzowOS41NDIzNDg5NTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMjgxNDAwNDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBrZXJuZWwgbWVtb3J5IG1hbmFnZW1lbnQ6XG5cbioqTWVtb3J5IEFsbG9jYXRpb24gRGVlcCBEaXZlIC0gV2hlcmUgQXJlIE15IENhbGxlcnM/KipcblxuQWxyaWdodCwgSSdtIGRpdmluZyBpbnRvIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBsYW5kc2NhcGUgd2l0aGluIHRoZSBkZXZpY2UgZHJpdmVyIGNvbnRleHQsIHNwZWNpZmljYWxseSB0aGUgYGRldm1fa21hbGxvY2AgYW5kIGBkZXZtX2t6YWxsb2NgIHZhcmlhbnRzLiBNeSBpbml0aWFsIGFzc3VtcHRpb24sIGJhc2VkIG9uIHByZXZpb3VzIGNvZGUgcmV2aWV3cyBhbmQgZXhwZXJpZW5jZSwgaXMgdGhhdCB0aGVyZSBzaG91bGRuJ3QgYmUgYW55IGRpcmVjdCBjYWxsZXJzIG9mIHRoZSBvYmplY3QgYW5kIGZsZXggZm9ybXM6IGBkZXZtX2ttYWxsb2Nfb2JqYCwgYGRldm1fa21hbGxvY19vYmpzYCwgYGRldm1fa21hbGxvY19mbGV4YCwgYGRldm1fa3phbGxvY19vYmpgLCBgZGV2bV9remFsbG9jX29ianNgLCBhbmQgYGRldm1fa3phbGxvY19mbGV4YCBpbiB0aGUgY29kZSBiYXNlIHRoYXQgYXJlIGN1cnJlbnRseSBjaGVja2VkLiBUaGVzZSBhcmUgc3BlY2lhbGl6ZWQgYWxsb2NhdGlvbiBmdW5jdGlvbnMgdGhhdCBhcmUgdXN1YWxseSB1c2VkIGludGVybmFsbHkgZm9yIHNwZWNpZmljIHB1cnBvc2VzIHdpdGhpbiB0aGUgZHJpdmVyIGZyYW1ld29yay5cblxuQnV0IHdhaXQgYSBtaW51dGUsIEkgc2hvdWxkIGJlIHRob3JvdWdoLiBXaGF0IGFib3V0IHRoZSB1bmRlcmx5aW5nIGFsbG9jYXRpb24gZnVuY3Rpb25zIHRoZXkgYXJlIGJhc2VkIHVwb24/IExldCdzIG5vdCBsZWF2ZSBhbnkgc3RvbmUgdW50dXJuZWQgaGVyZS4gSSBhbHNvIG5lZWQgdG8gY2hlY2sgdGhlIG9jY3VycmVuY2VzIG9mIGFueXRoaW5nIHRoYXQgbWlnaHQgYmUgdXNpbmcgYF9fZGV2bV9hbGxvY19gIC0gYXMgdGhhdCBjYW4gZ2l2ZSBtZSBjbHVlcyBvbiBob3cgdGhvc2Ugb2JqZWN0LCBmbGV4LCBhbmQgb2JqZWN0IGZvcm1zIGFyZSB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzgzLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDA6Mjc6MTEuODIzNzUxNTI5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5Mzk1NDk3MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19kZXZtX2FsbG9jX1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jhc2UvZGV2cmVzLmM9MTMwNj1zdGF0aWMgdm9pZCBkZXZtX3BlcmNwdV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtMTMxNC0vKipcXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmM6MTMxNTogKiBfX2Rldm1fYWxsb2NfcGVyY3B1IC0gUmVzb3VyY2UtbWFuYWdlZCBhbGxvY19wZXJjcHVcXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtMTMxNi0gKiBAZGV2OiBEZXZpY2UgdG8gYWxsb2NhdGUgcGVyLWNwdSBtZW1vcnkgZm9yXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmMtMTMyNS0gKi9cXG5kcml2ZXJzL2Jhc2UvZGV2cmVzLmM6MTMyNjp2b2lkIF9fcGVyY3B1ICpfX2Rldm1fYWxsb2NfcGVyY3B1KHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsXFxuZHJpdmVycy9iYXNlL2RldnJlcy5jLTEzMjctXFx0XFx0c2l6ZV90IGFsaWduKVxcbi0tXFxuZHJpdmVycy9iYXNlL2RldnJlcy5jLTEzNDctfVxcbmRyaXZlcnMvYmFzZS9kZXZyZXMuYzoxMzQ4OkVYUE9SVF9TWU1CT0xfR1BMKF9fZGV2bV9hbGxvY19wZXJjcHUpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg9NjE9c3RhdGljIGlubGluZSB2b2lkICpkZXZtX2tjYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxcbi0tXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtNjYtLyoqXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6Njc6ICogX19kZXZtX2FsbG9jX29ianMgLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIG9iamVjdHMgb2YgYSBnaXZlbiB0eXBlXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtNjgtICogQERFVk1fQUxMT0M6IHdoaWNoIGRldmljZS1tYW5hZ2VkIHNpemUtYmFzZWQgYWxsb2NhdG9yIHRvIHVzZS5cXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTc5LSAqL1xcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjgwOiNkZWZpbmUgX19kZXZtX2FsbG9jX29ianMoREVWTV9BTExPQywgREVWLCBHRlAsIFRZUEUsIENPVU5UKVxcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC04MS0oe1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTk4LSNkZWZpbmUgZGV2bV9rbWFsbG9jX29iaihERVYsIFZBUl9PUl9UWVBFLCAuLi4pXFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjk5OlxcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksXFx0XFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTEwMC1cXHRcXHRcXHQgIHR5cGVvZihWQVJfT1JfVFlQRSksIDEpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTItI2RlZmluZSBkZXZtX2ttYWxsb2Nfb2JqcyhERVYsIFZBUl9PUl9UWVBFLCBDT1VOVCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTEzOlxcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTQtXFx0XFx0XFx0ICB0eXBlb2YoVkFSX09SX1RZUEUpLCBDT1VOVClcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTExNi0vKipcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxMTc6ICogX19kZXZtX2FsbG9jX2ZsZXggLSBEZXZpY2UtbWFuYWdlZCBhbGxvY2F0aW9uIG9mIGEgdHJhaWxpbmctZmxleC1hcnJheSBvYmplY3RcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTgtICogQERFVk1fQUxMT0M6IHdoaWNoIGRldmljZS1tYW5hZ2VkIGFsbG9jYXRvciB0byB1c2UuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMzAtICovXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTMxOiNkZWZpbmUgX19kZXZtX2FsbG9jX2ZsZXgoREVWTV9BTExPQywgREVWLCBHRlAsIFRZUEUsIEZBTSwgQ09VTlQpXFx0XFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTEzMi0oe1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1My0jZGVmaW5lIGRldm1fa21hbGxvY19mbGV4KERFViwgVkFSX09SX1RZUEUsIEZBTSwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE1NDpcXHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTU1LVxcdFxcdFxcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgRkFNLCBDT1VOVClcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1OC0jZGVmaW5lIGRldm1fa3phbGxvY19vYmooREVWLCBQLCAuLi4pIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNTk6XFx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE2MC0jZGVmaW5lIGRldm1fa3phbGxvY19vYmpzKERFViwgUCwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE2MTpcXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTYyLVxcdFxcdFxcdCAgdHlwZW9mKFApLCBDT1VOVClcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjMtI2RlZmluZSBkZXZtX2t6YWxsb2NfZmxleChERVYsIFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE2NDpcXHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTY1LVxcdFxcdFxcdCAgdHlwZW9mKFApLCBGQU0sIENPVU5UKVxcbi0tXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg9MTk2PWRldm1fa2FzcHJpbnRmKHN0cnVjdCBkZXZpY2UgKmRldiwgZ2ZwX3QgZ2ZwLCBjb25zdCBjaGFyICpmbXQsIC4uLik7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0yMDktI2RlZmluZSBkZXZtX2FsbG9jX3BlcmNwdShkZXYsIHR5cGUpICAgICAgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjIxMDpcXHQoKHR5cGVvZih0eXBlKSBfX3BlcmNwdSAqKV9fZGV2bV9hbGxvY19wZXJjcHUoKGRldiksIHNpemVvZih0eXBlKSwgX19hbGlnbm9mX18odHlwZSkpKVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTIxMS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoyMTI6dm9pZCBfX3BlcmNwdSAqX19kZXZtX2FsbG9jX3BlcmNwdShzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ24pO1xcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTIxMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDA6Mjc6MTMuNzYzMzA3NzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1NTEyNjAxMTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgbW92aW5nIGBkZWZhdWx0X2dmcGAgZnJvbSBgaW5jbHVkZS9saW51eC9nZnAuaGAgdG8gYGluY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmhgIGNhdXNlZCBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRvdWJsZS1jaGVjayBhbGwgdGhlIHBsYWNlcyB3aGVyZSBgZGVmYXVsdF9nZnBgIGlzIGFjdHVhbGx5ICp1c2VkKi4gVGltZSB0byBmaXJlIHVwIHRob3NlIHRvb2xzIGFuZCBzZWUgd2hlcmUgdGhlIGNhbGxzIGFyZSBhbmQgaWYgYW55dGhpbmcncyBicm9rZW4uIFRoaXMgaXMgYSBwb3RlbnRpYWxseSB0cmlja3kgY2hhbmdlLCBzbyBiZXR0ZXIgdG8gYmUgdGhvcm91Z2guIEknbGwgZm9jdXMgc3BlY2lmaWNhbGx5IG9uIHRoZSBjYWxsZXJzIG9mIGBkZWZhdWx0X2dmcGAgdG8gZW5zdXJlIG5vdGhpbmcncyBiZWVuIG1pc3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE5MywiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI3OjE5LjI3NTkxMTE1NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA1NjQ3NzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlZmF1bHRfZ2ZwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oPTYxPXN0YXRpYyBpbmxpbmUgdm9pZCAqZGV2bV9rY2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IG4sIHNpemVfdCBzaXplLCBnZnBfdCBmbGFncylcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTk4LSNkZWZpbmUgZGV2bV9rbWFsbG9jX29iaihERVYsIFZBUl9PUl9UWVBFLCAuLi4pXFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjk5OlxcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksXFx0XFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTEwMC1cXHRcXHRcXHQgIHR5cGVvZihWQVJfT1JfVFlQRSksIDEpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTItI2RlZmluZSBkZXZtX2ttYWxsb2Nfb2JqcyhERVYsIFZBUl9PUl9UWVBFLCBDT1VOVCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTEzOlxcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTQtXFx0XFx0XFx0ICB0eXBlb2YoVkFSX09SX1RZUEUpLCBDT1VOVClcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1My0jZGVmaW5lIGRldm1fa21hbGxvY19mbGV4KERFViwgVkFSX09SX1RZUEUsIEZBTSwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE1NDpcXHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTU1LVxcdFxcdFxcdCAgdHlwZW9mKFZBUl9PUl9UWVBFKSwgRkFNLCBDT1VOVClcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1OC0jZGVmaW5lIGRldm1fa3phbGxvY19vYmooREVWLCBQLCAuLi4pIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaDoxNTk6XFx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9remFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE2MC0jZGVmaW5lIGRldm1fa3phbGxvY19vYmpzKERFViwgUCwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE2MTpcXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTYyLVxcdFxcdFxcdCAgdHlwZW9mKFApLCBDT1VOVClcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjMtI2RlZmluZSBkZXZtX2t6YWxsb2NfZmxleChERVYsIFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE2NDpcXHRfX2Rldm1fYWxsb2NfZmxleChkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTY1LVxcdFxcdFxcdCAgdHlwZW9mKFApLCBGQU0sIENPVU5UKVxcbi0tXFxuaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaD0yNj1lbnVtIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmgtMzg1LS8qIEhlbHBlciBtYWNybyB0byBhdm9pZCBnZnAgZmxhZ3MgaWYgdGhleSBhcmUgdGhlIGRlZmF1bHQgb25lICovXFxuaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaDozODY6I2RlZmluZSBfX2RlZmF1bHRfZ2ZwKGEsYiwuLi4pIGJcXG5pbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oOjM4NzojZGVmaW5lIGRlZmF1bHRfZ2ZwKC4uLikgX19kZWZhdWx0X2dmcCgsIyNfX1ZBX0FSR1NfXyxHRlBfS0VSTkVMKVxcbmluY2x1ZGUvbGludXgvZ2ZwX3R5cGVzLmgtMzg4LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmg9MTA3Mz12b2lkICprbWFsbG9jX25vbG9jayhzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwX2ZsYWdzLCBpbnQgbm9kZSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTI0LSNkZWZpbmUga21hbGxvY19vYmooVkFSX09SX1RZUEUsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExMjU6XFx0X19hbGxvY19vYmpzKGttYWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFZBUl9PUl9UWVBFKSwgMSlcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTI2LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTEzNi0jZGVmaW5lIGttYWxsb2Nfb2JqcyhWQVJfT1JfVFlQRSwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExMzc6XFx0X19hbGxvY19vYmpzKGttYWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFZBUl9PUl9UWVBFKSwgQ09VTlQpXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTEzOC1cXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNTEtI2RlZmluZSBrbWFsbG9jX2ZsZXgoVkFSX09SX1RZUEUsIEZBTSwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNTI6XFx0X19hbGxvY19mbGV4KGttYWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFZBUl9PUl9UWVBFKSwgRkFNLCBDT1VOVClcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTUzLVxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE1NS0jZGVmaW5lIGt6YWxsb2Nfb2JqKFAsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNTY6XFx0X19hbGxvY19vYmpzKGt6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNTctI2RlZmluZSBremFsbG9jX29ianMoUCwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNTg6XFx0X19hbGxvY19vYmpzKGt6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCBDT1VOVClcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTU5LSNkZWZpbmUga3phbGxvY19mbGV4KFAsIEZBTSwgQ09VTlQsIC4uLilcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTE2MDpcXHRfX2FsbG9jX2ZsZXgoa3phbGxvYywgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIEZBTSwgQ09VTlQpXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE2MS1cXG4tLVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNjMtI2RlZmluZSBrdm1hbGxvY19vYmooUCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTE2NDpcXHRfX2FsbG9jX29ianMoa3ZtYWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCAxKVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNjUtI2RlZmluZSBrdm1hbGxvY19vYmpzKFAsIENPVU5ULCAuLi4pIFxcXFxcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDoxMTY2OlxcdF9fYWxsb2Nfb2Jqcyhrdm1hbGxvYywgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIENPVU5UKVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNjctI2RlZmluZSBrdm1hbGxvY19mbGV4KFAsIEZBTSwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNjg6XFx0X19hbGxvY19mbGV4KGt2bWFsbG9jLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgRkFNLCBDT1VOVClcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTY5LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE3MS0jZGVmaW5lIGt2emFsbG9jX29iaihQLCAuLi4pIFxcXFxcXG5pbmNsdWRlL2xpbnV4L3NsYWIuaDoxMTcyOlxcdF9fYWxsb2Nfb2JqcyhrdnphbGxvYywgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIDEpXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE3My0jZGVmaW5lIGt2emFsbG9jX29ianMoUCwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvc2xhYi5oOjExNzQ6XFx0X19hbGxvY19vYmpzKGt2emFsbG9jLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgQ09VTlQpXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTE3NS0jZGVmaW5lIGt2emFsbG9jX2ZsZXgoUCwgRkFNLCBDT1VOVCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTE3NjpcXHRfX2FsbG9jX2ZsZXgoa3Z6YWxsb2MsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSwgdHlwZW9mKFApLCBGQU0sIENPVU5UKVxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExNzctXFxuLS1cXG50b29scy9pbmNsdWRlL2xpbnV4L2dmcC5oLTgtLyogSGVscGVyIG1hY3JvIHRvIGF2b2lkIGdmcCBmbGFncyBpZiB0aGV5IGFyZSB0aGUgZGVmYXVsdCBvbmUgKi9cXG50b29scy9pbmNsdWRlL2xpbnV4L2dmcC5oOjk6I2RlZmluZSBfX2RlZmF1bHRfZ2ZwKGEsLi4uKSBhXFxudG9vbHMvaW5jbHVkZS9saW51eC9nZnAuaDoxMDojZGVmaW5lIGRlZmF1bHRfZ2ZwKC4uLikgX19kZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyBfX1ZBX09QVF9fKCwpIEdGUF9LRVJORUwpXFxudG9vbHMvaW5jbHVkZS9saW51eC9nZnAuaC0xMS1cXG4tLVxcbnRvb2xzL2luY2x1ZGUvbGludXgvc2xhYi5oPTIwMD1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBrbWVtX2NhY2hlX3NoZWFmX3NpemUoc3RydWN0IHNsYWJfc2hlYWYgKnNoZWFmKVxcbi0tXFxudG9vbHMvaW5jbHVkZS9saW51eC9zbGFiLmgtMjExLSNkZWZpbmUga3phbGxvY19vYmooUCwgLi4uKSBcXFxcXFxudG9vbHMvaW5jbHVkZS9saW51eC9zbGFiLmg6MjEyOlxcdF9fYWxsb2Nfb2JqcyhremFsbG9jLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIHR5cGVvZihQKSwgMSlcXG50b29scy9pbmNsdWRlL2xpbnV4L3NsYWIuaC0yMTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI3OjIxLjA4MTU3MDgwOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI3ODc2MjI0MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBkZWZhdWx0X2dmcGAgUmVsb2NhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYGRlZmF1bHRfZ2ZwYCBoYXMgcG9wcGVkIHVwIGluIGBpbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaGAgbm93LCB3aGVyZSBpdCB3YXNuJ3QgYmVmb3JlLiBUaGF0J3MgaW50ZXJlc3RpbmcuIFByZXZpb3VzbHksIGl0IHdhcyBvbmx5IGJlaW5nIHVzZWQgd2l0aGluIGBpbmNsdWRlL2xpbnV4L3NsYWIuaGAuIFRoZSBjb3JlIHRlYW0gbXVzdCBiZSBtYWtpbmcgc29tZSBhZGp1c3RtZW50cyBoZXJlLiBUaGUgY29tbWl0IG1lc3NhZ2UgaW5kaWNhdGVzIGEgbW92ZSBmcm9tIGBpbmNsdWRlL2xpbnV4L2dmcC5oYCB0byBgaW5jbHVkZS9saW51eC9nZnBfdHlwZXMuaGAsIHdoaWNoIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGEgY2hhbmdlIGluIGRlcGVuZGVuY2llcy4gVGhlIHJhdGlvbmFsZSBpcyB0aGF0IGBkZXZyZXMuaGAgZWl0aGVyIGluY2x1ZGVzIGBnZnBfdHlwZXMuaGAgZGlyZWN0bHksIG9yIHNpbXBseSBuZWVkcyBgZGVmYXVsdF9nZnBgIHdpdGhvdXQgcHVsbGluZyBpbiB0aGUgZW50aXJlIGBnZnAuaGAgaGVhZGVyLiBUaGlzIGlzIHRoZSBtb3JlIGxpa2VseSBzY2VuYXJpbywgc28gSSBzaG91bGQgc2VlIGlmIGBkZXZyZXMuaGAgaGFzIGEgbmV3IGluY2x1c2lvbi4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGluY2x1ZGUgZGlyZWN0aXZlcyB3aXRoaW4gYGRldnJlcy5oYCB0byB2ZXJpZnkgdGhpcyB0aGVvcnkuIEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgbmV3IGluY2x1ZGVzLCBhbmQgbWFrZSBzdXJlIHRoYXQgdGhpcyBrZWVwcyB1cCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhlIGtlcm5lbC4gVGhpcyBpcyBwcm9iYWJseSB0byByZWR1Y2Ugb3ZlcmFsbCBkZXBlbmRlbmN5IHNpemUgYW5kIGltcHJvdmUgYnVpbGQgdGltZXMsIGEgZ29vZCBtb3ZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDQwNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDoyNzoyMy44NjkxOTU4OTZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg1MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbiAgIDI6XFx0I2lmbmRlZiBfREVWSUNFX0RFVlJFU19IX1xcbiAgIDM6XFx0I2RlZmluZSBfREVWSUNFX0RFVlJFU19IX1xcbiAgIDQ6XFx0XFxuICAgNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJyLmhcXHUwMDNlXFxuICAgNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZ2ZwX3R5cGVzLmhcXHUwMDNlXFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbnVtYS5oXFx1MDAzZVxcbiAgIDg6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L292ZXJmbG93LmhcXHUwMDNlXFxuICAgOTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc3RkYXJnLmhcXHUwMDNlXFxuICAxMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdHlwZXMuaFxcdTAwM2VcXG4gIDExOlxcdCNpbmNsdWRlIFxcdTAwM2Nhc20vYnVnLmhcXHUwMDNlXFxuICAxMjpcXHQjaW5jbHVkZSBcXHUwMDNjYXNtL3BlcmNwdS5oXFx1MDAzZVxcbiAgMTM6XFx0XFxuICAxNDpcXHRzdHJ1Y3QgZGV2aWNlO1xcbiAgMTU6XFx0c3RydWN0IGRldmljZV9ub2RlO1xcbiAgMTY6XFx0c3RydWN0IHJlc291cmNlO1xcbiAgMTc6XFx0XFxuICAxODpcXHQvKiBkZXZpY2UgcmVzb3VyY2UgbWFuYWdlbWVudCAqL1xcbiAgMTk6XFx0dHlwZWRlZiB2b2lkICgqZHJfcmVsZWFzZV90KShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnJlcyk7XFxuICAyMDpcXHR0eXBlZGVmIGludCAoKmRyX21hdGNoX3QpKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzLCB2b2lkICptYXRjaF9kYXRhKTtcXG4gIDIxOlxcdFxcbiAgMjI6XFx0dm9pZCAqIF9fbWFsbG9jXFxuICAyMzpcXHRfX2RldnJlc19hbGxvY19ub2RlKGRyX3JlbGVhc2VfdCByZWxlYXNlLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwLCBpbnQgbmlkLCBjb25zdCBjaGFyICpuYW1lKTtcXG4gIDI0OlxcdCNkZWZpbmUgZGV2cmVzX2FsbG9jKHJlbGVhc2UsIHNpemUsIGdmcCkgXFxcXFxcbiAgMjU6XFx0XFx0X19kZXZyZXNfYWxsb2Nfbm9kZShyZWxlYXNlLCBzaXplLCBnZnAsIE5VTUFfTk9fTk9ERSwgI3JlbGVhc2UpXFxuICAyNjpcXHQjZGVmaW5lIGRldnJlc19hbGxvY19ub2RlKHJlbGVhc2UsIHNpemUsIGdmcCwgbmlkKSBcXFxcXFxuICAyNzpcXHRcXHRfX2RldnJlc19hbGxvY19ub2RlKHJlbGVhc2UsIHNpemUsIGdmcCwgbmlkLCAjcmVsZWFzZSlcXG4gIDI4OlxcdFxcbiAgMjk6XFx0dm9pZCBkZXZyZXNfZnJlZSh2b2lkICpyZXMpO1xcbiAgMzA6XFx0dm9pZCBkZXZyZXNfYWRkKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzKTtcXG4gIDMxOlxcdHZvaWQgKmRldnJlc19maW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgZHJfcmVsZWFzZV90IHJlbGVhc2UsIGRyX21hdGNoX3QgbWF0Y2gsIHZvaWQgKm1hdGNoX2RhdGEpO1xcbiAgMzI6XFx0dm9pZCAqZGV2cmVzX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKm5ld19yZXMsIGRyX21hdGNoX3QgbWF0Y2gsIHZvaWQgKm1hdGNoX2RhdGEpO1xcbiAgMzM6XFx0dm9pZCAqZGV2cmVzX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGRyX3JlbGVhc2VfdCByZWxlYXNlLCBkcl9tYXRjaF90IG1hdGNoLCB2b2lkICptYXRjaF9kYXRhKTtcXG4gIDM0OlxcdGludCBkZXZyZXNfZGVzdHJveShzdHJ1Y3QgZGV2aWNlICpkZXYsIGRyX3JlbGVhc2VfdCByZWxlYXNlLCBkcl9tYXRjaF90IG1hdGNoLCB2b2lkICptYXRjaF9kYXRhKTtcXG4gIDM1OlxcdGludCBkZXZyZXNfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGRyX3JlbGVhc2VfdCByZWxlYXNlLCBkcl9tYXRjaF90IG1hdGNoLCB2b2lkICptYXRjaF9kYXRhKTtcXG4gIDM2OlxcdFxcbiAgMzc6XFx0LyogZGV2cmVzIGdyb3VwICovXFxuICAzODpcXHR2b2lkICogX19tdXN0X2NoZWNrIGRldnJlc19vcGVuX2dyb3VwKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqaWQsIGdmcF90IGdmcCk7XFxuICAzOTpcXHR2b2lkIGRldnJlc19jbG9zZV9ncm91cChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmlkKTtcXG4gIDQwOlxcdHZvaWQgZGV2cmVzX3JlbW92ZV9ncm91cChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmlkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDA6Mjc6MjMuODY5MjgwNzg1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjM2MjQ1NzMwNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ2hlY2tpbmcgTWVtb3J5IEFsbG9jYXRpb24gRmxhZ3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBoZWFkZXIgZmlsZXMsIHNwZWNpZmljYWxseSBgZGV2cmVzLmhgLiBBbmQgSSBzZWUgdGhhdCBpdCBwdWxscyBpbiBgXHUwMDNjbGludXgvZ2ZwX3R5cGVzLmhcdTAwM2VgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGJ1dCBub3QgZW50aXJlbHkgc3VycHJpc2luZywgZ2l2ZW4gdGhhdCBkZXZpY2UgcmVzb3VyY2VzIG9mdGVuIG5lZWQgdG8gYWxsb2NhdGUgbWVtb3J5LiBOb3csIHRvIG1ha2Ugc3VyZSBJIGhhdmUgYSBnb29kIGdyYXNwIG9uIHRoaXMgbWVtb3J5IHNpdHVhdGlvbiwgSSdsbCBnbyBvbmUgc3RlcCBmdXJ0aGVyIGFuZCBkb3VibGUtY2hlY2sgaG93IGBcdTAwM2NsaW51eC9nZnAuaFx1MDAzZWAgaGFuZGxlcyB0aGluZ3MuIEkga25vdyBpdCAqc2hvdWxkKiBhbHNvIGluY2x1ZGUgYFx1MDAzY2xpbnV4L2dmcF90eXBlcy5oXHUwMDNlYCwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgYWxsb2NhdGlvbiBmbGFncyBhbmQgdGhlaXIgY29tbW9uIHVzZSB0aHJvdWdob3V0IHRoZSBrZXJuZWwuIEknbSBqdXN0IHZlcmlmeWluZyB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgc25lYWt5IG9taXNzaW9ucyBvciB3ZWlyZCBpbmNsdWRlIHBhdGggaXNzdWVzLiBHb3R0YSBtYWtlIHN1cmUgZXZlcnl0aGluZydzIGNvbnNpc3RlbnQgYW5kIHRoYXQgdGhlIGRlZmluaXRpb25zIGFyZSBhY2Nlc3NpYmxlIHdoZXJlIHRoZXkgbmVlZCB0byBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1OTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI3OjI3LjQ5Mzg1NzE3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwMDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbGludXgvZ2ZwLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbiAgIDI6XFx0I2lmbmRlZiBfX0xJTlVYX0dGUF9IXFxuICAgMzpcXHQjZGVmaW5lIF9fTElOVVhfR0ZQX0hcXG4gICA0OlxcdFxcbiAgIDU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dmcF90eXBlcy5oXFx1MDAzZVxcbiAgIDY6XFx0XFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW16b25lLmhcXHUwMDNlXFxuICAgODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdG9wb2xvZ3kuaFxcdTAwM2VcXG4gICA5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9hbGxvY190YWcuaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9jbGVhbnVwLmhcXHUwMDNlXFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc2NoZWQuaFxcdTAwM2VcXG4gIDEyOlxcdFxcbiAgMTM6XFx0c3RydWN0IHZtX2FyZWFfc3RydWN0O1xcbiAgMTQ6XFx0c3RydWN0IG1lbXBvbGljeTtcXG4gIDE1OlxcdFxcbiAgMTY6XFx0c3RhdGljIGlubGluZSBib29sIGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGNvbnN0IGdmcF90IGdmcF9mbGFncylcXG4gIDE3OlxcdHtcXG4gIDE4OlxcdFxcdHJldHVybiAhIShnZnBfZmxhZ3MgXFx1MDAyNiBfX0dGUF9ESVJFQ1RfUkVDTEFJTSk7XFxuICAxOTpcXHR9XFxuICAyMDpcXHRcXG4gIDIxOlxcdHN0YXRpYyBpbmxpbmUgYm9vbCBnZnBmbGFnc19hbGxvd19zcGlubmluZyhjb25zdCBnZnBfdCBnZnBfZmxhZ3MpXFxuICAyMjpcXHR7XFxuICAyMzpcXHRcXHQvKlxcbiAgMjQ6XFx0XFx0ICogIV9fR0ZQX0RJUkVDVF9SRUNMQUlNIC1cXHUwMDNlIGRpcmVjdCBjbGFpbSBpcyBub3QgYWxsb3dlZC5cXG4gIDI1OlxcdFxcdCAqICFfX0dGUF9LU1dBUERfUkVDTEFJTSAtXFx1MDAzZSBpdCdzIG5vdCBzYWZlIHRvIHdha2UgdXAga3N3YXBkLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDoyNzoyNy40OTM5NDk0NDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTgyNDY5NzQ4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJpYWdlIEFzc2Vzc21lbnQ6IFdvcnRoRnV6emluZyBFdmFsdWF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGNvcmUgcHJpbmNpcGxlOiByZWFjaGFiaWxpdHkuIENhbiB0aGlzIGNvZGUgKmFjdHVhbGx5KiBleGVjdXRlIGluIGEgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudD8gVGhhdCdzIHRoZSBwcmltYXJ5IGdhdGUuIEknbSBzZWVpbmcgY2hhbmdlcyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBkZXZpY2UgcmVzb3VyY2UgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGdmcC5oYCwgYGdmcF90eXBlcy5oYCwgYW5kIGBkZXZyZXMuaGAgaGVhZGVyIGZpbGVzLlxuXG5Jbml0aWFsbHksIEkgc2VlIGBkZWZhdWx0X2dmcGAgaGFzIGJlZW4gbW92ZWQgZnJvbSBgZ2ZwLmhgIHRvIGBnZnBfdHlwZXMuaGAuIFNpbmNlIGBnZnAuaGAgaW5jbHVkZXMgYGdmcF90eXBlcy5oYCwgdGhpcyBpcyBhIHJlbG9jYXRpb24sIG5vdCBhIG1vZGlmaWNhdGlvbiBvZiB0aGUgZGVmaW5pdGlvbi4gQW55IGNvZGUgdGhhdCBpbmNsdWRlZCBgZ2ZwLmhgICphbHJlYWR5KiBoYWQgYWNjZXNzIHRvIGBkZWZhdWx0X2dmcGAuIEl0IGlzIG5vdyBzaW1wbHkgb2J0YWluZWQgdmlhIGEgZGlmZmVyZW50IGluY2x1ZGUuIEl0IHNlZW1zIGxpa2UgYSByZWZhY3RvciB0byBpbXByb3ZlIGhlYWRlciBmaWxlIHN0cnVjdHVyZSwgYW5kIHNob3VsZCBub3QgYWZmZWN0IGNvbXBpbGVkIGNvZGUuXG5cbk5leHQsIHRoZSBgZGV2cmVzLmhgIGNoYW5nZXMuIEhlcmUsIHRoZXJlIGFyZSAqbmV3KiBtYWNyb3MgYWRkZWQgcmVsYXRlZCB0byBtYW5hZ2VkIG1lbW9yeSBhbGxvY2F0aW9uOiBgZGV2bV9rbWFsbG9jX29iamAsIGBkZXZtX2ttYWxsb2Nfb2Jqc2AsIGBkZXZtX2ttYWxsb2NfZmxleGAsIGBkZXZtX2t6YWxsb2Nfb2JqYCwgZXRjLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBhcmUgdGhlc2UgbWFjcm9zICphY3R1YWxseSB1c2VkKiBhbnl3aGVyZSBpbiB0aGUga2VybmVsPyBJIGluaXRpYWxseSB1c2VkIGEgYGdyZXBwZXJgIHN0eWxlIHNlYXJjaCBhbmQgZm91bmQgKm5vdGhpbmcqIGluIHRoZSBjb2RlIGJhc2UgdGhhdCB1c2VzIHRoZXNlIG1hY3JvcyEgSXQgc2VlbXMgdGhlIGFkZGVkIGNvZGUgaXMgZW50aXJlbHkgdW51c2VkLlxuXG5HaXZlbiB0aGUgdHJpYWdlIHBoaWxvc29waHksIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGlzIG5vdCBhbiBhY2NpZGVudGFsIG92ZXJzaWdodCAobWF5YmUgZnJvbSBhbiBvbGRlciBjb21taXQgb3IgYSBkaWZmZXJlbnQgY29kZSBiYXNlKS4gSSB3aWxsIGNoZWNrIGV2ZXJ5IHNpbmdsZSBzeW1ib2wgdG8gYmUgMTAwJSBzdXJlOlxuLSBgX19kZXZtX2FsbG9jX29ianNgXG4tIGBkZXZtX2ttYWxsb2Nfb2JqYFxuLSBgZGV2bV9rbWFsbG9jX29ianNgXG4tIGBfX2Rldm1fYWxsb2NfZmxleGBcbi0gYGRldm1fa21hbGxvY19mbGV4YFxuLSBgZGV2bV9remFsbG9jX29iamBcbi0gYGRldm1fa3phbGxvY19vYmpzYFxuLSBgZGV2bV9remFsbG9jX2ZsZXhgXG5cbklmIHRob3NlIG1hY3JvcyBhcmUgZGVmaW5lZCBidXQgbmV2ZXIgaW52b2tlZCwgSSBjb25zaWRlciB0aGUgY2hhbmdlcyB0byBiZSBlcXVpdmFsZW50IHRvIGRlYWQgY29kZS4gSWYgdGhpcyBjb2RlIGlzIG5vdCByZWFjaGFibGUsIHRoZW4gaXQgZG9lc24ndCBuZWVkIHRvIGJlIGZ1enplZC4gTXkgZGVjaXNpb24gaGluZ2VzIG9uIHdoZXRoZXIgdGhlc2UgbWFjcm9zIGhhdmUgY2FsbGVycyBvciBub3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjA2LCJPdXRwdXRUb2tlbnMiOjYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI3OjQ1Ljc0MDkyODIwOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5NzU4NzYwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZtX2ttYWxsb2Nfb2JqfGRldm1fa21hbGxvY19vYmpzfGRldm1fa21hbGxvY19mbGV4fGRldm1fa3phbGxvY19vYmp8ZGV2bV9remFsbG9jX29ianN8ZGV2bV9remFsbG9jX2ZsZXhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg9NjE9c3RhdGljIGlubGluZSB2b2lkICpkZXZtX2tjYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKVxcbi0tXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtODYtLyoqXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6ODc6ICogZGV2bV9rbWFsbG9jX29iaiAtIERldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gb2YgYSBzaW5nbGUgdHlwZWQgb2JqZWN0XFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtODgtICogQERFVjogRGV2aWNlIHRvIHNjb3BlIHRoZSBhbGxvY2F0aW9uIGxpZmV0aW1lIHRvLlxcbi0tXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtOTctICovXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6OTg6I2RlZmluZSBkZXZtX2ttYWxsb2Nfb2JqKERFViwgVkFSX09SX1RZUEUsIC4uLilcXHRcXHRcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtOTktXFx0X19kZXZtX2FsbG9jX29ianMoZGV2bV9rbWFsbG9jLCBERVYsIGRlZmF1bHRfZ2ZwKF9fVkFfQVJHU19fKSxcXHRcXFxcXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMDItLyoqXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTAzOiAqIGRldm1fa21hbGxvY19vYmpzIC0gRGV2aWNlLW1hbmFnZWQgYWxsb2NhdGlvbiBvZiBhbiBhcnJheSBvZiBhIHR5cGVkIG9iamVjdFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTEwNC0gKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xMTEtICovXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTEyOiNkZWZpbmUgZGV2bV9rbWFsbG9jX29ianMoREVWLCBWQVJfT1JfVFlQRSwgQ09VTlQsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTExMy1cXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2ttYWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCBcXFxcXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNDEtLyoqXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTQyOiAqIGRldm1fa21hbGxvY19mbGV4IC0gRGV2aWNlLW1hbmFnZWQgYWxsb2NhdGlvbiBvZiBhIGZsZXhpYmxlLWFycmF5IHN0cnVjdHVyZVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE0My0gKiBAREVWOiBEZXZpY2UgdG8gc2NvcGUgdGhlIGFsbG9jYXRpb24gbGlmZXRpbWUgdG8uXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNTItICovXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTUzOiNkZWZpbmUgZGV2bV9rbWFsbG9jX2ZsZXgoREVWLCBWQVJfT1JfVFlQRSwgRkFNLCBDT1VOVCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTU0LVxcdF9fZGV2bV9hbGxvY19mbGV4KGRldm1fa21hbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1Ny0vKiBBbGwgZGV2bV9remFsbG9jIGFsaWFzZXMgZm9yIGRldm1fa21hbGxvY18ob2JqfG9ianN8ZmxleCkuICovXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTU4OiNkZWZpbmUgZGV2bV9remFsbG9jX29iaihERVYsIFAsIC4uLikgXFxcXFxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oLTE1OS1cXHRfX2Rldm1fYWxsb2Nfb2JqcyhkZXZtX2t6YWxsb2MsIERFViwgZGVmYXVsdF9nZnAoX19WQV9BUkdTX18pLCB0eXBlb2YoUCksIDEpXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmg6MTYwOiNkZWZpbmUgZGV2bV9remFsbG9jX29ianMoREVWLCBQLCBDT1VOVCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTYxLVxcdF9fZGV2bV9hbGxvY19vYmpzKGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2RldmljZS9kZXZyZXMuaC0xNjItXFx0XFx0XFx0ICB0eXBlb2YoUCksIENPVU5UKVxcbmluY2x1ZGUvbGludXgvZGV2aWNlL2RldnJlcy5oOjE2MzojZGVmaW5lIGRldm1fa3phbGxvY19mbGV4KERFViwgUCwgRkFNLCBDT1VOVCwgLi4uKSBcXFxcXFxuaW5jbHVkZS9saW51eC9kZXZpY2UvZGV2cmVzLmgtMTY0LVxcdF9fZGV2bV9hbGxvY19mbGV4KGRldm1fa3phbGxvYywgREVWLCBkZWZhdWx0X2dmcChfX1ZBX0FSR1NfXyksIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDA6Mjc6NDguMTM4NTIxNzkxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE1NjQyOTIyNzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBLZXJuZWwgUGF0Y2ggZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ3ZlIGdvdC4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNldmVyYWwgbmV3IGRldmljZS1tYW5hZ2VkIGFsbG9jYXRpb24gaGVscGVyIG1hY3JvczogYGRldm1fa21hbGxvY19vYmpgLCBgZGV2bV9remFsbG9jX29iamAsIGFuZCBhIGZldyBvdGhlcnMsIGJ1dCBjcml0aWNhbGx5LCBub25lIG9mIHRoZXNlIGFyZSBhY3R1YWxseSB1c2VkICphbnl3aGVyZSogaW4gdGhlIGN1cnJlbnQga2VybmVsIHNvdXJjZS4gU2luY2UgdGhleSdyZSBtYWNyb3MsIHdoaWNoIGFyZSBwcmVwcm9jZXNzb3IgZGVmaW5pdGlvbnMsIGlmIHRoZXkgYXJlbid0IGludm9rZWQgaW4gYW55IEMgZmlsZSBvciBoZWFkZXIsIHRoZSBjb21waWxlciBkb2Vzbid0IGdlbmVyYXRlIGFueSBtYWNoaW5lIGNvZGUgZm9yIHRoZW0uIFNvLCBpbiB0ZXJtcyBvZiBleGVjdXRhYmxlIGNvZGUsIHRoaXMgcGF0Y2ggbGl0ZXJhbGx5IGRvZXMgbm90aGluZy4gWmVyby4gSXQgYWxzbyBtb3ZlcyB0aGUgZXhpc3RpbmcgYGRlZmF1bHRfZ2ZwYCBtYWNybyBmcm9tIGBsaW51eC9nZnAuaGAgdG8gYGxpbnV4L2dmcF90eXBlcy5oYCwgYnV0IHdpdGggbm8gY2hhbmdlIHRvIHRoZSBtYWNybydzICpkZWZpbml0aW9uKi4gSSd2ZSB2ZXJpZmllZCB0aGlzIHdpdGggYSBkaWZmLiBgZ2ZwLmhgICppbmNsdWRlcyogYGdmcF90eXBlcy5oYCBzbyB0aGUgZGVmaW5pdGlvbiBpcyBzdGlsbCBhdmFpbGFibGUgaW4gZXhpc3RpbmcgY2FsbC1zaXRlcyBhbmQgZXhwYW5kaW5nIHRvIHRoZSBzYW1lIHRva2Vucy5cblxuTm93LCBsZXQncyBjYXJlZnVsbHkgZXZhbHVhdGUgdGhlIFwibmVnYXRpdmUgY3JpdGVyaWFcIiBmb3IgZGV0ZXJtaW5pbmcgZnV6emluZyBlbGlnaWJpbGl0eS4gSXQncyBhIGJpbmFyeSBkZWNpc2lvbjogc2hvdWxkIHdlIGZ1enosIG9yIG5vdD8gVGhlIHJlbGV2YW50IHNlY3Rpb24gc3BlY2lmaWNhbGx5IG1lbnRpb25zIFwiTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlcyxcIiBhbmQgdGhhdCBpbmNsdWRlcyBcIlVudXNlZCBtYWNybyBkZWZpbml0aW9ucy5cIiBVbnVzZWQgbWFjcm9zICpkb24ndCogcHJvZHVjZSBhbnkgZXhlY3V0YWJsZSBjb2RlLCBhbmQgd2UndmUgZXN0YWJsaXNoZWQgdGhhdCB0aGVyZSBhcmUgbm8gbWFjcm8gY2FsbHMuIEFsc28sIFNlY3Rpb24gNCB0YWxrcyBhYm91dCBpbmxpbmVkIGZ1bmN0aW9ucyBhbmQgdGhlIG5lZWQgdG8gZmluZCBjYWxsZXJzIGlmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLiBCdXQgaGVyZSwgdGhlcmUgYXJlbid0IGV2ZW4gc3RhdGljIGlubGluZSBmdW5jdGlvbnMsIGFuZCB0aGVyZSBhcmUgTk8gY2FsbGVycyBpbiBhbnkgLmMgZmlsZSEgVGhlc2UgYXJlIHVudXNlZCBwcmVwcm9jZXNzb3IgbWFjcm9zIChoZWxwZXIgQVBJIGludHJvZHVjZWQgd2l0aG91dCBjYWxsZXJzIHlldCkuIEJlY2F1c2Ugbm8gY2FsbGVyIGV4aXN0cywgdGhlcmUgaXMgbm8gc3ltYm9sLCBubyBjb2RlIGluIHZtbGludXgsIGFuZCBubyBwYXRoIHRoYXQgZXhlY3V0ZXMgYW55IG9mIHRoZSBtb2RpZmllZCBvciBhZGRlZCBjb2RlLlxuXG5UaGUgY3JpdGVyaWEgc3RhdGU6IFwiUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6IEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLi4uXCIgU28sIGJlY2F1c2UgdGhlc2UgbWFjcm9zIGFyZSBuZXZlciBpbnN0YW50aWF0ZWQgYW55d2hlcmUsIHRoZXkgYXJlIGNvbXBsZXRlbHkgbm9uLWV4ZWN1dGFibGUgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cblxuTGV0J3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2s6IHRoZSBkaWZmIHNob3dlZCB0aGUgYWRkaXRpb25zIHRvIGBkZXZyZXMuaGAsIHRoZSByZW1vdmFscyBmcm9tIGBnZnAuaGAsIGFuZCB0aGUgYWRkaXRpb25zIHRvIGBnZnBfdHlwZXMuaGAuIEJ1dCB0aGUgZGVmaW5pdGlvbiBvZiBgZGVmYXVsdF9nZnBgIGl0c2VsZiBpcyBpZGVudGljYWwgaW4gYm90aCBsb2NhdGlvbnMsIG1lYW5pbmcgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuXG5cbkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgbmV3IGRldnJlcyBhbGxvY2F0aW9uIGhlbHBlciBtYWNyb3MgdGhhdCBhcmVuJ3QgY2FsbGVkIGFueXdoZXJlICp5ZXQqIGFuZCBtb3ZpbmcgdGhlIGBkZWZhdWx0X2dmcGAgaGVscGVyIG1hY3JvIHdpdGggbm8gZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IGRvZXNuJ3QgYWRkIG9yIGFsdGVyIGFueSBjb21waWxlZCBleGVjdXRhYmxlIGNvZGUuIFRoZXJlZm9yZTpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBmYWxzZVxuKiAgIGBFbmFibGVDb25maWdzYDogXFxbIF1cbiogICBgRm9jdXNTeW1ib2xzYDogXFxbIF1cbiogICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBuZXcgZGV2cmVzIGFsbG9jYXRpb24gbWFjcm9zIChgZGV2bV9rbWFsbG9jX29iamAsIGBkZXZtX2t6YWxsb2Nfb2JqYCwgZXRjLikgd2hpY2ggY3VycmVudGx5IGhhdmUgbm8gY2FsbGVycyBpbiB0aGUga2VybmVsIGNvZGViYXNlLCBhbmQgbW92ZXMgdGhlIGRlZmluaXRpb24gb2YgYGRlZmF1bHRfZ2ZwYCBmcm9tIGBsaW51eC9nZnAuaGAgdG8gYGxpbnV4L2dmcF90eXBlcy5oYCB3aXRoIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLiBObyBjb21waWxlZCBleGVjdXRhYmxlIGNvZGUgaXMgYWRkZWQgb3IgbW9kaWZpZWQuXG5cbkFsbCBjbGVhci4gTGV0J3Mgc2VuZCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDkwNSwiT3V0cHV0VG9rZW5zIjoxNDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjI4OjAzLjc4MTQ0NzQwMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgaW50cm9kdWNlcyBuZXcgZGV2cmVzIGFsbG9jYXRpb24gaGVscGVyIG1hY3JvcyAoZGV2bV9rbWFsbG9jX29iaiwgZGV2bV9remFsbG9jX29iaiwgZGV2bV9rbWFsbG9jX2ZsZXgsIGV0Yy4pIHdoaWNoIGN1cnJlbnRseSBoYXZlIG5vIGNhbGxlcnMgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCBjb2RlYmFzZSwgYW5kIG1vdmVzIHRoZSBtYWNybyBkZWZpbml0aW9uIG9mIGRlZmF1bHRfZ2ZwIGZyb20gbGludXgvZ2ZwLmggdG8gbGludXgvZ2ZwX3R5cGVzLmggd2l0aCBubyBjaGFuZ2UgaW4gbG9naWMuIEJlY2F1c2Ugbm8gY2FsbGVycyBleGlzdCBmb3IgdGhlIG5ldyBtYWNyb3MsIG5vIGV4ZWN1dGFibGUga2VybmVsIGNvZGUgaXMgYWRkZWQgb3IgYWx0ZXJlZCwgbWFraW5nIHRoZSBjaGFuZ2VzIG5vbi1leGVjdXRhYmxlIGFuZCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGludHJvZHVjZXMgbmV3IGRldnJlcyBhbGxvY2F0aW9uIGhlbHBlciBtYWNyb3MgKGRldm1fa21hbGxvY19vYmosIGRldm1fa3phbGxvY19vYmosIGRldm1fa21hbGxvY19mbGV4LCBldGMuKSB3aGljaCBjdXJyZW50bHkgaGF2ZSBubyBjYWxsZXJzIGFueXdoZXJlIGluIHRoZSBrZXJuZWwgY29kZWJhc2UsIGFuZCBtb3ZlcyB0aGUgbWFjcm8gZGVmaW5pdGlvbiBvZiBkZWZhdWx0X2dmcCBmcm9tIGxpbnV4L2dmcC5oIHRvIGxpbnV4L2dmcF90eXBlcy5oIHdpdGggbm8gY2hhbmdlIGluIGxvZ2ljLiBCZWNhdXNlIG5vIGNhbGxlcnMgZXhpc3QgZm9yIHRoZSBuZXcgbWFjcm9zLCBubyBleGVjdXRhYmxlIGtlcm5lbCBjb2RlIGlzIGFkZGVkIG9yIGFsdGVyZWQsIG1ha2luZyB0aGUgY2hhbmdlcyBub24tZXhlY3V0YWJsZSBhbmQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDA6Mjg6MDMuNzgxNDc2NDgyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowz77h6[1] Phase: Running StartedAt: 2026-09-15 00:28:14 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz77h6[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-15 00:28:14 +0000 UTC FinishedAt: 2026-09-15 00:28:25 +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,}