Name: series-workflow6p497 Phase: Succeeded StartedAt: 2026-08-13 06:10:20 +0000 UTC FinishedAt: 2026-08-13 09:53:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[0] Phase: Succeeded StartedAt: 2026-08-13 06:10:20 +0000 UTC FinishedAt: 2026-08-13 06:13:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 06:10:20 +0000 UTC FinishedAt: 2026-08-13 06:13:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "7b53449540502cb21b32bca62a6258e22cd97bbe", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_CBS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "7b53449540502cb21b32bca62a6258e22cd97bbe", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_CBS" ], "series_id": "ae8b78bc-13ea-4ffe-8d6e-47994270d5ad" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "cbs_change", "cbs_init" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0NCUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Nic19jaGFuZ2UmIzM0OywKICAgICYjMzQ7Y2JzX2luaXQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgaW50ZWdlciBvdmVyZmxvdyBhbmQgbmVnYXRpdmUgdmFsdWUgaXNzdWVzIGluIHRoZSBDQlMgcGFja2V0IHNjaGVkdWxlciBieSBjYXN0aW5nIHZhcmlhYmxlcyB0byBzNjQgYmVmb3JlIG11bHRpcGxpY2F0aW9uIGFuZCBhZGRpbmcgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciBuZWdhdGl2ZSBpZGxlc2xvcGUuIFRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlIGFsbG9jYXRpb25zIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpYyBlcnJvcnMgb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZXMsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIHNhbml0aXplcnMuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIENyZWRpdCBCYXNlZCBTaGFwZXIgKENCUykgcWRpc2MgYnkgY2FzdGluZyB2YWx1ZXMgdG8gczY0IGJlZm9yZSBtdWx0aXBsaWNhdGlvbiwgYW5kIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciBuZWdhdGl2ZSBpZGxlc2xvcGUuIFRoaXMgbW9kaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMgb2YgdGhlIENCUyBxZGlzYywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rICh0YyBxZGlzYykuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBxZGlzYyBpbml0aWFsaXphdGlvbiBhbmQgY2hhbmdlIGNhbGxiYWNrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU0ODMxOWJkM2JhYWY3NmRhOGRkZjU3NDQ3NGVlY2Y3ZDBlNDc4NjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwNjoxMjoyNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Nicy5jIGIvbmV0L3NjaGVkL3NjaF9jYnMuY1xuaW5kZXggMWM5MzQ2OWM1NmUzZC4uOGRiOThkN2M5OGE4ZCAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfY2JzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfY2JzLmNcbkBAIC0zMzUsNyAmIzQzOzMzNSw3IEBAIHN0YXRpYyB2b2lkIGNic19zZXRfcG9ydF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYnNfc2NoZWRfZGF0YSAqcSlcbiBcdFx0c3BlZWQgPSBlY21kLmJhc2Uuc3BlZWQ7XG4gXG4gc2tpcDpcbi1cdHBvcnRfcmF0ZSA9IHNwZWVkICogMTAwMCAqIEJZVEVTX1BFUl9LQklUO1xuJiM0MztcdHBvcnRfcmF0ZSA9IChzNjQpc3BlZWQgKiAxMDAwICogQllURVNfUEVSX0tCSVQ7XG4gXG4gXHRhdG9taWM2NF9zZXQoXHUwMDI2cS1cdTAwM2Vwb3J0X3JhdGUsIHBvcnRfcmF0ZSk7XG4gXHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7Y2JzOiBzZXQgJXMmIzM5O3MgcG9ydF9yYXRlIHRvOiAlbGxkLCBsaW5rc3BlZWQ6ICVkXFxuXCYjMzQ7LFxuQEAgLTM5Miw2ICYjNDM7MzkyLDEwIEBAIHN0YXRpYyBpbnQgY2JzX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0fVxuIFxuIFx0cW9wdCA9IG5sYV9kYXRhKHRiW1RDQV9DQlNfUEFSTVNdKTtcbiYjNDM7XHRpZiAocW9wdC1cdTAwM2VpZGxlc2xvcGUgXHUwMDNjIDApIHtcbiYjNDM7XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7SWRsZXNsb3BlIG11c3Qgbm90IGJlIG5lZ2F0aXZlXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiBcbiBcdGlmICghcW9wdC1cdTAwM2VvZmZsb2FkKSB7XG4gXHRcdGNic19zZXRfcG9ydF9yYXRlKGRldiwgcSk7XG5AQCAtNDA1LDggJiM0Mzs0MDksOCBAQCBzdGF0aWMgaW50IGNic19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdC8qIEV2ZXJ5dGhpbmcgd2VudCBPSywgc2F2ZSB0aGUgcGFyYW1ldGVycyB1c2VkLiAqL1xuIFx0V1JJVEVfT05DRShxLVx1MDAzZWhpY3JlZGl0LCBxb3B0LVx1MDAzZWhpY3JlZGl0KTtcbiBcdFdSSVRFX09OQ0UocS1cdTAwM2Vsb2NyZWRpdCwgcW9wdC1cdTAwM2Vsb2NyZWRpdCk7XG4tXHRXUklURV9PTkNFKHEtXHUwMDNlaWRsZXNsb3BlLCBxb3B0LVx1MDAzZWlkbGVzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTtcbi1cdFdSSVRFX09OQ0UocS1cdTAwM2VzZW5kc2xvcGUsIHFvcHQtXHUwMDNlc2VuZHNsb3BlICogQllURVNfUEVSX0tCSVQpO1xuJiM0MztcdFdSSVRFX09OQ0UocS1cdTAwM2VpZGxlc2xvcGUsIChzNjQpcW9wdC1cdTAwM2VpZGxlc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7XG4mIzQzO1x0V1JJVEVfT05DRShxLVx1MDAzZXNlbmRzbG9wZSwgKHM2NClxb3B0LVx1MDAzZXNlbmRzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTtcbiBcdFdSSVRFX09OQ0UocS1cdTAwM2VvZmZsb2FkLCBxb3B0LVx1MDAzZW9mZmxvYWQpO1xuIFxuIFx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0NCUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Nic19jaGFuZ2UmIzM0OywKICAgICYjMzQ7Y2JzX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgQ3JlZGl0IEJhc2VkIFNoYXBlciAoQ0JTKSBxZGlzYyBieSBjYXN0aW5nIHZhbHVlcyB0byBzNjQgYmVmb3JlIG11bHRpcGxpY2F0aW9uLCBhbmQgYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIG5lZ2F0aXZlIGlkbGVzbG9wZS4gVGhpcyBtb2RpZmllcyB0aGUgY29uZmlndXJhdGlvbiBsb2dpYyBvZiB0aGUgQ0JTIHFkaXNjLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKHRjIHFkaXNjKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHFkaXNjIGluaXRpYWxpemF0aW9uIGFuZCBjaGFuZ2UgY2FsbGJhY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTQ4MzE5YmQzYmFhZjc2ZGE4ZGRmNTc0NDc0ZWVjZjdkMGU0Nzg2MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDA2OjEyOjI1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9jYnMuYyBiL25ldC9zY2hlZC9zY2hfY2JzLmMKaW5kZXggMWM5MzQ2OWM1NmUzZC4uOGRiOThkN2M5OGE4ZCAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9jYnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2Nicy5jCkBAIC0zMzUsNyAmIzQzOzMzNSw3IEBAIHN0YXRpYyB2b2lkIGNic19zZXRfcG9ydF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYnNfc2NoZWRfZGF0YSAqcSkKIAkJc3BlZWQgPSBlY21kLmJhc2Uuc3BlZWQ7CiAKIHNraXA6Ci0JcG9ydF9yYXRlID0gc3BlZWQgKiAxMDAwICogQllURVNfUEVSX0tCSVQ7CiYjNDM7CXBvcnRfcmF0ZSA9IChzNjQpc3BlZWQgKiAxMDAwICogQllURVNfUEVSX0tCSVQ7CiAKIAlhdG9taWM2NF9zZXQoJmFtcDtxLSZndDtwb3J0X3JhdGUsIHBvcnRfcmF0ZSk7CiAJbmV0ZGV2X2RiZyhkZXYsICYjMzQ7Y2JzOiBzZXQgJXMmIzM5O3MgcG9ydF9yYXRlIHRvOiAlbGxkLCBsaW5rc3BlZWQ6ICVkXG4mIzM0OywKQEAgLTM5Miw2ICYjNDM7MzkyLDEwIEBAIHN0YXRpYyBpbnQgY2JzX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCX0KIAogCXFvcHQgPSBubGFfZGF0YSh0YltUQ0FfQ0JTX1BBUk1TXSk7CiYjNDM7CWlmIChxb3B0LSZndDtpZGxlc2xvcGUgJmx0OyAwKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7SWRsZXNsb3BlIG11c3Qgbm90IGJlIG5lZ2F0aXZlJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KIAogCWlmICghcW9wdC0mZ3Q7b2ZmbG9hZCkgewogCQljYnNfc2V0X3BvcnRfcmF0ZShkZXYsIHEpOwpAQCAtNDA1LDggJiM0Mzs0MDksOCBAQCBzdGF0aWMgaW50IGNic19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkvKiBFdmVyeXRoaW5nIHdlbnQgT0ssIHNhdmUgdGhlIHBhcmFtZXRlcnMgdXNlZC4gKi8KIAlXUklURV9PTkNFKHEtJmd0O2hpY3JlZGl0LCBxb3B0LSZndDtoaWNyZWRpdCk7CiAJV1JJVEVfT05DRShxLSZndDtsb2NyZWRpdCwgcW9wdC0mZ3Q7bG9jcmVkaXQpOwotCVdSSVRFX09OQ0UocS0mZ3Q7aWRsZXNsb3BlLCBxb3B0LSZndDtpZGxlc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7Ci0JV1JJVEVfT05DRShxLSZndDtzZW5kc2xvcGUsIHFvcHQtJmd0O3NlbmRzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTsKJiM0MzsJV1JJVEVfT05DRShxLSZndDtpZGxlc2xvcGUsIChzNjQpcW9wdC0mZ3Q7aWRsZXNsb3BlICogQllURVNfUEVSX0tCSVQpOwomIzQzOwlXUklURV9PTkNFKHEtJmd0O3NlbmRzbG9wZSwgKHM2NClxb3B0LSZndDtzZW5kc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7CiAJV1JJVEVfT05DRShxLSZndDtvZmZsb2FkLCBxb3B0LSZndDtvZmZsb2FkKTsKIAogCXJldHVybiAwOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDIyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ0JTIHFkaXNjIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3NjaGVkL3NjaF9jYnMuY2AsIGFuZCBpdCYjMzk7cyBtYWtpbmcgYSBmZXcgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBDcmVkaXQgQmFzZWQgU2hhcGVyLiBGaXJzdCwgdGhlcmUmIzM5O3MgYSBjcnVjaWFsIGZpeCBpbiBgY2JzX3NldF9wb3J0X3JhdGVgIHdoZXJlIHRoZXkmIzM5O3ZlIGNhc3QgYHNwZWVkYCB0byBgczY0YCBiZWZvcmUgZG9pbmcgdGhlIG11bHRpcGxpY2F0aW9uLiBTbWFydCBtb3ZlOyBhdm9pZGluZyBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpcyBhbHdheXMgYSBnb29kIHByYWN0aWNlLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIG5ldHdvcmsgc3BlZWRzLgoKVGhlbiwgaW4gYGNic19jaGFuZ2VgLCBhIHNhbml0eSBjaGVjayBpcyBhZGRlZDogYGlmIChxb3B0LSZndDtpZGxlc2xvcGUgJmx0OyAwKWAgbm93IHJlc3VsdHMgaW4gYC1FSU5WQUxgIGlmIHRydWUuIFRoYXQgbWFrZXMgc2Vuc2UsIHlvdSB3b3VsZG4mIzM5O3QgZXhwZWN0IGFuIGlkbGVzbG9wZSB0byBiZSBuZWdhdGl2ZTsgaXQgbWFrZXMgdGhlIGNvZGUgbW9yZSByb2J1c3QgYW5kIHByZXZlbnRzIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaWYgc29tZW9uZSB0cmllcyB0byBjb25maWd1cmUgc29tZXRoaW5nIG5vbnNlbnNpY2FsLiBGaW5hbGx5LCB0aGV5JiMzOTtyZSBjYXN0aW5nIGBxb3B0LSZndDtpZGxlc2xvcGVgIGFuZCBgcW9wdC0mZ3Q7c2VuZHNsb3BlYCB0byBgczY0YCBiZWZvcmUgbXVsdGlwbHlpbmcgYnkgYEJZVEVTX1BFUl9LQklUYCB3aXRoaW4gdGhlIGBjYnNfY2hhbmdlYCBmdW5jdGlvbi4gQWdhaW4sIGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgYmVpbmcgY2FyZWZ1bCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdmVyZmxvdyBpc3N1ZXMgaW4gdGhlc2UgY2FsY3VsYXRpb25zLCB3aGljaCBpcyB0b3RhbGx5IHJlYXNvbmFibGUuCgpTbywgdGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBDQlMgcWRpc2MuIE5vdywgSSBuZWVkIHRvIGNoZWNrIGBuZXQvc2NoZWQvc2NoX2Nicy5jYCB0byBzZWUgaG93IENCUyBpcyBjb25maWd1cmVkOyBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggQ09ORklHIG9wdGlvbnMgZW5hYmxlIHRoaXMgcGFydGljdWxhciBxZGlzYy4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IHRoZSBidWlsZC10aW1lIGRlcGVuZGVuY2llcyBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NoX2Nicy5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvTWFrZWZpbGU9NjE9b2JqLSQoQ09ORklHX05FVF9TQ0hfRlFfUElFKVx0JiM0Mzs9IHNjaF9mcV9waWUub1xubmV0L3NjaGVkL01ha2VmaWxlOjYyOm9iai0kKENPTkZJR19ORVRfU0NIX0NCUylcdCYjNDM7PSBzY2hfY2JzLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS02My1vYmotJChDT05GSUdfTkVUX1NDSF9FVEYpXHQmIzQzOz0gc2NoX2V0Zi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA1NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIENCUyBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gdGhlIHN5c3RlbSBpcyBjb25maWd1cmVkIHRvIHVzZSB0aGUgYE5FVF9TQ0hfQ0JTYCBzY2hlZHVsZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXM/IFdoYXQgYXJlIHRoZSBrZXkgZnVuY3Rpb25hbGl0aWVzIHRoYXQgYXJlIGltcGFjdGVkPyBJJiMzOTt2ZSBiZWVuIHRhc2tlZCB3aXRoIGxvb2tpbmcgYXQgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoaW4gdGhlIENCUyBzY2hlZHVsZXIuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gZmxhZ2dlZCBmb3IgcmV2aWV3IGFyZSBgY2JzX3NldF9wb3J0X3JhdGVgICh3aGljaCBJIHNlZSBpcyBkZWNsYXJlZCBzdGF0aWMsIHNvIHNjb3BlIGlzIGxpbWl0ZWQgdG8gdGhpcyBmaWxlIG9yIG1vZHVsZSkgYW5kIGBjYnNfY2hhbmdlYCAoYWxzbyBzdGF0aWMsIGdvb2QgdG8ga25vdykuIE5vdywgbXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSBwdXJwb3NlIG9mIGBjYnNfY2hhbmdlYCBhbmQgdGhlIGJlc3Qgd2F5IHRvIGRvIHRoYXQgaXMgdG8gc2VlIGhvdyBhbmQgd2hlcmUgaXQgaXMgdXNlZC4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBzaXRlcyB0byBmdWxseSB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbiB3aXRoaW4gdGhpcyBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2JzX2NoYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfY2JzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9jYnMuYz0zNDY9c3RhdGljIGludCBjYnNfZGV2X25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXG4tLVxubmV0L3NjaGVkL3NjaF9jYnMuYy0zNzQtXG5uZXQvc2NoZWQvc2NoX2Nicy5jOjM3NTpzdGF0aWMgaW50IGNic19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfY2JzLmMtMzc2LVx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9jYnMuYz00MTk9c3RhdGljIGludCBjYnNfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuLS1cbm5ldC9zY2hlZC9zY2hfY2JzLmMtNDQ3LVxubmV0L3NjaGVkL3NjaF9jYnMuYzo0NDg6XHRyZXR1cm4gY2JzX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbm5ldC9zY2hlZC9zY2hfY2JzLmMtNDQ5LX1cbi0tXG5uZXQvc2NoZWQvc2NoX2Nicy5jPTU1Mz1zdGF0aWMgc3RydWN0IFFkaXNjX29wcyBjYnNfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9jYnMuYy01NjItXHQuZGVzdHJveVx0PVx0Y2JzX2Rlc3Ryb3ksXG5uZXQvc2NoZWQvc2NoX2Nicy5jOjU2MzpcdC5jaGFuZ2VcdFx0PVx0Y2JzX2NoYW5nZSxcbm5ldC9zY2hlZC9zY2hfY2JzLmMtNTY0LVx0LmR1bXBcdFx0PVx0Y2JzX2R1bXAsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY3OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBSZWFzb25pbmcgb24gU2VsZWN0aW5nIEZvY3VzU3ltYm9scyBmb3IgQ0JTIFFkaXNjKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYGNic19jaGFuZ2VgIGNhbGxiYWNrLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBgY2JzX3FkaXNjX29wc2Agc3RydWN0dXJlLiBNeSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZSBhcmUgYGNic19jaGFuZ2VgIGFuZCBgY2JzX2luaXRgLiBUaGUgaXNzdWUgaXMsIHRoZXNlIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVXN1YWxseSwgdGhhdCB3b3VsZCBtZWFuIHRoZXkgY291bGQgYmUgaW5saW5lZCwgYW5kIG5vdCBnb29kIGNob2ljZXMgZm9yIGEgRm9jdXNTeW1ib2wgYmVjYXVzZSB0aGV5IHdvdWxkIG5vdCBiZSBkaXJlY3RseSBhZGRyZXNzYWJsZS4gQnV0LCBzaW5jZSBgLmNoYW5nZWAgYW5kIGAuaW5pdGAgaW4gYGNic19xZGlzY19vcHNgIGFyZSBmdW5jdGlvbiBwb2ludGVycywgdGhlIGNvbXBpbGVyICp3b24mIzM5O3QqIGlubGluZSB0aG9zZSBmdW5jdGlvbnMuIFRoZXkmIzM5O2xsIGhhdmUgdGhlaXIgb3duIGFkZHJlc3Nlcy4gSSBoYXZlIHRvIG1ha2UgYSBjaG9pY2Ugb2Ygd2hhdCBzeW1ib2xzIHdpbGwgcHJvdmlkZSB0aGUgbW9zdCBiZW5lZml0IHRvIG15IGFuYWx5c2lzLgoKVGhlIHByb21wdCwgaG93ZXZlciwgc3VnZ2VzdHMgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuIFRoYXQgdGhyb3dzIGEgd3JlbmNoIGluIG15IHBsYW5zIHNpbmNlIGBjYnNfY2hhbmdlYCAqaXMqIHN0YXRpYy4gSG1tLCB0aGVyZSBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIGEgbm9uLXN0YXRpYyBhbHRlcm5hdGl2ZS4gYGNic19xZGlzY19vcHNgIGlzIHJlZ2lzdGVyZWQgd2l0aCBgcmVnaXN0ZXJfcWRpc2NgLCBzbyBpdCYjMzk7cyBub3QgbGlrZSBJIGNhbiB1c2UgdGhlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbiBpdHNlbGYuCgpTbywgSSB0aGluayBJJiMzOTtsbCBzdGljayB3aXRoIGBjYnNfY2hhbmdlYCBhbmQgYGNic19pbml0YCBhcyBGb2N1c1N5bWJvbHMuIEFsdGVybmF0aXZlbHksIEkgY291bGQgdHJ5IGBjYnNfZW5xdWV1ZWAgYW5kIGBjYnNfZGVxdWV1ZWAgZ2l2ZW4gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBwYXRjaC4gQnV0IGxldCYjMzk7cyBzdGFydCB3aXRoIGBjYnNfY2hhbmdlYCBhbmQgYGNic19pbml0YCBhcyBhIHN0YXJ0aW5nIHBvaW50LgoKVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyBgY2JzX2NoYW5nZWAgYW5kIGBjYnNfc2V0X3BvcnRfcmF0ZWAuIGBjYnNfY2hhbmdlYCBpcyBjYWxsZWQgZnJvbSBgY2JzX2luaXRgIGFuZCBhbHNvIGRpcmVjdGx5IHRocm91Z2ggdGhlIGAuY2hhbmdlYCBmdW5jdGlvbiBwb2ludGVyLiBUaGlzIHNvbGlkaWZpZXMgbXkgY2hvaWNlLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjazogYGNic19jaGFuZ2VgIGlzIGluZGVlZCBzdGF0aWMsIGJ1dCBzaW5jZSBpdCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIHRoZSBjb21waWxlciAqd2lsbCogdGFrZSBpdHMgYWRkcmVzcywgc28gaXQgd29uJiMzOTt0IGJlIGlubGluZWQgaW4gdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdGFibGUuIEV4Y2VsbGVudC4KCkhvbGQgb24uLi4gc3l6a2FsbGVyICpjYW4qIHRhcmdldCBzdGF0aWMgZnVuY3Rpb25zLCBhcyBsb25nIGFzIHRoZXkmIzM5O3JlIG5vdCBpbmxpbmVkLiBHcmVhdC4gVGhhdCByZWluZm9yY2VzIG15IG9yaWdpbmFsIGRlY2lzaW9uLiBTbywgSSYjMzk7bGwgcHJvdmlkZSBgY2JzX2NoYW5nZWAgYW5kIGBjYnNfaW5pdGAuCgpOb3csIGxldCBtZSBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBgTkVUX1NDSF9DQlNgIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1NDSF9DQlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTEzND1jb25maWcgTkVUX1NDSF9UQkZcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xNDQtXG5uZXQvc2NoZWQvS2NvbmZpZzoxNDU6Y29uZmlnIE5FVF9TQ0hfQ0JTXG5uZXQvc2NoZWQvS2NvbmZpZy0xNDYtXHR0cmlzdGF0ZSBcJiMzNDtDcmVkaXQgQmFzZWQgU2hhcGVyIChDQlMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY2MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHJlYWRpbmcgdGhlIHByb3ZpZGVkIHRleHQ6CgoqKkV4YW1pbmluZyB0aGUgTGludXggTmV0d29yayBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmb3IgbmV0d29yayBzY2hlZHVsaW5nLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gZ29pbmcgdG8gbmF2aWdhdGUgb3ZlciB0byB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCBmb2N1cyBteSBhdHRlbnRpb24gYXJvdW5kIGxpbmUgMTQ1LiBJIGtub3cgdGhhdCB0aGlzIGZpbGUgaXMgdGhlIHBsYWNlIHRvIGdvIHRvIGZpbmQgdGhlIGRlZmluaXRpb25zIGZvciB0aGUgY29uZmlndXJhYmxlIG9wdGlvbnMgcmVsYXRlZCB0byB0cmFmZmljIGNvbnRyb2wgYW5kIHF1ZXVpbmcgZGlzY2lwbGluZXMuIEhvcGVmdWxseSwgbGluZSAxNDUgd2lsbCBnaXZlIG1lIGEgZ29vZCBlbnRyeSBwb2ludCB0byB1bmRlcnN0YW5kIHNvbWUgcmVsZXZhbnQgc2NoZWR1bGVyIGZlYXR1cmVzLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHNvbWUgaW1wb3J0YW50IGRlZmluaXRpb25zIGluIHRoYXQgYXJlYS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHRoZXJlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE0MDpcdFx0ICBTZWUgdGhlIHRvcCBvZiBcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfdGJmLmNcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cbiAxNDE6XHRcbiAxNDI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDE0MzpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX3RiZi5cbiAxNDQ6XHRcbiAxNDU6XHRjb25maWcgTkVUX1NDSF9DQlNcbiAxNDY6XHRcdHRyaXN0YXRlIFwmIzM0O0NyZWRpdCBCYXNlZCBTaGFwZXIgKENCUylcJiMzNDtcbiAxNDc6XHRcdGhlbHBcbiAxNDg6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIENyZWRpdCBCYXNlZCBTaGFwZXIgKENCUykgcGFja2V0XG4gMTQ5Olx0XHQgIHNjaGVkdWxpbmcgYWxnb3JpdGhtLlxuIDE1MDpcdFxuIDE1MTpcdFx0ICBTZWUgdGhlIHRvcCBvZiBcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfY2JzLmNcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cbiAxNTI6XHRcbiAxNTM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDE1NDpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX2Nicy5cbiAxNTU6XHRcbiAxNTY6XHRjb25maWcgTkVUX1NDSF9FVEZcbiAxNTc6XHRcdHRyaXN0YXRlIFwmIzM0O0VhcmxpZXN0IFR4VGltZSBGaXJzdCAoRVRGKVwmIzM0O1xuIDE1ODpcdFx0aGVscFxuIDE1OTpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgRWFybGllc3QgVHhUaW1lIEZpcnN0IChFVEYpIHBhY2tldFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTg3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aG9zZSB0aG91Z2h0cyBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZSwgdXNpbmcgdGhlIGZpcnN0IHBlcnNvbiBhbmQgYWltaW5nIGZvciBhIGZ1bHNvbWUgcmVuZGVyaW5nOgoKKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgTkVUX1NDSF9DQlMqKgoKQWxyaWdodCwgbG9va2luZyBhdCBgTkVUX1NDSF9DQlNgLCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgYXQgbWUgaXMgdGhlIGxhY2sgb2YgYW55IG9idmlvdXMsIHVudXN1YWwgZGVwZW5kZW5jaWVzLiBUaGF0JiMzOTtzIGFsd2F5cyBhIGdvb2Qgc3RhcnQ7IGl0IHNpbXBsaWZpZXMgdGhpbmdzLiBNeSBtZW50YWwgbW9kZWwgZmxhZ3MgdGhpcyBhcyBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIG1vZHVsZSwgYXQgbGVhc3QgaW5pdGlhbGx5LiBOb3csIHRoZSBwYXJlbnQgbW9kdWxlIGlzIGxpc3RlZCBhcyBgTkVUX1NDSEVEYCwgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkIGZvciBuZXR3b3JrIHNjaGVkdWxpbmcgY29tcG9uZW50cy4gU28sIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gYE5FVF9TQ0hFRGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvdXIgYW5kIGNvbnN0cmFpbnRzIGJlY2F1c2UgYE5FVF9TQ0hfQ0JTYCwgYnkgaXRzIG5hdHVyZSwgd2lsbCBpbmhlcml0IHNvbWUgb2YgdGhvc2UgY29yZSBiZWhhdmlvdXJzLiBJIHdpbGwgdmVyaWZ5IHRoYXQgYE5FVF9TQ0hFRGAgaXMgcHJvcGVybHkgaW1wbGVtZW50ZWQuIEFuZCwgdGhlbiBJJiMzOTtsbCB1c2UgdGhhdCBrbm93bGVkZ2UgYXMgdGhlIGZvdW5kYXRpb24gZm9yIGV4YW1pbmluZyBob3cgYE5FVF9TQ0hfQ0JTYCBpbnRlZ3JhdGVzIGFuZCBleHRlbmRzIHRoYXQgZnVuY3Rpb25hbGl0eS4gS25vd2luZyB0aGUgcGFyZW50IGlzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBjaGlsZC4gVGltZSB0byBkaWcgaW50byBgTkVUX1NDSEVEYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWctNS1cbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcbm5ldC9zY2hlZC9LY29uZmlnLTctXHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTM0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgcHJvdmlkZWQgdGV4dDoKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCYjMzk7cyBUcmFmZmljIENvbnRyb2wgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUga2VybmVsJiMzOTtzIHRyYWZmaWMgY29udHJvbCBmZWF0dXJlcyBhcmUgY29uZmlndXJlZC4gU28sIEkmIzM5O20gaGVhZGluZyBzdHJhaWdodCBmb3IgdGhlIGBuZXQvc2NoZWQvS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHN0YXJ0aW5nIG15IGRlZXAgZGl2ZSBhcm91bmQgbGluZSA2LiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gYmUgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBodWIgZm9yIGFsbCB0aGUgcXVldWluZyBkaXNjaXBsaW5lcywgY2xhc3NpZmllcnMsIGFuZCBzY2hlZHVsZXJzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgaGlnaC1sZXZlbCBzdHJ1Y3R1cmUsIHRoZSBkZXBlbmRlbmNpZXMsIGFuZCB0aGUgb3B0aW9ucyB0aGF0IGNvbnRyb2wgd2hpY2ggZmVhdHVyZXMgYXJlIGNvbXBpbGVkIGluIG9yIGFzIG1vZHVsZXMuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gdGhlIGFyY2hpdGVjdHVyYWwgZGVwZW5kZW5jaWVzLCB0aGUgb3B0aW9ucyBmb3IgdmFyaW91cyBhbGdvcml0aG1zLCBhbmQgdGhlIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBhcmUgY2hvc2VuLiBGcm9tIHRoZXJlLCBJIHNob3VsZCBnYWluIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgdHJhZmZpYyBjb250cm9sIHN1YnN5c3RlbSYjMzk7cyBkZXNpZ24gYW5kIGhvdyB0byBjdXN0b21pemUgaXQgZm9yIGRpZmZlcmVudCBuZXR3b3JrIGVudmlyb25tZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFRyYWZmaWMgY29udHJvbCBjb25maWd1cmF0aW9uLlxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51Y29uZmlnIE5FVF9TQ0hFRFxuICAgNzpcdFx0Ym9vbCBcJiMzNDtRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcJiMzNDtcbiAgIDg6XHRcdHNlbGVjdCBORVRfU0NIX0ZJRk9cbiAgIDk6XHRcdGhlbHBcbiAgMTA6XHRcdCAgV2hlbiB0aGUga2VybmVsIGhhcyBzZXZlcmFsIHBhY2tldHMgdG8gc2VuZCBvdXQgb3ZlciBhIG5ldHdvcmtcbiAgMTE6XHRcdCAgZGV2aWNlLCBpdCBoYXMgdG8gZGVjaWRlIHdoaWNoIG9uZXMgdG8gc2VuZCBmaXJzdCwgd2hpY2ggb25lcyB0b1xuICAxMjpcdFx0ICBkZWxheSwgYW5kIHdoaWNoIG9uZXMgdG8gZHJvcC4gVGhpcyBpcyB0aGUgam9iIG9mIHRoZSBxdWV1ZWluZ1xuICAxMzpcdFx0ICBkaXNjaXBsaW5lcywgc2V2ZXJhbCBkaWZmZXJlbnQgYWxnb3JpdGhtcyBmb3IgaG93IHRvIGRvIHRoaXNcbiAgMTQ6XHRcdCAgXCYjMzQ7ZmFpcmx5XCYjMzQ7IGhhdmUgYmVlbiBwcm9wb3NlZC5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgSWYgeW91IHNheSBOIGhlcmUsIHlvdSB3aWxsIGdldCB0aGUgc3RhbmRhcmQgcGFja2V0IHNjaGVkdWxlciwgd2hpY2hcbiAgMTc6XHRcdCAgaXMgYSBGSUZPIChmaXJzdCBjb21lLCBmaXJzdCBzZXJ2ZWQpLiBJZiB5b3Ugc2F5IFkgaGVyZSwgeW91IHdpbGwgYmVcbiAgMTg6XHRcdCAgYWJsZSB0byBjaG9vc2UgZnJvbSBhbW9uZyBzZXZlcmFsIGFsdGVybmF0aXZlIGFsZ29yaXRobXMgd2hpY2ggY2FuXG4gIDE5Olx0XHQgIHRoZW4gYmUgYXR0YWNoZWQgdG8gZGlmZmVyZW50IG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBpcyB1c2VmdWwgZm9yXG4gIDIwOlx0XHQgIGV4YW1wbGUgaWYgc29tZSBvZiB5b3VyIG5ldHdvcmsgZGV2aWNlcyBhcmUgcmVhbCB0aW1lIGRldmljZXMgdGhhdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDkwCgkJCQkJCQlvdXRwdXQ6IDEzNQoJCQkJCQkJdGhvdWdodHM6IDI0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDQlMgcWRpc2MgUGF0Y2gqKgoKT2theSwgc28gSSBzZWUgdGhpcyBwYXRjaCByZXF1aXJlcyBgTkVUX1NDSEVEYCwgdGhhdCYjMzk7cyBleHBlY3RlZC4gTGV0IG1lIGp1c3QgY29uZmlybSBpZiBgTkVUX1NDSF9DQlNgIGhhcyBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcy4gTm9wZSwgbG9va3MgY2xlYW4gdGhlcmUuCgpBbHJpZ2h0LCBmdW5jdGlvbmFsbHksIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhbiBpbnRlZ2VyIG92ZXJmbG93LCB3aGljaCBpcyBhbHdheXMgYSBnb29kIHRoaW5nLCBhbmQgYWRkaW5nIGEgdmFsaWRhdGlvbiBjaGVjayB0byBoYW5kbGUgbmVnYXRpdmUgaWRsZXNsb3BlLiBJdCYjMzk7cyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgd2FycmFudHMgZnV6emluZy4gYGNic19jaGFuZ2VgIGFuZCBgY2JzX2luaXRgIGFyZSB0aGUga2V5IGFyZWFzIHRvIHRhcmdldCBiYXNlZCBvbiB0aGF0IGNoYW5nZS4gVGhvc2UgYEZvY3VzU3ltYm9sc2AgbG9vayByaWdodC4KCkp1c3Qgd2FudCB0byBjb25maXJtIGBjYnNfY2hhbmdlYCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UuLi4gWWVzLCBnb29kLCBpdCBpcy4gSXQmIzM5O3MgYSBxZGlzYyBjaGFuZ2UgY2FsbGJhY2ssIHdoaWNoIG1lYW5zIGB0YyBxZGlzYyBhZGQvY2hhbmdlYCB2aWEgbmV0bGluayBjYW4gdHJpZ2dlciBpdCwgbWVhbmluZyB3ZSBjYW4gZnV6eiBpdCBlZmZlY3RpdmVseSBmcm9tIG91dHNpZGUuCgpTbywgaW4gc3VtbWFyeSwgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhbiBpbnRlZ2VyIG92ZXJmbG93IGZpeCBhbmQgaWRsZSBzbG9wZSBjaGVjayBpbiB0aGUgQ0JTIHFkaXNjLCB0cmlnZ2VyZWQgdmlhIG5ldGxpbmsuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlndXJlIGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9DQlNgLCBhbmQgSSYjMzk7bGwgZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRoZSBgY2JzX2NoYW5nZWAgYW5kIGBjYnNfaW5pdGAgZnVuY3Rpb25zLiBUaGlzIHNlZW1zIGxpa2UgYSBtYW5hZ2VhYmxlIGFuZCB0YXJnZXRlZCBmdXp6aW5nIGNhbXBhaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfQ0JTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2JzX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtjYnNfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBDcmVkaXQgQmFzZWQgU2hhcGVyIChDQlMpIHFkaXNjIGJ5IGNhc3RpbmcgdmFsdWVzIHRvIHM2NCBiZWZvcmUgbXVsdGlwbGljYXRpb24sIGFuZCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgbmVnYXRpdmUgaWRsZXNsb3BlLiBUaGlzIG1vZGlmaWVzIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljIG9mIHRoZSBDQlMgcWRpc2MsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgcWRpc2MgaW5pdGlhbGl6YXRpb24gYW5kIGNoYW5nZSBjYWxsYmFja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0NCUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Nic19jaGFuZ2UmIzM0OywKICAgICYjMzQ7Y2JzX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgQ3JlZGl0IEJhc2VkIFNoYXBlciAoQ0JTKSBxZGlzYyBieSBjYXN0aW5nIHZhbHVlcyB0byBzNjQgYmVmb3JlIG11bHRpcGxpY2F0aW9uLCBhbmQgYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIG5lZ2F0aXZlIGlkbGVzbG9wZS4gVGhpcyBtb2RpZmllcyB0aGUgY29uZmlndXJhdGlvbiBsb2dpYyBvZiB0aGUgQ0JTIHFkaXNjLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKHRjIHFkaXNjKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHFkaXNjIGluaXRpYWxpemF0aW9uIGFuZCBjaGFuZ2UgY2FsbGJhY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBpbnRlZ2VyIG92ZXJmbG93IGFuZCBuZWdhdGl2ZSB2YWx1ZSBpc3N1ZXMgaW4gdGhlIENCUyBwYWNrZXQgc2NoZWR1bGVyIGJ5IGNhc3RpbmcgdmFyaWFibGVzIHRvIHM2NCBiZWZvcmUgbXVsdGlwbGljYXRpb24gYW5kIGFkZGluZyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIG5lZ2F0aXZlIGlkbGVzbG9wZS4gVGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgYWxsb2NhdGlvbnMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljIGVycm9ycyBvciBvdXQtb2YtYm91bmRzIGlzc3Vlcywgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgc2FuaXRpemVycy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTQ4MzE5YmQzYmFhZjc2ZGE4ZGRmNTc0NDc0ZWVjZjdkMGU0Nzg2MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDA2OjEyOjI1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9jYnMuYyBiL25ldC9zY2hlZC9zY2hfY2JzLmMKaW5kZXggMWM5MzQ2OWM1NmUzZC4uOGRiOThkN2M5OGE4ZCAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9jYnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2Nicy5jCkBAIC0zMzUsNyAmIzQzOzMzNSw3IEBAIHN0YXRpYyB2b2lkIGNic19zZXRfcG9ydF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYnNfc2NoZWRfZGF0YSAqcSkKIAkJc3BlZWQgPSBlY21kLmJhc2Uuc3BlZWQ7CiAKIHNraXA6Ci0JcG9ydF9yYXRlID0gc3BlZWQgKiAxMDAwICogQllURVNfUEVSX0tCSVQ7CiYjNDM7CXBvcnRfcmF0ZSA9IChzNjQpc3BlZWQgKiAxMDAwICogQllURVNfUEVSX0tCSVQ7CiAKIAlhdG9taWM2NF9zZXQoJmFtcDtxLSZndDtwb3J0X3JhdGUsIHBvcnRfcmF0ZSk7CiAJbmV0ZGV2X2RiZyhkZXYsICYjMzQ7Y2JzOiBzZXQgJXMmIzM5O3MgcG9ydF9yYXRlIHRvOiAlbGxkLCBsaW5rc3BlZWQ6ICVkXG4mIzM0OywKQEAgLTM5Miw2ICYjNDM7MzkyLDEwIEBAIHN0YXRpYyBpbnQgY2JzX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCX0KIAogCXFvcHQgPSBubGFfZGF0YSh0YltUQ0FfQ0JTX1BBUk1TXSk7CiYjNDM7CWlmIChxb3B0LSZndDtpZGxlc2xvcGUgJmx0OyAwKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7SWRsZXNsb3BlIG11c3Qgbm90IGJlIG5lZ2F0aXZlJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KIAogCWlmICghcW9wdC0mZ3Q7b2ZmbG9hZCkgewogCQljYnNfc2V0X3BvcnRfcmF0ZShkZXYsIHEpOwpAQCAtNDA1LDggJiM0Mzs0MDksOCBAQCBzdGF0aWMgaW50IGNic19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkvKiBFdmVyeXRoaW5nIHdlbnQgT0ssIHNhdmUgdGhlIHBhcmFtZXRlcnMgdXNlZC4gKi8KIAlXUklURV9PTkNFKHEtJmd0O2hpY3JlZGl0LCBxb3B0LSZndDtoaWNyZWRpdCk7CiAJV1JJVEVfT05DRShxLSZndDtsb2NyZWRpdCwgcW9wdC0mZ3Q7bG9jcmVkaXQpOwotCVdSSVRFX09OQ0UocS0mZ3Q7aWRsZXNsb3BlLCBxb3B0LSZndDtpZGxlc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7Ci0JV1JJVEVfT05DRShxLSZndDtzZW5kc2xvcGUsIHFvcHQtJmd0O3NlbmRzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTsKJiM0MzsJV1JJVEVfT05DRShxLSZndDtpZGxlc2xvcGUsIChzNjQpcW9wdC0mZ3Q7aWRsZXNsb3BlICogQllURVNfUEVSX0tCSVQpOwomIzQzOwlXUklURV9PTkNFKHEtJmd0O3NlbmRzbG9wZSwgKHM2NClxb3B0LSZndDtzZW5kc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7CiAJV1JJVEVfT05DRShxLSZndDtvZmZsb2FkLCBxb3B0LSZndDtvZmZsb2FkKTsKIAogCXJldHVybiAwOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxOQoJCQkJCQkJb3V0cHV0OiAxMjIKCQkJCQkJCXRob3VnaHRzOiAyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ0JTIFNjaGVkdWxlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGlzIHBhdGNoIGlzIGhvbmluZyBpbiBvbiBgbmV0L3NjaGVkL3NjaF9jYnMuY2AgYW5kIHByaW1hcmlseSBhZGRyZXNzaW5nIHNvbWUgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSBDQlMgc2NoZWR1bGVyJiMzOTtzIGludGVybmFsIGNhbGN1bGF0aW9ucy4gVGhlIGtleSBzZWVtcyB0byBiZSBhcm91bmQgdGhvc2Ugc2xvcGUgYW5kIHNwZWVkIHZhbHVlcy4gU3BlY2lmaWNhbGx5LCBpdCBhcHBlYXJzIHRoZSBjb2RlIGlzIGRvaW5nIHNvbWUgYXJpdGhtZXRpYyB3aXRoIGBzcGVlZGAsIGBpZGxlc2xvcGVgLCBhbmQgYHNlbmRzbG9wZWAsIGFuZCB0byBwcmV2ZW50IGFueSBpbnRlZ2VyIG92ZXJmbG93IG9yIHVuZGVyZmxvdyBwcm9ibGVtcywgaXQmIzM5O3MgY2FzdGluZyBgc3BlZWRgIHRvIGBzNjRgIGFuZCBhbHNvIGNhc3RpbmcgYm90aCBgcW9wdC0mZ3Q7aWRsZXNsb3BlYCBhbmQgYHFvcHQtJmd0O3NlbmRzbG9wZWAgdG8gYHM2NGAgYmVmb3JlIGRvaW5nIHNvbWUgbXVsdGlwbGljYXRpb24gd2l0aCBgQllURVNfUEVSX0tCSVRgLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIHByYWN0aWNlIGZvciBlbnN1cmluZyBjYWxjdWxhdGlvbiBhY2N1cmFjeSwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBsYXJnZSB2YWx1ZXMuCgpJJiMzOTttIGFsc28gc2VlaW5nIGEgY3J1Y2lhbCBjaGVjayBhZGRlZDogYGlmIChxb3B0LSZndDtpZGxlc2xvcGUgJmx0OyAwKWAgd2hpY2gsIGlmIHRydWUsIHdpbGwgcmV0dXJuIGAtRUlOVkFMYC4gVGhpcyBpcyBhIHNlbnNpYmxlIGFkZGl0aW9uLCBhcyBuZWdhdGl2ZSBzbG9wZXMgcHJvYmFibHkgZG9uJiMzOTt0IG1ha2Ugc2Vuc2UgaW4gdGhpcyBjb250ZXh0LCBzbyB2YWxpZGF0aW5nIHRoZSBpbnB1dCBwcmV2ZW50cyB1bmV4cGVjdGVkIGJlaGF2aW9yLgoKQmFzZWQgb24gdGhlc2UgY2hhbmdlcywgSSYjMzk7bSBjb25maWRlbnQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb2J2aW91cyByZWQgZmxhZ3MuIE5vIGluZGljYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBubyBzaWducyBvZiBpbmZvcm1hdGlvbiBsZWFrcywgYW5kIG5vIG1lbW9yeSBhbGxvY2F0aW9ucyB0aGF0IEkgY2FuIHNlZS4gVGhlIHBhdGNoIGlzIHNvbGVseSBmb2N1c2VkIG9uIGZpeGluZyBsb2dpYyBhbmQgYXJpdGhtZXRpYyB0byBpbXByb3ZlIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBDQlMgc2NoZWR1bGVyLgoKSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYHFvcHRgIGlzLCBhcyBleHBlY3RlZCwgYSBwb2ludGVyIHRvIHRoZSBgc3RydWN0IHRjX2Nic19xb3B0YC4gVGhlIGNoZWNrcyBhbmQgY2FzdHMgYWxsIGFsaWduIHdpdGggYWRkcmVzc2luZyBwb3RlbnRpYWwgaW50ZWdlciBpc3N1ZXMsIGFuZCB0aGUgb3ZlcmFsbCBsb2dpYyBzZWVtcyBzb3VuZC4KClRoZXJlZm9yZSwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGVzZSBjaGFuZ2VzLCBJJiMzOTttIGNvbWZvcnRhYmxlIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgIG9uIHRoaXMgcGF0Y2guIFdlIGRvbiYjMzk7dCBuZWVkIEtNU0FOIGhlcmU7IHRoZXNlIGFyZSBzdHJhaWdodGZvcndhcmQgYXJpdGhtZXRpYyBhbmQgaW5wdXQgdmFsaWRhdGlvbiBmaXhlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGludGVnZXIgb3ZlcmZsb3cgYW5kIG5lZ2F0aXZlIHZhbHVlIGlzc3VlcyBpbiB0aGUgQ0JTIHBhY2tldCBzY2hlZHVsZXIgYnkgY2FzdGluZyB2YXJpYWJsZXMgdG8gczY0IGJlZm9yZSBtdWx0aXBsaWNhdGlvbiBhbmQgYWRkaW5nIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgbmVnYXRpdmUgaWRsZXNsb3BlLiBUaGVzZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMgd291bGQgYmUgbG9naWMgZXJyb3JzIG9yIG91dC1vZi1ib3VuZHMgaXNzdWVzLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBzYW5pdGl6ZXJzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGludGVnZXIgb3ZlcmZsb3cgYW5kIG5lZ2F0aXZlIHZhbHVlIGlzc3VlcyBpbiB0aGUgQ0JTIHBhY2tldCBzY2hlZHVsZXIgYnkgY2FzdGluZyB2YXJpYWJsZXMgdG8gczY0IGJlZm9yZSBtdWx0aXBsaWNhdGlvbiBhbmQgYWRkaW5nIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgbmVnYXRpdmUgaWRsZXNsb3BlLiBUaGVzZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMgd291bGQgYmUgbG9naWMgZXJyb3JzIG9yIG91dC1vZi1ib3VuZHMgaXNzdWVzLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBzYW5pdGl6ZXJzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMjoyNi4zNTMyNTU5NjFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzc4Mzg2NjQzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfQ0JTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2JzX2NoYW5nZVwiLFxuICAgIFwiY2JzX2luaXRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBpbnRlZ2VyIG92ZXJmbG93IGFuZCBuZWdhdGl2ZSB2YWx1ZSBpc3N1ZXMgaW4gdGhlIENCUyBwYWNrZXQgc2NoZWR1bGVyIGJ5IGNhc3RpbmcgdmFyaWFibGVzIHRvIHM2NCBiZWZvcmUgbXVsdGlwbGljYXRpb24gYW5kIGFkZGluZyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIG5lZ2F0aXZlIGlkbGVzbG9wZS4gVGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgYWxsb2NhdGlvbnMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljIGVycm9ycyBvciBvdXQtb2YtYm91bmRzIGlzc3Vlcywgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgc2FuaXRpemVycy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBDcmVkaXQgQmFzZWQgU2hhcGVyIChDQlMpIHFkaXNjIGJ5IGNhc3RpbmcgdmFsdWVzIHRvIHM2NCBiZWZvcmUgbXVsdGlwbGljYXRpb24sIGFuZCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgbmVnYXRpdmUgaWRsZXNsb3BlLiBUaGlzIG1vZGlmaWVzIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljIG9mIHRoZSBDQlMgcWRpc2MsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgcWRpc2MgaW5pdGlhbGl6YXRpb24gYW5kIGNoYW5nZSBjYWxsYmFja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjI2LjM1MzI2MjY1MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg0MTMyMTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTQ4MzE5YmQzYmFhZjc2ZGE4ZGRmNTc0NDc0ZWVjZjdkMGU0Nzg2MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwNjoxMjoyNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Nicy5jIGIvbmV0L3NjaGVkL3NjaF9jYnMuY1xcbmluZGV4IDFjOTM0NjljNTZlM2QuLjhkYjk4ZDdjOThhOGQgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9jYnMuY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfY2JzLmNcXG5AQCAtMzM1LDcgKzMzNSw3IEBAIHN0YXRpYyB2b2lkIGNic19zZXRfcG9ydF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYnNfc2NoZWRfZGF0YSAqcSlcXG4gXFx0XFx0c3BlZWQgPSBlY21kLmJhc2Uuc3BlZWQ7XFxuIFxcbiBza2lwOlxcbi1cXHRwb3J0X3JhdGUgPSBzcGVlZCAqIDEwMDAgKiBCWVRFU19QRVJfS0JJVDtcXG4rXFx0cG9ydF9yYXRlID0gKHM2NClzcGVlZCAqIDEwMDAgKiBCWVRFU19QRVJfS0JJVDtcXG4gXFxuIFxcdGF0b21pYzY0X3NldChcXHUwMDI2cS1cXHUwMDNlcG9ydF9yYXRlLCBwb3J0X3JhdGUpO1xcbiBcXHRuZXRkZXZfZGJnKGRldiwgXFxcImNiczogc2V0ICVzJ3MgcG9ydF9yYXRlIHRvOiAlbGxkLCBsaW5rc3BlZWQ6ICVkXFxcXG5cXFwiLFxcbkBAIC0zOTIsNiArMzkyLDEwIEBAIHN0YXRpYyBpbnQgY2JzX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbiBcXHR9XFxuIFxcbiBcXHRxb3B0ID0gbmxhX2RhdGEodGJbVENBX0NCU19QQVJNU10pO1xcbitcXHRpZiAocW9wdC1cXHUwMDNlaWRsZXNsb3BlIFxcdTAwM2MgMCkge1xcbitcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJJZGxlc2xvcGUgbXVzdCBub3QgYmUgbmVnYXRpdmVcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4gXFxuIFxcdGlmICghcW9wdC1cXHUwMDNlb2ZmbG9hZCkge1xcbiBcXHRcXHRjYnNfc2V0X3BvcnRfcmF0ZShkZXYsIHEpO1xcbkBAIC00MDUsOCArNDA5LDggQEAgc3RhdGljIGludCBjYnNfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIFxcdC8qIEV2ZXJ5dGhpbmcgd2VudCBPSywgc2F2ZSB0aGUgcGFyYW1ldGVycyB1c2VkLiAqL1xcbiBcXHRXUklURV9PTkNFKHEtXFx1MDAzZWhpY3JlZGl0LCBxb3B0LVxcdTAwM2VoaWNyZWRpdCk7XFxuIFxcdFdSSVRFX09OQ0UocS1cXHUwMDNlbG9jcmVkaXQsIHFvcHQtXFx1MDAzZWxvY3JlZGl0KTtcXG4tXFx0V1JJVEVfT05DRShxLVxcdTAwM2VpZGxlc2xvcGUsIHFvcHQtXFx1MDAzZWlkbGVzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTtcXG4tXFx0V1JJVEVfT05DRShxLVxcdTAwM2VzZW5kc2xvcGUsIHFvcHQtXFx1MDAzZXNlbmRzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTtcXG4rXFx0V1JJVEVfT05DRShxLVxcdTAwM2VpZGxlc2xvcGUsIChzNjQpcW9wdC1cXHUwMDNlaWRsZXNsb3BlICogQllURVNfUEVSX0tCSVQpO1xcbitcXHRXUklURV9PTkNFKHEtXFx1MDAzZXNlbmRzbG9wZSwgKHM2NClxb3B0LVxcdTAwM2VzZW5kc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7XFxuIFxcdFdSSVRFX09OQ0UocS1cXHUwMDNlb2ZmbG9hZCwgcW9wdC1cXHUwMDNlb2ZmbG9hZCk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTI6MjYuODM4MzI5NjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMTA0NzQyNzI0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfQ0JTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2JzX2NoYW5nZVwiLFxuICAgIFwiY2JzX2luaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBDcmVkaXQgQmFzZWQgU2hhcGVyIChDQlMpIHFkaXNjIGJ5IGNhc3RpbmcgdmFsdWVzIHRvIHM2NCBiZWZvcmUgbXVsdGlwbGljYXRpb24sIGFuZCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgbmVnYXRpdmUgaWRsZXNsb3BlLiBUaGlzIG1vZGlmaWVzIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljIG9mIHRoZSBDQlMgcWRpc2MsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgcWRpc2MgaW5pdGlhbGl6YXRpb24gYW5kIGNoYW5nZSBjYWxsYmFja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU0ODMxOWJkM2JhYWY3NmRhOGRkZjU3NDQ3NGVlY2Y3ZDBlNDc4NjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwNjoxMjoyNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfY2JzLmMgYi9uZXQvc2NoZWQvc2NoX2Nicy5jXG5pbmRleCAxYzkzNDY5YzU2ZTNkLi44ZGI5OGQ3Yzk4YThkIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9jYnMuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9jYnMuY1xuQEAgLTMzNSw3ICszMzUsNyBAQCBzdGF0aWMgdm9pZCBjYnNfc2V0X3BvcnRfcmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2JzX3NjaGVkX2RhdGEgKnEpXG4gXHRcdHNwZWVkID0gZWNtZC5iYXNlLnNwZWVkO1xuIFxuIHNraXA6XG4tXHRwb3J0X3JhdGUgPSBzcGVlZCAqIDEwMDAgKiBCWVRFU19QRVJfS0JJVDtcbitcdHBvcnRfcmF0ZSA9IChzNjQpc3BlZWQgKiAxMDAwICogQllURVNfUEVSX0tCSVQ7XG4gXG4gXHRhdG9taWM2NF9zZXQoXHUwMDI2cS1cdTAwM2Vwb3J0X3JhdGUsIHBvcnRfcmF0ZSk7XG4gXHRuZXRkZXZfZGJnKGRldiwgXCJjYnM6IHNldCAlcydzIHBvcnRfcmF0ZSB0bzogJWxsZCwgbGlua3NwZWVkOiAlZFxcblwiLFxuQEAgLTM5Miw2ICszOTIsMTAgQEAgc3RhdGljIGludCBjYnNfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHR9XG4gXG4gXHRxb3B0ID0gbmxhX2RhdGEodGJbVENBX0NCU19QQVJNU10pO1xuK1x0aWYgKHFvcHQtXHUwMDNlaWRsZXNsb3BlIFx1MDAzYyAwKSB7XG4rXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJJZGxlc2xvcGUgbXVzdCBub3QgYmUgbmVnYXRpdmVcIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuIFxuIFx0aWYgKCFxb3B0LVx1MDAzZW9mZmxvYWQpIHtcbiBcdFx0Y2JzX3NldF9wb3J0X3JhdGUoZGV2LCBxKTtcbkBAIC00MDUsOCArNDA5LDggQEAgc3RhdGljIGludCBjYnNfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHQvKiBFdmVyeXRoaW5nIHdlbnQgT0ssIHNhdmUgdGhlIHBhcmFtZXRlcnMgdXNlZC4gKi9cbiBcdFdSSVRFX09OQ0UocS1cdTAwM2VoaWNyZWRpdCwgcW9wdC1cdTAwM2VoaWNyZWRpdCk7XG4gXHRXUklURV9PTkNFKHEtXHUwMDNlbG9jcmVkaXQsIHFvcHQtXHUwMDNlbG9jcmVkaXQpO1xuLVx0V1JJVEVfT05DRShxLVx1MDAzZWlkbGVzbG9wZSwgcW9wdC1cdTAwM2VpZGxlc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7XG4tXHRXUklURV9PTkNFKHEtXHUwMDNlc2VuZHNsb3BlLCBxb3B0LVx1MDAzZXNlbmRzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTtcbitcdFdSSVRFX09OQ0UocS1cdTAwM2VpZGxlc2xvcGUsIChzNjQpcW9wdC1cdTAwM2VpZGxlc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7XG4rXHRXUklURV9PTkNFKHEtXHUwMDNlc2VuZHNsb3BlLCAoczY0KXFvcHQtXHUwMDNlc2VuZHNsb3BlICogQllURVNfUEVSX0tCSVQpO1xuIFx0V1JJVEVfT05DRShxLVx1MDAzZW9mZmxvYWQsIHFvcHQtXHUwMDNlb2ZmbG9hZCk7XG4gXG4gXHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjI2LjgzODMzMTU0MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MjQyMjAxNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDQlMgcWRpc2MgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3NjaGVkL3NjaF9jYnMuY2AsIGFuZCBpdCdzIG1ha2luZyBhIGZldyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIENyZWRpdCBCYXNlZCBTaGFwZXIuIEZpcnN0LCB0aGVyZSdzIGEgY3J1Y2lhbCBmaXggaW4gYGNic19zZXRfcG9ydF9yYXRlYCB3aGVyZSB0aGV5J3ZlIGNhc3QgYHNwZWVkYCB0byBgczY0YCBiZWZvcmUgZG9pbmcgdGhlIG11bHRpcGxpY2F0aW9uLiBTbWFydCBtb3ZlOyBhdm9pZGluZyBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpcyBhbHdheXMgYSBnb29kIHByYWN0aWNlLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIG5ldHdvcmsgc3BlZWRzLlxuXG5UaGVuLCBpbiBgY2JzX2NoYW5nZWAsIGEgc2FuaXR5IGNoZWNrIGlzIGFkZGVkOiBgaWYgKHFvcHQtXHUwMDNlaWRsZXNsb3BlIFx1MDAzYyAwKWAgbm93IHJlc3VsdHMgaW4gYC1FSU5WQUxgIGlmIHRydWUuIFRoYXQgbWFrZXMgc2Vuc2UsIHlvdSB3b3VsZG4ndCBleHBlY3QgYW4gaWRsZXNsb3BlIHRvIGJlIG5lZ2F0aXZlOyBpdCBtYWtlcyB0aGUgY29kZSBtb3JlIHJvYnVzdCBhbmQgcHJldmVudHMgdW5leHBlY3RlZCBiZWhhdmlvciBpZiBzb21lb25lIHRyaWVzIHRvIGNvbmZpZ3VyZSBzb21ldGhpbmcgbm9uc2Vuc2ljYWwuIEZpbmFsbHksIHRoZXkncmUgY2FzdGluZyBgcW9wdC1cdTAwM2VpZGxlc2xvcGVgIGFuZCBgcW9wdC1cdTAwM2VzZW5kc2xvcGVgIHRvIGBzNjRgIGJlZm9yZSBtdWx0aXBseWluZyBieSBgQllURVNfUEVSX0tCSVRgIHdpdGhpbiB0aGUgYGNic19jaGFuZ2VgIGZ1bmN0aW9uLiBBZ2FpbiwgbG9va3MgbGlrZSB0aGV5J3JlIGJlaW5nIGNhcmVmdWwgdG8gcHJldmVudCBwb3RlbnRpYWwgb3ZlcmZsb3cgaXNzdWVzIGluIHRoZXNlIGNhbGN1bGF0aW9ucywgd2hpY2ggaXMgdG90YWxseSByZWFzb25hYmxlLlxuXG5TbywgdGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBDQlMgcWRpc2MuIE5vdywgSSBuZWVkIHRvIGNoZWNrIGBuZXQvc2NoZWQvc2NoX2Nicy5jYCB0byBzZWUgaG93IENCUyBpcyBjb25maWd1cmVkOyBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBDT05GSUcgb3B0aW9ucyBlbmFibGUgdGhpcyBwYXJ0aWN1bGFyIHFkaXNjLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQyMiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjMxLjQ2MjU1NjI0OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDA2OTE1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2hfY2JzLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvTWFrZWZpbGU9NjE9b2JqLSQoQ09ORklHX05FVF9TQ0hfRlFfUElFKVxcdCs9IHNjaF9mcV9waWUub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo2MjpvYmotJChDT05GSUdfTkVUX1NDSF9DQlMpXFx0Kz0gc2NoX2Nicy5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTYzLW9iai0kKENPTkZJR19ORVRfU0NIX0VURilcXHQrPSBzY2hfZXRmLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTI6MzEuNTI2NjMwODgxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEwNDA4ODg2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyB0aGUgQ0JTIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIHRoZSBzeXN0ZW0gaXMgY29uZmlndXJlZCB0byB1c2UgdGhlIGBORVRfU0NIX0NCU2Agc2NoZWR1bGVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzPyBXaGF0IGFyZSB0aGUga2V5IGZ1bmN0aW9uYWxpdGllcyB0aGF0IGFyZSBpbXBhY3RlZD8gSSd2ZSBiZWVuIHRhc2tlZCB3aXRoIGxvb2tpbmcgYXQgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoaW4gdGhlIENCUyBzY2hlZHVsZXIuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gZmxhZ2dlZCBmb3IgcmV2aWV3IGFyZSBgY2JzX3NldF9wb3J0X3JhdGVgICh3aGljaCBJIHNlZSBpcyBkZWNsYXJlZCBzdGF0aWMsIHNvIHNjb3BlIGlzIGxpbWl0ZWQgdG8gdGhpcyBmaWxlIG9yIG1vZHVsZSkgYW5kIGBjYnNfY2hhbmdlYCAoYWxzbyBzdGF0aWMsIGdvb2QgdG8ga25vdykuIE5vdywgbXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSBwdXJwb3NlIG9mIGBjYnNfY2hhbmdlYCBhbmQgdGhlIGJlc3Qgd2F5IHRvIGRvIHRoYXQgaXMgdG8gc2VlIGhvdyBhbmQgd2hlcmUgaXQgaXMgdXNlZC4gSSdsbCBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIHNpdGVzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaXRzIGZ1bmN0aW9uIHdpdGhpbiB0aGlzIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA1NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjM0LjYzMDcyMjQ3N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTE2MzMzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2JzX2NoYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX2Nicy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfY2JzLmM9MzQ2PXN0YXRpYyBpbnQgY2JzX2Rldl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LFxcbi0tXFxubmV0L3NjaGVkL3NjaF9jYnMuYy0zNzQtXFxubmV0L3NjaGVkL3NjaF9jYnMuYzozNzU6c3RhdGljIGludCBjYnNfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF9jYnMuYy0zNzYtXFx0XFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9jYnMuYz00MTk9c3RhdGljIGludCBjYnNfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbi0tXFxubmV0L3NjaGVkL3NjaF9jYnMuYy00NDctXFxubmV0L3NjaGVkL3NjaF9jYnMuYzo0NDg6XFx0cmV0dXJuIGNic19jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XFxubmV0L3NjaGVkL3NjaF9jYnMuYy00NDktfVxcbi0tXFxubmV0L3NjaGVkL3NjaF9jYnMuYz01NTM9c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgY2JzX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9jYnMuYy01NjItXFx0LmRlc3Ryb3lcXHQ9XFx0Y2JzX2Rlc3Ryb3ksXFxubmV0L3NjaGVkL3NjaF9jYnMuYzo1NjM6XFx0LmNoYW5nZVxcdFxcdD1cXHRjYnNfY2hhbmdlLFxcbm5ldC9zY2hlZC9zY2hfY2JzLmMtNTY0LVxcdC5kdW1wXFx0XFx0PVxcdGNic19kdW1wLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMjozNC45MjIzNjAzNTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzY2ODUzNTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFJlYXNvbmluZyBvbiBTZWxlY3RpbmcgRm9jdXNTeW1ib2xzIGZvciBDQlMgUWRpc2MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYGNic19jaGFuZ2VgIGNhbGxiYWNrLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBgY2JzX3FkaXNjX29wc2Agc3RydWN0dXJlLiBNeSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZSBhcmUgYGNic19jaGFuZ2VgIGFuZCBgY2JzX2luaXRgLiBUaGUgaXNzdWUgaXMsIHRoZXNlIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVXN1YWxseSwgdGhhdCB3b3VsZCBtZWFuIHRoZXkgY291bGQgYmUgaW5saW5lZCwgYW5kIG5vdCBnb29kIGNob2ljZXMgZm9yIGEgRm9jdXNTeW1ib2wgYmVjYXVzZSB0aGV5IHdvdWxkIG5vdCBiZSBkaXJlY3RseSBhZGRyZXNzYWJsZS4gQnV0LCBzaW5jZSBgLmNoYW5nZWAgYW5kIGAuaW5pdGAgaW4gYGNic19xZGlzY19vcHNgIGFyZSBmdW5jdGlvbiBwb2ludGVycywgdGhlIGNvbXBpbGVyICp3b24ndCogaW5saW5lIHRob3NlIGZ1bmN0aW9ucy4gVGhleSdsbCBoYXZlIHRoZWlyIG93biBhZGRyZXNzZXMuIEkgaGF2ZSB0byBtYWtlIGEgY2hvaWNlIG9mIHdoYXQgc3ltYm9scyB3aWxsIHByb3ZpZGUgdGhlIG1vc3QgYmVuZWZpdCB0byBteSBhbmFseXNpcy5cblxuVGhlIHByb21wdCwgaG93ZXZlciwgc3VnZ2VzdHMgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuIFRoYXQgdGhyb3dzIGEgd3JlbmNoIGluIG15IHBsYW5zIHNpbmNlIGBjYnNfY2hhbmdlYCAqaXMqIHN0YXRpYy4gSG1tLCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBub24tc3RhdGljIGFsdGVybmF0aXZlLiBgY2JzX3FkaXNjX29wc2AgaXMgcmVnaXN0ZXJlZCB3aXRoIGByZWdpc3Rlcl9xZGlzY2AsIHNvIGl0J3Mgbm90IGxpa2UgSSBjYW4gdXNlIHRoZSByZWdpc3RyYXRpb24gZnVuY3Rpb24gaXRzZWxmLlxuXG5TbywgSSB0aGluayBJJ2xsIHN0aWNrIHdpdGggYGNic19jaGFuZ2VgIGFuZCBgY2JzX2luaXRgIGFzIEZvY3VzU3ltYm9scy4gQWx0ZXJuYXRpdmVseSwgSSBjb3VsZCB0cnkgYGNic19lbnF1ZXVlYCBhbmQgYGNic19kZXF1ZXVlYCBnaXZlbiB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIHBhdGNoLiBCdXQgbGV0J3Mgc3RhcnQgd2l0aCBgY2JzX2NoYW5nZWAgYW5kIGBjYnNfaW5pdGAgYXMgYSBzdGFydGluZyBwb2ludC5cblxuVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyBgY2JzX2NoYW5nZWAgYW5kIGBjYnNfc2V0X3BvcnRfcmF0ZWAuIGBjYnNfY2hhbmdlYCBpcyBjYWxsZWQgZnJvbSBgY2JzX2luaXRgIGFuZCBhbHNvIGRpcmVjdGx5IHRocm91Z2ggdGhlIGAuY2hhbmdlYCBmdW5jdGlvbiBwb2ludGVyLiBUaGlzIHNvbGlkaWZpZXMgbXkgY2hvaWNlLlxuXG5MZXQncyBkb3VibGUtY2hlY2s6IGBjYnNfY2hhbmdlYCBpcyBpbmRlZWQgc3RhdGljLCBidXQgc2luY2UgaXQgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCB0aGUgY29tcGlsZXIgKndpbGwqIHRha2UgaXRzIGFkZHJlc3MsIHNvIGl0IHdvbid0IGJlIGlubGluZWQgaW4gdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdGFibGUuIEV4Y2VsbGVudC5cblxuSG9sZCBvbi4uLiBzeXprYWxsZXIgKmNhbiogdGFyZ2V0IHN0YXRpYyBmdW5jdGlvbnMsIGFzIGxvbmcgYXMgdGhleSdyZSBub3QgaW5saW5lZC4gR3JlYXQuIFRoYXQgcmVpbmZvcmNlcyBteSBvcmlnaW5hbCBkZWNpc2lvbi4gU28sIEknbGwgcHJvdmlkZSBgY2JzX2NoYW5nZWAgYW5kIGBjYnNfaW5pdGAuXG5cbk5vdywgbGV0IG1lIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGBORVRfU0NIX0NCU2AgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjc4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjQxLjY4OTIxNjQ4MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg2NDAwNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hfQ0JTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MTM0PWNvbmZpZyBORVRfU0NIX1RCRlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTQ0LVxcbm5ldC9zY2hlZC9LY29uZmlnOjE0NTpjb25maWcgTkVUX1NDSF9DQlNcXG5uZXQvc2NoZWQvS2NvbmZpZy0xNDYtXFx0dHJpc3RhdGUgXFxcIkNyZWRpdCBCYXNlZCBTaGFwZXIgKENCUylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjQxLjgwNzg2MDM3OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MDA0MDg3MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHJlYWRpbmcgdGhlIHByb3ZpZGVkIHRleHQ6XG5cbioqRXhhbWluaW5nIHRoZSBMaW51eCBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIG5ldHdvcmsgc2NoZWR1bGluZy4gTGV0J3Mgc2VlLi4uIEknbSBnb2luZyB0byBuYXZpZ2F0ZSBvdmVyIHRvIHRoZSBgbmV0L3NjaGVkL0tjb25maWdgIGZpbGUuIEknbGwgZm9jdXMgbXkgYXR0ZW50aW9uIGFyb3VuZCBsaW5lIDE0NS4gSSBrbm93IHRoYXQgdGhpcyBmaWxlIGlzIHRoZSBwbGFjZSB0byBnbyB0byBmaW5kIHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIGNvbmZpZ3VyYWJsZSBvcHRpb25zIHJlbGF0ZWQgdG8gdHJhZmZpYyBjb250cm9sIGFuZCBxdWV1aW5nIGRpc2NpcGxpbmVzLiBIb3BlZnVsbHksIGxpbmUgMTQ1IHdpbGwgZ2l2ZSBtZSBhIGdvb2QgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZCBzb21lIHJlbGV2YW50IHNjaGVkdWxlciBmZWF0dXJlcy4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHNvbWUgaW1wb3J0YW50IGRlZmluaXRpb25zIGluIHRoYXQgYXJlYS4gTGV0J3Mgc2VlIHdoYXQncyB0aGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjYwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTI6NDQuNjA4MjcxODA2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE0MDpcXHRcXHQgIFNlZSB0aGUgdG9wIG9mIFxcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfdGJmLmNcXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXFxuIDE0MTpcXHRcXG4gMTQyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxNDM6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX3RiZi5cXG4gMTQ0OlxcdFxcbiAxNDU6XFx0Y29uZmlnIE5FVF9TQ0hfQ0JTXFxuIDE0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiQ3JlZGl0IEJhc2VkIFNoYXBlciAoQ0JTKVxcXCJcXG4gMTQ3OlxcdFxcdGhlbHBcXG4gMTQ4OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIENyZWRpdCBCYXNlZCBTaGFwZXIgKENCUykgcGFja2V0XFxuIDE0OTpcXHRcXHQgIHNjaGVkdWxpbmcgYWxnb3JpdGhtLlxcbiAxNTA6XFx0XFxuIDE1MTpcXHRcXHQgIFNlZSB0aGUgdG9wIG9mIFxcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfY2JzLmNcXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXFxuIDE1MjpcXHRcXG4gMTUzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxNTQ6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX2Nicy5cXG4gMTU1OlxcdFxcbiAxNTY6XFx0Y29uZmlnIE5FVF9TQ0hfRVRGXFxuIDE1NzpcXHRcXHR0cmlzdGF0ZSBcXFwiRWFybGllc3QgVHhUaW1lIEZpcnN0IChFVEYpXFxcIlxcbiAxNTg6XFx0XFx0aGVscFxcbiAxNTk6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgRWFybGllc3QgVHhUaW1lIEZpcnN0IChFVEYpIHBhY2tldFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMjo0NC42MDgzNzQzNzZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1Mzc2MTM1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZSwgdXNpbmcgdGhlIGZpcnN0IHBlcnNvbiBhbmQgYWltaW5nIGZvciBhIGZ1bHNvbWUgcmVuZGVyaW5nOlxuXG4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiBORVRfU0NIX0NCUyoqXG5cbkFscmlnaHQsIGxvb2tpbmcgYXQgYE5FVF9TQ0hfQ0JTYCwgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGF0IG1lIGlzIHRoZSBsYWNrIG9mIGFueSBvYnZpb3VzLCB1bnVzdWFsIGRlcGVuZGVuY2llcy4gVGhhdCdzIGFsd2F5cyBhIGdvb2Qgc3RhcnQ7IGl0IHNpbXBsaWZpZXMgdGhpbmdzLiBNeSBtZW50YWwgbW9kZWwgZmxhZ3MgdGhpcyBhcyBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIG1vZHVsZSwgYXQgbGVhc3QgaW5pdGlhbGx5LiBOb3csIHRoZSBwYXJlbnQgbW9kdWxlIGlzIGxpc3RlZCBhcyBgTkVUX1NDSEVEYCwgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkIGZvciBuZXR3b3JrIHNjaGVkdWxpbmcgY29tcG9uZW50cy4gU28sIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gYE5FVF9TQ0hFRGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvdXIgYW5kIGNvbnN0cmFpbnRzIGJlY2F1c2UgYE5FVF9TQ0hfQ0JTYCwgYnkgaXRzIG5hdHVyZSwgd2lsbCBpbmhlcml0IHNvbWUgb2YgdGhvc2UgY29yZSBiZWhhdmlvdXJzLiBJIHdpbGwgdmVyaWZ5IHRoYXQgYE5FVF9TQ0hFRGAgaXMgcHJvcGVybHkgaW1wbGVtZW50ZWQuIEFuZCwgdGhlbiBJJ2xsIHVzZSB0aGF0IGtub3dsZWRnZSBhcyB0aGUgZm91bmRhdGlvbiBmb3IgZXhhbWluaW5nIGhvdyBgTkVUX1NDSF9DQlNgIGludGVncmF0ZXMgYW5kIGV4dGVuZHMgdGhhdCBmdW5jdGlvbmFsaXR5LiBLbm93aW5nIHRoZSBwYXJlbnQgaXMgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNoaWxkLiBUaW1lIHRvIGRpZyBpbnRvIGBORVRfU0NIRURgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTg3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMjo0OC4wNjIxMzkyODZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzQ3OTU0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NDSEVEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWctNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNy1cXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjQ4LjE3OTYyODYzNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTMyNjIyMDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCBwcm9jZXNzaW5nIHRoZSBwcm92aWRlZCB0ZXh0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwncyBUcmFmZmljIENvbnRyb2wgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGtlcm5lbCdzIHRyYWZmaWMgY29udHJvbCBmZWF0dXJlcyBhcmUgY29uZmlndXJlZC4gU28sIEknbSBoZWFkaW5nIHN0cmFpZ2h0IGZvciB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSBzdGFydGluZyBteSBkZWVwIGRpdmUgYXJvdW5kIGxpbmUgNi4gSSdtIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gYmUgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBodWIgZm9yIGFsbCB0aGUgcXVldWluZyBkaXNjaXBsaW5lcywgY2xhc3NpZmllcnMsIGFuZCBzY2hlZHVsZXJzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBoaWdoLWxldmVsIHN0cnVjdHVyZSwgdGhlIGRlcGVuZGVuY2llcywgYW5kIHRoZSBvcHRpb25zIHRoYXQgY29udHJvbCB3aGljaCBmZWF0dXJlcyBhcmUgY29tcGlsZWQgaW4gb3IgYXMgbW9kdWxlcy4gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHRoZSBhcmNoaXRlY3R1cmFsIGRlcGVuZGVuY2llcywgdGhlIG9wdGlvbnMgZm9yIHZhcmlvdXMgYWxnb3JpdGhtcywgYW5kIHRoZSBkZWZhdWx0IHNldHRpbmdzIHRoYXQgYXJlIGNob3Nlbi4gRnJvbSB0aGVyZSwgSSBzaG91bGQgZ2FpbiBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIHRyYWZmaWMgY29udHJvbCBzdWJzeXN0ZW0ncyBkZXNpZ24gYW5kIGhvdyB0byBjdXN0b21pemUgaXQgZm9yIGRpZmZlcmVudCBuZXR3b3JrIGVudmlyb25tZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUzNCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjUyLjExMjI1Mjk3M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBUcmFmZmljIGNvbnRyb2wgY29uZmlndXJhdGlvbi5cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudWNvbmZpZyBORVRfU0NIRURcXG4gICA3OlxcdFxcdGJvb2wgXFxcIlFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1xcXCJcXG4gICA4OlxcdFxcdHNlbGVjdCBORVRfU0NIX0ZJRk9cXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgV2hlbiB0aGUga2VybmVsIGhhcyBzZXZlcmFsIHBhY2tldHMgdG8gc2VuZCBvdXQgb3ZlciBhIG5ldHdvcmtcXG4gIDExOlxcdFxcdCAgZGV2aWNlLCBpdCBoYXMgdG8gZGVjaWRlIHdoaWNoIG9uZXMgdG8gc2VuZCBmaXJzdCwgd2hpY2ggb25lcyB0b1xcbiAgMTI6XFx0XFx0ICBkZWxheSwgYW5kIHdoaWNoIG9uZXMgdG8gZHJvcC4gVGhpcyBpcyB0aGUgam9iIG9mIHRoZSBxdWV1ZWluZ1xcbiAgMTM6XFx0XFx0ICBkaXNjaXBsaW5lcywgc2V2ZXJhbCBkaWZmZXJlbnQgYWxnb3JpdGhtcyBmb3IgaG93IHRvIGRvIHRoaXNcXG4gIDE0OlxcdFxcdCAgXFxcImZhaXJseVxcXCIgaGF2ZSBiZWVuIHByb3Bvc2VkLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIElmIHlvdSBzYXkgTiBoZXJlLCB5b3Ugd2lsbCBnZXQgdGhlIHN0YW5kYXJkIHBhY2tldCBzY2hlZHVsZXIsIHdoaWNoXFxuICAxNzpcXHRcXHQgIGlzIGEgRklGTyAoZmlyc3QgY29tZSwgZmlyc3Qgc2VydmVkKS4gSWYgeW91IHNheSBZIGhlcmUsIHlvdSB3aWxsIGJlXFxuICAxODpcXHRcXHQgIGFibGUgdG8gY2hvb3NlIGZyb20gYW1vbmcgc2V2ZXJhbCBhbHRlcm5hdGl2ZSBhbGdvcml0aG1zIHdoaWNoIGNhblxcbiAgMTk6XFx0XFx0ICB0aGVuIGJlIGF0dGFjaGVkIHRvIGRpZmZlcmVudCBuZXR3b3JrIGRldmljZXMuIFRoaXMgaXMgdXNlZnVsIGZvclxcbiAgMjA6XFx0XFx0ICBleGFtcGxlIGlmIHNvbWUgb2YgeW91ciBuZXR3b3JrIGRldmljZXMgYXJlIHJlYWwgdGltZSBkZXZpY2VzIHRoYXRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTI6NTIuMTEyMzMxNzEzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2OTAwMjI0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ0JTIHFkaXNjIFBhdGNoKipcblxuT2theSwgc28gSSBzZWUgdGhpcyBwYXRjaCByZXF1aXJlcyBgTkVUX1NDSEVEYCwgdGhhdCdzIGV4cGVjdGVkLiBMZXQgbWUganVzdCBjb25maXJtIGlmIGBORVRfU0NIX0NCU2AgaGFzIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBOb3BlLCBsb29rcyBjbGVhbiB0aGVyZS5cblxuQWxyaWdodCwgZnVuY3Rpb25hbGx5LCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYW4gaW50ZWdlciBvdmVyZmxvdywgd2hpY2ggaXMgYWx3YXlzIGEgZ29vZCB0aGluZywgYW5kIGFkZGluZyBhIHZhbGlkYXRpb24gY2hlY2sgdG8gaGFuZGxlIG5lZ2F0aXZlIGlkbGVzbG9wZS4gSXQncyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgd2FycmFudHMgZnV6emluZy4gYGNic19jaGFuZ2VgIGFuZCBgY2JzX2luaXRgIGFyZSB0aGUga2V5IGFyZWFzIHRvIHRhcmdldCBiYXNlZCBvbiB0aGF0IGNoYW5nZS4gVGhvc2UgYEZvY3VzU3ltYm9sc2AgbG9vayByaWdodC5cblxuSnVzdCB3YW50IHRvIGNvbmZpcm0gYGNic19jaGFuZ2VgIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZS4uLiBZZXMsIGdvb2QsIGl0IGlzLiBJdCdzIGEgcWRpc2MgY2hhbmdlIGNhbGxiYWNrLCB3aGljaCBtZWFucyBgdGMgcWRpc2MgYWRkL2NoYW5nZWAgdmlhIG5ldGxpbmsgY2FuIHRyaWdnZXIgaXQsIG1lYW5pbmcgd2UgY2FuIGZ1enogaXQgZWZmZWN0aXZlbHkgZnJvbSBvdXRzaWRlLlxuXG5TbywgaW4gc3VtbWFyeSwgd2UncmUgZGVhbGluZyB3aXRoIGFuIGludGVnZXIgb3ZlcmZsb3cgZml4IGFuZCBpZGxlIHNsb3BlIGNoZWNrIGluIHRoZSBDQlMgcWRpc2MsIHRyaWdnZXJlZCB2aWEgbmV0bGluay4gSSdsbCBuZWVkIHRvIGNvbmZpZ3VyZSBgTkVUX1NDSEVEYCBhbmQgYE5FVF9TQ0hfQ0JTYCwgYW5kIEknbGwgZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRoZSBgY2JzX2NoYW5nZWAgYW5kIGBjYnNfaW5pdGAgZnVuY3Rpb25zLiBUaGlzIHNlZW1zIGxpa2UgYSBtYW5hZ2VhYmxlIGFuZCB0YXJnZXRlZCBmdXp6aW5nIGNhbXBhaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDkwLCJPdXRwdXRUb2tlbnMiOjEzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjU3LjgwMjM1ODYyOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMzk1MDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfQ0JTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2JzX2NoYW5nZVwiLFxuICAgIFwiY2JzX2luaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBDcmVkaXQgQmFzZWQgU2hhcGVyIChDQlMpIHFkaXNjIGJ5IGNhc3RpbmcgdmFsdWVzIHRvIHM2NCBiZWZvcmUgbXVsdGlwbGljYXRpb24sIGFuZCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgbmVnYXRpdmUgaWRsZXNsb3BlLiBUaGlzIG1vZGlmaWVzIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljIG9mIHRoZSBDQlMgcWRpc2MsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgcWRpc2MgaW5pdGlhbGl6YXRpb24gYW5kIGNoYW5nZSBjYWxsYmFja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfU0NIX0NCU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNic19jaGFuZ2VcIixcbiAgICBcImNic19pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgQ3JlZGl0IEJhc2VkIFNoYXBlciAoQ0JTKSBxZGlzYyBieSBjYXN0aW5nIHZhbHVlcyB0byBzNjQgYmVmb3JlIG11bHRpcGxpY2F0aW9uLCBhbmQgYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIG5lZ2F0aXZlIGlkbGVzbG9wZS4gVGhpcyBtb2RpZmllcyB0aGUgY29uZmlndXJhdGlvbiBsb2dpYyBvZiB0aGUgQ0JTIHFkaXNjLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKHRjIHFkaXNjKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHFkaXNjIGluaXRpYWxpemF0aW9uIGFuZCBjaGFuZ2UgY2FsbGJhY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMjo1Ny44ODU3NjA2ODFaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNTEzNTM0ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMjo1Ny44ODYxOTU4NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2MjUwOTE0MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgaW50ZWdlciBvdmVyZmxvdyBhbmQgbmVnYXRpdmUgdmFsdWUgaXNzdWVzIGluIHRoZSBDQlMgcGFja2V0IHNjaGVkdWxlciBieSBjYXN0aW5nIHZhcmlhYmxlcyB0byBzNjQgYmVmb3JlIG11bHRpcGxpY2F0aW9uIGFuZCBhZGRpbmcgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciBuZWdhdGl2ZSBpZGxlc2xvcGUuIFRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlIGFsbG9jYXRpb25zIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpYyBlcnJvcnMgb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZXMsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIHNhbml0aXplcnMuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTQ4MzE5YmQzYmFhZjc2ZGE4ZGRmNTc0NDc0ZWVjZjdkMGU0Nzg2MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDA2OjEyOjI1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9jYnMuYyBiL25ldC9zY2hlZC9zY2hfY2JzLmNcbmluZGV4IDFjOTM0NjljNTZlM2QuLjhkYjk4ZDdjOThhOGQgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX2Nicy5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX2Nicy5jXG5AQCAtMzM1LDcgKzMzNSw3IEBAIHN0YXRpYyB2b2lkIGNic19zZXRfcG9ydF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYnNfc2NoZWRfZGF0YSAqcSlcbiBcdFx0c3BlZWQgPSBlY21kLmJhc2Uuc3BlZWQ7XG4gXG4gc2tpcDpcbi1cdHBvcnRfcmF0ZSA9IHNwZWVkICogMTAwMCAqIEJZVEVTX1BFUl9LQklUO1xuK1x0cG9ydF9yYXRlID0gKHM2NClzcGVlZCAqIDEwMDAgKiBCWVRFU19QRVJfS0JJVDtcbiBcbiBcdGF0b21pYzY0X3NldChcdTAwMjZxLVx1MDAzZXBvcnRfcmF0ZSwgcG9ydF9yYXRlKTtcbiBcdG5ldGRldl9kYmcoZGV2LCBcImNiczogc2V0ICVzJ3MgcG9ydF9yYXRlIHRvOiAlbGxkLCBsaW5rc3BlZWQ6ICVkXFxuXCIsXG5AQCAtMzkyLDYgKzM5MiwxMCBAQCBzdGF0aWMgaW50IGNic19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdH1cbiBcbiBcdHFvcHQgPSBubGFfZGF0YSh0YltUQ0FfQ0JTX1BBUk1TXSk7XG4rXHRpZiAocW9wdC1cdTAwM2VpZGxlc2xvcGUgXHUwMDNjIDApIHtcbitcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcIklkbGVzbG9wZSBtdXN0IG5vdCBiZSBuZWdhdGl2ZVwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4gXG4gXHRpZiAoIXFvcHQtXHUwMDNlb2ZmbG9hZCkge1xuIFx0XHRjYnNfc2V0X3BvcnRfcmF0ZShkZXYsIHEpO1xuQEAgLTQwNSw4ICs0MDksOCBAQCBzdGF0aWMgaW50IGNic19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdC8qIEV2ZXJ5dGhpbmcgd2VudCBPSywgc2F2ZSB0aGUgcGFyYW1ldGVycyB1c2VkLiAqL1xuIFx0V1JJVEVfT05DRShxLVx1MDAzZWhpY3JlZGl0LCBxb3B0LVx1MDAzZWhpY3JlZGl0KTtcbiBcdFdSSVRFX09OQ0UocS1cdTAwM2Vsb2NyZWRpdCwgcW9wdC1cdTAwM2Vsb2NyZWRpdCk7XG4tXHRXUklURV9PTkNFKHEtXHUwMDNlaWRsZXNsb3BlLCBxb3B0LVx1MDAzZWlkbGVzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTtcbi1cdFdSSVRFX09OQ0UocS1cdTAwM2VzZW5kc2xvcGUsIHFvcHQtXHUwMDNlc2VuZHNsb3BlICogQllURVNfUEVSX0tCSVQpO1xuK1x0V1JJVEVfT05DRShxLVx1MDAzZWlkbGVzbG9wZSwgKHM2NClxb3B0LVx1MDAzZWlkbGVzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTtcbitcdFdSSVRFX09OQ0UocS1cdTAwM2VzZW5kc2xvcGUsIChzNjQpcW9wdC1cdTAwM2VzZW5kc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7XG4gXHRXUklURV9PTkNFKHEtXHUwMDNlb2ZmbG9hZCwgcW9wdC1cdTAwM2VvZmZsb2FkKTtcbiBcbiBcdHJldHVybiAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTI6NTcuODg2MTk2NDNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI1MDg5NDE2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDQlMgU2NoZWR1bGVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGlzIHBhdGNoIGlzIGhvbmluZyBpbiBvbiBgbmV0L3NjaGVkL3NjaF9jYnMuY2AgYW5kIHByaW1hcmlseSBhZGRyZXNzaW5nIHNvbWUgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSBDQlMgc2NoZWR1bGVyJ3MgaW50ZXJuYWwgY2FsY3VsYXRpb25zLiBUaGUga2V5IHNlZW1zIHRvIGJlIGFyb3VuZCB0aG9zZSBzbG9wZSBhbmQgc3BlZWQgdmFsdWVzLiBTcGVjaWZpY2FsbHksIGl0IGFwcGVhcnMgdGhlIGNvZGUgaXMgZG9pbmcgc29tZSBhcml0aG1ldGljIHdpdGggYHNwZWVkYCwgYGlkbGVzbG9wZWAsIGFuZCBgc2VuZHNsb3BlYCwgYW5kIHRvIHByZXZlbnQgYW55IGludGVnZXIgb3ZlcmZsb3cgb3IgdW5kZXJmbG93IHByb2JsZW1zLCBpdCdzIGNhc3RpbmcgYHNwZWVkYCB0byBgczY0YCBhbmQgYWxzbyBjYXN0aW5nIGJvdGggYHFvcHQtXHUwMDNlaWRsZXNsb3BlYCBhbmQgYHFvcHQtXHUwMDNlc2VuZHNsb3BlYCB0byBgczY0YCBiZWZvcmUgZG9pbmcgc29tZSBtdWx0aXBsaWNhdGlvbiB3aXRoIGBCWVRFU19QRVJfS0JJVGAuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIGVuc3VyaW5nIGNhbGN1bGF0aW9uIGFjY3VyYWN5LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IGxhcmdlIHZhbHVlcy5cblxuSSdtIGFsc28gc2VlaW5nIGEgY3J1Y2lhbCBjaGVjayBhZGRlZDogYGlmIChxb3B0LVx1MDAzZWlkbGVzbG9wZSBcdTAwM2MgMClgIHdoaWNoLCBpZiB0cnVlLCB3aWxsIHJldHVybiBgLUVJTlZBTGAuIFRoaXMgaXMgYSBzZW5zaWJsZSBhZGRpdGlvbiwgYXMgbmVnYXRpdmUgc2xvcGVzIHByb2JhYmx5IGRvbid0IG1ha2Ugc2Vuc2UgaW4gdGhpcyBjb250ZXh0LCBzbyB2YWxpZGF0aW5nIHRoZSBpbnB1dCBwcmV2ZW50cyB1bmV4cGVjdGVkIGJlaGF2aW9yLlxuXG5CYXNlZCBvbiB0aGVzZSBjaGFuZ2VzLCBJJ20gY29uZmlkZW50IHRoZXJlIGFyZW4ndCBhbnkgb2J2aW91cyByZWQgZmxhZ3MuIE5vIGluZGljYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBubyBzaWducyBvZiBpbmZvcm1hdGlvbiBsZWFrcywgYW5kIG5vIG1lbW9yeSBhbGxvY2F0aW9ucyB0aGF0IEkgY2FuIHNlZS4gVGhlIHBhdGNoIGlzIHNvbGVseSBmb2N1c2VkIG9uIGZpeGluZyBsb2dpYyBhbmQgYXJpdGhtZXRpYyB0byBpbXByb3ZlIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBDQlMgc2NoZWR1bGVyLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGF0IGBxb3B0YCBpcywgYXMgZXhwZWN0ZWQsIGEgcG9pbnRlciB0byB0aGUgYHN0cnVjdCB0Y19jYnNfcW9wdGAuIFRoZSBjaGVja3MgYW5kIGNhc3RzIGFsbCBhbGlnbiB3aXRoIGFkZHJlc3NpbmcgcG90ZW50aWFsIGludGVnZXIgaXNzdWVzLCBhbmQgdGhlIG92ZXJhbGwgbG9naWMgc2VlbXMgc291bmQuXG5cblRoZXJlZm9yZSwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGVzZSBjaGFuZ2VzLCBJJ20gY29tZm9ydGFibGUgc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAgb24gdGhpcyBwYXRjaC4gV2UgZG9uJ3QgbmVlZCBLTVNBTiBoZXJlOyB0aGVzZSBhcmUgc3RyYWlnaHRmb3J3YXJkIGFyaXRobWV0aWMgYW5kIGlucHV0IHZhbGlkYXRpb24gZml4ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MTksIk91dHB1dFRva2VucyI6MTIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTM6MDQuMTM3MDkyNzM4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgaW50ZWdlciBvdmVyZmxvdyBhbmQgbmVnYXRpdmUgdmFsdWUgaXNzdWVzIGluIHRoZSBDQlMgcGFja2V0IHNjaGVkdWxlciBieSBjYXN0aW5nIHZhcmlhYmxlcyB0byBzNjQgYmVmb3JlIG11bHRpcGxpY2F0aW9uIGFuZCBhZGRpbmcgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciBuZWdhdGl2ZSBpZGxlc2xvcGUuIFRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlIGFsbG9jYXRpb25zIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpYyBlcnJvcnMgb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZXMsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIHNhbml0aXplcnMuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGludGVnZXIgb3ZlcmZsb3cgYW5kIG5lZ2F0aXZlIHZhbHVlIGlzc3VlcyBpbiB0aGUgQ0JTIHBhY2tldCBzY2hlZHVsZXIgYnkgY2FzdGluZyB2YXJpYWJsZXMgdG8gczY0IGJlZm9yZSBtdWx0aXBsaWNhdGlvbiBhbmQgYWRkaW5nIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgbmVnYXRpdmUgaWRsZXNsb3BlLiBUaGVzZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMgd291bGQgYmUgbG9naWMgZXJyb3JzIG9yIG91dC1vZi1ib3VuZHMgaXNzdWVzLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBzYW5pdGl6ZXJzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p497[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 06:10:20 +0000 UTC FinishedAt: 2026-08-13 06:13:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "7b53449540502cb21b32bca62a6258e22cd97bbe", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_CBS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "7b53449540502cb21b32bca62a6258e22cd97bbe", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_CBS" ], "series_id": "ae8b78bc-13ea-4ffe-8d6e-47994270d5ad" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "cbs_change", "cbs_init" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0NCUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Nic19jaGFuZ2UmIzM0OywKICAgICYjMzQ7Y2JzX2luaXQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgaW50ZWdlciBvdmVyZmxvdyBhbmQgbmVnYXRpdmUgdmFsdWUgaXNzdWVzIGluIHRoZSBDQlMgcGFja2V0IHNjaGVkdWxlciBieSBjYXN0aW5nIHZhcmlhYmxlcyB0byBzNjQgYmVmb3JlIG11bHRpcGxpY2F0aW9uIGFuZCBhZGRpbmcgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciBuZWdhdGl2ZSBpZGxlc2xvcGUuIFRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlIGFsbG9jYXRpb25zIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpYyBlcnJvcnMgb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZXMsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIHNhbml0aXplcnMuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIENyZWRpdCBCYXNlZCBTaGFwZXIgKENCUykgcWRpc2MgYnkgY2FzdGluZyB2YWx1ZXMgdG8gczY0IGJlZm9yZSBtdWx0aXBsaWNhdGlvbiwgYW5kIGFkZHMgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciBuZWdhdGl2ZSBpZGxlc2xvcGUuIFRoaXMgbW9kaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMgb2YgdGhlIENCUyBxZGlzYywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rICh0YyBxZGlzYykuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBxZGlzYyBpbml0aWFsaXphdGlvbiBhbmQgY2hhbmdlIGNhbGxiYWNrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU0ODMxOWJkM2JhYWY3NmRhOGRkZjU3NDQ3NGVlY2Y3ZDBlNDc4NjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwNjoxMjoyNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Nicy5jIGIvbmV0L3NjaGVkL3NjaF9jYnMuY1xuaW5kZXggMWM5MzQ2OWM1NmUzZC4uOGRiOThkN2M5OGE4ZCAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfY2JzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfY2JzLmNcbkBAIC0zMzUsNyAmIzQzOzMzNSw3IEBAIHN0YXRpYyB2b2lkIGNic19zZXRfcG9ydF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYnNfc2NoZWRfZGF0YSAqcSlcbiBcdFx0c3BlZWQgPSBlY21kLmJhc2Uuc3BlZWQ7XG4gXG4gc2tpcDpcbi1cdHBvcnRfcmF0ZSA9IHNwZWVkICogMTAwMCAqIEJZVEVTX1BFUl9LQklUO1xuJiM0MztcdHBvcnRfcmF0ZSA9IChzNjQpc3BlZWQgKiAxMDAwICogQllURVNfUEVSX0tCSVQ7XG4gXG4gXHRhdG9taWM2NF9zZXQoXHUwMDI2cS1cdTAwM2Vwb3J0X3JhdGUsIHBvcnRfcmF0ZSk7XG4gXHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7Y2JzOiBzZXQgJXMmIzM5O3MgcG9ydF9yYXRlIHRvOiAlbGxkLCBsaW5rc3BlZWQ6ICVkXFxuXCYjMzQ7LFxuQEAgLTM5Miw2ICYjNDM7MzkyLDEwIEBAIHN0YXRpYyBpbnQgY2JzX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0fVxuIFxuIFx0cW9wdCA9IG5sYV9kYXRhKHRiW1RDQV9DQlNfUEFSTVNdKTtcbiYjNDM7XHRpZiAocW9wdC1cdTAwM2VpZGxlc2xvcGUgXHUwMDNjIDApIHtcbiYjNDM7XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7SWRsZXNsb3BlIG11c3Qgbm90IGJlIG5lZ2F0aXZlXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiBcbiBcdGlmICghcW9wdC1cdTAwM2VvZmZsb2FkKSB7XG4gXHRcdGNic19zZXRfcG9ydF9yYXRlKGRldiwgcSk7XG5AQCAtNDA1LDggJiM0Mzs0MDksOCBAQCBzdGF0aWMgaW50IGNic19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdC8qIEV2ZXJ5dGhpbmcgd2VudCBPSywgc2F2ZSB0aGUgcGFyYW1ldGVycyB1c2VkLiAqL1xuIFx0V1JJVEVfT05DRShxLVx1MDAzZWhpY3JlZGl0LCBxb3B0LVx1MDAzZWhpY3JlZGl0KTtcbiBcdFdSSVRFX09OQ0UocS1cdTAwM2Vsb2NyZWRpdCwgcW9wdC1cdTAwM2Vsb2NyZWRpdCk7XG4tXHRXUklURV9PTkNFKHEtXHUwMDNlaWRsZXNsb3BlLCBxb3B0LVx1MDAzZWlkbGVzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTtcbi1cdFdSSVRFX09OQ0UocS1cdTAwM2VzZW5kc2xvcGUsIHFvcHQtXHUwMDNlc2VuZHNsb3BlICogQllURVNfUEVSX0tCSVQpO1xuJiM0MztcdFdSSVRFX09OQ0UocS1cdTAwM2VpZGxlc2xvcGUsIChzNjQpcW9wdC1cdTAwM2VpZGxlc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7XG4mIzQzO1x0V1JJVEVfT05DRShxLVx1MDAzZXNlbmRzbG9wZSwgKHM2NClxb3B0LVx1MDAzZXNlbmRzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTtcbiBcdFdSSVRFX09OQ0UocS1cdTAwM2VvZmZsb2FkLCBxb3B0LVx1MDAzZW9mZmxvYWQpO1xuIFxuIFx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0NCUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Nic19jaGFuZ2UmIzM0OywKICAgICYjMzQ7Y2JzX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgQ3JlZGl0IEJhc2VkIFNoYXBlciAoQ0JTKSBxZGlzYyBieSBjYXN0aW5nIHZhbHVlcyB0byBzNjQgYmVmb3JlIG11bHRpcGxpY2F0aW9uLCBhbmQgYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIG5lZ2F0aXZlIGlkbGVzbG9wZS4gVGhpcyBtb2RpZmllcyB0aGUgY29uZmlndXJhdGlvbiBsb2dpYyBvZiB0aGUgQ0JTIHFkaXNjLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKHRjIHFkaXNjKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHFkaXNjIGluaXRpYWxpemF0aW9uIGFuZCBjaGFuZ2UgY2FsbGJhY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTQ4MzE5YmQzYmFhZjc2ZGE4ZGRmNTc0NDc0ZWVjZjdkMGU0Nzg2MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDA2OjEyOjI1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9jYnMuYyBiL25ldC9zY2hlZC9zY2hfY2JzLmMKaW5kZXggMWM5MzQ2OWM1NmUzZC4uOGRiOThkN2M5OGE4ZCAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9jYnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2Nicy5jCkBAIC0zMzUsNyAmIzQzOzMzNSw3IEBAIHN0YXRpYyB2b2lkIGNic19zZXRfcG9ydF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYnNfc2NoZWRfZGF0YSAqcSkKIAkJc3BlZWQgPSBlY21kLmJhc2Uuc3BlZWQ7CiAKIHNraXA6Ci0JcG9ydF9yYXRlID0gc3BlZWQgKiAxMDAwICogQllURVNfUEVSX0tCSVQ7CiYjNDM7CXBvcnRfcmF0ZSA9IChzNjQpc3BlZWQgKiAxMDAwICogQllURVNfUEVSX0tCSVQ7CiAKIAlhdG9taWM2NF9zZXQoJmFtcDtxLSZndDtwb3J0X3JhdGUsIHBvcnRfcmF0ZSk7CiAJbmV0ZGV2X2RiZyhkZXYsICYjMzQ7Y2JzOiBzZXQgJXMmIzM5O3MgcG9ydF9yYXRlIHRvOiAlbGxkLCBsaW5rc3BlZWQ6ICVkXG4mIzM0OywKQEAgLTM5Miw2ICYjNDM7MzkyLDEwIEBAIHN0YXRpYyBpbnQgY2JzX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCX0KIAogCXFvcHQgPSBubGFfZGF0YSh0YltUQ0FfQ0JTX1BBUk1TXSk7CiYjNDM7CWlmIChxb3B0LSZndDtpZGxlc2xvcGUgJmx0OyAwKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7SWRsZXNsb3BlIG11c3Qgbm90IGJlIG5lZ2F0aXZlJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KIAogCWlmICghcW9wdC0mZ3Q7b2ZmbG9hZCkgewogCQljYnNfc2V0X3BvcnRfcmF0ZShkZXYsIHEpOwpAQCAtNDA1LDggJiM0Mzs0MDksOCBAQCBzdGF0aWMgaW50IGNic19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkvKiBFdmVyeXRoaW5nIHdlbnQgT0ssIHNhdmUgdGhlIHBhcmFtZXRlcnMgdXNlZC4gKi8KIAlXUklURV9PTkNFKHEtJmd0O2hpY3JlZGl0LCBxb3B0LSZndDtoaWNyZWRpdCk7CiAJV1JJVEVfT05DRShxLSZndDtsb2NyZWRpdCwgcW9wdC0mZ3Q7bG9jcmVkaXQpOwotCVdSSVRFX09OQ0UocS0mZ3Q7aWRsZXNsb3BlLCBxb3B0LSZndDtpZGxlc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7Ci0JV1JJVEVfT05DRShxLSZndDtzZW5kc2xvcGUsIHFvcHQtJmd0O3NlbmRzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTsKJiM0MzsJV1JJVEVfT05DRShxLSZndDtpZGxlc2xvcGUsIChzNjQpcW9wdC0mZ3Q7aWRsZXNsb3BlICogQllURVNfUEVSX0tCSVQpOwomIzQzOwlXUklURV9PTkNFKHEtJmd0O3NlbmRzbG9wZSwgKHM2NClxb3B0LSZndDtzZW5kc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7CiAJV1JJVEVfT05DRShxLSZndDtvZmZsb2FkLCBxb3B0LSZndDtvZmZsb2FkKTsKIAogCXJldHVybiAwOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDIyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ0JTIHFkaXNjIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3NjaGVkL3NjaF9jYnMuY2AsIGFuZCBpdCYjMzk7cyBtYWtpbmcgYSBmZXcgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBDcmVkaXQgQmFzZWQgU2hhcGVyLiBGaXJzdCwgdGhlcmUmIzM5O3MgYSBjcnVjaWFsIGZpeCBpbiBgY2JzX3NldF9wb3J0X3JhdGVgIHdoZXJlIHRoZXkmIzM5O3ZlIGNhc3QgYHNwZWVkYCB0byBgczY0YCBiZWZvcmUgZG9pbmcgdGhlIG11bHRpcGxpY2F0aW9uLiBTbWFydCBtb3ZlOyBhdm9pZGluZyBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpcyBhbHdheXMgYSBnb29kIHByYWN0aWNlLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIG5ldHdvcmsgc3BlZWRzLgoKVGhlbiwgaW4gYGNic19jaGFuZ2VgLCBhIHNhbml0eSBjaGVjayBpcyBhZGRlZDogYGlmIChxb3B0LSZndDtpZGxlc2xvcGUgJmx0OyAwKWAgbm93IHJlc3VsdHMgaW4gYC1FSU5WQUxgIGlmIHRydWUuIFRoYXQgbWFrZXMgc2Vuc2UsIHlvdSB3b3VsZG4mIzM5O3QgZXhwZWN0IGFuIGlkbGVzbG9wZSB0byBiZSBuZWdhdGl2ZTsgaXQgbWFrZXMgdGhlIGNvZGUgbW9yZSByb2J1c3QgYW5kIHByZXZlbnRzIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaWYgc29tZW9uZSB0cmllcyB0byBjb25maWd1cmUgc29tZXRoaW5nIG5vbnNlbnNpY2FsLiBGaW5hbGx5LCB0aGV5JiMzOTtyZSBjYXN0aW5nIGBxb3B0LSZndDtpZGxlc2xvcGVgIGFuZCBgcW9wdC0mZ3Q7c2VuZHNsb3BlYCB0byBgczY0YCBiZWZvcmUgbXVsdGlwbHlpbmcgYnkgYEJZVEVTX1BFUl9LQklUYCB3aXRoaW4gdGhlIGBjYnNfY2hhbmdlYCBmdW5jdGlvbi4gQWdhaW4sIGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgYmVpbmcgY2FyZWZ1bCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdmVyZmxvdyBpc3N1ZXMgaW4gdGhlc2UgY2FsY3VsYXRpb25zLCB3aGljaCBpcyB0b3RhbGx5IHJlYXNvbmFibGUuCgpTbywgdGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBDQlMgcWRpc2MuIE5vdywgSSBuZWVkIHRvIGNoZWNrIGBuZXQvc2NoZWQvc2NoX2Nicy5jYCB0byBzZWUgaG93IENCUyBpcyBjb25maWd1cmVkOyBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggQ09ORklHIG9wdGlvbnMgZW5hYmxlIHRoaXMgcGFydGljdWxhciBxZGlzYy4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IHRoZSBidWlsZC10aW1lIGRlcGVuZGVuY2llcyBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NoX2Nicy5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvTWFrZWZpbGU9NjE9b2JqLSQoQ09ORklHX05FVF9TQ0hfRlFfUElFKVx0JiM0Mzs9IHNjaF9mcV9waWUub1xubmV0L3NjaGVkL01ha2VmaWxlOjYyOm9iai0kKENPTkZJR19ORVRfU0NIX0NCUylcdCYjNDM7PSBzY2hfY2JzLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS02My1vYmotJChDT05GSUdfTkVUX1NDSF9FVEYpXHQmIzQzOz0gc2NoX2V0Zi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA1NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIENCUyBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gdGhlIHN5c3RlbSBpcyBjb25maWd1cmVkIHRvIHVzZSB0aGUgYE5FVF9TQ0hfQ0JTYCBzY2hlZHVsZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXM/IFdoYXQgYXJlIHRoZSBrZXkgZnVuY3Rpb25hbGl0aWVzIHRoYXQgYXJlIGltcGFjdGVkPyBJJiMzOTt2ZSBiZWVuIHRhc2tlZCB3aXRoIGxvb2tpbmcgYXQgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoaW4gdGhlIENCUyBzY2hlZHVsZXIuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gZmxhZ2dlZCBmb3IgcmV2aWV3IGFyZSBgY2JzX3NldF9wb3J0X3JhdGVgICh3aGljaCBJIHNlZSBpcyBkZWNsYXJlZCBzdGF0aWMsIHNvIHNjb3BlIGlzIGxpbWl0ZWQgdG8gdGhpcyBmaWxlIG9yIG1vZHVsZSkgYW5kIGBjYnNfY2hhbmdlYCAoYWxzbyBzdGF0aWMsIGdvb2QgdG8ga25vdykuIE5vdywgbXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSBwdXJwb3NlIG9mIGBjYnNfY2hhbmdlYCBhbmQgdGhlIGJlc3Qgd2F5IHRvIGRvIHRoYXQgaXMgdG8gc2VlIGhvdyBhbmQgd2hlcmUgaXQgaXMgdXNlZC4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBzaXRlcyB0byBmdWxseSB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbiB3aXRoaW4gdGhpcyBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2JzX2NoYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfY2JzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9jYnMuYz0zNDY9c3RhdGljIGludCBjYnNfZGV2X25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXG4tLVxubmV0L3NjaGVkL3NjaF9jYnMuYy0zNzQtXG5uZXQvc2NoZWQvc2NoX2Nicy5jOjM3NTpzdGF0aWMgaW50IGNic19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfY2JzLmMtMzc2LVx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9jYnMuYz00MTk9c3RhdGljIGludCBjYnNfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuLS1cbm5ldC9zY2hlZC9zY2hfY2JzLmMtNDQ3LVxubmV0L3NjaGVkL3NjaF9jYnMuYzo0NDg6XHRyZXR1cm4gY2JzX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcbm5ldC9zY2hlZC9zY2hfY2JzLmMtNDQ5LX1cbi0tXG5uZXQvc2NoZWQvc2NoX2Nicy5jPTU1Mz1zdGF0aWMgc3RydWN0IFFkaXNjX29wcyBjYnNfcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9jYnMuYy01NjItXHQuZGVzdHJveVx0PVx0Y2JzX2Rlc3Ryb3ksXG5uZXQvc2NoZWQvc2NoX2Nicy5jOjU2MzpcdC5jaGFuZ2VcdFx0PVx0Y2JzX2NoYW5nZSxcbm5ldC9zY2hlZC9zY2hfY2JzLmMtNTY0LVx0LmR1bXBcdFx0PVx0Y2JzX2R1bXAsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY3OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBSZWFzb25pbmcgb24gU2VsZWN0aW5nIEZvY3VzU3ltYm9scyBmb3IgQ0JTIFFkaXNjKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYGNic19jaGFuZ2VgIGNhbGxiYWNrLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBgY2JzX3FkaXNjX29wc2Agc3RydWN0dXJlLiBNeSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZSBhcmUgYGNic19jaGFuZ2VgIGFuZCBgY2JzX2luaXRgLiBUaGUgaXNzdWUgaXMsIHRoZXNlIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVXN1YWxseSwgdGhhdCB3b3VsZCBtZWFuIHRoZXkgY291bGQgYmUgaW5saW5lZCwgYW5kIG5vdCBnb29kIGNob2ljZXMgZm9yIGEgRm9jdXNTeW1ib2wgYmVjYXVzZSB0aGV5IHdvdWxkIG5vdCBiZSBkaXJlY3RseSBhZGRyZXNzYWJsZS4gQnV0LCBzaW5jZSBgLmNoYW5nZWAgYW5kIGAuaW5pdGAgaW4gYGNic19xZGlzY19vcHNgIGFyZSBmdW5jdGlvbiBwb2ludGVycywgdGhlIGNvbXBpbGVyICp3b24mIzM5O3QqIGlubGluZSB0aG9zZSBmdW5jdGlvbnMuIFRoZXkmIzM5O2xsIGhhdmUgdGhlaXIgb3duIGFkZHJlc3Nlcy4gSSBoYXZlIHRvIG1ha2UgYSBjaG9pY2Ugb2Ygd2hhdCBzeW1ib2xzIHdpbGwgcHJvdmlkZSB0aGUgbW9zdCBiZW5lZml0IHRvIG15IGFuYWx5c2lzLgoKVGhlIHByb21wdCwgaG93ZXZlciwgc3VnZ2VzdHMgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuIFRoYXQgdGhyb3dzIGEgd3JlbmNoIGluIG15IHBsYW5zIHNpbmNlIGBjYnNfY2hhbmdlYCAqaXMqIHN0YXRpYy4gSG1tLCB0aGVyZSBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIGEgbm9uLXN0YXRpYyBhbHRlcm5hdGl2ZS4gYGNic19xZGlzY19vcHNgIGlzIHJlZ2lzdGVyZWQgd2l0aCBgcmVnaXN0ZXJfcWRpc2NgLCBzbyBpdCYjMzk7cyBub3QgbGlrZSBJIGNhbiB1c2UgdGhlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbiBpdHNlbGYuCgpTbywgSSB0aGluayBJJiMzOTtsbCBzdGljayB3aXRoIGBjYnNfY2hhbmdlYCBhbmQgYGNic19pbml0YCBhcyBGb2N1c1N5bWJvbHMuIEFsdGVybmF0aXZlbHksIEkgY291bGQgdHJ5IGBjYnNfZW5xdWV1ZWAgYW5kIGBjYnNfZGVxdWV1ZWAgZ2l2ZW4gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBwYXRjaC4gQnV0IGxldCYjMzk7cyBzdGFydCB3aXRoIGBjYnNfY2hhbmdlYCBhbmQgYGNic19pbml0YCBhcyBhIHN0YXJ0aW5nIHBvaW50LgoKVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyBgY2JzX2NoYW5nZWAgYW5kIGBjYnNfc2V0X3BvcnRfcmF0ZWAuIGBjYnNfY2hhbmdlYCBpcyBjYWxsZWQgZnJvbSBgY2JzX2luaXRgIGFuZCBhbHNvIGRpcmVjdGx5IHRocm91Z2ggdGhlIGAuY2hhbmdlYCBmdW5jdGlvbiBwb2ludGVyLiBUaGlzIHNvbGlkaWZpZXMgbXkgY2hvaWNlLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjazogYGNic19jaGFuZ2VgIGlzIGluZGVlZCBzdGF0aWMsIGJ1dCBzaW5jZSBpdCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIHRoZSBjb21waWxlciAqd2lsbCogdGFrZSBpdHMgYWRkcmVzcywgc28gaXQgd29uJiMzOTt0IGJlIGlubGluZWQgaW4gdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdGFibGUuIEV4Y2VsbGVudC4KCkhvbGQgb24uLi4gc3l6a2FsbGVyICpjYW4qIHRhcmdldCBzdGF0aWMgZnVuY3Rpb25zLCBhcyBsb25nIGFzIHRoZXkmIzM5O3JlIG5vdCBpbmxpbmVkLiBHcmVhdC4gVGhhdCByZWluZm9yY2VzIG15IG9yaWdpbmFsIGRlY2lzaW9uLiBTbywgSSYjMzk7bGwgcHJvdmlkZSBgY2JzX2NoYW5nZWAgYW5kIGBjYnNfaW5pdGAuCgpOb3csIGxldCBtZSBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBgTkVUX1NDSF9DQlNgIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1NDSF9DQlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTEzND1jb25maWcgTkVUX1NDSF9UQkZcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xNDQtXG5uZXQvc2NoZWQvS2NvbmZpZzoxNDU6Y29uZmlnIE5FVF9TQ0hfQ0JTXG5uZXQvc2NoZWQvS2NvbmZpZy0xNDYtXHR0cmlzdGF0ZSBcJiMzNDtDcmVkaXQgQmFzZWQgU2hhcGVyIChDQlMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY2MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHJlYWRpbmcgdGhlIHByb3ZpZGVkIHRleHQ6CgoqKkV4YW1pbmluZyB0aGUgTGludXggTmV0d29yayBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmb3IgbmV0d29yayBzY2hlZHVsaW5nLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gZ29pbmcgdG8gbmF2aWdhdGUgb3ZlciB0byB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCBmb2N1cyBteSBhdHRlbnRpb24gYXJvdW5kIGxpbmUgMTQ1LiBJIGtub3cgdGhhdCB0aGlzIGZpbGUgaXMgdGhlIHBsYWNlIHRvIGdvIHRvIGZpbmQgdGhlIGRlZmluaXRpb25zIGZvciB0aGUgY29uZmlndXJhYmxlIG9wdGlvbnMgcmVsYXRlZCB0byB0cmFmZmljIGNvbnRyb2wgYW5kIHF1ZXVpbmcgZGlzY2lwbGluZXMuIEhvcGVmdWxseSwgbGluZSAxNDUgd2lsbCBnaXZlIG1lIGEgZ29vZCBlbnRyeSBwb2ludCB0byB1bmRlcnN0YW5kIHNvbWUgcmVsZXZhbnQgc2NoZWR1bGVyIGZlYXR1cmVzLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHNvbWUgaW1wb3J0YW50IGRlZmluaXRpb25zIGluIHRoYXQgYXJlYS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHRoZXJlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE0MDpcdFx0ICBTZWUgdGhlIHRvcCBvZiBcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfdGJmLmNcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cbiAxNDE6XHRcbiAxNDI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDE0MzpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX3RiZi5cbiAxNDQ6XHRcbiAxNDU6XHRjb25maWcgTkVUX1NDSF9DQlNcbiAxNDY6XHRcdHRyaXN0YXRlIFwmIzM0O0NyZWRpdCBCYXNlZCBTaGFwZXIgKENCUylcJiMzNDtcbiAxNDc6XHRcdGhlbHBcbiAxNDg6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIENyZWRpdCBCYXNlZCBTaGFwZXIgKENCUykgcGFja2V0XG4gMTQ5Olx0XHQgIHNjaGVkdWxpbmcgYWxnb3JpdGhtLlxuIDE1MDpcdFxuIDE1MTpcdFx0ICBTZWUgdGhlIHRvcCBvZiBcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfY2JzLmNcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cbiAxNTI6XHRcbiAxNTM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDE1NDpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX2Nicy5cbiAxNTU6XHRcbiAxNTY6XHRjb25maWcgTkVUX1NDSF9FVEZcbiAxNTc6XHRcdHRyaXN0YXRlIFwmIzM0O0VhcmxpZXN0IFR4VGltZSBGaXJzdCAoRVRGKVwmIzM0O1xuIDE1ODpcdFx0aGVscFxuIDE1OTpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgRWFybGllc3QgVHhUaW1lIEZpcnN0IChFVEYpIHBhY2tldFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTg3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aG9zZSB0aG91Z2h0cyBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZSwgdXNpbmcgdGhlIGZpcnN0IHBlcnNvbiBhbmQgYWltaW5nIGZvciBhIGZ1bHNvbWUgcmVuZGVyaW5nOgoKKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgTkVUX1NDSF9DQlMqKgoKQWxyaWdodCwgbG9va2luZyBhdCBgTkVUX1NDSF9DQlNgLCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgYXQgbWUgaXMgdGhlIGxhY2sgb2YgYW55IG9idmlvdXMsIHVudXN1YWwgZGVwZW5kZW5jaWVzLiBUaGF0JiMzOTtzIGFsd2F5cyBhIGdvb2Qgc3RhcnQ7IGl0IHNpbXBsaWZpZXMgdGhpbmdzLiBNeSBtZW50YWwgbW9kZWwgZmxhZ3MgdGhpcyBhcyBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIG1vZHVsZSwgYXQgbGVhc3QgaW5pdGlhbGx5LiBOb3csIHRoZSBwYXJlbnQgbW9kdWxlIGlzIGxpc3RlZCBhcyBgTkVUX1NDSEVEYCwgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkIGZvciBuZXR3b3JrIHNjaGVkdWxpbmcgY29tcG9uZW50cy4gU28sIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gYE5FVF9TQ0hFRGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvdXIgYW5kIGNvbnN0cmFpbnRzIGJlY2F1c2UgYE5FVF9TQ0hfQ0JTYCwgYnkgaXRzIG5hdHVyZSwgd2lsbCBpbmhlcml0IHNvbWUgb2YgdGhvc2UgY29yZSBiZWhhdmlvdXJzLiBJIHdpbGwgdmVyaWZ5IHRoYXQgYE5FVF9TQ0hFRGAgaXMgcHJvcGVybHkgaW1wbGVtZW50ZWQuIEFuZCwgdGhlbiBJJiMzOTtsbCB1c2UgdGhhdCBrbm93bGVkZ2UgYXMgdGhlIGZvdW5kYXRpb24gZm9yIGV4YW1pbmluZyBob3cgYE5FVF9TQ0hfQ0JTYCBpbnRlZ3JhdGVzIGFuZCBleHRlbmRzIHRoYXQgZnVuY3Rpb25hbGl0eS4gS25vd2luZyB0aGUgcGFyZW50IGlzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBjaGlsZC4gVGltZSB0byBkaWcgaW50byBgTkVUX1NDSEVEYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWctNS1cbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcbm5ldC9zY2hlZC9LY29uZmlnLTctXHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTM0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgcHJvdmlkZWQgdGV4dDoKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCYjMzk7cyBUcmFmZmljIENvbnRyb2wgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUga2VybmVsJiMzOTtzIHRyYWZmaWMgY29udHJvbCBmZWF0dXJlcyBhcmUgY29uZmlndXJlZC4gU28sIEkmIzM5O20gaGVhZGluZyBzdHJhaWdodCBmb3IgdGhlIGBuZXQvc2NoZWQvS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHN0YXJ0aW5nIG15IGRlZXAgZGl2ZSBhcm91bmQgbGluZSA2LiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gYmUgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBodWIgZm9yIGFsbCB0aGUgcXVldWluZyBkaXNjaXBsaW5lcywgY2xhc3NpZmllcnMsIGFuZCBzY2hlZHVsZXJzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgaGlnaC1sZXZlbCBzdHJ1Y3R1cmUsIHRoZSBkZXBlbmRlbmNpZXMsIGFuZCB0aGUgb3B0aW9ucyB0aGF0IGNvbnRyb2wgd2hpY2ggZmVhdHVyZXMgYXJlIGNvbXBpbGVkIGluIG9yIGFzIG1vZHVsZXMuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gdGhlIGFyY2hpdGVjdHVyYWwgZGVwZW5kZW5jaWVzLCB0aGUgb3B0aW9ucyBmb3IgdmFyaW91cyBhbGdvcml0aG1zLCBhbmQgdGhlIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBhcmUgY2hvc2VuLiBGcm9tIHRoZXJlLCBJIHNob3VsZCBnYWluIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgdHJhZmZpYyBjb250cm9sIHN1YnN5c3RlbSYjMzk7cyBkZXNpZ24gYW5kIGhvdyB0byBjdXN0b21pemUgaXQgZm9yIGRpZmZlcmVudCBuZXR3b3JrIGVudmlyb25tZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFRyYWZmaWMgY29udHJvbCBjb25maWd1cmF0aW9uLlxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51Y29uZmlnIE5FVF9TQ0hFRFxuICAgNzpcdFx0Ym9vbCBcJiMzNDtRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcJiMzNDtcbiAgIDg6XHRcdHNlbGVjdCBORVRfU0NIX0ZJRk9cbiAgIDk6XHRcdGhlbHBcbiAgMTA6XHRcdCAgV2hlbiB0aGUga2VybmVsIGhhcyBzZXZlcmFsIHBhY2tldHMgdG8gc2VuZCBvdXQgb3ZlciBhIG5ldHdvcmtcbiAgMTE6XHRcdCAgZGV2aWNlLCBpdCBoYXMgdG8gZGVjaWRlIHdoaWNoIG9uZXMgdG8gc2VuZCBmaXJzdCwgd2hpY2ggb25lcyB0b1xuICAxMjpcdFx0ICBkZWxheSwgYW5kIHdoaWNoIG9uZXMgdG8gZHJvcC4gVGhpcyBpcyB0aGUgam9iIG9mIHRoZSBxdWV1ZWluZ1xuICAxMzpcdFx0ICBkaXNjaXBsaW5lcywgc2V2ZXJhbCBkaWZmZXJlbnQgYWxnb3JpdGhtcyBmb3IgaG93IHRvIGRvIHRoaXNcbiAgMTQ6XHRcdCAgXCYjMzQ7ZmFpcmx5XCYjMzQ7IGhhdmUgYmVlbiBwcm9wb3NlZC5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgSWYgeW91IHNheSBOIGhlcmUsIHlvdSB3aWxsIGdldCB0aGUgc3RhbmRhcmQgcGFja2V0IHNjaGVkdWxlciwgd2hpY2hcbiAgMTc6XHRcdCAgaXMgYSBGSUZPIChmaXJzdCBjb21lLCBmaXJzdCBzZXJ2ZWQpLiBJZiB5b3Ugc2F5IFkgaGVyZSwgeW91IHdpbGwgYmVcbiAgMTg6XHRcdCAgYWJsZSB0byBjaG9vc2UgZnJvbSBhbW9uZyBzZXZlcmFsIGFsdGVybmF0aXZlIGFsZ29yaXRobXMgd2hpY2ggY2FuXG4gIDE5Olx0XHQgIHRoZW4gYmUgYXR0YWNoZWQgdG8gZGlmZmVyZW50IG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBpcyB1c2VmdWwgZm9yXG4gIDIwOlx0XHQgIGV4YW1wbGUgaWYgc29tZSBvZiB5b3VyIG5ldHdvcmsgZGV2aWNlcyBhcmUgcmVhbCB0aW1lIGRldmljZXMgdGhhdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDkwCgkJCQkJCQlvdXRwdXQ6IDEzNQoJCQkJCQkJdGhvdWdodHM6IDI0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDQlMgcWRpc2MgUGF0Y2gqKgoKT2theSwgc28gSSBzZWUgdGhpcyBwYXRjaCByZXF1aXJlcyBgTkVUX1NDSEVEYCwgdGhhdCYjMzk7cyBleHBlY3RlZC4gTGV0IG1lIGp1c3QgY29uZmlybSBpZiBgTkVUX1NDSF9DQlNgIGhhcyBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcy4gTm9wZSwgbG9va3MgY2xlYW4gdGhlcmUuCgpBbHJpZ2h0LCBmdW5jdGlvbmFsbHksIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhbiBpbnRlZ2VyIG92ZXJmbG93LCB3aGljaCBpcyBhbHdheXMgYSBnb29kIHRoaW5nLCBhbmQgYWRkaW5nIGEgdmFsaWRhdGlvbiBjaGVjayB0byBoYW5kbGUgbmVnYXRpdmUgaWRsZXNsb3BlLiBJdCYjMzk7cyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgd2FycmFudHMgZnV6emluZy4gYGNic19jaGFuZ2VgIGFuZCBgY2JzX2luaXRgIGFyZSB0aGUga2V5IGFyZWFzIHRvIHRhcmdldCBiYXNlZCBvbiB0aGF0IGNoYW5nZS4gVGhvc2UgYEZvY3VzU3ltYm9sc2AgbG9vayByaWdodC4KCkp1c3Qgd2FudCB0byBjb25maXJtIGBjYnNfY2hhbmdlYCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UuLi4gWWVzLCBnb29kLCBpdCBpcy4gSXQmIzM5O3MgYSBxZGlzYyBjaGFuZ2UgY2FsbGJhY2ssIHdoaWNoIG1lYW5zIGB0YyBxZGlzYyBhZGQvY2hhbmdlYCB2aWEgbmV0bGluayBjYW4gdHJpZ2dlciBpdCwgbWVhbmluZyB3ZSBjYW4gZnV6eiBpdCBlZmZlY3RpdmVseSBmcm9tIG91dHNpZGUuCgpTbywgaW4gc3VtbWFyeSwgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhbiBpbnRlZ2VyIG92ZXJmbG93IGZpeCBhbmQgaWRsZSBzbG9wZSBjaGVjayBpbiB0aGUgQ0JTIHFkaXNjLCB0cmlnZ2VyZWQgdmlhIG5ldGxpbmsuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlndXJlIGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9DQlNgLCBhbmQgSSYjMzk7bGwgZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRoZSBgY2JzX2NoYW5nZWAgYW5kIGBjYnNfaW5pdGAgZnVuY3Rpb25zLiBUaGlzIHNlZW1zIGxpa2UgYSBtYW5hZ2VhYmxlIGFuZCB0YXJnZXRlZCBmdXp6aW5nIGNhbXBhaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfQ0JTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2JzX2NoYW5nZSYjMzQ7LAogICAgJiMzNDtjYnNfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBDcmVkaXQgQmFzZWQgU2hhcGVyIChDQlMpIHFkaXNjIGJ5IGNhc3RpbmcgdmFsdWVzIHRvIHM2NCBiZWZvcmUgbXVsdGlwbGljYXRpb24sIGFuZCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgbmVnYXRpdmUgaWRsZXNsb3BlLiBUaGlzIG1vZGlmaWVzIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljIG9mIHRoZSBDQlMgcWRpc2MsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgcWRpc2MgaW5pdGlhbGl6YXRpb24gYW5kIGNoYW5nZSBjYWxsYmFja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX0NCUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Nic19jaGFuZ2UmIzM0OywKICAgICYjMzQ7Y2JzX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgQ3JlZGl0IEJhc2VkIFNoYXBlciAoQ0JTKSBxZGlzYyBieSBjYXN0aW5nIHZhbHVlcyB0byBzNjQgYmVmb3JlIG11bHRpcGxpY2F0aW9uLCBhbmQgYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIG5lZ2F0aXZlIGlkbGVzbG9wZS4gVGhpcyBtb2RpZmllcyB0aGUgY29uZmlndXJhdGlvbiBsb2dpYyBvZiB0aGUgQ0JTIHFkaXNjLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKHRjIHFkaXNjKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHFkaXNjIGluaXRpYWxpemF0aW9uIGFuZCBjaGFuZ2UgY2FsbGJhY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwNjoxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDA2OjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBpbnRlZ2VyIG92ZXJmbG93IGFuZCBuZWdhdGl2ZSB2YWx1ZSBpc3N1ZXMgaW4gdGhlIENCUyBwYWNrZXQgc2NoZWR1bGVyIGJ5IGNhc3RpbmcgdmFyaWFibGVzIHRvIHM2NCBiZWZvcmUgbXVsdGlwbGljYXRpb24gYW5kIGFkZGluZyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIG5lZ2F0aXZlIGlkbGVzbG9wZS4gVGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgYWxsb2NhdGlvbnMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljIGVycm9ycyBvciBvdXQtb2YtYm91bmRzIGlzc3Vlcywgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgc2FuaXRpemVycy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTQ4MzE5YmQzYmFhZjc2ZGE4ZGRmNTc0NDc0ZWVjZjdkMGU0Nzg2MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDA2OjEyOjI1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9jYnMuYyBiL25ldC9zY2hlZC9zY2hfY2JzLmMKaW5kZXggMWM5MzQ2OWM1NmUzZC4uOGRiOThkN2M5OGE4ZCAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9jYnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2Nicy5jCkBAIC0zMzUsNyAmIzQzOzMzNSw3IEBAIHN0YXRpYyB2b2lkIGNic19zZXRfcG9ydF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYnNfc2NoZWRfZGF0YSAqcSkKIAkJc3BlZWQgPSBlY21kLmJhc2Uuc3BlZWQ7CiAKIHNraXA6Ci0JcG9ydF9yYXRlID0gc3BlZWQgKiAxMDAwICogQllURVNfUEVSX0tCSVQ7CiYjNDM7CXBvcnRfcmF0ZSA9IChzNjQpc3BlZWQgKiAxMDAwICogQllURVNfUEVSX0tCSVQ7CiAKIAlhdG9taWM2NF9zZXQoJmFtcDtxLSZndDtwb3J0X3JhdGUsIHBvcnRfcmF0ZSk7CiAJbmV0ZGV2X2RiZyhkZXYsICYjMzQ7Y2JzOiBzZXQgJXMmIzM5O3MgcG9ydF9yYXRlIHRvOiAlbGxkLCBsaW5rc3BlZWQ6ICVkXG4mIzM0OywKQEAgLTM5Miw2ICYjNDM7MzkyLDEwIEBAIHN0YXRpYyBpbnQgY2JzX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LAogCX0KIAogCXFvcHQgPSBubGFfZGF0YSh0YltUQ0FfQ0JTX1BBUk1TXSk7CiYjNDM7CWlmIChxb3B0LSZndDtpZGxlc2xvcGUgJmx0OyAwKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICYjMzQ7SWRsZXNsb3BlIG11c3Qgbm90IGJlIG5lZ2F0aXZlJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KIAogCWlmICghcW9wdC0mZ3Q7b2ZmbG9hZCkgewogCQljYnNfc2V0X3BvcnRfcmF0ZShkZXYsIHEpOwpAQCAtNDA1LDggJiM0Mzs0MDksOCBAQCBzdGF0aWMgaW50IGNic19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAkvKiBFdmVyeXRoaW5nIHdlbnQgT0ssIHNhdmUgdGhlIHBhcmFtZXRlcnMgdXNlZC4gKi8KIAlXUklURV9PTkNFKHEtJmd0O2hpY3JlZGl0LCBxb3B0LSZndDtoaWNyZWRpdCk7CiAJV1JJVEVfT05DRShxLSZndDtsb2NyZWRpdCwgcW9wdC0mZ3Q7bG9jcmVkaXQpOwotCVdSSVRFX09OQ0UocS0mZ3Q7aWRsZXNsb3BlLCBxb3B0LSZndDtpZGxlc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7Ci0JV1JJVEVfT05DRShxLSZndDtzZW5kc2xvcGUsIHFvcHQtJmd0O3NlbmRzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTsKJiM0MzsJV1JJVEVfT05DRShxLSZndDtpZGxlc2xvcGUsIChzNjQpcW9wdC0mZ3Q7aWRsZXNsb3BlICogQllURVNfUEVSX0tCSVQpOwomIzQzOwlXUklURV9PTkNFKHEtJmd0O3NlbmRzbG9wZSwgKHM2NClxb3B0LSZndDtzZW5kc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7CiAJV1JJVEVfT05DRShxLSZndDtvZmZsb2FkLCBxb3B0LSZndDtvZmZsb2FkKTsKIAogCXJldHVybiAwOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxOQoJCQkJCQkJb3V0cHV0OiAxMjIKCQkJCQkJCXRob3VnaHRzOiAyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ0JTIFNjaGVkdWxlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGlzIHBhdGNoIGlzIGhvbmluZyBpbiBvbiBgbmV0L3NjaGVkL3NjaF9jYnMuY2AgYW5kIHByaW1hcmlseSBhZGRyZXNzaW5nIHNvbWUgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSBDQlMgc2NoZWR1bGVyJiMzOTtzIGludGVybmFsIGNhbGN1bGF0aW9ucy4gVGhlIGtleSBzZWVtcyB0byBiZSBhcm91bmQgdGhvc2Ugc2xvcGUgYW5kIHNwZWVkIHZhbHVlcy4gU3BlY2lmaWNhbGx5LCBpdCBhcHBlYXJzIHRoZSBjb2RlIGlzIGRvaW5nIHNvbWUgYXJpdGhtZXRpYyB3aXRoIGBzcGVlZGAsIGBpZGxlc2xvcGVgLCBhbmQgYHNlbmRzbG9wZWAsIGFuZCB0byBwcmV2ZW50IGFueSBpbnRlZ2VyIG92ZXJmbG93IG9yIHVuZGVyZmxvdyBwcm9ibGVtcywgaXQmIzM5O3MgY2FzdGluZyBgc3BlZWRgIHRvIGBzNjRgIGFuZCBhbHNvIGNhc3RpbmcgYm90aCBgcW9wdC0mZ3Q7aWRsZXNsb3BlYCBhbmQgYHFvcHQtJmd0O3NlbmRzbG9wZWAgdG8gYHM2NGAgYmVmb3JlIGRvaW5nIHNvbWUgbXVsdGlwbGljYXRpb24gd2l0aCBgQllURVNfUEVSX0tCSVRgLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIHByYWN0aWNlIGZvciBlbnN1cmluZyBjYWxjdWxhdGlvbiBhY2N1cmFjeSwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBsYXJnZSB2YWx1ZXMuCgpJJiMzOTttIGFsc28gc2VlaW5nIGEgY3J1Y2lhbCBjaGVjayBhZGRlZDogYGlmIChxb3B0LSZndDtpZGxlc2xvcGUgJmx0OyAwKWAgd2hpY2gsIGlmIHRydWUsIHdpbGwgcmV0dXJuIGAtRUlOVkFMYC4gVGhpcyBpcyBhIHNlbnNpYmxlIGFkZGl0aW9uLCBhcyBuZWdhdGl2ZSBzbG9wZXMgcHJvYmFibHkgZG9uJiMzOTt0IG1ha2Ugc2Vuc2UgaW4gdGhpcyBjb250ZXh0LCBzbyB2YWxpZGF0aW5nIHRoZSBpbnB1dCBwcmV2ZW50cyB1bmV4cGVjdGVkIGJlaGF2aW9yLgoKQmFzZWQgb24gdGhlc2UgY2hhbmdlcywgSSYjMzk7bSBjb25maWRlbnQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb2J2aW91cyByZWQgZmxhZ3MuIE5vIGluZGljYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBubyBzaWducyBvZiBpbmZvcm1hdGlvbiBsZWFrcywgYW5kIG5vIG1lbW9yeSBhbGxvY2F0aW9ucyB0aGF0IEkgY2FuIHNlZS4gVGhlIHBhdGNoIGlzIHNvbGVseSBmb2N1c2VkIG9uIGZpeGluZyBsb2dpYyBhbmQgYXJpdGhtZXRpYyB0byBpbXByb3ZlIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBDQlMgc2NoZWR1bGVyLgoKSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYHFvcHRgIGlzLCBhcyBleHBlY3RlZCwgYSBwb2ludGVyIHRvIHRoZSBgc3RydWN0IHRjX2Nic19xb3B0YC4gVGhlIGNoZWNrcyBhbmQgY2FzdHMgYWxsIGFsaWduIHdpdGggYWRkcmVzc2luZyBwb3RlbnRpYWwgaW50ZWdlciBpc3N1ZXMsIGFuZCB0aGUgb3ZlcmFsbCBsb2dpYyBzZWVtcyBzb3VuZC4KClRoZXJlZm9yZSwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGVzZSBjaGFuZ2VzLCBJJiMzOTttIGNvbWZvcnRhYmxlIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgIG9uIHRoaXMgcGF0Y2guIFdlIGRvbiYjMzk7dCBuZWVkIEtNU0FOIGhlcmU7IHRoZXNlIGFyZSBzdHJhaWdodGZvcndhcmQgYXJpdGhtZXRpYyBhbmQgaW5wdXQgdmFsaWRhdGlvbiBmaXhlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDY6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGludGVnZXIgb3ZlcmZsb3cgYW5kIG5lZ2F0aXZlIHZhbHVlIGlzc3VlcyBpbiB0aGUgQ0JTIHBhY2tldCBzY2hlZHVsZXIgYnkgY2FzdGluZyB2YXJpYWJsZXMgdG8gczY0IGJlZm9yZSBtdWx0aXBsaWNhdGlvbiBhbmQgYWRkaW5nIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgbmVnYXRpdmUgaWRsZXNsb3BlLiBUaGVzZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMgd291bGQgYmUgbG9naWMgZXJyb3JzIG9yIG91dC1vZi1ib3VuZHMgaXNzdWVzLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBzYW5pdGl6ZXJzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGludGVnZXIgb3ZlcmZsb3cgYW5kIG5lZ2F0aXZlIHZhbHVlIGlzc3VlcyBpbiB0aGUgQ0JTIHBhY2tldCBzY2hlZHVsZXIgYnkgY2FzdGluZyB2YXJpYWJsZXMgdG8gczY0IGJlZm9yZSBtdWx0aXBsaWNhdGlvbiBhbmQgYWRkaW5nIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgbmVnYXRpdmUgaWRsZXNsb3BlLiBUaGVzZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMgd291bGQgYmUgbG9naWMgZXJyb3JzIG9yIG91dC1vZi1ib3VuZHMgaXNzdWVzLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBzYW5pdGl6ZXJzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMjoyNi4zNTMyNTU5NjFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzc4Mzg2NjQzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfQ0JTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2JzX2NoYW5nZVwiLFxuICAgIFwiY2JzX2luaXRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBpbnRlZ2VyIG92ZXJmbG93IGFuZCBuZWdhdGl2ZSB2YWx1ZSBpc3N1ZXMgaW4gdGhlIENCUyBwYWNrZXQgc2NoZWR1bGVyIGJ5IGNhc3RpbmcgdmFyaWFibGVzIHRvIHM2NCBiZWZvcmUgbXVsdGlwbGljYXRpb24gYW5kIGFkZGluZyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIG5lZ2F0aXZlIGlkbGVzbG9wZS4gVGhlc2UgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgYWxsb2NhdGlvbnMgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljIGVycm9ycyBvciBvdXQtb2YtYm91bmRzIGlzc3Vlcywgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgc2FuaXRpemVycy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBDcmVkaXQgQmFzZWQgU2hhcGVyIChDQlMpIHFkaXNjIGJ5IGNhc3RpbmcgdmFsdWVzIHRvIHM2NCBiZWZvcmUgbXVsdGlwbGljYXRpb24sIGFuZCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgbmVnYXRpdmUgaWRsZXNsb3BlLiBUaGlzIG1vZGlmaWVzIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljIG9mIHRoZSBDQlMgcWRpc2MsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgcWRpc2MgaW5pdGlhbGl6YXRpb24gYW5kIGNoYW5nZSBjYWxsYmFja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjI2LjM1MzI2MjY1MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg0MTMyMTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTQ4MzE5YmQzYmFhZjc2ZGE4ZGRmNTc0NDc0ZWVjZjdkMGU0Nzg2MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwNjoxMjoyNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2Nicy5jIGIvbmV0L3NjaGVkL3NjaF9jYnMuY1xcbmluZGV4IDFjOTM0NjljNTZlM2QuLjhkYjk4ZDdjOThhOGQgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9jYnMuY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfY2JzLmNcXG5AQCAtMzM1LDcgKzMzNSw3IEBAIHN0YXRpYyB2b2lkIGNic19zZXRfcG9ydF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYnNfc2NoZWRfZGF0YSAqcSlcXG4gXFx0XFx0c3BlZWQgPSBlY21kLmJhc2Uuc3BlZWQ7XFxuIFxcbiBza2lwOlxcbi1cXHRwb3J0X3JhdGUgPSBzcGVlZCAqIDEwMDAgKiBCWVRFU19QRVJfS0JJVDtcXG4rXFx0cG9ydF9yYXRlID0gKHM2NClzcGVlZCAqIDEwMDAgKiBCWVRFU19QRVJfS0JJVDtcXG4gXFxuIFxcdGF0b21pYzY0X3NldChcXHUwMDI2cS1cXHUwMDNlcG9ydF9yYXRlLCBwb3J0X3JhdGUpO1xcbiBcXHRuZXRkZXZfZGJnKGRldiwgXFxcImNiczogc2V0ICVzJ3MgcG9ydF9yYXRlIHRvOiAlbGxkLCBsaW5rc3BlZWQ6ICVkXFxcXG5cXFwiLFxcbkBAIC0zOTIsNiArMzkyLDEwIEBAIHN0YXRpYyBpbnQgY2JzX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbiBcXHR9XFxuIFxcbiBcXHRxb3B0ID0gbmxhX2RhdGEodGJbVENBX0NCU19QQVJNU10pO1xcbitcXHRpZiAocW9wdC1cXHUwMDNlaWRsZXNsb3BlIFxcdTAwM2MgMCkge1xcbitcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJJZGxlc2xvcGUgbXVzdCBub3QgYmUgbmVnYXRpdmVcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4gXFxuIFxcdGlmICghcW9wdC1cXHUwMDNlb2ZmbG9hZCkge1xcbiBcXHRcXHRjYnNfc2V0X3BvcnRfcmF0ZShkZXYsIHEpO1xcbkBAIC00MDUsOCArNDA5LDggQEAgc3RhdGljIGludCBjYnNfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIFxcdC8qIEV2ZXJ5dGhpbmcgd2VudCBPSywgc2F2ZSB0aGUgcGFyYW1ldGVycyB1c2VkLiAqL1xcbiBcXHRXUklURV9PTkNFKHEtXFx1MDAzZWhpY3JlZGl0LCBxb3B0LVxcdTAwM2VoaWNyZWRpdCk7XFxuIFxcdFdSSVRFX09OQ0UocS1cXHUwMDNlbG9jcmVkaXQsIHFvcHQtXFx1MDAzZWxvY3JlZGl0KTtcXG4tXFx0V1JJVEVfT05DRShxLVxcdTAwM2VpZGxlc2xvcGUsIHFvcHQtXFx1MDAzZWlkbGVzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTtcXG4tXFx0V1JJVEVfT05DRShxLVxcdTAwM2VzZW5kc2xvcGUsIHFvcHQtXFx1MDAzZXNlbmRzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTtcXG4rXFx0V1JJVEVfT05DRShxLVxcdTAwM2VpZGxlc2xvcGUsIChzNjQpcW9wdC1cXHUwMDNlaWRsZXNsb3BlICogQllURVNfUEVSX0tCSVQpO1xcbitcXHRXUklURV9PTkNFKHEtXFx1MDAzZXNlbmRzbG9wZSwgKHM2NClxb3B0LVxcdTAwM2VzZW5kc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7XFxuIFxcdFdSSVRFX09OQ0UocS1cXHUwMDNlb2ZmbG9hZCwgcW9wdC1cXHUwMDNlb2ZmbG9hZCk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTI6MjYuODM4MzI5NjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMTA0NzQyNzI0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfQ0JTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2JzX2NoYW5nZVwiLFxuICAgIFwiY2JzX2luaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBDcmVkaXQgQmFzZWQgU2hhcGVyIChDQlMpIHFkaXNjIGJ5IGNhc3RpbmcgdmFsdWVzIHRvIHM2NCBiZWZvcmUgbXVsdGlwbGljYXRpb24sIGFuZCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgbmVnYXRpdmUgaWRsZXNsb3BlLiBUaGlzIG1vZGlmaWVzIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljIG9mIHRoZSBDQlMgcWRpc2MsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgcWRpc2MgaW5pdGlhbGl6YXRpb24gYW5kIGNoYW5nZSBjYWxsYmFja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU0ODMxOWJkM2JhYWY3NmRhOGRkZjU3NDQ3NGVlY2Y3ZDBlNDc4NjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwNjoxMjoyNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfY2JzLmMgYi9uZXQvc2NoZWQvc2NoX2Nicy5jXG5pbmRleCAxYzkzNDY5YzU2ZTNkLi44ZGI5OGQ3Yzk4YThkIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9jYnMuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9jYnMuY1xuQEAgLTMzNSw3ICszMzUsNyBAQCBzdGF0aWMgdm9pZCBjYnNfc2V0X3BvcnRfcmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2JzX3NjaGVkX2RhdGEgKnEpXG4gXHRcdHNwZWVkID0gZWNtZC5iYXNlLnNwZWVkO1xuIFxuIHNraXA6XG4tXHRwb3J0X3JhdGUgPSBzcGVlZCAqIDEwMDAgKiBCWVRFU19QRVJfS0JJVDtcbitcdHBvcnRfcmF0ZSA9IChzNjQpc3BlZWQgKiAxMDAwICogQllURVNfUEVSX0tCSVQ7XG4gXG4gXHRhdG9taWM2NF9zZXQoXHUwMDI2cS1cdTAwM2Vwb3J0X3JhdGUsIHBvcnRfcmF0ZSk7XG4gXHRuZXRkZXZfZGJnKGRldiwgXCJjYnM6IHNldCAlcydzIHBvcnRfcmF0ZSB0bzogJWxsZCwgbGlua3NwZWVkOiAlZFxcblwiLFxuQEAgLTM5Miw2ICszOTIsMTAgQEAgc3RhdGljIGludCBjYnNfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHR9XG4gXG4gXHRxb3B0ID0gbmxhX2RhdGEodGJbVENBX0NCU19QQVJNU10pO1xuK1x0aWYgKHFvcHQtXHUwMDNlaWRsZXNsb3BlIFx1MDAzYyAwKSB7XG4rXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJJZGxlc2xvcGUgbXVzdCBub3QgYmUgbmVnYXRpdmVcIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuIFxuIFx0aWYgKCFxb3B0LVx1MDAzZW9mZmxvYWQpIHtcbiBcdFx0Y2JzX3NldF9wb3J0X3JhdGUoZGV2LCBxKTtcbkBAIC00MDUsOCArNDA5LDggQEAgc3RhdGljIGludCBjYnNfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHQvKiBFdmVyeXRoaW5nIHdlbnQgT0ssIHNhdmUgdGhlIHBhcmFtZXRlcnMgdXNlZC4gKi9cbiBcdFdSSVRFX09OQ0UocS1cdTAwM2VoaWNyZWRpdCwgcW9wdC1cdTAwM2VoaWNyZWRpdCk7XG4gXHRXUklURV9PTkNFKHEtXHUwMDNlbG9jcmVkaXQsIHFvcHQtXHUwMDNlbG9jcmVkaXQpO1xuLVx0V1JJVEVfT05DRShxLVx1MDAzZWlkbGVzbG9wZSwgcW9wdC1cdTAwM2VpZGxlc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7XG4tXHRXUklURV9PTkNFKHEtXHUwMDNlc2VuZHNsb3BlLCBxb3B0LVx1MDAzZXNlbmRzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTtcbitcdFdSSVRFX09OQ0UocS1cdTAwM2VpZGxlc2xvcGUsIChzNjQpcW9wdC1cdTAwM2VpZGxlc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7XG4rXHRXUklURV9PTkNFKHEtXHUwMDNlc2VuZHNsb3BlLCAoczY0KXFvcHQtXHUwMDNlc2VuZHNsb3BlICogQllURVNfUEVSX0tCSVQpO1xuIFx0V1JJVEVfT05DRShxLVx1MDAzZW9mZmxvYWQsIHFvcHQtXHUwMDNlb2ZmbG9hZCk7XG4gXG4gXHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjI2LjgzODMzMTU0MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MjQyMjAxNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDQlMgcWRpc2MgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3NjaGVkL3NjaF9jYnMuY2AsIGFuZCBpdCdzIG1ha2luZyBhIGZldyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIENyZWRpdCBCYXNlZCBTaGFwZXIuIEZpcnN0LCB0aGVyZSdzIGEgY3J1Y2lhbCBmaXggaW4gYGNic19zZXRfcG9ydF9yYXRlYCB3aGVyZSB0aGV5J3ZlIGNhc3QgYHNwZWVkYCB0byBgczY0YCBiZWZvcmUgZG9pbmcgdGhlIG11bHRpcGxpY2F0aW9uLiBTbWFydCBtb3ZlOyBhdm9pZGluZyBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpcyBhbHdheXMgYSBnb29kIHByYWN0aWNlLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIG5ldHdvcmsgc3BlZWRzLlxuXG5UaGVuLCBpbiBgY2JzX2NoYW5nZWAsIGEgc2FuaXR5IGNoZWNrIGlzIGFkZGVkOiBgaWYgKHFvcHQtXHUwMDNlaWRsZXNsb3BlIFx1MDAzYyAwKWAgbm93IHJlc3VsdHMgaW4gYC1FSU5WQUxgIGlmIHRydWUuIFRoYXQgbWFrZXMgc2Vuc2UsIHlvdSB3b3VsZG4ndCBleHBlY3QgYW4gaWRsZXNsb3BlIHRvIGJlIG5lZ2F0aXZlOyBpdCBtYWtlcyB0aGUgY29kZSBtb3JlIHJvYnVzdCBhbmQgcHJldmVudHMgdW5leHBlY3RlZCBiZWhhdmlvciBpZiBzb21lb25lIHRyaWVzIHRvIGNvbmZpZ3VyZSBzb21ldGhpbmcgbm9uc2Vuc2ljYWwuIEZpbmFsbHksIHRoZXkncmUgY2FzdGluZyBgcW9wdC1cdTAwM2VpZGxlc2xvcGVgIGFuZCBgcW9wdC1cdTAwM2VzZW5kc2xvcGVgIHRvIGBzNjRgIGJlZm9yZSBtdWx0aXBseWluZyBieSBgQllURVNfUEVSX0tCSVRgIHdpdGhpbiB0aGUgYGNic19jaGFuZ2VgIGZ1bmN0aW9uLiBBZ2FpbiwgbG9va3MgbGlrZSB0aGV5J3JlIGJlaW5nIGNhcmVmdWwgdG8gcHJldmVudCBwb3RlbnRpYWwgb3ZlcmZsb3cgaXNzdWVzIGluIHRoZXNlIGNhbGN1bGF0aW9ucywgd2hpY2ggaXMgdG90YWxseSByZWFzb25hYmxlLlxuXG5TbywgdGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBDQlMgcWRpc2MuIE5vdywgSSBuZWVkIHRvIGNoZWNrIGBuZXQvc2NoZWQvc2NoX2Nicy5jYCB0byBzZWUgaG93IENCUyBpcyBjb25maWd1cmVkOyBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBDT05GSUcgb3B0aW9ucyBlbmFibGUgdGhpcyBwYXJ0aWN1bGFyIHFkaXNjLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQyMiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjMxLjQ2MjU1NjI0OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDA2OTE1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2hfY2JzLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvTWFrZWZpbGU9NjE9b2JqLSQoQ09ORklHX05FVF9TQ0hfRlFfUElFKVxcdCs9IHNjaF9mcV9waWUub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo2MjpvYmotJChDT05GSUdfTkVUX1NDSF9DQlMpXFx0Kz0gc2NoX2Nicy5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTYzLW9iai0kKENPTkZJR19ORVRfU0NIX0VURilcXHQrPSBzY2hfZXRmLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTI6MzEuNTI2NjMwODgxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEwNDA4ODg2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyB0aGUgQ0JTIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIHRoZSBzeXN0ZW0gaXMgY29uZmlndXJlZCB0byB1c2UgdGhlIGBORVRfU0NIX0NCU2Agc2NoZWR1bGVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzPyBXaGF0IGFyZSB0aGUga2V5IGZ1bmN0aW9uYWxpdGllcyB0aGF0IGFyZSBpbXBhY3RlZD8gSSd2ZSBiZWVuIHRhc2tlZCB3aXRoIGxvb2tpbmcgYXQgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoaW4gdGhlIENCUyBzY2hlZHVsZXIuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gZmxhZ2dlZCBmb3IgcmV2aWV3IGFyZSBgY2JzX3NldF9wb3J0X3JhdGVgICh3aGljaCBJIHNlZSBpcyBkZWNsYXJlZCBzdGF0aWMsIHNvIHNjb3BlIGlzIGxpbWl0ZWQgdG8gdGhpcyBmaWxlIG9yIG1vZHVsZSkgYW5kIGBjYnNfY2hhbmdlYCAoYWxzbyBzdGF0aWMsIGdvb2QgdG8ga25vdykuIE5vdywgbXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSBwdXJwb3NlIG9mIGBjYnNfY2hhbmdlYCBhbmQgdGhlIGJlc3Qgd2F5IHRvIGRvIHRoYXQgaXMgdG8gc2VlIGhvdyBhbmQgd2hlcmUgaXQgaXMgdXNlZC4gSSdsbCBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIHNpdGVzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaXRzIGZ1bmN0aW9uIHdpdGhpbiB0aGlzIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA1NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjM0LjYzMDcyMjQ3N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTE2MzMzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2JzX2NoYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX2Nicy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfY2JzLmM9MzQ2PXN0YXRpYyBpbnQgY2JzX2Rldl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LFxcbi0tXFxubmV0L3NjaGVkL3NjaF9jYnMuYy0zNzQtXFxubmV0L3NjaGVkL3NjaF9jYnMuYzozNzU6c3RhdGljIGludCBjYnNfY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF9jYnMuYy0zNzYtXFx0XFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9jYnMuYz00MTk9c3RhdGljIGludCBjYnNfaW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbi0tXFxubmV0L3NjaGVkL3NjaF9jYnMuYy00NDctXFxubmV0L3NjaGVkL3NjaF9jYnMuYzo0NDg6XFx0cmV0dXJuIGNic19jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XFxubmV0L3NjaGVkL3NjaF9jYnMuYy00NDktfVxcbi0tXFxubmV0L3NjaGVkL3NjaF9jYnMuYz01NTM9c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgY2JzX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9jYnMuYy01NjItXFx0LmRlc3Ryb3lcXHQ9XFx0Y2JzX2Rlc3Ryb3ksXFxubmV0L3NjaGVkL3NjaF9jYnMuYzo1NjM6XFx0LmNoYW5nZVxcdFxcdD1cXHRjYnNfY2hhbmdlLFxcbm5ldC9zY2hlZC9zY2hfY2JzLmMtNTY0LVxcdC5kdW1wXFx0XFx0PVxcdGNic19kdW1wLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMjozNC45MjIzNjAzNTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzY2ODUzNTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFJlYXNvbmluZyBvbiBTZWxlY3RpbmcgRm9jdXNTeW1ib2xzIGZvciBDQlMgUWRpc2MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYGNic19jaGFuZ2VgIGNhbGxiYWNrLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBgY2JzX3FkaXNjX29wc2Agc3RydWN0dXJlLiBNeSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmcm9tIG91dHNpZGUgdGhlIG1vZHVsZSBhcmUgYGNic19jaGFuZ2VgIGFuZCBgY2JzX2luaXRgLiBUaGUgaXNzdWUgaXMsIHRoZXNlIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVXN1YWxseSwgdGhhdCB3b3VsZCBtZWFuIHRoZXkgY291bGQgYmUgaW5saW5lZCwgYW5kIG5vdCBnb29kIGNob2ljZXMgZm9yIGEgRm9jdXNTeW1ib2wgYmVjYXVzZSB0aGV5IHdvdWxkIG5vdCBiZSBkaXJlY3RseSBhZGRyZXNzYWJsZS4gQnV0LCBzaW5jZSBgLmNoYW5nZWAgYW5kIGAuaW5pdGAgaW4gYGNic19xZGlzY19vcHNgIGFyZSBmdW5jdGlvbiBwb2ludGVycywgdGhlIGNvbXBpbGVyICp3b24ndCogaW5saW5lIHRob3NlIGZ1bmN0aW9ucy4gVGhleSdsbCBoYXZlIHRoZWlyIG93biBhZGRyZXNzZXMuIEkgaGF2ZSB0byBtYWtlIGEgY2hvaWNlIG9mIHdoYXQgc3ltYm9scyB3aWxsIHByb3ZpZGUgdGhlIG1vc3QgYmVuZWZpdCB0byBteSBhbmFseXNpcy5cblxuVGhlIHByb21wdCwgaG93ZXZlciwgc3VnZ2VzdHMgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuIFRoYXQgdGhyb3dzIGEgd3JlbmNoIGluIG15IHBsYW5zIHNpbmNlIGBjYnNfY2hhbmdlYCAqaXMqIHN0YXRpYy4gSG1tLCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBub24tc3RhdGljIGFsdGVybmF0aXZlLiBgY2JzX3FkaXNjX29wc2AgaXMgcmVnaXN0ZXJlZCB3aXRoIGByZWdpc3Rlcl9xZGlzY2AsIHNvIGl0J3Mgbm90IGxpa2UgSSBjYW4gdXNlIHRoZSByZWdpc3RyYXRpb24gZnVuY3Rpb24gaXRzZWxmLlxuXG5TbywgSSB0aGluayBJJ2xsIHN0aWNrIHdpdGggYGNic19jaGFuZ2VgIGFuZCBgY2JzX2luaXRgIGFzIEZvY3VzU3ltYm9scy4gQWx0ZXJuYXRpdmVseSwgSSBjb3VsZCB0cnkgYGNic19lbnF1ZXVlYCBhbmQgYGNic19kZXF1ZXVlYCBnaXZlbiB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIHBhdGNoLiBCdXQgbGV0J3Mgc3RhcnQgd2l0aCBgY2JzX2NoYW5nZWAgYW5kIGBjYnNfaW5pdGAgYXMgYSBzdGFydGluZyBwb2ludC5cblxuVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyBgY2JzX2NoYW5nZWAgYW5kIGBjYnNfc2V0X3BvcnRfcmF0ZWAuIGBjYnNfY2hhbmdlYCBpcyBjYWxsZWQgZnJvbSBgY2JzX2luaXRgIGFuZCBhbHNvIGRpcmVjdGx5IHRocm91Z2ggdGhlIGAuY2hhbmdlYCBmdW5jdGlvbiBwb2ludGVyLiBUaGlzIHNvbGlkaWZpZXMgbXkgY2hvaWNlLlxuXG5MZXQncyBkb3VibGUtY2hlY2s6IGBjYnNfY2hhbmdlYCBpcyBpbmRlZWQgc3RhdGljLCBidXQgc2luY2UgaXQgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCB0aGUgY29tcGlsZXIgKndpbGwqIHRha2UgaXRzIGFkZHJlc3MsIHNvIGl0IHdvbid0IGJlIGlubGluZWQgaW4gdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdGFibGUuIEV4Y2VsbGVudC5cblxuSG9sZCBvbi4uLiBzeXprYWxsZXIgKmNhbiogdGFyZ2V0IHN0YXRpYyBmdW5jdGlvbnMsIGFzIGxvbmcgYXMgdGhleSdyZSBub3QgaW5saW5lZC4gR3JlYXQuIFRoYXQgcmVpbmZvcmNlcyBteSBvcmlnaW5hbCBkZWNpc2lvbi4gU28sIEknbGwgcHJvdmlkZSBgY2JzX2NoYW5nZWAgYW5kIGBjYnNfaW5pdGAuXG5cbk5vdywgbGV0IG1lIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGBORVRfU0NIX0NCU2AgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjc4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjQxLjY4OTIxNjQ4MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg2NDAwNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hfQ0JTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MTM0PWNvbmZpZyBORVRfU0NIX1RCRlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTQ0LVxcbm5ldC9zY2hlZC9LY29uZmlnOjE0NTpjb25maWcgTkVUX1NDSF9DQlNcXG5uZXQvc2NoZWQvS2NvbmZpZy0xNDYtXFx0dHJpc3RhdGUgXFxcIkNyZWRpdCBCYXNlZCBTaGFwZXIgKENCUylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjQxLjgwNzg2MDM3OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MDA0MDg3MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHJlYWRpbmcgdGhlIHByb3ZpZGVkIHRleHQ6XG5cbioqRXhhbWluaW5nIHRoZSBMaW51eCBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIG5ldHdvcmsgc2NoZWR1bGluZy4gTGV0J3Mgc2VlLi4uIEknbSBnb2luZyB0byBuYXZpZ2F0ZSBvdmVyIHRvIHRoZSBgbmV0L3NjaGVkL0tjb25maWdgIGZpbGUuIEknbGwgZm9jdXMgbXkgYXR0ZW50aW9uIGFyb3VuZCBsaW5lIDE0NS4gSSBrbm93IHRoYXQgdGhpcyBmaWxlIGlzIHRoZSBwbGFjZSB0byBnbyB0byBmaW5kIHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIGNvbmZpZ3VyYWJsZSBvcHRpb25zIHJlbGF0ZWQgdG8gdHJhZmZpYyBjb250cm9sIGFuZCBxdWV1aW5nIGRpc2NpcGxpbmVzLiBIb3BlZnVsbHksIGxpbmUgMTQ1IHdpbGwgZ2l2ZSBtZSBhIGdvb2QgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZCBzb21lIHJlbGV2YW50IHNjaGVkdWxlciBmZWF0dXJlcy4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHNvbWUgaW1wb3J0YW50IGRlZmluaXRpb25zIGluIHRoYXQgYXJlYS4gTGV0J3Mgc2VlIHdoYXQncyB0aGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjYwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTI6NDQuNjA4MjcxODA2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE0MDpcXHRcXHQgIFNlZSB0aGUgdG9wIG9mIFxcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfdGJmLmNcXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXFxuIDE0MTpcXHRcXG4gMTQyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxNDM6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX3RiZi5cXG4gMTQ0OlxcdFxcbiAxNDU6XFx0Y29uZmlnIE5FVF9TQ0hfQ0JTXFxuIDE0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiQ3JlZGl0IEJhc2VkIFNoYXBlciAoQ0JTKVxcXCJcXG4gMTQ3OlxcdFxcdGhlbHBcXG4gMTQ4OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIENyZWRpdCBCYXNlZCBTaGFwZXIgKENCUykgcGFja2V0XFxuIDE0OTpcXHRcXHQgIHNjaGVkdWxpbmcgYWxnb3JpdGhtLlxcbiAxNTA6XFx0XFxuIDE1MTpcXHRcXHQgIFNlZSB0aGUgdG9wIG9mIFxcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfY2JzLmNcXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXFxuIDE1MjpcXHRcXG4gMTUzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxNTQ6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX2Nicy5cXG4gMTU1OlxcdFxcbiAxNTY6XFx0Y29uZmlnIE5FVF9TQ0hfRVRGXFxuIDE1NzpcXHRcXHR0cmlzdGF0ZSBcXFwiRWFybGllc3QgVHhUaW1lIEZpcnN0IChFVEYpXFxcIlxcbiAxNTg6XFx0XFx0aGVscFxcbiAxNTk6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgRWFybGllc3QgVHhUaW1lIEZpcnN0IChFVEYpIHBhY2tldFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMjo0NC42MDgzNzQzNzZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1Mzc2MTM1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZSwgdXNpbmcgdGhlIGZpcnN0IHBlcnNvbiBhbmQgYWltaW5nIGZvciBhIGZ1bHNvbWUgcmVuZGVyaW5nOlxuXG4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiBORVRfU0NIX0NCUyoqXG5cbkFscmlnaHQsIGxvb2tpbmcgYXQgYE5FVF9TQ0hfQ0JTYCwgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGF0IG1lIGlzIHRoZSBsYWNrIG9mIGFueSBvYnZpb3VzLCB1bnVzdWFsIGRlcGVuZGVuY2llcy4gVGhhdCdzIGFsd2F5cyBhIGdvb2Qgc3RhcnQ7IGl0IHNpbXBsaWZpZXMgdGhpbmdzLiBNeSBtZW50YWwgbW9kZWwgZmxhZ3MgdGhpcyBhcyBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIG1vZHVsZSwgYXQgbGVhc3QgaW5pdGlhbGx5LiBOb3csIHRoZSBwYXJlbnQgbW9kdWxlIGlzIGxpc3RlZCBhcyBgTkVUX1NDSEVEYCwgd2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkIGZvciBuZXR3b3JrIHNjaGVkdWxpbmcgY29tcG9uZW50cy4gU28sIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gYE5FVF9TQ0hFRGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvdXIgYW5kIGNvbnN0cmFpbnRzIGJlY2F1c2UgYE5FVF9TQ0hfQ0JTYCwgYnkgaXRzIG5hdHVyZSwgd2lsbCBpbmhlcml0IHNvbWUgb2YgdGhvc2UgY29yZSBiZWhhdmlvdXJzLiBJIHdpbGwgdmVyaWZ5IHRoYXQgYE5FVF9TQ0hFRGAgaXMgcHJvcGVybHkgaW1wbGVtZW50ZWQuIEFuZCwgdGhlbiBJJ2xsIHVzZSB0aGF0IGtub3dsZWRnZSBhcyB0aGUgZm91bmRhdGlvbiBmb3IgZXhhbWluaW5nIGhvdyBgTkVUX1NDSF9DQlNgIGludGVncmF0ZXMgYW5kIGV4dGVuZHMgdGhhdCBmdW5jdGlvbmFsaXR5LiBLbm93aW5nIHRoZSBwYXJlbnQgaXMgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNoaWxkLiBUaW1lIHRvIGRpZyBpbnRvIGBORVRfU0NIRURgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTg3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMjo0OC4wNjIxMzkyODZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzQ3OTU0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NDSEVEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWctNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNy1cXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjQ4LjE3OTYyODYzNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTMyNjIyMDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCBwcm9jZXNzaW5nIHRoZSBwcm92aWRlZCB0ZXh0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwncyBUcmFmZmljIENvbnRyb2wgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGtlcm5lbCdzIHRyYWZmaWMgY29udHJvbCBmZWF0dXJlcyBhcmUgY29uZmlndXJlZC4gU28sIEknbSBoZWFkaW5nIHN0cmFpZ2h0IGZvciB0aGUgYG5ldC9zY2hlZC9LY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSBzdGFydGluZyBteSBkZWVwIGRpdmUgYXJvdW5kIGxpbmUgNi4gSSdtIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gYmUgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBodWIgZm9yIGFsbCB0aGUgcXVldWluZyBkaXNjaXBsaW5lcywgY2xhc3NpZmllcnMsIGFuZCBzY2hlZHVsZXJzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBoaWdoLWxldmVsIHN0cnVjdHVyZSwgdGhlIGRlcGVuZGVuY2llcywgYW5kIHRoZSBvcHRpb25zIHRoYXQgY29udHJvbCB3aGljaCBmZWF0dXJlcyBhcmUgY29tcGlsZWQgaW4gb3IgYXMgbW9kdWxlcy4gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHRoZSBhcmNoaXRlY3R1cmFsIGRlcGVuZGVuY2llcywgdGhlIG9wdGlvbnMgZm9yIHZhcmlvdXMgYWxnb3JpdGhtcywgYW5kIHRoZSBkZWZhdWx0IHNldHRpbmdzIHRoYXQgYXJlIGNob3Nlbi4gRnJvbSB0aGVyZSwgSSBzaG91bGQgZ2FpbiBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIHRyYWZmaWMgY29udHJvbCBzdWJzeXN0ZW0ncyBkZXNpZ24gYW5kIGhvdyB0byBjdXN0b21pemUgaXQgZm9yIGRpZmZlcmVudCBuZXR3b3JrIGVudmlyb25tZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUzNCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjUyLjExMjI1Mjk3M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBUcmFmZmljIGNvbnRyb2wgY29uZmlndXJhdGlvbi5cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudWNvbmZpZyBORVRfU0NIRURcXG4gICA3OlxcdFxcdGJvb2wgXFxcIlFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1xcXCJcXG4gICA4OlxcdFxcdHNlbGVjdCBORVRfU0NIX0ZJRk9cXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgV2hlbiB0aGUga2VybmVsIGhhcyBzZXZlcmFsIHBhY2tldHMgdG8gc2VuZCBvdXQgb3ZlciBhIG5ldHdvcmtcXG4gIDExOlxcdFxcdCAgZGV2aWNlLCBpdCBoYXMgdG8gZGVjaWRlIHdoaWNoIG9uZXMgdG8gc2VuZCBmaXJzdCwgd2hpY2ggb25lcyB0b1xcbiAgMTI6XFx0XFx0ICBkZWxheSwgYW5kIHdoaWNoIG9uZXMgdG8gZHJvcC4gVGhpcyBpcyB0aGUgam9iIG9mIHRoZSBxdWV1ZWluZ1xcbiAgMTM6XFx0XFx0ICBkaXNjaXBsaW5lcywgc2V2ZXJhbCBkaWZmZXJlbnQgYWxnb3JpdGhtcyBmb3IgaG93IHRvIGRvIHRoaXNcXG4gIDE0OlxcdFxcdCAgXFxcImZhaXJseVxcXCIgaGF2ZSBiZWVuIHByb3Bvc2VkLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIElmIHlvdSBzYXkgTiBoZXJlLCB5b3Ugd2lsbCBnZXQgdGhlIHN0YW5kYXJkIHBhY2tldCBzY2hlZHVsZXIsIHdoaWNoXFxuICAxNzpcXHRcXHQgIGlzIGEgRklGTyAoZmlyc3QgY29tZSwgZmlyc3Qgc2VydmVkKS4gSWYgeW91IHNheSBZIGhlcmUsIHlvdSB3aWxsIGJlXFxuICAxODpcXHRcXHQgIGFibGUgdG8gY2hvb3NlIGZyb20gYW1vbmcgc2V2ZXJhbCBhbHRlcm5hdGl2ZSBhbGdvcml0aG1zIHdoaWNoIGNhblxcbiAgMTk6XFx0XFx0ICB0aGVuIGJlIGF0dGFjaGVkIHRvIGRpZmZlcmVudCBuZXR3b3JrIGRldmljZXMuIFRoaXMgaXMgdXNlZnVsIGZvclxcbiAgMjA6XFx0XFx0ICBleGFtcGxlIGlmIHNvbWUgb2YgeW91ciBuZXR3b3JrIGRldmljZXMgYXJlIHJlYWwgdGltZSBkZXZpY2VzIHRoYXRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTI6NTIuMTEyMzMxNzEzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2OTAwMjI0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ0JTIHFkaXNjIFBhdGNoKipcblxuT2theSwgc28gSSBzZWUgdGhpcyBwYXRjaCByZXF1aXJlcyBgTkVUX1NDSEVEYCwgdGhhdCdzIGV4cGVjdGVkLiBMZXQgbWUganVzdCBjb25maXJtIGlmIGBORVRfU0NIX0NCU2AgaGFzIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBOb3BlLCBsb29rcyBjbGVhbiB0aGVyZS5cblxuQWxyaWdodCwgZnVuY3Rpb25hbGx5LCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYW4gaW50ZWdlciBvdmVyZmxvdywgd2hpY2ggaXMgYWx3YXlzIGEgZ29vZCB0aGluZywgYW5kIGFkZGluZyBhIHZhbGlkYXRpb24gY2hlY2sgdG8gaGFuZGxlIG5lZ2F0aXZlIGlkbGVzbG9wZS4gSXQncyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgd2FycmFudHMgZnV6emluZy4gYGNic19jaGFuZ2VgIGFuZCBgY2JzX2luaXRgIGFyZSB0aGUga2V5IGFyZWFzIHRvIHRhcmdldCBiYXNlZCBvbiB0aGF0IGNoYW5nZS4gVGhvc2UgYEZvY3VzU3ltYm9sc2AgbG9vayByaWdodC5cblxuSnVzdCB3YW50IHRvIGNvbmZpcm0gYGNic19jaGFuZ2VgIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZS4uLiBZZXMsIGdvb2QsIGl0IGlzLiBJdCdzIGEgcWRpc2MgY2hhbmdlIGNhbGxiYWNrLCB3aGljaCBtZWFucyBgdGMgcWRpc2MgYWRkL2NoYW5nZWAgdmlhIG5ldGxpbmsgY2FuIHRyaWdnZXIgaXQsIG1lYW5pbmcgd2UgY2FuIGZ1enogaXQgZWZmZWN0aXZlbHkgZnJvbSBvdXRzaWRlLlxuXG5TbywgaW4gc3VtbWFyeSwgd2UncmUgZGVhbGluZyB3aXRoIGFuIGludGVnZXIgb3ZlcmZsb3cgZml4IGFuZCBpZGxlIHNsb3BlIGNoZWNrIGluIHRoZSBDQlMgcWRpc2MsIHRyaWdnZXJlZCB2aWEgbmV0bGluay4gSSdsbCBuZWVkIHRvIGNvbmZpZ3VyZSBgTkVUX1NDSEVEYCBhbmQgYE5FVF9TQ0hfQ0JTYCwgYW5kIEknbGwgZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRoZSBgY2JzX2NoYW5nZWAgYW5kIGBjYnNfaW5pdGAgZnVuY3Rpb25zLiBUaGlzIHNlZW1zIGxpa2UgYSBtYW5hZ2VhYmxlIGFuZCB0YXJnZXRlZCBmdXp6aW5nIGNhbXBhaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDkwLCJPdXRwdXRUb2tlbnMiOjEzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDA2OjEyOjU3LjgwMjM1ODYyOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMzk1MDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfQ0JTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2JzX2NoYW5nZVwiLFxuICAgIFwiY2JzX2luaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBDcmVkaXQgQmFzZWQgU2hhcGVyIChDQlMpIHFkaXNjIGJ5IGNhc3RpbmcgdmFsdWVzIHRvIHM2NCBiZWZvcmUgbXVsdGlwbGljYXRpb24sIGFuZCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgbmVnYXRpdmUgaWRsZXNsb3BlLiBUaGlzIG1vZGlmaWVzIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljIG9mIHRoZSBDQlMgcWRpc2MsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgcWRpc2MgaW5pdGlhbGl6YXRpb24gYW5kIGNoYW5nZSBjYWxsYmFja3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfU0NIX0NCU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNic19jaGFuZ2VcIixcbiAgICBcImNic19pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgQ3JlZGl0IEJhc2VkIFNoYXBlciAoQ0JTKSBxZGlzYyBieSBjYXN0aW5nIHZhbHVlcyB0byBzNjQgYmVmb3JlIG11bHRpcGxpY2F0aW9uLCBhbmQgYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIG5lZ2F0aXZlIGlkbGVzbG9wZS4gVGhpcyBtb2RpZmllcyB0aGUgY29uZmlndXJhdGlvbiBsb2dpYyBvZiB0aGUgQ0JTIHFkaXNjLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKHRjIHFkaXNjKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHFkaXNjIGluaXRpYWxpemF0aW9uIGFuZCBjaGFuZ2UgY2FsbGJhY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMjo1Ny44ODU3NjA2ODFaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNTEzNTM0ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwNjoxMjo1Ny44ODYxOTU4NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2MjUwOTE0MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgaW50ZWdlciBvdmVyZmxvdyBhbmQgbmVnYXRpdmUgdmFsdWUgaXNzdWVzIGluIHRoZSBDQlMgcGFja2V0IHNjaGVkdWxlciBieSBjYXN0aW5nIHZhcmlhYmxlcyB0byBzNjQgYmVmb3JlIG11bHRpcGxpY2F0aW9uIGFuZCBhZGRpbmcgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciBuZWdhdGl2ZSBpZGxlc2xvcGUuIFRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlIGFsbG9jYXRpb25zIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpYyBlcnJvcnMgb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZXMsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIHNhbml0aXplcnMuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTQ4MzE5YmQzYmFhZjc2ZGE4ZGRmNTc0NDc0ZWVjZjdkMGU0Nzg2MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDA2OjEyOjI1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9jYnMuYyBiL25ldC9zY2hlZC9zY2hfY2JzLmNcbmluZGV4IDFjOTM0NjljNTZlM2QuLjhkYjk4ZDdjOThhOGQgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX2Nicy5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX2Nicy5jXG5AQCAtMzM1LDcgKzMzNSw3IEBAIHN0YXRpYyB2b2lkIGNic19zZXRfcG9ydF9yYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYnNfc2NoZWRfZGF0YSAqcSlcbiBcdFx0c3BlZWQgPSBlY21kLmJhc2Uuc3BlZWQ7XG4gXG4gc2tpcDpcbi1cdHBvcnRfcmF0ZSA9IHNwZWVkICogMTAwMCAqIEJZVEVTX1BFUl9LQklUO1xuK1x0cG9ydF9yYXRlID0gKHM2NClzcGVlZCAqIDEwMDAgKiBCWVRFU19QRVJfS0JJVDtcbiBcbiBcdGF0b21pYzY0X3NldChcdTAwMjZxLVx1MDAzZXBvcnRfcmF0ZSwgcG9ydF9yYXRlKTtcbiBcdG5ldGRldl9kYmcoZGV2LCBcImNiczogc2V0ICVzJ3MgcG9ydF9yYXRlIHRvOiAlbGxkLCBsaW5rc3BlZWQ6ICVkXFxuXCIsXG5AQCAtMzkyLDYgKzM5MiwxMCBAQCBzdGF0aWMgaW50IGNic19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdH1cbiBcbiBcdHFvcHQgPSBubGFfZGF0YSh0YltUQ0FfQ0JTX1BBUk1TXSk7XG4rXHRpZiAocW9wdC1cdTAwM2VpZGxlc2xvcGUgXHUwMDNjIDApIHtcbitcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcIklkbGVzbG9wZSBtdXN0IG5vdCBiZSBuZWdhdGl2ZVwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4gXG4gXHRpZiAoIXFvcHQtXHUwMDNlb2ZmbG9hZCkge1xuIFx0XHRjYnNfc2V0X3BvcnRfcmF0ZShkZXYsIHEpO1xuQEAgLTQwNSw4ICs0MDksOCBAQCBzdGF0aWMgaW50IGNic19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbiBcdC8qIEV2ZXJ5dGhpbmcgd2VudCBPSywgc2F2ZSB0aGUgcGFyYW1ldGVycyB1c2VkLiAqL1xuIFx0V1JJVEVfT05DRShxLVx1MDAzZWhpY3JlZGl0LCBxb3B0LVx1MDAzZWhpY3JlZGl0KTtcbiBcdFdSSVRFX09OQ0UocS1cdTAwM2Vsb2NyZWRpdCwgcW9wdC1cdTAwM2Vsb2NyZWRpdCk7XG4tXHRXUklURV9PTkNFKHEtXHUwMDNlaWRsZXNsb3BlLCBxb3B0LVx1MDAzZWlkbGVzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTtcbi1cdFdSSVRFX09OQ0UocS1cdTAwM2VzZW5kc2xvcGUsIHFvcHQtXHUwMDNlc2VuZHNsb3BlICogQllURVNfUEVSX0tCSVQpO1xuK1x0V1JJVEVfT05DRShxLVx1MDAzZWlkbGVzbG9wZSwgKHM2NClxb3B0LVx1MDAzZWlkbGVzbG9wZSAqIEJZVEVTX1BFUl9LQklUKTtcbitcdFdSSVRFX09OQ0UocS1cdTAwM2VzZW5kc2xvcGUsIChzNjQpcW9wdC1cdTAwM2VzZW5kc2xvcGUgKiBCWVRFU19QRVJfS0JJVCk7XG4gXHRXUklURV9PTkNFKHEtXHUwMDNlb2ZmbG9hZCwgcW9wdC1cdTAwM2VvZmZsb2FkKTtcbiBcbiBcdHJldHVybiAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTI6NTcuODg2MTk2NDNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI1MDg5NDE2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDQlMgU2NoZWR1bGVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGlzIHBhdGNoIGlzIGhvbmluZyBpbiBvbiBgbmV0L3NjaGVkL3NjaF9jYnMuY2AgYW5kIHByaW1hcmlseSBhZGRyZXNzaW5nIHNvbWUgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSBDQlMgc2NoZWR1bGVyJ3MgaW50ZXJuYWwgY2FsY3VsYXRpb25zLiBUaGUga2V5IHNlZW1zIHRvIGJlIGFyb3VuZCB0aG9zZSBzbG9wZSBhbmQgc3BlZWQgdmFsdWVzLiBTcGVjaWZpY2FsbHksIGl0IGFwcGVhcnMgdGhlIGNvZGUgaXMgZG9pbmcgc29tZSBhcml0aG1ldGljIHdpdGggYHNwZWVkYCwgYGlkbGVzbG9wZWAsIGFuZCBgc2VuZHNsb3BlYCwgYW5kIHRvIHByZXZlbnQgYW55IGludGVnZXIgb3ZlcmZsb3cgb3IgdW5kZXJmbG93IHByb2JsZW1zLCBpdCdzIGNhc3RpbmcgYHNwZWVkYCB0byBgczY0YCBhbmQgYWxzbyBjYXN0aW5nIGJvdGggYHFvcHQtXHUwMDNlaWRsZXNsb3BlYCBhbmQgYHFvcHQtXHUwMDNlc2VuZHNsb3BlYCB0byBgczY0YCBiZWZvcmUgZG9pbmcgc29tZSBtdWx0aXBsaWNhdGlvbiB3aXRoIGBCWVRFU19QRVJfS0JJVGAuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIGVuc3VyaW5nIGNhbGN1bGF0aW9uIGFjY3VyYWN5LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IGxhcmdlIHZhbHVlcy5cblxuSSdtIGFsc28gc2VlaW5nIGEgY3J1Y2lhbCBjaGVjayBhZGRlZDogYGlmIChxb3B0LVx1MDAzZWlkbGVzbG9wZSBcdTAwM2MgMClgIHdoaWNoLCBpZiB0cnVlLCB3aWxsIHJldHVybiBgLUVJTlZBTGAuIFRoaXMgaXMgYSBzZW5zaWJsZSBhZGRpdGlvbiwgYXMgbmVnYXRpdmUgc2xvcGVzIHByb2JhYmx5IGRvbid0IG1ha2Ugc2Vuc2UgaW4gdGhpcyBjb250ZXh0LCBzbyB2YWxpZGF0aW5nIHRoZSBpbnB1dCBwcmV2ZW50cyB1bmV4cGVjdGVkIGJlaGF2aW9yLlxuXG5CYXNlZCBvbiB0aGVzZSBjaGFuZ2VzLCBJJ20gY29uZmlkZW50IHRoZXJlIGFyZW4ndCBhbnkgb2J2aW91cyByZWQgZmxhZ3MuIE5vIGluZGljYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBubyBzaWducyBvZiBpbmZvcm1hdGlvbiBsZWFrcywgYW5kIG5vIG1lbW9yeSBhbGxvY2F0aW9ucyB0aGF0IEkgY2FuIHNlZS4gVGhlIHBhdGNoIGlzIHNvbGVseSBmb2N1c2VkIG9uIGZpeGluZyBsb2dpYyBhbmQgYXJpdGhtZXRpYyB0byBpbXByb3ZlIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBDQlMgc2NoZWR1bGVyLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGF0IGBxb3B0YCBpcywgYXMgZXhwZWN0ZWQsIGEgcG9pbnRlciB0byB0aGUgYHN0cnVjdCB0Y19jYnNfcW9wdGAuIFRoZSBjaGVja3MgYW5kIGNhc3RzIGFsbCBhbGlnbiB3aXRoIGFkZHJlc3NpbmcgcG90ZW50aWFsIGludGVnZXIgaXNzdWVzLCBhbmQgdGhlIG92ZXJhbGwgbG9naWMgc2VlbXMgc291bmQuXG5cblRoZXJlZm9yZSwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGVzZSBjaGFuZ2VzLCBJJ20gY29tZm9ydGFibGUgc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAgb24gdGhpcyBwYXRjaC4gV2UgZG9uJ3QgbmVlZCBLTVNBTiBoZXJlOyB0aGVzZSBhcmUgc3RyYWlnaHRmb3J3YXJkIGFyaXRobWV0aWMgYW5kIGlucHV0IHZhbGlkYXRpb24gZml4ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MTksIk91dHB1dFRva2VucyI6MTIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDY6MTM6MDQuMTM3MDkyNzM4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgaW50ZWdlciBvdmVyZmxvdyBhbmQgbmVnYXRpdmUgdmFsdWUgaXNzdWVzIGluIHRoZSBDQlMgcGFja2V0IHNjaGVkdWxlciBieSBjYXN0aW5nIHZhcmlhYmxlcyB0byBzNjQgYmVmb3JlIG11bHRpcGxpY2F0aW9uIGFuZCBhZGRpbmcgYSB2YWxpZGF0aW9uIGNoZWNrIGZvciBuZWdhdGl2ZSBpZGxlc2xvcGUuIFRoZXNlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBpbmZvLWxlYWtzLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlIGFsbG9jYXRpb25zIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpYyBlcnJvcnMgb3Igb3V0LW9mLWJvdW5kcyBpc3N1ZXMsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIHNhbml0aXplcnMuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGludGVnZXIgb3ZlcmZsb3cgYW5kIG5lZ2F0aXZlIHZhbHVlIGlzc3VlcyBpbiB0aGUgQ0JTIHBhY2tldCBzY2hlZHVsZXIgYnkgY2FzdGluZyB2YXJpYWJsZXMgdG8gczY0IGJlZm9yZSBtdWx0aXBsaWNhdGlvbiBhbmQgYWRkaW5nIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgbmVnYXRpdmUgaWRsZXNsb3BlLiBUaGVzZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMgd291bGQgYmUgbG9naWMgZXJyb3JzIG9yIG91dC1vZi1ib3VuZHMgaXNzdWVzLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBzYW5pdGl6ZXJzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p497[1] Phase: Succeeded StartedAt: 2026-08-13 06:13:29 +0000 UTC FinishedAt: 2026-08-13 06:13:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-13 06:13:29 +0000 UTC FinishedAt: 2026-08-13 06:13:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2] Phase: Succeeded StartedAt: 2026-08-13 06:13:29 +0000 UTC FinishedAt: 2026-08-13 09:53:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-13 06:13:29 +0000 UTC FinishedAt: 2026-08-13 09:53:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-13 06:13:29 +0000 UTC FinishedAt: 2026-08-13 06:13:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-13 06:13:29 +0000 UTC FinishedAt: 2026-08-13 06:13:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow6p497/series-workflow6p497-convert-artifact-3460448711/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-13 06:13:39 +0000 UTC FinishedAt: 2026-08-13 06:29:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-13 06:13:39 +0000 UTC FinishedAt: 2026-08-13 06:29:38 +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:*fef91c54-6a79-4e36-9664-a35a48eb7cc7,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-workflow6p497/series-workflow6p497-convert-artifact-3460448711/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": "6dcd90ed-becc-4e9a-856f-a48374911f49", "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-workflow6p497/series-workflow6p497-build-action-2649573981/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-13 06:13:39 +0000 UTC FinishedAt: 2026-08-13 06:29:28 +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:*fef91c54-6a79-4e36-9664-a35a48eb7cc7,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-workflow6p497/series-workflow6p497-convert-artifact-3460448711/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": "6dcd90ed-becc-4e9a-856f-a48374911f49", "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-workflow6p497/series-workflow6p497-build-action-2649573981/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-13 06:29:38 +0000 UTC FinishedAt: 2026-08-13 06:29:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-13 06:29:38 +0000 UTC FinishedAt: 2026-08-13 06:29:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-13 06:29:38 +0000 UTC FinishedAt: 2026-08-13 06:29:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-13 06:29:38 +0000 UTC FinishedAt: 2026-08-13 06:29:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow6p497/series-workflow6p497-convert-artifact-1194377974/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-13 06:29:48 +0000 UTC FinishedAt: 2026-08-13 06:31:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-13 06:29:48 +0000 UTC FinishedAt: 2026-08-13 06:31:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6dcd90ed-becc-4e9a-856f-a48374911f49,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-workflow6p497/series-workflow6p497-build-action-2649573981/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-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-13 06:31:53 +0000 UTC FinishedAt: 2026-08-13 06:31:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-13 06:31:53 +0000 UTC FinishedAt: 2026-08-13 06:31:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-13 06:31:53 +0000 UTC FinishedAt: 2026-08-13 06:47:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-13 06:31:53 +0000 UTC FinishedAt: 2026-08-13 06:47:54 +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:*fef91c54-6a79-4e36-9664-a35a48eb7cc7,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-workflow6p497/series-workflow6p497-convert-artifact-1194377974/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": "ad31c4d8-fa97-45c4-9074-35bf75587d41", "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-workflow6p497/series-workflow6p497-build-action-2680285690/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-13 06:31:53 +0000 UTC FinishedAt: 2026-08-13 06:47:43 +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:*fef91c54-6a79-4e36-9664-a35a48eb7cc7,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-workflow6p497/series-workflow6p497-convert-artifact-1194377974/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": "ad31c4d8-fa97-45c4-9074-35bf75587d41", "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-workflow6p497/series-workflow6p497-build-action-2680285690/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-13 06:47:54 +0000 UTC FinishedAt: 2026-08-13 06:47:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-13 06:47:54 +0000 UTC FinishedAt: 2026-08-13 06:47:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-13 06:47:54 +0000 UTC FinishedAt: 2026-08-13 06:50:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-13 06:47:54 +0000 UTC FinishedAt: 2026-08-13 06:49:51 +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:*ad31c4d8-fa97-45c4-9074-35bf75587d41,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-workflow6p497/series-workflow6p497-build-action-2680285690/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-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-13 06:50:01 +0000 UTC FinishedAt: 2026-08-13 09:53:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-13 06:50:01 +0000 UTC FinishedAt: 2026-08-13 09:53:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"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:*6dcd90ed-becc-4e9a-856f-a48374911f49,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ad31c4d8-fa97-45c4-9074-35bf75587d41,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-workflow6p497/series-workflow6p497-build-action-2649573981/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-workflow6p497/series-workflow6p497-build-action-2680285690/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-13 06:50:01 +0000 UTC FinishedAt: 2026-08-13 06:50:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-13 06:50:01 +0000 UTC FinishedAt: 2026-08-13 06:50:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"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-workflow6p497/series-workflow6p497-convert-artifact-1699403803/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-13 06:50:01 +0000 UTC FinishedAt: 2026-08-13 06:50:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-13 06:50:01 +0000 UTC FinishedAt: 2026-08-13 06:50:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-13 06:50:01 +0000 UTC FinishedAt: 2026-08-13 06:50:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-13 06:50:12 +0000 UTC FinishedAt: 2026-08-13 09:53:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p497[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["cbs_change","cbs_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b53449540502cb21b32bca62a6258e22cd97bbe","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_CBS"],"series_id":"ae8b78bc-13ea-4ffe-8d6e-47994270d5ad","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-13 06:50:12 +0000 UTC FinishedAt: 2026-08-13 09:53:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6dcd90ed-becc-4e9a-856f-a48374911f49,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ad31c4d8-fa97-45c4-9074-35bf75587d41,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-workflow6p497/series-workflow6p497-build-action-2649573981/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-workflow6p497/series-workflow6p497-build-action-2680285690/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-workflow6p497/series-workflow6p497-convert-artifact-1699403803/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,}