Name: series-workflowwk6xw Phase: Succeeded StartedAt: 2026-07-13 08:23:21 +0000 UTC FinishedAt: 2026-07-13 13:17:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[0] Phase: Succeeded StartedAt: 2026-07-13 08:23:21 +0000 UTC FinishedAt: 2026-07-13 08:50:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[0].run-triage Phase: Succeeded StartedAt: 2026-07-13 08:23:21 +0000 UTC FinishedAt: 2026-07-13 08:50:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "adea84ee6cdea611146c4251d3c1616f5a09feca", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFS_FS", "XFS_RT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "adea84ee6cdea611146c4251d3c1616f5a09feca", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFS_FS", "XFS_RT" ], "series_id": "983b49b5-5677-4861-a77a-e0310a557a15" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "iomap_ioend_try_merge", "iomap_ioend_can_merge", "xfs_end_io", "xfs_end_ioend_write" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGU19GUyYjMzQ7LAogICAgJiMzNDtYRlNfUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpb21hcF9pb2VuZF90cnlfbWVyZ2UmIzM0OywKICAgICYjMzQ7aW9tYXBfaW9lbmRfY2FuX21lcmdlJiMzNDssCiAgICAmIzM0O3hmc19lbmRfaW8mIzM0OywKICAgICYjMzQ7eGZzX2VuZF9pb2VuZF93cml0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gYGlvbWFwX2lvZW5kX2Nhbl9tZXJnZWAgdG8gcHJldmVudCBtZXJnaW5nIGBpb21hcF9pb2VuZGAgc3RydWN0dXJlcyBpZiB0aGVpciBgaW9fcHJpdmF0ZWAgZmllbGRzIGRpZmZlci4gVGhpcyBhZmZlY3RzIHRoZSBjb3JlIEkvTyBjb21wbGV0aW9uIG1lcmdpbmcgbG9naWMgaW4gYGZzL2lvbWFwL2lvZW5kLmNgLiBUaGUgYGlvX3ByaXZhdGVgIGZpZWxkIGlzIHVzZWQgYnkgWEZTIChzcGVjaWZpY2FsbHkgd2l0aCBgQ09ORklHX1hGU19SVGAgZW5hYmxlZCwgaW4gYHhmc196b25lX2FsbG9jLmNgIGFuZCBgeGZzX2FvcHMuY2ApIHRvIHN0b3JlIGEgcG9pbnRlciB0byBhbiBgeGZzX29wZW5fem9uZWAuIElmIGlvZW5kcyB3aXRoIGRpZmZlcmVudCBgaW9fcHJpdmF0ZWAgcG9pbnRlcnMgd2VyZSBtZXJnZWQsIGl0IGNvdWxkIGxlYWQgdG8gaW5jb3JyZWN0IHpvbmUgbWFuYWdlbWVudCBvciByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzIGluIFhGUy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoaW9tYXApIGFuZCBhIHNwZWNpZmljIGZpbGVzeXN0ZW0gKFhGUyksIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjQ4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTZkOTJhODNmMGIxYTUyZjE2NjM5Y2EzYmMyMDJkNWNlZjdmN2M4MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDA4OjQ4OjM3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2lvbWFwL2lvZW5kLmMgYi9mcy9pb21hcC9pb2VuZC5jXG5pbmRleCBhY2YzY2Y5OGIyM2E5Yi4uYmE1OTU3MGMwOTI2NDUgMTAwNjQ0XG4tLS0gYS9mcy9pb21hcC9pb2VuZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9pb21hcC9pb2VuZC5jXG5AQCAtMzgwLDYgJiM0MzszODAsOCBAQCBzdGF0aWMgYm9vbCBpb21hcF9pb2VuZF9jYW5fbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbiBcbiBcdGlmIChpb2VuZC1cdTAwM2Vpb19iaW8uYmlfc3RhdHVzICE9IG5leHQtXHUwMDNlaW9fYmlvLmJpX3N0YXR1cylcbiBcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdGlmIChpb2VuZC1cdTAwM2Vpb19wcml2YXRlICE9IG5leHQtXHUwMDNlaW9fcHJpdmF0ZSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiBcdGlmIChuZXh0LVx1MDAzZWlvX2ZsYWdzIFx1MDAyNiBJT01BUF9JT0VORF9CT1VOREFSWSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0aWYgKChpb2VuZC1cdTAwM2Vpb19mbGFncyBcdTAwMjYgSU9NQVBfSU9FTkRfTk9NRVJHRV9GTEFHUykgIT1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlNfRlMmIzM0OywKICAgICYjMzQ7WEZTX1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9tYXBfaW9lbmRfdHJ5X21lcmdlJiMzNDssCiAgICAmIzM0O2lvbWFwX2lvZW5kX2Nhbl9tZXJnZSYjMzQ7LAogICAgJiMzNDt4ZnNfZW5kX2lvJiMzNDssCiAgICAmIzM0O3hmc19lbmRfaW9lbmRfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgIHRvIHByZXZlbnQgbWVyZ2luZyBgaW9tYXBfaW9lbmRgIHN0cnVjdHVyZXMgaWYgdGhlaXIgYGlvX3ByaXZhdGVgIGZpZWxkcyBkaWZmZXIuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBJL08gY29tcGxldGlvbiBtZXJnaW5nIGxvZ2ljIGluIGBmcy9pb21hcC9pb2VuZC5jYC4gVGhlIGBpb19wcml2YXRlYCBmaWVsZCBpcyB1c2VkIGJ5IFhGUyAoc3BlY2lmaWNhbGx5IHdpdGggYENPTkZJR19YRlNfUlRgIGVuYWJsZWQsIGluIGB4ZnNfem9uZV9hbGxvYy5jYCBhbmQgYHhmc19hb3BzLmNgKSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gYW4gYHhmc19vcGVuX3pvbmVgLiBJZiBpb2VuZHMgd2l0aCBkaWZmZXJlbnQgYGlvX3ByaXZhdGVgIHBvaW50ZXJzIHdlcmUgbWVyZ2VkLCBpdCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdCB6b25lIG1hbmFnZW1lbnQgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlcyBpbiBYRlMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKGlvbWFwKSBhbmQgYSBzcGVjaWZpYyBmaWxlc3lzdGVtIChYRlMpLCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTZkOTJhODNmMGIxYTUyZjE2NjM5Y2EzYmMyMDJkNWNlZjdmN2M4MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDEzIDA4OjQ4OjM3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvaW9tYXAvaW9lbmQuYyBiL2ZzL2lvbWFwL2lvZW5kLmMKaW5kZXggYWNmM2NmOThiMjNhOWIuLmJhNTk1NzBjMDkyNjQ1IDEwMDY0NAotLS0gYS9mcy9pb21hcC9pb2VuZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2lvbWFwL2lvZW5kLmMKQEAgLTM4MCw2ICYjNDM7MzgwLDggQEAgc3RhdGljIGJvb2wgaW9tYXBfaW9lbmRfY2FuX21lcmdlKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsCiAKIAlpZiAoaW9lbmQtJmd0O2lvX2Jpby5iaV9zdGF0dXMgIT0gbmV4dC0mZ3Q7aW9fYmlvLmJpX3N0YXR1cykKIAkJcmV0dXJuIGZhbHNlOwomIzQzOwlpZiAoaW9lbmQtJmd0O2lvX3ByaXZhdGUgIT0gbmV4dC0mZ3Q7aW9fcHJpdmF0ZSkKJiM0MzsJCXJldHVybiBmYWxzZTsKIAlpZiAobmV4dC0mZ3Q7aW9fZmxhZ3MgJmFtcDsgSU9NQVBfSU9FTkRfQk9VTkRBUlkpCiAJCXJldHVybiBmYWxzZTsKIAlpZiAoKGlvZW5kLSZndDtpb19mbGFncyAmYW1wOyBJT01BUF9JT0VORF9OT01FUkdFX0ZMQUdTKSAhPQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODYzCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpb21hcCBTdWJzeXN0ZW0gTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkgc2VlIGEgcGF0Y2ggdG91Y2hpbmcgYGZzL2lvbWFwL2lvZW5kLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgYSBjaGVjayB3aXRoaW4gYGlvbWFwX2lvZW5kX2Nhbl9tZXJnZWA6IGBpZiAoaW9lbmQtJmd0O2lvX3ByaXZhdGUgIT0gbmV4dC0mZ3Q7aW9fcHJpdmF0ZSkgcmV0dXJuIGZhbHNlO2AuIFRoaXMgKmlzKiBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBrZXkgYWx0ZXJhdGlvbiB3aXRoaW4gdGhlIGlvbWFwIHN1YnN5c3RlbS4gTXkgbmV4dCBzdGVwLCBuYXR1cmFsbHksIGlzIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBlZmZlY3RzLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgY2xvc2VseSBhdCB0aGF0IGZ1bmN0aW9uLCBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYCwgYW5kIHN5c3RlbWF0aWNhbGx5IGV4YW1pbmUgYWxsIGl0cyBjYWxsZXJzIHRvIHNlZSBob3cgdGhpcyBuZXcgY2hlY2sgYWx0ZXJzIHRoZSBvdmVyYWxsIGJlaGF2aW9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbWVyZ2UgaW1wbGljYXRpb25zIGZyb20gdGhpcyBmdW5jdGlvbmFsIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb21hcF9pb2VuZF9jYW5fbWVyZ2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaW9tYXAvaW9lbmQuYz0zNjU9RVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfZmluaXNoX2lvZW5kcyk7XG4tLVxuZnMvaW9tYXAvaW9lbmQuYy0zNjktICovXG5mcy9pb21hcC9pb2VuZC5jOjM3MDpzdGF0aWMgYm9vbCBpb21hcF9pb2VuZF9jYW5fbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbmZzL2lvbWFwL2lvZW5kLmMtMzcxLVx0XHRzdHJ1Y3QgaW9tYXBfaW9lbmQgKm5leHQpXG4tLVxuZnMvaW9tYXAvaW9lbmQuYz00MDg9dm9pZCBpb21hcF9pb2VuZF90cnlfbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbi0tXG5mcy9pb21hcC9pb2VuZC5jLTQxNi1cdFx0XHRpb19saXN0KSkpIHtcbmZzL2lvbWFwL2lvZW5kLmM6NDE3Olx0XHRpZiAoIWlvbWFwX2lvZW5kX2Nhbl9tZXJnZShpb2VuZCwgbmV4dCkpXG5mcy9pb21hcC9pb2VuZC5jLTQxOC1cdFx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDA5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIGFuZCBDYWxsZXJzKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgYGlvbWFwYCBpbmZyYXN0cnVjdHVyZS4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBzaXRlcyB0byBzZWUgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBjb250ZXh0cyB3aGVyZSBpdCYjMzk7cyAqZmFpbGluZyogdG8gbWVyZ2UsIGFuZCB3aHkuIFVuZGVyc3RhbmRpbmcgdGhvc2UgZmFpbHVyZSBjYXNlcyB3aWxsIGxpa2VseSBoaWdobGlnaHQgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24sIG9yIGF0IGxlYXN0IGhlbHAgbWUgc29saWRpZnkgbXkgbWVudGFsIG1vZGVsIG9mIHRoZSBJL08gcGF0aC4gVGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uOyBtZXJnZSBsb2dpYyBpcyBvZnRlbiB0cmlja3kuIEkgc2hvdWxkIGFsc28gY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1hbmlwdWxhdGVzLiBBcmUgdGhlcmUgYW55IHJlc291cmNlIGNvbnRlbnRpb24gaXNzdWVzIHRoYXQgYXJlIGluaGVyZW50IHRvIHRoZSB3YXkgaXQgaXMgYmVpbmcgdXNlZD8gVGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb21hcF9pb2VuZF90cnlfbWVyZ2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdD00MDQ9YW1vcnRpemF0aW9uOlxuLS1cbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvb3BlcmF0aW9ucy5yc3QtNDA4LVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdDo0MDk6ICogYGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgYDogR2l2ZW4gYW4gaW9lbmQgdGhhdCBpcyBub3QgaW4gYW55IGxpc3QgYW5kXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQxMC0gICBhIHNlcGFyYXRlIGxpc3Qgb2Ygc29ydGVkIGlvZW5kcywgbWVyZ2UgYXMgbWFueSBvZiB0aGUgaW9lbmRzIGZyb21cbi0tXG5mcy9pb21hcC9pb2VuZC5jPTM3MD1zdGF0aWMgYm9vbCBpb21hcF9pb2VuZF9jYW5fbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbi0tXG5mcy9pb21hcC9pb2VuZC5jLTQwNy1cbmZzL2lvbWFwL2lvZW5kLmM6NDA4OnZvaWQgaW9tYXBfaW9lbmRfdHJ5X21lcmdlKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsXG5mcy9pb21hcC9pb2VuZC5jLTQwOS1cdFx0c3RydWN0IGxpc3RfaGVhZCAqbW9yZV9pb2VuZHMpXG4tLVxuZnMvaW9tYXAvaW9lbmQuYy00MjItfVxuZnMvaW9tYXAvaW9lbmQuYzo0MjM6RVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfaW9lbmRfdHJ5X21lcmdlKTtcbmZzL2lvbWFwL2lvZW5kLmMtNDI0LVxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jPTE4OD14ZnNfZW5kX2lvKFxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jLTIwNC1cdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZpb2VuZC1cdTAwM2Vpb19saXN0KTtcbmZzL3hmcy94ZnNfYW9wcy5jOjIwNTpcdFx0aW9tYXBfaW9lbmRfdHJ5X21lcmdlKGlvZW5kLCBcdTAwMjZ0bXApO1xuZnMveGZzL3hmc19hb3BzLmMtMjA2LVx0XHRpZiAoYmlvX29wKFx1MDAyNmlvZW5kLVx1MDAzZWlvX2JpbykgPT0gUkVRX09QX1JFQUQpXG4tLVxuaW5jbHVkZS9saW51eC9pb21hcC5oPTQ4Mj12b2lkIGlvbWFwX2ZpbmlzaF9pb2VuZHMoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCwgaW50IGVycm9yKTtcbmluY2x1ZGUvbGludXgvaW9tYXAuaDo0ODM6dm9pZCBpb21hcF9pb2VuZF90cnlfbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbmluY2x1ZGUvbGludXgvaW9tYXAuaC00ODQtXHRcdHN0cnVjdCBsaXN0X2hlYWQgKm1vcmVfaW9lbmRzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjA1CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCBDYWxsKioKClJpZ2h0LCBzbyB0aGlzIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGB4ZnNfZW5kX2lvYC4gVGhhdCBpbW1lZGlhdGVseSBzY3JlYW1zIFhGUyBhbmQgaW9tYXAgaW50ZWdyYXRpb24sIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQuIENvbnNpZGVyaW5nIG15IGJhY2tncm91bmQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYmV0dGVyLiBOb3csIGEga2V5IHF1ZXN0aW9uIGluIG15IG1pbmQgaXMgd2hldGhlciB0aGVyZSBhcmUgYW55IGNvbmZpZ3VyYXRpb25zIG9yIHR1bmFibGUgcGFyYW1ldGVycyBzcGVjaWZpYyB0byBob3cgaW9tYXAgaW50ZXJhY3RzIHdpdGhpbiB0aGUgWEZTIGZpbGVzeXN0ZW0gY29udGV4dC4gSSBuZWVkIHRvIHNlZSBpZiB0aGUga2VybmVsIGV4cG9zZXMgYW55IGtub2JzIHRoYXQgY29udHJvbCB0aGlzIG1lcmdpbmcgYmVoYXZpb3IuIEFyZSB0aGVyZSBhbnkgc3lzZnMgZW50cmllcywgbW9kdWxlIHBhcmFtZXRlcnMsIG9yIGNvbXBpbGUtdGltZSBvcHRpb25zIHRoYXQgZGlyZWN0bHkgaW5mbHVlbmNlIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgJiMzOTtzIG9wZXJhdGlvbj8gVGhhdCYjMzk7cyB3aGVyZSBJIHdpbGwgc3RhcnQsIGRpZ2dpbmcgaW50byBjb25maWdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElPTUFQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDc5CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBGaWxlc3lzdGVtIEkvTyBNYXBwaW5nKioKCkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgc3lzdGVtIGlzIG1hbmFnaW5nIGl0cyBJL08uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHBva2UgYXJvdW5kIHRoZSBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gZmlsZXN5c3RlbSBJL08gbWFwcGluZy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIG9mIGNoZWNraW5nIHNldHRpbmdzIGxpa2UgYGNvbmZpZyBGU19JT01BUGAsIG9yIHBlcmhhcHMgc29tZXRoaW5nIHNpbWlsYXIgaWYgdGhlIGtlcm5lbCB1c2VzIGEgc2xpZ2h0bHkgZGlmZmVyZW50IG5hbWluZyBjb252ZW50aW9uLiBJJiMzOTttIGFmdGVyIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyBvZiB0aGUgSS9PIHBhdGguIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBiZWhhdmlvciBvZiBpbnRlcmVzdCByZXNpZGVzLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXRzZWxmIGlzIGNhdXNpbmcgdGhlIGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIC4qSU9NQVAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9rYnVpbGQva2NvbmZpZy1sYW5ndWFnZS5yc3Q9NTE3PVdlIHdvdWxkIGluIGxpYi9LY29uZmlnIHNlZTo6XG4tLVxuRG9jdW1lbnRhdGlvbi9rYnVpbGQva2NvbmZpZy1sYW5ndWFnZS5yc3QtNTE5LSAgIyBHZW5lcmljIElPTUFQIGlzIHVzZWQgdG8gLi4uXG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdDo1MjA6ICBjb25maWcgSEFWRV9HRU5FUklDX0lPTUFQXG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdC01MjEtXG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdDo1MjI6ICBjb25maWcgR0VORVJJQ19JT01BUFxuRG9jdW1lbnRhdGlvbi9rYnVpbGQva2NvbmZpZy1sYW5ndWFnZS5yc3QtNTIzLVx0ZGVwZW5kcyBvbiBIQVZFX0dFTkVSSUNfSU9NQVAgXHUwMDI2XHUwMDI2IEZPT1xuLS1cbkRvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWctbGFuZ3VhZ2UucnN0PTUzNj1Ob3RlOiB3ZSB1c2UgdGhlIGV4aXN0aW5nIGNvbmZpZyBvcHRpb24gYW5kIGF2b2lkIGNyZWF0aW5nIGEgbmV3XG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdDo1Mzc6Y29uZmlnIHZhcmlhYmxlIHRvIHNlbGVjdCBIQVZFX0dFTkVSSUNfSU9NQVAuXG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdC01MzgtXG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdDo1Mzk6Tm90ZTogdGhlIHVzZSBvZiB0aGUgaW50ZXJuYWwgY29uZmlnIHZhcmlhYmxlIEhBVkVfR0VORVJJQ19JT01BUCwgaXQgaXNcbkRvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWctbGFuZ3VhZ2UucnN0LTU0MC1pbnRyb2R1Y2VkIHRvIG92ZXJjb21lIHRoZSBsaW1pdGF0aW9uIG9mIHNlbGVjdCB3aGljaCB3aWxsIGZvcmNlIGFcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTMxNzQ9ZW5kbWVudVxuYXJjaC94ODYvS2NvbmZpZy0zMTc1LVxuYXJjaC94ODYvS2NvbmZpZzozMTc2OmNvbmZpZyBIQVZFX0FUT01JQ19JT01BUFxuYXJjaC94ODYvS2NvbmZpZy0zMTc3LVx0ZGVmX2Jvb2wgeVxuLS1cbmRyaXZlcnMvbmV0L2FyY25ldC9jb205MGlvLmM9MjIxPXN0YXRpYyBpbnQgX19pbml0IGNvbTkwaW9fZm91bmQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9hcmNuZXQvY29tOTBpby5jLTI0OS1cbmRyaXZlcnMvbmV0L2FyY25ldC9jb205MGlvLmM6MjUwOlx0bHAtXHUwMDNlY29uZmlnID0gKDB4MTYgfCBJT01BUGZsYWcpIFx1MDAyNiB+RU5BQkxFMTZmbGFnO1xuZHJpdmVycy9uZXQvYXJjbmV0L2NvbTkwaW8uYy0yNTEtXHRhcmNuZXRfb3V0YihscC1cdTAwM2Vjb25maWcsIGlvYWRkciwgQ09NOTAyNl9SRUdfUldfQ09ORklHKTtcbi0tXG5kcml2ZXJzL25ldC9hcmNuZXQvY29tOTBpby5jPTI3OT1zdGF0aWMgaW50IGNvbTkwaW9fcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHJlYWxseV9yZXNldClcbi0tXG5kcml2ZXJzL25ldC9hcmNuZXQvY29tOTBpby5jLTI5Mi1cdC8qIFNldCB0aGUgdGhpbmcgdG8gSU8tbWFwcGVkLCA4LWJpdCAgbW9kZSAqL1xuZHJpdmVycy9uZXQvYXJjbmV0L2NvbTkwaW8uYzoyOTM6XHRscC1cdTAwM2Vjb25maWcgPSAoMHgxQyB8IElPTUFQZmxhZykgXHUwMDI2IH5FTkFCTEUxNmZsYWc7XG5kcml2ZXJzL25ldC9hcmNuZXQvY29tOTBpby5jLTI5NC1cdGFyY25ldF9vdXRiKGxwLVx1MDAzZWNvbmZpZywgaW9hZGRyLCBDT005MDI2X1JFR19SV19DT05GSUcpO1xuLS1cbmRyaXZlcnMvcGNpL0tjb25maWc9MTE9Y29uZmlnIEZPUkNFX1BDSVxuLS1cbmRyaXZlcnMvcGNpL0tjb25maWctMTctIyB3aXRob3V0IFBDSSBpdHNlbGYgaGF2aW5nIHRvIGJlIGRlZmluZWRcbmRyaXZlcnMvcGNpL0tjb25maWc6MTg6Y29uZmlnIEdFTkVSSUNfUENJX0lPTUFQXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE5LVx0Ym9vbFxuLS1cbmZzL0tjb25maWc9MTI9Y29uZmlnIFZBTElEQVRFX0ZTX1BBUlNFUlxuLS1cbmZzL0tjb25maWctMTctXG5mcy9LY29uZmlnOjE4OmNvbmZpZyBGU19JT01BUFxuZnMvS2NvbmZpZy0xOS1cdGJvb2xcbi0tXG5saWIvS2NvbmZpZz04Mj1jb25maWcgTk9fR0VORVJJQ19QQ0lfSU9QT1JUX01BUFxuLS1cbmxpYi9LY29uZmlnLTg0LVxubGliL0tjb25maWc6ODU6Y29uZmlnIEdFTkVSSUNfSU9NQVBcbmxpYi9LY29uZmlnLTg2LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTUyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbm5lciBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIEZTX0lPTUFQIENvbmZpZ3VyYXRpb24gT3B0aW9uKioKClJpZ2h0LCBgRlNfSU9NQVBgLi4uIHRoYXQmIzM5O3MgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGF0IGFjdHVhbGx5IGVuYWJsZXMgdGhpcz8gV2hhdCBjb2RlIHBhdGhzIGRlcGVuZCBvbiBpdD8mIzM0OyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzLiBJdCYjMzk7cyB0aW1lIHRvIHN0YXJ0IHRyYWNpbmcgdGhlIGNvbmZpZ3VyYXRpb24gY2hvaWNlcy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gc3lzdGVtIHRvIHNlZSB3aGF0IG90aGVyIG9wdGlvbnMsIG9yIHBlcmhhcHMgYnJvYWRlciBzdWJzeXN0ZW0gY29uZmlndXJhdGlvbnMsIGFyZSB0aWVkIHRvIGBGU19JT01BUGAuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCB0byB1bmRlcnN0YW5kIHdoZW4gYW5kIHdoeSBgRlNfSU9NQVBgIGdldHMgc2VsZWN0ZWQuIEl0JiMzOTtzIGFib3V0IGZpZ3VyaW5nIG91dCB0aGUgdHJpZ2dlcmluZyBjb25kaXRpb25zLCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGUgY29uZmlndXJhdGlvbiBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBGU19JT01BUCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL3BvcnRpbmcucnN0PTQ3PUZpcnN0LCBhZGQgYGAjaW5jbHVkZSBcdTAwM2NsaW51eC9pb21hcC5oXHUwMDNlYGAgZnJvbSB5b3VyIHNvdXJjZSBjb2RlIGFuZCBhZGRcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvcG9ydGluZy5yc3Q6NDg6YGBzZWxlY3QgRlNfSU9NQVBgYCB0byB5b3VyIGZpbGVzeXN0ZW0mIzM5O3MgS2NvbmZpZyBvcHRpb24uXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL3BvcnRpbmcucnN0LTQ5LUJ1aWxkIHRoZSBrZXJuZWwsIHJ1biBmc3Rlc3RzIHdpdGggdGhlIGBgLWcgYWxsYGAgb3B0aW9uIGFjcm9zcyBhIHdpZGVcbi0tXG5ibG9jay9LY29uZmlnPTU9bWVudWNvbmZpZyBCTE9DS1xuLS1cbmJsb2NrL0tjb25maWctNy0gICAgICAgZGVmYXVsdCB5XG5ibG9jay9LY29uZmlnOjg6ICAgICAgIHNlbGVjdCBGU19JT01BUFxuYmxvY2svS2NvbmZpZy05LSAgICAgICBzZWxlY3QgU0JJVE1BUFxuLS1cbmZzL0tjb25maWc9NTg9Y29uZmlnIEZTX0RBWFxuLS1cbmZzL0tjb25maWctNjEtXHRkZXBlbmRzIG9uIFpPTkVfREVWSUNFXG5mcy9LY29uZmlnOjYyOlx0c2VsZWN0IEZTX0lPTUFQXG5mcy9LY29uZmlnLTYzLVx0c2VsZWN0IERBWFxuLS1cbmZzL2J0cmZzL0tjb25maWc9Mz1jb25maWcgQlRSRlNfRlNcbi0tXG5mcy9idHJmcy9LY29uZmlnLTE0LVx0c2VsZWN0IFpTVERfREVDT01QUkVTU1xuZnMvYnRyZnMvS2NvbmZpZzoxNTpcdHNlbGVjdCBGU19JT01BUFxuZnMvYnRyZnMvS2NvbmZpZy0xNi1cdHNlbGVjdCBSQUlENl9QUVxuLS1cbmZzL2Vyb2ZzL0tjb25maWc9Mz1jb25maWcgRVJPRlNfRlNcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTktXHRzZWxlY3QgQ1JZUFRPX0RFRkxBVEUgaWYgRVJPRlNfRlNfWklQX0FDQ0VMXG5mcy9lcm9mcy9LY29uZmlnOjEwOlx0c2VsZWN0IEZTX0lPTUFQXG5mcy9lcm9mcy9LY29uZmlnLTExLVx0c2VsZWN0IExaNF9ERUNPTVBSRVNTIGlmIEVST0ZTX0ZTX1pJUFxuLS1cbmZzL2V4dDIvS2NvbmZpZz0yPWNvbmZpZyBFWFQyX0ZTXG4tLVxuZnMvZXh0Mi9LY29uZmlnLTQtXHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL2V4dDIvS2NvbmZpZzo1Olx0c2VsZWN0IEZTX0lPTUFQXG5mcy9leHQyL0tjb25maWctNi1cdGhlbHBcbi0tXG5mcy9leHQ0L0tjb25maWc9Mj1jb25maWcgRVhUNF9GU1xuLS1cbmZzL2V4dDQvS2NvbmZpZy03LVx0c2VsZWN0IENSQzMyXG5mcy9leHQ0L0tjb25maWc6ODpcdHNlbGVjdCBGU19JT01BUFxuZnMvZXh0NC9LY29uZmlnLTktXHRzZWxlY3QgRlNfRU5DUllQVElPTl9BTEdTIGlmIEZTX0VOQ1JZUFRJT05cbi0tXG5mcy9mMmZzL0tjb25maWc9Mj1jb25maWcgRjJGU19GU1xuLS1cbmZzL2YyZnMvS2NvbmZpZy05LVx0c2VsZWN0IEZTX0VOQ1JZUFRJT05fQUxHUyBpZiBGU19FTkNSWVBUSU9OXG5mcy9mMmZzL0tjb25maWc6MTA6XHRzZWxlY3QgRlNfSU9NQVBcbmZzL2YyZnMvS2NvbmZpZy0xMS1cdHNlbGVjdCBMWjRfQ09NUFJFU1MgaWYgRjJGU19GU19MWjRcbi0tXG5mcy9mdXNlL0tjb25maWc9Mj1jb25maWcgRlVTRV9GU1xuLS1cbmZzL2Z1c2UvS2NvbmZpZy00LVx0c2VsZWN0IEZTX1BPU0lYX0FDTFxuZnMvZnVzZS9LY29uZmlnOjU6XHRzZWxlY3QgRlNfSU9NQVBcbmZzL2Z1c2UvS2NvbmZpZy02LVx0aGVscFxuLS1cbmZzL2dmczIvS2NvbmZpZz0yPWNvbmZpZyBHRlMyX0ZTXG4tLVxuZnMvZ2ZzMi9LY29uZmlnLTctXHRzZWxlY3QgUVVPVEFDVExcbmZzL2dmczIvS2NvbmZpZzo4Olx0c2VsZWN0IEZTX0lPTUFQXG5mcy9nZnMyL0tjb25maWctOS1cdGhlbHBcbi0tXG5mcy9ocGZzL0tjb25maWc9Mj1jb25maWcgSFBGU19GU1xuLS1cbmZzL2hwZnMvS2NvbmZpZy01LVx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9ocGZzL0tjb25maWc6NjpcdHNlbGVjdCBGU19JT01BUFxuZnMvaHBmcy9LY29uZmlnLTctXHRoZWxwXG4tLVxuZnMvbnRmcy9LY29uZmlnPTI9Y29uZmlnIE5URlNfRlNcbi0tXG5mcy9udGZzL0tjb25maWctNC1cdHNlbGVjdCBOTFNcbmZzL250ZnMvS2NvbmZpZzo1Olx0c2VsZWN0IEZTX0lPTUFQXG5mcy9udGZzL0tjb25maWctNi1cdGhlbHBcbi0tXG5mcy94ZnMvS2NvbmZpZz0yPWNvbmZpZyBYRlNfRlNcbi0tXG5mcy94ZnMvS2NvbmZpZy02LVx0c2VsZWN0IENSQzMyXG5mcy94ZnMvS2NvbmZpZzo3Olx0c2VsZWN0IEZTX0lPTUFQXG5mcy94ZnMvS2NvbmZpZy04LVx0aGVscFxuLS1cbmZzL3pvbmVmcy9LY29uZmlnPTE9Y29uZmlnIFpPTkVGU19GU1xuLS1cbmZzL3pvbmVmcy9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIEJMS19ERVZfWk9ORURcbmZzL3pvbmVmcy9LY29uZmlnOjU6XHRzZWxlY3QgRlNfSU9NQVBcbmZzL3pvbmVmcy9LY29uZmlnLTYtXHRzZWxlY3QgQ1JDMzJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg0MgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIGBGU19JT01BUGAgU3Vic3lzdGVtKioKCkFscmlnaHQsIHNvIGl0JiMzOTtzIGNsZWFyIHRoYXQgYEZTX0lPTUFQYCBpcyBhIHByZXR0eSB1YmlxdWl0b3VzIHBpZWNlIG9mIHRoZSBmaWxlc3lzdGVtIHB1enpsZS4gWEZTLCBFWFQ0LCBCVFJGUywgRjJGUyDigJMgdGhleSYjMzk7cmUgYWxsIGxlYW5pbmcgb24gaXQuIFRoYXQgbWFrZXMgaXQgYSBwcmltZSB0YXJnZXQgZm9yIHNvbWUgZnV6emluZyBlZmZvcnRzOyBnb3R0YSBoaXQgdGhvc2UgY29tbW9uIHBhaW4gcG9pbnRzISBJIG5lZWQgdG8gcmVhbGx5IGRpZyBpbiBhbmQgc2VlIGlmIEkgY2FuIHNoYWtlIHNvbWUgYnVncyBsb29zZS4KCk5vdywgSSYjMzk7bSBsb29raW5nIGF0IGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgLiBJJiMzOTt2ZSBub3RpY2VkIGl0JiMzOTtzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0cyBjYWxsZXIgaXMgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAuIEdpdmVuIHRoYXQgdGhpcyBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgSSYjMzk7bGwgbmVlZCB0byBzZWUgaWYgaXQgbWFrZXMgc2Vuc2UgdG8gZ28gZnVydGhlciB1cCB0aGUgY2FsbCBzdGFjayB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGxhcmdlciBpbXBsaWNhdGlvbnMgYXJlLiBUaW1lIHRvIGV4YW1pbmUgdGhlIGNhbGxlcnMgb2YgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgSS9PIG1hbmFnZW1lbnQgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb21hcF9pb2VuZF90cnlfbWVyZ2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdD00MDQ9YW1vcnRpemF0aW9uOlxuLS1cbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvb3BlcmF0aW9ucy5yc3QtNDA4LVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdDo0MDk6ICogYGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgYDogR2l2ZW4gYW4gaW9lbmQgdGhhdCBpcyBub3QgaW4gYW55IGxpc3QgYW5kXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQxMC0gICBhIHNlcGFyYXRlIGxpc3Qgb2Ygc29ydGVkIGlvZW5kcywgbWVyZ2UgYXMgbWFueSBvZiB0aGUgaW9lbmRzIGZyb21cbi0tXG5mcy9pb21hcC9pb2VuZC5jPTM3MD1zdGF0aWMgYm9vbCBpb21hcF9pb2VuZF9jYW5fbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbi0tXG5mcy9pb21hcC9pb2VuZC5jLTQwNy1cbmZzL2lvbWFwL2lvZW5kLmM6NDA4OnZvaWQgaW9tYXBfaW9lbmRfdHJ5X21lcmdlKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsXG5mcy9pb21hcC9pb2VuZC5jLTQwOS1cdFx0c3RydWN0IGxpc3RfaGVhZCAqbW9yZV9pb2VuZHMpXG4tLVxuZnMvaW9tYXAvaW9lbmQuYy00MjItfVxuZnMvaW9tYXAvaW9lbmQuYzo0MjM6RVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfaW9lbmRfdHJ5X21lcmdlKTtcbmZzL2lvbWFwL2lvZW5kLmMtNDI0LVxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jPTE4OD14ZnNfZW5kX2lvKFxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jLTIwNC1cdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZpb2VuZC1cdTAwM2Vpb19saXN0KTtcbmZzL3hmcy94ZnNfYW9wcy5jOjIwNTpcdFx0aW9tYXBfaW9lbmRfdHJ5X21lcmdlKGlvZW5kLCBcdTAwMjZ0bXApO1xuZnMveGZzL3hmc19hb3BzLmMtMjA2LVx0XHRpZiAoYmlvX29wKFx1MDAyNmlvZW5kLVx1MDAzZWlvX2JpbykgPT0gUkVRX09QX1JFQUQpXG4tLVxuaW5jbHVkZS9saW51eC9pb21hcC5oPTQ4Mj12b2lkIGlvbWFwX2ZpbmlzaF9pb2VuZHMoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCwgaW50IGVycm9yKTtcbmluY2x1ZGUvbGludXgvaW9tYXAuaDo0ODM6dm9pZCBpb21hcF9pb2VuZF90cnlfbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbmluY2x1ZGUvbGludXgvaW9tYXAuaC00ODQtXHRcdHN0cnVjdCBsaXN0X2hlYWQgKm1vcmVfaW9lbmRzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjczNwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGB4ZnNfZW5kX2lvYCBhbmQgSXRzIFJlbGF0aW9uc2hpcCB0byBJL08gTWVyZ2luZyoqCgpPa2F5LCBzbyBgeGZzX2VuZF9pb2AgaXMgYSBjcml0aWNhbCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIHRvIGJlIGNhbGxpbmcgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBwb3RlbnRpYWwgSS9PIG9wdGltaXphdGlvbiBzdHJhdGVnaWVzIHdpdGhpbiB0aGUgWEZTIGZpbGVzeXN0ZW0uIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYXR0ZW1wdGluZyBhIG1lcmdlIGF0IHRoaXMgc3RhZ2Ugc3VnZ2VzdHMgdGhhdCB3ZSBhcmUgcG90ZW50aWFsbHkgdHJ5aW5nIHRvIGNvYWxlc2NlIHJlbGF0ZWQgSS9PIHJlcXVlc3RzLiBUaGlzIGlzIGEgdmVyeSBjb21tb24gdGVjaG5pcXVlIHRvIHJlZHVjZSB0aGUgb3ZlcmhlYWQgYW5kIGltcHJvdmUgcGVyZm9ybWFuY2UuIFdlIG1heSBhbHNvIGJlIGxvb2tpbmcgYXQgaG93IHdlIGNhbiBvcHRpbWl6ZSB3cml0ZSB0aHJvdWdocHV0LCBvciBpbXByb3ZlIHRoZSBlZmZpY2llbmN5IG9mIHJlYWRzIHRoYXQgYWNjZXNzIGFkamFjZW50IHNlY3RvcnMgb2YgdGhlIGRpc2suCgpOb3csIEkgd2FudCB0byBkcmlsbCBkb3duIGZ1cnRoZXIuIExldCYjMzk7cyBzZWUgd2hvIGlzIGNhbGxpbmcgYGlvbWFwX2ZpbmlzaF9pb2VuZHNgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEkvTyBlbmRzIGFyZSBiZWluZyBoYW5kbGVkIGFuZCB3aGF0JiMzOTtzIHRyaWdnZXJpbmcgdGhlIGVuZC1vZi1JL08gcHJvY2Vzc2luZy4gS25vd2luZyB0aGUgY2FsbGVycyB3aWxsIHByb3ZpZGUgaW5zaWdodCBpbnRvIHRoZSBjb21wbGV0ZSBJL08gY29tcGxldGlvbiBwYXRoLCBpdHMgaW1wYWN0IG9uIHRoZSBkYXRhIHN0cnVjdHVyZXMsIGFuZCBhbnkgb3RoZXIgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMuIEkgc2hvdWxkIGNvbnNpZGVyIHdoZXRoZXIgd2UgYXJlIHNlZWluZyBhbnkgbG9jayBjb250ZW50aW9uIG9yIHF1ZXVpbmcgdGhhdCBjYW4gYmUgb3B0aW1pemVkIGluIHRoZXNlIGFyZWFzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmlnIHBpY3R1cmUgYmVmb3JlIEkgY2FuIGV2YWx1YXRlIHRoZSBpbXBhY3QgYW5kIHNpZ25pZmljYW5jZSBvZiB0aGUgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvbWFwX2ZpbmlzaF9pb2VuZHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdD0zOTE9c3VibWl0dGVkIGJ5IGBgLVx1MDAzZXN1Ym1pdF93cml0ZWJhY2tgYFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdDozOTI6VGhpcyBmdW5jdGlvbiBzaG91bGQgY2FsbCBgYGlvbWFwX2ZpbmlzaF9pb2VuZHNgYCBhZnRlciBmaW5pc2hpbmcgaXRzXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTM5My1vd24gd29yayAoZS5nLiB1bndyaXR0ZW4gZXh0ZW50IGNvbnZlcnNpb24pLlxuLS1cbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvb3BlcmF0aW9ucy5yc3Q9NDA0PWFtb3J0aXphdGlvbjpcbi0tXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQxNi1cbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvb3BlcmF0aW9ucy5yc3Q6NDE3OiAqIGBgaW9tYXBfZmluaXNoX2lvZW5kc2BgOiBGaW5pc2ggYW4gaW9lbmQgdGhhdCBwb3NzaWJseSBoYXMgb3RoZXJcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvb3BlcmF0aW9ucy5yc3QtNDE4LSAgIGlvZW5kcyBsaW5rZWQgdG8gaXQuXG4tLVxuZnMvaW9tYXAvaW9lbmQuYz0zMDg9c3RhdGljIHUzMiBpb21hcF9maW5pc2hfaW9lbmQoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCwgaW50IGVycm9yKVxuLS1cbmZzL2lvbWFwL2lvZW5kLmMtMzQ0LSAqL1xuZnMvaW9tYXAvaW9lbmQuYzozNDU6dm9pZCBpb21hcF9maW5pc2hfaW9lbmRzKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsIGludCBlcnJvcilcbmZzL2lvbWFwL2lvZW5kLmMtMzQ2LXtcbi0tXG5mcy9pb21hcC9pb2VuZC5jLTM2NC19XG5mcy9pb21hcC9pb2VuZC5jOjM2NTpFWFBPUlRfU1lNQk9MX0dQTChpb21hcF9maW5pc2hfaW9lbmRzKTtcbmZzL2lvbWFwL2lvZW5kLmMtMzY2LVxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jPTEwNz14ZnNfZW5kX2lvZW5kX3dyaXRlKFxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jLTE2OC1cdFx0eGZzX2lvZW5kX3B1dF9vcGVuX3pvbmVzKGlvZW5kKTtcbmZzL3hmcy94ZnNfYW9wcy5jOjE2OTpcdGlvbWFwX2ZpbmlzaF9pb2VuZHMoaW9lbmQsIGVycm9yKTtcbmZzL3hmcy94ZnNfYW9wcy5jLTE3MC1cdG1lbWFsbG9jX25vZnNfcmVzdG9yZShub2ZzX2ZsYWcpO1xuLS1cbmZzL3hmcy94ZnNfYW9wcy5jPTE4OD14ZnNfZW5kX2lvKFxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jLTIwNi1cdFx0aWYgKGJpb19vcChcdTAwMjZpb2VuZC1cdTAwM2Vpb19iaW8pID09IFJFUV9PUF9SRUFEKVxuZnMveGZzL3hmc19hb3BzLmM6MjA3Olx0XHRcdGlvbWFwX2ZpbmlzaF9pb2VuZHMoaW9lbmQsXG5mcy94ZnMveGZzX2FvcHMuYy0yMDgtXHRcdFx0XHRibGtfc3RhdHVzX3RvX2Vycm5vKGlvZW5kLVx1MDAzZWlvX2Jpby5iaV9zdGF0dXMpKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmg9NDgwPXN0cnVjdCBpb21hcF9pb2VuZCAqaW9tYXBfc3BsaXRfaW9lbmQoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbmluY2x1ZGUvbGludXgvaW9tYXAuaC00ODEtXHRcdHVuc2lnbmVkIGludCBtYXhfbGVuLCBib29sIGlzX2FwcGVuZCk7XG5pbmNsdWRlL2xpbnV4L2lvbWFwLmg6NDgyOnZvaWQgaW9tYXBfZmluaXNoX2lvZW5kcyhzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLCBpbnQgZXJyb3IpO1xuaW5jbHVkZS9saW51eC9pb21hcC5oLTQ4My12b2lkIGlvbWFwX2lvZW5kX3RyeV9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTExCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIElPIE1lcmdlIExvZ2ljKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYGlvbWFwX2lvZW5kX2Nhbl9tZXJnZWAgZnVuY3Rpb24sIHNpbmNlIEkga25vdyBpdCYjMzk7cyByZWxhdGVkIHRvIG1lcmdpbmcgSS9PIG9wZXJhdGlvbnMuIFRoZSBrZXkgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGNoYWluLiBJIGNhbiBzZWUgdGhhdCBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYCBpcyBjYWxsZWQgYnkgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAuIE5vdywgbG9va2luZyBhdCB3aGVyZSAqdGhhdCogZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20sIEkgc2VlIGl0JiMzOTtzIGNhbGxlZCBpbiBgeGZzX2VuZF9pb2AuIEdpdmVuIG15IGV4cGVyaWVuY2Ugd2l0aCBYRlMsIGB4ZnNfZW5kX2lvYCBpcyBhIHJlYWxseSBzb2xpZCBwb2ludCB0byBzdGFydC4gSXQgaGFuZGxlcyB0aGUgZW5kIG9mIGFuIEkvTyBvcGVyYXRpb24sIHNvIGl0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UgdGhhdCBpdCB3b3VsZCBiZSB0aGUgZnVuY3Rpb24gdG8gdHJ5IHRvIG1lcmdlIGFkamFjZW50IElPIGVuZHMuCgpCdXQgSSBzaG91bGQgYnJvYWRlbiB0aGUgc2NvcGUuIEJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIGB4ZnNfZW5kX2lvYCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjay4gSSYjMzk7bGwgc2VhcmNoIHRoZSBjb2RlYmFzZSB0byBzZWUgaWYgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAgaXMgY2FsbGVkIGZyb20gYW55d2hlcmUgZWxzZS4gS25vd2luZyBhbGwgdGhlIGNhbGxlcnMgd2lsbCBnaXZlIG1lIGEgbW9yZSBjb21wbGV0ZSBwaWN0dXJlIG9mIGhvdyB0aGUgSS9PIG1lcmdpbmcgbG9naWMgaXMgdXNlZC4gSSYjMzk7bGwgY29uY2VudHJhdGUgbXkgc2VhcmNoIG9uIGBmcy9pb21hcC9pb2VuZC5jYCBhbmQgb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgZmlsZXMuIFVuZGVyc3RhbmRpbmcgYWxsIHRoZSBjYWxsIHNpdGVzIHdpbGwgbWFrZSB0aGlzIGRlYnVnZ2luZyBmYXIgZWFzaWVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb21hcF9pb2VuZF90cnlfbWVyZ2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdD00MDQ9YW1vcnRpemF0aW9uOlxuLS1cbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvb3BlcmF0aW9ucy5yc3QtNDA4LVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdDo0MDk6ICogYGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgYDogR2l2ZW4gYW4gaW9lbmQgdGhhdCBpcyBub3QgaW4gYW55IGxpc3QgYW5kXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQxMC0gICBhIHNlcGFyYXRlIGxpc3Qgb2Ygc29ydGVkIGlvZW5kcywgbWVyZ2UgYXMgbWFueSBvZiB0aGUgaW9lbmRzIGZyb21cbi0tXG5mcy9pb21hcC9pb2VuZC5jPTM3MD1zdGF0aWMgYm9vbCBpb21hcF9pb2VuZF9jYW5fbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbi0tXG5mcy9pb21hcC9pb2VuZC5jLTQwNy1cbmZzL2lvbWFwL2lvZW5kLmM6NDA4OnZvaWQgaW9tYXBfaW9lbmRfdHJ5X21lcmdlKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsXG5mcy9pb21hcC9pb2VuZC5jLTQwOS1cdFx0c3RydWN0IGxpc3RfaGVhZCAqbW9yZV9pb2VuZHMpXG4tLVxuZnMvaW9tYXAvaW9lbmQuYy00MjItfVxuZnMvaW9tYXAvaW9lbmQuYzo0MjM6RVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfaW9lbmRfdHJ5X21lcmdlKTtcbmZzL2lvbWFwL2lvZW5kLmMtNDI0LVxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jPTE4OD14ZnNfZW5kX2lvKFxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jLTIwNC1cdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZpb2VuZC1cdTAwM2Vpb19saXN0KTtcbmZzL3hmcy94ZnNfYW9wcy5jOjIwNTpcdFx0aW9tYXBfaW9lbmRfdHJ5X21lcmdlKGlvZW5kLCBcdTAwMjZ0bXApO1xuZnMveGZzL3hmc19hb3BzLmMtMjA2LVx0XHRpZiAoYmlvX29wKFx1MDAyNmlvZW5kLVx1MDAzZWlvX2JpbykgPT0gUkVRX09QX1JFQUQpXG4tLVxuaW5jbHVkZS9saW51eC9pb21hcC5oPTQ4Mj12b2lkIGlvbWFwX2ZpbmlzaF9pb2VuZHMoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCwgaW50IGVycm9yKTtcbmluY2x1ZGUvbGludXgvaW9tYXAuaDo0ODM6dm9pZCBpb21hcF9pb2VuZF90cnlfbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbmluY2x1ZGUvbGludXgvaW9tYXAuaC00ODQtXHRcdHN0cnVjdCBsaXN0X2hlYWQgKm1vcmVfaW9lbmRzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg5NQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAmIzM5O3MgQ2FsbGVycyoqCgpBbHJpZ2h0LCBzbyB0aGUgaW1tZWRpYXRlIGltcGxpY2F0aW9uIGlzIHRoYXQgYHhmc19lbmRfaW9gIGlzIHRoZSAqc29sZSogY2FsbGVyIG9mIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgLiBUaGF0IHNlZW1zLi4uIGZvY3VzZWQuIEl0IGtlZXBzIHRoZSBtZXJnaW5nIHByb2Nlc3MgbmljZWx5IGNvbnRhaW5lZCB3aXRoaW4gdGhlIFhGUyBjb250ZXh0LiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBCZWZvcmUgSSBnbyB0b28gZmFyIGRvd24gdGhhdCBwYXRoIG9mIGFzc3VtaW5nIGEgc2luZ2xlIGNhbGxlciwgd2hhdCBhYm91dCBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYD8gSXQmIzM5O3MgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgbWVyZ2UgbG9naWMsIGFuZCAqdGhhdCogZnVuY3Rpb24gaXMgY2FsbGVkIGJlZm9yZSBgdHJ5X21lcmdlYC4gSXMgKml0KiBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGJyb2FkZXIgY2FsbCBncmFwaCBhcm91bmQgYGlvbWFwX2lvZW5kX2Nhbl9tZXJnZWAuIEVuc3VyaW5nIHRoZXJlIGFyZSBubyBvdGhlciBwb2ludHMgdGhhdCBtaWdodCBpbmRpcmVjdGx5IHRyaWdnZXIgb3IgaW5mbHVlbmNlIHRoYXQgbWVyZ2luZyBiZWhhdmlvdXIgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgb3ZlcmFsbCBiZWhhdmlvdXIgYW5kIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuIEkgbmVlZCB0byBrbm93IHRoZSBlbnRpcmUgbGFuZHNjYXBlIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvbWFwX2lvZW5kX2Nhbl9tZXJnZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9pb21hcC9pb2VuZC5jPTM2NT1FWFBPUlRfU1lNQk9MX0dQTChpb21hcF9maW5pc2hfaW9lbmRzKTtcbi0tXG5mcy9pb21hcC9pb2VuZC5jLTM2OS0gKi9cbmZzL2lvbWFwL2lvZW5kLmM6MzcwOnN0YXRpYyBib29sIGlvbWFwX2lvZW5kX2Nhbl9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxuZnMvaW9tYXAvaW9lbmQuYy0zNzEtXHRcdHN0cnVjdCBpb21hcF9pb2VuZCAqbmV4dClcbi0tXG5mcy9pb21hcC9pb2VuZC5jPTQwOD12b2lkIGlvbWFwX2lvZW5kX3RyeV9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxuLS1cbmZzL2lvbWFwL2lvZW5kLmMtNDE2LVx0XHRcdGlvX2xpc3QpKSkge1xuZnMvaW9tYXAvaW9lbmQuYzo0MTc6XHRcdGlmICghaW9tYXBfaW9lbmRfY2FuX21lcmdlKGlvZW5kLCBuZXh0KSlcbmZzL2lvbWFwL2lvZW5kLmMtNDE4LVx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDQyCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJL08gRW5kIFBhdGggaW4gWEZTKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIEkvTyBjb21wbGV0aW9uIHBhdGggaGVyZSwgc3BlY2lmaWNhbGx5LCB0aGUgaW50ZXJhY3Rpb24gd2l0aCBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYC4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCB0aGUgb25seSBmdW5jdGlvbiB0aGF0IGFwcGVhcnMgdG8gYWN0dWFsbHkgY2FsbCB0aGlzIHNwZWNpZmljIGJpdCBvZiBjb2RlIGlzIGB4ZnNfZW5kX2lvYC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4gSXQgbWVhbnMgSSBjYW4gdHJhY2UgdGhlIGNvbnRyb2wgZmxvdyBieSB6ZXJvaW5nIGluIG9uIGB4ZnNfZW5kX2lvYCB3aXRoaW4gYGZzL3hmcy94ZnNfYW9wcy5jYC4gTGV0JiMzOTtzIGdldCB0byB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy94ZnMveGZzX2FvcHMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTgwOlx0ICogZGlzY29udGlndW91cyBleHRlbnRzIGhlcmUuXG4gMTgxOlx0ICpcbiAxODI6XHQgKiBUaGUgaW9lbmQgY2hhaW4gbGVuZ3RoIHRoYXQgd2UgY2FuIGJlIHByb2Nlc3NpbmcgaGVyZSBpcyBsYXJnZWx5IHVuYm91bmQgaW5cbiAxODM6XHQgKiBsZW5ndGggYW5kIHdlIG1heSBoYXZlIHRvIHBlcmZvcm0gc2lnbmlmaWNhbnQgYW1vdW50cyBvZiB3b3JrIG9uIGVhY2ggaW9lbmRcbiAxODQ6XHQgKiB0byBjb21wbGV0ZSBpdC4gSGVuY2Ugd2UgaGF2ZSB0byBiZSBjYXJlZnVsIGFib3V0IGhvbGRpbmcgdGhlIENQVSBmb3IgdG9vXG4gMTg1Olx0ICogbG9uZyBpbiB0aGlzIGxvb3AuXG4gMTg2Olx0ICovXG4gMTg3Olx0dm9pZFxuIDE4ODpcdHhmc19lbmRfaW8oXG4gMTg5Olx0XHRzdHJ1Y3Qgd29ya19zdHJ1Y3RcdCp3b3JrKVxuIDE5MDpcdHtcbiAxOTE6XHRcdHN0cnVjdCB4ZnNfaW5vZGVcdCppcCA9XG4gMTkyOlx0XHRcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgeGZzX2lub2RlLCBpX2lvZW5kX3dvcmspO1xuIDE5MzpcdFx0c3RydWN0IGlvbWFwX2lvZW5kXHQqaW9lbmQ7XG4gMTk0Olx0XHRzdHJ1Y3QgbGlzdF9oZWFkXHR0bXA7XG4gMTk1Olx0XHR1bnNpZ25lZCBsb25nXHRcdGZsYWdzO1xuIDE5NjpcdFxuIDE5NzpcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aXAtXHUwMDNlaV9pb2VuZF9sb2NrLCBmbGFncyk7XG4gMTk4Olx0XHRsaXN0X3JlcGxhY2VfaW5pdChcdTAwMjZpcC1cdTAwM2VpX2lvZW5kX2xpc3QsIFx1MDAyNnRtcCk7XG4gMTk5Olx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmlwLVx1MDAzZWlfaW9lbmRfbG9jaywgZmxhZ3MpO1xuIDIwMDpcdFxuIDIwMTpcdFx0aW9tYXBfc29ydF9pb2VuZHMoXHUwMDI2dG1wKTtcbiAyMDI6XHRcdHdoaWxlICgoaW9lbmQgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoXHUwMDI2dG1wLCBzdHJ1Y3QgaW9tYXBfaW9lbmQsXG4gMjAzOlx0XHRcdFx0aW9fbGlzdCkpKSB7XG4gMjA0Olx0XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2aW9lbmQtXHUwMDNlaW9fbGlzdCk7XG4gMjA1Olx0XHRcdGlvbWFwX2lvZW5kX3RyeV9tZXJnZShpb2VuZCwgXHUwMDI2dG1wKTtcbiAyMDY6XHRcdFx0aWYgKGJpb19vcChcdTAwMjZpb2VuZC1cdTAwM2Vpb19iaW8pID09IFJFUV9PUF9SRUFEKVxuIDIwNzpcdFx0XHRcdGlvbWFwX2ZpbmlzaF9pb2VuZHMoaW9lbmQsXG4gMjA4Olx0XHRcdFx0XHRibGtfc3RhdHVzX3RvX2Vycm5vKGlvZW5kLVx1MDAzZWlvX2Jpby5iaV9zdGF0dXMpKTtcbiAyMDk6XHRcdFx0ZWxzZVxuIDIxMDpcdFx0XHRcdHhmc19lbmRfaW9lbmRfd3JpdGUoaW9lbmQpO1xuIDIxMTpcdFx0XHRjb25kX3Jlc2NoZWQoKTtcbiAyMTI6XHRcdH1cbiAyMTM6XHR9XG4gMjE0Olx0XG4gMjE1Olx0dm9pZFxuIDIxNjpcdHhmc19lbmRfYmlvKFxuIDIxNzpcdFx0c3RydWN0IGJpb1x0XHQqYmlvKVxuIDIxODpcdHtcbiAyMTk6XHRcdHN0cnVjdCBpb21hcF9pb2VuZFx0KmlvZW5kID0gaW9tYXBfaW9lbmRfZnJvbV9iaW8oYmlvKTtcbiAyMjA6XHRcdHN0cnVjdCB4ZnNfaW5vZGVcdCppcCA9IFhGU19JKGlvZW5kLVx1MDAzZWlvX2lub2RlKTtcbiAyMjE6XHRcdHN0cnVjdCB4ZnNfbW91bnRcdCptcCA9IGlwLVx1MDAzZWlfbW91bnQ7XG4gMjIyOlx0XHR1bnNpZ25lZCBsb25nXHRcdGZsYWdzO1xuIDIyMzpcdFxuIDIyNDpcdFx0LypcbiAyMjU6XHRcdCAqIEZvciBBcHBlbmRzIHJlY29yZCB0aGUgYWN0dWFsbHkgd3JpdHRlbiBibG9jayBudW1iZXIgYW5kIHNldCB0aGVcbiAyMjY6XHRcdCAqIGJvdW5kYXJ5IGZsYWcgaWYgbmVlZGVkLlxuIDIyNzpcdFx0ICovXG4gMjI4Olx0XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfWEZTX1JUKSBcdTAwMjZcdTAwMjYgYmlvX2lzX3pvbmVfYXBwZW5kKGJpbykpIHtcbiAyMjk6XHRcdFx0aW9lbmQtXHUwMDNlaW9fc2VjdG9yID0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2VjdG9yO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDUxNAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSU8gQ29tcGxldGlvbiBQYXRoIGluIFhGUyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHhmc19lbmRfaW9gLiBUaGUgbmFtZSBzY3JlYW1zICYjMzQ7SU8gY29tcGxldGlvbiwmIzM0OyBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIHdlIG5lZWQgdG8gZm9jdXMgb24uIEl0JiMzOTtzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLCB3aGljaCBpbW1lZGlhdGVseSBtZWFucyBpdCYjMzk7cyBhc3luY2hyb25vdXMuIEl0JiMzOTtzIGNhbGxpbmcgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAuIE5vdywgSSByZWNhbGwgdGhhdCBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCBpcyBpbnZvbHZlZCBpbiBtZXJnaW5nIElPcywgc28gYHhmc19lbmRfaW9gIGlzIGxpa2VseSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZXkmIzM5O3JlIGZpbmFsaXplZC4KCkJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIHNpbmNlIGl0IGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLCBpdCYjMzk7cyBwcm9iYWJseSBub3QgZGlyZWN0bHkgY2FsbGVkIGZyb20gYSBzeXN0ZW0gY2FsbCBwYXRoLiBXZSBuZWVkIHRvIHRyYWNlIHdoZXJlIHRoaXMgd29yayBpcyAqc2NoZWR1bGVkKiBpbiB0aGUgZmlyc3QgcGxhY2UgdG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGUgaW5pdGlhdGlvbiBhbmQgY29tcGxldGlvbiBwcm9jZXNzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgdXBzdHJlYW0gY2FsbGVycyBvZiBgeGZzX2VuZF9pb2AgdG8gYnVpbGQgdGhlIHdob2xlIHBpY3R1cmUuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIHdoYXQmIzM5O3Mgc2NoZWR1bGluZyB0aGF0IHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lfaW9lbmRfd29yayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy94ZnMveGZzX2FvcHMuYz0xODg9eGZzX2VuZF9pbyhcbi0tXG5mcy94ZnMveGZzX2FvcHMuYy0xOTEtXHRzdHJ1Y3QgeGZzX2lub2RlXHQqaXAgPVxuZnMveGZzL3hmc19hb3BzLmM6MTkyOlx0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IHhmc19pbm9kZSwgaV9pb2VuZF93b3JrKTtcbmZzL3hmcy94ZnNfYW9wcy5jLTE5My1cdHN0cnVjdCBpb21hcF9pb2VuZFx0KmlvZW5kO1xuLS1cbmZzL3hmcy94ZnNfYW9wcy5jPTIxNj14ZnNfZW5kX2Jpbyhcbi0tXG5mcy94ZnMveGZzX2FvcHMuYy0yMzUtXHRcdFdBUk5fT05fT05DRSghcXVldWVfd29yayhtcC1cdTAwM2VtX3Vud3JpdHRlbl93b3JrcXVldWUsXG5mcy94ZnMveGZzX2FvcHMuYzoyMzY6XHRcdFx0XHRcdCBcdTAwMjZpcC1cdTAwM2VpX2lvZW5kX3dvcmspKTtcbmZzL3hmcy94ZnNfYW9wcy5jLTIzNy1cdGxpc3RfYWRkX3RhaWwoXHUwMDI2aW9lbmQtXHUwMDNlaW9fbGlzdCwgXHUwMDI2aXAtXHUwMDNlaV9pb2VuZF9saXN0KTtcbi0tXG5mcy94ZnMveGZzX2ljYWNoZS5jPTg3PXhmc19pbm9kZV9hbGxvYyhcbi0tXG5mcy94ZnMveGZzX2ljYWNoZS5jLTEyNy1cdGlwLVx1MDAzZWlfY2hlY2tlZCA9IDA7XG5mcy94ZnMveGZzX2ljYWNoZS5jOjEyODpcdElOSVRfV09SSyhcdTAwMjZpcC1cdTAwM2VpX2lvZW5kX3dvcmssIHhmc19lbmRfaW8pO1xuZnMveGZzL3hmc19pY2FjaGUuYy0xMjktXHRJTklUX0xJU1RfSEVBRChcdTAwMjZpcC1cdTAwM2VpX2lvZW5kX2xpc3QpO1xuLS1cbmZzL3hmcy94ZnNfaW5vZGUuaD0yNT10eXBlZGVmIHN0cnVjdCB4ZnNfaW5vZGUge1xuLS1cbmZzL3hmcy94ZnNfaW5vZGUuaC05OS1cdHNwaW5sb2NrX3RcdFx0aV9pb2VuZF9sb2NrO1xuZnMveGZzL3hmc19pbm9kZS5oOjEwMDpcdHN0cnVjdCB3b3JrX3N0cnVjdFx0aV9pb2VuZF93b3JrO1xuZnMveGZzL3hmc19pbm9kZS5oLTEwMS1cdHN0cnVjdCBsaXN0X2hlYWRcdGlfaW9lbmRfbGlzdDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzNTgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgWEZTJiMzOTtzIEkvTyBDb21wbGV0aW9uIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBYRlMgaGFuZGxlcyBJL08gY29tcGxldGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBhc3luY2hyb25vdXMgYXNwZWN0LiBGcm9tIHRoZSBjb2RlLCBpdCBzZWVtcyBgeGZzX2VuZF9iaW9gIHRyaWdnZXJzIGBpX2lvZW5kX3dvcmtgLCBhbmQgc2luY2UgYHhmc19lbmRfYmlvYCBpcyB0aGUgYGJpb2AmIzM5O3MgYGVuZF9pb2AgY2FsbGJhY2ssIHRoaXMgZXhlY3V0aW9uIGlzIGRlZmluaXRlbHkgYXN5bmNocm9ub3VzLgoKRGlyZWN0bHkgZnV6emluZyBgeGZzX2VuZF9pb2Agb3IgYHhmc19lbmRfYmlvYCBsb29rcyB0cmlja3ksIGdpdmVuIHRoZSBhc3luYyBuYXR1cmUuIFNvLCBhIGdvb2Qgc3RyYXRlZ3kgaXMgdG8gZm9jdXMgb24gdGhvc2UgdHdvIGZ1bmN0aW9ucywgc2luY2UgdGhleSBzZWVtIHRvIGJlIGNyaXRpY2FsIGZvciB0aGUgZmxvdy4KCk5vdywgYSBjcnVjaWFsIHBvaW50LiBJcyBYRlMgdGhlIG9ubHkgZmlsZXN5c3RlbSB0aGF0IHVzZXMgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWA/IEEgcXVpY2sgZ3JlcCByZXZlYWxlZCB0aGF0ICpvbmx5KiBgeGZzX2VuZF9pb2AgY2FsbHMgaXQuIEJ1dOKApiB3YWl0IGEgc2Vjb25k4oCmIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIGlzIGFjdHVhbGx5IGV4cG9ydGVkOiBgRVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfaW9lbmRfdHJ5X21lcmdlKWAuIFRoYXQgaW1wbGllcyBpdCYjMzk7cyBpbnRlbmRlZCBmb3IgKm90aGVyKiBmaWxlc3lzdGVtcyB0byB1c2UsIGV2ZW4gdGhvdWdoIFhGUyBpcyB0aGUgb25seSBvbmUgZG9pbmcgc28gcmlnaHQgbm93LgoKVGhlcmVmb3JlLCB0byBlbmFibGUgdGhpcyBjb2RlLCBJJiMzOTtsbCBuZWVkIGBYRlNfRlNgIGFuZCBgRlNfSU9NQVBgIGNvbmZpZ3VyYXRpb25zLiBCdXQsIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZTsgaXMgYFhGU19GU2AgYWxvbmUgc3VmZmljaWVudD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgWEZTX0ZTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3hmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy94ZnMvS2NvbmZpZzoyOmNvbmZpZyBYRlNfRlNcbmZzL3hmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtYRlMgZmlsZXN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDA2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4gSSYjMzk7dmUgZ290IG15IGluaXRpYWwgY29uZmlndXJhdGlvbiBzZXQsIGJ1dCBJIG5lZWQgdG8gZG8gYSB0aG9yb3VnaCBjaGVjayBmb3IgYW55IG92ZXJsb29rZWQgb3Igc2Vjb25kYXJ5IGNvbmZpZ3VyYXRpb25zLCBleHRlcm5hbCBzb3VyY2VzLCBvciBvdmVycmlkZXMgdGhhdCBtaWdodCBiZSBpbmZsdWVuY2luZyB0aGUgY3VycmVudCBiZWhhdmlvci4gSSYjMzk7bSB0aGlua2luZywgJiMzNDtJcyB0aGVyZSBhbm90aGVyIGNvbmZpZyBmaWxlLCBhIGRpZmZlcmVudCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgb3Igc29tZSBhdXRvbWF0ZWQgcHJvY2VzcyBJJiMzOTt2ZSBmb3Jnb3R0ZW4gYWJvdXQgdGhhdCBjb3VsZCBiZSBhZmZlY3RpbmcgdGhlc2Ugc2V0dGluZ3M/JiMzNDsgSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzYW5pdHkgY2hlY2s6IGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgdGhlIG9ubHkgb25lIGluIHBsYXkuIEkgZG9uJiMzOTt0IHdhbnQgdG8gd2FzdGUgdGltZSBjaGFzaW5nIGdob3N0cy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBzdXJwcmlzZSBwYXJhbWV0ZXJzIG9yIGNvbmZsaWN0aW5nIHNldHRpbmdzIGJlZm9yZSBJIGdldCBpbnRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlNfSU9NQVAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZz0xMj1jb25maWcgVkFMSURBVEVfRlNfUEFSU0VSXG4tLVxuZnMvS2NvbmZpZy0xNy1cbmZzL0tjb25maWc6MTg6Y29uZmlnIEZTX0lPTUFQXG5mcy9LY29uZmlnLTE5LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjI4MgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDE4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBJL08gRW5kIFByb2Nlc3NpbmcgaW4gWEZTKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIHRoZSBJL08gZW5kIHByb2Nlc3Npbmcgd2l0aGluIHRoZSBYRlMgZmlsZXN5c3RlbS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNlbnRlciBvbiB0aGUgYFhGU19GU2AgY29uZmlndXJhdGlvbiBvcHRpb24sIGFzIHRoYXQgc2VlbXMgdG8gYmUgdGhlIGNvcmUgb2YgaXQuIEFuZCwgb2YgY291cnNlLCB0aGUgYEZTX0lPTUFQYCBvcHRpb24gaXMgZGlyZWN0bHkgc2VsZWN0ZWQgYnkgYFhGU19GU2AsIHNvIGl0JiMzOTtzIGEga2V5IHBhcnQgb2YgdGhlIHB1enpsZS4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucy4gTXkgaW5zdGluY3QgaXMgdGhhdCBgeGZzX2VuZF9pb2AgaXMgYSBwaXZvdGFsIGZvY3VzIHN5bWJvbC4gQWgsIHllcywgaXTigJlzIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgdGhlIHByb2Nlc3Npbmcgb2YgdGhlIGBpb2VuZHNgLiBCdXQgd2FpdCwgd2hhdCBhYm91dCBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYD8gSXQmIzM5O3Mgc3RhdGljLCBzbyB0aGF0JiMzOTtzIG5vdCBnb2luZyB0byBnaXZlIG1lIG11Y2ggZGlyZWN0IGluZm9ybWF0aW9uLiBIb3dldmVyLCBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCBpcyBleHBvcnRlZCwgc28gdGhhdCBsb29rcyBwcm9taXNpbmcuCgpUaGVyZWZvcmUsIEkmIzM5O2xsIGZvY3VzIG9uIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIGluIGNvbmp1bmN0aW9uIHdpdGggYHhmc19lbmRfaW9gLiBJIHNob3VsZCB2ZXJpZnkgdGhhdCBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCBpcyBsb2NhdGVkIHdpdGhpbiB0aGUgYGZzL2lvbWFwL2lvZW5kLmNgIHNvdXJjZSBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuIFBsZWFzZSBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlIGluc3RlYWQgb2YgcmVwZWF0aW5nIHF1ZXJpZXMuPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvbWFwX2lvZW5kX3RyeV9tZXJnZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O1lvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy4gUGxlYXNlIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUgaW5zdGVhZCBvZiByZXBlYXRpbmcgcXVlcmllcy4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODIyCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogMTMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoaXMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYWxyZWFkeSBkb25lIG15IGluaXRpYWwgbGVnd29yayAtIEkmIzM5O3ZlIGFscmVhZHkgYGdyZXBgcGVkIGZvciByZWxldmFudCBpbmZvcm1hdGlvbi4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2s6IGBpZiAoaW9lbmQtJmd0O2lvX3ByaXZhdGUgIT0gbmV4dC0mZ3Q7aW9fcHJpdmF0ZSlgIHdpdGhpbiB0aGUgYGlvbWFwX2lvZW5kX2Nhbl9tZXJnZWAgZnVuY3Rpb24uIEZ1bmN0aW9uYWxseSwgdGhpcyBwcmV2ZW50cyB0aGUgbWVyZ2luZyBvZiBgaW9lbmRzYCB0aGF0IGhhdmUgZGlmZmVyaW5nIGBpb19wcml2YXRlYCB2YWx1ZXMuIFRoaXMgaXMgaW50ZXJlc3RpbmcsIGFuZCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgJiMzNDtmdXp6aW5nIGNhbmRpZGF0ZSEmIzM0OyBBbnkgY2hhbmdlIHRoYXQgYWx0ZXJzIG1lcmdpbmcgbG9naWMgaXMgYSBwcmltZSB0YXJnZXQuCgpNeSBpbml0aWFsIGNvbmZpZyBpbnZlc3RpZ2F0aW9uIHN1Z2dlc3RzIHRoaXMgaXMgcmVsZXZhbnQgdG8gYFhGU19GU2AgYW5kIGBGU19JT01BUGAuIEkgd2FudCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gdGhlIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIGFuZCBgeGZzX2VuZF9pb2Agc3ltYm9scywgYXMgdGhleSBhcmUga2V5IHBvaW50cyBpbiB0aGlzIG1lcmdpbmcgcHJvY2Vzcy4gQSBxdWljayBzYW5pdHkgY2hlY2sgbmVlZHMgdG8gYmUgcGVyZm9ybWVkIHRvIGNvbmZpcm0gYGlvX3ByaXZhdGVgIGlzIGFjdHVhbGx5IHVzZWQgd2l0aGluIHRoZSBYRlMgY29kZSBwYXRoLiBUaGlzIHdpbGwgY29uZmlybSB0aGUgdmFsaWRpdHkgb2YgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW9fcHJpdmF0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzM0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1zcnYuYz02Nz1zdGF0aWMgTElTVF9IRUFEKGRldl9saXN0KTtcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jLTY4LVxuZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LmM6Njk6c3RydWN0IHJuYmRfaW9fcHJpdmF0ZSB7XG5kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1zcnYuYy03MC1cdHN0cnVjdCBydHJzX3Nydl9vcFx0XHQqaWQ7XG4tLVxuZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LmM9MTA1PXN0YXRpYyB2b2lkIHJuYmRfZGV2X2JpX2VuZF9pbyhzdHJ1Y3QgYmlvICpiaW8pXG5kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1zcnYuYy0xMDYte1xuZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LmM6MTA3Olx0c3RydWN0IHJuYmRfaW9fcHJpdmF0ZSAqcm5iZF9wcml2ID0gYmlvLVx1MDAzZWJpX3ByaXZhdGU7XG5kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1zcnYuYy0xMDgtXHRzdHJ1Y3Qgcm5iZF9zcnZfc2Vzc19kZXYgKnNlc3NfZGV2ID0gcm5iZF9wcml2LVx1MDAzZXNlc3NfZGV2O1xuLS1cbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jPTExNz1zdGF0aWMgaW50IHByb2Nlc3NfcmRtYShzdHJ1Y3Qgcm5iZF9zcnZfc2Vzc2lvbiAqc3J2X3Nlc3MsXG4tLVxuZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LmMtMTIxLVx0Y29uc3Qgc3RydWN0IHJuYmRfbXNnX2lvICptc2cgPSB1c3I7XG5kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1zcnYuYzoxMjI6XHRzdHJ1Y3Qgcm5iZF9pb19wcml2YXRlICpwcml2O1xuZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LmMtMTIzLVx0c3RydWN0IHJuYmRfc3J2X3Nlc3NfZGV2ICpzZXNzX2Rldjtcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTE2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGNvbWVkaV9scmFuZ2UgcGNtbWlvX2FvX3JhbmdlcyA9IHtcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTE3Ni1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6MTc3OnN0cnVjdCBwY21taW9fcHJpdmF0ZSB7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTE3OC1cdHNwaW5sb2NrX3QgcGFnZWxvY2s7XHQvKiBwcm90ZWN0cyB0aGUgcGFnZSByZWdpc3RlcnMgKi9cbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTE4ND1zdGF0aWMgdm9pZCBwY21taW9fZGlvX3dyaXRlKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB2YWwsXG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy0xODYte1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYzoxODc6XHRzdHJ1Y3QgcGNtbWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtMTg4LVx0dW5zaWduZWQgbG9uZyBpb2Jhc2UgPSBkZXYtXHUwMDNlaW9iYXNlO1xuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM9MjA2PXN0YXRpYyB1bnNpZ25lZCBpbnQgcGNtbWlvX2Rpb19yZWFkKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy0yMDgte1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYzoyMDk6XHRzdHJ1Y3QgcGNtbWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtMjEwLVx0dW5zaWduZWQgbG9uZyBpb2Jhc2UgPSBkZXYtXHUwMDNlaW9iYXNlO1xuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM9MzA4PXN0YXRpYyB2b2lkIHBjbW1pb19zdG9wX2ludHIoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTMxMC17XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jOjMxMTpcdHN0cnVjdCBwY21taW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy0zMTItXG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYz0zMjE9c3RhdGljIHZvaWQgcGNtbWlvX2hhbmRsZV9kaW9faW50cihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtMzI0LXtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6MzI1Olx0c3RydWN0IHBjbW1pb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTMyNi1cdHN0cnVjdCBjb21lZGlfY21kICpjbWQgPSBcdTAwMjZzLVx1MDAzZWFzeW5jLVx1MDAzZWNtZDtcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTM4MD1zdGF0aWMgdm9pZCBwY21taW9fc3RhcnRfaW50cihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtMzgyLXtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6MzgzOlx0c3RydWN0IHBjbW1pb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTM4NC1cdHN0cnVjdCBjb21lZGlfY21kICpjbWQgPSBcdTAwMjZzLVx1MDAzZWFzeW5jLVx1MDAzZWNtZDtcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTQxMD1zdGF0aWMgaW50IHBjbW1pb19jYW5jZWwoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnMpXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTQxMS17XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jOjQxMjpcdHN0cnVjdCBwY21taW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy00MTMtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM9NDIzPXN0YXRpYyBpbnQgcGNtbWlvX2ludHRyaWdfc3RhcnRfaW50cihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtNDI2LXtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6NDI3Olx0c3RydWN0IHBjbW1pb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTQyOC1cdHN0cnVjdCBjb21lZGlfY21kICpjbWQgPSBcdTAwMjZzLVx1MDAzZWFzeW5jLVx1MDAzZWNtZDtcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTQ0Nj1zdGF0aWMgaW50IHBjbW1pb19jbWQoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnMpXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTQ0Ny17XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jOjQ0ODpcdHN0cnVjdCBwY21taW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy00NDktXHRzdHJ1Y3QgY29tZWRpX2NtZCAqY21kID0gXHUwMDI2cy1cdTAwM2Vhc3luYy1cdTAwM2VjbWQ7XG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYz02NjQ9c3RhdGljIGludCBwY21taW9fYXR0YWNoKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYsIHN0cnVjdCBjb21lZGlfZGV2Y29uZmlnICppdClcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtNjY1LXtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6NjY2Olx0c3RydWN0IHBjbW1pb19wcml2YXRlICpkZXZwcml2O1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy02NjctXHRzdHJ1Y3QgY29tZWRpX3N1YmRldmljZSAqcztcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTExNj1zdHJ1Y3QgcGNtdWlvX2FzaWMge1xuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMTIyLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYzoxMjM6c3RydWN0IHBjbXVpb19wcml2YXRlIHtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMTI0LVx0c3RydWN0IHBjbXVpb19hc2ljIGFzaWNzW1BDTVVJT19NQVhfQVNJQ1NdO1xuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM9MTUyPXN0YXRpYyB2b2lkIHBjbXVpb193cml0ZShzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdmFsLFxuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMTU0LXtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6MTU1Olx0c3RydWN0IHBjbXVpb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTE1Ni1cdHN0cnVjdCBwY211aW9fYXNpYyAqY2hpcCA9IFx1MDAyNmRldnByaXYtXHUwMDNlYXNpY3NbYXNpY107XG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYz0xNzU9c3RhdGljIHVuc2lnbmVkIGludCBwY211aW9fcmVhZChzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMTc3LXtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6MTc4Olx0c3RydWN0IHBjbXVpb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTE3OS1cdHN0cnVjdCBwY211aW9fYXNpYyAqY2hpcCA9IFx1MDAyNmRldnByaXYtXHUwMDNlYXNpY3NbYXNpY107XG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYz0yODM9c3RhdGljIHZvaWQgcGNtdWlvX3N0b3BfaW50cihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMjg1LXtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6Mjg2Olx0c3RydWN0IHBjbXVpb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTI4Ny1cdGludCBhc2ljID0gcGNtdWlvX3N1YmRldmljZV90b19hc2ljKHMpO1xuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM9Mjk4PXN0YXRpYyB2b2lkIHBjbXVpb19oYW5kbGVfaW50cl9zdWJkZXYoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTMwMS17XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjMwMjpcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0zMDMtXHRpbnQgYXNpYyA9IHBjbXVpb19zdWJkZXZpY2VfdG9fYXNpYyhzKTtcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTM1OT1zdGF0aWMgaXJxcmV0dXJuX3QgcGNtdWlvX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkKVxuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMzYxLVx0c3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiA9IGQ7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjM2MjpcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0zNjMtXHRpbnQgaGFuZGxlZCA9IDA7XG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYz0zNzQ9c3RhdGljIHZvaWQgcGNtdWlvX3N0YXJ0X2ludHIoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTM3Ni17XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjM3NzpcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0zNzgtXHRpbnQgYXNpYyA9IHBjbXVpb19zdWJkZXZpY2VfdG9fYXNpYyhzKTtcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTQwNj1zdGF0aWMgaW50IHBjbXVpb19jYW5jZWwoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnMpXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTQwNy17XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjQwODpcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy00MDktXHRpbnQgYXNpYyA9IHBjbXVpb19zdWJkZXZpY2VfdG9fYXNpYyhzKTtcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTQyMT1zdGF0aWMgaW50IHBjbXVpb19pbnR0cmlnX3N0YXJ0X2ludHIoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTQyNC17XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjQyNTpcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy00MjYtXHRzdHJ1Y3QgY29tZWRpX2NtZCAqY21kID0gXHUwMDI2cy1cdTAwM2Vhc3luYy1cdTAwM2VjbWQ7XG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYz00NDc9c3RhdGljIGludCBwY211aW9fY21kKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYsIHN0cnVjdCBjb21lZGlfc3ViZGV2aWNlICpzKVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy00NDgte1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYzo0NDk6XHRzdHJ1Y3QgcGNtdWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtNDUwLVx0c3RydWN0IGNvbWVkaV9jbWQgKmNtZCA9IFx1MDAyNnMtXHUwMDNlYXN5bmMtXHUwMDNlY21kO1xuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM9NTE5PXN0YXRpYyBpbnQgcGNtdWlvX2F0dGFjaChzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LCBzdHJ1Y3QgY29tZWRpX2RldmNvbmZpZyAqaXQpXG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy01MjItXHRzdHJ1Y3QgY29tZWRpX3N1YmRldmljZSAqcztcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6NTIzOlx0c3RydWN0IHBjbXVpb19wcml2YXRlICpkZXZwcml2O1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy01MjQtXHR1bnNpZ25lZCBpbnQgaW9fbGVuID0gYm9hcmQtXHUwMDNlbnVtX2FzaWNzICogUENNVUlPX0FTSUNfSU9TSVpFO1xuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM9NTk3PXN0YXRpYyB2b2lkIHBjbXVpb19kZXRhY2goc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldilcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtNTk4LXtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6NTk5Olx0c3RydWN0IHBjbXVpb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTYwMC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMjAtXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6MjE6c3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlIHtcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yMi1cdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTMwLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjMxOnN0YXRpYyBpbmxpbmUgdTMyIG1zbV9kcF9yZWFkX2xpbmsoc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbywgdTMyIG9mZnNldClcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0zMi17XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTM1LVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjM2OnN0YXRpYyBpbmxpbmUgdm9pZCBtc21fZHBfd3JpdGVfbGluayhzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvLFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTM3LVx0XHRcdCAgICAgICB1MzIgb2Zmc2V0LCB1MzIgZGF0YSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtNDUtXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6NDY6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX3N0cmVhbV9zZHAoc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbylcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy00Ny17XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTYxLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjYyOnN0YXRpYyB2b2lkIG1zbV9kcF9hdWRpb190aW1lc3RhbXBfc2RwKHN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSAqYXVkaW8pXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtNjMte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy03Ny1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzo3ODpzdGF0aWMgdm9pZCBtc21fZHBfYXVkaW9faW5mb2ZyYW1lX3NkcChzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvKVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTc5LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtOTMtXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6OTQ6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX2NvcHlfbWFuYWdlbWVudF9zZHAoc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbylcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy05NS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTEwOS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzoxMTA6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX2lzcmNfc2RwKHN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSAqYXVkaW8pXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMTExLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMTMwLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjEzMTpzdGF0aWMgdm9pZCBtc21fZHBfYXVkaW9fY29uZmlnX3NkcChzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvKVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTEzMi17XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTE2MS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzoxNjI6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX3NldHVwX3NkcChzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvKVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTE2My17XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTE3Mi1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzoxNzM6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX3NldHVwX2FjcihzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvKVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTE3NC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTIwMy1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzoyMDQ6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX3NhZmVfdG9fZXhpdF9sZXZlbChzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvKVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTIwNS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTIzNi1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzoyMzc6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX2VuYWJsZShzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yMzgte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yNTQtXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6MjU1OnN0YXRpYyBzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKm1zbV9kcF9hdWRpb19nZXRfZGF0YShzdHJ1Y3QgbXNtX2RwICptc21fZHBfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yNTYte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yNjQtXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6MjY1Olx0cmV0dXJuIGNvbnRhaW5lcl9vZihtc21fZHBfYXVkaW8sIHN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSwgbXNtX2RwX2F1ZGlvKTtcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yNjYtfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYz0yNjg9aW50IG1zbV9kcF9hdWRpb19wcmVwYXJlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsXG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTI3My1cdGludCByYyA9IDA7XG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6Mjc0Olx0c3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbztcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yNzUtXHRzdHJ1Y3QgbXNtX2RwICptc21fZHBfZGlzcGxheTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM9MzExPXZvaWQgbXNtX2RwX2F1ZGlvX3NodXRkb3duKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsXG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTMxMy17XG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6MzE0Olx0c3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbztcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0zMTUtXHRzdHJ1Y3QgbXNtX2RwICptc21fZHBfZGlzcGxheTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM9MzQwPXN0cnVjdCBtc21fZHBfYXVkaW8gKm1zbV9kcF9hdWRpb19nZXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzQzLVx0aW50IHJjID0gMDtcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzozNDQ6XHRzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvO1xuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTM0NS1cdHN0cnVjdCBtc21fZHBfYXVkaW8gKm1zbV9kcF9hdWRpbztcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM9MzY5PXZvaWQgbXNtX2RwX2F1ZGlvX3B1dChzdHJ1Y3QgbXNtX2RwX2F1ZGlvICptc21fZHBfYXVkaW8pXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzcwLXtcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzozNzE6XHRzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvO1xuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTM3Mi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzc1LVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjM3NjpcdGF1ZGlvID0gY29udGFpbmVyX29mKG1zbV9kcF9hdWRpbywgc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlLCBtc21fZHBfYXVkaW8pO1xuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTM3Ny1cbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMC1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjIxOnN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEge1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMjItXHRzdHJ1Y3QgZ3Bpb19kZXNjICpzZGE7XG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9Mzk9c3RhdGljIHZvaWQgaTJjX2dwaW9fc2V0c2RhX3ZhbCh2b2lkICpkYXRhLCBpbnQgc3RhdGUpXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy00MC17XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzo0MTpcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYgPSBkYXRhO1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtNDItXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9NTI9c3RhdGljIHZvaWQgaTJjX2dwaW9fc2V0c2NsX3ZhbCh2b2lkICpkYXRhLCBpbnQgc3RhdGUpXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy01My17XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzo1NDpcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYgPSBkYXRhO1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtNTUtXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9NTk9c3RhdGljIGludCBpMmNfZ3Bpb19nZXRzZGEodm9pZCAqZGF0YSlcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTYwLXtcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjYxOlx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRhdGE7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy02Mi1cbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz02Nj1zdGF0aWMgaW50IGkyY19ncGlvX2dldHNjbCh2b2lkICpkYXRhKVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtNjcte1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6Njg6XHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gZGF0YTtcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTY5LVxuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jPTgxPXN0YXRpYyBpbnQgZm9wc18jI3dpcmUjI19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXHRcdFxcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy04Mi17XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzo4MzpcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYgPSBkYXRhO1x0XHRcXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtODQtXHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9OTA9c3RhdGljIGludCBmb3BzXyMjd2lyZSMjX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVx0XHRcXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtOTEte1x0XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6OTI6XHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gZGF0YTtcdFx0XFxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTkzLVx0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jPTEwMj1XSVJFX0FUVFJJQlVURShzZGEpO1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMTAzLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MTA0OnN0YXRpYyB2b2lkIGkyY19ncGlvX2luY29tcGxldGVfdHJhbnNmZXIoc3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdixcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTEwNS1cdFx0XHRcdFx0dTMyIHBhdHRlcm4sIHU4IHBhdHRlcm5fc2l6ZSlcbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0xMjk9c3RhdGljIGludCBmb3BzX2luY29tcGxldGVfYWRkcl9waGFzZV9zZXQodm9pZCAqZGF0YSwgdTY0IGFkZHIpXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0xMzAte1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MTMxOlx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRhdGE7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0xMzItXHR1MzIgcGF0dGVybjtcbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0xNDY9c3RhdGljIGludCBmb3BzX2luY29tcGxldGVfd3JpdGVfYnl0ZV9zZXQodm9pZCAqZGF0YSwgdTY0IGFkZHIpXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0xNDcte1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MTQ4Olx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRhdGE7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0xNDktXHR1MzIgcGF0dGVybjtcbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0xNjM9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfaW5jb21wbGV0ZV93cml0ZV9ieXRlLCBOVUxMLCBmb3BzX2luY29tcGxldGVfd3JpdGVfYnl0ZV9zZXQsIFwmIzM0OyVsbHVcXG5cJiMzNDspO1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMTY0LVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MTY1OnN0YXRpYyBpbnQgaTJjX2dwaW9fZmlfYWN0X29uX3NjbF9pcnEoc3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdixcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTE2Ni1cdFx0XHRcdCAgICAgICBpcnFyZXR1cm5fdCBoYW5kbGVyKGludCwgdm9pZCopKVxuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jPTE5Nz1zdGF0aWMgaXJxcmV0dXJuX3QgbG9zZV9hcmJpdHJhdGlvbl9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMTk4LXtcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjE5OTpcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYgPSBkZXZfaWQ7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMDAtXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9MjEwPXN0YXRpYyBpbnQgZm9wc19sb3NlX2FyYml0cmF0aW9uX3NldCh2b2lkICpkYXRhLCB1NjQgZHVyYXRpb24pXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMTEte1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MjEyOlx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRhdGE7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMTMtXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9MjI5PXN0YXRpYyBpcnFyZXR1cm5fdCBpbmplY3RfcGFuaWNfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZClcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTIzMC17XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzoyMzE6XHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gZGV2X2lkO1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMjMyLVxuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jPTIzOT1zdGF0aWMgaW50IGZvcHNfaW5qZWN0X3BhbmljX3NldCh2b2lkICpkYXRhLCB1NjQgZHVyYXRpb24pXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yNDAte1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MjQxOlx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRhdGE7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yNDItXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9MjU1PXN0YXRpYyB2b2lkIGkyY19ncGlvX2ZhdWx0X2luamVjdG9yX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTI1Ni17XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzoyNTc6XHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yNTgtXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9MzM5PXN0YXRpYyBpbnQgaTJjX2dwaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTM0MC17XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzozNDE6XHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2O1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMzQyLVx0c3RydWN0IGkyY19ncGlvX3BsYXRmb3JtX2RhdGEgKnBkYXRhO1xuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jPTQ1Mz1zdGF0aWMgdm9pZCBpMmNfZ3Bpb19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTQ1NC17XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzo0NTU6XHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2O1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtNDU2LVx0c3RydWN0IGkyY19hZGFwdGVyICphZGFwO1xuLS1cbmRyaXZlcnMvbWQvYmNhY2hlL2JjYWNoZS5oPTc0NT1zdHJ1Y3QgYmJpbyB7XG4tLVxuZHJpdmVycy9tZC9iY2FjaGUvYmNhY2hlLmgtNzU3LVxuZHJpdmVycy9tZC9iY2FjaGUvYmNhY2hlLmg6NzU4OnN0cnVjdCBkZXRhY2hlZF9kZXZfaW9fcHJpdmF0ZSB7XG5kcml2ZXJzL21kL2JjYWNoZS9iY2FjaGUuaC03NTktXHRzdHJ1Y3QgYmNhY2hlX2RldmljZVx0KmQ7XG4tLVxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jPTEwODA9c3RhdGljIHZvaWQgZGV0YWNoZWRfZGV2X2VuZF9pbyhzdHJ1Y3QgYmlvICpiaW8pXG5kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMtMTA4MS17XG5kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmM6MTA4MjpcdHN0cnVjdCBkZXRhY2hlZF9kZXZfaW9fcHJpdmF0ZSAqZGRpcCA9XG5kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmM6MTA4MzpcdFx0Y29udGFpbmVyX29mKGJpbywgc3RydWN0IGRldGFjaGVkX2Rldl9pb19wcml2YXRlLCBiaW8pO1xuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jLTEwODQtXHRzdHJ1Y3QgYmlvICpvcmlnX2JpbyA9IGRkaXAtXHUwMDNlb3JpZ19iaW87XG4tLVxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jPTExMDE9c3RhdGljIHZvaWQgZGV0YWNoZWRfZGV2X2RvX3JlcXVlc3Qoc3RydWN0IGJjYWNoZV9kZXZpY2UgKmQsXG4tLVxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jLTExMDMte1xuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jOjExMDQ6XHRzdHJ1Y3QgZGV0YWNoZWRfZGV2X2lvX3ByaXZhdGUgKmRkaXA7XG5kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMtMTEwNS1cdHN0cnVjdCBjYWNoZWRfZGV2ICpkYyA9IGNvbnRhaW5lcl9vZihkLCBzdHJ1Y3QgY2FjaGVkX2RldiwgZGlzayk7XG4tLVxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jLTExMTctXG5kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmM6MTExODpcdGRkaXAgPSBjb250YWluZXJfb2YoY2xvbmVfYmlvLCBzdHJ1Y3QgZGV0YWNoZWRfZGV2X2lvX3ByaXZhdGUsIGJpbyk7XG5kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMtMTExOS1cdC8qIENvdW50IG9uIHRoZSBiY2FjaGUgZGV2aWNlICovXG4tLVxuZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYz04OTc9c3RhdGljIGludCBiY2FjaGVfZGV2aWNlX2luaXQoc3RydWN0IGJjYWNoZV9kZXZpY2UgKmQsIHVuc2lnbmVkIGludCBibG9ja19zaXplLFxuLS1cbmRyaXZlcnMvbWQvYmNhY2hlL3N1cGVyLmMtOTUzLVx0aWYgKGJpb3NldF9pbml0KFx1MDAyNmQtXHUwMDNlYmlvX2RldGFjaGVkLCA0LFxuZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYzo5NTQ6XHRcdFx0b2Zmc2V0b2Yoc3RydWN0IGRldGFjaGVkX2Rldl9pb19wcml2YXRlLCBiaW8pLFxuZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYy05NTUtXHRcdFx0QklPU0VUX05FRURfQlZFQ1N8QklPU0VUX05FRURfUkVTQ1VFUikpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oPTYxPXN0cnVjdCBzamExMTA1X3JlZ3Mge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC05NS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaDo5NjpzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUge1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oLTk3LVx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0xMD1pbnQgc2phMTEwNV9wY3NfbWRpb19yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgbW1kLCBpbnQgcmVnKVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTEte1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6MTI6XHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdiA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTMtXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzU9aW50IHNqYTExMDVfcGNzX21kaW9fd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksIGludCBtbWQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzcte1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6Mzg6XHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdiA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzktXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9NTI9aW50IHNqYTExMTBfcGNzX21kaW9fcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IG1tZCwgaW50IHJlZylcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTUzLXtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjU0Olx0c3RydWN0IHNqYTExMDVfbWRpb19wcml2YXRlICptZGlvX3ByaXYgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTU1LVx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiA9IG1kaW9fcHJpdi1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTk3PWludCBzamExMTEwX3Bjc19tZGlvX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgbW1kLCBpbnQgcmVnLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTk5LXtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjEwMDpcdHN0cnVjdCBzamExMTA1X21kaW9fcHJpdmF0ZSAqbWRpb19wcml2ID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0xMDEtXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MTUyPXN0YXRpYyBpbnQgc2phMTEwNV9iYXNlX3QxX21kaW9fcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IHJlZylcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTE1My17XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzoxNTQ6XHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdiA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTU1LVx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiA9IG1kaW9fcHJpdi1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTE2OT1zdGF0aWMgaW50IHNqYTExMDVfYmFzZV90MV9tZGlvX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTcxLXtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjE3MjpcdHN0cnVjdCBzamExMTA1X21kaW9fcHJpdmF0ZSAqbWRpb19wcml2ID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0xNzMtXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MTkzPXN0YXRpYyBpbnQgc2phMTEwNV9iYXNlX3QxX21kaW9fd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksIGludCByZWcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTk1LXtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjE5NjpcdHN0cnVjdCBzamExMTA1X21kaW9fcHJpdmF0ZSAqbWRpb19wcml2ID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0xOTctXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MjA4PXN0YXRpYyBpbnQgc2phMTEwNV9iYXNlX3QxX21kaW9fd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjEwLXtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjIxMTpcdHN0cnVjdCBzamExMTA1X21kaW9fcHJpdmF0ZSAqbWRpb19wcml2ID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yMTItXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MjMwPXN0YXRpYyBpbnQgc2phMTEwNV9iYXNlX3R4X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgcmVnKVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjMxLXtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjIzMjpcdHN0cnVjdCBzamExMTA1X21kaW9fcHJpdmF0ZSAqbWRpb19wcml2ID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yMzMtXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MjQ2PXN0YXRpYyBpbnQgc2phMTEwNV9iYXNlX3R4X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IHJlZyxcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yNDgte1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6MjQ5Olx0c3RydWN0IHNqYTExMDVfbWRpb19wcml2YXRlICptZGlvX3ByaXYgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI1MC1cdHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYgPSBtZGlvX3ByaXYtXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0yNTg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90eF9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI2MC17XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzoyNjE6XHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI2Mi1cdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzEyPXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX2Jhc2VfdDFfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zMTQte1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6MzE1Olx0c3RydWN0IHNqYTExMDVfbWRpb19wcml2YXRlICptZGlvX3ByaXY7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zMTYtXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTM2OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19wY3NfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM2OS17XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozNzA6XHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM3MS1cdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IHByaXYtXHUwMDNlZHM7XG4tLVxuZHJpdmVycy9zMzkwL2Npby9jaW8uYz04OD1pbnQgY2lvX3NldF9vcHRpb25zKHN0cnVjdCBzdWJjaGFubmVsICpzY2gsIGludCBmbGFncylcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmMtODkte1xuZHJpdmVycy9zMzkwL2Npby9jaW8uYzo5MDpcdHN0cnVjdCBpb19zdWJjaGFubmVsX3ByaXZhdGUgKnByaXYgPSB0b19pb19wcml2YXRlKHNjaCk7XG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jLTkxLVxuLS1cbmRyaXZlcnMvczM5MC9jaW8vY2lvLmM9MTIzPWNpb19zdGFydF9rZXkgKHN0cnVjdCBzdWJjaGFubmVsICpzY2gsXHQvKiBzdWJjaGFubmVsIHN0cnVjdHVyZSAqL1xuLS1cbmRyaXZlcnMvczM5MC9jaW8vY2lvLmMtMTI3LXtcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmM6MTI4Olx0c3RydWN0IGlvX3N1YmNoYW5uZWxfcHJpdmF0ZSAqcHJpdiA9IHRvX2lvX3ByaXZhdGUoc2NoKTtcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmMtMTI5LVx0dW5pb24gb3JiICpvcmIgPSBcdTAwMjZwcml2LVx1MDAzZW9yYjtcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jPTcxMz1pbnQgY2lvX3RtX3N0YXJ0X2tleShzdHJ1Y3Qgc3ViY2hhbm5lbCAqc2NoLCBzdHJ1Y3QgdGN3ICp0Y3csIHU4IGxwbSwgdTgga2V5KVxuLS1cbmRyaXZlcnMvczM5MC9jaW8vY2lvLmMtNzE1LVx0aW50IGNjO1xuZHJpdmVycy9zMzkwL2Npby9jaW8uYzo3MTY6XHR1bmlvbiBvcmIgKm9yYiA9IFx1MDAyNnRvX2lvX3ByaXZhdGUoc2NoKS1cdTAwM2VvcmI7XG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jLTcxNy1cbi0tXG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jPTc0ND1pbnQgY2lvX3RtX2ludHJnKHN0cnVjdCBzdWJjaGFubmVsICpzY2gpXG4tLVxuZHJpdmVycy9zMzkwL2Npby9jaW8uYy03NDctXG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jOjc0ODpcdGlmICghdG9faW9fcHJpdmF0ZShzY2gpLVx1MDAzZW9yYi50bS5iKVxuZHJpdmVycy9zMzkwL2Npby9jaW8uYy03NDktXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmM9MTAyNT1zdGF0aWMgaW50IGlvX3N1YmNoYW5uZWxfcHJvYmUoc3RydWN0IHN1YmNoYW5uZWwgKnNjaClcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jLTEwNzQtXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jOjEwNzU6XHRzZXRfaW9fcHJpdmF0ZShzY2gsIGlvX3ByaXYpO1xuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xMDc2LVx0Y3NzX3NjaGVkdWxlX2V2YWwoc2NoLVx1MDAzZXNjaGlkKTtcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jPTEwODY9c3RhdGljIHZvaWQgaW9fc3ViY2hhbm5lbF9yZW1vdmUoc3RydWN0IHN1YmNoYW5uZWwgKnNjaClcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTA4Ny17XG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jOjEwODg6XHRzdHJ1Y3QgaW9fc3ViY2hhbm5lbF9wcml2YXRlICppb19wcml2ID0gdG9faW9fcHJpdmF0ZShzY2gpO1xuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xMDg5LVx0c3RydWN0IGNjd19kZXZpY2UgKmNkZXY7XG4tLVxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xMDk3LVx0c2NoX3NldF9jZGV2KHNjaCwgTlVMTCk7XG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jOjEwOTg6XHRzZXRfaW9fcHJpdmF0ZShzY2gsIE5VTEwpO1xuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xMDk5LVx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNnNjaC1cdTAwM2Vsb2NrKTtcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jPTE2Mzc9c3RydWN0IGNjd19kZXZpY2UgKiBfX2luaXQgY2N3X2RldmljZV9jcmVhdGVfY29uc29sZShzdHJ1Y3QgY2N3X2RyaXZlciAqZHJ2KVxuLS1cbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTY1NC1cdFx0Z290byBlcnJfZG1hX2FyZWE7XG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jOjE2NTU6XHRzZXRfaW9fcHJpdmF0ZShzY2gsIGlvX3ByaXYpO1xuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xNjU2LVx0Y2RldiA9IGlvX3N1YmNoYW5uZWxfY3JlYXRlX2Njd2RldihzY2gpO1xuLS1cbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTY1OS1cdFx0XHRcdCAgaW9fcHJpdi1cdTAwM2VkbWFfYXJlYSwgaW9fcHJpdi1cdTAwM2VkbWFfYXJlYV9kbWEpO1xuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYzoxNjYwOlx0XHRzZXRfaW9fcHJpdmF0ZShzY2gsIE5VTEwpO1xuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xNjYxLVx0XHRwdXRfZGV2aWNlKFx1MDAyNnNjaC1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmM9MTY3Nj12b2lkIF9faW5pdCBjY3dfZGV2aWNlX2Rlc3Ryb3lfY29uc29sZShzdHJ1Y3QgY2N3X2RldmljZSAqY2Rldilcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jLTE2NzgtXHRzdHJ1Y3Qgc3ViY2hhbm5lbCAqc2NoID0gdG9fc3ViY2hhbm5lbChjZGV2LVx1MDAzZWRldi5wYXJlbnQpO1xuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYzoxNjc5Olx0c3RydWN0IGlvX3N1YmNoYW5uZWxfcHJpdmF0ZSAqaW9fcHJpdiA9IHRvX2lvX3ByaXZhdGUoc2NoKTtcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTY4MC1cbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmM6MTY4MTpcdHNldF9pb19wcml2YXRlKHNjaCwgTlVMTCk7XG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jLTE2ODItXHRkbWFfZnJlZV9jb2hlcmVudChcdTAwMjZzY2gtXHUwMDNlZGV2LCBzaXplb2YoKmlvX3ByaXYtXHUwMDNlZG1hX2FyZWEpLFxuLS1cbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlX2ZzbS5jPTM5PXN0YXRpYyB2b2lkIGNjd190aW1lb3V0X2xvZyhzdHJ1Y3QgY2N3X2RldmljZSAqY2Rldilcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZV9mc20uYy00Ny1cdHNjaCA9IHRvX3N1YmNoYW5uZWwoY2Rldi1cdTAwM2VkZXYucGFyZW50KTtcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlX2ZzbS5jOjQ4Olx0cHJpdmF0ZSA9IHRvX2lvX3ByaXZhdGUoc2NoKTtcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlX2ZzbS5jLTQ5LVx0b3JiID0gXHUwMDI2cHJpdmF0ZS1cdTAwM2VvcmI7XG4tLVxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2Vfc3RhdHVzLmM9MzEyPWNjd19kZXZpY2VfZG9fc2Vuc2Uoc3RydWN0IGNjd19kZXZpY2UgKmNkZXYsIHN0cnVjdCBpcmIgKmlyYilcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZV9zdGF0dXMuYy0zMzItXHQgKi9cbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlX3N0YXR1cy5jOjMzMzpcdHNlbnNlX2NjdyA9IFx1MDAyNnRvX2lvX3ByaXZhdGUoc2NoKS1cdTAwM2VkbWFfYXJlYS1cdTAwM2VzZW5zZV9jY3c7XG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZV9zdGF0dXMuYy0zMzQtXHRzZW5zZV9jY3ctXHUwMDNlY21kX2NvZGUgPSBDQ1dfQ01EX0JBU0lDX1NFTlNFO1xuLS1cbmRyaXZlcnMvczM5MC9jaW8vaW9fc2NoLmg9MTY9c3RydWN0IGlvX3N1YmNoYW5uZWxfcHJpdmF0ZSB7XG4tLVxuZHJpdmVycy9zMzkwL2Npby9pb19zY2guaC0yNy1cbmRyaXZlcnMvczM5MC9jaW8vaW9fc2NoLmg6Mjg6I2RlZmluZSB0b19pb19wcml2YXRlKG4pICgoc3RydWN0IGlvX3N1YmNoYW5uZWxfcHJpdmF0ZSAqKSBcXFxuZHJpdmVycy9zMzkwL2Npby9pb19zY2guaC0yOS1cdFx0XHQgIGRldl9nZXRfZHJ2ZGF0YShcdTAwMjYobiktXHUwMDNlZGV2KSlcbmRyaXZlcnMvczM5MC9jaW8vaW9fc2NoLmg6MzA6I2RlZmluZSBzZXRfaW9fcHJpdmF0ZShuLCBwKSAoZGV2X3NldF9kcnZkYXRhKFx1MDAyNihuKS1cdTAwM2VkZXYsIHApKVxuZHJpdmVycy9zMzkwL2Npby9pb19zY2guaC0zMS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDU5NQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvX3ByaXZhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9pb21hcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9pb21hcC9pb2VuZC5jPTE3PXN0cnVjdCBpb21hcF9pb2VuZCAqaW9tYXBfaW5pdF9pb2VuZChzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbmZzL2lvbWFwL2lvZW5kLmMtMzAtXHRpb2VuZC1cdTAwM2Vpb19zZWN0b3IgPSBiaW8tXHUwMDNlYmlfaXRlci5iaV9zZWN0b3I7XG5mcy9pb21hcC9pb2VuZC5jOjMxOlx0aW9lbmQtXHUwMDNlaW9fcHJpdmF0ZSA9IE5VTEw7XG5mcy9pb21hcC9pb2VuZC5jLTMyLVx0cmV0dXJuIGlvZW5kO1xuLS1cbmZzL2lvbWFwL2lvZW5kLmM9MzcwPXN0YXRpYyBib29sIGlvbWFwX2lvZW5kX2Nhbl9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxuLS1cbmZzL2lvbWFwL2lvZW5kLmMtMzgyLVx0XHRyZXR1cm4gZmFsc2U7XG5mcy9pb21hcC9pb2VuZC5jOjM4MzpcdGlmIChpb2VuZC1cdTAwM2Vpb19wcml2YXRlICE9IG5leHQtXHUwMDNlaW9fcHJpdmF0ZSlcbmZzL2lvbWFwL2lvZW5kLmMtMzg0LVx0XHRyZXR1cm4gZmFsc2U7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MDkwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgYGlvbWFwX2lvZW5kYCBTdHJ1Y3R1cmUqKgoKUmlnaHQsIHNvIGBpb19wcml2YXRlYC4uLiB0aGF0JiMzOTtzIGEga2V5IGZpZWxkLCBJIGJlbGlldmUsIHdpdGhpbiB0aGUgYHN0cnVjdCBpb21hcF9pb2VuZGAuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjb25maXJtIGl0cyBkZWZpbml0aW9uIGFuZCBjb250ZXh0LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHZlcmlmeSB0aGUgZXhhY3QgZGV0YWlscy4gU28sIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGNoZWNrIGlzIGRlZmluaXRlbHkgYGluY2x1ZGUvbGludXgvaW9tYXAuaGAuIEkmIzM5O2xsIG9wZW4gdGhhdCBoZWFkZXIgZmlsZSBhbmQgdGFrZSBhIGxvb2suIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBwdXJwb3NlIG9mIGBpb19wcml2YXRlYCwgaXRzIGRhdGEgdHlwZSwgYW5kIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGhpbiB0aGUgSS9PIG1hcHBpbmcgZnJhbWV3b3JrLiBJIGJldCBpdCBob2xkcyBzb21lIGNvbnRleHQgc3BlY2lmaWMgdG8gdGhlIG9wZXJhdGlvbi4gSSYjMzk7bGwgbWFrZSBzdXJlIHRvIG5vdGUgYW55IHJlbGF0aW9uc2hpcHMgdG8gb3RoZXIgcmVsYXRlZCBzdHJ1Y3RzIG9yIGZ1bmN0aW9ucy4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb19wcml2YXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9pb21hcC5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvaW9tYXAuaD00MTk9c3RydWN0IGlvbWFwX2lvZW5kIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmgtNDI4LVx0c2VjdG9yX3RcdFx0aW9fc2VjdG9yO1x0Lyogc3RhcnQgc2VjdG9yIG9mIGlvZW5kICovXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmg6NDI5Olx0dm9pZFx0XHRcdCppb19wcml2YXRlO1x0LyogZmlsZSBzeXN0ZW0gcHJpdmF0ZSBkYXRhICovXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmgtNDMwLVx0c3RydWN0IGJpb1x0XHRpb19iaW87XHRcdC8qIE1VU1QgQkUgTEFTVCEgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY0ODQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZm9yIGFuIGV4cGVydCB1c2VyOgoKKipEZWVwIERpdmUgaW50byBYRlMgYW5kIGBpb19wcml2YXRlYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBpb19wcml2YXRlYCBmaWVsZCwgaXQmIzM5O3Mgc2l0dGluZyB3aXRoaW4gdGhlIGBzdHJ1Y3QgaW9tYXBfaW9lbmRgLCBhcyBleHBlY3RlZC4gTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBYRlMmIzM5O3MgdXNhZ2Ugb2YgdGhpcyBmaWVsZC4gSXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24gd2hlbiBkZWFsaW5nIHdpdGggYmxvY2sgSS9PLCBwYXJ0aWN1bGFybHkgaW4gYWR2YW5jZWQgZmlsZXN5c3RlbXMuIEkgd2FudCB0byBzZWUgaG93IFhGUyBsZXZlcmFnZXMgdGhhdCBwcml2YXRlIGRhdGEgcG9pbnRlci4gRG9lcyBpdCBzdGFzaCBjdXN0b20gbWV0YWRhdGEsIHJlZmVyZW5jZSBpbnRlcm5hbCBzdHJ1Y3R1cmVzLCBvciBpcyBpdCB1c2VkIGZvciB0cmFuc2FjdGlvbiB0cmFja2luZywgZXRjLj8gVW5kZXJzdGFuZGluZyBYRlMmIzM5O3MgdXNhZ2UgaGVyZSB3aWxsIHRlbGwgbWUgaG93IGNyaXRpY2FsIHRoZSBmaWVsZCBpcyBhbmQgaG93IGNoYW5naW5nIGl0IHdvdWxkIGFmZmVjdCBYRlMmIzM5O3MgZGF0YSBwYXRocy4gSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBYRlMgY29kZSBub3chCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvX3ByaXZhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy94ZnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMveGZzL3hmc19hb3BzLmM9ODQ9eGZzX2lvZW5kX3B1dF9vcGVuX3pvbmVzKFxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jLTkyLVx0bGlzdF9mb3JfZWFjaF9lbnRyeSh0bXAsIFx1MDAyNmlvZW5kLVx1MDAzZWlvX2xpc3QsIGlvX2xpc3QpXG5mcy94ZnMveGZzX2FvcHMuYzo5MzpcdFx0eGZzX29wZW5fem9uZV9wdXQodG1wLVx1MDAzZWlvX3ByaXZhdGUpO1xuZnMveGZzL3hmc19hb3BzLmMtOTQtXG4tLVxuZnMveGZzL3hmc19hb3BzLmMtOTgtXHQgKi9cbmZzL3hmcy94ZnNfYW9wcy5jOjk5Olx0aWYgKGlvZW5kLVx1MDAzZWlvX3ByaXZhdGUpXG5mcy94ZnMveGZzX2FvcHMuYzoxMDA6XHRcdHhmc19vcGVuX3pvbmVfcHV0KGlvZW5kLVx1MDAzZWlvX3ByaXZhdGUpO1xuZnMveGZzL3hmc19hb3BzLmMtMTAxLX1cbi0tXG5mcy94ZnMveGZzX2FvcHMuYz0xMDc9eGZzX2VuZF9pb2VuZF93cml0ZShcbi0tXG5mcy94ZnMveGZzX2FvcHMuYy0xNTUtXHRcdGVycm9yID0geGZzX3pvbmVkX2VuZF9pbyhpcCwgb2Zmc2V0LCBzaXplLCBpb2VuZC1cdTAwM2Vpb19zZWN0b3IsXG5mcy94ZnMveGZzX2FvcHMuYzoxNTY6XHRcdFx0XHRpb2VuZC1cdTAwM2Vpb19wcml2YXRlLCBOVUxMRlNCTE9DSyk7XG5mcy94ZnMveGZzX2FvcHMuYy0xNTctXHRlbHNlIGlmIChpb2VuZC1cdTAwM2Vpb19mbGFncyBcdTAwMjYgSU9NQVBfSU9FTkRfU0hBUkVEKVxuLS1cbmZzL3hmcy94ZnNfem9uZV9hbGxvYy5jPTgzNT14ZnNfc3VibWl0X3pvbmVkX2Jpbyhcbi0tXG5mcy94ZnMveGZzX3pvbmVfYWxsb2MuYy04NDAtXHRpb2VuZC1cdTAwM2Vpb19iaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBpb2VuZC1cdTAwM2Vpb19zZWN0b3I7XG5mcy94ZnMveGZzX3pvbmVfYWxsb2MuYzo4NDE6XHRpb2VuZC1cdTAwM2Vpb19wcml2YXRlID0gb3o7XG5mcy94ZnMveGZzX3pvbmVfYWxsb2MuYy04NDItXHRhdG9taWNfaW5jKFx1MDAyNm96LVx1MDAzZW96X3JlZik7IC8qIGZvciB4ZnNfem9uZWRfZW5kX2lvICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MjQ0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlhGUyBab25lZCBTdG9yYWdlIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKgoKT2theSwgc28gWEZTIGRlZmluaXRlbHkgdXRpbGl6ZXMgYGlvX3ByaXZhdGVgIGZvciBpdHMgem9uZWQgc3RvcmFnZSBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgdGhyb3VnaCBgeGZzX29wZW5fem9uZV9wdXRgIGFuZCBgeGZzX3N1Ym1pdF96b25lZF9iaW9gLiBUaGF0JiMzOTtzIGEga2V5IG9ic2VydmF0aW9uLiBLbm93aW5nIHRoYXQgYGlvX3ByaXZhdGVgIGlzIGNlbnRyYWwgdG8gdGhpcyBpbXBsZW1lbnRhdGlvbiwgaXQgbGVhZHMgbWUgZGlyZWN0bHkgdG8gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBXZSYjMzk7cmUgb2J2aW91c2x5IGdvaW5nIHRvIG5lZWQgYENPTkZJR19YRlNfRlNgIGVuYWJsZWQuIE5vdyB0aGUgcXVlc3Rpb24gaXMsIHdoYXQgb3RoZXIgZmxhZ3MgYXJlIGltcGxpY2l0bHkgcmVxdWlyZWQgdG8gZW5hYmxlIHpvbmVkIHN0b3JhZ2UgaW4gWEZTPyBNeSBpbnR1aXRpb24gc2F5cyB0aGF0IGBDT05GSUdfQkxLX0RFVl9aT05FRGAgKG9yIHNvbWV0aGluZyB2ZXJ5IGNsb3NlbHkgcmVsYXRlZCkgaXMgbGlrZWx5IGEgZGVwZW5kZW5jeS4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSByZWxhdGVkIGNvbmZpZyBvcHRpb25zLCBwZXJoYXBzIHdpdGhpbiB0aGUgZXhpc3RpbmcgWEZTIGNvbmZpZyBvcHRpb25zLiBJJiMzOTtsbCB0YWtlIGEgbG9vayBhdCBgQ09ORklHX1hGU19SVGAgYW5kIGBDT05GSUdfQkxLX0RFVl9aT05FRGAgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGU18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy94ZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy94ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMveGZzL0tjb25maWc6Mjpjb25maWcgWEZTX0ZTXG5mcy94ZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7WEZTIGZpbGVzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL3hmcy9LY29uZmlnLTI0LVxuZnMveGZzL0tjb25maWc6MjU6Y29uZmlnIFhGU19TVVBQT1JUX1Y0XG5mcy94ZnMvS2NvbmZpZy0yNi1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBkZXByZWNhdGVkIFY0IChjcmM9MCkgZm9ybWF0XCYjMzQ7XG4tLVxuZnMveGZzL0tjb25maWctNDktXG5mcy94ZnMvS2NvbmZpZzo1MDpjb25maWcgWEZTX1NVUFBPUlRfQVNDSUlfQ0lcbmZzL3hmcy9LY29uZmlnLTUxLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGRlcHJlY2F0ZWQgY2FzZS1pbnNlbnNpdGl2ZSBhc2NpaSAoYXNjaWktY2k9MSkgZm9ybWF0XCYjMzQ7XG4tLVxuZnMveGZzL0tjb25maWctNzYtXG5mcy94ZnMvS2NvbmZpZzo3Nzpjb25maWcgWEZTX1FVT1RBXG5mcy94ZnMvS2NvbmZpZy03OC1cdGJvb2wgXCYjMzQ7WEZTIFF1b3RhIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy94ZnMvS2NvbmZpZy05NC1cbmZzL3hmcy9LY29uZmlnOjk1OmNvbmZpZyBYRlNfUE9TSVhfQUNMXG5mcy94ZnMvS2NvbmZpZy05Ni1cdGJvb2wgXCYjMzQ7WEZTIFBPU0lYIEFDTCBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMveGZzL0tjb25maWctMTA0LVxuZnMveGZzL0tjb25maWc6MTA1OmNvbmZpZyBYRlNfUlRcbmZzL3hmcy9LY29uZmlnLTEwNi1cdGJvb2wgXCYjMzQ7WEZTIFJlYWx0aW1lIHN1YnZvbHVtZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMveGZzL0tjb25maWctMTMyLVxuZnMveGZzL0tjb25maWc6MTMzOmNvbmZpZyBYRlNfRFJBSU5fSU5URU5UU1xuZnMveGZzL0tjb25maWctMTM0LVx0Ym9vbFxuLS1cbmZzL3hmcy9LY29uZmlnLTEzNi1cbmZzL3hmcy9LY29uZmlnOjEzNzpjb25maWcgWEZTX0xJVkVfSE9PS1NcbmZzL3hmcy9LY29uZmlnLTEzOC1cdGJvb2xcbi0tXG5mcy94ZnMvS2NvbmZpZy0xNDAtXG5mcy94ZnMvS2NvbmZpZzoxNDE6Y29uZmlnIFhGU19NRU1PUllfQlVGU1xuZnMveGZzL0tjb25maWctMTQyLVx0Ym9vbFxuZnMveGZzL0tjb25maWctMTQzLVxuZnMveGZzL0tjb25maWc6MTQ0OmNvbmZpZyBYRlNfQlRSRUVfSU5fTUVNXG5mcy94ZnMvS2NvbmZpZy0xNDUtXHRib29sXG5mcy94ZnMvS2NvbmZpZy0xNDYtXG5mcy94ZnMvS2NvbmZpZzoxNDc6Y29uZmlnIFhGU19PTkxJTkVfU0NSVUJcbmZzL3hmcy9LY29uZmlnLTE0OC1cdGJvb2wgXCYjMzQ7WEZTIG9ubGluZSBtZXRhZGF0YSBjaGVjayBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMveGZzL0tjb25maWctMTYzLVxuZnMveGZzL0tjb25maWc6MTY0OmNvbmZpZyBYRlNfT05MSU5FX1NDUlVCX1NUQVRTXG5mcy94ZnMvS2NvbmZpZy0xNjUtXHRib29sIFwmIzM0O1hGUyBvbmxpbmUgbWV0YWRhdGEgY2hlY2sgdXNhZ2UgZGF0YSBjb2xsZWN0aW9uXCYjMzQ7XG4tLVxuZnMveGZzL0tjb25maWctMTc4LVxuZnMveGZzL0tjb25maWc6MTc5OmNvbmZpZyBYRlNfT05MSU5FX1JFUEFJUlxuZnMveGZzL0tjb25maWctMTgwLVx0Ym9vbCBcJiMzNDtYRlMgb25saW5lIG1ldGFkYXRhIHJlcGFpciBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMveGZzL0tjb25maWctMTkzLVxuZnMveGZzL0tjb25maWc6MTk0OmNvbmZpZyBYRlNfV0FSTlxuZnMveGZzL0tjb25maWctMTk1LVx0Ym9vbCBcJiMzNDtYRlMgVmVyYm9zZSBXYXJuaW5nc1wmIzM0O1xuLS1cbmZzL3hmcy9LY29uZmlnLTIwNi1cbmZzL3hmcy9LY29uZmlnOjIwNzpjb25maWcgWEZTX0RFQlVHXG5mcy94ZnMvS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O1hGUyBEZWJ1Z2dpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmZzL3hmcy9LY29uZmlnLTIxOS1cbmZzL3hmcy9LY29uZmlnOjIyMDpjb25maWcgWEZTX0RFQlVHX0VYUEVOU0lWRVxuZnMveGZzL0tjb25maWctMjIxLVx0Ym9vbCBcJiMzNDtYRlMgZXhwZW5zaXZlIGRlYnVnZ2luZyBjaGVja3NcJiMzNDtcbi0tXG5mcy94ZnMvS2NvbmZpZy0yMzEtXG5mcy94ZnMvS2NvbmZpZzoyMzI6Y29uZmlnIFhGU19BU1NFUlRfRkFUQUxcbmZzL3hmcy9LY29uZmlnLTIzMy1cdGJvb2wgXCYjMzQ7WEZTIGZhdGFsIGFzc2VydHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg1NDkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzIHNwZWNpZmljIGZpbGUgYW5hbHlzaXM6CgoqKkRpdmluZyBpbnRvIGB4ZnNfem9uZV9hbGxvYy5jYCBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIGEgaGFuZGxlIG9uIHRoZSBsYW5kc2NhcGUgb2YgYGZzL3hmcy94ZnNfem9uZV9hbGxvYy5jYC4gQmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCB0aGUgc3BlY2lmaWNzIHdpdGhpbiB0aGUgZmlsZSBpdHNlbGYsIEkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgcmVsaWVzIG9uIGl0LCBhbmQgd2hhdCBpdCBpdHNlbGYgcmVsaWVzIG9uLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRob3NlIGNyaXRpY2FsIGRhdGEgc3RydWN0dXJlcywgQVBJcywgYW5kIGZ1bmN0aW9ucy4gV2hhdCBhcmUgdGhlIGtleSBoZWFkZXJzLCB3aGljaCBzdHJ1Y3R1cmVzIGRvZXMgaXQgdXRpbGl6ZSBoZWF2aWx5PyBJJiMzOTtsbCBwcm9iYWJseSBiZSB0cmFjaW5nIGJhY2sgZnVuY3Rpb24gY2FsbHMgdG8gdW5kZXJzdGFuZCBpdHMgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGFuZCBob3cgdGhlc2UgcGllY2VzIGZpdCBpbnRvIHRoZSBicm9hZGVyIFhGUyBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhpbmdzIGxpa2UgbWV0YWRhdGEgbWFuYWdlbWVudCwgYWxsb2NhdGlvbiBzdHJhdGVnaWVzLCBhbmQgdGhlIG92ZXJhbGwgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMgaW52b2x2ZWQgaW4gem9uZS1iYXNlZCBhbGxvY2F0aW9uIHdpdGhpbiBYRlMuIEdvdHRhIG1hcCBvdXQgdGhlIGRlcGVuZGVuY2llcyBiZWZvcmUgSSBjYW4gdHJ1bHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiBhbnkgY2hhbmdlcyBvciBkZWJ1Z2dpbmcgc3RlcHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmc196b25lX2FsbG9jLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy94ZnMvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMveGZzL01ha2VmaWxlPTE0Mj14ZnMtJChDT05GSUdfWEZTX1JUKVx0XHQmIzQzOz0geGZzX3J0YWxsb2MubyBcXFxuZnMveGZzL01ha2VmaWxlOjE0MzpcdFx0XHRcdCAgIHhmc196b25lX2FsbG9jLm8gXFxcbmZzL3hmcy9NYWtlZmlsZS0xNDQtXHRcdFx0XHQgICB4ZnNfem9uZV9nYy5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NDcxCgkJCQkJCQlvdXRwdXQ6IDI3MgoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlNfRlMmIzM0OywKICAgICYjMzQ7WEZTX1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9tYXBfaW9lbmRfdHJ5X21lcmdlJiMzNDssCiAgICAmIzM0O2lvbWFwX2lvZW5kX2Nhbl9tZXJnZSYjMzQ7LAogICAgJiMzNDt4ZnNfZW5kX2lvJiMzNDssCiAgICAmIzM0O3hmc19lbmRfaW9lbmRfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgIHRvIHByZXZlbnQgbWVyZ2luZyBgaW9tYXBfaW9lbmRgIHN0cnVjdHVyZXMgaWYgdGhlaXIgYGlvX3ByaXZhdGVgIGZpZWxkcyBkaWZmZXIuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBJL08gY29tcGxldGlvbiBtZXJnaW5nIGxvZ2ljIGluIGBmcy9pb21hcC9pb2VuZC5jYC4gVGhlIGBpb19wcml2YXRlYCBmaWVsZCBpcyB1c2VkIGJ5IFhGUyAoc3BlY2lmaWNhbGx5IHdpdGggYENPTkZJR19YRlNfUlRgIGVuYWJsZWQsIGluIGB4ZnNfem9uZV9hbGxvYy5jYCBhbmQgYHhmc19hb3BzLmNgKSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gYW4gYHhmc19vcGVuX3pvbmVgLiBJZiBpb2VuZHMgd2l0aCBkaWZmZXJlbnQgYGlvX3ByaXZhdGVgIHBvaW50ZXJzIHdlcmUgbWVyZ2VkLCBpdCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdCB6b25lIG1hbmFnZW1lbnQgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlcyBpbiBYRlMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKGlvbWFwKSBhbmQgYSBzcGVjaWZpYyBmaWxlc3lzdGVtIChYRlMpLCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZTX0ZTJiMzNDssCiAgICAmIzM0O1hGU19SVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lvbWFwX2lvZW5kX3RyeV9tZXJnZSYjMzQ7LAogICAgJiMzNDtpb21hcF9pb2VuZF9jYW5fbWVyZ2UmIzM0OywKICAgICYjMzQ7eGZzX2VuZF9pbyYjMzQ7LAogICAgJiMzNDt4ZnNfZW5kX2lvZW5kX3dyaXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYCB0byBwcmV2ZW50IG1lcmdpbmcgYGlvbWFwX2lvZW5kYCBzdHJ1Y3R1cmVzIGlmIHRoZWlyIGBpb19wcml2YXRlYCBmaWVsZHMgZGlmZmVyLiBUaGlzIGFmZmVjdHMgdGhlIGNvcmUgSS9PIGNvbXBsZXRpb24gbWVyZ2luZyBsb2dpYyBpbiBgZnMvaW9tYXAvaW9lbmQuY2AuIFRoZSBgaW9fcHJpdmF0ZWAgZmllbGQgaXMgdXNlZCBieSBYRlMgKHNwZWNpZmljYWxseSB3aXRoIGBDT05GSUdfWEZTX1JUYCBlbmFibGVkLCBpbiBgeGZzX3pvbmVfYWxsb2MuY2AgYW5kIGB4ZnNfYW9wcy5jYCkgdG8gc3RvcmUgYSBwb2ludGVyIHRvIGFuIGB4ZnNfb3Blbl96b25lYC4gSWYgaW9lbmRzIHdpdGggZGlmZmVyZW50IGBpb19wcml2YXRlYCBwb2ludGVycyB3ZXJlIG1lcmdlZCwgaXQgY291bGQgbGVhZCB0byBpbmNvcnJlY3Qgem9uZSBtYW5hZ2VtZW50IG9yIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMgaW4gWEZTLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChpb21hcCkgYW5kIGEgc3BlY2lmaWMgZmlsZXN5c3RlbSAoWEZTKSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0ODozOS4zNjIwMDI2OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzYwOTk0MjI4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlNfRlNcIixcbiAgICBcIlhGU19SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvbWFwX2lvZW5kX3RyeV9tZXJnZVwiLFxuICAgIFwiaW9tYXBfaW9lbmRfY2FuX21lcmdlXCIsXG4gICAgXCJ4ZnNfZW5kX2lvXCIsXG4gICAgXCJ4ZnNfZW5kX2lvZW5kX3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgIHRvIHByZXZlbnQgbWVyZ2luZyBgaW9tYXBfaW9lbmRgIHN0cnVjdHVyZXMgaWYgdGhlaXIgYGlvX3ByaXZhdGVgIGZpZWxkcyBkaWZmZXIuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBJL08gY29tcGxldGlvbiBtZXJnaW5nIGxvZ2ljIGluIGBmcy9pb21hcC9pb2VuZC5jYC4gVGhlIGBpb19wcml2YXRlYCBmaWVsZCBpcyB1c2VkIGJ5IFhGUyAoc3BlY2lmaWNhbGx5IHdpdGggYENPTkZJR19YRlNfUlRgIGVuYWJsZWQsIGluIGB4ZnNfem9uZV9hbGxvYy5jYCBhbmQgYHhmc19hb3BzLmNgKSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gYW4gYHhmc19vcGVuX3pvbmVgLiBJZiBpb2VuZHMgd2l0aCBkaWZmZXJlbnQgYGlvX3ByaXZhdGVgIHBvaW50ZXJzIHdlcmUgbWVyZ2VkLCBpdCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdCB6b25lIG1hbmFnZW1lbnQgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlcyBpbiBYRlMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKGlvbWFwKSBhbmQgYSBzcGVjaWZpYyBmaWxlc3lzdGVtIChYRlMpLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NDg6MzkuMzYyMDA4ODJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNTkwOTI0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE2ZDkyYTgzZjBiMWE1MmYxNjYzOWNhM2JjMjAyZDVjZWY3ZjdjODJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMTMgMDg6NDg6MzcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvaW9tYXAvaW9lbmQuYyBiL2ZzL2lvbWFwL2lvZW5kLmNcXG5pbmRleCBhY2YzY2Y5OGIyM2E5Yi4uYmE1OTU3MGMwOTI2NDUgMTAwNjQ0XFxuLS0tIGEvZnMvaW9tYXAvaW9lbmQuY1xcbisrKyBiL2ZzL2lvbWFwL2lvZW5kLmNcXG5AQCAtMzgwLDYgKzM4MCw4IEBAIHN0YXRpYyBib29sIGlvbWFwX2lvZW5kX2Nhbl9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxcbiBcXG4gXFx0aWYgKGlvZW5kLVxcdTAwM2Vpb19iaW8uYmlfc3RhdHVzICE9IG5leHQtXFx1MDAzZWlvX2Jpby5iaV9zdGF0dXMpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0aWYgKGlvZW5kLVxcdTAwM2Vpb19wcml2YXRlICE9IG5leHQtXFx1MDAzZWlvX3ByaXZhdGUpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0aWYgKG5leHQtXFx1MDAzZWlvX2ZsYWdzIFxcdTAwMjYgSU9NQVBfSU9FTkRfQk9VTkRBUlkpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0aWYgKChpb2VuZC1cXHUwMDNlaW9fZmxhZ3MgXFx1MDAyNiBJT01BUF9JT0VORF9OT01FUkdFX0ZMQUdTKSAhPVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0ODozOS44ODA5NDQxMjlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNzA5MDk4NDM4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlNfRlNcIixcbiAgICBcIlhGU19SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvbWFwX2lvZW5kX3RyeV9tZXJnZVwiLFxuICAgIFwiaW9tYXBfaW9lbmRfY2FuX21lcmdlXCIsXG4gICAgXCJ4ZnNfZW5kX2lvXCIsXG4gICAgXCJ4ZnNfZW5kX2lvZW5kX3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgIHRvIHByZXZlbnQgbWVyZ2luZyBgaW9tYXBfaW9lbmRgIHN0cnVjdHVyZXMgaWYgdGhlaXIgYGlvX3ByaXZhdGVgIGZpZWxkcyBkaWZmZXIuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBJL08gY29tcGxldGlvbiBtZXJnaW5nIGxvZ2ljIGluIGBmcy9pb21hcC9pb2VuZC5jYC4gVGhlIGBpb19wcml2YXRlYCBmaWVsZCBpcyB1c2VkIGJ5IFhGUyAoc3BlY2lmaWNhbGx5IHdpdGggYENPTkZJR19YRlNfUlRgIGVuYWJsZWQsIGluIGB4ZnNfem9uZV9hbGxvYy5jYCBhbmQgYHhmc19hb3BzLmNgKSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gYW4gYHhmc19vcGVuX3pvbmVgLiBJZiBpb2VuZHMgd2l0aCBkaWZmZXJlbnQgYGlvX3ByaXZhdGVgIHBvaW50ZXJzIHdlcmUgbWVyZ2VkLCBpdCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdCB6b25lIG1hbmFnZW1lbnQgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlcyBpbiBYRlMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKGlvbWFwKSBhbmQgYSBzcGVjaWZpYyBmaWxlc3lzdGVtIChYRlMpLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNmQ5MmE4M2YwYjFhNTJmMTY2MzljYTNiYzIwMmQ1Y2VmN2Y3YzgyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMDg6NDg6MzcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9pb21hcC9pb2VuZC5jIGIvZnMvaW9tYXAvaW9lbmQuY1xuaW5kZXggYWNmM2NmOThiMjNhOWIuLmJhNTk1NzBjMDkyNjQ1IDEwMDY0NFxuLS0tIGEvZnMvaW9tYXAvaW9lbmQuY1xuKysrIGIvZnMvaW9tYXAvaW9lbmQuY1xuQEAgLTM4MCw2ICszODAsOCBAQCBzdGF0aWMgYm9vbCBpb21hcF9pb2VuZF9jYW5fbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbiBcbiBcdGlmIChpb2VuZC1cdTAwM2Vpb19iaW8uYmlfc3RhdHVzICE9IG5leHQtXHUwMDNlaW9fYmlvLmJpX3N0YXR1cylcbiBcdFx0cmV0dXJuIGZhbHNlO1xuK1x0aWYgKGlvZW5kLVx1MDAzZWlvX3ByaXZhdGUgIT0gbmV4dC1cdTAwM2Vpb19wcml2YXRlKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4gXHRpZiAobmV4dC1cdTAwM2Vpb19mbGFncyBcdTAwMjYgSU9NQVBfSU9FTkRfQk9VTkRBUlkpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdGlmICgoaW9lbmQtXHUwMDNlaW9fZmxhZ3MgXHUwMDI2IElPTUFQX0lPRU5EX05PTUVSR0VfRkxBR1MpICE9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0ODozOS44ODA5NDcwNDlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzY4ODU4MjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaW9tYXAgU3Vic3lzdGVtIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIGEgcGF0Y2ggdG91Y2hpbmcgYGZzL2lvbWFwL2lvZW5kLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhleSd2ZSBhZGRlZCBhIGNoZWNrIHdpdGhpbiBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYDogYGlmIChpb2VuZC1cdTAwM2Vpb19wcml2YXRlICE9IG5leHQtXHUwMDNlaW9fcHJpdmF0ZSkgcmV0dXJuIGZhbHNlO2AuIFRoaXMgKmlzKiBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBrZXkgYWx0ZXJhdGlvbiB3aXRoaW4gdGhlIGlvbWFwIHN1YnN5c3RlbS4gTXkgbmV4dCBzdGVwLCBuYXR1cmFsbHksIGlzIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBlZmZlY3RzLiBJJ20gZ29pbmcgdG8gbG9vayBjbG9zZWx5IGF0IHRoYXQgZnVuY3Rpb24sIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgLCBhbmQgc3lzdGVtYXRpY2FsbHkgZXhhbWluZSBhbGwgaXRzIGNhbGxlcnMgdG8gc2VlIGhvdyB0aGlzIG5ldyBjaGVjayBhbHRlcnMgdGhlIG92ZXJhbGwgYmVoYXZpb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBtZXJnZSBpbXBsaWNhdGlvbnMgZnJvbSB0aGlzIGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODYzLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0ODo0My42NDk4MDk2NDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU1NTgwNDAxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb21hcF9pb2VuZF9jYW5fbWVyZ2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaW9tYXAvaW9lbmQuYz0zNjU9RVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfZmluaXNoX2lvZW5kcyk7XFxuLS1cXG5mcy9pb21hcC9pb2VuZC5jLTM2OS0gKi9cXG5mcy9pb21hcC9pb2VuZC5jOjM3MDpzdGF0aWMgYm9vbCBpb21hcF9pb2VuZF9jYW5fbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcXG5mcy9pb21hcC9pb2VuZC5jLTM3MS1cXHRcXHRzdHJ1Y3QgaW9tYXBfaW9lbmQgKm5leHQpXFxuLS1cXG5mcy9pb21hcC9pb2VuZC5jPTQwOD12b2lkIGlvbWFwX2lvZW5kX3RyeV9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxcbi0tXFxuZnMvaW9tYXAvaW9lbmQuYy00MTYtXFx0XFx0XFx0aW9fbGlzdCkpKSB7XFxuZnMvaW9tYXAvaW9lbmQuYzo0MTc6XFx0XFx0aWYgKCFpb21hcF9pb2VuZF9jYW5fbWVyZ2UoaW9lbmQsIG5leHQpKVxcbmZzL2lvbWFwL2lvZW5kLmMtNDE4LVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0ODo0Ni4yMDU2MTg5NjRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDMzMDYyMzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAgYW5kIENhbGxlcnMqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGBpb21hcGAgaW5mcmFzdHJ1Y3R1cmUuIEknbGwgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBzaXRlcyB0byBzZWUgaG93IGl0J3MgYmVpbmcgdXNlZC4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGUgY29udGV4dHMgd2hlcmUgaXQncyAqZmFpbGluZyogdG8gbWVyZ2UsIGFuZCB3aHkuIFVuZGVyc3RhbmRpbmcgdGhvc2UgZmFpbHVyZSBjYXNlcyB3aWxsIGxpa2VseSBoaWdobGlnaHQgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24sIG9yIGF0IGxlYXN0IGhlbHAgbWUgc29saWRpZnkgbXkgbWVudGFsIG1vZGVsIG9mIHRoZSBJL08gcGF0aC4gVGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uOyBtZXJnZSBsb2dpYyBpcyBvZnRlbiB0cmlja3kuIEkgc2hvdWxkIGFsc28gY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1hbmlwdWxhdGVzLiBBcmUgdGhlcmUgYW55IHJlc291cmNlIGNvbnRlbnRpb24gaXNzdWVzIHRoYXQgYXJlIGluaGVyZW50IHRvIHRoZSB3YXkgaXQgaXMgYmVpbmcgdXNlZD8gVGltZSB0byBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQwOSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ4OjQ5LjYzODY4MzkzMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDU4NDA5MzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvbWFwX2lvZW5kX3RyeV9tZXJnZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0PTQwND1hbW9ydGl6YXRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQwOC1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0OjQwOTogKiBgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWBgOiBHaXZlbiBhbiBpb2VuZCB0aGF0IGlzIG5vdCBpbiBhbnkgbGlzdCBhbmRcXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQxMC0gICBhIHNlcGFyYXRlIGxpc3Qgb2Ygc29ydGVkIGlvZW5kcywgbWVyZ2UgYXMgbWFueSBvZiB0aGUgaW9lbmRzIGZyb21cXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmM9MzcwPXN0YXRpYyBib29sIGlvbWFwX2lvZW5kX2Nhbl9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxcbi0tXFxuZnMvaW9tYXAvaW9lbmQuYy00MDctXFxuZnMvaW9tYXAvaW9lbmQuYzo0MDg6dm9pZCBpb21hcF9pb2VuZF90cnlfbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcXG5mcy9pb21hcC9pb2VuZC5jLTQwOS1cXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkICptb3JlX2lvZW5kcylcXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmMtNDIyLX1cXG5mcy9pb21hcC9pb2VuZC5jOjQyMzpFWFBPUlRfU1lNQk9MX0dQTChpb21hcF9pb2VuZF90cnlfbWVyZ2UpO1xcbmZzL2lvbWFwL2lvZW5kLmMtNDI0LVxcbi0tXFxuZnMveGZzL3hmc19hb3BzLmM9MTg4PXhmc19lbmRfaW8oXFxuLS1cXG5mcy94ZnMveGZzX2FvcHMuYy0yMDQtXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2aW9lbmQtXFx1MDAzZWlvX2xpc3QpO1xcbmZzL3hmcy94ZnNfYW9wcy5jOjIwNTpcXHRcXHRpb21hcF9pb2VuZF90cnlfbWVyZ2UoaW9lbmQsIFxcdTAwMjZ0bXApO1xcbmZzL3hmcy94ZnNfYW9wcy5jLTIwNi1cXHRcXHRpZiAoYmlvX29wKFxcdTAwMjZpb2VuZC1cXHUwMDNlaW9fYmlvKSA9PSBSRVFfT1BfUkVBRClcXG4tLVxcbmluY2x1ZGUvbGludXgvaW9tYXAuaD00ODI9dm9pZCBpb21hcF9maW5pc2hfaW9lbmRzKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsIGludCBlcnJvcik7XFxuaW5jbHVkZS9saW51eC9pb21hcC5oOjQ4Mzp2b2lkIGlvbWFwX2lvZW5kX3RyeV9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxcbmluY2x1ZGUvbGludXgvaW9tYXAuaC00ODQtXFx0XFx0c3RydWN0IGxpc3RfaGVhZCAqbW9yZV9pb2VuZHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0ODo1Mi4wOTcwOTk1NzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDgxNzc2Mjc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIENhbGwqKlxuXG5SaWdodCwgc28gdGhpcyBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgZnJvbSBgeGZzX2VuZF9pb2AuIFRoYXQgaW1tZWRpYXRlbHkgc2NyZWFtcyBYRlMgYW5kIGlvbWFwIGludGVncmF0aW9uLCB3aGljaCBpcyB3aGF0IEkgc3VzcGVjdGVkLiBDb25zaWRlcmluZyBteSBiYWNrZ3JvdW5kLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGJldHRlci4gTm93LCBhIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBjb25maWd1cmF0aW9ucyBvciB0dW5hYmxlIHBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gaG93IGlvbWFwIGludGVyYWN0cyB3aXRoaW4gdGhlIFhGUyBmaWxlc3lzdGVtIGNvbnRleHQuIEkgbmVlZCB0byBzZWUgaWYgdGhlIGtlcm5lbCBleHBvc2VzIGFueSBrbm9icyB0aGF0IGNvbnRyb2wgdGhpcyBtZXJnaW5nIGJlaGF2aW9yLiBBcmUgdGhlcmUgYW55IHN5c2ZzIGVudHJpZXMsIG1vZHVsZSBwYXJhbWV0ZXJzLCBvciBjb21waWxlLXRpbWUgb3B0aW9ucyB0aGF0IGRpcmVjdGx5IGluZmx1ZW5jZSBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCdzIG9wZXJhdGlvbj8gVGhhdCdzIHdoZXJlIEkgd2lsbCBzdGFydCwgZGlnZ2luZyBpbnRvIGNvbmZpZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMDUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0ODo1NS41Nzg4NzgyOTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5MjE5NjM5OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElPTUFQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0ODo1Ny45NzEwODIxNDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzUzOTU3ODQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIEZpbGVzeXN0ZW0gSS9PIE1hcHBpbmcqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIHN5c3RlbSBpcyBtYW5hZ2luZyBpdHMgSS9PLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBwb2tlIGFyb3VuZCB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGZpbGVzeXN0ZW0gSS9PIG1hcHBpbmcuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIG9mIGNoZWNraW5nIHNldHRpbmdzIGxpa2UgYGNvbmZpZyBGU19JT01BUGAsIG9yIHBlcmhhcHMgc29tZXRoaW5nIHNpbWlsYXIgaWYgdGhlIGtlcm5lbCB1c2VzIGEgc2xpZ2h0bHkgZGlmZmVyZW50IG5hbWluZyBjb252ZW50aW9uLiBJJ20gYWZ0ZXIgdGhlIGxvdy1sZXZlbCBkZXRhaWxzIG9mIHRoZSBJL08gcGF0aC4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGJlaGF2aW9yIG9mIGludGVyZXN0IHJlc2lkZXMsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgY29uZmlndXJhdGlvbiBpdHNlbGYgaXMgY2F1c2luZyB0aGUgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDc5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NDk6MDEuMzI1MDQxNDI4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzA0MDYzMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyAuKklPTUFQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWctbGFuZ3VhZ2UucnN0PTUxNz1XZSB3b3VsZCBpbiBsaWIvS2NvbmZpZyBzZWU6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9rYnVpbGQva2NvbmZpZy1sYW5ndWFnZS5yc3QtNTE5LSAgIyBHZW5lcmljIElPTUFQIGlzIHVzZWQgdG8gLi4uXFxuRG9jdW1lbnRhdGlvbi9rYnVpbGQva2NvbmZpZy1sYW5ndWFnZS5yc3Q6NTIwOiAgY29uZmlnIEhBVkVfR0VORVJJQ19JT01BUFxcbkRvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWctbGFuZ3VhZ2UucnN0LTUyMS1cXG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdDo1MjI6ICBjb25maWcgR0VORVJJQ19JT01BUFxcbkRvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWctbGFuZ3VhZ2UucnN0LTUyMy1cXHRkZXBlbmRzIG9uIEhBVkVfR0VORVJJQ19JT01BUCBcXHUwMDI2XFx1MDAyNiBGT09cXG4tLVxcbkRvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWctbGFuZ3VhZ2UucnN0PTUzNj1Ob3RlOiB3ZSB1c2UgdGhlIGV4aXN0aW5nIGNvbmZpZyBvcHRpb24gYW5kIGF2b2lkIGNyZWF0aW5nIGEgbmV3XFxuRG9jdW1lbnRhdGlvbi9rYnVpbGQva2NvbmZpZy1sYW5ndWFnZS5yc3Q6NTM3OmNvbmZpZyB2YXJpYWJsZSB0byBzZWxlY3QgSEFWRV9HRU5FUklDX0lPTUFQLlxcbkRvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWctbGFuZ3VhZ2UucnN0LTUzOC1cXG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdDo1Mzk6Tm90ZTogdGhlIHVzZSBvZiB0aGUgaW50ZXJuYWwgY29uZmlnIHZhcmlhYmxlIEhBVkVfR0VORVJJQ19JT01BUCwgaXQgaXNcXG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdC01NDAtaW50cm9kdWNlZCB0byBvdmVyY29tZSB0aGUgbGltaXRhdGlvbiBvZiBzZWxlY3Qgd2hpY2ggd2lsbCBmb3JjZSBhXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTMxNzQ9ZW5kbWVudVxcbmFyY2gveDg2L0tjb25maWctMzE3NS1cXG5hcmNoL3g4Ni9LY29uZmlnOjMxNzY6Y29uZmlnIEhBVkVfQVRPTUlDX0lPTUFQXFxuYXJjaC94ODYvS2NvbmZpZy0zMTc3LVxcdGRlZl9ib29sIHlcXG4tLVxcbmRyaXZlcnMvbmV0L2FyY25ldC9jb205MGlvLmM9MjIxPXN0YXRpYyBpbnQgX19pbml0IGNvbTkwaW9fZm91bmQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2FyY25ldC9jb205MGlvLmMtMjQ5LVxcbmRyaXZlcnMvbmV0L2FyY25ldC9jb205MGlvLmM6MjUwOlxcdGxwLVxcdTAwM2Vjb25maWcgPSAoMHgxNiB8IElPTUFQZmxhZykgXFx1MDAyNiB+RU5BQkxFMTZmbGFnO1xcbmRyaXZlcnMvbmV0L2FyY25ldC9jb205MGlvLmMtMjUxLVxcdGFyY25ldF9vdXRiKGxwLVxcdTAwM2Vjb25maWcsIGlvYWRkciwgQ09NOTAyNl9SRUdfUldfQ09ORklHKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2FyY25ldC9jb205MGlvLmM9Mjc5PXN0YXRpYyBpbnQgY29tOTBpb19yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgcmVhbGx5X3Jlc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvYXJjbmV0L2NvbTkwaW8uYy0yOTItXFx0LyogU2V0IHRoZSB0aGluZyB0byBJTy1tYXBwZWQsIDgtYml0ICBtb2RlICovXFxuZHJpdmVycy9uZXQvYXJjbmV0L2NvbTkwaW8uYzoyOTM6XFx0bHAtXFx1MDAzZWNvbmZpZyA9ICgweDFDIHwgSU9NQVBmbGFnKSBcXHUwMDI2IH5FTkFCTEUxNmZsYWc7XFxuZHJpdmVycy9uZXQvYXJjbmV0L2NvbTkwaW8uYy0yOTQtXFx0YXJjbmV0X291dGIobHAtXFx1MDAzZWNvbmZpZywgaW9hZGRyLCBDT005MDI2X1JFR19SV19DT05GSUcpO1xcbi0tXFxuZHJpdmVycy9wY2kvS2NvbmZpZz0xMT1jb25maWcgRk9SQ0VfUENJXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE3LSMgd2l0aG91dCBQQ0kgaXRzZWxmIGhhdmluZyB0byBiZSBkZWZpbmVkXFxuZHJpdmVycy9wY2kvS2NvbmZpZzoxODpjb25maWcgR0VORVJJQ19QQ0lfSU9NQVBcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE5LVxcdGJvb2xcXG4tLVxcbmZzL0tjb25maWc9MTI9Y29uZmlnIFZBTElEQVRFX0ZTX1BBUlNFUlxcbi0tXFxuZnMvS2NvbmZpZy0xNy1cXG5mcy9LY29uZmlnOjE4OmNvbmZpZyBGU19JT01BUFxcbmZzL0tjb25maWctMTktXFx0Ym9vbFxcbi0tXFxubGliL0tjb25maWc9ODI9Y29uZmlnIE5PX0dFTkVSSUNfUENJX0lPUE9SVF9NQVBcXG4tLVxcbmxpYi9LY29uZmlnLTg0LVxcbmxpYi9LY29uZmlnOjg1OmNvbmZpZyBHRU5FUklDX0lPTUFQXFxubGliL0tjb25maWctODYtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0OTowNC4wMjkxMDkyMzhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIxMDM4NzUwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbm5lciBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRlNfSU9NQVAgQ29uZmlndXJhdGlvbiBPcHRpb24qKlxuXG5SaWdodCwgYEZTX0lPTUFQYC4uLiB0aGF0J3MgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGF0IGFjdHVhbGx5IGVuYWJsZXMgdGhpcz8gV2hhdCBjb2RlIHBhdGhzIGRlcGVuZCBvbiBpdD9cIiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzLiBJdCdzIHRpbWUgdG8gc3RhcnQgdHJhY2luZyB0aGUgY29uZmlndXJhdGlvbiBjaG9pY2VzLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24gc3lzdGVtIHRvIHNlZSB3aGF0IG90aGVyIG9wdGlvbnMsIG9yIHBlcmhhcHMgYnJvYWRlciBzdWJzeXN0ZW0gY29uZmlndXJhdGlvbnMsIGFyZSB0aWVkIHRvIGBGU19JT01BUGAuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCB0byB1bmRlcnN0YW5kIHdoZW4gYW5kIHdoeSBgRlNfSU9NQVBgIGdldHMgc2VsZWN0ZWQuIEl0J3MgYWJvdXQgZmlndXJpbmcgb3V0IHRoZSB0cmlnZ2VyaW5nIGNvbmRpdGlvbnMsIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoZSBjb25maWd1cmF0aW9uIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU1MiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ5OjA3LjIzOTQ5ODk1OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYwMzQwNTY1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRlNfSU9NQVBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9wb3J0aW5nLnJzdD00Nz1GaXJzdCwgYWRkIGBgI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvbWFwLmhcXHUwMDNlYGAgZnJvbSB5b3VyIHNvdXJjZSBjb2RlIGFuZCBhZGRcXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL3BvcnRpbmcucnN0OjQ4OmBgc2VsZWN0IEZTX0lPTUFQYGAgdG8geW91ciBmaWxlc3lzdGVtJ3MgS2NvbmZpZyBvcHRpb24uXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9wb3J0aW5nLnJzdC00OS1CdWlsZCB0aGUga2VybmVsLCBydW4gZnN0ZXN0cyB3aXRoIHRoZSBgYC1nIGFsbGBgIG9wdGlvbiBhY3Jvc3MgYSB3aWRlXFxuLS1cXG5ibG9jay9LY29uZmlnPTU9bWVudWNvbmZpZyBCTE9DS1xcbi0tXFxuYmxvY2svS2NvbmZpZy03LSAgICAgICBkZWZhdWx0IHlcXG5ibG9jay9LY29uZmlnOjg6ICAgICAgIHNlbGVjdCBGU19JT01BUFxcbmJsb2NrL0tjb25maWctOS0gICAgICAgc2VsZWN0IFNCSVRNQVBcXG4tLVxcbmZzL0tjb25maWc9NTg9Y29uZmlnIEZTX0RBWFxcbi0tXFxuZnMvS2NvbmZpZy02MS1cXHRkZXBlbmRzIG9uIFpPTkVfREVWSUNFXFxuZnMvS2NvbmZpZzo2MjpcXHRzZWxlY3QgRlNfSU9NQVBcXG5mcy9LY29uZmlnLTYzLVxcdHNlbGVjdCBEQVhcXG4tLVxcbmZzL2J0cmZzL0tjb25maWc9Mz1jb25maWcgQlRSRlNfRlNcXG4tLVxcbmZzL2J0cmZzL0tjb25maWctMTQtXFx0c2VsZWN0IFpTVERfREVDT01QUkVTU1xcbmZzL2J0cmZzL0tjb25maWc6MTU6XFx0c2VsZWN0IEZTX0lPTUFQXFxuZnMvYnRyZnMvS2NvbmZpZy0xNi1cXHRzZWxlY3QgUkFJRDZfUFFcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWc9Mz1jb25maWcgRVJPRlNfRlNcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctOS1cXHRzZWxlY3QgQ1JZUFRPX0RFRkxBVEUgaWYgRVJPRlNfRlNfWklQX0FDQ0VMXFxuZnMvZXJvZnMvS2NvbmZpZzoxMDpcXHRzZWxlY3QgRlNfSU9NQVBcXG5mcy9lcm9mcy9LY29uZmlnLTExLVxcdHNlbGVjdCBMWjRfREVDT01QUkVTUyBpZiBFUk9GU19GU19aSVBcXG4tLVxcbmZzL2V4dDIvS2NvbmZpZz0yPWNvbmZpZyBFWFQyX0ZTXFxuLS1cXG5mcy9leHQyL0tjb25maWctNC1cXHRzZWxlY3QgQlVGRkVSX0hFQURcXG5mcy9leHQyL0tjb25maWc6NTpcXHRzZWxlY3QgRlNfSU9NQVBcXG5mcy9leHQyL0tjb25maWctNi1cXHRoZWxwXFxuLS1cXG5mcy9leHQ0L0tjb25maWc9Mj1jb25maWcgRVhUNF9GU1xcbi0tXFxuZnMvZXh0NC9LY29uZmlnLTctXFx0c2VsZWN0IENSQzMyXFxuZnMvZXh0NC9LY29uZmlnOjg6XFx0c2VsZWN0IEZTX0lPTUFQXFxuZnMvZXh0NC9LY29uZmlnLTktXFx0c2VsZWN0IEZTX0VOQ1JZUFRJT05fQUxHUyBpZiBGU19FTkNSWVBUSU9OXFxuLS1cXG5mcy9mMmZzL0tjb25maWc9Mj1jb25maWcgRjJGU19GU1xcbi0tXFxuZnMvZjJmcy9LY29uZmlnLTktXFx0c2VsZWN0IEZTX0VOQ1JZUFRJT05fQUxHUyBpZiBGU19FTkNSWVBUSU9OXFxuZnMvZjJmcy9LY29uZmlnOjEwOlxcdHNlbGVjdCBGU19JT01BUFxcbmZzL2YyZnMvS2NvbmZpZy0xMS1cXHRzZWxlY3QgTFo0X0NPTVBSRVNTIGlmIEYyRlNfRlNfTFo0XFxuLS1cXG5mcy9mdXNlL0tjb25maWc9Mj1jb25maWcgRlVTRV9GU1xcbi0tXFxuZnMvZnVzZS9LY29uZmlnLTQtXFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxcbmZzL2Z1c2UvS2NvbmZpZzo1OlxcdHNlbGVjdCBGU19JT01BUFxcbmZzL2Z1c2UvS2NvbmZpZy02LVxcdGhlbHBcXG4tLVxcbmZzL2dmczIvS2NvbmZpZz0yPWNvbmZpZyBHRlMyX0ZTXFxuLS1cXG5mcy9nZnMyL0tjb25maWctNy1cXHRzZWxlY3QgUVVPVEFDVExcXG5mcy9nZnMyL0tjb25maWc6ODpcXHRzZWxlY3QgRlNfSU9NQVBcXG5mcy9nZnMyL0tjb25maWctOS1cXHRoZWxwXFxuLS1cXG5mcy9ocGZzL0tjb25maWc9Mj1jb25maWcgSFBGU19GU1xcbi0tXFxuZnMvaHBmcy9LY29uZmlnLTUtXFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuZnMvaHBmcy9LY29uZmlnOjY6XFx0c2VsZWN0IEZTX0lPTUFQXFxuZnMvaHBmcy9LY29uZmlnLTctXFx0aGVscFxcbi0tXFxuZnMvbnRmcy9LY29uZmlnPTI9Y29uZmlnIE5URlNfRlNcXG4tLVxcbmZzL250ZnMvS2NvbmZpZy00LVxcdHNlbGVjdCBOTFNcXG5mcy9udGZzL0tjb25maWc6NTpcXHRzZWxlY3QgRlNfSU9NQVBcXG5mcy9udGZzL0tjb25maWctNi1cXHRoZWxwXFxuLS1cXG5mcy94ZnMvS2NvbmZpZz0yPWNvbmZpZyBYRlNfRlNcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTYtXFx0c2VsZWN0IENSQzMyXFxuZnMveGZzL0tjb25maWc6NzpcXHRzZWxlY3QgRlNfSU9NQVBcXG5mcy94ZnMvS2NvbmZpZy04LVxcdGhlbHBcXG4tLVxcbmZzL3pvbmVmcy9LY29uZmlnPTE9Y29uZmlnIFpPTkVGU19GU1xcbi0tXFxuZnMvem9uZWZzL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEJMS19ERVZfWk9ORURcXG5mcy96b25lZnMvS2NvbmZpZzo1OlxcdHNlbGVjdCBGU19JT01BUFxcbmZzL3pvbmVmcy9LY29uZmlnLTYtXFx0c2VsZWN0IENSQzMyXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ5OjA5Ljg0MjkxMDY5M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzUxMjY0NzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBGU19JT01BUGAgU3Vic3lzdGVtKipcblxuQWxyaWdodCwgc28gaXQncyBjbGVhciB0aGF0IGBGU19JT01BUGAgaXMgYSBwcmV0dHkgdWJpcXVpdG91cyBwaWVjZSBvZiB0aGUgZmlsZXN5c3RlbSBwdXp6bGUuIFhGUywgRVhUNCwgQlRSRlMsIEYyRlMg4oCTIHRoZXkncmUgYWxsIGxlYW5pbmcgb24gaXQuIFRoYXQgbWFrZXMgaXQgYSBwcmltZSB0YXJnZXQgZm9yIHNvbWUgZnV6emluZyBlZmZvcnRzOyBnb3R0YSBoaXQgdGhvc2UgY29tbW9uIHBhaW4gcG9pbnRzISBJIG5lZWQgdG8gcmVhbGx5IGRpZyBpbiBhbmQgc2VlIGlmIEkgY2FuIHNoYWtlIHNvbWUgYnVncyBsb29zZS5cblxuTm93LCBJJ20gbG9va2luZyBhdCBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYC4gSSd2ZSBub3RpY2VkIGl0J3Mgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSXRzIGNhbGxlciBpcyBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYC4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCBJJ2xsIG5lZWQgdG8gc2VlIGlmIGl0IG1ha2VzIHNlbnNlIHRvIGdvIGZ1cnRoZXIgdXAgdGhlIGNhbGwgc3RhY2sgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZSBsYXJnZXIgaW1wbGljYXRpb25zIGFyZS4gVGltZSB0byBleGFtaW5lIHRoZSBjYWxsZXJzIG9mIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBicm9hZGVyIEkvTyBtYW5hZ2VtZW50IGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg0MiwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ5OjEzLjU5NDE3NzkxMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzMjAyNDA4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb21hcF9pb2VuZF90cnlfbWVyZ2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdD00MDQ9YW1vcnRpemF0aW9uOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdC00MDgtXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdDo0MDk6ICogYGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgYDogR2l2ZW4gYW4gaW9lbmQgdGhhdCBpcyBub3QgaW4gYW55IGxpc3QgYW5kXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdC00MTAtICAgYSBzZXBhcmF0ZSBsaXN0IG9mIHNvcnRlZCBpb2VuZHMsIG1lcmdlIGFzIG1hbnkgb2YgdGhlIGlvZW5kcyBmcm9tXFxuLS1cXG5mcy9pb21hcC9pb2VuZC5jPTM3MD1zdGF0aWMgYm9vbCBpb21hcF9pb2VuZF9jYW5fbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmMtNDA3LVxcbmZzL2lvbWFwL2lvZW5kLmM6NDA4OnZvaWQgaW9tYXBfaW9lbmRfdHJ5X21lcmdlKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsXFxuZnMvaW9tYXAvaW9lbmQuYy00MDktXFx0XFx0c3RydWN0IGxpc3RfaGVhZCAqbW9yZV9pb2VuZHMpXFxuLS1cXG5mcy9pb21hcC9pb2VuZC5jLTQyMi19XFxuZnMvaW9tYXAvaW9lbmQuYzo0MjM6RVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfaW9lbmRfdHJ5X21lcmdlKTtcXG5mcy9pb21hcC9pb2VuZC5jLTQyNC1cXG4tLVxcbmZzL3hmcy94ZnNfYW9wcy5jPTE4OD14ZnNfZW5kX2lvKFxcbi0tXFxuZnMveGZzL3hmc19hb3BzLmMtMjA0LVxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNmlvZW5kLVxcdTAwM2Vpb19saXN0KTtcXG5mcy94ZnMveGZzX2FvcHMuYzoyMDU6XFx0XFx0aW9tYXBfaW9lbmRfdHJ5X21lcmdlKGlvZW5kLCBcXHUwMDI2dG1wKTtcXG5mcy94ZnMveGZzX2FvcHMuYy0yMDYtXFx0XFx0aWYgKGJpb19vcChcXHUwMDI2aW9lbmQtXFx1MDAzZWlvX2JpbykgPT0gUkVRX09QX1JFQUQpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmg9NDgyPXZvaWQgaW9tYXBfZmluaXNoX2lvZW5kcyhzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLCBpbnQgZXJyb3IpO1xcbmluY2x1ZGUvbGludXgvaW9tYXAuaDo0ODM6dm9pZCBpb21hcF9pb2VuZF90cnlfbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmgtNDg0LVxcdFxcdHN0cnVjdCBsaXN0X2hlYWQgKm1vcmVfaW9lbmRzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NDk6MTUuODI2MjA3MDI5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MzI5MzAwMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24sIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGB4ZnNfZW5kX2lvYCBhbmQgSXRzIFJlbGF0aW9uc2hpcCB0byBJL08gTWVyZ2luZyoqXG5cbk9rYXksIHNvIGB4ZnNfZW5kX2lvYCBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBhbmQgaXQgc2VlbXMgdG8gYmUgY2FsbGluZyBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYC4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgaXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgcG90ZW50aWFsIEkvTyBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcyB3aXRoaW4gdGhlIFhGUyBmaWxlc3lzdGVtLiBUaGUgZmFjdCB0aGF0IGl0J3MgYXR0ZW1wdGluZyBhIG1lcmdlIGF0IHRoaXMgc3RhZ2Ugc3VnZ2VzdHMgdGhhdCB3ZSBhcmUgcG90ZW50aWFsbHkgdHJ5aW5nIHRvIGNvYWxlc2NlIHJlbGF0ZWQgSS9PIHJlcXVlc3RzLiBUaGlzIGlzIGEgdmVyeSBjb21tb24gdGVjaG5pcXVlIHRvIHJlZHVjZSB0aGUgb3ZlcmhlYWQgYW5kIGltcHJvdmUgcGVyZm9ybWFuY2UuIFdlIG1heSBhbHNvIGJlIGxvb2tpbmcgYXQgaG93IHdlIGNhbiBvcHRpbWl6ZSB3cml0ZSB0aHJvdWdocHV0LCBvciBpbXByb3ZlIHRoZSBlZmZpY2llbmN5IG9mIHJlYWRzIHRoYXQgYWNjZXNzIGFkamFjZW50IHNlY3RvcnMgb2YgdGhlIGRpc2suXG5cbk5vdywgSSB3YW50IHRvIGRyaWxsIGRvd24gZnVydGhlci4gTGV0J3Mgc2VlIHdobyBpcyBjYWxsaW5nIGBpb21hcF9maW5pc2hfaW9lbmRzYC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZSBJL08gZW5kcyBhcmUgYmVpbmcgaGFuZGxlZCBhbmQgd2hhdCdzIHRyaWdnZXJpbmcgdGhlIGVuZC1vZi1JL08gcHJvY2Vzc2luZy4gS25vd2luZyB0aGUgY2FsbGVycyB3aWxsIHByb3ZpZGUgaW5zaWdodCBpbnRvIHRoZSBjb21wbGV0ZSBJL08gY29tcGxldGlvbiBwYXRoLCBpdHMgaW1wYWN0IG9uIHRoZSBkYXRhIHN0cnVjdHVyZXMsIGFuZCBhbnkgb3RoZXIgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMuIEkgc2hvdWxkIGNvbnNpZGVyIHdoZXRoZXIgd2UgYXJlIHNlZWluZyBhbnkgbG9jayBjb250ZW50aW9uIG9yIHF1ZXVpbmcgdGhhdCBjYW4gYmUgb3B0aW1pemVkIGluIHRoZXNlIGFyZWFzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmlnIHBpY3R1cmUgYmVmb3JlIEkgY2FuIGV2YWx1YXRlIHRoZSBpbXBhY3QgYW5kIHNpZ25pZmljYW5jZSBvZiB0aGUgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MzcsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0OToxOS42NTkxNDAxMzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzE4MTMzODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW9tYXBfZmluaXNoX2lvZW5kc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0PTM5MT1zdWJtaXR0ZWQgYnkgYGAtXFx1MDAzZXN1Ym1pdF93cml0ZWJhY2tgYFxcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvb3BlcmF0aW9ucy5yc3Q6MzkyOlRoaXMgZnVuY3Rpb24gc2hvdWxkIGNhbGwgYGBpb21hcF9maW5pc2hfaW9lbmRzYGAgYWZ0ZXIgZmluaXNoaW5nIGl0c1xcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvb3BlcmF0aW9ucy5yc3QtMzkzLW93biB3b3JrIChlLmcuIHVud3JpdHRlbiBleHRlbnQgY29udmVyc2lvbikuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0PTQwND1hbW9ydGl6YXRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQxNi1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0OjQxNzogKiBgYGlvbWFwX2ZpbmlzaF9pb2VuZHNgYDogRmluaXNoIGFuIGlvZW5kIHRoYXQgcG9zc2libHkgaGFzIG90aGVyXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdC00MTgtICAgaW9lbmRzIGxpbmtlZCB0byBpdC5cXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmM9MzA4PXN0YXRpYyB1MzIgaW9tYXBfZmluaXNoX2lvZW5kKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsIGludCBlcnJvcilcXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmMtMzQ0LSAqL1xcbmZzL2lvbWFwL2lvZW5kLmM6MzQ1OnZvaWQgaW9tYXBfZmluaXNoX2lvZW5kcyhzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLCBpbnQgZXJyb3IpXFxuZnMvaW9tYXAvaW9lbmQuYy0zNDYte1xcbi0tXFxuZnMvaW9tYXAvaW9lbmQuYy0zNjQtfVxcbmZzL2lvbWFwL2lvZW5kLmM6MzY1OkVYUE9SVF9TWU1CT0xfR1BMKGlvbWFwX2ZpbmlzaF9pb2VuZHMpO1xcbmZzL2lvbWFwL2lvZW5kLmMtMzY2LVxcbi0tXFxuZnMveGZzL3hmc19hb3BzLmM9MTA3PXhmc19lbmRfaW9lbmRfd3JpdGUoXFxuLS1cXG5mcy94ZnMveGZzX2FvcHMuYy0xNjgtXFx0XFx0eGZzX2lvZW5kX3B1dF9vcGVuX3pvbmVzKGlvZW5kKTtcXG5mcy94ZnMveGZzX2FvcHMuYzoxNjk6XFx0aW9tYXBfZmluaXNoX2lvZW5kcyhpb2VuZCwgZXJyb3IpO1xcbmZzL3hmcy94ZnNfYW9wcy5jLTE3MC1cXHRtZW1hbGxvY19ub2ZzX3Jlc3RvcmUobm9mc19mbGFnKTtcXG4tLVxcbmZzL3hmcy94ZnNfYW9wcy5jPTE4OD14ZnNfZW5kX2lvKFxcbi0tXFxuZnMveGZzL3hmc19hb3BzLmMtMjA2LVxcdFxcdGlmIChiaW9fb3AoXFx1MDAyNmlvZW5kLVxcdTAwM2Vpb19iaW8pID09IFJFUV9PUF9SRUFEKVxcbmZzL3hmcy94ZnNfYW9wcy5jOjIwNzpcXHRcXHRcXHRpb21hcF9maW5pc2hfaW9lbmRzKGlvZW5kLFxcbmZzL3hmcy94ZnNfYW9wcy5jLTIwOC1cXHRcXHRcXHRcXHRibGtfc3RhdHVzX3RvX2Vycm5vKGlvZW5kLVxcdTAwM2Vpb19iaW8uYmlfc3RhdHVzKSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmg9NDgwPXN0cnVjdCBpb21hcF9pb2VuZCAqaW9tYXBfc3BsaXRfaW9lbmQoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmgtNDgxLVxcdFxcdHVuc2lnbmVkIGludCBtYXhfbGVuLCBib29sIGlzX2FwcGVuZCk7XFxuaW5jbHVkZS9saW51eC9pb21hcC5oOjQ4Mjp2b2lkIGlvbWFwX2ZpbmlzaF9pb2VuZHMoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCwgaW50IGVycm9yKTtcXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmgtNDgzLXZvaWQgaW9tYXBfaW9lbmRfdHJ5X21lcmdlKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ5OjIxLjkzMDk1OTQzN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODAxMTU3Mjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyYWNpbmcgdGhlIElPIE1lcmdlIExvZ2ljKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgIGZ1bmN0aW9uLCBzaW5jZSBJIGtub3cgaXQncyByZWxhdGVkIHRvIG1lcmdpbmcgSS9PIG9wZXJhdGlvbnMuIFRoZSBrZXkgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGNoYWluLiBJIGNhbiBzZWUgdGhhdCBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYCBpcyBjYWxsZWQgYnkgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAuIE5vdywgbG9va2luZyBhdCB3aGVyZSAqdGhhdCogZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20sIEkgc2VlIGl0J3MgY2FsbGVkIGluIGB4ZnNfZW5kX2lvYC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIFhGUywgYHhmc19lbmRfaW9gIGlzIGEgcmVhbGx5IHNvbGlkIHBvaW50IHRvIHN0YXJ0LiBJdCBoYW5kbGVzIHRoZSBlbmQgb2YgYW4gSS9PIG9wZXJhdGlvbiwgc28gaXQgbWFrZXMgcGVyZmVjdCBzZW5zZSB0aGF0IGl0IHdvdWxkIGJlIHRoZSBmdW5jdGlvbiB0byB0cnkgdG8gbWVyZ2UgYWRqYWNlbnQgSU8gZW5kcy5cblxuQnV0IEkgc2hvdWxkIGJyb2FkZW4gdGhlIHNjb3BlLiBCZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byBgeGZzX2VuZF9pb2AsIEkgbmVlZCB0byBkb3VibGUtY2hlY2suIEknbGwgc2VhcmNoIHRoZSBjb2RlYmFzZSB0byBzZWUgaWYgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAgaXMgY2FsbGVkIGZyb20gYW55d2hlcmUgZWxzZS4gS25vd2luZyBhbGwgdGhlIGNhbGxlcnMgd2lsbCBnaXZlIG1lIGEgbW9yZSBjb21wbGV0ZSBwaWN0dXJlIG9mIGhvdyB0aGUgSS9PIG1lcmdpbmcgbG9naWMgaXMgdXNlZC4gSSdsbCBjb25jZW50cmF0ZSBteSBzZWFyY2ggb24gYGZzL2lvbWFwL2lvZW5kLmNgIGFuZCBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBmaWxlcy4gVW5kZXJzdGFuZGluZyBhbGwgdGhlIGNhbGwgc2l0ZXMgd2lsbCBtYWtlIHRoaXMgZGVidWdnaW5nIGZhciBlYXNpZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5MTEsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NDk6MjYuNzMyMTE5MTIzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzcxNzU4ODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvbWFwX2lvZW5kX3RyeV9tZXJnZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0PTQwND1hbW9ydGl6YXRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQwOC1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0OjQwOTogKiBgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWBgOiBHaXZlbiBhbiBpb2VuZCB0aGF0IGlzIG5vdCBpbiBhbnkgbGlzdCBhbmRcXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQxMC0gICBhIHNlcGFyYXRlIGxpc3Qgb2Ygc29ydGVkIGlvZW5kcywgbWVyZ2UgYXMgbWFueSBvZiB0aGUgaW9lbmRzIGZyb21cXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmM9MzcwPXN0YXRpYyBib29sIGlvbWFwX2lvZW5kX2Nhbl9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxcbi0tXFxuZnMvaW9tYXAvaW9lbmQuYy00MDctXFxuZnMvaW9tYXAvaW9lbmQuYzo0MDg6dm9pZCBpb21hcF9pb2VuZF90cnlfbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcXG5mcy9pb21hcC9pb2VuZC5jLTQwOS1cXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkICptb3JlX2lvZW5kcylcXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmMtNDIyLX1cXG5mcy9pb21hcC9pb2VuZC5jOjQyMzpFWFBPUlRfU1lNQk9MX0dQTChpb21hcF9pb2VuZF90cnlfbWVyZ2UpO1xcbmZzL2lvbWFwL2lvZW5kLmMtNDI0LVxcbi0tXFxuZnMveGZzL3hmc19hb3BzLmM9MTg4PXhmc19lbmRfaW8oXFxuLS1cXG5mcy94ZnMveGZzX2FvcHMuYy0yMDQtXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2aW9lbmQtXFx1MDAzZWlvX2xpc3QpO1xcbmZzL3hmcy94ZnNfYW9wcy5jOjIwNTpcXHRcXHRpb21hcF9pb2VuZF90cnlfbWVyZ2UoaW9lbmQsIFxcdTAwMjZ0bXApO1xcbmZzL3hmcy94ZnNfYW9wcy5jLTIwNi1cXHRcXHRpZiAoYmlvX29wKFxcdTAwMjZpb2VuZC1cXHUwMDNlaW9fYmlvKSA9PSBSRVFfT1BfUkVBRClcXG4tLVxcbmluY2x1ZGUvbGludXgvaW9tYXAuaD00ODI9dm9pZCBpb21hcF9maW5pc2hfaW9lbmRzKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsIGludCBlcnJvcik7XFxuaW5jbHVkZS9saW51eC9pb21hcC5oOjQ4Mzp2b2lkIGlvbWFwX2lvZW5kX3RyeV9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxcbmluY2x1ZGUvbGludXgvaW9tYXAuaC00ODQtXFx0XFx0c3RydWN0IGxpc3RfaGVhZCAqbW9yZV9pb2VuZHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0OToyOS4xMDM4ODI2NDJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI1NzU2OTYzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCdzIENhbGxlcnMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW1tZWRpYXRlIGltcGxpY2F0aW9uIGlzIHRoYXQgYHhmc19lbmRfaW9gIGlzIHRoZSAqc29sZSogY2FsbGVyIG9mIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgLiBUaGF0IHNlZW1zLi4uIGZvY3VzZWQuIEl0IGtlZXBzIHRoZSBtZXJnaW5nIHByb2Nlc3MgbmljZWx5IGNvbnRhaW5lZCB3aXRoaW4gdGhlIFhGUyBjb250ZXh0LiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBCZWZvcmUgSSBnbyB0b28gZmFyIGRvd24gdGhhdCBwYXRoIG9mIGFzc3VtaW5nIGEgc2luZ2xlIGNhbGxlciwgd2hhdCBhYm91dCBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYD8gSXQncyBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBtZXJnZSBsb2dpYywgYW5kICp0aGF0KiBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIGB0cnlfbWVyZ2VgLiBJcyAqaXQqIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2U/IEkgbmVlZCB0byBjaGVjayB0aGUgYnJvYWRlciBjYWxsIGdyYXBoIGFyb3VuZCBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYC4gRW5zdXJpbmcgdGhlcmUgYXJlIG5vIG90aGVyIHBvaW50cyB0aGF0IG1pZ2h0IGluZGlyZWN0bHkgdHJpZ2dlciBvciBpbmZsdWVuY2UgdGhhdCBtZXJnaW5nIGJlaGF2aW91ciBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBvdmVyYWxsIGJlaGF2aW91ciBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGtub3cgdGhlIGVudGlyZSBsYW5kc2NhcGUgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODg5NSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ5OjMzLjM2MTQ1NDU5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjM5NjY4MDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvbWFwX2lvZW5kX2Nhbl9tZXJnZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9pb21hcC9pb2VuZC5jPTM2NT1FWFBPUlRfU1lNQk9MX0dQTChpb21hcF9maW5pc2hfaW9lbmRzKTtcXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmMtMzY5LSAqL1xcbmZzL2lvbWFwL2lvZW5kLmM6MzcwOnN0YXRpYyBib29sIGlvbWFwX2lvZW5kX2Nhbl9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxcbmZzL2lvbWFwL2lvZW5kLmMtMzcxLVxcdFxcdHN0cnVjdCBpb21hcF9pb2VuZCAqbmV4dClcXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmM9NDA4PXZvaWQgaW9tYXBfaW9lbmRfdHJ5X21lcmdlKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsXFxuLS1cXG5mcy9pb21hcC9pb2VuZC5jLTQxNi1cXHRcXHRcXHRpb19saXN0KSkpIHtcXG5mcy9pb21hcC9pb2VuZC5jOjQxNzpcXHRcXHRpZiAoIWlvbWFwX2lvZW5kX2Nhbl9tZXJnZShpb2VuZCwgbmV4dCkpXFxuZnMvaW9tYXAvaW9lbmQuYy00MTgtXFx0XFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ5OjM2LjAwMTEyODA1M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTIwMDQ3NjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSS9PIEVuZCBQYXRoIGluIFhGUyoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiB0aGUgSS9PIGNvbXBsZXRpb24gcGF0aCBoZXJlLCBzcGVjaWZpY2FsbHksIHRoZSBpbnRlcmFjdGlvbiB3aXRoIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgLiBGcm9tIHdoYXQgSSdtIHNlZWluZywgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCBhcHBlYXJzIHRvIGFjdHVhbGx5IGNhbGwgdGhpcyBzcGVjaWZpYyBiaXQgb2YgY29kZSBpcyBgeGZzX2VuZF9pb2AuIFRoYXQgc2ltcGxpZmllcyB0aGluZ3MuIEl0IG1lYW5zIEkgY2FuIHRyYWNlIHRoZSBjb250cm9sIGZsb3cgYnkgemVyb2luZyBpbiBvbiBgeGZzX2VuZF9pb2Agd2l0aGluIGBmcy94ZnMveGZzX2FvcHMuY2AuIExldCdzIGdldCB0byB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDQyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NDk6MzguOTIxMTc3NzVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMveGZzL3hmc19hb3BzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTgwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTgwOlxcdCAqIGRpc2NvbnRpZ3VvdXMgZXh0ZW50cyBoZXJlLlxcbiAxODE6XFx0ICpcXG4gMTgyOlxcdCAqIFRoZSBpb2VuZCBjaGFpbiBsZW5ndGggdGhhdCB3ZSBjYW4gYmUgcHJvY2Vzc2luZyBoZXJlIGlzIGxhcmdlbHkgdW5ib3VuZCBpblxcbiAxODM6XFx0ICogbGVuZ3RoIGFuZCB3ZSBtYXkgaGF2ZSB0byBwZXJmb3JtIHNpZ25pZmljYW50IGFtb3VudHMgb2Ygd29yayBvbiBlYWNoIGlvZW5kXFxuIDE4NDpcXHQgKiB0byBjb21wbGV0ZSBpdC4gSGVuY2Ugd2UgaGF2ZSB0byBiZSBjYXJlZnVsIGFib3V0IGhvbGRpbmcgdGhlIENQVSBmb3IgdG9vXFxuIDE4NTpcXHQgKiBsb25nIGluIHRoaXMgbG9vcC5cXG4gMTg2OlxcdCAqL1xcbiAxODc6XFx0dm9pZFxcbiAxODg6XFx0eGZzX2VuZF9pbyhcXG4gMTg5OlxcdFxcdHN0cnVjdCB3b3JrX3N0cnVjdFxcdCp3b3JrKVxcbiAxOTA6XFx0e1xcbiAxOTE6XFx0XFx0c3RydWN0IHhmc19pbm9kZVxcdCppcCA9XFxuIDE5MjpcXHRcXHRcXHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IHhmc19pbm9kZSwgaV9pb2VuZF93b3JrKTtcXG4gMTkzOlxcdFxcdHN0cnVjdCBpb21hcF9pb2VuZFxcdCppb2VuZDtcXG4gMTk0OlxcdFxcdHN0cnVjdCBsaXN0X2hlYWRcXHR0bXA7XFxuIDE5NTpcXHRcXHR1bnNpZ25lZCBsb25nXFx0XFx0ZmxhZ3M7XFxuIDE5NjpcXHRcXG4gMTk3OlxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZpcC1cXHUwMDNlaV9pb2VuZF9sb2NrLCBmbGFncyk7XFxuIDE5ODpcXHRcXHRsaXN0X3JlcGxhY2VfaW5pdChcXHUwMDI2aXAtXFx1MDAzZWlfaW9lbmRfbGlzdCwgXFx1MDAyNnRtcCk7XFxuIDE5OTpcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZpcC1cXHUwMDNlaV9pb2VuZF9sb2NrLCBmbGFncyk7XFxuIDIwMDpcXHRcXG4gMjAxOlxcdFxcdGlvbWFwX3NvcnRfaW9lbmRzKFxcdTAwMjZ0bXApO1xcbiAyMDI6XFx0XFx0d2hpbGUgKChpb2VuZCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcXHUwMDI2dG1wLCBzdHJ1Y3QgaW9tYXBfaW9lbmQsXFxuIDIwMzpcXHRcXHRcXHRcXHRpb19saXN0KSkpIHtcXG4gMjA0OlxcdFxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNmlvZW5kLVxcdTAwM2Vpb19saXN0KTtcXG4gMjA1OlxcdFxcdFxcdGlvbWFwX2lvZW5kX3RyeV9tZXJnZShpb2VuZCwgXFx1MDAyNnRtcCk7XFxuIDIwNjpcXHRcXHRcXHRpZiAoYmlvX29wKFxcdTAwMjZpb2VuZC1cXHUwMDNlaW9fYmlvKSA9PSBSRVFfT1BfUkVBRClcXG4gMjA3OlxcdFxcdFxcdFxcdGlvbWFwX2ZpbmlzaF9pb2VuZHMoaW9lbmQsXFxuIDIwODpcXHRcXHRcXHRcXHRcXHRibGtfc3RhdHVzX3RvX2Vycm5vKGlvZW5kLVxcdTAwM2Vpb19iaW8uYmlfc3RhdHVzKSk7XFxuIDIwOTpcXHRcXHRcXHRlbHNlXFxuIDIxMDpcXHRcXHRcXHRcXHR4ZnNfZW5kX2lvZW5kX3dyaXRlKGlvZW5kKTtcXG4gMjExOlxcdFxcdFxcdGNvbmRfcmVzY2hlZCgpO1xcbiAyMTI6XFx0XFx0fVxcbiAyMTM6XFx0fVxcbiAyMTQ6XFx0XFxuIDIxNTpcXHR2b2lkXFxuIDIxNjpcXHR4ZnNfZW5kX2JpbyhcXG4gMjE3OlxcdFxcdHN0cnVjdCBiaW9cXHRcXHQqYmlvKVxcbiAyMTg6XFx0e1xcbiAyMTk6XFx0XFx0c3RydWN0IGlvbWFwX2lvZW5kXFx0KmlvZW5kID0gaW9tYXBfaW9lbmRfZnJvbV9iaW8oYmlvKTtcXG4gMjIwOlxcdFxcdHN0cnVjdCB4ZnNfaW5vZGVcXHQqaXAgPSBYRlNfSShpb2VuZC1cXHUwMDNlaW9faW5vZGUpO1xcbiAyMjE6XFx0XFx0c3RydWN0IHhmc19tb3VudFxcdCptcCA9IGlwLVxcdTAwM2VpX21vdW50O1xcbiAyMjI6XFx0XFx0dW5zaWduZWQgbG9uZ1xcdFxcdGZsYWdzO1xcbiAyMjM6XFx0XFxuIDIyNDpcXHRcXHQvKlxcbiAyMjU6XFx0XFx0ICogRm9yIEFwcGVuZHMgcmVjb3JkIHRoZSBhY3R1YWxseSB3cml0dGVuIGJsb2NrIG51bWJlciBhbmQgc2V0IHRoZVxcbiAyMjY6XFx0XFx0ICogYm91bmRhcnkgZmxhZyBpZiBuZWVkZWQuXFxuIDIyNzpcXHRcXHQgKi9cXG4gMjI4OlxcdFxcdGlmIChJU19FTkFCTEVEKENPTkZJR19YRlNfUlQpIFxcdTAwMjZcXHUwMDI2IGJpb19pc196b25lX2FwcGVuZChiaW8pKSB7XFxuIDIyOTpcXHRcXHRcXHRpb2VuZC1cXHUwMDNlaW9fc2VjdG9yID0gYmlvLVxcdTAwM2ViaV9pdGVyLmJpX3NlY3RvcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NDk6MzguOTIxMjY5MjFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzNTM2ODMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElPIENvbXBsZXRpb24gUGF0aCBpbiBYRlMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgeGZzX2VuZF9pb2AuIFRoZSBuYW1lIHNjcmVhbXMgXCJJTyBjb21wbGV0aW9uLFwiIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIHRoZSBjcml0aWNhbCBmdW5jdGlvbiB3ZSBuZWVkIHRvIGZvY3VzIG9uLiBJdCdzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLCB3aGljaCBpbW1lZGlhdGVseSBtZWFucyBpdCdzIGFzeW5jaHJvbm91cy4gSXQncyBjYWxsaW5nIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgLiBOb3csIEkgcmVjYWxsIHRoYXQgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAgaXMgaW52b2x2ZWQgaW4gbWVyZ2luZyBJT3MsIHNvIGB4ZnNfZW5kX2lvYCBpcyBsaWtlbHkgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGV5J3JlIGZpbmFsaXplZC5cblxuQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gc2luY2UgaXQgaXMgYSB3b3JrcXVldWUgZnVuY3Rpb24sIGl0J3MgcHJvYmFibHkgbm90IGRpcmVjdGx5IGNhbGxlZCBmcm9tIGEgc3lzdGVtIGNhbGwgcGF0aC4gV2UgbmVlZCB0byB0cmFjZSB3aGVyZSB0aGlzIHdvcmsgaXMgKnNjaGVkdWxlZCogaW4gdGhlIGZpcnN0IHBsYWNlIHRvIHRydWx5IHVuZGVyc3RhbmQgdGhlIGluaXRpYXRpb24gYW5kIGNvbXBsZXRpb24gcHJvY2Vzcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHVwc3RyZWFtIGNhbGxlcnMgb2YgYHhmc19lbmRfaW9gIHRvIGJ1aWxkIHRoZSB3aG9sZSBwaWN0dXJlLiBJJ2xsIG5lZWQgdG8gc2VlIHdoYXQncyBzY2hlZHVsaW5nIHRoYXQgd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1MTQsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ5OjQyLjk1NjY0MDAwMVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM4NjMwMzI4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpX2lvZW5kX3dvcmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMveGZzL3hmc19hb3BzLmM9MTg4PXhmc19lbmRfaW8oXFxuLS1cXG5mcy94ZnMveGZzX2FvcHMuYy0xOTEtXFx0c3RydWN0IHhmc19pbm9kZVxcdCppcCA9XFxuZnMveGZzL3hmc19hb3BzLmM6MTkyOlxcdFxcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgeGZzX2lub2RlLCBpX2lvZW5kX3dvcmspO1xcbmZzL3hmcy94ZnNfYW9wcy5jLTE5My1cXHRzdHJ1Y3QgaW9tYXBfaW9lbmRcXHQqaW9lbmQ7XFxuLS1cXG5mcy94ZnMveGZzX2FvcHMuYz0yMTY9eGZzX2VuZF9iaW8oXFxuLS1cXG5mcy94ZnMveGZzX2FvcHMuYy0yMzUtXFx0XFx0V0FSTl9PTl9PTkNFKCFxdWV1ZV93b3JrKG1wLVxcdTAwM2VtX3Vud3JpdHRlbl93b3JrcXVldWUsXFxuZnMveGZzL3hmc19hb3BzLmM6MjM2OlxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2aXAtXFx1MDAzZWlfaW9lbmRfd29yaykpO1xcbmZzL3hmcy94ZnNfYW9wcy5jLTIzNy1cXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZpb2VuZC1cXHUwMDNlaW9fbGlzdCwgXFx1MDAyNmlwLVxcdTAwM2VpX2lvZW5kX2xpc3QpO1xcbi0tXFxuZnMveGZzL3hmc19pY2FjaGUuYz04Nz14ZnNfaW5vZGVfYWxsb2MoXFxuLS1cXG5mcy94ZnMveGZzX2ljYWNoZS5jLTEyNy1cXHRpcC1cXHUwMDNlaV9jaGVja2VkID0gMDtcXG5mcy94ZnMveGZzX2ljYWNoZS5jOjEyODpcXHRJTklUX1dPUksoXFx1MDAyNmlwLVxcdTAwM2VpX2lvZW5kX3dvcmssIHhmc19lbmRfaW8pO1xcbmZzL3hmcy94ZnNfaWNhY2hlLmMtMTI5LVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZpcC1cXHUwMDNlaV9pb2VuZF9saXN0KTtcXG4tLVxcbmZzL3hmcy94ZnNfaW5vZGUuaD0yNT10eXBlZGVmIHN0cnVjdCB4ZnNfaW5vZGUge1xcbi0tXFxuZnMveGZzL3hmc19pbm9kZS5oLTk5LVxcdHNwaW5sb2NrX3RcXHRcXHRpX2lvZW5kX2xvY2s7XFxuZnMveGZzL3hmc19pbm9kZS5oOjEwMDpcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3RcXHRpX2lvZW5kX3dvcms7XFxuZnMveGZzL3hmc19pbm9kZS5oLTEwMS1cXHRzdHJ1Y3QgbGlzdF9oZWFkXFx0aV9pb2VuZF9saXN0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0OTo0NS4zNDI5NTIyOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjI0MzUzMzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFhGUydzIEkvTyBDb21wbGV0aW9uIFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgWEZTIGhhbmRsZXMgSS9PIGNvbXBsZXRpb24sIHNwZWNpZmljYWxseSB0aGUgYXN5bmNocm9ub3VzIGFzcGVjdC4gRnJvbSB0aGUgY29kZSwgaXQgc2VlbXMgYHhmc19lbmRfYmlvYCB0cmlnZ2VycyBgaV9pb2VuZF93b3JrYCwgYW5kIHNpbmNlIGB4ZnNfZW5kX2Jpb2AgaXMgdGhlIGBiaW9gJ3MgYGVuZF9pb2AgY2FsbGJhY2ssIHRoaXMgZXhlY3V0aW9uIGlzIGRlZmluaXRlbHkgYXN5bmNocm9ub3VzLlxuXG5EaXJlY3RseSBmdXp6aW5nIGB4ZnNfZW5kX2lvYCBvciBgeGZzX2VuZF9iaW9gIGxvb2tzIHRyaWNreSwgZ2l2ZW4gdGhlIGFzeW5jIG5hdHVyZS4gU28sIGEgZ29vZCBzdHJhdGVneSBpcyB0byBmb2N1cyBvbiB0aG9zZSB0d28gZnVuY3Rpb25zLCBzaW5jZSB0aGV5IHNlZW0gdG8gYmUgY3JpdGljYWwgZm9yIHRoZSBmbG93LlxuXG5Ob3csIGEgY3J1Y2lhbCBwb2ludC4gSXMgWEZTIHRoZSBvbmx5IGZpbGVzeXN0ZW0gdGhhdCB1c2VzIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgPyBBIHF1aWNrIGdyZXAgcmV2ZWFsZWQgdGhhdCAqb25seSogYHhmc19lbmRfaW9gIGNhbGxzIGl0LiBCdXTigKYgd2FpdCBhIHNlY29uZOKApiBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCBpcyBhY3R1YWxseSBleHBvcnRlZDogYEVYUE9SVF9TWU1CT0xfR1BMKGlvbWFwX2lvZW5kX3RyeV9tZXJnZSlgLiBUaGF0IGltcGxpZXMgaXQncyBpbnRlbmRlZCBmb3IgKm90aGVyKiBmaWxlc3lzdGVtcyB0byB1c2UsIGV2ZW4gdGhvdWdoIFhGUyBpcyB0aGUgb25seSBvbmUgZG9pbmcgc28gcmlnaHQgbm93LlxuXG5UaGVyZWZvcmUsIHRvIGVuYWJsZSB0aGlzIGNvZGUsIEknbGwgbmVlZCBgWEZTX0ZTYCBhbmQgYEZTX0lPTUFQYCBjb25maWd1cmF0aW9ucy4gQnV0LCBsZXQncyBqdXN0IG1ha2Ugc3VyZTsgaXMgYFhGU19GU2AgYWxvbmUgc3VmZmljaWVudD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTM1OCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0OTo1MC45NjczMDgwOTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MjMyMzIzMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGU19GU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy94ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL3hmcy9LY29uZmlnOjI6Y29uZmlnIFhGU19GU1xcbmZzL3hmcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlhGUyBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ5OjUzLjM5MDU0NjI0M1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDkyNjA3NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDaGVja2luZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4gSSd2ZSBnb3QgbXkgaW5pdGlhbCBjb25maWd1cmF0aW9uIHNldCwgYnV0IEkgbmVlZCB0byBkbyBhIHRob3JvdWdoIGNoZWNrIGZvciBhbnkgb3Zlcmxvb2tlZCBvciBzZWNvbmRhcnkgY29uZmlndXJhdGlvbnMsIGV4dGVybmFsIHNvdXJjZXMsIG9yIG92ZXJyaWRlcyB0aGF0IG1pZ2h0IGJlIGluZmx1ZW5jaW5nIHRoZSBjdXJyZW50IGJlaGF2aW9yLiBJJ20gdGhpbmtpbmcsIFwiSXMgdGhlcmUgYW5vdGhlciBjb25maWcgZmlsZSwgYSBkaWZmZXJlbnQgZW52aXJvbm1lbnQgdmFyaWFibGUsIG9yIHNvbWUgYXV0b21hdGVkIHByb2Nlc3MgSSd2ZSBmb3Jnb3R0ZW4gYWJvdXQgdGhhdCBjb3VsZCBiZSBhZmZlY3RpbmcgdGhlc2Ugc2V0dGluZ3M/XCIgSXQncyBhIGZ1bmRhbWVudGFsIHNhbml0eSBjaGVjazogZW5zdXJlIHRoYXQgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyB0aGUgb25seSBvbmUgaW4gcGxheS4gSSBkb24ndCB3YW50IHRvIHdhc3RlIHRpbWUgY2hhc2luZyBnaG9zdHMuIExldCdzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHN1cnByaXNlIHBhcmFtZXRlcnMgb3IgY29uZmxpY3Rpbmcgc2V0dGluZ3MgYmVmb3JlIEkgZ2V0IGludG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDA2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NDk6NTYuODgzMTU2MzA2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzI1Mjg3MTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGU19JT01BUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9LY29uZmlnPTEyPWNvbmZpZyBWQUxJREFURV9GU19QQVJTRVJcXG4tLVxcbmZzL0tjb25maWctMTctXFxuZnMvS2NvbmZpZzoxODpjb25maWcgRlNfSU9NQVBcXG5mcy9LY29uZmlnLTE5LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NDk6NTkuMjA4NDQ3OTc4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTY2MDgyMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgSS9PIEVuZCBQcm9jZXNzaW5nIGluIFhGUyoqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gdGhlIEkvTyBlbmQgcHJvY2Vzc2luZyB3aXRoaW4gdGhlIFhGUyBmaWxlc3lzdGVtLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2VudGVyIG9uIHRoZSBgWEZTX0ZTYCBjb25maWd1cmF0aW9uIG9wdGlvbiwgYXMgdGhhdCBzZWVtcyB0byBiZSB0aGUgY29yZSBvZiBpdC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBgRlNfSU9NQVBgIG9wdGlvbiBpcyBkaXJlY3RseSBzZWxlY3RlZCBieSBgWEZTX0ZTYCwgc28gaXQncyBhIGtleSBwYXJ0IG9mIHRoZSBwdXp6bGUuIE5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGltcG9ydGFudCBmdW5jdGlvbnMuIE15IGluc3RpbmN0IGlzIHRoYXQgYHhmc19lbmRfaW9gIGlzIGEgcGl2b3RhbCBmb2N1cyBzeW1ib2wuIEFoLCB5ZXMsIGl04oCZcyB0aGUgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSBwcm9jZXNzaW5nIG9mIHRoZSBgaW9lbmRzYC4gQnV0IHdhaXQsIHdoYXQgYWJvdXQgYGlvbWFwX2lvZW5kX2Nhbl9tZXJnZWA/IEl0J3Mgc3RhdGljLCBzbyB0aGF0J3Mgbm90IGdvaW5nIHRvIGdpdmUgbWUgbXVjaCBkaXJlY3QgaW5mb3JtYXRpb24uIEhvd2V2ZXIsIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIGlzIGV4cG9ydGVkLCBzbyB0aGF0IGxvb2tzIHByb21pc2luZy5cblxuVGhlcmVmb3JlLCBJJ2xsIGZvY3VzIG9uIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIGluIGNvbmp1bmN0aW9uIHdpdGggYHhmc19lbmRfaW9gLiBJIHNob3VsZCB2ZXJpZnkgdGhhdCBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCBpcyBsb2NhdGVkIHdpdGhpbiB0aGUgYGZzL2lvbWFwL2lvZW5kLmNgIHNvdXJjZSBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI4MiwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo1MDowMy45NjUwNTg3MjZaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMjQwLCJFcnJvciI6IllvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy4gUGxlYXNlIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUgaW5zdGVhZCBvZiByZXBlYXRpbmcgcXVlcmllcy4iLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb21hcF9pb2VuZF90cnlfbWVyZ2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJZb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuIFBsZWFzZSBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlIGluc3RlYWQgb2YgcmVwZWF0aW5nIHF1ZXJpZXMuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjUwOjAzLjk2NTEwOTUwNloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzU1NTM2NjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGFscmVhZHkgZG9uZSBteSBpbml0aWFsIGxlZ3dvcmsgLSBJJ3ZlIGFscmVhZHkgYGdyZXBgcGVkIGZvciByZWxldmFudCBpbmZvcm1hdGlvbi4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2s6IGBpZiAoaW9lbmQtXHUwMDNlaW9fcHJpdmF0ZSAhPSBuZXh0LVx1MDAzZWlvX3ByaXZhdGUpYCB3aXRoaW4gdGhlIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgIGZ1bmN0aW9uLiBGdW5jdGlvbmFsbHksIHRoaXMgcHJldmVudHMgdGhlIG1lcmdpbmcgb2YgYGlvZW5kc2AgdGhhdCBoYXZlIGRpZmZlcmluZyBgaW9fcHJpdmF0ZWAgdmFsdWVzLiBUaGlzIGlzIGludGVyZXN0aW5nLCBhbmQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmssIFwiZnV6emluZyBjYW5kaWRhdGUhXCIgQW55IGNoYW5nZSB0aGF0IGFsdGVycyBtZXJnaW5nIGxvZ2ljIGlzIGEgcHJpbWUgdGFyZ2V0LlxuXG5NeSBpbml0aWFsIGNvbmZpZyBpbnZlc3RpZ2F0aW9uIHN1Z2dlc3RzIHRoaXMgaXMgcmVsZXZhbnQgdG8gYFhGU19GU2AgYW5kIGBGU19JT01BUGAuIEkgd2FudCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gdGhlIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIGFuZCBgeGZzX2VuZF9pb2Agc3ltYm9scywgYXMgdGhleSBhcmUga2V5IHBvaW50cyBpbiB0aGlzIG1lcmdpbmcgcHJvY2Vzcy4gQSBxdWljayBzYW5pdHkgY2hlY2sgbmVlZHMgdG8gYmUgcGVyZm9ybWVkIHRvIGNvbmZpcm0gYGlvX3ByaXZhdGVgIGlzIGFjdHVhbGx5IHVzZWQgd2l0aGluIHRoZSBYRlMgY29kZSBwYXRoLiBUaGlzIHdpbGwgY29uZmlybSB0aGUgdmFsaWRpdHkgb2YgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI4MjIsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NTA6MDcuNzIwNjQ3Nzk0WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzkzMzU5MjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvX3ByaXZhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3MzQgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jPTY3PXN0YXRpYyBMSVNUX0hFQUQoZGV2X2xpc3QpO1xcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jLTY4LVxcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jOjY5OnN0cnVjdCBybmJkX2lvX3ByaXZhdGUge1xcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jLTcwLVxcdHN0cnVjdCBydHJzX3Nydl9vcFxcdFxcdCppZDtcXG4tLVxcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jPTEwNT1zdGF0aWMgdm9pZCBybmJkX2Rldl9iaV9lbmRfaW8oc3RydWN0IGJpbyAqYmlvKVxcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jLTEwNi17XFxuZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LmM6MTA3OlxcdHN0cnVjdCBybmJkX2lvX3ByaXZhdGUgKnJuYmRfcHJpdiA9IGJpby1cXHUwMDNlYmlfcHJpdmF0ZTtcXG5kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1zcnYuYy0xMDgtXFx0c3RydWN0IHJuYmRfc3J2X3Nlc3NfZGV2ICpzZXNzX2RldiA9IHJuYmRfcHJpdi1cXHUwMDNlc2Vzc19kZXY7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1zcnYuYz0xMTc9c3RhdGljIGludCBwcm9jZXNzX3JkbWEoc3RydWN0IHJuYmRfc3J2X3Nlc3Npb24gKnNydl9zZXNzLFxcbi0tXFxuZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LmMtMTIxLVxcdGNvbnN0IHN0cnVjdCBybmJkX21zZ19pbyAqbXNnID0gdXNyO1xcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jOjEyMjpcXHRzdHJ1Y3Qgcm5iZF9pb19wcml2YXRlICpwcml2O1xcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jLTEyMy1cXHRzdHJ1Y3Qgcm5iZF9zcnZfc2Vzc19kZXYgKnNlc3NfZGV2O1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYz0xNjY9c3RhdGljIGNvbnN0IHN0cnVjdCBjb21lZGlfbHJhbmdlIHBjbW1pb19hb19yYW5nZXMgPSB7XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTE3Ni1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jOjE3NzpzdHJ1Y3QgcGNtbWlvX3ByaXZhdGUge1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtMTc4LVxcdHNwaW5sb2NrX3QgcGFnZWxvY2s7XFx0LyogcHJvdGVjdHMgdGhlIHBhZ2UgcmVnaXN0ZXJzICovXFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTE4ND1zdGF0aWMgdm9pZCBwY21taW9fZGlvX3dyaXRlKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB2YWwsXFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTE4Ni17XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYzoxODc6XFx0c3RydWN0IHBjbW1pb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtMTg4LVxcdHVuc2lnbmVkIGxvbmcgaW9iYXNlID0gZGV2LVxcdTAwM2Vpb2Jhc2U7XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTIwNj1zdGF0aWMgdW5zaWduZWQgaW50IHBjbW1pb19kaW9fcmVhZChzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy0yMDgte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6MjA5OlxcdHN0cnVjdCBwY21taW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTIxMC1cXHR1bnNpZ25lZCBsb25nIGlvYmFzZSA9IGRldi1cXHUwMDNlaW9iYXNlO1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYz0zMDg9c3RhdGljIHZvaWQgcGNtbWlvX3N0b3BfaW50cihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy0zMTAte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6MzExOlxcdHN0cnVjdCBwY21taW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTMxMi1cXG4tLVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM9MzIxPXN0YXRpYyB2b2lkIHBjbW1pb19oYW5kbGVfZGlvX2ludHIoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtMzI0LXtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jOjMyNTpcXHRzdHJ1Y3QgcGNtbWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy0zMjYtXFx0c3RydWN0IGNvbWVkaV9jbWQgKmNtZCA9IFxcdTAwMjZzLVxcdTAwM2Vhc3luYy1cXHUwMDNlY21kO1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYz0zODA9c3RhdGljIHZvaWQgcGNtbWlvX3N0YXJ0X2ludHIoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtMzgyLXtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jOjM4MzpcXHRzdHJ1Y3QgcGNtbWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy0zODQtXFx0c3RydWN0IGNvbWVkaV9jbWQgKmNtZCA9IFxcdTAwMjZzLVxcdTAwM2Vhc3luYy1cXHUwMDNlY21kO1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYz00MTA9c3RhdGljIGludCBwY21taW9fY2FuY2VsKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYsIHN0cnVjdCBjb21lZGlfc3ViZGV2aWNlICpzKVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtNDExLXtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jOjQxMjpcXHRzdHJ1Y3QgcGNtbWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy00MTMtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM9NDIzPXN0YXRpYyBpbnQgcGNtbWlvX2ludHRyaWdfc3RhcnRfaW50cihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy00MjYte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6NDI3OlxcdHN0cnVjdCBwY21taW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTQyOC1cXHRzdHJ1Y3QgY29tZWRpX2NtZCAqY21kID0gXFx1MDAyNnMtXFx1MDAzZWFzeW5jLVxcdTAwM2VjbWQ7XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTQ0Nj1zdGF0aWMgaW50IHBjbW1pb19jbWQoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnMpXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy00NDcte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6NDQ4OlxcdHN0cnVjdCBwY21taW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTQ0OS1cXHRzdHJ1Y3QgY29tZWRpX2NtZCAqY21kID0gXFx1MDAyNnMtXFx1MDAzZWFzeW5jLVxcdTAwM2VjbWQ7XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTY2ND1zdGF0aWMgaW50IHBjbW1pb19hdHRhY2goc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9kZXZjb25maWcgKml0KVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtNjY1LXtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jOjY2NjpcXHRzdHJ1Y3QgcGNtbWlvX3ByaXZhdGUgKmRldnByaXY7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy02NjctXFx0c3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnM7XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTExNj1zdHJ1Y3QgcGNtdWlvX2FzaWMge1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0xMjItXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYzoxMjM6c3RydWN0IHBjbXVpb19wcml2YXRlIHtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTEyNC1cXHRzdHJ1Y3QgcGNtdWlvX2FzaWMgYXNpY3NbUENNVUlPX01BWF9BU0lDU107XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTE1Mj1zdGF0aWMgdm9pZCBwY211aW9fd3JpdGUoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHZhbCxcXG4tLVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMTU0LXtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjE1NTpcXHRzdHJ1Y3QgcGNtdWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0xNTYtXFx0c3RydWN0IHBjbXVpb19hc2ljICpjaGlwID0gXFx1MDAyNmRldnByaXYtXFx1MDAzZWFzaWNzW2FzaWNdO1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYz0xNzU9c3RhdGljIHVuc2lnbmVkIGludCBwY211aW9fcmVhZChzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0xNzcte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6MTc4OlxcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTE3OS1cXHRzdHJ1Y3QgcGNtdWlvX2FzaWMgKmNoaXAgPSBcXHUwMDI2ZGV2cHJpdi1cXHUwMDNlYXNpY3NbYXNpY107XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTI4Mz1zdGF0aWMgdm9pZCBwY211aW9fc3RvcF9pbnRyKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTI4NS17XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYzoyODY6XFx0c3RydWN0IHBjbXVpb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMjg3LVxcdGludCBhc2ljID0gcGNtdWlvX3N1YmRldmljZV90b19hc2ljKHMpO1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYz0yOTg9c3RhdGljIHZvaWQgcGNtdWlvX2hhbmRsZV9pbnRyX3N1YmRldihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0zMDEte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6MzAyOlxcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTMwMy1cXHRpbnQgYXNpYyA9IHBjbXVpb19zdWJkZXZpY2VfdG9fYXNpYyhzKTtcXG4tLVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM9MzU5PXN0YXRpYyBpcnFyZXR1cm5fdCBwY211aW9faW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmQpXFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTM2MS1cXHRzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2ID0gZDtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjM2MjpcXHRzdHJ1Y3QgcGNtdWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0zNjMtXFx0aW50IGhhbmRsZWQgPSAwO1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYz0zNzQ9c3RhdGljIHZvaWQgcGNtdWlvX3N0YXJ0X2ludHIoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMzc2LXtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjM3NzpcXHRzdHJ1Y3QgcGNtdWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0zNzgtXFx0aW50IGFzaWMgPSBwY211aW9fc3ViZGV2aWNlX3RvX2FzaWMocyk7XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTQwNj1zdGF0aWMgaW50IHBjbXVpb19jYW5jZWwoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnMpXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy00MDcte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6NDA4OlxcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTQwOS1cXHRpbnQgYXNpYyA9IHBjbXVpb19zdWJkZXZpY2VfdG9fYXNpYyhzKTtcXG4tLVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM9NDIxPXN0YXRpYyBpbnQgcGNtdWlvX2ludHRyaWdfc3RhcnRfaW50cihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy00MjQte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6NDI1OlxcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTQyNi1cXHRzdHJ1Y3QgY29tZWRpX2NtZCAqY21kID0gXFx1MDAyNnMtXFx1MDAzZWFzeW5jLVxcdTAwM2VjbWQ7XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTQ0Nz1zdGF0aWMgaW50IHBjbXVpb19jbWQoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnMpXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy00NDgte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6NDQ5OlxcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTQ1MC1cXHRzdHJ1Y3QgY29tZWRpX2NtZCAqY21kID0gXFx1MDAyNnMtXFx1MDAzZWFzeW5jLVxcdTAwM2VjbWQ7XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTUxOT1zdGF0aWMgaW50IHBjbXVpb19hdHRhY2goc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9kZXZjb25maWcgKml0KVxcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy01MjItXFx0c3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnM7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYzo1MjM6XFx0c3RydWN0IHBjbXVpb19wcml2YXRlICpkZXZwcml2O1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtNTI0LVxcdHVuc2lnbmVkIGludCBpb19sZW4gPSBib2FyZC1cXHUwMDNlbnVtX2FzaWNzICogUENNVUlPX0FTSUNfSU9TSVpFO1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYz01OTc9c3RhdGljIHZvaWQgcGNtdWlvX2RldGFjaChzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2KVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtNTk4LXtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjU5OTpcXHRzdHJ1Y3QgcGNtdWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy02MDAtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMjAtXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjIxOnN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSB7XFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTIyLVxcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzAtXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjMxOnN0YXRpYyBpbmxpbmUgdTMyIG1zbV9kcF9yZWFkX2xpbmsoc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbywgdTMyIG9mZnNldClcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzIte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTM1LVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzozNjpzdGF0aWMgaW5saW5lIHZvaWQgbXNtX2RwX3dyaXRlX2xpbmsoc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbyxcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzctXFx0XFx0XFx0ICAgICAgIHUzMiBvZmZzZXQsIHUzMiBkYXRhKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTQ1LVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzo0NjpzdGF0aWMgdm9pZCBtc21fZHBfYXVkaW9fc3RyZWFtX3NkcChzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvKVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy00Ny17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtNjEtXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjYyOnN0YXRpYyB2b2lkIG1zbV9kcF9hdWRpb190aW1lc3RhbXBfc2RwKHN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSAqYXVkaW8pXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTYzLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy03Ny1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6Nzg6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX2luZm9mcmFtZV9zZHAoc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbylcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtNzkte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTkzLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzo5NDpzdGF0aWMgdm9pZCBtc21fZHBfYXVkaW9fY29weV9tYW5hZ2VtZW50X3NkcChzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvKVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy05NS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMTA5LVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzoxMTA6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX2lzcmNfc2RwKHN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSAqYXVkaW8pXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTExMS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMTMwLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzoxMzE6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX2NvbmZpZ19zZHAoc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbylcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMTMyLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0xNjEtXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjE2MjpzdGF0aWMgdm9pZCBtc21fZHBfYXVkaW9fc2V0dXBfc2RwKHN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSAqYXVkaW8pXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTE2My17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMTcyLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzoxNzM6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX3NldHVwX2FjcihzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvKVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0xNzQte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTIwMy1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6MjA0OnN0YXRpYyB2b2lkIG1zbV9kcF9hdWRpb19zYWZlX3RvX2V4aXRfbGV2ZWwoc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbylcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMjA1LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yMzYtXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjIzNzpzdGF0aWMgdm9pZCBtc21fZHBfYXVkaW9fZW5hYmxlKHN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSAqYXVkaW8sIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yMzgte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTI1NC1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6MjU1OnN0YXRpYyBzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKm1zbV9kcF9hdWRpb19nZXRfZGF0YShzdHJ1Y3QgbXNtX2RwICptc21fZHBfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMjU2LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yNjQtXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjI2NTpcXHRyZXR1cm4gY29udGFpbmVyX29mKG1zbV9kcF9hdWRpbywgc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlLCBtc21fZHBfYXVkaW8pO1xcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yNjYtfVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jPTI2OD1pbnQgbXNtX2RwX2F1ZGlvX3ByZXBhcmUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yNzMtXFx0aW50IHJjID0gMDtcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6Mjc0OlxcdHN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSAqYXVkaW87XFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTI3NS1cXHRzdHJ1Y3QgbXNtX2RwICptc21fZHBfZGlzcGxheTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYz0zMTE9dm9pZCBtc21fZHBfYXVkaW9fc2h1dGRvd24oc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0zMTMte1xcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzozMTQ6XFx0c3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbztcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzE1LVxcdHN0cnVjdCBtc21fZHAgKm1zbV9kcF9kaXNwbGF5O1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jPTM0MD1zdHJ1Y3QgbXNtX2RwX2F1ZGlvICptc21fZHBfYXVkaW9fZ2V0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzQzLVxcdGludCByYyA9IDA7XFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjM0NDpcXHRzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvO1xcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0zNDUtXFx0c3RydWN0IG1zbV9kcF9hdWRpbyAqbXNtX2RwX2F1ZGlvO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jPTM2OT12b2lkIG1zbV9kcF9hdWRpb19wdXQoc3RydWN0IG1zbV9kcF9hdWRpbyAqbXNtX2RwX2F1ZGlvKVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0zNzAte1xcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzozNzE6XFx0c3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbztcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzcyLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTM3NS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6Mzc2OlxcdGF1ZGlvID0gY29udGFpbmVyX29mKG1zbV9kcF9hdWRpbywgc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlLCBtc21fZHBfYXVkaW8pO1xcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0zNzctXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMC1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzoyMTpzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhIHtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMi1cXHRzdHJ1Y3QgZ3Bpb19kZXNjICpzZGE7XFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0zOT1zdGF0aWMgdm9pZCBpMmNfZ3Bpb19zZXRzZGFfdmFsKHZvaWQgKmRhdGEsIGludCBzdGF0ZSlcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy00MC17XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6NDE6XFx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRhdGE7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtNDItXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz01Mj1zdGF0aWMgdm9pZCBpMmNfZ3Bpb19zZXRzY2xfdmFsKHZvaWQgKmRhdGEsIGludCBzdGF0ZSlcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy01My17XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6NTQ6XFx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRhdGE7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtNTUtXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz01OT1zdGF0aWMgaW50IGkyY19ncGlvX2dldHNkYSh2b2lkICpkYXRhKVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTYwLXtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzo2MTpcXHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gZGF0YTtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy02Mi1cXG4tLVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jPTY2PXN0YXRpYyBpbnQgaTJjX2dwaW9fZ2V0c2NsKHZvaWQgKmRhdGEpXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtNjcte1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjY4OlxcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYgPSBkYXRhO1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTY5LVxcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9ODE9c3RhdGljIGludCBmb3BzXyMjd2lyZSMjX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXHRcXHRcXFxcXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtODIte1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzo4MzpcXHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gZGF0YTtcXHRcXHRcXFxcXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtODQtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9OTA9c3RhdGljIGludCBmb3BzXyMjd2lyZSMjX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcdFxcdFxcXFxcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy05MS17XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjkyOlxcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYgPSBkYXRhO1xcdFxcdFxcXFxcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy05My1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0xMDI9V0lSRV9BVFRSSUJVVEUoc2RhKTtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0xMDMtXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MTA0OnN0YXRpYyB2b2lkIGkyY19ncGlvX2luY29tcGxldGVfdHJhbnNmZXIoc3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdixcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0xMDUtXFx0XFx0XFx0XFx0XFx0dTMyIHBhdHRlcm4sIHU4IHBhdHRlcm5fc2l6ZSlcXG4tLVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jPTEyOT1zdGF0aWMgaW50IGZvcHNfaW5jb21wbGV0ZV9hZGRyX3BoYXNlX3NldCh2b2lkICpkYXRhLCB1NjQgYWRkcilcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0xMzAte1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjEzMTpcXHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gZGF0YTtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0xMzItXFx0dTMyIHBhdHRlcm47XFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0xNDY9c3RhdGljIGludCBmb3BzX2luY29tcGxldGVfd3JpdGVfYnl0ZV9zZXQodm9pZCAqZGF0YSwgdTY0IGFkZHIpXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMTQ3LXtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzoxNDg6XFx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRhdGE7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMTQ5LVxcdHUzMiBwYXR0ZXJuO1xcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9MTYzPURFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2luY29tcGxldGVfd3JpdGVfYnl0ZSwgTlVMTCwgZm9wc19pbmNvbXBsZXRlX3dyaXRlX2J5dGVfc2V0LCBcXFwiJWxsdVxcXFxuXFxcIik7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMTY0LVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjE2NTpzdGF0aWMgaW50IGkyY19ncGlvX2ZpX2FjdF9vbl9zY2xfaXJxKHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYsXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMTY2LVxcdFxcdFxcdFxcdCAgICAgICBpcnFyZXR1cm5fdCBoYW5kbGVyKGludCwgdm9pZCopKVxcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9MTk3PXN0YXRpYyBpcnFyZXR1cm5fdCBsb3NlX2FyYml0cmF0aW9uX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMTk4LXtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzoxOTk6XFx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRldl9pZDtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMDAtXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0yMTA9c3RhdGljIGludCBmb3BzX2xvc2VfYXJiaXRyYXRpb25fc2V0KHZvaWQgKmRhdGEsIHU2NCBkdXJhdGlvbilcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMTEte1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjIxMjpcXHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gZGF0YTtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMTMtXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0yMjk9c3RhdGljIGlycXJldHVybl90IGluamVjdF9wYW5pY19pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTIzMC17XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MjMxOlxcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYgPSBkZXZfaWQ7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMjMyLVxcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9MjM5PXN0YXRpYyBpbnQgZm9wc19pbmplY3RfcGFuaWNfc2V0KHZvaWQgKmRhdGEsIHU2NCBkdXJhdGlvbilcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yNDAte1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjI0MTpcXHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gZGF0YTtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yNDItXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0yNTU9c3RhdGljIHZvaWQgaTJjX2dwaW9fZmF1bHRfaW5qZWN0b3JfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTI1Ni17XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MjU3OlxcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yNTgtXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0zMzk9c3RhdGljIGludCBpMmNfZ3Bpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTM0MC17XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MzQxOlxcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXY7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMzQyLVxcdHN0cnVjdCBpMmNfZ3Bpb19wbGF0Zm9ybV9kYXRhICpwZGF0YTtcXG4tLVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jPTQ1Mz1zdGF0aWMgdm9pZCBpMmNfZ3Bpb19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy00NTQte1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjQ1NTpcXHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2O1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTQ1Ni1cXHRzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXA7XFxuLS1cXG5kcml2ZXJzL21kL2JjYWNoZS9iY2FjaGUuaD03NDU9c3RydWN0IGJiaW8ge1xcbi0tXFxuZHJpdmVycy9tZC9iY2FjaGUvYmNhY2hlLmgtNzU3LVxcbmRyaXZlcnMvbWQvYmNhY2hlL2JjYWNoZS5oOjc1ODpzdHJ1Y3QgZGV0YWNoZWRfZGV2X2lvX3ByaXZhdGUge1xcbmRyaXZlcnMvbWQvYmNhY2hlL2JjYWNoZS5oLTc1OS1cXHRzdHJ1Y3QgYmNhY2hlX2RldmljZVxcdCpkO1xcbi0tXFxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jPTEwODA9c3RhdGljIHZvaWQgZGV0YWNoZWRfZGV2X2VuZF9pbyhzdHJ1Y3QgYmlvICpiaW8pXFxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jLTEwODEte1xcbmRyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYzoxMDgyOlxcdHN0cnVjdCBkZXRhY2hlZF9kZXZfaW9fcHJpdmF0ZSAqZGRpcCA9XFxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jOjEwODM6XFx0XFx0Y29udGFpbmVyX29mKGJpbywgc3RydWN0IGRldGFjaGVkX2Rldl9pb19wcml2YXRlLCBiaW8pO1xcbmRyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYy0xMDg0LVxcdHN0cnVjdCBiaW8gKm9yaWdfYmlvID0gZGRpcC1cXHUwMDNlb3JpZ19iaW87XFxuLS1cXG5kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmM9MTEwMT1zdGF0aWMgdm9pZCBkZXRhY2hlZF9kZXZfZG9fcmVxdWVzdChzdHJ1Y3QgYmNhY2hlX2RldmljZSAqZCxcXG4tLVxcbmRyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYy0xMTAzLXtcXG5kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmM6MTEwNDpcXHRzdHJ1Y3QgZGV0YWNoZWRfZGV2X2lvX3ByaXZhdGUgKmRkaXA7XFxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jLTExMDUtXFx0c3RydWN0IGNhY2hlZF9kZXYgKmRjID0gY29udGFpbmVyX29mKGQsIHN0cnVjdCBjYWNoZWRfZGV2LCBkaXNrKTtcXG4tLVxcbmRyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYy0xMTE3LVxcbmRyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYzoxMTE4OlxcdGRkaXAgPSBjb250YWluZXJfb2YoY2xvbmVfYmlvLCBzdHJ1Y3QgZGV0YWNoZWRfZGV2X2lvX3ByaXZhdGUsIGJpbyk7XFxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jLTExMTktXFx0LyogQ291bnQgb24gdGhlIGJjYWNoZSBkZXZpY2UgKi9cXG4tLVxcbmRyaXZlcnMvbWQvYmNhY2hlL3N1cGVyLmM9ODk3PXN0YXRpYyBpbnQgYmNhY2hlX2RldmljZV9pbml0KHN0cnVjdCBiY2FjaGVfZGV2aWNlICpkLCB1bnNpZ25lZCBpbnQgYmxvY2tfc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbWQvYmNhY2hlL3N1cGVyLmMtOTUzLVxcdGlmIChiaW9zZXRfaW5pdChcXHUwMDI2ZC1cXHUwMDNlYmlvX2RldGFjaGVkLCA0LFxcbmRyaXZlcnMvbWQvYmNhY2hlL3N1cGVyLmM6OTU0OlxcdFxcdFxcdG9mZnNldG9mKHN0cnVjdCBkZXRhY2hlZF9kZXZfaW9fcHJpdmF0ZSwgYmlvKSxcXG5kcml2ZXJzL21kL2JjYWNoZS9zdXBlci5jLTk1NS1cXHRcXHRcXHRCSU9TRVRfTkVFRF9CVkVDU3xCSU9TRVRfTkVFRF9SRVNDVUVSKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaD02MT1zdHJ1Y3Qgc2phMTEwNV9yZWdzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC05NS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1Lmg6OTY6c3RydWN0IHNqYTExMDVfbWRpb19wcml2YXRlIHtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtOTctXFx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTEwPWludCBzamExMTA1X3Bjc19tZGlvX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksIGludCBtbWQsIGludCByZWcpXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTEte1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjEyOlxcdHN0cnVjdCBzamExMTA1X21kaW9fcHJpdmF0ZSAqbWRpb19wcml2ID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTEzLVxcdHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYgPSBtZGlvX3ByaXYtXFx1MDAzZXByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0zNT1pbnQgc2phMTEwNV9wY3NfbWRpb193cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IG1tZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM3LXtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozODpcXHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zOS1cXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9NTI9aW50IHNqYTExMTBfcGNzX21kaW9fcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IG1tZCwgaW50IHJlZylcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy01My17XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6NTQ6XFx0c3RydWN0IHNqYTExMDVfbWRpb19wcml2YXRlICptZGlvX3ByaXYgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtNTUtXFx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiA9IG1kaW9fcHJpdi1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTk3PWludCBzamExMTEwX3Bjc19tZGlvX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgbW1kLCBpbnQgcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtOTkte1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjEwMDpcXHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0xMDEtXFx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiA9IG1kaW9fcHJpdi1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTE1Mj1zdGF0aWMgaW50IHNqYTExMDVfYmFzZV90MV9tZGlvX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksIGludCByZWcpXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTUzLXtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzoxNTQ6XFx0c3RydWN0IHNqYTExMDVfbWRpb19wcml2YXRlICptZGlvX3ByaXYgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTU1LVxcdHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYgPSBtZGlvX3ByaXYtXFx1MDAzZXByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0xNjk9c3RhdGljIGludCBzamExMTA1X2Jhc2VfdDFfbWRpb19yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTcxLXtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzoxNzI6XFx0c3RydWN0IHNqYTExMDVfbWRpb19wcml2YXRlICptZGlvX3ByaXYgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTczLVxcdHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYgPSBtZGlvX3ByaXYtXFx1MDAzZXByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0xOTM9c3RhdGljIGludCBzamExMTA1X2Jhc2VfdDFfbWRpb193cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IHJlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTE5NS17XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6MTk2OlxcdHN0cnVjdCBzamExMTA1X21kaW9fcHJpdmF0ZSAqbWRpb19wcml2ID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTE5Ny1cXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MjA4PXN0YXRpYyBpbnQgc2phMTEwNV9iYXNlX3QxX21kaW9fd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yMTAte1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjIxMTpcXHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yMTItXFx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiA9IG1kaW9fcHJpdi1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTIzMD1zdGF0aWMgaW50IHNqYTExMDVfYmFzZV90eF9tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IHJlZylcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yMzEte1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjIzMjpcXHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yMzMtXFx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiA9IG1kaW9fcHJpdi1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTI0Nj1zdGF0aWMgaW50IHNqYTExMDVfYmFzZV90eF9tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksIGludCByZWcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yNDgte1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjI0OTpcXHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yNTAtXFx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiA9IG1kaW9fcHJpdi1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTI1OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3R4X3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yNjAte1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjI2MTpcXHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdjtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yNjItXFx0c3RydWN0IGRldmljZV9ub2RlICpucDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTMxMj1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3QxX3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zMTQte1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjMxNTpcXHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdjtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zMTYtXFx0c3RydWN0IGRldmljZV9ub2RlICpucDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTM2OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19wY3NfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zNjkte1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjM3MDpcXHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdjtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zNzEtXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gcHJpdi1cXHUwMDNlZHM7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jPTg4PWludCBjaW9fc2V0X29wdGlvbnMoc3RydWN0IHN1YmNoYW5uZWwgKnNjaCwgaW50IGZsYWdzKVxcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmMtODkte1xcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmM6OTA6XFx0c3RydWN0IGlvX3N1YmNoYW5uZWxfcHJpdmF0ZSAqcHJpdiA9IHRvX2lvX3ByaXZhdGUoc2NoKTtcXG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jLTkxLVxcbi0tXFxuZHJpdmVycy9zMzkwL2Npby9jaW8uYz0xMjM9Y2lvX3N0YXJ0X2tleSAoc3RydWN0IHN1YmNoYW5uZWwgKnNjaCxcXHQvKiBzdWJjaGFubmVsIHN0cnVjdHVyZSAqL1xcbi0tXFxuZHJpdmVycy9zMzkwL2Npby9jaW8uYy0xMjcte1xcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmM6MTI4OlxcdHN0cnVjdCBpb19zdWJjaGFubmVsX3ByaXZhdGUgKnByaXYgPSB0b19pb19wcml2YXRlKHNjaCk7XFxuZHJpdmVycy9zMzkwL2Npby9jaW8uYy0xMjktXFx0dW5pb24gb3JiICpvcmIgPSBcXHUwMDI2cHJpdi1cXHUwMDNlb3JiO1xcbi0tXFxuZHJpdmVycy9zMzkwL2Npby9jaW8uYz03MTM9aW50IGNpb190bV9zdGFydF9rZXkoc3RydWN0IHN1YmNoYW5uZWwgKnNjaCwgc3RydWN0IHRjdyAqdGN3LCB1OCBscG0sIHU4IGtleSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmMtNzE1LVxcdGludCBjYztcXG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jOjcxNjpcXHR1bmlvbiBvcmIgKm9yYiA9IFxcdTAwMjZ0b19pb19wcml2YXRlKHNjaCktXFx1MDAzZW9yYjtcXG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jLTcxNy1cXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmM9NzQ0PWludCBjaW9fdG1faW50cmcoc3RydWN0IHN1YmNoYW5uZWwgKnNjaClcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmMtNzQ3LVxcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmM6NzQ4OlxcdGlmICghdG9faW9fcHJpdmF0ZShzY2gpLVxcdTAwM2VvcmIudG0uYilcXG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jLTc0OS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmM9MTAyNT1zdGF0aWMgaW50IGlvX3N1YmNoYW5uZWxfcHJvYmUoc3RydWN0IHN1YmNoYW5uZWwgKnNjaClcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTA3NC1cXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jOjEwNzU6XFx0c2V0X2lvX3ByaXZhdGUoc2NoLCBpb19wcml2KTtcXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jLTEwNzYtXFx0Y3NzX3NjaGVkdWxlX2V2YWwoc2NoLVxcdTAwM2VzY2hpZCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jPTEwODY9c3RhdGljIHZvaWQgaW9fc3ViY2hhbm5lbF9yZW1vdmUoc3RydWN0IHN1YmNoYW5uZWwgKnNjaClcXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jLTEwODcte1xcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmM6MTA4ODpcXHRzdHJ1Y3QgaW9fc3ViY2hhbm5lbF9wcml2YXRlICppb19wcml2ID0gdG9faW9fcHJpdmF0ZShzY2gpO1xcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTA4OS1cXHRzdHJ1Y3QgY2N3X2RldmljZSAqY2RldjtcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTA5Ny1cXHRzY2hfc2V0X2NkZXYoc2NoLCBOVUxMKTtcXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jOjEwOTg6XFx0c2V0X2lvX3ByaXZhdGUoc2NoLCBOVUxMKTtcXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jLTEwOTktXFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZzY2gtXFx1MDAzZWxvY2spO1xcbi0tXFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYz0xNjM3PXN0cnVjdCBjY3dfZGV2aWNlICogX19pbml0IGNjd19kZXZpY2VfY3JlYXRlX2NvbnNvbGUoc3RydWN0IGNjd19kcml2ZXIgKmRydilcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTY1NC1cXHRcXHRnb3RvIGVycl9kbWFfYXJlYTtcXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jOjE2NTU6XFx0c2V0X2lvX3ByaXZhdGUoc2NoLCBpb19wcml2KTtcXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jLTE2NTYtXFx0Y2RldiA9IGlvX3N1YmNoYW5uZWxfY3JlYXRlX2Njd2RldihzY2gpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xNjU5LVxcdFxcdFxcdFxcdCAgaW9fcHJpdi1cXHUwMDNlZG1hX2FyZWEsIGlvX3ByaXYtXFx1MDAzZWRtYV9hcmVhX2RtYSk7XFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYzoxNjYwOlxcdFxcdHNldF9pb19wcml2YXRlKHNjaCwgTlVMTCk7XFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xNjYxLVxcdFxcdHB1dF9kZXZpY2UoXFx1MDAyNnNjaC1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmM9MTY3Nj12b2lkIF9faW5pdCBjY3dfZGV2aWNlX2Rlc3Ryb3lfY29uc29sZShzdHJ1Y3QgY2N3X2RldmljZSAqY2RldilcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTY3OC1cXHRzdHJ1Y3Qgc3ViY2hhbm5lbCAqc2NoID0gdG9fc3ViY2hhbm5lbChjZGV2LVxcdTAwM2VkZXYucGFyZW50KTtcXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jOjE2Nzk6XFx0c3RydWN0IGlvX3N1YmNoYW5uZWxfcHJpdmF0ZSAqaW9fcHJpdiA9IHRvX2lvX3ByaXZhdGUoc2NoKTtcXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jLTE2ODAtXFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYzoxNjgxOlxcdHNldF9pb19wcml2YXRlKHNjaCwgTlVMTCk7XFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xNjgyLVxcdGRtYV9mcmVlX2NvaGVyZW50KFxcdTAwMjZzY2gtXFx1MDAzZWRldiwgc2l6ZW9mKCppb19wcml2LVxcdTAwM2VkbWFfYXJlYSksXFxuLS1cXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZV9mc20uYz0zOT1zdGF0aWMgdm9pZCBjY3dfdGltZW91dF9sb2coc3RydWN0IGNjd19kZXZpY2UgKmNkZXYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZV9mc20uYy00Ny1cXHRzY2ggPSB0b19zdWJjaGFubmVsKGNkZXYtXFx1MDAzZWRldi5wYXJlbnQpO1xcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlX2ZzbS5jOjQ4OlxcdHByaXZhdGUgPSB0b19pb19wcml2YXRlKHNjaCk7XFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2VfZnNtLmMtNDktXFx0b3JiID0gXFx1MDAyNnByaXZhdGUtXFx1MDAzZW9yYjtcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlX3N0YXR1cy5jPTMxMj1jY3dfZGV2aWNlX2RvX3NlbnNlKHN0cnVjdCBjY3dfZGV2aWNlICpjZGV2LCBzdHJ1Y3QgaXJiICppcmIpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZV9zdGF0dXMuYy0zMzItXFx0ICovXFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2Vfc3RhdHVzLmM6MzMzOlxcdHNlbnNlX2NjdyA9IFxcdTAwMjZ0b19pb19wcml2YXRlKHNjaCktXFx1MDAzZWRtYV9hcmVhLVxcdTAwM2VzZW5zZV9jY3c7XFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2Vfc3RhdHVzLmMtMzM0LVxcdHNlbnNlX2Njdy1cXHUwMDNlY21kX2NvZGUgPSBDQ1dfQ01EX0JBU0lDX1NFTlNFO1xcbi0tXFxuZHJpdmVycy9zMzkwL2Npby9pb19zY2guaD0xNj1zdHJ1Y3QgaW9fc3ViY2hhbm5lbF9wcml2YXRlIHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vaW9fc2NoLmgtMjctXFxuZHJpdmVycy9zMzkwL2Npby9pb19zY2guaDoyODojZGVmaW5lIHRvX2lvX3ByaXZhdGUobikgKChzdHJ1Y3QgaW9fc3ViY2hhbm5lbF9wcml2YXRlICopIFxcXFxcXG5kcml2ZXJzL3MzOTAvY2lvL2lvX3NjaC5oLTI5LVxcdFxcdFxcdCAgZGV2X2dldF9kcnZkYXRhKFxcdTAwMjYobiktXFx1MDAzZWRldikpXFxuZHJpdmVycy9zMzkwL2Npby9pb19zY2guaDozMDojZGVmaW5lIHNldF9pb19wcml2YXRlKG4sIHApIChkZXZfc2V0X2RydmRhdGEoXFx1MDAyNihuKS1cXHUwMDNlZGV2LCBwKSlcXG5kcml2ZXJzL3MzOTAvY2lvL2lvX3NjaC5oLTMxLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo1MDoxMC4xMTQwMTY4OTJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY1MTg4NDg4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjI0NTk1LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo1MDoxNC43NjU5MDUwMjZaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjI5MDE4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb19wcml2YXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2lvbWFwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2lvbWFwL2lvZW5kLmM9MTc9c3RydWN0IGlvbWFwX2lvZW5kICppb21hcF9pbml0X2lvZW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9pb21hcC9pb2VuZC5jLTMwLVxcdGlvZW5kLVxcdTAwM2Vpb19zZWN0b3IgPSBiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfc2VjdG9yO1xcbmZzL2lvbWFwL2lvZW5kLmM6MzE6XFx0aW9lbmQtXFx1MDAzZWlvX3ByaXZhdGUgPSBOVUxMO1xcbmZzL2lvbWFwL2lvZW5kLmMtMzItXFx0cmV0dXJuIGlvZW5kO1xcbi0tXFxuZnMvaW9tYXAvaW9lbmQuYz0zNzA9c3RhdGljIGJvb2wgaW9tYXBfaW9lbmRfY2FuX21lcmdlKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsXFxuLS1cXG5mcy9pb21hcC9pb2VuZC5jLTM4Mi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuZnMvaW9tYXAvaW9lbmQuYzozODM6XFx0aWYgKGlvZW5kLVxcdTAwM2Vpb19wcml2YXRlICE9IG5leHQtXFx1MDAzZWlvX3ByaXZhdGUpXFxuZnMvaW9tYXAvaW9lbmQuYy0zODQtXFx0XFx0cmV0dXJuIGZhbHNlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo1MDoxNC45NzgyMDE1NzRaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg3NzY0Nzc1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgaW9tYXBfaW9lbmRgIFN0cnVjdHVyZSoqXG5cblJpZ2h0LCBzbyBgaW9fcHJpdmF0ZWAuLi4gdGhhdCdzIGEga2V5IGZpZWxkLCBJIGJlbGlldmUsIHdpdGhpbiB0aGUgYHN0cnVjdCBpb21hcF9pb2VuZGAuIEknbSBnb2luZyB0byBxdWlja2x5IGNvbmZpcm0gaXRzIGRlZmluaXRpb24gYW5kIGNvbnRleHQuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgdmVyaWZ5IHRoZSBleGFjdCBkZXRhaWxzLiBTbywgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gY2hlY2sgaXMgZGVmaW5pdGVseSBgaW5jbHVkZS9saW51eC9pb21hcC5oYC4gSSdsbCBvcGVuIHRoYXQgaGVhZGVyIGZpbGUgYW5kIHRha2UgYSBsb29rLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBwdXJwb3NlIG9mIGBpb19wcml2YXRlYCwgaXRzIGRhdGEgdHlwZSwgYW5kIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoZSBJL08gbWFwcGluZyBmcmFtZXdvcmsuIEkgYmV0IGl0IGhvbGRzIHNvbWUgY29udGV4dCBzcGVjaWZpYyB0byB0aGUgb3BlcmF0aW9uLiBJJ2xsIG1ha2Ugc3VyZSB0byBub3RlIGFueSByZWxhdGlvbnNoaXBzIHRvIG90aGVyIHJlbGF0ZWQgc3RydWN0cyBvciBmdW5jdGlvbnMuIFRoaXMgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYwOTAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo1MDoxOC44NTU4NTIzNzRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczODUxNDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvX3ByaXZhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9pb21hcC5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvaW9tYXAuaD00MTk9c3RydWN0IGlvbWFwX2lvZW5kIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvaW9tYXAuaC00MjgtXFx0c2VjdG9yX3RcXHRcXHRpb19zZWN0b3I7XFx0Lyogc3RhcnQgc2VjdG9yIG9mIGlvZW5kICovXFxuaW5jbHVkZS9saW51eC9pb21hcC5oOjQyOTpcXHR2b2lkXFx0XFx0XFx0KmlvX3ByaXZhdGU7XFx0LyogZmlsZSBzeXN0ZW0gcHJpdmF0ZSBkYXRhICovXFxuaW5jbHVkZS9saW51eC9pb21hcC5oLTQzMC1cXHRzdHJ1Y3QgYmlvXFx0XFx0aW9fYmlvO1xcdFxcdC8qIE1VU1QgQkUgTEFTVCEgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NTA6MTguOTI5NzA4MTZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcwMTY3MTY2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IHVzZXI6XG5cbioqRGVlcCBEaXZlIGludG8gWEZTIGFuZCBgaW9fcHJpdmF0ZWAqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGlvX3ByaXZhdGVgIGZpZWxkLCBpdCdzIHNpdHRpbmcgd2l0aGluIHRoZSBgc3RydWN0IGlvbWFwX2lvZW5kYCwgYXMgZXhwZWN0ZWQuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgWEZTJ3MgdXNhZ2Ugb2YgdGhpcyBmaWVsZC4gSXQncyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbiB3aGVuIGRlYWxpbmcgd2l0aCBibG9jayBJL08sIHBhcnRpY3VsYXJseSBpbiBhZHZhbmNlZCBmaWxlc3lzdGVtcy4gSSB3YW50IHRvIHNlZSBob3cgWEZTIGxldmVyYWdlcyB0aGF0IHByaXZhdGUgZGF0YSBwb2ludGVyLiBEb2VzIGl0IHN0YXNoIGN1c3RvbSBtZXRhZGF0YSwgcmVmZXJlbmNlIGludGVybmFsIHN0cnVjdHVyZXMsIG9yIGlzIGl0IHVzZWQgZm9yIHRyYW5zYWN0aW9uIHRyYWNraW5nLCBldGMuPyBVbmRlcnN0YW5kaW5nIFhGUydzIHVzYWdlIGhlcmUgd2lsbCB0ZWxsIG1lIGhvdyBjcml0aWNhbCB0aGUgZmllbGQgaXMgYW5kIGhvdyBjaGFuZ2luZyBpdCB3b3VsZCBhZmZlY3QgWEZTJ3MgZGF0YSBwYXRocy4gSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBYRlMgY29kZSBub3chXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NDg0LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NTA6MjIuNjMxMzgxN1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc4ODIyNzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvX3ByaXZhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMveGZzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3hmcy94ZnNfYW9wcy5jPTg0PXhmc19pb2VuZF9wdXRfb3Blbl96b25lcyhcXG4tLVxcbmZzL3hmcy94ZnNfYW9wcy5jLTkyLVxcdGxpc3RfZm9yX2VhY2hfZW50cnkodG1wLCBcXHUwMDI2aW9lbmQtXFx1MDAzZWlvX2xpc3QsIGlvX2xpc3QpXFxuZnMveGZzL3hmc19hb3BzLmM6OTM6XFx0XFx0eGZzX29wZW5fem9uZV9wdXQodG1wLVxcdTAwM2Vpb19wcml2YXRlKTtcXG5mcy94ZnMveGZzX2FvcHMuYy05NC1cXG4tLVxcbmZzL3hmcy94ZnNfYW9wcy5jLTk4LVxcdCAqL1xcbmZzL3hmcy94ZnNfYW9wcy5jOjk5OlxcdGlmIChpb2VuZC1cXHUwMDNlaW9fcHJpdmF0ZSlcXG5mcy94ZnMveGZzX2FvcHMuYzoxMDA6XFx0XFx0eGZzX29wZW5fem9uZV9wdXQoaW9lbmQtXFx1MDAzZWlvX3ByaXZhdGUpO1xcbmZzL3hmcy94ZnNfYW9wcy5jLTEwMS19XFxuLS1cXG5mcy94ZnMveGZzX2FvcHMuYz0xMDc9eGZzX2VuZF9pb2VuZF93cml0ZShcXG4tLVxcbmZzL3hmcy94ZnNfYW9wcy5jLTE1NS1cXHRcXHRlcnJvciA9IHhmc196b25lZF9lbmRfaW8oaXAsIG9mZnNldCwgc2l6ZSwgaW9lbmQtXFx1MDAzZWlvX3NlY3RvcixcXG5mcy94ZnMveGZzX2FvcHMuYzoxNTY6XFx0XFx0XFx0XFx0aW9lbmQtXFx1MDAzZWlvX3ByaXZhdGUsIE5VTExGU0JMT0NLKTtcXG5mcy94ZnMveGZzX2FvcHMuYy0xNTctXFx0ZWxzZSBpZiAoaW9lbmQtXFx1MDAzZWlvX2ZsYWdzIFxcdTAwMjYgSU9NQVBfSU9FTkRfU0hBUkVEKVxcbi0tXFxuZnMveGZzL3hmc196b25lX2FsbG9jLmM9ODM1PXhmc19zdWJtaXRfem9uZWRfYmlvKFxcbi0tXFxuZnMveGZzL3hmc196b25lX2FsbG9jLmMtODQwLVxcdGlvZW5kLVxcdTAwM2Vpb19iaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBpb2VuZC1cXHUwMDNlaW9fc2VjdG9yO1xcbmZzL3hmcy94ZnNfem9uZV9hbGxvYy5jOjg0MTpcXHRpb2VuZC1cXHUwMDNlaW9fcHJpdmF0ZSA9IG96O1xcbmZzL3hmcy94ZnNfem9uZV9hbGxvYy5jLTg0Mi1cXHRhdG9taWNfaW5jKFxcdTAwMjZvei1cXHUwMDNlb3pfcmVmKTsgLyogZm9yIHhmc196b25lZF9lbmRfaW8gKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NTA6MjMuMDEwMjA5Nzk4WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3OTc3NjYyOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqWEZTIFpvbmVkIFN0b3JhZ2UgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIFhGUyBkZWZpbml0ZWx5IHV0aWxpemVzIGBpb19wcml2YXRlYCBmb3IgaXRzIHpvbmVkIHN0b3JhZ2UgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IHRocm91Z2ggYHhmc19vcGVuX3pvbmVfcHV0YCBhbmQgYHhmc19zdWJtaXRfem9uZWRfYmlvYC4gVGhhdCdzIGEga2V5IG9ic2VydmF0aW9uLiBLbm93aW5nIHRoYXQgYGlvX3ByaXZhdGVgIGlzIGNlbnRyYWwgdG8gdGhpcyBpbXBsZW1lbnRhdGlvbiwgaXQgbGVhZHMgbWUgZGlyZWN0bHkgdG8gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBXZSdyZSBvYnZpb3VzbHkgZ29pbmcgdG8gbmVlZCBgQ09ORklHX1hGU19GU2AgZW5hYmxlZC4gTm93IHRoZSBxdWVzdGlvbiBpcywgd2hhdCBvdGhlciBmbGFncyBhcmUgaW1wbGljaXRseSByZXF1aXJlZCB0byBlbmFibGUgem9uZWQgc3RvcmFnZSBpbiBYRlM/IE15IGludHVpdGlvbiBzYXlzIHRoYXQgYENPTkZJR19CTEtfREVWX1pPTkVEYCAob3Igc29tZXRoaW5nIHZlcnkgY2xvc2VseSByZWxhdGVkKSBpcyBsaWtlbHkgYSBkZXBlbmRlbmN5LiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIHJlbGF0ZWQgY29uZmlnIG9wdGlvbnMsIHBlcmhhcHMgd2l0aGluIHRoZSBleGlzdGluZyBYRlMgY29uZmlnIG9wdGlvbnMuIEknbGwgdGFrZSBhIGxvb2sgYXQgYENPTkZJR19YRlNfUlRgIGFuZCBgQ09ORklHX0JMS19ERVZfWk9ORURgIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MjQ0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjUwOjI3LjgwNzk3ODQxM1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTkzMTc1OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGU19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMveGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMveGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy94ZnMvS2NvbmZpZzoyOmNvbmZpZyBYRlNfRlNcXG5mcy94ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJYRlMgZmlsZXN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMveGZzL0tjb25maWctMjQtXFxuZnMveGZzL0tjb25maWc6MjU6Y29uZmlnIFhGU19TVVBQT1JUX1Y0XFxuZnMveGZzL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiU3VwcG9ydCBkZXByZWNhdGVkIFY0IChjcmM9MCkgZm9ybWF0XFxcIlxcbi0tXFxuZnMveGZzL0tjb25maWctNDktXFxuZnMveGZzL0tjb25maWc6NTA6Y29uZmlnIFhGU19TVVBQT1JUX0FTQ0lJX0NJXFxuZnMveGZzL0tjb25maWctNTEtXFx0Ym9vbCBcXFwiU3VwcG9ydCBkZXByZWNhdGVkIGNhc2UtaW5zZW5zaXRpdmUgYXNjaWkgKGFzY2lpLWNpPTEpIGZvcm1hdFxcXCJcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTc2LVxcbmZzL3hmcy9LY29uZmlnOjc3OmNvbmZpZyBYRlNfUVVPVEFcXG5mcy94ZnMvS2NvbmZpZy03OC1cXHRib29sIFxcXCJYRlMgUXVvdGEgc3VwcG9ydFxcXCJcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTk0LVxcbmZzL3hmcy9LY29uZmlnOjk1OmNvbmZpZyBYRlNfUE9TSVhfQUNMXFxuZnMveGZzL0tjb25maWctOTYtXFx0Ym9vbCBcXFwiWEZTIFBPU0lYIEFDTCBzdXBwb3J0XFxcIlxcbi0tXFxuZnMveGZzL0tjb25maWctMTA0LVxcbmZzL3hmcy9LY29uZmlnOjEwNTpjb25maWcgWEZTX1JUXFxuZnMveGZzL0tjb25maWctMTA2LVxcdGJvb2wgXFxcIlhGUyBSZWFsdGltZSBzdWJ2b2x1bWUgc3VwcG9ydFxcXCJcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTEzMi1cXG5mcy94ZnMvS2NvbmZpZzoxMzM6Y29uZmlnIFhGU19EUkFJTl9JTlRFTlRTXFxuZnMveGZzL0tjb25maWctMTM0LVxcdGJvb2xcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTEzNi1cXG5mcy94ZnMvS2NvbmZpZzoxMzc6Y29uZmlnIFhGU19MSVZFX0hPT0tTXFxuZnMveGZzL0tjb25maWctMTM4LVxcdGJvb2xcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTE0MC1cXG5mcy94ZnMvS2NvbmZpZzoxNDE6Y29uZmlnIFhGU19NRU1PUllfQlVGU1xcbmZzL3hmcy9LY29uZmlnLTE0Mi1cXHRib29sXFxuZnMveGZzL0tjb25maWctMTQzLVxcbmZzL3hmcy9LY29uZmlnOjE0NDpjb25maWcgWEZTX0JUUkVFX0lOX01FTVxcbmZzL3hmcy9LY29uZmlnLTE0NS1cXHRib29sXFxuZnMveGZzL0tjb25maWctMTQ2LVxcbmZzL3hmcy9LY29uZmlnOjE0Nzpjb25maWcgWEZTX09OTElORV9TQ1JVQlxcbmZzL3hmcy9LY29uZmlnLTE0OC1cXHRib29sIFxcXCJYRlMgb25saW5lIG1ldGFkYXRhIGNoZWNrIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy94ZnMvS2NvbmZpZy0xNjMtXFxuZnMveGZzL0tjb25maWc6MTY0OmNvbmZpZyBYRlNfT05MSU5FX1NDUlVCX1NUQVRTXFxuZnMveGZzL0tjb25maWctMTY1LVxcdGJvb2wgXFxcIlhGUyBvbmxpbmUgbWV0YWRhdGEgY2hlY2sgdXNhZ2UgZGF0YSBjb2xsZWN0aW9uXFxcIlxcbi0tXFxuZnMveGZzL0tjb25maWctMTc4LVxcbmZzL3hmcy9LY29uZmlnOjE3OTpjb25maWcgWEZTX09OTElORV9SRVBBSVJcXG5mcy94ZnMvS2NvbmZpZy0xODAtXFx0Ym9vbCBcXFwiWEZTIG9ubGluZSBtZXRhZGF0YSByZXBhaXIgc3VwcG9ydFxcXCJcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTE5My1cXG5mcy94ZnMvS2NvbmZpZzoxOTQ6Y29uZmlnIFhGU19XQVJOXFxuZnMveGZzL0tjb25maWctMTk1LVxcdGJvb2wgXFxcIlhGUyBWZXJib3NlIFdhcm5pbmdzXFxcIlxcbi0tXFxuZnMveGZzL0tjb25maWctMjA2LVxcbmZzL3hmcy9LY29uZmlnOjIwNzpjb25maWcgWEZTX0RFQlVHXFxuZnMveGZzL0tjb25maWctMjA4LVxcdGJvb2wgXFxcIlhGUyBEZWJ1Z2dpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTIxOS1cXG5mcy94ZnMvS2NvbmZpZzoyMjA6Y29uZmlnIFhGU19ERUJVR19FWFBFTlNJVkVcXG5mcy94ZnMvS2NvbmZpZy0yMjEtXFx0Ym9vbCBcXFwiWEZTIGV4cGVuc2l2ZSBkZWJ1Z2dpbmcgY2hlY2tzXFxcIlxcbi0tXFxuZnMveGZzL0tjb25maWctMjMxLVxcbmZzL3hmcy9LY29uZmlnOjIzMjpjb25maWcgWEZTX0FTU0VSVF9GQVRBTFxcbmZzL3hmcy9LY29uZmlnLTIzMy1cXHRib29sIFxcXCJYRlMgZmF0YWwgYXNzZXJ0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NTA6MjcuOTA3MzAyMzk4WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNTk4Nzk2NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMgc3BlY2lmaWMgZmlsZSBhbmFseXNpczpcblxuKipEaXZpbmcgaW50byBgeGZzX3pvbmVfYWxsb2MuY2AgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBoYW5kbGUgb24gdGhlIGxhbmRzY2FwZSBvZiBgZnMveGZzL3hmc196b25lX2FsbG9jLmNgLiBCZWZvcmUgSSBldmVuIHRoaW5rIGFib3V0IHRoZSBzcGVjaWZpY3Mgd2l0aGluIHRoZSBmaWxlIGl0c2VsZiwgSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCByZWxpZXMgb24gaXQsIGFuZCB3aGF0IGl0IGl0c2VsZiByZWxpZXMgb24uIEknbSB0aGlua2luZyBhYm91dCB0aG9zZSBjcml0aWNhbCBkYXRhIHN0cnVjdHVyZXMsIEFQSXMsIGFuZCBmdW5jdGlvbnMuIFdoYXQgYXJlIHRoZSBrZXkgaGVhZGVycywgd2hpY2ggc3RydWN0dXJlcyBkb2VzIGl0IHV0aWxpemUgaGVhdmlseT8gSSdsbCBwcm9iYWJseSBiZSB0cmFjaW5nIGJhY2sgZnVuY3Rpb24gY2FsbHMgdG8gdW5kZXJzdGFuZCBpdHMgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGFuZCBob3cgdGhlc2UgcGllY2VzIGZpdCBpbnRvIHRoZSBicm9hZGVyIFhGUyBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhpbmdzIGxpa2UgbWV0YWRhdGEgbWFuYWdlbWVudCwgYWxsb2NhdGlvbiBzdHJhdGVnaWVzLCBhbmQgdGhlIG92ZXJhbGwgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMgaW52b2x2ZWQgaW4gem9uZS1iYXNlZCBhbGxvY2F0aW9uIHdpdGhpbiBYRlMuIEdvdHRhIG1hcCBvdXQgdGhlIGRlcGVuZGVuY2llcyBiZWZvcmUgSSBjYW4gdHJ1bHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiBhbnkgY2hhbmdlcyBvciBkZWJ1Z2dpbmcgc3RlcHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTQ5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NTA6MzEuMjY3MTg0MDk5WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDkwMzgzNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZzX3pvbmVfYWxsb2Mub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy94ZnMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMveGZzL01ha2VmaWxlPTE0Mj14ZnMtJChDT05GSUdfWEZTX1JUKVxcdFxcdCs9IHhmc19ydGFsbG9jLm8gXFxcXFxcbmZzL3hmcy9NYWtlZmlsZToxNDM6XFx0XFx0XFx0XFx0ICAgeGZzX3pvbmVfYWxsb2MubyBcXFxcXFxuZnMveGZzL01ha2VmaWxlLTE0NC1cXHRcXHRcXHRcXHQgICB4ZnNfem9uZV9nYy5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NTA6MzEuNDE2MjI2NDZaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQxNTUxNTAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjI3NDcxLCJPdXRwdXRUb2tlbnMiOjI3MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NTA6MzYuODMxNzQzNTk5WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwMTc4NjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlNfRlNcIixcbiAgICBcIlhGU19SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvbWFwX2lvZW5kX3RyeV9tZXJnZVwiLFxuICAgIFwiaW9tYXBfaW9lbmRfY2FuX21lcmdlXCIsXG4gICAgXCJ4ZnNfZW5kX2lvXCIsXG4gICAgXCJ4ZnNfZW5kX2lvZW5kX3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgIHRvIHByZXZlbnQgbWVyZ2luZyBgaW9tYXBfaW9lbmRgIHN0cnVjdHVyZXMgaWYgdGhlaXIgYGlvX3ByaXZhdGVgIGZpZWxkcyBkaWZmZXIuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBJL08gY29tcGxldGlvbiBtZXJnaW5nIGxvZ2ljIGluIGBmcy9pb21hcC9pb2VuZC5jYC4gVGhlIGBpb19wcml2YXRlYCBmaWVsZCBpcyB1c2VkIGJ5IFhGUyAoc3BlY2lmaWNhbGx5IHdpdGggYENPTkZJR19YRlNfUlRgIGVuYWJsZWQsIGluIGB4ZnNfem9uZV9hbGxvYy5jYCBhbmQgYHhmc19hb3BzLmNgKSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gYW4gYHhmc19vcGVuX3pvbmVgLiBJZiBpb2VuZHMgd2l0aCBkaWZmZXJlbnQgYGlvX3ByaXZhdGVgIHBvaW50ZXJzIHdlcmUgbWVyZ2VkLCBpdCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdCB6b25lIG1hbmFnZW1lbnQgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlcyBpbiBYRlMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKGlvbWFwKSBhbmQgYSBzcGVjaWZpYyBmaWxlc3lzdGVtIChYRlMpLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlNfRlNcIixcbiAgICBcIlhGU19SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvbWFwX2lvZW5kX3RyeV9tZXJnZVwiLFxuICAgIFwiaW9tYXBfaW9lbmRfY2FuX21lcmdlXCIsXG4gICAgXCJ4ZnNfZW5kX2lvXCIsXG4gICAgXCJ4ZnNfZW5kX2lvZW5kX3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgIHRvIHByZXZlbnQgbWVyZ2luZyBgaW9tYXBfaW9lbmRgIHN0cnVjdHVyZXMgaWYgdGhlaXIgYGlvX3ByaXZhdGVgIGZpZWxkcyBkaWZmZXIuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBJL08gY29tcGxldGlvbiBtZXJnaW5nIGxvZ2ljIGluIGBmcy9pb21hcC9pb2VuZC5jYC4gVGhlIGBpb19wcml2YXRlYCBmaWVsZCBpcyB1c2VkIGJ5IFhGUyAoc3BlY2lmaWNhbGx5IHdpdGggYENPTkZJR19YRlNfUlRgIGVuYWJsZWQsIGluIGB4ZnNfem9uZV9hbGxvYy5jYCBhbmQgYHhmc19hb3BzLmNgKSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gYW4gYHhmc19vcGVuX3pvbmVgLiBJZiBpb2VuZHMgd2l0aCBkaWZmZXJlbnQgYGlvX3ByaXZhdGVgIHBvaW50ZXJzIHdlcmUgbWVyZ2VkLCBpdCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdCB6b25lIG1hbmFnZW1lbnQgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlcyBpbiBYRlMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKGlvbWFwKSBhbmQgYSBzcGVjaWZpYyBmaWxlc3lzdGVtIChYRlMpLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowwk6xw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-13 08:23:21 +0000 UTC FinishedAt: 2026-07-13 08:50:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "adea84ee6cdea611146c4251d3c1616f5a09feca", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFS_FS", "XFS_RT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "adea84ee6cdea611146c4251d3c1616f5a09feca", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFS_FS", "XFS_RT" ], "series_id": "983b49b5-5677-4861-a77a-e0310a557a15" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "iomap_ioend_try_merge", "iomap_ioend_can_merge", "xfs_end_io", "xfs_end_ioend_write" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGU19GUyYjMzQ7LAogICAgJiMzNDtYRlNfUlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpb21hcF9pb2VuZF90cnlfbWVyZ2UmIzM0OywKICAgICYjMzQ7aW9tYXBfaW9lbmRfY2FuX21lcmdlJiMzNDssCiAgICAmIzM0O3hmc19lbmRfaW8mIzM0OywKICAgICYjMzQ7eGZzX2VuZF9pb2VuZF93cml0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gYGlvbWFwX2lvZW5kX2Nhbl9tZXJnZWAgdG8gcHJldmVudCBtZXJnaW5nIGBpb21hcF9pb2VuZGAgc3RydWN0dXJlcyBpZiB0aGVpciBgaW9fcHJpdmF0ZWAgZmllbGRzIGRpZmZlci4gVGhpcyBhZmZlY3RzIHRoZSBjb3JlIEkvTyBjb21wbGV0aW9uIG1lcmdpbmcgbG9naWMgaW4gYGZzL2lvbWFwL2lvZW5kLmNgLiBUaGUgYGlvX3ByaXZhdGVgIGZpZWxkIGlzIHVzZWQgYnkgWEZTIChzcGVjaWZpY2FsbHkgd2l0aCBgQ09ORklHX1hGU19SVGAgZW5hYmxlZCwgaW4gYHhmc196b25lX2FsbG9jLmNgIGFuZCBgeGZzX2FvcHMuY2ApIHRvIHN0b3JlIGEgcG9pbnRlciB0byBhbiBgeGZzX29wZW5fem9uZWAuIElmIGlvZW5kcyB3aXRoIGRpZmZlcmVudCBgaW9fcHJpdmF0ZWAgcG9pbnRlcnMgd2VyZSBtZXJnZWQsIGl0IGNvdWxkIGxlYWQgdG8gaW5jb3JyZWN0IHpvbmUgbWFuYWdlbWVudCBvciByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzIGluIFhGUy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoaW9tYXApIGFuZCBhIHNwZWNpZmljIGZpbGVzeXN0ZW0gKFhGUyksIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjQ4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTZkOTJhODNmMGIxYTUyZjE2NjM5Y2EzYmMyMDJkNWNlZjdmN2M4MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDA4OjQ4OjM3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2lvbWFwL2lvZW5kLmMgYi9mcy9pb21hcC9pb2VuZC5jXG5pbmRleCBhY2YzY2Y5OGIyM2E5Yi4uYmE1OTU3MGMwOTI2NDUgMTAwNjQ0XG4tLS0gYS9mcy9pb21hcC9pb2VuZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9pb21hcC9pb2VuZC5jXG5AQCAtMzgwLDYgJiM0MzszODAsOCBAQCBzdGF0aWMgYm9vbCBpb21hcF9pb2VuZF9jYW5fbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbiBcbiBcdGlmIChpb2VuZC1cdTAwM2Vpb19iaW8uYmlfc3RhdHVzICE9IG5leHQtXHUwMDNlaW9fYmlvLmJpX3N0YXR1cylcbiBcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdGlmIChpb2VuZC1cdTAwM2Vpb19wcml2YXRlICE9IG5leHQtXHUwMDNlaW9fcHJpdmF0ZSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiBcdGlmIChuZXh0LVx1MDAzZWlvX2ZsYWdzIFx1MDAyNiBJT01BUF9JT0VORF9CT1VOREFSWSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0aWYgKChpb2VuZC1cdTAwM2Vpb19mbGFncyBcdTAwMjYgSU9NQVBfSU9FTkRfTk9NRVJHRV9GTEFHUykgIT1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlNfRlMmIzM0OywKICAgICYjMzQ7WEZTX1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9tYXBfaW9lbmRfdHJ5X21lcmdlJiMzNDssCiAgICAmIzM0O2lvbWFwX2lvZW5kX2Nhbl9tZXJnZSYjMzQ7LAogICAgJiMzNDt4ZnNfZW5kX2lvJiMzNDssCiAgICAmIzM0O3hmc19lbmRfaW9lbmRfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgIHRvIHByZXZlbnQgbWVyZ2luZyBgaW9tYXBfaW9lbmRgIHN0cnVjdHVyZXMgaWYgdGhlaXIgYGlvX3ByaXZhdGVgIGZpZWxkcyBkaWZmZXIuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBJL08gY29tcGxldGlvbiBtZXJnaW5nIGxvZ2ljIGluIGBmcy9pb21hcC9pb2VuZC5jYC4gVGhlIGBpb19wcml2YXRlYCBmaWVsZCBpcyB1c2VkIGJ5IFhGUyAoc3BlY2lmaWNhbGx5IHdpdGggYENPTkZJR19YRlNfUlRgIGVuYWJsZWQsIGluIGB4ZnNfem9uZV9hbGxvYy5jYCBhbmQgYHhmc19hb3BzLmNgKSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gYW4gYHhmc19vcGVuX3pvbmVgLiBJZiBpb2VuZHMgd2l0aCBkaWZmZXJlbnQgYGlvX3ByaXZhdGVgIHBvaW50ZXJzIHdlcmUgbWVyZ2VkLCBpdCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdCB6b25lIG1hbmFnZW1lbnQgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlcyBpbiBYRlMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKGlvbWFwKSBhbmQgYSBzcGVjaWZpYyBmaWxlc3lzdGVtIChYRlMpLCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTZkOTJhODNmMGIxYTUyZjE2NjM5Y2EzYmMyMDJkNWNlZjdmN2M4MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDEzIDA4OjQ4OjM3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvaW9tYXAvaW9lbmQuYyBiL2ZzL2lvbWFwL2lvZW5kLmMKaW5kZXggYWNmM2NmOThiMjNhOWIuLmJhNTk1NzBjMDkyNjQ1IDEwMDY0NAotLS0gYS9mcy9pb21hcC9pb2VuZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2lvbWFwL2lvZW5kLmMKQEAgLTM4MCw2ICYjNDM7MzgwLDggQEAgc3RhdGljIGJvb2wgaW9tYXBfaW9lbmRfY2FuX21lcmdlKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsCiAKIAlpZiAoaW9lbmQtJmd0O2lvX2Jpby5iaV9zdGF0dXMgIT0gbmV4dC0mZ3Q7aW9fYmlvLmJpX3N0YXR1cykKIAkJcmV0dXJuIGZhbHNlOwomIzQzOwlpZiAoaW9lbmQtJmd0O2lvX3ByaXZhdGUgIT0gbmV4dC0mZ3Q7aW9fcHJpdmF0ZSkKJiM0MzsJCXJldHVybiBmYWxzZTsKIAlpZiAobmV4dC0mZ3Q7aW9fZmxhZ3MgJmFtcDsgSU9NQVBfSU9FTkRfQk9VTkRBUlkpCiAJCXJldHVybiBmYWxzZTsKIAlpZiAoKGlvZW5kLSZndDtpb19mbGFncyAmYW1wOyBJT01BUF9JT0VORF9OT01FUkdFX0ZMQUdTKSAhPQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODYzCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpb21hcCBTdWJzeXN0ZW0gTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkgc2VlIGEgcGF0Y2ggdG91Y2hpbmcgYGZzL2lvbWFwL2lvZW5kLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgYSBjaGVjayB3aXRoaW4gYGlvbWFwX2lvZW5kX2Nhbl9tZXJnZWA6IGBpZiAoaW9lbmQtJmd0O2lvX3ByaXZhdGUgIT0gbmV4dC0mZ3Q7aW9fcHJpdmF0ZSkgcmV0dXJuIGZhbHNlO2AuIFRoaXMgKmlzKiBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBrZXkgYWx0ZXJhdGlvbiB3aXRoaW4gdGhlIGlvbWFwIHN1YnN5c3RlbS4gTXkgbmV4dCBzdGVwLCBuYXR1cmFsbHksIGlzIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBlZmZlY3RzLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgY2xvc2VseSBhdCB0aGF0IGZ1bmN0aW9uLCBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYCwgYW5kIHN5c3RlbWF0aWNhbGx5IGV4YW1pbmUgYWxsIGl0cyBjYWxsZXJzIHRvIHNlZSBob3cgdGhpcyBuZXcgY2hlY2sgYWx0ZXJzIHRoZSBvdmVyYWxsIGJlaGF2aW9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbWVyZ2UgaW1wbGljYXRpb25zIGZyb20gdGhpcyBmdW5jdGlvbmFsIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb21hcF9pb2VuZF9jYW5fbWVyZ2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaW9tYXAvaW9lbmQuYz0zNjU9RVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfZmluaXNoX2lvZW5kcyk7XG4tLVxuZnMvaW9tYXAvaW9lbmQuYy0zNjktICovXG5mcy9pb21hcC9pb2VuZC5jOjM3MDpzdGF0aWMgYm9vbCBpb21hcF9pb2VuZF9jYW5fbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbmZzL2lvbWFwL2lvZW5kLmMtMzcxLVx0XHRzdHJ1Y3QgaW9tYXBfaW9lbmQgKm5leHQpXG4tLVxuZnMvaW9tYXAvaW9lbmQuYz00MDg9dm9pZCBpb21hcF9pb2VuZF90cnlfbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbi0tXG5mcy9pb21hcC9pb2VuZC5jLTQxNi1cdFx0XHRpb19saXN0KSkpIHtcbmZzL2lvbWFwL2lvZW5kLmM6NDE3Olx0XHRpZiAoIWlvbWFwX2lvZW5kX2Nhbl9tZXJnZShpb2VuZCwgbmV4dCkpXG5mcy9pb21hcC9pb2VuZC5jLTQxOC1cdFx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDA5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIGFuZCBDYWxsZXJzKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgYGlvbWFwYCBpbmZyYXN0cnVjdHVyZS4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBzaXRlcyB0byBzZWUgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBjb250ZXh0cyB3aGVyZSBpdCYjMzk7cyAqZmFpbGluZyogdG8gbWVyZ2UsIGFuZCB3aHkuIFVuZGVyc3RhbmRpbmcgdGhvc2UgZmFpbHVyZSBjYXNlcyB3aWxsIGxpa2VseSBoaWdobGlnaHQgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24sIG9yIGF0IGxlYXN0IGhlbHAgbWUgc29saWRpZnkgbXkgbWVudGFsIG1vZGVsIG9mIHRoZSBJL08gcGF0aC4gVGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uOyBtZXJnZSBsb2dpYyBpcyBvZnRlbiB0cmlja3kuIEkgc2hvdWxkIGFsc28gY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1hbmlwdWxhdGVzLiBBcmUgdGhlcmUgYW55IHJlc291cmNlIGNvbnRlbnRpb24gaXNzdWVzIHRoYXQgYXJlIGluaGVyZW50IHRvIHRoZSB3YXkgaXQgaXMgYmVpbmcgdXNlZD8gVGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb21hcF9pb2VuZF90cnlfbWVyZ2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdD00MDQ9YW1vcnRpemF0aW9uOlxuLS1cbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvb3BlcmF0aW9ucy5yc3QtNDA4LVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdDo0MDk6ICogYGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgYDogR2l2ZW4gYW4gaW9lbmQgdGhhdCBpcyBub3QgaW4gYW55IGxpc3QgYW5kXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQxMC0gICBhIHNlcGFyYXRlIGxpc3Qgb2Ygc29ydGVkIGlvZW5kcywgbWVyZ2UgYXMgbWFueSBvZiB0aGUgaW9lbmRzIGZyb21cbi0tXG5mcy9pb21hcC9pb2VuZC5jPTM3MD1zdGF0aWMgYm9vbCBpb21hcF9pb2VuZF9jYW5fbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbi0tXG5mcy9pb21hcC9pb2VuZC5jLTQwNy1cbmZzL2lvbWFwL2lvZW5kLmM6NDA4OnZvaWQgaW9tYXBfaW9lbmRfdHJ5X21lcmdlKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsXG5mcy9pb21hcC9pb2VuZC5jLTQwOS1cdFx0c3RydWN0IGxpc3RfaGVhZCAqbW9yZV9pb2VuZHMpXG4tLVxuZnMvaW9tYXAvaW9lbmQuYy00MjItfVxuZnMvaW9tYXAvaW9lbmQuYzo0MjM6RVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfaW9lbmRfdHJ5X21lcmdlKTtcbmZzL2lvbWFwL2lvZW5kLmMtNDI0LVxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jPTE4OD14ZnNfZW5kX2lvKFxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jLTIwNC1cdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZpb2VuZC1cdTAwM2Vpb19saXN0KTtcbmZzL3hmcy94ZnNfYW9wcy5jOjIwNTpcdFx0aW9tYXBfaW9lbmRfdHJ5X21lcmdlKGlvZW5kLCBcdTAwMjZ0bXApO1xuZnMveGZzL3hmc19hb3BzLmMtMjA2LVx0XHRpZiAoYmlvX29wKFx1MDAyNmlvZW5kLVx1MDAzZWlvX2JpbykgPT0gUkVRX09QX1JFQUQpXG4tLVxuaW5jbHVkZS9saW51eC9pb21hcC5oPTQ4Mj12b2lkIGlvbWFwX2ZpbmlzaF9pb2VuZHMoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCwgaW50IGVycm9yKTtcbmluY2x1ZGUvbGludXgvaW9tYXAuaDo0ODM6dm9pZCBpb21hcF9pb2VuZF90cnlfbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbmluY2x1ZGUvbGludXgvaW9tYXAuaC00ODQtXHRcdHN0cnVjdCBsaXN0X2hlYWQgKm1vcmVfaW9lbmRzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjA1CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCBDYWxsKioKClJpZ2h0LCBzbyB0aGlzIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGB4ZnNfZW5kX2lvYC4gVGhhdCBpbW1lZGlhdGVseSBzY3JlYW1zIFhGUyBhbmQgaW9tYXAgaW50ZWdyYXRpb24sIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQuIENvbnNpZGVyaW5nIG15IGJhY2tncm91bmQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYmV0dGVyLiBOb3csIGEga2V5IHF1ZXN0aW9uIGluIG15IG1pbmQgaXMgd2hldGhlciB0aGVyZSBhcmUgYW55IGNvbmZpZ3VyYXRpb25zIG9yIHR1bmFibGUgcGFyYW1ldGVycyBzcGVjaWZpYyB0byBob3cgaW9tYXAgaW50ZXJhY3RzIHdpdGhpbiB0aGUgWEZTIGZpbGVzeXN0ZW0gY29udGV4dC4gSSBuZWVkIHRvIHNlZSBpZiB0aGUga2VybmVsIGV4cG9zZXMgYW55IGtub2JzIHRoYXQgY29udHJvbCB0aGlzIG1lcmdpbmcgYmVoYXZpb3IuIEFyZSB0aGVyZSBhbnkgc3lzZnMgZW50cmllcywgbW9kdWxlIHBhcmFtZXRlcnMsIG9yIGNvbXBpbGUtdGltZSBvcHRpb25zIHRoYXQgZGlyZWN0bHkgaW5mbHVlbmNlIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgJiMzOTtzIG9wZXJhdGlvbj8gVGhhdCYjMzk7cyB3aGVyZSBJIHdpbGwgc3RhcnQsIGRpZ2dpbmcgaW50byBjb25maWdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElPTUFQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDc5CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBGaWxlc3lzdGVtIEkvTyBNYXBwaW5nKioKCkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgc3lzdGVtIGlzIG1hbmFnaW5nIGl0cyBJL08uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHBva2UgYXJvdW5kIHRoZSBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gZmlsZXN5c3RlbSBJL08gbWFwcGluZy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIG9mIGNoZWNraW5nIHNldHRpbmdzIGxpa2UgYGNvbmZpZyBGU19JT01BUGAsIG9yIHBlcmhhcHMgc29tZXRoaW5nIHNpbWlsYXIgaWYgdGhlIGtlcm5lbCB1c2VzIGEgc2xpZ2h0bHkgZGlmZmVyZW50IG5hbWluZyBjb252ZW50aW9uLiBJJiMzOTttIGFmdGVyIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyBvZiB0aGUgSS9PIHBhdGguIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBiZWhhdmlvciBvZiBpbnRlcmVzdCByZXNpZGVzLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXRzZWxmIGlzIGNhdXNpbmcgdGhlIGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIC4qSU9NQVAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9rYnVpbGQva2NvbmZpZy1sYW5ndWFnZS5yc3Q9NTE3PVdlIHdvdWxkIGluIGxpYi9LY29uZmlnIHNlZTo6XG4tLVxuRG9jdW1lbnRhdGlvbi9rYnVpbGQva2NvbmZpZy1sYW5ndWFnZS5yc3QtNTE5LSAgIyBHZW5lcmljIElPTUFQIGlzIHVzZWQgdG8gLi4uXG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdDo1MjA6ICBjb25maWcgSEFWRV9HRU5FUklDX0lPTUFQXG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdC01MjEtXG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdDo1MjI6ICBjb25maWcgR0VORVJJQ19JT01BUFxuRG9jdW1lbnRhdGlvbi9rYnVpbGQva2NvbmZpZy1sYW5ndWFnZS5yc3QtNTIzLVx0ZGVwZW5kcyBvbiBIQVZFX0dFTkVSSUNfSU9NQVAgXHUwMDI2XHUwMDI2IEZPT1xuLS1cbkRvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWctbGFuZ3VhZ2UucnN0PTUzNj1Ob3RlOiB3ZSB1c2UgdGhlIGV4aXN0aW5nIGNvbmZpZyBvcHRpb24gYW5kIGF2b2lkIGNyZWF0aW5nIGEgbmV3XG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdDo1Mzc6Y29uZmlnIHZhcmlhYmxlIHRvIHNlbGVjdCBIQVZFX0dFTkVSSUNfSU9NQVAuXG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdC01MzgtXG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdDo1Mzk6Tm90ZTogdGhlIHVzZSBvZiB0aGUgaW50ZXJuYWwgY29uZmlnIHZhcmlhYmxlIEhBVkVfR0VORVJJQ19JT01BUCwgaXQgaXNcbkRvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWctbGFuZ3VhZ2UucnN0LTU0MC1pbnRyb2R1Y2VkIHRvIG92ZXJjb21lIHRoZSBsaW1pdGF0aW9uIG9mIHNlbGVjdCB3aGljaCB3aWxsIGZvcmNlIGFcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTMxNzQ9ZW5kbWVudVxuYXJjaC94ODYvS2NvbmZpZy0zMTc1LVxuYXJjaC94ODYvS2NvbmZpZzozMTc2OmNvbmZpZyBIQVZFX0FUT01JQ19JT01BUFxuYXJjaC94ODYvS2NvbmZpZy0zMTc3LVx0ZGVmX2Jvb2wgeVxuLS1cbmRyaXZlcnMvbmV0L2FyY25ldC9jb205MGlvLmM9MjIxPXN0YXRpYyBpbnQgX19pbml0IGNvbTkwaW9fZm91bmQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9hcmNuZXQvY29tOTBpby5jLTI0OS1cbmRyaXZlcnMvbmV0L2FyY25ldC9jb205MGlvLmM6MjUwOlx0bHAtXHUwMDNlY29uZmlnID0gKDB4MTYgfCBJT01BUGZsYWcpIFx1MDAyNiB+RU5BQkxFMTZmbGFnO1xuZHJpdmVycy9uZXQvYXJjbmV0L2NvbTkwaW8uYy0yNTEtXHRhcmNuZXRfb3V0YihscC1cdTAwM2Vjb25maWcsIGlvYWRkciwgQ09NOTAyNl9SRUdfUldfQ09ORklHKTtcbi0tXG5kcml2ZXJzL25ldC9hcmNuZXQvY29tOTBpby5jPTI3OT1zdGF0aWMgaW50IGNvbTkwaW9fcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHJlYWxseV9yZXNldClcbi0tXG5kcml2ZXJzL25ldC9hcmNuZXQvY29tOTBpby5jLTI5Mi1cdC8qIFNldCB0aGUgdGhpbmcgdG8gSU8tbWFwcGVkLCA4LWJpdCAgbW9kZSAqL1xuZHJpdmVycy9uZXQvYXJjbmV0L2NvbTkwaW8uYzoyOTM6XHRscC1cdTAwM2Vjb25maWcgPSAoMHgxQyB8IElPTUFQZmxhZykgXHUwMDI2IH5FTkFCTEUxNmZsYWc7XG5kcml2ZXJzL25ldC9hcmNuZXQvY29tOTBpby5jLTI5NC1cdGFyY25ldF9vdXRiKGxwLVx1MDAzZWNvbmZpZywgaW9hZGRyLCBDT005MDI2X1JFR19SV19DT05GSUcpO1xuLS1cbmRyaXZlcnMvcGNpL0tjb25maWc9MTE9Y29uZmlnIEZPUkNFX1BDSVxuLS1cbmRyaXZlcnMvcGNpL0tjb25maWctMTctIyB3aXRob3V0IFBDSSBpdHNlbGYgaGF2aW5nIHRvIGJlIGRlZmluZWRcbmRyaXZlcnMvcGNpL0tjb25maWc6MTg6Y29uZmlnIEdFTkVSSUNfUENJX0lPTUFQXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE5LVx0Ym9vbFxuLS1cbmZzL0tjb25maWc9MTI9Y29uZmlnIFZBTElEQVRFX0ZTX1BBUlNFUlxuLS1cbmZzL0tjb25maWctMTctXG5mcy9LY29uZmlnOjE4OmNvbmZpZyBGU19JT01BUFxuZnMvS2NvbmZpZy0xOS1cdGJvb2xcbi0tXG5saWIvS2NvbmZpZz04Mj1jb25maWcgTk9fR0VORVJJQ19QQ0lfSU9QT1JUX01BUFxuLS1cbmxpYi9LY29uZmlnLTg0LVxubGliL0tjb25maWc6ODU6Y29uZmlnIEdFTkVSSUNfSU9NQVBcbmxpYi9LY29uZmlnLTg2LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTUyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbm5lciBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIEZTX0lPTUFQIENvbmZpZ3VyYXRpb24gT3B0aW9uKioKClJpZ2h0LCBgRlNfSU9NQVBgLi4uIHRoYXQmIzM5O3MgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGF0IGFjdHVhbGx5IGVuYWJsZXMgdGhpcz8gV2hhdCBjb2RlIHBhdGhzIGRlcGVuZCBvbiBpdD8mIzM0OyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzLiBJdCYjMzk7cyB0aW1lIHRvIHN0YXJ0IHRyYWNpbmcgdGhlIGNvbmZpZ3VyYXRpb24gY2hvaWNlcy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gc3lzdGVtIHRvIHNlZSB3aGF0IG90aGVyIG9wdGlvbnMsIG9yIHBlcmhhcHMgYnJvYWRlciBzdWJzeXN0ZW0gY29uZmlndXJhdGlvbnMsIGFyZSB0aWVkIHRvIGBGU19JT01BUGAuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCB0byB1bmRlcnN0YW5kIHdoZW4gYW5kIHdoeSBgRlNfSU9NQVBgIGdldHMgc2VsZWN0ZWQuIEl0JiMzOTtzIGFib3V0IGZpZ3VyaW5nIG91dCB0aGUgdHJpZ2dlcmluZyBjb25kaXRpb25zLCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGUgY29uZmlndXJhdGlvbiBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBGU19JT01BUCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL3BvcnRpbmcucnN0PTQ3PUZpcnN0LCBhZGQgYGAjaW5jbHVkZSBcdTAwM2NsaW51eC9pb21hcC5oXHUwMDNlYGAgZnJvbSB5b3VyIHNvdXJjZSBjb2RlIGFuZCBhZGRcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvcG9ydGluZy5yc3Q6NDg6YGBzZWxlY3QgRlNfSU9NQVBgYCB0byB5b3VyIGZpbGVzeXN0ZW0mIzM5O3MgS2NvbmZpZyBvcHRpb24uXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL3BvcnRpbmcucnN0LTQ5LUJ1aWxkIHRoZSBrZXJuZWwsIHJ1biBmc3Rlc3RzIHdpdGggdGhlIGBgLWcgYWxsYGAgb3B0aW9uIGFjcm9zcyBhIHdpZGVcbi0tXG5ibG9jay9LY29uZmlnPTU9bWVudWNvbmZpZyBCTE9DS1xuLS1cbmJsb2NrL0tjb25maWctNy0gICAgICAgZGVmYXVsdCB5XG5ibG9jay9LY29uZmlnOjg6ICAgICAgIHNlbGVjdCBGU19JT01BUFxuYmxvY2svS2NvbmZpZy05LSAgICAgICBzZWxlY3QgU0JJVE1BUFxuLS1cbmZzL0tjb25maWc9NTg9Y29uZmlnIEZTX0RBWFxuLS1cbmZzL0tjb25maWctNjEtXHRkZXBlbmRzIG9uIFpPTkVfREVWSUNFXG5mcy9LY29uZmlnOjYyOlx0c2VsZWN0IEZTX0lPTUFQXG5mcy9LY29uZmlnLTYzLVx0c2VsZWN0IERBWFxuLS1cbmZzL2J0cmZzL0tjb25maWc9Mz1jb25maWcgQlRSRlNfRlNcbi0tXG5mcy9idHJmcy9LY29uZmlnLTE0LVx0c2VsZWN0IFpTVERfREVDT01QUkVTU1xuZnMvYnRyZnMvS2NvbmZpZzoxNTpcdHNlbGVjdCBGU19JT01BUFxuZnMvYnRyZnMvS2NvbmZpZy0xNi1cdHNlbGVjdCBSQUlENl9QUVxuLS1cbmZzL2Vyb2ZzL0tjb25maWc9Mz1jb25maWcgRVJPRlNfRlNcbi0tXG5mcy9lcm9mcy9LY29uZmlnLTktXHRzZWxlY3QgQ1JZUFRPX0RFRkxBVEUgaWYgRVJPRlNfRlNfWklQX0FDQ0VMXG5mcy9lcm9mcy9LY29uZmlnOjEwOlx0c2VsZWN0IEZTX0lPTUFQXG5mcy9lcm9mcy9LY29uZmlnLTExLVx0c2VsZWN0IExaNF9ERUNPTVBSRVNTIGlmIEVST0ZTX0ZTX1pJUFxuLS1cbmZzL2V4dDIvS2NvbmZpZz0yPWNvbmZpZyBFWFQyX0ZTXG4tLVxuZnMvZXh0Mi9LY29uZmlnLTQtXHRzZWxlY3QgQlVGRkVSX0hFQURcbmZzL2V4dDIvS2NvbmZpZzo1Olx0c2VsZWN0IEZTX0lPTUFQXG5mcy9leHQyL0tjb25maWctNi1cdGhlbHBcbi0tXG5mcy9leHQ0L0tjb25maWc9Mj1jb25maWcgRVhUNF9GU1xuLS1cbmZzL2V4dDQvS2NvbmZpZy03LVx0c2VsZWN0IENSQzMyXG5mcy9leHQ0L0tjb25maWc6ODpcdHNlbGVjdCBGU19JT01BUFxuZnMvZXh0NC9LY29uZmlnLTktXHRzZWxlY3QgRlNfRU5DUllQVElPTl9BTEdTIGlmIEZTX0VOQ1JZUFRJT05cbi0tXG5mcy9mMmZzL0tjb25maWc9Mj1jb25maWcgRjJGU19GU1xuLS1cbmZzL2YyZnMvS2NvbmZpZy05LVx0c2VsZWN0IEZTX0VOQ1JZUFRJT05fQUxHUyBpZiBGU19FTkNSWVBUSU9OXG5mcy9mMmZzL0tjb25maWc6MTA6XHRzZWxlY3QgRlNfSU9NQVBcbmZzL2YyZnMvS2NvbmZpZy0xMS1cdHNlbGVjdCBMWjRfQ09NUFJFU1MgaWYgRjJGU19GU19MWjRcbi0tXG5mcy9mdXNlL0tjb25maWc9Mj1jb25maWcgRlVTRV9GU1xuLS1cbmZzL2Z1c2UvS2NvbmZpZy00LVx0c2VsZWN0IEZTX1BPU0lYX0FDTFxuZnMvZnVzZS9LY29uZmlnOjU6XHRzZWxlY3QgRlNfSU9NQVBcbmZzL2Z1c2UvS2NvbmZpZy02LVx0aGVscFxuLS1cbmZzL2dmczIvS2NvbmZpZz0yPWNvbmZpZyBHRlMyX0ZTXG4tLVxuZnMvZ2ZzMi9LY29uZmlnLTctXHRzZWxlY3QgUVVPVEFDVExcbmZzL2dmczIvS2NvbmZpZzo4Olx0c2VsZWN0IEZTX0lPTUFQXG5mcy9nZnMyL0tjb25maWctOS1cdGhlbHBcbi0tXG5mcy9ocGZzL0tjb25maWc9Mj1jb25maWcgSFBGU19GU1xuLS1cbmZzL2hwZnMvS2NvbmZpZy01LVx0c2VsZWN0IEJVRkZFUl9IRUFEXG5mcy9ocGZzL0tjb25maWc6NjpcdHNlbGVjdCBGU19JT01BUFxuZnMvaHBmcy9LY29uZmlnLTctXHRoZWxwXG4tLVxuZnMvbnRmcy9LY29uZmlnPTI9Y29uZmlnIE5URlNfRlNcbi0tXG5mcy9udGZzL0tjb25maWctNC1cdHNlbGVjdCBOTFNcbmZzL250ZnMvS2NvbmZpZzo1Olx0c2VsZWN0IEZTX0lPTUFQXG5mcy9udGZzL0tjb25maWctNi1cdGhlbHBcbi0tXG5mcy94ZnMvS2NvbmZpZz0yPWNvbmZpZyBYRlNfRlNcbi0tXG5mcy94ZnMvS2NvbmZpZy02LVx0c2VsZWN0IENSQzMyXG5mcy94ZnMvS2NvbmZpZzo3Olx0c2VsZWN0IEZTX0lPTUFQXG5mcy94ZnMvS2NvbmZpZy04LVx0aGVscFxuLS1cbmZzL3pvbmVmcy9LY29uZmlnPTE9Y29uZmlnIFpPTkVGU19GU1xuLS1cbmZzL3pvbmVmcy9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIEJMS19ERVZfWk9ORURcbmZzL3pvbmVmcy9LY29uZmlnOjU6XHRzZWxlY3QgRlNfSU9NQVBcbmZzL3pvbmVmcy9LY29uZmlnLTYtXHRzZWxlY3QgQ1JDMzJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg0MgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIGBGU19JT01BUGAgU3Vic3lzdGVtKioKCkFscmlnaHQsIHNvIGl0JiMzOTtzIGNsZWFyIHRoYXQgYEZTX0lPTUFQYCBpcyBhIHByZXR0eSB1YmlxdWl0b3VzIHBpZWNlIG9mIHRoZSBmaWxlc3lzdGVtIHB1enpsZS4gWEZTLCBFWFQ0LCBCVFJGUywgRjJGUyDigJMgdGhleSYjMzk7cmUgYWxsIGxlYW5pbmcgb24gaXQuIFRoYXQgbWFrZXMgaXQgYSBwcmltZSB0YXJnZXQgZm9yIHNvbWUgZnV6emluZyBlZmZvcnRzOyBnb3R0YSBoaXQgdGhvc2UgY29tbW9uIHBhaW4gcG9pbnRzISBJIG5lZWQgdG8gcmVhbGx5IGRpZyBpbiBhbmQgc2VlIGlmIEkgY2FuIHNoYWtlIHNvbWUgYnVncyBsb29zZS4KCk5vdywgSSYjMzk7bSBsb29raW5nIGF0IGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgLiBJJiMzOTt2ZSBub3RpY2VkIGl0JiMzOTtzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0cyBjYWxsZXIgaXMgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAuIEdpdmVuIHRoYXQgdGhpcyBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgSSYjMzk7bGwgbmVlZCB0byBzZWUgaWYgaXQgbWFrZXMgc2Vuc2UgdG8gZ28gZnVydGhlciB1cCB0aGUgY2FsbCBzdGFjayB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGxhcmdlciBpbXBsaWNhdGlvbnMgYXJlLiBUaW1lIHRvIGV4YW1pbmUgdGhlIGNhbGxlcnMgb2YgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgSS9PIG1hbmFnZW1lbnQgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb21hcF9pb2VuZF90cnlfbWVyZ2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdD00MDQ9YW1vcnRpemF0aW9uOlxuLS1cbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvb3BlcmF0aW9ucy5yc3QtNDA4LVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdDo0MDk6ICogYGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgYDogR2l2ZW4gYW4gaW9lbmQgdGhhdCBpcyBub3QgaW4gYW55IGxpc3QgYW5kXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQxMC0gICBhIHNlcGFyYXRlIGxpc3Qgb2Ygc29ydGVkIGlvZW5kcywgbWVyZ2UgYXMgbWFueSBvZiB0aGUgaW9lbmRzIGZyb21cbi0tXG5mcy9pb21hcC9pb2VuZC5jPTM3MD1zdGF0aWMgYm9vbCBpb21hcF9pb2VuZF9jYW5fbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbi0tXG5mcy9pb21hcC9pb2VuZC5jLTQwNy1cbmZzL2lvbWFwL2lvZW5kLmM6NDA4OnZvaWQgaW9tYXBfaW9lbmRfdHJ5X21lcmdlKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsXG5mcy9pb21hcC9pb2VuZC5jLTQwOS1cdFx0c3RydWN0IGxpc3RfaGVhZCAqbW9yZV9pb2VuZHMpXG4tLVxuZnMvaW9tYXAvaW9lbmQuYy00MjItfVxuZnMvaW9tYXAvaW9lbmQuYzo0MjM6RVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfaW9lbmRfdHJ5X21lcmdlKTtcbmZzL2lvbWFwL2lvZW5kLmMtNDI0LVxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jPTE4OD14ZnNfZW5kX2lvKFxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jLTIwNC1cdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZpb2VuZC1cdTAwM2Vpb19saXN0KTtcbmZzL3hmcy94ZnNfYW9wcy5jOjIwNTpcdFx0aW9tYXBfaW9lbmRfdHJ5X21lcmdlKGlvZW5kLCBcdTAwMjZ0bXApO1xuZnMveGZzL3hmc19hb3BzLmMtMjA2LVx0XHRpZiAoYmlvX29wKFx1MDAyNmlvZW5kLVx1MDAzZWlvX2JpbykgPT0gUkVRX09QX1JFQUQpXG4tLVxuaW5jbHVkZS9saW51eC9pb21hcC5oPTQ4Mj12b2lkIGlvbWFwX2ZpbmlzaF9pb2VuZHMoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCwgaW50IGVycm9yKTtcbmluY2x1ZGUvbGludXgvaW9tYXAuaDo0ODM6dm9pZCBpb21hcF9pb2VuZF90cnlfbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbmluY2x1ZGUvbGludXgvaW9tYXAuaC00ODQtXHRcdHN0cnVjdCBsaXN0X2hlYWQgKm1vcmVfaW9lbmRzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjczNwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGB4ZnNfZW5kX2lvYCBhbmQgSXRzIFJlbGF0aW9uc2hpcCB0byBJL08gTWVyZ2luZyoqCgpPa2F5LCBzbyBgeGZzX2VuZF9pb2AgaXMgYSBjcml0aWNhbCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIHRvIGJlIGNhbGxpbmcgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBwb3RlbnRpYWwgSS9PIG9wdGltaXphdGlvbiBzdHJhdGVnaWVzIHdpdGhpbiB0aGUgWEZTIGZpbGVzeXN0ZW0uIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYXR0ZW1wdGluZyBhIG1lcmdlIGF0IHRoaXMgc3RhZ2Ugc3VnZ2VzdHMgdGhhdCB3ZSBhcmUgcG90ZW50aWFsbHkgdHJ5aW5nIHRvIGNvYWxlc2NlIHJlbGF0ZWQgSS9PIHJlcXVlc3RzLiBUaGlzIGlzIGEgdmVyeSBjb21tb24gdGVjaG5pcXVlIHRvIHJlZHVjZSB0aGUgb3ZlcmhlYWQgYW5kIGltcHJvdmUgcGVyZm9ybWFuY2UuIFdlIG1heSBhbHNvIGJlIGxvb2tpbmcgYXQgaG93IHdlIGNhbiBvcHRpbWl6ZSB3cml0ZSB0aHJvdWdocHV0LCBvciBpbXByb3ZlIHRoZSBlZmZpY2llbmN5IG9mIHJlYWRzIHRoYXQgYWNjZXNzIGFkamFjZW50IHNlY3RvcnMgb2YgdGhlIGRpc2suCgpOb3csIEkgd2FudCB0byBkcmlsbCBkb3duIGZ1cnRoZXIuIExldCYjMzk7cyBzZWUgd2hvIGlzIGNhbGxpbmcgYGlvbWFwX2ZpbmlzaF9pb2VuZHNgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEkvTyBlbmRzIGFyZSBiZWluZyBoYW5kbGVkIGFuZCB3aGF0JiMzOTtzIHRyaWdnZXJpbmcgdGhlIGVuZC1vZi1JL08gcHJvY2Vzc2luZy4gS25vd2luZyB0aGUgY2FsbGVycyB3aWxsIHByb3ZpZGUgaW5zaWdodCBpbnRvIHRoZSBjb21wbGV0ZSBJL08gY29tcGxldGlvbiBwYXRoLCBpdHMgaW1wYWN0IG9uIHRoZSBkYXRhIHN0cnVjdHVyZXMsIGFuZCBhbnkgb3RoZXIgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMuIEkgc2hvdWxkIGNvbnNpZGVyIHdoZXRoZXIgd2UgYXJlIHNlZWluZyBhbnkgbG9jayBjb250ZW50aW9uIG9yIHF1ZXVpbmcgdGhhdCBjYW4gYmUgb3B0aW1pemVkIGluIHRoZXNlIGFyZWFzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmlnIHBpY3R1cmUgYmVmb3JlIEkgY2FuIGV2YWx1YXRlIHRoZSBpbXBhY3QgYW5kIHNpZ25pZmljYW5jZSBvZiB0aGUgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvbWFwX2ZpbmlzaF9pb2VuZHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdD0zOTE9c3VibWl0dGVkIGJ5IGBgLVx1MDAzZXN1Ym1pdF93cml0ZWJhY2tgYFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdDozOTI6VGhpcyBmdW5jdGlvbiBzaG91bGQgY2FsbCBgYGlvbWFwX2ZpbmlzaF9pb2VuZHNgYCBhZnRlciBmaW5pc2hpbmcgaXRzXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTM5My1vd24gd29yayAoZS5nLiB1bndyaXR0ZW4gZXh0ZW50IGNvbnZlcnNpb24pLlxuLS1cbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvb3BlcmF0aW9ucy5yc3Q9NDA0PWFtb3J0aXphdGlvbjpcbi0tXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQxNi1cbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvb3BlcmF0aW9ucy5yc3Q6NDE3OiAqIGBgaW9tYXBfZmluaXNoX2lvZW5kc2BgOiBGaW5pc2ggYW4gaW9lbmQgdGhhdCBwb3NzaWJseSBoYXMgb3RoZXJcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvb3BlcmF0aW9ucy5yc3QtNDE4LSAgIGlvZW5kcyBsaW5rZWQgdG8gaXQuXG4tLVxuZnMvaW9tYXAvaW9lbmQuYz0zMDg9c3RhdGljIHUzMiBpb21hcF9maW5pc2hfaW9lbmQoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCwgaW50IGVycm9yKVxuLS1cbmZzL2lvbWFwL2lvZW5kLmMtMzQ0LSAqL1xuZnMvaW9tYXAvaW9lbmQuYzozNDU6dm9pZCBpb21hcF9maW5pc2hfaW9lbmRzKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsIGludCBlcnJvcilcbmZzL2lvbWFwL2lvZW5kLmMtMzQ2LXtcbi0tXG5mcy9pb21hcC9pb2VuZC5jLTM2NC19XG5mcy9pb21hcC9pb2VuZC5jOjM2NTpFWFBPUlRfU1lNQk9MX0dQTChpb21hcF9maW5pc2hfaW9lbmRzKTtcbmZzL2lvbWFwL2lvZW5kLmMtMzY2LVxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jPTEwNz14ZnNfZW5kX2lvZW5kX3dyaXRlKFxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jLTE2OC1cdFx0eGZzX2lvZW5kX3B1dF9vcGVuX3pvbmVzKGlvZW5kKTtcbmZzL3hmcy94ZnNfYW9wcy5jOjE2OTpcdGlvbWFwX2ZpbmlzaF9pb2VuZHMoaW9lbmQsIGVycm9yKTtcbmZzL3hmcy94ZnNfYW9wcy5jLTE3MC1cdG1lbWFsbG9jX25vZnNfcmVzdG9yZShub2ZzX2ZsYWcpO1xuLS1cbmZzL3hmcy94ZnNfYW9wcy5jPTE4OD14ZnNfZW5kX2lvKFxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jLTIwNi1cdFx0aWYgKGJpb19vcChcdTAwMjZpb2VuZC1cdTAwM2Vpb19iaW8pID09IFJFUV9PUF9SRUFEKVxuZnMveGZzL3hmc19hb3BzLmM6MjA3Olx0XHRcdGlvbWFwX2ZpbmlzaF9pb2VuZHMoaW9lbmQsXG5mcy94ZnMveGZzX2FvcHMuYy0yMDgtXHRcdFx0XHRibGtfc3RhdHVzX3RvX2Vycm5vKGlvZW5kLVx1MDAzZWlvX2Jpby5iaV9zdGF0dXMpKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmg9NDgwPXN0cnVjdCBpb21hcF9pb2VuZCAqaW9tYXBfc3BsaXRfaW9lbmQoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbmluY2x1ZGUvbGludXgvaW9tYXAuaC00ODEtXHRcdHVuc2lnbmVkIGludCBtYXhfbGVuLCBib29sIGlzX2FwcGVuZCk7XG5pbmNsdWRlL2xpbnV4L2lvbWFwLmg6NDgyOnZvaWQgaW9tYXBfZmluaXNoX2lvZW5kcyhzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLCBpbnQgZXJyb3IpO1xuaW5jbHVkZS9saW51eC9pb21hcC5oLTQ4My12b2lkIGlvbWFwX2lvZW5kX3RyeV9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTExCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIElPIE1lcmdlIExvZ2ljKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYGlvbWFwX2lvZW5kX2Nhbl9tZXJnZWAgZnVuY3Rpb24sIHNpbmNlIEkga25vdyBpdCYjMzk7cyByZWxhdGVkIHRvIG1lcmdpbmcgSS9PIG9wZXJhdGlvbnMuIFRoZSBrZXkgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGNoYWluLiBJIGNhbiBzZWUgdGhhdCBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYCBpcyBjYWxsZWQgYnkgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAuIE5vdywgbG9va2luZyBhdCB3aGVyZSAqdGhhdCogZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20sIEkgc2VlIGl0JiMzOTtzIGNhbGxlZCBpbiBgeGZzX2VuZF9pb2AuIEdpdmVuIG15IGV4cGVyaWVuY2Ugd2l0aCBYRlMsIGB4ZnNfZW5kX2lvYCBpcyBhIHJlYWxseSBzb2xpZCBwb2ludCB0byBzdGFydC4gSXQgaGFuZGxlcyB0aGUgZW5kIG9mIGFuIEkvTyBvcGVyYXRpb24sIHNvIGl0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UgdGhhdCBpdCB3b3VsZCBiZSB0aGUgZnVuY3Rpb24gdG8gdHJ5IHRvIG1lcmdlIGFkamFjZW50IElPIGVuZHMuCgpCdXQgSSBzaG91bGQgYnJvYWRlbiB0aGUgc2NvcGUuIEJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIGB4ZnNfZW5kX2lvYCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjay4gSSYjMzk7bGwgc2VhcmNoIHRoZSBjb2RlYmFzZSB0byBzZWUgaWYgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAgaXMgY2FsbGVkIGZyb20gYW55d2hlcmUgZWxzZS4gS25vd2luZyBhbGwgdGhlIGNhbGxlcnMgd2lsbCBnaXZlIG1lIGEgbW9yZSBjb21wbGV0ZSBwaWN0dXJlIG9mIGhvdyB0aGUgSS9PIG1lcmdpbmcgbG9naWMgaXMgdXNlZC4gSSYjMzk7bGwgY29uY2VudHJhdGUgbXkgc2VhcmNoIG9uIGBmcy9pb21hcC9pb2VuZC5jYCBhbmQgb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgZmlsZXMuIFVuZGVyc3RhbmRpbmcgYWxsIHRoZSBjYWxsIHNpdGVzIHdpbGwgbWFrZSB0aGlzIGRlYnVnZ2luZyBmYXIgZWFzaWVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb21hcF9pb2VuZF90cnlfbWVyZ2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdD00MDQ9YW1vcnRpemF0aW9uOlxuLS1cbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvb3BlcmF0aW9ucy5yc3QtNDA4LVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdDo0MDk6ICogYGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgYDogR2l2ZW4gYW4gaW9lbmQgdGhhdCBpcyBub3QgaW4gYW55IGxpc3QgYW5kXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQxMC0gICBhIHNlcGFyYXRlIGxpc3Qgb2Ygc29ydGVkIGlvZW5kcywgbWVyZ2UgYXMgbWFueSBvZiB0aGUgaW9lbmRzIGZyb21cbi0tXG5mcy9pb21hcC9pb2VuZC5jPTM3MD1zdGF0aWMgYm9vbCBpb21hcF9pb2VuZF9jYW5fbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbi0tXG5mcy9pb21hcC9pb2VuZC5jLTQwNy1cbmZzL2lvbWFwL2lvZW5kLmM6NDA4OnZvaWQgaW9tYXBfaW9lbmRfdHJ5X21lcmdlKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsXG5mcy9pb21hcC9pb2VuZC5jLTQwOS1cdFx0c3RydWN0IGxpc3RfaGVhZCAqbW9yZV9pb2VuZHMpXG4tLVxuZnMvaW9tYXAvaW9lbmQuYy00MjItfVxuZnMvaW9tYXAvaW9lbmQuYzo0MjM6RVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfaW9lbmRfdHJ5X21lcmdlKTtcbmZzL2lvbWFwL2lvZW5kLmMtNDI0LVxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jPTE4OD14ZnNfZW5kX2lvKFxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jLTIwNC1cdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZpb2VuZC1cdTAwM2Vpb19saXN0KTtcbmZzL3hmcy94ZnNfYW9wcy5jOjIwNTpcdFx0aW9tYXBfaW9lbmRfdHJ5X21lcmdlKGlvZW5kLCBcdTAwMjZ0bXApO1xuZnMveGZzL3hmc19hb3BzLmMtMjA2LVx0XHRpZiAoYmlvX29wKFx1MDAyNmlvZW5kLVx1MDAzZWlvX2JpbykgPT0gUkVRX09QX1JFQUQpXG4tLVxuaW5jbHVkZS9saW51eC9pb21hcC5oPTQ4Mj12b2lkIGlvbWFwX2ZpbmlzaF9pb2VuZHMoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCwgaW50IGVycm9yKTtcbmluY2x1ZGUvbGludXgvaW9tYXAuaDo0ODM6dm9pZCBpb21hcF9pb2VuZF90cnlfbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbmluY2x1ZGUvbGludXgvaW9tYXAuaC00ODQtXHRcdHN0cnVjdCBsaXN0X2hlYWQgKm1vcmVfaW9lbmRzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg5NQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAmIzM5O3MgQ2FsbGVycyoqCgpBbHJpZ2h0LCBzbyB0aGUgaW1tZWRpYXRlIGltcGxpY2F0aW9uIGlzIHRoYXQgYHhmc19lbmRfaW9gIGlzIHRoZSAqc29sZSogY2FsbGVyIG9mIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgLiBUaGF0IHNlZW1zLi4uIGZvY3VzZWQuIEl0IGtlZXBzIHRoZSBtZXJnaW5nIHByb2Nlc3MgbmljZWx5IGNvbnRhaW5lZCB3aXRoaW4gdGhlIFhGUyBjb250ZXh0LiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBCZWZvcmUgSSBnbyB0b28gZmFyIGRvd24gdGhhdCBwYXRoIG9mIGFzc3VtaW5nIGEgc2luZ2xlIGNhbGxlciwgd2hhdCBhYm91dCBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYD8gSXQmIzM5O3MgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgbWVyZ2UgbG9naWMsIGFuZCAqdGhhdCogZnVuY3Rpb24gaXMgY2FsbGVkIGJlZm9yZSBgdHJ5X21lcmdlYC4gSXMgKml0KiBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGJyb2FkZXIgY2FsbCBncmFwaCBhcm91bmQgYGlvbWFwX2lvZW5kX2Nhbl9tZXJnZWAuIEVuc3VyaW5nIHRoZXJlIGFyZSBubyBvdGhlciBwb2ludHMgdGhhdCBtaWdodCBpbmRpcmVjdGx5IHRyaWdnZXIgb3IgaW5mbHVlbmNlIHRoYXQgbWVyZ2luZyBiZWhhdmlvdXIgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgb3ZlcmFsbCBiZWhhdmlvdXIgYW5kIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuIEkgbmVlZCB0byBrbm93IHRoZSBlbnRpcmUgbGFuZHNjYXBlIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvbWFwX2lvZW5kX2Nhbl9tZXJnZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9pb21hcC9pb2VuZC5jPTM2NT1FWFBPUlRfU1lNQk9MX0dQTChpb21hcF9maW5pc2hfaW9lbmRzKTtcbi0tXG5mcy9pb21hcC9pb2VuZC5jLTM2OS0gKi9cbmZzL2lvbWFwL2lvZW5kLmM6MzcwOnN0YXRpYyBib29sIGlvbWFwX2lvZW5kX2Nhbl9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxuZnMvaW9tYXAvaW9lbmQuYy0zNzEtXHRcdHN0cnVjdCBpb21hcF9pb2VuZCAqbmV4dClcbi0tXG5mcy9pb21hcC9pb2VuZC5jPTQwOD12b2lkIGlvbWFwX2lvZW5kX3RyeV9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxuLS1cbmZzL2lvbWFwL2lvZW5kLmMtNDE2LVx0XHRcdGlvX2xpc3QpKSkge1xuZnMvaW9tYXAvaW9lbmQuYzo0MTc6XHRcdGlmICghaW9tYXBfaW9lbmRfY2FuX21lcmdlKGlvZW5kLCBuZXh0KSlcbmZzL2lvbWFwL2lvZW5kLmMtNDE4LVx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDQyCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJL08gRW5kIFBhdGggaW4gWEZTKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIEkvTyBjb21wbGV0aW9uIHBhdGggaGVyZSwgc3BlY2lmaWNhbGx5LCB0aGUgaW50ZXJhY3Rpb24gd2l0aCBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYC4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCB0aGUgb25seSBmdW5jdGlvbiB0aGF0IGFwcGVhcnMgdG8gYWN0dWFsbHkgY2FsbCB0aGlzIHNwZWNpZmljIGJpdCBvZiBjb2RlIGlzIGB4ZnNfZW5kX2lvYC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4gSXQgbWVhbnMgSSBjYW4gdHJhY2UgdGhlIGNvbnRyb2wgZmxvdyBieSB6ZXJvaW5nIGluIG9uIGB4ZnNfZW5kX2lvYCB3aXRoaW4gYGZzL3hmcy94ZnNfYW9wcy5jYC4gTGV0JiMzOTtzIGdldCB0byB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy94ZnMveGZzX2FvcHMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTgwOlx0ICogZGlzY29udGlndW91cyBleHRlbnRzIGhlcmUuXG4gMTgxOlx0ICpcbiAxODI6XHQgKiBUaGUgaW9lbmQgY2hhaW4gbGVuZ3RoIHRoYXQgd2UgY2FuIGJlIHByb2Nlc3NpbmcgaGVyZSBpcyBsYXJnZWx5IHVuYm91bmQgaW5cbiAxODM6XHQgKiBsZW5ndGggYW5kIHdlIG1heSBoYXZlIHRvIHBlcmZvcm0gc2lnbmlmaWNhbnQgYW1vdW50cyBvZiB3b3JrIG9uIGVhY2ggaW9lbmRcbiAxODQ6XHQgKiB0byBjb21wbGV0ZSBpdC4gSGVuY2Ugd2UgaGF2ZSB0byBiZSBjYXJlZnVsIGFib3V0IGhvbGRpbmcgdGhlIENQVSBmb3IgdG9vXG4gMTg1Olx0ICogbG9uZyBpbiB0aGlzIGxvb3AuXG4gMTg2Olx0ICovXG4gMTg3Olx0dm9pZFxuIDE4ODpcdHhmc19lbmRfaW8oXG4gMTg5Olx0XHRzdHJ1Y3Qgd29ya19zdHJ1Y3RcdCp3b3JrKVxuIDE5MDpcdHtcbiAxOTE6XHRcdHN0cnVjdCB4ZnNfaW5vZGVcdCppcCA9XG4gMTkyOlx0XHRcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgeGZzX2lub2RlLCBpX2lvZW5kX3dvcmspO1xuIDE5MzpcdFx0c3RydWN0IGlvbWFwX2lvZW5kXHQqaW9lbmQ7XG4gMTk0Olx0XHRzdHJ1Y3QgbGlzdF9oZWFkXHR0bXA7XG4gMTk1Olx0XHR1bnNpZ25lZCBsb25nXHRcdGZsYWdzO1xuIDE5NjpcdFxuIDE5NzpcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aXAtXHUwMDNlaV9pb2VuZF9sb2NrLCBmbGFncyk7XG4gMTk4Olx0XHRsaXN0X3JlcGxhY2VfaW5pdChcdTAwMjZpcC1cdTAwM2VpX2lvZW5kX2xpc3QsIFx1MDAyNnRtcCk7XG4gMTk5Olx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmlwLVx1MDAzZWlfaW9lbmRfbG9jaywgZmxhZ3MpO1xuIDIwMDpcdFxuIDIwMTpcdFx0aW9tYXBfc29ydF9pb2VuZHMoXHUwMDI2dG1wKTtcbiAyMDI6XHRcdHdoaWxlICgoaW9lbmQgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoXHUwMDI2dG1wLCBzdHJ1Y3QgaW9tYXBfaW9lbmQsXG4gMjAzOlx0XHRcdFx0aW9fbGlzdCkpKSB7XG4gMjA0Olx0XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2aW9lbmQtXHUwMDNlaW9fbGlzdCk7XG4gMjA1Olx0XHRcdGlvbWFwX2lvZW5kX3RyeV9tZXJnZShpb2VuZCwgXHUwMDI2dG1wKTtcbiAyMDY6XHRcdFx0aWYgKGJpb19vcChcdTAwMjZpb2VuZC1cdTAwM2Vpb19iaW8pID09IFJFUV9PUF9SRUFEKVxuIDIwNzpcdFx0XHRcdGlvbWFwX2ZpbmlzaF9pb2VuZHMoaW9lbmQsXG4gMjA4Olx0XHRcdFx0XHRibGtfc3RhdHVzX3RvX2Vycm5vKGlvZW5kLVx1MDAzZWlvX2Jpby5iaV9zdGF0dXMpKTtcbiAyMDk6XHRcdFx0ZWxzZVxuIDIxMDpcdFx0XHRcdHhmc19lbmRfaW9lbmRfd3JpdGUoaW9lbmQpO1xuIDIxMTpcdFx0XHRjb25kX3Jlc2NoZWQoKTtcbiAyMTI6XHRcdH1cbiAyMTM6XHR9XG4gMjE0Olx0XG4gMjE1Olx0dm9pZFxuIDIxNjpcdHhmc19lbmRfYmlvKFxuIDIxNzpcdFx0c3RydWN0IGJpb1x0XHQqYmlvKVxuIDIxODpcdHtcbiAyMTk6XHRcdHN0cnVjdCBpb21hcF9pb2VuZFx0KmlvZW5kID0gaW9tYXBfaW9lbmRfZnJvbV9iaW8oYmlvKTtcbiAyMjA6XHRcdHN0cnVjdCB4ZnNfaW5vZGVcdCppcCA9IFhGU19JKGlvZW5kLVx1MDAzZWlvX2lub2RlKTtcbiAyMjE6XHRcdHN0cnVjdCB4ZnNfbW91bnRcdCptcCA9IGlwLVx1MDAzZWlfbW91bnQ7XG4gMjIyOlx0XHR1bnNpZ25lZCBsb25nXHRcdGZsYWdzO1xuIDIyMzpcdFxuIDIyNDpcdFx0LypcbiAyMjU6XHRcdCAqIEZvciBBcHBlbmRzIHJlY29yZCB0aGUgYWN0dWFsbHkgd3JpdHRlbiBibG9jayBudW1iZXIgYW5kIHNldCB0aGVcbiAyMjY6XHRcdCAqIGJvdW5kYXJ5IGZsYWcgaWYgbmVlZGVkLlxuIDIyNzpcdFx0ICovXG4gMjI4Olx0XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfWEZTX1JUKSBcdTAwMjZcdTAwMjYgYmlvX2lzX3pvbmVfYXBwZW5kKGJpbykpIHtcbiAyMjk6XHRcdFx0aW9lbmQtXHUwMDNlaW9fc2VjdG9yID0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2VjdG9yO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDUxNAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSU8gQ29tcGxldGlvbiBQYXRoIGluIFhGUyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHhmc19lbmRfaW9gLiBUaGUgbmFtZSBzY3JlYW1zICYjMzQ7SU8gY29tcGxldGlvbiwmIzM0OyBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIHdlIG5lZWQgdG8gZm9jdXMgb24uIEl0JiMzOTtzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLCB3aGljaCBpbW1lZGlhdGVseSBtZWFucyBpdCYjMzk7cyBhc3luY2hyb25vdXMuIEl0JiMzOTtzIGNhbGxpbmcgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAuIE5vdywgSSByZWNhbGwgdGhhdCBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCBpcyBpbnZvbHZlZCBpbiBtZXJnaW5nIElPcywgc28gYHhmc19lbmRfaW9gIGlzIGxpa2VseSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZXkmIzM5O3JlIGZpbmFsaXplZC4KCkJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIHNpbmNlIGl0IGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLCBpdCYjMzk7cyBwcm9iYWJseSBub3QgZGlyZWN0bHkgY2FsbGVkIGZyb20gYSBzeXN0ZW0gY2FsbCBwYXRoLiBXZSBuZWVkIHRvIHRyYWNlIHdoZXJlIHRoaXMgd29yayBpcyAqc2NoZWR1bGVkKiBpbiB0aGUgZmlyc3QgcGxhY2UgdG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGUgaW5pdGlhdGlvbiBhbmQgY29tcGxldGlvbiBwcm9jZXNzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgdXBzdHJlYW0gY2FsbGVycyBvZiBgeGZzX2VuZF9pb2AgdG8gYnVpbGQgdGhlIHdob2xlIHBpY3R1cmUuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIHdoYXQmIzM5O3Mgc2NoZWR1bGluZyB0aGF0IHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lfaW9lbmRfd29yayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy94ZnMveGZzX2FvcHMuYz0xODg9eGZzX2VuZF9pbyhcbi0tXG5mcy94ZnMveGZzX2FvcHMuYy0xOTEtXHRzdHJ1Y3QgeGZzX2lub2RlXHQqaXAgPVxuZnMveGZzL3hmc19hb3BzLmM6MTkyOlx0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IHhmc19pbm9kZSwgaV9pb2VuZF93b3JrKTtcbmZzL3hmcy94ZnNfYW9wcy5jLTE5My1cdHN0cnVjdCBpb21hcF9pb2VuZFx0KmlvZW5kO1xuLS1cbmZzL3hmcy94ZnNfYW9wcy5jPTIxNj14ZnNfZW5kX2Jpbyhcbi0tXG5mcy94ZnMveGZzX2FvcHMuYy0yMzUtXHRcdFdBUk5fT05fT05DRSghcXVldWVfd29yayhtcC1cdTAwM2VtX3Vud3JpdHRlbl93b3JrcXVldWUsXG5mcy94ZnMveGZzX2FvcHMuYzoyMzY6XHRcdFx0XHRcdCBcdTAwMjZpcC1cdTAwM2VpX2lvZW5kX3dvcmspKTtcbmZzL3hmcy94ZnNfYW9wcy5jLTIzNy1cdGxpc3RfYWRkX3RhaWwoXHUwMDI2aW9lbmQtXHUwMDNlaW9fbGlzdCwgXHUwMDI2aXAtXHUwMDNlaV9pb2VuZF9saXN0KTtcbi0tXG5mcy94ZnMveGZzX2ljYWNoZS5jPTg3PXhmc19pbm9kZV9hbGxvYyhcbi0tXG5mcy94ZnMveGZzX2ljYWNoZS5jLTEyNy1cdGlwLVx1MDAzZWlfY2hlY2tlZCA9IDA7XG5mcy94ZnMveGZzX2ljYWNoZS5jOjEyODpcdElOSVRfV09SSyhcdTAwMjZpcC1cdTAwM2VpX2lvZW5kX3dvcmssIHhmc19lbmRfaW8pO1xuZnMveGZzL3hmc19pY2FjaGUuYy0xMjktXHRJTklUX0xJU1RfSEVBRChcdTAwMjZpcC1cdTAwM2VpX2lvZW5kX2xpc3QpO1xuLS1cbmZzL3hmcy94ZnNfaW5vZGUuaD0yNT10eXBlZGVmIHN0cnVjdCB4ZnNfaW5vZGUge1xuLS1cbmZzL3hmcy94ZnNfaW5vZGUuaC05OS1cdHNwaW5sb2NrX3RcdFx0aV9pb2VuZF9sb2NrO1xuZnMveGZzL3hmc19pbm9kZS5oOjEwMDpcdHN0cnVjdCB3b3JrX3N0cnVjdFx0aV9pb2VuZF93b3JrO1xuZnMveGZzL3hmc19pbm9kZS5oLTEwMS1cdHN0cnVjdCBsaXN0X2hlYWRcdGlfaW9lbmRfbGlzdDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzNTgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgWEZTJiMzOTtzIEkvTyBDb21wbGV0aW9uIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBYRlMgaGFuZGxlcyBJL08gY29tcGxldGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBhc3luY2hyb25vdXMgYXNwZWN0LiBGcm9tIHRoZSBjb2RlLCBpdCBzZWVtcyBgeGZzX2VuZF9iaW9gIHRyaWdnZXJzIGBpX2lvZW5kX3dvcmtgLCBhbmQgc2luY2UgYHhmc19lbmRfYmlvYCBpcyB0aGUgYGJpb2AmIzM5O3MgYGVuZF9pb2AgY2FsbGJhY2ssIHRoaXMgZXhlY3V0aW9uIGlzIGRlZmluaXRlbHkgYXN5bmNocm9ub3VzLgoKRGlyZWN0bHkgZnV6emluZyBgeGZzX2VuZF9pb2Agb3IgYHhmc19lbmRfYmlvYCBsb29rcyB0cmlja3ksIGdpdmVuIHRoZSBhc3luYyBuYXR1cmUuIFNvLCBhIGdvb2Qgc3RyYXRlZ3kgaXMgdG8gZm9jdXMgb24gdGhvc2UgdHdvIGZ1bmN0aW9ucywgc2luY2UgdGhleSBzZWVtIHRvIGJlIGNyaXRpY2FsIGZvciB0aGUgZmxvdy4KCk5vdywgYSBjcnVjaWFsIHBvaW50LiBJcyBYRlMgdGhlIG9ubHkgZmlsZXN5c3RlbSB0aGF0IHVzZXMgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWA/IEEgcXVpY2sgZ3JlcCByZXZlYWxlZCB0aGF0ICpvbmx5KiBgeGZzX2VuZF9pb2AgY2FsbHMgaXQuIEJ1dOKApiB3YWl0IGEgc2Vjb25k4oCmIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIGlzIGFjdHVhbGx5IGV4cG9ydGVkOiBgRVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfaW9lbmRfdHJ5X21lcmdlKWAuIFRoYXQgaW1wbGllcyBpdCYjMzk7cyBpbnRlbmRlZCBmb3IgKm90aGVyKiBmaWxlc3lzdGVtcyB0byB1c2UsIGV2ZW4gdGhvdWdoIFhGUyBpcyB0aGUgb25seSBvbmUgZG9pbmcgc28gcmlnaHQgbm93LgoKVGhlcmVmb3JlLCB0byBlbmFibGUgdGhpcyBjb2RlLCBJJiMzOTtsbCBuZWVkIGBYRlNfRlNgIGFuZCBgRlNfSU9NQVBgIGNvbmZpZ3VyYXRpb25zLiBCdXQsIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZTsgaXMgYFhGU19GU2AgYWxvbmUgc3VmZmljaWVudD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgWEZTX0ZTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3hmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy94ZnMvS2NvbmZpZzoyOmNvbmZpZyBYRlNfRlNcbmZzL3hmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtYRlMgZmlsZXN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDA2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4gSSYjMzk7dmUgZ290IG15IGluaXRpYWwgY29uZmlndXJhdGlvbiBzZXQsIGJ1dCBJIG5lZWQgdG8gZG8gYSB0aG9yb3VnaCBjaGVjayBmb3IgYW55IG92ZXJsb29rZWQgb3Igc2Vjb25kYXJ5IGNvbmZpZ3VyYXRpb25zLCBleHRlcm5hbCBzb3VyY2VzLCBvciBvdmVycmlkZXMgdGhhdCBtaWdodCBiZSBpbmZsdWVuY2luZyB0aGUgY3VycmVudCBiZWhhdmlvci4gSSYjMzk7bSB0aGlua2luZywgJiMzNDtJcyB0aGVyZSBhbm90aGVyIGNvbmZpZyBmaWxlLCBhIGRpZmZlcmVudCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgb3Igc29tZSBhdXRvbWF0ZWQgcHJvY2VzcyBJJiMzOTt2ZSBmb3Jnb3R0ZW4gYWJvdXQgdGhhdCBjb3VsZCBiZSBhZmZlY3RpbmcgdGhlc2Ugc2V0dGluZ3M/JiMzNDsgSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzYW5pdHkgY2hlY2s6IGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgdGhlIG9ubHkgb25lIGluIHBsYXkuIEkgZG9uJiMzOTt0IHdhbnQgdG8gd2FzdGUgdGltZSBjaGFzaW5nIGdob3N0cy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBzdXJwcmlzZSBwYXJhbWV0ZXJzIG9yIGNvbmZsaWN0aW5nIHNldHRpbmdzIGJlZm9yZSBJIGdldCBpbnRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlNfSU9NQVAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZz0xMj1jb25maWcgVkFMSURBVEVfRlNfUEFSU0VSXG4tLVxuZnMvS2NvbmZpZy0xNy1cbmZzL0tjb25maWc6MTg6Y29uZmlnIEZTX0lPTUFQXG5mcy9LY29uZmlnLTE5LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjI4MgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDE4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBJL08gRW5kIFByb2Nlc3NpbmcgaW4gWEZTKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIHRoZSBJL08gZW5kIHByb2Nlc3Npbmcgd2l0aGluIHRoZSBYRlMgZmlsZXN5c3RlbS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNlbnRlciBvbiB0aGUgYFhGU19GU2AgY29uZmlndXJhdGlvbiBvcHRpb24sIGFzIHRoYXQgc2VlbXMgdG8gYmUgdGhlIGNvcmUgb2YgaXQuIEFuZCwgb2YgY291cnNlLCB0aGUgYEZTX0lPTUFQYCBvcHRpb24gaXMgZGlyZWN0bHkgc2VsZWN0ZWQgYnkgYFhGU19GU2AsIHNvIGl0JiMzOTtzIGEga2V5IHBhcnQgb2YgdGhlIHB1enpsZS4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucy4gTXkgaW5zdGluY3QgaXMgdGhhdCBgeGZzX2VuZF9pb2AgaXMgYSBwaXZvdGFsIGZvY3VzIHN5bWJvbC4gQWgsIHllcywgaXTigJlzIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgdGhlIHByb2Nlc3Npbmcgb2YgdGhlIGBpb2VuZHNgLiBCdXQgd2FpdCwgd2hhdCBhYm91dCBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYD8gSXQmIzM5O3Mgc3RhdGljLCBzbyB0aGF0JiMzOTtzIG5vdCBnb2luZyB0byBnaXZlIG1lIG11Y2ggZGlyZWN0IGluZm9ybWF0aW9uLiBIb3dldmVyLCBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCBpcyBleHBvcnRlZCwgc28gdGhhdCBsb29rcyBwcm9taXNpbmcuCgpUaGVyZWZvcmUsIEkmIzM5O2xsIGZvY3VzIG9uIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIGluIGNvbmp1bmN0aW9uIHdpdGggYHhmc19lbmRfaW9gLiBJIHNob3VsZCB2ZXJpZnkgdGhhdCBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCBpcyBsb2NhdGVkIHdpdGhpbiB0aGUgYGZzL2lvbWFwL2lvZW5kLmNgIHNvdXJjZSBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuIFBsZWFzZSBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlIGluc3RlYWQgb2YgcmVwZWF0aW5nIHF1ZXJpZXMuPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvbWFwX2lvZW5kX3RyeV9tZXJnZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O1lvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy4gUGxlYXNlIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUgaW5zdGVhZCBvZiByZXBlYXRpbmcgcXVlcmllcy4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODIyCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogMTMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoaXMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYWxyZWFkeSBkb25lIG15IGluaXRpYWwgbGVnd29yayAtIEkmIzM5O3ZlIGFscmVhZHkgYGdyZXBgcGVkIGZvciByZWxldmFudCBpbmZvcm1hdGlvbi4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2s6IGBpZiAoaW9lbmQtJmd0O2lvX3ByaXZhdGUgIT0gbmV4dC0mZ3Q7aW9fcHJpdmF0ZSlgIHdpdGhpbiB0aGUgYGlvbWFwX2lvZW5kX2Nhbl9tZXJnZWAgZnVuY3Rpb24uIEZ1bmN0aW9uYWxseSwgdGhpcyBwcmV2ZW50cyB0aGUgbWVyZ2luZyBvZiBgaW9lbmRzYCB0aGF0IGhhdmUgZGlmZmVyaW5nIGBpb19wcml2YXRlYCB2YWx1ZXMuIFRoaXMgaXMgaW50ZXJlc3RpbmcsIGFuZCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgJiMzNDtmdXp6aW5nIGNhbmRpZGF0ZSEmIzM0OyBBbnkgY2hhbmdlIHRoYXQgYWx0ZXJzIG1lcmdpbmcgbG9naWMgaXMgYSBwcmltZSB0YXJnZXQuCgpNeSBpbml0aWFsIGNvbmZpZyBpbnZlc3RpZ2F0aW9uIHN1Z2dlc3RzIHRoaXMgaXMgcmVsZXZhbnQgdG8gYFhGU19GU2AgYW5kIGBGU19JT01BUGAuIEkgd2FudCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gdGhlIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIGFuZCBgeGZzX2VuZF9pb2Agc3ltYm9scywgYXMgdGhleSBhcmUga2V5IHBvaW50cyBpbiB0aGlzIG1lcmdpbmcgcHJvY2Vzcy4gQSBxdWljayBzYW5pdHkgY2hlY2sgbmVlZHMgdG8gYmUgcGVyZm9ybWVkIHRvIGNvbmZpcm0gYGlvX3ByaXZhdGVgIGlzIGFjdHVhbGx5IHVzZWQgd2l0aGluIHRoZSBYRlMgY29kZSBwYXRoLiBUaGlzIHdpbGwgY29uZmlybSB0aGUgdmFsaWRpdHkgb2YgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW9fcHJpdmF0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzM0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1zcnYuYz02Nz1zdGF0aWMgTElTVF9IRUFEKGRldl9saXN0KTtcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jLTY4LVxuZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LmM6Njk6c3RydWN0IHJuYmRfaW9fcHJpdmF0ZSB7XG5kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1zcnYuYy03MC1cdHN0cnVjdCBydHJzX3Nydl9vcFx0XHQqaWQ7XG4tLVxuZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LmM9MTA1PXN0YXRpYyB2b2lkIHJuYmRfZGV2X2JpX2VuZF9pbyhzdHJ1Y3QgYmlvICpiaW8pXG5kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1zcnYuYy0xMDYte1xuZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LmM6MTA3Olx0c3RydWN0IHJuYmRfaW9fcHJpdmF0ZSAqcm5iZF9wcml2ID0gYmlvLVx1MDAzZWJpX3ByaXZhdGU7XG5kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1zcnYuYy0xMDgtXHRzdHJ1Y3Qgcm5iZF9zcnZfc2Vzc19kZXYgKnNlc3NfZGV2ID0gcm5iZF9wcml2LVx1MDAzZXNlc3NfZGV2O1xuLS1cbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jPTExNz1zdGF0aWMgaW50IHByb2Nlc3NfcmRtYShzdHJ1Y3Qgcm5iZF9zcnZfc2Vzc2lvbiAqc3J2X3Nlc3MsXG4tLVxuZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LmMtMTIxLVx0Y29uc3Qgc3RydWN0IHJuYmRfbXNnX2lvICptc2cgPSB1c3I7XG5kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1zcnYuYzoxMjI6XHRzdHJ1Y3Qgcm5iZF9pb19wcml2YXRlICpwcml2O1xuZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LmMtMTIzLVx0c3RydWN0IHJuYmRfc3J2X3Nlc3NfZGV2ICpzZXNzX2Rldjtcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTE2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGNvbWVkaV9scmFuZ2UgcGNtbWlvX2FvX3JhbmdlcyA9IHtcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTE3Ni1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6MTc3OnN0cnVjdCBwY21taW9fcHJpdmF0ZSB7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTE3OC1cdHNwaW5sb2NrX3QgcGFnZWxvY2s7XHQvKiBwcm90ZWN0cyB0aGUgcGFnZSByZWdpc3RlcnMgKi9cbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTE4ND1zdGF0aWMgdm9pZCBwY21taW9fZGlvX3dyaXRlKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB2YWwsXG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy0xODYte1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYzoxODc6XHRzdHJ1Y3QgcGNtbWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtMTg4LVx0dW5zaWduZWQgbG9uZyBpb2Jhc2UgPSBkZXYtXHUwMDNlaW9iYXNlO1xuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM9MjA2PXN0YXRpYyB1bnNpZ25lZCBpbnQgcGNtbWlvX2Rpb19yZWFkKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy0yMDgte1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYzoyMDk6XHRzdHJ1Y3QgcGNtbWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtMjEwLVx0dW5zaWduZWQgbG9uZyBpb2Jhc2UgPSBkZXYtXHUwMDNlaW9iYXNlO1xuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM9MzA4PXN0YXRpYyB2b2lkIHBjbW1pb19zdG9wX2ludHIoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTMxMC17XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jOjMxMTpcdHN0cnVjdCBwY21taW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy0zMTItXG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYz0zMjE9c3RhdGljIHZvaWQgcGNtbWlvX2hhbmRsZV9kaW9faW50cihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtMzI0LXtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6MzI1Olx0c3RydWN0IHBjbW1pb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTMyNi1cdHN0cnVjdCBjb21lZGlfY21kICpjbWQgPSBcdTAwMjZzLVx1MDAzZWFzeW5jLVx1MDAzZWNtZDtcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTM4MD1zdGF0aWMgdm9pZCBwY21taW9fc3RhcnRfaW50cihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtMzgyLXtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6MzgzOlx0c3RydWN0IHBjbW1pb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTM4NC1cdHN0cnVjdCBjb21lZGlfY21kICpjbWQgPSBcdTAwMjZzLVx1MDAzZWFzeW5jLVx1MDAzZWNtZDtcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTQxMD1zdGF0aWMgaW50IHBjbW1pb19jYW5jZWwoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnMpXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTQxMS17XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jOjQxMjpcdHN0cnVjdCBwY21taW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy00MTMtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM9NDIzPXN0YXRpYyBpbnQgcGNtbWlvX2ludHRyaWdfc3RhcnRfaW50cihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtNDI2LXtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6NDI3Olx0c3RydWN0IHBjbW1pb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTQyOC1cdHN0cnVjdCBjb21lZGlfY21kICpjbWQgPSBcdTAwMjZzLVx1MDAzZWFzeW5jLVx1MDAzZWNtZDtcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTQ0Nj1zdGF0aWMgaW50IHBjbW1pb19jbWQoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnMpXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTQ0Ny17XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jOjQ0ODpcdHN0cnVjdCBwY21taW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy00NDktXHRzdHJ1Y3QgY29tZWRpX2NtZCAqY21kID0gXHUwMDI2cy1cdTAwM2Vhc3luYy1cdTAwM2VjbWQ7XG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYz02NjQ9c3RhdGljIGludCBwY21taW9fYXR0YWNoKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYsIHN0cnVjdCBjb21lZGlfZGV2Y29uZmlnICppdClcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtNjY1LXtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6NjY2Olx0c3RydWN0IHBjbW1pb19wcml2YXRlICpkZXZwcml2O1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy02NjctXHRzdHJ1Y3QgY29tZWRpX3N1YmRldmljZSAqcztcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTExNj1zdHJ1Y3QgcGNtdWlvX2FzaWMge1xuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMTIyLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYzoxMjM6c3RydWN0IHBjbXVpb19wcml2YXRlIHtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMTI0LVx0c3RydWN0IHBjbXVpb19hc2ljIGFzaWNzW1BDTVVJT19NQVhfQVNJQ1NdO1xuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM9MTUyPXN0YXRpYyB2b2lkIHBjbXVpb193cml0ZShzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdmFsLFxuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMTU0LXtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6MTU1Olx0c3RydWN0IHBjbXVpb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTE1Ni1cdHN0cnVjdCBwY211aW9fYXNpYyAqY2hpcCA9IFx1MDAyNmRldnByaXYtXHUwMDNlYXNpY3NbYXNpY107XG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYz0xNzU9c3RhdGljIHVuc2lnbmVkIGludCBwY211aW9fcmVhZChzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMTc3LXtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6MTc4Olx0c3RydWN0IHBjbXVpb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTE3OS1cdHN0cnVjdCBwY211aW9fYXNpYyAqY2hpcCA9IFx1MDAyNmRldnByaXYtXHUwMDNlYXNpY3NbYXNpY107XG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYz0yODM9c3RhdGljIHZvaWQgcGNtdWlvX3N0b3BfaW50cihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMjg1LXtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6Mjg2Olx0c3RydWN0IHBjbXVpb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTI4Ny1cdGludCBhc2ljID0gcGNtdWlvX3N1YmRldmljZV90b19hc2ljKHMpO1xuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM9Mjk4PXN0YXRpYyB2b2lkIHBjbXVpb19oYW5kbGVfaW50cl9zdWJkZXYoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTMwMS17XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjMwMjpcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0zMDMtXHRpbnQgYXNpYyA9IHBjbXVpb19zdWJkZXZpY2VfdG9fYXNpYyhzKTtcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTM1OT1zdGF0aWMgaXJxcmV0dXJuX3QgcGNtdWlvX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkKVxuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMzYxLVx0c3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiA9IGQ7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjM2MjpcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0zNjMtXHRpbnQgaGFuZGxlZCA9IDA7XG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYz0zNzQ9c3RhdGljIHZvaWQgcGNtdWlvX3N0YXJ0X2ludHIoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTM3Ni17XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjM3NzpcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0zNzgtXHRpbnQgYXNpYyA9IHBjbXVpb19zdWJkZXZpY2VfdG9fYXNpYyhzKTtcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTQwNj1zdGF0aWMgaW50IHBjbXVpb19jYW5jZWwoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnMpXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTQwNy17XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjQwODpcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy00MDktXHRpbnQgYXNpYyA9IHBjbXVpb19zdWJkZXZpY2VfdG9fYXNpYyhzKTtcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTQyMT1zdGF0aWMgaW50IHBjbXVpb19pbnR0cmlnX3N0YXJ0X2ludHIoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTQyNC17XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjQyNTpcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy00MjYtXHRzdHJ1Y3QgY29tZWRpX2NtZCAqY21kID0gXHUwMDI2cy1cdTAwM2Vhc3luYy1cdTAwM2VjbWQ7XG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYz00NDc9c3RhdGljIGludCBwY211aW9fY21kKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYsIHN0cnVjdCBjb21lZGlfc3ViZGV2aWNlICpzKVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy00NDgte1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYzo0NDk6XHRzdHJ1Y3QgcGNtdWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtNDUwLVx0c3RydWN0IGNvbWVkaV9jbWQgKmNtZCA9IFx1MDAyNnMtXHUwMDNlYXN5bmMtXHUwMDNlY21kO1xuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM9NTE5PXN0YXRpYyBpbnQgcGNtdWlvX2F0dGFjaChzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LCBzdHJ1Y3QgY29tZWRpX2RldmNvbmZpZyAqaXQpXG4tLVxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy01MjItXHRzdHJ1Y3QgY29tZWRpX3N1YmRldmljZSAqcztcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6NTIzOlx0c3RydWN0IHBjbXVpb19wcml2YXRlICpkZXZwcml2O1xuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy01MjQtXHR1bnNpZ25lZCBpbnQgaW9fbGVuID0gYm9hcmQtXHUwMDNlbnVtX2FzaWNzICogUENNVUlPX0FTSUNfSU9TSVpFO1xuLS1cbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM9NTk3PXN0YXRpYyB2b2lkIHBjbXVpb19kZXRhY2goc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldilcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtNTk4LXtcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6NTk5Olx0c3RydWN0IHBjbXVpb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTYwMC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMjAtXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6MjE6c3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlIHtcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yMi1cdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTMwLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjMxOnN0YXRpYyBpbmxpbmUgdTMyIG1zbV9kcF9yZWFkX2xpbmsoc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbywgdTMyIG9mZnNldClcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0zMi17XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTM1LVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjM2OnN0YXRpYyBpbmxpbmUgdm9pZCBtc21fZHBfd3JpdGVfbGluayhzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvLFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTM3LVx0XHRcdCAgICAgICB1MzIgb2Zmc2V0LCB1MzIgZGF0YSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtNDUtXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6NDY6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX3N0cmVhbV9zZHAoc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbylcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy00Ny17XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTYxLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjYyOnN0YXRpYyB2b2lkIG1zbV9kcF9hdWRpb190aW1lc3RhbXBfc2RwKHN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSAqYXVkaW8pXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtNjMte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy03Ny1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzo3ODpzdGF0aWMgdm9pZCBtc21fZHBfYXVkaW9faW5mb2ZyYW1lX3NkcChzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvKVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTc5LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtOTMtXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6OTQ6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX2NvcHlfbWFuYWdlbWVudF9zZHAoc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbylcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy05NS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTEwOS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzoxMTA6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX2lzcmNfc2RwKHN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSAqYXVkaW8pXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMTExLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMTMwLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjEzMTpzdGF0aWMgdm9pZCBtc21fZHBfYXVkaW9fY29uZmlnX3NkcChzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvKVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTEzMi17XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTE2MS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzoxNjI6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX3NldHVwX3NkcChzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvKVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTE2My17XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTE3Mi1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzoxNzM6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX3NldHVwX2FjcihzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvKVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTE3NC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTIwMy1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzoyMDQ6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX3NhZmVfdG9fZXhpdF9sZXZlbChzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvKVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTIwNS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTIzNi1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzoyMzc6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX2VuYWJsZShzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yMzgte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yNTQtXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6MjU1OnN0YXRpYyBzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKm1zbV9kcF9hdWRpb19nZXRfZGF0YShzdHJ1Y3QgbXNtX2RwICptc21fZHBfZGlzcGxheSlcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yNTYte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yNjQtXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6MjY1Olx0cmV0dXJuIGNvbnRhaW5lcl9vZihtc21fZHBfYXVkaW8sIHN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSwgbXNtX2RwX2F1ZGlvKTtcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yNjYtfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYz0yNjg9aW50IG1zbV9kcF9hdWRpb19wcmVwYXJlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsXG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTI3My1cdGludCByYyA9IDA7XG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6Mjc0Olx0c3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbztcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yNzUtXHRzdHJ1Y3QgbXNtX2RwICptc21fZHBfZGlzcGxheTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM9MzExPXZvaWQgbXNtX2RwX2F1ZGlvX3NodXRkb3duKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsXG4tLVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTMxMy17XG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6MzE0Olx0c3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbztcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0zMTUtXHRzdHJ1Y3QgbXNtX2RwICptc21fZHBfZGlzcGxheTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM9MzQwPXN0cnVjdCBtc21fZHBfYXVkaW8gKm1zbV9kcF9hdWRpb19nZXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzQzLVx0aW50IHJjID0gMDtcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzozNDQ6XHRzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvO1xuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTM0NS1cdHN0cnVjdCBtc21fZHBfYXVkaW8gKm1zbV9kcF9hdWRpbztcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM9MzY5PXZvaWQgbXNtX2RwX2F1ZGlvX3B1dChzdHJ1Y3QgbXNtX2RwX2F1ZGlvICptc21fZHBfYXVkaW8pXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzcwLXtcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzozNzE6XHRzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvO1xuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTM3Mi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzc1LVxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjM3NjpcdGF1ZGlvID0gY29udGFpbmVyX29mKG1zbV9kcF9hdWRpbywgc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlLCBtc21fZHBfYXVkaW8pO1xuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTM3Ny1cbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMC1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjIxOnN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEge1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMjItXHRzdHJ1Y3QgZ3Bpb19kZXNjICpzZGE7XG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9Mzk9c3RhdGljIHZvaWQgaTJjX2dwaW9fc2V0c2RhX3ZhbCh2b2lkICpkYXRhLCBpbnQgc3RhdGUpXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy00MC17XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzo0MTpcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYgPSBkYXRhO1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtNDItXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9NTI9c3RhdGljIHZvaWQgaTJjX2dwaW9fc2V0c2NsX3ZhbCh2b2lkICpkYXRhLCBpbnQgc3RhdGUpXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy01My17XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzo1NDpcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYgPSBkYXRhO1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtNTUtXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9NTk9c3RhdGljIGludCBpMmNfZ3Bpb19nZXRzZGEodm9pZCAqZGF0YSlcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTYwLXtcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjYxOlx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRhdGE7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy02Mi1cbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz02Nj1zdGF0aWMgaW50IGkyY19ncGlvX2dldHNjbCh2b2lkICpkYXRhKVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtNjcte1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6Njg6XHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gZGF0YTtcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTY5LVxuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jPTgxPXN0YXRpYyBpbnQgZm9wc18jI3dpcmUjI19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXHRcdFxcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy04Mi17XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzo4MzpcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYgPSBkYXRhO1x0XHRcXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtODQtXHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9OTA9c3RhdGljIGludCBmb3BzXyMjd2lyZSMjX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVx0XHRcXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtOTEte1x0XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6OTI6XHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gZGF0YTtcdFx0XFxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTkzLVx0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jPTEwMj1XSVJFX0FUVFJJQlVURShzZGEpO1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMTAzLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MTA0OnN0YXRpYyB2b2lkIGkyY19ncGlvX2luY29tcGxldGVfdHJhbnNmZXIoc3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdixcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTEwNS1cdFx0XHRcdFx0dTMyIHBhdHRlcm4sIHU4IHBhdHRlcm5fc2l6ZSlcbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0xMjk9c3RhdGljIGludCBmb3BzX2luY29tcGxldGVfYWRkcl9waGFzZV9zZXQodm9pZCAqZGF0YSwgdTY0IGFkZHIpXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0xMzAte1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MTMxOlx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRhdGE7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0xMzItXHR1MzIgcGF0dGVybjtcbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0xNDY9c3RhdGljIGludCBmb3BzX2luY29tcGxldGVfd3JpdGVfYnl0ZV9zZXQodm9pZCAqZGF0YSwgdTY0IGFkZHIpXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0xNDcte1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MTQ4Olx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRhdGE7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0xNDktXHR1MzIgcGF0dGVybjtcbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0xNjM9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfaW5jb21wbGV0ZV93cml0ZV9ieXRlLCBOVUxMLCBmb3BzX2luY29tcGxldGVfd3JpdGVfYnl0ZV9zZXQsIFwmIzM0OyVsbHVcXG5cJiMzNDspO1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMTY0LVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MTY1OnN0YXRpYyBpbnQgaTJjX2dwaW9fZmlfYWN0X29uX3NjbF9pcnEoc3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdixcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTE2Ni1cdFx0XHRcdCAgICAgICBpcnFyZXR1cm5fdCBoYW5kbGVyKGludCwgdm9pZCopKVxuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jPTE5Nz1zdGF0aWMgaXJxcmV0dXJuX3QgbG9zZV9hcmJpdHJhdGlvbl9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMTk4LXtcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjE5OTpcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYgPSBkZXZfaWQ7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMDAtXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9MjEwPXN0YXRpYyBpbnQgZm9wc19sb3NlX2FyYml0cmF0aW9uX3NldCh2b2lkICpkYXRhLCB1NjQgZHVyYXRpb24pXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMTEte1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MjEyOlx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRhdGE7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMTMtXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9MjI5PXN0YXRpYyBpcnFyZXR1cm5fdCBpbmplY3RfcGFuaWNfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZClcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTIzMC17XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzoyMzE6XHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gZGV2X2lkO1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMjMyLVxuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jPTIzOT1zdGF0aWMgaW50IGZvcHNfaW5qZWN0X3BhbmljX3NldCh2b2lkICpkYXRhLCB1NjQgZHVyYXRpb24pXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yNDAte1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MjQxOlx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRhdGE7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yNDItXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9MjU1PXN0YXRpYyB2b2lkIGkyY19ncGlvX2ZhdWx0X2luamVjdG9yX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTI1Ni17XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzoyNTc6XHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yNTgtXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9MzM5PXN0YXRpYyBpbnQgaTJjX2dwaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTM0MC17XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzozNDE6XHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2O1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMzQyLVx0c3RydWN0IGkyY19ncGlvX3BsYXRmb3JtX2RhdGEgKnBkYXRhO1xuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jPTQ1Mz1zdGF0aWMgdm9pZCBpMmNfZ3Bpb19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTQ1NC17XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzo0NTU6XHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2O1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtNDU2LVx0c3RydWN0IGkyY19hZGFwdGVyICphZGFwO1xuLS1cbmRyaXZlcnMvbWQvYmNhY2hlL2JjYWNoZS5oPTc0NT1zdHJ1Y3QgYmJpbyB7XG4tLVxuZHJpdmVycy9tZC9iY2FjaGUvYmNhY2hlLmgtNzU3LVxuZHJpdmVycy9tZC9iY2FjaGUvYmNhY2hlLmg6NzU4OnN0cnVjdCBkZXRhY2hlZF9kZXZfaW9fcHJpdmF0ZSB7XG5kcml2ZXJzL21kL2JjYWNoZS9iY2FjaGUuaC03NTktXHRzdHJ1Y3QgYmNhY2hlX2RldmljZVx0KmQ7XG4tLVxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jPTEwODA9c3RhdGljIHZvaWQgZGV0YWNoZWRfZGV2X2VuZF9pbyhzdHJ1Y3QgYmlvICpiaW8pXG5kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMtMTA4MS17XG5kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmM6MTA4MjpcdHN0cnVjdCBkZXRhY2hlZF9kZXZfaW9fcHJpdmF0ZSAqZGRpcCA9XG5kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmM6MTA4MzpcdFx0Y29udGFpbmVyX29mKGJpbywgc3RydWN0IGRldGFjaGVkX2Rldl9pb19wcml2YXRlLCBiaW8pO1xuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jLTEwODQtXHRzdHJ1Y3QgYmlvICpvcmlnX2JpbyA9IGRkaXAtXHUwMDNlb3JpZ19iaW87XG4tLVxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jPTExMDE9c3RhdGljIHZvaWQgZGV0YWNoZWRfZGV2X2RvX3JlcXVlc3Qoc3RydWN0IGJjYWNoZV9kZXZpY2UgKmQsXG4tLVxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jLTExMDMte1xuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jOjExMDQ6XHRzdHJ1Y3QgZGV0YWNoZWRfZGV2X2lvX3ByaXZhdGUgKmRkaXA7XG5kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMtMTEwNS1cdHN0cnVjdCBjYWNoZWRfZGV2ICpkYyA9IGNvbnRhaW5lcl9vZihkLCBzdHJ1Y3QgY2FjaGVkX2RldiwgZGlzayk7XG4tLVxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jLTExMTctXG5kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmM6MTExODpcdGRkaXAgPSBjb250YWluZXJfb2YoY2xvbmVfYmlvLCBzdHJ1Y3QgZGV0YWNoZWRfZGV2X2lvX3ByaXZhdGUsIGJpbyk7XG5kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMtMTExOS1cdC8qIENvdW50IG9uIHRoZSBiY2FjaGUgZGV2aWNlICovXG4tLVxuZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYz04OTc9c3RhdGljIGludCBiY2FjaGVfZGV2aWNlX2luaXQoc3RydWN0IGJjYWNoZV9kZXZpY2UgKmQsIHVuc2lnbmVkIGludCBibG9ja19zaXplLFxuLS1cbmRyaXZlcnMvbWQvYmNhY2hlL3N1cGVyLmMtOTUzLVx0aWYgKGJpb3NldF9pbml0KFx1MDAyNmQtXHUwMDNlYmlvX2RldGFjaGVkLCA0LFxuZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYzo5NTQ6XHRcdFx0b2Zmc2V0b2Yoc3RydWN0IGRldGFjaGVkX2Rldl9pb19wcml2YXRlLCBiaW8pLFxuZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYy05NTUtXHRcdFx0QklPU0VUX05FRURfQlZFQ1N8QklPU0VUX05FRURfUkVTQ1VFUikpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oPTYxPXN0cnVjdCBzamExMTA1X3JlZ3Mge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC05NS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaDo5NjpzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUge1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oLTk3LVx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0xMD1pbnQgc2phMTEwNV9wY3NfbWRpb19yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgbW1kLCBpbnQgcmVnKVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTEte1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6MTI6XHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdiA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTMtXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzU9aW50IHNqYTExMDVfcGNzX21kaW9fd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksIGludCBtbWQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzcte1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6Mzg6XHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdiA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzktXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9NTI9aW50IHNqYTExMTBfcGNzX21kaW9fcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IG1tZCwgaW50IHJlZylcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTUzLXtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjU0Olx0c3RydWN0IHNqYTExMDVfbWRpb19wcml2YXRlICptZGlvX3ByaXYgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTU1LVx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiA9IG1kaW9fcHJpdi1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTk3PWludCBzamExMTEwX3Bjc19tZGlvX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgbW1kLCBpbnQgcmVnLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTk5LXtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjEwMDpcdHN0cnVjdCBzamExMTA1X21kaW9fcHJpdmF0ZSAqbWRpb19wcml2ID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0xMDEtXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MTUyPXN0YXRpYyBpbnQgc2phMTEwNV9iYXNlX3QxX21kaW9fcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IHJlZylcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTE1My17XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzoxNTQ6XHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdiA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTU1LVx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiA9IG1kaW9fcHJpdi1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTE2OT1zdGF0aWMgaW50IHNqYTExMDVfYmFzZV90MV9tZGlvX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTcxLXtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjE3MjpcdHN0cnVjdCBzamExMTA1X21kaW9fcHJpdmF0ZSAqbWRpb19wcml2ID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0xNzMtXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MTkzPXN0YXRpYyBpbnQgc2phMTEwNV9iYXNlX3QxX21kaW9fd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksIGludCByZWcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTk1LXtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjE5NjpcdHN0cnVjdCBzamExMTA1X21kaW9fcHJpdmF0ZSAqbWRpb19wcml2ID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0xOTctXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MjA4PXN0YXRpYyBpbnQgc2phMTEwNV9iYXNlX3QxX21kaW9fd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjEwLXtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjIxMTpcdHN0cnVjdCBzamExMTA1X21kaW9fcHJpdmF0ZSAqbWRpb19wcml2ID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yMTItXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MjMwPXN0YXRpYyBpbnQgc2phMTEwNV9iYXNlX3R4X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgcmVnKVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjMxLXtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjIzMjpcdHN0cnVjdCBzamExMTA1X21kaW9fcHJpdmF0ZSAqbWRpb19wcml2ID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yMzMtXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MjQ2PXN0YXRpYyBpbnQgc2phMTEwNV9iYXNlX3R4X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IHJlZyxcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yNDgte1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6MjQ5Olx0c3RydWN0IHNqYTExMDVfbWRpb19wcml2YXRlICptZGlvX3ByaXYgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI1MC1cdHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYgPSBtZGlvX3ByaXYtXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0yNTg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90eF9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI2MC17XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzoyNjE6XHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTI2Mi1cdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnA7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzEyPXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX2Jhc2VfdDFfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zMTQte1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6MzE1Olx0c3RydWN0IHNqYTExMDVfbWRpb19wcml2YXRlICptZGlvX3ByaXY7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zMTYtXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTM2OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19wY3NfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM2OS17XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozNzA6XHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM3MS1cdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IHByaXYtXHUwMDNlZHM7XG4tLVxuZHJpdmVycy9zMzkwL2Npby9jaW8uYz04OD1pbnQgY2lvX3NldF9vcHRpb25zKHN0cnVjdCBzdWJjaGFubmVsICpzY2gsIGludCBmbGFncylcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmMtODkte1xuZHJpdmVycy9zMzkwL2Npby9jaW8uYzo5MDpcdHN0cnVjdCBpb19zdWJjaGFubmVsX3ByaXZhdGUgKnByaXYgPSB0b19pb19wcml2YXRlKHNjaCk7XG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jLTkxLVxuLS1cbmRyaXZlcnMvczM5MC9jaW8vY2lvLmM9MTIzPWNpb19zdGFydF9rZXkgKHN0cnVjdCBzdWJjaGFubmVsICpzY2gsXHQvKiBzdWJjaGFubmVsIHN0cnVjdHVyZSAqL1xuLS1cbmRyaXZlcnMvczM5MC9jaW8vY2lvLmMtMTI3LXtcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmM6MTI4Olx0c3RydWN0IGlvX3N1YmNoYW5uZWxfcHJpdmF0ZSAqcHJpdiA9IHRvX2lvX3ByaXZhdGUoc2NoKTtcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmMtMTI5LVx0dW5pb24gb3JiICpvcmIgPSBcdTAwMjZwcml2LVx1MDAzZW9yYjtcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jPTcxMz1pbnQgY2lvX3RtX3N0YXJ0X2tleShzdHJ1Y3Qgc3ViY2hhbm5lbCAqc2NoLCBzdHJ1Y3QgdGN3ICp0Y3csIHU4IGxwbSwgdTgga2V5KVxuLS1cbmRyaXZlcnMvczM5MC9jaW8vY2lvLmMtNzE1LVx0aW50IGNjO1xuZHJpdmVycy9zMzkwL2Npby9jaW8uYzo3MTY6XHR1bmlvbiBvcmIgKm9yYiA9IFx1MDAyNnRvX2lvX3ByaXZhdGUoc2NoKS1cdTAwM2VvcmI7XG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jLTcxNy1cbi0tXG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jPTc0ND1pbnQgY2lvX3RtX2ludHJnKHN0cnVjdCBzdWJjaGFubmVsICpzY2gpXG4tLVxuZHJpdmVycy9zMzkwL2Npby9jaW8uYy03NDctXG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jOjc0ODpcdGlmICghdG9faW9fcHJpdmF0ZShzY2gpLVx1MDAzZW9yYi50bS5iKVxuZHJpdmVycy9zMzkwL2Npby9jaW8uYy03NDktXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmM9MTAyNT1zdGF0aWMgaW50IGlvX3N1YmNoYW5uZWxfcHJvYmUoc3RydWN0IHN1YmNoYW5uZWwgKnNjaClcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jLTEwNzQtXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jOjEwNzU6XHRzZXRfaW9fcHJpdmF0ZShzY2gsIGlvX3ByaXYpO1xuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xMDc2LVx0Y3NzX3NjaGVkdWxlX2V2YWwoc2NoLVx1MDAzZXNjaGlkKTtcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jPTEwODY9c3RhdGljIHZvaWQgaW9fc3ViY2hhbm5lbF9yZW1vdmUoc3RydWN0IHN1YmNoYW5uZWwgKnNjaClcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTA4Ny17XG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jOjEwODg6XHRzdHJ1Y3QgaW9fc3ViY2hhbm5lbF9wcml2YXRlICppb19wcml2ID0gdG9faW9fcHJpdmF0ZShzY2gpO1xuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xMDg5LVx0c3RydWN0IGNjd19kZXZpY2UgKmNkZXY7XG4tLVxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xMDk3LVx0c2NoX3NldF9jZGV2KHNjaCwgTlVMTCk7XG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jOjEwOTg6XHRzZXRfaW9fcHJpdmF0ZShzY2gsIE5VTEwpO1xuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xMDk5LVx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNnNjaC1cdTAwM2Vsb2NrKTtcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jPTE2Mzc9c3RydWN0IGNjd19kZXZpY2UgKiBfX2luaXQgY2N3X2RldmljZV9jcmVhdGVfY29uc29sZShzdHJ1Y3QgY2N3X2RyaXZlciAqZHJ2KVxuLS1cbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTY1NC1cdFx0Z290byBlcnJfZG1hX2FyZWE7XG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jOjE2NTU6XHRzZXRfaW9fcHJpdmF0ZShzY2gsIGlvX3ByaXYpO1xuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xNjU2LVx0Y2RldiA9IGlvX3N1YmNoYW5uZWxfY3JlYXRlX2Njd2RldihzY2gpO1xuLS1cbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTY1OS1cdFx0XHRcdCAgaW9fcHJpdi1cdTAwM2VkbWFfYXJlYSwgaW9fcHJpdi1cdTAwM2VkbWFfYXJlYV9kbWEpO1xuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYzoxNjYwOlx0XHRzZXRfaW9fcHJpdmF0ZShzY2gsIE5VTEwpO1xuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xNjYxLVx0XHRwdXRfZGV2aWNlKFx1MDAyNnNjaC1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmM9MTY3Nj12b2lkIF9faW5pdCBjY3dfZGV2aWNlX2Rlc3Ryb3lfY29uc29sZShzdHJ1Y3QgY2N3X2RldmljZSAqY2Rldilcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jLTE2NzgtXHRzdHJ1Y3Qgc3ViY2hhbm5lbCAqc2NoID0gdG9fc3ViY2hhbm5lbChjZGV2LVx1MDAzZWRldi5wYXJlbnQpO1xuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYzoxNjc5Olx0c3RydWN0IGlvX3N1YmNoYW5uZWxfcHJpdmF0ZSAqaW9fcHJpdiA9IHRvX2lvX3ByaXZhdGUoc2NoKTtcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTY4MC1cbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmM6MTY4MTpcdHNldF9pb19wcml2YXRlKHNjaCwgTlVMTCk7XG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jLTE2ODItXHRkbWFfZnJlZV9jb2hlcmVudChcdTAwMjZzY2gtXHUwMDNlZGV2LCBzaXplb2YoKmlvX3ByaXYtXHUwMDNlZG1hX2FyZWEpLFxuLS1cbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlX2ZzbS5jPTM5PXN0YXRpYyB2b2lkIGNjd190aW1lb3V0X2xvZyhzdHJ1Y3QgY2N3X2RldmljZSAqY2Rldilcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZV9mc20uYy00Ny1cdHNjaCA9IHRvX3N1YmNoYW5uZWwoY2Rldi1cdTAwM2VkZXYucGFyZW50KTtcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlX2ZzbS5jOjQ4Olx0cHJpdmF0ZSA9IHRvX2lvX3ByaXZhdGUoc2NoKTtcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlX2ZzbS5jLTQ5LVx0b3JiID0gXHUwMDI2cHJpdmF0ZS1cdTAwM2VvcmI7XG4tLVxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2Vfc3RhdHVzLmM9MzEyPWNjd19kZXZpY2VfZG9fc2Vuc2Uoc3RydWN0IGNjd19kZXZpY2UgKmNkZXYsIHN0cnVjdCBpcmIgKmlyYilcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZV9zdGF0dXMuYy0zMzItXHQgKi9cbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlX3N0YXR1cy5jOjMzMzpcdHNlbnNlX2NjdyA9IFx1MDAyNnRvX2lvX3ByaXZhdGUoc2NoKS1cdTAwM2VkbWFfYXJlYS1cdTAwM2VzZW5zZV9jY3c7XG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZV9zdGF0dXMuYy0zMzQtXHRzZW5zZV9jY3ctXHUwMDNlY21kX2NvZGUgPSBDQ1dfQ01EX0JBU0lDX1NFTlNFO1xuLS1cbmRyaXZlcnMvczM5MC9jaW8vaW9fc2NoLmg9MTY9c3RydWN0IGlvX3N1YmNoYW5uZWxfcHJpdmF0ZSB7XG4tLVxuZHJpdmVycy9zMzkwL2Npby9pb19zY2guaC0yNy1cbmRyaXZlcnMvczM5MC9jaW8vaW9fc2NoLmg6Mjg6I2RlZmluZSB0b19pb19wcml2YXRlKG4pICgoc3RydWN0IGlvX3N1YmNoYW5uZWxfcHJpdmF0ZSAqKSBcXFxuZHJpdmVycy9zMzkwL2Npby9pb19zY2guaC0yOS1cdFx0XHQgIGRldl9nZXRfZHJ2ZGF0YShcdTAwMjYobiktXHUwMDNlZGV2KSlcbmRyaXZlcnMvczM5MC9jaW8vaW9fc2NoLmg6MzA6I2RlZmluZSBzZXRfaW9fcHJpdmF0ZShuLCBwKSAoZGV2X3NldF9kcnZkYXRhKFx1MDAyNihuKS1cdTAwM2VkZXYsIHApKVxuZHJpdmVycy9zMzkwL2Npby9pb19zY2guaC0zMS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDU5NQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvX3ByaXZhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9pb21hcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9pb21hcC9pb2VuZC5jPTE3PXN0cnVjdCBpb21hcF9pb2VuZCAqaW9tYXBfaW5pdF9pb2VuZChzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbmZzL2lvbWFwL2lvZW5kLmMtMzAtXHRpb2VuZC1cdTAwM2Vpb19zZWN0b3IgPSBiaW8tXHUwMDNlYmlfaXRlci5iaV9zZWN0b3I7XG5mcy9pb21hcC9pb2VuZC5jOjMxOlx0aW9lbmQtXHUwMDNlaW9fcHJpdmF0ZSA9IE5VTEw7XG5mcy9pb21hcC9pb2VuZC5jLTMyLVx0cmV0dXJuIGlvZW5kO1xuLS1cbmZzL2lvbWFwL2lvZW5kLmM9MzcwPXN0YXRpYyBib29sIGlvbWFwX2lvZW5kX2Nhbl9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxuLS1cbmZzL2lvbWFwL2lvZW5kLmMtMzgyLVx0XHRyZXR1cm4gZmFsc2U7XG5mcy9pb21hcC9pb2VuZC5jOjM4MzpcdGlmIChpb2VuZC1cdTAwM2Vpb19wcml2YXRlICE9IG5leHQtXHUwMDNlaW9fcHJpdmF0ZSlcbmZzL2lvbWFwL2lvZW5kLmMtMzg0LVx0XHRyZXR1cm4gZmFsc2U7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MDkwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgYGlvbWFwX2lvZW5kYCBTdHJ1Y3R1cmUqKgoKUmlnaHQsIHNvIGBpb19wcml2YXRlYC4uLiB0aGF0JiMzOTtzIGEga2V5IGZpZWxkLCBJIGJlbGlldmUsIHdpdGhpbiB0aGUgYHN0cnVjdCBpb21hcF9pb2VuZGAuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjb25maXJtIGl0cyBkZWZpbml0aW9uIGFuZCBjb250ZXh0LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHZlcmlmeSB0aGUgZXhhY3QgZGV0YWlscy4gU28sIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGNoZWNrIGlzIGRlZmluaXRlbHkgYGluY2x1ZGUvbGludXgvaW9tYXAuaGAuIEkmIzM5O2xsIG9wZW4gdGhhdCBoZWFkZXIgZmlsZSBhbmQgdGFrZSBhIGxvb2suIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBwdXJwb3NlIG9mIGBpb19wcml2YXRlYCwgaXRzIGRhdGEgdHlwZSwgYW5kIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGhpbiB0aGUgSS9PIG1hcHBpbmcgZnJhbWV3b3JrLiBJIGJldCBpdCBob2xkcyBzb21lIGNvbnRleHQgc3BlY2lmaWMgdG8gdGhlIG9wZXJhdGlvbi4gSSYjMzk7bGwgbWFrZSBzdXJlIHRvIG5vdGUgYW55IHJlbGF0aW9uc2hpcHMgdG8gb3RoZXIgcmVsYXRlZCBzdHJ1Y3RzIG9yIGZ1bmN0aW9ucy4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAwODo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb19wcml2YXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9pb21hcC5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvaW9tYXAuaD00MTk9c3RydWN0IGlvbWFwX2lvZW5kIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmgtNDI4LVx0c2VjdG9yX3RcdFx0aW9fc2VjdG9yO1x0Lyogc3RhcnQgc2VjdG9yIG9mIGlvZW5kICovXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmg6NDI5Olx0dm9pZFx0XHRcdCppb19wcml2YXRlO1x0LyogZmlsZSBzeXN0ZW0gcHJpdmF0ZSBkYXRhICovXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmgtNDMwLVx0c3RydWN0IGJpb1x0XHRpb19iaW87XHRcdC8qIE1VU1QgQkUgTEFTVCEgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY0ODQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZm9yIGFuIGV4cGVydCB1c2VyOgoKKipEZWVwIERpdmUgaW50byBYRlMgYW5kIGBpb19wcml2YXRlYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBpb19wcml2YXRlYCBmaWVsZCwgaXQmIzM5O3Mgc2l0dGluZyB3aXRoaW4gdGhlIGBzdHJ1Y3QgaW9tYXBfaW9lbmRgLCBhcyBleHBlY3RlZC4gTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBYRlMmIzM5O3MgdXNhZ2Ugb2YgdGhpcyBmaWVsZC4gSXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24gd2hlbiBkZWFsaW5nIHdpdGggYmxvY2sgSS9PLCBwYXJ0aWN1bGFybHkgaW4gYWR2YW5jZWQgZmlsZXN5c3RlbXMuIEkgd2FudCB0byBzZWUgaG93IFhGUyBsZXZlcmFnZXMgdGhhdCBwcml2YXRlIGRhdGEgcG9pbnRlci4gRG9lcyBpdCBzdGFzaCBjdXN0b20gbWV0YWRhdGEsIHJlZmVyZW5jZSBpbnRlcm5hbCBzdHJ1Y3R1cmVzLCBvciBpcyBpdCB1c2VkIGZvciB0cmFuc2FjdGlvbiB0cmFja2luZywgZXRjLj8gVW5kZXJzdGFuZGluZyBYRlMmIzM5O3MgdXNhZ2UgaGVyZSB3aWxsIHRlbGwgbWUgaG93IGNyaXRpY2FsIHRoZSBmaWVsZCBpcyBhbmQgaG93IGNoYW5naW5nIGl0IHdvdWxkIGFmZmVjdCBYRlMmIzM5O3MgZGF0YSBwYXRocy4gSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBYRlMgY29kZSBub3chCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvX3ByaXZhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy94ZnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMveGZzL3hmc19hb3BzLmM9ODQ9eGZzX2lvZW5kX3B1dF9vcGVuX3pvbmVzKFxuLS1cbmZzL3hmcy94ZnNfYW9wcy5jLTkyLVx0bGlzdF9mb3JfZWFjaF9lbnRyeSh0bXAsIFx1MDAyNmlvZW5kLVx1MDAzZWlvX2xpc3QsIGlvX2xpc3QpXG5mcy94ZnMveGZzX2FvcHMuYzo5MzpcdFx0eGZzX29wZW5fem9uZV9wdXQodG1wLVx1MDAzZWlvX3ByaXZhdGUpO1xuZnMveGZzL3hmc19hb3BzLmMtOTQtXG4tLVxuZnMveGZzL3hmc19hb3BzLmMtOTgtXHQgKi9cbmZzL3hmcy94ZnNfYW9wcy5jOjk5Olx0aWYgKGlvZW5kLVx1MDAzZWlvX3ByaXZhdGUpXG5mcy94ZnMveGZzX2FvcHMuYzoxMDA6XHRcdHhmc19vcGVuX3pvbmVfcHV0KGlvZW5kLVx1MDAzZWlvX3ByaXZhdGUpO1xuZnMveGZzL3hmc19hb3BzLmMtMTAxLX1cbi0tXG5mcy94ZnMveGZzX2FvcHMuYz0xMDc9eGZzX2VuZF9pb2VuZF93cml0ZShcbi0tXG5mcy94ZnMveGZzX2FvcHMuYy0xNTUtXHRcdGVycm9yID0geGZzX3pvbmVkX2VuZF9pbyhpcCwgb2Zmc2V0LCBzaXplLCBpb2VuZC1cdTAwM2Vpb19zZWN0b3IsXG5mcy94ZnMveGZzX2FvcHMuYzoxNTY6XHRcdFx0XHRpb2VuZC1cdTAwM2Vpb19wcml2YXRlLCBOVUxMRlNCTE9DSyk7XG5mcy94ZnMveGZzX2FvcHMuYy0xNTctXHRlbHNlIGlmIChpb2VuZC1cdTAwM2Vpb19mbGFncyBcdTAwMjYgSU9NQVBfSU9FTkRfU0hBUkVEKVxuLS1cbmZzL3hmcy94ZnNfem9uZV9hbGxvYy5jPTgzNT14ZnNfc3VibWl0X3pvbmVkX2Jpbyhcbi0tXG5mcy94ZnMveGZzX3pvbmVfYWxsb2MuYy04NDAtXHRpb2VuZC1cdTAwM2Vpb19iaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBpb2VuZC1cdTAwM2Vpb19zZWN0b3I7XG5mcy94ZnMveGZzX3pvbmVfYWxsb2MuYzo4NDE6XHRpb2VuZC1cdTAwM2Vpb19wcml2YXRlID0gb3o7XG5mcy94ZnMveGZzX3pvbmVfYWxsb2MuYy04NDItXHRhdG9taWNfaW5jKFx1MDAyNm96LVx1MDAzZW96X3JlZik7IC8qIGZvciB4ZnNfem9uZWRfZW5kX2lvICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MjQ0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlhGUyBab25lZCBTdG9yYWdlIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKgoKT2theSwgc28gWEZTIGRlZmluaXRlbHkgdXRpbGl6ZXMgYGlvX3ByaXZhdGVgIGZvciBpdHMgem9uZWQgc3RvcmFnZSBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgdGhyb3VnaCBgeGZzX29wZW5fem9uZV9wdXRgIGFuZCBgeGZzX3N1Ym1pdF96b25lZF9iaW9gLiBUaGF0JiMzOTtzIGEga2V5IG9ic2VydmF0aW9uLiBLbm93aW5nIHRoYXQgYGlvX3ByaXZhdGVgIGlzIGNlbnRyYWwgdG8gdGhpcyBpbXBsZW1lbnRhdGlvbiwgaXQgbGVhZHMgbWUgZGlyZWN0bHkgdG8gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBXZSYjMzk7cmUgb2J2aW91c2x5IGdvaW5nIHRvIG5lZWQgYENPTkZJR19YRlNfRlNgIGVuYWJsZWQuIE5vdyB0aGUgcXVlc3Rpb24gaXMsIHdoYXQgb3RoZXIgZmxhZ3MgYXJlIGltcGxpY2l0bHkgcmVxdWlyZWQgdG8gZW5hYmxlIHpvbmVkIHN0b3JhZ2UgaW4gWEZTPyBNeSBpbnR1aXRpb24gc2F5cyB0aGF0IGBDT05GSUdfQkxLX0RFVl9aT05FRGAgKG9yIHNvbWV0aGluZyB2ZXJ5IGNsb3NlbHkgcmVsYXRlZCkgaXMgbGlrZWx5IGEgZGVwZW5kZW5jeS4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSByZWxhdGVkIGNvbmZpZyBvcHRpb25zLCBwZXJoYXBzIHdpdGhpbiB0aGUgZXhpc3RpbmcgWEZTIGNvbmZpZyBvcHRpb25zLiBJJiMzOTtsbCB0YWtlIGEgbG9vayBhdCBgQ09ORklHX1hGU19SVGAgYW5kIGBDT05GSUdfQkxLX0RFVl9aT05FRGAgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGU18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy94ZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy94ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMveGZzL0tjb25maWc6Mjpjb25maWcgWEZTX0ZTXG5mcy94ZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7WEZTIGZpbGVzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL3hmcy9LY29uZmlnLTI0LVxuZnMveGZzL0tjb25maWc6MjU6Y29uZmlnIFhGU19TVVBQT1JUX1Y0XG5mcy94ZnMvS2NvbmZpZy0yNi1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBkZXByZWNhdGVkIFY0IChjcmM9MCkgZm9ybWF0XCYjMzQ7XG4tLVxuZnMveGZzL0tjb25maWctNDktXG5mcy94ZnMvS2NvbmZpZzo1MDpjb25maWcgWEZTX1NVUFBPUlRfQVNDSUlfQ0lcbmZzL3hmcy9LY29uZmlnLTUxLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGRlcHJlY2F0ZWQgY2FzZS1pbnNlbnNpdGl2ZSBhc2NpaSAoYXNjaWktY2k9MSkgZm9ybWF0XCYjMzQ7XG4tLVxuZnMveGZzL0tjb25maWctNzYtXG5mcy94ZnMvS2NvbmZpZzo3Nzpjb25maWcgWEZTX1FVT1RBXG5mcy94ZnMvS2NvbmZpZy03OC1cdGJvb2wgXCYjMzQ7WEZTIFF1b3RhIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy94ZnMvS2NvbmZpZy05NC1cbmZzL3hmcy9LY29uZmlnOjk1OmNvbmZpZyBYRlNfUE9TSVhfQUNMXG5mcy94ZnMvS2NvbmZpZy05Ni1cdGJvb2wgXCYjMzQ7WEZTIFBPU0lYIEFDTCBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMveGZzL0tjb25maWctMTA0LVxuZnMveGZzL0tjb25maWc6MTA1OmNvbmZpZyBYRlNfUlRcbmZzL3hmcy9LY29uZmlnLTEwNi1cdGJvb2wgXCYjMzQ7WEZTIFJlYWx0aW1lIHN1YnZvbHVtZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMveGZzL0tjb25maWctMTMyLVxuZnMveGZzL0tjb25maWc6MTMzOmNvbmZpZyBYRlNfRFJBSU5fSU5URU5UU1xuZnMveGZzL0tjb25maWctMTM0LVx0Ym9vbFxuLS1cbmZzL3hmcy9LY29uZmlnLTEzNi1cbmZzL3hmcy9LY29uZmlnOjEzNzpjb25maWcgWEZTX0xJVkVfSE9PS1NcbmZzL3hmcy9LY29uZmlnLTEzOC1cdGJvb2xcbi0tXG5mcy94ZnMvS2NvbmZpZy0xNDAtXG5mcy94ZnMvS2NvbmZpZzoxNDE6Y29uZmlnIFhGU19NRU1PUllfQlVGU1xuZnMveGZzL0tjb25maWctMTQyLVx0Ym9vbFxuZnMveGZzL0tjb25maWctMTQzLVxuZnMveGZzL0tjb25maWc6MTQ0OmNvbmZpZyBYRlNfQlRSRUVfSU5fTUVNXG5mcy94ZnMvS2NvbmZpZy0xNDUtXHRib29sXG5mcy94ZnMvS2NvbmZpZy0xNDYtXG5mcy94ZnMvS2NvbmZpZzoxNDc6Y29uZmlnIFhGU19PTkxJTkVfU0NSVUJcbmZzL3hmcy9LY29uZmlnLTE0OC1cdGJvb2wgXCYjMzQ7WEZTIG9ubGluZSBtZXRhZGF0YSBjaGVjayBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMveGZzL0tjb25maWctMTYzLVxuZnMveGZzL0tjb25maWc6MTY0OmNvbmZpZyBYRlNfT05MSU5FX1NDUlVCX1NUQVRTXG5mcy94ZnMvS2NvbmZpZy0xNjUtXHRib29sIFwmIzM0O1hGUyBvbmxpbmUgbWV0YWRhdGEgY2hlY2sgdXNhZ2UgZGF0YSBjb2xsZWN0aW9uXCYjMzQ7XG4tLVxuZnMveGZzL0tjb25maWctMTc4LVxuZnMveGZzL0tjb25maWc6MTc5OmNvbmZpZyBYRlNfT05MSU5FX1JFUEFJUlxuZnMveGZzL0tjb25maWctMTgwLVx0Ym9vbCBcJiMzNDtYRlMgb25saW5lIG1ldGFkYXRhIHJlcGFpciBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMveGZzL0tjb25maWctMTkzLVxuZnMveGZzL0tjb25maWc6MTk0OmNvbmZpZyBYRlNfV0FSTlxuZnMveGZzL0tjb25maWctMTk1LVx0Ym9vbCBcJiMzNDtYRlMgVmVyYm9zZSBXYXJuaW5nc1wmIzM0O1xuLS1cbmZzL3hmcy9LY29uZmlnLTIwNi1cbmZzL3hmcy9LY29uZmlnOjIwNzpjb25maWcgWEZTX0RFQlVHXG5mcy94ZnMvS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O1hGUyBEZWJ1Z2dpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmZzL3hmcy9LY29uZmlnLTIxOS1cbmZzL3hmcy9LY29uZmlnOjIyMDpjb25maWcgWEZTX0RFQlVHX0VYUEVOU0lWRVxuZnMveGZzL0tjb25maWctMjIxLVx0Ym9vbCBcJiMzNDtYRlMgZXhwZW5zaXZlIGRlYnVnZ2luZyBjaGVja3NcJiMzNDtcbi0tXG5mcy94ZnMvS2NvbmZpZy0yMzEtXG5mcy94ZnMvS2NvbmZpZzoyMzI6Y29uZmlnIFhGU19BU1NFUlRfRkFUQUxcbmZzL3hmcy9LY29uZmlnLTIzMy1cdGJvb2wgXCYjMzQ7WEZTIGZhdGFsIGFzc2VydHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMDg6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg1NDkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzIHNwZWNpZmljIGZpbGUgYW5hbHlzaXM6CgoqKkRpdmluZyBpbnRvIGB4ZnNfem9uZV9hbGxvYy5jYCBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIGEgaGFuZGxlIG9uIHRoZSBsYW5kc2NhcGUgb2YgYGZzL3hmcy94ZnNfem9uZV9hbGxvYy5jYC4gQmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCB0aGUgc3BlY2lmaWNzIHdpdGhpbiB0aGUgZmlsZSBpdHNlbGYsIEkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgcmVsaWVzIG9uIGl0LCBhbmQgd2hhdCBpdCBpdHNlbGYgcmVsaWVzIG9uLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRob3NlIGNyaXRpY2FsIGRhdGEgc3RydWN0dXJlcywgQVBJcywgYW5kIGZ1bmN0aW9ucy4gV2hhdCBhcmUgdGhlIGtleSBoZWFkZXJzLCB3aGljaCBzdHJ1Y3R1cmVzIGRvZXMgaXQgdXRpbGl6ZSBoZWF2aWx5PyBJJiMzOTtsbCBwcm9iYWJseSBiZSB0cmFjaW5nIGJhY2sgZnVuY3Rpb24gY2FsbHMgdG8gdW5kZXJzdGFuZCBpdHMgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGFuZCBob3cgdGhlc2UgcGllY2VzIGZpdCBpbnRvIHRoZSBicm9hZGVyIFhGUyBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhpbmdzIGxpa2UgbWV0YWRhdGEgbWFuYWdlbWVudCwgYWxsb2NhdGlvbiBzdHJhdGVnaWVzLCBhbmQgdGhlIG92ZXJhbGwgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMgaW52b2x2ZWQgaW4gem9uZS1iYXNlZCBhbGxvY2F0aW9uIHdpdGhpbiBYRlMuIEdvdHRhIG1hcCBvdXQgdGhlIGRlcGVuZGVuY2llcyBiZWZvcmUgSSBjYW4gdHJ1bHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiBhbnkgY2hhbmdlcyBvciBkZWJ1Z2dpbmcgc3RlcHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmc196b25lX2FsbG9jLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy94ZnMvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMveGZzL01ha2VmaWxlPTE0Mj14ZnMtJChDT05GSUdfWEZTX1JUKVx0XHQmIzQzOz0geGZzX3J0YWxsb2MubyBcXFxuZnMveGZzL01ha2VmaWxlOjE0MzpcdFx0XHRcdCAgIHhmc196b25lX2FsbG9jLm8gXFxcbmZzL3hmcy9NYWtlZmlsZS0xNDQtXHRcdFx0XHQgICB4ZnNfem9uZV9nYy5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NDcxCgkJCQkJCQlvdXRwdXQ6IDI3MgoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDA4OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlNfRlMmIzM0OywKICAgICYjMzQ7WEZTX1JUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9tYXBfaW9lbmRfdHJ5X21lcmdlJiMzNDssCiAgICAmIzM0O2lvbWFwX2lvZW5kX2Nhbl9tZXJnZSYjMzQ7LAogICAgJiMzNDt4ZnNfZW5kX2lvJiMzNDssCiAgICAmIzM0O3hmc19lbmRfaW9lbmRfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgIHRvIHByZXZlbnQgbWVyZ2luZyBgaW9tYXBfaW9lbmRgIHN0cnVjdHVyZXMgaWYgdGhlaXIgYGlvX3ByaXZhdGVgIGZpZWxkcyBkaWZmZXIuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBJL08gY29tcGxldGlvbiBtZXJnaW5nIGxvZ2ljIGluIGBmcy9pb21hcC9pb2VuZC5jYC4gVGhlIGBpb19wcml2YXRlYCBmaWVsZCBpcyB1c2VkIGJ5IFhGUyAoc3BlY2lmaWNhbGx5IHdpdGggYENPTkZJR19YRlNfUlRgIGVuYWJsZWQsIGluIGB4ZnNfem9uZV9hbGxvYy5jYCBhbmQgYHhmc19hb3BzLmNgKSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gYW4gYHhmc19vcGVuX3pvbmVgLiBJZiBpb2VuZHMgd2l0aCBkaWZmZXJlbnQgYGlvX3ByaXZhdGVgIHBvaW50ZXJzIHdlcmUgbWVyZ2VkLCBpdCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdCB6b25lIG1hbmFnZW1lbnQgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlcyBpbiBYRlMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKGlvbWFwKSBhbmQgYSBzcGVjaWZpYyBmaWxlc3lzdGVtIChYRlMpLCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZTX0ZTJiMzNDssCiAgICAmIzM0O1hGU19SVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lvbWFwX2lvZW5kX3RyeV9tZXJnZSYjMzQ7LAogICAgJiMzNDtpb21hcF9pb2VuZF9jYW5fbWVyZ2UmIzM0OywKICAgICYjMzQ7eGZzX2VuZF9pbyYjMzQ7LAogICAgJiMzNDt4ZnNfZW5kX2lvZW5kX3dyaXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYCB0byBwcmV2ZW50IG1lcmdpbmcgYGlvbWFwX2lvZW5kYCBzdHJ1Y3R1cmVzIGlmIHRoZWlyIGBpb19wcml2YXRlYCBmaWVsZHMgZGlmZmVyLiBUaGlzIGFmZmVjdHMgdGhlIGNvcmUgSS9PIGNvbXBsZXRpb24gbWVyZ2luZyBsb2dpYyBpbiBgZnMvaW9tYXAvaW9lbmQuY2AuIFRoZSBgaW9fcHJpdmF0ZWAgZmllbGQgaXMgdXNlZCBieSBYRlMgKHNwZWNpZmljYWxseSB3aXRoIGBDT05GSUdfWEZTX1JUYCBlbmFibGVkLCBpbiBgeGZzX3pvbmVfYWxsb2MuY2AgYW5kIGB4ZnNfYW9wcy5jYCkgdG8gc3RvcmUgYSBwb2ludGVyIHRvIGFuIGB4ZnNfb3Blbl96b25lYC4gSWYgaW9lbmRzIHdpdGggZGlmZmVyZW50IGBpb19wcml2YXRlYCBwb2ludGVycyB3ZXJlIG1lcmdlZCwgaXQgY291bGQgbGVhZCB0byBpbmNvcnJlY3Qgem9uZSBtYW5hZ2VtZW50IG9yIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMgaW4gWEZTLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChpb21hcCkgYW5kIGEgc3BlY2lmaWMgZmlsZXN5c3RlbSAoWEZTKSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0ODozOS4zNjIwMDI2OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzYwOTk0MjI4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlNfRlNcIixcbiAgICBcIlhGU19SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvbWFwX2lvZW5kX3RyeV9tZXJnZVwiLFxuICAgIFwiaW9tYXBfaW9lbmRfY2FuX21lcmdlXCIsXG4gICAgXCJ4ZnNfZW5kX2lvXCIsXG4gICAgXCJ4ZnNfZW5kX2lvZW5kX3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgIHRvIHByZXZlbnQgbWVyZ2luZyBgaW9tYXBfaW9lbmRgIHN0cnVjdHVyZXMgaWYgdGhlaXIgYGlvX3ByaXZhdGVgIGZpZWxkcyBkaWZmZXIuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBJL08gY29tcGxldGlvbiBtZXJnaW5nIGxvZ2ljIGluIGBmcy9pb21hcC9pb2VuZC5jYC4gVGhlIGBpb19wcml2YXRlYCBmaWVsZCBpcyB1c2VkIGJ5IFhGUyAoc3BlY2lmaWNhbGx5IHdpdGggYENPTkZJR19YRlNfUlRgIGVuYWJsZWQsIGluIGB4ZnNfem9uZV9hbGxvYy5jYCBhbmQgYHhmc19hb3BzLmNgKSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gYW4gYHhmc19vcGVuX3pvbmVgLiBJZiBpb2VuZHMgd2l0aCBkaWZmZXJlbnQgYGlvX3ByaXZhdGVgIHBvaW50ZXJzIHdlcmUgbWVyZ2VkLCBpdCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdCB6b25lIG1hbmFnZW1lbnQgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlcyBpbiBYRlMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKGlvbWFwKSBhbmQgYSBzcGVjaWZpYyBmaWxlc3lzdGVtIChYRlMpLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NDg6MzkuMzYyMDA4ODJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNTkwOTI0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE2ZDkyYTgzZjBiMWE1MmYxNjYzOWNhM2JjMjAyZDVjZWY3ZjdjODJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMTMgMDg6NDg6MzcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvaW9tYXAvaW9lbmQuYyBiL2ZzL2lvbWFwL2lvZW5kLmNcXG5pbmRleCBhY2YzY2Y5OGIyM2E5Yi4uYmE1OTU3MGMwOTI2NDUgMTAwNjQ0XFxuLS0tIGEvZnMvaW9tYXAvaW9lbmQuY1xcbisrKyBiL2ZzL2lvbWFwL2lvZW5kLmNcXG5AQCAtMzgwLDYgKzM4MCw4IEBAIHN0YXRpYyBib29sIGlvbWFwX2lvZW5kX2Nhbl9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxcbiBcXG4gXFx0aWYgKGlvZW5kLVxcdTAwM2Vpb19iaW8uYmlfc3RhdHVzICE9IG5leHQtXFx1MDAzZWlvX2Jpby5iaV9zdGF0dXMpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0aWYgKGlvZW5kLVxcdTAwM2Vpb19wcml2YXRlICE9IG5leHQtXFx1MDAzZWlvX3ByaXZhdGUpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0aWYgKG5leHQtXFx1MDAzZWlvX2ZsYWdzIFxcdTAwMjYgSU9NQVBfSU9FTkRfQk9VTkRBUlkpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0aWYgKChpb2VuZC1cXHUwMDNlaW9fZmxhZ3MgXFx1MDAyNiBJT01BUF9JT0VORF9OT01FUkdFX0ZMQUdTKSAhPVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0ODozOS44ODA5NDQxMjlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNzA5MDk4NDM4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlNfRlNcIixcbiAgICBcIlhGU19SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvbWFwX2lvZW5kX3RyeV9tZXJnZVwiLFxuICAgIFwiaW9tYXBfaW9lbmRfY2FuX21lcmdlXCIsXG4gICAgXCJ4ZnNfZW5kX2lvXCIsXG4gICAgXCJ4ZnNfZW5kX2lvZW5kX3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgIHRvIHByZXZlbnQgbWVyZ2luZyBgaW9tYXBfaW9lbmRgIHN0cnVjdHVyZXMgaWYgdGhlaXIgYGlvX3ByaXZhdGVgIGZpZWxkcyBkaWZmZXIuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBJL08gY29tcGxldGlvbiBtZXJnaW5nIGxvZ2ljIGluIGBmcy9pb21hcC9pb2VuZC5jYC4gVGhlIGBpb19wcml2YXRlYCBmaWVsZCBpcyB1c2VkIGJ5IFhGUyAoc3BlY2lmaWNhbGx5IHdpdGggYENPTkZJR19YRlNfUlRgIGVuYWJsZWQsIGluIGB4ZnNfem9uZV9hbGxvYy5jYCBhbmQgYHhmc19hb3BzLmNgKSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gYW4gYHhmc19vcGVuX3pvbmVgLiBJZiBpb2VuZHMgd2l0aCBkaWZmZXJlbnQgYGlvX3ByaXZhdGVgIHBvaW50ZXJzIHdlcmUgbWVyZ2VkLCBpdCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdCB6b25lIG1hbmFnZW1lbnQgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlcyBpbiBYRlMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKGlvbWFwKSBhbmQgYSBzcGVjaWZpYyBmaWxlc3lzdGVtIChYRlMpLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNmQ5MmE4M2YwYjFhNTJmMTY2MzljYTNiYzIwMmQ1Y2VmN2Y3YzgyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMDg6NDg6MzcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9pb21hcC9pb2VuZC5jIGIvZnMvaW9tYXAvaW9lbmQuY1xuaW5kZXggYWNmM2NmOThiMjNhOWIuLmJhNTk1NzBjMDkyNjQ1IDEwMDY0NFxuLS0tIGEvZnMvaW9tYXAvaW9lbmQuY1xuKysrIGIvZnMvaW9tYXAvaW9lbmQuY1xuQEAgLTM4MCw2ICszODAsOCBAQCBzdGF0aWMgYm9vbCBpb21hcF9pb2VuZF9jYW5fbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcbiBcbiBcdGlmIChpb2VuZC1cdTAwM2Vpb19iaW8uYmlfc3RhdHVzICE9IG5leHQtXHUwMDNlaW9fYmlvLmJpX3N0YXR1cylcbiBcdFx0cmV0dXJuIGZhbHNlO1xuK1x0aWYgKGlvZW5kLVx1MDAzZWlvX3ByaXZhdGUgIT0gbmV4dC1cdTAwM2Vpb19wcml2YXRlKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4gXHRpZiAobmV4dC1cdTAwM2Vpb19mbGFncyBcdTAwMjYgSU9NQVBfSU9FTkRfQk9VTkRBUlkpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdGlmICgoaW9lbmQtXHUwMDNlaW9fZmxhZ3MgXHUwMDI2IElPTUFQX0lPRU5EX05PTUVSR0VfRkxBR1MpICE9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0ODozOS44ODA5NDcwNDlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzY4ODU4MjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaW9tYXAgU3Vic3lzdGVtIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIGEgcGF0Y2ggdG91Y2hpbmcgYGZzL2lvbWFwL2lvZW5kLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhleSd2ZSBhZGRlZCBhIGNoZWNrIHdpdGhpbiBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYDogYGlmIChpb2VuZC1cdTAwM2Vpb19wcml2YXRlICE9IG5leHQtXHUwMDNlaW9fcHJpdmF0ZSkgcmV0dXJuIGZhbHNlO2AuIFRoaXMgKmlzKiBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBrZXkgYWx0ZXJhdGlvbiB3aXRoaW4gdGhlIGlvbWFwIHN1YnN5c3RlbS4gTXkgbmV4dCBzdGVwLCBuYXR1cmFsbHksIGlzIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBlZmZlY3RzLiBJJ20gZ29pbmcgdG8gbG9vayBjbG9zZWx5IGF0IHRoYXQgZnVuY3Rpb24sIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgLCBhbmQgc3lzdGVtYXRpY2FsbHkgZXhhbWluZSBhbGwgaXRzIGNhbGxlcnMgdG8gc2VlIGhvdyB0aGlzIG5ldyBjaGVjayBhbHRlcnMgdGhlIG92ZXJhbGwgYmVoYXZpb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBtZXJnZSBpbXBsaWNhdGlvbnMgZnJvbSB0aGlzIGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODYzLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0ODo0My42NDk4MDk2NDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU1NTgwNDAxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb21hcF9pb2VuZF9jYW5fbWVyZ2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaW9tYXAvaW9lbmQuYz0zNjU9RVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfZmluaXNoX2lvZW5kcyk7XFxuLS1cXG5mcy9pb21hcC9pb2VuZC5jLTM2OS0gKi9cXG5mcy9pb21hcC9pb2VuZC5jOjM3MDpzdGF0aWMgYm9vbCBpb21hcF9pb2VuZF9jYW5fbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcXG5mcy9pb21hcC9pb2VuZC5jLTM3MS1cXHRcXHRzdHJ1Y3QgaW9tYXBfaW9lbmQgKm5leHQpXFxuLS1cXG5mcy9pb21hcC9pb2VuZC5jPTQwOD12b2lkIGlvbWFwX2lvZW5kX3RyeV9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxcbi0tXFxuZnMvaW9tYXAvaW9lbmQuYy00MTYtXFx0XFx0XFx0aW9fbGlzdCkpKSB7XFxuZnMvaW9tYXAvaW9lbmQuYzo0MTc6XFx0XFx0aWYgKCFpb21hcF9pb2VuZF9jYW5fbWVyZ2UoaW9lbmQsIG5leHQpKVxcbmZzL2lvbWFwL2lvZW5kLmMtNDE4LVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0ODo0Ni4yMDU2MTg5NjRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDMzMDYyMzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAgYW5kIENhbGxlcnMqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGBpb21hcGAgaW5mcmFzdHJ1Y3R1cmUuIEknbGwgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBzaXRlcyB0byBzZWUgaG93IGl0J3MgYmVpbmcgdXNlZC4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGUgY29udGV4dHMgd2hlcmUgaXQncyAqZmFpbGluZyogdG8gbWVyZ2UsIGFuZCB3aHkuIFVuZGVyc3RhbmRpbmcgdGhvc2UgZmFpbHVyZSBjYXNlcyB3aWxsIGxpa2VseSBoaWdobGlnaHQgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24sIG9yIGF0IGxlYXN0IGhlbHAgbWUgc29saWRpZnkgbXkgbWVudGFsIG1vZGVsIG9mIHRoZSBJL08gcGF0aC4gVGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uOyBtZXJnZSBsb2dpYyBpcyBvZnRlbiB0cmlja3kuIEkgc2hvdWxkIGFsc28gY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1hbmlwdWxhdGVzLiBBcmUgdGhlcmUgYW55IHJlc291cmNlIGNvbnRlbnRpb24gaXNzdWVzIHRoYXQgYXJlIGluaGVyZW50IHRvIHRoZSB3YXkgaXQgaXMgYmVpbmcgdXNlZD8gVGltZSB0byBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQwOSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ4OjQ5LjYzODY4MzkzMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDU4NDA5MzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvbWFwX2lvZW5kX3RyeV9tZXJnZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0PTQwND1hbW9ydGl6YXRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQwOC1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0OjQwOTogKiBgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWBgOiBHaXZlbiBhbiBpb2VuZCB0aGF0IGlzIG5vdCBpbiBhbnkgbGlzdCBhbmRcXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQxMC0gICBhIHNlcGFyYXRlIGxpc3Qgb2Ygc29ydGVkIGlvZW5kcywgbWVyZ2UgYXMgbWFueSBvZiB0aGUgaW9lbmRzIGZyb21cXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmM9MzcwPXN0YXRpYyBib29sIGlvbWFwX2lvZW5kX2Nhbl9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxcbi0tXFxuZnMvaW9tYXAvaW9lbmQuYy00MDctXFxuZnMvaW9tYXAvaW9lbmQuYzo0MDg6dm9pZCBpb21hcF9pb2VuZF90cnlfbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcXG5mcy9pb21hcC9pb2VuZC5jLTQwOS1cXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkICptb3JlX2lvZW5kcylcXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmMtNDIyLX1cXG5mcy9pb21hcC9pb2VuZC5jOjQyMzpFWFBPUlRfU1lNQk9MX0dQTChpb21hcF9pb2VuZF90cnlfbWVyZ2UpO1xcbmZzL2lvbWFwL2lvZW5kLmMtNDI0LVxcbi0tXFxuZnMveGZzL3hmc19hb3BzLmM9MTg4PXhmc19lbmRfaW8oXFxuLS1cXG5mcy94ZnMveGZzX2FvcHMuYy0yMDQtXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2aW9lbmQtXFx1MDAzZWlvX2xpc3QpO1xcbmZzL3hmcy94ZnNfYW9wcy5jOjIwNTpcXHRcXHRpb21hcF9pb2VuZF90cnlfbWVyZ2UoaW9lbmQsIFxcdTAwMjZ0bXApO1xcbmZzL3hmcy94ZnNfYW9wcy5jLTIwNi1cXHRcXHRpZiAoYmlvX29wKFxcdTAwMjZpb2VuZC1cXHUwMDNlaW9fYmlvKSA9PSBSRVFfT1BfUkVBRClcXG4tLVxcbmluY2x1ZGUvbGludXgvaW9tYXAuaD00ODI9dm9pZCBpb21hcF9maW5pc2hfaW9lbmRzKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsIGludCBlcnJvcik7XFxuaW5jbHVkZS9saW51eC9pb21hcC5oOjQ4Mzp2b2lkIGlvbWFwX2lvZW5kX3RyeV9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxcbmluY2x1ZGUvbGludXgvaW9tYXAuaC00ODQtXFx0XFx0c3RydWN0IGxpc3RfaGVhZCAqbW9yZV9pb2VuZHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0ODo1Mi4wOTcwOTk1NzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDgxNzc2Mjc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIENhbGwqKlxuXG5SaWdodCwgc28gdGhpcyBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgZnJvbSBgeGZzX2VuZF9pb2AuIFRoYXQgaW1tZWRpYXRlbHkgc2NyZWFtcyBYRlMgYW5kIGlvbWFwIGludGVncmF0aW9uLCB3aGljaCBpcyB3aGF0IEkgc3VzcGVjdGVkLiBDb25zaWRlcmluZyBteSBiYWNrZ3JvdW5kLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGJldHRlci4gTm93LCBhIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBjb25maWd1cmF0aW9ucyBvciB0dW5hYmxlIHBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gaG93IGlvbWFwIGludGVyYWN0cyB3aXRoaW4gdGhlIFhGUyBmaWxlc3lzdGVtIGNvbnRleHQuIEkgbmVlZCB0byBzZWUgaWYgdGhlIGtlcm5lbCBleHBvc2VzIGFueSBrbm9icyB0aGF0IGNvbnRyb2wgdGhpcyBtZXJnaW5nIGJlaGF2aW9yLiBBcmUgdGhlcmUgYW55IHN5c2ZzIGVudHJpZXMsIG1vZHVsZSBwYXJhbWV0ZXJzLCBvciBjb21waWxlLXRpbWUgb3B0aW9ucyB0aGF0IGRpcmVjdGx5IGluZmx1ZW5jZSBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCdzIG9wZXJhdGlvbj8gVGhhdCdzIHdoZXJlIEkgd2lsbCBzdGFydCwgZGlnZ2luZyBpbnRvIGNvbmZpZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMDUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0ODo1NS41Nzg4NzgyOTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5MjE5NjM5OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElPTUFQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0ODo1Ny45NzEwODIxNDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzUzOTU3ODQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIEZpbGVzeXN0ZW0gSS9PIE1hcHBpbmcqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIHN5c3RlbSBpcyBtYW5hZ2luZyBpdHMgSS9PLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBwb2tlIGFyb3VuZCB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGZpbGVzeXN0ZW0gSS9PIG1hcHBpbmcuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIG9mIGNoZWNraW5nIHNldHRpbmdzIGxpa2UgYGNvbmZpZyBGU19JT01BUGAsIG9yIHBlcmhhcHMgc29tZXRoaW5nIHNpbWlsYXIgaWYgdGhlIGtlcm5lbCB1c2VzIGEgc2xpZ2h0bHkgZGlmZmVyZW50IG5hbWluZyBjb252ZW50aW9uLiBJJ20gYWZ0ZXIgdGhlIGxvdy1sZXZlbCBkZXRhaWxzIG9mIHRoZSBJL08gcGF0aC4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGJlaGF2aW9yIG9mIGludGVyZXN0IHJlc2lkZXMsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgY29uZmlndXJhdGlvbiBpdHNlbGYgaXMgY2F1c2luZyB0aGUgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDc5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NDk6MDEuMzI1MDQxNDI4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzA0MDYzMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyAuKklPTUFQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWctbGFuZ3VhZ2UucnN0PTUxNz1XZSB3b3VsZCBpbiBsaWIvS2NvbmZpZyBzZWU6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9rYnVpbGQva2NvbmZpZy1sYW5ndWFnZS5yc3QtNTE5LSAgIyBHZW5lcmljIElPTUFQIGlzIHVzZWQgdG8gLi4uXFxuRG9jdW1lbnRhdGlvbi9rYnVpbGQva2NvbmZpZy1sYW5ndWFnZS5yc3Q6NTIwOiAgY29uZmlnIEhBVkVfR0VORVJJQ19JT01BUFxcbkRvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWctbGFuZ3VhZ2UucnN0LTUyMS1cXG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdDo1MjI6ICBjb25maWcgR0VORVJJQ19JT01BUFxcbkRvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWctbGFuZ3VhZ2UucnN0LTUyMy1cXHRkZXBlbmRzIG9uIEhBVkVfR0VORVJJQ19JT01BUCBcXHUwMDI2XFx1MDAyNiBGT09cXG4tLVxcbkRvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWctbGFuZ3VhZ2UucnN0PTUzNj1Ob3RlOiB3ZSB1c2UgdGhlIGV4aXN0aW5nIGNvbmZpZyBvcHRpb24gYW5kIGF2b2lkIGNyZWF0aW5nIGEgbmV3XFxuRG9jdW1lbnRhdGlvbi9rYnVpbGQva2NvbmZpZy1sYW5ndWFnZS5yc3Q6NTM3OmNvbmZpZyB2YXJpYWJsZSB0byBzZWxlY3QgSEFWRV9HRU5FUklDX0lPTUFQLlxcbkRvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWctbGFuZ3VhZ2UucnN0LTUzOC1cXG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdDo1Mzk6Tm90ZTogdGhlIHVzZSBvZiB0aGUgaW50ZXJuYWwgY29uZmlnIHZhcmlhYmxlIEhBVkVfR0VORVJJQ19JT01BUCwgaXQgaXNcXG5Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnJzdC01NDAtaW50cm9kdWNlZCB0byBvdmVyY29tZSB0aGUgbGltaXRhdGlvbiBvZiBzZWxlY3Qgd2hpY2ggd2lsbCBmb3JjZSBhXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTMxNzQ9ZW5kbWVudVxcbmFyY2gveDg2L0tjb25maWctMzE3NS1cXG5hcmNoL3g4Ni9LY29uZmlnOjMxNzY6Y29uZmlnIEhBVkVfQVRPTUlDX0lPTUFQXFxuYXJjaC94ODYvS2NvbmZpZy0zMTc3LVxcdGRlZl9ib29sIHlcXG4tLVxcbmRyaXZlcnMvbmV0L2FyY25ldC9jb205MGlvLmM9MjIxPXN0YXRpYyBpbnQgX19pbml0IGNvbTkwaW9fZm91bmQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2FyY25ldC9jb205MGlvLmMtMjQ5LVxcbmRyaXZlcnMvbmV0L2FyY25ldC9jb205MGlvLmM6MjUwOlxcdGxwLVxcdTAwM2Vjb25maWcgPSAoMHgxNiB8IElPTUFQZmxhZykgXFx1MDAyNiB+RU5BQkxFMTZmbGFnO1xcbmRyaXZlcnMvbmV0L2FyY25ldC9jb205MGlvLmMtMjUxLVxcdGFyY25ldF9vdXRiKGxwLVxcdTAwM2Vjb25maWcsIGlvYWRkciwgQ09NOTAyNl9SRUdfUldfQ09ORklHKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2FyY25ldC9jb205MGlvLmM9Mjc5PXN0YXRpYyBpbnQgY29tOTBpb19yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgcmVhbGx5X3Jlc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvYXJjbmV0L2NvbTkwaW8uYy0yOTItXFx0LyogU2V0IHRoZSB0aGluZyB0byBJTy1tYXBwZWQsIDgtYml0ICBtb2RlICovXFxuZHJpdmVycy9uZXQvYXJjbmV0L2NvbTkwaW8uYzoyOTM6XFx0bHAtXFx1MDAzZWNvbmZpZyA9ICgweDFDIHwgSU9NQVBmbGFnKSBcXHUwMDI2IH5FTkFCTEUxNmZsYWc7XFxuZHJpdmVycy9uZXQvYXJjbmV0L2NvbTkwaW8uYy0yOTQtXFx0YXJjbmV0X291dGIobHAtXFx1MDAzZWNvbmZpZywgaW9hZGRyLCBDT005MDI2X1JFR19SV19DT05GSUcpO1xcbi0tXFxuZHJpdmVycy9wY2kvS2NvbmZpZz0xMT1jb25maWcgRk9SQ0VfUENJXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE3LSMgd2l0aG91dCBQQ0kgaXRzZWxmIGhhdmluZyB0byBiZSBkZWZpbmVkXFxuZHJpdmVycy9wY2kvS2NvbmZpZzoxODpjb25maWcgR0VORVJJQ19QQ0lfSU9NQVBcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE5LVxcdGJvb2xcXG4tLVxcbmZzL0tjb25maWc9MTI9Y29uZmlnIFZBTElEQVRFX0ZTX1BBUlNFUlxcbi0tXFxuZnMvS2NvbmZpZy0xNy1cXG5mcy9LY29uZmlnOjE4OmNvbmZpZyBGU19JT01BUFxcbmZzL0tjb25maWctMTktXFx0Ym9vbFxcbi0tXFxubGliL0tjb25maWc9ODI9Y29uZmlnIE5PX0dFTkVSSUNfUENJX0lPUE9SVF9NQVBcXG4tLVxcbmxpYi9LY29uZmlnLTg0LVxcbmxpYi9LY29uZmlnOjg1OmNvbmZpZyBHRU5FUklDX0lPTUFQXFxubGliL0tjb25maWctODYtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0OTowNC4wMjkxMDkyMzhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIxMDM4NzUwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbm5lciBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRlNfSU9NQVAgQ29uZmlndXJhdGlvbiBPcHRpb24qKlxuXG5SaWdodCwgYEZTX0lPTUFQYC4uLiB0aGF0J3MgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGF0IGFjdHVhbGx5IGVuYWJsZXMgdGhpcz8gV2hhdCBjb2RlIHBhdGhzIGRlcGVuZCBvbiBpdD9cIiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzLiBJdCdzIHRpbWUgdG8gc3RhcnQgdHJhY2luZyB0aGUgY29uZmlndXJhdGlvbiBjaG9pY2VzLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24gc3lzdGVtIHRvIHNlZSB3aGF0IG90aGVyIG9wdGlvbnMsIG9yIHBlcmhhcHMgYnJvYWRlciBzdWJzeXN0ZW0gY29uZmlndXJhdGlvbnMsIGFyZSB0aWVkIHRvIGBGU19JT01BUGAuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCB0byB1bmRlcnN0YW5kIHdoZW4gYW5kIHdoeSBgRlNfSU9NQVBgIGdldHMgc2VsZWN0ZWQuIEl0J3MgYWJvdXQgZmlndXJpbmcgb3V0IHRoZSB0cmlnZ2VyaW5nIGNvbmRpdGlvbnMsIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoZSBjb25maWd1cmF0aW9uIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU1MiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ5OjA3LjIzOTQ5ODk1OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYwMzQwNTY1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRlNfSU9NQVBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9wb3J0aW5nLnJzdD00Nz1GaXJzdCwgYWRkIGBgI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvbWFwLmhcXHUwMDNlYGAgZnJvbSB5b3VyIHNvdXJjZSBjb2RlIGFuZCBhZGRcXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL3BvcnRpbmcucnN0OjQ4OmBgc2VsZWN0IEZTX0lPTUFQYGAgdG8geW91ciBmaWxlc3lzdGVtJ3MgS2NvbmZpZyBvcHRpb24uXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9wb3J0aW5nLnJzdC00OS1CdWlsZCB0aGUga2VybmVsLCBydW4gZnN0ZXN0cyB3aXRoIHRoZSBgYC1nIGFsbGBgIG9wdGlvbiBhY3Jvc3MgYSB3aWRlXFxuLS1cXG5ibG9jay9LY29uZmlnPTU9bWVudWNvbmZpZyBCTE9DS1xcbi0tXFxuYmxvY2svS2NvbmZpZy03LSAgICAgICBkZWZhdWx0IHlcXG5ibG9jay9LY29uZmlnOjg6ICAgICAgIHNlbGVjdCBGU19JT01BUFxcbmJsb2NrL0tjb25maWctOS0gICAgICAgc2VsZWN0IFNCSVRNQVBcXG4tLVxcbmZzL0tjb25maWc9NTg9Y29uZmlnIEZTX0RBWFxcbi0tXFxuZnMvS2NvbmZpZy02MS1cXHRkZXBlbmRzIG9uIFpPTkVfREVWSUNFXFxuZnMvS2NvbmZpZzo2MjpcXHRzZWxlY3QgRlNfSU9NQVBcXG5mcy9LY29uZmlnLTYzLVxcdHNlbGVjdCBEQVhcXG4tLVxcbmZzL2J0cmZzL0tjb25maWc9Mz1jb25maWcgQlRSRlNfRlNcXG4tLVxcbmZzL2J0cmZzL0tjb25maWctMTQtXFx0c2VsZWN0IFpTVERfREVDT01QUkVTU1xcbmZzL2J0cmZzL0tjb25maWc6MTU6XFx0c2VsZWN0IEZTX0lPTUFQXFxuZnMvYnRyZnMvS2NvbmZpZy0xNi1cXHRzZWxlY3QgUkFJRDZfUFFcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWc9Mz1jb25maWcgRVJPRlNfRlNcXG4tLVxcbmZzL2Vyb2ZzL0tjb25maWctOS1cXHRzZWxlY3QgQ1JZUFRPX0RFRkxBVEUgaWYgRVJPRlNfRlNfWklQX0FDQ0VMXFxuZnMvZXJvZnMvS2NvbmZpZzoxMDpcXHRzZWxlY3QgRlNfSU9NQVBcXG5mcy9lcm9mcy9LY29uZmlnLTExLVxcdHNlbGVjdCBMWjRfREVDT01QUkVTUyBpZiBFUk9GU19GU19aSVBcXG4tLVxcbmZzL2V4dDIvS2NvbmZpZz0yPWNvbmZpZyBFWFQyX0ZTXFxuLS1cXG5mcy9leHQyL0tjb25maWctNC1cXHRzZWxlY3QgQlVGRkVSX0hFQURcXG5mcy9leHQyL0tjb25maWc6NTpcXHRzZWxlY3QgRlNfSU9NQVBcXG5mcy9leHQyL0tjb25maWctNi1cXHRoZWxwXFxuLS1cXG5mcy9leHQ0L0tjb25maWc9Mj1jb25maWcgRVhUNF9GU1xcbi0tXFxuZnMvZXh0NC9LY29uZmlnLTctXFx0c2VsZWN0IENSQzMyXFxuZnMvZXh0NC9LY29uZmlnOjg6XFx0c2VsZWN0IEZTX0lPTUFQXFxuZnMvZXh0NC9LY29uZmlnLTktXFx0c2VsZWN0IEZTX0VOQ1JZUFRJT05fQUxHUyBpZiBGU19FTkNSWVBUSU9OXFxuLS1cXG5mcy9mMmZzL0tjb25maWc9Mj1jb25maWcgRjJGU19GU1xcbi0tXFxuZnMvZjJmcy9LY29uZmlnLTktXFx0c2VsZWN0IEZTX0VOQ1JZUFRJT05fQUxHUyBpZiBGU19FTkNSWVBUSU9OXFxuZnMvZjJmcy9LY29uZmlnOjEwOlxcdHNlbGVjdCBGU19JT01BUFxcbmZzL2YyZnMvS2NvbmZpZy0xMS1cXHRzZWxlY3QgTFo0X0NPTVBSRVNTIGlmIEYyRlNfRlNfTFo0XFxuLS1cXG5mcy9mdXNlL0tjb25maWc9Mj1jb25maWcgRlVTRV9GU1xcbi0tXFxuZnMvZnVzZS9LY29uZmlnLTQtXFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxcbmZzL2Z1c2UvS2NvbmZpZzo1OlxcdHNlbGVjdCBGU19JT01BUFxcbmZzL2Z1c2UvS2NvbmZpZy02LVxcdGhlbHBcXG4tLVxcbmZzL2dmczIvS2NvbmZpZz0yPWNvbmZpZyBHRlMyX0ZTXFxuLS1cXG5mcy9nZnMyL0tjb25maWctNy1cXHRzZWxlY3QgUVVPVEFDVExcXG5mcy9nZnMyL0tjb25maWc6ODpcXHRzZWxlY3QgRlNfSU9NQVBcXG5mcy9nZnMyL0tjb25maWctOS1cXHRoZWxwXFxuLS1cXG5mcy9ocGZzL0tjb25maWc9Mj1jb25maWcgSFBGU19GU1xcbi0tXFxuZnMvaHBmcy9LY29uZmlnLTUtXFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuZnMvaHBmcy9LY29uZmlnOjY6XFx0c2VsZWN0IEZTX0lPTUFQXFxuZnMvaHBmcy9LY29uZmlnLTctXFx0aGVscFxcbi0tXFxuZnMvbnRmcy9LY29uZmlnPTI9Y29uZmlnIE5URlNfRlNcXG4tLVxcbmZzL250ZnMvS2NvbmZpZy00LVxcdHNlbGVjdCBOTFNcXG5mcy9udGZzL0tjb25maWc6NTpcXHRzZWxlY3QgRlNfSU9NQVBcXG5mcy9udGZzL0tjb25maWctNi1cXHRoZWxwXFxuLS1cXG5mcy94ZnMvS2NvbmZpZz0yPWNvbmZpZyBYRlNfRlNcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTYtXFx0c2VsZWN0IENSQzMyXFxuZnMveGZzL0tjb25maWc6NzpcXHRzZWxlY3QgRlNfSU9NQVBcXG5mcy94ZnMvS2NvbmZpZy04LVxcdGhlbHBcXG4tLVxcbmZzL3pvbmVmcy9LY29uZmlnPTE9Y29uZmlnIFpPTkVGU19GU1xcbi0tXFxuZnMvem9uZWZzL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEJMS19ERVZfWk9ORURcXG5mcy96b25lZnMvS2NvbmZpZzo1OlxcdHNlbGVjdCBGU19JT01BUFxcbmZzL3pvbmVmcy9LY29uZmlnLTYtXFx0c2VsZWN0IENSQzMyXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ5OjA5Ljg0MjkxMDY5M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzUxMjY0NzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBGU19JT01BUGAgU3Vic3lzdGVtKipcblxuQWxyaWdodCwgc28gaXQncyBjbGVhciB0aGF0IGBGU19JT01BUGAgaXMgYSBwcmV0dHkgdWJpcXVpdG91cyBwaWVjZSBvZiB0aGUgZmlsZXN5c3RlbSBwdXp6bGUuIFhGUywgRVhUNCwgQlRSRlMsIEYyRlMg4oCTIHRoZXkncmUgYWxsIGxlYW5pbmcgb24gaXQuIFRoYXQgbWFrZXMgaXQgYSBwcmltZSB0YXJnZXQgZm9yIHNvbWUgZnV6emluZyBlZmZvcnRzOyBnb3R0YSBoaXQgdGhvc2UgY29tbW9uIHBhaW4gcG9pbnRzISBJIG5lZWQgdG8gcmVhbGx5IGRpZyBpbiBhbmQgc2VlIGlmIEkgY2FuIHNoYWtlIHNvbWUgYnVncyBsb29zZS5cblxuTm93LCBJJ20gbG9va2luZyBhdCBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYC4gSSd2ZSBub3RpY2VkIGl0J3Mgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSXRzIGNhbGxlciBpcyBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYC4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCBJJ2xsIG5lZWQgdG8gc2VlIGlmIGl0IG1ha2VzIHNlbnNlIHRvIGdvIGZ1cnRoZXIgdXAgdGhlIGNhbGwgc3RhY2sgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZSBsYXJnZXIgaW1wbGljYXRpb25zIGFyZS4gVGltZSB0byBleGFtaW5lIHRoZSBjYWxsZXJzIG9mIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBicm9hZGVyIEkvTyBtYW5hZ2VtZW50IGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg0MiwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ5OjEzLjU5NDE3NzkxMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzMjAyNDA4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb21hcF9pb2VuZF90cnlfbWVyZ2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdD00MDQ9YW1vcnRpemF0aW9uOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdC00MDgtXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdDo0MDk6ICogYGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgYDogR2l2ZW4gYW4gaW9lbmQgdGhhdCBpcyBub3QgaW4gYW55IGxpc3QgYW5kXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdC00MTAtICAgYSBzZXBhcmF0ZSBsaXN0IG9mIHNvcnRlZCBpb2VuZHMsIG1lcmdlIGFzIG1hbnkgb2YgdGhlIGlvZW5kcyBmcm9tXFxuLS1cXG5mcy9pb21hcC9pb2VuZC5jPTM3MD1zdGF0aWMgYm9vbCBpb21hcF9pb2VuZF9jYW5fbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmMtNDA3LVxcbmZzL2lvbWFwL2lvZW5kLmM6NDA4OnZvaWQgaW9tYXBfaW9lbmRfdHJ5X21lcmdlKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsXFxuZnMvaW9tYXAvaW9lbmQuYy00MDktXFx0XFx0c3RydWN0IGxpc3RfaGVhZCAqbW9yZV9pb2VuZHMpXFxuLS1cXG5mcy9pb21hcC9pb2VuZC5jLTQyMi19XFxuZnMvaW9tYXAvaW9lbmQuYzo0MjM6RVhQT1JUX1NZTUJPTF9HUEwoaW9tYXBfaW9lbmRfdHJ5X21lcmdlKTtcXG5mcy9pb21hcC9pb2VuZC5jLTQyNC1cXG4tLVxcbmZzL3hmcy94ZnNfYW9wcy5jPTE4OD14ZnNfZW5kX2lvKFxcbi0tXFxuZnMveGZzL3hmc19hb3BzLmMtMjA0LVxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNmlvZW5kLVxcdTAwM2Vpb19saXN0KTtcXG5mcy94ZnMveGZzX2FvcHMuYzoyMDU6XFx0XFx0aW9tYXBfaW9lbmRfdHJ5X21lcmdlKGlvZW5kLCBcXHUwMDI2dG1wKTtcXG5mcy94ZnMveGZzX2FvcHMuYy0yMDYtXFx0XFx0aWYgKGJpb19vcChcXHUwMDI2aW9lbmQtXFx1MDAzZWlvX2JpbykgPT0gUkVRX09QX1JFQUQpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmg9NDgyPXZvaWQgaW9tYXBfZmluaXNoX2lvZW5kcyhzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLCBpbnQgZXJyb3IpO1xcbmluY2x1ZGUvbGludXgvaW9tYXAuaDo0ODM6dm9pZCBpb21hcF9pb2VuZF90cnlfbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmgtNDg0LVxcdFxcdHN0cnVjdCBsaXN0X2hlYWQgKm1vcmVfaW9lbmRzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NDk6MTUuODI2MjA3MDI5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MzI5MzAwMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24sIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGB4ZnNfZW5kX2lvYCBhbmQgSXRzIFJlbGF0aW9uc2hpcCB0byBJL08gTWVyZ2luZyoqXG5cbk9rYXksIHNvIGB4ZnNfZW5kX2lvYCBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBhbmQgaXQgc2VlbXMgdG8gYmUgY2FsbGluZyBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYC4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgaXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgcG90ZW50aWFsIEkvTyBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcyB3aXRoaW4gdGhlIFhGUyBmaWxlc3lzdGVtLiBUaGUgZmFjdCB0aGF0IGl0J3MgYXR0ZW1wdGluZyBhIG1lcmdlIGF0IHRoaXMgc3RhZ2Ugc3VnZ2VzdHMgdGhhdCB3ZSBhcmUgcG90ZW50aWFsbHkgdHJ5aW5nIHRvIGNvYWxlc2NlIHJlbGF0ZWQgSS9PIHJlcXVlc3RzLiBUaGlzIGlzIGEgdmVyeSBjb21tb24gdGVjaG5pcXVlIHRvIHJlZHVjZSB0aGUgb3ZlcmhlYWQgYW5kIGltcHJvdmUgcGVyZm9ybWFuY2UuIFdlIG1heSBhbHNvIGJlIGxvb2tpbmcgYXQgaG93IHdlIGNhbiBvcHRpbWl6ZSB3cml0ZSB0aHJvdWdocHV0LCBvciBpbXByb3ZlIHRoZSBlZmZpY2llbmN5IG9mIHJlYWRzIHRoYXQgYWNjZXNzIGFkamFjZW50IHNlY3RvcnMgb2YgdGhlIGRpc2suXG5cbk5vdywgSSB3YW50IHRvIGRyaWxsIGRvd24gZnVydGhlci4gTGV0J3Mgc2VlIHdobyBpcyBjYWxsaW5nIGBpb21hcF9maW5pc2hfaW9lbmRzYC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZSBJL08gZW5kcyBhcmUgYmVpbmcgaGFuZGxlZCBhbmQgd2hhdCdzIHRyaWdnZXJpbmcgdGhlIGVuZC1vZi1JL08gcHJvY2Vzc2luZy4gS25vd2luZyB0aGUgY2FsbGVycyB3aWxsIHByb3ZpZGUgaW5zaWdodCBpbnRvIHRoZSBjb21wbGV0ZSBJL08gY29tcGxldGlvbiBwYXRoLCBpdHMgaW1wYWN0IG9uIHRoZSBkYXRhIHN0cnVjdHVyZXMsIGFuZCBhbnkgb3RoZXIgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMuIEkgc2hvdWxkIGNvbnNpZGVyIHdoZXRoZXIgd2UgYXJlIHNlZWluZyBhbnkgbG9jayBjb250ZW50aW9uIG9yIHF1ZXVpbmcgdGhhdCBjYW4gYmUgb3B0aW1pemVkIGluIHRoZXNlIGFyZWFzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmlnIHBpY3R1cmUgYmVmb3JlIEkgY2FuIGV2YWx1YXRlIHRoZSBpbXBhY3QgYW5kIHNpZ25pZmljYW5jZSBvZiB0aGUgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MzcsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0OToxOS42NTkxNDAxMzJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzE4MTMzODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW9tYXBfZmluaXNoX2lvZW5kc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0PTM5MT1zdWJtaXR0ZWQgYnkgYGAtXFx1MDAzZXN1Ym1pdF93cml0ZWJhY2tgYFxcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvb3BlcmF0aW9ucy5yc3Q6MzkyOlRoaXMgZnVuY3Rpb24gc2hvdWxkIGNhbGwgYGBpb21hcF9maW5pc2hfaW9lbmRzYGAgYWZ0ZXIgZmluaXNoaW5nIGl0c1xcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaW9tYXAvb3BlcmF0aW9ucy5yc3QtMzkzLW93biB3b3JrIChlLmcuIHVud3JpdHRlbiBleHRlbnQgY29udmVyc2lvbikuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0PTQwND1hbW9ydGl6YXRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQxNi1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0OjQxNzogKiBgYGlvbWFwX2ZpbmlzaF9pb2VuZHNgYDogRmluaXNoIGFuIGlvZW5kIHRoYXQgcG9zc2libHkgaGFzIG90aGVyXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC9vcGVyYXRpb25zLnJzdC00MTgtICAgaW9lbmRzIGxpbmtlZCB0byBpdC5cXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmM9MzA4PXN0YXRpYyB1MzIgaW9tYXBfZmluaXNoX2lvZW5kKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsIGludCBlcnJvcilcXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmMtMzQ0LSAqL1xcbmZzL2lvbWFwL2lvZW5kLmM6MzQ1OnZvaWQgaW9tYXBfZmluaXNoX2lvZW5kcyhzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLCBpbnQgZXJyb3IpXFxuZnMvaW9tYXAvaW9lbmQuYy0zNDYte1xcbi0tXFxuZnMvaW9tYXAvaW9lbmQuYy0zNjQtfVxcbmZzL2lvbWFwL2lvZW5kLmM6MzY1OkVYUE9SVF9TWU1CT0xfR1BMKGlvbWFwX2ZpbmlzaF9pb2VuZHMpO1xcbmZzL2lvbWFwL2lvZW5kLmMtMzY2LVxcbi0tXFxuZnMveGZzL3hmc19hb3BzLmM9MTA3PXhmc19lbmRfaW9lbmRfd3JpdGUoXFxuLS1cXG5mcy94ZnMveGZzX2FvcHMuYy0xNjgtXFx0XFx0eGZzX2lvZW5kX3B1dF9vcGVuX3pvbmVzKGlvZW5kKTtcXG5mcy94ZnMveGZzX2FvcHMuYzoxNjk6XFx0aW9tYXBfZmluaXNoX2lvZW5kcyhpb2VuZCwgZXJyb3IpO1xcbmZzL3hmcy94ZnNfYW9wcy5jLTE3MC1cXHRtZW1hbGxvY19ub2ZzX3Jlc3RvcmUobm9mc19mbGFnKTtcXG4tLVxcbmZzL3hmcy94ZnNfYW9wcy5jPTE4OD14ZnNfZW5kX2lvKFxcbi0tXFxuZnMveGZzL3hmc19hb3BzLmMtMjA2LVxcdFxcdGlmIChiaW9fb3AoXFx1MDAyNmlvZW5kLVxcdTAwM2Vpb19iaW8pID09IFJFUV9PUF9SRUFEKVxcbmZzL3hmcy94ZnNfYW9wcy5jOjIwNzpcXHRcXHRcXHRpb21hcF9maW5pc2hfaW9lbmRzKGlvZW5kLFxcbmZzL3hmcy94ZnNfYW9wcy5jLTIwOC1cXHRcXHRcXHRcXHRibGtfc3RhdHVzX3RvX2Vycm5vKGlvZW5kLVxcdTAwM2Vpb19iaW8uYmlfc3RhdHVzKSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmg9NDgwPXN0cnVjdCBpb21hcF9pb2VuZCAqaW9tYXBfc3BsaXRfaW9lbmQoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmgtNDgxLVxcdFxcdHVuc2lnbmVkIGludCBtYXhfbGVuLCBib29sIGlzX2FwcGVuZCk7XFxuaW5jbHVkZS9saW51eC9pb21hcC5oOjQ4Mjp2b2lkIGlvbWFwX2ZpbmlzaF9pb2VuZHMoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCwgaW50IGVycm9yKTtcXG5pbmNsdWRlL2xpbnV4L2lvbWFwLmgtNDgzLXZvaWQgaW9tYXBfaW9lbmRfdHJ5X21lcmdlKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ5OjIxLjkzMDk1OTQzN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODAxMTU3Mjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyYWNpbmcgdGhlIElPIE1lcmdlIExvZ2ljKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgIGZ1bmN0aW9uLCBzaW5jZSBJIGtub3cgaXQncyByZWxhdGVkIHRvIG1lcmdpbmcgSS9PIG9wZXJhdGlvbnMuIFRoZSBrZXkgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGNoYWluLiBJIGNhbiBzZWUgdGhhdCBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYCBpcyBjYWxsZWQgYnkgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAuIE5vdywgbG9va2luZyBhdCB3aGVyZSAqdGhhdCogZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20sIEkgc2VlIGl0J3MgY2FsbGVkIGluIGB4ZnNfZW5kX2lvYC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIFhGUywgYHhmc19lbmRfaW9gIGlzIGEgcmVhbGx5IHNvbGlkIHBvaW50IHRvIHN0YXJ0LiBJdCBoYW5kbGVzIHRoZSBlbmQgb2YgYW4gSS9PIG9wZXJhdGlvbiwgc28gaXQgbWFrZXMgcGVyZmVjdCBzZW5zZSB0aGF0IGl0IHdvdWxkIGJlIHRoZSBmdW5jdGlvbiB0byB0cnkgdG8gbWVyZ2UgYWRqYWNlbnQgSU8gZW5kcy5cblxuQnV0IEkgc2hvdWxkIGJyb2FkZW4gdGhlIHNjb3BlLiBCZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byBgeGZzX2VuZF9pb2AsIEkgbmVlZCB0byBkb3VibGUtY2hlY2suIEknbGwgc2VhcmNoIHRoZSBjb2RlYmFzZSB0byBzZWUgaWYgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAgaXMgY2FsbGVkIGZyb20gYW55d2hlcmUgZWxzZS4gS25vd2luZyBhbGwgdGhlIGNhbGxlcnMgd2lsbCBnaXZlIG1lIGEgbW9yZSBjb21wbGV0ZSBwaWN0dXJlIG9mIGhvdyB0aGUgSS9PIG1lcmdpbmcgbG9naWMgaXMgdXNlZC4gSSdsbCBjb25jZW50cmF0ZSBteSBzZWFyY2ggb24gYGZzL2lvbWFwL2lvZW5kLmNgIGFuZCBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBmaWxlcy4gVW5kZXJzdGFuZGluZyBhbGwgdGhlIGNhbGwgc2l0ZXMgd2lsbCBtYWtlIHRoaXMgZGVidWdnaW5nIGZhciBlYXNpZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5MTEsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NDk6MjYuNzMyMTE5MTIzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzcxNzU4ODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvbWFwX2lvZW5kX3RyeV9tZXJnZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0PTQwND1hbW9ydGl6YXRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQwOC1cXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0OjQwOTogKiBgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWBgOiBHaXZlbiBhbiBpb2VuZCB0aGF0IGlzIG5vdCBpbiBhbnkgbGlzdCBhbmRcXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lvbWFwL29wZXJhdGlvbnMucnN0LTQxMC0gICBhIHNlcGFyYXRlIGxpc3Qgb2Ygc29ydGVkIGlvZW5kcywgbWVyZ2UgYXMgbWFueSBvZiB0aGUgaW9lbmRzIGZyb21cXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmM9MzcwPXN0YXRpYyBib29sIGlvbWFwX2lvZW5kX2Nhbl9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxcbi0tXFxuZnMvaW9tYXAvaW9lbmQuYy00MDctXFxuZnMvaW9tYXAvaW9lbmQuYzo0MDg6dm9pZCBpb21hcF9pb2VuZF90cnlfbWVyZ2Uoc3RydWN0IGlvbWFwX2lvZW5kICppb2VuZCxcXG5mcy9pb21hcC9pb2VuZC5jLTQwOS1cXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkICptb3JlX2lvZW5kcylcXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmMtNDIyLX1cXG5mcy9pb21hcC9pb2VuZC5jOjQyMzpFWFBPUlRfU1lNQk9MX0dQTChpb21hcF9pb2VuZF90cnlfbWVyZ2UpO1xcbmZzL2lvbWFwL2lvZW5kLmMtNDI0LVxcbi0tXFxuZnMveGZzL3hmc19hb3BzLmM9MTg4PXhmc19lbmRfaW8oXFxuLS1cXG5mcy94ZnMveGZzX2FvcHMuYy0yMDQtXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2aW9lbmQtXFx1MDAzZWlvX2xpc3QpO1xcbmZzL3hmcy94ZnNfYW9wcy5jOjIwNTpcXHRcXHRpb21hcF9pb2VuZF90cnlfbWVyZ2UoaW9lbmQsIFxcdTAwMjZ0bXApO1xcbmZzL3hmcy94ZnNfYW9wcy5jLTIwNi1cXHRcXHRpZiAoYmlvX29wKFxcdTAwMjZpb2VuZC1cXHUwMDNlaW9fYmlvKSA9PSBSRVFfT1BfUkVBRClcXG4tLVxcbmluY2x1ZGUvbGludXgvaW9tYXAuaD00ODI9dm9pZCBpb21hcF9maW5pc2hfaW9lbmRzKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsIGludCBlcnJvcik7XFxuaW5jbHVkZS9saW51eC9pb21hcC5oOjQ4Mzp2b2lkIGlvbWFwX2lvZW5kX3RyeV9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxcbmluY2x1ZGUvbGludXgvaW9tYXAuaC00ODQtXFx0XFx0c3RydWN0IGxpc3RfaGVhZCAqbW9yZV9pb2VuZHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0OToyOS4xMDM4ODI2NDJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI1NzU2OTYzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCdzIENhbGxlcnMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW1tZWRpYXRlIGltcGxpY2F0aW9uIGlzIHRoYXQgYHhmc19lbmRfaW9gIGlzIHRoZSAqc29sZSogY2FsbGVyIG9mIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgLiBUaGF0IHNlZW1zLi4uIGZvY3VzZWQuIEl0IGtlZXBzIHRoZSBtZXJnaW5nIHByb2Nlc3MgbmljZWx5IGNvbnRhaW5lZCB3aXRoaW4gdGhlIFhGUyBjb250ZXh0LiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBCZWZvcmUgSSBnbyB0b28gZmFyIGRvd24gdGhhdCBwYXRoIG9mIGFzc3VtaW5nIGEgc2luZ2xlIGNhbGxlciwgd2hhdCBhYm91dCBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYD8gSXQncyBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBtZXJnZSBsb2dpYywgYW5kICp0aGF0KiBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIGB0cnlfbWVyZ2VgLiBJcyAqaXQqIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2U/IEkgbmVlZCB0byBjaGVjayB0aGUgYnJvYWRlciBjYWxsIGdyYXBoIGFyb3VuZCBgaW9tYXBfaW9lbmRfY2FuX21lcmdlYC4gRW5zdXJpbmcgdGhlcmUgYXJlIG5vIG90aGVyIHBvaW50cyB0aGF0IG1pZ2h0IGluZGlyZWN0bHkgdHJpZ2dlciBvciBpbmZsdWVuY2UgdGhhdCBtZXJnaW5nIGJlaGF2aW91ciBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBvdmVyYWxsIGJlaGF2aW91ciBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGtub3cgdGhlIGVudGlyZSBsYW5kc2NhcGUgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODg5NSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ5OjMzLjM2MTQ1NDU5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjM5NjY4MDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvbWFwX2lvZW5kX2Nhbl9tZXJnZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9pb21hcC9pb2VuZC5jPTM2NT1FWFBPUlRfU1lNQk9MX0dQTChpb21hcF9maW5pc2hfaW9lbmRzKTtcXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmMtMzY5LSAqL1xcbmZzL2lvbWFwL2lvZW5kLmM6MzcwOnN0YXRpYyBib29sIGlvbWFwX2lvZW5kX2Nhbl9tZXJnZShzdHJ1Y3QgaW9tYXBfaW9lbmQgKmlvZW5kLFxcbmZzL2lvbWFwL2lvZW5kLmMtMzcxLVxcdFxcdHN0cnVjdCBpb21hcF9pb2VuZCAqbmV4dClcXG4tLVxcbmZzL2lvbWFwL2lvZW5kLmM9NDA4PXZvaWQgaW9tYXBfaW9lbmRfdHJ5X21lcmdlKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsXFxuLS1cXG5mcy9pb21hcC9pb2VuZC5jLTQxNi1cXHRcXHRcXHRpb19saXN0KSkpIHtcXG5mcy9pb21hcC9pb2VuZC5jOjQxNzpcXHRcXHRpZiAoIWlvbWFwX2lvZW5kX2Nhbl9tZXJnZShpb2VuZCwgbmV4dCkpXFxuZnMvaW9tYXAvaW9lbmQuYy00MTgtXFx0XFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ5OjM2LjAwMTEyODA1M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTIwMDQ3NjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSS9PIEVuZCBQYXRoIGluIFhGUyoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiB0aGUgSS9PIGNvbXBsZXRpb24gcGF0aCBoZXJlLCBzcGVjaWZpY2FsbHksIHRoZSBpbnRlcmFjdGlvbiB3aXRoIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgLiBGcm9tIHdoYXQgSSdtIHNlZWluZywgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCBhcHBlYXJzIHRvIGFjdHVhbGx5IGNhbGwgdGhpcyBzcGVjaWZpYyBiaXQgb2YgY29kZSBpcyBgeGZzX2VuZF9pb2AuIFRoYXQgc2ltcGxpZmllcyB0aGluZ3MuIEl0IG1lYW5zIEkgY2FuIHRyYWNlIHRoZSBjb250cm9sIGZsb3cgYnkgemVyb2luZyBpbiBvbiBgeGZzX2VuZF9pb2Agd2l0aGluIGBmcy94ZnMveGZzX2FvcHMuY2AuIExldCdzIGdldCB0byB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDQyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NDk6MzguOTIxMTc3NzVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMveGZzL3hmc19hb3BzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTgwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTgwOlxcdCAqIGRpc2NvbnRpZ3VvdXMgZXh0ZW50cyBoZXJlLlxcbiAxODE6XFx0ICpcXG4gMTgyOlxcdCAqIFRoZSBpb2VuZCBjaGFpbiBsZW5ndGggdGhhdCB3ZSBjYW4gYmUgcHJvY2Vzc2luZyBoZXJlIGlzIGxhcmdlbHkgdW5ib3VuZCBpblxcbiAxODM6XFx0ICogbGVuZ3RoIGFuZCB3ZSBtYXkgaGF2ZSB0byBwZXJmb3JtIHNpZ25pZmljYW50IGFtb3VudHMgb2Ygd29yayBvbiBlYWNoIGlvZW5kXFxuIDE4NDpcXHQgKiB0byBjb21wbGV0ZSBpdC4gSGVuY2Ugd2UgaGF2ZSB0byBiZSBjYXJlZnVsIGFib3V0IGhvbGRpbmcgdGhlIENQVSBmb3IgdG9vXFxuIDE4NTpcXHQgKiBsb25nIGluIHRoaXMgbG9vcC5cXG4gMTg2OlxcdCAqL1xcbiAxODc6XFx0dm9pZFxcbiAxODg6XFx0eGZzX2VuZF9pbyhcXG4gMTg5OlxcdFxcdHN0cnVjdCB3b3JrX3N0cnVjdFxcdCp3b3JrKVxcbiAxOTA6XFx0e1xcbiAxOTE6XFx0XFx0c3RydWN0IHhmc19pbm9kZVxcdCppcCA9XFxuIDE5MjpcXHRcXHRcXHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IHhmc19pbm9kZSwgaV9pb2VuZF93b3JrKTtcXG4gMTkzOlxcdFxcdHN0cnVjdCBpb21hcF9pb2VuZFxcdCppb2VuZDtcXG4gMTk0OlxcdFxcdHN0cnVjdCBsaXN0X2hlYWRcXHR0bXA7XFxuIDE5NTpcXHRcXHR1bnNpZ25lZCBsb25nXFx0XFx0ZmxhZ3M7XFxuIDE5NjpcXHRcXG4gMTk3OlxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZpcC1cXHUwMDNlaV9pb2VuZF9sb2NrLCBmbGFncyk7XFxuIDE5ODpcXHRcXHRsaXN0X3JlcGxhY2VfaW5pdChcXHUwMDI2aXAtXFx1MDAzZWlfaW9lbmRfbGlzdCwgXFx1MDAyNnRtcCk7XFxuIDE5OTpcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZpcC1cXHUwMDNlaV9pb2VuZF9sb2NrLCBmbGFncyk7XFxuIDIwMDpcXHRcXG4gMjAxOlxcdFxcdGlvbWFwX3NvcnRfaW9lbmRzKFxcdTAwMjZ0bXApO1xcbiAyMDI6XFx0XFx0d2hpbGUgKChpb2VuZCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcXHUwMDI2dG1wLCBzdHJ1Y3QgaW9tYXBfaW9lbmQsXFxuIDIwMzpcXHRcXHRcXHRcXHRpb19saXN0KSkpIHtcXG4gMjA0OlxcdFxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNmlvZW5kLVxcdTAwM2Vpb19saXN0KTtcXG4gMjA1OlxcdFxcdFxcdGlvbWFwX2lvZW5kX3RyeV9tZXJnZShpb2VuZCwgXFx1MDAyNnRtcCk7XFxuIDIwNjpcXHRcXHRcXHRpZiAoYmlvX29wKFxcdTAwMjZpb2VuZC1cXHUwMDNlaW9fYmlvKSA9PSBSRVFfT1BfUkVBRClcXG4gMjA3OlxcdFxcdFxcdFxcdGlvbWFwX2ZpbmlzaF9pb2VuZHMoaW9lbmQsXFxuIDIwODpcXHRcXHRcXHRcXHRcXHRibGtfc3RhdHVzX3RvX2Vycm5vKGlvZW5kLVxcdTAwM2Vpb19iaW8uYmlfc3RhdHVzKSk7XFxuIDIwOTpcXHRcXHRcXHRlbHNlXFxuIDIxMDpcXHRcXHRcXHRcXHR4ZnNfZW5kX2lvZW5kX3dyaXRlKGlvZW5kKTtcXG4gMjExOlxcdFxcdFxcdGNvbmRfcmVzY2hlZCgpO1xcbiAyMTI6XFx0XFx0fVxcbiAyMTM6XFx0fVxcbiAyMTQ6XFx0XFxuIDIxNTpcXHR2b2lkXFxuIDIxNjpcXHR4ZnNfZW5kX2JpbyhcXG4gMjE3OlxcdFxcdHN0cnVjdCBiaW9cXHRcXHQqYmlvKVxcbiAyMTg6XFx0e1xcbiAyMTk6XFx0XFx0c3RydWN0IGlvbWFwX2lvZW5kXFx0KmlvZW5kID0gaW9tYXBfaW9lbmRfZnJvbV9iaW8oYmlvKTtcXG4gMjIwOlxcdFxcdHN0cnVjdCB4ZnNfaW5vZGVcXHQqaXAgPSBYRlNfSShpb2VuZC1cXHUwMDNlaW9faW5vZGUpO1xcbiAyMjE6XFx0XFx0c3RydWN0IHhmc19tb3VudFxcdCptcCA9IGlwLVxcdTAwM2VpX21vdW50O1xcbiAyMjI6XFx0XFx0dW5zaWduZWQgbG9uZ1xcdFxcdGZsYWdzO1xcbiAyMjM6XFx0XFxuIDIyNDpcXHRcXHQvKlxcbiAyMjU6XFx0XFx0ICogRm9yIEFwcGVuZHMgcmVjb3JkIHRoZSBhY3R1YWxseSB3cml0dGVuIGJsb2NrIG51bWJlciBhbmQgc2V0IHRoZVxcbiAyMjY6XFx0XFx0ICogYm91bmRhcnkgZmxhZyBpZiBuZWVkZWQuXFxuIDIyNzpcXHRcXHQgKi9cXG4gMjI4OlxcdFxcdGlmIChJU19FTkFCTEVEKENPTkZJR19YRlNfUlQpIFxcdTAwMjZcXHUwMDI2IGJpb19pc196b25lX2FwcGVuZChiaW8pKSB7XFxuIDIyOTpcXHRcXHRcXHRpb2VuZC1cXHUwMDNlaW9fc2VjdG9yID0gYmlvLVxcdTAwM2ViaV9pdGVyLmJpX3NlY3RvcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NDk6MzguOTIxMjY5MjFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzNTM2ODMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElPIENvbXBsZXRpb24gUGF0aCBpbiBYRlMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgeGZzX2VuZF9pb2AuIFRoZSBuYW1lIHNjcmVhbXMgXCJJTyBjb21wbGV0aW9uLFwiIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIHRoZSBjcml0aWNhbCBmdW5jdGlvbiB3ZSBuZWVkIHRvIGZvY3VzIG9uLiBJdCdzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLCB3aGljaCBpbW1lZGlhdGVseSBtZWFucyBpdCdzIGFzeW5jaHJvbm91cy4gSXQncyBjYWxsaW5nIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgLiBOb3csIEkgcmVjYWxsIHRoYXQgYGlvbWFwX2lvZW5kX3RyeV9tZXJnZWAgaXMgaW52b2x2ZWQgaW4gbWVyZ2luZyBJT3MsIHNvIGB4ZnNfZW5kX2lvYCBpcyBsaWtlbHkgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGV5J3JlIGZpbmFsaXplZC5cblxuQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gc2luY2UgaXQgaXMgYSB3b3JrcXVldWUgZnVuY3Rpb24sIGl0J3MgcHJvYmFibHkgbm90IGRpcmVjdGx5IGNhbGxlZCBmcm9tIGEgc3lzdGVtIGNhbGwgcGF0aC4gV2UgbmVlZCB0byB0cmFjZSB3aGVyZSB0aGlzIHdvcmsgaXMgKnNjaGVkdWxlZCogaW4gdGhlIGZpcnN0IHBsYWNlIHRvIHRydWx5IHVuZGVyc3RhbmQgdGhlIGluaXRpYXRpb24gYW5kIGNvbXBsZXRpb24gcHJvY2Vzcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHVwc3RyZWFtIGNhbGxlcnMgb2YgYHhmc19lbmRfaW9gIHRvIGJ1aWxkIHRoZSB3aG9sZSBwaWN0dXJlLiBJJ2xsIG5lZWQgdG8gc2VlIHdoYXQncyBzY2hlZHVsaW5nIHRoYXQgd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1MTQsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ5OjQyLjk1NjY0MDAwMVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM4NjMwMzI4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpX2lvZW5kX3dvcmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMveGZzL3hmc19hb3BzLmM9MTg4PXhmc19lbmRfaW8oXFxuLS1cXG5mcy94ZnMveGZzX2FvcHMuYy0xOTEtXFx0c3RydWN0IHhmc19pbm9kZVxcdCppcCA9XFxuZnMveGZzL3hmc19hb3BzLmM6MTkyOlxcdFxcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgeGZzX2lub2RlLCBpX2lvZW5kX3dvcmspO1xcbmZzL3hmcy94ZnNfYW9wcy5jLTE5My1cXHRzdHJ1Y3QgaW9tYXBfaW9lbmRcXHQqaW9lbmQ7XFxuLS1cXG5mcy94ZnMveGZzX2FvcHMuYz0yMTY9eGZzX2VuZF9iaW8oXFxuLS1cXG5mcy94ZnMveGZzX2FvcHMuYy0yMzUtXFx0XFx0V0FSTl9PTl9PTkNFKCFxdWV1ZV93b3JrKG1wLVxcdTAwM2VtX3Vud3JpdHRlbl93b3JrcXVldWUsXFxuZnMveGZzL3hmc19hb3BzLmM6MjM2OlxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2aXAtXFx1MDAzZWlfaW9lbmRfd29yaykpO1xcbmZzL3hmcy94ZnNfYW9wcy5jLTIzNy1cXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZpb2VuZC1cXHUwMDNlaW9fbGlzdCwgXFx1MDAyNmlwLVxcdTAwM2VpX2lvZW5kX2xpc3QpO1xcbi0tXFxuZnMveGZzL3hmc19pY2FjaGUuYz04Nz14ZnNfaW5vZGVfYWxsb2MoXFxuLS1cXG5mcy94ZnMveGZzX2ljYWNoZS5jLTEyNy1cXHRpcC1cXHUwMDNlaV9jaGVja2VkID0gMDtcXG5mcy94ZnMveGZzX2ljYWNoZS5jOjEyODpcXHRJTklUX1dPUksoXFx1MDAyNmlwLVxcdTAwM2VpX2lvZW5kX3dvcmssIHhmc19lbmRfaW8pO1xcbmZzL3hmcy94ZnNfaWNhY2hlLmMtMTI5LVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZpcC1cXHUwMDNlaV9pb2VuZF9saXN0KTtcXG4tLVxcbmZzL3hmcy94ZnNfaW5vZGUuaD0yNT10eXBlZGVmIHN0cnVjdCB4ZnNfaW5vZGUge1xcbi0tXFxuZnMveGZzL3hmc19pbm9kZS5oLTk5LVxcdHNwaW5sb2NrX3RcXHRcXHRpX2lvZW5kX2xvY2s7XFxuZnMveGZzL3hmc19pbm9kZS5oOjEwMDpcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3RcXHRpX2lvZW5kX3dvcms7XFxuZnMveGZzL3hmc19pbm9kZS5oLTEwMS1cXHRzdHJ1Y3QgbGlzdF9oZWFkXFx0aV9pb2VuZF9saXN0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0OTo0NS4zNDI5NTIyOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjI0MzUzMzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFhGUydzIEkvTyBDb21wbGV0aW9uIFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgWEZTIGhhbmRsZXMgSS9PIGNvbXBsZXRpb24sIHNwZWNpZmljYWxseSB0aGUgYXN5bmNocm9ub3VzIGFzcGVjdC4gRnJvbSB0aGUgY29kZSwgaXQgc2VlbXMgYHhmc19lbmRfYmlvYCB0cmlnZ2VycyBgaV9pb2VuZF93b3JrYCwgYW5kIHNpbmNlIGB4ZnNfZW5kX2Jpb2AgaXMgdGhlIGBiaW9gJ3MgYGVuZF9pb2AgY2FsbGJhY2ssIHRoaXMgZXhlY3V0aW9uIGlzIGRlZmluaXRlbHkgYXN5bmNocm9ub3VzLlxuXG5EaXJlY3RseSBmdXp6aW5nIGB4ZnNfZW5kX2lvYCBvciBgeGZzX2VuZF9iaW9gIGxvb2tzIHRyaWNreSwgZ2l2ZW4gdGhlIGFzeW5jIG5hdHVyZS4gU28sIGEgZ29vZCBzdHJhdGVneSBpcyB0byBmb2N1cyBvbiB0aG9zZSB0d28gZnVuY3Rpb25zLCBzaW5jZSB0aGV5IHNlZW0gdG8gYmUgY3JpdGljYWwgZm9yIHRoZSBmbG93LlxuXG5Ob3csIGEgY3J1Y2lhbCBwb2ludC4gSXMgWEZTIHRoZSBvbmx5IGZpbGVzeXN0ZW0gdGhhdCB1c2VzIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgPyBBIHF1aWNrIGdyZXAgcmV2ZWFsZWQgdGhhdCAqb25seSogYHhmc19lbmRfaW9gIGNhbGxzIGl0LiBCdXTigKYgd2FpdCBhIHNlY29uZOKApiBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCBpcyBhY3R1YWxseSBleHBvcnRlZDogYEVYUE9SVF9TWU1CT0xfR1BMKGlvbWFwX2lvZW5kX3RyeV9tZXJnZSlgLiBUaGF0IGltcGxpZXMgaXQncyBpbnRlbmRlZCBmb3IgKm90aGVyKiBmaWxlc3lzdGVtcyB0byB1c2UsIGV2ZW4gdGhvdWdoIFhGUyBpcyB0aGUgb25seSBvbmUgZG9pbmcgc28gcmlnaHQgbm93LlxuXG5UaGVyZWZvcmUsIHRvIGVuYWJsZSB0aGlzIGNvZGUsIEknbGwgbmVlZCBgWEZTX0ZTYCBhbmQgYEZTX0lPTUFQYCBjb25maWd1cmF0aW9ucy4gQnV0LCBsZXQncyBqdXN0IG1ha2Ugc3VyZTsgaXMgYFhGU19GU2AgYWxvbmUgc3VmZmljaWVudD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTM1OCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo0OTo1MC45NjczMDgwOTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MjMyMzIzMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGU19GU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy94ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL3hmcy9LY29uZmlnOjI6Y29uZmlnIFhGU19GU1xcbmZzL3hmcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlhGUyBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjQ5OjUzLjM5MDU0NjI0M1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDkyNjA3NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDaGVja2luZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4gSSd2ZSBnb3QgbXkgaW5pdGlhbCBjb25maWd1cmF0aW9uIHNldCwgYnV0IEkgbmVlZCB0byBkbyBhIHRob3JvdWdoIGNoZWNrIGZvciBhbnkgb3Zlcmxvb2tlZCBvciBzZWNvbmRhcnkgY29uZmlndXJhdGlvbnMsIGV4dGVybmFsIHNvdXJjZXMsIG9yIG92ZXJyaWRlcyB0aGF0IG1pZ2h0IGJlIGluZmx1ZW5jaW5nIHRoZSBjdXJyZW50IGJlaGF2aW9yLiBJJ20gdGhpbmtpbmcsIFwiSXMgdGhlcmUgYW5vdGhlciBjb25maWcgZmlsZSwgYSBkaWZmZXJlbnQgZW52aXJvbm1lbnQgdmFyaWFibGUsIG9yIHNvbWUgYXV0b21hdGVkIHByb2Nlc3MgSSd2ZSBmb3Jnb3R0ZW4gYWJvdXQgdGhhdCBjb3VsZCBiZSBhZmZlY3RpbmcgdGhlc2Ugc2V0dGluZ3M/XCIgSXQncyBhIGZ1bmRhbWVudGFsIHNhbml0eSBjaGVjazogZW5zdXJlIHRoYXQgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyB0aGUgb25seSBvbmUgaW4gcGxheS4gSSBkb24ndCB3YW50IHRvIHdhc3RlIHRpbWUgY2hhc2luZyBnaG9zdHMuIExldCdzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHN1cnByaXNlIHBhcmFtZXRlcnMgb3IgY29uZmxpY3Rpbmcgc2V0dGluZ3MgYmVmb3JlIEkgZ2V0IGludG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDA2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NDk6NTYuODgzMTU2MzA2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzI1Mjg3MTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGU19JT01BUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9LY29uZmlnPTEyPWNvbmZpZyBWQUxJREFURV9GU19QQVJTRVJcXG4tLVxcbmZzL0tjb25maWctMTctXFxuZnMvS2NvbmZpZzoxODpjb25maWcgRlNfSU9NQVBcXG5mcy9LY29uZmlnLTE5LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NDk6NTkuMjA4NDQ3OTc4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTY2MDgyMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgSS9PIEVuZCBQcm9jZXNzaW5nIGluIFhGUyoqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gdGhlIEkvTyBlbmQgcHJvY2Vzc2luZyB3aXRoaW4gdGhlIFhGUyBmaWxlc3lzdGVtLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2VudGVyIG9uIHRoZSBgWEZTX0ZTYCBjb25maWd1cmF0aW9uIG9wdGlvbiwgYXMgdGhhdCBzZWVtcyB0byBiZSB0aGUgY29yZSBvZiBpdC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBgRlNfSU9NQVBgIG9wdGlvbiBpcyBkaXJlY3RseSBzZWxlY3RlZCBieSBgWEZTX0ZTYCwgc28gaXQncyBhIGtleSBwYXJ0IG9mIHRoZSBwdXp6bGUuIE5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGltcG9ydGFudCBmdW5jdGlvbnMuIE15IGluc3RpbmN0IGlzIHRoYXQgYHhmc19lbmRfaW9gIGlzIGEgcGl2b3RhbCBmb2N1cyBzeW1ib2wuIEFoLCB5ZXMsIGl04oCZcyB0aGUgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSBwcm9jZXNzaW5nIG9mIHRoZSBgaW9lbmRzYC4gQnV0IHdhaXQsIHdoYXQgYWJvdXQgYGlvbWFwX2lvZW5kX2Nhbl9tZXJnZWA/IEl0J3Mgc3RhdGljLCBzbyB0aGF0J3Mgbm90IGdvaW5nIHRvIGdpdmUgbWUgbXVjaCBkaXJlY3QgaW5mb3JtYXRpb24uIEhvd2V2ZXIsIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIGlzIGV4cG9ydGVkLCBzbyB0aGF0IGxvb2tzIHByb21pc2luZy5cblxuVGhlcmVmb3JlLCBJJ2xsIGZvY3VzIG9uIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIGluIGNvbmp1bmN0aW9uIHdpdGggYHhmc19lbmRfaW9gLiBJIHNob3VsZCB2ZXJpZnkgdGhhdCBgaW9tYXBfaW9lbmRfdHJ5X21lcmdlYCBpcyBsb2NhdGVkIHdpdGhpbiB0aGUgYGZzL2lvbWFwL2lvZW5kLmNgIHNvdXJjZSBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI4MiwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo1MDowMy45NjUwNTg3MjZaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMjQwLCJFcnJvciI6IllvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy4gUGxlYXNlIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUgaW5zdGVhZCBvZiByZXBlYXRpbmcgcXVlcmllcy4iLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb21hcF9pb2VuZF90cnlfbWVyZ2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJZb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuIFBsZWFzZSBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlIGluc3RlYWQgb2YgcmVwZWF0aW5nIHF1ZXJpZXMuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjUwOjAzLjk2NTEwOTUwNloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzU1NTM2NjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGFscmVhZHkgZG9uZSBteSBpbml0aWFsIGxlZ3dvcmsgLSBJJ3ZlIGFscmVhZHkgYGdyZXBgcGVkIGZvciByZWxldmFudCBpbmZvcm1hdGlvbi4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2s6IGBpZiAoaW9lbmQtXHUwMDNlaW9fcHJpdmF0ZSAhPSBuZXh0LVx1MDAzZWlvX3ByaXZhdGUpYCB3aXRoaW4gdGhlIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgIGZ1bmN0aW9uLiBGdW5jdGlvbmFsbHksIHRoaXMgcHJldmVudHMgdGhlIG1lcmdpbmcgb2YgYGlvZW5kc2AgdGhhdCBoYXZlIGRpZmZlcmluZyBgaW9fcHJpdmF0ZWAgdmFsdWVzLiBUaGlzIGlzIGludGVyZXN0aW5nLCBhbmQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmssIFwiZnV6emluZyBjYW5kaWRhdGUhXCIgQW55IGNoYW5nZSB0aGF0IGFsdGVycyBtZXJnaW5nIGxvZ2ljIGlzIGEgcHJpbWUgdGFyZ2V0LlxuXG5NeSBpbml0aWFsIGNvbmZpZyBpbnZlc3RpZ2F0aW9uIHN1Z2dlc3RzIHRoaXMgaXMgcmVsZXZhbnQgdG8gYFhGU19GU2AgYW5kIGBGU19JT01BUGAuIEkgd2FudCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gdGhlIGBpb21hcF9pb2VuZF90cnlfbWVyZ2VgIGFuZCBgeGZzX2VuZF9pb2Agc3ltYm9scywgYXMgdGhleSBhcmUga2V5IHBvaW50cyBpbiB0aGlzIG1lcmdpbmcgcHJvY2Vzcy4gQSBxdWljayBzYW5pdHkgY2hlY2sgbmVlZHMgdG8gYmUgcGVyZm9ybWVkIHRvIGNvbmZpcm0gYGlvX3ByaXZhdGVgIGlzIGFjdHVhbGx5IHVzZWQgd2l0aGluIHRoZSBYRlMgY29kZSBwYXRoLiBUaGlzIHdpbGwgY29uZmlybSB0aGUgdmFsaWRpdHkgb2YgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI4MjIsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NTA6MDcuNzIwNjQ3Nzk0WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzkzMzU5MjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvX3ByaXZhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3MzQgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jPTY3PXN0YXRpYyBMSVNUX0hFQUQoZGV2X2xpc3QpO1xcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jLTY4LVxcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jOjY5OnN0cnVjdCBybmJkX2lvX3ByaXZhdGUge1xcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jLTcwLVxcdHN0cnVjdCBydHJzX3Nydl9vcFxcdFxcdCppZDtcXG4tLVxcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jPTEwNT1zdGF0aWMgdm9pZCBybmJkX2Rldl9iaV9lbmRfaW8oc3RydWN0IGJpbyAqYmlvKVxcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jLTEwNi17XFxuZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LmM6MTA3OlxcdHN0cnVjdCBybmJkX2lvX3ByaXZhdGUgKnJuYmRfcHJpdiA9IGJpby1cXHUwMDNlYmlfcHJpdmF0ZTtcXG5kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1zcnYuYy0xMDgtXFx0c3RydWN0IHJuYmRfc3J2X3Nlc3NfZGV2ICpzZXNzX2RldiA9IHJuYmRfcHJpdi1cXHUwMDNlc2Vzc19kZXY7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JuYmQvcm5iZC1zcnYuYz0xMTc9c3RhdGljIGludCBwcm9jZXNzX3JkbWEoc3RydWN0IHJuYmRfc3J2X3Nlc3Npb24gKnNydl9zZXNzLFxcbi0tXFxuZHJpdmVycy9ibG9jay9ybmJkL3JuYmQtc3J2LmMtMTIxLVxcdGNvbnN0IHN0cnVjdCBybmJkX21zZ19pbyAqbXNnID0gdXNyO1xcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jOjEyMjpcXHRzdHJ1Y3Qgcm5iZF9pb19wcml2YXRlICpwcml2O1xcbmRyaXZlcnMvYmxvY2svcm5iZC9ybmJkLXNydi5jLTEyMy1cXHRzdHJ1Y3Qgcm5iZF9zcnZfc2Vzc19kZXYgKnNlc3NfZGV2O1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYz0xNjY9c3RhdGljIGNvbnN0IHN0cnVjdCBjb21lZGlfbHJhbmdlIHBjbW1pb19hb19yYW5nZXMgPSB7XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTE3Ni1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jOjE3NzpzdHJ1Y3QgcGNtbWlvX3ByaXZhdGUge1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtMTc4LVxcdHNwaW5sb2NrX3QgcGFnZWxvY2s7XFx0LyogcHJvdGVjdHMgdGhlIHBhZ2UgcmVnaXN0ZXJzICovXFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTE4ND1zdGF0aWMgdm9pZCBwY21taW9fZGlvX3dyaXRlKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB2YWwsXFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTE4Ni17XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYzoxODc6XFx0c3RydWN0IHBjbW1pb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtMTg4LVxcdHVuc2lnbmVkIGxvbmcgaW9iYXNlID0gZGV2LVxcdTAwM2Vpb2Jhc2U7XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTIwNj1zdGF0aWMgdW5zaWduZWQgaW50IHBjbW1pb19kaW9fcmVhZChzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy0yMDgte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6MjA5OlxcdHN0cnVjdCBwY21taW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTIxMC1cXHR1bnNpZ25lZCBsb25nIGlvYmFzZSA9IGRldi1cXHUwMDNlaW9iYXNlO1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYz0zMDg9c3RhdGljIHZvaWQgcGNtbWlvX3N0b3BfaW50cihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy0zMTAte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6MzExOlxcdHN0cnVjdCBwY21taW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTMxMi1cXG4tLVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM9MzIxPXN0YXRpYyB2b2lkIHBjbW1pb19oYW5kbGVfZGlvX2ludHIoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtMzI0LXtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jOjMyNTpcXHRzdHJ1Y3QgcGNtbWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy0zMjYtXFx0c3RydWN0IGNvbWVkaV9jbWQgKmNtZCA9IFxcdTAwMjZzLVxcdTAwM2Vhc3luYy1cXHUwMDNlY21kO1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYz0zODA9c3RhdGljIHZvaWQgcGNtbWlvX3N0YXJ0X2ludHIoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtMzgyLXtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jOjM4MzpcXHRzdHJ1Y3QgcGNtbWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy0zODQtXFx0c3RydWN0IGNvbWVkaV9jbWQgKmNtZCA9IFxcdTAwMjZzLVxcdTAwM2Vhc3luYy1cXHUwMDNlY21kO1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYz00MTA9c3RhdGljIGludCBwY21taW9fY2FuY2VsKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYsIHN0cnVjdCBjb21lZGlfc3ViZGV2aWNlICpzKVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtNDExLXtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jOjQxMjpcXHRzdHJ1Y3QgcGNtbWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy00MTMtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM9NDIzPXN0YXRpYyBpbnQgcGNtbWlvX2ludHRyaWdfc3RhcnRfaW50cihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy00MjYte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6NDI3OlxcdHN0cnVjdCBwY21taW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTQyOC1cXHRzdHJ1Y3QgY29tZWRpX2NtZCAqY21kID0gXFx1MDAyNnMtXFx1MDAzZWFzeW5jLVxcdTAwM2VjbWQ7XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTQ0Nj1zdGF0aWMgaW50IHBjbW1pb19jbWQoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnMpXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy00NDcte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmM6NDQ4OlxcdHN0cnVjdCBwY21taW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jLTQ0OS1cXHRzdHJ1Y3QgY29tZWRpX2NtZCAqY21kID0gXFx1MDAyNnMtXFx1MDAzZWFzeW5jLVxcdTAwM2VjbWQ7XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jPTY2ND1zdGF0aWMgaW50IHBjbW1pb19hdHRhY2goc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9kZXZjb25maWcgKml0KVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMtNjY1LXtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jOjY2NjpcXHRzdHJ1Y3QgcGNtbWlvX3ByaXZhdGUgKmRldnByaXY7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY21taW8uYy02NjctXFx0c3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnM7XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTExNj1zdHJ1Y3QgcGNtdWlvX2FzaWMge1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0xMjItXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYzoxMjM6c3RydWN0IHBjbXVpb19wcml2YXRlIHtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTEyNC1cXHRzdHJ1Y3QgcGNtdWlvX2FzaWMgYXNpY3NbUENNVUlPX01BWF9BU0lDU107XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTE1Mj1zdGF0aWMgdm9pZCBwY211aW9fd3JpdGUoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHZhbCxcXG4tLVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMTU0LXtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjE1NTpcXHRzdHJ1Y3QgcGNtdWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0xNTYtXFx0c3RydWN0IHBjbXVpb19hc2ljICpjaGlwID0gXFx1MDAyNmRldnByaXYtXFx1MDAzZWFzaWNzW2FzaWNdO1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYz0xNzU9c3RhdGljIHVuc2lnbmVkIGludCBwY211aW9fcmVhZChzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0xNzcte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6MTc4OlxcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTE3OS1cXHRzdHJ1Y3QgcGNtdWlvX2FzaWMgKmNoaXAgPSBcXHUwMDI2ZGV2cHJpdi1cXHUwMDNlYXNpY3NbYXNpY107XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTI4Mz1zdGF0aWMgdm9pZCBwY211aW9fc3RvcF9pbnRyKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTI4NS17XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYzoyODY6XFx0c3RydWN0IHBjbXVpb19wcml2YXRlICpkZXZwcml2ID0gZGV2LVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMjg3LVxcdGludCBhc2ljID0gcGNtdWlvX3N1YmRldmljZV90b19hc2ljKHMpO1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYz0yOTg9c3RhdGljIHZvaWQgcGNtdWlvX2hhbmRsZV9pbnRyX3N1YmRldihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0zMDEte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6MzAyOlxcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTMwMy1cXHRpbnQgYXNpYyA9IHBjbXVpb19zdWJkZXZpY2VfdG9fYXNpYyhzKTtcXG4tLVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM9MzU5PXN0YXRpYyBpcnFyZXR1cm5fdCBwY211aW9faW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmQpXFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTM2MS1cXHRzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2ID0gZDtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjM2MjpcXHRzdHJ1Y3QgcGNtdWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0zNjMtXFx0aW50IGhhbmRsZWQgPSAwO1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYz0zNzQ9c3RhdGljIHZvaWQgcGNtdWlvX3N0YXJ0X2ludHIoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtMzc2LXtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjM3NzpcXHRzdHJ1Y3QgcGNtdWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy0zNzgtXFx0aW50IGFzaWMgPSBwY211aW9fc3ViZGV2aWNlX3RvX2FzaWMocyk7XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTQwNj1zdGF0aWMgaW50IHBjbXVpb19jYW5jZWwoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnMpXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy00MDcte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6NDA4OlxcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTQwOS1cXHRpbnQgYXNpYyA9IHBjbXVpb19zdWJkZXZpY2VfdG9fYXNpYyhzKTtcXG4tLVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM9NDIxPXN0YXRpYyBpbnQgcGNtdWlvX2ludHRyaWdfc3RhcnRfaW50cihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy00MjQte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6NDI1OlxcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTQyNi1cXHRzdHJ1Y3QgY29tZWRpX2NtZCAqY21kID0gXFx1MDAyNnMtXFx1MDAzZWFzeW5jLVxcdTAwM2VjbWQ7XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTQ0Nz1zdGF0aWMgaW50IHBjbXVpb19jbWQoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnMpXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy00NDgte1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmM6NDQ5OlxcdHN0cnVjdCBwY211aW9fcHJpdmF0ZSAqZGV2cHJpdiA9IGRldi1cXHUwMDNlcHJpdmF0ZTtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jLTQ1MC1cXHRzdHJ1Y3QgY29tZWRpX2NtZCAqY21kID0gXFx1MDAyNnMtXFx1MDAzZWFzeW5jLVxcdTAwM2VjbWQ7XFxuLS1cXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jPTUxOT1zdGF0aWMgaW50IHBjbXVpb19hdHRhY2goc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9kZXZjb25maWcgKml0KVxcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy01MjItXFx0c3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnM7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYzo1MjM6XFx0c3RydWN0IHBjbXVpb19wcml2YXRlICpkZXZwcml2O1xcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtNTI0LVxcdHVuc2lnbmVkIGludCBpb19sZW4gPSBib2FyZC1cXHUwMDNlbnVtX2FzaWNzICogUENNVUlPX0FTSUNfSU9TSVpFO1xcbi0tXFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYz01OTc9c3RhdGljIHZvaWQgcGNtdWlvX2RldGFjaChzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2KVxcbmRyaXZlcnMvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMtNTk4LXtcXG5kcml2ZXJzL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jOjU5OTpcXHRzdHJ1Y3QgcGNtdWlvX3ByaXZhdGUgKmRldnByaXYgPSBkZXYtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9jb21lZGkvZHJpdmVycy9wY211aW8uYy02MDAtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMjAtXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjIxOnN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSB7XFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTIyLVxcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzAtXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjMxOnN0YXRpYyBpbmxpbmUgdTMyIG1zbV9kcF9yZWFkX2xpbmsoc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbywgdTMyIG9mZnNldClcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzIte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTM1LVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzozNjpzdGF0aWMgaW5saW5lIHZvaWQgbXNtX2RwX3dyaXRlX2xpbmsoc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbyxcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzctXFx0XFx0XFx0ICAgICAgIHUzMiBvZmZzZXQsIHUzMiBkYXRhKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTQ1LVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzo0NjpzdGF0aWMgdm9pZCBtc21fZHBfYXVkaW9fc3RyZWFtX3NkcChzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvKVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy00Ny17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtNjEtXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjYyOnN0YXRpYyB2b2lkIG1zbV9kcF9hdWRpb190aW1lc3RhbXBfc2RwKHN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSAqYXVkaW8pXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTYzLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy03Ny1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6Nzg6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX2luZm9mcmFtZV9zZHAoc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbylcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtNzkte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTkzLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzo5NDpzdGF0aWMgdm9pZCBtc21fZHBfYXVkaW9fY29weV9tYW5hZ2VtZW50X3NkcChzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvKVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy05NS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMTA5LVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzoxMTA6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX2lzcmNfc2RwKHN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSAqYXVkaW8pXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTExMS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMTMwLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzoxMzE6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX2NvbmZpZ19zZHAoc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbylcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMTMyLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0xNjEtXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjE2MjpzdGF0aWMgdm9pZCBtc21fZHBfYXVkaW9fc2V0dXBfc2RwKHN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSAqYXVkaW8pXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTE2My17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMTcyLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzoxNzM6c3RhdGljIHZvaWQgbXNtX2RwX2F1ZGlvX3NldHVwX2FjcihzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvKVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0xNzQte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTIwMy1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6MjA0OnN0YXRpYyB2b2lkIG1zbV9kcF9hdWRpb19zYWZlX3RvX2V4aXRfbGV2ZWwoc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbylcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMjA1LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yMzYtXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjIzNzpzdGF0aWMgdm9pZCBtc21fZHBfYXVkaW9fZW5hYmxlKHN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSAqYXVkaW8sIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yMzgte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTI1NC1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6MjU1OnN0YXRpYyBzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKm1zbV9kcF9hdWRpb19nZXRfZGF0YShzdHJ1Y3QgbXNtX2RwICptc21fZHBfZGlzcGxheSlcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMjU2LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yNjQtXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjI2NTpcXHRyZXR1cm4gY29udGFpbmVyX29mKG1zbV9kcF9hdWRpbywgc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlLCBtc21fZHBfYXVkaW8pO1xcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yNjYtfVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jPTI2OD1pbnQgbXNtX2RwX2F1ZGlvX3ByZXBhcmUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0yNzMtXFx0aW50IHJjID0gMDtcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6Mjc0OlxcdHN0cnVjdCBtc21fZHBfYXVkaW9fcHJpdmF0ZSAqYXVkaW87XFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTI3NS1cXHRzdHJ1Y3QgbXNtX2RwICptc21fZHBfZGlzcGxheTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYz0zMTE9dm9pZCBtc21fZHBfYXVkaW9fc2h1dGRvd24oc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0zMTMte1xcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzozMTQ6XFx0c3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbztcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzE1LVxcdHN0cnVjdCBtc21fZHAgKm1zbV9kcF9kaXNwbGF5O1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jPTM0MD1zdHJ1Y3QgbXNtX2RwX2F1ZGlvICptc21fZHBfYXVkaW9fZ2V0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzQzLVxcdGludCByYyA9IDA7XFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jOjM0NDpcXHRzdHJ1Y3QgbXNtX2RwX2F1ZGlvX3ByaXZhdGUgKmF1ZGlvO1xcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0zNDUtXFx0c3RydWN0IG1zbV9kcF9hdWRpbyAqbXNtX2RwX2F1ZGlvO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jPTM2OT12b2lkIG1zbV9kcF9hdWRpb19wdXQoc3RydWN0IG1zbV9kcF9hdWRpbyAqbXNtX2RwX2F1ZGlvKVxcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0zNzAte1xcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYzozNzE6XFx0c3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlICphdWRpbztcXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMtMzcyLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jLTM3NS1cXG5kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmM6Mzc2OlxcdGF1ZGlvID0gY29udGFpbmVyX29mKG1zbV9kcF9hdWRpbywgc3RydWN0IG1zbV9kcF9hdWRpb19wcml2YXRlLCBtc21fZHBfYXVkaW8pO1xcbmRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYy0zNzctXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMC1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzoyMTpzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhIHtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMi1cXHRzdHJ1Y3QgZ3Bpb19kZXNjICpzZGE7XFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0zOT1zdGF0aWMgdm9pZCBpMmNfZ3Bpb19zZXRzZGFfdmFsKHZvaWQgKmRhdGEsIGludCBzdGF0ZSlcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy00MC17XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6NDE6XFx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRhdGE7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtNDItXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz01Mj1zdGF0aWMgdm9pZCBpMmNfZ3Bpb19zZXRzY2xfdmFsKHZvaWQgKmRhdGEsIGludCBzdGF0ZSlcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy01My17XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6NTQ6XFx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRhdGE7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtNTUtXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz01OT1zdGF0aWMgaW50IGkyY19ncGlvX2dldHNkYSh2b2lkICpkYXRhKVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTYwLXtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzo2MTpcXHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gZGF0YTtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy02Mi1cXG4tLVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jPTY2PXN0YXRpYyBpbnQgaTJjX2dwaW9fZ2V0c2NsKHZvaWQgKmRhdGEpXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtNjcte1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjY4OlxcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYgPSBkYXRhO1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTY5LVxcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9ODE9c3RhdGljIGludCBmb3BzXyMjd2lyZSMjX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXHRcXHRcXFxcXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtODIte1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzo4MzpcXHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gZGF0YTtcXHRcXHRcXFxcXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtODQtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9OTA9c3RhdGljIGludCBmb3BzXyMjd2lyZSMjX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcdFxcdFxcXFxcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy05MS17XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjkyOlxcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYgPSBkYXRhO1xcdFxcdFxcXFxcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy05My1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0xMDI9V0lSRV9BVFRSSUJVVEUoc2RhKTtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0xMDMtXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MTA0OnN0YXRpYyB2b2lkIGkyY19ncGlvX2luY29tcGxldGVfdHJhbnNmZXIoc3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdixcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0xMDUtXFx0XFx0XFx0XFx0XFx0dTMyIHBhdHRlcm4sIHU4IHBhdHRlcm5fc2l6ZSlcXG4tLVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jPTEyOT1zdGF0aWMgaW50IGZvcHNfaW5jb21wbGV0ZV9hZGRyX3BoYXNlX3NldCh2b2lkICpkYXRhLCB1NjQgYWRkcilcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0xMzAte1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjEzMTpcXHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gZGF0YTtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0xMzItXFx0dTMyIHBhdHRlcm47XFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0xNDY9c3RhdGljIGludCBmb3BzX2luY29tcGxldGVfd3JpdGVfYnl0ZV9zZXQodm9pZCAqZGF0YSwgdTY0IGFkZHIpXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMTQ3LXtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzoxNDg6XFx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRhdGE7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMTQ5LVxcdHUzMiBwYXR0ZXJuO1xcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9MTYzPURFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2luY29tcGxldGVfd3JpdGVfYnl0ZSwgTlVMTCwgZm9wc19pbmNvbXBsZXRlX3dyaXRlX2J5dGVfc2V0LCBcXFwiJWxsdVxcXFxuXFxcIik7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMTY0LVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjE2NTpzdGF0aWMgaW50IGkyY19ncGlvX2ZpX2FjdF9vbl9zY2xfaXJxKHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYsXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMTY2LVxcdFxcdFxcdFxcdCAgICAgICBpcnFyZXR1cm5fdCBoYW5kbGVyKGludCwgdm9pZCopKVxcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9MTk3PXN0YXRpYyBpcnFyZXR1cm5fdCBsb3NlX2FyYml0cmF0aW9uX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMTk4LXtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYzoxOTk6XFx0c3RydWN0IGkyY19ncGlvX3ByaXZhdGVfZGF0YSAqcHJpdiA9IGRldl9pZDtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMDAtXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0yMTA9c3RhdGljIGludCBmb3BzX2xvc2VfYXJiaXRyYXRpb25fc2V0KHZvaWQgKmRhdGEsIHU2NCBkdXJhdGlvbilcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMTEte1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjIxMjpcXHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gZGF0YTtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yMTMtXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0yMjk9c3RhdGljIGlycXJldHVybl90IGluamVjdF9wYW5pY19pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTIzMC17XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MjMxOlxcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYgPSBkZXZfaWQ7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMjMyLVxcbi0tXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM9MjM5PXN0YXRpYyBpbnQgZm9wc19pbmplY3RfcGFuaWNfc2V0KHZvaWQgKmRhdGEsIHU2NCBkdXJhdGlvbilcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yNDAte1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjI0MTpcXHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2ID0gZGF0YTtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yNDItXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0yNTU9c3RhdGljIHZvaWQgaTJjX2dwaW9fZmF1bHRfaW5qZWN0b3JfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTI1Ni17XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MjU3OlxcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy0yNTgtXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYz0zMzk9c3RhdGljIGludCBpMmNfZ3Bpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTM0MC17XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmM6MzQxOlxcdHN0cnVjdCBpMmNfZ3Bpb19wcml2YXRlX2RhdGEgKnByaXY7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMtMzQyLVxcdHN0cnVjdCBpMmNfZ3Bpb19wbGF0Zm9ybV9kYXRhICpwZGF0YTtcXG4tLVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jPTQ1Mz1zdGF0aWMgdm9pZCBpMmNfZ3Bpb19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWdwaW8uYy00NTQte1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jOjQ1NTpcXHRzdHJ1Y3QgaTJjX2dwaW9fcHJpdmF0ZV9kYXRhICpwcml2O1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3Bpby5jLTQ1Ni1cXHRzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXA7XFxuLS1cXG5kcml2ZXJzL21kL2JjYWNoZS9iY2FjaGUuaD03NDU9c3RydWN0IGJiaW8ge1xcbi0tXFxuZHJpdmVycy9tZC9iY2FjaGUvYmNhY2hlLmgtNzU3LVxcbmRyaXZlcnMvbWQvYmNhY2hlL2JjYWNoZS5oOjc1ODpzdHJ1Y3QgZGV0YWNoZWRfZGV2X2lvX3ByaXZhdGUge1xcbmRyaXZlcnMvbWQvYmNhY2hlL2JjYWNoZS5oLTc1OS1cXHRzdHJ1Y3QgYmNhY2hlX2RldmljZVxcdCpkO1xcbi0tXFxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jPTEwODA9c3RhdGljIHZvaWQgZGV0YWNoZWRfZGV2X2VuZF9pbyhzdHJ1Y3QgYmlvICpiaW8pXFxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jLTEwODEte1xcbmRyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYzoxMDgyOlxcdHN0cnVjdCBkZXRhY2hlZF9kZXZfaW9fcHJpdmF0ZSAqZGRpcCA9XFxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jOjEwODM6XFx0XFx0Y29udGFpbmVyX29mKGJpbywgc3RydWN0IGRldGFjaGVkX2Rldl9pb19wcml2YXRlLCBiaW8pO1xcbmRyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYy0xMDg0LVxcdHN0cnVjdCBiaW8gKm9yaWdfYmlvID0gZGRpcC1cXHUwMDNlb3JpZ19iaW87XFxuLS1cXG5kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmM9MTEwMT1zdGF0aWMgdm9pZCBkZXRhY2hlZF9kZXZfZG9fcmVxdWVzdChzdHJ1Y3QgYmNhY2hlX2RldmljZSAqZCxcXG4tLVxcbmRyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYy0xMTAzLXtcXG5kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmM6MTEwNDpcXHRzdHJ1Y3QgZGV0YWNoZWRfZGV2X2lvX3ByaXZhdGUgKmRkaXA7XFxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jLTExMDUtXFx0c3RydWN0IGNhY2hlZF9kZXYgKmRjID0gY29udGFpbmVyX29mKGQsIHN0cnVjdCBjYWNoZWRfZGV2LCBkaXNrKTtcXG4tLVxcbmRyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYy0xMTE3LVxcbmRyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYzoxMTE4OlxcdGRkaXAgPSBjb250YWluZXJfb2YoY2xvbmVfYmlvLCBzdHJ1Y3QgZGV0YWNoZWRfZGV2X2lvX3ByaXZhdGUsIGJpbyk7XFxuZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jLTExMTktXFx0LyogQ291bnQgb24gdGhlIGJjYWNoZSBkZXZpY2UgKi9cXG4tLVxcbmRyaXZlcnMvbWQvYmNhY2hlL3N1cGVyLmM9ODk3PXN0YXRpYyBpbnQgYmNhY2hlX2RldmljZV9pbml0KHN0cnVjdCBiY2FjaGVfZGV2aWNlICpkLCB1bnNpZ25lZCBpbnQgYmxvY2tfc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbWQvYmNhY2hlL3N1cGVyLmMtOTUzLVxcdGlmIChiaW9zZXRfaW5pdChcXHUwMDI2ZC1cXHUwMDNlYmlvX2RldGFjaGVkLCA0LFxcbmRyaXZlcnMvbWQvYmNhY2hlL3N1cGVyLmM6OTU0OlxcdFxcdFxcdG9mZnNldG9mKHN0cnVjdCBkZXRhY2hlZF9kZXZfaW9fcHJpdmF0ZSwgYmlvKSxcXG5kcml2ZXJzL21kL2JjYWNoZS9zdXBlci5jLTk1NS1cXHRcXHRcXHRCSU9TRVRfTkVFRF9CVkVDU3xCSU9TRVRfTkVFRF9SRVNDVUVSKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaD02MT1zdHJ1Y3Qgc2phMTEwNV9yZWdzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC05NS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1Lmg6OTY6c3RydWN0IHNqYTExMDVfbWRpb19wcml2YXRlIHtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtOTctXFx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTEwPWludCBzamExMTA1X3Bjc19tZGlvX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksIGludCBtbWQsIGludCByZWcpXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTEte1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjEyOlxcdHN0cnVjdCBzamExMTA1X21kaW9fcHJpdmF0ZSAqbWRpb19wcml2ID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTEzLVxcdHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYgPSBtZGlvX3ByaXYtXFx1MDAzZXByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0zNT1pbnQgc2phMTEwNV9wY3NfbWRpb193cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IG1tZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM3LXtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozODpcXHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zOS1cXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9NTI9aW50IHNqYTExMTBfcGNzX21kaW9fcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IG1tZCwgaW50IHJlZylcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy01My17XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6NTQ6XFx0c3RydWN0IHNqYTExMDVfbWRpb19wcml2YXRlICptZGlvX3ByaXYgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtNTUtXFx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiA9IG1kaW9fcHJpdi1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTk3PWludCBzamExMTEwX3Bjc19tZGlvX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LCBpbnQgbW1kLCBpbnQgcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtOTkte1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjEwMDpcXHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0xMDEtXFx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiA9IG1kaW9fcHJpdi1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTE1Mj1zdGF0aWMgaW50IHNqYTExMDVfYmFzZV90MV9tZGlvX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksIGludCByZWcpXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTUzLXtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzoxNTQ6XFx0c3RydWN0IHNqYTExMDVfbWRpb19wcml2YXRlICptZGlvX3ByaXYgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTU1LVxcdHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYgPSBtZGlvX3ByaXYtXFx1MDAzZXByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0xNjk9c3RhdGljIGludCBzamExMTA1X2Jhc2VfdDFfbWRpb19yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTcxLXtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzoxNzI6XFx0c3RydWN0IHNqYTExMDVfbWRpb19wcml2YXRlICptZGlvX3ByaXYgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMTczLVxcdHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYgPSBtZGlvX3ByaXYtXFx1MDAzZXByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0xOTM9c3RhdGljIGludCBzamExMTA1X2Jhc2VfdDFfbWRpb193cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IHJlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTE5NS17XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6MTk2OlxcdHN0cnVjdCBzamExMTA1X21kaW9fcHJpdmF0ZSAqbWRpb19wcml2ID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTE5Ny1cXHRzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gbWRpb19wcml2LVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MjA4PXN0YXRpYyBpbnQgc2phMTEwNV9iYXNlX3QxX21kaW9fd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yMTAte1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjIxMTpcXHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yMTItXFx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiA9IG1kaW9fcHJpdi1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTIzMD1zdGF0aWMgaW50IHNqYTExMDVfYmFzZV90eF9tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeSwgaW50IHJlZylcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yMzEte1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjIzMjpcXHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yMzMtXFx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiA9IG1kaW9fcHJpdi1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTI0Nj1zdGF0aWMgaW50IHNqYTExMDVfYmFzZV90eF9tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHksIGludCByZWcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yNDgte1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjI0OTpcXHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yNTAtXFx0c3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiA9IG1kaW9fcHJpdi1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTI1OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3R4X3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yNjAte1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjI2MTpcXHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdjtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yNjItXFx0c3RydWN0IGRldmljZV9ub2RlICpucDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTMxMj1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3QxX3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zMTQte1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjMxNTpcXHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdjtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zMTYtXFx0c3RydWN0IGRldmljZV9ub2RlICpucDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTM2OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19wY3NfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zNjkte1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjM3MDpcXHRzdHJ1Y3Qgc2phMTEwNV9tZGlvX3ByaXZhdGUgKm1kaW9fcHJpdjtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zNzEtXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gcHJpdi1cXHUwMDNlZHM7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jPTg4PWludCBjaW9fc2V0X29wdGlvbnMoc3RydWN0IHN1YmNoYW5uZWwgKnNjaCwgaW50IGZsYWdzKVxcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmMtODkte1xcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmM6OTA6XFx0c3RydWN0IGlvX3N1YmNoYW5uZWxfcHJpdmF0ZSAqcHJpdiA9IHRvX2lvX3ByaXZhdGUoc2NoKTtcXG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jLTkxLVxcbi0tXFxuZHJpdmVycy9zMzkwL2Npby9jaW8uYz0xMjM9Y2lvX3N0YXJ0X2tleSAoc3RydWN0IHN1YmNoYW5uZWwgKnNjaCxcXHQvKiBzdWJjaGFubmVsIHN0cnVjdHVyZSAqL1xcbi0tXFxuZHJpdmVycy9zMzkwL2Npby9jaW8uYy0xMjcte1xcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmM6MTI4OlxcdHN0cnVjdCBpb19zdWJjaGFubmVsX3ByaXZhdGUgKnByaXYgPSB0b19pb19wcml2YXRlKHNjaCk7XFxuZHJpdmVycy9zMzkwL2Npby9jaW8uYy0xMjktXFx0dW5pb24gb3JiICpvcmIgPSBcXHUwMDI2cHJpdi1cXHUwMDNlb3JiO1xcbi0tXFxuZHJpdmVycy9zMzkwL2Npby9jaW8uYz03MTM9aW50IGNpb190bV9zdGFydF9rZXkoc3RydWN0IHN1YmNoYW5uZWwgKnNjaCwgc3RydWN0IHRjdyAqdGN3LCB1OCBscG0sIHU4IGtleSlcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmMtNzE1LVxcdGludCBjYztcXG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jOjcxNjpcXHR1bmlvbiBvcmIgKm9yYiA9IFxcdTAwMjZ0b19pb19wcml2YXRlKHNjaCktXFx1MDAzZW9yYjtcXG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jLTcxNy1cXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmM9NzQ0PWludCBjaW9fdG1faW50cmcoc3RydWN0IHN1YmNoYW5uZWwgKnNjaClcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmMtNzQ3LVxcbmRyaXZlcnMvczM5MC9jaW8vY2lvLmM6NzQ4OlxcdGlmICghdG9faW9fcHJpdmF0ZShzY2gpLVxcdTAwM2VvcmIudG0uYilcXG5kcml2ZXJzL3MzOTAvY2lvL2Npby5jLTc0OS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmM9MTAyNT1zdGF0aWMgaW50IGlvX3N1YmNoYW5uZWxfcHJvYmUoc3RydWN0IHN1YmNoYW5uZWwgKnNjaClcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTA3NC1cXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jOjEwNzU6XFx0c2V0X2lvX3ByaXZhdGUoc2NoLCBpb19wcml2KTtcXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jLTEwNzYtXFx0Y3NzX3NjaGVkdWxlX2V2YWwoc2NoLVxcdTAwM2VzY2hpZCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jPTEwODY9c3RhdGljIHZvaWQgaW9fc3ViY2hhbm5lbF9yZW1vdmUoc3RydWN0IHN1YmNoYW5uZWwgKnNjaClcXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jLTEwODcte1xcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmM6MTA4ODpcXHRzdHJ1Y3QgaW9fc3ViY2hhbm5lbF9wcml2YXRlICppb19wcml2ID0gdG9faW9fcHJpdmF0ZShzY2gpO1xcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTA4OS1cXHRzdHJ1Y3QgY2N3X2RldmljZSAqY2RldjtcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTA5Ny1cXHRzY2hfc2V0X2NkZXYoc2NoLCBOVUxMKTtcXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jOjEwOTg6XFx0c2V0X2lvX3ByaXZhdGUoc2NoLCBOVUxMKTtcXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jLTEwOTktXFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZzY2gtXFx1MDAzZWxvY2spO1xcbi0tXFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYz0xNjM3PXN0cnVjdCBjY3dfZGV2aWNlICogX19pbml0IGNjd19kZXZpY2VfY3JlYXRlX2NvbnNvbGUoc3RydWN0IGNjd19kcml2ZXIgKmRydilcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTY1NC1cXHRcXHRnb3RvIGVycl9kbWFfYXJlYTtcXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jOjE2NTU6XFx0c2V0X2lvX3ByaXZhdGUoc2NoLCBpb19wcml2KTtcXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jLTE2NTYtXFx0Y2RldiA9IGlvX3N1YmNoYW5uZWxfY3JlYXRlX2Njd2RldihzY2gpO1xcbi0tXFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xNjU5LVxcdFxcdFxcdFxcdCAgaW9fcHJpdi1cXHUwMDNlZG1hX2FyZWEsIGlvX3ByaXYtXFx1MDAzZWRtYV9hcmVhX2RtYSk7XFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYzoxNjYwOlxcdFxcdHNldF9pb19wcml2YXRlKHNjaCwgTlVMTCk7XFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xNjYxLVxcdFxcdHB1dF9kZXZpY2UoXFx1MDAyNnNjaC1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmM9MTY3Nj12b2lkIF9faW5pdCBjY3dfZGV2aWNlX2Rlc3Ryb3lfY29uc29sZShzdHJ1Y3QgY2N3X2RldmljZSAqY2RldilcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMtMTY3OC1cXHRzdHJ1Y3Qgc3ViY2hhbm5lbCAqc2NoID0gdG9fc3ViY2hhbm5lbChjZGV2LVxcdTAwM2VkZXYucGFyZW50KTtcXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jOjE2Nzk6XFx0c3RydWN0IGlvX3N1YmNoYW5uZWxfcHJpdmF0ZSAqaW9fcHJpdiA9IHRvX2lvX3ByaXZhdGUoc2NoKTtcXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jLTE2ODAtXFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYzoxNjgxOlxcdHNldF9pb19wcml2YXRlKHNjaCwgTlVMTCk7XFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYy0xNjgyLVxcdGRtYV9mcmVlX2NvaGVyZW50KFxcdTAwMjZzY2gtXFx1MDAzZWRldiwgc2l6ZW9mKCppb19wcml2LVxcdTAwM2VkbWFfYXJlYSksXFxuLS1cXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZV9mc20uYz0zOT1zdGF0aWMgdm9pZCBjY3dfdGltZW91dF9sb2coc3RydWN0IGNjd19kZXZpY2UgKmNkZXYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZV9mc20uYy00Ny1cXHRzY2ggPSB0b19zdWJjaGFubmVsKGNkZXYtXFx1MDAzZWRldi5wYXJlbnQpO1xcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlX2ZzbS5jOjQ4OlxcdHByaXZhdGUgPSB0b19pb19wcml2YXRlKHNjaCk7XFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2VfZnNtLmMtNDktXFx0b3JiID0gXFx1MDAyNnByaXZhdGUtXFx1MDAzZW9yYjtcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vZGV2aWNlX3N0YXR1cy5jPTMxMj1jY3dfZGV2aWNlX2RvX3NlbnNlKHN0cnVjdCBjY3dfZGV2aWNlICpjZGV2LCBzdHJ1Y3QgaXJiICppcmIpXFxuLS1cXG5kcml2ZXJzL3MzOTAvY2lvL2RldmljZV9zdGF0dXMuYy0zMzItXFx0ICovXFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2Vfc3RhdHVzLmM6MzMzOlxcdHNlbnNlX2NjdyA9IFxcdTAwMjZ0b19pb19wcml2YXRlKHNjaCktXFx1MDAzZWRtYV9hcmVhLVxcdTAwM2VzZW5zZV9jY3c7XFxuZHJpdmVycy9zMzkwL2Npby9kZXZpY2Vfc3RhdHVzLmMtMzM0LVxcdHNlbnNlX2Njdy1cXHUwMDNlY21kX2NvZGUgPSBDQ1dfQ01EX0JBU0lDX1NFTlNFO1xcbi0tXFxuZHJpdmVycy9zMzkwL2Npby9pb19zY2guaD0xNj1zdHJ1Y3QgaW9fc3ViY2hhbm5lbF9wcml2YXRlIHtcXG4tLVxcbmRyaXZlcnMvczM5MC9jaW8vaW9fc2NoLmgtMjctXFxuZHJpdmVycy9zMzkwL2Npby9pb19zY2guaDoyODojZGVmaW5lIHRvX2lvX3ByaXZhdGUobikgKChzdHJ1Y3QgaW9fc3ViY2hhbm5lbF9wcml2YXRlICopIFxcXFxcXG5kcml2ZXJzL3MzOTAvY2lvL2lvX3NjaC5oLTI5LVxcdFxcdFxcdCAgZGV2X2dldF9kcnZkYXRhKFxcdTAwMjYobiktXFx1MDAzZWRldikpXFxuZHJpdmVycy9zMzkwL2Npby9pb19zY2guaDozMDojZGVmaW5lIHNldF9pb19wcml2YXRlKG4sIHApIChkZXZfc2V0X2RydmRhdGEoXFx1MDAyNihuKS1cXHUwMDNlZGV2LCBwKSlcXG5kcml2ZXJzL3MzOTAvY2lvL2lvX3NjaC5oLTMxLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo1MDoxMC4xMTQwMTY4OTJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY1MTg4NDg4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjI0NTk1LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo1MDoxNC43NjU5MDUwMjZaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjI5MDE4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb19wcml2YXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2lvbWFwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2lvbWFwL2lvZW5kLmM9MTc9c3RydWN0IGlvbWFwX2lvZW5kICppb21hcF9pbml0X2lvZW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9pb21hcC9pb2VuZC5jLTMwLVxcdGlvZW5kLVxcdTAwM2Vpb19zZWN0b3IgPSBiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfc2VjdG9yO1xcbmZzL2lvbWFwL2lvZW5kLmM6MzE6XFx0aW9lbmQtXFx1MDAzZWlvX3ByaXZhdGUgPSBOVUxMO1xcbmZzL2lvbWFwL2lvZW5kLmMtMzItXFx0cmV0dXJuIGlvZW5kO1xcbi0tXFxuZnMvaW9tYXAvaW9lbmQuYz0zNzA9c3RhdGljIGJvb2wgaW9tYXBfaW9lbmRfY2FuX21lcmdlKHN0cnVjdCBpb21hcF9pb2VuZCAqaW9lbmQsXFxuLS1cXG5mcy9pb21hcC9pb2VuZC5jLTM4Mi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuZnMvaW9tYXAvaW9lbmQuYzozODM6XFx0aWYgKGlvZW5kLVxcdTAwM2Vpb19wcml2YXRlICE9IG5leHQtXFx1MDAzZWlvX3ByaXZhdGUpXFxuZnMvaW9tYXAvaW9lbmQuYy0zODQtXFx0XFx0cmV0dXJuIGZhbHNlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo1MDoxNC45NzgyMDE1NzRaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg3NzY0Nzc1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgaW9tYXBfaW9lbmRgIFN0cnVjdHVyZSoqXG5cblJpZ2h0LCBzbyBgaW9fcHJpdmF0ZWAuLi4gdGhhdCdzIGEga2V5IGZpZWxkLCBJIGJlbGlldmUsIHdpdGhpbiB0aGUgYHN0cnVjdCBpb21hcF9pb2VuZGAuIEknbSBnb2luZyB0byBxdWlja2x5IGNvbmZpcm0gaXRzIGRlZmluaXRpb24gYW5kIGNvbnRleHQuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgdmVyaWZ5IHRoZSBleGFjdCBkZXRhaWxzLiBTbywgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gY2hlY2sgaXMgZGVmaW5pdGVseSBgaW5jbHVkZS9saW51eC9pb21hcC5oYC4gSSdsbCBvcGVuIHRoYXQgaGVhZGVyIGZpbGUgYW5kIHRha2UgYSBsb29rLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBwdXJwb3NlIG9mIGBpb19wcml2YXRlYCwgaXRzIGRhdGEgdHlwZSwgYW5kIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoZSBJL08gbWFwcGluZyBmcmFtZXdvcmsuIEkgYmV0IGl0IGhvbGRzIHNvbWUgY29udGV4dCBzcGVjaWZpYyB0byB0aGUgb3BlcmF0aW9uLiBJJ2xsIG1ha2Ugc3VyZSB0byBub3RlIGFueSByZWxhdGlvbnNoaXBzIHRvIG90aGVyIHJlbGF0ZWQgc3RydWN0cyBvciBmdW5jdGlvbnMuIFRoaXMgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYwOTAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QwODo1MDoxOC44NTU4NTIzNzRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczODUxNDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvX3ByaXZhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9pb21hcC5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvaW9tYXAuaD00MTk9c3RydWN0IGlvbWFwX2lvZW5kIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvaW9tYXAuaC00MjgtXFx0c2VjdG9yX3RcXHRcXHRpb19zZWN0b3I7XFx0Lyogc3RhcnQgc2VjdG9yIG9mIGlvZW5kICovXFxuaW5jbHVkZS9saW51eC9pb21hcC5oOjQyOTpcXHR2b2lkXFx0XFx0XFx0KmlvX3ByaXZhdGU7XFx0LyogZmlsZSBzeXN0ZW0gcHJpdmF0ZSBkYXRhICovXFxuaW5jbHVkZS9saW51eC9pb21hcC5oLTQzMC1cXHRzdHJ1Y3QgYmlvXFx0XFx0aW9fYmlvO1xcdFxcdC8qIE1VU1QgQkUgTEFTVCEgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NTA6MTguOTI5NzA4MTZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcwMTY3MTY2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IHVzZXI6XG5cbioqRGVlcCBEaXZlIGludG8gWEZTIGFuZCBgaW9fcHJpdmF0ZWAqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGlvX3ByaXZhdGVgIGZpZWxkLCBpdCdzIHNpdHRpbmcgd2l0aGluIHRoZSBgc3RydWN0IGlvbWFwX2lvZW5kYCwgYXMgZXhwZWN0ZWQuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgWEZTJ3MgdXNhZ2Ugb2YgdGhpcyBmaWVsZC4gSXQncyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbiB3aGVuIGRlYWxpbmcgd2l0aCBibG9jayBJL08sIHBhcnRpY3VsYXJseSBpbiBhZHZhbmNlZCBmaWxlc3lzdGVtcy4gSSB3YW50IHRvIHNlZSBob3cgWEZTIGxldmVyYWdlcyB0aGF0IHByaXZhdGUgZGF0YSBwb2ludGVyLiBEb2VzIGl0IHN0YXNoIGN1c3RvbSBtZXRhZGF0YSwgcmVmZXJlbmNlIGludGVybmFsIHN0cnVjdHVyZXMsIG9yIGlzIGl0IHVzZWQgZm9yIHRyYW5zYWN0aW9uIHRyYWNraW5nLCBldGMuPyBVbmRlcnN0YW5kaW5nIFhGUydzIHVzYWdlIGhlcmUgd2lsbCB0ZWxsIG1lIGhvdyBjcml0aWNhbCB0aGUgZmllbGQgaXMgYW5kIGhvdyBjaGFuZ2luZyBpdCB3b3VsZCBhZmZlY3QgWEZTJ3MgZGF0YSBwYXRocy4gSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBYRlMgY29kZSBub3chXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NDg0LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NTA6MjIuNjMxMzgxN1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc4ODIyNzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvX3ByaXZhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMveGZzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3hmcy94ZnNfYW9wcy5jPTg0PXhmc19pb2VuZF9wdXRfb3Blbl96b25lcyhcXG4tLVxcbmZzL3hmcy94ZnNfYW9wcy5jLTkyLVxcdGxpc3RfZm9yX2VhY2hfZW50cnkodG1wLCBcXHUwMDI2aW9lbmQtXFx1MDAzZWlvX2xpc3QsIGlvX2xpc3QpXFxuZnMveGZzL3hmc19hb3BzLmM6OTM6XFx0XFx0eGZzX29wZW5fem9uZV9wdXQodG1wLVxcdTAwM2Vpb19wcml2YXRlKTtcXG5mcy94ZnMveGZzX2FvcHMuYy05NC1cXG4tLVxcbmZzL3hmcy94ZnNfYW9wcy5jLTk4LVxcdCAqL1xcbmZzL3hmcy94ZnNfYW9wcy5jOjk5OlxcdGlmIChpb2VuZC1cXHUwMDNlaW9fcHJpdmF0ZSlcXG5mcy94ZnMveGZzX2FvcHMuYzoxMDA6XFx0XFx0eGZzX29wZW5fem9uZV9wdXQoaW9lbmQtXFx1MDAzZWlvX3ByaXZhdGUpO1xcbmZzL3hmcy94ZnNfYW9wcy5jLTEwMS19XFxuLS1cXG5mcy94ZnMveGZzX2FvcHMuYz0xMDc9eGZzX2VuZF9pb2VuZF93cml0ZShcXG4tLVxcbmZzL3hmcy94ZnNfYW9wcy5jLTE1NS1cXHRcXHRlcnJvciA9IHhmc196b25lZF9lbmRfaW8oaXAsIG9mZnNldCwgc2l6ZSwgaW9lbmQtXFx1MDAzZWlvX3NlY3RvcixcXG5mcy94ZnMveGZzX2FvcHMuYzoxNTY6XFx0XFx0XFx0XFx0aW9lbmQtXFx1MDAzZWlvX3ByaXZhdGUsIE5VTExGU0JMT0NLKTtcXG5mcy94ZnMveGZzX2FvcHMuYy0xNTctXFx0ZWxzZSBpZiAoaW9lbmQtXFx1MDAzZWlvX2ZsYWdzIFxcdTAwMjYgSU9NQVBfSU9FTkRfU0hBUkVEKVxcbi0tXFxuZnMveGZzL3hmc196b25lX2FsbG9jLmM9ODM1PXhmc19zdWJtaXRfem9uZWRfYmlvKFxcbi0tXFxuZnMveGZzL3hmc196b25lX2FsbG9jLmMtODQwLVxcdGlvZW5kLVxcdTAwM2Vpb19iaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBpb2VuZC1cXHUwMDNlaW9fc2VjdG9yO1xcbmZzL3hmcy94ZnNfem9uZV9hbGxvYy5jOjg0MTpcXHRpb2VuZC1cXHUwMDNlaW9fcHJpdmF0ZSA9IG96O1xcbmZzL3hmcy94ZnNfem9uZV9hbGxvYy5jLTg0Mi1cXHRhdG9taWNfaW5jKFxcdTAwMjZvei1cXHUwMDNlb3pfcmVmKTsgLyogZm9yIHhmc196b25lZF9lbmRfaW8gKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NTA6MjMuMDEwMjA5Nzk4WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3OTc3NjYyOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqWEZTIFpvbmVkIFN0b3JhZ2UgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIFhGUyBkZWZpbml0ZWx5IHV0aWxpemVzIGBpb19wcml2YXRlYCBmb3IgaXRzIHpvbmVkIHN0b3JhZ2UgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IHRocm91Z2ggYHhmc19vcGVuX3pvbmVfcHV0YCBhbmQgYHhmc19zdWJtaXRfem9uZWRfYmlvYC4gVGhhdCdzIGEga2V5IG9ic2VydmF0aW9uLiBLbm93aW5nIHRoYXQgYGlvX3ByaXZhdGVgIGlzIGNlbnRyYWwgdG8gdGhpcyBpbXBsZW1lbnRhdGlvbiwgaXQgbGVhZHMgbWUgZGlyZWN0bHkgdG8gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBXZSdyZSBvYnZpb3VzbHkgZ29pbmcgdG8gbmVlZCBgQ09ORklHX1hGU19GU2AgZW5hYmxlZC4gTm93IHRoZSBxdWVzdGlvbiBpcywgd2hhdCBvdGhlciBmbGFncyBhcmUgaW1wbGljaXRseSByZXF1aXJlZCB0byBlbmFibGUgem9uZWQgc3RvcmFnZSBpbiBYRlM/IE15IGludHVpdGlvbiBzYXlzIHRoYXQgYENPTkZJR19CTEtfREVWX1pPTkVEYCAob3Igc29tZXRoaW5nIHZlcnkgY2xvc2VseSByZWxhdGVkKSBpcyBsaWtlbHkgYSBkZXBlbmRlbmN5LiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIHJlbGF0ZWQgY29uZmlnIG9wdGlvbnMsIHBlcmhhcHMgd2l0aGluIHRoZSBleGlzdGluZyBYRlMgY29uZmlnIG9wdGlvbnMuIEknbGwgdGFrZSBhIGxvb2sgYXQgYENPTkZJR19YRlNfUlRgIGFuZCBgQ09ORklHX0JMS19ERVZfWk9ORURgIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MjQ0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDA4OjUwOjI3LjgwNzk3ODQxM1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTkzMTc1OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGU19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMveGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMveGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy94ZnMvS2NvbmZpZzoyOmNvbmZpZyBYRlNfRlNcXG5mcy94ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJYRlMgZmlsZXN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMveGZzL0tjb25maWctMjQtXFxuZnMveGZzL0tjb25maWc6MjU6Y29uZmlnIFhGU19TVVBQT1JUX1Y0XFxuZnMveGZzL0tjb25maWctMjYtXFx0Ym9vbCBcXFwiU3VwcG9ydCBkZXByZWNhdGVkIFY0IChjcmM9MCkgZm9ybWF0XFxcIlxcbi0tXFxuZnMveGZzL0tjb25maWctNDktXFxuZnMveGZzL0tjb25maWc6NTA6Y29uZmlnIFhGU19TVVBQT1JUX0FTQ0lJX0NJXFxuZnMveGZzL0tjb25maWctNTEtXFx0Ym9vbCBcXFwiU3VwcG9ydCBkZXByZWNhdGVkIGNhc2UtaW5zZW5zaXRpdmUgYXNjaWkgKGFzY2lpLWNpPTEpIGZvcm1hdFxcXCJcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTc2LVxcbmZzL3hmcy9LY29uZmlnOjc3OmNvbmZpZyBYRlNfUVVPVEFcXG5mcy94ZnMvS2NvbmZpZy03OC1cXHRib29sIFxcXCJYRlMgUXVvdGEgc3VwcG9ydFxcXCJcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTk0LVxcbmZzL3hmcy9LY29uZmlnOjk1OmNvbmZpZyBYRlNfUE9TSVhfQUNMXFxuZnMveGZzL0tjb25maWctOTYtXFx0Ym9vbCBcXFwiWEZTIFBPU0lYIEFDTCBzdXBwb3J0XFxcIlxcbi0tXFxuZnMveGZzL0tjb25maWctMTA0LVxcbmZzL3hmcy9LY29uZmlnOjEwNTpjb25maWcgWEZTX1JUXFxuZnMveGZzL0tjb25maWctMTA2LVxcdGJvb2wgXFxcIlhGUyBSZWFsdGltZSBzdWJ2b2x1bWUgc3VwcG9ydFxcXCJcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTEzMi1cXG5mcy94ZnMvS2NvbmZpZzoxMzM6Y29uZmlnIFhGU19EUkFJTl9JTlRFTlRTXFxuZnMveGZzL0tjb25maWctMTM0LVxcdGJvb2xcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTEzNi1cXG5mcy94ZnMvS2NvbmZpZzoxMzc6Y29uZmlnIFhGU19MSVZFX0hPT0tTXFxuZnMveGZzL0tjb25maWctMTM4LVxcdGJvb2xcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTE0MC1cXG5mcy94ZnMvS2NvbmZpZzoxNDE6Y29uZmlnIFhGU19NRU1PUllfQlVGU1xcbmZzL3hmcy9LY29uZmlnLTE0Mi1cXHRib29sXFxuZnMveGZzL0tjb25maWctMTQzLVxcbmZzL3hmcy9LY29uZmlnOjE0NDpjb25maWcgWEZTX0JUUkVFX0lOX01FTVxcbmZzL3hmcy9LY29uZmlnLTE0NS1cXHRib29sXFxuZnMveGZzL0tjb25maWctMTQ2LVxcbmZzL3hmcy9LY29uZmlnOjE0Nzpjb25maWcgWEZTX09OTElORV9TQ1JVQlxcbmZzL3hmcy9LY29uZmlnLTE0OC1cXHRib29sIFxcXCJYRlMgb25saW5lIG1ldGFkYXRhIGNoZWNrIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy94ZnMvS2NvbmZpZy0xNjMtXFxuZnMveGZzL0tjb25maWc6MTY0OmNvbmZpZyBYRlNfT05MSU5FX1NDUlVCX1NUQVRTXFxuZnMveGZzL0tjb25maWctMTY1LVxcdGJvb2wgXFxcIlhGUyBvbmxpbmUgbWV0YWRhdGEgY2hlY2sgdXNhZ2UgZGF0YSBjb2xsZWN0aW9uXFxcIlxcbi0tXFxuZnMveGZzL0tjb25maWctMTc4LVxcbmZzL3hmcy9LY29uZmlnOjE3OTpjb25maWcgWEZTX09OTElORV9SRVBBSVJcXG5mcy94ZnMvS2NvbmZpZy0xODAtXFx0Ym9vbCBcXFwiWEZTIG9ubGluZSBtZXRhZGF0YSByZXBhaXIgc3VwcG9ydFxcXCJcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTE5My1cXG5mcy94ZnMvS2NvbmZpZzoxOTQ6Y29uZmlnIFhGU19XQVJOXFxuZnMveGZzL0tjb25maWctMTk1LVxcdGJvb2wgXFxcIlhGUyBWZXJib3NlIFdhcm5pbmdzXFxcIlxcbi0tXFxuZnMveGZzL0tjb25maWctMjA2LVxcbmZzL3hmcy9LY29uZmlnOjIwNzpjb25maWcgWEZTX0RFQlVHXFxuZnMveGZzL0tjb25maWctMjA4LVxcdGJvb2wgXFxcIlhGUyBEZWJ1Z2dpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmZzL3hmcy9LY29uZmlnLTIxOS1cXG5mcy94ZnMvS2NvbmZpZzoyMjA6Y29uZmlnIFhGU19ERUJVR19FWFBFTlNJVkVcXG5mcy94ZnMvS2NvbmZpZy0yMjEtXFx0Ym9vbCBcXFwiWEZTIGV4cGVuc2l2ZSBkZWJ1Z2dpbmcgY2hlY2tzXFxcIlxcbi0tXFxuZnMveGZzL0tjb25maWctMjMxLVxcbmZzL3hmcy9LY29uZmlnOjIzMjpjb25maWcgWEZTX0FTU0VSVF9GQVRBTFxcbmZzL3hmcy9LY29uZmlnLTIzMy1cXHRib29sIFxcXCJYRlMgZmF0YWwgYXNzZXJ0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NTA6MjcuOTA3MzAyMzk4WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNTk4Nzk2NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMgc3BlY2lmaWMgZmlsZSBhbmFseXNpczpcblxuKipEaXZpbmcgaW50byBgeGZzX3pvbmVfYWxsb2MuY2AgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBoYW5kbGUgb24gdGhlIGxhbmRzY2FwZSBvZiBgZnMveGZzL3hmc196b25lX2FsbG9jLmNgLiBCZWZvcmUgSSBldmVuIHRoaW5rIGFib3V0IHRoZSBzcGVjaWZpY3Mgd2l0aGluIHRoZSBmaWxlIGl0c2VsZiwgSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCByZWxpZXMgb24gaXQsIGFuZCB3aGF0IGl0IGl0c2VsZiByZWxpZXMgb24uIEknbSB0aGlua2luZyBhYm91dCB0aG9zZSBjcml0aWNhbCBkYXRhIHN0cnVjdHVyZXMsIEFQSXMsIGFuZCBmdW5jdGlvbnMuIFdoYXQgYXJlIHRoZSBrZXkgaGVhZGVycywgd2hpY2ggc3RydWN0dXJlcyBkb2VzIGl0IHV0aWxpemUgaGVhdmlseT8gSSdsbCBwcm9iYWJseSBiZSB0cmFjaW5nIGJhY2sgZnVuY3Rpb24gY2FsbHMgdG8gdW5kZXJzdGFuZCBpdHMgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGFuZCBob3cgdGhlc2UgcGllY2VzIGZpdCBpbnRvIHRoZSBicm9hZGVyIFhGUyBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhpbmdzIGxpa2UgbWV0YWRhdGEgbWFuYWdlbWVudCwgYWxsb2NhdGlvbiBzdHJhdGVnaWVzLCBhbmQgdGhlIG92ZXJhbGwgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMgaW52b2x2ZWQgaW4gem9uZS1iYXNlZCBhbGxvY2F0aW9uIHdpdGhpbiBYRlMuIEdvdHRhIG1hcCBvdXQgdGhlIGRlcGVuZGVuY2llcyBiZWZvcmUgSSBjYW4gdHJ1bHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiBhbnkgY2hhbmdlcyBvciBkZWJ1Z2dpbmcgc3RlcHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTQ5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NTA6MzEuMjY3MTg0MDk5WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDkwMzgzNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZzX3pvbmVfYWxsb2Mub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy94ZnMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMveGZzL01ha2VmaWxlPTE0Mj14ZnMtJChDT05GSUdfWEZTX1JUKVxcdFxcdCs9IHhmc19ydGFsbG9jLm8gXFxcXFxcbmZzL3hmcy9NYWtlZmlsZToxNDM6XFx0XFx0XFx0XFx0ICAgeGZzX3pvbmVfYWxsb2MubyBcXFxcXFxuZnMveGZzL01ha2VmaWxlLTE0NC1cXHRcXHRcXHRcXHQgICB4ZnNfem9uZV9nYy5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NTA6MzEuNDE2MjI2NDZaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQxNTUxNTAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjI3NDcxLCJPdXRwdXRUb2tlbnMiOjI3MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMDg6NTA6MzYuODMxNzQzNTk5WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwMTc4NjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlNfRlNcIixcbiAgICBcIlhGU19SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvbWFwX2lvZW5kX3RyeV9tZXJnZVwiLFxuICAgIFwiaW9tYXBfaW9lbmRfY2FuX21lcmdlXCIsXG4gICAgXCJ4ZnNfZW5kX2lvXCIsXG4gICAgXCJ4ZnNfZW5kX2lvZW5kX3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgIHRvIHByZXZlbnQgbWVyZ2luZyBgaW9tYXBfaW9lbmRgIHN0cnVjdHVyZXMgaWYgdGhlaXIgYGlvX3ByaXZhdGVgIGZpZWxkcyBkaWZmZXIuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBJL08gY29tcGxldGlvbiBtZXJnaW5nIGxvZ2ljIGluIGBmcy9pb21hcC9pb2VuZC5jYC4gVGhlIGBpb19wcml2YXRlYCBmaWVsZCBpcyB1c2VkIGJ5IFhGUyAoc3BlY2lmaWNhbGx5IHdpdGggYENPTkZJR19YRlNfUlRgIGVuYWJsZWQsIGluIGB4ZnNfem9uZV9hbGxvYy5jYCBhbmQgYHhmc19hb3BzLmNgKSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gYW4gYHhmc19vcGVuX3pvbmVgLiBJZiBpb2VuZHMgd2l0aCBkaWZmZXJlbnQgYGlvX3ByaXZhdGVgIHBvaW50ZXJzIHdlcmUgbWVyZ2VkLCBpdCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdCB6b25lIG1hbmFnZW1lbnQgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlcyBpbiBYRlMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKGlvbWFwKSBhbmQgYSBzcGVjaWZpYyBmaWxlc3lzdGVtIChYRlMpLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlNfRlNcIixcbiAgICBcIlhGU19SVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvbWFwX2lvZW5kX3RyeV9tZXJnZVwiLFxuICAgIFwiaW9tYXBfaW9lbmRfY2FuX21lcmdlXCIsXG4gICAgXCJ4ZnNfZW5kX2lvXCIsXG4gICAgXCJ4ZnNfZW5kX2lvZW5kX3dyaXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBpb21hcF9pb2VuZF9jYW5fbWVyZ2VgIHRvIHByZXZlbnQgbWVyZ2luZyBgaW9tYXBfaW9lbmRgIHN0cnVjdHVyZXMgaWYgdGhlaXIgYGlvX3ByaXZhdGVgIGZpZWxkcyBkaWZmZXIuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBJL08gY29tcGxldGlvbiBtZXJnaW5nIGxvZ2ljIGluIGBmcy9pb21hcC9pb2VuZC5jYC4gVGhlIGBpb19wcml2YXRlYCBmaWVsZCBpcyB1c2VkIGJ5IFhGUyAoc3BlY2lmaWNhbGx5IHdpdGggYENPTkZJR19YRlNfUlRgIGVuYWJsZWQsIGluIGB4ZnNfem9uZV9hbGxvYy5jYCBhbmQgYHhmc19hb3BzLmNgKSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gYW4gYHhmc19vcGVuX3pvbmVgLiBJZiBpb2VuZHMgd2l0aCBkaWZmZXJlbnQgYGlvX3ByaXZhdGVgIHBvaW50ZXJzIHdlcmUgbWVyZ2VkLCBpdCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdCB6b25lIG1hbmFnZW1lbnQgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlcyBpbiBYRlMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKGlvbWFwKSBhbmQgYSBzcGVjaWZpYyBmaWxlc3lzdGVtIChYRlMpLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowwk6xw[1] Phase: Succeeded StartedAt: 2026-07-13 08:50:48 +0000 UTC FinishedAt: 2026-07-13 08:50:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-13 08:50:48 +0000 UTC FinishedAt: 2026-07-13 08:50:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2] Phase: Succeeded StartedAt: 2026-07-13 08:50:48 +0000 UTC FinishedAt: 2026-07-13 13:17:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-13 08:50:48 +0000 UTC FinishedAt: 2026-07-13 13:17:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-13 08:50:48 +0000 UTC FinishedAt: 2026-07-13 08:50:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-13 08:50:48 +0000 UTC FinishedAt: 2026-07-13 08:50:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-convert-artifact-1237892341/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-13 08:50:58 +0000 UTC FinishedAt: 2026-07-13 09:40:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-13 08:50:58 +0000 UTC FinishedAt: 2026-07-13 09:40:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*8a51c766-b661-47a7-9340-9441e6e77259,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-convert-artifact-1237892341/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "a509d261-d7c6-4dc3-8326-7ea27a8aeccd", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-build-action-2381059803/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-13 08:50:58 +0000 UTC FinishedAt: 2026-07-13 09:40:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*8a51c766-b661-47a7-9340-9441e6e77259,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-convert-artifact-1237892341/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "a509d261-d7c6-4dc3-8326-7ea27a8aeccd", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-build-action-2381059803/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-13 09:40:53 +0000 UTC FinishedAt: 2026-07-13 09:40:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-13 09:40:53 +0000 UTC FinishedAt: 2026-07-13 09:40:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-13 09:40:53 +0000 UTC FinishedAt: 2026-07-13 09:41:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-13 09:40:53 +0000 UTC FinishedAt: 2026-07-13 09:41:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-convert-artifact-3253459024/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-13 09:41:03 +0000 UTC FinishedAt: 2026-07-13 09:43:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-13 09:41:03 +0000 UTC FinishedAt: 2026-07-13 09:43:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a509d261-d7c6-4dc3-8326-7ea27a8aeccd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-build-action-2381059803/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-13 09:43:14 +0000 UTC FinishedAt: 2026-07-13 09:43:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-13 09:43:14 +0000 UTC FinishedAt: 2026-07-13 09:43:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-13 09:43:14 +0000 UTC FinishedAt: 2026-07-13 10:12:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-13 09:43:14 +0000 UTC FinishedAt: 2026-07-13 10:12:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*8a51c766-b661-47a7-9340-9441e6e77259,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-convert-artifact-3253459024/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "061c4514-5fd5-4fe7-bc4f-79191c2e7672", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-build-action-160470476/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-13 09:43:14 +0000 UTC FinishedAt: 2026-07-13 10:12:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*8a51c766-b661-47a7-9340-9441e6e77259,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-convert-artifact-3253459024/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "061c4514-5fd5-4fe7-bc4f-79191c2e7672", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-build-action-160470476/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-13 10:12:17 +0000 UTC FinishedAt: 2026-07-13 10:12:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-13 10:12:17 +0000 UTC FinishedAt: 2026-07-13 10:12:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-13 10:12:17 +0000 UTC FinishedAt: 2026-07-13 10:14:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-13 10:12:17 +0000 UTC FinishedAt: 2026-07-13 10:14:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*061c4514-5fd5-4fe7-bc4f-79191c2e7672,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-build-action-160470476/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-13 10:14:22 +0000 UTC FinishedAt: 2026-07-13 13:17:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-13 10:14:22 +0000 UTC FinishedAt: 2026-07-13 13:17:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*a509d261-d7c6-4dc3-8326-7ea27a8aeccd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*061c4514-5fd5-4fe7-bc4f-79191c2e7672,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-build-action-2381059803/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-build-action-160470476/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-13 10:14:22 +0000 UTC FinishedAt: 2026-07-13 10:14:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-13 10:14:22 +0000 UTC FinishedAt: 2026-07-13 10:14:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-convert-artifact-4040870985/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-13 10:14:22 +0000 UTC FinishedAt: 2026-07-13 10:14:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-13 10:14:22 +0000 UTC FinishedAt: 2026-07-13 10:14:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-13 10:14:22 +0000 UTC FinishedAt: 2026-07-13 10:14:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-13 10:14:52 +0000 UTC FinishedAt: 2026-07-13 13:17:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6xw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["iomap_ioend_try_merge","iomap_ioend_can_merge","xfs_end_io","xfs_end_ioend_write"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adea84ee6cdea611146c4251d3c1616f5a09feca","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFS_FS","XFS_RT"],"series_id":"983b49b5-5677-4861-a77a-e0310a557a15","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-13 10:14:52 +0000 UTC FinishedAt: 2026-07-13 13:16:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a509d261-d7c6-4dc3-8326-7ea27a8aeccd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*061c4514-5fd5-4fe7-bc4f-79191c2e7672,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-build-action-2381059803/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-build-action-160470476/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6xw/series-workflowwk6xw-convert-artifact-4040870985/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}