Name: series-workflowncql4 Phase: Succeeded StartedAt: 2026-08-13 17:49:45 +0000 UTC FinishedAt: 2026-08-13 22:09:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[0] Phase: Succeeded StartedAt: 2026-08-13 17:49:45 +0000 UTC FinishedAt: 2026-08-13 18:18:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 17:49:45 +0000 UTC FinishedAt: 2026-08-13 18:18:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "9006c116dd111d457bf5d074990210f70a4ad2c8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "9006c116dd111d457bf5d074990210f70a4ad2c8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "e8181e46-561b-4af5-823e-e156948c02e5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_fib_metrics_init", "fib_create_info", "ip6_route_add" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9maWJfbWV0cmljc19pbml0JiMzNDssCiAgICAmIzM0O2ZpYl9jcmVhdGVfaW5mbyYjMzQ7LAogICAgJiMzNDtpcDZfcm91dGVfYWRkJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBgUlRBWF9BRFZNU1NgIG1ldHJpYyB2YWx1ZSBpbiBgaXBfbWV0cmljc19jb252ZXJ0YC4gSXQgdmVyaWZpZXMgdGhhdCB0aGUgdmFsdWUgaXMgZWl0aGVyIDAgb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBUQ1BfTUlOX01TU2AsIGFuZCByZXR1cm5zIGAtRUlOVkFMYCBpZiBpdCBpcyBub3QuIFRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGl0IGRvZXMgbm90IGV4cG9zZSBhbnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBiZSBsb2dpYyBlcnJvcnMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBSVEFYX0FEVk1TUyBtZXRyaWMgZHVyaW5nIElQdjQgYW5kIElQdjYgcm91dGUgY3JlYXRpb24uIEl0IHJlamVjdHMgcm91dGVzIHdpdGggYW4gYWR2bXNzIHZhbHVlIGxlc3MgdGhhbiBUQ1BfTUlOX01TUyAoODgpLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayByb3V0ZSBjb25maWd1cmF0aW9uIGFuZCBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBiZWhhdmlvciwgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODoxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNiMDhhZGFkOGU1NWEwZjVmZDExYWI2MjEzMmJlOGEzM2RiYWRjNjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAxODoxNzo1MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9tZXRyaWNzLmMgYi9uZXQvaXB2NC9tZXRyaWNzLmNcbmluZGV4IGFkNDA3NjJhOGIzODMuLmI5Yjk3YTBhNTEyNmIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9tZXRyaWNzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L21ldHJpY3MuY1xuQEAgLTQ0LDYgJiM0Mzs0NCwxMiBAQCBzdGF0aWMgaW50IGlwX21ldHJpY3NfY29udmVydChzdHJ1Y3QgbmxhdHRyICpmY19teCxcbiBcdFx0XHR9XG4gXHRcdFx0dmFsID0gbmxhX2dldF91MzIobmxhKTtcbiBcdFx0fVxuJiM0MztcdFx0aWYgKHR5cGUgPT0gUlRBWF9BRFZNU1MgXHUwMDI2XHUwMDI2IHZhbCBcdTAwMjZcdTAwMjYgdmFsIFx1MDAzYyBUQ1BfTUlOX01TUykge1xuJiM0MztcdFx0XHROTF9TRVRfRVJSX01TR19BVFRSX0ZNVChleHRhY2ssIG5sYSxcbiYjNDM7XHRcdFx0XHRcdFx0XCYjMzQ7SW52YWxpZCBhZHZtc3MsIG11c3QgYmUgMCBvciBcdTAwM2U9ICV1XCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0XHRUQ1BfTUlOX01TUyk7XG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0fVxuIFx0XHRpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyBcdTAwMjZcdTAwMjYgdmFsIFx1MDAzZSA2NTUzNSAtIDQwKVxuIFx0XHRcdHZhbCA9IDY1NTM1IC0gNDA7XG4gXHRcdGlmICh0eXBlID09IFJUQVhfTVRVIFx1MDAyNlx1MDAyNiB2YWwgXHUwMDNlIDY1NTM1IC0gMTUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9maWJfbWV0cmljc19pbml0JiMzNDssCiAgICAmIzM0O2ZpYl9jcmVhdGVfaW5mbyYjMzQ7LAogICAgJiMzNDtpcDZfcm91dGVfYWRkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBSVEFYX0FEVk1TUyBtZXRyaWMgZHVyaW5nIElQdjQgYW5kIElQdjYgcm91dGUgY3JlYXRpb24uIEl0IHJlamVjdHMgcm91dGVzIHdpdGggYW4gYWR2bXNzIHZhbHVlIGxlc3MgdGhhbiBUQ1BfTUlOX01TUyAoODgpLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayByb3V0ZSBjb25maWd1cmF0aW9uIGFuZCBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBiZWhhdmlvciwgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNiMDhhZGFkOGU1NWEwZjVmZDExYWI2MjEzMmJlOGEzM2RiYWRjNjgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAxODoxNzo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L21ldHJpY3MuYyBiL25ldC9pcHY0L21ldHJpY3MuYwppbmRleCBhZDQwNzYyYThiMzgzLi5iOWI5N2EwYTUxMjZiIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9tZXRyaWNzLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvbWV0cmljcy5jCkBAIC00NCw2ICYjNDM7NDQsMTIgQEAgc3RhdGljIGludCBpcF9tZXRyaWNzX2NvbnZlcnQoc3RydWN0IG5sYXR0ciAqZmNfbXgsCiAJCQl9CiAJCQl2YWwgPSBubGFfZ2V0X3UzMihubGEpOwogCQl9CiYjNDM7CQlpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyAmYW1wOyZhbXA7IHZhbCAmYW1wOyZhbXA7IHZhbCAmbHQ7IFRDUF9NSU5fTVNTKSB7CiYjNDM7CQkJTkxfU0VUX0VSUl9NU0dfQVRUUl9GTVQoZXh0YWNrLCBubGEsCiYjNDM7CQkJCQkJJiMzNDtJbnZhbGlkIGFkdm1zcywgbXVzdCBiZSAwIG9yICZndDs9ICV1JiMzNDssCiYjNDM7CQkJCQkJVENQX01JTl9NU1MpOwomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJfQogCQlpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyAmYW1wOyZhbXA7IHZhbCAmZ3Q7IDY1NTM1IC0gNDApCiAJCQl2YWwgPSA2NTUzNSAtIDQwOwogCQlpZiAodHlwZSA9PSBSVEFYX01UVSAmYW1wOyZhbXA7IHZhbCAmZ3Q7IDY1NTM1IC0gMTUpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgUlRBWF9BRFZNU1NgIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L2lwdjQvbWV0cmljcy5jYC4gSXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkOiB0aGV5JiMzOTt2ZSBhZGRlZCBhIHZhbGlkYXRpb24gY2hlY2sgd2l0aGluIGBpcF9tZXRyaWNzX2NvbnZlcnRgIGZvciBgUlRBWF9BRFZNU1NgLiBUaGUgbmV3IGNvZGUgaXMgZGVzaWduZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGFkdmFuY2VkIE1TUyB2YWx1ZSAoYHZhbGApIGlzIGVpdGhlciB6ZXJvIG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgVENQX01JTl9NU1NgLiBUaGUgc3BlY2lmaWMgY2hlY2sgdXNlcyBgTkxfU0VUX0VSUl9NU0dfQVRUUl9GTVRgIHRvIHNldCBhbiBlcnJvciBtZXNzYWdlIGlmIHRoZSB2YWx1ZSBpcyBpbnZhbGlkLiBUaGF0JiMzOTtzIGdvb2QsIHByZXZlbnRzIHNpbGx5IGNvbmZpZ3VyYXRpb25zLgoKVGhlIGNvcmUgb2YgdGhpcyBpcyB0aGF0IHRoZSBjb2RlIGxvb2tzIGxpa2U6CgpgYGBjCgkJaWYgKHR5cGUgPT0gUlRBWF9BRFZNU1MgJmFtcDsmYW1wOyB2YWwgJmFtcDsmYW1wOyB2YWwgJmx0OyBUQ1BfTUlOX01TUykgewoJCQlOTF9TRVRfRVJSX01TR19BVFRSX0ZNVChleHRhY2ssIG5sYSwKCQkJCQkJJiMzNDtJbnZhbGlkIGFkdm1zcywgbXVzdCBiZSAwIG9yICZndDs9ICV1JiMzNDssCgkJCQkJCVRDUF9NSU5fTVNTKTsKCQkJcmV0dXJuIC1FSU5WQUw7CgkJfQpgYGAKCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBiZXR0ZXIuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBpcF9tZXRyaWNzX2NvbnZlcnRgIGl0c2VsZi4gV2hhdCBkb2VzIGl0IGFjdHVhbGx5IGRvPyBXaGVyZSBpcyBpdCAqdXNlZCo/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHdoYXQmIzM5O3MgdHJpZ2dlcmluZyB0aGlzIGNvbnZlcnNpb24uIEtub3dpbmcgdGhlIGNhbGxpbmcgY29udGV4dHMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aGlzIGNoYW5nZSBhbmQgd2hldGhlciBpdCBpbnRyb2R1Y2VzIGFueSB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0cyBvciByYWNlIGNvbmRpdGlvbnMuIEtub3dpbmcgd2hhdCBjYWxscyB0aGlzIGlzIGtleSwgc28gSSYjMzk7bGwgY2hlY2sgdGhhdCBuZXh0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgdmFsaWRhdGlvbiBpcyB0cmlnZ2VyZWQgYXQgYWxsIHJlbGV2YW50IHBvaW50cy4gSSYjMzk7bGwgcHJvYmFibHkgYWxzbyBjaGVjayB0aGUgc3Vycm91bmRpbmcgY29kZSBmb3Igc2ltaWxhciBjaGVja3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfbWV0cmljc19jb252ZXJ0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L21ldHJpY3MuYy05LVxubmV0L2lwdjQvbWV0cmljcy5jOjEwOnN0YXRpYyBpbnQgaXBfbWV0cmljc19jb252ZXJ0KHN0cnVjdCBubGF0dHIgKmZjX214LFxubmV0L2lwdjQvbWV0cmljcy5jLTExLVx0XHRcdCAgICAgIGludCBmY19teF9sZW4sIHUzMiAqbWV0cmljcyxcbi0tXG5uZXQvaXB2NC9tZXRyaWNzLmM9NzI9c3RydWN0IGRzdF9tZXRyaWNzICppcF9maWJfbWV0cmljc19pbml0KHN0cnVjdCBubGF0dHIgKmZjX214LFxuLS1cbm5ldC9pcHY0L21ldHJpY3MuYy04NS1cbm5ldC9pcHY0L21ldHJpY3MuYzo4NjpcdGVyciA9IGlwX21ldHJpY3NfY29udmVydChmY19teCwgZmNfbXhfbGVuLCBmaWJfbWV0cmljcy1cdTAwM2VtZXRyaWNzLFxubmV0L2lwdjQvbWV0cmljcy5jLTg3LVx0XHRcdFx0IGV4dGFjayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4NAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBJUCBGSUIgTWV0cmljcyBJbml0aWFsaXphdGlvbioqCgpSaWdodCwgc28gYGlwX21ldHJpY3NfY29udmVydGAgaXMgY2xlYXJseSBhIGZ1bmN0aW9uIGludm9sdmVkIGluIGNvbnZlcnRpbmcgc29tZSBzb3J0IG9mIElQIG1ldHJpY3MsIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGNhbGxlZCBieSBgaXBfZmliX21ldHJpY3NfaW5pdGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3MgdHJhY2UgdGhpcyBiYWNrLiBXaGVyZSBpcyBgaXBfZmliX21ldHJpY3NfaW5pdGAgYWN0dWFsbHkgYmVpbmcgaW52b2tlZD8gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBncmFwaCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgcGljdHVyZSBvZiB0aGUgY29udGV4dCBzdXJyb3VuZGluZyB0aG9zZSBtZXRyaWNzIGNvbnZlcnNpb25zLiBLbm93aW5nIHdoZXJlIGBpcF9maWJfbWV0cmljc19pbml0YCBpcyBjYWxsZWQgaXMgdGhlIGNyaXRpY2FsIHBpZWNlIG9mIHRoaXMgcHV6emxlIHJpZ2h0IG5vdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9maWJfbWV0cmljc19pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2lwLmg9NTA5PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGlwX3NrYl9kc3RfbXR1KHN0cnVjdCBzb2NrICpzayxcbi0tXG5pbmNsdWRlL25ldC9pcC5oLTUyNC1cbmluY2x1ZGUvbmV0L2lwLmg6NTI1OnN0cnVjdCBkc3RfbWV0cmljcyAqaXBfZmliX21ldHJpY3NfaW5pdChzdHJ1Y3QgbmxhdHRyICpmY19teCwgaW50IGZjX214X2xlbixcbmluY2x1ZGUvbmV0L2lwLmgtNTI2LVx0XHRcdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuLS1cbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYz0xMzc2PXN0cnVjdCBmaWJfaW5mbyAqZmliX2NyZWF0ZV9pbmZvKHN0cnVjdCBmaWJfY29uZmlnICpjZmcsXG4tLVxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE0MzQtXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM6MTQzNTpcdGZpLVx1MDAzZWZpYl9tZXRyaWNzID0gaXBfZmliX21ldHJpY3NfaW5pdChjZmctXHUwMDNlZmNfbXgsIGNmZy1cdTAwM2VmY19teF9sZW4sIGV4dGFjayk7XG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMTQzNi1cdGlmIChJU19FUlIoZmktXHUwMDNlZmliX21ldHJpY3MpKSB7XG4tLVxubmV0L2lwdjQvbWV0cmljcy5jPTEwPXN0YXRpYyBpbnQgaXBfbWV0cmljc19jb252ZXJ0KHN0cnVjdCBubGF0dHIgKmZjX214LFxuLS1cbm5ldC9pcHY0L21ldHJpY3MuYy03MS1cbm5ldC9pcHY0L21ldHJpY3MuYzo3MjpzdHJ1Y3QgZHN0X21ldHJpY3MgKmlwX2ZpYl9tZXRyaWNzX2luaXQoc3RydWN0IG5sYXR0ciAqZmNfbXgsXG5uZXQvaXB2NC9tZXRyaWNzLmMtNzMtXHRcdFx0XHRcdGludCBmY19teF9sZW4sXG4tLVxubmV0L2lwdjYvcm91dGUuYz0zODA5PXN0YXRpYyBzdHJ1Y3QgZmliNl9pbmZvICppcDZfcm91dGVfaW5mb19jcmVhdGUoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXG4tLVxubmV0L2lwdjYvcm91dGUuYy0zODM4LVxubmV0L2lwdjYvcm91dGUuYzozODM5Olx0cnQtXHUwMDNlZmliNl9tZXRyaWNzID0gaXBfZmliX21ldHJpY3NfaW5pdChjZmctXHUwMDNlZmNfbXgsIGNmZy1cdTAwM2VmY19teF9sZW4sXG5uZXQvaXB2Ni9yb3V0ZS5jLTM4NDAtXHRcdFx0XHRcdCAgICAgICBleHRhY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NzcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUm91dGUgQ3JlYXRpb24gTG9naWMgRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBoaXR0aW5nIHNvbWUgcm91dGUgY3JlYXRpb24gbG9naWMg4oCTIHNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB3ZSYjMzk7cmUgdG91Y2hpbmcgb24gaG93IHRoZSBrZXJuZWwgaGFuZGxlcyB0aGUgYFJUQVhfQURWTVNTYCBtZXRyaWMuIFRoaXMgaXMgYWxsIGtpY2tlZCBvZmYgYnkgY2FsbHMgdG8gYGZpYl9jcmVhdGVfaW5mb2AgaW4gYG5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuY2AgYW5kIGBpcDZfcm91dGVfaW5mb19jcmVhdGVgIGluIGBuZXQvaXB2Ni9yb3V0ZS5jYCB3aGljaCwgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIGFyZSBib3RoIGFjY2Vzc2libGUgdGhyb3VnaCBuZXRsaW5rLgoKVGhlIHBhdGNoIHNlZW1zIHRvIGFkZCBhIGNoZWNrIGZvciBgUlRBWF9BRFZNU1NgLiBFc3NlbnRpYWxseSwgaXQmIzM5O3MgcmVqZWN0aW5nIHJvdXRlcyB3aGVyZSBgUlRBWF9BRFZNU1NgIGlzIGxlc3MgdGhhbiBgVENQX01JTl9NU1NgIChpZiBgUlRBWF9BRFZNU1NgIGlzIGdyZWF0ZXIgdGhhbiAwKSwgd2hpY2ggaXMgYSBnb29kIGRlZmVuc2l2ZSBtZWFzdXJlLiBGdW5jdGlvbmFsbHksIHRoaXMgbG9va3MgbGlrZSBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLgoKTm93LCB3aGVyZSYjMzk7cyB0aGUgYmVzdCBwbGFjZSB0byBkaWcgaW4gdG8gdW5kZXJzdGFuZCB0aGlzIGluIG1vcmUgZGV0YWlsPyBJIG5lZWQgdG8gbG9vayBhdCBob3cgdGhlc2UgbWV0cmljcyBhcmUgaW5pdGlhbGl6ZWQgYW5kIGNvbnZlcnRlZC4gTGV0JiMzOTtzIHNlZS4uLiBgaXBfZmliX21ldHJpY3NfaW5pdGAgYW5kIGBpcF9tZXRyaWNzX2NvbnZlcnRgLiBgaXBfZmliX21ldHJpY3NfaW5pdGAgaXMgbm9uLXN0YXRpYywgd2hpY2ggbWFrZXMgaXQgYSBncmVhdCB0YXJnZXQgc3ltYm9sLiBgaXBfbWV0cmljc19jb252ZXJ0YCBpcyBzdGF0aWMsIHdoaWNoIGlzIGxlc3MgdXNlZnVsIGZvciBleHRlcm5hbCBpbnNwZWN0aW9uLiBTbyBgaXBfZmliX21ldHJpY3NfaW5pdGAgbG9va3MgbGlrZSBhIHN0cm9uZyBmb2N1cy4gQWxvbmcgd2l0aCB0aGUgcm91dGUgY3JlYXRpb24gZnVuY3Rpb25zIEkgbWVudGlvbmVkIGVhcmxpZXIgKGBmaWJfY3JlYXRlX2luZm9gIGFuZCBgaXA2X3JvdXRlX2luZm9fY3JlYXRlYCksIG9mIGNvdXJzZS4KCkkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoaXMgY29kZSBwYXRoPyBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgYG5ldC9pcHY0L21ldHJpY3MuY2AgZmlsZS4uLiBBaCwgbG9va3MgbGlrZSBpdCYjMzk7cyAqbm90KiB0aWVkIHRvIGBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRGAuIFNvLCBJJiMzOTttIGdvaW5nIHRvIGFzc3VtZSBpdCYjMzk7cyBhbHdheXMgY29tcGlsZWQgZm9yIElQdjQsIHdoaWNoIG1lYW5zIGEgd2lkZXIgYXR0YWNrIHN1cmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWV0cmljcy5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZS0xMC1cdCAgICAgdGNwLm8gdGNwX2lucHV0Lm8gdGNwX291dHB1dC5vIHRjcF90aW1lci5vIHRjcF9pcHY0Lm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlOjExOlx0ICAgICB0Y3BfbWluaXNvY2tzLm8gdGNwX2NvbmcubyB0Y3BfbWV0cmljcy5vIHRjcF9mYXN0b3Blbi5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xMi1cdCAgICAgdGNwX3JlY292ZXJ5Lm8gdGNwX3VscC5vIFxcXG4tLVxubmV0L2lwdjQvTWFrZWZpbGUtMTYtXHQgICAgIGluZXRfZnJhZ21lbnQubyBwaW5nLm8gaXBfdHVubmVsX2NvcmUubyBncmVfb2ZmbG9hZC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxNzpcdCAgICAgbWV0cmljcy5vIG5ldGxpbmsubyBuZXh0aG9wLm8gdWRwX3R1bm5lbF9zdHViLm9cbm5ldC9pcHY0L01ha2VmaWxlLTE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzODkKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIElQdjQgQ29tcGlsYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGJ1aWxkIGNvbmZpZ3VyYXRpb24gdW5jb25kaXRpb25hbGx5IGluY2x1ZGVzIElQdjQuIFRoZSBxdWVzdGlvbiBpcywgZG9lcyBpdCByZWx5IHNvbGVseSBvbiBgQ09ORklHX0lORVRgLCBvciBpcyBgQ09ORklHX0lQX1JPVVRFYCBhbHNvIGEgbmVjZXNzYXJ5IGRlcGVuZGVuY3k/IEFjdHVhbGx5LCB3YWl0IGEgc2Vjb25kLCBgQ09ORklHX0lQX1JPVVRFYCBpc24mIzM5O3QgYSB2YWxpZCBvcHRpb24gaW4gdGhlIGNvbmZpZ3VyYXRpb247IGl0JiMzOTtzIHNpbXBseSBmb2xkZWQgaW50byBgQ09ORklHX0lORVRgLiBUaGVyZWZvcmUsIGBDT05GSUdfSU5FVGAgKnNob3VsZCogYmUgc3VmZmljaWVudCB0byBzYXRpc2Z5IHRoZSBJUHY0IGRlcGVuZGVuY3kuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgYSBxdWljayBjaGVjayBvZiBob3cgSVB2NiByb3V0aW5nIGlzIGhhbmRsZWQgd2lsbCBiZSB1c2VmdWwuIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSBgbmV0L2lwdjYvcm91dGUuY2AgYW5kIHNwZWNpZmljYWxseSwgaG93IGBpcDZfcm91dGVfaW5mb19jcmVhdGVgIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBJUHY2IHJvdXRpbmcgY29udGV4dC4gVGhhdCBzaG91bGQgaGVscCBjb25maXJtIHRoYXQgdGhlIElQdjQgYmFzZSBhc3N1bXB0aW9uIGhvbGRzLCBvciB3aGV0aGVyIGZ1cnRoZXIgZGVwZW5kZW5jaWVzIGFyZSBuZWVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwNl9yb3V0ZV9pbmZvX2NyZWF0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jPTM3NjI9c3RhdGljIGludCBmaWI2X2NvbmZpZ192YWxpZGF0ZShzdHJ1Y3QgZmliNl9jb25maWcgKmNmZyxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTM4MDgtXG5uZXQvaXB2Ni9yb3V0ZS5jOjM4MDk6c3RhdGljIHN0cnVjdCBmaWI2X2luZm8gKmlwNl9yb3V0ZV9pbmZvX2NyZWF0ZShzdHJ1Y3QgZmliNl9jb25maWcgKmNmZyxcbm5ldC9pcHY2L3JvdXRlLmMtMzgxMC1cdFx0XHRcdFx0ICAgICAgIGdmcF90IGdmcF9mbGFncyxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTM4NzUtXG5uZXQvaXB2Ni9yb3V0ZS5jOjM4NzY6c3RhdGljIGludCBpcDZfcm91dGVfaW5mb19jcmVhdGVfbmgoc3RydWN0IGZpYjZfaW5mbyAqcnQsXG5uZXQvaXB2Ni9yb3V0ZS5jLTM4NzctXHRcdFx0XHQgICAgc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXG4tLVxubmV0L2lwdjYvcm91dGUuYz0zOTUyPWludCBpcDZfcm91dGVfYWRkKHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnLCBnZnBfdCBnZnBfZmxhZ3MsXG4tLVxubmV0L2lwdjYvcm91dGUuYy0zOTYxLVxubmV0L2lwdjYvcm91dGUuYzozOTYyOlx0cnQgPSBpcDZfcm91dGVfaW5mb19jcmVhdGUoY2ZnLCBnZnBfZmxhZ3MsIGV4dGFjayk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTM5NjMtXHRpZiAoSVNfRVJSKHJ0KSlcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTM5NjUtXG5uZXQvaXB2Ni9yb3V0ZS5jOjM5NjY6XHRlcnIgPSBpcDZfcm91dGVfaW5mb19jcmVhdGVfbmgocnQsIGNmZywgZ2ZwX2ZsYWdzLCBleHRhY2spO1xubmV0L2lwdjYvcm91dGUuYy0zOTY3LVx0aWYgKGVycilcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ2NzU9c3RydWN0IGZpYjZfaW5mbyAqYWRkcmNvbmZfZjZpX2FsbG9jKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ3MDEtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ3MDI6XHRmNmkgPSBpcDZfcm91dGVfaW5mb19jcmVhdGUoXHUwMDI2Y2ZnLCBnZnBfZmxhZ3MsIGV4dGFjayk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ3MDMtXHRpZiAoSVNfRVJSKGY2aSkpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00NzA1LVxubmV0L2lwdjYvcm91dGUuYzo0NzA2Olx0ZXJyID0gaXA2X3JvdXRlX2luZm9fY3JlYXRlX25oKGY2aSwgXHUwMDI2Y2ZnLCBnZnBfZmxhZ3MsIGV4dGFjayk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ3MDctXHRpZiAoZXJyKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NTQxNT1zdGF0aWMgaW50IGlwNl9yb3V0ZV9tdWx0aXBhdGhfYWRkKHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNTQ3MS1cdFx0cl9jZmcuZmNfZmxhZ3MgfD0gKHJ0bmgtXHUwMDNlcnRuaF9mbGFncyBcdTAwMjYgUlROSF9GX09OTElOSyk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjU0NzI6XHRcdHJ0ID0gaXA2X3JvdXRlX2luZm9fY3JlYXRlKFx1MDAyNnJfY2ZnLCBHRlBfS0VSTkVMLCBleHRhY2spO1xubmV0L2lwdjYvcm91dGUuYy01NDczLVx0XHRpZiAoSVNfRVJSKHJ0KSkge1xuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNTQ3OC1cbm5ldC9pcHY2L3JvdXRlLmM6NTQ3OTpcdFx0ZXJyID0gaXA2X3JvdXRlX2luZm9fY3JlYXRlX25oKHJ0LCBcdTAwMjZyX2NmZywgR0ZQX0tFUk5FTCwgZXh0YWNrKTtcbm5ldC9pcHY2L3JvdXRlLmMtNTQ4MC1cdFx0aWYgKGVycikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTE4CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNoZWNraW5nIElQdjYgUm91dGluZyBUYWJsZSBGdW5jdGlvbnMqKgoKQWxyaWdodCwgbGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIGEgY291cGxlIG9mIHRoaW5ncyBoZXJlLiBJIHNlZSBgaXA2X3JvdXRlX2luZm9fY3JlYXRlYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoYXQmIzM5O3MgYXMgZXhwZWN0ZWQ7IGl0JiMzOTtzIGxpa2VseSBhbiBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24sIG5vdCBpbnRlbmRlZCBmb3IgZGlyZWN0IGV4dGVybmFsIHVzZS4gTm93LCBJIGhhdmUgdG8gbWFrZSBzdXJlIGBpcDZfcm91dGVfYWRkYCBpc24mIzM5O3Qgc3RhdGljLCBjb3JyZWN0PyBIbW0sIGxldCYjMzk7cyBqdXN0IGRvdWJsZSBjaGVjayB0aGF0IG9uZS4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIGlmIHRoYXQgZnVuY3Rpb24gaXMgZXhwb3NlZCBwdWJsaWNseS4gVGhhdCB3b3VsZCBtYWtlIHRoZSBmdW5jdGlvbiBtdWNoIG1vcmUgdXNlZnVsIGlmIGl0JiMzOTtzIGV4dGVybmFsLCBhbmQgaWYgaXQmIzM5O3MgaW50ZXJuYWwsIGl0IGNvdWxkIHN1Z2dlc3QgYSBwb3NzaWJsZSBlcnJvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXA2X3JvdXRlX2FkZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9pcDZfcm91dGUuaD0xMjM9aW50IGlwdjZfcm91dGVfaW9jdGwoc3RydWN0IG5ldCAqbmV0LCB1bnNpZ25lZCBpbnQgY21kLFxuLS1cbmluY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oLTEyNS1cbmluY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oOjEyNjppbnQgaXA2X3JvdXRlX2FkZChzdHJ1Y3QgZmliNl9jb25maWcgKmNmZywgZ2ZwX3QgZ2ZwX2ZsYWdzLFxuaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmgtMTI3LVx0XHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYz0yNDc3PWFkZHJjb25mX3ByZWZpeF9yb3V0ZShzdHJ1Y3QgaW42X2FkZHIgKnBmeCwgaW50IHBsZW4sIHUzMiBtZXRyaWMsXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy0yNTAzLVxubmV0L2lwdjYvYWRkcmNvbmYuYzoyNTA0Olx0aXA2X3JvdXRlX2FkZChcdTAwMjZjZmcsIGdmcF9mbGFncywgTlVMTCk7XG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI1MDUtfVxuLS1cbm5ldC9pcHY2L2FkZHJjb25mLmM9MjU1Mz1zdGF0aWMgdm9pZCBhZGRyY29uZl9hZGRfbXJvdXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy0yNTY3LVxubmV0L2lwdjYvYWRkcmNvbmYuYzoyNTY4Olx0aXA2X3JvdXRlX2FkZChcdTAwMjZjZmcsIEdGUF9LRVJORUwsIE5VTEwpO1xubmV0L2lwdjYvYWRkcmNvbmYuYy0yNTY5LX1cbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTM4NzY9c3RhdGljIGludCBpcDZfcm91dGVfaW5mb19jcmVhdGVfbmgoc3RydWN0IGZpYjZfaW5mbyAqcnQsXG4tLVxubmV0L2lwdjYvcm91dGUuYy0zOTUxLVxubmV0L2lwdjYvcm91dGUuYzozOTUyOmludCBpcDZfcm91dGVfYWRkKHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnLCBnZnBfdCBnZnBfZmxhZ3MsXG5uZXQvaXB2Ni9yb3V0ZS5jLTM5NTMtXHRcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NDQxMz1zdGF0aWMgc3RydWN0IGZpYjZfaW5mbyAqcnQ2X2FkZF9yb3V0ZV9pbmZvKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ0MzktXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ0NDA6XHRpcDZfcm91dGVfYWRkKFx1MDAyNmNmZywgR0ZQX0FUT01JQywgTlVMTCk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ0NDEtXG4tLVxubmV0L2lwdjYvcm91dGUuYz00NDc4PXN0cnVjdCBmaWI2X2luZm8gKnJ0Nl9hZGRfZGZsdF9yb3V0ZXIoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDUwMC1cbm5ldC9pcHY2L3JvdXRlLmM6NDUwMTpcdGlmICghaXA2X3JvdXRlX2FkZChcdTAwMjZjZmcsIEdGUF9BVE9NSUMsIE5VTEwpKSB7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ1MDItXHRcdHN0cnVjdCBmaWI2X3RhYmxlICp0YWJsZTtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ1Nzg9aW50IGlwdjZfcm91dGVfaW9jdGwoc3RydWN0IG5ldCAqbmV0LCB1bnNpZ25lZCBpbnQgY21kLCBzdHJ1Y3QgaW42X3J0bXNnICpydG1zZylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ1OTQtXHRcdFx0Y2ZnLmZjX21ldHJpYyA9IElQNl9SVF9QUklPX1VTRVI7XG5uZXQvaXB2Ni9yb3V0ZS5jOjQ1OTU6XHRcdGVyciA9IGlwNl9yb3V0ZV9hZGQoXHUwMDI2Y2ZnLCBHRlBfS0VSTkVMLCBOVUxMKTtcbm5ldC9pcHY2L3JvdXRlLmMtNDU5Ni1cdFx0YnJlYWs7XG4tLVxubmV0L2lwdjYvcm91dGUuYz01NjYxPXN0YXRpYyBpbnQgaW5ldDZfcnRtX25ld3JvdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNTY3Ni1cdGVsc2Vcbm5ldC9pcHY2L3JvdXRlLmM6NTY3NzpcdFx0cmV0dXJuIGlwNl9yb3V0ZV9hZGQoXHUwMDI2Y2ZnLCBHRlBfS0VSTkVMLCBleHRhY2spO1xubmV0L2lwdjYvcm91dGUuYy01Njc4LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY1MQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipGb2N1c2luZyBvbiBJUHY2IFJvdXRpbmcgYW5kIEZJQiBDcmVhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGVzZSBzeW1ib2xzOiBgaXA2X3JvdXRlX2FkZGAgYW5kIGBmaWJfY3JlYXRlX2luZm9gLiBNeSBndXQgdGVsbHMgbWUgdGhlc2UgYXJlIGNlbnRyYWwgdG8gdW5kZXJzdGFuZGluZyBob3cgSVB2NiByb3V0ZXMgYXJlIGFkZGVkIGFuZCBob3cgdGhlIEZvcndhcmRpbmcgSW5mb3JtYXRpb24gQmFzZSAoRklCKSBpcyBjb25zdHJ1Y3RlZCwgd2hpY2ggaXMgcmlnaHQgd2hlcmUgSSB3YW50IHRvIGJlLiBgaXA2X3JvdXRlX2FkZGAgc2NyZWFtcyAmIzM0O2VudHJ5IHBvaW50IGZvciByb3V0aW5nIHRhYmxlIHVwZGF0ZXMmIzM0OyDigJMgYSBwZXJmZWN0IGNhbmRpZGF0ZSBmb3IgZGVlcGVyIGFuYWx5c2lzLiBCdXQgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoZSBgZmliX2NyZWF0ZV9pbmZvYCBzdHJ1Y3R1cmUsIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IGlmIGl0JiMzOTtzIGRlY2xhcmVkIHdpdGggYHN0YXRpY2AuIElmIG5vdCwgaXQgbWVhbnMgdGhpcyBzdHJ1Y3QgaXMgcG90ZW50aWFsbHkgdXNlZCAob3IgY2FuIGJlKSBpbiBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLCB3aGljaCB3b3VsZCBtYWtlIGl0IGV2ZW4gbW9yZSB2YWx1YWJsZSB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcnBsYXkgb2Ygcm91dGluZyB0YWJsZSBtYW5pcHVsYXRpb24gYW5kIGRhdGEgc3RydWN0dXJlcy4gSXQgY291bGQgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgbW9yZSB0aGFuIGp1c3QgdGhpcyBsb2NhbGl6ZWQgcm91dGluZyBmdW5jdGlvbiwgYW5kIHVuZGVyc3RhbmRpbmcgdGhpcyBgZmliX2NyZWF0ZV9pbmZvYCBzdHJ1Y3R1cmUmIzM5O3Mgc2NvcGUgb2YgaW5mbHVlbmNlIHdpbGwgYmUgaW5zdHJ1bWVudGFsIGluIG1hcHBpbmcgdGhlIHdob2xlIGFyY2hpdGVjdHVyZS4gU28sIGxldCYjMzk7cyBjaGVjayBmb3IgdGhhdCBub24tc3RhdGljIHByb3BlcnR5IGZpcnN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmaWJfY3JlYXRlX2luZm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZmliX2xvb2t1cC5oPTM4PXZvaWQgZmliX3JlbGVhc2VfaW5mbyhzdHJ1Y3QgZmliX2luZm8gKik7XG5uZXQvaXB2NC9maWJfbG9va3VwLmg6Mzk6c3RydWN0IGZpYl9pbmZvICpmaWJfY3JlYXRlX2luZm8oc3RydWN0IGZpYl9jb25maWcgKmNmZyxcbm5ldC9pcHY0L2ZpYl9sb29rdXAuaC00MC1cdFx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuLS1cbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYz0xMzUyPXN0YXRpYyBib29sIGZpYl92YWxpZF9wcmVmc3JjKHN0cnVjdCBmaWJfY29uZmlnICpjZmcsIF9fYmUzMiBmaWJfcHJlZnNyYylcbi0tXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMTM3NS1cbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYzoxMzc2OnN0cnVjdCBmaWJfaW5mbyAqZmliX2NyZWF0ZV9pbmZvKHN0cnVjdCBmaWJfY29uZmlnICpjZmcsXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMTM3Ny1cdFx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L2lwdjQvZmliX3RyaWUuYz0xMTk0PWludCBmaWJfdGFibGVfaW5zZXJ0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZpYl90YWJsZSAqdGIsXG4tLVxubmV0L2lwdjQvZmliX3RyaWUuYy0xMjExLVxubmV0L2lwdjQvZmliX3RyaWUuYzoxMjEyOlx0ZmkgPSBmaWJfY3JlYXRlX2luZm8oY2ZnLCBleHRhY2spO1xubmV0L2lwdjQvZmliX3RyaWUuYy0xMjEzLVx0aWYgKElTX0VSUihmaSkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzMwNAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIGBmaWJfY3JlYXRlX2luZm9gIGlzbiYjMzk7dCBzdGF0aWMsIHdoaWNoIG1ha2VzIGl0IGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24uIFNhbWUgd2l0aCBgaXA2X3JvdXRlX2FkZGAuIEFuZCwgaGFuZyBvbiwgYGlwX2ZpYl9tZXRyaWNzX2luaXRgIGlzIGFsc28gbm9uLXN0YXRpYywgc28gdGhhdCYjMzk7cyBhbm90aGVyIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIHBvaW50LgoKTm93LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQgaGVyZS4gQWgsIGBDT05GSUdfSU5FVGAgc2hvdWxkIGRvIHRoZSB0cmljay4gQWxyaWdodCwgd2FpdCBhIHNlY29uZC4uLiBgUlRBWF9BRFZNU1NgLi4uIHRoYXQmIzM5O3MgcmVsYXRlZCB0byBUQ1AgTWF4aW11bSBTZWdtZW50IFNpemUuIEhtbSwgaXMgdGhlcmUgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbiBqdXN0IGZvciBgUlRBWF9BRFZNU1NgPyBOb3BlLCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgc3RhbmRhcmQgbmV0bGluayBhdHRyaWJ1dGUuCgpTbywgdGhlIGNydXggb2YgdGhpcyBwYXRjaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlOiBpdCYjMzk7cyBhZGRpbmcgYSBjaGVjayB0byByZWplY3QgaW52YWxpZCBgUlRBWF9BRFZNU1NgIHZhbHVlcyBpZiB0aGV5IGZhbGwgYmVsb3cgYFRDUF9NSU5fTVNTYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgY2hhbmdlIHRoYXQgd2FycmFudHMgc29tZSBmdXp6aW5nLiBMZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYFRDUF9NSU5fTVNTYCBtYWNybyBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VENQX01JTl9NU1MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvdGNwLmg9Njg9dm9pZCB0Y3BfdGltZV93YWl0KHN0cnVjdCBzb2NrICpzaywgaW50IHN0YXRlLCBpbnQgdGltZW8pO1xuLS1cbmluY2x1ZGUvbmV0L3RjcC5oLTgxLS8qIE1pbmltYWwgYWNjZXB0ZWQgTVNTLiBJdCBpcyAoNjAmIzQzOzYwJiM0Mzs4KSAtICgyMCYjNDM7MjApLiAqL1xuaW5jbHVkZS9uZXQvdGNwLmg6ODI6I2RlZmluZSBUQ1BfTUlOX01TU1x0XHQ4OFVcbmluY2x1ZGUvbmV0L3RjcC5oLTgzLVxuLS1cbm5ldC9pcHY0L21ldHJpY3MuYz0xMD1zdGF0aWMgaW50IGlwX21ldHJpY3NfY29udmVydChzdHJ1Y3QgbmxhdHRyICpmY19teCxcbi0tXG5uZXQvaXB2NC9tZXRyaWNzLmMtNDYtXHRcdH1cbm5ldC9pcHY0L21ldHJpY3MuYzo0NzpcdFx0aWYgKHR5cGUgPT0gUlRBWF9BRFZNU1MgXHUwMDI2XHUwMDI2IHZhbCBcdTAwMjZcdTAwMjYgdmFsIFx1MDAzYyBUQ1BfTUlOX01TUykge1xubmV0L2lwdjQvbWV0cmljcy5jLTQ4LVx0XHRcdE5MX1NFVF9FUlJfTVNHX0FUVFJfRk1UKGV4dGFjaywgbmxhLFxubmV0L2lwdjQvbWV0cmljcy5jLTQ5LVx0XHRcdFx0XHRcdFwmIzM0O0ludmFsaWQgYWR2bXNzLCBtdXN0IGJlIDAgb3IgXHUwMDNlPSAldVwmIzM0Oyxcbm5ldC9pcHY0L21ldHJpY3MuYzo1MDpcdFx0XHRcdFx0XHRUQ1BfTUlOX01TUyk7XG5uZXQvaXB2NC9tZXRyaWNzLmMtNTEtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxubmV0L2lwdjQvdGNwLmM9MzM2MT1pbnQgdGNwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNrLCBpbnQgZmxhZ3MpXG4tLVxubmV0L2lwdjQvdGNwLmMtMzQ0NC1cdGluZXRfY3NrX2RlbGFja19pbml0KHNrKTtcbm5ldC9pcHY0L3RjcC5jOjM0NDU6XHQvKiBJbml0aWFsaXplIHJjdl9tc3MgdG8gVENQX01JTl9NU1MgdG8gYXZvaWQgZGl2aXNpb24gYnkgMFxubmV0L2lwdjQvdGNwLmMtMzQ0Ni1cdCAqIGlzc3VlIGluIF9fdGNwX3NlbGVjdF93aW5kb3coKVxubmV0L2lwdjQvdGNwLmMtMzQ0Ny1cdCAqL1xubmV0L2lwdjQvdGNwLmM6MzQ0ODpcdGljc2stXHUwMDNlaWNza19hY2sucmN2X21zcyA9IFRDUF9NSU5fTVNTO1xubmV0L2lwdjQvdGNwLmMtMzQ0OS1cdG1lbXNldChcdTAwMjZ0cC1cdTAwM2VyeF9vcHQsIDAsIHNpemVvZih0cC1cdTAwM2VyeF9vcHQpKTtcbi0tXG5uZXQvaXB2NC90Y3AuYz0zODIxPWludCB0Y3Bfc29ja19zZXRfbWF4c2VnKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbClcbi0tXG5uZXQvaXB2NC90Y3AuYy0zODI2LVx0ICovXG5uZXQvaXB2NC90Y3AuYzozODI3Olx0aWYgKHZhbCBcdTAwMjZcdTAwMjYgKHZhbCBcdTAwM2MgVENQX01JTl9NU1MgfHwgdmFsIFx1MDAzZSBNQVhfVENQX1dJTkRPVykpXG5uZXQvaXB2NC90Y3AuYy0zODI4LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz0yMjc9c3RhdGljIHZvaWQgdGNwX21lYXN1cmVfcmN2X21zcyhzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtMjkxLVx0XHQgICAgICovXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzoyOTI6XHRcdCAgICAobGVuIFx1MDAzZT0gVENQX01JTl9NU1MgJiM0Mzsgc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpIFx1MDAyNlx1MDAyNlxubmV0L2lwdjQvdGNwX2lucHV0LmMtMjkzLVx0XHQgICAgICEodGNwX2ZsYWdfd29yZCh0Y3BfaGRyKHNrYikpIFx1MDAyNiBUQ1BfUkVNTkFOVCkpKSB7XG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmM9ODA2PXZvaWQgdGNwX2luaXRpYWxpemVfcmN2X21zcyhzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtODEyLVx0aGludCA9IG1pbihoaW50LCBUQ1BfTVNTX0RFRkFVTFQpO1xubmV0L2lwdjQvdGNwX2lucHV0LmM6ODEzOlx0aGludCA9IG1heChoaW50LCBUQ1BfTUlOX01TUyk7XG5uZXQvaXB2NC90Y3BfaW5wdXQuYy04MTQtXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmM9Mjk1OT1zdGF0aWMgdm9pZCBtcHRjcF9kb19mYXN0Y2xvc2Uoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jLTI5ODItXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoyOTgzOlx0XHQvKiBJbml0aWFsaXplIHJjdl9tc3MgdG8gVENQX01JTl9NU1MgdG8gYXZvaWQgZGl2aXNpb24gYnkgMFxubmV0L21wdGNwL3Byb3RvY29sLmMtMjk4NC1cdFx0ICogaXNzdWUgaW4gX190Y3Bfc2VsZWN0X3dpbmRvdygpLCBzZWUgdGNwX2Rpc2Nvbm5lY3QoKS5cbm5ldC9tcHRjcC9wcm90b2NvbC5jLTI5ODUtXHRcdCAqL1xubmV0L21wdGNwL3Byb3RvY29sLmM6Mjk4NjpcdFx0aW5ldF9jc2soc3NrKS1cdTAwM2VpY3NrX2Fjay5yY3ZfbXNzID0gVENQX01JTl9NU1M7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yOTg3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Nzk3CgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIGNoZWNrIHdpdGhpbiBgaXBfbWV0cmljc19jb252ZXJ0YCwgd2hpY2ggZ2V0cyBpbnZva2VkIGR1cmluZyByb3V0ZSBjcmVhdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyByZWplY3Rpbmcgcm91dGVzIHdoZXJlIHRoZSBgUlRBWF9BRFZNU1NgIHZhbHVlIGlzIGxlc3MgdGhhbiA4OC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgaW1wb3J0YW50bHksIGl0JiMzOTtzIHJlYWNoYWJsZSB2aWEgYSBuZXRsaW5rIHJvdXRlIGNyZWF0aW9uLiBUaGF0IG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBnaXZlbiBteSBleHBlcmllbmNlLgoKTXkgZm9jdXMgc2hvdWxkIGJlIG9uIHVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQg4oCTIEkgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgYGlwX2ZpYl9tZXRyaWNzX2luaXRgLCBgZmliX2NyZWF0ZV9pbmZvYCwgYW5kIGBpcDZfcm91dGVfYWRkYCB0byBncmFzcCBob3cgdGhpcyBuZXcgY2hlY2sgaW50ZXJhY3RzIHdpdGggdGhlIGV4aXN0aW5nIHJvdXRlIG1hbmFnZW1lbnQgcm91dGluZXMuIFVuZGVyc3RhbmRpbmcgd2hlcmUgdGhlIGBSVEFYX0FEVk1TU2AgdmFsdWUgb3JpZ2luYXRlcyBpcyBjcnVjaWFsIGZvciBjcmFmdGluZyBlZmZlY3RpdmUgZnV6emluZyBpbnB1dHMuIEkgYWxzbyBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIHRlc3Rpbmcgd2l0aCB0aGUgYElORVRgIGNvbmZpZ3VyYXRpb24gZW5hYmxlZCB0byBlbnN1cmUgdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMgYXJlIGV4ZXJjaXNlZC4KCkxldCYjMzk7cyBnZXQgdGhvc2UgcmVzdWx0cyBzZXQgdXAuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYmVzdCBhcHByb2FjaCB0byBmdXp6IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfZmliX21ldHJpY3NfaW5pdCYjMzQ7LAogICAgJiMzNDtmaWJfY3JlYXRlX2luZm8mIzM0OywKICAgICYjMzQ7aXA2X3JvdXRlX2FkZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgZnVuY3Rpb25hbCB2YWxpZGF0aW9uIGNoZWNrIGZvciB0aGUgUlRBWF9BRFZNU1MgbWV0cmljIGR1cmluZyBJUHY0IGFuZCBJUHY2IHJvdXRlIGNyZWF0aW9uLiBJdCByZWplY3RzIHJvdXRlcyB3aXRoIGFuIGFkdm1zcyB2YWx1ZSBsZXNzIHRoYW4gVENQX01JTl9NU1MgKDg4KS4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgcm91dGUgY29uZmlndXJhdGlvbiBhbmQgYWZmZWN0cyBjb3JlIG5ldHdvcmtpbmcgYmVoYXZpb3IsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9maWJfbWV0cmljc19pbml0JiMzNDssCiAgICAmIzM0O2ZpYl9jcmVhdGVfaW5mbyYjMzQ7LAogICAgJiMzNDtpcDZfcm91dGVfYWRkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBSVEFYX0FEVk1TUyBtZXRyaWMgZHVyaW5nIElQdjQgYW5kIElQdjYgcm91dGUgY3JlYXRpb24uIEl0IHJlamVjdHMgcm91dGVzIHdpdGggYW4gYWR2bXNzIHZhbHVlIGxlc3MgdGhhbiBUQ1BfTUlOX01TUyAoODgpLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayByb3V0ZSBjb25maWd1cmF0aW9uIGFuZCBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBiZWhhdmlvciwgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODoxODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIGBSVEFYX0FEVk1TU2AgbWV0cmljIHZhbHVlIGluIGBpcF9tZXRyaWNzX2NvbnZlcnRgLiBJdCB2ZXJpZmllcyB0aGF0IHRoZSB2YWx1ZSBpcyBlaXRoZXIgMCBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYFRDUF9NSU5fTVNTYCwgYW5kIHJldHVybnMgYC1FSU5WQUxgIGlmIGl0IGlzIG5vdC4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgaXQgZG9lcyBub3QgZXhwb3NlIGFueSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBBbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGJlIGxvZ2ljIGVycm9ycyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgY292ZXJlZCBieSBzdGFuZGFyZCB0ZXN0aW5nIGFuZCBLQVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgM2IwOGFkYWQ4ZTU1YTBmNWZkMTFhYjYyMTMyYmU4YTMzZGJhZGM2OApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDE4OjE3OjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbWV0cmljcy5jIGIvbmV0L2lwdjQvbWV0cmljcy5jCmluZGV4IGFkNDA3NjJhOGIzODMuLmI5Yjk3YTBhNTEyNmIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L21ldHJpY3MuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9tZXRyaWNzLmMKQEAgLTQ0LDYgJiM0Mzs0NCwxMiBAQCBzdGF0aWMgaW50IGlwX21ldHJpY3NfY29udmVydChzdHJ1Y3QgbmxhdHRyICpmY19teCwKIAkJCX0KIAkJCXZhbCA9IG5sYV9nZXRfdTMyKG5sYSk7CiAJCX0KJiM0MzsJCWlmICh0eXBlID09IFJUQVhfQURWTVNTICZhbXA7JmFtcDsgdmFsICZhbXA7JmFtcDsgdmFsICZsdDsgVENQX01JTl9NU1MpIHsKJiM0MzsJCQlOTF9TRVRfRVJSX01TR19BVFRSX0ZNVChleHRhY2ssIG5sYSwKJiM0MzsJCQkJCQkmIzM0O0ludmFsaWQgYWR2bXNzLCBtdXN0IGJlIDAgb3IgJmd0Oz0gJXUmIzM0OywKJiM0MzsJCQkJCQlUQ1BfTUlOX01TUyk7CiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQl9CiAJCWlmICh0eXBlID09IFJUQVhfQURWTVNTICZhbXA7JmFtcDsgdmFsICZndDsgNjU1MzUgLSA0MCkKIAkJCXZhbCA9IDY1NTM1IC0gNDA7CiAJCWlmICh0eXBlID09IFJUQVhfTVRVICZhbXA7JmFtcDsgdmFsICZndDsgNjU1MzUgLSAxNSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjUKCQkJCQkJCW91dHB1dDogMTU3CgkJCQkJCQl0aG91Z2h0czogMjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIGNhbiBzZWUsIHRoaXMgcGF0Y2ggaXMgc3RyYWlnaHRmb3J3YXJkLiBJbiB0aGUgYGlwX21ldHJpY3NfY29udmVydGAgZnVuY3Rpb24gd2l0aGluIGBuZXQvaXB2NC9tZXRyaWNzLmNgLCBpdCYjMzk7cyBhZGRpbmcgYSBzcGVjaWZpYyBjaGVjay4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyB2YWxpZGF0aW5nIGEgTmV0bGluayBhdHRyaWJ1dGUgdmFsdWUsIGB2YWxgLCBhc3NvY2lhdGVkIHdpdGggYFJUQVhfQURWTVNTYC4gVGhlIGNoZWNrIGlzIGRlc2lnbmVkIHRvIGVuc3VyZSB0aGF0IGlmIGBSVEFYX0FEVk1TU2AgaXMgcHJlc2VudCAoYHR5cGUgPT0gUlRBWF9BRFZNU1NgKSwgYW5kIHRoZSB2YWx1ZSBgdmFsYCBleGlzdHMgKGB2YWxgKSwgdGhlbiBgdmFsYCBoYXMgdG8gYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBUQ1BfTUlOX01TU2AuIElmIG5vdCwgaXQgcmV0dXJucyBgLUVJTlZBTGAuCgpFc3NlbnRpYWxseSwgaXQmIzM5O3MgYSBib3VuZHMgY2hlY2sgb24gdXNlci1wcm92aWRlZCBpbnB1dC4gSXQmIzM5O3MgdXNpbmcgYG5sYV9nZXRfdTMyYCB0byByZXRyaWV2ZSB0aGUgdmFsdWUuIENyaXRpY2FsbHksIHRoZXJlJiMzOTtzIG5vIGV2aWRlbmNlIG9mIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB1c2VkIGhlcmUuIEl0JiMzOTtzIHNpbXBseSB2ZXJpZnlpbmcgdGhlIHZhbGlkaXR5IG9mIHRoZSBwcm92aWRlZCB2YWx1ZS4KCkxvb2tpbmcgYXQgdGhlIGNvZGUgc25pcHBldCBhZ2FpbjoKCmBgYGMKCQlpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyAmYW1wOyZhbXA7IHZhbCAmYW1wOyZhbXA7IHZhbCAmbHQ7IFRDUF9NSU5fTVNTKSB7CgkJCU5MX1NFVF9FUlJfTVNHX0FUVFJfRk1UKGV4dGFjaywgbmxhLAoJCQkJCQkmIzM0O0ludmFsaWQgYWR2bXNzLCBtdXN0IGJlIDAgb3IgJmd0Oz0gJXUmIzM0OywKCQkJCQkJVENQX01JTl9NU1MpOwoJCQlyZXR1cm4gLUVJTlZBTDsKCQl9CmBgYAoKVGhpcyBjb25maXJtcyBteSBpbml0aWFsIGltcHJlc3Npb24uIEl0JiMzOTtzIGEgY2xlYW4gdmFsaWRhdGlvbjsgdGhlIGNvZGUgaXRzZWxmIGRlbW9uc3RyYXRlcyB0aGUgY2hlY2suIEdpdmVuIHRoaXMsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgLiBUaGlzIHBhdGNoIGRvZXMgbm90IHNlZW0gdG8gaW50cm9kdWNlIGFueSBLTVNBTiBjb25jZXJucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBgUlRBWF9BRFZNU1NgIG1ldHJpYyB2YWx1ZSBpbiBgaXBfbWV0cmljc19jb252ZXJ0YC4gSXQgdmVyaWZpZXMgdGhhdCB0aGUgdmFsdWUgaXMgZWl0aGVyIDAgb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBUQ1BfTUlOX01TU2AsIGFuZCByZXR1cm5zIGAtRUlOVkFMYCBpZiBpdCBpcyBub3QuIFRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGl0IGRvZXMgbm90IGV4cG9zZSBhbnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBiZSBsb2dpYyBlcnJvcnMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIGBSVEFYX0FEVk1TU2AgbWV0cmljIHZhbHVlIGluIGBpcF9tZXRyaWNzX2NvbnZlcnRgLiBJdCB2ZXJpZmllcyB0aGF0IHRoZSB2YWx1ZSBpcyBlaXRoZXIgMCBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYFRDUF9NSU5fTVNTYCwgYW5kIHJldHVybnMgYC1FSU5WQUxgIGlmIGl0IGlzIG5vdC4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgaXQgZG9lcyBub3QgZXhwb3NlIGFueSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBBbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGJlIGxvZ2ljIGVycm9ycyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgY292ZXJlZCBieSBzdGFuZGFyZCB0ZXN0aW5nIGFuZCBLQVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6MTc6NTEuNDAzODU5NjY1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ2MjEwNjQ3NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX2ZpYl9tZXRyaWNzX2luaXRcIixcbiAgICBcImZpYl9jcmVhdGVfaW5mb1wiLFxuICAgIFwiaXA2X3JvdXRlX2FkZFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBgUlRBWF9BRFZNU1NgIG1ldHJpYyB2YWx1ZSBpbiBgaXBfbWV0cmljc19jb252ZXJ0YC4gSXQgdmVyaWZpZXMgdGhhdCB0aGUgdmFsdWUgaXMgZWl0aGVyIDAgb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBUQ1BfTUlOX01TU2AsIGFuZCByZXR1cm5zIGAtRUlOVkFMYCBpZiBpdCBpcyBub3QuIFRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGl0IGRvZXMgbm90IGV4cG9zZSBhbnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBiZSBsb2dpYyBlcnJvcnMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIFJUQVhfQURWTVNTIG1ldHJpYyBkdXJpbmcgSVB2NCBhbmQgSVB2NiByb3V0ZSBjcmVhdGlvbi4gSXQgcmVqZWN0cyByb3V0ZXMgd2l0aCBhbiBhZHZtc3MgdmFsdWUgbGVzcyB0aGFuIFRDUF9NSU5fTVNTICg4OCkuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIHJvdXRlIGNvbmZpZ3VyYXRpb24gYW5kIGFmZmVjdHMgY29yZSBuZXR3b3JraW5nIGJlaGF2aW9yLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxNzo1MS40MDM4NjgzOTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzMxNzExNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNiMDhhZGFkOGU1NWEwZjVmZDExYWI2MjEzMmJlOGEzM2RiYWRjNjhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMTMgMTg6MTc6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbWV0cmljcy5jIGIvbmV0L2lwdjQvbWV0cmljcy5jXFxuaW5kZXggYWQ0MDc2MmE4YjM4My4uYjliOTdhMGE1MTI2YiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9tZXRyaWNzLmNcXG4rKysgYi9uZXQvaXB2NC9tZXRyaWNzLmNcXG5AQCAtNDQsNiArNDQsMTIgQEAgc3RhdGljIGludCBpcF9tZXRyaWNzX2NvbnZlcnQoc3RydWN0IG5sYXR0ciAqZmNfbXgsXFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0dmFsID0gbmxhX2dldF91MzIobmxhKTtcXG4gXFx0XFx0fVxcbitcXHRcXHRpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyBcXHUwMDI2XFx1MDAyNiB2YWwgXFx1MDAyNlxcdTAwMjYgdmFsIFxcdTAwM2MgVENQX01JTl9NU1MpIHtcXG4rXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUl9GTVQoZXh0YWNrLCBubGEsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcXCJJbnZhbGlkIGFkdm1zcywgbXVzdCBiZSAwIG9yIFxcdTAwM2U9ICV1XFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0VENQX01JTl9NU1MpO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0fVxcbiBcXHRcXHRpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyBcXHUwMDI2XFx1MDAyNiB2YWwgXFx1MDAzZSA2NTUzNSAtIDQwKVxcbiBcXHRcXHRcXHR2YWwgPSA2NTUzNSAtIDQwO1xcbiBcXHRcXHRpZiAodHlwZSA9PSBSVEFYX01UVSBcXHUwMDI2XFx1MDAyNiB2YWwgXFx1MDAzZSA2NTUzNSAtIDE1KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxNzo1MS44Mzc4NzI4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDYyMjYxMzk5MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX2ZpYl9tZXRyaWNzX2luaXRcIixcbiAgICBcImZpYl9jcmVhdGVfaW5mb1wiLFxuICAgIFwiaXA2X3JvdXRlX2FkZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBSVEFYX0FEVk1TUyBtZXRyaWMgZHVyaW5nIElQdjQgYW5kIElQdjYgcm91dGUgY3JlYXRpb24uIEl0IHJlamVjdHMgcm91dGVzIHdpdGggYW4gYWR2bXNzIHZhbHVlIGxlc3MgdGhhbiBUQ1BfTUlOX01TUyAoODgpLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayByb3V0ZSBjb25maWd1cmF0aW9uIGFuZCBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBiZWhhdmlvciwgc28gaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2IwOGFkYWQ4ZTU1YTBmNWZkMTFhYjYyMTMyYmU4YTMzZGJhZGM2OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDE4OjE3OjUwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbWV0cmljcy5jIGIvbmV0L2lwdjQvbWV0cmljcy5jXG5pbmRleCBhZDQwNzYyYThiMzgzLi5iOWI5N2EwYTUxMjZiIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvbWV0cmljcy5jXG4rKysgYi9uZXQvaXB2NC9tZXRyaWNzLmNcbkBAIC00NCw2ICs0NCwxMiBAQCBzdGF0aWMgaW50IGlwX21ldHJpY3NfY29udmVydChzdHJ1Y3QgbmxhdHRyICpmY19teCxcbiBcdFx0XHR9XG4gXHRcdFx0dmFsID0gbmxhX2dldF91MzIobmxhKTtcbiBcdFx0fVxuK1x0XHRpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyBcdTAwMjZcdTAwMjYgdmFsIFx1MDAyNlx1MDAyNiB2YWwgXHUwMDNjIFRDUF9NSU5fTVNTKSB7XG4rXHRcdFx0TkxfU0VUX0VSUl9NU0dfQVRUUl9GTVQoZXh0YWNrLCBubGEsXG4rXHRcdFx0XHRcdFx0XCJJbnZhbGlkIGFkdm1zcywgbXVzdCBiZSAwIG9yIFx1MDAzZT0gJXVcIixcbitcdFx0XHRcdFx0XHRUQ1BfTUlOX01TUyk7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbiBcdFx0aWYgKHR5cGUgPT0gUlRBWF9BRFZNU1MgXHUwMDI2XHUwMDI2IHZhbCBcdTAwM2UgNjU1MzUgLSA0MClcbiBcdFx0XHR2YWwgPSA2NTUzNSAtIDQwO1xuIFx0XHRpZiAodHlwZSA9PSBSVEFYX01UVSBcdTAwMjZcdTAwMjYgdmFsIFx1MDAzZSA2NTUzNSAtIDE1KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6MTc6NTEuODM3ODc0MjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDY3NDM5MTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYFJUQVhfQURWTVNTYCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvaXB2NC9tZXRyaWNzLmNgLiBJdCdzIHN0cmFpZ2h0Zm9yd2FyZDogdGhleSd2ZSBhZGRlZCBhIHZhbGlkYXRpb24gY2hlY2sgd2l0aGluIGBpcF9tZXRyaWNzX2NvbnZlcnRgIGZvciBgUlRBWF9BRFZNU1NgLiBUaGUgbmV3IGNvZGUgaXMgZGVzaWduZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGFkdmFuY2VkIE1TUyB2YWx1ZSAoYHZhbGApIGlzIGVpdGhlciB6ZXJvIG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgVENQX01JTl9NU1NgLiBUaGUgc3BlY2lmaWMgY2hlY2sgdXNlcyBgTkxfU0VUX0VSUl9NU0dfQVRUUl9GTVRgIHRvIHNldCBhbiBlcnJvciBtZXNzYWdlIGlmIHRoZSB2YWx1ZSBpcyBpbnZhbGlkLiBUaGF0J3MgZ29vZCwgcHJldmVudHMgc2lsbHkgY29uZmlndXJhdGlvbnMuXG5cblRoZSBjb3JlIG9mIHRoaXMgaXMgdGhhdCB0aGUgY29kZSBsb29rcyBsaWtlOlxuXG5gYGBjXG5cdFx0aWYgKHR5cGUgPT0gUlRBWF9BRFZNU1MgXHUwMDI2XHUwMDI2IHZhbCBcdTAwMjZcdTAwMjYgdmFsIFx1MDAzYyBUQ1BfTUlOX01TUykge1xuXHRcdFx0TkxfU0VUX0VSUl9NU0dfQVRUUl9GTVQoZXh0YWNrLCBubGEsXG5cdFx0XHRcdFx0XHRcIkludmFsaWQgYWR2bXNzLCBtdXN0IGJlIDAgb3IgXHUwMDNlPSAldVwiLFxuXHRcdFx0XHRcdFx0VENQX01JTl9NU1MpO1xuXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG5cdFx0fVxuYGBgXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBiZXR0ZXIuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBpcF9tZXRyaWNzX2NvbnZlcnRgIGl0c2VsZi4gV2hhdCBkb2VzIGl0IGFjdHVhbGx5IGRvPyBXaGVyZSBpcyBpdCAqdXNlZCo/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHdoYXQncyB0cmlnZ2VyaW5nIHRoaXMgY29udmVyc2lvbi4gS25vd2luZyB0aGUgY2FsbGluZyBjb250ZXh0cyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIGFuZCB3aGV0aGVyIGl0IGludHJvZHVjZXMgYW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIG9yIHJhY2UgY29uZGl0aW9ucy4gS25vd2luZyB3aGF0IGNhbGxzIHRoaXMgaXMga2V5LCBzbyBJJ2xsIGNoZWNrIHRoYXQgbmV4dC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIHZhbGlkYXRpb24gaXMgdHJpZ2dlcmVkIGF0IGFsbCByZWxldmFudCBwb2ludHMuIEknbGwgcHJvYmFibHkgYWxzbyBjaGVjayB0aGUgc3Vycm91bmRpbmcgY29kZSBmb3Igc2ltaWxhciBjaGVja3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxNzo1Ni45MDUzMTY2MzJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczMTg5NjIzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9tZXRyaWNzX2NvbnZlcnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbWV0cmljcy5jLTktXFxubmV0L2lwdjQvbWV0cmljcy5jOjEwOnN0YXRpYyBpbnQgaXBfbWV0cmljc19jb252ZXJ0KHN0cnVjdCBubGF0dHIgKmZjX214LFxcbm5ldC9pcHY0L21ldHJpY3MuYy0xMS1cXHRcXHRcXHQgICAgICBpbnQgZmNfbXhfbGVuLCB1MzIgKm1ldHJpY3MsXFxuLS1cXG5uZXQvaXB2NC9tZXRyaWNzLmM9NzI9c3RydWN0IGRzdF9tZXRyaWNzICppcF9maWJfbWV0cmljc19pbml0KHN0cnVjdCBubGF0dHIgKmZjX214LFxcbi0tXFxubmV0L2lwdjQvbWV0cmljcy5jLTg1LVxcbm5ldC9pcHY0L21ldHJpY3MuYzo4NjpcXHRlcnIgPSBpcF9tZXRyaWNzX2NvbnZlcnQoZmNfbXgsIGZjX214X2xlbiwgZmliX21ldHJpY3MtXFx1MDAzZW1ldHJpY3MsXFxubmV0L2lwdjQvbWV0cmljcy5jLTg3LVxcdFxcdFxcdFxcdCBleHRhY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxNzo1OC42MzcyMTc5OTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQzMTIzNTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJUCBGSUIgTWV0cmljcyBJbml0aWFsaXphdGlvbioqXG5cblJpZ2h0LCBzbyBgaXBfbWV0cmljc19jb252ZXJ0YCBpcyBjbGVhcmx5IGEgZnVuY3Rpb24gaW52b2x2ZWQgaW4gY29udmVydGluZyBzb21lIHNvcnQgb2YgSVAgbWV0cmljcywgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgYnkgYGlwX2ZpYl9tZXRyaWNzX2luaXRgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MgdHJhY2UgdGhpcyBiYWNrLiBXaGVyZSBpcyBgaXBfZmliX21ldHJpY3NfaW5pdGAgYWN0dWFsbHkgYmVpbmcgaW52b2tlZD8gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBncmFwaCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgcGljdHVyZSBvZiB0aGUgY29udGV4dCBzdXJyb3VuZGluZyB0aG9zZSBtZXRyaWNzIGNvbnZlcnNpb25zLiBLbm93aW5nIHdoZXJlIGBpcF9maWJfbWV0cmljc19pbml0YCBpcyBjYWxsZWQgaXMgdGhlIGNyaXRpY2FsIHBpZWNlIG9mIHRoaXMgcHV6emxlIHJpZ2h0IG5vdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4NCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjE4OjAxLjk4MDM0Mzk4MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODM3NDc5ODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX2ZpYl9tZXRyaWNzX2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvaXAuaD01MDk9c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaXBfc2tiX2RzdF9tdHUoc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxuaW5jbHVkZS9uZXQvaXAuaC01MjQtXFxuaW5jbHVkZS9uZXQvaXAuaDo1MjU6c3RydWN0IGRzdF9tZXRyaWNzICppcF9maWJfbWV0cmljc19pbml0KHN0cnVjdCBubGF0dHIgKmZjX214LCBpbnQgZmNfbXhfbGVuLFxcbmluY2x1ZGUvbmV0L2lwLmgtNTI2LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuLS1cXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM9MTM3Nj1zdHJ1Y3QgZmliX2luZm8gKmZpYl9jcmVhdGVfaW5mbyhzdHJ1Y3QgZmliX2NvbmZpZyAqY2ZnLFxcbi0tXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE0MzQtXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjE0MzU6XFx0ZmktXFx1MDAzZWZpYl9tZXRyaWNzID0gaXBfZmliX21ldHJpY3NfaW5pdChjZmctXFx1MDAzZWZjX214LCBjZmctXFx1MDAzZWZjX214X2xlbiwgZXh0YWNrKTtcXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMTQzNi1cXHRpZiAoSVNfRVJSKGZpLVxcdTAwM2VmaWJfbWV0cmljcykpIHtcXG4tLVxcbm5ldC9pcHY0L21ldHJpY3MuYz0xMD1zdGF0aWMgaW50IGlwX21ldHJpY3NfY29udmVydChzdHJ1Y3QgbmxhdHRyICpmY19teCxcXG4tLVxcbm5ldC9pcHY0L21ldHJpY3MuYy03MS1cXG5uZXQvaXB2NC9tZXRyaWNzLmM6NzI6c3RydWN0IGRzdF9tZXRyaWNzICppcF9maWJfbWV0cmljc19pbml0KHN0cnVjdCBubGF0dHIgKmZjX214LFxcbm5ldC9pcHY0L21ldHJpY3MuYy03My1cXHRcXHRcXHRcXHRcXHRpbnQgZmNfbXhfbGVuLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz0zODA5PXN0YXRpYyBzdHJ1Y3QgZmliNl9pbmZvICppcDZfcm91dGVfaW5mb19jcmVhdGUoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTM4MzgtXFxubmV0L2lwdjYvcm91dGUuYzozODM5OlxcdHJ0LVxcdTAwM2VmaWI2X21ldHJpY3MgPSBpcF9maWJfbWV0cmljc19pbml0KGNmZy1cXHUwMDNlZmNfbXgsIGNmZy1cXHUwMDNlZmNfbXhfbGVuLFxcbm5ldC9pcHY2L3JvdXRlLmMtMzg0MC1cXHRcXHRcXHRcXHRcXHQgICAgICAgZXh0YWNrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6MTg6MDMuODE3ODM1OTgxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ5MjA1MDUzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSb3V0ZSBDcmVhdGlvbiBMb2dpYyBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIGhpdHRpbmcgc29tZSByb3V0ZSBjcmVhdGlvbiBsb2dpYyDigJMgc3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHdlJ3JlIHRvdWNoaW5nIG9uIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgdGhlIGBSVEFYX0FEVk1TU2AgbWV0cmljLiBUaGlzIGlzIGFsbCBraWNrZWQgb2ZmIGJ5IGNhbGxzIHRvIGBmaWJfY3JlYXRlX2luZm9gIGluIGBuZXQvaXB2NC9maWJfc2VtYW50aWNzLmNgIGFuZCBgaXA2X3JvdXRlX2luZm9fY3JlYXRlYCBpbiBgbmV0L2lwdjYvcm91dGUuY2Agd2hpY2gsIGlmIEkgcmVtZW1iZXIgY29ycmVjdGx5LCBhcmUgYm90aCBhY2Nlc3NpYmxlIHRocm91Z2ggbmV0bGluay5cblxuVGhlIHBhdGNoIHNlZW1zIHRvIGFkZCBhIGNoZWNrIGZvciBgUlRBWF9BRFZNU1NgLiBFc3NlbnRpYWxseSwgaXQncyByZWplY3Rpbmcgcm91dGVzIHdoZXJlIGBSVEFYX0FEVk1TU2AgaXMgbGVzcyB0aGFuIGBUQ1BfTUlOX01TU2AgKGlmIGBSVEFYX0FEVk1TU2AgaXMgZ3JlYXRlciB0aGFuIDApLCB3aGljaCBpcyBhIGdvb2QgZGVmZW5zaXZlIG1lYXN1cmUuIEZ1bmN0aW9uYWxseSwgdGhpcyBsb29rcyBsaWtlIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbk5vdywgd2hlcmUncyB0aGUgYmVzdCBwbGFjZSB0byBkaWcgaW4gdG8gdW5kZXJzdGFuZCB0aGlzIGluIG1vcmUgZGV0YWlsPyBJIG5lZWQgdG8gbG9vayBhdCBob3cgdGhlc2UgbWV0cmljcyBhcmUgaW5pdGlhbGl6ZWQgYW5kIGNvbnZlcnRlZC4gTGV0J3Mgc2VlLi4uIGBpcF9maWJfbWV0cmljc19pbml0YCBhbmQgYGlwX21ldHJpY3NfY29udmVydGAuIGBpcF9maWJfbWV0cmljc19pbml0YCBpcyBub24tc3RhdGljLCB3aGljaCBtYWtlcyBpdCBhIGdyZWF0IHRhcmdldCBzeW1ib2wuIGBpcF9tZXRyaWNzX2NvbnZlcnRgIGlzIHN0YXRpYywgd2hpY2ggaXMgbGVzcyB1c2VmdWwgZm9yIGV4dGVybmFsIGluc3BlY3Rpb24uIFNvIGBpcF9maWJfbWV0cmljc19pbml0YCBsb29rcyBsaWtlIGEgc3Ryb25nIGZvY3VzLiBBbG9uZyB3aXRoIHRoZSByb3V0ZSBjcmVhdGlvbiBmdW5jdGlvbnMgSSBtZW50aW9uZWQgZWFybGllciAoYGZpYl9jcmVhdGVfaW5mb2AgYW5kIGBpcDZfcm91dGVfaW5mb19jcmVhdGVgKSwgb2YgY291cnNlLlxuXG5JIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCB0aGlzIGNvZGUgcGF0aD8gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGBuZXQvaXB2NC9tZXRyaWNzLmNgIGZpbGUuLi4gQWgsIGxvb2tzIGxpa2UgaXQncyAqbm90KiB0aWVkIHRvIGBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRGAuIFNvLCBJJ20gZ29pbmcgdG8gYXNzdW1lIGl0J3MgYWx3YXlzIGNvbXBpbGVkIGZvciBJUHY0LCB3aGljaCBtZWFucyBhIHdpZGVyIGF0dGFjayBzdXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDc3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjE4OjEwLjMwOTg4OTE1NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzQyOTg1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZXRyaWNzLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtMTAtXFx0ICAgICB0Y3AubyB0Y3BfaW5wdXQubyB0Y3Bfb3V0cHV0Lm8gdGNwX3RpbWVyLm8gdGNwX2lwdjQubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTE6XFx0ICAgICB0Y3BfbWluaXNvY2tzLm8gdGNwX2NvbmcubyB0Y3BfbWV0cmljcy5vIHRjcF9mYXN0b3Blbi5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xMi1cXHQgICAgIHRjcF9yZWNvdmVyeS5vIHRjcF91bHAubyBcXFxcXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZS0xNi1cXHQgICAgIGluZXRfZnJhZ21lbnQubyBwaW5nLm8gaXBfdHVubmVsX2NvcmUubyBncmVfb2ZmbG9hZC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxNzpcXHQgICAgIG1ldHJpY3MubyBuZXRsaW5rLm8gbmV4dGhvcC5vIHVkcF90dW5uZWxfc3R1Yi5vXFxubmV0L2lwdjQvTWFrZWZpbGUtMTgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjE4OjEwLjM1MzMyMzk0OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MzI2OTgwODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgSVB2NCBDb21waWxhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBidWlsZCBjb25maWd1cmF0aW9uIHVuY29uZGl0aW9uYWxseSBpbmNsdWRlcyBJUHY0LiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgaXQgcmVseSBzb2xlbHkgb24gYENPTkZJR19JTkVUYCwgb3IgaXMgYENPTkZJR19JUF9ST1VURWAgYWxzbyBhIG5lY2Vzc2FyeSBkZXBlbmRlbmN5PyBBY3R1YWxseSwgd2FpdCBhIHNlY29uZCwgYENPTkZJR19JUF9ST1VURWAgaXNuJ3QgYSB2YWxpZCBvcHRpb24gaW4gdGhlIGNvbmZpZ3VyYXRpb247IGl0J3Mgc2ltcGx5IGZvbGRlZCBpbnRvIGBDT05GSUdfSU5FVGAuIFRoZXJlZm9yZSwgYENPTkZJR19JTkVUYCAqc2hvdWxkKiBiZSBzdWZmaWNpZW50IHRvIHNhdGlzZnkgdGhlIElQdjQgZGVwZW5kZW5jeS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGEgcXVpY2sgY2hlY2sgb2YgaG93IElQdjYgcm91dGluZyBpcyBoYW5kbGVkIHdpbGwgYmUgdXNlZnVsLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSBgbmV0L2lwdjYvcm91dGUuY2AgYW5kIHNwZWNpZmljYWxseSwgaG93IGBpcDZfcm91dGVfaW5mb19jcmVhdGVgIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBJUHY2IHJvdXRpbmcgY29udGV4dC4gVGhhdCBzaG91bGQgaGVscCBjb25maXJtIHRoYXQgdGhlIElQdjQgYmFzZSBhc3N1bXB0aW9uIGhvbGRzLCBvciB3aGV0aGVyIGZ1cnRoZXIgZGVwZW5kZW5jaWVzIGFyZSBuZWVkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzODksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxODoxMy45ODYwMjQ3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjYzNzE3NjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwNl9yb3V0ZV9pbmZvX2NyZWF0ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jPTM3NjI9c3RhdGljIGludCBmaWI2X2NvbmZpZ192YWxpZGF0ZShzdHJ1Y3QgZmliNl9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtMzgwOC1cXG5uZXQvaXB2Ni9yb3V0ZS5jOjM4MDk6c3RhdGljIHN0cnVjdCBmaWI2X2luZm8gKmlwNl9yb3V0ZV9pbmZvX2NyZWF0ZShzdHJ1Y3QgZmliNl9jb25maWcgKmNmZyxcXG5uZXQvaXB2Ni9yb3V0ZS5jLTM4MTAtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGdmcF90IGdmcF9mbGFncyxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtMzg3NS1cXG5uZXQvaXB2Ni9yb3V0ZS5jOjM4NzY6c3RhdGljIGludCBpcDZfcm91dGVfaW5mb19jcmVhdGVfbmgoc3RydWN0IGZpYjZfaW5mbyAqcnQsXFxubmV0L2lwdjYvcm91dGUuYy0zODc3LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZmliNl9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9Mzk1Mj1pbnQgaXA2X3JvdXRlX2FkZChzdHJ1Y3QgZmliNl9jb25maWcgKmNmZywgZ2ZwX3QgZ2ZwX2ZsYWdzLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy0zOTYxLVxcbm5ldC9pcHY2L3JvdXRlLmM6Mzk2MjpcXHRydCA9IGlwNl9yb3V0ZV9pbmZvX2NyZWF0ZShjZmcsIGdmcF9mbGFncywgZXh0YWNrKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTM5NjMtXFx0aWYgKElTX0VSUihydCkpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTM5NjUtXFxubmV0L2lwdjYvcm91dGUuYzozOTY2OlxcdGVyciA9IGlwNl9yb3V0ZV9pbmZvX2NyZWF0ZV9uaChydCwgY2ZnLCBnZnBfZmxhZ3MsIGV4dGFjayk7XFxubmV0L2lwdjYvcm91dGUuYy0zOTY3LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ2NzU9c3RydWN0IGZpYjZfaW5mbyAqYWRkcmNvbmZfZjZpX2FsbG9jKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNDcwMS1cXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ3MDI6XFx0ZjZpID0gaXA2X3JvdXRlX2luZm9fY3JlYXRlKFxcdTAwMjZjZmcsIGdmcF9mbGFncywgZXh0YWNrKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ3MDMtXFx0aWYgKElTX0VSUihmNmkpKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00NzA1LVxcbm5ldC9pcHY2L3JvdXRlLmM6NDcwNjpcXHRlcnIgPSBpcDZfcm91dGVfaW5mb19jcmVhdGVfbmgoZjZpLCBcXHUwMDI2Y2ZnLCBnZnBfZmxhZ3MsIGV4dGFjayk7XFxubmV0L2lwdjYvcm91dGUuYy00NzA3LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTU0MTU9c3RhdGljIGludCBpcDZfcm91dGVfbXVsdGlwYXRoX2FkZChzdHJ1Y3QgZmliNl9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNTQ3MS1cXHRcXHRyX2NmZy5mY19mbGFncyB8PSAocnRuaC1cXHUwMDNlcnRuaF9mbGFncyBcXHUwMDI2IFJUTkhfRl9PTkxJTkspO1xcbm5ldC9pcHY2L3JvdXRlLmM6NTQ3MjpcXHRcXHRydCA9IGlwNl9yb3V0ZV9pbmZvX2NyZWF0ZShcXHUwMDI2cl9jZmcsIEdGUF9LRVJORUwsIGV4dGFjayk7XFxubmV0L2lwdjYvcm91dGUuYy01NDczLVxcdFxcdGlmIChJU19FUlIocnQpKSB7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTU0NzgtXFxubmV0L2lwdjYvcm91dGUuYzo1NDc5OlxcdFxcdGVyciA9IGlwNl9yb3V0ZV9pbmZvX2NyZWF0ZV9uaChydCwgXFx1MDAyNnJfY2ZnLCBHRlBfS0VSTkVMLCBleHRhY2spO1xcbm5ldC9pcHY2L3JvdXRlLmMtNTQ4MC1cXHRcXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjE4OjE1LjY0OTc0OTA3NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjMxNDUzMjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipDaGVja2luZyBJUHY2IFJvdXRpbmcgVGFibGUgRnVuY3Rpb25zKipcblxuQWxyaWdodCwgbGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIGEgY291cGxlIG9mIHRoaW5ncyBoZXJlLiBJIHNlZSBgaXA2X3JvdXRlX2luZm9fY3JlYXRlYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoYXQncyBhcyBleHBlY3RlZDsgaXQncyBsaWtlbHkgYW4gaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uLCBub3QgaW50ZW5kZWQgZm9yIGRpcmVjdCBleHRlcm5hbCB1c2UuIE5vdywgSSBoYXZlIHRvIG1ha2Ugc3VyZSBgaXA2X3JvdXRlX2FkZGAgaXNuJ3Qgc3RhdGljLCBjb3JyZWN0PyBIbW0sIGxldCdzIGp1c3QgZG91YmxlIGNoZWNrIHRoYXQgb25lLiBJJ2xsIG5lZWQgdG8gY29uZmlybSBpZiB0aGF0IGZ1bmN0aW9uIGlzIGV4cG9zZWQgcHVibGljbHkuIFRoYXQgd291bGQgbWFrZSB0aGUgZnVuY3Rpb24gbXVjaCBtb3JlIHVzZWZ1bCBpZiBpdCdzIGV4dGVybmFsLCBhbmQgaWYgaXQncyBpbnRlcm5hbCwgaXQgY291bGQgc3VnZ2VzdCBhIHBvc3NpYmxlIGVycm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTE4LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6MTg6MTkuMjgxMjA1OTA4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjUxNDg1MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwNl9yb3V0ZV9hZGRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmg9MTIzPWludCBpcHY2X3JvdXRlX2lvY3RsKHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGNtZCxcXG4tLVxcbmluY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oLTEyNS1cXG5pbmNsdWRlL25ldC9pcDZfcm91dGUuaDoxMjY6aW50IGlwNl9yb3V0ZV9hZGQoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsIGdmcF90IGdmcF9mbGFncyxcXG5pbmNsdWRlL25ldC9pcDZfcm91dGUuaC0xMjctXFx0XFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYz0yNDc3PWFkZHJjb25mX3ByZWZpeF9yb3V0ZShzdHJ1Y3QgaW42X2FkZHIgKnBmeCwgaW50IHBsZW4sIHUzMiBtZXRyaWMsXFxuLS1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI1MDMtXFxubmV0L2lwdjYvYWRkcmNvbmYuYzoyNTA0OlxcdGlwNl9yb3V0ZV9hZGQoXFx1MDAyNmNmZywgZ2ZwX2ZsYWdzLCBOVUxMKTtcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI1MDUtfVxcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYz0yNTUzPXN0YXRpYyB2b2lkIGFkZHJjb25mX2FkZF9tcm91dGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9pcHY2L2FkZHJjb25mLmMtMjU2Ny1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jOjI1Njg6XFx0aXA2X3JvdXRlX2FkZChcXHUwMDI2Y2ZnLCBHRlBfS0VSTkVMLCBOVUxMKTtcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI1NjktfVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz0zODc2PXN0YXRpYyBpbnQgaXA2X3JvdXRlX2luZm9fY3JlYXRlX25oKHN0cnVjdCBmaWI2X2luZm8gKnJ0LFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy0zOTUxLVxcbm5ldC9pcHY2L3JvdXRlLmM6Mzk1MjppbnQgaXA2X3JvdXRlX2FkZChzdHJ1Y3QgZmliNl9jb25maWcgKmNmZywgZ2ZwX3QgZ2ZwX2ZsYWdzLFxcbm5ldC9pcHY2L3JvdXRlLmMtMzk1My1cXHRcXHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NDQxMz1zdGF0aWMgc3RydWN0IGZpYjZfaW5mbyAqcnQ2X2FkZF9yb3V0ZV9pbmZvKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNDQzOS1cXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ0NDA6XFx0aXA2X3JvdXRlX2FkZChcXHUwMDI2Y2ZnLCBHRlBfQVRPTUlDLCBOVUxMKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ0NDEtXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ0Nzg9c3RydWN0IGZpYjZfaW5mbyAqcnQ2X2FkZF9kZmx0X3JvdXRlcihzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ1MDAtXFxubmV0L2lwdjYvcm91dGUuYzo0NTAxOlxcdGlmICghaXA2X3JvdXRlX2FkZChcXHUwMDI2Y2ZnLCBHRlBfQVRPTUlDLCBOVUxMKSkge1xcbm5ldC9pcHY2L3JvdXRlLmMtNDUwMi1cXHRcXHRzdHJ1Y3QgZmliNl90YWJsZSAqdGFibGU7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ1Nzg9aW50IGlwdjZfcm91dGVfaW9jdGwoc3RydWN0IG5ldCAqbmV0LCB1bnNpZ25lZCBpbnQgY21kLCBzdHJ1Y3QgaW42X3J0bXNnICpydG1zZylcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNDU5NC1cXHRcXHRcXHRjZmcuZmNfbWV0cmljID0gSVA2X1JUX1BSSU9fVVNFUjtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ1OTU6XFx0XFx0ZXJyID0gaXA2X3JvdXRlX2FkZChcXHUwMDI2Y2ZnLCBHRlBfS0VSTkVMLCBOVUxMKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ1OTYtXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTU2NjE9c3RhdGljIGludCBpbmV0Nl9ydG1fbmV3cm91dGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTU2NzYtXFx0ZWxzZVxcbm5ldC9pcHY2L3JvdXRlLmM6NTY3NzpcXHRcXHRyZXR1cm4gaXA2X3JvdXRlX2FkZChcXHUwMDI2Y2ZnLCBHRlBfS0VSTkVMLCBleHRhY2spO1xcbm5ldC9pcHY2L3JvdXRlLmMtNTY3OC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjE4OjIwLjkzMjY5OTE1NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM0MjUzNjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipGb2N1c2luZyBvbiBJUHY2IFJvdXRpbmcgYW5kIEZJQiBDcmVhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHplcm8gaW4gb24gdGhlc2Ugc3ltYm9sczogYGlwNl9yb3V0ZV9hZGRgIGFuZCBgZmliX2NyZWF0ZV9pbmZvYC4gTXkgZ3V0IHRlbGxzIG1lIHRoZXNlIGFyZSBjZW50cmFsIHRvIHVuZGVyc3RhbmRpbmcgaG93IElQdjYgcm91dGVzIGFyZSBhZGRlZCBhbmQgaG93IHRoZSBGb3J3YXJkaW5nIEluZm9ybWF0aW9uIEJhc2UgKEZJQikgaXMgY29uc3RydWN0ZWQsIHdoaWNoIGlzIHJpZ2h0IHdoZXJlIEkgd2FudCB0byBiZS4gYGlwNl9yb3V0ZV9hZGRgIHNjcmVhbXMgXCJlbnRyeSBwb2ludCBmb3Igcm91dGluZyB0YWJsZSB1cGRhdGVzXCIg4oCTIGEgcGVyZmVjdCBjYW5kaWRhdGUgZm9yIGRlZXBlciBhbmFseXNpcy4gQnV0IGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgYGZpYl9jcmVhdGVfaW5mb2Agc3RydWN0dXJlLCBJIHNob3VsZCBxdWlja2x5IHZlcmlmeSBpZiBpdCdzIGRlY2xhcmVkIHdpdGggYHN0YXRpY2AuIElmIG5vdCwgaXQgbWVhbnMgdGhpcyBzdHJ1Y3QgaXMgcG90ZW50aWFsbHkgdXNlZCAob3IgY2FuIGJlKSBpbiBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLCB3aGljaCB3b3VsZCBtYWtlIGl0IGV2ZW4gbW9yZSB2YWx1YWJsZSB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcnBsYXkgb2Ygcm91dGluZyB0YWJsZSBtYW5pcHVsYXRpb24gYW5kIGRhdGEgc3RydWN0dXJlcy4gSXQgY291bGQgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgbW9yZSB0aGFuIGp1c3QgdGhpcyBsb2NhbGl6ZWQgcm91dGluZyBmdW5jdGlvbiwgYW5kIHVuZGVyc3RhbmRpbmcgdGhpcyBgZmliX2NyZWF0ZV9pbmZvYCBzdHJ1Y3R1cmUncyBzY29wZSBvZiBpbmZsdWVuY2Ugd2lsbCBiZSBpbnN0cnVtZW50YWwgaW4gbWFwcGluZyB0aGUgd2hvbGUgYXJjaGl0ZWN0dXJlLiBTbywgbGV0J3MgY2hlY2sgZm9yIHRoYXQgbm9uLXN0YXRpYyBwcm9wZXJ0eSBmaXJzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY1MSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjE4OjI1LjE2Njk1NTYxNFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1OTc5MzEzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaWJfY3JlYXRlX2luZm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvZmliX2xvb2t1cC5oPTM4PXZvaWQgZmliX3JlbGVhc2VfaW5mbyhzdHJ1Y3QgZmliX2luZm8gKik7XFxubmV0L2lwdjQvZmliX2xvb2t1cC5oOjM5OnN0cnVjdCBmaWJfaW5mbyAqZmliX2NyZWF0ZV9pbmZvKHN0cnVjdCBmaWJfY29uZmlnICpjZmcsXFxubmV0L2lwdjQvZmliX2xvb2t1cC5oLTQwLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbi0tXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jPTEzNTI9c3RhdGljIGJvb2wgZmliX3ZhbGlkX3ByZWZzcmMoc3RydWN0IGZpYl9jb25maWcgKmNmZywgX19iZTMyIGZpYl9wcmVmc3JjKVxcbi0tXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTEzNzUtXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjEzNzY6c3RydWN0IGZpYl9pbmZvICpmaWJfY3JlYXRlX2luZm8oc3RydWN0IGZpYl9jb25maWcgKmNmZyxcXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMTM3Ny1cXHRcXHRcXHRcXHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L2lwdjQvZmliX3RyaWUuYz0xMTk0PWludCBmaWJfdGFibGVfaW5zZXJ0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZpYl90YWJsZSAqdGIsXFxuLS1cXG5uZXQvaXB2NC9maWJfdHJpZS5jLTEyMTEtXFxubmV0L2lwdjQvZmliX3RyaWUuYzoxMjEyOlxcdGZpID0gZmliX2NyZWF0ZV9pbmZvKGNmZywgZXh0YWNrKTtcXG5uZXQvaXB2NC9maWJfdHJpZS5jLTEyMTMtXFx0aWYgKElTX0VSUihmaSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6MTg6MjYuODI2NzU2MjkxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTY0MTU2NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIGBmaWJfY3JlYXRlX2luZm9gIGlzbid0IHN0YXRpYywgd2hpY2ggbWFrZXMgaXQgYSBnb29kIHN5bWJvbCB0byBmb2N1cyBvbi4gU2FtZSB3aXRoIGBpcDZfcm91dGVfYWRkYC4gQW5kLCBoYW5nIG9uLCBgaXBfZmliX21ldHJpY3NfaW5pdGAgaXMgYWxzbyBub24tc3RhdGljLCBzbyB0aGF0J3MgYW5vdGhlciBwb3RlbnRpYWxseSBpbnRlcmVzdGluZyBwb2ludC5cblxuTm93LCBsZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSByZWxldmFudCBoZXJlLiBBaCwgYENPTkZJR19JTkVUYCBzaG91bGQgZG8gdGhlIHRyaWNrLiBBbHJpZ2h0LCB3YWl0IGEgc2Vjb25kLi4uIGBSVEFYX0FEVk1TU2AuLi4gdGhhdCdzIHJlbGF0ZWQgdG8gVENQIE1heGltdW0gU2VnbWVudCBTaXplLiBIbW0sIGlzIHRoZXJlIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24ganVzdCBmb3IgYFJUQVhfQURWTVNTYD8gTm9wZSwgbG9va3MgbGlrZSBpdCdzIGEgc3RhbmRhcmQgbmV0bGluayBhdHRyaWJ1dGUuXG5cblNvLCB0aGUgY3J1eCBvZiB0aGlzIHBhdGNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U6IGl0J3MgYWRkaW5nIGEgY2hlY2sgdG8gcmVqZWN0IGludmFsaWQgYFJUQVhfQURWTVNTYCB2YWx1ZXMgaWYgdGhleSBmYWxsIGJlbG93IGBUQ1BfTUlOX01TU2AuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGNoYW5nZSB0aGF0IHdhcnJhbnRzIHNvbWUgZnV6emluZy4gTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgdGhlIGBUQ1BfTUlOX01TU2AgbWFjcm8ganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczMDQsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6MTg6MzEuMDIzMTc0NTMzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM3ODcxMzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlRDUF9NSU5fTVNTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3RjcC5oPTY4PXZvaWQgdGNwX3RpbWVfd2FpdChzdHJ1Y3Qgc29jayAqc2ssIGludCBzdGF0ZSwgaW50IHRpbWVvKTtcXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oLTgxLS8qIE1pbmltYWwgYWNjZXB0ZWQgTVNTLiBJdCBpcyAoNjArNjArOCkgLSAoMjArMjApLiAqL1xcbmluY2x1ZGUvbmV0L3RjcC5oOjgyOiNkZWZpbmUgVENQX01JTl9NU1NcXHRcXHQ4OFVcXG5pbmNsdWRlL25ldC90Y3AuaC04My1cXG4tLVxcbm5ldC9pcHY0L21ldHJpY3MuYz0xMD1zdGF0aWMgaW50IGlwX21ldHJpY3NfY29udmVydChzdHJ1Y3QgbmxhdHRyICpmY19teCxcXG4tLVxcbm5ldC9pcHY0L21ldHJpY3MuYy00Ni1cXHRcXHR9XFxubmV0L2lwdjQvbWV0cmljcy5jOjQ3OlxcdFxcdGlmICh0eXBlID09IFJUQVhfQURWTVNTIFxcdTAwMjZcXHUwMDI2IHZhbCBcXHUwMDI2XFx1MDAyNiB2YWwgXFx1MDAzYyBUQ1BfTUlOX01TUykge1xcbm5ldC9pcHY0L21ldHJpY3MuYy00OC1cXHRcXHRcXHROTF9TRVRfRVJSX01TR19BVFRSX0ZNVChleHRhY2ssIG5sYSxcXG5uZXQvaXB2NC9tZXRyaWNzLmMtNDktXFx0XFx0XFx0XFx0XFx0XFx0XFxcIkludmFsaWQgYWR2bXNzLCBtdXN0IGJlIDAgb3IgXFx1MDAzZT0gJXVcXFwiLFxcbm5ldC9pcHY0L21ldHJpY3MuYzo1MDpcXHRcXHRcXHRcXHRcXHRcXHRUQ1BfTUlOX01TUyk7XFxubmV0L2lwdjQvbWV0cmljcy5jLTUxLVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxubmV0L2lwdjQvdGNwLmM9MzM2MT1pbnQgdGNwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNrLCBpbnQgZmxhZ3MpXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0zNDQ0LVxcdGluZXRfY3NrX2RlbGFja19pbml0KHNrKTtcXG5uZXQvaXB2NC90Y3AuYzozNDQ1OlxcdC8qIEluaXRpYWxpemUgcmN2X21zcyB0byBUQ1BfTUlOX01TUyB0byBhdm9pZCBkaXZpc2lvbiBieSAwXFxubmV0L2lwdjQvdGNwLmMtMzQ0Ni1cXHQgKiBpc3N1ZSBpbiBfX3RjcF9zZWxlY3Rfd2luZG93KClcXG5uZXQvaXB2NC90Y3AuYy0zNDQ3LVxcdCAqL1xcbm5ldC9pcHY0L3RjcC5jOjM0NDg6XFx0aWNzay1cXHUwMDNlaWNza19hY2sucmN2X21zcyA9IFRDUF9NSU5fTVNTO1xcbm5ldC9pcHY0L3RjcC5jLTM0NDktXFx0bWVtc2V0KFxcdTAwMjZ0cC1cXHUwMDNlcnhfb3B0LCAwLCBzaXplb2YodHAtXFx1MDAzZXJ4X29wdCkpO1xcbi0tXFxubmV0L2lwdjQvdGNwLmM9MzgyMT1pbnQgdGNwX3NvY2tfc2V0X21heHNlZyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0zODI2LVxcdCAqL1xcbm5ldC9pcHY0L3RjcC5jOjM4Mjc6XFx0aWYgKHZhbCBcXHUwMDI2XFx1MDAyNiAodmFsIFxcdTAwM2MgVENQX01JTl9NU1MgfHwgdmFsIFxcdTAwM2UgTUFYX1RDUF9XSU5ET1cpKVxcbm5ldC9pcHY0L3RjcC5jLTM4MjgtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz0yMjc9c3RhdGljIHZvaWQgdGNwX21lYXN1cmVfcmN2X21zcyhzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy0yOTEtXFx0XFx0ICAgICAqL1xcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjI5MjpcXHRcXHQgICAgKGxlbiBcXHUwMDNlPSBUQ1BfTUlOX01TUyArIHNpemVvZihzdHJ1Y3QgdGNwaGRyKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTI5My1cXHRcXHQgICAgICEodGNwX2ZsYWdfd29yZCh0Y3BfaGRyKHNrYikpIFxcdTAwMjYgVENQX1JFTU5BTlQpKSkge1xcbi0tXFxubmV0L2lwdjQvdGNwX2lucHV0LmM9ODA2PXZvaWQgdGNwX2luaXRpYWxpemVfcmN2X21zcyhzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy04MTItXFx0aGludCA9IG1pbihoaW50LCBUQ1BfTVNTX0RFRkFVTFQpO1xcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjgxMzpcXHRoaW50ID0gbWF4KGhpbnQsIFRDUF9NSU5fTVNTKTtcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy04MTQtXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0yOTU5PXN0YXRpYyB2b2lkIG1wdGNwX2RvX2Zhc3RjbG9zZShzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yOTgyLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjI5ODM6XFx0XFx0LyogSW5pdGlhbGl6ZSByY3ZfbXNzIHRvIFRDUF9NSU5fTVNTIHRvIGF2b2lkIGRpdmlzaW9uIGJ5IDBcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yOTg0LVxcdFxcdCAqIGlzc3VlIGluIF9fdGNwX3NlbGVjdF93aW5kb3coKSwgc2VlIHRjcF9kaXNjb25uZWN0KCkuXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMjk4NS1cXHRcXHQgKi9cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoyOTg2OlxcdFxcdGluZXRfY3NrKHNzayktXFx1MDAzZWljc2tfYWNrLnJjdl9tc3MgPSBUQ1BfTUlOX01TUztcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yOTg3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxODozMi42NjEwNTAyMzJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMyNjE1NjY5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgY2hlY2sgd2l0aGluIGBpcF9tZXRyaWNzX2NvbnZlcnRgLCB3aGljaCBnZXRzIGludm9rZWQgZHVyaW5nIHJvdXRlIGNyZWF0aW9uLiBTcGVjaWZpY2FsbHksIGl0J3MgcmVqZWN0aW5nIHJvdXRlcyB3aGVyZSB0aGUgYFJUQVhfQURWTVNTYCB2YWx1ZSBpcyBsZXNzIHRoYW4gODguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGltcG9ydGFudGx5LCBpdCdzIHJlYWNoYWJsZSB2aWEgYSBuZXRsaW5rIHJvdXRlIGNyZWF0aW9uLiBUaGF0IG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBnaXZlbiBteSBleHBlcmllbmNlLlxuXG5NeSBmb2N1cyBzaG91bGQgYmUgb24gdW5kZXJzdGFuZGluZyB0aGUgc3Vycm91bmRpbmcgY29udGV4dCDigJMgSSBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCBgaXBfZmliX21ldHJpY3NfaW5pdGAsIGBmaWJfY3JlYXRlX2luZm9gLCBhbmQgYGlwNl9yb3V0ZV9hZGRgIHRvIGdyYXNwIGhvdyB0aGlzIG5ldyBjaGVjayBpbnRlcmFjdHMgd2l0aCB0aGUgZXhpc3Rpbmcgcm91dGUgbWFuYWdlbWVudCByb3V0aW5lcy4gVW5kZXJzdGFuZGluZyB3aGVyZSB0aGUgYFJUQVhfQURWTVNTYCB2YWx1ZSBvcmlnaW5hdGVzIGlzIGNydWNpYWwgZm9yIGNyYWZ0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIGlucHV0cy4gSSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIEknbSB0ZXN0aW5nIHdpdGggdGhlIGBJTkVUYCBjb25maWd1cmF0aW9uIGVuYWJsZWQgdG8gZW5zdXJlIHRoZSByZWxldmFudCBjb2RlIHBhdGhzIGFyZSBleGVyY2lzZWQuXG5cbkxldCdzIGdldCB0aG9zZSByZXN1bHRzIHNldCB1cC4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3QgYXBwcm9hY2ggdG8gZnV6eiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4Nzk3LCJPdXRwdXRUb2tlbnMiOjEyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxODozNy45ODcyMTAwOTdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Njc5Mzg0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX2ZpYl9tZXRyaWNzX2luaXRcIixcbiAgICBcImZpYl9jcmVhdGVfaW5mb1wiLFxuICAgIFwiaXA2X3JvdXRlX2FkZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBSVEFYX0FEVk1TUyBtZXRyaWMgZHVyaW5nIElQdjQgYW5kIElQdjYgcm91dGUgY3JlYXRpb24uIEl0IHJlamVjdHMgcm91dGVzIHdpdGggYW4gYWR2bXNzIHZhbHVlIGxlc3MgdGhhbiBUQ1BfTUlOX01TUyAoODgpLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayByb3V0ZSBjb25maWd1cmF0aW9uIGFuZCBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBiZWhhdmlvciwgc28gaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfZmliX21ldHJpY3NfaW5pdFwiLFxuICAgIFwiZmliX2NyZWF0ZV9pbmZvXCIsXG4gICAgXCJpcDZfcm91dGVfYWRkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIFJUQVhfQURWTVNTIG1ldHJpYyBkdXJpbmcgSVB2NCBhbmQgSVB2NiByb3V0ZSBjcmVhdGlvbi4gSXQgcmVqZWN0cyByb3V0ZXMgd2l0aCBhbiBhZHZtc3MgdmFsdWUgbGVzcyB0aGFuIFRDUF9NSU5fTVNTICg4OCkuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIHJvdXRlIGNvbmZpZ3VyYXRpb24gYW5kIGFmZmVjdHMgY29yZSBuZXR3b3JraW5nIGJlaGF2aW9yLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxODozOC4wNjQwMTY4NTlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NjA4OTU0MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxODozOC4wNjQ1ODQ1OTlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Nzk2MDMyMzY4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBgUlRBWF9BRFZNU1NgIG1ldHJpYyB2YWx1ZSBpbiBgaXBfbWV0cmljc19jb252ZXJ0YC4gSXQgdmVyaWZpZXMgdGhhdCB0aGUgdmFsdWUgaXMgZWl0aGVyIDAgb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBUQ1BfTUlOX01TU2AsIGFuZCByZXR1cm5zIGAtRUlOVkFMYCBpZiBpdCBpcyBub3QuIFRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGl0IGRvZXMgbm90IGV4cG9zZSBhbnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBiZSBsb2dpYyBlcnJvcnMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2IwOGFkYWQ4ZTU1YTBmNWZkMTFhYjYyMTMyYmU4YTMzZGJhZGM2OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDE4OjE3OjUwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbWV0cmljcy5jIGIvbmV0L2lwdjQvbWV0cmljcy5jXG5pbmRleCBhZDQwNzYyYThiMzgzLi5iOWI5N2EwYTUxMjZiIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvbWV0cmljcy5jXG4rKysgYi9uZXQvaXB2NC9tZXRyaWNzLmNcbkBAIC00NCw2ICs0NCwxMiBAQCBzdGF0aWMgaW50IGlwX21ldHJpY3NfY29udmVydChzdHJ1Y3QgbmxhdHRyICpmY19teCxcbiBcdFx0XHR9XG4gXHRcdFx0dmFsID0gbmxhX2dldF91MzIobmxhKTtcbiBcdFx0fVxuK1x0XHRpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyBcdTAwMjZcdTAwMjYgdmFsIFx1MDAyNlx1MDAyNiB2YWwgXHUwMDNjIFRDUF9NSU5fTVNTKSB7XG4rXHRcdFx0TkxfU0VUX0VSUl9NU0dfQVRUUl9GTVQoZXh0YWNrLCBubGEsXG4rXHRcdFx0XHRcdFx0XCJJbnZhbGlkIGFkdm1zcywgbXVzdCBiZSAwIG9yIFx1MDAzZT0gJXVcIixcbitcdFx0XHRcdFx0XHRUQ1BfTUlOX01TUyk7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbiBcdFx0aWYgKHR5cGUgPT0gUlRBWF9BRFZNU1MgXHUwMDI2XHUwMDI2IHZhbCBcdTAwM2UgNjU1MzUgLSA0MClcbiBcdFx0XHR2YWwgPSA2NTUzNSAtIDQwO1xuIFx0XHRpZiAodHlwZSA9PSBSVEFYX01UVSBcdTAwMjZcdTAwMjYgdmFsIFx1MDAzZSA2NTUzNSAtIDE1KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6MTg6MzguMDY0NTg1NDc5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NjAyOTYxOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIGNhbiBzZWUsIHRoaXMgcGF0Y2ggaXMgc3RyYWlnaHRmb3J3YXJkLiBJbiB0aGUgYGlwX21ldHJpY3NfY29udmVydGAgZnVuY3Rpb24gd2l0aGluIGBuZXQvaXB2NC9tZXRyaWNzLmNgLCBpdCdzIGFkZGluZyBhIHNwZWNpZmljIGNoZWNrLiBTcGVjaWZpY2FsbHksIGl0J3MgdmFsaWRhdGluZyBhIE5ldGxpbmsgYXR0cmlidXRlIHZhbHVlLCBgdmFsYCwgYXNzb2NpYXRlZCB3aXRoIGBSVEFYX0FEVk1TU2AuIFRoZSBjaGVjayBpcyBkZXNpZ25lZCB0byBlbnN1cmUgdGhhdCBpZiBgUlRBWF9BRFZNU1NgIGlzIHByZXNlbnQgKGB0eXBlID09IFJUQVhfQURWTVNTYCksIGFuZCB0aGUgdmFsdWUgYHZhbGAgZXhpc3RzIChgdmFsYCksIHRoZW4gYHZhbGAgaGFzIHRvIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgVENQX01JTl9NU1NgLiBJZiBub3QsIGl0IHJldHVybnMgYC1FSU5WQUxgLlxuXG5Fc3NlbnRpYWxseSwgaXQncyBhIGJvdW5kcyBjaGVjayBvbiB1c2VyLXByb3ZpZGVkIGlucHV0LiBJdCdzIHVzaW5nIGBubGFfZ2V0X3UzMmAgdG8gcmV0cmlldmUgdGhlIHZhbHVlLiBDcml0aWNhbGx5LCB0aGVyZSdzIG5vIGV2aWRlbmNlIG9mIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB1c2VkIGhlcmUuIEl0J3Mgc2ltcGx5IHZlcmlmeWluZyB0aGUgdmFsaWRpdHkgb2YgdGhlIHByb3ZpZGVkIHZhbHVlLlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlIHNuaXBwZXQgYWdhaW46XG5cbmBgYGNcblx0XHRpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyBcdTAwMjZcdTAwMjYgdmFsIFx1MDAyNlx1MDAyNiB2YWwgXHUwMDNjIFRDUF9NSU5fTVNTKSB7XG5cdFx0XHROTF9TRVRfRVJSX01TR19BVFRSX0ZNVChleHRhY2ssIG5sYSxcblx0XHRcdFx0XHRcdFwiSW52YWxpZCBhZHZtc3MsIG11c3QgYmUgMCBvciBcdTAwM2U9ICV1XCIsXG5cdFx0XHRcdFx0XHRUQ1BfTUlOX01TUyk7XG5cdFx0XHRyZXR1cm4gLUVJTlZBTDtcblx0XHR9XG5gYGBcblxuVGhpcyBjb25maXJtcyBteSBpbml0aWFsIGltcHJlc3Npb24uIEl0J3MgYSBjbGVhbiB2YWxpZGF0aW9uOyB0aGUgY29kZSBpdHNlbGYgZGVtb25zdHJhdGVzIHRoZSBjaGVjay4gR2l2ZW4gdGhpcywgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC4gVGhpcyBwYXRjaCBkb2VzIG5vdCBzZWVtIHRvIGludHJvZHVjZSBhbnkgS01TQU4gY29uY2VybnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjUsIk91dHB1dFRva2VucyI6MTU3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6MTg6NDYuMDI0ODg1MjI4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIGBSVEFYX0FEVk1TU2AgbWV0cmljIHZhbHVlIGluIGBpcF9tZXRyaWNzX2NvbnZlcnRgLiBJdCB2ZXJpZmllcyB0aGF0IHRoZSB2YWx1ZSBpcyBlaXRoZXIgMCBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYFRDUF9NSU5fTVNTYCwgYW5kIHJldHVybnMgYC1FSU5WQUxgIGlmIGl0IGlzIG5vdC4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgaXQgZG9lcyBub3QgZXhwb3NlIGFueSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBBbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGJlIGxvZ2ljIGVycm9ycyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgY292ZXJlZCBieSBzdGFuZGFyZCB0ZXN0aW5nIGFuZCBLQVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIGBSVEFYX0FEVk1TU2AgbWV0cmljIHZhbHVlIGluIGBpcF9tZXRyaWNzX2NvbnZlcnRgLiBJdCB2ZXJpZmllcyB0aGF0IHRoZSB2YWx1ZSBpcyBlaXRoZXIgMCBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYFRDUF9NSU5fTVNTYCwgYW5kIHJldHVybnMgYC1FSU5WQUxgIGlmIGl0IGlzIG5vdC4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgaXQgZG9lcyBub3QgZXhwb3NlIGFueSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBBbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGJlIGxvZ2ljIGVycm9ycyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgY292ZXJlZCBieSBzdGFuZGFyZCB0ZXN0aW5nIGFuZCBLQVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowncql4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 17:49:45 +0000 UTC FinishedAt: 2026-08-13 18:18:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "9006c116dd111d457bf5d074990210f70a4ad2c8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "9006c116dd111d457bf5d074990210f70a4ad2c8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "e8181e46-561b-4af5-823e-e156948c02e5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_fib_metrics_init", "fib_create_info", "ip6_route_add" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9maWJfbWV0cmljc19pbml0JiMzNDssCiAgICAmIzM0O2ZpYl9jcmVhdGVfaW5mbyYjMzQ7LAogICAgJiMzNDtpcDZfcm91dGVfYWRkJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBgUlRBWF9BRFZNU1NgIG1ldHJpYyB2YWx1ZSBpbiBgaXBfbWV0cmljc19jb252ZXJ0YC4gSXQgdmVyaWZpZXMgdGhhdCB0aGUgdmFsdWUgaXMgZWl0aGVyIDAgb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBUQ1BfTUlOX01TU2AsIGFuZCByZXR1cm5zIGAtRUlOVkFMYCBpZiBpdCBpcyBub3QuIFRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGl0IGRvZXMgbm90IGV4cG9zZSBhbnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBiZSBsb2dpYyBlcnJvcnMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBSVEFYX0FEVk1TUyBtZXRyaWMgZHVyaW5nIElQdjQgYW5kIElQdjYgcm91dGUgY3JlYXRpb24uIEl0IHJlamVjdHMgcm91dGVzIHdpdGggYW4gYWR2bXNzIHZhbHVlIGxlc3MgdGhhbiBUQ1BfTUlOX01TUyAoODgpLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayByb3V0ZSBjb25maWd1cmF0aW9uIGFuZCBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBiZWhhdmlvciwgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODoxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNiMDhhZGFkOGU1NWEwZjVmZDExYWI2MjEzMmJlOGEzM2RiYWRjNjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAxODoxNzo1MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9tZXRyaWNzLmMgYi9uZXQvaXB2NC9tZXRyaWNzLmNcbmluZGV4IGFkNDA3NjJhOGIzODMuLmI5Yjk3YTBhNTEyNmIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9tZXRyaWNzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L21ldHJpY3MuY1xuQEAgLTQ0LDYgJiM0Mzs0NCwxMiBAQCBzdGF0aWMgaW50IGlwX21ldHJpY3NfY29udmVydChzdHJ1Y3QgbmxhdHRyICpmY19teCxcbiBcdFx0XHR9XG4gXHRcdFx0dmFsID0gbmxhX2dldF91MzIobmxhKTtcbiBcdFx0fVxuJiM0MztcdFx0aWYgKHR5cGUgPT0gUlRBWF9BRFZNU1MgXHUwMDI2XHUwMDI2IHZhbCBcdTAwMjZcdTAwMjYgdmFsIFx1MDAzYyBUQ1BfTUlOX01TUykge1xuJiM0MztcdFx0XHROTF9TRVRfRVJSX01TR19BVFRSX0ZNVChleHRhY2ssIG5sYSxcbiYjNDM7XHRcdFx0XHRcdFx0XCYjMzQ7SW52YWxpZCBhZHZtc3MsIG11c3QgYmUgMCBvciBcdTAwM2U9ICV1XCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0XHRUQ1BfTUlOX01TUyk7XG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0fVxuIFx0XHRpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyBcdTAwMjZcdTAwMjYgdmFsIFx1MDAzZSA2NTUzNSAtIDQwKVxuIFx0XHRcdHZhbCA9IDY1NTM1IC0gNDA7XG4gXHRcdGlmICh0eXBlID09IFJUQVhfTVRVIFx1MDAyNlx1MDAyNiB2YWwgXHUwMDNlIDY1NTM1IC0gMTUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9maWJfbWV0cmljc19pbml0JiMzNDssCiAgICAmIzM0O2ZpYl9jcmVhdGVfaW5mbyYjMzQ7LAogICAgJiMzNDtpcDZfcm91dGVfYWRkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBSVEFYX0FEVk1TUyBtZXRyaWMgZHVyaW5nIElQdjQgYW5kIElQdjYgcm91dGUgY3JlYXRpb24uIEl0IHJlamVjdHMgcm91dGVzIHdpdGggYW4gYWR2bXNzIHZhbHVlIGxlc3MgdGhhbiBUQ1BfTUlOX01TUyAoODgpLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayByb3V0ZSBjb25maWd1cmF0aW9uIGFuZCBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBiZWhhdmlvciwgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNiMDhhZGFkOGU1NWEwZjVmZDExYWI2MjEzMmJlOGEzM2RiYWRjNjgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAxODoxNzo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L21ldHJpY3MuYyBiL25ldC9pcHY0L21ldHJpY3MuYwppbmRleCBhZDQwNzYyYThiMzgzLi5iOWI5N2EwYTUxMjZiIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9tZXRyaWNzLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvbWV0cmljcy5jCkBAIC00NCw2ICYjNDM7NDQsMTIgQEAgc3RhdGljIGludCBpcF9tZXRyaWNzX2NvbnZlcnQoc3RydWN0IG5sYXR0ciAqZmNfbXgsCiAJCQl9CiAJCQl2YWwgPSBubGFfZ2V0X3UzMihubGEpOwogCQl9CiYjNDM7CQlpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyAmYW1wOyZhbXA7IHZhbCAmYW1wOyZhbXA7IHZhbCAmbHQ7IFRDUF9NSU5fTVNTKSB7CiYjNDM7CQkJTkxfU0VUX0VSUl9NU0dfQVRUUl9GTVQoZXh0YWNrLCBubGEsCiYjNDM7CQkJCQkJJiMzNDtJbnZhbGlkIGFkdm1zcywgbXVzdCBiZSAwIG9yICZndDs9ICV1JiMzNDssCiYjNDM7CQkJCQkJVENQX01JTl9NU1MpOwomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJfQogCQlpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyAmYW1wOyZhbXA7IHZhbCAmZ3Q7IDY1NTM1IC0gNDApCiAJCQl2YWwgPSA2NTUzNSAtIDQwOwogCQlpZiAodHlwZSA9PSBSVEFYX01UVSAmYW1wOyZhbXA7IHZhbCAmZ3Q7IDY1NTM1IC0gMTUpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgUlRBWF9BRFZNU1NgIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L2lwdjQvbWV0cmljcy5jYC4gSXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkOiB0aGV5JiMzOTt2ZSBhZGRlZCBhIHZhbGlkYXRpb24gY2hlY2sgd2l0aGluIGBpcF9tZXRyaWNzX2NvbnZlcnRgIGZvciBgUlRBWF9BRFZNU1NgLiBUaGUgbmV3IGNvZGUgaXMgZGVzaWduZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGFkdmFuY2VkIE1TUyB2YWx1ZSAoYHZhbGApIGlzIGVpdGhlciB6ZXJvIG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgVENQX01JTl9NU1NgLiBUaGUgc3BlY2lmaWMgY2hlY2sgdXNlcyBgTkxfU0VUX0VSUl9NU0dfQVRUUl9GTVRgIHRvIHNldCBhbiBlcnJvciBtZXNzYWdlIGlmIHRoZSB2YWx1ZSBpcyBpbnZhbGlkLiBUaGF0JiMzOTtzIGdvb2QsIHByZXZlbnRzIHNpbGx5IGNvbmZpZ3VyYXRpb25zLgoKVGhlIGNvcmUgb2YgdGhpcyBpcyB0aGF0IHRoZSBjb2RlIGxvb2tzIGxpa2U6CgpgYGBjCgkJaWYgKHR5cGUgPT0gUlRBWF9BRFZNU1MgJmFtcDsmYW1wOyB2YWwgJmFtcDsmYW1wOyB2YWwgJmx0OyBUQ1BfTUlOX01TUykgewoJCQlOTF9TRVRfRVJSX01TR19BVFRSX0ZNVChleHRhY2ssIG5sYSwKCQkJCQkJJiMzNDtJbnZhbGlkIGFkdm1zcywgbXVzdCBiZSAwIG9yICZndDs9ICV1JiMzNDssCgkJCQkJCVRDUF9NSU5fTVNTKTsKCQkJcmV0dXJuIC1FSU5WQUw7CgkJfQpgYGAKCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBiZXR0ZXIuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBpcF9tZXRyaWNzX2NvbnZlcnRgIGl0c2VsZi4gV2hhdCBkb2VzIGl0IGFjdHVhbGx5IGRvPyBXaGVyZSBpcyBpdCAqdXNlZCo/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHdoYXQmIzM5O3MgdHJpZ2dlcmluZyB0aGlzIGNvbnZlcnNpb24uIEtub3dpbmcgdGhlIGNhbGxpbmcgY29udGV4dHMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aGlzIGNoYW5nZSBhbmQgd2hldGhlciBpdCBpbnRyb2R1Y2VzIGFueSB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0cyBvciByYWNlIGNvbmRpdGlvbnMuIEtub3dpbmcgd2hhdCBjYWxscyB0aGlzIGlzIGtleSwgc28gSSYjMzk7bGwgY2hlY2sgdGhhdCBuZXh0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgdmFsaWRhdGlvbiBpcyB0cmlnZ2VyZWQgYXQgYWxsIHJlbGV2YW50IHBvaW50cy4gSSYjMzk7bGwgcHJvYmFibHkgYWxzbyBjaGVjayB0aGUgc3Vycm91bmRpbmcgY29kZSBmb3Igc2ltaWxhciBjaGVja3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfbWV0cmljc19jb252ZXJ0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L21ldHJpY3MuYy05LVxubmV0L2lwdjQvbWV0cmljcy5jOjEwOnN0YXRpYyBpbnQgaXBfbWV0cmljc19jb252ZXJ0KHN0cnVjdCBubGF0dHIgKmZjX214LFxubmV0L2lwdjQvbWV0cmljcy5jLTExLVx0XHRcdCAgICAgIGludCBmY19teF9sZW4sIHUzMiAqbWV0cmljcyxcbi0tXG5uZXQvaXB2NC9tZXRyaWNzLmM9NzI9c3RydWN0IGRzdF9tZXRyaWNzICppcF9maWJfbWV0cmljc19pbml0KHN0cnVjdCBubGF0dHIgKmZjX214LFxuLS1cbm5ldC9pcHY0L21ldHJpY3MuYy04NS1cbm5ldC9pcHY0L21ldHJpY3MuYzo4NjpcdGVyciA9IGlwX21ldHJpY3NfY29udmVydChmY19teCwgZmNfbXhfbGVuLCBmaWJfbWV0cmljcy1cdTAwM2VtZXRyaWNzLFxubmV0L2lwdjQvbWV0cmljcy5jLTg3LVx0XHRcdFx0IGV4dGFjayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4NAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBJUCBGSUIgTWV0cmljcyBJbml0aWFsaXphdGlvbioqCgpSaWdodCwgc28gYGlwX21ldHJpY3NfY29udmVydGAgaXMgY2xlYXJseSBhIGZ1bmN0aW9uIGludm9sdmVkIGluIGNvbnZlcnRpbmcgc29tZSBzb3J0IG9mIElQIG1ldHJpY3MsIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGNhbGxlZCBieSBgaXBfZmliX21ldHJpY3NfaW5pdGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3MgdHJhY2UgdGhpcyBiYWNrLiBXaGVyZSBpcyBgaXBfZmliX21ldHJpY3NfaW5pdGAgYWN0dWFsbHkgYmVpbmcgaW52b2tlZD8gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBncmFwaCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgcGljdHVyZSBvZiB0aGUgY29udGV4dCBzdXJyb3VuZGluZyB0aG9zZSBtZXRyaWNzIGNvbnZlcnNpb25zLiBLbm93aW5nIHdoZXJlIGBpcF9maWJfbWV0cmljc19pbml0YCBpcyBjYWxsZWQgaXMgdGhlIGNyaXRpY2FsIHBpZWNlIG9mIHRoaXMgcHV6emxlIHJpZ2h0IG5vdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9maWJfbWV0cmljc19pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2lwLmg9NTA5PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGlwX3NrYl9kc3RfbXR1KHN0cnVjdCBzb2NrICpzayxcbi0tXG5pbmNsdWRlL25ldC9pcC5oLTUyNC1cbmluY2x1ZGUvbmV0L2lwLmg6NTI1OnN0cnVjdCBkc3RfbWV0cmljcyAqaXBfZmliX21ldHJpY3NfaW5pdChzdHJ1Y3QgbmxhdHRyICpmY19teCwgaW50IGZjX214X2xlbixcbmluY2x1ZGUvbmV0L2lwLmgtNTI2LVx0XHRcdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuLS1cbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYz0xMzc2PXN0cnVjdCBmaWJfaW5mbyAqZmliX2NyZWF0ZV9pbmZvKHN0cnVjdCBmaWJfY29uZmlnICpjZmcsXG4tLVxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE0MzQtXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM6MTQzNTpcdGZpLVx1MDAzZWZpYl9tZXRyaWNzID0gaXBfZmliX21ldHJpY3NfaW5pdChjZmctXHUwMDNlZmNfbXgsIGNmZy1cdTAwM2VmY19teF9sZW4sIGV4dGFjayk7XG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMTQzNi1cdGlmIChJU19FUlIoZmktXHUwMDNlZmliX21ldHJpY3MpKSB7XG4tLVxubmV0L2lwdjQvbWV0cmljcy5jPTEwPXN0YXRpYyBpbnQgaXBfbWV0cmljc19jb252ZXJ0KHN0cnVjdCBubGF0dHIgKmZjX214LFxuLS1cbm5ldC9pcHY0L21ldHJpY3MuYy03MS1cbm5ldC9pcHY0L21ldHJpY3MuYzo3MjpzdHJ1Y3QgZHN0X21ldHJpY3MgKmlwX2ZpYl9tZXRyaWNzX2luaXQoc3RydWN0IG5sYXR0ciAqZmNfbXgsXG5uZXQvaXB2NC9tZXRyaWNzLmMtNzMtXHRcdFx0XHRcdGludCBmY19teF9sZW4sXG4tLVxubmV0L2lwdjYvcm91dGUuYz0zODA5PXN0YXRpYyBzdHJ1Y3QgZmliNl9pbmZvICppcDZfcm91dGVfaW5mb19jcmVhdGUoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXG4tLVxubmV0L2lwdjYvcm91dGUuYy0zODM4LVxubmV0L2lwdjYvcm91dGUuYzozODM5Olx0cnQtXHUwMDNlZmliNl9tZXRyaWNzID0gaXBfZmliX21ldHJpY3NfaW5pdChjZmctXHUwMDNlZmNfbXgsIGNmZy1cdTAwM2VmY19teF9sZW4sXG5uZXQvaXB2Ni9yb3V0ZS5jLTM4NDAtXHRcdFx0XHRcdCAgICAgICBleHRhY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NzcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUm91dGUgQ3JlYXRpb24gTG9naWMgRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBoaXR0aW5nIHNvbWUgcm91dGUgY3JlYXRpb24gbG9naWMg4oCTIHNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB3ZSYjMzk7cmUgdG91Y2hpbmcgb24gaG93IHRoZSBrZXJuZWwgaGFuZGxlcyB0aGUgYFJUQVhfQURWTVNTYCBtZXRyaWMuIFRoaXMgaXMgYWxsIGtpY2tlZCBvZmYgYnkgY2FsbHMgdG8gYGZpYl9jcmVhdGVfaW5mb2AgaW4gYG5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuY2AgYW5kIGBpcDZfcm91dGVfaW5mb19jcmVhdGVgIGluIGBuZXQvaXB2Ni9yb3V0ZS5jYCB3aGljaCwgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIGFyZSBib3RoIGFjY2Vzc2libGUgdGhyb3VnaCBuZXRsaW5rLgoKVGhlIHBhdGNoIHNlZW1zIHRvIGFkZCBhIGNoZWNrIGZvciBgUlRBWF9BRFZNU1NgLiBFc3NlbnRpYWxseSwgaXQmIzM5O3MgcmVqZWN0aW5nIHJvdXRlcyB3aGVyZSBgUlRBWF9BRFZNU1NgIGlzIGxlc3MgdGhhbiBgVENQX01JTl9NU1NgIChpZiBgUlRBWF9BRFZNU1NgIGlzIGdyZWF0ZXIgdGhhbiAwKSwgd2hpY2ggaXMgYSBnb29kIGRlZmVuc2l2ZSBtZWFzdXJlLiBGdW5jdGlvbmFsbHksIHRoaXMgbG9va3MgbGlrZSBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLgoKTm93LCB3aGVyZSYjMzk7cyB0aGUgYmVzdCBwbGFjZSB0byBkaWcgaW4gdG8gdW5kZXJzdGFuZCB0aGlzIGluIG1vcmUgZGV0YWlsPyBJIG5lZWQgdG8gbG9vayBhdCBob3cgdGhlc2UgbWV0cmljcyBhcmUgaW5pdGlhbGl6ZWQgYW5kIGNvbnZlcnRlZC4gTGV0JiMzOTtzIHNlZS4uLiBgaXBfZmliX21ldHJpY3NfaW5pdGAgYW5kIGBpcF9tZXRyaWNzX2NvbnZlcnRgLiBgaXBfZmliX21ldHJpY3NfaW5pdGAgaXMgbm9uLXN0YXRpYywgd2hpY2ggbWFrZXMgaXQgYSBncmVhdCB0YXJnZXQgc3ltYm9sLiBgaXBfbWV0cmljc19jb252ZXJ0YCBpcyBzdGF0aWMsIHdoaWNoIGlzIGxlc3MgdXNlZnVsIGZvciBleHRlcm5hbCBpbnNwZWN0aW9uLiBTbyBgaXBfZmliX21ldHJpY3NfaW5pdGAgbG9va3MgbGlrZSBhIHN0cm9uZyBmb2N1cy4gQWxvbmcgd2l0aCB0aGUgcm91dGUgY3JlYXRpb24gZnVuY3Rpb25zIEkgbWVudGlvbmVkIGVhcmxpZXIgKGBmaWJfY3JlYXRlX2luZm9gIGFuZCBgaXA2X3JvdXRlX2luZm9fY3JlYXRlYCksIG9mIGNvdXJzZS4KCkkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoaXMgY29kZSBwYXRoPyBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgYG5ldC9pcHY0L21ldHJpY3MuY2AgZmlsZS4uLiBBaCwgbG9va3MgbGlrZSBpdCYjMzk7cyAqbm90KiB0aWVkIHRvIGBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRGAuIFNvLCBJJiMzOTttIGdvaW5nIHRvIGFzc3VtZSBpdCYjMzk7cyBhbHdheXMgY29tcGlsZWQgZm9yIElQdjQsIHdoaWNoIG1lYW5zIGEgd2lkZXIgYXR0YWNrIHN1cmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWV0cmljcy5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZS0xMC1cdCAgICAgdGNwLm8gdGNwX2lucHV0Lm8gdGNwX291dHB1dC5vIHRjcF90aW1lci5vIHRjcF9pcHY0Lm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlOjExOlx0ICAgICB0Y3BfbWluaXNvY2tzLm8gdGNwX2NvbmcubyB0Y3BfbWV0cmljcy5vIHRjcF9mYXN0b3Blbi5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xMi1cdCAgICAgdGNwX3JlY292ZXJ5Lm8gdGNwX3VscC5vIFxcXG4tLVxubmV0L2lwdjQvTWFrZWZpbGUtMTYtXHQgICAgIGluZXRfZnJhZ21lbnQubyBwaW5nLm8gaXBfdHVubmVsX2NvcmUubyBncmVfb2ZmbG9hZC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxNzpcdCAgICAgbWV0cmljcy5vIG5ldGxpbmsubyBuZXh0aG9wLm8gdWRwX3R1bm5lbF9zdHViLm9cbm5ldC9pcHY0L01ha2VmaWxlLTE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzODkKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIElQdjQgQ29tcGlsYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGJ1aWxkIGNvbmZpZ3VyYXRpb24gdW5jb25kaXRpb25hbGx5IGluY2x1ZGVzIElQdjQuIFRoZSBxdWVzdGlvbiBpcywgZG9lcyBpdCByZWx5IHNvbGVseSBvbiBgQ09ORklHX0lORVRgLCBvciBpcyBgQ09ORklHX0lQX1JPVVRFYCBhbHNvIGEgbmVjZXNzYXJ5IGRlcGVuZGVuY3k/IEFjdHVhbGx5LCB3YWl0IGEgc2Vjb25kLCBgQ09ORklHX0lQX1JPVVRFYCBpc24mIzM5O3QgYSB2YWxpZCBvcHRpb24gaW4gdGhlIGNvbmZpZ3VyYXRpb247IGl0JiMzOTtzIHNpbXBseSBmb2xkZWQgaW50byBgQ09ORklHX0lORVRgLiBUaGVyZWZvcmUsIGBDT05GSUdfSU5FVGAgKnNob3VsZCogYmUgc3VmZmljaWVudCB0byBzYXRpc2Z5IHRoZSBJUHY0IGRlcGVuZGVuY3kuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgYSBxdWljayBjaGVjayBvZiBob3cgSVB2NiByb3V0aW5nIGlzIGhhbmRsZWQgd2lsbCBiZSB1c2VmdWwuIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSBgbmV0L2lwdjYvcm91dGUuY2AgYW5kIHNwZWNpZmljYWxseSwgaG93IGBpcDZfcm91dGVfaW5mb19jcmVhdGVgIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBJUHY2IHJvdXRpbmcgY29udGV4dC4gVGhhdCBzaG91bGQgaGVscCBjb25maXJtIHRoYXQgdGhlIElQdjQgYmFzZSBhc3N1bXB0aW9uIGhvbGRzLCBvciB3aGV0aGVyIGZ1cnRoZXIgZGVwZW5kZW5jaWVzIGFyZSBuZWVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwNl9yb3V0ZV9pbmZvX2NyZWF0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jPTM3NjI9c3RhdGljIGludCBmaWI2X2NvbmZpZ192YWxpZGF0ZShzdHJ1Y3QgZmliNl9jb25maWcgKmNmZyxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTM4MDgtXG5uZXQvaXB2Ni9yb3V0ZS5jOjM4MDk6c3RhdGljIHN0cnVjdCBmaWI2X2luZm8gKmlwNl9yb3V0ZV9pbmZvX2NyZWF0ZShzdHJ1Y3QgZmliNl9jb25maWcgKmNmZyxcbm5ldC9pcHY2L3JvdXRlLmMtMzgxMC1cdFx0XHRcdFx0ICAgICAgIGdmcF90IGdmcF9mbGFncyxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTM4NzUtXG5uZXQvaXB2Ni9yb3V0ZS5jOjM4NzY6c3RhdGljIGludCBpcDZfcm91dGVfaW5mb19jcmVhdGVfbmgoc3RydWN0IGZpYjZfaW5mbyAqcnQsXG5uZXQvaXB2Ni9yb3V0ZS5jLTM4NzctXHRcdFx0XHQgICAgc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXG4tLVxubmV0L2lwdjYvcm91dGUuYz0zOTUyPWludCBpcDZfcm91dGVfYWRkKHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnLCBnZnBfdCBnZnBfZmxhZ3MsXG4tLVxubmV0L2lwdjYvcm91dGUuYy0zOTYxLVxubmV0L2lwdjYvcm91dGUuYzozOTYyOlx0cnQgPSBpcDZfcm91dGVfaW5mb19jcmVhdGUoY2ZnLCBnZnBfZmxhZ3MsIGV4dGFjayk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTM5NjMtXHRpZiAoSVNfRVJSKHJ0KSlcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTM5NjUtXG5uZXQvaXB2Ni9yb3V0ZS5jOjM5NjY6XHRlcnIgPSBpcDZfcm91dGVfaW5mb19jcmVhdGVfbmgocnQsIGNmZywgZ2ZwX2ZsYWdzLCBleHRhY2spO1xubmV0L2lwdjYvcm91dGUuYy0zOTY3LVx0aWYgKGVycilcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ2NzU9c3RydWN0IGZpYjZfaW5mbyAqYWRkcmNvbmZfZjZpX2FsbG9jKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ3MDEtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ3MDI6XHRmNmkgPSBpcDZfcm91dGVfaW5mb19jcmVhdGUoXHUwMDI2Y2ZnLCBnZnBfZmxhZ3MsIGV4dGFjayk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ3MDMtXHRpZiAoSVNfRVJSKGY2aSkpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00NzA1LVxubmV0L2lwdjYvcm91dGUuYzo0NzA2Olx0ZXJyID0gaXA2X3JvdXRlX2luZm9fY3JlYXRlX25oKGY2aSwgXHUwMDI2Y2ZnLCBnZnBfZmxhZ3MsIGV4dGFjayk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ3MDctXHRpZiAoZXJyKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NTQxNT1zdGF0aWMgaW50IGlwNl9yb3V0ZV9tdWx0aXBhdGhfYWRkKHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNTQ3MS1cdFx0cl9jZmcuZmNfZmxhZ3MgfD0gKHJ0bmgtXHUwMDNlcnRuaF9mbGFncyBcdTAwMjYgUlROSF9GX09OTElOSyk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjU0NzI6XHRcdHJ0ID0gaXA2X3JvdXRlX2luZm9fY3JlYXRlKFx1MDAyNnJfY2ZnLCBHRlBfS0VSTkVMLCBleHRhY2spO1xubmV0L2lwdjYvcm91dGUuYy01NDczLVx0XHRpZiAoSVNfRVJSKHJ0KSkge1xuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNTQ3OC1cbm5ldC9pcHY2L3JvdXRlLmM6NTQ3OTpcdFx0ZXJyID0gaXA2X3JvdXRlX2luZm9fY3JlYXRlX25oKHJ0LCBcdTAwMjZyX2NmZywgR0ZQX0tFUk5FTCwgZXh0YWNrKTtcbm5ldC9pcHY2L3JvdXRlLmMtNTQ4MC1cdFx0aWYgKGVycikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTE4CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNoZWNraW5nIElQdjYgUm91dGluZyBUYWJsZSBGdW5jdGlvbnMqKgoKQWxyaWdodCwgbGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIGEgY291cGxlIG9mIHRoaW5ncyBoZXJlLiBJIHNlZSBgaXA2X3JvdXRlX2luZm9fY3JlYXRlYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoYXQmIzM5O3MgYXMgZXhwZWN0ZWQ7IGl0JiMzOTtzIGxpa2VseSBhbiBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24sIG5vdCBpbnRlbmRlZCBmb3IgZGlyZWN0IGV4dGVybmFsIHVzZS4gTm93LCBJIGhhdmUgdG8gbWFrZSBzdXJlIGBpcDZfcm91dGVfYWRkYCBpc24mIzM5O3Qgc3RhdGljLCBjb3JyZWN0PyBIbW0sIGxldCYjMzk7cyBqdXN0IGRvdWJsZSBjaGVjayB0aGF0IG9uZS4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIGlmIHRoYXQgZnVuY3Rpb24gaXMgZXhwb3NlZCBwdWJsaWNseS4gVGhhdCB3b3VsZCBtYWtlIHRoZSBmdW5jdGlvbiBtdWNoIG1vcmUgdXNlZnVsIGlmIGl0JiMzOTtzIGV4dGVybmFsLCBhbmQgaWYgaXQmIzM5O3MgaW50ZXJuYWwsIGl0IGNvdWxkIHN1Z2dlc3QgYSBwb3NzaWJsZSBlcnJvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXA2X3JvdXRlX2FkZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9pcDZfcm91dGUuaD0xMjM9aW50IGlwdjZfcm91dGVfaW9jdGwoc3RydWN0IG5ldCAqbmV0LCB1bnNpZ25lZCBpbnQgY21kLFxuLS1cbmluY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oLTEyNS1cbmluY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oOjEyNjppbnQgaXA2X3JvdXRlX2FkZChzdHJ1Y3QgZmliNl9jb25maWcgKmNmZywgZ2ZwX3QgZ2ZwX2ZsYWdzLFxuaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmgtMTI3LVx0XHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYz0yNDc3PWFkZHJjb25mX3ByZWZpeF9yb3V0ZShzdHJ1Y3QgaW42X2FkZHIgKnBmeCwgaW50IHBsZW4sIHUzMiBtZXRyaWMsXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy0yNTAzLVxubmV0L2lwdjYvYWRkcmNvbmYuYzoyNTA0Olx0aXA2X3JvdXRlX2FkZChcdTAwMjZjZmcsIGdmcF9mbGFncywgTlVMTCk7XG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI1MDUtfVxuLS1cbm5ldC9pcHY2L2FkZHJjb25mLmM9MjU1Mz1zdGF0aWMgdm9pZCBhZGRyY29uZl9hZGRfbXJvdXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2lwdjYvYWRkcmNvbmYuYy0yNTY3LVxubmV0L2lwdjYvYWRkcmNvbmYuYzoyNTY4Olx0aXA2X3JvdXRlX2FkZChcdTAwMjZjZmcsIEdGUF9LRVJORUwsIE5VTEwpO1xubmV0L2lwdjYvYWRkcmNvbmYuYy0yNTY5LX1cbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTM4NzY9c3RhdGljIGludCBpcDZfcm91dGVfaW5mb19jcmVhdGVfbmgoc3RydWN0IGZpYjZfaW5mbyAqcnQsXG4tLVxubmV0L2lwdjYvcm91dGUuYy0zOTUxLVxubmV0L2lwdjYvcm91dGUuYzozOTUyOmludCBpcDZfcm91dGVfYWRkKHN0cnVjdCBmaWI2X2NvbmZpZyAqY2ZnLCBnZnBfdCBnZnBfZmxhZ3MsXG5uZXQvaXB2Ni9yb3V0ZS5jLTM5NTMtXHRcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NDQxMz1zdGF0aWMgc3RydWN0IGZpYjZfaW5mbyAqcnQ2X2FkZF9yb3V0ZV9pbmZvKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ0MzktXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ0NDA6XHRpcDZfcm91dGVfYWRkKFx1MDAyNmNmZywgR0ZQX0FUT01JQywgTlVMTCk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ0NDEtXG4tLVxubmV0L2lwdjYvcm91dGUuYz00NDc4PXN0cnVjdCBmaWI2X2luZm8gKnJ0Nl9hZGRfZGZsdF9yb3V0ZXIoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDUwMC1cbm5ldC9pcHY2L3JvdXRlLmM6NDUwMTpcdGlmICghaXA2X3JvdXRlX2FkZChcdTAwMjZjZmcsIEdGUF9BVE9NSUMsIE5VTEwpKSB7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ1MDItXHRcdHN0cnVjdCBmaWI2X3RhYmxlICp0YWJsZTtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ1Nzg9aW50IGlwdjZfcm91dGVfaW9jdGwoc3RydWN0IG5ldCAqbmV0LCB1bnNpZ25lZCBpbnQgY21kLCBzdHJ1Y3QgaW42X3J0bXNnICpydG1zZylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ1OTQtXHRcdFx0Y2ZnLmZjX21ldHJpYyA9IElQNl9SVF9QUklPX1VTRVI7XG5uZXQvaXB2Ni9yb3V0ZS5jOjQ1OTU6XHRcdGVyciA9IGlwNl9yb3V0ZV9hZGQoXHUwMDI2Y2ZnLCBHRlBfS0VSTkVMLCBOVUxMKTtcbm5ldC9pcHY2L3JvdXRlLmMtNDU5Ni1cdFx0YnJlYWs7XG4tLVxubmV0L2lwdjYvcm91dGUuYz01NjYxPXN0YXRpYyBpbnQgaW5ldDZfcnRtX25ld3JvdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNTY3Ni1cdGVsc2Vcbm5ldC9pcHY2L3JvdXRlLmM6NTY3NzpcdFx0cmV0dXJuIGlwNl9yb3V0ZV9hZGQoXHUwMDI2Y2ZnLCBHRlBfS0VSTkVMLCBleHRhY2spO1xubmV0L2lwdjYvcm91dGUuYy01Njc4LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY1MQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipGb2N1c2luZyBvbiBJUHY2IFJvdXRpbmcgYW5kIEZJQiBDcmVhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGVzZSBzeW1ib2xzOiBgaXA2X3JvdXRlX2FkZGAgYW5kIGBmaWJfY3JlYXRlX2luZm9gLiBNeSBndXQgdGVsbHMgbWUgdGhlc2UgYXJlIGNlbnRyYWwgdG8gdW5kZXJzdGFuZGluZyBob3cgSVB2NiByb3V0ZXMgYXJlIGFkZGVkIGFuZCBob3cgdGhlIEZvcndhcmRpbmcgSW5mb3JtYXRpb24gQmFzZSAoRklCKSBpcyBjb25zdHJ1Y3RlZCwgd2hpY2ggaXMgcmlnaHQgd2hlcmUgSSB3YW50IHRvIGJlLiBgaXA2X3JvdXRlX2FkZGAgc2NyZWFtcyAmIzM0O2VudHJ5IHBvaW50IGZvciByb3V0aW5nIHRhYmxlIHVwZGF0ZXMmIzM0OyDigJMgYSBwZXJmZWN0IGNhbmRpZGF0ZSBmb3IgZGVlcGVyIGFuYWx5c2lzLiBCdXQgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoZSBgZmliX2NyZWF0ZV9pbmZvYCBzdHJ1Y3R1cmUsIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IGlmIGl0JiMzOTtzIGRlY2xhcmVkIHdpdGggYHN0YXRpY2AuIElmIG5vdCwgaXQgbWVhbnMgdGhpcyBzdHJ1Y3QgaXMgcG90ZW50aWFsbHkgdXNlZCAob3IgY2FuIGJlKSBpbiBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLCB3aGljaCB3b3VsZCBtYWtlIGl0IGV2ZW4gbW9yZSB2YWx1YWJsZSB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcnBsYXkgb2Ygcm91dGluZyB0YWJsZSBtYW5pcHVsYXRpb24gYW5kIGRhdGEgc3RydWN0dXJlcy4gSXQgY291bGQgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgbW9yZSB0aGFuIGp1c3QgdGhpcyBsb2NhbGl6ZWQgcm91dGluZyBmdW5jdGlvbiwgYW5kIHVuZGVyc3RhbmRpbmcgdGhpcyBgZmliX2NyZWF0ZV9pbmZvYCBzdHJ1Y3R1cmUmIzM5O3Mgc2NvcGUgb2YgaW5mbHVlbmNlIHdpbGwgYmUgaW5zdHJ1bWVudGFsIGluIG1hcHBpbmcgdGhlIHdob2xlIGFyY2hpdGVjdHVyZS4gU28sIGxldCYjMzk7cyBjaGVjayBmb3IgdGhhdCBub24tc3RhdGljIHByb3BlcnR5IGZpcnN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmaWJfY3JlYXRlX2luZm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZmliX2xvb2t1cC5oPTM4PXZvaWQgZmliX3JlbGVhc2VfaW5mbyhzdHJ1Y3QgZmliX2luZm8gKik7XG5uZXQvaXB2NC9maWJfbG9va3VwLmg6Mzk6c3RydWN0IGZpYl9pbmZvICpmaWJfY3JlYXRlX2luZm8oc3RydWN0IGZpYl9jb25maWcgKmNmZyxcbm5ldC9pcHY0L2ZpYl9sb29rdXAuaC00MC1cdFx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuLS1cbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYz0xMzUyPXN0YXRpYyBib29sIGZpYl92YWxpZF9wcmVmc3JjKHN0cnVjdCBmaWJfY29uZmlnICpjZmcsIF9fYmUzMiBmaWJfcHJlZnNyYylcbi0tXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMTM3NS1cbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYzoxMzc2OnN0cnVjdCBmaWJfaW5mbyAqZmliX2NyZWF0ZV9pbmZvKHN0cnVjdCBmaWJfY29uZmlnICpjZmcsXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMTM3Ny1cdFx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L2lwdjQvZmliX3RyaWUuYz0xMTk0PWludCBmaWJfdGFibGVfaW5zZXJ0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZpYl90YWJsZSAqdGIsXG4tLVxubmV0L2lwdjQvZmliX3RyaWUuYy0xMjExLVxubmV0L2lwdjQvZmliX3RyaWUuYzoxMjEyOlx0ZmkgPSBmaWJfY3JlYXRlX2luZm8oY2ZnLCBleHRhY2spO1xubmV0L2lwdjQvZmliX3RyaWUuYy0xMjEzLVx0aWYgKElTX0VSUihmaSkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzMwNAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIGBmaWJfY3JlYXRlX2luZm9gIGlzbiYjMzk7dCBzdGF0aWMsIHdoaWNoIG1ha2VzIGl0IGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24uIFNhbWUgd2l0aCBgaXA2X3JvdXRlX2FkZGAuIEFuZCwgaGFuZyBvbiwgYGlwX2ZpYl9tZXRyaWNzX2luaXRgIGlzIGFsc28gbm9uLXN0YXRpYywgc28gdGhhdCYjMzk7cyBhbm90aGVyIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIHBvaW50LgoKTm93LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQgaGVyZS4gQWgsIGBDT05GSUdfSU5FVGAgc2hvdWxkIGRvIHRoZSB0cmljay4gQWxyaWdodCwgd2FpdCBhIHNlY29uZC4uLiBgUlRBWF9BRFZNU1NgLi4uIHRoYXQmIzM5O3MgcmVsYXRlZCB0byBUQ1AgTWF4aW11bSBTZWdtZW50IFNpemUuIEhtbSwgaXMgdGhlcmUgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbiBqdXN0IGZvciBgUlRBWF9BRFZNU1NgPyBOb3BlLCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgc3RhbmRhcmQgbmV0bGluayBhdHRyaWJ1dGUuCgpTbywgdGhlIGNydXggb2YgdGhpcyBwYXRjaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlOiBpdCYjMzk7cyBhZGRpbmcgYSBjaGVjayB0byByZWplY3QgaW52YWxpZCBgUlRBWF9BRFZNU1NgIHZhbHVlcyBpZiB0aGV5IGZhbGwgYmVsb3cgYFRDUF9NSU5fTVNTYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgY2hhbmdlIHRoYXQgd2FycmFudHMgc29tZSBmdXp6aW5nLiBMZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYFRDUF9NSU5fTVNTYCBtYWNybyBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VENQX01JTl9NU1MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvdGNwLmg9Njg9dm9pZCB0Y3BfdGltZV93YWl0KHN0cnVjdCBzb2NrICpzaywgaW50IHN0YXRlLCBpbnQgdGltZW8pO1xuLS1cbmluY2x1ZGUvbmV0L3RjcC5oLTgxLS8qIE1pbmltYWwgYWNjZXB0ZWQgTVNTLiBJdCBpcyAoNjAmIzQzOzYwJiM0Mzs4KSAtICgyMCYjNDM7MjApLiAqL1xuaW5jbHVkZS9uZXQvdGNwLmg6ODI6I2RlZmluZSBUQ1BfTUlOX01TU1x0XHQ4OFVcbmluY2x1ZGUvbmV0L3RjcC5oLTgzLVxuLS1cbm5ldC9pcHY0L21ldHJpY3MuYz0xMD1zdGF0aWMgaW50IGlwX21ldHJpY3NfY29udmVydChzdHJ1Y3QgbmxhdHRyICpmY19teCxcbi0tXG5uZXQvaXB2NC9tZXRyaWNzLmMtNDYtXHRcdH1cbm5ldC9pcHY0L21ldHJpY3MuYzo0NzpcdFx0aWYgKHR5cGUgPT0gUlRBWF9BRFZNU1MgXHUwMDI2XHUwMDI2IHZhbCBcdTAwMjZcdTAwMjYgdmFsIFx1MDAzYyBUQ1BfTUlOX01TUykge1xubmV0L2lwdjQvbWV0cmljcy5jLTQ4LVx0XHRcdE5MX1NFVF9FUlJfTVNHX0FUVFJfRk1UKGV4dGFjaywgbmxhLFxubmV0L2lwdjQvbWV0cmljcy5jLTQ5LVx0XHRcdFx0XHRcdFwmIzM0O0ludmFsaWQgYWR2bXNzLCBtdXN0IGJlIDAgb3IgXHUwMDNlPSAldVwmIzM0Oyxcbm5ldC9pcHY0L21ldHJpY3MuYzo1MDpcdFx0XHRcdFx0XHRUQ1BfTUlOX01TUyk7XG5uZXQvaXB2NC9tZXRyaWNzLmMtNTEtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxubmV0L2lwdjQvdGNwLmM9MzM2MT1pbnQgdGNwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNrLCBpbnQgZmxhZ3MpXG4tLVxubmV0L2lwdjQvdGNwLmMtMzQ0NC1cdGluZXRfY3NrX2RlbGFja19pbml0KHNrKTtcbm5ldC9pcHY0L3RjcC5jOjM0NDU6XHQvKiBJbml0aWFsaXplIHJjdl9tc3MgdG8gVENQX01JTl9NU1MgdG8gYXZvaWQgZGl2aXNpb24gYnkgMFxubmV0L2lwdjQvdGNwLmMtMzQ0Ni1cdCAqIGlzc3VlIGluIF9fdGNwX3NlbGVjdF93aW5kb3coKVxubmV0L2lwdjQvdGNwLmMtMzQ0Ny1cdCAqL1xubmV0L2lwdjQvdGNwLmM6MzQ0ODpcdGljc2stXHUwMDNlaWNza19hY2sucmN2X21zcyA9IFRDUF9NSU5fTVNTO1xubmV0L2lwdjQvdGNwLmMtMzQ0OS1cdG1lbXNldChcdTAwMjZ0cC1cdTAwM2VyeF9vcHQsIDAsIHNpemVvZih0cC1cdTAwM2VyeF9vcHQpKTtcbi0tXG5uZXQvaXB2NC90Y3AuYz0zODIxPWludCB0Y3Bfc29ja19zZXRfbWF4c2VnKHN0cnVjdCBzb2NrICpzaywgaW50IHZhbClcbi0tXG5uZXQvaXB2NC90Y3AuYy0zODI2LVx0ICovXG5uZXQvaXB2NC90Y3AuYzozODI3Olx0aWYgKHZhbCBcdTAwMjZcdTAwMjYgKHZhbCBcdTAwM2MgVENQX01JTl9NU1MgfHwgdmFsIFx1MDAzZSBNQVhfVENQX1dJTkRPVykpXG5uZXQvaXB2NC90Y3AuYy0zODI4LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz0yMjc9c3RhdGljIHZvaWQgdGNwX21lYXN1cmVfcmN2X21zcyhzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtMjkxLVx0XHQgICAgICovXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzoyOTI6XHRcdCAgICAobGVuIFx1MDAzZT0gVENQX01JTl9NU1MgJiM0Mzsgc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpIFx1MDAyNlx1MDAyNlxubmV0L2lwdjQvdGNwX2lucHV0LmMtMjkzLVx0XHQgICAgICEodGNwX2ZsYWdfd29yZCh0Y3BfaGRyKHNrYikpIFx1MDAyNiBUQ1BfUkVNTkFOVCkpKSB7XG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmM9ODA2PXZvaWQgdGNwX2luaXRpYWxpemVfcmN2X21zcyhzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtODEyLVx0aGludCA9IG1pbihoaW50LCBUQ1BfTVNTX0RFRkFVTFQpO1xubmV0L2lwdjQvdGNwX2lucHV0LmM6ODEzOlx0aGludCA9IG1heChoaW50LCBUQ1BfTUlOX01TUyk7XG5uZXQvaXB2NC90Y3BfaW5wdXQuYy04MTQtXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmM9Mjk1OT1zdGF0aWMgdm9pZCBtcHRjcF9kb19mYXN0Y2xvc2Uoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jLTI5ODItXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoyOTgzOlx0XHQvKiBJbml0aWFsaXplIHJjdl9tc3MgdG8gVENQX01JTl9NU1MgdG8gYXZvaWQgZGl2aXNpb24gYnkgMFxubmV0L21wdGNwL3Byb3RvY29sLmMtMjk4NC1cdFx0ICogaXNzdWUgaW4gX190Y3Bfc2VsZWN0X3dpbmRvdygpLCBzZWUgdGNwX2Rpc2Nvbm5lY3QoKS5cbm5ldC9tcHRjcC9wcm90b2NvbC5jLTI5ODUtXHRcdCAqL1xubmV0L21wdGNwL3Byb3RvY29sLmM6Mjk4NjpcdFx0aW5ldF9jc2soc3NrKS1cdTAwM2VpY3NrX2Fjay5yY3ZfbXNzID0gVENQX01JTl9NU1M7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yOTg3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Nzk3CgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIGNoZWNrIHdpdGhpbiBgaXBfbWV0cmljc19jb252ZXJ0YCwgd2hpY2ggZ2V0cyBpbnZva2VkIGR1cmluZyByb3V0ZSBjcmVhdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyByZWplY3Rpbmcgcm91dGVzIHdoZXJlIHRoZSBgUlRBWF9BRFZNU1NgIHZhbHVlIGlzIGxlc3MgdGhhbiA4OC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgaW1wb3J0YW50bHksIGl0JiMzOTtzIHJlYWNoYWJsZSB2aWEgYSBuZXRsaW5rIHJvdXRlIGNyZWF0aW9uLiBUaGF0IG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBnaXZlbiBteSBleHBlcmllbmNlLgoKTXkgZm9jdXMgc2hvdWxkIGJlIG9uIHVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQg4oCTIEkgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgYGlwX2ZpYl9tZXRyaWNzX2luaXRgLCBgZmliX2NyZWF0ZV9pbmZvYCwgYW5kIGBpcDZfcm91dGVfYWRkYCB0byBncmFzcCBob3cgdGhpcyBuZXcgY2hlY2sgaW50ZXJhY3RzIHdpdGggdGhlIGV4aXN0aW5nIHJvdXRlIG1hbmFnZW1lbnQgcm91dGluZXMuIFVuZGVyc3RhbmRpbmcgd2hlcmUgdGhlIGBSVEFYX0FEVk1TU2AgdmFsdWUgb3JpZ2luYXRlcyBpcyBjcnVjaWFsIGZvciBjcmFmdGluZyBlZmZlY3RpdmUgZnV6emluZyBpbnB1dHMuIEkgYWxzbyBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIHRlc3Rpbmcgd2l0aCB0aGUgYElORVRgIGNvbmZpZ3VyYXRpb24gZW5hYmxlZCB0byBlbnN1cmUgdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMgYXJlIGV4ZXJjaXNlZC4KCkxldCYjMzk7cyBnZXQgdGhvc2UgcmVzdWx0cyBzZXQgdXAuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYmVzdCBhcHByb2FjaCB0byBmdXp6IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfZmliX21ldHJpY3NfaW5pdCYjMzQ7LAogICAgJiMzNDtmaWJfY3JlYXRlX2luZm8mIzM0OywKICAgICYjMzQ7aXA2X3JvdXRlX2FkZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgZnVuY3Rpb25hbCB2YWxpZGF0aW9uIGNoZWNrIGZvciB0aGUgUlRBWF9BRFZNU1MgbWV0cmljIGR1cmluZyBJUHY0IGFuZCBJUHY2IHJvdXRlIGNyZWF0aW9uLiBJdCByZWplY3RzIHJvdXRlcyB3aXRoIGFuIGFkdm1zcyB2YWx1ZSBsZXNzIHRoYW4gVENQX01JTl9NU1MgKDg4KS4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgcm91dGUgY29uZmlndXJhdGlvbiBhbmQgYWZmZWN0cyBjb3JlIG5ldHdvcmtpbmcgYmVoYXZpb3IsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9maWJfbWV0cmljc19pbml0JiMzNDssCiAgICAmIzM0O2ZpYl9jcmVhdGVfaW5mbyYjMzQ7LAogICAgJiMzNDtpcDZfcm91dGVfYWRkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBSVEFYX0FEVk1TUyBtZXRyaWMgZHVyaW5nIElQdjQgYW5kIElQdjYgcm91dGUgY3JlYXRpb24uIEl0IHJlamVjdHMgcm91dGVzIHdpdGggYW4gYWR2bXNzIHZhbHVlIGxlc3MgdGhhbiBUQ1BfTUlOX01TUyAoODgpLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayByb3V0ZSBjb25maWd1cmF0aW9uIGFuZCBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBiZWhhdmlvciwgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODoxODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIGBSVEFYX0FEVk1TU2AgbWV0cmljIHZhbHVlIGluIGBpcF9tZXRyaWNzX2NvbnZlcnRgLiBJdCB2ZXJpZmllcyB0aGF0IHRoZSB2YWx1ZSBpcyBlaXRoZXIgMCBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYFRDUF9NSU5fTVNTYCwgYW5kIHJldHVybnMgYC1FSU5WQUxgIGlmIGl0IGlzIG5vdC4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgaXQgZG9lcyBub3QgZXhwb3NlIGFueSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBBbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGJlIGxvZ2ljIGVycm9ycyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgY292ZXJlZCBieSBzdGFuZGFyZCB0ZXN0aW5nIGFuZCBLQVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgM2IwOGFkYWQ4ZTU1YTBmNWZkMTFhYjYyMTMyYmU4YTMzZGJhZGM2OApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDE4OjE3OjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbWV0cmljcy5jIGIvbmV0L2lwdjQvbWV0cmljcy5jCmluZGV4IGFkNDA3NjJhOGIzODMuLmI5Yjk3YTBhNTEyNmIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L21ldHJpY3MuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9tZXRyaWNzLmMKQEAgLTQ0LDYgJiM0Mzs0NCwxMiBAQCBzdGF0aWMgaW50IGlwX21ldHJpY3NfY29udmVydChzdHJ1Y3QgbmxhdHRyICpmY19teCwKIAkJCX0KIAkJCXZhbCA9IG5sYV9nZXRfdTMyKG5sYSk7CiAJCX0KJiM0MzsJCWlmICh0eXBlID09IFJUQVhfQURWTVNTICZhbXA7JmFtcDsgdmFsICZhbXA7JmFtcDsgdmFsICZsdDsgVENQX01JTl9NU1MpIHsKJiM0MzsJCQlOTF9TRVRfRVJSX01TR19BVFRSX0ZNVChleHRhY2ssIG5sYSwKJiM0MzsJCQkJCQkmIzM0O0ludmFsaWQgYWR2bXNzLCBtdXN0IGJlIDAgb3IgJmd0Oz0gJXUmIzM0OywKJiM0MzsJCQkJCQlUQ1BfTUlOX01TUyk7CiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQl9CiAJCWlmICh0eXBlID09IFJUQVhfQURWTVNTICZhbXA7JmFtcDsgdmFsICZndDsgNjU1MzUgLSA0MCkKIAkJCXZhbCA9IDY1NTM1IC0gNDA7CiAJCWlmICh0eXBlID09IFJUQVhfTVRVICZhbXA7JmFtcDsgdmFsICZndDsgNjU1MzUgLSAxNSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjUKCQkJCQkJCW91dHB1dDogMTU3CgkJCQkJCQl0aG91Z2h0czogMjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIGNhbiBzZWUsIHRoaXMgcGF0Y2ggaXMgc3RyYWlnaHRmb3J3YXJkLiBJbiB0aGUgYGlwX21ldHJpY3NfY29udmVydGAgZnVuY3Rpb24gd2l0aGluIGBuZXQvaXB2NC9tZXRyaWNzLmNgLCBpdCYjMzk7cyBhZGRpbmcgYSBzcGVjaWZpYyBjaGVjay4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyB2YWxpZGF0aW5nIGEgTmV0bGluayBhdHRyaWJ1dGUgdmFsdWUsIGB2YWxgLCBhc3NvY2lhdGVkIHdpdGggYFJUQVhfQURWTVNTYC4gVGhlIGNoZWNrIGlzIGRlc2lnbmVkIHRvIGVuc3VyZSB0aGF0IGlmIGBSVEFYX0FEVk1TU2AgaXMgcHJlc2VudCAoYHR5cGUgPT0gUlRBWF9BRFZNU1NgKSwgYW5kIHRoZSB2YWx1ZSBgdmFsYCBleGlzdHMgKGB2YWxgKSwgdGhlbiBgdmFsYCBoYXMgdG8gYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBUQ1BfTUlOX01TU2AuIElmIG5vdCwgaXQgcmV0dXJucyBgLUVJTlZBTGAuCgpFc3NlbnRpYWxseSwgaXQmIzM5O3MgYSBib3VuZHMgY2hlY2sgb24gdXNlci1wcm92aWRlZCBpbnB1dC4gSXQmIzM5O3MgdXNpbmcgYG5sYV9nZXRfdTMyYCB0byByZXRyaWV2ZSB0aGUgdmFsdWUuIENyaXRpY2FsbHksIHRoZXJlJiMzOTtzIG5vIGV2aWRlbmNlIG9mIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB1c2VkIGhlcmUuIEl0JiMzOTtzIHNpbXBseSB2ZXJpZnlpbmcgdGhlIHZhbGlkaXR5IG9mIHRoZSBwcm92aWRlZCB2YWx1ZS4KCkxvb2tpbmcgYXQgdGhlIGNvZGUgc25pcHBldCBhZ2FpbjoKCmBgYGMKCQlpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyAmYW1wOyZhbXA7IHZhbCAmYW1wOyZhbXA7IHZhbCAmbHQ7IFRDUF9NSU5fTVNTKSB7CgkJCU5MX1NFVF9FUlJfTVNHX0FUVFJfRk1UKGV4dGFjaywgbmxhLAoJCQkJCQkmIzM0O0ludmFsaWQgYWR2bXNzLCBtdXN0IGJlIDAgb3IgJmd0Oz0gJXUmIzM0OywKCQkJCQkJVENQX01JTl9NU1MpOwoJCQlyZXR1cm4gLUVJTlZBTDsKCQl9CmBgYAoKVGhpcyBjb25maXJtcyBteSBpbml0aWFsIGltcHJlc3Npb24uIEl0JiMzOTtzIGEgY2xlYW4gdmFsaWRhdGlvbjsgdGhlIGNvZGUgaXRzZWxmIGRlbW9uc3RyYXRlcyB0aGUgY2hlY2suIEdpdmVuIHRoaXMsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgLiBUaGlzIHBhdGNoIGRvZXMgbm90IHNlZW0gdG8gaW50cm9kdWNlIGFueSBLTVNBTiBjb25jZXJucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBgUlRBWF9BRFZNU1NgIG1ldHJpYyB2YWx1ZSBpbiBgaXBfbWV0cmljc19jb252ZXJ0YC4gSXQgdmVyaWZpZXMgdGhhdCB0aGUgdmFsdWUgaXMgZWl0aGVyIDAgb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBUQ1BfTUlOX01TU2AsIGFuZCByZXR1cm5zIGAtRUlOVkFMYCBpZiBpdCBpcyBub3QuIFRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGl0IGRvZXMgbm90IGV4cG9zZSBhbnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBiZSBsb2dpYyBlcnJvcnMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIGBSVEFYX0FEVk1TU2AgbWV0cmljIHZhbHVlIGluIGBpcF9tZXRyaWNzX2NvbnZlcnRgLiBJdCB2ZXJpZmllcyB0aGF0IHRoZSB2YWx1ZSBpcyBlaXRoZXIgMCBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYFRDUF9NSU5fTVNTYCwgYW5kIHJldHVybnMgYC1FSU5WQUxgIGlmIGl0IGlzIG5vdC4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgaXQgZG9lcyBub3QgZXhwb3NlIGFueSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBBbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGJlIGxvZ2ljIGVycm9ycyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgY292ZXJlZCBieSBzdGFuZGFyZCB0ZXN0aW5nIGFuZCBLQVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6MTc6NTEuNDAzODU5NjY1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ2MjEwNjQ3NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX2ZpYl9tZXRyaWNzX2luaXRcIixcbiAgICBcImZpYl9jcmVhdGVfaW5mb1wiLFxuICAgIFwiaXA2X3JvdXRlX2FkZFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBgUlRBWF9BRFZNU1NgIG1ldHJpYyB2YWx1ZSBpbiBgaXBfbWV0cmljc19jb252ZXJ0YC4gSXQgdmVyaWZpZXMgdGhhdCB0aGUgdmFsdWUgaXMgZWl0aGVyIDAgb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBUQ1BfTUlOX01TU2AsIGFuZCByZXR1cm5zIGAtRUlOVkFMYCBpZiBpdCBpcyBub3QuIFRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGl0IGRvZXMgbm90IGV4cG9zZSBhbnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBiZSBsb2dpYyBlcnJvcnMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIFJUQVhfQURWTVNTIG1ldHJpYyBkdXJpbmcgSVB2NCBhbmQgSVB2NiByb3V0ZSBjcmVhdGlvbi4gSXQgcmVqZWN0cyByb3V0ZXMgd2l0aCBhbiBhZHZtc3MgdmFsdWUgbGVzcyB0aGFuIFRDUF9NSU5fTVNTICg4OCkuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIHJvdXRlIGNvbmZpZ3VyYXRpb24gYW5kIGFmZmVjdHMgY29yZSBuZXR3b3JraW5nIGJlaGF2aW9yLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxNzo1MS40MDM4NjgzOTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzMxNzExNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNiMDhhZGFkOGU1NWEwZjVmZDExYWI2MjEzMmJlOGEzM2RiYWRjNjhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMTMgMTg6MTc6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbWV0cmljcy5jIGIvbmV0L2lwdjQvbWV0cmljcy5jXFxuaW5kZXggYWQ0MDc2MmE4YjM4My4uYjliOTdhMGE1MTI2YiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9tZXRyaWNzLmNcXG4rKysgYi9uZXQvaXB2NC9tZXRyaWNzLmNcXG5AQCAtNDQsNiArNDQsMTIgQEAgc3RhdGljIGludCBpcF9tZXRyaWNzX2NvbnZlcnQoc3RydWN0IG5sYXR0ciAqZmNfbXgsXFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0dmFsID0gbmxhX2dldF91MzIobmxhKTtcXG4gXFx0XFx0fVxcbitcXHRcXHRpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyBcXHUwMDI2XFx1MDAyNiB2YWwgXFx1MDAyNlxcdTAwMjYgdmFsIFxcdTAwM2MgVENQX01JTl9NU1MpIHtcXG4rXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0dfQVRUUl9GTVQoZXh0YWNrLCBubGEsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcXCJJbnZhbGlkIGFkdm1zcywgbXVzdCBiZSAwIG9yIFxcdTAwM2U9ICV1XFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0VENQX01JTl9NU1MpO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0fVxcbiBcXHRcXHRpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyBcXHUwMDI2XFx1MDAyNiB2YWwgXFx1MDAzZSA2NTUzNSAtIDQwKVxcbiBcXHRcXHRcXHR2YWwgPSA2NTUzNSAtIDQwO1xcbiBcXHRcXHRpZiAodHlwZSA9PSBSVEFYX01UVSBcXHUwMDI2XFx1MDAyNiB2YWwgXFx1MDAzZSA2NTUzNSAtIDE1KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxNzo1MS44Mzc4NzI4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDYyMjYxMzk5MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX2ZpYl9tZXRyaWNzX2luaXRcIixcbiAgICBcImZpYl9jcmVhdGVfaW5mb1wiLFxuICAgIFwiaXA2X3JvdXRlX2FkZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBSVEFYX0FEVk1TUyBtZXRyaWMgZHVyaW5nIElQdjQgYW5kIElQdjYgcm91dGUgY3JlYXRpb24uIEl0IHJlamVjdHMgcm91dGVzIHdpdGggYW4gYWR2bXNzIHZhbHVlIGxlc3MgdGhhbiBUQ1BfTUlOX01TUyAoODgpLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayByb3V0ZSBjb25maWd1cmF0aW9uIGFuZCBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBiZWhhdmlvciwgc28gaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2IwOGFkYWQ4ZTU1YTBmNWZkMTFhYjYyMTMyYmU4YTMzZGJhZGM2OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDE4OjE3OjUwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbWV0cmljcy5jIGIvbmV0L2lwdjQvbWV0cmljcy5jXG5pbmRleCBhZDQwNzYyYThiMzgzLi5iOWI5N2EwYTUxMjZiIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvbWV0cmljcy5jXG4rKysgYi9uZXQvaXB2NC9tZXRyaWNzLmNcbkBAIC00NCw2ICs0NCwxMiBAQCBzdGF0aWMgaW50IGlwX21ldHJpY3NfY29udmVydChzdHJ1Y3QgbmxhdHRyICpmY19teCxcbiBcdFx0XHR9XG4gXHRcdFx0dmFsID0gbmxhX2dldF91MzIobmxhKTtcbiBcdFx0fVxuK1x0XHRpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyBcdTAwMjZcdTAwMjYgdmFsIFx1MDAyNlx1MDAyNiB2YWwgXHUwMDNjIFRDUF9NSU5fTVNTKSB7XG4rXHRcdFx0TkxfU0VUX0VSUl9NU0dfQVRUUl9GTVQoZXh0YWNrLCBubGEsXG4rXHRcdFx0XHRcdFx0XCJJbnZhbGlkIGFkdm1zcywgbXVzdCBiZSAwIG9yIFx1MDAzZT0gJXVcIixcbitcdFx0XHRcdFx0XHRUQ1BfTUlOX01TUyk7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbiBcdFx0aWYgKHR5cGUgPT0gUlRBWF9BRFZNU1MgXHUwMDI2XHUwMDI2IHZhbCBcdTAwM2UgNjU1MzUgLSA0MClcbiBcdFx0XHR2YWwgPSA2NTUzNSAtIDQwO1xuIFx0XHRpZiAodHlwZSA9PSBSVEFYX01UVSBcdTAwMjZcdTAwMjYgdmFsIFx1MDAzZSA2NTUzNSAtIDE1KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6MTc6NTEuODM3ODc0MjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDY3NDM5MTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYFJUQVhfQURWTVNTYCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvaXB2NC9tZXRyaWNzLmNgLiBJdCdzIHN0cmFpZ2h0Zm9yd2FyZDogdGhleSd2ZSBhZGRlZCBhIHZhbGlkYXRpb24gY2hlY2sgd2l0aGluIGBpcF9tZXRyaWNzX2NvbnZlcnRgIGZvciBgUlRBWF9BRFZNU1NgLiBUaGUgbmV3IGNvZGUgaXMgZGVzaWduZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGFkdmFuY2VkIE1TUyB2YWx1ZSAoYHZhbGApIGlzIGVpdGhlciB6ZXJvIG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgVENQX01JTl9NU1NgLiBUaGUgc3BlY2lmaWMgY2hlY2sgdXNlcyBgTkxfU0VUX0VSUl9NU0dfQVRUUl9GTVRgIHRvIHNldCBhbiBlcnJvciBtZXNzYWdlIGlmIHRoZSB2YWx1ZSBpcyBpbnZhbGlkLiBUaGF0J3MgZ29vZCwgcHJldmVudHMgc2lsbHkgY29uZmlndXJhdGlvbnMuXG5cblRoZSBjb3JlIG9mIHRoaXMgaXMgdGhhdCB0aGUgY29kZSBsb29rcyBsaWtlOlxuXG5gYGBjXG5cdFx0aWYgKHR5cGUgPT0gUlRBWF9BRFZNU1MgXHUwMDI2XHUwMDI2IHZhbCBcdTAwMjZcdTAwMjYgdmFsIFx1MDAzYyBUQ1BfTUlOX01TUykge1xuXHRcdFx0TkxfU0VUX0VSUl9NU0dfQVRUUl9GTVQoZXh0YWNrLCBubGEsXG5cdFx0XHRcdFx0XHRcIkludmFsaWQgYWR2bXNzLCBtdXN0IGJlIDAgb3IgXHUwMDNlPSAldVwiLFxuXHRcdFx0XHRcdFx0VENQX01JTl9NU1MpO1xuXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG5cdFx0fVxuYGBgXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBiZXR0ZXIuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBpcF9tZXRyaWNzX2NvbnZlcnRgIGl0c2VsZi4gV2hhdCBkb2VzIGl0IGFjdHVhbGx5IGRvPyBXaGVyZSBpcyBpdCAqdXNlZCo/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHdoYXQncyB0cmlnZ2VyaW5nIHRoaXMgY29udmVyc2lvbi4gS25vd2luZyB0aGUgY2FsbGluZyBjb250ZXh0cyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIGFuZCB3aGV0aGVyIGl0IGludHJvZHVjZXMgYW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIG9yIHJhY2UgY29uZGl0aW9ucy4gS25vd2luZyB3aGF0IGNhbGxzIHRoaXMgaXMga2V5LCBzbyBJJ2xsIGNoZWNrIHRoYXQgbmV4dC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIHZhbGlkYXRpb24gaXMgdHJpZ2dlcmVkIGF0IGFsbCByZWxldmFudCBwb2ludHMuIEknbGwgcHJvYmFibHkgYWxzbyBjaGVjayB0aGUgc3Vycm91bmRpbmcgY29kZSBmb3Igc2ltaWxhciBjaGVja3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxNzo1Ni45MDUzMTY2MzJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTczMTg5NjIzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9tZXRyaWNzX2NvbnZlcnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbWV0cmljcy5jLTktXFxubmV0L2lwdjQvbWV0cmljcy5jOjEwOnN0YXRpYyBpbnQgaXBfbWV0cmljc19jb252ZXJ0KHN0cnVjdCBubGF0dHIgKmZjX214LFxcbm5ldC9pcHY0L21ldHJpY3MuYy0xMS1cXHRcXHRcXHQgICAgICBpbnQgZmNfbXhfbGVuLCB1MzIgKm1ldHJpY3MsXFxuLS1cXG5uZXQvaXB2NC9tZXRyaWNzLmM9NzI9c3RydWN0IGRzdF9tZXRyaWNzICppcF9maWJfbWV0cmljc19pbml0KHN0cnVjdCBubGF0dHIgKmZjX214LFxcbi0tXFxubmV0L2lwdjQvbWV0cmljcy5jLTg1LVxcbm5ldC9pcHY0L21ldHJpY3MuYzo4NjpcXHRlcnIgPSBpcF9tZXRyaWNzX2NvbnZlcnQoZmNfbXgsIGZjX214X2xlbiwgZmliX21ldHJpY3MtXFx1MDAzZW1ldHJpY3MsXFxubmV0L2lwdjQvbWV0cmljcy5jLTg3LVxcdFxcdFxcdFxcdCBleHRhY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxNzo1OC42MzcyMTc5OTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQzMTIzNTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJUCBGSUIgTWV0cmljcyBJbml0aWFsaXphdGlvbioqXG5cblJpZ2h0LCBzbyBgaXBfbWV0cmljc19jb252ZXJ0YCBpcyBjbGVhcmx5IGEgZnVuY3Rpb24gaW52b2x2ZWQgaW4gY29udmVydGluZyBzb21lIHNvcnQgb2YgSVAgbWV0cmljcywgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgYnkgYGlwX2ZpYl9tZXRyaWNzX2luaXRgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MgdHJhY2UgdGhpcyBiYWNrLiBXaGVyZSBpcyBgaXBfZmliX21ldHJpY3NfaW5pdGAgYWN0dWFsbHkgYmVpbmcgaW52b2tlZD8gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBncmFwaCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgcGljdHVyZSBvZiB0aGUgY29udGV4dCBzdXJyb3VuZGluZyB0aG9zZSBtZXRyaWNzIGNvbnZlcnNpb25zLiBLbm93aW5nIHdoZXJlIGBpcF9maWJfbWV0cmljc19pbml0YCBpcyBjYWxsZWQgaXMgdGhlIGNyaXRpY2FsIHBpZWNlIG9mIHRoaXMgcHV6emxlIHJpZ2h0IG5vdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4NCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjE4OjAxLjk4MDM0Mzk4MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODM3NDc5ODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX2ZpYl9tZXRyaWNzX2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvaXAuaD01MDk9c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaXBfc2tiX2RzdF9tdHUoc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxuaW5jbHVkZS9uZXQvaXAuaC01MjQtXFxuaW5jbHVkZS9uZXQvaXAuaDo1MjU6c3RydWN0IGRzdF9tZXRyaWNzICppcF9maWJfbWV0cmljc19pbml0KHN0cnVjdCBubGF0dHIgKmZjX214LCBpbnQgZmNfbXhfbGVuLFxcbmluY2x1ZGUvbmV0L2lwLmgtNTI2LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuLS1cXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM9MTM3Nj1zdHJ1Y3QgZmliX2luZm8gKmZpYl9jcmVhdGVfaW5mbyhzdHJ1Y3QgZmliX2NvbmZpZyAqY2ZnLFxcbi0tXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE0MzQtXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjE0MzU6XFx0ZmktXFx1MDAzZWZpYl9tZXRyaWNzID0gaXBfZmliX21ldHJpY3NfaW5pdChjZmctXFx1MDAzZWZjX214LCBjZmctXFx1MDAzZWZjX214X2xlbiwgZXh0YWNrKTtcXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMTQzNi1cXHRpZiAoSVNfRVJSKGZpLVxcdTAwM2VmaWJfbWV0cmljcykpIHtcXG4tLVxcbm5ldC9pcHY0L21ldHJpY3MuYz0xMD1zdGF0aWMgaW50IGlwX21ldHJpY3NfY29udmVydChzdHJ1Y3QgbmxhdHRyICpmY19teCxcXG4tLVxcbm5ldC9pcHY0L21ldHJpY3MuYy03MS1cXG5uZXQvaXB2NC9tZXRyaWNzLmM6NzI6c3RydWN0IGRzdF9tZXRyaWNzICppcF9maWJfbWV0cmljc19pbml0KHN0cnVjdCBubGF0dHIgKmZjX214LFxcbm5ldC9pcHY0L21ldHJpY3MuYy03My1cXHRcXHRcXHRcXHRcXHRpbnQgZmNfbXhfbGVuLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz0zODA5PXN0YXRpYyBzdHJ1Y3QgZmliNl9pbmZvICppcDZfcm91dGVfaW5mb19jcmVhdGUoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTM4MzgtXFxubmV0L2lwdjYvcm91dGUuYzozODM5OlxcdHJ0LVxcdTAwM2VmaWI2X21ldHJpY3MgPSBpcF9maWJfbWV0cmljc19pbml0KGNmZy1cXHUwMDNlZmNfbXgsIGNmZy1cXHUwMDNlZmNfbXhfbGVuLFxcbm5ldC9pcHY2L3JvdXRlLmMtMzg0MC1cXHRcXHRcXHRcXHRcXHQgICAgICAgZXh0YWNrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6MTg6MDMuODE3ODM1OTgxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ5MjA1MDUzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSb3V0ZSBDcmVhdGlvbiBMb2dpYyBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIGhpdHRpbmcgc29tZSByb3V0ZSBjcmVhdGlvbiBsb2dpYyDigJMgc3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHdlJ3JlIHRvdWNoaW5nIG9uIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgdGhlIGBSVEFYX0FEVk1TU2AgbWV0cmljLiBUaGlzIGlzIGFsbCBraWNrZWQgb2ZmIGJ5IGNhbGxzIHRvIGBmaWJfY3JlYXRlX2luZm9gIGluIGBuZXQvaXB2NC9maWJfc2VtYW50aWNzLmNgIGFuZCBgaXA2X3JvdXRlX2luZm9fY3JlYXRlYCBpbiBgbmV0L2lwdjYvcm91dGUuY2Agd2hpY2gsIGlmIEkgcmVtZW1iZXIgY29ycmVjdGx5LCBhcmUgYm90aCBhY2Nlc3NpYmxlIHRocm91Z2ggbmV0bGluay5cblxuVGhlIHBhdGNoIHNlZW1zIHRvIGFkZCBhIGNoZWNrIGZvciBgUlRBWF9BRFZNU1NgLiBFc3NlbnRpYWxseSwgaXQncyByZWplY3Rpbmcgcm91dGVzIHdoZXJlIGBSVEFYX0FEVk1TU2AgaXMgbGVzcyB0aGFuIGBUQ1BfTUlOX01TU2AgKGlmIGBSVEFYX0FEVk1TU2AgaXMgZ3JlYXRlciB0aGFuIDApLCB3aGljaCBpcyBhIGdvb2QgZGVmZW5zaXZlIG1lYXN1cmUuIEZ1bmN0aW9uYWxseSwgdGhpcyBsb29rcyBsaWtlIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbk5vdywgd2hlcmUncyB0aGUgYmVzdCBwbGFjZSB0byBkaWcgaW4gdG8gdW5kZXJzdGFuZCB0aGlzIGluIG1vcmUgZGV0YWlsPyBJIG5lZWQgdG8gbG9vayBhdCBob3cgdGhlc2UgbWV0cmljcyBhcmUgaW5pdGlhbGl6ZWQgYW5kIGNvbnZlcnRlZC4gTGV0J3Mgc2VlLi4uIGBpcF9maWJfbWV0cmljc19pbml0YCBhbmQgYGlwX21ldHJpY3NfY29udmVydGAuIGBpcF9maWJfbWV0cmljc19pbml0YCBpcyBub24tc3RhdGljLCB3aGljaCBtYWtlcyBpdCBhIGdyZWF0IHRhcmdldCBzeW1ib2wuIGBpcF9tZXRyaWNzX2NvbnZlcnRgIGlzIHN0YXRpYywgd2hpY2ggaXMgbGVzcyB1c2VmdWwgZm9yIGV4dGVybmFsIGluc3BlY3Rpb24uIFNvIGBpcF9maWJfbWV0cmljc19pbml0YCBsb29rcyBsaWtlIGEgc3Ryb25nIGZvY3VzLiBBbG9uZyB3aXRoIHRoZSByb3V0ZSBjcmVhdGlvbiBmdW5jdGlvbnMgSSBtZW50aW9uZWQgZWFybGllciAoYGZpYl9jcmVhdGVfaW5mb2AgYW5kIGBpcDZfcm91dGVfaW5mb19jcmVhdGVgKSwgb2YgY291cnNlLlxuXG5JIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCB0aGlzIGNvZGUgcGF0aD8gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGBuZXQvaXB2NC9tZXRyaWNzLmNgIGZpbGUuLi4gQWgsIGxvb2tzIGxpa2UgaXQncyAqbm90KiB0aWVkIHRvIGBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRGAuIFNvLCBJJ20gZ29pbmcgdG8gYXNzdW1lIGl0J3MgYWx3YXlzIGNvbXBpbGVkIGZvciBJUHY0LCB3aGljaCBtZWFucyBhIHdpZGVyIGF0dGFjayBzdXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDc3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjE4OjEwLjMwOTg4OTE1NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzQyOTg1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZXRyaWNzLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtMTAtXFx0ICAgICB0Y3AubyB0Y3BfaW5wdXQubyB0Y3Bfb3V0cHV0Lm8gdGNwX3RpbWVyLm8gdGNwX2lwdjQubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTE6XFx0ICAgICB0Y3BfbWluaXNvY2tzLm8gdGNwX2NvbmcubyB0Y3BfbWV0cmljcy5vIHRjcF9mYXN0b3Blbi5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xMi1cXHQgICAgIHRjcF9yZWNvdmVyeS5vIHRjcF91bHAubyBcXFxcXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZS0xNi1cXHQgICAgIGluZXRfZnJhZ21lbnQubyBwaW5nLm8gaXBfdHVubmVsX2NvcmUubyBncmVfb2ZmbG9hZC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxNzpcXHQgICAgIG1ldHJpY3MubyBuZXRsaW5rLm8gbmV4dGhvcC5vIHVkcF90dW5uZWxfc3R1Yi5vXFxubmV0L2lwdjQvTWFrZWZpbGUtMTgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjE4OjEwLjM1MzMyMzk0OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MzI2OTgwODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgSVB2NCBDb21waWxhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBidWlsZCBjb25maWd1cmF0aW9uIHVuY29uZGl0aW9uYWxseSBpbmNsdWRlcyBJUHY0LiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgaXQgcmVseSBzb2xlbHkgb24gYENPTkZJR19JTkVUYCwgb3IgaXMgYENPTkZJR19JUF9ST1VURWAgYWxzbyBhIG5lY2Vzc2FyeSBkZXBlbmRlbmN5PyBBY3R1YWxseSwgd2FpdCBhIHNlY29uZCwgYENPTkZJR19JUF9ST1VURWAgaXNuJ3QgYSB2YWxpZCBvcHRpb24gaW4gdGhlIGNvbmZpZ3VyYXRpb247IGl0J3Mgc2ltcGx5IGZvbGRlZCBpbnRvIGBDT05GSUdfSU5FVGAuIFRoZXJlZm9yZSwgYENPTkZJR19JTkVUYCAqc2hvdWxkKiBiZSBzdWZmaWNpZW50IHRvIHNhdGlzZnkgdGhlIElQdjQgZGVwZW5kZW5jeS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGEgcXVpY2sgY2hlY2sgb2YgaG93IElQdjYgcm91dGluZyBpcyBoYW5kbGVkIHdpbGwgYmUgdXNlZnVsLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSBgbmV0L2lwdjYvcm91dGUuY2AgYW5kIHNwZWNpZmljYWxseSwgaG93IGBpcDZfcm91dGVfaW5mb19jcmVhdGVgIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBJUHY2IHJvdXRpbmcgY29udGV4dC4gVGhhdCBzaG91bGQgaGVscCBjb25maXJtIHRoYXQgdGhlIElQdjQgYmFzZSBhc3N1bXB0aW9uIGhvbGRzLCBvciB3aGV0aGVyIGZ1cnRoZXIgZGVwZW5kZW5jaWVzIGFyZSBuZWVkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzODksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxODoxMy45ODYwMjQ3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjYzNzE3NjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwNl9yb3V0ZV9pbmZvX2NyZWF0ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jPTM3NjI9c3RhdGljIGludCBmaWI2X2NvbmZpZ192YWxpZGF0ZShzdHJ1Y3QgZmliNl9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtMzgwOC1cXG5uZXQvaXB2Ni9yb3V0ZS5jOjM4MDk6c3RhdGljIHN0cnVjdCBmaWI2X2luZm8gKmlwNl9yb3V0ZV9pbmZvX2NyZWF0ZShzdHJ1Y3QgZmliNl9jb25maWcgKmNmZyxcXG5uZXQvaXB2Ni9yb3V0ZS5jLTM4MTAtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGdmcF90IGdmcF9mbGFncyxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtMzg3NS1cXG5uZXQvaXB2Ni9yb3V0ZS5jOjM4NzY6c3RhdGljIGludCBpcDZfcm91dGVfaW5mb19jcmVhdGVfbmgoc3RydWN0IGZpYjZfaW5mbyAqcnQsXFxubmV0L2lwdjYvcm91dGUuYy0zODc3LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZmliNl9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9Mzk1Mj1pbnQgaXA2X3JvdXRlX2FkZChzdHJ1Y3QgZmliNl9jb25maWcgKmNmZywgZ2ZwX3QgZ2ZwX2ZsYWdzLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy0zOTYxLVxcbm5ldC9pcHY2L3JvdXRlLmM6Mzk2MjpcXHRydCA9IGlwNl9yb3V0ZV9pbmZvX2NyZWF0ZShjZmcsIGdmcF9mbGFncywgZXh0YWNrKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTM5NjMtXFx0aWYgKElTX0VSUihydCkpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTM5NjUtXFxubmV0L2lwdjYvcm91dGUuYzozOTY2OlxcdGVyciA9IGlwNl9yb3V0ZV9pbmZvX2NyZWF0ZV9uaChydCwgY2ZnLCBnZnBfZmxhZ3MsIGV4dGFjayk7XFxubmV0L2lwdjYvcm91dGUuYy0zOTY3LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ2NzU9c3RydWN0IGZpYjZfaW5mbyAqYWRkcmNvbmZfZjZpX2FsbG9jKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNDcwMS1cXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ3MDI6XFx0ZjZpID0gaXA2X3JvdXRlX2luZm9fY3JlYXRlKFxcdTAwMjZjZmcsIGdmcF9mbGFncywgZXh0YWNrKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ3MDMtXFx0aWYgKElTX0VSUihmNmkpKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00NzA1LVxcbm5ldC9pcHY2L3JvdXRlLmM6NDcwNjpcXHRlcnIgPSBpcDZfcm91dGVfaW5mb19jcmVhdGVfbmgoZjZpLCBcXHUwMDI2Y2ZnLCBnZnBfZmxhZ3MsIGV4dGFjayk7XFxubmV0L2lwdjYvcm91dGUuYy00NzA3LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTU0MTU9c3RhdGljIGludCBpcDZfcm91dGVfbXVsdGlwYXRoX2FkZChzdHJ1Y3QgZmliNl9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNTQ3MS1cXHRcXHRyX2NmZy5mY19mbGFncyB8PSAocnRuaC1cXHUwMDNlcnRuaF9mbGFncyBcXHUwMDI2IFJUTkhfRl9PTkxJTkspO1xcbm5ldC9pcHY2L3JvdXRlLmM6NTQ3MjpcXHRcXHRydCA9IGlwNl9yb3V0ZV9pbmZvX2NyZWF0ZShcXHUwMDI2cl9jZmcsIEdGUF9LRVJORUwsIGV4dGFjayk7XFxubmV0L2lwdjYvcm91dGUuYy01NDczLVxcdFxcdGlmIChJU19FUlIocnQpKSB7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTU0NzgtXFxubmV0L2lwdjYvcm91dGUuYzo1NDc5OlxcdFxcdGVyciA9IGlwNl9yb3V0ZV9pbmZvX2NyZWF0ZV9uaChydCwgXFx1MDAyNnJfY2ZnLCBHRlBfS0VSTkVMLCBleHRhY2spO1xcbm5ldC9pcHY2L3JvdXRlLmMtNTQ4MC1cXHRcXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjE4OjE1LjY0OTc0OTA3NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjMxNDUzMjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipDaGVja2luZyBJUHY2IFJvdXRpbmcgVGFibGUgRnVuY3Rpb25zKipcblxuQWxyaWdodCwgbGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIGEgY291cGxlIG9mIHRoaW5ncyBoZXJlLiBJIHNlZSBgaXA2X3JvdXRlX2luZm9fY3JlYXRlYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoYXQncyBhcyBleHBlY3RlZDsgaXQncyBsaWtlbHkgYW4gaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uLCBub3QgaW50ZW5kZWQgZm9yIGRpcmVjdCBleHRlcm5hbCB1c2UuIE5vdywgSSBoYXZlIHRvIG1ha2Ugc3VyZSBgaXA2X3JvdXRlX2FkZGAgaXNuJ3Qgc3RhdGljLCBjb3JyZWN0PyBIbW0sIGxldCdzIGp1c3QgZG91YmxlIGNoZWNrIHRoYXQgb25lLiBJJ2xsIG5lZWQgdG8gY29uZmlybSBpZiB0aGF0IGZ1bmN0aW9uIGlzIGV4cG9zZWQgcHVibGljbHkuIFRoYXQgd291bGQgbWFrZSB0aGUgZnVuY3Rpb24gbXVjaCBtb3JlIHVzZWZ1bCBpZiBpdCdzIGV4dGVybmFsLCBhbmQgaWYgaXQncyBpbnRlcm5hbCwgaXQgY291bGQgc3VnZ2VzdCBhIHBvc3NpYmxlIGVycm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTE4LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6MTg6MTkuMjgxMjA1OTA4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjUxNDg1MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwNl9yb3V0ZV9hZGRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmg9MTIzPWludCBpcHY2X3JvdXRlX2lvY3RsKHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGNtZCxcXG4tLVxcbmluY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oLTEyNS1cXG5pbmNsdWRlL25ldC9pcDZfcm91dGUuaDoxMjY6aW50IGlwNl9yb3V0ZV9hZGQoc3RydWN0IGZpYjZfY29uZmlnICpjZmcsIGdmcF90IGdmcF9mbGFncyxcXG5pbmNsdWRlL25ldC9pcDZfcm91dGUuaC0xMjctXFx0XFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYz0yNDc3PWFkZHJjb25mX3ByZWZpeF9yb3V0ZShzdHJ1Y3QgaW42X2FkZHIgKnBmeCwgaW50IHBsZW4sIHUzMiBtZXRyaWMsXFxuLS1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI1MDMtXFxubmV0L2lwdjYvYWRkcmNvbmYuYzoyNTA0OlxcdGlwNl9yb3V0ZV9hZGQoXFx1MDAyNmNmZywgZ2ZwX2ZsYWdzLCBOVUxMKTtcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI1MDUtfVxcbi0tXFxubmV0L2lwdjYvYWRkcmNvbmYuYz0yNTUzPXN0YXRpYyB2b2lkIGFkZHJjb25mX2FkZF9tcm91dGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9pcHY2L2FkZHJjb25mLmMtMjU2Ny1cXG5uZXQvaXB2Ni9hZGRyY29uZi5jOjI1Njg6XFx0aXA2X3JvdXRlX2FkZChcXHUwMDI2Y2ZnLCBHRlBfS0VSTkVMLCBOVUxMKTtcXG5uZXQvaXB2Ni9hZGRyY29uZi5jLTI1NjktfVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz0zODc2PXN0YXRpYyBpbnQgaXA2X3JvdXRlX2luZm9fY3JlYXRlX25oKHN0cnVjdCBmaWI2X2luZm8gKnJ0LFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy0zOTUxLVxcbm5ldC9pcHY2L3JvdXRlLmM6Mzk1MjppbnQgaXA2X3JvdXRlX2FkZChzdHJ1Y3QgZmliNl9jb25maWcgKmNmZywgZ2ZwX3QgZ2ZwX2ZsYWdzLFxcbm5ldC9pcHY2L3JvdXRlLmMtMzk1My1cXHRcXHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NDQxMz1zdGF0aWMgc3RydWN0IGZpYjZfaW5mbyAqcnQ2X2FkZF9yb3V0ZV9pbmZvKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNDQzOS1cXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ0NDA6XFx0aXA2X3JvdXRlX2FkZChcXHUwMDI2Y2ZnLCBHRlBfQVRPTUlDLCBOVUxMKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ0NDEtXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ0Nzg9c3RydWN0IGZpYjZfaW5mbyAqcnQ2X2FkZF9kZmx0X3JvdXRlcihzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ1MDAtXFxubmV0L2lwdjYvcm91dGUuYzo0NTAxOlxcdGlmICghaXA2X3JvdXRlX2FkZChcXHUwMDI2Y2ZnLCBHRlBfQVRPTUlDLCBOVUxMKSkge1xcbm5ldC9pcHY2L3JvdXRlLmMtNDUwMi1cXHRcXHRzdHJ1Y3QgZmliNl90YWJsZSAqdGFibGU7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ1Nzg9aW50IGlwdjZfcm91dGVfaW9jdGwoc3RydWN0IG5ldCAqbmV0LCB1bnNpZ25lZCBpbnQgY21kLCBzdHJ1Y3QgaW42X3J0bXNnICpydG1zZylcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNDU5NC1cXHRcXHRcXHRjZmcuZmNfbWV0cmljID0gSVA2X1JUX1BSSU9fVVNFUjtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ1OTU6XFx0XFx0ZXJyID0gaXA2X3JvdXRlX2FkZChcXHUwMDI2Y2ZnLCBHRlBfS0VSTkVMLCBOVUxMKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ1OTYtXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTU2NjE9c3RhdGljIGludCBpbmV0Nl9ydG1fbmV3cm91dGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTU2NzYtXFx0ZWxzZVxcbm5ldC9pcHY2L3JvdXRlLmM6NTY3NzpcXHRcXHRyZXR1cm4gaXA2X3JvdXRlX2FkZChcXHUwMDI2Y2ZnLCBHRlBfS0VSTkVMLCBleHRhY2spO1xcbm5ldC9pcHY2L3JvdXRlLmMtNTY3OC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjE4OjIwLjkzMjY5OTE1NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM0MjUzNjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipGb2N1c2luZyBvbiBJUHY2IFJvdXRpbmcgYW5kIEZJQiBDcmVhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHplcm8gaW4gb24gdGhlc2Ugc3ltYm9sczogYGlwNl9yb3V0ZV9hZGRgIGFuZCBgZmliX2NyZWF0ZV9pbmZvYC4gTXkgZ3V0IHRlbGxzIG1lIHRoZXNlIGFyZSBjZW50cmFsIHRvIHVuZGVyc3RhbmRpbmcgaG93IElQdjYgcm91dGVzIGFyZSBhZGRlZCBhbmQgaG93IHRoZSBGb3J3YXJkaW5nIEluZm9ybWF0aW9uIEJhc2UgKEZJQikgaXMgY29uc3RydWN0ZWQsIHdoaWNoIGlzIHJpZ2h0IHdoZXJlIEkgd2FudCB0byBiZS4gYGlwNl9yb3V0ZV9hZGRgIHNjcmVhbXMgXCJlbnRyeSBwb2ludCBmb3Igcm91dGluZyB0YWJsZSB1cGRhdGVzXCIg4oCTIGEgcGVyZmVjdCBjYW5kaWRhdGUgZm9yIGRlZXBlciBhbmFseXNpcy4gQnV0IGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgYGZpYl9jcmVhdGVfaW5mb2Agc3RydWN0dXJlLCBJIHNob3VsZCBxdWlja2x5IHZlcmlmeSBpZiBpdCdzIGRlY2xhcmVkIHdpdGggYHN0YXRpY2AuIElmIG5vdCwgaXQgbWVhbnMgdGhpcyBzdHJ1Y3QgaXMgcG90ZW50aWFsbHkgdXNlZCAob3IgY2FuIGJlKSBpbiBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLCB3aGljaCB3b3VsZCBtYWtlIGl0IGV2ZW4gbW9yZSB2YWx1YWJsZSB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcnBsYXkgb2Ygcm91dGluZyB0YWJsZSBtYW5pcHVsYXRpb24gYW5kIGRhdGEgc3RydWN0dXJlcy4gSXQgY291bGQgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgbW9yZSB0aGFuIGp1c3QgdGhpcyBsb2NhbGl6ZWQgcm91dGluZyBmdW5jdGlvbiwgYW5kIHVuZGVyc3RhbmRpbmcgdGhpcyBgZmliX2NyZWF0ZV9pbmZvYCBzdHJ1Y3R1cmUncyBzY29wZSBvZiBpbmZsdWVuY2Ugd2lsbCBiZSBpbnN0cnVtZW50YWwgaW4gbWFwcGluZyB0aGUgd2hvbGUgYXJjaGl0ZWN0dXJlLiBTbywgbGV0J3MgY2hlY2sgZm9yIHRoYXQgbm9uLXN0YXRpYyBwcm9wZXJ0eSBmaXJzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY1MSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjE4OjI1LjE2Njk1NTYxNFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1OTc5MzEzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaWJfY3JlYXRlX2luZm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvZmliX2xvb2t1cC5oPTM4PXZvaWQgZmliX3JlbGVhc2VfaW5mbyhzdHJ1Y3QgZmliX2luZm8gKik7XFxubmV0L2lwdjQvZmliX2xvb2t1cC5oOjM5OnN0cnVjdCBmaWJfaW5mbyAqZmliX2NyZWF0ZV9pbmZvKHN0cnVjdCBmaWJfY29uZmlnICpjZmcsXFxubmV0L2lwdjQvZmliX2xvb2t1cC5oLTQwLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbi0tXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jPTEzNTI9c3RhdGljIGJvb2wgZmliX3ZhbGlkX3ByZWZzcmMoc3RydWN0IGZpYl9jb25maWcgKmNmZywgX19iZTMyIGZpYl9wcmVmc3JjKVxcbi0tXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTEzNzUtXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjEzNzY6c3RydWN0IGZpYl9pbmZvICpmaWJfY3JlYXRlX2luZm8oc3RydWN0IGZpYl9jb25maWcgKmNmZyxcXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMTM3Ny1cXHRcXHRcXHRcXHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L2lwdjQvZmliX3RyaWUuYz0xMTk0PWludCBmaWJfdGFibGVfaW5zZXJ0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZpYl90YWJsZSAqdGIsXFxuLS1cXG5uZXQvaXB2NC9maWJfdHJpZS5jLTEyMTEtXFxubmV0L2lwdjQvZmliX3RyaWUuYzoxMjEyOlxcdGZpID0gZmliX2NyZWF0ZV9pbmZvKGNmZywgZXh0YWNrKTtcXG5uZXQvaXB2NC9maWJfdHJpZS5jLTEyMTMtXFx0aWYgKElTX0VSUihmaSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6MTg6MjYuODI2NzU2MjkxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTY0MTU2NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIGBmaWJfY3JlYXRlX2luZm9gIGlzbid0IHN0YXRpYywgd2hpY2ggbWFrZXMgaXQgYSBnb29kIHN5bWJvbCB0byBmb2N1cyBvbi4gU2FtZSB3aXRoIGBpcDZfcm91dGVfYWRkYC4gQW5kLCBoYW5nIG9uLCBgaXBfZmliX21ldHJpY3NfaW5pdGAgaXMgYWxzbyBub24tc3RhdGljLCBzbyB0aGF0J3MgYW5vdGhlciBwb3RlbnRpYWxseSBpbnRlcmVzdGluZyBwb2ludC5cblxuTm93LCBsZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSByZWxldmFudCBoZXJlLiBBaCwgYENPTkZJR19JTkVUYCBzaG91bGQgZG8gdGhlIHRyaWNrLiBBbHJpZ2h0LCB3YWl0IGEgc2Vjb25kLi4uIGBSVEFYX0FEVk1TU2AuLi4gdGhhdCdzIHJlbGF0ZWQgdG8gVENQIE1heGltdW0gU2VnbWVudCBTaXplLiBIbW0sIGlzIHRoZXJlIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24ganVzdCBmb3IgYFJUQVhfQURWTVNTYD8gTm9wZSwgbG9va3MgbGlrZSBpdCdzIGEgc3RhbmRhcmQgbmV0bGluayBhdHRyaWJ1dGUuXG5cblNvLCB0aGUgY3J1eCBvZiB0aGlzIHBhdGNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U6IGl0J3MgYWRkaW5nIGEgY2hlY2sgdG8gcmVqZWN0IGludmFsaWQgYFJUQVhfQURWTVNTYCB2YWx1ZXMgaWYgdGhleSBmYWxsIGJlbG93IGBUQ1BfTUlOX01TU2AuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGNoYW5nZSB0aGF0IHdhcnJhbnRzIHNvbWUgZnV6emluZy4gTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgdGhlIGBUQ1BfTUlOX01TU2AgbWFjcm8ganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczMDQsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6MTg6MzEuMDIzMTc0NTMzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM3ODcxMzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlRDUF9NSU5fTVNTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3RjcC5oPTY4PXZvaWQgdGNwX3RpbWVfd2FpdChzdHJ1Y3Qgc29jayAqc2ssIGludCBzdGF0ZSwgaW50IHRpbWVvKTtcXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oLTgxLS8qIE1pbmltYWwgYWNjZXB0ZWQgTVNTLiBJdCBpcyAoNjArNjArOCkgLSAoMjArMjApLiAqL1xcbmluY2x1ZGUvbmV0L3RjcC5oOjgyOiNkZWZpbmUgVENQX01JTl9NU1NcXHRcXHQ4OFVcXG5pbmNsdWRlL25ldC90Y3AuaC04My1cXG4tLVxcbm5ldC9pcHY0L21ldHJpY3MuYz0xMD1zdGF0aWMgaW50IGlwX21ldHJpY3NfY29udmVydChzdHJ1Y3QgbmxhdHRyICpmY19teCxcXG4tLVxcbm5ldC9pcHY0L21ldHJpY3MuYy00Ni1cXHRcXHR9XFxubmV0L2lwdjQvbWV0cmljcy5jOjQ3OlxcdFxcdGlmICh0eXBlID09IFJUQVhfQURWTVNTIFxcdTAwMjZcXHUwMDI2IHZhbCBcXHUwMDI2XFx1MDAyNiB2YWwgXFx1MDAzYyBUQ1BfTUlOX01TUykge1xcbm5ldC9pcHY0L21ldHJpY3MuYy00OC1cXHRcXHRcXHROTF9TRVRfRVJSX01TR19BVFRSX0ZNVChleHRhY2ssIG5sYSxcXG5uZXQvaXB2NC9tZXRyaWNzLmMtNDktXFx0XFx0XFx0XFx0XFx0XFx0XFxcIkludmFsaWQgYWR2bXNzLCBtdXN0IGJlIDAgb3IgXFx1MDAzZT0gJXVcXFwiLFxcbm5ldC9pcHY0L21ldHJpY3MuYzo1MDpcXHRcXHRcXHRcXHRcXHRcXHRUQ1BfTUlOX01TUyk7XFxubmV0L2lwdjQvbWV0cmljcy5jLTUxLVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxubmV0L2lwdjQvdGNwLmM9MzM2MT1pbnQgdGNwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNrLCBpbnQgZmxhZ3MpXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0zNDQ0LVxcdGluZXRfY3NrX2RlbGFja19pbml0KHNrKTtcXG5uZXQvaXB2NC90Y3AuYzozNDQ1OlxcdC8qIEluaXRpYWxpemUgcmN2X21zcyB0byBUQ1BfTUlOX01TUyB0byBhdm9pZCBkaXZpc2lvbiBieSAwXFxubmV0L2lwdjQvdGNwLmMtMzQ0Ni1cXHQgKiBpc3N1ZSBpbiBfX3RjcF9zZWxlY3Rfd2luZG93KClcXG5uZXQvaXB2NC90Y3AuYy0zNDQ3LVxcdCAqL1xcbm5ldC9pcHY0L3RjcC5jOjM0NDg6XFx0aWNzay1cXHUwMDNlaWNza19hY2sucmN2X21zcyA9IFRDUF9NSU5fTVNTO1xcbm5ldC9pcHY0L3RjcC5jLTM0NDktXFx0bWVtc2V0KFxcdTAwMjZ0cC1cXHUwMDNlcnhfb3B0LCAwLCBzaXplb2YodHAtXFx1MDAzZXJ4X29wdCkpO1xcbi0tXFxubmV0L2lwdjQvdGNwLmM9MzgyMT1pbnQgdGNwX3NvY2tfc2V0X21heHNlZyhzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0zODI2LVxcdCAqL1xcbm5ldC9pcHY0L3RjcC5jOjM4Mjc6XFx0aWYgKHZhbCBcXHUwMDI2XFx1MDAyNiAodmFsIFxcdTAwM2MgVENQX01JTl9NU1MgfHwgdmFsIFxcdTAwM2UgTUFYX1RDUF9XSU5ET1cpKVxcbm5ldC9pcHY0L3RjcC5jLTM4MjgtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz0yMjc9c3RhdGljIHZvaWQgdGNwX21lYXN1cmVfcmN2X21zcyhzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy0yOTEtXFx0XFx0ICAgICAqL1xcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjI5MjpcXHRcXHQgICAgKGxlbiBcXHUwMDNlPSBUQ1BfTUlOX01TUyArIHNpemVvZihzdHJ1Y3QgdGNwaGRyKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTI5My1cXHRcXHQgICAgICEodGNwX2ZsYWdfd29yZCh0Y3BfaGRyKHNrYikpIFxcdTAwMjYgVENQX1JFTU5BTlQpKSkge1xcbi0tXFxubmV0L2lwdjQvdGNwX2lucHV0LmM9ODA2PXZvaWQgdGNwX2luaXRpYWxpemVfcmN2X21zcyhzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy04MTItXFx0aGludCA9IG1pbihoaW50LCBUQ1BfTVNTX0RFRkFVTFQpO1xcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjgxMzpcXHRoaW50ID0gbWF4KGhpbnQsIFRDUF9NSU5fTVNTKTtcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy04MTQtXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0yOTU5PXN0YXRpYyB2b2lkIG1wdGNwX2RvX2Zhc3RjbG9zZShzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yOTgyLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjI5ODM6XFx0XFx0LyogSW5pdGlhbGl6ZSByY3ZfbXNzIHRvIFRDUF9NSU5fTVNTIHRvIGF2b2lkIGRpdmlzaW9uIGJ5IDBcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yOTg0LVxcdFxcdCAqIGlzc3VlIGluIF9fdGNwX3NlbGVjdF93aW5kb3coKSwgc2VlIHRjcF9kaXNjb25uZWN0KCkuXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMjk4NS1cXHRcXHQgKi9cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoyOTg2OlxcdFxcdGluZXRfY3NrKHNzayktXFx1MDAzZWljc2tfYWNrLnJjdl9tc3MgPSBUQ1BfTUlOX01TUztcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yOTg3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxODozMi42NjEwNTAyMzJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMyNjE1NjY5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgY2hlY2sgd2l0aGluIGBpcF9tZXRyaWNzX2NvbnZlcnRgLCB3aGljaCBnZXRzIGludm9rZWQgZHVyaW5nIHJvdXRlIGNyZWF0aW9uLiBTcGVjaWZpY2FsbHksIGl0J3MgcmVqZWN0aW5nIHJvdXRlcyB3aGVyZSB0aGUgYFJUQVhfQURWTVNTYCB2YWx1ZSBpcyBsZXNzIHRoYW4gODguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGltcG9ydGFudGx5LCBpdCdzIHJlYWNoYWJsZSB2aWEgYSBuZXRsaW5rIHJvdXRlIGNyZWF0aW9uLiBUaGF0IG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBnaXZlbiBteSBleHBlcmllbmNlLlxuXG5NeSBmb2N1cyBzaG91bGQgYmUgb24gdW5kZXJzdGFuZGluZyB0aGUgc3Vycm91bmRpbmcgY29udGV4dCDigJMgSSBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCBgaXBfZmliX21ldHJpY3NfaW5pdGAsIGBmaWJfY3JlYXRlX2luZm9gLCBhbmQgYGlwNl9yb3V0ZV9hZGRgIHRvIGdyYXNwIGhvdyB0aGlzIG5ldyBjaGVjayBpbnRlcmFjdHMgd2l0aCB0aGUgZXhpc3Rpbmcgcm91dGUgbWFuYWdlbWVudCByb3V0aW5lcy4gVW5kZXJzdGFuZGluZyB3aGVyZSB0aGUgYFJUQVhfQURWTVNTYCB2YWx1ZSBvcmlnaW5hdGVzIGlzIGNydWNpYWwgZm9yIGNyYWZ0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIGlucHV0cy4gSSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIEknbSB0ZXN0aW5nIHdpdGggdGhlIGBJTkVUYCBjb25maWd1cmF0aW9uIGVuYWJsZWQgdG8gZW5zdXJlIHRoZSByZWxldmFudCBjb2RlIHBhdGhzIGFyZSBleGVyY2lzZWQuXG5cbkxldCdzIGdldCB0aG9zZSByZXN1bHRzIHNldCB1cC4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3QgYXBwcm9hY2ggdG8gZnV6eiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4Nzk3LCJPdXRwdXRUb2tlbnMiOjEyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxODozNy45ODcyMTAwOTdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Njc5Mzg0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX2ZpYl9tZXRyaWNzX2luaXRcIixcbiAgICBcImZpYl9jcmVhdGVfaW5mb1wiLFxuICAgIFwiaXA2X3JvdXRlX2FkZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBSVEFYX0FEVk1TUyBtZXRyaWMgZHVyaW5nIElQdjQgYW5kIElQdjYgcm91dGUgY3JlYXRpb24uIEl0IHJlamVjdHMgcm91dGVzIHdpdGggYW4gYWR2bXNzIHZhbHVlIGxlc3MgdGhhbiBUQ1BfTUlOX01TUyAoODgpLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayByb3V0ZSBjb25maWd1cmF0aW9uIGFuZCBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBiZWhhdmlvciwgc28gaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfZmliX21ldHJpY3NfaW5pdFwiLFxuICAgIFwiZmliX2NyZWF0ZV9pbmZvXCIsXG4gICAgXCJpcDZfcm91dGVfYWRkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIFJUQVhfQURWTVNTIG1ldHJpYyBkdXJpbmcgSVB2NCBhbmQgSVB2NiByb3V0ZSBjcmVhdGlvbi4gSXQgcmVqZWN0cyByb3V0ZXMgd2l0aCBhbiBhZHZtc3MgdmFsdWUgbGVzcyB0aGFuIFRDUF9NSU5fTVNTICg4OCkuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIHJvdXRlIGNvbmZpZ3VyYXRpb24gYW5kIGFmZmVjdHMgY29yZSBuZXR3b3JraW5nIGJlaGF2aW9yLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxODozOC4wNjQwMTY4NTlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NjA4OTU0MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODoxODozOC4wNjQ1ODQ1OTlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Nzk2MDMyMzY4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHZhbGlkYXRpb24gY2hlY2sgZm9yIHRoZSBgUlRBWF9BRFZNU1NgIG1ldHJpYyB2YWx1ZSBpbiBgaXBfbWV0cmljc19jb252ZXJ0YC4gSXQgdmVyaWZpZXMgdGhhdCB0aGUgdmFsdWUgaXMgZWl0aGVyIDAgb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBUQ1BfTUlOX01TU2AsIGFuZCByZXR1cm5zIGAtRUlOVkFMYCBpZiBpdCBpcyBub3QuIFRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGl0IGRvZXMgbm90IGV4cG9zZSBhbnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBiZSBsb2dpYyBlcnJvcnMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggYXJlIGNvdmVyZWQgYnkgc3RhbmRhcmQgdGVzdGluZyBhbmQgS0FTQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2IwOGFkYWQ4ZTU1YTBmNWZkMTFhYjYyMTMyYmU4YTMzZGJhZGM2OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDE4OjE3OjUwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbWV0cmljcy5jIGIvbmV0L2lwdjQvbWV0cmljcy5jXG5pbmRleCBhZDQwNzYyYThiMzgzLi5iOWI5N2EwYTUxMjZiIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvbWV0cmljcy5jXG4rKysgYi9uZXQvaXB2NC9tZXRyaWNzLmNcbkBAIC00NCw2ICs0NCwxMiBAQCBzdGF0aWMgaW50IGlwX21ldHJpY3NfY29udmVydChzdHJ1Y3QgbmxhdHRyICpmY19teCxcbiBcdFx0XHR9XG4gXHRcdFx0dmFsID0gbmxhX2dldF91MzIobmxhKTtcbiBcdFx0fVxuK1x0XHRpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyBcdTAwMjZcdTAwMjYgdmFsIFx1MDAyNlx1MDAyNiB2YWwgXHUwMDNjIFRDUF9NSU5fTVNTKSB7XG4rXHRcdFx0TkxfU0VUX0VSUl9NU0dfQVRUUl9GTVQoZXh0YWNrLCBubGEsXG4rXHRcdFx0XHRcdFx0XCJJbnZhbGlkIGFkdm1zcywgbXVzdCBiZSAwIG9yIFx1MDAzZT0gJXVcIixcbitcdFx0XHRcdFx0XHRUQ1BfTUlOX01TUyk7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbiBcdFx0aWYgKHR5cGUgPT0gUlRBWF9BRFZNU1MgXHUwMDI2XHUwMDI2IHZhbCBcdTAwM2UgNjU1MzUgLSA0MClcbiBcdFx0XHR2YWwgPSA2NTUzNSAtIDQwO1xuIFx0XHRpZiAodHlwZSA9PSBSVEFYX01UVSBcdTAwMjZcdTAwMjYgdmFsIFx1MDAzZSA2NTUzNSAtIDE1KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6MTg6MzguMDY0NTg1NDc5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NjAyOTYxOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIGNhbiBzZWUsIHRoaXMgcGF0Y2ggaXMgc3RyYWlnaHRmb3J3YXJkLiBJbiB0aGUgYGlwX21ldHJpY3NfY29udmVydGAgZnVuY3Rpb24gd2l0aGluIGBuZXQvaXB2NC9tZXRyaWNzLmNgLCBpdCdzIGFkZGluZyBhIHNwZWNpZmljIGNoZWNrLiBTcGVjaWZpY2FsbHksIGl0J3MgdmFsaWRhdGluZyBhIE5ldGxpbmsgYXR0cmlidXRlIHZhbHVlLCBgdmFsYCwgYXNzb2NpYXRlZCB3aXRoIGBSVEFYX0FEVk1TU2AuIFRoZSBjaGVjayBpcyBkZXNpZ25lZCB0byBlbnN1cmUgdGhhdCBpZiBgUlRBWF9BRFZNU1NgIGlzIHByZXNlbnQgKGB0eXBlID09IFJUQVhfQURWTVNTYCksIGFuZCB0aGUgdmFsdWUgYHZhbGAgZXhpc3RzIChgdmFsYCksIHRoZW4gYHZhbGAgaGFzIHRvIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgVENQX01JTl9NU1NgLiBJZiBub3QsIGl0IHJldHVybnMgYC1FSU5WQUxgLlxuXG5Fc3NlbnRpYWxseSwgaXQncyBhIGJvdW5kcyBjaGVjayBvbiB1c2VyLXByb3ZpZGVkIGlucHV0LiBJdCdzIHVzaW5nIGBubGFfZ2V0X3UzMmAgdG8gcmV0cmlldmUgdGhlIHZhbHVlLiBDcml0aWNhbGx5LCB0aGVyZSdzIG5vIGV2aWRlbmNlIG9mIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB1c2VkIGhlcmUuIEl0J3Mgc2ltcGx5IHZlcmlmeWluZyB0aGUgdmFsaWRpdHkgb2YgdGhlIHByb3ZpZGVkIHZhbHVlLlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlIHNuaXBwZXQgYWdhaW46XG5cbmBgYGNcblx0XHRpZiAodHlwZSA9PSBSVEFYX0FEVk1TUyBcdTAwMjZcdTAwMjYgdmFsIFx1MDAyNlx1MDAyNiB2YWwgXHUwMDNjIFRDUF9NSU5fTVNTKSB7XG5cdFx0XHROTF9TRVRfRVJSX01TR19BVFRSX0ZNVChleHRhY2ssIG5sYSxcblx0XHRcdFx0XHRcdFwiSW52YWxpZCBhZHZtc3MsIG11c3QgYmUgMCBvciBcdTAwM2U9ICV1XCIsXG5cdFx0XHRcdFx0XHRUQ1BfTUlOX01TUyk7XG5cdFx0XHRyZXR1cm4gLUVJTlZBTDtcblx0XHR9XG5gYGBcblxuVGhpcyBjb25maXJtcyBteSBpbml0aWFsIGltcHJlc3Npb24uIEl0J3MgYSBjbGVhbiB2YWxpZGF0aW9uOyB0aGUgY29kZSBpdHNlbGYgZGVtb25zdHJhdGVzIHRoZSBjaGVjay4gR2l2ZW4gdGhpcywgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC4gVGhpcyBwYXRjaCBkb2VzIG5vdCBzZWVtIHRvIGludHJvZHVjZSBhbnkgS01TQU4gY29uY2VybnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjUsIk91dHB1dFRva2VucyI6MTU3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6MTg6NDYuMDI0ODg1MjI4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIGBSVEFYX0FEVk1TU2AgbWV0cmljIHZhbHVlIGluIGBpcF9tZXRyaWNzX2NvbnZlcnRgLiBJdCB2ZXJpZmllcyB0aGF0IHRoZSB2YWx1ZSBpcyBlaXRoZXIgMCBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYFRDUF9NSU5fTVNTYCwgYW5kIHJldHVybnMgYC1FSU5WQUxgIGlmIGl0IGlzIG5vdC4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgaXQgZG9lcyBub3QgZXhwb3NlIGFueSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBBbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGJlIGxvZ2ljIGVycm9ycyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgY292ZXJlZCBieSBzdGFuZGFyZCB0ZXN0aW5nIGFuZCBLQVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgdmFsaWRhdGlvbiBjaGVjayBmb3IgdGhlIGBSVEFYX0FEVk1TU2AgbWV0cmljIHZhbHVlIGluIGBpcF9tZXRyaWNzX2NvbnZlcnRgLiBJdCB2ZXJpZmllcyB0aGF0IHRoZSB2YWx1ZSBpcyBlaXRoZXIgMCBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYFRDUF9NSU5fTVNTYCwgYW5kIHJldHVybnMgYC1FSU5WQUxgIGlmIGl0IGlzIG5vdC4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgaXQgZG9lcyBub3QgZXhwb3NlIGFueSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBBbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGJlIGxvZ2ljIGVycm9ycyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgY292ZXJlZCBieSBzdGFuZGFyZCB0ZXN0aW5nIGFuZCBLQVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowncql4[1] Phase: Succeeded StartedAt: 2026-08-13 18:18:56 +0000 UTC FinishedAt: 2026-08-13 18:18:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-13 18:18:56 +0000 UTC FinishedAt: 2026-08-13 18:18:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2] Phase: Succeeded StartedAt: 2026-08-13 18:18:56 +0000 UTC FinishedAt: 2026-08-13 22:09:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-13 18:18:56 +0000 UTC FinishedAt: 2026-08-13 22:09:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-13 18:18:56 +0000 UTC FinishedAt: 2026-08-13 18:19:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-13 18:18:56 +0000 UTC FinishedAt: 2026-08-13 18:19:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowncql4/series-workflowncql4-convert-artifact-2661840820/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-13 18:19:07 +0000 UTC FinishedAt: 2026-08-13 18:40:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-13 18:19:07 +0000 UTC FinishedAt: 2026-08-13 18:40:05 +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:*fd77616d-53a7-4d12-80f7-180e31047fc9,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-workflowncql4/series-workflowncql4-convert-artifact-2661840820/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": "b8d1372a-3054-4088-8c71-65c93c561b15", "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-workflowncql4/series-workflowncql4-build-action-4211879346/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-13 18:19:07 +0000 UTC FinishedAt: 2026-08-13 18:39:55 +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:*fd77616d-53a7-4d12-80f7-180e31047fc9,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-workflowncql4/series-workflowncql4-convert-artifact-2661840820/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": "b8d1372a-3054-4088-8c71-65c93c561b15", "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-workflowncql4/series-workflowncql4-build-action-4211879346/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-13 18:40:05 +0000 UTC FinishedAt: 2026-08-13 18:40:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-13 18:40:05 +0000 UTC FinishedAt: 2026-08-13 18:40:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-13 18:40:05 +0000 UTC FinishedAt: 2026-08-13 18:40:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-13 18:40:05 +0000 UTC FinishedAt: 2026-08-13 18:40:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowncql4/series-workflowncql4-convert-artifact-247052403/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-13 18:40:15 +0000 UTC FinishedAt: 2026-08-13 18:42:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-13 18:40:15 +0000 UTC FinishedAt: 2026-08-13 18:42:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b8d1372a-3054-4088-8c71-65c93c561b15,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-workflowncql4/series-workflowncql4-build-action-4211879346/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-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-13 18:42:39 +0000 UTC FinishedAt: 2026-08-13 18:42:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-13 18:42:39 +0000 UTC FinishedAt: 2026-08-13 18:42:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-13 18:42:39 +0000 UTC FinishedAt: 2026-08-13 19:02:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-13 18:42:39 +0000 UTC FinishedAt: 2026-08-13 19:02:23 +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:*fd77616d-53a7-4d12-80f7-180e31047fc9,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-workflowncql4/series-workflowncql4-convert-artifact-247052403/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": "1f773cfb-a61e-446e-af61-925a7d77453b", "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-workflowncql4/series-workflowncql4-build-action-1944088615/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-13 18:42:39 +0000 UTC FinishedAt: 2026-08-13 19:02:13 +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:*fd77616d-53a7-4d12-80f7-180e31047fc9,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-workflowncql4/series-workflowncql4-convert-artifact-247052403/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": "1f773cfb-a61e-446e-af61-925a7d77453b", "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-workflowncql4/series-workflowncql4-build-action-1944088615/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-13 19:02:23 +0000 UTC FinishedAt: 2026-08-13 19:02:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-13 19:02:23 +0000 UTC FinishedAt: 2026-08-13 19:02:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-13 19:02:23 +0000 UTC FinishedAt: 2026-08-13 19:04:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-13 19:02:23 +0000 UTC FinishedAt: 2026-08-13 19:04:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1f773cfb-a61e-446e-af61-925a7d77453b,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-workflowncql4/series-workflowncql4-build-action-1944088615/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-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-13 19:04:22 +0000 UTC FinishedAt: 2026-08-13 22:09:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-13 19:04:22 +0000 UTC FinishedAt: 2026-08-13 22:09:22 +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":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"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:*b8d1372a-3054-4088-8c71-65c93c561b15,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1f773cfb-a61e-446e-af61-925a7d77453b,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-workflowncql4/series-workflowncql4-build-action-4211879346/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-workflowncql4/series-workflowncql4-build-action-1944088615/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-13 19:04:22 +0000 UTC FinishedAt: 2026-08-13 19:04:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-13 19:04:22 +0000 UTC FinishedAt: 2026-08-13 19:04:29 +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":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"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-workflowncql4/series-workflowncql4-convert-artifact-2568660076/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-13 19:04:22 +0000 UTC FinishedAt: 2026-08-13 19:04:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-13 19:04:22 +0000 UTC FinishedAt: 2026-08-13 19:04:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-13 19:04:22 +0000 UTC FinishedAt: 2026-08-13 19:04:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-13 19:04:42 +0000 UTC FinishedAt: 2026-08-13 22:09:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowncql4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_fib_metrics_init","fib_create_info","ip6_route_add"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9006c116dd111d457bf5d074990210f70a4ad2c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"e8181e46-561b-4af5-823e-e156948c02e5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-13 19:04:42 +0000 UTC FinishedAt: 2026-08-13 22:09:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b8d1372a-3054-4088-8c71-65c93c561b15,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1f773cfb-a61e-446e-af61-925a7d77453b,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-workflowncql4/series-workflowncql4-build-action-4211879346/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-workflowncql4/series-workflowncql4-build-action-1944088615/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-workflowncql4/series-workflowncql4-convert-artifact-2568660076/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,}