Name: series-workflowt6jg8 Phase: Succeeded StartedAt: 2026-07-29 05:48:31 +0000 UTC FinishedAt: 2026-07-29 10:12:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[0] Phase: Succeeded StartedAt: 2026-07-29 05:48:31 +0000 UTC FinishedAt: 2026-07-29 06:19:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 05:48:31 +0000 UTC FinishedAt: 2026-07-29 06:19:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_TABLES", "NFT_XFRM", "XFRM", "NET_CLS_ROUTE4" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_TABLES", "NFT_XFRM", "XFRM", "NET_CLS_ROUTE4" ], "series_id": "250b78fc-95ac-4f6f-8746-9f8d8777688b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nft_meta_get_eval", "nft_rt_get_eval", "nft_xfrm_get_eval" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORlRfWEZSTSYjMzQ7LAogICAgJiMzNDtYRlJNJiMzNDssCiAgICAmIzM0O05FVF9DTFNfUk9VVEU0JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZ0X21ldGFfZ2V0X2V2YWwmIzM0OywKICAgICYjMzQ7bmZ0X3J0X2dldF9ldmFsJiMzNDssCiAgICAmIzM0O25mdF94ZnJtX2dldF9ldmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5mdGFibGVzIHdoZXJlIG1ldGFkYXRhIGRzdHMgYXJlIGluY29ycmVjdGx5IHRyZWF0ZWQgYXMgcmVhbCBkc3RzLCB3aGljaCBjYW4gY2F1c2UgaXNzdWVzLiBJdCBtb2RpZmllcyBuZnRfbWV0YS5jLCBuZnRfcnQuYywgYW5kIG5mdF94ZnJtLmMgdG8gdXNlIHNrYl92YWxpZF9kc3QoKSBiZWZvcmUgYWNjZXNzaW5nIHNrYl9kc3QoKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTJlMDlhOWFiODMwYmUxY2YzMjhjMTUyMGQ5NjE3ZjMyY2VjYTc0Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDA2OjE4OjM1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuY1xuaW5kZXggMGE0M2UwNzg3YTY4OC4uMDFjZmJhYTM2NTI1MCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZnRfbWV0YS5jXG5AQCAtMjAsNiAmIzQzOzIwLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHN0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvaXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9zb2NrLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L2RzdF9tZXRhZGF0YS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3RjcF9zdGF0ZXMuaFx1MDAzZSAvKiBmb3IgVENQX1RJTUVfV0FJVCAqL1xuICNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19jb3JlLmhcdTAwM2VcbkBAIC0yNzksMTEgJiM0MzsyODAsMTIgQEAgc3RhdGljIGJvb2wgbmZ0X21ldGFfZ2V0X2V2YWxfaWZuYW1lKGVudW0gbmZ0X21ldGFfa2V5cyBrZXksIHUzMiAqZGVzdCxcbiBzdGF0aWMgbm9pbmxpbmUgYm9vbFxuIG5mdF9tZXRhX2dldF9ldmFsX3J0Y2xhc3NpZChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgKmRlc3QpXG4ge1xuLVx0Y29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gc2tiX2RzdChza2IpO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdDtcbiBcbi1cdGlmICghZHN0KVxuJiM0MztcdGlmICghc2tiX3ZhbGlkX2RzdChza2IpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4mIzQzO1x0ZHN0ID0gc2tiX2RzdChza2IpO1xuIFx0KmRlc3QgPSBkc3QtXHUwMDNldGNsYXNzaWQ7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfcnQuYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3J0LmNcbmluZGV4IGFlYjAwOTRlYWZkODAuLjg0MWM4NjNhMDhkYjUgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9ydC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mdF9ydC5jXG5AQCAtOCw2ICYjNDM7OCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHN0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L2RzdF9tZXRhZGF0YS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2lwNl9yb3V0ZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3JvdXRlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXHUwMDNlXG5AQCAtNTksMTAgJiM0Mzs2MCwxMSBAQCB2b2lkIG5mdF9ydF9nZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4gXHR1MzIgKmRlc3QgPSBcdTAwMjZyZWdzLVx1MDAzZWRhdGFbcHJpdi1cdTAwM2VkcmVnXTtcbiBcdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdDtcbiBcbi1cdGRzdCA9IHNrYl9kc3Qoc2tiKTtcbi1cdGlmICghZHN0KVxuJiM0MztcdGlmICghc2tiX3ZhbGlkX2RzdChza2IpKVxuIFx0XHRnb3RvIGVycjtcbiBcbiYjNDM7XHRkc3QgPSBza2JfZHN0KHNrYik7XG4mIzQzO1xuIFx0c3dpdGNoIChwcml2LVx1MDAzZWtleSkge1xuICNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRFxuIFx0Y2FzZSBORlRfUlRfQ0xBU1NJRDpcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMgYi9uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmNcbmluZGV4IDhjZWM0MzA2NDMxOTIuLmM4YmJhNjk3Zjk5M2EgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uY1xuQEAgLTEyLDYgJiM0MzsxMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGZpbHRlci9uZl90YWJsZXNfY29yZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NuZXQvZHN0X21ldGFkYXRhLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3hmcm0uaFx1MDAzZVxuIFxuQEAgLTE3Nyw5ICYjNDM7MTc4LDE1IEBAIHN0YXRpYyB2b2lkIG5mdF94ZnJtX2dldF9ldmFsX291dChjb25zdCBzdHJ1Y3QgbmZ0X3hmcm0gKnByaXYsXG4gXHRcdFx0XHQgIHN0cnVjdCBuZnRfcmVncyAqcmVncyxcbiBcdFx0XHRcdCAgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXG4ge1xuLVx0Y29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gc2tiX2RzdChwa3QtXHUwMDNlc2tiKTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHRpZiAoIXNrYl92YWxpZF9kc3QocGt0LVx1MDAzZXNrYikpIHtcbiYjNDM7XHRcdHJlZ3MtXHUwMDNldmVyZGljdC5jb2RlID0gTkZUX0JSRUFLO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0ZHN0ID0gc2tiX2RzdChwa3QtXHUwMDNlc2tiKTtcbiBcdGZvciAoaSA9IDA7IGRzdCBcdTAwMjZcdTAwMjYgZHN0LVx1MDAzZXhmcm07XG4gXHQgICAgIGRzdCA9ICgoY29uc3Qgc3RydWN0IHhmcm1fZHN0ICopZHN0KS1cdTAwM2VjaGlsZCwgaSYjNDM7JiM0MzspIHtcbiBcdFx0aWYgKGkgXHUwMDNjIHByaXYtXHUwMDNlc3BudW0pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDY6MTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORlRfWEZSTSYjMzQ7LAogICAgJiMzNDtYRlJNJiMzNDssCiAgICAmIzM0O05FVF9DTFNfUk9VVEU0JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZ0X21ldGFfZ2V0X2V2YWwmIzM0OywKICAgICYjMzQ7bmZ0X3J0X2dldF9ldmFsJiMzNDssCiAgICAmIzM0O25mdF94ZnJtX2dldF9ldmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5mdGFibGVzIHdoZXJlIG1ldGFkYXRhIGRzdHMgYXJlIGluY29ycmVjdGx5IHRyZWF0ZWQgYXMgcmVhbCBkc3RzLCB3aGljaCBjYW4gY2F1c2UgaXNzdWVzLiBJdCBtb2RpZmllcyBuZnRfbWV0YS5jLCBuZnRfcnQuYywgYW5kIG5mdF94ZnJtLmMgdG8gdXNlIHNrYl92YWxpZF9kc3QoKSBiZWZvcmUgYWNjZXNzaW5nIHNrYl9kc3QoKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTJlMDlhOWFiODMwYmUxY2YzMjhjMTUyMGQ5NjE3ZjMyY2VjYTc0YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDI5IDA2OjE4OjM1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfbWV0YS5jIGIvbmV0L25ldGZpbHRlci9uZnRfbWV0YS5jCmluZGV4IDBhNDNlMDc4N2E2ODguLjAxY2ZiYWEzNjUyNTAgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMKQEAgLTIwLDYgJiM0MzsyMCw3IEBACiAjaW5jbHVkZSAmbHQ7bmV0L2RzdC5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9pcC5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9zb2NrLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O25ldC9kc3RfbWV0YWRhdGEuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvdGNwX3N0YXRlcy5oJmd0OyAvKiBmb3IgVENQX1RJTUVfV0FJVCAqLwogI2luY2x1ZGUgJmx0O25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfY29yZS5oJmd0OwpAQCAtMjc5LDExICYjNDM7MjgwLDEyIEBAIHN0YXRpYyBib29sIG5mdF9tZXRhX2dldF9ldmFsX2lmbmFtZShlbnVtIG5mdF9tZXRhX2tleXMga2V5LCB1MzIgKmRlc3QsCiBzdGF0aWMgbm9pbmxpbmUgYm9vbAogbmZ0X21ldGFfZ2V0X2V2YWxfcnRjbGFzc2lkKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHUzMiAqZGVzdCkKIHsKLQljb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBza2JfZHN0KHNrYik7CiYjNDM7CWNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdDsKIAotCWlmICghZHN0KQomIzQzOwlpZiAoIXNrYl92YWxpZF9kc3Qoc2tiKSkKIAkJcmV0dXJuIGZhbHNlOwogCiYjNDM7CWRzdCA9IHNrYl9kc3Qoc2tiKTsKIAkqZGVzdCA9IGRzdC0mZ3Q7dGNsYXNzaWQ7CiAJcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9ydC5jIGIvbmV0L25ldGZpbHRlci9uZnRfcnQuYwppbmRleCBhZWIwMDk0ZWFmZDgwLi44NDFjODYzYTA4ZGI1IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3J0LmMKQEAgLTgsNiAmIzQzOzgsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L25ldGZpbHRlci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L25ldGZpbHRlci9uZl90YWJsZXMuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvZHN0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O25ldC9kc3RfbWV0YWRhdGEuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvaXA2X3JvdXRlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3JvdXRlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXMuaCZndDsKQEAgLTU5LDEwICYjNDM7NjAsMTEgQEAgdm9pZCBuZnRfcnRfZ2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLAogCXUzMiAqZGVzdCA9ICZhbXA7cmVncy0mZ3Q7ZGF0YVtwcml2LSZndDtkcmVnXTsKIAljb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7CiAKLQlkc3QgPSBza2JfZHN0KHNrYik7Ci0JaWYgKCFkc3QpCiYjNDM7CWlmICghc2tiX3ZhbGlkX2RzdChza2IpKQogCQlnb3RvIGVycjsKIAomIzQzOwlkc3QgPSBza2JfZHN0KHNrYik7CiYjNDM7CiAJc3dpdGNoIChwcml2LSZndDtrZXkpIHsKICNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRAogCWNhc2UgTkZUX1JUX0NMQVNTSUQ6CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMgYi9uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMKaW5kZXggOGNlYzQzMDY0MzE5Mi4uYzhiYmE2OTdmOTkzYSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfeGZybS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYwpAQCAtMTIsNiAmIzQzOzEyLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9uZXRmaWx0ZXIvbmZfdGFibGVzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfY29yZS5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O25ldC9kc3RfbWV0YWRhdGEuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pbi5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC94ZnJtLmgmZ3Q7CiAKQEAgLTE3Nyw5ICYjNDM7MTc4LDE1IEBAIHN0YXRpYyB2b2lkIG5mdF94ZnJtX2dldF9ldmFsX291dChjb25zdCBzdHJ1Y3QgbmZ0X3hmcm0gKnByaXYsCiAJCQkJICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsCiAJCQkJICBjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCkKIHsKLQljb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBza2JfZHN0KHBrdC0mZ3Q7c2tiKTsKJiM0MzsJY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0OwogCWludCBpOwogCiYjNDM7CWlmICghc2tiX3ZhbGlkX2RzdChwa3QtJmd0O3NrYikpIHsKJiM0MzsJCXJlZ3MtJmd0O3ZlcmRpY3QuY29kZSA9IE5GVF9CUkVBSzsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlkc3QgPSBza2JfZHN0KHBrdC0mZ3Q7c2tiKTsKIAlmb3IgKGkgPSAwOyBkc3QgJmFtcDsmYW1wOyBkc3QtJmd0O3hmcm07CiAJICAgICBkc3QgPSAoKGNvbnN0IHN0cnVjdCB4ZnJtX2RzdCAqKWRzdCktJmd0O2NoaWxkLCBpJiM0MzsmIzQzOykgewogCQlpZiAoaSAmbHQ7IHByaXYtJmd0O3NwbnVtKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTQ5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIChuZnRhYmxlcykgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L25ldGZpbHRlci9uZnRfbWV0YS5jYCwgYG5ldC9uZXRmaWx0ZXIvbmZ0X3J0LmNgLCBhbmQgYG5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uY2AuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byBiZSBzd2FwcGluZyBvdXQgYHNrYl9kc3Qoc2tiKWAgZm9yIGBza2JfdmFsaWRfZHN0KHNrYilgIGJlZm9yZSBhbnkgYWNjZXNzIHRvIGBza2JfZHN0KHNrYilgLiBSaWdodCwgdGhpcyBpcyBhIGNsYXNzaWMgc2FmZXR5IG1lYXN1cmUg4oCTIHdlJiMzOTtyZSBwcmV2ZW50aW5nIHRoZSB1c2Ugb2YgbWV0YWRhdGEgZGVzdGluYXRpb25zIGFzIGFjdHVhbCBkZXN0aW5hdGlvbnMsIHdoaWNoLCBhcyB3ZSBrbm93LCBjYW4gY2F1c2Ugc29tZSBwcmV0dHkgbmFzdHkgcHJvYmxlbXMgZG93biB0aGUgbGluZS4gQXZvaWRpbmcgdGhvc2UgdHlwZXMgb2YgYnVncyBpcyBhbHdheXMgYSBnb29kIHRoaW5nLgoKSSBuZWVkIHRvIHF1aWNrbHkgcmV2aWV3IHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQuIFNvLCB3ZSBoYXZlOgoKMS4gIGBuZnRfbWV0YV9nZXRfZXZhbF9ydGNsYXNzaWRgIGluIGBuZnRfbWV0YS5jYAoyLiAgYG5mdF9ydF9nZXRfZXZhbGAgaW4gYG5mdF9ydC5jYAozLiAgYG5mdF94ZnJtX2dldF9ldmFsX291dGAgaW4gYG5mdF94ZnJtLmNgCgpSaWdodCwgdGhlc2UgYXJlIGFsbCB3aXRoaW4gdGhlIG5mdGFibGVzIGNvbnRleHQuIEkga25vdyB0aGF0IGBuZnRfbWV0YV9nZXRfZXZhbF9ydGNsYXNzaWRgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYG5mdF9tZXRhX2dldF9ldmFsYC4gSSYjMzk7bSBndWVzc2luZyB0aGF0IG1lYW5zIGl0JiMzOTtzIGFuIGludGVybmFsIGhlbHBlciB3aXRoaW4gdGhlIG1vZHVsZS4gYG5mdF9ydF9nZXRfZXZhbGAgbG9va3MgbGlrZSBhbiBleHBvcnRlZCBmdW5jdGlvbiwgb3IgYXQgbGVhc3QgYSBub24tc3RhdGljIEFQSSBlbnRyeSBwb2ludC4gU2ltaWxhciB0byBgbmZ0X3hmcm1fZ2V0X2V2YWxfb3V0YCB3aGljaCBpcyBzdGF0aWMgYW5kIGNhbGxlZCBmcm9tIGBuZnRfeGZybV9nZXRfZXZhbGAuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LgoKVGhlcmVmb3JlLCB0aGUgbWFpbiBlbnRyeSBwb2ludHMgYXJlIHByb2JhYmx5IGBuZnRfbWV0YV9nZXRfZXZhbGAsIGBuZnRfcnRfZ2V0X2V2YWxgLCBhbmQgYG5mdF94ZnJtX2dldF9ldmFsYC4gQSBxdWljayBgZ3JlcHBlcmAgc2NhbiBzaG91bGQgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIHVzZWQgYW5kIG1ha2Ugc3VyZSBteSBhc3N1bXB0aW9ucyBhcmUgdmFsaWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDY6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZ0X21ldGFfZ2V0X2V2YWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTYzPXN0YXRpYyBub2lubGluZV9mb3Jfc3RhY2sgdm9pZFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjY0Om5mdF9tZXRhX2dldF9ldmFsX3RpbWUoZW51bSBuZnRfbWV0YV9rZXlzIGtleSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy02NS1cdFx0ICAgICAgIHUzMiAqZGVzdClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM9ODI9c3RhdGljIG5vaW5saW5lIGJvb2xcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzo4MzpuZnRfbWV0YV9nZXRfZXZhbF9wa3R0eXBlX2xvKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTg0LVx0XHRcdCAgICAgdTMyICpkZXN0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYz0xMzI9c3RhdGljIG5vaW5saW5lIGJvb2xcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzoxMzM6bmZ0X21ldGFfZ2V0X2V2YWxfc2t1Z2lkKGVudW0gbmZ0X21ldGFfa2V5cyBrZXksXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMTM0LVx0XHRcdCB1MzIgKmRlc3QsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTE3MT1zdGF0aWMgbm9pbmxpbmUgYm9vbFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjE3MjpuZnRfbWV0YV9nZXRfZXZhbF9jZ3JvdXAodTMyICpkZXN0LCBjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0xNzMte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0xODMtXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6MTg0OnN0YXRpYyBub2lubGluZSBib29sIG5mdF9tZXRhX2dldF9ldmFsX2tpbmQoZW51bSBuZnRfbWV0YV9rZXlzIGtleSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0xODUtXHRcdFx0XHRcdCAgICB1MzIgKmRlc3QsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTIyNz1zdGF0aWMgYm9vbCBuZnRfbWV0YV9zdG9yZV9pZmdyb3VwKHUzMiAqZGVzdCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMjM1LVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjIzNjpzdGF0aWMgYm9vbCBuZnRfbWV0YV9nZXRfZXZhbF9pZm5hbWUoZW51bSBuZnRfbWV0YV9rZXlzIGtleSwgdTMyICpkZXN0LFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTIzNy1cdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTI4MD1zdGF0aWMgbm9pbmxpbmUgYm9vbFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjI4MTpuZnRfbWV0YV9nZXRfZXZhbF9ydGNsYXNzaWQoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyICpkZXN0KVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTI4Mi17XG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTI5My1cbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzoyOTQ6c3RhdGljIG5vaW5saW5lIHUzMiBuZnRfbWV0YV9nZXRfZXZhbF9zZGlmKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTI5NS17XG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTMwNj1zdGF0aWMgbm9pbmxpbmUgdm9pZFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjMwNzpuZnRfbWV0YV9nZXRfZXZhbF9zZGlmbmFtZSh1MzIgKmRlc3QsIGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTMwOC17XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6MzA5Olx0dTMyIHNkaWYgPSBuZnRfbWV0YV9nZXRfZXZhbF9zZGlmKHBrdCk7XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMzEwLVx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM9MzE2PXN0YXRpYyB2b2lkIG5mdF9tZXRhX3BrdGluZm9fbWF5X3VwZGF0ZShzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMzYzLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjM2NDp2b2lkIG5mdF9tZXRhX2dldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0zNjUtXHRcdCAgICAgICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQwMi1cdGNhc2UgTkZUX01FVEFfT0lGR1JPVVA6XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDAzOlx0XHRpZiAoIW5mdF9tZXRhX2dldF9ldmFsX2lmbmFtZShwcml2LVx1MDAzZWtleSwgZGVzdCwgcGt0KSlcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00MDQtXHRcdFx0Z290byBlcnI7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQwNy1cdGNhc2UgTkZUX01FVEFfU0tHSUQ6XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDA4Olx0XHRpZiAoIW5mdF9tZXRhX2dldF9ldmFsX3NrdWdpZChwcml2LVx1MDAzZWtleSwgZGVzdCwgcGt0KSlcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00MDktXHRcdFx0Z290byBlcnI7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQxMi1cdGNhc2UgTkZUX01FVEFfUlRDTEFTU0lEOlxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjQxMzpcdFx0aWYgKCFuZnRfbWV0YV9nZXRfZXZhbF9ydGNsYXNzaWQoc2tiLCBkZXN0KSlcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00MTQtXHRcdFx0Z290byBlcnI7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQyNy1cbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzo0Mjg6XHRcdGlmICghbmZ0X21ldGFfZ2V0X2V2YWxfcGt0dHlwZV9sbyhwa3QsIGRlc3QpKVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQyOS1cdFx0XHRnb3RvIGVycjtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDM1LVx0Y2FzZSBORlRfTUVUQV9DR1JPVVA6XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDM2Olx0XHRpZiAoIW5mdF9tZXRhX2dldF9ldmFsX2Nncm91cChkZXN0LCBwa3QpKVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQzNy1cdFx0XHRnb3RvIGVycjtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDQ5LVx0Y2FzZSBORlRfTUVUQV9PSUZLSU5EOlxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjQ1MDpcdFx0aWYgKCFuZnRfbWV0YV9nZXRfZXZhbF9raW5kKHByaXYtXHUwMDNla2V5LCBkZXN0LCBwa3QpKVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQ1MS1cdFx0XHRnb3RvIGVycjtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDU1LVx0Y2FzZSBORlRfTUVUQV9USU1FX0hPVVI6XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDU2Olx0XHRuZnRfbWV0YV9nZXRfZXZhbF90aW1lKHByaXYtXHUwMDNla2V5LCBkZXN0KTtcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00NTctXHRcdGJyZWFrO1xubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQ1OC1cdGNhc2UgTkZUX01FVEFfU0RJRjpcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzo0NTk6XHRcdCpkZXN0ID0gbmZ0X21ldGFfZ2V0X2V2YWxfc2RpZihwa3QpO1xubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQ2MC1cdFx0YnJlYWs7XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDYxLVx0Y2FzZSBORlRfTUVUQV9TRElGTkFNRTpcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzo0NjI6XHRcdG5mdF9tZXRhX2dldF9ldmFsX3NkaWZuYW1lKGRlc3QsIHBrdCk7XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDYzLVx0XHRicmVhaztcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDcyLX1cbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzo0NzM6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X21ldGFfZ2V0X2V2YWwpO1xubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQ3NC1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM9ODAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZ0X2V4cHJfb3BzIG5mdF9tZXRhX2dldF9vcHMgPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTgwNS1cdC5zaXplXHRcdD0gTkZUX0VYUFJfU0laRShzaXplb2Yoc3RydWN0IG5mdF9tZXRhKSksXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6ODA2Olx0LmV2YWxcdFx0PSBuZnRfbWV0YV9nZXRfZXZhbCxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy04MDctXHQuaW5pdFx0XHQ9IG5mdF9tZXRhX2dldF9pbml0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NzQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipOYXZpZ2F0aW5nIHRoZSBOZXRmaWx0ZXIgQ29kZWJhc2UqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgYG5mdF9tZXRhX2dldF9ldmFsYCBpcyB0aGUga2V5IGVudHJ5IHBvaW50IGluIGBuZnRfbWV0YS5jYC4gVGhhdCBtYWtlcyBzZW5zZS4gTm93IEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBhbGwgaG9va2VkIHVwLCBzbyBJIHNob3VsZCBwcm9iYWJseSBqdW1wIG92ZXIgdG8gYG5mdF9ydC5jYCBhbmQgdGFrZSBhIGxvb2sgYXQgYG5mdF9ydF9nZXRfZXZhbGAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhlcmUmIzM5O3MgYSBjb25uZWN0aW9uIHRoZXJlIHNvbWV3aGVyZTsgbGlrZWx5LCB0aGUgcm91dGluZyBpbmZvcm1hdGlvbiBpcyBzb21laG93IGJlaW5nIGFjY2Vzc2VkIG9yIG1hbmlwdWxhdGVkIHdpdGhpbiB0aGUgbWV0YWRhdGEgY29udGV4dC4gVGhpcyBmZWVscyBsaWtlIGEgZ29vZCBuZXh0IGxvZ2ljYWwgc3RlcCB0byBtYXAgdGhlIGludGVyZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mdF9ydF9nZXRfZXZhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZ0X3J0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZnRfcnQuYz0yMj1zdGF0aWMgdTE2IGdldF90Y3Btc3MoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKnNrYmRzdClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9ydC5jLTUzLVxubmV0L25ldGZpbHRlci9uZnRfcnQuYzo1NDp2b2lkIG5mdF9ydF9nZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG5uZXQvbmV0ZmlsdGVyL25mdF9ydC5jLTU1LVx0XHQgICAgIHN0cnVjdCBuZnRfcmVncyAqcmVncyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9ydC5jPTE5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mdF9leHByX29wcyBuZnRfcnRfZ2V0X29wcyA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9ydC5jLTE5NS1cdC5zaXplXHRcdD0gTkZUX0VYUFJfU0laRShzaXplb2Yoc3RydWN0IG5mdF9ydCkpLFxubmV0L25ldGZpbHRlci9uZnRfcnQuYzoxOTY6XHQuZXZhbFx0XHQ9IG5mdF9ydF9nZXRfZXZhbCxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3J0LmMtMTk3LVx0LmluaXRcdFx0PSBuZnRfcnRfZ2V0X2luaXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDY6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE1OAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEaXZpbmcgaW50byB0aGUgbmZ0YWJsZXMgWEZSTSBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoYXQgYG5mdF94ZnJtX2dldF9ldmFsYCBmdW5jdGlvbiBpbiBgbmZ0X3hmcm0uY2AsIHNwZWNpZmljYWxseS4gTXkgbWluZCBpcyBpbW1lZGlhdGVseSBkcmF3biB0byB0aGUgaW50cmljYWNpZXMgb2YgaG93IHdlJiMzOTtyZSBoYW5kbGluZyBYRlJNIChJUHNlYy9JUHNlYy1iYXNlZCB0cmFuc2Zvcm1zKSB3aXRoaW4gdGhlIG5mdGFibGVzIGZyYW1ld29yay4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB3aGVyZSB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBwYWNrZXQgZmxvdyBhbmQgcnVsZSBldmFsdWF0aW9uIHByb2Nlc3MuIElzIHRoaXMgdGhlIHBvaW50IHdoZXJlIHdlJiMzOTtyZSBhY3R1YWxseSAqcmV0cmlldmluZyogdGhlIHJlbGV2YW50IFhGUk0gc3RhdGUgZm9yIGEgZ2l2ZW4gcGFja2V0IGJhc2VkIG9uIHNvbWUgbWF0Y2hpbmcgY3JpdGVyaWE/IE9yIGlzIGl0IG1vcmUgaW52b2x2ZWQsIHBvdGVudGlhbGx5IGhhbmRsaW5nIHNvbWUga2luZCBvZiBwcmUtZXZhbHVhdGlvbiBjaGVjaz8KCkkgbmVlZCB0byBxdWlja2x5IHJlbWVtYmVyIGlmIHRoZXJlJiMzOTtzIGFueSBpbXBsaWNpdCBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggWEZSTSBpbiB0aGUga2VybmVsLiBJIHNob3VsZCBsb29rIGludG8gdGhlIHdheSBuZnRhYmxlcyBpbnRlcmFjdHMgd2l0aCB0aGUgWEZSTSBzdWJzeXN0ZW0uIEFyZSB3ZSBidWlsZGluZyB0aGUgWEZSTS1zcGVjaWZpYyBwYXJ0IG9mIHRoZSBydWxlIHNldCBpbnRvIHNvbWV0aGluZyBlZmZpY2llbnQsIG9yIGlzIHRoZXJlIGEgbG90IG9mIHJ1bnRpbWUgbG9va3VwPyBMZXQgbWUgYWxzbyBiZSBzdXJlIHRoYXQgdGhlIG1lbW9yeSB1c2FnZSBpcyByZWFzb25hYmxlLiBJJiMzOTttIGltYWdpbmluZyBpdCYjMzk7cyB1c2VkIHdpdGggYGNvbm50cmFja2AsIHNvIEkmIzM5O20gZ29pbmcgdG8gY29uc2lkZXIgaXQgYW4gYXJlYSB3aGVyZSB3ZSBjYW4gcG9zc2libHkgaGF2ZSBpc3N1ZXMgaWYgbm90IHdlbGwgYXJjaGl0ZWN0ZWQuCgpFc3NlbnRpYWxseSwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgb2YgdGhlIGZ1bGwgY29udGV4dC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdG8gZW5zdXJlIEkgaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGV2YWx1YXRpb24gbG9naWMgdG8gdW5kZXJzdGFuZCBpdHMgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLCBwb3RlbnRpYWwgZ290Y2hhcywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgbmZ0YWJsZXMgaW5mcmFzdHJ1Y3R1cmUuIFVuZGVyc3RhbmRpbmcgdGhpcyBmdW5jdGlvbiYjMzk7cyByb2xlIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBmcmFtZXdvcmsgaW1wbGVtZW50cyBJUHNlYyBwb2xpY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfeGZybV9nZXRfZXZhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmM9MTIwPXN0YXRpYyB2b2lkIG5mdF94ZnJtX3N0YXRlX2dldF9rZXkoY29uc3Qgc3RydWN0IG5mdF94ZnJtICpwcml2LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0xNjAtXG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmM6MTYxOnN0YXRpYyB2b2lkIG5mdF94ZnJtX2dldF9ldmFsX2luKGNvbnN0IHN0cnVjdCBuZnRfeGZybSAqcHJpdixcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0xNjItXHRcdFx0XHQgICAgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0xNzYtXG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmM6MTc3OnN0YXRpYyB2b2lkIG5mdF94ZnJtX2dldF9ldmFsX291dChjb25zdCBzdHJ1Y3QgbmZ0X3hmcm0gKnByaXYsXG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMtMTc4LVx0XHRcdFx0ICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jLTIwMS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYzoyMDI6c3RhdGljIHZvaWQgbmZ0X3hmcm1fZ2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jLTIwMy1cdFx0XHQgICAgICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jLTIwOS1cdGNhc2UgWEZSTV9QT0xJQ1lfSU46XG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmM6MjEwOlx0XHRuZnRfeGZybV9nZXRfZXZhbF9pbihwcml2LCByZWdzLCBwa3QpO1xubmV0L25ldGZpbHRlci9uZnRfeGZybS5jLTIxMS1cdFx0YnJlYWs7XG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMtMjEyLVx0Y2FzZSBYRlJNX1BPTElDWV9PVVQ6XG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmM6MjEzOlx0XHRuZnRfeGZybV9nZXRfZXZhbF9vdXQocHJpdiwgcmVncywgcGt0KTtcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0yMTQtXHRcdGJyZWFrO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYz0yNzA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZnRfZXhwcl9vcHMgbmZ0X3hmcm1fZ2V0X29wcyA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMtMjcyLVx0LnNpemVcdFx0PSBORlRfRVhQUl9TSVpFKHNpemVvZihzdHJ1Y3QgbmZ0X3hmcm0pKSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYzoyNzM6XHQuZXZhbFx0XHQ9IG5mdF94ZnJtX2dldF9ldmFsLFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jLTI3NC1cdC5pbml0XHRcdD0gbmZ0X3hmcm1fZ2V0X2luaXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDY6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE3NgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgTkZUYWJsZXMgRnVuY3Rpb24gRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBuZnRfbWV0YV9nZXRfZXZhbGAsIGBuZnRfcnRfZ2V0X2V2YWxgLCBhbmQgYG5mdF94ZnJtX2dldF9ldmFsYC4gVGhlc2UgYXJlIGxpa2VseSB0aGUgY29yZSBwaWVjZXMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgZm9yIHRoaXMgcGFydGljdWxhciB0YXNrLiBCZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBpdCYjMzk7cyBhbHdheXMgd2lzZSB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4KClRoZSBmaXJzdCB0aGluZyB0byBhc2NlcnRhaW4gaXMgd2hldGhlciBORlRhYmxlcyBpcyBlbmFibGVkLiBUaGUgY2x1ZSBwb2ludHMgdG8gYE5GX1RBQkxFU2Agd2hpY2ggd2lsbCBhY3RpdmF0ZSBpdC4gVGhlbiB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYG5mdF9tZXRhLmNgIGZpbGUgaXMgYnVpbHQsIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBgTWFrZWZpbGVgIGluIHRoZSBgbmV0L25ldGZpbHRlcmAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHkgSSBiZWxpZXZlIGBORlRfTUVUQWAgd2lsbCBiZSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gdmFsdWUuIExldCYjMzk7cyBzdGFydCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDY6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZ0X21ldGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9ODc9bmZfdGFibGVzLW9ianMgOj0gbmZfdGFibGVzX2NvcmUubyBuZl90YWJsZXNfYXBpLm8gbmZ0X2NoYWluX2ZpbHRlci5vIFxcXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04OS1cdFx0ICBuZnRfYml0d2lzZS5vIG5mdF9ieXRlb3JkZXIubyBuZnRfcGF5bG9hZC5vIG5mdF9sb29rdXAubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo5MDpcdFx0ICBuZnRfZHluc2V0Lm8gbmZ0X21ldGEubyBuZnRfcnQubyBuZnRfZXh0aGRyLm8gbmZ0X2xhc3QubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05MS1cdFx0ICBuZnRfY291bnRlci5vIG5mdF9vYmpyZWYubyBuZnRfaW5uZXIubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjQwCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBrZXJuZWwgbW9kdWxlIGRlcGVuZGVuY2llcywgZ2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGVzZSB0aGluZ3M6CgoqKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jaWVzIC0gQSBRdWljayBNZW50YWwgV2Fsa3Rocm91Z2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgSSYjMzk7bSB0cmFja2luZyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIG1vZHVsZXMuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIGBuZnRfbWV0YS5vYCBhbmQgYG5mdF9ydC5vYC4gUmlnaHQsIHRob3NlIGFyZSBkZWZpbml0ZWx5IHBhcnQgb2YgdGhlIGBuZl90YWJsZXMtb2Jqc2AsIG1lYW5pbmcgdGhleSYjMzk7cmUgY29tcGlsZWQgd2hlbiB0aGUgYE5GX1RBQkxFU2AgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgYWN0aXZlLiBNYWtlcyBwZXJmZWN0IHNlbnNlLCB0aGV5JiMzOTtyZSBjb3JlIGNvbXBvbmVudHMuCgpOb3csIHdoYXQgYWJvdXQgYG5mdF94ZnJtLm9gPyBUaGF0JiMzOTtzIHRoZSBvbmUgSSBuZWVkIHRvIGNvbnNpZGVyIG5leHQgYW5kIGhvdyBpdCBsaW5rcyB3aXRoIHRoZSByZXN0IG9mIHRoaXMuIEkgaGF2ZSB0byB0cmFjZSBob3cgaXQgdGllcyBpbnRvIGFsbCBvZiB0aGlzOyBpcyBpdCBzaW1pbGFybHkgZGVwZW5kZW50LCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGltZSB0byBkaWcgYSBiaXQgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfeGZybSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMzE9b2JqLSQoQ09ORklHX05GVF9UUFJPWFkpXHQmIzQzOz0gbmZ0X3Rwcm94eS5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjEzMjpvYmotJChDT05GSUdfTkZUX1hGUk0pXHRcdCYjNDM7PSBuZnRfeGZybS5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTEzMy1vYmotJChDT05GSUdfTkZUX1NZTlBST1hZKVx0JiM0Mzs9IG5mdF9zeW5wcm94eS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwMDEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBORlRfWEZSTWAgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyBJIHNlZSB3ZSBuZWVkIGBORlRfWEZSTWAgc3BlY2lmaWNhbGx5IGZvciBgbmZ0X3hmcm0uY2AuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIE5vdywgdGhlIGNydWNpYWwgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIGBORlRfWEZSTWAgaXRzZWxmIHB1bGxzIGluIGFueSAqb3RoZXIqIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIG5ldGZpbHRlciBmcmFtZXdvcmsuIEl0JiMzOTtzIGEgY29tbW9uIHBhdHRlcm4sIGFuZCBJIHdhbnQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkmIzM5O20gY2FwdHVyaW5nIHRoZSBlbnRpcmUgcGljdHVyZSBiZWZvcmUgbWFraW5nIGFueSBhc3N1bXB0aW9ucyBhYm91dCBjb25maWd1cmF0aW9uIG9yIHBvdGVudGlhbCBjb25mbGljdHMuIEkgbmVlZCB0byBiZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgdGhhdCB3b3VsZCBwcmV2ZW50IHRoaXMgZnJvbSBwcm9wZXJseSBidWlsZGluZy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgbWFrZWZpbGVzLCBhbmQgYW55IEtjb25maWcgZW50cmllcyByZWxhdGVkIHRvIGBORlRfWEZSTWAgdG8gZ2V0IGEgZnVsbCBkZXBlbmRlbmN5IG1hcCwgYW5kIGtlZXAgYW4gZXllIG91dCBmb3IgY29uZGl0aW9uYWwgaW5jbHVzaW9uIG9mIG90aGVyIG1vZHVsZXMuIEl04oCZcyBhbHNvIHdvcnRoIHNjYW5uaW5nIGZvciBhbnkgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgbW9kdWxlcywgbGlrZSBjb25uZWN0aW9uIHRyYWNraW5nIG9yIE5BVCBjb21wb25lbnRzLCB0byBzZWUgaWYgYE5GVF9YRlJNYCBoYXMgYW55IGludGVyZGVwZW5kZW5jaWVzLiBUaGlzIHdpbGwgc3RyZWFtbGluZSB0aGUgaW52ZXN0aWdhdGlvbiBhbmQgcHJvdmlkZSBhIG1vcmUgY29tcHJlaGVuc2l2ZSBvdmVydmlldyBvZiB0aGUgaW50ZWdyYXRpb24gcG9pbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZUX1hGUk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTYwOD1jb25maWcgTkZUX0ZJQl9JTkVUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTYxNy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo2MTg6Y29uZmlnIE5GVF9YRlJNXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNjE5LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyB4ZnJtL0lQU2VjIHNlY3VyaXR5IGFzc29jaWF0aW9uIG1hdGNoaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0MDcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBORlRfWEZSTSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gYE5GVF9YRlJNYC4gTGV0JiMzOTtzIHB1bGwgdXAgdGhhdCBLY29uZmlnIGZpbGUgYW5kIHN0YXJ0IGRpc3NlY3RpbmcgaXQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGtleSBkZXBlbmRlbmNpZXMsIHRoZSBkZWZhdWx0IHNldHRpbmdzLCBhbmQgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgdG8gdGhlIHVzZSBjYXNlcyBJJiMzOTttIGludGVyZXN0ZWQgaW4sIHdoaWNoLCBsZXQmIzM5O3MgYmUgaG9uZXN0LCBwcm9iYWJseSByZXZvbHZlIGFyb3VuZCBbKmluc2VydCB5b3VyIHNwZWNpZmljIGFyZWEgb2YgZXhwZXJ0aXNlIGhlcmUgLSBlLmcuLCBoaWdoLXBlcmZvcm1hbmNlIG5ldHdvcmtpbmcsIHNlY3VyaXR5IHBvbGljaWVzLCBzcGVjaWZpYyBoYXJkd2FyZSBhY2NlbGVyYXRpb24sIGV0Yy4qXS4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBtb2R1bGUgaW50ZWdyYXRlcyB3aXRoIHRoZSBicm9hZGVyIE5ldGZpbHRlciBmcmFtZXdvcmsgYW5kIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG1vZHVsZXMuIEkmIzM5O20gZ29pbmcgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgaGVscCB0ZXh0cyBhbmQgYW55IGNvbW1lbnRzOyBvZnRlbiB0aGUgcmF0aW9uYWxlIGZvciBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGJ1cmllZCBpbiB0aGVyZSwgYW5kIHRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgcmVhbGx5IGludGVyZXN0aW5nIG51Z2dldHMgb2YgaW5mb3JtYXRpb24gbGllLiBUaGlzIGlzIGFib3V0IGVuc3VyaW5nIG15IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb25zIGFyZSB1cCB0byBwYXIgb3IgaWRlbnRpZnlpbmcgYW55IHBvdGVudGlhbCBlbmhhbmNlbWVudHMgSSBjYW4gbWFrZSwgYW5kIHJlYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgYWxsIHRoZSBpbXBsaWNhdGlvbnMgdGhpcyBvcHRpb24gbWlnaHQgaGF2ZS4gT2theSwgbGV0JiMzOTtzIGdldCBzdGFydGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYxOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjE4Olx0Y29uZmlnIE5GVF9YRlJNXG4gNjE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgbmZfdGFibGVzIHhmcm0vSVBTZWMgc2VjdXJpdHkgYXNzb2NpYXRpb24gbWF0Y2hpbmdcJiMzNDtcbiA2MjA6XHRcdGRlcGVuZHMgb24gWEZSTVxuIDYyMTpcdFx0aGVscFxuIDYyMjpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIGFuIGV4cHJlc3Npb24gdGhhdCB5b3UgY2FuIHVzZSB0byBleHRyYWN0IHByb3BlcnRpZXNcbiA2MjM6XHRcdCAgb2YgYSBwYWNrZXRzIHNlY3VyaXR5IGFzc29jaWF0aW9uLlxuIDYyNDpcdFxuIDYyNTpcdGNvbmZpZyBORlRfU09DS0VUXG4gNjI2Olx0XHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgbmZfdGFibGVzIHNvY2tldCBtYXRjaCBzdXBwb3J0XCYjMzQ7XG4gNjI3Olx0XHRzZWxlY3QgTkZfU09DS0VUX0lQVjRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg3NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW52ZXN0aWdhdGluZyBEZXBlbmRlbmNpZXMgYW5kIENvbmZpZ3VyYXRpb24gT3B0aW9ucyBmb3IgTmV0ZmlsdGVyIEZ1bmN0aW9uYWxpdHkqKgoKUmlnaHQsIGxldCBtZSBzZWUuIEl0JiMzOTtzIGNsZWFyIHRoYXQgdGhlIGBORlRfWEZSTWAgbW9kdWxlIGhhcyBhIGhhcmQgZGVwZW5kZW5jeSBvbiB0aGUgYFhGUk1gIHN1YnN5c3RlbS4gVGhhdCYjMzk7cyBleHBlY3RlZCwgYnV0IGdvb2QgdG8gbWVudGFsbHkgY29uZmlybS4gSXQgbWVhbnMgaWYgSSB3YW50IGBORlRfWEZSTWAgZnVuY3Rpb25hbGl0eSwgSSAqbXVzdCogaGF2ZSB0aGUgWEZSTSBpbmZyYXN0cnVjdHVyZSBhdmFpbGFibGUuIE5vIHN1cnByaXNlcyB0aGVyZS4KCk5vdywgZGlnZ2luZyBhIGJpdCBkZWVwZXIsIEkgbm90aWNlZCBgbmZ0X3J0LmNgIGhhcyB0aGF0IGAjaWZkZWYgQ09ORklHX0lQX1JPVVRFX0NMQVNTSURgIGJsb2NrLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaWYgZW5hYmxpbmcgYENPTkZJR19JUF9ST1VURV9DTEFTU0lEYCBpcyBzb21ldGhpbmcgd2Ugc2hvdWxkIGJlIGFjdGl2ZWx5IHB1cnN1aW5nLiBJdCBpbXBhY3RzIGhvdyB0aGUgcm91dGluZyBzdWJzeXN0ZW0gaW50ZXJhY3RzIHdpdGggdGhlIE5ldGZpbHRlciBmcmFtZXdvcmsgaW4gdGhpcyBhcmVhLiBQZXJoYXBzIHRoZXJlIGFyZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMsIGNvbXBhdGliaWxpdHkgY29uc2lkZXJhdGlvbnMgd2l0aCBvdXIgZXhpc3Rpbmcgc2V0dXAsIG9yIG1heWJlIHdlIGNhbiBsZXZlcmFnZSB0aGlzIHRvIHNvbHZlIGEgc3BlY2lmaWMgaXNzdWUgd2UgYXJlIGhhdmluZz8gSSYjMzk7bGwgbmVlZCB0byByZXZpZXcgdGhlIGNvbnRleHQgd2l0aGluIHRoZSBjb2RlLCBhbmQgbWF5YmUgY2hlY2sgYW55IHJlbGV2YW50IGNvbW1pdCBsb2dzLCB0byBkZWNpZGUgaWYgd2Ugc2hvdWxkIGVuYWJsZSBpdC4gSXQgd2lsbCBhbHNvIGJlIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9ST1VURV9DTEFTU0lEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTkyPWNvbmZpZyBJUF9ST1VURV9WRVJCT1NFXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0xMDItXG5uZXQvaXB2NC9LY29uZmlnOjEwMzpjb25maWcgSVBfUk9VVEVfQ0xBU1NJRFxubmV0L2lwdjQvS2NvbmZpZy0xMDQtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyOTMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIElQdjQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGUgSVB2NCBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUga2VybmVsLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayBhdCB0aGUgYG5ldC9pcHY0L0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxMDMuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBJUHY0IG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBhcmUgbGlrZWx5IGRlZmluZWQuIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBmb3IgdGhlIG1haW4gZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZCBob3cgSVB2NCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgb3IgcGVyaGFwcyBleHBsb3JpbmcgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZsYWcgSSYjMzk7bSBjdXJyZW50bHkgd3Jlc3RsaW5nIHdpdGguIEtub3dpbmcgdGhlIGtlcm5lbCYjMzk7cyBLY29uZmlnIHN0cnVjdHVyZSwgdGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IHdoZW4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYW4gb3B0aW9uJiMzOTtzIGRlcGVuZGVuY2llcyBvciB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gZWxlbWVudC4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTAzOlx0Y29uZmlnIElQX1JPVVRFX0NMQVNTSURcbiAxMDQ6XHRcdGJvb2xcbiAxMDU6XHRcbiAxMDY6XHRjb25maWcgSVBfUE5QXG4gMTA3Olx0XHRib29sIFwmIzM0O0lQOiBrZXJuZWwgbGV2ZWwgYXV0b2NvbmZpZ3VyYXRpb25cJiMzNDtcbiAxMDg6XHRcdGhlbHBcbiAxMDk6XHRcdCAgVGhpcyBlbmFibGVzIGF1dG9tYXRpYyBjb25maWd1cmF0aW9uIG9mIElQIGFkZHJlc3NlcyBvZiBkZXZpY2VzIGFuZFxuIDExMDpcdFx0ICBvZiB0aGUgcm91dGluZyB0YWJsZSBkdXJpbmcga2VybmVsIGJvb3QsIGJhc2VkIG9uIGVpdGhlciBpbmZvcm1hdGlvblxuIDExMTpcdFx0ICBzdXBwbGllZCBvbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBvciBieSBCT09UUCBvciBSQVJQIHByb3RvY29scy5cbiAxMTI6XHRcdCAgWW91IG5lZWQgdG8gc2F5IFkgb25seSBmb3IgZGlza2xlc3MgbWFjaGluZXMgcmVxdWlyaW5nIG5ldHdvcmtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY4MAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmF2ZWxpbmcgYElQX1JPVVRFX0NMQVNTSURgKioKCk9rYXksIHNvIGBJUF9ST1VURV9DTEFTU0lEYC4uLiBpdCYjMzk7cyBhIGJvb2xlYW4sIGJ1dCB0aGVyZSYjMzk7cyBubyBkaXJlY3QgcHJvbXB0IGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhhdCBpbW1lZGlhdGVseSBzY3JlYW1zICYjMzQ7ZGVwZW5kZW5jeSYjMzQ7IHRvIG1lLiBTb21ldGhpbmcsIHNvbWV3aGVyZSwgKmVsc2UqIGlzIHNldHRpbmcgdGhpcyBmbGFnLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2VsZWN0aW9uIGxvZ2ljLiBMZXQmIzM5O3MgdHJhY2UgYmFjayB0aHJvdWdoIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyB0cmlnZ2VyaW5nIHRoaXMuIFRpbWUgdG8gZGlnIGluIGFuZCBmaW5kIHRoZSB1cHN0cmVhbSBkZXBlbmRlbmN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgSVBfUk9VVEVfQ0xBU1NJRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTE1Mjc9Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9SRUFMTVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTI5LVx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTMwOlx0c2VsZWN0IElQX1JPVVRFX0NMQVNTSURcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTMxLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTQ5ND1jb25maWcgTkVUX0NMU19ST1VURTRcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy00OTYtXHRkZXBlbmRzIG9uIElORVRcbm5ldC9zY2hlZC9LY29uZmlnOjQ5NzpcdHNlbGVjdCBJUF9ST1VURV9DTEFTU0lEXG5uZXQvc2NoZWQvS2NvbmZpZy00OTgtXHRzZWxlY3QgTkVUX0NMU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDAyMgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHdoYXQmIzM5O3MgcnVubmluZyB0aHJvdWdoIG15IGhlYWQ6CgoqKkludmVzdGlnYXRpbmcgSVAgUm91dGluZyBhbmQgQ2xhc3NpZmljYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRvIGdldCB0aGF0IGBJUF9ST1VURV9DTEFTU0lEYCB2YWx1ZS4gVGhlIG9wdGlvbnMgSSBzZWUgYXJlIGVpdGhlciBlbmFibGluZyBgTkVUX0NMU19ST1VURTRgIG9yIGBORVRGSUxURVJfWFRfTUFUQ0hfUkVBTE1gLiBUaGF0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCBJIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgY292ZXJzIGFsbCBteSBiYXNlcy4gQnV0IGhvbGQgb24sIHRoZSBgbmZ0X21ldGEuY2AgZmlsZSBhbHNvIHJlZmVyZW5jZXMgYHRjbGFzc2lkYC4gQW5kIEkgcmVtZW1iZXIgdGhhdCYjMzk7cyBhc3NvY2lhdGVkIHdpdGggYENPTkZJR19JUF9ST1VURV9DTEFTU0lEYC4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBuZnRfbWV0YS5jYCBmaWxlIG9uZSBtb3JlIHRpbWUgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYWxsIGNvbnNpc3RlbnQgYW5kIHRoYXQgSSYjMzk7bSBjb3ZlcmluZyBldmVyeXRoaW5nIG5lZWRlZC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJIGRpZG4mIzM5O3QgbWlzcyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDY6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0lQX1JPVVRFX0NMQVNTSUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTIzNj1zdGF0aWMgYm9vbCBuZnRfbWV0YV9nZXRfZXZhbF9pZm5hbWUoZW51bSBuZnRfbWV0YV9rZXlzIGtleSwgdTMyICpkZXN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0yNzgtXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6Mjc5OiNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTI4MC1zdGF0aWMgbm9pbmxpbmUgYm9vbFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYz0zNjQ9dm9pZCBuZnRfbWV0YV9nZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQxMC1cdFx0YnJlYWs7XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDExOiNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQxMi1cdGNhc2UgTkZUX01FVEFfUlRDTEFTU0lEOlxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYz01MjM9aW50IG5mdF9tZXRhX2dldF9pbml0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTU0Ni1cdGNhc2UgTkZUX01FVEFfU0tHSUQ6XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NTQ3OiNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTU0OC1cdGNhc2UgTkZUX01FVEFfUlRDTEFTU0lEOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY1MQoJCQkJCQkJb3V0cHV0OiAxNjYKCQkJCQkJCXRob3VnaHRzOiA2MDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE5ldGZpbHRlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIG5ldGZpbHRlciBwYXRjaCwgYW5kIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHdoYXQmIzM5O3MgZ29pbmcgb24gYW5kIHdoYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZC4gSXQgbG9va3MgbGlrZSB0aGUgYElQX1JPVVRFX0NMQVNTSURgIGlzIHJlbGV2YW50IGhlcmUsIHNvIEkmIzM5O2xsIGJlIGFkZGluZyBgTkVUX0NMU19ST1VURTRgIHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AuIEkgYWxzbyBuZWVkIHRvIGJlIHN1cmUgd2UgaGF2ZSBgTkZfVEFCTEVTYCwgYE5GVF9YRlJNYCwgYW5kIGBYRlJNYCBlbmFibGVkLgoKTm93LCBob2xkIG9uLi4uIGBORl9UQUJMRVNgIGFwcGVhcnMgdG8gYmUgdGhlIHByaW1hcnkgY29uZmlnIGNvbnRyb2xsaW5nIHRoaW5ncy4gQmVmb3JlIEkgZ28gdG9vIGZhciwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBORl9UQUJMRVNgIGFsb25lIGlzIHN1ZmZpY2llbnQuIEFoLCB5ZXMuIEl0IGxvb2tzIGxpa2UgYm90aCBgbmZ0X21ldGEuY2AgYW5kIGBuZnRfcnQuY2AgYXJlIGJ1aWx0IHdoZW4gb25seSBgTkZfVEFCTEVTYCBpcyBlbmFibGVkLiBBbmQgYG5mdF94ZnJtLmNgIGRlcGVuZHMgb24gYE5GVF9YRlJNYCwgZ29vZC4KClRoZSBlc3NlbmNlIG9mIHRoaXMgcGF0Y2ggaXMgYSBjcnVjaWFsIGJ1ZyBmaXggd2l0aGluIG5ldGZpbHRlci4gSXQgYWRkcmVzc2VzIGFuIGlzc3VlIHdoZXJlIGBza2JfZHN0KHNrYilgIGlzIGJlaW5nIHVzZWQgd2l0aG91dCBmaXJzdCB2YWxpZGF0aW5nIGl0IHdpdGggYHNrYl92YWxpZF9kc3Qoc2tiKWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGluZnJhc3RydWN0dXJlLCBzbyBpdCYjMzk7cyBhYnNvbHV0ZWx5IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLgoKTXkgc3VtbWFyeSBmb3IgdGhlIGZ1enppbmcgc2V0dXAsIHRoZW4sIGlzIHRoaXM6CgoqICAgKipXb3J0aEZ1enppbmcqKjogVHJ1ZSwgYWJzb2x1dGVseS4KKiAgICoqRm9jdXNTeW1ib2xzKio6IFRoZSBtb3N0IGltcG9ydGFudCBmdW5jdGlvbnMgdG8gaGl0OgogICAgKiAgIGBuZnRfbWV0YV9nZXRfZXZhbGAKICAgICogICBgbmZ0X3J0X2dldF9ldmFsYAogICAgKiAgIGBuZnRfeGZybV9nZXRfZXZhbGAKKiAgICoqRW5hYmxlQ29uZmlncyoqOgogICAgKiAgIGBORl9UQUJMRVNgCiAgICAqICAgYE5GVF9YRlJNYAogICAgKiAgIGBYRlJNYAogICAgKiAgIGBORVRfQ0xTX1JPVVRFNGAgKHRoaXMgZW5hYmxlcyBgQ09ORklHX0lQX1JPVVRFX0NMQVNTSURgLCB3aGljaCBpcyBuZWVkZWQgZm9yIHByb3BlciBjb3ZlcmFnZSBvZiBgbmZ0X3J0LmNgIGFuZCBgbmZ0X21ldGEuY2ApCgpUaGUgcmF0aW9uYWxlIGhlcmUgaXMgdGhpczogVGhlIHBhdGNoIGNvcnJlY3RzIGEgY3JpdGljYWwgZmxhdyBpbiBuZnRhYmxlcyB3aGVyZSBtZXRhZGF0YSBkZXN0aW5hdGlvbnMgYXJlIGJlaW5nIGluY29ycmVjdGx5IGhhbmRsZWQsIGxlYWRpbmcgdG8gcG90ZW50aWFsIHByb2JsZW1zLiBUaGlzIGNvZGUgbW9kaWZpZXMgYG5mdF9tZXRhLmNgLCBgbmZ0X3J0LmNgLCBhbmQgYG5mdF94ZnJtLmNgIHRvIHVzZSBgc2tiX3ZhbGlkX2RzdCgpYCBiZWZvcmUgcmVmZXJlbmNpbmcgYHNrYl9kc3QoKWAuIFRoZXNlIGFyZSBjcnVjaWFsIG5ldGZpbHRlciBjb21wb25lbnRzIGFuZCBmdXp6aW5nIHRoZW0gaXMgbWFuZGF0b3J5LgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCB0aG91Z2gsIHRoYXQgYG5mdF9tZXRhX2dldF9ldmFsYCBpcyB0aGUgcmlnaHQgZnVuY3Rpb24gaGVyZS4uLiBZZXAsIGl0IGlzIHRoZSBgLmV2YWxgIGNhbGxiYWNrIHdpdGhpbiBgbmZ0X21ldGFfZ2V0X29wc2AsIGFuZCBsaWtld2lzZSB3aXRoIGBuZnRfcnRfZ2V0X2V2YWxgIGFuZCBgbmZ0X3hmcm1fZ2V0X2V2YWxgLgoKTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IEkgaGF2ZSB0aGUgcHJlY2lzZSBjb25maWcgbmFtZXM6IGBORVRfQ0xTX1JPVVRFNGAgaXMgY29ycmVjdCwgYWNjb3JkaW5nIHRvIGBuZXQvc2NoZWQvS2NvbmZpZ2AuIGBORlRfWEZSTWAgaXMgc3BvdCBvbiwgdGhhdCYjMzk7cyBkZWZpbmVkIGluIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBgTkZfVEFCTEVTYCBpcyBjb3JyZWN0LCBmcm9tIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBBbmQgYFhGUk1gIGlzIHJpZ2h0IHRoZXJlIGluIGBuZXQveGZybS9LY29uZmlnYC4gR29vZC4gRXZlcnl0aGluZyBjaGVja3Mgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05GVF9YRlJNJiMzNDssCiAgICAmIzM0O1hGUk0mIzM0OywKICAgICYjMzQ7TkVUX0NMU19ST1VURTQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnRfbWV0YV9nZXRfZXZhbCYjMzQ7LAogICAgJiMzNDtuZnRfcnRfZ2V0X2V2YWwmIzM0OywKICAgICYjMzQ7bmZ0X3hmcm1fZ2V0X2V2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gbmZ0YWJsZXMgd2hlcmUgbWV0YWRhdGEgZHN0cyBhcmUgaW5jb3JyZWN0bHkgdHJlYXRlZCBhcyByZWFsIGRzdHMsIHdoaWNoIGNhbiBjYXVzZSBpc3N1ZXMuIEl0IG1vZGlmaWVzIG5mdF9tZXRhLmMsIG5mdF9ydC5jLCBhbmQgbmZ0X3hmcm0uYyB0byB1c2Ugc2tiX3ZhbGlkX2RzdCgpIGJlZm9yZSBhY2Nlc3Npbmcgc2tiX2RzdCgpLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUgbmV0ZmlsdGVyIGNvbXBvbmVudHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORlRfWEZSTSYjMzQ7LAogICAgJiMzNDtYRlJNJiMzNDssCiAgICAmIzM0O05FVF9DTFNfUk9VVEU0JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZ0X21ldGFfZ2V0X2V2YWwmIzM0OywKICAgICYjMzQ7bmZ0X3J0X2dldF9ldmFsJiMzNDssCiAgICAmIzM0O25mdF94ZnJtX2dldF9ldmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5mdGFibGVzIHdoZXJlIG1ldGFkYXRhIGRzdHMgYXJlIGluY29ycmVjdGx5IHRyZWF0ZWQgYXMgcmVhbCBkc3RzLCB3aGljaCBjYW4gY2F1c2UgaXNzdWVzLiBJdCBtb2RpZmllcyBuZnRfbWV0YS5jLCBuZnRfcnQuYywgYW5kIG5mdF94ZnJtLmMgdG8gdXNlIHNrYl92YWxpZF9kc3QoKSBiZWZvcmUgYWNjZXNzaW5nIHNrYl9kc3QoKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTg6MzcuMDI5MTE3Nzg1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMzOTI2MjE0ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfVEFCTEVTXCIsXG4gICAgXCJORlRfWEZSTVwiLFxuICAgIFwiWEZSTVwiLFxuICAgIFwiTkVUX0NMU19ST1VURTRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnRfbWV0YV9nZXRfZXZhbFwiLFxuICAgIFwibmZ0X3J0X2dldF9ldmFsXCIsXG4gICAgXCJuZnRfeGZybV9nZXRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5mdGFibGVzIHdoZXJlIG1ldGFkYXRhIGRzdHMgYXJlIGluY29ycmVjdGx5IHRyZWF0ZWQgYXMgcmVhbCBkc3RzLCB3aGljaCBjYW4gY2F1c2UgaXNzdWVzLiBJdCBtb2RpZmllcyBuZnRfbWV0YS5jLCBuZnRfcnQuYywgYW5kIG5mdF94ZnJtLmMgdG8gdXNlIHNrYl92YWxpZF9kc3QoKSBiZWZvcmUgYWNjZXNzaW5nIHNrYl9kc3QoKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxODozNy4wMjkxMjQ5NjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNzQzNTA4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGUyZTA5YTlhYjgzMGJlMWNmMzI4YzE1MjBkOTYxN2YzMmNlY2E3NGNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDY6MTg6MzUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfbWV0YS5jIGIvbmV0L25ldGZpbHRlci9uZnRfbWV0YS5jXFxuaW5kZXggMGE0M2UwNzg3YTY4OC4uMDFjZmJhYTM2NTI1MCAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmNcXG5AQCAtMjAsNiArMjAsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2RzdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2lwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvc29jay5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbmV0L2RzdF9tZXRhZGF0YS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3RjcF9zdGF0ZXMuaFxcdTAwM2UgLyogZm9yIFRDUF9USU1FX1dBSVQgKi9cXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19jb3JlLmhcXHUwMDNlXFxuQEAgLTI3OSwxMSArMjgwLDEyIEBAIHN0YXRpYyBib29sIG5mdF9tZXRhX2dldF9ldmFsX2lmbmFtZShlbnVtIG5mdF9tZXRhX2tleXMga2V5LCB1MzIgKmRlc3QsXFxuIHN0YXRpYyBub2lubGluZSBib29sXFxuIG5mdF9tZXRhX2dldF9ldmFsX3J0Y2xhc3NpZChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgKmRlc3QpXFxuIHtcXG4tXFx0Y29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gc2tiX2RzdChza2IpO1xcbitcXHRjb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7XFxuIFxcbi1cXHRpZiAoIWRzdClcXG4rXFx0aWYgKCFza2JfdmFsaWRfZHN0KHNrYikpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuK1xcdGRzdCA9IHNrYl9kc3Qoc2tiKTtcXG4gXFx0KmRlc3QgPSBkc3QtXFx1MDAzZXRjbGFzc2lkO1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9ydC5jIGIvbmV0L25ldGZpbHRlci9uZnRfcnQuY1xcbmluZGV4IGFlYjAwOTRlYWZkODAuLjg0MWM4NjNhMDhkYjUgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfcnQuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3J0LmNcXG5AQCAtOCw2ICs4LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2RzdC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbmV0L2RzdF9tZXRhZGF0YS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2lwNl9yb3V0ZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3JvdXRlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXFx1MDAzZVxcbkBAIC01OSwxMCArNjAsMTEgQEAgdm9pZCBuZnRfcnRfZ2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbiBcXHR1MzIgKmRlc3QgPSBcXHUwMDI2cmVncy1cXHUwMDNlZGF0YVtwcml2LVxcdTAwM2VkcmVnXTtcXG4gXFx0Y29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0O1xcbiBcXG4tXFx0ZHN0ID0gc2tiX2RzdChza2IpO1xcbi1cXHRpZiAoIWRzdClcXG4rXFx0aWYgKCFza2JfdmFsaWRfZHN0KHNrYikpXFxuIFxcdFxcdGdvdG8gZXJyO1xcbiBcXG4rXFx0ZHN0ID0gc2tiX2RzdChza2IpO1xcbitcXG4gXFx0c3dpdGNoIChwcml2LVxcdTAwM2VrZXkpIHtcXG4gI2lmZGVmIENPTkZJR19JUF9ST1VURV9DTEFTU0lEXFxuIFxcdGNhc2UgTkZUX1JUX0NMQVNTSUQ6XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uY1xcbmluZGV4IDhjZWM0MzA2NDMxOTIuLmM4YmJhNjk3Zjk5M2EgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfeGZybS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZnRfeGZybS5jXFxuQEAgLTEyLDYgKzEyLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZl90YWJsZXMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2NvcmUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NuZXQvZHN0X21ldGFkYXRhLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3hmcm0uaFxcdTAwM2VcXG4gXFxuQEAgLTE3Nyw5ICsxNzgsMTUgQEAgc3RhdGljIHZvaWQgbmZ0X3hmcm1fZ2V0X2V2YWxfb3V0KGNvbnN0IHN0cnVjdCBuZnRfeGZybSAqcHJpdixcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXFxuIFxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXFxuIHtcXG4tXFx0Y29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gc2tiX2RzdChwa3QtXFx1MDAzZXNrYik7XFxuK1xcdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdDtcXG4gXFx0aW50IGk7XFxuIFxcbitcXHRpZiAoIXNrYl92YWxpZF9kc3QocGt0LVxcdTAwM2Vza2IpKSB7XFxuK1xcdFxcdHJlZ3MtXFx1MDAzZXZlcmRpY3QuY29kZSA9IE5GVF9CUkVBSztcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRkc3QgPSBza2JfZHN0KHBrdC1cXHUwMDNlc2tiKTtcXG4gXFx0Zm9yIChpID0gMDsgZHN0IFxcdTAwMjZcXHUwMDI2IGRzdC1cXHUwMDNleGZybTtcXG4gXFx0ICAgICBkc3QgPSAoKGNvbnN0IHN0cnVjdCB4ZnJtX2RzdCAqKWRzdCktXFx1MDAzZWNoaWxkLCBpKyspIHtcXG4gXFx0XFx0aWYgKGkgXFx1MDAzYyBwcml2LVxcdTAwM2VzcG51bSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTg6MzcuNjU3NjUyOTA0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTI3NjQwNzE4MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfVEFCTEVTXCIsXG4gICAgXCJORlRfWEZSTVwiLFxuICAgIFwiWEZSTVwiLFxuICAgIFwiTkVUX0NMU19ST1VURTRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnRfbWV0YV9nZXRfZXZhbFwiLFxuICAgIFwibmZ0X3J0X2dldF9ldmFsXCIsXG4gICAgXCJuZnRfeGZybV9nZXRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5mdGFibGVzIHdoZXJlIG1ldGFkYXRhIGRzdHMgYXJlIGluY29ycmVjdGx5IHRyZWF0ZWQgYXMgcmVhbCBkc3RzLCB3aGljaCBjYW4gY2F1c2UgaXNzdWVzLiBJdCBtb2RpZmllcyBuZnRfbWV0YS5jLCBuZnRfcnQuYywgYW5kIG5mdF94ZnJtLmMgdG8gdXNlIHNrYl92YWxpZF9kc3QoKSBiZWZvcmUgYWNjZXNzaW5nIHNrYl9kc3QoKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlMmUwOWE5YWI4MzBiZTFjZjMyOGMxNTIwZDk2MTdmMzJjZWNhNzRjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDY6MTg6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMgYi9uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmNcbmluZGV4IDBhNDNlMDc4N2E2ODguLjAxY2ZiYWEzNjUyNTAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuY1xuQEAgLTIwLDYgKzIwLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHN0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvaXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9zb2NrLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvZHN0X21ldGFkYXRhLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvdGNwX3N0YXRlcy5oXHUwMDNlIC8qIGZvciBUQ1BfVElNRV9XQUlUICovXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2NvcmUuaFx1MDAzZVxuQEAgLTI3OSwxMSArMjgwLDEyIEBAIHN0YXRpYyBib29sIG5mdF9tZXRhX2dldF9ldmFsX2lmbmFtZShlbnVtIG5mdF9tZXRhX2tleXMga2V5LCB1MzIgKmRlc3QsXG4gc3RhdGljIG5vaW5saW5lIGJvb2xcbiBuZnRfbWV0YV9nZXRfZXZhbF9ydGNsYXNzaWQoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyICpkZXN0KVxuIHtcbi1cdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdCA9IHNrYl9kc3Qoc2tiKTtcbitcdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdDtcbiBcbi1cdGlmICghZHN0KVxuK1x0aWYgKCFza2JfdmFsaWRfZHN0KHNrYikpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbitcdGRzdCA9IHNrYl9kc3Qoc2tiKTtcbiBcdCpkZXN0ID0gZHN0LVx1MDAzZXRjbGFzc2lkO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X3J0LmMgYi9uZXQvbmV0ZmlsdGVyL25mdF9ydC5jXG5pbmRleCBhZWIwMDk0ZWFmZDgwLi44NDFjODYzYTA4ZGI1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfcnQuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZnRfcnQuY1xuQEAgLTgsNiArOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHN0LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvZHN0X21ldGFkYXRhLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvaXA2X3JvdXRlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcm91dGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcdTAwM2VcbkBAIC01OSwxMCArNjAsMTEgQEAgdm9pZCBuZnRfcnRfZ2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuIFx0dTMyICpkZXN0ID0gXHUwMDI2cmVncy1cdTAwM2VkYXRhW3ByaXYtXHUwMDNlZHJlZ107XG4gXHRjb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7XG4gXG4tXHRkc3QgPSBza2JfZHN0KHNrYik7XG4tXHRpZiAoIWRzdClcbitcdGlmICghc2tiX3ZhbGlkX2RzdChza2IpKVxuIFx0XHRnb3RvIGVycjtcbiBcbitcdGRzdCA9IHNrYl9kc3Qoc2tiKTtcbitcbiBcdHN3aXRjaCAocHJpdi1cdTAwM2VrZXkpIHtcbiAjaWZkZWYgQ09ORklHX0lQX1JPVVRFX0NMQVNTSURcbiBcdGNhc2UgTkZUX1JUX0NMQVNTSUQ6XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfeGZybS5jIGIvbmV0L25ldGZpbHRlci9uZnRfeGZybS5jXG5pbmRleCA4Y2VjNDMwNjQzMTkyLi5jOGJiYTY5N2Y5OTNhIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfeGZybS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmNcbkBAIC0xMiw2ICsxMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGZpbHRlci9uZl90YWJsZXNfY29yZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY25ldC9kc3RfbWV0YWRhdGEuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2luLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQveGZybS5oXHUwMDNlXG4gXG5AQCAtMTc3LDkgKzE3OCwxNSBAQCBzdGF0aWMgdm9pZCBuZnRfeGZybV9nZXRfZXZhbF9vdXQoY29uc3Qgc3RydWN0IG5mdF94ZnJtICpwcml2LFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4gXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KVxuIHtcbi1cdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdCA9IHNrYl9kc3QocGt0LVx1MDAzZXNrYik7XG4rXHRjb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7XG4gXHRpbnQgaTtcbiBcbitcdGlmICghc2tiX3ZhbGlkX2RzdChwa3QtXHUwMDNlc2tiKSkge1xuK1x0XHRyZWdzLVx1MDAzZXZlcmRpY3QuY29kZSA9IE5GVF9CUkVBSztcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuK1x0ZHN0ID0gc2tiX2RzdChwa3QtXHUwMDNlc2tiKTtcbiBcdGZvciAoaSA9IDA7IGRzdCBcdTAwMjZcdTAwMjYgZHN0LVx1MDAzZXhmcm07XG4gXHQgICAgIGRzdCA9ICgoY29uc3Qgc3RydWN0IHhmcm1fZHN0ICopZHN0KS1cdTAwM2VjaGlsZCwgaSsrKSB7XG4gXHRcdGlmIChpIFx1MDAzYyBwcml2LVx1MDAzZXNwbnVtKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTg6MzcuNjU3NjU1MzE0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMxMTM5MDQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGZpbHRlciAobmZ0YWJsZXMpIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L25ldGZpbHRlci9uZnRfbWV0YS5jYCwgYG5ldC9uZXRmaWx0ZXIvbmZ0X3J0LmNgLCBhbmQgYG5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uY2AuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byBiZSBzd2FwcGluZyBvdXQgYHNrYl9kc3Qoc2tiKWAgZm9yIGBza2JfdmFsaWRfZHN0KHNrYilgIGJlZm9yZSBhbnkgYWNjZXNzIHRvIGBza2JfZHN0KHNrYilgLiBSaWdodCwgdGhpcyBpcyBhIGNsYXNzaWMgc2FmZXR5IG1lYXN1cmUg4oCTIHdlJ3JlIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBtZXRhZGF0YSBkZXN0aW5hdGlvbnMgYXMgYWN0dWFsIGRlc3RpbmF0aW9ucywgd2hpY2gsIGFzIHdlIGtub3csIGNhbiBjYXVzZSBzb21lIHByZXR0eSBuYXN0eSBwcm9ibGVtcyBkb3duIHRoZSBsaW5lLiBBdm9pZGluZyB0aG9zZSB0eXBlcyBvZiBidWdzIGlzIGFsd2F5cyBhIGdvb2QgdGhpbmcuXG5cbkkgbmVlZCB0byBxdWlja2x5IHJldmlldyB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkLiBTbywgd2UgaGF2ZTpcblxuMS4gIGBuZnRfbWV0YV9nZXRfZXZhbF9ydGNsYXNzaWRgIGluIGBuZnRfbWV0YS5jYFxuMi4gIGBuZnRfcnRfZ2V0X2V2YWxgIGluIGBuZnRfcnQuY2BcbjMuICBgbmZ0X3hmcm1fZ2V0X2V2YWxfb3V0YCBpbiBgbmZ0X3hmcm0uY2BcblxuUmlnaHQsIHRoZXNlIGFyZSBhbGwgd2l0aGluIHRoZSBuZnRhYmxlcyBjb250ZXh0LiBJIGtub3cgdGhhdCBgbmZ0X21ldGFfZ2V0X2V2YWxfcnRjbGFzc2lkYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0J3MgY2FsbGVkIGZyb20gYG5mdF9tZXRhX2dldF9ldmFsYC4gSSdtIGd1ZXNzaW5nIHRoYXQgbWVhbnMgaXQncyBhbiBpbnRlcm5hbCBoZWxwZXIgd2l0aGluIHRoZSBtb2R1bGUuIGBuZnRfcnRfZ2V0X2V2YWxgIGxvb2tzIGxpa2UgYW4gZXhwb3J0ZWQgZnVuY3Rpb24sIG9yIGF0IGxlYXN0IGEgbm9uLXN0YXRpYyBBUEkgZW50cnkgcG9pbnQuIFNpbWlsYXIgdG8gYG5mdF94ZnJtX2dldF9ldmFsX291dGAgd2hpY2ggaXMgc3RhdGljIGFuZCBjYWxsZWQgZnJvbSBgbmZ0X3hmcm1fZ2V0X2V2YWxgLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LlxuXG5UaGVyZWZvcmUsIHRoZSBtYWluIGVudHJ5IHBvaW50cyBhcmUgcHJvYmFibHkgYG5mdF9tZXRhX2dldF9ldmFsYCwgYG5mdF9ydF9nZXRfZXZhbGAsIGFuZCBgbmZ0X3hmcm1fZ2V0X2V2YWxgLiBBIHF1aWNrIGBncmVwcGVyYCBzY2FuIHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgdXNlZCBhbmQgbWFrZSBzdXJlIG15IGFzc3VtcHRpb25zIGFyZSB2YWxpZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk0OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA2OjE4OjQzLjk2OTA0ODUwNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQ4MTI2ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZ0X21ldGFfZ2V0X2V2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZnRfbWV0YS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYz02Mz1zdGF0aWMgbm9pbmxpbmVfZm9yX3N0YWNrIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NjQ6bmZ0X21ldGFfZ2V0X2V2YWxfdGltZShlbnVtIG5mdF9tZXRhX2tleXMga2V5LFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy02NS1cXHRcXHQgICAgICAgdTMyICpkZXN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTgyPXN0YXRpYyBub2lubGluZSBib29sXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjgzOm5mdF9tZXRhX2dldF9ldmFsX3BrdHR5cGVfbG8oY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTg0LVxcdFxcdFxcdCAgICAgdTMyICpkZXN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTEzMj1zdGF0aWMgbm9pbmxpbmUgYm9vbFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzoxMzM6bmZ0X21ldGFfZ2V0X2V2YWxfc2t1Z2lkKGVudW0gbmZ0X21ldGFfa2V5cyBrZXksXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTEzNC1cXHRcXHRcXHQgdTMyICpkZXN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTE3MT1zdGF0aWMgbm9pbmxpbmUgYm9vbFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzoxNzI6bmZ0X21ldGFfZ2V0X2V2YWxfY2dyb3VwKHUzMiAqZGVzdCwgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTE3My17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMTgzLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzoxODQ6c3RhdGljIG5vaW5saW5lIGJvb2wgbmZ0X21ldGFfZ2V0X2V2YWxfa2luZChlbnVtIG5mdF9tZXRhX2tleXMga2V5LFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0xODUtXFx0XFx0XFx0XFx0XFx0ICAgIHUzMiAqZGVzdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYz0yMjc9c3RhdGljIGJvb2wgbmZ0X21ldGFfc3RvcmVfaWZncm91cCh1MzIgKmRlc3QsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMjM1LVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzoyMzY6c3RhdGljIGJvb2wgbmZ0X21ldGFfZ2V0X2V2YWxfaWZuYW1lKGVudW0gbmZ0X21ldGFfa2V5cyBrZXksIHUzMiAqZGVzdCxcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMjM3LVxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM9MjgwPXN0YXRpYyBub2lubGluZSBib29sXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjI4MTpuZnRfbWV0YV9nZXRfZXZhbF9ydGNsYXNzaWQoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyICpkZXN0KVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0yODIte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTI5My1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6Mjk0OnN0YXRpYyBub2lubGluZSB1MzIgbmZ0X21ldGFfZ2V0X2V2YWxfc2RpZihjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMjk1LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYz0zMDY9c3RhdGljIG5vaW5saW5lIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6MzA3Om5mdF9tZXRhX2dldF9ldmFsX3NkaWZuYW1lKHUzMiAqZGVzdCwgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTMwOC17XFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjMwOTpcXHR1MzIgc2RpZiA9IG5mdF9tZXRhX2dldF9ldmFsX3NkaWYocGt0KTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMzEwLVxcdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM9MzE2PXN0YXRpYyB2b2lkIG5mdF9tZXRhX3BrdGluZm9fbWF5X3VwZGF0ZShzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0zNjMtXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjM2NDp2b2lkIG5mdF9tZXRhX2dldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMzY1LVxcdFxcdCAgICAgICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDAyLVxcdGNhc2UgTkZUX01FVEFfT0lGR1JPVVA6XFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjQwMzpcXHRcXHRpZiAoIW5mdF9tZXRhX2dldF9ldmFsX2lmbmFtZShwcml2LVxcdTAwM2VrZXksIGRlc3QsIHBrdCkpXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQwNC1cXHRcXHRcXHRnb3RvIGVycjtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00MDctXFx0Y2FzZSBORlRfTUVUQV9TS0dJRDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDA4OlxcdFxcdGlmICghbmZ0X21ldGFfZ2V0X2V2YWxfc2t1Z2lkKHByaXYtXFx1MDAzZWtleSwgZGVzdCwgcGt0KSlcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDA5LVxcdFxcdFxcdGdvdG8gZXJyO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQxMi1cXHRjYXNlIE5GVF9NRVRBX1JUQ0xBU1NJRDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDEzOlxcdFxcdGlmICghbmZ0X21ldGFfZ2V0X2V2YWxfcnRjbGFzc2lkKHNrYiwgZGVzdCkpXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQxNC1cXHRcXHRcXHRnb3RvIGVycjtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00MjctXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjQyODpcXHRcXHRpZiAoIW5mdF9tZXRhX2dldF9ldmFsX3BrdHR5cGVfbG8ocGt0LCBkZXN0KSlcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDI5LVxcdFxcdFxcdGdvdG8gZXJyO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQzNS1cXHRjYXNlIE5GVF9NRVRBX0NHUk9VUDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDM2OlxcdFxcdGlmICghbmZ0X21ldGFfZ2V0X2V2YWxfY2dyb3VwKGRlc3QsIHBrdCkpXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQzNy1cXHRcXHRcXHRnb3RvIGVycjtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00NDktXFx0Y2FzZSBORlRfTUVUQV9PSUZLSU5EOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzo0NTA6XFx0XFx0aWYgKCFuZnRfbWV0YV9nZXRfZXZhbF9raW5kKHByaXYtXFx1MDAzZWtleSwgZGVzdCwgcGt0KSlcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDUxLVxcdFxcdFxcdGdvdG8gZXJyO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQ1NS1cXHRjYXNlIE5GVF9NRVRBX1RJTUVfSE9VUjpcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDU2OlxcdFxcdG5mdF9tZXRhX2dldF9ldmFsX3RpbWUocHJpdi1cXHUwMDNla2V5LCBkZXN0KTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDU3LVxcdFxcdGJyZWFrO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00NTgtXFx0Y2FzZSBORlRfTUVUQV9TRElGOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzo0NTk6XFx0XFx0KmRlc3QgPSBuZnRfbWV0YV9nZXRfZXZhbF9zZGlmKHBrdCk7XFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQ2MC1cXHRcXHRicmVhaztcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDYxLVxcdGNhc2UgTkZUX01FVEFfU0RJRk5BTUU6XFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjQ2MjpcXHRcXHRuZnRfbWV0YV9nZXRfZXZhbF9zZGlmbmFtZShkZXN0LCBwa3QpO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00NjMtXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDcyLX1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDczOkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9tZXRhX2dldF9ldmFsKTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDc0LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTgwMz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mdF9leHByX29wcyBuZnRfbWV0YV9nZXRfb3BzID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTgwNS1cXHQuc2l6ZVxcdFxcdD0gTkZUX0VYUFJfU0laRShzaXplb2Yoc3RydWN0IG5mdF9tZXRhKSksXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjgwNjpcXHQuZXZhbFxcdFxcdD0gbmZ0X21ldGFfZ2V0X2V2YWwsXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTgwNy1cXHQuaW5pdFxcdFxcdD0gbmZ0X21ldGFfZ2V0X2luaXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA2OjE4OjQ0LjExMzg2NzQ0N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNDYzMDMxMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKk5hdmlnYXRpbmcgdGhlIE5ldGZpbHRlciBDb2RlYmFzZSoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgYG5mdF9tZXRhX2dldF9ldmFsYCBpcyB0aGUga2V5IGVudHJ5IHBvaW50IGluIGBuZnRfbWV0YS5jYC4gVGhhdCBtYWtlcyBzZW5zZS4gTm93IEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGFsbCBob29rZWQgdXAsIHNvIEkgc2hvdWxkIHByb2JhYmx5IGp1bXAgb3ZlciB0byBgbmZ0X3J0LmNgIGFuZCB0YWtlIGEgbG9vayBhdCBgbmZ0X3J0X2dldF9ldmFsYC4gSSdtIGd1ZXNzaW5nIHRoZXJlJ3MgYSBjb25uZWN0aW9uIHRoZXJlIHNvbWV3aGVyZTsgbGlrZWx5LCB0aGUgcm91dGluZyBpbmZvcm1hdGlvbiBpcyBzb21laG93IGJlaW5nIGFjY2Vzc2VkIG9yIG1hbmlwdWxhdGVkIHdpdGhpbiB0aGUgbWV0YWRhdGEgY29udGV4dC4gVGhpcyBmZWVscyBsaWtlIGEgZ29vZCBuZXh0IGxvZ2ljYWwgc3RlcCB0byBtYXAgdGhlIGludGVyZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Njc0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTg6NDcuMTYwMTczMjhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3OTQ5MTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9ydF9nZXRfZXZhbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mdF9ydC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X3J0LmM9MjI9c3RhdGljIHUxNiBnZXRfdGNwbXNzKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LCBjb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpza2Jkc3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9ydC5jLTUzLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3J0LmM6NTQ6dm9pZCBuZnRfcnRfZ2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3J0LmMtNTUtXFx0XFx0ICAgICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9ydC5jPTE5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mdF9leHByX29wcyBuZnRfcnRfZ2V0X29wcyA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3J0LmMtMTk1LVxcdC5zaXplXFx0XFx0PSBORlRfRVhQUl9TSVpFKHNpemVvZihzdHJ1Y3QgbmZ0X3J0KSksXFxubmV0L25ldGZpbHRlci9uZnRfcnQuYzoxOTY6XFx0LmV2YWxcXHRcXHQ9IG5mdF9ydF9nZXRfZXZhbCxcXG5uZXQvbmV0ZmlsdGVyL25mdF9ydC5jLTE5Ny1cXHQuaW5pdFxcdFxcdD0gbmZ0X3J0X2dldF9pbml0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxODo0Ny4zNzgxNDcwNDNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk4MjkzODgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXZpbmcgaW50byB0aGUgbmZ0YWJsZXMgWEZSTSBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGF0IGBuZnRfeGZybV9nZXRfZXZhbGAgZnVuY3Rpb24gaW4gYG5mdF94ZnJtLmNgLCBzcGVjaWZpY2FsbHkuIE15IG1pbmQgaXMgaW1tZWRpYXRlbHkgZHJhd24gdG8gdGhlIGludHJpY2FjaWVzIG9mIGhvdyB3ZSdyZSBoYW5kbGluZyBYRlJNIChJUHNlYy9JUHNlYy1iYXNlZCB0cmFuc2Zvcm1zKSB3aXRoaW4gdGhlIG5mdGFibGVzIGZyYW1ld29yay4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB3aGVyZSB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBwYWNrZXQgZmxvdyBhbmQgcnVsZSBldmFsdWF0aW9uIHByb2Nlc3MuIElzIHRoaXMgdGhlIHBvaW50IHdoZXJlIHdlJ3JlIGFjdHVhbGx5ICpyZXRyaWV2aW5nKiB0aGUgcmVsZXZhbnQgWEZSTSBzdGF0ZSBmb3IgYSBnaXZlbiBwYWNrZXQgYmFzZWQgb24gc29tZSBtYXRjaGluZyBjcml0ZXJpYT8gT3IgaXMgaXQgbW9yZSBpbnZvbHZlZCwgcG90ZW50aWFsbHkgaGFuZGxpbmcgc29tZSBraW5kIG9mIHByZS1ldmFsdWF0aW9uIGNoZWNrP1xuXG5JIG5lZWQgdG8gcXVpY2tseSByZW1lbWJlciBpZiB0aGVyZSdzIGFueSBpbXBsaWNpdCBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggWEZSTSBpbiB0aGUga2VybmVsLiBJIHNob3VsZCBsb29rIGludG8gdGhlIHdheSBuZnRhYmxlcyBpbnRlcmFjdHMgd2l0aCB0aGUgWEZSTSBzdWJzeXN0ZW0uIEFyZSB3ZSBidWlsZGluZyB0aGUgWEZSTS1zcGVjaWZpYyBwYXJ0IG9mIHRoZSBydWxlIHNldCBpbnRvIHNvbWV0aGluZyBlZmZpY2llbnQsIG9yIGlzIHRoZXJlIGEgbG90IG9mIHJ1bnRpbWUgbG9va3VwPyBMZXQgbWUgYWxzbyBiZSBzdXJlIHRoYXQgdGhlIG1lbW9yeSB1c2FnZSBpcyByZWFzb25hYmxlLiBJJ20gaW1hZ2luaW5nIGl0J3MgdXNlZCB3aXRoIGBjb25udHJhY2tgLCBzbyBJJ20gZ29pbmcgdG8gY29uc2lkZXIgaXQgYW4gYXJlYSB3aGVyZSB3ZSBjYW4gcG9zc2libHkgaGF2ZSBpc3N1ZXMgaWYgbm90IHdlbGwgYXJjaGl0ZWN0ZWQuXG5cbkVzc2VudGlhbGx5LCBJIG5lZWQgdG8gcmVtaW5kIG15c2VsZiBvZiB0aGUgZnVsbCBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIHRvIGVuc3VyZSBJIGhhdmUgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBldmFsdWF0aW9uIGxvZ2ljIHRvIHVuZGVyc3RhbmQgaXRzIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcywgcG90ZW50aWFsIGdvdGNoYXMsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIG5mdGFibGVzIGluZnJhc3RydWN0dXJlLiBVbmRlcnN0YW5kaW5nIHRoaXMgZnVuY3Rpb24ncyByb2xlIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBmcmFtZXdvcmsgaW1wbGVtZW50cyBJUHNlYyBwb2xpY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE1OCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA2OjE4OjUxLjI3NjQ0NTEwNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTYzMTI4ODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZ0X3hmcm1fZ2V0X2V2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZnRfeGZybS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYz0xMjA9c3RhdGljIHZvaWQgbmZ0X3hmcm1fc3RhdGVfZ2V0X2tleShjb25zdCBzdHJ1Y3QgbmZ0X3hmcm0gKnByaXYsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMtMTYwLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYzoxNjE6c3RhdGljIHZvaWQgbmZ0X3hmcm1fZ2V0X2V2YWxfaW4oY29uc3Qgc3RydWN0IG5mdF94ZnJtICpwcml2LFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0xNjItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZnRfcmVncyAqcmVncyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0xNzYtXFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jOjE3NzpzdGF0aWMgdm9pZCBuZnRfeGZybV9nZXRfZXZhbF9vdXQoY29uc3Qgc3RydWN0IG5mdF94ZnJtICpwcml2LFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0xNzgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMtMjAxLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYzoyMDI6c3RhdGljIHZvaWQgbmZ0X3hmcm1fZ2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0yMDMtXFx0XFx0XFx0ICAgICAgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jLTIwOS1cXHRjYXNlIFhGUk1fUE9MSUNZX0lOOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYzoyMTA6XFx0XFx0bmZ0X3hmcm1fZ2V0X2V2YWxfaW4ocHJpdiwgcmVncywgcGt0KTtcXG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMtMjExLVxcdFxcdGJyZWFrO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0yMTItXFx0Y2FzZSBYRlJNX1BPTElDWV9PVVQ6XFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jOjIxMzpcXHRcXHRuZnRfeGZybV9nZXRfZXZhbF9vdXQocHJpdiwgcmVncywgcGt0KTtcXG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMtMjE0LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jPTI3MD1zdGF0aWMgY29uc3Qgc3RydWN0IG5mdF9leHByX29wcyBuZnRfeGZybV9nZXRfb3BzID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jLTI3Mi1cXHQuc2l6ZVxcdFxcdD0gTkZUX0VYUFJfU0laRShzaXplb2Yoc3RydWN0IG5mdF94ZnJtKSksXFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jOjI3MzpcXHQuZXZhbFxcdFxcdD0gbmZ0X3hmcm1fZ2V0X2V2YWwsXFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jLTI3NC1cXHQuaW5pdFxcdFxcdD0gbmZ0X3hmcm1fZ2V0X2luaXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA2OjE4OjUxLjQ5Mjc2MzI1OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2OTIyNjc0NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgTkZUYWJsZXMgRnVuY3Rpb24gRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZXNlIGZ1bmN0aW9uczogYG5mdF9tZXRhX2dldF9ldmFsYCwgYG5mdF9ydF9nZXRfZXZhbGAsIGFuZCBgbmZ0X3hmcm1fZ2V0X2V2YWxgLiBUaGVzZSBhcmUgbGlrZWx5IHRoZSBjb3JlIHBpZWNlcyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHRhc2suIEJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIGl0J3MgYWx3YXlzIHdpc2UgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuXG5cblRoZSBmaXJzdCB0aGluZyB0byBhc2NlcnRhaW4gaXMgd2hldGhlciBORlRhYmxlcyBpcyBlbmFibGVkLiBUaGUgY2x1ZSBwb2ludHMgdG8gYE5GX1RBQkxFU2Agd2hpY2ggd2lsbCBhY3RpdmF0ZSBpdC4gVGhlbiB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYG5mdF9tZXRhLmNgIGZpbGUgaXMgYnVpbHQsIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBhbmQgdGhlIGBNYWtlZmlsZWAgaW4gdGhlIGBuZXQvbmV0ZmlsdGVyYCBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSBJIGJlbGlldmUgYE5GVF9NRVRBYCB3aWxsIGJlIHRoZSBrZXkgY29uZmlndXJhdGlvbiB2YWx1ZS4gTGV0J3Mgc3RhcnQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNzYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxODo1NS4xODUwMzM4MzhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MjA1MTA4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnRfbWV0YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9ODc9bmZfdGFibGVzLW9ianMgOj0gbmZfdGFibGVzX2NvcmUubyBuZl90YWJsZXNfYXBpLm8gbmZ0X2NoYWluX2ZpbHRlci5vIFxcXFxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODktXFx0XFx0ICBuZnRfYml0d2lzZS5vIG5mdF9ieXRlb3JkZXIubyBuZnRfcGF5bG9hZC5vIG5mdF9sb29rdXAubyBcXFxcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo5MDpcXHRcXHQgIG5mdF9keW5zZXQubyBuZnRfbWV0YS5vIG5mdF9ydC5vIG5mdF9leHRoZHIubyBuZnRfbGFzdC5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTkxLVxcdFxcdCAgbmZ0X2NvdW50ZXIubyBuZnRfb2JqcmVmLm8gbmZ0X2lubmVyLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxODo1NS4zMzcwOTI2MjRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyNjYzMjI3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2Uga2VybmVsIG1vZHVsZSBkZXBlbmRlbmNpZXMsIGdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlc2UgdGhpbmdzOlxuXG4qKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jaWVzIC0gQSBRdWljayBNZW50YWwgV2Fsa3Rocm91Z2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIEknbSB0cmFja2luZyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIG1vZHVsZXMuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIGBuZnRfbWV0YS5vYCBhbmQgYG5mdF9ydC5vYC4gUmlnaHQsIHRob3NlIGFyZSBkZWZpbml0ZWx5IHBhcnQgb2YgdGhlIGBuZl90YWJsZXMtb2Jqc2AsIG1lYW5pbmcgdGhleSdyZSBjb21waWxlZCB3aGVuIHRoZSBgTkZfVEFCTEVTYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBhY3RpdmUuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UsIHRoZXkncmUgY29yZSBjb21wb25lbnRzLlxuXG5Ob3csIHdoYXQgYWJvdXQgYG5mdF94ZnJtLm9gPyBUaGF0J3MgdGhlIG9uZSBJIG5lZWQgdG8gY29uc2lkZXIgbmV4dCBhbmQgaG93IGl0IGxpbmtzIHdpdGggdGhlIHJlc3Qgb2YgdGhpcy4gSSBoYXZlIHRvIHRyYWNlIGhvdyBpdCB0aWVzIGludG8gYWxsIG9mIHRoaXM7IGlzIGl0IHNpbWlsYXJseSBkZXBlbmRlbnQsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaW1lIHRvIGRpZyBhIGJpdCBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NDAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxODo1OC41NjM3Mjc5MzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjM0OTY5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnRfeGZybVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTMxPW9iai0kKENPTkZJR19ORlRfVFBST1hZKVxcdCs9IG5mdF90cHJveHkub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTMyOm9iai0kKENPTkZJR19ORlRfWEZSTSlcXHRcXHQrPSBuZnRfeGZybS5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMzMtb2JqLSQoQ09ORklHX05GVF9TWU5QUk9YWSlcXHQrPSBuZnRfc3lucHJveHkub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxODo1OC42OTAwODMwNjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2NTA1Mzg2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgTkZUX1hGUk1gIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBzbyBJIHNlZSB3ZSBuZWVkIGBORlRfWEZSTWAgc3BlY2lmaWNhbGx5IGZvciBgbmZ0X3hmcm0uY2AuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIE5vdywgdGhlIGNydWNpYWwgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIGBORlRfWEZSTWAgaXRzZWxmIHB1bGxzIGluIGFueSAqb3RoZXIqIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIG5ldGZpbHRlciBmcmFtZXdvcmsuIEl0J3MgYSBjb21tb24gcGF0dGVybiwgYW5kIEkgd2FudCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSdtIGNhcHR1cmluZyB0aGUgZW50aXJlIHBpY3R1cmUgYmVmb3JlIG1ha2luZyBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgY29uZmlndXJhdGlvbiBvciBwb3RlbnRpYWwgY29uZmxpY3RzLiBJIG5lZWQgdG8gYmUgc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgdGhhdCB3b3VsZCBwcmV2ZW50IHRoaXMgZnJvbSBwcm9wZXJseSBidWlsZGluZy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBtYWtlZmlsZXMsIGFuZCBhbnkgS2NvbmZpZyBlbnRyaWVzIHJlbGF0ZWQgdG8gYE5GVF9YRlJNYCB0byBnZXQgYSBmdWxsIGRlcGVuZGVuY3kgbWFwLCBhbmQga2VlcCBhbiBleWUgb3V0IGZvciBjb25kaXRpb25hbCBpbmNsdXNpb24gb2Ygb3RoZXIgbW9kdWxlcy4gSXTigJlzIGFsc28gd29ydGggc2Nhbm5pbmcgZm9yIGFueSBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBtb2R1bGVzLCBsaWtlIGNvbm5lY3Rpb24gdHJhY2tpbmcgb3IgTkFUIGNvbXBvbmVudHMsIHRvIHNlZSBpZiBgTkZUX1hGUk1gIGhhcyBhbnkgaW50ZXJkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBzdHJlYW1saW5lIHRoZSBpbnZlc3RpZ2F0aW9uIGFuZCBwcm92aWRlIGEgbW9yZSBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3IG9mIHRoZSBpbnRlZ3JhdGlvbiBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwMDEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxOTowMi4zNTUxNDA2M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4MTM4NTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORlRfWEZSTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTYwOD1jb25maWcgTkZUX0ZJQl9JTkVUXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNjE3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo2MTg6Y29uZmlnIE5GVF9YRlJNXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTYxOS1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIG5mX3RhYmxlcyB4ZnJtL0lQU2VjIHNlY3VyaXR5IGFzc29jaWF0aW9uIG1hdGNoaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxOTowMi41NDMyODgzNDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYxMzAxMTk3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIEtjb25maWcgZm9yIE5GVF9YRlJNKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgaW50byB0aGUgZGV0YWlscy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGBORlRfWEZSTWAuIExldCdzIHB1bGwgdXAgdGhhdCBLY29uZmlnIGZpbGUgYW5kIHN0YXJ0IGRpc3NlY3RpbmcgaXQuIEknbSBsb29raW5nIGZvciB0aGUga2V5IGRlcGVuZGVuY2llcywgdGhlIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGUgdXNlIGNhc2VzIEknbSBpbnRlcmVzdGVkIGluLCB3aGljaCwgbGV0J3MgYmUgaG9uZXN0LCBwcm9iYWJseSByZXZvbHZlIGFyb3VuZCBbKmluc2VydCB5b3VyIHNwZWNpZmljIGFyZWEgb2YgZXhwZXJ0aXNlIGhlcmUgLSBlLmcuLCBoaWdoLXBlcmZvcm1hbmNlIG5ldHdvcmtpbmcsIHNlY3VyaXR5IHBvbGljaWVzLCBzcGVjaWZpYyBoYXJkd2FyZSBhY2NlbGVyYXRpb24sIGV0Yy4qXS4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBtb2R1bGUgaW50ZWdyYXRlcyB3aXRoIHRoZSBicm9hZGVyIE5ldGZpbHRlciBmcmFtZXdvcmsgYW5kIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG1vZHVsZXMuIEknbSBnb2luZyB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBoZWxwIHRleHRzIGFuZCBhbnkgY29tbWVudHM7IG9mdGVuIHRoZSByYXRpb25hbGUgZm9yIGEgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgYnVyaWVkIGluIHRoZXJlLCBhbmQgdGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIHJlYWxseSBpbnRlcmVzdGluZyBudWdnZXRzIG9mIGluZm9ybWF0aW9uIGxpZS4gVGhpcyBpcyBhYm91dCBlbnN1cmluZyBteSBleGlzdGluZyBjb25maWd1cmF0aW9ucyBhcmUgdXAgdG8gcGFyIG9yIGlkZW50aWZ5aW5nIGFueSBwb3RlbnRpYWwgZW5oYW5jZW1lbnRzIEkgY2FuIG1ha2UsIGFuZCByZWFsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGFsbCB0aGUgaW1wbGljYXRpb25zIHRoaXMgb3B0aW9uIG1pZ2h0IGhhdmUuIE9rYXksIGxldCdzIGdldCBzdGFydGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDA3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTk6MDYuMTU2MzA0NjIxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNjE4LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNjE4OlxcdGNvbmZpZyBORlRfWEZSTVxcbiA2MTk6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBuZl90YWJsZXMgeGZybS9JUFNlYyBzZWN1cml0eSBhc3NvY2lhdGlvbiBtYXRjaGluZ1xcXCJcXG4gNjIwOlxcdFxcdGRlcGVuZHMgb24gWEZSTVxcbiA2MjE6XFx0XFx0aGVscFxcbiA2MjI6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIGFuIGV4cHJlc3Npb24gdGhhdCB5b3UgY2FuIHVzZSB0byBleHRyYWN0IHByb3BlcnRpZXNcXG4gNjIzOlxcdFxcdCAgb2YgYSBwYWNrZXRzIHNlY3VyaXR5IGFzc29jaWF0aW9uLlxcbiA2MjQ6XFx0XFxuIDYyNTpcXHRjb25maWcgTkZUX1NPQ0tFVFxcbiA2MjY6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBuZl90YWJsZXMgc29ja2V0IG1hdGNoIHN1cHBvcnRcXFwiXFxuIDYyNzpcXHRcXHRzZWxlY3QgTkZfU09DS0VUX0lQVjRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTk6MDYuMTU2NTM0OTExWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NjI2ODYxOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyBEZXBlbmRlbmNpZXMgYW5kIENvbmZpZ3VyYXRpb24gT3B0aW9ucyBmb3IgTmV0ZmlsdGVyIEZ1bmN0aW9uYWxpdHkqKlxuXG5SaWdodCwgbGV0IG1lIHNlZS4gSXQncyBjbGVhciB0aGF0IHRoZSBgTkZUX1hGUk1gIG1vZHVsZSBoYXMgYSBoYXJkIGRlcGVuZGVuY3kgb24gdGhlIGBYRlJNYCBzdWJzeXN0ZW0uIFRoYXQncyBleHBlY3RlZCwgYnV0IGdvb2QgdG8gbWVudGFsbHkgY29uZmlybS4gSXQgbWVhbnMgaWYgSSB3YW50IGBORlRfWEZSTWAgZnVuY3Rpb25hbGl0eSwgSSAqbXVzdCogaGF2ZSB0aGUgWEZSTSBpbmZyYXN0cnVjdHVyZSBhdmFpbGFibGUuIE5vIHN1cnByaXNlcyB0aGVyZS5cblxuTm93LCBkaWdnaW5nIGEgYml0IGRlZXBlciwgSSBub3RpY2VkIGBuZnRfcnQuY2AgaGFzIHRoYXQgYCNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRGAgYmxvY2suIFRoYXQncyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGlmIGVuYWJsaW5nIGBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRGAgaXMgc29tZXRoaW5nIHdlIHNob3VsZCBiZSBhY3RpdmVseSBwdXJzdWluZy4gSXQgaW1wYWN0cyBob3cgdGhlIHJvdXRpbmcgc3Vic3lzdGVtIGludGVyYWN0cyB3aXRoIHRoZSBOZXRmaWx0ZXIgZnJhbWV3b3JrIGluIHRoaXMgYXJlYS4gUGVyaGFwcyB0aGVyZSBhcmUgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLCBjb21wYXRpYmlsaXR5IGNvbnNpZGVyYXRpb25zIHdpdGggb3VyIGV4aXN0aW5nIHNldHVwLCBvciBtYXliZSB3ZSBjYW4gbGV2ZXJhZ2UgdGhpcyB0byBzb2x2ZSBhIHNwZWNpZmljIGlzc3VlIHdlIGFyZSBoYXZpbmc/IEknbGwgbmVlZCB0byByZXZpZXcgdGhlIGNvbnRleHQgd2l0aGluIHRoZSBjb2RlLCBhbmQgbWF5YmUgY2hlY2sgYW55IHJlbGV2YW50IGNvbW1pdCBsb2dzLCB0byBkZWNpZGUgaWYgd2Ugc2hvdWxkIGVuYWJsZSBpdC4gSXQgd2lsbCBhbHNvIGJlIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NzQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA2OjE5OjA5LjkxOTIyNTYzMloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk4NDUxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1JPVVRFX0NMQVNTSURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTkyPWNvbmZpZyBJUF9ST1VURV9WRVJCT1NFXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTEwMi1cXG5uZXQvaXB2NC9LY29uZmlnOjEwMzpjb25maWcgSVBfUk9VVEVfQ0xBU1NJRFxcbm5ldC9pcHY0L0tjb25maWctMTA0LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTk6MTAuMDE5MDgxMTUxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODQ0MzM0MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gSVB2NCBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgemVybyBpbiBvbiB0aGUgSVB2NCBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUga2VybmVsLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayBhdCB0aGUgYG5ldC9pcHY0L0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxMDMuIEknbSBhc3N1bWluZyB0aGF0J3Mgd2hlcmUgdGhlIGNvcmUgSVB2NCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGxpa2VseSBkZWZpbmVkLiBJJ20gcHJvYmFibHkgbG9va2luZyBmb3IgdGhlIG1haW4gZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZCBob3cgSVB2NCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgb3IgcGVyaGFwcyBleHBsb3JpbmcgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZsYWcgSSdtIGN1cnJlbnRseSB3cmVzdGxpbmcgd2l0aC4gS25vd2luZyB0aGUga2VybmVsJ3MgS2NvbmZpZyBzdHJ1Y3R1cmUsIHRoYXQncyB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IHdoZW4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYW4gb3B0aW9uJ3MgZGVwZW5kZW5jaWVzIG9yIHdoYXQncyBnb2luZyBvbiB3aXRoIGEgcGFydGljdWxhciBjb25maWd1cmF0aW9uIGVsZW1lbnQuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjkzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTk6MTMuMTAzNTE5MTg0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEwMzpcXHRjb25maWcgSVBfUk9VVEVfQ0xBU1NJRFxcbiAxMDQ6XFx0XFx0Ym9vbFxcbiAxMDU6XFx0XFxuIDEwNjpcXHRjb25maWcgSVBfUE5QXFxuIDEwNzpcXHRcXHRib29sIFxcXCJJUDoga2VybmVsIGxldmVsIGF1dG9jb25maWd1cmF0aW9uXFxcIlxcbiAxMDg6XFx0XFx0aGVscFxcbiAxMDk6XFx0XFx0ICBUaGlzIGVuYWJsZXMgYXV0b21hdGljIGNvbmZpZ3VyYXRpb24gb2YgSVAgYWRkcmVzc2VzIG9mIGRldmljZXMgYW5kXFxuIDExMDpcXHRcXHQgIG9mIHRoZSByb3V0aW5nIHRhYmxlIGR1cmluZyBrZXJuZWwgYm9vdCwgYmFzZWQgb24gZWl0aGVyIGluZm9ybWF0aW9uXFxuIDExMTpcXHRcXHQgIHN1cHBsaWVkIG9uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIG9yIGJ5IEJPT1RQIG9yIFJBUlAgcHJvdG9jb2xzLlxcbiAxMTI6XFx0XFx0ICBZb3UgbmVlZCB0byBzYXkgWSBvbmx5IGZvciBkaXNrbGVzcyBtYWNoaW5lcyByZXF1aXJpbmcgbmV0d29ya1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxOToxMy4xMDM2ODYyNDRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg3MTM1MjM2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJhdmVsaW5nIGBJUF9ST1VURV9DTEFTU0lEYCoqXG5cbk9rYXksIHNvIGBJUF9ST1VURV9DTEFTU0lEYC4uLiBpdCdzIGEgYm9vbGVhbiwgYnV0IHRoZXJlJ3Mgbm8gZGlyZWN0IHByb21wdCBhc3NvY2lhdGVkIHdpdGggaXQuIFRoYXQgaW1tZWRpYXRlbHkgc2NyZWFtcyBcImRlcGVuZGVuY3lcIiB0byBtZS4gU29tZXRoaW5nLCBzb21ld2hlcmUsICplbHNlKiBpcyBzZXR0aW5nIHRoaXMgZmxhZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNlbGVjdGlvbiBsb2dpYy4gTGV0J3MgdHJhY2UgYmFjayB0aHJvdWdoIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGZpZ3VyZSBvdXQgd2hhdCdzIHRyaWdnZXJpbmcgdGhpcy4gVGltZSB0byBkaWcgaW4gYW5kIGZpbmQgdGhlIHVwc3RyZWFtIGRlcGVuZGVuY3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2ODAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA2OjE5OjE1Ljk3NTA0MTY2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDcyMTQwMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IElQX1JPVVRFX0NMQVNTSURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9MTUyNz1jb25maWcgTkVURklMVEVSX1hUX01BVENIX1JFQUxNXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUyOS1cXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTMwOlxcdHNlbGVjdCBJUF9ST1VURV9DTEFTU0lEXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1MzEtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NDk0PWNvbmZpZyBORVRfQ0xTX1JPVVRFNFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDk2LVxcdGRlcGVuZHMgb24gSU5FVFxcbm5ldC9zY2hlZC9LY29uZmlnOjQ5NzpcXHRzZWxlY3QgSVBfUk9VVEVfQ0xBU1NJRFxcbm5ldC9zY2hlZC9LY29uZmlnLTQ5OC1cXHRzZWxlY3QgTkVUX0NMU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxOToxNi4yMjIyNjEwNDlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0MTU3NDMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHdoYXQncyBydW5uaW5nIHRocm91Z2ggbXkgaGVhZDpcblxuKipJbnZlc3RpZ2F0aW5nIElQIFJvdXRpbmcgYW5kIENsYXNzaWZpY2F0aW9uIE9wdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdG8gZ2V0IHRoYXQgYElQX1JPVVRFX0NMQVNTSURgIHZhbHVlLiBUaGUgb3B0aW9ucyBJIHNlZSBhcmUgZWl0aGVyIGVuYWJsaW5nIGBORVRfQ0xTX1JPVVRFNGAgb3IgYE5FVEZJTFRFUl9YVF9NQVRDSF9SRUFMTWAuIFRoYXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IEkgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBjb3ZlcnMgYWxsIG15IGJhc2VzLiBCdXQgaG9sZCBvbiwgdGhlIGBuZnRfbWV0YS5jYCBmaWxlIGFsc28gcmVmZXJlbmNlcyBgdGNsYXNzaWRgLiBBbmQgSSByZW1lbWJlciB0aGF0J3MgYXNzb2NpYXRlZCB3aXRoIGBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRGAuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgbmZ0X21ldGEuY2AgZmlsZSBvbmUgbW9yZSB0aW1lIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFsbCBjb25zaXN0ZW50IGFuZCB0aGF0IEknbSBjb3ZlcmluZyBldmVyeXRoaW5nIG5lZWRlZC4gTGV0J3MgbWFrZSBzdXJlIEkgZGlkbid0IG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDIyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTk6MTkuOTYzODM5MjA4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTQwOTg0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTIzNj1zdGF0aWMgYm9vbCBuZnRfbWV0YV9nZXRfZXZhbF9pZm5hbWUoZW51bSBuZnRfbWV0YV9rZXlzIGtleSwgdTMyICpkZXN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTI3OC1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6Mjc5OiNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0yODAtc3RhdGljIG5vaW5saW5lIGJvb2xcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYz0zNjQ9dm9pZCBuZnRfbWV0YV9nZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDEwLVxcdFxcdGJyZWFrO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzo0MTE6I2lmZGVmIENPTkZJR19JUF9ST1VURV9DTEFTU0lEXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQxMi1cXHRjYXNlIE5GVF9NRVRBX1JUQ0xBU1NJRDpcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYz01MjM9aW50IG5mdF9tZXRhX2dldF9pbml0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNTQ2LVxcdGNhc2UgTkZUX01FVEFfU0tHSUQ6XFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjU0NzojaWZkZWYgQ09ORklHX0lQX1JPVVRFX0NMQVNTSURcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNTQ4LVxcdGNhc2UgTkZUX01FVEFfUlRDTEFTU0lEOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxOToyMC4wNTUyNTU2NjRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAxMjk0MDc1MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE5ldGZpbHRlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBuZXRmaWx0ZXIgcGF0Y2gsIGFuZCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHdoYXQncyBnb2luZyBvbiBhbmQgd2hhdCBuZWVkcyB0byBiZSBjb25zaWRlcmVkLiBJdCBsb29rcyBsaWtlIHRoZSBgSVBfUk9VVEVfQ0xBU1NJRGAgaXMgcmVsZXZhbnQgaGVyZSwgc28gSSdsbCBiZSBhZGRpbmcgYE5FVF9DTFNfUk9VVEU0YCB0byB0aGUgYEVuYWJsZUNvbmZpZ3NgLiBJIGFsc28gbmVlZCB0byBiZSBzdXJlIHdlIGhhdmUgYE5GX1RBQkxFU2AsIGBORlRfWEZSTWAsIGFuZCBgWEZSTWAgZW5hYmxlZC5cblxuTm93LCBob2xkIG9uLi4uIGBORl9UQUJMRVNgIGFwcGVhcnMgdG8gYmUgdGhlIHByaW1hcnkgY29uZmlnIGNvbnRyb2xsaW5nIHRoaW5ncy4gQmVmb3JlIEkgZ28gdG9vIGZhciwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBORl9UQUJMRVNgIGFsb25lIGlzIHN1ZmZpY2llbnQuIEFoLCB5ZXMuIEl0IGxvb2tzIGxpa2UgYm90aCBgbmZ0X21ldGEuY2AgYW5kIGBuZnRfcnQuY2AgYXJlIGJ1aWx0IHdoZW4gb25seSBgTkZfVEFCTEVTYCBpcyBlbmFibGVkLiBBbmQgYG5mdF94ZnJtLmNgIGRlcGVuZHMgb24gYE5GVF9YRlJNYCwgZ29vZC5cblxuVGhlIGVzc2VuY2Ugb2YgdGhpcyBwYXRjaCBpcyBhIGNydWNpYWwgYnVnIGZpeCB3aXRoaW4gbmV0ZmlsdGVyLiBJdCBhZGRyZXNzZXMgYW4gaXNzdWUgd2hlcmUgYHNrYl9kc3Qoc2tiKWAgaXMgYmVpbmcgdXNlZCB3aXRob3V0IGZpcnN0IHZhbGlkYXRpbmcgaXQgd2l0aCBgc2tiX3ZhbGlkX2RzdChza2IpYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgY29yZSBuZXRmaWx0ZXIgaW5mcmFzdHJ1Y3R1cmUsIHNvIGl0J3MgYWJzb2x1dGVseSBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cblxuTXkgc3VtbWFyeSBmb3IgdGhlIGZ1enppbmcgc2V0dXAsIHRoZW4sIGlzIHRoaXM6XG5cbiogICAqKldvcnRoRnV6emluZyoqOiBUcnVlLCBhYnNvbHV0ZWx5LlxuKiAgICoqRm9jdXNTeW1ib2xzKio6IFRoZSBtb3N0IGltcG9ydGFudCBmdW5jdGlvbnMgdG8gaGl0OlxuICAgICogICBgbmZ0X21ldGFfZ2V0X2V2YWxgXG4gICAgKiAgIGBuZnRfcnRfZ2V0X2V2YWxgXG4gICAgKiAgIGBuZnRfeGZybV9nZXRfZXZhbGBcbiogICAqKkVuYWJsZUNvbmZpZ3MqKjpcbiAgICAqICAgYE5GX1RBQkxFU2BcbiAgICAqICAgYE5GVF9YRlJNYFxuICAgICogICBgWEZSTWBcbiAgICAqICAgYE5FVF9DTFNfUk9VVEU0YCAodGhpcyBlbmFibGVzIGBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRGAsIHdoaWNoIGlzIG5lZWRlZCBmb3IgcHJvcGVyIGNvdmVyYWdlIG9mIGBuZnRfcnQuY2AgYW5kIGBuZnRfbWV0YS5jYClcblxuVGhlIHJhdGlvbmFsZSBoZXJlIGlzIHRoaXM6IFRoZSBwYXRjaCBjb3JyZWN0cyBhIGNyaXRpY2FsIGZsYXcgaW4gbmZ0YWJsZXMgd2hlcmUgbWV0YWRhdGEgZGVzdGluYXRpb25zIGFyZSBiZWluZyBpbmNvcnJlY3RseSBoYW5kbGVkLCBsZWFkaW5nIHRvIHBvdGVudGlhbCBwcm9ibGVtcy4gVGhpcyBjb2RlIG1vZGlmaWVzIGBuZnRfbWV0YS5jYCwgYG5mdF9ydC5jYCwgYW5kIGBuZnRfeGZybS5jYCB0byB1c2UgYHNrYl92YWxpZF9kc3QoKWAgYmVmb3JlIHJlZmVyZW5jaW5nIGBza2JfZHN0KClgLiBUaGVzZSBhcmUgY3J1Y2lhbCBuZXRmaWx0ZXIgY29tcG9uZW50cyBhbmQgZnV6emluZyB0aGVtIGlzIG1hbmRhdG9yeS5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCB0aG91Z2gsIHRoYXQgYG5mdF9tZXRhX2dldF9ldmFsYCBpcyB0aGUgcmlnaHQgZnVuY3Rpb24gaGVyZS4uLiBZZXAsIGl0IGlzIHRoZSBgLmV2YWxgIGNhbGxiYWNrIHdpdGhpbiBgbmZ0X21ldGFfZ2V0X29wc2AsIGFuZCBsaWtld2lzZSB3aXRoIGBuZnRfcnRfZ2V0X2V2YWxgIGFuZCBgbmZ0X3hmcm1fZ2V0X2V2YWxgLlxuXG5MZXQgbWUganVzdCBjb25maXJtIHRoYXQgSSBoYXZlIHRoZSBwcmVjaXNlIGNvbmZpZyBuYW1lczogYE5FVF9DTFNfUk9VVEU0YCBpcyBjb3JyZWN0LCBhY2NvcmRpbmcgdG8gYG5ldC9zY2hlZC9LY29uZmlnYC4gYE5GVF9YRlJNYCBpcyBzcG90IG9uLCB0aGF0J3MgZGVmaW5lZCBpbiBgbmV0L25ldGZpbHRlci9LY29uZmlnYC4gYE5GX1RBQkxFU2AgaXMgY29ycmVjdCwgZnJvbSBgbmV0L25ldGZpbHRlci9LY29uZmlnYC4gQW5kIGBYRlJNYCBpcyByaWdodCB0aGVyZSBpbiBgbmV0L3hmcm0vS2NvbmZpZ2AuIEdvb2QuIEV2ZXJ5dGhpbmcgY2hlY2tzIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2NTEsIk91dHB1dFRva2VucyI6MTY2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA2OjE5OjMwLjE4NDY2Njg3MVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzA1MjE3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfVEFCTEVTXCIsXG4gICAgXCJORlRfWEZSTVwiLFxuICAgIFwiWEZSTVwiLFxuICAgIFwiTkVUX0NMU19ST1VURTRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnRfbWV0YV9nZXRfZXZhbFwiLFxuICAgIFwibmZ0X3J0X2dldF9ldmFsXCIsXG4gICAgXCJuZnRfeGZybV9nZXRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5mdGFibGVzIHdoZXJlIG1ldGFkYXRhIGRzdHMgYXJlIGluY29ycmVjdGx5IHRyZWF0ZWQgYXMgcmVhbCBkc3RzLCB3aGljaCBjYW4gY2F1c2UgaXNzdWVzLiBJdCBtb2RpZmllcyBuZnRfbWV0YS5jLCBuZnRfcnQuYywgYW5kIG5mdF94ZnJtLmMgdG8gdXNlIHNrYl92YWxpZF9kc3QoKSBiZWZvcmUgYWNjZXNzaW5nIHNrYl9kc3QoKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkZUX1hGUk1cIixcbiAgICBcIlhGUk1cIixcbiAgICBcIk5FVF9DTFNfUk9VVEU0XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZ0X21ldGFfZ2V0X2V2YWxcIixcbiAgICBcIm5mdF9ydF9nZXRfZXZhbFwiLFxuICAgIFwibmZ0X3hmcm1fZ2V0X2V2YWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBuZnRhYmxlcyB3aGVyZSBtZXRhZGF0YSBkc3RzIGFyZSBpbmNvcnJlY3RseSB0cmVhdGVkIGFzIHJlYWwgZHN0cywgd2hpY2ggY2FuIGNhdXNlIGlzc3Vlcy4gSXQgbW9kaWZpZXMgbmZ0X21ldGEuYywgbmZ0X3J0LmMsIGFuZCBuZnRfeGZybS5jIHRvIHVzZSBza2JfdmFsaWRfZHN0KCkgYmVmb3JlIGFjY2Vzc2luZyBza2JfZHN0KCkuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXRmaWx0ZXIgY29tcG9uZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt6jg8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 05:48:31 +0000 UTC FinishedAt: 2026-07-29 06:19:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_TABLES", "NFT_XFRM", "XFRM", "NET_CLS_ROUTE4" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_TABLES", "NFT_XFRM", "XFRM", "NET_CLS_ROUTE4" ], "series_id": "250b78fc-95ac-4f6f-8746-9f8d8777688b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nft_meta_get_eval", "nft_rt_get_eval", "nft_xfrm_get_eval" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORlRfWEZSTSYjMzQ7LAogICAgJiMzNDtYRlJNJiMzNDssCiAgICAmIzM0O05FVF9DTFNfUk9VVEU0JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZ0X21ldGFfZ2V0X2V2YWwmIzM0OywKICAgICYjMzQ7bmZ0X3J0X2dldF9ldmFsJiMzNDssCiAgICAmIzM0O25mdF94ZnJtX2dldF9ldmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5mdGFibGVzIHdoZXJlIG1ldGFkYXRhIGRzdHMgYXJlIGluY29ycmVjdGx5IHRyZWF0ZWQgYXMgcmVhbCBkc3RzLCB3aGljaCBjYW4gY2F1c2UgaXNzdWVzLiBJdCBtb2RpZmllcyBuZnRfbWV0YS5jLCBuZnRfcnQuYywgYW5kIG5mdF94ZnJtLmMgdG8gdXNlIHNrYl92YWxpZF9kc3QoKSBiZWZvcmUgYWNjZXNzaW5nIHNrYl9kc3QoKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTJlMDlhOWFiODMwYmUxY2YzMjhjMTUyMGQ5NjE3ZjMyY2VjYTc0Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDA2OjE4OjM1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuY1xuaW5kZXggMGE0M2UwNzg3YTY4OC4uMDFjZmJhYTM2NTI1MCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZnRfbWV0YS5jXG5AQCAtMjAsNiAmIzQzOzIwLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHN0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvaXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9zb2NrLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L2RzdF9tZXRhZGF0YS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3RjcF9zdGF0ZXMuaFx1MDAzZSAvKiBmb3IgVENQX1RJTUVfV0FJVCAqL1xuICNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19jb3JlLmhcdTAwM2VcbkBAIC0yNzksMTEgJiM0MzsyODAsMTIgQEAgc3RhdGljIGJvb2wgbmZ0X21ldGFfZ2V0X2V2YWxfaWZuYW1lKGVudW0gbmZ0X21ldGFfa2V5cyBrZXksIHUzMiAqZGVzdCxcbiBzdGF0aWMgbm9pbmxpbmUgYm9vbFxuIG5mdF9tZXRhX2dldF9ldmFsX3J0Y2xhc3NpZChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgKmRlc3QpXG4ge1xuLVx0Y29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gc2tiX2RzdChza2IpO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdDtcbiBcbi1cdGlmICghZHN0KVxuJiM0MztcdGlmICghc2tiX3ZhbGlkX2RzdChza2IpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4mIzQzO1x0ZHN0ID0gc2tiX2RzdChza2IpO1xuIFx0KmRlc3QgPSBkc3QtXHUwMDNldGNsYXNzaWQ7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfcnQuYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3J0LmNcbmluZGV4IGFlYjAwOTRlYWZkODAuLjg0MWM4NjNhMDhkYjUgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9ydC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mdF9ydC5jXG5AQCAtOCw2ICYjNDM7OCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHN0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L2RzdF9tZXRhZGF0YS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2lwNl9yb3V0ZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3JvdXRlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXHUwMDNlXG5AQCAtNTksMTAgJiM0Mzs2MCwxMSBAQCB2b2lkIG5mdF9ydF9nZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4gXHR1MzIgKmRlc3QgPSBcdTAwMjZyZWdzLVx1MDAzZWRhdGFbcHJpdi1cdTAwM2VkcmVnXTtcbiBcdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdDtcbiBcbi1cdGRzdCA9IHNrYl9kc3Qoc2tiKTtcbi1cdGlmICghZHN0KVxuJiM0MztcdGlmICghc2tiX3ZhbGlkX2RzdChza2IpKVxuIFx0XHRnb3RvIGVycjtcbiBcbiYjNDM7XHRkc3QgPSBza2JfZHN0KHNrYik7XG4mIzQzO1xuIFx0c3dpdGNoIChwcml2LVx1MDAzZWtleSkge1xuICNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRFxuIFx0Y2FzZSBORlRfUlRfQ0xBU1NJRDpcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMgYi9uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmNcbmluZGV4IDhjZWM0MzA2NDMxOTIuLmM4YmJhNjk3Zjk5M2EgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uY1xuQEAgLTEyLDYgJiM0MzsxMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGZpbHRlci9uZl90YWJsZXNfY29yZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NuZXQvZHN0X21ldGFkYXRhLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3hmcm0uaFx1MDAzZVxuIFxuQEAgLTE3Nyw5ICYjNDM7MTc4LDE1IEBAIHN0YXRpYyB2b2lkIG5mdF94ZnJtX2dldF9ldmFsX291dChjb25zdCBzdHJ1Y3QgbmZ0X3hmcm0gKnByaXYsXG4gXHRcdFx0XHQgIHN0cnVjdCBuZnRfcmVncyAqcmVncyxcbiBcdFx0XHRcdCAgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXG4ge1xuLVx0Y29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gc2tiX2RzdChwa3QtXHUwMDNlc2tiKTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHRpZiAoIXNrYl92YWxpZF9kc3QocGt0LVx1MDAzZXNrYikpIHtcbiYjNDM7XHRcdHJlZ3MtXHUwMDNldmVyZGljdC5jb2RlID0gTkZUX0JSRUFLO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0ZHN0ID0gc2tiX2RzdChwa3QtXHUwMDNlc2tiKTtcbiBcdGZvciAoaSA9IDA7IGRzdCBcdTAwMjZcdTAwMjYgZHN0LVx1MDAzZXhmcm07XG4gXHQgICAgIGRzdCA9ICgoY29uc3Qgc3RydWN0IHhmcm1fZHN0ICopZHN0KS1cdTAwM2VjaGlsZCwgaSYjNDM7JiM0MzspIHtcbiBcdFx0aWYgKGkgXHUwMDNjIHByaXYtXHUwMDNlc3BudW0pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDY6MTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORlRfWEZSTSYjMzQ7LAogICAgJiMzNDtYRlJNJiMzNDssCiAgICAmIzM0O05FVF9DTFNfUk9VVEU0JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZ0X21ldGFfZ2V0X2V2YWwmIzM0OywKICAgICYjMzQ7bmZ0X3J0X2dldF9ldmFsJiMzNDssCiAgICAmIzM0O25mdF94ZnJtX2dldF9ldmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5mdGFibGVzIHdoZXJlIG1ldGFkYXRhIGRzdHMgYXJlIGluY29ycmVjdGx5IHRyZWF0ZWQgYXMgcmVhbCBkc3RzLCB3aGljaCBjYW4gY2F1c2UgaXNzdWVzLiBJdCBtb2RpZmllcyBuZnRfbWV0YS5jLCBuZnRfcnQuYywgYW5kIG5mdF94ZnJtLmMgdG8gdXNlIHNrYl92YWxpZF9kc3QoKSBiZWZvcmUgYWNjZXNzaW5nIHNrYl9kc3QoKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTJlMDlhOWFiODMwYmUxY2YzMjhjMTUyMGQ5NjE3ZjMyY2VjYTc0YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDI5IDA2OjE4OjM1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfbWV0YS5jIGIvbmV0L25ldGZpbHRlci9uZnRfbWV0YS5jCmluZGV4IDBhNDNlMDc4N2E2ODguLjAxY2ZiYWEzNjUyNTAgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMKQEAgLTIwLDYgJiM0MzsyMCw3IEBACiAjaW5jbHVkZSAmbHQ7bmV0L2RzdC5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9pcC5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9zb2NrLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O25ldC9kc3RfbWV0YWRhdGEuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvdGNwX3N0YXRlcy5oJmd0OyAvKiBmb3IgVENQX1RJTUVfV0FJVCAqLwogI2luY2x1ZGUgJmx0O25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfY29yZS5oJmd0OwpAQCAtMjc5LDExICYjNDM7MjgwLDEyIEBAIHN0YXRpYyBib29sIG5mdF9tZXRhX2dldF9ldmFsX2lmbmFtZShlbnVtIG5mdF9tZXRhX2tleXMga2V5LCB1MzIgKmRlc3QsCiBzdGF0aWMgbm9pbmxpbmUgYm9vbAogbmZ0X21ldGFfZ2V0X2V2YWxfcnRjbGFzc2lkKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHUzMiAqZGVzdCkKIHsKLQljb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBza2JfZHN0KHNrYik7CiYjNDM7CWNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdDsKIAotCWlmICghZHN0KQomIzQzOwlpZiAoIXNrYl92YWxpZF9kc3Qoc2tiKSkKIAkJcmV0dXJuIGZhbHNlOwogCiYjNDM7CWRzdCA9IHNrYl9kc3Qoc2tiKTsKIAkqZGVzdCA9IGRzdC0mZ3Q7dGNsYXNzaWQ7CiAJcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9ydC5jIGIvbmV0L25ldGZpbHRlci9uZnRfcnQuYwppbmRleCBhZWIwMDk0ZWFmZDgwLi44NDFjODYzYTA4ZGI1IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3J0LmMKQEAgLTgsNiAmIzQzOzgsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L25ldGZpbHRlci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L25ldGZpbHRlci9uZl90YWJsZXMuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvZHN0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O25ldC9kc3RfbWV0YWRhdGEuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvaXA2X3JvdXRlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3JvdXRlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXMuaCZndDsKQEAgLTU5LDEwICYjNDM7NjAsMTEgQEAgdm9pZCBuZnRfcnRfZ2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLAogCXUzMiAqZGVzdCA9ICZhbXA7cmVncy0mZ3Q7ZGF0YVtwcml2LSZndDtkcmVnXTsKIAljb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7CiAKLQlkc3QgPSBza2JfZHN0KHNrYik7Ci0JaWYgKCFkc3QpCiYjNDM7CWlmICghc2tiX3ZhbGlkX2RzdChza2IpKQogCQlnb3RvIGVycjsKIAomIzQzOwlkc3QgPSBza2JfZHN0KHNrYik7CiYjNDM7CiAJc3dpdGNoIChwcml2LSZndDtrZXkpIHsKICNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRAogCWNhc2UgTkZUX1JUX0NMQVNTSUQ6CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMgYi9uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMKaW5kZXggOGNlYzQzMDY0MzE5Mi4uYzhiYmE2OTdmOTkzYSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfeGZybS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYwpAQCAtMTIsNiAmIzQzOzEyLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9uZXRmaWx0ZXIvbmZfdGFibGVzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfY29yZS5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O25ldC9kc3RfbWV0YWRhdGEuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pbi5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC94ZnJtLmgmZ3Q7CiAKQEAgLTE3Nyw5ICYjNDM7MTc4LDE1IEBAIHN0YXRpYyB2b2lkIG5mdF94ZnJtX2dldF9ldmFsX291dChjb25zdCBzdHJ1Y3QgbmZ0X3hmcm0gKnByaXYsCiAJCQkJICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsCiAJCQkJICBjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCkKIHsKLQljb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBza2JfZHN0KHBrdC0mZ3Q7c2tiKTsKJiM0MzsJY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0OwogCWludCBpOwogCiYjNDM7CWlmICghc2tiX3ZhbGlkX2RzdChwa3QtJmd0O3NrYikpIHsKJiM0MzsJCXJlZ3MtJmd0O3ZlcmRpY3QuY29kZSA9IE5GVF9CUkVBSzsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlkc3QgPSBza2JfZHN0KHBrdC0mZ3Q7c2tiKTsKIAlmb3IgKGkgPSAwOyBkc3QgJmFtcDsmYW1wOyBkc3QtJmd0O3hmcm07CiAJICAgICBkc3QgPSAoKGNvbnN0IHN0cnVjdCB4ZnJtX2RzdCAqKWRzdCktJmd0O2NoaWxkLCBpJiM0MzsmIzQzOykgewogCQlpZiAoaSAmbHQ7IHByaXYtJmd0O3NwbnVtKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTQ5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIChuZnRhYmxlcykgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L25ldGZpbHRlci9uZnRfbWV0YS5jYCwgYG5ldC9uZXRmaWx0ZXIvbmZ0X3J0LmNgLCBhbmQgYG5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uY2AuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byBiZSBzd2FwcGluZyBvdXQgYHNrYl9kc3Qoc2tiKWAgZm9yIGBza2JfdmFsaWRfZHN0KHNrYilgIGJlZm9yZSBhbnkgYWNjZXNzIHRvIGBza2JfZHN0KHNrYilgLiBSaWdodCwgdGhpcyBpcyBhIGNsYXNzaWMgc2FmZXR5IG1lYXN1cmUg4oCTIHdlJiMzOTtyZSBwcmV2ZW50aW5nIHRoZSB1c2Ugb2YgbWV0YWRhdGEgZGVzdGluYXRpb25zIGFzIGFjdHVhbCBkZXN0aW5hdGlvbnMsIHdoaWNoLCBhcyB3ZSBrbm93LCBjYW4gY2F1c2Ugc29tZSBwcmV0dHkgbmFzdHkgcHJvYmxlbXMgZG93biB0aGUgbGluZS4gQXZvaWRpbmcgdGhvc2UgdHlwZXMgb2YgYnVncyBpcyBhbHdheXMgYSBnb29kIHRoaW5nLgoKSSBuZWVkIHRvIHF1aWNrbHkgcmV2aWV3IHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQuIFNvLCB3ZSBoYXZlOgoKMS4gIGBuZnRfbWV0YV9nZXRfZXZhbF9ydGNsYXNzaWRgIGluIGBuZnRfbWV0YS5jYAoyLiAgYG5mdF9ydF9nZXRfZXZhbGAgaW4gYG5mdF9ydC5jYAozLiAgYG5mdF94ZnJtX2dldF9ldmFsX291dGAgaW4gYG5mdF94ZnJtLmNgCgpSaWdodCwgdGhlc2UgYXJlIGFsbCB3aXRoaW4gdGhlIG5mdGFibGVzIGNvbnRleHQuIEkga25vdyB0aGF0IGBuZnRfbWV0YV9nZXRfZXZhbF9ydGNsYXNzaWRgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYG5mdF9tZXRhX2dldF9ldmFsYC4gSSYjMzk7bSBndWVzc2luZyB0aGF0IG1lYW5zIGl0JiMzOTtzIGFuIGludGVybmFsIGhlbHBlciB3aXRoaW4gdGhlIG1vZHVsZS4gYG5mdF9ydF9nZXRfZXZhbGAgbG9va3MgbGlrZSBhbiBleHBvcnRlZCBmdW5jdGlvbiwgb3IgYXQgbGVhc3QgYSBub24tc3RhdGljIEFQSSBlbnRyeSBwb2ludC4gU2ltaWxhciB0byBgbmZ0X3hmcm1fZ2V0X2V2YWxfb3V0YCB3aGljaCBpcyBzdGF0aWMgYW5kIGNhbGxlZCBmcm9tIGBuZnRfeGZybV9nZXRfZXZhbGAuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LgoKVGhlcmVmb3JlLCB0aGUgbWFpbiBlbnRyeSBwb2ludHMgYXJlIHByb2JhYmx5IGBuZnRfbWV0YV9nZXRfZXZhbGAsIGBuZnRfcnRfZ2V0X2V2YWxgLCBhbmQgYG5mdF94ZnJtX2dldF9ldmFsYC4gQSBxdWljayBgZ3JlcHBlcmAgc2NhbiBzaG91bGQgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIHVzZWQgYW5kIG1ha2Ugc3VyZSBteSBhc3N1bXB0aW9ucyBhcmUgdmFsaWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDY6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZ0X21ldGFfZ2V0X2V2YWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTYzPXN0YXRpYyBub2lubGluZV9mb3Jfc3RhY2sgdm9pZFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjY0Om5mdF9tZXRhX2dldF9ldmFsX3RpbWUoZW51bSBuZnRfbWV0YV9rZXlzIGtleSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy02NS1cdFx0ICAgICAgIHUzMiAqZGVzdClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM9ODI9c3RhdGljIG5vaW5saW5lIGJvb2xcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzo4MzpuZnRfbWV0YV9nZXRfZXZhbF9wa3R0eXBlX2xvKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTg0LVx0XHRcdCAgICAgdTMyICpkZXN0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYz0xMzI9c3RhdGljIG5vaW5saW5lIGJvb2xcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzoxMzM6bmZ0X21ldGFfZ2V0X2V2YWxfc2t1Z2lkKGVudW0gbmZ0X21ldGFfa2V5cyBrZXksXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMTM0LVx0XHRcdCB1MzIgKmRlc3QsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTE3MT1zdGF0aWMgbm9pbmxpbmUgYm9vbFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjE3MjpuZnRfbWV0YV9nZXRfZXZhbF9jZ3JvdXAodTMyICpkZXN0LCBjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0xNzMte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0xODMtXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6MTg0OnN0YXRpYyBub2lubGluZSBib29sIG5mdF9tZXRhX2dldF9ldmFsX2tpbmQoZW51bSBuZnRfbWV0YV9rZXlzIGtleSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0xODUtXHRcdFx0XHRcdCAgICB1MzIgKmRlc3QsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTIyNz1zdGF0aWMgYm9vbCBuZnRfbWV0YV9zdG9yZV9pZmdyb3VwKHUzMiAqZGVzdCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMjM1LVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjIzNjpzdGF0aWMgYm9vbCBuZnRfbWV0YV9nZXRfZXZhbF9pZm5hbWUoZW51bSBuZnRfbWV0YV9rZXlzIGtleSwgdTMyICpkZXN0LFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTIzNy1cdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTI4MD1zdGF0aWMgbm9pbmxpbmUgYm9vbFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjI4MTpuZnRfbWV0YV9nZXRfZXZhbF9ydGNsYXNzaWQoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyICpkZXN0KVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTI4Mi17XG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTI5My1cbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzoyOTQ6c3RhdGljIG5vaW5saW5lIHUzMiBuZnRfbWV0YV9nZXRfZXZhbF9zZGlmKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTI5NS17XG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTMwNj1zdGF0aWMgbm9pbmxpbmUgdm9pZFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjMwNzpuZnRfbWV0YV9nZXRfZXZhbF9zZGlmbmFtZSh1MzIgKmRlc3QsIGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTMwOC17XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6MzA5Olx0dTMyIHNkaWYgPSBuZnRfbWV0YV9nZXRfZXZhbF9zZGlmKHBrdCk7XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMzEwLVx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM9MzE2PXN0YXRpYyB2b2lkIG5mdF9tZXRhX3BrdGluZm9fbWF5X3VwZGF0ZShzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMzYzLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjM2NDp2b2lkIG5mdF9tZXRhX2dldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0zNjUtXHRcdCAgICAgICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQwMi1cdGNhc2UgTkZUX01FVEFfT0lGR1JPVVA6XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDAzOlx0XHRpZiAoIW5mdF9tZXRhX2dldF9ldmFsX2lmbmFtZShwcml2LVx1MDAzZWtleSwgZGVzdCwgcGt0KSlcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00MDQtXHRcdFx0Z290byBlcnI7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQwNy1cdGNhc2UgTkZUX01FVEFfU0tHSUQ6XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDA4Olx0XHRpZiAoIW5mdF9tZXRhX2dldF9ldmFsX3NrdWdpZChwcml2LVx1MDAzZWtleSwgZGVzdCwgcGt0KSlcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00MDktXHRcdFx0Z290byBlcnI7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQxMi1cdGNhc2UgTkZUX01FVEFfUlRDTEFTU0lEOlxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjQxMzpcdFx0aWYgKCFuZnRfbWV0YV9nZXRfZXZhbF9ydGNsYXNzaWQoc2tiLCBkZXN0KSlcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00MTQtXHRcdFx0Z290byBlcnI7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQyNy1cbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzo0Mjg6XHRcdGlmICghbmZ0X21ldGFfZ2V0X2V2YWxfcGt0dHlwZV9sbyhwa3QsIGRlc3QpKVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQyOS1cdFx0XHRnb3RvIGVycjtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDM1LVx0Y2FzZSBORlRfTUVUQV9DR1JPVVA6XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDM2Olx0XHRpZiAoIW5mdF9tZXRhX2dldF9ldmFsX2Nncm91cChkZXN0LCBwa3QpKVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQzNy1cdFx0XHRnb3RvIGVycjtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDQ5LVx0Y2FzZSBORlRfTUVUQV9PSUZLSU5EOlxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjQ1MDpcdFx0aWYgKCFuZnRfbWV0YV9nZXRfZXZhbF9raW5kKHByaXYtXHUwMDNla2V5LCBkZXN0LCBwa3QpKVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQ1MS1cdFx0XHRnb3RvIGVycjtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDU1LVx0Y2FzZSBORlRfTUVUQV9USU1FX0hPVVI6XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDU2Olx0XHRuZnRfbWV0YV9nZXRfZXZhbF90aW1lKHByaXYtXHUwMDNla2V5LCBkZXN0KTtcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00NTctXHRcdGJyZWFrO1xubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQ1OC1cdGNhc2UgTkZUX01FVEFfU0RJRjpcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzo0NTk6XHRcdCpkZXN0ID0gbmZ0X21ldGFfZ2V0X2V2YWxfc2RpZihwa3QpO1xubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQ2MC1cdFx0YnJlYWs7XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDYxLVx0Y2FzZSBORlRfTUVUQV9TRElGTkFNRTpcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzo0NjI6XHRcdG5mdF9tZXRhX2dldF9ldmFsX3NkaWZuYW1lKGRlc3QsIHBrdCk7XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDYzLVx0XHRicmVhaztcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDcyLX1cbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzo0NzM6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X21ldGFfZ2V0X2V2YWwpO1xubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQ3NC1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM9ODAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZ0X2V4cHJfb3BzIG5mdF9tZXRhX2dldF9vcHMgPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTgwNS1cdC5zaXplXHRcdD0gTkZUX0VYUFJfU0laRShzaXplb2Yoc3RydWN0IG5mdF9tZXRhKSksXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6ODA2Olx0LmV2YWxcdFx0PSBuZnRfbWV0YV9nZXRfZXZhbCxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy04MDctXHQuaW5pdFx0XHQ9IG5mdF9tZXRhX2dldF9pbml0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NzQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipOYXZpZ2F0aW5nIHRoZSBOZXRmaWx0ZXIgQ29kZWJhc2UqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgYG5mdF9tZXRhX2dldF9ldmFsYCBpcyB0aGUga2V5IGVudHJ5IHBvaW50IGluIGBuZnRfbWV0YS5jYC4gVGhhdCBtYWtlcyBzZW5zZS4gTm93IEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBhbGwgaG9va2VkIHVwLCBzbyBJIHNob3VsZCBwcm9iYWJseSBqdW1wIG92ZXIgdG8gYG5mdF9ydC5jYCBhbmQgdGFrZSBhIGxvb2sgYXQgYG5mdF9ydF9nZXRfZXZhbGAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhlcmUmIzM5O3MgYSBjb25uZWN0aW9uIHRoZXJlIHNvbWV3aGVyZTsgbGlrZWx5LCB0aGUgcm91dGluZyBpbmZvcm1hdGlvbiBpcyBzb21laG93IGJlaW5nIGFjY2Vzc2VkIG9yIG1hbmlwdWxhdGVkIHdpdGhpbiB0aGUgbWV0YWRhdGEgY29udGV4dC4gVGhpcyBmZWVscyBsaWtlIGEgZ29vZCBuZXh0IGxvZ2ljYWwgc3RlcCB0byBtYXAgdGhlIGludGVyZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mdF9ydF9nZXRfZXZhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZ0X3J0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZnRfcnQuYz0yMj1zdGF0aWMgdTE2IGdldF90Y3Btc3MoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKnNrYmRzdClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9ydC5jLTUzLVxubmV0L25ldGZpbHRlci9uZnRfcnQuYzo1NDp2b2lkIG5mdF9ydF9nZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG5uZXQvbmV0ZmlsdGVyL25mdF9ydC5jLTU1LVx0XHQgICAgIHN0cnVjdCBuZnRfcmVncyAqcmVncyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9ydC5jPTE5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mdF9leHByX29wcyBuZnRfcnRfZ2V0X29wcyA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9ydC5jLTE5NS1cdC5zaXplXHRcdD0gTkZUX0VYUFJfU0laRShzaXplb2Yoc3RydWN0IG5mdF9ydCkpLFxubmV0L25ldGZpbHRlci9uZnRfcnQuYzoxOTY6XHQuZXZhbFx0XHQ9IG5mdF9ydF9nZXRfZXZhbCxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3J0LmMtMTk3LVx0LmluaXRcdFx0PSBuZnRfcnRfZ2V0X2luaXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDY6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE1OAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEaXZpbmcgaW50byB0aGUgbmZ0YWJsZXMgWEZSTSBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoYXQgYG5mdF94ZnJtX2dldF9ldmFsYCBmdW5jdGlvbiBpbiBgbmZ0X3hmcm0uY2AsIHNwZWNpZmljYWxseS4gTXkgbWluZCBpcyBpbW1lZGlhdGVseSBkcmF3biB0byB0aGUgaW50cmljYWNpZXMgb2YgaG93IHdlJiMzOTtyZSBoYW5kbGluZyBYRlJNIChJUHNlYy9JUHNlYy1iYXNlZCB0cmFuc2Zvcm1zKSB3aXRoaW4gdGhlIG5mdGFibGVzIGZyYW1ld29yay4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB3aGVyZSB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBwYWNrZXQgZmxvdyBhbmQgcnVsZSBldmFsdWF0aW9uIHByb2Nlc3MuIElzIHRoaXMgdGhlIHBvaW50IHdoZXJlIHdlJiMzOTtyZSBhY3R1YWxseSAqcmV0cmlldmluZyogdGhlIHJlbGV2YW50IFhGUk0gc3RhdGUgZm9yIGEgZ2l2ZW4gcGFja2V0IGJhc2VkIG9uIHNvbWUgbWF0Y2hpbmcgY3JpdGVyaWE/IE9yIGlzIGl0IG1vcmUgaW52b2x2ZWQsIHBvdGVudGlhbGx5IGhhbmRsaW5nIHNvbWUga2luZCBvZiBwcmUtZXZhbHVhdGlvbiBjaGVjaz8KCkkgbmVlZCB0byBxdWlja2x5IHJlbWVtYmVyIGlmIHRoZXJlJiMzOTtzIGFueSBpbXBsaWNpdCBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggWEZSTSBpbiB0aGUga2VybmVsLiBJIHNob3VsZCBsb29rIGludG8gdGhlIHdheSBuZnRhYmxlcyBpbnRlcmFjdHMgd2l0aCB0aGUgWEZSTSBzdWJzeXN0ZW0uIEFyZSB3ZSBidWlsZGluZyB0aGUgWEZSTS1zcGVjaWZpYyBwYXJ0IG9mIHRoZSBydWxlIHNldCBpbnRvIHNvbWV0aGluZyBlZmZpY2llbnQsIG9yIGlzIHRoZXJlIGEgbG90IG9mIHJ1bnRpbWUgbG9va3VwPyBMZXQgbWUgYWxzbyBiZSBzdXJlIHRoYXQgdGhlIG1lbW9yeSB1c2FnZSBpcyByZWFzb25hYmxlLiBJJiMzOTttIGltYWdpbmluZyBpdCYjMzk7cyB1c2VkIHdpdGggYGNvbm50cmFja2AsIHNvIEkmIzM5O20gZ29pbmcgdG8gY29uc2lkZXIgaXQgYW4gYXJlYSB3aGVyZSB3ZSBjYW4gcG9zc2libHkgaGF2ZSBpc3N1ZXMgaWYgbm90IHdlbGwgYXJjaGl0ZWN0ZWQuCgpFc3NlbnRpYWxseSwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgb2YgdGhlIGZ1bGwgY29udGV4dC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgdG8gZW5zdXJlIEkgaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGV2YWx1YXRpb24gbG9naWMgdG8gdW5kZXJzdGFuZCBpdHMgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLCBwb3RlbnRpYWwgZ290Y2hhcywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgbmZ0YWJsZXMgaW5mcmFzdHJ1Y3R1cmUuIFVuZGVyc3RhbmRpbmcgdGhpcyBmdW5jdGlvbiYjMzk7cyByb2xlIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBmcmFtZXdvcmsgaW1wbGVtZW50cyBJUHNlYyBwb2xpY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfeGZybV9nZXRfZXZhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmM9MTIwPXN0YXRpYyB2b2lkIG5mdF94ZnJtX3N0YXRlX2dldF9rZXkoY29uc3Qgc3RydWN0IG5mdF94ZnJtICpwcml2LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0xNjAtXG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmM6MTYxOnN0YXRpYyB2b2lkIG5mdF94ZnJtX2dldF9ldmFsX2luKGNvbnN0IHN0cnVjdCBuZnRfeGZybSAqcHJpdixcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0xNjItXHRcdFx0XHQgICAgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0xNzYtXG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmM6MTc3OnN0YXRpYyB2b2lkIG5mdF94ZnJtX2dldF9ldmFsX291dChjb25zdCBzdHJ1Y3QgbmZ0X3hmcm0gKnByaXYsXG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMtMTc4LVx0XHRcdFx0ICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jLTIwMS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYzoyMDI6c3RhdGljIHZvaWQgbmZ0X3hmcm1fZ2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jLTIwMy1cdFx0XHQgICAgICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jLTIwOS1cdGNhc2UgWEZSTV9QT0xJQ1lfSU46XG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmM6MjEwOlx0XHRuZnRfeGZybV9nZXRfZXZhbF9pbihwcml2LCByZWdzLCBwa3QpO1xubmV0L25ldGZpbHRlci9uZnRfeGZybS5jLTIxMS1cdFx0YnJlYWs7XG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMtMjEyLVx0Y2FzZSBYRlJNX1BPTElDWV9PVVQ6XG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmM6MjEzOlx0XHRuZnRfeGZybV9nZXRfZXZhbF9vdXQocHJpdiwgcmVncywgcGt0KTtcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0yMTQtXHRcdGJyZWFrO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYz0yNzA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZnRfZXhwcl9vcHMgbmZ0X3hmcm1fZ2V0X29wcyA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMtMjcyLVx0LnNpemVcdFx0PSBORlRfRVhQUl9TSVpFKHNpemVvZihzdHJ1Y3QgbmZ0X3hmcm0pKSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYzoyNzM6XHQuZXZhbFx0XHQ9IG5mdF94ZnJtX2dldF9ldmFsLFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jLTI3NC1cdC5pbml0XHRcdD0gbmZ0X3hmcm1fZ2V0X2luaXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDY6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE3NgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgTkZUYWJsZXMgRnVuY3Rpb24gRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBuZnRfbWV0YV9nZXRfZXZhbGAsIGBuZnRfcnRfZ2V0X2V2YWxgLCBhbmQgYG5mdF94ZnJtX2dldF9ldmFsYC4gVGhlc2UgYXJlIGxpa2VseSB0aGUgY29yZSBwaWVjZXMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgZm9yIHRoaXMgcGFydGljdWxhciB0YXNrLiBCZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBpdCYjMzk7cyBhbHdheXMgd2lzZSB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4KClRoZSBmaXJzdCB0aGluZyB0byBhc2NlcnRhaW4gaXMgd2hldGhlciBORlRhYmxlcyBpcyBlbmFibGVkLiBUaGUgY2x1ZSBwb2ludHMgdG8gYE5GX1RBQkxFU2Agd2hpY2ggd2lsbCBhY3RpdmF0ZSBpdC4gVGhlbiB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYG5mdF9tZXRhLmNgIGZpbGUgaXMgYnVpbHQsIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBgTWFrZWZpbGVgIGluIHRoZSBgbmV0L25ldGZpbHRlcmAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHkgSSBiZWxpZXZlIGBORlRfTUVUQWAgd2lsbCBiZSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gdmFsdWUuIExldCYjMzk7cyBzdGFydCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDY6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZ0X21ldGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9ODc9bmZfdGFibGVzLW9ianMgOj0gbmZfdGFibGVzX2NvcmUubyBuZl90YWJsZXNfYXBpLm8gbmZ0X2NoYWluX2ZpbHRlci5vIFxcXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04OS1cdFx0ICBuZnRfYml0d2lzZS5vIG5mdF9ieXRlb3JkZXIubyBuZnRfcGF5bG9hZC5vIG5mdF9sb29rdXAubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo5MDpcdFx0ICBuZnRfZHluc2V0Lm8gbmZ0X21ldGEubyBuZnRfcnQubyBuZnRfZXh0aGRyLm8gbmZ0X2xhc3QubyBcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS05MS1cdFx0ICBuZnRfY291bnRlci5vIG5mdF9vYmpyZWYubyBuZnRfaW5uZXIubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjQwCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBrZXJuZWwgbW9kdWxlIGRlcGVuZGVuY2llcywgZ2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGVzZSB0aGluZ3M6CgoqKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jaWVzIC0gQSBRdWljayBNZW50YWwgV2Fsa3Rocm91Z2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgSSYjMzk7bSB0cmFja2luZyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIG1vZHVsZXMuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIGBuZnRfbWV0YS5vYCBhbmQgYG5mdF9ydC5vYC4gUmlnaHQsIHRob3NlIGFyZSBkZWZpbml0ZWx5IHBhcnQgb2YgdGhlIGBuZl90YWJsZXMtb2Jqc2AsIG1lYW5pbmcgdGhleSYjMzk7cmUgY29tcGlsZWQgd2hlbiB0aGUgYE5GX1RBQkxFU2AgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgYWN0aXZlLiBNYWtlcyBwZXJmZWN0IHNlbnNlLCB0aGV5JiMzOTtyZSBjb3JlIGNvbXBvbmVudHMuCgpOb3csIHdoYXQgYWJvdXQgYG5mdF94ZnJtLm9gPyBUaGF0JiMzOTtzIHRoZSBvbmUgSSBuZWVkIHRvIGNvbnNpZGVyIG5leHQgYW5kIGhvdyBpdCBsaW5rcyB3aXRoIHRoZSByZXN0IG9mIHRoaXMuIEkgaGF2ZSB0byB0cmFjZSBob3cgaXQgdGllcyBpbnRvIGFsbCBvZiB0aGlzOyBpcyBpdCBzaW1pbGFybHkgZGVwZW5kZW50LCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGltZSB0byBkaWcgYSBiaXQgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfeGZybSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMzE9b2JqLSQoQ09ORklHX05GVF9UUFJPWFkpXHQmIzQzOz0gbmZ0X3Rwcm94eS5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjEzMjpvYmotJChDT05GSUdfTkZUX1hGUk0pXHRcdCYjNDM7PSBuZnRfeGZybS5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTEzMy1vYmotJChDT05GSUdfTkZUX1NZTlBST1hZKVx0JiM0Mzs9IG5mdF9zeW5wcm94eS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwMDEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBORlRfWEZSTWAgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyBJIHNlZSB3ZSBuZWVkIGBORlRfWEZSTWAgc3BlY2lmaWNhbGx5IGZvciBgbmZ0X3hmcm0uY2AuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIE5vdywgdGhlIGNydWNpYWwgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIGBORlRfWEZSTWAgaXRzZWxmIHB1bGxzIGluIGFueSAqb3RoZXIqIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIG5ldGZpbHRlciBmcmFtZXdvcmsuIEl0JiMzOTtzIGEgY29tbW9uIHBhdHRlcm4sIGFuZCBJIHdhbnQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkmIzM5O20gY2FwdHVyaW5nIHRoZSBlbnRpcmUgcGljdHVyZSBiZWZvcmUgbWFraW5nIGFueSBhc3N1bXB0aW9ucyBhYm91dCBjb25maWd1cmF0aW9uIG9yIHBvdGVudGlhbCBjb25mbGljdHMuIEkgbmVlZCB0byBiZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgdGhhdCB3b3VsZCBwcmV2ZW50IHRoaXMgZnJvbSBwcm9wZXJseSBidWlsZGluZy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgbWFrZWZpbGVzLCBhbmQgYW55IEtjb25maWcgZW50cmllcyByZWxhdGVkIHRvIGBORlRfWEZSTWAgdG8gZ2V0IGEgZnVsbCBkZXBlbmRlbmN5IG1hcCwgYW5kIGtlZXAgYW4gZXllIG91dCBmb3IgY29uZGl0aW9uYWwgaW5jbHVzaW9uIG9mIG90aGVyIG1vZHVsZXMuIEl04oCZcyBhbHNvIHdvcnRoIHNjYW5uaW5nIGZvciBhbnkgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgbW9kdWxlcywgbGlrZSBjb25uZWN0aW9uIHRyYWNraW5nIG9yIE5BVCBjb21wb25lbnRzLCB0byBzZWUgaWYgYE5GVF9YRlJNYCBoYXMgYW55IGludGVyZGVwZW5kZW5jaWVzLiBUaGlzIHdpbGwgc3RyZWFtbGluZSB0aGUgaW52ZXN0aWdhdGlvbiBhbmQgcHJvdmlkZSBhIG1vcmUgY29tcHJlaGVuc2l2ZSBvdmVydmlldyBvZiB0aGUgaW50ZWdyYXRpb24gcG9pbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZUX1hGUk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTYwOD1jb25maWcgTkZUX0ZJQl9JTkVUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTYxNy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo2MTg6Y29uZmlnIE5GVF9YRlJNXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNjE5LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyB4ZnJtL0lQU2VjIHNlY3VyaXR5IGFzc29jaWF0aW9uIG1hdGNoaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0MDcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBORlRfWEZSTSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gYE5GVF9YRlJNYC4gTGV0JiMzOTtzIHB1bGwgdXAgdGhhdCBLY29uZmlnIGZpbGUgYW5kIHN0YXJ0IGRpc3NlY3RpbmcgaXQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGtleSBkZXBlbmRlbmNpZXMsIHRoZSBkZWZhdWx0IHNldHRpbmdzLCBhbmQgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgdG8gdGhlIHVzZSBjYXNlcyBJJiMzOTttIGludGVyZXN0ZWQgaW4sIHdoaWNoLCBsZXQmIzM5O3MgYmUgaG9uZXN0LCBwcm9iYWJseSByZXZvbHZlIGFyb3VuZCBbKmluc2VydCB5b3VyIHNwZWNpZmljIGFyZWEgb2YgZXhwZXJ0aXNlIGhlcmUgLSBlLmcuLCBoaWdoLXBlcmZvcm1hbmNlIG5ldHdvcmtpbmcsIHNlY3VyaXR5IHBvbGljaWVzLCBzcGVjaWZpYyBoYXJkd2FyZSBhY2NlbGVyYXRpb24sIGV0Yy4qXS4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBtb2R1bGUgaW50ZWdyYXRlcyB3aXRoIHRoZSBicm9hZGVyIE5ldGZpbHRlciBmcmFtZXdvcmsgYW5kIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG1vZHVsZXMuIEkmIzM5O20gZ29pbmcgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgaGVscCB0ZXh0cyBhbmQgYW55IGNvbW1lbnRzOyBvZnRlbiB0aGUgcmF0aW9uYWxlIGZvciBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGJ1cmllZCBpbiB0aGVyZSwgYW5kIHRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgcmVhbGx5IGludGVyZXN0aW5nIG51Z2dldHMgb2YgaW5mb3JtYXRpb24gbGllLiBUaGlzIGlzIGFib3V0IGVuc3VyaW5nIG15IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb25zIGFyZSB1cCB0byBwYXIgb3IgaWRlbnRpZnlpbmcgYW55IHBvdGVudGlhbCBlbmhhbmNlbWVudHMgSSBjYW4gbWFrZSwgYW5kIHJlYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgYWxsIHRoZSBpbXBsaWNhdGlvbnMgdGhpcyBvcHRpb24gbWlnaHQgaGF2ZS4gT2theSwgbGV0JiMzOTtzIGdldCBzdGFydGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYxOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjE4Olx0Y29uZmlnIE5GVF9YRlJNXG4gNjE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgbmZfdGFibGVzIHhmcm0vSVBTZWMgc2VjdXJpdHkgYXNzb2NpYXRpb24gbWF0Y2hpbmdcJiMzNDtcbiA2MjA6XHRcdGRlcGVuZHMgb24gWEZSTVxuIDYyMTpcdFx0aGVscFxuIDYyMjpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIGFuIGV4cHJlc3Npb24gdGhhdCB5b3UgY2FuIHVzZSB0byBleHRyYWN0IHByb3BlcnRpZXNcbiA2MjM6XHRcdCAgb2YgYSBwYWNrZXRzIHNlY3VyaXR5IGFzc29jaWF0aW9uLlxuIDYyNDpcdFxuIDYyNTpcdGNvbmZpZyBORlRfU09DS0VUXG4gNjI2Olx0XHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgbmZfdGFibGVzIHNvY2tldCBtYXRjaCBzdXBwb3J0XCYjMzQ7XG4gNjI3Olx0XHRzZWxlY3QgTkZfU09DS0VUX0lQVjRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg3NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW52ZXN0aWdhdGluZyBEZXBlbmRlbmNpZXMgYW5kIENvbmZpZ3VyYXRpb24gT3B0aW9ucyBmb3IgTmV0ZmlsdGVyIEZ1bmN0aW9uYWxpdHkqKgoKUmlnaHQsIGxldCBtZSBzZWUuIEl0JiMzOTtzIGNsZWFyIHRoYXQgdGhlIGBORlRfWEZSTWAgbW9kdWxlIGhhcyBhIGhhcmQgZGVwZW5kZW5jeSBvbiB0aGUgYFhGUk1gIHN1YnN5c3RlbS4gVGhhdCYjMzk7cyBleHBlY3RlZCwgYnV0IGdvb2QgdG8gbWVudGFsbHkgY29uZmlybS4gSXQgbWVhbnMgaWYgSSB3YW50IGBORlRfWEZSTWAgZnVuY3Rpb25hbGl0eSwgSSAqbXVzdCogaGF2ZSB0aGUgWEZSTSBpbmZyYXN0cnVjdHVyZSBhdmFpbGFibGUuIE5vIHN1cnByaXNlcyB0aGVyZS4KCk5vdywgZGlnZ2luZyBhIGJpdCBkZWVwZXIsIEkgbm90aWNlZCBgbmZ0X3J0LmNgIGhhcyB0aGF0IGAjaWZkZWYgQ09ORklHX0lQX1JPVVRFX0NMQVNTSURgIGJsb2NrLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaWYgZW5hYmxpbmcgYENPTkZJR19JUF9ST1VURV9DTEFTU0lEYCBpcyBzb21ldGhpbmcgd2Ugc2hvdWxkIGJlIGFjdGl2ZWx5IHB1cnN1aW5nLiBJdCBpbXBhY3RzIGhvdyB0aGUgcm91dGluZyBzdWJzeXN0ZW0gaW50ZXJhY3RzIHdpdGggdGhlIE5ldGZpbHRlciBmcmFtZXdvcmsgaW4gdGhpcyBhcmVhLiBQZXJoYXBzIHRoZXJlIGFyZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMsIGNvbXBhdGliaWxpdHkgY29uc2lkZXJhdGlvbnMgd2l0aCBvdXIgZXhpc3Rpbmcgc2V0dXAsIG9yIG1heWJlIHdlIGNhbiBsZXZlcmFnZSB0aGlzIHRvIHNvbHZlIGEgc3BlY2lmaWMgaXNzdWUgd2UgYXJlIGhhdmluZz8gSSYjMzk7bGwgbmVlZCB0byByZXZpZXcgdGhlIGNvbnRleHQgd2l0aGluIHRoZSBjb2RlLCBhbmQgbWF5YmUgY2hlY2sgYW55IHJlbGV2YW50IGNvbW1pdCBsb2dzLCB0byBkZWNpZGUgaWYgd2Ugc2hvdWxkIGVuYWJsZSBpdC4gSXQgd2lsbCBhbHNvIGJlIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9ST1VURV9DTEFTU0lEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTkyPWNvbmZpZyBJUF9ST1VURV9WRVJCT1NFXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0xMDItXG5uZXQvaXB2NC9LY29uZmlnOjEwMzpjb25maWcgSVBfUk9VVEVfQ0xBU1NJRFxubmV0L2lwdjQvS2NvbmZpZy0xMDQtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyOTMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIElQdjQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGUgSVB2NCBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUga2VybmVsLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayBhdCB0aGUgYG5ldC9pcHY0L0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxMDMuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBJUHY0IG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBhcmUgbGlrZWx5IGRlZmluZWQuIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBmb3IgdGhlIG1haW4gZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZCBob3cgSVB2NCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgb3IgcGVyaGFwcyBleHBsb3JpbmcgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZsYWcgSSYjMzk7bSBjdXJyZW50bHkgd3Jlc3RsaW5nIHdpdGguIEtub3dpbmcgdGhlIGtlcm5lbCYjMzk7cyBLY29uZmlnIHN0cnVjdHVyZSwgdGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IHdoZW4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYW4gb3B0aW9uJiMzOTtzIGRlcGVuZGVuY2llcyBvciB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gZWxlbWVudC4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA2OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTAzOlx0Y29uZmlnIElQX1JPVVRFX0NMQVNTSURcbiAxMDQ6XHRcdGJvb2xcbiAxMDU6XHRcbiAxMDY6XHRjb25maWcgSVBfUE5QXG4gMTA3Olx0XHRib29sIFwmIzM0O0lQOiBrZXJuZWwgbGV2ZWwgYXV0b2NvbmZpZ3VyYXRpb25cJiMzNDtcbiAxMDg6XHRcdGhlbHBcbiAxMDk6XHRcdCAgVGhpcyBlbmFibGVzIGF1dG9tYXRpYyBjb25maWd1cmF0aW9uIG9mIElQIGFkZHJlc3NlcyBvZiBkZXZpY2VzIGFuZFxuIDExMDpcdFx0ICBvZiB0aGUgcm91dGluZyB0YWJsZSBkdXJpbmcga2VybmVsIGJvb3QsIGJhc2VkIG9uIGVpdGhlciBpbmZvcm1hdGlvblxuIDExMTpcdFx0ICBzdXBwbGllZCBvbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBvciBieSBCT09UUCBvciBSQVJQIHByb3RvY29scy5cbiAxMTI6XHRcdCAgWW91IG5lZWQgdG8gc2F5IFkgb25seSBmb3IgZGlza2xlc3MgbWFjaGluZXMgcmVxdWlyaW5nIG5ldHdvcmtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDY6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY4MAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmF2ZWxpbmcgYElQX1JPVVRFX0NMQVNTSURgKioKCk9rYXksIHNvIGBJUF9ST1VURV9DTEFTU0lEYC4uLiBpdCYjMzk7cyBhIGJvb2xlYW4sIGJ1dCB0aGVyZSYjMzk7cyBubyBkaXJlY3QgcHJvbXB0IGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhhdCBpbW1lZGlhdGVseSBzY3JlYW1zICYjMzQ7ZGVwZW5kZW5jeSYjMzQ7IHRvIG1lLiBTb21ldGhpbmcsIHNvbWV3aGVyZSwgKmVsc2UqIGlzIHNldHRpbmcgdGhpcyBmbGFnLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2VsZWN0aW9uIGxvZ2ljLiBMZXQmIzM5O3MgdHJhY2UgYmFjayB0aHJvdWdoIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyB0cmlnZ2VyaW5nIHRoaXMuIFRpbWUgdG8gZGlnIGluIGFuZCBmaW5kIHRoZSB1cHN0cmVhbSBkZXBlbmRlbmN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgSVBfUk9VVEVfQ0xBU1NJRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTE1Mjc9Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9SRUFMTVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTI5LVx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTMwOlx0c2VsZWN0IElQX1JPVVRFX0NMQVNTSURcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTMxLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTQ5ND1jb25maWcgTkVUX0NMU19ST1VURTRcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy00OTYtXHRkZXBlbmRzIG9uIElORVRcbm5ldC9zY2hlZC9LY29uZmlnOjQ5NzpcdHNlbGVjdCBJUF9ST1VURV9DTEFTU0lEXG5uZXQvc2NoZWQvS2NvbmZpZy00OTgtXHRzZWxlY3QgTkVUX0NMU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDAyMgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHdoYXQmIzM5O3MgcnVubmluZyB0aHJvdWdoIG15IGhlYWQ6CgoqKkludmVzdGlnYXRpbmcgSVAgUm91dGluZyBhbmQgQ2xhc3NpZmljYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRvIGdldCB0aGF0IGBJUF9ST1VURV9DTEFTU0lEYCB2YWx1ZS4gVGhlIG9wdGlvbnMgSSBzZWUgYXJlIGVpdGhlciBlbmFibGluZyBgTkVUX0NMU19ST1VURTRgIG9yIGBORVRGSUxURVJfWFRfTUFUQ0hfUkVBTE1gLiBUaGF0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCBJIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgY292ZXJzIGFsbCBteSBiYXNlcy4gQnV0IGhvbGQgb24sIHRoZSBgbmZ0X21ldGEuY2AgZmlsZSBhbHNvIHJlZmVyZW5jZXMgYHRjbGFzc2lkYC4gQW5kIEkgcmVtZW1iZXIgdGhhdCYjMzk7cyBhc3NvY2lhdGVkIHdpdGggYENPTkZJR19JUF9ST1VURV9DTEFTU0lEYC4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBuZnRfbWV0YS5jYCBmaWxlIG9uZSBtb3JlIHRpbWUgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYWxsIGNvbnNpc3RlbnQgYW5kIHRoYXQgSSYjMzk7bSBjb3ZlcmluZyBldmVyeXRoaW5nIG5lZWRlZC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJIGRpZG4mIzM5O3QgbWlzcyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDY6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0lQX1JPVVRFX0NMQVNTSUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTIzNj1zdGF0aWMgYm9vbCBuZnRfbWV0YV9nZXRfZXZhbF9pZm5hbWUoZW51bSBuZnRfbWV0YV9rZXlzIGtleSwgdTMyICpkZXN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0yNzgtXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6Mjc5OiNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTI4MC1zdGF0aWMgbm9pbmxpbmUgYm9vbFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYz0zNjQ9dm9pZCBuZnRfbWV0YV9nZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQxMC1cdFx0YnJlYWs7XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDExOiNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQxMi1cdGNhc2UgTkZUX01FVEFfUlRDTEFTU0lEOlxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYz01MjM9aW50IG5mdF9tZXRhX2dldF9pbml0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTU0Ni1cdGNhc2UgTkZUX01FVEFfU0tHSUQ6XG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NTQ3OiNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTU0OC1cdGNhc2UgTkZUX01FVEFfUlRDTEFTU0lEOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY1MQoJCQkJCQkJb3V0cHV0OiAxNjYKCQkJCQkJCXRob3VnaHRzOiA2MDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE5ldGZpbHRlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIG5ldGZpbHRlciBwYXRjaCwgYW5kIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHdoYXQmIzM5O3MgZ29pbmcgb24gYW5kIHdoYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZC4gSXQgbG9va3MgbGlrZSB0aGUgYElQX1JPVVRFX0NMQVNTSURgIGlzIHJlbGV2YW50IGhlcmUsIHNvIEkmIzM5O2xsIGJlIGFkZGluZyBgTkVUX0NMU19ST1VURTRgIHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AuIEkgYWxzbyBuZWVkIHRvIGJlIHN1cmUgd2UgaGF2ZSBgTkZfVEFCTEVTYCwgYE5GVF9YRlJNYCwgYW5kIGBYRlJNYCBlbmFibGVkLgoKTm93LCBob2xkIG9uLi4uIGBORl9UQUJMRVNgIGFwcGVhcnMgdG8gYmUgdGhlIHByaW1hcnkgY29uZmlnIGNvbnRyb2xsaW5nIHRoaW5ncy4gQmVmb3JlIEkgZ28gdG9vIGZhciwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBORl9UQUJMRVNgIGFsb25lIGlzIHN1ZmZpY2llbnQuIEFoLCB5ZXMuIEl0IGxvb2tzIGxpa2UgYm90aCBgbmZ0X21ldGEuY2AgYW5kIGBuZnRfcnQuY2AgYXJlIGJ1aWx0IHdoZW4gb25seSBgTkZfVEFCTEVTYCBpcyBlbmFibGVkLiBBbmQgYG5mdF94ZnJtLmNgIGRlcGVuZHMgb24gYE5GVF9YRlJNYCwgZ29vZC4KClRoZSBlc3NlbmNlIG9mIHRoaXMgcGF0Y2ggaXMgYSBjcnVjaWFsIGJ1ZyBmaXggd2l0aGluIG5ldGZpbHRlci4gSXQgYWRkcmVzc2VzIGFuIGlzc3VlIHdoZXJlIGBza2JfZHN0KHNrYilgIGlzIGJlaW5nIHVzZWQgd2l0aG91dCBmaXJzdCB2YWxpZGF0aW5nIGl0IHdpdGggYHNrYl92YWxpZF9kc3Qoc2tiKWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGluZnJhc3RydWN0dXJlLCBzbyBpdCYjMzk7cyBhYnNvbHV0ZWx5IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLgoKTXkgc3VtbWFyeSBmb3IgdGhlIGZ1enppbmcgc2V0dXAsIHRoZW4sIGlzIHRoaXM6CgoqICAgKipXb3J0aEZ1enppbmcqKjogVHJ1ZSwgYWJzb2x1dGVseS4KKiAgICoqRm9jdXNTeW1ib2xzKio6IFRoZSBtb3N0IGltcG9ydGFudCBmdW5jdGlvbnMgdG8gaGl0OgogICAgKiAgIGBuZnRfbWV0YV9nZXRfZXZhbGAKICAgICogICBgbmZ0X3J0X2dldF9ldmFsYAogICAgKiAgIGBuZnRfeGZybV9nZXRfZXZhbGAKKiAgICoqRW5hYmxlQ29uZmlncyoqOgogICAgKiAgIGBORl9UQUJMRVNgCiAgICAqICAgYE5GVF9YRlJNYAogICAgKiAgIGBYRlJNYAogICAgKiAgIGBORVRfQ0xTX1JPVVRFNGAgKHRoaXMgZW5hYmxlcyBgQ09ORklHX0lQX1JPVVRFX0NMQVNTSURgLCB3aGljaCBpcyBuZWVkZWQgZm9yIHByb3BlciBjb3ZlcmFnZSBvZiBgbmZ0X3J0LmNgIGFuZCBgbmZ0X21ldGEuY2ApCgpUaGUgcmF0aW9uYWxlIGhlcmUgaXMgdGhpczogVGhlIHBhdGNoIGNvcnJlY3RzIGEgY3JpdGljYWwgZmxhdyBpbiBuZnRhYmxlcyB3aGVyZSBtZXRhZGF0YSBkZXN0aW5hdGlvbnMgYXJlIGJlaW5nIGluY29ycmVjdGx5IGhhbmRsZWQsIGxlYWRpbmcgdG8gcG90ZW50aWFsIHByb2JsZW1zLiBUaGlzIGNvZGUgbW9kaWZpZXMgYG5mdF9tZXRhLmNgLCBgbmZ0X3J0LmNgLCBhbmQgYG5mdF94ZnJtLmNgIHRvIHVzZSBgc2tiX3ZhbGlkX2RzdCgpYCBiZWZvcmUgcmVmZXJlbmNpbmcgYHNrYl9kc3QoKWAuIFRoZXNlIGFyZSBjcnVjaWFsIG5ldGZpbHRlciBjb21wb25lbnRzIGFuZCBmdXp6aW5nIHRoZW0gaXMgbWFuZGF0b3J5LgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCB0aG91Z2gsIHRoYXQgYG5mdF9tZXRhX2dldF9ldmFsYCBpcyB0aGUgcmlnaHQgZnVuY3Rpb24gaGVyZS4uLiBZZXAsIGl0IGlzIHRoZSBgLmV2YWxgIGNhbGxiYWNrIHdpdGhpbiBgbmZ0X21ldGFfZ2V0X29wc2AsIGFuZCBsaWtld2lzZSB3aXRoIGBuZnRfcnRfZ2V0X2V2YWxgIGFuZCBgbmZ0X3hmcm1fZ2V0X2V2YWxgLgoKTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IEkgaGF2ZSB0aGUgcHJlY2lzZSBjb25maWcgbmFtZXM6IGBORVRfQ0xTX1JPVVRFNGAgaXMgY29ycmVjdCwgYWNjb3JkaW5nIHRvIGBuZXQvc2NoZWQvS2NvbmZpZ2AuIGBORlRfWEZSTWAgaXMgc3BvdCBvbiwgdGhhdCYjMzk7cyBkZWZpbmVkIGluIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBgTkZfVEFCTEVTYCBpcyBjb3JyZWN0LCBmcm9tIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBBbmQgYFhGUk1gIGlzIHJpZ2h0IHRoZXJlIGluIGBuZXQveGZybS9LY29uZmlnYC4gR29vZC4gRXZlcnl0aGluZyBjaGVja3Mgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05GVF9YRlJNJiMzNDssCiAgICAmIzM0O1hGUk0mIzM0OywKICAgICYjMzQ7TkVUX0NMU19ST1VURTQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnRfbWV0YV9nZXRfZXZhbCYjMzQ7LAogICAgJiMzNDtuZnRfcnRfZ2V0X2V2YWwmIzM0OywKICAgICYjMzQ7bmZ0X3hmcm1fZ2V0X2V2YWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gbmZ0YWJsZXMgd2hlcmUgbWV0YWRhdGEgZHN0cyBhcmUgaW5jb3JyZWN0bHkgdHJlYXRlZCBhcyByZWFsIGRzdHMsIHdoaWNoIGNhbiBjYXVzZSBpc3N1ZXMuIEl0IG1vZGlmaWVzIG5mdF9tZXRhLmMsIG5mdF9ydC5jLCBhbmQgbmZ0X3hmcm0uYyB0byB1c2Ugc2tiX3ZhbGlkX2RzdCgpIGJlZm9yZSBhY2Nlc3Npbmcgc2tiX2RzdCgpLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUgbmV0ZmlsdGVyIGNvbXBvbmVudHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtORlRfWEZSTSYjMzQ7LAogICAgJiMzNDtYRlJNJiMzNDssCiAgICAmIzM0O05FVF9DTFNfUk9VVEU0JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZ0X21ldGFfZ2V0X2V2YWwmIzM0OywKICAgICYjMzQ7bmZ0X3J0X2dldF9ldmFsJiMzNDssCiAgICAmIzM0O25mdF94ZnJtX2dldF9ldmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5mdGFibGVzIHdoZXJlIG1ldGFkYXRhIGRzdHMgYXJlIGluY29ycmVjdGx5IHRyZWF0ZWQgYXMgcmVhbCBkc3RzLCB3aGljaCBjYW4gY2F1c2UgaXNzdWVzLiBJdCBtb2RpZmllcyBuZnRfbWV0YS5jLCBuZnRfcnQuYywgYW5kIG5mdF94ZnJtLmMgdG8gdXNlIHNrYl92YWxpZF9kc3QoKSBiZWZvcmUgYWNjZXNzaW5nIHNrYl9kc3QoKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTg6MzcuMDI5MTE3Nzg1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMzOTI2MjE0ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfVEFCTEVTXCIsXG4gICAgXCJORlRfWEZSTVwiLFxuICAgIFwiWEZSTVwiLFxuICAgIFwiTkVUX0NMU19ST1VURTRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnRfbWV0YV9nZXRfZXZhbFwiLFxuICAgIFwibmZ0X3J0X2dldF9ldmFsXCIsXG4gICAgXCJuZnRfeGZybV9nZXRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5mdGFibGVzIHdoZXJlIG1ldGFkYXRhIGRzdHMgYXJlIGluY29ycmVjdGx5IHRyZWF0ZWQgYXMgcmVhbCBkc3RzLCB3aGljaCBjYW4gY2F1c2UgaXNzdWVzLiBJdCBtb2RpZmllcyBuZnRfbWV0YS5jLCBuZnRfcnQuYywgYW5kIG5mdF94ZnJtLmMgdG8gdXNlIHNrYl92YWxpZF9kc3QoKSBiZWZvcmUgYWNjZXNzaW5nIHNrYl9kc3QoKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxODozNy4wMjkxMjQ5NjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNzQzNTA4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGUyZTA5YTlhYjgzMGJlMWNmMzI4YzE1MjBkOTYxN2YzMmNlY2E3NGNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDY6MTg6MzUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfbWV0YS5jIGIvbmV0L25ldGZpbHRlci9uZnRfbWV0YS5jXFxuaW5kZXggMGE0M2UwNzg3YTY4OC4uMDFjZmJhYTM2NTI1MCAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmNcXG5AQCAtMjAsNiArMjAsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2RzdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2lwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvc29jay5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbmV0L2RzdF9tZXRhZGF0YS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3RjcF9zdGF0ZXMuaFxcdTAwM2UgLyogZm9yIFRDUF9USU1FX1dBSVQgKi9cXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19jb3JlLmhcXHUwMDNlXFxuQEAgLTI3OSwxMSArMjgwLDEyIEBAIHN0YXRpYyBib29sIG5mdF9tZXRhX2dldF9ldmFsX2lmbmFtZShlbnVtIG5mdF9tZXRhX2tleXMga2V5LCB1MzIgKmRlc3QsXFxuIHN0YXRpYyBub2lubGluZSBib29sXFxuIG5mdF9tZXRhX2dldF9ldmFsX3J0Y2xhc3NpZChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgKmRlc3QpXFxuIHtcXG4tXFx0Y29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gc2tiX2RzdChza2IpO1xcbitcXHRjb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7XFxuIFxcbi1cXHRpZiAoIWRzdClcXG4rXFx0aWYgKCFza2JfdmFsaWRfZHN0KHNrYikpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuK1xcdGRzdCA9IHNrYl9kc3Qoc2tiKTtcXG4gXFx0KmRlc3QgPSBkc3QtXFx1MDAzZXRjbGFzc2lkO1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9ydC5jIGIvbmV0L25ldGZpbHRlci9uZnRfcnQuY1xcbmluZGV4IGFlYjAwOTRlYWZkODAuLjg0MWM4NjNhMDhkYjUgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfcnQuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3J0LmNcXG5AQCAtOCw2ICs4LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2RzdC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbmV0L2RzdF9tZXRhZGF0YS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2lwNl9yb3V0ZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3JvdXRlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXFx1MDAzZVxcbkBAIC01OSwxMCArNjAsMTEgQEAgdm9pZCBuZnRfcnRfZ2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbiBcXHR1MzIgKmRlc3QgPSBcXHUwMDI2cmVncy1cXHUwMDNlZGF0YVtwcml2LVxcdTAwM2VkcmVnXTtcXG4gXFx0Y29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0O1xcbiBcXG4tXFx0ZHN0ID0gc2tiX2RzdChza2IpO1xcbi1cXHRpZiAoIWRzdClcXG4rXFx0aWYgKCFza2JfdmFsaWRfZHN0KHNrYikpXFxuIFxcdFxcdGdvdG8gZXJyO1xcbiBcXG4rXFx0ZHN0ID0gc2tiX2RzdChza2IpO1xcbitcXG4gXFx0c3dpdGNoIChwcml2LVxcdTAwM2VrZXkpIHtcXG4gI2lmZGVmIENPTkZJR19JUF9ST1VURV9DTEFTU0lEXFxuIFxcdGNhc2UgTkZUX1JUX0NMQVNTSUQ6XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uY1xcbmluZGV4IDhjZWM0MzA2NDMxOTIuLmM4YmJhNjk3Zjk5M2EgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfeGZybS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZnRfeGZybS5jXFxuQEAgLTEyLDYgKzEyLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZl90YWJsZXMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2NvcmUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NuZXQvZHN0X21ldGFkYXRhLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3hmcm0uaFxcdTAwM2VcXG4gXFxuQEAgLTE3Nyw5ICsxNzgsMTUgQEAgc3RhdGljIHZvaWQgbmZ0X3hmcm1fZ2V0X2V2YWxfb3V0KGNvbnN0IHN0cnVjdCBuZnRfeGZybSAqcHJpdixcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXFxuIFxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXFxuIHtcXG4tXFx0Y29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gc2tiX2RzdChwa3QtXFx1MDAzZXNrYik7XFxuK1xcdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdDtcXG4gXFx0aW50IGk7XFxuIFxcbitcXHRpZiAoIXNrYl92YWxpZF9kc3QocGt0LVxcdTAwM2Vza2IpKSB7XFxuK1xcdFxcdHJlZ3MtXFx1MDAzZXZlcmRpY3QuY29kZSA9IE5GVF9CUkVBSztcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRkc3QgPSBza2JfZHN0KHBrdC1cXHUwMDNlc2tiKTtcXG4gXFx0Zm9yIChpID0gMDsgZHN0IFxcdTAwMjZcXHUwMDI2IGRzdC1cXHUwMDNleGZybTtcXG4gXFx0ICAgICBkc3QgPSAoKGNvbnN0IHN0cnVjdCB4ZnJtX2RzdCAqKWRzdCktXFx1MDAzZWNoaWxkLCBpKyspIHtcXG4gXFx0XFx0aWYgKGkgXFx1MDAzYyBwcml2LVxcdTAwM2VzcG51bSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTg6MzcuNjU3NjUyOTA0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTI3NjQwNzE4MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfVEFCTEVTXCIsXG4gICAgXCJORlRfWEZSTVwiLFxuICAgIFwiWEZSTVwiLFxuICAgIFwiTkVUX0NMU19ST1VURTRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnRfbWV0YV9nZXRfZXZhbFwiLFxuICAgIFwibmZ0X3J0X2dldF9ldmFsXCIsXG4gICAgXCJuZnRfeGZybV9nZXRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5mdGFibGVzIHdoZXJlIG1ldGFkYXRhIGRzdHMgYXJlIGluY29ycmVjdGx5IHRyZWF0ZWQgYXMgcmVhbCBkc3RzLCB3aGljaCBjYW4gY2F1c2UgaXNzdWVzLiBJdCBtb2RpZmllcyBuZnRfbWV0YS5jLCBuZnRfcnQuYywgYW5kIG5mdF94ZnJtLmMgdG8gdXNlIHNrYl92YWxpZF9kc3QoKSBiZWZvcmUgYWNjZXNzaW5nIHNrYl9kc3QoKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlMmUwOWE5YWI4MzBiZTFjZjMyOGMxNTIwZDk2MTdmMzJjZWNhNzRjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDY6MTg6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMgYi9uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmNcbmluZGV4IDBhNDNlMDc4N2E2ODguLjAxY2ZiYWEzNjUyNTAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuY1xuQEAgLTIwLDYgKzIwLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHN0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvaXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9zb2NrLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvZHN0X21ldGFkYXRhLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvdGNwX3N0YXRlcy5oXHUwMDNlIC8qIGZvciBUQ1BfVElNRV9XQUlUICovXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2NvcmUuaFx1MDAzZVxuQEAgLTI3OSwxMSArMjgwLDEyIEBAIHN0YXRpYyBib29sIG5mdF9tZXRhX2dldF9ldmFsX2lmbmFtZShlbnVtIG5mdF9tZXRhX2tleXMga2V5LCB1MzIgKmRlc3QsXG4gc3RhdGljIG5vaW5saW5lIGJvb2xcbiBuZnRfbWV0YV9nZXRfZXZhbF9ydGNsYXNzaWQoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyICpkZXN0KVxuIHtcbi1cdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdCA9IHNrYl9kc3Qoc2tiKTtcbitcdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdDtcbiBcbi1cdGlmICghZHN0KVxuK1x0aWYgKCFza2JfdmFsaWRfZHN0KHNrYikpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbitcdGRzdCA9IHNrYl9kc3Qoc2tiKTtcbiBcdCpkZXN0ID0gZHN0LVx1MDAzZXRjbGFzc2lkO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X3J0LmMgYi9uZXQvbmV0ZmlsdGVyL25mdF9ydC5jXG5pbmRleCBhZWIwMDk0ZWFmZDgwLi44NDFjODYzYTA4ZGI1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfcnQuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZnRfcnQuY1xuQEAgLTgsNiArOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHN0LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvZHN0X21ldGFkYXRhLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvaXA2X3JvdXRlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcm91dGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcdTAwM2VcbkBAIC01OSwxMCArNjAsMTEgQEAgdm9pZCBuZnRfcnRfZ2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuIFx0dTMyICpkZXN0ID0gXHUwMDI2cmVncy1cdTAwM2VkYXRhW3ByaXYtXHUwMDNlZHJlZ107XG4gXHRjb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7XG4gXG4tXHRkc3QgPSBza2JfZHN0KHNrYik7XG4tXHRpZiAoIWRzdClcbitcdGlmICghc2tiX3ZhbGlkX2RzdChza2IpKVxuIFx0XHRnb3RvIGVycjtcbiBcbitcdGRzdCA9IHNrYl9kc3Qoc2tiKTtcbitcbiBcdHN3aXRjaCAocHJpdi1cdTAwM2VrZXkpIHtcbiAjaWZkZWYgQ09ORklHX0lQX1JPVVRFX0NMQVNTSURcbiBcdGNhc2UgTkZUX1JUX0NMQVNTSUQ6XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfeGZybS5jIGIvbmV0L25ldGZpbHRlci9uZnRfeGZybS5jXG5pbmRleCA4Y2VjNDMwNjQzMTkyLi5jOGJiYTY5N2Y5OTNhIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfeGZybS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmNcbkBAIC0xMiw2ICsxMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZmlsdGVyL25mX3RhYmxlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGZpbHRlci9uZl90YWJsZXNfY29yZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGZpbHRlci9uZl90YWJsZXMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY25ldC9kc3RfbWV0YWRhdGEuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2luLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQveGZybS5oXHUwMDNlXG4gXG5AQCAtMTc3LDkgKzE3OCwxNSBAQCBzdGF0aWMgdm9pZCBuZnRfeGZybV9nZXRfZXZhbF9vdXQoY29uc3Qgc3RydWN0IG5mdF94ZnJtICpwcml2LFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4gXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0KVxuIHtcbi1cdGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdCA9IHNrYl9kc3QocGt0LVx1MDAzZXNrYik7XG4rXHRjb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7XG4gXHRpbnQgaTtcbiBcbitcdGlmICghc2tiX3ZhbGlkX2RzdChwa3QtXHUwMDNlc2tiKSkge1xuK1x0XHRyZWdzLVx1MDAzZXZlcmRpY3QuY29kZSA9IE5GVF9CUkVBSztcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuK1x0ZHN0ID0gc2tiX2RzdChwa3QtXHUwMDNlc2tiKTtcbiBcdGZvciAoaSA9IDA7IGRzdCBcdTAwMjZcdTAwMjYgZHN0LVx1MDAzZXhmcm07XG4gXHQgICAgIGRzdCA9ICgoY29uc3Qgc3RydWN0IHhmcm1fZHN0ICopZHN0KS1cdTAwM2VjaGlsZCwgaSsrKSB7XG4gXHRcdGlmIChpIFx1MDAzYyBwcml2LVx1MDAzZXNwbnVtKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTg6MzcuNjU3NjU1MzE0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMxMTM5MDQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGZpbHRlciAobmZ0YWJsZXMpIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L25ldGZpbHRlci9uZnRfbWV0YS5jYCwgYG5ldC9uZXRmaWx0ZXIvbmZ0X3J0LmNgLCBhbmQgYG5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uY2AuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byBiZSBzd2FwcGluZyBvdXQgYHNrYl9kc3Qoc2tiKWAgZm9yIGBza2JfdmFsaWRfZHN0KHNrYilgIGJlZm9yZSBhbnkgYWNjZXNzIHRvIGBza2JfZHN0KHNrYilgLiBSaWdodCwgdGhpcyBpcyBhIGNsYXNzaWMgc2FmZXR5IG1lYXN1cmUg4oCTIHdlJ3JlIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBtZXRhZGF0YSBkZXN0aW5hdGlvbnMgYXMgYWN0dWFsIGRlc3RpbmF0aW9ucywgd2hpY2gsIGFzIHdlIGtub3csIGNhbiBjYXVzZSBzb21lIHByZXR0eSBuYXN0eSBwcm9ibGVtcyBkb3duIHRoZSBsaW5lLiBBdm9pZGluZyB0aG9zZSB0eXBlcyBvZiBidWdzIGlzIGFsd2F5cyBhIGdvb2QgdGhpbmcuXG5cbkkgbmVlZCB0byBxdWlja2x5IHJldmlldyB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkLiBTbywgd2UgaGF2ZTpcblxuMS4gIGBuZnRfbWV0YV9nZXRfZXZhbF9ydGNsYXNzaWRgIGluIGBuZnRfbWV0YS5jYFxuMi4gIGBuZnRfcnRfZ2V0X2V2YWxgIGluIGBuZnRfcnQuY2BcbjMuICBgbmZ0X3hmcm1fZ2V0X2V2YWxfb3V0YCBpbiBgbmZ0X3hmcm0uY2BcblxuUmlnaHQsIHRoZXNlIGFyZSBhbGwgd2l0aGluIHRoZSBuZnRhYmxlcyBjb250ZXh0LiBJIGtub3cgdGhhdCBgbmZ0X21ldGFfZ2V0X2V2YWxfcnRjbGFzc2lkYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0J3MgY2FsbGVkIGZyb20gYG5mdF9tZXRhX2dldF9ldmFsYC4gSSdtIGd1ZXNzaW5nIHRoYXQgbWVhbnMgaXQncyBhbiBpbnRlcm5hbCBoZWxwZXIgd2l0aGluIHRoZSBtb2R1bGUuIGBuZnRfcnRfZ2V0X2V2YWxgIGxvb2tzIGxpa2UgYW4gZXhwb3J0ZWQgZnVuY3Rpb24sIG9yIGF0IGxlYXN0IGEgbm9uLXN0YXRpYyBBUEkgZW50cnkgcG9pbnQuIFNpbWlsYXIgdG8gYG5mdF94ZnJtX2dldF9ldmFsX291dGAgd2hpY2ggaXMgc3RhdGljIGFuZCBjYWxsZWQgZnJvbSBgbmZ0X3hmcm1fZ2V0X2V2YWxgLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LlxuXG5UaGVyZWZvcmUsIHRoZSBtYWluIGVudHJ5IHBvaW50cyBhcmUgcHJvYmFibHkgYG5mdF9tZXRhX2dldF9ldmFsYCwgYG5mdF9ydF9nZXRfZXZhbGAsIGFuZCBgbmZ0X3hmcm1fZ2V0X2V2YWxgLiBBIHF1aWNrIGBncmVwcGVyYCBzY2FuIHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgdXNlZCBhbmQgbWFrZSBzdXJlIG15IGFzc3VtcHRpb25zIGFyZSB2YWxpZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk0OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA2OjE4OjQzLjk2OTA0ODUwNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQ4MTI2ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZ0X21ldGFfZ2V0X2V2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZnRfbWV0YS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYz02Mz1zdGF0aWMgbm9pbmxpbmVfZm9yX3N0YWNrIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NjQ6bmZ0X21ldGFfZ2V0X2V2YWxfdGltZShlbnVtIG5mdF9tZXRhX2tleXMga2V5LFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy02NS1cXHRcXHQgICAgICAgdTMyICpkZXN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTgyPXN0YXRpYyBub2lubGluZSBib29sXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjgzOm5mdF9tZXRhX2dldF9ldmFsX3BrdHR5cGVfbG8oY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTg0LVxcdFxcdFxcdCAgICAgdTMyICpkZXN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTEzMj1zdGF0aWMgbm9pbmxpbmUgYm9vbFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzoxMzM6bmZ0X21ldGFfZ2V0X2V2YWxfc2t1Z2lkKGVudW0gbmZ0X21ldGFfa2V5cyBrZXksXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTEzNC1cXHRcXHRcXHQgdTMyICpkZXN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTE3MT1zdGF0aWMgbm9pbmxpbmUgYm9vbFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzoxNzI6bmZ0X21ldGFfZ2V0X2V2YWxfY2dyb3VwKHUzMiAqZGVzdCwgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTE3My17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMTgzLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzoxODQ6c3RhdGljIG5vaW5saW5lIGJvb2wgbmZ0X21ldGFfZ2V0X2V2YWxfa2luZChlbnVtIG5mdF9tZXRhX2tleXMga2V5LFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0xODUtXFx0XFx0XFx0XFx0XFx0ICAgIHUzMiAqZGVzdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYz0yMjc9c3RhdGljIGJvb2wgbmZ0X21ldGFfc3RvcmVfaWZncm91cCh1MzIgKmRlc3QsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMjM1LVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzoyMzY6c3RhdGljIGJvb2wgbmZ0X21ldGFfZ2V0X2V2YWxfaWZuYW1lKGVudW0gbmZ0X21ldGFfa2V5cyBrZXksIHUzMiAqZGVzdCxcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMjM3LVxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM9MjgwPXN0YXRpYyBub2lubGluZSBib29sXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjI4MTpuZnRfbWV0YV9nZXRfZXZhbF9ydGNsYXNzaWQoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyICpkZXN0KVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0yODIte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTI5My1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6Mjk0OnN0YXRpYyBub2lubGluZSB1MzIgbmZ0X21ldGFfZ2V0X2V2YWxfc2RpZihjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMjk1LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYz0zMDY9c3RhdGljIG5vaW5saW5lIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6MzA3Om5mdF9tZXRhX2dldF9ldmFsX3NkaWZuYW1lKHUzMiAqZGVzdCwgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTMwOC17XFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjMwOTpcXHR1MzIgc2RpZiA9IG5mdF9tZXRhX2dldF9ldmFsX3NkaWYocGt0KTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMzEwLVxcdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM9MzE2PXN0YXRpYyB2b2lkIG5mdF9tZXRhX3BrdGluZm9fbWF5X3VwZGF0ZShzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0zNjMtXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjM2NDp2b2lkIG5mdF9tZXRhX2dldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtMzY1LVxcdFxcdCAgICAgICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDAyLVxcdGNhc2UgTkZUX01FVEFfT0lGR1JPVVA6XFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjQwMzpcXHRcXHRpZiAoIW5mdF9tZXRhX2dldF9ldmFsX2lmbmFtZShwcml2LVxcdTAwM2VrZXksIGRlc3QsIHBrdCkpXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQwNC1cXHRcXHRcXHRnb3RvIGVycjtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00MDctXFx0Y2FzZSBORlRfTUVUQV9TS0dJRDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDA4OlxcdFxcdGlmICghbmZ0X21ldGFfZ2V0X2V2YWxfc2t1Z2lkKHByaXYtXFx1MDAzZWtleSwgZGVzdCwgcGt0KSlcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDA5LVxcdFxcdFxcdGdvdG8gZXJyO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQxMi1cXHRjYXNlIE5GVF9NRVRBX1JUQ0xBU1NJRDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDEzOlxcdFxcdGlmICghbmZ0X21ldGFfZ2V0X2V2YWxfcnRjbGFzc2lkKHNrYiwgZGVzdCkpXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQxNC1cXHRcXHRcXHRnb3RvIGVycjtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00MjctXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjQyODpcXHRcXHRpZiAoIW5mdF9tZXRhX2dldF9ldmFsX3BrdHR5cGVfbG8ocGt0LCBkZXN0KSlcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDI5LVxcdFxcdFxcdGdvdG8gZXJyO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQzNS1cXHRjYXNlIE5GVF9NRVRBX0NHUk9VUDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDM2OlxcdFxcdGlmICghbmZ0X21ldGFfZ2V0X2V2YWxfY2dyb3VwKGRlc3QsIHBrdCkpXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQzNy1cXHRcXHRcXHRnb3RvIGVycjtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00NDktXFx0Y2FzZSBORlRfTUVUQV9PSUZLSU5EOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzo0NTA6XFx0XFx0aWYgKCFuZnRfbWV0YV9nZXRfZXZhbF9raW5kKHByaXYtXFx1MDAzZWtleSwgZGVzdCwgcGt0KSlcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDUxLVxcdFxcdFxcdGdvdG8gZXJyO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQ1NS1cXHRjYXNlIE5GVF9NRVRBX1RJTUVfSE9VUjpcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDU2OlxcdFxcdG5mdF9tZXRhX2dldF9ldmFsX3RpbWUocHJpdi1cXHUwMDNla2V5LCBkZXN0KTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDU3LVxcdFxcdGJyZWFrO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00NTgtXFx0Y2FzZSBORlRfTUVUQV9TRElGOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzo0NTk6XFx0XFx0KmRlc3QgPSBuZnRfbWV0YV9nZXRfZXZhbF9zZGlmKHBrdCk7XFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQ2MC1cXHRcXHRicmVhaztcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDYxLVxcdGNhc2UgTkZUX01FVEFfU0RJRk5BTUU6XFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjQ2MjpcXHRcXHRuZnRfbWV0YV9nZXRfZXZhbF9zZGlmbmFtZShkZXN0LCBwa3QpO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy00NjMtXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDcyLX1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6NDczOkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9tZXRhX2dldF9ldmFsKTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDc0LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTgwMz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mdF9leHByX29wcyBuZnRfbWV0YV9nZXRfb3BzID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTgwNS1cXHQuc2l6ZVxcdFxcdD0gTkZUX0VYUFJfU0laRShzaXplb2Yoc3RydWN0IG5mdF9tZXRhKSksXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjgwNjpcXHQuZXZhbFxcdFxcdD0gbmZ0X21ldGFfZ2V0X2V2YWwsXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTgwNy1cXHQuaW5pdFxcdFxcdD0gbmZ0X21ldGFfZ2V0X2luaXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA2OjE4OjQ0LjExMzg2NzQ0N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNDYzMDMxMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKk5hdmlnYXRpbmcgdGhlIE5ldGZpbHRlciBDb2RlYmFzZSoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgYG5mdF9tZXRhX2dldF9ldmFsYCBpcyB0aGUga2V5IGVudHJ5IHBvaW50IGluIGBuZnRfbWV0YS5jYC4gVGhhdCBtYWtlcyBzZW5zZS4gTm93IEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGFsbCBob29rZWQgdXAsIHNvIEkgc2hvdWxkIHByb2JhYmx5IGp1bXAgb3ZlciB0byBgbmZ0X3J0LmNgIGFuZCB0YWtlIGEgbG9vayBhdCBgbmZ0X3J0X2dldF9ldmFsYC4gSSdtIGd1ZXNzaW5nIHRoZXJlJ3MgYSBjb25uZWN0aW9uIHRoZXJlIHNvbWV3aGVyZTsgbGlrZWx5LCB0aGUgcm91dGluZyBpbmZvcm1hdGlvbiBpcyBzb21laG93IGJlaW5nIGFjY2Vzc2VkIG9yIG1hbmlwdWxhdGVkIHdpdGhpbiB0aGUgbWV0YWRhdGEgY29udGV4dC4gVGhpcyBmZWVscyBsaWtlIGEgZ29vZCBuZXh0IGxvZ2ljYWwgc3RlcCB0byBtYXAgdGhlIGludGVyZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Njc0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTg6NDcuMTYwMTczMjhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3OTQ5MTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9ydF9nZXRfZXZhbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mdF9ydC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X3J0LmM9MjI9c3RhdGljIHUxNiBnZXRfdGNwbXNzKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LCBjb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpza2Jkc3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9ydC5jLTUzLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3J0LmM6NTQ6dm9pZCBuZnRfcnRfZ2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3J0LmMtNTUtXFx0XFx0ICAgICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9ydC5jPTE5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG5mdF9leHByX29wcyBuZnRfcnRfZ2V0X29wcyA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3J0LmMtMTk1LVxcdC5zaXplXFx0XFx0PSBORlRfRVhQUl9TSVpFKHNpemVvZihzdHJ1Y3QgbmZ0X3J0KSksXFxubmV0L25ldGZpbHRlci9uZnRfcnQuYzoxOTY6XFx0LmV2YWxcXHRcXHQ9IG5mdF9ydF9nZXRfZXZhbCxcXG5uZXQvbmV0ZmlsdGVyL25mdF9ydC5jLTE5Ny1cXHQuaW5pdFxcdFxcdD0gbmZ0X3J0X2dldF9pbml0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxODo0Ny4zNzgxNDcwNDNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk4MjkzODgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXZpbmcgaW50byB0aGUgbmZ0YWJsZXMgWEZSTSBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGF0IGBuZnRfeGZybV9nZXRfZXZhbGAgZnVuY3Rpb24gaW4gYG5mdF94ZnJtLmNgLCBzcGVjaWZpY2FsbHkuIE15IG1pbmQgaXMgaW1tZWRpYXRlbHkgZHJhd24gdG8gdGhlIGludHJpY2FjaWVzIG9mIGhvdyB3ZSdyZSBoYW5kbGluZyBYRlJNIChJUHNlYy9JUHNlYy1iYXNlZCB0cmFuc2Zvcm1zKSB3aXRoaW4gdGhlIG5mdGFibGVzIGZyYW1ld29yay4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB3aGVyZSB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBwYWNrZXQgZmxvdyBhbmQgcnVsZSBldmFsdWF0aW9uIHByb2Nlc3MuIElzIHRoaXMgdGhlIHBvaW50IHdoZXJlIHdlJ3JlIGFjdHVhbGx5ICpyZXRyaWV2aW5nKiB0aGUgcmVsZXZhbnQgWEZSTSBzdGF0ZSBmb3IgYSBnaXZlbiBwYWNrZXQgYmFzZWQgb24gc29tZSBtYXRjaGluZyBjcml0ZXJpYT8gT3IgaXMgaXQgbW9yZSBpbnZvbHZlZCwgcG90ZW50aWFsbHkgaGFuZGxpbmcgc29tZSBraW5kIG9mIHByZS1ldmFsdWF0aW9uIGNoZWNrP1xuXG5JIG5lZWQgdG8gcXVpY2tseSByZW1lbWJlciBpZiB0aGVyZSdzIGFueSBpbXBsaWNpdCBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggWEZSTSBpbiB0aGUga2VybmVsLiBJIHNob3VsZCBsb29rIGludG8gdGhlIHdheSBuZnRhYmxlcyBpbnRlcmFjdHMgd2l0aCB0aGUgWEZSTSBzdWJzeXN0ZW0uIEFyZSB3ZSBidWlsZGluZyB0aGUgWEZSTS1zcGVjaWZpYyBwYXJ0IG9mIHRoZSBydWxlIHNldCBpbnRvIHNvbWV0aGluZyBlZmZpY2llbnQsIG9yIGlzIHRoZXJlIGEgbG90IG9mIHJ1bnRpbWUgbG9va3VwPyBMZXQgbWUgYWxzbyBiZSBzdXJlIHRoYXQgdGhlIG1lbW9yeSB1c2FnZSBpcyByZWFzb25hYmxlLiBJJ20gaW1hZ2luaW5nIGl0J3MgdXNlZCB3aXRoIGBjb25udHJhY2tgLCBzbyBJJ20gZ29pbmcgdG8gY29uc2lkZXIgaXQgYW4gYXJlYSB3aGVyZSB3ZSBjYW4gcG9zc2libHkgaGF2ZSBpc3N1ZXMgaWYgbm90IHdlbGwgYXJjaGl0ZWN0ZWQuXG5cbkVzc2VudGlhbGx5LCBJIG5lZWQgdG8gcmVtaW5kIG15c2VsZiBvZiB0aGUgZnVsbCBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIHRvIGVuc3VyZSBJIGhhdmUgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBldmFsdWF0aW9uIGxvZ2ljIHRvIHVuZGVyc3RhbmQgaXRzIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcywgcG90ZW50aWFsIGdvdGNoYXMsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIG5mdGFibGVzIGluZnJhc3RydWN0dXJlLiBVbmRlcnN0YW5kaW5nIHRoaXMgZnVuY3Rpb24ncyByb2xlIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBmcmFtZXdvcmsgaW1wbGVtZW50cyBJUHNlYyBwb2xpY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE1OCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA2OjE4OjUxLjI3NjQ0NTEwNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTYzMTI4ODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZ0X3hmcm1fZ2V0X2V2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZnRfeGZybS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYz0xMjA9c3RhdGljIHZvaWQgbmZ0X3hmcm1fc3RhdGVfZ2V0X2tleShjb25zdCBzdHJ1Y3QgbmZ0X3hmcm0gKnByaXYsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMtMTYwLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYzoxNjE6c3RhdGljIHZvaWQgbmZ0X3hmcm1fZ2V0X2V2YWxfaW4oY29uc3Qgc3RydWN0IG5mdF94ZnJtICpwcml2LFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0xNjItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZnRfcmVncyAqcmVncyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0xNzYtXFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jOjE3NzpzdGF0aWMgdm9pZCBuZnRfeGZybV9nZXRfZXZhbF9vdXQoY29uc3Qgc3RydWN0IG5mdF94ZnJtICpwcml2LFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0xNzgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMtMjAxLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYzoyMDI6c3RhdGljIHZvaWQgbmZ0X3hmcm1fZ2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0yMDMtXFx0XFx0XFx0ICAgICAgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jLTIwOS1cXHRjYXNlIFhGUk1fUE9MSUNZX0lOOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYzoyMTA6XFx0XFx0bmZ0X3hmcm1fZ2V0X2V2YWxfaW4ocHJpdiwgcmVncywgcGt0KTtcXG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMtMjExLVxcdFxcdGJyZWFrO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X3hmcm0uYy0yMTItXFx0Y2FzZSBYRlJNX1BPTElDWV9PVVQ6XFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jOjIxMzpcXHRcXHRuZnRfeGZybV9nZXRfZXZhbF9vdXQocHJpdiwgcmVncywgcGt0KTtcXG5uZXQvbmV0ZmlsdGVyL25mdF94ZnJtLmMtMjE0LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jPTI3MD1zdGF0aWMgY29uc3Qgc3RydWN0IG5mdF9leHByX29wcyBuZnRfeGZybV9nZXRfb3BzID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jLTI3Mi1cXHQuc2l6ZVxcdFxcdD0gTkZUX0VYUFJfU0laRShzaXplb2Yoc3RydWN0IG5mdF94ZnJtKSksXFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jOjI3MzpcXHQuZXZhbFxcdFxcdD0gbmZ0X3hmcm1fZ2V0X2V2YWwsXFxubmV0L25ldGZpbHRlci9uZnRfeGZybS5jLTI3NC1cXHQuaW5pdFxcdFxcdD0gbmZ0X3hmcm1fZ2V0X2luaXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA2OjE4OjUxLjQ5Mjc2MzI1OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2OTIyNjc0NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgTkZUYWJsZXMgRnVuY3Rpb24gRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZXNlIGZ1bmN0aW9uczogYG5mdF9tZXRhX2dldF9ldmFsYCwgYG5mdF9ydF9nZXRfZXZhbGAsIGFuZCBgbmZ0X3hmcm1fZ2V0X2V2YWxgLiBUaGVzZSBhcmUgbGlrZWx5IHRoZSBjb3JlIHBpZWNlcyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHRhc2suIEJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIGl0J3MgYWx3YXlzIHdpc2UgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuXG5cblRoZSBmaXJzdCB0aGluZyB0byBhc2NlcnRhaW4gaXMgd2hldGhlciBORlRhYmxlcyBpcyBlbmFibGVkLiBUaGUgY2x1ZSBwb2ludHMgdG8gYE5GX1RBQkxFU2Agd2hpY2ggd2lsbCBhY3RpdmF0ZSBpdC4gVGhlbiB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYG5mdF9tZXRhLmNgIGZpbGUgaXMgYnVpbHQsIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBhbmQgdGhlIGBNYWtlZmlsZWAgaW4gdGhlIGBuZXQvbmV0ZmlsdGVyYCBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSBJIGJlbGlldmUgYE5GVF9NRVRBYCB3aWxsIGJlIHRoZSBrZXkgY29uZmlndXJhdGlvbiB2YWx1ZS4gTGV0J3Mgc3RhcnQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNzYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxODo1NS4xODUwMzM4MzhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MjA1MTA4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnRfbWV0YVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9ODc9bmZfdGFibGVzLW9ianMgOj0gbmZfdGFibGVzX2NvcmUubyBuZl90YWJsZXNfYXBpLm8gbmZ0X2NoYWluX2ZpbHRlci5vIFxcXFxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODktXFx0XFx0ICBuZnRfYml0d2lzZS5vIG5mdF9ieXRlb3JkZXIubyBuZnRfcGF5bG9hZC5vIG5mdF9sb29rdXAubyBcXFxcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo5MDpcXHRcXHQgIG5mdF9keW5zZXQubyBuZnRfbWV0YS5vIG5mdF9ydC5vIG5mdF9leHRoZHIubyBuZnRfbGFzdC5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTkxLVxcdFxcdCAgbmZ0X2NvdW50ZXIubyBuZnRfb2JqcmVmLm8gbmZ0X2lubmVyLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxODo1NS4zMzcwOTI2MjRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyNjYzMjI3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2Uga2VybmVsIG1vZHVsZSBkZXBlbmRlbmNpZXMsIGdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlc2UgdGhpbmdzOlxuXG4qKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jaWVzIC0gQSBRdWljayBNZW50YWwgV2Fsa3Rocm91Z2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIEknbSB0cmFja2luZyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIG1vZHVsZXMuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIGBuZnRfbWV0YS5vYCBhbmQgYG5mdF9ydC5vYC4gUmlnaHQsIHRob3NlIGFyZSBkZWZpbml0ZWx5IHBhcnQgb2YgdGhlIGBuZl90YWJsZXMtb2Jqc2AsIG1lYW5pbmcgdGhleSdyZSBjb21waWxlZCB3aGVuIHRoZSBgTkZfVEFCTEVTYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBhY3RpdmUuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UsIHRoZXkncmUgY29yZSBjb21wb25lbnRzLlxuXG5Ob3csIHdoYXQgYWJvdXQgYG5mdF94ZnJtLm9gPyBUaGF0J3MgdGhlIG9uZSBJIG5lZWQgdG8gY29uc2lkZXIgbmV4dCBhbmQgaG93IGl0IGxpbmtzIHdpdGggdGhlIHJlc3Qgb2YgdGhpcy4gSSBoYXZlIHRvIHRyYWNlIGhvdyBpdCB0aWVzIGludG8gYWxsIG9mIHRoaXM7IGlzIGl0IHNpbWlsYXJseSBkZXBlbmRlbnQsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaW1lIHRvIGRpZyBhIGJpdCBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NDAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxODo1OC41NjM3Mjc5MzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjM0OTY5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnRfeGZybVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTMxPW9iai0kKENPTkZJR19ORlRfVFBST1hZKVxcdCs9IG5mdF90cHJveHkub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTMyOm9iai0kKENPTkZJR19ORlRfWEZSTSlcXHRcXHQrPSBuZnRfeGZybS5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMzMtb2JqLSQoQ09ORklHX05GVF9TWU5QUk9YWSlcXHQrPSBuZnRfc3lucHJveHkub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxODo1OC42OTAwODMwNjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2NTA1Mzg2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgTkZUX1hGUk1gIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBzbyBJIHNlZSB3ZSBuZWVkIGBORlRfWEZSTWAgc3BlY2lmaWNhbGx5IGZvciBgbmZ0X3hmcm0uY2AuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIE5vdywgdGhlIGNydWNpYWwgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIGBORlRfWEZSTWAgaXRzZWxmIHB1bGxzIGluIGFueSAqb3RoZXIqIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIG5ldGZpbHRlciBmcmFtZXdvcmsuIEl0J3MgYSBjb21tb24gcGF0dGVybiwgYW5kIEkgd2FudCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSdtIGNhcHR1cmluZyB0aGUgZW50aXJlIHBpY3R1cmUgYmVmb3JlIG1ha2luZyBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgY29uZmlndXJhdGlvbiBvciBwb3RlbnRpYWwgY29uZmxpY3RzLiBJIG5lZWQgdG8gYmUgc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgdGhhdCB3b3VsZCBwcmV2ZW50IHRoaXMgZnJvbSBwcm9wZXJseSBidWlsZGluZy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBtYWtlZmlsZXMsIGFuZCBhbnkgS2NvbmZpZyBlbnRyaWVzIHJlbGF0ZWQgdG8gYE5GVF9YRlJNYCB0byBnZXQgYSBmdWxsIGRlcGVuZGVuY3kgbWFwLCBhbmQga2VlcCBhbiBleWUgb3V0IGZvciBjb25kaXRpb25hbCBpbmNsdXNpb24gb2Ygb3RoZXIgbW9kdWxlcy4gSXTigJlzIGFsc28gd29ydGggc2Nhbm5pbmcgZm9yIGFueSBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBtb2R1bGVzLCBsaWtlIGNvbm5lY3Rpb24gdHJhY2tpbmcgb3IgTkFUIGNvbXBvbmVudHMsIHRvIHNlZSBpZiBgTkZUX1hGUk1gIGhhcyBhbnkgaW50ZXJkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBzdHJlYW1saW5lIHRoZSBpbnZlc3RpZ2F0aW9uIGFuZCBwcm92aWRlIGEgbW9yZSBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3IG9mIHRoZSBpbnRlZ3JhdGlvbiBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwMDEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxOTowMi4zNTUxNDA2M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4MTM4NTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORlRfWEZSTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTYwOD1jb25maWcgTkZUX0ZJQl9JTkVUXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNjE3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo2MTg6Y29uZmlnIE5GVF9YRlJNXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTYxOS1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIG5mX3RhYmxlcyB4ZnJtL0lQU2VjIHNlY3VyaXR5IGFzc29jaWF0aW9uIG1hdGNoaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxOTowMi41NDMyODgzNDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYxMzAxMTk3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIEtjb25maWcgZm9yIE5GVF9YRlJNKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgaW50byB0aGUgZGV0YWlscy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGBORlRfWEZSTWAuIExldCdzIHB1bGwgdXAgdGhhdCBLY29uZmlnIGZpbGUgYW5kIHN0YXJ0IGRpc3NlY3RpbmcgaXQuIEknbSBsb29raW5nIGZvciB0aGUga2V5IGRlcGVuZGVuY2llcywgdGhlIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGUgdXNlIGNhc2VzIEknbSBpbnRlcmVzdGVkIGluLCB3aGljaCwgbGV0J3MgYmUgaG9uZXN0LCBwcm9iYWJseSByZXZvbHZlIGFyb3VuZCBbKmluc2VydCB5b3VyIHNwZWNpZmljIGFyZWEgb2YgZXhwZXJ0aXNlIGhlcmUgLSBlLmcuLCBoaWdoLXBlcmZvcm1hbmNlIG5ldHdvcmtpbmcsIHNlY3VyaXR5IHBvbGljaWVzLCBzcGVjaWZpYyBoYXJkd2FyZSBhY2NlbGVyYXRpb24sIGV0Yy4qXS4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBtb2R1bGUgaW50ZWdyYXRlcyB3aXRoIHRoZSBicm9hZGVyIE5ldGZpbHRlciBmcmFtZXdvcmsgYW5kIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG1vZHVsZXMuIEknbSBnb2luZyB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBoZWxwIHRleHRzIGFuZCBhbnkgY29tbWVudHM7IG9mdGVuIHRoZSByYXRpb25hbGUgZm9yIGEgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgYnVyaWVkIGluIHRoZXJlLCBhbmQgdGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIHJlYWxseSBpbnRlcmVzdGluZyBudWdnZXRzIG9mIGluZm9ybWF0aW9uIGxpZS4gVGhpcyBpcyBhYm91dCBlbnN1cmluZyBteSBleGlzdGluZyBjb25maWd1cmF0aW9ucyBhcmUgdXAgdG8gcGFyIG9yIGlkZW50aWZ5aW5nIGFueSBwb3RlbnRpYWwgZW5oYW5jZW1lbnRzIEkgY2FuIG1ha2UsIGFuZCByZWFsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGFsbCB0aGUgaW1wbGljYXRpb25zIHRoaXMgb3B0aW9uIG1pZ2h0IGhhdmUuIE9rYXksIGxldCdzIGdldCBzdGFydGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDA3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTk6MDYuMTU2MzA0NjIxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNjE4LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNjE4OlxcdGNvbmZpZyBORlRfWEZSTVxcbiA2MTk6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBuZl90YWJsZXMgeGZybS9JUFNlYyBzZWN1cml0eSBhc3NvY2lhdGlvbiBtYXRjaGluZ1xcXCJcXG4gNjIwOlxcdFxcdGRlcGVuZHMgb24gWEZSTVxcbiA2MjE6XFx0XFx0aGVscFxcbiA2MjI6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIGFuIGV4cHJlc3Npb24gdGhhdCB5b3UgY2FuIHVzZSB0byBleHRyYWN0IHByb3BlcnRpZXNcXG4gNjIzOlxcdFxcdCAgb2YgYSBwYWNrZXRzIHNlY3VyaXR5IGFzc29jaWF0aW9uLlxcbiA2MjQ6XFx0XFxuIDYyNTpcXHRjb25maWcgTkZUX1NPQ0tFVFxcbiA2MjY6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBuZl90YWJsZXMgc29ja2V0IG1hdGNoIHN1cHBvcnRcXFwiXFxuIDYyNzpcXHRcXHRzZWxlY3QgTkZfU09DS0VUX0lQVjRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTk6MDYuMTU2NTM0OTExWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NjI2ODYxOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyBEZXBlbmRlbmNpZXMgYW5kIENvbmZpZ3VyYXRpb24gT3B0aW9ucyBmb3IgTmV0ZmlsdGVyIEZ1bmN0aW9uYWxpdHkqKlxuXG5SaWdodCwgbGV0IG1lIHNlZS4gSXQncyBjbGVhciB0aGF0IHRoZSBgTkZUX1hGUk1gIG1vZHVsZSBoYXMgYSBoYXJkIGRlcGVuZGVuY3kgb24gdGhlIGBYRlJNYCBzdWJzeXN0ZW0uIFRoYXQncyBleHBlY3RlZCwgYnV0IGdvb2QgdG8gbWVudGFsbHkgY29uZmlybS4gSXQgbWVhbnMgaWYgSSB3YW50IGBORlRfWEZSTWAgZnVuY3Rpb25hbGl0eSwgSSAqbXVzdCogaGF2ZSB0aGUgWEZSTSBpbmZyYXN0cnVjdHVyZSBhdmFpbGFibGUuIE5vIHN1cnByaXNlcyB0aGVyZS5cblxuTm93LCBkaWdnaW5nIGEgYml0IGRlZXBlciwgSSBub3RpY2VkIGBuZnRfcnQuY2AgaGFzIHRoYXQgYCNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRGAgYmxvY2suIFRoYXQncyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGlmIGVuYWJsaW5nIGBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRGAgaXMgc29tZXRoaW5nIHdlIHNob3VsZCBiZSBhY3RpdmVseSBwdXJzdWluZy4gSXQgaW1wYWN0cyBob3cgdGhlIHJvdXRpbmcgc3Vic3lzdGVtIGludGVyYWN0cyB3aXRoIHRoZSBOZXRmaWx0ZXIgZnJhbWV3b3JrIGluIHRoaXMgYXJlYS4gUGVyaGFwcyB0aGVyZSBhcmUgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLCBjb21wYXRpYmlsaXR5IGNvbnNpZGVyYXRpb25zIHdpdGggb3VyIGV4aXN0aW5nIHNldHVwLCBvciBtYXliZSB3ZSBjYW4gbGV2ZXJhZ2UgdGhpcyB0byBzb2x2ZSBhIHNwZWNpZmljIGlzc3VlIHdlIGFyZSBoYXZpbmc/IEknbGwgbmVlZCB0byByZXZpZXcgdGhlIGNvbnRleHQgd2l0aGluIHRoZSBjb2RlLCBhbmQgbWF5YmUgY2hlY2sgYW55IHJlbGV2YW50IGNvbW1pdCBsb2dzLCB0byBkZWNpZGUgaWYgd2Ugc2hvdWxkIGVuYWJsZSBpdC4gSXQgd2lsbCBhbHNvIGJlIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NzQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA2OjE5OjA5LjkxOTIyNTYzMloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk4NDUxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1JPVVRFX0NMQVNTSURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTkyPWNvbmZpZyBJUF9ST1VURV9WRVJCT1NFXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTEwMi1cXG5uZXQvaXB2NC9LY29uZmlnOjEwMzpjb25maWcgSVBfUk9VVEVfQ0xBU1NJRFxcbm5ldC9pcHY0L0tjb25maWctMTA0LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTk6MTAuMDE5MDgxMTUxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODQ0MzM0MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gSVB2NCBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgemVybyBpbiBvbiB0aGUgSVB2NCBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUga2VybmVsLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayBhdCB0aGUgYG5ldC9pcHY0L0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxMDMuIEknbSBhc3N1bWluZyB0aGF0J3Mgd2hlcmUgdGhlIGNvcmUgSVB2NCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGxpa2VseSBkZWZpbmVkLiBJJ20gcHJvYmFibHkgbG9va2luZyBmb3IgdGhlIG1haW4gZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZCBob3cgSVB2NCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgb3IgcGVyaGFwcyBleHBsb3JpbmcgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZsYWcgSSdtIGN1cnJlbnRseSB3cmVzdGxpbmcgd2l0aC4gS25vd2luZyB0aGUga2VybmVsJ3MgS2NvbmZpZyBzdHJ1Y3R1cmUsIHRoYXQncyB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IHdoZW4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYW4gb3B0aW9uJ3MgZGVwZW5kZW5jaWVzIG9yIHdoYXQncyBnb2luZyBvbiB3aXRoIGEgcGFydGljdWxhciBjb25maWd1cmF0aW9uIGVsZW1lbnQuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjkzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTk6MTMuMTAzNTE5MTg0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEwMzpcXHRjb25maWcgSVBfUk9VVEVfQ0xBU1NJRFxcbiAxMDQ6XFx0XFx0Ym9vbFxcbiAxMDU6XFx0XFxuIDEwNjpcXHRjb25maWcgSVBfUE5QXFxuIDEwNzpcXHRcXHRib29sIFxcXCJJUDoga2VybmVsIGxldmVsIGF1dG9jb25maWd1cmF0aW9uXFxcIlxcbiAxMDg6XFx0XFx0aGVscFxcbiAxMDk6XFx0XFx0ICBUaGlzIGVuYWJsZXMgYXV0b21hdGljIGNvbmZpZ3VyYXRpb24gb2YgSVAgYWRkcmVzc2VzIG9mIGRldmljZXMgYW5kXFxuIDExMDpcXHRcXHQgIG9mIHRoZSByb3V0aW5nIHRhYmxlIGR1cmluZyBrZXJuZWwgYm9vdCwgYmFzZWQgb24gZWl0aGVyIGluZm9ybWF0aW9uXFxuIDExMTpcXHRcXHQgIHN1cHBsaWVkIG9uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIG9yIGJ5IEJPT1RQIG9yIFJBUlAgcHJvdG9jb2xzLlxcbiAxMTI6XFx0XFx0ICBZb3UgbmVlZCB0byBzYXkgWSBvbmx5IGZvciBkaXNrbGVzcyBtYWNoaW5lcyByZXF1aXJpbmcgbmV0d29ya1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxOToxMy4xMDM2ODYyNDRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg3MTM1MjM2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJhdmVsaW5nIGBJUF9ST1VURV9DTEFTU0lEYCoqXG5cbk9rYXksIHNvIGBJUF9ST1VURV9DTEFTU0lEYC4uLiBpdCdzIGEgYm9vbGVhbiwgYnV0IHRoZXJlJ3Mgbm8gZGlyZWN0IHByb21wdCBhc3NvY2lhdGVkIHdpdGggaXQuIFRoYXQgaW1tZWRpYXRlbHkgc2NyZWFtcyBcImRlcGVuZGVuY3lcIiB0byBtZS4gU29tZXRoaW5nLCBzb21ld2hlcmUsICplbHNlKiBpcyBzZXR0aW5nIHRoaXMgZmxhZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNlbGVjdGlvbiBsb2dpYy4gTGV0J3MgdHJhY2UgYmFjayB0aHJvdWdoIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGZpZ3VyZSBvdXQgd2hhdCdzIHRyaWdnZXJpbmcgdGhpcy4gVGltZSB0byBkaWcgaW4gYW5kIGZpbmQgdGhlIHVwc3RyZWFtIGRlcGVuZGVuY3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2ODAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA2OjE5OjE1Ljk3NTA0MTY2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDcyMTQwMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IElQX1JPVVRFX0NMQVNTSURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9MTUyNz1jb25maWcgTkVURklMVEVSX1hUX01BVENIX1JFQUxNXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUyOS1cXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTMwOlxcdHNlbGVjdCBJUF9ST1VURV9DTEFTU0lEXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1MzEtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NDk0PWNvbmZpZyBORVRfQ0xTX1JPVVRFNFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDk2LVxcdGRlcGVuZHMgb24gSU5FVFxcbm5ldC9zY2hlZC9LY29uZmlnOjQ5NzpcXHRzZWxlY3QgSVBfUk9VVEVfQ0xBU1NJRFxcbm5ldC9zY2hlZC9LY29uZmlnLTQ5OC1cXHRzZWxlY3QgTkVUX0NMU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxOToxNi4yMjIyNjEwNDlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0MTU3NDMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHdoYXQncyBydW5uaW5nIHRocm91Z2ggbXkgaGVhZDpcblxuKipJbnZlc3RpZ2F0aW5nIElQIFJvdXRpbmcgYW5kIENsYXNzaWZpY2F0aW9uIE9wdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdG8gZ2V0IHRoYXQgYElQX1JPVVRFX0NMQVNTSURgIHZhbHVlLiBUaGUgb3B0aW9ucyBJIHNlZSBhcmUgZWl0aGVyIGVuYWJsaW5nIGBORVRfQ0xTX1JPVVRFNGAgb3IgYE5FVEZJTFRFUl9YVF9NQVRDSF9SRUFMTWAuIFRoYXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IEkgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBjb3ZlcnMgYWxsIG15IGJhc2VzLiBCdXQgaG9sZCBvbiwgdGhlIGBuZnRfbWV0YS5jYCBmaWxlIGFsc28gcmVmZXJlbmNlcyBgdGNsYXNzaWRgLiBBbmQgSSByZW1lbWJlciB0aGF0J3MgYXNzb2NpYXRlZCB3aXRoIGBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRGAuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgbmZ0X21ldGEuY2AgZmlsZSBvbmUgbW9yZSB0aW1lIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFsbCBjb25zaXN0ZW50IGFuZCB0aGF0IEknbSBjb3ZlcmluZyBldmVyeXRoaW5nIG5lZWRlZC4gTGV0J3MgbWFrZSBzdXJlIEkgZGlkbid0IG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDIyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDY6MTk6MTkuOTYzODM5MjA4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTQwOTg0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZnRfbWV0YS5jPTIzNj1zdGF0aWMgYm9vbCBuZnRfbWV0YV9nZXRfZXZhbF9pZm5hbWUoZW51bSBuZnRfbWV0YV9rZXlzIGtleSwgdTMyICpkZXN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTI3OC1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmM6Mjc5OiNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYy0yODAtc3RhdGljIG5vaW5saW5lIGJvb2xcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYz0zNjQ9dm9pZCBuZnRfbWV0YV9nZXRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNDEwLVxcdFxcdGJyZWFrO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYzo0MTE6I2lmZGVmIENPTkZJR19JUF9ST1VURV9DTEFTU0lEXFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jLTQxMi1cXHRjYXNlIE5GVF9NRVRBX1JUQ0xBU1NJRDpcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X21ldGEuYz01MjM9aW50IG5mdF9tZXRhX2dldF9pbml0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNTQ2LVxcdGNhc2UgTkZUX01FVEFfU0tHSUQ6XFxubmV0L25ldGZpbHRlci9uZnRfbWV0YS5jOjU0NzojaWZkZWYgQ09ORklHX0lQX1JPVVRFX0NMQVNTSURcXG5uZXQvbmV0ZmlsdGVyL25mdF9tZXRhLmMtNTQ4LVxcdGNhc2UgTkZUX01FVEFfUlRDTEFTU0lEOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNjoxOToyMC4wNTUyNTU2NjRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAxMjk0MDc1MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE5ldGZpbHRlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBuZXRmaWx0ZXIgcGF0Y2gsIGFuZCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHdoYXQncyBnb2luZyBvbiBhbmQgd2hhdCBuZWVkcyB0byBiZSBjb25zaWRlcmVkLiBJdCBsb29rcyBsaWtlIHRoZSBgSVBfUk9VVEVfQ0xBU1NJRGAgaXMgcmVsZXZhbnQgaGVyZSwgc28gSSdsbCBiZSBhZGRpbmcgYE5FVF9DTFNfUk9VVEU0YCB0byB0aGUgYEVuYWJsZUNvbmZpZ3NgLiBJIGFsc28gbmVlZCB0byBiZSBzdXJlIHdlIGhhdmUgYE5GX1RBQkxFU2AsIGBORlRfWEZSTWAsIGFuZCBgWEZSTWAgZW5hYmxlZC5cblxuTm93LCBob2xkIG9uLi4uIGBORl9UQUJMRVNgIGFwcGVhcnMgdG8gYmUgdGhlIHByaW1hcnkgY29uZmlnIGNvbnRyb2xsaW5nIHRoaW5ncy4gQmVmb3JlIEkgZ28gdG9vIGZhciwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBORl9UQUJMRVNgIGFsb25lIGlzIHN1ZmZpY2llbnQuIEFoLCB5ZXMuIEl0IGxvb2tzIGxpa2UgYm90aCBgbmZ0X21ldGEuY2AgYW5kIGBuZnRfcnQuY2AgYXJlIGJ1aWx0IHdoZW4gb25seSBgTkZfVEFCTEVTYCBpcyBlbmFibGVkLiBBbmQgYG5mdF94ZnJtLmNgIGRlcGVuZHMgb24gYE5GVF9YRlJNYCwgZ29vZC5cblxuVGhlIGVzc2VuY2Ugb2YgdGhpcyBwYXRjaCBpcyBhIGNydWNpYWwgYnVnIGZpeCB3aXRoaW4gbmV0ZmlsdGVyLiBJdCBhZGRyZXNzZXMgYW4gaXNzdWUgd2hlcmUgYHNrYl9kc3Qoc2tiKWAgaXMgYmVpbmcgdXNlZCB3aXRob3V0IGZpcnN0IHZhbGlkYXRpbmcgaXQgd2l0aCBgc2tiX3ZhbGlkX2RzdChza2IpYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgY29yZSBuZXRmaWx0ZXIgaW5mcmFzdHJ1Y3R1cmUsIHNvIGl0J3MgYWJzb2x1dGVseSBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cblxuTXkgc3VtbWFyeSBmb3IgdGhlIGZ1enppbmcgc2V0dXAsIHRoZW4sIGlzIHRoaXM6XG5cbiogICAqKldvcnRoRnV6emluZyoqOiBUcnVlLCBhYnNvbHV0ZWx5LlxuKiAgICoqRm9jdXNTeW1ib2xzKio6IFRoZSBtb3N0IGltcG9ydGFudCBmdW5jdGlvbnMgdG8gaGl0OlxuICAgICogICBgbmZ0X21ldGFfZ2V0X2V2YWxgXG4gICAgKiAgIGBuZnRfcnRfZ2V0X2V2YWxgXG4gICAgKiAgIGBuZnRfeGZybV9nZXRfZXZhbGBcbiogICAqKkVuYWJsZUNvbmZpZ3MqKjpcbiAgICAqICAgYE5GX1RBQkxFU2BcbiAgICAqICAgYE5GVF9YRlJNYFxuICAgICogICBgWEZSTWBcbiAgICAqICAgYE5FVF9DTFNfUk9VVEU0YCAodGhpcyBlbmFibGVzIGBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRGAsIHdoaWNoIGlzIG5lZWRlZCBmb3IgcHJvcGVyIGNvdmVyYWdlIG9mIGBuZnRfcnQuY2AgYW5kIGBuZnRfbWV0YS5jYClcblxuVGhlIHJhdGlvbmFsZSBoZXJlIGlzIHRoaXM6IFRoZSBwYXRjaCBjb3JyZWN0cyBhIGNyaXRpY2FsIGZsYXcgaW4gbmZ0YWJsZXMgd2hlcmUgbWV0YWRhdGEgZGVzdGluYXRpb25zIGFyZSBiZWluZyBpbmNvcnJlY3RseSBoYW5kbGVkLCBsZWFkaW5nIHRvIHBvdGVudGlhbCBwcm9ibGVtcy4gVGhpcyBjb2RlIG1vZGlmaWVzIGBuZnRfbWV0YS5jYCwgYG5mdF9ydC5jYCwgYW5kIGBuZnRfeGZybS5jYCB0byB1c2UgYHNrYl92YWxpZF9kc3QoKWAgYmVmb3JlIHJlZmVyZW5jaW5nIGBza2JfZHN0KClgLiBUaGVzZSBhcmUgY3J1Y2lhbCBuZXRmaWx0ZXIgY29tcG9uZW50cyBhbmQgZnV6emluZyB0aGVtIGlzIG1hbmRhdG9yeS5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCB0aG91Z2gsIHRoYXQgYG5mdF9tZXRhX2dldF9ldmFsYCBpcyB0aGUgcmlnaHQgZnVuY3Rpb24gaGVyZS4uLiBZZXAsIGl0IGlzIHRoZSBgLmV2YWxgIGNhbGxiYWNrIHdpdGhpbiBgbmZ0X21ldGFfZ2V0X29wc2AsIGFuZCBsaWtld2lzZSB3aXRoIGBuZnRfcnRfZ2V0X2V2YWxgIGFuZCBgbmZ0X3hmcm1fZ2V0X2V2YWxgLlxuXG5MZXQgbWUganVzdCBjb25maXJtIHRoYXQgSSBoYXZlIHRoZSBwcmVjaXNlIGNvbmZpZyBuYW1lczogYE5FVF9DTFNfUk9VVEU0YCBpcyBjb3JyZWN0LCBhY2NvcmRpbmcgdG8gYG5ldC9zY2hlZC9LY29uZmlnYC4gYE5GVF9YRlJNYCBpcyBzcG90IG9uLCB0aGF0J3MgZGVmaW5lZCBpbiBgbmV0L25ldGZpbHRlci9LY29uZmlnYC4gYE5GX1RBQkxFU2AgaXMgY29ycmVjdCwgZnJvbSBgbmV0L25ldGZpbHRlci9LY29uZmlnYC4gQW5kIGBYRlJNYCBpcyByaWdodCB0aGVyZSBpbiBgbmV0L3hmcm0vS2NvbmZpZ2AuIEdvb2QuIEV2ZXJ5dGhpbmcgY2hlY2tzIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2NTEsIk91dHB1dFRva2VucyI6MTY2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA2OjE5OjMwLjE4NDY2Njg3MVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzA1MjE3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfVEFCTEVTXCIsXG4gICAgXCJORlRfWEZSTVwiLFxuICAgIFwiWEZSTVwiLFxuICAgIFwiTkVUX0NMU19ST1VURTRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnRfbWV0YV9nZXRfZXZhbFwiLFxuICAgIFwibmZ0X3J0X2dldF9ldmFsXCIsXG4gICAgXCJuZnRfeGZybV9nZXRfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5mdGFibGVzIHdoZXJlIG1ldGFkYXRhIGRzdHMgYXJlIGluY29ycmVjdGx5IHRyZWF0ZWQgYXMgcmVhbCBkc3RzLCB3aGljaCBjYW4gY2F1c2UgaXNzdWVzLiBJdCBtb2RpZmllcyBuZnRfbWV0YS5jLCBuZnRfcnQuYywgYW5kIG5mdF94ZnJtLmMgdG8gdXNlIHNrYl92YWxpZF9kc3QoKSBiZWZvcmUgYWNjZXNzaW5nIHNrYl9kc3QoKS4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldGZpbHRlciBjb21wb25lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkZUX1hGUk1cIixcbiAgICBcIlhGUk1cIixcbiAgICBcIk5FVF9DTFNfUk9VVEU0XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZ0X21ldGFfZ2V0X2V2YWxcIixcbiAgICBcIm5mdF9ydF9nZXRfZXZhbFwiLFxuICAgIFwibmZ0X3hmcm1fZ2V0X2V2YWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBuZnRhYmxlcyB3aGVyZSBtZXRhZGF0YSBkc3RzIGFyZSBpbmNvcnJlY3RseSB0cmVhdGVkIGFzIHJlYWwgZHN0cywgd2hpY2ggY2FuIGNhdXNlIGlzc3Vlcy4gSXQgbW9kaWZpZXMgbmZ0X21ldGEuYywgbmZ0X3J0LmMsIGFuZCBuZnRfeGZybS5jIHRvIHVzZSBza2JfdmFsaWRfZHN0KCkgYmVmb3JlIGFjY2Vzc2luZyBza2JfZHN0KCkuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXRmaWx0ZXIgY29tcG9uZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt6jg8[1] Phase: Succeeded StartedAt: 2026-07-29 06:19:38 +0000 UTC FinishedAt: 2026-07-29 06:19:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 06:19:39 +0000 UTC FinishedAt: 2026-07-29 06:19:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2] Phase: Succeeded StartedAt: 2026-07-29 06:19:39 +0000 UTC FinishedAt: 2026-07-29 10:12:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-29 06:19:40 +0000 UTC FinishedAt: 2026-07-29 10:12:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-29 06:19:40 +0000 UTC FinishedAt: 2026-07-29 06:20:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-29 06:19:40 +0000 UTC FinishedAt: 2026-07-29 06:20:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},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-workflowt6jg8/series-workflowt6jg8-convert-artifact-2039214281/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-29 06:20:24 +0000 UTC FinishedAt: 2026-07-29 06:45:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-29 06:20:24 +0000 UTC FinishedAt: 2026-07-29 06:45:29 +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:*72897aa2-3027-4b98-84cc-65dcff1768a5,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-workflowt6jg8/series-workflowt6jg8-convert-artifact-2039214281/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": "18815d6e-ff2d-4d08-9bfd-088d51dc0573", "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-workflowt6jg8/series-workflowt6jg8-build-action-3633147815/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-29 06:20:24 +0000 UTC FinishedAt: 2026-07-29 06:45:19 +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:*72897aa2-3027-4b98-84cc-65dcff1768a5,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-workflowt6jg8/series-workflowt6jg8-convert-artifact-2039214281/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": "18815d6e-ff2d-4d08-9bfd-088d51dc0573", "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-workflowt6jg8/series-workflowt6jg8-build-action-3633147815/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-29 06:45:29 +0000 UTC FinishedAt: 2026-07-29 06:45:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-29 06:45:29 +0000 UTC FinishedAt: 2026-07-29 06:45:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-29 06:45:29 +0000 UTC FinishedAt: 2026-07-29 06:45:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-29 06:45:29 +0000 UTC FinishedAt: 2026-07-29 06:45:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},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-workflowt6jg8/series-workflowt6jg8-convert-artifact-3492876764/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-29 06:45:39 +0000 UTC FinishedAt: 2026-07-29 06:47:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-29 06:45:39 +0000 UTC FinishedAt: 2026-07-29 06:47:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*18815d6e-ff2d-4d08-9bfd-088d51dc0573,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-workflowt6jg8/series-workflowt6jg8-build-action-3633147815/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-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-29 06:47:44 +0000 UTC FinishedAt: 2026-07-29 06:47:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-29 06:47:44 +0000 UTC FinishedAt: 2026-07-29 06:47:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-29 06:47:44 +0000 UTC FinishedAt: 2026-07-29 07:06:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-29 06:47:44 +0000 UTC FinishedAt: 2026-07-29 07:06: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:*72897aa2-3027-4b98-84cc-65dcff1768a5,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-workflowt6jg8/series-workflowt6jg8-convert-artifact-3492876764/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": "55254173-e9a8-45b8-9f50-cfc01dff71ab", "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-workflowt6jg8/series-workflowt6jg8-build-action-3805795896/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-29 06:47:44 +0000 UTC FinishedAt: 2026-07-29 07:06:33 +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:*72897aa2-3027-4b98-84cc-65dcff1768a5,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-workflowt6jg8/series-workflowt6jg8-convert-artifact-3492876764/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": "55254173-e9a8-45b8-9f50-cfc01dff71ab", "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-workflowt6jg8/series-workflowt6jg8-build-action-3805795896/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-29 07:06:43 +0000 UTC FinishedAt: 2026-07-29 07:06:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-29 07:06:43 +0000 UTC FinishedAt: 2026-07-29 07:06:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-29 07:06:43 +0000 UTC FinishedAt: 2026-07-29 07:08:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-29 07:06:43 +0000 UTC FinishedAt: 2026-07-29 07:08:42 +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:*55254173-e9a8-45b8-9f50-cfc01dff71ab,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-workflowt6jg8/series-workflowt6jg8-build-action-3805795896/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-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-29 07:08:52 +0000 UTC FinishedAt: 2026-07-29 10:12:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-29 07:08:52 +0000 UTC FinishedAt: 2026-07-29 10:12:05 +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":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"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:*18815d6e-ff2d-4d08-9bfd-088d51dc0573,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*55254173-e9a8-45b8-9f50-cfc01dff71ab,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-workflowt6jg8/series-workflowt6jg8-build-action-3633147815/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-workflowt6jg8/series-workflowt6jg8-build-action-3805795896/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-29 07:08:52 +0000 UTC FinishedAt: 2026-07-29 07:09:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-29 07:08:52 +0000 UTC FinishedAt: 2026-07-29 07:08:56 +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":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"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-workflowt6jg8/series-workflowt6jg8-convert-artifact-1573058469/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-29 07:08:52 +0000 UTC FinishedAt: 2026-07-29 07:08:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-29 07:08:52 +0000 UTC FinishedAt: 2026-07-29 07:08:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-29 07:08:52 +0000 UTC FinishedAt: 2026-07-29 07:08:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-29 07:09:02 +0000 UTC FinishedAt: 2026-07-29 10:12:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt6jg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_meta_get_eval","nft_rt_get_eval","nft_xfrm_get_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a50eba1e778ad4da5b6f9ddbbf57dabbea59bc05","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_TABLES","NFT_XFRM","XFRM","NET_CLS_ROUTE4"],"series_id":"250b78fc-95ac-4f6f-8746-9f8d8777688b","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-29 07:09:02 +0000 UTC FinishedAt: 2026-07-29 10:11:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*18815d6e-ff2d-4d08-9bfd-088d51dc0573,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*55254173-e9a8-45b8-9f50-cfc01dff71ab,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-workflowt6jg8/series-workflowt6jg8-build-action-3633147815/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-workflowt6jg8/series-workflowt6jg8-build-action-3805795896/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-workflowt6jg8/series-workflowt6jg8-convert-artifact-1573058469/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,}